<?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>214207</bug_id>
          
          <creation_ts>2020-07-10 15:34:42 -0700</creation_ts>
          <short_desc>Resync web-platform-tests/streams from upstream</short_desc>
          <delta_ts>2020-07-16 09:04:47 -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>Tools / Tests</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>
          
          <blocked>213927</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>clopez</cc>
    
    <cc>ggaren</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1670617</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-07-10 15:34:42 -0700</bug_when>
    <thetext>Resync web-platform-tests/streams from upstream.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670620</commentid>
    <comment_count>1</comment_count>
      <attachid>404012</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-07-10 15:40:30 -0700</bug_when>
    <thetext>Created attachment 404012
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670635</commentid>
    <comment_count>2</comment_count>
      <attachid>404012</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-07-10 16:06:54 -0700</bug_when>
    <thetext>Comment on attachment 404012
Patch

rs=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670658</commentid>
    <comment_count>3</comment_count>
      <attachid>404024</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-07-10 16:54:06 -0700</bug_when>
    <thetext>Created attachment 404024
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670713</commentid>
    <comment_count>4</comment_count>
      <attachid>404043</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-07-10 21:25:11 -0700</bug_when>
    <thetext>Created attachment 404043
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670717</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-07-10 21:49:33 -0700</bug_when>
    <thetext>Committed r264263: &lt;https://trac.webkit.org/changeset/264263&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 404043.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670718</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-07-10 21:50:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/65382132&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404012</attachid>
            <date>2020-07-10 15:40:30 -0700</date>
            <delta_ts>2020-07-10 16:54:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214207-20200710154029.patch</filename>
            <type>text/plain</type>
            <size>1506842</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY0MjQyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2MvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwpp
bmRleCBjZGI0MDIxYzFmYjBmNjc2MGQ2OGY1ODk3MDM1MDM2OGQwYjAyOGVmLi5lNzhmNDIwMzg3
NzhlYjZmYTBiYjBjNDM0MDAxYjQ3ZGQxNGFiYWY0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2MvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMC0wNy0xMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpA
YXBwbGUuY29tPgorCisgICAgICAgIFJlc3luYyB3ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcyBm
cm9tIHVwc3RyZWFtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMTQyMDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBSZXN5bmMgd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMgZnJvbSB1cHN0cmVhbSA4NTk1
MjdhMzUxMzAyOWQyLgorCisgICAgICAgICogcmVzb3VyY2VzL2ltcG9ydC1leHBlY3RhdGlvbnMu
anNvbjoKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy8qOiBVcGRhdGVkLgor
CiAyMDIwLTA3LTEwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAg
UmVzeW5jIHdlYi1wbGF0Zm9ybS10ZXN0cy9wYXltZW50LXJlcXVlc3QgZnJvbSB1cHN0cmVhbQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL1Rl
c3RFeHBlY3RhdGlvbnMKaW5kZXggODE2MDE1M2QxZTUyNjJmOGE4NjkwM2QzOGQyYzYwZGEyNzlj
MmY4MS4uOTA0MmNiYzM0Njk4ZDA1YTFlMGEwOGIxNDVmMWJmNWQ2YmQ3MTYzNSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9UZXN0RXhw
ZWN0YXRpb25zCkBAIC0xMjE3LDE0ICsxMjE3LDYgQEAgaHR0cC90ZXN0cy9sb2FkaW5nL3RleHQt
Y29udGVudC10eXBlLXdpdGgtYmluYXJ5LWV4dGVuc2lvbi5odG1sIFsgUGFzcyBGYWlsdXJlIF0K
IHdlYmtpdC5vcmcvYi8xNzEwOTQgc3RyZWFtcy9icmFuZC1jaGVja3MuaHRtbCBbIFBhc3MgRmFp
bHVyZSBdCiB3ZWJraXQub3JnL2IvMTcxMDk0IHN0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0
aW9uL2Fic3RyYWN0LW9wcy5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAotIyB0ZWUuaHRtbCBpcyBm
bGFreSB3aXRoIHVuaGFuZGxlZCBwcm9taXNlIHJlamVjdGlvbnMKLWltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3RlZS5odG1sIFsgRHVtcEpT
Q29uc29sZUxvZ0luU3RkRXJyIF0KLSMgVGltZW91dCB0ZXN0cy4KLWltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMvZ2VuZXJhbC5zZXJ2
aWNld29ya2VyLmh0dHBzLmh0bWwgWyBTa2lwIF0KLWltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMvZGV0YWNoZWQtYnVmZmVycy5zZXJ2
aWNld29ya2VyLmh0dHBzLmh0bWwgWyBTa2lwIF0KLQotd2Via2l0Lm9yZy9iLzE4NjE2MSBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Vycm9yLXByb3BhZ2F0
aW9uLWZvcndhcmQuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCi0KICMgV1BUIHRlc3RzIHRoYXQgZmFp
bCBhZnRlciBkb2luZyBmdWxsIHRlc3QgcmVwb3NpdG9yeSByZWltcG9ydCBhbmQgbmVlZCBmdXJ0
aGVyIGludmVzdGlnYXRpb24KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9i
cm93c2Vycy93aW5kb3dzL25lc3RlZC1icm93c2luZy1jb250ZXh0cy9mcmFtZUVsZW1lbnQuc3Vi
Lmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9o
dG1sL2Jyb3dzZXJzL3dpbmRvd3MvdGFyZ2V0aW5nLWNyb3NzLW9yaWdpbi1uZXN0ZWQtYnJvd3Np
bmctY29udGV4dHMuc3ViLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3Jlc291cmNlcy9pbXBvcnQtZXhwZWN0YXRpb25zLmpzb24gYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvcmVzb3VyY2VzL2ltcG9ydC1leHBlY3RhdGlvbnMuanNv
bgppbmRleCA1NDVjYWQwZTQ4MzAyNDFjNjNiZTllYzcyNjlhMTdkOWM1MTMwNjIxLi40N2M3OGIz
OTgwYWMxNDk1ZDI2YWUxMjI0MGEwZDJkNGNhMzQ5MzE5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2MvcmVzb3VyY2VzL2ltcG9ydC1leHBlY3RhdGlvbnMuanNvbgorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvcmVzb3VyY2VzL2ltcG9ydC1leHBlY3RhdGlvbnMuanNv
bgpAQCAtMzcxLDYgKzM3MSw3IEBACiAgICAgIndlYi1wbGF0Zm9ybS10ZXN0cy9zcGVlY2gtYXBp
IjogInNraXAiLCAKICAgICAid2ViLXBsYXRmb3JtLXRlc3RzL3N0YXRpY3JhbmdlIjogInNraXAi
LCAKICAgICAid2ViLXBsYXRmb3JtLXRlc3RzL3N0b3JhZ2UiOiAic2tpcCIsIAorICAgICJ3ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcyI6ICJpbXBvcnQiLCAKICAgICAid2ViLXBsYXRmb3JtLXRl
c3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcyI6ICJza2lwIiwgCiAgICAgIndlYi1wbGF0Zm9y
bS10ZXN0cy9zdWJyZXNvdXJjZS1pbnRlZ3JpdHkiOiAiaW1wb3J0IiwgCiAgICAgIndlYi1wbGF0
Zm9ybS10ZXN0cy9zdmciOiAiaW1wb3J0IiwgCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvTUVUQS55bWwgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvTUVUQS55bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMTI1OWE1NWNiNWE5OWUzYmEzYTEzZDgxZDAyZGQ3OGQ2OTdkZGFiZgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy9NRVRBLnltbApAQCAtMCwwICsxLDcgQEAKK3NwZWM6IGh0dHBzOi8vc3RyZWFtcy5zcGVj
LndoYXR3Zy5vcmcvCitzdWdnZXN0ZWRfcmV2aWV3ZXJzOgorICAtIGRvbWVuaWMKKyAgLSB5dXRh
a2FoaXJhbm8KKyAgLSB5b3Vlbm5mCisgIC0gd2FuZGVydmlldworICAtIHJpY2VhCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
T1dORVJTIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJl
YW1zL09XTkVSUwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzkzNDcxYjQ2NzA2OGZi
NjdiZThmY2RkOTRmMGM5YWRjMWEzYWM2Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3N0cmVhbXMvT1dORVJTCisrKyAvZGV2L251bGwKQEAgLTEsNyArMCwwIEBACi1AZG9tZW5p
YwotQHR5b3NoaW5vCi1AeXV0YWthaGlyYW5vCi1AeW91ZW5uZgotQGNhbHZhcmlzCi1Ad2FuZGVy
dmlldwotQHJpY2VhCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMvUkVBRE1FLm1kIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL1JFQURNRS5tZAppbmRleCA4ODY4YTg1OGU1ZjQ5
YWU0NTdjN2QxZGUwNzhhMWY2OTdjYzY3NjI2Li5mZDk2NGNmN2U1Yjc1ZGI0MDhlMGI1ODEzY2I5
NDE3MjE4NmY1YzI2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMvUkVBRE1FLm1kCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9SRUFETUUubWQKQEAgLTEsMTQgKzEsMyBA
QAogIyBTdHJlYW1zIFRlc3RzCiAKIFRoZSB3b3JrIG9uIHRoZSBzdHJlYW1zIHRlc3RzIGlzIGNs
b3NlbHkgdHJhY2tlZCBieSB0aGUgc3BlY2lmaWNhdGlvbiBhdXRob3JzLCB3aG8gbWFpbnRhaW4g
YSByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gaW50ZW5kZWQgdG8gbWF0Y2ggdGhlIHNwZWMgbGlu
ZS1ieS1saW5lIHdoaWxlIHBhc3NpbmcgYWxsIG9mIHRoZXNlIHRlc3RzLiBTZWUgW3RoZSB3aGF0
d2cvc3RyZWFtcyByZXBvc2l0b3J5IGZvciBkZXRhaWxzXShodHRwczovL2dpdGh1Yi5jb20vd2hh
dHdnL3N0cmVhbXMvdHJlZS9tYXN0ZXIvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uKS4gU29tZSB0
ZXN0cyBtYXkgYmUgaW4gdGhhdCByZXBvc2l0b3J5IHdoaWxlIHRoZSBzcGVjIHNlY3Rpb25zIHRo
ZXkgdGVzdCBhcmUgc3RpbGwgdW5kZXJnb2luZyBoZWF2eSBjaHVybi4KLQotIyMgR2VuZXJhdGlu
ZyB3cmFwcGVyIGZpbGVzCi0KLUJlY2F1c2UgdGhlIHN0cmVhbXMgZmVhdHVyZSBpcyBzdXBwb3Nl
ZCB0byB3b3JrIGluIGFsbCBnbG9iYWwgY29udGV4dHMsIGVhY2ggdGVzdCBpcyB3cml0dGVuIGFz
IGEgYC5qc2AgZmlsZSwgYW5kIHRoZW4gZm91ciBgLmh0bWxgIGZpbGVzIGFyZSBnZW5lcmF0ZWQg
YXJvdW5kIGl0LiBTbyBmb3IgZXhhbXBsZSwgZm9yIGBjb3VudC1xdWV1ZWluZy1zdHJhdGVneS5q
c2AsIHdlIGhhdmUgdGhlIHdyYXBwZXIgZmlsZXM6Ci0KLS0gYGNvdW50LXF1ZXVlaW5nLXN0cmF0
ZWd5Lmh0dHBzLmh0bWxgCi0tIGBjb3VudC1xdWV1ZWluZy1zdHJhdGVneS5kZWRpY2F0ZWR3b3Jr
ZXIuaHRtbGAKLS0gYGNvdW50LXF1ZXVlaW5nLXN0cmF0ZWd5LXNoYXJlZHdvcmtlci5odG1sYAot
LSBgY291bnQtcXVldWVpbmctc3RyYXRlZ3ktc2VydmljZXdvcmtlci5odG1sYAotCi1UaGVzZSBh
cmUgZ2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkgYnkgdGhlIE5vZGUuanMgc2NyaXB0IGluIGBnZW5l
cmF0ZS10ZXN0LXdyYXBwZXJzLmpzYC4gU2VlIGl0IGZvciBkZXRhaWxzLCBhbmQgcGxlYXNlIHJl
bWVtYmVyIHRvIHVzZSBpdCB3aGVuZXZlciBhZGRpbmcgbmV3IHRlc3RzLgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL2J5dGUt
bGVuZ3RoLXF1ZXVpbmctc3RyYXRlZ3kuZGVkaWNhdGVkd29ya2VyLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9ieXRlLWxl
bmd0aC1xdWV1aW5nLXN0cmF0ZWd5LmRlZGljYXRlZHdvcmtlci1leHBlY3RlZC50eHQKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE3MTQyODE2MWMyZGMwNzYyYmYwYzZlZmQzMjI5ZWEw
ZGY4NDdlODMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL2J5dGUt
bGVuZ3RoLXF1ZXVpbmctc3RyYXRlZ3kuZGVkaWNhdGVkd29ya2VyLWV4cGVjdGVkLnR4dAorKysg
L2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAKLQotUEFTUyBDYW4gY29uc3RydWN0IGEgQnl0ZUxl
bmd0aFF1ZXVpbmdTdHJhdGVneSB3aXRoIGEgdmFsaWQgaGlnaCB3YXRlciBtYXJrIAotUEFTUyBD
YW4gY29uc3RydWN0IGEgQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneSB3aXRoIGFueSB2YWx1ZSBh
cyBpdHMgaGlnaCB3YXRlciBtYXJrIAotUEFTUyBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5IGNv
bnN0cnVjdG9yIGJlaGF2ZXMgYXMgZXhwZWN0ZWQgd2l0aCBzdHJhbmdlIGFyZ3VtZW50cyAKLVBB
U1MgQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneSBzaXplIGJlaGF2ZXMgYXMgZXhwZWN0ZWQgd2l0
aCBzdHJhbmdlIGFyZ3VtZW50cyAKLVBBU1MgQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneS5wcm90
b3R5cGUuc2l6ZSBzaG91bGQgd29yayBnZW5lcmljYWxseSBvbiBpdHMgdGhpcyBhbmQgaXRzIGFy
Z3VtZW50cyAKLVBBU1MgQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneSBpbnN0YW5jZXMgaGF2ZSB0
aGUgY29ycmVjdCBwcm9wZXJ0aWVzIAotUEFTUyBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5J3Mg
aGlnaFdhdGVyTWFyayBwcm9wZXJ0eSBjYW4gYmUgc2V0IHRvIGFueXRoaW5nIAotUEFTUyBCeXRl
TGVuZ3RoUXVldWluZ1N0cmF0ZWd5Lm5hbWUgaXMgY29ycmVjdCAKLQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL2J5dGUtbGVu
Z3RoLXF1ZXVpbmctc3RyYXRlZ3kuZGVkaWNhdGVkd29ya2VyLmh0bWwgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvYnl0ZS1sZW5ndGgtcXVldWlu
Zy1zdHJhdGVneS5kZWRpY2F0ZWR3b3JrZXIuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggYWU4ZTdmNzI5ZjQ1MTY5Nzc1ZDA5M2MwNjdlYjY2YTE4ZDk3Y2IwZC4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvYnl0ZS1sZW5ndGgtcXVldWluZy1zdHJh
dGVneS5kZWRpY2F0ZWR3b3JrZXIuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAK
LTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHRpdGxlPmJ5dGUtbGVu
Z3RoLXF1ZXVpbmctc3RyYXRlZ3kuanMgZGVkaWNhdGVkIHdvcmtlciB3cmFwcGVyIGZpbGU8L3Rp
dGxlPgotCi08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+
Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+
Ci0KLTxzY3JpcHQ+Ci0ndXNlIHN0cmljdCc7Ci1mZXRjaF90ZXN0c19mcm9tX3dvcmtlcihuZXcg
V29ya2VyKCdieXRlLWxlbmd0aC1xdWV1aW5nLXN0cmF0ZWd5LmpzJykpOwotPC9zY3JpcHQ+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMvYnl0ZS1sZW5ndGgtcXVldWluZy1zdHJhdGVneS5odG1sIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL2J5dGUtbGVuZ3RoLXF1ZXVpbmct
c3RyYXRlZ3kuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTFlYWEzYmZhNGQ3
YjFiZmUwY2RkNjg5M2M4NTMxMzI5Y2M2MGM4ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMvYnl0ZS1sZW5ndGgtcXVldWluZy1zdHJhdGVneS5odG1sCisrKyAvZGV2
L251bGwKQEAgLTEsMTAgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1
dGYtOCI+Ci08dGl0bGU+Ynl0ZS1sZW5ndGgtcXVldWluZy1zdHJhdGVneS5qcyBicm93c2VyIGNv
bnRleHQgd3JhcHBlciBmaWxlPC90aXRsZT4KLQotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVz
dGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5l
c3NyZXBvcnQuanMiPjwvc2NyaXB0PgotCi0KLQotPHNjcmlwdCBzcmM9ImJ5dGUtbGVuZ3RoLXF1
ZXVpbmctc3RyYXRlZ3kuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL2J5dGUtbGVuZ3RoLXF1ZXVpbmct
c3RyYXRlZ3kuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMvYnl0ZS1sZW5ndGgtcXVldWluZy1zdHJhdGVneS5qcwpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggZTk2ZTY4ZWU0MDZhNTY2ODhlMDQ2MWZmZDBmNTEzMTEwOWY3MDdjZi4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvYnl0ZS1sZW5ndGgtcXVl
dWluZy1zdHJhdGVneS5qcworKysgL2Rldi9udWxsCkBAIC0xLDExNCArMCwwIEBACi0ndXNlIHN0
cmljdCc7Ci0KLWlmIChzZWxmLmltcG9ydFNjcmlwdHMpIHsKLSAgc2VsZi5pbXBvcnRTY3JpcHRz
KCcvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzJyk7Ci19Ci0KLXRlc3QoKCkgPT4gewotCi0gIG5l
dyBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5KHsgaGlnaFdhdGVyTWFyazogNCB9KTsKLQotfSwg
J0NhbiBjb25zdHJ1Y3QgYSBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5IHdpdGggYSB2YWxpZCBo
aWdoIHdhdGVyIG1hcmsnKTsKLQotdGVzdCgoKSA9PiB7Ci0KLSAgZm9yIChjb25zdCBoaWdoV2F0
ZXJNYXJrIG9mIFstSW5maW5pdHksIE5hTiwgJ2ZvbycsIHt9LCAoKSA9PiB7fV0pIHsKLSAgICBj
b25zdCBzdHJhdGVneSA9IG5ldyBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5KHsgaGlnaFdhdGVy
TWFyayB9KTsKLSAgICBhc3NlcnRfZXF1YWxzKHN0cmF0ZWd5LmhpZ2hXYXRlck1hcmssIGhpZ2hX
YXRlck1hcmssIGAke2hpZ2hXYXRlck1hcmt9IGdldHMgc2V0IGNvcnJlY3RseWApOwotICB9Ci0K
LX0sICdDYW4gY29uc3RydWN0IGEgQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneSB3aXRoIGFueSB2
YWx1ZSBhcyBpdHMgaGlnaCB3YXRlciBtYXJrJyk7Ci0KLXRlc3QoKCkgPT4gewotCi0gIGNvbnN0
IGhpZ2hXYXRlck1hcmsgPSAxOwotICBjb25zdCBoaWdoV2F0ZXJNYXJrT2JqZWN0R2V0dGVyID0g
ewotICAgIGdldCBoaWdoV2F0ZXJNYXJrKCkgeyByZXR1cm4gaGlnaFdhdGVyTWFyazsgfQotICB9
OwotICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcignd293IScpOwotICBjb25zdCBoaWdoV2F0ZXJN
YXJrT2JqZWN0R2V0dGVyVGhyb3dpbmcgPSB7Ci0gICAgZ2V0IGhpZ2hXYXRlck1hcmsoKSB7IHRo
cm93IGVycm9yOyB9Ci0gIH07Ci0KLSAgYXNzZXJ0X3Rocm93cyh7IG5hbWU6ICdUeXBlRXJyb3In
IH0sICgpID0+IG5ldyBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5KCksICdjb25zdHJ1Y3Rpb24g
ZmFpbHMgd2l0aCB1bmRlZmluZWQnKTsKLSAgYXNzZXJ0X3Rocm93cyh7IG5hbWU6ICdUeXBlRXJy
b3InIH0sICgpID0+IG5ldyBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5KG51bGwpLCAnY29uc3Ry
dWN0aW9uIGZhaWxzIHdpdGggbnVsbCcpOwotICBhc3NlcnRfdGhyb3dzKHsgbmFtZTogJ0Vycm9y
JyB9LCAoKSA9PiBuZXcgQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneShoaWdoV2F0ZXJNYXJrT2Jq
ZWN0R2V0dGVyVGhyb3dpbmcpLAotICAgICdjb25zdHJ1Y3Rpb24gZmFpbHMgd2l0aCBhbiBvYmpl
Y3Qgd2l0aCBhIHRocm93aW5nIGhpZ2hXYXRlck1hcmsgZ2V0dGVyJyk7Ci0KLSAgLy8gU2hvdWxk
IG5vdCBmYWlsOgotICBuZXcgQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneSgncG90YXRvJyk7Ci0g
IG5ldyBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5KHt9KTsKLSAgbmV3IEJ5dGVMZW5ndGhRdWV1
aW5nU3RyYXRlZ3koaGlnaFdhdGVyTWFya09iamVjdEdldHRlcik7Ci0KLX0sICdCeXRlTGVuZ3Ro
UXVldWluZ1N0cmF0ZWd5IGNvbnN0cnVjdG9yIGJlaGF2ZXMgYXMgZXhwZWN0ZWQgd2l0aCBzdHJh
bmdlIGFyZ3VtZW50cycpOwotCi10ZXN0KCgpID0+IHsKLQotICBjb25zdCBzaXplID0gMTAyNDsK
LSAgY29uc3QgY2h1bmsgPSB7IGJ5dGVMZW5ndGg6IHNpemUgfTsKLSAgY29uc3QgY2h1bmtHZXR0
ZXIgPSB7Ci0gICAgZ2V0IGJ5dGVMZW5ndGgoKSB7IHJldHVybiBzaXplOyB9Ci0gIH07Ci0gIGNv
bnN0IGVycm9yID0gbmV3IEVycm9yKCd3b3chJyk7Ci0gIGNvbnN0IGNodW5rR2V0dGVyVGhyb3dp
bmcgPSB7Ci0gICAgZ2V0IGJ5dGVMZW5ndGgoKSB7IHRocm93IGVycm9yOyB9Ci0gIH07Ci0gIGFz
c2VydF90aHJvd3MoeyBuYW1lOiAnVHlwZUVycm9yJyB9LCAoKSA9PiBCeXRlTGVuZ3RoUXVldWlu
Z1N0cmF0ZWd5LnByb3RvdHlwZS5zaXplKCksICdzaXplIGZhaWxzIHdpdGggdW5kZWZpbmVkJyk7
Ci0gIGFzc2VydF90aHJvd3MoeyBuYW1lOiAnVHlwZUVycm9yJyB9LCAoKSA9PiBCeXRlTGVuZ3Ro
UXVldWluZ1N0cmF0ZWd5LnByb3RvdHlwZS5zaXplKG51bGwpLCAnc2l6ZSBmYWlscyB3aXRoIG51
bGwnKTsKLSAgYXNzZXJ0X2VxdWFscyhCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5LnByb3RvdHlw
ZS5zaXplKCdwb3RhdG8nKSwgdW5kZWZpbmVkLAotICAgICdzaXplIHN1Y2NlZWRzIHdpdGggdW5k
ZWZpbmVkIHdpdGggYSByYW5kb20gbm9uLW9iamVjdCB0eXBlJyk7Ci0gIGFzc2VydF9lcXVhbHMo
Qnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneS5wcm90b3R5cGUuc2l6ZSh7fSksIHVuZGVmaW5lZCwK
LSAgICAnc2l6ZSBzdWNjZWVkcyB3aXRoIHVuZGVmaW5lZCB3aXRoIGFuIG9iamVjdCB3aXRob3V0
IGh3bSBwcm9wZXJ0eScpOwotICBhc3NlcnRfZXF1YWxzKEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRl
Z3kucHJvdG90eXBlLnNpemUoY2h1bmspLCBzaXplLAotICAgICdzaXplIHN1Y2NlZWRzIHdpdGgg
dGhlIHJpZ2h0IGFtb3VudCB3aXRoIGFuIG9iamVjdCB3aXRoIGEgaHdtJyk7Ci0gIGFzc2VydF9l
cXVhbHMoQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneS5wcm90b3R5cGUuc2l6ZShjaHVua0dldHRl
ciksIHNpemUsCi0gICAgJ3NpemUgc3VjY2VlZHMgd2l0aCB0aGUgcmlnaHQgYW1vdW50IHdpdGgg
YW4gb2JqZWN0IHdpdGggYSBod20gZ2V0dGVyJyk7Ci0gIGFzc2VydF90aHJvd3MoeyBuYW1lOiAn
RXJyb3InIH0sICgpID0+IEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3kucHJvdG90eXBlLnNpemUo
Y2h1bmtHZXR0ZXJUaHJvd2luZyksCi0gICAgJ3NpemUgZmFpbHMgd2l0aCB0aGUgZXJyb3IgdGhy
b3duIGJ5IHRoZSBnZXR0ZXInKTsKLQotfSwgJ0J5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3kgc2l6
ZSBiZWhhdmVzIGFzIGV4cGVjdGVkIHdpdGggc3RyYW5nZSBhcmd1bWVudHMnKTsKLQotdGVzdCgo
KSA9PiB7Ci0KLSAgY29uc3QgdGhpc1ZhbHVlID0gbnVsbDsKLSAgY29uc3QgcmV0dXJuVmFsdWUg
PSB7ICdyZXR1cm5lZCBmcm9tJzogJ2J5dGVMZW5ndGggZ2V0dGVyJyB9OwotICBjb25zdCBjaHVu
ayA9IHsKLSAgICBnZXQgYnl0ZUxlbmd0aCgpIHsgcmV0dXJuIHJldHVyblZhbHVlOyB9Ci0gIH07
Ci0KLSAgYXNzZXJ0X2VxdWFscyhCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5LnByb3RvdHlwZS5z
aXplLmNhbGwodGhpc1ZhbHVlLCBjaHVuayksIHJldHVyblZhbHVlKTsKLQotfSwgJ0J5dGVMZW5n
dGhRdWV1aW5nU3RyYXRlZ3kucHJvdG90eXBlLnNpemUgc2hvdWxkIHdvcmsgZ2VuZXJpY2FsbHkg
b24gaXRzIHRoaXMgYW5kIGl0cyBhcmd1bWVudHMnKTsKLQotdGVzdCgoKSA9PiB7Ci0KLSAgY29u
c3Qgc3RyYXRlZ3kgPSBuZXcgQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneSh7IGhpZ2hXYXRlck1h
cms6IDQgfSk7Ci0KLSAgYXNzZXJ0X29iamVjdF9lcXVhbHMoT2JqZWN0LmdldE93blByb3BlcnR5
RGVzY3JpcHRvcihzdHJhdGVneSwgJ2hpZ2hXYXRlck1hcmsnKSwKLSAgICB7IHZhbHVlOiA0LCB3
cml0YWJsZTogdHJ1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0sCi0g
ICAgJ2hpZ2hXYXRlck1hcmsgcHJvcGVydHkgc2hvdWxkIGJlIGEgZGF0YSBwcm9wZXJ0eSB3aXRo
IHRoZSB2YWx1ZSBwYXNzZWQgdGhlIGNvbnN0cnVjdG9yJyk7Ci0gIGFzc2VydF9lcXVhbHModHlw
ZW9mIHN0cmF0ZWd5LnNpemUsICdmdW5jdGlvbicpOwotCi19LCAnQnl0ZUxlbmd0aFF1ZXVpbmdT
dHJhdGVneSBpbnN0YW5jZXMgaGF2ZSB0aGUgY29ycmVjdCBwcm9wZXJ0aWVzJyk7Ci0KLXRlc3Qo
KCkgPT4gewotCi0gIGNvbnN0IHN0cmF0ZWd5ID0gbmV3IEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRl
Z3koeyBoaWdoV2F0ZXJNYXJrOiA0IH0pOwotICBhc3NlcnRfZXF1YWxzKHN0cmF0ZWd5LmhpZ2hX
YXRlck1hcmssIDQpOwotCi0gIHN0cmF0ZWd5LmhpZ2hXYXRlck1hcmsgPSAxMDsKLSAgYXNzZXJ0
X2VxdWFscyhzdHJhdGVneS5oaWdoV2F0ZXJNYXJrLCAxMCk7Ci0KLSAgc3RyYXRlZ3kuaGlnaFdh
dGVyTWFyayA9ICdiYW5hbmEnOwotICBhc3NlcnRfZXF1YWxzKHN0cmF0ZWd5LmhpZ2hXYXRlck1h
cmssICdiYW5hbmEnKTsKLQotfSwgJ0J5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3lcJ3MgaGlnaFdh
dGVyTWFyayBwcm9wZXJ0eSBjYW4gYmUgc2V0IHRvIGFueXRoaW5nJyk7Ci0KLXRlc3QoKCkgPT4g
ewotCi0gIGFzc2VydF9lcXVhbHMoQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneS5uYW1lLCAnQnl0
ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneScsCi0gICAgICAgICAgICAgICAgJ0J5dGVMZW5ndGhRdWV1
aW5nU3RyYXRlZ3kubmFtZSBtdXN0IGJlICJCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5IicpOwot
Ci19LCAnQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneS5uYW1lIGlzIGNvcnJlY3QnKTsKLQotZG9u
ZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL2J5dGUtbGVuZ3RoLXF1ZXVpbmctc3RyYXRlZ3kuc2VydmljZXdvcmtlci5o
dHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMvYnl0ZS1sZW5ndGgtcXVldWluZy1zdHJhdGVneS5zZXJ2aWNld29ya2Vy
Lmh0dHBzLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTczOWZi
YmIyYjk2ZTM1YjMwZjlhYTk5ZDNkMjc5NmEyZDZiNmE3Ny4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMvYnl0ZS1sZW5ndGgtcXVldWluZy1zdHJhdGVneS5zZXJ2aWNl
d29ya2VyLmh0dHBzLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAK
LQotUEFTUyBTZXJ2aWNlIHdvcmtlciB0ZXN0IHNldHVwIAotUEFTUyBDYW4gY29uc3RydWN0IGEg
Qnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneSB3aXRoIGEgdmFsaWQgaGlnaCB3YXRlciBtYXJrIAot
UEFTUyBDYW4gY29uc3RydWN0IGEgQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneSB3aXRoIGFueSB2
YWx1ZSBhcyBpdHMgaGlnaCB3YXRlciBtYXJrIAotUEFTUyBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0
ZWd5IGNvbnN0cnVjdG9yIGJlaGF2ZXMgYXMgZXhwZWN0ZWQgd2l0aCBzdHJhbmdlIGFyZ3VtZW50
cyAKLVBBU1MgQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneSBzaXplIGJlaGF2ZXMgYXMgZXhwZWN0
ZWQgd2l0aCBzdHJhbmdlIGFyZ3VtZW50cyAKLVBBU1MgQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVn
eS5wcm90b3R5cGUuc2l6ZSBzaG91bGQgd29yayBnZW5lcmljYWxseSBvbiBpdHMgdGhpcyBhbmQg
aXRzIGFyZ3VtZW50cyAKLVBBU1MgQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneSBpbnN0YW5jZXMg
aGF2ZSB0aGUgY29ycmVjdCBwcm9wZXJ0aWVzIAotUEFTUyBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0
ZWd5J3MgaGlnaFdhdGVyTWFyayBwcm9wZXJ0eSBjYW4gYmUgc2V0IHRvIGFueXRoaW5nIAotUEFT
UyBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5Lm5hbWUgaXMgY29ycmVjdCAKLQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL2J5
dGUtbGVuZ3RoLXF1ZXVpbmctc3RyYXRlZ3kuc2VydmljZXdvcmtlci5odHRwcy5odG1sIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL2J5dGUtbGVu
Z3RoLXF1ZXVpbmctc3RyYXRlZ3kuc2VydmljZXdvcmtlci5odHRwcy5odG1sCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAxMmFjODU2ZDI4MjVhMDMwYmY2NDIyN2RkNGYzMjlhZjEzNGE1
NjU5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9ieXRlLWxlbmd0
aC1xdWV1aW5nLXN0cmF0ZWd5LnNlcnZpY2V3b3JrZXIuaHR0cHMuaHRtbAorKysgL2Rldi9udWxs
CkBAIC0xLDEyICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgi
PgotPHRpdGxlPmJ5dGUtbGVuZ3RoLXF1ZXVpbmctc3RyYXRlZ3kuanMgc2VydmljZSB3b3JrZXIg
d3JhcHBlciBmaWxlPC90aXRsZT4KLQotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5l
c3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBv
cnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13
b3JrZXIvcmVzb3VyY2VzL3Rlc3QtaGVscGVycy5zdWIuanMiPjwvc2NyaXB0PgotCi08c2NyaXB0
PgotJ3VzZSBzdHJpY3QnOwotc2VydmljZV93b3JrZXJfdGVzdCgnYnl0ZS1sZW5ndGgtcXVldWlu
Zy1zdHJhdGVneS5qcycsICdTZXJ2aWNlIHdvcmtlciB0ZXN0IHNldHVwJyk7Ci08L3NjcmlwdD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy9ieXRlLWxlbmd0aC1xdWV1aW5nLXN0cmF0ZWd5LnNoYXJlZHdvcmtlci1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvYnl0ZS1sZW5ndGgtcXVldWluZy1zdHJhdGVneS5zaGFyZWR3b3JrZXItZXhwZWN0ZWQudHh0
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwOWQ1ZDI1MDlkNzg0N2U4Y2Q2ZmU2NjA2
YWE2MGNkZDMzYWE0NzRlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy9ieXRlLWxlbmd0aC1xdWV1aW5nLXN0cmF0ZWd5LnNoYXJlZHdvcmtlci1leHBlY3RlZC50eHQK
KysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLUNPTlNPTEUgTUVTU0FHRTogUmVmZXJlbmNl
RXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IFNoYXJlZFdvcmtlcgotCi1IYXJuZXNzIEVycm9y
IChGQUlMKSwgbWVzc2FnZSA9IFJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBT
aGFyZWRXb3JrZXIKLQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvYnl0ZS1sZW5ndGgtcXVldWluZy1zdHJhdGVneS5zaGFy
ZWR3b3JrZXIuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy9ieXRlLWxlbmd0aC1xdWV1aW5nLXN0cmF0ZWd5LnNoYXJlZHdvcmtlci5odG1s
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NjU4NzhlM2U2YTY1ZWI3NWVmMjZlMDVi
MzY1OWY2ZDVjNTFiYmRkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy9ieXRlLWxlbmd0aC1xdWV1aW5nLXN0cmF0ZWd5LnNoYXJlZHdvcmtlci5odG1sCisrKyAvZGV2
L251bGwKQEAgLTEsMTEgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1
dGYtOCI+Ci08dGl0bGU+Ynl0ZS1sZW5ndGgtcXVldWluZy1zdHJhdGVneS5qcyBzaGFyZWQgd29y
a2VyIHdyYXBwZXIgZmlsZTwvdGl0bGU+Ci0KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
cmVwb3J0LmpzIj48L3NjcmlwdD4KLQotPHNjcmlwdD4KLSd1c2Ugc3RyaWN0JzsKLWZldGNoX3Rl
c3RzX2Zyb21fd29ya2VyKG5ldyBTaGFyZWRXb3JrZXIoJ2J5dGUtbGVuZ3RoLXF1ZXVpbmctc3Ry
YXRlZ3kuanMnKSk7Ci08L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5LmRl
ZGljYXRlZHdvcmtlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvY291bnQtcXVldWluZy1zdHJhdGVneS5kZWRpY2F0ZWR3
b3JrZXItZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZGJkMzEx
YThkYWYxMDBmNGZjYjYzMzA0YWFiMzU5ZTdmN2ExZDZkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5LmRlZGljYXRlZHdvcmtl
ci1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi0KLVBBU1MgQ2Fu
IGNvbnN0cnVjdCBhIENvdW50UXVldWluZ1N0cmF0ZWd5IHdpdGggYSB2YWxpZCBoaWdoIHdhdGVy
IG1hcmsgCi1QQVNTIENhbiBjb25zdHJ1Y3QgYSBDb3VudFF1ZXVpbmdTdHJhdGVneSB3aXRoIGFu
eSB2YWx1ZSBhcyBpdHMgaGlnaCB3YXRlciBtYXJrIAotUEFTUyBDb3VudFF1ZXVpbmdTdHJhdGVn
eSBjb25zdHJ1Y3RvciBiZWhhdmVzIGFzIGV4cGVjdGVkIHdpdGggc3RyYW5nZSBhcmd1bWVudHMg
Ci1QQVNTIENvdW50UXVldWluZ1N0cmF0ZWd5LnByb3RvdHlwZS5zaXplIHNob3VsZCB3b3JrIGdl
bmVyaWNhbGx5IG9uIGl0cyB0aGlzIGFuZCBpdHMgYXJndW1lbnRzIAotUEFTUyBDb3VudFF1ZXVp
bmdTdHJhdGVneSBzaXplIGJlaGF2ZXMgYXMgZXhwZWN0ZWQgd2l0aCBzdHJhbmdlIGFyZ3VtZW50
cyAKLVBBU1MgQ291bnRRdWV1aW5nU3RyYXRlZ3kgaW5zdGFuY2VzIGhhdmUgdGhlIGNvcnJlY3Qg
cHJvcGVydGllcyAKLVBBU1MgQ291bnRRdWV1aW5nU3RyYXRlZ3kncyBoaWdoV2F0ZXJNYXJrIHBy
b3BlcnR5IGNhbiBiZSBzZXQgdG8gYW55dGhpbmcgCi1QQVNTIENvdW50UXVldWluZ1N0cmF0ZWd5
Lm5hbWUgaXMgY29ycmVjdCAKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3kuZGVkaWNh
dGVkd29ya2VyLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3N0cmVhbXMvY291bnQtcXVldWluZy1zdHJhdGVneS5kZWRpY2F0ZWR3b3JrZXIuaHRtbApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDAxMzZlYmRlYTNiYzE0NzRjMjk0OGM3NzVk
ZDhiNWVhYWIwN2YyOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
Y291bnQtcXVldWluZy1zdHJhdGVneS5kZWRpY2F0ZWR3b3JrZXIuaHRtbAorKysgL2Rldi9udWxs
CkBAIC0xLDExICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgi
PgotPHRpdGxlPmNvdW50LXF1ZXVpbmctc3RyYXRlZ3kuanMgZGVkaWNhdGVkIHdvcmtlciB3cmFw
cGVyIGZpbGU8L3RpdGxlPgotCi08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5q
cyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5q
cyI+PC9zY3JpcHQ+Ci0KLTxzY3JpcHQ+Ci0ndXNlIHN0cmljdCc7Ci1mZXRjaF90ZXN0c19mcm9t
X3dvcmtlcihuZXcgV29ya2VyKCdjb3VudC1xdWV1aW5nLXN0cmF0ZWd5LmpzJykpOwotPC9zY3Jp
cHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3N0cmVhbXMvY291bnQtcXVldWluZy1zdHJhdGVneS5odG1sIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL2NvdW50LXF1ZXVpbmctc3RyYXRl
Z3kuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWJiZWQzOTRiM2YwOWFiYzY3
OTFhNTg5NjMwZmExNzc4ZTU3MDc2NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMvY291bnQtcXVldWluZy1zdHJhdGVneS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEs
MTAgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08dGl0
bGU+Y291bnQtcXVldWluZy1zdHJhdGVneS5qcyBicm93c2VyIGNvbnRleHQgd3JhcHBlciBmaWxl
PC90aXRsZT4KLQotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2Ny
aXB0PgotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2Ny
aXB0PgotCi0KLQotPHNjcmlwdCBzcmM9ImNvdW50LXF1ZXVpbmctc3RyYXRlZ3kuanMiPjwvc2Ny
aXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3kuanMgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvY291bnQtcXVldWluZy1zdHJhdGVn
eS5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGRhOGViNjc5ZGVmMzE3Y2E3YTI0
OTdkZTY3MjQwZTRjZTdlZmQ4Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMvY291bnQtcXVldWluZy1zdHJhdGVneS5qcworKysgL2Rldi9udWxsCkBAIC0xLDExMyAr
MCwwIEBACi0ndXNlIHN0cmljdCc7Ci0KLWlmIChzZWxmLmltcG9ydFNjcmlwdHMpIHsKLSAgc2Vs
Zi5pbXBvcnRTY3JpcHRzKCcvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzJyk7Ci19Ci0KLXRlc3Qo
KCkgPT4gewotCi0gIG5ldyBDb3VudFF1ZXVpbmdTdHJhdGVneSh7IGhpZ2hXYXRlck1hcms6IDQg
fSk7Ci0KLX0sICdDYW4gY29uc3RydWN0IGEgQ291bnRRdWV1aW5nU3RyYXRlZ3kgd2l0aCBhIHZh
bGlkIGhpZ2ggd2F0ZXIgbWFyaycpOwotCi10ZXN0KCgpID0+IHsKLQotICBmb3IgKGNvbnN0IGhp
Z2hXYXRlck1hcmsgb2YgWy1JbmZpbml0eSwgTmFOLCAnZm9vJywge30sICgpID0+IHt9XSkgewot
ICAgIGNvbnN0IHN0cmF0ZWd5ID0gbmV3IENvdW50UXVldWluZ1N0cmF0ZWd5KHsgaGlnaFdhdGVy
TWFyayB9KTsKLSAgICBhc3NlcnRfZXF1YWxzKHN0cmF0ZWd5LmhpZ2hXYXRlck1hcmssIGhpZ2hX
YXRlck1hcmssIGAke2hpZ2hXYXRlck1hcmt9IGdldHMgc2V0IGNvcnJlY3RseWApOwotICB9Ci0K
LX0sICdDYW4gY29uc3RydWN0IGEgQ291bnRRdWV1aW5nU3RyYXRlZ3kgd2l0aCBhbnkgdmFsdWUg
YXMgaXRzIGhpZ2ggd2F0ZXIgbWFyaycpOwotCi10ZXN0KCgpID0+IHsKLQotICBjb25zdCBoaWdo
V2F0ZXJNYXJrID0gMTsKLSAgY29uc3QgaGlnaFdhdGVyTWFya09iamVjdEdldHRlciA9IHsKLSAg
ICBnZXQgaGlnaFdhdGVyTWFyaygpIHsgcmV0dXJuIGhpZ2hXYXRlck1hcms7IH0KLSAgfTsKLSAg
Y29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoJ3dvdyEnKTsKLSAgY29uc3QgaGlnaFdhdGVyTWFya09i
amVjdEdldHRlclRocm93aW5nID0gewotICAgIGdldCBoaWdoV2F0ZXJNYXJrKCkgeyB0aHJvdyBl
cnJvcjsgfQotICB9OwotCi0gIGFzc2VydF90aHJvd3MoeyBuYW1lOiAnVHlwZUVycm9yJyB9LCAo
KSA9PiBuZXcgQ291bnRRdWV1aW5nU3RyYXRlZ3koKSwgJ2NvbnN0cnVjdGlvbiBmYWlscyB3aXRo
IHVuZGVmaW5lZCcpOwotICBhc3NlcnRfdGhyb3dzKHsgbmFtZTogJ1R5cGVFcnJvcicgfSwgKCkg
PT4gbmV3IENvdW50UXVldWluZ1N0cmF0ZWd5KG51bGwpLCAnY29uc3RydWN0aW9uIGZhaWxzIHdp
dGggbnVsbCcpOwotICBhc3NlcnRfdGhyb3dzKHsgbmFtZTogJ0Vycm9yJyB9LCAoKSA9PiBuZXcg
Q291bnRRdWV1aW5nU3RyYXRlZ3koaGlnaFdhdGVyTWFya09iamVjdEdldHRlclRocm93aW5nKSwK
LSAgICAnY29uc3RydWN0aW9uIGZhaWxzIHdpdGggYW4gb2JqZWN0IHdpdGggYSB0aHJvd2luZyBo
aWdoV2F0ZXJNYXJrIGdldHRlcicpOwotCi0gIC8vIFNob3VsZCBub3QgZmFpbDoKLSAgbmV3IENv
dW50UXVldWluZ1N0cmF0ZWd5KCdwb3RhdG8nKTsKLSAgbmV3IENvdW50UXVldWluZ1N0cmF0ZWd5
KHt9KTsKLSAgbmV3IENvdW50UXVldWluZ1N0cmF0ZWd5KGhpZ2hXYXRlck1hcmtPYmplY3RHZXR0
ZXIpOwotCi19LCAnQ291bnRRdWV1aW5nU3RyYXRlZ3kgY29uc3RydWN0b3IgYmVoYXZlcyBhcyBl
eHBlY3RlZCB3aXRoIHN0cmFuZ2UgYXJndW1lbnRzJyk7Ci0KLQotdGVzdCgoKSA9PiB7Ci0KLSAg
Y29uc3QgdGhpc1ZhbHVlID0gbnVsbDsKLSAgY29uc3QgY2h1bmsgPSB7Ci0gICAgZ2V0IGJ5dGVM
ZW5ndGgoKSB7Ci0gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdzaG91bGRuXCd0IGJlIGNhbGxl
ZCcpOwotICAgIH0KLSAgfTsKLQotICBhc3NlcnRfZXF1YWxzKENvdW50UXVldWluZ1N0cmF0ZWd5
LnByb3RvdHlwZS5zaXplLmNhbGwodGhpc1ZhbHVlLCBjaHVuayksIDEpOwotCi19LCAnQ291bnRR
dWV1aW5nU3RyYXRlZ3kucHJvdG90eXBlLnNpemUgc2hvdWxkIHdvcmsgZ2VuZXJpY2FsbHkgb24g
aXRzIHRoaXMgYW5kIGl0cyBhcmd1bWVudHMnKTsKLQotdGVzdCgoKSA9PiB7Ci0KLSAgY29uc3Qg
c2l6ZSA9IDEwMjQ7Ci0gIGNvbnN0IGNodW5rID0geyBieXRlTGVuZ3RoOiBzaXplIH07Ci0gIGNv
bnN0IGNodW5rR2V0dGVyID0gewotICAgIGdldCBieXRlTGVuZ3RoKCkgeyByZXR1cm4gc2l6ZTsg
fQotICB9OwotICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcignd293IScpOwotICBjb25zdCBjaHVu
a0dldHRlclRocm93aW5nID0gewotICAgIGdldCBieXRlTGVuZ3RoKCkgeyB0aHJvdyBlcnJvcjsg
fQotICB9OwotCi0gIGFzc2VydF9lcXVhbHMoQ291bnRRdWV1aW5nU3RyYXRlZ3kucHJvdG90eXBl
LnNpemUoKSwgMSwgJ3NpemUgcmV0dXJucyAxIHdpdGggdW5kZWZpbmVkJyk7Ci0gIGFzc2VydF9l
cXVhbHMoQ291bnRRdWV1aW5nU3RyYXRlZ3kucHJvdG90eXBlLnNpemUobnVsbCksIDEsICdzaXpl
IHJldHVybnMgMSB3aXRoIG51bGwnKTsKLSAgYXNzZXJ0X2VxdWFscyhDb3VudFF1ZXVpbmdTdHJh
dGVneS5wcm90b3R5cGUuc2l6ZSgncG90YXRvJyksIDEsICdzaXplIHJldHVybnMgMSB3aXRoIG5v
bi1vYmplY3QgdHlwZScpOwotICBhc3NlcnRfZXF1YWxzKENvdW50UXVldWluZ1N0cmF0ZWd5LnBy
b3RvdHlwZS5zaXplKHt9KSwgMSwgJ3NpemUgcmV0dXJucyAxIHdpdGggZW1wdHkgb2JqZWN0Jyk7
Ci0gIGFzc2VydF9lcXVhbHMoQ291bnRRdWV1aW5nU3RyYXRlZ3kucHJvdG90eXBlLnNpemUoY2h1
bmspLCAxLCAnc2l6ZSByZXR1cm5zIDEgd2l0aCBhIGNodW5rJyk7Ci0gIGFzc2VydF9lcXVhbHMo
Q291bnRRdWV1aW5nU3RyYXRlZ3kucHJvdG90eXBlLnNpemUoY2h1bmtHZXR0ZXIpLCAxLCAnc2l6
ZSByZXR1cm5zIDEgd2l0aCBjaHVuayBnZXR0ZXInKTsKLSAgYXNzZXJ0X2VxdWFscyhDb3VudFF1
ZXVpbmdTdHJhdGVneS5wcm90b3R5cGUuc2l6ZShjaHVua0dldHRlclRocm93aW5nKSwgMSwKLSAg
ICAnc2l6ZSByZXR1cm5zIDEgd2l0aCBjaHVuayBnZXR0ZXIgdGhhdCB0aHJvd3MnKTsKLQotfSwg
J0NvdW50UXVldWluZ1N0cmF0ZWd5IHNpemUgYmVoYXZlcyBhcyBleHBlY3RlZCB3aXRoIHN0cmFu
Z2UgYXJndW1lbnRzJyk7Ci0KLXRlc3QoKCkgPT4gewotCi0gIGNvbnN0IHN0cmF0ZWd5ID0gbmV3
IENvdW50UXVldWluZ1N0cmF0ZWd5KHsgaGlnaFdhdGVyTWFyazogNCB9KTsKLQotICBhc3NlcnRf
b2JqZWN0X2VxdWFscyhPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHN0cmF0ZWd5LCAn
aGlnaFdhdGVyTWFyaycpLAotICAgIHsgdmFsdWU6IDQsIHdyaXRhYmxlOiB0cnVlLCBlbnVtZXJh
YmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUgfSwKLSAgICAnaGlnaFdhdGVyTWFyayBwcm9w
ZXJ0eSBzaG91bGQgYmUgYSBkYXRhIHByb3BlcnR5IHdpdGggdGhlIHZhbHVlIHBhc3NlZCB0aGUg
Y29uc3RydWN0b3InKTsKLSAgYXNzZXJ0X2VxdWFscyh0eXBlb2Ygc3RyYXRlZ3kuc2l6ZSwgJ2Z1
bmN0aW9uJyk7Ci0KLX0sICdDb3VudFF1ZXVpbmdTdHJhdGVneSBpbnN0YW5jZXMgaGF2ZSB0aGUg
Y29ycmVjdCBwcm9wZXJ0aWVzJyk7Ci0KLXRlc3QoKCkgPT4gewotCi0gIGNvbnN0IHN0cmF0ZWd5
ID0gbmV3IENvdW50UXVldWluZ1N0cmF0ZWd5KHsgaGlnaFdhdGVyTWFyazogNCB9KTsKLSAgYXNz
ZXJ0X2VxdWFscyhzdHJhdGVneS5oaWdoV2F0ZXJNYXJrLCA0KTsKLQotICBzdHJhdGVneS5oaWdo
V2F0ZXJNYXJrID0gMTA7Ci0gIGFzc2VydF9lcXVhbHMoc3RyYXRlZ3kuaGlnaFdhdGVyTWFyaywg
MTApOwotCi0gIHN0cmF0ZWd5LmhpZ2hXYXRlck1hcmsgPSAnYmFuYW5hJzsKLSAgYXNzZXJ0X2Vx
dWFscyhzdHJhdGVneS5oaWdoV2F0ZXJNYXJrLCAnYmFuYW5hJyk7Ci0KLX0sICdDb3VudFF1ZXVp
bmdTdHJhdGVneVwncyBoaWdoV2F0ZXJNYXJrIHByb3BlcnR5IGNhbiBiZSBzZXQgdG8gYW55dGhp
bmcnKTsKLQotdGVzdCgoKSA9PiB7Ci0KLSAgYXNzZXJ0X2VxdWFscyhDb3VudFF1ZXVpbmdTdHJh
dGVneS5uYW1lLCAnQ291bnRRdWV1aW5nU3RyYXRlZ3knLAotICAgICAgICAgICAgICAgICdDb3Vu
dFF1ZXVpbmdTdHJhdGVneS5uYW1lIG11c3QgYmUgIkNvdW50UXVldWluZ1N0cmF0ZWd5IicpOwot
Ci19LCAnQ291bnRRdWV1aW5nU3RyYXRlZ3kubmFtZSBpcyBjb3JyZWN0Jyk7Ci0KLWRvbmUoKTsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5LnNlcnZpY2V3b3JrZXIuaHR0cHMtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJl
YW1zL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3kuc2VydmljZXdvcmtlci5odHRwcy1leHBlY3RlZC50
eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ2NWExMzNmZTRmZjk3ZDg0MjVmOTlk
ZGRjMDk2NWEwN2NmY2ZiNzcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJl
YW1zL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3kuc2VydmljZXdvcmtlci5odHRwcy1leHBlY3RlZC50
eHQKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi0KLVBBU1MgU2VydmljZSB3b3JrZXIg
dGVzdCBzZXR1cCAKLVBBU1MgQ2FuIGNvbnN0cnVjdCBhIENvdW50UXVldWluZ1N0cmF0ZWd5IHdp
dGggYSB2YWxpZCBoaWdoIHdhdGVyIG1hcmsgCi1QQVNTIENhbiBjb25zdHJ1Y3QgYSBDb3VudFF1
ZXVpbmdTdHJhdGVneSB3aXRoIGFueSB2YWx1ZSBhcyBpdHMgaGlnaCB3YXRlciBtYXJrIAotUEFT
UyBDb3VudFF1ZXVpbmdTdHJhdGVneSBjb25zdHJ1Y3RvciBiZWhhdmVzIGFzIGV4cGVjdGVkIHdp
dGggc3RyYW5nZSBhcmd1bWVudHMgCi1QQVNTIENvdW50UXVldWluZ1N0cmF0ZWd5LnByb3RvdHlw
ZS5zaXplIHNob3VsZCB3b3JrIGdlbmVyaWNhbGx5IG9uIGl0cyB0aGlzIGFuZCBpdHMgYXJndW1l
bnRzIAotUEFTUyBDb3VudFF1ZXVpbmdTdHJhdGVneSBzaXplIGJlaGF2ZXMgYXMgZXhwZWN0ZWQg
d2l0aCBzdHJhbmdlIGFyZ3VtZW50cyAKLVBBU1MgQ291bnRRdWV1aW5nU3RyYXRlZ3kgaW5zdGFu
Y2VzIGhhdmUgdGhlIGNvcnJlY3QgcHJvcGVydGllcyAKLVBBU1MgQ291bnRRdWV1aW5nU3RyYXRl
Z3kncyBoaWdoV2F0ZXJNYXJrIHByb3BlcnR5IGNhbiBiZSBzZXQgdG8gYW55dGhpbmcgCi1QQVNT
IENvdW50UXVldWluZ1N0cmF0ZWd5Lm5hbWUgaXMgY29ycmVjdCAKLQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL2NvdW50LXF1
ZXVpbmctc3RyYXRlZ3kuc2VydmljZXdvcmtlci5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL2NvdW50LXF1ZXVpbmctc3RyYXRl
Z3kuc2VydmljZXdvcmtlci5odHRwcy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA2MTNhZTBlOTc0ODQyNGUzZDFiNmRiMGNiN2ZhNzEwN2QxMmZjYTgzLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5LnNlcnZp
Y2V3b3JrZXIuaHR0cHMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLTwhRE9D
VFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHRpdGxlPmNvdW50LXF1ZXVpbmct
c3RyYXRlZ3kuanMgc2VydmljZSB3b3JrZXIgd3JhcHBlciBmaWxlPC90aXRsZT4KLQotPHNjcmlw
dCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9
Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9
Ii9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvcmVzb3VyY2VzL3Rlc3QtaGVscGVycy5z
dWIuanMiPjwvc2NyaXB0PgotCi08c2NyaXB0PgotJ3VzZSBzdHJpY3QnOwotc2VydmljZV93b3Jr
ZXJfdGVzdCgnY291bnQtcXVldWluZy1zdHJhdGVneS5qcycsICdTZXJ2aWNlIHdvcmtlciB0ZXN0
IHNldHVwJyk7Ci08L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5LnNoYXJl
ZHdvcmtlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMvY291bnQtcXVldWluZy1zdHJhdGVneS5zaGFyZWR3b3JrZXItZXhw
ZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwOWQ1ZDI1MDlkNzg0N2U4
Y2Q2ZmU2NjA2YWE2MGNkZDMzYWE0NzRlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5LnNoYXJlZHdvcmtlci1leHBlY3RlZC50
eHQKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLUNPTlNPTEUgTUVTU0FHRTogUmVmZXJl
bmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IFNoYXJlZFdvcmtlcgotCi1IYXJuZXNzIEVy
cm9yIChGQUlMKSwgbWVzc2FnZSA9IFJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxl
OiBTaGFyZWRXb3JrZXIKLQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvY291bnQtcXVldWluZy1zdHJhdGVneS5zaGFyZWR3
b3JrZXIuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5LnNoYXJlZHdvcmtlci5odG1sCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZDQzNjEyYThlYmQ3NjE4Mjg0NDUxNjcyZDgzOGY1NWZj
NzlkYTE4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9jb3VudC1x
dWV1aW5nLXN0cmF0ZWd5LnNoYXJlZHdvcmtlci5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTEg
KzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08dGl0bGU+
Y291bnQtcXVldWluZy1zdHJhdGVneS5qcyBzaGFyZWQgd29ya2VyIHdyYXBwZXIgZmlsZTwvdGl0
bGU+Ci0KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4K
LTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4K
LQotPHNjcmlwdD4KLSd1c2Ugc3RyaWN0JzsKLWZldGNoX3Rlc3RzX2Zyb21fd29ya2VyKG5ldyBT
aGFyZWRXb3JrZXIoJ2NvdW50LXF1ZXVpbmctc3RyYXRlZ3kuanMnKSk7Ci08L3NjcmlwdD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy9nZW5lcmF0ZS10ZXN0LXdyYXBwZXJzLmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL2dlbmVyYXRlLXRlc3Qtd3JhcHBlcnMuanMKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRhNDA2ZmU3NWMyZWUzN2I2ODliM2E3YzhhM2Zh
N2YxZWQxODIzMGIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL2dl
bmVyYXRlLXRlc3Qtd3JhcHBlcnMuanMKKysrIC9kZXYvbnVsbApAQCAtMSw5OSArMCwwIEBACi0i
dXNlIHN0cmljdCI7Ci0vLyBVc2FnZTogYG5vZGUgZ2VuZXJhdGUtdGVzdC13cmFwcGVycy5qcyBq
cy1maWxlbmFtZTEuanMgW2pzLWZpbGVuYW1lMi5qcyAuLi5dYCB3aWxsIGdlbmVyYXRlOgotLy8g
LSBqcy1maWxlbmFtZTEuaHRtbAotLy8gLSBqcy1maWxlbmFtZTEuc2hhcmVkd29ya2VyLmh0bWwK
LS8vIC0ganMtZmlsZW5hbWUxLmRlZGljYXRlZHdvcmtlci5odG1sCi0vLyAtIGpzLWZpbGVuYW1l
MS5zZXJ2aWNld29ya2VyLmh0dHBzLmh0bWwKLS8vIChmb3IgZWFjaCBwYXNzZWQgZmlsZW5hbWUp
Ci0vLwotLy8gSXQgd2lsbCB0dXJuIGFueSBpbXBvcnRTY3JpcHRzIGluc2lkZSB0aGUgLmpzIGZp
bGUgaW50byA8c2NyaXB0PnMgaW4gdGhlIGJyb3dzZXIgY29udGV4dCB3cmFwcGVyLgotLy8KLS8v
IFRoaXMgY291bGQgYmVjb21lIG9ic29sZXRlIGlmIGh0dHBzOi8vZ2l0aHViLmNvbS93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2lzc3Vlcy80MjEwIGdldHMgZml4ZWQsCi0vLyBhbGxvd2luZyAuYW55
LmpzIHRvIHdvcmsgd2l0aCBhbGwgZm91ciBjb250ZXh0cy4KLQotY29uc3QgZnMgPSByZXF1aXJl
KCJmcyIpOwotY29uc3QgcGF0aCA9IHJlcXVpcmUoInBhdGgiKTsKLQotZm9yIChjb25zdCBhcmcg
b2YgcHJvY2Vzcy5hcmd2LnNsaWNlKDIpKSB7Ci0gICAgZ2VuZXJhdGVXcmFwcGVyKGFyZyk7Ci19
Ci0KLWZ1bmN0aW9uIGdlbmVyYXRlV3JhcHBlcihqc0ZpbGVuYW1lKSB7Ci0gICAgY29uc3QgaW1w
b3J0ZWRTY3JpcHRGaWxlbmFtZXMgPSBmaW5kSW1wb3J0ZWRTY3JpcHRGaWxlbmFtZXMoanNGaWxl
bmFtZSk7Ci0gICAgY29uc3QgaW1wb3J0ZWRTY3JpcHRUYWdzID0gaW1wb3J0ZWRTY3JpcHRGaWxl
bmFtZXMKLSAgICAgICAgLm1hcChmaWxlbmFtZSA9PiBgPHNjcmlwdCBzcmM9IiR7ZmlsZW5hbWV9
Ij48L3NjcmlwdD5gKQotICAgICAgICAuam9pbignXG4nKTsKLQotICAgIGNvbnN0IGJhc2VuYW1l
ID0gcGF0aC5iYXNlbmFtZShqc0ZpbGVuYW1lKTsKLSAgICBjb25zdCBub0V4dGVuc2lvbiA9IHBh
dGguYmFzZW5hbWUoanNGaWxlbmFtZSwgJy5qcycpOwotCi0gICAgY29uc3Qgb3V0cHV0cyA9IHsK
LSAgICAgICAgJy5odG1sJzogYDwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgi
PgotPHRpdGxlPiR7YmFzZW5hbWV9IGJyb3dzZXIgY29udGV4dCB3cmFwcGVyIGZpbGU8L3RpdGxl
PgotCi08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08
c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci0K
LSR7aW1wb3J0ZWRTY3JpcHRUYWdzfQotCi08c2NyaXB0IHNyYz0iJHtiYXNlbmFtZX0iPjwvc2Ny
aXB0PgotYCwKLSAgICAgICAgJy5kZWRpY2F0ZWR3b3JrZXIuaHRtbCc6IGA8IURPQ1RZUEUgaHRt
bD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTx0aXRsZT4ke2Jhc2VuYW1lfSBkZWRpY2F0ZWQg
d29ya2VyIHdyYXBwZXIgZmlsZTwvdGl0bGU+Ci0KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rl
c3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJu
ZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLQotPHNjcmlwdD4KLSd1c2Ugc3RyaWN0JzsKLWZldGNo
X3Rlc3RzX2Zyb21fd29ya2VyKG5ldyBXb3JrZXIoJyR7YmFzZW5hbWV9JykpOwotPC9zY3JpcHQ+
Ci1gLAotICAgICAgICAnLnNoYXJlZHdvcmtlci5odG1sJzogYDwhRE9DVFlQRSBodG1sPgotPG1l
dGEgY2hhcnNldD0idXRmLTgiPgotPHRpdGxlPiR7YmFzZW5hbWV9IHNoYXJlZCB3b3JrZXIgd3Jh
cHBlciBmaWxlPC90aXRsZT4KLQotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3Mu
anMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQu
anMiPjwvc2NyaXB0PgotCi08c2NyaXB0PgotJ3VzZSBzdHJpY3QnOwotZmV0Y2hfdGVzdHNfZnJv
bV93b3JrZXIobmV3IFNoYXJlZFdvcmtlcignJHtiYXNlbmFtZX0nKSk7Ci08L3NjcmlwdD4KLWAs
Ci0gICAgICAgICcuc2VydmljZXdvcmtlci5odHRwcy5odG1sJzogYDwhRE9DVFlQRSBodG1sPgot
PG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHRpdGxlPiR7YmFzZW5hbWV9IHNlcnZpY2Ugd29ya2Vy
IHdyYXBwZXIgZmlsZTwvdGl0bGU+Ci0KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJu
ZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVw
b3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvc2VydmljZS13b3JrZXJzL3NlcnZpY2Ut
d29ya2VyL3Jlc291cmNlcy90ZXN0LWhlbHBlcnMuc3ViLmpzIj48L3NjcmlwdD4KLQotPHNjcmlw
dD4KLSd1c2Ugc3RyaWN0JzsKLXNlcnZpY2Vfd29ya2VyX3Rlc3QoJyR7YmFzZW5hbWV9JywgJ1Nl
cnZpY2Ugd29ya2VyIHRlc3Qgc2V0dXAnKTsKLTwvc2NyaXB0PgotYAotICAgIH07Ci0KLSAgICBm
b3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhvdXRwdXRzKSkgewotICAg
ICAgICBjb25zdCBkZXN0RmlsZW5hbWUgPSBwYXRoLnJlc29sdmUocGF0aC5kaXJuYW1lKGpzRmls
ZW5hbWUpLCBgJHtub0V4dGVuc2lvbn0ke2tleX1gKTsKLSAgICAgICAgZnMud3JpdGVGaWxlU3lu
YyhkZXN0RmlsZW5hbWUsIHZhbHVlLCB7IGVuY29kaW5nOiAndXRmLTgnIH0pOwotICAgIH0KLX0K
LQotZnVuY3Rpb24gZmluZEltcG9ydGVkU2NyaXB0RmlsZW5hbWVzKGlucHV0RmlsZW5hbWUpIHsK
LSAgICBjb25zdCBzY3JpcHRDb250ZW50cyA9IGZzLnJlYWRGaWxlU3luYyhpbnB1dEZpbGVuYW1l
LCB7IGVuY29kaW5nOiAndXRmLTgnIH0pOwotCi0gICAgY29uc3QgcmVnRXhwID0gL3NlbGZcLmlt
cG9ydFNjcmlwdHNcKCcoW14nXSspJ1wpOy9nOwotCi0gICAgbGV0IHJlc3VsdCA9IFtdOwotICAg
IGxldCBtYXRjaDsKLSAgICB3aGlsZSAobWF0Y2ggPSByZWdFeHAuZXhlYyhzY3JpcHRDb250ZW50
cykpIHsKLSAgICAgICAgcmVzdWx0LnB1c2gobWF0Y2hbMV0pOwotICAgIH0KLQotICAgIHJldHVy
biByZXN1bHQuZmlsdGVyKHggPT4geCAhPT0gJy9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMnKTsK
LX0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy9pZGxoYXJuZXNzLmFueS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvaWRsaGFybmVzcy5hbnktZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjNhZDZhNjg2NTg0ZGExMmE2MzMzZTg3NzE0ZWM3MjBlZjRkYTE2
ZjUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMvaWRsaGFybmVzcy5hbnktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MyBAQAorCitGQUlMIGlkbF90ZXN0IHNldHVwIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVj
dGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIkVycm9yIGZldGNoaW5nIC9pbnRlcmZhY2VzL3N0cmVh
bXMuaWRsLiIKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zL2lkbGhhcm5lc3MuYW55Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvaWRsaGFybmVzcy5hbnkuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4yMzgyOTEzNTI4ZTY5M2IzYTVkNTZjNjYwYTQ1MDYwOTgwYjU0OGMzCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL2lkbGhhcm5lc3MuYW55Lmh0bWwKQEAgLTAsMCArMSBAQAorPCEtLSBUaGlzIGZp
bGUgaXMgcmVxdWlyZWQgZm9yIFdlYktpdCB0ZXN0IGluZnJhc3RydWN0dXJlIHRvIHJ1biB0aGUg
dGVtcGxhdGVkIHRlc3QgLS0+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL2lk
bGhhcm5lc3MuYW55LmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL2lkbGhhcm5lc3MuYW55LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQyYTE3ZGE1OGM1YWUz
OTAyMzRlZTM5NDMwM2FhMmZlNmE3MmViZGQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvaWRsaGFybmVzcy5hbnku
anMKQEAgLTAsMCArMSw3OSBAQAorLy8gTUVUQTogZ2xvYmFsPXdpbmRvdyx3b3JrZXIKKy8vIE1F
VEE6IHNjcmlwdD0vcmVzb3VyY2VzL1dlYklETFBhcnNlci5qcworLy8gTUVUQTogc2NyaXB0PS9y
ZXNvdXJjZXMvaWRsaGFybmVzcy5qcworLy8gTUVUQTogdGltZW91dD1sb25nCisKK2lkbF90ZXN0
KAorICBbJ3N0cmVhbXMnXSwKKyAgWydkb20nXSwgLy8gZm9yIEFib3J0U2lnbmFsCisgIGFzeW5j
IGlkbF9hcnJheSA9PiB7CisgICAgLy8gRW1wdHkgdHJ5L2NhdGNoZXMgZW5zdXJlIHRoYXQgaWYg
c29tZXRoaW5nIGlzbid0IGltcGxlbWVudGVkIChlLmcuLCByZWFkYWJsZSBieXRlIHN0cmVhbXMs
IG9yIHdyaXRhYmxlIHN0cmVhbXMpCisgICAgLy8gdGhlIGhhcm5lc3Mgc3RpbGwgc2V0cyB0aGlu
Z3MgdXAgY29ycmVjdGx5LiBOb3RlIHRoYXQgdGhlIGNvcnJlc3BvbmRpbmcgaW50ZXJmYWNlIHRl
c3RzIHdpbGwgc3RpbGwgZmFpbC4KKworICAgIHRyeSB7CisgICAgICBuZXcgUmVhZGFibGVTdHJl
YW0oeworICAgICAgICBzdGFydChjKSB7CisgICAgICAgICAgc2VsZi5yZWFkYWJsZVN0cmVhbURl
ZmF1bHRDb250cm9sbGVyID0gYzsKKyAgICAgICAgfQorICAgICAgfSk7CisgICAgfSBjYXRjaCB7
fQorCisgICAgdHJ5IHsKKyAgICAgIG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgICAgIHN0YXJ0
KGMpIHsKKyAgICAgICAgICBzZWxmLnJlYWRhYmxlQnl0ZVN0cmVhbUNvbnRyb2xsZXIgPSBjOwor
ICAgICAgICB9LAorICAgICAgICB0eXBlOiAnYnl0ZXMnCisgICAgICB9KTsKKyAgICB9IGNhdGNo
IHt9CisKKyAgICB0cnkgeworICAgICAgbGV0IHJlc29sdmVQdWxsQ2FsbGVkUHJvbWlzZTsKKyAg
ICAgIGNvbnN0IHB1bGxDYWxsZWRQcm9taXNlID0gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7Cisg
ICAgICAgIHJlc29sdmVQdWxsQ2FsbGVkUHJvbWlzZSA9IHJlc29sdmU7CisgICAgICB9KTsKKyAg
ICAgIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgICAgIHB1bGwoYykg
eworICAgICAgICAgIHNlbGYucmVhZGFibGVTdHJlYW1CeW9iUmVxdWVzdCA9IGMuYnlvYlJlcXVl
c3Q7CisgICAgICAgICAgcmVzb2x2ZVB1bGxDYWxsZWRQcm9taXNlKCk7CisgICAgICAgIH0sCisg
ICAgICAgIHR5cGU6ICdieXRlcycKKyAgICAgIH0pOworICAgICAgY29uc3QgcmVhZGVyID0gc3Ry
ZWFtLmdldFJlYWRlcih7IG1vZGU6ICdieW9iJyB9KTsKKyAgICAgIHJlYWRlci5yZWFkKG5ldyBV
aW50OEFycmF5KDEpKTsKKyAgICAgIGF3YWl0IHB1bGxDYWxsZWRQcm9taXNlOworICAgIH0gY2F0
Y2gge30KKworICAgIHRyeSB7CisgICAgICBuZXcgV3JpdGFibGVTdHJlYW0oeworICAgICAgICBz
dGFydChjKSB7CisgICAgICAgICAgc2VsZi53cml0YWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVy
ID0gYzsKKyAgICAgICAgfQorICAgICAgfSk7CisgICAgfSBjYXRjaCB7fQorCisgICAgdHJ5IHsK
KyAgICAgIG5ldyBUcmFuc2Zvcm1TdHJlYW0oeworICAgICAgICBzdGFydChjKSB7CisgICAgICAg
ICAgc2VsZi50cmFuc2Zvcm1TdHJlYW1EZWZhdWx0Q29udHJvbGxlciA9IGM7CisgICAgICAgIH0K
KyAgICAgIH0pOworICAgIH0gY2F0Y2gge30KKworICAgIGlkbF9hcnJheS5hZGRfb2JqZWN0cyh7
CisgICAgICBSZWFkYWJsZVN0cmVhbTogWyJuZXcgUmVhZGFibGVTdHJlYW0oKSJdLAorICAgICAg
UmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyOiBbIihuZXcgUmVhZGFibGVTdHJlYW0oKSkuZ2V0
UmVhZGVyKCkiXSwKKyAgICAgIFJlYWRhYmxlU3RyZWFtQllPQlJlYWRlcjogWyIobmV3IFJlYWRh
YmxlU3RyZWFtKHsgdHlwZTogJ2J5dGVzJyB9KSkuZ2V0UmVhZGVyKHsgbW9kZTogJ2J5b2InIH0p
Il0sCisgICAgICBSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyOiBbInNlbGYucmVhZGFi
bGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlciJdLAorICAgICAgUmVhZGFibGVCeXRlU3RyZWFtQ29u
dHJvbGxlcjogWyJzZWxmLnJlYWRhYmxlQnl0ZVN0cmVhbUNvbnRyb2xsZXIiXSwKKyAgICAgIFJl
YWRhYmxlU3RyZWFtQllPQlJlcXVlc3Q6IFsic2VsZi5yZWFkYWJsZVN0cmVhbUJ5b2JSZXF1ZXN0
Il0sCisgICAgICBXcml0YWJsZVN0cmVhbTogWyJuZXcgV3JpdGFibGVTdHJlYW0oKSJdLAorICAg
ICAgV3JpdGFibGVTdHJlYW1EZWZhdWx0V3JpdGVyOiBbIihuZXcgV3JpdGFibGVTdHJlYW0oKSku
Z2V0V3JpdGVyKCkiXSwKKyAgICAgIFdyaXRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXI6IFsi
c2VsZi53cml0YWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyIl0sCisgICAgICBUcmFuc2Zvcm1T
dHJlYW06IFsibmV3IFRyYW5zZm9ybVN0cmVhbSgpIl0sCisgICAgICBUcmFuc2Zvcm1TdHJlYW1E
ZWZhdWx0Q29udHJvbGxlcjogWyJzZWxmLnRyYW5zZm9ybVN0cmVhbURlZmF1bHRDb250cm9sbGVy
Il0sCisgICAgICBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5OiBbIm5ldyBCeXRlTGVuZ3RoUXVl
dWluZ1N0cmF0ZWd5KHsgaGlnaFdhdGVyTWFyazogNSB9KSJdLAorICAgICAgQ291bnRRdWV1aW5n
U3RyYXRlZ3k6IFsibmV3IENvdW50UXVldWluZ1N0cmF0ZWd5KHsgaGlnaFdhdGVyTWFyazogNSB9
KSJdCisgICAgfSk7CisgIH0KKyk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvaWRsaGFybmVzcy5hbnkud29ya2VyLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy9pZGxoYXJuZXNzLmFueS53b3JrZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNhZDZh
Njg2NTg0ZGExMmE2MzMzZTg3NzE0ZWM3MjBlZjRkYTE2ZjUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvaWRsaGFy
bmVzcy5hbnkud29ya2VyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKKworRkFJTCBpZGxf
dGVzdCBzZXR1cCBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTog
b2JqZWN0ICJFcnJvciBmZXRjaGluZyAvaW50ZXJmYWNlcy9zdHJlYW1zLmlkbC4iCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy9pZGxoYXJuZXNzLmFueS53b3JrZXIuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9pZGxoYXJuZXNzLmFueS53b3JrZXIuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4yMzgyOTEzNTI4ZTY5M2IzYTVkNTZjNjYwYTQ1MDYwOTgwYjU0OGMzCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
dHJlYW1zL2lkbGhhcm5lc3MuYW55Lndvcmtlci5odG1sCkBAIC0wLDAgKzEgQEAKKzwhLS0gVGhp
cyBmaWxlIGlzIHJlcXVpcmVkIGZvciBXZWJLaXQgdGVzdCBpbmZyYXN0cnVjdHVyZSB0byBydW4g
dGhlIHRlbXBsYXRlZCB0ZXN0IC0tPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy9waXBpbmcvYWJvcnQuYW55LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvYWJvcnQuYW55LWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5iZGZmMjM1MDY2MjdjNzU1MDc5ZTk2NDVjZDllOTVjODJmMTQ3ZGY3Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL3BpcGluZy9hYm9ydC5hbnktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNTgg
QEAKK0NPTlNPTEUgTUVTU0FHRTogVW5oYW5kbGVkIFByb21pc2UgUmVqZWN0aW9uOiBmYWlsZWQg
dG8gYWJvcnQKK0NPTlNPTEUgTUVTU0FHRTogVW5oYW5kbGVkIFByb21pc2UgUmVqZWN0aW9uOiBU
eXBlRXJyb3I6IGNhbmNlbCgpIGNhbGxlZCBvbiBhIHJlYWRlciBvd25lZCBieSBubyByZWFkYWJs
ZSBzdHJlYW0KK0NPTlNPTEUgTUVTU0FHRTogVW5oYW5kbGVkIFByb21pc2UgUmVqZWN0aW9uOiBm
YWlsZWQgdG8gYWJvcnQKK0NPTlNPTEUgTUVTU0FHRTogVW5oYW5kbGVkIFByb21pc2UgUmVqZWN0
aW9uOiBUeXBlRXJyb3I6IGNhbmNlbCgpIGNhbGxlZCBvbiBhIHJlYWRlciBvd25lZCBieSBubyBy
ZWFkYWJsZSBzdHJlYW0KK0NPTlNPTEUgTUVTU0FHRTogVW5oYW5kbGVkIFByb21pc2UgUmVqZWN0
aW9uOiBmYWlsZWQgdG8gYWJvcnQKK0NPTlNPTEUgTUVTU0FHRTogVW5oYW5kbGVkIFByb21pc2Ug
UmVqZWN0aW9uOiBUeXBlRXJyb3I6IGNhbmNlbCgpIGNhbGxlZCBvbiBhIHJlYWRlciBvd25lZCBi
eSBubyByZWFkYWJsZSBzdHJlYW0KK0NPTlNPTEUgTUVTU0FHRTogVW5oYW5kbGVkIFByb21pc2Ug
UmVqZWN0aW9uOiBmYWlsZWQgdG8gYWJvcnQKK0NPTlNPTEUgTUVTU0FHRTogVW5oYW5kbGVkIFBy
b21pc2UgUmVqZWN0aW9uOiBUeXBlRXJyb3I6IGNhbmNlbCgpIGNhbGxlZCBvbiBhIHJlYWRlciBv
d25lZCBieSBubyByZWFkYWJsZSBzdHJlYW0KK0NPTlNPTEUgTUVTU0FHRTogVW5oYW5kbGVkIFBy
b21pc2UgUmVqZWN0aW9uOiBmYWlsZWQgdG8gYWJvcnQKK0NPTlNPTEUgTUVTU0FHRTogVW5oYW5k
bGVkIFByb21pc2UgUmVqZWN0aW9uOiBUeXBlRXJyb3I6IGNhbmNlbCgpIGNhbGxlZCBvbiBhIHJl
YWRlciBvd25lZCBieSBubyByZWFkYWJsZSBzdHJlYW0KK0NPTlNPTEUgTUVTU0FHRTogVW5oYW5k
bGVkIFByb21pc2UgUmVqZWN0aW9uOiBmYWlsZWQgdG8gYWJvcnQKK0NPTlNPTEUgTUVTU0FHRTog
VW5oYW5kbGVkIFByb21pc2UgUmVqZWN0aW9uOiBUeXBlRXJyb3I6IGNhbmNlbCgpIGNhbGxlZCBv
biBhIHJlYWRlciBvd25lZCBieSBubyByZWFkYWJsZSBzdHJlYW0KK0NPTlNPTEUgTUVTU0FHRTog
VW5oYW5kbGVkIFByb21pc2UgUmVqZWN0aW9uOiBmYWlsZWQgdG8gYWJvcnQKK0NPTlNPTEUgTUVT
U0FHRTogVW5oYW5kbGVkIFByb21pc2UgUmVqZWN0aW9uOiBUeXBlRXJyb3I6IGNhbmNlbCgpIGNh
bGxlZCBvbiBhIHJlYWRlciBvd25lZCBieSBubyByZWFkYWJsZSBzdHJlYW0KK0NPTlNPTEUgTUVT
U0FHRTogVW5oYW5kbGVkIFByb21pc2UgUmVqZWN0aW9uOiBmYWlsZWQgdG8gYWJvcnQKK0NPTlNP
TEUgTUVTU0FHRTogVW5oYW5kbGVkIFByb21pc2UgUmVqZWN0aW9uOiBmYWlsZWQgdG8gYWJvcnQK
K0NPTlNPTEUgTUVTU0FHRTogVW5oYW5kbGVkIFByb21pc2UgUmVqZWN0aW9uOiBmYWlsZWQgdG8g
YWJvcnQKK0NPTlNPTEUgTUVTU0FHRTogVW5oYW5kbGVkIFByb21pc2UgUmVqZWN0aW9uOiBmYWls
ZWQgdG8gYWJvcnQKK0NPTlNPTEUgTUVTU0FHRTogVW5oYW5kbGVkIFByb21pc2UgUmVqZWN0aW9u
OiBmYWlsZWQgdG8gYWJvcnQKK0NPTlNPTEUgTUVTU0FHRTogVW5oYW5kbGVkIFByb21pc2UgUmVq
ZWN0aW9uOiBUeXBlRXJyb3I6IGNhbmNlbCgpIGNhbGxlZCBvbiBhIHJlYWRlciBvd25lZCBieSBu
byByZWFkYWJsZSBzdHJlYW0KK0NPTlNPTEUgTUVTU0FHRTogVW5oYW5kbGVkIFByb21pc2UgUmVq
ZWN0aW9uOiBmYWlsZWQgdG8gYWJvcnQKK0NPTlNPTEUgTUVTU0FHRTogVW5oYW5kbGVkIFByb21p
c2UgUmVqZWN0aW9uOiBUeXBlRXJyb3I6IGNhbmNlbCgpIGNhbGxlZCBvbiBhIHJlYWRlciBvd25l
ZCBieSBubyByZWFkYWJsZSBzdHJlYW0KK0NPTlNPTEUgTUVTU0FHRTogVW5oYW5kbGVkIFByb21p
c2UgUmVqZWN0aW9uOiBlcnJvcjE6IGVycm9yMQorQ09OU09MRSBNRVNTQUdFOiBVbmhhbmRsZWQg
UHJvbWlzZSBSZWplY3Rpb246IGZhaWxlZCB0byBhYm9ydAorQ09OU09MRSBNRVNTQUdFOiBVbmhh
bmRsZWQgUHJvbWlzZSBSZWplY3Rpb246IFR5cGVFcnJvcjogY2FuY2VsKCkgY2FsbGVkIG9uIGEg
cmVhZGVyIG93bmVkIGJ5IG5vIHJlYWRhYmxlIHN0cmVhbQorQ09OU09MRSBNRVNTQUdFOiBVbmhh
bmRsZWQgUHJvbWlzZSBSZWplY3Rpb246IGVycm9yMjogZXJyb3IyCitDT05TT0xFIE1FU1NBR0U6
IFVuaGFuZGxlZCBQcm9taXNlIFJlamVjdGlvbjogVHlwZUVycm9yOiBjYW5jZWwoKSBjYWxsZWQg
b24gYSByZWFkZXIgb3duZWQgYnkgbm8gcmVhZGFibGUgc3RyZWFtCitDT05TT0xFIE1FU1NBR0U6
IFVuaGFuZGxlZCBQcm9taXNlIFJlamVjdGlvbjogZXJyb3IxOiBlcnJvcjEKK0NPTlNPTEUgTUVT
U0FHRTogVW5oYW5kbGVkIFByb21pc2UgUmVqZWN0aW9uOiBlcnJvcjE6IGVycm9yMQorQ09OU09M
RSBNRVNTQUdFOiBVbmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rpb246IGVycm9yMTogZXJyb3IxCitD
T05TT0xFIE1FU1NBR0U6IFVuaGFuZGxlZCBQcm9taXNlIFJlamVjdGlvbjogZXJyb3IxOiBlcnJv
cjEKKworSGFybmVzcyBFcnJvciAoRkFJTCksIG1lc3NhZ2UgPSBVbmhhbmRsZWQgcmVqZWN0aW9u
OiBlcnJvcjEKKworRkFJTCBhIHNpZ25hbCBhcmd1bWVudCAnbnVsbCcgc2hvdWxkIGNhdXNlIHBp
cGVUbygpIHRvIHJlamVjdCBwcm9taXNlX3JlamVjdHNfanM6IHBpcGVUbyBzaG91bGQgcmVqZWN0
IGZ1bmN0aW9uICJmdW5jdGlvbiAoKSB7IHRocm93IGUgfSIgdGhyZXcgImZhaWxlZCB0byBhYm9y
dCIgd2l0aCB0eXBlICJzdHJpbmciLCBub3QgYW4gb2JqZWN0CitGQUlMIGEgc2lnbmFsIGFyZ3Vt
ZW50ICdBYm9ydFNpZ25hbCcgc2hvdWxkIGNhdXNlIHBpcGVUbygpIHRvIHJlamVjdCBwcm9taXNl
X3JlamVjdHNfanM6IHBpcGVUbyBzaG91bGQgcmVqZWN0IGZ1bmN0aW9uICJmdW5jdGlvbiAoKSB7
IHRocm93IGUgfSIgdGhyZXcgImZhaWxlZCB0byBhYm9ydCIgd2l0aCB0eXBlICJzdHJpbmciLCBu
b3QgYW4gb2JqZWN0CitGQUlMIGEgc2lnbmFsIGFyZ3VtZW50ICd0cnVlJyBzaG91bGQgY2F1c2Ug
cGlwZVRvKCkgdG8gcmVqZWN0IHByb21pc2VfcmVqZWN0c19qczogcGlwZVRvIHNob3VsZCByZWpl
Y3QgZnVuY3Rpb24gImZ1bmN0aW9uICgpIHsgdGhyb3cgZSB9IiB0aHJldyAiZmFpbGVkIHRvIGFi
b3J0IiB3aXRoIHR5cGUgInN0cmluZyIsIG5vdCBhbiBvYmplY3QKK0ZBSUwgYSBzaWduYWwgYXJn
dW1lbnQgJy0xJyBzaG91bGQgY2F1c2UgcGlwZVRvKCkgdG8gcmVqZWN0IHByb21pc2VfcmVqZWN0
c19qczogcGlwZVRvIHNob3VsZCByZWplY3QgZnVuY3Rpb24gImZ1bmN0aW9uICgpIHsgdGhyb3cg
ZSB9IiB0aHJldyAiZmFpbGVkIHRvIGFib3J0IiB3aXRoIHR5cGUgInN0cmluZyIsIG5vdCBhbiBv
YmplY3QKK0ZBSUwgYSBzaWduYWwgYXJndW1lbnQgJ1tvYmplY3QgQWJvcnRTaWduYWxdJyBzaG91
bGQgY2F1c2UgcGlwZVRvKCkgdG8gcmVqZWN0IHByb21pc2VfcmVqZWN0c19qczogcGlwZVRvIHNo
b3VsZCByZWplY3QgZnVuY3Rpb24gImZ1bmN0aW9uICgpIHsgdGhyb3cgZSB9IiB0aHJldyAiZmFp
bGVkIHRvIGFib3J0IiB3aXRoIHR5cGUgInN0cmluZyIsIG5vdCBhbiBvYmplY3QKK0ZBSUwgYW4g
YWJvcnRlZCBzaWduYWwgc2hvdWxkIGNhdXNlIHRoZSB3cml0YWJsZSBzdHJlYW0gdG8gcmVqZWN0
IHdpdGggYW4gQWJvcnRFcnJvciBwcm9taXNlX3JlamVjdHNfZG9tOiBwaXBlVG8gc2hvdWxkIHJl
amVjdCBmdW5jdGlvbiAiZnVuY3Rpb24gKCkgeyB0aHJvdyBlIH0iIHRocmV3ICJmYWlsZWQgdG8g
YWJvcnQiIHdpdGggdHlwZSAic3RyaW5nIiwgbm90IGFuIG9iamVjdAorRkFJTCBhbGwgdGhlIEFi
b3J0RXJyb3Igb2JqZWN0cyBzaG91bGQgYmUgdGhlIHNhbWUgb2JqZWN0IHByb21pc2VfdGVzdDog
VW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVFcnJvcjogd3MuZ2V0
V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdy
aXRlcicgaXMgdW5kZWZpbmVkKSIKK0ZBSUwgcHJldmVudENhbmNlbCBzaG91bGQgcHJldmVudCBj
YW5jZWxpbmcgdGhlIHJlYWRhYmxlIHByb21pc2VfcmVqZWN0c19kb206IHBpcGVUbyBzaG91bGQg
cmVqZWN0IGZ1bmN0aW9uICJmdW5jdGlvbiAoKSB7IHRocm93IGUgfSIgdGhyZXcgImZhaWxlZCB0
byBhYm9ydCIgd2l0aCB0eXBlICJzdHJpbmciLCBub3QgYW4gb2JqZWN0CitGQUlMIHByZXZlbnRB
Ym9ydCBzaG91bGQgcHJldmVudCBhYm9ydGluZyB0aGUgcmVhZGFibGUgcHJvbWlzZV9yZWplY3Rz
X2RvbTogcGlwZVRvIHNob3VsZCByZWplY3QgZnVuY3Rpb24gImZ1bmN0aW9uICgpIHsgdGhyb3cg
ZSB9IiB0aHJldyAiZmFpbGVkIHRvIGFib3J0IiB3aXRoIHR5cGUgInN0cmluZyIsIG5vdCBhbiBv
YmplY3QKK0ZBSUwgcHJldmVudENhbmNlbCBhbmQgcHJldmVudEFib3J0IHNob3VsZCBwcmV2ZW50
IGNhbmNlbGluZyB0aGUgcmVhZGFibGUgYW5kIGFib3J0aW5nIHRoZSByZWFkYWJsZSBwcm9taXNl
X3JlamVjdHNfZG9tOiBwaXBlVG8gc2hvdWxkIHJlamVjdCBmdW5jdGlvbiAiZnVuY3Rpb24gKCkg
eyB0aHJvdyBlIH0iIHRocmV3ICJmYWlsZWQgdG8gYWJvcnQiIHdpdGggdHlwZSAic3RyaW5nIiwg
bm90IGFuIG9iamVjdAorRkFJTCBhYm9ydCBzaG91bGQgcHJldmVudCBmdXJ0aGVyIHJlYWRzIGFz
c2VydF91bnJlYWNoZWQ6IFNob3VsZCBoYXZlIHJlamVjdGVkOiBwaXBlVG8gc2hvdWxkIHJlamVj
dCBSZWFjaGVkIHVucmVhY2hhYmxlIGNvZGUKK0ZBSUwgYWxsIHBlbmRpbmcgd3JpdGVzIHNob3Vs
ZCBjb21wbGV0ZSBvbiBhYm9ydCBhc3NlcnRfdW5yZWFjaGVkOiBTaG91bGQgaGF2ZSByZWplY3Rl
ZDogcGlwZVRvIHNob3VsZCByZWplY3QgUmVhY2hlZCB1bnJlYWNoYWJsZSBjb2RlCitGQUlMIGEg
cmVqZWN0aW9uIGZyb20gdW5kZXJseWluZ1NvdXJjZS5jYW5jZWwoKSBzaG91bGQgYmUgcmV0dXJu
ZWQgYnkgcGlwZVRvKCkgcHJvbWlzZV9yZWplY3RzX2V4YWN0bHk6IHBpcGVUbyBzaG91bGQgcmVq
ZWN0IGZ1bmN0aW9uICJmdW5jdGlvbiAoKSB7IHRocm93IGUgfSIgdGhyZXcgImZhaWxlZCB0byBh
Ym9ydCIgYnV0IHdlIGV4cGVjdGVkIGl0IHRvIHRocm93IG9iamVjdCAiZXJyb3IxOiBlcnJvcjEi
CitGQUlMIGEgcmVqZWN0aW9uIGZyb20gdW5kZXJseWluZ1NpbmsuYWJvcnQoKSBzaG91bGQgYmUg
cmV0dXJuZWQgYnkgcGlwZVRvKCkgcHJvbWlzZV9yZWplY3RzX2V4YWN0bHk6IHBpcGVUbyBzaG91
bGQgcmVqZWN0IGZ1bmN0aW9uICJmdW5jdGlvbiAoKSB7IHRocm93IGUgfSIgdGhyZXcgImZhaWxl
ZCB0byBhYm9ydCIgYnV0IHdlIGV4cGVjdGVkIGl0IHRvIHRocm93IG9iamVjdCAiZXJyb3IxOiBl
cnJvcjEiCitGQUlMIGEgcmVqZWN0aW9uIGZyb20gdW5kZXJseWluZ1NpbmsuYWJvcnQoKSBzaG91
bGQgYmUgcHJlZmVycmVkIHRvIG9uZSBmcm9tIHVuZGVybHlpbmdTb3VyY2UuY2FuY2VsKCkgcHJv
bWlzZV9yZWplY3RzX2V4YWN0bHk6IHBpcGVUbyBzaG91bGQgcmVqZWN0IGZ1bmN0aW9uICJmdW5j
dGlvbiAoKSB7IHRocm93IGUgfSIgdGhyZXcgImZhaWxlZCB0byBhYm9ydCIgYnV0IHdlIGV4cGVj
dGVkIGl0IHRvIHRocm93IG9iamVjdCAiZXJyb3IyOiBlcnJvcjIiCitGQUlMIGFib3J0IHNpZ25h
bCB0YWtlcyBwcmlvcml0eSBvdmVyIGNsb3NlZCByZWFkYWJsZSBhc3NlcnRfdW5yZWFjaGVkOiBT
aG91bGQgaGF2ZSByZWplY3RlZDogcGlwZVRvIHNob3VsZCByZWplY3QgUmVhY2hlZCB1bnJlYWNo
YWJsZSBjb2RlCitGQUlMIGFib3J0IHNpZ25hbCB0YWtlcyBwcmlvcml0eSBvdmVyIGVycm9yZWQg
cmVhZGFibGUgcHJvbWlzZV9yZWplY3RzX2RvbTogcGlwZVRvIHNob3VsZCByZWplY3QgZnVuY3Rp
b24gImZ1bmN0aW9uICgpIHsgdGhyb3cgZSB9IiB0aHJldyBvYmplY3QgImVycm9yMTogZXJyb3Ix
IiB0aGF0IGlzIG5vdCBhIERPTUV4Y2VwdGlvbiBBYm9ydEVycm9yOiBwcm9wZXJ0eSAiY29kZSIg
aXMgZXF1YWwgdG8gdW5kZWZpbmVkLCBleHBlY3RlZCAyMAorRkFJTCBhYm9ydCBzaWduYWwgdGFr
ZXMgcHJpb3JpdHkgb3ZlciBjbG9zZWQgd3JpdGFibGUgd3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1
bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicgaXMgdW5kZWZpbmVk
KQorRkFJTCBhYm9ydCBzaWduYWwgdGFrZXMgcHJpb3JpdHkgb3ZlciBlcnJvcmVkIHdyaXRhYmxl
IGNvbnRyb2xsZXIuZXJyb3IgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnY29udHJvbGxlci5lcnJv
cihlcnJvcjEpJywgJ2NvbnRyb2xsZXIuZXJyb3InIGlzIHVuZGVmaW5lZCkKK0ZBSUwgYWJvcnQg
c2hvdWxkIGRvIG5vdGhpbmcgYWZ0ZXIgdGhlIHJlYWRhYmxlIGlzIGNsb3NlZCBwcm9taXNlX3Rl
c3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJUeXBlRXJyb3I6IHdz
LmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5n
ZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkiCitGQUlMIGFib3J0IHNob3VsZCBkbyBub3RoaW5nIGFm
dGVyIHRoZSByZWFkYWJsZSBpcyBlcnJvcmVkIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVj
dGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVFcnJvcjogd3MuZ2V0V3JpdGVyIGlzIG5vdCBh
IGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicgaXMgdW5kZWZp
bmVkKSIKK0ZBSUwgYWJvcnQgc2hvdWxkIGRvIG5vdGhpbmcgYWZ0ZXIgdGhlIHJlYWRhYmxlIGlz
IGVycm9yZWQsIGV2ZW4gd2l0aCBwZW5kaW5nIHdyaXRlcyBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxl
ZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJUeXBlRXJyb3I6IHdzLmdldFdyaXRlciBp
cyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlz
IHVuZGVmaW5lZCkiCitGQUlMIGFib3J0IHNob3VsZCBkbyBub3RoaW5nIGFmdGVyIHRoZSB3cml0
YWJsZSBpcyBlcnJvcmVkIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZh
bHVlOiBvYmplY3QgIlR5cGVFcnJvcjogd3JpdGVDb250cm9sbGVyLmVycm9yIGlzIG5vdCBhIGZ1
bmN0aW9uLiAoSW4gJ3dyaXRlQ29udHJvbGxlci5lcnJvcihlcnJvcjEpJywgJ3dyaXRlQ29udHJv
bGxlci5lcnJvcicgaXMgdW5kZWZpbmVkKSIKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9hYm9ydC5hbnkuaHRt
bCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9w
aXBpbmcvYWJvcnQuYW55Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjM4MjkxMzUyOGU2OTNiM2E1ZDU2YzY2
MGE0NTA2MDk4MGI1NDhjMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvYWJvcnQuYW55Lmh0bWwKQEAg
LTAsMCArMSBAQAorPCEtLSBUaGlzIGZpbGUgaXMgcmVxdWlyZWQgZm9yIFdlYktpdCB0ZXN0IGlu
ZnJhc3RydWN0dXJlIHRvIHJ1biB0aGUgdGVtcGxhdGVkIHRlc3QgLS0+ClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9hYm9ydC5hbnkuanMgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Fib3J0LmFueS5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4zZmUwMjlkZTk1YTFiODkyMWUzOGI0ZjcyNTViZTNjNTZkMDA3ZTQ1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL3BpcGluZy9hYm9ydC5hbnkuanMKQEAgLTAsMCArMSwzNzUgQEAKKy8vIE1F
VEE6IGdsb2JhbD13aW5kb3csd29ya2VyLGpzc2hlbGwKKy8vIE1FVEE6IHNjcmlwdD0uLi9yZXNv
dXJjZXMvcmVjb3JkaW5nLXN0cmVhbXMuanMKKy8vIE1FVEE6IHNjcmlwdD0uLi9yZXNvdXJjZXMv
dGVzdC11dGlscy5qcworJ3VzZSBzdHJpY3QnOworCisvLyBUZXN0cyBmb3IgdGhlIHVzZSBvZiBw
aXBlVG8gd2l0aCBBYm9ydFNpZ25hbC4KKy8vIFRoZXJlIGlzIHNvbWUgZXh0cmEgY29tcGxleGl0
eSB0byBhdm9pZCB0aW1lb3V0cyBpbiBlbnZpcm9ubWVudHMgd2hlcmUgYWJvcnQgaXMgbm90IGlt
cGxlbWVudGVkLgorCitjb25zdCBlcnJvcjEgPSBuZXcgRXJyb3IoJ2Vycm9yMScpOworZXJyb3Ix
Lm5hbWUgPSAnZXJyb3IxJzsKK2NvbnN0IGVycm9yMiA9IG5ldyBFcnJvcignZXJyb3IyJyk7Citl
cnJvcjIubmFtZSA9ICdlcnJvcjInOworCitjb25zdCBlcnJvck9uUHVsbCA9IHsKKyAgcHVsbChj
b250cm9sbGVyKSB7CisgICAgLy8gVGhpcyB3aWxsIGNhdXNlIHRoZSB0ZXN0IHRvIGVycm9yIGlm
IHBpcGVUbyBhYm9ydCBpcyBub3QgaW1wbGVtZW50ZWQuCisgICAgY29udHJvbGxlci5lcnJvcign
ZmFpbGVkIHRvIGFib3J0Jyk7CisgIH0KK307CisKKy8vIFRvIHN0b3AgcHVsbCgpIGJlaW5nIGNh
bGxlZCBpbW1lZGlhdGVseSB3aGVuIHRoZSBzdHJlYW0gaXMgY3JlYXRlZCwgd2UgbmVlZCB0byBz
ZXQgaGlnaFdhdGVyTWFyayB0byAwLgorY29uc3QgaHdtMCA9IHsgaGlnaFdhdGVyTWFyazogMCB9
OworCitmb3IgKGNvbnN0IGludmFsaWRTaWduYWwgb2YgW251bGwsICdBYm9ydFNpZ25hbCcsIHRy
dWUsIC0xLCBPYmplY3QuY3JlYXRlKEFib3J0U2lnbmFsLnByb3RvdHlwZSldKSB7CisgIHByb21p
c2VfdGVzdCh0ID0+IHsKKyAgICBjb25zdCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKGVy
cm9yT25QdWxsLCBod20wKTsKKyAgICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFt
KCk7CisgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19qcyh0LCBUeXBlRXJyb3IsIHJzLnBpcGVU
byh3cywgeyBzaWduYWw6IGludmFsaWRTaWduYWwgfSksICdwaXBlVG8gc2hvdWxkIHJlamVjdCcp
CisgICAgICAgIC50aGVuKCgpID0+IHsKKyAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJzLmV2ZW50
cy5sZW5ndGgsIDAsICdubyBSZWFkYWJsZVN0cmVhbSBtZXRob2RzIHNob3VsZCBoYXZlIGJlZW4g
Y2FsbGVkJyk7CisgICAgICAgICAgYXNzZXJ0X2VxdWFscyh3cy5ldmVudHMubGVuZ3RoLCAwLCAn
bm8gV3JpdGFibGVTdHJlYW0gbWV0aG9kcyBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCcpOworICAg
ICAgICB9KTsKKyAgfSwgYGEgc2lnbmFsIGFyZ3VtZW50ICcke2ludmFsaWRTaWduYWx9JyBzaG91
bGQgY2F1c2UgcGlwZVRvKCkgdG8gcmVqZWN0YCk7Cit9CisKK3Byb21pc2VfdGVzdCh0ID0+IHsK
KyAgY29uc3QgcnMgPSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbShlcnJvck9uUHVsbCwgaHdtMCk7
CisgIGNvbnN0IHdzID0gbmV3IFdyaXRhYmxlU3RyZWFtKCk7CisgIGNvbnN0IGFib3J0Q29udHJv
bGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTsKKyAgY29uc3Qgc2lnbmFsID0gYWJvcnRDb250
cm9sbGVyLnNpZ25hbDsKKyAgYWJvcnRDb250cm9sbGVyLmFib3J0KCk7CisgIHJldHVybiBwcm9t
aXNlX3JlamVjdHNfZG9tKHQsICdBYm9ydEVycm9yJywgcnMucGlwZVRvKHdzLCB7IHNpZ25hbCB9
KSwgJ3BpcGVUbyBzaG91bGQgcmVqZWN0JykKKyAgICAgIC50aGVuKCgpID0+IFByb21pc2UuYWxs
KFsKKyAgICAgICAgcnMuZ2V0UmVhZGVyKCkuY2xvc2VkLAorICAgICAgICBwcm9taXNlX3JlamVj
dHNfZG9tKHQsICdBYm9ydEVycm9yJywgd3MuZ2V0V3JpdGVyKCkuY2xvc2VkLCAnd3JpdGVyLmNs
b3NlZCBzaG91bGQgcmVqZWN0JykKKyAgICAgIF0pKQorICAgICAgLnRoZW4oKCkgPT4geworICAg
ICAgICBhc3NlcnRfZXF1YWxzKHJzLmV2ZW50cy5sZW5ndGgsIDIsICdjYW5jZWwgc2hvdWxkIGhh
dmUgYmVlbiBjYWxsZWQnKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhycy5ldmVudHNbMF0sICdj
YW5jZWwnLCAnZmlyc3QgZXZlbnQgc2hvdWxkIGJlIGNhbmNlbCcpOworICAgICAgICBhc3NlcnRf
ZXF1YWxzKHJzLmV2ZW50c1sxXS5uYW1lLCAnQWJvcnRFcnJvcicsICd0aGUgYXJndW1lbnQgdG8g
Y2FuY2VsIHNob3VsZCBiZSBhbiBBYm9ydEVycm9yJyk7CisgICAgICAgIGFzc2VydF9lcXVhbHMo
cnMuZXZlbnRzWzFdLmNvbnN0cnVjdG9yLm5hbWUsICdET01FeGNlcHRpb24nLAorICAgICAgICAg
ICAgICAgICAgICAgICd0aGUgYXJndW1lbnQgdG8gY2FuY2VsIHNob3VsZCBiZSBhIERPTUV4Y2Vw
dGlvbicpOworICAgICAgfSk7Cit9LCAnYW4gYWJvcnRlZCBzaWduYWwgc2hvdWxkIGNhdXNlIHRo
ZSB3cml0YWJsZSBzdHJlYW0gdG8gcmVqZWN0IHdpdGggYW4gQWJvcnRFcnJvcicpOworCitwcm9t
aXNlX3Rlc3QoKCkgPT4geworICBsZXQgZXJyb3I7CisgIGNvbnN0IHJzID0gcmVjb3JkaW5nUmVh
ZGFibGVTdHJlYW0oZXJyb3JPblB1bGwsIGh3bTApOworICBjb25zdCB3cyA9IG5ldyBXcml0YWJs
ZVN0cmVhbSgpOworICBjb25zdCBhYm9ydENvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVy
KCk7CisgIGNvbnN0IHNpZ25hbCA9IGFib3J0Q29udHJvbGxlci5zaWduYWw7CisgIGFib3J0Q29u
dHJvbGxlci5hYm9ydCgpOworICByZXR1cm4gcnMucGlwZVRvKHdzLCB7IHNpZ25hbCB9KQorICAg
ICAgLmNhdGNoKGUgPT4geworICAgICAgICBlcnJvciA9IGU7CisgICAgICB9KQorICAgICAgLnRo
ZW4oKCkgPT4gUHJvbWlzZS5hbGwoWworICAgICAgICBycy5nZXRSZWFkZXIoKS5jbG9zZWQsCisg
ICAgICAgIHdzLmdldFdyaXRlcigpLmNsb3NlZC5jYXRjaChlID0+IHsKKyAgICAgICAgICBhc3Nl
cnRfZXF1YWxzKGUsIGVycm9yLCAndGhlIHdyaXRhYmxlIHNob3VsZCBiZSBlcnJvcmVkIHdpdGgg
dGhlIHNhbWUgb2JqZWN0Jyk7CisgICAgICAgIH0pCisgICAgICBdKSkKKyAgLnRoZW4oKCkgPT4g
eworICAgIGFzc2VydF9lcXVhbHMocnMuZXZlbnRzLmxlbmd0aCwgMiwgJ2NhbmNlbCBzaG91bGQg
aGF2ZSBiZWVuIGNhbGxlZCcpOworICAgIGFzc2VydF9lcXVhbHMocnMuZXZlbnRzWzBdLCAnY2Fu
Y2VsJywgJ2ZpcnN0IGV2ZW50IHNob3VsZCBiZSBjYW5jZWwnKTsKKyAgICBhc3NlcnRfZXF1YWxz
KHJzLmV2ZW50c1sxXSwgZXJyb3IsICd0aGUgcmVhZGFibGUgc2hvdWxkIGJlIGNhbmNlbGVkIHdp
dGggdGhlIHNhbWUgb2JqZWN0Jyk7CisgIH0pOworfSwgJ2FsbCB0aGUgQWJvcnRFcnJvciBvYmpl
Y3RzIHNob3VsZCBiZSB0aGUgc2FtZSBvYmplY3QnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4gewor
ICBjb25zdCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKGVycm9yT25QdWxsLCBod20wKTsK
KyAgY29uc3Qgd3MgPSBuZXcgV3JpdGFibGVTdHJlYW0oKTsKKyAgY29uc3QgYWJvcnRDb250cm9s
bGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpOworICBjb25zdCBzaWduYWwgPSBhYm9ydENvbnRy
b2xsZXIuc2lnbmFsOworICBhYm9ydENvbnRyb2xsZXIuYWJvcnQoKTsKKyAgcmV0dXJuIHByb21p
c2VfcmVqZWN0c19kb20odCwgJ0Fib3J0RXJyb3InLCBycy5waXBlVG8od3MsIHsgc2lnbmFsLCBw
cmV2ZW50Q2FuY2VsOiB0cnVlIH0pLCAncGlwZVRvIHNob3VsZCByZWplY3QnKQorICAgICAgLnRo
ZW4oKCkgPT4gYXNzZXJ0X2VxdWFscyhycy5ldmVudHMubGVuZ3RoLCAwLCAnY2FuY2VsIHNob3Vs
ZCBub3QgYmUgY2FsbGVkJykpOworfSwgJ3ByZXZlbnRDYW5jZWwgc2hvdWxkIHByZXZlbnQgY2Fu
Y2VsaW5nIHRoZSByZWFkYWJsZScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIGNvbnN0IHJz
ID0gbmV3IFJlYWRhYmxlU3RyZWFtKGVycm9yT25QdWxsLCBod20wKTsKKyAgY29uc3Qgd3MgPSBy
ZWNvcmRpbmdXcml0YWJsZVN0cmVhbSgpOworICBjb25zdCBhYm9ydENvbnRyb2xsZXIgPSBuZXcg
QWJvcnRDb250cm9sbGVyKCk7CisgIGNvbnN0IHNpZ25hbCA9IGFib3J0Q29udHJvbGxlci5zaWdu
YWw7CisgIGFib3J0Q29udHJvbGxlci5hYm9ydCgpOworICByZXR1cm4gcHJvbWlzZV9yZWplY3Rz
X2RvbSh0LCAnQWJvcnRFcnJvcicsIHJzLnBpcGVUbyh3cywgeyBzaWduYWwsIHByZXZlbnRBYm9y
dDogdHJ1ZSB9KSwgJ3BpcGVUbyBzaG91bGQgcmVqZWN0JykKKyAgICAgIC50aGVuKCgpID0+IHsK
KyAgICAgICAgYXNzZXJ0X2VxdWFscyh3cy5ldmVudHMubGVuZ3RoLCAwLCAnd3JpdGFibGUgc2hv
dWxkIG5vdCBoYXZlIGJlZW4gYWJvcnRlZCcpOworICAgICAgICByZXR1cm4gd3MuZ2V0V3JpdGVy
KCkucmVhZHk7CisgICAgICB9KTsKK30sICdwcmV2ZW50QWJvcnQgc2hvdWxkIHByZXZlbnQgYWJv
cnRpbmcgdGhlIHJlYWRhYmxlJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgY29uc3QgcnMg
PSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbShlcnJvck9uUHVsbCwgaHdtMCk7CisgIGNvbnN0IHdz
ID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0oKTsKKyAgY29uc3QgYWJvcnRDb250cm9sbGVyID0g
bmV3IEFib3J0Q29udHJvbGxlcigpOworICBjb25zdCBzaWduYWwgPSBhYm9ydENvbnRyb2xsZXIu
c2lnbmFsOworICBhYm9ydENvbnRyb2xsZXIuYWJvcnQoKTsKKyAgcmV0dXJuIHByb21pc2VfcmVq
ZWN0c19kb20odCwgJ0Fib3J0RXJyb3InLCBycy5waXBlVG8od3MsIHsgc2lnbmFsLCBwcmV2ZW50
Q2FuY2VsOiB0cnVlLCBwcmV2ZW50QWJvcnQ6IHRydWUgfSksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgJ3BpcGVUbyBzaG91bGQgcmVqZWN0JykKKyAgICAudGhlbigoKSA9PiB7CisgICAgICBh
c3NlcnRfZXF1YWxzKHJzLmV2ZW50cy5sZW5ndGgsIDAsICdjYW5jZWwgc2hvdWxkIG5vdCBiZSBj
YWxsZWQnKTsKKyAgICAgIGFzc2VydF9lcXVhbHMod3MuZXZlbnRzLmxlbmd0aCwgMCwgJ3dyaXRh
YmxlIHNob3VsZCBub3QgaGF2ZSBiZWVuIGFib3J0ZWQnKTsKKyAgICAgIHJldHVybiB3cy5nZXRX
cml0ZXIoKS5yZWFkeTsKKyAgICB9KTsKK30sICdwcmV2ZW50Q2FuY2VsIGFuZCBwcmV2ZW50QWJv
cnQgc2hvdWxkIHByZXZlbnQgY2FuY2VsaW5nIHRoZSByZWFkYWJsZSBhbmQgYWJvcnRpbmcgdGhl
IHJlYWRhYmxlJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgY29uc3QgcnMgPSBuZXcgUmVh
ZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGNvbnRyb2xsZXIpIHsKKyAgICAgIGNvbnRyb2xsZXIu
ZW5xdWV1ZSgnYScpOworICAgICAgY29udHJvbGxlci5lbnF1ZXVlKCdiJyk7CisgICAgICBjb250
cm9sbGVyLmNsb3NlKCk7CisgICAgfQorICB9KTsKKyAgY29uc3QgYWJvcnRDb250cm9sbGVyID0g
bmV3IEFib3J0Q29udHJvbGxlcigpOworICBjb25zdCBzaWduYWwgPSBhYm9ydENvbnRyb2xsZXIu
c2lnbmFsOworICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKHsKKyAgICB3cml0
ZSgpIHsKKyAgICAgIGFib3J0Q29udHJvbGxlci5hYm9ydCgpOworICAgIH0KKyAgfSk7CisgIHJl
dHVybiBwcm9taXNlX3JlamVjdHNfZG9tKHQsICdBYm9ydEVycm9yJywgcnMucGlwZVRvKHdzLCB7
IHNpZ25hbCB9KSwgJ3BpcGVUbyBzaG91bGQgcmVqZWN0JykKKyAgICAgIC50aGVuKCgpID0+IHsK
KyAgICAgICAgYXNzZXJ0X2VxdWFscyh3cy5ldmVudHMubGVuZ3RoLCA0LCAnb25seSBjaHVuayAi
YSIgc2hvdWxkIGhhdmUgYmVlbiB3cml0dGVuJyk7CisgICAgICAgIGFzc2VydF9hcnJheV9lcXVh
bHMod3MuZXZlbnRzLnNsaWNlKDAsIDMpLCBbJ3dyaXRlJywgJ2EnLCAnYWJvcnQnXSwgJ2V2ZW50
cyBzaG91bGQgbWF0Y2gnKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyh3cy5ldmVudHNbM10ubmFt
ZSwgJ0Fib3J0RXJyb3InLCAnYWJvcnQgcmVhc29uIHNob3VsZCBiZSBhbiBBYm9ydEVycm9yJyk7
CisgICAgICB9KTsKK30sICdhYm9ydCBzaG91bGQgcHJldmVudCBmdXJ0aGVyIHJlYWRzJyk7CisK
K3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgbGV0IHJlYWRDb250cm9sbGVyOworICBjb25zdCBycyA9
IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgcmVhZENvbnRyb2xs
ZXIgPSBjOworICAgICAgYy5lbnF1ZXVlKCdhJyk7CisgICAgICBjLmVucXVldWUoJ2InKTsKKyAg
ICB9CisgIH0pOworICBjb25zdCBhYm9ydENvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVy
KCk7CisgIGNvbnN0IHNpZ25hbCA9IGFib3J0Q29udHJvbGxlci5zaWduYWw7CisgIGxldCByZXNv
bHZlV3JpdGU7CisgIGNvbnN0IHdyaXRlUHJvbWlzZSA9IG5ldyBQcm9taXNlKHJlc29sdmUgPT4g
eworICAgIHJlc29sdmVXcml0ZSA9IHJlc29sdmU7CisgIH0pOworICBjb25zdCB3cyA9IHJlY29y
ZGluZ1dyaXRhYmxlU3RyZWFtKHsKKyAgICB3cml0ZSgpIHsKKyAgICAgIHJldHVybiB3cml0ZVBy
b21pc2U7CisgICAgfQorICB9LCBuZXcgQ291bnRRdWV1aW5nU3RyYXRlZ3koeyBoaWdoV2F0ZXJN
YXJrOiBJbmZpbml0eSB9KSk7CisgIGNvbnN0IHBpcGVUb1Byb21pc2UgPSBycy5waXBlVG8od3Ms
IHsgc2lnbmFsIH0pOworICByZXR1cm4gZGVsYXkoMCkudGhlbigoKSA9PiB7CisgICAgYWJvcnRD
b250cm9sbGVyLmFib3J0KCk7CisgICAgcmVhZENvbnRyb2xsZXIuY2xvc2UoKTsgLy8gTWFrZSBz
dXJlIHRoZSB0ZXN0IHRlcm1pbmF0ZXMgd2hlbiBzaWduYWwgaXMgbm90IGltcGxlbWVudGVkLgor
ICAgIHJlc29sdmVXcml0ZSgpOworICAgIHJldHVybiBwcm9taXNlX3JlamVjdHNfZG9tKHQsICdB
Ym9ydEVycm9yJywgcGlwZVRvUHJvbWlzZSwgJ3BpcGVUbyBzaG91bGQgcmVqZWN0Jyk7CisgIH0p
LnRoZW4oKCkgPT4geworICAgIGFzc2VydF9lcXVhbHMod3MuZXZlbnRzLmxlbmd0aCwgNiwgJ2No
dW5rcyAiYSIgYW5kICJiIiBzaG91bGQgaGF2ZSBiZWVuIHdyaXR0ZW4nKTsKKyAgICBhc3NlcnRf
YXJyYXlfZXF1YWxzKHdzLmV2ZW50cy5zbGljZSgwLCA1KSwgWyd3cml0ZScsICdhJywgJ3dyaXRl
JywgJ2InLCAnYWJvcnQnXSwgJ2V2ZW50cyBzaG91bGQgbWF0Y2gnKTsKKyAgICBhc3NlcnRfZXF1
YWxzKHdzLmV2ZW50c1s1XS5uYW1lLCAnQWJvcnRFcnJvcicsICdhYm9ydCByZWFzb24gc2hvdWxk
IGJlIGFuIEFib3J0RXJyb3InKTsKKyAgfSk7Cit9LCAnYWxsIHBlbmRpbmcgd3JpdGVzIHNob3Vs
ZCBjb21wbGV0ZSBvbiBhYm9ydCcpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIGNvbnN0IHJz
ID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBwdWxsKGNvbnRyb2xsZXIpIHsKKyAgICAgIGNv
bnRyb2xsZXIuZXJyb3IoJ2ZhaWxlZCB0byBhYm9ydCcpOworICAgIH0sCisgICAgY2FuY2VsKCkg
eworICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yMSk7CisgICAgfQorICB9LCBod20w
KTsKKyAgY29uc3Qgd3MgPSBuZXcgV3JpdGFibGVTdHJlYW0oKTsKKyAgY29uc3QgYWJvcnRDb250
cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpOworICBjb25zdCBzaWduYWwgPSBhYm9ydENv
bnRyb2xsZXIuc2lnbmFsOworICBhYm9ydENvbnRyb2xsZXIuYWJvcnQoKTsKKyAgcmV0dXJuIHBy
b21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMSwgcnMucGlwZVRvKHdzLCB7IHNpZ25hbCB9
KSwgJ3BpcGVUbyBzaG91bGQgcmVqZWN0Jyk7Cit9LCAnYSByZWplY3Rpb24gZnJvbSB1bmRlcmx5
aW5nU291cmNlLmNhbmNlbCgpIHNob3VsZCBiZSByZXR1cm5lZCBieSBwaXBlVG8oKScpOworCitw
cm9taXNlX3Rlc3QodCA9PiB7CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKGVycm9y
T25QdWxsLCBod20wKTsKKyAgY29uc3Qgd3MgPSBuZXcgV3JpdGFibGVTdHJlYW0oeworICAgIGFi
b3J0KCkgeworICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yMSk7CisgICAgfQorICB9
KTsKKyAgY29uc3QgYWJvcnRDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpOworICBj
b25zdCBzaWduYWwgPSBhYm9ydENvbnRyb2xsZXIuc2lnbmFsOworICBhYm9ydENvbnRyb2xsZXIu
YWJvcnQoKTsKKyAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMSwgcnMu
cGlwZVRvKHdzLCB7IHNpZ25hbCB9KSwgJ3BpcGVUbyBzaG91bGQgcmVqZWN0Jyk7Cit9LCAnYSBy
ZWplY3Rpb24gZnJvbSB1bmRlcmx5aW5nU2luay5hYm9ydCgpIHNob3VsZCBiZSByZXR1cm5lZCBi
eSBwaXBlVG8oKScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIGNvbnN0IGV2ZW50cyA9IFtd
OworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgcHVsbChjb250cm9sbGVy
KSB7CisgICAgICBjb250cm9sbGVyLmVycm9yKCdmYWlsZWQgdG8gYWJvcnQnKTsKKyAgICB9LAor
ICAgIGNhbmNlbCgpIHsKKyAgICAgIGV2ZW50cy5wdXNoKCdjYW5jZWwnKTsKKyAgICAgIHJldHVy
biBQcm9taXNlLnJlamVjdChlcnJvcjEpOworICAgIH0KKyAgfSwgaHdtMCk7CisgIGNvbnN0IHdz
ID0gbmV3IFdyaXRhYmxlU3RyZWFtKHsKKyAgICBhYm9ydCgpIHsKKyAgICAgIGV2ZW50cy5wdXNo
KCdhYm9ydCcpOworICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yMik7CisgICAgfQor
ICB9KTsKKyAgY29uc3QgYWJvcnRDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpOwor
ICBjb25zdCBzaWduYWwgPSBhYm9ydENvbnRyb2xsZXIuc2lnbmFsOworICBhYm9ydENvbnRyb2xs
ZXIuYWJvcnQoKTsKKyAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMiwg
cnMucGlwZVRvKHdzLCB7IHNpZ25hbCB9KSwgJ3BpcGVUbyBzaG91bGQgcmVqZWN0JykKKyAgICAg
IC50aGVuKCgpID0+IGFzc2VydF9hcnJheV9lcXVhbHMoZXZlbnRzLCBbJ2Fib3J0JywgJ2NhbmNl
bCddLCAnYWJvcnQoKSBzaG91bGQgYmUgY2FsbGVkIGJlZm9yZSBjYW5jZWwoKScpKTsKK30sICdh
IHJlamVjdGlvbiBmcm9tIHVuZGVybHlpbmdTaW5rLmFib3J0KCkgc2hvdWxkIGJlIHByZWZlcnJl
ZCB0byBvbmUgZnJvbSB1bmRlcmx5aW5nU291cmNlLmNhbmNlbCgpJyk7CisKK3Byb21pc2VfdGVz
dCh0ID0+IHsKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGNv
bnRyb2xsZXIpIHsKKyAgICAgIGNvbnRyb2xsZXIuY2xvc2UoKTsKKyAgICB9CisgIH0pOworICBj
b25zdCB3cyA9IG5ldyBXcml0YWJsZVN0cmVhbSgpOworICBjb25zdCBhYm9ydENvbnRyb2xsZXIg
PSBuZXcgQWJvcnRDb250cm9sbGVyKCk7CisgIGNvbnN0IHNpZ25hbCA9IGFib3J0Q29udHJvbGxl
ci5zaWduYWw7CisgIGFib3J0Q29udHJvbGxlci5hYm9ydCgpOworICByZXR1cm4gcHJvbWlzZV9y
ZWplY3RzX2RvbSh0LCAnQWJvcnRFcnJvcicsIHJzLnBpcGVUbyh3cywgeyBzaWduYWwgfSksICdw
aXBlVG8gc2hvdWxkIHJlamVjdCcpOworfSwgJ2Fib3J0IHNpZ25hbCB0YWtlcyBwcmlvcml0eSBv
dmVyIGNsb3NlZCByZWFkYWJsZScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIGNvbnN0IHJz
ID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjb250cm9sbGVyKSB7CisgICAgICBj
b250cm9sbGVyLmVycm9yKGVycm9yMSk7CisgICAgfQorICB9KTsKKyAgY29uc3Qgd3MgPSBuZXcg
V3JpdGFibGVTdHJlYW0oKTsKKyAgY29uc3QgYWJvcnRDb250cm9sbGVyID0gbmV3IEFib3J0Q29u
dHJvbGxlcigpOworICBjb25zdCBzaWduYWwgPSBhYm9ydENvbnRyb2xsZXIuc2lnbmFsOworICBh
Ym9ydENvbnRyb2xsZXIuYWJvcnQoKTsKKyAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19kb20odCwg
J0Fib3J0RXJyb3InLCBycy5waXBlVG8od3MsIHsgc2lnbmFsIH0pLCAncGlwZVRvIHNob3VsZCBy
ZWplY3QnKTsKK30sICdhYm9ydCBzaWduYWwgdGFrZXMgcHJpb3JpdHkgb3ZlciBlcnJvcmVkIHJl
YWRhYmxlJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFi
bGVTdHJlYW0oeworICAgIHB1bGwoY29udHJvbGxlcikgeworICAgICAgY29udHJvbGxlci5lcnJv
cignZmFpbGVkIHRvIGFib3J0Jyk7CisgICAgfQorICB9LCBod20wKTsKKyAgY29uc3Qgd3MgPSBu
ZXcgV3JpdGFibGVTdHJlYW0oKTsKKyAgY29uc3QgYWJvcnRDb250cm9sbGVyID0gbmV3IEFib3J0
Q29udHJvbGxlcigpOworICBjb25zdCBzaWduYWwgPSBhYm9ydENvbnRyb2xsZXIuc2lnbmFsOwor
ICBhYm9ydENvbnRyb2xsZXIuYWJvcnQoKTsKKyAgY29uc3Qgd3JpdGVyID0gd3MuZ2V0V3JpdGVy
KCk7CisgIHJldHVybiB3cml0ZXIuY2xvc2UoKS50aGVuKCgpID0+IHsKKyAgICB3cml0ZXIucmVs
ZWFzZUxvY2soKTsKKyAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2RvbSh0LCAnQWJvcnRFcnJv
cicsIHJzLnBpcGVUbyh3cywgeyBzaWduYWwgfSksICdwaXBlVG8gc2hvdWxkIHJlamVjdCcpOwor
ICB9KTsKK30sICdhYm9ydCBzaWduYWwgdGFrZXMgcHJpb3JpdHkgb3ZlciBjbG9zZWQgd3JpdGFi
bGUnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0
cmVhbSh7CisgICAgcHVsbChjb250cm9sbGVyKSB7CisgICAgICBjb250cm9sbGVyLmVycm9yKCdm
YWlsZWQgdG8gYWJvcnQnKTsKKyAgICB9CisgIH0sIGh3bTApOworICBjb25zdCB3cyA9IG5ldyBX
cml0YWJsZVN0cmVhbSh7CisgICAgc3RhcnQoY29udHJvbGxlcikgeworICAgICAgY29udHJvbGxl
ci5lcnJvcihlcnJvcjEpOworICAgIH0KKyAgfSk7CisgIGNvbnN0IGFib3J0Q29udHJvbGxlciA9
IG5ldyBBYm9ydENvbnRyb2xsZXIoKTsKKyAgY29uc3Qgc2lnbmFsID0gYWJvcnRDb250cm9sbGVy
LnNpZ25hbDsKKyAgYWJvcnRDb250cm9sbGVyLmFib3J0KCk7CisgIHJldHVybiBwcm9taXNlX3Jl
amVjdHNfZG9tKHQsICdBYm9ydEVycm9yJywgcnMucGlwZVRvKHdzLCB7IHNpZ25hbCB9KSwgJ3Bp
cGVUbyBzaG91bGQgcmVqZWN0Jyk7Cit9LCAnYWJvcnQgc2lnbmFsIHRha2VzIHByaW9yaXR5IG92
ZXIgZXJyb3JlZCB3cml0YWJsZScpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworICBsZXQgcmVh
ZENvbnRyb2xsZXI7CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFy
dChjKSB7CisgICAgICByZWFkQ29udHJvbGxlciA9IGM7CisgICAgfQorICB9KTsKKyAgY29uc3Qg
d3MgPSBuZXcgV3JpdGFibGVTdHJlYW0oKTsKKyAgY29uc3QgYWJvcnRDb250cm9sbGVyID0gbmV3
IEFib3J0Q29udHJvbGxlcigpOworICBjb25zdCBzaWduYWwgPSBhYm9ydENvbnRyb2xsZXIuc2ln
bmFsOworICBjb25zdCBwaXBlVG9Qcm9taXNlID0gcnMucGlwZVRvKHdzLCB7IHNpZ25hbCwgcHJl
dmVudENsb3NlOiB0cnVlIH0pOworICByZWFkQ29udHJvbGxlci5jbG9zZSgpOworICByZXR1cm4g
UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiB7CisgICAgYWJvcnRDb250cm9sbGVyLmFib3J0
KCk7CisgICAgcmV0dXJuIHBpcGVUb1Byb21pc2U7CisgIH0pLnRoZW4oKCkgPT4gd3MuZ2V0V3Jp
dGVyKCkud3JpdGUoJ3RoaXMgc2hvdWxkIHN1Y2NlZWQnKSk7Cit9LCAnYWJvcnQgc2hvdWxkIGRv
IG5vdGhpbmcgYWZ0ZXIgdGhlIHJlYWRhYmxlIGlzIGNsb3NlZCcpOworCitwcm9taXNlX3Rlc3Qo
dCA9PiB7CisgIGxldCByZWFkQ29udHJvbGxlcjsKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVT
dHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIHJlYWRDb250cm9sbGVyID0gYzsKKyAgICB9
CisgIH0pOworICBjb25zdCB3cyA9IG5ldyBXcml0YWJsZVN0cmVhbSgpOworICBjb25zdCBhYm9y
dENvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7CisgIGNvbnN0IHNpZ25hbCA9IGFi
b3J0Q29udHJvbGxlci5zaWduYWw7CisgIGNvbnN0IHBpcGVUb1Byb21pc2UgPSBycy5waXBlVG8o
d3MsIHsgc2lnbmFsLCBwcmV2ZW50QWJvcnQ6IHRydWUgfSk7CisgIHJlYWRDb250cm9sbGVyLmVy
cm9yKGVycm9yMSk7CisgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHsKKyAg
ICBhYm9ydENvbnRyb2xsZXIuYWJvcnQoKTsKKyAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2V4
YWN0bHkodCwgZXJyb3IxLCBwaXBlVG9Qcm9taXNlLCAncGlwZVRvIHNob3VsZCByZWplY3QnKTsK
KyAgfSkudGhlbigoKSA9PiB3cy5nZXRXcml0ZXIoKS53cml0ZSgndGhpcyBzaG91bGQgc3VjY2Vl
ZCcpKTsKK30sICdhYm9ydCBzaG91bGQgZG8gbm90aGluZyBhZnRlciB0aGUgcmVhZGFibGUgaXMg
ZXJyb3JlZCcpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIGxldCByZWFkQ29udHJvbGxlcjsK
KyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAg
IHJlYWRDb250cm9sbGVyID0gYzsKKyAgICB9CisgIH0pOworICBsZXQgcmVzb2x2ZVdyaXRlOwor
ICBjb25zdCB3cml0ZVByb21pc2UgPSBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKKyAgICByZXNv
bHZlV3JpdGUgPSByZXNvbHZlOworICB9KTsKKyAgY29uc3Qgd3MgPSBuZXcgV3JpdGFibGVTdHJl
YW0oeworICAgIHdyaXRlKCkgeworICAgICAgcmVhZENvbnRyb2xsZXIuZXJyb3IoZXJyb3IxKTsK
KyAgICAgIHJldHVybiB3cml0ZVByb21pc2U7CisgICAgfQorICB9KTsKKyAgY29uc3QgYWJvcnRD
b250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpOworICBjb25zdCBzaWduYWwgPSBhYm9y
dENvbnRyb2xsZXIuc2lnbmFsOworICBjb25zdCBwaXBlVG9Qcm9taXNlID0gcnMucGlwZVRvKHdz
LCB7IHNpZ25hbCwgcHJldmVudEFib3J0OiB0cnVlIH0pOworICByZWFkQ29udHJvbGxlci5lbnF1
ZXVlKCdhJyk7CisgIHJldHVybiBkZWxheSgwKS50aGVuKCgpID0+IHsKKyAgICBhYm9ydENvbnRy
b2xsZXIuYWJvcnQoKTsKKyAgICByZXNvbHZlV3JpdGUoKTsKKyAgICByZXR1cm4gcHJvbWlzZV9y
ZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCBwaXBlVG9Qcm9taXNlLCAncGlwZVRvIHNob3VsZCBy
ZWplY3QnKTsKKyAgfSkudGhlbigoKSA9PiB3cy5nZXRXcml0ZXIoKS53cml0ZSgndGhpcyBzaG91
bGQgc3VjY2VlZCcpKTsKK30sICdhYm9ydCBzaG91bGQgZG8gbm90aGluZyBhZnRlciB0aGUgcmVh
ZGFibGUgaXMgZXJyb3JlZCwgZXZlbiB3aXRoIHBlbmRpbmcgd3JpdGVzJyk7CisKK3Byb21pc2Vf
dGVzdCh0ID0+IHsKKyAgY29uc3QgcnMgPSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSh7CisgICAg
cHVsbChjb250cm9sbGVyKSB7CisgICAgICByZXR1cm4gZGVsYXkoMCkudGhlbigoKSA9PiBjb250
cm9sbGVyLmNsb3NlKCkpOworICAgIH0KKyAgfSk7CisgIGxldCB3cml0ZUNvbnRyb2xsZXI7Cisg
IGNvbnN0IHdzID0gbmV3IFdyaXRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICB3
cml0ZUNvbnRyb2xsZXIgPSBjOworICAgIH0KKyAgfSk7CisgIGNvbnN0IGFib3J0Q29udHJvbGxl
ciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTsKKyAgY29uc3Qgc2lnbmFsID0gYWJvcnRDb250cm9s
bGVyLnNpZ25hbDsKKyAgY29uc3QgcGlwZVRvUHJvbWlzZSA9IHJzLnBpcGVUbyh3cywgeyBzaWdu
YWwsIHByZXZlbnRDYW5jZWw6IHRydWUgfSk7CisgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKS50
aGVuKCgpID0+IHsKKyAgICB3cml0ZUNvbnRyb2xsZXIuZXJyb3IoZXJyb3IxKTsKKyAgICByZXR1
cm4gUHJvbWlzZS5yZXNvbHZlKCk7CisgIH0pLnRoZW4oKCkgPT4geworICAgIGFib3J0Q29udHJv
bGxlci5hYm9ydCgpOworICAgIHJldHVybiBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJv
cjEsIHBpcGVUb1Byb21pc2UsICdwaXBlVG8gc2hvdWxkIHJlamVjdCcpOworICB9KS50aGVuKCgp
ID0+IHsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJzLmV2ZW50cywgWydwdWxsJ10sICdjYW5j
ZWwgc2hvdWxkIG5vdCBoYXZlIGJlZW4gY2FsbGVkJyk7CisgIH0pOworfSwgJ2Fib3J0IHNob3Vs
ZCBkbyBub3RoaW5nIGFmdGVyIHRoZSB3cml0YWJsZSBpcyBlcnJvcmVkJyk7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlw
aW5nL2Fib3J0LmFueS53b3JrZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9hYm9ydC5hbnkud29ya2VyLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NWY3NmJlMTc4MWY2MjYxZjE2NzQ5OGVhMWYyNTBlNDQ1
OGM3MzE2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9hYm9ydC5hbnkud29ya2VyLWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDI1IEBACisKK0ZBSUwgYSBzaWduYWwgYXJndW1lbnQgJ251bGwnIHNob3Vs
ZCBjYXVzZSBwaXBlVG8oKSB0byByZWplY3QgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVT
dHJlYW0KK0ZBSUwgYSBzaWduYWwgYXJndW1lbnQgJ0Fib3J0U2lnbmFsJyBzaG91bGQgY2F1c2Ug
cGlwZVRvKCkgdG8gcmVqZWN0IENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitG
QUlMIGEgc2lnbmFsIGFyZ3VtZW50ICd0cnVlJyBzaG91bGQgY2F1c2UgcGlwZVRvKCkgdG8gcmVq
ZWN0IENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIGEgc2lnbmFsIGFy
Z3VtZW50ICctMScgc2hvdWxkIGNhdXNlIHBpcGVUbygpIHRvIHJlamVjdCBDYW4ndCBmaW5kIHZh
cmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBhIHNpZ25hbCBhcmd1bWVudCAnW29iamVjdCBB
Ym9ydFNpZ25hbF0nIHNob3VsZCBjYXVzZSBwaXBlVG8oKSB0byByZWplY3QgQ2FuJ3QgZmluZCB2
YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgYW4gYWJvcnRlZCBzaWduYWwgc2hvdWxkIGNh
dXNlIHRoZSB3cml0YWJsZSBzdHJlYW0gdG8gcmVqZWN0IHdpdGggYW4gQWJvcnRFcnJvciBDYW4n
dCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBhbGwgdGhlIEFib3J0RXJyb3Ig
b2JqZWN0cyBzaG91bGQgYmUgdGhlIHNhbWUgb2JqZWN0IENhbid0IGZpbmQgdmFyaWFibGU6IFdy
aXRhYmxlU3RyZWFtCitGQUlMIHByZXZlbnRDYW5jZWwgc2hvdWxkIHByZXZlbnQgY2FuY2VsaW5n
IHRoZSByZWFkYWJsZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBw
cmV2ZW50QWJvcnQgc2hvdWxkIHByZXZlbnQgYWJvcnRpbmcgdGhlIHJlYWRhYmxlIENhbid0IGZp
bmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIHByZXZlbnRDYW5jZWwgYW5kIHByZXZl
bnRBYm9ydCBzaG91bGQgcHJldmVudCBjYW5jZWxpbmcgdGhlIHJlYWRhYmxlIGFuZCBhYm9ydGlu
ZyB0aGUgcmVhZGFibGUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwg
YWJvcnQgc2hvdWxkIHByZXZlbnQgZnVydGhlciByZWFkcyBDYW4ndCBmaW5kIHZhcmlhYmxlOiBX
cml0YWJsZVN0cmVhbQorRkFJTCBhbGwgcGVuZGluZyB3cml0ZXMgc2hvdWxkIGNvbXBsZXRlIG9u
IGFib3J0IENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIGEgcmVqZWN0
aW9uIGZyb20gdW5kZXJseWluZ1NvdXJjZS5jYW5jZWwoKSBzaG91bGQgYmUgcmV0dXJuZWQgYnkg
cGlwZVRvKCkgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgYSByZWpl
Y3Rpb24gZnJvbSB1bmRlcmx5aW5nU2luay5hYm9ydCgpIHNob3VsZCBiZSByZXR1cm5lZCBieSBw
aXBlVG8oKSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBhIHJlamVj
dGlvbiBmcm9tIHVuZGVybHlpbmdTaW5rLmFib3J0KCkgc2hvdWxkIGJlIHByZWZlcnJlZCB0byBv
bmUgZnJvbSB1bmRlcmx5aW5nU291cmNlLmNhbmNlbCgpIENhbid0IGZpbmQgdmFyaWFibGU6IFdy
aXRhYmxlU3RyZWFtCitGQUlMIGFib3J0IHNpZ25hbCB0YWtlcyBwcmlvcml0eSBvdmVyIGNsb3Nl
ZCByZWFkYWJsZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBhYm9y
dCBzaWduYWwgdGFrZXMgcHJpb3JpdHkgb3ZlciBlcnJvcmVkIHJlYWRhYmxlIENhbid0IGZpbmQg
dmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIGFib3J0IHNpZ25hbCB0YWtlcyBwcmlvcml0
eSBvdmVyIGNsb3NlZCB3cml0YWJsZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVh
bQorRkFJTCBhYm9ydCBzaWduYWwgdGFrZXMgcHJpb3JpdHkgb3ZlciBlcnJvcmVkIHdyaXRhYmxl
IENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIGFib3J0IHNob3VsZCBk
byBub3RoaW5nIGFmdGVyIHRoZSByZWFkYWJsZSBpcyBjbG9zZWQgQ2FuJ3QgZmluZCB2YXJpYWJs
ZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgYWJvcnQgc2hvdWxkIGRvIG5vdGhpbmcgYWZ0ZXIgdGhl
IHJlYWRhYmxlIGlzIGVycm9yZWQgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0K
K0ZBSUwgYWJvcnQgc2hvdWxkIGRvIG5vdGhpbmcgYWZ0ZXIgdGhlIHJlYWRhYmxlIGlzIGVycm9y
ZWQsIGV2ZW4gd2l0aCBwZW5kaW5nIHdyaXRlcyBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJs
ZVN0cmVhbQorRkFJTCBhYm9ydCBzaG91bGQgZG8gbm90aGluZyBhZnRlciB0aGUgd3JpdGFibGUg
aXMgZXJyb3JlZCBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
cGlwaW5nL2Fib3J0LmFueS53b3JrZXIuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvYWJvcnQuYW55Lndvcmtlci5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjIzODI5MTM1MjhlNjkzYjNhNWQ1NmM2NjBhNDUwNjA5ODBiNTQ4YzMKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMvcGlwaW5nL2Fib3J0LmFueS53b3JrZXIuaHRtbApAQCAtMCwwICsxIEBACis8IS0t
IFRoaXMgZmlsZSBpcyByZXF1aXJlZCBmb3IgV2ViS2l0IHRlc3QgaW5mcmFzdHJ1Y3R1cmUgdG8g
cnVuIHRoZSB0ZW1wbGF0ZWQgdGVzdCAtLT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMvcGlwaW5nL2Nsb3NlLXByb3BhZ2F0aW9uLWJhY2t3YXJkLmFueS1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlw
aW5nL2Nsb3NlLXByb3BhZ2F0aW9uLWJhY2t3YXJkLmFueS1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmFhOWNiNDA3YTg3NTk2ZjNkMWEzZjE4YzNjYmIxN2VhOTA5YTc4MgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy9waXBpbmcvY2xvc2UtcHJvcGFnYXRpb24tYmFja3dhcmQuYW55LWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDE4IEBACisKK0ZBSUwgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6
IHN0YXJ0cyBjbG9zZWQ7IHByZXZlbnRDYW5jZWwgb21pdHRlZDsgZnVsZmlsbGVkIGNhbmNlbCBw
cm9taXNlIHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0ZXIo
KScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkKK0ZBSUwgQ2xvc2luZyBtdXN0IGJlIHBy
b3BhZ2F0ZWQgYmFja3dhcmQ6IHN0YXJ0cyBjbG9zZWQ7IHByZXZlbnRDYW5jZWwgb21pdHRlZDsg
cmVqZWN0ZWQgY2FuY2VsIHByb21pc2Ugd3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAo
SW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicgaXMgdW5kZWZpbmVkKQorRkFJTCBD
bG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogc3RhcnRzIGNsb3NlZDsgcHJldmVu
dENhbmNlbCA9IHVuZGVmaW5lZCAoZmFsc3kpOyBmdWxmaWxsZWQgY2FuY2VsIHByb21pc2Ugd3Mu
Z2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdl
dFdyaXRlcicgaXMgdW5kZWZpbmVkKQorRkFJTCBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBi
YWNrd2FyZDogc3RhcnRzIGNsb3NlZDsgcHJldmVudENhbmNlbCA9IG51bGwgKGZhbHN5KTsgZnVs
ZmlsbGVkIGNhbmNlbCBwcm9taXNlIHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKElu
ICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkKK0ZBSUwgQ2xv
c2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IHN0YXJ0cyBjbG9zZWQ7IHByZXZlbnRD
YW5jZWwgPSBmYWxzZSAoZmFsc3kpOyBmdWxmaWxsZWQgY2FuY2VsIHByb21pc2Ugd3MuZ2V0V3Jp
dGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRl
cicgaXMgdW5kZWZpbmVkKQorRkFJTCBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2Fy
ZDogc3RhcnRzIGNsb3NlZDsgcHJldmVudENhbmNlbCA9IDAgKGZhbHN5KTsgZnVsZmlsbGVkIGNh
bmNlbCBwcm9taXNlIHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRX
cml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkKK0ZBSUwgQ2xvc2luZyBtdXN0
IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IHN0YXJ0cyBjbG9zZWQ7IHByZXZlbnRDYW5jZWwgPSAt
MCAoZmFsc3kpOyBmdWxmaWxsZWQgY2FuY2VsIHByb21pc2Ugd3MuZ2V0V3JpdGVyIGlzIG5vdCBh
IGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicgaXMgdW5kZWZp
bmVkKQorRkFJTCBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogc3RhcnRzIGNs
b3NlZDsgcHJldmVudENhbmNlbCA9IE5hTiAoZmFsc3kpOyBmdWxmaWxsZWQgY2FuY2VsIHByb21p
c2Ugd3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywg
J3dzLmdldFdyaXRlcicgaXMgdW5kZWZpbmVkKQorRkFJTCBDbG9zaW5nIG11c3QgYmUgcHJvcGFn
YXRlZCBiYWNrd2FyZDogc3RhcnRzIGNsb3NlZDsgcHJldmVudENhbmNlbCA9ICAoZmFsc3kpOyBm
dWxmaWxsZWQgY2FuY2VsIHByb21pc2Ugd3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAo
SW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicgaXMgdW5kZWZpbmVkKQorRkFJTCBD
bG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogc3RhcnRzIGNsb3NlZDsgcHJldmVu
dENhbmNlbCA9IHRydWUgKHRydXRoeSkgd3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAo
SW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicgaXMgdW5kZWZpbmVkKQorRkFJTCBD
bG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogc3RhcnRzIGNsb3NlZDsgcHJldmVu
dENhbmNlbCA9IGEgKHRydXRoeSkgd3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4g
J3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicgaXMgdW5kZWZpbmVkKQorRkFJTCBDbG9z
aW5nIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogc3RhcnRzIGNsb3NlZDsgcHJldmVudENh
bmNlbCA9IDEgKHRydXRoeSkgd3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dz
LmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicgaXMgdW5kZWZpbmVkKQorRkFJTCBDbG9zaW5n
IG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogc3RhcnRzIGNsb3NlZDsgcHJldmVudENhbmNl
bCA9IFN5bWJvbCgpICh0cnV0aHkpIHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKElu
ICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkKK0ZBSUwgQ2xv
c2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IHN0YXJ0cyBjbG9zZWQ7IHByZXZlbnRD
YW5jZWwgPSBbb2JqZWN0IE9iamVjdF0gKHRydXRoeSkgd3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1
bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicgaXMgdW5kZWZpbmVk
KQorRkFJTCBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogc3RhcnRzIGNsb3Nl
ZDsgcHJldmVudENhbmNlbCA9IHRydWUsIHByZXZlbnRBYm9ydCA9IHRydWUgd3MuZ2V0V3JpdGVy
IGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicg
aXMgdW5kZWZpbmVkKQorRkFJTCBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDog
c3RhcnRzIGNsb3NlZDsgcHJldmVudENhbmNlbCA9IHRydWUsIHByZXZlbnRBYm9ydCA9IHRydWUs
IHByZXZlbnRDbG9zZSA9IHRydWUgd3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4g
J3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicgaXMgdW5kZWZpbmVkKQorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
cGlwaW5nL2Nsb3NlLXByb3BhZ2F0aW9uLWJhY2t3YXJkLmFueS5odG1sIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9jbG9zZS1wcm9w
YWdhdGlvbi1iYWNrd2FyZC5hbnkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMzgyOTEzNTI4ZTY5M2IzYTVk
NTZjNjYwYTQ1MDYwOTgwYjU0OGMzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9jbG9zZS1wcm9wYWdh
dGlvbi1iYWNrd2FyZC5hbnkuaHRtbApAQCAtMCwwICsxIEBACis8IS0tIFRoaXMgZmlsZSBpcyBy
ZXF1aXJlZCBmb3IgV2ViS2l0IHRlc3QgaW5mcmFzdHJ1Y3R1cmUgdG8gcnVuIHRoZSB0ZW1wbGF0
ZWQgdGVzdCAtLT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Ns
b3NlLXByb3BhZ2F0aW9uLWJhY2t3YXJkLmFueS5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvY2xvc2UtcHJvcGFnYXRpb24tYmFj
a3dhcmQuYW55LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJkMWU5Y2I5MjY1N2IxNDAyY2MwNmNjN2YxNTkzNDI5
YWQ5NjIzMGMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Nsb3NlLXByb3BhZ2F0aW9uLWJhY2t3YXJk
LmFueS5qcwpAQCAtMCwwICsxLDE1MyBAQAorLy8gTUVUQTogZ2xvYmFsPXdpbmRvdyx3b3JrZXIs
anNzaGVsbAorLy8gTUVUQTogc2NyaXB0PS4uL3Jlc291cmNlcy9yZWNvcmRpbmctc3RyZWFtcy5q
cworJ3VzZSBzdHJpY3QnOworCitjb25zdCBlcnJvcjEgPSBuZXcgRXJyb3IoJ2Vycm9yMSEnKTsK
K2Vycm9yMS5uYW1lID0gJ2Vycm9yMSc7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisKKyAgY29u
c3QgcnMgPSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSgpOworCisgIGNvbnN0IHdzID0gcmVjb3Jk
aW5nV3JpdGFibGVTdHJlYW0oKTsKKyAgY29uc3Qgd3JpdGVyID0gd3MuZ2V0V3JpdGVyKCk7Cisg
IHdyaXRlci5jbG9zZSgpOworICB3cml0ZXIucmVsZWFzZUxvY2soKTsKKworICByZXR1cm4gcnMu
cGlwZVRvKHdzKS50aGVuKAorICAgICgpID0+IGFzc2VydF91bnJlYWNoZWQoJ3RoZSBwcm9taXNl
IG11c3Qgbm90IGZ1bGZpbGwnKSwKKyAgICBlcnIgPT4geworICAgICAgYXNzZXJ0X2VxdWFscyhl
cnIubmFtZSwgJ1R5cGVFcnJvcicsICd0aGUgcHJvbWlzZSBtdXN0IHJlamVjdCB3aXRoIGEgVHlw
ZUVycm9yJyk7CisKKyAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMocnMuZXZlbnRzV2l0aG91dFB1
bGxzLCBbJ2NhbmNlbCcsIGVycl0pOworICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVu
dHMsIFsnY2xvc2UnXSk7CisKKyAgICAgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAgICAgIHJz
LmdldFJlYWRlcigpLmNsb3NlZCwKKyAgICAgICAgd3MuZ2V0V3JpdGVyKCkuY2xvc2VkCisgICAg
ICBdKTsKKyAgICB9CisgICk7CisKK30sICdDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNr
d2FyZDogc3RhcnRzIGNsb3NlZDsgcHJldmVudENhbmNlbCBvbWl0dGVkOyBmdWxmaWxsZWQgY2Fu
Y2VsIHByb21pc2UnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworCisgIC8vIE91ciByZWNvcmRp
bmcgc3RyZWFtcyBkbyBub3QgZGVhbCB3ZWxsIHdpdGggZXJyb3JzIGdlbmVyYXRlZCBieSB0aGUg
c3lzdGVtLCBzbyBnaXZlIHRoZW0gc29tZSBoZWxwCisgIGxldCByZWNvcmRlZEVycm9yOworICBj
b25zdCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKHsKKyAgICBjYW5jZWwoY2FuY2VsRXJy
KSB7CisgICAgICByZWNvcmRlZEVycm9yID0gY2FuY2VsRXJyOworICAgICAgdGhyb3cgZXJyb3Ix
OworICAgIH0KKyAgfSk7CisKKyAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSgp
OworICBjb25zdCB3cml0ZXIgPSB3cy5nZXRXcml0ZXIoKTsKKyAgd3JpdGVyLmNsb3NlKCk7Cisg
IHdyaXRlci5yZWxlYXNlTG9jaygpOworCisgIHJldHVybiBwcm9taXNlX3JlamVjdHNfZXhhY3Rs
eSh0LCBlcnJvcjEsIHJzLnBpcGVUbyh3cyksICdwaXBlVG8gbXVzdCByZWplY3Qgd2l0aCB0aGUg
c2FtZSBlcnJvcicpLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9lcXVhbHMocmVjb3JkZWRFcnJv
ci5uYW1lLCAnVHlwZUVycm9yJywgJ3RoZSBjYW5jZWwgcmVhc29uIG11c3QgYmUgYSBUeXBlRXJy
b3InKTsKKworICAgIGFzc2VydF9hcnJheV9lcXVhbHMocnMuZXZlbnRzV2l0aG91dFB1bGxzLCBb
J2NhbmNlbCcsIHJlY29yZGVkRXJyb3JdKTsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2
ZW50cywgWydjbG9zZSddKTsKKworICAgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAgICBycy5n
ZXRSZWFkZXIoKS5jbG9zZWQsCisgICAgICB3cy5nZXRXcml0ZXIoKS5jbG9zZWQKKyAgICBdKTsK
KyAgfSk7CisKK30sICdDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogc3RhcnRz
IGNsb3NlZDsgcHJldmVudENhbmNlbCBvbWl0dGVkOyByZWplY3RlZCBjYW5jZWwgcHJvbWlzZScp
OworCitmb3IgKGNvbnN0IGZhbHN5IG9mIFt1bmRlZmluZWQsIG51bGwsIGZhbHNlLCArMCwgLTAs
IE5hTiwgJyddKSB7CisgIGNvbnN0IHN0cmluZ1ZlcnNpb24gPSBPYmplY3QuaXMoZmFsc3ksIC0w
KSA/ICctMCcgOiBTdHJpbmcoZmFsc3kpOworCisgIHByb21pc2VfdGVzdCgoKSA9PiB7CisKKyAg
ICBjb25zdCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKCk7CisKKyAgICBjb25zdCB3cyA9
IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKCk7CisgICAgY29uc3Qgd3JpdGVyID0gd3MuZ2V0V3Jp
dGVyKCk7CisgICAgd3JpdGVyLmNsb3NlKCk7CisgICAgd3JpdGVyLnJlbGVhc2VMb2NrKCk7CisK
KyAgICByZXR1cm4gcnMucGlwZVRvKHdzLCB7IHByZXZlbnRDYW5jZWw6IGZhbHN5IH0pLnRoZW4o
CisgICAgICAoKSA9PiBhc3NlcnRfdW5yZWFjaGVkKCd0aGUgcHJvbWlzZSBtdXN0IG5vdCBmdWxm
aWxsJyksCisgICAgICBlcnIgPT4geworICAgICAgICBhc3NlcnRfZXF1YWxzKGVyci5uYW1lLCAn
VHlwZUVycm9yJywgJ3RoZSBwcm9taXNlIG11c3QgcmVqZWN0IHdpdGggYSBUeXBlRXJyb3InKTsK
KworICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJzLmV2ZW50c1dpdGhvdXRQdWxscywgWydj
YW5jZWwnLCBlcnJdKTsKKyAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsn
Y2xvc2UnXSk7CisKKyAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKFsKKyAgICAgICAgICBycy5n
ZXRSZWFkZXIoKS5jbG9zZWQsCisgICAgICAgICAgd3MuZ2V0V3JpdGVyKCkuY2xvc2VkCisgICAg
ICAgIF0pOworICAgICAgfQorICAgICk7CisKKyAgfSwgYENsb3NpbmcgbXVzdCBiZSBwcm9wYWdh
dGVkIGJhY2t3YXJkOiBzdGFydHMgY2xvc2VkOyBwcmV2ZW50Q2FuY2VsID0gJHtzdHJpbmdWZXJz
aW9ufSAoZmFsc3kpOyBmdWxmaWxsZWQgY2FuY2VsIGAgKworICAgICBgcHJvbWlzZWApOworfQor
Citmb3IgKGNvbnN0IHRydXRoeSBvZiBbdHJ1ZSwgJ2EnLCAxLCBTeW1ib2woKSwgeyB9XSkgewor
ICBwcm9taXNlX3Rlc3QodCA9PiB7CisKKyAgICBjb25zdCBycyA9IHJlY29yZGluZ1JlYWRhYmxl
U3RyZWFtKCk7CisKKyAgICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKCk7Cisg
ICAgY29uc3Qgd3JpdGVyID0gd3MuZ2V0V3JpdGVyKCk7CisgICAgd3JpdGVyLmNsb3NlKCk7Cisg
ICAgd3JpdGVyLnJlbGVhc2VMb2NrKCk7CisKKyAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2pz
KHQsIFR5cGVFcnJvciwgcnMucGlwZVRvKHdzLCB7IHByZXZlbnRDYW5jZWw6IHRydXRoeSB9KSku
dGhlbigoKSA9PiB7CisgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJzLmV2ZW50c1dpdGhvdXRQ
dWxscywgW10pOworICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsnY2xvc2Un
XSk7CisKKyAgICAgIHJldHVybiB3cy5nZXRXcml0ZXIoKS5jbG9zZWQ7CisgICAgfSk7CisKKyAg
fSwgYENsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBzdGFydHMgY2xvc2VkOyBw
cmV2ZW50Q2FuY2VsID0gJHtTdHJpbmcodHJ1dGh5KX0gKHRydXRoeSlgKTsKK30KKworcHJvbWlz
ZV90ZXN0KHQgPT4geworCisgIGNvbnN0IHJzID0gcmVjb3JkaW5nUmVhZGFibGVTdHJlYW0oKTsK
KworICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKCk7CisgIGNvbnN0IHdyaXRl
ciA9IHdzLmdldFdyaXRlcigpOworICB3cml0ZXIuY2xvc2UoKTsKKyAgd3JpdGVyLnJlbGVhc2VM
b2NrKCk7CisKKyAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19qcyh0LCBUeXBlRXJyb3IsIHJzLnBp
cGVUbyh3cywgeyBwcmV2ZW50Q2FuY2VsOiB0cnVlLCBwcmV2ZW50QWJvcnQ6IHRydWUgfSkpCisg
ICAgLnRoZW4oKCkgPT4geworICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhycy5ldmVudHNXaXRo
b3V0UHVsbHMsIFtdKTsKKyAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ2Ns
b3NlJ10pOworCisgICAgICByZXR1cm4gd3MuZ2V0V3JpdGVyKCkuY2xvc2VkOworICAgIH0pOwor
Cit9LCAnQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IHN0YXJ0cyBjbG9zZWQ7
IHByZXZlbnRDYW5jZWwgPSB0cnVlLCBwcmV2ZW50QWJvcnQgPSB0cnVlJyk7CisKK3Byb21pc2Vf
dGVzdCh0ID0+IHsKKworICBjb25zdCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKCk7CisK
KyAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSgpOworICBjb25zdCB3cml0ZXIg
PSB3cy5nZXRXcml0ZXIoKTsKKyAgd3JpdGVyLmNsb3NlKCk7CisgIHdyaXRlci5yZWxlYXNlTG9j
aygpOworCisgIHJldHVybiBwcm9taXNlX3JlamVjdHNfanModCwgVHlwZUVycm9yLAorICAgICAg
ICAgICAgICAgICAgICAgICAgIHJzLnBpcGVUbyh3cywgeyBwcmV2ZW50Q2FuY2VsOiB0cnVlLCBw
cmV2ZW50QWJvcnQ6IHRydWUsIHByZXZlbnRDbG9zZTogdHJ1ZSB9KSkKKyAgLnRoZW4oKCkgPT4g
eworICAgIGFzc2VydF9hcnJheV9lcXVhbHMocnMuZXZlbnRzV2l0aG91dFB1bGxzLCBbXSk7Cisg
ICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsnY2xvc2UnXSk7CisKKyAgICByZXR1
cm4gd3MuZ2V0V3JpdGVyKCkuY2xvc2VkOworICB9KTsKKworfSwgJ0Nsb3NpbmcgbXVzdCBiZSBw
cm9wYWdhdGVkIGJhY2t3YXJkOiBzdGFydHMgY2xvc2VkOyBwcmV2ZW50Q2FuY2VsID0gdHJ1ZSwg
cHJldmVudEFib3J0ID0gdHJ1ZSwgcHJldmVudENsb3NlICcgKworICAgJz0gdHJ1ZScpOwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJl
YW1zL3BpcGluZy9jbG9zZS1wcm9wYWdhdGlvbi1iYWNrd2FyZC5hbnkud29ya2VyLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy9waXBpbmcvY2xvc2UtcHJvcGFnYXRpb24tYmFja3dhcmQuYW55Lndvcmtlci1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMDAwODFiYTFiZmNiYjM5OWI4ZDM2ZTUxMDhmNTRlYjk4ZTdkOTA1Zgot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy9waXBpbmcvY2xvc2UtcHJvcGFnYXRpb24tYmFja3dhcmQuYW55Lndvcmtl
ci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxOCBAQAorCitGQUlMIENsb3NpbmcgbXVzdCBiZSBw
cm9wYWdhdGVkIGJhY2t3YXJkOiBzdGFydHMgY2xvc2VkOyBwcmV2ZW50Q2FuY2VsIG9taXR0ZWQ7
IGZ1bGZpbGxlZCBjYW5jZWwgcHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0
cmVhbQorRkFJTCBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogc3RhcnRzIGNs
b3NlZDsgcHJldmVudENhbmNlbCBvbWl0dGVkOyByZWplY3RlZCBjYW5jZWwgcHJvbWlzZSBDYW4n
dCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBDbG9zaW5nIG11c3QgYmUgcHJv
cGFnYXRlZCBiYWNrd2FyZDogc3RhcnRzIGNsb3NlZDsgcHJldmVudENhbmNlbCA9IHVuZGVmaW5l
ZCAoZmFsc3kpOyBmdWxmaWxsZWQgY2FuY2VsIHByb21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTog
V3JpdGFibGVTdHJlYW0KK0ZBSUwgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6
IHN0YXJ0cyBjbG9zZWQ7IHByZXZlbnRDYW5jZWwgPSBudWxsIChmYWxzeSk7IGZ1bGZpbGxlZCBj
YW5jZWwgcHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBD
bG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogc3RhcnRzIGNsb3NlZDsgcHJldmVu
dENhbmNlbCA9IGZhbHNlIChmYWxzeSk7IGZ1bGZpbGxlZCBjYW5jZWwgcHJvbWlzZSBDYW4ndCBm
aW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBDbG9zaW5nIG11c3QgYmUgcHJvcGFn
YXRlZCBiYWNrd2FyZDogc3RhcnRzIGNsb3NlZDsgcHJldmVudENhbmNlbCA9IDAgKGZhbHN5KTsg
ZnVsZmlsbGVkIGNhbmNlbCBwcm9taXNlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3Ry
ZWFtCitGQUlMIENsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBzdGFydHMgY2xv
c2VkOyBwcmV2ZW50Q2FuY2VsID0gLTAgKGZhbHN5KTsgZnVsZmlsbGVkIGNhbmNlbCBwcm9taXNl
IENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIENsb3NpbmcgbXVzdCBi
ZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBzdGFydHMgY2xvc2VkOyBwcmV2ZW50Q2FuY2VsID0gTmFO
IChmYWxzeSk7IGZ1bGZpbGxlZCBjYW5jZWwgcHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBX
cml0YWJsZVN0cmVhbQorRkFJTCBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDog
c3RhcnRzIGNsb3NlZDsgcHJldmVudENhbmNlbCA9ICAoZmFsc3kpOyBmdWxmaWxsZWQgY2FuY2Vs
IHByb21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgQ2xvc2lu
ZyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IHN0YXJ0cyBjbG9zZWQ7IHByZXZlbnRDYW5j
ZWwgPSB0cnVlICh0cnV0aHkpIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitG
QUlMIENsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBzdGFydHMgY2xvc2VkOyBw
cmV2ZW50Q2FuY2VsID0gYSAodHJ1dGh5KSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0
cmVhbQorRkFJTCBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogc3RhcnRzIGNs
b3NlZDsgcHJldmVudENhbmNlbCA9IDEgKHRydXRoeSkgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3Jp
dGFibGVTdHJlYW0KK0ZBSUwgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IHN0
YXJ0cyBjbG9zZWQ7IHByZXZlbnRDYW5jZWwgPSBTeW1ib2woKSAodHJ1dGh5KSBDYW4ndCBmaW5k
IHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRl
ZCBiYWNrd2FyZDogc3RhcnRzIGNsb3NlZDsgcHJldmVudENhbmNlbCA9IFtvYmplY3QgT2JqZWN0
XSAodHJ1dGh5KSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBDbG9z
aW5nIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogc3RhcnRzIGNsb3NlZDsgcHJldmVudENh
bmNlbCA9IHRydWUsIHByZXZlbnRBYm9ydCA9IHRydWUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3Jp
dGFibGVTdHJlYW0KK0ZBSUwgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IHN0
YXJ0cyBjbG9zZWQ7IHByZXZlbnRDYW5jZWwgPSB0cnVlLCBwcmV2ZW50QWJvcnQgPSB0cnVlLCBw
cmV2ZW50Q2xvc2UgPSB0cnVlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy9waXBpbmcvY2xvc2UtcHJvcGFnYXRpb24tYmFja3dhcmQuYW55Lndvcmtlci5odG1s
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3Bp
cGluZy9jbG9zZS1wcm9wYWdhdGlvbi1iYWNrd2FyZC5hbnkud29ya2VyLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMjM4MjkxMzUyOGU2OTNiM2E1ZDU2YzY2MGE0NTA2MDk4MGI1NDhjMwotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy9waXBpbmcvY2xvc2UtcHJvcGFnYXRpb24tYmFja3dhcmQuYW55Lndvcmtlci5odG1sCkBAIC0w
LDAgKzEgQEAKKzwhLS0gVGhpcyBmaWxlIGlzIHJlcXVpcmVkIGZvciBXZWJLaXQgdGVzdCBpbmZy
YXN0cnVjdHVyZSB0byBydW4gdGhlIHRlbXBsYXRlZCB0ZXN0IC0tPgpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvY2xvc2UtcHJvcGFnYXRpb24tYmFja3dhcmQuZGVk
aWNhdGVkd29ya2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvY2xvc2UtcHJvcGFnYXRpb24tYmFja3dhcmQu
ZGVkaWNhdGVkd29ya2VyLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwODFiYTFiZmNiYjM5OWI4ZDM2ZTUxMDhmNTRlYjk4ZTdkOTA1Zi4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Nsb3NlLXByb3BhZ2F0aW9uLWJh
Y2t3YXJkLmRlZGljYXRlZHdvcmtlci1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwx
OCArMCwwIEBACi0KLUZBSUwgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IHN0
YXJ0cyBjbG9zZWQ7IHByZXZlbnRDYW5jZWwgb21pdHRlZDsgZnVsZmlsbGVkIGNhbmNlbCBwcm9t
aXNlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIENsb3NpbmcgbXVz
dCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBzdGFydHMgY2xvc2VkOyBwcmV2ZW50Q2FuY2VsIG9t
aXR0ZWQ7IHJlamVjdGVkIGNhbmNlbCBwcm9taXNlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRh
YmxlU3RyZWFtCi1GQUlMIENsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBzdGFy
dHMgY2xvc2VkOyBwcmV2ZW50Q2FuY2VsID0gdW5kZWZpbmVkIChmYWxzeSk7IGZ1bGZpbGxlZCBj
YW5jZWwgcHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBD
bG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogc3RhcnRzIGNsb3NlZDsgcHJldmVu
dENhbmNlbCA9IG51bGwgKGZhbHN5KTsgZnVsZmlsbGVkIGNhbmNlbCBwcm9taXNlIENhbid0IGZp
bmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIENsb3NpbmcgbXVzdCBiZSBwcm9wYWdh
dGVkIGJhY2t3YXJkOiBzdGFydHMgY2xvc2VkOyBwcmV2ZW50Q2FuY2VsID0gZmFsc2UgKGZhbHN5
KTsgZnVsZmlsbGVkIGNhbmNlbCBwcm9taXNlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxl
U3RyZWFtCi1GQUlMIENsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBzdGFydHMg
Y2xvc2VkOyBwcmV2ZW50Q2FuY2VsID0gMCAoZmFsc3kpOyBmdWxmaWxsZWQgY2FuY2VsIHByb21p
c2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgQ2xvc2luZyBtdXN0
IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IHN0YXJ0cyBjbG9zZWQ7IHByZXZlbnRDYW5jZWwgPSAt
MCAoZmFsc3kpOyBmdWxmaWxsZWQgY2FuY2VsIHByb21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTog
V3JpdGFibGVTdHJlYW0KLUZBSUwgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6
IHN0YXJ0cyBjbG9zZWQ7IHByZXZlbnRDYW5jZWwgPSBOYU4gKGZhbHN5KTsgZnVsZmlsbGVkIGNh
bmNlbCBwcm9taXNlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIENs
b3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBzdGFydHMgY2xvc2VkOyBwcmV2ZW50
Q2FuY2VsID0gIChmYWxzeSk7IGZ1bGZpbGxlZCBjYW5jZWwgcHJvbWlzZSBDYW4ndCBmaW5kIHZh
cmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBi
YWNrd2FyZDogc3RhcnRzIGNsb3NlZDsgcHJldmVudENhbmNlbCA9IHRydWUgKHRydXRoeSkgQ2Fu
J3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgQ2xvc2luZyBtdXN0IGJlIHBy
b3BhZ2F0ZWQgYmFja3dhcmQ6IHN0YXJ0cyBjbG9zZWQ7IHByZXZlbnRDYW5jZWwgPSBhICh0cnV0
aHkpIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIENsb3NpbmcgbXVz
dCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBzdGFydHMgY2xvc2VkOyBwcmV2ZW50Q2FuY2VsID0g
MSAodHJ1dGh5KSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBDbG9z
aW5nIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogc3RhcnRzIGNsb3NlZDsgcHJldmVudENh
bmNlbCA9IFN5bWJvbCgpICh0cnV0aHkpIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3Ry
ZWFtCi1GQUlMIENsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBzdGFydHMgY2xv
c2VkOyBwcmV2ZW50Q2FuY2VsID0gW29iamVjdCBPYmplY3RdICh0cnV0aHkpIENhbid0IGZpbmQg
dmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIENsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVk
IGJhY2t3YXJkOiBzdGFydHMgY2xvc2VkOyBwcmV2ZW50Q2FuY2VsID0gdHJ1ZSwgcHJldmVudEFi
b3J0ID0gdHJ1ZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBDbG9z
aW5nIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogc3RhcnRzIGNsb3NlZDsgcHJldmVudENh
bmNlbCA9IHRydWUsIHByZXZlbnRBYm9ydCA9IHRydWUsIHByZXZlbnRDbG9zZSA9IHRydWUgQ2Fu
J3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9jbG9zZS1w
cm9wYWdhdGlvbi1iYWNrd2FyZC5kZWRpY2F0ZWR3b3JrZXIuaHRtbCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvY2xvc2UtcHJvcGFn
YXRpb24tYmFja3dhcmQuZGVkaWNhdGVkd29ya2VyLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDA3ZjM4NzViMmIwMjg1NDExYTcwMDlmYjg3OTQ3OTg5ZWFiNGMyNTAuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9jbG9zZS1wcm9wYWdh
dGlvbi1iYWNrd2FyZC5kZWRpY2F0ZWR3b3JrZXIuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEx
ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHRpdGxl
PmNsb3NlLXByb3BhZ2F0aW9uLWJhY2t3YXJkLmpzIGRlZGljYXRlZCB3b3JrZXIgd3JhcHBlciBm
aWxlPC90aXRsZT4KLQotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwv
c2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwv
c2NyaXB0PgotCi08c2NyaXB0PgotJ3VzZSBzdHJpY3QnOwotZmV0Y2hfdGVzdHNfZnJvbV93b3Jr
ZXIobmV3IFdvcmtlcignY2xvc2UtcHJvcGFnYXRpb24tYmFja3dhcmQuanMnKSk7Ci08L3Njcmlw
dD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy9waXBpbmcvY2xvc2UtcHJvcGFnYXRpb24tYmFja3dhcmQuaHRtbCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvY2xv
c2UtcHJvcGFnYXRpb24tYmFja3dhcmQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMjUyMzlhMzNiMTVhYjhlNjNkMTljMzg0ZWQ5N2Q2NTU3OWRkZGVjMS4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Nsb3NlLXByb3BhZ2F0aW9uLWJh
Y2t3YXJkLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi08IURPQ1RZUEUgaHRt
bD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTx0aXRsZT5jbG9zZS1wcm9wYWdhdGlvbi1iYWNr
d2FyZC5qcyBicm93c2VyIGNvbnRleHQgd3JhcHBlciBmaWxlPC90aXRsZT4KLQotPHNjcmlwdCBz
cmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9y
ZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotCi08c2NyaXB0IHNyYz0i
Li4vcmVzb3VyY2VzL3JlY29yZGluZy1zdHJlYW1zLmpzIj48L3NjcmlwdD4KLQotPHNjcmlwdCBz
cmM9ImNsb3NlLXByb3BhZ2F0aW9uLWJhY2t3YXJkLmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBp
bmcvY2xvc2UtcHJvcGFnYXRpb24tYmFja3dhcmQuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Nsb3NlLXByb3BhZ2F0aW9uLWJh
Y2t3YXJkLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMTIwN2U5OTY3MmJhNzJm
ZjQ1NGJiMDNiM2Q3YTgxYjA2MmVjMzNkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy9waXBpbmcvY2xvc2UtcHJvcGFnYXRpb24tYmFja3dhcmQuanMKKysrIC9kZXYv
bnVsbApAQCAtMSwxNTggKzAsMCBAQAotJ3VzZSBzdHJpY3QnOwotCi1pZiAoc2VsZi5pbXBvcnRT
Y3JpcHRzKSB7Ci0gIHNlbGYuaW1wb3J0U2NyaXB0cygnL3Jlc291cmNlcy90ZXN0aGFybmVzcy5q
cycpOwotICBzZWxmLmltcG9ydFNjcmlwdHMoJy4uL3Jlc291cmNlcy9yZWNvcmRpbmctc3RyZWFt
cy5qcycpOwotfQotCi1jb25zdCBlcnJvcjEgPSBuZXcgRXJyb3IoJ2Vycm9yMSEnKTsKLWVycm9y
MS5uYW1lID0gJ2Vycm9yMSc7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgY29uc3QgcnMg
PSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSgpOwotCi0gIGNvbnN0IHdzID0gcmVjb3JkaW5nV3Jp
dGFibGVTdHJlYW0oKTsKLSAgY29uc3Qgd3JpdGVyID0gd3MuZ2V0V3JpdGVyKCk7Ci0gIHdyaXRl
ci5jbG9zZSgpOwotICB3cml0ZXIucmVsZWFzZUxvY2soKTsKLQotICByZXR1cm4gcnMucGlwZVRv
KHdzKS50aGVuKAotICAgICgpID0+IGFzc2VydF91bnJlYWNoZWQoJ3RoZSBwcm9taXNlIG11c3Qg
bm90IGZ1bGZpbGwnKSwKLSAgICBlcnIgPT4gewotICAgICAgYXNzZXJ0X2VxdWFscyhlcnIubmFt
ZSwgJ1R5cGVFcnJvcicsICd0aGUgcHJvbWlzZSBtdXN0IHJlamVjdCB3aXRoIGEgVHlwZUVycm9y
Jyk7Ci0KLSAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMocnMuZXZlbnRzV2l0aG91dFB1bGxzLCBb
J2NhbmNlbCcsIGVycl0pOwotICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsn
Y2xvc2UnXSk7Ci0KLSAgICAgIHJldHVybiBQcm9taXNlLmFsbChbCi0gICAgICAgIHJzLmdldFJl
YWRlcigpLmNsb3NlZCwKLSAgICAgICAgd3MuZ2V0V3JpdGVyKCkuY2xvc2VkCi0gICAgICBdKTsK
LSAgICB9Ci0gICk7Ci0KLX0sICdDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDog
c3RhcnRzIGNsb3NlZDsgcHJldmVudENhbmNlbCBvbWl0dGVkOyBmdWxmaWxsZWQgY2FuY2VsIHBy
b21pc2UnKTsKLQotcHJvbWlzZV90ZXN0KHQgPT4gewotCi0gIC8vIE91ciByZWNvcmRpbmcgc3Ry
ZWFtcyBkbyBub3QgZGVhbCB3ZWxsIHdpdGggZXJyb3JzIGdlbmVyYXRlZCBieSB0aGUgc3lzdGVt
LCBzbyBnaXZlIHRoZW0gc29tZSBoZWxwCi0gIGxldCByZWNvcmRlZEVycm9yOwotICBjb25zdCBy
cyA9IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKHsKLSAgICBjYW5jZWwoY2FuY2VsRXJyKSB7Ci0g
ICAgICByZWNvcmRlZEVycm9yID0gY2FuY2VsRXJyOwotICAgICAgdGhyb3cgZXJyb3IxOwotICAg
IH0KLSAgfSk7Ci0KLSAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSgpOwotICBj
b25zdCB3cml0ZXIgPSB3cy5nZXRXcml0ZXIoKTsKLSAgd3JpdGVyLmNsb3NlKCk7Ci0gIHdyaXRl
ci5yZWxlYXNlTG9jaygpOwotCi0gIHJldHVybiBwcm9taXNlX3JlamVjdHModCwgZXJyb3IxLCBy
cy5waXBlVG8od3MpLCAncGlwZVRvIG11c3QgcmVqZWN0IHdpdGggdGhlIHNhbWUgZXJyb3InKS50
aGVuKCgpID0+IHsKLSAgICBhc3NlcnRfZXF1YWxzKHJlY29yZGVkRXJyb3IubmFtZSwgJ1R5cGVF
cnJvcicsICd0aGUgY2FuY2VsIHJlYXNvbiBtdXN0IGJlIGEgVHlwZUVycm9yJyk7Ci0KLSAgICBh
c3NlcnRfYXJyYXlfZXF1YWxzKHJzLmV2ZW50c1dpdGhvdXRQdWxscywgWydjYW5jZWwnLCByZWNv
cmRlZEVycm9yXSk7Ci0gICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsnY2xvc2Un
XSk7Ci0KLSAgICByZXR1cm4gUHJvbWlzZS5hbGwoWwotICAgICAgcnMuZ2V0UmVhZGVyKCkuY2xv
c2VkLAotICAgICAgd3MuZ2V0V3JpdGVyKCkuY2xvc2VkCi0gICAgXSk7Ci0gIH0pOwotCi19LCAn
Q2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IHN0YXJ0cyBjbG9zZWQ7IHByZXZl
bnRDYW5jZWwgb21pdHRlZDsgcmVqZWN0ZWQgY2FuY2VsIHByb21pc2UnKTsKLQotZm9yIChjb25z
dCBmYWxzeSBvZiBbdW5kZWZpbmVkLCBudWxsLCBmYWxzZSwgKzAsIC0wLCBOYU4sICcnXSkgewot
ICBjb25zdCBzdHJpbmdWZXJzaW9uID0gT2JqZWN0LmlzKGZhbHN5LCAtMCkgPyAnLTAnIDogU3Ry
aW5nKGZhbHN5KTsKLQotICBwcm9taXNlX3Rlc3QoKCkgPT4gewotCi0gICAgY29uc3QgcnMgPSBy
ZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSgpOwotCi0gICAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0
YWJsZVN0cmVhbSgpOwotICAgIGNvbnN0IHdyaXRlciA9IHdzLmdldFdyaXRlcigpOwotICAgIHdy
aXRlci5jbG9zZSgpOwotICAgIHdyaXRlci5yZWxlYXNlTG9jaygpOwotCi0gICAgcmV0dXJuIHJz
LnBpcGVUbyh3cywgeyBwcmV2ZW50Q2FuY2VsOiBmYWxzeSB9KS50aGVuKAotICAgICAgKCkgPT4g
YXNzZXJ0X3VucmVhY2hlZCgndGhlIHByb21pc2UgbXVzdCBub3QgZnVsZmlsbCcpLAotICAgICAg
ZXJyID0+IHsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyhlcnIubmFtZSwgJ1R5cGVFcnJvcicsICd0
aGUgcHJvbWlzZSBtdXN0IHJlamVjdCB3aXRoIGEgVHlwZUVycm9yJyk7Ci0KLSAgICAgICAgYXNz
ZXJ0X2FycmF5X2VxdWFscyhycy5ldmVudHNXaXRob3V0UHVsbHMsIFsnY2FuY2VsJywgZXJyXSk7
Ci0gICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ2Nsb3NlJ10pOwotCi0g
ICAgICAgIHJldHVybiBQcm9taXNlLmFsbChbCi0gICAgICAgICAgcnMuZ2V0UmVhZGVyKCkuY2xv
c2VkLAotICAgICAgICAgIHdzLmdldFdyaXRlcigpLmNsb3NlZAotICAgICAgICBdKTsKLSAgICAg
IH0KLSAgICApOwotCi0gIH0sIGBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDog
c3RhcnRzIGNsb3NlZDsgcHJldmVudENhbmNlbCA9ICR7c3RyaW5nVmVyc2lvbn0gKGZhbHN5KTsg
ZnVsZmlsbGVkIGNhbmNlbCBgICsKLSAgICAgYHByb21pc2VgKTsKLX0KLQotZm9yIChjb25zdCB0
cnV0aHkgb2YgW3RydWUsICdhJywgMSwgU3ltYm9sKCksIHsgfV0pIHsKLSAgcHJvbWlzZV90ZXN0
KHQgPT4gewotCi0gICAgY29uc3QgcnMgPSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSgpOwotCi0g
ICAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSgpOwotICAgIGNvbnN0IHdyaXRl
ciA9IHdzLmdldFdyaXRlcigpOwotICAgIHdyaXRlci5jbG9zZSgpOwotICAgIHdyaXRlci5yZWxl
YXNlTG9jaygpOwotCi0gICAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0LCBuZXcgVHlwZUVycm9y
KCksIHJzLnBpcGVUbyh3cywgeyBwcmV2ZW50Q2FuY2VsOiB0cnV0aHkgfSkpLnRoZW4oKCkgPT4g
ewotICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhycy5ldmVudHNXaXRob3V0UHVsbHMsIFtdKTsK
LSAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ2Nsb3NlJ10pOwotCi0gICAg
ICByZXR1cm4gd3MuZ2V0V3JpdGVyKCkuY2xvc2VkOwotICAgIH0pOwotCi0gIH0sIGBDbG9zaW5n
IG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogc3RhcnRzIGNsb3NlZDsgcHJldmVudENhbmNl
bCA9ICR7U3RyaW5nKHRydXRoeSl9ICh0cnV0aHkpYCk7Ci19Ci0KLXByb21pc2VfdGVzdCh0ID0+
IHsKLQotICBjb25zdCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKCk7Ci0KLSAgY29uc3Qg
d3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSgpOwotICBjb25zdCB3cml0ZXIgPSB3cy5nZXRX
cml0ZXIoKTsKLSAgd3JpdGVyLmNsb3NlKCk7Ci0gIHdyaXRlci5yZWxlYXNlTG9jaygpOwotCi0g
IHJldHVybiBwcm9taXNlX3JlamVjdHModCwgbmV3IFR5cGVFcnJvcigpLCBycy5waXBlVG8od3Ms
IHsgcHJldmVudENhbmNlbDogdHJ1ZSwgcHJldmVudEFib3J0OiB0cnVlIH0pKQotICAgIC50aGVu
KCgpID0+IHsKLSAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMocnMuZXZlbnRzV2l0aG91dFB1bGxz
LCBbXSk7Ci0gICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWydjbG9zZSddKTsK
LQotICAgICAgcmV0dXJuIHdzLmdldFdyaXRlcigpLmNsb3NlZDsKLSAgICB9KTsKLQotfSwgJ0Ns
b3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBzdGFydHMgY2xvc2VkOyBwcmV2ZW50
Q2FuY2VsID0gdHJ1ZSwgcHJldmVudEFib3J0ID0gdHJ1ZScpOwotCi1wcm9taXNlX3Rlc3QodCA9
PiB7Ci0KLSAgY29uc3QgcnMgPSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSgpOwotCi0gIGNvbnN0
IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0oKTsKLSAgY29uc3Qgd3JpdGVyID0gd3MuZ2V0
V3JpdGVyKCk7Ci0gIHdyaXRlci5jbG9zZSgpOwotICB3cml0ZXIucmVsZWFzZUxvY2soKTsKLQot
ICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHQsIG5ldyBUeXBlRXJyb3IoKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICBycy5waXBlVG8od3MsIHsgcHJldmVudENhbmNlbDogdHJ1ZSwgcHJldmVu
dEFib3J0OiB0cnVlLCBwcmV2ZW50Q2xvc2U6IHRydWUgfSkpCi0gIC50aGVuKCgpID0+IHsKLSAg
ICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJzLmV2ZW50c1dpdGhvdXRQdWxscywgW10pOwotICAgIGFz
c2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ2Nsb3NlJ10pOwotCi0gICAgcmV0dXJuIHdz
LmdldFdyaXRlcigpLmNsb3NlZDsKLSAgfSk7Ci0KLX0sICdDbG9zaW5nIG11c3QgYmUgcHJvcGFn
YXRlZCBiYWNrd2FyZDogc3RhcnRzIGNsb3NlZDsgcHJldmVudENhbmNlbCA9IHRydWUsIHByZXZl
bnRBYm9ydCA9IHRydWUsIHByZXZlbnRDbG9zZSAnICsKLSAgICc9IHRydWUnKTsKLQotZG9uZSgp
OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL3BpcGluZy9jbG9zZS1wcm9wYWdhdGlvbi1iYWNrd2FyZC5zZXJ2aWNld29ya2Vy
Lmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvY2xvc2UtcHJvcGFnYXRpb24tYmFja3dhcmQuc2Vydmlj
ZXdvcmtlci5odHRwcy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGU2ZmVjZWZiNWNlOWM5OWQ5NzM0OGYzZGY2NzcyMDllNDNlYzQ1NDQuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9jbG9zZS1wcm9wYWdhdGlvbi1iYWNr
d2FyZC5zZXJ2aWNld29ya2VyLmh0dHBzLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0x
LDE5ICswLDAgQEAKLQotUEFTUyBTZXJ2aWNlIHdvcmtlciB0ZXN0IHNldHVwIAotRkFJTCBDbG9z
aW5nIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogc3RhcnRzIGNsb3NlZDsgcHJldmVudENh
bmNlbCBvbWl0dGVkOyBmdWxmaWxsZWQgY2FuY2VsIHByb21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJs
ZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dh
cmQ6IHN0YXJ0cyBjbG9zZWQ7IHByZXZlbnRDYW5jZWwgb21pdHRlZDsgcmVqZWN0ZWQgY2FuY2Vs
IHByb21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgQ2xvc2lu
ZyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IHN0YXJ0cyBjbG9zZWQ7IHByZXZlbnRDYW5j
ZWwgPSB1bmRlZmluZWQgKGZhbHN5KTsgZnVsZmlsbGVkIGNhbmNlbCBwcm9taXNlIENhbid0IGZp
bmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIENsb3NpbmcgbXVzdCBiZSBwcm9wYWdh
dGVkIGJhY2t3YXJkOiBzdGFydHMgY2xvc2VkOyBwcmV2ZW50Q2FuY2VsID0gbnVsbCAoZmFsc3kp
OyBmdWxmaWxsZWQgY2FuY2VsIHByb21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVT
dHJlYW0KLUZBSUwgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IHN0YXJ0cyBj
bG9zZWQ7IHByZXZlbnRDYW5jZWwgPSBmYWxzZSAoZmFsc3kpOyBmdWxmaWxsZWQgY2FuY2VsIHBy
b21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgQ2xvc2luZyBt
dXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IHN0YXJ0cyBjbG9zZWQ7IHByZXZlbnRDYW5jZWwg
PSAwIChmYWxzeSk7IGZ1bGZpbGxlZCBjYW5jZWwgcHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxl
OiBXcml0YWJsZVN0cmVhbQotRkFJTCBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2Fy
ZDogc3RhcnRzIGNsb3NlZDsgcHJldmVudENhbmNlbCA9IC0wIChmYWxzeSk7IGZ1bGZpbGxlZCBj
YW5jZWwgcHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBD
bG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogc3RhcnRzIGNsb3NlZDsgcHJldmVu
dENhbmNlbCA9IE5hTiAoZmFsc3kpOyBmdWxmaWxsZWQgY2FuY2VsIHByb21pc2UgQ2FuJ3QgZmlu
ZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0
ZWQgYmFja3dhcmQ6IHN0YXJ0cyBjbG9zZWQ7IHByZXZlbnRDYW5jZWwgPSAgKGZhbHN5KTsgZnVs
ZmlsbGVkIGNhbmNlbCBwcm9taXNlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFt
Ci1GQUlMIENsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBzdGFydHMgY2xvc2Vk
OyBwcmV2ZW50Q2FuY2VsID0gdHJ1ZSAodHJ1dGh5KSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0
YWJsZVN0cmVhbQotRkFJTCBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogc3Rh
cnRzIGNsb3NlZDsgcHJldmVudENhbmNlbCA9IGEgKHRydXRoeSkgQ2FuJ3QgZmluZCB2YXJpYWJs
ZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dh
cmQ6IHN0YXJ0cyBjbG9zZWQ7IHByZXZlbnRDYW5jZWwgPSAxICh0cnV0aHkpIENhbid0IGZpbmQg
dmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIENsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVk
IGJhY2t3YXJkOiBzdGFydHMgY2xvc2VkOyBwcmV2ZW50Q2FuY2VsID0gU3ltYm9sKCkgKHRydXRo
eSkgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgQ2xvc2luZyBtdXN0
IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IHN0YXJ0cyBjbG9zZWQ7IHByZXZlbnRDYW5jZWwgPSBb
b2JqZWN0IE9iamVjdF0gKHRydXRoeSkgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJl
YW0KLUZBSUwgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IHN0YXJ0cyBjbG9z
ZWQ7IHByZXZlbnRDYW5jZWwgPSB0cnVlLCBwcmV2ZW50QWJvcnQgPSB0cnVlIENhbid0IGZpbmQg
dmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIENsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVk
IGJhY2t3YXJkOiBzdGFydHMgY2xvc2VkOyBwcmV2ZW50Q2FuY2VsID0gdHJ1ZSwgcHJldmVudEFi
b3J0ID0gdHJ1ZSwgcHJldmVudENsb3NlID0gdHJ1ZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0
YWJsZVN0cmVhbQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Nsb3NlLXByb3BhZ2F0aW9uLWJhY2t3YXJkLnNl
cnZpY2V3b3JrZXIuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvY2xvc2UtcHJvcGFnYXRpb24tYmFja3dhcmQuc2Vy
dmljZXdvcmtlci5odHRwcy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NmIz
MDQwNmU5ODE1MzU5ZmI2M2Q5NzRkOTBkMGVmYWUyNWZlNzUxLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvY2xvc2UtcHJvcGFnYXRpb24tYmFja3dhcmQu
c2VydmljZXdvcmtlci5odHRwcy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAot
PCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08dGl0bGU+Y2xvc2UtcHJv
cGFnYXRpb24tYmFja3dhcmQuanMgc2VydmljZSB3b3JrZXIgd3JhcHBlciBmaWxlPC90aXRsZT4K
LQotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNj
cmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNj
cmlwdCBzcmM9Ii9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvcmVzb3VyY2VzL3Rlc3Qt
aGVscGVycy5zdWIuanMiPjwvc2NyaXB0PgotCi08c2NyaXB0PgotJ3VzZSBzdHJpY3QnOwotc2Vy
dmljZV93b3JrZXJfdGVzdCgnY2xvc2UtcHJvcGFnYXRpb24tYmFja3dhcmQuanMnLCAnU2Vydmlj
ZSB3b3JrZXIgdGVzdCBzZXR1cCcpOwotPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Nsb3NlLXBy
b3BhZ2F0aW9uLWJhY2t3YXJkLnNoYXJlZHdvcmtlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Nsb3NlLXBy
b3BhZ2F0aW9uLWJhY2t3YXJkLnNoYXJlZHdvcmtlci1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDA5ZDVkMjUwOWQ3ODQ3ZThjZDZmZTY2MDZhYTYwY2RkMzNhYTQ3
NGUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9jbG9z
ZS1wcm9wYWdhdGlvbi1iYWNrd2FyZC5zaGFyZWR3b3JrZXItZXhwZWN0ZWQudHh0CisrKyAvZGV2
L251bGwKQEAgLTEsNSArMCwwIEBACi1DT05TT0xFIE1FU1NBR0U6IFJlZmVyZW5jZUVycm9yOiBD
YW4ndCBmaW5kIHZhcmlhYmxlOiBTaGFyZWRXb3JrZXIKLQotSGFybmVzcyBFcnJvciAoRkFJTCks
IG1lc3NhZ2UgPSBSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogU2hhcmVkV29y
a2VyCi0KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zdHJlYW1zL3BpcGluZy9jbG9zZS1wcm9wYWdhdGlvbi1iYWNrd2FyZC5zaGFyZWR3
b3JrZXIuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy9waXBpbmcvY2xvc2UtcHJvcGFnYXRpb24tYmFja3dhcmQuc2hhcmVkd29ya2VyLmh0
bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVkMTliNzY4ODg0NzhkNDI3YmE3OTBh
ZTNlMGZjMmZjYjRkZTE5YjMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJl
YW1zL3BpcGluZy9jbG9zZS1wcm9wYWdhdGlvbi1iYWNrd2FyZC5zaGFyZWR3b3JrZXIuaHRtbAor
KysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hh
cnNldD0idXRmLTgiPgotPHRpdGxlPmNsb3NlLXByb3BhZ2F0aW9uLWJhY2t3YXJkLmpzIHNoYXJl
ZCB3b3JrZXIgd3JhcHBlciBmaWxlPC90aXRsZT4KLQotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMv
dGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhh
cm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotCi08c2NyaXB0PgotJ3VzZSBzdHJpY3QnOwotZmV0
Y2hfdGVzdHNfZnJvbV93b3JrZXIobmV3IFNoYXJlZFdvcmtlcignY2xvc2UtcHJvcGFnYXRpb24t
YmFja3dhcmQuanMnKSk7Ci08L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvY2xvc2UtcHJvcGFnYXRp
b24tZm9yd2FyZC5hbnktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9jbG9zZS1wcm9wYWdhdGlvbi1mb3J3YXJk
LmFueS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWRmMDkxNDU1ODA1ZmU4ZDg2MWZiNTg0ZWNh
NDIyMzBjZDVkOTU1NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvY2xvc2UtcHJvcGFnYXRpb24tZm9y
d2FyZC5hbnktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNDEgQEAKK0NPTlNPTEUgTUVTU0FHRTog
VW5oYW5kbGVkIFByb21pc2UgUmVqZWN0aW9uOiBUeXBlRXJyb3I6IGNhbmNlbCgpIGNhbGxlZCBv
biBhIHJlYWRlciBvd25lZCBieSBubyByZWFkYWJsZSBzdHJlYW0KK0NPTlNPTEUgTUVTU0FHRTog
VW5oYW5kbGVkIFByb21pc2UgUmVqZWN0aW9uOiBUeXBlRXJyb3I6IGNhbmNlbCgpIGNhbGxlZCBv
biBhIHJlYWRlciBvd25lZCBieSBubyByZWFkYWJsZSBzdHJlYW0KK0NPTlNPTEUgTUVTU0FHRTog
VW5oYW5kbGVkIFByb21pc2UgUmVqZWN0aW9uOiBUeXBlRXJyb3I6IGNhbmNlbCgpIGNhbGxlZCBv
biBhIHJlYWRlciBvd25lZCBieSBubyByZWFkYWJsZSBzdHJlYW0KK0NPTlNPTEUgTUVTU0FHRTog
VW5oYW5kbGVkIFByb21pc2UgUmVqZWN0aW9uOiBUeXBlRXJyb3I6IGNhbmNlbCgpIGNhbGxlZCBv
biBhIHJlYWRlciBvd25lZCBieSBubyByZWFkYWJsZSBzdHJlYW0KK0NPTlNPTEUgTUVTU0FHRTog
VW5oYW5kbGVkIFByb21pc2UgUmVqZWN0aW9uOiBlcnJvcjE6IGVycm9yMSEKK0NPTlNPTEUgTUVT
U0FHRTogVW5oYW5kbGVkIFByb21pc2UgUmVqZWN0aW9uOiBlcnJvcjE6IGVycm9yMSEKK0NPTlNP
TEUgTUVTU0FHRTogVW5oYW5kbGVkIFByb21pc2UgUmVqZWN0aW9uOiBUeXBlRXJyb3I6IGNhbmNl
bCgpIGNhbGxlZCBvbiBhIHJlYWRlciBvd25lZCBieSBubyByZWFkYWJsZSBzdHJlYW0KKworSGFy
bmVzcyBFcnJvciAoRkFJTCksIG1lc3NhZ2UgPSBVbmhhbmRsZWQgcmVqZWN0aW9uOiBjYW5jZWwo
KSBjYWxsZWQgb24gYSByZWFkZXIgb3duZWQgYnkgbm8gcmVhZGFibGUgc3RyZWFtCisKK0ZBSUwg
Q2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc3RhcnRzIGNsb3NlZDsgcHJldmVu
dENsb3NlIG9taXR0ZWQ7IGZ1bGZpbGxlZCBjbG9zZSBwcm9taXNlIHByb21pc2VfdGVzdDogVW5o
YW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVFcnJvcjogd3MuZ2V0V3Jp
dGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRl
cicgaXMgdW5kZWZpbmVkKSIKK0ZBSUwgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2Fy
ZDogc3RhcnRzIGNsb3NlZDsgcHJldmVudENsb3NlIG9taXR0ZWQ7IHJlamVjdGVkIGNsb3NlIHBy
b21pc2UgcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVj
dCAiVHlwZUVycm9yOiB3cy5nZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0
V3JpdGVyKCknLCAnd3MuZ2V0V3JpdGVyJyBpcyB1bmRlZmluZWQpIgorRkFJTCBDbG9zaW5nIG11
c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBzdGFydHMgY2xvc2VkOyBwcmV2ZW50Q2xvc2UgPSB1
bmRlZmluZWQgKGZhbHN5KTsgZnVsZmlsbGVkIGNsb3NlIHByb21pc2UgcHJvbWlzZV90ZXN0OiBV
bmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiVHlwZUVycm9yOiB3cy5nZXRX
cml0ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3JpdGVyKCknLCAnd3MuZ2V0V3Jp
dGVyJyBpcyB1bmRlZmluZWQpIgorRkFJTCBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3
YXJkOiBzdGFydHMgY2xvc2VkOyBwcmV2ZW50Q2xvc2UgPSBudWxsIChmYWxzeSk7IGZ1bGZpbGxl
ZCBjbG9zZSBwcm9taXNlIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZh
bHVlOiBvYmplY3QgIlR5cGVFcnJvcjogd3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAo
SW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicgaXMgdW5kZWZpbmVkKSIKK0ZBSUwg
Q2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc3RhcnRzIGNsb3NlZDsgcHJldmVu
dENsb3NlID0gZmFsc2UgKGZhbHN5KTsgZnVsZmlsbGVkIGNsb3NlIHByb21pc2UgcHJvbWlzZV90
ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiVHlwZUVycm9yOiB3
cy5nZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3JpdGVyKCknLCAnd3Mu
Z2V0V3JpdGVyJyBpcyB1bmRlZmluZWQpIgorRkFJTCBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRl
ZCBmb3J3YXJkOiBzdGFydHMgY2xvc2VkOyBwcmV2ZW50Q2xvc2UgPSAwIChmYWxzeSk7IGZ1bGZp
bGxlZCBjbG9zZSBwcm9taXNlIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRo
IHZhbHVlOiBvYmplY3QgIlR5cGVFcnJvcjogd3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9u
LiAoSW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicgaXMgdW5kZWZpbmVkKSIKK0ZB
SUwgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc3RhcnRzIGNsb3NlZDsgcHJl
dmVudENsb3NlID0gLTAgKGZhbHN5KTsgZnVsZmlsbGVkIGNsb3NlIHByb21pc2UgcHJvbWlzZV90
ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiVHlwZUVycm9yOiB3
cy5nZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3JpdGVyKCknLCAnd3Mu
Z2V0V3JpdGVyJyBpcyB1bmRlZmluZWQpIgorRkFJTCBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRl
ZCBmb3J3YXJkOiBzdGFydHMgY2xvc2VkOyBwcmV2ZW50Q2xvc2UgPSBOYU4gKGZhbHN5KTsgZnVs
ZmlsbGVkIGNsb3NlIHByb21pc2UgcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdp
dGggdmFsdWU6IG9iamVjdCAiVHlwZUVycm9yOiB3cy5nZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rp
b24uIChJbiAnd3MuZ2V0V3JpdGVyKCknLCAnd3MuZ2V0V3JpdGVyJyBpcyB1bmRlZmluZWQpIgor
RkFJTCBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBzdGFydHMgY2xvc2VkOyBw
cmV2ZW50Q2xvc2UgPSAgKGZhbHN5KTsgZnVsZmlsbGVkIGNsb3NlIHByb21pc2UgcHJvbWlzZV90
ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiVHlwZUVycm9yOiB3
cy5nZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3JpdGVyKCknLCAnd3Mu
Z2V0V3JpdGVyJyBpcyB1bmRlZmluZWQpIgorUEFTUyBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRl
ZCBmb3J3YXJkOiBzdGFydHMgY2xvc2VkOyBwcmV2ZW50Q2xvc2UgPSB0cnVlICh0cnV0aHkpIAor
UEFTUyBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBzdGFydHMgY2xvc2VkOyBw
cmV2ZW50Q2xvc2UgPSBhICh0cnV0aHkpIAorUEFTUyBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRl
ZCBmb3J3YXJkOiBzdGFydHMgY2xvc2VkOyBwcmV2ZW50Q2xvc2UgPSAxICh0cnV0aHkpIAorUEFT
UyBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBzdGFydHMgY2xvc2VkOyBwcmV2
ZW50Q2xvc2UgPSBTeW1ib2woKSAodHJ1dGh5KSAKK1BBU1MgQ2xvc2luZyBtdXN0IGJlIHByb3Bh
Z2F0ZWQgZm9yd2FyZDogc3RhcnRzIGNsb3NlZDsgcHJldmVudENsb3NlID0gW29iamVjdCBPYmpl
Y3RdICh0cnV0aHkpIAorUEFTUyBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBz
dGFydHMgY2xvc2VkOyBwcmV2ZW50Q2xvc2UgPSB0cnVlLCBwcmV2ZW50QWJvcnQgPSB0cnVlIAor
UEFTUyBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBzdGFydHMgY2xvc2VkOyBw
cmV2ZW50Q2xvc2UgPSB0cnVlLCBwcmV2ZW50QWJvcnQgPSB0cnVlLCBwcmV2ZW50Q2FuY2VsID0g
dHJ1ZSAKK0ZBSUwgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogYmVjb21lcyBj
bG9zZWQgYXN5bmNocm9ub3VzbHk7IHByZXZlbnRDbG9zZSBvbWl0dGVkOyBmdWxmaWxsZWQgY2xv
c2UgcHJvbWlzZSBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTog
b2JqZWN0ICJUeXBlRXJyb3I6IHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3
cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkiCitGQUlMIENsb3Np
bmcgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IGJlY29tZXMgY2xvc2VkIGFzeW5jaHJvbm91
c2x5OyBwcmV2ZW50Q2xvc2Ugb21pdHRlZDsgcmVqZWN0ZWQgY2xvc2UgcHJvbWlzZSBwcm9taXNl
X3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJUeXBlRXJyb3I6
IHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3
cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkiCitQQVNTIENsb3NpbmcgbXVzdCBiZSBwcm9wYWdh
dGVkIGZvcndhcmQ6IGJlY29tZXMgY2xvc2VkIGFzeW5jaHJvbm91c2x5OyBwcmV2ZW50Q2xvc2Ug
PSB0cnVlIAorRkFJTCBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBiZWNvbWVz
IGNsb3NlZCBhc3luY2hyb25vdXNseTsgZGVzdCBuZXZlciBkZXNpcmVzIGNodW5rczsgcHJldmVu
dENsb3NlIG9taXR0ZWQ7IGZ1bGZpbGxlZCBjbG9zZSBwcm9taXNlIHByb21pc2VfdGVzdDogVW5o
YW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVFcnJvcjogd3MuZ2V0V3Jp
dGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRl
cicgaXMgdW5kZWZpbmVkKSIKK0ZBSUwgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2Fy
ZDogYmVjb21lcyBjbG9zZWQgYXN5bmNocm9ub3VzbHk7IGRlc3QgbmV2ZXIgZGVzaXJlcyBjaHVu
a3M7IHByZXZlbnRDbG9zZSBvbWl0dGVkOyByZWplY3RlZCBjbG9zZSBwcm9taXNlIHByb21pc2Vf
dGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVFcnJvcjog
d3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywgJ3dz
LmdldFdyaXRlcicgaXMgdW5kZWZpbmVkKSIKK1BBU1MgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0
ZWQgZm9yd2FyZDogYmVjb21lcyBjbG9zZWQgYXN5bmNocm9ub3VzbHk7IGRlc3QgbmV2ZXIgZGVz
aXJlcyBjaHVua3M7IHByZXZlbnRDbG9zZSA9IHRydWUgCitGQUlMIENsb3NpbmcgbXVzdCBiZSBw
cm9wYWdhdGVkIGZvcndhcmQ6IGJlY29tZXMgY2xvc2VkIGFmdGVyIG9uZSBjaHVuazsgcHJldmVu
dENsb3NlIG9taXR0ZWQ7IGZ1bGZpbGxlZCBjbG9zZSBwcm9taXNlIHByb21pc2VfdGVzdDogVW5o
YW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVFcnJvcjogd3MuZ2V0V3Jp
dGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRl
cicgaXMgdW5kZWZpbmVkKSIKK0ZBSUwgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2Fy
ZDogYmVjb21lcyBjbG9zZWQgYWZ0ZXIgb25lIGNodW5rOyBwcmV2ZW50Q2xvc2Ugb21pdHRlZDsg
cmVqZWN0ZWQgY2xvc2UgcHJvbWlzZSBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24g
d2l0aCB2YWx1ZTogb2JqZWN0ICJUeXBlRXJyb3I6IHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5j
dGlvbi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCki
CitQQVNTIENsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IGJlY29tZXMgY2xvc2Vk
IGFmdGVyIG9uZSBjaHVuazsgcHJldmVudENsb3NlID0gdHJ1ZSAKK1BBU1MgQ2xvc2luZyBtdXN0
IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc2h1dGRvd24gbXVzdCBub3Qgb2NjdXIgdW50aWwgdGhl
IGZpbmFsIHdyaXRlIGNvbXBsZXRlcyAKK1BBU1MgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQg
Zm9yd2FyZDogc2h1dGRvd24gbXVzdCBub3Qgb2NjdXIgdW50aWwgdGhlIGZpbmFsIHdyaXRlIGNv
bXBsZXRlczsgcHJldmVudENsb3NlID0gdHJ1ZSAKK1BBU1MgQ2xvc2luZyBtdXN0IGJlIHByb3Bh
Z2F0ZWQgZm9yd2FyZDogc2h1dGRvd24gbXVzdCBub3Qgb2NjdXIgdW50aWwgdGhlIGZpbmFsIHdy
aXRlIGNvbXBsZXRlczsgYmVjb21lcyBjbG9zZWQgYWZ0ZXIgZmlyc3Qgd3JpdGUgCitQQVNTIENs
b3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHNodXRkb3duIG11c3Qgbm90IG9jY3Vy
IHVudGlsIHRoZSBmaW5hbCB3cml0ZSBjb21wbGV0ZXM7IGJlY29tZXMgY2xvc2VkIGFmdGVyIGZp
cnN0IHdyaXRlOyBwcmV2ZW50Q2xvc2UgPSB0cnVlIAorRkFJTCBDbG9zaW5nIG11c3QgYmUgcHJv
cGFnYXRlZCBmb3J3YXJkOiBlcnJvcmluZyB0aGUgd3JpdGFibGUgd2hpbGUgZmx1c2hpbmcgcGVu
ZGluZyB3cml0ZXMgc2hvdWxkIGVycm9yIHBpcGVUbyBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCBy
ZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJUeXBlRXJyb3I6IHdzLmdldFdyaXRlciBpcyBu
b3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVu
ZGVmaW5lZCkiCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvY2xvc2UtcHJvcGFnYXRpb24tZm9yd2FyZC5hbnku
aHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy9waXBpbmcvY2xvc2UtcHJvcGFnYXRpb24tZm9yd2FyZC5hbnkuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4y
MzgyOTEzNTI4ZTY5M2IzYTVkNTZjNjYwYTQ1MDYwOTgwYjU0OGMzCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3Bp
cGluZy9jbG9zZS1wcm9wYWdhdGlvbi1mb3J3YXJkLmFueS5odG1sCkBAIC0wLDAgKzEgQEAKKzwh
LS0gVGhpcyBmaWxlIGlzIHJlcXVpcmVkIGZvciBXZWJLaXQgdGVzdCBpbmZyYXN0cnVjdHVyZSB0
byBydW4gdGhlIHRlbXBsYXRlZCB0ZXN0IC0tPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy9waXBpbmcvY2xvc2UtcHJvcGFnYXRpb24tZm9yd2FyZC5hbnkuanMgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Nsb3Nl
LXByb3BhZ2F0aW9uLWZvcndhcmQuYW55LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZjMzI4MmVlYTc0YjQwZjM5
NTM5NWI0MDcwOTBlZjA1MGIxYmQzNDkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Nsb3NlLXByb3Bh
Z2F0aW9uLWZvcndhcmQuYW55LmpzCkBAIC0wLDAgKzEsNTg5IEBACisvLyBNRVRBOiBnbG9iYWw9
d2luZG93LHdvcmtlcixqc3NoZWxsCisvLyBNRVRBOiBzY3JpcHQ9Li4vcmVzb3VyY2VzL3Rlc3Qt
dXRpbHMuanMKKy8vIE1FVEE6IHNjcmlwdD0uLi9yZXNvdXJjZXMvcmVjb3JkaW5nLXN0cmVhbXMu
anMKKyd1c2Ugc3RyaWN0JzsKKworY29uc3QgZXJyb3IxID0gbmV3IEVycm9yKCdlcnJvcjEhJyk7
CitlcnJvcjEubmFtZSA9ICdlcnJvcjEnOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworCisgIGNv
bnN0IHJzID0gcmVjb3JkaW5nUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGNvbnRyb2xsZXIp
IHsKKyAgICAgIGNvbnRyb2xsZXIuY2xvc2UoKTsKKyAgICB9CisgIH0pOworCisgIGNvbnN0IHdz
ID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0oKTsKKworICByZXR1cm4gcnMucGlwZVRvKHdzKS50
aGVuKHZhbHVlID0+IHsKKyAgICBhc3NlcnRfZXF1YWxzKHZhbHVlLCB1bmRlZmluZWQsICd0aGUg
cHJvbWlzZSBtdXN0IGZ1bGZpbGwgd2l0aCB1bmRlZmluZWQnKTsKKyAgfSkKKyAgLnRoZW4oKCkg
PT4geworICAgIGFzc2VydF9hcnJheV9lcXVhbHMocnMuZXZlbnRzLCBbXSk7CisgICAgYXNzZXJ0
X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsnY2xvc2UnXSk7CisKKyAgICByZXR1cm4gUHJvbWlz
ZS5hbGwoWworICAgICAgcnMuZ2V0UmVhZGVyKCkuY2xvc2VkLAorICAgICAgd3MuZ2V0V3JpdGVy
KCkuY2xvc2VkCisgICAgXSk7CisgIH0pOworCit9LCAnQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0
ZWQgZm9yd2FyZDogc3RhcnRzIGNsb3NlZDsgcHJldmVudENsb3NlIG9taXR0ZWQ7IGZ1bGZpbGxl
ZCBjbG9zZSBwcm9taXNlJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKworICBjb25zdCBycyA9
IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjb250cm9sbGVyKSB7CisgICAg
ICBjb250cm9sbGVyLmNsb3NlKCk7CisgICAgfQorICB9KTsKKworICBjb25zdCB3cyA9IHJlY29y
ZGluZ1dyaXRhYmxlU3RyZWFtKHsKKyAgICBjbG9zZSgpIHsKKyAgICAgIHRocm93IGVycm9yMTsK
KyAgICB9CisgIH0pOworCisgIHJldHVybiBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJv
cjEsIHJzLnBpcGVUbyh3cyksICdwaXBlVG8gbXVzdCByZWplY3Qgd2l0aCB0aGUgc2FtZSBlcnJv
cicpLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9hcnJheV9lcXVhbHMocnMuZXZlbnRzLCBbXSk7
CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsnY2xvc2UnXSk7CisKKyAgICBy
ZXR1cm4gUHJvbWlzZS5hbGwoWworICAgICAgcnMuZ2V0UmVhZGVyKCkuY2xvc2VkLAorICAgICAg
cHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCB3cy5nZXRXcml0ZXIoKS5jbG9zZWQp
CisgICAgXSk7CisgIH0pOworCit9LCAnQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2Fy
ZDogc3RhcnRzIGNsb3NlZDsgcHJldmVudENsb3NlIG9taXR0ZWQ7IHJlamVjdGVkIGNsb3NlIHBy
b21pc2UnKTsKKworZm9yIChjb25zdCBmYWxzeSBvZiBbdW5kZWZpbmVkLCBudWxsLCBmYWxzZSwg
KzAsIC0wLCBOYU4sICcnXSkgeworICBjb25zdCBzdHJpbmdWZXJzaW9uID0gT2JqZWN0LmlzKGZh
bHN5LCAtMCkgPyAnLTAnIDogU3RyaW5nKGZhbHN5KTsKKworICBwcm9taXNlX3Rlc3QoKCkgPT4g
eworCisgICAgY29uc3QgcnMgPSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSh7CisgICAgICBzdGFy
dChjb250cm9sbGVyKSB7CisgICAgICAgIGNvbnRyb2xsZXIuY2xvc2UoKTsKKyAgICAgIH0KKyAg
ICB9KTsKKworICAgIGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0oKTsKKworICAg
IHJldHVybiBycy5waXBlVG8od3MsIHsgcHJldmVudENsb3NlOiBmYWxzeSB9KS50aGVuKHZhbHVl
ID0+IHsKKyAgICAgIGFzc2VydF9lcXVhbHModmFsdWUsIHVuZGVmaW5lZCwgJ3RoZSBwcm9taXNl
IG11c3QgZnVsZmlsbCB3aXRoIHVuZGVmaW5lZCcpOworICAgIH0pCisgICAgLnRoZW4oKCkgPT4g
eworICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhycy5ldmVudHMsIFtdKTsKKyAgICAgIGFzc2Vy
dF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ2Nsb3NlJ10pOworCisgICAgICByZXR1cm4gUHJv
bWlzZS5hbGwoWworICAgICAgICBycy5nZXRSZWFkZXIoKS5jbG9zZWQsCisgICAgICAgIHdzLmdl
dFdyaXRlcigpLmNsb3NlZAorICAgICAgXSk7CisgICAgfSk7CisKKyAgfSwgYENsb3NpbmcgbXVz
dCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHN0YXJ0cyBjbG9zZWQ7IHByZXZlbnRDbG9zZSA9ICR7
c3RyaW5nVmVyc2lvbn0gKGZhbHN5KTsgZnVsZmlsbGVkIGNsb3NlIGAgKworICAgICBgcHJvbWlz
ZWApOworfQorCitmb3IgKGNvbnN0IHRydXRoeSBvZiBbdHJ1ZSwgJ2EnLCAxLCBTeW1ib2woKSwg
eyB9XSkgeworICBwcm9taXNlX3Rlc3QoKCkgPT4geworCisgICAgY29uc3QgcnMgPSByZWNvcmRp
bmdSZWFkYWJsZVN0cmVhbSh7CisgICAgICBzdGFydChjb250cm9sbGVyKSB7CisgICAgICAgIGNv
bnRyb2xsZXIuY2xvc2UoKTsKKyAgICAgIH0KKyAgICB9KTsKKworICAgIGNvbnN0IHdzID0gcmVj
b3JkaW5nV3JpdGFibGVTdHJlYW0oKTsKKworICAgIHJldHVybiBycy5waXBlVG8od3MsIHsgcHJl
dmVudENsb3NlOiB0cnV0aHkgfSkudGhlbih2YWx1ZSA9PiB7CisgICAgICBhc3NlcnRfZXF1YWxz
KHZhbHVlLCB1bmRlZmluZWQsICd0aGUgcHJvbWlzZSBtdXN0IGZ1bGZpbGwgd2l0aCB1bmRlZmlu
ZWQnKTsKKyAgICB9KQorICAgIC50aGVuKCgpID0+IHsKKyAgICAgIGFzc2VydF9hcnJheV9lcXVh
bHMocnMuZXZlbnRzLCBbXSk7CisgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywg
W10pOworCisgICAgICByZXR1cm4gcnMuZ2V0UmVhZGVyKCkuY2xvc2VkOworICAgIH0pOworCisg
IH0sIGBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBzdGFydHMgY2xvc2VkOyBw
cmV2ZW50Q2xvc2UgPSAke1N0cmluZyh0cnV0aHkpfSAodHJ1dGh5KWApOworfQorCitwcm9taXNl
X3Rlc3QoKCkgPT4geworCisgIGNvbnN0IHJzID0gcmVjb3JkaW5nUmVhZGFibGVTdHJlYW0oewor
ICAgIHN0YXJ0KGNvbnRyb2xsZXIpIHsKKyAgICAgIGNvbnRyb2xsZXIuY2xvc2UoKTsKKyAgICB9
CisgIH0pOworCisgIGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0oKTsKKworICBy
ZXR1cm4gcnMucGlwZVRvKHdzLCB7IHByZXZlbnRDbG9zZTogdHJ1ZSwgcHJldmVudEFib3J0OiB0
cnVlIH0pLnRoZW4odmFsdWUgPT4geworICAgIGFzc2VydF9lcXVhbHModmFsdWUsIHVuZGVmaW5l
ZCwgJ3RoZSBwcm9taXNlIG11c3QgZnVsZmlsbCB3aXRoIHVuZGVmaW5lZCcpOworICB9KQorICAu
dGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhycy5ldmVudHMsIFtdKTsKKyAg
ICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgW10pOworCisgICAgcmV0dXJuIHJzLmdl
dFJlYWRlcigpLmNsb3NlZDsKKyAgfSk7CisKK30sICdDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRl
ZCBmb3J3YXJkOiBzdGFydHMgY2xvc2VkOyBwcmV2ZW50Q2xvc2UgPSB0cnVlLCBwcmV2ZW50QWJv
cnQgPSB0cnVlJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisKKyAgY29uc3QgcnMgPSByZWNv
cmRpbmdSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoY29udHJvbGxlcikgeworICAgICAgY29u
dHJvbGxlci5jbG9zZSgpOworICAgIH0KKyAgfSk7CisKKyAgY29uc3Qgd3MgPSByZWNvcmRpbmdX
cml0YWJsZVN0cmVhbSgpOworCisgIHJldHVybiBycy5waXBlVG8od3MsIHsgcHJldmVudENsb3Nl
OiB0cnVlLCBwcmV2ZW50QWJvcnQ6IHRydWUsIHByZXZlbnRDYW5jZWw6IHRydWUgfSkudGhlbih2
YWx1ZSA9PiB7CisgICAgYXNzZXJ0X2VxdWFscyh2YWx1ZSwgdW5kZWZpbmVkLCAndGhlIHByb21p
c2UgbXVzdCBmdWxmaWxsIHdpdGggdW5kZWZpbmVkJyk7CisgIH0pCisgIC50aGVuKCgpID0+IHsK
KyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJzLmV2ZW50cywgW10pOworICAgIGFzc2VydF9hcnJh
eV9lcXVhbHMod3MuZXZlbnRzLCBbXSk7CisKKyAgICByZXR1cm4gcnMuZ2V0UmVhZGVyKCkuY2xv
c2VkOworICB9KTsKKworfSwgJ0Nsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHN0
YXJ0cyBjbG9zZWQ7IHByZXZlbnRDbG9zZSA9IHRydWUsIHByZXZlbnRBYm9ydCA9IHRydWUsIHBy
ZXZlbnRDYW5jZWwgPSB0cnVlJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKworICBjb25zdCBy
cyA9IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKCk7CisKKyAgY29uc3Qgd3MgPSByZWNvcmRpbmdX
cml0YWJsZVN0cmVhbSgpOworCisgIGNvbnN0IHBpcGVQcm9taXNlID0gcnMucGlwZVRvKHdzKTsK
KworICB0LnN0ZXBfdGltZW91dCgoKSA9PiBycy5jb250cm9sbGVyLmNsb3NlKCkpOworCisgIHJl
dHVybiBwaXBlUHJvbWlzZS50aGVuKHZhbHVlID0+IHsKKyAgICBhc3NlcnRfZXF1YWxzKHZhbHVl
LCB1bmRlZmluZWQsICd0aGUgcHJvbWlzZSBtdXN0IGZ1bGZpbGwgd2l0aCB1bmRlZmluZWQnKTsK
KyAgfSkKKyAgLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9hcnJheV9lcXVhbHMocnMuZXZlbnRz
V2l0aG91dFB1bGxzLCBbXSk7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsn
Y2xvc2UnXSk7CisKKyAgICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAgICAgcnMuZ2V0UmVhZGVy
KCkuY2xvc2VkLAorICAgICAgd3MuZ2V0V3JpdGVyKCkuY2xvc2VkCisgICAgXSk7CisgIH0pOwor
Cit9LCAnQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogYmVjb21lcyBjbG9zZWQg
YXN5bmNocm9ub3VzbHk7IHByZXZlbnRDbG9zZSBvbWl0dGVkOyBmdWxmaWxsZWQgY2xvc2UgcHJv
bWlzZScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisKKyAgY29uc3QgcnMgPSByZWNvcmRpbmdS
ZWFkYWJsZVN0cmVhbSgpOworCisgIGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0o
eworICAgIGNsb3NlKCkgeworICAgICAgdGhyb3cgZXJyb3IxOworICAgIH0KKyAgfSk7CisKKyAg
Y29uc3QgcGlwZVByb21pc2UgPSBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIHJz
LnBpcGVUbyh3cyksICdwaXBlVG8gbXVzdCByZWplY3Qgd2l0aCB0aGUgc2FtZSBlcnJvcicpOwor
CisgIHQuc3RlcF90aW1lb3V0KCgpID0+IHJzLmNvbnRyb2xsZXIuY2xvc2UoKSk7CisKKyAgcmV0
dXJuIHBpcGVQcm9taXNlLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9hcnJheV9lcXVhbHMocnMu
ZXZlbnRzV2l0aG91dFB1bGxzLCBbXSk7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVu
dHMsIFsnY2xvc2UnXSk7CisKKyAgICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAgICAgcnMuZ2V0
UmVhZGVyKCkuY2xvc2VkLAorICAgICAgcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3Ix
LCB3cy5nZXRXcml0ZXIoKS5jbG9zZWQpCisgICAgXSk7CisgIH0pOworCit9LCAnQ2xvc2luZyBt
dXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogYmVjb21lcyBjbG9zZWQgYXN5bmNocm9ub3VzbHk7
IHByZXZlbnRDbG9zZSBvbWl0dGVkOyByZWplY3RlZCBjbG9zZSBwcm9taXNlJyk7CisKK3Byb21p
c2VfdGVzdCh0ID0+IHsKKworICBjb25zdCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKCk7
CisKKyAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSgpOworCisgIGNvbnN0IHBp
cGVQcm9taXNlID0gcnMucGlwZVRvKHdzLCB7IHByZXZlbnRDbG9zZTogdHJ1ZSB9KTsKKworICB0
LnN0ZXBfdGltZW91dCgoKSA9PiBycy5jb250cm9sbGVyLmNsb3NlKCkpOworCisgIHJldHVybiBw
aXBlUHJvbWlzZS50aGVuKHZhbHVlID0+IHsKKyAgICBhc3NlcnRfZXF1YWxzKHZhbHVlLCB1bmRl
ZmluZWQsICd0aGUgcHJvbWlzZSBtdXN0IGZ1bGZpbGwgd2l0aCB1bmRlZmluZWQnKTsKKyAgfSkK
KyAgLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9hcnJheV9lcXVhbHMocnMuZXZlbnRzV2l0aG91
dFB1bGxzLCBbXSk7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFtdKTsKKwor
ICAgIHJldHVybiBycy5nZXRSZWFkZXIoKS5jbG9zZWQ7CisgIH0pOworCit9LCAnQ2xvc2luZyBt
dXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogYmVjb21lcyBjbG9zZWQgYXN5bmNocm9ub3VzbHk7
IHByZXZlbnRDbG9zZSA9IHRydWUnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworCisgIGNvbnN0
IHJzID0gcmVjb3JkaW5nUmVhZGFibGVTdHJlYW0oKTsKKworICBjb25zdCB3cyA9IHJlY29yZGlu
Z1dyaXRhYmxlU3RyZWFtKHVuZGVmaW5lZCwgbmV3IENvdW50UXVldWluZ1N0cmF0ZWd5KHsgaGln
aFdhdGVyTWFyazogMCB9KSk7CisKKyAgY29uc3QgcGlwZVByb21pc2UgPSBycy5waXBlVG8od3Mp
OworCisgIHQuc3RlcF90aW1lb3V0KCgpID0+IHJzLmNvbnRyb2xsZXIuY2xvc2UoKSk7CisKKyAg
cmV0dXJuIHBpcGVQcm9taXNlLnRoZW4odmFsdWUgPT4geworICAgIGFzc2VydF9lcXVhbHModmFs
dWUsIHVuZGVmaW5lZCwgJ3RoZSBwcm9taXNlIG11c3QgZnVsZmlsbCB3aXRoIHVuZGVmaW5lZCcp
OworICB9KQorICAudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhycy5ldmVu
dHNXaXRob3V0UHVsbHMsIFtdKTsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywg
WydjbG9zZSddKTsKKworICAgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAgICBycy5nZXRSZWFk
ZXIoKS5jbG9zZWQsCisgICAgICB3cy5nZXRXcml0ZXIoKS5jbG9zZWQKKyAgICBdKTsKKyAgfSk7
CisKK30sICdDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBiZWNvbWVzIGNsb3Nl
ZCBhc3luY2hyb25vdXNseTsgZGVzdCBuZXZlciBkZXNpcmVzIGNodW5rczsgJyArCisgICAncHJl
dmVudENsb3NlIG9taXR0ZWQ7IGZ1bGZpbGxlZCBjbG9zZSBwcm9taXNlJyk7CisKK3Byb21pc2Vf
dGVzdCh0ID0+IHsKKworICBjb25zdCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKCk7CisK
KyAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSh7CisgICAgY2xvc2UoKSB7Cisg
ICAgICB0aHJvdyBlcnJvcjE7CisgICAgfQorICB9LCBuZXcgQ291bnRRdWV1aW5nU3RyYXRlZ3ko
eyBoaWdoV2F0ZXJNYXJrOiAwIH0pKTsKKworICBjb25zdCBwaXBlUHJvbWlzZSA9IHByb21pc2Vf
cmVqZWN0c19leGFjdGx5KHQsIGVycm9yMSwgcnMucGlwZVRvKHdzKSwgJ3BpcGVUbyBtdXN0IHJl
amVjdCB3aXRoIHRoZSBzYW1lIGVycm9yJyk7CisKKyAgdC5zdGVwX3RpbWVvdXQoKCkgPT4gcnMu
Y29udHJvbGxlci5jbG9zZSgpKTsKKworICByZXR1cm4gcGlwZVByb21pc2UudGhlbigoKSA9PiB7
CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhycy5ldmVudHNXaXRob3V0UHVsbHMsIFtdKTsKKyAg
ICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWydjbG9zZSddKTsKKworICAgIHJldHVy
biBQcm9taXNlLmFsbChbCisgICAgICBycy5nZXRSZWFkZXIoKS5jbG9zZWQsCisgICAgICBwcm9t
aXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIHdzLmdldFdyaXRlcigpLmNsb3NlZCkKKyAg
ICBdKTsKKyAgfSk7CisKK30sICdDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBi
ZWNvbWVzIGNsb3NlZCBhc3luY2hyb25vdXNseTsgZGVzdCBuZXZlciBkZXNpcmVzIGNodW5rczsg
JyArCisgICAncHJldmVudENsb3NlIG9taXR0ZWQ7IHJlamVjdGVkIGNsb3NlIHByb21pc2UnKTsK
KworcHJvbWlzZV90ZXN0KHQgPT4geworCisgIGNvbnN0IHJzID0gcmVjb3JkaW5nUmVhZGFibGVT
dHJlYW0oKTsKKworICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKHVuZGVmaW5l
ZCwgbmV3IENvdW50UXVldWluZ1N0cmF0ZWd5KHsgaGlnaFdhdGVyTWFyazogMCB9KSk7CisKKyAg
Y29uc3QgcGlwZVByb21pc2UgPSBycy5waXBlVG8od3MsIHsgcHJldmVudENsb3NlOiB0cnVlIH0p
OworCisgIHQuc3RlcF90aW1lb3V0KCgpID0+IHJzLmNvbnRyb2xsZXIuY2xvc2UoKSk7CisKKyAg
cmV0dXJuIHBpcGVQcm9taXNlLnRoZW4odmFsdWUgPT4geworICAgIGFzc2VydF9lcXVhbHModmFs
dWUsIHVuZGVmaW5lZCwgJ3RoZSBwcm9taXNlIG11c3QgZnVsZmlsbCB3aXRoIHVuZGVmaW5lZCcp
OworICB9KQorICAudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhycy5ldmVu
dHNXaXRob3V0UHVsbHMsIFtdKTsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywg
W10pOworCisgICAgcmV0dXJuIHJzLmdldFJlYWRlcigpLmNsb3NlZDsKKyAgfSk7CisKK30sICdD
bG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBiZWNvbWVzIGNsb3NlZCBhc3luY2hy
b25vdXNseTsgZGVzdCBuZXZlciBkZXNpcmVzIGNodW5rczsgJyArCisgICAncHJldmVudENsb3Nl
ID0gdHJ1ZScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisKKyAgY29uc3QgcnMgPSByZWNvcmRp
bmdSZWFkYWJsZVN0cmVhbSgpOworCisgIGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJl
YW0oKTsKKworICBjb25zdCBwaXBlUHJvbWlzZSA9IHJzLnBpcGVUbyh3cyk7CisKKyAgdC5zdGVw
X3RpbWVvdXQoKCkgPT4geworICAgIHJzLmNvbnRyb2xsZXIuZW5xdWV1ZSgnSGVsbG8nKTsKKyAg
ICB0LnN0ZXBfdGltZW91dCgoKSA9PiBycy5jb250cm9sbGVyLmNsb3NlKCkpOworICB9LCAxMCk7
CisKKyAgcmV0dXJuIHBpcGVQcm9taXNlLnRoZW4odmFsdWUgPT4geworICAgIGFzc2VydF9lcXVh
bHModmFsdWUsIHVuZGVmaW5lZCwgJ3RoZSBwcm9taXNlIG11c3QgZnVsZmlsbCB3aXRoIHVuZGVm
aW5lZCcpOworICB9KQorICAudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhy
cy5ldmVudHNXaXRob3V0UHVsbHMsIFtdKTsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2
ZW50cywgWyd3cml0ZScsICdIZWxsbycsICdjbG9zZSddKTsKKworICAgIHJldHVybiBQcm9taXNl
LmFsbChbCisgICAgICBycy5nZXRSZWFkZXIoKS5jbG9zZWQsCisgICAgICB3cy5nZXRXcml0ZXIo
KS5jbG9zZWQKKyAgICBdKTsKKyAgfSk7CisKK30sICdDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRl
ZCBmb3J3YXJkOiBiZWNvbWVzIGNsb3NlZCBhZnRlciBvbmUgY2h1bms7IHByZXZlbnRDbG9zZSBv
bWl0dGVkOyBmdWxmaWxsZWQgY2xvc2UgcHJvbWlzZScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7
CisKKyAgY29uc3QgcnMgPSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSgpOworCisgIGNvbnN0IHdz
ID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0oeworICAgIGNsb3NlKCkgeworICAgICAgdGhyb3cg
ZXJyb3IxOworICAgIH0KKyAgfSk7CisKKyAgY29uc3QgcGlwZVByb21pc2UgPSBwcm9taXNlX3Jl
amVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIHJzLnBpcGVUbyh3cyksICdwaXBlVG8gbXVzdCByZWpl
Y3Qgd2l0aCB0aGUgc2FtZSBlcnJvcicpOworCisgIHQuc3RlcF90aW1lb3V0KCgpID0+IHsKKyAg
ICBycy5jb250cm9sbGVyLmVucXVldWUoJ0hlbGxvJyk7CisgICAgdC5zdGVwX3RpbWVvdXQoKCkg
PT4gcnMuY29udHJvbGxlci5jbG9zZSgpKTsKKyAgfSwgMTApOworCisgIHJldHVybiBwaXBlUHJv
bWlzZS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJzLmV2ZW50c1dpdGhv
dXRQdWxscywgW10pOworICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ3dyaXRl
JywgJ0hlbGxvJywgJ2Nsb3NlJ10pOworCisgICAgcmV0dXJuIFByb21pc2UuYWxsKFsKKyAgICAg
IHJzLmdldFJlYWRlcigpLmNsb3NlZCwKKyAgICAgIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQs
IGVycm9yMSwgd3MuZ2V0V3JpdGVyKCkuY2xvc2VkKQorICAgIF0pOworICB9KTsKKworfSwgJ0Ns
b3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IGJlY29tZXMgY2xvc2VkIGFmdGVyIG9u
ZSBjaHVuazsgcHJldmVudENsb3NlIG9taXR0ZWQ7IHJlamVjdGVkIGNsb3NlIHByb21pc2UnKTsK
KworcHJvbWlzZV90ZXN0KHQgPT4geworCisgIGNvbnN0IHJzID0gcmVjb3JkaW5nUmVhZGFibGVT
dHJlYW0oKTsKKworICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKCk7CisKKyAg
Y29uc3QgcGlwZVByb21pc2UgPSBycy5waXBlVG8od3MsIHsgcHJldmVudENsb3NlOiB0cnVlIH0p
OworCisgIHQuc3RlcF90aW1lb3V0KCgpID0+IHsKKyAgICBycy5jb250cm9sbGVyLmVucXVldWUo
J0hlbGxvJyk7CisgICAgdC5zdGVwX3RpbWVvdXQoKCkgPT4gcnMuY29udHJvbGxlci5jbG9zZSgp
KTsKKyAgfSwgMTApOworCisgIHJldHVybiBwaXBlUHJvbWlzZS50aGVuKHZhbHVlID0+IHsKKyAg
ICBhc3NlcnRfZXF1YWxzKHZhbHVlLCB1bmRlZmluZWQsICd0aGUgcHJvbWlzZSBtdXN0IGZ1bGZp
bGwgd2l0aCB1bmRlZmluZWQnKTsKKyAgfSkKKyAgLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9h
cnJheV9lcXVhbHMocnMuZXZlbnRzV2l0aG91dFB1bGxzLCBbXSk7CisgICAgYXNzZXJ0X2FycmF5
X2VxdWFscyh3cy5ldmVudHMsIFsnd3JpdGUnLCAnSGVsbG8nXSk7CisKKyAgICByZXR1cm4gcnMu
Z2V0UmVhZGVyKCkuY2xvc2VkOworICB9KTsKKworfSwgJ0Nsb3NpbmcgbXVzdCBiZSBwcm9wYWdh
dGVkIGZvcndhcmQ6IGJlY29tZXMgY2xvc2VkIGFmdGVyIG9uZSBjaHVuazsgcHJldmVudENsb3Nl
ID0gdHJ1ZScpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworCisgIGNvbnN0IHJzID0gcmVjb3Jk
aW5nUmVhZGFibGVTdHJlYW0oKTsKKworICBsZXQgcmVzb2x2ZVdyaXRlUHJvbWlzZTsKKyAgY29u
c3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSh7CisgICAgd3JpdGUoKSB7CisgICAgICBy
ZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7CisgICAgICAgIHJlc29sdmVXcml0ZVByb21p
c2UgPSByZXNvbHZlOworICAgICAgfSk7CisgICAgfQorICB9KTsKKworICBsZXQgcGlwZUNvbXBs
ZXRlID0gZmFsc2U7CisgIGNvbnN0IHBpcGVQcm9taXNlID0gcnMucGlwZVRvKHdzKS50aGVuKCgp
ID0+IHsKKyAgICBwaXBlQ29tcGxldGUgPSB0cnVlOworICB9KTsKKworICBycy5jb250cm9sbGVy
LmVucXVldWUoJ2EnKTsKKyAgcnMuY29udHJvbGxlci5jbG9zZSgpOworCisgIC8vIEZsdXNoIGFz
eW5jIGV2ZW50cyBhbmQgdmVyaWZ5IHRoYXQgbm8gc2h1dGRvd24gb2NjdXJzLgorICByZXR1cm4g
Zmx1c2hBc3luY0V2ZW50cygpLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9hcnJheV9lcXVhbHMo
d3MuZXZlbnRzLCBbJ3dyaXRlJywgJ2EnXSk7IC8vIG5vICdjbG9zZScKKyAgICBhc3NlcnRfZXF1
YWxzKHBpcGVDb21wbGV0ZSwgZmFsc2UsICd0aGUgcGlwZSBtdXN0IG5vdCBiZSBjb21wbGV0ZScp
OworCisgICAgcmVzb2x2ZVdyaXRlUHJvbWlzZSgpOworCisgICAgcmV0dXJuIHBpcGVQcm9taXNl
LnRoZW4oKCkgPT4geworICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsnd3Jp
dGUnLCAnYScsICdjbG9zZSddKTsKKyAgICB9KTsKKyAgfSk7CisKK30sICdDbG9zaW5nIG11c3Qg
YmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBzaHV0ZG93biBtdXN0IG5vdCBvY2N1ciB1bnRpbCB0aGUg
ZmluYWwgd3JpdGUgY29tcGxldGVzJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisKKyAgY29u
c3QgcnMgPSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSgpOworCisgIGxldCByZXNvbHZlV3JpdGVQ
cm9taXNlOworICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKHsKKyAgICB3cml0
ZSgpIHsKKyAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKKyAgICAgICAgcmVz
b2x2ZVdyaXRlUHJvbWlzZSA9IHJlc29sdmU7CisgICAgICB9KTsKKyAgICB9CisgIH0pOworCisg
IGxldCBwaXBlQ29tcGxldGUgPSBmYWxzZTsKKyAgY29uc3QgcGlwZVByb21pc2UgPSBycy5waXBl
VG8od3MsIHsgcHJldmVudENsb3NlOiB0cnVlIH0pLnRoZW4oKCkgPT4geworICAgIHBpcGVDb21w
bGV0ZSA9IHRydWU7CisgIH0pOworCisgIHJzLmNvbnRyb2xsZXIuZW5xdWV1ZSgnYScpOworICBy
cy5jb250cm9sbGVyLmNsb3NlKCk7CisKKyAgLy8gRmx1c2ggYXN5bmMgZXZlbnRzIGFuZCB2ZXJp
ZnkgdGhhdCBubyBzaHV0ZG93biBvY2N1cnMuCisgIHJldHVybiBmbHVzaEFzeW5jRXZlbnRzKCku
dGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsnd3JpdGUn
LCAnYSddLAorICAgICAgJ3RoZSBjaHVuayBtdXN0IGhhdmUgYmVlbiB3cml0dGVuLCBidXQgY2xv
c2UgbXVzdCBub3QgaGF2ZSBoYXBwZW5lZCcpOworICAgIGFzc2VydF9lcXVhbHMocGlwZUNvbXBs
ZXRlLCBmYWxzZSwgJ3RoZSBwaXBlIG11c3Qgbm90IGJlIGNvbXBsZXRlJyk7CisKKyAgICByZXNv
bHZlV3JpdGVQcm9taXNlKCk7CisKKyAgICByZXR1cm4gcGlwZVByb21pc2U7CisgIH0pLnRoZW4o
KCkgPT4gZmx1c2hBc3luY0V2ZW50cygpKS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfYXJyYXlf
ZXF1YWxzKHdzLmV2ZW50cywgWyd3cml0ZScsICdhJ10sCisgICAgICAndGhlIGNodW5rIG11c3Qg
aGF2ZSBiZWVuIHdyaXR0ZW4sIGJ1dCBjbG9zZSBtdXN0IG5vdCBoYXZlIGhhcHBlbmVkJyk7Cisg
IH0pOworCit9LCAnQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc2h1dGRvd24g
bXVzdCBub3Qgb2NjdXIgdW50aWwgdGhlIGZpbmFsIHdyaXRlIGNvbXBsZXRlczsgcHJldmVudENs
b3NlID0gdHJ1ZScpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworCisgIGNvbnN0IHJzID0gcmVj
b3JkaW5nUmVhZGFibGVTdHJlYW0oKTsKKworICBsZXQgcmVzb2x2ZVdyaXRlQ2FsbGVkOworICBj
b25zdCB3cml0ZUNhbGxlZFByb21pc2UgPSBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKKyAgICBy
ZXNvbHZlV3JpdGVDYWxsZWQgPSByZXNvbHZlOworICB9KTsKKworICBsZXQgcmVzb2x2ZVdyaXRl
UHJvbWlzZTsKKyAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSh7CisgICAgd3Jp
dGUoKSB7CisgICAgICByZXNvbHZlV3JpdGVDYWxsZWQoKTsKKworICAgICAgcmV0dXJuIG5ldyBQ
cm9taXNlKHJlc29sdmUgPT4geworICAgICAgICByZXNvbHZlV3JpdGVQcm9taXNlID0gcmVzb2x2
ZTsKKyAgICAgIH0pOworICAgIH0KKyAgfSwgbmV3IENvdW50UXVldWluZ1N0cmF0ZWd5KHsgaGln
aFdhdGVyTWFyazogMiB9KSk7CisKKyAgbGV0IHBpcGVDb21wbGV0ZSA9IGZhbHNlOworICBjb25z
dCBwaXBlUHJvbWlzZSA9IHJzLnBpcGVUbyh3cykudGhlbigoKSA9PiB7CisgICAgcGlwZUNvbXBs
ZXRlID0gdHJ1ZTsKKyAgfSk7CisKKyAgcnMuY29udHJvbGxlci5lbnF1ZXVlKCdhJyk7CisgIHJz
LmNvbnRyb2xsZXIuZW5xdWV1ZSgnYicpOworCisgIHJldHVybiB3cml0ZUNhbGxlZFByb21pc2Uu
dGhlbigoKSA9PiBmbHVzaEFzeW5jRXZlbnRzKCkpLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9h
cnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ3dyaXRlJywgJ2EnXSwKKyAgICAgICd0aGUgZmlyc3Qg
Y2h1bmsgbXVzdCBoYXZlIGJlZW4gd3JpdHRlbiwgYnV0IGNsb3NlIG11c3Qgbm90IGhhdmUgaGFw
cGVuZWQgeWV0Jyk7CisgICAgYXNzZXJ0X2ZhbHNlKHBpcGVDb21wbGV0ZSwgJ3RoZSBwaXBlIHNo
b3VsZCBub3QgY29tcGxldGUgd2hpbGUgdGhlIGZpcnN0IHdyaXRlIGlzIHBlbmRpbmcnKTsKKwor
ICAgIHJzLmNvbnRyb2xsZXIuY2xvc2UoKTsKKyAgICByZXNvbHZlV3JpdGVQcm9taXNlKCk7Cisg
IH0pLnRoZW4oKCkgPT4gZmx1c2hBc3luY0V2ZW50cygpKS50aGVuKCgpID0+IHsKKyAgICBhc3Nl
cnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWyd3cml0ZScsICdhJywgJ3dyaXRlJywgJ2InXSwK
KyAgICAgICd0aGUgc2Vjb25kIGNodW5rIG11c3QgaGF2ZSBiZWVuIHdyaXR0ZW4sIGJ1dCBjbG9z
ZSBtdXN0IG5vdCBoYXZlIGhhcHBlbmVkIHlldCcpOworICAgIGFzc2VydF9mYWxzZShwaXBlQ29t
cGxldGUsICd0aGUgcGlwZSBzaG91bGQgbm90IGNvbXBsZXRlIHdoaWxlIHRoZSBzZWNvbmQgd3Jp
dGUgaXMgcGVuZGluZycpOworCisgICAgcmVzb2x2ZVdyaXRlUHJvbWlzZSgpOworICAgIHJldHVy
biBwaXBlUHJvbWlzZTsKKyAgfSkudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFs
cyh3cy5ldmVudHMsIFsnd3JpdGUnLCAnYScsICd3cml0ZScsICdiJywgJ2Nsb3NlJ10sCisgICAg
ICAnYWxsIGNodW5rcyBtdXN0IGhhdmUgYmVlbiB3cml0dGVuIGFuZCBjbG9zZSBtdXN0IGhhdmUg
aGFwcGVuZWQnKTsKKyAgfSk7CisKK30sICdDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3
YXJkOiBzaHV0ZG93biBtdXN0IG5vdCBvY2N1ciB1bnRpbCB0aGUgZmluYWwgd3JpdGUgY29tcGxl
dGVzOyBiZWNvbWVzIGNsb3NlZCBhZnRlciBmaXJzdCB3cml0ZScpOworCitwcm9taXNlX3Rlc3Qo
KCkgPT4geworCisgIGNvbnN0IHJzID0gcmVjb3JkaW5nUmVhZGFibGVTdHJlYW0oKTsKKworICBs
ZXQgcmVzb2x2ZVdyaXRlQ2FsbGVkOworICBjb25zdCB3cml0ZUNhbGxlZFByb21pc2UgPSBuZXcg
UHJvbWlzZShyZXNvbHZlID0+IHsKKyAgICByZXNvbHZlV3JpdGVDYWxsZWQgPSByZXNvbHZlOwor
ICB9KTsKKworICBsZXQgcmVzb2x2ZVdyaXRlUHJvbWlzZTsKKyAgY29uc3Qgd3MgPSByZWNvcmRp
bmdXcml0YWJsZVN0cmVhbSh7CisgICAgd3JpdGUoKSB7CisgICAgICByZXNvbHZlV3JpdGVDYWxs
ZWQoKTsKKworICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4geworICAgICAgICBy
ZXNvbHZlV3JpdGVQcm9taXNlID0gcmVzb2x2ZTsKKyAgICAgIH0pOworICAgIH0KKyAgfSwgbmV3
IENvdW50UXVldWluZ1N0cmF0ZWd5KHsgaGlnaFdhdGVyTWFyazogMiB9KSk7CisKKyAgbGV0IHBp
cGVDb21wbGV0ZSA9IGZhbHNlOworICBjb25zdCBwaXBlUHJvbWlzZSA9IHJzLnBpcGVUbyh3cywg
eyBwcmV2ZW50Q2xvc2U6IHRydWUgfSkudGhlbigoKSA9PiB7CisgICAgcGlwZUNvbXBsZXRlID0g
dHJ1ZTsKKyAgfSk7CisKKyAgcnMuY29udHJvbGxlci5lbnF1ZXVlKCdhJyk7CisgIHJzLmNvbnRy
b2xsZXIuZW5xdWV1ZSgnYicpOworCisgIHJldHVybiB3cml0ZUNhbGxlZFByb21pc2UudGhlbigo
KSA9PiBmbHVzaEFzeW5jRXZlbnRzKCkpLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9hcnJheV9l
cXVhbHMod3MuZXZlbnRzLCBbJ3dyaXRlJywgJ2EnXSwKKyAgICAgICd0aGUgZmlyc3QgY2h1bmsg
bXVzdCBoYXZlIGJlZW4gd3JpdHRlbiwgYnV0IGNsb3NlIG11c3Qgbm90IGhhdmUgaGFwcGVuZWQn
KTsKKyAgICBhc3NlcnRfZmFsc2UocGlwZUNvbXBsZXRlLCAndGhlIHBpcGUgc2hvdWxkIG5vdCBj
b21wbGV0ZSB3aGlsZSB0aGUgZmlyc3Qgd3JpdGUgaXMgcGVuZGluZycpOworCisgICAgcnMuY29u
dHJvbGxlci5jbG9zZSgpOworICAgIHJlc29sdmVXcml0ZVByb21pc2UoKTsKKyAgfSkudGhlbigo
KSA9PiBmbHVzaEFzeW5jRXZlbnRzKCkpLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9hcnJheV9l
cXVhbHMod3MuZXZlbnRzLCBbJ3dyaXRlJywgJ2EnLCAnd3JpdGUnLCAnYiddLAorICAgICAgJ3Ro
ZSBzZWNvbmQgY2h1bmsgbXVzdCBoYXZlIGJlZW4gd3JpdHRlbiwgYnV0IGNsb3NlIG11c3Qgbm90
IGhhdmUgaGFwcGVuZWQnKTsKKyAgICBhc3NlcnRfZmFsc2UocGlwZUNvbXBsZXRlLCAndGhlIHBp
cGUgc2hvdWxkIG5vdCBjb21wbGV0ZSB3aGlsZSB0aGUgc2Vjb25kIHdyaXRlIGlzIHBlbmRpbmcn
KTsKKworICAgIHJlc29sdmVXcml0ZVByb21pc2UoKTsKKyAgICByZXR1cm4gcGlwZVByb21pc2U7
CisgIH0pLnRoZW4oKCkgPT4gZmx1c2hBc3luY0V2ZW50cygpKS50aGVuKCgpID0+IHsKKyAgICBh
c3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWyd3cml0ZScsICdhJywgJ3dyaXRlJywgJ2In
XSwKKyAgICAgICdhbGwgY2h1bmtzIG11c3QgaGF2ZSBiZWVuIHdyaXR0ZW4sIGJ1dCBjbG9zZSBt
dXN0IG5vdCBoYXZlIGhhcHBlbmVkJyk7CisgIH0pOworCit9LCAnQ2xvc2luZyBtdXN0IGJlIHBy
b3BhZ2F0ZWQgZm9yd2FyZDogc2h1dGRvd24gbXVzdCBub3Qgb2NjdXIgdW50aWwgdGhlIGZpbmFs
IHdyaXRlIGNvbXBsZXRlczsgYmVjb21lcyBjbG9zZWQgYWZ0ZXIgZmlyc3Qgd3JpdGU7IHByZXZl
bnRDbG9zZSA9IHRydWUnKTsKKworCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIGNvbnN0IHJzID0g
cmVjb3JkaW5nUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGMuZW5xdWV1
ZSgnYScpOworICAgICAgYy5lbnF1ZXVlKCdiJyk7CisgICAgICBjLmNsb3NlKCk7CisgICAgfQor
ICB9KTsKKyAgbGV0IHJlamVjdFdyaXRlUHJvbWlzZTsKKyAgY29uc3Qgd3MgPSByZWNvcmRpbmdX
cml0YWJsZVN0cmVhbSh7CisgICAgd3JpdGUoKSB7CisgICAgICByZXR1cm4gbmV3IFByb21pc2Uo
KHJlc29sdmUsIHJlamVjdCkgPT4geworICAgICAgICByZWplY3RXcml0ZVByb21pc2UgPSByZWpl
Y3Q7CisgICAgICB9KTsKKyAgICB9CisgIH0sIHsgaGlnaFdhdGVyTWFyazogMyB9KTsKKyAgY29u
c3QgcGlwZVRvUHJvbWlzZSA9IHJzLnBpcGVUbyh3cyk7CisgIHJldHVybiBkZWxheSgwKS50aGVu
KCgpID0+IHsKKyAgICByZWplY3RXcml0ZVByb21pc2UoZXJyb3IxKTsKKyAgICByZXR1cm4gcHJv
bWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCBwaXBlVG9Qcm9taXNlLCAncGlwZVRvIHNo
b3VsZCByZWplY3QnKTsKKyAgfSkudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFs
cyhycy5ldmVudHMsIFtdKTsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWyd3
cml0ZScsICdhJ10pOworCisgICAgcmV0dXJuIFByb21pc2UuYWxsKFsKKyAgICAgIHJzLmdldFJl
YWRlcigpLmNsb3NlZCwKKyAgICAgIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMSwg
d3MuZ2V0V3JpdGVyKCkuY2xvc2VkLCAnd3Mgc2hvdWxkIGJlIGVycm9yZWQnKQorICAgIF0pOwor
ICB9KTsKK30sICdDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBlcnJvcmluZyB0
aGUgd3JpdGFibGUgd2hpbGUgZmx1c2hpbmcgcGVuZGluZyB3cml0ZXMgc2hvdWxkIGVycm9yIHBp
cGVUbycpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zdHJlYW1zL3BpcGluZy9jbG9zZS1wcm9wYWdhdGlvbi1mb3J3YXJkLmFueS53b3Jr
ZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL3BpcGluZy9jbG9zZS1wcm9wYWdhdGlvbi1mb3J3YXJkLmFueS53b3JrZXIt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc1NzgxOGUyZjhiYjhhMTBlMzM2NWJmODUzNjIxNDQw
MzgyNTcxMzkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Nsb3NlLXByb3BhZ2F0aW9uLWZvcndhcmQu
YW55Lndvcmtlci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzMiBAQAorCitGQUlMIENsb3Npbmcg
bXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHN0YXJ0cyBjbG9zZWQ7IHByZXZlbnRDbG9zZSBv
bWl0dGVkOyBmdWxmaWxsZWQgY2xvc2UgcHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0
YWJsZVN0cmVhbQorRkFJTCBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBzdGFy
dHMgY2xvc2VkOyBwcmV2ZW50Q2xvc2Ugb21pdHRlZDsgcmVqZWN0ZWQgY2xvc2UgcHJvbWlzZSBD
YW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBDbG9zaW5nIG11c3QgYmUg
cHJvcGFnYXRlZCBmb3J3YXJkOiBzdGFydHMgY2xvc2VkOyBwcmV2ZW50Q2xvc2UgPSB1bmRlZmlu
ZWQgKGZhbHN5KTsgZnVsZmlsbGVkIGNsb3NlIHByb21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTog
V3JpdGFibGVTdHJlYW0KK0ZBSUwgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDog
c3RhcnRzIGNsb3NlZDsgcHJldmVudENsb3NlID0gbnVsbCAoZmFsc3kpOyBmdWxmaWxsZWQgY2xv
c2UgcHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBDbG9z
aW5nIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBzdGFydHMgY2xvc2VkOyBwcmV2ZW50Q2xv
c2UgPSBmYWxzZSAoZmFsc3kpOyBmdWxmaWxsZWQgY2xvc2UgcHJvbWlzZSBDYW4ndCBmaW5kIHZh
cmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBm
b3J3YXJkOiBzdGFydHMgY2xvc2VkOyBwcmV2ZW50Q2xvc2UgPSAwIChmYWxzeSk7IGZ1bGZpbGxl
ZCBjbG9zZSBwcm9taXNlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlM
IENsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHN0YXJ0cyBjbG9zZWQ7IHByZXZl
bnRDbG9zZSA9IC0wIChmYWxzeSk7IGZ1bGZpbGxlZCBjbG9zZSBwcm9taXNlIENhbid0IGZpbmQg
dmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIENsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVk
IGZvcndhcmQ6IHN0YXJ0cyBjbG9zZWQ7IHByZXZlbnRDbG9zZSA9IE5hTiAoZmFsc3kpOyBmdWxm
aWxsZWQgY2xvc2UgcHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQor
RkFJTCBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBzdGFydHMgY2xvc2VkOyBw
cmV2ZW50Q2xvc2UgPSAgKGZhbHN5KTsgZnVsZmlsbGVkIGNsb3NlIHByb21pc2UgQ2FuJ3QgZmlu
ZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0
ZWQgZm9yd2FyZDogc3RhcnRzIGNsb3NlZDsgcHJldmVudENsb3NlID0gdHJ1ZSAodHJ1dGh5KSBD
YW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBDbG9zaW5nIG11c3QgYmUg
cHJvcGFnYXRlZCBmb3J3YXJkOiBzdGFydHMgY2xvc2VkOyBwcmV2ZW50Q2xvc2UgPSBhICh0cnV0
aHkpIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIENsb3NpbmcgbXVz
dCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHN0YXJ0cyBjbG9zZWQ7IHByZXZlbnRDbG9zZSA9IDEg
KHRydXRoeSkgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgQ2xvc2lu
ZyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc3RhcnRzIGNsb3NlZDsgcHJldmVudENsb3Nl
ID0gU3ltYm9sKCkgKHRydXRoeSkgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0K
K0ZBSUwgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc3RhcnRzIGNsb3NlZDsg
cHJldmVudENsb3NlID0gW29iamVjdCBPYmplY3RdICh0cnV0aHkpIENhbid0IGZpbmQgdmFyaWFi
bGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIENsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndh
cmQ6IHN0YXJ0cyBjbG9zZWQ7IHByZXZlbnRDbG9zZSA9IHRydWUsIHByZXZlbnRBYm9ydCA9IHRy
dWUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgQ2xvc2luZyBtdXN0
IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc3RhcnRzIGNsb3NlZDsgcHJldmVudENsb3NlID0gdHJ1
ZSwgcHJldmVudEFib3J0ID0gdHJ1ZSwgcHJldmVudENhbmNlbCA9IHRydWUgQ2FuJ3QgZmluZCB2
YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQg
Zm9yd2FyZDogYmVjb21lcyBjbG9zZWQgYXN5bmNocm9ub3VzbHk7IHByZXZlbnRDbG9zZSBvbWl0
dGVkOyBmdWxmaWxsZWQgY2xvc2UgcHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJs
ZVN0cmVhbQorRkFJTCBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBiZWNvbWVz
IGNsb3NlZCBhc3luY2hyb25vdXNseTsgcHJldmVudENsb3NlIG9taXR0ZWQ7IHJlamVjdGVkIGNs
b3NlIHByb21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgQ2xv
c2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogYmVjb21lcyBjbG9zZWQgYXN5bmNocm9u
b3VzbHk7IHByZXZlbnRDbG9zZSA9IHRydWUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVT
dHJlYW0KK0ZBSUwgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogYmVjb21lcyBj
bG9zZWQgYXN5bmNocm9ub3VzbHk7IGRlc3QgbmV2ZXIgZGVzaXJlcyBjaHVua3M7IHByZXZlbnRD
bG9zZSBvbWl0dGVkOyBmdWxmaWxsZWQgY2xvc2UgcHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxl
OiBXcml0YWJsZVN0cmVhbQorRkFJTCBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJk
OiBiZWNvbWVzIGNsb3NlZCBhc3luY2hyb25vdXNseTsgZGVzdCBuZXZlciBkZXNpcmVzIGNodW5r
czsgcHJldmVudENsb3NlIG9taXR0ZWQ7IHJlamVjdGVkIGNsb3NlIHByb21pc2UgQ2FuJ3QgZmlu
ZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0
ZWQgZm9yd2FyZDogYmVjb21lcyBjbG9zZWQgYXN5bmNocm9ub3VzbHk7IGRlc3QgbmV2ZXIgZGVz
aXJlcyBjaHVua3M7IHByZXZlbnRDbG9zZSA9IHRydWUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3Jp
dGFibGVTdHJlYW0KK0ZBSUwgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogYmVj
b21lcyBjbG9zZWQgYWZ0ZXIgb25lIGNodW5rOyBwcmV2ZW50Q2xvc2Ugb21pdHRlZDsgZnVsZmls
bGVkIGNsb3NlIHByb21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZB
SUwgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogYmVjb21lcyBjbG9zZWQgYWZ0
ZXIgb25lIGNodW5rOyBwcmV2ZW50Q2xvc2Ugb21pdHRlZDsgcmVqZWN0ZWQgY2xvc2UgcHJvbWlz
ZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBDbG9zaW5nIG11c3Qg
YmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBiZWNvbWVzIGNsb3NlZCBhZnRlciBvbmUgY2h1bms7IHBy
ZXZlbnRDbG9zZSA9IHRydWUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZB
SUwgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc2h1dGRvd24gbXVzdCBub3Qg
b2NjdXIgdW50aWwgdGhlIGZpbmFsIHdyaXRlIGNvbXBsZXRlcyBDYW4ndCBmaW5kIHZhcmlhYmxl
OiBXcml0YWJsZVN0cmVhbQorRkFJTCBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJk
OiBzaHV0ZG93biBtdXN0IG5vdCBvY2N1ciB1bnRpbCB0aGUgZmluYWwgd3JpdGUgY29tcGxldGVz
OyBwcmV2ZW50Q2xvc2UgPSB0cnVlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFt
CitGQUlMIENsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHNodXRkb3duIG11c3Qg
bm90IG9jY3VyIHVudGlsIHRoZSBmaW5hbCB3cml0ZSBjb21wbGV0ZXM7IGJlY29tZXMgY2xvc2Vk
IGFmdGVyIGZpcnN0IHdyaXRlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitG
QUlMIENsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHNodXRkb3duIG11c3Qgbm90
IG9jY3VyIHVudGlsIHRoZSBmaW5hbCB3cml0ZSBjb21wbGV0ZXM7IGJlY29tZXMgY2xvc2VkIGFm
dGVyIGZpcnN0IHdyaXRlOyBwcmV2ZW50Q2xvc2UgPSB0cnVlIENhbid0IGZpbmQgdmFyaWFibGU6
IFdyaXRhYmxlU3RyZWFtCitGQUlMIENsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6
IGVycm9yaW5nIHRoZSB3cml0YWJsZSB3aGlsZSBmbHVzaGluZyBwZW5kaW5nIHdyaXRlcyBzaG91
bGQgZXJyb3IgcGlwZVRvIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy9waXBpbmcvY2xvc2UtcHJvcGFnYXRpb24tZm9yd2FyZC5hbnkud29ya2VyLmh0bWwgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5n
L2Nsb3NlLXByb3BhZ2F0aW9uLWZvcndhcmQuYW55Lndvcmtlci5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIz
ODI5MTM1MjhlNjkzYjNhNWQ1NmM2NjBhNDUwNjA5ODBiNTQ4YzMKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlw
aW5nL2Nsb3NlLXByb3BhZ2F0aW9uLWZvcndhcmQuYW55Lndvcmtlci5odG1sCkBAIC0wLDAgKzEg
QEAKKzwhLS0gVGhpcyBmaWxlIGlzIHJlcXVpcmVkIGZvciBXZWJLaXQgdGVzdCBpbmZyYXN0cnVj
dHVyZSB0byBydW4gdGhlIHRlbXBsYXRlZCB0ZXN0IC0tPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy9waXBpbmcvY2xvc2UtcHJvcGFnYXRpb24tZm9yd2FyZC5kZWRpY2F0ZWR3
b3JrZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zdHJlYW1zL3BpcGluZy9jbG9zZS1wcm9wYWdhdGlvbi1mb3J3YXJkLmRlZGljYXRl
ZHdvcmtlci1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg2Yzg1
ZTM2OTI1NjJlMTYyM2E4ZmNiMzVhNGMyMjRjZmU1YjJhYjcuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9jbG9zZS1wcm9wYWdhdGlvbi1mb3J3YXJkLmRl
ZGljYXRlZHdvcmtlci1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBA
Ci0KLUZBSUwgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc3RhcnRzIGNsb3Nl
ZDsgcHJldmVudENsb3NlIG9taXR0ZWQ7IGZ1bGZpbGxlZCBjbG9zZSBwcm9taXNlIENhbid0IGZp
bmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIENsb3NpbmcgbXVzdCBiZSBwcm9wYWdh
dGVkIGZvcndhcmQ6IHN0YXJ0cyBjbG9zZWQ7IHByZXZlbnRDbG9zZSBvbWl0dGVkOyByZWplY3Rl
ZCBjbG9zZSBwcm9taXNlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlM
IENsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHN0YXJ0cyBjbG9zZWQ7IHByZXZl
bnRDbG9zZSA9IHVuZGVmaW5lZCAoZmFsc3kpOyBmdWxmaWxsZWQgY2xvc2UgcHJvbWlzZSBDYW4n
dCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBDbG9zaW5nIG11c3QgYmUgcHJv
cGFnYXRlZCBmb3J3YXJkOiBzdGFydHMgY2xvc2VkOyBwcmV2ZW50Q2xvc2UgPSBudWxsIChmYWxz
eSk7IGZ1bGZpbGxlZCBjbG9zZSBwcm9taXNlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxl
U3RyZWFtCi1GQUlMIENsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHN0YXJ0cyBj
bG9zZWQ7IHByZXZlbnRDbG9zZSA9IGZhbHNlIChmYWxzeSk7IGZ1bGZpbGxlZCBjbG9zZSBwcm9t
aXNlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIENsb3NpbmcgbXVz
dCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHN0YXJ0cyBjbG9zZWQ7IHByZXZlbnRDbG9zZSA9IDAg
KGZhbHN5KTsgZnVsZmlsbGVkIGNsb3NlIHByb21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3Jp
dGFibGVTdHJlYW0KLUZBSUwgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc3Rh
cnRzIGNsb3NlZDsgcHJldmVudENsb3NlID0gLTAgKGZhbHN5KTsgZnVsZmlsbGVkIGNsb3NlIHBy
b21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgQ2xvc2luZyBt
dXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc3RhcnRzIGNsb3NlZDsgcHJldmVudENsb3NlID0g
TmFOIChmYWxzeSk7IGZ1bGZpbGxlZCBjbG9zZSBwcm9taXNlIENhbid0IGZpbmQgdmFyaWFibGU6
IFdyaXRhYmxlU3RyZWFtCi1GQUlMIENsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6
IHN0YXJ0cyBjbG9zZWQ7IHByZXZlbnRDbG9zZSA9ICAoZmFsc3kpOyBmdWxmaWxsZWQgY2xvc2Ug
cHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBDbG9zaW5n
IG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBzdGFydHMgY2xvc2VkOyBwcmV2ZW50Q2xvc2Ug
PSB0cnVlICh0cnV0aHkpIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlM
IENsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHN0YXJ0cyBjbG9zZWQ7IHByZXZl
bnRDbG9zZSA9IGEgKHRydXRoeSkgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0K
LUZBSUwgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc3RhcnRzIGNsb3NlZDsg
cHJldmVudENsb3NlID0gMSAodHJ1dGh5KSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0
cmVhbQotRkFJTCBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBzdGFydHMgY2xv
c2VkOyBwcmV2ZW50Q2xvc2UgPSBTeW1ib2woKSAodHJ1dGh5KSBDYW4ndCBmaW5kIHZhcmlhYmxl
OiBXcml0YWJsZVN0cmVhbQotRkFJTCBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJk
OiBzdGFydHMgY2xvc2VkOyBwcmV2ZW50Q2xvc2UgPSBbb2JqZWN0IE9iamVjdF0gKHRydXRoeSkg
Q2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgQ2xvc2luZyBtdXN0IGJl
IHByb3BhZ2F0ZWQgZm9yd2FyZDogc3RhcnRzIGNsb3NlZDsgcHJldmVudENsb3NlID0gdHJ1ZSwg
cHJldmVudEFib3J0ID0gdHJ1ZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQot
RkFJTCBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBzdGFydHMgY2xvc2VkOyBw
cmV2ZW50Q2xvc2UgPSB0cnVlLCBwcmV2ZW50QWJvcnQgPSB0cnVlLCBwcmV2ZW50Q2FuY2VsID0g
dHJ1ZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBDbG9zaW5nIG11
c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBiZWNvbWVzIGNsb3NlZCBhc3luY2hyb25vdXNseTsg
cHJldmVudENsb3NlIG9taXR0ZWQ7IGZ1bGZpbGxlZCBjbG9zZSBwcm9taXNlIENhbid0IGZpbmQg
dmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIENsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVk
IGZvcndhcmQ6IGJlY29tZXMgY2xvc2VkIGFzeW5jaHJvbm91c2x5OyBwcmV2ZW50Q2xvc2Ugb21p
dHRlZDsgcmVqZWN0ZWQgY2xvc2UgcHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJs
ZVN0cmVhbQotRkFJTCBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBiZWNvbWVz
IGNsb3NlZCBhc3luY2hyb25vdXNseTsgcHJldmVudENsb3NlID0gdHJ1ZSBDYW4ndCBmaW5kIHZh
cmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBm
b3J3YXJkOiBiZWNvbWVzIGNsb3NlZCBhc3luY2hyb25vdXNseTsgZGVzdCBuZXZlciBkZXNpcmVz
IGNodW5rczsgcHJldmVudENsb3NlIG9taXR0ZWQ7IGZ1bGZpbGxlZCBjbG9zZSBwcm9taXNlIENh
bid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIENsb3NpbmcgbXVzdCBiZSBw
cm9wYWdhdGVkIGZvcndhcmQ6IGJlY29tZXMgY2xvc2VkIGFzeW5jaHJvbm91c2x5OyBkZXN0IG5l
dmVyIGRlc2lyZXMgY2h1bmtzOyBwcmV2ZW50Q2xvc2Ugb21pdHRlZDsgcmVqZWN0ZWQgY2xvc2Ug
cHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBDbG9zaW5n
IG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBiZWNvbWVzIGNsb3NlZCBhc3luY2hyb25vdXNs
eTsgZGVzdCBuZXZlciBkZXNpcmVzIGNodW5rczsgcHJldmVudENsb3NlID0gdHJ1ZSBDYW4ndCBm
aW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBDbG9zaW5nIG11c3QgYmUgcHJvcGFn
YXRlZCBmb3J3YXJkOiBiZWNvbWVzIGNsb3NlZCBhZnRlciBvbmUgY2h1bms7IHByZXZlbnRDbG9z
ZSBvbWl0dGVkOyBmdWxmaWxsZWQgY2xvc2UgcHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBX
cml0YWJsZVN0cmVhbQotRkFJTCBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBi
ZWNvbWVzIGNsb3NlZCBhZnRlciBvbmUgY2h1bms7IHByZXZlbnRDbG9zZSBvbWl0dGVkOyByZWpl
Y3RlZCBjbG9zZSBwcm9taXNlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1G
QUlMIENsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IGJlY29tZXMgY2xvc2VkIGFm
dGVyIG9uZSBjaHVuazsgcHJldmVudENsb3NlID0gdHJ1ZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBX
cml0YWJsZVN0cmVhbQotRkFJTCBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBz
aHV0ZG93biBtdXN0IG5vdCBvY2N1ciB1bnRpbCB0aGUgZmluYWwgd3JpdGUgY29tcGxldGVzIENh
bid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIENsb3NpbmcgbXVzdCBiZSBw
cm9wYWdhdGVkIGZvcndhcmQ6IHNodXRkb3duIG11c3Qgbm90IG9jY3VyIHVudGlsIHRoZSBmaW5h
bCB3cml0ZSBjb21wbGV0ZXM7IHByZXZlbnRDbG9zZSA9IHRydWUgQ2FuJ3QgZmluZCB2YXJpYWJs
ZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2Fy
ZDogc2h1dGRvd24gbXVzdCBub3Qgb2NjdXIgdW50aWwgdGhlIGZpbmFsIHdyaXRlIGNvbXBsZXRl
czsgYmVjb21lcyBjbG9zZWQgYWZ0ZXIgZmlyc3Qgd3JpdGUgQ2FuJ3QgZmluZCB2YXJpYWJsZTog
V3JpdGFibGVTdHJlYW0KLUZBSUwgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDog
c2h1dGRvd24gbXVzdCBub3Qgb2NjdXIgdW50aWwgdGhlIGZpbmFsIHdyaXRlIGNvbXBsZXRlczsg
YmVjb21lcyBjbG9zZWQgYWZ0ZXIgZmlyc3Qgd3JpdGU7IHByZXZlbnRDbG9zZSA9IHRydWUgQ2Fu
J3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9jbG9zZS1w
cm9wYWdhdGlvbi1mb3J3YXJkLmRlZGljYXRlZHdvcmtlci5odG1sIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9jbG9zZS1wcm9wYWdh
dGlvbi1mb3J3YXJkLmRlZGljYXRlZHdvcmtlci5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAxYzAxNmZmZThlZmNhOWZiZTI5ODE3MDVhODBlYjIxODgzY2JjNDc1Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvY2xvc2UtcHJvcGFnYXRp
b24tZm9yd2FyZC5kZWRpY2F0ZWR3b3JrZXIuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDExICsw
LDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHRpdGxlPmNs
b3NlLXByb3BhZ2F0aW9uLWZvcndhcmQuanMgZGVkaWNhdGVkIHdvcmtlciB3cmFwcGVyIGZpbGU8
L3RpdGxlPgotCi08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3Jp
cHQ+Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3Jp
cHQ+Ci0KLTxzY3JpcHQ+Ci0ndXNlIHN0cmljdCc7Ci1mZXRjaF90ZXN0c19mcm9tX3dvcmtlcihu
ZXcgV29ya2VyKCdjbG9zZS1wcm9wYWdhdGlvbi1mb3J3YXJkLmpzJykpOwotPC9zY3JpcHQ+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMvcGlwaW5nL2Nsb3NlLXByb3BhZ2F0aW9uLWZvcndhcmQuaHRtbCBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvY2xvc2UtcHJv
cGFnYXRpb24tZm9yd2FyZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZjkw
ZmE3YzJmNTMzZjBjZjc0NmQ0YjhmNjhjNmM5MjI0YzY5MzlhLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvY2xvc2UtcHJvcGFnYXRpb24tZm9yd2FyZC5o
dG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08bWV0
YSBjaGFyc2V0PSJ1dGYtOCI+Ci08dGl0bGU+Y2xvc2UtcHJvcGFnYXRpb24tZm9yd2FyZC5qcyBi
cm93c2VyIGNvbnRleHQgd3JhcHBlciBmaWxlPC90aXRsZT4KLQotPHNjcmlwdCBzcmM9Ii9yZXNv
dXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMv
dGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotCi08c2NyaXB0IHNyYz0iLi4vcmVzb3Vy
Y2VzL3Rlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9y
ZWNvcmRpbmctc3RyZWFtcy5qcyI+PC9zY3JpcHQ+Ci0KLTxzY3JpcHQgc3JjPSJjbG9zZS1wcm9w
YWdhdGlvbi1mb3J3YXJkLmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvY2xvc2UtcHJvcGFn
YXRpb24tZm9yd2FyZC5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy9waXBpbmcvY2xvc2UtcHJvcGFnYXRpb24tZm9yd2FyZC5qcwpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGYwYjdiYjFhMzUyZDJkMTRhZjgxNGUzOWI2MDRkMTUz
ZTZlMGZmYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5n
L2Nsb3NlLXByb3BhZ2F0aW9uLWZvcndhcmQuanMKKysrIC9kZXYvbnVsbApAQCAtMSw1NjIgKzAs
MCBAQAotJ3VzZSBzdHJpY3QnOwotCi1pZiAoc2VsZi5pbXBvcnRTY3JpcHRzKSB7Ci0gIHNlbGYu
aW1wb3J0U2NyaXB0cygnL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcycpOwotICBzZWxmLmltcG9y
dFNjcmlwdHMoJy4uL3Jlc291cmNlcy90ZXN0LXV0aWxzLmpzJyk7Ci0gIHNlbGYuaW1wb3J0U2Ny
aXB0cygnLi4vcmVzb3VyY2VzL3JlY29yZGluZy1zdHJlYW1zLmpzJyk7Ci19Ci0KLWNvbnN0IGVy
cm9yMSA9IG5ldyBFcnJvcignZXJyb3IxIScpOwotZXJyb3IxLm5hbWUgPSAnZXJyb3IxJzsKLQot
cHJvbWlzZV90ZXN0KCgpID0+IHsKLQotICBjb25zdCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3Ry
ZWFtKHsKLSAgICBzdGFydChjb250cm9sbGVyKSB7Ci0gICAgICBjb250cm9sbGVyLmNsb3NlKCk7
Ci0gICAgfQotICB9KTsKLQotICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKCk7
Ci0KLSAgcmV0dXJuIHJzLnBpcGVUbyh3cykudGhlbih2YWx1ZSA9PiB7Ci0gICAgYXNzZXJ0X2Vx
dWFscyh2YWx1ZSwgdW5kZWZpbmVkLCAndGhlIHByb21pc2UgbXVzdCBmdWxmaWxsIHdpdGggdW5k
ZWZpbmVkJyk7Ci0gIH0pCi0gIC50aGVuKCgpID0+IHsKLSAgICBhc3NlcnRfYXJyYXlfZXF1YWxz
KHJzLmV2ZW50cywgW10pOwotICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ2Ns
b3NlJ10pOwotCi0gICAgcmV0dXJuIFByb21pc2UuYWxsKFsKLSAgICAgIHJzLmdldFJlYWRlcigp
LmNsb3NlZCwKLSAgICAgIHdzLmdldFdyaXRlcigpLmNsb3NlZAotICAgIF0pOwotICB9KTsKLQot
fSwgJ0Nsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHN0YXJ0cyBjbG9zZWQ7IHBy
ZXZlbnRDbG9zZSBvbWl0dGVkOyBmdWxmaWxsZWQgY2xvc2UgcHJvbWlzZScpOwotCi1wcm9taXNl
X3Rlc3QodCA9PiB7Ci0KLSAgY29uc3QgcnMgPSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSh7Ci0g
ICAgc3RhcnQoY29udHJvbGxlcikgewotICAgICAgY29udHJvbGxlci5jbG9zZSgpOwotICAgIH0K
LSAgfSk7Ci0KLSAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSh7Ci0gICAgY2xv
c2UoKSB7Ci0gICAgICB0aHJvdyBlcnJvcjE7Ci0gICAgfQotICB9KTsKLQotICByZXR1cm4gcHJv
bWlzZV9yZWplY3RzKHQsIGVycm9yMSwgcnMucGlwZVRvKHdzKSwgJ3BpcGVUbyBtdXN0IHJlamVj
dCB3aXRoIHRoZSBzYW1lIGVycm9yJykudGhlbigoKSA9PiB7Ci0gICAgYXNzZXJ0X2FycmF5X2Vx
dWFscyhycy5ldmVudHMsIFtdKTsKLSAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywg
WydjbG9zZSddKTsKLQotICAgIHJldHVybiBQcm9taXNlLmFsbChbCi0gICAgICBycy5nZXRSZWFk
ZXIoKS5jbG9zZWQsCi0gICAgICBwcm9taXNlX3JlamVjdHModCwgZXJyb3IxLCB3cy5nZXRXcml0
ZXIoKS5jbG9zZWQpCi0gICAgXSk7Ci0gIH0pOwotCi19LCAnQ2xvc2luZyBtdXN0IGJlIHByb3Bh
Z2F0ZWQgZm9yd2FyZDogc3RhcnRzIGNsb3NlZDsgcHJldmVudENsb3NlIG9taXR0ZWQ7IHJlamVj
dGVkIGNsb3NlIHByb21pc2UnKTsKLQotZm9yIChjb25zdCBmYWxzeSBvZiBbdW5kZWZpbmVkLCBu
dWxsLCBmYWxzZSwgKzAsIC0wLCBOYU4sICcnXSkgewotICBjb25zdCBzdHJpbmdWZXJzaW9uID0g
T2JqZWN0LmlzKGZhbHN5LCAtMCkgPyAnLTAnIDogU3RyaW5nKGZhbHN5KTsKLQotICBwcm9taXNl
X3Rlc3QoKCkgPT4gewotCi0gICAgY29uc3QgcnMgPSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSh7
Ci0gICAgICBzdGFydChjb250cm9sbGVyKSB7Ci0gICAgICAgIGNvbnRyb2xsZXIuY2xvc2UoKTsK
LSAgICAgIH0KLSAgICB9KTsKLQotICAgIGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJl
YW0oKTsKLQotICAgIHJldHVybiBycy5waXBlVG8od3MsIHsgcHJldmVudENsb3NlOiBmYWxzeSB9
KS50aGVuKHZhbHVlID0+IHsKLSAgICAgIGFzc2VydF9lcXVhbHModmFsdWUsIHVuZGVmaW5lZCwg
J3RoZSBwcm9taXNlIG11c3QgZnVsZmlsbCB3aXRoIHVuZGVmaW5lZCcpOwotICAgIH0pCi0gICAg
LnRoZW4oKCkgPT4gewotICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhycy5ldmVudHMsIFtdKTsK
LSAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ2Nsb3NlJ10pOwotCi0gICAg
ICByZXR1cm4gUHJvbWlzZS5hbGwoWwotICAgICAgICBycy5nZXRSZWFkZXIoKS5jbG9zZWQsCi0g
ICAgICAgIHdzLmdldFdyaXRlcigpLmNsb3NlZAotICAgICAgXSk7Ci0gICAgfSk7Ci0KLSAgfSwg
YENsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHN0YXJ0cyBjbG9zZWQ7IHByZXZl
bnRDbG9zZSA9ICR7c3RyaW5nVmVyc2lvbn0gKGZhbHN5KTsgZnVsZmlsbGVkIGNsb3NlIGAgKwot
ICAgICBgcHJvbWlzZWApOwotfQotCi1mb3IgKGNvbnN0IHRydXRoeSBvZiBbdHJ1ZSwgJ2EnLCAx
LCBTeW1ib2woKSwgeyB9XSkgewotICBwcm9taXNlX3Rlc3QoKCkgPT4gewotCi0gICAgY29uc3Qg
cnMgPSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSh7Ci0gICAgICBzdGFydChjb250cm9sbGVyKSB7
Ci0gICAgICAgIGNvbnRyb2xsZXIuY2xvc2UoKTsKLSAgICAgIH0KLSAgICB9KTsKLQotICAgIGNv
bnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0oKTsKLQotICAgIHJldHVybiBycy5waXBl
VG8od3MsIHsgcHJldmVudENsb3NlOiB0cnV0aHkgfSkudGhlbih2YWx1ZSA9PiB7Ci0gICAgICBh
c3NlcnRfZXF1YWxzKHZhbHVlLCB1bmRlZmluZWQsICd0aGUgcHJvbWlzZSBtdXN0IGZ1bGZpbGwg
d2l0aCB1bmRlZmluZWQnKTsKLSAgICB9KQotICAgIC50aGVuKCgpID0+IHsKLSAgICAgIGFzc2Vy
dF9hcnJheV9lcXVhbHMocnMuZXZlbnRzLCBbXSk7Ci0gICAgICBhc3NlcnRfYXJyYXlfZXF1YWxz
KHdzLmV2ZW50cywgW10pOwotCi0gICAgICByZXR1cm4gcnMuZ2V0UmVhZGVyKCkuY2xvc2VkOwot
ICAgIH0pOwotCi0gIH0sIGBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBzdGFy
dHMgY2xvc2VkOyBwcmV2ZW50Q2xvc2UgPSAke1N0cmluZyh0cnV0aHkpfSAodHJ1dGh5KWApOwot
fQotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotCi0gIGNvbnN0IHJzID0gcmVjb3JkaW5nUmVhZGFi
bGVTdHJlYW0oewotICAgIHN0YXJ0KGNvbnRyb2xsZXIpIHsKLSAgICAgIGNvbnRyb2xsZXIuY2xv
c2UoKTsKLSAgICB9Ci0gIH0pOwotCi0gIGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJl
YW0oKTsKLQotICByZXR1cm4gcnMucGlwZVRvKHdzLCB7IHByZXZlbnRDbG9zZTogdHJ1ZSwgcHJl
dmVudEFib3J0OiB0cnVlIH0pLnRoZW4odmFsdWUgPT4gewotICAgIGFzc2VydF9lcXVhbHModmFs
dWUsIHVuZGVmaW5lZCwgJ3RoZSBwcm9taXNlIG11c3QgZnVsZmlsbCB3aXRoIHVuZGVmaW5lZCcp
OwotICB9KQotICAudGhlbigoKSA9PiB7Ci0gICAgYXNzZXJ0X2FycmF5X2VxdWFscyhycy5ldmVu
dHMsIFtdKTsKLSAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgW10pOwotCi0gICAg
cmV0dXJuIHJzLmdldFJlYWRlcigpLmNsb3NlZDsKLSAgfSk7Ci0KLX0sICdDbG9zaW5nIG11c3Qg
YmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBzdGFydHMgY2xvc2VkOyBwcmV2ZW50Q2xvc2UgPSB0cnVl
LCBwcmV2ZW50QWJvcnQgPSB0cnVlJyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgY29u
c3QgcnMgPSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoY29udHJvbGxlcikg
ewotICAgICAgY29udHJvbGxlci5jbG9zZSgpOwotICAgIH0KLSAgfSk7Ci0KLSAgY29uc3Qgd3Mg
PSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSgpOwotCi0gIHJldHVybiBycy5waXBlVG8od3MsIHsg
cHJldmVudENsb3NlOiB0cnVlLCBwcmV2ZW50QWJvcnQ6IHRydWUsIHByZXZlbnRDYW5jZWw6IHRy
dWUgfSkudGhlbih2YWx1ZSA9PiB7Ci0gICAgYXNzZXJ0X2VxdWFscyh2YWx1ZSwgdW5kZWZpbmVk
LCAndGhlIHByb21pc2UgbXVzdCBmdWxmaWxsIHdpdGggdW5kZWZpbmVkJyk7Ci0gIH0pCi0gIC50
aGVuKCgpID0+IHsKLSAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJzLmV2ZW50cywgW10pOwotICAg
IGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbXSk7Ci0KLSAgICByZXR1cm4gcnMuZ2V0
UmVhZGVyKCkuY2xvc2VkOwotICB9KTsKLQotfSwgJ0Nsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVk
IGZvcndhcmQ6IHN0YXJ0cyBjbG9zZWQ7IHByZXZlbnRDbG9zZSA9IHRydWUsIHByZXZlbnRBYm9y
dCA9IHRydWUsIHByZXZlbnRDYW5jZWwgPSB0cnVlJyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7
Ci0KLSAgY29uc3QgcnMgPSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSgpOwotCi0gIGNvbnN0IHdz
ID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0oKTsKLQotICBjb25zdCBwaXBlUHJvbWlzZSA9IHJz
LnBpcGVUbyh3cyk7Ci0KLSAgc2V0VGltZW91dCgoKSA9PiBycy5jb250cm9sbGVyLmNsb3NlKCkp
OwotCi0gIHJldHVybiBwaXBlUHJvbWlzZS50aGVuKHZhbHVlID0+IHsKLSAgICBhc3NlcnRfZXF1
YWxzKHZhbHVlLCB1bmRlZmluZWQsICd0aGUgcHJvbWlzZSBtdXN0IGZ1bGZpbGwgd2l0aCB1bmRl
ZmluZWQnKTsKLSAgfSkKLSAgLnRoZW4oKCkgPT4gewotICAgIGFzc2VydF9hcnJheV9lcXVhbHMo
cnMuZXZlbnRzV2l0aG91dFB1bGxzLCBbXSk7Ci0gICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5l
dmVudHMsIFsnY2xvc2UnXSk7Ci0KLSAgICByZXR1cm4gUHJvbWlzZS5hbGwoWwotICAgICAgcnMu
Z2V0UmVhZGVyKCkuY2xvc2VkLAotICAgICAgd3MuZ2V0V3JpdGVyKCkuY2xvc2VkCi0gICAgXSk7
Ci0gIH0pOwotCi19LCAnQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogYmVjb21l
cyBjbG9zZWQgYXN5bmNocm9ub3VzbHk7IHByZXZlbnRDbG9zZSBvbWl0dGVkOyBmdWxmaWxsZWQg
Y2xvc2UgcHJvbWlzZScpOwotCi1wcm9taXNlX3Rlc3QodCA9PiB7Ci0KLSAgY29uc3QgcnMgPSBy
ZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSgpOwotCi0gIGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFi
bGVTdHJlYW0oewotICAgIGNsb3NlKCkgewotICAgICAgdGhyb3cgZXJyb3IxOwotICAgIH0KLSAg
fSk7Ci0KLSAgY29uc3QgcGlwZVByb21pc2UgPSBwcm9taXNlX3JlamVjdHModCwgZXJyb3IxLCBy
cy5waXBlVG8od3MpLCAncGlwZVRvIG11c3QgcmVqZWN0IHdpdGggdGhlIHNhbWUgZXJyb3InKTsK
LQotICBzZXRUaW1lb3V0KCgpID0+IHJzLmNvbnRyb2xsZXIuY2xvc2UoKSk7Ci0KLSAgcmV0dXJu
IHBpcGVQcm9taXNlLnRoZW4oKCkgPT4gewotICAgIGFzc2VydF9hcnJheV9lcXVhbHMocnMuZXZl
bnRzV2l0aG91dFB1bGxzLCBbXSk7Ci0gICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMs
IFsnY2xvc2UnXSk7Ci0KLSAgICByZXR1cm4gUHJvbWlzZS5hbGwoWwotICAgICAgcnMuZ2V0UmVh
ZGVyKCkuY2xvc2VkLAotICAgICAgcHJvbWlzZV9yZWplY3RzKHQsIGVycm9yMSwgd3MuZ2V0V3Jp
dGVyKCkuY2xvc2VkKQotICAgIF0pOwotICB9KTsKLQotfSwgJ0Nsb3NpbmcgbXVzdCBiZSBwcm9w
YWdhdGVkIGZvcndhcmQ6IGJlY29tZXMgY2xvc2VkIGFzeW5jaHJvbm91c2x5OyBwcmV2ZW50Q2xv
c2Ugb21pdHRlZDsgcmVqZWN0ZWQgY2xvc2UgcHJvbWlzZScpOwotCi1wcm9taXNlX3Rlc3QoKCkg
PT4gewotCi0gIGNvbnN0IHJzID0gcmVjb3JkaW5nUmVhZGFibGVTdHJlYW0oKTsKLQotICBjb25z
dCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKCk7Ci0KLSAgY29uc3QgcGlwZVByb21pc2Ug
PSBycy5waXBlVG8od3MsIHsgcHJldmVudENsb3NlOiB0cnVlIH0pOwotCi0gIHNldFRpbWVvdXQo
KCkgPT4gcnMuY29udHJvbGxlci5jbG9zZSgpKTsKLQotICByZXR1cm4gcGlwZVByb21pc2UudGhl
bih2YWx1ZSA9PiB7Ci0gICAgYXNzZXJ0X2VxdWFscyh2YWx1ZSwgdW5kZWZpbmVkLCAndGhlIHBy
b21pc2UgbXVzdCBmdWxmaWxsIHdpdGggdW5kZWZpbmVkJyk7Ci0gIH0pCi0gIC50aGVuKCgpID0+
IHsKLSAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJzLmV2ZW50c1dpdGhvdXRQdWxscywgW10pOwot
ICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbXSk7Ci0KLSAgICByZXR1cm4gcnMu
Z2V0UmVhZGVyKCkuY2xvc2VkOwotICB9KTsKLQotfSwgJ0Nsb3NpbmcgbXVzdCBiZSBwcm9wYWdh
dGVkIGZvcndhcmQ6IGJlY29tZXMgY2xvc2VkIGFzeW5jaHJvbm91c2x5OyBwcmV2ZW50Q2xvc2Ug
PSB0cnVlJyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgY29uc3QgcnMgPSByZWNvcmRp
bmdSZWFkYWJsZVN0cmVhbSgpOwotCi0gIGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJl
YW0odW5kZWZpbmVkLCBuZXcgQ291bnRRdWV1aW5nU3RyYXRlZ3koeyBoaWdoV2F0ZXJNYXJrOiAw
IH0pKTsKLQotICBjb25zdCBwaXBlUHJvbWlzZSA9IHJzLnBpcGVUbyh3cyk7Ci0KLSAgc2V0VGlt
ZW91dCgoKSA9PiBycy5jb250cm9sbGVyLmNsb3NlKCkpOwotCi0gIHJldHVybiBwaXBlUHJvbWlz
ZS50aGVuKHZhbHVlID0+IHsKLSAgICBhc3NlcnRfZXF1YWxzKHZhbHVlLCB1bmRlZmluZWQsICd0
aGUgcHJvbWlzZSBtdXN0IGZ1bGZpbGwgd2l0aCB1bmRlZmluZWQnKTsKLSAgfSkKLSAgLnRoZW4o
KCkgPT4gewotICAgIGFzc2VydF9hcnJheV9lcXVhbHMocnMuZXZlbnRzV2l0aG91dFB1bGxzLCBb
XSk7Ci0gICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsnY2xvc2UnXSk7Ci0KLSAg
ICByZXR1cm4gUHJvbWlzZS5hbGwoWwotICAgICAgcnMuZ2V0UmVhZGVyKCkuY2xvc2VkLAotICAg
ICAgd3MuZ2V0V3JpdGVyKCkuY2xvc2VkCi0gICAgXSk7Ci0gIH0pOwotCi19LCAnQ2xvc2luZyBt
dXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogYmVjb21lcyBjbG9zZWQgYXN5bmNocm9ub3VzbHk7
IGRlc3QgbmV2ZXIgZGVzaXJlcyBjaHVua3M7ICcgKwotICAgJ3ByZXZlbnRDbG9zZSBvbWl0dGVk
OyBmdWxmaWxsZWQgY2xvc2UgcHJvbWlzZScpOwotCi1wcm9taXNlX3Rlc3QodCA9PiB7Ci0KLSAg
Y29uc3QgcnMgPSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSgpOwotCi0gIGNvbnN0IHdzID0gcmVj
b3JkaW5nV3JpdGFibGVTdHJlYW0oewotICAgIGNsb3NlKCkgewotICAgICAgdGhyb3cgZXJyb3Ix
OwotICAgIH0KLSAgfSwgbmV3IENvdW50UXVldWluZ1N0cmF0ZWd5KHsgaGlnaFdhdGVyTWFyazog
MCB9KSk7Ci0KLSAgY29uc3QgcGlwZVByb21pc2UgPSBwcm9taXNlX3JlamVjdHModCwgZXJyb3Ix
LCBycy5waXBlVG8od3MpLCAncGlwZVRvIG11c3QgcmVqZWN0IHdpdGggdGhlIHNhbWUgZXJyb3In
KTsKLQotICBzZXRUaW1lb3V0KCgpID0+IHJzLmNvbnRyb2xsZXIuY2xvc2UoKSk7Ci0KLSAgcmV0
dXJuIHBpcGVQcm9taXNlLnRoZW4oKCkgPT4gewotICAgIGFzc2VydF9hcnJheV9lcXVhbHMocnMu
ZXZlbnRzV2l0aG91dFB1bGxzLCBbXSk7Ci0gICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVu
dHMsIFsnY2xvc2UnXSk7Ci0KLSAgICByZXR1cm4gUHJvbWlzZS5hbGwoWwotICAgICAgcnMuZ2V0
UmVhZGVyKCkuY2xvc2VkLAotICAgICAgcHJvbWlzZV9yZWplY3RzKHQsIGVycm9yMSwgd3MuZ2V0
V3JpdGVyKCkuY2xvc2VkKQotICAgIF0pOwotICB9KTsKLQotfSwgJ0Nsb3NpbmcgbXVzdCBiZSBw
cm9wYWdhdGVkIGZvcndhcmQ6IGJlY29tZXMgY2xvc2VkIGFzeW5jaHJvbm91c2x5OyBkZXN0IG5l
dmVyIGRlc2lyZXMgY2h1bmtzOyAnICsKLSAgICdwcmV2ZW50Q2xvc2Ugb21pdHRlZDsgcmVqZWN0
ZWQgY2xvc2UgcHJvbWlzZScpOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotCi0gIGNvbnN0IHJz
ID0gcmVjb3JkaW5nUmVhZGFibGVTdHJlYW0oKTsKLQotICBjb25zdCB3cyA9IHJlY29yZGluZ1dy
aXRhYmxlU3RyZWFtKHVuZGVmaW5lZCwgbmV3IENvdW50UXVldWluZ1N0cmF0ZWd5KHsgaGlnaFdh
dGVyTWFyazogMCB9KSk7Ci0KLSAgY29uc3QgcGlwZVByb21pc2UgPSBycy5waXBlVG8od3MsIHsg
cHJldmVudENsb3NlOiB0cnVlIH0pOwotCi0gIHNldFRpbWVvdXQoKCkgPT4gcnMuY29udHJvbGxl
ci5jbG9zZSgpKTsKLQotICByZXR1cm4gcGlwZVByb21pc2UudGhlbih2YWx1ZSA9PiB7Ci0gICAg
YXNzZXJ0X2VxdWFscyh2YWx1ZSwgdW5kZWZpbmVkLCAndGhlIHByb21pc2UgbXVzdCBmdWxmaWxs
IHdpdGggdW5kZWZpbmVkJyk7Ci0gIH0pCi0gIC50aGVuKCgpID0+IHsKLSAgICBhc3NlcnRfYXJy
YXlfZXF1YWxzKHJzLmV2ZW50c1dpdGhvdXRQdWxscywgW10pOwotICAgIGFzc2VydF9hcnJheV9l
cXVhbHMod3MuZXZlbnRzLCBbXSk7Ci0KLSAgICByZXR1cm4gcnMuZ2V0UmVhZGVyKCkuY2xvc2Vk
OwotICB9KTsKLQotfSwgJ0Nsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IGJlY29t
ZXMgY2xvc2VkIGFzeW5jaHJvbm91c2x5OyBkZXN0IG5ldmVyIGRlc2lyZXMgY2h1bmtzOyAnICsK
LSAgICdwcmV2ZW50Q2xvc2UgPSB0cnVlJyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAg
Y29uc3QgcnMgPSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSgpOwotCi0gIGNvbnN0IHdzID0gcmVj
b3JkaW5nV3JpdGFibGVTdHJlYW0oKTsKLQotICBjb25zdCBwaXBlUHJvbWlzZSA9IHJzLnBpcGVU
byh3cyk7Ci0KLSAgc2V0VGltZW91dCgoKSA9PiB7Ci0gICAgcnMuY29udHJvbGxlci5lbnF1ZXVl
KCdIZWxsbycpOwotICAgIHNldFRpbWVvdXQoKCkgPT4gcnMuY29udHJvbGxlci5jbG9zZSgpKTsK
LSAgfSwgMTApOwotCi0gIHJldHVybiBwaXBlUHJvbWlzZS50aGVuKHZhbHVlID0+IHsKLSAgICBh
c3NlcnRfZXF1YWxzKHZhbHVlLCB1bmRlZmluZWQsICd0aGUgcHJvbWlzZSBtdXN0IGZ1bGZpbGwg
d2l0aCB1bmRlZmluZWQnKTsKLSAgfSkKLSAgLnRoZW4oKCkgPT4gewotICAgIGFzc2VydF9hcnJh
eV9lcXVhbHMocnMuZXZlbnRzV2l0aG91dFB1bGxzLCBbXSk7Ci0gICAgYXNzZXJ0X2FycmF5X2Vx
dWFscyh3cy5ldmVudHMsIFsnd3JpdGUnLCAnSGVsbG8nLCAnY2xvc2UnXSk7Ci0KLSAgICByZXR1
cm4gUHJvbWlzZS5hbGwoWwotICAgICAgcnMuZ2V0UmVhZGVyKCkuY2xvc2VkLAotICAgICAgd3Mu
Z2V0V3JpdGVyKCkuY2xvc2VkCi0gICAgXSk7Ci0gIH0pOwotCi19LCAnQ2xvc2luZyBtdXN0IGJl
IHByb3BhZ2F0ZWQgZm9yd2FyZDogYmVjb21lcyBjbG9zZWQgYWZ0ZXIgb25lIGNodW5rOyBwcmV2
ZW50Q2xvc2Ugb21pdHRlZDsgZnVsZmlsbGVkIGNsb3NlIHByb21pc2UnKTsKLQotcHJvbWlzZV90
ZXN0KHQgPT4gewotCi0gIGNvbnN0IHJzID0gcmVjb3JkaW5nUmVhZGFibGVTdHJlYW0oKTsKLQot
ICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKHsKLSAgICBjbG9zZSgpIHsKLSAg
ICAgIHRocm93IGVycm9yMTsKLSAgICB9Ci0gIH0pOwotCi0gIGNvbnN0IHBpcGVQcm9taXNlID0g
cHJvbWlzZV9yZWplY3RzKHQsIGVycm9yMSwgcnMucGlwZVRvKHdzKSwgJ3BpcGVUbyBtdXN0IHJl
amVjdCB3aXRoIHRoZSBzYW1lIGVycm9yJyk7Ci0KLSAgc2V0VGltZW91dCgoKSA9PiB7Ci0gICAg
cnMuY29udHJvbGxlci5lbnF1ZXVlKCdIZWxsbycpOwotICAgIHNldFRpbWVvdXQoKCkgPT4gcnMu
Y29udHJvbGxlci5jbG9zZSgpKTsKLSAgfSwgMTApOwotCi0gIHJldHVybiBwaXBlUHJvbWlzZS50
aGVuKCgpID0+IHsKLSAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJzLmV2ZW50c1dpdGhvdXRQdWxs
cywgW10pOwotICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ3dyaXRlJywgJ0hl
bGxvJywgJ2Nsb3NlJ10pOwotCi0gICAgcmV0dXJuIFByb21pc2UuYWxsKFsKLSAgICAgIHJzLmdl
dFJlYWRlcigpLmNsb3NlZCwKLSAgICAgIHByb21pc2VfcmVqZWN0cyh0LCBlcnJvcjEsIHdzLmdl
dFdyaXRlcigpLmNsb3NlZCkKLSAgICBdKTsKLSAgfSk7Ci0KLX0sICdDbG9zaW5nIG11c3QgYmUg
cHJvcGFnYXRlZCBmb3J3YXJkOiBiZWNvbWVzIGNsb3NlZCBhZnRlciBvbmUgY2h1bms7IHByZXZl
bnRDbG9zZSBvbWl0dGVkOyByZWplY3RlZCBjbG9zZSBwcm9taXNlJyk7Ci0KLXByb21pc2VfdGVz
dCgoKSA9PiB7Ci0KLSAgY29uc3QgcnMgPSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSgpOwotCi0g
IGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0oKTsKLQotICBjb25zdCBwaXBlUHJv
bWlzZSA9IHJzLnBpcGVUbyh3cywgeyBwcmV2ZW50Q2xvc2U6IHRydWUgfSk7Ci0KLSAgc2V0VGlt
ZW91dCgoKSA9PiB7Ci0gICAgcnMuY29udHJvbGxlci5lbnF1ZXVlKCdIZWxsbycpOwotICAgIHNl
dFRpbWVvdXQoKCkgPT4gcnMuY29udHJvbGxlci5jbG9zZSgpKTsKLSAgfSwgMTApOwotCi0gIHJl
dHVybiBwaXBlUHJvbWlzZS50aGVuKHZhbHVlID0+IHsKLSAgICBhc3NlcnRfZXF1YWxzKHZhbHVl
LCB1bmRlZmluZWQsICd0aGUgcHJvbWlzZSBtdXN0IGZ1bGZpbGwgd2l0aCB1bmRlZmluZWQnKTsK
LSAgfSkKLSAgLnRoZW4oKCkgPT4gewotICAgIGFzc2VydF9hcnJheV9lcXVhbHMocnMuZXZlbnRz
V2l0aG91dFB1bGxzLCBbXSk7Ci0gICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsn
d3JpdGUnLCAnSGVsbG8nXSk7Ci0KLSAgICByZXR1cm4gcnMuZ2V0UmVhZGVyKCkuY2xvc2VkOwot
ICB9KTsKLQotfSwgJ0Nsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IGJlY29tZXMg
Y2xvc2VkIGFmdGVyIG9uZSBjaHVuazsgcHJldmVudENsb3NlID0gdHJ1ZScpOwotCi1wcm9taXNl
X3Rlc3QoKCkgPT4gewotCi0gIGNvbnN0IHJzID0gcmVjb3JkaW5nUmVhZGFibGVTdHJlYW0oKTsK
LQotICBsZXQgcmVzb2x2ZVdyaXRlUHJvbWlzZTsKLSAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0
YWJsZVN0cmVhbSh7Ci0gICAgd3JpdGUoKSB7Ci0gICAgICByZXR1cm4gbmV3IFByb21pc2UocmVz
b2x2ZSA9PiB7Ci0gICAgICAgIHJlc29sdmVXcml0ZVByb21pc2UgPSByZXNvbHZlOwotICAgICAg
fSk7Ci0gICAgfQotICB9KTsKLQotICBsZXQgcGlwZUNvbXBsZXRlID0gZmFsc2U7Ci0gIGNvbnN0
IHBpcGVQcm9taXNlID0gcnMucGlwZVRvKHdzKS50aGVuKCgpID0+IHsKLSAgICBwaXBlQ29tcGxl
dGUgPSB0cnVlOwotICB9KTsKLQotICBycy5jb250cm9sbGVyLmVucXVldWUoJ2EnKTsKLSAgcnMu
Y29udHJvbGxlci5jbG9zZSgpOwotCi0gIC8vIEZsdXNoIGFzeW5jIGV2ZW50cyBhbmQgdmVyaWZ5
IHRoYXQgbm8gc2h1dGRvd24gb2NjdXJzLgotICByZXR1cm4gZmx1c2hBc3luY0V2ZW50cygpLnRo
ZW4oKCkgPT4gewotICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ3dyaXRlJywg
J2EnXSk7IC8vIG5vICdjbG9zZScKLSAgICBhc3NlcnRfZXF1YWxzKHBpcGVDb21wbGV0ZSwgZmFs
c2UsICd0aGUgcGlwZSBtdXN0IG5vdCBiZSBjb21wbGV0ZScpOwotCi0gICAgcmVzb2x2ZVdyaXRl
UHJvbWlzZSgpOwotCi0gICAgcmV0dXJuIHBpcGVQcm9taXNlLnRoZW4oKCkgPT4gewotICAgICAg
YXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsnd3JpdGUnLCAnYScsICdjbG9zZSddKTsK
LSAgICB9KTsKLSAgfSk7Ci0KLX0sICdDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJk
OiBzaHV0ZG93biBtdXN0IG5vdCBvY2N1ciB1bnRpbCB0aGUgZmluYWwgd3JpdGUgY29tcGxldGVz
Jyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgY29uc3QgcnMgPSByZWNvcmRpbmdSZWFk
YWJsZVN0cmVhbSgpOwotCi0gIGxldCByZXNvbHZlV3JpdGVQcm9taXNlOwotICBjb25zdCB3cyA9
IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKHsKLSAgICB3cml0ZSgpIHsKLSAgICAgIHJldHVybiBu
ZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKLSAgICAgICAgcmVzb2x2ZVdyaXRlUHJvbWlzZSA9IHJl
c29sdmU7Ci0gICAgICB9KTsKLSAgICB9Ci0gIH0pOwotCi0gIGxldCBwaXBlQ29tcGxldGUgPSBm
YWxzZTsKLSAgY29uc3QgcGlwZVByb21pc2UgPSBycy5waXBlVG8od3MsIHsgcHJldmVudENsb3Nl
OiB0cnVlIH0pLnRoZW4oKCkgPT4gewotICAgIHBpcGVDb21wbGV0ZSA9IHRydWU7Ci0gIH0pOwot
Ci0gIHJzLmNvbnRyb2xsZXIuZW5xdWV1ZSgnYScpOwotICBycy5jb250cm9sbGVyLmNsb3NlKCk7
Ci0KLSAgLy8gRmx1c2ggYXN5bmMgZXZlbnRzIGFuZCB2ZXJpZnkgdGhhdCBubyBzaHV0ZG93biBv
Y2N1cnMuCi0gIHJldHVybiBmbHVzaEFzeW5jRXZlbnRzKCkudGhlbigoKSA9PiB7Ci0gICAgYXNz
ZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsnd3JpdGUnLCAnYSddLAotICAgICAgJ3RoZSBj
aHVuayBtdXN0IGhhdmUgYmVlbiB3cml0dGVuLCBidXQgY2xvc2UgbXVzdCBub3QgaGF2ZSBoYXBw
ZW5lZCcpOwotICAgIGFzc2VydF9lcXVhbHMocGlwZUNvbXBsZXRlLCBmYWxzZSwgJ3RoZSBwaXBl
IG11c3Qgbm90IGJlIGNvbXBsZXRlJyk7Ci0KLSAgICByZXNvbHZlV3JpdGVQcm9taXNlKCk7Ci0K
LSAgICByZXR1cm4gcGlwZVByb21pc2U7Ci0gIH0pLnRoZW4oKCkgPT4gZmx1c2hBc3luY0V2ZW50
cygpKS50aGVuKCgpID0+IHsKLSAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWyd3
cml0ZScsICdhJ10sCi0gICAgICAndGhlIGNodW5rIG11c3QgaGF2ZSBiZWVuIHdyaXR0ZW4sIGJ1
dCBjbG9zZSBtdXN0IG5vdCBoYXZlIGhhcHBlbmVkJyk7Ci0gIH0pOwotCi19LCAnQ2xvc2luZyBt
dXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc2h1dGRvd24gbXVzdCBub3Qgb2NjdXIgdW50aWwg
dGhlIGZpbmFsIHdyaXRlIGNvbXBsZXRlczsgcHJldmVudENsb3NlID0gdHJ1ZScpOwotCi1wcm9t
aXNlX3Rlc3QoKCkgPT4gewotCi0gIGNvbnN0IHJzID0gcmVjb3JkaW5nUmVhZGFibGVTdHJlYW0o
KTsKLQotICBsZXQgcmVzb2x2ZVdyaXRlQ2FsbGVkOwotICBjb25zdCB3cml0ZUNhbGxlZFByb21p
c2UgPSBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKLSAgICByZXNvbHZlV3JpdGVDYWxsZWQgPSBy
ZXNvbHZlOwotICB9KTsKLQotICBsZXQgcmVzb2x2ZVdyaXRlUHJvbWlzZTsKLSAgY29uc3Qgd3Mg
PSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSh7Ci0gICAgd3JpdGUoKSB7Ci0gICAgICByZXNvbHZl
V3JpdGVDYWxsZWQoKTsKLQotICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4gewot
ICAgICAgICByZXNvbHZlV3JpdGVQcm9taXNlID0gcmVzb2x2ZTsKLSAgICAgIH0pOwotICAgIH0K
LSAgfSwgbmV3IENvdW50UXVldWluZ1N0cmF0ZWd5KHsgaGlnaFdhdGVyTWFyazogMiB9KSk7Ci0K
LSAgbGV0IHBpcGVDb21wbGV0ZSA9IGZhbHNlOwotICBjb25zdCBwaXBlUHJvbWlzZSA9IHJzLnBp
cGVUbyh3cykudGhlbigoKSA9PiB7Ci0gICAgcGlwZUNvbXBsZXRlID0gdHJ1ZTsKLSAgfSk7Ci0K
LSAgcnMuY29udHJvbGxlci5lbnF1ZXVlKCdhJyk7Ci0gIHJzLmNvbnRyb2xsZXIuZW5xdWV1ZSgn
YicpOwotCi0gIHJldHVybiB3cml0ZUNhbGxlZFByb21pc2UudGhlbigoKSA9PiBmbHVzaEFzeW5j
RXZlbnRzKCkpLnRoZW4oKCkgPT4gewotICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRz
LCBbJ3dyaXRlJywgJ2EnXSwKLSAgICAgICd0aGUgZmlyc3QgY2h1bmsgbXVzdCBoYXZlIGJlZW4g
d3JpdHRlbiwgYnV0IGNsb3NlIG11c3Qgbm90IGhhdmUgaGFwcGVuZWQgeWV0Jyk7Ci0gICAgYXNz
ZXJ0X2ZhbHNlKHBpcGVDb21wbGV0ZSwgJ3RoZSBwaXBlIHNob3VsZCBub3QgY29tcGxldGUgd2hp
bGUgdGhlIGZpcnN0IHdyaXRlIGlzIHBlbmRpbmcnKTsKLQotICAgIHJzLmNvbnRyb2xsZXIuY2xv
c2UoKTsKLSAgICByZXNvbHZlV3JpdGVQcm9taXNlKCk7Ci0gIH0pLnRoZW4oKCkgPT4gZmx1c2hB
c3luY0V2ZW50cygpKS50aGVuKCgpID0+IHsKLSAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2
ZW50cywgWyd3cml0ZScsICdhJywgJ3dyaXRlJywgJ2InXSwKLSAgICAgICd0aGUgc2Vjb25kIGNo
dW5rIG11c3QgaGF2ZSBiZWVuIHdyaXR0ZW4sIGJ1dCBjbG9zZSBtdXN0IG5vdCBoYXZlIGhhcHBl
bmVkIHlldCcpOwotICAgIGFzc2VydF9mYWxzZShwaXBlQ29tcGxldGUsICd0aGUgcGlwZSBzaG91
bGQgbm90IGNvbXBsZXRlIHdoaWxlIHRoZSBzZWNvbmQgd3JpdGUgaXMgcGVuZGluZycpOwotCi0g
ICAgcmVzb2x2ZVdyaXRlUHJvbWlzZSgpOwotICAgIHJldHVybiBwaXBlUHJvbWlzZTsKLSAgfSku
dGhlbigoKSA9PiB7Ci0gICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsnd3JpdGUn
LCAnYScsICd3cml0ZScsICdiJywgJ2Nsb3NlJ10sCi0gICAgICAnYWxsIGNodW5rcyBtdXN0IGhh
dmUgYmVlbiB3cml0dGVuIGFuZCBjbG9zZSBtdXN0IGhhdmUgaGFwcGVuZWQnKTsKLSAgfSk7Ci0K
LX0sICdDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBzaHV0ZG93biBtdXN0IG5v
dCBvY2N1ciB1bnRpbCB0aGUgZmluYWwgd3JpdGUgY29tcGxldGVzOyBiZWNvbWVzIGNsb3NlZCBh
ZnRlciBmaXJzdCB3cml0ZScpOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotCi0gIGNvbnN0IHJz
ID0gcmVjb3JkaW5nUmVhZGFibGVTdHJlYW0oKTsKLQotICBsZXQgcmVzb2x2ZVdyaXRlQ2FsbGVk
OwotICBjb25zdCB3cml0ZUNhbGxlZFByb21pc2UgPSBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsK
LSAgICByZXNvbHZlV3JpdGVDYWxsZWQgPSByZXNvbHZlOwotICB9KTsKLQotICBsZXQgcmVzb2x2
ZVdyaXRlUHJvbWlzZTsKLSAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSh7Ci0g
ICAgd3JpdGUoKSB7Ci0gICAgICByZXNvbHZlV3JpdGVDYWxsZWQoKTsKLQotICAgICAgcmV0dXJu
IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gewotICAgICAgICByZXNvbHZlV3JpdGVQcm9taXNlID0g
cmVzb2x2ZTsKLSAgICAgIH0pOwotICAgIH0KLSAgfSwgbmV3IENvdW50UXVldWluZ1N0cmF0ZWd5
KHsgaGlnaFdhdGVyTWFyazogMiB9KSk7Ci0KLSAgbGV0IHBpcGVDb21wbGV0ZSA9IGZhbHNlOwot
ICBjb25zdCBwaXBlUHJvbWlzZSA9IHJzLnBpcGVUbyh3cywgeyBwcmV2ZW50Q2xvc2U6IHRydWUg
fSkudGhlbigoKSA9PiB7Ci0gICAgcGlwZUNvbXBsZXRlID0gdHJ1ZTsKLSAgfSk7Ci0KLSAgcnMu
Y29udHJvbGxlci5lbnF1ZXVlKCdhJyk7Ci0gIHJzLmNvbnRyb2xsZXIuZW5xdWV1ZSgnYicpOwot
Ci0gIHJldHVybiB3cml0ZUNhbGxlZFByb21pc2UudGhlbigoKSA9PiBmbHVzaEFzeW5jRXZlbnRz
KCkpLnRoZW4oKCkgPT4gewotICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ3dy
aXRlJywgJ2EnXSwKLSAgICAgICd0aGUgZmlyc3QgY2h1bmsgbXVzdCBoYXZlIGJlZW4gd3JpdHRl
biwgYnV0IGNsb3NlIG11c3Qgbm90IGhhdmUgaGFwcGVuZWQnKTsKLSAgICBhc3NlcnRfZmFsc2Uo
cGlwZUNvbXBsZXRlLCAndGhlIHBpcGUgc2hvdWxkIG5vdCBjb21wbGV0ZSB3aGlsZSB0aGUgZmly
c3Qgd3JpdGUgaXMgcGVuZGluZycpOwotCi0gICAgcnMuY29udHJvbGxlci5jbG9zZSgpOwotICAg
IHJlc29sdmVXcml0ZVByb21pc2UoKTsKLSAgfSkudGhlbigoKSA9PiBmbHVzaEFzeW5jRXZlbnRz
KCkpLnRoZW4oKCkgPT4gewotICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ3dy
aXRlJywgJ2EnLCAnd3JpdGUnLCAnYiddLAotICAgICAgJ3RoZSBzZWNvbmQgY2h1bmsgbXVzdCBo
YXZlIGJlZW4gd3JpdHRlbiwgYnV0IGNsb3NlIG11c3Qgbm90IGhhdmUgaGFwcGVuZWQnKTsKLSAg
ICBhc3NlcnRfZmFsc2UocGlwZUNvbXBsZXRlLCAndGhlIHBpcGUgc2hvdWxkIG5vdCBjb21wbGV0
ZSB3aGlsZSB0aGUgc2Vjb25kIHdyaXRlIGlzIHBlbmRpbmcnKTsKLQotICAgIHJlc29sdmVXcml0
ZVByb21pc2UoKTsKLSAgICByZXR1cm4gcGlwZVByb21pc2U7Ci0gIH0pLnRoZW4oKCkgPT4gZmx1
c2hBc3luY0V2ZW50cygpKS50aGVuKCgpID0+IHsKLSAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdz
LmV2ZW50cywgWyd3cml0ZScsICdhJywgJ3dyaXRlJywgJ2InXSwKLSAgICAgICdhbGwgY2h1bmtz
IG11c3QgaGF2ZSBiZWVuIHdyaXR0ZW4sIGJ1dCBjbG9zZSBtdXN0IG5vdCBoYXZlIGhhcHBlbmVk
Jyk7Ci0gIH0pOwotCi19LCAnQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc2h1
dGRvd24gbXVzdCBub3Qgb2NjdXIgdW50aWwgdGhlIGZpbmFsIHdyaXRlIGNvbXBsZXRlczsgYmVj
b21lcyBjbG9zZWQgYWZ0ZXIgZmlyc3Qgd3JpdGU7IHByZXZlbnRDbG9zZSA9IHRydWUnKTsKLQot
ZG9uZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zdHJlYW1zL3BpcGluZy9jbG9zZS1wcm9wYWdhdGlvbi1mb3J3YXJkLnNlcnZpY2V3
b3JrZXIuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9jbG9zZS1wcm9wYWdhdGlvbi1mb3J3YXJkLnNl
cnZpY2V3b3JrZXIuaHR0cHMtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBjYTM3ZWZhZWNjNDU0MTFmMDRiZWFmYzU4MGRhMmM3NDJkNGViMWI1Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvY2xvc2UtcHJvcGFnYXRpb24t
Zm9yd2FyZC5zZXJ2aWNld29ya2VyLmh0dHBzLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBA
IC0xLDMyICswLDAgQEAKLQotUEFTUyBTZXJ2aWNlIHdvcmtlciB0ZXN0IHNldHVwIAotRkFJTCBD
bG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBzdGFydHMgY2xvc2VkOyBwcmV2ZW50
Q2xvc2Ugb21pdHRlZDsgZnVsZmlsbGVkIGNsb3NlIHByb21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJs
ZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2Fy
ZDogc3RhcnRzIGNsb3NlZDsgcHJldmVudENsb3NlIG9taXR0ZWQ7IHJlamVjdGVkIGNsb3NlIHBy
b21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgQ2xvc2luZyBt
dXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc3RhcnRzIGNsb3NlZDsgcHJldmVudENsb3NlID0g
dW5kZWZpbmVkIChmYWxzeSk7IGZ1bGZpbGxlZCBjbG9zZSBwcm9taXNlIENhbid0IGZpbmQgdmFy
aWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIENsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGZv
cndhcmQ6IHN0YXJ0cyBjbG9zZWQ7IHByZXZlbnRDbG9zZSA9IG51bGwgKGZhbHN5KTsgZnVsZmls
bGVkIGNsb3NlIHByb21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZB
SUwgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc3RhcnRzIGNsb3NlZDsgcHJl
dmVudENsb3NlID0gZmFsc2UgKGZhbHN5KTsgZnVsZmlsbGVkIGNsb3NlIHByb21pc2UgQ2FuJ3Qg
ZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgQ2xvc2luZyBtdXN0IGJlIHByb3Bh
Z2F0ZWQgZm9yd2FyZDogc3RhcnRzIGNsb3NlZDsgcHJldmVudENsb3NlID0gMCAoZmFsc3kpOyBm
dWxmaWxsZWQgY2xvc2UgcHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVh
bQotRkFJTCBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBzdGFydHMgY2xvc2Vk
OyBwcmV2ZW50Q2xvc2UgPSAtMCAoZmFsc3kpOyBmdWxmaWxsZWQgY2xvc2UgcHJvbWlzZSBDYW4n
dCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBDbG9zaW5nIG11c3QgYmUgcHJv
cGFnYXRlZCBmb3J3YXJkOiBzdGFydHMgY2xvc2VkOyBwcmV2ZW50Q2xvc2UgPSBOYU4gKGZhbHN5
KTsgZnVsZmlsbGVkIGNsb3NlIHByb21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVT
dHJlYW0KLUZBSUwgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc3RhcnRzIGNs
b3NlZDsgcHJldmVudENsb3NlID0gIChmYWxzeSk7IGZ1bGZpbGxlZCBjbG9zZSBwcm9taXNlIENh
bid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIENsb3NpbmcgbXVzdCBiZSBw
cm9wYWdhdGVkIGZvcndhcmQ6IHN0YXJ0cyBjbG9zZWQ7IHByZXZlbnRDbG9zZSA9IHRydWUgKHRy
dXRoeSkgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgQ2xvc2luZyBt
dXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc3RhcnRzIGNsb3NlZDsgcHJldmVudENsb3NlID0g
YSAodHJ1dGh5KSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBDbG9z
aW5nIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBzdGFydHMgY2xvc2VkOyBwcmV2ZW50Q2xv
c2UgPSAxICh0cnV0aHkpIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlM
IENsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHN0YXJ0cyBjbG9zZWQ7IHByZXZl
bnRDbG9zZSA9IFN5bWJvbCgpICh0cnV0aHkpIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxl
U3RyZWFtCi1GQUlMIENsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHN0YXJ0cyBj
bG9zZWQ7IHByZXZlbnRDbG9zZSA9IFtvYmplY3QgT2JqZWN0XSAodHJ1dGh5KSBDYW4ndCBmaW5k
IHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRl
ZCBmb3J3YXJkOiBzdGFydHMgY2xvc2VkOyBwcmV2ZW50Q2xvc2UgPSB0cnVlLCBwcmV2ZW50QWJv
cnQgPSB0cnVlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIENsb3Np
bmcgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHN0YXJ0cyBjbG9zZWQ7IHByZXZlbnRDbG9z
ZSA9IHRydWUsIHByZXZlbnRBYm9ydCA9IHRydWUsIHByZXZlbnRDYW5jZWwgPSB0cnVlIENhbid0
IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIENsb3NpbmcgbXVzdCBiZSBwcm9w
YWdhdGVkIGZvcndhcmQ6IGJlY29tZXMgY2xvc2VkIGFzeW5jaHJvbm91c2x5OyBwcmV2ZW50Q2xv
c2Ugb21pdHRlZDsgZnVsZmlsbGVkIGNsb3NlIHByb21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTog
V3JpdGFibGVTdHJlYW0KLUZBSUwgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDog
YmVjb21lcyBjbG9zZWQgYXN5bmNocm9ub3VzbHk7IHByZXZlbnRDbG9zZSBvbWl0dGVkOyByZWpl
Y3RlZCBjbG9zZSBwcm9taXNlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1G
QUlMIENsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IGJlY29tZXMgY2xvc2VkIGFz
eW5jaHJvbm91c2x5OyBwcmV2ZW50Q2xvc2UgPSB0cnVlIENhbid0IGZpbmQgdmFyaWFibGU6IFdy
aXRhYmxlU3RyZWFtCi1GQUlMIENsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IGJl
Y29tZXMgY2xvc2VkIGFzeW5jaHJvbm91c2x5OyBkZXN0IG5ldmVyIGRlc2lyZXMgY2h1bmtzOyBw
cmV2ZW50Q2xvc2Ugb21pdHRlZDsgZnVsZmlsbGVkIGNsb3NlIHByb21pc2UgQ2FuJ3QgZmluZCB2
YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQg
Zm9yd2FyZDogYmVjb21lcyBjbG9zZWQgYXN5bmNocm9ub3VzbHk7IGRlc3QgbmV2ZXIgZGVzaXJl
cyBjaHVua3M7IHByZXZlbnRDbG9zZSBvbWl0dGVkOyByZWplY3RlZCBjbG9zZSBwcm9taXNlIENh
bid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIENsb3NpbmcgbXVzdCBiZSBw
cm9wYWdhdGVkIGZvcndhcmQ6IGJlY29tZXMgY2xvc2VkIGFzeW5jaHJvbm91c2x5OyBkZXN0IG5l
dmVyIGRlc2lyZXMgY2h1bmtzOyBwcmV2ZW50Q2xvc2UgPSB0cnVlIENhbid0IGZpbmQgdmFyaWFi
bGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIENsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndh
cmQ6IGJlY29tZXMgY2xvc2VkIGFmdGVyIG9uZSBjaHVuazsgcHJldmVudENsb3NlIG9taXR0ZWQ7
IGZ1bGZpbGxlZCBjbG9zZSBwcm9taXNlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3Ry
ZWFtCi1GQUlMIENsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IGJlY29tZXMgY2xv
c2VkIGFmdGVyIG9uZSBjaHVuazsgcHJldmVudENsb3NlIG9taXR0ZWQ7IHJlamVjdGVkIGNsb3Nl
IHByb21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgQ2xvc2lu
ZyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogYmVjb21lcyBjbG9zZWQgYWZ0ZXIgb25lIGNo
dW5rOyBwcmV2ZW50Q2xvc2UgPSB0cnVlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3Ry
ZWFtCi1GQUlMIENsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHNodXRkb3duIG11
c3Qgbm90IG9jY3VyIHVudGlsIHRoZSBmaW5hbCB3cml0ZSBjb21wbGV0ZXMgQ2FuJ3QgZmluZCB2
YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQg
Zm9yd2FyZDogc2h1dGRvd24gbXVzdCBub3Qgb2NjdXIgdW50aWwgdGhlIGZpbmFsIHdyaXRlIGNv
bXBsZXRlczsgcHJldmVudENsb3NlID0gdHJ1ZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJs
ZVN0cmVhbQotRkFJTCBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBzaHV0ZG93
biBtdXN0IG5vdCBvY2N1ciB1bnRpbCB0aGUgZmluYWwgd3JpdGUgY29tcGxldGVzOyBiZWNvbWVz
IGNsb3NlZCBhZnRlciBmaXJzdCB3cml0ZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0
cmVhbQotRkFJTCBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBzaHV0ZG93biBt
dXN0IG5vdCBvY2N1ciB1bnRpbCB0aGUgZmluYWwgd3JpdGUgY29tcGxldGVzOyBiZWNvbWVzIGNs
b3NlZCBhZnRlciBmaXJzdCB3cml0ZTsgcHJldmVudENsb3NlID0gdHJ1ZSBDYW4ndCBmaW5kIHZh
cmlhYmxlOiBXcml0YWJsZVN0cmVhbQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Nsb3NlLXByb3BhZ2F0aW9u
LWZvcndhcmQuc2VydmljZXdvcmtlci5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9jbG9zZS1wcm9wYWdhdGlvbi1m
b3J3YXJkLnNlcnZpY2V3b3JrZXIuaHR0cHMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggZWNmZDQ3NDA5NzU3YTFkZTBjNDY1MmIwNzA3MzdjNjJjOWY0MjYxYS4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Nsb3NlLXByb3BhZ2F0aW9u
LWZvcndhcmQuc2VydmljZXdvcmtlci5odHRwcy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTIg
KzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08dGl0bGU+
Y2xvc2UtcHJvcGFnYXRpb24tZm9yd2FyZC5qcyBzZXJ2aWNlIHdvcmtlciB3cmFwcGVyIGZpbGU8
L3RpdGxlPgotCi08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3Jp
cHQ+Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3Jp
cHQ+Ci08c2NyaXB0IHNyYz0iL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9yZXNvdXJj
ZXMvdGVzdC1oZWxwZXJzLnN1Yi5qcyI+PC9zY3JpcHQ+Ci0KLTxzY3JpcHQ+Ci0ndXNlIHN0cmlj
dCc7Ci1zZXJ2aWNlX3dvcmtlcl90ZXN0KCdjbG9zZS1wcm9wYWdhdGlvbi1mb3J3YXJkLmpzJywg
J1NlcnZpY2Ugd29ya2VyIHRlc3Qgc2V0dXAnKTsKLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9j
bG9zZS1wcm9wYWdhdGlvbi1mb3J3YXJkLnNoYXJlZHdvcmtlci1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Ns
b3NlLXByb3BhZ2F0aW9uLWZvcndhcmQuc2hhcmVkd29ya2VyLWV4cGVjdGVkLnR4dApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDlkNWQyNTA5ZDc4NDdlOGNkNmZlNjYwNmFhNjBjZGQz
M2FhNDc0ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5n
L2Nsb3NlLXByb3BhZ2F0aW9uLWZvcndhcmQuc2hhcmVkd29ya2VyLWV4cGVjdGVkLnR4dAorKysg
L2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotQ09OU09MRSBNRVNTQUdFOiBSZWZlcmVuY2VFcnJv
cjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogU2hhcmVkV29ya2VyCi0KLUhhcm5lc3MgRXJyb3IgKEZB
SUwpLCBtZXNzYWdlID0gUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IFNoYXJl
ZFdvcmtlcgotCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvY2xvc2UtcHJvcGFnYXRpb24tZm9yd2FyZC5zaGFy
ZWR3b3JrZXIuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy9waXBpbmcvY2xvc2UtcHJvcGFnYXRpb24tZm9yd2FyZC5zaGFyZWR3b3JrZXIu
aHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWY5ZTk4NTcyYTc4MWQzYzE3NmY0
Yzk5NzU1OTNkMDExNGEzY2Q5ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMvcGlwaW5nL2Nsb3NlLXByb3BhZ2F0aW9uLWZvcndhcmQuc2hhcmVkd29ya2VyLmh0bWwK
KysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxtZXRhIGNo
YXJzZXQ9InV0Zi04Ij4KLTx0aXRsZT5jbG9zZS1wcm9wYWdhdGlvbi1mb3J3YXJkLmpzIHNoYXJl
ZCB3b3JrZXIgd3JhcHBlciBmaWxlPC90aXRsZT4KLQotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMv
dGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhh
cm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotCi08c2NyaXB0PgotJ3VzZSBzdHJpY3QnOwotZmV0
Y2hfdGVzdHNfZnJvbV93b3JrZXIobmV3IFNoYXJlZFdvcmtlcignY2xvc2UtcHJvcGFnYXRpb24t
Zm9yd2FyZC5qcycpKTsKLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9lcnJvci1wcm9wYWdhdGlv
bi1iYWNrd2FyZC5hbnktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9lcnJvci1wcm9wYWdhdGlvbi1iYWNrd2Fy
ZC5hbnktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI0NjcyZGNiYmQ5M2E2ODM2NmM2OTU2ZGZm
YzgxZWZkOTNhZmZjMWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Vycm9yLXByb3BhZ2F0aW9uLWJh
Y2t3YXJkLmFueS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0MSBAQAorQ09OU09MRSBNRVNTQUdF
OiBVbmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rpb246IGVycm9yMjogZXJyb3IyIQorQ09OU09MRSBN
RVNTQUdFOiBVbmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rpb246IGVycm9yMTogZXJyb3IxIQorCitI
YXJuZXNzIEVycm9yIChGQUlMKSwgbWVzc2FnZSA9IFVuaGFuZGxlZCByZWplY3Rpb246IGVycm9y
MSEKKworUEFTUyBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBzdGFydHMgZXJy
b3JlZDsgcHJldmVudENhbmNlbCBvbWl0dGVkOyBmdWxmaWxsZWQgY2FuY2VsIHByb21pc2UgCitG
QUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGJlY29tZXMgZXJyb3JlZCBi
ZWZvcmUgcGlwaW5nIGR1ZSB0byB3cml0ZTsgcHJldmVudENhbmNlbCBvbWl0dGVkOyBmdWxmaWxs
ZWQgY2FuY2VsIHByb21pc2Ugd3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dz
LmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicgaXMgdW5kZWZpbmVkKQorRkFJTCBFcnJvcnMg
bXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVycm9yZWQgYmVmb3JlIHBpcGlu
ZyBkdWUgdG8gd3JpdGU7IHByZXZlbnRDYW5jZWwgb21pdHRlZDsgcmVqZWN0ZWQgY2FuY2VsIHBy
b21pc2Ugd3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigp
JywgJ3dzLmdldFdyaXRlcicgaXMgdW5kZWZpbmVkKQorRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9w
YWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVycm9yZWQgYmVmb3JlIHBpcGluZyBkdWUgdG8gd3Jp
dGU7IHByZXZlbnRDYW5jZWwgPSB1bmRlZmluZWQgKGZhbHN5KTsgZnVsZmlsbGVkIGNhbmNlbCBw
cm9taXNlIHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0ZXIo
KScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkKK0ZBSUwgRXJyb3JzIG11c3QgYmUgcHJv
cGFnYXRlZCBiYWNrd2FyZDogYmVjb21lcyBlcnJvcmVkIGJlZm9yZSBwaXBpbmcgZHVlIHRvIHdy
aXRlOyBwcmV2ZW50Q2FuY2VsID0gbnVsbCAoZmFsc3kpOyBmdWxmaWxsZWQgY2FuY2VsIHByb21p
c2Ugd3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywg
J3dzLmdldFdyaXRlcicgaXMgdW5kZWZpbmVkKQorRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdh
dGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVycm9yZWQgYmVmb3JlIHBpcGluZyBkdWUgdG8gd3JpdGU7
IHByZXZlbnRDYW5jZWwgPSBmYWxzZSAoZmFsc3kpOyBmdWxmaWxsZWQgY2FuY2VsIHByb21pc2Ug
d3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywgJ3dz
LmdldFdyaXRlcicgaXMgdW5kZWZpbmVkKQorRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVk
IGJhY2t3YXJkOiBiZWNvbWVzIGVycm9yZWQgYmVmb3JlIHBpcGluZyBkdWUgdG8gd3JpdGU7IHBy
ZXZlbnRDYW5jZWwgPSAwIChmYWxzeSk7IGZ1bGZpbGxlZCBjYW5jZWwgcHJvbWlzZSB3cy5nZXRX
cml0ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3JpdGVyKCknLCAnd3MuZ2V0V3Jp
dGVyJyBpcyB1bmRlZmluZWQpCitGQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dh
cmQ6IGJlY29tZXMgZXJyb3JlZCBiZWZvcmUgcGlwaW5nIGR1ZSB0byB3cml0ZTsgcHJldmVudENh
bmNlbCA9IC0wIChmYWxzeSk7IGZ1bGZpbGxlZCBjYW5jZWwgcHJvbWlzZSB3cy5nZXRXcml0ZXIg
aXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3JpdGVyKCknLCAnd3MuZ2V0V3JpdGVyJyBp
cyB1bmRlZmluZWQpCitGQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGJl
Y29tZXMgZXJyb3JlZCBiZWZvcmUgcGlwaW5nIGR1ZSB0byB3cml0ZTsgcHJldmVudENhbmNlbCA9
IE5hTiAoZmFsc3kpOyBmdWxmaWxsZWQgY2FuY2VsIHByb21pc2Ugd3MuZ2V0V3JpdGVyIGlzIG5v
dCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicgaXMgdW5k
ZWZpbmVkKQorRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVz
IGVycm9yZWQgYmVmb3JlIHBpcGluZyBkdWUgdG8gd3JpdGU7IHByZXZlbnRDYW5jZWwgPSAgKGZh
bHN5KTsgZnVsZmlsbGVkIGNhbmNlbCBwcm9taXNlIHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5j
dGlvbi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkK
K0ZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogYmVjb21lcyBlcnJvcmVk
IGJlZm9yZSBwaXBpbmcgZHVlIHRvIHdyaXRlOyBwcmV2ZW50Q2FuY2VsID0gdHJ1ZSAodHJ1dGh5
KSB3cy5nZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3JpdGVyKCknLCAn
d3MuZ2V0V3JpdGVyJyBpcyB1bmRlZmluZWQpCitGQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0
ZWQgYmFja3dhcmQ6IGJlY29tZXMgZXJyb3JlZCBiZWZvcmUgcGlwaW5nIGR1ZSB0byB3cml0ZTsg
cHJldmVudENhbmNlbCA9IGEgKHRydXRoeSkgd3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9u
LiAoSW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicgaXMgdW5kZWZpbmVkKQorRkFJ
TCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVycm9yZWQgYmVm
b3JlIHBpcGluZyBkdWUgdG8gd3JpdGU7IHByZXZlbnRDYW5jZWwgPSAxICh0cnV0aHkpIHdzLmdl
dFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRX
cml0ZXInIGlzIHVuZGVmaW5lZCkKK0ZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNr
d2FyZDogYmVjb21lcyBlcnJvcmVkIGJlZm9yZSBwaXBpbmcgZHVlIHRvIHdyaXRlOyBwcmV2ZW50
Q2FuY2VsID0gU3ltYm9sKCkgKHRydXRoeSkgd3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9u
LiAoSW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicgaXMgdW5kZWZpbmVkKQorRkFJ
TCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVycm9yZWQgYmVm
b3JlIHBpcGluZyBkdWUgdG8gd3JpdGU7IHByZXZlbnRDYW5jZWwgPSBbb2JqZWN0IE9iamVjdF0g
KHRydXRoeSkgd3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRl
cigpJywgJ3dzLmdldFdyaXRlcicgaXMgdW5kZWZpbmVkKQorRkFJTCBFcnJvcnMgbXVzdCBiZSBw
cm9wYWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVycm9yZWQgYmVmb3JlIHBpcGluZyBkdWUgdG8g
d3JpdGUsIHByZXZlbnRDYW5jZWwgPSB0cnVlOyBwcmV2ZW50QWJvcnQgPSB0cnVlIHdzLmdldFdy
aXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0
ZXInIGlzIHVuZGVmaW5lZCkKK0ZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2Fy
ZDogYmVjb21lcyBlcnJvcmVkIGJlZm9yZSBwaXBpbmcgZHVlIHRvIHdyaXRlOyBwcmV2ZW50Q2Fu
Y2VsID0gdHJ1ZSwgcHJldmVudEFib3J0ID0gdHJ1ZSwgcHJldmVudENsb3NlID0gdHJ1ZSB3cy5n
ZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3JpdGVyKCknLCAnd3MuZ2V0
V3JpdGVyJyBpcyB1bmRlZmluZWQpCitQQVNTIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFj
a3dhcmQ6IGJlY29tZXMgZXJyb3JlZCBkdXJpbmcgcGlwaW5nIGR1ZSB0byB3cml0ZTsgcHJldmVu
dENhbmNlbCBvbWl0dGVkOyBmdWxmaWxsZWQgY2FuY2VsIHByb21pc2UgCitGQUlMIEVycm9ycyBt
dXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGJlY29tZXMgZXJyb3JlZCBkdXJpbmcgcGlwaW5n
IGR1ZSB0byB3cml0ZTsgcHJldmVudENhbmNlbCBvbWl0dGVkOyByZWplY3RlZCBjYW5jZWwgcHJv
bWlzZSBwcm9taXNlX3JlamVjdHNfZXhhY3RseTogcGlwZVRvIG11c3QgcmVqZWN0IHdpdGggdGhl
IGNhbmNlbCBlcnJvciBmdW5jdGlvbiAiZnVuY3Rpb24gKCkgeyB0aHJvdyBlIH0iIHRocmV3IG9i
amVjdCAiZXJyb3IxOiBlcnJvcjEhIiBidXQgd2UgZXhwZWN0ZWQgaXQgdG8gdGhyb3cgb2JqZWN0
ICJlcnJvcjI6IGVycm9yMiEiCitUSU1FT1VUIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFj
a3dhcmQ6IGJlY29tZXMgZXJyb3JlZCBkdXJpbmcgcGlwaW5nIGR1ZSB0byB3cml0ZTsgcHJldmVu
dENhbmNlbCA9IHRydWUgVGVzdCB0aW1lZCBvdXQKK05PVFJVTiBFcnJvcnMgbXVzdCBiZSBwcm9w
YWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVycm9yZWQgZHVyaW5nIHBpcGluZyBkdWUgdG8gd3Jp
dGUsIGJ1dCBhc3luYzsgcHJldmVudENhbmNlbCA9IGZhbHNlOyBmdWxmaWxsZWQgY2FuY2VsIHBy
b21pc2UgCitOT1RSVU4gRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogYmVjb21l
cyBlcnJvcmVkIGR1cmluZyBwaXBpbmcgZHVlIHRvIHdyaXRlLCBidXQgYXN5bmM7IHByZXZlbnRD
YW5jZWwgPSBmYWxzZTsgcmVqZWN0ZWQgY2FuY2VsIHByb21pc2UgCitOT1RSVU4gRXJyb3JzIG11
c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogYmVjb21lcyBlcnJvcmVkIGR1cmluZyBwaXBpbmcg
ZHVlIHRvIHdyaXRlLCBidXQgYXN5bmM7IHByZXZlbnRDYW5jZWwgPSB0cnVlIAorTk9UUlVOIEVy
cm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGJlY29tZXMgZXJyb3JlZCBhZnRlciBw
aXBpbmc7IHByZXZlbnRDYW5jZWwgb21pdHRlZDsgZnVsZmlsbGVkIGNhbmNlbCBwcm9taXNlIAor
Tk9UUlVOIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGJlY29tZXMgZXJyb3Jl
ZCBhZnRlciBwaXBpbmc7IHByZXZlbnRDYW5jZWwgb21pdHRlZDsgcmVqZWN0ZWQgY2FuY2VsIHBy
b21pc2UgCitOT1RSVU4gRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogYmVjb21l
cyBlcnJvcmVkIGFmdGVyIHBpcGluZzsgcHJldmVudENhbmNlbCA9IHRydWUgCitOT1RSVU4gRXJy
b3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogYmVjb21lcyBlcnJvcmVkIGFmdGVyIHBp
cGluZyBkdWUgdG8gbGFzdCB3cml0ZTsgc291cmNlIGlzIGNsb3NlZDsgcHJldmVudENhbmNlbCBv
bWl0dGVkIChidXQgY2FuY2VsIGlzIG5ldmVyIGNhbGxlZCkgCitOT1RSVU4gRXJyb3JzIG11c3Qg
YmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogYmVjb21lcyBlcnJvcmVkIGFmdGVyIHBpcGluZyBkdWUg
dG8gbGFzdCB3cml0ZTsgc291cmNlIGlzIGNsb3NlZDsgcHJldmVudENhbmNlbCA9IHRydWUgCitO
T1RSVU4gRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogYmVjb21lcyBlcnJvcmVk
IGFmdGVyIHBpcGluZzsgZGVzdCBuZXZlciBkZXNpcmVzIGNodW5rczsgcHJldmVudENhbmNlbCA9
IGZhbHNlOyBmdWxmaWxsZWQgY2FuY2VsIHByb21pc2UgCitOT1RSVU4gRXJyb3JzIG11c3QgYmUg
cHJvcGFnYXRlZCBiYWNrd2FyZDogYmVjb21lcyBlcnJvcmVkIGFmdGVyIHBpcGluZzsgZGVzdCBu
ZXZlciBkZXNpcmVzIGNodW5rczsgcHJldmVudENhbmNlbCA9IGZhbHNlOyByZWplY3RlZCBjYW5j
ZWwgcHJvbWlzZSAKK05PVFJVTiBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBi
ZWNvbWVzIGVycm9yZWQgYWZ0ZXIgcGlwaW5nOyBkZXN0IG5ldmVyIGRlc2lyZXMgY2h1bmtzOyBw
cmV2ZW50Q2FuY2VsID0gdHJ1ZSAKK05PVFJVTiBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJh
Y2t3YXJkOiBiZWNvbWVzIGVycm9yZWQgYmVmb3JlIHBpcGluZyB2aWEgYWJvcnQ7IHByZXZlbnRD
YW5jZWwgb21pdHRlZDsgZnVsZmlsbGVkIGNhbmNlbCBwcm9taXNlIAorTk9UUlVOIEVycm9ycyBt
dXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGJlY29tZXMgZXJyb3JlZCBiZWZvcmUgcGlwaW5n
IHZpYSBhYm9ydDsgcHJldmVudENhbmNlbCBvbWl0dGVkOyByZWplY3RlZCBjYW5jZWwgcHJvbWlz
ZSAKK05PVFJVTiBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVy
cm9yZWQgYmVmb3JlIHBpcGluZyB2aWEgYWJvcnQ7IHByZXZlbnRDYW5jZWwgPSB0cnVlIAorTk9U
UlVOIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGVycm9yaW5nIHZpYSB0aGUg
Y29udHJvbGxlciBlcnJvcnMgb25jZSBwZW5kaW5nIHdyaXRlIGNvbXBsZXRlcyAKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
L3BpcGluZy9lcnJvci1wcm9wYWdhdGlvbi1iYWNrd2FyZC5hbnkuaHRtbCBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvZXJyb3ItcHJv
cGFnYXRpb24tYmFja3dhcmQuYW55Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjM4MjkxMzUyOGU2OTNiM2E1
ZDU2YzY2MGE0NTA2MDk4MGI1NDhjMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvZXJyb3ItcHJvcGFn
YXRpb24tYmFja3dhcmQuYW55Lmh0bWwKQEAgLTAsMCArMSBAQAorPCEtLSBUaGlzIGZpbGUgaXMg
cmVxdWlyZWQgZm9yIFdlYktpdCB0ZXN0IGluZnJhc3RydWN0dXJlIHRvIHJ1biB0aGUgdGVtcGxh
dGVkIHRlc3QgLS0+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9l
cnJvci1wcm9wYWdhdGlvbi1iYWNrd2FyZC5hbnkuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Vycm9yLXByb3BhZ2F0aW9uLWJh
Y2t3YXJkLmFueS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZGMyMDMwNjZlM2Q3ZTY4NDFhZjI3MWNhYjIwOTlh
ZDM1MWQ4NTU5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9lcnJvci1wcm9wYWdhdGlvbi1iYWNrd2Fy
ZC5hbnkuanMKQEAgLTAsMCArMSw2MzAgQEAKKy8vIE1FVEE6IGdsb2JhbD13aW5kb3csd29ya2Vy
LGpzc2hlbGwKKy8vIE1FVEE6IHNjcmlwdD0uLi9yZXNvdXJjZXMvdGVzdC11dGlscy5qcworLy8g
TUVUQTogc2NyaXB0PS4uL3Jlc291cmNlcy9yZWNvcmRpbmctc3RyZWFtcy5qcworJ3VzZSBzdHJp
Y3QnOworCitjb25zdCBlcnJvcjEgPSBuZXcgRXJyb3IoJ2Vycm9yMSEnKTsKK2Vycm9yMS5uYW1l
ID0gJ2Vycm9yMSc7CisKK2NvbnN0IGVycm9yMiA9IG5ldyBFcnJvcignZXJyb3IyIScpOworZXJy
b3IyLm5hbWUgPSAnZXJyb3IyJzsKKworcHJvbWlzZV90ZXN0KHQgPT4geworCisgIGNvbnN0IHJz
ID0gcmVjb3JkaW5nUmVhZGFibGVTdHJlYW0oKTsKKworICBjb25zdCB3cyA9IHJlY29yZGluZ1dy
aXRhYmxlU3RyZWFtKHsKKyAgICBzdGFydCgpIHsKKyAgICAgIHJldHVybiBQcm9taXNlLnJlamVj
dChlcnJvcjEpOworICAgIH0KKyAgfSk7CisKKyAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19leGFj
dGx5KHQsIGVycm9yMSwgcnMucGlwZVRvKHdzKSwgJ3BpcGVUbyBtdXN0IHJlamVjdCB3aXRoIHRo
ZSBzYW1lIGVycm9yJykKKyAgICAudGhlbigoKSA9PiB7CisgICAgICBhc3NlcnRfYXJyYXlfZXF1
YWxzKHJzLmV2ZW50c1dpdGhvdXRQdWxscywgWydjYW5jZWwnLCBlcnJvcjFdKTsKKyAgICAgIGFz
c2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbXSk7CisgICAgfSk7CisKK30sICdFcnJvcnMg
bXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBzdGFydHMgZXJyb3JlZDsgcHJldmVudENhbmNl
bCBvbWl0dGVkOyBmdWxmaWxsZWQgY2FuY2VsIHByb21pc2UnKTsKKworcHJvbWlzZV90ZXN0KHQg
PT4geworCisgIGNvbnN0IHJzID0gcmVjb3JkaW5nUmVhZGFibGVTdHJlYW0oKTsKKworICBjb25z
dCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKHsKKyAgICB3cml0ZSgpIHsKKyAgICAgIHJl
dHVybiBQcm9taXNlLnJlamVjdChlcnJvcjEpOworICAgIH0KKyAgfSk7CisKKyAgY29uc3Qgd3Jp
dGVyID0gd3MuZ2V0V3JpdGVyKCk7CisKKyAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19leGFjdGx5
KHQsIGVycm9yMSwgd3JpdGVyLndyaXRlKCdIZWxsbycpLCAnd3JpdGVyLndyaXRlKCkgbXVzdCBy
ZWplY3Qgd2l0aCB0aGUgd3JpdGUgZXJyb3InKQorICAgIC50aGVuKCgpID0+IHByb21pc2VfcmVq
ZWN0c19leGFjdGx5KHQsIGVycm9yMSwgd3JpdGVyLmNsb3NlZCwgJ3dyaXRlci5jbG9zZWQgbXVz
dCByZWplY3Qgd2l0aCB0aGUgd3JpdGUgZXJyb3InKSkKKyAgICAudGhlbigoKSA9PiB7CisgICAg
ICB3cml0ZXIucmVsZWFzZUxvY2soKTsKKworICAgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19l
eGFjdGx5KHQsIGVycm9yMSwgcnMucGlwZVRvKHdzKSwgJ3BpcGVUbyBtdXN0IHJlamVjdCB3aXRo
IHRoZSB3cml0ZSBlcnJvcicpCisgICAgICAgIC50aGVuKCgpID0+IHsKKyAgICAgICAgICBhc3Nl
cnRfYXJyYXlfZXF1YWxzKHJzLmV2ZW50c1dpdGhvdXRQdWxscywgWydjYW5jZWwnLCBlcnJvcjFd
KTsKKyAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWyd3cml0ZScsICdI
ZWxsbyddKTsKKyAgICAgICAgfSk7CisgICAgfSk7CisKK30sICdFcnJvcnMgbXVzdCBiZSBwcm9w
YWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVycm9yZWQgYmVmb3JlIHBpcGluZyBkdWUgdG8gd3Jp
dGU7IHByZXZlbnRDYW5jZWwgb21pdHRlZDsgJyArCisgICAnZnVsZmlsbGVkIGNhbmNlbCBwcm9t
aXNlJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKworICBjb25zdCBycyA9IHJlY29yZGluZ1Jl
YWRhYmxlU3RyZWFtKHsKKyAgICBjYW5jZWwoKSB7CisgICAgICB0aHJvdyBlcnJvcjI7CisgICAg
fQorICB9KTsKKworICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKHsKKyAgICB3
cml0ZSgpIHsKKyAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcjEpOworICAgIH0KKyAg
fSk7CisKKyAgY29uc3Qgd3JpdGVyID0gd3MuZ2V0V3JpdGVyKCk7CisKKyAgcmV0dXJuIHByb21p
c2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMSwgd3JpdGVyLndyaXRlKCdIZWxsbycpLCAnd3Jp
dGVyLndyaXRlKCkgbXVzdCByZWplY3Qgd2l0aCB0aGUgd3JpdGUgZXJyb3InKQorICAgIC50aGVu
KCgpID0+IHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMSwgd3JpdGVyLmNsb3NlZCwg
J3dyaXRlci5jbG9zZWQgbXVzdCByZWplY3Qgd2l0aCB0aGUgd3JpdGUgZXJyb3InKSkKKyAgICAu
dGhlbigoKSA9PiB7CisgICAgICB3cml0ZXIucmVsZWFzZUxvY2soKTsKKworICAgICAgcmV0dXJu
IHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMiwgcnMucGlwZVRvKHdzKSwgJ3BpcGVU
byBtdXN0IHJlamVjdCB3aXRoIHRoZSBjYW5jZWwgZXJyb3InKQorICAgICAgICAudGhlbigoKSA9
PiB7CisgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhycy5ldmVudHNXaXRob3V0UHVsbHMs
IFsnY2FuY2VsJywgZXJyb3IxXSk7CisgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5l
dmVudHMsIFsnd3JpdGUnLCAnSGVsbG8nXSk7CisgICAgICAgIH0pOworICAgIH0pOworCit9LCAn
RXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogYmVjb21lcyBlcnJvcmVkIGJlZm9y
ZSBwaXBpbmcgZHVlIHRvIHdyaXRlOyBwcmV2ZW50Q2FuY2VsIG9taXR0ZWQ7IHJlamVjdGVkICcg
KworICAgJ2NhbmNlbCBwcm9taXNlJyk7CisKK2ZvciAoY29uc3QgZmFsc3kgb2YgW3VuZGVmaW5l
ZCwgbnVsbCwgZmFsc2UsICswLCAtMCwgTmFOLCAnJ10pIHsKKyAgY29uc3Qgc3RyaW5nVmVyc2lv
biA9IE9iamVjdC5pcyhmYWxzeSwgLTApID8gJy0wJyA6IFN0cmluZyhmYWxzeSk7CisKKyAgcHJv
bWlzZV90ZXN0KHQgPT4geworCisgICAgY29uc3QgcnMgPSByZWNvcmRpbmdSZWFkYWJsZVN0cmVh
bSgpOworCisgICAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSh7CisgICAgICB3
cml0ZSgpIHsKKyAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yMSk7CisgICAgICB9
CisgICAgfSk7CisKKyAgICBjb25zdCB3cml0ZXIgPSB3cy5nZXRXcml0ZXIoKTsKKworICAgIHJl
dHVybiBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIHdyaXRlci53cml0ZSgnSGVs
bG8nKSwgJ3dyaXRlci53cml0ZSgpIG11c3QgcmVqZWN0IHdpdGggdGhlIHdyaXRlIGVycm9yJykK
KyAgICAgIC50aGVuKCgpID0+IHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMSwgd3Jp
dGVyLmNsb3NlZCwgJ3dyaXRlci5jbG9zZWQgbXVzdCByZWplY3Qgd2l0aCB0aGUgd3JpdGUgZXJy
b3InKSkKKyAgICAgIC50aGVuKCgpID0+IHsKKyAgICAgICAgd3JpdGVyLnJlbGVhc2VMb2NrKCk7
CisKKyAgICAgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMSwgcnMu
cGlwZVRvKHdzLCB7IHByZXZlbnRDYW5jZWw6IGZhbHN5IH0pLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICdwaXBlVG8gbXVzdCByZWplY3Qgd2l0aCB0aGUgd3JpdGUgZXJyb3InKQor
ICAgICAgICAgIC50aGVuKCgpID0+IHsKKyAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMo
cnMuZXZlbnRzV2l0aG91dFB1bGxzLCBbJ2NhbmNlbCcsIGVycm9yMV0pOworICAgICAgICAgICAg
YXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsnd3JpdGUnLCAnSGVsbG8nXSk7CisgICAg
ICAgICAgfSk7CisgICAgICB9KTsKKworICB9LCBgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBi
YWNrd2FyZDogYmVjb21lcyBlcnJvcmVkIGJlZm9yZSBwaXBpbmcgZHVlIHRvIHdyaXRlOyBwcmV2
ZW50Q2FuY2VsID0gYCArCisgICAgIGAke3N0cmluZ1ZlcnNpb259IChmYWxzeSk7IGZ1bGZpbGxl
ZCBjYW5jZWwgcHJvbWlzZWApOworfQorCitmb3IgKGNvbnN0IHRydXRoeSBvZiBbdHJ1ZSwgJ2En
LCAxLCBTeW1ib2woKSwgeyB9XSkgeworICBwcm9taXNlX3Rlc3QodCA9PiB7CisKKyAgICBjb25z
dCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKCk7CisKKyAgICBjb25zdCB3cyA9IHJlY29y
ZGluZ1dyaXRhYmxlU3RyZWFtKHsKKyAgICAgIHdyaXRlKCkgeworICAgICAgICByZXR1cm4gUHJv
bWlzZS5yZWplY3QoZXJyb3IxKTsKKyAgICAgIH0KKyAgICB9KTsKKworICAgIGNvbnN0IHdyaXRl
ciA9IHdzLmdldFdyaXRlcigpOworCisgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19leGFjdGx5
KHQsIGVycm9yMSwgd3JpdGVyLndyaXRlKCdIZWxsbycpLCAnd3JpdGVyLndyaXRlKCkgbXVzdCBy
ZWplY3Qgd2l0aCB0aGUgd3JpdGUgZXJyb3InKQorICAgICAgLnRoZW4oKCkgPT4gcHJvbWlzZV9y
ZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCB3cml0ZXIuY2xvc2VkLCAnd3JpdGVyLmNsb3NlZCBt
dXN0IHJlamVjdCB3aXRoIHRoZSB3cml0ZSBlcnJvcicpKQorICAgICAgLnRoZW4oKCkgPT4gewor
ICAgICAgICB3cml0ZXIucmVsZWFzZUxvY2soKTsKKworICAgICAgICByZXR1cm4gcHJvbWlzZV9y
ZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCBycy5waXBlVG8od3MsIHsgcHJldmVudENhbmNlbDog
dHJ1dGh5IH0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwaXBlVG8gbXVzdCBy
ZWplY3Qgd2l0aCB0aGUgd3JpdGUgZXJyb3InKQorICAgICAgICAgIC50aGVuKCgpID0+IHsKKyAg
ICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMocnMuZXZlbnRzV2l0aG91dFB1bGxzLCBbXSk7
CisgICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWyd3cml0ZScsICdI
ZWxsbyddKTsKKyAgICAgICAgICB9KTsKKyAgICAgIH0pOworCisgIH0sIGBFcnJvcnMgbXVzdCBi
ZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVycm9yZWQgYmVmb3JlIHBpcGluZyBkdWUg
dG8gd3JpdGU7IHByZXZlbnRDYW5jZWwgPSBgICsKKyAgICAgYCR7U3RyaW5nKHRydXRoeSl9ICh0
cnV0aHkpYCk7Cit9CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKworICBjb25zdCBycyA9IHJlY29y
ZGluZ1JlYWRhYmxlU3RyZWFtKCk7CisKKyAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0
cmVhbSh7CisgICAgd3JpdGUoKSB7CisgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyb3Ix
KTsKKyAgICB9CisgIH0pOworCisgIGNvbnN0IHdyaXRlciA9IHdzLmdldFdyaXRlcigpOworCisg
IHJldHVybiBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIHdyaXRlci53cml0ZSgn
SGVsbG8nKSwgJ3dyaXRlci53cml0ZSgpIG11c3QgcmVqZWN0IHdpdGggdGhlIHdyaXRlIGVycm9y
JykKKyAgICAudGhlbigoKSA9PiBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIHdy
aXRlci5jbG9zZWQsICd3cml0ZXIuY2xvc2VkIG11c3QgcmVqZWN0IHdpdGggdGhlIHdyaXRlIGVy
cm9yJykpCisgICAgLnRoZW4oKCkgPT4geworICAgICAgd3JpdGVyLnJlbGVhc2VMb2NrKCk7CisK
KyAgICAgIHJldHVybiBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIHJzLnBpcGVU
byh3cywgeyBwcmV2ZW50Q2FuY2VsOiB0cnVlLCBwcmV2ZW50QWJvcnQ6IHRydWUgfSksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICdwaXBlVG8gbXVzdCByZWplY3Qgd2l0aCB0aGUgd3Jp
dGUgZXJyb3InKQorICAgICAgICAudGhlbigoKSA9PiB7CisgICAgICAgICAgYXNzZXJ0X2FycmF5
X2VxdWFscyhycy5ldmVudHNXaXRob3V0UHVsbHMsIFtdKTsKKyAgICAgICAgICBhc3NlcnRfYXJy
YXlfZXF1YWxzKHdzLmV2ZW50cywgWyd3cml0ZScsICdIZWxsbyddKTsKKyAgICAgICAgfSk7Cisg
ICAgfSk7CisKK30sICdFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVz
IGVycm9yZWQgYmVmb3JlIHBpcGluZyBkdWUgdG8gd3JpdGUsIHByZXZlbnRDYW5jZWwgPSB0cnVl
OyAnICsKKyAgICdwcmV2ZW50QWJvcnQgPSB0cnVlJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsK
KworICBjb25zdCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKCk7CisKKyAgY29uc3Qgd3Mg
PSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSh7CisgICAgd3JpdGUoKSB7CisgICAgICByZXR1cm4g
UHJvbWlzZS5yZWplY3QoZXJyb3IxKTsKKyAgICB9CisgIH0pOworCisgIGNvbnN0IHdyaXRlciA9
IHdzLmdldFdyaXRlcigpOworCisgIHJldHVybiBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBl
cnJvcjEsIHdyaXRlci53cml0ZSgnSGVsbG8nKSwgJ3dyaXRlci53cml0ZSgpIG11c3QgcmVqZWN0
IHdpdGggdGhlIHdyaXRlIGVycm9yJykKKyAgICAudGhlbigoKSA9PiBwcm9taXNlX3JlamVjdHNf
ZXhhY3RseSh0LCBlcnJvcjEsIHdyaXRlci5jbG9zZWQsICd3cml0ZXIuY2xvc2VkIG11c3QgcmVq
ZWN0IHdpdGggdGhlIHdyaXRlIGVycm9yJykpCisgICAgLnRoZW4oKCkgPT4geworICAgICAgd3Jp
dGVyLnJlbGVhc2VMb2NrKCk7CisKKyAgICAgIHJldHVybiBwcm9taXNlX3JlamVjdHNfZXhhY3Rs
eSh0LCBlcnJvcjEsIHJzLnBpcGVUbyh3cywgeyBwcmV2ZW50Q2FuY2VsOiB0cnVlLCBwcmV2ZW50
QWJvcnQ6IHRydWUsIHByZXZlbnRDbG9zZTogdHJ1ZSB9KSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ3BpcGVUbyBtdXN0IHJlamVjdCB3aXRoIHRoZSB3cml0ZSBlcnJvcicpCisgICAg
ICAgIC50aGVuKCgpID0+IHsKKyAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJzLmV2ZW50
c1dpdGhvdXRQdWxscywgW10pOworICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZl
bnRzLCBbJ3dyaXRlJywgJ0hlbGxvJ10pOworICAgICAgICB9KTsKKyAgICB9KTsKKworfSwgJ0Vy
cm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGJlY29tZXMgZXJyb3JlZCBiZWZvcmUg
cGlwaW5nIGR1ZSB0byB3cml0ZTsgcHJldmVudENhbmNlbCA9IHRydWUsICcgKworICAgJ3ByZXZl
bnRBYm9ydCA9IHRydWUsIHByZXZlbnRDbG9zZSA9IHRydWUnKTsKKworcHJvbWlzZV90ZXN0KHQg
PT4geworCisgIGNvbnN0IHJzID0gcmVjb3JkaW5nUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0
KGNvbnRyb2xsZXIpIHsKKyAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnSGVsbG8nKTsKKyAgICB9
CisgIH0pOworCisgIGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0oeworICAgIHdy
aXRlKCkgeworICAgICAgdGhyb3cgZXJyb3IxOworICAgIH0KKyAgfSk7CisKKyAgcmV0dXJuIHBy
b21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMSwgcnMucGlwZVRvKHdzKSwgJ3BpcGVUbyBt
dXN0IHJlamVjdCB3aXRoIHRoZSBzYW1lIGVycm9yJykudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0
X2FycmF5X2VxdWFscyhycy5ldmVudHNXaXRob3V0UHVsbHMsIFsnY2FuY2VsJywgZXJyb3IxXSk7
CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsnd3JpdGUnLCAnSGVsbG8nXSk7
CisgIH0pOworCit9LCAnRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogYmVjb21l
cyBlcnJvcmVkIGR1cmluZyBwaXBpbmcgZHVlIHRvIHdyaXRlOyBwcmV2ZW50Q2FuY2VsIG9taXR0
ZWQ7IGZ1bGZpbGxlZCAnICsKKyAgICdjYW5jZWwgcHJvbWlzZScpOworCitwcm9taXNlX3Rlc3Qo
dCA9PiB7CisKKyAgY29uc3QgcnMgPSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSh7CisgICAgc3Rh
cnQoY29udHJvbGxlcikgeworICAgICAgY29udHJvbGxlci5lbnF1ZXVlKCdIZWxsbycpOworICAg
IH0sCisgICAgY2FuY2VsKCkgeworICAgICAgdGhyb3cgZXJyb3IyOworICAgIH0KKyAgfSk7CisK
KyAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSh7CisgICAgd3JpdGUoKSB7Cisg
ICAgICB0aHJvdyBlcnJvcjE7CisgICAgfQorICB9KTsKKworICByZXR1cm4gcHJvbWlzZV9yZWpl
Y3RzX2V4YWN0bHkodCwgZXJyb3IyLCBycy5waXBlVG8od3MpLCAncGlwZVRvIG11c3QgcmVqZWN0
IHdpdGggdGhlIGNhbmNlbCBlcnJvcicpLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9hcnJheV9l
cXVhbHMocnMuZXZlbnRzV2l0aG91dFB1bGxzLCBbJ2NhbmNlbCcsIGVycm9yMV0pOworICAgIGFz
c2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ3dyaXRlJywgJ0hlbGxvJ10pOworICB9KTsK
KworfSwgJ0Vycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGJlY29tZXMgZXJyb3Jl
ZCBkdXJpbmcgcGlwaW5nIGR1ZSB0byB3cml0ZTsgcHJldmVudENhbmNlbCBvbWl0dGVkOyByZWpl
Y3RlZCAnICsKKyAgICdjYW5jZWwgcHJvbWlzZScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisK
KyAgY29uc3QgcnMgPSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoY29udHJv
bGxlcikgeworICAgICAgY29udHJvbGxlci5lbnF1ZXVlKCdIZWxsbycpOworICAgIH0KKyAgfSk7
CisKKyAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSh7CisgICAgd3JpdGUoKSB7
CisgICAgICB0aHJvdyBlcnJvcjE7CisgICAgfQorICB9KTsKKworICByZXR1cm4gcHJvbWlzZV9y
ZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCBycy5waXBlVG8od3MsIHsgcHJldmVudENhbmNlbDog
dHJ1ZSB9KSwgJ3BpcGVUbyBtdXN0IHJlamVjdCB3aXRoIHRoZSBzYW1lIGVycm9yJykKKyAgLnRo
ZW4oKCkgPT4geworICAgIGFzc2VydF9hcnJheV9lcXVhbHMocnMuZXZlbnRzV2l0aG91dFB1bGxz
LCBbXSk7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsnd3JpdGUnLCAnSGVs
bG8nXSk7CisgIH0pOworCit9LCAnRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDog
YmVjb21lcyBlcnJvcmVkIGR1cmluZyBwaXBpbmcgZHVlIHRvIHdyaXRlOyBwcmV2ZW50Q2FuY2Vs
ID0gdHJ1ZScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisKKyAgY29uc3QgcnMgPSByZWNvcmRp
bmdSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoY29udHJvbGxlcikgeworICAgICAgY29udHJv
bGxlci5lbnF1ZXVlKCdhJyk7CisgICAgICBjb250cm9sbGVyLmVucXVldWUoJ2InKTsKKyAgICAg
IGNvbnRyb2xsZXIuZW5xdWV1ZSgnYycpOworICAgIH0KKyAgfSk7CisKKyAgY29uc3Qgd3MgPSBy
ZWNvcmRpbmdXcml0YWJsZVN0cmVhbSh7CisgICAgd3JpdGUoKSB7CisgICAgICBpZiAod3MuZXZl
bnRzLmxlbmd0aCA+IDIpIHsKKyAgICAgICAgcmV0dXJuIGRlbGF5KDApLnRoZW4oKCkgPT4gewor
ICAgICAgICAgIHRocm93IGVycm9yMTsKKyAgICAgICAgfSk7CisgICAgICB9CisgICAgICByZXR1
cm4gdW5kZWZpbmVkOworICAgIH0KKyAgfSk7CisKKyAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19l
eGFjdGx5KHQsIGVycm9yMSwgcnMucGlwZVRvKHdzKSwgJ3BpcGVUbyBtdXN0IHJlamVjdCB3aXRo
IHRoZSBzYW1lIGVycm9yJykudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhy
cy5ldmVudHNXaXRob3V0UHVsbHMsIFsnY2FuY2VsJywgZXJyb3IxXSk7CisgICAgYXNzZXJ0X2Fy
cmF5X2VxdWFscyh3cy5ldmVudHMsIFsnd3JpdGUnLCAnYScsICd3cml0ZScsICdiJ10pOworICB9
KTsKKworfSwgJ0Vycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGJlY29tZXMgZXJy
b3JlZCBkdXJpbmcgcGlwaW5nIGR1ZSB0byB3cml0ZSwgYnV0IGFzeW5jOyBwcmV2ZW50Q2FuY2Vs
ID0gJyArCisgICAnZmFsc2U7IGZ1bGZpbGxlZCBjYW5jZWwgcHJvbWlzZScpOworCitwcm9taXNl
X3Rlc3QodCA9PiB7CisKKyAgY29uc3QgcnMgPSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSh7Cisg
ICAgc3RhcnQoY29udHJvbGxlcikgeworICAgICAgY29udHJvbGxlci5lbnF1ZXVlKCdhJyk7Cisg
ICAgICBjb250cm9sbGVyLmVucXVldWUoJ2InKTsKKyAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgn
YycpOworICAgIH0sCisgICAgY2FuY2VsKCkgeworICAgICAgdGhyb3cgZXJyb3IyOworICAgIH0K
KyAgfSk7CisKKyAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSh7CisgICAgd3Jp
dGUoKSB7CisgICAgICBpZiAod3MuZXZlbnRzLmxlbmd0aCA+IDIpIHsKKyAgICAgICAgcmV0dXJu
IGRlbGF5KDApLnRoZW4oKCkgPT4geworICAgICAgICAgIHRocm93IGVycm9yMTsKKyAgICAgICAg
fSk7CisgICAgICB9CisgICAgICByZXR1cm4gdW5kZWZpbmVkOworICAgIH0KKyAgfSk7CisKKyAg
cmV0dXJuIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMiwgcnMucGlwZVRvKHdzKSwg
J3BpcGVUbyBtdXN0IHJlamVjdCB3aXRoIHRoZSBjYW5jZWwgZXJyb3InKS50aGVuKCgpID0+IHsK
KyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJzLmV2ZW50c1dpdGhvdXRQdWxscywgWydjYW5jZWwn
LCBlcnJvcjFdKTsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWyd3cml0ZScs
ICdhJywgJ3dyaXRlJywgJ2InXSk7CisgIH0pOworCit9LCAnRXJyb3JzIG11c3QgYmUgcHJvcGFn
YXRlZCBiYWNrd2FyZDogYmVjb21lcyBlcnJvcmVkIGR1cmluZyBwaXBpbmcgZHVlIHRvIHdyaXRl
LCBidXQgYXN5bmM7IHByZXZlbnRDYW5jZWwgPSAnICsKKyAgICdmYWxzZTsgcmVqZWN0ZWQgY2Fu
Y2VsIHByb21pc2UnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworCisgIGNvbnN0IHJzID0gcmVj
b3JkaW5nUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGNvbnRyb2xsZXIpIHsKKyAgICAgIGNv
bnRyb2xsZXIuZW5xdWV1ZSgnYScpOworICAgICAgY29udHJvbGxlci5lbnF1ZXVlKCdiJyk7Cisg
ICAgICBjb250cm9sbGVyLmVucXVldWUoJ2MnKTsKKyAgICB9CisgIH0pOworCisgIGNvbnN0IHdz
ID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0oeworICAgIHdyaXRlKCkgeworICAgICAgaWYgKHdz
LmV2ZW50cy5sZW5ndGggPiAyKSB7CisgICAgICAgIHJldHVybiBkZWxheSgwKS50aGVuKCgpID0+
IHsKKyAgICAgICAgICB0aHJvdyBlcnJvcjE7CisgICAgICAgIH0pOworICAgICAgfQorICAgICAg
cmV0dXJuIHVuZGVmaW5lZDsKKyAgICB9CisgIH0pOworCisgIHJldHVybiBwcm9taXNlX3JlamVj
dHNfZXhhY3RseSh0LCBlcnJvcjEsIHJzLnBpcGVUbyh3cywgeyBwcmV2ZW50Q2FuY2VsOiB0cnVl
IH0pLCAncGlwZVRvIG11c3QgcmVqZWN0IHdpdGggdGhlIHNhbWUgZXJyb3InKQorICAudGhlbigo
KSA9PiB7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhycy5ldmVudHNXaXRob3V0UHVsbHMsIFtd
KTsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWyd3cml0ZScsICdhJywgJ3dy
aXRlJywgJ2InXSk7CisgIH0pOworCit9LCAnRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNr
d2FyZDogYmVjb21lcyBlcnJvcmVkIGR1cmluZyBwaXBpbmcgZHVlIHRvIHdyaXRlLCBidXQgYXN5
bmM7IHByZXZlbnRDYW5jZWwgPSB0cnVlJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKworICBj
b25zdCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKCk7CisKKyAgY29uc3Qgd3MgPSByZWNv
cmRpbmdXcml0YWJsZVN0cmVhbSgpOworCisgIGNvbnN0IHBpcGVQcm9taXNlID0gcHJvbWlzZV9y
ZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCBycy5waXBlVG8od3MpLCAncGlwZVRvIG11c3QgcmVq
ZWN0IHdpdGggdGhlIHNhbWUgZXJyb3InKTsKKworICB0LnN0ZXBfdGltZW91dCgoKSA9PiB3cy5j
b250cm9sbGVyLmVycm9yKGVycm9yMSksIDEwKTsKKworICByZXR1cm4gcGlwZVByb21pc2UudGhl
bigoKSA9PiB7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhycy5ldmVudHNXaXRob3V0UHVsbHMs
IFsnY2FuY2VsJywgZXJyb3IxXSk7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMs
IFtdKTsKKyAgfSk7CisKK30sICdFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBi
ZWNvbWVzIGVycm9yZWQgYWZ0ZXIgcGlwaW5nOyBwcmV2ZW50Q2FuY2VsIG9taXR0ZWQ7IGZ1bGZp
bGxlZCBjYW5jZWwgcHJvbWlzZScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisKKyAgY29uc3Qg
cnMgPSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSh7CisgICAgY2FuY2VsKCkgeworICAgICAgdGhy
b3cgZXJyb3IyOworICAgIH0KKyAgfSk7CisKKyAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJs
ZVN0cmVhbSgpOworCisgIGNvbnN0IHBpcGVQcm9taXNlID0gcHJvbWlzZV9yZWplY3RzX2V4YWN0
bHkodCwgZXJyb3IyLCBycy5waXBlVG8od3MpLCAncGlwZVRvIG11c3QgcmVqZWN0IHdpdGggdGhl
IGNhbmNlbCBlcnJvcicpOworCisgIHQuc3RlcF90aW1lb3V0KCgpID0+IHdzLmNvbnRyb2xsZXIu
ZXJyb3IoZXJyb3IxKSwgMTApOworCisgIHJldHVybiBwaXBlUHJvbWlzZS50aGVuKCgpID0+IHsK
KyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJzLmV2ZW50c1dpdGhvdXRQdWxscywgWydjYW5jZWwn
LCBlcnJvcjFdKTsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgW10pOworICB9
KTsKKworfSwgJ0Vycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGJlY29tZXMgZXJy
b3JlZCBhZnRlciBwaXBpbmc7IHByZXZlbnRDYW5jZWwgb21pdHRlZDsgcmVqZWN0ZWQgY2FuY2Vs
IHByb21pc2UnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworCisgIGNvbnN0IHJzID0gcmVjb3Jk
aW5nUmVhZGFibGVTdHJlYW0oKTsKKworICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3Ry
ZWFtKCk7CisKKyAgY29uc3QgcGlwZVByb21pc2UgPSBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0
LCBlcnJvcjEsIHJzLnBpcGVUbyh3cywgeyBwcmV2ZW50Q2FuY2VsOiB0cnVlIH0pLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwaXBlVG8gbXVzdCByZWpl
Y3Qgd2l0aCB0aGUgc2FtZSBlcnJvcicpOworCisgIHQuc3RlcF90aW1lb3V0KCgpID0+IHdzLmNv
bnRyb2xsZXIuZXJyb3IoZXJyb3IxKSwgMTApOworCisgIHJldHVybiBwaXBlUHJvbWlzZS50aGVu
KCgpID0+IHsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJzLmV2ZW50c1dpdGhvdXRQdWxscywg
W10pOworICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbXSk7CisgIH0pOworCit9
LCAnRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogYmVjb21lcyBlcnJvcmVkIGFm
dGVyIHBpcGluZzsgcHJldmVudENhbmNlbCA9IHRydWUnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4g
eworCisgIGNvbnN0IHJzID0gcmVjb3JkaW5nUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGNv
bnRyb2xsZXIpIHsKKyAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYScpOworICAgICAgY29udHJv
bGxlci5lbnF1ZXVlKCdiJyk7CisgICAgICBjb250cm9sbGVyLmVucXVldWUoJ2MnKTsKKyAgICAg
IGNvbnRyb2xsZXIuY2xvc2UoKTsKKyAgICB9CisgIH0pOworCisgIGNvbnN0IHdzID0gcmVjb3Jk
aW5nV3JpdGFibGVTdHJlYW0oeworICAgIHdyaXRlKGNodW5rKSB7CisgICAgICBpZiAoY2h1bmsg
PT09ICdjJykgeworICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyb3IxKTsKKyAgICAg
IH0KKyAgICAgIHJldHVybiB1bmRlZmluZWQ7CisgICAgfQorICB9KTsKKworICByZXR1cm4gcHJv
bWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCBycy5waXBlVG8od3MpLCAncGlwZVRvIG11
c3QgcmVqZWN0IHdpdGggdGhlIHNhbWUgZXJyb3InKS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRf
YXJyYXlfZXF1YWxzKHJzLmV2ZW50c1dpdGhvdXRQdWxscywgW10pOworICAgIGFzc2VydF9hcnJh
eV9lcXVhbHMod3MuZXZlbnRzLCBbJ3dyaXRlJywgJ2EnLCAnd3JpdGUnLCAnYicsICd3cml0ZScs
ICdjJ10pOworICB9KTsKKworfSwgJ0Vycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6
IGJlY29tZXMgZXJyb3JlZCBhZnRlciBwaXBpbmcgZHVlIHRvIGxhc3Qgd3JpdGU7IHNvdXJjZSBp
cyBjbG9zZWQ7ICcgKworICAgJ3ByZXZlbnRDYW5jZWwgb21pdHRlZCAoYnV0IGNhbmNlbCBpcyBu
ZXZlciBjYWxsZWQpJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKworICBjb25zdCBycyA9IHJl
Y29yZGluZ1JlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjb250cm9sbGVyKSB7CisgICAgICBj
b250cm9sbGVyLmVucXVldWUoJ2EnKTsKKyAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYicpOwor
ICAgICAgY29udHJvbGxlci5lbnF1ZXVlKCdjJyk7CisgICAgICBjb250cm9sbGVyLmNsb3NlKCk7
CisgICAgfQorICB9KTsKKworICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKHsK
KyAgICB3cml0ZShjaHVuaykgeworICAgICAgaWYgKGNodW5rID09PSAnYycpIHsKKyAgICAgICAg
cmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yMSk7CisgICAgICB9CisgICAgICByZXR1cm4gdW5k
ZWZpbmVkOworICAgIH0KKyAgfSk7CisKKyAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19leGFjdGx5
KHQsIGVycm9yMSwgcnMucGlwZVRvKHdzLCB7IHByZXZlbnRDYW5jZWw6IHRydWUgfSksICdwaXBl
VG8gbXVzdCByZWplY3Qgd2l0aCB0aGUgc2FtZSBlcnJvcicpCisgICAgLnRoZW4oKCkgPT4gewor
ICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhycy5ldmVudHNXaXRob3V0UHVsbHMsIFtdKTsKKyAg
ICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ3dyaXRlJywgJ2EnLCAnd3JpdGUn
LCAnYicsICd3cml0ZScsICdjJ10pOworICAgIH0pOworCit9LCAnRXJyb3JzIG11c3QgYmUgcHJv
cGFnYXRlZCBiYWNrd2FyZDogYmVjb21lcyBlcnJvcmVkIGFmdGVyIHBpcGluZyBkdWUgdG8gbGFz
dCB3cml0ZTsgc291cmNlIGlzIGNsb3NlZDsgJyArCisgICAncHJldmVudENhbmNlbCA9IHRydWUn
KTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworCisgIGNvbnN0IHJzID0gcmVjb3JkaW5nUmVhZGFi
bGVTdHJlYW0oKTsKKworICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKHVuZGVm
aW5lZCwgbmV3IENvdW50UXVldWluZ1N0cmF0ZWd5KHsgaGlnaFdhdGVyTWFyazogMCB9KSk7CisK
KyAgY29uc3QgcGlwZVByb21pc2UgPSBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEs
IHJzLnBpcGVUbyh3cyksICdwaXBlVG8gbXVzdCByZWplY3Qgd2l0aCB0aGUgc2FtZSBlcnJvcicp
OworCisgIHQuc3RlcF90aW1lb3V0KCgpID0+IHdzLmNvbnRyb2xsZXIuZXJyb3IoZXJyb3IxKSwg
MTApOworCisgIHJldHVybiBwaXBlUHJvbWlzZS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfYXJy
YXlfZXF1YWxzKHJzLmV2ZW50c1dpdGhvdXRQdWxscywgWydjYW5jZWwnLCBlcnJvcjFdKTsKKyAg
ICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgW10pOworICB9KTsKKworfSwgJ0Vycm9y
cyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGJlY29tZXMgZXJyb3JlZCBhZnRlciBwaXBp
bmc7IGRlc3QgbmV2ZXIgZGVzaXJlcyBjaHVua3M7IHByZXZlbnRDYW5jZWwgPSAnICsKKyAgICdm
YWxzZTsgZnVsZmlsbGVkIGNhbmNlbCBwcm9taXNlJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsK
KworICBjb25zdCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKHsKKyAgICBjYW5jZWwoKSB7
CisgICAgICB0aHJvdyBlcnJvcjI7CisgICAgfQorICB9KTsKKworICBjb25zdCB3cyA9IHJlY29y
ZGluZ1dyaXRhYmxlU3RyZWFtKHVuZGVmaW5lZCwgbmV3IENvdW50UXVldWluZ1N0cmF0ZWd5KHsg
aGlnaFdhdGVyTWFyazogMCB9KSk7CisKKyAgY29uc3QgcGlwZVByb21pc2UgPSBwcm9taXNlX3Jl
amVjdHNfZXhhY3RseSh0LCBlcnJvcjIsIHJzLnBpcGVUbyh3cyksICdwaXBlVG8gbXVzdCByZWpl
Y3Qgd2l0aCB0aGUgY2FuY2VsIGVycm9yJyk7CisKKyAgdC5zdGVwX3RpbWVvdXQoKCkgPT4gd3Mu
Y29udHJvbGxlci5lcnJvcihlcnJvcjEpLCAxMCk7CisKKyAgcmV0dXJuIHBpcGVQcm9taXNlLnRo
ZW4oKCkgPT4geworICAgIGFzc2VydF9hcnJheV9lcXVhbHMocnMuZXZlbnRzV2l0aG91dFB1bGxz
LCBbJ2NhbmNlbCcsIGVycm9yMV0pOworICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRz
LCBbXSk7CisgIH0pOworCit9LCAnRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDog
YmVjb21lcyBlcnJvcmVkIGFmdGVyIHBpcGluZzsgZGVzdCBuZXZlciBkZXNpcmVzIGNodW5rczsg
cHJldmVudENhbmNlbCA9ICcgKworICAgJ2ZhbHNlOyByZWplY3RlZCBjYW5jZWwgcHJvbWlzZScp
OworCitwcm9taXNlX3Rlc3QodCA9PiB7CisKKyAgY29uc3QgcnMgPSByZWNvcmRpbmdSZWFkYWJs
ZVN0cmVhbSgpOworCisgIGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0odW5kZWZp
bmVkLCBuZXcgQ291bnRRdWV1aW5nU3RyYXRlZ3koeyBoaWdoV2F0ZXJNYXJrOiAwIH0pKTsKKwor
ICBjb25zdCBwaXBlUHJvbWlzZSA9IHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMSwg
cnMucGlwZVRvKHdzLCB7IHByZXZlbnRDYW5jZWw6IHRydWUgfSksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BpcGVUbyBtdXN0IHJlamVjdCB3aXRoIHRo
ZSBzYW1lIGVycm9yJyk7CisKKyAgdC5zdGVwX3RpbWVvdXQoKCkgPT4gd3MuY29udHJvbGxlci5l
cnJvcihlcnJvcjEpLCAxMCk7CisKKyAgcmV0dXJuIHBpcGVQcm9taXNlLnRoZW4oKCkgPT4gewor
ICAgIGFzc2VydF9hcnJheV9lcXVhbHMocnMuZXZlbnRzV2l0aG91dFB1bGxzLCBbXSk7CisgICAg
YXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFtdKTsKKyAgfSk7CisKK30sICdFcnJvcnMg
bXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVycm9yZWQgYWZ0ZXIgcGlwaW5n
OyBkZXN0IG5ldmVyIGRlc2lyZXMgY2h1bmtzOyBwcmV2ZW50Q2FuY2VsID0gJyArCisgICAndHJ1
ZScpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworCisgIGNvbnN0IHJzID0gcmVjb3JkaW5nUmVh
ZGFibGVTdHJlYW0oKTsKKworICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKCk7
CisKKyAgd3MuYWJvcnQoZXJyb3IxKTsKKworICByZXR1cm4gcnMucGlwZVRvKHdzKS50aGVuKAor
ICAgICgpID0+IGFzc2VydF91bnJlYWNoZWQoJ3RoZSBwcm9taXNlIG11c3Qgbm90IGZ1bGZpbGwn
KSwKKyAgICBlcnIgPT4geworICAgICAgYXNzZXJ0X2VxdWFscyhlcnIsIGVycm9yMSwgJ3RoZSBw
cm9taXNlIG11c3QgcmVqZWN0IHdpdGggZXJyb3IxJyk7CisKKyAgICAgIGFzc2VydF9hcnJheV9l
cXVhbHMocnMuZXZlbnRzV2l0aG91dFB1bGxzLCBbJ2NhbmNlbCcsIGVycl0pOworICAgICAgYXNz
ZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsnYWJvcnQnLCBlcnJvcjFdKTsKKyAgICB9Cisg
ICk7CisKK30sICdFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVy
cm9yZWQgYmVmb3JlIHBpcGluZyB2aWEgYWJvcnQ7IHByZXZlbnRDYW5jZWwgb21pdHRlZDsgZnVs
ZmlsbGVkICcgKworICAgJ2NhbmNlbCBwcm9taXNlJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsK
KworICBjb25zdCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKHsKKyAgICBjYW5jZWwoKSB7
CisgICAgICB0aHJvdyBlcnJvcjI7CisgICAgfQorICB9KTsKKworICBjb25zdCB3cyA9IHJlY29y
ZGluZ1dyaXRhYmxlU3RyZWFtKCk7CisKKyAgd3MuYWJvcnQoZXJyb3IxKTsKKworICByZXR1cm4g
cHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IyLCBycy5waXBlVG8od3MpLCAncGlwZVRv
IG11c3QgcmVqZWN0IHdpdGggdGhlIGNhbmNlbCBlcnJvcicpCisgICAgLnRoZW4oKCkgPT4gewor
ICAgICAgcmV0dXJuIHdzLmdldFdyaXRlcigpLmNsb3NlZC50aGVuKAorICAgICAgICAoKSA9PiBh
c3NlcnRfdW5yZWFjaGVkKCd0aGUgcHJvbWlzZSBtdXN0IG5vdCBmdWxmaWxsJyksCisgICAgICAg
IGVyciA9PiB7CisgICAgICAgICAgYXNzZXJ0X2VxdWFscyhlcnIsIGVycm9yMSwgJ3RoZSBwcm9t
aXNlIG11c3QgcmVqZWN0IHdpdGggZXJyb3IxJyk7CisKKyAgICAgICAgICBhc3NlcnRfYXJyYXlf
ZXF1YWxzKHJzLmV2ZW50c1dpdGhvdXRQdWxscywgWydjYW5jZWwnLCBlcnJdKTsKKyAgICAgICAg
ICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWydhYm9ydCcsIGVycm9yMV0pOworICAg
ICAgICB9CisgICAgICApOworICAgIH0pOworCit9LCAnRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRl
ZCBiYWNrd2FyZDogYmVjb21lcyBlcnJvcmVkIGJlZm9yZSBwaXBpbmcgdmlhIGFib3J0OyBwcmV2
ZW50Q2FuY2VsIG9taXR0ZWQ7IHJlamVjdGVkICcgKworICAgJ2NhbmNlbCBwcm9taXNlJyk7CisK
K3Byb21pc2VfdGVzdCh0ID0+IHsKKworICBjb25zdCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3Ry
ZWFtKCk7CisKKyAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSgpOworCisgIHdz
LmFib3J0KGVycm9yMSk7CisKKyAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVy
cm9yMSwgcnMucGlwZVRvKHdzLCB7IHByZXZlbnRDYW5jZWw6IHRydWUgfSkpLnRoZW4oKCkgPT4g
eworICAgIGFzc2VydF9hcnJheV9lcXVhbHMocnMuZXZlbnRzV2l0aG91dFB1bGxzLCBbXSk7Cisg
ICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsnYWJvcnQnLCBlcnJvcjFdKTsKKyAg
fSk7CisKK30sICdFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVy
cm9yZWQgYmVmb3JlIHBpcGluZyB2aWEgYWJvcnQ7IHByZXZlbnRDYW5jZWwgPSB0cnVlJyk7CisK
K3Byb21pc2VfdGVzdCh0ID0+IHsKKworICBjb25zdCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3Ry
ZWFtKCk7CisKKyAgbGV0IHJlc29sdmVXcml0ZUNhbGxlZDsKKyAgY29uc3Qgd3JpdGVDYWxsZWRQ
cm9taXNlID0gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7CisgICAgcmVzb2x2ZVdyaXRlQ2FsbGVk
ID0gcmVzb2x2ZTsKKyAgfSk7CisKKyAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVh
bSh7CisgICAgd3JpdGUoKSB7CisgICAgICByZXNvbHZlV3JpdGVDYWxsZWQoKTsKKyAgICAgIHJl
dHVybiBmbHVzaEFzeW5jRXZlbnRzKCk7CisgICAgfQorICB9KTsKKworICBjb25zdCBwaXBlUHJv
bWlzZSA9IHJzLnBpcGVUbyh3cyk7CisKKyAgcnMuY29udHJvbGxlci5lbnF1ZXVlKCdhJyk7CisK
KyAgcmV0dXJuIHdyaXRlQ2FsbGVkUHJvbWlzZS50aGVuKCgpID0+IHsKKyAgICB3cy5jb250cm9s
bGVyLmVycm9yKGVycm9yMSk7CisKKyAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2V4YWN0bHko
dCwgZXJyb3IxLCBwaXBlUHJvbWlzZSk7CisgIH0pLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9h
cnJheV9lcXVhbHMocnMuZXZlbnRzV2l0aG91dFB1bGxzLCBbJ2NhbmNlbCcsIGVycm9yMV0pOwor
ICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ3dyaXRlJywgJ2EnXSk7CisgIH0p
OworCit9LCAnRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogZXJyb3Jpbmcgdmlh
IHRoZSBjb250cm9sbGVyIGVycm9ycyBvbmNlIHBlbmRpbmcgd3JpdGUgY29tcGxldGVzJyk7CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMvcGlwaW5nL2Vycm9yLXByb3BhZ2F0aW9uLWJhY2t3YXJkLmFueS53b3JrZXItZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJl
YW1zL3BpcGluZy9lcnJvci1wcm9wYWdhdGlvbi1iYWNrd2FyZC5hbnkud29ya2VyLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5lNTE5ZDEwYjczZmMxNmM1NjRlNjA2NjFhOTE5ZDRkN2IyMmIyZjhj
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zdHJlYW1zL3BpcGluZy9lcnJvci1wcm9wYWdhdGlvbi1iYWNrd2FyZC5hbnkud29y
a2VyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDM3IEBACisKK0ZBSUwgRXJyb3JzIG11c3QgYmUg
cHJvcGFnYXRlZCBiYWNrd2FyZDogc3RhcnRzIGVycm9yZWQ7IHByZXZlbnRDYW5jZWwgb21pdHRl
ZDsgZnVsZmlsbGVkIGNhbmNlbCBwcm9taXNlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxl
U3RyZWFtCitGQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGJlY29tZXMg
ZXJyb3JlZCBiZWZvcmUgcGlwaW5nIGR1ZSB0byB3cml0ZTsgcHJldmVudENhbmNlbCBvbWl0dGVk
OyBmdWxmaWxsZWQgY2FuY2VsIHByb21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVT
dHJlYW0KK0ZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogYmVjb21lcyBl
cnJvcmVkIGJlZm9yZSBwaXBpbmcgZHVlIHRvIHdyaXRlOyBwcmV2ZW50Q2FuY2VsIG9taXR0ZWQ7
IHJlamVjdGVkIGNhbmNlbCBwcm9taXNlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3Ry
ZWFtCitGQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGJlY29tZXMgZXJy
b3JlZCBiZWZvcmUgcGlwaW5nIGR1ZSB0byB3cml0ZTsgcHJldmVudENhbmNlbCA9IHVuZGVmaW5l
ZCAoZmFsc3kpOyBmdWxmaWxsZWQgY2FuY2VsIHByb21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTog
V3JpdGFibGVTdHJlYW0KK0ZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDog
YmVjb21lcyBlcnJvcmVkIGJlZm9yZSBwaXBpbmcgZHVlIHRvIHdyaXRlOyBwcmV2ZW50Q2FuY2Vs
ID0gbnVsbCAoZmFsc3kpOyBmdWxmaWxsZWQgY2FuY2VsIHByb21pc2UgQ2FuJ3QgZmluZCB2YXJp
YWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNr
d2FyZDogYmVjb21lcyBlcnJvcmVkIGJlZm9yZSBwaXBpbmcgZHVlIHRvIHdyaXRlOyBwcmV2ZW50
Q2FuY2VsID0gZmFsc2UgKGZhbHN5KTsgZnVsZmlsbGVkIGNhbmNlbCBwcm9taXNlIENhbid0IGZp
bmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0
ZWQgYmFja3dhcmQ6IGJlY29tZXMgZXJyb3JlZCBiZWZvcmUgcGlwaW5nIGR1ZSB0byB3cml0ZTsg
cHJldmVudENhbmNlbCA9IDAgKGZhbHN5KTsgZnVsZmlsbGVkIGNhbmNlbCBwcm9taXNlIENhbid0
IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIEVycm9ycyBtdXN0IGJlIHByb3Bh
Z2F0ZWQgYmFja3dhcmQ6IGJlY29tZXMgZXJyb3JlZCBiZWZvcmUgcGlwaW5nIGR1ZSB0byB3cml0
ZTsgcHJldmVudENhbmNlbCA9IC0wIChmYWxzeSk7IGZ1bGZpbGxlZCBjYW5jZWwgcHJvbWlzZSBD
YW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBFcnJvcnMgbXVzdCBiZSBw
cm9wYWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVycm9yZWQgYmVmb3JlIHBpcGluZyBkdWUgdG8g
d3JpdGU7IHByZXZlbnRDYW5jZWwgPSBOYU4gKGZhbHN5KTsgZnVsZmlsbGVkIGNhbmNlbCBwcm9t
aXNlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIEVycm9ycyBtdXN0
IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGJlY29tZXMgZXJyb3JlZCBiZWZvcmUgcGlwaW5nIGR1
ZSB0byB3cml0ZTsgcHJldmVudENhbmNlbCA9ICAoZmFsc3kpOyBmdWxmaWxsZWQgY2FuY2VsIHBy
b21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgRXJyb3JzIG11
c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogYmVjb21lcyBlcnJvcmVkIGJlZm9yZSBwaXBpbmcg
ZHVlIHRvIHdyaXRlOyBwcmV2ZW50Q2FuY2VsID0gdHJ1ZSAodHJ1dGh5KSBDYW4ndCBmaW5kIHZh
cmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJh
Y2t3YXJkOiBiZWNvbWVzIGVycm9yZWQgYmVmb3JlIHBpcGluZyBkdWUgdG8gd3JpdGU7IHByZXZl
bnRDYW5jZWwgPSBhICh0cnV0aHkpIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFt
CitGQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGJlY29tZXMgZXJyb3Jl
ZCBiZWZvcmUgcGlwaW5nIGR1ZSB0byB3cml0ZTsgcHJldmVudENhbmNlbCA9IDEgKHRydXRoeSkg
Q2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgRXJyb3JzIG11c3QgYmUg
cHJvcGFnYXRlZCBiYWNrd2FyZDogYmVjb21lcyBlcnJvcmVkIGJlZm9yZSBwaXBpbmcgZHVlIHRv
IHdyaXRlOyBwcmV2ZW50Q2FuY2VsID0gU3ltYm9sKCkgKHRydXRoeSkgQ2FuJ3QgZmluZCB2YXJp
YWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNr
d2FyZDogYmVjb21lcyBlcnJvcmVkIGJlZm9yZSBwaXBpbmcgZHVlIHRvIHdyaXRlOyBwcmV2ZW50
Q2FuY2VsID0gW29iamVjdCBPYmplY3RdICh0cnV0aHkpIENhbid0IGZpbmQgdmFyaWFibGU6IFdy
aXRhYmxlU3RyZWFtCitGQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGJl
Y29tZXMgZXJyb3JlZCBiZWZvcmUgcGlwaW5nIGR1ZSB0byB3cml0ZSwgcHJldmVudENhbmNlbCA9
IHRydWU7IHByZXZlbnRBYm9ydCA9IHRydWUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVT
dHJlYW0KK0ZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogYmVjb21lcyBl
cnJvcmVkIGJlZm9yZSBwaXBpbmcgZHVlIHRvIHdyaXRlOyBwcmV2ZW50Q2FuY2VsID0gdHJ1ZSwg
cHJldmVudEFib3J0ID0gdHJ1ZSwgcHJldmVudENsb3NlID0gdHJ1ZSBDYW4ndCBmaW5kIHZhcmlh
YmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3
YXJkOiBiZWNvbWVzIGVycm9yZWQgZHVyaW5nIHBpcGluZyBkdWUgdG8gd3JpdGU7IHByZXZlbnRD
YW5jZWwgb21pdHRlZDsgZnVsZmlsbGVkIGNhbmNlbCBwcm9taXNlIENhbid0IGZpbmQgdmFyaWFi
bGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dh
cmQ6IGJlY29tZXMgZXJyb3JlZCBkdXJpbmcgcGlwaW5nIGR1ZSB0byB3cml0ZTsgcHJldmVudENh
bmNlbCBvbWl0dGVkOyByZWplY3RlZCBjYW5jZWwgcHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxl
OiBXcml0YWJsZVN0cmVhbQorRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJk
OiBiZWNvbWVzIGVycm9yZWQgZHVyaW5nIHBpcGluZyBkdWUgdG8gd3JpdGU7IHByZXZlbnRDYW5j
ZWwgPSB0cnVlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIEVycm9y
cyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGJlY29tZXMgZXJyb3JlZCBkdXJpbmcgcGlw
aW5nIGR1ZSB0byB3cml0ZSwgYnV0IGFzeW5jOyBwcmV2ZW50Q2FuY2VsID0gZmFsc2U7IGZ1bGZp
bGxlZCBjYW5jZWwgcHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQor
RkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVycm9yZWQg
ZHVyaW5nIHBpcGluZyBkdWUgdG8gd3JpdGUsIGJ1dCBhc3luYzsgcHJldmVudENhbmNlbCA9IGZh
bHNlOyByZWplY3RlZCBjYW5jZWwgcHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJs
ZVN0cmVhbQorRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVz
IGVycm9yZWQgZHVyaW5nIHBpcGluZyBkdWUgdG8gd3JpdGUsIGJ1dCBhc3luYzsgcHJldmVudENh
bmNlbCA9IHRydWUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgRXJy
b3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogYmVjb21lcyBlcnJvcmVkIGFmdGVyIHBp
cGluZzsgcHJldmVudENhbmNlbCBvbWl0dGVkOyBmdWxmaWxsZWQgY2FuY2VsIHByb21pc2UgQ2Fu
J3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgRXJyb3JzIG11c3QgYmUgcHJv
cGFnYXRlZCBiYWNrd2FyZDogYmVjb21lcyBlcnJvcmVkIGFmdGVyIHBpcGluZzsgcHJldmVudENh
bmNlbCBvbWl0dGVkOyByZWplY3RlZCBjYW5jZWwgcHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxl
OiBXcml0YWJsZVN0cmVhbQorRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJk
OiBiZWNvbWVzIGVycm9yZWQgYWZ0ZXIgcGlwaW5nOyBwcmV2ZW50Q2FuY2VsID0gdHJ1ZSBDYW4n
dCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9w
YWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVycm9yZWQgYWZ0ZXIgcGlwaW5nIGR1ZSB0byBsYXN0
IHdyaXRlOyBzb3VyY2UgaXMgY2xvc2VkOyBwcmV2ZW50Q2FuY2VsIG9taXR0ZWQgKGJ1dCBjYW5j
ZWwgaXMgbmV2ZXIgY2FsbGVkKSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQor
RkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVycm9yZWQg
YWZ0ZXIgcGlwaW5nIGR1ZSB0byBsYXN0IHdyaXRlOyBzb3VyY2UgaXMgY2xvc2VkOyBwcmV2ZW50
Q2FuY2VsID0gdHJ1ZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBF
cnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVycm9yZWQgYWZ0ZXIg
cGlwaW5nOyBkZXN0IG5ldmVyIGRlc2lyZXMgY2h1bmtzOyBwcmV2ZW50Q2FuY2VsID0gZmFsc2U7
IGZ1bGZpbGxlZCBjYW5jZWwgcHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0
cmVhbQorRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVy
cm9yZWQgYWZ0ZXIgcGlwaW5nOyBkZXN0IG5ldmVyIGRlc2lyZXMgY2h1bmtzOyBwcmV2ZW50Q2Fu
Y2VsID0gZmFsc2U7IHJlamVjdGVkIGNhbmNlbCBwcm9taXNlIENhbid0IGZpbmQgdmFyaWFibGU6
IFdyaXRhYmxlU3RyZWFtCitGQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6
IGJlY29tZXMgZXJyb3JlZCBhZnRlciBwaXBpbmc7IGRlc3QgbmV2ZXIgZGVzaXJlcyBjaHVua3M7
IHByZXZlbnRDYW5jZWwgPSB0cnVlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFt
CitGQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGJlY29tZXMgZXJyb3Jl
ZCBiZWZvcmUgcGlwaW5nIHZpYSBhYm9ydDsgcHJldmVudENhbmNlbCBvbWl0dGVkOyBmdWxmaWxs
ZWQgY2FuY2VsIHByb21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZB
SUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogYmVjb21lcyBlcnJvcmVkIGJl
Zm9yZSBwaXBpbmcgdmlhIGFib3J0OyBwcmV2ZW50Q2FuY2VsIG9taXR0ZWQ7IHJlamVjdGVkIGNh
bmNlbCBwcm9taXNlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIEVy
cm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGJlY29tZXMgZXJyb3JlZCBiZWZvcmUg
cGlwaW5nIHZpYSBhYm9ydDsgcHJldmVudENhbmNlbCA9IHRydWUgQ2FuJ3QgZmluZCB2YXJpYWJs
ZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2Fy
ZDogZXJyb3JpbmcgdmlhIHRoZSBjb250cm9sbGVyIGVycm9ycyBvbmNlIHBlbmRpbmcgd3JpdGUg
Y29tcGxldGVzIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9w
aXBpbmcvZXJyb3ItcHJvcGFnYXRpb24tYmFja3dhcmQuYW55Lndvcmtlci5odG1sIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9lcnJv
ci1wcm9wYWdhdGlvbi1iYWNrd2FyZC5hbnkud29ya2VyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjM4Mjkx
MzUyOGU2OTNiM2E1ZDU2YzY2MGE0NTA2MDk4MGI1NDhjMwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcv
ZXJyb3ItcHJvcGFnYXRpb24tYmFja3dhcmQuYW55Lndvcmtlci5odG1sCkBAIC0wLDAgKzEgQEAK
KzwhLS0gVGhpcyBmaWxlIGlzIHJlcXVpcmVkIGZvciBXZWJLaXQgdGVzdCBpbmZyYXN0cnVjdHVy
ZSB0byBydW4gdGhlIHRlbXBsYXRlZCB0ZXN0IC0tPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy9waXBpbmcvZXJyb3ItcHJvcGFnYXRpb24tYmFja3dhcmQuZGVkaWNhdGVkd29y
a2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy9waXBpbmcvZXJyb3ItcHJvcGFnYXRpb24tYmFja3dhcmQuZGVkaWNhdGVk
d29ya2VyLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTUxOWQx
MGI3M2ZjMTZjNTY0ZTYwNjYxYTkxOWQ0ZDdiMjJiMmY4Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Vycm9yLXByb3BhZ2F0aW9uLWJhY2t3YXJkLmRl
ZGljYXRlZHdvcmtlci1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBA
Ci0KLUZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogc3RhcnRzIGVycm9y
ZWQ7IHByZXZlbnRDYW5jZWwgb21pdHRlZDsgZnVsZmlsbGVkIGNhbmNlbCBwcm9taXNlIENhbid0
IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIEVycm9ycyBtdXN0IGJlIHByb3Bh
Z2F0ZWQgYmFja3dhcmQ6IGJlY29tZXMgZXJyb3JlZCBiZWZvcmUgcGlwaW5nIGR1ZSB0byB3cml0
ZTsgcHJldmVudENhbmNlbCBvbWl0dGVkOyBmdWxmaWxsZWQgY2FuY2VsIHByb21pc2UgQ2FuJ3Qg
ZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFn
YXRlZCBiYWNrd2FyZDogYmVjb21lcyBlcnJvcmVkIGJlZm9yZSBwaXBpbmcgZHVlIHRvIHdyaXRl
OyBwcmV2ZW50Q2FuY2VsIG9taXR0ZWQ7IHJlamVjdGVkIGNhbmNlbCBwcm9taXNlIENhbid0IGZp
bmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0
ZWQgYmFja3dhcmQ6IGJlY29tZXMgZXJyb3JlZCBiZWZvcmUgcGlwaW5nIGR1ZSB0byB3cml0ZTsg
cHJldmVudENhbmNlbCA9IHVuZGVmaW5lZCAoZmFsc3kpOyBmdWxmaWxsZWQgY2FuY2VsIHByb21p
c2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgRXJyb3JzIG11c3Qg
YmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogYmVjb21lcyBlcnJvcmVkIGJlZm9yZSBwaXBpbmcgZHVl
IHRvIHdyaXRlOyBwcmV2ZW50Q2FuY2VsID0gbnVsbCAoZmFsc3kpOyBmdWxmaWxsZWQgY2FuY2Vs
IHByb21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgRXJyb3Jz
IG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogYmVjb21lcyBlcnJvcmVkIGJlZm9yZSBwaXBp
bmcgZHVlIHRvIHdyaXRlOyBwcmV2ZW50Q2FuY2VsID0gZmFsc2UgKGZhbHN5KTsgZnVsZmlsbGVk
IGNhbmNlbCBwcm9taXNlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlM
IEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGJlY29tZXMgZXJyb3JlZCBiZWZv
cmUgcGlwaW5nIGR1ZSB0byB3cml0ZTsgcHJldmVudENhbmNlbCA9IDAgKGZhbHN5KTsgZnVsZmls
bGVkIGNhbmNlbCBwcm9taXNlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1G
QUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGJlY29tZXMgZXJyb3JlZCBi
ZWZvcmUgcGlwaW5nIGR1ZSB0byB3cml0ZTsgcHJldmVudENhbmNlbCA9IC0wIChmYWxzeSk7IGZ1
bGZpbGxlZCBjYW5jZWwgcHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVh
bQotRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVycm9y
ZWQgYmVmb3JlIHBpcGluZyBkdWUgdG8gd3JpdGU7IHByZXZlbnRDYW5jZWwgPSBOYU4gKGZhbHN5
KTsgZnVsZmlsbGVkIGNhbmNlbCBwcm9taXNlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxl
U3RyZWFtCi1GQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGJlY29tZXMg
ZXJyb3JlZCBiZWZvcmUgcGlwaW5nIGR1ZSB0byB3cml0ZTsgcHJldmVudENhbmNlbCA9ICAoZmFs
c3kpOyBmdWxmaWxsZWQgY2FuY2VsIHByb21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFi
bGVTdHJlYW0KLUZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogYmVjb21l
cyBlcnJvcmVkIGJlZm9yZSBwaXBpbmcgZHVlIHRvIHdyaXRlOyBwcmV2ZW50Q2FuY2VsID0gdHJ1
ZSAodHJ1dGh5KSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBFcnJv
cnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVycm9yZWQgYmVmb3JlIHBp
cGluZyBkdWUgdG8gd3JpdGU7IHByZXZlbnRDYW5jZWwgPSBhICh0cnV0aHkpIENhbid0IGZpbmQg
dmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQg
YmFja3dhcmQ6IGJlY29tZXMgZXJyb3JlZCBiZWZvcmUgcGlwaW5nIGR1ZSB0byB3cml0ZTsgcHJl
dmVudENhbmNlbCA9IDEgKHRydXRoeSkgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJl
YW0KLUZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogYmVjb21lcyBlcnJv
cmVkIGJlZm9yZSBwaXBpbmcgZHVlIHRvIHdyaXRlOyBwcmV2ZW50Q2FuY2VsID0gU3ltYm9sKCkg
KHRydXRoeSkgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgRXJyb3Jz
IG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogYmVjb21lcyBlcnJvcmVkIGJlZm9yZSBwaXBp
bmcgZHVlIHRvIHdyaXRlOyBwcmV2ZW50Q2FuY2VsID0gW29iamVjdCBPYmplY3RdICh0cnV0aHkp
IENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIEVycm9ycyBtdXN0IGJl
IHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGJlY29tZXMgZXJyb3JlZCBiZWZvcmUgcGlwaW5nIGR1ZSB0
byB3cml0ZSwgcHJldmVudENhbmNlbCA9IHRydWU7IHByZXZlbnRBYm9ydCA9IHRydWUgQ2FuJ3Qg
ZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFn
YXRlZCBiYWNrd2FyZDogYmVjb21lcyBlcnJvcmVkIGJlZm9yZSBwaXBpbmcgZHVlIHRvIHdyaXRl
OyBwcmV2ZW50Q2FuY2VsID0gdHJ1ZSwgcHJldmVudEFib3J0ID0gdHJ1ZSwgcHJldmVudENsb3Nl
ID0gdHJ1ZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBFcnJvcnMg
bXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVycm9yZWQgZHVyaW5nIHBpcGlu
ZyBkdWUgdG8gd3JpdGU7IHByZXZlbnRDYW5jZWwgb21pdHRlZDsgZnVsZmlsbGVkIGNhbmNlbCBw
cm9taXNlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIEVycm9ycyBt
dXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGJlY29tZXMgZXJyb3JlZCBkdXJpbmcgcGlwaW5n
IGR1ZSB0byB3cml0ZTsgcHJldmVudENhbmNlbCBvbWl0dGVkOyByZWplY3RlZCBjYW5jZWwgcHJv
bWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBFcnJvcnMgbXVz
dCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVycm9yZWQgZHVyaW5nIHBpcGluZyBk
dWUgdG8gd3JpdGU7IHByZXZlbnRDYW5jZWwgPSB0cnVlIENhbid0IGZpbmQgdmFyaWFibGU6IFdy
aXRhYmxlU3RyZWFtCi1GQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGJl
Y29tZXMgZXJyb3JlZCBkdXJpbmcgcGlwaW5nIGR1ZSB0byB3cml0ZSwgYnV0IGFzeW5jOyBwcmV2
ZW50Q2FuY2VsID0gZmFsc2U7IGZ1bGZpbGxlZCBjYW5jZWwgcHJvbWlzZSBDYW4ndCBmaW5kIHZh
cmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJh
Y2t3YXJkOiBiZWNvbWVzIGVycm9yZWQgZHVyaW5nIHBpcGluZyBkdWUgdG8gd3JpdGUsIGJ1dCBh
c3luYzsgcHJldmVudENhbmNlbCA9IGZhbHNlOyByZWplY3RlZCBjYW5jZWwgcHJvbWlzZSBDYW4n
dCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9w
YWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVycm9yZWQgZHVyaW5nIHBpcGluZyBkdWUgdG8gd3Jp
dGUsIGJ1dCBhc3luYzsgcHJldmVudENhbmNlbCA9IHRydWUgQ2FuJ3QgZmluZCB2YXJpYWJsZTog
V3JpdGFibGVTdHJlYW0KLUZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDog
YmVjb21lcyBlcnJvcmVkIGFmdGVyIHBpcGluZzsgcHJldmVudENhbmNlbCBvbWl0dGVkOyBmdWxm
aWxsZWQgY2FuY2VsIHByb21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0K
LUZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogYmVjb21lcyBlcnJvcmVk
IGFmdGVyIHBpcGluZzsgcHJldmVudENhbmNlbCBvbWl0dGVkOyByZWplY3RlZCBjYW5jZWwgcHJv
bWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBFcnJvcnMgbXVz
dCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVycm9yZWQgYWZ0ZXIgcGlwaW5nOyBw
cmV2ZW50Q2FuY2VsID0gdHJ1ZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQot
RkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVycm9yZWQg
YWZ0ZXIgcGlwaW5nIGR1ZSB0byBsYXN0IHdyaXRlOyBzb3VyY2UgaXMgY2xvc2VkOyBwcmV2ZW50
Q2FuY2VsIG9taXR0ZWQgKGJ1dCBjYW5jZWwgaXMgbmV2ZXIgY2FsbGVkKSBDYW4ndCBmaW5kIHZh
cmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJh
Y2t3YXJkOiBiZWNvbWVzIGVycm9yZWQgYWZ0ZXIgcGlwaW5nIGR1ZSB0byBsYXN0IHdyaXRlOyBz
b3VyY2UgaXMgY2xvc2VkOyBwcmV2ZW50Q2FuY2VsID0gdHJ1ZSBDYW4ndCBmaW5kIHZhcmlhYmxl
OiBXcml0YWJsZVN0cmVhbQotRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJk
OiBiZWNvbWVzIGVycm9yZWQgYWZ0ZXIgcGlwaW5nOyBkZXN0IG5ldmVyIGRlc2lyZXMgY2h1bmtz
OyBwcmV2ZW50Q2FuY2VsID0gZmFsc2U7IGZ1bGZpbGxlZCBjYW5jZWwgcHJvbWlzZSBDYW4ndCBm
aW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdh
dGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVycm9yZWQgYWZ0ZXIgcGlwaW5nOyBkZXN0IG5ldmVyIGRl
c2lyZXMgY2h1bmtzOyBwcmV2ZW50Q2FuY2VsID0gZmFsc2U7IHJlamVjdGVkIGNhbmNlbCBwcm9t
aXNlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIEVycm9ycyBtdXN0
IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGJlY29tZXMgZXJyb3JlZCBhZnRlciBwaXBpbmc7IGRl
c3QgbmV2ZXIgZGVzaXJlcyBjaHVua3M7IHByZXZlbnRDYW5jZWwgPSB0cnVlIENhbid0IGZpbmQg
dmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQg
YmFja3dhcmQ6IGJlY29tZXMgZXJyb3JlZCBiZWZvcmUgcGlwaW5nIHZpYSBhYm9ydDsgcHJldmVu
dENhbmNlbCBvbWl0dGVkOyBmdWxmaWxsZWQgY2FuY2VsIHByb21pc2UgQ2FuJ3QgZmluZCB2YXJp
YWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNr
d2FyZDogYmVjb21lcyBlcnJvcmVkIGJlZm9yZSBwaXBpbmcgdmlhIGFib3J0OyBwcmV2ZW50Q2Fu
Y2VsIG9taXR0ZWQ7IHJlamVjdGVkIGNhbmNlbCBwcm9taXNlIENhbid0IGZpbmQgdmFyaWFibGU6
IFdyaXRhYmxlU3RyZWFtCi1GQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6
IGJlY29tZXMgZXJyb3JlZCBiZWZvcmUgcGlwaW5nIHZpYSBhYm9ydDsgcHJldmVudENhbmNlbCA9
IHRydWUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgRXJyb3JzIG11
c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogZXJyb3JpbmcgdmlhIHRoZSBjb250cm9sbGVyIGVy
cm9ycyBvbmNlIHBlbmRpbmcgd3JpdGUgY29tcGxldGVzIENhbid0IGZpbmQgdmFyaWFibGU6IFdy
aXRhYmxlU3RyZWFtCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvZXJyb3ItcHJvcGFnYXRpb24tYmFja3dhcmQu
ZGVkaWNhdGVkd29ya2VyLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Vycm9yLXByb3BhZ2F0aW9uLWJhY2t3YXJkLmRlZGlj
YXRlZHdvcmtlci5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NmUyZjRlY2Qy
ZDFlNjBhNWY5NjllNTQ2ZGQyMTFhMWRlOTRlNGI3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvZXJyb3ItcHJvcGFnYXRpb24tYmFja3dhcmQuZGVkaWNh
dGVkd29ya2VyLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi08IURPQ1RZUEUg
aHRtbD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTx0aXRsZT5lcnJvci1wcm9wYWdhdGlvbi1i
YWNrd2FyZC5qcyBkZWRpY2F0ZWQgd29ya2VyIHdyYXBwZXIgZmlsZTwvdGl0bGU+Ci0KLTxzY3Jp
cHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3Jj
PSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLQotPHNjcmlwdD4K
LSd1c2Ugc3RyaWN0JzsKLWZldGNoX3Rlc3RzX2Zyb21fd29ya2VyKG5ldyBXb3JrZXIoJ2Vycm9y
LXByb3BhZ2F0aW9uLWJhY2t3YXJkLmpzJykpOwotPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Vy
cm9yLXByb3BhZ2F0aW9uLWJhY2t3YXJkLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Vycm9yLXByb3BhZ2F0aW9uLWJhY2t3
YXJkLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRkNDg3Njg2NWNjNTVkODE0
MDI5MzBhODk1M2IxNDJhYTI4NWM4YWQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL3BpcGluZy9lcnJvci1wcm9wYWdhdGlvbi1iYWNrd2FyZC5odG1sCisrKyAvZGV2
L251bGwKQEAgLTEsMTEgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1
dGYtOCI+Ci08dGl0bGU+ZXJyb3ItcHJvcGFnYXRpb24tYmFja3dhcmQuanMgYnJvd3NlciBjb250
ZXh0IHdyYXBwZXIgZmlsZTwvdGl0bGU+Ci0KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
cmVwb3J0LmpzIj48L3NjcmlwdD4KLQotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0LXV0
aWxzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvcmVjb3JkaW5nLXN0
cmVhbXMuanMiPjwvc2NyaXB0PgotCi08c2NyaXB0IHNyYz0iZXJyb3ItcHJvcGFnYXRpb24tYmFj
a3dhcmQuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9lcnJvci1wcm9wYWdhdGlvbi1iYWNr
d2FyZC5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy9waXBpbmcvZXJyb3ItcHJvcGFnYXRpb24tYmFja3dhcmQuanMKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGRkYTU3NzRlMWM5YWU2OWM1MjIyYzJmYTM4YWMxY2ZiNmE2ZTdmZDQu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9lcnJvci1w
cm9wYWdhdGlvbi1iYWNrd2FyZC5qcworKysgL2Rldi9udWxsCkBAIC0xLDYzNSArMCwwIEBACi0n
dXNlIHN0cmljdCc7Ci0KLWlmIChzZWxmLmltcG9ydFNjcmlwdHMpIHsKLSAgc2VsZi5pbXBvcnRT
Y3JpcHRzKCcvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzJyk7Ci0gIHNlbGYuaW1wb3J0U2NyaXB0
cygnLi4vcmVzb3VyY2VzL3Rlc3QtdXRpbHMuanMnKTsKLSAgc2VsZi5pbXBvcnRTY3JpcHRzKCcu
Li9yZXNvdXJjZXMvcmVjb3JkaW5nLXN0cmVhbXMuanMnKTsKLX0KLQotY29uc3QgZXJyb3IxID0g
bmV3IEVycm9yKCdlcnJvcjEhJyk7Ci1lcnJvcjEubmFtZSA9ICdlcnJvcjEnOwotCi1jb25zdCBl
cnJvcjIgPSBuZXcgRXJyb3IoJ2Vycm9yMiEnKTsKLWVycm9yMi5uYW1lID0gJ2Vycm9yMic7Ci0K
LXByb21pc2VfdGVzdCh0ID0+IHsKLQotICBjb25zdCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3Ry
ZWFtKCk7Ci0KLSAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSh7Ci0gICAgc3Rh
cnQoKSB7Ci0gICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyb3IxKTsKLSAgICB9Ci0gIH0p
OwotCi0gIHJldHVybiBwcm9taXNlX3JlamVjdHModCwgZXJyb3IxLCBycy5waXBlVG8od3MpLCAn
cGlwZVRvIG11c3QgcmVqZWN0IHdpdGggdGhlIHNhbWUgZXJyb3InKQotICAgIC50aGVuKCgpID0+
IHsKLSAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMocnMuZXZlbnRzV2l0aG91dFB1bGxzLCBbJ2Nh
bmNlbCcsIGVycm9yMV0pOwotICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFtd
KTsKLSAgICB9KTsKLQotfSwgJ0Vycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IHN0
YXJ0cyBlcnJvcmVkOyBwcmV2ZW50Q2FuY2VsIG9taXR0ZWQ7IGZ1bGZpbGxlZCBjYW5jZWwgcHJv
bWlzZScpOwotCi1wcm9taXNlX3Rlc3QodCA9PiB7Ci0KLSAgY29uc3QgcnMgPSByZWNvcmRpbmdS
ZWFkYWJsZVN0cmVhbSgpOwotCi0gIGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0o
ewotICAgIHdyaXRlKCkgewotICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yMSk7Ci0g
ICAgfQotICB9KTsKLQotICBjb25zdCB3cml0ZXIgPSB3cy5nZXRXcml0ZXIoKTsKLQotICByZXR1
cm4gcHJvbWlzZV9yZWplY3RzKHQsIGVycm9yMSwgd3JpdGVyLndyaXRlKCdIZWxsbycpLCAnd3Jp
dGVyLndyaXRlKCkgbXVzdCByZWplY3Qgd2l0aCB0aGUgd3JpdGUgZXJyb3InKQotICAgIC50aGVu
KCgpID0+IHByb21pc2VfcmVqZWN0cyh0LCBlcnJvcjEsIHdyaXRlci5jbG9zZWQsICd3cml0ZXIu
Y2xvc2VkIG11c3QgcmVqZWN0IHdpdGggdGhlIHdyaXRlIGVycm9yJykpCi0gICAgLnRoZW4oKCkg
PT4gewotICAgICAgd3JpdGVyLnJlbGVhc2VMb2NrKCk7Ci0KLSAgICAgIHJldHVybiBwcm9taXNl
X3JlamVjdHModCwgZXJyb3IxLCBycy5waXBlVG8od3MpLCAncGlwZVRvIG11c3QgcmVqZWN0IHdp
dGggdGhlIHdyaXRlIGVycm9yJykKLSAgICAgICAgLnRoZW4oKCkgPT4gewotICAgICAgICAgIGFz
c2VydF9hcnJheV9lcXVhbHMocnMuZXZlbnRzV2l0aG91dFB1bGxzLCBbJ2NhbmNlbCcsIGVycm9y
MV0pOwotICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ3dyaXRlJywg
J0hlbGxvJ10pOwotICAgICAgICB9KTsKLSAgICB9KTsKLQotfSwgJ0Vycm9ycyBtdXN0IGJlIHBy
b3BhZ2F0ZWQgYmFja3dhcmQ6IGJlY29tZXMgZXJyb3JlZCBiZWZvcmUgcGlwaW5nIGR1ZSB0byB3
cml0ZTsgcHJldmVudENhbmNlbCBvbWl0dGVkOyAnICsKLSAgICdmdWxmaWxsZWQgY2FuY2VsIHBy
b21pc2UnKTsKLQotcHJvbWlzZV90ZXN0KHQgPT4gewotCi0gIGNvbnN0IHJzID0gcmVjb3JkaW5n
UmVhZGFibGVTdHJlYW0oewotICAgIGNhbmNlbCgpIHsKLSAgICAgIHRocm93IGVycm9yMjsKLSAg
ICB9Ci0gIH0pOwotCi0gIGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0oewotICAg
IHdyaXRlKCkgewotICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yMSk7Ci0gICAgfQot
ICB9KTsKLQotICBjb25zdCB3cml0ZXIgPSB3cy5nZXRXcml0ZXIoKTsKLQotICByZXR1cm4gcHJv
bWlzZV9yZWplY3RzKHQsIGVycm9yMSwgd3JpdGVyLndyaXRlKCdIZWxsbycpLCAnd3JpdGVyLndy
aXRlKCkgbXVzdCByZWplY3Qgd2l0aCB0aGUgd3JpdGUgZXJyb3InKQotICAgIC50aGVuKCgpID0+
IHByb21pc2VfcmVqZWN0cyh0LCBlcnJvcjEsIHdyaXRlci5jbG9zZWQsICd3cml0ZXIuY2xvc2Vk
IG11c3QgcmVqZWN0IHdpdGggdGhlIHdyaXRlIGVycm9yJykpCi0gICAgLnRoZW4oKCkgPT4gewot
ICAgICAgd3JpdGVyLnJlbGVhc2VMb2NrKCk7Ci0KLSAgICAgIHJldHVybiBwcm9taXNlX3JlamVj
dHModCwgZXJyb3IyLCBycy5waXBlVG8od3MpLCAncGlwZVRvIG11c3QgcmVqZWN0IHdpdGggdGhl
IGNhbmNlbCBlcnJvcicpCi0gICAgICAgIC50aGVuKCgpID0+IHsKLSAgICAgICAgICBhc3NlcnRf
YXJyYXlfZXF1YWxzKHJzLmV2ZW50c1dpdGhvdXRQdWxscywgWydjYW5jZWwnLCBlcnJvcjFdKTsK
LSAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWyd3cml0ZScsICdIZWxs
byddKTsKLSAgICAgICAgfSk7Ci0gICAgfSk7Ci0KLX0sICdFcnJvcnMgbXVzdCBiZSBwcm9wYWdh
dGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVycm9yZWQgYmVmb3JlIHBpcGluZyBkdWUgdG8gd3JpdGU7
IHByZXZlbnRDYW5jZWwgb21pdHRlZDsgcmVqZWN0ZWQgJyArCi0gICAnY2FuY2VsIHByb21pc2Un
KTsKLQotZm9yIChjb25zdCBmYWxzeSBvZiBbdW5kZWZpbmVkLCBudWxsLCBmYWxzZSwgKzAsIC0w
LCBOYU4sICcnXSkgewotICBjb25zdCBzdHJpbmdWZXJzaW9uID0gT2JqZWN0LmlzKGZhbHN5LCAt
MCkgPyAnLTAnIDogU3RyaW5nKGZhbHN5KTsKLQotICBwcm9taXNlX3Rlc3QodCA9PiB7Ci0KLSAg
ICBjb25zdCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKCk7Ci0KLSAgICBjb25zdCB3cyA9
IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKHsKLSAgICAgIHdyaXRlKCkgewotICAgICAgICByZXR1
cm4gUHJvbWlzZS5yZWplY3QoZXJyb3IxKTsKLSAgICAgIH0KLSAgICB9KTsKLQotICAgIGNvbnN0
IHdyaXRlciA9IHdzLmdldFdyaXRlcigpOwotCi0gICAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0
LCBlcnJvcjEsIHdyaXRlci53cml0ZSgnSGVsbG8nKSwgJ3dyaXRlci53cml0ZSgpIG11c3QgcmVq
ZWN0IHdpdGggdGhlIHdyaXRlIGVycm9yJykKLSAgICAgIC50aGVuKCgpID0+IHByb21pc2VfcmVq
ZWN0cyh0LCBlcnJvcjEsIHdyaXRlci5jbG9zZWQsICd3cml0ZXIuY2xvc2VkIG11c3QgcmVqZWN0
IHdpdGggdGhlIHdyaXRlIGVycm9yJykpCi0gICAgICAudGhlbigoKSA9PiB7Ci0gICAgICAgIHdy
aXRlci5yZWxlYXNlTG9jaygpOwotCi0gICAgICAgIHJldHVybiBwcm9taXNlX3JlamVjdHModCwg
ZXJyb3IxLCBycy5waXBlVG8od3MsIHsgcHJldmVudENhbmNlbDogZmFsc3kgfSksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ3BpcGVUbyBtdXN0IHJlamVjdCB3aXRoIHRoZSB3cml0
ZSBlcnJvcicpCi0gICAgICAgICAgLnRoZW4oKCkgPT4gewotICAgICAgICAgICAgYXNzZXJ0X2Fy
cmF5X2VxdWFscyhycy5ldmVudHNXaXRob3V0UHVsbHMsIFsnY2FuY2VsJywgZXJyb3IxXSk7Ci0g
ICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWyd3cml0ZScsICdIZWxs
byddKTsKLSAgICAgICAgICB9KTsKLSAgICAgIH0pOwotCi0gIH0sIGBFcnJvcnMgbXVzdCBiZSBw
cm9wYWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVycm9yZWQgYmVmb3JlIHBpcGluZyBkdWUgdG8g
d3JpdGU7IHByZXZlbnRDYW5jZWwgPSBgICsKLSAgICAgYCR7c3RyaW5nVmVyc2lvbn0gKGZhbHN5
KTsgZnVsZmlsbGVkIGNhbmNlbCBwcm9taXNlYCk7Ci19Ci0KLWZvciAoY29uc3QgdHJ1dGh5IG9m
IFt0cnVlLCAnYScsIDEsIFN5bWJvbCgpLCB7IH1dKSB7Ci0gIHByb21pc2VfdGVzdCh0ID0+IHsK
LQotICAgIGNvbnN0IHJzID0gcmVjb3JkaW5nUmVhZGFibGVTdHJlYW0oKTsKLQotICAgIGNvbnN0
IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0oewotICAgICAgd3JpdGUoKSB7Ci0gICAgICAg
IHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcjEpOwotICAgICAgfQotICAgIH0pOwotCi0gICAg
Y29uc3Qgd3JpdGVyID0gd3MuZ2V0V3JpdGVyKCk7Ci0KLSAgICByZXR1cm4gcHJvbWlzZV9yZWpl
Y3RzKHQsIGVycm9yMSwgd3JpdGVyLndyaXRlKCdIZWxsbycpLCAnd3JpdGVyLndyaXRlKCkgbXVz
dCByZWplY3Qgd2l0aCB0aGUgd3JpdGUgZXJyb3InKQotICAgICAgLnRoZW4oKCkgPT4gcHJvbWlz
ZV9yZWplY3RzKHQsIGVycm9yMSwgd3JpdGVyLmNsb3NlZCwgJ3dyaXRlci5jbG9zZWQgbXVzdCBy
ZWplY3Qgd2l0aCB0aGUgd3JpdGUgZXJyb3InKSkKLSAgICAgIC50aGVuKCgpID0+IHsKLSAgICAg
ICAgd3JpdGVyLnJlbGVhc2VMb2NrKCk7Ci0KLSAgICAgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0
cyh0LCBlcnJvcjEsIHJzLnBpcGVUbyh3cywgeyBwcmV2ZW50Q2FuY2VsOiB0cnV0aHkgfSksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BpcGVUbyBtdXN0IHJlamVjdCB3aXRoIHRo
ZSB3cml0ZSBlcnJvcicpCi0gICAgICAgICAgLnRoZW4oKCkgPT4gewotICAgICAgICAgICAgYXNz
ZXJ0X2FycmF5X2VxdWFscyhycy5ldmVudHNXaXRob3V0UHVsbHMsIFtdKTsKLSAgICAgICAgICAg
IGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ3dyaXRlJywgJ0hlbGxvJ10pOwotICAg
ICAgICAgIH0pOwotICAgICAgfSk7Ci0KLSAgfSwgYEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQg
YmFja3dhcmQ6IGJlY29tZXMgZXJyb3JlZCBiZWZvcmUgcGlwaW5nIGR1ZSB0byB3cml0ZTsgcHJl
dmVudENhbmNlbCA9IGAgKwotICAgICBgJHtTdHJpbmcodHJ1dGh5KX0gKHRydXRoeSlgKTsKLX0K
LQotcHJvbWlzZV90ZXN0KHQgPT4gewotCi0gIGNvbnN0IHJzID0gcmVjb3JkaW5nUmVhZGFibGVT
dHJlYW0oKTsKLQotICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKHsKLSAgICB3
cml0ZSgpIHsKLSAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcjEpOwotICAgIH0KLSAg
fSk7Ci0KLSAgY29uc3Qgd3JpdGVyID0gd3MuZ2V0V3JpdGVyKCk7Ci0KLSAgcmV0dXJuIHByb21p
c2VfcmVqZWN0cyh0LCBlcnJvcjEsIHdyaXRlci53cml0ZSgnSGVsbG8nKSwgJ3dyaXRlci53cml0
ZSgpIG11c3QgcmVqZWN0IHdpdGggdGhlIHdyaXRlIGVycm9yJykKLSAgICAudGhlbigoKSA9PiBw
cm9taXNlX3JlamVjdHModCwgZXJyb3IxLCB3cml0ZXIuY2xvc2VkLCAnd3JpdGVyLmNsb3NlZCBt
dXN0IHJlamVjdCB3aXRoIHRoZSB3cml0ZSBlcnJvcicpKQotICAgIC50aGVuKCgpID0+IHsKLSAg
ICAgIHdyaXRlci5yZWxlYXNlTG9jaygpOwotCi0gICAgICByZXR1cm4gcHJvbWlzZV9yZWplY3Rz
KHQsIGVycm9yMSwgcnMucGlwZVRvKHdzLCB7IHByZXZlbnRDYW5jZWw6IHRydWUsIHByZXZlbnRB
Ym9ydDogdHJ1ZSB9KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BpcGVUbyBtdXN0
IHJlamVjdCB3aXRoIHRoZSB3cml0ZSBlcnJvcicpCi0gICAgICAgIC50aGVuKCgpID0+IHsKLSAg
ICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJzLmV2ZW50c1dpdGhvdXRQdWxscywgW10pOwot
ICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ3dyaXRlJywgJ0hlbGxv
J10pOwotICAgICAgICB9KTsKLSAgICB9KTsKLQotfSwgJ0Vycm9ycyBtdXN0IGJlIHByb3BhZ2F0
ZWQgYmFja3dhcmQ6IGJlY29tZXMgZXJyb3JlZCBiZWZvcmUgcGlwaW5nIGR1ZSB0byB3cml0ZSwg
cHJldmVudENhbmNlbCA9IHRydWU7ICcgKwotICAgJ3ByZXZlbnRBYm9ydCA9IHRydWUnKTsKLQot
cHJvbWlzZV90ZXN0KHQgPT4gewotCi0gIGNvbnN0IHJzID0gcmVjb3JkaW5nUmVhZGFibGVTdHJl
YW0oKTsKLQotICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKHsKLSAgICB3cml0
ZSgpIHsKLSAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcjEpOwotICAgIH0KLSAgfSk7
Ci0KLSAgY29uc3Qgd3JpdGVyID0gd3MuZ2V0V3JpdGVyKCk7Ci0KLSAgcmV0dXJuIHByb21pc2Vf
cmVqZWN0cyh0LCBlcnJvcjEsIHdyaXRlci53cml0ZSgnSGVsbG8nKSwgJ3dyaXRlci53cml0ZSgp
IG11c3QgcmVqZWN0IHdpdGggdGhlIHdyaXRlIGVycm9yJykKLSAgICAudGhlbigoKSA9PiBwcm9t
aXNlX3JlamVjdHModCwgZXJyb3IxLCB3cml0ZXIuY2xvc2VkLCAnd3JpdGVyLmNsb3NlZCBtdXN0
IHJlamVjdCB3aXRoIHRoZSB3cml0ZSBlcnJvcicpKQotICAgIC50aGVuKCgpID0+IHsKLSAgICAg
IHdyaXRlci5yZWxlYXNlTG9jaygpOwotCi0gICAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHQs
IGVycm9yMSwgcnMucGlwZVRvKHdzLCB7IHByZXZlbnRDYW5jZWw6IHRydWUsIHByZXZlbnRBYm9y
dDogdHJ1ZSwgcHJldmVudENsb3NlOiB0cnVlIH0pLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAncGlwZVRvIG11c3QgcmVqZWN0IHdpdGggdGhlIHdyaXRlIGVycm9yJykKLSAgICAgICAg
LnRoZW4oKCkgPT4gewotICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMocnMuZXZlbnRzV2l0
aG91dFB1bGxzLCBbXSk7Ci0gICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMs
IFsnd3JpdGUnLCAnSGVsbG8nXSk7Ci0gICAgICAgIH0pOwotICAgIH0pOwotCi19LCAnRXJyb3Jz
IG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogYmVjb21lcyBlcnJvcmVkIGJlZm9yZSBwaXBp
bmcgZHVlIHRvIHdyaXRlOyBwcmV2ZW50Q2FuY2VsID0gdHJ1ZSwgJyArCi0gICAncHJldmVudEFi
b3J0ID0gdHJ1ZSwgcHJldmVudENsb3NlID0gdHJ1ZScpOwotCi1wcm9taXNlX3Rlc3QodCA9PiB7
Ci0KLSAgY29uc3QgcnMgPSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoY29u
dHJvbGxlcikgewotICAgICAgY29udHJvbGxlci5lbnF1ZXVlKCdIZWxsbycpOwotICAgIH0KLSAg
fSk7Ci0KLSAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSh7Ci0gICAgd3JpdGUo
KSB7Ci0gICAgICB0aHJvdyBlcnJvcjE7Ci0gICAgfQotICB9KTsKLQotICByZXR1cm4gcHJvbWlz
ZV9yZWplY3RzKHQsIGVycm9yMSwgcnMucGlwZVRvKHdzKSwgJ3BpcGVUbyBtdXN0IHJlamVjdCB3
aXRoIHRoZSBzYW1lIGVycm9yJykudGhlbigoKSA9PiB7Ci0gICAgYXNzZXJ0X2FycmF5X2VxdWFs
cyhycy5ldmVudHNXaXRob3V0UHVsbHMsIFsnY2FuY2VsJywgZXJyb3IxXSk7Ci0gICAgYXNzZXJ0
X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsnd3JpdGUnLCAnSGVsbG8nXSk7Ci0gIH0pOwotCi19
LCAnRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogYmVjb21lcyBlcnJvcmVkIGR1
cmluZyBwaXBpbmcgZHVlIHRvIHdyaXRlOyBwcmV2ZW50Q2FuY2VsIG9taXR0ZWQ7IGZ1bGZpbGxl
ZCAnICsKLSAgICdjYW5jZWwgcHJvbWlzZScpOwotCi1wcm9taXNlX3Rlc3QodCA9PiB7Ci0KLSAg
Y29uc3QgcnMgPSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoY29udHJvbGxl
cikgewotICAgICAgY29udHJvbGxlci5lbnF1ZXVlKCdIZWxsbycpOwotICAgIH0sCi0gICAgY2Fu
Y2VsKCkgewotICAgICAgdGhyb3cgZXJyb3IyOwotICAgIH0KLSAgfSk7Ci0KLSAgY29uc3Qgd3Mg
PSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSh7Ci0gICAgd3JpdGUoKSB7Ci0gICAgICB0aHJvdyBl
cnJvcjE7Ci0gICAgfQotICB9KTsKLQotICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHQsIGVycm9y
MiwgcnMucGlwZVRvKHdzKSwgJ3BpcGVUbyBtdXN0IHJlamVjdCB3aXRoIHRoZSBjYW5jZWwgZXJy
b3InKS50aGVuKCgpID0+IHsKLSAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJzLmV2ZW50c1dpdGhv
dXRQdWxscywgWydjYW5jZWwnLCBlcnJvcjFdKTsKLSAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdz
LmV2ZW50cywgWyd3cml0ZScsICdIZWxsbyddKTsKLSAgfSk7Ci0KLX0sICdFcnJvcnMgbXVzdCBi
ZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVycm9yZWQgZHVyaW5nIHBpcGluZyBkdWUg
dG8gd3JpdGU7IHByZXZlbnRDYW5jZWwgb21pdHRlZDsgcmVqZWN0ZWQgJyArCi0gICAnY2FuY2Vs
IHByb21pc2UnKTsKLQotcHJvbWlzZV90ZXN0KHQgPT4gewotCi0gIGNvbnN0IHJzID0gcmVjb3Jk
aW5nUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGNvbnRyb2xsZXIpIHsKLSAgICAgIGNvbnRy
b2xsZXIuZW5xdWV1ZSgnSGVsbG8nKTsKLSAgICB9Ci0gIH0pOwotCi0gIGNvbnN0IHdzID0gcmVj
b3JkaW5nV3JpdGFibGVTdHJlYW0oewotICAgIHdyaXRlKCkgewotICAgICAgdGhyb3cgZXJyb3Ix
OwotICAgIH0KLSAgfSk7Ci0KLSAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0LCBlcnJvcjEsIHJz
LnBpcGVUbyh3cywgeyBwcmV2ZW50Q2FuY2VsOiB0cnVlIH0pLCAncGlwZVRvIG11c3QgcmVqZWN0
IHdpdGggdGhlIHNhbWUgZXJyb3InKQotICAudGhlbigoKSA9PiB7Ci0gICAgYXNzZXJ0X2FycmF5
X2VxdWFscyhycy5ldmVudHNXaXRob3V0UHVsbHMsIFtdKTsKLSAgICBhc3NlcnRfYXJyYXlfZXF1
YWxzKHdzLmV2ZW50cywgWyd3cml0ZScsICdIZWxsbyddKTsKLSAgfSk7Ci0KLX0sICdFcnJvcnMg
bXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVycm9yZWQgZHVyaW5nIHBpcGlu
ZyBkdWUgdG8gd3JpdGU7IHByZXZlbnRDYW5jZWwgPSB0cnVlJyk7Ci0KLXByb21pc2VfdGVzdCh0
ID0+IHsKLQotICBjb25zdCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFy
dChjb250cm9sbGVyKSB7Ci0gICAgICBjb250cm9sbGVyLmVucXVldWUoJ2EnKTsKLSAgICAgIGNv
bnRyb2xsZXIuZW5xdWV1ZSgnYicpOwotICAgICAgY29udHJvbGxlci5lbnF1ZXVlKCdjJyk7Ci0g
ICAgfQotICB9KTsKLQotICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKHsKLSAg
ICB3cml0ZSgpIHsKLSAgICAgIGlmICh3cy5ldmVudHMubGVuZ3RoID4gMikgewotICAgICAgICBy
ZXR1cm4gZGVsYXkoMCkudGhlbigoKSA9PiB7Ci0gICAgICAgICAgdGhyb3cgZXJyb3IxOwotICAg
ICAgICB9KTsKLSAgICAgIH0KLSAgICAgIHJldHVybiB1bmRlZmluZWQ7Ci0gICAgfQotICB9KTsK
LQotICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHQsIGVycm9yMSwgcnMucGlwZVRvKHdzKSwgJ3Bp
cGVUbyBtdXN0IHJlamVjdCB3aXRoIHRoZSBzYW1lIGVycm9yJykudGhlbigoKSA9PiB7Ci0gICAg
YXNzZXJ0X2FycmF5X2VxdWFscyhycy5ldmVudHNXaXRob3V0UHVsbHMsIFsnY2FuY2VsJywgZXJy
b3IxXSk7Ci0gICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsnd3JpdGUnLCAnYScs
ICd3cml0ZScsICdiJ10pOwotICB9KTsKLQotfSwgJ0Vycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQg
YmFja3dhcmQ6IGJlY29tZXMgZXJyb3JlZCBkdXJpbmcgcGlwaW5nIGR1ZSB0byB3cml0ZSwgYnV0
IGFzeW5jOyBwcmV2ZW50Q2FuY2VsID0gJyArCi0gICAnZmFsc2U7IGZ1bGZpbGxlZCBjYW5jZWwg
cHJvbWlzZScpOwotCi1wcm9taXNlX3Rlc3QodCA9PiB7Ci0KLSAgY29uc3QgcnMgPSByZWNvcmRp
bmdSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoY29udHJvbGxlcikgewotICAgICAgY29udHJv
bGxlci5lbnF1ZXVlKCdhJyk7Ci0gICAgICBjb250cm9sbGVyLmVucXVldWUoJ2InKTsKLSAgICAg
IGNvbnRyb2xsZXIuZW5xdWV1ZSgnYycpOwotICAgIH0sCi0gICAgY2FuY2VsKCkgewotICAgICAg
dGhyb3cgZXJyb3IyOwotICAgIH0KLSAgfSk7Ci0KLSAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0
YWJsZVN0cmVhbSh7Ci0gICAgd3JpdGUoKSB7Ci0gICAgICBpZiAod3MuZXZlbnRzLmxlbmd0aCA+
IDIpIHsKLSAgICAgICAgcmV0dXJuIGRlbGF5KDApLnRoZW4oKCkgPT4gewotICAgICAgICAgIHRo
cm93IGVycm9yMTsKLSAgICAgICAgfSk7Ci0gICAgICB9Ci0gICAgICByZXR1cm4gdW5kZWZpbmVk
OwotICAgIH0KLSAgfSk7Ci0KLSAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0LCBlcnJvcjIsIHJz
LnBpcGVUbyh3cyksICdwaXBlVG8gbXVzdCByZWplY3Qgd2l0aCB0aGUgY2FuY2VsIGVycm9yJyku
dGhlbigoKSA9PiB7Ci0gICAgYXNzZXJ0X2FycmF5X2VxdWFscyhycy5ldmVudHNXaXRob3V0UHVs
bHMsIFsnY2FuY2VsJywgZXJyb3IxXSk7Ci0gICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVu
dHMsIFsnd3JpdGUnLCAnYScsICd3cml0ZScsICdiJ10pOwotICB9KTsKLQotfSwgJ0Vycm9ycyBt
dXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGJlY29tZXMgZXJyb3JlZCBkdXJpbmcgcGlwaW5n
IGR1ZSB0byB3cml0ZSwgYnV0IGFzeW5jOyBwcmV2ZW50Q2FuY2VsID0gJyArCi0gICAnZmFsc2U7
IHJlamVjdGVkIGNhbmNlbCBwcm9taXNlJyk7Ci0KLXByb21pc2VfdGVzdCh0ID0+IHsKLQotICBj
b25zdCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjb250cm9sbGVy
KSB7Ci0gICAgICBjb250cm9sbGVyLmVucXVldWUoJ2EnKTsKLSAgICAgIGNvbnRyb2xsZXIuZW5x
dWV1ZSgnYicpOwotICAgICAgY29udHJvbGxlci5lbnF1ZXVlKCdjJyk7Ci0gICAgfQotICB9KTsK
LQotICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKHsKLSAgICB3cml0ZSgpIHsK
LSAgICAgIGlmICh3cy5ldmVudHMubGVuZ3RoID4gMikgewotICAgICAgICByZXR1cm4gZGVsYXko
MCkudGhlbigoKSA9PiB7Ci0gICAgICAgICAgdGhyb3cgZXJyb3IxOwotICAgICAgICB9KTsKLSAg
ICAgIH0KLSAgICAgIHJldHVybiB1bmRlZmluZWQ7Ci0gICAgfQotICB9KTsKLQotICByZXR1cm4g
cHJvbWlzZV9yZWplY3RzKHQsIGVycm9yMSwgcnMucGlwZVRvKHdzLCB7IHByZXZlbnRDYW5jZWw6
IHRydWUgfSksICdwaXBlVG8gbXVzdCByZWplY3Qgd2l0aCB0aGUgc2FtZSBlcnJvcicpCi0gIC50
aGVuKCgpID0+IHsKLSAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJzLmV2ZW50c1dpdGhvdXRQdWxs
cywgW10pOwotICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ3dyaXRlJywgJ2En
LCAnd3JpdGUnLCAnYiddKTsKLSAgfSk7Ci0KLX0sICdFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVk
IGJhY2t3YXJkOiBiZWNvbWVzIGVycm9yZWQgZHVyaW5nIHBpcGluZyBkdWUgdG8gd3JpdGUsIGJ1
dCBhc3luYzsgcHJldmVudENhbmNlbCA9IHRydWUnKTsKLQotcHJvbWlzZV90ZXN0KHQgPT4gewot
Ci0gIGNvbnN0IHJzID0gcmVjb3JkaW5nUmVhZGFibGVTdHJlYW0oKTsKLQotICBjb25zdCB3cyA9
IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKCk7Ci0KLSAgY29uc3QgcGlwZVByb21pc2UgPSBwcm9t
aXNlX3JlamVjdHModCwgZXJyb3IxLCBycy5waXBlVG8od3MpLCAncGlwZVRvIG11c3QgcmVqZWN0
IHdpdGggdGhlIHNhbWUgZXJyb3InKTsKLQotICBzZXRUaW1lb3V0KCgpID0+IHdzLmNvbnRyb2xs
ZXIuZXJyb3IoZXJyb3IxKSwgMTApOwotCi0gIHJldHVybiBwaXBlUHJvbWlzZS50aGVuKCgpID0+
IHsKLSAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJzLmV2ZW50c1dpdGhvdXRQdWxscywgWydjYW5j
ZWwnLCBlcnJvcjFdKTsKLSAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgW10pOwot
ICB9KTsKLQotfSwgJ0Vycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGJlY29tZXMg
ZXJyb3JlZCBhZnRlciBwaXBpbmc7IHByZXZlbnRDYW5jZWwgb21pdHRlZDsgZnVsZmlsbGVkIGNh
bmNlbCBwcm9taXNlJyk7Ci0KLXByb21pc2VfdGVzdCh0ID0+IHsKLQotICBjb25zdCBycyA9IHJl
Y29yZGluZ1JlYWRhYmxlU3RyZWFtKHsKLSAgICBjYW5jZWwoKSB7Ci0gICAgICB0aHJvdyBlcnJv
cjI7Ci0gICAgfQotICB9KTsKLQotICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFt
KCk7Ci0KLSAgY29uc3QgcGlwZVByb21pc2UgPSBwcm9taXNlX3JlamVjdHModCwgZXJyb3IyLCBy
cy5waXBlVG8od3MpLCAncGlwZVRvIG11c3QgcmVqZWN0IHdpdGggdGhlIGNhbmNlbCBlcnJvcicp
OwotCi0gIHNldFRpbWVvdXQoKCkgPT4gd3MuY29udHJvbGxlci5lcnJvcihlcnJvcjEpLCAxMCk7
Ci0KLSAgcmV0dXJuIHBpcGVQcm9taXNlLnRoZW4oKCkgPT4gewotICAgIGFzc2VydF9hcnJheV9l
cXVhbHMocnMuZXZlbnRzV2l0aG91dFB1bGxzLCBbJ2NhbmNlbCcsIGVycm9yMV0pOwotICAgIGFz
c2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbXSk7Ci0gIH0pOwotCi19LCAnRXJyb3JzIG11
c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogYmVjb21lcyBlcnJvcmVkIGFmdGVyIHBpcGluZzsg
cHJldmVudENhbmNlbCBvbWl0dGVkOyByZWplY3RlZCBjYW5jZWwgcHJvbWlzZScpOwotCi1wcm9t
aXNlX3Rlc3QodCA9PiB7Ci0KLSAgY29uc3QgcnMgPSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSgp
OwotCi0gIGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0oKTsKLQotICBjb25zdCBw
aXBlUHJvbWlzZSA9IHByb21pc2VfcmVqZWN0cyh0LCBlcnJvcjEsIHJzLnBpcGVUbyh3cywgeyBw
cmV2ZW50Q2FuY2VsOiB0cnVlIH0pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAncGlwZVRvIG11c3QgcmVqZWN0IHdpdGggdGhlIHNhbWUgZXJyb3InKTsKLQotICBzZXRU
aW1lb3V0KCgpID0+IHdzLmNvbnRyb2xsZXIuZXJyb3IoZXJyb3IxKSwgMTApOwotCi0gIHJldHVy
biBwaXBlUHJvbWlzZS50aGVuKCgpID0+IHsKLSAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJzLmV2
ZW50c1dpdGhvdXRQdWxscywgW10pOwotICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRz
LCBbXSk7Ci0gIH0pOwotCi19LCAnRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDog
YmVjb21lcyBlcnJvcmVkIGFmdGVyIHBpcGluZzsgcHJldmVudENhbmNlbCA9IHRydWUnKTsKLQot
cHJvbWlzZV90ZXN0KHQgPT4gewotCi0gIGNvbnN0IHJzID0gcmVjb3JkaW5nUmVhZGFibGVTdHJl
YW0oewotICAgIHN0YXJ0KGNvbnRyb2xsZXIpIHsKLSAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgn
YScpOwotICAgICAgY29udHJvbGxlci5lbnF1ZXVlKCdiJyk7Ci0gICAgICBjb250cm9sbGVyLmVu
cXVldWUoJ2MnKTsKLSAgICAgIGNvbnRyb2xsZXIuY2xvc2UoKTsKLSAgICB9Ci0gIH0pOwotCi0g
IGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0oewotICAgIHdyaXRlKGNodW5rKSB7
Ci0gICAgICBpZiAoY2h1bmsgPT09ICdjJykgewotICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWpl
Y3QoZXJyb3IxKTsKLSAgICAgIH0KLSAgICAgIHJldHVybiB1bmRlZmluZWQ7Ci0gICAgfQotICB9
KTsKLQotICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHQsIGVycm9yMSwgcnMucGlwZVRvKHdzKSwg
J3BpcGVUbyBtdXN0IHJlamVjdCB3aXRoIHRoZSBzYW1lIGVycm9yJykudGhlbigoKSA9PiB7Ci0g
ICAgYXNzZXJ0X2FycmF5X2VxdWFscyhycy5ldmVudHNXaXRob3V0UHVsbHMsIFtdKTsKLSAgICBh
c3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWyd3cml0ZScsICdhJywgJ3dyaXRlJywgJ2In
LCAnd3JpdGUnLCAnYyddKTsKLSAgfSk7Ci0KLX0sICdFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVk
IGJhY2t3YXJkOiBiZWNvbWVzIGVycm9yZWQgYWZ0ZXIgcGlwaW5nIGR1ZSB0byBsYXN0IHdyaXRl
OyBzb3VyY2UgaXMgY2xvc2VkOyAnICsKLSAgICdwcmV2ZW50Q2FuY2VsIG9taXR0ZWQgKGJ1dCBj
YW5jZWwgaXMgbmV2ZXIgY2FsbGVkKScpOwotCi1wcm9taXNlX3Rlc3QodCA9PiB7Ci0KLSAgY29u
c3QgcnMgPSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoY29udHJvbGxlcikg
ewotICAgICAgY29udHJvbGxlci5lbnF1ZXVlKCdhJyk7Ci0gICAgICBjb250cm9sbGVyLmVucXVl
dWUoJ2InKTsKLSAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYycpOwotICAgICAgY29udHJvbGxl
ci5jbG9zZSgpOwotICAgIH0KLSAgfSk7Ci0KLSAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJs
ZVN0cmVhbSh7Ci0gICAgd3JpdGUoY2h1bmspIHsKLSAgICAgIGlmIChjaHVuayA9PT0gJ2MnKSB7
Ci0gICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcjEpOwotICAgICAgfQotICAgICAg
cmV0dXJuIHVuZGVmaW5lZDsKLSAgICB9Ci0gIH0pOwotCi0gIHJldHVybiBwcm9taXNlX3JlamVj
dHModCwgZXJyb3IxLCBycy5waXBlVG8od3MsIHsgcHJldmVudENhbmNlbDogdHJ1ZSB9KSwgJ3Bp
cGVUbyBtdXN0IHJlamVjdCB3aXRoIHRoZSBzYW1lIGVycm9yJykKLSAgICAudGhlbigoKSA9PiB7
Ci0gICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJzLmV2ZW50c1dpdGhvdXRQdWxscywgW10pOwot
ICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsnd3JpdGUnLCAnYScsICd3cml0
ZScsICdiJywgJ3dyaXRlJywgJ2MnXSk7Ci0gICAgfSk7Ci0KLX0sICdFcnJvcnMgbXVzdCBiZSBw
cm9wYWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVycm9yZWQgYWZ0ZXIgcGlwaW5nIGR1ZSB0byBs
YXN0IHdyaXRlOyBzb3VyY2UgaXMgY2xvc2VkOyAnICsKLSAgICdwcmV2ZW50Q2FuY2VsID0gdHJ1
ZScpOwotCi1wcm9taXNlX3Rlc3QodCA9PiB7Ci0KLSAgY29uc3QgcnMgPSByZWNvcmRpbmdSZWFk
YWJsZVN0cmVhbSgpOwotCi0gIGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0odW5k
ZWZpbmVkLCBuZXcgQ291bnRRdWV1aW5nU3RyYXRlZ3koeyBoaWdoV2F0ZXJNYXJrOiAwIH0pKTsK
LQotICBjb25zdCBwaXBlUHJvbWlzZSA9IHByb21pc2VfcmVqZWN0cyh0LCBlcnJvcjEsIHJzLnBp
cGVUbyh3cyksICdwaXBlVG8gbXVzdCByZWplY3Qgd2l0aCB0aGUgc2FtZSBlcnJvcicpOwotCi0g
IHNldFRpbWVvdXQoKCkgPT4gd3MuY29udHJvbGxlci5lcnJvcihlcnJvcjEpLCAxMCk7Ci0KLSAg
cmV0dXJuIHBpcGVQcm9taXNlLnRoZW4oKCkgPT4gewotICAgIGFzc2VydF9hcnJheV9lcXVhbHMo
cnMuZXZlbnRzV2l0aG91dFB1bGxzLCBbJ2NhbmNlbCcsIGVycm9yMV0pOwotICAgIGFzc2VydF9h
cnJheV9lcXVhbHMod3MuZXZlbnRzLCBbXSk7Ci0gIH0pOwotCi19LCAnRXJyb3JzIG11c3QgYmUg
cHJvcGFnYXRlZCBiYWNrd2FyZDogYmVjb21lcyBlcnJvcmVkIGFmdGVyIHBpcGluZzsgZGVzdCBu
ZXZlciBkZXNpcmVzIGNodW5rczsgcHJldmVudENhbmNlbCA9ICcgKwotICAgJ2ZhbHNlOyBmdWxm
aWxsZWQgY2FuY2VsIHByb21pc2UnKTsKLQotcHJvbWlzZV90ZXN0KHQgPT4gewotCi0gIGNvbnN0
IHJzID0gcmVjb3JkaW5nUmVhZGFibGVTdHJlYW0oewotICAgIGNhbmNlbCgpIHsKLSAgICAgIHRo
cm93IGVycm9yMjsKLSAgICB9Ci0gIH0pOwotCi0gIGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFi
bGVTdHJlYW0odW5kZWZpbmVkLCBuZXcgQ291bnRRdWV1aW5nU3RyYXRlZ3koeyBoaWdoV2F0ZXJN
YXJrOiAwIH0pKTsKLQotICBjb25zdCBwaXBlUHJvbWlzZSA9IHByb21pc2VfcmVqZWN0cyh0LCBl
cnJvcjIsIHJzLnBpcGVUbyh3cyksICdwaXBlVG8gbXVzdCByZWplY3Qgd2l0aCB0aGUgY2FuY2Vs
IGVycm9yJyk7Ci0KLSAgc2V0VGltZW91dCgoKSA9PiB3cy5jb250cm9sbGVyLmVycm9yKGVycm9y
MSksIDEwKTsKLQotICByZXR1cm4gcGlwZVByb21pc2UudGhlbigoKSA9PiB7Ci0gICAgYXNzZXJ0
X2FycmF5X2VxdWFscyhycy5ldmVudHNXaXRob3V0UHVsbHMsIFsnY2FuY2VsJywgZXJyb3IxXSk7
Ci0gICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFtdKTsKLSAgfSk7Ci0KLX0sICdF
cnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVycm9yZWQgYWZ0ZXIg
cGlwaW5nOyBkZXN0IG5ldmVyIGRlc2lyZXMgY2h1bmtzOyBwcmV2ZW50Q2FuY2VsID0gJyArCi0g
ICAnZmFsc2U7IHJlamVjdGVkIGNhbmNlbCBwcm9taXNlJyk7Ci0KLXByb21pc2VfdGVzdCh0ID0+
IHsKLQotICBjb25zdCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKCk7Ci0KLSAgY29uc3Qg
d3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSh1bmRlZmluZWQsIG5ldyBDb3VudFF1ZXVpbmdT
dHJhdGVneSh7IGhpZ2hXYXRlck1hcms6IDAgfSkpOwotCi0gIGNvbnN0IHBpcGVQcm9taXNlID0g
cHJvbWlzZV9yZWplY3RzKHQsIGVycm9yMSwgcnMucGlwZVRvKHdzLCB7IHByZXZlbnRDYW5jZWw6
IHRydWUgfSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwaXBlVG8g
bXVzdCByZWplY3Qgd2l0aCB0aGUgc2FtZSBlcnJvcicpOwotCi0gIHNldFRpbWVvdXQoKCkgPT4g
d3MuY29udHJvbGxlci5lcnJvcihlcnJvcjEpLCAxMCk7Ci0KLSAgcmV0dXJuIHBpcGVQcm9taXNl
LnRoZW4oKCkgPT4gewotICAgIGFzc2VydF9hcnJheV9lcXVhbHMocnMuZXZlbnRzV2l0aG91dFB1
bGxzLCBbXSk7Ci0gICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFtdKTsKLSAgfSk7
Ci0KLX0sICdFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVycm9y
ZWQgYWZ0ZXIgcGlwaW5nOyBkZXN0IG5ldmVyIGRlc2lyZXMgY2h1bmtzOyBwcmV2ZW50Q2FuY2Vs
ID0gJyArCi0gICAndHJ1ZScpOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotCi0gIGNvbnN0IHJz
ID0gcmVjb3JkaW5nUmVhZGFibGVTdHJlYW0oKTsKLQotICBjb25zdCB3cyA9IHJlY29yZGluZ1dy
aXRhYmxlU3RyZWFtKCk7Ci0KLSAgd3MuYWJvcnQoZXJyb3IxKTsKLQotICByZXR1cm4gcnMucGlw
ZVRvKHdzKS50aGVuKAotICAgICgpID0+IGFzc2VydF91bnJlYWNoZWQoJ3RoZSBwcm9taXNlIG11
c3Qgbm90IGZ1bGZpbGwnKSwKLSAgICBlcnIgPT4gewotICAgICAgYXNzZXJ0X2VxdWFscyhlcnIs
IGVycm9yMSwgJ3RoZSBwcm9taXNlIG11c3QgcmVqZWN0IHdpdGggZXJyb3IxJyk7Ci0KLSAgICAg
IGFzc2VydF9hcnJheV9lcXVhbHMocnMuZXZlbnRzV2l0aG91dFB1bGxzLCBbJ2NhbmNlbCcsIGVy
cl0pOwotICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsnYWJvcnQnLCBlcnJv
cjFdKTsKLSAgICB9Ci0gICk7Ci0KLX0sICdFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3
YXJkOiBiZWNvbWVzIGVycm9yZWQgYmVmb3JlIHBpcGluZyB2aWEgYWJvcnQ7IHByZXZlbnRDYW5j
ZWwgb21pdHRlZDsgZnVsZmlsbGVkICcgKwotICAgJ2NhbmNlbCBwcm9taXNlJyk7Ci0KLXByb21p
c2VfdGVzdCh0ID0+IHsKLQotICBjb25zdCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKHsK
LSAgICBjYW5jZWwoKSB7Ci0gICAgICB0aHJvdyBlcnJvcjI7Ci0gICAgfQotICB9KTsKLQotICBj
b25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKCk7Ci0KLSAgd3MuYWJvcnQoZXJyb3Ix
KTsKLQotICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHQsIGVycm9yMiwgcnMucGlwZVRvKHdzKSwg
J3BpcGVUbyBtdXN0IHJlamVjdCB3aXRoIHRoZSBjYW5jZWwgZXJyb3InKQotICAgIC50aGVuKCgp
ID0+IHsKLSAgICAgIHJldHVybiB3cy5nZXRXcml0ZXIoKS5jbG9zZWQudGhlbigKLSAgICAgICAg
KCkgPT4gYXNzZXJ0X3VucmVhY2hlZCgndGhlIHByb21pc2UgbXVzdCBub3QgZnVsZmlsbCcpLAot
ICAgICAgICBlcnIgPT4gewotICAgICAgICAgIGFzc2VydF9lcXVhbHMoZXJyLCBlcnJvcjEsICd0
aGUgcHJvbWlzZSBtdXN0IHJlamVjdCB3aXRoIGVycm9yMScpOwotCi0gICAgICAgICAgYXNzZXJ0
X2FycmF5X2VxdWFscyhycy5ldmVudHNXaXRob3V0UHVsbHMsIFsnY2FuY2VsJywgZXJyXSk7Ci0g
ICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsnYWJvcnQnLCBlcnJvcjFd
KTsKLSAgICAgICAgfQotICAgICAgKTsKLSAgICB9KTsKLQotfSwgJ0Vycm9ycyBtdXN0IGJlIHBy
b3BhZ2F0ZWQgYmFja3dhcmQ6IGJlY29tZXMgZXJyb3JlZCBiZWZvcmUgcGlwaW5nIHZpYSBhYm9y
dDsgcHJldmVudENhbmNlbCBvbWl0dGVkOyByZWplY3RlZCAnICsKLSAgICdjYW5jZWwgcHJvbWlz
ZScpOwotCi1wcm9taXNlX3Rlc3QodCA9PiB7Ci0KLSAgY29uc3QgcnMgPSByZWNvcmRpbmdSZWFk
YWJsZVN0cmVhbSgpOwotCi0gIGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0oKTsK
LQotICB3cy5hYm9ydChlcnJvcjEpOwotCi0gIHJldHVybiBwcm9taXNlX3JlamVjdHModCwgZXJy
b3IxLCBycy5waXBlVG8od3MsIHsgcHJldmVudENhbmNlbDogdHJ1ZSB9KSkudGhlbigoKSA9PiB7
Ci0gICAgYXNzZXJ0X2FycmF5X2VxdWFscyhycy5ldmVudHNXaXRob3V0UHVsbHMsIFtdKTsKLSAg
ICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWydhYm9ydCcsIGVycm9yMV0pOwotICB9
KTsKLQotfSwgJ0Vycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGJlY29tZXMgZXJy
b3JlZCBiZWZvcmUgcGlwaW5nIHZpYSBhYm9ydDsgcHJldmVudENhbmNlbCA9IHRydWUnKTsKLQot
cHJvbWlzZV90ZXN0KHQgPT4gewotCi0gIGNvbnN0IHJzID0gcmVjb3JkaW5nUmVhZGFibGVTdHJl
YW0oKTsKLQotICBsZXQgcmVzb2x2ZVdyaXRlQ2FsbGVkOwotICBjb25zdCB3cml0ZUNhbGxlZFBy
b21pc2UgPSBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKLSAgICByZXNvbHZlV3JpdGVDYWxsZWQg
PSByZXNvbHZlOwotICB9KTsKLQotICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFt
KHsKLSAgICB3cml0ZSgpIHsKLSAgICAgIHJlc29sdmVXcml0ZUNhbGxlZCgpOwotICAgICAgcmV0
dXJuIGZsdXNoQXN5bmNFdmVudHMoKTsKLSAgICB9Ci0gIH0pOwotCi0gIGNvbnN0IHBpcGVQcm9t
aXNlID0gcnMucGlwZVRvKHdzKTsKLQotICBycy5jb250cm9sbGVyLmVucXVldWUoJ2EnKTsKLQot
ICByZXR1cm4gd3JpdGVDYWxsZWRQcm9taXNlLnRoZW4oKCkgPT4gewotICAgIHdzLmNvbnRyb2xs
ZXIuZXJyb3IoZXJyb3IxKTsKLQotICAgIHJldHVybiBwcm9taXNlX3JlamVjdHModCwgZXJyb3Ix
LCBwaXBlUHJvbWlzZSk7Ci0gIH0pLnRoZW4oKCkgPT4gewotICAgIGFzc2VydF9hcnJheV9lcXVh
bHMocnMuZXZlbnRzV2l0aG91dFB1bGxzLCBbJ2NhbmNlbCcsIGVycm9yMV0pOwotICAgIGFzc2Vy
dF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ3dyaXRlJywgJ2EnXSk7Ci0gIH0pOwotCi19LCAn
RXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogZXJyb3JpbmcgdmlhIHRoZSBjb250
cm9sbGVyIGVycm9ycyBvbmNlIHBlbmRpbmcgd3JpdGUgY29tcGxldGVzJyk7Ci0KLWRvbmUoKTsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy9waXBpbmcvZXJyb3ItcHJvcGFnYXRpb24tYmFja3dhcmQuc2VydmljZXdvcmtlci5o
dHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Vycm9yLXByb3BhZ2F0aW9uLWJhY2t3YXJkLnNlcnZpY2V3
b3JrZXIuaHR0cHMtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBm
NDk5OGEwZmQ3YTBhZWRiMDM0NzAyYjg1OTI0NTcyYjFmZWFkYWVmLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvZXJyb3ItcHJvcGFnYXRpb24tYmFja3dh
cmQuc2VydmljZXdvcmtlci5odHRwcy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwz
OCArMCwwIEBACi0KLVBBU1MgU2VydmljZSB3b3JrZXIgdGVzdCBzZXR1cCAKLUZBSUwgRXJyb3Jz
IG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogc3RhcnRzIGVycm9yZWQ7IHByZXZlbnRDYW5j
ZWwgb21pdHRlZDsgZnVsZmlsbGVkIGNhbmNlbCBwcm9taXNlIENhbid0IGZpbmQgdmFyaWFibGU6
IFdyaXRhYmxlU3RyZWFtCi1GQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6
IGJlY29tZXMgZXJyb3JlZCBiZWZvcmUgcGlwaW5nIGR1ZSB0byB3cml0ZTsgcHJldmVudENhbmNl
bCBvbWl0dGVkOyBmdWxmaWxsZWQgY2FuY2VsIHByb21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTog
V3JpdGFibGVTdHJlYW0KLUZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDog
YmVjb21lcyBlcnJvcmVkIGJlZm9yZSBwaXBpbmcgZHVlIHRvIHdyaXRlOyBwcmV2ZW50Q2FuY2Vs
IG9taXR0ZWQ7IHJlamVjdGVkIGNhbmNlbCBwcm9taXNlIENhbid0IGZpbmQgdmFyaWFibGU6IFdy
aXRhYmxlU3RyZWFtCi1GQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGJl
Y29tZXMgZXJyb3JlZCBiZWZvcmUgcGlwaW5nIGR1ZSB0byB3cml0ZTsgcHJldmVudENhbmNlbCA9
IHVuZGVmaW5lZCAoZmFsc3kpOyBmdWxmaWxsZWQgY2FuY2VsIHByb21pc2UgQ2FuJ3QgZmluZCB2
YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBi
YWNrd2FyZDogYmVjb21lcyBlcnJvcmVkIGJlZm9yZSBwaXBpbmcgZHVlIHRvIHdyaXRlOyBwcmV2
ZW50Q2FuY2VsID0gbnVsbCAoZmFsc3kpOyBmdWxmaWxsZWQgY2FuY2VsIHByb21pc2UgQ2FuJ3Qg
ZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFn
YXRlZCBiYWNrd2FyZDogYmVjb21lcyBlcnJvcmVkIGJlZm9yZSBwaXBpbmcgZHVlIHRvIHdyaXRl
OyBwcmV2ZW50Q2FuY2VsID0gZmFsc2UgKGZhbHN5KTsgZnVsZmlsbGVkIGNhbmNlbCBwcm9taXNl
IENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIEVycm9ycyBtdXN0IGJl
IHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGJlY29tZXMgZXJyb3JlZCBiZWZvcmUgcGlwaW5nIGR1ZSB0
byB3cml0ZTsgcHJldmVudENhbmNlbCA9IDAgKGZhbHN5KTsgZnVsZmlsbGVkIGNhbmNlbCBwcm9t
aXNlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIEVycm9ycyBtdXN0
IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGJlY29tZXMgZXJyb3JlZCBiZWZvcmUgcGlwaW5nIGR1
ZSB0byB3cml0ZTsgcHJldmVudENhbmNlbCA9IC0wIChmYWxzeSk7IGZ1bGZpbGxlZCBjYW5jZWwg
cHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBFcnJvcnMg
bXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVycm9yZWQgYmVmb3JlIHBpcGlu
ZyBkdWUgdG8gd3JpdGU7IHByZXZlbnRDYW5jZWwgPSBOYU4gKGZhbHN5KTsgZnVsZmlsbGVkIGNh
bmNlbCBwcm9taXNlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIEVy
cm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGJlY29tZXMgZXJyb3JlZCBiZWZvcmUg
cGlwaW5nIGR1ZSB0byB3cml0ZTsgcHJldmVudENhbmNlbCA9ICAoZmFsc3kpOyBmdWxmaWxsZWQg
Y2FuY2VsIHByb21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwg
RXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogYmVjb21lcyBlcnJvcmVkIGJlZm9y
ZSBwaXBpbmcgZHVlIHRvIHdyaXRlOyBwcmV2ZW50Q2FuY2VsID0gdHJ1ZSAodHJ1dGh5KSBDYW4n
dCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9w
YWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVycm9yZWQgYmVmb3JlIHBpcGluZyBkdWUgdG8gd3Jp
dGU7IHByZXZlbnRDYW5jZWwgPSBhICh0cnV0aHkpIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRh
YmxlU3RyZWFtCi1GQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGJlY29t
ZXMgZXJyb3JlZCBiZWZvcmUgcGlwaW5nIGR1ZSB0byB3cml0ZTsgcHJldmVudENhbmNlbCA9IDEg
KHRydXRoeSkgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgRXJyb3Jz
IG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogYmVjb21lcyBlcnJvcmVkIGJlZm9yZSBwaXBp
bmcgZHVlIHRvIHdyaXRlOyBwcmV2ZW50Q2FuY2VsID0gU3ltYm9sKCkgKHRydXRoeSkgQ2FuJ3Qg
ZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFn
YXRlZCBiYWNrd2FyZDogYmVjb21lcyBlcnJvcmVkIGJlZm9yZSBwaXBpbmcgZHVlIHRvIHdyaXRl
OyBwcmV2ZW50Q2FuY2VsID0gW29iamVjdCBPYmplY3RdICh0cnV0aHkpIENhbid0IGZpbmQgdmFy
aWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFj
a3dhcmQ6IGJlY29tZXMgZXJyb3JlZCBiZWZvcmUgcGlwaW5nIGR1ZSB0byB3cml0ZSwgcHJldmVu
dENhbmNlbCA9IHRydWU7IHByZXZlbnRBYm9ydCA9IHRydWUgQ2FuJ3QgZmluZCB2YXJpYWJsZTog
V3JpdGFibGVTdHJlYW0KLUZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDog
YmVjb21lcyBlcnJvcmVkIGJlZm9yZSBwaXBpbmcgZHVlIHRvIHdyaXRlOyBwcmV2ZW50Q2FuY2Vs
ID0gdHJ1ZSwgcHJldmVudEFib3J0ID0gdHJ1ZSwgcHJldmVudENsb3NlID0gdHJ1ZSBDYW4ndCBm
aW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdh
dGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVycm9yZWQgZHVyaW5nIHBpcGluZyBkdWUgdG8gd3JpdGU7
IHByZXZlbnRDYW5jZWwgb21pdHRlZDsgZnVsZmlsbGVkIGNhbmNlbCBwcm9taXNlIENhbid0IGZp
bmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0
ZWQgYmFja3dhcmQ6IGJlY29tZXMgZXJyb3JlZCBkdXJpbmcgcGlwaW5nIGR1ZSB0byB3cml0ZTsg
cHJldmVudENhbmNlbCBvbWl0dGVkOyByZWplY3RlZCBjYW5jZWwgcHJvbWlzZSBDYW4ndCBmaW5k
IHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVk
IGJhY2t3YXJkOiBiZWNvbWVzIGVycm9yZWQgZHVyaW5nIHBpcGluZyBkdWUgdG8gd3JpdGU7IHBy
ZXZlbnRDYW5jZWwgPSB0cnVlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1G
QUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGJlY29tZXMgZXJyb3JlZCBk
dXJpbmcgcGlwaW5nIGR1ZSB0byB3cml0ZSwgYnV0IGFzeW5jOyBwcmV2ZW50Q2FuY2VsID0gZmFs
c2U7IGZ1bGZpbGxlZCBjYW5jZWwgcHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJs
ZVN0cmVhbQotRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVz
IGVycm9yZWQgZHVyaW5nIHBpcGluZyBkdWUgdG8gd3JpdGUsIGJ1dCBhc3luYzsgcHJldmVudENh
bmNlbCA9IGZhbHNlOyByZWplY3RlZCBjYW5jZWwgcHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxl
OiBXcml0YWJsZVN0cmVhbQotRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJk
OiBiZWNvbWVzIGVycm9yZWQgZHVyaW5nIHBpcGluZyBkdWUgdG8gd3JpdGUsIGJ1dCBhc3luYzsg
cHJldmVudENhbmNlbCA9IHRydWUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0K
LUZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogYmVjb21lcyBlcnJvcmVk
IGFmdGVyIHBpcGluZzsgcHJldmVudENhbmNlbCBvbWl0dGVkOyBmdWxmaWxsZWQgY2FuY2VsIHBy
b21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgRXJyb3JzIG11
c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogYmVjb21lcyBlcnJvcmVkIGFmdGVyIHBpcGluZzsg
cHJldmVudENhbmNlbCBvbWl0dGVkOyByZWplY3RlZCBjYW5jZWwgcHJvbWlzZSBDYW4ndCBmaW5k
IHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVk
IGJhY2t3YXJkOiBiZWNvbWVzIGVycm9yZWQgYWZ0ZXIgcGlwaW5nOyBwcmV2ZW50Q2FuY2VsID0g
dHJ1ZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBFcnJvcnMgbXVz
dCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVycm9yZWQgYWZ0ZXIgcGlwaW5nIGR1
ZSB0byBsYXN0IHdyaXRlOyBzb3VyY2UgaXMgY2xvc2VkOyBwcmV2ZW50Q2FuY2VsIG9taXR0ZWQg
KGJ1dCBjYW5jZWwgaXMgbmV2ZXIgY2FsbGVkKSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJs
ZVN0cmVhbQotRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVz
IGVycm9yZWQgYWZ0ZXIgcGlwaW5nIGR1ZSB0byBsYXN0IHdyaXRlOyBzb3VyY2UgaXMgY2xvc2Vk
OyBwcmV2ZW50Q2FuY2VsID0gdHJ1ZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVh
bQotRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVycm9y
ZWQgYWZ0ZXIgcGlwaW5nOyBkZXN0IG5ldmVyIGRlc2lyZXMgY2h1bmtzOyBwcmV2ZW50Q2FuY2Vs
ID0gZmFsc2U7IGZ1bGZpbGxlZCBjYW5jZWwgcHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBX
cml0YWJsZVN0cmVhbQotRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBi
ZWNvbWVzIGVycm9yZWQgYWZ0ZXIgcGlwaW5nOyBkZXN0IG5ldmVyIGRlc2lyZXMgY2h1bmtzOyBw
cmV2ZW50Q2FuY2VsID0gZmFsc2U7IHJlamVjdGVkIGNhbmNlbCBwcm9taXNlIENhbid0IGZpbmQg
dmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQg
YmFja3dhcmQ6IGJlY29tZXMgZXJyb3JlZCBhZnRlciBwaXBpbmc7IGRlc3QgbmV2ZXIgZGVzaXJl
cyBjaHVua3M7IHByZXZlbnRDYW5jZWwgPSB0cnVlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRh
YmxlU3RyZWFtCi1GQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGJlY29t
ZXMgZXJyb3JlZCBiZWZvcmUgcGlwaW5nIHZpYSBhYm9ydDsgcHJldmVudENhbmNlbCBvbWl0dGVk
OyBmdWxmaWxsZWQgY2FuY2VsIHByb21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVT
dHJlYW0KLUZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogYmVjb21lcyBl
cnJvcmVkIGJlZm9yZSBwaXBpbmcgdmlhIGFib3J0OyBwcmV2ZW50Q2FuY2VsIG9taXR0ZWQ7IHJl
amVjdGVkIGNhbmNlbCBwcm9taXNlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFt
Ci1GQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGJlY29tZXMgZXJyb3Jl
ZCBiZWZvcmUgcGlwaW5nIHZpYSBhYm9ydDsgcHJldmVudENhbmNlbCA9IHRydWUgQ2FuJ3QgZmlu
ZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRl
ZCBiYWNrd2FyZDogZXJyb3JpbmcgdmlhIHRoZSBjb250cm9sbGVyIGVycm9ycyBvbmNlIHBlbmRp
bmcgd3JpdGUgY29tcGxldGVzIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy9waXBpbmcvZXJyb3ItcHJvcGFnYXRpb24tYmFja3dhcmQuc2VydmljZXdvcmtlci5o
dHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
dHJlYW1zL3BpcGluZy9lcnJvci1wcm9wYWdhdGlvbi1iYWNrd2FyZC5zZXJ2aWNld29ya2VyLmh0
dHBzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZjZDA0YmExZDM1ZjM3NjY0
M2Y4NGQ4Y2FkODdlNDVmZmY0ZDA0ZWQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL3BpcGluZy9lcnJvci1wcm9wYWdhdGlvbi1iYWNrd2FyZC5zZXJ2aWNld29ya2Vy
Lmh0dHBzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi08IURPQ1RZUEUgaHRt
bD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTx0aXRsZT5lcnJvci1wcm9wYWdhdGlvbi1iYWNr
d2FyZC5qcyBzZXJ2aWNlIHdvcmtlciB3cmFwcGVyIGZpbGU8L3RpdGxlPgotCi08c2NyaXB0IHNy
Yz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3Jl
c291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3Nl
cnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9yZXNvdXJjZXMvdGVzdC1oZWxwZXJzLnN1Yi5q
cyI+PC9zY3JpcHQ+Ci0KLTxzY3JpcHQ+Ci0ndXNlIHN0cmljdCc7Ci1zZXJ2aWNlX3dvcmtlcl90
ZXN0KCdlcnJvci1wcm9wYWdhdGlvbi1iYWNrd2FyZC5qcycsICdTZXJ2aWNlIHdvcmtlciB0ZXN0
IHNldHVwJyk7Ci08L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvZXJyb3ItcHJvcGFnYXRpb24tYmFj
a3dhcmQuc2hhcmVkd29ya2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvZXJyb3ItcHJvcGFnYXRpb24tYmFj
a3dhcmQuc2hhcmVkd29ya2VyLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDlkNWQyNTA5ZDc4NDdlOGNkNmZlNjYwNmFhNjBjZGQzM2FhNDc0ZS4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Vycm9yLXByb3BhZ2F0aW9u
LWJhY2t3YXJkLnNoYXJlZHdvcmtlci1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw1
ICswLDAgQEAKLUNPTlNPTEUgTUVTU0FHRTogUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFy
aWFibGU6IFNoYXJlZFdvcmtlcgotCi1IYXJuZXNzIEVycm9yIChGQUlMKSwgbWVzc2FnZSA9IFJl
ZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBTaGFyZWRXb3JrZXIKLQotCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvcGlwaW5nL2Vycm9yLXByb3BhZ2F0aW9uLWJhY2t3YXJkLnNoYXJlZHdvcmtlci5odG1sIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGlu
Zy9lcnJvci1wcm9wYWdhdGlvbi1iYWNrd2FyZC5zaGFyZWR3b3JrZXIuaHRtbApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggN2VhNjI2MjdkYzFhYWIwMjRlNWViMzlhNTU2Y2FjOGI4Nzgz
M2MwMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Vy
cm9yLXByb3BhZ2F0aW9uLWJhY2t3YXJkLnNoYXJlZHdvcmtlci5odG1sCisrKyAvZGV2L251bGwK
QEAgLTEsMTEgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+
Ci08dGl0bGU+ZXJyb3ItcHJvcGFnYXRpb24tYmFja3dhcmQuanMgc2hhcmVkIHdvcmtlciB3cmFw
cGVyIGZpbGU8L3RpdGxlPgotCi08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5q
cyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5q
cyI+PC9zY3JpcHQ+Ci0KLTxzY3JpcHQ+Ci0ndXNlIHN0cmljdCc7Ci1mZXRjaF90ZXN0c19mcm9t
X3dvcmtlcihuZXcgU2hhcmVkV29ya2VyKCdlcnJvci1wcm9wYWdhdGlvbi1iYWNrd2FyZC5qcycp
KTsKLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9lcnJvci1wcm9wYWdhdGlvbi1mb3J3YXJkLmFu
eS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3N0cmVhbXMvcGlwaW5nL2Vycm9yLXByb3BhZ2F0aW9uLWZvcndhcmQuYW55LWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4wYTUxZDRmNmJjNjZiMjZiNjk5MGYzMDM5YjhlZmI5ZGYyMzEzOWEy
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zdHJlYW1zL3BpcGluZy9lcnJvci1wcm9wYWdhdGlvbi1mb3J3YXJkLmFueS1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSw5NSBAQAorQ09OU09MRSBNRVNTQUdFOiBVbmhhbmRsZWQgUHJv
bWlzZSBSZWplY3Rpb246IGVycm9yMTogZXJyb3IxIQorQ09OU09MRSBNRVNTQUdFOiBVbmhhbmRs
ZWQgUHJvbWlzZSBSZWplY3Rpb246IFR5cGVFcnJvcjogY2FuY2VsKCkgY2FsbGVkIG9uIGEgcmVh
ZGVyIG93bmVkIGJ5IG5vIHJlYWRhYmxlIHN0cmVhbQorQ09OU09MRSBNRVNTQUdFOiBVbmhhbmRs
ZWQgUHJvbWlzZSBSZWplY3Rpb246IGVycm9yMTogZXJyb3IxIQorQ09OU09MRSBNRVNTQUdFOiBV
bmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rpb246IFR5cGVFcnJvcjogY2FuY2VsKCkgY2FsbGVkIG9u
IGEgcmVhZGVyIG93bmVkIGJ5IG5vIHJlYWRhYmxlIHN0cmVhbQorQ09OU09MRSBNRVNTQUdFOiBV
bmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rpb246IGVycm9yMjogZXJyb3IyIQorQ09OU09MRSBNRVNT
QUdFOiBVbmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rpb246IGVycm9yMTogZXJyb3IxIQorQ09OU09M
RSBNRVNTQUdFOiBVbmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rpb246IFR5cGVFcnJvcjogY2FuY2Vs
KCkgY2FsbGVkIG9uIGEgcmVhZGVyIG93bmVkIGJ5IG5vIHJlYWRhYmxlIHN0cmVhbQorQ09OU09M
RSBNRVNTQUdFOiBVbmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rpb246IGVycm9yMTogZXJyb3IxIQor
Q09OU09MRSBNRVNTQUdFOiBVbmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rpb246IFR5cGVFcnJvcjog
Y2FuY2VsKCkgY2FsbGVkIG9uIGEgcmVhZGVyIG93bmVkIGJ5IG5vIHJlYWRhYmxlIHN0cmVhbQor
Q09OU09MRSBNRVNTQUdFOiBVbmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rpb246IGVycm9yMTogZXJy
b3IxIQorQ09OU09MRSBNRVNTQUdFOiBVbmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rpb246IFR5cGVF
cnJvcjogY2FuY2VsKCkgY2FsbGVkIG9uIGEgcmVhZGVyIG93bmVkIGJ5IG5vIHJlYWRhYmxlIHN0
cmVhbQorQ09OU09MRSBNRVNTQUdFOiBVbmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rpb246IGVycm9y
MTogZXJyb3IxIQorQ09OU09MRSBNRVNTQUdFOiBVbmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rpb246
IFR5cGVFcnJvcjogY2FuY2VsKCkgY2FsbGVkIG9uIGEgcmVhZGVyIG93bmVkIGJ5IG5vIHJlYWRh
YmxlIHN0cmVhbQorQ09OU09MRSBNRVNTQUdFOiBVbmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rpb246
IGVycm9yMTogZXJyb3IxIQorQ09OU09MRSBNRVNTQUdFOiBVbmhhbmRsZWQgUHJvbWlzZSBSZWpl
Y3Rpb246IFR5cGVFcnJvcjogY2FuY2VsKCkgY2FsbGVkIG9uIGEgcmVhZGVyIG93bmVkIGJ5IG5v
IHJlYWRhYmxlIHN0cmVhbQorQ09OU09MRSBNRVNTQUdFOiBVbmhhbmRsZWQgUHJvbWlzZSBSZWpl
Y3Rpb246IGVycm9yMTogZXJyb3IxIQorQ09OU09MRSBNRVNTQUdFOiBVbmhhbmRsZWQgUHJvbWlz
ZSBSZWplY3Rpb246IFR5cGVFcnJvcjogY2FuY2VsKCkgY2FsbGVkIG9uIGEgcmVhZGVyIG93bmVk
IGJ5IG5vIHJlYWRhYmxlIHN0cmVhbQorQ09OU09MRSBNRVNTQUdFOiBVbmhhbmRsZWQgUHJvbWlz
ZSBSZWplY3Rpb246IGVycm9yMTogZXJyb3IxIQorQ09OU09MRSBNRVNTQUdFOiBVbmhhbmRsZWQg
UHJvbWlzZSBSZWplY3Rpb246IFR5cGVFcnJvcjogY2FuY2VsKCkgY2FsbGVkIG9uIGEgcmVhZGVy
IG93bmVkIGJ5IG5vIHJlYWRhYmxlIHN0cmVhbQorQ09OU09MRSBNRVNTQUdFOiBVbmhhbmRsZWQg
UHJvbWlzZSBSZWplY3Rpb246IGVycm9yMTogZXJyb3IxIQorQ09OU09MRSBNRVNTQUdFOiBVbmhh
bmRsZWQgUHJvbWlzZSBSZWplY3Rpb246IGVycm9yMTogZXJyb3IxIQorQ09OU09MRSBNRVNTQUdF
OiBVbmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rpb246IGVycm9yMTogZXJyb3IxIQorQ09OU09MRSBN
RVNTQUdFOiBVbmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rpb246IGVycm9yMTogZXJyb3IxIQorQ09O
U09MRSBNRVNTQUdFOiBVbmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rpb246IGVycm9yMTogZXJyb3Ix
IQorQ09OU09MRSBNRVNTQUdFOiBVbmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rpb246IGVycm9yMTog
ZXJyb3IxIQorQ09OU09MRSBNRVNTQUdFOiBVbmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rpb246IGVy
cm9yMTogZXJyb3IxIQorQ09OU09MRSBNRVNTQUdFOiBVbmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rp
b246IGVycm9yMTogZXJyb3IxIQorQ09OU09MRSBNRVNTQUdFOiBVbmhhbmRsZWQgUHJvbWlzZSBS
ZWplY3Rpb246IFR5cGVFcnJvcjogY2FuY2VsKCkgY2FsbGVkIG9uIGEgcmVhZGVyIG93bmVkIGJ5
IG5vIHJlYWRhYmxlIHN0cmVhbQorQ09OU09MRSBNRVNTQUdFOiBVbmhhbmRsZWQgUHJvbWlzZSBS
ZWplY3Rpb246IGVycm9yMTogZXJyb3IxIQorQ09OU09MRSBNRVNTQUdFOiBVbmhhbmRsZWQgUHJv
bWlzZSBSZWplY3Rpb246IFR5cGVFcnJvcjogY2FuY2VsKCkgY2FsbGVkIG9uIGEgcmVhZGVyIG93
bmVkIGJ5IG5vIHJlYWRhYmxlIHN0cmVhbQorQ09OU09MRSBNRVNTQUdFOiBVbmhhbmRsZWQgUHJv
bWlzZSBSZWplY3Rpb246IGVycm9yMjogZXJyb3IyIQorQ09OU09MRSBNRVNTQUdFOiBVbmhhbmRs
ZWQgUHJvbWlzZSBSZWplY3Rpb246IGVycm9yMTogZXJyb3IxIQorQ09OU09MRSBNRVNTQUdFOiBV
bmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rpb246IGVycm9yMTogZXJyb3IxIQorQ09OU09MRSBNRVNT
QUdFOiBVbmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rpb246IFR5cGVFcnJvcjogY2FuY2VsKCkgY2Fs
bGVkIG9uIGEgcmVhZGVyIG93bmVkIGJ5IG5vIHJlYWRhYmxlIHN0cmVhbQorQ09OU09MRSBNRVNT
QUdFOiBVbmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rpb246IGVycm9yMTogZXJyb3IxIQorQ09OU09M
RSBNRVNTQUdFOiBVbmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rpb246IFR5cGVFcnJvcjogY2FuY2Vs
KCkgY2FsbGVkIG9uIGEgcmVhZGVyIG93bmVkIGJ5IG5vIHJlYWRhYmxlIHN0cmVhbQorQ09OU09M
RSBNRVNTQUdFOiBVbmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rpb246IGVycm9yMjogZXJyb3IyIQor
Q09OU09MRSBNRVNTQUdFOiBVbmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rpb246IGVycm9yMTogZXJy
b3IxIQorQ09OU09MRSBNRVNTQUdFOiBVbmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rpb246IGVycm9y
MTogZXJyb3IxIQorQ09OU09MRSBNRVNTQUdFOiBVbmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rpb246
IFR5cGVFcnJvcjogY2FuY2VsKCkgY2FsbGVkIG9uIGEgcmVhZGVyIG93bmVkIGJ5IG5vIHJlYWRh
YmxlIHN0cmVhbQorQ09OU09MRSBNRVNTQUdFOiBVbmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rpb246
IGVycm9yMTogZXJyb3IxIQorQ09OU09MRSBNRVNTQUdFOiBVbmhhbmRsZWQgUHJvbWlzZSBSZWpl
Y3Rpb246IFR5cGVFcnJvcjogY2FuY2VsKCkgY2FsbGVkIG9uIGEgcmVhZGVyIG93bmVkIGJ5IG5v
IHJlYWRhYmxlIHN0cmVhbQorQ09OU09MRSBNRVNTQUdFOiBVbmhhbmRsZWQgUHJvbWlzZSBSZWpl
Y3Rpb246IGVycm9yMjogZXJyb3IyIQorQ09OU09MRSBNRVNTQUdFOiBVbmhhbmRsZWQgUHJvbWlz
ZSBSZWplY3Rpb246IGVycm9yMTogZXJyb3IxIQorQ09OU09MRSBNRVNTQUdFOiBVbmhhbmRsZWQg
UHJvbWlzZSBSZWplY3Rpb246IGVycm9yMTogZXJyb3IxIQorQ09OU09MRSBNRVNTQUdFOiBVbmhh
bmRsZWQgUHJvbWlzZSBSZWplY3Rpb246IFR5cGVFcnJvcjogY2FuY2VsKCkgY2FsbGVkIG9uIGEg
cmVhZGVyIG93bmVkIGJ5IG5vIHJlYWRhYmxlIHN0cmVhbQorQ09OU09MRSBNRVNTQUdFOiBVbmhh
bmRsZWQgUHJvbWlzZSBSZWplY3Rpb246IGVycm9yMTogZXJyb3IxIQorQ09OU09MRSBNRVNTQUdF
OiBVbmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rpb246IFR5cGVFcnJvcjogY2FuY2VsKCkgY2FsbGVk
IG9uIGEgcmVhZGVyIG93bmVkIGJ5IG5vIHJlYWRhYmxlIHN0cmVhbQorQ09OU09MRSBNRVNTQUdF
OiBVbmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rpb246IGVycm9yMjogZXJyb3IyIQorQ09OU09MRSBN
RVNTQUdFOiBVbmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rpb246IGVycm9yMTogZXJyb3IxIQorQ09O
U09MRSBNRVNTQUdFOiBVbmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rpb246IGVycm9yMTogZXJyb3Ix
IQorQ09OU09MRSBNRVNTQUdFOiBVbmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rpb246IGVycm9yMTog
ZXJyb3IxIQorQ09OU09MRSBNRVNTQUdFOiBVbmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rpb246IFR5
cGVFcnJvcjogY2FuY2VsKCkgY2FsbGVkIG9uIGEgcmVhZGVyIG93bmVkIGJ5IG5vIHJlYWRhYmxl
IHN0cmVhbQorQ09OU09MRSBNRVNTQUdFOiBVbmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rpb246IGVy
cm9yMTogZXJyb3IxIQorQ09OU09MRSBNRVNTQUdFOiBVbmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rp
b246IGVycm9yMTogZXJyb3IxIQorQ09OU09MRSBNRVNTQUdFOiBVbmhhbmRsZWQgUHJvbWlzZSBS
ZWplY3Rpb246IGVycm9yMTogZXJyb3IxIQorQ09OU09MRSBNRVNTQUdFOiBVbmhhbmRsZWQgUHJv
bWlzZSBSZWplY3Rpb246IGVycm9yMTogZXJyb3IxIQorQ09OU09MRSBNRVNTQUdFOiBVbmhhbmRs
ZWQgUHJvbWlzZSBSZWplY3Rpb246IFR5cGVFcnJvcjogY2FuY2VsKCkgY2FsbGVkIG9uIGEgcmVh
ZGVyIG93bmVkIGJ5IG5vIHJlYWRhYmxlIHN0cmVhbQorQ09OU09MRSBNRVNTQUdFOiBVbmhhbmRs
ZWQgUHJvbWlzZSBSZWplY3Rpb246IGVycm9yMTogZXJyb3IxIQorCitIYXJuZXNzIEVycm9yIChG
QUlMKSwgbWVzc2FnZSA9IFVuaGFuZGxlZCByZWplY3Rpb246IGVycm9yMSEKKworUEFTUyBFcnJv
cnMgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHN0YXJ0cyBlcnJvcmVkOyBwcmV2ZW50QWJv
cnQgPSBmYWxzZTsgZnVsZmlsbGVkIGFib3J0IHByb21pc2UgCitGQUlMIEVycm9ycyBtdXN0IGJl
IHByb3BhZ2F0ZWQgZm9yd2FyZDogc3RhcnRzIGVycm9yZWQ7IHByZXZlbnRBYm9ydCA9IGZhbHNl
OyByZWplY3RlZCBhYm9ydCBwcm9taXNlIHByb21pc2VfcmVqZWN0c19leGFjdGx5OiBwaXBlVG8g
bXVzdCByZWplY3Qgd2l0aCB0aGUgYWJvcnQgZXJyb3IgZnVuY3Rpb24gImZ1bmN0aW9uICgpIHsg
dGhyb3cgZSB9IiB0aHJldyBvYmplY3QgImVycm9yMTogZXJyb3IxISIgYnV0IHdlIGV4cGVjdGVk
IGl0IHRvIHRocm93IG9iamVjdCAiZXJyb3IyOiBlcnJvcjIhIgorUEFTUyBFcnJvcnMgbXVzdCBi
ZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHN0YXJ0cyBlcnJvcmVkOyBwcmV2ZW50QWJvcnQgPSB1bmRl
ZmluZWQgKGZhbHN5KTsgZnVsZmlsbGVkIGFib3J0IHByb21pc2UgCitQQVNTIEVycm9ycyBtdXN0
IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc3RhcnRzIGVycm9yZWQ7IHByZXZlbnRBYm9ydCA9IG51
bGwgKGZhbHN5KTsgZnVsZmlsbGVkIGFib3J0IHByb21pc2UgCitQQVNTIEVycm9ycyBtdXN0IGJl
IHByb3BhZ2F0ZWQgZm9yd2FyZDogc3RhcnRzIGVycm9yZWQ7IHByZXZlbnRBYm9ydCA9IGZhbHNl
IChmYWxzeSk7IGZ1bGZpbGxlZCBhYm9ydCBwcm9taXNlIAorUEFTUyBFcnJvcnMgbXVzdCBiZSBw
cm9wYWdhdGVkIGZvcndhcmQ6IHN0YXJ0cyBlcnJvcmVkOyBwcmV2ZW50QWJvcnQgPSAwIChmYWxz
eSk7IGZ1bGZpbGxlZCBhYm9ydCBwcm9taXNlIAorUEFTUyBFcnJvcnMgbXVzdCBiZSBwcm9wYWdh
dGVkIGZvcndhcmQ6IHN0YXJ0cyBlcnJvcmVkOyBwcmV2ZW50QWJvcnQgPSAtMCAoZmFsc3kpOyBm
dWxmaWxsZWQgYWJvcnQgcHJvbWlzZSAKK1BBU1MgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBm
b3J3YXJkOiBzdGFydHMgZXJyb3JlZDsgcHJldmVudEFib3J0ID0gTmFOIChmYWxzeSk7IGZ1bGZp
bGxlZCBhYm9ydCBwcm9taXNlIAorUEFTUyBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndh
cmQ6IHN0YXJ0cyBlcnJvcmVkOyBwcmV2ZW50QWJvcnQgPSAgKGZhbHN5KTsgZnVsZmlsbGVkIGFi
b3J0IHByb21pc2UgCitQQVNTIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc3Rh
cnRzIGVycm9yZWQ7IHByZXZlbnRBYm9ydCA9IHRydWUgKHRydXRoeSkgCitQQVNTIEVycm9ycyBt
dXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc3RhcnRzIGVycm9yZWQ7IHByZXZlbnRBYm9ydCA9
IGEgKHRydXRoeSkgCitQQVNTIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc3Rh
cnRzIGVycm9yZWQ7IHByZXZlbnRBYm9ydCA9IDEgKHRydXRoeSkgCitQQVNTIEVycm9ycyBtdXN0
IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc3RhcnRzIGVycm9yZWQ7IHByZXZlbnRBYm9ydCA9IFN5
bWJvbCgpICh0cnV0aHkpIAorUEFTUyBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6
IHN0YXJ0cyBlcnJvcmVkOyBwcmV2ZW50QWJvcnQgPSBbb2JqZWN0IE9iamVjdF0gKHRydXRoeSkg
CitQQVNTIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc3RhcnRzIGVycm9yZWQ7
IHByZXZlbnRBYm9ydCA9IHRydWUsIHByZXZlbnRDYW5jZWwgPSB0cnVlIAorUEFTUyBFcnJvcnMg
bXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHN0YXJ0cyBlcnJvcmVkOyBwcmV2ZW50QWJvcnQg
PSB0cnVlLCBwcmV2ZW50Q2FuY2VsID0gdHJ1ZSwgcHJldmVudENsb3NlID0gdHJ1ZSAKK1BBU1Mg
RXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBiZWNvbWVzIGVycm9yZWQgd2hpbGUg
ZW1wdHk7IHByZXZlbnRBYm9ydCA9IGZhbHNlOyBmdWxmaWxsZWQgYWJvcnQgcHJvbWlzZSAKK0ZB
SUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBiZWNvbWVzIGVycm9yZWQgd2hp
bGUgZW1wdHk7IHByZXZlbnRBYm9ydCA9IGZhbHNlOyByZWplY3RlZCBhYm9ydCBwcm9taXNlIHBy
b21pc2VfcmVqZWN0c19leGFjdGx5OiBwaXBlVG8gbXVzdCByZWplY3Qgd2l0aCB0aGUgYWJvcnQg
ZXJyb3IgZnVuY3Rpb24gImZ1bmN0aW9uICgpIHsgdGhyb3cgZSB9IiB0aHJldyBvYmplY3QgImVy
cm9yMTogZXJyb3IxISIgYnV0IHdlIGV4cGVjdGVkIGl0IHRvIHRocm93IG9iamVjdCAiZXJyb3Iy
OiBlcnJvcjIhIgorUEFTUyBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IGJlY29t
ZXMgZXJyb3JlZCB3aGlsZSBlbXB0eTsgcHJldmVudEFib3J0ID0gdHJ1ZSAKK1BBU1MgRXJyb3Jz
IG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBiZWNvbWVzIGVycm9yZWQgd2hpbGUgZW1wdHk7
IGRlc3QgbmV2ZXIgZGVzaXJlcyBjaHVua3M7IHByZXZlbnRBYm9ydCA9IGZhbHNlOyBmdWxmaWxs
ZWQgYWJvcnQgcHJvbWlzZSAKK0ZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJk
OiBiZWNvbWVzIGVycm9yZWQgd2hpbGUgZW1wdHk7IGRlc3QgbmV2ZXIgZGVzaXJlcyBjaHVua3M7
IHByZXZlbnRBYm9ydCA9IGZhbHNlOyByZWplY3RlZCBhYm9ydCBwcm9taXNlIHByb21pc2VfcmVq
ZWN0c19leGFjdGx5OiBwaXBlVG8gbXVzdCByZWplY3Qgd2l0aCB0aGUgYWJvcnQgZXJyb3IgZnVu
Y3Rpb24gImZ1bmN0aW9uICgpIHsgdGhyb3cgZSB9IiB0aHJldyBvYmplY3QgImVycm9yMTogZXJy
b3IxISIgYnV0IHdlIGV4cGVjdGVkIGl0IHRvIHRocm93IG9iamVjdCAiZXJyb3IyOiBlcnJvcjIh
IgorUEFTUyBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IGJlY29tZXMgZXJyb3Jl
ZCB3aGlsZSBlbXB0eTsgZGVzdCBuZXZlciBkZXNpcmVzIGNodW5rczsgcHJldmVudEFib3J0ID0g
dHJ1ZSAKK1BBU1MgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBiZWNvbWVzIGVy
cm9yZWQgYWZ0ZXIgb25lIGNodW5rOyBwcmV2ZW50QWJvcnQgPSBmYWxzZTsgZnVsZmlsbGVkIGFi
b3J0IHByb21pc2UgCitGQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogYmVj
b21lcyBlcnJvcmVkIGFmdGVyIG9uZSBjaHVuazsgcHJldmVudEFib3J0ID0gZmFsc2U7IHJlamVj
dGVkIGFib3J0IHByb21pc2UgcHJvbWlzZV9yZWplY3RzX2V4YWN0bHk6IHBpcGVUbyBtdXN0IHJl
amVjdCB3aXRoIHRoZSBhYm9ydCBlcnJvciBmdW5jdGlvbiAiZnVuY3Rpb24gKCkgeyB0aHJvdyBl
IH0iIHRocmV3IG9iamVjdCAiZXJyb3IxOiBlcnJvcjEhIiBidXQgd2UgZXhwZWN0ZWQgaXQgdG8g
dGhyb3cgb2JqZWN0ICJlcnJvcjI6IGVycm9yMiEiCitQQVNTIEVycm9ycyBtdXN0IGJlIHByb3Bh
Z2F0ZWQgZm9yd2FyZDogYmVjb21lcyBlcnJvcmVkIGFmdGVyIG9uZSBjaHVuazsgcHJldmVudEFi
b3J0ID0gdHJ1ZSAKK0ZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBiZWNv
bWVzIGVycm9yZWQgYWZ0ZXIgb25lIGNodW5rOyBkZXN0IG5ldmVyIGRlc2lyZXMgY2h1bmtzOyBw
cmV2ZW50QWJvcnQgPSBmYWxzZTsgZnVsZmlsbGVkIGFib3J0IHByb21pc2UgYXNzZXJ0X2FycmF5
X2VxdWFsczogbGVuZ3RocyBkaWZmZXIsIGV4cGVjdGVkIGFycmF5IFsiYWJvcnQiLCBvYmplY3Qg
ImVycm9yMTogZXJyb3IxISJdIGxlbmd0aCAyLCBnb3QgWyJ3cml0ZSIsICJIZWxsbyIsICJhYm9y
dCIsIG9iamVjdCAiZXJyb3IxOiBlcnJvcjEhIl0gbGVuZ3RoIDQKK0ZBSUwgRXJyb3JzIG11c3Qg
YmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBiZWNvbWVzIGVycm9yZWQgYWZ0ZXIgb25lIGNodW5rOyBk
ZXN0IG5ldmVyIGRlc2lyZXMgY2h1bmtzOyBwcmV2ZW50QWJvcnQgPSBmYWxzZTsgcmVqZWN0ZWQg
YWJvcnQgcHJvbWlzZSBwcm9taXNlX3JlamVjdHNfZXhhY3RseTogcGlwZVRvIG11c3QgcmVqZWN0
IHdpdGggdGhlIGFib3J0IGVycm9yIGZ1bmN0aW9uICJmdW5jdGlvbiAoKSB7IHRocm93IGUgfSIg
dGhyZXcgb2JqZWN0ICJlcnJvcjE6IGVycm9yMSEiIGJ1dCB3ZSBleHBlY3RlZCBpdCB0byB0aHJv
dyBvYmplY3QgImVycm9yMjogZXJyb3IyISIKK0ZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRl
ZCBmb3J3YXJkOiBiZWNvbWVzIGVycm9yZWQgYWZ0ZXIgb25lIGNodW5rOyBkZXN0IG5ldmVyIGRl
c2lyZXMgY2h1bmtzOyBwcmV2ZW50QWJvcnQgPSB0cnVlIGFzc2VydF9hcnJheV9lcXVhbHM6IGxl
bmd0aHMgZGlmZmVyLCBleHBlY3RlZCBhcnJheSBbXSBsZW5ndGggMCwgZ290IFsid3JpdGUiLCAi
SGVsbG8iXSBsZW5ndGggMgorRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6
IHNodXRkb3duIG11c3Qgbm90IG9jY3VyIHVudGlsIHRoZSBmaW5hbCB3cml0ZSBjb21wbGV0ZXMg
YXNzZXJ0X2FycmF5X2VxdWFsczogbGVuZ3RocyBkaWZmZXIsIGV4cGVjdGVkIGFycmF5IFsid3Jp
dGUiLCAiYSJdIGxlbmd0aCAyLCBnb3QgWyJ3cml0ZSIsICJhIiwgImFib3J0Iiwgb2JqZWN0ICJl
cnJvcjE6IGVycm9yMSEiXSBsZW5ndGggNAorRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVk
IGZvcndhcmQ6IHNodXRkb3duIG11c3Qgbm90IG9jY3VyIHVudGlsIHRoZSBmaW5hbCB3cml0ZSBj
b21wbGV0ZXM7IHByZXZlbnRBYm9ydCA9IHRydWUgYXNzZXJ0X2VxdWFsczogdGhlIHBpcGUgbXVz
dCBub3QgYmUgY29tcGxldGUgZXhwZWN0ZWQgZmFsc2UgYnV0IGdvdCB0cnVlCitGQUlMIEVycm9y
cyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc2h1dGRvd24gbXVzdCBub3Qgb2NjdXIgdW50
aWwgdGhlIGZpbmFsIHdyaXRlIGNvbXBsZXRlczsgYmVjb21lcyBlcnJvcmVkIGFmdGVyIGZpcnN0
IHdyaXRlIGFzc2VydF9hcnJheV9lcXVhbHM6IHRoZSBzZWNvbmQgY2h1bmsgbXVzdCBoYXZlIGJl
ZW4gd3JpdHRlbiwgYnV0IGFib3J0IG11c3Qgbm90IGhhdmUgaGFwcGVuZWQgeWV0IGV4cGVjdGVk
IHByb3BlcnR5IDIgdG8gYmUgIndyaXRlIiBidXQgZ290ICJhYm9ydCIgKGV4cGVjdGVkIGFycmF5
IFsid3JpdGUiLCAiYSIsICJ3cml0ZSIsICJiIl0gZ290IFsid3JpdGUiLCAiYSIsICJhYm9ydCIs
IG9iamVjdCAiZXJyb3IxOiBlcnJvcjEhIl0pCitGQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0
ZWQgZm9yd2FyZDogc2h1dGRvd24gbXVzdCBub3Qgb2NjdXIgdW50aWwgdGhlIGZpbmFsIHdyaXRl
IGNvbXBsZXRlczsgYmVjb21lcyBlcnJvcmVkIGFmdGVyIGZpcnN0IHdyaXRlOyBwcmV2ZW50QWJv
cnQgPSB0cnVlIGFzc2VydF9mYWxzZTogdGhlIHBpcGUgc2hvdWxkIG5vdCBjb21wbGV0ZSB3aGls
ZSB0aGUgc2Vjb25kIHdyaXRlIGlzIHBlbmRpbmcgZXhwZWN0ZWQgZmFsc2UgZ290IHRydWUKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
dHJlYW1zL3BpcGluZy9lcnJvci1wcm9wYWdhdGlvbi1mb3J3YXJkLmFueS5odG1sIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9lcnJv
ci1wcm9wYWdhdGlvbi1mb3J3YXJkLmFueS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzODI5MTM1MjhlNjkz
YjNhNWQ1NmM2NjBhNDUwNjA5ODBiNTQ4YzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Vycm9yLXBy
b3BhZ2F0aW9uLWZvcndhcmQuYW55Lmh0bWwKQEAgLTAsMCArMSBAQAorPCEtLSBUaGlzIGZpbGUg
aXMgcmVxdWlyZWQgZm9yIFdlYktpdCB0ZXN0IGluZnJhc3RydWN0dXJlIHRvIHJ1biB0aGUgdGVt
cGxhdGVkIHRlc3QgLS0+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGlu
Zy9lcnJvci1wcm9wYWdhdGlvbi1mb3J3YXJkLmFueS5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvZXJyb3ItcHJvcGFnYXRpb24t
Zm9yd2FyZC5hbnkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjM1ZWM2NjVlZWMyMmZjMzQ3MzcyZGI3MmUyODcz
YzcwMjgyMTUxYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvZXJyb3ItcHJvcGFnYXRpb24tZm9yd2Fy
ZC5hbnkuanMKQEAgLTAsMCArMSw1NjkgQEAKKy8vIE1FVEE6IGdsb2JhbD13aW5kb3csd29ya2Vy
LGpzc2hlbGwKKy8vIE1FVEE6IHNjcmlwdD0uLi9yZXNvdXJjZXMvdGVzdC11dGlscy5qcworLy8g
TUVUQTogc2NyaXB0PS4uL3Jlc291cmNlcy9yZWNvcmRpbmctc3RyZWFtcy5qcworJ3VzZSBzdHJp
Y3QnOworCitjb25zdCBlcnJvcjEgPSBuZXcgRXJyb3IoJ2Vycm9yMSEnKTsKK2Vycm9yMS5uYW1l
ID0gJ2Vycm9yMSc7CisKK2NvbnN0IGVycm9yMiA9IG5ldyBFcnJvcignZXJyb3IyIScpOworZXJy
b3IyLm5hbWUgPSAnZXJyb3IyJzsKKworcHJvbWlzZV90ZXN0KHQgPT4geworCisgIGNvbnN0IHJz
ID0gcmVjb3JkaW5nUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KCkgeworICAgICAgcmV0dXJu
IFByb21pc2UucmVqZWN0KGVycm9yMSk7CisgICAgfQorICB9KTsKKworICBjb25zdCB3cyA9IHJl
Y29yZGluZ1dyaXRhYmxlU3RyZWFtKCk7CisKKyAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19leGFj
dGx5KHQsIGVycm9yMSwgcnMucGlwZVRvKHdzKSwgJ3BpcGVUbyBtdXN0IHJlamVjdCB3aXRoIHRo
ZSBzYW1lIGVycm9yJykKKyAgICAudGhlbigoKSA9PiB7CisgICAgICBhc3NlcnRfYXJyYXlfZXF1
YWxzKHJzLmV2ZW50cywgW10pOworICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMs
IFsnYWJvcnQnLCBlcnJvcjFdKTsKKyAgICB9KTsKKworfSwgJ0Vycm9ycyBtdXN0IGJlIHByb3Bh
Z2F0ZWQgZm9yd2FyZDogc3RhcnRzIGVycm9yZWQ7IHByZXZlbnRBYm9ydCA9IGZhbHNlOyBmdWxm
aWxsZWQgYWJvcnQgcHJvbWlzZScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisKKyAgY29uc3Qg
cnMgPSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoKSB7CisgICAgICByZXR1
cm4gUHJvbWlzZS5yZWplY3QoZXJyb3IxKTsKKyAgICB9CisgIH0pOworCisgIGNvbnN0IHdzID0g
cmVjb3JkaW5nV3JpdGFibGVTdHJlYW0oeworICAgIGFib3J0KCkgeworICAgICAgdGhyb3cgZXJy
b3IyOworICAgIH0KKyAgfSk7CisKKyAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQs
IGVycm9yMiwgcnMucGlwZVRvKHdzKSwgJ3BpcGVUbyBtdXN0IHJlamVjdCB3aXRoIHRoZSBhYm9y
dCBlcnJvcicpCisgICAgLnRoZW4oKCkgPT4geworICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhy
cy5ldmVudHMsIFtdKTsKKyAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ2Fi
b3J0JywgZXJyb3IxXSk7CisgICAgfSk7CisKK30sICdFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVk
IGZvcndhcmQ6IHN0YXJ0cyBlcnJvcmVkOyBwcmV2ZW50QWJvcnQgPSBmYWxzZTsgcmVqZWN0ZWQg
YWJvcnQgcHJvbWlzZScpOworCitmb3IgKGNvbnN0IGZhbHN5IG9mIFt1bmRlZmluZWQsIG51bGws
IGZhbHNlLCArMCwgLTAsIE5hTiwgJyddKSB7CisgIGNvbnN0IHN0cmluZ1ZlcnNpb24gPSBPYmpl
Y3QuaXMoZmFsc3ksIC0wKSA/ICctMCcgOiBTdHJpbmcoZmFsc3kpOworCisgIHByb21pc2VfdGVz
dCh0ID0+IHsKKworICAgIGNvbnN0IHJzID0gcmVjb3JkaW5nUmVhZGFibGVTdHJlYW0oeworICAg
ICAgc3RhcnQoKSB7CisgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcjEpOworICAg
ICAgfQorICAgIH0pOworCisgICAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSgp
OworCisgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMSwgcnMucGlw
ZVRvKHdzLCB7IHByZXZlbnRBYm9ydDogZmFsc3kgfSksICdwaXBlVG8gbXVzdCByZWplY3Qgd2l0
aCB0aGUgc2FtZSBlcnJvcicpCisgICAgICAudGhlbigoKSA9PiB7CisgICAgICAgIGFzc2VydF9h
cnJheV9lcXVhbHMocnMuZXZlbnRzLCBbXSk7CisgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMo
d3MuZXZlbnRzLCBbJ2Fib3J0JywgZXJyb3IxXSk7CisgICAgICB9KTsKKworICB9LCBgRXJyb3Jz
IG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBzdGFydHMgZXJyb3JlZDsgcHJldmVudEFib3J0
ID0gJHtzdHJpbmdWZXJzaW9ufSAoZmFsc3kpOyBmdWxmaWxsZWQgYWJvcnQgYCArCisgICAgIGBw
cm9taXNlYCk7Cit9CisKK2ZvciAoY29uc3QgdHJ1dGh5IG9mIFt0cnVlLCAnYScsIDEsIFN5bWJv
bCgpLCB7IH1dKSB7CisgIHByb21pc2VfdGVzdCh0ID0+IHsKKworICAgIGNvbnN0IHJzID0gcmVj
b3JkaW5nUmVhZGFibGVTdHJlYW0oeworICAgICAgc3RhcnQoKSB7CisgICAgICAgIHJldHVybiBQ
cm9taXNlLnJlamVjdChlcnJvcjEpOworICAgICAgfQorICAgIH0pOworCisgICAgY29uc3Qgd3Mg
PSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSgpOworCisgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0
c19leGFjdGx5KHQsIGVycm9yMSwgcnMucGlwZVRvKHdzLCB7IHByZXZlbnRBYm9ydDogdHJ1dGh5
IH0pLAorICAgICAgJ3BpcGVUbyBtdXN0IHJlamVjdCB3aXRoIHRoZSBzYW1lIGVycm9yJykKKyAg
ICAgIC50aGVuKCgpID0+IHsKKyAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhycy5ldmVudHMs
IFtdKTsKKyAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFtdKTsKKyAgICAg
IH0pOworCisgIH0sIGBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHN0YXJ0cyBl
cnJvcmVkOyBwcmV2ZW50QWJvcnQgPSAke1N0cmluZyh0cnV0aHkpfSAodHJ1dGh5KWApOworfQor
CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKworICBjb25zdCBycyA9IHJlY29yZGluZ1JlYWRhYmxl
U3RyZWFtKHsKKyAgICBzdGFydCgpIHsKKyAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJv
cjEpOworICAgIH0KKyAgfSk7CisKKyAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVh
bSgpOworCisgIHJldHVybiBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIHJzLnBp
cGVUbyh3cywgeyBwcmV2ZW50QWJvcnQ6IHRydWUsIHByZXZlbnRDYW5jZWw6IHRydWUgfSksCisg
ICAgJ3BpcGVUbyBtdXN0IHJlamVjdCB3aXRoIHRoZSBzYW1lIGVycm9yJykKKyAgICAudGhlbigo
KSA9PiB7CisgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJzLmV2ZW50cywgW10pOworICAgICAg
YXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFtdKTsKKyAgICB9KTsKKworfSwgJ0Vycm9y
cyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc3RhcnRzIGVycm9yZWQ7IHByZXZlbnRBYm9y
dCA9IHRydWUsIHByZXZlbnRDYW5jZWwgPSB0cnVlJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsK
KworICBjb25zdCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydCgpIHsK
KyAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcjEpOworICAgIH0KKyAgfSk7CisKKyAg
Y29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSgpOworCisgIHJldHVybiBwcm9taXNl
X3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIHJzLnBpcGVUbyh3cywgeyBwcmV2ZW50QWJvcnQ6
IHRydWUsIHByZXZlbnRDYW5jZWw6IHRydWUsIHByZXZlbnRDbG9zZTogdHJ1ZSB9KSwKKyAgICAn
cGlwZVRvIG11c3QgcmVqZWN0IHdpdGggdGhlIHNhbWUgZXJyb3InKQorICAgIC50aGVuKCgpID0+
IHsKKyAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMocnMuZXZlbnRzLCBbXSk7CisgICAgICBhc3Nl
cnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgW10pOworICAgIH0pOworCit9LCAnRXJyb3JzIG11
c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBzdGFydHMgZXJyb3JlZDsgcHJldmVudEFib3J0ID0g
dHJ1ZSwgcHJldmVudENhbmNlbCA9IHRydWUsIHByZXZlbnRDbG9zZSA9IHRydWUnKTsKKworcHJv
bWlzZV90ZXN0KHQgPT4geworCisgIGNvbnN0IHJzID0gcmVjb3JkaW5nUmVhZGFibGVTdHJlYW0o
KTsKKworICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKCk7CisKKyAgY29uc3Qg
cGlwZVByb21pc2UgPSBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIHJzLnBpcGVU
byh3cyksICdwaXBlVG8gbXVzdCByZWplY3Qgd2l0aCB0aGUgc2FtZSBlcnJvcicpOworCisgIHQu
c3RlcF90aW1lb3V0KCgpID0+IHJzLmNvbnRyb2xsZXIuZXJyb3IoZXJyb3IxKSwgMTApOworCisg
IHJldHVybiBwaXBlUHJvbWlzZS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxz
KHJzLmV2ZW50c1dpdGhvdXRQdWxscywgW10pOworICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3Mu
ZXZlbnRzLCBbJ2Fib3J0JywgZXJyb3IxXSk7CisgIH0pOworCit9LCAnRXJyb3JzIG11c3QgYmUg
cHJvcGFnYXRlZCBmb3J3YXJkOiBiZWNvbWVzIGVycm9yZWQgd2hpbGUgZW1wdHk7IHByZXZlbnRB
Ym9ydCA9IGZhbHNlOyBmdWxmaWxsZWQgYWJvcnQgcHJvbWlzZScpOworCitwcm9taXNlX3Rlc3Qo
dCA9PiB7CisKKyAgY29uc3QgcnMgPSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSgpOworCisgIGNv
bnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0oeworICAgIGFib3J0KCkgeworICAgICAg
dGhyb3cgZXJyb3IyOworICAgIH0KKyAgfSk7CisKKyAgY29uc3QgcGlwZVByb21pc2UgPSBwcm9t
aXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjIsIHJzLnBpcGVUbyh3cyksICdwaXBlVG8gbXVz
dCByZWplY3Qgd2l0aCB0aGUgYWJvcnQgZXJyb3InKTsKKworICB0LnN0ZXBfdGltZW91dCgoKSA9
PiBycy5jb250cm9sbGVyLmVycm9yKGVycm9yMSksIDEwKTsKKworICByZXR1cm4gcGlwZVByb21p
c2UudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhycy5ldmVudHNXaXRob3V0
UHVsbHMsIFtdKTsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWydhYm9ydCcs
IGVycm9yMV0pOworICB9KTsKKworfSwgJ0Vycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2Fy
ZDogYmVjb21lcyBlcnJvcmVkIHdoaWxlIGVtcHR5OyBwcmV2ZW50QWJvcnQgPSBmYWxzZTsgcmVq
ZWN0ZWQgYWJvcnQgcHJvbWlzZScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisKKyAgY29uc3Qg
cnMgPSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSgpOworCisgIGNvbnN0IHdzID0gcmVjb3JkaW5n
V3JpdGFibGVTdHJlYW0oKTsKKworICBjb25zdCBwaXBlUHJvbWlzZSA9IHByb21pc2VfcmVqZWN0
c19leGFjdGx5KHQsIGVycm9yMSwgcnMucGlwZVRvKHdzLCB7IHByZXZlbnRBYm9ydDogdHJ1ZSB9
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGlwZVRv
IG11c3QgcmVqZWN0IHdpdGggdGhlIHNhbWUgZXJyb3InKTsKKworICB0LnN0ZXBfdGltZW91dCgo
KSA9PiBycy5jb250cm9sbGVyLmVycm9yKGVycm9yMSksIDEwKTsKKworICByZXR1cm4gcGlwZVBy
b21pc2UudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhycy5ldmVudHNXaXRo
b3V0UHVsbHMsIFtdKTsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgW10pOwor
ICB9KTsKKworfSwgJ0Vycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogYmVjb21lcyBl
cnJvcmVkIHdoaWxlIGVtcHR5OyBwcmV2ZW50QWJvcnQgPSB0cnVlJyk7CisKK3Byb21pc2VfdGVz
dCh0ID0+IHsKKworICBjb25zdCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKCk7CisKKyAg
Y29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSh1bmRlZmluZWQsIG5ldyBDb3VudFF1
ZXVpbmdTdHJhdGVneSh7IGhpZ2hXYXRlck1hcms6IDAgfSkpOworCisgIGNvbnN0IHBpcGVQcm9t
aXNlID0gcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCBycy5waXBlVG8od3MpLCAn
cGlwZVRvIG11c3QgcmVqZWN0IHdpdGggdGhlIHNhbWUgZXJyb3InKTsKKworICB0LnN0ZXBfdGlt
ZW91dCgoKSA9PiBycy5jb250cm9sbGVyLmVycm9yKGVycm9yMSksIDEwKTsKKworICByZXR1cm4g
cGlwZVByb21pc2UudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhycy5ldmVu
dHNXaXRob3V0UHVsbHMsIFtdKTsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywg
WydhYm9ydCcsIGVycm9yMV0pOworICB9KTsKKworfSwgJ0Vycm9ycyBtdXN0IGJlIHByb3BhZ2F0
ZWQgZm9yd2FyZDogYmVjb21lcyBlcnJvcmVkIHdoaWxlIGVtcHR5OyBkZXN0IG5ldmVyIGRlc2ly
ZXMgY2h1bmtzOyAnICsKKyAgICdwcmV2ZW50QWJvcnQgPSBmYWxzZTsgZnVsZmlsbGVkIGFib3J0
IHByb21pc2UnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworCisgIGNvbnN0IHJzID0gcmVjb3Jk
aW5nUmVhZGFibGVTdHJlYW0oKTsKKworICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3Ry
ZWFtKHsKKyAgICBhYm9ydCgpIHsKKyAgICAgIHRocm93IGVycm9yMjsKKyAgICB9CisgIH0sIG5l
dyBDb3VudFF1ZXVpbmdTdHJhdGVneSh7IGhpZ2hXYXRlck1hcms6IDAgfSkpOworCisgIGNvbnN0
IHBpcGVQcm9taXNlID0gcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IyLCBycy5waXBl
VG8od3MpLCAncGlwZVRvIG11c3QgcmVqZWN0IHdpdGggdGhlIGFib3J0IGVycm9yJyk7CisKKyAg
dC5zdGVwX3RpbWVvdXQoKCkgPT4gcnMuY29udHJvbGxlci5lcnJvcihlcnJvcjEpLCAxMCk7CisK
KyAgcmV0dXJuIHBpcGVQcm9taXNlLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9hcnJheV9lcXVh
bHMocnMuZXZlbnRzV2l0aG91dFB1bGxzLCBbXSk7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3
cy5ldmVudHMsIFsnYWJvcnQnLCBlcnJvcjFdKTsKKyAgfSk7CisKK30sICdFcnJvcnMgbXVzdCBi
ZSBwcm9wYWdhdGVkIGZvcndhcmQ6IGJlY29tZXMgZXJyb3JlZCB3aGlsZSBlbXB0eTsgZGVzdCBu
ZXZlciBkZXNpcmVzIGNodW5rczsgJyArCisgICAncHJldmVudEFib3J0ID0gZmFsc2U7IHJlamVj
dGVkIGFib3J0IHByb21pc2UnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworCisgIGNvbnN0IHJz
ID0gcmVjb3JkaW5nUmVhZGFibGVTdHJlYW0oKTsKKworICBjb25zdCB3cyA9IHJlY29yZGluZ1dy
aXRhYmxlU3RyZWFtKHVuZGVmaW5lZCwgbmV3IENvdW50UXVldWluZ1N0cmF0ZWd5KHsgaGlnaFdh
dGVyTWFyazogMCB9KSk7CisKKyAgY29uc3QgcGlwZVByb21pc2UgPSBwcm9taXNlX3JlamVjdHNf
ZXhhY3RseSh0LCBlcnJvcjEsIHJzLnBpcGVUbyh3cywgeyBwcmV2ZW50QWJvcnQ6IHRydWUgfSks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BpcGVUbyBt
dXN0IHJlamVjdCB3aXRoIHRoZSBzYW1lIGVycm9yJyk7CisKKyAgdC5zdGVwX3RpbWVvdXQoKCkg
PT4gcnMuY29udHJvbGxlci5lcnJvcihlcnJvcjEpLCAxMCk7CisKKyAgcmV0dXJuIHBpcGVQcm9t
aXNlLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9hcnJheV9lcXVhbHMocnMuZXZlbnRzV2l0aG91
dFB1bGxzLCBbXSk7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFtdKTsKKyAg
fSk7CisKK30sICdFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IGJlY29tZXMgZXJy
b3JlZCB3aGlsZSBlbXB0eTsgZGVzdCBuZXZlciBkZXNpcmVzIGNodW5rczsgJyArCisgICAncHJl
dmVudEFib3J0ID0gdHJ1ZScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisKKyAgY29uc3QgcnMg
PSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSgpOworCisgIGNvbnN0IHdzID0gcmVjb3JkaW5nV3Jp
dGFibGVTdHJlYW0oKTsKKworICBjb25zdCBwaXBlUHJvbWlzZSA9IHByb21pc2VfcmVqZWN0c19l
eGFjdGx5KHQsIGVycm9yMSwgcnMucGlwZVRvKHdzKSwgJ3BpcGVUbyBtdXN0IHJlamVjdCB3aXRo
IHRoZSBzYW1lIGVycm9yJyk7CisKKyAgdC5zdGVwX3RpbWVvdXQoKCkgPT4geworICAgIHJzLmNv
bnRyb2xsZXIuZW5xdWV1ZSgnSGVsbG8nKTsKKyAgICB0LnN0ZXBfdGltZW91dCgoKSA9PiBycy5j
b250cm9sbGVyLmVycm9yKGVycm9yMSksIDEwKTsKKyAgfSwgMTApOworCisgIHJldHVybiBwaXBl
UHJvbWlzZS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJzLmV2ZW50c1dp
dGhvdXRQdWxscywgW10pOworICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ3dy
aXRlJywgJ0hlbGxvJywgJ2Fib3J0JywgZXJyb3IxXSk7CisgIH0pOworCit9LCAnRXJyb3JzIG11
c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBiZWNvbWVzIGVycm9yZWQgYWZ0ZXIgb25lIGNodW5r
OyBwcmV2ZW50QWJvcnQgPSBmYWxzZTsgZnVsZmlsbGVkIGFib3J0IHByb21pc2UnKTsKKworcHJv
bWlzZV90ZXN0KHQgPT4geworCisgIGNvbnN0IHJzID0gcmVjb3JkaW5nUmVhZGFibGVTdHJlYW0o
KTsKKworICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKHsKKyAgICBhYm9ydCgp
IHsKKyAgICAgIHRocm93IGVycm9yMjsKKyAgICB9CisgIH0pOworCisgIGNvbnN0IHBpcGVQcm9t
aXNlID0gcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IyLCBycy5waXBlVG8od3MpLCAn
cGlwZVRvIG11c3QgcmVqZWN0IHdpdGggdGhlIGFib3J0IGVycm9yJyk7CisKKyAgdC5zdGVwX3Rp
bWVvdXQoKCkgPT4geworICAgIHJzLmNvbnRyb2xsZXIuZW5xdWV1ZSgnSGVsbG8nKTsKKyAgICB0
LnN0ZXBfdGltZW91dCgoKSA9PiBycy5jb250cm9sbGVyLmVycm9yKGVycm9yMSksIDEwKTsKKyAg
fSwgMTApOworCisgIHJldHVybiBwaXBlUHJvbWlzZS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRf
YXJyYXlfZXF1YWxzKHJzLmV2ZW50c1dpdGhvdXRQdWxscywgW10pOworICAgIGFzc2VydF9hcnJh
eV9lcXVhbHMod3MuZXZlbnRzLCBbJ3dyaXRlJywgJ0hlbGxvJywgJ2Fib3J0JywgZXJyb3IxXSk7
CisgIH0pOworCit9LCAnRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBiZWNvbWVz
IGVycm9yZWQgYWZ0ZXIgb25lIGNodW5rOyBwcmV2ZW50QWJvcnQgPSBmYWxzZTsgcmVqZWN0ZWQg
YWJvcnQgcHJvbWlzZScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisKKyAgY29uc3QgcnMgPSBy
ZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSgpOworCisgIGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFi
bGVTdHJlYW0oKTsKKworICBjb25zdCBwaXBlUHJvbWlzZSA9IHByb21pc2VfcmVqZWN0c19leGFj
dGx5KHQsIGVycm9yMSwgcnMucGlwZVRvKHdzLCB7IHByZXZlbnRBYm9ydDogdHJ1ZSB9KSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGlwZVRvIG11c3Qg
cmVqZWN0IHdpdGggdGhlIHNhbWUgZXJyb3InKTsKKworICB0LnN0ZXBfdGltZW91dCgoKSA9PiB7
CisgICAgcnMuY29udHJvbGxlci5lbnF1ZXVlKCdIZWxsbycpOworICAgIHQuc3RlcF90aW1lb3V0
KCgpID0+IHJzLmNvbnRyb2xsZXIuZXJyb3IoZXJyb3IxKSwgMTApOworICB9LCAxMCk7CisKKyAg
cmV0dXJuIHBpcGVQcm9taXNlLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9hcnJheV9lcXVhbHMo
cnMuZXZlbnRzV2l0aG91dFB1bGxzLCBbXSk7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5l
dmVudHMsIFsnd3JpdGUnLCAnSGVsbG8nXSk7CisgIH0pOworCit9LCAnRXJyb3JzIG11c3QgYmUg
cHJvcGFnYXRlZCBmb3J3YXJkOiBiZWNvbWVzIGVycm9yZWQgYWZ0ZXIgb25lIGNodW5rOyBwcmV2
ZW50QWJvcnQgPSB0cnVlJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKworICBjb25zdCBycyA9
IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKCk7CisKKyAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0
YWJsZVN0cmVhbSh1bmRlZmluZWQsIG5ldyBDb3VudFF1ZXVpbmdTdHJhdGVneSh7IGhpZ2hXYXRl
ck1hcms6IDAgfSkpOworCisgIGNvbnN0IHBpcGVQcm9taXNlID0gcHJvbWlzZV9yZWplY3RzX2V4
YWN0bHkodCwgZXJyb3IxLCBycy5waXBlVG8od3MpLCAncGlwZVRvIG11c3QgcmVqZWN0IHdpdGgg
dGhlIHNhbWUgZXJyb3InKTsKKworICB0LnN0ZXBfdGltZW91dCgoKSA9PiB7CisgICAgcnMuY29u
dHJvbGxlci5lbnF1ZXVlKCdIZWxsbycpOworICAgIHQuc3RlcF90aW1lb3V0KCgpID0+IHJzLmNv
bnRyb2xsZXIuZXJyb3IoZXJyb3IxKSwgMTApOworICB9LCAxMCk7CisKKyAgcmV0dXJuIHBpcGVQ
cm9taXNlLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9hcnJheV9lcXVhbHMocnMuZXZlbnRzV2l0
aG91dFB1bGxzLCBbXSk7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsnYWJv
cnQnLCBlcnJvcjFdKTsKKyAgfSk7CisKK30sICdFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGZv
cndhcmQ6IGJlY29tZXMgZXJyb3JlZCBhZnRlciBvbmUgY2h1bms7IGRlc3QgbmV2ZXIgZGVzaXJl
cyBjaHVua3M7ICcgKworICAgJ3ByZXZlbnRBYm9ydCA9IGZhbHNlOyBmdWxmaWxsZWQgYWJvcnQg
cHJvbWlzZScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisKKyAgY29uc3QgcnMgPSByZWNvcmRp
bmdSZWFkYWJsZVN0cmVhbSgpOworCisgIGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJl
YW0oeworICAgIGFib3J0KCkgeworICAgICAgdGhyb3cgZXJyb3IyOworICAgIH0KKyAgfSwgbmV3
IENvdW50UXVldWluZ1N0cmF0ZWd5KHsgaGlnaFdhdGVyTWFyazogMCB9KSk7CisKKyAgY29uc3Qg
cGlwZVByb21pc2UgPSBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjIsIHJzLnBpcGVU
byh3cyksICdwaXBlVG8gbXVzdCByZWplY3Qgd2l0aCB0aGUgYWJvcnQgZXJyb3InKTsKKworICB0
LnN0ZXBfdGltZW91dCgoKSA9PiB7CisgICAgcnMuY29udHJvbGxlci5lbnF1ZXVlKCdIZWxsbycp
OworICAgIHQuc3RlcF90aW1lb3V0KCgpID0+IHJzLmNvbnRyb2xsZXIuZXJyb3IoZXJyb3IxKSwg
MTApOworICB9LCAxMCk7CisKKyAgcmV0dXJuIHBpcGVQcm9taXNlLnRoZW4oKCkgPT4geworICAg
IGFzc2VydF9hcnJheV9lcXVhbHMocnMuZXZlbnRzV2l0aG91dFB1bGxzLCBbXSk7CisgICAgYXNz
ZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsnYWJvcnQnLCBlcnJvcjFdKTsKKyAgfSk7CisK
K30sICdFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IGJlY29tZXMgZXJyb3JlZCBh
ZnRlciBvbmUgY2h1bms7IGRlc3QgbmV2ZXIgZGVzaXJlcyBjaHVua3M7ICcgKworICAgJ3ByZXZl
bnRBYm9ydCA9IGZhbHNlOyByZWplY3RlZCBhYm9ydCBwcm9taXNlJyk7CisKK3Byb21pc2VfdGVz
dCh0ID0+IHsKKworICBjb25zdCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKCk7CisKKyAg
Y29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSh1bmRlZmluZWQsIG5ldyBDb3VudFF1
ZXVpbmdTdHJhdGVneSh7IGhpZ2hXYXRlck1hcms6IDAgfSkpOworCisgIGNvbnN0IHBpcGVQcm9t
aXNlID0gcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCBycy5waXBlVG8od3MsIHsg
cHJldmVudEFib3J0OiB0cnVlIH0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICdwaXBlVG8gbXVzdCByZWplY3Qgd2l0aCB0aGUgc2FtZSBlcnJvcicpOwor
CisgIHQuc3RlcF90aW1lb3V0KCgpID0+IHsKKyAgICBycy5jb250cm9sbGVyLmVucXVldWUoJ0hl
bGxvJyk7CisgICAgdC5zdGVwX3RpbWVvdXQoKCkgPT4gcnMuY29udHJvbGxlci5lcnJvcihlcnJv
cjEpLCAxMCk7CisgIH0sIDEwKTsKKworICByZXR1cm4gcGlwZVByb21pc2UudGhlbigoKSA9PiB7
CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhycy5ldmVudHNXaXRob3V0UHVsbHMsIFtdKTsKKyAg
ICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgW10pOworICB9KTsKKworfSwgJ0Vycm9y
cyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogYmVjb21lcyBlcnJvcmVkIGFmdGVyIG9uZSBj
aHVuazsgZGVzdCBuZXZlciBkZXNpcmVzIGNodW5rczsgJyArCisgICAncHJldmVudEFib3J0ID0g
dHJ1ZScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisKKyAgY29uc3QgcnMgPSByZWNvcmRpbmdS
ZWFkYWJsZVN0cmVhbSgpOworCisgIGxldCByZXNvbHZlV3JpdGVDYWxsZWQ7CisgIGNvbnN0IHdy
aXRlQ2FsbGVkUHJvbWlzZSA9IG5ldyBQcm9taXNlKHJlc29sdmUgPT4geworICAgIHJlc29sdmVX
cml0ZUNhbGxlZCA9IHJlc29sdmU7CisgIH0pOworCisgIGxldCByZXNvbHZlV3JpdGVQcm9taXNl
OworICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKHsKKyAgICB3cml0ZSgpIHsK
KyAgICAgIHJlc29sdmVXcml0ZUNhbGxlZCgpOworCisgICAgICByZXR1cm4gbmV3IFByb21pc2Uo
cmVzb2x2ZSA9PiB7CisgICAgICAgIHJlc29sdmVXcml0ZVByb21pc2UgPSByZXNvbHZlOworICAg
ICAgfSk7CisgICAgfQorICB9KTsKKworICBsZXQgcGlwZUNvbXBsZXRlID0gZmFsc2U7CisgIGNv
bnN0IHBpcGVQcm9taXNlID0gcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCBycy5w
aXBlVG8od3MpKS50aGVuKCgpID0+IHsKKyAgICBwaXBlQ29tcGxldGUgPSB0cnVlOworICB9KTsK
KworICBycy5jb250cm9sbGVyLmVucXVldWUoJ2EnKTsKKworICByZXR1cm4gd3JpdGVDYWxsZWRQ
cm9taXNlLnRoZW4oKCkgPT4geworICAgIHJzLmNvbnRyb2xsZXIuZXJyb3IoZXJyb3IxKTsKKwor
ICAgIC8vIEZsdXNoIGFzeW5jIGV2ZW50cyBhbmQgdmVyaWZ5IHRoYXQgbm8gc2h1dGRvd24gb2Nj
dXJzLgorICAgIHJldHVybiBmbHVzaEFzeW5jRXZlbnRzKCk7CisgIH0pLnRoZW4oKCkgPT4gewor
ICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ3dyaXRlJywgJ2EnXSk7IC8vIG5v
ICdhYm9ydCcKKyAgICBhc3NlcnRfZXF1YWxzKHBpcGVDb21wbGV0ZSwgZmFsc2UsICd0aGUgcGlw
ZSBtdXN0IG5vdCBiZSBjb21wbGV0ZScpOworCisgICAgcmVzb2x2ZVdyaXRlUHJvbWlzZSgpOwor
CisgICAgcmV0dXJuIHBpcGVQcm9taXNlLnRoZW4oKCkgPT4geworICAgICAgYXNzZXJ0X2FycmF5
X2VxdWFscyh3cy5ldmVudHMsIFsnd3JpdGUnLCAnYScsICdhYm9ydCcsIGVycm9yMV0pOworICAg
IH0pOworICB9KTsKKworfSwgJ0Vycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc2h1
dGRvd24gbXVzdCBub3Qgb2NjdXIgdW50aWwgdGhlIGZpbmFsIHdyaXRlIGNvbXBsZXRlcycpOwor
Citwcm9taXNlX3Rlc3QodCA9PiB7CisKKyAgY29uc3QgcnMgPSByZWNvcmRpbmdSZWFkYWJsZVN0
cmVhbSgpOworCisgIGxldCByZXNvbHZlV3JpdGVDYWxsZWQ7CisgIGNvbnN0IHdyaXRlQ2FsbGVk
UHJvbWlzZSA9IG5ldyBQcm9taXNlKHJlc29sdmUgPT4geworICAgIHJlc29sdmVXcml0ZUNhbGxl
ZCA9IHJlc29sdmU7CisgIH0pOworCisgIGxldCByZXNvbHZlV3JpdGVQcm9taXNlOworICBjb25z
dCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKHsKKyAgICB3cml0ZSgpIHsKKyAgICAgIHJl
c29sdmVXcml0ZUNhbGxlZCgpOworCisgICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9
PiB7CisgICAgICAgIHJlc29sdmVXcml0ZVByb21pc2UgPSByZXNvbHZlOworICAgICAgfSk7Cisg
ICAgfQorICB9KTsKKworICBsZXQgcGlwZUNvbXBsZXRlID0gZmFsc2U7CisgIGNvbnN0IHBpcGVQ
cm9taXNlID0gcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCBycy5waXBlVG8od3Ms
IHsgcHJldmVudEFib3J0OiB0cnVlIH0pKS50aGVuKCgpID0+IHsKKyAgICBwaXBlQ29tcGxldGUg
PSB0cnVlOworICB9KTsKKworICBycy5jb250cm9sbGVyLmVucXVldWUoJ2EnKTsKKworICByZXR1
cm4gd3JpdGVDYWxsZWRQcm9taXNlLnRoZW4oKCkgPT4geworICAgIHJzLmNvbnRyb2xsZXIuZXJy
b3IoZXJyb3IxKTsKKworICAgIC8vIEZsdXNoIGFzeW5jIGV2ZW50cyBhbmQgdmVyaWZ5IHRoYXQg
bm8gc2h1dGRvd24gb2NjdXJzLgorICAgIHJldHVybiBmbHVzaEFzeW5jRXZlbnRzKCk7CisgIH0p
LnRoZW4oKCkgPT4geworICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ3dyaXRl
JywgJ2EnXSk7IC8vIG5vICdhYm9ydCcKKyAgICBhc3NlcnRfZXF1YWxzKHBpcGVDb21wbGV0ZSwg
ZmFsc2UsICd0aGUgcGlwZSBtdXN0IG5vdCBiZSBjb21wbGV0ZScpOworCisgICAgcmVzb2x2ZVdy
aXRlUHJvbWlzZSgpOworICAgIHJldHVybiBwaXBlUHJvbWlzZTsKKyAgfSkudGhlbigoKSA9PiBm
bHVzaEFzeW5jRXZlbnRzKCkpLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9hcnJheV9lcXVhbHMo
d3MuZXZlbnRzLCBbJ3dyaXRlJywgJ2EnXSk7IC8vIG5vICdhYm9ydCcKKyAgfSk7CisKK30sICdF
cnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHNodXRkb3duIG11c3Qgbm90IG9jY3Vy
IHVudGlsIHRoZSBmaW5hbCB3cml0ZSBjb21wbGV0ZXM7IHByZXZlbnRBYm9ydCA9IHRydWUnKTsK
KworcHJvbWlzZV90ZXN0KHQgPT4geworCisgIGNvbnN0IHJzID0gcmVjb3JkaW5nUmVhZGFibGVT
dHJlYW0oKTsKKworICBsZXQgcmVzb2x2ZVdyaXRlQ2FsbGVkOworICBjb25zdCB3cml0ZUNhbGxl
ZFByb21pc2UgPSBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKKyAgICByZXNvbHZlV3JpdGVDYWxs
ZWQgPSByZXNvbHZlOworICB9KTsKKworICBsZXQgcmVzb2x2ZVdyaXRlUHJvbWlzZTsKKyAgY29u
c3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSh7CisgICAgd3JpdGUoKSB7CisgICAgICBy
ZXNvbHZlV3JpdGVDYWxsZWQoKTsKKworICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUg
PT4geworICAgICAgICByZXNvbHZlV3JpdGVQcm9taXNlID0gcmVzb2x2ZTsKKyAgICAgIH0pOwor
ICAgIH0KKyAgfSwgbmV3IENvdW50UXVldWluZ1N0cmF0ZWd5KHsgaGlnaFdhdGVyTWFyazogMiB9
KSk7CisKKyAgbGV0IHBpcGVDb21wbGV0ZSA9IGZhbHNlOworICBjb25zdCBwaXBlUHJvbWlzZSA9
IHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMSwgcnMucGlwZVRvKHdzKSkudGhlbigo
KSA9PiB7CisgICAgcGlwZUNvbXBsZXRlID0gdHJ1ZTsKKyAgfSk7CisKKyAgcnMuY29udHJvbGxl
ci5lbnF1ZXVlKCdhJyk7CisgIHJzLmNvbnRyb2xsZXIuZW5xdWV1ZSgnYicpOworCisgIHJldHVy
biB3cml0ZUNhbGxlZFByb21pc2UudGhlbigoKSA9PiBmbHVzaEFzeW5jRXZlbnRzKCkpLnRoZW4o
KCkgPT4geworICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ3dyaXRlJywgJ2En
XSwKKyAgICAgICd0aGUgZmlyc3QgY2h1bmsgbXVzdCBoYXZlIGJlZW4gd3JpdHRlbiwgYnV0IGFi
b3J0IG11c3Qgbm90IGhhdmUgaGFwcGVuZWQgeWV0Jyk7CisgICAgYXNzZXJ0X2ZhbHNlKHBpcGVD
b21wbGV0ZSwgJ3RoZSBwaXBlIHNob3VsZCBub3QgY29tcGxldGUgd2hpbGUgdGhlIGZpcnN0IHdy
aXRlIGlzIHBlbmRpbmcnKTsKKworICAgIHJzLmNvbnRyb2xsZXIuZXJyb3IoZXJyb3IxKTsKKyAg
ICByZXNvbHZlV3JpdGVQcm9taXNlKCk7CisgICAgcmV0dXJuIGZsdXNoQXN5bmNFdmVudHMoKTsK
KyAgfSkudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsn
d3JpdGUnLCAnYScsICd3cml0ZScsICdiJ10sCisgICAgICAndGhlIHNlY29uZCBjaHVuayBtdXN0
IGhhdmUgYmVlbiB3cml0dGVuLCBidXQgYWJvcnQgbXVzdCBub3QgaGF2ZSBoYXBwZW5lZCB5ZXQn
KTsKKyAgICBhc3NlcnRfZmFsc2UocGlwZUNvbXBsZXRlLCAndGhlIHBpcGUgc2hvdWxkIG5vdCBj
b21wbGV0ZSB3aGlsZSB0aGUgc2Vjb25kIHdyaXRlIGlzIHBlbmRpbmcnKTsKKworICAgIHJlc29s
dmVXcml0ZVByb21pc2UoKTsKKyAgICByZXR1cm4gcGlwZVByb21pc2U7CisgIH0pLnRoZW4oKCkg
PT4geworICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ3dyaXRlJywgJ2EnLCAn
d3JpdGUnLCAnYicsICdhYm9ydCcsIGVycm9yMV0sCisgICAgICAnYWxsIGNodW5rcyBtdXN0IGhh
dmUgYmVlbiB3cml0dGVuIGFuZCBhYm9ydCBtdXN0IGhhdmUgaGFwcGVuZWQnKTsKKyAgfSk7CisK
K30sICdFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHNodXRkb3duIG11c3Qgbm90
IG9jY3VyIHVudGlsIHRoZSBmaW5hbCB3cml0ZSBjb21wbGV0ZXM7IGJlY29tZXMgZXJyb3JlZCBh
ZnRlciBmaXJzdCB3cml0ZScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisKKyAgY29uc3QgcnMg
PSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSgpOworCisgIGxldCByZXNvbHZlV3JpdGVDYWxsZWQ7
CisgIGNvbnN0IHdyaXRlQ2FsbGVkUHJvbWlzZSA9IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gewor
ICAgIHJlc29sdmVXcml0ZUNhbGxlZCA9IHJlc29sdmU7CisgIH0pOworCisgIGxldCByZXNvbHZl
V3JpdGVQcm9taXNlOworICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKHsKKyAg
ICB3cml0ZSgpIHsKKyAgICAgIHJlc29sdmVXcml0ZUNhbGxlZCgpOworCisgICAgICByZXR1cm4g
bmV3IFByb21pc2UocmVzb2x2ZSA9PiB7CisgICAgICAgIHJlc29sdmVXcml0ZVByb21pc2UgPSBy
ZXNvbHZlOworICAgICAgfSk7CisgICAgfQorICB9LCBuZXcgQ291bnRRdWV1aW5nU3RyYXRlZ3ko
eyBoaWdoV2F0ZXJNYXJrOiAyIH0pKTsKKworICBsZXQgcGlwZUNvbXBsZXRlID0gZmFsc2U7Cisg
IGNvbnN0IHBpcGVQcm9taXNlID0gcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCBy
cy5waXBlVG8od3MsIHsgcHJldmVudEFib3J0OiB0cnVlIH0pKS50aGVuKCgpID0+IHsKKyAgICBw
aXBlQ29tcGxldGUgPSB0cnVlOworICB9KTsKKworICBycy5jb250cm9sbGVyLmVucXVldWUoJ2En
KTsKKyAgcnMuY29udHJvbGxlci5lbnF1ZXVlKCdiJyk7CisKKyAgcmV0dXJuIHdyaXRlQ2FsbGVk
UHJvbWlzZS50aGVuKCgpID0+IGZsdXNoQXN5bmNFdmVudHMoKSkudGhlbigoKSA9PiB7CisgICAg
YXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsnd3JpdGUnLCAnYSddLAorICAgICAgJ3Ro
ZSBmaXJzdCBjaHVuayBtdXN0IGhhdmUgYmVlbiB3cml0dGVuLCBidXQgYWJvcnQgbXVzdCBub3Qg
aGF2ZSBoYXBwZW5lZCcpOworICAgIGFzc2VydF9mYWxzZShwaXBlQ29tcGxldGUsICd0aGUgcGlw
ZSBzaG91bGQgbm90IGNvbXBsZXRlIHdoaWxlIHRoZSBmaXJzdCB3cml0ZSBpcyBwZW5kaW5nJyk7
CisKKyAgICBycy5jb250cm9sbGVyLmVycm9yKGVycm9yMSk7CisgICAgcmVzb2x2ZVdyaXRlUHJv
bWlzZSgpOworICB9KS50aGVuKCgpID0+IGZsdXNoQXN5bmNFdmVudHMoKSkudGhlbigoKSA9PiB7
CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsnd3JpdGUnLCAnYScsICd3cml0
ZScsICdiJ10sCisgICAgICAndGhlIHNlY29uZCBjaHVuayBtdXN0IGhhdmUgYmVlbiB3cml0dGVu
LCBidXQgYWJvcnQgbXVzdCBub3QgaGF2ZSBoYXBwZW5lZCcpOworICAgIGFzc2VydF9mYWxzZShw
aXBlQ29tcGxldGUsICd0aGUgcGlwZSBzaG91bGQgbm90IGNvbXBsZXRlIHdoaWxlIHRoZSBzZWNv
bmQgd3JpdGUgaXMgcGVuZGluZycpOworCisgICAgcmVzb2x2ZVdyaXRlUHJvbWlzZSgpOworICAg
IHJldHVybiBwaXBlUHJvbWlzZTsKKyAgfSkudGhlbigoKSA9PiBmbHVzaEFzeW5jRXZlbnRzKCkp
LnRoZW4oKCkgPT4geworICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ3dyaXRl
JywgJ2EnLCAnd3JpdGUnLCAnYiddLAorICAgICAgJ2FsbCBjaHVua3MgbXVzdCBoYXZlIGJlZW4g
d3JpdHRlbiwgYnV0IGFib3J0IG11c3Qgbm90IGhhdmUgaGFwcGVuZWQnKTsKKyAgfSk7CisKK30s
ICdFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHNodXRkb3duIG11c3Qgbm90IG9j
Y3VyIHVudGlsIHRoZSBmaW5hbCB3cml0ZSBjb21wbGV0ZXM7IGJlY29tZXMgZXJyb3JlZCBhZnRl
ciBmaXJzdCB3cml0ZTsgcHJldmVudEFib3J0ID0gdHJ1ZScpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9lcnJv
ci1wcm9wYWdhdGlvbi1mb3J3YXJkLmFueS53b3JrZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9lcnJvci1w
cm9wYWdhdGlvbi1mb3J3YXJkLmFueS53b3JrZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNj
ZWVlMjdkMGI4YjM1NGZmOWQ4ZTI5YTQwOWY2ZjI5MGQwNmFhMGEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlw
aW5nL2Vycm9yLXByb3BhZ2F0aW9uLWZvcndhcmQuYW55Lndvcmtlci1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwzNCBAQAorCitGQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDog
c3RhcnRzIGVycm9yZWQ7IHByZXZlbnRBYm9ydCA9IGZhbHNlOyBmdWxmaWxsZWQgYWJvcnQgcHJv
bWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBFcnJvcnMgbXVz
dCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHN0YXJ0cyBlcnJvcmVkOyBwcmV2ZW50QWJvcnQgPSBm
YWxzZTsgcmVqZWN0ZWQgYWJvcnQgcHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJs
ZVN0cmVhbQorRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHN0YXJ0cyBl
cnJvcmVkOyBwcmV2ZW50QWJvcnQgPSB1bmRlZmluZWQgKGZhbHN5KTsgZnVsZmlsbGVkIGFib3J0
IHByb21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgRXJyb3Jz
IG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBzdGFydHMgZXJyb3JlZDsgcHJldmVudEFib3J0
ID0gbnVsbCAoZmFsc3kpOyBmdWxmaWxsZWQgYWJvcnQgcHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlh
YmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndh
cmQ6IHN0YXJ0cyBlcnJvcmVkOyBwcmV2ZW50QWJvcnQgPSBmYWxzZSAoZmFsc3kpOyBmdWxmaWxs
ZWQgYWJvcnQgcHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJ
TCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHN0YXJ0cyBlcnJvcmVkOyBwcmV2
ZW50QWJvcnQgPSAwIChmYWxzeSk7IGZ1bGZpbGxlZCBhYm9ydCBwcm9taXNlIENhbid0IGZpbmQg
dmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQg
Zm9yd2FyZDogc3RhcnRzIGVycm9yZWQ7IHByZXZlbnRBYm9ydCA9IC0wIChmYWxzeSk7IGZ1bGZp
bGxlZCBhYm9ydCBwcm9taXNlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitG
QUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc3RhcnRzIGVycm9yZWQ7IHBy
ZXZlbnRBYm9ydCA9IE5hTiAoZmFsc3kpOyBmdWxmaWxsZWQgYWJvcnQgcHJvbWlzZSBDYW4ndCBm
aW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdh
dGVkIGZvcndhcmQ6IHN0YXJ0cyBlcnJvcmVkOyBwcmV2ZW50QWJvcnQgPSAgKGZhbHN5KTsgZnVs
ZmlsbGVkIGFib3J0IHByb21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0K
K0ZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBzdGFydHMgZXJyb3JlZDsg
cHJldmVudEFib3J0ID0gdHJ1ZSAodHJ1dGh5KSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJs
ZVN0cmVhbQorRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHN0YXJ0cyBl
cnJvcmVkOyBwcmV2ZW50QWJvcnQgPSBhICh0cnV0aHkpIENhbid0IGZpbmQgdmFyaWFibGU6IFdy
aXRhYmxlU3RyZWFtCitGQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc3Rh
cnRzIGVycm9yZWQ7IHByZXZlbnRBYm9ydCA9IDEgKHRydXRoeSkgQ2FuJ3QgZmluZCB2YXJpYWJs
ZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJk
OiBzdGFydHMgZXJyb3JlZDsgcHJldmVudEFib3J0ID0gU3ltYm9sKCkgKHRydXRoeSkgQ2FuJ3Qg
ZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFn
YXRlZCBmb3J3YXJkOiBzdGFydHMgZXJyb3JlZDsgcHJldmVudEFib3J0ID0gW29iamVjdCBPYmpl
Y3RdICh0cnV0aHkpIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIEVy
cm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc3RhcnRzIGVycm9yZWQ7IHByZXZlbnRB
Ym9ydCA9IHRydWUsIHByZXZlbnRDYW5jZWwgPSB0cnVlIENhbid0IGZpbmQgdmFyaWFibGU6IFdy
aXRhYmxlU3RyZWFtCitGQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc3Rh
cnRzIGVycm9yZWQ7IHByZXZlbnRBYm9ydCA9IHRydWUsIHByZXZlbnRDYW5jZWwgPSB0cnVlLCBw
cmV2ZW50Q2xvc2UgPSB0cnVlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitG
QUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogYmVjb21lcyBlcnJvcmVkIHdo
aWxlIGVtcHR5OyBwcmV2ZW50QWJvcnQgPSBmYWxzZTsgZnVsZmlsbGVkIGFib3J0IHByb21pc2Ug
Q2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgRXJyb3JzIG11c3QgYmUg
cHJvcGFnYXRlZCBmb3J3YXJkOiBiZWNvbWVzIGVycm9yZWQgd2hpbGUgZW1wdHk7IHByZXZlbnRB
Ym9ydCA9IGZhbHNlOyByZWplY3RlZCBhYm9ydCBwcm9taXNlIENhbid0IGZpbmQgdmFyaWFibGU6
IFdyaXRhYmxlU3RyZWFtCitGQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDog
YmVjb21lcyBlcnJvcmVkIHdoaWxlIGVtcHR5OyBwcmV2ZW50QWJvcnQgPSB0cnVlIENhbid0IGZp
bmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0
ZWQgZm9yd2FyZDogYmVjb21lcyBlcnJvcmVkIHdoaWxlIGVtcHR5OyBkZXN0IG5ldmVyIGRlc2ly
ZXMgY2h1bmtzOyBwcmV2ZW50QWJvcnQgPSBmYWxzZTsgZnVsZmlsbGVkIGFib3J0IHByb21pc2Ug
Q2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgRXJyb3JzIG11c3QgYmUg
cHJvcGFnYXRlZCBmb3J3YXJkOiBiZWNvbWVzIGVycm9yZWQgd2hpbGUgZW1wdHk7IGRlc3QgbmV2
ZXIgZGVzaXJlcyBjaHVua3M7IHByZXZlbnRBYm9ydCA9IGZhbHNlOyByZWplY3RlZCBhYm9ydCBw
cm9taXNlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIEVycm9ycyBt
dXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogYmVjb21lcyBlcnJvcmVkIHdoaWxlIGVtcHR5OyBk
ZXN0IG5ldmVyIGRlc2lyZXMgY2h1bmtzOyBwcmV2ZW50QWJvcnQgPSB0cnVlIENhbid0IGZpbmQg
dmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQg
Zm9yd2FyZDogYmVjb21lcyBlcnJvcmVkIGFmdGVyIG9uZSBjaHVuazsgcHJldmVudEFib3J0ID0g
ZmFsc2U7IGZ1bGZpbGxlZCBhYm9ydCBwcm9taXNlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRh
YmxlU3RyZWFtCitGQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogYmVjb21l
cyBlcnJvcmVkIGFmdGVyIG9uZSBjaHVuazsgcHJldmVudEFib3J0ID0gZmFsc2U7IHJlamVjdGVk
IGFib3J0IHByb21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwg
RXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBiZWNvbWVzIGVycm9yZWQgYWZ0ZXIg
b25lIGNodW5rOyBwcmV2ZW50QWJvcnQgPSB0cnVlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRh
YmxlU3RyZWFtCitGQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogYmVjb21l
cyBlcnJvcmVkIGFmdGVyIG9uZSBjaHVuazsgZGVzdCBuZXZlciBkZXNpcmVzIGNodW5rczsgcHJl
dmVudEFib3J0ID0gZmFsc2U7IGZ1bGZpbGxlZCBhYm9ydCBwcm9taXNlIENhbid0IGZpbmQgdmFy
aWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9y
d2FyZDogYmVjb21lcyBlcnJvcmVkIGFmdGVyIG9uZSBjaHVuazsgZGVzdCBuZXZlciBkZXNpcmVz
IGNodW5rczsgcHJldmVudEFib3J0ID0gZmFsc2U7IHJlamVjdGVkIGFib3J0IHByb21pc2UgQ2Fu
J3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgRXJyb3JzIG11c3QgYmUgcHJv
cGFnYXRlZCBmb3J3YXJkOiBiZWNvbWVzIGVycm9yZWQgYWZ0ZXIgb25lIGNodW5rOyBkZXN0IG5l
dmVyIGRlc2lyZXMgY2h1bmtzOyBwcmV2ZW50QWJvcnQgPSB0cnVlIENhbid0IGZpbmQgdmFyaWFi
bGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2Fy
ZDogc2h1dGRvd24gbXVzdCBub3Qgb2NjdXIgdW50aWwgdGhlIGZpbmFsIHdyaXRlIGNvbXBsZXRl
cyBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBFcnJvcnMgbXVzdCBi
ZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHNodXRkb3duIG11c3Qgbm90IG9jY3VyIHVudGlsIHRoZSBm
aW5hbCB3cml0ZSBjb21wbGV0ZXM7IHByZXZlbnRBYm9ydCA9IHRydWUgQ2FuJ3QgZmluZCB2YXJp
YWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3
YXJkOiBzaHV0ZG93biBtdXN0IG5vdCBvY2N1ciB1bnRpbCB0aGUgZmluYWwgd3JpdGUgY29tcGxl
dGVzOyBiZWNvbWVzIGVycm9yZWQgYWZ0ZXIgZmlyc3Qgd3JpdGUgQ2FuJ3QgZmluZCB2YXJpYWJs
ZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJk
OiBzaHV0ZG93biBtdXN0IG5vdCBvY2N1ciB1bnRpbCB0aGUgZmluYWwgd3JpdGUgY29tcGxldGVz
OyBiZWNvbWVzIGVycm9yZWQgYWZ0ZXIgZmlyc3Qgd3JpdGU7IHByZXZlbnRBYm9ydCA9IHRydWUg
Q2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9lcnJv
ci1wcm9wYWdhdGlvbi1mb3J3YXJkLmFueS53b3JrZXIuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvZXJyb3ItcHJvcGFnYXRp
b24tZm9yd2FyZC5hbnkud29ya2VyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjM4MjkxMzUyOGU2OTNiM2E1
ZDU2YzY2MGE0NTA2MDk4MGI1NDhjMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvZXJyb3ItcHJvcGFn
YXRpb24tZm9yd2FyZC5hbnkud29ya2VyLmh0bWwKQEAgLTAsMCArMSBAQAorPCEtLSBUaGlzIGZp
bGUgaXMgcmVxdWlyZWQgZm9yIFdlYktpdCB0ZXN0IGluZnJhc3RydWN0dXJlIHRvIHJ1biB0aGUg
dGVtcGxhdGVkIHRlc3QgLS0+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3Bp
cGluZy9lcnJvci1wcm9wYWdhdGlvbi1mb3J3YXJkLmRlZGljYXRlZHdvcmtlci1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
cGlwaW5nL2Vycm9yLXByb3BhZ2F0aW9uLWZvcndhcmQuZGVkaWNhdGVkd29ya2VyLWV4cGVjdGVk
LnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2NlZWUyN2QwYjhiMzU0ZmY5ZDhl
MjlhNDA5ZjZmMjkwZDA2YWEwYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMvcGlwaW5nL2Vycm9yLXByb3BhZ2F0aW9uLWZvcndhcmQuZGVkaWNhdGVkd29ya2VyLWV4
cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLQotRkFJTCBFcnJvcnMg
bXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHN0YXJ0cyBlcnJvcmVkOyBwcmV2ZW50QWJvcnQg
PSBmYWxzZTsgZnVsZmlsbGVkIGFib3J0IHByb21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3Jp
dGFibGVTdHJlYW0KLUZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBzdGFy
dHMgZXJyb3JlZDsgcHJldmVudEFib3J0ID0gZmFsc2U7IHJlamVjdGVkIGFib3J0IHByb21pc2Ug
Q2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgRXJyb3JzIG11c3QgYmUg
cHJvcGFnYXRlZCBmb3J3YXJkOiBzdGFydHMgZXJyb3JlZDsgcHJldmVudEFib3J0ID0gdW5kZWZp
bmVkIChmYWxzeSk7IGZ1bGZpbGxlZCBhYm9ydCBwcm9taXNlIENhbid0IGZpbmQgdmFyaWFibGU6
IFdyaXRhYmxlU3RyZWFtCi1GQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDog
c3RhcnRzIGVycm9yZWQ7IHByZXZlbnRBYm9ydCA9IG51bGwgKGZhbHN5KTsgZnVsZmlsbGVkIGFi
b3J0IHByb21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgRXJy
b3JzIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBzdGFydHMgZXJyb3JlZDsgcHJldmVudEFi
b3J0ID0gZmFsc2UgKGZhbHN5KTsgZnVsZmlsbGVkIGFib3J0IHByb21pc2UgQ2FuJ3QgZmluZCB2
YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBm
b3J3YXJkOiBzdGFydHMgZXJyb3JlZDsgcHJldmVudEFib3J0ID0gMCAoZmFsc3kpOyBmdWxmaWxs
ZWQgYWJvcnQgcHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJ
TCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHN0YXJ0cyBlcnJvcmVkOyBwcmV2
ZW50QWJvcnQgPSAtMCAoZmFsc3kpOyBmdWxmaWxsZWQgYWJvcnQgcHJvbWlzZSBDYW4ndCBmaW5k
IHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVk
IGZvcndhcmQ6IHN0YXJ0cyBlcnJvcmVkOyBwcmV2ZW50QWJvcnQgPSBOYU4gKGZhbHN5KTsgZnVs
ZmlsbGVkIGFib3J0IHByb21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0K
LUZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBzdGFydHMgZXJyb3JlZDsg
cHJldmVudEFib3J0ID0gIChmYWxzeSk7IGZ1bGZpbGxlZCBhYm9ydCBwcm9taXNlIENhbid0IGZp
bmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0
ZWQgZm9yd2FyZDogc3RhcnRzIGVycm9yZWQ7IHByZXZlbnRBYm9ydCA9IHRydWUgKHRydXRoeSkg
Q2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgRXJyb3JzIG11c3QgYmUg
cHJvcGFnYXRlZCBmb3J3YXJkOiBzdGFydHMgZXJyb3JlZDsgcHJldmVudEFib3J0ID0gYSAodHJ1
dGh5KSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBFcnJvcnMgbXVz
dCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHN0YXJ0cyBlcnJvcmVkOyBwcmV2ZW50QWJvcnQgPSAx
ICh0cnV0aHkpIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIEVycm9y
cyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc3RhcnRzIGVycm9yZWQ7IHByZXZlbnRBYm9y
dCA9IFN5bWJvbCgpICh0cnV0aHkpIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFt
Ci1GQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc3RhcnRzIGVycm9yZWQ7
IHByZXZlbnRBYm9ydCA9IFtvYmplY3QgT2JqZWN0XSAodHJ1dGh5KSBDYW4ndCBmaW5kIHZhcmlh
YmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndh
cmQ6IHN0YXJ0cyBlcnJvcmVkOyBwcmV2ZW50QWJvcnQgPSB0cnVlLCBwcmV2ZW50Q2FuY2VsID0g
dHJ1ZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBFcnJvcnMgbXVz
dCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHN0YXJ0cyBlcnJvcmVkOyBwcmV2ZW50QWJvcnQgPSB0
cnVlLCBwcmV2ZW50Q2FuY2VsID0gdHJ1ZSwgcHJldmVudENsb3NlID0gdHJ1ZSBDYW4ndCBmaW5k
IHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVk
IGZvcndhcmQ6IGJlY29tZXMgZXJyb3JlZCB3aGlsZSBlbXB0eTsgcHJldmVudEFib3J0ID0gZmFs
c2U7IGZ1bGZpbGxlZCBhYm9ydCBwcm9taXNlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxl
U3RyZWFtCi1GQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogYmVjb21lcyBl
cnJvcmVkIHdoaWxlIGVtcHR5OyBwcmV2ZW50QWJvcnQgPSBmYWxzZTsgcmVqZWN0ZWQgYWJvcnQg
cHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBFcnJvcnMg
bXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IGJlY29tZXMgZXJyb3JlZCB3aGlsZSBlbXB0eTsg
cHJldmVudEFib3J0ID0gdHJ1ZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQot
RkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IGJlY29tZXMgZXJyb3JlZCB3
aGlsZSBlbXB0eTsgZGVzdCBuZXZlciBkZXNpcmVzIGNodW5rczsgcHJldmVudEFib3J0ID0gZmFs
c2U7IGZ1bGZpbGxlZCBhYm9ydCBwcm9taXNlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxl
U3RyZWFtCi1GQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogYmVjb21lcyBl
cnJvcmVkIHdoaWxlIGVtcHR5OyBkZXN0IG5ldmVyIGRlc2lyZXMgY2h1bmtzOyBwcmV2ZW50QWJv
cnQgPSBmYWxzZTsgcmVqZWN0ZWQgYWJvcnQgcHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBX
cml0YWJsZVN0cmVhbQotRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IGJl
Y29tZXMgZXJyb3JlZCB3aGlsZSBlbXB0eTsgZGVzdCBuZXZlciBkZXNpcmVzIGNodW5rczsgcHJl
dmVudEFib3J0ID0gdHJ1ZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJ
TCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IGJlY29tZXMgZXJyb3JlZCBhZnRl
ciBvbmUgY2h1bms7IHByZXZlbnRBYm9ydCA9IGZhbHNlOyBmdWxmaWxsZWQgYWJvcnQgcHJvbWlz
ZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBFcnJvcnMgbXVzdCBi
ZSBwcm9wYWdhdGVkIGZvcndhcmQ6IGJlY29tZXMgZXJyb3JlZCBhZnRlciBvbmUgY2h1bms7IHBy
ZXZlbnRBYm9ydCA9IGZhbHNlOyByZWplY3RlZCBhYm9ydCBwcm9taXNlIENhbid0IGZpbmQgdmFy
aWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9y
d2FyZDogYmVjb21lcyBlcnJvcmVkIGFmdGVyIG9uZSBjaHVuazsgcHJldmVudEFib3J0ID0gdHJ1
ZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBFcnJvcnMgbXVzdCBi
ZSBwcm9wYWdhdGVkIGZvcndhcmQ6IGJlY29tZXMgZXJyb3JlZCBhZnRlciBvbmUgY2h1bms7IGRl
c3QgbmV2ZXIgZGVzaXJlcyBjaHVua3M7IHByZXZlbnRBYm9ydCA9IGZhbHNlOyBmdWxmaWxsZWQg
YWJvcnQgcHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBF
cnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IGJlY29tZXMgZXJyb3JlZCBhZnRlciBv
bmUgY2h1bms7IGRlc3QgbmV2ZXIgZGVzaXJlcyBjaHVua3M7IHByZXZlbnRBYm9ydCA9IGZhbHNl
OyByZWplY3RlZCBhYm9ydCBwcm9taXNlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3Ry
ZWFtCi1GQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogYmVjb21lcyBlcnJv
cmVkIGFmdGVyIG9uZSBjaHVuazsgZGVzdCBuZXZlciBkZXNpcmVzIGNodW5rczsgcHJldmVudEFi
b3J0ID0gdHJ1ZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBFcnJv
cnMgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHNodXRkb3duIG11c3Qgbm90IG9jY3VyIHVu
dGlsIHRoZSBmaW5hbCB3cml0ZSBjb21wbGV0ZXMgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFi
bGVTdHJlYW0KLUZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBzaHV0ZG93
biBtdXN0IG5vdCBvY2N1ciB1bnRpbCB0aGUgZmluYWwgd3JpdGUgY29tcGxldGVzOyBwcmV2ZW50
QWJvcnQgPSB0cnVlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIEVy
cm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc2h1dGRvd24gbXVzdCBub3Qgb2NjdXIg
dW50aWwgdGhlIGZpbmFsIHdyaXRlIGNvbXBsZXRlczsgYmVjb21lcyBlcnJvcmVkIGFmdGVyIGZp
cnN0IHdyaXRlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIEVycm9y
cyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc2h1dGRvd24gbXVzdCBub3Qgb2NjdXIgdW50
aWwgdGhlIGZpbmFsIHdyaXRlIGNvbXBsZXRlczsgYmVjb21lcyBlcnJvcmVkIGFmdGVyIGZpcnN0
IHdyaXRlOyBwcmV2ZW50QWJvcnQgPSB0cnVlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxl
U3RyZWFtCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvZXJyb3ItcHJvcGFnYXRpb24tZm9yd2FyZC5kZWRpY2F0
ZWR3b3JrZXIuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy9waXBpbmcvZXJyb3ItcHJvcGFnYXRpb24tZm9yd2FyZC5kZWRpY2F0ZWR3b3Jr
ZXIuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDA5NDY4MDQxZTkzNWU3NzQ4
YzcwYmQ5YzA5YjBmNjFiOWI2NWE0Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMvcGlwaW5nL2Vycm9yLXByb3BhZ2F0aW9uLWZvcndhcmQuZGVkaWNhdGVkd29ya2Vy
Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxt
ZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTx0aXRsZT5lcnJvci1wcm9wYWdhdGlvbi1mb3J3YXJkLmpz
IGRlZGljYXRlZCB3b3JrZXIgd3JhcHBlciBmaWxlPC90aXRsZT4KLQotPHNjcmlwdCBzcmM9Ii9y
ZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotCi08c2NyaXB0PgotJ3VzZSBzdHJp
Y3QnOwotZmV0Y2hfdGVzdHNfZnJvbV93b3JrZXIobmV3IFdvcmtlcignZXJyb3ItcHJvcGFnYXRp
b24tZm9yd2FyZC5qcycpKTsKLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9lcnJvci1wcm9wYWdh
dGlvbi1mb3J3YXJkLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Vycm9yLXByb3BhZ2F0aW9uLWZvcndhcmQuaHRtbApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTk4YzU0NzI2MzEyOWYyNjE2M2VkNGM0MjkzYzVi
MzdmNGRjNDEzNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlw
aW5nL2Vycm9yLXByb3BhZ2F0aW9uLWZvcndhcmQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEx
ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHRpdGxl
PmVycm9yLXByb3BhZ2F0aW9uLWZvcndhcmQuanMgYnJvd3NlciBjb250ZXh0IHdyYXBwZXIgZmls
ZTwvdGl0bGU+Ci0KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3Nj
cmlwdD4KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3Nj
cmlwdD4KLQotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0LXV0aWxzLmpzIj48L3Njcmlw
dD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvcmVjb3JkaW5nLXN0cmVhbXMuanMiPjwvc2Ny
aXB0PgotCi08c2NyaXB0IHNyYz0iZXJyb3ItcHJvcGFnYXRpb24tZm9yd2FyZC5qcyI+PC9zY3Jp
cHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3N0cmVhbXMvcGlwaW5nL2Vycm9yLXByb3BhZ2F0aW9uLWZvcndhcmQuanMgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Vycm9y
LXByb3BhZ2F0aW9uLWZvcndhcmQuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk4
M2I5MmI5YzNmOGM3MDY3NWE2ZjlhNDU0OWFmNjBhOTQzOWU1NjYuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9lcnJvci1wcm9wYWdhdGlvbi1mb3J3YXJk
LmpzCisrKyAvZGV2L251bGwKQEAgLTEsNTc0ICswLDAgQEAKLSd1c2Ugc3RyaWN0JzsKLQotaWYg
KHNlbGYuaW1wb3J0U2NyaXB0cykgewotICBzZWxmLmltcG9ydFNjcmlwdHMoJy9yZXNvdXJjZXMv
dGVzdGhhcm5lc3MuanMnKTsKLSAgc2VsZi5pbXBvcnRTY3JpcHRzKCcuLi9yZXNvdXJjZXMvdGVz
dC11dGlscy5qcycpOwotICBzZWxmLmltcG9ydFNjcmlwdHMoJy4uL3Jlc291cmNlcy9yZWNvcmRp
bmctc3RyZWFtcy5qcycpOwotfQotCi1jb25zdCBlcnJvcjEgPSBuZXcgRXJyb3IoJ2Vycm9yMSEn
KTsKLWVycm9yMS5uYW1lID0gJ2Vycm9yMSc7Ci0KLWNvbnN0IGVycm9yMiA9IG5ldyBFcnJvcign
ZXJyb3IyIScpOwotZXJyb3IyLm5hbWUgPSAnZXJyb3IyJzsKLQotcHJvbWlzZV90ZXN0KHQgPT4g
ewotCi0gIGNvbnN0IHJzID0gcmVjb3JkaW5nUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KCkg
ewotICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yMSk7Ci0gICAgfQotICB9KTsKLQot
ICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKCk7Ci0KLSAgcmV0dXJuIHByb21p
c2VfcmVqZWN0cyh0LCBlcnJvcjEsIHJzLnBpcGVUbyh3cyksICdwaXBlVG8gbXVzdCByZWplY3Qg
d2l0aCB0aGUgc2FtZSBlcnJvcicpCi0gICAgLnRoZW4oKCkgPT4gewotICAgICAgYXNzZXJ0X2Fy
cmF5X2VxdWFscyhycy5ldmVudHMsIFtdKTsKLSAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3Mu
ZXZlbnRzLCBbJ2Fib3J0JywgZXJyb3IxXSk7Ci0gICAgfSk7Ci0KLX0sICdFcnJvcnMgbXVzdCBi
ZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHN0YXJ0cyBlcnJvcmVkOyBwcmV2ZW50QWJvcnQgPSBmYWxz
ZTsgZnVsZmlsbGVkIGFib3J0IHByb21pc2UnKTsKLQotcHJvbWlzZV90ZXN0KHQgPT4gewotCi0g
IGNvbnN0IHJzID0gcmVjb3JkaW5nUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KCkgewotICAg
ICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yMSk7Ci0gICAgfQotICB9KTsKLQotICBjb25z
dCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKHsKLSAgICBhYm9ydCgpIHsKLSAgICAgIHRo
cm93IGVycm9yMjsKLSAgICB9Ci0gIH0pOwotCi0gIHJldHVybiBwcm9taXNlX3JlamVjdHModCwg
ZXJyb3IyLCBycy5waXBlVG8od3MpLCAncGlwZVRvIG11c3QgcmVqZWN0IHdpdGggdGhlIGFib3J0
IGVycm9yJykKLSAgICAudGhlbigoKSA9PiB7Ci0gICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJz
LmV2ZW50cywgW10pOwotICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsnYWJv
cnQnLCBlcnJvcjFdKTsKLSAgICB9KTsKLQotfSwgJ0Vycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQg
Zm9yd2FyZDogc3RhcnRzIGVycm9yZWQ7IHByZXZlbnRBYm9ydCA9IGZhbHNlOyByZWplY3RlZCBh
Ym9ydCBwcm9taXNlJyk7Ci0KLWZvciAoY29uc3QgZmFsc3kgb2YgW3VuZGVmaW5lZCwgbnVsbCwg
ZmFsc2UsICswLCAtMCwgTmFOLCAnJ10pIHsKLSAgY29uc3Qgc3RyaW5nVmVyc2lvbiA9IE9iamVj
dC5pcyhmYWxzeSwgLTApID8gJy0wJyA6IFN0cmluZyhmYWxzeSk7Ci0KLSAgcHJvbWlzZV90ZXN0
KHQgPT4gewotCi0gICAgY29uc3QgcnMgPSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSh7Ci0gICAg
ICBzdGFydCgpIHsKLSAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yMSk7Ci0gICAg
ICB9Ci0gICAgfSk7Ci0KLSAgICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKCk7
Ci0KLSAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHQsIGVycm9yMSwgcnMucGlwZVRvKHdzLCB7
IHByZXZlbnRBYm9ydDogZmFsc3kgfSksICdwaXBlVG8gbXVzdCByZWplY3Qgd2l0aCB0aGUgc2Ft
ZSBlcnJvcicpCi0gICAgICAudGhlbigoKSA9PiB7Ci0gICAgICAgIGFzc2VydF9hcnJheV9lcXVh
bHMocnMuZXZlbnRzLCBbXSk7Ci0gICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRz
LCBbJ2Fib3J0JywgZXJyb3IxXSk7Ci0gICAgICB9KTsKLQotICB9LCBgRXJyb3JzIG11c3QgYmUg
cHJvcGFnYXRlZCBmb3J3YXJkOiBzdGFydHMgZXJyb3JlZDsgcHJldmVudEFib3J0ID0gJHtzdHJp
bmdWZXJzaW9ufSAoZmFsc3kpOyBmdWxmaWxsZWQgYWJvcnQgYCArCi0gICAgIGBwcm9taXNlYCk7
Ci19Ci0KLWZvciAoY29uc3QgdHJ1dGh5IG9mIFt0cnVlLCAnYScsIDEsIFN5bWJvbCgpLCB7IH1d
KSB7Ci0gIHByb21pc2VfdGVzdCh0ID0+IHsKLQotICAgIGNvbnN0IHJzID0gcmVjb3JkaW5nUmVh
ZGFibGVTdHJlYW0oewotICAgICAgc3RhcnQoKSB7Ci0gICAgICAgIHJldHVybiBQcm9taXNlLnJl
amVjdChlcnJvcjEpOwotICAgICAgfQotICAgIH0pOwotCi0gICAgY29uc3Qgd3MgPSByZWNvcmRp
bmdXcml0YWJsZVN0cmVhbSgpOwotCi0gICAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0LCBlcnJv
cjEsIHJzLnBpcGVUbyh3cywgeyBwcmV2ZW50QWJvcnQ6IHRydXRoeSB9KSwKLSAgICAgICdwaXBl
VG8gbXVzdCByZWplY3Qgd2l0aCB0aGUgc2FtZSBlcnJvcicpCi0gICAgICAudGhlbigoKSA9PiB7
Ci0gICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMocnMuZXZlbnRzLCBbXSk7Ci0gICAgICAgIGFz
c2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbXSk7Ci0gICAgICB9KTsKLQotICB9LCBgRXJy
b3JzIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBzdGFydHMgZXJyb3JlZDsgcHJldmVudEFi
b3J0ID0gJHtTdHJpbmcodHJ1dGh5KX0gKHRydXRoeSlgKTsKLX0KLQotCi1wcm9taXNlX3Rlc3Qo
dCA9PiB7Ci0KLSAgY29uc3QgcnMgPSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3Rh
cnQoKSB7Ci0gICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyb3IxKTsKLSAgICB9Ci0gIH0p
OwotCi0gIGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0oKTsKLQotICByZXR1cm4g
cHJvbWlzZV9yZWplY3RzKHQsIGVycm9yMSwgcnMucGlwZVRvKHdzLCB7IHByZXZlbnRBYm9ydDog
dHJ1ZSwgcHJldmVudENhbmNlbDogdHJ1ZSB9KSwKLSAgICAncGlwZVRvIG11c3QgcmVqZWN0IHdp
dGggdGhlIHNhbWUgZXJyb3InKQotICAgIC50aGVuKCgpID0+IHsKLSAgICAgIGFzc2VydF9hcnJh
eV9lcXVhbHMocnMuZXZlbnRzLCBbXSk7Ci0gICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2
ZW50cywgW10pOwotICAgIH0pOwotCi19LCAnRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3
YXJkOiBzdGFydHMgZXJyb3JlZDsgcHJldmVudEFib3J0ID0gdHJ1ZSwgcHJldmVudENhbmNlbCA9
IHRydWUnKTsKLQotcHJvbWlzZV90ZXN0KHQgPT4gewotCi0gIGNvbnN0IHJzID0gcmVjb3JkaW5n
UmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KCkgewotICAgICAgcmV0dXJuIFByb21pc2UucmVq
ZWN0KGVycm9yMSk7Ci0gICAgfQotICB9KTsKLQotICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRh
YmxlU3RyZWFtKCk7Ci0KLSAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0LCBlcnJvcjEsIHJzLnBp
cGVUbyh3cywgeyBwcmV2ZW50QWJvcnQ6IHRydWUsIHByZXZlbnRDYW5jZWw6IHRydWUsIHByZXZl
bnRDbG9zZTogdHJ1ZSB9KSwKLSAgICAncGlwZVRvIG11c3QgcmVqZWN0IHdpdGggdGhlIHNhbWUg
ZXJyb3InKQotICAgIC50aGVuKCgpID0+IHsKLSAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMocnMu
ZXZlbnRzLCBbXSk7Ci0gICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgW10pOwot
ICAgIH0pOwotCi19LCAnRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBzdGFydHMg
ZXJyb3JlZDsgcHJldmVudEFib3J0ID0gdHJ1ZSwgcHJldmVudENhbmNlbCA9IHRydWUsIHByZXZl
bnRDbG9zZSA9IHRydWUnKTsKLQotcHJvbWlzZV90ZXN0KHQgPT4gewotCi0gIGNvbnN0IHJzID0g
cmVjb3JkaW5nUmVhZGFibGVTdHJlYW0oKTsKLQotICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRh
YmxlU3RyZWFtKCk7Ci0KLSAgY29uc3QgcGlwZVByb21pc2UgPSBwcm9taXNlX3JlamVjdHModCwg
ZXJyb3IxLCBycy5waXBlVG8od3MpLCAncGlwZVRvIG11c3QgcmVqZWN0IHdpdGggdGhlIHNhbWUg
ZXJyb3InKTsKLQotICBzZXRUaW1lb3V0KCgpID0+IHJzLmNvbnRyb2xsZXIuZXJyb3IoZXJyb3Ix
KSwgMTApOwotCi0gIHJldHVybiBwaXBlUHJvbWlzZS50aGVuKCgpID0+IHsKLSAgICBhc3NlcnRf
YXJyYXlfZXF1YWxzKHJzLmV2ZW50c1dpdGhvdXRQdWxscywgW10pOwotICAgIGFzc2VydF9hcnJh
eV9lcXVhbHMod3MuZXZlbnRzLCBbJ2Fib3J0JywgZXJyb3IxXSk7Ci0gIH0pOwotCi19LCAnRXJy
b3JzIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBiZWNvbWVzIGVycm9yZWQgd2hpbGUgZW1w
dHk7IHByZXZlbnRBYm9ydCA9IGZhbHNlOyBmdWxmaWxsZWQgYWJvcnQgcHJvbWlzZScpOwotCi1w
cm9taXNlX3Rlc3QodCA9PiB7Ci0KLSAgY29uc3QgcnMgPSByZWNvcmRpbmdSZWFkYWJsZVN0cmVh
bSgpOwotCi0gIGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0oewotICAgIGFib3J0
KCkgewotICAgICAgdGhyb3cgZXJyb3IyOwotICAgIH0KLSAgfSk7Ci0KLSAgY29uc3QgcGlwZVBy
b21pc2UgPSBwcm9taXNlX3JlamVjdHModCwgZXJyb3IyLCBycy5waXBlVG8od3MpLCAncGlwZVRv
IG11c3QgcmVqZWN0IHdpdGggdGhlIGFib3J0IGVycm9yJyk7Ci0KLSAgc2V0VGltZW91dCgoKSA9
PiBycy5jb250cm9sbGVyLmVycm9yKGVycm9yMSksIDEwKTsKLQotICByZXR1cm4gcGlwZVByb21p
c2UudGhlbigoKSA9PiB7Ci0gICAgYXNzZXJ0X2FycmF5X2VxdWFscyhycy5ldmVudHNXaXRob3V0
UHVsbHMsIFtdKTsKLSAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWydhYm9ydCcs
IGVycm9yMV0pOwotICB9KTsKLQotfSwgJ0Vycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2Fy
ZDogYmVjb21lcyBlcnJvcmVkIHdoaWxlIGVtcHR5OyBwcmV2ZW50QWJvcnQgPSBmYWxzZTsgcmVq
ZWN0ZWQgYWJvcnQgcHJvbWlzZScpOwotCi1wcm9taXNlX3Rlc3QodCA9PiB7Ci0KLSAgY29uc3Qg
cnMgPSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSgpOwotCi0gIGNvbnN0IHdzID0gcmVjb3JkaW5n
V3JpdGFibGVTdHJlYW0oKTsKLQotICBjb25zdCBwaXBlUHJvbWlzZSA9IHByb21pc2VfcmVqZWN0
cyh0LCBlcnJvcjEsIHJzLnBpcGVUbyh3cywgeyBwcmV2ZW50QWJvcnQ6IHRydWUgfSksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwaXBlVG8gbXVzdCByZWplY3Qgd2l0
aCB0aGUgc2FtZSBlcnJvcicpOwotCi0gIHNldFRpbWVvdXQoKCkgPT4gcnMuY29udHJvbGxlci5l
cnJvcihlcnJvcjEpLCAxMCk7Ci0KLSAgcmV0dXJuIHBpcGVQcm9taXNlLnRoZW4oKCkgPT4gewot
ICAgIGFzc2VydF9hcnJheV9lcXVhbHMocnMuZXZlbnRzV2l0aG91dFB1bGxzLCBbXSk7Ci0gICAg
YXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFtdKTsKLSAgfSk7Ci0KLX0sICdFcnJvcnMg
bXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IGJlY29tZXMgZXJyb3JlZCB3aGlsZSBlbXB0eTsg
cHJldmVudEFib3J0ID0gdHJ1ZScpOwotCi1wcm9taXNlX3Rlc3QodCA9PiB7Ci0KLSAgY29uc3Qg
cnMgPSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSgpOwotCi0gIGNvbnN0IHdzID0gcmVjb3JkaW5n
V3JpdGFibGVTdHJlYW0odW5kZWZpbmVkLCBuZXcgQ291bnRRdWV1aW5nU3RyYXRlZ3koeyBoaWdo
V2F0ZXJNYXJrOiAwIH0pKTsKLQotICBjb25zdCBwaXBlUHJvbWlzZSA9IHByb21pc2VfcmVqZWN0
cyh0LCBlcnJvcjEsIHJzLnBpcGVUbyh3cyksICdwaXBlVG8gbXVzdCByZWplY3Qgd2l0aCB0aGUg
c2FtZSBlcnJvcicpOwotCi0gIHNldFRpbWVvdXQoKCkgPT4gcnMuY29udHJvbGxlci5lcnJvcihl
cnJvcjEpLCAxMCk7Ci0KLSAgcmV0dXJuIHBpcGVQcm9taXNlLnRoZW4oKCkgPT4gewotICAgIGFz
c2VydF9hcnJheV9lcXVhbHMocnMuZXZlbnRzV2l0aG91dFB1bGxzLCBbXSk7Ci0gICAgYXNzZXJ0
X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsnYWJvcnQnLCBlcnJvcjFdKTsKLSAgfSk7Ci0KLX0s
ICdFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IGJlY29tZXMgZXJyb3JlZCB3aGls
ZSBlbXB0eTsgZGVzdCBuZXZlciBkZXNpcmVzIGNodW5rczsgJyArCi0gICAncHJldmVudEFib3J0
ID0gZmFsc2U7IGZ1bGZpbGxlZCBhYm9ydCBwcm9taXNlJyk7Ci0KLXByb21pc2VfdGVzdCh0ID0+
IHsKLQotICBjb25zdCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKCk7Ci0KLSAgY29uc3Qg
d3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSh7Ci0gICAgYWJvcnQoKSB7Ci0gICAgICB0aHJv
dyBlcnJvcjI7Ci0gICAgfQotICB9LCBuZXcgQ291bnRRdWV1aW5nU3RyYXRlZ3koeyBoaWdoV2F0
ZXJNYXJrOiAwIH0pKTsKLQotICBjb25zdCBwaXBlUHJvbWlzZSA9IHByb21pc2VfcmVqZWN0cyh0
LCBlcnJvcjIsIHJzLnBpcGVUbyh3cyksICdwaXBlVG8gbXVzdCByZWplY3Qgd2l0aCB0aGUgYWJv
cnQgZXJyb3InKTsKLQotICBzZXRUaW1lb3V0KCgpID0+IHJzLmNvbnRyb2xsZXIuZXJyb3IoZXJy
b3IxKSwgMTApOwotCi0gIHJldHVybiBwaXBlUHJvbWlzZS50aGVuKCgpID0+IHsKLSAgICBhc3Nl
cnRfYXJyYXlfZXF1YWxzKHJzLmV2ZW50c1dpdGhvdXRQdWxscywgW10pOwotICAgIGFzc2VydF9h
cnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ2Fib3J0JywgZXJyb3IxXSk7Ci0gIH0pOwotCi19LCAn
RXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBiZWNvbWVzIGVycm9yZWQgd2hpbGUg
ZW1wdHk7IGRlc3QgbmV2ZXIgZGVzaXJlcyBjaHVua3M7ICcgKwotICAgJ3ByZXZlbnRBYm9ydCA9
IGZhbHNlOyByZWplY3RlZCBhYm9ydCBwcm9taXNlJyk7Ci0KLXByb21pc2VfdGVzdCh0ID0+IHsK
LQotICBjb25zdCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKCk7Ci0KLSAgY29uc3Qgd3Mg
PSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSh1bmRlZmluZWQsIG5ldyBDb3VudFF1ZXVpbmdTdHJh
dGVneSh7IGhpZ2hXYXRlck1hcms6IDAgfSkpOwotCi0gIGNvbnN0IHBpcGVQcm9taXNlID0gcHJv
bWlzZV9yZWplY3RzKHQsIGVycm9yMSwgcnMucGlwZVRvKHdzLCB7IHByZXZlbnRBYm9ydDogdHJ1
ZSB9KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BpcGVUbyBtdXN0
IHJlamVjdCB3aXRoIHRoZSBzYW1lIGVycm9yJyk7Ci0KLSAgc2V0VGltZW91dCgoKSA9PiBycy5j
b250cm9sbGVyLmVycm9yKGVycm9yMSksIDEwKTsKLQotICByZXR1cm4gcGlwZVByb21pc2UudGhl
bigoKSA9PiB7Ci0gICAgYXNzZXJ0X2FycmF5X2VxdWFscyhycy5ldmVudHNXaXRob3V0UHVsbHMs
IFtdKTsKLSAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgW10pOwotICB9KTsKLQot
fSwgJ0Vycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogYmVjb21lcyBlcnJvcmVkIHdo
aWxlIGVtcHR5OyBkZXN0IG5ldmVyIGRlc2lyZXMgY2h1bmtzOyAnICsKLSAgICdwcmV2ZW50QWJv
cnQgPSB0cnVlJyk7Ci0KLXByb21pc2VfdGVzdCh0ID0+IHsKLQotICBjb25zdCBycyA9IHJlY29y
ZGluZ1JlYWRhYmxlU3RyZWFtKCk7Ci0KLSAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0
cmVhbSgpOwotCi0gIGNvbnN0IHBpcGVQcm9taXNlID0gcHJvbWlzZV9yZWplY3RzKHQsIGVycm9y
MSwgcnMucGlwZVRvKHdzKSwgJ3BpcGVUbyBtdXN0IHJlamVjdCB3aXRoIHRoZSBzYW1lIGVycm9y
Jyk7Ci0KLSAgc2V0VGltZW91dCgoKSA9PiB7Ci0gICAgcnMuY29udHJvbGxlci5lbnF1ZXVlKCdI
ZWxsbycpOwotICAgIHNldFRpbWVvdXQoKCkgPT4gcnMuY29udHJvbGxlci5lcnJvcihlcnJvcjEp
LCAxMCk7Ci0gIH0sIDEwKTsKLQotICByZXR1cm4gcGlwZVByb21pc2UudGhlbigoKSA9PiB7Ci0g
ICAgYXNzZXJ0X2FycmF5X2VxdWFscyhycy5ldmVudHNXaXRob3V0UHVsbHMsIFtdKTsKLSAgICBh
c3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWyd3cml0ZScsICdIZWxsbycsICdhYm9ydCcs
IGVycm9yMV0pOwotICB9KTsKLQotfSwgJ0Vycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2Fy
ZDogYmVjb21lcyBlcnJvcmVkIGFmdGVyIG9uZSBjaHVuazsgcHJldmVudEFib3J0ID0gZmFsc2U7
IGZ1bGZpbGxlZCBhYm9ydCBwcm9taXNlJyk7Ci0KLXByb21pc2VfdGVzdCh0ID0+IHsKLQotICBj
b25zdCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKCk7Ci0KLSAgY29uc3Qgd3MgPSByZWNv
cmRpbmdXcml0YWJsZVN0cmVhbSh7Ci0gICAgYWJvcnQoKSB7Ci0gICAgICB0aHJvdyBlcnJvcjI7
Ci0gICAgfQotICB9KTsKLQotICBjb25zdCBwaXBlUHJvbWlzZSA9IHByb21pc2VfcmVqZWN0cyh0
LCBlcnJvcjIsIHJzLnBpcGVUbyh3cyksICdwaXBlVG8gbXVzdCByZWplY3Qgd2l0aCB0aGUgYWJv
cnQgZXJyb3InKTsKLQotICBzZXRUaW1lb3V0KCgpID0+IHsKLSAgICBycy5jb250cm9sbGVyLmVu
cXVldWUoJ0hlbGxvJyk7Ci0gICAgc2V0VGltZW91dCgoKSA9PiBycy5jb250cm9sbGVyLmVycm9y
KGVycm9yMSksIDEwKTsKLSAgfSwgMTApOwotCi0gIHJldHVybiBwaXBlUHJvbWlzZS50aGVuKCgp
ID0+IHsKLSAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJzLmV2ZW50c1dpdGhvdXRQdWxscywgW10p
OwotICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ3dyaXRlJywgJ0hlbGxvJywg
J2Fib3J0JywgZXJyb3IxXSk7Ci0gIH0pOwotCi19LCAnRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRl
ZCBmb3J3YXJkOiBiZWNvbWVzIGVycm9yZWQgYWZ0ZXIgb25lIGNodW5rOyBwcmV2ZW50QWJvcnQg
PSBmYWxzZTsgcmVqZWN0ZWQgYWJvcnQgcHJvbWlzZScpOwotCi1wcm9taXNlX3Rlc3QodCA9PiB7
Ci0KLSAgY29uc3QgcnMgPSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSgpOwotCi0gIGNvbnN0IHdz
ID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0oKTsKLQotICBjb25zdCBwaXBlUHJvbWlzZSA9IHBy
b21pc2VfcmVqZWN0cyh0LCBlcnJvcjEsIHJzLnBpcGVUbyh3cywgeyBwcmV2ZW50QWJvcnQ6IHRy
dWUgfSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwaXBlVG8gbXVz
dCByZWplY3Qgd2l0aCB0aGUgc2FtZSBlcnJvcicpOwotCi0gIHNldFRpbWVvdXQoKCkgPT4gewot
ICAgIHJzLmNvbnRyb2xsZXIuZW5xdWV1ZSgnSGVsbG8nKTsKLSAgICBzZXRUaW1lb3V0KCgpID0+
IHJzLmNvbnRyb2xsZXIuZXJyb3IoZXJyb3IxKSwgMTApOwotICB9LCAxMCk7Ci0KLSAgcmV0dXJu
IHBpcGVQcm9taXNlLnRoZW4oKCkgPT4gewotICAgIGFzc2VydF9hcnJheV9lcXVhbHMocnMuZXZl
bnRzV2l0aG91dFB1bGxzLCBbXSk7Ci0gICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMs
IFsnd3JpdGUnLCAnSGVsbG8nXSk7Ci0gIH0pOwotCi19LCAnRXJyb3JzIG11c3QgYmUgcHJvcGFn
YXRlZCBmb3J3YXJkOiBiZWNvbWVzIGVycm9yZWQgYWZ0ZXIgb25lIGNodW5rOyBwcmV2ZW50QWJv
cnQgPSB0cnVlJyk7Ci0KLXByb21pc2VfdGVzdCh0ID0+IHsKLQotICBjb25zdCBycyA9IHJlY29y
ZGluZ1JlYWRhYmxlU3RyZWFtKCk7Ci0KLSAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0
cmVhbSh1bmRlZmluZWQsIG5ldyBDb3VudFF1ZXVpbmdTdHJhdGVneSh7IGhpZ2hXYXRlck1hcms6
IDAgfSkpOwotCi0gIGNvbnN0IHBpcGVQcm9taXNlID0gcHJvbWlzZV9yZWplY3RzKHQsIGVycm9y
MSwgcnMucGlwZVRvKHdzKSwgJ3BpcGVUbyBtdXN0IHJlamVjdCB3aXRoIHRoZSBzYW1lIGVycm9y
Jyk7Ci0KLSAgc2V0VGltZW91dCgoKSA9PiB7Ci0gICAgcnMuY29udHJvbGxlci5lbnF1ZXVlKCdI
ZWxsbycpOwotICAgIHNldFRpbWVvdXQoKCkgPT4gcnMuY29udHJvbGxlci5lcnJvcihlcnJvcjEp
LCAxMCk7Ci0gIH0sIDEwKTsKLQotICByZXR1cm4gcGlwZVByb21pc2UudGhlbigoKSA9PiB7Ci0g
ICAgYXNzZXJ0X2FycmF5X2VxdWFscyhycy5ldmVudHNXaXRob3V0UHVsbHMsIFtdKTsKLSAgICBh
c3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWydhYm9ydCcsIGVycm9yMV0pOwotICB9KTsK
LQotfSwgJ0Vycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogYmVjb21lcyBlcnJvcmVk
IGFmdGVyIG9uZSBjaHVuazsgZGVzdCBuZXZlciBkZXNpcmVzIGNodW5rczsgJyArCi0gICAncHJl
dmVudEFib3J0ID0gZmFsc2U7IGZ1bGZpbGxlZCBhYm9ydCBwcm9taXNlJyk7Ci0KLXByb21pc2Vf
dGVzdCh0ID0+IHsKLQotICBjb25zdCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKCk7Ci0K
LSAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSh7Ci0gICAgYWJvcnQoKSB7Ci0g
ICAgICB0aHJvdyBlcnJvcjI7Ci0gICAgfQotICB9LCBuZXcgQ291bnRRdWV1aW5nU3RyYXRlZ3ko
eyBoaWdoV2F0ZXJNYXJrOiAwIH0pKTsKLQotICBjb25zdCBwaXBlUHJvbWlzZSA9IHByb21pc2Vf
cmVqZWN0cyh0LCBlcnJvcjIsIHJzLnBpcGVUbyh3cyksICdwaXBlVG8gbXVzdCByZWplY3Qgd2l0
aCB0aGUgYWJvcnQgZXJyb3InKTsKLQotICBzZXRUaW1lb3V0KCgpID0+IHsKLSAgICBycy5jb250
cm9sbGVyLmVucXVldWUoJ0hlbGxvJyk7Ci0gICAgc2V0VGltZW91dCgoKSA9PiBycy5jb250cm9s
bGVyLmVycm9yKGVycm9yMSksIDEwKTsKLSAgfSwgMTApOwotCi0gIHJldHVybiBwaXBlUHJvbWlz
ZS50aGVuKCgpID0+IHsKLSAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJzLmV2ZW50c1dpdGhvdXRQ
dWxscywgW10pOwotICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ2Fib3J0Jywg
ZXJyb3IxXSk7Ci0gIH0pOwotCi19LCAnRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJk
OiBiZWNvbWVzIGVycm9yZWQgYWZ0ZXIgb25lIGNodW5rOyBkZXN0IG5ldmVyIGRlc2lyZXMgY2h1
bmtzOyAnICsKLSAgICdwcmV2ZW50QWJvcnQgPSBmYWxzZTsgcmVqZWN0ZWQgYWJvcnQgcHJvbWlz
ZScpOwotCi1wcm9taXNlX3Rlc3QodCA9PiB7Ci0KLSAgY29uc3QgcnMgPSByZWNvcmRpbmdSZWFk
YWJsZVN0cmVhbSgpOwotCi0gIGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0odW5k
ZWZpbmVkLCBuZXcgQ291bnRRdWV1aW5nU3RyYXRlZ3koeyBoaWdoV2F0ZXJNYXJrOiAwIH0pKTsK
LQotICBjb25zdCBwaXBlUHJvbWlzZSA9IHByb21pc2VfcmVqZWN0cyh0LCBlcnJvcjEsIHJzLnBp
cGVUbyh3cywgeyBwcmV2ZW50QWJvcnQ6IHRydWUgfSksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICdwaXBlVG8gbXVzdCByZWplY3Qgd2l0aCB0aGUgc2FtZSBlcnJvcicp
OwotCi0gIHNldFRpbWVvdXQoKCkgPT4gewotICAgIHJzLmNvbnRyb2xsZXIuZW5xdWV1ZSgnSGVs
bG8nKTsKLSAgICBzZXRUaW1lb3V0KCgpID0+IHJzLmNvbnRyb2xsZXIuZXJyb3IoZXJyb3IxKSwg
MTApOwotICB9LCAxMCk7Ci0KLSAgcmV0dXJuIHBpcGVQcm9taXNlLnRoZW4oKCkgPT4gewotICAg
IGFzc2VydF9hcnJheV9lcXVhbHMocnMuZXZlbnRzV2l0aG91dFB1bGxzLCBbXSk7Ci0gICAgYXNz
ZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFtdKTsKLSAgfSk7Ci0KLX0sICdFcnJvcnMgbXVz
dCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IGJlY29tZXMgZXJyb3JlZCBhZnRlciBvbmUgY2h1bms7
IGRlc3QgbmV2ZXIgZGVzaXJlcyBjaHVua3M7ICcgKwotICAgJ3ByZXZlbnRBYm9ydCA9IHRydWUn
KTsKLQotcHJvbWlzZV90ZXN0KHQgPT4gewotCi0gIGNvbnN0IHJzID0gcmVjb3JkaW5nUmVhZGFi
bGVTdHJlYW0oKTsKLQotICBsZXQgcmVzb2x2ZVdyaXRlQ2FsbGVkOwotICBjb25zdCB3cml0ZUNh
bGxlZFByb21pc2UgPSBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKLSAgICByZXNvbHZlV3JpdGVD
YWxsZWQgPSByZXNvbHZlOwotICB9KTsKLQotICBsZXQgcmVzb2x2ZVdyaXRlUHJvbWlzZTsKLSAg
Y29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSh7Ci0gICAgd3JpdGUoKSB7Ci0gICAg
ICByZXNvbHZlV3JpdGVDYWxsZWQoKTsKLQotICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29s
dmUgPT4gewotICAgICAgICByZXNvbHZlV3JpdGVQcm9taXNlID0gcmVzb2x2ZTsKLSAgICAgIH0p
OwotICAgIH0KLSAgfSk7Ci0KLSAgbGV0IHBpcGVDb21wbGV0ZSA9IGZhbHNlOwotICBjb25zdCBw
aXBlUHJvbWlzZSA9IHByb21pc2VfcmVqZWN0cyh0LCBlcnJvcjEsIHJzLnBpcGVUbyh3cykpLnRo
ZW4oKCkgPT4gewotICAgIHBpcGVDb21wbGV0ZSA9IHRydWU7Ci0gIH0pOwotCi0gIHJzLmNvbnRy
b2xsZXIuZW5xdWV1ZSgnYScpOwotCi0gIHJldHVybiB3cml0ZUNhbGxlZFByb21pc2UudGhlbigo
KSA9PiB7Ci0gICAgcnMuY29udHJvbGxlci5lcnJvcihlcnJvcjEpOwotCi0gICAgLy8gRmx1c2gg
YXN5bmMgZXZlbnRzIGFuZCB2ZXJpZnkgdGhhdCBubyBzaHV0ZG93biBvY2N1cnMuCi0gICAgcmV0
dXJuIGZsdXNoQXN5bmNFdmVudHMoKTsKLSAgfSkudGhlbigoKSA9PiB7Ci0gICAgYXNzZXJ0X2Fy
cmF5X2VxdWFscyh3cy5ldmVudHMsIFsnd3JpdGUnLCAnYSddKTsgLy8gbm8gJ2Fib3J0JwotICAg
IGFzc2VydF9lcXVhbHMocGlwZUNvbXBsZXRlLCBmYWxzZSwgJ3RoZSBwaXBlIG11c3Qgbm90IGJl
IGNvbXBsZXRlJyk7Ci0KLSAgICByZXNvbHZlV3JpdGVQcm9taXNlKCk7Ci0KLSAgICByZXR1cm4g
cGlwZVByb21pc2UudGhlbigoKSA9PiB7Ci0gICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2
ZW50cywgWyd3cml0ZScsICdhJywgJ2Fib3J0JywgZXJyb3IxXSk7Ci0gICAgfSk7Ci0gIH0pOwot
Ci19LCAnRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBzaHV0ZG93biBtdXN0IG5v
dCBvY2N1ciB1bnRpbCB0aGUgZmluYWwgd3JpdGUgY29tcGxldGVzJyk7Ci0KLXByb21pc2VfdGVz
dCh0ID0+IHsKLQotICBjb25zdCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKCk7Ci0KLSAg
bGV0IHJlc29sdmVXcml0ZUNhbGxlZDsKLSAgY29uc3Qgd3JpdGVDYWxsZWRQcm9taXNlID0gbmV3
IFByb21pc2UocmVzb2x2ZSA9PiB7Ci0gICAgcmVzb2x2ZVdyaXRlQ2FsbGVkID0gcmVzb2x2ZTsK
LSAgfSk7Ci0KLSAgbGV0IHJlc29sdmVXcml0ZVByb21pc2U7Ci0gIGNvbnN0IHdzID0gcmVjb3Jk
aW5nV3JpdGFibGVTdHJlYW0oewotICAgIHdyaXRlKCkgewotICAgICAgcmVzb2x2ZVdyaXRlQ2Fs
bGVkKCk7Ci0KLSAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKLSAgICAgICAg
cmVzb2x2ZVdyaXRlUHJvbWlzZSA9IHJlc29sdmU7Ci0gICAgICB9KTsKLSAgICB9Ci0gIH0pOwot
Ci0gIGxldCBwaXBlQ29tcGxldGUgPSBmYWxzZTsKLSAgY29uc3QgcGlwZVByb21pc2UgPSBwcm9t
aXNlX3JlamVjdHModCwgZXJyb3IxLCBycy5waXBlVG8od3MsIHsgcHJldmVudEFib3J0OiB0cnVl
IH0pKS50aGVuKCgpID0+IHsKLSAgICBwaXBlQ29tcGxldGUgPSB0cnVlOwotICB9KTsKLQotICBy
cy5jb250cm9sbGVyLmVucXVldWUoJ2EnKTsKLQotICByZXR1cm4gd3JpdGVDYWxsZWRQcm9taXNl
LnRoZW4oKCkgPT4gewotICAgIHJzLmNvbnRyb2xsZXIuZXJyb3IoZXJyb3IxKTsKLQotICAgIC8v
IEZsdXNoIGFzeW5jIGV2ZW50cyBhbmQgdmVyaWZ5IHRoYXQgbm8gc2h1dGRvd24gb2NjdXJzLgot
ICAgIHJldHVybiBmbHVzaEFzeW5jRXZlbnRzKCk7Ci0gIH0pLnRoZW4oKCkgPT4gewotICAgIGFz
c2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ3dyaXRlJywgJ2EnXSk7IC8vIG5vICdhYm9y
dCcKLSAgICBhc3NlcnRfZXF1YWxzKHBpcGVDb21wbGV0ZSwgZmFsc2UsICd0aGUgcGlwZSBtdXN0
IG5vdCBiZSBjb21wbGV0ZScpOwotCi0gICAgcmVzb2x2ZVdyaXRlUHJvbWlzZSgpOwotICAgIHJl
dHVybiBwaXBlUHJvbWlzZTsKLSAgfSkudGhlbigoKSA9PiBmbHVzaEFzeW5jRXZlbnRzKCkpLnRo
ZW4oKCkgPT4gewotICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ3dyaXRlJywg
J2EnXSk7IC8vIG5vICdhYm9ydCcKLSAgfSk7Ci0KLX0sICdFcnJvcnMgbXVzdCBiZSBwcm9wYWdh
dGVkIGZvcndhcmQ6IHNodXRkb3duIG11c3Qgbm90IG9jY3VyIHVudGlsIHRoZSBmaW5hbCB3cml0
ZSBjb21wbGV0ZXM7IHByZXZlbnRBYm9ydCA9IHRydWUnKTsKLQotcHJvbWlzZV90ZXN0KHQgPT4g
ewotCi0gIGNvbnN0IHJzID0gcmVjb3JkaW5nUmVhZGFibGVTdHJlYW0oKTsKLQotICBsZXQgcmVz
b2x2ZVdyaXRlQ2FsbGVkOwotICBjb25zdCB3cml0ZUNhbGxlZFByb21pc2UgPSBuZXcgUHJvbWlz
ZShyZXNvbHZlID0+IHsKLSAgICByZXNvbHZlV3JpdGVDYWxsZWQgPSByZXNvbHZlOwotICB9KTsK
LQotICBsZXQgcmVzb2x2ZVdyaXRlUHJvbWlzZTsKLSAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0
YWJsZVN0cmVhbSh7Ci0gICAgd3JpdGUoKSB7Ci0gICAgICByZXNvbHZlV3JpdGVDYWxsZWQoKTsK
LQotICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4gewotICAgICAgICByZXNvbHZl
V3JpdGVQcm9taXNlID0gcmVzb2x2ZTsKLSAgICAgIH0pOwotICAgIH0KLSAgfSwgbmV3IENvdW50
UXVldWluZ1N0cmF0ZWd5KHsgaGlnaFdhdGVyTWFyazogMiB9KSk7Ci0KLSAgbGV0IHBpcGVDb21w
bGV0ZSA9IGZhbHNlOwotICBjb25zdCBwaXBlUHJvbWlzZSA9IHByb21pc2VfcmVqZWN0cyh0LCBl
cnJvcjEsIHJzLnBpcGVUbyh3cykpLnRoZW4oKCkgPT4gewotICAgIHBpcGVDb21wbGV0ZSA9IHRy
dWU7Ci0gIH0pOwotCi0gIHJzLmNvbnRyb2xsZXIuZW5xdWV1ZSgnYScpOwotICBycy5jb250cm9s
bGVyLmVucXVldWUoJ2InKTsKLQotICByZXR1cm4gd3JpdGVDYWxsZWRQcm9taXNlLnRoZW4oKCkg
PT4gZmx1c2hBc3luY0V2ZW50cygpKS50aGVuKCgpID0+IHsKLSAgICBhc3NlcnRfYXJyYXlfZXF1
YWxzKHdzLmV2ZW50cywgWyd3cml0ZScsICdhJ10sCi0gICAgICAndGhlIGZpcnN0IGNodW5rIG11
c3QgaGF2ZSBiZWVuIHdyaXR0ZW4sIGJ1dCBhYm9ydCBtdXN0IG5vdCBoYXZlIGhhcHBlbmVkIHll
dCcpOwotICAgIGFzc2VydF9mYWxzZShwaXBlQ29tcGxldGUsICd0aGUgcGlwZSBzaG91bGQgbm90
IGNvbXBsZXRlIHdoaWxlIHRoZSBmaXJzdCB3cml0ZSBpcyBwZW5kaW5nJyk7Ci0KLSAgICBycy5j
b250cm9sbGVyLmVycm9yKGVycm9yMSk7Ci0gICAgcmVzb2x2ZVdyaXRlUHJvbWlzZSgpOwotICAg
IHJldHVybiBmbHVzaEFzeW5jRXZlbnRzKCk7Ci0gIH0pLnRoZW4oKCkgPT4gewotICAgIGFzc2Vy
dF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ3dyaXRlJywgJ2EnLCAnd3JpdGUnLCAnYiddLAot
ICAgICAgJ3RoZSBzZWNvbmQgY2h1bmsgbXVzdCBoYXZlIGJlZW4gd3JpdHRlbiwgYnV0IGFib3J0
IG11c3Qgbm90IGhhdmUgaGFwcGVuZWQgeWV0Jyk7Ci0gICAgYXNzZXJ0X2ZhbHNlKHBpcGVDb21w
bGV0ZSwgJ3RoZSBwaXBlIHNob3VsZCBub3QgY29tcGxldGUgd2hpbGUgdGhlIHNlY29uZCB3cml0
ZSBpcyBwZW5kaW5nJyk7Ci0KLSAgICByZXNvbHZlV3JpdGVQcm9taXNlKCk7Ci0gICAgcmV0dXJu
IHBpcGVQcm9taXNlOwotICB9KS50aGVuKCgpID0+IHsKLSAgICBhc3NlcnRfYXJyYXlfZXF1YWxz
KHdzLmV2ZW50cywgWyd3cml0ZScsICdhJywgJ3dyaXRlJywgJ2InLCAnYWJvcnQnLCBlcnJvcjFd
LAotICAgICAgJ2FsbCBjaHVua3MgbXVzdCBoYXZlIGJlZW4gd3JpdHRlbiBhbmQgYWJvcnQgbXVz
dCBoYXZlIGhhcHBlbmVkJyk7Ci0gIH0pOwotCi19LCAnRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRl
ZCBmb3J3YXJkOiBzaHV0ZG93biBtdXN0IG5vdCBvY2N1ciB1bnRpbCB0aGUgZmluYWwgd3JpdGUg
Y29tcGxldGVzOyBiZWNvbWVzIGVycm9yZWQgYWZ0ZXIgZmlyc3Qgd3JpdGUnKTsKLQotcHJvbWlz
ZV90ZXN0KHQgPT4gewotCi0gIGNvbnN0IHJzID0gcmVjb3JkaW5nUmVhZGFibGVTdHJlYW0oKTsK
LQotICBsZXQgcmVzb2x2ZVdyaXRlQ2FsbGVkOwotICBjb25zdCB3cml0ZUNhbGxlZFByb21pc2Ug
PSBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKLSAgICByZXNvbHZlV3JpdGVDYWxsZWQgPSByZXNv
bHZlOwotICB9KTsKLQotICBsZXQgcmVzb2x2ZVdyaXRlUHJvbWlzZTsKLSAgY29uc3Qgd3MgPSBy
ZWNvcmRpbmdXcml0YWJsZVN0cmVhbSh7Ci0gICAgd3JpdGUoKSB7Ci0gICAgICByZXNvbHZlV3Jp
dGVDYWxsZWQoKTsKLQotICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4gewotICAg
ICAgICByZXNvbHZlV3JpdGVQcm9taXNlID0gcmVzb2x2ZTsKLSAgICAgIH0pOwotICAgIH0KLSAg
fSwgbmV3IENvdW50UXVldWluZ1N0cmF0ZWd5KHsgaGlnaFdhdGVyTWFyazogMiB9KSk7Ci0KLSAg
bGV0IHBpcGVDb21wbGV0ZSA9IGZhbHNlOwotICBjb25zdCBwaXBlUHJvbWlzZSA9IHByb21pc2Vf
cmVqZWN0cyh0LCBlcnJvcjEsIHJzLnBpcGVUbyh3cywgeyBwcmV2ZW50QWJvcnQ6IHRydWUgfSkp
LnRoZW4oKCkgPT4gewotICAgIHBpcGVDb21wbGV0ZSA9IHRydWU7Ci0gIH0pOwotCi0gIHJzLmNv
bnRyb2xsZXIuZW5xdWV1ZSgnYScpOwotICBycy5jb250cm9sbGVyLmVucXVldWUoJ2InKTsKLQot
ICByZXR1cm4gd3JpdGVDYWxsZWRQcm9taXNlLnRoZW4oKCkgPT4gZmx1c2hBc3luY0V2ZW50cygp
KS50aGVuKCgpID0+IHsKLSAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWyd3cml0
ZScsICdhJ10sCi0gICAgICAndGhlIGZpcnN0IGNodW5rIG11c3QgaGF2ZSBiZWVuIHdyaXR0ZW4s
IGJ1dCBhYm9ydCBtdXN0IG5vdCBoYXZlIGhhcHBlbmVkJyk7Ci0gICAgYXNzZXJ0X2ZhbHNlKHBp
cGVDb21wbGV0ZSwgJ3RoZSBwaXBlIHNob3VsZCBub3QgY29tcGxldGUgd2hpbGUgdGhlIGZpcnN0
IHdyaXRlIGlzIHBlbmRpbmcnKTsKLQotICAgIHJzLmNvbnRyb2xsZXIuZXJyb3IoZXJyb3IxKTsK
LSAgICByZXNvbHZlV3JpdGVQcm9taXNlKCk7Ci0gIH0pLnRoZW4oKCkgPT4gZmx1c2hBc3luY0V2
ZW50cygpKS50aGVuKCgpID0+IHsKLSAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywg
Wyd3cml0ZScsICdhJywgJ3dyaXRlJywgJ2InXSwKLSAgICAgICd0aGUgc2Vjb25kIGNodW5rIG11
c3QgaGF2ZSBiZWVuIHdyaXR0ZW4sIGJ1dCBhYm9ydCBtdXN0IG5vdCBoYXZlIGhhcHBlbmVkJyk7
Ci0gICAgYXNzZXJ0X2ZhbHNlKHBpcGVDb21wbGV0ZSwgJ3RoZSBwaXBlIHNob3VsZCBub3QgY29t
cGxldGUgd2hpbGUgdGhlIHNlY29uZCB3cml0ZSBpcyBwZW5kaW5nJyk7Ci0KLSAgICByZXNvbHZl
V3JpdGVQcm9taXNlKCk7Ci0gICAgcmV0dXJuIHBpcGVQcm9taXNlOwotICB9KS50aGVuKCgpID0+
IGZsdXNoQXN5bmNFdmVudHMoKSkudGhlbigoKSA9PiB7Ci0gICAgYXNzZXJ0X2FycmF5X2VxdWFs
cyh3cy5ldmVudHMsIFsnd3JpdGUnLCAnYScsICd3cml0ZScsICdiJ10sCi0gICAgICAnYWxsIGNo
dW5rcyBtdXN0IGhhdmUgYmVlbiB3cml0dGVuLCBidXQgYWJvcnQgbXVzdCBub3QgaGF2ZSBoYXBw
ZW5lZCcpOwotICB9KTsKLQotfSwgJ0Vycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDog
c2h1dGRvd24gbXVzdCBub3Qgb2NjdXIgdW50aWwgdGhlIGZpbmFsIHdyaXRlIGNvbXBsZXRlczsg
YmVjb21lcyBlcnJvcmVkIGFmdGVyIGZpcnN0IHdyaXRlOyBwcmV2ZW50QWJvcnQgPSB0cnVlJyk7
Ci0KLWRvbmUoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvZXJyb3ItcHJvcGFnYXRpb24tZm9yd2FyZC5zZXJ2
aWNld29ya2VyLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvZXJyb3ItcHJvcGFnYXRpb24tZm9yd2Fy
ZC5zZXJ2aWNld29ya2VyLmh0dHBzLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggY2JmZWZjNjQ1ZGFjMTE2OGU2ZWU2MjIwMzAzODkwOTc5YzhmZGJiZS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Vycm9yLXByb3BhZ2F0
aW9uLWZvcndhcmQuc2VydmljZXdvcmtlci5odHRwcy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVs
bApAQCAtMSwzNSArMCwwIEBACi0KLVBBU1MgU2VydmljZSB3b3JrZXIgdGVzdCBzZXR1cCAKLUZB
SUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBzdGFydHMgZXJyb3JlZDsgcHJl
dmVudEFib3J0ID0gZmFsc2U7IGZ1bGZpbGxlZCBhYm9ydCBwcm9taXNlIENhbid0IGZpbmQgdmFy
aWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9y
d2FyZDogc3RhcnRzIGVycm9yZWQ7IHByZXZlbnRBYm9ydCA9IGZhbHNlOyByZWplY3RlZCBhYm9y
dCBwcm9taXNlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIEVycm9y
cyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc3RhcnRzIGVycm9yZWQ7IHByZXZlbnRBYm9y
dCA9IHVuZGVmaW5lZCAoZmFsc3kpOyBmdWxmaWxsZWQgYWJvcnQgcHJvbWlzZSBDYW4ndCBmaW5k
IHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVk
IGZvcndhcmQ6IHN0YXJ0cyBlcnJvcmVkOyBwcmV2ZW50QWJvcnQgPSBudWxsIChmYWxzeSk7IGZ1
bGZpbGxlZCBhYm9ydCBwcm9taXNlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFt
Ci1GQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc3RhcnRzIGVycm9yZWQ7
IHByZXZlbnRBYm9ydCA9IGZhbHNlIChmYWxzeSk7IGZ1bGZpbGxlZCBhYm9ydCBwcm9taXNlIENh
bid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIEVycm9ycyBtdXN0IGJlIHBy
b3BhZ2F0ZWQgZm9yd2FyZDogc3RhcnRzIGVycm9yZWQ7IHByZXZlbnRBYm9ydCA9IDAgKGZhbHN5
KTsgZnVsZmlsbGVkIGFib3J0IHByb21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVT
dHJlYW0KLUZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBzdGFydHMgZXJy
b3JlZDsgcHJldmVudEFib3J0ID0gLTAgKGZhbHN5KTsgZnVsZmlsbGVkIGFib3J0IHByb21pc2Ug
Q2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgRXJyb3JzIG11c3QgYmUg
cHJvcGFnYXRlZCBmb3J3YXJkOiBzdGFydHMgZXJyb3JlZDsgcHJldmVudEFib3J0ID0gTmFOIChm
YWxzeSk7IGZ1bGZpbGxlZCBhYm9ydCBwcm9taXNlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRh
YmxlU3RyZWFtCi1GQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc3RhcnRz
IGVycm9yZWQ7IHByZXZlbnRBYm9ydCA9ICAoZmFsc3kpOyBmdWxmaWxsZWQgYWJvcnQgcHJvbWlz
ZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBFcnJvcnMgbXVzdCBi
ZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHN0YXJ0cyBlcnJvcmVkOyBwcmV2ZW50QWJvcnQgPSB0cnVl
ICh0cnV0aHkpIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIEVycm9y
cyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc3RhcnRzIGVycm9yZWQ7IHByZXZlbnRBYm9y
dCA9IGEgKHRydXRoeSkgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwg
RXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBzdGFydHMgZXJyb3JlZDsgcHJldmVu
dEFib3J0ID0gMSAodHJ1dGh5KSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQot
RkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHN0YXJ0cyBlcnJvcmVkOyBw
cmV2ZW50QWJvcnQgPSBTeW1ib2woKSAodHJ1dGh5KSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0
YWJsZVN0cmVhbQotRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHN0YXJ0
cyBlcnJvcmVkOyBwcmV2ZW50QWJvcnQgPSBbb2JqZWN0IE9iamVjdF0gKHRydXRoeSkgQ2FuJ3Qg
ZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFn
YXRlZCBmb3J3YXJkOiBzdGFydHMgZXJyb3JlZDsgcHJldmVudEFib3J0ID0gdHJ1ZSwgcHJldmVu
dENhbmNlbCA9IHRydWUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwg
RXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBzdGFydHMgZXJyb3JlZDsgcHJldmVu
dEFib3J0ID0gdHJ1ZSwgcHJldmVudENhbmNlbCA9IHRydWUsIHByZXZlbnRDbG9zZSA9IHRydWUg
Q2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgRXJyb3JzIG11c3QgYmUg
cHJvcGFnYXRlZCBmb3J3YXJkOiBiZWNvbWVzIGVycm9yZWQgd2hpbGUgZW1wdHk7IHByZXZlbnRB
Ym9ydCA9IGZhbHNlOyBmdWxmaWxsZWQgYWJvcnQgcHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxl
OiBXcml0YWJsZVN0cmVhbQotRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6
IGJlY29tZXMgZXJyb3JlZCB3aGlsZSBlbXB0eTsgcHJldmVudEFib3J0ID0gZmFsc2U7IHJlamVj
dGVkIGFib3J0IHByb21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZB
SUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBiZWNvbWVzIGVycm9yZWQgd2hp
bGUgZW1wdHk7IHByZXZlbnRBYm9ydCA9IHRydWUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFi
bGVTdHJlYW0KLUZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBiZWNvbWVz
IGVycm9yZWQgd2hpbGUgZW1wdHk7IGRlc3QgbmV2ZXIgZGVzaXJlcyBjaHVua3M7IHByZXZlbnRB
Ym9ydCA9IGZhbHNlOyBmdWxmaWxsZWQgYWJvcnQgcHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxl
OiBXcml0YWJsZVN0cmVhbQotRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6
IGJlY29tZXMgZXJyb3JlZCB3aGlsZSBlbXB0eTsgZGVzdCBuZXZlciBkZXNpcmVzIGNodW5rczsg
cHJldmVudEFib3J0ID0gZmFsc2U7IHJlamVjdGVkIGFib3J0IHByb21pc2UgQ2FuJ3QgZmluZCB2
YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBm
b3J3YXJkOiBiZWNvbWVzIGVycm9yZWQgd2hpbGUgZW1wdHk7IGRlc3QgbmV2ZXIgZGVzaXJlcyBj
aHVua3M7IHByZXZlbnRBYm9ydCA9IHRydWUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVT
dHJlYW0KLUZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBiZWNvbWVzIGVy
cm9yZWQgYWZ0ZXIgb25lIGNodW5rOyBwcmV2ZW50QWJvcnQgPSBmYWxzZTsgZnVsZmlsbGVkIGFi
b3J0IHByb21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgRXJy
b3JzIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBiZWNvbWVzIGVycm9yZWQgYWZ0ZXIgb25l
IGNodW5rOyBwcmV2ZW50QWJvcnQgPSBmYWxzZTsgcmVqZWN0ZWQgYWJvcnQgcHJvbWlzZSBDYW4n
dCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9w
YWdhdGVkIGZvcndhcmQ6IGJlY29tZXMgZXJyb3JlZCBhZnRlciBvbmUgY2h1bms7IHByZXZlbnRB
Ym9ydCA9IHRydWUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgRXJy
b3JzIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBiZWNvbWVzIGVycm9yZWQgYWZ0ZXIgb25l
IGNodW5rOyBkZXN0IG5ldmVyIGRlc2lyZXMgY2h1bmtzOyBwcmV2ZW50QWJvcnQgPSBmYWxzZTsg
ZnVsZmlsbGVkIGFib3J0IHByb21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJl
YW0KLUZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBiZWNvbWVzIGVycm9y
ZWQgYWZ0ZXIgb25lIGNodW5rOyBkZXN0IG5ldmVyIGRlc2lyZXMgY2h1bmtzOyBwcmV2ZW50QWJv
cnQgPSBmYWxzZTsgcmVqZWN0ZWQgYWJvcnQgcHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBX
cml0YWJsZVN0cmVhbQotRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IGJl
Y29tZXMgZXJyb3JlZCBhZnRlciBvbmUgY2h1bms7IGRlc3QgbmV2ZXIgZGVzaXJlcyBjaHVua3M7
IHByZXZlbnRBYm9ydCA9IHRydWUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0K
LUZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBzaHV0ZG93biBtdXN0IG5v
dCBvY2N1ciB1bnRpbCB0aGUgZmluYWwgd3JpdGUgY29tcGxldGVzIENhbid0IGZpbmQgdmFyaWFi
bGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2Fy
ZDogc2h1dGRvd24gbXVzdCBub3Qgb2NjdXIgdW50aWwgdGhlIGZpbmFsIHdyaXRlIGNvbXBsZXRl
czsgcHJldmVudEFib3J0ID0gdHJ1ZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVh
bQotRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHNodXRkb3duIG11c3Qg
bm90IG9jY3VyIHVudGlsIHRoZSBmaW5hbCB3cml0ZSBjb21wbGV0ZXM7IGJlY29tZXMgZXJyb3Jl
ZCBhZnRlciBmaXJzdCB3cml0ZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQot
RkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHNodXRkb3duIG11c3Qgbm90
IG9jY3VyIHVudGlsIHRoZSBmaW5hbCB3cml0ZSBjb21wbGV0ZXM7IGJlY29tZXMgZXJyb3JlZCBh
ZnRlciBmaXJzdCB3cml0ZTsgcHJldmVudEFib3J0ID0gdHJ1ZSBDYW4ndCBmaW5kIHZhcmlhYmxl
OiBXcml0YWJsZVN0cmVhbQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Vycm9yLXByb3BhZ2F0aW9uLWZvcndh
cmQuc2VydmljZXdvcmtlci5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9lcnJvci1wcm9wYWdhdGlvbi1mb3J3YXJk
LnNlcnZpY2V3b3JrZXIuaHR0cHMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ZTQ1ZjIwYjcxNmIzY2MwNGQ2YWY0M2NmYTI3MmY3MWUzZTFjMDEyOS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Vycm9yLXByb3BhZ2F0aW9uLWZvcndh
cmQuc2VydmljZXdvcmtlci5odHRwcy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBA
QAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08dGl0bGU+ZXJyb3It
cHJvcGFnYXRpb24tZm9yd2FyZC5qcyBzZXJ2aWNlIHdvcmtlciB3cmFwcGVyIGZpbGU8L3RpdGxl
PgotCi08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08
c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08
c2NyaXB0IHNyYz0iL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9yZXNvdXJjZXMvdGVz
dC1oZWxwZXJzLnN1Yi5qcyI+PC9zY3JpcHQ+Ci0KLTxzY3JpcHQ+Ci0ndXNlIHN0cmljdCc7Ci1z
ZXJ2aWNlX3dvcmtlcl90ZXN0KCdlcnJvci1wcm9wYWdhdGlvbi1mb3J3YXJkLmpzJywgJ1NlcnZp
Y2Ugd29ya2VyIHRlc3Qgc2V0dXAnKTsKLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9lcnJvci1w
cm9wYWdhdGlvbi1mb3J3YXJkLnNoYXJlZHdvcmtlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Vycm9yLXBy
b3BhZ2F0aW9uLWZvcndhcmQuc2hhcmVkd29ya2VyLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDlkNWQyNTA5ZDc4NDdlOGNkNmZlNjYwNmFhNjBjZGQzM2FhNDc0
ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Vycm9y
LXByb3BhZ2F0aW9uLWZvcndhcmQuc2hhcmVkd29ya2VyLWV4cGVjdGVkLnR4dAorKysgL2Rldi9u
dWxsCkBAIC0xLDUgKzAsMCBAQAotQ09OU09MRSBNRVNTQUdFOiBSZWZlcmVuY2VFcnJvcjogQ2Fu
J3QgZmluZCB2YXJpYWJsZTogU2hhcmVkV29ya2VyCi0KLUhhcm5lc3MgRXJyb3IgKEZBSUwpLCBt
ZXNzYWdlID0gUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IFNoYXJlZFdvcmtl
cgotCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy9waXBpbmcvZXJyb3ItcHJvcGFnYXRpb24tZm9yd2FyZC5zaGFyZWR3b3Jr
ZXIuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy9waXBpbmcvZXJyb3ItcHJvcGFnYXRpb24tZm9yd2FyZC5zaGFyZWR3b3JrZXIuaHRtbApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTNkMDJjMDNmMzQ2NTdkOTQzNjk4MzJhYTFj
M2VmM2E5ZGYwZjI5MS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
cGlwaW5nL2Vycm9yLXByb3BhZ2F0aW9uLWZvcndhcmQuc2hhcmVkd29ya2VyLmh0bWwKKysrIC9k
ZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9
InV0Zi04Ij4KLTx0aXRsZT5lcnJvci1wcm9wYWdhdGlvbi1mb3J3YXJkLmpzIHNoYXJlZCB3b3Jr
ZXIgd3JhcHBlciBmaWxlPC90aXRsZT4KLQotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhh
cm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3Ny
ZXBvcnQuanMiPjwvc2NyaXB0PgotCi08c2NyaXB0PgotJ3VzZSBzdHJpY3QnOwotZmV0Y2hfdGVz
dHNfZnJvbV93b3JrZXIobmV3IFNoYXJlZFdvcmtlcignZXJyb3ItcHJvcGFnYXRpb24tZm9yd2Fy
ZC5qcycpKTsKLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9mbG93LWNvbnRyb2wuYW55LWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy9waXBpbmcvZmxvdy1jb250cm9sLmFueS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmNl
NWMyMzBkZTM5NmE3OGNjYzJlOTJmNGI1NDAyMGY2NjUyNDk4MAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBp
bmcvZmxvdy1jb250cm9sLmFueS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw3IEBACisKK0ZBSUwg
UGlwaW5nIGZyb20gYSBub24tZW1wdHkgUmVhZGFibGVTdHJlYW0gaW50byBhIFdyaXRhYmxlU3Ry
ZWFtIHRoYXQgZG9lcyBub3QgZGVzaXJlIGNodW5rcyBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCBy
ZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJUeXBlRXJyb3I6IHdzLmNvbnRyb2xsZXIuZXJy
b3IgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3MuY29udHJvbGxlci5lcnJvcihlcnJvcjEpJywg
J3dzLmNvbnRyb2xsZXIuZXJyb3InIGlzIHVuZGVmaW5lZCkiCitGQUlMIFBpcGluZyBmcm9tIGEg
bm9uLWVtcHR5IFJlYWRhYmxlU3RyZWFtIGludG8gYSBXcml0YWJsZVN0cmVhbSB0aGF0IGRvZXMg
bm90IGRlc2lyZSBjaHVua3MsIGJ1dCB0aGVuIGRvZXMgd3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1
bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicgaXMgdW5kZWZpbmVk
KQorRkFJTCBQaXBpbmcgZnJvbSBhbiBlbXB0eSBSZWFkYWJsZVN0cmVhbSBpbnRvIGEgV3JpdGFi
bGVTdHJlYW0gdGhhdCBkb2VzIG5vdCBkZXNpcmUgY2h1bmtzLCBidXQgdGhlbiB0aGUgcmVhZGFi
bGUgc3RyZWFtIGJlY29tZXMgbm9uLWVtcHR5IGFuZCB0aGUgd3JpdGFibGUgc3RyZWFtIHN0YXJ0
cyBkZXNpcmluZyBjaHVua3Mgd3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dz
LmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicgaXMgdW5kZWZpbmVkKQorRkFJTCBQaXBpbmcg
ZnJvbSBhIFJlYWRhYmxlU3RyZWFtIHRvIGEgV3JpdGFibGVTdHJlYW0gdGhhdCBkZXNpcmVzIG1v
cmUgY2h1bmtzIGJlZm9yZSBmaW5pc2hpbmcgd2l0aCBwcmV2aW91cyBvbmVzIHdzLmdldFdyaXRl
ciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXIn
IGlzIHVuZGVmaW5lZCkKK0ZBSUwgUGlwaW5nIHRvIGEgV3JpdGFibGVTdHJlYW0gdGhhdCBkb2Vz
IG5vdCBjb25zdW1lIHRoZSB3cml0ZXMgZmFzdCBlbm91Z2ggZXhlcnRzIGJhY2twcmVzc3VyZSBv
biB0aGUgUmVhZGFibGVTdHJlYW0gYXNzZXJ0X2FycmF5X2VxdWFsczogYXQgc3RlcCA0LCB0aGUg
ZGVzaXJlZFNpemUgYXQgdGhlIGxhc3QgZW5xdWV1ZSAoc3RlcCAzKSBtdXN0IGhhdmUgYmVlbiAw
IGV4cGVjdGVkIHByb3BlcnR5IDEgdG8gYmUgMCBidXQgZ290IDEgKGV4cGVjdGVkIGFycmF5IFsx
LCAwXSBnb3QgWzEsIDFdKQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Zsb3ctY29udHJvbC5hbnkuaHRtbCBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBp
bmcvZmxvdy1jb250cm9sLmFueS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzODI5MTM1MjhlNjkzYjNhNWQ1
NmM2NjBhNDUwNjA5ODBiNTQ4YzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Zsb3ctY29udHJvbC5h
bnkuaHRtbApAQCAtMCwwICsxIEBACis8IS0tIFRoaXMgZmlsZSBpcyByZXF1aXJlZCBmb3IgV2Vi
S2l0IHRlc3QgaW5mcmFzdHJ1Y3R1cmUgdG8gcnVuIHRoZSB0ZW1wbGF0ZWQgdGVzdCAtLT4KXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Zsb3ctY29udHJvbC5hbnku
anMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
cGlwaW5nL2Zsb3ctY29udHJvbC5hbnkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGI4M2MwMTFmNGE3MThkZGRk
ZWY4ODZjMjU1ODhjODhiMDA3ZTQzOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvZmxvdy1jb250cm9s
LmFueS5qcwpAQCAtMCwwICsxLDI5NyBAQAorLy8gTUVUQTogZ2xvYmFsPXdpbmRvdyx3b3JrZXIs
anNzaGVsbAorLy8gTUVUQTogc2NyaXB0PS4uL3Jlc291cmNlcy90ZXN0LXV0aWxzLmpzCisvLyBN
RVRBOiBzY3JpcHQ9Li4vcmVzb3VyY2VzL3JzLXV0aWxzLmpzCisvLyBNRVRBOiBzY3JpcHQ9Li4v
cmVzb3VyY2VzL3JlY29yZGluZy1zdHJlYW1zLmpzCisndXNlIHN0cmljdCc7CisKK2NvbnN0IGVy
cm9yMSA9IG5ldyBFcnJvcignZXJyb3IxIScpOworZXJyb3IxLm5hbWUgPSAnZXJyb3IxJzsKKwor
cHJvbWlzZV90ZXN0KHQgPT4geworCisgIGNvbnN0IHJzID0gcmVjb3JkaW5nUmVhZGFibGVTdHJl
YW0oeworICAgIHN0YXJ0KGNvbnRyb2xsZXIpIHsKKyAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgn
YScpOworICAgICAgY29udHJvbGxlci5lbnF1ZXVlKCdiJyk7CisgICAgICBjb250cm9sbGVyLmNs
b3NlKCk7CisgICAgfQorICB9KTsKKworICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3Ry
ZWFtKHVuZGVmaW5lZCwgbmV3IENvdW50UXVldWluZ1N0cmF0ZWd5KHsgaGlnaFdhdGVyTWFyazog
MCB9KSk7CisKKyAgY29uc3QgcGlwZVByb21pc2UgPSBycy5waXBlVG8od3MsIHsgcHJldmVudENh
bmNlbDogdHJ1ZSB9KTsKKworICAvLyBXYWl0IGFuZCBtYWtlIHN1cmUgaXQgZG9lc24ndCBkbyBh
bnkgcmVhZGluZy4KKyAgcmV0dXJuIGZsdXNoQXN5bmNFdmVudHMoKS50aGVuKCgpID0+IHsKKyAg
ICB3cy5jb250cm9sbGVyLmVycm9yKGVycm9yMSk7CisgIH0pCisgIC50aGVuKCgpID0+IHByb21p
c2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMSwgcGlwZVByb21pc2UsICdwaXBlVG8gbXVzdCBy
ZWplY3Qgd2l0aCB0aGUgc2FtZSBlcnJvcicpKQorICAudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0
X2FycmF5X2VxdWFscyhycy5ldmVudHNXaXRob3V0UHVsbHMsIFtdKTsKKyAgICBhc3NlcnRfYXJy
YXlfZXF1YWxzKHdzLmV2ZW50cywgW10pOworICB9KQorICAudGhlbigoKSA9PiByZWFkYWJsZVN0
cmVhbVRvQXJyYXkocnMpKQorICAudGhlbihjaHVua3NOb3RQcmV2aW91c2x5UmVhZCA9PiB7Cisg
ICAgYXNzZXJ0X2FycmF5X2VxdWFscyhjaHVua3NOb3RQcmV2aW91c2x5UmVhZCwgWydhJywgJ2In
XSk7CisgIH0pOworCit9LCAnUGlwaW5nIGZyb20gYSBub24tZW1wdHkgUmVhZGFibGVTdHJlYW0g
aW50byBhIFdyaXRhYmxlU3RyZWFtIHRoYXQgZG9lcyBub3QgZGVzaXJlIGNodW5rcycpOworCitw
cm9taXNlX3Rlc3QoKCkgPT4geworCisgIGNvbnN0IHJzID0gcmVjb3JkaW5nUmVhZGFibGVTdHJl
YW0oeworICAgIHN0YXJ0KGNvbnRyb2xsZXIpIHsKKyAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgn
YicpOworICAgICAgY29udHJvbGxlci5jbG9zZSgpOworICAgIH0KKyAgfSk7CisKKyAgbGV0IHJl
c29sdmVXcml0ZVByb21pc2U7CisgIGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0o
eworICAgIHdyaXRlKCkgeworICAgICAgaWYgKCFyZXNvbHZlV3JpdGVQcm9taXNlKSB7CisgICAg
ICAgIC8vIGZpcnN0IHdyaXRlCisgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+
IHsKKyAgICAgICAgICByZXNvbHZlV3JpdGVQcm9taXNlID0gcmVzb2x2ZTsKKyAgICAgICAgfSk7
CisgICAgICB9CisgICAgICByZXR1cm4gdW5kZWZpbmVkOworICAgIH0KKyAgfSk7CisKKyAgY29u
c3Qgd3JpdGVyID0gd3MuZ2V0V3JpdGVyKCk7CisgIGNvbnN0IGZpcnN0V3JpdGVQcm9taXNlID0g
d3JpdGVyLndyaXRlKCdhJyk7CisgIGFzc2VydF9lcXVhbHMod3JpdGVyLmRlc2lyZWRTaXplLCAw
LCAnYWZ0ZXIgd3JpdGluZyB0aGUgd3JpdGVyXCdzIGRlc2lyZWRTaXplIG11c3QgYmUgMCcpOwor
ICB3cml0ZXIucmVsZWFzZUxvY2soKTsKKworICAvLyBmaXJzdFdyaXRlUHJvbWlzZSB3b24ndCBz
ZXR0bGUgdW50aWwgd2UgY2FsbCByZXNvbHZlV3JpdGVQcm9taXNlLgorCisgIGNvbnN0IHBpcGVQ
cm9taXNlID0gcnMucGlwZVRvKHdzKTsKKworICByZXR1cm4gZmx1c2hBc3luY0V2ZW50cygpLnRo
ZW4oKCkgPT4gcmVzb2x2ZVdyaXRlUHJvbWlzZSgpKQorICAgIC50aGVuKCgpID0+IFByb21pc2Uu
YWxsKFtmaXJzdFdyaXRlUHJvbWlzZSwgcGlwZVByb21pc2VdKSkKKyAgICAudGhlbigoKSA9PiB7
CisgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJzLmV2ZW50c1dpdGhvdXRQdWxscywgW10pOwor
ICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsnd3JpdGUnLCAnYScsICd3cml0
ZScsICdiJywgJ2Nsb3NlJ10pOworICAgIH0pOworCit9LCAnUGlwaW5nIGZyb20gYSBub24tZW1w
dHkgUmVhZGFibGVTdHJlYW0gaW50byBhIFdyaXRhYmxlU3RyZWFtIHRoYXQgZG9lcyBub3QgZGVz
aXJlIGNodW5rcywgYnV0IHRoZW4gZG9lcycpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworCisg
IGNvbnN0IHJzID0gcmVjb3JkaW5nUmVhZGFibGVTdHJlYW0oKTsKKworICBsZXQgcmVzb2x2ZVdy
aXRlUHJvbWlzZTsKKyAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSh7CisgICAg
d3JpdGUoKSB7CisgICAgICBpZiAoIXJlc29sdmVXcml0ZVByb21pc2UpIHsKKyAgICAgICAgLy8g
Zmlyc3Qgd3JpdGUKKyAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4geworICAg
ICAgICAgIHJlc29sdmVXcml0ZVByb21pc2UgPSByZXNvbHZlOworICAgICAgICB9KTsKKyAgICAg
IH0KKyAgICAgIHJldHVybiB1bmRlZmluZWQ7CisgICAgfQorICB9KTsKKworICBjb25zdCB3cml0
ZXIgPSB3cy5nZXRXcml0ZXIoKTsKKyAgd3JpdGVyLndyaXRlKCdhJyk7CisKKyAgcmV0dXJuIGZs
dXNoQXN5bmNFdmVudHMoKS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdz
LmV2ZW50cywgWyd3cml0ZScsICdhJ10pOworICAgIGFzc2VydF9lcXVhbHMod3JpdGVyLmRlc2ly
ZWRTaXplLCAwLCAnYWZ0ZXIgd3JpdGluZyB0aGUgd3JpdGVyXCdzIGRlc2lyZWRTaXplIG11c3Qg
YmUgMCcpOworICAgIHdyaXRlci5yZWxlYXNlTG9jaygpOworCisgICAgY29uc3QgcGlwZVByb21p
c2UgPSBycy5waXBlVG8od3MpOworCisgICAgcnMuY29udHJvbGxlci5lbnF1ZXVlKCdiJyk7Cisg
ICAgcmVzb2x2ZVdyaXRlUHJvbWlzZSgpOworICAgIHJzLmNvbnRyb2xsZXIuY2xvc2UoKTsKKwor
ICAgIHJldHVybiBwaXBlUHJvbWlzZS50aGVuKCgpID0+IHsKKyAgICAgIGFzc2VydF9hcnJheV9l
cXVhbHMocnMuZXZlbnRzV2l0aG91dFB1bGxzLCBbXSk7CisgICAgICBhc3NlcnRfYXJyYXlfZXF1
YWxzKHdzLmV2ZW50cywgWyd3cml0ZScsICdhJywgJ3dyaXRlJywgJ2InLCAnY2xvc2UnXSk7Cisg
ICAgfSk7CisgIH0pOworCit9LCAnUGlwaW5nIGZyb20gYW4gZW1wdHkgUmVhZGFibGVTdHJlYW0g
aW50byBhIFdyaXRhYmxlU3RyZWFtIHRoYXQgZG9lcyBub3QgZGVzaXJlIGNodW5rcywgYnV0IHRo
ZW4gdGhlIHJlYWRhYmxlICcgKworICAgJ3N0cmVhbSBiZWNvbWVzIG5vbi1lbXB0eSBhbmQgdGhl
IHdyaXRhYmxlIHN0cmVhbSBzdGFydHMgZGVzaXJpbmcgY2h1bmtzJyk7CisKK3Byb21pc2VfdGVz
dCgoKSA9PiB7CisgIGNvbnN0IHVucmVhZENodW5rcyA9IFsnYicsICdjJywgJ2QnXTsKKworICBj
b25zdCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKHsKKyAgICBwdWxsKGNvbnRyb2xsZXIp
IHsKKyAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSh1bnJlYWRDaHVua3Muc2hpZnQoKSk7CisgICAg
ICBpZiAodW5yZWFkQ2h1bmtzLmxlbmd0aCA9PT0gMCkgeworICAgICAgICBjb250cm9sbGVyLmNs
b3NlKCk7CisgICAgICB9CisgICAgfQorICB9LCBuZXcgQ291bnRRdWV1aW5nU3RyYXRlZ3koeyBo
aWdoV2F0ZXJNYXJrOiAwIH0pKTsKKworICBsZXQgcmVzb2x2ZVdyaXRlUHJvbWlzZTsKKyAgY29u
c3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSh7CisgICAgd3JpdGUoKSB7CisgICAgICBp
ZiAoIXJlc29sdmVXcml0ZVByb21pc2UpIHsKKyAgICAgICAgLy8gZmlyc3Qgd3JpdGUKKyAgICAg
ICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4geworICAgICAgICAgIHJlc29sdmVXcml0
ZVByb21pc2UgPSByZXNvbHZlOworICAgICAgICB9KTsKKyAgICAgIH0KKyAgICAgIHJldHVybiB1
bmRlZmluZWQ7CisgICAgfQorICB9LCBuZXcgQ291bnRRdWV1aW5nU3RyYXRlZ3koeyBoaWdoV2F0
ZXJNYXJrOiAzIH0pKTsKKworICBjb25zdCB3cml0ZXIgPSB3cy5nZXRXcml0ZXIoKTsKKyAgY29u
c3QgZmlyc3RXcml0ZVByb21pc2UgPSB3cml0ZXIud3JpdGUoJ2EnKTsKKyAgYXNzZXJ0X2VxdWFs
cyh3cml0ZXIuZGVzaXJlZFNpemUsIDIsICdhZnRlciB3cml0aW5nIHRoZSB3cml0ZXJcJ3MgZGVz
aXJlZFNpemUgbXVzdCBiZSAyJyk7CisgIHdyaXRlci5yZWxlYXNlTG9jaygpOworCisgIC8vIGZp
cnN0V3JpdGVQcm9taXNlIHdvbid0IHNldHRsZSB1bnRpbCB3ZSBjYWxsIHJlc29sdmVXcml0ZVBy
b21pc2UuCisKKyAgY29uc3QgcGlwZVByb21pc2UgPSBycy5waXBlVG8od3MpOworCisgIHJldHVy
biBmbHVzaEFzeW5jRXZlbnRzKCkudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFs
cyh3cy5ldmVudHMsIFsnd3JpdGUnLCAnYSddKTsKKyAgICBhc3NlcnRfZXF1YWxzKHVucmVhZENo
dW5rcy5sZW5ndGgsIDEsICdjaHVua3Mgc2hvdWxkIGNvbnRpbnVlIHRvIGJlIGVucXVldWVkIHVu
dGlsIHRoZSBIV00gaXMgcmVhY2hlZCcpOworICB9KS50aGVuKCgpID0+IHJlc29sdmVXcml0ZVBy
b21pc2UoKSkKKyAgICAudGhlbigoKSA9PiBQcm9taXNlLmFsbChbZmlyc3RXcml0ZVByb21pc2Us
IHBpcGVQcm9taXNlXSkpCisgICAgLnRoZW4oKCkgPT4geworICAgICAgYXNzZXJ0X2FycmF5X2Vx
dWFscyhycy5ldmVudHMsIFsncHVsbCcsICdwdWxsJywgJ3B1bGwnXSk7CisgICAgICBhc3NlcnRf
YXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWyd3cml0ZScsICdhJywgJ3dyaXRlJywgJ2InLCd3cml0
ZScsICdjJywnd3JpdGUnLCAnZCcsICdjbG9zZSddKTsKKyAgICB9KTsKKworfSwgJ1BpcGluZyBm
cm9tIGEgUmVhZGFibGVTdHJlYW0gdG8gYSBXcml0YWJsZVN0cmVhbSB0aGF0IGRlc2lyZXMgbW9y
ZSBjaHVua3MgYmVmb3JlIGZpbmlzaGluZyB3aXRoIHByZXZpb3VzIG9uZXMnKTsKKworY2xhc3Mg
U3RlcFRyYWNrZXIgeworICBjb25zdHJ1Y3RvcigpIHsKKyAgICB0aGlzLndhaXRlcnMgPSBbXTsK
KyAgICB0aGlzLndha2VycyA9IFtdOworICB9CisKKyAgLy8gUmV0dXJucyBwcm9taXNlIHdoaWNo
IHJlc29sdmVzIHdoZW4gc3RlcCBgbmAgaXMgcmVhY2hlZC4gQWxzbyBzY2hlZHVsZXMgc3RlcCBu
ICsgMSB0byBoYXBwZW4gc2hvcnRseSBhZnRlciB0aGUKKyAgLy8gcHJvbWlzZSBpcyByZXNvbHZl
ZC4KKyAgd2FpdFRoZW5BZHZhbmNlKG4pIHsKKyAgICBpZiAodGhpcy53YWl0ZXJzW25dID09PSB1
bmRlZmluZWQpIHsKKyAgICAgIHRoaXMud2FpdGVyc1tuXSA9IG5ldyBQcm9taXNlKHJlc29sdmUg
PT4geworICAgICAgICB0aGlzLndha2Vyc1tuXSA9IHJlc29sdmU7CisgICAgICB9KTsKKyAgICAg
IHRoaXMud2FpdGVyc1tuXQorICAgICAgICAgIC50aGVuKCgpID0+IGZsdXNoQXN5bmNFdmVudHMo
KSkKKyAgICAgICAgICAudGhlbigoKSA9PiB7CisgICAgICAgICAgICBpZiAodGhpcy53YWtlcnNb
biArIDFdICE9PSB1bmRlZmluZWQpIHsKKyAgICAgICAgICAgICAgdGhpcy53YWtlcnNbbiArIDFd
KCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgfSk7CisgICAgfQorICAgIGlmIChuID09IDAp
IHsKKyAgICAgIHRoaXMud2FrZXJzWzBdKCk7CisgICAgfQorICAgIHJldHVybiB0aGlzLndhaXRl
cnNbbl07CisgIH0KK30KKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgY29uc3Qgc3RlcHMgPSBu
ZXcgU3RlcFRyYWNrZXIoKTsKKyAgY29uc3QgZGVzaXJlZFNpemVzID0gW107CisgIGNvbnN0IHJz
ID0gcmVjb3JkaW5nUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGNvbnRyb2xsZXIpIHsKKyAg
ICAgIHN0ZXBzLndhaXRUaGVuQWR2YW5jZSgxKS50aGVuKCgpID0+IGVucXVldWUoJ2EnKSk7Cisg
ICAgICBzdGVwcy53YWl0VGhlbkFkdmFuY2UoMykudGhlbigoKSA9PiBlbnF1ZXVlKCdiJykpOwor
ICAgICAgc3RlcHMud2FpdFRoZW5BZHZhbmNlKDUpLnRoZW4oKCkgPT4gZW5xdWV1ZSgnYycpKTsK
KyAgICAgIHN0ZXBzLndhaXRUaGVuQWR2YW5jZSg3KS50aGVuKCgpID0+IGVucXVldWUoJ2QnKSk7
CisgICAgICBzdGVwcy53YWl0VGhlbkFkdmFuY2UoMTEpLnRoZW4oKCkgPT4gY29udHJvbGxlci5j
bG9zZSgpKTsKKworICAgICAgZnVuY3Rpb24gZW5xdWV1ZShjaHVuaykgeworICAgICAgICBjb250
cm9sbGVyLmVucXVldWUoY2h1bmspOworICAgICAgICBkZXNpcmVkU2l6ZXMucHVzaChjb250cm9s
bGVyLmRlc2lyZWRTaXplKTsKKyAgICAgIH0KKyAgICB9CisgIH0pOworCisgIGNvbnN0IGNodW5r
c0ZpbmlzaGVkV3JpdGluZyA9IFtdOworICBjb25zdCB3cml0YWJsZVN0YXJ0UHJvbWlzZSA9IFBy
b21pc2UucmVzb2x2ZSgpOworICBsZXQgd3JpdGVDYWxsZWQgPSBmYWxzZTsKKyAgY29uc3Qgd3Mg
PSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSh7CisgICAgc3RhcnQoKSB7CisgICAgICByZXR1cm4g
d3JpdGFibGVTdGFydFByb21pc2U7CisgICAgfSwKKyAgICB3cml0ZShjaHVuaykgeworICAgICAg
Y29uc3Qgd2FpdEZvclN0ZXAgPSB3cml0ZUNhbGxlZCA/IDEyIDogOTsKKyAgICAgIHdyaXRlQ2Fs
bGVkID0gdHJ1ZTsKKyAgICAgIHJldHVybiBzdGVwcy53YWl0VGhlbkFkdmFuY2Uod2FpdEZvclN0
ZXApLnRoZW4oKCkgPT4geworICAgICAgICBjaHVua3NGaW5pc2hlZFdyaXRpbmcucHVzaChjaHVu
ayk7CisgICAgICB9KTsKKyAgICB9CisgIH0pOworCisgIHJldHVybiB3cml0YWJsZVN0YXJ0UHJv
bWlzZS50aGVuKCgpID0+IHsKKyAgICBjb25zdCBwaXBlUHJvbWlzZSA9IHJzLnBpcGVUbyh3cyk7
CisgICAgc3RlcHMud2FpdFRoZW5BZHZhbmNlKDApOworCisgICAgcmV0dXJuIFByb21pc2UuYWxs
KFsKKyAgICAgIHN0ZXBzLndhaXRUaGVuQWR2YW5jZSgyKS50aGVuKCgpID0+IHsKKyAgICAgICAg
YXNzZXJ0X2FycmF5X2VxdWFscyhjaHVua3NGaW5pc2hlZFdyaXRpbmcsIFtdLCAnYXQgc3RlcCAy
LCB6ZXJvIGNodW5rcyBtdXN0IGhhdmUgZmluaXNoZWQgd3JpdGluZycpOworICAgICAgICBhc3Nl
cnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWyd3cml0ZScsICdhJ10sICdhdCBzdGVwIDIsIG9u
ZSBjaHVuayBtdXN0IGhhdmUgYmVlbiB3cml0dGVuJyk7CisKKyAgICAgICAgLy8gV2hlbiAnYScg
KHRoZSB2ZXJ5IGZpcnN0IGNodW5rKSB3YXMgZW5xdWV1ZWQsIGl0IHdhcyBpbW1lZGlhdGVseSB1
c2VkIHRvIGZ1bGZpbGwgdGhlIG91dHN0YW5kaW5nIHJlYWQgcmVxdWVzdAorICAgICAgICAvLyBw
cm9taXNlLCBsZWF2aW5nIHRoZSBxdWV1ZSBlbXB0eS4KKyAgICAgICAgYXNzZXJ0X2FycmF5X2Vx
dWFscyhkZXNpcmVkU2l6ZXMsIFsxXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXQg
c3RlcCAyLCB0aGUgZGVzaXJlZFNpemUgYXQgdGhlIGxhc3QgZW5xdWV1ZSAoc3RlcCAxKSBtdXN0
IGhhdmUgYmVlbiAxJyk7CisgICAgICAgIGFzc2VydF9lcXVhbHMocnMuY29udHJvbGxlci5kZXNp
cmVkU2l6ZSwgMSwgJ2F0IHN0ZXAgMiwgdGhlIGN1cnJlbnQgZGVzaXJlZFNpemUgbXVzdCBiZSAx
Jyk7CisgICAgICB9KSwKKworICAgICAgc3RlcHMud2FpdFRoZW5BZHZhbmNlKDQpLnRoZW4oKCkg
PT4geworICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGNodW5rc0ZpbmlzaGVkV3JpdGluZywg
W10sICdhdCBzdGVwIDQsIHplcm8gY2h1bmtzIG11c3QgaGF2ZSBmaW5pc2hlZCB3cml0aW5nJyk7
CisgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ3dyaXRlJywgJ2EnXSwg
J2F0IHN0ZXAgNCwgb25lIGNodW5rIG11c3QgaGF2ZSBiZWVuIHdyaXR0ZW4nKTsKKworICAgICAg
ICAvLyBXaGVuICdiJyB3YXMgZW5xdWV1ZWQgYXQgc3RlcCAzLCB0aGUgcXVldWUgd2FzIGFsc28g
ZW1wdHksIHNpbmNlIGltbWVkaWF0ZWx5IGFmdGVyIGVucXVldWluZyAnYScgYXQKKyAgICAgICAg
Ly8gc3RlcCAxLCBpdCB3YXMgZGVxdWV1ZWQgaW4gb3JkZXIgdG8gZnVsZmlsbCB0aGUgcmVhZCgp
IGNhbGwgdGhhdCB3YXMgbWFkZSBhdCBzdGVwIDAuIFRodXMgdGhlIHF1ZXVlCisgICAgICAgIC8v
IGhhZCBzaXplIDEgKHRodXMgZGVzaXJlZFNpemUgb2YgMCkuCisgICAgICAgIGFzc2VydF9hcnJh
eV9lcXVhbHMoZGVzaXJlZFNpemVzLCBbMSwgMF0sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJ2F0IHN0ZXAgNCwgdGhlIGRlc2lyZWRTaXplIGF0IHRoZSBsYXN0IGVucXVldWUgKHN0ZXAg
MykgbXVzdCBoYXZlIGJlZW4gMCcpOworICAgICAgICBhc3NlcnRfZXF1YWxzKHJzLmNvbnRyb2xs
ZXIuZGVzaXJlZFNpemUsIDAsICdhdCBzdGVwIDQsIHRoZSBjdXJyZW50IGRlc2lyZWRTaXplIG11
c3QgYmUgMCcpOworICAgICAgfSksCisKKyAgICAgIHN0ZXBzLndhaXRUaGVuQWR2YW5jZSg2KS50
aGVuKCgpID0+IHsKKyAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhjaHVua3NGaW5pc2hlZFdy
aXRpbmcsIFtdLCAnYXQgc3RlcCA2LCB6ZXJvIGNodW5rcyBtdXN0IGhhdmUgZmluaXNoZWQgd3Jp
dGluZycpOworICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWyd3cml0ZScs
ICdhJ10sICdhdCBzdGVwIDYsIG9uZSBjaHVuayBtdXN0IGhhdmUgYmVlbiB3cml0dGVuJyk7CisK
KyAgICAgICAgLy8gV2hlbiAnYycgd2FzIGVucXVldWVkIGF0IHN0ZXAgNSwgdGhlIHF1ZXVlIHdh
cyBub3QgZW1wdHk7IGl0IGhhZCAnYicgaW4gaXQsIHNpbmNlICdiJyB3aWxsIG5vdCBiZSByZWFk
IHVudGlsCisgICAgICAgIC8vIHRoZSBmaXJzdCB3cml0ZSBjb21wbGV0ZXMgYXQgc3RlcCA5LiBU
aHVzLCB0aGUgcXVldWUgc2l6ZSBpcyAyIGFmdGVyIGVucXVldWluZyAnYycsIGdpdmluZyBhIGRl
c2lyZWRTaXplIG9mCisgICAgICAgIC8vIC0xLgorICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxz
KGRlc2lyZWRTaXplcywgWzEsIDAsIC0xXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
YXQgc3RlcCA2LCB0aGUgZGVzaXJlZFNpemUgYXQgdGhlIGxhc3QgZW5xdWV1ZSAoc3RlcCA1KSBt
dXN0IGhhdmUgYmVlbiAtMScpOworICAgICAgICBhc3NlcnRfZXF1YWxzKHJzLmNvbnRyb2xsZXIu
ZGVzaXJlZFNpemUsIC0xLCAnYXQgc3RlcCA2LCB0aGUgY3VycmVudCBkZXNpcmVkU2l6ZSBtdXN0
IGJlIC0xJyk7CisgICAgICB9KSwKKworICAgICAgc3RlcHMud2FpdFRoZW5BZHZhbmNlKDgpLnRo
ZW4oKCkgPT4geworICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGNodW5rc0ZpbmlzaGVkV3Jp
dGluZywgW10sICdhdCBzdGVwIDgsIHplcm8gY2h1bmtzIG11c3QgaGF2ZSBmaW5pc2hlZCB3cml0
aW5nJyk7CisgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ3dyaXRlJywg
J2EnXSwgJ2F0IHN0ZXAgOCwgb25lIGNodW5rIG11c3QgaGF2ZSBiZWVuIHdyaXR0ZW4nKTsKKwor
ICAgICAgICAvLyBXaGVuICdkJyB3YXMgZW5xdWV1ZWQgYXQgc3RlcCA3LCB0aGUgc2l0dWF0aW9u
IGlzIHRoZSBzYW1lIGFzIGJlZm9yZSwgbGVhZGluZyB0byBhIHF1ZXVlIGNvbnRhaW5pbmcgJ2In
LCAnYycsCisgICAgICAgIC8vIGFuZCAnZCcuCisgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMo
ZGVzaXJlZFNpemVzLCBbMSwgMCwgLTEsIC0yXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnYXQgc3RlcCA4LCB0aGUgZGVzaXJlZFNpemUgYXQgdGhlIGxhc3QgZW5xdWV1ZSAoc3RlcCA3
KSBtdXN0IGhhdmUgYmVlbiAtMicpOworICAgICAgICBhc3NlcnRfZXF1YWxzKHJzLmNvbnRyb2xs
ZXIuZGVzaXJlZFNpemUsIC0yLCAnYXQgc3RlcCA4LCB0aGUgY3VycmVudCBkZXNpcmVkU2l6ZSBt
dXN0IGJlIC0yJyk7CisgICAgICB9KSwKKworICAgICAgc3RlcHMud2FpdFRoZW5BZHZhbmNlKDEw
KS50aGVuKCgpID0+IHsKKyAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhjaHVua3NGaW5pc2hl
ZFdyaXRpbmcsIFsnYSddLCAnYXQgc3RlcCAxMCwgb25lIGNodW5rIG11c3QgaGF2ZSBmaW5pc2hl
ZCB3cml0aW5nJyk7CisgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ3dy
aXRlJywgJ2EnLCAnd3JpdGUnLCAnYiddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdh
dCBzdGVwIDEwLCB0d28gY2h1bmtzIG11c3QgaGF2ZSBiZWVuIHdyaXR0ZW4nKTsKKworICAgICAg
ICBhc3NlcnRfZXF1YWxzKHJzLmNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIC0xLCAnYXQgc3RlcCAx
MCwgdGhlIGN1cnJlbnQgZGVzaXJlZFNpemUgbXVzdCBiZSAtMScpOworICAgICAgfSksCisKKyAg
ICAgIHBpcGVQcm9taXNlLnRoZW4oKCkgPT4geworICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxz
KGRlc2lyZWRTaXplcywgWzEsIDAsIC0xLCAtMl0sICdiYWNrcHJlc3N1cmUgbXVzdCBoYXZlIGJl
ZW4gZXhlcnRlZCBhdCB0aGUgc291cmNlJyk7CisgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMo
Y2h1bmtzRmluaXNoZWRXcml0aW5nLCBbJ2EnLCAnYicsICdjJywgJ2QnXSwgJ2FsbCBjaHVua3Mg
ZmluaXNoZWQgd3JpdGluZycpOworCisgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMocnMuZXZl
bnRzV2l0aG91dFB1bGxzLCBbXSwgJ25vdGhpbmcgdW5leHBlY3RlZCBzaG91bGQgaGFwcGVuIHRv
IHRoZSBSZWFkYWJsZVN0cmVhbScpOworICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2
ZW50cywgWyd3cml0ZScsICdhJywgJ3dyaXRlJywgJ2InLCAnd3JpdGUnLCAnYycsICd3cml0ZScs
ICdkJywgJ2Nsb3NlJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FsbCBjaHVua3Mg
d2VyZSB3cml0dGVuIChhbmQgdGhlIFdyaXRhYmxlU3RyZWFtIGNsb3NlZCknKTsKKyAgICAgIH0p
CisgICAgXSk7CisgIH0pOworfSwgJ1BpcGluZyB0byBhIFdyaXRhYmxlU3RyZWFtIHRoYXQgZG9l
cyBub3QgY29uc3VtZSB0aGUgd3JpdGVzIGZhc3QgZW5vdWdoIGV4ZXJ0cyBiYWNrcHJlc3N1cmUg
b24gdGhlIFJlYWRhYmxlU3RyZWFtJyk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Zsb3ctY29udHJvbC5hbnku
d29ya2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvZmxvdy1jb250cm9sLmFueS53b3JrZXItZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjc0ZDJlMTdkMDdjNjAwMjE1ZDFhMGJkODYzYWMxYjRlMThiOTdhNDcK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Zsb3ctY29udHJvbC5hbnkud29ya2VyLWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDcgQEAKKworRkFJTCBQaXBpbmcgZnJvbSBhIG5vbi1lbXB0eSBSZWFkYWJs
ZVN0cmVhbSBpbnRvIGEgV3JpdGFibGVTdHJlYW0gdGhhdCBkb2VzIG5vdCBkZXNpcmUgY2h1bmtz
IENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIFBpcGluZyBmcm9tIGEg
bm9uLWVtcHR5IFJlYWRhYmxlU3RyZWFtIGludG8gYSBXcml0YWJsZVN0cmVhbSB0aGF0IGRvZXMg
bm90IGRlc2lyZSBjaHVua3MsIGJ1dCB0aGVuIGRvZXMgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3Jp
dGFibGVTdHJlYW0KK0ZBSUwgUGlwaW5nIGZyb20gYW4gZW1wdHkgUmVhZGFibGVTdHJlYW0gaW50
byBhIFdyaXRhYmxlU3RyZWFtIHRoYXQgZG9lcyBub3QgZGVzaXJlIGNodW5rcywgYnV0IHRoZW4g
dGhlIHJlYWRhYmxlIHN0cmVhbSBiZWNvbWVzIG5vbi1lbXB0eSBhbmQgdGhlIHdyaXRhYmxlIHN0
cmVhbSBzdGFydHMgZGVzaXJpbmcgY2h1bmtzIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxl
U3RyZWFtCitGQUlMIFBpcGluZyBmcm9tIGEgUmVhZGFibGVTdHJlYW0gdG8gYSBXcml0YWJsZVN0
cmVhbSB0aGF0IGRlc2lyZXMgbW9yZSBjaHVua3MgYmVmb3JlIGZpbmlzaGluZyB3aXRoIHByZXZp
b3VzIG9uZXMgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgUGlwaW5n
IHRvIGEgV3JpdGFibGVTdHJlYW0gdGhhdCBkb2VzIG5vdCBjb25zdW1lIHRoZSB3cml0ZXMgZmFz
dCBlbm91Z2ggZXhlcnRzIGJhY2twcmVzc3VyZSBvbiB0aGUgUmVhZGFibGVTdHJlYW0gQ2FuJ3Qg
ZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9mbG93LWNvbnRy
b2wuYW55Lndvcmtlci5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zdHJlYW1zL3BpcGluZy9mbG93LWNvbnRyb2wuYW55Lndvcmtlci5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjIzODI5MTM1MjhlNjkzYjNhNWQ1NmM2NjBhNDUwNjA5ODBiNTQ4YzMKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMvcGlwaW5nL2Zsb3ctY29udHJvbC5hbnkud29ya2VyLmh0bWwKQEAgLTAsMCArMSBAQAor
PCEtLSBUaGlzIGZpbGUgaXMgcmVxdWlyZWQgZm9yIFdlYktpdCB0ZXN0IGluZnJhc3RydWN0dXJl
IHRvIHJ1biB0aGUgdGVtcGxhdGVkIHRlc3QgLS0+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL3BpcGluZy9mbG93LWNvbnRyb2wuZGVkaWNhdGVkd29ya2VyLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9w
aXBpbmcvZmxvdy1jb250cm9sLmRlZGljYXRlZHdvcmtlci1leHBlY3RlZC50eHQKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc0ZDJlMTdkMDdjNjAwMjE1ZDFhMGJkODYzYWMxYjRlMThi
OTdhNDcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9m
bG93LWNvbnRyb2wuZGVkaWNhdGVkd29ya2VyLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBA
IC0xLDcgKzAsMCBAQAotCi1GQUlMIFBpcGluZyBmcm9tIGEgbm9uLWVtcHR5IFJlYWRhYmxlU3Ry
ZWFtIGludG8gYSBXcml0YWJsZVN0cmVhbSB0aGF0IGRvZXMgbm90IGRlc2lyZSBjaHVua3MgQ2Fu
J3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgUGlwaW5nIGZyb20gYSBub24t
ZW1wdHkgUmVhZGFibGVTdHJlYW0gaW50byBhIFdyaXRhYmxlU3RyZWFtIHRoYXQgZG9lcyBub3Qg
ZGVzaXJlIGNodW5rcywgYnV0IHRoZW4gZG9lcyBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJs
ZVN0cmVhbQotRkFJTCBQaXBpbmcgZnJvbSBhbiBlbXB0eSBSZWFkYWJsZVN0cmVhbSBpbnRvIGEg
V3JpdGFibGVTdHJlYW0gdGhhdCBkb2VzIG5vdCBkZXNpcmUgY2h1bmtzLCBidXQgdGhlbiB0aGUg
cmVhZGFibGUgc3RyZWFtIGJlY29tZXMgbm9uLWVtcHR5IGFuZCB0aGUgd3JpdGFibGUgc3RyZWFt
IHN0YXJ0cyBkZXNpcmluZyBjaHVua3MgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJl
YW0KLUZBSUwgUGlwaW5nIGZyb20gYSBSZWFkYWJsZVN0cmVhbSB0byBhIFdyaXRhYmxlU3RyZWFt
IHRoYXQgZGVzaXJlcyBtb3JlIGNodW5rcyBiZWZvcmUgZmluaXNoaW5nIHdpdGggcHJldmlvdXMg
b25lcyBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBQaXBpbmcgdG8g
YSBXcml0YWJsZVN0cmVhbSB0aGF0IGRvZXMgbm90IGNvbnN1bWUgdGhlIHdyaXRlcyBmYXN0IGVu
b3VnaCBleGVydHMgYmFja3ByZXNzdXJlIG9uIHRoZSBSZWFkYWJsZVN0cmVhbSBDYW4ndCBmaW5k
IHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Zsb3ctY29udHJvbC5k
ZWRpY2F0ZWR3b3JrZXIuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvZmxvdy1jb250cm9sLmRlZGljYXRlZHdvcmtlci5odG1s
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NzAzMTgzYzExNzJiNjIzNjk3YzYwODI3
ODRmOGUwZWI0MjYxODk0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy9waXBpbmcvZmxvdy1jb250cm9sLmRlZGljYXRlZHdvcmtlci5odG1sCisrKyAvZGV2L251bGwK
QEAgLTEsMTEgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+
Ci08dGl0bGU+Zmxvdy1jb250cm9sLmpzIGRlZGljYXRlZCB3b3JrZXIgd3JhcHBlciBmaWxlPC90
aXRsZT4KLQotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0
PgotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0
PgotCi08c2NyaXB0PgotJ3VzZSBzdHJpY3QnOwotZmV0Y2hfdGVzdHNfZnJvbV93b3JrZXIobmV3
IFdvcmtlcignZmxvdy1jb250cm9sLmpzJykpOwotPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Zs
b3ctY29udHJvbC5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL3BpcGluZy9mbG93LWNvbnRyb2wuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMjE5ZTUwMTE4NzA4ODdlYjllOGEyYmNkY2M0YTIzZjRjZjQxZTgyNi4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Zsb3ctY29udHJv
bC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08
bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08dGl0bGU+Zmxvdy1jb250cm9sLmpzIGJyb3dzZXIgY29u
dGV4dCB3cmFwcGVyIGZpbGU8L3RpdGxlPgotCi08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0
aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVz
c3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci0KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdC11
dGlscy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3JzLXV0aWxzLmpz
Ij48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvcmVjb3JkaW5nLXN0cmVhbXMu
anMiPjwvc2NyaXB0PgotCi08c2NyaXB0IHNyYz0iZmxvdy1jb250cm9sLmpzIj48L3NjcmlwdD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy9waXBpbmcvZmxvdy1jb250cm9sLmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9mbG93LWNvbnRyb2wuanMKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA0YzU2ZWM0MGQwYjQ0NmFhNzMzYjA5ZWE1MGQyY2Nj
YzA1MDRhNDIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGlu
Zy9mbG93LWNvbnRyb2wuanMKKysrIC9kZXYvbnVsbApAQCAtMSwzMDYgKzAsMCBAQAotJ3VzZSBz
dHJpY3QnOwotCi1pZiAoc2VsZi5pbXBvcnRTY3JpcHRzKSB7Ci0gIHNlbGYuaW1wb3J0U2NyaXB0
cygnL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcycpOwotICBzZWxmLmltcG9ydFNjcmlwdHMoJy4u
L3Jlc291cmNlcy90ZXN0LXV0aWxzLmpzJyk7Ci0gIHNlbGYuaW1wb3J0U2NyaXB0cygnLi4vcmVz
b3VyY2VzL3JzLXV0aWxzLmpzJyk7Ci0gIHNlbGYuaW1wb3J0U2NyaXB0cygnLi4vcmVzb3VyY2Vz
L3JlY29yZGluZy1zdHJlYW1zLmpzJyk7Ci19Ci0KLWNvbnN0IGVycm9yMSA9IG5ldyBFcnJvcign
ZXJyb3IxIScpOwotZXJyb3IxLm5hbWUgPSAnZXJyb3IxJzsKLQotcHJvbWlzZV90ZXN0KHQgPT4g
ewotCi0gIGNvbnN0IHJzID0gcmVjb3JkaW5nUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGNv
bnRyb2xsZXIpIHsKLSAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYScpOwotICAgICAgY29udHJv
bGxlci5lbnF1ZXVlKCdiJyk7Ci0gICAgICBjb250cm9sbGVyLmNsb3NlKCk7Ci0gICAgfQotICB9
KTsKLQotICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKHVuZGVmaW5lZCwgbmV3
IENvdW50UXVldWluZ1N0cmF0ZWd5KHsgaGlnaFdhdGVyTWFyazogMCB9KSk7Ci0KLSAgY29uc3Qg
cGlwZVByb21pc2UgPSBycy5waXBlVG8od3MsIHsgcHJldmVudENhbmNlbDogdHJ1ZSB9KTsKLQot
ICAvLyBXYWl0IGFuZCBtYWtlIHN1cmUgaXQgZG9lc24ndCBkbyBhbnkgcmVhZGluZy4KLSAgcmV0
dXJuIGZsdXNoQXN5bmNFdmVudHMoKS50aGVuKCgpID0+IHsKLSAgICB3cy5jb250cm9sbGVyLmVy
cm9yKGVycm9yMSk7Ci0gIH0pCi0gIC50aGVuKCgpID0+IHByb21pc2VfcmVqZWN0cyh0LCBlcnJv
cjEsIHBpcGVQcm9taXNlLCAncGlwZVRvIG11c3QgcmVqZWN0IHdpdGggdGhlIHNhbWUgZXJyb3In
KSkKLSAgLnRoZW4oKCkgPT4gewotICAgIGFzc2VydF9hcnJheV9lcXVhbHMocnMuZXZlbnRzV2l0
aG91dFB1bGxzLCBbXSk7Ci0gICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFtdKTsK
LSAgfSkKLSAgLnRoZW4oKCkgPT4gcmVhZGFibGVTdHJlYW1Ub0FycmF5KHJzKSkKLSAgLnRoZW4o
Y2h1bmtzTm90UHJldmlvdXNseVJlYWQgPT4gewotICAgIGFzc2VydF9hcnJheV9lcXVhbHMoY2h1
bmtzTm90UHJldmlvdXNseVJlYWQsIFsnYScsICdiJ10pOwotICB9KTsKLQotfSwgJ1BpcGluZyBm
cm9tIGEgbm9uLWVtcHR5IFJlYWRhYmxlU3RyZWFtIGludG8gYSBXcml0YWJsZVN0cmVhbSB0aGF0
IGRvZXMgbm90IGRlc2lyZSBjaHVua3MnKTsKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLQotICBj
b25zdCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjb250cm9sbGVy
KSB7Ci0gICAgICBjb250cm9sbGVyLmVucXVldWUoJ2InKTsKLSAgICAgIGNvbnRyb2xsZXIuY2xv
c2UoKTsKLSAgICB9Ci0gIH0pOwotCi0gIGxldCByZXNvbHZlV3JpdGVQcm9taXNlOwotICBjb25z
dCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKHsKLSAgICB3cml0ZSgpIHsKLSAgICAgIGlm
ICghcmVzb2x2ZVdyaXRlUHJvbWlzZSkgewotICAgICAgICAvLyBmaXJzdCB3cml0ZQotICAgICAg
ICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7Ci0gICAgICAgICAgcmVzb2x2ZVdyaXRl
UHJvbWlzZSA9IHJlc29sdmU7Ci0gICAgICAgIH0pOwotICAgICAgfQotICAgICAgcmV0dXJuIHVu
ZGVmaW5lZDsKLSAgICB9Ci0gIH0pOwotCi0gIGNvbnN0IHdyaXRlciA9IHdzLmdldFdyaXRlcigp
OwotICBjb25zdCBmaXJzdFdyaXRlUHJvbWlzZSA9IHdyaXRlci53cml0ZSgnYScpOwotICBhc3Nl
cnRfZXF1YWxzKHdyaXRlci5kZXNpcmVkU2l6ZSwgMCwgJ2FmdGVyIHdyaXRpbmcgdGhlIHdyaXRl
clwncyBkZXNpcmVkU2l6ZSBtdXN0IGJlIDAnKTsKLSAgd3JpdGVyLnJlbGVhc2VMb2NrKCk7Ci0K
LSAgLy8gZmlyc3RXcml0ZVByb21pc2Ugd29uJ3Qgc2V0dGxlIHVudGlsIHdlIGNhbGwgcmVzb2x2
ZVdyaXRlUHJvbWlzZS4KLQotICBjb25zdCBwaXBlUHJvbWlzZSA9IHJzLnBpcGVUbyh3cyk7Ci0K
LSAgcmV0dXJuIGZsdXNoQXN5bmNFdmVudHMoKS50aGVuKCgpID0+IHJlc29sdmVXcml0ZVByb21p
c2UoKSkKLSAgICAudGhlbigoKSA9PiBQcm9taXNlLmFsbChbZmlyc3RXcml0ZVByb21pc2UsIHBp
cGVQcm9taXNlXSkpCi0gICAgLnRoZW4oKCkgPT4gewotICAgICAgYXNzZXJ0X2FycmF5X2VxdWFs
cyhycy5ldmVudHNXaXRob3V0UHVsbHMsIFtdKTsKLSAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMo
d3MuZXZlbnRzLCBbJ3dyaXRlJywgJ2EnLCAnd3JpdGUnLCAnYicsICdjbG9zZSddKTsKLSAgICB9
KTsKLQotfSwgJ1BpcGluZyBmcm9tIGEgbm9uLWVtcHR5IFJlYWRhYmxlU3RyZWFtIGludG8gYSBX
cml0YWJsZVN0cmVhbSB0aGF0IGRvZXMgbm90IGRlc2lyZSBjaHVua3MsIGJ1dCB0aGVuIGRvZXMn
KTsKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLQotICBjb25zdCBycyA9IHJlY29yZGluZ1JlYWRh
YmxlU3RyZWFtKCk7Ci0KLSAgY29uc3Qgc3RhcnRQcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKCk7
Ci0gIGxldCByZXNvbHZlV3JpdGVQcm9taXNlOwotICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRh
YmxlU3RyZWFtKHsKLSAgICBzdGFydCgpIHsKLSAgICAgIHJldHVybiBzdGFydFByb21pc2U7Ci0g
ICAgfSwKLSAgICB3cml0ZSgpIHsKLSAgICAgIGlmICghcmVzb2x2ZVdyaXRlUHJvbWlzZSkgewot
ICAgICAgICAvLyBmaXJzdCB3cml0ZQotICAgICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2
ZSA9PiB7Ci0gICAgICAgICAgcmVzb2x2ZVdyaXRlUHJvbWlzZSA9IHJlc29sdmU7Ci0gICAgICAg
IH0pOwotICAgICAgfQotICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKLSAgICB9Ci0gIH0pOwotCi0g
IGNvbnN0IHdyaXRlciA9IHdzLmdldFdyaXRlcigpOwotICB3cml0ZXIud3JpdGUoJ2EnKTsKLQot
ICByZXR1cm4gc3RhcnRQcm9taXNlLnRoZW4oKCkgPT4gewotICAgIGFzc2VydF9hcnJheV9lcXVh
bHMod3MuZXZlbnRzLCBbJ3dyaXRlJywgJ2EnXSk7Ci0gICAgYXNzZXJ0X2VxdWFscyh3cml0ZXIu
ZGVzaXJlZFNpemUsIDAsICdhZnRlciB3cml0aW5nIHRoZSB3cml0ZXJcJ3MgZGVzaXJlZFNpemUg
bXVzdCBiZSAwJyk7Ci0gICAgd3JpdGVyLnJlbGVhc2VMb2NrKCk7Ci0KLSAgICBjb25zdCBwaXBl
UHJvbWlzZSA9IHJzLnBpcGVUbyh3cyk7Ci0KLSAgICBycy5jb250cm9sbGVyLmVucXVldWUoJ2In
KTsKLSAgICByZXNvbHZlV3JpdGVQcm9taXNlKCk7Ci0gICAgcnMuY29udHJvbGxlci5jbG9zZSgp
OwotCi0gICAgcmV0dXJuIHBpcGVQcm9taXNlLnRoZW4oKCkgPT4gewotICAgICAgYXNzZXJ0X2Fy
cmF5X2VxdWFscyhycy5ldmVudHNXaXRob3V0UHVsbHMsIFtdKTsKLSAgICAgIGFzc2VydF9hcnJh
eV9lcXVhbHMod3MuZXZlbnRzLCBbJ3dyaXRlJywgJ2EnLCAnd3JpdGUnLCAnYicsICdjbG9zZSdd
KTsKLSAgICB9KTsKLSAgfSk7Ci0KLX0sICdQaXBpbmcgZnJvbSBhbiBlbXB0eSBSZWFkYWJsZVN0
cmVhbSBpbnRvIGEgV3JpdGFibGVTdHJlYW0gdGhhdCBkb2VzIG5vdCBkZXNpcmUgY2h1bmtzLCBi
dXQgdGhlbiB0aGUgcmVhZGFibGUgJyArCi0gICAnc3RyZWFtIGJlY29tZXMgbm9uLWVtcHR5IGFu
ZCB0aGUgd3JpdGFibGUgc3RyZWFtIHN0YXJ0cyBkZXNpcmluZyBjaHVua3MnKTsKLQotcHJvbWlz
ZV90ZXN0KCgpID0+IHsKLSAgY29uc3QgdW5yZWFkQ2h1bmtzID0gWydiJywgJ2MnLCAnZCddOwot
Ci0gIGNvbnN0IHJzID0gcmVjb3JkaW5nUmVhZGFibGVTdHJlYW0oewotICAgIHB1bGwoY29udHJv
bGxlcikgewotICAgICAgY29udHJvbGxlci5lbnF1ZXVlKHVucmVhZENodW5rcy5zaGlmdCgpKTsK
LSAgICAgIGlmICh1bnJlYWRDaHVua3MubGVuZ3RoID09PSAwKSB7Ci0gICAgICAgIGNvbnRyb2xs
ZXIuY2xvc2UoKTsKLSAgICAgIH0KLSAgICB9Ci0gIH0sIG5ldyBDb3VudFF1ZXVpbmdTdHJhdGVn
eSh7IGhpZ2hXYXRlck1hcms6IDAgfSkpOwotCi0gIGxldCByZXNvbHZlV3JpdGVQcm9taXNlOwot
ICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKHsKLSAgICB3cml0ZSgpIHsKLSAg
ICAgIGlmICghcmVzb2x2ZVdyaXRlUHJvbWlzZSkgewotICAgICAgICAvLyBmaXJzdCB3cml0ZQot
ICAgICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7Ci0gICAgICAgICAgcmVzb2x2
ZVdyaXRlUHJvbWlzZSA9IHJlc29sdmU7Ci0gICAgICAgIH0pOwotICAgICAgfQotICAgICAgcmV0
dXJuIHVuZGVmaW5lZDsKLSAgICB9Ci0gIH0sIG5ldyBDb3VudFF1ZXVpbmdTdHJhdGVneSh7IGhp
Z2hXYXRlck1hcms6IDMgfSkpOwotCi0gIGNvbnN0IHdyaXRlciA9IHdzLmdldFdyaXRlcigpOwot
ICBjb25zdCBmaXJzdFdyaXRlUHJvbWlzZSA9IHdyaXRlci53cml0ZSgnYScpOwotICBhc3NlcnRf
ZXF1YWxzKHdyaXRlci5kZXNpcmVkU2l6ZSwgMiwgJ2FmdGVyIHdyaXRpbmcgdGhlIHdyaXRlclwn
cyBkZXNpcmVkU2l6ZSBtdXN0IGJlIDInKTsKLSAgd3JpdGVyLnJlbGVhc2VMb2NrKCk7Ci0KLSAg
Ly8gZmlyc3RXcml0ZVByb21pc2Ugd29uJ3Qgc2V0dGxlIHVudGlsIHdlIGNhbGwgcmVzb2x2ZVdy
aXRlUHJvbWlzZS4KLQotICBjb25zdCBwaXBlUHJvbWlzZSA9IHJzLnBpcGVUbyh3cyk7Ci0KLSAg
cmV0dXJuIGZsdXNoQXN5bmNFdmVudHMoKS50aGVuKCgpID0+IHsKLSAgICBhc3NlcnRfYXJyYXlf
ZXF1YWxzKHdzLmV2ZW50cywgWyd3cml0ZScsICdhJ10pOwotICAgIGFzc2VydF9lcXVhbHModW5y
ZWFkQ2h1bmtzLmxlbmd0aCwgMSwgJ2NodW5rcyBzaG91bGQgY29udGludWUgdG8gYmUgZW5xdWV1
ZWQgdW50aWwgdGhlIEhXTSBpcyByZWFjaGVkJyk7Ci0gIH0pLnRoZW4oKCkgPT4gcmVzb2x2ZVdy
aXRlUHJvbWlzZSgpKQotICAgIC50aGVuKCgpID0+IFByb21pc2UuYWxsKFtmaXJzdFdyaXRlUHJv
bWlzZSwgcGlwZVByb21pc2VdKSkKLSAgICAudGhlbigoKSA9PiB7Ci0gICAgICBhc3NlcnRfYXJy
YXlfZXF1YWxzKHJzLmV2ZW50cywgWydwdWxsJywgJ3B1bGwnLCAncHVsbCddKTsKLSAgICAgIGFz
c2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ3dyaXRlJywgJ2EnLCAnd3JpdGUnLCAnYics
J3dyaXRlJywgJ2MnLCd3cml0ZScsICdkJywgJ2Nsb3NlJ10pOwotICAgIH0pOwotCi19LCAnUGlw
aW5nIGZyb20gYSBSZWFkYWJsZVN0cmVhbSB0byBhIFdyaXRhYmxlU3RyZWFtIHRoYXQgZGVzaXJl
cyBtb3JlIGNodW5rcyBiZWZvcmUgZmluaXNoaW5nIHdpdGggcHJldmlvdXMgb25lcycpOwotCi1j
bGFzcyBTdGVwVHJhY2tlciB7Ci0gIGNvbnN0cnVjdG9yKCkgewotICAgIHRoaXMud2FpdGVycyA9
IFtdOwotICAgIHRoaXMud2FrZXJzID0gW107Ci0gIH0KLQotICAvLyBSZXR1cm5zIHByb21pc2Ug
d2hpY2ggcmVzb2x2ZXMgd2hlbiBzdGVwIGBuYCBpcyByZWFjaGVkLiBBbHNvIHNjaGVkdWxlcyBz
dGVwIG4gKyAxIHRvIGhhcHBlbiBzaG9ydGx5IGFmdGVyIHRoZQotICAvLyBwcm9taXNlIGlzIHJl
c29sdmVkLgotICB3YWl0VGhlbkFkdmFuY2UobikgewotICAgIGlmICh0aGlzLndhaXRlcnNbbl0g
PT09IHVuZGVmaW5lZCkgewotICAgICAgdGhpcy53YWl0ZXJzW25dID0gbmV3IFByb21pc2UocmVz
b2x2ZSA9PiB7Ci0gICAgICAgIHRoaXMud2FrZXJzW25dID0gcmVzb2x2ZTsKLSAgICAgIH0pOwot
ICAgICAgdGhpcy53YWl0ZXJzW25dCi0gICAgICAgICAgLnRoZW4oKCkgPT4gZmx1c2hBc3luY0V2
ZW50cygpKQotICAgICAgICAgIC50aGVuKCgpID0+IHsKLSAgICAgICAgICAgIGlmICh0aGlzLndh
a2Vyc1tuICsgMV0gIT09IHVuZGVmaW5lZCkgewotICAgICAgICAgICAgICB0aGlzLndha2Vyc1tu
ICsgMV0oKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9KTsKLSAgICB9Ci0gICAgaWYgKG4g
PT0gMCkgewotICAgICAgdGhpcy53YWtlcnNbMF0oKTsKLSAgICB9Ci0gICAgcmV0dXJuIHRoaXMu
d2FpdGVyc1tuXTsKLSAgfQotfQotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotICBjb25zdCBzdGVw
cyA9IG5ldyBTdGVwVHJhY2tlcigpOwotICBjb25zdCBkZXNpcmVkU2l6ZXMgPSBbXTsKLSAgY29u
c3QgcnMgPSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoY29udHJvbGxlcikg
ewotICAgICAgc3RlcHMud2FpdFRoZW5BZHZhbmNlKDEpLnRoZW4oKCkgPT4gZW5xdWV1ZSgnYScp
KTsKLSAgICAgIHN0ZXBzLndhaXRUaGVuQWR2YW5jZSgzKS50aGVuKCgpID0+IGVucXVldWUoJ2In
KSk7Ci0gICAgICBzdGVwcy53YWl0VGhlbkFkdmFuY2UoNSkudGhlbigoKSA9PiBlbnF1ZXVlKCdj
JykpOwotICAgICAgc3RlcHMud2FpdFRoZW5BZHZhbmNlKDcpLnRoZW4oKCkgPT4gZW5xdWV1ZSgn
ZCcpKTsKLSAgICAgIHN0ZXBzLndhaXRUaGVuQWR2YW5jZSgxMSkudGhlbigoKSA9PiBjb250cm9s
bGVyLmNsb3NlKCkpOwotCi0gICAgICBmdW5jdGlvbiBlbnF1ZXVlKGNodW5rKSB7Ci0gICAgICAg
IGNvbnRyb2xsZXIuZW5xdWV1ZShjaHVuayk7Ci0gICAgICAgIGRlc2lyZWRTaXplcy5wdXNoKGNv
bnRyb2xsZXIuZGVzaXJlZFNpemUpOwotICAgICAgfQotICAgIH0KLSAgfSk7Ci0KLSAgY29uc3Qg
Y2h1bmtzRmluaXNoZWRXcml0aW5nID0gW107Ci0gIGNvbnN0IHdyaXRhYmxlU3RhcnRQcm9taXNl
ID0gUHJvbWlzZS5yZXNvbHZlKCk7Ci0gIGxldCB3cml0ZUNhbGxlZCA9IGZhbHNlOwotICBjb25z
dCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKHsKLSAgICBzdGFydCgpIHsKLSAgICAgIHJl
dHVybiB3cml0YWJsZVN0YXJ0UHJvbWlzZTsKLSAgICB9LAotICAgIHdyaXRlKGNodW5rKSB7Ci0g
ICAgICBjb25zdCB3YWl0Rm9yU3RlcCA9IHdyaXRlQ2FsbGVkID8gMTIgOiA5OwotICAgICAgd3Jp
dGVDYWxsZWQgPSB0cnVlOwotICAgICAgcmV0dXJuIHN0ZXBzLndhaXRUaGVuQWR2YW5jZSh3YWl0
Rm9yU3RlcCkudGhlbigoKSA9PiB7Ci0gICAgICAgIGNodW5rc0ZpbmlzaGVkV3JpdGluZy5wdXNo
KGNodW5rKTsKLSAgICAgIH0pOwotICAgIH0KLSAgfSk7Ci0KLSAgcmV0dXJuIHdyaXRhYmxlU3Rh
cnRQcm9taXNlLnRoZW4oKCkgPT4gewotICAgIGNvbnN0IHBpcGVQcm9taXNlID0gcnMucGlwZVRv
KHdzKTsKLSAgICBzdGVwcy53YWl0VGhlbkFkdmFuY2UoMCk7Ci0KLSAgICByZXR1cm4gUHJvbWlz
ZS5hbGwoWwotICAgICAgc3RlcHMud2FpdFRoZW5BZHZhbmNlKDIpLnRoZW4oKCkgPT4gewotICAg
ICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGNodW5rc0ZpbmlzaGVkV3JpdGluZywgW10sICdhdCBz
dGVwIDIsIHplcm8gY2h1bmtzIG11c3QgaGF2ZSBmaW5pc2hlZCB3cml0aW5nJyk7Ci0gICAgICAg
IGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ3dyaXRlJywgJ2EnXSwgJ2F0IHN0ZXAg
Miwgb25lIGNodW5rIG11c3QgaGF2ZSBiZWVuIHdyaXR0ZW4nKTsKLQotICAgICAgICAvLyBXaGVu
ICdhJyAodGhlIHZlcnkgZmlyc3QgY2h1bmspIHdhcyBlbnF1ZXVlZCwgaXQgd2FzIGltbWVkaWF0
ZWx5IHVzZWQgdG8gZnVsZmlsbCB0aGUgb3V0c3RhbmRpbmcgcmVhZCByZXF1ZXN0Ci0gICAgICAg
IC8vIHByb21pc2UsIGxlYXZpbmcgdGhlIHF1ZXVlIGVtcHR5LgotICAgICAgICBhc3NlcnRfYXJy
YXlfZXF1YWxzKGRlc2lyZWRTaXplcywgWzFdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICdhdCBzdGVwIDIsIHRoZSBkZXNpcmVkU2l6ZSBhdCB0aGUgbGFzdCBlbnF1ZXVlIChzdGVwIDEp
IG11c3QgaGF2ZSBiZWVuIDEnKTsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyhycy5jb250cm9sbGVy
LmRlc2lyZWRTaXplLCAxLCAnYXQgc3RlcCAyLCB0aGUgY3VycmVudCBkZXNpcmVkU2l6ZSBtdXN0
IGJlIDEnKTsKLSAgICAgIH0pLAotCi0gICAgICBzdGVwcy53YWl0VGhlbkFkdmFuY2UoNCkudGhl
bigoKSA9PiB7Ci0gICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoY2h1bmtzRmluaXNoZWRXcml0
aW5nLCBbXSwgJ2F0IHN0ZXAgNCwgemVybyBjaHVua3MgbXVzdCBoYXZlIGZpbmlzaGVkIHdyaXRp
bmcnKTsKLSAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsnd3JpdGUnLCAn
YSddLCAnYXQgc3RlcCA0LCBvbmUgY2h1bmsgbXVzdCBoYXZlIGJlZW4gd3JpdHRlbicpOwotCi0g
ICAgICAgIC8vIFdoZW4gJ2InIHdhcyBlbnF1ZXVlZCBhdCBzdGVwIDMsIHRoZSBxdWV1ZSB3YXMg
YWxzbyBlbXB0eSwgc2luY2UgaW1tZWRpYXRlbHkgYWZ0ZXIgZW5xdWV1aW5nICdhJyBhdAotICAg
ICAgICAvLyBzdGVwIDEsIGl0IHdhcyBkZXF1ZXVlZCBpbiBvcmRlciB0byBmdWxmaWxsIHRoZSBy
ZWFkKCkgY2FsbCB0aGF0IHdhcyBtYWRlIGF0IHN0ZXAgMC4gVGh1cyB0aGUgcXVldWUKLSAgICAg
ICAgLy8gaGFkIHNpemUgMSAodGh1cyBkZXNpcmVkU2l6ZSBvZiAwKS4KLSAgICAgICAgYXNzZXJ0
X2FycmF5X2VxdWFscyhkZXNpcmVkU2l6ZXMsIFsxLCAwXSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnYXQgc3RlcCA0LCB0aGUgZGVzaXJlZFNpemUgYXQgdGhlIGxhc3QgZW5xdWV1ZSAo
c3RlcCAzKSBtdXN0IGhhdmUgYmVlbiAwJyk7Ci0gICAgICAgIGFzc2VydF9lcXVhbHMocnMuY29u
dHJvbGxlci5kZXNpcmVkU2l6ZSwgMCwgJ2F0IHN0ZXAgNCwgdGhlIGN1cnJlbnQgZGVzaXJlZFNp
emUgbXVzdCBiZSAwJyk7Ci0gICAgICB9KSwKLQotICAgICAgc3RlcHMud2FpdFRoZW5BZHZhbmNl
KDYpLnRoZW4oKCkgPT4gewotICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGNodW5rc0Zpbmlz
aGVkV3JpdGluZywgW10sICdhdCBzdGVwIDYsIHplcm8gY2h1bmtzIG11c3QgaGF2ZSBmaW5pc2hl
ZCB3cml0aW5nJyk7Ci0gICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ3dy
aXRlJywgJ2EnXSwgJ2F0IHN0ZXAgNiwgb25lIGNodW5rIG11c3QgaGF2ZSBiZWVuIHdyaXR0ZW4n
KTsKLQotICAgICAgICAvLyBXaGVuICdjJyB3YXMgZW5xdWV1ZWQgYXQgc3RlcCA1LCB0aGUgcXVl
dWUgd2FzIG5vdCBlbXB0eTsgaXQgaGFkICdiJyBpbiBpdCwgc2luY2UgJ2InIHdpbGwgbm90IGJl
IHJlYWQgdW50aWwKLSAgICAgICAgLy8gdGhlIGZpcnN0IHdyaXRlIGNvbXBsZXRlcyBhdCBzdGVw
IDkuIFRodXMsIHRoZSBxdWV1ZSBzaXplIGlzIDIgYWZ0ZXIgZW5xdWV1aW5nICdjJywgZ2l2aW5n
IGEgZGVzaXJlZFNpemUgb2YKLSAgICAgICAgLy8gLTEuCi0gICAgICAgIGFzc2VydF9hcnJheV9l
cXVhbHMoZGVzaXJlZFNpemVzLCBbMSwgMCwgLTFdLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICdhdCBzdGVwIDYsIHRoZSBkZXNpcmVkU2l6ZSBhdCB0aGUgbGFzdCBlbnF1ZXVlIChzdGVw
IDUpIG11c3QgaGF2ZSBiZWVuIC0xJyk7Ci0gICAgICAgIGFzc2VydF9lcXVhbHMocnMuY29udHJv
bGxlci5kZXNpcmVkU2l6ZSwgLTEsICdhdCBzdGVwIDYsIHRoZSBjdXJyZW50IGRlc2lyZWRTaXpl
IG11c3QgYmUgLTEnKTsKLSAgICAgIH0pLAotCi0gICAgICBzdGVwcy53YWl0VGhlbkFkdmFuY2Uo
OCkudGhlbigoKSA9PiB7Ci0gICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoY2h1bmtzRmluaXNo
ZWRXcml0aW5nLCBbXSwgJ2F0IHN0ZXAgOCwgemVybyBjaHVua3MgbXVzdCBoYXZlIGZpbmlzaGVk
IHdyaXRpbmcnKTsKLSAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsnd3Jp
dGUnLCAnYSddLCAnYXQgc3RlcCA4LCBvbmUgY2h1bmsgbXVzdCBoYXZlIGJlZW4gd3JpdHRlbicp
OwotCi0gICAgICAgIC8vIFdoZW4gJ2QnIHdhcyBlbnF1ZXVlZCBhdCBzdGVwIDcsIHRoZSBzaXR1
YXRpb24gaXMgdGhlIHNhbWUgYXMgYmVmb3JlLCBsZWFkaW5nIHRvIGEgcXVldWUgY29udGFpbmlu
ZyAnYicsICdjJywKLSAgICAgICAgLy8gYW5kICdkJy4KLSAgICAgICAgYXNzZXJ0X2FycmF5X2Vx
dWFscyhkZXNpcmVkU2l6ZXMsIFsxLCAwLCAtMSwgLTJdLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICdhdCBzdGVwIDgsIHRoZSBkZXNpcmVkU2l6ZSBhdCB0aGUgbGFzdCBlbnF1ZXVlIChz
dGVwIDcpIG11c3QgaGF2ZSBiZWVuIC0yJyk7Ci0gICAgICAgIGFzc2VydF9lcXVhbHMocnMuY29u
dHJvbGxlci5kZXNpcmVkU2l6ZSwgLTIsICdhdCBzdGVwIDgsIHRoZSBjdXJyZW50IGRlc2lyZWRT
aXplIG11c3QgYmUgLTInKTsKLSAgICAgIH0pLAotCi0gICAgICBzdGVwcy53YWl0VGhlbkFkdmFu
Y2UoMTApLnRoZW4oKCkgPT4gewotICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGNodW5rc0Zp
bmlzaGVkV3JpdGluZywgWydhJ10sICdhdCBzdGVwIDEwLCBvbmUgY2h1bmsgbXVzdCBoYXZlIGZp
bmlzaGVkIHdyaXRpbmcnKTsKLSAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMs
IFsnd3JpdGUnLCAnYScsICd3cml0ZScsICdiJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJ2F0IHN0ZXAgMTAsIHR3byBjaHVua3MgbXVzdCBoYXZlIGJlZW4gd3JpdHRlbicpOwotCi0g
ICAgICAgIGFzc2VydF9lcXVhbHMocnMuY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgLTEsICdhdCBz
dGVwIDEwLCB0aGUgY3VycmVudCBkZXNpcmVkU2l6ZSBtdXN0IGJlIC0xJyk7Ci0gICAgICB9KSwK
LQotICAgICAgcGlwZVByb21pc2UudGhlbigoKSA9PiB7Ci0gICAgICAgIGFzc2VydF9hcnJheV9l
cXVhbHMoZGVzaXJlZFNpemVzLCBbMSwgMCwgLTEsIC0yXSwgJ2JhY2twcmVzc3VyZSBtdXN0IGhh
dmUgYmVlbiBleGVydGVkIGF0IHRoZSBzb3VyY2UnKTsKLSAgICAgICAgYXNzZXJ0X2FycmF5X2Vx
dWFscyhjaHVua3NGaW5pc2hlZFdyaXRpbmcsIFsnYScsICdiJywgJ2MnLCAnZCddLCAnYWxsIGNo
dW5rcyBmaW5pc2hlZCB3cml0aW5nJyk7Ci0KLSAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhy
cy5ldmVudHNXaXRob3V0UHVsbHMsIFtdLCAnbm90aGluZyB1bmV4cGVjdGVkIHNob3VsZCBoYXBw
ZW4gdG8gdGhlIFJlYWRhYmxlU3RyZWFtJyk7Ci0gICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMo
d3MuZXZlbnRzLCBbJ3dyaXRlJywgJ2EnLCAnd3JpdGUnLCAnYicsICd3cml0ZScsICdjJywgJ3dy
aXRlJywgJ2QnLCAnY2xvc2UnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYWxsIGNo
dW5rcyB3ZXJlIHdyaXR0ZW4gKGFuZCB0aGUgV3JpdGFibGVTdHJlYW0gY2xvc2VkKScpOwotICAg
ICAgfSkKLSAgICBdKTsKLSAgfSk7Ci19LCAnUGlwaW5nIHRvIGEgV3JpdGFibGVTdHJlYW0gdGhh
dCBkb2VzIG5vdCBjb25zdW1lIHRoZSB3cml0ZXMgZmFzdCBlbm91Z2ggZXhlcnRzIGJhY2twcmVz
c3VyZSBvbiB0aGUgUmVhZGFibGVTdHJlYW0nKTsKLQotZG9uZSgpOwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9m
bG93LWNvbnRyb2wuc2VydmljZXdvcmtlci5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Zsb3ctY29u
dHJvbC5zZXJ2aWNld29ya2VyLmh0dHBzLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggNzRkYmE5MDhkOGEwNzhhMjZkYzNhOGFjZjNhZjRlM2Q0YzhiOTQzZC4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Zsb3ctY29udHJv
bC5zZXJ2aWNld29ya2VyLmh0dHBzLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDgg
KzAsMCBAQAotCi1QQVNTIFNlcnZpY2Ugd29ya2VyIHRlc3Qgc2V0dXAgCi1GQUlMIFBpcGluZyBm
cm9tIGEgbm9uLWVtcHR5IFJlYWRhYmxlU3RyZWFtIGludG8gYSBXcml0YWJsZVN0cmVhbSB0aGF0
IGRvZXMgbm90IGRlc2lyZSBjaHVua3MgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJl
YW0KLUZBSUwgUGlwaW5nIGZyb20gYSBub24tZW1wdHkgUmVhZGFibGVTdHJlYW0gaW50byBhIFdy
aXRhYmxlU3RyZWFtIHRoYXQgZG9lcyBub3QgZGVzaXJlIGNodW5rcywgYnV0IHRoZW4gZG9lcyBD
YW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBQaXBpbmcgZnJvbSBhbiBl
bXB0eSBSZWFkYWJsZVN0cmVhbSBpbnRvIGEgV3JpdGFibGVTdHJlYW0gdGhhdCBkb2VzIG5vdCBk
ZXNpcmUgY2h1bmtzLCBidXQgdGhlbiB0aGUgcmVhZGFibGUgc3RyZWFtIGJlY29tZXMgbm9uLWVt
cHR5IGFuZCB0aGUgd3JpdGFibGUgc3RyZWFtIHN0YXJ0cyBkZXNpcmluZyBjaHVua3MgQ2FuJ3Qg
ZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgUGlwaW5nIGZyb20gYSBSZWFkYWJs
ZVN0cmVhbSB0byBhIFdyaXRhYmxlU3RyZWFtIHRoYXQgZGVzaXJlcyBtb3JlIGNodW5rcyBiZWZv
cmUgZmluaXNoaW5nIHdpdGggcHJldmlvdXMgb25lcyBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0
YWJsZVN0cmVhbQotRkFJTCBQaXBpbmcgdG8gYSBXcml0YWJsZVN0cmVhbSB0aGF0IGRvZXMgbm90
IGNvbnN1bWUgdGhlIHdyaXRlcyBmYXN0IGVub3VnaCBleGVydHMgYmFja3ByZXNzdXJlIG9uIHRo
ZSBSZWFkYWJsZVN0cmVhbSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMvcGlwaW5nL2Zsb3ctY29udHJvbC5zZXJ2aWNld29ya2VyLmh0dHBzLmh0bWwgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Zs
b3ctY29udHJvbC5zZXJ2aWNld29ya2VyLmh0dHBzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDdmYTAxZDVjMGQzYjBjYjI1YjMxOGY4NzA0ZWJmN2MwZjNmZDkwOTEuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9mbG93LWNvbnRyb2wu
c2VydmljZXdvcmtlci5odHRwcy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAot
PCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08dGl0bGU+Zmxvdy1jb250
cm9sLmpzIHNlcnZpY2Ugd29ya2VyIHdyYXBwZXIgZmlsZTwvdGl0bGU+Ci0KLTxzY3JpcHQgc3Jj
PSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvc2Vy
dmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL3Jlc291cmNlcy90ZXN0LWhlbHBlcnMuc3ViLmpz
Ij48L3NjcmlwdD4KLQotPHNjcmlwdD4KLSd1c2Ugc3RyaWN0JzsKLXNlcnZpY2Vfd29ya2VyX3Rl
c3QoJ2Zsb3ctY29udHJvbC5qcycsICdTZXJ2aWNlIHdvcmtlciB0ZXN0IHNldHVwJyk7Ci08L3Nj
cmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy9waXBpbmcvZmxvdy1jb250cm9sLnNoYXJlZHdvcmtlci1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
cGlwaW5nL2Zsb3ctY29udHJvbC5zaGFyZWR3b3JrZXItZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwOWQ1ZDI1MDlkNzg0N2U4Y2Q2ZmU2NjA2YWE2MGNkZDMzYWE0
NzRlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvZmxv
dy1jb250cm9sLnNoYXJlZHdvcmtlci1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw1
ICswLDAgQEAKLUNPTlNPTEUgTUVTU0FHRTogUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFy
aWFibGU6IFNoYXJlZFdvcmtlcgotCi1IYXJuZXNzIEVycm9yIChGQUlMKSwgbWVzc2FnZSA9IFJl
ZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBTaGFyZWRXb3JrZXIKLQotCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvcGlwaW5nL2Zsb3ctY29udHJvbC5zaGFyZWR3b3JrZXIuaHRtbCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvZmxvdy1jb250cm9s
LnNoYXJlZHdvcmtlci5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYjg0Y2Vm
Yjk5N2M1YTk3OTE1NWIyMGUxZTI2ZjllMWMyZDJmN2EwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvZmxvdy1jb250cm9sLnNoYXJlZHdvcmtlci5odG1s
CisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBj
aGFyc2V0PSJ1dGYtOCI+Ci08dGl0bGU+Zmxvdy1jb250cm9sLmpzIHNoYXJlZCB3b3JrZXIgd3Jh
cHBlciBmaWxlPC90aXRsZT4KLQotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3Mu
anMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQu
anMiPjwvc2NyaXB0PgotCi08c2NyaXB0PgotJ3VzZSBzdHJpY3QnOwotZmV0Y2hfdGVzdHNfZnJv
bV93b3JrZXIobmV3IFNoYXJlZFdvcmtlcignZmxvdy1jb250cm9sLmpzJykpOwotPC9zY3JpcHQ+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMvcGlwaW5nL2dlbmVyYWwuYW55LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvZ2VuZXJhbC5hbnkt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIyMjI5ZDViM2I4ODI4MGU5ZWMwYmZkNzA3N2EwOGU2
MWUzYWU3OTIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2dlbmVyYWwuYW55LWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDI0IEBACitDT05TT0xFIE1FU1NBR0U6IFVuaGFuZGxlZCBQcm9taXNlIFJlamVj
dGlvbjogVHlwZUVycm9yOiBUaGUgV3JpdGFibGVTdHJlYW0ucmVhZHkgZ2V0dGVyIGNhbiBvbmx5
IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mIFdyaXRhYmxlU3RyZWFtCitDT05TT0xFIE1FU1NBR0U6
IFVuaGFuZGxlZCBQcm9taXNlIFJlamVjdGlvbjogdW5kZWZpbmVkCitDT05TT0xFIE1FU1NBR0U6
IFVuaGFuZGxlZCBQcm9taXNlIFJlamVjdGlvbjogdW5kZWZpbmVkCitDT05TT0xFIE1FU1NBR0U6
IFVuaGFuZGxlZCBQcm9taXNlIFJlamVjdGlvbjogVHlwZUVycm9yOiBjYW5jZWwoKSBjYWxsZWQg
b24gYSByZWFkZXIgb3duZWQgYnkgbm8gcmVhZGFibGUgc3RyZWFtCitDT05TT0xFIE1FU1NBR0U6
IFVuaGFuZGxlZCBQcm9taXNlIFJlamVjdGlvbjogdW5kZWZpbmVkCitDT05TT0xFIE1FU1NBR0U6
IFVuaGFuZGxlZCBQcm9taXNlIFJlamVjdGlvbjogdW5kZWZpbmVkCitDT05TT0xFIE1FU1NBR0U6
IFVuaGFuZGxlZCBQcm9taXNlIFJlamVjdGlvbjogdW5kZWZpbmVkCisKK0hhcm5lc3MgRXJyb3Ig
KEZBSUwpLCBtZXNzYWdlID0gVW5oYW5kbGVkIHJlamVjdGlvbjogVGhlIFdyaXRhYmxlU3RyZWFt
LnJlYWR5IGdldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiBXcml0YWJsZVN0
cmVhbQorCitGQUlMIFBpcGluZyBtdXN0IGxvY2sgYm90aCB0aGUgUmVhZGFibGVTdHJlYW0gYW5k
IFdyaXRhYmxlU3RyZWFtIGFzc2VydF9mYWxzZTogc2FuaXR5IGNoZWNrOiB0aGUgV3JpdGFibGVT
dHJlYW0gbXVzdCBub3Qgc3RhcnQgbG9ja2VkIGV4cGVjdGVkIGZhbHNlIGdvdCB1bmRlZmluZWQK
K0ZBSUwgUGlwaW5nIGZpbmlzaGluZyBtdXN0IHVubG9jayBib3RoIHRoZSBSZWFkYWJsZVN0cmVh
bSBhbmQgV3JpdGFibGVTdHJlYW0gYXNzZXJ0X2ZhbHNlOiB0aGUgV3JpdGFibGVTdHJlYW0gbXVz
dCBiZWNvbWUgdW5sb2NrZWQgZXhwZWN0ZWQgZmFsc2UgZ290IHVuZGVmaW5lZAorRkFJTCBwaXBl
VG8gbXVzdCBjaGVjayB0aGUgYnJhbmQgb2YgaXRzIFJlYWRhYmxlU3RyZWFtIHRoaXMgdmFsdWUg
Q2FuIG9ubHkgY2FsbCBSZWFkYWJsZVN0cmVhbS5nZXRSZWFkZXIgb24gaW5zdGFuY2VzIG9mIFJl
YWRhYmxlU3RyZWFtCitQQVNTIHBpcGVUbyBtdXN0IGNoZWNrIHRoZSBicmFuZCBvZiBpdHMgV3Jp
dGFibGVTdHJlYW0gYXJndW1lbnQgCitGQUlMIHBpcGVUbyBtdXN0IGZhaWwgaWYgdGhlIFJlYWRh
YmxlU3RyZWFtIGlzIGxvY2tlZCwgYW5kIG5vdCBsb2NrIHRoZSBXcml0YWJsZVN0cmVhbSBhc3Nl
cnRfZmFsc2U6IHNhbml0eSBjaGVjazogdGhlIFdyaXRhYmxlU3RyZWFtIGRvZXMgbm90IHN0YXJ0
IGxvY2tlZCBleHBlY3RlZCBmYWxzZSBnb3QgdW5kZWZpbmVkCitGQUlMIHBpcGVUbyBtdXN0IGZh
aWwgaWYgdGhlIFdyaXRhYmxlU3RyZWFtIGlzIGxvY2tlZCwgYW5kIG5vdCBsb2NrIHRoZSBSZWFk
YWJsZVN0cmVhbSB3cy5nZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3Jp
dGVyKCknLCAnd3MuZ2V0V3JpdGVyJyBpcyB1bmRlZmluZWQpCitGQUlMIFBpcGluZyBmcm9tIGEg
UmVhZGFibGVTdHJlYW0gZnJvbSB3aGljaCBsb3RzIG9mIGNodW5rcyBhcmUgc3luY2hyb25vdXNs
eSByZWFkYWJsZSBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTog
b2JqZWN0ICJUeXBlRXJyb3I6IHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3
cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkiCitQQVNTIFBpcGlu
ZyBmcm9tIGEgUmVhZGFibGVTdHJlYW0gZm9yIHdoaWNoIGEgY2h1bmsgYmVjb21lcyBhc3luY2hy
b25vdXNseSByZWFkYWJsZSBhZnRlciB0aGUgcGlwZVRvIAorUEFTUyBhbiB1bmRlZmluZWQgcmVq
ZWN0aW9uIGZyb20gcHVsbCBzaG91bGQgY2F1c2UgcGlwZVRvKCkgdG8gcmVqZWN0IHdoZW4gcHJl
dmVudEFib3J0IGlzIHRydWUgCitQQVNTIGFuIHVuZGVmaW5lZCByZWplY3Rpb24gZnJvbSBwdWxs
IHNob3VsZCBjYXVzZSBwaXBlVG8oKSB0byByZWplY3Qgd2hlbiBwcmV2ZW50QWJvcnQgaXMgZmFs
c2UgCitQQVNTIGFuIHVuZGVmaW5lZCByZWplY3Rpb24gZnJvbSB3cml0ZSBzaG91bGQgY2F1c2Ug
cGlwZVRvKCkgdG8gcmVqZWN0IHdoZW4gcHJldmVudENhbmNlbCBpcyB0cnVlIAorUEFTUyBhbiB1
bmRlZmluZWQgcmVqZWN0aW9uIGZyb20gd3JpdGUgc2hvdWxkIGNhdXNlIHBpcGVUbygpIHRvIHJl
amVjdCB3aGVuIHByZXZlbnRDYW5jZWwgaXMgZmFsc2UgCitGQUlMIHBpcGVUbygpIHNob3VsZCBy
ZWplY3QgaWYgYW4gb3B0aW9uIGdldHRlciBncmFicyBhIHdyaXRlciB3cy5nZXRXcml0ZXIgaXMg
bm90IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3JpdGVyKCknLCAnd3MuZ2V0V3JpdGVyJyBpcyB1
bmRlZmluZWQpCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvZ2VuZXJhbC5hbnkuaHRtbCBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvZ2VuZXJhbC5h
bnkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4yMzgyOTEzNTI4ZTY5M2IzYTVkNTZjNjYwYTQ1MDYwOTgwYjU0
OGMzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9nZW5lcmFsLmFueS5odG1sCkBAIC0wLDAgKzEgQEAK
KzwhLS0gVGhpcyBmaWxlIGlzIHJlcXVpcmVkIGZvciBXZWJLaXQgdGVzdCBpbmZyYXN0cnVjdHVy
ZSB0byBydW4gdGhlIHRlbXBsYXRlZCB0ZXN0IC0tPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy9waXBpbmcvZ2VuZXJhbC5hbnkuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2dlbmVyYWwuYW55LmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmJkMTg5NzNiNDEzMTVkMWJkYmYzZjI0MmQ2YzA5ZjgyMWM4NjdmM2YKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMvcGlwaW5nL2dlbmVyYWwuYW55LmpzCkBAIC0wLDAgKzEsMjAwIEBACisvLyBNRVRBOiBn
bG9iYWw9d2luZG93LHdvcmtlcixqc3NoZWxsCisvLyBNRVRBOiBzY3JpcHQ9Li4vcmVzb3VyY2Vz
L3Rlc3QtdXRpbHMuanMKKy8vIE1FVEE6IHNjcmlwdD0uLi9yZXNvdXJjZXMvcmVjb3JkaW5nLXN0
cmVhbXMuanMKKyd1c2Ugc3RyaWN0JzsKKwordGVzdCgoKSA9PiB7CisKKyAgY29uc3QgcnMgPSBu
ZXcgUmVhZGFibGVTdHJlYW0oKTsKKyAgY29uc3Qgd3MgPSBuZXcgV3JpdGFibGVTdHJlYW0oKTsK
KworICBhc3NlcnRfZmFsc2UocnMubG9ja2VkLCAnc2FuaXR5IGNoZWNrOiB0aGUgUmVhZGFibGVT
dHJlYW0gbXVzdCBub3Qgc3RhcnQgbG9ja2VkJyk7CisgIGFzc2VydF9mYWxzZSh3cy5sb2NrZWQs
ICdzYW5pdHkgY2hlY2s6IHRoZSBXcml0YWJsZVN0cmVhbSBtdXN0IG5vdCBzdGFydCBsb2NrZWQn
KTsKKworICBycy5waXBlVG8od3MpOworCisgIGFzc2VydF90cnVlKHJzLmxvY2tlZCwgJ3RoZSBS
ZWFkYWJsZVN0cmVhbSBtdXN0IGJlY29tZSBsb2NrZWQnKTsKKyAgYXNzZXJ0X3RydWUod3MubG9j
a2VkLCAndGhlIFdyaXRhYmxlU3RyZWFtIG11c3QgYmVjb21lIGxvY2tlZCcpOworCit9LCAnUGlw
aW5nIG11c3QgbG9jayBib3RoIHRoZSBSZWFkYWJsZVN0cmVhbSBhbmQgV3JpdGFibGVTdHJlYW0n
KTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0
cmVhbSh7CisgICAgc3RhcnQoY29udHJvbGxlcikgeworICAgICAgY29udHJvbGxlci5jbG9zZSgp
OworICAgIH0KKyAgfSk7CisgIGNvbnN0IHdzID0gbmV3IFdyaXRhYmxlU3RyZWFtKCk7CisKKyAg
cmV0dXJuIHJzLnBpcGVUbyh3cykudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X2ZhbHNlKHJzLmxv
Y2tlZCwgJ3RoZSBSZWFkYWJsZVN0cmVhbSBtdXN0IGJlY29tZSB1bmxvY2tlZCcpOworICAgIGFz
c2VydF9mYWxzZSh3cy5sb2NrZWQsICd0aGUgV3JpdGFibGVTdHJlYW0gbXVzdCBiZWNvbWUgdW5s
b2NrZWQnKTsKKyAgfSk7CisKK30sICdQaXBpbmcgZmluaXNoaW5nIG11c3QgdW5sb2NrIGJvdGgg
dGhlIFJlYWRhYmxlU3RyZWFtIGFuZCBXcml0YWJsZVN0cmVhbScpOworCitwcm9taXNlX3Rlc3Qo
dCA9PiB7CisKKyAgY29uc3QgZmFrZVJTID0gT2JqZWN0LmNyZWF0ZShSZWFkYWJsZVN0cmVhbS5w
cm90b3R5cGUpOworICBjb25zdCB3cyA9IG5ldyBXcml0YWJsZVN0cmVhbSgpOworCisgIHJldHVy
biBtZXRob2RSZWplY3RzKHQsIFJlYWRhYmxlU3RyZWFtLnByb3RvdHlwZSwgJ3BpcGVUbycsIGZh
a2VSUywgW3dzXSk7CisKK30sICdwaXBlVG8gbXVzdCBjaGVjayB0aGUgYnJhbmQgb2YgaXRzIFJl
YWRhYmxlU3RyZWFtIHRoaXMgdmFsdWUnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworCisgIGNv
bnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKCk7CisgIGNvbnN0IGZha2VXUyA9IE9iamVjdC5j
cmVhdGUoV3JpdGFibGVTdHJlYW0ucHJvdG90eXBlKTsKKworICByZXR1cm4gbWV0aG9kUmVqZWN0
cyh0LCBSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUsICdwaXBlVG8nLCBycywgW2Zha2VXU10pOwor
Cit9LCAncGlwZVRvIG11c3QgY2hlY2sgdGhlIGJyYW5kIG9mIGl0cyBXcml0YWJsZVN0cmVhbSBh
cmd1bWVudCcpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisKKyAgY29uc3QgcnMgPSBuZXcgUmVh
ZGFibGVTdHJlYW0oKTsKKyAgY29uc3Qgd3MgPSBuZXcgV3JpdGFibGVTdHJlYW0oKTsKKworICBy
cy5nZXRSZWFkZXIoKTsKKworICBhc3NlcnRfdHJ1ZShycy5sb2NrZWQsICdzYW5pdHkgY2hlY2s6
IHRoZSBSZWFkYWJsZVN0cmVhbSBzdGFydHMgbG9ja2VkJyk7CisgIGFzc2VydF9mYWxzZSh3cy5s
b2NrZWQsICdzYW5pdHkgY2hlY2s6IHRoZSBXcml0YWJsZVN0cmVhbSBkb2VzIG5vdCBzdGFydCBs
b2NrZWQnKTsKKworICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2pzKHQsIFR5cGVFcnJvciwgcnMu
cGlwZVRvKHdzKSkudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X2ZhbHNlKHdzLmxvY2tlZCwgJ3Ro
ZSBXcml0YWJsZVN0cmVhbSBtdXN0IHN0aWxsIGJlIHVubG9ja2VkJyk7CisgIH0pOworCit9LCAn
cGlwZVRvIG11c3QgZmFpbCBpZiB0aGUgUmVhZGFibGVTdHJlYW0gaXMgbG9ja2VkLCBhbmQgbm90
IGxvY2sgdGhlIFdyaXRhYmxlU3RyZWFtJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKworICBj
b25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSgpOworICBjb25zdCB3cyA9IG5ldyBXcml0YWJs
ZVN0cmVhbSgpOworCisgIHdzLmdldFdyaXRlcigpOworCisgIGFzc2VydF9mYWxzZShycy5sb2Nr
ZWQsICdzYW5pdHkgY2hlY2s6IHRoZSBSZWFkYWJsZVN0cmVhbSBkb2VzIG5vdCBzdGFydCBsb2Nr
ZWQnKTsKKyAgYXNzZXJ0X3RydWUod3MubG9ja2VkLCAnc2FuaXR5IGNoZWNrOiB0aGUgV3JpdGFi
bGVTdHJlYW0gc3RhcnRzIGxvY2tlZCcpOworCisgIHJldHVybiBwcm9taXNlX3JlamVjdHNfanMo
dCwgVHlwZUVycm9yLCBycy5waXBlVG8od3MpKS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfZmFs
c2UocnMubG9ja2VkLCAndGhlIFJlYWRhYmxlU3RyZWFtIG11c3Qgc3RpbGwgYmUgdW5sb2NrZWQn
KTsKKyAgfSk7CisKK30sICdwaXBlVG8gbXVzdCBmYWlsIGlmIHRoZSBXcml0YWJsZVN0cmVhbSBp
cyBsb2NrZWQsIGFuZCBub3QgbG9jayB0aGUgUmVhZGFibGVTdHJlYW0nKTsKKworcHJvbWlzZV90
ZXN0KCgpID0+IHsKKworICBjb25zdCBDSFVOS1MgPSAxMDsKKworICBjb25zdCBycyA9IG5ldyBS
ZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgZm9yIChsZXQgaSA9IDA7IGkg
PCBDSFVOS1M7ICsraSkgeworICAgICAgICBjLmVucXVldWUoaSk7CisgICAgICB9CisgICAgICBj
LmNsb3NlKCk7CisgICAgfQorICB9KTsKKworICBjb25zdCB3cml0dGVuID0gW107CisgIGNvbnN0
IHdzID0gbmV3IFdyaXRhYmxlU3RyZWFtKHsKKyAgICB3cml0ZShjaHVuaykgeworICAgICAgd3Jp
dHRlbi5wdXNoKGNodW5rKTsKKyAgICB9LAorICAgIGNsb3NlKCkgeworICAgICAgd3JpdHRlbi5w
dXNoKCdjbG9zZWQnKTsKKyAgICB9CisgIH0sIG5ldyBDb3VudFF1ZXVpbmdTdHJhdGVneSh7IGhp
Z2hXYXRlck1hcms6IENIVU5LUyB9KSk7CisKKyAgcmV0dXJuIHJzLnBpcGVUbyh3cykudGhlbigo
KSA9PiB7CisgICAgY29uc3QgdGFyZ2V0VmFsdWVzID0gW107CisgICAgZm9yIChsZXQgaSA9IDA7
IGkgPCBDSFVOS1M7ICsraSkgeworICAgICAgdGFyZ2V0VmFsdWVzLnB1c2goaSk7CisgICAgfQor
ICAgIHRhcmdldFZhbHVlcy5wdXNoKCdjbG9zZWQnKTsKKworICAgIGFzc2VydF9hcnJheV9lcXVh
bHMod3JpdHRlbiwgdGFyZ2V0VmFsdWVzLCAndGhlIGNvcnJlY3QgdmFsdWVzIG11c3QgYmUgd3Jp
dHRlbicpOworCisgICAgLy8gRW5zdXJlIGJvdGggcmVhZGFibGUgYW5kIHdyaXRhYmxlIGFyZSBj
bG9zZWQgYnkgdGhlIHRpbWUgdGhlIHBpcGUgZmluaXNoZXMuCisgICAgcmV0dXJuIFByb21pc2Uu
YWxsKFsKKyAgICAgIHJzLmdldFJlYWRlcigpLmNsb3NlZCwKKyAgICAgIHdzLmdldFdyaXRlcigp
LmNsb3NlZAorICAgIF0pOworICB9KTsKKworICAvLyBOT1RFOiBubyByZXF1aXJlbWVudCBvbiAq
d2hlbiogdGhlIHBpcGUgZmluaXNoZXM7IHRoYXQgaXMgbGVmdCB0byBpbXBsZW1lbnRhdGlvbnMu
CisKK30sICdQaXBpbmcgZnJvbSBhIFJlYWRhYmxlU3RyZWFtIGZyb20gd2hpY2ggbG90cyBvZiBj
aHVua3MgYXJlIHN5bmNocm9ub3VzbHkgcmVhZGFibGUnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4g
eworCisgIGxldCBjb250cm9sbGVyOworICBjb25zdCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3Ry
ZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjb250cm9sbGVyID0gYzsKKyAgICB9CisgIH0p
OworCisgIGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0oKTsKKworICBjb25zdCBw
aXBlUHJvbWlzZSA9IHJzLnBpcGVUbyh3cykudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X2FycmF5
X2VxdWFscyh3cy5ldmVudHMsIFsnd3JpdGUnLCAnSGVsbG8nLCAnY2xvc2UnXSk7CisgIH0pOwor
CisgIHQuc3RlcF90aW1lb3V0KCgpID0+IHsKKyAgICBjb250cm9sbGVyLmVucXVldWUoJ0hlbGxv
Jyk7CisgICAgdC5zdGVwX3RpbWVvdXQoKCkgPT4gY29udHJvbGxlci5jbG9zZSgpLCAxMCk7Cisg
IH0sIDEwKTsKKworICByZXR1cm4gcGlwZVByb21pc2U7CisKK30sICdQaXBpbmcgZnJvbSBhIFJl
YWRhYmxlU3RyZWFtIGZvciB3aGljaCBhIGNodW5rIGJlY29tZXMgYXN5bmNocm9ub3VzbHkgcmVh
ZGFibGUgYWZ0ZXIgdGhlIHBpcGVUbycpOworCitmb3IgKGNvbnN0IHByZXZlbnRBYm9ydCBvZiBb
dHJ1ZSwgZmFsc2VdKSB7CisgIHByb21pc2VfdGVzdCgoKSA9PiB7CisKKyAgICBjb25zdCBycyA9
IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgICBwdWxsKCkgeworICAgICAgICByZXR1cm4gUHJv
bWlzZS5yZWplY3QodW5kZWZpbmVkKTsKKyAgICAgIH0KKyAgICB9KTsKKworICAgIHJldHVybiBy
cy5waXBlVG8obmV3IFdyaXRhYmxlU3RyZWFtKCksIHsgcHJldmVudEFib3J0IH0pLnRoZW4oCisg
ICAgICAgICgpID0+IGFzc2VydF91bnJlYWNoZWQoJ3BpcGVUbyBwcm9taXNlIHNob3VsZCBiZSBy
ZWplY3RlZCcpLAorICAgICAgICB2YWx1ZSA9PiBhc3NlcnRfZXF1YWxzKHZhbHVlLCB1bmRlZmlu
ZWQsICdyZWplY3Rpb24gdmFsdWUgc2hvdWxkIGJlIHVuZGVmaW5lZCcpKTsKKworICB9LCBgYW4g
dW5kZWZpbmVkIHJlamVjdGlvbiBmcm9tIHB1bGwgc2hvdWxkIGNhdXNlIHBpcGVUbygpIHRvIHJl
amVjdCB3aGVuIHByZXZlbnRBYm9ydCBpcyAke3ByZXZlbnRBYm9ydH1gKTsKK30KKworZm9yIChj
b25zdCBwcmV2ZW50Q2FuY2VsIG9mIFt0cnVlLCBmYWxzZV0pIHsKKyAgcHJvbWlzZV90ZXN0KCgp
ID0+IHsKKworICAgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICAgIHB1bGwo
Y29udHJvbGxlcikgeworICAgICAgICBjb250cm9sbGVyLmVucXVldWUoMCk7CisgICAgICB9Cisg
ICAgfSk7CisKKyAgICBjb25zdCB3cyA9IG5ldyBXcml0YWJsZVN0cmVhbSh7CisgICAgICB3cml0
ZSgpIHsKKyAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KHVuZGVmaW5lZCk7CisgICAgICB9
CisgICAgfSk7CisKKyAgICByZXR1cm4gcnMucGlwZVRvKHdzLCB7IHByZXZlbnRDYW5jZWwgfSku
dGhlbigKKyAgICAgICAgICgpID0+IGFzc2VydF91bnJlYWNoZWQoJ3BpcGVUbyBwcm9taXNlIHNo
b3VsZCBiZSByZWplY3RlZCcpLAorICAgICAgICB2YWx1ZSA9PiBhc3NlcnRfZXF1YWxzKHZhbHVl
LCB1bmRlZmluZWQsICdyZWplY3Rpb24gdmFsdWUgc2hvdWxkIGJlIHVuZGVmaW5lZCcpKTsKKwor
ICB9LCBgYW4gdW5kZWZpbmVkIHJlamVjdGlvbiBmcm9tIHdyaXRlIHNob3VsZCBjYXVzZSBwaXBl
VG8oKSB0byByZWplY3Qgd2hlbiBwcmV2ZW50Q2FuY2VsIGlzICR7cHJldmVudENhbmNlbH1gKTsK
K30KKworcHJvbWlzZV90ZXN0KHQgPT4geworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVh
bSgpOworICBjb25zdCB3cyA9IG5ldyBXcml0YWJsZVN0cmVhbSgpOworICByZXR1cm4gcHJvbWlz
ZV9yZWplY3RzX2pzKHQsIFR5cGVFcnJvciwgcnMucGlwZVRvKHdzLCB7CisgICAgZ2V0IHByZXZl
bnRBYm9ydCgpIHsKKyAgICAgIHdzLmdldFdyaXRlcigpOworICAgIH0KKyAgfSksICdwaXBlVG8g
c2hvdWxkIHJlamVjdCcpOworfSwgJ3BpcGVUbygpIHNob3VsZCByZWplY3QgaWYgYW4gb3B0aW9u
IGdldHRlciBncmFicyBhIHdyaXRlcicpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9nZW5lcmFsLmFueS53b3Jr
ZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL3BpcGluZy9nZW5lcmFsLmFueS53b3JrZXItZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmVlMzkwYmJmNGQ1YmJjZjY0ZjE2YzNkZTcyYjBkODQ5NjgyZWM3NmEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMvcGlwaW5nL2dlbmVyYWwuYW55Lndvcmtlci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwx
NSBAQAorCitGQUlMIFBpcGluZyBtdXN0IGxvY2sgYm90aCB0aGUgUmVhZGFibGVTdHJlYW0gYW5k
IFdyaXRhYmxlU3RyZWFtIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlM
IFBpcGluZyBmaW5pc2hpbmcgbXVzdCB1bmxvY2sgYm90aCB0aGUgUmVhZGFibGVTdHJlYW0gYW5k
IFdyaXRhYmxlU3RyZWFtIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlM
IHBpcGVUbyBtdXN0IGNoZWNrIHRoZSBicmFuZCBvZiBpdHMgUmVhZGFibGVTdHJlYW0gdGhpcyB2
YWx1ZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBwaXBlVG8gbXVz
dCBjaGVjayB0aGUgYnJhbmQgb2YgaXRzIFdyaXRhYmxlU3RyZWFtIGFyZ3VtZW50IENhbid0IGZp
bmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIHBpcGVUbyBtdXN0IGZhaWwgaWYgdGhl
IFJlYWRhYmxlU3RyZWFtIGlzIGxvY2tlZCwgYW5kIG5vdCBsb2NrIHRoZSBXcml0YWJsZVN0cmVh
bSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBwaXBlVG8gbXVzdCBm
YWlsIGlmIHRoZSBXcml0YWJsZVN0cmVhbSBpcyBsb2NrZWQsIGFuZCBub3QgbG9jayB0aGUgUmVh
ZGFibGVTdHJlYW0gQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgUGlw
aW5nIGZyb20gYSBSZWFkYWJsZVN0cmVhbSBmcm9tIHdoaWNoIGxvdHMgb2YgY2h1bmtzIGFyZSBz
eW5jaHJvbm91c2x5IHJlYWRhYmxlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFt
CitGQUlMIFBpcGluZyBmcm9tIGEgUmVhZGFibGVTdHJlYW0gZm9yIHdoaWNoIGEgY2h1bmsgYmVj
b21lcyBhc3luY2hyb25vdXNseSByZWFkYWJsZSBhZnRlciB0aGUgcGlwZVRvIENhbid0IGZpbmQg
dmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIGFuIHVuZGVmaW5lZCByZWplY3Rpb24gZnJv
bSBwdWxsIHNob3VsZCBjYXVzZSBwaXBlVG8oKSB0byByZWplY3Qgd2hlbiBwcmV2ZW50QWJvcnQg
aXMgdHJ1ZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBhbiB1bmRl
ZmluZWQgcmVqZWN0aW9uIGZyb20gcHVsbCBzaG91bGQgY2F1c2UgcGlwZVRvKCkgdG8gcmVqZWN0
IHdoZW4gcHJldmVudEFib3J0IGlzIGZhbHNlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxl
U3RyZWFtCitGQUlMIGFuIHVuZGVmaW5lZCByZWplY3Rpb24gZnJvbSB3cml0ZSBzaG91bGQgY2F1
c2UgcGlwZVRvKCkgdG8gcmVqZWN0IHdoZW4gcHJldmVudENhbmNlbCBpcyB0cnVlIENhbid0IGZp
bmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIGFuIHVuZGVmaW5lZCByZWplY3Rpb24g
ZnJvbSB3cml0ZSBzaG91bGQgY2F1c2UgcGlwZVRvKCkgdG8gcmVqZWN0IHdoZW4gcHJldmVudENh
bmNlbCBpcyBmYWxzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBw
aXBlVG8oKSBzaG91bGQgcmVqZWN0IGlmIGFuIG9wdGlvbiBnZXR0ZXIgZ3JhYnMgYSB3cml0ZXIg
Q2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9nZW5l
cmFsLmFueS53b3JrZXIuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvZ2VuZXJhbC5hbnkud29ya2VyLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMjM4MjkxMzUyOGU2OTNiM2E1ZDU2YzY2MGE0NTA2MDk4MGI1NDhjMwotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy9waXBpbmcvZ2VuZXJhbC5hbnkud29ya2VyLmh0bWwKQEAgLTAsMCArMSBAQAorPCEtLSBUaGlz
IGZpbGUgaXMgcmVxdWlyZWQgZm9yIFdlYktpdCB0ZXN0IGluZnJhc3RydWN0dXJlIHRvIHJ1biB0
aGUgdGVtcGxhdGVkIHRlc3QgLS0+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
L3BpcGluZy9nZW5lcmFsLmRlZGljYXRlZHdvcmtlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2dlbmVyYWwu
ZGVkaWNhdGVkd29ya2VyLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggZTVkZTQ4OWU2MGQ5NzA3NWRjNWQ5YjhiMGIxZDQ2NDE4MTE4MjViZC4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2dlbmVyYWwuZGVkaWNhdGVkd29y
a2VyLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDE0ICswLDAgQEAKLQotRkFJTCBQ
aXBpbmcgbXVzdCBsb2NrIGJvdGggdGhlIFJlYWRhYmxlU3RyZWFtIGFuZCBXcml0YWJsZVN0cmVh
bSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBQaXBpbmcgZmluaXNo
aW5nIG11c3QgdW5sb2NrIGJvdGggdGhlIFJlYWRhYmxlU3RyZWFtIGFuZCBXcml0YWJsZVN0cmVh
bSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBwaXBlVG8gbXVzdCBj
aGVjayB0aGUgYnJhbmQgb2YgaXRzIFJlYWRhYmxlU3RyZWFtIHRoaXMgdmFsdWUgQ2FuJ3QgZmlu
ZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgcGlwZVRvIG11c3QgY2hlY2sgdGhlIGJy
YW5kIG9mIGl0cyBXcml0YWJsZVN0cmVhbSBhcmd1bWVudCBDYW4ndCBmaW5kIHZhcmlhYmxlOiBX
cml0YWJsZVN0cmVhbQotRkFJTCBwaXBlVG8gbXVzdCBmYWlsIGlmIHRoZSBSZWFkYWJsZVN0cmVh
bSBpcyBsb2NrZWQsIGFuZCBub3QgbG9jayB0aGUgV3JpdGFibGVTdHJlYW0gQ2FuJ3QgZmluZCB2
YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgcGlwZVRvIG11c3QgZmFpbCBpZiB0aGUgV3Jp
dGFibGVTdHJlYW0gaXMgbG9ja2VkLCBhbmQgbm90IGxvY2sgdGhlIFJlYWRhYmxlU3RyZWFtIENh
bid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIFBpcGluZyBmcm9tIGEgUmVh
ZGFibGVTdHJlYW0gZnJvbSB3aGljaCBsb3RzIG9mIGNodW5rcyBhcmUgc3luY2hyb25vdXNseSBy
ZWFkYWJsZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBQaXBpbmcg
ZnJvbSBhIFJlYWRhYmxlU3RyZWFtIGZvciB3aGljaCBhIGNodW5rIGJlY29tZXMgYXN5bmNocm9u
b3VzbHkgcmVhZGFibGUgYWZ0ZXIgdGhlIHBpcGVUbyBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0
YWJsZVN0cmVhbQotRkFJTCBhbiB1bmRlZmluZWQgcmVqZWN0aW9uIGZyb20gcHVsbCBzaG91bGQg
Y2F1c2UgcGlwZVRvKCkgdG8gcmVqZWN0IHdoZW4gcHJldmVudEFib3J0IGlzIHRydWUgQ2FuJ3Qg
ZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgYW4gdW5kZWZpbmVkIHJlamVjdGlv
biBmcm9tIHB1bGwgc2hvdWxkIGNhdXNlIHBpcGVUbygpIHRvIHJlamVjdCB3aGVuIHByZXZlbnRB
Ym9ydCBpcyBmYWxzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBh
biB1bmRlZmluZWQgcmVqZWN0aW9uIGZyb20gd3JpdGUgc2hvdWxkIGNhdXNlIHBpcGVUbygpIHRv
IHJlamVjdCB3aGVuIHByZXZlbnRDYW5jZWwgaXMgdHJ1ZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBX
cml0YWJsZVN0cmVhbQotRkFJTCBhbiB1bmRlZmluZWQgcmVqZWN0aW9uIGZyb20gd3JpdGUgc2hv
dWxkIGNhdXNlIHBpcGVUbygpIHRvIHJlamVjdCB3aGVuIHByZXZlbnRDYW5jZWwgaXMgZmFsc2Ug
Q2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9nZW5l
cmFsLmRlZGljYXRlZHdvcmtlci5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9nZW5lcmFsLmRlZGljYXRlZHdvcmtlci5odG1s
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NmU0ODAxMzllODkxNzJjY2NkMmEwOGYx
NDE3ZGQzMzk4ZjUzMjhhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy9waXBpbmcvZ2VuZXJhbC5kZWRpY2F0ZWR3b3JrZXIuaHRtbAorKysgL2Rldi9udWxsCkBAIC0x
LDExICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHRp
dGxlPmdlbmVyYWwuanMgZGVkaWNhdGVkIHdvcmtlciB3cmFwcGVyIGZpbGU8L3RpdGxlPgotCi08
c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0
IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci0KLTxzY3Jp
cHQ+Ci0ndXNlIHN0cmljdCc7Ci1mZXRjaF90ZXN0c19mcm9tX3dvcmtlcihuZXcgV29ya2VyKCdn
ZW5lcmFsLmpzJykpOwotPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2dlbmVyYWwuaHRtbCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcv
Z2VuZXJhbC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNDkzOGEyMTZjMjI0
ZjA1YjEyMGZiZWJkOWJmN2NkYTgzYWRjNWI2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy9waXBpbmcvZ2VuZXJhbC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTEg
KzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08dGl0bGU+
Z2VuZXJhbC5qcyBicm93c2VyIGNvbnRleHQgd3JhcHBlciBmaWxlPC90aXRsZT4KLQotPHNjcmlw
dCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9
Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotCi08c2NyaXB0IHNy
Yz0iLi4vcmVzb3VyY2VzL3Rlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4u
L3Jlc291cmNlcy9yZWNvcmRpbmctc3RyZWFtcy5qcyI+PC9zY3JpcHQ+Ci0KLTxzY3JpcHQgc3Jj
PSJnZW5lcmFsLmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvZ2VuZXJhbC5qcyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvZ2Vu
ZXJhbC5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmJjNmU5YmU1OGJkODY3NDAz
Yjg4NThmNDEyYTFiMGZkY2VmM2JmNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMvcGlwaW5nL2dlbmVyYWwuanMKKysrIC9kZXYvbnVsbApAQCAtMSwxOTUgKzAsMCBA
QAotJ3VzZSBzdHJpY3QnOwotCi1pZiAoc2VsZi5pbXBvcnRTY3JpcHRzKSB7Ci0gIHNlbGYuaW1w
b3J0U2NyaXB0cygnL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcycpOwotICBzZWxmLmltcG9ydFNj
cmlwdHMoJy4uL3Jlc291cmNlcy90ZXN0LXV0aWxzLmpzJyk7Ci0gIHNlbGYuaW1wb3J0U2NyaXB0
cygnLi4vcmVzb3VyY2VzL3JlY29yZGluZy1zdHJlYW1zLmpzJyk7Ci19Ci0KLXRlc3QoKCkgPT4g
ewotCi0gIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKCk7Ci0gIGNvbnN0IHdzID0gbmV3
IFdyaXRhYmxlU3RyZWFtKCk7Ci0KLSAgYXNzZXJ0X2ZhbHNlKHJzLmxvY2tlZCwgJ3Nhbml0eSBj
aGVjazogdGhlIFJlYWRhYmxlU3RyZWFtIG11c3Qgbm90IHN0YXJ0IGxvY2tlZCcpOwotICBhc3Nl
cnRfZmFsc2Uod3MubG9ja2VkLCAnc2FuaXR5IGNoZWNrOiB0aGUgV3JpdGFibGVTdHJlYW0gbXVz
dCBub3Qgc3RhcnQgbG9ja2VkJyk7Ci0KLSAgcnMucGlwZVRvKHdzKTsKLQotICBhc3NlcnRfdHJ1
ZShycy5sb2NrZWQsICd0aGUgUmVhZGFibGVTdHJlYW0gbXVzdCBiZWNvbWUgbG9ja2VkJyk7Ci0g
IGFzc2VydF90cnVlKHdzLmxvY2tlZCwgJ3RoZSBXcml0YWJsZVN0cmVhbSBtdXN0IGJlY29tZSBs
b2NrZWQnKTsKLQotfSwgJ1BpcGluZyBtdXN0IGxvY2sgYm90aCB0aGUgUmVhZGFibGVTdHJlYW0g
YW5kIFdyaXRhYmxlU3RyZWFtJyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgY29uc3Qg
cnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGNvbnRyb2xsZXIpIHsKLSAgICAg
IGNvbnRyb2xsZXIuY2xvc2UoKTsKLSAgICB9Ci0gIH0pOwotICBjb25zdCB3cyA9IG5ldyBXcml0
YWJsZVN0cmVhbSgpOwotCi0gIHJldHVybiBycy5waXBlVG8od3MpLnRoZW4oKCkgPT4gewotICAg
IGFzc2VydF9mYWxzZShycy5sb2NrZWQsICd0aGUgUmVhZGFibGVTdHJlYW0gbXVzdCBiZWNvbWUg
dW5sb2NrZWQnKTsKLSAgICBhc3NlcnRfZmFsc2Uod3MubG9ja2VkLCAndGhlIFdyaXRhYmxlU3Ry
ZWFtIG11c3QgYmVjb21lIHVubG9ja2VkJyk7Ci0gIH0pOwotCi19LCAnUGlwaW5nIGZpbmlzaGlu
ZyBtdXN0IHVubG9jayBib3RoIHRoZSBSZWFkYWJsZVN0cmVhbSBhbmQgV3JpdGFibGVTdHJlYW0n
KTsKLQotcHJvbWlzZV90ZXN0KHQgPT4gewotCi0gIGNvbnN0IGZha2VSUyA9IE9iamVjdC5jcmVh
dGUoUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlKTsKLSAgY29uc3Qgd3MgPSBuZXcgV3JpdGFibGVT
dHJlYW0oKTsKLQotICByZXR1cm4gbWV0aG9kUmVqZWN0cyh0LCBSZWFkYWJsZVN0cmVhbS5wcm90
b3R5cGUsICdwaXBlVG8nLCBmYWtlUlMsIFt3c10pOwotCi19LCAncGlwZVRvIG11c3QgY2hlY2sg
dGhlIGJyYW5kIG9mIGl0cyBSZWFkYWJsZVN0cmVhbSB0aGlzIHZhbHVlJyk7Ci0KLXByb21pc2Vf
dGVzdCh0ID0+IHsKLQotICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSgpOwotICBjb25z
dCBmYWtlV1MgPSBPYmplY3QuY3JlYXRlKFdyaXRhYmxlU3RyZWFtLnByb3RvdHlwZSk7Ci0KLSAg
cmV0dXJuIG1ldGhvZFJlamVjdHModCwgUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLCAncGlwZVRv
JywgcnMsIFtmYWtlV1NdKTsKLQotfSwgJ3BpcGVUbyBtdXN0IGNoZWNrIHRoZSBicmFuZCBvZiBp
dHMgV3JpdGFibGVTdHJlYW0gYXJndW1lbnQnKTsKLQotcHJvbWlzZV90ZXN0KHQgPT4gewotCi0g
IGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKCk7Ci0gIGNvbnN0IHdzID0gbmV3IFdyaXRh
YmxlU3RyZWFtKCk7Ci0KLSAgcnMuZ2V0UmVhZGVyKCk7Ci0KLSAgYXNzZXJ0X3RydWUocnMubG9j
a2VkLCAnc2FuaXR5IGNoZWNrOiB0aGUgUmVhZGFibGVTdHJlYW0gc3RhcnRzIGxvY2tlZCcpOwot
ICBhc3NlcnRfZmFsc2Uod3MubG9ja2VkLCAnc2FuaXR5IGNoZWNrOiB0aGUgV3JpdGFibGVTdHJl
YW0gZG9lcyBub3Qgc3RhcnQgbG9ja2VkJyk7Ci0KLSAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0
LCBuZXcgVHlwZUVycm9yKCksIHJzLnBpcGVUbyh3cykpLnRoZW4oKCkgPT4gewotICAgIGFzc2Vy
dF9mYWxzZSh3cy5sb2NrZWQsICd0aGUgV3JpdGFibGVTdHJlYW0gbXVzdCBzdGlsbCBiZSB1bmxv
Y2tlZCcpOwotICB9KTsKLQotfSwgJ3BpcGVUbyBtdXN0IGZhaWwgaWYgdGhlIFJlYWRhYmxlU3Ry
ZWFtIGlzIGxvY2tlZCwgYW5kIG5vdCBsb2NrIHRoZSBXcml0YWJsZVN0cmVhbScpOwotCi1wcm9t
aXNlX3Rlc3QodCA9PiB7Ci0KLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oKTsKLSAg
Y29uc3Qgd3MgPSBuZXcgV3JpdGFibGVTdHJlYW0oKTsKLQotICB3cy5nZXRXcml0ZXIoKTsKLQot
ICBhc3NlcnRfZmFsc2UocnMubG9ja2VkLCAnc2FuaXR5IGNoZWNrOiB0aGUgUmVhZGFibGVTdHJl
YW0gZG9lcyBub3Qgc3RhcnQgbG9ja2VkJyk7Ci0gIGFzc2VydF90cnVlKHdzLmxvY2tlZCwgJ3Nh
bml0eSBjaGVjazogdGhlIFdyaXRhYmxlU3RyZWFtIHN0YXJ0cyBsb2NrZWQnKTsKLQotICByZXR1
cm4gcHJvbWlzZV9yZWplY3RzKHQsIG5ldyBUeXBlRXJyb3IoKSwgcnMucGlwZVRvKHdzKSkudGhl
bigoKSA9PiB7Ci0gICAgYXNzZXJ0X2ZhbHNlKHJzLmxvY2tlZCwgJ3RoZSBSZWFkYWJsZVN0cmVh
bSBtdXN0IHN0aWxsIGJlIHVubG9ja2VkJyk7Ci0gIH0pOwotCi19LCAncGlwZVRvIG11c3QgZmFp
bCBpZiB0aGUgV3JpdGFibGVTdHJlYW0gaXMgbG9ja2VkLCBhbmQgbm90IGxvY2sgdGhlIFJlYWRh
YmxlU3RyZWFtJyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgY29uc3QgQ0hVTktTID0g
MTA7Ci0KLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsK
LSAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgQ0hVTktTOyArK2kpIHsKLSAgICAgICAgYy5lbnF1
ZXVlKGkpOwotICAgICAgfQotICAgICAgYy5jbG9zZSgpOwotICAgIH0KLSAgfSk7Ci0KLSAgY29u
c3Qgd3JpdHRlbiA9IFtdOwotICBjb25zdCB3cyA9IG5ldyBXcml0YWJsZVN0cmVhbSh7Ci0gICAg
d3JpdGUoY2h1bmspIHsKLSAgICAgIHdyaXR0ZW4ucHVzaChjaHVuayk7Ci0gICAgfSwKLSAgICBj
bG9zZSgpIHsKLSAgICAgIHdyaXR0ZW4ucHVzaCgnY2xvc2VkJyk7Ci0gICAgfQotICB9LCBuZXcg
Q291bnRRdWV1aW5nU3RyYXRlZ3koeyBoaWdoV2F0ZXJNYXJrOiBDSFVOS1MgfSkpOwotCi0gIHJl
dHVybiBycy5waXBlVG8od3MpLnRoZW4oKCkgPT4gewotICAgIGNvbnN0IHRhcmdldFZhbHVlcyA9
IFtdOwotICAgIGZvciAobGV0IGkgPSAwOyBpIDwgQ0hVTktTOyArK2kpIHsKLSAgICAgIHRhcmdl
dFZhbHVlcy5wdXNoKGkpOwotICAgIH0KLSAgICB0YXJnZXRWYWx1ZXMucHVzaCgnY2xvc2VkJyk7
Ci0KLSAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdyaXR0ZW4sIHRhcmdldFZhbHVlcywgJ3RoZSBj
b3JyZWN0IHZhbHVlcyBtdXN0IGJlIHdyaXR0ZW4nKTsKLQotICAgIC8vIEVuc3VyZSBib3RoIHJl
YWRhYmxlIGFuZCB3cml0YWJsZSBhcmUgY2xvc2VkIGJ5IHRoZSB0aW1lIHRoZSBwaXBlIGZpbmlz
aGVzLgotICAgIHJldHVybiBQcm9taXNlLmFsbChbCi0gICAgICBycy5nZXRSZWFkZXIoKS5jbG9z
ZWQsCi0gICAgICB3cy5nZXRXcml0ZXIoKS5jbG9zZWQKLSAgICBdKTsKLSAgfSk7Ci0KLSAgLy8g
Tk9URTogbm8gcmVxdWlyZW1lbnQgb24gKndoZW4qIHRoZSBwaXBlIGZpbmlzaGVzOyB0aGF0IGlz
IGxlZnQgdG8gaW1wbGVtZW50YXRpb25zLgotCi19LCAnUGlwaW5nIGZyb20gYSBSZWFkYWJsZVN0
cmVhbSBmcm9tIHdoaWNoIGxvdHMgb2YgY2h1bmtzIGFyZSBzeW5jaHJvbm91c2x5IHJlYWRhYmxl
Jyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgbGV0IGNvbnRyb2xsZXI7Ci0gIGNvbnN0
IHJzID0gcmVjb3JkaW5nUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGNv
bnRyb2xsZXIgPSBjOwotICAgIH0KLSAgfSk7Ci0KLSAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0
YWJsZVN0cmVhbSgpOwotCi0gIGNvbnN0IHBpcGVQcm9taXNlID0gcnMucGlwZVRvKHdzKS50aGVu
KCgpID0+IHsKLSAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWyd3cml0ZScsICdI
ZWxsbycsICdjbG9zZSddKTsKLSAgfSk7Ci0KLSAgc2V0VGltZW91dCgoKSA9PiB7Ci0gICAgY29u
dHJvbGxlci5lbnF1ZXVlKCdIZWxsbycpOwotICAgIHNldFRpbWVvdXQoKCkgPT4gY29udHJvbGxl
ci5jbG9zZSgpLCAxMCk7Ci0gIH0sIDEwKTsKLQotICByZXR1cm4gcGlwZVByb21pc2U7Ci0KLX0s
ICdQaXBpbmcgZnJvbSBhIFJlYWRhYmxlU3RyZWFtIGZvciB3aGljaCBhIGNodW5rIGJlY29tZXMg
YXN5bmNocm9ub3VzbHkgcmVhZGFibGUgYWZ0ZXIgdGhlIHBpcGVUbycpOwotCi1mb3IgKGNvbnN0
IHByZXZlbnRBYm9ydCBvZiBbdHJ1ZSwgZmFsc2VdKSB7Ci0gIHByb21pc2VfdGVzdCgoKSA9PiB7
Ci0KLSAgICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgICBwdWxsKCkgewot
ICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QodW5kZWZpbmVkKTsKLSAgICAgIH0KLSAgICB9
KTsKLQotICAgIHJldHVybiBycy5waXBlVG8obmV3IFdyaXRhYmxlU3RyZWFtKCksIHsgcHJldmVu
dEFib3J0IH0pLnRoZW4oCi0gICAgICAgICgpID0+IGFzc2VydF91bnJlYWNoZWQoJ3BpcGVUbyBw
cm9taXNlIHNob3VsZCBiZSByZWplY3RlZCcpLAotICAgICAgICB2YWx1ZSA9PiBhc3NlcnRfZXF1
YWxzKHZhbHVlLCB1bmRlZmluZWQsICdyZWplY3Rpb24gdmFsdWUgc2hvdWxkIGJlIHVuZGVmaW5l
ZCcpKTsKLQotICB9LCBgYW4gdW5kZWZpbmVkIHJlamVjdGlvbiBmcm9tIHB1bGwgc2hvdWxkIGNh
dXNlIHBpcGVUbygpIHRvIHJlamVjdCB3aGVuIHByZXZlbnRBYm9ydCBpcyAke3ByZXZlbnRBYm9y
dH1gKTsKLX0KLQotZm9yIChjb25zdCBwcmV2ZW50Q2FuY2VsIG9mIFt0cnVlLCBmYWxzZV0pIHsK
LSAgcHJvbWlzZV90ZXN0KCgpID0+IHsKLQotICAgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3Ry
ZWFtKHsKLSAgICAgIHB1bGwoY29udHJvbGxlcikgewotICAgICAgICBjb250cm9sbGVyLmVucXVl
dWUoMCk7Ci0gICAgICB9Ci0gICAgfSk7Ci0KLSAgICBjb25zdCB3cyA9IG5ldyBXcml0YWJsZVN0
cmVhbSh7Ci0gICAgICB3cml0ZSgpIHsKLSAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KHVu
ZGVmaW5lZCk7Ci0gICAgICB9Ci0gICAgfSk7Ci0KLSAgICByZXR1cm4gcnMucGlwZVRvKHdzLCB7
IHByZXZlbnRDYW5jZWwgfSkudGhlbigKLSAgICAgICAgICgpID0+IGFzc2VydF91bnJlYWNoZWQo
J3BpcGVUbyBwcm9taXNlIHNob3VsZCBiZSByZWplY3RlZCcpLAotICAgICAgICB2YWx1ZSA9PiBh
c3NlcnRfZXF1YWxzKHZhbHVlLCB1bmRlZmluZWQsICdyZWplY3Rpb24gdmFsdWUgc2hvdWxkIGJl
IHVuZGVmaW5lZCcpKTsKLQotICB9LCBgYW4gdW5kZWZpbmVkIHJlamVjdGlvbiBmcm9tIHdyaXRl
IHNob3VsZCBjYXVzZSBwaXBlVG8oKSB0byByZWplY3Qgd2hlbiBwcmV2ZW50Q2FuY2VsIGlzICR7
cHJldmVudENhbmNlbH1gKTsKLX0KLQotZG9uZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9nZW5lcmFsLnNl
cnZpY2V3b3JrZXIuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9nZW5lcmFsLnNlcnZpY2V3b3JrZXIu
aHR0cHMtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZjA0YTg3
MzdmMzMxNDRjOTMzMzUyZmMxYzdlYTkzZTA3NWEzOTE1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvZ2VuZXJhbC5zZXJ2aWNld29ya2VyLmh0dHBzLWV4
cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLQotUEFTUyBTZXJ2aWNl
IHdvcmtlciB0ZXN0IHNldHVwIAotRkFJTCBQaXBpbmcgbXVzdCBsb2NrIGJvdGggdGhlIFJlYWRh
YmxlU3RyZWFtIGFuZCBXcml0YWJsZVN0cmVhbSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJs
ZVN0cmVhbQotRkFJTCBQaXBpbmcgZmluaXNoaW5nIG11c3QgdW5sb2NrIGJvdGggdGhlIFJlYWRh
YmxlU3RyZWFtIGFuZCBXcml0YWJsZVN0cmVhbSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJs
ZVN0cmVhbQotRkFJTCBwaXBlVG8gbXVzdCBjaGVjayB0aGUgYnJhbmQgb2YgaXRzIFJlYWRhYmxl
U3RyZWFtIHRoaXMgdmFsdWUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZB
SUwgcGlwZVRvIG11c3QgY2hlY2sgdGhlIGJyYW5kIG9mIGl0cyBXcml0YWJsZVN0cmVhbSBhcmd1
bWVudCBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBwaXBlVG8gbXVz
dCBmYWlsIGlmIHRoZSBSZWFkYWJsZVN0cmVhbSBpcyBsb2NrZWQsIGFuZCBub3QgbG9jayB0aGUg
V3JpdGFibGVTdHJlYW0gQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwg
cGlwZVRvIG11c3QgZmFpbCBpZiB0aGUgV3JpdGFibGVTdHJlYW0gaXMgbG9ja2VkLCBhbmQgbm90
IGxvY2sgdGhlIFJlYWRhYmxlU3RyZWFtIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3Ry
ZWFtCi1GQUlMIFBpcGluZyBmcm9tIGEgUmVhZGFibGVTdHJlYW0gZnJvbSB3aGljaCBsb3RzIG9m
IGNodW5rcyBhcmUgc3luY2hyb25vdXNseSByZWFkYWJsZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBX
cml0YWJsZVN0cmVhbQotRkFJTCBQaXBpbmcgZnJvbSBhIFJlYWRhYmxlU3RyZWFtIGZvciB3aGlj
aCBhIGNodW5rIGJlY29tZXMgYXN5bmNocm9ub3VzbHkgcmVhZGFibGUgYWZ0ZXIgdGhlIHBpcGVU
byBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBhbiB1bmRlZmluZWQg
cmVqZWN0aW9uIGZyb20gcHVsbCBzaG91bGQgY2F1c2UgcGlwZVRvKCkgdG8gcmVqZWN0IHdoZW4g
cHJldmVudEFib3J0IGlzIHRydWUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0K
LUZBSUwgYW4gdW5kZWZpbmVkIHJlamVjdGlvbiBmcm9tIHB1bGwgc2hvdWxkIGNhdXNlIHBpcGVU
bygpIHRvIHJlamVjdCB3aGVuIHByZXZlbnRBYm9ydCBpcyBmYWxzZSBDYW4ndCBmaW5kIHZhcmlh
YmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBhbiB1bmRlZmluZWQgcmVqZWN0aW9uIGZyb20gd3Jp
dGUgc2hvdWxkIGNhdXNlIHBpcGVUbygpIHRvIHJlamVjdCB3aGVuIHByZXZlbnRDYW5jZWwgaXMg
dHJ1ZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBhbiB1bmRlZmlu
ZWQgcmVqZWN0aW9uIGZyb20gd3JpdGUgc2hvdWxkIGNhdXNlIHBpcGVUbygpIHRvIHJlamVjdCB3
aGVuIHByZXZlbnRDYW5jZWwgaXMgZmFsc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVT
dHJlYW0KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zdHJlYW1zL3BpcGluZy9nZW5lcmFsLnNlcnZpY2V3b3JrZXIuaHR0cHMuaHRtbCBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBp
bmcvZ2VuZXJhbC5zZXJ2aWNld29ya2VyLmh0dHBzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGQxZGU3YzM0MmMwM2Q2ODYxZTUzYmZiNzM1ZWRiNDI0OWZkY2ZjNzIuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9nZW5lcmFsLnNlcnZp
Y2V3b3JrZXIuaHR0cHMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLTwhRE9D
VFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHRpdGxlPmdlbmVyYWwuanMgc2Vy
dmljZSB3b3JrZXIgd3JhcHBlciBmaWxlPC90aXRsZT4KLQotPHNjcmlwdCBzcmM9Ii9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVz
dGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9zZXJ2aWNlLXdvcmtl
cnMvc2VydmljZS13b3JrZXIvcmVzb3VyY2VzL3Rlc3QtaGVscGVycy5zdWIuanMiPjwvc2NyaXB0
PgotCi08c2NyaXB0PgotJ3VzZSBzdHJpY3QnOwotc2VydmljZV93b3JrZXJfdGVzdCgnZ2VuZXJh
bC5qcycsICdTZXJ2aWNlIHdvcmtlciB0ZXN0IHNldHVwJyk7Ci08L3NjcmlwdD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9w
aXBpbmcvZ2VuZXJhbC5zaGFyZWR3b3JrZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9nZW5lcmFsLnNoYXJl
ZHdvcmtlci1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA5ZDVk
MjUwOWQ3ODQ3ZThjZDZmZTY2MDZhYTYwY2RkMzNhYTQ3NGUuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9nZW5lcmFsLnNoYXJlZHdvcmtlci1leHBlY3Rl
ZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLUNPTlNPTEUgTUVTU0FHRTogUmVm
ZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IFNoYXJlZFdvcmtlcgotCi1IYXJuZXNz
IEVycm9yIChGQUlMKSwgbWVzc2FnZSA9IFJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlh
YmxlOiBTaGFyZWRXb3JrZXIKLQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2dlbmVyYWwuc2hhcmVkd29ya2Vy
Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvcGlwaW5nL2dlbmVyYWwuc2hhcmVkd29ya2VyLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGRjZWVhOGFjOGI5ZjAwYzlkMGNjYTM3YmYxMzdiZTQ1M2U3MTQ1MTEuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9nZW5lcmFsLnNoYXJl
ZHdvcmtlci5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotPCFET0NUWVBFIGh0
bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08dGl0bGU+Z2VuZXJhbC5qcyBzaGFyZWQgd29y
a2VyIHdyYXBwZXIgZmlsZTwvdGl0bGU+Ci0KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
cmVwb3J0LmpzIj48L3NjcmlwdD4KLQotPHNjcmlwdD4KLSd1c2Ugc3RyaWN0JzsKLWZldGNoX3Rl
c3RzX2Zyb21fd29ya2VyKG5ldyBTaGFyZWRXb3JrZXIoJ2dlbmVyYWwuanMnKSk7Ci08L3Njcmlw
dD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy9waXBpbmcvbXVsdGlwbGUtcHJvcGFnYXRpb24uYW55LWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBp
bmcvbXVsdGlwbGUtcHJvcGFnYXRpb24uYW55LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMWUy
ZGUyMzcyNmI0MzlmYmE0MDQxMTQ3NDliZmYxNGE4MmRkNWFmCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGlu
Zy9tdWx0aXBsZS1wcm9wYWdhdGlvbi5hbnktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTEgQEAK
KworRkFJTCBQaXBpbmcgZnJvbSBhbiBlcnJvcmVkIHJlYWRhYmxlIHN0cmVhbSB0byBhbiBlcnJv
cmluZyB3cml0YWJsZSBzdHJlYW0gYy5lcnJvciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICdjLmVy
cm9yKGVycm9yMiknLCAnYy5lcnJvcicgaXMgdW5kZWZpbmVkKQorRkFJTCBQaXBpbmcgZnJvbSBh
biBlcnJvcmVkIHJlYWRhYmxlIHN0cmVhbSB0byBhbiBlcnJvcmVkIHdyaXRhYmxlIHN0cmVhbSBw
cm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJUeXBl
RXJyb3I6IGMuZXJyb3IgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnYy5lcnJvcihlcnJvcjIpJywg
J2MuZXJyb3InIGlzIHVuZGVmaW5lZCkiCitGQUlMIFBpcGluZyBmcm9tIGFuIGVycm9yZWQgcmVh
ZGFibGUgc3RyZWFtIHRvIGFuIGVycm9yaW5nIHdyaXRhYmxlIHN0cmVhbTsgcHJldmVudEFib3J0
ID0gdHJ1ZSBjLmVycm9yIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ2MuZXJyb3IoZXJyb3IyKScs
ICdjLmVycm9yJyBpcyB1bmRlZmluZWQpCitGQUlMIFBpcGluZyBmcm9tIGFuIGVycm9yZWQgcmVh
ZGFibGUgc3RyZWFtIHRvIGFuIGVycm9yZWQgd3JpdGFibGUgc3RyZWFtOyBwcmV2ZW50QWJvcnQg
PSB0cnVlIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmpl
Y3QgIlR5cGVFcnJvcjogYy5lcnJvciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICdjLmVycm9yKGVy
cm9yMiknLCAnYy5lcnJvcicgaXMgdW5kZWZpbmVkKSIKK0ZBSUwgUGlwaW5nIGZyb20gYW4gZXJy
b3JlZCByZWFkYWJsZSBzdHJlYW0gdG8gYSBjbG9zaW5nIHdyaXRhYmxlIHN0cmVhbSB3cy5nZXRX
cml0ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3JpdGVyKCknLCAnd3MuZ2V0V3Jp
dGVyJyBpcyB1bmRlZmluZWQpCitGQUlMIFBpcGluZyBmcm9tIGFuIGVycm9yZWQgcmVhZGFibGUg
c3RyZWFtIHRvIGEgY2xvc2VkIHdyaXRhYmxlIHN0cmVhbSB3cy5nZXRXcml0ZXIgaXMgbm90IGEg
ZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3JpdGVyKCknLCAnd3MuZ2V0V3JpdGVyJyBpcyB1bmRlZmlu
ZWQpCitGQUlMIFBpcGluZyBmcm9tIGEgY2xvc2VkIHJlYWRhYmxlIHN0cmVhbSB0byBhbiBlcnJv
cmluZyB3cml0YWJsZSBzdHJlYW0gYy5lcnJvciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICdjLmVy
cm9yKGVycm9yMSknLCAnYy5lcnJvcicgaXMgdW5kZWZpbmVkKQorRkFJTCBQaXBpbmcgZnJvbSBh
IGNsb3NlZCByZWFkYWJsZSBzdHJlYW0gdG8gYW4gZXJyb3JlZCB3cml0YWJsZSBzdHJlYW0gcHJv
bWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiVHlwZUVy
cm9yOiBjLmVycm9yIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ2MuZXJyb3IoZXJyb3IyKScsICdj
LmVycm9yJyBpcyB1bmRlZmluZWQpIgorRkFJTCBQaXBpbmcgZnJvbSBhIGNsb3NlZCByZWFkYWJs
ZSBzdHJlYW0gdG8gYSBjbG9zZWQgd3JpdGFibGUgc3RyZWFtIHdzLmdldFdyaXRlciBpcyBub3Qg
YSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVm
aW5lZCkKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zdHJlYW1zL3BpcGluZy9tdWx0aXBsZS1wcm9wYWdhdGlvbi5hbnkuaHRtbCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcv
bXVsdGlwbGUtcHJvcGFnYXRpb24uYW55Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjM4MjkxMzUyOGU2OTNi
M2E1ZDU2YzY2MGE0NTA2MDk4MGI1NDhjMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvbXVsdGlwbGUt
cHJvcGFnYXRpb24uYW55Lmh0bWwKQEAgLTAsMCArMSBAQAorPCEtLSBUaGlzIGZpbGUgaXMgcmVx
dWlyZWQgZm9yIFdlYktpdCB0ZXN0IGluZnJhc3RydWN0dXJlIHRvIHJ1biB0aGUgdGVtcGxhdGVk
IHRlc3QgLS0+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9tdWx0
aXBsZS1wcm9wYWdhdGlvbi5hbnkuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL211bHRpcGxlLXByb3BhZ2F0aW9uLmFueS5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5jOWE0ODZmM2Y5YWMyZmU1OTUzNTZiYjE0ZGVhNWE2Njc5NmUzYWFmCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL3BpcGluZy9tdWx0aXBsZS1wcm9wYWdhdGlvbi5hbnkuanMKQEAgLTAsMCArMSwy
MjcgQEAKKy8vIE1FVEE6IGdsb2JhbD13aW5kb3csd29ya2VyLGpzc2hlbGwKKy8vIE1FVEE6IHNj
cmlwdD0uLi9yZXNvdXJjZXMvdGVzdC11dGlscy5qcworLy8gTUVUQTogc2NyaXB0PS4uL3Jlc291
cmNlcy9yZWNvcmRpbmctc3RyZWFtcy5qcworJ3VzZSBzdHJpY3QnOworCitjb25zdCBlcnJvcjEg
PSBuZXcgRXJyb3IoJ2Vycm9yMSEnKTsKK2Vycm9yMS5uYW1lID0gJ2Vycm9yMSc7CisKK2NvbnN0
IGVycm9yMiA9IG5ldyBFcnJvcignZXJyb3IyIScpOworZXJyb3IyLm5hbWUgPSAnZXJyb3IyJzsK
KworZnVuY3Rpb24gY3JlYXRlRXJyb3JlZFdyaXRhYmxlU3RyZWFtKHQpIHsKKyAgcmV0dXJuIFBy
b21pc2UucmVzb2x2ZSgpLnRoZW4oKCkgPT4geworICAgIGNvbnN0IHdzID0gcmVjb3JkaW5nV3Jp
dGFibGVTdHJlYW0oeworICAgICAgc3RhcnQoYykgeworICAgICAgICBjLmVycm9yKGVycm9yMik7
CisgICAgICB9CisgICAgfSk7CisKKyAgICBjb25zdCB3cml0ZXIgPSB3cy5nZXRXcml0ZXIoKTsK
KyAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IyLCB3cml0ZXIuY2xv
c2VkLCAndGhlIHdyaXRhYmxlIHN0cmVhbSBtdXN0IGJlIGVycm9yZWQgd2l0aCBlcnJvcjInKQor
ICAgICAgICAudGhlbigoKSA9PiB7CisgICAgICAgICAgd3JpdGVyLnJlbGVhc2VMb2NrKCk7Cisg
ICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFtdKTsKKyAgICAgICAgICBy
ZXR1cm4gd3M7CisgICAgICAgIH0pOworICB9KTsKK30KKworcHJvbWlzZV90ZXN0KHQgPT4gewor
ICBjb25zdCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7Cisg
ICAgICBjLmVycm9yKGVycm9yMSk7CisgICAgfQorICB9KTsKKyAgY29uc3Qgd3MgPSByZWNvcmRp
bmdXcml0YWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgYy5lcnJvcihlcnJvcjIp
OworICAgIH0KKyAgfSk7CisKKyAgLy8gVHJ5aW5nIHRvIGFib3J0IGEgc3RyZWFtIHRoYXQgaXMg
ZXJyb3Jpbmcgd2lsbCBnaXZlIHRoZSB3cml0YWJsZSdzIGVycm9yCisgIHJldHVybiBwcm9taXNl
X3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjIsIHJzLnBpcGVUbyh3cyksICdwaXBlVG8gbXVzdCBy
ZWplY3Qgd2l0aCB0aGUgd3JpdGFibGUgc3RyZWFtXCdzIGVycm9yJykudGhlbigoKSA9PiB7Cisg
ICAgYXNzZXJ0X2FycmF5X2VxdWFscyhycy5ldmVudHMsIFtdKTsKKyAgICBhc3NlcnRfYXJyYXlf
ZXF1YWxzKHdzLmV2ZW50cywgW10pOworCisgICAgcmV0dXJuIFByb21pc2UuYWxsKFsKKyAgICAg
IHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMSwgcnMuZ2V0UmVhZGVyKCkuY2xvc2Vk
LCAndGhlIHJlYWRhYmxlIHN0cmVhbSBtdXN0IGJlIGVycm9yZWQgd2l0aCBlcnJvcjEnKSwKKyAg
ICAgIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMiwgd3MuZ2V0V3JpdGVyKCkuY2xv
c2VkLCAndGhlIHdyaXRhYmxlIHN0cmVhbSBtdXN0IGJlIGVycm9yZWQgd2l0aCBlcnJvcjInKQor
ICAgIF0pOworICB9KTsKKworfSwgJ1BpcGluZyBmcm9tIGFuIGVycm9yZWQgcmVhZGFibGUgc3Ry
ZWFtIHRvIGFuIGVycm9yaW5nIHdyaXRhYmxlIHN0cmVhbScpOworCitwcm9taXNlX3Rlc3QodCA9
PiB7CisgIGNvbnN0IHJzID0gcmVjb3JkaW5nUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMp
IHsKKyAgICAgIGMuZXJyb3IoZXJyb3IxKTsKKyAgICB9CisgIH0pOworCisgIHJldHVybiBjcmVh
dGVFcnJvcmVkV3JpdGFibGVTdHJlYW0odCkKKyAgICAgIC50aGVuKHdzID0+IHByb21pc2VfcmVq
ZWN0c19leGFjdGx5KHQsIGVycm9yMSwgcnMucGlwZVRvKHdzKSwgJ3BpcGVUbyBtdXN0IHJlamVj
dCB3aXRoIHRoZSByZWFkYWJsZSBzdHJlYW1cJ3MgZXJyb3InKSkKKyAgICAgIC50aGVuKCgpID0+
IHsKKyAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhycy5ldmVudHMsIFtdKTsKKworICAgICAg
ICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCBycy5nZXRSZWFkZXIo
KS5jbG9zZWQsICd0aGUgcmVhZGFibGUgc3RyZWFtIG11c3QgYmUgZXJyb3JlZCB3aXRoIGVycm9y
MScpOworICAgICAgfSk7Cit9LCAnUGlwaW5nIGZyb20gYW4gZXJyb3JlZCByZWFkYWJsZSBzdHJl
YW0gdG8gYW4gZXJyb3JlZCB3cml0YWJsZSBzdHJlYW0nKTsKKworcHJvbWlzZV90ZXN0KHQgPT4g
eworICBjb25zdCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7
CisgICAgICBjLmVycm9yKGVycm9yMSk7CisgICAgfQorICB9KTsKKyAgY29uc3Qgd3MgPSByZWNv
cmRpbmdXcml0YWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgYy5lcnJvcihlcnJv
cjIpOworICAgIH0KKyAgfSk7CisKKyAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQs
IGVycm9yMSwgcnMucGlwZVRvKHdzLCB7IHByZXZlbnRBYm9ydDogdHJ1ZSB9KSwKKyAgICAncGlw
ZVRvIG11c3QgcmVqZWN0IHdpdGggdGhlIHJlYWRhYmxlIHN0cmVhbVwncyBlcnJvcicpCisgIC50
aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJzLmV2ZW50cywgW10pOworICAg
IGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbXSk7CisKKyAgICByZXR1cm4gUHJvbWlz
ZS5hbGwoWworICAgICAgcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCBycy5nZXRS
ZWFkZXIoKS5jbG9zZWQsICd0aGUgcmVhZGFibGUgc3RyZWFtIG11c3QgYmUgZXJyb3JlZCB3aXRo
IGVycm9yMScpLAorICAgICAgcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IyLCB3cy5n
ZXRXcml0ZXIoKS5jbG9zZWQsICd0aGUgd3JpdGFibGUgc3RyZWFtIG11c3QgYmUgZXJyb3JlZCB3
aXRoIGVycm9yMicpCisgICAgXSk7CisgIH0pOworCit9LCAnUGlwaW5nIGZyb20gYW4gZXJyb3Jl
ZCByZWFkYWJsZSBzdHJlYW0gdG8gYW4gZXJyb3Jpbmcgd3JpdGFibGUgc3RyZWFtOyBwcmV2ZW50
QWJvcnQgPSB0cnVlJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgY29uc3QgcnMgPSByZWNv
cmRpbmdSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgYy5lcnJvcihlcnJv
cjEpOworICAgIH0KKyAgfSk7CisgIHJldHVybiBjcmVhdGVFcnJvcmVkV3JpdGFibGVTdHJlYW0o
dCkKKyAgLnRoZW4od3MgPT4gcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCBycy5w
aXBlVG8od3MsIHsgcHJldmVudEFib3J0OiB0cnVlIH0pLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAncGlwZVRvIG11c3QgcmVqZWN0IHdpdGggdGhlIHJlYWRhYmxlIHN0
cmVhbVwncyBlcnJvcicpKQorICAudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFs
cyhycy5ldmVudHMsIFtdKTsKKworICAgIHJldHVybiBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0
LCBlcnJvcjEsIHJzLmdldFJlYWRlcigpLmNsb3NlZCwgJ3RoZSByZWFkYWJsZSBzdHJlYW0gbXVz
dCBiZSBlcnJvcmVkIHdpdGggZXJyb3IxJyk7CisgIH0pOworCit9LCAnUGlwaW5nIGZyb20gYW4g
ZXJyb3JlZCByZWFkYWJsZSBzdHJlYW0gdG8gYW4gZXJyb3JlZCB3cml0YWJsZSBzdHJlYW07IHBy
ZXZlbnRBYm9ydCA9IHRydWUnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBjb25zdCBycyA9
IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjLmVycm9y
KGVycm9yMSk7CisgICAgfQorICB9KTsKKyAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0
cmVhbSgpOworICBjb25zdCB3cml0ZXIgPSB3cy5nZXRXcml0ZXIoKTsKKyAgY29uc3QgY2xvc2VQ
cm9taXNlID0gd3JpdGVyLmNsb3NlKCk7CisgIHdyaXRlci5yZWxlYXNlTG9jaygpOworCisgIHJl
dHVybiBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIHJzLnBpcGVUbyh3cyksICdw
aXBlVG8gbXVzdCByZWplY3Qgd2l0aCB0aGUgcmVhZGFibGUgc3RyZWFtXCdzIGVycm9yJykudGhl
bigoKSA9PiB7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhycy5ldmVudHMsIFtdKTsKKyAgICBh
c3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWydhYm9ydCcsIGVycm9yMV0pOworCisgICAg
cmV0dXJuIFByb21pc2UuYWxsKFsKKyAgICAgIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVy
cm9yMSwgcnMuZ2V0UmVhZGVyKCkuY2xvc2VkLCAndGhlIHJlYWRhYmxlIHN0cmVhbSBtdXN0IGJl
IGVycm9yZWQgd2l0aCBlcnJvcjEnKSwKKyAgICAgIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQs
IGVycm9yMSwgd3MuZ2V0V3JpdGVyKCkuY2xvc2VkLAorICAgICAgICAnY2xvc2VkIG11c3QgcmVq
ZWN0IHdpdGggZXJyb3IxJyksCisgICAgICBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJv
cjEsIGNsb3NlUHJvbWlzZSwKKyAgICAgICAgJ2Nsb3NlKCkgbXVzdCByZWplY3Qgd2l0aCBlcnJv
cjEnKQorICAgIF0pOworICB9KTsKKworfSwgJ1BpcGluZyBmcm9tIGFuIGVycm9yZWQgcmVhZGFi
bGUgc3RyZWFtIHRvIGEgY2xvc2luZyB3cml0YWJsZSBzdHJlYW0nKTsKKworcHJvbWlzZV90ZXN0
KHQgPT4geworICBjb25zdCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFy
dChjKSB7CisgICAgICBjLmVycm9yKGVycm9yMSk7CisgICAgfQorICB9KTsKKyAgY29uc3Qgd3Mg
PSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSgpOworICBjb25zdCB3cml0ZXIgPSB3cy5nZXRXcml0
ZXIoKTsKKyAgY29uc3QgY2xvc2VQcm9taXNlID0gd3JpdGVyLmNsb3NlKCk7CisgIHdyaXRlci5y
ZWxlYXNlTG9jaygpOworCisgIHJldHVybiBmbHVzaEFzeW5jRXZlbnRzKCkudGhlbigoKSA9PiB7
CisgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMSwgcnMucGlwZVRv
KHdzKSwgJ3BpcGVUbyBtdXN0IHJlamVjdCB3aXRoIHRoZSByZWFkYWJsZSBzdHJlYW1cJ3MgZXJy
b3InKS50aGVuKCgpID0+IHsKKyAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMocnMuZXZlbnRzLCBb
XSk7CisgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWydjbG9zZSddKTsKKwor
ICAgICAgcmV0dXJuIFByb21pc2UuYWxsKFsKKyAgICAgICAgcHJvbWlzZV9yZWplY3RzX2V4YWN0
bHkodCwgZXJyb3IxLCBycy5nZXRSZWFkZXIoKS5jbG9zZWQsICd0aGUgcmVhZGFibGUgc3RyZWFt
IG11c3QgYmUgZXJyb3JlZCB3aXRoIGVycm9yMScpLAorICAgICAgICB3cy5nZXRXcml0ZXIoKS5j
bG9zZWQsCisgICAgICAgIGNsb3NlUHJvbWlzZQorICAgICAgXSk7CisgICAgfSk7CisgIH0pOwor
Cit9LCAnUGlwaW5nIGZyb20gYW4gZXJyb3JlZCByZWFkYWJsZSBzdHJlYW0gdG8gYSBjbG9zZWQg
d3JpdGFibGUgc3RyZWFtJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgY29uc3QgcnMgPSBy
ZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgYy5jbG9zZSgp
OworICAgIH0KKyAgfSk7CisgIGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0oewor
ICAgIHN0YXJ0KGMpIHsKKyAgICAgIGMuZXJyb3IoZXJyb3IxKTsKKyAgICB9CisgIH0pOworCisg
IHJldHVybiBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIHJzLnBpcGVUbyh3cyks
ICdwaXBlVG8gbXVzdCByZWplY3Qgd2l0aCB0aGUgd3JpdGFibGUgc3RyZWFtXCdzIGVycm9yJyku
dGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhycy5ldmVudHMsIFtdKTsKKyAg
ICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgW10pOworCisgICAgcmV0dXJuIFByb21p
c2UuYWxsKFsKKyAgICAgIHJzLmdldFJlYWRlcigpLmNsb3NlZCwKKyAgICAgIHByb21pc2VfcmVq
ZWN0c19leGFjdGx5KHQsIGVycm9yMSwgd3MuZ2V0V3JpdGVyKCkuY2xvc2VkLCAndGhlIHdyaXRh
YmxlIHN0cmVhbSBtdXN0IGJlIGVycm9yZWQgd2l0aCBlcnJvcjEnKQorICAgIF0pOworICB9KTsK
KworfSwgJ1BpcGluZyBmcm9tIGEgY2xvc2VkIHJlYWRhYmxlIHN0cmVhbSB0byBhbiBlcnJvcmlu
ZyB3cml0YWJsZSBzdHJlYW0nKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBjb25zdCBycyA9
IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjLmNsb3Nl
KCk7CisgICAgfQorICB9KTsKKyAgcmV0dXJuIGNyZWF0ZUVycm9yZWRXcml0YWJsZVN0cmVhbSh0
KQorICAudGhlbih3cyA9PiBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjIsIHJzLnBp
cGVUbyh3cyksICdwaXBlVG8gbXVzdCByZWplY3Qgd2l0aCB0aGUgd3JpdGFibGUgc3RyZWFtXCdz
IGVycm9yJykpCisgIC50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJzLmV2
ZW50cywgW10pOworCisgICAgcmV0dXJuIHJzLmdldFJlYWRlcigpLmNsb3NlZDsKKyAgfSk7CisK
K30sICdQaXBpbmcgZnJvbSBhIGNsb3NlZCByZWFkYWJsZSBzdHJlYW0gdG8gYW4gZXJyb3JlZCB3
cml0YWJsZSBzdHJlYW0nKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgY29uc3QgcnMgPSBy
ZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgYy5jbG9zZSgp
OworICAgIH0KKyAgfSk7CisgIGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0oKTsK
KyAgY29uc3Qgd3JpdGVyID0gd3MuZ2V0V3JpdGVyKCk7CisgIHdyaXRlci5jbG9zZSgpOworICB3
cml0ZXIucmVsZWFzZUxvY2soKTsKKworICByZXR1cm4gcnMucGlwZVRvKHdzKS50aGVuKCgpID0+
IHsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJzLmV2ZW50cywgW10pOworICAgIGFzc2VydF9h
cnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ2Nsb3NlJ10pOworCisgICAgcmV0dXJuIFByb21pc2Uu
YWxsKFsKKyAgICAgIHJzLmdldFJlYWRlcigpLmNsb3NlZCwKKyAgICAgIHdzLmdldFdyaXRlcigp
LmNsb3NlZAorICAgIF0pOworICB9KTsKKworfSwgJ1BpcGluZyBmcm9tIGEgY2xvc2VkIHJlYWRh
YmxlIHN0cmVhbSB0byBhIGNsb3NlZCB3cml0YWJsZSBzdHJlYW0nKTsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcv
bXVsdGlwbGUtcHJvcGFnYXRpb24uYW55Lndvcmtlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL211bHRpcGxl
LXByb3BhZ2F0aW9uLmFueS53b3JrZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI3ODMzZjJl
MzJiNjJhNjE1NTQ2NmZhMDgyNWZlMTQ0YTMxNjJiY2UKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL211
bHRpcGxlLXByb3BhZ2F0aW9uLmFueS53b3JrZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTEg
QEAKKworRkFJTCBQaXBpbmcgZnJvbSBhbiBlcnJvcmVkIHJlYWRhYmxlIHN0cmVhbSB0byBhbiBl
cnJvcmluZyB3cml0YWJsZSBzdHJlYW0gQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJl
YW0KK0ZBSUwgUGlwaW5nIGZyb20gYW4gZXJyb3JlZCByZWFkYWJsZSBzdHJlYW0gdG8gYW4gZXJy
b3JlZCB3cml0YWJsZSBzdHJlYW0gcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdp
dGggdmFsdWU6IG9iamVjdCAiUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IFdy
aXRhYmxlU3RyZWFtIgorRkFJTCBQaXBpbmcgZnJvbSBhbiBlcnJvcmVkIHJlYWRhYmxlIHN0cmVh
bSB0byBhbiBlcnJvcmluZyB3cml0YWJsZSBzdHJlYW07IHByZXZlbnRBYm9ydCA9IHRydWUgQ2Fu
J3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgUGlwaW5nIGZyb20gYW4gZXJy
b3JlZCByZWFkYWJsZSBzdHJlYW0gdG8gYW4gZXJyb3JlZCB3cml0YWJsZSBzdHJlYW07IHByZXZl
bnRBYm9ydCA9IHRydWUgcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFs
dWU6IG9iamVjdCAiUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxl
U3RyZWFtIgorRkFJTCBQaXBpbmcgZnJvbSBhbiBlcnJvcmVkIHJlYWRhYmxlIHN0cmVhbSB0byBh
IGNsb3Npbmcgd3JpdGFibGUgc3RyZWFtIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3Ry
ZWFtCitGQUlMIFBpcGluZyBmcm9tIGFuIGVycm9yZWQgcmVhZGFibGUgc3RyZWFtIHRvIGEgY2xv
c2VkIHdyaXRhYmxlIHN0cmVhbSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQor
RkFJTCBQaXBpbmcgZnJvbSBhIGNsb3NlZCByZWFkYWJsZSBzdHJlYW0gdG8gYW4gZXJyb3Jpbmcg
d3JpdGFibGUgc3RyZWFtIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlM
IFBpcGluZyBmcm9tIGEgY2xvc2VkIHJlYWRhYmxlIHN0cmVhbSB0byBhbiBlcnJvcmVkIHdyaXRh
YmxlIHN0cmVhbSBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTog
b2JqZWN0ICJSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJl
YW0iCitGQUlMIFBpcGluZyBmcm9tIGEgY2xvc2VkIHJlYWRhYmxlIHN0cmVhbSB0byBhIGNsb3Nl
ZCB3cml0YWJsZSBzdHJlYW0gQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
dHJlYW1zL3BpcGluZy9tdWx0aXBsZS1wcm9wYWdhdGlvbi5hbnkud29ya2VyLmh0bWwgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL211
bHRpcGxlLXByb3BhZ2F0aW9uLmFueS53b3JrZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMzgyOTEzNTI4
ZTY5M2IzYTVkNTZjNjYwYTQ1MDYwOTgwYjU0OGMzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9tdWx0
aXBsZS1wcm9wYWdhdGlvbi5hbnkud29ya2VyLmh0bWwKQEAgLTAsMCArMSBAQAorPCEtLSBUaGlz
IGZpbGUgaXMgcmVxdWlyZWQgZm9yIFdlYktpdCB0ZXN0IGluZnJhc3RydWN0dXJlIHRvIHJ1biB0
aGUgdGVtcGxhdGVkIHRlc3QgLS0+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
L3BpcGluZy9tdWx0aXBsZS1wcm9wYWdhdGlvbi5kZWRpY2F0ZWR3b3JrZXItZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3Bp
cGluZy9tdWx0aXBsZS1wcm9wYWdhdGlvbi5kZWRpY2F0ZWR3b3JrZXItZXhwZWN0ZWQudHh0CmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwOTQ4ODUzMzU1YWIyNzAxYzE0MjIzYTE5MTI1
YmRmYzRiOGE4MjlhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9w
aXBpbmcvbXVsdGlwbGUtcHJvcGFnYXRpb24uZGVkaWNhdGVkd29ya2VyLWV4cGVjdGVkLnR4dAor
KysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotCi1GQUlMIFBpcGluZyBmcm9tIGFuIGVycm9y
ZWQgcmVhZGFibGUgc3RyZWFtIHRvIGFuIGVycm9yZWQgd3JpdGFibGUgc3RyZWFtIENhbid0IGZp
bmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIFBpcGluZyBmcm9tIGFuIGVycm9yZWQg
cmVhZGFibGUgc3RyZWFtIHRvIGFuIGVycm9yZWQgd3JpdGFibGUgc3RyZWFtOyBwcmV2ZW50QWJv
cnQgPSB0cnVlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIFBpcGlu
ZyBmcm9tIGFuIGVycm9yZWQgcmVhZGFibGUgc3RyZWFtIHRvIGEgY2xvc2luZyB3cml0YWJsZSBz
dHJlYW0gQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgUGlwaW5nIGZy
b20gYW4gZXJyb3JlZCByZWFkYWJsZSBzdHJlYW0gdG8gYSBjbG9zZWQgd3JpdGFibGUgc3RyZWFt
IENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIFBpcGluZyBmcm9tIGEg
Y2xvc2VkIHJlYWRhYmxlIHN0cmVhbSB0byBhbiBlcnJvcmVkIHdyaXRhYmxlIHN0cmVhbSBDYW4n
dCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBQaXBpbmcgZnJvbSBhIGNsb3Nl
ZCByZWFkYWJsZSBzdHJlYW0gdG8gYSBjbG9zZWQgd3JpdGFibGUgc3RyZWFtIENhbid0IGZpbmQg
dmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvbXVsdGlwbGUtcHJvcGFn
YXRpb24uZGVkaWNhdGVkd29ya2VyLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL211bHRpcGxlLXByb3BhZ2F0aW9uLmRlZGlj
YXRlZHdvcmtlci5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNzFjZTE1ZjVk
MjQ4NjU2Yjk1ODQ5MGZjZDBmN2JmODY3ZTlkYjEwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvbXVsdGlwbGUtcHJvcGFnYXRpb24uZGVkaWNhdGVkd29y
a2VyLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4K
LTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTx0aXRsZT5tdWx0aXBsZS1wcm9wYWdhdGlvbi5qcyBk
ZWRpY2F0ZWQgd29ya2VyIHdyYXBwZXIgZmlsZTwvdGl0bGU+Ci0KLTxzY3JpcHQgc3JjPSIvcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLQotPHNjcmlwdD4KLSd1c2Ugc3RyaWN0
JzsKLWZldGNoX3Rlc3RzX2Zyb21fd29ya2VyKG5ldyBXb3JrZXIoJ211bHRpcGxlLXByb3BhZ2F0
aW9uLmpzJykpOwotPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL211bHRpcGxlLXByb3BhZ2F0aW9u
Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvcGlwaW5nL211bHRpcGxlLXByb3BhZ2F0aW9uLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDkyZTNmZjA0Yzc0ZDFiYTU4NTA5MWRiMjhjZjlkNzExNzNiYjdmZjguLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9tdWx0aXBsZS1wcm9w
YWdhdGlvbi5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotPCFET0NUWVBFIGh0
bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08dGl0bGU+bXVsdGlwbGUtcHJvcGFnYXRpb24u
anMgYnJvd3NlciBjb250ZXh0IHdyYXBwZXIgZmlsZTwvdGl0bGU+Ci0KLTxzY3JpcHQgc3JjPSIv
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLQotPHNjcmlwdCBzcmM9Ii4uL3Jl
c291cmNlcy90ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJj
ZXMvcmVjb3JkaW5nLXN0cmVhbXMuanMiPjwvc2NyaXB0PgotCi08c2NyaXB0IHNyYz0ibXVsdGlw
bGUtcHJvcGFnYXRpb24uanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9tdWx0aXBsZS1wcm9w
YWdhdGlvbi5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy9waXBpbmcvbXVsdGlwbGUtcHJvcGFnYXRpb24uanMKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDRlZGM3YzE4MGUxMTc3NzljN2RlZDFmOTBlZWVkMjM2ZWY4MmMwYWUuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9tdWx0aXBsZS1w
cm9wYWdhdGlvbi5qcworKysgL2Rldi9udWxsCkBAIC0xLDE2NSArMCwwIEBACi0ndXNlIHN0cmlj
dCc7Ci0KLWlmIChzZWxmLmltcG9ydFNjcmlwdHMpIHsKLSAgc2VsZi5pbXBvcnRTY3JpcHRzKCcv
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzJyk7Ci0gIHNlbGYuaW1wb3J0U2NyaXB0cygnLi4vcmVz
b3VyY2VzL3Rlc3QtdXRpbHMuanMnKTsKLSAgc2VsZi5pbXBvcnRTY3JpcHRzKCcuLi9yZXNvdXJj
ZXMvcmVjb3JkaW5nLXN0cmVhbXMuanMnKTsKLX0KLQotY29uc3QgZXJyb3IxID0gbmV3IEVycm9y
KCdlcnJvcjEhJyk7Ci1lcnJvcjEubmFtZSA9ICdlcnJvcjEnOwotCi1jb25zdCBlcnJvcjIgPSBu
ZXcgRXJyb3IoJ2Vycm9yMiEnKTsKLWVycm9yMi5uYW1lID0gJ2Vycm9yMic7Ci0KLXByb21pc2Vf
dGVzdCh0ID0+IHsKLSAgY29uc3QgcnMgPSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSh7Ci0gICAg
c3RhcnQoYykgewotICAgICAgYy5lcnJvcihlcnJvcjEpOwotICAgIH0KLSAgfSk7Ci0gIGNvbnN0
IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGMu
ZXJyb3IoZXJyb3IyKTsKLSAgICB9Ci0gIH0pOwotCi0gIC8vIFRyeWluZyB0byBhYm9ydCBhIHN0
cmVhbSB0aGF0IHdhcyBlcnJvcmVkIHdpbGwgZ2l2ZSB0aGF0IGVycm9yIGJhY2sKLSAgcmV0dXJu
IHByb21pc2VfcmVqZWN0cyh0LCBlcnJvcjIsIHJzLnBpcGVUbyh3cyksICdwaXBlVG8gbXVzdCBy
ZWplY3Qgd2l0aCB0aGUgd3JpdGFibGUgc3RyZWFtXCdzIGVycm9yJykudGhlbigoKSA9PiB7Ci0g
ICAgYXNzZXJ0X2FycmF5X2VxdWFscyhycy5ldmVudHMsIFtdKTsKLSAgICBhc3NlcnRfYXJyYXlf
ZXF1YWxzKHdzLmV2ZW50cywgW10pOwotCi0gICAgcmV0dXJuIFByb21pc2UuYWxsKFsKLSAgICAg
IHByb21pc2VfcmVqZWN0cyh0LCBlcnJvcjEsIHJzLmdldFJlYWRlcigpLmNsb3NlZCwgJ3RoZSBy
ZWFkYWJsZSBzdHJlYW0gbXVzdCBiZSBlcnJvcmVkIHdpdGggZXJyb3IxJyksCi0gICAgICBwcm9t
aXNlX3JlamVjdHModCwgZXJyb3IyLCB3cy5nZXRXcml0ZXIoKS5jbG9zZWQsICd0aGUgd3JpdGFi
bGUgc3RyZWFtIG11c3QgYmUgZXJyb3JlZCB3aXRoIGVycm9yMicpCi0gICAgXSk7Ci0gIH0pOwot
Ci19LCAnUGlwaW5nIGZyb20gYW4gZXJyb3JlZCByZWFkYWJsZSBzdHJlYW0gdG8gYW4gZXJyb3Jl
ZCB3cml0YWJsZSBzdHJlYW0nKTsKLQotcHJvbWlzZV90ZXN0KHQgPT4gewotICBjb25zdCBycyA9
IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0gICAgICBjLmVycm9y
KGVycm9yMSk7Ci0gICAgfQotICB9KTsKLSAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0
cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgYy5lcnJvcihlcnJvcjIpOwotICAgIH0KLSAg
fSk7Ci0KLSAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0LCBlcnJvcjEsIHJzLnBpcGVUbyh3cywg
eyBwcmV2ZW50QWJvcnQ6IHRydWUgfSksCi0gICAgJ3BpcGVUbyBtdXN0IHJlamVjdCB3aXRoIHRo
ZSByZWFkYWJsZSBzdHJlYW1cJ3MgZXJyb3InKQotICAudGhlbigoKSA9PiB7Ci0gICAgYXNzZXJ0
X2FycmF5X2VxdWFscyhycy5ldmVudHMsIFtdKTsKLSAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdz
LmV2ZW50cywgW10pOwotCi0gICAgcmV0dXJuIFByb21pc2UuYWxsKFsKLSAgICAgIHByb21pc2Vf
cmVqZWN0cyh0LCBlcnJvcjEsIHJzLmdldFJlYWRlcigpLmNsb3NlZCwgJ3RoZSByZWFkYWJsZSBz
dHJlYW0gbXVzdCBiZSBlcnJvcmVkIHdpdGggZXJyb3IxJyksCi0gICAgICBwcm9taXNlX3JlamVj
dHModCwgZXJyb3IyLCB3cy5nZXRXcml0ZXIoKS5jbG9zZWQsICd0aGUgd3JpdGFibGUgc3RyZWFt
IG11c3QgYmUgZXJyb3JlZCB3aXRoIGVycm9yMicpCi0gICAgXSk7Ci0gIH0pOwotCi19LCAnUGlw
aW5nIGZyb20gYW4gZXJyb3JlZCByZWFkYWJsZSBzdHJlYW0gdG8gYW4gZXJyb3JlZCB3cml0YWJs
ZSBzdHJlYW07IHByZXZlbnRBYm9ydCA9IHRydWUnKTsKLQotcHJvbWlzZV90ZXN0KHQgPT4gewot
ICBjb25zdCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0g
ICAgICBjLmVycm9yKGVycm9yMSk7Ci0gICAgfQotICB9KTsKLSAgY29uc3Qgd3MgPSByZWNvcmRp
bmdXcml0YWJsZVN0cmVhbSgpOwotICBjb25zdCB3cml0ZXIgPSB3cy5nZXRXcml0ZXIoKTsKLSAg
Y29uc3QgY2xvc2VQcm9taXNlID0gd3JpdGVyLmNsb3NlKCk7Ci0gIHdyaXRlci5yZWxlYXNlTG9j
aygpOwotCi0gIHJldHVybiBwcm9taXNlX3JlamVjdHModCwgZXJyb3IxLCBycy5waXBlVG8od3Mp
LCAncGlwZVRvIG11c3QgcmVqZWN0IHdpdGggdGhlIHJlYWRhYmxlIHN0cmVhbVwncyBlcnJvcicp
LnRoZW4oKCkgPT4gewotICAgIGFzc2VydF9hcnJheV9lcXVhbHMocnMuZXZlbnRzLCBbXSk7Ci0g
ICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsnYWJvcnQnLCBlcnJvcjFdKTsKLQot
ICAgIHJldHVybiBQcm9taXNlLmFsbChbCi0gICAgICBwcm9taXNlX3JlamVjdHModCwgZXJyb3Ix
LCBycy5nZXRSZWFkZXIoKS5jbG9zZWQsICd0aGUgcmVhZGFibGUgc3RyZWFtIG11c3QgYmUgZXJy
b3JlZCB3aXRoIGVycm9yMScpLAotICAgICAgcHJvbWlzZV9yZWplY3RzKHQsIGVycm9yMSwgd3Mu
Z2V0V3JpdGVyKCkuY2xvc2VkLAotICAgICAgICAnY2xvc2VkIG11c3QgcmVqZWN0IHdpdGggZXJy
b3IxJyksCi0gICAgICBwcm9taXNlX3JlamVjdHModCwgZXJyb3IxLCBjbG9zZVByb21pc2UsCi0g
ICAgICAgICdjbG9zZSgpIG11c3QgcmVqZWN0IHdpdGggZXJyb3IxJykKLSAgICBdKTsKLSAgfSk7
Ci0KLX0sICdQaXBpbmcgZnJvbSBhbiBlcnJvcmVkIHJlYWRhYmxlIHN0cmVhbSB0byBhIGNsb3Np
bmcgd3JpdGFibGUgc3RyZWFtJyk7Ci0KLXByb21pc2VfdGVzdCh0ID0+IHsKLSAgY29uc3QgcnMg
PSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgYy5lcnJv
cihlcnJvcjEpOwotICAgIH0KLSAgfSk7Ci0gIGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVT
dHJlYW0oKTsKLSAgY29uc3Qgd3JpdGVyID0gd3MuZ2V0V3JpdGVyKCk7Ci0gIGNvbnN0IGNsb3Nl
UHJvbWlzZSA9IHdyaXRlci5jbG9zZSgpOwotICB3cml0ZXIucmVsZWFzZUxvY2soKTsKLQotICBy
ZXR1cm4gZmx1c2hBc3luY0V2ZW50cygpLnRoZW4oKCkgPT4gewotICAgIHJldHVybiBwcm9taXNl
X3JlamVjdHModCwgZXJyb3IxLCBycy5waXBlVG8od3MpLCAncGlwZVRvIG11c3QgcmVqZWN0IHdp
dGggdGhlIHJlYWRhYmxlIHN0cmVhbVwncyBlcnJvcicpLnRoZW4oKCkgPT4gewotICAgICAgYXNz
ZXJ0X2FycmF5X2VxdWFscyhycy5ldmVudHMsIFtdKTsKLSAgICAgIGFzc2VydF9hcnJheV9lcXVh
bHMod3MuZXZlbnRzLCBbJ2Nsb3NlJ10pOwotCi0gICAgICByZXR1cm4gUHJvbWlzZS5hbGwoWwot
ICAgICAgICBwcm9taXNlX3JlamVjdHModCwgZXJyb3IxLCBycy5nZXRSZWFkZXIoKS5jbG9zZWQs
ICd0aGUgcmVhZGFibGUgc3RyZWFtIG11c3QgYmUgZXJyb3JlZCB3aXRoIGVycm9yMScpLAotICAg
ICAgICB3cy5nZXRXcml0ZXIoKS5jbG9zZWQsCi0gICAgICAgIGNsb3NlUHJvbWlzZQotICAgICAg
XSk7Ci0gICAgfSk7Ci0gIH0pOwotCi19LCAnUGlwaW5nIGZyb20gYW4gZXJyb3JlZCByZWFkYWJs
ZSBzdHJlYW0gdG8gYSBjbG9zZWQgd3JpdGFibGUgc3RyZWFtJyk7Ci0KLXByb21pc2VfdGVzdCh0
ID0+IHsKLSAgY29uc3QgcnMgPSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQo
YykgewotICAgICAgYy5jbG9zZSgpOwotICAgIH0KLSAgfSk7Ci0gIGNvbnN0IHdzID0gcmVjb3Jk
aW5nV3JpdGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGMuZXJyb3IoZXJyb3Ix
KTsKLSAgICB9Ci0gIH0pOwotCi0gIHJldHVybiBwcm9taXNlX3JlamVjdHModCwgZXJyb3IxLCBy
cy5waXBlVG8od3MpLCAncGlwZVRvIG11c3QgcmVqZWN0IHdpdGggdGhlIHdyaXRhYmxlIHN0cmVh
bVwncyBlcnJvcicpLnRoZW4oKCkgPT4gewotICAgIGFzc2VydF9hcnJheV9lcXVhbHMocnMuZXZl
bnRzLCBbXSk7Ci0gICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFtdKTsKLQotICAg
IHJldHVybiBQcm9taXNlLmFsbChbCi0gICAgICBycy5nZXRSZWFkZXIoKS5jbG9zZWQsCi0gICAg
ICBwcm9taXNlX3JlamVjdHModCwgZXJyb3IxLCB3cy5nZXRXcml0ZXIoKS5jbG9zZWQsICd0aGUg
d3JpdGFibGUgc3RyZWFtIG11c3QgYmUgZXJyb3JlZCB3aXRoIGVycm9yMScpCi0gICAgXSk7Ci0g
IH0pOwotCi19LCAnUGlwaW5nIGZyb20gYSBjbG9zZWQgcmVhZGFibGUgc3RyZWFtIHRvIGFuIGVy
cm9yZWQgd3JpdGFibGUgc3RyZWFtJyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0gIGNvbnN0
IHJzID0gcmVjb3JkaW5nUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGMu
Y2xvc2UoKTsKLSAgICB9Ci0gIH0pOwotICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3Ry
ZWFtKCk7Ci0gIGNvbnN0IHdyaXRlciA9IHdzLmdldFdyaXRlcigpOwotICB3cml0ZXIuY2xvc2Uo
KTsKLSAgd3JpdGVyLnJlbGVhc2VMb2NrKCk7Ci0KLSAgcmV0dXJuIHJzLnBpcGVUbyh3cykudGhl
bigoKSA9PiB7Ci0gICAgYXNzZXJ0X2FycmF5X2VxdWFscyhycy5ldmVudHMsIFtdKTsKLSAgICBh
c3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWydjbG9zZSddKTsKLQotICAgIHJldHVybiBQ
cm9taXNlLmFsbChbCi0gICAgICBycy5nZXRSZWFkZXIoKS5jbG9zZWQsCi0gICAgICB3cy5nZXRX
cml0ZXIoKS5jbG9zZWQKLSAgICBdKTsKLSAgfSk7Ci0KLX0sICdQaXBpbmcgZnJvbSBhIGNsb3Nl
ZCByZWFkYWJsZSBzdHJlYW0gdG8gYSBjbG9zZWQgd3JpdGFibGUgc3RyZWFtJyk7Ci0KLWRvbmUo
KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy9waXBpbmcvbXVsdGlwbGUtcHJvcGFnYXRpb24uc2VydmljZXdvcmtlci5odHRw
cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3N0cmVhbXMvcGlwaW5nL211bHRpcGxlLXByb3BhZ2F0aW9uLnNlcnZpY2V3b3JrZXIuaHR0
cHMtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMTA1MDNlZmI2
NzM0NGVlNWRlNDU1MGQ2Y2Y5MDU3Zjc0NTMxNWFhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvbXVsdGlwbGUtcHJvcGFnYXRpb24uc2VydmljZXdvcmtl
ci5odHRwcy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw5ICswLDAgQEAKLQotUEFT
UyBTZXJ2aWNlIHdvcmtlciB0ZXN0IHNldHVwIAotRkFJTCBQaXBpbmcgZnJvbSBhbiBlcnJvcmVk
IHJlYWRhYmxlIHN0cmVhbSB0byBhbiBlcnJvcmVkIHdyaXRhYmxlIHN0cmVhbSBDYW4ndCBmaW5k
IHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBQaXBpbmcgZnJvbSBhbiBlcnJvcmVkIHJl
YWRhYmxlIHN0cmVhbSB0byBhbiBlcnJvcmVkIHdyaXRhYmxlIHN0cmVhbTsgcHJldmVudEFib3J0
ID0gdHJ1ZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBQaXBpbmcg
ZnJvbSBhbiBlcnJvcmVkIHJlYWRhYmxlIHN0cmVhbSB0byBhIGNsb3Npbmcgd3JpdGFibGUgc3Ry
ZWFtIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIFBpcGluZyBmcm9t
IGFuIGVycm9yZWQgcmVhZGFibGUgc3RyZWFtIHRvIGEgY2xvc2VkIHdyaXRhYmxlIHN0cmVhbSBD
YW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBQaXBpbmcgZnJvbSBhIGNs
b3NlZCByZWFkYWJsZSBzdHJlYW0gdG8gYW4gZXJyb3JlZCB3cml0YWJsZSBzdHJlYW0gQ2FuJ3Qg
ZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgUGlwaW5nIGZyb20gYSBjbG9zZWQg
cmVhZGFibGUgc3RyZWFtIHRvIGEgY2xvc2VkIHdyaXRhYmxlIHN0cmVhbSBDYW4ndCBmaW5kIHZh
cmlhYmxlOiBXcml0YWJsZVN0cmVhbQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL211bHRpcGxlLXByb3BhZ2F0
aW9uLnNlcnZpY2V3b3JrZXIuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvbXVsdGlwbGUtcHJvcGFnYXRpb24uc2Vy
dmljZXdvcmtlci5odHRwcy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2M2Y3
YjAwYjQwZmJkODc3Y2VkN2ExNjRiYmJjMTNmZDE0NTcyMmM3Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvbXVsdGlwbGUtcHJvcGFnYXRpb24uc2Vydmlj
ZXdvcmtlci5odHRwcy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotPCFET0NU
WVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08dGl0bGU+bXVsdGlwbGUtcHJvcGFn
YXRpb24uanMgc2VydmljZSB3b3JrZXIgd3JhcHBlciBmaWxlPC90aXRsZT4KLQotPHNjcmlwdCBz
cmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9y
ZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9z
ZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvcmVzb3VyY2VzL3Rlc3QtaGVscGVycy5zdWIu
anMiPjwvc2NyaXB0PgotCi08c2NyaXB0PgotJ3VzZSBzdHJpY3QnOwotc2VydmljZV93b3JrZXJf
dGVzdCgnbXVsdGlwbGUtcHJvcGFnYXRpb24uanMnLCAnU2VydmljZSB3b3JrZXIgdGVzdCBzZXR1
cCcpOwotPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL211bHRpcGxlLXByb3BhZ2F0aW9uLnNoYXJl
ZHdvcmtlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL211bHRpcGxlLXByb3BhZ2F0aW9uLnNoYXJlZHdvcmtl
ci1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA5ZDVkMjUwOWQ3
ODQ3ZThjZDZmZTY2MDZhYTYwY2RkMzNhYTQ3NGUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zdHJlYW1zL3BpcGluZy9tdWx0aXBsZS1wcm9wYWdhdGlvbi5zaGFyZWR3b3JrZXIt
ZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1DT05TT0xFIE1FU1NB
R0U6IFJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBTaGFyZWRXb3JrZXIKLQot
SGFybmVzcyBFcnJvciAoRkFJTCksIG1lc3NhZ2UgPSBSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmlu
ZCB2YXJpYWJsZTogU2hhcmVkV29ya2VyCi0KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9tdWx0aXBsZS1wcm9w
YWdhdGlvbi5zaGFyZWR3b3JrZXIuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvbXVsdGlwbGUtcHJvcGFnYXRpb24uc2hhcmVk
d29ya2VyLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYzOTZjNjQ1Y2Q1NDI2
NTJmNWY4Mzg4NWMyODgxN2YyMWVlMWRmZGUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL3BpcGluZy9tdWx0aXBsZS1wcm9wYWdhdGlvbi5zaGFyZWR3b3JrZXIuaHRt
bAorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEg
Y2hhcnNldD0idXRmLTgiPgotPHRpdGxlPm11bHRpcGxlLXByb3BhZ2F0aW9uLmpzIHNoYXJlZCB3
b3JrZXIgd3JhcHBlciBmaWxlPC90aXRsZT4KLQotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVz
dGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5l
c3NyZXBvcnQuanMiPjwvc2NyaXB0PgotCi08c2NyaXB0PgotJ3VzZSBzdHJpY3QnOwotZmV0Y2hf
dGVzdHNfZnJvbV93b3JrZXIobmV3IFNoYXJlZFdvcmtlcignbXVsdGlwbGUtcHJvcGFnYXRpb24u
anMnKSk7Ci08L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvcGlwZS10aHJvdWdoLmFueS1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvcGlwaW5nL3BpcGUtdGhyb3VnaC5hbnktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI5YjM0
YzFmNmU4NzAxMDhkNTQ4ZDcyODFmZmNlMjU0MmRjZDFlZmMKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5n
L3BpcGUtdGhyb3VnaC5hbnktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOTQgQEAKK0NPTlNPTEUg
TUVTU0FHRTogVW5oYW5kbGVkIFByb21pc2UgUmVqZWN0aW9uOiBUeXBlRXJyb3I6IFRoZSBXcml0
YWJsZVN0cmVhbS5yZWFkeSBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2Yg
V3JpdGFibGVTdHJlYW0KK0NPTlNPTEUgTUVTU0FHRTogVW5oYW5kbGVkIFByb21pc2UgUmVqZWN0
aW9uOiB1bmRlZmluZWQKKworSGFybmVzcyBFcnJvciAoRkFJTCksIG1lc3NhZ2UgPSBVbmhhbmRs
ZWQgcmVqZWN0aW9uCisKK1BBU1MgUGlwaW5nIHRocm91Z2ggYSBkdWNrLXR5cGVkIHBhc3MtdGhy
b3VnaCB0cmFuc2Zvcm0gc3RyZWFtIHNob3VsZCB3b3JrIAorRkFJTCBQaXBpbmcgdGhyb3VnaCBh
IHRyYW5zZm9ybSBlcnJvcmVkIG9uIHRoZSB3cml0YWJsZSBlbmQgZG9lcyBub3QgY2F1c2UgYW4g
dW5oYW5kbGVkIHByb21pc2UgcmVqZWN0aW9uIGMuZXJyb3IgaXMgbm90IGEgZnVuY3Rpb24uIChJ
biAnYy5lcnJvcihuZXcgRXJyb3IoJ3RoaXMgcmVqZWN0aW9uIHNob3VsZCBub3QgYmUgcmVwb3J0
ZWQgYXMgdW5oYW5kbGVkJykpJywgJ2MuZXJyb3InIGlzIHVuZGVmaW5lZCkKK1BBU1MgcGlwZVRo
cm91Z2ggc2hvdWxkIG5vdCBjYWxsIHBpcGVUbyBvbiB0aGlzIAorRkFJTCBwaXBlVGhyb3VnaCBz
aG91bGQgbm90IGNhbGwgcGlwZVRvIG9uIHRoZSBSZWFkYWJsZVN0cmVhbSBwcm90b3R5cGUgYXNz
ZXJ0X2ZhbHNlOiB0aGUgbW9ua2V5LXBhdGNoZWQgcGlwZVRvIHNob3VsZCBub3QgaGF2ZSBiZWVu
IGNhbGxlZCBleHBlY3RlZCBmYWxzZSBnb3QgdHJ1ZQorUEFTUyBwaXBlVGhyb3VnaCBzaG91bGQg
YnJhbmQtY2hlY2sgdGhpcyBhbmQgbm90IGFsbG93ICdudWxsJyAKK0ZBSUwgcGlwZVRocm91Z2gg
c2hvdWxkIGJyYW5kLWNoZWNrIHJlYWRhYmxlIGFuZCBub3QgYWxsb3cgJ251bGwnIGFzc2VydF90
aHJvd3NfanM6IHBpcGVUaHJvdWdoIHNob3VsZCBicmFuZC1jaGVjayByZWFkYWJsZSBmdW5jdGlv
biAiKCkgPT4gcnMucGlwZVRocm91Z2goeworICAgICAgICBnZXQgd3JpdGFibGUoKSB7CisgICAg
ICAgICAgd3JpdGFibGVHZXR0ZXJDYWxsZWQgPSB0cnVlOworICAgICAgICAgIHJldHVybiBuZXcg
V3JpdGFibGVTdHJlYW0oKTsKKyAgICAgICAgfSwKKyAgICAgICAgcmVhZGFibGUKKyAgICAgIH0p
IiBkaWQgbm90IHRocm93CitQQVNTIHBpcGVUaHJvdWdoIHNob3VsZCBicmFuZC1jaGVjayB0aGlz
IGFuZCBub3QgYWxsb3cgJ3VuZGVmaW5lZCcgCitGQUlMIHBpcGVUaHJvdWdoIHNob3VsZCBicmFu
ZC1jaGVjayByZWFkYWJsZSBhbmQgbm90IGFsbG93ICd1bmRlZmluZWQnIGFzc2VydF90aHJvd3Nf
anM6IHBpcGVUaHJvdWdoIHNob3VsZCBicmFuZC1jaGVjayByZWFkYWJsZSBmdW5jdGlvbiAiKCkg
PT4gcnMucGlwZVRocm91Z2goeworICAgICAgICBnZXQgd3JpdGFibGUoKSB7CisgICAgICAgICAg
d3JpdGFibGVHZXR0ZXJDYWxsZWQgPSB0cnVlOworICAgICAgICAgIHJldHVybiBuZXcgV3JpdGFi
bGVTdHJlYW0oKTsKKyAgICAgICAgfSwKKyAgICAgICAgcmVhZGFibGUKKyAgICAgIH0pIiBkaWQg
bm90IHRocm93CitQQVNTIHBpcGVUaHJvdWdoIHNob3VsZCBicmFuZC1jaGVjayB0aGlzIGFuZCBu
b3QgYWxsb3cgJzAnIAorRkFJTCBwaXBlVGhyb3VnaCBzaG91bGQgYnJhbmQtY2hlY2sgcmVhZGFi
bGUgYW5kIG5vdCBhbGxvdyAnMCcgYXNzZXJ0X3Rocm93c19qczogcGlwZVRocm91Z2ggc2hvdWxk
IGJyYW5kLWNoZWNrIHJlYWRhYmxlIGZ1bmN0aW9uICIoKSA9PiBycy5waXBlVGhyb3VnaCh7Cisg
ICAgICAgIGdldCB3cml0YWJsZSgpIHsKKyAgICAgICAgICB3cml0YWJsZUdldHRlckNhbGxlZCA9
IHRydWU7CisgICAgICAgICAgcmV0dXJuIG5ldyBXcml0YWJsZVN0cmVhbSgpOworICAgICAgICB9
LAorICAgICAgICByZWFkYWJsZQorICAgICAgfSkiIGRpZCBub3QgdGhyb3cKK1BBU1MgcGlwZVRo
cm91Z2ggc2hvdWxkIGJyYW5kLWNoZWNrIHRoaXMgYW5kIG5vdCBhbGxvdyAnTmFOJyAKK0ZBSUwg
cGlwZVRocm91Z2ggc2hvdWxkIGJyYW5kLWNoZWNrIHJlYWRhYmxlIGFuZCBub3QgYWxsb3cgJ05h
TicgYXNzZXJ0X3Rocm93c19qczogcGlwZVRocm91Z2ggc2hvdWxkIGJyYW5kLWNoZWNrIHJlYWRh
YmxlIGZ1bmN0aW9uICIoKSA9PiBycy5waXBlVGhyb3VnaCh7CisgICAgICAgIGdldCB3cml0YWJs
ZSgpIHsKKyAgICAgICAgICB3cml0YWJsZUdldHRlckNhbGxlZCA9IHRydWU7CisgICAgICAgICAg
cmV0dXJuIG5ldyBXcml0YWJsZVN0cmVhbSgpOworICAgICAgICB9LAorICAgICAgICByZWFkYWJs
ZQorICAgICAgfSkiIGRpZCBub3QgdGhyb3cKK1BBU1MgcGlwZVRocm91Z2ggc2hvdWxkIGJyYW5k
LWNoZWNrIHRoaXMgYW5kIG5vdCBhbGxvdyAndHJ1ZScgCitGQUlMIHBpcGVUaHJvdWdoIHNob3Vs
ZCBicmFuZC1jaGVjayByZWFkYWJsZSBhbmQgbm90IGFsbG93ICd0cnVlJyBhc3NlcnRfdGhyb3dz
X2pzOiBwaXBlVGhyb3VnaCBzaG91bGQgYnJhbmQtY2hlY2sgcmVhZGFibGUgZnVuY3Rpb24gIigp
ID0+IHJzLnBpcGVUaHJvdWdoKHsKKyAgICAgICAgZ2V0IHdyaXRhYmxlKCkgeworICAgICAgICAg
IHdyaXRhYmxlR2V0dGVyQ2FsbGVkID0gdHJ1ZTsKKyAgICAgICAgICByZXR1cm4gbmV3IFdyaXRh
YmxlU3RyZWFtKCk7CisgICAgICAgIH0sCisgICAgICAgIHJlYWRhYmxlCisgICAgICB9KSIgZGlk
IG5vdCB0aHJvdworUEFTUyBwaXBlVGhyb3VnaCBzaG91bGQgYnJhbmQtY2hlY2sgdGhpcyBhbmQg
bm90IGFsbG93ICdSZWFkYWJsZVN0cmVhbScgCitGQUlMIHBpcGVUaHJvdWdoIHNob3VsZCBicmFu
ZC1jaGVjayByZWFkYWJsZSBhbmQgbm90IGFsbG93ICdSZWFkYWJsZVN0cmVhbScgYXNzZXJ0X3Ro
cm93c19qczogcGlwZVRocm91Z2ggc2hvdWxkIGJyYW5kLWNoZWNrIHJlYWRhYmxlIGZ1bmN0aW9u
ICIoKSA9PiBycy5waXBlVGhyb3VnaCh7CisgICAgICAgIGdldCB3cml0YWJsZSgpIHsKKyAgICAg
ICAgICB3cml0YWJsZUdldHRlckNhbGxlZCA9IHRydWU7CisgICAgICAgICAgcmV0dXJuIG5ldyBX
cml0YWJsZVN0cmVhbSgpOworICAgICAgICB9LAorICAgICAgICByZWFkYWJsZQorICAgICAgfSki
IGRpZCBub3QgdGhyb3cKK1BBU1MgcGlwZVRocm91Z2ggc2hvdWxkIGJyYW5kLWNoZWNrIHRoaXMg
YW5kIG5vdCBhbGxvdyAnW29iamVjdCBSZWFkYWJsZVN0cmVhbV0nIAorRkFJTCBwaXBlVGhyb3Vn
aCBzaG91bGQgYnJhbmQtY2hlY2sgcmVhZGFibGUgYW5kIG5vdCBhbGxvdyAnW29iamVjdCBSZWFk
YWJsZVN0cmVhbV0nIGFzc2VydF90aHJvd3NfanM6IHBpcGVUaHJvdWdoIHNob3VsZCBicmFuZC1j
aGVjayByZWFkYWJsZSBmdW5jdGlvbiAiKCkgPT4gcnMucGlwZVRocm91Z2goeworICAgICAgICBn
ZXQgd3JpdGFibGUoKSB7CisgICAgICAgICAgd3JpdGFibGVHZXR0ZXJDYWxsZWQgPSB0cnVlOwor
ICAgICAgICAgIHJldHVybiBuZXcgV3JpdGFibGVTdHJlYW0oKTsKKyAgICAgICAgfSwKKyAgICAg
ICAgcmVhZGFibGUKKyAgICAgIH0pIiBkaWQgbm90IHRocm93CitQQVNTIHBpcGVUaHJvdWdoIHNo
b3VsZCBicmFuZC1jaGVjayB3cml0YWJsZSBhbmQgbm90IGFsbG93ICdudWxsJyAKK1BBU1MgcGlw
ZVRocm91Z2ggc2hvdWxkIGJyYW5kLWNoZWNrIHdyaXRhYmxlIGFuZCBub3QgYWxsb3cgJ3VuZGVm
aW5lZCcgCitQQVNTIHBpcGVUaHJvdWdoIHNob3VsZCBicmFuZC1jaGVjayB3cml0YWJsZSBhbmQg
bm90IGFsbG93ICcwJyAKK1BBU1MgcGlwZVRocm91Z2ggc2hvdWxkIGJyYW5kLWNoZWNrIHdyaXRh
YmxlIGFuZCBub3QgYWxsb3cgJ05hTicgCitQQVNTIHBpcGVUaHJvdWdoIHNob3VsZCBicmFuZC1j
aGVjayB3cml0YWJsZSBhbmQgbm90IGFsbG93ICd0cnVlJyAKK1BBU1MgcGlwZVRocm91Z2ggc2hv
dWxkIGJyYW5kLWNoZWNrIHdyaXRhYmxlIGFuZCBub3QgYWxsb3cgJ1dyaXRhYmxlU3RyZWFtJyAK
K0ZBSUwgcGlwZVRocm91Z2ggc2hvdWxkIGJyYW5kLWNoZWNrIHdyaXRhYmxlIGFuZCBub3QgYWxs
b3cgJ1tvYmplY3QgV3JpdGFibGVTdHJlYW1dJyBhc3NlcnRfdGhyb3dzX2pzOiBwaXBlVGhyb3Vn
aCBzaG91bGQgYnJhbmQtY2hlY2sgd3JpdGFibGUgZnVuY3Rpb24gIigpID0+IHJzLnBpcGVUaHJv
dWdoKHsKKyAgICAgIGdldCByZWFkYWJsZSgpIHsKKyAgICAgICAgcmVhZGFibGVHZXR0ZXJDYWxs
ZWQgPSB0cnVlOworICAgICAgICByZXR1cm4gbmV3IFJlYWRhYmxlU3RyZWFtKCk7CisgICAgICB9
LAorICAgICAgd3JpdGFibGUKKyAgICB9KSIgZGlkIG5vdCB0aHJvdworUEFTUyBwaXBlVGhyb3Vn
aCBzaG91bGQgcmV0aHJvdyBlcnJvcnMgZnJvbSBhY2Nlc3NpbmcgcmVhZGFibGUgb3Igd3JpdGFi
bGUgCitGQUlMIGludmFsaWQgdmFsdWVzIG9mIHNpZ25hbCBzaG91bGQgdGhyb3c7IHNwZWNpZmlj
YWxseSAnbnVsbCcgYXNzZXJ0X3Rocm93c19qczogcGlwZVRocm91Z2ggc2hvdWxkIHRocm93IGZ1
bmN0aW9uICIoKSA9PiBycy5waXBlVGhyb3VnaCh1bmludGVyZXN0aW5nUmVhZGFibGVXcml0YWJs
ZVBhaXIoKSwgeyBzaWduYWwgfSkiIGRpZCBub3QgdGhyb3cKK0ZBSUwgaW52YWxpZCB2YWx1ZXMg
b2Ygc2lnbmFsIHNob3VsZCB0aHJvdzsgc3BlY2lmaWNhbGx5ICcwJyBhc3NlcnRfdGhyb3dzX2pz
OiBwaXBlVGhyb3VnaCBzaG91bGQgdGhyb3cgZnVuY3Rpb24gIigpID0+IHJzLnBpcGVUaHJvdWdo
KHVuaW50ZXJlc3RpbmdSZWFkYWJsZVdyaXRhYmxlUGFpcigpLCB7IHNpZ25hbCB9KSIgZGlkIG5v
dCB0aHJvdworRkFJTCBpbnZhbGlkIHZhbHVlcyBvZiBzaWduYWwgc2hvdWxkIHRocm93OyBzcGVj
aWZpY2FsbHkgJ05hTicgYXNzZXJ0X3Rocm93c19qczogcGlwZVRocm91Z2ggc2hvdWxkIHRocm93
IGZ1bmN0aW9uICIoKSA9PiBycy5waXBlVGhyb3VnaCh1bmludGVyZXN0aW5nUmVhZGFibGVXcml0
YWJsZVBhaXIoKSwgeyBzaWduYWwgfSkiIGRpZCBub3QgdGhyb3cKK0ZBSUwgaW52YWxpZCB2YWx1
ZXMgb2Ygc2lnbmFsIHNob3VsZCB0aHJvdzsgc3BlY2lmaWNhbGx5ICd0cnVlJyBhc3NlcnRfdGhy
b3dzX2pzOiBwaXBlVGhyb3VnaCBzaG91bGQgdGhyb3cgZnVuY3Rpb24gIigpID0+IHJzLnBpcGVU
aHJvdWdoKHVuaW50ZXJlc3RpbmdSZWFkYWJsZVdyaXRhYmxlUGFpcigpLCB7IHNpZ25hbCB9KSIg
ZGlkIG5vdCB0aHJvdworRkFJTCBpbnZhbGlkIHZhbHVlcyBvZiBzaWduYWwgc2hvdWxkIHRocm93
OyBzcGVjaWZpY2FsbHkgJ0Fib3J0U2lnbmFsJyBhc3NlcnRfdGhyb3dzX2pzOiBwaXBlVGhyb3Vn
aCBzaG91bGQgdGhyb3cgZnVuY3Rpb24gIigpID0+IHJzLnBpcGVUaHJvdWdoKHVuaW50ZXJlc3Rp
bmdSZWFkYWJsZVdyaXRhYmxlUGFpcigpLCB7IHNpZ25hbCB9KSIgZGlkIG5vdCB0aHJvdworRkFJ
TCBpbnZhbGlkIHZhbHVlcyBvZiBzaWduYWwgc2hvdWxkIHRocm93OyBzcGVjaWZpY2FsbHkgJ1tv
YmplY3QgQWJvcnRTaWduYWxdJyBhc3NlcnRfdGhyb3dzX2pzOiBwaXBlVGhyb3VnaCBzaG91bGQg
dGhyb3cgZnVuY3Rpb24gIigpID0+IHJzLnBpcGVUaHJvdWdoKHVuaW50ZXJlc3RpbmdSZWFkYWJs
ZVdyaXRhYmxlUGFpcigpLCB7IHNpZ25hbCB9KSIgZGlkIG5vdCB0aHJvdworUEFTUyBwaXBlVGhy
b3VnaCBzaG91bGQgYWNjZXB0IGEgcmVhbCBBYm9ydFNpZ25hbCAKK1BBU1MgcGlwZVRocm91Z2gg
c2hvdWxkIHRocm93IGlmIHRoaXMgaXMgbG9ja2VkIAorRkFJTCBwaXBlVGhyb3VnaCBzaG91bGQg
dGhyb3cgaWYgd3JpdGFibGUgaXMgbG9ja2VkIHdyaXRhYmxlLmdldFdyaXRlciBpcyBub3QgYSBm
dW5jdGlvbi4gKEluICd3cml0YWJsZS5nZXRXcml0ZXIoKScsICd3cml0YWJsZS5nZXRXcml0ZXIn
IGlzIHVuZGVmaW5lZCkKK1BBU1MgcGlwZVRocm91Z2ggc2hvdWxkIG5vdCBjYXJlIGlmIHJlYWRh
YmxlIGlzIGxvY2tlZCAKK0ZBSUwgcHJldmVudENhbmNlbCBzaG91bGQgd29yayBjb250cm9sbGVy
LmVycm9yIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ2NvbnRyb2xsZXIuZXJyb3IoKScsICdjb250
cm9sbGVyLmVycm9yJyBpcyB1bmRlZmluZWQpCitQQVNTIHByZXZlbnRDbG9zZSBzaG91bGQgd29y
ayAKK1BBU1MgcHJldmVudEFib3J0IHNob3VsZCB3b3JrIAorUEFTUyBwaXBlVGhyb3VnaCgpIHNo
b3VsZCB0aHJvdyBpZiBhbiBvcHRpb24gZ2V0dGVyIGdyYWJzIGEgd3JpdGVyIAorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
cGlwaW5nL3BpcGUtdGhyb3VnaC5hbnkuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvcGlwZS10aHJvdWdoLmFueS5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjIzODI5MTM1MjhlNjkzYjNhNWQ1NmM2NjBhNDUwNjA5ODBiNTQ4YzMKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMvcGlwaW5nL3BpcGUtdGhyb3VnaC5hbnkuaHRtbApAQCAtMCwwICsxIEBACis8IS0t
IFRoaXMgZmlsZSBpcyByZXF1aXJlZCBmb3IgV2ViS2l0IHRlc3QgaW5mcmFzdHJ1Y3R1cmUgdG8g
cnVuIHRoZSB0ZW1wbGF0ZWQgdGVzdCAtLT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMvcGlwaW5nL3BpcGUtdGhyb3VnaC5hbnkuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL3BpcGUtdGhyb3VnaC5hbnkuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMzVkYmI0NTZiM2UyYzZkMDJhMThhOTUwNWJjMjEzOGE1NzQ3NDg4NwotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy9waXBpbmcvcGlwZS10aHJvdWdoLmFueS5qcwpAQCAtMCwwICsxLDI2OCBAQAor
Ly8gTUVUQTogZ2xvYmFsPXdpbmRvdyx3b3JrZXIsanNzaGVsbAorLy8gTUVUQTogc2NyaXB0PS4u
L3Jlc291cmNlcy9ycy11dGlscy5qcworLy8gTUVUQTogc2NyaXB0PS4uL3Jlc291cmNlcy90ZXN0
LXV0aWxzLmpzCisvLyBNRVRBOiBzY3JpcHQ9Li4vcmVzb3VyY2VzL3JlY29yZGluZy1zdHJlYW1z
LmpzCisndXNlIHN0cmljdCc7CisKK2Z1bmN0aW9uIGR1Y2tUeXBlZFBhc3NUaHJvdWdoVHJhbnNm
b3JtKCkgeworICBsZXQgZW5xdWV1ZUluUmVhZGFibGU7CisgIGxldCBjbG9zZVJlYWRhYmxlOwor
CisgIHJldHVybiB7CisgICAgd3JpdGFibGU6IG5ldyBXcml0YWJsZVN0cmVhbSh7CisgICAgICB3
cml0ZShjaHVuaykgeworICAgICAgICBlbnF1ZXVlSW5SZWFkYWJsZShjaHVuayk7CisgICAgICB9
LAorCisgICAgICBjbG9zZSgpIHsKKyAgICAgICAgY2xvc2VSZWFkYWJsZSgpOworICAgICAgfQor
ICAgIH0pLAorCisgICAgcmVhZGFibGU6IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgICBzdGFy
dChjKSB7CisgICAgICAgIGVucXVldWVJblJlYWRhYmxlID0gYy5lbnF1ZXVlLmJpbmQoYyk7Cisg
ICAgICAgIGNsb3NlUmVhZGFibGUgPSBjLmNsb3NlLmJpbmQoYyk7CisgICAgICB9CisgICAgfSkK
KyAgfTsKK30KKworZnVuY3Rpb24gdW5pbnRlcmVzdGluZ1JlYWRhYmxlV3JpdGFibGVQYWlyKCkg
eworICByZXR1cm4geyB3cml0YWJsZTogbmV3IFdyaXRhYmxlU3RyZWFtKCksIHJlYWRhYmxlOiBu
ZXcgUmVhZGFibGVTdHJlYW0oKSB9OworfQorCitwcm9taXNlX3Rlc3QoKCkgPT4geworICBjb25z
dCByZWFkYWJsZUVuZCA9IHNlcXVlbnRpYWxSZWFkYWJsZVN0cmVhbSg1KS5waXBlVGhyb3VnaChk
dWNrVHlwZWRQYXNzVGhyb3VnaFRyYW5zZm9ybSgpKTsKKworICByZXR1cm4gcmVhZGFibGVTdHJl
YW1Ub0FycmF5KHJlYWRhYmxlRW5kKS50aGVuKGNodW5rcyA9PgorICAgIGFzc2VydF9hcnJheV9l
cXVhbHMoY2h1bmtzLCBbMSwgMiwgMywgNCwgNV0pLCAnY2h1bmtzIHNob3VsZCBtYXRjaCcpOwor
fSwgJ1BpcGluZyB0aHJvdWdoIGEgZHVjay10eXBlZCBwYXNzLXRocm91Z2ggdHJhbnNmb3JtIHN0
cmVhbSBzaG91bGQgd29yaycpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworICBjb25zdCB0cmFu
c2Zvcm0gPSB7CisgICAgd3JpdGFibGU6IG5ldyBXcml0YWJsZVN0cmVhbSh7CisgICAgICBzdGFy
dChjKSB7CisgICAgICAgIGMuZXJyb3IobmV3IEVycm9yKCd0aGlzIHJlamVjdGlvbiBzaG91bGQg
bm90IGJlIHJlcG9ydGVkIGFzIHVuaGFuZGxlZCcpKTsKKyAgICAgIH0KKyAgICB9KSwKKyAgICBy
ZWFkYWJsZTogbmV3IFJlYWRhYmxlU3RyZWFtKCkKKyAgfTsKKworICBzZXF1ZW50aWFsUmVhZGFi
bGVTdHJlYW0oNSkucGlwZVRocm91Z2godHJhbnNmb3JtKTsKKworICAvLyBUaGUgdGVzdCBoYXJu
ZXNzIHNob3VsZCBjb21wbGFpbiBhYm91dCB1bmhhbmRsZWQgcmVqZWN0aW9ucyBieSB0aGVuLgor
ICByZXR1cm4gZmx1c2hBc3luY0V2ZW50cygpOworCit9LCAnUGlwaW5nIHRocm91Z2ggYSB0cmFu
c2Zvcm0gZXJyb3JlZCBvbiB0aGUgd3JpdGFibGUgZW5kIGRvZXMgbm90IGNhdXNlIGFuIHVuaGFu
ZGxlZCBwcm9taXNlIHJlamVjdGlvbicpOworCit0ZXN0KCgpID0+IHsKKyAgbGV0IGNhbGxlZFBp
cGVUbyA9IGZhbHNlOworICBjbGFzcyBCYWRSZWFkYWJsZVN0cmVhbSBleHRlbmRzIFJlYWRhYmxl
U3RyZWFtIHsKKyAgICBwaXBlVG8oKSB7CisgICAgICBjYWxsZWRQaXBlVG8gPSB0cnVlOworICAg
IH0KKyAgfQorCisgIGNvbnN0IGJycyA9IG5ldyBCYWRSZWFkYWJsZVN0cmVhbSh7CisgICAgc3Rh
cnQoY29udHJvbGxlcikgeworICAgICAgY29udHJvbGxlci5jbG9zZSgpOworICAgIH0KKyAgfSk7
CisgIGNvbnN0IHJlYWRhYmxlID0gbmV3IFJlYWRhYmxlU3RyZWFtKCk7CisgIGNvbnN0IHdyaXRh
YmxlID0gbmV3IFdyaXRhYmxlU3RyZWFtKCk7CisgIGNvbnN0IHJlc3VsdCA9IGJycy5waXBlVGhy
b3VnaCh7IHJlYWRhYmxlLCB3cml0YWJsZSB9KTsKKworICBhc3NlcnRfZmFsc2UoY2FsbGVkUGlw
ZVRvLCAndGhlIG92ZXJyaWRkZW4gcGlwZVRvIHNob3VsZCBub3QgaGF2ZSBiZWVuIGNhbGxlZCcp
OworICBhc3NlcnRfZXF1YWxzKHJlc3VsdCwgcmVhZGFibGUsICdyZXR1cm4gdmFsdWUgc2hvdWxk
IGJlIHRoZSBwYXNzZWQgcmVhZGFibGUgcHJvcGVydHknKTsKK30sICdwaXBlVGhyb3VnaCBzaG91
bGQgbm90IGNhbGwgcGlwZVRvIG9uIHRoaXMnKTsKKwordGVzdCh0ID0+IHsKKyAgbGV0IGNhbGxl
ZEZha2VQaXBlVG8gPSBmYWxzZTsKKyAgY29uc3QgcmVhbFBpcGVUbyA9IFJlYWRhYmxlU3RyZWFt
LnByb3RvdHlwZS5waXBlVG87CisgIHQuYWRkX2NsZWFudXAoKCkgPT4geworICAgIFJlYWRhYmxl
U3RyZWFtLnByb3RvdHlwZS5waXBlVG8gPSByZWFsUGlwZVRvOworICB9KTsKKyAgUmVhZGFibGVT
dHJlYW0ucHJvdG90eXBlLnBpcGVUbyA9ICgpID0+IHsKKyAgICBjYWxsZWRGYWtlUGlwZVRvID0g
dHJ1ZTsKKyAgfTsKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oKTsKKyAgY29uc3Qg
cmVhZGFibGUgPSBuZXcgUmVhZGFibGVTdHJlYW0oKTsKKyAgY29uc3Qgd3JpdGFibGUgPSBuZXcg
V3JpdGFibGVTdHJlYW0oKTsKKyAgY29uc3QgcmVzdWx0ID0gcnMucGlwZVRocm91Z2goeyByZWFk
YWJsZSwgd3JpdGFibGUgfSk7CisKKyAgYXNzZXJ0X2ZhbHNlKGNhbGxlZEZha2VQaXBlVG8sICd0
aGUgbW9ua2V5LXBhdGNoZWQgcGlwZVRvIHNob3VsZCBub3QgaGF2ZSBiZWVuIGNhbGxlZCcpOwor
ICBhc3NlcnRfZXF1YWxzKHJlc3VsdCwgcmVhZGFibGUsICdyZXR1cm4gdmFsdWUgc2hvdWxkIGJl
IHRoZSBwYXNzZWQgcmVhZGFibGUgcHJvcGVydHknKTsKKworfSwgJ3BpcGVUaHJvdWdoIHNob3Vs
ZCBub3QgY2FsbCBwaXBlVG8gb24gdGhlIFJlYWRhYmxlU3RyZWFtIHByb3RvdHlwZScpOworCitj
b25zdCBiYWRSZWFkYWJsZXMgPSBbbnVsbCwgdW5kZWZpbmVkLCAwLCBOYU4sIHRydWUsICdSZWFk
YWJsZVN0cmVhbScsIE9iamVjdC5jcmVhdGUoUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlKV07Citm
b3IgKGNvbnN0IHJlYWRhYmxlIG9mIGJhZFJlYWRhYmxlcykgeworICB0ZXN0KCgpID0+IHsKKyAg
ICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgIFJlYWRh
YmxlU3RyZWFtLnByb3RvdHlwZS5waXBlVGhyb3VnaC5iaW5kKHJlYWRhYmxlLCB1bmludGVyZXN0
aW5nUmVhZGFibGVXcml0YWJsZVBhaXIoKSksCisgICAgICAgICAgICAgICAgICAgICAncGlwZVRo
cm91Z2ggc2hvdWxkIHRocm93Jyk7CisgIH0sIGBwaXBlVGhyb3VnaCBzaG91bGQgYnJhbmQtY2hl
Y2sgdGhpcyBhbmQgbm90IGFsbG93ICcke3JlYWRhYmxlfSdgKTsKKworICB0ZXN0KCgpID0+IHsK
KyAgICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSgpOworICAgIGxldCB3cml0YWJsZUdl
dHRlckNhbGxlZCA9IGZhbHNlOworICAgIGFzc2VydF90aHJvd3NfanMoCisgICAgICBUeXBlRXJy
b3IsCisgICAgICAoKSA9PiBycy5waXBlVGhyb3VnaCh7CisgICAgICAgIGdldCB3cml0YWJsZSgp
IHsKKyAgICAgICAgICB3cml0YWJsZUdldHRlckNhbGxlZCA9IHRydWU7CisgICAgICAgICAgcmV0
dXJuIG5ldyBXcml0YWJsZVN0cmVhbSgpOworICAgICAgICB9LAorICAgICAgICByZWFkYWJsZQor
ICAgICAgfSksCisgICAgICAncGlwZVRocm91Z2ggc2hvdWxkIGJyYW5kLWNoZWNrIHJlYWRhYmxl
JworICAgICk7CisgICAgYXNzZXJ0X2ZhbHNlKHdyaXRhYmxlR2V0dGVyQ2FsbGVkLCAnd3JpdGFi
bGUgc2hvdWxkIG5vdCBoYXZlIGJlZW4gYWNjZXNzZWQnKTsKKyAgfSwgYHBpcGVUaHJvdWdoIHNo
b3VsZCBicmFuZC1jaGVjayByZWFkYWJsZSBhbmQgbm90IGFsbG93ICcke3JlYWRhYmxlfSdgKTsK
K30KKworY29uc3QgYmFkV3JpdGFibGVzID0gW251bGwsIHVuZGVmaW5lZCwgMCwgTmFOLCB0cnVl
LCAnV3JpdGFibGVTdHJlYW0nLCBPYmplY3QuY3JlYXRlKFdyaXRhYmxlU3RyZWFtLnByb3RvdHlw
ZSldOworZm9yIChjb25zdCB3cml0YWJsZSBvZiBiYWRXcml0YWJsZXMpIHsKKyAgdGVzdCgoKSA9
PiB7CisgICAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgICAgc3RhcnQoYykg
eworICAgICAgICBjLmNsb3NlKCk7CisgICAgICB9CisgICAgfSk7CisgICAgbGV0IHJlYWRhYmxl
R2V0dGVyQ2FsbGVkID0gZmFsc2U7CisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgp
ID0+IHJzLnBpcGVUaHJvdWdoKHsKKyAgICAgIGdldCByZWFkYWJsZSgpIHsKKyAgICAgICAgcmVh
ZGFibGVHZXR0ZXJDYWxsZWQgPSB0cnVlOworICAgICAgICByZXR1cm4gbmV3IFJlYWRhYmxlU3Ry
ZWFtKCk7CisgICAgICB9LAorICAgICAgd3JpdGFibGUKKyAgICB9KSwKKyAgICAgICAgICAgICAg
ICAgICdwaXBlVGhyb3VnaCBzaG91bGQgYnJhbmQtY2hlY2sgd3JpdGFibGUnKTsKKyAgICBhc3Nl
cnRfdHJ1ZShyZWFkYWJsZUdldHRlckNhbGxlZCwgJ3JlYWRhYmxlIHNob3VsZCBoYXZlIGJlZW4g
YWNjZXNzZWQnKTsKKyAgfSwgYHBpcGVUaHJvdWdoIHNob3VsZCBicmFuZC1jaGVjayB3cml0YWJs
ZSBhbmQgbm90IGFsbG93ICcke3dyaXRhYmxlfSdgKTsKK30KKwordGVzdCh0ID0+IHsKKyAgY29u
c3QgZXJyb3IgPSBuZXcgRXJyb3IoKTsKKyAgZXJyb3IubmFtZSA9ICdjdXN0b20nOworCisgIGNv
bnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBwdWxsOiB0LnVucmVhY2hlZF9mdW5j
KCdwdWxsIHNob3VsZCBub3QgYmUgY2FsbGVkJykKKyAgfSwgeyBoaWdoV2F0ZXJNYXJrOiAwIH0p
OworCisgIGNvbnN0IHRocm93aW5nV3JpdGFibGUgPSB7CisgICAgcmVhZGFibGU6IHJzLAorICAg
IGdldCB3cml0YWJsZSgpIHsKKyAgICAgIHRocm93IGVycm9yOworICAgIH0KKyAgfTsKKyAgYXNz
ZXJ0X3Rocm93c19leGFjdGx5KGVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgKCkgPT4g
UmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLnBpcGVUaHJvdWdoLmNhbGwocnMsIHRocm93aW5nV3Jp
dGFibGUsIHt9KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICdwaXBlVGhyb3VnaCBzaG91bGQg
cmV0aHJvdyB0aGUgZXJyb3IgdGhyb3duIGJ5IHRoZSB3cml0YWJsZSBnZXR0ZXInKTsKKworICBj
b25zdCB0aHJvd2luZ1JlYWRhYmxlID0geworICAgIGdldCByZWFkYWJsZSgpIHsKKyAgICAgIHRo
cm93IGVycm9yOworICAgIH0sCisgICAgd3JpdGFibGU6IHt9CisgIH07CisgIGFzc2VydF90aHJv
d3NfZXhhY3RseShlcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICgpID0+IFJlYWRhYmxl
U3RyZWFtLnByb3RvdHlwZS5waXBlVGhyb3VnaC5jYWxsKHJzLCB0aHJvd2luZ1JlYWRhYmxlLCB7
fSksCisgICAgICAgICAgICAgICAgICAgICAgICAncGlwZVRocm91Z2ggc2hvdWxkIHJldGhyb3cg
dGhlIGVycm9yIHRocm93biBieSB0aGUgcmVhZGFibGUgZ2V0dGVyJyk7CisKK30sICdwaXBlVGhy
b3VnaCBzaG91bGQgcmV0aHJvdyBlcnJvcnMgZnJvbSBhY2Nlc3NpbmcgcmVhZGFibGUgb3Igd3Jp
dGFibGUnKTsKKworY29uc3QgYmFkU2lnbmFscyA9IFtudWxsLCAwLCBOYU4sIHRydWUsICdBYm9y
dFNpZ25hbCcsIE9iamVjdC5jcmVhdGUoQWJvcnRTaWduYWwucHJvdG90eXBlKV07Citmb3IgKGNv
bnN0IHNpZ25hbCBvZiBiYWRTaWduYWxzKSB7CisgIHRlc3QoKCkgPT4geworICAgIGNvbnN0IHJz
ID0gbmV3IFJlYWRhYmxlU3RyZWFtKCk7CisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3Is
ICgpID0+IHJzLnBpcGVUaHJvdWdoKHVuaW50ZXJlc3RpbmdSZWFkYWJsZVdyaXRhYmxlUGFpcigp
LCB7IHNpZ25hbCB9KSwKKyAgICAgICAgICAgICAgICAgICAgICdwaXBlVGhyb3VnaCBzaG91bGQg
dGhyb3cnKTsKKyAgfSwgYGludmFsaWQgdmFsdWVzIG9mIHNpZ25hbCBzaG91bGQgdGhyb3c7IHNw
ZWNpZmljYWxseSAnJHtzaWduYWx9J2ApOworfQorCit0ZXN0KCgpID0+IHsKKyAgY29uc3QgcnMg
PSBuZXcgUmVhZGFibGVTdHJlYW0oKTsKKyAgY29uc3QgY29udHJvbGxlciA9IG5ldyBBYm9ydENv
bnRyb2xsZXIoKTsKKyAgY29uc3Qgc2lnbmFsID0gY29udHJvbGxlci5zaWduYWw7CisgIHJzLnBp
cGVUaHJvdWdoKHVuaW50ZXJlc3RpbmdSZWFkYWJsZVdyaXRhYmxlUGFpcigpLCB7IHNpZ25hbCB9
KTsKK30sICdwaXBlVGhyb3VnaCBzaG91bGQgYWNjZXB0IGEgcmVhbCBBYm9ydFNpZ25hbCcpOwor
Cit0ZXN0KCgpID0+IHsKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oKTsKKyAgcnMu
Z2V0UmVhZGVyKCk7CisgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiBycy5waXBl
VGhyb3VnaCh1bmludGVyZXN0aW5nUmVhZGFibGVXcml0YWJsZVBhaXIoKSksCisgICAgICAgICAg
ICAgICAgICAgJ3BpcGVUaHJvdWdoIHNob3VsZCB0aHJvdycpOworfSwgJ3BpcGVUaHJvdWdoIHNo
b3VsZCB0aHJvdyBpZiB0aGlzIGlzIGxvY2tlZCcpOworCit0ZXN0KCgpID0+IHsKKyAgY29uc3Qg
cnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oKTsKKyAgY29uc3Qgd3JpdGFibGUgPSBuZXcgV3JpdGFi
bGVTdHJlYW0oKTsKKyAgY29uc3QgcmVhZGFibGUgPSBuZXcgUmVhZGFibGVTdHJlYW0oKTsKKyAg
d3JpdGFibGUuZ2V0V3JpdGVyKCk7CisgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9
PiBycy5waXBlVGhyb3VnaCh7d3JpdGFibGUsIHJlYWRhYmxlfSksCisgICAgICAgICAgICAgICAg
ICAgJ3BpcGVUaHJvdWdoIHNob3VsZCB0aHJvdycpOworfSwgJ3BpcGVUaHJvdWdoIHNob3VsZCB0
aHJvdyBpZiB3cml0YWJsZSBpcyBsb2NrZWQnKTsKKwordGVzdCgoKSA9PiB7CisgIGNvbnN0IHJz
ID0gbmV3IFJlYWRhYmxlU3RyZWFtKCk7CisgIGNvbnN0IHdyaXRhYmxlID0gbmV3IFdyaXRhYmxl
U3RyZWFtKCk7CisgIGNvbnN0IHJlYWRhYmxlID0gbmV3IFJlYWRhYmxlU3RyZWFtKCk7CisgIHJl
YWRhYmxlLmdldFJlYWRlcigpOworICBhc3NlcnRfZXF1YWxzKHJzLnBpcGVUaHJvdWdoKHsgd3Jp
dGFibGUsIHJlYWRhYmxlIH0pLCByZWFkYWJsZSwKKyAgICAgICAgICAgICAgICAncGlwZVRocm91
Z2ggc2hvdWxkIG5vdCB0aHJvdycpOworfSwgJ3BpcGVUaHJvdWdoIHNob3VsZCBub3QgY2FyZSBp
ZiByZWFkYWJsZSBpcyBsb2NrZWQnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgY29uc3Qg
cnMgPSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSgpOworICBjb25zdCB3cml0YWJsZSA9IG5ldyBX
cml0YWJsZVN0cmVhbSh7CisgICAgc3RhcnQoY29udHJvbGxlcikgeworICAgICAgY29udHJvbGxl
ci5lcnJvcigpOworICAgIH0KKyAgfSk7CisgIGNvbnN0IHJlYWRhYmxlID0gbmV3IFJlYWRhYmxl
U3RyZWFtKCk7CisgIHJzLnBpcGVUaHJvdWdoKHsgd3JpdGFibGUsIHJlYWRhYmxlIH0sIHsgcHJl
dmVudENhbmNlbDogdHJ1ZSB9KTsKKyAgcmV0dXJuIGZsdXNoQXN5bmNFdmVudHMoMCkudGhlbigo
KSA9PiB7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhycy5ldmVudHMsIFsncHVsbCddLCAnY2Fu
Y2VsIHNob3VsZCBub3QgaGF2ZSBiZWVuIGNhbGxlZCcpOworICB9KTsKK30sICdwcmV2ZW50Q2Fu
Y2VsIHNob3VsZCB3b3JrJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisgIGNvbnN0IHJzID0g
bmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjb250cm9sbGVyKSB7CisgICAgICBjb250
cm9sbGVyLmNsb3NlKCk7CisgICAgfQorICB9KTsKKyAgY29uc3Qgd3JpdGFibGUgPSByZWNvcmRp
bmdXcml0YWJsZVN0cmVhbSgpOworICBjb25zdCByZWFkYWJsZSA9IG5ldyBSZWFkYWJsZVN0cmVh
bSgpOworICBycy5waXBlVGhyb3VnaCh7IHdyaXRhYmxlLCByZWFkYWJsZSB9LCB7IHByZXZlbnRD
bG9zZTogdHJ1ZSB9KTsKKyAgcmV0dXJuIGZsdXNoQXN5bmNFdmVudHMoMCkudGhlbigoKSA9PiB7
CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cml0YWJsZS5ldmVudHMsIFtdLCAnd3JpdGFibGUg
c2hvdWxkIG5vdCBiZSBjbG9zZWQnKTsKKyAgfSk7Cit9LCAncHJldmVudENsb3NlIHNob3VsZCB3
b3JrJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxl
U3RyZWFtKHsKKyAgICBzdGFydChjb250cm9sbGVyKSB7CisgICAgICBjb250cm9sbGVyLmVycm9y
KCk7CisgICAgfQorICB9KTsKKyAgY29uc3Qgd3JpdGFibGUgPSByZWNvcmRpbmdXcml0YWJsZVN0
cmVhbSgpOworICBjb25zdCByZWFkYWJsZSA9IG5ldyBSZWFkYWJsZVN0cmVhbSgpOworICBycy5w
aXBlVGhyb3VnaCh7IHdyaXRhYmxlLCByZWFkYWJsZSB9LCB7IHByZXZlbnRBYm9ydDogdHJ1ZSB9
KTsKKyAgcmV0dXJuIGZsdXNoQXN5bmNFdmVudHMoMCkudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0
X2FycmF5X2VxdWFscyh3cml0YWJsZS5ldmVudHMsIFtdLCAnd3JpdGFibGUgc2hvdWxkIG5vdCBi
ZSBhYm9ydGVkJyk7CisgIH0pOworfSwgJ3ByZXZlbnRBYm9ydCBzaG91bGQgd29yaycpOworCit0
ZXN0KCgpID0+IHsKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oKTsKKyAgY29uc3Qg
cmVhZGFibGUgPSBuZXcgUmVhZGFibGVTdHJlYW0oKTsKKyAgY29uc3Qgd3JpdGFibGUgPSBuZXcg
V3JpdGFibGVTdHJlYW0oKTsKKyAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IHJz
LnBpcGVUaHJvdWdoKHtyZWFkYWJsZSwgd3JpdGFibGV9LCB7CisgICAgZ2V0IHByZXZlbnRBYm9y
dCgpIHsKKyAgICAgIHdyaXRhYmxlLmdldFdyaXRlcigpOworICAgIH0KKyAgfSksICdwaXBlVGhy
b3VnaCBzaG91bGQgdGhyb3cnKTsKK30sICdwaXBlVGhyb3VnaCgpIHNob3VsZCB0aHJvdyBpZiBh
biBvcHRpb24gZ2V0dGVyIGdyYWJzIGEgd3JpdGVyJyk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL3BpcGUtdGhy
b3VnaC5hbnkud29ya2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvcGlwZS10aHJvdWdoLmFueS53b3JrZXIt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk2NDNiMWQyZjA3ZTZlNTk4NzljMDcxMTlkNjk1ZGI4
MjQ0ODZhNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL3BpcGUtdGhyb3VnaC5hbnkud29ya2VyLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDc5IEBACitDT05TT0xFIE1FU1NBR0U6IFJlZmVyZW5jZUVy
cm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorCitIYXJuZXNzIEVycm9y
IChGQUlMKSwgbWVzc2FnZSA9IFJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBX
cml0YWJsZVN0cmVhbQorCitGQUlMIFBpcGluZyB0aHJvdWdoIGEgZHVjay10eXBlZCBwYXNzLXRo
cm91Z2ggdHJhbnNmb3JtIHN0cmVhbSBzaG91bGQgd29yayBDYW4ndCBmaW5kIHZhcmlhYmxlOiBX
cml0YWJsZVN0cmVhbQorRkFJTCBQaXBpbmcgdGhyb3VnaCBhIHRyYW5zZm9ybSBlcnJvcmVkIG9u
IHRoZSB3cml0YWJsZSBlbmQgZG9lcyBub3QgY2F1c2UgYW4gdW5oYW5kbGVkIHByb21pc2UgcmVq
ZWN0aW9uIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIHBpcGVUaHJv
dWdoIHNob3VsZCBub3QgY2FsbCBwaXBlVG8gb24gdGhpcyBDYW4ndCBmaW5kIHZhcmlhYmxlOiBX
cml0YWJsZVN0cmVhbQorRkFJTCBwaXBlVGhyb3VnaCBzaG91bGQgbm90IGNhbGwgcGlwZVRvIG9u
IHRoZSBSZWFkYWJsZVN0cmVhbSBwcm90b3R5cGUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFi
bGVTdHJlYW0KK0ZBSUwgcGlwZVRocm91Z2ggc2hvdWxkIGJyYW5kLWNoZWNrIHRoaXMgYW5kIG5v
dCBhbGxvdyAnbnVsbCcgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwg
cGlwZVRocm91Z2ggc2hvdWxkIGJyYW5kLWNoZWNrIHJlYWRhYmxlIGFuZCBub3QgYWxsb3cgJ251
bGwnIGFzc2VydF90aHJvd3NfanM6IHBpcGVUaHJvdWdoIHNob3VsZCBicmFuZC1jaGVjayByZWFk
YWJsZSBmdW5jdGlvbiAiKCkgPT4gcnMucGlwZVRocm91Z2goeworICAgICAgICBnZXQgd3JpdGFi
bGUoKSB7CisgICAgICAgICAgd3JpdGFibGVHZXR0ZXJDYWxsZWQgPSB0cnVlOworICAgICAgICAg
IHJldHVybiBuZXcgV3JpdGFibGVTdHJlYW0oKTsKKyAgICAgICAgfSwKKyAgICAgICAgcmVhZGFi
bGUKKyAgICAgIH0pIiB0aHJldyBvYmplY3QgIlJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZh
cmlhYmxlOiBXcml0YWJsZVN0cmVhbSIgKCJSZWZlcmVuY2VFcnJvciIpIGV4cGVjdGVkIGluc3Rh
bmNlIG9mIGZ1bmN0aW9uICJmdW5jdGlvbiBUeXBlRXJyb3IoKSB7CisgICAgW25hdGl2ZSBjb2Rl
XQorfSIgKCJUeXBlRXJyb3IiKQorRkFJTCBwaXBlVGhyb3VnaCBzaG91bGQgYnJhbmQtY2hlY2sg
dGhpcyBhbmQgbm90IGFsbG93ICd1bmRlZmluZWQnIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRh
YmxlU3RyZWFtCitGQUlMIHBpcGVUaHJvdWdoIHNob3VsZCBicmFuZC1jaGVjayByZWFkYWJsZSBh
bmQgbm90IGFsbG93ICd1bmRlZmluZWQnIGFzc2VydF90aHJvd3NfanM6IHBpcGVUaHJvdWdoIHNo
b3VsZCBicmFuZC1jaGVjayByZWFkYWJsZSBmdW5jdGlvbiAiKCkgPT4gcnMucGlwZVRocm91Z2go
eworICAgICAgICBnZXQgd3JpdGFibGUoKSB7CisgICAgICAgICAgd3JpdGFibGVHZXR0ZXJDYWxs
ZWQgPSB0cnVlOworICAgICAgICAgIHJldHVybiBuZXcgV3JpdGFibGVTdHJlYW0oKTsKKyAgICAg
ICAgfSwKKyAgICAgICAgcmVhZGFibGUKKyAgICAgIH0pIiB0aHJldyBvYmplY3QgIlJlZmVyZW5j
ZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbSIgKCJSZWZlcmVuY2VF
cnJvciIpIGV4cGVjdGVkIGluc3RhbmNlIG9mIGZ1bmN0aW9uICJmdW5jdGlvbiBUeXBlRXJyb3Io
KSB7CisgICAgW25hdGl2ZSBjb2RlXQorfSIgKCJUeXBlRXJyb3IiKQorRkFJTCBwaXBlVGhyb3Vn
aCBzaG91bGQgYnJhbmQtY2hlY2sgdGhpcyBhbmQgbm90IGFsbG93ICcwJyBDYW4ndCBmaW5kIHZh
cmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBwaXBlVGhyb3VnaCBzaG91bGQgYnJhbmQtY2hl
Y2sgcmVhZGFibGUgYW5kIG5vdCBhbGxvdyAnMCcgYXNzZXJ0X3Rocm93c19qczogcGlwZVRocm91
Z2ggc2hvdWxkIGJyYW5kLWNoZWNrIHJlYWRhYmxlIGZ1bmN0aW9uICIoKSA9PiBycy5waXBlVGhy
b3VnaCh7CisgICAgICAgIGdldCB3cml0YWJsZSgpIHsKKyAgICAgICAgICB3cml0YWJsZUdldHRl
ckNhbGxlZCA9IHRydWU7CisgICAgICAgICAgcmV0dXJuIG5ldyBXcml0YWJsZVN0cmVhbSgpOwor
ICAgICAgICB9LAorICAgICAgICByZWFkYWJsZQorICAgICAgfSkiIHRocmV3IG9iamVjdCAiUmVm
ZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtIiAoIlJlZmVy
ZW5jZUVycm9yIikgZXhwZWN0ZWQgaW5zdGFuY2Ugb2YgZnVuY3Rpb24gImZ1bmN0aW9uIFR5cGVF
cnJvcigpIHsKKyAgICBbbmF0aXZlIGNvZGVdCit9IiAoIlR5cGVFcnJvciIpCitGQUlMIHBpcGVU
aHJvdWdoIHNob3VsZCBicmFuZC1jaGVjayB0aGlzIGFuZCBub3QgYWxsb3cgJ05hTicgQ2FuJ3Qg
ZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgcGlwZVRocm91Z2ggc2hvdWxkIGJy
YW5kLWNoZWNrIHJlYWRhYmxlIGFuZCBub3QgYWxsb3cgJ05hTicgYXNzZXJ0X3Rocm93c19qczog
cGlwZVRocm91Z2ggc2hvdWxkIGJyYW5kLWNoZWNrIHJlYWRhYmxlIGZ1bmN0aW9uICIoKSA9PiBy
cy5waXBlVGhyb3VnaCh7CisgICAgICAgIGdldCB3cml0YWJsZSgpIHsKKyAgICAgICAgICB3cml0
YWJsZUdldHRlckNhbGxlZCA9IHRydWU7CisgICAgICAgICAgcmV0dXJuIG5ldyBXcml0YWJsZVN0
cmVhbSgpOworICAgICAgICB9LAorICAgICAgICByZWFkYWJsZQorICAgICAgfSkiIHRocmV3IG9i
amVjdCAiUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFt
IiAoIlJlZmVyZW5jZUVycm9yIikgZXhwZWN0ZWQgaW5zdGFuY2Ugb2YgZnVuY3Rpb24gImZ1bmN0
aW9uIFR5cGVFcnJvcigpIHsKKyAgICBbbmF0aXZlIGNvZGVdCit9IiAoIlR5cGVFcnJvciIpCitG
QUlMIHBpcGVUaHJvdWdoIHNob3VsZCBicmFuZC1jaGVjayB0aGlzIGFuZCBub3QgYWxsb3cgJ3Ry
dWUnIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIHBpcGVUaHJvdWdo
IHNob3VsZCBicmFuZC1jaGVjayByZWFkYWJsZSBhbmQgbm90IGFsbG93ICd0cnVlJyBhc3NlcnRf
dGhyb3dzX2pzOiBwaXBlVGhyb3VnaCBzaG91bGQgYnJhbmQtY2hlY2sgcmVhZGFibGUgZnVuY3Rp
b24gIigpID0+IHJzLnBpcGVUaHJvdWdoKHsKKyAgICAgICAgZ2V0IHdyaXRhYmxlKCkgeworICAg
ICAgICAgIHdyaXRhYmxlR2V0dGVyQ2FsbGVkID0gdHJ1ZTsKKyAgICAgICAgICByZXR1cm4gbmV3
IFdyaXRhYmxlU3RyZWFtKCk7CisgICAgICAgIH0sCisgICAgICAgIHJlYWRhYmxlCisgICAgICB9
KSIgdGhyZXcgb2JqZWN0ICJSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3Jp
dGFibGVTdHJlYW0iICgiUmVmZXJlbmNlRXJyb3IiKSBleHBlY3RlZCBpbnN0YW5jZSBvZiBmdW5j
dGlvbiAiZnVuY3Rpb24gVHlwZUVycm9yKCkgeworICAgIFtuYXRpdmUgY29kZV0KK30iICgiVHlw
ZUVycm9yIikKK0ZBSUwgcGlwZVRocm91Z2ggc2hvdWxkIGJyYW5kLWNoZWNrIHRoaXMgYW5kIG5v
dCBhbGxvdyAnUmVhZGFibGVTdHJlYW0nIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3Ry
ZWFtCitGQUlMIHBpcGVUaHJvdWdoIHNob3VsZCBicmFuZC1jaGVjayByZWFkYWJsZSBhbmQgbm90
IGFsbG93ICdSZWFkYWJsZVN0cmVhbScgYXNzZXJ0X3Rocm93c19qczogcGlwZVRocm91Z2ggc2hv
dWxkIGJyYW5kLWNoZWNrIHJlYWRhYmxlIGZ1bmN0aW9uICIoKSA9PiBycy5waXBlVGhyb3VnaCh7
CisgICAgICAgIGdldCB3cml0YWJsZSgpIHsKKyAgICAgICAgICB3cml0YWJsZUdldHRlckNhbGxl
ZCA9IHRydWU7CisgICAgICAgICAgcmV0dXJuIG5ldyBXcml0YWJsZVN0cmVhbSgpOworICAgICAg
ICB9LAorICAgICAgICByZWFkYWJsZQorICAgICAgfSkiIHRocmV3IG9iamVjdCAiUmVmZXJlbmNl
RXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtIiAoIlJlZmVyZW5jZUVy
cm9yIikgZXhwZWN0ZWQgaW5zdGFuY2Ugb2YgZnVuY3Rpb24gImZ1bmN0aW9uIFR5cGVFcnJvcigp
IHsKKyAgICBbbmF0aXZlIGNvZGVdCit9IiAoIlR5cGVFcnJvciIpCitGQUlMIHBpcGVUaHJvdWdo
IHNob3VsZCBicmFuZC1jaGVjayB0aGlzIGFuZCBub3QgYWxsb3cgJ1tvYmplY3QgUmVhZGFibGVT
dHJlYW1dJyBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBwaXBlVGhy
b3VnaCBzaG91bGQgYnJhbmQtY2hlY2sgcmVhZGFibGUgYW5kIG5vdCBhbGxvdyAnW29iamVjdCBS
ZWFkYWJsZVN0cmVhbV0nIGFzc2VydF90aHJvd3NfanM6IHBpcGVUaHJvdWdoIHNob3VsZCBicmFu
ZC1jaGVjayByZWFkYWJsZSBmdW5jdGlvbiAiKCkgPT4gcnMucGlwZVRocm91Z2goeworICAgICAg
ICBnZXQgd3JpdGFibGUoKSB7CisgICAgICAgICAgd3JpdGFibGVHZXR0ZXJDYWxsZWQgPSB0cnVl
OworICAgICAgICAgIHJldHVybiBuZXcgV3JpdGFibGVTdHJlYW0oKTsKKyAgICAgICAgfSwKKyAg
ICAgICAgcmVhZGFibGUKKyAgICAgIH0pIiB0aHJldyBvYmplY3QgIlJlZmVyZW5jZUVycm9yOiBD
YW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbSIgKCJSZWZlcmVuY2VFcnJvciIpIGV4
cGVjdGVkIGluc3RhbmNlIG9mIGZ1bmN0aW9uICJmdW5jdGlvbiBUeXBlRXJyb3IoKSB7CisgICAg
W25hdGl2ZSBjb2RlXQorfSIgKCJUeXBlRXJyb3IiKQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL3BpcGUtdGhy
b3VnaC5hbnkud29ya2VyLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL3BpcGUtdGhyb3VnaC5hbnkud29ya2VyLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMjM4MjkxMzUyOGU2OTNiM2E1ZDU2YzY2MGE0NTA2MDk4MGI1NDhjMwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy9waXBpbmcvcGlwZS10aHJvdWdoLmFueS53b3JrZXIuaHRtbApAQCAtMCwwICsxIEBA
Cis8IS0tIFRoaXMgZmlsZSBpcyByZXF1aXJlZCBmb3IgV2ViS2l0IHRlc3QgaW5mcmFzdHJ1Y3R1
cmUgdG8gcnVuIHRoZSB0ZW1wbGF0ZWQgdGVzdCAtLT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3N0cmVhbXMvcGlwaW5nL3BpcGUtdGhyb3VnaC5kZWRpY2F0ZWR3b3JrZXItZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
L3BpcGluZy9waXBlLXRocm91Z2guZGVkaWNhdGVkd29ya2VyLWV4cGVjdGVkLnR4dApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjg3YmUwNGVkMGI4OTE3NjU5Zjg5YzRkNzU2NTE4ZjQ2
NjAzYjc5NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5n
L3BpcGUtdGhyb3VnaC5kZWRpY2F0ZWR3b3JrZXItZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwK
QEAgLTEsMTUgKzAsMCBAQAotCi1GQUlMIFBpcGluZyB0aHJvdWdoIGEgZHVjay10eXBlZCBwYXNz
LXRocm91Z2ggdHJhbnNmb3JtIHN0cmVhbSBzaG91bGQgd29yayBDYW4ndCBmaW5kIHZhcmlhYmxl
OiBXcml0YWJsZVN0cmVhbQotRkFJTCBQaXBpbmcgdGhyb3VnaCBhIHRyYW5zZm9ybSBlcnJvcmVk
IG9uIHRoZSB3cml0YWJsZSBlbmQgZG9lcyBub3QgY2F1c2UgYW4gdW5oYW5kbGVkIHByb21pc2Ug
cmVqZWN0aW9uIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1QQVNTIHBpcGVU
aHJvdWdoIGdlbmVyaWNhbGx5IGNhbGxzIHBpcGVUbyB3aXRoIHRoZSBhcHByb3ByaWF0ZSBhcmdz
IAotRkFJTCBwaXBlVGhyb3VnaCBjYW4gaGFuZGxlIGNhbGxpbmcgYSBwaXBlVG8gdGhhdCByZXR1
cm5zIGEgbm9uLXByb21pc2Ugb2JqZWN0IENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3Ry
ZWFtCi1GQUlMIHBpcGVUaHJvdWdoIGNhbiBoYW5kbGUgY2FsbGluZyBhIHBpcGVUbyB0aGF0IHJl
dHVybnMgYSBub24tcHJvbWlzZSB0aGVuYWJsZSBvYmplY3QgQ2FuJ3QgZmluZCB2YXJpYWJsZTog
V3JpdGFibGVTdHJlYW0KLUZBSUwgcGlwZVRocm91Z2ggc2hvdWxkIG1hcmsgYSByZWFsIHByb21p
c2UgZnJvbSBhIGZha2UgcmVhZGFibGUgYXMgaGFuZGxlZCBDYW4ndCBmaW5kIHZhcmlhYmxlOiBX
cml0YWJsZVN0cmVhbQotRkFJTCBwaXBlVGhyb3VnaCBzaG91bGQgbm90IGJlIGZvb2xlZCBieSBh
biBvYmplY3Qgd2hvc2UgaW5zdGFuY2VvZiBQcm9taXNlIHJldHVybnMgdHJ1ZSBDYW4ndCBmaW5k
IHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotUEFTUyB1bmRlZmluZWQgcmVhZGFibGUgb3Igd3Jp
dGFibGUgYXJndW1lbnRzIHNob3VsZCBjYXVzZSBwaXBlVGhyb3VnaCB0byB0aHJvdyAKLUZBSUwg
aW52YWxpZCBidXQgbm90IHVuZGVmaW5lZCBhcmd1bWVudHMgc2hvdWxkIG5vdCBjYXVzZSBwaXBl
VGhyb3VnaCB0byB0aHJvdyBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotUEFT
UyBwaXBlVGhyb3VnaCBzaG91bGQgdGhyb3cgd2hlbiBpdHMgZmlyc3QgYXJndW1lbnQgaXMgbm90
IGNvbnZlcnRpYmxlIHRvIGFuIG9iamVjdCAKLVBBU1MgcGlwZVRocm91Z2ggc2hvdWxkIHRocm93
IHdoZW4gInRoaXMiIGhhcyBubyBwaXBlVG8gbWV0aG9kIAotUEFTUyBwaXBlVGhyb3VnaCBzaG91
bGQgcmV0aHJvdyBlcnJvcnMgZnJvbSBhY2Nlc3NpbmcgcGlwZVRvLCByZWFkYWJsZSwgb3Igd3Jp
dGFibGUgCi1QQVNTIHBpcGVUaHJvdWdoIHNob3VsZCB3b3JrIHdpdGggbm8gb3B0aW9ucyBhcmd1
bWVudCAKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zdHJlYW1zL3BpcGluZy9waXBlLXRocm91Z2guZGVkaWNhdGVkd29ya2VyLmh0bWwg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlw
aW5nL3BpcGUtdGhyb3VnaC5kZWRpY2F0ZWR3b3JrZXIuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggNjE0ZGI4MGJlOTBiNTJhZTQ0NzJiM2QzY2E4NzAwMDM4Zjg0Mjg1Zi4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL3BpcGUtdGhyb3Vn
aC5kZWRpY2F0ZWR3b3JrZXIuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLTwh
RE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHRpdGxlPnBpcGUtdGhyb3Vn
aC5qcyBkZWRpY2F0ZWQgd29ya2VyIHdyYXBwZXIgZmlsZTwvdGl0bGU+Ci0KLTxzY3JpcHQgc3Jj
PSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLQotPHNjcmlwdD4KLSd1c2Ug
c3RyaWN0JzsKLWZldGNoX3Rlc3RzX2Zyb21fd29ya2VyKG5ldyBXb3JrZXIoJ3BpcGUtdGhyb3Vn
aC5qcycpKTsKLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9waXBlLXRocm91Z2guaHRtbCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcv
cGlwZS10aHJvdWdoLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJkYmY5M2Fj
OTA1NDJiNDc1ODAxYmRlMTE5YTdjMjkxNGNmNTZhYzcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9waXBlLXRocm91Z2guaHRtbAorKysgL2Rldi9udWxs
CkBAIC0xLDExICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgi
PgotPHRpdGxlPnBpcGUtdGhyb3VnaC5qcyBicm93c2VyIGNvbnRleHQgd3JhcHBlciBmaWxlPC90
aXRsZT4KLQotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0
PgotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0
PgotCi08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3JzLXV0aWxzLmpzIj48L3NjcmlwdD4KLTxz
Y3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Ci0KLTxzY3Jp
cHQgc3JjPSJwaXBlLXRocm91Z2guanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9waXBlLXRo
cm91Z2guanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMvcGlwaW5nL3BpcGUtdGhyb3VnaC5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggN2JhNTYwN2FlNWRiYjU5YTg0NTAwMzNmOTYyNDE5NTAwMDE0ODJiZS4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL3BpcGUtdGhyb3VnaC5qcworKysg
L2Rldi9udWxsCkBAIC0xLDI2MSArMCwwIEBACi0ndXNlIHN0cmljdCc7Ci0KLWlmIChzZWxmLmlt
cG9ydFNjcmlwdHMpIHsKLSAgc2VsZi5pbXBvcnRTY3JpcHRzKCcvcmVzb3VyY2VzL3Rlc3RoYXJu
ZXNzLmpzJyk7Ci0gIHNlbGYuaW1wb3J0U2NyaXB0cygnLi4vcmVzb3VyY2VzL3JzLXV0aWxzLmpz
Jyk7Ci0gIHNlbGYuaW1wb3J0U2NyaXB0cygnLi4vcmVzb3VyY2VzL3Rlc3QtdXRpbHMuanMnKTsK
LX0KLQotZnVuY3Rpb24gZHVja1R5cGVkUGFzc1Rocm91Z2hUcmFuc2Zvcm0oKSB7Ci0gIGxldCBl
bnF1ZXVlSW5SZWFkYWJsZTsKLSAgbGV0IGNsb3NlUmVhZGFibGU7Ci0KLSAgcmV0dXJuIHsKLSAg
ICB3cml0YWJsZTogbmV3IFdyaXRhYmxlU3RyZWFtKHsKLSAgICAgIHdyaXRlKGNodW5rKSB7Ci0g
ICAgICAgIGVucXVldWVJblJlYWRhYmxlKGNodW5rKTsKLSAgICAgIH0sCi0KLSAgICAgIGNsb3Nl
KCkgewotICAgICAgICBjbG9zZVJlYWRhYmxlKCk7Ci0gICAgICB9Ci0gICAgfSksCi0KLSAgICBy
ZWFkYWJsZTogbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICAgIHN0YXJ0KGMpIHsKLSAgICAgICAg
ZW5xdWV1ZUluUmVhZGFibGUgPSBjLmVucXVldWUuYmluZChjKTsKLSAgICAgICAgY2xvc2VSZWFk
YWJsZSA9IGMuY2xvc2UuYmluZChjKTsKLSAgICAgIH0KLSAgICB9KQotICB9OwotfQotCi1mdW5j
dGlvbiB1bmludGVyZXN0aW5nUmVhZGFibGVXcml0YWJsZVBhaXIoKSB7Ci0gIHJldHVybiB7IHdy
aXRhYmxlOiBuZXcgV3JpdGFibGVTdHJlYW0oKSwgcmVhZGFibGU6IG5ldyBSZWFkYWJsZVN0cmVh
bSgpIH07Ci19Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0gIGNvbnN0IHJlYWRhYmxlRW5kID0g
c2VxdWVudGlhbFJlYWRhYmxlU3RyZWFtKDUpLnBpcGVUaHJvdWdoKGR1Y2tUeXBlZFBhc3NUaHJv
dWdoVHJhbnNmb3JtKCkpOwotCi0gIHJldHVybiByZWFkYWJsZVN0cmVhbVRvQXJyYXkocmVhZGFi
bGVFbmQpLnRoZW4oY2h1bmtzID0+Ci0gICAgYXNzZXJ0X2FycmF5X2VxdWFscyhjaHVua3MsIFsx
LCAyLCAzLCA0LCA1XSksICdjaHVua3Mgc2hvdWxkIG1hdGNoJyk7Ci19LCAnUGlwaW5nIHRocm91
Z2ggYSBkdWNrLXR5cGVkIHBhc3MtdGhyb3VnaCB0cmFuc2Zvcm0gc3RyZWFtIHNob3VsZCB3b3Jr
Jyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0gIGNvbnN0IHRyYW5zZm9ybSA9IHsKLSAgICB3
cml0YWJsZTogbmV3IFdyaXRhYmxlU3RyZWFtKHsKLSAgICAgIHN0YXJ0KGMpIHsKLSAgICAgICAg
Yy5lcnJvcihuZXcgRXJyb3IoJ3RoaXMgcmVqZWN0aW9uIHNob3VsZCBub3QgYmUgcmVwb3J0ZWQg
YXMgdW5oYW5kbGVkJykpOwotICAgICAgfQotICAgIH0pLAotICAgIHJlYWRhYmxlOiBuZXcgUmVh
ZGFibGVTdHJlYW0oKQotICB9OwotCi0gIHNlcXVlbnRpYWxSZWFkYWJsZVN0cmVhbSg1KS5waXBl
VGhyb3VnaCh0cmFuc2Zvcm0pOwotCi0gIC8vIFRoZSB0ZXN0IGhhcm5lc3Mgc2hvdWxkIGNvbXBs
YWluIGFib3V0IHVuaGFuZGxlZCByZWplY3Rpb25zIGJ5IHRoZW4uCi0gIHJldHVybiBmbHVzaEFz
eW5jRXZlbnRzKCk7Ci0KLX0sICdQaXBpbmcgdGhyb3VnaCBhIHRyYW5zZm9ybSBlcnJvcmVkIG9u
IHRoZSB3cml0YWJsZSBlbmQgZG9lcyBub3QgY2F1c2UgYW4gdW5oYW5kbGVkIHByb21pc2UgcmVq
ZWN0aW9uJyk7Ci0KLXRlc3QoKCkgPT4gewotICBsZXQgY2FsbGVkV2l0aEFyZ3M7Ci0gIGNvbnN0
IGR1bW15ID0gewotICAgIHBpcGVUbyguLi5hcmdzKSB7Ci0gICAgICBjYWxsZWRXaXRoQXJncyA9
IGFyZ3M7Ci0KLSAgICAgIC8vIERvZXMgbm90IHJldHVybiBhbnl0aGluZywgdGVzdGluZyB0aGUg
c3BlYydzIGd1YXJkIGFnYWluc3QgdHJ5aW5nIHRvIG1hcmsgW1tQcm9taXNlSXNIYW5kbGVkXV0g
b24gdW5kZWZpbmVkLgotICAgIH0KLSAgfTsKLQotICBjb25zdCBmYWtlV3JpdGFibGUgPSB7IGZh
a2U6ICd3cml0YWJsZScgfTsKLSAgY29uc3QgZmFrZVJlYWRhYmxlID0geyBmYWtlOiAncmVhZGFi
bGUnIH07Ci0gIGNvbnN0IGFyZzIgPSB7IGFyZzogJ2FyZzInIH07Ci0gIGNvbnN0IGFyZzMgPSB7
IGFyZzogJ2FyZzMnIH07Ci0gIGNvbnN0IHJlc3VsdCA9Ci0gICAgUmVhZGFibGVTdHJlYW0ucHJv
dG90eXBlLnBpcGVUaHJvdWdoLmNhbGwoZHVtbXksIHsgd3JpdGFibGU6IGZha2VXcml0YWJsZSwg
cmVhZGFibGU6IGZha2VSZWFkYWJsZSB9LCBhcmcyLCBhcmczKTsKLQotICBhc3NlcnRfYXJyYXlf
ZXF1YWxzKGNhbGxlZFdpdGhBcmdzLCBbZmFrZVdyaXRhYmxlLCBhcmcyXSwKLSAgICAnVGhlIHRo
aXMgdmFsdWVcJ3MgcGlwZVRvIG1ldGhvZCBzaG91bGQgYmUgY2FsbGVkIHdpdGggdGhlIGFwcHJv
cHJpYXRlIGFyZ3VtZW50cycpOwotICBhc3NlcnRfZXF1YWxzKHJlc3VsdCwgZmFrZVJlYWRhYmxl
LCAncmV0dXJuIHZhbHVlIHNob3VsZCBiZSB0aGUgcGFzc2VkIHJlYWRhYmxlIHByb3BlcnR5Jyk7
Ci0KLX0sICdwaXBlVGhyb3VnaCBnZW5lcmljYWxseSBjYWxscyBwaXBlVG8gd2l0aCB0aGUgYXBw
cm9wcmlhdGUgYXJncycpOwotCi10ZXN0KCgpID0+IHsKLSAgY29uc3QgZHVtbXkgPSB7Ci0gICAg
cGlwZVRvKCkgewotICAgICAgcmV0dXJuIHsgbm90OiAnYSBwcm9taXNlJyB9OwotICAgIH0KLSAg
fTsKLQotICBSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUucGlwZVRocm91Z2guY2FsbChkdW1teSwg
dW5pbnRlcmVzdGluZ1JlYWRhYmxlV3JpdGFibGVQYWlyKCkpOwotCi0gIC8vIFRlc3QgcGFzc2Vz
IGlmIHRoaXMgZG9lc24ndCB0aHJvdyBvciBjcmFzaC4KLQotfSwgJ3BpcGVUaHJvdWdoIGNhbiBo
YW5kbGUgY2FsbGluZyBhIHBpcGVUbyB0aGF0IHJldHVybnMgYSBub24tcHJvbWlzZSBvYmplY3Qn
KTsKLQotdGVzdCgoKSA9PiB7Ci0gIGNvbnN0IGR1bW15ID0gewotICAgIHBpcGVUbygpIHsKLSAg
ICAgIHJldHVybiB7Ci0gICAgICAgIHRoZW4oKSB7fSwKLSAgICAgICAgdGhpczogJ2lzIG5vdCBh
IHJlYWwgcHJvbWlzZScKLSAgICAgIH07Ci0gICAgfQotICB9OwotCi0gIFJlYWRhYmxlU3RyZWFt
LnByb3RvdHlwZS5waXBlVGhyb3VnaC5jYWxsKGR1bW15LCB1bmludGVyZXN0aW5nUmVhZGFibGVX
cml0YWJsZVBhaXIoKSk7Ci0KLSAgLy8gVGVzdCBwYXNzZXMgaWYgdGhpcyBkb2Vzbid0IHRocm93
IG9yIGNyYXNoLgotCi19LCAncGlwZVRocm91Z2ggY2FuIGhhbmRsZSBjYWxsaW5nIGEgcGlwZVRv
IHRoYXQgcmV0dXJucyBhIG5vbi1wcm9taXNlIHRoZW5hYmxlIG9iamVjdCcpOwotCi1wcm9taXNl
X3Rlc3QoKCkgPT4gewotICBjb25zdCBkdW1teSA9IHsKLSAgICBwaXBlVG8oKSB7Ci0gICAgICBy
ZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCd0aGlzIHJlamVjdGlvbiBzaG91bGQgbm90
IGJlIHJlcG9ydGVkIGFzIHVuaGFuZGxlZCcpKTsKLSAgICB9Ci0gIH07Ci0KLSAgUmVhZGFibGVT
dHJlYW0ucHJvdG90eXBlLnBpcGVUaHJvdWdoLmNhbGwoZHVtbXksIHVuaW50ZXJlc3RpbmdSZWFk
YWJsZVdyaXRhYmxlUGFpcigpKTsKLQotICAvLyBUaGUgdGVzdCBoYXJuZXNzIHNob3VsZCBjb21w
bGFpbiBhYm91dCB1bmhhbmRsZWQgcmVqZWN0aW9ucyBieSB0aGVuLgotICByZXR1cm4gZmx1c2hB
c3luY0V2ZW50cygpOwotCi19LCAncGlwZVRocm91Z2ggc2hvdWxkIG1hcmsgYSByZWFsIHByb21p
c2UgZnJvbSBhIGZha2UgcmVhZGFibGUgYXMgaGFuZGxlZCcpOwotCi10ZXN0KCgpID0+IHsKLSAg
bGV0IHRoZW5DYWxsZWQgPSBmYWxzZTsKLSAgbGV0IGNhdGNoQ2FsbGVkID0gZmFsc2U7Ci0gIGNv
bnN0IGR1bW15ID0gewotICAgIHBpcGVUbygpIHsKLSAgICAgIGNvbnN0IGZha2VQcm9taXNlID0g
T2JqZWN0LmNyZWF0ZShQcm9taXNlLnByb3RvdHlwZSk7Ci0gICAgICBmYWtlUHJvbWlzZS50aGVu
ID0gKCkgPT4gewotICAgICAgICB0aGVuQ2FsbGVkID0gdHJ1ZTsKLSAgICAgIH07Ci0gICAgICBm
YWtlUHJvbWlzZS5jYXRjaCA9ICgpID0+IHsKLSAgICAgICAgY2F0Y2hDYWxsZWQgPSB0cnVlOwot
ICAgICAgfTsKLSAgICAgIGFzc2VydF90cnVlKGZha2VQcm9taXNlIGluc3RhbmNlb2YgUHJvbWlz
ZSwgJ2Zha2VQcm9taXNlIGZvb2xzIGluc3RhbmNlb2YnKTsKLSAgICAgIHJldHVybiBmYWtlUHJv
bWlzZTsKLSAgICB9Ci0gIH07Ci0KLSAgLy8gQW4gaW5jb3JyZWN0IGltcGxlbWVudGF0aW9uIHdo
aWNoIHVzZXMgYW4gaW50ZXJuYWwgbWV0aG9kIHRvIG1hcmsgdGhlIHByb21pc2UgYXMgaGFuZGxl
ZCB3aWxsIHRocm93IG9yIGNyYXNoIGhlcmUuCi0gIFJlYWRhYmxlU3RyZWFtLnByb3RvdHlwZS5w
aXBlVGhyb3VnaC5jYWxsKGR1bW15LCB1bmludGVyZXN0aW5nUmVhZGFibGVXcml0YWJsZVBhaXIo
KSk7Ci0KLSAgLy8gQW4gaW5jb3JyZWN0IGltcGxlbWVudGF0aW9uIHRoYXQgdHJpZXMgdG8gbWFy
ayB0aGUgcHJvbWlzZSBhcyBoYW5kbGVkIGJ5IGNhbGxpbmcgLnRoZW4oKSBvciAuY2F0Y2goKSBv
biB0aGUgb2JqZWN0Ci0gIC8vIHdpbGwgZmFpbCB0aGVzZSB0ZXN0cy4KLSAgYXNzZXJ0X2ZhbHNl
KHRoZW5DYWxsZWQsICd0aGVuIHNob3VsZCBub3QgYmUgY2FsbGVkJyk7Ci0gIGFzc2VydF9mYWxz
ZShjYXRjaENhbGxlZCwgJ2NhdGNoIHNob3VsZCBub3QgYmUgY2FsbGVkJyk7Ci19LCAncGlwZVRo
cm91Z2ggc2hvdWxkIG5vdCBiZSBmb29sZWQgYnkgYW4gb2JqZWN0IHdob3NlIGluc3RhbmNlb2Yg
UHJvbWlzZSByZXR1cm5zIHRydWUnKTsKLQotdGVzdCgoKSA9PiB7Ci0gIGNvbnN0IHBhaXJzID0g
WwotICAgIHt9LAotICAgIHsgcmVhZGFibGU6IHVuZGVmaW5lZCwgd3JpdGFibGU6IHVuZGVmaW5l
ZCB9LAotICAgIHsgcmVhZGFibGU6ICdyZWFkYWJsZScgfSwKLSAgICB7IHJlYWRhYmxlOiAncmVh
ZGFibGUnLCB3cml0YWJsZTogdW5kZWZpbmVkIH0sCi0gICAgeyB3cml0YWJsZTogJ3dyaXRhYmxl
JyB9LAotICAgIHsgcmVhZGFibGU6IHVuZGVmaW5lZCwgd3JpdGFibGU6ICd3cml0YWJsZScgfQot
ICBdOwotICBmb3IgKGxldCBpID0gMDsgaSA8IHBhaXJzLmxlbmd0aDsgKytpKSB7Ci0gICAgY29u
c3QgcGFpciA9IHBhaXJzW2ldOwotICAgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKCk7
Ci0gICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IHJzLnBpcGVUaHJvdWdo
KHBhaXIpLAotICAgICAgICAgICAgICAgICAgYHBpcGVUaHJvdWdoIHNob3VsZCB0aHJvdyBmb3Ig
YXJndW1lbnQgJHtKU09OLnN0cmluZ2lmeShwYWlyKX0gKGluZGV4ICR7aX0pO2ApOwotICB9Ci19
LCAndW5kZWZpbmVkIHJlYWRhYmxlIG9yIHdyaXRhYmxlIGFyZ3VtZW50cyBzaG91bGQgY2F1c2Ug
cGlwZVRocm91Z2ggdG8gdGhyb3cnKTsKLQotdGVzdCgoKSA9PiB7Ci0gIGNvbnN0IGludmFsaWRB
cmd1bWVudHMgPSBbbnVsbCwgMCwgTmFOLCAnJywgW10sIHt9LCBmYWxzZSwgKCkgPT4ge31dOwot
ICBmb3IgKGNvbnN0IGFyZyBvZiBpbnZhbGlkQXJndW1lbnRzKSB7Ci0gICAgY29uc3QgcnMgPSBu
ZXcgUmVhZGFibGVTdHJlYW0oKTsKLSAgICBhc3NlcnRfZXF1YWxzKGFyZywgcnMucGlwZVRocm91
Z2goeyB3cml0YWJsZTogbmV3IFdyaXRhYmxlU3RyZWFtKCksIHJlYWRhYmxlOiBhcmcgfSksCi0g
ICAgICAgICAgICAgICAgICAncGlwZVRocm91Z2goKSBzaG91bGQgbm90IHRocm93IGZvciByZWFk
YWJsZTogJyArIEpTT04uc3RyaW5naWZ5KGFyZykpOwotICAgIGNvbnN0IHJzMiA9IG5ldyBSZWFk
YWJsZVN0cmVhbSgpOwotICAgIGFzc2VydF9lcXVhbHMocnMyLCBycy5waXBlVGhyb3VnaCh7IHdy
aXRhYmxlOiBhcmcsIHJlYWRhYmxlOiByczIgfSksCi0gICAgICAgICAgICAgICAgICAncGlwZVRo
cm91Z2goKSBzaG91bGQgbm90IHRocm93IGZvciB3cml0YWJsZTogJyArIEpTT04uc3RyaW5naWZ5
KGFyZykpOwotICB9Ci19LCAnaW52YWxpZCBidXQgbm90IHVuZGVmaW5lZCBhcmd1bWVudHMgc2hv
dWxkIG5vdCBjYXVzZSBwaXBlVGhyb3VnaCB0byB0aHJvdycpOwotCi10ZXN0KCgpID0+IHsKLQot
ICBjb25zdCB0aGlzVmFsdWUgPSB7Ci0gICAgcGlwZVRvKCkgewotICAgICAgYXNzZXJ0X3VucmVh
Y2hlZCgncGlwZVRvIHNob3VsZCBub3QgYmUgY2FsbGVkJyk7Ci0gICAgfQotICB9OwotCi0gIG1l
dGhvZFRocm93cyhSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUsICdwaXBlVGhyb3VnaCcsIHRoaXNW
YWx1ZSwgW3VuZGVmaW5lZCwge31dKTsKLSAgbWV0aG9kVGhyb3dzKFJlYWRhYmxlU3RyZWFtLnBy
b3RvdHlwZSwgJ3BpcGVUaHJvdWdoJywgdGhpc1ZhbHVlLCBbbnVsbCwge31dKTsKLQotfSwgJ3Bp
cGVUaHJvdWdoIHNob3VsZCB0aHJvdyB3aGVuIGl0cyBmaXJzdCBhcmd1bWVudCBpcyBub3QgY29u
dmVydGlibGUgdG8gYW4gb2JqZWN0Jyk7Ci0KLXRlc3QoKCkgPT4gewotCi0gIGNvbnN0IGFyZ3Mg
PSBbeyByZWFkYWJsZToge30sIHdyaXRhYmxlOiB7fSB9LCB7fV07Ci0KLSAgbWV0aG9kVGhyb3dz
KFJlYWRhYmxlU3RyZWFtLnByb3RvdHlwZSwgJ3BpcGVUaHJvdWdoJywgdW5kZWZpbmVkLCBhcmdz
KTsKLSAgbWV0aG9kVGhyb3dzKFJlYWRhYmxlU3RyZWFtLnByb3RvdHlwZSwgJ3BpcGVUaHJvdWdo
JywgbnVsbCwgYXJncyk7Ci0gIG1ldGhvZFRocm93cyhSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUs
ICdwaXBlVGhyb3VnaCcsIDEsIGFyZ3MpOwotICBtZXRob2RUaHJvd3MoUmVhZGFibGVTdHJlYW0u
cHJvdG90eXBlLCAncGlwZVRocm91Z2gnLCB7IHBpcGVUbzogJ3Rlc3QnIH0sIGFyZ3MpOwotCi19
LCAncGlwZVRocm91Z2ggc2hvdWxkIHRocm93IHdoZW4gInRoaXMiIGhhcyBubyBwaXBlVG8gbWV0
aG9kJyk7Ci0KLXRlc3QoKCkgPT4gewotICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcigncG90YXRv
Jyk7Ci0KLSAgY29uc3QgdGhyb3dpbmdQaXBlVG8gPSB7Ci0gICAgZ2V0IHBpcGVUbygpIHsKLSAg
ICAgIHRocm93IGVycm9yOwotICAgIH0KLSAgfTsKLSAgYXNzZXJ0X3Rocm93cyhlcnJvciwKLSAg
ICAoKSA9PiBSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUucGlwZVRocm91Z2guY2FsbCh0aHJvd2lu
Z1BpcGVUbywgeyByZWFkYWJsZTogeyB9LCB3cml0YWJsZTogeyB9IH0sIHt9KSwKLSAgICAncGlw
ZVRocm91Z2ggc2hvdWxkIHJldGhyb3cgdGhlIGVycm9yIHRocm93biBieSBwaXBlVG8nKTsKLQot
ICBjb25zdCB0aGlzVmFsdWUgPSB7Ci0gICAgcGlwZVRvKCkgewotICAgICAgYXNzZXJ0X3VucmVh
Y2hlZCgncGlwZVRvIHNob3VsZCBub3QgYmUgY2FsbGVkJyk7Ci0gICAgfQotICB9OwotCi0gIGNv
bnN0IHRocm93aW5nV3JpdGFibGUgPSB7Ci0gICAgcmVhZGFibGU6IHt9LAotICAgIGdldCB3cml0
YWJsZSgpIHsKLSAgICAgIHRocm93IGVycm9yOwotICAgIH0KLSAgfTsKLSAgYXNzZXJ0X3Rocm93
cyhlcnJvciwKLSAgICAoKSA9PiBSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUucGlwZVRocm91Z2gu
Y2FsbCh0aGlzVmFsdWUsIHRocm93aW5nV3JpdGFibGUsIHt9KSwKLSAgICAncGlwZVRocm91Z2gg
c2hvdWxkIHJldGhyb3cgdGhlIGVycm9yIHRocm93biBieSB0aGUgd3JpdGFibGUgZ2V0dGVyJyk7
Ci0KLSAgY29uc3QgdGhyb3dpbmdSZWFkYWJsZSA9IHsKLSAgICBnZXQgcmVhZGFibGUoKSB7Ci0g
ICAgICB0aHJvdyBlcnJvcjsKLSAgICB9LAotICAgIHdyaXRhYmxlOiB7fQotICB9OwotICBhc3Nl
cnRfdGhyb3dzKGVycm9yLAotICAgICgpID0+IFJlYWRhYmxlU3RyZWFtLnByb3RvdHlwZS5waXBl
VGhyb3VnaC5jYWxsKHRoaXNWYWx1ZSwgdGhyb3dpbmdSZWFkYWJsZSwge30pLAotICAgICdwaXBl
VGhyb3VnaCBzaG91bGQgcmV0aHJvdyB0aGUgZXJyb3IgdGhyb3duIGJ5IHRoZSByZWFkYWJsZSBn
ZXR0ZXInKTsKLQotfSwgJ3BpcGVUaHJvdWdoIHNob3VsZCByZXRocm93IGVycm9ycyBmcm9tIGFj
Y2Vzc2luZyBwaXBlVG8sIHJlYWRhYmxlLCBvciB3cml0YWJsZScpOwotCi10ZXN0KCgpID0+IHsK
LQotICBsZXQgY291bnQgPSAwOwotICBjb25zdCB0aGlzVmFsdWUgPSB7Ci0gICAgcGlwZVRvKCkg
ewotICAgICAgKytjb3VudDsKLSAgICB9Ci0gIH07Ci0KLSAgUmVhZGFibGVTdHJlYW0ucHJvdG90
eXBlLnBpcGVUaHJvdWdoLmNhbGwodGhpc1ZhbHVlLCB7IHJlYWRhYmxlOiB7fSwgd3JpdGFibGU6
IHt9IH0pOwotCi0gIGFzc2VydF9lcXVhbHMoY291bnQsIDEsICdwaXBlVG8gd2FzIGNhbGxlZCBv
bmNlJyk7Ci0KLX0sICdwaXBlVGhyb3VnaCBzaG91bGQgd29yayB3aXRoIG5vIG9wdGlvbnMgYXJn
dW1lbnQnKTsKLQotZG9uZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9waXBlLXRocm91Z2guc2VydmljZXdv
cmtlci5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL3BpcGUtdGhyb3VnaC5zZXJ2aWNld29ya2VyLmh0
dHBzLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWExMzRkNTk1
MDljY2M1NjYyOTdiNjRlMDdmMDY0YmQ3NDNiMDg4NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL3BpcGUtdGhyb3VnaC5zZXJ2aWNld29ya2VyLmh0dHBz
LWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLQotUEFTUyBTZXJ2
aWNlIHdvcmtlciB0ZXN0IHNldHVwIAotRkFJTCBQaXBpbmcgdGhyb3VnaCBhIGR1Y2stdHlwZWQg
cGFzcy10aHJvdWdoIHRyYW5zZm9ybSBzdHJlYW0gc2hvdWxkIHdvcmsgQ2FuJ3QgZmluZCB2YXJp
YWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgUGlwaW5nIHRocm91Z2ggYSB0cmFuc2Zvcm0gZXJy
b3JlZCBvbiB0aGUgd3JpdGFibGUgZW5kIGRvZXMgbm90IGNhdXNlIGFuIHVuaGFuZGxlZCBwcm9t
aXNlIHJlamVjdGlvbiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotUEFTUyBw
aXBlVGhyb3VnaCBnZW5lcmljYWxseSBjYWxscyBwaXBlVG8gd2l0aCB0aGUgYXBwcm9wcmlhdGUg
YXJncyAKLUZBSUwgcGlwZVRocm91Z2ggY2FuIGhhbmRsZSBjYWxsaW5nIGEgcGlwZVRvIHRoYXQg
cmV0dXJucyBhIG5vbi1wcm9taXNlIG9iamVjdCBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJs
ZVN0cmVhbQotRkFJTCBwaXBlVGhyb3VnaCBjYW4gaGFuZGxlIGNhbGxpbmcgYSBwaXBlVG8gdGhh
dCByZXR1cm5zIGEgbm9uLXByb21pc2UgdGhlbmFibGUgb2JqZWN0IENhbid0IGZpbmQgdmFyaWFi
bGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIHBpcGVUaHJvdWdoIHNob3VsZCBtYXJrIGEgcmVhbCBw
cm9taXNlIGZyb20gYSBmYWtlIHJlYWRhYmxlIGFzIGhhbmRsZWQgQ2FuJ3QgZmluZCB2YXJpYWJs
ZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgcGlwZVRocm91Z2ggc2hvdWxkIG5vdCBiZSBmb29sZWQg
YnkgYW4gb2JqZWN0IHdob3NlIGluc3RhbmNlb2YgUHJvbWlzZSByZXR1cm5zIHRydWUgQ2FuJ3Qg
ZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLVBBU1MgdW5kZWZpbmVkIHJlYWRhYmxlIG9y
IHdyaXRhYmxlIGFyZ3VtZW50cyBzaG91bGQgY2F1c2UgcGlwZVRocm91Z2ggdG8gdGhyb3cgCi1G
QUlMIGludmFsaWQgYnV0IG5vdCB1bmRlZmluZWQgYXJndW1lbnRzIHNob3VsZCBub3QgY2F1c2Ug
cGlwZVRocm91Z2ggdG8gdGhyb3cgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0K
LVBBU1MgcGlwZVRocm91Z2ggc2hvdWxkIHRocm93IHdoZW4gaXRzIGZpcnN0IGFyZ3VtZW50IGlz
IG5vdCBjb252ZXJ0aWJsZSB0byBhbiBvYmplY3QgCi1QQVNTIHBpcGVUaHJvdWdoIHNob3VsZCB0
aHJvdyB3aGVuICJ0aGlzIiBoYXMgbm8gcGlwZVRvIG1ldGhvZCAKLVBBU1MgcGlwZVRocm91Z2gg
c2hvdWxkIHJldGhyb3cgZXJyb3JzIGZyb20gYWNjZXNzaW5nIHBpcGVUbywgcmVhZGFibGUsIG9y
IHdyaXRhYmxlIAotUEFTUyBwaXBlVGhyb3VnaCBzaG91bGQgd29yayB3aXRoIG5vIG9wdGlvbnMg
YXJndW1lbnQgCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvcGlwZS10aHJvdWdoLnNlcnZpY2V3b3JrZXIuaHR0
cHMuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy9waXBpbmcvcGlwZS10aHJvdWdoLnNlcnZpY2V3b3JrZXIuaHR0cHMuaHRtbApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjEyNjNhMzA4M2YwNGYyNjE0YmQ5NmJjZWRjZGQxNGIy
Y2Y2MTJlZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5n
L3BpcGUtdGhyb3VnaC5zZXJ2aWNld29ya2VyLmh0dHBzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAt
MSwxMiArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTx0
aXRsZT5waXBlLXRocm91Z2guanMgc2VydmljZSB3b3JrZXIgd3JhcHBlciBmaWxlPC90aXRsZT4K
LQotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNj
cmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNj
cmlwdCBzcmM9Ii9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvcmVzb3VyY2VzL3Rlc3Qt
aGVscGVycy5zdWIuanMiPjwvc2NyaXB0PgotCi08c2NyaXB0PgotJ3VzZSBzdHJpY3QnOwotc2Vy
dmljZV93b3JrZXJfdGVzdCgncGlwZS10aHJvdWdoLmpzJywgJ1NlcnZpY2Ugd29ya2VyIHRlc3Qg
c2V0dXAnKTsKLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9waXBlLXRocm91Z2guc2hhcmVkd29y
a2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy9waXBpbmcvcGlwZS10aHJvdWdoLnNoYXJlZHdvcmtlci1leHBlY3RlZC50
eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA5ZDVkMjUwOWQ3ODQ3ZThjZDZmZTY2
MDZhYTYwY2RkMzNhYTQ3NGUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJl
YW1zL3BpcGluZy9waXBlLXRocm91Z2guc2hhcmVkd29ya2VyLWV4cGVjdGVkLnR4dAorKysgL2Rl
di9udWxsCkBAIC0xLDUgKzAsMCBAQAotQ09OU09MRSBNRVNTQUdFOiBSZWZlcmVuY2VFcnJvcjog
Q2FuJ3QgZmluZCB2YXJpYWJsZTogU2hhcmVkV29ya2VyCi0KLUhhcm5lc3MgRXJyb3IgKEZBSUwp
LCBtZXNzYWdlID0gUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IFNoYXJlZFdv
cmtlcgotCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvcGlwZS10aHJvdWdoLnNoYXJlZHdvcmtlci5odG1sIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGlu
Zy9waXBlLXRocm91Z2guc2hhcmVkd29ya2VyLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDQxNjAzZWYwYjcwMjY3MWJhZjk3NDkxYzY3OTdiYTYwNjMzMzhmMGQuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9waXBlLXRocm91Z2guc2hh
cmVkd29ya2VyLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi08IURPQ1RZUEUg
aHRtbD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTx0aXRsZT5waXBlLXRocm91Z2guanMgc2hh
cmVkIHdvcmtlciB3cmFwcGVyIGZpbGU8L3RpdGxlPgotCi08c2NyaXB0IHNyYz0iL3Jlc291cmNl
cy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0
aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci0KLTxzY3JpcHQ+Ci0ndXNlIHN0cmljdCc7Ci1m
ZXRjaF90ZXN0c19mcm9tX3dvcmtlcihuZXcgU2hhcmVkV29ya2VyKCdwaXBlLXRocm91Z2guanMn
KSk7Ci08L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvdGhlbi1pbnRlcmNlcHRpb24uYW55LWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy9waXBpbmcvdGhlbi1pbnRlcmNlcHRpb24uYW55LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5jOGE2Y2FhZDMyNjliNWY1MTI4OGFhYzBlZTdkNmYxZjgzNGQ0NjJmCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
L3BpcGluZy90aGVuLWludGVyY2VwdGlvbi5hbnktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNyBA
QAorQ09OU09MRSBNRVNTQUdFOiBVbmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rpb246IFR5cGVFcnJv
cjogQXR0ZW1wdGVkIHRvIGFzc2lnbiB0byByZWFkb25seSBwcm9wZXJ0eS4KKworSGFybmVzcyBF
cnJvciAoRkFJTCksIG1lc3NhZ2UgPSBVbmhhbmRsZWQgcmVqZWN0aW9uOiBBdHRlbXB0ZWQgdG8g
YXNzaWduIHRvIHJlYWRvbmx5IHByb3BlcnR5LgorCitUSU1FT1VUIHBpcGluZyBzaG91bGQgbm90
IGJlIG9ic2VydmFibGUgVGVzdCB0aW1lZCBvdXQKK05PVFJVTiB0ZWUgc2hvdWxkIG5vdCBiZSBv
YnNlcnZhYmxlIAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL3RoZW4taW50ZXJjZXB0aW9uLmFueS5odG1sIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGlu
Zy90aGVuLWludGVyY2VwdGlvbi5hbnkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMzgyOTEzNTI4ZTY5M2Iz
YTVkNTZjNjYwYTQ1MDYwOTgwYjU0OGMzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy90aGVuLWludGVy
Y2VwdGlvbi5hbnkuaHRtbApAQCAtMCwwICsxIEBACis8IS0tIFRoaXMgZmlsZSBpcyByZXF1aXJl
ZCBmb3IgV2ViS2l0IHRlc3QgaW5mcmFzdHJ1Y3R1cmUgdG8gcnVuIHRoZSB0ZW1wbGF0ZWQgdGVz
dCAtLT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL3RoZW4taW50
ZXJjZXB0aW9uLmFueS5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy9waXBpbmcvdGhlbi1pbnRlcmNlcHRpb24uYW55LmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
Ljg0OGJiNWFmZmQ4NzA4MDA3N2MyNzI5ZDkxOTQzZTI4M2YzZTBjOGUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
cGlwaW5nL3RoZW4taW50ZXJjZXB0aW9uLmFueS5qcwpAQCAtMCwwICsxLDYyIEBACisvLyBNRVRB
OiBnbG9iYWw9d2luZG93LHdvcmtlcixqc3NoZWxsCisvLyBNRVRBOiBzY3JpcHQ9Li4vcmVzb3Vy
Y2VzL3Rlc3QtdXRpbHMuanMKKy8vIE1FVEE6IHNjcmlwdD0uLi9yZXNvdXJjZXMvcmVjb3JkaW5n
LXN0cmVhbXMuanMKKyd1c2Ugc3RyaWN0JzsKKworZnVuY3Rpb24gaW50ZXJjZXB0VGhlbigpIHsK
KyAgY29uc3QgaW50ZXJjZXB0ZWQgPSBbXTsKKyAgY29uc3QgY2FsbENvdW50ID0gMDsKKyAgT2Jq
ZWN0LnByb3RvdHlwZS50aGVuID0gZnVuY3Rpb24ocmVzb2x2ZXIpIHsKKyAgICBpZiAoIXRoaXMu
ZG9uZSkgeworICAgICAgaW50ZXJjZXB0ZWQucHVzaCh0aGlzLnZhbHVlKTsKKyAgICB9CisgICAg
Y29uc3QgcmV0dmFsID0gT2JqZWN0LmNyZWF0ZShudWxsKTsKKyAgICByZXR2YWwuZG9uZSA9ICsr
Y2FsbENvdW50ID09PSAzOworICAgIHJldHZhbC52YWx1ZSA9IGNhbGxDb3VudDsKKyAgICByZXNv
bHZlcihyZXR2YWwpOworICAgIGlmIChyZXR2YWwuZG9uZSkgeworICAgICAgZGVsZXRlIE9iamVj
dC5wcm90b3R5cGUudGhlbjsKKyAgICB9CisgIH0KKyAgcmV0dXJuIGludGVyY2VwdGVkOworfQor
Citwcm9taXNlX3Rlc3QoYXN5bmMgKCkgPT4geworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0
cmVhbSh7CisgICAgc3RhcnQoY29udHJvbGxlcikgeworICAgICAgY29udHJvbGxlci5lbnF1ZXVl
KCdhJyk7CisgICAgICBjb250cm9sbGVyLmNsb3NlKCk7CisgICAgfQorICB9KTsKKyAgY29uc3Qg
d3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSgpOworCisgIGNvbnN0IGludGVyY2VwdGVkID0g
aW50ZXJjZXB0VGhlbigpOworCisgIGF3YWl0IHJzLnBpcGVUbyh3cyk7CisgIGRlbGV0ZSBPYmpl
Y3QucHJvdG90eXBlLnRoZW47CisKKworICBhc3NlcnRfYXJyYXlfZXF1YWxzKGludGVyY2VwdGVk
LCBbXSwgJ25vdGhpbmcgc2hvdWxkIGhhdmUgYmVlbiBpbnRlcmNlcHRlZCcpOworICBhc3NlcnRf
YXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWyd3cml0ZScsICdhJywgJ2Nsb3NlJ10sICd3cml0dGVu
IGNodW5rIHNob3VsZCBiZSAiYSInKTsKK30sICdwaXBpbmcgc2hvdWxkIG5vdCBiZSBvYnNlcnZh
YmxlJyk7CisKK3Byb21pc2VfdGVzdChhc3luYyAoKSA9PiB7CisgIGNvbnN0IHJzID0gbmV3IFJl
YWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjb250cm9sbGVyKSB7CisgICAgICBjb250cm9sbGVy
LmVucXVldWUoJ2EnKTsKKyAgICAgIGNvbnRyb2xsZXIuY2xvc2UoKTsKKyAgICB9CisgIH0pOwor
ICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKCk7CisKKyAgY29uc3QgWyBicmFu
Y2gxLCBicmFuY2gyIF0gPSBycy50ZWUoKTsKKworICBjb25zdCBpbnRlcmNlcHRlZCA9IGludGVy
Y2VwdFRoZW4oKTsKKworICBhd2FpdCBicmFuY2gxLnBpcGVUbyh3cyk7CisgIGRlbGV0ZSBPYmpl
Y3QucHJvdG90eXBlLnRoZW47CisgIGJyYW5jaDIuY2FuY2VsKCk7CisKKyAgYXNzZXJ0X2FycmF5
X2VxdWFscyhpbnRlcmNlcHRlZCwgW10sICdub3RoaW5nIHNob3VsZCBoYXZlIGJlZW4gaW50ZXJj
ZXB0ZWQnKTsKKyAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsnd3JpdGUnLCAnYScs
ICdjbG9zZSddLCAnd3JpdHRlbiBjaHVuayBzaG91bGQgYmUgImEiJyk7Cit9LCAndGVlIHNob3Vs
ZCBub3QgYmUgb2JzZXJ2YWJsZScpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy90aGVuLWludGVyY2VwdGlvbi5h
bnkud29ya2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvdGhlbi1pbnRlcmNlcHRpb24uYW55Lndvcmtlci1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmZmZmYzYmJjNjk5ZDlhODZiMzc1ZmQyOWZiNGNjMGUz
M2FiNTM0NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvdGhlbi1pbnRlcmNlcHRpb24uYW55Lndvcmtl
ci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0IEBACisKK0ZBSUwgcGlwaW5nIHNob3VsZCBub3Qg
YmUgb2JzZXJ2YWJsZSBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1
ZTogb2JqZWN0ICJSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVT
dHJlYW0iCitGQUlMIHRlZSBzaG91bGQgbm90IGJlIG9ic2VydmFibGUgcHJvbWlzZV90ZXN0OiBV
bmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiUmVmZXJlbmNlRXJyb3I6IENh
bid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtIgorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL3RoZW4t
aW50ZXJjZXB0aW9uLmFueS53b3JrZXIuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvdGhlbi1pbnRlcmNlcHRpb24uYW55Lndv
cmtlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzODI5MTM1MjhlNjkzYjNhNWQ1NmM2NjBhNDUwNjA5ODBi
NTQ4YzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL3RoZW4taW50ZXJjZXB0aW9uLmFueS53b3JrZXIu
aHRtbApAQCAtMCwwICsxIEBACis8IS0tIFRoaXMgZmlsZSBpcyByZXF1aXJlZCBmb3IgV2ViS2l0
IHRlc3QgaW5mcmFzdHJ1Y3R1cmUgdG8gcnVuIHRoZSB0ZW1wbGF0ZWQgdGVzdCAtLT4KXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL3Rocm93aW5nLW9wdGlvbnMuYW55
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy9waXBpbmcvdGhyb3dpbmctb3B0aW9ucy5hbnktZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjE2YzVjNWE3MDJmZmRmYjU3MjdiNzQ2M2I3OWRhOGRmOWM5OTg5MjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMvcGlwaW5nL3Rocm93aW5nLW9wdGlvbnMuYW55LWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDIwIEBACisKK0hhcm5lc3MgRXJyb3IgKFRJTUVPVVQpLCBtZXNzYWdlID0gbnVsbAorCitGQUlM
IHBpcGVUbyBzaG91bGQgc3RvcCBhZnRlciBnZXR0aW5nIHByZXZlbnRBYm9ydCB0aHJvd3MgcHJl
dmVudEFib3J0CitGQUlMIHBpcGVUaHJvdWdoIHNob3VsZCBzdG9wIGFmdGVyIGdldHRpbmcgcHJl
dmVudEFib3J0IHRocm93cyBhc3NlcnRfdGhyb3dzX2pzOiBwaXBlVGhyb3VnaCBzaG91bGQgdGhy
b3cgZnVuY3Rpb24gIigpID0+IG5ldyBSZWFkYWJsZVN0cmVhbSgpLnBpcGVUaHJvdWdoKG5ldyBU
cmFuc2Zvcm1TdHJlYW0oKSwgb3B0aW9ucykiIHRocmV3IG9iamVjdCAiUmVmZXJlbmNlRXJyb3I6
IENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbSIgKCJSZWZlcmVuY2VFcnJvciIp
IGV4cGVjdGVkIGluc3RhbmNlIG9mIGZ1bmN0aW9uICJmdW5jdGlvbiBFcnJvcigpIHsKKyAgICBb
bmF0aXZlIGNvZGVdCit9IiAoIkVycm9yIikKK0ZBSUwgcGlwZVRvIHNob3VsZCBzdG9wIGFmdGVy
IGdldHRpbmcgcHJldmVudENhbmNlbCB0aHJvd3MgcHJldmVudENhbmNlbAorRkFJTCBwaXBlVGhy
b3VnaCBzaG91bGQgc3RvcCBhZnRlciBnZXR0aW5nIHByZXZlbnRDYW5jZWwgdGhyb3dzIGFzc2Vy
dF90aHJvd3NfanM6IHBpcGVUaHJvdWdoIHNob3VsZCB0aHJvdyBmdW5jdGlvbiAiKCkgPT4gbmV3
IFJlYWRhYmxlU3RyZWFtKCkucGlwZVRocm91Z2gobmV3IFRyYW5zZm9ybVN0cmVhbSgpLCBvcHRp
b25zKSIgdGhyZXcgb2JqZWN0ICJSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTog
VHJhbnNmb3JtU3RyZWFtIiAoIlJlZmVyZW5jZUVycm9yIikgZXhwZWN0ZWQgaW5zdGFuY2Ugb2Yg
ZnVuY3Rpb24gImZ1bmN0aW9uIEVycm9yKCkgeworICAgIFtuYXRpdmUgY29kZV0KK30iICgiRXJy
b3IiKQorRkFJTCBwaXBlVG8gc2hvdWxkIHN0b3AgYWZ0ZXIgZ2V0dGluZyBwcmV2ZW50Q2xvc2Ug
dGhyb3dzIHByZXZlbnRDbG9zZQorRkFJTCBwaXBlVGhyb3VnaCBzaG91bGQgc3RvcCBhZnRlciBn
ZXR0aW5nIHByZXZlbnRDbG9zZSB0aHJvd3MgYXNzZXJ0X3Rocm93c19qczogcGlwZVRocm91Z2gg
c2hvdWxkIHRocm93IGZ1bmN0aW9uICIoKSA9PiBuZXcgUmVhZGFibGVTdHJlYW0oKS5waXBlVGhy
b3VnaChuZXcgVHJhbnNmb3JtU3RyZWFtKCksIG9wdGlvbnMpIiB0aHJldyBvYmplY3QgIlJlZmVy
ZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0iICgiUmVmZXJl
bmNlRXJyb3IiKSBleHBlY3RlZCBpbnN0YW5jZSBvZiBmdW5jdGlvbiAiZnVuY3Rpb24gRXJyb3Io
KSB7CisgICAgW25hdGl2ZSBjb2RlXQorfSIgKCJFcnJvciIpCitUSU1FT1VUIHBpcGVUbyBzaG91
bGQgc3RvcCBhZnRlciBnZXR0aW5nIHNpZ25hbCB0aHJvd3MgVGVzdCB0aW1lZCBvdXQKK0ZBSUwg
cGlwZVRocm91Z2ggc2hvdWxkIHN0b3AgYWZ0ZXIgZ2V0dGluZyBzaWduYWwgdGhyb3dzIGFzc2Vy
dF90aHJvd3NfanM6IHBpcGVUaHJvdWdoIHNob3VsZCB0aHJvdyBmdW5jdGlvbiAiKCkgPT4gbmV3
IFJlYWRhYmxlU3RyZWFtKCkucGlwZVRocm91Z2gobmV3IFRyYW5zZm9ybVN0cmVhbSgpLCBvcHRp
b25zKSIgdGhyZXcgb2JqZWN0ICJSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTog
VHJhbnNmb3JtU3RyZWFtIiAoIlJlZmVyZW5jZUVycm9yIikgZXhwZWN0ZWQgaW5zdGFuY2Ugb2Yg
ZnVuY3Rpb24gImZ1bmN0aW9uIEVycm9yKCkgeworICAgIFtuYXRpdmUgY29kZV0KK30iICgiRXJy
b3IiKQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMvcGlwaW5nL3Rocm93aW5nLW9wdGlvbnMuYW55Lmh0bWwgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL3Rocm93
aW5nLW9wdGlvbnMuYW55Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjM4MjkxMzUyOGU2OTNiM2E1ZDU2YzY2
MGE0NTA2MDk4MGI1NDhjMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvdGhyb3dpbmctb3B0aW9ucy5h
bnkuaHRtbApAQCAtMCwwICsxIEBACis8IS0tIFRoaXMgZmlsZSBpcyByZXF1aXJlZCBmb3IgV2Vi
S2l0IHRlc3QgaW5mcmFzdHJ1Y3R1cmUgdG8gcnVuIHRoZSB0ZW1wbGF0ZWQgdGVzdCAtLT4KXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL3Rocm93aW5nLW9wdGlvbnMu
YW55LmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJl
YW1zL3BpcGluZy90aHJvd2luZy1vcHRpb25zLmFueS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYzFjZjMyOGRh
NjFlNjFhODRjYWEwMWEzNzQzNWJmOWZiYzQ2YjliCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy90aHJv
d2luZy1vcHRpb25zLmFueS5qcwpAQCAtMCwwICsxLDY1IEBACisvLyBNRVRBOiBnbG9iYWw9d2lu
ZG93LHdvcmtlcixqc3NoZWxsCisndXNlIHN0cmljdCc7CisKK2NsYXNzIFRocm93aW5nT3B0aW9u
cyB7CisgIGNvbnN0cnVjdG9yKHdoYXRTaG91bGRUaHJvdykgeworICAgIHRoaXMud2hhdFNob3Vs
ZFRocm93ID0gd2hhdFNob3VsZFRocm93OworICAgIHRoaXMudG91Y2hlZCA9IFtdOworICB9CisK
KyAgZ2V0IHByZXZlbnRDbG9zZSgpIHsKKyAgICB0aGlzLm1heWJlVGhyb3coJ3ByZXZlbnRDbG9z
ZScpOworICAgIHJldHVybiBmYWxzZTsKKyAgfQorCisgIGdldCBwcmV2ZW50QWJvcnQoKSB7Cisg
ICAgdGhpcy5tYXliZVRocm93KCdwcmV2ZW50QWJvcnQnKTsKKyAgICByZXR1cm4gZmFsc2U7Cisg
IH0KKworICBnZXQgcHJldmVudENhbmNlbCgpIHsKKyAgICB0aGlzLm1heWJlVGhyb3coJ3ByZXZl
bnRDYW5jZWwnKTsKKyAgICByZXR1cm4gZmFsc2U7CisgIH0KKworICBnZXQgc2lnbmFsKCkgewor
ICAgIHRoaXMubWF5YmVUaHJvdygnc2lnbmFsJyk7CisgICAgcmV0dXJuIHVuZGVmaW5lZDsKKyAg
fQorCisgIG1heWJlVGhyb3coZm9yV2hhdCkgeworICAgIHRoaXMudG91Y2hlZC5wdXNoKGZvcldo
YXQpOworICAgIGlmICh0aGlzLndoYXRTaG91bGRUaHJvdyA9PT0gZm9yV2hhdCkgeworICAgICAg
dGhyb3cgbmV3IEVycm9yKHRoaXMud2hhdFNob3VsZFRocm93KTsKKyAgICB9CisgIH0KK30KKwor
Y29uc3QgY2hlY2tPcmRlciA9IFsncHJldmVudEFib3J0JywgJ3ByZXZlbnRDYW5jZWwnLCAncHJl
dmVudENsb3NlJywgJ3NpZ25hbCddOworCitmb3IgKGxldCBpID0gMDsgaSA8IGNoZWNrT3JkZXIu
bGVuZ3RoOyArK2kpIHsKKyAgY29uc3Qgd2hhdFNob3VsZFRocm93ID0gY2hlY2tPcmRlcltpXTsK
KyAgY29uc3Qgd2hhdFNob3VsZEJlVG91Y2hlZCA9IGNoZWNrT3JkZXIuc2xpY2UoMCwgaSArIDEp
OworCisgIHByb21pc2VfdGVzdCh0ID0+IHsKKyAgICBjb25zdCBvcHRpb25zID0gbmV3IFRocm93
aW5nT3B0aW9ucyh3aGF0U2hvdWxkVGhyb3cpOworICAgIHJldHVybiBwcm9taXNlX3JlamVjdHNf
anMoCisgICAgICAgICAgICAgICB0LCBFcnJvciwKKyAgICAgICAgICAgICAgIG5ldyBSZWFkYWJs
ZVN0cmVhbSgpLnBpcGVUbyhuZXcgV3JpdGFibGVTdHJlYW0oKSwgb3B0aW9ucyksCisgICAgICAg
ICAgICAgICAncGlwZVRvIHNob3VsZCByZWplY3QnKQorICAgICAgICAudGhlbigoKSA9PiBhc3Nl
cnRfYXJyYXlfZXF1YWxzKAorICAgICAgICAgICAgb3B0aW9ucy50b3VjaGVkLCB3aGF0U2hvdWxk
QmVUb3VjaGVkLAorICAgICAgICAgICAgJ29wdGlvbnMgc2hvdWxkIGJlIHRvdWNoZWQgaW4gdGhl
IHJpZ2h0IG9yZGVyJykpOworICB9LCBgcGlwZVRvIHNob3VsZCBzdG9wIGFmdGVyIGdldHRpbmcg
JHt3aGF0U2hvdWxkVGhyb3d9IHRocm93c2ApOworCisgIHRlc3QoKCkgPT4geworICAgIGNvbnN0
IG9wdGlvbnMgPSBuZXcgVGhyb3dpbmdPcHRpb25zKHdoYXRTaG91bGRUaHJvdyk7CisgICAgYXNz
ZXJ0X3Rocm93c19qcygKKyAgICAgICAgRXJyb3IsCisgICAgICAgICgpID0+IG5ldyBSZWFkYWJs
ZVN0cmVhbSgpLnBpcGVUaHJvdWdoKG5ldyBUcmFuc2Zvcm1TdHJlYW0oKSwgb3B0aW9ucyksCisg
ICAgICAgICdwaXBlVGhyb3VnaCBzaG91bGQgdGhyb3cnKTsKKyAgICBhc3NlcnRfYXJyYXlfZXF1
YWxzKAorICAgICAgICBvcHRpb25zLnRvdWNoZWQsIHdoYXRTaG91bGRCZVRvdWNoZWQsCisgICAg
ICAgICdvcHRpb25zIHNob3VsZCBiZSB0b3VjaGVkIGluIHRoZSByaWdodCBvcmRlcicpOworICB9
LCBgcGlwZVRocm91Z2ggc2hvdWxkIHN0b3AgYWZ0ZXIgZ2V0dGluZyAke3doYXRTaG91bGRUaHJv
d30gdGhyb3dzYCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL3Rocm93aW5nLW9wdGlvbnMuYW55Lndvcmtl
ci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3N0cmVhbXMvcGlwaW5nL3Rocm93aW5nLW9wdGlvbnMuYW55Lndvcmtlci1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZTA1MjkwYTE2ZmFiOTJjZDUzZTc2MzI2N2RmZTI1N2NmNDkxNGFkNAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy9waXBpbmcvdGhyb3dpbmctb3B0aW9ucy5hbnkud29ya2VyLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDE4IEBACisKK0ZBSUwgcGlwZVRvIHNob3VsZCBzdG9wIGFmdGVyIGdl
dHRpbmcgcHJldmVudEFib3J0IHRocm93cyBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0
cmVhbQorRkFJTCBwaXBlVGhyb3VnaCBzaG91bGQgc3RvcCBhZnRlciBnZXR0aW5nIHByZXZlbnRB
Ym9ydCB0aHJvd3MgYXNzZXJ0X3Rocm93c19qczogcGlwZVRocm91Z2ggc2hvdWxkIHRocm93IGZ1
bmN0aW9uICIoKSA9PiBuZXcgUmVhZGFibGVTdHJlYW0oKS5waXBlVGhyb3VnaChuZXcgVHJhbnNm
b3JtU3RyZWFtKCksIG9wdGlvbnMpIiB0aHJldyBvYmplY3QgIlJlZmVyZW5jZUVycm9yOiBDYW4n
dCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0iICgiUmVmZXJlbmNlRXJyb3IiKSBleHBl
Y3RlZCBpbnN0YW5jZSBvZiBmdW5jdGlvbiAiZnVuY3Rpb24gRXJyb3IoKSB7CisgICAgW25hdGl2
ZSBjb2RlXQorfSIgKCJFcnJvciIpCitGQUlMIHBpcGVUbyBzaG91bGQgc3RvcCBhZnRlciBnZXR0
aW5nIHByZXZlbnRDYW5jZWwgdGhyb3dzIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3Ry
ZWFtCitGQUlMIHBpcGVUaHJvdWdoIHNob3VsZCBzdG9wIGFmdGVyIGdldHRpbmcgcHJldmVudENh
bmNlbCB0aHJvd3MgYXNzZXJ0X3Rocm93c19qczogcGlwZVRocm91Z2ggc2hvdWxkIHRocm93IGZ1
bmN0aW9uICIoKSA9PiBuZXcgUmVhZGFibGVTdHJlYW0oKS5waXBlVGhyb3VnaChuZXcgVHJhbnNm
b3JtU3RyZWFtKCksIG9wdGlvbnMpIiB0aHJldyBvYmplY3QgIlJlZmVyZW5jZUVycm9yOiBDYW4n
dCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0iICgiUmVmZXJlbmNlRXJyb3IiKSBleHBl
Y3RlZCBpbnN0YW5jZSBvZiBmdW5jdGlvbiAiZnVuY3Rpb24gRXJyb3IoKSB7CisgICAgW25hdGl2
ZSBjb2RlXQorfSIgKCJFcnJvciIpCitGQUlMIHBpcGVUbyBzaG91bGQgc3RvcCBhZnRlciBnZXR0
aW5nIHByZXZlbnRDbG9zZSB0aHJvd3MgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJl
YW0KK0ZBSUwgcGlwZVRocm91Z2ggc2hvdWxkIHN0b3AgYWZ0ZXIgZ2V0dGluZyBwcmV2ZW50Q2xv
c2UgdGhyb3dzIGFzc2VydF90aHJvd3NfanM6IHBpcGVUaHJvdWdoIHNob3VsZCB0aHJvdyBmdW5j
dGlvbiAiKCkgPT4gbmV3IFJlYWRhYmxlU3RyZWFtKCkucGlwZVRocm91Z2gobmV3IFRyYW5zZm9y
bVN0cmVhbSgpLCBvcHRpb25zKSIgdGhyZXcgb2JqZWN0ICJSZWZlcmVuY2VFcnJvcjogQ2FuJ3Qg
ZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtIiAoIlJlZmVyZW5jZUVycm9yIikgZXhwZWN0
ZWQgaW5zdGFuY2Ugb2YgZnVuY3Rpb24gImZ1bmN0aW9uIEVycm9yKCkgeworICAgIFtuYXRpdmUg
Y29kZV0KK30iICgiRXJyb3IiKQorRkFJTCBwaXBlVG8gc2hvdWxkIHN0b3AgYWZ0ZXIgZ2V0dGlu
ZyBzaWduYWwgdGhyb3dzIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlM
IHBpcGVUaHJvdWdoIHNob3VsZCBzdG9wIGFmdGVyIGdldHRpbmcgc2lnbmFsIHRocm93cyBhc3Nl
cnRfdGhyb3dzX2pzOiBwaXBlVGhyb3VnaCBzaG91bGQgdGhyb3cgZnVuY3Rpb24gIigpID0+IG5l
dyBSZWFkYWJsZVN0cmVhbSgpLnBpcGVUaHJvdWdoKG5ldyBUcmFuc2Zvcm1TdHJlYW0oKSwgb3B0
aW9ucykiIHRocmV3IG9iamVjdCAiUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6
IFRyYW5zZm9ybVN0cmVhbSIgKCJSZWZlcmVuY2VFcnJvciIpIGV4cGVjdGVkIGluc3RhbmNlIG9m
IGZ1bmN0aW9uICJmdW5jdGlvbiBFcnJvcigpIHsKKyAgICBbbmF0aXZlIGNvZGVdCit9IiAoIkVy
cm9yIikKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zdHJlYW1zL3BpcGluZy90aHJvd2luZy1vcHRpb25zLmFueS53b3JrZXIuaHRtbCBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBp
bmcvdGhyb3dpbmctb3B0aW9ucy5hbnkud29ya2VyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjM4MjkxMzUy
OGU2OTNiM2E1ZDU2YzY2MGE0NTA2MDk4MGI1NDhjMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvdGhy
b3dpbmctb3B0aW9ucy5hbnkud29ya2VyLmh0bWwKQEAgLTAsMCArMSBAQAorPCEtLSBUaGlzIGZp
bGUgaXMgcmVxdWlyZWQgZm9yIFdlYktpdCB0ZXN0IGluZnJhc3RydWN0dXJlIHRvIHJ1biB0aGUg
dGVtcGxhdGVkIHRlc3QgLS0+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3Bp
cGluZy90cmFuc2Zvcm0tc3RyZWFtcy5hbnktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy90cmFuc2Zvcm0tc3Ry
ZWFtcy5hbnktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM5YmYxMzJmODk1MDg1YWY0Zjk2ODYx
MWYyMWZjYTRhOWI0OTIxNGEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL3RyYW5zZm9ybS1zdHJlYW1z
LmFueS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACisKK0ZBSUwgUGlwaW5nIHRocm91Z2gg
YW4gaWRlbnRpdHkgdHJhbnNmb3JtIHN0cmVhbSBzaG91bGQgY2xvc2UgdGhlIGRlc3RpbmF0aW9u
IHdoZW4gdGhlIHNvdXJjZSBjbG9zZXMgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3Ry
ZWFtCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy9waXBpbmcvdHJhbnNmb3JtLXN0cmVhbXMuYW55Lmh0bWwgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL3RyYW5z
Zm9ybS1zdHJlYW1zLmFueS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzODI5MTM1MjhlNjkzYjNhNWQ1NmM2
NjBhNDUwNjA5ODBiNTQ4YzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL3RyYW5zZm9ybS1zdHJlYW1z
LmFueS5odG1sCkBAIC0wLDAgKzEgQEAKKzwhLS0gVGhpcyBmaWxlIGlzIHJlcXVpcmVkIGZvciBX
ZWJLaXQgdGVzdCBpbmZyYXN0cnVjdHVyZSB0byBydW4gdGhlIHRlbXBsYXRlZCB0ZXN0IC0tPgpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvdHJhbnNmb3JtLXN0cmVh
bXMuYW55LmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
dHJlYW1zL3BpcGluZy90cmFuc2Zvcm0tc3RyZWFtcy5hbnkuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTM2OGZl
Y2Q2ZjAwZDZhMzhjODY1YjBiNmM1MjQxMWU3NjNhOGJiYgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcv
dHJhbnNmb3JtLXN0cmVhbXMuYW55LmpzCkBAIC0wLDAgKzEsMjIgQEAKKy8vIE1FVEE6IGdsb2Jh
bD13aW5kb3csd29ya2VyLGpzc2hlbGwKKyd1c2Ugc3RyaWN0JzsKKworcHJvbWlzZV90ZXN0KCgp
ID0+IHsKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsK
KyAgICAgIGMuZW5xdWV1ZSgnYScpOworICAgICAgYy5lbnF1ZXVlKCdiJyk7CisgICAgICBjLmVu
cXVldWUoJ2MnKTsKKyAgICAgIGMuY2xvc2UoKTsKKyAgICB9CisgIH0pOworCisgIGNvbnN0IHRz
ID0gbmV3IFRyYW5zZm9ybVN0cmVhbSgpOworCisgIGNvbnN0IHdzID0gbmV3IFdyaXRhYmxlU3Ry
ZWFtKCk7CisKKyAgcmV0dXJuIHJzLnBpcGVUaHJvdWdoKHRzKS5waXBlVG8od3MpLnRoZW4oKCkg
PT4geworICAgIGNvbnN0IHdyaXRlciA9IHdzLmdldFdyaXRlcigpOworICAgIHJldHVybiB3cml0
ZXIuY2xvc2VkOworICB9KTsKK30sICdQaXBpbmcgdGhyb3VnaCBhbiBpZGVudGl0eSB0cmFuc2Zv
cm0gc3RyZWFtIHNob3VsZCBjbG9zZSB0aGUgZGVzdGluYXRpb24gd2hlbiB0aGUgc291cmNlIGNs
b3NlcycpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zdHJlYW1zL3BpcGluZy90cmFuc2Zvcm0tc3RyZWFtcy5hbnkud29ya2VyLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy9waXBpbmcvdHJhbnNmb3JtLXN0cmVhbXMuYW55Lndvcmtlci1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMzliZjEzMmY4OTUwODVhZjRmOTY4NjExZjIxZmNhNGE5YjQ5MjE0YQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy9waXBpbmcvdHJhbnNmb3JtLXN0cmVhbXMuYW55Lndvcmtlci1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwzIEBACisKK0ZBSUwgUGlwaW5nIHRocm91Z2ggYW4gaWRlbnRpdHkgdHJhbnNm
b3JtIHN0cmVhbSBzaG91bGQgY2xvc2UgdGhlIGRlc3RpbmF0aW9uIHdoZW4gdGhlIHNvdXJjZSBj
bG9zZXMgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBp
bmcvdHJhbnNmb3JtLXN0cmVhbXMuYW55Lndvcmtlci5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy90cmFuc2Zvcm0tc3RyZWFt
cy5hbnkud29ya2VyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjM4MjkxMzUyOGU2OTNiM2E1ZDU2YzY2MGE0
NTA2MDk4MGI1NDhjMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvdHJhbnNmb3JtLXN0cmVhbXMuYW55
Lndvcmtlci5odG1sCkBAIC0wLDAgKzEgQEAKKzwhLS0gVGhpcyBmaWxlIGlzIHJlcXVpcmVkIGZv
ciBXZWJLaXQgdGVzdCBpbmZyYXN0cnVjdHVyZSB0byBydW4gdGhlIHRlbXBsYXRlZCB0ZXN0IC0t
PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvdHJhbnNmb3JtLXN0
cmVhbXMuZGVkaWNhdGVkd29ya2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvdHJhbnNmb3JtLXN0cmVhbXMu
ZGVkaWNhdGVkd29ya2VyLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMzliZjEzMmY4OTUwODVhZjRmOTY4NjExZjIxZmNhNGE5YjQ5MjE0YS4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL3RyYW5zZm9ybS1zdHJlYW1zLmRl
ZGljYXRlZHdvcmtlci1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAK
LQotRkFJTCBQaXBpbmcgdGhyb3VnaCBhbiBpZGVudGl0eSB0cmFuc2Zvcm0gc3RyZWFtIHNob3Vs
ZCBjbG9zZSB0aGUgZGVzdGluYXRpb24gd2hlbiB0aGUgc291cmNlIGNsb3NlcyBDYW4ndCBmaW5k
IHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy90cmFuc2Zvcm0tc3Ry
ZWFtcy5kZWRpY2F0ZWR3b3JrZXIuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvdHJhbnNmb3JtLXN0cmVhbXMuZGVkaWNhdGVk
d29ya2VyLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM0ZjFiZmUyZGZkMjRk
OGVmYTIxNDlkMzE4ZjlmODEyOWVkZWI1ZmIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL3BpcGluZy90cmFuc2Zvcm0tc3RyZWFtcy5kZWRpY2F0ZWR3b3JrZXIuaHRt
bAorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEg
Y2hhcnNldD0idXRmLTgiPgotPHRpdGxlPnRyYW5zZm9ybS1zdHJlYW1zLmpzIGRlZGljYXRlZCB3
b3JrZXIgd3JhcHBlciBmaWxlPC90aXRsZT4KLQotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVz
dGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5l
c3NyZXBvcnQuanMiPjwvc2NyaXB0PgotCi08c2NyaXB0PgotJ3VzZSBzdHJpY3QnOwotZmV0Y2hf
dGVzdHNfZnJvbV93b3JrZXIobmV3IFdvcmtlcigndHJhbnNmb3JtLXN0cmVhbXMuanMnKSk7Ci08
L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvdHJhbnNmb3JtLXN0cmVhbXMuaHRtbCBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvdHJhbnNm
b3JtLXN0cmVhbXMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODIxNDYxOThi
N2RhNWRhMDczOGU4OWNiYThlZDQ3ODMyMmJiMjcxNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL3RyYW5zZm9ybS1zdHJlYW1zLmh0bWwKKysrIC9kZXYv
bnVsbApAQCAtMSwxMCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9InV0
Zi04Ij4KLTx0aXRsZT50cmFuc2Zvcm0tc3RyZWFtcy5qcyBicm93c2VyIGNvbnRleHQgd3JhcHBl
ciBmaWxlPC90aXRsZT4KLQotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMi
Pjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMi
Pjwvc2NyaXB0PgotCi0KLQotPHNjcmlwdCBzcmM9InRyYW5zZm9ybS1zdHJlYW1zLmpzIj48L3Nj
cmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy9waXBpbmcvdHJhbnNmb3JtLXN0cmVhbXMuanMgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL3RyYW5zZm9ybS1z
dHJlYW1zLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZjY4MDRhMjIyN2Q3YTJj
MDU4Njk3ODU0MzdhMDdlODNlYTllNDg3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy9waXBpbmcvdHJhbnNmb3JtLXN0cmVhbXMuanMKKysrIC9kZXYvbnVsbApAQCAt
MSwyNyArMCwwIEBACi0ndXNlIHN0cmljdCc7Ci0KLWlmIChzZWxmLmltcG9ydFNjcmlwdHMpIHsK
LSAgc2VsZi5pbXBvcnRTY3JpcHRzKCcvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzJyk7Ci19Ci0K
LXByb21pc2VfdGVzdCgoKSA9PiB7Ci0gIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsK
LSAgICBzdGFydChjKSB7Ci0gICAgICBjLmVucXVldWUoJ2EnKTsKLSAgICAgIGMuZW5xdWV1ZSgn
YicpOwotICAgICAgYy5lbnF1ZXVlKCdjJyk7Ci0gICAgICBjLmNsb3NlKCk7Ci0gICAgfQotICB9
KTsKLQotICBjb25zdCB0cyA9IG5ldyBUcmFuc2Zvcm1TdHJlYW0oKTsKLQotICBjb25zdCB3cyA9
IG5ldyBXcml0YWJsZVN0cmVhbSgpOwotCi0gIHJldHVybiBycy5waXBlVGhyb3VnaCh0cykucGlw
ZVRvKHdzKS50aGVuKCgpID0+IHsKLSAgICBjb25zdCB3cml0ZXIgPSB3cy5nZXRXcml0ZXIoKTsK
LSAgICByZXR1cm4gd3JpdGVyLmNsb3NlZDsKLSAgfSk7Ci19LCAnUGlwaW5nIHRocm91Z2ggYW4g
aWRlbnRpdHkgdHJhbnNmb3JtIHN0cmVhbSBzaG91bGQgY2xvc2UgdGhlIGRlc3RpbmF0aW9uIHdo
ZW4gdGhlIHNvdXJjZSBjbG9zZXMnKTsKLQotZG9uZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy90cmFuc2Zv
cm0tc3RyZWFtcy5zZXJ2aWNld29ya2VyLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvdHJhbnNmb3Jt
LXN0cmVhbXMuc2VydmljZXdvcmtlci5odHRwcy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDBhZDE4MzM5OGVjNDBkMDA2OGY3M2Q3OTkyMTg4YjEwZjEzMDU3YzMu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy90cmFuc2Zv
cm0tc3RyZWFtcy5zZXJ2aWNld29ya2VyLmh0dHBzLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxs
CkBAIC0xLDQgKzAsMCBAQAotCi1QQVNTIFNlcnZpY2Ugd29ya2VyIHRlc3Qgc2V0dXAgCi1GQUlM
IFBpcGluZyB0aHJvdWdoIGFuIGlkZW50aXR5IHRyYW5zZm9ybSBzdHJlYW0gc2hvdWxkIGNsb3Nl
IHRoZSBkZXN0aW5hdGlvbiB3aGVuIHRoZSBzb3VyY2UgY2xvc2VzIENhbid0IGZpbmQgdmFyaWFi
bGU6IFRyYW5zZm9ybVN0cmVhbQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL3RyYW5zZm9ybS1zdHJlYW1zLnNl
cnZpY2V3b3JrZXIuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvdHJhbnNmb3JtLXN0cmVhbXMuc2VydmljZXdvcmtl
ci5odHRwcy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZDgwNThlZjcwOTZi
MWJkZWI1OWY2NDJkOTA0ZWZlNmI2YzliNjIzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy9waXBpbmcvdHJhbnNmb3JtLXN0cmVhbXMuc2VydmljZXdvcmtlci5odHRw
cy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08
bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08dGl0bGU+dHJhbnNmb3JtLXN0cmVhbXMuanMgc2Vydmlj
ZSB3b3JrZXIgd3JhcHBlciBmaWxlPC90aXRsZT4KLQotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMv
dGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhh
cm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9zZXJ2aWNlLXdvcmtlcnMv
c2VydmljZS13b3JrZXIvcmVzb3VyY2VzL3Rlc3QtaGVscGVycy5zdWIuanMiPjwvc2NyaXB0Pgot
Ci08c2NyaXB0PgotJ3VzZSBzdHJpY3QnOwotc2VydmljZV93b3JrZXJfdGVzdCgndHJhbnNmb3Jt
LXN0cmVhbXMuanMnLCAnU2VydmljZSB3b3JrZXIgdGVzdCBzZXR1cCcpOwotPC9zY3JpcHQ+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMvcGlwaW5nL3RyYW5zZm9ybS1zdHJlYW1zLnNoYXJlZHdvcmtlci1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlw
aW5nL3RyYW5zZm9ybS1zdHJlYW1zLnNoYXJlZHdvcmtlci1leHBlY3RlZC50eHQKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA5ZDVkMjUwOWQ3ODQ3ZThjZDZmZTY2MDZhYTYwY2RkMzNh
YTQ3NGUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy90
cmFuc2Zvcm0tc3RyZWFtcy5zaGFyZWR3b3JrZXItZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwK
QEAgLTEsNSArMCwwIEBACi1DT05TT0xFIE1FU1NBR0U6IFJlZmVyZW5jZUVycm9yOiBDYW4ndCBm
aW5kIHZhcmlhYmxlOiBTaGFyZWRXb3JrZXIKLQotSGFybmVzcyBFcnJvciAoRkFJTCksIG1lc3Nh
Z2UgPSBSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogU2hhcmVkV29ya2VyCi0K
LQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL3BpcGluZy90cmFuc2Zvcm0tc3RyZWFtcy5zaGFyZWR3b3JrZXIuaHRtbCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcv
dHJhbnNmb3JtLXN0cmVhbXMuc2hhcmVkd29ya2VyLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDNmMzExOWIyNDNiOTE3N2EyZWViZWY4NmEzYTU0ZDIwYzUyZWUwZjQuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy90cmFuc2Zvcm0tc3Ry
ZWFtcy5zaGFyZWR3b3JrZXIuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLTwh
RE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHRpdGxlPnRyYW5zZm9ybS1z
dHJlYW1zLmpzIHNoYXJlZCB3b3JrZXIgd3JhcHBlciBmaWxlPC90aXRsZT4KLQotPHNjcmlwdCBz
cmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9y
ZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotCi08c2NyaXB0PgotJ3Vz
ZSBzdHJpY3QnOwotZmV0Y2hfdGVzdHNfZnJvbV93b3JrZXIobmV3IFNoYXJlZFdvcmtlcigndHJh
bnNmb3JtLXN0cmVhbXMuanMnKSk7Ci08L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvdzNjLWltcG9y
dC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvcGlwaW5nL3czYy1pbXBvcnQubG9nCmluZGV4IDVjNDBhNDM3MjQ2ODkzZDg2MDBjNTE3ZTZh
MDQ5MDJmNTI4YTVlN2UuLmVhOTI3NTE5Mjg1MjRlMThhNjE1NDEyZTY4NWVhMzI3MGQ1ZDcwZmYg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy9waXBpbmcvdzNjLWltcG9ydC5sb2cKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy93M2MtaW1wb3J0LmxvZwpAQCAt
MSw3ICsxLDcgQEAKIFRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZy
b20gdGhlIFczQyByZXBvc2l0b3J5LgogRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3Rs
eSBpbiBXZWJLaXQuCiBJbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBn
aXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3czYy93ZWItcGxhdGZvcm0tdGVzdHMKKwlodHRw
czovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAogCiBUaGVuIHJ1biB0aGUgVG9v
bHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAogCkBAIC0x
NCw0OCArMTQsMTUgQEAgUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6
CiBOb25lCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIExpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9jbG9zZS1wcm9wYWdh
dGlvbi1iYWNrd2FyZC5kZWRpY2F0ZWR3b3JrZXIuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvY2xvc2UtcHJvcGFnYXRpb24t
YmFja3dhcmQuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy9waXBpbmcvY2xvc2UtcHJvcGFnYXRpb24tYmFja3dhcmQuanMKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Nsb3Nl
LXByb3BhZ2F0aW9uLWJhY2t3YXJkLnNlcnZpY2V3b3JrZXIuaHR0cHMuaHRtbAotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvY2xvc2Ut
cHJvcGFnYXRpb24tYmFja3dhcmQuc2hhcmVkd29ya2VyLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Nsb3NlLXByb3BhZ2F0
aW9uLWZvcndhcmQuZGVkaWNhdGVkd29ya2VyLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Nsb3NlLXByb3BhZ2F0aW9uLWZv
cndhcmQuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy9waXBpbmcvY2xvc2UtcHJvcGFnYXRpb24tZm9yd2FyZC5qcwotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvY2xvc2UtcHJv
cGFnYXRpb24tZm9yd2FyZC5zZXJ2aWNld29ya2VyLmh0dHBzLmh0bWwKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Nsb3NlLXByb3Bh
Z2F0aW9uLWZvcndhcmQuc2hhcmVkd29ya2VyLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Vycm9yLXByb3BhZ2F0aW9uLWJh
Y2t3YXJkLmRlZGljYXRlZHdvcmtlci5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9lcnJvci1wcm9wYWdhdGlvbi1iYWNrd2Fy
ZC5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJl
YW1zL3BpcGluZy9lcnJvci1wcm9wYWdhdGlvbi1iYWNrd2FyZC5qcwotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvZXJyb3ItcHJvcGFn
YXRpb24tYmFja3dhcmQuc2VydmljZXdvcmtlci5odHRwcy5odG1sCi0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9lcnJvci1wcm9wYWdh
dGlvbi1iYWNrd2FyZC5zaGFyZWR3b3JrZXIuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvZXJyb3ItcHJvcGFnYXRpb24tZm9y
d2FyZC5kZWRpY2F0ZWR3b3JrZXIuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvZXJyb3ItcHJvcGFnYXRpb24tZm9yd2FyZC5o
dG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
L3BpcGluZy9lcnJvci1wcm9wYWdhdGlvbi1mb3J3YXJkLmpzCi0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9lcnJvci1wcm9wYWdhdGlv
bi1mb3J3YXJkLnNlcnZpY2V3b3JrZXIuaHR0cHMuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvZXJyb3ItcHJvcGFnYXRpb24t
Zm9yd2FyZC5zaGFyZWR3b3JrZXIuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvZmxvdy1jb250cm9sLmRlZGljYXRlZHdvcmtl
ci5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJl
YW1zL3BpcGluZy9mbG93LWNvbnRyb2wuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvZmxvdy1jb250cm9sLmpzCi0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9mbG93
LWNvbnRyb2wuc2VydmljZXdvcmtlci5odHRwcy5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9mbG93LWNvbnRyb2wuc2hhcmVk
d29ya2VyLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMvcGlwaW5nL2dlbmVyYWwuZGVkaWNhdGVkd29ya2VyLmh0bWwKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2dlbmVyYWwu
aHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy9waXBpbmcvZ2VuZXJhbC5qcwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvZ2VuZXJhbC5zZXJ2aWNld29ya2VyLmh0dHBzLmh0bWwK
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlw
aW5nL2dlbmVyYWwuc2hhcmVkd29ya2VyLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL211bHRpcGxlLXByb3BhZ2F0aW9uLmRl
ZGljYXRlZHdvcmtlci5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zdHJlYW1zL3BpcGluZy9tdWx0aXBsZS1wcm9wYWdhdGlvbi5odG1sCi0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9tdWx0
aXBsZS1wcm9wYWdhdGlvbi5qcwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvbXVsdGlwbGUtcHJvcGFnYXRpb24uc2VydmljZXdvcmtl
ci5odHRwcy5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL3BpcGluZy9tdWx0aXBsZS1wcm9wYWdhdGlvbi5zaGFyZWR3b3JrZXIuaHRtbAot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBp
bmcvcGlwZS10aHJvdWdoLmRlZGljYXRlZHdvcmtlci5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9waXBlLXRocm91Z2guaHRt
bAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9w
aXBpbmcvcGlwZS10aHJvdWdoLmpzCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9waXBlLXRocm91Z2guc2VydmljZXdvcmtlci5odHRw
cy5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJl
YW1zL3BpcGluZy9waXBlLXRocm91Z2guc2hhcmVkd29ya2VyLmh0bWwKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL3RyYW5zZm9ybS1z
dHJlYW1zLmRlZGljYXRlZHdvcmtlci5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy90cmFuc2Zvcm0tc3RyZWFtcy5odG1sCi0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGlu
Zy90cmFuc2Zvcm0tc3RyZWFtcy5qcwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvdHJhbnNmb3JtLXN0cmVhbXMuc2VydmljZXdvcmtl
ci5odHRwcy5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL3BpcGluZy90cmFuc2Zvcm0tc3RyZWFtcy5zaGFyZWR3b3JrZXIuaHRtbAorL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcv
YWJvcnQuYW55LmpzCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL3BpcGluZy9jbG9zZS1wcm9wYWdhdGlvbi1iYWNrd2FyZC5hbnkuanMKKy9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Ns
b3NlLXByb3BhZ2F0aW9uLWZvcndhcmQuYW55LmpzCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9lcnJvci1wcm9wYWdhdGlvbi1iYWNr
d2FyZC5hbnkuanMKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMvcGlwaW5nL2Vycm9yLXByb3BhZ2F0aW9uLWZvcndhcmQuYW55LmpzCisvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9mbG93
LWNvbnRyb2wuYW55LmpzCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL3BpcGluZy9nZW5lcmFsLmFueS5qcworL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvbXVsdGlwbGUtcHJvcGFnYXRp
b24uYW55LmpzCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
dHJlYW1zL3BpcGluZy9waXBlLXRocm91Z2guYW55LmpzCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy90aGVuLWludGVyY2VwdGlvbi5h
bnkuanMKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvcGlwaW5nL3Rocm93aW5nLW9wdGlvbnMuYW55LmpzCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy90cmFuc2Zvcm0tc3RyZWFtcy5h
bnkuanMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy9xdWV1aW5nLXN0cmF0ZWdpZXMuYW55LWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9xdWV1aW5nLXN0
cmF0ZWdpZXMuYW55LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lODM3MmEzNGE2MjM5NDE0ODI3
ZmFkOTM4NjM1OGE1ZDIwNWIxMDRmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3F1ZXVpbmctc3RyYXRlZ2llcy5h
bnktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTggQEAKKworUEFTUyBDb3VudFF1ZXVpbmdTdHJh
dGVneTogQ2FuIGNvbnN0cnVjdCBhIHdpdGggYSB2YWxpZCBoaWdoIHdhdGVyIG1hcmsgCitGQUlM
IENvdW50UXVldWluZ1N0cmF0ZWd5OiBDb25zdHJ1Y3RvciBiZWhhdmVzIGFzIGV4cGVjdGVkIHdp
dGggc3RyYW5nZSBhcmd1bWVudHMgYXNzZXJ0X3Rocm93c19qczogY29uc3RydWN0aW9uIGZhaWxz
IHdpdGggdHJ1ZSBmdW5jdGlvbiAiKCkgPT4gbmV3IFF1ZXVpbmdTdHJhdGVneSh0cnVlKSIgZGlk
IG5vdCB0aHJvdworRkFJTCBDb3VudFF1ZXVpbmdTdHJhdGVneTogaGlnaFdhdGVyTWFyayBjb25z
dHJ1Y3RvciB2YWx1ZXMgYXJlIGNvbnZlcnRlZCBwZXIgdGhlIHVucmVzdHJpY3RlZCBkb3VibGUg
cnVsZXMgYXNzZXJ0X2VxdWFsczogZmFsc2UgZ2V0cyBzZXQgY29ycmVjdGx5IGV4cGVjdGVkIChu
dW1iZXIpIDAgYnV0IGdvdCAoYm9vbGVhbikgZmFsc2UKK1BBU1MgQ291bnRRdWV1aW5nU3RyYXRl
Z3k6IHNpemUgaXMgdGhlIHNhbWUgZnVuY3Rpb24gYWNyb3NzIGFsbCBpbnN0YW5jZXMgCitQQVNT
IENvdW50UXVldWluZ1N0cmF0ZWd5OiBzaXplIHNob3VsZCBoYXZlIHRoZSByaWdodCBuYW1lIAor
RkFJTCBDb3VudFF1ZXVpbmdTdHJhdGVneTogc3ViY2xhc3Npbmcgc2hvdWxkIHdvcmsgY29ycmVj
dGx5IGFzc2VydF9lcXVhbHM6IGNvbnN0cnVjdG9yLm5hbWUgc2hvdWxkIGJlIGNvcnJlY3QgZXhw
ZWN0ZWQgIlN1YkNsYXNzIiBidXQgZ290ICJDb3VudFF1ZXVpbmdTdHJhdGVneSIKK1BBU1MgQnl0
ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneTogQ2FuIGNvbnN0cnVjdCBhIHdpdGggYSB2YWxpZCBoaWdo
IHdhdGVyIG1hcmsgCitGQUlMIEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3k6IENvbnN0cnVjdG9y
IGJlaGF2ZXMgYXMgZXhwZWN0ZWQgd2l0aCBzdHJhbmdlIGFyZ3VtZW50cyBhc3NlcnRfdGhyb3dz
X2pzOiBjb25zdHJ1Y3Rpb24gZmFpbHMgd2l0aCB0cnVlIGZ1bmN0aW9uICIoKSA9PiBuZXcgUXVl
dWluZ1N0cmF0ZWd5KHRydWUpIiBkaWQgbm90IHRocm93CitGQUlMIEJ5dGVMZW5ndGhRdWV1aW5n
U3RyYXRlZ3k6IGhpZ2hXYXRlck1hcmsgY29uc3RydWN0b3IgdmFsdWVzIGFyZSBjb252ZXJ0ZWQg
cGVyIHRoZSB1bnJlc3RyaWN0ZWQgZG91YmxlIHJ1bGVzIGFzc2VydF9lcXVhbHM6IGZhbHNlIGdl
dHMgc2V0IGNvcnJlY3RseSBleHBlY3RlZCAobnVtYmVyKSAwIGJ1dCBnb3QgKGJvb2xlYW4pIGZh
bHNlCitQQVNTIEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3k6IHNpemUgaXMgdGhlIHNhbWUgZnVu
Y3Rpb24gYWNyb3NzIGFsbCBpbnN0YW5jZXMgCitQQVNTIEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRl
Z3k6IHNpemUgc2hvdWxkIGhhdmUgdGhlIHJpZ2h0IG5hbWUgCitGQUlMIEJ5dGVMZW5ndGhRdWV1
aW5nU3RyYXRlZ3k6IHN1YmNsYXNzaW5nIHNob3VsZCB3b3JrIGNvcnJlY3RseSBhc3NlcnRfZXF1
YWxzOiBjb25zdHJ1Y3Rvci5uYW1lIHNob3VsZCBiZSBjb3JyZWN0IGV4cGVjdGVkICJTdWJDbGFz
cyIgYnV0IGdvdCAiQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneSIKK1BBU1MgQ291bnRRdWV1aW5n
U3RyYXRlZ3k6IHNpemUgc2hvdWxkIGhhdmUgdGhlIHJpZ2h0IGxlbmd0aCAKK1BBU1MgQnl0ZUxl
bmd0aFF1ZXVpbmdTdHJhdGVneTogc2l6ZSBzaG91bGQgaGF2ZSB0aGUgcmlnaHQgbGVuZ3RoIAor
UEFTUyBDb3VudFF1ZXVpbmdTdHJhdGVneTogc2l6ZSBiZWhhdmVzIGFzIGV4cGVjdGVkIHdpdGgg
c3RyYW5nZSBhcmd1bWVudHMgCitQQVNTIEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3k6IHNpemUg
YmVoYXZlcyBhcyBleHBlY3RlZCB3aXRoIHN0cmFuZ2UgYXJndW1lbnRzIAorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcXVl
dWluZy1zdHJhdGVnaWVzLmFueS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3F1ZXVpbmctc3RyYXRlZ2llcy5hbnkuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4yMzgyOTEzNTI4ZTY5M2IzYTVkNTZjNjYwYTQ1MDYwOTgwYjU0OGMzCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJl
YW1zL3F1ZXVpbmctc3RyYXRlZ2llcy5hbnkuaHRtbApAQCAtMCwwICsxIEBACis8IS0tIFRoaXMg
ZmlsZSBpcyByZXF1aXJlZCBmb3IgV2ViS2l0IHRlc3QgaW5mcmFzdHJ1Y3R1cmUgdG8gcnVuIHRo
ZSB0ZW1wbGF0ZWQgdGVzdCAtLT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
cXVldWluZy1zdHJhdGVnaWVzLmFueS5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9xdWV1aW5nLXN0cmF0ZWdpZXMuYW55LmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjE4NDZlYTYzZTM1NDU5ZjM1NTIzMDQyMWJiMDQyZTY3YmY1MTA1M2MKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvcXVldWluZy1zdHJhdGVnaWVzLmFueS5qcwpAQCAtMCwwICsxLDEzNSBAQAorLy8gTUVUQTog
Z2xvYmFsPXdpbmRvdyx3b3JrZXIsanNzaGVsbAorJ3VzZSBzdHJpY3QnOworCitjb25zdCBoaWdo
V2F0ZXJNYXJrQ29udmVyc2lvbnMgPSBuZXcgTWFwKFsKKyAgWy1JbmZpbml0eSwgLUluZmluaXR5
XSwKKyAgWy01LCAtNV0sCisgIFtmYWxzZSwgMF0sCisgIFt0cnVlLCAxXSwKKyAgW05hTiwgTmFO
XSwKKyAgWydmb28nLCBOYU5dLAorICBbJzAnLCAwXSwKKyAgW3t9LCBOYU5dLAorICBbKCkgPT4g
e30sIE5hTl0KK10pOworCitmb3IgKGNvbnN0IFF1ZXVpbmdTdHJhdGVneSBvZiBbQ291bnRRdWV1
aW5nU3RyYXRlZ3ksIEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3ldKSB7CisgIHRlc3QoKCkgPT4g
eworICAgIG5ldyBRdWV1aW5nU3RyYXRlZ3koeyBoaWdoV2F0ZXJNYXJrOiA0IH0pOworICB9LCBg
JHtRdWV1aW5nU3RyYXRlZ3kubmFtZX06IENhbiBjb25zdHJ1Y3QgYSB3aXRoIGEgdmFsaWQgaGln
aCB3YXRlciBtYXJrYCk7CisKKyAgdGVzdCgoKSA9PiB7CisgICAgY29uc3QgaGlnaFdhdGVyTWFy
ayA9IDE7CisgICAgY29uc3QgaGlnaFdhdGVyTWFya09iamVjdEdldHRlciA9IHsKKyAgICAgIGdl
dCBoaWdoV2F0ZXJNYXJrKCkgeyByZXR1cm4gaGlnaFdhdGVyTWFyazsgfQorICAgIH07CisgICAg
Y29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoJ3dvdyEnKTsKKyAgICBjb25zdCBoaWdoV2F0ZXJNYXJr
T2JqZWN0R2V0dGVyVGhyb3dpbmcgPSB7CisgICAgICBnZXQgaGlnaFdhdGVyTWFyaygpIHsgdGhy
b3cgZXJyb3I7IH0KKyAgICB9OworCisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgp
ID0+IG5ldyBRdWV1aW5nU3RyYXRlZ3koKSwgJ2NvbnN0cnVjdGlvbiBmYWlscyB3aXRoIHVuZGVm
aW5lZCcpOworICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiBuZXcgUXVldWlu
Z1N0cmF0ZWd5KG51bGwpLCAnY29uc3RydWN0aW9uIGZhaWxzIHdpdGggbnVsbCcpOworICAgIGFz
c2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiBuZXcgUXVldWluZ1N0cmF0ZWd5KHRydWUp
LCAnY29uc3RydWN0aW9uIGZhaWxzIHdpdGggdHJ1ZScpOworICAgIGFzc2VydF90aHJvd3NfanMo
VHlwZUVycm9yLCAoKSA9PiBuZXcgUXVldWluZ1N0cmF0ZWd5KDUpLCAnY29uc3RydWN0aW9uIGZh
aWxzIHdpdGggNScpOworICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiBuZXcg
UXVldWluZ1N0cmF0ZWd5KHt9KSwgJ2NvbnN0cnVjdGlvbiBmYWlscyB3aXRoIHt9Jyk7CisgICAg
YXNzZXJ0X3Rocm93c19leGFjdGx5KGVycm9yLCAoKSA9PiBuZXcgUXVldWluZ1N0cmF0ZWd5KGhp
Z2hXYXRlck1hcmtPYmplY3RHZXR0ZXJUaHJvd2luZyksCisgICAgICAnY29uc3RydWN0aW9uIGZh
aWxzIHdpdGggYW4gb2JqZWN0IHdpdGggYSB0aHJvd2luZyBoaWdoV2F0ZXJNYXJrIGdldHRlcicp
OworCisgICAgYXNzZXJ0X2VxdWFscygobmV3IFF1ZXVpbmdTdHJhdGVneShoaWdoV2F0ZXJNYXJr
T2JqZWN0R2V0dGVyKSkuaGlnaFdhdGVyTWFyaywgaGlnaFdhdGVyTWFyayk7CisgIH0sIGAke1F1
ZXVpbmdTdHJhdGVneS5uYW1lfTogQ29uc3RydWN0b3IgYmVoYXZlcyBhcyBleHBlY3RlZCB3aXRo
IHN0cmFuZ2UgYXJndW1lbnRzYCk7CisKKyAgdGVzdCgoKSA9PiB7CisgICAgZm9yIChjb25zdCBb
aW5wdXQsIG91dHB1dF0gb2YgaGlnaFdhdGVyTWFya0NvbnZlcnNpb25zLmVudHJpZXMoKSkgewor
ICAgICAgY29uc3Qgc3RyYXRlZ3kgPSBuZXcgUXVldWluZ1N0cmF0ZWd5KHsgaGlnaFdhdGVyTWFy
azogaW5wdXQgfSk7CisgICAgICBhc3NlcnRfZXF1YWxzKHN0cmF0ZWd5LmhpZ2hXYXRlck1hcmss
IG91dHB1dCwgYCR7aW5wdXR9IGdldHMgc2V0IGNvcnJlY3RseWApOworICAgIH0KKyAgfSwgYCR7
UXVldWluZ1N0cmF0ZWd5Lm5hbWV9OiBoaWdoV2F0ZXJNYXJrIGNvbnN0cnVjdG9yIHZhbHVlcyBh
cmUgY29udmVydGVkIHBlciB0aGUgdW5yZXN0cmljdGVkIGRvdWJsZSBydWxlc2ApOworCisgIHRl
c3QoKCkgPT4geworICAgIGNvbnN0IHNpemUxID0gKG5ldyBRdWV1aW5nU3RyYXRlZ3koeyBoaWdo
V2F0ZXJNYXJrOiA1IH0pKS5zaXplOworICAgIGNvbnN0IHNpemUyID0gKG5ldyBRdWV1aW5nU3Ry
YXRlZ3koeyBoaWdoV2F0ZXJNYXJrOiAxMCB9KSkuc2l6ZTsKKworICAgIGFzc2VydF9lcXVhbHMo
c2l6ZTEsIHNpemUyKTsKKyAgfSwgYCR7UXVldWluZ1N0cmF0ZWd5Lm5hbWV9OiBzaXplIGlzIHRo
ZSBzYW1lIGZ1bmN0aW9uIGFjcm9zcyBhbGwgaW5zdGFuY2VzYCk7CisKKyAgdGVzdCgoKSA9PiB7
CisgICAgY29uc3Qgc2l6ZSA9IChuZXcgUXVldWluZ1N0cmF0ZWd5KHsgaGlnaFdhdGVyTWFyazog
NSB9KSkuc2l6ZTsKKyAgICBhc3NlcnRfZXF1YWxzKHNpemUubmFtZSwgJ3NpemUnKTsKKyAgfSwg
YCR7UXVldWluZ1N0cmF0ZWd5Lm5hbWV9OiBzaXplIHNob3VsZCBoYXZlIHRoZSByaWdodCBuYW1l
YCk7CisKKyAgdGVzdCgoKSA9PiB7CisgICAgY2xhc3MgU3ViQ2xhc3MgZXh0ZW5kcyBRdWV1aW5n
U3RyYXRlZ3kgeworICAgICAgc2l6ZSgpIHsKKyAgICAgICAgcmV0dXJuIDI7CisgICAgICB9CisK
KyAgICAgIHN1YkNsYXNzTWV0aG9kKCkgeworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICBjb25zdCBzYyA9IG5ldyBTdWJDbGFzcyh7IGhpZ2hXYXRlck1hcms6IDc3
IH0pOworICAgIGFzc2VydF9lcXVhbHMoc2MuY29uc3RydWN0b3IubmFtZSwgJ1N1YkNsYXNzJywg
J2NvbnN0cnVjdG9yLm5hbWUgc2hvdWxkIGJlIGNvcnJlY3QnKTsKKyAgICBhc3NlcnRfZXF1YWxz
KHNjLmhpZ2hXYXRlck1hcmssIDc3LCAnaGlnaFdhdGVyTWFyayBzaG91bGQgY29tZSBmcm9tIHRo
ZSBwYXJlbnQgY2xhc3MnKTsKKyAgICBhc3NlcnRfZXF1YWxzKHNjLnNpemUoKSwgMiwgJ3NpemUo
KSBvbiB0aGUgc3ViY2xhc3Mgc2hvdWxkIG92ZXJyaWRlIHRoZSBwYXJlbnQnKTsKKyAgICBhc3Nl
cnRfdHJ1ZShzYy5zdWJDbGFzc01ldGhvZCgpLCAnc3ViQ2xhc3NNZXRob2QoKSBzaG91bGQgd29y
aycpOworICB9LCBgJHtRdWV1aW5nU3RyYXRlZ3kubmFtZX06IHN1YmNsYXNzaW5nIHNob3VsZCB3
b3JrIGNvcnJlY3RseWApOworfQorCit0ZXN0KCgpID0+IHsKKyAgY29uc3Qgc2l6ZSA9IChuZXcg
Q291bnRRdWV1aW5nU3RyYXRlZ3koeyBoaWdoV2F0ZXJNYXJrOiA1IH0pKS5zaXplOworICBhc3Nl
cnRfZXF1YWxzKHNpemUubGVuZ3RoLCAwKTsKK30sICdDb3VudFF1ZXVpbmdTdHJhdGVneTogc2l6
ZSBzaG91bGQgaGF2ZSB0aGUgcmlnaHQgbGVuZ3RoJyk7CisKK3Rlc3QoKCkgPT4geworICBjb25z
dCBzaXplID0gKG5ldyBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5KHsgaGlnaFdhdGVyTWFyazog
NSB9KSkuc2l6ZTsKKyAgYXNzZXJ0X2VxdWFscyhzaXplLmxlbmd0aCwgMSk7Cit9LCAnQnl0ZUxl
bmd0aFF1ZXVpbmdTdHJhdGVneTogc2l6ZSBzaG91bGQgaGF2ZSB0aGUgcmlnaHQgbGVuZ3RoJyk7
CisKK3Rlc3QoKCkgPT4geworICBjb25zdCBzaXplID0gMTAyNDsKKyAgY29uc3QgY2h1bmsgPSB7
IGJ5dGVMZW5ndGg6IHNpemUgfTsKKyAgY29uc3QgY2h1bmtHZXR0ZXIgPSB7CisgICAgZ2V0IGJ5
dGVMZW5ndGgoKSB7IHJldHVybiBzaXplOyB9CisgIH07CisgIGNvbnN0IGVycm9yID0gbmV3IEVy
cm9yKCd3b3chJyk7CisgIGNvbnN0IGNodW5rR2V0dGVyVGhyb3dpbmcgPSB7CisgICAgZ2V0IGJ5
dGVMZW5ndGgoKSB7IHRocm93IGVycm9yOyB9CisgIH07CisKKyAgY29uc3Qgc2l6ZUZ1bmN0aW9u
ID0gKG5ldyBDb3VudFF1ZXVpbmdTdHJhdGVneSh7IGhpZ2hXYXRlck1hcms6IDUgfSkpLnNpemU7
CisKKyAgYXNzZXJ0X2VxdWFscyhzaXplRnVuY3Rpb24oKSwgMSwgJ3NpemUgcmV0dXJucyAxIHdp
dGggdW5kZWZpbmVkJyk7CisgIGFzc2VydF9lcXVhbHMoc2l6ZUZ1bmN0aW9uKG51bGwpLCAxLCAn
c2l6ZSByZXR1cm5zIDEgd2l0aCBudWxsJyk7CisgIGFzc2VydF9lcXVhbHMoc2l6ZUZ1bmN0aW9u
KCdwb3RhdG8nKSwgMSwgJ3NpemUgcmV0dXJucyAxIHdpdGggbm9uLW9iamVjdCB0eXBlJyk7Cisg
IGFzc2VydF9lcXVhbHMoc2l6ZUZ1bmN0aW9uKHt9KSwgMSwgJ3NpemUgcmV0dXJucyAxIHdpdGgg
ZW1wdHkgb2JqZWN0Jyk7CisgIGFzc2VydF9lcXVhbHMoc2l6ZUZ1bmN0aW9uKGNodW5rKSwgMSwg
J3NpemUgcmV0dXJucyAxIHdpdGggYSBjaHVuaycpOworICBhc3NlcnRfZXF1YWxzKHNpemVGdW5j
dGlvbihjaHVua0dldHRlciksIDEsICdzaXplIHJldHVybnMgMSB3aXRoIGNodW5rIGdldHRlcicp
OworICBhc3NlcnRfZXF1YWxzKHNpemVGdW5jdGlvbihjaHVua0dldHRlclRocm93aW5nKSwgMSwK
KyAgICAnc2l6ZSByZXR1cm5zIDEgd2l0aCBjaHVuayBnZXR0ZXIgdGhhdCB0aHJvd3MnKTsKK30s
ICdDb3VudFF1ZXVpbmdTdHJhdGVneTogc2l6ZSBiZWhhdmVzIGFzIGV4cGVjdGVkIHdpdGggc3Ry
YW5nZSBhcmd1bWVudHMnKTsKKwordGVzdCgoKSA9PiB7CisgIGNvbnN0IHNpemUgPSAxMDI0Owor
ICBjb25zdCBjaHVuayA9IHsgYnl0ZUxlbmd0aDogc2l6ZSB9OworICBjb25zdCBjaHVua0dldHRl
ciA9IHsKKyAgICBnZXQgYnl0ZUxlbmd0aCgpIHsgcmV0dXJuIHNpemU7IH0KKyAgfTsKKyAgY29u
c3QgZXJyb3IgPSBuZXcgRXJyb3IoJ3dvdyEnKTsKKyAgY29uc3QgY2h1bmtHZXR0ZXJUaHJvd2lu
ZyA9IHsKKyAgICBnZXQgYnl0ZUxlbmd0aCgpIHsgdGhyb3cgZXJyb3I7IH0KKyAgfTsKKworICBj
b25zdCBzaXplRnVuY3Rpb24gPSAobmV3IEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3koeyBoaWdo
V2F0ZXJNYXJrOiA1IH0pKS5zaXplOworCisgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAo
KSA9PiBzaXplRnVuY3Rpb24oKSwgJ3NpemUgZmFpbHMgd2l0aCB1bmRlZmluZWQnKTsKKyAgYXNz
ZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IHNpemVGdW5jdGlvbihudWxsKSwgJ3NpemUg
ZmFpbHMgd2l0aCBudWxsJyk7CisgIGFzc2VydF9lcXVhbHMoc2l6ZUZ1bmN0aW9uKCdwb3RhdG8n
KSwgdW5kZWZpbmVkLCAnc2l6ZSBzdWNjZWVkcyB3aXRoIHVuZGVmaW5lZCB3aXRoIGEgcmFuZG9t
IG5vbi1vYmplY3QgdHlwZScpOworICBhc3NlcnRfZXF1YWxzKHNpemVGdW5jdGlvbih7fSksIHVu
ZGVmaW5lZCwgJ3NpemUgc3VjY2VlZHMgd2l0aCB1bmRlZmluZWQgd2l0aCBhbiBvYmplY3Qgd2l0
aG91dCBod20gcHJvcGVydHknKTsKKyAgYXNzZXJ0X2VxdWFscyhzaXplRnVuY3Rpb24oY2h1bmsp
LCBzaXplLCAnc2l6ZSBzdWNjZWVkcyB3aXRoIHRoZSByaWdodCBhbW91bnQgd2l0aCBhbiBvYmpl
Y3Qgd2l0aCBhIGh3bScpOworICBhc3NlcnRfZXF1YWxzKHNpemVGdW5jdGlvbihjaHVua0dldHRl
ciksIHNpemUsCisgICAgJ3NpemUgc3VjY2VlZHMgd2l0aCB0aGUgcmlnaHQgYW1vdW50IHdpdGgg
YW4gb2JqZWN0IHdpdGggYSBod20gZ2V0dGVyJyk7CisgIGFzc2VydF90aHJvd3NfZXhhY3RseShl
cnJvciwgKCkgPT4gc2l6ZUZ1bmN0aW9uKGNodW5rR2V0dGVyVGhyb3dpbmcpLAorICAgICdzaXpl
IGZhaWxzIHdpdGggdGhlIGVycm9yIHRocm93biBieSB0aGUgZ2V0dGVyJyk7Cit9LCAnQnl0ZUxl
bmd0aFF1ZXVpbmdTdHJhdGVneTogc2l6ZSBiZWhhdmVzIGFzIGV4cGVjdGVkIHdpdGggc3RyYW5n
ZSBhcmd1bWVudHMnKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9xdWV1aW5nLXN0cmF0ZWdpZXMuYW55Lndvcmtlci1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMvcXVldWluZy1zdHJhdGVnaWVzLmFueS53b3JrZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmU4MzcyYTM0YTYyMzk0MTQ4MjdmYWQ5Mzg2MzU4YTVkMjA1YjEwNGYKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvcXVldWluZy1zdHJhdGVnaWVzLmFueS53b3JrZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MTggQEAKKworUEFTUyBDb3VudFF1ZXVpbmdTdHJhdGVneTogQ2FuIGNvbnN0cnVjdCBhIHdpdGgg
YSB2YWxpZCBoaWdoIHdhdGVyIG1hcmsgCitGQUlMIENvdW50UXVldWluZ1N0cmF0ZWd5OiBDb25z
dHJ1Y3RvciBiZWhhdmVzIGFzIGV4cGVjdGVkIHdpdGggc3RyYW5nZSBhcmd1bWVudHMgYXNzZXJ0
X3Rocm93c19qczogY29uc3RydWN0aW9uIGZhaWxzIHdpdGggdHJ1ZSBmdW5jdGlvbiAiKCkgPT4g
bmV3IFF1ZXVpbmdTdHJhdGVneSh0cnVlKSIgZGlkIG5vdCB0aHJvdworRkFJTCBDb3VudFF1ZXVp
bmdTdHJhdGVneTogaGlnaFdhdGVyTWFyayBjb25zdHJ1Y3RvciB2YWx1ZXMgYXJlIGNvbnZlcnRl
ZCBwZXIgdGhlIHVucmVzdHJpY3RlZCBkb3VibGUgcnVsZXMgYXNzZXJ0X2VxdWFsczogZmFsc2Ug
Z2V0cyBzZXQgY29ycmVjdGx5IGV4cGVjdGVkIChudW1iZXIpIDAgYnV0IGdvdCAoYm9vbGVhbikg
ZmFsc2UKK1BBU1MgQ291bnRRdWV1aW5nU3RyYXRlZ3k6IHNpemUgaXMgdGhlIHNhbWUgZnVuY3Rp
b24gYWNyb3NzIGFsbCBpbnN0YW5jZXMgCitQQVNTIENvdW50UXVldWluZ1N0cmF0ZWd5OiBzaXpl
IHNob3VsZCBoYXZlIHRoZSByaWdodCBuYW1lIAorRkFJTCBDb3VudFF1ZXVpbmdTdHJhdGVneTog
c3ViY2xhc3Npbmcgc2hvdWxkIHdvcmsgY29ycmVjdGx5IGFzc2VydF9lcXVhbHM6IGNvbnN0cnVj
dG9yLm5hbWUgc2hvdWxkIGJlIGNvcnJlY3QgZXhwZWN0ZWQgIlN1YkNsYXNzIiBidXQgZ290ICJD
b3VudFF1ZXVpbmdTdHJhdGVneSIKK1BBU1MgQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneTogQ2Fu
IGNvbnN0cnVjdCBhIHdpdGggYSB2YWxpZCBoaWdoIHdhdGVyIG1hcmsgCitGQUlMIEJ5dGVMZW5n
dGhRdWV1aW5nU3RyYXRlZ3k6IENvbnN0cnVjdG9yIGJlaGF2ZXMgYXMgZXhwZWN0ZWQgd2l0aCBz
dHJhbmdlIGFyZ3VtZW50cyBhc3NlcnRfdGhyb3dzX2pzOiBjb25zdHJ1Y3Rpb24gZmFpbHMgd2l0
aCB0cnVlIGZ1bmN0aW9uICIoKSA9PiBuZXcgUXVldWluZ1N0cmF0ZWd5KHRydWUpIiBkaWQgbm90
IHRocm93CitGQUlMIEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3k6IGhpZ2hXYXRlck1hcmsgY29u
c3RydWN0b3IgdmFsdWVzIGFyZSBjb252ZXJ0ZWQgcGVyIHRoZSB1bnJlc3RyaWN0ZWQgZG91Ymxl
IHJ1bGVzIGFzc2VydF9lcXVhbHM6IGZhbHNlIGdldHMgc2V0IGNvcnJlY3RseSBleHBlY3RlZCAo
bnVtYmVyKSAwIGJ1dCBnb3QgKGJvb2xlYW4pIGZhbHNlCitQQVNTIEJ5dGVMZW5ndGhRdWV1aW5n
U3RyYXRlZ3k6IHNpemUgaXMgdGhlIHNhbWUgZnVuY3Rpb24gYWNyb3NzIGFsbCBpbnN0YW5jZXMg
CitQQVNTIEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3k6IHNpemUgc2hvdWxkIGhhdmUgdGhlIHJp
Z2h0IG5hbWUgCitGQUlMIEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3k6IHN1YmNsYXNzaW5nIHNo
b3VsZCB3b3JrIGNvcnJlY3RseSBhc3NlcnRfZXF1YWxzOiBjb25zdHJ1Y3Rvci5uYW1lIHNob3Vs
ZCBiZSBjb3JyZWN0IGV4cGVjdGVkICJTdWJDbGFzcyIgYnV0IGdvdCAiQnl0ZUxlbmd0aFF1ZXVp
bmdTdHJhdGVneSIKK1BBU1MgQ291bnRRdWV1aW5nU3RyYXRlZ3k6IHNpemUgc2hvdWxkIGhhdmUg
dGhlIHJpZ2h0IGxlbmd0aCAKK1BBU1MgQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneTogc2l6ZSBz
aG91bGQgaGF2ZSB0aGUgcmlnaHQgbGVuZ3RoIAorUEFTUyBDb3VudFF1ZXVpbmdTdHJhdGVneTog
c2l6ZSBiZWhhdmVzIGFzIGV4cGVjdGVkIHdpdGggc3RyYW5nZSBhcmd1bWVudHMgCitQQVNTIEJ5
dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3k6IHNpemUgYmVoYXZlcyBhcyBleHBlY3RlZCB3aXRoIHN0
cmFuZ2UgYXJndW1lbnRzIAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcXVldWluZy1zdHJhdGVnaWVzLmFueS53b3JrZXIu
aHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy9xdWV1aW5nLXN0cmF0ZWdpZXMuYW55Lndvcmtlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzODI5MTM1
MjhlNjkzYjNhNWQ1NmM2NjBhNDUwNjA5ODBiNTQ4YzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcXVldWluZy1z
dHJhdGVnaWVzLmFueS53b3JrZXIuaHRtbApAQCAtMCwwICsxIEBACis8IS0tIFRoaXMgZmlsZSBp
cyByZXF1aXJlZCBmb3IgV2ViS2l0IHRlc3QgaW5mcmFzdHJ1Y3R1cmUgdG8gcnVuIHRoZSB0ZW1w
bGF0ZWQgdGVzdCAtLT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFi
bGUtYnl0ZS1zdHJlYW1zL2JhZC1idWZmZXJzLWFuZC12aWV3cy5hbnktZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRh
YmxlLWJ5dGUtc3RyZWFtcy9iYWQtYnVmZmVycy1hbmQtdmlld3MuYW55LWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5lNGFkN2Q4ZDljODcyMWQ2YThlOGNlZWU0YjlhN2UxZDYwMGZlNWM4Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFtcy9iYWQtYnVmZmVycy1hbmQtdmlld3MuYW55
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMwIEBACisKK0hhcm5lc3MgRXJyb3IgKFRJTUVPVVQp
LCBtZXNzYWdlID0gbnVsbAorCitGQUlMIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6
IHJlYWQoKWluZyBmcm9tIGEgY2xvc2VkIHN0cmVhbSBzdGlsbCB0cmFuc2ZlcnMgdGhlIGJ1ZmZl
ciBhc3NlcnRfbm90X2VxdWFsczogYSBkaWZmZXJlbnQgQXJyYXlCdWZmZXIgbXVzdCB1bmRlcmxp
ZSB0aGUgdmFsdWUgZ290IGRpc2FsbG93ZWQgdmFsdWUgb2JqZWN0ICJbb2JqZWN0IEFycmF5QnVm
ZmVyXSIKK0ZBSUwgUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogcmVhZCgpaW5nIGZy
b20gYSBzdHJlYW0gd2l0aCBxdWV1ZWQgY2h1bmtzIHN0aWxsIHRyYW5zZmVycyB0aGUgYnVmZmVy
IGFzc2VydF9ub3RfZXF1YWxzOiBhIGRpZmZlcmVudCBBcnJheUJ1ZmZlciBtdXN0IHVuZGVybGll
IHRoZSB2YWx1ZSBnb3QgZGlzYWxsb3dlZCB2YWx1ZSBvYmplY3QgIltvYmplY3QgQXJyYXlCdWZm
ZXJdIgorRkFJTCBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBlbnF1ZXVpbmcgYW4g
YWxyZWFkeS1kZXRhY2hlZCBidWZmZXIgdGhyb3dzIGFzc2VydF90aHJvd3NfanM6IGZ1bmN0aW9u
ICIoKSA9PiBjLmVucXVldWUodmlldykiIGRpZCBub3QgdGhyb3cKK0ZBSUwgUmVhZGFibGVTdHJl
YW0gd2l0aCBieXRlIHNvdXJjZTogZW5xdWV1aW5nIGEgemVyby1sZW5ndGggYnVmZmVyIHRocm93
cyBhc3NlcnRfdGhyb3dzX2pzOiBmdW5jdGlvbiAiKCkgPT4gYy5lbnF1ZXVlKHZpZXcpIiBkaWQg
bm90IHRocm93CitGQUlMIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IGVucXVldWlu
ZyBhIHplcm8tbGVuZ3RoIHZpZXcgb24gYSBub24temVyby1sZW5ndGggYnVmZmVyIHRocm93cyBh
c3NlcnRfdGhyb3dzX2pzOiBmdW5jdGlvbiAiKCkgPT4gYy5lbnF1ZXVlKHZpZXcpIiBkaWQgbm90
IHRocm93CitUSU1FT1VUIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IHJlYWRpbmcg
aW50byBhbiBhbHJlYWR5LWRldGFjaGVkIGJ1ZmZlciByZWplY3RzIFRlc3QgdGltZWQgb3V0CitO
T1RSVU4gUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogcmVhZGluZyBpbnRvIGEgemVy
by1sZW5ndGggYnVmZmVyIHJlamVjdHMgCitOT1RSVU4gUmVhZGFibGVTdHJlYW0gd2l0aCBieXRl
IHNvdXJjZTogcmVhZGluZyBpbnRvIGEgemVyby1sZW5ndGggdmlldyBvbiBhIG5vbi16ZXJvLWxl
bmd0aCBidWZmZXIgcmVqZWN0cyAKK0ZBSUwgUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJj
ZTogcmVzcG9uZCgpIHRocm93cyBpZiB0aGUgQllPQiByZXF1ZXN0J3MgYnVmZmVyIGhhcyBiZWVu
IGRldGFjaGVkIChpbiB0aGUgcmVhZGFibGUgc3RhdGUpIGFzc2VydF90aHJvd3NfanM6IHJlc3Bv
bmQoKSBtdXN0IHRocm93IGlmIHRoZSBjb3JyZXNwb25kaW5nIHZpZXcgaGFzIGJlY29tZSBkZXRh
Y2hlZCBmdW5jdGlvbiAiKCkgPT4gYy5ieW9iUmVxdWVzdC5yZXNwb25kKDEpIiBkaWQgbm90IHRo
cm93CitGQUlMIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IHJlc3BvbmQoKSB0aHJv
d3MgaWYgdGhlIEJZT0IgcmVxdWVzdCdzIGJ1ZmZlciBoYXMgYmVlbiBkZXRhY2hlZCAoaW4gdGhl
IGNsb3NlZCBzdGF0ZSkgYXNzZXJ0X3Rocm93c19qczogcmVzcG9uZCgpIG11c3QgdGhyb3cgaWYg
dGhlIGNvcnJlc3BvbmRpbmcgdmlldyBoYXMgYmVjb21lIGRldGFjaGVkIGZ1bmN0aW9uICIoKSA9
PiBjLmJ5b2JSZXF1ZXN0LnJlc3BvbmQoMCkiIGRpZCBub3QgdGhyb3cKK0ZBSUwgUmVhZGFibGVT
dHJlYW0gd2l0aCBieXRlIHNvdXJjZTogcmVzcG9uZFdpdGhOZXdWaWV3KCkgdGhyb3dzIGlmIHRo
ZSBzdXBwbGllZCB2aWV3J3MgYnVmZmVyIGhhcyBiZWVuIGRldGFjaGVkIChpbiB0aGUgcmVhZGFi
bGUgc3RhdGUpIGFzc2VydF90aHJvd3NfanM6IGZ1bmN0aW9uICIoKSA9PiBjLmJ5b2JSZXF1ZXN0
LnJlc3BvbmRXaXRoTmV3Vmlldyh2aWV3KSIgZGlkIG5vdCB0aHJvdworRkFJTCBSZWFkYWJsZVN0
cmVhbSB3aXRoIGJ5dGUgc291cmNlOiByZXNwb25kV2l0aE5ld1ZpZXcoKSB0aHJvd3MgaWYgdGhl
IHN1cHBsaWVkIHZpZXcncyBidWZmZXIgaXMgemVyby1sZW5ndGggKGluIHRoZSByZWFkYWJsZSBz
dGF0ZSkgYXNzZXJ0X3Rocm93c19qczogZnVuY3Rpb24gIigpID0+IGMuYnlvYlJlcXVlc3QucmVz
cG9uZFdpdGhOZXdWaWV3KHZpZXcpIiB0aHJldyBvYmplY3QgIlJhbmdlRXJyb3I6IEludmFsaWQg
dmFsdWUgZm9yIHZpZXcuYnl0ZUxlbmd0aCIgKCJSYW5nZUVycm9yIikgZXhwZWN0ZWQgaW5zdGFu
Y2Ugb2YgZnVuY3Rpb24gImZ1bmN0aW9uIFR5cGVFcnJvcigpIHsKKyAgICBbbmF0aXZlIGNvZGVd
Cit9IiAoIlR5cGVFcnJvciIpCitGQUlMIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6
IHJlc3BvbmRXaXRoTmV3VmlldygpIHRocm93cyBpZiB0aGUgc3VwcGxpZWQgdmlldyBpcyB6ZXJv
LWxlbmd0aCBvbiBhIG5vbi16ZXJvLWxlbmd0aCBidWZmZXIgKGluIHRoZSByZWFkYWJsZSBzdGF0
ZSkgYXNzZXJ0X3Rocm93c19qczogZnVuY3Rpb24gIigpID0+IGMuYnlvYlJlcXVlc3QucmVzcG9u
ZFdpdGhOZXdWaWV3KHZpZXcpIiB0aHJldyBvYmplY3QgIlJhbmdlRXJyb3I6IEludmFsaWQgdmFs
dWUgZm9yIHZpZXcuYnl0ZUxlbmd0aCIgKCJSYW5nZUVycm9yIikgZXhwZWN0ZWQgaW5zdGFuY2Ug
b2YgZnVuY3Rpb24gImZ1bmN0aW9uIFR5cGVFcnJvcigpIHsKKyAgICBbbmF0aXZlIGNvZGVdCit9
IiAoIlR5cGVFcnJvciIpCitGQUlMIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IHJl
c3BvbmRXaXRoTmV3VmlldygpIHRocm93cyBpZiB0aGUgc3VwcGxpZWQgdmlldydzIGJ1ZmZlciBo
YXMgYmVlbiBkZXRhY2hlZCAoaW4gdGhlIGNsb3NlZCBzdGF0ZSkgYXNzZXJ0X3Rocm93c19qczog
ZnVuY3Rpb24gIigpID0+IGMuYnlvYlJlcXVlc3QucmVzcG9uZFdpdGhOZXdWaWV3KHplcm9MZW5n
dGhWaWV3KSIgdGhyZXcgb2JqZWN0ICJSYW5nZUVycm9yOiBJbnZhbGlkIHZhbHVlIGZvciB2aWV3
LmJ5dGVMZW5ndGgiICgiUmFuZ2VFcnJvciIpIGV4cGVjdGVkIGluc3RhbmNlIG9mIGZ1bmN0aW9u
ICJmdW5jdGlvbiBUeXBlRXJyb3IoKSB7CisgICAgW25hdGl2ZSBjb2RlXQorfSIgKCJUeXBlRXJy
b3IiKQorRkFJTCBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiByZXNwb25kV2l0aE5l
d1ZpZXcoKSB0aHJvd3MgaWYgdGhlIHN1cHBsaWVkIHZpZXcncyBidWZmZXIgaXMgemVyby1sZW5n
dGggKGluIHRoZSBjbG9zZWQgc3RhdGUpIGFzc2VydF90aHJvd3NfanM6IGZ1bmN0aW9uICIoKSA9
PiBjLmJ5b2JSZXF1ZXN0LnJlc3BvbmRXaXRoTmV3Vmlldyh2aWV3KSIgdGhyZXcgb2JqZWN0ICJS
YW5nZUVycm9yOiBJbnZhbGlkIHZhbHVlIGZvciB2aWV3LmJ5dGVMZW5ndGgiICgiUmFuZ2VFcnJv
ciIpIGV4cGVjdGVkIGluc3RhbmNlIG9mIGZ1bmN0aW9uICJmdW5jdGlvbiBUeXBlRXJyb3IoKSB7
CisgICAgW25hdGl2ZSBjb2RlXQorfSIgKCJUeXBlRXJyb3IiKQorRkFJTCBSZWFkYWJsZVN0cmVh
bSB3aXRoIGJ5dGUgc291cmNlOiByZXNwb25kV2l0aE5ld1ZpZXcoKSB0aHJvd3MgaWYgdGhlIHN1
cHBsaWVkIHZpZXcgaXMgemVyby1sZW5ndGggb24gYSBub24temVyby1sZW5ndGggYnVmZmVyIChp
biB0aGUgY2xvc2VkIHN0YXRlKSBhc3NlcnRfdGhyb3dzX2pzOiBmdW5jdGlvbiAiKCkgPT4gYy5i
eW9iUmVxdWVzdC5yZXNwb25kV2l0aE5ld1ZpZXcodmlldykiIHRocmV3IG9iamVjdCAiUmFuZ2VF
cnJvcjogSW52YWxpZCB2YWx1ZSBmb3Igdmlldy5ieXRlTGVuZ3RoIiAoIlJhbmdlRXJyb3IiKSBl
eHBlY3RlZCBpbnN0YW5jZSBvZiBmdW5jdGlvbiAiZnVuY3Rpb24gVHlwZUVycm9yKCkgeworICAg
IFtuYXRpdmUgY29kZV0KK30iICgiVHlwZUVycm9yIikKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLWJ5dGUt
c3RyZWFtcy9iYWQtYnVmZmVycy1hbmQtdmlld3MuYW55Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1z
L2JhZC1idWZmZXJzLWFuZC12aWV3cy5hbnkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMzgyOTEzNTI4ZTY5
M2IzYTVkNTZjNjYwYTQ1MDYwOTgwYjU0OGMzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLWJ5dGUt
c3RyZWFtcy9iYWQtYnVmZmVycy1hbmQtdmlld3MuYW55Lmh0bWwKQEAgLTAsMCArMSBAQAorPCEt
LSBUaGlzIGZpbGUgaXMgcmVxdWlyZWQgZm9yIFdlYktpdCB0ZXN0IGluZnJhc3RydWN0dXJlIHRv
IHJ1biB0aGUgdGVtcGxhdGVkIHRlc3QgLS0+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
dHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFtcy9iYWQtYnVmZmVycy1hbmQtdmlld3MuYW55Lmpz
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3Jl
YWRhYmxlLWJ5dGUtc3RyZWFtcy9iYWQtYnVmZmVycy1hbmQtdmlld3MuYW55LmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjA3NzcyMDhkYTQ0YjI5YjgyMmJmOTM0NWRiZTIwZTMzYmI1NzA4YjkKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL2JhZC1idWZmZXJzLWFuZC12aWV3cy5hbnkuanMKQEAg
LTAsMCArMSwyNTggQEAKKy8vIE1FVEE6IGdsb2JhbD13aW5kb3csd29ya2VyLGpzc2hlbGwKKyd1
c2Ugc3RyaWN0JzsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgY29uc3Qgc3RyZWFtID0gbmV3
IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjLmNsb3NlKCk7CisgICAg
fSwKKyAgICB0eXBlOiAnYnl0ZXMnCisgIH0pOworCisgIGNvbnN0IHJlYWRlciA9IHN0cmVhbS5n
ZXRSZWFkZXIoeyBtb2RlOiAnYnlvYicgfSk7CisgIGNvbnN0IHZpZXcgPSBuZXcgVWludDhBcnJh
eShbMSwgMiwgM10pOworICByZXR1cm4gcmVhZGVyLnJlYWQodmlldykudGhlbigoeyB2YWx1ZSwg
ZG9uZSB9KSA9PiB7CisgICAgLy8gU2FuaXR5IGNoZWNrcworICAgIGFzc2VydF90cnVlKHZhbHVl
IGluc3RhbmNlb2YgVWludDhBcnJheSwgJ1RoZSB2YWx1ZSByZWFkIG11c3QgYmUgYSBVaW50OEFy
cmF5Jyk7CisgICAgYXNzZXJ0X25vdF9lcXVhbHModmFsdWUsIHZpZXcsICdUaGUgdmFsdWUgcmVh
ZCBtdXN0IG5vdCBiZSB0aGUgKnNhbWUqIFVpbnQ4QXJyYXknKTsKKyAgICBhc3NlcnRfYXJyYXlf
ZXF1YWxzKHZhbHVlLCBbXSwgJ1RoZSB2YWx1ZSByZWFkIG11c3QgYmUgYW4gZW1wdHkgVWludDhB
cnJheSwgc2luY2UgdGhlIHN0cmVhbSBpcyBjbG9zZWQnKTsKKyAgICBhc3NlcnRfdHJ1ZShkb25l
LCAnZG9uZSBtdXN0IGJlIHRydWUsIHNpbmNlIHRoZSBzdHJlYW0gaXMgY2xvc2VkJyk7CisKKyAg
ICAvLyBUaGUgaW1wb3J0YW50IGFzc2VydGlvbnMKKyAgICBhc3NlcnRfbm90X2VxdWFscyh2YWx1
ZS5idWZmZXIsIHZpZXcuYnVmZmVyLCAnYSBkaWZmZXJlbnQgQXJyYXlCdWZmZXIgbXVzdCB1bmRl
cmxpZSB0aGUgdmFsdWUnKTsKKyAgICBhc3NlcnRfZXF1YWxzKHZpZXcuYnVmZmVyLmJ5dGVMZW5n
dGgsIDAsICd0aGUgb3JpZ2luYWwgYnVmZmVyIG11c3QgYmUgZGV0YWNoZWQnKTsKKyAgfSk7Cit9
LCAnUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogcmVhZCgpaW5nIGZyb20gYSBjbG9z
ZWQgc3RyZWFtIHN0aWxsIHRyYW5zZmVycyB0aGUgYnVmZmVyJyk7CisKK3Byb21pc2VfdGVzdCgo
KSA9PiB7CisgIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQo
YykgeworICAgICAgYy5lbnF1ZXVlKG5ldyBVaW50OEFycmF5KFsxLCAyLCAzXSkpOworICAgIH0s
CisgICAgdHlwZTogJ2J5dGVzJworICB9KTsKKworICBjb25zdCByZWFkZXIgPSBzdHJlYW0uZ2V0
UmVhZGVyKHsgbW9kZTogJ2J5b2InIH0pOworICBjb25zdCB2aWV3ID0gbmV3IFVpbnQ4QXJyYXko
WzQsIDUsIDZdKTsKKyAgcmV0dXJuIHJlYWRlci5yZWFkKHZpZXcpLnRoZW4oKHsgdmFsdWUsIGRv
bmUgfSkgPT4geworICAgIC8vIFNhbml0eSBjaGVja3MKKyAgICBhc3NlcnRfdHJ1ZSh2YWx1ZSBp
bnN0YW5jZW9mIFVpbnQ4QXJyYXksICdUaGUgdmFsdWUgcmVhZCBtdXN0IGJlIGEgVWludDhBcnJh
eScpOworICAgIGFzc2VydF9ub3RfZXF1YWxzKHZhbHVlLCB2aWV3LCAnVGhlIHZhbHVlIHJlYWQg
bXVzdCBub3QgYmUgdGhlICpzYW1lKiBVaW50OEFycmF5Jyk7CisgICAgYXNzZXJ0X2FycmF5X2Vx
dWFscyh2YWx1ZSwgWzEsIDIsIDNdLCAnVGhlIHZhbHVlIHJlYWQgbXVzdCBiZSB0aGUgZW5xdWV1
ZWQgVWludDhBcnJheSwgbm90IHRoZSBvcmlnaW5hbCB2YWx1ZXMnKTsKKyAgICBhc3NlcnRfZmFs
c2UoZG9uZSwgJ2RvbmUgbXVzdCBiZSBmYWxzZSwgc2luY2UgdGhlIHN0cmVhbSBpcyBub3QgY2xv
c2VkJyk7CisKKyAgICAvLyBUaGUgaW1wb3J0YW50IGFzc2VydGlvbnMKKyAgICBhc3NlcnRfbm90
X2VxdWFscyh2YWx1ZS5idWZmZXIsIHZpZXcuYnVmZmVyLCAnYSBkaWZmZXJlbnQgQXJyYXlCdWZm
ZXIgbXVzdCB1bmRlcmxpZSB0aGUgdmFsdWUnKTsKKyAgICBhc3NlcnRfZXF1YWxzKHZpZXcuYnVm
ZmVyLmJ5dGVMZW5ndGgsIDAsICd0aGUgb3JpZ2luYWwgYnVmZmVyIG11c3QgYmUgZGV0YWNoZWQn
KTsKKyAgfSk7Cit9LCAnUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogcmVhZCgpaW5n
IGZyb20gYSBzdHJlYW0gd2l0aCBxdWV1ZWQgY2h1bmtzIHN0aWxsIHRyYW5zZmVycyB0aGUgYnVm
ZmVyJyk7CisKK3Rlc3QoKCkgPT4geworICBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0
KGMpIHsKKyAgICAgIGNvbnN0IHZpZXcgPSBuZXcgVWludDhBcnJheShbMSwgMiwgM10pOworICAg
ICAgYy5lbnF1ZXVlKHZpZXcpOworICAgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgp
ID0+IGMuZW5xdWV1ZSh2aWV3KSk7CisgICAgfSwKKyAgICB0eXBlOiAnYnl0ZXMnCisgIH0pOwor
fSwgJ1JlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IGVucXVldWluZyBhbiBhbHJlYWR5
LWRldGFjaGVkIGJ1ZmZlciB0aHJvd3MnKTsKKwordGVzdCgoKSA9PiB7CisgIG5ldyBSZWFkYWJs
ZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgY29uc3QgdmlldyA9IG5ldyBVaW50OEFy
cmF5KFtdKTsKKyAgICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiBjLmVucXVl
dWUodmlldykpOworICAgIH0sCisgICAgdHlwZTogJ2J5dGVzJworICB9KTsKK30sICdSZWFkYWJs
ZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBlbnF1ZXVpbmcgYSB6ZXJvLWxlbmd0aCBidWZmZXIg
dGhyb3dzJyk7CisKK3Rlc3QoKCkgPT4geworICBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0
YXJ0KGMpIHsKKyAgICAgIGNvbnN0IHZpZXcgPSBuZXcgVWludDhBcnJheShuZXcgQXJyYXlCdWZm
ZXIoMTApLCAwLCAwKTsKKyAgICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiBj
LmVucXVldWUodmlldykpOworICAgIH0sCisgICAgdHlwZTogJ2J5dGVzJworICB9KTsKK30sICdS
ZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBlbnF1ZXVpbmcgYSB6ZXJvLWxlbmd0aCB2
aWV3IG9uIGEgbm9uLXplcm8tbGVuZ3RoIGJ1ZmZlciB0aHJvd3MnKTsKKworcHJvbWlzZV90ZXN0
KHQgPT4geworICBjb25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0
KGMpIHsKKyAgICAgIGMuZW5xdWV1ZShuZXcgVWludDhBcnJheShbMSwgMiwgM10pKTsKKyAgICB9
LAorICAgIHR5cGU6ICdieXRlcycKKyAgfSk7CisgIGNvbnN0IHJlYWRlciA9IHN0cmVhbS5nZXRS
ZWFkZXIoeyBtb2RlOiAnYnlvYicgfSk7CisKKyAgY29uc3QgdmlldyA9IG5ldyBVaW50OEFycmF5
KFs0LCA1LCA2XSk7CisgIHJldHVybiByZWFkZXIucmVhZCh2aWV3KS50aGVuKCgpID0+IHsKKyAg
ICAvLyB2aWV3IGlzIG5vdyBkZXRhY2hlZAorICAgIHJldHVybiBwcm9taXNlX3JlamVjdHNfanMo
dCwgVHlwZUVycm9yLCByZWFkZXIucmVhZCh2aWV3KSk7CisgIH0pOworfSwgJ1JlYWRhYmxlU3Ry
ZWFtIHdpdGggYnl0ZSBzb3VyY2U6IHJlYWRpbmcgaW50byBhbiBhbHJlYWR5LWRldGFjaGVkIGJ1
ZmZlciByZWplY3RzJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgY29uc3Qgc3RyZWFtID0g
bmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjLmVucXVldWUobmV3
IFVpbnQ4QXJyYXkoWzEsIDIsIDNdKSk7CisgICAgfSwKKyAgICB0eXBlOiAnYnl0ZXMnCisgIH0p
OworICBjb25zdCByZWFkZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKHsgbW9kZTogJ2J5b2InIH0pOwor
CisgIGNvbnN0IHZpZXcgPSBuZXcgVWludDhBcnJheSgpOworICByZXR1cm4gcHJvbWlzZV9yZWpl
Y3RzX2pzKHQsIFR5cGVFcnJvciwgcmVhZGVyLnJlYWQodmlldykpOworfSwgJ1JlYWRhYmxlU3Ry
ZWFtIHdpdGggYnl0ZSBzb3VyY2U6IHJlYWRpbmcgaW50byBhIHplcm8tbGVuZ3RoIGJ1ZmZlciBy
ZWplY3RzJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgY29uc3Qgc3RyZWFtID0gbmV3IFJl
YWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjLmVucXVldWUobmV3IFVpbnQ4
QXJyYXkoWzEsIDIsIDNdKSk7CisgICAgfSwKKyAgICB0eXBlOiAnYnl0ZXMnCisgIH0pOworICBj
b25zdCByZWFkZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKHsgbW9kZTogJ2J5b2InIH0pOworCisgIGNv
bnN0IHZpZXcgPSBuZXcgVWludDhBcnJheShuZXcgQXJyYXlCdWZmZXIoMTApLCAwLCAwKTsKKyAg
cmV0dXJuIHByb21pc2VfcmVqZWN0c19qcyh0LCBUeXBlRXJyb3IsIHJlYWRlci5yZWFkKHZpZXcp
KTsKK30sICdSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiByZWFkaW5nIGludG8gYSB6
ZXJvLWxlbmd0aCB2aWV3IG9uIGEgbm9uLXplcm8tbGVuZ3RoIGJ1ZmZlciByZWplY3RzJyk7CisK
K2FzeW5jX3Rlc3QodCA9PiB7CisgIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7
CisgICAgcHVsbDogdC5zdGVwX2Z1bmNfZG9uZShjID0+IHsKKyAgICAgIC8vIERldGFjaCBpdCBi
eSByZWFkaW5nIGludG8gaXQKKyAgICAgIHJlYWRlci5yZWFkKGMuYnlvYlJlcXVlc3Qudmlldyk7
CisKKyAgICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiBjLmJ5b2JSZXF1ZXN0
LnJlc3BvbmQoMSksCisgICAgICAgICdyZXNwb25kKCkgbXVzdCB0aHJvdyBpZiB0aGUgY29ycmVz
cG9uZGluZyB2aWV3IGhhcyBiZWNvbWUgZGV0YWNoZWQnKTsKKyAgICB9KSwKKyAgICB0eXBlOiAn
Ynl0ZXMnCisgIH0pOworICBjb25zdCByZWFkZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKHsgbW9kZTog
J2J5b2InIH0pOworCisgIHJlYWRlci5yZWFkKG5ldyBVaW50OEFycmF5KFs0LCA1LCA2XSkpOwor
fSwgJ1JlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IHJlc3BvbmQoKSB0aHJvd3MgaWYg
dGhlIEJZT0IgcmVxdWVzdFwncyBidWZmZXIgaGFzIGJlZW4gZGV0YWNoZWQgKGluIHRoZSAnICsK
KyAgICdyZWFkYWJsZSBzdGF0ZSknKTsKKworYXN5bmNfdGVzdCh0ID0+IHsKKyAgY29uc3Qgc3Ry
ZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBwdWxsOiB0LnN0ZXBfZnVuY19kb25lKGMg
PT4geworICAgICAgLy8gRGV0YWNoIGl0IGJ5IHJlYWRpbmcgaW50byBpdAorICAgICAgcmVhZGVy
LnJlYWQoYy5ieW9iUmVxdWVzdC52aWV3KTsKKworICAgICAgYy5jbG9zZSgpOworCisgICAgICBh
c3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4gYy5ieW9iUmVxdWVzdC5yZXNwb25kKDAp
LAorICAgICAgICAncmVzcG9uZCgpIG11c3QgdGhyb3cgaWYgdGhlIGNvcnJlc3BvbmRpbmcgdmll
dyBoYXMgYmVjb21lIGRldGFjaGVkJyk7CisgICAgfSksCisgICAgdHlwZTogJ2J5dGVzJworICB9
KTsKKyAgY29uc3QgcmVhZGVyID0gc3RyZWFtLmdldFJlYWRlcih7IG1vZGU6ICdieW9iJyB9KTsK
KworICByZWFkZXIucmVhZChuZXcgVWludDhBcnJheShbNCwgNSwgNl0pKTsKK30sICdSZWFkYWJs
ZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiByZXNwb25kKCkgdGhyb3dzIGlmIHRoZSBCWU9CIHJl
cXVlc3RcJ3MgYnVmZmVyIGhhcyBiZWVuIGRldGFjaGVkIChpbiB0aGUgJyArCisgICAnY2xvc2Vk
IHN0YXRlKScpOworCithc3luY190ZXN0KHQgPT4geworICBjb25zdCBzdHJlYW0gPSBuZXcgUmVh
ZGFibGVTdHJlYW0oeworICAgIHB1bGw6IHQuc3RlcF9mdW5jX2RvbmUoYyA9PiB7CisgICAgICAv
LyBEZXRhY2ggaXQgYnkgcmVhZGluZyBpbnRvIGl0CisgICAgICBjb25zdCB2aWV3ID0gbmV3IFVp
bnQ4QXJyYXkoWzEsIDIsIDNdKTsKKyAgICAgIHJlYWRlci5yZWFkKHZpZXcpOworCisgICAgICBh
c3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4gYy5ieW9iUmVxdWVzdC5yZXNwb25kV2l0
aE5ld1ZpZXcodmlldykpOworICAgIH0pLAorICAgIHR5cGU6ICdieXRlcycKKyAgfSk7CisgIGNv
bnN0IHJlYWRlciA9IHN0cmVhbS5nZXRSZWFkZXIoeyBtb2RlOiAnYnlvYicgfSk7CisKKyAgcmVh
ZGVyLnJlYWQobmV3IFVpbnQ4QXJyYXkoWzQsIDUsIDZdKSk7Cit9LCAnUmVhZGFibGVTdHJlYW0g
d2l0aCBieXRlIHNvdXJjZTogcmVzcG9uZFdpdGhOZXdWaWV3KCkgdGhyb3dzIGlmIHRoZSBzdXBw
bGllZCB2aWV3XCdzIGJ1ZmZlciBoYXMgYmVlbiBkZXRhY2hlZCAnICsKKyAgICAnKGluIHRoZSBy
ZWFkYWJsZSBzdGF0ZSknKTsKKworYXN5bmNfdGVzdCh0ID0+IHsKKyAgY29uc3Qgc3RyZWFtID0g
bmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBwdWxsOiB0LnN0ZXBfZnVuY19kb25lKGMgPT4gewor
ICAgICAgY29uc3QgdmlldyA9IG5ldyBVaW50OEFycmF5KCk7CisKKyAgICAgIGFzc2VydF90aHJv
d3NfanMoVHlwZUVycm9yLCAoKSA9PiBjLmJ5b2JSZXF1ZXN0LnJlc3BvbmRXaXRoTmV3Vmlldyh2
aWV3KSk7CisgICAgfSksCisgICAgdHlwZTogJ2J5dGVzJworICB9KTsKKyAgY29uc3QgcmVhZGVy
ID0gc3RyZWFtLmdldFJlYWRlcih7IG1vZGU6ICdieW9iJyB9KTsKKworICByZWFkZXIucmVhZChu
ZXcgVWludDhBcnJheShbNCwgNSwgNl0pKTsKK30sICdSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUg
c291cmNlOiByZXNwb25kV2l0aE5ld1ZpZXcoKSB0aHJvd3MgaWYgdGhlIHN1cHBsaWVkIHZpZXdc
J3MgYnVmZmVyIGlzIHplcm8tbGVuZ3RoICcgKworICAgICcoaW4gdGhlIHJlYWRhYmxlIHN0YXRl
KScpOworCithc3luY190ZXN0KHQgPT4geworICBjb25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGVT
dHJlYW0oeworICAgIHB1bGw6IHQuc3RlcF9mdW5jX2RvbmUoYyA9PiB7CisgICAgICBjb25zdCB2
aWV3ID0gbmV3IFVpbnQ4QXJyYXkobmV3IEFycmF5QnVmZmVyKDEwKSwgMCwgMCk7CisKKyAgICAg
IGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiBjLmJ5b2JSZXF1ZXN0LnJlc3BvbmRX
aXRoTmV3Vmlldyh2aWV3KSk7CisgICAgfSksCisgICAgdHlwZTogJ2J5dGVzJworICB9KTsKKyAg
Y29uc3QgcmVhZGVyID0gc3RyZWFtLmdldFJlYWRlcih7IG1vZGU6ICdieW9iJyB9KTsKKworICBy
ZWFkZXIucmVhZChuZXcgVWludDhBcnJheShbNCwgNSwgNl0pKTsKK30sICdSZWFkYWJsZVN0cmVh
bSB3aXRoIGJ5dGUgc291cmNlOiByZXNwb25kV2l0aE5ld1ZpZXcoKSB0aHJvd3MgaWYgdGhlIHN1
cHBsaWVkIHZpZXcgaXMgemVyby1sZW5ndGggb24gYSAnICsKKyAgICAnbm9uLXplcm8tbGVuZ3Ro
IGJ1ZmZlciAoaW4gdGhlIHJlYWRhYmxlIHN0YXRlKScpOworCithc3luY190ZXN0KHQgPT4gewor
ICBjb25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHB1bGw6IHQuc3RlcF9m
dW5jX2RvbmUoYyA9PiB7CisgICAgICAvLyBEZXRhY2ggaXQgYnkgcmVhZGluZyBpbnRvIGl0Cisg
ICAgICBjb25zdCB2aWV3ID0gbmV3IFVpbnQ4QXJyYXkoWzEsIDIsIDNdKTsKKyAgICAgIHJlYWRl
ci5yZWFkKHZpZXcpOworCisgICAgICBjLmNsb3NlKCk7CisKKyAgICAgIGNvbnN0IHplcm9MZW5n
dGhWaWV3ID0gbmV3IFVpbnQ4QXJyYXkodmlldy5idWZmZXIsIDAsIDApOworICAgICAgYXNzZXJ0
X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IGMuYnlvYlJlcXVlc3QucmVzcG9uZFdpdGhOZXdW
aWV3KHplcm9MZW5ndGhWaWV3KSk7CisgICAgfSksCisgICAgdHlwZTogJ2J5dGVzJworICB9KTsK
KyAgY29uc3QgcmVhZGVyID0gc3RyZWFtLmdldFJlYWRlcih7IG1vZGU6ICdieW9iJyB9KTsKKwor
ICByZWFkZXIucmVhZChuZXcgVWludDhBcnJheShbNCwgNSwgNl0pKTsKK30sICdSZWFkYWJsZVN0
cmVhbSB3aXRoIGJ5dGUgc291cmNlOiByZXNwb25kV2l0aE5ld1ZpZXcoKSB0aHJvd3MgaWYgdGhl
IHN1cHBsaWVkIHZpZXdcJ3MgYnVmZmVyIGhhcyBiZWVuIGRldGFjaGVkICcgKworICAgJyhpbiB0
aGUgY2xvc2VkIHN0YXRlKScpOworCithc3luY190ZXN0KHQgPT4geworICBjb25zdCBzdHJlYW0g
PSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHB1bGw6IHQuc3RlcF9mdW5jX2RvbmUoYyA9PiB7
CisgICAgICBjb25zdCB2aWV3ID0gbmV3IFVpbnQ4QXJyYXkoKTsKKworICAgICAgYy5jbG9zZSgp
OworCisgICAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4gYy5ieW9iUmVxdWVz
dC5yZXNwb25kV2l0aE5ld1ZpZXcodmlldykpOworICAgIH0pLAorICAgIHR5cGU6ICdieXRlcycK
KyAgfSk7CisgIGNvbnN0IHJlYWRlciA9IHN0cmVhbS5nZXRSZWFkZXIoeyBtb2RlOiAnYnlvYicg
fSk7CisKKyAgcmVhZGVyLnJlYWQobmV3IFVpbnQ4QXJyYXkoWzQsIDUsIDZdKSk7Cit9LCAnUmVh
ZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogcmVzcG9uZFdpdGhOZXdWaWV3KCkgdGhyb3dz
IGlmIHRoZSBzdXBwbGllZCB2aWV3XCdzIGJ1ZmZlciBpcyB6ZXJvLWxlbmd0aCAnICsKKyAgICco
aW4gdGhlIGNsb3NlZCBzdGF0ZSknKTsKKworYXN5bmNfdGVzdCh0ID0+IHsKKyAgY29uc3Qgc3Ry
ZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBwdWxsOiB0LnN0ZXBfZnVuY19kb25lKGMg
PT4geworICAgICAgY29uc3QgdmlldyA9IG5ldyBVaW50OEFycmF5KG5ldyBBcnJheUJ1ZmZlcigx
MCksIDAsIDApOworCisgICAgICBjLmNsb3NlKCk7CisKKyAgICAgIGFzc2VydF90aHJvd3NfanMo
VHlwZUVycm9yLCAoKSA9PiBjLmJ5b2JSZXF1ZXN0LnJlc3BvbmRXaXRoTmV3Vmlldyh2aWV3KSk7
CisgICAgfSksCisgICAgdHlwZTogJ2J5dGVzJworICB9KTsKKyAgY29uc3QgcmVhZGVyID0gc3Ry
ZWFtLmdldFJlYWRlcih7IG1vZGU6ICdieW9iJyB9KTsKKworICByZWFkZXIucmVhZChuZXcgVWlu
dDhBcnJheShbNCwgNSwgNl0pKTsKK30sICdSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNl
OiByZXNwb25kV2l0aE5ld1ZpZXcoKSB0aHJvd3MgaWYgdGhlIHN1cHBsaWVkIHZpZXcgaXMgemVy
by1sZW5ndGggb24gYSAnICsKKyAgICAnbm9uLXplcm8tbGVuZ3RoIGJ1ZmZlciAoaW4gdGhlIGNs
b3NlZCBzdGF0ZSknKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMvYmFkLWJ1ZmZlcnMt
YW5kLXZpZXdzLmFueS53b3JrZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFtcy9iYWQt
YnVmZmVycy1hbmQtdmlld3MuYW55Lndvcmtlci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTRh
ZDdkOGQ5Yzg3MjFkNmE4ZThjZWVlNGI5YTdlMWQ2MDBmZTVjOAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFk
YWJsZS1ieXRlLXN0cmVhbXMvYmFkLWJ1ZmZlcnMtYW5kLXZpZXdzLmFueS53b3JrZXItZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsMzAgQEAKKworSGFybmVzcyBFcnJvciAoVElNRU9VVCksIG1lc3Nh
Z2UgPSBudWxsCisKK0ZBSUwgUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogcmVhZCgp
aW5nIGZyb20gYSBjbG9zZWQgc3RyZWFtIHN0aWxsIHRyYW5zZmVycyB0aGUgYnVmZmVyIGFzc2Vy
dF9ub3RfZXF1YWxzOiBhIGRpZmZlcmVudCBBcnJheUJ1ZmZlciBtdXN0IHVuZGVybGllIHRoZSB2
YWx1ZSBnb3QgZGlzYWxsb3dlZCB2YWx1ZSBvYmplY3QgIltvYmplY3QgQXJyYXlCdWZmZXJdIgor
RkFJTCBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiByZWFkKClpbmcgZnJvbSBhIHN0
cmVhbSB3aXRoIHF1ZXVlZCBjaHVua3Mgc3RpbGwgdHJhbnNmZXJzIHRoZSBidWZmZXIgYXNzZXJ0
X25vdF9lcXVhbHM6IGEgZGlmZmVyZW50IEFycmF5QnVmZmVyIG11c3QgdW5kZXJsaWUgdGhlIHZh
bHVlIGdvdCBkaXNhbGxvd2VkIHZhbHVlIG9iamVjdCAiW29iamVjdCBBcnJheUJ1ZmZlcl0iCitG
QUlMIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IGVucXVldWluZyBhbiBhbHJlYWR5
LWRldGFjaGVkIGJ1ZmZlciB0aHJvd3MgYXNzZXJ0X3Rocm93c19qczogZnVuY3Rpb24gIigpID0+
IGMuZW5xdWV1ZSh2aWV3KSIgZGlkIG5vdCB0aHJvdworRkFJTCBSZWFkYWJsZVN0cmVhbSB3aXRo
IGJ5dGUgc291cmNlOiBlbnF1ZXVpbmcgYSB6ZXJvLWxlbmd0aCBidWZmZXIgdGhyb3dzIGFzc2Vy
dF90aHJvd3NfanM6IGZ1bmN0aW9uICIoKSA9PiBjLmVucXVldWUodmlldykiIGRpZCBub3QgdGhy
b3cKK0ZBSUwgUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogZW5xdWV1aW5nIGEgemVy
by1sZW5ndGggdmlldyBvbiBhIG5vbi16ZXJvLWxlbmd0aCBidWZmZXIgdGhyb3dzIGFzc2VydF90
aHJvd3NfanM6IGZ1bmN0aW9uICIoKSA9PiBjLmVucXVldWUodmlldykiIGRpZCBub3QgdGhyb3cK
K1RJTUVPVVQgUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogcmVhZGluZyBpbnRvIGFu
IGFscmVhZHktZGV0YWNoZWQgYnVmZmVyIHJlamVjdHMgVGVzdCB0aW1lZCBvdXQKK05PVFJVTiBS
ZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiByZWFkaW5nIGludG8gYSB6ZXJvLWxlbmd0
aCBidWZmZXIgcmVqZWN0cyAKK05PVFJVTiBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNl
OiByZWFkaW5nIGludG8gYSB6ZXJvLWxlbmd0aCB2aWV3IG9uIGEgbm9uLXplcm8tbGVuZ3RoIGJ1
ZmZlciByZWplY3RzIAorRkFJTCBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiByZXNw
b25kKCkgdGhyb3dzIGlmIHRoZSBCWU9CIHJlcXVlc3QncyBidWZmZXIgaGFzIGJlZW4gZGV0YWNo
ZWQgKGluIHRoZSByZWFkYWJsZSBzdGF0ZSkgYXNzZXJ0X3Rocm93c19qczogcmVzcG9uZCgpIG11
c3QgdGhyb3cgaWYgdGhlIGNvcnJlc3BvbmRpbmcgdmlldyBoYXMgYmVjb21lIGRldGFjaGVkIGZ1
bmN0aW9uICIoKSA9PiBjLmJ5b2JSZXF1ZXN0LnJlc3BvbmQoMSkiIGRpZCBub3QgdGhyb3cKK0ZB
SUwgUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogcmVzcG9uZCgpIHRocm93cyBpZiB0
aGUgQllPQiByZXF1ZXN0J3MgYnVmZmVyIGhhcyBiZWVuIGRldGFjaGVkIChpbiB0aGUgY2xvc2Vk
IHN0YXRlKSBhc3NlcnRfdGhyb3dzX2pzOiByZXNwb25kKCkgbXVzdCB0aHJvdyBpZiB0aGUgY29y
cmVzcG9uZGluZyB2aWV3IGhhcyBiZWNvbWUgZGV0YWNoZWQgZnVuY3Rpb24gIigpID0+IGMuYnlv
YlJlcXVlc3QucmVzcG9uZCgwKSIgZGlkIG5vdCB0aHJvdworRkFJTCBSZWFkYWJsZVN0cmVhbSB3
aXRoIGJ5dGUgc291cmNlOiByZXNwb25kV2l0aE5ld1ZpZXcoKSB0aHJvd3MgaWYgdGhlIHN1cHBs
aWVkIHZpZXcncyBidWZmZXIgaGFzIGJlZW4gZGV0YWNoZWQgKGluIHRoZSByZWFkYWJsZSBzdGF0
ZSkgYXNzZXJ0X3Rocm93c19qczogZnVuY3Rpb24gIigpID0+IGMuYnlvYlJlcXVlc3QucmVzcG9u
ZFdpdGhOZXdWaWV3KHZpZXcpIiBkaWQgbm90IHRocm93CitGQUlMIFJlYWRhYmxlU3RyZWFtIHdp
dGggYnl0ZSBzb3VyY2U6IHJlc3BvbmRXaXRoTmV3VmlldygpIHRocm93cyBpZiB0aGUgc3VwcGxp
ZWQgdmlldydzIGJ1ZmZlciBpcyB6ZXJvLWxlbmd0aCAoaW4gdGhlIHJlYWRhYmxlIHN0YXRlKSBh
c3NlcnRfdGhyb3dzX2pzOiBmdW5jdGlvbiAiKCkgPT4gYy5ieW9iUmVxdWVzdC5yZXNwb25kV2l0
aE5ld1ZpZXcodmlldykiIHRocmV3IG9iamVjdCAiUmFuZ2VFcnJvcjogSW52YWxpZCB2YWx1ZSBm
b3Igdmlldy5ieXRlTGVuZ3RoIiAoIlJhbmdlRXJyb3IiKSBleHBlY3RlZCBpbnN0YW5jZSBvZiBm
dW5jdGlvbiAiZnVuY3Rpb24gVHlwZUVycm9yKCkgeworICAgIFtuYXRpdmUgY29kZV0KK30iICgi
VHlwZUVycm9yIikKK0ZBSUwgUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogcmVzcG9u
ZFdpdGhOZXdWaWV3KCkgdGhyb3dzIGlmIHRoZSBzdXBwbGllZCB2aWV3IGlzIHplcm8tbGVuZ3Ro
IG9uIGEgbm9uLXplcm8tbGVuZ3RoIGJ1ZmZlciAoaW4gdGhlIHJlYWRhYmxlIHN0YXRlKSBhc3Nl
cnRfdGhyb3dzX2pzOiBmdW5jdGlvbiAiKCkgPT4gYy5ieW9iUmVxdWVzdC5yZXNwb25kV2l0aE5l
d1ZpZXcodmlldykiIHRocmV3IG9iamVjdCAiUmFuZ2VFcnJvcjogSW52YWxpZCB2YWx1ZSBmb3Ig
dmlldy5ieXRlTGVuZ3RoIiAoIlJhbmdlRXJyb3IiKSBleHBlY3RlZCBpbnN0YW5jZSBvZiBmdW5j
dGlvbiAiZnVuY3Rpb24gVHlwZUVycm9yKCkgeworICAgIFtuYXRpdmUgY29kZV0KK30iICgiVHlw
ZUVycm9yIikKK0ZBSUwgUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogcmVzcG9uZFdp
dGhOZXdWaWV3KCkgdGhyb3dzIGlmIHRoZSBzdXBwbGllZCB2aWV3J3MgYnVmZmVyIGhhcyBiZWVu
IGRldGFjaGVkIChpbiB0aGUgY2xvc2VkIHN0YXRlKSBhc3NlcnRfdGhyb3dzX2pzOiBmdW5jdGlv
biAiKCkgPT4gYy5ieW9iUmVxdWVzdC5yZXNwb25kV2l0aE5ld1ZpZXcoemVyb0xlbmd0aFZpZXcp
IiB0aHJldyBvYmplY3QgIlJhbmdlRXJyb3I6IEludmFsaWQgdmFsdWUgZm9yIHZpZXcuYnl0ZUxl
bmd0aCIgKCJSYW5nZUVycm9yIikgZXhwZWN0ZWQgaW5zdGFuY2Ugb2YgZnVuY3Rpb24gImZ1bmN0
aW9uIFR5cGVFcnJvcigpIHsKKyAgICBbbmF0aXZlIGNvZGVdCit9IiAoIlR5cGVFcnJvciIpCitG
QUlMIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IHJlc3BvbmRXaXRoTmV3Vmlldygp
IHRocm93cyBpZiB0aGUgc3VwcGxpZWQgdmlldydzIGJ1ZmZlciBpcyB6ZXJvLWxlbmd0aCAoaW4g
dGhlIGNsb3NlZCBzdGF0ZSkgYXNzZXJ0X3Rocm93c19qczogZnVuY3Rpb24gIigpID0+IGMuYnlv
YlJlcXVlc3QucmVzcG9uZFdpdGhOZXdWaWV3KHZpZXcpIiB0aHJldyBvYmplY3QgIlJhbmdlRXJy
b3I6IEludmFsaWQgdmFsdWUgZm9yIHZpZXcuYnl0ZUxlbmd0aCIgKCJSYW5nZUVycm9yIikgZXhw
ZWN0ZWQgaW5zdGFuY2Ugb2YgZnVuY3Rpb24gImZ1bmN0aW9uIFR5cGVFcnJvcigpIHsKKyAgICBb
bmF0aXZlIGNvZGVdCit9IiAoIlR5cGVFcnJvciIpCitGQUlMIFJlYWRhYmxlU3RyZWFtIHdpdGgg
Ynl0ZSBzb3VyY2U6IHJlc3BvbmRXaXRoTmV3VmlldygpIHRocm93cyBpZiB0aGUgc3VwcGxpZWQg
dmlldyBpcyB6ZXJvLWxlbmd0aCBvbiBhIG5vbi16ZXJvLWxlbmd0aCBidWZmZXIgKGluIHRoZSBj
bG9zZWQgc3RhdGUpIGFzc2VydF90aHJvd3NfanM6IGZ1bmN0aW9uICIoKSA9PiBjLmJ5b2JSZXF1
ZXN0LnJlc3BvbmRXaXRoTmV3Vmlldyh2aWV3KSIgdGhyZXcgb2JqZWN0ICJSYW5nZUVycm9yOiBJ
bnZhbGlkIHZhbHVlIGZvciB2aWV3LmJ5dGVMZW5ndGgiICgiUmFuZ2VFcnJvciIpIGV4cGVjdGVk
IGluc3RhbmNlIG9mIGZ1bmN0aW9uICJmdW5jdGlvbiBUeXBlRXJyb3IoKSB7CisgICAgW25hdGl2
ZSBjb2RlXQorfSIgKCJUeXBlRXJyb3IiKQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1z
L2JhZC1idWZmZXJzLWFuZC12aWV3cy5hbnkud29ya2VyLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1z
L2JhZC1idWZmZXJzLWFuZC12aWV3cy5hbnkud29ya2VyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjM4Mjkx
MzUyOGU2OTNiM2E1ZDU2YzY2MGE0NTA2MDk4MGI1NDhjMwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJs
ZS1ieXRlLXN0cmVhbXMvYmFkLWJ1ZmZlcnMtYW5kLXZpZXdzLmFueS53b3JrZXIuaHRtbApAQCAt
MCwwICsxIEBACis8IS0tIFRoaXMgZmlsZSBpcyByZXF1aXJlZCBmb3IgV2ViS2l0IHRlc3QgaW5m
cmFzdHJ1Y3R1cmUgdG8gcnVuIHRoZSB0ZW1wbGF0ZWQgdGVzdCAtLT4KXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL2JyYW5kLWNoZWNrcy5k
ZWRpY2F0ZWR3b3JrZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFtcy9icmFuZC1jaGVj
a3MuZGVkaWNhdGVkd29ya2VyLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMTYwMzIyZmI4ZGQxMTk5MzU0MmYwZTMzN2Y1YjAyNmU4NGM3YjEwNy4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL2Jy
YW5kLWNoZWNrcy5kZWRpY2F0ZWR3b3JrZXItZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAg
LTEsMTYgKzAsMCBAQAotCi1QQVNTIENhbiBnZXQgdGhlIFJlYWRhYmxlU3RyZWFtQllPQlJlYWRl
ciBjb25zdHJ1Y3RvciBpbmRpcmVjdGx5IAotUEFTUyBDYW4gZ2V0IHRoZSBSZWFkYWJsZUJ5dGVT
dHJlYW1Db250cm9sbGVyIGNvbnN0cnVjdG9yIGluZGlyZWN0bHkgCi1QQVNTIFJlYWRhYmxlU3Ry
ZWFtQllPQlJlYWRlciBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrIG9uIGl0cyBhcmd1bWVudCAKLVBB
U1MgUmVhZGFibGVTdHJlYW1CWU9CUmVhZGVyLnByb3RvdHlwZS5jbG9zZWQgZW5mb3JjZXMgYSBi
cmFuZCBjaGVjayAKLVBBU1MgUmVhZGFibGVTdHJlYW1CWU9CUmVhZGVyLnByb3RvdHlwZS5jYW5j
ZWwgZW5mb3JjZXMgYSBicmFuZCBjaGVjayAKLVBBU1MgUmVhZGFibGVTdHJlYW1CWU9CUmVhZGVy
LnByb3RvdHlwZS5yZWFkIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2sgCi1QQVNTIFJlYWRhYmxlU3Ry
ZWFtQllPQlJlYWRlci5wcm90b3R5cGUucmVsZWFzZUxvY2sgZW5mb3JjZXMgYSBicmFuZCBjaGVj
ayAKLVBBU1MgUmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlciBlbmZvcmNlcyBhIGJyYW5kIGNo
ZWNrIG9uIGl0cyBhcmd1bWVudHMgCi1QQVNTIFJlYWRhYmxlQnl0ZVN0cmVhbUNvbnRyb2xsZXIg
Y2FuJ3QgYmUgZ2l2ZW4gYSBmdWxseS1jb25zdHJ1Y3RlZCBSZWFkYWJsZVN0cmVhbSAKLVBBU1Mg
UmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlci5wcm90b3R5cGUuYnlvYlJlcXVlc3QgZW5mb3Jj
ZXMgYSBicmFuZCBjaGVjayAKLVBBU1MgUmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlci5wcm90
b3R5cGUuY2xvc2UgZW5mb3JjZXMgYSBicmFuZCBjaGVjayAKLVBBU1MgUmVhZGFibGVCeXRlU3Ry
ZWFtQ29udHJvbGxlci5wcm90b3R5cGUuZW5xdWV1ZSBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrIAot
UEFTUyBSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyLnByb3RvdHlwZS5lcnJvciBlbmZvcmNl
cyBhIGJyYW5kIGNoZWNrIAotUEFTUyBSZWFkYWJsZVN0cmVhbUJZT0JSZXF1ZXN0IGVuZm9yY2Vz
IGJyYW5kIGNoZWNrcyAKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFtcy9icmFuZC1jaGVj
a3MuZGVkaWNhdGVkd29ya2VyLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL2JyYW5kLWNoZWNrcy5k
ZWRpY2F0ZWR3b3JrZXIuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmIzZjEx
YTkwZTI4MWI5NmFhYjQ2OTVkN2NhYjA0Y2M0MzZlOGYwNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL2JyYW5kLWNoZWNrcy5k
ZWRpY2F0ZWR3b3JrZXIuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLTwhRE9D
VFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHRpdGxlPmJyYW5kLWNoZWNrcy5q
cyBkZWRpY2F0ZWQgd29ya2VyIHdyYXBwZXIgZmlsZTwvdGl0bGU+Ci0KLTxzY3JpcHQgc3JjPSIv
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLQotPHNjcmlwdD4KLSd1c2Ugc3Ry
aWN0JzsKLWZldGNoX3Rlc3RzX2Zyb21fd29ya2VyKG5ldyBXb3JrZXIoJ2JyYW5kLWNoZWNrcy5q
cycpKTsKLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFtcy9icmFuZC1jaGVj
a3MuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMvYnJhbmQtY2hlY2tzLmh0bWwKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDk4ZDJlMjgxZmZhZjZmMGI0MDQ2YjMwMjk2YjJkMDlmYjFmM2Rl
OWYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLWJ5
dGUtc3RyZWFtcy9icmFuZC1jaGVja3MuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAg
QEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHRpdGxlPmJyYW5k
LWNoZWNrcy5qcyBicm93c2VyIGNvbnRleHQgd3JhcHBlciBmaWxlPC90aXRsZT4KLQotPHNjcmlw
dCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9
Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotCi08c2NyaXB0IHNy
Yz0iLi4vcmVzb3VyY2VzL3Rlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgotCi08c2NyaXB0IHNyYz0i
YnJhbmQtY2hlY2tzLmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMv
YnJhbmQtY2hlY2tzLmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFtcy9icmFuZC1jaGVja3MuanMKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcwMmM2NTMwMTY1YzJiNjM2NzZlNjAwY2JkZmU0ODE5
YmU1NDdlNjcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRh
YmxlLWJ5dGUtc3RyZWFtcy9icmFuZC1jaGVja3MuanMKKysrIC9kZXYvbnVsbApAQCAtMSwxOTQg
KzAsMCBAQAotJ3VzZSBzdHJpY3QnOwotCi1pZiAoc2VsZi5pbXBvcnRTY3JpcHRzKSB7Ci0gIHNl
bGYuaW1wb3J0U2NyaXB0cygnLi4vcmVzb3VyY2VzL3Rlc3QtdXRpbHMuanMnKTsKLSAgc2VsZi5p
bXBvcnRTY3JpcHRzKCcvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzJyk7Ci19Ci0KLWxldCBSZWFk
YWJsZVN0cmVhbUJZT0JSZWFkZXI7Ci1sZXQgUmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlcjsK
LQotdGVzdCgoKSA9PiB7Ci0KLSAgLy8gSXQncyBub3QgZXhwb3NlZCBnbG9iYWxseSwgYnV0IHdl
IHRlc3QgYSBmZXcgb2YgaXRzIHByb3BlcnRpZXMgaGVyZS4KLSAgUmVhZGFibGVTdHJlYW1CWU9C
UmVhZGVyID0gcmVhbFJTQllPQlJlYWRlcigpLmNvbnN0cnVjdG9yOwotCi0gIGFzc2VydF9lcXVh
bHMoUmVhZGFibGVTdHJlYW1CWU9CUmVhZGVyLm5hbWUsICdSZWFkYWJsZVN0cmVhbUJZT0JSZWFk
ZXInLCAnUmVhZGFibGVTdHJlYW1CWU9CUmVhZGVyIHNob3VsZCBiZSBzZXQnKTsKLQotfSwgJ0Nh
biBnZXQgdGhlIFJlYWRhYmxlU3RyZWFtQllPQlJlYWRlciBjb25zdHJ1Y3RvciBpbmRpcmVjdGx5
Jyk7Ci0KLXRlc3QoKCkgPT4gewotCi0gIC8vIEl0J3Mgbm90IGV4cG9zZWQgZ2xvYmFsbHksIGJ1
dCB3ZSB0ZXN0IGEgZmV3IG9mIGl0cyBwcm9wZXJ0aWVzIGhlcmUuCi0gIFJlYWRhYmxlQnl0ZVN0
cmVhbUNvbnRyb2xsZXIgPSByZWFsUkJTQ29udHJvbGxlcigpLmNvbnN0cnVjdG9yOwotCi0gIGFz
c2VydF9lcXVhbHMoUmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlci5uYW1lLCAnUmVhZGFibGVC
eXRlU3RyZWFtQ29udHJvbGxlcicsCi0gICAgICAgICAgICAgICAgJ1JlYWRhYmxlQnl0ZVN0cmVh
bUNvbnRyb2xsZXIgc2hvdWxkIGJlIHNldCcpOwotCi19LCAnQ2FuIGdldCB0aGUgUmVhZGFibGVC
eXRlU3RyZWFtQ29udHJvbGxlciBjb25zdHJ1Y3RvciBpbmRpcmVjdGx5Jyk7Ci0KLWZ1bmN0aW9u
IGZha2VSUygpIHsKLSAgcmV0dXJuIE9iamVjdC5zZXRQcm90b3R5cGVPZih7Ci0gICAgY2FuY2Vs
KCkgeyByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7IH0sCi0gICAgZ2V0UmVhZGVyKCkgeyByZXR1
cm4gcmVhbFJTQllPQlJlYWRlcigpOyB9LAotICAgIHBpcGVUaHJvdWdoKG9iaikgeyByZXR1cm4g
b2JqLnJlYWRhYmxlOyB9LAotICAgIHBpcGVUbygpIHsgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgp
OyB9LAotICAgIHRlZSgpIHsgcmV0dXJuIFtyZWFsUlMoKSwgcmVhbFJTKCldOyB9Ci0gIH0sIFJl
YWRhYmxlU3RyZWFtLnByb3RvdHlwZSk7Ci19Ci0KLWZ1bmN0aW9uIHJlYWxSUygpIHsKLSAgcmV0
dXJuIG5ldyBSZWFkYWJsZVN0cmVhbSgpOwotfQotCi1mdW5jdGlvbiBmYWtlUlNCWU9CUmVhZGVy
KCkgewotICByZXR1cm4gT2JqZWN0LnNldFByb3RvdHlwZU9mKHsKLSAgICBnZXQgY2xvc2VkKCkg
eyByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7IH0sCi0gICAgY2FuY2VsKCkgeyByZXR1cm4gUHJv
bWlzZS5yZXNvbHZlKCk7IH0sCi0gICAgcmVhZCgpIHsgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7
IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSk7IH0sCi0gICAgcmVsZWFzZUxvY2soKSB7
IHJldHVybjsgfQotICB9LCBSZWFkYWJsZVN0cmVhbUJZT0JSZWFkZXIucHJvdG90eXBlKTsKLX0K
LQotZnVuY3Rpb24gcmVhbFJTQllPQlJlYWRlcigpIHsKLSAgcmV0dXJuIG5ldyBSZWFkYWJsZVN0
cmVhbSh7IHR5cGU6ICdieXRlcycgfSkuZ2V0UmVhZGVyKHsgbW9kZTogJ2J5b2InIH0pOwotfQot
Ci1mdW5jdGlvbiBmYWtlUkJTQ29udHJvbGxlcigpIHsKLSAgcmV0dXJuIE9iamVjdC5zZXRQcm90
b3R5cGVPZih7Ci0gICAgY2xvc2UoKSB7IH0sCi0gICAgZW5xdWV1ZSgpIHsgfSwKLSAgICBlcnJv
cigpIHsgfQotICB9LCBSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyLnByb3RvdHlwZSk7Ci19
Ci0KLWZ1bmN0aW9uIHJlYWxSQlNDb250cm9sbGVyKCkgewotICBsZXQgY29udHJvbGxlcjsKLSAg
bmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0gICAgICBjb250cm9sbGVyID0g
YzsKLSAgICB9LAotICAgIHR5cGU6ICdieXRlcycKLSAgfSk7Ci0gIHJldHVybiBjb250cm9sbGVy
OwotfQotCi10ZXN0KCgpID0+IHsKLQotICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwg
KCkgPT4gbmV3IFJlYWRhYmxlU3RyZWFtQllPQlJlYWRlcihmYWtlUlMoKSksICdjb25zdHJ1Y3Rv
ciBzaG91bGQgdGhyb3cnKTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtQllPQlJlYWRlciBlbmZvcmNl
cyBhIGJyYW5kIGNoZWNrIG9uIGl0cyBhcmd1bWVudCcpOwotCi1wcm9taXNlX3Rlc3QodCA9PiB7
Ci0KLSAgcmV0dXJuIGdldHRlclJlamVjdHNGb3JBbGwodCwgUmVhZGFibGVTdHJlYW1CWU9CUmVh
ZGVyLnByb3RvdHlwZSwgJ2Nsb3NlZCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtm
YWtlUlNCWU9CUmVhZGVyKCksIHJlYWxSUygpLCByZWFsUkJTQ29udHJvbGxlcigpLCB1bmRlZmlu
ZWQsIG51bGxdKTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtQllPQlJlYWRlci5wcm90b3R5cGUuY2xv
c2VkIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2snKTsKLQotcHJvbWlzZV90ZXN0KHQgPT4gewotCi0g
IHJldHVybiBtZXRob2RSZWplY3RzRm9yQWxsKHQsIFJlYWRhYmxlU3RyZWFtQllPQlJlYWRlci5w
cm90b3R5cGUsICdjYW5jZWwnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZmFrZVJT
QllPQlJlYWRlcigpLCByZWFsUlMoKSwgcmVhbFJCU0NvbnRyb2xsZXIoKSwgdW5kZWZpbmVkLCBu
dWxsXSk7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbUJZT0JSZWFkZXIucHJvdG90eXBlLmNhbmNlbCBl
bmZvcmNlcyBhIGJyYW5kIGNoZWNrJyk7Ci0KLXByb21pc2VfdGVzdCh0ID0+IHsKLQotICByZXR1
cm4gbWV0aG9kUmVqZWN0c0ZvckFsbCh0LCBSZWFkYWJsZVN0cmVhbUJZT0JSZWFkZXIucHJvdG90
eXBlLCAncmVhZCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmYWtlUlNCWU9CUmVh
ZGVyKCksIHJlYWxSUygpLCByZWFsUkJTQ29udHJvbGxlcigpLCB1bmRlZmluZWQsIG51bGxdLCBb
bmV3IFVpbnQ4QXJyYXkoMSldKTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtQllPQlJlYWRlci5wcm90
b3R5cGUucmVhZCBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrJyk7Ci0KLXRlc3QoKCkgPT4gewotCi0g
IG1ldGhvZFRocm93c0ZvckFsbChSZWFkYWJsZVN0cmVhbUJZT0JSZWFkZXIucHJvdG90eXBlLCAn
cmVsZWFzZUxvY2snLAotICAgICAgICAgICAgICAgICAgICAgW2Zha2VSU0JZT0JSZWFkZXIoKSwg
cmVhbFJTKCksIHJlYWxSQlNDb250cm9sbGVyKCksIHVuZGVmaW5lZCwgbnVsbF0pOwotCi19LCAn
UmVhZGFibGVTdHJlYW1CWU9CUmVhZGVyLnByb3RvdHlwZS5yZWxlYXNlTG9jayBlbmZvcmNlcyBh
IGJyYW5kIGNoZWNrJyk7Ci0KLXRlc3QoKCkgPT4gewotCi0gIGFzc2VydF90aHJvd3MobmV3IFR5
cGVFcnJvcigpLCAoKSA9PiBuZXcgUmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlcihmYWtlUlMo
KSksCi0gICAgICAgICAgICAgICAgJ0NvbnN0cnVjdGluZyBhIFJlYWRhYmxlQnl0ZVN0cmVhbUNv
bnRyb2xsZXIgc2hvdWxkIHRocm93Jyk7Ci0KLX0sICdSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9s
bGVyIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2sgb24gaXRzIGFyZ3VtZW50cycpOwotCi10ZXN0KCgp
ID0+IHsKLQotICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gbmV3IFJlYWRh
YmxlQnl0ZVN0cmVhbUNvbnRyb2xsZXIocmVhbFJTKCkpLAotICAgICAgICAgICAgICAgICdDb25z
dHJ1Y3RpbmcgYSBSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyIHNob3VsZCB0aHJvdycpOwot
Ci19LCAnUmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlciBjYW5cJ3QgYmUgZ2l2ZW4gYSBmdWxs
eS1jb25zdHJ1Y3RlZCBSZWFkYWJsZVN0cmVhbScpOwotCi10ZXN0KCgpID0+IHsKLQotICBnZXR0
ZXJUaHJvd3NGb3JBbGwoUmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlci5wcm90b3R5cGUsICdi
eW9iUmVxdWVzdCcsCi0gICAgICAgICAgICAgICAgICAgICBbZmFrZVJCU0NvbnRyb2xsZXIoKSwg
cmVhbFJTKCksIHJlYWxSU0JZT0JSZWFkZXIoKSwgdW5kZWZpbmVkLCBudWxsXSk7Ci0KLX0sICdS
ZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyLnByb3RvdHlwZS5ieW9iUmVxdWVzdCBlbmZvcmNl
cyBhIGJyYW5kIGNoZWNrJyk7Ci0KLXRlc3QoKCkgPT4gewotCi0gIG1ldGhvZFRocm93c0ZvckFs
bChSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyLnByb3RvdHlwZSwgJ2Nsb3NlJywKLSAgICAg
ICAgICAgICAgICAgICAgIFtmYWtlUkJTQ29udHJvbGxlcigpLCByZWFsUlMoKSwgcmVhbFJTQllP
QlJlYWRlcigpLCB1bmRlZmluZWQsIG51bGxdKTsKLQotfSwgJ1JlYWRhYmxlQnl0ZVN0cmVhbUNv
bnRyb2xsZXIucHJvdG90eXBlLmNsb3NlIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2snKTsKLQotdGVz
dCgoKSA9PiB7Ci0KLSAgbWV0aG9kVGhyb3dzRm9yQWxsKFJlYWRhYmxlQnl0ZVN0cmVhbUNvbnRy
b2xsZXIucHJvdG90eXBlLCAnZW5xdWV1ZScsCi0gICAgICAgICAgICAgICAgICAgICBbZmFrZVJC
U0NvbnRyb2xsZXIoKSwgcmVhbFJTKCksIHJlYWxSU0JZT0JSZWFkZXIoKSwgdW5kZWZpbmVkLCBu
dWxsXSwgW25ldyBVaW50OEFycmF5KDEpXSk7Ci0KLX0sICdSZWFkYWJsZUJ5dGVTdHJlYW1Db250
cm9sbGVyLnByb3RvdHlwZS5lbnF1ZXVlIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2snKTsKLQotdGVz
dCgoKSA9PiB7Ci0KLSAgbWV0aG9kVGhyb3dzRm9yQWxsKFJlYWRhYmxlQnl0ZVN0cmVhbUNvbnRy
b2xsZXIucHJvdG90eXBlLCAnZXJyb3InLAotICAgICAgICAgICAgICAgICAgICAgW2Zha2VSQlND
b250cm9sbGVyKCksIHJlYWxSUygpLCByZWFsUlNCWU9CUmVhZGVyKCksIHVuZGVmaW5lZCwgbnVs
bF0pOwotCi19LCAnUmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlci5wcm90b3R5cGUuZXJyb3Ig
ZW5mb3JjZXMgYSBicmFuZCBjaGVjaycpOwotCi0vLyBSZWFkYWJsZVN0cmVhbUJZT0JSZXF1ZXN0
IGNhbiBvbmx5IGJlIGFjY2Vzc2VkIGFzeW5jaHJvbm91c2x5LCBzbyBjcmFtIGV2ZXJ5dGhpbmcg
aW50byBvbmUgdGVzdC4KLXByb21pc2VfdGVzdCh0ID0+IHsKLQotICBsZXQgUmVhZGFibGVTdHJl
YW1CWU9CUmVxdWVzdDsKLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHB1
bGwoY29udHJvbGxlcikgewotICAgICAgcmV0dXJuIHQuc3RlcCgoKSA9PiB7Ci0gICAgICAgIGNv
bnN0IGJ5b2JSZXF1ZXN0ID0gY29udHJvbGxlci5ieW9iUmVxdWVzdDsKLSAgICAgICAgUmVhZGFi
bGVTdHJlYW1CWU9CUmVxdWVzdCA9IGJ5b2JSZXF1ZXN0LmNvbnN0cnVjdG9yOwotICAgICAgICBi
cmFuZENoZWNrcygpOwotICAgICAgICBieW9iUmVxdWVzdC5yZXNwb25kKDEpOwotICAgICAgfSk7
Ci0gICAgfSwKLSAgICB0eXBlOiAnYnl0ZXMnCi0gIH0pOwotICBjb25zdCByZWFkZXIgPSBycy5n
ZXRSZWFkZXIoeyBtb2RlOiAnYnlvYicgfSk7Ci0gIHJldHVybiByZWFkZXIucmVhZChuZXcgVWlu
dDhBcnJheSgxKSk7Ci0KLSAgZnVuY3Rpb24gZmFrZVJTQllPQlJlcXVlc3QoKSB7Ci0gICAgcmV0
dXJuIE9iamVjdC5zZXRQcm90b3R5cGVPZih7Ci0gICAgICBnZXQgdmlldygpIHt9LAotICAgICAg
cmVzcG9uZCgpIHt9LAotICAgICAgcmVzcG9uZFdpdGhOZXdWaWV3KCkge30KLSAgICB9LCBSZWFk
YWJsZVN0cmVhbUJZT0JSZXF1ZXN0LnByb3RvdHlwZSk7Ci0gIH0KLQotICBmdW5jdGlvbiBicmFu
ZENoZWNrcygpIHsKLSAgICBmb3IgKGNvbnN0IGJhZENvbnRyb2xsZXIgb2YgW2Zha2VSQlNDb250
cm9sbGVyKCksIHJlYWxSUygpLCByZWFsUlNCWU9CUmVhZGVyKCksIHVuZGVmaW5lZCwgbnVsbF0p
IHsKLSAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBuZXcgUmVhZGFi
bGVTdHJlYW1CWU9CUmVxdWVzdChiYWRDb250cm9sbGVyLCBuZXcgVWludDhBcnJheSgxKSksCi0g
ICAgICAgICAgICAgICAgICAgICdSZWFkYWJsZVN0cmVhbUJZT0JSZXF1ZXN0IGNvbnN0cnVjdG9y
IG11c3QgdGhyb3cgZm9yIGFuIGludmFsaWQgY29udHJvbGxlciBhcmd1bWVudCcpOwotICAgIH0K
LSAgICBnZXR0ZXJUaHJvd3NGb3JBbGwoUmVhZGFibGVTdHJlYW1CWU9CUmVxdWVzdC5wcm90b3R5
cGUsICd2aWV3JywKLSAgICAgICAgICAgICAgICAgICAgICAgW2Zha2VSU0JZT0JSZXF1ZXN0KCks
IHJlYWxSUygpLCByZWFsUlNCWU9CUmVhZGVyKCksIHJlYWxSQlNDb250cm9sbGVyKCksIHVuZGVm
aW5lZCwgbnVsbF0pOwotICAgIG1ldGhvZFRocm93c0ZvckFsbChSZWFkYWJsZVN0cmVhbUJZT0JS
ZXF1ZXN0LnByb3RvdHlwZSwgJ3Jlc3BvbmQnLAotICAgICAgICAgICAgICAgICAgICAgICBbZmFr
ZVJTQllPQlJlcXVlc3QoKSwgcmVhbFJTKCksIHJlYWxSU0JZT0JSZWFkZXIoKSwgcmVhbFJCU0Nv
bnRyb2xsZXIoKSwgdW5kZWZpbmVkLCBudWxsXSwgWzFdKTsKLSAgICBtZXRob2RUaHJvd3NGb3JB
bGwoUmVhZGFibGVTdHJlYW1CWU9CUmVxdWVzdC5wcm90b3R5cGUsICdyZXNwb25kV2l0aE5ld1Zp
ZXcnLAotICAgICAgICAgICAgICAgICAgICAgICBbZmFrZVJTQllPQlJlcXVlc3QoKSwgcmVhbFJT
KCksIHJlYWxSU0JZT0JSZWFkZXIoKSwgcmVhbFJCU0NvbnRyb2xsZXIoKSwgdW5kZWZpbmVkLCBu
dWxsXSwKLSAgICAgICAgICAgICAgICAgICAgICAgW25ldyBVaW50OEFycmF5KDEpXSk7Ci0gIH0K
LQotfSwgJ1JlYWRhYmxlU3RyZWFtQllPQlJlcXVlc3QgZW5mb3JjZXMgYnJhbmQgY2hlY2tzJyk7
Ci0KLWRvbmUoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMvYnJhbmQtY2hlY2tzLnNl
cnZpY2V3b3JrZXIuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFtcy9icmFuZC1j
aGVja3Muc2VydmljZXdvcmtlci5odHRwcy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDEyMDhhMmMzNDc4ZGFkNDRiMWUzNGJmMjdiMTQ2OTJmODQ2OWIyNWQuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3Ry
ZWFtcy9icmFuZC1jaGVja3Muc2VydmljZXdvcmtlci5odHRwcy1leHBlY3RlZC50eHQKKysrIC9k
ZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi0KLVBBU1MgU2VydmljZSB3b3JrZXIgdGVzdCBzZXR1
cCAKLVBBU1MgQ2FuIGdldCB0aGUgUmVhZGFibGVTdHJlYW1CWU9CUmVhZGVyIGNvbnN0cnVjdG9y
IGluZGlyZWN0bHkgCi1QQVNTIENhbiBnZXQgdGhlIFJlYWRhYmxlQnl0ZVN0cmVhbUNvbnRyb2xs
ZXIgY29uc3RydWN0b3IgaW5kaXJlY3RseSAKLVBBU1MgUmVhZGFibGVTdHJlYW1CWU9CUmVhZGVy
IGVuZm9yY2VzIGEgYnJhbmQgY2hlY2sgb24gaXRzIGFyZ3VtZW50IAotUEFTUyBSZWFkYWJsZVN0
cmVhbUJZT0JSZWFkZXIucHJvdG90eXBlLmNsb3NlZCBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrIAot
UEFTUyBSZWFkYWJsZVN0cmVhbUJZT0JSZWFkZXIucHJvdG90eXBlLmNhbmNlbCBlbmZvcmNlcyBh
IGJyYW5kIGNoZWNrIAotUEFTUyBSZWFkYWJsZVN0cmVhbUJZT0JSZWFkZXIucHJvdG90eXBlLnJl
YWQgZW5mb3JjZXMgYSBicmFuZCBjaGVjayAKLVBBU1MgUmVhZGFibGVTdHJlYW1CWU9CUmVhZGVy
LnByb3RvdHlwZS5yZWxlYXNlTG9jayBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrIAotUEFTUyBSZWFk
YWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2sgb24gaXRzIGFy
Z3VtZW50cyAKLVBBU1MgUmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlciBjYW4ndCBiZSBnaXZl
biBhIGZ1bGx5LWNvbnN0cnVjdGVkIFJlYWRhYmxlU3RyZWFtIAotUEFTUyBSZWFkYWJsZUJ5dGVT
dHJlYW1Db250cm9sbGVyLnByb3RvdHlwZS5ieW9iUmVxdWVzdCBlbmZvcmNlcyBhIGJyYW5kIGNo
ZWNrIAotUEFTUyBSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyLnByb3RvdHlwZS5jbG9zZSBl
bmZvcmNlcyBhIGJyYW5kIGNoZWNrIAotUEFTUyBSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVy
LnByb3RvdHlwZS5lbnF1ZXVlIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2sgCi1QQVNTIFJlYWRhYmxl
Qnl0ZVN0cmVhbUNvbnRyb2xsZXIucHJvdG90eXBlLmVycm9yIGVuZm9yY2VzIGEgYnJhbmQgY2hl
Y2sgCi1QQVNTIFJlYWRhYmxlU3RyZWFtQllPQlJlcXVlc3QgZW5mb3JjZXMgYnJhbmQgY2hlY2tz
IAotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL2JyYW5kLWNoZWNrcy5zZXJ2aWNld29y
a2VyLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL2JyYW5kLWNoZWNrcy5zZXJ2aWNld29y
a2VyLmh0dHBzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI0MzljZGI5NWU5
ODliN2U3NDI3NTYyY2U2MjdhZDE3YzgyY2I5NzUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFtcy9icmFuZC1jaGVja3Muc2Vydmlj
ZXdvcmtlci5odHRwcy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotPCFET0NU
WVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08dGl0bGU+YnJhbmQtY2hlY2tzLmpz
IHNlcnZpY2Ugd29ya2VyIHdyYXBwZXIgZmlsZTwvdGl0bGU+Ci0KLTxzY3JpcHQgc3JjPSIvcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvc2VydmljZS13
b3JrZXJzL3NlcnZpY2Utd29ya2VyL3Jlc291cmNlcy90ZXN0LWhlbHBlcnMuc3ViLmpzIj48L3Nj
cmlwdD4KLQotPHNjcmlwdD4KLSd1c2Ugc3RyaWN0JzsKLXNlcnZpY2Vfd29ya2VyX3Rlc3QoJ2Jy
YW5kLWNoZWNrcy5qcycsICdTZXJ2aWNlIHdvcmtlciB0ZXN0IHNldHVwJyk7Ci08L3NjcmlwdD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMvYnJhbmQtY2hlY2tzLnNoYXJlZHdvcmtlci1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL2JyYW5kLWNoZWNrcy5zaGFyZWR3b3JrZXIt
ZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwOWQ1ZDI1MDlkNzg0
N2U4Y2Q2ZmU2NjA2YWE2MGNkZDMzYWE0NzRlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMvYnJhbmQtY2hlY2tzLnNoYXJlZHdv
cmtlci1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLUNPTlNPTEUg
TUVTU0FHRTogUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IFNoYXJlZFdvcmtl
cgotCi1IYXJuZXNzIEVycm9yIChGQUlMKSwgbWVzc2FnZSA9IFJlZmVyZW5jZUVycm9yOiBDYW4n
dCBmaW5kIHZhcmlhYmxlOiBTaGFyZWRXb3JrZXIKLQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1z
dHJlYW1zL2JyYW5kLWNoZWNrcy5zaGFyZWR3b3JrZXIuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMv
YnJhbmQtY2hlY2tzLnNoYXJlZHdvcmtlci5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBjZmY3MmVjYTQ2MzQxZmRkNjY2M2VjMTM5ZDg3MWUxYjgxMzQ0YjIwLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMvYnJh
bmQtY2hlY2tzLnNoYXJlZHdvcmtlci5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBA
QAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08dGl0bGU+YnJhbmQt
Y2hlY2tzLmpzIHNoYXJlZCB3b3JrZXIgd3JhcHBlciBmaWxlPC90aXRsZT4KLQotPHNjcmlwdCBz
cmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9y
ZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotCi08c2NyaXB0PgotJ3Vz
ZSBzdHJpY3QnOwotZmV0Y2hfdGVzdHNfZnJvbV93b3JrZXIobmV3IFNoYXJlZFdvcmtlcignYnJh
bmQtY2hlY2tzLmpzJykpOwotPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1z
L2NvbnN0cnVjdC1ieW9iLXJlcXVlc3QuYW55LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVh
bXMvY29uc3RydWN0LWJ5b2ItcmVxdWVzdC5hbnktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUz
MTE1NzE1ZjA3Njg4YWNjNWQxZmM5ODMyNjIzYTlhYzg3OTY1NjIKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVh
ZGFibGUtYnl0ZS1zdHJlYW1zL2NvbnN0cnVjdC1ieW9iLXJlcXVlc3QuYW55LWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDUgQEAKK0NPTlNPTEUgTUVTU0FHRTogUmVmZXJlbmNlRXJyb3I6IENhbid0
IGZpbmQgdmFyaWFibGU6IFJlYWRhYmxlQnl0ZVN0cmVhbUNvbnRyb2xsZXIKKworSGFybmVzcyBF
cnJvciAoRkFJTCksIG1lc3NhZ2UgPSBSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJs
ZTogUmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlcgorCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRl
LXN0cmVhbXMvY29uc3RydWN0LWJ5b2ItcmVxdWVzdC5hbnkuaHRtbCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVh
bXMvY29uc3RydWN0LWJ5b2ItcmVxdWVzdC5hbnkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMzgyOTEzNTI4
ZTY5M2IzYTVkNTZjNjYwYTQ1MDYwOTgwYjU0OGMzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLWJ5
dGUtc3RyZWFtcy9jb25zdHJ1Y3QtYnlvYi1yZXF1ZXN0LmFueS5odG1sCkBAIC0wLDAgKzEgQEAK
KzwhLS0gVGhpcyBmaWxlIGlzIHJlcXVpcmVkIGZvciBXZWJLaXQgdGVzdCBpbmZyYXN0cnVjdHVy
ZSB0byBydW4gdGhlIHRlbXBsYXRlZCB0ZXN0IC0tPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMvY29uc3RydWN0LWJ5b2ItcmVxdWVzdC5h
bnkuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL2NvbnN0cnVjdC1ieW9iLXJlcXVlc3QuYW55LmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjEzODZkODQ1OTlhNGNkM2U3YjE5N2M5ODJmOGY5OWMzNWY1M2Q1YzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL2NvbnN0cnVjdC1ieW9iLXJlcXVlc3QuYW55
LmpzCkBAIC0wLDAgKzEsNTMgQEAKKy8vIE1FVEE6IGdsb2JhbD13aW5kb3csd29ya2VyLGpzc2hl
bGwKKy8vIE1FVEE6IHNjcmlwdD0uLi9yZXNvdXJjZXMvcnMtdXRpbHMuanMKKyd1c2Ugc3RyaWN0
JzsKKworLy8gUHJpb3IgdG8gd2hhdHdnL3N0cmVhbSM4NzAgaXQgd2FzIHBvc3NpYmxlIHRvIGNv
bnN0cnVjdCBhIFJlYWRhYmxlU3RyZWFtQllPQlJlcXVlc3QgZGlyZWN0bHkuIFRoaXMgbWFkZSBp
dCBwb3NzaWJsZQorLy8gdG8gY29uc3RydWN0IHJlcXVlc3RzIHRoYXQgd2VyZSBvdXQtb2Ytc3lu
YyB3aXRoIHRoZSBzdGF0ZSBvZiB0aGUgUmVhZGFibGVTdHJlYW0uIFRoZXkgY291bGQgdGhlbiBi
ZSB1c2VkIHRvIGNhbGwKKy8vIGludGVybmFsIG9wZXJhdGlvbnMsIHJlc3VsdGluZyBpbiBhc3Nl
cnRzIG9yIGJhZCBiZWhhdmlvdXIuIFRoaXMgZmlsZSBjb250YWlucyByZWdyZXNzaW9uIHRlc3Rz
IGZvciB0aGUgY2hhbmdlLgorCitmdW5jdGlvbiBnZXRSZWFsQnl0ZVN0cmVhbUNvbnRyb2xsZXIo
KSB7CisgIGxldCBjb250cm9sbGVyOworICBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0
KGMpIHsKKyAgICAgIGNvbnRyb2xsZXIgPSBjOworICAgIH0sCisgICAgdHlwZTogJ2J5dGVzJwor
ICB9KTsKKyAgcmV0dXJuIGNvbnRyb2xsZXI7Cit9CisKKy8vIENyZWF0ZSBhbiBvYmplY3QgcHJl
dGVuZGluZyB0byBoYXZlIHByb3RvdHlwZSB8cHJvdG90eXBlfCwgb2YgdHlwZSB8dHlwZXwuIHx0
eXBlfCBpcyBvbmUgb2YgInVuZGVmaW5lZCIsICJudWxsIiwKKy8vICJmYWtlIiwgb3IgInJlYWwi
LiAicmVhbCIgd2lsbCBjYWxsIHRoZSByZWFsT2JqZWN0Q3JlYXRvciBmdW5jdGlvbiB0byBnZXQg
YSByZWFsIGluc3RhbmNlIG9mIHRoZSBvYmplY3QuCitmdW5jdGlvbiBjcmVhdGVEdW1teU9iamVj
dChwcm90b3R5cGUsIHR5cGUsIHJlYWxPYmplY3RDcmVhdG9yKSB7CisgIHN3aXRjaCAodHlwZSkg
eworICAgIGNhc2UgJ3VuZGVmaW5lZCc6CisgICAgICByZXR1cm4gdW5kZWZpbmVkOworCisgICAg
Y2FzZSAnbnVsbCc6CisgICAgICByZXR1cm4gbnVsbDsKKworICAgIGNhc2UgJ2Zha2UnOgorICAg
ICAgcmV0dXJuIE9iamVjdC5jcmVhdGUocHJvdG90eXBlKTsKKworICAgIGNhc2UgJ3JlYWwnOgor
ICAgICAgcmV0dXJuIHJlYWxPYmplY3RDcmVhdG9yKCk7CisgIH0KKworICB0aHJvdyBuZXcgRXJy
b3IoJ25vdCByZWFjaGVkJyk7Cit9CisKK2NvbnN0IGR1bW15VHlwZXMgPSBbJ3VuZGVmaW5lZCcs
ICdudWxsJywgJ2Zha2UnLCAncmVhbCddOworCitmb3IgKGNvbnN0IGNvbnRyb2xsZXJUeXBlIG9m
IGR1bW15VHlwZXMpIHsKKyAgY29uc3QgY29udHJvbGxlciA9IGNyZWF0ZUR1bW15T2JqZWN0KFJl
YWRhYmxlQnl0ZVN0cmVhbUNvbnRyb2xsZXIucHJvdG90eXBlLCBjb250cm9sbGVyVHlwZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRSZWFsQnl0ZVN0cmVhbUNv
bnRyb2xsZXIpOworICBmb3IgKGNvbnN0IHZpZXdUeXBlIG9mIGR1bW15VHlwZXMpIHsKKyAgICBj
b25zdCB2aWV3ID0gY3JlYXRlRHVtbXlPYmplY3QoVWludDhBcnJheS5wcm90b3R5cGUsIHZpZXdU
eXBlLCAoKSA9PiBuZXcgVWludDhBcnJheSgxNikpOworICAgIHRlc3QoKCkgPT4geworICAgICAg
YXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IG5ldyBSZWFkYWJsZVN0cmVhbUJZT0JS
ZXF1ZXN0KGNvbnRyb2xsZXIsIHZpZXcpLAorICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbnN0
cnVjdG9yIHNob3VsZCB0aHJvdycpOworICAgIH0sIGBSZWFkYWJsZVN0cmVhbUJZT0JSZXF1ZXN0
IGNvbnN0cnVjdG9yIHNob3VsZCB0aHJvdyB3aGVuIHBhc3NlZCBhICR7Y29udHJvbGxlclR5cGV9
IGAgKworICAgICAgICBgUmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlciBhbmQgYSAke3ZpZXdU
eXBlfSB2aWV3YCk7CisgIH0KK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMvY29uc3Ry
dWN0LWJ5b2ItcmVxdWVzdC5hbnkud29ya2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVh
bXMvY29uc3RydWN0LWJ5b2ItcmVxdWVzdC5hbnkud29ya2VyLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5lMzExNTcxNWYwNzY4OGFjYzVkMWZjOTgzMjYyM2E5YWM4Nzk2NTYyCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJl
YW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFtcy9jb25zdHJ1Y3QtYnlvYi1yZXF1ZXN0LmFueS53b3Jr
ZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNSBAQAorQ09OU09MRSBNRVNTQUdFOiBSZWZlcmVu
Y2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogUmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxl
cgorCitIYXJuZXNzIEVycm9yIChGQUlMKSwgbWVzc2FnZSA9IFJlZmVyZW5jZUVycm9yOiBDYW4n
dCBmaW5kIHZhcmlhYmxlOiBSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyCisKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
L3JlYWRhYmxlLWJ5dGUtc3RyZWFtcy9jb25zdHJ1Y3QtYnlvYi1yZXF1ZXN0LmFueS53b3JrZXIu
aHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMvY29uc3RydWN0LWJ5b2ItcmVxdWVzdC5hbnkud29ya2Vy
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMjM4MjkxMzUyOGU2OTNiM2E1ZDU2YzY2MGE0NTA2MDk4MGI1NDhj
MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMvY29uc3RydWN0LWJ5b2ItcmVx
dWVzdC5hbnkud29ya2VyLmh0bWwKQEAgLTAsMCArMSBAQAorPCEtLSBUaGlzIGZpbGUgaXMgcmVx
dWlyZWQgZm9yIFdlYktpdCB0ZXN0IGluZnJhc3RydWN0dXJlIHRvIHJ1biB0aGUgdGVtcGxhdGVk
IHRlc3QgLS0+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLWJ5
dGUtc3RyZWFtcy9kZXRhY2hlZC1idWZmZXJzLmRlZGljYXRlZHdvcmtlci1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVh
ZGFibGUtYnl0ZS1zdHJlYW1zL2RldGFjaGVkLWJ1ZmZlcnMuZGVkaWNhdGVkd29ya2VyLWV4cGVj
dGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODI4MTFmYjc0NGExYWNiMTNl
M2RlN2NiMTAyMGU4Y2U0NzMwMWNjZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL2RldGFjaGVkLWJ1ZmZlcnMuZGVkaWNhdGVk
d29ya2VyLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLQotSGFy
bmVzcyBFcnJvciAoVElNRU9VVCksIG1lc3NhZ2UgPSBudWxsCi0KLUZBSUwgUmVhZGFibGVTdHJl
YW0gd2l0aCBieXRlIHNvdXJjZTogcmVhZCgpaW5nIGZyb20gYSBjbG9zZWQgc3RyZWFtIHN0aWxs
IHRyYW5zZmVycyB0aGUgYnVmZmVyIGFzc2VydF9ub3RfZXF1YWxzOiBhIGRpZmZlcmVudCBBcnJh
eUJ1ZmZlciBtdXN0IHVuZGVybGllIHRoZSB2YWx1ZSBnb3QgZGlzYWxsb3dlZCB2YWx1ZSBvYmpl
Y3QgIltvYmplY3QgQXJyYXlCdWZmZXJdIgotRkFJTCBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUg
c291cmNlOiByZWFkKClpbmcgZnJvbSBhIHN0cmVhbSB3aXRoIHF1ZXVlZCBjaHVua3Mgc3RpbGwg
dHJhbnNmZXJzIHRoZSBidWZmZXIgYXNzZXJ0X25vdF9lcXVhbHM6IGEgZGlmZmVyZW50IEFycmF5
QnVmZmVyIG11c3QgdW5kZXJsaWUgdGhlIHZhbHVlIGdvdCBkaXNhbGxvd2VkIHZhbHVlIG9iamVj
dCAiW29iamVjdCBBcnJheUJ1ZmZlcl0iCi1GQUlMIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBz
b3VyY2U6IGVucXVldWluZyBhbiBhbHJlYWR5LWRldGFjaGVkIGJ1ZmZlciB0aHJvd3MgYXNzZXJ0
X3Rocm93czogZW5xdWV1aW5nIGFuIGFscmVhZHktZGV0YWNoZWQgYnVmZmVyIG11c3QgdGhyb3cg
ZnVuY3Rpb24gIigpID0+IGMuZW5xdWV1ZSh2aWV3KSIgZGlkIG5vdCB0aHJvdwotVElNRU9VVCBS
ZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiByZWFkaW5nIGludG8gYW4gYWxyZWFkeS1k
ZXRhY2hlZCBidWZmZXIgcmVqZWN0cyBUZXN0IHRpbWVkIG91dAotRkFJTCBSZWFkYWJsZVN0cmVh
bSB3aXRoIGJ5dGUgc291cmNlOiByZXNwb25kKCkgdGhyb3dzIGlmIHRoZSBCWU9CIHJlcXVlc3Qn
cyBidWZmZXIgaGFzIGJlZW4gZGV0YWNoZWQgKGluIHRoZSByZWFkYWJsZSBzdGF0ZSkgYXNzZXJ0
X3Rocm93czogcmVzcG9uZCgpIG11c3QgdGhyb3cgaWYgdGhlIGNvcnJlc3BvbmRpbmcgdmlldyBo
YXMgYmVjb21lIGRldGFjaGVkIGZ1bmN0aW9uICIoKSA9PiBjLmJ5b2JSZXF1ZXN0LnJlc3BvbmQo
MSkiIGRpZCBub3QgdGhyb3cKLUZBSUwgUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTog
cmVzcG9uZCgpIHRocm93cyBpZiB0aGUgQllPQiByZXF1ZXN0J3MgYnVmZmVyIGhhcyBiZWVuIGRl
dGFjaGVkIChpbiB0aGUgY2xvc2VkIHN0YXRlKSBhc3NlcnRfdGhyb3dzOiByZXNwb25kKCkgbXVz
dCB0aHJvdyBpZiB0aGUgY29ycmVzcG9uZGluZyB2aWV3IGhhcyBiZWNvbWUgZGV0YWNoZWQgZnVu
Y3Rpb24gIigpID0+IGMuYnlvYlJlcXVlc3QucmVzcG9uZCgwKSIgZGlkIG5vdCB0aHJvdwotRkFJ
TCBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiByZXNwb25kV2l0aE5ld1ZpZXcoKSB0
aHJvd3MgaWYgdGhlIHN1cHBsaWVkIHZpZXcncyBidWZmZXIgaGFzIGJlZW4gZGV0YWNoZWQgKGlu
IHRoZSByZWFkYWJsZSBzdGF0ZSkgYXNzZXJ0X3Rocm93czogcmVzcG9uZFdpdGhOZXdWaWV3KCkg
bXVzdCB0aHJvdyBpZiBwYXNzZWQgYSBkZXRhY2hlZCB2aWV3IGZ1bmN0aW9uICIoKSA9PiBjLmJ5
b2JSZXF1ZXN0LnJlc3BvbmRXaXRoTmV3Vmlldyh2aWV3KSIgZGlkIG5vdCB0aHJvdwotRkFJTCBS
ZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiByZXNwb25kV2l0aE5ld1ZpZXcoKSB0aHJv
d3MgaWYgdGhlIHN1cHBsaWVkIHZpZXcncyBidWZmZXIgaGFzIGJlZW4gZGV0YWNoZWQgKGluIHRo
ZSBjbG9zZWQgc3RhdGUpIGFzc2VydF90aHJvd3M6IHJlc3BvbmRXaXRoTmV3VmlldygpIG11c3Qg
dGhyb3cgaWYgcGFzc2VkIGEgKHplcm8tbGVuZ3RoKSB2aWV3IHdob3NlIGJ1ZmZlciBoYXMgYmVl
biBkZXRhY2hlZCBmdW5jdGlvbiAiKCkgPT4gYy5ieW9iUmVxdWVzdC5yZXNwb25kV2l0aE5ld1Zp
ZXcoemVyb0xlbmd0aFZpZXcpIiB0aHJldyBvYmplY3QgIlJhbmdlRXJyb3I6IEludmFsaWQgdmFs
dWUgZm9yIHZpZXcuYnl0ZUxlbmd0aCIgKCJSYW5nZUVycm9yIikgZXhwZWN0ZWQgb2JqZWN0ICJU
eXBlRXJyb3IiICgiVHlwZUVycm9yIikKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFtcy9k
ZXRhY2hlZC1idWZmZXJzLmRlZGljYXRlZHdvcmtlci5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFtcy9k
ZXRhY2hlZC1idWZmZXJzLmRlZGljYXRlZHdvcmtlci5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBkNzIxMDgxYTU2NGQ1M2ZhYzQ0Njc5NDkyNzhiMGYxYzBkMWM5NzMyLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVh
bXMvZGV0YWNoZWQtYnVmZmVycy5kZWRpY2F0ZWR3b3JrZXIuaHRtbAorKysgL2Rldi9udWxsCkBA
IC0xLDExICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgot
PHRpdGxlPmRldGFjaGVkLWJ1ZmZlcnMuanMgZGVkaWNhdGVkIHdvcmtlciB3cmFwcGVyIGZpbGU8
L3RpdGxlPgotCi08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3Jp
cHQ+Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3Jp
cHQ+Ci0KLTxzY3JpcHQ+Ci0ndXNlIHN0cmljdCc7Ci1mZXRjaF90ZXN0c19mcm9tX3dvcmtlcihu
ZXcgV29ya2VyKCdkZXRhY2hlZC1idWZmZXJzLmpzJykpOwotPC9zY3JpcHQ+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVh
ZGFibGUtYnl0ZS1zdHJlYW1zL2RldGFjaGVkLWJ1ZmZlcnMuaHRtbCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVh
bXMvZGV0YWNoZWQtYnVmZmVycy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5
Y2RjMjliN2IyMGE2MDI2YzMyMTRhM2M4ZjY4OTIxYWZmYjFhMDU1Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMvZGV0YWNoZWQt
YnVmZmVycy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotPCFET0NUWVBFIGh0
bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08dGl0bGU+ZGV0YWNoZWQtYnVmZmVycy5qcyBi
cm93c2VyIGNvbnRleHQgd3JhcHBlciBmaWxlPC90aXRsZT4KLQotPHNjcmlwdCBzcmM9Ii9yZXNv
dXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMv
dGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotCi0KLQotPHNjcmlwdCBzcmM9ImRldGFj
aGVkLWJ1ZmZlcnMuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFtcy9k
ZXRhY2hlZC1idWZmZXJzLmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFtcy9kZXRhY2hlZC1idWZmZXJzLmpz
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMWI0N2YwMTk1OTA4NDlkOWU3MTI3NmE4
Zjc2YTFiMWE3ZDJiZDllLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMvZGV0YWNoZWQtYnVmZmVycy5qcworKysgL2Rldi9udWxs
CkBAIC0xLDE1NiArMCwwIEBACi0ndXNlIHN0cmljdCc7Ci0KLWlmIChzZWxmLmltcG9ydFNjcmlw
dHMpIHsKLSAgc2VsZi5pbXBvcnRTY3JpcHRzKCcvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzJyk7
Ci19Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0gIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJs
ZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgYy5jbG9zZSgpOwotICAgIH0sCi0gICAg
dHlwZTogJ2J5dGVzJwotICB9KTsKLQotICBjb25zdCByZWFkZXIgPSBzdHJlYW0uZ2V0UmVhZGVy
KHsgbW9kZTogJ2J5b2InIH0pOwotICBjb25zdCB2aWV3ID0gbmV3IFVpbnQ4QXJyYXkoWzEsIDIs
IDNdKTsKLSAgcmV0dXJuIHJlYWRlci5yZWFkKHZpZXcpLnRoZW4oKHsgdmFsdWUsIGRvbmUgfSkg
PT4gewotICAgIC8vIFNhbml0eSBjaGVja3MKLSAgICBhc3NlcnRfdHJ1ZSh2YWx1ZSBpbnN0YW5j
ZW9mIFVpbnQ4QXJyYXksICdUaGUgdmFsdWUgcmVhZCBtdXN0IGJlIGEgVWludDhBcnJheScpOwot
ICAgIGFzc2VydF9ub3RfZXF1YWxzKHZhbHVlLCB2aWV3LCAnVGhlIHZhbHVlIHJlYWQgbXVzdCBu
b3QgYmUgdGhlICpzYW1lKiBVaW50OEFycmF5Jyk7Ci0gICAgYXNzZXJ0X2FycmF5X2VxdWFscyh2
YWx1ZSwgW10sICdUaGUgdmFsdWUgcmVhZCBtdXN0IGJlIGFuIGVtcHR5IFVpbnQ4QXJyYXksIHNp
bmNlIHRoZSBzdHJlYW0gaXMgY2xvc2VkJyk7Ci0gICAgYXNzZXJ0X3RydWUoZG9uZSwgJ2RvbmUg
bXVzdCBiZSB0cnVlLCBzaW5jZSB0aGUgc3RyZWFtIGlzIGNsb3NlZCcpOwotCi0gICAgLy8gVGhl
IGltcG9ydGFudCBhc3NlcnRpb25zCi0gICAgYXNzZXJ0X25vdF9lcXVhbHModmFsdWUuYnVmZmVy
LCB2aWV3LmJ1ZmZlciwgJ2EgZGlmZmVyZW50IEFycmF5QnVmZmVyIG11c3QgdW5kZXJsaWUgdGhl
IHZhbHVlJyk7Ci0gICAgYXNzZXJ0X2VxdWFscyh2aWV3LmJ1ZmZlci5ieXRlTGVuZ3RoLCAwLCAn
dGhlIG9yaWdpbmFsIGJ1ZmZlciBtdXN0IGJlIGRldGFjaGVkJyk7Ci0gIH0pOwotfSwgJ1JlYWRh
YmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IHJlYWQoKWluZyBmcm9tIGEgY2xvc2VkIHN0cmVh
bSBzdGlsbCB0cmFuc2ZlcnMgdGhlIGJ1ZmZlcicpOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewot
ICBjb25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAg
ICAgIGMuZW5xdWV1ZShuZXcgVWludDhBcnJheShbMSwgMiwgM10pKTsKLSAgICB9LAotICAgIHR5
cGU6ICdieXRlcycKLSAgfSk7Ci0KLSAgY29uc3QgcmVhZGVyID0gc3RyZWFtLmdldFJlYWRlcih7
IG1vZGU6ICdieW9iJyB9KTsKLSAgY29uc3QgdmlldyA9IG5ldyBVaW50OEFycmF5KFs0LCA1LCA2
XSk7Ci0gIHJldHVybiByZWFkZXIucmVhZCh2aWV3KS50aGVuKCh7IHZhbHVlLCBkb25lIH0pID0+
IHsKLSAgICAvLyBTYW5pdHkgY2hlY2tzCi0gICAgYXNzZXJ0X3RydWUodmFsdWUgaW5zdGFuY2Vv
ZiBVaW50OEFycmF5LCAnVGhlIHZhbHVlIHJlYWQgbXVzdCBiZSBhIFVpbnQ4QXJyYXknKTsKLSAg
ICBhc3NlcnRfbm90X2VxdWFscyh2YWx1ZSwgdmlldywgJ1RoZSB2YWx1ZSByZWFkIG11c3Qgbm90
IGJlIHRoZSAqc2FtZSogVWludDhBcnJheScpOwotICAgIGFzc2VydF9hcnJheV9lcXVhbHModmFs
dWUsIFsxLCAyLCAzXSwgJ1RoZSB2YWx1ZSByZWFkIG11c3QgYmUgdGhlIGVucXVldWVkIFVpbnQ4
QXJyYXksIG5vdCB0aGUgb3JpZ2luYWwgdmFsdWVzJyk7Ci0gICAgYXNzZXJ0X2ZhbHNlKGRvbmUs
ICdkb25lIG11c3QgYmUgZmFsc2UsIHNpbmNlIHRoZSBzdHJlYW0gaXMgbm90IGNsb3NlZCcpOwot
Ci0gICAgLy8gVGhlIGltcG9ydGFudCBhc3NlcnRpb25zCi0gICAgYXNzZXJ0X25vdF9lcXVhbHMo
dmFsdWUuYnVmZmVyLCB2aWV3LmJ1ZmZlciwgJ2EgZGlmZmVyZW50IEFycmF5QnVmZmVyIG11c3Qg
dW5kZXJsaWUgdGhlIHZhbHVlJyk7Ci0gICAgYXNzZXJ0X2VxdWFscyh2aWV3LmJ1ZmZlci5ieXRl
TGVuZ3RoLCAwLCAndGhlIG9yaWdpbmFsIGJ1ZmZlciBtdXN0IGJlIGRldGFjaGVkJyk7Ci0gIH0p
OwotfSwgJ1JlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IHJlYWQoKWluZyBmcm9tIGEg
c3RyZWFtIHdpdGggcXVldWVkIGNodW5rcyBzdGlsbCB0cmFuc2ZlcnMgdGhlIGJ1ZmZlcicpOwot
Ci10ZXN0KCgpID0+IHsKLSAgY29uc3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAg
ICBzdGFydChjKSB7Ci0gICAgICBjb25zdCB2aWV3ID0gbmV3IFVpbnQ4QXJyYXkoWzEsIDIsIDNd
KTsKLSAgICAgIGMuZW5xdWV1ZSh2aWV3KTsKLSAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVF
cnJvcigpLCAoKSA9PiBjLmVucXVldWUodmlldyksICdlbnF1ZXVpbmcgYW4gYWxyZWFkeS1kZXRh
Y2hlZCBidWZmZXIgbXVzdCB0aHJvdycpOwotICAgIH0sCi0gICAgdHlwZTogJ2J5dGVzJwotICB9
KTsKLX0sICdSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBlbnF1ZXVpbmcgYW4gYWxy
ZWFkeS1kZXRhY2hlZCBidWZmZXIgdGhyb3dzJyk7Ci0KLXByb21pc2VfdGVzdCh0ID0+IHsKLSAg
Y29uc3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0gICAg
ICBjLmVucXVldWUobmV3IFVpbnQ4QXJyYXkoWzEsIDIsIDNdKSk7Ci0gICAgfSwKLSAgICB0eXBl
OiAnYnl0ZXMnCi0gIH0pOwotICBjb25zdCByZWFkZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKHsgbW9k
ZTogJ2J5b2InIH0pOwotCi0gIGNvbnN0IHZpZXcgPSBuZXcgVWludDhBcnJheShbNCwgNSwgNl0p
OwotICByZXR1cm4gcmVhZGVyLnJlYWQodmlldykudGhlbigoKSA9PiB7Ci0gICAgLy8gdmlldyBp
cyBub3cgZGV0YWNoZWQKLSAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHQsIG5ldyBUeXBlRXJy
b3IoKSwgcmVhZGVyLnJlYWQodmlldyksCi0gICAgICAncmVhZCh2aWV3KSBtdXN0IHJlamVjdCB3
aGVuIGdpdmVuIGFuIGFscmVhZHktZGV0YWNoZWQgYnVmZmVyJyk7Ci0gIH0pOwotfSwgJ1JlYWRh
YmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IHJlYWRpbmcgaW50byBhbiBhbHJlYWR5LWRldGFj
aGVkIGJ1ZmZlciByZWplY3RzJyk7Ci0KLWFzeW5jX3Rlc3QodCA9PiB7Ci0gIGNvbnN0IHN0cmVh
bSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgcHVsbDogdC5zdGVwX2Z1bmNfZG9uZShjID0+
IHsKLSAgICAgIC8vIERldGFjaCBpdCBieSByZWFkaW5nIGludG8gaXQKLSAgICAgIHJlYWRlci5y
ZWFkKGMuYnlvYlJlcXVlc3Qudmlldyk7Ci0KLSAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVF
cnJvcigpLCAoKSA9PiBjLmJ5b2JSZXF1ZXN0LnJlc3BvbmQoMSksCi0gICAgICAgICdyZXNwb25k
KCkgbXVzdCB0aHJvdyBpZiB0aGUgY29ycmVzcG9uZGluZyB2aWV3IGhhcyBiZWNvbWUgZGV0YWNo
ZWQnKTsKLSAgICB9KSwKLSAgICB0eXBlOiAnYnl0ZXMnCi0gIH0pOwotICBjb25zdCByZWFkZXIg
PSBzdHJlYW0uZ2V0UmVhZGVyKHsgbW9kZTogJ2J5b2InIH0pOwotCi0gIHJlYWRlci5yZWFkKG5l
dyBVaW50OEFycmF5KFs0LCA1LCA2XSkpOwotfSwgJ1JlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBz
b3VyY2U6IHJlc3BvbmQoKSB0aHJvd3MgaWYgdGhlIEJZT0IgcmVxdWVzdFwncyBidWZmZXIgaGFz
IGJlZW4gZGV0YWNoZWQgKGluIHRoZSAnICsKLSAgICdyZWFkYWJsZSBzdGF0ZSknKTsKLQotYXN5
bmNfdGVzdCh0ID0+IHsKLSAgY29uc3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAg
ICBwdWxsOiB0LnN0ZXBfZnVuY19kb25lKGMgPT4gewotICAgICAgLy8gRGV0YWNoIGl0IGJ5IHJl
YWRpbmcgaW50byBpdAotICAgICAgcmVhZGVyLnJlYWQoYy5ieW9iUmVxdWVzdC52aWV3KTsKLQot
ICAgICAgYy5jbG9zZSgpOwotCi0gICAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwg
KCkgPT4gYy5ieW9iUmVxdWVzdC5yZXNwb25kKDApLAotICAgICAgICAncmVzcG9uZCgpIG11c3Qg
dGhyb3cgaWYgdGhlIGNvcnJlc3BvbmRpbmcgdmlldyBoYXMgYmVjb21lIGRldGFjaGVkJyk7Ci0g
ICAgfSksCi0gICAgdHlwZTogJ2J5dGVzJwotICB9KTsKLSAgY29uc3QgcmVhZGVyID0gc3RyZWFt
LmdldFJlYWRlcih7IG1vZGU6ICdieW9iJyB9KTsKLQotICByZWFkZXIucmVhZChuZXcgVWludDhB
cnJheShbNCwgNSwgNl0pKTsKLX0sICdSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBy
ZXNwb25kKCkgdGhyb3dzIGlmIHRoZSBCWU9CIHJlcXVlc3RcJ3MgYnVmZmVyIGhhcyBiZWVuIGRl
dGFjaGVkIChpbiB0aGUgJyArCi0gICAnY2xvc2VkIHN0YXRlKScpOwotCi1hc3luY190ZXN0KHQg
PT4gewotICBjb25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHB1bGw6IHQu
c3RlcF9mdW5jX2RvbmUoYyA9PiB7Ci0gICAgICAvLyBEZXRhY2ggaXQgYnkgcmVhZGluZyBpbnRv
IGl0Ci0gICAgICBjb25zdCB2aWV3ID0gbmV3IFVpbnQ4QXJyYXkoWzEsIDIsIDNdKTsKLSAgICAg
IHJlYWRlci5yZWFkKHZpZXcpOwotCi0gICAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3Io
KSwgKCkgPT4gYy5ieW9iUmVxdWVzdC5yZXNwb25kV2l0aE5ld1ZpZXcodmlldyksCi0gICAgICAg
ICdyZXNwb25kV2l0aE5ld1ZpZXcoKSBtdXN0IHRocm93IGlmIHBhc3NlZCBhIGRldGFjaGVkIHZp
ZXcnKTsKLSAgICB9KSwKLSAgICB0eXBlOiAnYnl0ZXMnCi0gIH0pOwotICBjb25zdCByZWFkZXIg
PSBzdHJlYW0uZ2V0UmVhZGVyKHsgbW9kZTogJ2J5b2InIH0pOwotCi0gIHJlYWRlci5yZWFkKG5l
dyBVaW50OEFycmF5KFs0LCA1LCA2XSkpOwotfSwgJ1JlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBz
b3VyY2U6IHJlc3BvbmRXaXRoTmV3VmlldygpIHRocm93cyBpZiB0aGUgc3VwcGxpZWQgdmlld1wn
cyBidWZmZXIgaGFzIGJlZW4gZGV0YWNoZWQgJyArCi0gICAgJyhpbiB0aGUgcmVhZGFibGUgc3Rh
dGUpJyk7Ci0KLWFzeW5jX3Rlc3QodCA9PiB7Ci0gIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJs
ZVN0cmVhbSh7Ci0gICAgcHVsbDogdC5zdGVwX2Z1bmNfZG9uZShjID0+IHsKLSAgICAgIC8vIERl
dGFjaCBpdCBieSByZWFkaW5nIGludG8gaXQKLSAgICAgIGNvbnN0IHZpZXcgPSBuZXcgVWludDhB
cnJheShbMSwgMiwgM10pOwotICAgICAgcmVhZGVyLnJlYWQodmlldyk7Ci0KLSAgICAgIGMuY2xv
c2UoKTsKLQotICAgICAgY29uc3QgemVyb0xlbmd0aFZpZXcgPSBuZXcgVWludDhBcnJheSh2aWV3
LmJ1ZmZlciwgMCwgMCk7Ci0gICAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkg
PT4gYy5ieW9iUmVxdWVzdC5yZXNwb25kV2l0aE5ld1ZpZXcoemVyb0xlbmd0aFZpZXcpLAotICAg
ICAgICAncmVzcG9uZFdpdGhOZXdWaWV3KCkgbXVzdCB0aHJvdyBpZiBwYXNzZWQgYSAoemVyby1s
ZW5ndGgpIHZpZXcgd2hvc2UgYnVmZmVyIGhhcyBiZWVuIGRldGFjaGVkJyk7Ci0gICAgfSksCi0g
ICAgdHlwZTogJ2J5dGVzJwotICB9KTsKLSAgY29uc3QgcmVhZGVyID0gc3RyZWFtLmdldFJlYWRl
cih7IG1vZGU6ICdieW9iJyB9KTsKLQotICByZWFkZXIucmVhZChuZXcgVWludDhBcnJheShbNCwg
NSwgNl0pKTsKLX0sICdSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiByZXNwb25kV2l0
aE5ld1ZpZXcoKSB0aHJvd3MgaWYgdGhlIHN1cHBsaWVkIHZpZXdcJ3MgYnVmZmVyIGhhcyBiZWVu
IGRldGFjaGVkICcgKwotICAgJyhpbiB0aGUgY2xvc2VkIHN0YXRlKScpOwotCi1kb25lKCk7CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL2RldGFjaGVkLWJ1ZmZlcnMuc2VydmljZXdvcmtl
ci5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL2RldGFjaGVkLWJ1ZmZlcnMu
c2VydmljZXdvcmtlci5odHRwcy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDI4MGUwNTk4NDUxNDgzOWFmMDYwYTc4MzIyM2I1YTZiOTZjNGZkOWQuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFtcy9k
ZXRhY2hlZC1idWZmZXJzLnNlcnZpY2V3b3JrZXIuaHR0cHMtZXhwZWN0ZWQudHh0CisrKyAvZGV2
L251bGwKQEAgLTEsMTMgKzAsMCBAQAotCi1IYXJuZXNzIEVycm9yIChUSU1FT1VUKSwgbWVzc2Fn
ZSA9IG51bGwKLQotVElNRU9VVCBTZXJ2aWNlIHdvcmtlciB0ZXN0IHNldHVwIFRlc3QgdGltZWQg
b3V0Ci1GQUlMIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IHJlYWQoKWluZyBmcm9t
IGEgY2xvc2VkIHN0cmVhbSBzdGlsbCB0cmFuc2ZlcnMgdGhlIGJ1ZmZlciBhc3NlcnRfbm90X2Vx
dWFsczogYSBkaWZmZXJlbnQgQXJyYXlCdWZmZXIgbXVzdCB1bmRlcmxpZSB0aGUgdmFsdWUgZ290
IGRpc2FsbG93ZWQgdmFsdWUgb2JqZWN0ICJbb2JqZWN0IEFycmF5QnVmZmVyXSIKLUZBSUwgUmVh
ZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogcmVhZCgpaW5nIGZyb20gYSBzdHJlYW0gd2l0
aCBxdWV1ZWQgY2h1bmtzIHN0aWxsIHRyYW5zZmVycyB0aGUgYnVmZmVyIGFzc2VydF9ub3RfZXF1
YWxzOiBhIGRpZmZlcmVudCBBcnJheUJ1ZmZlciBtdXN0IHVuZGVybGllIHRoZSB2YWx1ZSBnb3Qg
ZGlzYWxsb3dlZCB2YWx1ZSBvYmplY3QgIltvYmplY3QgQXJyYXlCdWZmZXJdIgotRkFJTCBSZWFk
YWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBlbnF1ZXVpbmcgYW4gYWxyZWFkeS1kZXRhY2hl
ZCBidWZmZXIgdGhyb3dzIGFzc2VydF90aHJvd3M6IGVucXVldWluZyBhbiBhbHJlYWR5LWRldGFj
aGVkIGJ1ZmZlciBtdXN0IHRocm93IGZ1bmN0aW9uICIoKSA9PiBjLmVucXVldWUodmlldykiIGRp
ZCBub3QgdGhyb3cKLVRJTUVPVVQgUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogcmVh
ZGluZyBpbnRvIGFuIGFscmVhZHktZGV0YWNoZWQgYnVmZmVyIHJlamVjdHMgVGVzdCB0aW1lZCBv
dXQKLUZBSUwgUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogcmVzcG9uZCgpIHRocm93
cyBpZiB0aGUgQllPQiByZXF1ZXN0J3MgYnVmZmVyIGhhcyBiZWVuIGRldGFjaGVkIChpbiB0aGUg
cmVhZGFibGUgc3RhdGUpIGFzc2VydF90aHJvd3M6IHJlc3BvbmQoKSBtdXN0IHRocm93IGlmIHRo
ZSBjb3JyZXNwb25kaW5nIHZpZXcgaGFzIGJlY29tZSBkZXRhY2hlZCBmdW5jdGlvbiAiKCkgPT4g
Yy5ieW9iUmVxdWVzdC5yZXNwb25kKDEpIiBkaWQgbm90IHRocm93Ci1GQUlMIFJlYWRhYmxlU3Ry
ZWFtIHdpdGggYnl0ZSBzb3VyY2U6IHJlc3BvbmQoKSB0aHJvd3MgaWYgdGhlIEJZT0IgcmVxdWVz
dCdzIGJ1ZmZlciBoYXMgYmVlbiBkZXRhY2hlZCAoaW4gdGhlIGNsb3NlZCBzdGF0ZSkgYXNzZXJ0
X3Rocm93czogcmVzcG9uZCgpIG11c3QgdGhyb3cgaWYgdGhlIGNvcnJlc3BvbmRpbmcgdmlldyBo
YXMgYmVjb21lIGRldGFjaGVkIGZ1bmN0aW9uICIoKSA9PiBjLmJ5b2JSZXF1ZXN0LnJlc3BvbmQo
MCkiIGRpZCBub3QgdGhyb3cKLUZBSUwgUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTog
cmVzcG9uZFdpdGhOZXdWaWV3KCkgdGhyb3dzIGlmIHRoZSBzdXBwbGllZCB2aWV3J3MgYnVmZmVy
IGhhcyBiZWVuIGRldGFjaGVkIChpbiB0aGUgcmVhZGFibGUgc3RhdGUpIGFzc2VydF90aHJvd3M6
IHJlc3BvbmRXaXRoTmV3VmlldygpIG11c3QgdGhyb3cgaWYgcGFzc2VkIGEgZGV0YWNoZWQgdmll
dyBmdW5jdGlvbiAiKCkgPT4gYy5ieW9iUmVxdWVzdC5yZXNwb25kV2l0aE5ld1ZpZXcodmlldyki
IGRpZCBub3QgdGhyb3cKLUZBSUwgUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogcmVz
cG9uZFdpdGhOZXdWaWV3KCkgdGhyb3dzIGlmIHRoZSBzdXBwbGllZCB2aWV3J3MgYnVmZmVyIGhh
cyBiZWVuIGRldGFjaGVkIChpbiB0aGUgY2xvc2VkIHN0YXRlKSBhc3NlcnRfdGhyb3dzOiByZXNw
b25kV2l0aE5ld1ZpZXcoKSBtdXN0IHRocm93IGlmIHBhc3NlZCBhICh6ZXJvLWxlbmd0aCkgdmll
dyB3aG9zZSBidWZmZXIgaGFzIGJlZW4gZGV0YWNoZWQgZnVuY3Rpb24gIigpID0+IGMuYnlvYlJl
cXVlc3QucmVzcG9uZFdpdGhOZXdWaWV3KHplcm9MZW5ndGhWaWV3KSIgdGhyZXcgb2JqZWN0ICJS
YW5nZUVycm9yOiBJbnZhbGlkIHZhbHVlIGZvciB2aWV3LmJ5dGVMZW5ndGgiICgiUmFuZ2VFcnJv
ciIpIGV4cGVjdGVkIG9iamVjdCAiVHlwZUVycm9yIiAoIlR5cGVFcnJvciIpCi0KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9y
ZWFkYWJsZS1ieXRlLXN0cmVhbXMvZGV0YWNoZWQtYnVmZmVycy5zZXJ2aWNld29ya2VyLmh0dHBz
Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL2RldGFjaGVkLWJ1ZmZlcnMuc2VydmljZXdvcmtlci5o
dHRwcy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYjdkMmM1NDYxNjkxNGFi
Njc2OWFhNWU2MzUxYzAyYzJhMGZiNWQxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMvZGV0YWNoZWQtYnVmZmVycy5zZXJ2aWNl
d29ya2VyLmh0dHBzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi08IURPQ1RZ
UEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTx0aXRsZT5kZXRhY2hlZC1idWZmZXJz
LmpzIHNlcnZpY2Ugd29ya2VyIHdyYXBwZXIgZmlsZTwvdGl0bGU+Ci0KLTxzY3JpcHQgc3JjPSIv
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvc2Vydmlj
ZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL3Jlc291cmNlcy90ZXN0LWhlbHBlcnMuc3ViLmpzIj48
L3NjcmlwdD4KLQotPHNjcmlwdD4KLSd1c2Ugc3RyaWN0JzsKLXNlcnZpY2Vfd29ya2VyX3Rlc3Qo
J2RldGFjaGVkLWJ1ZmZlcnMuanMnLCAnU2VydmljZSB3b3JrZXIgdGVzdCBzZXR1cCcpOwotPC9z
Y3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL2RldGFjaGVkLWJ1ZmZlcnMuc2hh
cmVkd29ya2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMvZGV0YWNoZWQtYnVmZmVy
cy5zaGFyZWR3b3JrZXItZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwOWQ1ZDI1MDlkNzg0N2U4Y2Q2ZmU2NjA2YWE2MGNkZDMzYWE0NzRlLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMvZGV0YWNo
ZWQtYnVmZmVycy5zaGFyZWR3b3JrZXItZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEs
NSArMCwwIEBACi1DT05TT0xFIE1FU1NBR0U6IFJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZh
cmlhYmxlOiBTaGFyZWRXb3JrZXIKLQotSGFybmVzcyBFcnJvciAoRkFJTCksIG1lc3NhZ2UgPSBS
ZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogU2hhcmVkV29ya2VyCi0KLQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJl
YW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFtcy9kZXRhY2hlZC1idWZmZXJzLnNoYXJlZHdvcmtlci5o
dG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
L3JlYWRhYmxlLWJ5dGUtc3RyZWFtcy9kZXRhY2hlZC1idWZmZXJzLnNoYXJlZHdvcmtlci5odG1s
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYWM2OTE3ZDUwNmMwMzcwYmMwMjVmN2Ri
OGU0ZmNhMjkwOTQ5MzRlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMvZGV0YWNoZWQtYnVmZmVycy5zaGFyZWR3b3JrZXIuaHRt
bAorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEg
Y2hhcnNldD0idXRmLTgiPgotPHRpdGxlPmRldGFjaGVkLWJ1ZmZlcnMuanMgc2hhcmVkIHdvcmtl
ciB3cmFwcGVyIGZpbGU8L3RpdGxlPgotCi08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFy
bmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3Jl
cG9ydC5qcyI+PC9zY3JpcHQ+Ci0KLTxzY3JpcHQ+Ci0ndXNlIHN0cmljdCc7Ci1mZXRjaF90ZXN0
c19mcm9tX3dvcmtlcihuZXcgU2hhcmVkV29ya2VyKCdkZXRhY2hlZC1idWZmZXJzLmpzJykpOwot
PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL2dlbmVyYWwuYW55LWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMvZ2VuZXJhbC5hbnktZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjQzOWIwYTU3OTBlMTYwNTZlYTdiYmYyYzJjZGM5MDgwMzZiZjJmYjkKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL2dlbmVyYWwuYW55LWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDgzIEBACisKK0hhcm5lc3MgRXJyb3IgKFRJTUVPVVQpLCBtZXNzYWdlID0gbnVsbAor
CitQQVNTIGdldFJlYWRlcih7bW9kZTogImJ5b2IifSkgdGhyb3dzIG9uIG5vbi1ieXRlcyBzdHJl
YW1zIAorUEFTUyBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlIGNhbiBiZSBjb25zdHJ1
Y3RlZCB3aXRoIG5vIGVycm9ycyAKK1BBU1MgZ2V0UmVhZGVyKHttb2RlfSkgbXVzdCBwZXJmb3Jt
IFRvU3RyaW5nKCkgCitQQVNTIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IENvbnN0
cnVjdCBhbmQgZXhwZWN0IHN0YXJ0IGFuZCBwdWxsIGJlaW5nIGNhbGxlZCAKK1BBU1MgUmVhZGFi
bGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogTm8gYXV0b21hdGljIHB1bGwgY2FsbCBpZiBzdGFy
dCBkb2Vzbid0IGZpbmlzaCAKK1BBU1MgUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTog
Q29uc3RydWN0IHdpdGggaGlnaFdhdGVyTWFyayBvZiAwIAorUEFTUyBSZWFkYWJsZVN0cmVhbSB3
aXRoIGJ5dGUgc291cmNlOiBkZXNpcmVkU2l6ZSB3aGVuIGNsb3NlZCAKK1BBU1MgUmVhZGFibGVT
dHJlYW0gd2l0aCBieXRlIHNvdXJjZTogZGVzaXJlZFNpemUgd2hlbiBlcnJvcmVkIAorUEFTUyBS
ZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBnZXRSZWFkZXIoKSwgdGhlbiByZWxlYXNl
TG9jaygpIAorUEFTUyBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBnZXRSZWFkZXIo
KSB3aXRoIG1vZGUgc2V0IHRvIGJ5b2IsIHRoZW4gcmVsZWFzZUxvY2soKSAKK1BBU1MgUmVhZGFi
bGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogVGVzdCB0aGF0IGNsb3NpbmcgYSBzdHJlYW0gZG9l
cyBub3QgcmVsZWFzZSBhIHJlYWRlciBhdXRvbWF0aWNhbGx5IAorUEFTUyBSZWFkYWJsZVN0cmVh
bSB3aXRoIGJ5dGUgc291cmNlOiBUZXN0IHRoYXQgY2xvc2luZyBhIHN0cmVhbSBkb2VzIG5vdCBy
ZWxlYXNlIGEgQllPQiByZWFkZXIgYXV0b21hdGljYWxseSAKK1BBU1MgUmVhZGFibGVTdHJlYW0g
d2l0aCBieXRlIHNvdXJjZTogVGVzdCB0aGF0IGVycm9yaW5nIGEgc3RyZWFtIGRvZXMgbm90IHJl
bGVhc2UgYSByZWFkZXIgYXV0b21hdGljYWxseSAKK1BBU1MgUmVhZGFibGVTdHJlYW0gd2l0aCBi
eXRlIHNvdXJjZTogVGVzdCB0aGF0IGVycm9yaW5nIGEgc3RyZWFtIGRvZXMgbm90IHJlbGVhc2Ug
YSBCWU9CIHJlYWRlciBhdXRvbWF0aWNhbGx5IAorUEFTUyBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5
dGUgc291cmNlOiByZWxlYXNlTG9jaygpIG9uIFJlYWRhYmxlU3RyZWFtUmVhZGVyIHdpdGggcGVu
ZGluZyByZWFkKCkgbXVzdCB0aHJvdyAKK1BBU1MgUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNv
dXJjZTogQXV0b21hdGljIHB1bGwoKSBhZnRlciBzdGFydCgpIAorUEFTUyBSZWFkYWJsZVN0cmVh
bSB3aXRoIGJ5dGUgc291cmNlOiBBdXRvbWF0aWMgcHVsbCgpIGFmdGVyIHN0YXJ0KCkgYW5kIHJl
YWQoKSAKK0ZBSUwgUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogYXV0b0FsbG9jYXRl
Q2h1bmtTaXplIGFzc2VydF9lcXVhbHM6IHB1bGwoKSBtdXN0IGhhdmUgYmVlbiBpbnZva2VkIHR3
aWNlIGV4cGVjdGVkIDIgYnV0IGdvdCAxCitQQVNTIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBz
b3VyY2U6IE1peCBvZiBhdXRvIGFsbG9jYXRlIGFuZCBCWU9CIAorUEFTUyBSZWFkYWJsZVN0cmVh
bSB3aXRoIGJ5dGUgc291cmNlOiBBdXRvbWF0aWMgcHVsbCgpIGFmdGVyIHN0YXJ0KCkgYW5kIHJl
YWQodmlldykgCitQQVNTIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IGVucXVldWUo
KSwgZ2V0UmVhZGVyKCksIHRoZW4gcmVhZCgpIAorUEFTUyBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5
dGUgc291cmNlOiBQdXNoIHNvdXJjZSB0aGF0IGRvZXNuJ3QgdW5kZXJzdGFuZCBwdWxsIHNpZ25h
bCAKK0ZBSUwgUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogcHVsbCgpIGZ1bmN0aW9u
IGlzIG5vdCBjYWxsYWJsZSBhc3NlcnRfdGhyb3dzX2pzOiBjb25zdHJ1Y3RvciBzaG91bGQgdGhy
b3cgZnVuY3Rpb24gIigpID0+IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgcHVsbDogJ2Zvbycs
CisgICAgdHlwZTogJ2J5dGVzJworICB9KSIgZGlkIG5vdCB0aHJvdworUEFTUyBSZWFkYWJsZVN0
cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBlbnF1ZXVlKCkgd2l0aCBVaW50MTZBcnJheSwgZ2V0UmVh
ZGVyKCksIHRoZW4gcmVhZCgpIAorUEFTUyBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNl
OiBlbnF1ZXVlKCksIHJlYWQodmlldykgcGFydGlhbGx5LCB0aGVuIHJlYWQoKSAKK1BBU1MgUmVh
ZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogZ2V0UmVhZGVyKCksIGVucXVldWUoKSwgY2xv
c2UoKSwgdGhlbiByZWFkKCkgCitQQVNTIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6
IGVucXVldWUoKSwgY2xvc2UoKSwgZ2V0UmVhZGVyKCksIHRoZW4gcmVhZCgpIAorRkFJTCBSZWFk
YWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBSZXNwb25kIHRvIHB1bGwoKSBieSBlbnF1ZXVl
KCkgYXNzZXJ0X2VxdWFsczogYnlvYlJlcXVlc3QgbXVzdCBiZSBudWxsIGV4cGVjdGVkIChvYmpl
Y3QpIG51bGwgYnV0IGdvdCAodW5kZWZpbmVkKSB1bmRlZmluZWQKK0ZBSUwgUmVhZGFibGVTdHJl
YW0gd2l0aCBieXRlIHNvdXJjZTogUmVzcG9uZCB0byBwdWxsKCkgYnkgZW5xdWV1ZSgpIGFzeW5j
aHJvbm91c2x5IGFzc2VydF9lcXVhbHM6IGJ5b2JSZXF1ZXN0IHNob3VsZCBiZSBudWxsIGV4cGVj
dGVkIChvYmplY3QpIG51bGwgYnV0IGdvdCAodW5kZWZpbmVkKSB1bmRlZmluZWQKK1RJTUVPVVQg
UmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogUmVzcG9uZCB0byBtdWx0aXBsZSBwdWxs
KCkgYnkgc2VwYXJhdGUgZW5xdWV1ZSgpIFRlc3QgdGltZWQgb3V0CitOT1RSVU4gUmVhZGFibGVT
dHJlYW0gd2l0aCBieXRlIHNvdXJjZTogcmVhZCh2aWV3KSwgdGhlbiByZXNwb25kKCkgCitOT1RS
VU4gUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogcmVhZCh2aWV3KSwgdGhlbiByZXNw
b25kKCkgd2l0aCBhIHRyYW5zZmVycmVkIEFycmF5QnVmZmVyIAorTk9UUlVOIFJlYWRhYmxlU3Ry
ZWFtIHdpdGggYnl0ZSBzb3VyY2U6IHJlYWQodmlldyksIHRoZW4gcmVzcG9uZCgpIHdpdGggdG9v
IGJpZyB2YWx1ZSAKK05PVFJVTiBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiByZXNw
b25kKDMpIHRvIHJlYWQodmlldykgd2l0aCAyIGVsZW1lbnQgVWludDE2QXJyYXkgZW5xdWV1ZXMg
dGhlIDEgYnl0ZSByZW1haW5kZXIgCitOT1RSVU4gUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNv
dXJjZTogZW5xdWV1ZSgpLCBnZXRSZWFkZXIoKSwgdGhlbiByZWFkKHZpZXcpIAorTk9UUlVOIFJl
YWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IGVucXVldWUoKSwgZ2V0UmVhZGVyKCksIHRo
ZW4gY2FuY2VsKCkgKG1vZGUgPSBub3QgQllPQikgCitOT1RSVU4gUmVhZGFibGVTdHJlYW0gd2l0
aCBieXRlIHNvdXJjZTogZW5xdWV1ZSgpLCBnZXRSZWFkZXIoKSwgdGhlbiBjYW5jZWwoKSAobW9k
ZSA9IEJZT0IpIAorTk9UUlVOIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IGdldFJl
YWRlcigpLCByZWFkKHZpZXcpLCB0aGVuIGNhbmNlbCgpIAorTk9UUlVOIFJlYWRhYmxlU3RyZWFt
IHdpdGggYnl0ZSBzb3VyY2U6IGNhbmNlbCgpIHdpdGggcGFydGlhbGx5IGZpbGxlZCBwZW5kaW5n
IHB1bGwoKSByZXF1ZXN0IAorTk9UUlVOIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6
IGVucXVldWUoKSwgZ2V0UmVhZGVyKCksIHRoZW4gcmVhZCh2aWV3KSB3aGVyZSB2aWV3LmJ1ZmZl
ciBpcyBub3QgZnVsbHkgY292ZXJlZCBieSB2aWV3IAorTk9UUlVOIFJlYWRhYmxlU3RyZWFtIHdp
dGggYnl0ZSBzb3VyY2U6IE11bHRpcGxlIGVucXVldWUoKSwgZ2V0UmVhZGVyKCksIHRoZW4gcmVh
ZCh2aWV3KSAKK05PVFJVTiBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBlbnF1ZXVl
KCksIGdldFJlYWRlcigpLCB0aGVuIHJlYWQodmlldykgd2l0aCBhIGJpZ2dlciB2aWV3IAorTk9U
UlVOIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IGVucXVldWUoKSwgZ2V0UmVhZGVy
KCksIHRoZW4gcmVhZCh2aWV3KSB3aXRoIHNtYWxsZXIgdmlld3MgCitOT1RSVU4gUmVhZGFibGVT
dHJlYW0gd2l0aCBieXRlIHNvdXJjZTogZW5xdWV1ZSgpIDEgYnl0ZSwgZ2V0UmVhZGVyKCksIHRo
ZW4gcmVhZCh2aWV3KSB3aXRoIFVpbnQxNkFycmF5IAorTk9UUlVOIFJlYWRhYmxlU3RyZWFtIHdp
dGggYnl0ZSBzb3VyY2U6IGVucXVldWUoKSAzIGJ5dGUsIGdldFJlYWRlcigpLCB0aGVuIHJlYWQo
dmlldykgd2l0aCAyLWVsZW1lbnQgVWludDE2QXJyYXkgCitOT1RSVU4gUmVhZGFibGVTdHJlYW0g
d2l0aCBieXRlIHNvdXJjZTogcmVhZCh2aWV3KSB3aXRoIFVpbnQxNkFycmF5IG9uIGNsb3NlKCkt
ZCBzdHJlYW0gd2l0aCAxIGJ5dGUgZW5xdWV1ZSgpLWQgbXVzdCBmYWlsIAorTk9UUlVOIFJlYWRh
YmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IEEgc3RyZWFtIG11c3QgYmUgZXJyb3JlZCBpZiBj
bG9zZSgpLWQgYmVmb3JlIGZ1bGZpbGxpbmcgcmVhZCh2aWV3KSB3aXRoIFVpbnQxNkFycmF5IAor
UEFTUyBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBUaHJvdyBpZiBjbG9zZSgpLWVk
IG1vcmUgdGhhbiBvbmNlIAorUEFTUyBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBU
aHJvdyBvbiBlbnF1ZXVlKCkgYWZ0ZXIgY2xvc2UoKSAKK05PVFJVTiBSZWFkYWJsZVN0cmVhbSB3
aXRoIGJ5dGUgc291cmNlOiByZWFkKHZpZXcpLCB0aGVuIHJlc3BvbmQoKSBhbmQgY2xvc2UoKSBp
biBwdWxsKCkgCitOT1RSVU4gUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogcmVhZCh2
aWV3KSB3aXRoIFVpbnQzMkFycmF5LCB0aGVuIGZpbGwgaXQgYnkgbXVsdGlwbGUgcmVzcG9uZCgp
IGNhbGxzIAorTk9UUlVOIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IHJlYWQoKSB0
d2ljZSwgdGhlbiBlbnF1ZXVlKCkgdHdpY2UgCitOT1RSVU4gUmVhZGFibGVTdHJlYW0gd2l0aCBi
eXRlIHNvdXJjZTogTXVsdGlwbGUgcmVhZCh2aWV3KSwgY2xvc2UoKSBhbmQgcmVzcG9uZCgpIAor
Tk9UUlVOIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IE11bHRpcGxlIHJlYWQodmll
dyksIGJpZyBlbnF1ZXVlKCkgCitOT1RSVU4gUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJj
ZTogTXVsdGlwbGUgcmVhZCh2aWV3KSBhbmQgbXVsdGlwbGUgZW5xdWV1ZSgpIAorTk9UUlVOIFJl
YWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IHJlYWQodmlldykgd2l0aCBwYXNzaW5nIHVu
ZGVmaW5lZCBhcyB2aWV3IG11c3QgZmFpbCAKK05PVFJVTiBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5
dGUgc291cmNlOiByZWFkKHZpZXcpIHdpdGggcGFzc2luZyBhbiBlbXB0eSBvYmplY3QgYXMgdmll
dyBtdXN0IGZhaWwgCitOT1RSVU4gUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogRXZl
biByZWFkKHZpZXcpIHdpdGggcGFzc2luZyBBcnJheUJ1ZmZlclZpZXcgbGlrZSBvYmplY3QgYXMg
dmlldyBtdXN0IGZhaWwgCitOT1RSVU4gUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTog
cmVhZCgpIG9uIGFuIGVycm9yZWQgc3RyZWFtIAorTk9UUlVOIFJlYWRhYmxlU3RyZWFtIHdpdGgg
Ynl0ZSBzb3VyY2U6IHJlYWQoKSwgdGhlbiBlcnJvcigpIAorTk9UUlVOIFJlYWRhYmxlU3RyZWFt
IHdpdGggYnl0ZSBzb3VyY2U6IHJlYWQodmlldykgb24gYW4gZXJyb3JlZCBzdHJlYW0gCitOT1RS
VU4gUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogcmVhZCh2aWV3KSwgdGhlbiBlcnJv
cigpIAorTk9UUlVOIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IFRocm93aW5nIGlu
IHB1bGwgZnVuY3Rpb24gbXVzdCBlcnJvciB0aGUgc3RyZWFtIAorTk9UUlVOIFJlYWRhYmxlU3Ry
ZWFtIHdpdGggYnl0ZSBzb3VyY2U6IFRocm93aW5nIGluIHB1bGwgaW4gcmVzcG9uc2UgdG8gcmVh
ZCgpIG11c3QgYmUgaWdub3JlZCBpZiB0aGUgc3RyZWFtIGlzIGVycm9yZWQgaW4gaXQgCitOT1RS
VU4gUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogVGhyb3dpbmcgaW4gcHVsbCBpbiBy
ZXNwb25zZSB0byByZWFkKHZpZXcpIGZ1bmN0aW9uIG11c3QgZXJyb3IgdGhlIHN0cmVhbSAKK05P
VFJVTiBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBUaHJvd2luZyBpbiBwdWxsIGlu
IHJlc3BvbnNlIHRvIHJlYWQodmlldykgbXVzdCBiZSBpZ25vcmVkIGlmIHRoZSBzdHJlYW0gaXMg
ZXJyb3JlZCBpbiBpdCAKK05PVFJVTiBjYWxsaW5nIHJlc3BvbmQoKSB0d2ljZSBvbiB0aGUgc2Ft
ZSBieW9iUmVxdWVzdCBzaG91bGQgdGhyb3cgCitOT1RSVU4gY2FsbGluZyByZXNwb25kV2l0aE5l
d1ZpZXcoKSB0d2ljZSBvbiB0aGUgc2FtZSBieW9iUmVxdWVzdCBzaG91bGQgdGhyb3cgCitOT1RS
VU4gY2FsbGluZyByZXNwb25kKDApIHR3aWNlIG9uIHRoZSBzYW1lIGJ5b2JSZXF1ZXN0IHNob3Vs
ZCB0aHJvdyBldmVuIHdoZW4gY2xvc2VkIAorTk9UUlVOIHB1bGwoKSByZXNvbHZpbmcgc2hvdWxk
IG5vdCBtYWtlIHJlbGVhc2VMb2NrKCkgcG9zc2libGUgCitOT1RSVU4gUmVhZGFibGVTdHJlYW0g
d2l0aCBieXRlIHNvdXJjZTogZGVmYXVsdCByZWFkZXIgKyBhdXRvQWxsb2NhdGVDaHVua1NpemUg
KyBieW9iUmVxdWVzdCBpbnRlcmFjdGlvbiAKK1BBU1MgUmVhZGFibGVTdHJlYW1CWU9CUmVhZGVy
IGNhbiBiZSBjb25zdHJ1Y3RlZCBkaXJlY3RseSAKK1BBU1MgUmVhZGFibGVTdHJlYW1CWU9CUmVh
ZGVyIGNvbnN0cnVjdG9yIHJlcXVpcmVzIGEgUmVhZGFibGVTdHJlYW0gYXJndW1lbnQgCitQQVNT
IFJlYWRhYmxlU3RyZWFtQllPQlJlYWRlciBjb25zdHJ1Y3RvciByZXF1aXJlcyBhbiB1bmxvY2tl
ZCBSZWFkYWJsZVN0cmVhbSAKK1BBU1MgUmVhZGFibGVTdHJlYW1CWU9CUmVhZGVyIGNvbnN0cnVj
dG9yIHJlcXVpcmVzIGEgUmVhZGFibGVTdHJlYW0gd2l0aCB0eXBlICJieXRlcyIgCitQQVNTIFJl
YWRhYmxlU3RyZWFtIGNvbnN0cnVjdG9yIHNob3VsZCBub3QgYWNjZXB0IGEgc3RyYXRlZ3kgd2l0
aCBhIHNpemUgZGVmaW5lZCBpZiB0eXBlIGlzICJieXRlcyIgCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1i
eXRlLXN0cmVhbXMvZ2VuZXJhbC5hbnkuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMvZ2VuZXJhbC5h
bnkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4yMzgyOTEzNTI4ZTY5M2IzYTVkNTZjNjYwYTQ1MDYwOTgwYjU0
OGMzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFtcy9nZW5lcmFsLmFueS5odG1s
CkBAIC0wLDAgKzEgQEAKKzwhLS0gVGhpcyBmaWxlIGlzIHJlcXVpcmVkIGZvciBXZWJLaXQgdGVz
dCBpbmZyYXN0cnVjdHVyZSB0byBydW4gdGhlIHRlbXBsYXRlZCB0ZXN0IC0tPgpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMvZ2VuZXJhbC5h
bnkuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL2dlbmVyYWwuYW55LmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUzODRk
YmM1Yzc5NDRiYzc1Y2UyYTAxNDQ3NmM1MzY3ZDE1N2ZlN2IKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFi
bGUtYnl0ZS1zdHJlYW1zL2dlbmVyYWwuYW55LmpzCkBAIC0wLDAgKzEsMjEwMyBAQAorLy8gTUVU
QTogZ2xvYmFsPXdpbmRvdyx3b3JrZXIsanNzaGVsbAorLy8gTUVUQTogc2NyaXB0PS4uL3Jlc291
cmNlcy9ycy11dGlscy5qcworLy8gTUVUQTogc2NyaXB0PS4uL3Jlc291cmNlcy90ZXN0LXV0aWxz
LmpzCisndXNlIHN0cmljdCc7CisKK2NvbnN0IGVycm9yMSA9IG5ldyBFcnJvcignZXJyb3IxJyk7
CitlcnJvcjEubmFtZSA9ICdlcnJvcjEnOworCit0ZXN0KCgpID0+IHsKKyAgYXNzZXJ0X3Rocm93
c19qcyhUeXBlRXJyb3IsICgpID0+IG5ldyBSZWFkYWJsZVN0cmVhbSgpLmdldFJlYWRlcih7IG1v
ZGU6ICdieW9iJyB9KSk7Cit9LCAnZ2V0UmVhZGVyKHttb2RlOiAiYnlvYiJ9KSB0aHJvd3Mgb24g
bm9uLWJ5dGVzIHN0cmVhbXMnKTsKKworCit0ZXN0KCgpID0+IHsKKyAgLy8gQ29uc3RydWN0aW5n
IFJlYWRhYmxlU3RyZWFtIHdpdGggYW4gZW1wdHkgdW5kZXJseWluZyBieXRlIHNvdXJjZSBvYmpl
Y3QgYXMgcGFyYW1ldGVyIHNob3VsZG4ndCB0aHJvdy4KKyAgbmV3IFJlYWRhYmxlU3RyZWFtKHsg
dHlwZTogJ2J5dGVzJyB9KS5nZXRSZWFkZXIoeyBtb2RlOiAnYnlvYicgfSk7CisgIC8vIENvbnN0
cnVjdG9yIG11c3QgcGVyZm9ybSBUb1N0cmluZyh0eXBlKS4KKyAgbmV3IFJlYWRhYmxlU3RyZWFt
KHsgdHlwZTogeyB0b1N0cmluZygpIHtyZXR1cm4gJ2J5dGVzJzt9IH0gfSkKKyAgICAuZ2V0UmVh
ZGVyKHsgbW9kZTogJ2J5b2InIH0pOworICBuZXcgUmVhZGFibGVTdHJlYW0oeyB0eXBlOiB7IHRv
U3RyaW5nOiBudWxsLCB2YWx1ZU9mKCkge3JldHVybiAnYnl0ZXMnO30gfSB9KQorICAgIC5nZXRS
ZWFkZXIoeyBtb2RlOiAnYnlvYicgfSk7Cit9LCAnUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNv
dXJjZSBjYW4gYmUgY29uc3RydWN0ZWQgd2l0aCBubyBlcnJvcnMnKTsKKwordGVzdCgoKSA9PiB7
CisgIGNvbnN0IFJlYWRhYmxlU3RyZWFtQllPQlJlYWRlciA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7
IHR5cGU6ICdieXRlcycgfSkuZ2V0UmVhZGVyKHsgbW9kZTogJ2J5b2InIH0pLmNvbnN0cnVjdG9y
OworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7IHR5cGU6ICdieXRlcycgfSk7CisK
KyAgbGV0IHJlYWRlciA9IHJzLmdldFJlYWRlcih7IG1vZGU6IHsgdG9TdHJpbmcoKSB7IHJldHVy
biAnYnlvYic7IH0gfSB9KTsKKyAgYXNzZXJ0X3RydWUocmVhZGVyIGluc3RhbmNlb2YgUmVhZGFi
bGVTdHJlYW1CWU9CUmVhZGVyLCAnbXVzdCBnaXZlIGEgQllPQiByZWFkZXInKTsKKyAgcmVhZGVy
LnJlbGVhc2VMb2NrKCk7CisKKyAgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKHsgbW9kZTogeyB0b1N0
cmluZzogbnVsbCwgdmFsdWVPZigpIHtyZXR1cm4gJ2J5b2InO30gfSB9KTsKKyAgYXNzZXJ0X3Ry
dWUocmVhZGVyIGluc3RhbmNlb2YgUmVhZGFibGVTdHJlYW1CWU9CUmVhZGVyLCAnbXVzdCBnaXZl
IGEgQllPQiByZWFkZXInKTsKKyAgcmVhZGVyLnJlbGVhc2VMb2NrKCk7CisKKyAgcmVhZGVyID0g
cnMuZ2V0UmVhZGVyKHsgbW9kZTogJ2J5b2InLCBub3Rtb2RlOiAnaWdub3JlZCcgfSk7CisgIGFz
c2VydF90cnVlKHJlYWRlciBpbnN0YW5jZW9mIFJlYWRhYmxlU3RyZWFtQllPQlJlYWRlciwgJ211
c3QgZ2l2ZSBhIEJZT0IgcmVhZGVyJyk7Cit9LCAnZ2V0UmVhZGVyKHttb2RlfSkgbXVzdCBwZXJm
b3JtIFRvU3RyaW5nKCknKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgbGV0IHN0YXJ0Q2Fs
bGVkID0gZmFsc2U7CisgIGxldCBzdGFydENhbGxlZEJlZm9yZVB1bGwgPSBmYWxzZTsKKyAgbGV0
IGRlc2lyZWRTaXplOworICBsZXQgY29udHJvbGxlcjsKKworICBsZXQgcmVzb2x2ZVRlc3RQcm9t
aXNlOworICBjb25zdCB0ZXN0UHJvbWlzZSA9IG5ldyBQcm9taXNlKHJlc29sdmUgPT4geworICAg
IHJlc29sdmVUZXN0UHJvbWlzZSA9IHJlc29sdmU7CisgIH0pOworCisgIG5ldyBSZWFkYWJsZVN0
cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgY29udHJvbGxlciA9IGM7CisgICAgICBzdGFy
dENhbGxlZCA9IHRydWU7CisgICAgfSwKKyAgICBwdWxsKCkgeworICAgICAgc3RhcnRDYWxsZWRC
ZWZvcmVQdWxsID0gc3RhcnRDYWxsZWQ7CisgICAgICBkZXNpcmVkU2l6ZSA9IGNvbnRyb2xsZXIu
ZGVzaXJlZFNpemU7CisgICAgICByZXNvbHZlVGVzdFByb21pc2UoKTsKKyAgICB9LAorICAgIHR5
cGU6ICdieXRlcycKKyAgfSwgeworICAgIGhpZ2hXYXRlck1hcms6IDI1NgorICB9KTsKKworICBy
ZXR1cm4gdGVzdFByb21pc2UudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X3RydWUoc3RhcnRDYWxs
ZWRCZWZvcmVQdWxsLCAnc3RhcnQgc2hvdWxkIGJlIGNhbGxlZCBiZWZvcmUgcHVsbCcpOworICAg
IGFzc2VydF9lcXVhbHMoZGVzaXJlZFNpemUsIDI1NiwgJ2Rlc2lyZWRTaXplIHNob3VsZCBlcXVh
bCBoaWdoV2F0ZXJNYXJrJyk7CisgIH0pOworCit9LCAnUmVhZGFibGVTdHJlYW0gd2l0aCBieXRl
IHNvdXJjZTogQ29uc3RydWN0IGFuZCBleHBlY3Qgc3RhcnQgYW5kIHB1bGwgYmVpbmcgY2FsbGVk
Jyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisgIGxldCBwdWxsQ291bnQgPSAwOworICBsZXQg
Y2hlY2tlZE5vUHVsbCA9IGZhbHNlOworCisgIGxldCByZXNvbHZlVGVzdFByb21pc2U7CisgIGNv
bnN0IHRlc3RQcm9taXNlID0gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7CisgICAgcmVzb2x2ZVRl
c3RQcm9taXNlID0gcmVzb2x2ZTsKKyAgfSk7CisgIGxldCByZXNvbHZlU3RhcnRQcm9taXNlOwor
CisgIG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoKSB7CisgICAgICByZXR1cm4gbmV3
IFByb21pc2UocmVzb2x2ZSA9PiB7CisgICAgICAgIHJlc29sdmVTdGFydFByb21pc2UgPSByZXNv
bHZlOworICAgICAgfSk7CisgICAgfSwKKyAgICBwdWxsKCkgeworICAgICAgaWYgKGNoZWNrZWRO
b1B1bGwpIHsKKyAgICAgICAgcmVzb2x2ZVRlc3RQcm9taXNlKCk7CisgICAgICB9CisKKyAgICAg
ICsrcHVsbENvdW50OworICAgIH0sCisgICAgdHlwZTogJ2J5dGVzJworICB9LCB7CisgICAgaGln
aFdhdGVyTWFyazogMjU2CisgIH0pOworCisgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCkgPT4g
eworICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAwKTsKKyAgICBjaGVja2VkTm9QdWxsID0g
dHJ1ZTsKKyAgICByZXNvbHZlU3RhcnRQcm9taXNlKCk7CisgIH0pOworCisgIHJldHVybiB0ZXN0
UHJvbWlzZTsKKworfSwgJ1JlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IE5vIGF1dG9t
YXRpYyBwdWxsIGNhbGwgaWYgc3RhcnQgZG9lc25cJ3QgZmluaXNoJyk7CisKK3Byb21pc2VfdGVz
dCh0ID0+IHsKKyAgbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBwdWxsOiB0LnVucmVhY2hlZF9m
dW5jKCdwdWxsKCkgc2hvdWxkIG5vdCBiZSBjYWxsZWQnKSwKKyAgICB0eXBlOiAnYnl0ZXMnCisg
IH0sIHsKKyAgICBoaWdoV2F0ZXJNYXJrOiAwCisgIH0pOworCisgIHJldHVybiBQcm9taXNlLnJl
c29sdmUoKTsKK30sICdSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBDb25zdHJ1Y3Qg
d2l0aCBoaWdoV2F0ZXJNYXJrIG9mIDAnKTsKKwordGVzdCgoKSA9PiB7CisgIG5ldyBSZWFkYWJs
ZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgYXNzZXJ0X2VxdWFscyhjLmRlc2lyZWRT
aXplLCAxMCwgJ2Rlc2lyZWRTaXplIG11c3Qgc3RhcnQgYXQgdGhlIGhpZ2hXYXRlck1hcmsnKTsK
KyAgICAgIGMuY2xvc2UoKTsKKyAgICAgIGFzc2VydF9lcXVhbHMoYy5kZXNpcmVkU2l6ZSwgMCwg
J2FmdGVyIGNsb3NpbmcsIGRlc2lyZWRTaXplIG11c3QgYmUgMCcpOworICAgIH0sCisgICAgdHlw
ZTogJ2J5dGVzJworICB9LCB7CisgICAgaGlnaFdhdGVyTWFyazogMTAKKyAgfSk7Cit9LCAnUmVh
ZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogZGVzaXJlZFNpemUgd2hlbiBjbG9zZWQnKTsK
KwordGVzdCgoKSA9PiB7CisgIG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgewor
ICAgICAgYXNzZXJ0X2VxdWFscyhjLmRlc2lyZWRTaXplLCAxMCwgJ2Rlc2lyZWRTaXplIG11c3Qg
c3RhcnQgYXQgdGhlIGhpZ2hXYXRlck1hcmsnKTsKKyAgICAgIGMuZXJyb3IoKTsKKyAgICAgIGFz
c2VydF9lcXVhbHMoYy5kZXNpcmVkU2l6ZSwgbnVsbCwgJ2FmdGVyIGVycm9yaW5nLCBkZXNpcmVk
U2l6ZSBtdXN0IGJlIG51bGwnKTsKKyAgICB9LAorICAgIHR5cGU6ICdieXRlcycKKyAgfSwgewor
ICAgIGhpZ2hXYXRlck1hcms6IDEwCisgIH0pOworfSwgJ1JlYWRhYmxlU3RyZWFtIHdpdGggYnl0
ZSBzb3VyY2U6IGRlc2lyZWRTaXplIHdoZW4gZXJyb3JlZCcpOworCitwcm9taXNlX3Rlc3QodCA9
PiB7CisgIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgdHlwZTogJ2J5
dGVzJworICB9KTsKKworICBjb25zdCByZWFkZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKCk7CisgIHJl
YWRlci5yZWxlYXNlTG9jaygpOworCisgIHJldHVybiBwcm9taXNlX3JlamVjdHNfanModCwgVHlw
ZUVycm9yLCByZWFkZXIuY2xvc2VkLCAnY2xvc2VkIG11c3QgcmVqZWN0Jyk7Cit9LCAnUmVhZGFi
bGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogZ2V0UmVhZGVyKCksIHRoZW4gcmVsZWFzZUxvY2so
KScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJs
ZVN0cmVhbSh7CisgICAgdHlwZTogJ2J5dGVzJworICB9KTsKKworICBjb25zdCByZWFkZXIgPSBz
dHJlYW0uZ2V0UmVhZGVyKHsgbW9kZTogJ2J5b2InIH0pOworICByZWFkZXIucmVsZWFzZUxvY2so
KTsKKworICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2pzKHQsIFR5cGVFcnJvciwgcmVhZGVyLmNs
b3NlZCwgJ2Nsb3NlZCBtdXN0IHJlamVjdCcpOworfSwgJ1JlYWRhYmxlU3RyZWFtIHdpdGggYnl0
ZSBzb3VyY2U6IGdldFJlYWRlcigpIHdpdGggbW9kZSBzZXQgdG8gYnlvYiwgdGhlbiByZWxlYXNl
TG9jaygpJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgY29uc3Qgc3RyZWFtID0gbmV3IFJl
YWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjLmNsb3NlKCk7CisgICAgfSwK
KyAgICBwdWxsOiB0LnVucmVhY2hlZF9mdW5jKCdwdWxsKCkgc2hvdWxkIG5vdCBiZSBjYWxsZWQn
KSwKKyAgICB0eXBlOiAnYnl0ZXMnCisgIH0pOworCisgIGNvbnN0IHJlYWRlciA9IHN0cmVhbS5n
ZXRSZWFkZXIoKTsKKworICByZXR1cm4gcmVhZGVyLmNsb3NlZC50aGVuKCgpID0+IHsKKyAgICBh
c3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4gc3RyZWFtLmdldFJlYWRlcigpLCAnZ2V0
UmVhZGVyKCkgbXVzdCB0aHJvdycpOworICB9KTsKK30sICdSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5
dGUgc291cmNlOiBUZXN0IHRoYXQgY2xvc2luZyBhIHN0cmVhbSBkb2VzIG5vdCByZWxlYXNlIGEg
cmVhZGVyIGF1dG9tYXRpY2FsbHknKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBjb25zdCBz
dHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGMuY2xv
c2UoKTsKKyAgICB9LAorICAgIHB1bGw6IHQudW5yZWFjaGVkX2Z1bmMoJ3B1bGwoKSBzaG91bGQg
bm90IGJlIGNhbGxlZCcpLAorICAgIHR5cGU6ICdieXRlcycKKyAgfSk7CisKKyAgY29uc3QgcmVh
ZGVyID0gc3RyZWFtLmdldFJlYWRlcih7IG1vZGU6ICdieW9iJyB9KTsKKworICByZXR1cm4gcmVh
ZGVyLmNsb3NlZC50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwg
KCkgPT4gc3RyZWFtLmdldFJlYWRlcih7IG1vZGU6ICdieW9iJyB9KSwgJ2dldFJlYWRlcigpIG11
c3QgdGhyb3cnKTsKKyAgfSk7Cit9LCAnUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTog
VGVzdCB0aGF0IGNsb3NpbmcgYSBzdHJlYW0gZG9lcyBub3QgcmVsZWFzZSBhIEJZT0IgcmVhZGVy
IGF1dG9tYXRpY2FsbHknKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBjb25zdCBzdHJlYW0g
PSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGMuZXJyb3IoZXJy
b3IxKTsKKyAgICB9LAorICAgIHB1bGw6IHQudW5yZWFjaGVkX2Z1bmMoJ3B1bGwoKSBzaG91bGQg
bm90IGJlIGNhbGxlZCcpLAorICAgIHR5cGU6ICdieXRlcycKKyAgfSk7CisKKyAgY29uc3QgcmVh
ZGVyID0gc3RyZWFtLmdldFJlYWRlcigpOworCisgIHJldHVybiBwcm9taXNlX3JlamVjdHNfZXhh
Y3RseSh0LCBlcnJvcjEsIHJlYWRlci5jbG9zZWQsICdjbG9zZWQgbXVzdCByZWplY3QnKS50aGVu
KCgpID0+IHsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4gc3RyZWFtLmdl
dFJlYWRlcigpLCAnZ2V0UmVhZGVyKCkgbXVzdCB0aHJvdycpOworICB9KTsKK30sICdSZWFkYWJs
ZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBUZXN0IHRoYXQgZXJyb3JpbmcgYSBzdHJlYW0gZG9l
cyBub3QgcmVsZWFzZSBhIHJlYWRlciBhdXRvbWF0aWNhbGx5Jyk7CisKK3Byb21pc2VfdGVzdCh0
ID0+IHsKKyAgY29uc3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChj
KSB7CisgICAgICBjLmVycm9yKGVycm9yMSk7CisgICAgfSwKKyAgICBwdWxsOiB0LnVucmVhY2hl
ZF9mdW5jKCdwdWxsKCkgc2hvdWxkIG5vdCBiZSBjYWxsZWQnKSwKKyAgICB0eXBlOiAnYnl0ZXMn
CisgIH0pOworCisgIGNvbnN0IHJlYWRlciA9IHN0cmVhbS5nZXRSZWFkZXIoeyBtb2RlOiAnYnlv
YicgfSk7CisKKyAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMSwgcmVh
ZGVyLmNsb3NlZCwgJ2Nsb3NlZCBtdXN0IHJlamVjdCcpLnRoZW4oKCkgPT4geworICAgIGFzc2Vy
dF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiBzdHJlYW0uZ2V0UmVhZGVyKHsgbW9kZTogJ2J5
b2InIH0pLCAnZ2V0UmVhZGVyKCkgbXVzdCB0aHJvdycpOworICB9KTsKK30sICdSZWFkYWJsZVN0
cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBUZXN0IHRoYXQgZXJyb3JpbmcgYSBzdHJlYW0gZG9lcyBu
b3QgcmVsZWFzZSBhIEJZT0IgcmVhZGVyIGF1dG9tYXRpY2FsbHknKTsKKwordGVzdCgoKSA9PiB7
CisgIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgdHlwZTogJ2J5dGVz
JworICB9KTsKKworICBjb25zdCByZWFkZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKCk7CisgIHJlYWRl
ci5yZWFkKCk7CisgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiByZWFkZXIucmVs
ZWFzZUxvY2soKSwgJ3JlYWRlci5yZWxlYXNlTG9jaygpIG11c3QgdGhyb3cnKTsKK30sICdSZWFk
YWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiByZWxlYXNlTG9jaygpIG9uIFJlYWRhYmxlU3Ry
ZWFtUmVhZGVyIHdpdGggcGVuZGluZyByZWFkKCkgbXVzdCB0aHJvdycpOworCitwcm9taXNlX3Rl
c3QoKCkgPT4geworICBsZXQgcHVsbENvdW50ID0gMDsKKworICBjb25zdCBzdHJlYW0gPSBuZXcg
UmVhZGFibGVTdHJlYW0oeworICAgIHB1bGwoKSB7CisgICAgICArK3B1bGxDb3VudDsKKyAgICB9
LAorICAgIHR5cGU6ICdieXRlcycKKyAgfSwgeworICAgIGhpZ2hXYXRlck1hcms6IDgKKyAgfSk7
CisKKyAgc3RyZWFtLmdldFJlYWRlcigpOworCisgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAw
LCAnTm8gcHVsbCBhcyBzdGFydCgpIGp1c3QgZmluaXNoZWQgYW5kIGlzIG5vdCB5ZXQgcmVmbGVj
dGVkIHRvIHRoZSBzdGF0ZSBvZiB0aGUgc3RyZWFtJyk7CisKKyAgcmV0dXJuIFByb21pc2UucmVz
b2x2ZSgpLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAxLCAncHVs
bCBtdXN0IGJlIGludm9rZWQnKTsKKyAgfSk7Cit9LCAnUmVhZGFibGVTdHJlYW0gd2l0aCBieXRl
IHNvdXJjZTogQXV0b21hdGljIHB1bGwoKSBhZnRlciBzdGFydCgpJyk7CisKK3Byb21pc2VfdGVz
dCgoKSA9PiB7CisgIGxldCBwdWxsQ291bnQgPSAwOworCisgIGNvbnN0IHN0cmVhbSA9IG5ldyBS
ZWFkYWJsZVN0cmVhbSh7CisgICAgcHVsbCgpIHsKKyAgICAgICsrcHVsbENvdW50OworICAgIH0s
CisgICAgdHlwZTogJ2J5dGVzJworICB9LCB7CisgICAgaGlnaFdhdGVyTWFyazogMAorICB9KTsK
KworICBjb25zdCByZWFkZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKCk7CisgIHJlYWRlci5yZWFkKCk7
CisKKyAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDAsICdObyBwdWxsIGFzIHN0YXJ0KCkganVz
dCBmaW5pc2hlZCBhbmQgaXMgbm90IHlldCByZWZsZWN0ZWQgdG8gdGhlIHN0YXRlIG9mIHRoZSBz
dHJlYW0nKTsKKworICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiB7CisgICAg
YXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDEsICdwdWxsIG11c3QgYmUgaW52b2tlZCcpOworICB9
KTsKK30sICdSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBBdXRvbWF0aWMgcHVsbCgp
IGFmdGVyIHN0YXJ0KCkgYW5kIHJlYWQoKScpOworCisvLyBWaWV3IGJ1ZmZlcnMgYXJlIGRldGFj
aGVkIGFmdGVyIHB1bGwoKSByZXR1cm5zLCBzbyByZWNvcmQgdGhlIGluZm9ybWF0aW9uIGF0IHRo
ZSB0aW1lIHRoYXQgcHVsbCgpIHdhcyBjYWxsZWQuCitmdW5jdGlvbiBleHRyYWN0Vmlld0luZm8o
dmlldykgeworICByZXR1cm4geworICAgIGNvbnN0cnVjdG9yOiB2aWV3LmNvbnN0cnVjdG9yLAor
ICAgIGJ1ZmZlckJ5dGVMZW5ndGg6IHZpZXcuYnVmZmVyLmJ5dGVMZW5ndGgsCisgICAgYnl0ZU9m
ZnNldDogdmlldy5ieXRlT2Zmc2V0LAorICAgIGJ5dGVMZW5ndGg6IHZpZXcuYnl0ZUxlbmd0aAor
ICB9OworfQorCitwcm9taXNlX3Rlc3QoKCkgPT4geworICBsZXQgcHVsbENvdW50ID0gMDsKKyAg
bGV0IGNvbnRyb2xsZXI7CisgIGNvbnN0IGJ5b2JSZXF1ZXN0cyA9IFtdOworCisgIGNvbnN0IHN0
cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgY29udHJv
bGxlciA9IGM7CisgICAgfSwKKyAgICBwdWxsKCkgeworICAgICAgY29uc3QgYnlvYlJlcXVlc3Qg
PSBjb250cm9sbGVyLmJ5b2JSZXF1ZXN0OworICAgICAgY29uc3QgdmlldyA9IGJ5b2JSZXF1ZXN0
LnZpZXc7CisgICAgICBieW9iUmVxdWVzdHNbcHVsbENvdW50XSA9IHsKKyAgICAgICAgbm9uTnVs
bDogYnlvYlJlcXVlc3QgIT09IG51bGwsCisgICAgICAgIHZpZXdOb25OdWxsOiB2aWV3ICE9PSBu
dWxsLAorICAgICAgICB2aWV3SW5mbzogZXh0cmFjdFZpZXdJbmZvKHZpZXcpCisgICAgICB9Owor
ICAgICAgaWYgKHB1bGxDb3VudCA9PT0gMCkgeworICAgICAgICB2aWV3WzBdID0gMHgwMTsKKyAg
ICAgICAgYnlvYlJlcXVlc3QucmVzcG9uZCgxKTsKKyAgICAgIH0gZWxzZSBpZiAocHVsbENvdW50
ID09PSAxKSB7CisgICAgICAgIHZpZXdbMF0gPSAweDAyOworICAgICAgICB2aWV3WzFdID0gMHgw
MzsKKyAgICAgICAgYnlvYlJlcXVlc3QucmVzcG9uZCgyKTsKKyAgICAgIH0KKworICAgICAgKytw
dWxsQ291bnQ7CisgICAgfSwKKyAgICB0eXBlOiAnYnl0ZXMnLAorICAgIGF1dG9BbGxvY2F0ZUNo
dW5rU2l6ZTogMTYKKyAgfSwgeworICAgIGhpZ2hXYXRlck1hcms6IDAKKyAgfSk7CisKKyAgY29u
c3QgcmVhZGVyID0gc3RyZWFtLmdldFJlYWRlcigpOworICBjb25zdCBwMCA9IHJlYWRlci5yZWFk
KCk7CisgIGNvbnN0IHAxID0gcmVhZGVyLnJlYWQoKTsKKworICBhc3NlcnRfZXF1YWxzKHB1bGxD
b3VudCwgMCwgJ05vIHB1bGwoKSBhcyBzdGFydCgpIGp1c3QgZmluaXNoZWQgYW5kIGlzIG5vdCB5
ZXQgcmVmbGVjdGVkIHRvIHRoZSBzdGF0ZSBvZiB0aGUgc3RyZWFtJyk7CisKKyAgcmV0dXJuIFBy
b21pc2UucmVzb2x2ZSgpLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50
LCAxLCAncHVsbCgpIG11c3QgaGF2ZSBiZWVuIGludm9rZWQgb25jZScpOworICAgIGNvbnN0IGJ5
b2JSZXF1ZXN0ID0gYnlvYlJlcXVlc3RzWzBdOworICAgIGFzc2VydF90cnVlKGJ5b2JSZXF1ZXN0
Lm5vbk51bGwsICdmaXJzdCBieW9iUmVxdWVzdCBtdXN0IG5vdCBiZSBudWxsJyk7CisgICAgYXNz
ZXJ0X3RydWUoYnlvYlJlcXVlc3Qudmlld05vbk51bGwsICdmaXJzdCBieW9iUmVxdWVzdC52aWV3
IG11c3Qgbm90IGJlIG51bGwnKTsKKyAgICBjb25zdCB2aWV3SW5mbyA9IGJ5b2JSZXF1ZXN0LnZp
ZXdJbmZvOworICAgIGFzc2VydF9lcXVhbHModmlld0luZm8uY29uc3RydWN0b3IsIFVpbnQ4QXJy
YXksICdmaXJzdCB2aWV3LmNvbnN0cnVjdG9yIHNob3VsZCBiZSBVaW50OEFycmF5Jyk7CisgICAg
YXNzZXJ0X2VxdWFscyh2aWV3SW5mby5idWZmZXJCeXRlTGVuZ3RoLCAxNiwgJ2ZpcnN0IHZpZXcu
YnVmZmVyLmJ5dGVMZW5ndGggc2hvdWxkIGJlIDE2Jyk7CisgICAgYXNzZXJ0X2VxdWFscyh2aWV3
SW5mby5ieXRlT2Zmc2V0LCAwLCAnZmlyc3Qgdmlldy5ieXRlT2Zmc2V0IHNob3VsZCBiZSAwJyk7
CisgICAgYXNzZXJ0X2VxdWFscyh2aWV3SW5mby5ieXRlTGVuZ3RoLCAxNiwgJ2ZpcnN0IHZpZXcu
Ynl0ZUxlbmd0aCBzaG91bGQgYmUgMTYnKTsKKworICAgIHJldHVybiBwMDsKKyAgfSkudGhlbihy
ZXN1bHQgPT4geworICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAyLCAncHVsbCgpIG11c3Qg
aGF2ZSBiZWVuIGludm9rZWQgdHdpY2UnKTsKKyAgICBjb25zdCB2YWx1ZSA9IHJlc3VsdC52YWx1
ZTsKKyAgICBhc3NlcnRfbm90X2VxdWFscyh2YWx1ZSwgdW5kZWZpbmVkLCAnZmlyc3QgcmVhZCBz
aG91bGQgaGF2ZSBhIHZhbHVlJyk7CisgICAgYXNzZXJ0X2VxdWFscyh2YWx1ZS5jb25zdHJ1Y3Rv
ciwgVWludDhBcnJheSwgJ2ZpcnN0IHZhbHVlIHNob3VsZCBiZSBhIFVpbnQ4QXJyYXknKTsKKyAg
ICBhc3NlcnRfZXF1YWxzKHZhbHVlLmJ1ZmZlci5ieXRlTGVuZ3RoLCAxNiwgJ2ZpcnN0IHZhbHVl
LmJ1ZmZlci5ieXRlTGVuZ3RoIHNob3VsZCBiZSAxNicpOworICAgIGFzc2VydF9lcXVhbHModmFs
dWUuYnl0ZU9mZnNldCwgMCwgJ2ZpcnN0IHZhbHVlLmJ5dGVPZmZzZXQgc2hvdWxkIGJlIDAnKTsK
KyAgICBhc3NlcnRfZXF1YWxzKHZhbHVlLmJ5dGVMZW5ndGgsIDEsICdmaXJzdCB2YWx1ZS5ieXRl
TGVuZ3RoIHNob3VsZCBiZSAxJyk7CisgICAgYXNzZXJ0X2VxdWFscyh2YWx1ZVswXSwgMHgwMSwg
J2ZpcnN0IHZhbHVlWzBdIHNob3VsZCBiZSAweDAxJyk7CisgICAgY29uc3QgYnlvYlJlcXVlc3Qg
PSBieW9iUmVxdWVzdHNbMV07CisgICAgYXNzZXJ0X3RydWUoYnlvYlJlcXVlc3Qubm9uTnVsbCwg
J3NlY29uZCBieW9iUmVxdWVzdCBtdXN0IG5vdCBiZSBudWxsJyk7CisgICAgYXNzZXJ0X3RydWUo
YnlvYlJlcXVlc3Qudmlld05vbk51bGwsICdzZWNvbmQgYnlvYlJlcXVlc3QudmlldyBtdXN0IG5v
dCBiZSBudWxsJyk7CisgICAgY29uc3Qgdmlld0luZm8gPSBieW9iUmVxdWVzdC52aWV3SW5mbzsK
KyAgICBhc3NlcnRfZXF1YWxzKHZpZXdJbmZvLmNvbnN0cnVjdG9yLCBVaW50OEFycmF5LCAnc2Vj
b25kIHZpZXcuY29uc3RydWN0b3Igc2hvdWxkIGJlIFVpbnQ4QXJyYXknKTsKKyAgICBhc3NlcnRf
ZXF1YWxzKHZpZXdJbmZvLmJ1ZmZlckJ5dGVMZW5ndGgsIDE2LCAnc2Vjb25kIHZpZXcuYnVmZmVy
LmJ5dGVMZW5ndGggc2hvdWxkIGJlIDE2Jyk7CisgICAgYXNzZXJ0X2VxdWFscyh2aWV3SW5mby5i
eXRlT2Zmc2V0LCAwLCAnc2Vjb25kIHZpZXcuYnl0ZU9mZnNldCBzaG91bGQgYmUgMCcpOworICAg
IGFzc2VydF9lcXVhbHModmlld0luZm8uYnl0ZUxlbmd0aCwgMTYsICdzZWNvbmQgdmlldy5ieXRl
TGVuZ3RoIHNob3VsZCBiZSAxNicpOworCisgICAgcmV0dXJuIHAxOworICB9KS50aGVuKHJlc3Vs
dCA9PiB7CisgICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDIsICdwdWxsKCkgc2hvdWxkIG9u
bHkgYmUgaW52b2tlZCB0d2ljZScpOworICAgIGNvbnN0IHZhbHVlID0gcmVzdWx0LnZhbHVlOwor
ICAgIGFzc2VydF9ub3RfZXF1YWxzKHZhbHVlLCB1bmRlZmluZWQsICdzZWNvbmQgcmVhZCBzaG91
bGQgaGF2ZSBhIHZhbHVlJyk7CisgICAgYXNzZXJ0X2VxdWFscyh2YWx1ZS5jb25zdHJ1Y3Rvciwg
VWludDhBcnJheSwgJ3NlY29uZCB2YWx1ZSBzaG91bGQgYmUgYSBVaW50OEFycmF5Jyk7CisgICAg
YXNzZXJ0X2VxdWFscyh2YWx1ZS5idWZmZXIuYnl0ZUxlbmd0aCwgMTYsICdzZWNvbmQgdmFsdWUu
YnVmZmVyLmJ5dGVMZW5ndGggc2hvdWxkIGJlIDE2Jyk7CisgICAgYXNzZXJ0X2VxdWFscyh2YWx1
ZS5ieXRlT2Zmc2V0LCAwLCAnc2Vjb25kIHZhbHVlLmJ5dGVPZmZzZXQgc2hvdWxkIGJlIDAnKTsK
KyAgICBhc3NlcnRfZXF1YWxzKHZhbHVlLmJ5dGVMZW5ndGgsIDIsICdzZWNvbmQgdmFsdWUuYnl0
ZUxlbmd0aCBzaG91bGQgYmUgMicpOworICAgIGFzc2VydF9lcXVhbHModmFsdWVbMF0sIDB4MDIs
ICdzZWNvbmQgdmFsdWVbMF0gc2hvdWxkIGJlIDB4MDInKTsKKyAgICBhc3NlcnRfZXF1YWxzKHZh
bHVlWzFdLCAweDAzLCAnc2Vjb25kIHZhbHVlWzFdIHNob3VsZCBiZSAweDAzJyk7CisgIH0pOwor
fSwgJ1JlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IGF1dG9BbGxvY2F0ZUNodW5rU2l6
ZScpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworICBsZXQgcHVsbENvdW50ID0gMDsKKyAgbGV0
IGNvbnRyb2xsZXI7CisgIGNvbnN0IGJ5b2JSZXF1ZXN0cyA9IFtdOworCisgIGNvbnN0IHN0cmVh
bSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgY29udHJvbGxl
ciA9IGM7CisgICAgfSwKKyAgICBwdWxsKCkgeworICAgICAgY29uc3QgYnlvYlJlcXVlc3QgPSBj
b250cm9sbGVyLmJ5b2JSZXF1ZXN0OworICAgICAgY29uc3QgdmlldyA9IGJ5b2JSZXF1ZXN0LnZp
ZXc7CisgICAgICBieW9iUmVxdWVzdHNbcHVsbENvdW50XSA9IHsKKyAgICAgICAgbm9uTnVsbDog
YnlvYlJlcXVlc3QgIT09IG51bGwsCisgICAgICAgIHZpZXdOb25OdWxsOiB2aWV3ICE9PSBudWxs
LAorICAgICAgICB2aWV3SW5mbzogZXh0cmFjdFZpZXdJbmZvKHZpZXcpCisgICAgICB9OworICAg
ICAgaWYgKHB1bGxDb3VudCA9PT0gMCkgeworICAgICAgICB2aWV3WzBdID0gMHgwMTsKKyAgICAg
ICAgYnlvYlJlcXVlc3QucmVzcG9uZCgxKTsKKyAgICAgIH0gZWxzZSBpZiAocHVsbENvdW50ID09
PSAxKSB7CisgICAgICAgIHZpZXdbMF0gPSAweDAyOworICAgICAgICB2aWV3WzFdID0gMHgwMzsK
KyAgICAgICAgYnlvYlJlcXVlc3QucmVzcG9uZCgyKTsKKyAgICAgIH0KKworICAgICAgKytwdWxs
Q291bnQ7CisgICAgfSwKKyAgICB0eXBlOiAnYnl0ZXMnLAorICAgIGF1dG9BbGxvY2F0ZUNodW5r
U2l6ZTogMTYKKyAgfSwgeworICAgIGhpZ2hXYXRlck1hcms6IDAKKyAgfSk7CisKKyAgY29uc3Qg
cmVhZGVyID0gc3RyZWFtLmdldFJlYWRlcigpOworICByZXR1cm4gcmVhZGVyLnJlYWQoKS50aGVu
KHJlc3VsdCA9PiB7CisgICAgY29uc3QgdmFsdWUgPSByZXN1bHQudmFsdWU7CisgICAgYXNzZXJ0
X25vdF9lcXVhbHModmFsdWUsIHVuZGVmaW5lZCwgJ2ZpcnN0IHJlYWQgc2hvdWxkIGhhdmUgYSB2
YWx1ZScpOworICAgIGFzc2VydF9lcXVhbHModmFsdWUuY29uc3RydWN0b3IsIFVpbnQ4QXJyYXks
ICdmaXJzdCB2YWx1ZSBzaG91bGQgYmUgYSBVaW50OEFycmF5Jyk7CisgICAgYXNzZXJ0X2VxdWFs
cyh2YWx1ZS5idWZmZXIuYnl0ZUxlbmd0aCwgMTYsICdmaXJzdCB2YWx1ZS5idWZmZXIuYnl0ZUxl
bmd0aCBzaG91bGQgYmUgMTYnKTsKKyAgICBhc3NlcnRfZXF1YWxzKHZhbHVlLmJ5dGVPZmZzZXQs
IDAsICdmaXJzdCB2YWx1ZS5ieXRlT2Zmc2V0IHNob3VsZCBiZSAwJyk7CisgICAgYXNzZXJ0X2Vx
dWFscyh2YWx1ZS5ieXRlTGVuZ3RoLCAxLCAnZmlyc3QgdmFsdWUuYnl0ZUxlbmd0aCBzaG91bGQg
YmUgMScpOworICAgIGFzc2VydF9lcXVhbHModmFsdWVbMF0sIDB4MDEsICdmaXJzdCB2YWx1ZVsw
XSBzaG91bGQgYmUgMHgwMScpOworICAgIGNvbnN0IGJ5b2JSZXF1ZXN0ID0gYnlvYlJlcXVlc3Rz
WzBdOworICAgIGFzc2VydF90cnVlKGJ5b2JSZXF1ZXN0Lm5vbk51bGwsICdmaXJzdCBieW9iUmVx
dWVzdCBtdXN0IG5vdCBiZSBudWxsJyk7CisgICAgYXNzZXJ0X3RydWUoYnlvYlJlcXVlc3Qudmll
d05vbk51bGwsICdmaXJzdCBieW9iUmVxdWVzdC52aWV3IG11c3Qgbm90IGJlIG51bGwnKTsKKyAg
ICBjb25zdCB2aWV3SW5mbyA9IGJ5b2JSZXF1ZXN0LnZpZXdJbmZvOworICAgIGFzc2VydF9lcXVh
bHModmlld0luZm8uY29uc3RydWN0b3IsIFVpbnQ4QXJyYXksICdmaXJzdCB2aWV3LmNvbnN0cnVj
dG9yIHNob3VsZCBiZSBVaW50OEFycmF5Jyk7CisgICAgYXNzZXJ0X2VxdWFscyh2aWV3SW5mby5i
dWZmZXJCeXRlTGVuZ3RoLCAxNiwgJ2ZpcnN0IHZpZXcuYnVmZmVyLmJ5dGVMZW5ndGggc2hvdWxk
IGJlIDE2Jyk7CisgICAgYXNzZXJ0X2VxdWFscyh2aWV3SW5mby5ieXRlT2Zmc2V0LCAwLCAnZmly
c3Qgdmlldy5ieXRlT2Zmc2V0IHNob3VsZCBiZSAwJyk7CisgICAgYXNzZXJ0X2VxdWFscyh2aWV3
SW5mby5ieXRlTGVuZ3RoLCAxNiwgJ2ZpcnN0IHZpZXcuYnl0ZUxlbmd0aCBzaG91bGQgYmUgMTYn
KTsKKworICAgIHJlYWRlci5yZWxlYXNlTG9jaygpOworICAgIGNvbnN0IGJ5b2JSZWFkZXIgPSBz
dHJlYW0uZ2V0UmVhZGVyKHsgbW9kZTogJ2J5b2InIH0pOworICAgIHJldHVybiBieW9iUmVhZGVy
LnJlYWQobmV3IFVpbnQ4QXJyYXkoMzIpKTsKKyAgfSkudGhlbihyZXN1bHQgPT4geworICAgIGNv
bnN0IHZhbHVlID0gcmVzdWx0LnZhbHVlOworICAgIGFzc2VydF9ub3RfZXF1YWxzKHZhbHVlLCB1
bmRlZmluZWQsICdzZWNvbmQgcmVhZCBzaG91bGQgaGF2ZSBhIHZhbHVlJyk7CisgICAgYXNzZXJ0
X2VxdWFscyh2YWx1ZS5jb25zdHJ1Y3RvciwgVWludDhBcnJheSwgJ3NlY29uZCB2YWx1ZSBzaG91
bGQgYmUgYSBVaW50OEFycmF5Jyk7CisgICAgYXNzZXJ0X2VxdWFscyh2YWx1ZS5idWZmZXIuYnl0
ZUxlbmd0aCwgMzIsICdzZWNvbmQgdmFsdWUuYnVmZmVyLmJ5dGVMZW5ndGggc2hvdWxkIGJlIDMy
Jyk7CisgICAgYXNzZXJ0X2VxdWFscyh2YWx1ZS5ieXRlT2Zmc2V0LCAwLCAnc2Vjb25kIHZhbHVl
LmJ5dGVPZmZzZXQgc2hvdWxkIGJlIDAnKTsKKyAgICBhc3NlcnRfZXF1YWxzKHZhbHVlLmJ5dGVM
ZW5ndGgsIDIsICdzZWNvbmQgdmFsdWUuYnl0ZUxlbmd0aCBzaG91bGQgYmUgMicpOworICAgIGFz
c2VydF9lcXVhbHModmFsdWVbMF0sIDB4MDIsICdzZWNvbmQgdmFsdWVbMF0gc2hvdWxkIGJlIDB4
MDInKTsKKyAgICBhc3NlcnRfZXF1YWxzKHZhbHVlWzFdLCAweDAzLCAnc2Vjb25kIHZhbHVlWzFd
IHNob3VsZCBiZSAweDAzJyk7CisgICAgY29uc3QgYnlvYlJlcXVlc3QgPSBieW9iUmVxdWVzdHNb
MV07CisgICAgYXNzZXJ0X3RydWUoYnlvYlJlcXVlc3Qubm9uTnVsbCwgJ3NlY29uZCBieW9iUmVx
dWVzdCBtdXN0IG5vdCBiZSBudWxsJyk7CisgICAgYXNzZXJ0X3RydWUoYnlvYlJlcXVlc3Qudmll
d05vbk51bGwsICdzZWNvbmQgYnlvYlJlcXVlc3QudmlldyBtdXN0IG5vdCBiZSBudWxsJyk7Cisg
ICAgY29uc3Qgdmlld0luZm8gPSBieW9iUmVxdWVzdC52aWV3SW5mbzsKKyAgICBhc3NlcnRfZXF1
YWxzKHZpZXdJbmZvLmNvbnN0cnVjdG9yLCBVaW50OEFycmF5LCAnc2Vjb25kIHZpZXcuY29uc3Ry
dWN0b3Igc2hvdWxkIGJlIFVpbnQ4QXJyYXknKTsKKyAgICBhc3NlcnRfZXF1YWxzKHZpZXdJbmZv
LmJ1ZmZlckJ5dGVMZW5ndGgsIDMyLCAnc2Vjb25kIHZpZXcuYnVmZmVyLmJ5dGVMZW5ndGggc2hv
dWxkIGJlIDMyJyk7CisgICAgYXNzZXJ0X2VxdWFscyh2aWV3SW5mby5ieXRlT2Zmc2V0LCAwLCAn
c2Vjb25kIHZpZXcuYnl0ZU9mZnNldCBzaG91bGQgYmUgMCcpOworICAgIGFzc2VydF9lcXVhbHMo
dmlld0luZm8uYnl0ZUxlbmd0aCwgMzIsICdzZWNvbmQgdmlldy5ieXRlTGVuZ3RoIHNob3VsZCBi
ZSAzMicpOworICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAyLCAncHVsbENvdW50IHNob3Vs
ZCBiZSAyJyk7CisgIH0pOworfSwgJ1JlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IE1p
eCBvZiBhdXRvIGFsbG9jYXRlIGFuZCBCWU9CJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7Cisg
IGxldCBwdWxsQ291bnQgPSAwOworCisgIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVh
bSh7CisgICAgcHVsbCgpIHsKKyAgICAgICsrcHVsbENvdW50OworICAgIH0sCisgICAgdHlwZTog
J2J5dGVzJworICB9LCB7CisgICAgaGlnaFdhdGVyTWFyazogMAorICB9KTsKKworICBjb25zdCBy
ZWFkZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKCk7CisgIHJlYWRlci5yZWFkKG5ldyBVaW50OEFycmF5
KDgpKTsKKworICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMCwgJ05vIHB1bGwgYXMgc3RhcnQo
KSBqdXN0IGZpbmlzaGVkIGFuZCBpcyBub3QgeWV0IHJlZmxlY3RlZCB0byB0aGUgc3RhdGUgb2Yg
dGhlIHN0cmVhbScpOworCisgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHsK
KyAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMSwgJ3B1bGwgbXVzdCBiZSBpbnZva2VkJyk7
CisgIH0pOworfSwgJ1JlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IEF1dG9tYXRpYyBw
dWxsKCkgYWZ0ZXIgc3RhcnQoKSBhbmQgcmVhZCh2aWV3KScpOworCitwcm9taXNlX3Rlc3QoKCkg
PT4geworICBsZXQgcHVsbENvdW50ID0gMDsKKworICBsZXQgY29udHJvbGxlcjsKKyAgbGV0IGRl
c2lyZWRTaXplSW5TdGFydDsKKyAgbGV0IGRlc2lyZWRTaXplSW5QdWxsOworCisgIGNvbnN0IHN0
cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgYy5lbnF1
ZXVlKG5ldyBVaW50OEFycmF5KDE2KSk7CisgICAgICBkZXNpcmVkU2l6ZUluU3RhcnQgPSBjLmRl
c2lyZWRTaXplOworICAgICAgY29udHJvbGxlciA9IGM7CisgICAgfSwKKyAgICBwdWxsKCkgewor
ICAgICAgKytwdWxsQ291bnQ7CisKKyAgICAgIGlmIChwdWxsQ291bnQgPT09IDEpIHsKKyAgICAg
ICAgZGVzaXJlZFNpemVJblB1bGwgPSBjb250cm9sbGVyLmRlc2lyZWRTaXplOworICAgICAgfQor
ICAgIH0sCisgICAgdHlwZTogJ2J5dGVzJworICB9LCB7CisgICAgaGlnaFdhdGVyTWFyazogOAor
ICB9KTsKKworICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiB7CisgICAgYXNz
ZXJ0X2VxdWFscyhwdWxsQ291bnQsIDAsICdObyBwdWxsIGFzIHRoZSBxdWV1ZSB3YXMgZmlsbGVk
IGJ5IHN0YXJ0KCknKTsKKyAgICBhc3NlcnRfZXF1YWxzKGRlc2lyZWRTaXplSW5TdGFydCwgLTgs
ICdkZXNpcmVkU2l6ZSBhZnRlciBlbnF1ZXVlKCkgaW4gc3RhcnQoKScpOworCisgICAgY29uc3Qg
cmVhZGVyID0gc3RyZWFtLmdldFJlYWRlcigpOworCisgICAgY29uc3QgcHJvbWlzZSA9IHJlYWRl
ci5yZWFkKCk7CisgICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDEsICdUaGUgZmlyc3QgcHVs
bCgpIHNob3VsZCBiZSBtYWRlIG9uIHJlYWQoKScpOworICAgIGFzc2VydF9lcXVhbHMoZGVzaXJl
ZFNpemVJblB1bGwsIDgsICdkZXNpcmVkU2l6ZSBpbiBwdWxsKCknKTsKKworICAgIHJldHVybiBw
cm9taXNlLnRoZW4ocmVzdWx0ID0+IHsKKyAgICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LmRvbmUs
IGZhbHNlLCAncmVzdWx0LmRvbmUnKTsKKworICAgICAgY29uc3QgdmlldyA9IHJlc3VsdC52YWx1
ZTsKKyAgICAgIGFzc2VydF9lcXVhbHModmlldy5jb25zdHJ1Y3RvciwgVWludDhBcnJheSwgJ3Zp
ZXcuY29uc3RydWN0b3InKTsKKyAgICAgIGFzc2VydF9lcXVhbHModmlldy5idWZmZXIuYnl0ZUxl
bmd0aCwgMTYsICd2aWV3LmJ1ZmZlcicpOworICAgICAgYXNzZXJ0X2VxdWFscyh2aWV3LmJ5dGVP
ZmZzZXQsIDAsICd2aWV3LmJ5dGVPZmZzZXQnKTsKKyAgICAgIGFzc2VydF9lcXVhbHModmlldy5i
eXRlTGVuZ3RoLCAxNiwgJ3ZpZXcuYnl0ZUxlbmd0aCcpOworICAgIH0pOworICB9KTsKK30sICdS
ZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBlbnF1ZXVlKCksIGdldFJlYWRlcigpLCB0
aGVuIHJlYWQoKScpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworICBsZXQgY29udHJvbGxlcjsK
KworICBjb25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsK
KyAgICAgIGNvbnRyb2xsZXIgPSBjOworICAgIH0sCisgICAgdHlwZTogJ2J5dGVzJworICB9KTsK
KworICBjb25zdCByZWFkZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKCk7CisKKyAgY29uc3QgcHJvbWlz
ZSA9IHJlYWRlci5yZWFkKCkudGhlbihyZXN1bHQgPT4geworICAgIGFzc2VydF9lcXVhbHMocmVz
dWx0LmRvbmUsIGZhbHNlKTsKKworICAgIGNvbnN0IHZpZXcgPSByZXN1bHQudmFsdWU7CisgICAg
YXNzZXJ0X2VxdWFscyh2aWV3LmNvbnN0cnVjdG9yLCBVaW50OEFycmF5KTsKKyAgICBhc3NlcnRf
ZXF1YWxzKHZpZXcuYnVmZmVyLmJ5dGVMZW5ndGgsIDEpOworICAgIGFzc2VydF9lcXVhbHModmll
dy5ieXRlT2Zmc2V0LCAwKTsKKyAgICBhc3NlcnRfZXF1YWxzKHZpZXcuYnl0ZUxlbmd0aCwgMSk7
CisgIH0pOworCisgIGNvbnRyb2xsZXIuZW5xdWV1ZShuZXcgVWludDhBcnJheSgxKSk7CisKKyAg
cmV0dXJuIHByb21pc2U7Cit9LCAnUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogUHVz
aCBzb3VyY2UgdGhhdCBkb2VzblwndCB1bmRlcnN0YW5kIHB1bGwgc2lnbmFsJyk7CisKK3Rlc3Qo
KCkgPT4geworICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4gbmV3IFJlYWRhYmxl
U3RyZWFtKHsKKyAgICBwdWxsOiAnZm9vJywKKyAgICB0eXBlOiAnYnl0ZXMnCisgIH0pLCAnY29u
c3RydWN0b3Igc2hvdWxkIHRocm93Jyk7Cit9LCAnUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNv
dXJjZTogcHVsbCgpIGZ1bmN0aW9uIGlzIG5vdCBjYWxsYWJsZScpOworCitwcm9taXNlX3Rlc3Qo
KCkgPT4geworICBjb25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0
KGMpIHsKKyAgICAgIGMuZW5xdWV1ZShuZXcgVWludDE2QXJyYXkoMTYpKTsKKyAgICB9LAorICAg
IHR5cGU6ICdieXRlcycKKyAgfSk7CisKKyAgY29uc3QgcmVhZGVyID0gc3RyZWFtLmdldFJlYWRl
cigpOworCisgIHJldHVybiByZWFkZXIucmVhZCgpLnRoZW4ocmVzdWx0ID0+IHsKKyAgICBhc3Nl
cnRfZXF1YWxzKHJlc3VsdC5kb25lLCBmYWxzZSk7CisKKyAgICBjb25zdCB2aWV3ID0gcmVzdWx0
LnZhbHVlOworICAgIGFzc2VydF9lcXVhbHModmlldy5jb25zdHJ1Y3RvciwgVWludDhBcnJheSk7
CisgICAgYXNzZXJ0X2VxdWFscyh2aWV3LmJ1ZmZlci5ieXRlTGVuZ3RoLCAzMik7CisgICAgYXNz
ZXJ0X2VxdWFscyh2aWV3LmJ5dGVPZmZzZXQsIDApOworICAgIGFzc2VydF9lcXVhbHModmlldy5i
eXRlTGVuZ3RoLCAzMik7CisgIH0pOworfSwgJ1JlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3Vy
Y2U6IGVucXVldWUoKSB3aXRoIFVpbnQxNkFycmF5LCBnZXRSZWFkZXIoKSwgdGhlbiByZWFkKCkn
KTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBjb25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGVT
dHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGNvbnN0IHZpZXcgPSBuZXcgVWludDhBcnJh
eSgxNik7CisgICAgICB2aWV3WzBdID0gMHgwMTsKKyAgICAgIHZpZXdbOF0gPSAweDAyOworICAg
ICAgYy5lbnF1ZXVlKHZpZXcpOworICAgIH0sCisgICAgcHVsbDogdC51bnJlYWNoZWRfZnVuYygn
cHVsbCgpIHNob3VsZCBub3QgYmUgY2FsbGVkJyksCisgICAgdHlwZTogJ2J5dGVzJworICB9KTsK
KworICBjb25zdCBieW9iUmVhZGVyID0gc3RyZWFtLmdldFJlYWRlcih7IG1vZGU6ICdieW9iJyB9
KTsKKworICByZXR1cm4gYnlvYlJlYWRlci5yZWFkKG5ldyBVaW50OEFycmF5KDgpKS50aGVuKHJl
c3VsdCA9PiB7CisgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQuZG9uZSwgZmFsc2UsICdkb25lJyk7
CisKKyAgICBjb25zdCB2aWV3ID0gcmVzdWx0LnZhbHVlOworICAgIGFzc2VydF9lcXVhbHModmll
dy5jb25zdHJ1Y3RvciwgVWludDhBcnJheSwgJ3ZhbHVlLmNvbnN0cnVjdG9yJyk7CisgICAgYXNz
ZXJ0X2VxdWFscyh2aWV3LmJ1ZmZlci5ieXRlTGVuZ3RoLCA4LCAndmFsdWUuYnVmZmVyLmJ5dGVM
ZW5ndGgnKTsKKyAgICBhc3NlcnRfZXF1YWxzKHZpZXcuYnl0ZU9mZnNldCwgMCwgJ3ZhbHVlLmJ5
dGVPZmZzZXQnKTsKKyAgICBhc3NlcnRfZXF1YWxzKHZpZXcuYnl0ZUxlbmd0aCwgOCwgJ3ZhbHVl
LmJ5dGVMZW5ndGgnKTsKKyAgICBhc3NlcnRfZXF1YWxzKHZpZXdbMF0sIDB4MDEpOworCisgICAg
YnlvYlJlYWRlci5yZWxlYXNlTG9jaygpOworCisgICAgY29uc3QgcmVhZGVyID0gc3RyZWFtLmdl
dFJlYWRlcigpOworCisgICAgcmV0dXJuIHJlYWRlci5yZWFkKCk7CisgIH0pLnRoZW4ocmVzdWx0
ID0+IHsKKyAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdC5kb25lLCBmYWxzZSwgJ2RvbmUnKTsKKwor
ICAgIGNvbnN0IHZpZXcgPSByZXN1bHQudmFsdWU7CisgICAgYXNzZXJ0X2VxdWFscyh2aWV3LmNv
bnN0cnVjdG9yLCBVaW50OEFycmF5LCAndmFsdWUuY29uc3RydWN0b3InKTsKKyAgICBhc3NlcnRf
ZXF1YWxzKHZpZXcuYnVmZmVyLmJ5dGVMZW5ndGgsIDE2LCAndmFsdWUuYnVmZmVyLmJ5dGVMZW5n
dGgnKTsKKyAgICBhc3NlcnRfZXF1YWxzKHZpZXcuYnl0ZU9mZnNldCwgOCwgJ3ZhbHVlLmJ5dGVP
ZmZzZXQnKTsKKyAgICBhc3NlcnRfZXF1YWxzKHZpZXcuYnl0ZUxlbmd0aCwgOCwgJ3ZhbHVlLmJ5
dGVMZW5ndGgnKTsKKyAgICBhc3NlcnRfZXF1YWxzKHZpZXdbMF0sIDB4MDIpOworICB9KTsKK30s
ICdSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBlbnF1ZXVlKCksIHJlYWQodmlldykg
cGFydGlhbGx5LCB0aGVuIHJlYWQoKScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIGxldCBj
b250cm9sbGVyOworCisgIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAg
c3RhcnQoYykgeworICAgICAgY29udHJvbGxlciA9IGM7CisgICAgfSwKKyAgICBwdWxsOiB0LnVu
cmVhY2hlZF9mdW5jKCdwdWxsKCkgc2hvdWxkIG5vdCBiZSBjYWxsZWQnKSwKKyAgICB0eXBlOiAn
Ynl0ZXMnCisgIH0pOworCisgIGNvbnN0IHJlYWRlciA9IHN0cmVhbS5nZXRSZWFkZXIoKTsKKwor
ICBjb250cm9sbGVyLmVucXVldWUobmV3IFVpbnQ4QXJyYXkoMTYpKTsKKyAgY29udHJvbGxlci5j
bG9zZSgpOworCisgIHJldHVybiByZWFkZXIucmVhZCgpLnRoZW4ocmVzdWx0ID0+IHsKKyAgICBh
c3NlcnRfZXF1YWxzKHJlc3VsdC5kb25lLCBmYWxzZSwgJ2RvbmUnKTsKKworICAgIGNvbnN0IHZp
ZXcgPSByZXN1bHQudmFsdWU7CisgICAgYXNzZXJ0X2VxdWFscyh2aWV3LmJ5dGVPZmZzZXQsIDAs
ICdieXRlT2Zmc2V0Jyk7CisgICAgYXNzZXJ0X2VxdWFscyh2aWV3LmJ5dGVMZW5ndGgsIDE2LCAn
Ynl0ZUxlbmd0aCcpOworCisgICAgcmV0dXJuIHJlYWRlci5yZWFkKCk7CisgIH0pLnRoZW4ocmVz
dWx0ID0+IHsKKyAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdC5kb25lLCB0cnVlLCAnZG9uZScpOwor
ICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LnZhbHVlLCB1bmRlZmluZWQsICd2YWx1ZScpOworICB9
KTsKK30sICdSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBnZXRSZWFkZXIoKSwgZW5x
dWV1ZSgpLCBjbG9zZSgpLCB0aGVuIHJlYWQoKScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7Cisg
IGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAg
ICAgYy5lbnF1ZXVlKG5ldyBVaW50OEFycmF5KDE2KSk7CisgICAgICBjLmNsb3NlKCk7CisgICAg
fSwKKyAgICBwdWxsOiB0LnVucmVhY2hlZF9mdW5jKCdwdWxsKCkgc2hvdWxkIG5vdCBiZSBjYWxs
ZWQnKSwKKyAgICB0eXBlOiAnYnl0ZXMnCisgIH0pOworCisgIGNvbnN0IHJlYWRlciA9IHN0cmVh
bS5nZXRSZWFkZXIoKTsKKworICByZXR1cm4gcmVhZGVyLnJlYWQoKS50aGVuKHJlc3VsdCA9PiB7
CisgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQuZG9uZSwgZmFsc2UsICdkb25lJyk7CisKKyAgICBj
b25zdCB2aWV3ID0gcmVzdWx0LnZhbHVlOworICAgIGFzc2VydF9lcXVhbHModmlldy5ieXRlT2Zm
c2V0LCAwLCAnYnl0ZU9mZnNldCcpOworICAgIGFzc2VydF9lcXVhbHModmlldy5ieXRlTGVuZ3Ro
LCAxNiwgJ2J5dGVMZW5ndGgnKTsKKworICAgIHJldHVybiByZWFkZXIucmVhZCgpOworICB9KS50
aGVuKHJlc3VsdCA9PiB7CisgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQuZG9uZSwgdHJ1ZSwgJ2Rv
bmUnKTsKKyAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdC52YWx1ZSwgdW5kZWZpbmVkLCAndmFsdWUn
KTsKKyAgfSk7Cit9LCAnUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogZW5xdWV1ZSgp
LCBjbG9zZSgpLCBnZXRSZWFkZXIoKSwgdGhlbiByZWFkKCknKTsKKworcHJvbWlzZV90ZXN0KCgp
ID0+IHsKKyAgbGV0IGNvbnRyb2xsZXI7CisgIGxldCBieW9iUmVxdWVzdDsKKworICBjb25zdCBz
dHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGNvbnRy
b2xsZXIgPSBjOworICAgIH0sCisgICAgcHVsbCgpIHsKKyAgICAgIGNvbnRyb2xsZXIuZW5xdWV1
ZShuZXcgVWludDhBcnJheSgxNikpOworICAgICAgYnlvYlJlcXVlc3QgPSBjb250cm9sbGVyLmJ5
b2JSZXF1ZXN0OworICAgIH0sCisgICAgdHlwZTogJ2J5dGVzJworICB9KTsKKworICBjb25zdCBy
ZWFkZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKCk7CisKKyAgcmV0dXJuIHJlYWRlci5yZWFkKCkudGhl
bihyZXN1bHQgPT4geworICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LmRvbmUsIGZhbHNlLCAnZG9u
ZScpOworICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LnZhbHVlLmJ5dGVMZW5ndGgsIDE2LCAnYnl0
ZUxlbmd0aCcpOworICAgIGFzc2VydF9lcXVhbHMoYnlvYlJlcXVlc3QsIG51bGwsICdieW9iUmVx
dWVzdCBtdXN0IGJlIG51bGwnKTsKKyAgfSk7Cit9LCAnUmVhZGFibGVTdHJlYW0gd2l0aCBieXRl
IHNvdXJjZTogUmVzcG9uZCB0byBwdWxsKCkgYnkgZW5xdWV1ZSgpJyk7CisKK3Byb21pc2VfdGVz
dCgoKSA9PiB7CisgIGxldCBwdWxsQ291bnQgPSAwOworCisgIGxldCBjb250cm9sbGVyOworICBs
ZXQgYnlvYlJlcXVlc3Q7CisgIGNvbnN0IGRlc2lyZWRTaXplcyA9IFtdOworCisgIGNvbnN0IHN0
cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgY29udHJv
bGxlciA9IGM7CisgICAgfSwKKyAgICBwdWxsKCkgeworICAgICAgYnlvYlJlcXVlc3QgPSBjb250
cm9sbGVyLmJ5b2JSZXF1ZXN0OworICAgICAgZGVzaXJlZFNpemVzLnB1c2goY29udHJvbGxlci5k
ZXNpcmVkU2l6ZSk7CisgICAgICBjb250cm9sbGVyLmVucXVldWUobmV3IFVpbnQ4QXJyYXkoMSkp
OworICAgICAgZGVzaXJlZFNpemVzLnB1c2goY29udHJvbGxlci5kZXNpcmVkU2l6ZSk7CisgICAg
ICBjb250cm9sbGVyLmVucXVldWUobmV3IFVpbnQ4QXJyYXkoMSkpOworICAgICAgZGVzaXJlZFNp
emVzLnB1c2goY29udHJvbGxlci5kZXNpcmVkU2l6ZSk7CisKKyAgICAgICsrcHVsbENvdW50Owor
ICAgIH0sCisgICAgdHlwZTogJ2J5dGVzJworICB9LCB7CisgICAgaGlnaFdhdGVyTWFyazogMAor
ICB9KTsKKworICBjb25zdCByZWFkZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKCk7CisKKyAgY29uc3Qg
cDAgPSByZWFkZXIucmVhZCgpOworICBjb25zdCBwMSA9IHJlYWRlci5yZWFkKCk7CisgIGNvbnN0
IHAyID0gcmVhZGVyLnJlYWQoKTsKKworICAvLyBSZXNwb25kIHRvIHRoZSBmaXJzdCBwdWxsIGNh
bGwuCisgIGNvbnRyb2xsZXIuZW5xdWV1ZShuZXcgVWludDhBcnJheSgxKSk7CisKKyAgYXNzZXJ0
X2VxdWFscyhwdWxsQ291bnQsIDAsICdwdWxsQ291bnQgYWZ0ZXIgdGhlIGVucXVldWUoKSBvdXRz
aWRlIHB1bGwnKTsKKworICByZXR1cm4gUHJvbWlzZS5hbGwoW3AwLCBwMSwgcDJdKS50aGVuKHJl
c3VsdCA9PiB7CisgICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDEsICdwdWxsQ291bnQgYWZ0
ZXIgY29tcGxldGlvbiBvZiBhbGwgcmVhZCgpcycpOworCisgICAgYXNzZXJ0X2VxdWFscyhyZXN1
bHRbMF0uZG9uZSwgZmFsc2UsICdyZXN1bHRbMF0uZG9uZScpOworICAgIGFzc2VydF9lcXVhbHMo
cmVzdWx0WzBdLnZhbHVlLmJ5dGVMZW5ndGgsIDEsICdyZXN1bHRbMF0udmFsdWUuYnl0ZUxlbmd0
aCcpOworICAgIGFzc2VydF9lcXVhbHMocmVzdWx0WzFdLmRvbmUsIGZhbHNlLCAncmVzdWx0WzFd
LmRvbmUnKTsKKyAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdFsxXS52YWx1ZS5ieXRlTGVuZ3RoLCAx
LCAncmVzdWx0WzFdLnZhbHVlLmJ5dGVMZW5ndGgnKTsKKyAgICBhc3NlcnRfZXF1YWxzKHJlc3Vs
dFsyXS5kb25lLCBmYWxzZSwgJ3Jlc3VsdFsyXS5kb25lJyk7CisgICAgYXNzZXJ0X2VxdWFscyhy
ZXN1bHRbMl0udmFsdWUuYnl0ZUxlbmd0aCwgMSwgJ3Jlc3VsdFsyXS52YWx1ZS5ieXRlTGVuZ3Ro
Jyk7CisgICAgYXNzZXJ0X2VxdWFscyhieW9iUmVxdWVzdCwgbnVsbCwgJ2J5b2JSZXF1ZXN0IHNo
b3VsZCBiZSBudWxsJyk7CisgICAgYXNzZXJ0X2VxdWFscyhkZXNpcmVkU2l6ZXNbMF0sIDAsICdk
ZXNpcmVkU2l6ZSBvbiBwdWxsIHNob3VsZCBiZSAwJyk7CisgICAgYXNzZXJ0X2VxdWFscyhkZXNp
cmVkU2l6ZXNbMV0sIDAsICdkZXNpcmVkU2l6ZSBhZnRlciAxc3QgZW5xdWV1ZSgpIHNob3VsZCBi
ZSAwJyk7CisgICAgYXNzZXJ0X2VxdWFscyhkZXNpcmVkU2l6ZXNbMl0sIDAsICdkZXNpcmVkU2l6
ZSBhZnRlciAybmQgZW5xdWV1ZSgpIHNob3VsZCBiZSAwJyk7CisgICAgYXNzZXJ0X2VxdWFscyhw
dWxsQ291bnQsIDEsICdwdWxsKCkgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIG9uY2UnKTsKKyAgfSk7
Cit9LCAnUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogUmVzcG9uZCB0byBwdWxsKCkg
YnkgZW5xdWV1ZSgpIGFzeW5jaHJvbm91c2x5Jyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7Cisg
IGxldCBwdWxsQ291bnQgPSAwOworCisgIGxldCBieW9iUmVxdWVzdDsKKyAgY29uc3QgZGVzaXJl
ZFNpemVzID0gW107CisKKyAgY29uc3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAg
ICBwdWxsKGMpIHsKKyAgICAgIGJ5b2JSZXF1ZXN0ID0gYy5ieW9iUmVxdWVzdDsKKyAgICAgIGRl
c2lyZWRTaXplcy5wdXNoKGMuZGVzaXJlZFNpemUpOworCisgICAgICBpZiAocHVsbENvdW50IDwg
MykgeworICAgICAgICBjLmVucXVldWUobmV3IFVpbnQ4QXJyYXkoMSkpOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgYy5jbG9zZSgpOworICAgICAgfQorCisgICAgICArK3B1bGxDb3VudDsKKyAg
ICB9LAorICAgIHR5cGU6ICdieXRlcycKKyAgfSwgeworICAgIGhpZ2hXYXRlck1hcms6IDI1Ngor
ICB9KTsKKworICBjb25zdCByZWFkZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKCk7CisKKyAgY29uc3Qg
cDAgPSByZWFkZXIucmVhZCgpOworICBjb25zdCBwMSA9IHJlYWRlci5yZWFkKCk7CisgIGNvbnN0
IHAyID0gcmVhZGVyLnJlYWQoKTsKKworICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMCwgJ05v
IHB1bGwgYXMgc3RhcnQoKSBqdXN0IGZpbmlzaGVkIGFuZCBpcyBub3QgeWV0IHJlZmxlY3RlZCB0
byB0aGUgc3RhdGUgb2YgdGhlIHN0cmVhbScpOworCisgIHJldHVybiBQcm9taXNlLmFsbChbcDAs
IHAxLCBwMl0pLnRoZW4ocmVzdWx0ID0+IHsKKyAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwg
NCwgJ3B1bGxDb3VudCBhZnRlciBjb21wbGV0aW9uIG9mIGFsbCByZWFkKClzJyk7CisKKyAgICBh
c3NlcnRfZXF1YWxzKHJlc3VsdFswXS5kb25lLCBmYWxzZSwgJ3Jlc3VsdFswXS5kb25lJyk7Cisg
ICAgYXNzZXJ0X2VxdWFscyhyZXN1bHRbMF0udmFsdWUuYnl0ZUxlbmd0aCwgMSwgJ3Jlc3VsdFsw
XS52YWx1ZS5ieXRlTGVuZ3RoJyk7CisgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHRbMV0uZG9uZSwg
ZmFsc2UsICdyZXN1bHRbMV0uZG9uZScpOworICAgIGFzc2VydF9lcXVhbHMocmVzdWx0WzFdLnZh
bHVlLmJ5dGVMZW5ndGgsIDEsICdyZXN1bHRbMV0udmFsdWUuYnl0ZUxlbmd0aCcpOworICAgIGFz
c2VydF9lcXVhbHMocmVzdWx0WzJdLmRvbmUsIGZhbHNlLCAncmVzdWx0WzJdLmRvbmUnKTsKKyAg
ICBhc3NlcnRfZXF1YWxzKHJlc3VsdFsyXS52YWx1ZS5ieXRlTGVuZ3RoLCAxLCAncmVzdWx0WzJd
LnZhbHVlLmJ5dGVMZW5ndGgnKTsKKyAgICBhc3NlcnRfZXF1YWxzKGJ5b2JSZXF1ZXN0LCBudWxs
LCAnYnlvYlJlcXVlc3Qgc2hvdWxkIGJlIG51bGwnKTsKKyAgICBhc3NlcnRfZXF1YWxzKGRlc2ly
ZWRTaXplc1swXSwgMjU2LCAnZGVzaXJlZFNpemUgb24gcHVsbCBzaG91bGQgYmUgMjU2Jyk7Cisg
ICAgYXNzZXJ0X2VxdWFscyhkZXNpcmVkU2l6ZXNbMV0sIDI1NiwgJ2Rlc2lyZWRTaXplIGFmdGVy
IDFzdCBlbnF1ZXVlKCkgc2hvdWxkIGJlIDI1NicpOworICAgIGFzc2VydF9lcXVhbHMoZGVzaXJl
ZFNpemVzWzJdLCAyNTYsICdkZXNpcmVkU2l6ZSBhZnRlciAybmQgZW5xdWV1ZSgpIHNob3VsZCBi
ZSAyNTYnKTsKKyAgICBhc3NlcnRfZXF1YWxzKGRlc2lyZWRTaXplc1szXSwgMjU2LCAnZGVzaXJl
ZFNpemUgYWZ0ZXIgM3JkIGVucXVldWUoKSBzaG91bGQgYmUgMjU2Jyk7CisgIH0pOworfSwgJ1Jl
YWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IFJlc3BvbmQgdG8gbXVsdGlwbGUgcHVsbCgp
IGJ5IHNlcGFyYXRlIGVucXVldWUoKScpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworICBsZXQg
Y29udHJvbGxlcjsKKworICBsZXQgcHVsbENvdW50ID0gMDsKKyAgY29uc3QgYnlvYlJlcXVlc3RE
ZWZpbmVkID0gW107CisKKyAgY29uc3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAg
ICBzdGFydChjKSB7CisgICAgICBjb250cm9sbGVyID0gYzsKKyAgICB9LAorICAgIHB1bGwoKSB7
CisgICAgICBieW9iUmVxdWVzdERlZmluZWQucHVzaChjb250cm9sbGVyLmJ5b2JSZXF1ZXN0ICE9
PSBudWxsKTsKKworICAgICAgY29uc3QgdmlldyA9IGNvbnRyb2xsZXIuYnlvYlJlcXVlc3Qudmll
dzsKKyAgICAgIHZpZXdbMF0gPSAweDAxOworICAgICAgY29udHJvbGxlci5ieW9iUmVxdWVzdC5y
ZXNwb25kKDEpOworCisgICAgICBieW9iUmVxdWVzdERlZmluZWQucHVzaChjb250cm9sbGVyLmJ5
b2JSZXF1ZXN0ICE9PSBudWxsKTsKKworICAgICAgKytwdWxsQ291bnQ7CisgICAgfSwKKyAgICB0
eXBlOiAnYnl0ZXMnCisgIH0pOworCisgIGNvbnN0IHJlYWRlciA9IHN0cmVhbS5nZXRSZWFkZXIo
eyBtb2RlOiAnYnlvYicgfSk7CisKKyAgcmV0dXJuIHJlYWRlci5yZWFkKG5ldyBVaW50OEFycmF5
KDEpKS50aGVuKHJlc3VsdCA9PiB7CisgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQuZG9uZSwgZmFs
c2UsICdyZXN1bHQuZG9uZScpOworICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LnZhbHVlLmJ5dGVM
ZW5ndGgsIDEsICdyZXN1bHQudmFsdWUuYnl0ZUxlbmd0aCcpOworICAgIGFzc2VydF9lcXVhbHMo
cmVzdWx0LnZhbHVlWzBdLCAweDAxLCAncmVzdWx0LnZhbHVlWzBdJyk7CisgICAgYXNzZXJ0X2Vx
dWFscyhwdWxsQ291bnQsIDEsICdwdWxsKCkgc2hvdWxkIGJlIGNhbGxlZCBvbmx5IG9uY2UnKTsK
KyAgICBhc3NlcnRfdHJ1ZShieW9iUmVxdWVzdERlZmluZWRbMF0sICdieW9iUmVxdWVzdCBtdXN0
IG5vdCBiZSBudWxsIGJlZm9yZSByZXNwb25kKCknKTsKKyAgICBhc3NlcnRfZmFsc2UoYnlvYlJl
cXVlc3REZWZpbmVkWzFdLCAnYnlvYlJlcXVlc3QgbXVzdCBiZSBudWxsIGFmdGVyIHJlc3BvbmQo
KScpOworICB9KTsKK30sICdSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiByZWFkKHZp
ZXcpLCB0aGVuIHJlc3BvbmQoKScpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworICBsZXQgY29u
dHJvbGxlcjsKKworICBsZXQgcHVsbENvdW50ID0gMDsKKyAgY29uc3QgYnlvYlJlcXVlc3REZWZp
bmVkID0gW107CisKKyAgY29uc3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBz
dGFydChjKSB7CisgICAgICBjb250cm9sbGVyID0gYzsKKyAgICB9LAorICAgIHB1bGwoKSB7Cisg
ICAgICBieW9iUmVxdWVzdERlZmluZWQucHVzaChjb250cm9sbGVyLmJ5b2JSZXF1ZXN0ICE9PSBu
dWxsKTsKKworICAgICAgLy8gRW11bGF0ZSBBcnJheUJ1ZmZlciB0cmFuc2ZlciBieSBqdXN0IGNy
ZWF0aW5nIGEgbmV3IEFycmF5QnVmZmVyIGFuZCBwYXNzIGl0LiBCeSBjaGVja2luZyB0aGUgcmVz
dWx0IG9mCisgICAgICAvLyByZWFkKHZpZXcpLCB3ZSB0ZXN0IHRoYXQgdGhlIHJlc3BvbmQoKSdz
IGJ1ZmZlciBhcmd1bWVudCBpcyB3b3JraW5nIGNvcnJlY3RseS4KKyAgICAgIC8vCisgICAgICAv
LyBBIHJlYWwgaW1wbGVtZW50YXRpb24gb2YgdGhlIHVuZGVybHlpbmcgYnl0ZSBzb3VyY2Ugd291
bGQgdHJhbnNmZXIgY29udHJvbGxlci5ieW9iUmVxdWVzdC52aWV3LmJ1ZmZlciBpbnRvCisgICAg
ICAvLyBhIG5ldyBBcnJheUJ1ZmZlciwgdGhlbiBjb25zdHJ1Y3QgYSB2aWV3IGFyb3VuZCBpdCBh
bmQgd3JpdGUgdG8gaXQuCisgICAgICBjb25zdCB0cmFuc2ZlcnJlZFZpZXcgPSBuZXcgVWludDhB
cnJheSgxKTsKKyAgICAgIHRyYW5zZmVycmVkVmlld1swXSA9IDB4MDE7CisgICAgICBjb250cm9s
bGVyLmJ5b2JSZXF1ZXN0LnJlc3BvbmRXaXRoTmV3Vmlldyh0cmFuc2ZlcnJlZFZpZXcpOworCisg
ICAgICBieW9iUmVxdWVzdERlZmluZWQucHVzaChjb250cm9sbGVyLmJ5b2JSZXF1ZXN0ICE9PSBu
dWxsKTsKKworICAgICAgKytwdWxsQ291bnQ7CisgICAgfSwKKyAgICB0eXBlOiAnYnl0ZXMnCisg
IH0pOworCisgIGNvbnN0IHJlYWRlciA9IHN0cmVhbS5nZXRSZWFkZXIoeyBtb2RlOiAnYnlvYicg
fSk7CisKKyAgcmV0dXJuIHJlYWRlci5yZWFkKG5ldyBVaW50OEFycmF5KDEpKS50aGVuKHJlc3Vs
dCA9PiB7CisgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQuZG9uZSwgZmFsc2UsICdyZXN1bHQuZG9u
ZScpOworICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LnZhbHVlLmJ5dGVMZW5ndGgsIDEsICdyZXN1
bHQudmFsdWUuYnl0ZUxlbmd0aCcpOworICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LnZhbHVlWzBd
LCAweDAxLCAncmVzdWx0LnZhbHVlWzBdJyk7CisgICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQs
IDEsICdwdWxsKCkgc2hvdWxkIGJlIGNhbGxlZCBvbmx5IG9uY2UnKTsKKyAgICBhc3NlcnRfdHJ1
ZShieW9iUmVxdWVzdERlZmluZWRbMF0sICdieW9iUmVxdWVzdCBtdXN0IG5vdCBiZSBudWxsIGJl
Zm9yZSByZXNwb25kKCknKTsKKyAgICBhc3NlcnRfZmFsc2UoYnlvYlJlcXVlc3REZWZpbmVkWzFd
LCAnYnlvYlJlcXVlc3QgbXVzdCBiZSBudWxsIGFmdGVyIHJlc3BvbmQoKScpOworICB9KTsKK30s
ICdSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiByZWFkKHZpZXcpLCB0aGVuIHJlc3Bv
bmQoKSB3aXRoIGEgdHJhbnNmZXJyZWQgQXJyYXlCdWZmZXInKTsKKworcHJvbWlzZV90ZXN0KCgp
ID0+IHsKKyAgbGV0IGNvbnRyb2xsZXI7CisgIGxldCBieW9iUmVxdWVzdFdhc0RlZmluZWQ7Cisg
IGxldCBpbmNvcnJlY3RSZXNwb25kRXhjZXB0aW9uOworCisgIGNvbnN0IHN0cmVhbSA9IG5ldyBS
ZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgY29udHJvbGxlciA9IGM7Cisg
ICAgfSwKKyAgICBwdWxsKCkgeworICAgICAgYnlvYlJlcXVlc3RXYXNEZWZpbmVkID0gY29udHJv
bGxlci5ieW9iUmVxdWVzdCAhPT0gbnVsbDsKKworICAgICAgdHJ5IHsKKyAgICAgICAgY29udHJv
bGxlci5ieW9iUmVxdWVzdC5yZXNwb25kKDIpOworICAgICAgfSBjYXRjaCAoZSkgeworICAgICAg
ICBpbmNvcnJlY3RSZXNwb25kRXhjZXB0aW9uID0gZTsKKyAgICAgIH0KKworICAgICAgY29udHJv
bGxlci5ieW9iUmVxdWVzdC5yZXNwb25kKDEpOworICAgIH0sCisgICAgdHlwZTogJ2J5dGVzJwor
ICB9KTsKKworICBjb25zdCByZWFkZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKHsgbW9kZTogJ2J5b2In
IH0pOworCisgIHJldHVybiByZWFkZXIucmVhZChuZXcgVWludDhBcnJheSgxKSkudGhlbigoKSA9
PiB7CisgICAgYXNzZXJ0X3RydWUoYnlvYlJlcXVlc3RXYXNEZWZpbmVkLCAnYnlvYlJlcXVlc3Qg
c2hvdWxkIGJlIG5vbi1udWxsJyk7CisgICAgYXNzZXJ0X25vdF9lcXVhbHMoaW5jb3JyZWN0UmVz
cG9uZEV4Y2VwdGlvbiwgdW5kZWZpbmVkLCAncmVzcG9uZCgpIG11c3QgdGhyb3cnKTsKKyAgICBh
c3NlcnRfZXF1YWxzKGluY29ycmVjdFJlc3BvbmRFeGNlcHRpb24ubmFtZSwgJ1JhbmdlRXJyb3In
LCAncmVzcG9uZCgpIG11c3QgdGhyb3cgYSBSYW5nZUVycm9yJyk7CisgIH0pOworfSwgJ1JlYWRh
YmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IHJlYWQodmlldyksIHRoZW4gcmVzcG9uZCgpIHdp
dGggdG9vIGJpZyB2YWx1ZScpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworICBsZXQgcHVsbENv
dW50ID0gMDsKKworICBsZXQgY29udHJvbGxlcjsKKyAgbGV0IGJ5b2JSZXF1ZXN0OworICBsZXQg
dmlld0luZm87CisKKyAgY29uc3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBz
dGFydChjKSB7CisgICAgICBjb250cm9sbGVyID0gYzsKKyAgICB9LAorICAgIHB1bGwoKSB7Cisg
ICAgICArK3B1bGxDb3VudDsKKworICAgICAgYnlvYlJlcXVlc3QgPSBjb250cm9sbGVyLmJ5b2JS
ZXF1ZXN0OworICAgICAgY29uc3QgdmlldyA9IGJ5b2JSZXF1ZXN0LnZpZXc7CisgICAgICB2aWV3
SW5mbyA9IGV4dHJhY3RWaWV3SW5mbyh2aWV3KTsKKworICAgICAgdmlld1swXSA9IDB4MDE7Cisg
ICAgICB2aWV3WzFdID0gMHgwMjsKKyAgICAgIHZpZXdbMl0gPSAweDAzOworCisgICAgICBjb250
cm9sbGVyLmJ5b2JSZXF1ZXN0LnJlc3BvbmQoMyk7CisgICAgfSwKKyAgICB0eXBlOiAnYnl0ZXMn
CisgIH0pOworCisgIGNvbnN0IHJlYWRlciA9IHN0cmVhbS5nZXRSZWFkZXIoeyBtb2RlOiAnYnlv
YicgfSk7CisKKyAgcmV0dXJuIHJlYWRlci5yZWFkKG5ldyBVaW50MTZBcnJheSgyKSkudGhlbihy
ZXN1bHQgPT4geworICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAxKTsKKworICAgIGFzc2Vy
dF9lcXVhbHMocmVzdWx0LmRvbmUsIGZhbHNlLCAnZG9uZScpOworCisgICAgY29uc3QgdmlldyA9
IHJlc3VsdC52YWx1ZTsKKyAgICBhc3NlcnRfZXF1YWxzKHZpZXcuYnl0ZU9mZnNldCwgMCwgJ2J5
dGVPZmZzZXQnKTsKKyAgICBhc3NlcnRfZXF1YWxzKHZpZXcuYnl0ZUxlbmd0aCwgMiwgJ2J5dGVM
ZW5ndGgnKTsKKworICAgIGFzc2VydF9lcXVhbHModmlld1swXSwgMHgwMjAxKTsKKworICAgIHJl
dHVybiByZWFkZXIucmVhZChuZXcgVWludDhBcnJheSgxKSk7CisgIH0pLnRoZW4ocmVzdWx0ID0+
IHsKKyAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMSk7CisgICAgYXNzZXJ0X25vdF9lcXVh
bHMoYnlvYlJlcXVlc3QsIG51bGwsICdieW9iUmVxdWVzdCBtdXN0IG5vdCBiZSBudWxsJyk7Cisg
ICAgYXNzZXJ0X2VxdWFscyh2aWV3SW5mby5jb25zdHJ1Y3RvciwgVWludDhBcnJheSwgJ3ZpZXcu
Y29uc3RydWN0b3Igc2hvdWxkIGJlIFVpbnQ4QXJyYXknKTsKKyAgICBhc3NlcnRfZXF1YWxzKHZp
ZXdJbmZvLmJ1ZmZlckJ5dGVMZW5ndGgsIDQsICd2aWV3LmJ1ZmZlci5ieXRlTGVuZ3RoIHNob3Vs
ZCBiZSA0Jyk7CisgICAgYXNzZXJ0X2VxdWFscyh2aWV3SW5mby5ieXRlT2Zmc2V0LCAwLCAndmll
dy5ieXRlT2Zmc2V0IHNob3VsZCBiZSAwJyk7CisgICAgYXNzZXJ0X2VxdWFscyh2aWV3SW5mby5i
eXRlTGVuZ3RoLCA0LCAndmlldy5ieXRlTGVuZ3RoIHNob3VsZCBiZSA0Jyk7CisKKyAgICBhc3Nl
cnRfZXF1YWxzKHJlc3VsdC5kb25lLCBmYWxzZSwgJ2RvbmUnKTsKKworICAgIGNvbnN0IHZpZXcg
PSByZXN1bHQudmFsdWU7CisgICAgYXNzZXJ0X2VxdWFscyh2aWV3LmJ5dGVPZmZzZXQsIDAsICdi
eXRlT2Zmc2V0Jyk7CisgICAgYXNzZXJ0X2VxdWFscyh2aWV3LmJ5dGVMZW5ndGgsIDEsICdieXRl
TGVuZ3RoJyk7CisKKyAgICBhc3NlcnRfZXF1YWxzKHZpZXdbMF0sIDB4MDMpOworICB9KTsKK30s
ICdSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiByZXNwb25kKDMpIHRvIHJlYWQodmll
dykgd2l0aCAyIGVsZW1lbnQgVWludDE2QXJyYXkgZW5xdWV1ZXMgdGhlIDEgYnl0ZSAnICsKKyAg
ICdyZW1haW5kZXInKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBjb25zdCBzdHJlYW0gPSBu
ZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGNvbnRyb2xsZXIpIHsKKyAgICAgIGNvbnN0
IHZpZXcgPSBuZXcgVWludDhBcnJheSgxNik7CisgICAgICB2aWV3WzE1XSA9IDB4MDE7CisgICAg
ICBjb250cm9sbGVyLmVucXVldWUodmlldyk7CisgICAgfSwKKyAgICBwdWxsOiB0LnVucmVhY2hl
ZF9mdW5jKCdwdWxsKCkgc2hvdWxkIG5vdCBiZSBjYWxsZWQnKSwKKyAgICB0eXBlOiAnYnl0ZXMn
CisgIH0pOworCisgIGNvbnN0IHJlYWRlciA9IHN0cmVhbS5nZXRSZWFkZXIoeyBtb2RlOiAnYnlv
YicgfSk7CisKKyAgcmV0dXJuIHJlYWRlci5yZWFkKG5ldyBVaW50OEFycmF5KDE2KSkudGhlbihy
ZXN1bHQgPT4geworICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LmRvbmUsIGZhbHNlKTsKKworICAg
IGNvbnN0IHZpZXcgPSByZXN1bHQudmFsdWU7CisgICAgYXNzZXJ0X2VxdWFscyh2aWV3LmJ5dGVP
ZmZzZXQsIDApOworICAgIGFzc2VydF9lcXVhbHModmlldy5ieXRlTGVuZ3RoLCAxNik7CisgICAg
YXNzZXJ0X2VxdWFscyh2aWV3WzE1XSwgMHgwMSk7CisgIH0pOworfSwgJ1JlYWRhYmxlU3RyZWFt
IHdpdGggYnl0ZSBzb3VyY2U6IGVucXVldWUoKSwgZ2V0UmVhZGVyKCksIHRoZW4gcmVhZCh2aWV3
KScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIGxldCBjYW5jZWxDb3VudCA9IDA7CisgIGxl
dCByZWFzb247CisKKyAgY29uc3QgcGFzc2VkUmVhc29uID0gbmV3IFR5cGVFcnJvcignZm9vJyk7
CisKKyAgY29uc3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7
CisgICAgICBjLmVucXVldWUobmV3IFVpbnQ4QXJyYXkoMTYpKTsKKyAgICB9LAorICAgIHB1bGw6
IHQudW5yZWFjaGVkX2Z1bmMoJ3B1bGwoKSBzaG91bGQgbm90IGJlIGNhbGxlZCcpLAorICAgIGNh
bmNlbChyKSB7CisgICAgICBpZiAoY2FuY2VsQ291bnQgPT09IDApIHsKKyAgICAgICAgcmVhc29u
ID0gcjsKKyAgICAgIH0KKworICAgICAgKytjYW5jZWxDb3VudDsKKyAgICB9LAorICAgIHR5cGU6
ICdieXRlcycKKyAgfSk7CisKKyAgY29uc3QgcmVhZGVyID0gc3RyZWFtLmdldFJlYWRlcigpOwor
CisgIHJldHVybiByZWFkZXIuY2FuY2VsKHBhc3NlZFJlYXNvbikudGhlbihyZXN1bHQgPT4gewor
ICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LCB1bmRlZmluZWQpOworICAgIGFzc2VydF9lcXVhbHMo
Y2FuY2VsQ291bnQsIDEpOworICAgIGFzc2VydF9lcXVhbHMocmVhc29uLCBwYXNzZWRSZWFzb24s
ICdyZWFzb24gc2hvdWxkIGVxdWFsIHRoZSBwYXNzZWQgcmVhc29uJyk7CisgIH0pOworfSwgJ1Jl
YWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IGVucXVldWUoKSwgZ2V0UmVhZGVyKCksIHRo
ZW4gY2FuY2VsKCkgKG1vZGUgPSBub3QgQllPQiknKTsKKworcHJvbWlzZV90ZXN0KHQgPT4gewor
ICBsZXQgY2FuY2VsQ291bnQgPSAwOworICBsZXQgcmVhc29uOworCisgIGNvbnN0IHBhc3NlZFJl
YXNvbiA9IG5ldyBUeXBlRXJyb3IoJ2ZvbycpOworCisgIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFk
YWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgYy5lbnF1ZXVlKG5ldyBVaW50OEFy
cmF5KDE2KSk7CisgICAgfSwKKyAgICBwdWxsOiB0LnVucmVhY2hlZF9mdW5jKCdwdWxsKCkgc2hv
dWxkIG5vdCBiZSBjYWxsZWQnKSwKKyAgICBjYW5jZWwocikgeworICAgICAgaWYgKGNhbmNlbENv
dW50ID09PSAwKSB7CisgICAgICAgIHJlYXNvbiA9IHI7CisgICAgICB9CisKKyAgICAgICsrY2Fu
Y2VsQ291bnQ7CisgICAgfSwKKyAgICB0eXBlOiAnYnl0ZXMnCisgIH0pOworCisgIGNvbnN0IHJl
YWRlciA9IHN0cmVhbS5nZXRSZWFkZXIoeyBtb2RlOiAnYnlvYicgfSk7CisKKyAgcmV0dXJuIHJl
YWRlci5jYW5jZWwocGFzc2VkUmVhc29uKS50aGVuKHJlc3VsdCA9PiB7CisgICAgYXNzZXJ0X2Vx
dWFscyhyZXN1bHQsIHVuZGVmaW5lZCk7CisgICAgYXNzZXJ0X2VxdWFscyhjYW5jZWxDb3VudCwg
MSk7CisgICAgYXNzZXJ0X2VxdWFscyhyZWFzb24sIHBhc3NlZFJlYXNvbiwgJ3JlYXNvbiBzaG91
bGQgZXF1YWwgdGhlIHBhc3NlZCByZWFzb24nKTsKKyAgfSk7Cit9LCAnUmVhZGFibGVTdHJlYW0g
d2l0aCBieXRlIHNvdXJjZTogZW5xdWV1ZSgpLCBnZXRSZWFkZXIoKSwgdGhlbiBjYW5jZWwoKSAo
bW9kZSA9IEJZT0IpJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgbGV0IGNhbmNlbENvdW50
ID0gMDsKKyAgbGV0IHJlYXNvbjsKKworICBjb25zdCBwYXNzZWRSZWFzb24gPSBuZXcgVHlwZUVy
cm9yKCdmb28nKTsKKworICBsZXQgY29udHJvbGxlcjsKKworICBjb25zdCBzdHJlYW0gPSBuZXcg
UmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGNvbnRyb2xsZXIgPSBjOwor
ICAgIH0sCisgICAgcHVsbDogdC51bnJlYWNoZWRfZnVuYygncHVsbCgpIHNob3VsZCBub3QgYmUg
Y2FsbGVkJyksCisgICAgY2FuY2VsKHIpIHsKKyAgICAgIGlmIChjYW5jZWxDb3VudCA9PT0gMCkg
eworICAgICAgICByZWFzb24gPSByOworICAgICAgICBjb250cm9sbGVyLmJ5b2JSZXF1ZXN0LnJl
c3BvbmQoMCk7CisgICAgICB9CisKKyAgICAgICsrY2FuY2VsQ291bnQ7CisKKyAgICAgIHJldHVy
biAnYmFyJzsKKyAgICB9LAorICAgIHR5cGU6ICdieXRlcycKKyAgfSk7CisKKyAgY29uc3QgcmVh
ZGVyID0gc3RyZWFtLmdldFJlYWRlcih7IG1vZGU6ICdieW9iJyB9KTsKKworICBjb25zdCByZWFk
UHJvbWlzZSA9IHJlYWRlci5yZWFkKG5ldyBVaW50OEFycmF5KDEpKS50aGVuKHJlc3VsdCA9PiB7
CisgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQuZG9uZSwgdHJ1ZSk7CisgIH0pOworCisgIGNvbnN0
IGNhbmNlbFByb21pc2UgPSByZWFkZXIuY2FuY2VsKHBhc3NlZFJlYXNvbikudGhlbihyZXN1bHQg
PT4geworICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LCB1bmRlZmluZWQpOworICAgIGFzc2VydF9l
cXVhbHMoY2FuY2VsQ291bnQsIDEpOworICAgIGFzc2VydF9lcXVhbHMocmVhc29uLCBwYXNzZWRS
ZWFzb24sICdyZWFzb24gc2hvdWxkIGVxdWFsIHRoZSBwYXNzZWQgcmVhc29uJyk7CisgIH0pOwor
CisgIHJldHVybiBQcm9taXNlLmFsbChbcmVhZFByb21pc2UsIGNhbmNlbFByb21pc2VdKTsKK30s
ICdSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBnZXRSZWFkZXIoKSwgcmVhZCh2aWV3
KSwgdGhlbiBjYW5jZWwoKScpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworICBsZXQgcHVsbENv
dW50ID0gMDsKKworICBsZXQgY29udHJvbGxlcjsKKyAgbGV0IGJ5b2JSZXF1ZXN0OworICBjb25z
dCB2aWV3SW5mb3MgPSBbXTsKKworICBjb25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0o
eworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGNvbnRyb2xsZXIgPSBjOworICAgIH0sCisgICAgcHVs
bCgpIHsKKyAgICAgIGJ5b2JSZXF1ZXN0ID0gY29udHJvbGxlci5ieW9iUmVxdWVzdDsKKworICAg
ICAgdmlld0luZm9zLnB1c2goZXh0cmFjdFZpZXdJbmZvKGNvbnRyb2xsZXIuYnlvYlJlcXVlc3Qu
dmlldykpOworICAgICAgY29udHJvbGxlci5lbnF1ZXVlKG5ldyBVaW50OEFycmF5KDEpKTsKKyAg
ICAgIHZpZXdJbmZvcy5wdXNoKGV4dHJhY3RWaWV3SW5mbyhjb250cm9sbGVyLmJ5b2JSZXF1ZXN0
LnZpZXcpKTsKKworICAgICAgKytwdWxsQ291bnQ7CisgICAgfSwKKyAgICB0eXBlOiAnYnl0ZXMn
CisgIH0pOworCisgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHsKKyAgICBh
c3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMCwgJ05vIHB1bGwoKSBhcyBubyByZWFkKHZpZXcpIHll
dCcpOworCisgICAgY29uc3QgcmVhZGVyID0gc3RyZWFtLmdldFJlYWRlcih7IG1vZGU6ICdieW9i
JyB9KTsKKworICAgIGNvbnN0IHByb21pc2UgPSByZWFkZXIucmVhZChuZXcgVWludDE2QXJyYXko
MSkpLnRoZW4ocmVzdWx0ID0+IHsKKyAgICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LmRvbmUsIHRy
dWUsICdyZXN1bHQuZG9uZScpOworICAgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQudmFsdWUuY29u
c3RydWN0b3IsIFVpbnQxNkFycmF5LCAncmVzdWx0LnZhbHVlJyk7CisgICAgfSk7CisKKyAgICBh
c3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMSwgJzEgcHVsbCgpIHNob3VsZCBoYXZlIGJlZW4gbWFk
ZSBpbiByZXNwb25zZSB0byBwYXJ0aWFsIGZpbGwgYnkgZW5xdWV1ZSgpJyk7CisgICAgYXNzZXJ0
X25vdF9lcXVhbHMoYnlvYlJlcXVlc3QsIG51bGwsICdieW9iUmVxdWVzdCBzaG91bGQgbm90IGJl
IG51bGwnKTsKKyAgICBhc3NlcnRfZXF1YWxzKHZpZXdJbmZvc1swXS5ieXRlTGVuZ3RoLCAyLCAn
Ynl0ZUxlbmd0aCBiZWZvcmUgZW5xdWV1ZSgpIHNob3VpbGQgYmUgMicpOworICAgIGFzc2VydF9l
cXVhbHModmlld0luZm9zWzFdLmJ5dGVMZW5ndGgsIDEsICdieXRlTGVuZ3RoIGFmdGVyIGVucXVl
dWUoKSBzaG91bGQgYmUgMScpOworCisKKyAgICByZWFkZXIuY2FuY2VsKCk7CisKKyAgICAvLyBU
ZWxsIHRoYXQgdGhlIGJ1ZmZlciBnaXZlbiB2aWEgcHVsbCgpIGlzIHJldHVybmVkLgorICAgIGNv
bnRyb2xsZXIuYnlvYlJlcXVlc3QucmVzcG9uZCgwKTsKKworICAgIGFzc2VydF9lcXVhbHMocHVs
bENvdW50LCAxLCAncHVsbCgpIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBvbmNlJyk7CisgICAgcmV0
dXJuIHByb21pc2U7CisgIH0pOworfSwgJ1JlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6
IGNhbmNlbCgpIHdpdGggcGFydGlhbGx5IGZpbGxlZCBwZW5kaW5nIHB1bGwoKSByZXF1ZXN0Jyk7
CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisgIGxldCBjb250cm9sbGVyOworICBsZXQgcHVsbENh
bGxlZCA9IGZhbHNlOworCisgIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Cisg
ICAgc3RhcnQoYykgeworICAgICAgY29uc3QgdmlldyA9IG5ldyBVaW50OEFycmF5KDgpOworICAg
ICAgdmlld1s3XSA9IDB4MDE7CisgICAgICBjLmVucXVldWUodmlldyk7CisKKyAgICAgIGNvbnRy
b2xsZXIgPSBjOworICAgIH0sCisgICAgcHVsbCgpIHsKKyAgICAgIHB1bGxDYWxsZWQgPSB0cnVl
OworICAgIH0sCisgICAgdHlwZTogJ2J5dGVzJworICB9KTsKKworICBjb25zdCByZWFkZXIgPSBz
dHJlYW0uZ2V0UmVhZGVyKHsgbW9kZTogJ2J5b2InIH0pOworCisgIGNvbnN0IGJ1ZmZlciA9IG5l
dyBBcnJheUJ1ZmZlcigxNik7CisKKyAgcmV0dXJuIHJlYWRlci5yZWFkKG5ldyBVaW50OEFycmF5
KGJ1ZmZlciwgOCwgOCkpLnRoZW4ocmVzdWx0ID0+IHsKKyAgICBhc3NlcnRfZXF1YWxzKHJlc3Vs
dC5kb25lLCBmYWxzZSk7CisKKyAgICBhc3NlcnRfZmFsc2UocHVsbENhbGxlZCwgJ3B1bGwoKSBt
dXN0IG5vdCBoYXZlIGJlZW4gY2FsbGVkJyk7CisKKyAgICBjb25zdCB2aWV3ID0gcmVzdWx0LnZh
bHVlOworICAgIGFzc2VydF9lcXVhbHModmlldy5jb25zdHJ1Y3RvciwgVWludDhBcnJheSk7Cisg
ICAgYXNzZXJ0X2VxdWFscyh2aWV3LmJ1ZmZlci5ieXRlTGVuZ3RoLCAxNik7CisgICAgYXNzZXJ0
X2VxdWFscyh2aWV3LmJ5dGVPZmZzZXQsIDgpOworICAgIGFzc2VydF9lcXVhbHModmlldy5ieXRl
TGVuZ3RoLCA4KTsKKyAgICBhc3NlcnRfZXF1YWxzKHZpZXdbN10sIDB4MDEpOworICB9KTsKK30s
ICdSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBlbnF1ZXVlKCksIGdldFJlYWRlcigp
LCB0aGVuIHJlYWQodmlldykgd2hlcmUgdmlldy5idWZmZXIgaXMgbm90IGZ1bGx5ICcgKworICAg
J2NvdmVyZWQgYnkgdmlldycpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworICBsZXQgY29udHJv
bGxlcjsKKyAgbGV0IHB1bGxDYWxsZWQgPSBmYWxzZTsKKworICBjb25zdCBzdHJlYW0gPSBuZXcg
UmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGxldCB2aWV3OworCisgICAg
ICB2aWV3ID0gbmV3IFVpbnQ4QXJyYXkoMTYpOworICAgICAgdmlld1sxNV0gPSAxMjM7CisgICAg
ICBjLmVucXVldWUodmlldyk7CisKKyAgICAgIHZpZXcgPSBuZXcgVWludDhBcnJheSg4KTsKKyAg
ICAgIHZpZXdbN10gPSAxMTE7CisgICAgICBjLmVucXVldWUodmlldyk7CisKKyAgICAgIGNvbnRy
b2xsZXIgPSBjOworICAgIH0sCisgICAgcHVsbCgpIHsKKyAgICAgIHB1bGxDYWxsZWQgPSB0cnVl
OworICAgIH0sCisgICAgdHlwZTogJ2J5dGVzJworICB9KTsKKworICBjb25zdCByZWFkZXIgPSBz
dHJlYW0uZ2V0UmVhZGVyKHsgbW9kZTogJ2J5b2InIH0pOworCisgIHJldHVybiByZWFkZXIucmVh
ZChuZXcgVWludDhBcnJheSgyNCkpLnRoZW4ocmVzdWx0ID0+IHsKKyAgICBhc3NlcnRfZXF1YWxz
KHJlc3VsdC5kb25lLCBmYWxzZSwgJ2RvbmUnKTsKKworICAgIGFzc2VydF9mYWxzZShwdWxsQ2Fs
bGVkLCAncHVsbCgpIG11c3Qgbm90IGhhdmUgYmVlbiBjYWxsZWQnKTsKKworICAgIGNvbnN0IHZp
ZXcgPSByZXN1bHQudmFsdWU7CisgICAgYXNzZXJ0X2VxdWFscyh2aWV3LmJ5dGVPZmZzZXQsIDAs
ICdieXRlT2Zmc2V0Jyk7CisgICAgYXNzZXJ0X2VxdWFscyh2aWV3LmJ5dGVMZW5ndGgsIDI0LCAn
Ynl0ZUxlbmd0aCcpOworICAgIGFzc2VydF9lcXVhbHModmlld1sxNV0sIDEyMywgJ0NvbnRlbnRz
IGFyZSBzZXQgZnJvbSB0aGUgZmlyc3QgY2h1bmsnKTsKKyAgICBhc3NlcnRfZXF1YWxzKHZpZXdb
MjNdLCAxMTEsICdDb250ZW50cyBhcmUgc2V0IGZyb20gdGhlIHNlY29uZCBjaHVuaycpOworICB9
KTsKK30sICdSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBNdWx0aXBsZSBlbnF1ZXVl
KCksIGdldFJlYWRlcigpLCB0aGVuIHJlYWQodmlldyknKTsKKworcHJvbWlzZV90ZXN0KCgpID0+
IHsKKyAgbGV0IHB1bGxDYWxsZWQgPSBmYWxzZTsKKworICBjb25zdCBzdHJlYW0gPSBuZXcgUmVh
ZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGNvbnN0IHZpZXcgPSBuZXcgVWlu
dDhBcnJheSgxNik7CisgICAgICB2aWV3WzE1XSA9IDB4MDE7CisgICAgICBjLmVucXVldWUodmll
dyk7CisgICAgfSwKKyAgICBwdWxsKCkgeworICAgICAgcHVsbENhbGxlZCA9IHRydWU7CisgICAg
fSwKKyAgICB0eXBlOiAnYnl0ZXMnCisgIH0pOworCisgIGNvbnN0IHJlYWRlciA9IHN0cmVhbS5n
ZXRSZWFkZXIoeyBtb2RlOiAnYnlvYicgfSk7CisKKyAgcmV0dXJuIHJlYWRlci5yZWFkKG5ldyBV
aW50OEFycmF5KDI0KSkudGhlbihyZXN1bHQgPT4geworICAgIGFzc2VydF9lcXVhbHMocmVzdWx0
LmRvbmUsIGZhbHNlKTsKKworICAgIGFzc2VydF9mYWxzZShwdWxsQ2FsbGVkLCAncHVsbCgpIG11
c3Qgbm90IGhhdmUgYmVlbiBjYWxsZWQnKTsKKworICAgIGNvbnN0IHZpZXcgPSByZXN1bHQudmFs
dWU7CisgICAgYXNzZXJ0X2VxdWFscyh2aWV3LmJ5dGVPZmZzZXQsIDApOworICAgIGFzc2VydF9l
cXVhbHModmlldy5ieXRlTGVuZ3RoLCAxNik7CisgICAgYXNzZXJ0X2VxdWFscyh2aWV3WzE1XSwg
MHgwMSk7CisgIH0pOworfSwgJ1JlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IGVucXVl
dWUoKSwgZ2V0UmVhZGVyKCksIHRoZW4gcmVhZCh2aWV3KSB3aXRoIGEgYmlnZ2VyIHZpZXcnKTsK
KworcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgbGV0IHB1bGxDYWxsZWQgPSBmYWxzZTsKKworICBj
b25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAg
IGNvbnN0IHZpZXcgPSBuZXcgVWludDhBcnJheSgxNik7CisgICAgICB2aWV3WzddID0gMHgwMTsK
KyAgICAgIHZpZXdbMTVdID0gMHgwMjsKKyAgICAgIGMuZW5xdWV1ZSh2aWV3KTsKKyAgICB9LAor
ICAgIHB1bGwoKSB7CisgICAgICBwdWxsQ2FsbGVkID0gdHJ1ZTsKKyAgICB9LAorICAgIHR5cGU6
ICdieXRlcycKKyAgfSk7CisKKyAgY29uc3QgcmVhZGVyID0gc3RyZWFtLmdldFJlYWRlcih7IG1v
ZGU6ICdieW9iJyB9KTsKKworICByZXR1cm4gcmVhZGVyLnJlYWQobmV3IFVpbnQ4QXJyYXkoOCkp
LnRoZW4ocmVzdWx0ID0+IHsKKyAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdC5kb25lLCBmYWxzZSwg
J2RvbmUnKTsKKworICAgIGNvbnN0IHZpZXcgPSByZXN1bHQudmFsdWU7CisgICAgYXNzZXJ0X2Vx
dWFscyh2aWV3LmJ5dGVPZmZzZXQsIDApOworICAgIGFzc2VydF9lcXVhbHModmlldy5ieXRlTGVu
Z3RoLCA4KTsKKyAgICBhc3NlcnRfZXF1YWxzKHZpZXdbN10sIDB4MDEpOworCisgICAgcmV0dXJu
IHJlYWRlci5yZWFkKG5ldyBVaW50OEFycmF5KDgpKTsKKyAgfSkudGhlbihyZXN1bHQgPT4gewor
ICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LmRvbmUsIGZhbHNlLCAnZG9uZScpOworCisgICAgYXNz
ZXJ0X2ZhbHNlKHB1bGxDYWxsZWQsICdwdWxsKCkgbXVzdCBub3QgaGF2ZSBiZWVuIGNhbGxlZCcp
OworCisgICAgY29uc3QgdmlldyA9IHJlc3VsdC52YWx1ZTsKKyAgICBhc3NlcnRfZXF1YWxzKHZp
ZXcuYnl0ZU9mZnNldCwgMCk7CisgICAgYXNzZXJ0X2VxdWFscyh2aWV3LmJ5dGVMZW5ndGgsIDgp
OworICAgIGFzc2VydF9lcXVhbHModmlld1s3XSwgMHgwMik7CisgIH0pOworfSwgJ1JlYWRhYmxl
U3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IGVucXVldWUoKSwgZ2V0UmVhZGVyKCksIHRoZW4gcmVh
ZCh2aWV3KSB3aXRoIHNtYWxsZXIgdmlld3MnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAg
bGV0IGNvbnRyb2xsZXI7CisgIGxldCB2aWV3SW5mbzsKKworICBjb25zdCBzdHJlYW0gPSBuZXcg
UmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGNvbnN0IHZpZXcgPSBuZXcg
VWludDhBcnJheSgxKTsKKyAgICAgIHZpZXdbMF0gPSAweGZmOworICAgICAgYy5lbnF1ZXVlKHZp
ZXcpOworCisgICAgICBjb250cm9sbGVyID0gYzsKKyAgICB9LAorICAgIHB1bGwoKSB7CisgICAg
ICBpZiAoY29udHJvbGxlci5ieW9iUmVxdWVzdCA9PT0gbnVsbCkgeworICAgICAgICByZXR1cm47
CisgICAgICB9CisKKyAgICAgIGNvbnN0IHZpZXcgPSBjb250cm9sbGVyLmJ5b2JSZXF1ZXN0LnZp
ZXc7CisgICAgICB2aWV3SW5mbyA9IGV4dHJhY3RWaWV3SW5mbyh2aWV3KTsKKworICAgICAgdmll
d1swXSA9IDB4YWE7CisgICAgICBjb250cm9sbGVyLmJ5b2JSZXF1ZXN0LnJlc3BvbmQoMSk7Cisg
ICAgfSwKKyAgICB0eXBlOiAnYnl0ZXMnCisgIH0pOworCisgIGNvbnN0IHJlYWRlciA9IHN0cmVh
bS5nZXRSZWFkZXIoeyBtb2RlOiAnYnlvYicgfSk7CisKKyAgcmV0dXJuIHJlYWRlci5yZWFkKG5l
dyBVaW50MTZBcnJheSgxKSkudGhlbihyZXN1bHQgPT4geworICAgIGFzc2VydF9lcXVhbHMocmVz
dWx0LmRvbmUsIGZhbHNlKTsKKworICAgIGNvbnN0IHZpZXcgPSByZXN1bHQudmFsdWU7CisgICAg
YXNzZXJ0X2VxdWFscyh2aWV3LmJ5dGVPZmZzZXQsIDApOworICAgIGFzc2VydF9lcXVhbHModmll
dy5ieXRlTGVuZ3RoLCAyKTsKKyAgICBhc3NlcnRfZXF1YWxzKHZpZXdbMF0sIDB4YWFmZik7CisK
KyAgICBhc3NlcnRfZXF1YWxzKHZpZXdJbmZvLmNvbnN0cnVjdG9yLCBVaW50OEFycmF5LCAndmll
dy5jb25zdHJ1Y3RvciBzaG91bGQgYmUgVWludDhBcnJheScpOworICAgIGFzc2VydF9lcXVhbHMo
dmlld0luZm8uYnVmZmVyQnl0ZUxlbmd0aCwgMiwgJ3ZpZXcuYnVmZmVyLmJ5dGVMZW5ndGggc2hv
dWxkIGJlIDInKTsKKyAgICBhc3NlcnRfZXF1YWxzKHZpZXdJbmZvLmJ5dGVPZmZzZXQsIDEsICd2
aWV3LmJ5dGVPZmZzZXQgc2hvdWxkIGJlIDEnKTsKKyAgICBhc3NlcnRfZXF1YWxzKHZpZXdJbmZv
LmJ5dGVMZW5ndGgsIDEsICd2aWV3LmJ5dGVMZW5ndGggc2hvdWxkIGJlIDEnKTsKKyAgfSk7Cit9
LCAnUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogZW5xdWV1ZSgpIDEgYnl0ZSwgZ2V0
UmVhZGVyKCksIHRoZW4gcmVhZCh2aWV3KSB3aXRoIFVpbnQxNkFycmF5Jyk7CisKK3Byb21pc2Vf
dGVzdCgoKSA9PiB7CisgIGxldCBwdWxsQ291bnQgPSAwOworCisgIGxldCBjb250cm9sbGVyOwor
ICBsZXQgYnlvYlJlcXVlc3Q7CisgIGxldCB2aWV3SW5mbzsKKyAgbGV0IGRlc2lyZWRTaXplOwor
CisgIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgewor
ICAgICAgY29uc3QgdmlldyA9IG5ldyBVaW50OEFycmF5KDMpOworICAgICAgdmlld1swXSA9IDB4
MDE7CisgICAgICB2aWV3WzJdID0gMHgwMjsKKyAgICAgIGMuZW5xdWV1ZSh2aWV3KTsKKworICAg
ICAgY29udHJvbGxlciA9IGM7CisgICAgfSwKKyAgICBwdWxsKCkgeworICAgICAgYnlvYlJlcXVl
c3QgPSBjb250cm9sbGVyLmJ5b2JSZXF1ZXN0OworCisgICAgICBjb25zdCB2aWV3ID0gY29udHJv
bGxlci5ieW9iUmVxdWVzdC52aWV3OworCisgICAgICB2aWV3SW5mbyA9IGV4dHJhY3RWaWV3SW5m
byh2aWV3KTsKKworICAgICAgdmlld1swXSA9IDB4MDM7CisgICAgICBjb250cm9sbGVyLmJ5b2JS
ZXF1ZXN0LnJlc3BvbmQoMSk7CisKKyAgICAgIGRlc2lyZWRTaXplID0gY29udHJvbGxlci5kZXNp
cmVkU2l6ZTsKKworICAgICAgKytwdWxsQ291bnQ7CisgICAgfSwKKyAgICB0eXBlOiAnYnl0ZXMn
CisgIH0pOworCisgIC8vIFdhaXQgZm9yIGNvbXBsZXRpb24gb2YgdGhlIHN0YXJ0IG1ldGhvZCB0
byBiZSByZWZsZWN0ZWQuCisgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHsK
KyAgICBjb25zdCByZWFkZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKHsgbW9kZTogJ2J5b2InIH0pOwor
CisgICAgY29uc3QgcHJvbWlzZSA9IHJlYWRlci5yZWFkKG5ldyBVaW50MTZBcnJheSgyKSkudGhl
bihyZXN1bHQgPT4geworICAgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQuZG9uZSwgZmFsc2UsICdk
b25lJyk7CisKKyAgICAgIGNvbnN0IHZpZXcgPSByZXN1bHQudmFsdWU7CisgICAgICBhc3NlcnRf
ZXF1YWxzKHZpZXcuY29uc3RydWN0b3IsIFVpbnQxNkFycmF5LCAnY29uc3RydWN0b3InKTsKKyAg
ICAgIGFzc2VydF9lcXVhbHModmlldy5idWZmZXIuYnl0ZUxlbmd0aCwgNCwgJ2J1ZmZlci5ieXRl
TGVuZ3RoJyk7CisgICAgICBhc3NlcnRfZXF1YWxzKHZpZXcuYnl0ZU9mZnNldCwgMCwgJ2J5dGVP
ZmZzZXQnKTsKKyAgICAgIGFzc2VydF9lcXVhbHModmlldy5ieXRlTGVuZ3RoLCAyLCAnYnl0ZUxl
bmd0aCcpOworICAgICAgYXNzZXJ0X2VxdWFscyh2aWV3WzBdLCAweDAwMDEsICdDb250ZW50cyBh
cmUgc2V0Jyk7CisKKyAgICAgIGNvbnN0IHAgPSByZWFkZXIucmVhZChuZXcgVWludDE2QXJyYXko
MSkpOworCisgICAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMSk7CisKKyAgICAgIHJldHVy
biBwOworICAgIH0pLnRoZW4ocmVzdWx0ID0+IHsKKyAgICAgIGFzc2VydF9lcXVhbHMocmVzdWx0
LmRvbmUsIGZhbHNlLCAnZG9uZScpOworCisgICAgICBjb25zdCB2aWV3ID0gcmVzdWx0LnZhbHVl
OworICAgICAgYXNzZXJ0X2VxdWFscyh2aWV3LmJ1ZmZlci5ieXRlTGVuZ3RoLCAyLCAnYnVmZmVy
LmJ5dGVMZW5ndGgnKTsKKyAgICAgIGFzc2VydF9lcXVhbHModmlldy5ieXRlT2Zmc2V0LCAwLCAn
Ynl0ZU9mZnNldCcpOworICAgICAgYXNzZXJ0X2VxdWFscyh2aWV3LmJ5dGVMZW5ndGgsIDIsICdi
eXRlTGVuZ3RoJyk7CisgICAgICBhc3NlcnRfZXF1YWxzKHZpZXdbMF0sIDB4MDMwMiwgJ0NvbnRl
bnRzIGFyZSBzZXQnKTsKKworICAgICAgYXNzZXJ0X25vdF9lcXVhbHMoYnlvYlJlcXVlc3QsIG51
bGwsICdieW9iUmVxdWVzdCBtdXN0IG5vdCBiZSBudWxsJyk7CisgICAgICBhc3NlcnRfZXF1YWxz
KHZpZXdJbmZvLmNvbnN0cnVjdG9yLCBVaW50OEFycmF5LCAndmlldy5jb25zdHJ1Y3RvciBzaG91
bGQgYmUgVWludDhBcnJheScpOworICAgICAgYXNzZXJ0X2VxdWFscyh2aWV3SW5mby5idWZmZXJC
eXRlTGVuZ3RoLCAyLCAndmlldy5idWZmZXIuYnl0ZUxlbmd0aCBzaG91bGQgYmUgMicpOworICAg
ICAgYXNzZXJ0X2VxdWFscyh2aWV3SW5mby5ieXRlT2Zmc2V0LCAxLCAndmlldy5ieXRlT2Zmc2V0
IHNob3VsZCBiZSAxJyk7CisgICAgICBhc3NlcnRfZXF1YWxzKHZpZXdJbmZvLmJ5dGVMZW5ndGgs
IDEsICd2aWV3LmJ5dGVMZW5ndGggc2hvdWxkIGJlIDEnKTsKKyAgICAgIGFzc2VydF9lcXVhbHMo
ZGVzaXJlZFNpemUsIDAsICdkZXNpcmVkU2l6ZSBzaG91bGQgYmUgemVybycpOworICAgIH0pOwor
CisgICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDApOworCisgICAgcmV0dXJuIHByb21pc2U7
CisgIH0pOworfSwgJ1JlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IGVucXVldWUoKSAz
IGJ5dGUsIGdldFJlYWRlcigpLCB0aGVuIHJlYWQodmlldykgd2l0aCAyLWVsZW1lbnQgVWludDE2
QXJyYXknKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBjb25zdCBzdHJlYW0gPSBuZXcgUmVh
ZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGNvbnN0IHZpZXcgPSBuZXcgVWlu
dDhBcnJheSgxKTsKKyAgICAgIHZpZXdbMF0gPSAweGZmOworICAgICAgYy5lbnF1ZXVlKHZpZXcp
OworICAgICAgYy5jbG9zZSgpOworICAgIH0sCisgICAgcHVsbDogdC51bnJlYWNoZWRfZnVuYygn
cHVsbCgpIHNob3VsZCBub3QgYmUgY2FsbGVkJyksCisgICAgdHlwZTogJ2J5dGVzJworICB9KTsK
KworICBjb25zdCByZWFkZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKHsgbW9kZTogJ2J5b2InIH0pOwor
CisKKyAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19qcyh0LCBUeXBlRXJyb3IsIHJlYWRlci5yZWFk
KG5ldyBVaW50MTZBcnJheSgxKSksICdyZWFkKHZpZXcpIG11c3QgZmFpbCcpCisgICAgICAudGhl
bigoKSA9PiBwcm9taXNlX3JlamVjdHNfanModCwgVHlwZUVycm9yLCByZWFkZXIuY2xvc2VkLCAn
cmVhZGVyLmNsb3NlZCBzaG91bGQgcmVqZWN0JykpOworfSwgJ1JlYWRhYmxlU3RyZWFtIHdpdGgg
Ynl0ZSBzb3VyY2U6IHJlYWQodmlldykgd2l0aCBVaW50MTZBcnJheSBvbiBjbG9zZSgpLWQgc3Ry
ZWFtIHdpdGggMSBieXRlIGVucXVldWUoKS1kIG11c3QgJyArCisgICAnZmFpbCcpOworCitwcm9t
aXNlX3Rlc3QodCA9PiB7CisgIGxldCBjb250cm9sbGVyOworCisgIGNvbnN0IHN0cmVhbSA9IG5l
dyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgY29uc3QgdmlldyA9IG5l
dyBVaW50OEFycmF5KDEpOworICAgICAgdmlld1swXSA9IDB4ZmY7CisgICAgICBjLmVucXVldWUo
dmlldyk7CisKKyAgICAgIGNvbnRyb2xsZXIgPSBjOworICAgIH0sCisgICAgcHVsbDogdC51bnJl
YWNoZWRfZnVuYygncHVsbCgpIHNob3VsZCBub3QgYmUgY2FsbGVkJyksCisgICAgdHlwZTogJ2J5
dGVzJworICB9KTsKKworICBjb25zdCByZWFkZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKHsgbW9kZTog
J2J5b2InIH0pOworCisgIGNvbnN0IHJlYWRQcm9taXNlID0gcmVhZGVyLnJlYWQobmV3IFVpbnQx
NkFycmF5KDEpKTsKKworICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4gY29udHJv
bGxlci5jbG9zZSgpLCAnY29udHJvbGxlci5jbG9zZSgpIG11c3QgdGhyb3cnKTsKKworICByZXR1
cm4gcHJvbWlzZV9yZWplY3RzX2pzKHQsIFR5cGVFcnJvciwgcmVhZFByb21pc2UsICdyZWFkKHZp
ZXcpIG11c3QgZmFpbCcpCisgICAgICAudGhlbigoKSA9PiBwcm9taXNlX3JlamVjdHNfanModCwg
VHlwZUVycm9yLCByZWFkZXIuY2xvc2VkLCAncmVhZGVyLmNsb3NlZCBtdXN0IHJlamVjdCcpKTsK
K30sICdSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBBIHN0cmVhbSBtdXN0IGJlIGVy
cm9yZWQgaWYgY2xvc2UoKS1kIGJlZm9yZSBmdWxmaWxsaW5nIHJlYWQodmlldykgd2l0aCAnICsK
KyAgICdVaW50MTZBcnJheScpOworCit0ZXN0KCgpID0+IHsKKyAgbGV0IGNvbnRyb2xsZXI7CisK
KyAgbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjb250cm9sbGVy
ID0gYzsKKyAgICB9LAorICAgIHR5cGU6ICdieXRlcycKKyAgfSk7CisKKyAgLy8gRW5xdWV1ZSBh
IGNodW5rIHNvIHRoYXQgdGhlIHN0cmVhbSBkb2Vzbid0IGdldCBjbG9zZWQuIFRoaXMgaXMgdG8g
Y2hlY2sgZHVwbGljYXRlIGNsb3NlKCkgY2FsbHMgYXJlIHJlamVjdGVkCisgIC8vIGV2ZW4gaWYg
dGhlIHN0cmVhbSBoYXMgbm90IHlldCBlbnRlcmVkIHRoZSBjbG9zZWQgc3RhdGUuCisgIGNvbnN0
IHZpZXcgPSBuZXcgVWludDhBcnJheSgxKTsKKyAgY29udHJvbGxlci5lbnF1ZXVlKHZpZXcpOwor
ICBjb250cm9sbGVyLmNsb3NlKCk7CisKKyAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgp
ID0+IGNvbnRyb2xsZXIuY2xvc2UoKSwgJ2NvbnRyb2xsZXIuY2xvc2UoKSBtdXN0IHRocm93Jyk7
Cit9LCAnUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogVGhyb3cgaWYgY2xvc2UoKS1l
ZCBtb3JlIHRoYW4gb25jZScpOworCit0ZXN0KCgpID0+IHsKKyAgbGV0IGNvbnRyb2xsZXI7CisK
KyAgbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjb250cm9sbGVy
ID0gYzsKKyAgICB9LAorICAgIHR5cGU6ICdieXRlcycKKyAgfSk7CisKKyAgLy8gRW5xdWV1ZSBh
IGNodW5rIHNvIHRoYXQgdGhlIHN0cmVhbSBkb2Vzbid0IGdldCBjbG9zZWQuIFRoaXMgaXMgdG8g
Y2hlY2sgZW5xdWV1ZSgpIGFmdGVyIGNsb3NlKCkgaXMgIHJlamVjdGVkCisgIC8vIGV2ZW4gaWYg
dGhlIHN0cmVhbSBoYXMgbm90IHlldCBlbnRlcmVkIHRoZSBjbG9zZWQgc3RhdGUuCisgIGNvbnN0
IHZpZXcgPSBuZXcgVWludDhBcnJheSgxKTsKKyAgY29udHJvbGxlci5lbnF1ZXVlKHZpZXcpOwor
ICBjb250cm9sbGVyLmNsb3NlKCk7CisKKyAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgp
ID0+IGNvbnRyb2xsZXIuZW5xdWV1ZSh2aWV3KSwgJ2NvbnRyb2xsZXIuY2xvc2UoKSBtdXN0IHRo
cm93Jyk7Cit9LCAnUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogVGhyb3cgb24gZW5x
dWV1ZSgpIGFmdGVyIGNsb3NlKCknKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgbGV0IGNv
bnRyb2xsZXI7CisgIGxldCBieW9iUmVxdWVzdDsKKyAgbGV0IHZpZXdJbmZvOworCisgIGNvbnN0
IHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgY29u
dHJvbGxlciA9IGM7CisgICAgfSwKKyAgICBwdWxsKCkgeworICAgICAgYnlvYlJlcXVlc3QgPSBj
b250cm9sbGVyLmJ5b2JSZXF1ZXN0OworICAgICAgY29uc3QgdmlldyA9IGNvbnRyb2xsZXIuYnlv
YlJlcXVlc3QudmlldzsKKyAgICAgIHZpZXdJbmZvID0gZXh0cmFjdFZpZXdJbmZvKHZpZXcpOwor
CisgICAgICB2aWV3WzE1XSA9IDB4MDE7CisgICAgICBjb250cm9sbGVyLmJ5b2JSZXF1ZXN0LnJl
c3BvbmQoMTYpOworICAgICAgY29udHJvbGxlci5jbG9zZSgpOworICAgIH0sCisgICAgdHlwZTog
J2J5dGVzJworICB9KTsKKworICBjb25zdCByZWFkZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKHsgbW9k
ZTogJ2J5b2InIH0pOworCisgIHJldHVybiByZWFkZXIucmVhZChuZXcgVWludDhBcnJheSgxNikp
LnRoZW4ocmVzdWx0ID0+IHsKKyAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdC5kb25lLCBmYWxzZSk7
CisKKyAgICBjb25zdCB2aWV3ID0gcmVzdWx0LnZhbHVlOworICAgIGFzc2VydF9lcXVhbHModmll
dy5ieXRlT2Zmc2V0LCAwKTsKKyAgICBhc3NlcnRfZXF1YWxzKHZpZXcuYnl0ZUxlbmd0aCwgMTYp
OworICAgIGFzc2VydF9lcXVhbHModmlld1sxNV0sIDB4MDEpOworCisgICAgcmV0dXJuIHJlYWRl
ci5yZWFkKG5ldyBVaW50OEFycmF5KDE2KSk7CisgIH0pLnRoZW4ocmVzdWx0ID0+IHsKKyAgICBh
c3NlcnRfZXF1YWxzKHJlc3VsdC5kb25lLCB0cnVlKTsKKworICAgIGNvbnN0IHZpZXcgPSByZXN1
bHQudmFsdWU7CisgICAgYXNzZXJ0X2VxdWFscyh2aWV3LmJ5dGVPZmZzZXQsIDApOworICAgIGFz
c2VydF9lcXVhbHModmlldy5ieXRlTGVuZ3RoLCAwKTsKKworICAgIGFzc2VydF9ub3RfZXF1YWxz
KGJ5b2JSZXF1ZXN0LCBudWxsLCAnYnlvYlJlcXVlc3QgbXVzdCBub3QgYmUgbnVsbCcpOworICAg
IGFzc2VydF9lcXVhbHModmlld0luZm8uY29uc3RydWN0b3IsIFVpbnQ4QXJyYXksICd2aWV3LmNv
bnN0cnVjdG9yIHNob3VsZCBiZSBVaW50OEFycmF5Jyk7CisgICAgYXNzZXJ0X2VxdWFscyh2aWV3
SW5mby5idWZmZXJCeXRlTGVuZ3RoLCAxNiwgJ3ZpZXcuYnVmZmVyLmJ5dGVMZW5ndGggc2hvdWxk
IGJlIDE2Jyk7CisgICAgYXNzZXJ0X2VxdWFscyh2aWV3SW5mby5ieXRlT2Zmc2V0LCAwLCAndmll
dy5ieXRlT2Zmc2V0IHNob3VsZCBiZSAwJyk7CisgICAgYXNzZXJ0X2VxdWFscyh2aWV3SW5mby5i
eXRlTGVuZ3RoLCAxNiwgJ3ZpZXcuYnl0ZUxlbmd0aCBzaG91bGQgYmUgMTYnKTsKKyAgfSk7Cit9
LCAnUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogcmVhZCh2aWV3KSwgdGhlbiByZXNw
b25kKCkgYW5kIGNsb3NlKCkgaW4gcHVsbCgpJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7Cisg
IGxldCBwdWxsQ291bnQgPSAwOworCisgIGxldCBjb250cm9sbGVyOworICBjb25zdCB2aWV3SW5m
b3MgPSBbXTsKKworICBjb25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0
YXJ0KGMpIHsKKyAgICAgIGNvbnRyb2xsZXIgPSBjOworICAgIH0sCisgICAgcHVsbCgpIHsKKyAg
ICAgIGlmIChjb250cm9sbGVyLmJ5b2JSZXF1ZXN0ID09PSBudWxsKSB7CisgICAgICAgIHJldHVy
bjsKKyAgICAgIH0KKworICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCA0OyArK2kpIHsKKyAgICAg
ICAgY29uc3QgdmlldyA9IGNvbnRyb2xsZXIuYnlvYlJlcXVlc3QudmlldzsKKyAgICAgICAgdmll
d0luZm9zLnB1c2goZXh0cmFjdFZpZXdJbmZvKHZpZXcpKTsKKworICAgICAgICB2aWV3WzBdID0g
MHgwMTsKKyAgICAgICAgY29udHJvbGxlci5ieW9iUmVxdWVzdC5yZXNwb25kKDEpOworICAgICAg
fQorCisgICAgICArK3B1bGxDb3VudDsKKyAgICB9LAorICAgIHR5cGU6ICdieXRlcycKKyAgfSk7
CisKKyAgY29uc3QgcmVhZGVyID0gc3RyZWFtLmdldFJlYWRlcih7IG1vZGU6ICdieW9iJyB9KTsK
KworICByZXR1cm4gcmVhZGVyLnJlYWQobmV3IFVpbnQzMkFycmF5KDEpKS50aGVuKHJlc3VsdCA9
PiB7CisgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQuZG9uZSwgZmFsc2UpOworCisgICAgY29uc3Qg
dmlldyA9IHJlc3VsdC52YWx1ZTsKKyAgICBhc3NlcnRfZXF1YWxzKHZpZXcuYnl0ZU9mZnNldCwg
MCk7CisgICAgYXNzZXJ0X2VxdWFscyh2aWV3LmJ5dGVMZW5ndGgsIDQpOworICAgIGFzc2VydF9l
cXVhbHModmlld1swXSwgMHgwMTAxMDEwMSk7CisKKyAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3Vu
dCwgMSwgJ3B1bGwoKSBzaG91bGQgb25seSBiZSBjYWxsZWQgb25jZScpOworCisgICAgZm9yIChs
ZXQgaSA9IDA7IGkgPCA0OyArK2kpIHsKKyAgICAgIGFzc2VydF9lcXVhbHModmlld0luZm9zW2ld
LmNvbnN0cnVjdG9yLCBVaW50OEFycmF5LCAndmlldy5jb25zdHJ1Y3RvciBzaG91bGQgYmUgVWlu
dDhBcnJheScpOworICAgICAgYXNzZXJ0X2VxdWFscyh2aWV3SW5mb3NbaV0uYnVmZmVyQnl0ZUxl
bmd0aCwgNCwgJ3ZpZXcuYnVmZmVyLmJ5dGVMZW5ndGggc2hvdWxkIGJlIDQnKTsKKworICAgICAg
YXNzZXJ0X2VxdWFscyh2aWV3SW5mb3NbaV0uYnl0ZU9mZnNldCwgaSwgJ3ZpZXcuYnl0ZU9mZnNl
dCBzaG91bGQgYmUgaScpOworICAgICAgYXNzZXJ0X2VxdWFscyh2aWV3SW5mb3NbaV0uYnl0ZUxl
bmd0aCwgNCAtIGksICd2aWV3LmJ5dGVMZW5ndGggc2hvdWxkIGJlIDQgLSBpJyk7CisgICAgfQor
ICB9KTsKK30sICdSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiByZWFkKHZpZXcpIHdp
dGggVWludDMyQXJyYXksIHRoZW4gZmlsbCBpdCBieSBtdWx0aXBsZSByZXNwb25kKCkgY2FsbHMn
KTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgbGV0IHB1bGxDb3VudCA9IDA7CisKKyAgbGV0
IGNvbnRyb2xsZXI7CisgIGxldCBieW9iUmVxdWVzdDsKKworICBjb25zdCBzdHJlYW0gPSBuZXcg
UmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGNvbnRyb2xsZXIgPSBjOwor
ICAgIH0sCisgICAgcHVsbCgpIHsKKyAgICAgIGJ5b2JSZXF1ZXN0ID0gY29udHJvbGxlci5ieW9i
UmVxdWVzdDsKKworICAgICAgKytwdWxsQ291bnQ7CisgICAgfSwKKyAgICB0eXBlOiAnYnl0ZXMn
CisgIH0pOworCisgIGNvbnN0IHJlYWRlciA9IHN0cmVhbS5nZXRSZWFkZXIoKTsKKworICBjb25z
dCBwMCA9IHJlYWRlci5yZWFkKCkudGhlbihyZXN1bHQgPT4geworICAgIGFzc2VydF9lcXVhbHMo
cHVsbENvdW50LCAxKTsKKworICAgIGNvbnRyb2xsZXIuZW5xdWV1ZShuZXcgVWludDhBcnJheSgy
KSk7CisKKyAgICAvLyBTaW5jZSB0aGUgcXVldWUgaGFzIGRhdGEgbm8gbGVzcyB0aGFuIEhXTSwg
bm8gbW9yZSBwdWxsLgorICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAxKTsKKworICAgIGFz
c2VydF9lcXVhbHMocmVzdWx0LmRvbmUsIGZhbHNlKTsKKworICAgIGNvbnN0IHZpZXcgPSByZXN1
bHQudmFsdWU7CisgICAgYXNzZXJ0X2VxdWFscyh2aWV3LmNvbnN0cnVjdG9yLCBVaW50OEFycmF5
KTsKKyAgICBhc3NlcnRfZXF1YWxzKHZpZXcuYnVmZmVyLmJ5dGVMZW5ndGgsIDEpOworICAgIGFz
c2VydF9lcXVhbHModmlldy5ieXRlT2Zmc2V0LCAwKTsKKyAgICBhc3NlcnRfZXF1YWxzKHZpZXcu
Ynl0ZUxlbmd0aCwgMSk7CisgIH0pOworCisgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAwLCAn
Tm8gcHVsbCBzaG91bGQgaGF2ZSBiZWVuIG1hZGUgc2luY2UgdGhlIHN0YXJ0UHJvbWlzZSBoYXMg
bm90IHlldCBiZWVuIGhhbmRsZWQnKTsKKworICBjb25zdCBwMSA9IHJlYWRlci5yZWFkKCkudGhl
bihyZXN1bHQgPT4geworICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAxKTsKKworICAgIGFz
c2VydF9lcXVhbHMocmVzdWx0LmRvbmUsIGZhbHNlKTsKKworICAgIGNvbnN0IHZpZXcgPSByZXN1
bHQudmFsdWU7CisgICAgYXNzZXJ0X2VxdWFscyh2aWV3LmNvbnN0cnVjdG9yLCBVaW50OEFycmF5
KTsKKyAgICBhc3NlcnRfZXF1YWxzKHZpZXcuYnVmZmVyLmJ5dGVMZW5ndGgsIDIpOworICAgIGFz
c2VydF9lcXVhbHModmlldy5ieXRlT2Zmc2V0LCAwKTsKKyAgICBhc3NlcnRfZXF1YWxzKHZpZXcu
Ynl0ZUxlbmd0aCwgMik7CisKKyAgICBhc3NlcnRfZXF1YWxzKGJ5b2JSZXF1ZXN0LCBudWxsLCAn
YnlvYlJlcXVlc3QgbXVzdCBiZSBudWxsJyk7CisgIH0pOworCisgIGFzc2VydF9lcXVhbHMocHVs
bENvdW50LCAwLCAnTm8gcHVsbCBzaG91bGQgaGF2ZSBiZWVuIG1hZGUgc2luY2UgdGhlIHN0YXJ0
UHJvbWlzZSBoYXMgbm90IHlldCBiZWVuIGhhbmRsZWQnKTsKKworICBjb250cm9sbGVyLmVucXVl
dWUobmV3IFVpbnQ4QXJyYXkoMSkpOworCisgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAwLCAn
Tm8gcHVsbCBzaG91bGQgaGF2ZSBiZWVuIG1hZGUgc2luY2UgdGhlIHN0YXJ0UHJvbWlzZSBoYXMg
bm90IHlldCBiZWVuIGhhbmRsZWQnKTsKKworICByZXR1cm4gUHJvbWlzZS5hbGwoW3AwLCBwMV0p
OworfSwgJ1JlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IHJlYWQoKSB0d2ljZSwgdGhl
biBlbnF1ZXVlKCkgdHdpY2UnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBsZXQgY29udHJv
bGxlcjsKKworICBjb25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0
KGMpIHsKKyAgICAgIGNvbnRyb2xsZXIgPSBjOworICAgIH0sCisgICAgcHVsbDogdC51bnJlYWNo
ZWRfZnVuYygncHVsbCgpIHNob3VsZCBub3QgYmUgY2FsbGVkJyksCisgICAgdHlwZTogJ2J5dGVz
JworICB9KTsKKworICBjb25zdCByZWFkZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKHsgbW9kZTogJ2J5
b2InIH0pOworCisgIGNvbnN0IHAwID0gcmVhZGVyLnJlYWQobmV3IFVpbnQ4QXJyYXkoMTYpKS50
aGVuKHJlc3VsdCA9PiB7CisgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQuZG9uZSwgdHJ1ZSwgJzFz
dCByZWFkOiBkb25lJyk7CisKKyAgICBjb25zdCB2aWV3ID0gcmVzdWx0LnZhbHVlOworICAgIGFz
c2VydF9lcXVhbHModmlldy5idWZmZXIuYnl0ZUxlbmd0aCwgMTYsICcxc3QgcmVhZDogYnVmZmVy
LmJ5dGVMZW5ndGgnKTsKKyAgICBhc3NlcnRfZXF1YWxzKHZpZXcuYnl0ZU9mZnNldCwgMCwgJzFz
dCByZWFkOiBieXRlT2Zmc2V0Jyk7CisgICAgYXNzZXJ0X2VxdWFscyh2aWV3LmJ5dGVMZW5ndGgs
IDAsICcxc3QgcmVhZDogYnl0ZUxlbmd0aCcpOworICB9KTsKKworICBjb25zdCBwMSA9IHJlYWRl
ci5yZWFkKG5ldyBVaW50OEFycmF5KDMyKSkudGhlbihyZXN1bHQgPT4geworICAgIGFzc2VydF9l
cXVhbHMocmVzdWx0LmRvbmUsIHRydWUsICcybmQgcmVhZDogZG9uZScpOworCisgICAgY29uc3Qg
dmlldyA9IHJlc3VsdC52YWx1ZTsKKyAgICBhc3NlcnRfZXF1YWxzKHZpZXcuYnVmZmVyLmJ5dGVM
ZW5ndGgsIDMyLCAnMm5kIHJlYWQ6IGJ1ZmZlci5ieXRlTGVuZ3RoJyk7CisgICAgYXNzZXJ0X2Vx
dWFscyh2aWV3LmJ5dGVPZmZzZXQsIDAsICcybmQgcmVhZDogYnl0ZU9mZnNldCcpOworICAgIGFz
c2VydF9lcXVhbHModmlldy5ieXRlTGVuZ3RoLCAwLCAnMm5kIHJlYWQ6IGJ5dGVMZW5ndGgnKTsK
KyAgfSk7CisKKyAgY29udHJvbGxlci5jbG9zZSgpOworICBjb250cm9sbGVyLmJ5b2JSZXF1ZXN0
LnJlc3BvbmQoMCk7CisKKyAgcmV0dXJuIFByb21pc2UuYWxsKFtwMCwgcDFdKTsKK30sICdSZWFk
YWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBNdWx0aXBsZSByZWFkKHZpZXcpLCBjbG9zZSgp
IGFuZCByZXNwb25kKCknKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBsZXQgY29udHJvbGxl
cjsKKworICBjb25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMp
IHsKKyAgICAgIGNvbnRyb2xsZXIgPSBjOworICAgIH0sCisgICAgcHVsbDogdC51bnJlYWNoZWRf
ZnVuYygncHVsbCgpIHNob3VsZCBub3QgYmUgY2FsbGVkJyksCisgICAgdHlwZTogJ2J5dGVzJwor
ICB9KTsKKworICBjb25zdCByZWFkZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKHsgbW9kZTogJ2J5b2In
IH0pOworCisgIGNvbnN0IHAwID0gcmVhZGVyLnJlYWQobmV3IFVpbnQ4QXJyYXkoMTYpKS50aGVu
KHJlc3VsdCA9PiB7CisgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQuZG9uZSwgZmFsc2UsICcxc3Qg
cmVhZDogZG9uZScpOworCisgICAgY29uc3QgdmlldyA9IHJlc3VsdC52YWx1ZTsKKyAgICBhc3Nl
cnRfZXF1YWxzKHZpZXcuYnVmZmVyLmJ5dGVMZW5ndGgsIDE2LCAnMXN0IHJlYWQ6IGJ1ZmZlci5i
eXRlTGVuZ3RoJyk7CisgICAgYXNzZXJ0X2VxdWFscyh2aWV3LmJ5dGVPZmZzZXQsIDAsICcxc3Qg
cmVhZDogYnl0ZU9mZnNldCcpOworICAgIGFzc2VydF9lcXVhbHModmlldy5ieXRlTGVuZ3RoLCAx
NiwgJzFzdCByZWFkOiBieXRlTGVuZ3RoJyk7CisgIH0pOworCisgIGNvbnN0IHAxID0gcmVhZGVy
LnJlYWQobmV3IFVpbnQ4QXJyYXkoMTYpKS50aGVuKHJlc3VsdCA9PiB7CisgICAgYXNzZXJ0X2Vx
dWFscyhyZXN1bHQuZG9uZSwgZmFsc2UsICcybmQgcmVhZDogZG9uZScpOworCisgICAgY29uc3Qg
dmlldyA9IHJlc3VsdC52YWx1ZTsKKyAgICBhc3NlcnRfZXF1YWxzKHZpZXcuYnVmZmVyLmJ5dGVM
ZW5ndGgsIDE2LCAnMm5kIHJlYWQ6IGJ1ZmZlci5ieXRlTGVuZ3RoJyk7CisgICAgYXNzZXJ0X2Vx
dWFscyh2aWV3LmJ5dGVPZmZzZXQsIDAsICcybmQgcmVhZDogYnl0ZU9mZnNldCcpOworICAgIGFz
c2VydF9lcXVhbHModmlldy5ieXRlTGVuZ3RoLCA4LCAnMm5kIHJlYWQ6IGJ5dGVMZW5ndGgnKTsK
KyAgfSk7CisKKyAgY29udHJvbGxlci5lbnF1ZXVlKG5ldyBVaW50OEFycmF5KDI0KSk7CisKKyAg
cmV0dXJuIFByb21pc2UuYWxsKFtwMCwgcDFdKTsKK30sICdSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5
dGUgc291cmNlOiBNdWx0aXBsZSByZWFkKHZpZXcpLCBiaWcgZW5xdWV1ZSgpJyk7CisKK3Byb21p
c2VfdGVzdCh0ID0+IHsKKyAgbGV0IGNvbnRyb2xsZXI7CisKKyAgY29uc3Qgc3RyZWFtID0gbmV3
IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjb250cm9sbGVyID0gYzsK
KyAgICB9LAorICAgIHB1bGw6IHQudW5yZWFjaGVkX2Z1bmMoJ3B1bGwoKSBzaG91bGQgbm90IGJl
IGNhbGxlZCcpLAorICAgIHR5cGU6ICdieXRlcycKKyAgfSk7CisKKyAgY29uc3QgcmVhZGVyID0g
c3RyZWFtLmdldFJlYWRlcih7IG1vZGU6ICdieW9iJyB9KTsKKworICBsZXQgYnl0ZXNSZWFkID0g
MDsKKworICBmdW5jdGlvbiBwdW1wKCkgeworICAgIHJldHVybiByZWFkZXIucmVhZChuZXcgVWlu
dDhBcnJheSg3KSkudGhlbihyZXN1bHQgPT4geworICAgICAgaWYgKHJlc3VsdC5kb25lKSB7Cisg
ICAgICAgIGFzc2VydF9lcXVhbHMoYnl0ZXNSZWFkLCAxMDI0KTsKKyAgICAgICAgcmV0dXJuIHVu
ZGVmaW5lZDsKKyAgICAgIH0KKworICAgICAgYnl0ZXNSZWFkICs9IHJlc3VsdC52YWx1ZS5ieXRl
TGVuZ3RoOworCisgICAgICByZXR1cm4gcHVtcCgpOworICAgIH0pOworICB9CisgIGNvbnN0IHBy
b21pc2UgPSBwdW1wKCk7CisKKyAgY29udHJvbGxlci5lbnF1ZXVlKG5ldyBVaW50OEFycmF5KDUx
MikpOworICBjb250cm9sbGVyLmVucXVldWUobmV3IFVpbnQ4QXJyYXkoNTEyKSk7CisgIGNvbnRy
b2xsZXIuY2xvc2UoKTsKKworICByZXR1cm4gcHJvbWlzZTsKK30sICdSZWFkYWJsZVN0cmVhbSB3
aXRoIGJ5dGUgc291cmNlOiBNdWx0aXBsZSByZWFkKHZpZXcpIGFuZCBtdWx0aXBsZSBlbnF1ZXVl
KCknKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBsZXQgcHVsbENhbGxlZCA9IGZhbHNlOwor
ICBjb25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHB1bGwoY29udHJvbGxl
cikgeworICAgICAgcHVsbENhbGxlZCA9IHRydWU7CisgICAgfSwKKyAgICB0eXBlOiAnYnl0ZXMn
CisgIH0pOworCisgIGNvbnN0IHJlYWRlciA9IHN0cmVhbS5nZXRSZWFkZXIoeyBtb2RlOiAnYnlv
YicgfSk7CisKKyAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19qcyh0LCBUeXBlRXJyb3IsIHJlYWRl
ci5yZWFkKCksICdyZWFkKCkgbXVzdCBmYWlsJykKKyAgICAgIC50aGVuKCgpID0+IGFzc2VydF9m
YWxzZShwdWxsQ2FsbGVkLCAncHVsbCgpIG11c3Qgbm90IGhhdmUgYmVlbiBjYWxsZWQnKSk7Cit9
LCAnUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogcmVhZCh2aWV3KSB3aXRoIHBhc3Np
bmcgdW5kZWZpbmVkIGFzIHZpZXcgbXVzdCBmYWlsJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsK
KyAgY29uc3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICB0eXBlOiAnYnl0ZXMn
CisgIH0pOworCisgIGNvbnN0IHJlYWRlciA9IHN0cmVhbS5nZXRSZWFkZXIoeyBtb2RlOiAnYnlv
YicgfSk7CisKKyAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19qcyh0LCBUeXBlRXJyb3IsIHJlYWRl
ci5yZWFkKHt9KSwgJ3JlYWQodmlldykgbXVzdCBmYWlsJyk7Cit9LCAnUmVhZGFibGVTdHJlYW0g
d2l0aCBieXRlIHNvdXJjZTogcmVhZCh2aWV3KSB3aXRoIHBhc3NpbmcgYW4gZW1wdHkgb2JqZWN0
IGFzIHZpZXcgbXVzdCBmYWlsJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgY29uc3Qgc3Ry
ZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICB0eXBlOiAnYnl0ZXMnCisgIH0pOworCisg
IGNvbnN0IHJlYWRlciA9IHN0cmVhbS5nZXRSZWFkZXIoeyBtb2RlOiAnYnlvYicgfSk7CisKKyAg
cmV0dXJuIHByb21pc2VfcmVqZWN0c19qcyh0LCBUeXBlRXJyb3IsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgcmVhZGVyLnJlYWQoeyBidWZmZXI6IG5ldyBBcnJheUJ1ZmZlcigxMCksIGJ5dGVP
ZmZzZXQ6IDAsIGJ5dGVMZW5ndGg6IDEwIH0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICdy
ZWFkKHZpZXcpIG11c3QgZmFpbCcpOworfSwgJ1JlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3Vy
Y2U6IEV2ZW4gcmVhZCh2aWV3KSB3aXRoIHBhc3NpbmcgQXJyYXlCdWZmZXJWaWV3IGxpa2Ugb2Jq
ZWN0IGFzIHZpZXcgbXVzdCBmYWlsJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgY29uc3Qg
c3RyZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjLmVy
cm9yKGVycm9yMSk7CisgICAgfSwKKyAgICBwdWxsOiB0LnVucmVhY2hlZF9mdW5jKCdwdWxsKCkg
c2hvdWxkIG5vdCBiZSBjYWxsZWQnKSwKKyAgICB0eXBlOiAnYnl0ZXMnCisgIH0pOworCisgIGNv
bnN0IHJlYWRlciA9IHN0cmVhbS5nZXRSZWFkZXIoKTsKKworICByZXR1cm4gcHJvbWlzZV9yZWpl
Y3RzX2V4YWN0bHkodCwgZXJyb3IxLCByZWFkZXIucmVhZCgpLCAncmVhZCgpIG11c3QgZmFpbCcp
OworfSwgJ1JlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IHJlYWQoKSBvbiBhbiBlcnJv
cmVkIHN0cmVhbScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIGxldCBjb250cm9sbGVyOwor
CisgIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgewor
ICAgICAgY29udHJvbGxlciA9IGM7CisgICAgfSwKKyAgICB0eXBlOiAnYnl0ZXMnCisgIH0pOwor
CisgIGNvbnN0IHJlYWRlciA9IHN0cmVhbS5nZXRSZWFkZXIoKTsKKworICBjb25zdCBwcm9taXNl
ID0gcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCByZWFkZXIucmVhZCgpLCAncmVh
ZCgpIG11c3QgZmFpbCcpOworCisgIGNvbnRyb2xsZXIuZXJyb3IoZXJyb3IxKTsKKworICByZXR1
cm4gcHJvbWlzZTsKK30sICdSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiByZWFkKCks
IHRoZW4gZXJyb3IoKScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIGNvbnN0IHN0cmVhbSA9
IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgYy5lcnJvcihlcnJv
cjEpOworICAgIH0sCisgICAgcHVsbDogdC51bnJlYWNoZWRfZnVuYygncHVsbCgpIHNob3VsZCBu
b3QgYmUgY2FsbGVkJyksCisgICAgdHlwZTogJ2J5dGVzJworICB9KTsKKworICBjb25zdCByZWFk
ZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKHsgbW9kZTogJ2J5b2InIH0pOworCisgIHJldHVybiBwcm9t
aXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIHJlYWRlci5yZWFkKG5ldyBVaW50OEFycmF5
KDEpKSwgJ3JlYWQoKSBtdXN0IGZhaWwnKTsKK30sICdSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUg
c291cmNlOiByZWFkKHZpZXcpIG9uIGFuIGVycm9yZWQgc3RyZWFtJyk7CisKK3Byb21pc2VfdGVz
dCh0ID0+IHsKKyAgbGV0IGNvbnRyb2xsZXI7CisKKyAgY29uc3Qgc3RyZWFtID0gbmV3IFJlYWRh
YmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjb250cm9sbGVyID0gYzsKKyAgICB9
LAorICAgIHR5cGU6ICdieXRlcycKKyAgfSk7CisKKyAgY29uc3QgcmVhZGVyID0gc3RyZWFtLmdl
dFJlYWRlcih7IG1vZGU6ICdieW9iJyB9KTsKKworICBjb25zdCBwcm9taXNlID0gcHJvbWlzZV9y
ZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCByZWFkZXIucmVhZChuZXcgVWludDhBcnJheSgxKSks
ICdyZWFkKCkgbXVzdCBmYWlsJyk7CisKKyAgY29udHJvbGxlci5lcnJvcihlcnJvcjEpOworCisg
IHJldHVybiBwcm9taXNlOworfSwgJ1JlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IHJl
YWQodmlldyksIHRoZW4gZXJyb3IoKScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIGxldCBj
b250cm9sbGVyOworICBsZXQgYnlvYlJlcXVlc3Q7CisKKyAgY29uc3QgdGVzdEVycm9yID0gbmV3
IFR5cGVFcnJvcignZm9vJyk7CisKKyAgY29uc3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFt
KHsKKyAgICBzdGFydChjKSB7CisgICAgICBjb250cm9sbGVyID0gYzsKKyAgICB9LAorICAgIHB1
bGwoKSB7CisgICAgICBieW9iUmVxdWVzdCA9IGNvbnRyb2xsZXIuYnlvYlJlcXVlc3Q7CisgICAg
ICB0aHJvdyB0ZXN0RXJyb3I7CisgICAgfSwKKyAgICB0eXBlOiAnYnl0ZXMnCisgIH0pOworCisg
IGNvbnN0IHJlYWRlciA9IHN0cmVhbS5nZXRSZWFkZXIoKTsKKworICBjb25zdCBwcm9taXNlID0g
cHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgdGVzdEVycm9yLCByZWFkZXIucmVhZCgpLCAncmVh
ZCgpIG11c3QgZmFpbCcpOworICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgdGVz
dEVycm9yLCBwcm9taXNlLnRoZW4oKCkgPT4gcmVhZGVyLmNsb3NlZCkpCisgICAgICAudGhlbigo
KSA9PiBhc3NlcnRfZXF1YWxzKGJ5b2JSZXF1ZXN0LCBudWxsLCAnYnlvYlJlcXVlc3QgbXVzdCBi
ZSBudWxsJykpOworfSwgJ1JlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IFRocm93aW5n
IGluIHB1bGwgZnVuY3Rpb24gbXVzdCBlcnJvciB0aGUgc3RyZWFtJyk7CisKK3Byb21pc2VfdGVz
dCh0ID0+IHsKKyAgbGV0IGJ5b2JSZXF1ZXN0OworCisgIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFk
YWJsZVN0cmVhbSh7CisgICAgcHVsbChjb250cm9sbGVyKSB7CisgICAgICBieW9iUmVxdWVzdCA9
IGNvbnRyb2xsZXIuYnlvYlJlcXVlc3Q7CisgICAgICBjb250cm9sbGVyLmVycm9yKGVycm9yMSk7
CisgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdmb28nKTsKKyAgICB9LAorICAgIHR5cGU6ICdi
eXRlcycKKyAgfSk7CisKKyAgY29uc3QgcmVhZGVyID0gc3RyZWFtLmdldFJlYWRlcigpOworCisg
IHJldHVybiBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIHJlYWRlci5yZWFkKCks
ICdyZWFkKCkgbXVzdCBmYWlsJykKKyAgICAgIC50aGVuKCgpID0+IHByb21pc2VfcmVqZWN0c19l
eGFjdGx5KHQsIGVycm9yMSwgcmVhZGVyLmNsb3NlZCwgJ2Nsb3NlZCBtdXN0IGZhaWwnKSkKKyAg
ICAgIC50aGVuKCgpID0+IGFzc2VydF9lcXVhbHMoYnlvYlJlcXVlc3QsIG51bGwsICdieW9iUmVx
dWVzdCBtdXN0IGJlIG51bGwnKSk7Cit9LCAnUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJj
ZTogVGhyb3dpbmcgaW4gcHVsbCBpbiByZXNwb25zZSB0byByZWFkKCkgbXVzdCBiZSBpZ25vcmVk
IGlmIHRoZSBzdHJlYW0gaXMgJyArCisgICAnZXJyb3JlZCBpbiBpdCcpOworCitwcm9taXNlX3Rl
c3QodCA9PiB7CisgIGxldCBieW9iUmVxdWVzdDsKKworICBjb25zdCB0ZXN0RXJyb3IgPSBuZXcg
VHlwZUVycm9yKCdmb28nKTsKKworICBjb25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0o
eworICAgIHB1bGwoY29udHJvbGxlcikgeworICAgICAgYnlvYlJlcXVlc3QgPSBjb250cm9sbGVy
LmJ5b2JSZXF1ZXN0OworICAgICAgdGhyb3cgdGVzdEVycm9yOworICAgIH0sCisgICAgdHlwZTog
J2J5dGVzJworICB9KTsKKworICBjb25zdCByZWFkZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKHsgbW9k
ZTogJ2J5b2InIH0pOworCisgIHJldHVybiBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCB0ZXN0
RXJyb3IsIHJlYWRlci5yZWFkKG5ldyBVaW50OEFycmF5KDEpKSwgJ3JlYWQodmlldykgbXVzdCBm
YWlsJykKKyAgICAgIC50aGVuKCgpID0+IHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIHRlc3RF
cnJvciwgcmVhZGVyLmNsb3NlZCwgJ3JlYWRlci5jbG9zZWQgbXVzdCByZWplY3QnKSkKKyAgICAg
IC50aGVuKCgpID0+IGFzc2VydF9ub3RfZXF1YWxzKGJ5b2JSZXF1ZXN0LCBudWxsLCAnYnlvYlJl
cXVlc3QgbXVzdCBub3QgYmUgbnVsbCcpKTsKK30sICdSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUg
c291cmNlOiBUaHJvd2luZyBpbiBwdWxsIGluIHJlc3BvbnNlIHRvIHJlYWQodmlldykgZnVuY3Rp
b24gbXVzdCBlcnJvciB0aGUgc3RyZWFtJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgbGV0
IGJ5b2JSZXF1ZXN0OworCisgIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Cisg
ICAgcHVsbChjb250cm9sbGVyKSB7CisgICAgICBieW9iUmVxdWVzdCA9IGNvbnRyb2xsZXIuYnlv
YlJlcXVlc3Q7CisgICAgICBjb250cm9sbGVyLmVycm9yKGVycm9yMSk7CisgICAgICB0aHJvdyBu
ZXcgVHlwZUVycm9yKCdmb28nKTsKKyAgICB9LAorICAgIHR5cGU6ICdieXRlcycKKyAgfSk7CisK
KyAgY29uc3QgcmVhZGVyID0gc3RyZWFtLmdldFJlYWRlcih7IG1vZGU6ICdieW9iJyB9KTsKKwor
ICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCByZWFkZXIucmVhZChu
ZXcgVWludDhBcnJheSgxKSksICdyZWFkKHZpZXcpIG11c3QgZmFpbCcpCisgICAgICAudGhlbigo
KSA9PiBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIHJlYWRlci5jbG9zZWQsICdj
bG9zZWQgbXVzdCBmYWlsJykpCisgICAgICAudGhlbigoKSA9PiBhc3NlcnRfbm90X2VxdWFscyhi
eW9iUmVxdWVzdCwgbnVsbCwgJ2J5b2JSZXF1ZXN0IG11c3Qgbm90IGJlIG51bGwnKSk7Cit9LCAn
UmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogVGhyb3dpbmcgaW4gcHVsbCBpbiByZXNw
b25zZSB0byByZWFkKHZpZXcpIG11c3QgYmUgaWdub3JlZCBpZiB0aGUgc3RyZWFtIGlzICcgKwor
ICAgJ2Vycm9yZWQgaW4gaXQnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgbGV0IGJ5b2JS
ZXF1ZXN0OworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgcHVsbChjb250
cm9sbGVyKSB7CisgICAgICBieW9iUmVxdWVzdCA9IGNvbnRyb2xsZXIuYnlvYlJlcXVlc3Q7Cisg
ICAgICBieW9iUmVxdWVzdC5yZXNwb25kKDQpOworICAgIH0sCisgICAgdHlwZTogJ2J5dGVzJwor
ICB9KTsKKyAgY29uc3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKHsgbW9kZTogJ2J5b2InIH0pOwor
ICBjb25zdCB2aWV3ID0gbmV3IFVpbnQ4QXJyYXkoMTYpOworICByZXR1cm4gcmVhZGVyLnJlYWQo
dmlldykudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+
IGJ5b2JSZXF1ZXN0LnJlc3BvbmQoNCksICdyZXNwb25kKCkgc2hvdWxkIHRocm93IGEgVHlwZUVy
cm9yJyk7CisgIH0pOworfSwgJ2NhbGxpbmcgcmVzcG9uZCgpIHR3aWNlIG9uIHRoZSBzYW1lIGJ5
b2JSZXF1ZXN0IHNob3VsZCB0aHJvdycpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworICBsZXQg
YnlvYlJlcXVlc3Q7CisgIGNvbnN0IG5ld1ZpZXcgPSAoKSA9PiBuZXcgVWludDhBcnJheSgxNik7
CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBwdWxsKGNvbnRyb2xsZXIp
IHsKKyAgICAgIGJ5b2JSZXF1ZXN0ID0gY29udHJvbGxlci5ieW9iUmVxdWVzdDsKKyAgICAgIGJ5
b2JSZXF1ZXN0LnJlc3BvbmRXaXRoTmV3VmlldyhuZXdWaWV3KCkpOworICAgIH0sCisgICAgdHlw
ZTogJ2J5dGVzJworICB9KTsKKyAgY29uc3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKHsgbW9kZTog
J2J5b2InIH0pOworICByZXR1cm4gcmVhZGVyLnJlYWQobmV3VmlldygpKS50aGVuKCgpID0+IHsK
KyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4gYnlvYlJlcXVlc3QucmVzcG9u
ZFdpdGhOZXdWaWV3KG5ld1ZpZXcoKSksCisgICAgICAgICAgICAgICAgICAgICAncmVzcG9uZFdp
dGhOZXdWaWV3KCkgc2hvdWxkIHRocm93IGEgVHlwZUVycm9yJyk7CisgIH0pOworfSwgJ2NhbGxp
bmcgcmVzcG9uZFdpdGhOZXdWaWV3KCkgdHdpY2Ugb24gdGhlIHNhbWUgYnlvYlJlcXVlc3Qgc2hv
dWxkIHRocm93Jyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisgIGxldCBieW9iUmVxdWVzdDsK
KyAgbGV0IHJlc29sdmVQdWxsQ2FsbGVkUHJvbWlzZTsKKyAgY29uc3QgcHVsbENhbGxlZFByb21p
c2UgPSBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKKyAgICByZXNvbHZlUHVsbENhbGxlZFByb21p
c2UgPSByZXNvbHZlOworICB9KTsKKyAgbGV0IHJlc29sdmVQdWxsOworICBjb25zdCBycyA9IG5l
dyBSZWFkYWJsZVN0cmVhbSh7CisgICAgcHVsbChjb250cm9sbGVyKSB7CisgICAgICBieW9iUmVx
dWVzdCA9IGNvbnRyb2xsZXIuYnlvYlJlcXVlc3Q7CisgICAgICByZXNvbHZlUHVsbENhbGxlZFBy
b21pc2UoKTsKKyAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKKyAgICAgICAg
cmVzb2x2ZVB1bGwgPSByZXNvbHZlOworICAgICAgfSk7CisgICAgfSwKKyAgICB0eXBlOiAnYnl0
ZXMnCisgIH0pOworICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFkZXIoeyBtb2RlOiAnYnlvYicg
fSk7CisgIGNvbnN0IHJlYWRQcm9taXNlID0gcmVhZGVyLnJlYWQobmV3IFVpbnQ4QXJyYXkoMTYp
KTsKKyAgcmV0dXJuIHB1bGxDYWxsZWRQcm9taXNlLnRoZW4oKCkgPT4geworICAgIGNvbnN0IGNh
bmNlbFByb21pc2UgPSByZWFkZXIuY2FuY2VsKCdtZWgnKTsKKyAgICByZXNvbHZlUHVsbCgpOwor
ICAgIGJ5b2JSZXF1ZXN0LnJlc3BvbmQoMCk7CisgICAgcmV0dXJuIFByb21pc2UuYWxsKFtyZWFk
UHJvbWlzZSwgY2FuY2VsUHJvbWlzZV0pLnRoZW4oKCkgPT4geworICAgICAgYXNzZXJ0X3Rocm93
c19qcyhUeXBlRXJyb3IsICgpID0+IGJ5b2JSZXF1ZXN0LnJlc3BvbmQoMCksICdyZXNwb25kKCkg
c2hvdWxkIHRocm93Jyk7CisgICAgfSk7CisgIH0pOworfSwgJ2NhbGxpbmcgcmVzcG9uZCgwKSB0
d2ljZSBvbiB0aGUgc2FtZSBieW9iUmVxdWVzdCBzaG91bGQgdGhyb3cgZXZlbiB3aGVuIGNsb3Nl
ZCcpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworICBsZXQgcmVzb2x2ZVB1bGxDYWxsZWRQcm9t
aXNlOworICBjb25zdCBwdWxsQ2FsbGVkUHJvbWlzZSA9IG5ldyBQcm9taXNlKHJlc29sdmUgPT4g
eworICAgIHJlc29sdmVQdWxsQ2FsbGVkUHJvbWlzZSA9IHJlc29sdmU7CisgIH0pOworICBsZXQg
cmVzb2x2ZVB1bGw7CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBwdWxs
KCkgeworICAgICAgcmVzb2x2ZVB1bGxDYWxsZWRQcm9taXNlKCk7CisgICAgICByZXR1cm4gbmV3
IFByb21pc2UocmVzb2x2ZSA9PiB7CisgICAgICAgIHJlc29sdmVQdWxsID0gcmVzb2x2ZTsKKyAg
ICAgIH0pOworICAgIH0sCisgICAgdHlwZTogJ2J5dGVzJworICB9KTsKKyAgY29uc3QgcmVhZGVy
ID0gcnMuZ2V0UmVhZGVyKHsgbW9kZTogJ2J5b2InIH0pOworICByZWFkZXIucmVhZChuZXcgVWlu
dDhBcnJheSgxNikpOworICByZXR1cm4gcHVsbENhbGxlZFByb21pc2UudGhlbigoKSA9PiB7Cisg
ICAgcmVzb2x2ZVB1bGwoKTsKKyAgICByZXR1cm4gZGVsYXkoMCkudGhlbigoKSA9PiB7CisgICAg
ICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4gcmVhZGVyLnJlbGVhc2VMb2NrKCks
ICdyZWxlYXNlTG9jaygpIHNob3VsZCB0aHJvdycpOworICAgIH0pOworICB9KTsKK30sICdwdWxs
KCkgcmVzb2x2aW5nIHNob3VsZCBub3QgbWFrZSByZWxlYXNlTG9jaygpIHBvc3NpYmxlJyk7CisK
K3Byb21pc2VfdGVzdCgoKSA9PiB7CisgIC8vIFRlc3RzIGh0dHBzOi8vZ2l0aHViLmNvbS93aGF0
d2cvc3RyZWFtcy9pc3N1ZXMvNjg2CisKKyAgbGV0IGNvbnRyb2xsZXI7CisgIGNvbnN0IHJzID0g
bmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBhdXRvQWxsb2NhdGVDaHVua1NpemU6IDEyOCwKKyAg
ICBzdGFydChjKSB7CisgICAgICBjb250cm9sbGVyID0gYzsKKyAgICB9LAorICAgIHR5cGU6ICdi
eXRlcycKKyAgfSk7CisKKyAgY29uc3QgcmVhZFByb21pc2UgPSBycy5nZXRSZWFkZXIoKS5yZWFk
KCk7CisKKyAgY29uc3QgYnIgPSBjb250cm9sbGVyLmJ5b2JSZXF1ZXN0OworICBjb250cm9sbGVy
LmNsb3NlKCk7CisKKyAgYnIucmVzcG9uZCgwKTsKKworICByZXR1cm4gcmVhZFByb21pc2U7Cit9
LCAnUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogZGVmYXVsdCByZWFkZXIgKyBhdXRv
QWxsb2NhdGVDaHVua1NpemUgKyBieW9iUmVxdWVzdCBpbnRlcmFjdGlvbicpOworCit0ZXN0KCgp
ID0+IHsKKyAgY29uc3QgUmVhZGFibGVTdHJlYW1CWU9CUmVhZGVyID0gbmV3IFJlYWRhYmxlU3Ry
ZWFtKHsgdHlwZTogJ2J5dGVzJyB9KS5nZXRSZWFkZXIoeyBtb2RlOiAnYnlvYicgfSkuY29uc3Ry
dWN0b3I7CisgIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7IHR5cGU6ICdieXRl
cycgfSk7CisgIG5ldyBSZWFkYWJsZVN0cmVhbUJZT0JSZWFkZXIoc3RyZWFtKTsKK30sICdSZWFk
YWJsZVN0cmVhbUJZT0JSZWFkZXIgY2FuIGJlIGNvbnN0cnVjdGVkIGRpcmVjdGx5Jyk7CisKK3Rl
c3QoKCkgPT4geworICBjb25zdCBSZWFkYWJsZVN0cmVhbUJZT0JSZWFkZXIgPSBuZXcgUmVhZGFi
bGVTdHJlYW0oeyB0eXBlOiAnYnl0ZXMnIH0pLmdldFJlYWRlcih7IG1vZGU6ICdieW9iJyB9KS5j
b25zdHJ1Y3RvcjsKKyAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IG5ldyBSZWFk
YWJsZVN0cmVhbUJZT0JSZWFkZXIoe30pLCAnY29uc3RydWN0b3IgbXVzdCB0aHJvdycpOworfSwg
J1JlYWRhYmxlU3RyZWFtQllPQlJlYWRlciBjb25zdHJ1Y3RvciByZXF1aXJlcyBhIFJlYWRhYmxl
U3RyZWFtIGFyZ3VtZW50Jyk7CisKK3Rlc3QoKCkgPT4geworICBjb25zdCBSZWFkYWJsZVN0cmVh
bUJZT0JSZWFkZXIgPSBuZXcgUmVhZGFibGVTdHJlYW0oeyB0eXBlOiAnYnl0ZXMnIH0pLmdldFJl
YWRlcih7IG1vZGU6ICdieW9iJyB9KS5jb25zdHJ1Y3RvcjsKKyAgY29uc3Qgc3RyZWFtID0gbmV3
IFJlYWRhYmxlU3RyZWFtKHsgdHlwZTogJ2J5dGVzJyB9KTsKKyAgc3RyZWFtLmdldFJlYWRlcigp
OworICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4gbmV3IFJlYWRhYmxlU3RyZWFt
QllPQlJlYWRlcihzdHJlYW0pLCAnY29uc3RydWN0b3IgbXVzdCB0aHJvdycpOworfSwgJ1JlYWRh
YmxlU3RyZWFtQllPQlJlYWRlciBjb25zdHJ1Y3RvciByZXF1aXJlcyBhbiB1bmxvY2tlZCBSZWFk
YWJsZVN0cmVhbScpOworCit0ZXN0KCgpID0+IHsKKyAgY29uc3QgUmVhZGFibGVTdHJlYW1CWU9C
UmVhZGVyID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsgdHlwZTogJ2J5dGVzJyB9KS5nZXRSZWFkZXIo
eyBtb2RlOiAnYnlvYicgfSkuY29uc3RydWN0b3I7CisgIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFk
YWJsZVN0cmVhbSgpOworICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4gbmV3IFJl
YWRhYmxlU3RyZWFtQllPQlJlYWRlcihzdHJlYW0pLCAnY29uc3RydWN0b3IgbXVzdCB0aHJvdycp
OworfSwgJ1JlYWRhYmxlU3RyZWFtQllPQlJlYWRlciBjb25zdHJ1Y3RvciByZXF1aXJlcyBhIFJl
YWRhYmxlU3RyZWFtIHdpdGggdHlwZSAiYnl0ZXMiJyk7CisKK3Rlc3QoKCkgPT4geworICBhc3Nl
cnRfdGhyb3dzX2pzKFJhbmdlRXJyb3IsICgpID0+IG5ldyBSZWFkYWJsZVN0cmVhbSh7IHR5cGU6
ICdieXRlcycgfSwgeworICAgIHNpemUoKSB7CisgICAgICByZXR1cm4gMTsKKyAgICB9CisgIH0p
LCAnY29uc3RydWN0b3Igc2hvdWxkIHRocm93IGZvciBzaXplIGZ1bmN0aW9uJyk7CisKKyAgYXNz
ZXJ0X3Rocm93c19qcyhSYW5nZUVycm9yLAorICAgICAgICAgICAgICAgICAgICgpID0+IG5ldyBS
ZWFkYWJsZVN0cmVhbSh7IHR5cGU6ICdieXRlcycgfSwgbmV3IENvdW50UXVldWluZ1N0cmF0ZWd5
KHsgaGlnaFdhdGVyTWFyazogMSB9KSksCisgICAgICAgICAgICAgICAgICAgJ2NvbnN0cnVjdG9y
IHNob3VsZCB0aHJvdyB3aGVuIHN0cmF0ZWd5IGlzIENvdW50UXVldWluZ1N0cmF0ZWd5Jyk7CisK
KyAgYXNzZXJ0X3Rocm93c19qcyhSYW5nZUVycm9yLAorICAgICAgICAgICAgICAgICAgICgpID0+
IG5ldyBSZWFkYWJsZVN0cmVhbSh7IHR5cGU6ICdieXRlcycgfSwgbmV3IEJ5dGVMZW5ndGhRdWV1
aW5nU3RyYXRlZ3koeyBoaWdoV2F0ZXJNYXJrOiA1MTIgfSkpLAorICAgICAgICAgICAgICAgICAg
ICdjb25zdHJ1Y3RvciBzaG91bGQgdGhyb3cgd2hlbiBzdHJhdGVneSBpcyBCeXRlTGVuZ3RoUXVl
dWluZ1N0cmF0ZWd5Jyk7CisKKyAgY2xhc3MgSGFzU2l6ZU1ldGhvZCB7CisgICAgc2l6ZSgpIHt9
CisgfQorCisgIGFzc2VydF90aHJvd3NfanMoUmFuZ2VFcnJvciwgKCkgPT4gbmV3IFJlYWRhYmxl
U3RyZWFtKHsgdHlwZTogJ2J5dGVzJyB9LCBuZXcgSGFzU2l6ZU1ldGhvZCgpKSwKKyAgICAgICAg
ICAgICAgICAgICAnY29uc3RydWN0b3Igc2hvdWxkIHRocm93IHdoZW4gc2l6ZSBvbiB0aGUgcHJv
dG90eXBlIGNoYWluJyk7Cit9LCAnUmVhZGFibGVTdHJlYW0gY29uc3RydWN0b3Igc2hvdWxkIG5v
dCBhY2NlcHQgYSBzdHJhdGVneSB3aXRoIGEgc2l6ZSBkZWZpbmVkIGlmIHR5cGUgaXMgImJ5dGVz
IicpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFtcy9nZW5lcmFsLmFueS53b3JrZXItZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
dHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFtcy9nZW5lcmFsLmFueS53b3JrZXItZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjQzOWIwYTU3OTBlMTYwNTZlYTdiYmYyYzJjZGM5MDgwMzZiZjJmYjkK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL2dlbmVyYWwuYW55Lndvcmtlci1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSw4MyBAQAorCitIYXJuZXNzIEVycm9yIChUSU1FT1VUKSwg
bWVzc2FnZSA9IG51bGwKKworUEFTUyBnZXRSZWFkZXIoe21vZGU6ICJieW9iIn0pIHRocm93cyBv
biBub24tYnl0ZXMgc3RyZWFtcyAKK1BBU1MgUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJj
ZSBjYW4gYmUgY29uc3RydWN0ZWQgd2l0aCBubyBlcnJvcnMgCitQQVNTIGdldFJlYWRlcih7bW9k
ZX0pIG11c3QgcGVyZm9ybSBUb1N0cmluZygpIAorUEFTUyBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5
dGUgc291cmNlOiBDb25zdHJ1Y3QgYW5kIGV4cGVjdCBzdGFydCBhbmQgcHVsbCBiZWluZyBjYWxs
ZWQgCitQQVNTIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IE5vIGF1dG9tYXRpYyBw
dWxsIGNhbGwgaWYgc3RhcnQgZG9lc24ndCBmaW5pc2ggCitQQVNTIFJlYWRhYmxlU3RyZWFtIHdp
dGggYnl0ZSBzb3VyY2U6IENvbnN0cnVjdCB3aXRoIGhpZ2hXYXRlck1hcmsgb2YgMCAKK1BBU1Mg
UmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogZGVzaXJlZFNpemUgd2hlbiBjbG9zZWQg
CitQQVNTIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IGRlc2lyZWRTaXplIHdoZW4g
ZXJyb3JlZCAKK1BBU1MgUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogZ2V0UmVhZGVy
KCksIHRoZW4gcmVsZWFzZUxvY2soKSAKK1BBU1MgUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNv
dXJjZTogZ2V0UmVhZGVyKCkgd2l0aCBtb2RlIHNldCB0byBieW9iLCB0aGVuIHJlbGVhc2VMb2Nr
KCkgCitQQVNTIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IFRlc3QgdGhhdCBjbG9z
aW5nIGEgc3RyZWFtIGRvZXMgbm90IHJlbGVhc2UgYSByZWFkZXIgYXV0b21hdGljYWxseSAKK1BB
U1MgUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogVGVzdCB0aGF0IGNsb3NpbmcgYSBz
dHJlYW0gZG9lcyBub3QgcmVsZWFzZSBhIEJZT0IgcmVhZGVyIGF1dG9tYXRpY2FsbHkgCitQQVNT
IFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IFRlc3QgdGhhdCBlcnJvcmluZyBhIHN0
cmVhbSBkb2VzIG5vdCByZWxlYXNlIGEgcmVhZGVyIGF1dG9tYXRpY2FsbHkgCitQQVNTIFJlYWRh
YmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IFRlc3QgdGhhdCBlcnJvcmluZyBhIHN0cmVhbSBk
b2VzIG5vdCByZWxlYXNlIGEgQllPQiByZWFkZXIgYXV0b21hdGljYWxseSAKK1BBU1MgUmVhZGFi
bGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogcmVsZWFzZUxvY2soKSBvbiBSZWFkYWJsZVN0cmVh
bVJlYWRlciB3aXRoIHBlbmRpbmcgcmVhZCgpIG11c3QgdGhyb3cgCitQQVNTIFJlYWRhYmxlU3Ry
ZWFtIHdpdGggYnl0ZSBzb3VyY2U6IEF1dG9tYXRpYyBwdWxsKCkgYWZ0ZXIgc3RhcnQoKSAKK1BB
U1MgUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogQXV0b21hdGljIHB1bGwoKSBhZnRl
ciBzdGFydCgpIGFuZCByZWFkKCkgCitGQUlMIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3Vy
Y2U6IGF1dG9BbGxvY2F0ZUNodW5rU2l6ZSBhc3NlcnRfZXF1YWxzOiBwdWxsKCkgbXVzdCBoYXZl
IGJlZW4gaW52b2tlZCB0d2ljZSBleHBlY3RlZCAyIGJ1dCBnb3QgMQorUEFTUyBSZWFkYWJsZVN0
cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBNaXggb2YgYXV0byBhbGxvY2F0ZSBhbmQgQllPQiAKK1BB
U1MgUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogQXV0b21hdGljIHB1bGwoKSBhZnRl
ciBzdGFydCgpIGFuZCByZWFkKHZpZXcpIAorUEFTUyBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUg
c291cmNlOiBlbnF1ZXVlKCksIGdldFJlYWRlcigpLCB0aGVuIHJlYWQoKSAKK1BBU1MgUmVhZGFi
bGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogUHVzaCBzb3VyY2UgdGhhdCBkb2Vzbid0IHVuZGVy
c3RhbmQgcHVsbCBzaWduYWwgCitGQUlMIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6
IHB1bGwoKSBmdW5jdGlvbiBpcyBub3QgY2FsbGFibGUgYXNzZXJ0X3Rocm93c19qczogY29uc3Ry
dWN0b3Igc2hvdWxkIHRocm93IGZ1bmN0aW9uICIoKSA9PiBuZXcgUmVhZGFibGVTdHJlYW0oewor
ICAgIHB1bGw6ICdmb28nLAorICAgIHR5cGU6ICdieXRlcycKKyAgfSkiIGRpZCBub3QgdGhyb3cK
K1BBU1MgUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogZW5xdWV1ZSgpIHdpdGggVWlu
dDE2QXJyYXksIGdldFJlYWRlcigpLCB0aGVuIHJlYWQoKSAKK1BBU1MgUmVhZGFibGVTdHJlYW0g
d2l0aCBieXRlIHNvdXJjZTogZW5xdWV1ZSgpLCByZWFkKHZpZXcpIHBhcnRpYWxseSwgdGhlbiBy
ZWFkKCkgCitQQVNTIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IGdldFJlYWRlcigp
LCBlbnF1ZXVlKCksIGNsb3NlKCksIHRoZW4gcmVhZCgpIAorUEFTUyBSZWFkYWJsZVN0cmVhbSB3
aXRoIGJ5dGUgc291cmNlOiBlbnF1ZXVlKCksIGNsb3NlKCksIGdldFJlYWRlcigpLCB0aGVuIHJl
YWQoKSAKK0ZBSUwgUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogUmVzcG9uZCB0byBw
dWxsKCkgYnkgZW5xdWV1ZSgpIGFzc2VydF9lcXVhbHM6IGJ5b2JSZXF1ZXN0IG11c3QgYmUgbnVs
bCBleHBlY3RlZCAob2JqZWN0KSBudWxsIGJ1dCBnb3QgKHVuZGVmaW5lZCkgdW5kZWZpbmVkCitG
QUlMIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IFJlc3BvbmQgdG8gcHVsbCgpIGJ5
IGVucXVldWUoKSBhc3luY2hyb25vdXNseSBhc3NlcnRfZXF1YWxzOiBieW9iUmVxdWVzdCBzaG91
bGQgYmUgbnVsbCBleHBlY3RlZCAob2JqZWN0KSBudWxsIGJ1dCBnb3QgKHVuZGVmaW5lZCkgdW5k
ZWZpbmVkCitUSU1FT1VUIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IFJlc3BvbmQg
dG8gbXVsdGlwbGUgcHVsbCgpIGJ5IHNlcGFyYXRlIGVucXVldWUoKSBUZXN0IHRpbWVkIG91dAor
Tk9UUlVOIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IHJlYWQodmlldyksIHRoZW4g
cmVzcG9uZCgpIAorTk9UUlVOIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IHJlYWQo
dmlldyksIHRoZW4gcmVzcG9uZCgpIHdpdGggYSB0cmFuc2ZlcnJlZCBBcnJheUJ1ZmZlciAKK05P
VFJVTiBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiByZWFkKHZpZXcpLCB0aGVuIHJl
c3BvbmQoKSB3aXRoIHRvbyBiaWcgdmFsdWUgCitOT1RSVU4gUmVhZGFibGVTdHJlYW0gd2l0aCBi
eXRlIHNvdXJjZTogcmVzcG9uZCgzKSB0byByZWFkKHZpZXcpIHdpdGggMiBlbGVtZW50IFVpbnQx
NkFycmF5IGVucXVldWVzIHRoZSAxIGJ5dGUgcmVtYWluZGVyIAorTk9UUlVOIFJlYWRhYmxlU3Ry
ZWFtIHdpdGggYnl0ZSBzb3VyY2U6IGVucXVldWUoKSwgZ2V0UmVhZGVyKCksIHRoZW4gcmVhZCh2
aWV3KSAKK05PVFJVTiBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBlbnF1ZXVlKCks
IGdldFJlYWRlcigpLCB0aGVuIGNhbmNlbCgpIChtb2RlID0gbm90IEJZT0IpIAorTk9UUlVOIFJl
YWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IGVucXVldWUoKSwgZ2V0UmVhZGVyKCksIHRo
ZW4gY2FuY2VsKCkgKG1vZGUgPSBCWU9CKSAKK05PVFJVTiBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5
dGUgc291cmNlOiBnZXRSZWFkZXIoKSwgcmVhZCh2aWV3KSwgdGhlbiBjYW5jZWwoKSAKK05PVFJV
TiBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBjYW5jZWwoKSB3aXRoIHBhcnRpYWxs
eSBmaWxsZWQgcGVuZGluZyBwdWxsKCkgcmVxdWVzdCAKK05PVFJVTiBSZWFkYWJsZVN0cmVhbSB3
aXRoIGJ5dGUgc291cmNlOiBlbnF1ZXVlKCksIGdldFJlYWRlcigpLCB0aGVuIHJlYWQodmlldykg
d2hlcmUgdmlldy5idWZmZXIgaXMgbm90IGZ1bGx5IGNvdmVyZWQgYnkgdmlldyAKK05PVFJVTiBS
ZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBNdWx0aXBsZSBlbnF1ZXVlKCksIGdldFJl
YWRlcigpLCB0aGVuIHJlYWQodmlldykgCitOT1RSVU4gUmVhZGFibGVTdHJlYW0gd2l0aCBieXRl
IHNvdXJjZTogZW5xdWV1ZSgpLCBnZXRSZWFkZXIoKSwgdGhlbiByZWFkKHZpZXcpIHdpdGggYSBi
aWdnZXIgdmlldyAKK05PVFJVTiBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBlbnF1
ZXVlKCksIGdldFJlYWRlcigpLCB0aGVuIHJlYWQodmlldykgd2l0aCBzbWFsbGVyIHZpZXdzIAor
Tk9UUlVOIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IGVucXVldWUoKSAxIGJ5dGUs
IGdldFJlYWRlcigpLCB0aGVuIHJlYWQodmlldykgd2l0aCBVaW50MTZBcnJheSAKK05PVFJVTiBS
ZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBlbnF1ZXVlKCkgMyBieXRlLCBnZXRSZWFk
ZXIoKSwgdGhlbiByZWFkKHZpZXcpIHdpdGggMi1lbGVtZW50IFVpbnQxNkFycmF5IAorTk9UUlVO
IFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IHJlYWQodmlldykgd2l0aCBVaW50MTZB
cnJheSBvbiBjbG9zZSgpLWQgc3RyZWFtIHdpdGggMSBieXRlIGVucXVldWUoKS1kIG11c3QgZmFp
bCAKK05PVFJVTiBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBBIHN0cmVhbSBtdXN0
IGJlIGVycm9yZWQgaWYgY2xvc2UoKS1kIGJlZm9yZSBmdWxmaWxsaW5nIHJlYWQodmlldykgd2l0
aCBVaW50MTZBcnJheSAKK1BBU1MgUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogVGhy
b3cgaWYgY2xvc2UoKS1lZCBtb3JlIHRoYW4gb25jZSAKK1BBU1MgUmVhZGFibGVTdHJlYW0gd2l0
aCBieXRlIHNvdXJjZTogVGhyb3cgb24gZW5xdWV1ZSgpIGFmdGVyIGNsb3NlKCkgCitOT1RSVU4g
UmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogcmVhZCh2aWV3KSwgdGhlbiByZXNwb25k
KCkgYW5kIGNsb3NlKCkgaW4gcHVsbCgpIAorTk9UUlVOIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0
ZSBzb3VyY2U6IHJlYWQodmlldykgd2l0aCBVaW50MzJBcnJheSwgdGhlbiBmaWxsIGl0IGJ5IG11
bHRpcGxlIHJlc3BvbmQoKSBjYWxscyAKK05PVFJVTiBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUg
c291cmNlOiByZWFkKCkgdHdpY2UsIHRoZW4gZW5xdWV1ZSgpIHR3aWNlIAorTk9UUlVOIFJlYWRh
YmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IE11bHRpcGxlIHJlYWQodmlldyksIGNsb3NlKCkg
YW5kIHJlc3BvbmQoKSAKK05PVFJVTiBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBN
dWx0aXBsZSByZWFkKHZpZXcpLCBiaWcgZW5xdWV1ZSgpIAorTk9UUlVOIFJlYWRhYmxlU3RyZWFt
IHdpdGggYnl0ZSBzb3VyY2U6IE11bHRpcGxlIHJlYWQodmlldykgYW5kIG11bHRpcGxlIGVucXVl
dWUoKSAKK05PVFJVTiBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiByZWFkKHZpZXcp
IHdpdGggcGFzc2luZyB1bmRlZmluZWQgYXMgdmlldyBtdXN0IGZhaWwgCitOT1RSVU4gUmVhZGFi
bGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogcmVhZCh2aWV3KSB3aXRoIHBhc3NpbmcgYW4gZW1w
dHkgb2JqZWN0IGFzIHZpZXcgbXVzdCBmYWlsIAorTk9UUlVOIFJlYWRhYmxlU3RyZWFtIHdpdGgg
Ynl0ZSBzb3VyY2U6IEV2ZW4gcmVhZCh2aWV3KSB3aXRoIHBhc3NpbmcgQXJyYXlCdWZmZXJWaWV3
IGxpa2Ugb2JqZWN0IGFzIHZpZXcgbXVzdCBmYWlsIAorTk9UUlVOIFJlYWRhYmxlU3RyZWFtIHdp
dGggYnl0ZSBzb3VyY2U6IHJlYWQoKSBvbiBhbiBlcnJvcmVkIHN0cmVhbSAKK05PVFJVTiBSZWFk
YWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiByZWFkKCksIHRoZW4gZXJyb3IoKSAKK05PVFJV
TiBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiByZWFkKHZpZXcpIG9uIGFuIGVycm9y
ZWQgc3RyZWFtIAorTk9UUlVOIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IHJlYWQo
dmlldyksIHRoZW4gZXJyb3IoKSAKK05PVFJVTiBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291
cmNlOiBUaHJvd2luZyBpbiBwdWxsIGZ1bmN0aW9uIG11c3QgZXJyb3IgdGhlIHN0cmVhbSAKK05P
VFJVTiBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBUaHJvd2luZyBpbiBwdWxsIGlu
IHJlc3BvbnNlIHRvIHJlYWQoKSBtdXN0IGJlIGlnbm9yZWQgaWYgdGhlIHN0cmVhbSBpcyBlcnJv
cmVkIGluIGl0IAorTk9UUlVOIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IFRocm93
aW5nIGluIHB1bGwgaW4gcmVzcG9uc2UgdG8gcmVhZCh2aWV3KSBmdW5jdGlvbiBtdXN0IGVycm9y
IHRoZSBzdHJlYW0gCitOT1RSVU4gUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogVGhy
b3dpbmcgaW4gcHVsbCBpbiByZXNwb25zZSB0byByZWFkKHZpZXcpIG11c3QgYmUgaWdub3JlZCBp
ZiB0aGUgc3RyZWFtIGlzIGVycm9yZWQgaW4gaXQgCitOT1RSVU4gY2FsbGluZyByZXNwb25kKCkg
dHdpY2Ugb24gdGhlIHNhbWUgYnlvYlJlcXVlc3Qgc2hvdWxkIHRocm93IAorTk9UUlVOIGNhbGxp
bmcgcmVzcG9uZFdpdGhOZXdWaWV3KCkgdHdpY2Ugb24gdGhlIHNhbWUgYnlvYlJlcXVlc3Qgc2hv
dWxkIHRocm93IAorTk9UUlVOIGNhbGxpbmcgcmVzcG9uZCgwKSB0d2ljZSBvbiB0aGUgc2FtZSBi
eW9iUmVxdWVzdCBzaG91bGQgdGhyb3cgZXZlbiB3aGVuIGNsb3NlZCAKK05PVFJVTiBwdWxsKCkg
cmVzb2x2aW5nIHNob3VsZCBub3QgbWFrZSByZWxlYXNlTG9jaygpIHBvc3NpYmxlIAorTk9UUlVO
IFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IGRlZmF1bHQgcmVhZGVyICsgYXV0b0Fs
bG9jYXRlQ2h1bmtTaXplICsgYnlvYlJlcXVlc3QgaW50ZXJhY3Rpb24gCitQQVNTIFJlYWRhYmxl
U3RyZWFtQllPQlJlYWRlciBjYW4gYmUgY29uc3RydWN0ZWQgZGlyZWN0bHkgCitQQVNTIFJlYWRh
YmxlU3RyZWFtQllPQlJlYWRlciBjb25zdHJ1Y3RvciByZXF1aXJlcyBhIFJlYWRhYmxlU3RyZWFt
IGFyZ3VtZW50IAorUEFTUyBSZWFkYWJsZVN0cmVhbUJZT0JSZWFkZXIgY29uc3RydWN0b3IgcmVx
dWlyZXMgYW4gdW5sb2NrZWQgUmVhZGFibGVTdHJlYW0gCitQQVNTIFJlYWRhYmxlU3RyZWFtQllP
QlJlYWRlciBjb25zdHJ1Y3RvciByZXF1aXJlcyBhIFJlYWRhYmxlU3RyZWFtIHdpdGggdHlwZSAi
Ynl0ZXMiIAorUEFTUyBSZWFkYWJsZVN0cmVhbSBjb25zdHJ1Y3RvciBzaG91bGQgbm90IGFjY2Vw
dCBhIHN0cmF0ZWd5IHdpdGggYSBzaXplIGRlZmluZWQgaWYgdHlwZSBpcyAiYnl0ZXMiIAorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL2dlbmVyYWwuYW55Lndvcmtlci5odG1sIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxl
LWJ5dGUtc3RyZWFtcy9nZW5lcmFsLmFueS53b3JrZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMzgyOTEz
NTI4ZTY5M2IzYTVkNTZjNjYwYTQ1MDYwOTgwYjU0OGMzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxl
LWJ5dGUtc3RyZWFtcy9nZW5lcmFsLmFueS53b3JrZXIuaHRtbApAQCAtMCwwICsxIEBACis8IS0t
IFRoaXMgZmlsZSBpcyByZXF1aXJlZCBmb3IgV2ViS2l0IHRlc3QgaW5mcmFzdHJ1Y3R1cmUgdG8g
cnVuIHRoZSB0ZW1wbGF0ZWQgdGVzdCAtLT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL2dlbmVyYWwuZGVkaWNhdGVkd29ya2VyLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMvZ2VuZXJhbC5kZWRpY2F0ZWR3b3JrZXItZXhwZWN0
ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMzk4YzczMTEyYjdkNzE5YWRj
YjVjYzc0MjhmYjZiZmZiMWViZTRjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMvZ2VuZXJhbC5kZWRpY2F0ZWR3b3JrZXItZXhw
ZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsODQgKzAsMCBAQAotCi1IYXJuZXNzIEVycm9y
IChUSU1FT1VUKSwgbWVzc2FnZSA9IG51bGwKLQotUEFTUyBnZXRSZWFkZXIoe21vZGU6ICJieW9i
In0pIHRocm93cyBvbiBub24tYnl0ZXMgc3RyZWFtcyAKLVBBU1MgUmVhZGFibGVTdHJlYW0gd2l0
aCBieXRlIHNvdXJjZSBjYW4gYmUgY29uc3RydWN0ZWQgd2l0aCBubyBlcnJvcnMgCi1QQVNTIGdl
dFJlYWRlcih7bW9kZX0pIG11c3QgcGVyZm9ybSBUb1N0cmluZygpIAotUEFTUyBSZWFkYWJsZVN0
cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBDb25zdHJ1Y3QgYW5kIGV4cGVjdCBzdGFydCBhbmQgcHVs
bCBiZWluZyBjYWxsZWQgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IE5v
IGF1dG9tYXRpYyBwdWxsIGNhbGwgaWYgc3RhcnQgZG9lc24ndCBmaW5pc2ggCi1QQVNTIFJlYWRh
YmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IENvbnN0cnVjdCB3aXRoIGhpZ2hXYXRlck1hcmsg
b2YgMCAKLVBBU1MgUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogZGVzaXJlZFNpemUg
d2hlbiBjbG9zZWQgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IGRlc2ly
ZWRTaXplIHdoZW4gZXJyb3JlZCAKLVBBU1MgUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJj
ZTogZ2V0UmVhZGVyKCksIHRoZW4gcmVsZWFzZUxvY2soKSAKLVBBU1MgUmVhZGFibGVTdHJlYW0g
d2l0aCBieXRlIHNvdXJjZTogZ2V0UmVhZGVyKCkgd2l0aCBtb2RlIHNldCB0byBieW9iLCB0aGVu
IHJlbGVhc2VMb2NrKCkgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IFRl
c3QgdGhhdCBjbG9zaW5nIGEgc3RyZWFtIGRvZXMgbm90IHJlbGVhc2UgYSByZWFkZXIgYXV0b21h
dGljYWxseSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogVGVzdCB0aGF0
IGNsb3NpbmcgYSBzdHJlYW0gZG9lcyBub3QgcmVsZWFzZSBhIEJZT0IgcmVhZGVyIGF1dG9tYXRp
Y2FsbHkgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IFRlc3QgdGhhdCBl
cnJvcmluZyBhIHN0cmVhbSBkb2VzIG5vdCByZWxlYXNlIGEgcmVhZGVyIGF1dG9tYXRpY2FsbHkg
Ci1QQVNTIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IFRlc3QgdGhhdCBlcnJvcmlu
ZyBhIHN0cmVhbSBkb2VzIG5vdCByZWxlYXNlIGEgQllPQiByZWFkZXIgYXV0b21hdGljYWxseSAK
LVBBU1MgUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogcmVsZWFzZUxvY2soKSBvbiBS
ZWFkYWJsZVN0cmVhbVJlYWRlciB3aXRoIHBlbmRpbmcgcmVhZCgpIG11c3QgdGhyb3cgCi1QQVNT
IFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IEF1dG9tYXRpYyBwdWxsKCkgYWZ0ZXIg
c3RhcnQoKSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogQXV0b21hdGlj
IHB1bGwoKSBhZnRlciBzdGFydCgpIGFuZCByZWFkKCkgCi1GQUlMIFJlYWRhYmxlU3RyZWFtIHdp
dGggYnl0ZSBzb3VyY2U6IGF1dG9BbGxvY2F0ZUNodW5rU2l6ZSBhc3NlcnRfZXF1YWxzOiBwdWxs
KCkgbXVzdCBoYXZlIGJlZW4gaW52b2tlZCB0d2ljZSBleHBlY3RlZCAyIGJ1dCBnb3QgMQotUEFT
UyBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBNaXggb2YgYXV0byBhbGxvY2F0ZSBh
bmQgQllPQiAKLVBBU1MgUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogQXV0b21hdGlj
IHB1bGwoKSBhZnRlciBzdGFydCgpIGFuZCByZWFkKHZpZXcpIAotUEFTUyBSZWFkYWJsZVN0cmVh
bSB3aXRoIGJ5dGUgc291cmNlOiBlbnF1ZXVlKCksIGdldFJlYWRlcigpLCB0aGVuIHJlYWQoKSAK
LVBBU1MgUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogUHVzaCBzb3VyY2UgdGhhdCBk
b2Vzbid0IHVuZGVyc3RhbmQgcHVsbCBzaWduYWwgCi1GQUlMIFJlYWRhYmxlU3RyZWFtIHdpdGgg
Ynl0ZSBzb3VyY2U6IHB1bGwoKSBmdW5jdGlvbiBpcyBub3QgY2FsbGFibGUgYXNzZXJ0X3Rocm93
czogY29uc3RydWN0b3Igc2hvdWxkIHRocm93IGZ1bmN0aW9uICIoKSA9PiBuZXcgUmVhZGFibGVT
dHJlYW0oewotICAgIHB1bGw6ICdmb28nLAotICAgIHR5cGU6ICdieXRlcycKLSAgfSkiIGRpZCBu
b3QgdGhyb3cKLVBBU1MgUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogZW5xdWV1ZSgp
IHdpdGggVWludDE2QXJyYXksIGdldFJlYWRlcigpLCB0aGVuIHJlYWQoKSAKLVBBU1MgUmVhZGFi
bGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogZW5xdWV1ZSgpLCByZWFkKHZpZXcpIHBhcnRpYWxs
eSwgdGhlbiByZWFkKCkgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IGdl
dFJlYWRlcigpLCBlbnF1ZXVlKCksIGNsb3NlKCksIHRoZW4gcmVhZCgpIAotUEFTUyBSZWFkYWJs
ZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBlbnF1ZXVlKCksIGNsb3NlKCksIGdldFJlYWRlcigp
LCB0aGVuIHJlYWQoKSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogUmVz
cG9uZCB0byBwdWxsKCkgYnkgZW5xdWV1ZSgpIAotUEFTUyBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5
dGUgc291cmNlOiBSZXNwb25kIHRvIHB1bGwoKSBieSBlbnF1ZXVlKCkgYXN5bmNocm9ub3VzbHkg
Ci1USU1FT1VUIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IFJlc3BvbmQgdG8gbXVs
dGlwbGUgcHVsbCgpIGJ5IHNlcGFyYXRlIGVucXVldWUoKSBUZXN0IHRpbWVkIG91dAotTk9UUlVO
IFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IHJlYWQodmlldyksIHRoZW4gcmVzcG9u
ZCgpIAotTk9UUlVOIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IHJlYWQodmlldyks
IHRoZW4gcmVzcG9uZCgpIHdpdGggYSB0cmFuc2ZlcnJlZCBBcnJheUJ1ZmZlciAKLU5PVFJVTiBS
ZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiByZWFkKHZpZXcpLCB0aGVuIHJlc3BvbmQo
KSB3aXRoIHRvbyBiaWcgdmFsdWUgCi1OT1RSVU4gUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNv
dXJjZTogcmVzcG9uZCgzKSB0byByZWFkKHZpZXcpIHdpdGggMiBlbGVtZW50IFVpbnQxNkFycmF5
IGVucXVldWVzIHRoZSAxIGJ5dGUgcmVtYWluZGVyIAotTk9UUlVOIFJlYWRhYmxlU3RyZWFtIHdp
dGggYnl0ZSBzb3VyY2U6IGVucXVldWUoKSwgZ2V0UmVhZGVyKCksIHRoZW4gcmVhZCh2aWV3KSAK
LU5PVFJVTiBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBlbnF1ZXVlKCksIGdldFJl
YWRlcigpLCB0aGVuIGNhbmNlbCgpIChtb2RlID0gbm90IEJZT0IpIAotTk9UUlVOIFJlYWRhYmxl
U3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IGVucXVldWUoKSwgZ2V0UmVhZGVyKCksIHRoZW4gY2Fu
Y2VsKCkgKG1vZGUgPSBCWU9CKSAKLU5PVFJVTiBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291
cmNlOiBnZXRSZWFkZXIoKSwgcmVhZCh2aWV3KSwgdGhlbiBjYW5jZWwoKSAKLU5PVFJVTiBSZWFk
YWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBjYW5jZWwoKSB3aXRoIHBhcnRpYWxseSBmaWxs
ZWQgcGVuZGluZyBwdWxsKCkgcmVxdWVzdCAKLU5PVFJVTiBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5
dGUgc291cmNlOiBlbnF1ZXVlKCksIGdldFJlYWRlcigpLCB0aGVuIHJlYWQodmlldykgd2hlcmUg
dmlldy5idWZmZXIgaXMgbm90IGZ1bGx5IGNvdmVyZWQgYnkgdmlldyAKLU5PVFJVTiBSZWFkYWJs
ZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBNdWx0aXBsZSBlbnF1ZXVlKCksIGdldFJlYWRlcigp
LCB0aGVuIHJlYWQodmlldykgCi1OT1RSVU4gUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJj
ZTogZW5xdWV1ZSgpLCBnZXRSZWFkZXIoKSwgdGhlbiByZWFkKHZpZXcpIHdpdGggYSBiaWdnZXIg
dmlldyAKLU5PVFJVTiBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBlbnF1ZXVlKCks
IGdldFJlYWRlcigpLCB0aGVuIHJlYWQodmlldykgd2l0aCBhIHNtYWxsZXIgdmlld3MgCi1OT1RS
VU4gUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogZW5xdWV1ZSgpIDEgYnl0ZSwgZ2V0
UmVhZGVyKCksIHRoZW4gcmVhZCh2aWV3KSB3aXRoIFVpbnQxNkFycmF5IAotTk9UUlVOIFJlYWRh
YmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IGVucXVldWUoKSAzIGJ5dGUsIGdldFJlYWRlcigp
LCB0aGVuIHJlYWQodmlldykgd2l0aCAyLWVsZW1lbnQgVWludDE2QXJyYXkgCi1OT1RSVU4gUmVh
ZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogcmVhZCh2aWV3KSB3aXRoIFVpbnQxNkFycmF5
IG9uIGNsb3NlKCktZCBzdHJlYW0gd2l0aCAxIGJ5dGUgZW5xdWV1ZSgpLWQgbXVzdCBmYWlsIAot
Tk9UUlVOIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IEEgc3RyZWFtIG11c3QgYmUg
ZXJyb3JlZCBpZiBjbG9zZSgpLWQgYmVmb3JlIGZ1bGZpbGxpbmcgcmVhZCh2aWV3KSB3aXRoIFVp
bnQxNkFycmF5IAotUEFTUyBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBUaHJvdyBp
ZiBjbG9zZSgpLWVkIG1vcmUgdGhhbiBvbmNlIAotUEFTUyBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5
dGUgc291cmNlOiBUaHJvdyBvbiBlbnF1ZXVlKCkgYWZ0ZXIgY2xvc2UoKSAKLU5PVFJVTiBSZWFk
YWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiByZWFkKHZpZXcpLCB0aGVuIHJlc3BvbmQoKSBh
bmQgY2xvc2UoKSBpbiBwdWxsKCkgCi1OT1RSVU4gUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNv
dXJjZTogcmVhZCh2aWV3KSB3aXRoIFVpbnQzMkFycmF5LCB0aGVuIGZpbGwgaXQgYnkgbXVsdGlw
bGUgcmVzcG9uZCgpIGNhbGxzIAotTk9UUlVOIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3Vy
Y2U6IHJlYWQoKSB0d2ljZSwgdGhlbiBlbnF1ZXVlKCkgdHdpY2UgCi1OT1RSVU4gUmVhZGFibGVT
dHJlYW0gd2l0aCBieXRlIHNvdXJjZTogTXVsdGlwbGUgcmVhZCh2aWV3KSwgY2xvc2UoKSBhbmQg
cmVzcG9uZCgpIAotTk9UUlVOIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IE11bHRp
cGxlIHJlYWQodmlldyksIGJpZyBlbnF1ZXVlKCkgCi1OT1RSVU4gUmVhZGFibGVTdHJlYW0gd2l0
aCBieXRlIHNvdXJjZTogTXVsdGlwbGUgcmVhZCh2aWV3KSBhbmQgbXVsdGlwbGUgZW5xdWV1ZSgp
IAotTk9UUlVOIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IHJlYWQodmlldykgd2l0
aCBwYXNzaW5nIHVuZGVmaW5lZCBhcyB2aWV3IG11c3QgZmFpbCAKLU5PVFJVTiBSZWFkYWJsZVN0
cmVhbSB3aXRoIGJ5dGUgc291cmNlOiByZWFkKHZpZXcpIHdpdGggemVyby1sZW5ndGggdmlldyBt
dXN0IGZhaWwgCi1OT1RSVU4gUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogcmVhZCh2
aWV3KSB3aXRoIHBhc3NpbmcgYW4gZW1wdHkgb2JqZWN0IGFzIHZpZXcgbXVzdCBmYWlsIAotTk9U
UlVOIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IEV2ZW4gcmVhZCh2aWV3KSB3aXRo
IHBhc3NpbmcgQXJyYXlCdWZmZXJWaWV3IGxpa2Ugb2JqZWN0IGFzIHZpZXcgbXVzdCBmYWlsIAot
Tk9UUlVOIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IHJlYWQoKSBvbiBhbiBlcnJv
cmVkIHN0cmVhbSAKLU5PVFJVTiBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiByZWFk
KCksIHRoZW4gZXJyb3IoKSAKLU5PVFJVTiBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNl
OiByZWFkKHZpZXcpIG9uIGFuIGVycm9yZWQgc3RyZWFtIAotTk9UUlVOIFJlYWRhYmxlU3RyZWFt
IHdpdGggYnl0ZSBzb3VyY2U6IHJlYWQodmlldyksIHRoZW4gZXJyb3IoKSAKLU5PVFJVTiBSZWFk
YWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBUaHJvd2luZyBpbiBwdWxsIGZ1bmN0aW9uIG11
c3QgZXJyb3IgdGhlIHN0cmVhbSAKLU5PVFJVTiBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291
cmNlOiBUaHJvd2luZyBpbiBwdWxsIGluIHJlc3BvbnNlIHRvIHJlYWQoKSBtdXN0IGJlIGlnbm9y
ZWQgaWYgdGhlIHN0cmVhbSBpcyBlcnJvcmVkIGluIGl0IAotTk9UUlVOIFJlYWRhYmxlU3RyZWFt
IHdpdGggYnl0ZSBzb3VyY2U6IFRocm93aW5nIGluIHB1bGwgaW4gcmVzcG9uc2UgdG8gcmVhZCh2
aWV3KSBmdW5jdGlvbiBtdXN0IGVycm9yIHRoZSBzdHJlYW0gCi1OT1RSVU4gUmVhZGFibGVTdHJl
YW0gd2l0aCBieXRlIHNvdXJjZTogVGhyb3dpbmcgaW4gcHVsbCBpbiByZXNwb25zZSB0byByZWFk
KHZpZXcpIG11c3QgYmUgaWdub3JlZCBpZiB0aGUgc3RyZWFtIGlzIGVycm9yZWQgaW4gaXQgCi1O
T1RSVU4gY2FsbGluZyByZXNwb25kKCkgdHdpY2Ugb24gdGhlIHNhbWUgYnlvYlJlcXVlc3Qgc2hv
dWxkIHRocm93IAotTk9UUlVOIGNhbGxpbmcgcmVzcG9uZFdpdGhOZXdWaWV3KCkgdHdpY2Ugb24g
dGhlIHNhbWUgYnlvYlJlcXVlc3Qgc2hvdWxkIHRocm93IAotTk9UUlVOIGNhbGxpbmcgcmVzcG9u
ZCgwKSB0d2ljZSBvbiB0aGUgc2FtZSBieW9iUmVxdWVzdCBzaG91bGQgdGhyb3cgZXZlbiB3aGVu
IGNsb3NlZCAKLU5PVFJVTiBwdWxsKCkgcmVzb2x2aW5nIHNob3VsZCBub3QgbWFrZSByZWxlYXNl
TG9jaygpIHBvc3NpYmxlIAotTk9UUlVOIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6
IGRlZmF1bHQgcmVhZGVyICsgYXV0b0FsbG9jYXRlQ2h1bmtTaXplICsgYnlvYlJlcXVlc3QgaW50
ZXJhY3Rpb24gCi1QQVNTIFJlYWRhYmxlU3RyZWFtQllPQlJlYWRlciBjYW4gYmUgY29uc3RydWN0
ZWQgZGlyZWN0bHkgCi1QQVNTIFJlYWRhYmxlU3RyZWFtQllPQlJlYWRlciBjb25zdHJ1Y3RvciBy
ZXF1aXJlcyBhIFJlYWRhYmxlU3RyZWFtIGFyZ3VtZW50IAotUEFTUyBSZWFkYWJsZVN0cmVhbUJZ
T0JSZWFkZXIgY29uc3RydWN0b3IgcmVxdWlyZXMgYW4gdW5sb2NrZWQgUmVhZGFibGVTdHJlYW0g
Ci1QQVNTIFJlYWRhYmxlU3RyZWFtQllPQlJlYWRlciBjb25zdHJ1Y3RvciByZXF1aXJlcyBhIFJl
YWRhYmxlU3RyZWFtIHdpdGggdHlwZSAiYnl0ZXMiIAotUEFTUyBSZWFkYWJsZVN0cmVhbSBjb25z
dHJ1Y3RvciBzaG91bGQgbm90IGFjY2VwdCBhIHN0cmF0ZWd5IHdpdGggYSBzaXplIGRlZmluZWQg
aWYgdHlwZSBpcyAiYnl0ZXMiIAotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL2dlbmVy
YWwuZGVkaWNhdGVkd29ya2VyLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL2dlbmVyYWwuZGVkaWNh
dGVkd29ya2VyLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg2ZTQ4MDEzOWU4
OTE3MmNjY2QyYTA4ZjE0MTdkZDMzOThmNTMyOGEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFtcy9nZW5lcmFsLmRlZGljYXRlZHdv
cmtlci5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+
Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08dGl0bGU+Z2VuZXJhbC5qcyBkZWRpY2F0ZWQgd29y
a2VyIHdyYXBwZXIgZmlsZTwvdGl0bGU+Ci0KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
cmVwb3J0LmpzIj48L3NjcmlwdD4KLQotPHNjcmlwdD4KLSd1c2Ugc3RyaWN0JzsKLWZldGNoX3Rl
c3RzX2Zyb21fd29ya2VyKG5ldyBXb3JrZXIoJ2dlbmVyYWwuanMnKSk7Ci08L3NjcmlwdD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMvZ2VuZXJhbC5odG1sIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFt
cy9nZW5lcmFsLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcxN2YzODYzODcy
MjliNzUxZmVjM2UxYzE5N2M3MDNiMWU4NzdiZmIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFtcy9nZW5lcmFsLmh0bWwKKysrIC9k
ZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9
InV0Zi04Ij4KLTx0aXRsZT5nZW5lcmFsLmpzIGJyb3dzZXIgY29udGV4dCB3cmFwcGVyIGZpbGU8
L3RpdGxlPgotCi08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3Jp
cHQ+Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3Jp
cHQ+Ci0KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvcnMtdXRpbHMuanMiPjwvc2NyaXB0Pgot
PHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KLQotPHNj
cmlwdCBzcmM9ImdlbmVyYWwuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3Ry
ZWFtcy9nZW5lcmFsLmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFtcy9nZW5lcmFsLmpzCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAzOWRkNzA4MGJjN2ExMWRjM2E0Mzg3MjExN2JjMWY5NDcwOGYy
OGVkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1i
eXRlLXN0cmVhbXMvZ2VuZXJhbC5qcworKysgL2Rldi9udWxsCkBAIC0xLDIxMjYgKzAsMCBAQAot
J3VzZSBzdHJpY3QnOwotCi1pZiAoc2VsZi5pbXBvcnRTY3JpcHRzKSB7Ci0gIHNlbGYuaW1wb3J0
U2NyaXB0cygnLi4vcmVzb3VyY2VzL3JzLXV0aWxzLmpzJyk7Ci0gIHNlbGYuaW1wb3J0U2NyaXB0
cygnLi4vcmVzb3VyY2VzL3Rlc3QtdXRpbHMuanMnKTsKLSAgc2VsZi5pbXBvcnRTY3JpcHRzKCcv
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzJyk7Ci19Ci0KLWNvbnN0IGVycm9yMSA9IG5ldyBFcnJv
cignZXJyb3IxJyk7Ci1lcnJvcjEubmFtZSA9ICdlcnJvcjEnOwotCi10ZXN0KCgpID0+IHsKLSAg
YXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IG5ldyBSZWFkYWJsZVN0cmVhbSgp
LmdldFJlYWRlcih7IG1vZGU6ICdieW9iJyB9KSk7Ci19LCAnZ2V0UmVhZGVyKHttb2RlOiAiYnlv
YiJ9KSB0aHJvd3Mgb24gbm9uLWJ5dGVzIHN0cmVhbXMnKTsKLQotCi10ZXN0KCgpID0+IHsKLSAg
Ly8gQ29uc3RydWN0aW5nIFJlYWRhYmxlU3RyZWFtIHdpdGggYW4gZW1wdHkgdW5kZXJseWluZyBi
eXRlIHNvdXJjZSBvYmplY3QgYXMgcGFyYW1ldGVyIHNob3VsZG4ndCB0aHJvdy4KLSAgbmV3IFJl
YWRhYmxlU3RyZWFtKHsgdHlwZTogJ2J5dGVzJyB9KS5nZXRSZWFkZXIoeyBtb2RlOiAnYnlvYicg
fSk7Ci0gIC8vIENvbnN0cnVjdG9yIG11c3QgcGVyZm9ybSBUb1N0cmluZyh0eXBlKS4KLSAgbmV3
IFJlYWRhYmxlU3RyZWFtKHsgdHlwZTogeyB0b1N0cmluZygpIHtyZXR1cm4gJ2J5dGVzJzt9IH0g
fSkKLSAgICAuZ2V0UmVhZGVyKHsgbW9kZTogJ2J5b2InIH0pOwotICBuZXcgUmVhZGFibGVTdHJl
YW0oeyB0eXBlOiB7IHRvU3RyaW5nOiBudWxsLCB2YWx1ZU9mKCkge3JldHVybiAnYnl0ZXMnO30g
fSB9KQotICAgIC5nZXRSZWFkZXIoeyBtb2RlOiAnYnlvYicgfSk7Ci19LCAnUmVhZGFibGVTdHJl
YW0gd2l0aCBieXRlIHNvdXJjZSBjYW4gYmUgY29uc3RydWN0ZWQgd2l0aCBubyBlcnJvcnMnKTsK
LQotdGVzdCgoKSA9PiB7Ci0gIGNvbnN0IFJlYWRhYmxlU3RyZWFtQllPQlJlYWRlciA9IG5ldyBS
ZWFkYWJsZVN0cmVhbSh7IHR5cGU6ICdieXRlcycgfSkuZ2V0UmVhZGVyKHsgbW9kZTogJ2J5b2In
IH0pLmNvbnN0cnVjdG9yOwotICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7IHR5cGU6
ICdieXRlcycgfSk7Ci0KLSAgbGV0IHJlYWRlciA9IHJzLmdldFJlYWRlcih7IG1vZGU6IHsgdG9T
dHJpbmcoKSB7IHJldHVybiAnYnlvYic7IH0gfSB9KTsKLSAgYXNzZXJ0X3RydWUocmVhZGVyIGlu
c3RhbmNlb2YgUmVhZGFibGVTdHJlYW1CWU9CUmVhZGVyLCAnbXVzdCBnaXZlIGEgQllPQiByZWFk
ZXInKTsKLSAgcmVhZGVyLnJlbGVhc2VMb2NrKCk7Ci0KLSAgcmVhZGVyID0gcnMuZ2V0UmVhZGVy
KHsgbW9kZTogeyB0b1N0cmluZzogbnVsbCwgdmFsdWVPZigpIHtyZXR1cm4gJ2J5b2InO30gfSB9
KTsKLSAgYXNzZXJ0X3RydWUocmVhZGVyIGluc3RhbmNlb2YgUmVhZGFibGVTdHJlYW1CWU9CUmVh
ZGVyLCAnbXVzdCBnaXZlIGEgQllPQiByZWFkZXInKTsKLSAgcmVhZGVyLnJlbGVhc2VMb2NrKCk7
Ci0KLSAgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKHsgbW9kZTogJ2J5b2InLCBub3Rtb2RlOiAnaWdu
b3JlZCcgfSk7Ci0gIGFzc2VydF90cnVlKHJlYWRlciBpbnN0YW5jZW9mIFJlYWRhYmxlU3RyZWFt
QllPQlJlYWRlciwgJ211c3QgZ2l2ZSBhIEJZT0IgcmVhZGVyJyk7Ci19LCAnZ2V0UmVhZGVyKHtt
b2RlfSkgbXVzdCBwZXJmb3JtIFRvU3RyaW5nKCknKTsKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsK
LSAgbGV0IHN0YXJ0Q2FsbGVkID0gZmFsc2U7Ci0gIGxldCBzdGFydENhbGxlZEJlZm9yZVB1bGwg
PSBmYWxzZTsKLSAgbGV0IGRlc2lyZWRTaXplOwotICBsZXQgY29udHJvbGxlcjsKLQotICBsZXQg
cmVzb2x2ZVRlc3RQcm9taXNlOwotICBjb25zdCB0ZXN0UHJvbWlzZSA9IG5ldyBQcm9taXNlKHJl
c29sdmUgPT4gewotICAgIHJlc29sdmVUZXN0UHJvbWlzZSA9IHJlc29sdmU7Ci0gIH0pOwotCi0g
IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgY29udHJvbGxlciA9
IGM7Ci0gICAgICBzdGFydENhbGxlZCA9IHRydWU7Ci0gICAgfSwKLSAgICBwdWxsKCkgewotICAg
ICAgc3RhcnRDYWxsZWRCZWZvcmVQdWxsID0gc3RhcnRDYWxsZWQ7Ci0gICAgICBkZXNpcmVkU2l6
ZSA9IGNvbnRyb2xsZXIuZGVzaXJlZFNpemU7Ci0gICAgICByZXNvbHZlVGVzdFByb21pc2UoKTsK
LSAgICB9LAotICAgIHR5cGU6ICdieXRlcycKLSAgfSwgewotICAgIGhpZ2hXYXRlck1hcms6IDI1
NgotICB9KTsKLQotICByZXR1cm4gdGVzdFByb21pc2UudGhlbigoKSA9PiB7Ci0gICAgYXNzZXJ0
X3RydWUoc3RhcnRDYWxsZWRCZWZvcmVQdWxsLCAnc3RhcnQgc2hvdWxkIGJlIGNhbGxlZCBiZWZv
cmUgcHVsbCcpOwotICAgIGFzc2VydF9lcXVhbHMoZGVzaXJlZFNpemUsIDI1NiwgJ2Rlc2lyZWRT
aXplIHNob3VsZCBlcXVhbCBoaWdoV2F0ZXJNYXJrJyk7Ci0gIH0pOwotCi19LCAnUmVhZGFibGVT
dHJlYW0gd2l0aCBieXRlIHNvdXJjZTogQ29uc3RydWN0IGFuZCBleHBlY3Qgc3RhcnQgYW5kIHB1
bGwgYmVpbmcgY2FsbGVkJyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0gIGxldCBwdWxsQ291
bnQgPSAwOwotICBsZXQgY2hlY2tlZE5vUHVsbCA9IGZhbHNlOwotCi0gIGxldCByZXNvbHZlVGVz
dFByb21pc2U7Ci0gIGNvbnN0IHRlc3RQcm9taXNlID0gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7
Ci0gICAgcmVzb2x2ZVRlc3RQcm9taXNlID0gcmVzb2x2ZTsKLSAgfSk7Ci0gIGxldCByZXNvbHZl
U3RhcnRQcm9taXNlOwotCi0gIG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoKSB7Ci0g
ICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7Ci0gICAgICAgIHJlc29sdmVTdGFy
dFByb21pc2UgPSByZXNvbHZlOwotICAgICAgfSk7Ci0gICAgfSwKLSAgICBwdWxsKCkgewotICAg
ICAgaWYgKGNoZWNrZWROb1B1bGwpIHsKLSAgICAgICAgcmVzb2x2ZVRlc3RQcm9taXNlKCk7Ci0g
ICAgICB9Ci0KLSAgICAgICsrcHVsbENvdW50OwotICAgIH0sCi0gICAgdHlwZTogJ2J5dGVzJwot
ICB9LCB7Ci0gICAgaGlnaFdhdGVyTWFyazogMjU2Ci0gIH0pOwotCi0gIFByb21pc2UucmVzb2x2
ZSgpLnRoZW4oKCkgPT4gewotICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAwKTsKLSAgICBj
aGVja2VkTm9QdWxsID0gdHJ1ZTsKLSAgICByZXNvbHZlU3RhcnRQcm9taXNlKCk7Ci0gIH0pOwot
Ci0gIHJldHVybiB0ZXN0UHJvbWlzZTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBz
b3VyY2U6IE5vIGF1dG9tYXRpYyBwdWxsIGNhbGwgaWYgc3RhcnQgZG9lc25cJ3QgZmluaXNoJyk7
Ci0KLXByb21pc2VfdGVzdCh0ID0+IHsKLSAgbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBwdWxs
OiB0LnVucmVhY2hlZF9mdW5jKCdwdWxsKCkgc2hvdWxkIG5vdCBiZSBjYWxsZWQnKSwKLSAgICB0
eXBlOiAnYnl0ZXMnCi0gIH0sIHsKLSAgICBoaWdoV2F0ZXJNYXJrOiAwCi0gIH0pOwotCi0gIHJl
dHVybiBQcm9taXNlLnJlc29sdmUoKTsKLX0sICdSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291
cmNlOiBDb25zdHJ1Y3Qgd2l0aCBoaWdoV2F0ZXJNYXJrIG9mIDAnKTsKLQotdGVzdCgoKSA9PiB7
Ci0gIG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgYXNzZXJ0X2Vx
dWFscyhjLmRlc2lyZWRTaXplLCAxMCwgJ2Rlc2lyZWRTaXplIG11c3Qgc3RhcnQgYXQgdGhlIGhp
Z2hXYXRlck1hcmsnKTsKLSAgICAgIGMuY2xvc2UoKTsKLSAgICAgIGFzc2VydF9lcXVhbHMoYy5k
ZXNpcmVkU2l6ZSwgMCwgJ2FmdGVyIGNsb3NpbmcsIGRlc2lyZWRTaXplIG11c3QgYmUgMCcpOwot
ICAgIH0sCi0gICAgdHlwZTogJ2J5dGVzJwotICB9LCB7Ci0gICAgaGlnaFdhdGVyTWFyazogMTAK
LSAgfSk7Ci19LCAnUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogZGVzaXJlZFNpemUg
d2hlbiBjbG9zZWQnKTsKLQotdGVzdCgoKSA9PiB7Ci0gIG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0g
ICAgc3RhcnQoYykgewotICAgICAgYXNzZXJ0X2VxdWFscyhjLmRlc2lyZWRTaXplLCAxMCwgJ2Rl
c2lyZWRTaXplIG11c3Qgc3RhcnQgYXQgdGhlIGhpZ2hXYXRlck1hcmsnKTsKLSAgICAgIGMuZXJy
b3IoKTsKLSAgICAgIGFzc2VydF9lcXVhbHMoYy5kZXNpcmVkU2l6ZSwgbnVsbCwgJ2FmdGVyIGVy
cm9yaW5nLCBkZXNpcmVkU2l6ZSBtdXN0IGJlIG51bGwnKTsKLSAgICB9LAotICAgIHR5cGU6ICdi
eXRlcycKLSAgfSwgewotICAgIGhpZ2hXYXRlck1hcms6IDEwCi0gIH0pOwotfSwgJ1JlYWRhYmxl
U3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IGRlc2lyZWRTaXplIHdoZW4gZXJyb3JlZCcpOwotCi1w
cm9taXNlX3Rlc3QodCA9PiB7Ci0gIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7
Ci0gICAgdHlwZTogJ2J5dGVzJwotICB9KTsKLQotICBjb25zdCByZWFkZXIgPSBzdHJlYW0uZ2V0
UmVhZGVyKCk7Ci0gIHJlYWRlci5yZWxlYXNlTG9jaygpOwotCi0gIHJldHVybiBwcm9taXNlX3Jl
amVjdHModCwgbmV3IFR5cGVFcnJvcigpLCByZWFkZXIuY2xvc2VkLCAnY2xvc2VkIG11c3QgcmVq
ZWN0Jyk7Ci19LCAnUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogZ2V0UmVhZGVyKCks
IHRoZW4gcmVsZWFzZUxvY2soKScpOwotCi1wcm9taXNlX3Rlc3QodCA9PiB7Ci0gIGNvbnN0IHN0
cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgdHlwZTogJ2J5dGVzJwotICB9KTsKLQot
ICBjb25zdCByZWFkZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKHsgbW9kZTogJ2J5b2InIH0pOwotICBy
ZWFkZXIucmVsZWFzZUxvY2soKTsKLQotICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHQsIG5ldyBU
eXBlRXJyb3IoKSwgcmVhZGVyLmNsb3NlZCwgJ2Nsb3NlZCBtdXN0IHJlamVjdCcpOwotfSwgJ1Jl
YWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IGdldFJlYWRlcigpIHdpdGggbW9kZSBzZXQg
dG8gYnlvYiwgdGhlbiByZWxlYXNlTG9jaygpJyk7Ci0KLXByb21pc2VfdGVzdCh0ID0+IHsKLSAg
Y29uc3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0gICAg
ICBjLmNsb3NlKCk7Ci0gICAgfSwKLSAgICBwdWxsOiB0LnVucmVhY2hlZF9mdW5jKCdwdWxsKCkg
c2hvdWxkIG5vdCBiZSBjYWxsZWQnKSwKLSAgICB0eXBlOiAnYnl0ZXMnCi0gIH0pOwotCi0gIGNv
bnN0IHJlYWRlciA9IHN0cmVhbS5nZXRSZWFkZXIoKTsKLQotICByZXR1cm4gcmVhZGVyLmNsb3Nl
ZC50aGVuKCgpID0+IHsKLSAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4g
c3RyZWFtLmdldFJlYWRlcigpLCAnZ2V0UmVhZGVyKCkgbXVzdCB0aHJvdycpOwotICB9KTsKLX0s
ICdSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBUZXN0IHRoYXQgY2xvc2luZyBhIHN0
cmVhbSBkb2VzIG5vdCByZWxlYXNlIGEgcmVhZGVyIGF1dG9tYXRpY2FsbHknKTsKLQotcHJvbWlz
ZV90ZXN0KHQgPT4gewotICBjb25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAg
IHN0YXJ0KGMpIHsKLSAgICAgIGMuY2xvc2UoKTsKLSAgICB9LAotICAgIHB1bGw6IHQudW5yZWFj
aGVkX2Z1bmMoJ3B1bGwoKSBzaG91bGQgbm90IGJlIGNhbGxlZCcpLAotICAgIHR5cGU6ICdieXRl
cycKLSAgfSk7Ci0KLSAgY29uc3QgcmVhZGVyID0gc3RyZWFtLmdldFJlYWRlcih7IG1vZGU6ICdi
eW9iJyB9KTsKLQotICByZXR1cm4gcmVhZGVyLmNsb3NlZC50aGVuKCgpID0+IHsKLSAgICBhc3Nl
cnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gc3RyZWFtLmdldFJlYWRlcih7IG1vZGU6
ICdieW9iJyB9KSwgJ2dldFJlYWRlcigpIG11c3QgdGhyb3cnKTsKLSAgfSk7Ci19LCAnUmVhZGFi
bGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogVGVzdCB0aGF0IGNsb3NpbmcgYSBzdHJlYW0gZG9l
cyBub3QgcmVsZWFzZSBhIEJZT0IgcmVhZGVyIGF1dG9tYXRpY2FsbHknKTsKLQotcHJvbWlzZV90
ZXN0KHQgPT4gewotICBjb25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0
YXJ0KGMpIHsKLSAgICAgIGMuZXJyb3IoZXJyb3IxKTsKLSAgICB9LAotICAgIHB1bGw6IHQudW5y
ZWFjaGVkX2Z1bmMoJ3B1bGwoKSBzaG91bGQgbm90IGJlIGNhbGxlZCcpLAotICAgIHR5cGU6ICdi
eXRlcycKLSAgfSk7Ci0KLSAgY29uc3QgcmVhZGVyID0gc3RyZWFtLmdldFJlYWRlcigpOwotCi0g
IHJldHVybiBwcm9taXNlX3JlamVjdHModCwgZXJyb3IxLCByZWFkZXIuY2xvc2VkLCAnY2xvc2Vk
IG11c3QgcmVqZWN0JykudGhlbigoKSA9PiB7Ci0gICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVy
cm9yKCksICgpID0+IHN0cmVhbS5nZXRSZWFkZXIoKSwgJ2dldFJlYWRlcigpIG11c3QgdGhyb3cn
KTsKLSAgfSk7Ci19LCAnUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogVGVzdCB0aGF0
IGVycm9yaW5nIGEgc3RyZWFtIGRvZXMgbm90IHJlbGVhc2UgYSByZWFkZXIgYXV0b21hdGljYWxs
eScpOwotCi1wcm9taXNlX3Rlc3QodCA9PiB7Ci0gIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJs
ZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgYy5lcnJvcihlcnJvcjEpOwotICAgIH0s
Ci0gICAgcHVsbDogdC51bnJlYWNoZWRfZnVuYygncHVsbCgpIHNob3VsZCBub3QgYmUgY2FsbGVk
JyksCi0gICAgdHlwZTogJ2J5dGVzJwotICB9KTsKLQotICBjb25zdCByZWFkZXIgPSBzdHJlYW0u
Z2V0UmVhZGVyKHsgbW9kZTogJ2J5b2InIH0pOwotCi0gIHJldHVybiBwcm9taXNlX3JlamVjdHMo
dCwgZXJyb3IxLCByZWFkZXIuY2xvc2VkLCAnY2xvc2VkIG11c3QgcmVqZWN0JykudGhlbigoKSA9
PiB7Ci0gICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IHN0cmVhbS5nZXRS
ZWFkZXIoeyBtb2RlOiAnYnlvYicgfSksICdnZXRSZWFkZXIoKSBtdXN0IHRocm93Jyk7Ci0gIH0p
OwotfSwgJ1JlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IFRlc3QgdGhhdCBlcnJvcmlu
ZyBhIHN0cmVhbSBkb2VzIG5vdCByZWxlYXNlIGEgQllPQiByZWFkZXIgYXV0b21hdGljYWxseScp
OwotCi10ZXN0KCgpID0+IHsKLSAgY29uc3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsK
LSAgICB0eXBlOiAnYnl0ZXMnCi0gIH0pOwotCi0gIGNvbnN0IHJlYWRlciA9IHN0cmVhbS5nZXRS
ZWFkZXIoKTsKLSAgcmVhZGVyLnJlYWQoKTsKLSAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9y
KCksICgpID0+IHJlYWRlci5yZWxlYXNlTG9jaygpLCAncmVhZGVyLnJlbGVhc2VMb2NrKCkgbXVz
dCB0aHJvdycpOwotfSwgJ1JlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IHJlbGVhc2VM
b2NrKCkgb24gUmVhZGFibGVTdHJlYW1SZWFkZXIgd2l0aCBwZW5kaW5nIHJlYWQoKSBtdXN0IHRo
cm93Jyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0gIGxldCBwdWxsQ291bnQgPSAwOwotCi0g
IGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgcHVsbCgpIHsKLSAgICAg
ICsrcHVsbENvdW50OwotICAgIH0sCi0gICAgdHlwZTogJ2J5dGVzJwotICB9LCB7Ci0gICAgaGln
aFdhdGVyTWFyazogOAotICB9KTsKLQotICBzdHJlYW0uZ2V0UmVhZGVyKCk7Ci0KLSAgYXNzZXJ0
X2VxdWFscyhwdWxsQ291bnQsIDAsICdObyBwdWxsIGFzIHN0YXJ0KCkganVzdCBmaW5pc2hlZCBh
bmQgaXMgbm90IHlldCByZWZsZWN0ZWQgdG8gdGhlIHN0YXRlIG9mIHRoZSBzdHJlYW0nKTsKLQot
ICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiB7Ci0gICAgYXNzZXJ0X2VxdWFs
cyhwdWxsQ291bnQsIDEsICdwdWxsIG11c3QgYmUgaW52b2tlZCcpOwotICB9KTsKLX0sICdSZWFk
YWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBBdXRvbWF0aWMgcHVsbCgpIGFmdGVyIHN0YXJ0
KCknKTsKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLSAgbGV0IHB1bGxDb3VudCA9IDA7Ci0KLSAg
Y29uc3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBwdWxsKCkgewotICAgICAg
KytwdWxsQ291bnQ7Ci0gICAgfSwKLSAgICB0eXBlOiAnYnl0ZXMnCi0gIH0sIHsKLSAgICBoaWdo
V2F0ZXJNYXJrOiAwCi0gIH0pOwotCi0gIGNvbnN0IHJlYWRlciA9IHN0cmVhbS5nZXRSZWFkZXIo
KTsKLSAgcmVhZGVyLnJlYWQoKTsKLQotICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMCwgJ05v
IHB1bGwgYXMgc3RhcnQoKSBqdXN0IGZpbmlzaGVkIGFuZCBpcyBub3QgeWV0IHJlZmxlY3RlZCB0
byB0aGUgc3RhdGUgb2YgdGhlIHN0cmVhbScpOwotCi0gIHJldHVybiBQcm9taXNlLnJlc29sdmUo
KS50aGVuKCgpID0+IHsKLSAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMSwgJ3B1bGwgbXVz
dCBiZSBpbnZva2VkJyk7Ci0gIH0pOwotfSwgJ1JlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3Vy
Y2U6IEF1dG9tYXRpYyBwdWxsKCkgYWZ0ZXIgc3RhcnQoKSBhbmQgcmVhZCgpJyk7Ci0KLS8vIFZp
ZXcgYnVmZmVycyBhcmUgZGV0YWNoZWQgYWZ0ZXIgcHVsbCgpIHJldHVybnMsIHNvIHJlY29yZCB0
aGUgaW5mb3JtYXRpb24gYXQgdGhlIHRpbWUgdGhhdCBwdWxsKCkgd2FzIGNhbGxlZC4KLWZ1bmN0
aW9uIGV4dHJhY3RWaWV3SW5mbyh2aWV3KSB7Ci0gIHJldHVybiB7Ci0gICAgY29uc3RydWN0b3I6
IHZpZXcuY29uc3RydWN0b3IsCi0gICAgYnVmZmVyQnl0ZUxlbmd0aDogdmlldy5idWZmZXIuYnl0
ZUxlbmd0aCwKLSAgICBieXRlT2Zmc2V0OiB2aWV3LmJ5dGVPZmZzZXQsCi0gICAgYnl0ZUxlbmd0
aDogdmlldy5ieXRlTGVuZ3RoCi0gIH07Ci19Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0gIGxl
dCBwdWxsQ291bnQgPSAwOwotICBsZXQgY29udHJvbGxlcjsKLSAgY29uc3QgYnlvYlJlcXVlc3Rz
ID0gW107Ci0KLSAgY29uc3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFy
dChjKSB7Ci0gICAgICBjb250cm9sbGVyID0gYzsKLSAgICB9LAotICAgIHB1bGwoKSB7Ci0gICAg
ICBjb25zdCBieW9iUmVxdWVzdCA9IGNvbnRyb2xsZXIuYnlvYlJlcXVlc3Q7Ci0gICAgICBjb25z
dCB2aWV3ID0gYnlvYlJlcXVlc3QudmlldzsKLSAgICAgIGJ5b2JSZXF1ZXN0c1twdWxsQ291bnRd
ID0gewotICAgICAgICBkZWZpbmVkOiBieW9iUmVxdWVzdCAhPT0gdW5kZWZpbmVkLAotICAgICAg
ICB2aWV3RGVmaW5lZDogdmlldyAhPT0gdW5kZWZpbmVkLAotICAgICAgICB2aWV3SW5mbzogZXh0
cmFjdFZpZXdJbmZvKHZpZXcpCi0gICAgICB9OwotICAgICAgaWYgKHB1bGxDb3VudCA9PT0gMCkg
ewotICAgICAgICB2aWV3WzBdID0gMHgwMTsKLSAgICAgICAgYnlvYlJlcXVlc3QucmVzcG9uZCgx
KTsKLSAgICAgIH0gZWxzZSBpZiAocHVsbENvdW50ID09PSAxKSB7Ci0gICAgICAgIHZpZXdbMF0g
PSAweDAyOwotICAgICAgICB2aWV3WzFdID0gMHgwMzsKLSAgICAgICAgYnlvYlJlcXVlc3QucmVz
cG9uZCgyKTsKLSAgICAgIH0KLQotICAgICAgKytwdWxsQ291bnQ7Ci0gICAgfSwKLSAgICB0eXBl
OiAnYnl0ZXMnLAotICAgIGF1dG9BbGxvY2F0ZUNodW5rU2l6ZTogMTYKLSAgfSwgewotICAgIGhp
Z2hXYXRlck1hcms6IDAKLSAgfSk7Ci0KLSAgY29uc3QgcmVhZGVyID0gc3RyZWFtLmdldFJlYWRl
cigpOwotICBjb25zdCBwMCA9IHJlYWRlci5yZWFkKCk7Ci0gIGNvbnN0IHAxID0gcmVhZGVyLnJl
YWQoKTsKLQotICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMCwgJ05vIHB1bGwoKSBhcyBzdGFy
dCgpIGp1c3QgZmluaXNoZWQgYW5kIGlzIG5vdCB5ZXQgcmVmbGVjdGVkIHRvIHRoZSBzdGF0ZSBv
ZiB0aGUgc3RyZWFtJyk7Ci0KLSAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCkgPT4g
ewotICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAxLCAncHVsbCgpIG11c3QgaGF2ZSBiZWVu
IGludm9rZWQgb25jZScpOwotICAgIGNvbnN0IGJ5b2JSZXF1ZXN0ID0gYnlvYlJlcXVlc3RzWzBd
OwotICAgIGFzc2VydF90cnVlKGJ5b2JSZXF1ZXN0LmRlZmluZWQsICdmaXJzdCBieW9iUmVxdWVz
dCBtdXN0IG5vdCBiZSB1bmRlZmluZWQnKTsKLSAgICBhc3NlcnRfdHJ1ZShieW9iUmVxdWVzdC52
aWV3RGVmaW5lZCwgJ2ZpcnN0IGJ5b2JSZXF1ZXN0LnZpZXcgbXVzdCBub3QgYmUgdW5kZWZpbmVk
Jyk7Ci0gICAgY29uc3Qgdmlld0luZm8gPSBieW9iUmVxdWVzdC52aWV3SW5mbzsKLSAgICBhc3Nl
cnRfZXF1YWxzKHZpZXdJbmZvLmNvbnN0cnVjdG9yLCBVaW50OEFycmF5LCAnZmlyc3Qgdmlldy5j
b25zdHJ1Y3RvciBzaG91bGQgYmUgVWludDhBcnJheScpOwotICAgIGFzc2VydF9lcXVhbHModmll
d0luZm8uYnVmZmVyQnl0ZUxlbmd0aCwgMTYsICdmaXJzdCB2aWV3LmJ1ZmZlci5ieXRlTGVuZ3Ro
IHNob3VsZCBiZSAxNicpOwotICAgIGFzc2VydF9lcXVhbHModmlld0luZm8uYnl0ZU9mZnNldCwg
MCwgJ2ZpcnN0IHZpZXcuYnl0ZU9mZnNldCBzaG91bGQgYmUgMCcpOwotICAgIGFzc2VydF9lcXVh
bHModmlld0luZm8uYnl0ZUxlbmd0aCwgMTYsICdmaXJzdCB2aWV3LmJ5dGVMZW5ndGggc2hvdWxk
IGJlIDE2Jyk7Ci0KLSAgICByZXR1cm4gcDA7Ci0gIH0pLnRoZW4ocmVzdWx0ID0+IHsKLSAgICBh
c3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMiwgJ3B1bGwoKSBtdXN0IGhhdmUgYmVlbiBpbnZva2Vk
IHR3aWNlJyk7Ci0gICAgY29uc3QgdmFsdWUgPSByZXN1bHQudmFsdWU7Ci0gICAgYXNzZXJ0X25v
dF9lcXVhbHModmFsdWUsIHVuZGVmaW5lZCwgJ2ZpcnN0IHJlYWQgc2hvdWxkIGhhdmUgYSB2YWx1
ZScpOwotICAgIGFzc2VydF9lcXVhbHModmFsdWUuY29uc3RydWN0b3IsIFVpbnQ4QXJyYXksICdm
aXJzdCB2YWx1ZSBzaG91bGQgYmUgYSBVaW50OEFycmF5Jyk7Ci0gICAgYXNzZXJ0X2VxdWFscyh2
YWx1ZS5idWZmZXIuYnl0ZUxlbmd0aCwgMTYsICdmaXJzdCB2YWx1ZS5idWZmZXIuYnl0ZUxlbmd0
aCBzaG91bGQgYmUgMTYnKTsKLSAgICBhc3NlcnRfZXF1YWxzKHZhbHVlLmJ5dGVPZmZzZXQsIDAs
ICdmaXJzdCB2YWx1ZS5ieXRlT2Zmc2V0IHNob3VsZCBiZSAwJyk7Ci0gICAgYXNzZXJ0X2VxdWFs
cyh2YWx1ZS5ieXRlTGVuZ3RoLCAxLCAnZmlyc3QgdmFsdWUuYnl0ZUxlbmd0aCBzaG91bGQgYmUg
MScpOwotICAgIGFzc2VydF9lcXVhbHModmFsdWVbMF0sIDB4MDEsICdmaXJzdCB2YWx1ZVswXSBz
aG91bGQgYmUgMHgwMScpOwotICAgIGNvbnN0IGJ5b2JSZXF1ZXN0ID0gYnlvYlJlcXVlc3RzWzFd
OwotICAgIGFzc2VydF90cnVlKGJ5b2JSZXF1ZXN0LmRlZmluZWQsICdzZWNvbmQgYnlvYlJlcXVl
c3QgbXVzdCBub3QgYmUgdW5kZWZpbmVkJyk7Ci0gICAgYXNzZXJ0X3RydWUoYnlvYlJlcXVlc3Qu
dmlld0RlZmluZWQsICdzZWNvbmQgYnlvYlJlcXVlc3QudmlldyBtdXN0IG5vdCBiZSB1bmRlZmlu
ZWQnKTsKLSAgICBjb25zdCB2aWV3SW5mbyA9IGJ5b2JSZXF1ZXN0LnZpZXdJbmZvOwotICAgIGFz
c2VydF9lcXVhbHModmlld0luZm8uY29uc3RydWN0b3IsIFVpbnQ4QXJyYXksICdzZWNvbmQgdmll
dy5jb25zdHJ1Y3RvciBzaG91bGQgYmUgVWludDhBcnJheScpOwotICAgIGFzc2VydF9lcXVhbHMo
dmlld0luZm8uYnVmZmVyQnl0ZUxlbmd0aCwgMTYsICdzZWNvbmQgdmlldy5idWZmZXIuYnl0ZUxl
bmd0aCBzaG91bGQgYmUgMTYnKTsKLSAgICBhc3NlcnRfZXF1YWxzKHZpZXdJbmZvLmJ5dGVPZmZz
ZXQsIDAsICdzZWNvbmQgdmlldy5ieXRlT2Zmc2V0IHNob3VsZCBiZSAwJyk7Ci0gICAgYXNzZXJ0
X2VxdWFscyh2aWV3SW5mby5ieXRlTGVuZ3RoLCAxNiwgJ3NlY29uZCB2aWV3LmJ5dGVMZW5ndGgg
c2hvdWxkIGJlIDE2Jyk7Ci0KLSAgICByZXR1cm4gcDE7Ci0gIH0pLnRoZW4ocmVzdWx0ID0+IHsK
LSAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMiwgJ3B1bGwoKSBzaG91bGQgb25seSBiZSBp
bnZva2VkIHR3aWNlJyk7Ci0gICAgY29uc3QgdmFsdWUgPSByZXN1bHQudmFsdWU7Ci0gICAgYXNz
ZXJ0X25vdF9lcXVhbHModmFsdWUsIHVuZGVmaW5lZCwgJ3NlY29uZCByZWFkIHNob3VsZCBoYXZl
IGEgdmFsdWUnKTsKLSAgICBhc3NlcnRfZXF1YWxzKHZhbHVlLmNvbnN0cnVjdG9yLCBVaW50OEFy
cmF5LCAnc2Vjb25kIHZhbHVlIHNob3VsZCBiZSBhIFVpbnQ4QXJyYXknKTsKLSAgICBhc3NlcnRf
ZXF1YWxzKHZhbHVlLmJ1ZmZlci5ieXRlTGVuZ3RoLCAxNiwgJ3NlY29uZCB2YWx1ZS5idWZmZXIu
Ynl0ZUxlbmd0aCBzaG91bGQgYmUgMTYnKTsKLSAgICBhc3NlcnRfZXF1YWxzKHZhbHVlLmJ5dGVP
ZmZzZXQsIDAsICdzZWNvbmQgdmFsdWUuYnl0ZU9mZnNldCBzaG91bGQgYmUgMCcpOwotICAgIGFz
c2VydF9lcXVhbHModmFsdWUuYnl0ZUxlbmd0aCwgMiwgJ3NlY29uZCB2YWx1ZS5ieXRlTGVuZ3Ro
IHNob3VsZCBiZSAyJyk7Ci0gICAgYXNzZXJ0X2VxdWFscyh2YWx1ZVswXSwgMHgwMiwgJ3NlY29u
ZCB2YWx1ZVswXSBzaG91bGQgYmUgMHgwMicpOwotICAgIGFzc2VydF9lcXVhbHModmFsdWVbMV0s
IDB4MDMsICdzZWNvbmQgdmFsdWVbMV0gc2hvdWxkIGJlIDB4MDMnKTsKLSAgfSk7Ci19LCAnUmVh
ZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogYXV0b0FsbG9jYXRlQ2h1bmtTaXplJyk7Ci0K
LXByb21pc2VfdGVzdCgoKSA9PiB7Ci0gIGxldCBwdWxsQ291bnQgPSAwOwotICBsZXQgY29udHJv
bGxlcjsKLSAgY29uc3QgYnlvYlJlcXVlc3RzID0gW107Ci0KLSAgY29uc3Qgc3RyZWFtID0gbmV3
IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0gICAgICBjb250cm9sbGVyID0gYzsK
LSAgICB9LAotICAgIHB1bGwoKSB7Ci0gICAgICBjb25zdCBieW9iUmVxdWVzdCA9IGNvbnRyb2xs
ZXIuYnlvYlJlcXVlc3Q7Ci0gICAgICBjb25zdCB2aWV3ID0gYnlvYlJlcXVlc3QudmlldzsKLSAg
ICAgIGJ5b2JSZXF1ZXN0c1twdWxsQ291bnRdID0gewotICAgICAgICBkZWZpbmVkOiBieW9iUmVx
dWVzdCAhPT0gdW5kZWZpbmVkLAotICAgICAgICB2aWV3RGVmaW5lZDogdmlldyAhPT0gdW5kZWZp
bmVkLAotICAgICAgICB2aWV3SW5mbzogZXh0cmFjdFZpZXdJbmZvKHZpZXcpCi0gICAgICB9Owot
ICAgICAgaWYgKHB1bGxDb3VudCA9PT0gMCkgewotICAgICAgICB2aWV3WzBdID0gMHgwMTsKLSAg
ICAgICAgYnlvYlJlcXVlc3QucmVzcG9uZCgxKTsKLSAgICAgIH0gZWxzZSBpZiAocHVsbENvdW50
ID09PSAxKSB7Ci0gICAgICAgIHZpZXdbMF0gPSAweDAyOwotICAgICAgICB2aWV3WzFdID0gMHgw
MzsKLSAgICAgICAgYnlvYlJlcXVlc3QucmVzcG9uZCgyKTsKLSAgICAgIH0KLQotICAgICAgKytw
dWxsQ291bnQ7Ci0gICAgfSwKLSAgICB0eXBlOiAnYnl0ZXMnLAotICAgIGF1dG9BbGxvY2F0ZUNo
dW5rU2l6ZTogMTYKLSAgfSwgewotICAgIGhpZ2hXYXRlck1hcms6IDAKLSAgfSk7Ci0KLSAgY29u
c3QgcmVhZGVyID0gc3RyZWFtLmdldFJlYWRlcigpOwotICByZXR1cm4gcmVhZGVyLnJlYWQoKS50
aGVuKHJlc3VsdCA9PiB7Ci0gICAgY29uc3QgdmFsdWUgPSByZXN1bHQudmFsdWU7Ci0gICAgYXNz
ZXJ0X25vdF9lcXVhbHModmFsdWUsIHVuZGVmaW5lZCwgJ2ZpcnN0IHJlYWQgc2hvdWxkIGhhdmUg
YSB2YWx1ZScpOwotICAgIGFzc2VydF9lcXVhbHModmFsdWUuY29uc3RydWN0b3IsIFVpbnQ4QXJy
YXksICdmaXJzdCB2YWx1ZSBzaG91bGQgYmUgYSBVaW50OEFycmF5Jyk7Ci0gICAgYXNzZXJ0X2Vx
dWFscyh2YWx1ZS5idWZmZXIuYnl0ZUxlbmd0aCwgMTYsICdmaXJzdCB2YWx1ZS5idWZmZXIuYnl0
ZUxlbmd0aCBzaG91bGQgYmUgMTYnKTsKLSAgICBhc3NlcnRfZXF1YWxzKHZhbHVlLmJ5dGVPZmZz
ZXQsIDAsICdmaXJzdCB2YWx1ZS5ieXRlT2Zmc2V0IHNob3VsZCBiZSAwJyk7Ci0gICAgYXNzZXJ0
X2VxdWFscyh2YWx1ZS5ieXRlTGVuZ3RoLCAxLCAnZmlyc3QgdmFsdWUuYnl0ZUxlbmd0aCBzaG91
bGQgYmUgMScpOwotICAgIGFzc2VydF9lcXVhbHModmFsdWVbMF0sIDB4MDEsICdmaXJzdCB2YWx1
ZVswXSBzaG91bGQgYmUgMHgwMScpOwotICAgIGNvbnN0IGJ5b2JSZXF1ZXN0ID0gYnlvYlJlcXVl
c3RzWzBdOwotICAgIGFzc2VydF90cnVlKGJ5b2JSZXF1ZXN0LmRlZmluZWQsICdmaXJzdCBieW9i
UmVxdWVzdCBtdXN0IG5vdCBiZSB1bmRlZmluZWQnKTsKLSAgICBhc3NlcnRfdHJ1ZShieW9iUmVx
dWVzdC52aWV3RGVmaW5lZCwgJ2ZpcnN0IGJ5b2JSZXF1ZXN0LnZpZXcgbXVzdCBub3QgYmUgdW5k
ZWZpbmVkJyk7Ci0gICAgY29uc3Qgdmlld0luZm8gPSBieW9iUmVxdWVzdC52aWV3SW5mbzsKLSAg
ICBhc3NlcnRfZXF1YWxzKHZpZXdJbmZvLmNvbnN0cnVjdG9yLCBVaW50OEFycmF5LCAnZmlyc3Qg
dmlldy5jb25zdHJ1Y3RvciBzaG91bGQgYmUgVWludDhBcnJheScpOwotICAgIGFzc2VydF9lcXVh
bHModmlld0luZm8uYnVmZmVyQnl0ZUxlbmd0aCwgMTYsICdmaXJzdCB2aWV3LmJ1ZmZlci5ieXRl
TGVuZ3RoIHNob3VsZCBiZSAxNicpOwotICAgIGFzc2VydF9lcXVhbHModmlld0luZm8uYnl0ZU9m
ZnNldCwgMCwgJ2ZpcnN0IHZpZXcuYnl0ZU9mZnNldCBzaG91bGQgYmUgMCcpOwotICAgIGFzc2Vy
dF9lcXVhbHModmlld0luZm8uYnl0ZUxlbmd0aCwgMTYsICdmaXJzdCB2aWV3LmJ5dGVMZW5ndGgg
c2hvdWxkIGJlIDE2Jyk7Ci0KLSAgICByZWFkZXIucmVsZWFzZUxvY2soKTsKLSAgICBjb25zdCBi
eW9iUmVhZGVyID0gc3RyZWFtLmdldFJlYWRlcih7IG1vZGU6ICdieW9iJyB9KTsKLSAgICByZXR1
cm4gYnlvYlJlYWRlci5yZWFkKG5ldyBVaW50OEFycmF5KDMyKSk7Ci0gIH0pLnRoZW4ocmVzdWx0
ID0+IHsKLSAgICBjb25zdCB2YWx1ZSA9IHJlc3VsdC52YWx1ZTsKLSAgICBhc3NlcnRfbm90X2Vx
dWFscyh2YWx1ZSwgdW5kZWZpbmVkLCAnc2Vjb25kIHJlYWQgc2hvdWxkIGhhdmUgYSB2YWx1ZScp
OwotICAgIGFzc2VydF9lcXVhbHModmFsdWUuY29uc3RydWN0b3IsIFVpbnQ4QXJyYXksICdzZWNv
bmQgdmFsdWUgc2hvdWxkIGJlIGEgVWludDhBcnJheScpOwotICAgIGFzc2VydF9lcXVhbHModmFs
dWUuYnVmZmVyLmJ5dGVMZW5ndGgsIDMyLCAnc2Vjb25kIHZhbHVlLmJ1ZmZlci5ieXRlTGVuZ3Ro
IHNob3VsZCBiZSAzMicpOwotICAgIGFzc2VydF9lcXVhbHModmFsdWUuYnl0ZU9mZnNldCwgMCwg
J3NlY29uZCB2YWx1ZS5ieXRlT2Zmc2V0IHNob3VsZCBiZSAwJyk7Ci0gICAgYXNzZXJ0X2VxdWFs
cyh2YWx1ZS5ieXRlTGVuZ3RoLCAyLCAnc2Vjb25kIHZhbHVlLmJ5dGVMZW5ndGggc2hvdWxkIGJl
IDInKTsKLSAgICBhc3NlcnRfZXF1YWxzKHZhbHVlWzBdLCAweDAyLCAnc2Vjb25kIHZhbHVlWzBd
IHNob3VsZCBiZSAweDAyJyk7Ci0gICAgYXNzZXJ0X2VxdWFscyh2YWx1ZVsxXSwgMHgwMywgJ3Nl
Y29uZCB2YWx1ZVsxXSBzaG91bGQgYmUgMHgwMycpOwotICAgIGNvbnN0IGJ5b2JSZXF1ZXN0ID0g
YnlvYlJlcXVlc3RzWzFdOwotICAgIGFzc2VydF90cnVlKGJ5b2JSZXF1ZXN0LmRlZmluZWQsICdz
ZWNvbmQgYnlvYlJlcXVlc3QgbXVzdCBub3QgYmUgdW5kZWZpbmVkJyk7Ci0gICAgYXNzZXJ0X3Ry
dWUoYnlvYlJlcXVlc3Qudmlld0RlZmluZWQsICdzZWNvbmQgYnlvYlJlcXVlc3QudmlldyBtdXN0
IG5vdCBiZSB1bmRlZmluZWQnKTsKLSAgICBjb25zdCB2aWV3SW5mbyA9IGJ5b2JSZXF1ZXN0LnZp
ZXdJbmZvOwotICAgIGFzc2VydF9lcXVhbHModmlld0luZm8uY29uc3RydWN0b3IsIFVpbnQ4QXJy
YXksICdzZWNvbmQgdmlldy5jb25zdHJ1Y3RvciBzaG91bGQgYmUgVWludDhBcnJheScpOwotICAg
IGFzc2VydF9lcXVhbHModmlld0luZm8uYnVmZmVyQnl0ZUxlbmd0aCwgMzIsICdzZWNvbmQgdmll
dy5idWZmZXIuYnl0ZUxlbmd0aCBzaG91bGQgYmUgMzInKTsKLSAgICBhc3NlcnRfZXF1YWxzKHZp
ZXdJbmZvLmJ5dGVPZmZzZXQsIDAsICdzZWNvbmQgdmlldy5ieXRlT2Zmc2V0IHNob3VsZCBiZSAw
Jyk7Ci0gICAgYXNzZXJ0X2VxdWFscyh2aWV3SW5mby5ieXRlTGVuZ3RoLCAzMiwgJ3NlY29uZCB2
aWV3LmJ5dGVMZW5ndGggc2hvdWxkIGJlIDMyJyk7Ci0gICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291
bnQsIDIsICdwdWxsQ291bnQgc2hvdWxkIGJlIDInKTsKLSAgfSk7Ci19LCAnUmVhZGFibGVTdHJl
YW0gd2l0aCBieXRlIHNvdXJjZTogTWl4IG9mIGF1dG8gYWxsb2NhdGUgYW5kIEJZT0InKTsKLQot
cHJvbWlzZV90ZXN0KCgpID0+IHsKLSAgbGV0IHB1bGxDb3VudCA9IDA7Ci0KLSAgY29uc3Qgc3Ry
ZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBwdWxsKCkgewotICAgICAgKytwdWxsQ291
bnQ7Ci0gICAgfSwKLSAgICB0eXBlOiAnYnl0ZXMnCi0gIH0sIHsKLSAgICBoaWdoV2F0ZXJNYXJr
OiAwCi0gIH0pOwotCi0gIGNvbnN0IHJlYWRlciA9IHN0cmVhbS5nZXRSZWFkZXIoKTsKLSAgcmVh
ZGVyLnJlYWQobmV3IFVpbnQ4QXJyYXkoOCkpOwotCi0gIGFzc2VydF9lcXVhbHMocHVsbENvdW50
LCAwLCAnTm8gcHVsbCBhcyBzdGFydCgpIGp1c3QgZmluaXNoZWQgYW5kIGlzIG5vdCB5ZXQgcmVm
bGVjdGVkIHRvIHRoZSBzdGF0ZSBvZiB0aGUgc3RyZWFtJyk7Ci0KLSAgcmV0dXJuIFByb21pc2Uu
cmVzb2x2ZSgpLnRoZW4oKCkgPT4gewotICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAxLCAn
cHVsbCBtdXN0IGJlIGludm9rZWQnKTsKLSAgfSk7Ci19LCAnUmVhZGFibGVTdHJlYW0gd2l0aCBi
eXRlIHNvdXJjZTogQXV0b21hdGljIHB1bGwoKSBhZnRlciBzdGFydCgpIGFuZCByZWFkKHZpZXcp
Jyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0gIGxldCBwdWxsQ291bnQgPSAwOwotCi0gIGxl
dCBjb250cm9sbGVyOwotICBsZXQgZGVzaXJlZFNpemVJblN0YXJ0OwotICBsZXQgZGVzaXJlZFNp
emVJblB1bGw7Ci0KLSAgY29uc3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBz
dGFydChjKSB7Ci0gICAgICBjLmVucXVldWUobmV3IFVpbnQ4QXJyYXkoMTYpKTsKLSAgICAgIGRl
c2lyZWRTaXplSW5TdGFydCA9IGMuZGVzaXJlZFNpemU7Ci0gICAgICBjb250cm9sbGVyID0gYzsK
LSAgICB9LAotICAgIHB1bGwoKSB7Ci0gICAgICArK3B1bGxDb3VudDsKLQotICAgICAgaWYgKHB1
bGxDb3VudCA9PT0gMSkgewotICAgICAgICBkZXNpcmVkU2l6ZUluUHVsbCA9IGNvbnRyb2xsZXIu
ZGVzaXJlZFNpemU7Ci0gICAgICB9Ci0gICAgfSwKLSAgICB0eXBlOiAnYnl0ZXMnCi0gIH0sIHsK
LSAgICBoaWdoV2F0ZXJNYXJrOiA4Ci0gIH0pOwotCi0gIHJldHVybiBQcm9taXNlLnJlc29sdmUo
KS50aGVuKCgpID0+IHsKLSAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMCwgJ05vIHB1bGwg
YXMgdGhlIHF1ZXVlIHdhcyBmaWxsZWQgYnkgc3RhcnQoKScpOwotICAgIGFzc2VydF9lcXVhbHMo
ZGVzaXJlZFNpemVJblN0YXJ0LCAtOCwgJ2Rlc2lyZWRTaXplIGFmdGVyIGVucXVldWUoKSBpbiBz
dGFydCgpJyk7Ci0KLSAgICBjb25zdCByZWFkZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKCk7Ci0KLSAg
ICBjb25zdCBwcm9taXNlID0gcmVhZGVyLnJlYWQoKTsKLSAgICBhc3NlcnRfZXF1YWxzKHB1bGxD
b3VudCwgMSwgJ1RoZSBmaXJzdCBwdWxsKCkgc2hvdWxkIGJlIG1hZGUgb24gcmVhZCgpJyk7Ci0g
ICAgYXNzZXJ0X2VxdWFscyhkZXNpcmVkU2l6ZUluUHVsbCwgOCwgJ2Rlc2lyZWRTaXplIGluIHB1
bGwoKScpOwotCi0gICAgcmV0dXJuIHByb21pc2UudGhlbihyZXN1bHQgPT4gewotICAgICAgYXNz
ZXJ0X2VxdWFscyhyZXN1bHQuZG9uZSwgZmFsc2UsICdyZXN1bHQuZG9uZScpOwotCi0gICAgICBj
b25zdCB2aWV3ID0gcmVzdWx0LnZhbHVlOwotICAgICAgYXNzZXJ0X2VxdWFscyh2aWV3LmNvbnN0
cnVjdG9yLCBVaW50OEFycmF5LCAndmlldy5jb25zdHJ1Y3RvcicpOwotICAgICAgYXNzZXJ0X2Vx
dWFscyh2aWV3LmJ1ZmZlci5ieXRlTGVuZ3RoLCAxNiwgJ3ZpZXcuYnVmZmVyJyk7Ci0gICAgICBh
c3NlcnRfZXF1YWxzKHZpZXcuYnl0ZU9mZnNldCwgMCwgJ3ZpZXcuYnl0ZU9mZnNldCcpOwotICAg
ICAgYXNzZXJ0X2VxdWFscyh2aWV3LmJ5dGVMZW5ndGgsIDE2LCAndmlldy5ieXRlTGVuZ3RoJyk7
Ci0gICAgfSk7Ci0gIH0pOwotfSwgJ1JlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IGVu
cXVldWUoKSwgZ2V0UmVhZGVyKCksIHRoZW4gcmVhZCgpJyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9
PiB7Ci0gIGxldCBjb250cm9sbGVyOwotCi0gIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0
cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgY29udHJvbGxlciA9IGM7Ci0gICAgfSwKLSAg
ICB0eXBlOiAnYnl0ZXMnCi0gIH0pOwotCi0gIGNvbnN0IHJlYWRlciA9IHN0cmVhbS5nZXRSZWFk
ZXIoKTsKLQotICBjb25zdCBwcm9taXNlID0gcmVhZGVyLnJlYWQoKS50aGVuKHJlc3VsdCA9PiB7
Ci0gICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQuZG9uZSwgZmFsc2UpOwotCi0gICAgY29uc3Qgdmll
dyA9IHJlc3VsdC52YWx1ZTsKLSAgICBhc3NlcnRfZXF1YWxzKHZpZXcuY29uc3RydWN0b3IsIFVp
bnQ4QXJyYXkpOwotICAgIGFzc2VydF9lcXVhbHModmlldy5idWZmZXIuYnl0ZUxlbmd0aCwgMSk7
Ci0gICAgYXNzZXJ0X2VxdWFscyh2aWV3LmJ5dGVPZmZzZXQsIDApOwotICAgIGFzc2VydF9lcXVh
bHModmlldy5ieXRlTGVuZ3RoLCAxKTsKLSAgfSk7Ci0KLSAgY29udHJvbGxlci5lbnF1ZXVlKG5l
dyBVaW50OEFycmF5KDEpKTsKLQotICByZXR1cm4gcHJvbWlzZTsKLX0sICdSZWFkYWJsZVN0cmVh
bSB3aXRoIGJ5dGUgc291cmNlOiBQdXNoIHNvdXJjZSB0aGF0IGRvZXNuXCd0IHVuZGVyc3RhbmQg
cHVsbCBzaWduYWwnKTsKLQotdGVzdCgoKSA9PiB7Ci0gIGFzc2VydF90aHJvd3MobmV3IFR5cGVF
cnJvcigpLCAoKSA9PiBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHB1bGw6ICdmb28nLAotICAg
IHR5cGU6ICdieXRlcycKLSAgfSksICdjb25zdHJ1Y3RvciBzaG91bGQgdGhyb3cnKTsKLX0sICdS
ZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBwdWxsKCkgZnVuY3Rpb24gaXMgbm90IGNh
bGxhYmxlJyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0gIGNvbnN0IHN0cmVhbSA9IG5ldyBS
ZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgYy5lbnF1ZXVlKG5ldyBVaW50
MTZBcnJheSgxNikpOwotICAgIH0sCi0gICAgdHlwZTogJ2J5dGVzJwotICB9KTsKLQotICBjb25z
dCByZWFkZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKCk7Ci0KLSAgcmV0dXJuIHJlYWRlci5yZWFkKCku
dGhlbihyZXN1bHQgPT4gewotICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LmRvbmUsIGZhbHNlKTsK
LQotICAgIGNvbnN0IHZpZXcgPSByZXN1bHQudmFsdWU7Ci0gICAgYXNzZXJ0X2VxdWFscyh2aWV3
LmNvbnN0cnVjdG9yLCBVaW50OEFycmF5KTsKLSAgICBhc3NlcnRfZXF1YWxzKHZpZXcuYnVmZmVy
LmJ5dGVMZW5ndGgsIDMyKTsKLSAgICBhc3NlcnRfZXF1YWxzKHZpZXcuYnl0ZU9mZnNldCwgMCk7
Ci0gICAgYXNzZXJ0X2VxdWFscyh2aWV3LmJ5dGVMZW5ndGgsIDMyKTsKLSAgfSk7Ci19LCAnUmVh
ZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogZW5xdWV1ZSgpIHdpdGggVWludDE2QXJyYXks
IGdldFJlYWRlcigpLCB0aGVuIHJlYWQoKScpOwotCi1wcm9taXNlX3Rlc3QodCA9PiB7Ci0gIGNv
bnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAg
Y29uc3QgdmlldyA9IG5ldyBVaW50OEFycmF5KDE2KTsKLSAgICAgIHZpZXdbMF0gPSAweDAxOwot
ICAgICAgdmlld1s4XSA9IDB4MDI7Ci0gICAgICBjLmVucXVldWUodmlldyk7Ci0gICAgfSwKLSAg
ICBwdWxsOiB0LnVucmVhY2hlZF9mdW5jKCdwdWxsKCkgc2hvdWxkIG5vdCBiZSBjYWxsZWQnKSwK
LSAgICB0eXBlOiAnYnl0ZXMnCi0gIH0pOwotCi0gIGNvbnN0IGJ5b2JSZWFkZXIgPSBzdHJlYW0u
Z2V0UmVhZGVyKHsgbW9kZTogJ2J5b2InIH0pOwotCi0gIHJldHVybiBieW9iUmVhZGVyLnJlYWQo
bmV3IFVpbnQ4QXJyYXkoOCkpLnRoZW4ocmVzdWx0ID0+IHsKLSAgICBhc3NlcnRfZXF1YWxzKHJl
c3VsdC5kb25lLCBmYWxzZSwgJ2RvbmUnKTsKLQotICAgIGNvbnN0IHZpZXcgPSByZXN1bHQudmFs
dWU7Ci0gICAgYXNzZXJ0X2VxdWFscyh2aWV3LmNvbnN0cnVjdG9yLCBVaW50OEFycmF5LCAndmFs
dWUuY29uc3RydWN0b3InKTsKLSAgICBhc3NlcnRfZXF1YWxzKHZpZXcuYnVmZmVyLmJ5dGVMZW5n
dGgsIDgsICd2YWx1ZS5idWZmZXIuYnl0ZUxlbmd0aCcpOwotICAgIGFzc2VydF9lcXVhbHModmll
dy5ieXRlT2Zmc2V0LCAwLCAndmFsdWUuYnl0ZU9mZnNldCcpOwotICAgIGFzc2VydF9lcXVhbHMo
dmlldy5ieXRlTGVuZ3RoLCA4LCAndmFsdWUuYnl0ZUxlbmd0aCcpOwotICAgIGFzc2VydF9lcXVh
bHModmlld1swXSwgMHgwMSk7Ci0KLSAgICBieW9iUmVhZGVyLnJlbGVhc2VMb2NrKCk7Ci0KLSAg
ICBjb25zdCByZWFkZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKCk7Ci0KLSAgICByZXR1cm4gcmVhZGVy
LnJlYWQoKTsKLSAgfSkudGhlbihyZXN1bHQgPT4gewotICAgIGFzc2VydF9lcXVhbHMocmVzdWx0
LmRvbmUsIGZhbHNlLCAnZG9uZScpOwotCi0gICAgY29uc3QgdmlldyA9IHJlc3VsdC52YWx1ZTsK
LSAgICBhc3NlcnRfZXF1YWxzKHZpZXcuY29uc3RydWN0b3IsIFVpbnQ4QXJyYXksICd2YWx1ZS5j
b25zdHJ1Y3RvcicpOwotICAgIGFzc2VydF9lcXVhbHModmlldy5idWZmZXIuYnl0ZUxlbmd0aCwg
MTYsICd2YWx1ZS5idWZmZXIuYnl0ZUxlbmd0aCcpOwotICAgIGFzc2VydF9lcXVhbHModmlldy5i
eXRlT2Zmc2V0LCA4LCAndmFsdWUuYnl0ZU9mZnNldCcpOwotICAgIGFzc2VydF9lcXVhbHModmll
dy5ieXRlTGVuZ3RoLCA4LCAndmFsdWUuYnl0ZUxlbmd0aCcpOwotICAgIGFzc2VydF9lcXVhbHMo
dmlld1swXSwgMHgwMik7Ci0gIH0pOwotfSwgJ1JlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3Vy
Y2U6IGVucXVldWUoKSwgcmVhZCh2aWV3KSBwYXJ0aWFsbHksIHRoZW4gcmVhZCgpJyk7Ci0KLXBy
b21pc2VfdGVzdCh0ID0+IHsKLSAgbGV0IGNvbnRyb2xsZXI7Ci0KLSAgY29uc3Qgc3RyZWFtID0g
bmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0gICAgICBjb250cm9sbGVyID0g
YzsKLSAgICB9LAotICAgIHB1bGw6IHQudW5yZWFjaGVkX2Z1bmMoJ3B1bGwoKSBzaG91bGQgbm90
IGJlIGNhbGxlZCcpLAotICAgIHR5cGU6ICdieXRlcycKLSAgfSk7Ci0KLSAgY29uc3QgcmVhZGVy
ID0gc3RyZWFtLmdldFJlYWRlcigpOwotCi0gIGNvbnRyb2xsZXIuZW5xdWV1ZShuZXcgVWludDhB
cnJheSgxNikpOwotICBjb250cm9sbGVyLmNsb3NlKCk7Ci0KLSAgcmV0dXJuIHJlYWRlci5yZWFk
KCkudGhlbihyZXN1bHQgPT4gewotICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LmRvbmUsIGZhbHNl
LCAnZG9uZScpOwotCi0gICAgY29uc3QgdmlldyA9IHJlc3VsdC52YWx1ZTsKLSAgICBhc3NlcnRf
ZXF1YWxzKHZpZXcuYnl0ZU9mZnNldCwgMCwgJ2J5dGVPZmZzZXQnKTsKLSAgICBhc3NlcnRfZXF1
YWxzKHZpZXcuYnl0ZUxlbmd0aCwgMTYsICdieXRlTGVuZ3RoJyk7Ci0KLSAgICByZXR1cm4gcmVh
ZGVyLnJlYWQoKTsKLSAgfSkudGhlbihyZXN1bHQgPT4gewotICAgIGFzc2VydF9lcXVhbHMocmVz
dWx0LmRvbmUsIHRydWUsICdkb25lJyk7Ci0gICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQudmFsdWUs
IHVuZGVmaW5lZCwgJ3ZhbHVlJyk7Ci0gIH0pOwotfSwgJ1JlYWRhYmxlU3RyZWFtIHdpdGggYnl0
ZSBzb3VyY2U6IGdldFJlYWRlcigpLCBlbnF1ZXVlKCksIGNsb3NlKCksIHRoZW4gcmVhZCgpJyk7
Ci0KLXByb21pc2VfdGVzdCh0ID0+IHsKLSAgY29uc3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxlU3Ry
ZWFtKHsKLSAgICBzdGFydChjKSB7Ci0gICAgICBjLmVucXVldWUobmV3IFVpbnQ4QXJyYXkoMTYp
KTsKLSAgICAgIGMuY2xvc2UoKTsKLSAgICB9LAotICAgIHB1bGw6IHQudW5yZWFjaGVkX2Z1bmMo
J3B1bGwoKSBzaG91bGQgbm90IGJlIGNhbGxlZCcpLAotICAgIHR5cGU6ICdieXRlcycKLSAgfSk7
Ci0KLSAgY29uc3QgcmVhZGVyID0gc3RyZWFtLmdldFJlYWRlcigpOwotCi0gIHJldHVybiByZWFk
ZXIucmVhZCgpLnRoZW4ocmVzdWx0ID0+IHsKLSAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdC5kb25l
LCBmYWxzZSwgJ2RvbmUnKTsKLQotICAgIGNvbnN0IHZpZXcgPSByZXN1bHQudmFsdWU7Ci0gICAg
YXNzZXJ0X2VxdWFscyh2aWV3LmJ5dGVPZmZzZXQsIDAsICdieXRlT2Zmc2V0Jyk7Ci0gICAgYXNz
ZXJ0X2VxdWFscyh2aWV3LmJ5dGVMZW5ndGgsIDE2LCAnYnl0ZUxlbmd0aCcpOwotCi0gICAgcmV0
dXJuIHJlYWRlci5yZWFkKCk7Ci0gIH0pLnRoZW4ocmVzdWx0ID0+IHsKLSAgICBhc3NlcnRfZXF1
YWxzKHJlc3VsdC5kb25lLCB0cnVlLCAnZG9uZScpOwotICAgIGFzc2VydF9lcXVhbHMocmVzdWx0
LnZhbHVlLCB1bmRlZmluZWQsICd2YWx1ZScpOwotICB9KTsKLX0sICdSZWFkYWJsZVN0cmVhbSB3
aXRoIGJ5dGUgc291cmNlOiBlbnF1ZXVlKCksIGNsb3NlKCksIGdldFJlYWRlcigpLCB0aGVuIHJl
YWQoKScpOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotICBsZXQgY29udHJvbGxlcjsKLSAgbGV0
IGJ5b2JSZXF1ZXN0OwotCi0gIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0g
ICAgc3RhcnQoYykgewotICAgICAgY29udHJvbGxlciA9IGM7Ci0gICAgfSwKLSAgICBwdWxsKCkg
ewotICAgICAgY29udHJvbGxlci5lbnF1ZXVlKG5ldyBVaW50OEFycmF5KDE2KSk7Ci0gICAgICBi
eW9iUmVxdWVzdCA9IGNvbnRyb2xsZXIuYnlvYlJlcXVlc3Q7Ci0gICAgfSwKLSAgICB0eXBlOiAn
Ynl0ZXMnCi0gIH0pOwotCi0gIGNvbnN0IHJlYWRlciA9IHN0cmVhbS5nZXRSZWFkZXIoKTsKLQot
ICByZXR1cm4gcmVhZGVyLnJlYWQoKS50aGVuKHJlc3VsdCA9PiB7Ci0gICAgYXNzZXJ0X2VxdWFs
cyhyZXN1bHQuZG9uZSwgZmFsc2UsICdkb25lJyk7Ci0gICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQu
dmFsdWUuYnl0ZUxlbmd0aCwgMTYsICdieXRlTGVuZ3RoJyk7Ci0gICAgYXNzZXJ0X2VxdWFscyhi
eW9iUmVxdWVzdCwgdW5kZWZpbmVkLCAnYnlvYlJlcXVlc3QgbXVzdCBiZSB1bmRlZmluZWQnKTsK
LSAgfSk7Ci19LCAnUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogUmVzcG9uZCB0byBw
dWxsKCkgYnkgZW5xdWV1ZSgpJyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0gIGxldCBwdWxs
Q291bnQgPSAwOwotCi0gIGxldCBjb250cm9sbGVyOwotICBsZXQgYnlvYlJlcXVlc3Q7Ci0gIGNv
bnN0IGRlc2lyZWRTaXplcyA9IFtdOwotCi0gIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0
cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgY29udHJvbGxlciA9IGM7Ci0gICAgfSwKLSAg
ICBwdWxsKCkgewotICAgICAgYnlvYlJlcXVlc3QgPSBjb250cm9sbGVyLmJ5b2JSZXF1ZXN0Owot
ICAgICAgZGVzaXJlZFNpemVzLnB1c2goY29udHJvbGxlci5kZXNpcmVkU2l6ZSk7Ci0gICAgICBj
b250cm9sbGVyLmVucXVldWUobmV3IFVpbnQ4QXJyYXkoMSkpOwotICAgICAgZGVzaXJlZFNpemVz
LnB1c2goY29udHJvbGxlci5kZXNpcmVkU2l6ZSk7Ci0gICAgICBjb250cm9sbGVyLmVucXVldWUo
bmV3IFVpbnQ4QXJyYXkoMSkpOwotICAgICAgZGVzaXJlZFNpemVzLnB1c2goY29udHJvbGxlci5k
ZXNpcmVkU2l6ZSk7Ci0KLSAgICAgICsrcHVsbENvdW50OwotICAgIH0sCi0gICAgdHlwZTogJ2J5
dGVzJwotICB9LCB7Ci0gICAgaGlnaFdhdGVyTWFyazogMAotICB9KTsKLQotICBjb25zdCByZWFk
ZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKCk7Ci0KLSAgY29uc3QgcDAgPSByZWFkZXIucmVhZCgpOwot
ICBjb25zdCBwMSA9IHJlYWRlci5yZWFkKCk7Ci0gIGNvbnN0IHAyID0gcmVhZGVyLnJlYWQoKTsK
LQotICAvLyBSZXNwb25kIHRvIHRoZSBmaXJzdCBwdWxsIGNhbGwuCi0gIGNvbnRyb2xsZXIuZW5x
dWV1ZShuZXcgVWludDhBcnJheSgxKSk7Ci0KLSAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDAs
ICdwdWxsQ291bnQgYWZ0ZXIgdGhlIGVucXVldWUoKSBvdXRzaWRlIHB1bGwnKTsKLQotICByZXR1
cm4gUHJvbWlzZS5hbGwoW3AwLCBwMSwgcDJdKS50aGVuKHJlc3VsdCA9PiB7Ci0gICAgYXNzZXJ0
X2VxdWFscyhwdWxsQ291bnQsIDEsICdwdWxsQ291bnQgYWZ0ZXIgY29tcGxldGlvbiBvZiBhbGwg
cmVhZCgpcycpOwotCi0gICAgYXNzZXJ0X2VxdWFscyhyZXN1bHRbMF0uZG9uZSwgZmFsc2UsICdy
ZXN1bHRbMF0uZG9uZScpOwotICAgIGFzc2VydF9lcXVhbHMocmVzdWx0WzBdLnZhbHVlLmJ5dGVM
ZW5ndGgsIDEsICdyZXN1bHRbMF0udmFsdWUuYnl0ZUxlbmd0aCcpOwotICAgIGFzc2VydF9lcXVh
bHMocmVzdWx0WzFdLmRvbmUsIGZhbHNlLCAncmVzdWx0WzFdLmRvbmUnKTsKLSAgICBhc3NlcnRf
ZXF1YWxzKHJlc3VsdFsxXS52YWx1ZS5ieXRlTGVuZ3RoLCAxLCAncmVzdWx0WzFdLnZhbHVlLmJ5
dGVMZW5ndGgnKTsKLSAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdFsyXS5kb25lLCBmYWxzZSwgJ3Jl
c3VsdFsyXS5kb25lJyk7Ci0gICAgYXNzZXJ0X2VxdWFscyhyZXN1bHRbMl0udmFsdWUuYnl0ZUxl
bmd0aCwgMSwgJ3Jlc3VsdFsyXS52YWx1ZS5ieXRlTGVuZ3RoJyk7Ci0gICAgYXNzZXJ0X2VxdWFs
cyhieW9iUmVxdWVzdCwgdW5kZWZpbmVkLCAnYnlvYlJlcXVlc3Qgc2hvdWxkIGJlIHVuZGVmaW5l
ZCcpOwotICAgIGFzc2VydF9lcXVhbHMoZGVzaXJlZFNpemVzWzBdLCAwLCAnZGVzaXJlZFNpemUg
b24gcHVsbCBzaG91bGQgYmUgMCcpOwotICAgIGFzc2VydF9lcXVhbHMoZGVzaXJlZFNpemVzWzFd
LCAwLCAnZGVzaXJlZFNpemUgYWZ0ZXIgMXN0IGVucXVldWUoKSBzaG91bGQgYmUgMCcpOwotICAg
IGFzc2VydF9lcXVhbHMoZGVzaXJlZFNpemVzWzJdLCAwLCAnZGVzaXJlZFNpemUgYWZ0ZXIgMm5k
IGVucXVldWUoKSBzaG91bGQgYmUgMCcpOwotICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAx
LCAncHVsbCgpIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBvbmNlJyk7Ci0gIH0pOwotfSwgJ1JlYWRh
YmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IFJlc3BvbmQgdG8gcHVsbCgpIGJ5IGVucXVldWUo
KSBhc3luY2hyb25vdXNseScpOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotICBsZXQgcHVsbENv
dW50ID0gMDsKLQotICBsZXQgYnlvYlJlcXVlc3Q7Ci0gIGNvbnN0IGRlc2lyZWRTaXplcyA9IFtd
OwotCi0gIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgcHVsbChjKSB7
Ci0gICAgICBieW9iUmVxdWVzdCA9IGMuYnlvYlJlcXVlc3Q7Ci0gICAgICBkZXNpcmVkU2l6ZXMu
cHVzaChjLmRlc2lyZWRTaXplKTsKLQotICAgICAgaWYgKHB1bGxDb3VudCA8IDMpIHsKLSAgICAg
ICAgYy5lbnF1ZXVlKG5ldyBVaW50OEFycmF5KDEpKTsKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAg
IGMuY2xvc2UoKTsKLSAgICAgIH0KLQotICAgICAgKytwdWxsQ291bnQ7Ci0gICAgfSwKLSAgICB0
eXBlOiAnYnl0ZXMnCi0gIH0sIHsKLSAgICBoaWdoV2F0ZXJNYXJrOiAyNTYKLSAgfSk7Ci0KLSAg
Y29uc3QgcmVhZGVyID0gc3RyZWFtLmdldFJlYWRlcigpOwotCi0gIGNvbnN0IHAwID0gcmVhZGVy
LnJlYWQoKTsKLSAgY29uc3QgcDEgPSByZWFkZXIucmVhZCgpOwotICBjb25zdCBwMiA9IHJlYWRl
ci5yZWFkKCk7Ci0KLSAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDAsICdObyBwdWxsIGFzIHN0
YXJ0KCkganVzdCBmaW5pc2hlZCBhbmQgaXMgbm90IHlldCByZWZsZWN0ZWQgdG8gdGhlIHN0YXRl
IG9mIHRoZSBzdHJlYW0nKTsKLQotICByZXR1cm4gUHJvbWlzZS5hbGwoW3AwLCBwMSwgcDJdKS50
aGVuKHJlc3VsdCA9PiB7Ci0gICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDQsICdwdWxsQ291
bnQgYWZ0ZXIgY29tcGxldGlvbiBvZiBhbGwgcmVhZCgpcycpOwotCi0gICAgYXNzZXJ0X2VxdWFs
cyhyZXN1bHRbMF0uZG9uZSwgZmFsc2UsICdyZXN1bHRbMF0uZG9uZScpOwotICAgIGFzc2VydF9l
cXVhbHMocmVzdWx0WzBdLnZhbHVlLmJ5dGVMZW5ndGgsIDEsICdyZXN1bHRbMF0udmFsdWUuYnl0
ZUxlbmd0aCcpOwotICAgIGFzc2VydF9lcXVhbHMocmVzdWx0WzFdLmRvbmUsIGZhbHNlLCAncmVz
dWx0WzFdLmRvbmUnKTsKLSAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdFsxXS52YWx1ZS5ieXRlTGVu
Z3RoLCAxLCAncmVzdWx0WzFdLnZhbHVlLmJ5dGVMZW5ndGgnKTsKLSAgICBhc3NlcnRfZXF1YWxz
KHJlc3VsdFsyXS5kb25lLCBmYWxzZSwgJ3Jlc3VsdFsyXS5kb25lJyk7Ci0gICAgYXNzZXJ0X2Vx
dWFscyhyZXN1bHRbMl0udmFsdWUuYnl0ZUxlbmd0aCwgMSwgJ3Jlc3VsdFsyXS52YWx1ZS5ieXRl
TGVuZ3RoJyk7Ci0gICAgYXNzZXJ0X2VxdWFscyhieW9iUmVxdWVzdCwgdW5kZWZpbmVkLCAnYnlv
YlJlcXVlc3Qgc2hvdWxkIGJlIHVuZGVmaW5lZCcpOwotICAgIGFzc2VydF9lcXVhbHMoZGVzaXJl
ZFNpemVzWzBdLCAyNTYsICdkZXNpcmVkU2l6ZSBvbiBwdWxsIHNob3VsZCBiZSAyNTYnKTsKLSAg
ICBhc3NlcnRfZXF1YWxzKGRlc2lyZWRTaXplc1sxXSwgMjU2LCAnZGVzaXJlZFNpemUgYWZ0ZXIg
MXN0IGVucXVldWUoKSBzaG91bGQgYmUgMjU2Jyk7Ci0gICAgYXNzZXJ0X2VxdWFscyhkZXNpcmVk
U2l6ZXNbMl0sIDI1NiwgJ2Rlc2lyZWRTaXplIGFmdGVyIDJuZCBlbnF1ZXVlKCkgc2hvdWxkIGJl
IDI1NicpOwotICAgIGFzc2VydF9lcXVhbHMoZGVzaXJlZFNpemVzWzNdLCAyNTYsICdkZXNpcmVk
U2l6ZSBhZnRlciAzcmQgZW5xdWV1ZSgpIHNob3VsZCBiZSAyNTYnKTsKLSAgfSk7Ci19LCAnUmVh
ZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogUmVzcG9uZCB0byBtdWx0aXBsZSBwdWxsKCkg
Ynkgc2VwYXJhdGUgZW5xdWV1ZSgpJyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0gIGxldCBj
b250cm9sbGVyOwotCi0gIGxldCBwdWxsQ291bnQgPSAwOwotICBjb25zdCBieW9iUmVxdWVzdERl
ZmluZWQgPSBbXTsKLQotICBjb25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAg
IHN0YXJ0KGMpIHsKLSAgICAgIGNvbnRyb2xsZXIgPSBjOwotICAgIH0sCi0gICAgcHVsbCgpIHsK
LSAgICAgIGJ5b2JSZXF1ZXN0RGVmaW5lZC5wdXNoKGNvbnRyb2xsZXIuYnlvYlJlcXVlc3QgIT09
IHVuZGVmaW5lZCk7Ci0KLSAgICAgIGNvbnN0IHZpZXcgPSBjb250cm9sbGVyLmJ5b2JSZXF1ZXN0
LnZpZXc7Ci0gICAgICB2aWV3WzBdID0gMHgwMTsKLSAgICAgIGNvbnRyb2xsZXIuYnlvYlJlcXVl
c3QucmVzcG9uZCgxKTsKLQotICAgICAgYnlvYlJlcXVlc3REZWZpbmVkLnB1c2goY29udHJvbGxl
ci5ieW9iUmVxdWVzdCAhPT0gdW5kZWZpbmVkKTsKLQotICAgICAgKytwdWxsQ291bnQ7Ci0gICAg
fSwKLSAgICB0eXBlOiAnYnl0ZXMnCi0gIH0pOwotCi0gIGNvbnN0IHJlYWRlciA9IHN0cmVhbS5n
ZXRSZWFkZXIoeyBtb2RlOiAnYnlvYicgfSk7Ci0KLSAgcmV0dXJuIHJlYWRlci5yZWFkKG5ldyBV
aW50OEFycmF5KDEpKS50aGVuKHJlc3VsdCA9PiB7Ci0gICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQu
ZG9uZSwgZmFsc2UsICdyZXN1bHQuZG9uZScpOwotICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LnZh
bHVlLmJ5dGVMZW5ndGgsIDEsICdyZXN1bHQudmFsdWUuYnl0ZUxlbmd0aCcpOwotICAgIGFzc2Vy
dF9lcXVhbHMocmVzdWx0LnZhbHVlWzBdLCAweDAxLCAncmVzdWx0LnZhbHVlWzBdJyk7Ci0gICAg
YXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDEsICdwdWxsKCkgc2hvdWxkIGJlIGNhbGxlZCBvbmx5
IG9uY2UnKTsKLSAgICBhc3NlcnRfdHJ1ZShieW9iUmVxdWVzdERlZmluZWRbMF0sICdieW9iUmVx
dWVzdCBtdXN0IG5vdCBiZSB1bmRlZmluZWQgYmVmb3JlIHJlc3BvbmQoKScpOwotICAgIGFzc2Vy
dF9mYWxzZShieW9iUmVxdWVzdERlZmluZWRbMV0sICdieW9iUmVxdWVzdCBtdXN0IGJlIHVuZGVm
aW5lZCBhZnRlciByZXNwb25kKCknKTsKLSAgfSk7Ci19LCAnUmVhZGFibGVTdHJlYW0gd2l0aCBi
eXRlIHNvdXJjZTogcmVhZCh2aWV3KSwgdGhlbiByZXNwb25kKCknKTsKLQotcHJvbWlzZV90ZXN0
KCgpID0+IHsKLSAgbGV0IGNvbnRyb2xsZXI7Ci0KLSAgbGV0IHB1bGxDb3VudCA9IDA7Ci0gIGNv
bnN0IGJ5b2JSZXF1ZXN0RGVmaW5lZCA9IFtdOwotCi0gIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFk
YWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgY29udHJvbGxlciA9IGM7Ci0gICAg
fSwKLSAgICBwdWxsKCkgewotICAgICAgYnlvYlJlcXVlc3REZWZpbmVkLnB1c2goY29udHJvbGxl
ci5ieW9iUmVxdWVzdCAhPT0gdW5kZWZpbmVkKTsKLQotICAgICAgLy8gRW11bGF0ZSBBcnJheUJ1
ZmZlciB0cmFuc2ZlciBieSBqdXN0IGNyZWF0aW5nIGEgbmV3IEFycmF5QnVmZmVyIGFuZCBwYXNz
IGl0LiBCeSBjaGVja2luZyB0aGUgcmVzdWx0IG9mCi0gICAgICAvLyByZWFkKHZpZXcpLCB3ZSB0
ZXN0IHRoYXQgdGhlIHJlc3BvbmQoKSdzIGJ1ZmZlciBhcmd1bWVudCBpcyB3b3JraW5nIGNvcnJl
Y3RseS4KLSAgICAgIC8vCi0gICAgICAvLyBBIHJlYWwgaW1wbGVtZW50YXRpb24gb2YgdGhlIHVu
ZGVybHlpbmcgYnl0ZSBzb3VyY2Ugd291bGQgdHJhbnNmZXIgY29udHJvbGxlci5ieW9iUmVxdWVz
dC52aWV3LmJ1ZmZlciBpbnRvCi0gICAgICAvLyBhIG5ldyBBcnJheUJ1ZmZlciwgdGhlbiBjb25z
dHJ1Y3QgYSB2aWV3IGFyb3VuZCBpdCBhbmQgd3JpdGUgdG8gaXQuCi0gICAgICBjb25zdCB0cmFu
c2ZlcnJlZFZpZXcgPSBuZXcgVWludDhBcnJheSgxKTsKLSAgICAgIHRyYW5zZmVycmVkVmlld1sw
XSA9IDB4MDE7Ci0gICAgICBjb250cm9sbGVyLmJ5b2JSZXF1ZXN0LnJlc3BvbmRXaXRoTmV3Vmll
dyh0cmFuc2ZlcnJlZFZpZXcpOwotCi0gICAgICBieW9iUmVxdWVzdERlZmluZWQucHVzaChjb250
cm9sbGVyLmJ5b2JSZXF1ZXN0ICE9PSB1bmRlZmluZWQpOwotCi0gICAgICArK3B1bGxDb3VudDsK
LSAgICB9LAotICAgIHR5cGU6ICdieXRlcycKLSAgfSk7Ci0KLSAgY29uc3QgcmVhZGVyID0gc3Ry
ZWFtLmdldFJlYWRlcih7IG1vZGU6ICdieW9iJyB9KTsKLQotICByZXR1cm4gcmVhZGVyLnJlYWQo
bmV3IFVpbnQ4QXJyYXkoMSkpLnRoZW4ocmVzdWx0ID0+IHsKLSAgICBhc3NlcnRfZXF1YWxzKHJl
c3VsdC5kb25lLCBmYWxzZSwgJ3Jlc3VsdC5kb25lJyk7Ci0gICAgYXNzZXJ0X2VxdWFscyhyZXN1
bHQudmFsdWUuYnl0ZUxlbmd0aCwgMSwgJ3Jlc3VsdC52YWx1ZS5ieXRlTGVuZ3RoJyk7Ci0gICAg
YXNzZXJ0X2VxdWFscyhyZXN1bHQudmFsdWVbMF0sIDB4MDEsICdyZXN1bHQudmFsdWVbMF0nKTsK
LSAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMSwgJ3B1bGwoKSBzaG91bGQgYmUgY2FsbGVk
IG9ubHkgb25jZScpOwotICAgIGFzc2VydF90cnVlKGJ5b2JSZXF1ZXN0RGVmaW5lZFswXSwgJ2J5
b2JSZXF1ZXN0IG11c3Qgbm90IGJlIHVuZGVmaW5lZCBiZWZvcmUgcmVzcG9uZCgpJyk7Ci0gICAg
YXNzZXJ0X2ZhbHNlKGJ5b2JSZXF1ZXN0RGVmaW5lZFsxXSwgJ2J5b2JSZXF1ZXN0IG11c3QgYmUg
dW5kZWZpbmVkIGFmdGVyIHJlc3BvbmQoKScpOwotICB9KTsKLX0sICdSZWFkYWJsZVN0cmVhbSB3
aXRoIGJ5dGUgc291cmNlOiByZWFkKHZpZXcpLCB0aGVuIHJlc3BvbmQoKSB3aXRoIGEgdHJhbnNm
ZXJyZWQgQXJyYXlCdWZmZXInKTsKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLSAgbGV0IGNvbnRy
b2xsZXI7Ci0gIGxldCBieW9iUmVxdWVzdFdhc0RlZmluZWQ7Ci0gIGxldCBpbmNvcnJlY3RSZXNw
b25kRXhjZXB0aW9uOwotCi0gIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0g
ICAgc3RhcnQoYykgewotICAgICAgY29udHJvbGxlciA9IGM7Ci0gICAgfSwKLSAgICBwdWxsKCkg
ewotICAgICAgYnlvYlJlcXVlc3RXYXNEZWZpbmVkID0gY29udHJvbGxlci5ieW9iUmVxdWVzdCAh
PT0gdW5kZWZpbmVkOwotCi0gICAgICB0cnkgewotICAgICAgICBjb250cm9sbGVyLmJ5b2JSZXF1
ZXN0LnJlc3BvbmQoMik7Ci0gICAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAgIGluY29ycmVjdFJl
c3BvbmRFeGNlcHRpb24gPSBlOwotICAgICAgfQotCi0gICAgICBjb250cm9sbGVyLmJ5b2JSZXF1
ZXN0LnJlc3BvbmQoMSk7Ci0gICAgfSwKLSAgICB0eXBlOiAnYnl0ZXMnCi0gIH0pOwotCi0gIGNv
bnN0IHJlYWRlciA9IHN0cmVhbS5nZXRSZWFkZXIoeyBtb2RlOiAnYnlvYicgfSk7Ci0KLSAgcmV0
dXJuIHJlYWRlci5yZWFkKG5ldyBVaW50OEFycmF5KDEpKS50aGVuKCgpID0+IHsKLSAgICBhc3Nl
cnRfdHJ1ZShieW9iUmVxdWVzdFdhc0RlZmluZWQsICdieW9iUmVxdWVzdCBzaG91bGQgYmUgZGVm
aW5lZCcpOwotICAgIGFzc2VydF9ub3RfZXF1YWxzKGluY29ycmVjdFJlc3BvbmRFeGNlcHRpb24s
IHVuZGVmaW5lZCwgJ3Jlc3BvbmQoKSBtdXN0IHRocm93Jyk7Ci0gICAgYXNzZXJ0X2VxdWFscyhp
bmNvcnJlY3RSZXNwb25kRXhjZXB0aW9uLm5hbWUsICdSYW5nZUVycm9yJywgJ3Jlc3BvbmQoKSBt
dXN0IHRocm93IGEgUmFuZ2VFcnJvcicpOwotICB9KTsKLX0sICdSZWFkYWJsZVN0cmVhbSB3aXRo
IGJ5dGUgc291cmNlOiByZWFkKHZpZXcpLCB0aGVuIHJlc3BvbmQoKSB3aXRoIHRvbyBiaWcgdmFs
dWUnKTsKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLSAgbGV0IHB1bGxDb3VudCA9IDA7Ci0KLSAg
bGV0IGNvbnRyb2xsZXI7Ci0gIGxldCBieW9iUmVxdWVzdDsKLSAgbGV0IHZpZXdJbmZvOwotCi0g
IGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAg
ICAgY29udHJvbGxlciA9IGM7Ci0gICAgfSwKLSAgICBwdWxsKCkgewotICAgICAgKytwdWxsQ291
bnQ7Ci0KLSAgICAgIGJ5b2JSZXF1ZXN0ID0gY29udHJvbGxlci5ieW9iUmVxdWVzdDsKLSAgICAg
IGNvbnN0IHZpZXcgPSBieW9iUmVxdWVzdC52aWV3OwotICAgICAgdmlld0luZm8gPSBleHRyYWN0
Vmlld0luZm8odmlldyk7Ci0KLSAgICAgIHZpZXdbMF0gPSAweDAxOwotICAgICAgdmlld1sxXSA9
IDB4MDI7Ci0gICAgICB2aWV3WzJdID0gMHgwMzsKLQotICAgICAgY29udHJvbGxlci5ieW9iUmVx
dWVzdC5yZXNwb25kKDMpOwotICAgIH0sCi0gICAgdHlwZTogJ2J5dGVzJwotICB9KTsKLQotICBj
b25zdCByZWFkZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKHsgbW9kZTogJ2J5b2InIH0pOwotCi0gIHJl
dHVybiByZWFkZXIucmVhZChuZXcgVWludDE2QXJyYXkoMikpLnRoZW4ocmVzdWx0ID0+IHsKLSAg
ICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMSk7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKHJlc3Vs
dC5kb25lLCBmYWxzZSwgJ2RvbmUnKTsKLQotICAgIGNvbnN0IHZpZXcgPSByZXN1bHQudmFsdWU7
Ci0gICAgYXNzZXJ0X2VxdWFscyh2aWV3LmJ5dGVPZmZzZXQsIDAsICdieXRlT2Zmc2V0Jyk7Ci0g
ICAgYXNzZXJ0X2VxdWFscyh2aWV3LmJ5dGVMZW5ndGgsIDIsICdieXRlTGVuZ3RoJyk7Ci0KLSAg
ICBhc3NlcnRfZXF1YWxzKHZpZXdbMF0sIDB4MDIwMSk7Ci0KLSAgICByZXR1cm4gcmVhZGVyLnJl
YWQobmV3IFVpbnQ4QXJyYXkoMSkpOwotICB9KS50aGVuKHJlc3VsdCA9PiB7Ci0gICAgYXNzZXJ0
X2VxdWFscyhwdWxsQ291bnQsIDEpOwotICAgIGFzc2VydF9ub3RfZXF1YWxzKGJ5b2JSZXF1ZXN0
LCB1bmRlZmluZWQsICdieW9iUmVxdWVzdCBtdXN0IG5vdCBiZSB1bmRlZmluZWQnKTsKLSAgICBh
c3NlcnRfZXF1YWxzKHZpZXdJbmZvLmNvbnN0cnVjdG9yLCBVaW50OEFycmF5LCAndmlldy5jb25z
dHJ1Y3RvciBzaG91bGQgYmUgVWludDhBcnJheScpOwotICAgIGFzc2VydF9lcXVhbHModmlld0lu
Zm8uYnVmZmVyQnl0ZUxlbmd0aCwgNCwgJ3ZpZXcuYnVmZmVyLmJ5dGVMZW5ndGggc2hvdWxkIGJl
IDQnKTsKLSAgICBhc3NlcnRfZXF1YWxzKHZpZXdJbmZvLmJ5dGVPZmZzZXQsIDAsICd2aWV3LmJ5
dGVPZmZzZXQgc2hvdWxkIGJlIDAnKTsKLSAgICBhc3NlcnRfZXF1YWxzKHZpZXdJbmZvLmJ5dGVM
ZW5ndGgsIDQsICd2aWV3LmJ5dGVMZW5ndGggc2hvdWxkIGJlIDQnKTsKLQotICAgIGFzc2VydF9l
cXVhbHMocmVzdWx0LmRvbmUsIGZhbHNlLCAnZG9uZScpOwotCi0gICAgY29uc3QgdmlldyA9IHJl
c3VsdC52YWx1ZTsKLSAgICBhc3NlcnRfZXF1YWxzKHZpZXcuYnl0ZU9mZnNldCwgMCwgJ2J5dGVP
ZmZzZXQnKTsKLSAgICBhc3NlcnRfZXF1YWxzKHZpZXcuYnl0ZUxlbmd0aCwgMSwgJ2J5dGVMZW5n
dGgnKTsKLQotICAgIGFzc2VydF9lcXVhbHModmlld1swXSwgMHgwMyk7Ci0gIH0pOwotfSwgJ1Jl
YWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IHJlc3BvbmQoMykgdG8gcmVhZCh2aWV3KSB3
aXRoIDIgZWxlbWVudCBVaW50MTZBcnJheSBlbnF1ZXVlcyB0aGUgMSBieXRlICcgKwotICAgJ3Jl
bWFpbmRlcicpOwotCi1wcm9taXNlX3Rlc3QodCA9PiB7Ci0gIGNvbnN0IHN0cmVhbSA9IG5ldyBS
ZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoY29udHJvbGxlcikgewotICAgICAgY29uc3Qgdmll
dyA9IG5ldyBVaW50OEFycmF5KDE2KTsKLSAgICAgIHZpZXdbMTVdID0gMHgwMTsKLSAgICAgIGNv
bnRyb2xsZXIuZW5xdWV1ZSh2aWV3KTsKLSAgICB9LAotICAgIHB1bGw6IHQudW5yZWFjaGVkX2Z1
bmMoJ3B1bGwoKSBzaG91bGQgbm90IGJlIGNhbGxlZCcpLAotICAgIHR5cGU6ICdieXRlcycKLSAg
fSk7Ci0KLSAgY29uc3QgcmVhZGVyID0gc3RyZWFtLmdldFJlYWRlcih7IG1vZGU6ICdieW9iJyB9
KTsKLQotICByZXR1cm4gcmVhZGVyLnJlYWQobmV3IFVpbnQ4QXJyYXkoMTYpKS50aGVuKHJlc3Vs
dCA9PiB7Ci0gICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQuZG9uZSwgZmFsc2UpOwotCi0gICAgY29u
c3QgdmlldyA9IHJlc3VsdC52YWx1ZTsKLSAgICBhc3NlcnRfZXF1YWxzKHZpZXcuYnl0ZU9mZnNl
dCwgMCk7Ci0gICAgYXNzZXJ0X2VxdWFscyh2aWV3LmJ5dGVMZW5ndGgsIDE2KTsKLSAgICBhc3Nl
cnRfZXF1YWxzKHZpZXdbMTVdLCAweDAxKTsKLSAgfSk7Ci19LCAnUmVhZGFibGVTdHJlYW0gd2l0
aCBieXRlIHNvdXJjZTogZW5xdWV1ZSgpLCBnZXRSZWFkZXIoKSwgdGhlbiByZWFkKHZpZXcpJyk7
Ci0KLXByb21pc2VfdGVzdCh0ID0+IHsKLSAgbGV0IGNhbmNlbENvdW50ID0gMDsKLSAgbGV0IHJl
YXNvbjsKLQotICBjb25zdCBwYXNzZWRSZWFzb24gPSBuZXcgVHlwZUVycm9yKCdmb28nKTsKLQot
ICBjb25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAg
ICAgIGMuZW5xdWV1ZShuZXcgVWludDhBcnJheSgxNikpOwotICAgIH0sCi0gICAgcHVsbDogdC51
bnJlYWNoZWRfZnVuYygncHVsbCgpIHNob3VsZCBub3QgYmUgY2FsbGVkJyksCi0gICAgY2FuY2Vs
KHIpIHsKLSAgICAgIGlmIChjYW5jZWxDb3VudCA9PT0gMCkgewotICAgICAgICByZWFzb24gPSBy
OwotICAgICAgfQotCi0gICAgICArK2NhbmNlbENvdW50OwotICAgIH0sCi0gICAgdHlwZTogJ2J5
dGVzJwotICB9KTsKLQotICBjb25zdCByZWFkZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKCk7Ci0KLSAg
cmV0dXJuIHJlYWRlci5jYW5jZWwocGFzc2VkUmVhc29uKS50aGVuKHJlc3VsdCA9PiB7Ci0gICAg
YXNzZXJ0X2VxdWFscyhyZXN1bHQsIHVuZGVmaW5lZCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhjYW5j
ZWxDb3VudCwgMSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhyZWFzb24sIHBhc3NlZFJlYXNvbiwgJ3Jl
YXNvbiBzaG91bGQgZXF1YWwgdGhlIHBhc3NlZCByZWFzb24nKTsKLSAgfSk7Ci19LCAnUmVhZGFi
bGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogZW5xdWV1ZSgpLCBnZXRSZWFkZXIoKSwgdGhlbiBj
YW5jZWwoKSAobW9kZSA9IG5vdCBCWU9CKScpOwotCi1wcm9taXNlX3Rlc3QodCA9PiB7Ci0gIGxl
dCBjYW5jZWxDb3VudCA9IDA7Ci0gIGxldCByZWFzb247Ci0KLSAgY29uc3QgcGFzc2VkUmVhc29u
ID0gbmV3IFR5cGVFcnJvcignZm9vJyk7Ci0KLSAgY29uc3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxl
U3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0gICAgICBjLmVucXVldWUobmV3IFVpbnQ4QXJyYXko
MTYpKTsKLSAgICB9LAotICAgIHB1bGw6IHQudW5yZWFjaGVkX2Z1bmMoJ3B1bGwoKSBzaG91bGQg
bm90IGJlIGNhbGxlZCcpLAotICAgIGNhbmNlbChyKSB7Ci0gICAgICBpZiAoY2FuY2VsQ291bnQg
PT09IDApIHsKLSAgICAgICAgcmVhc29uID0gcjsKLSAgICAgIH0KLQotICAgICAgKytjYW5jZWxD
b3VudDsKLSAgICB9LAotICAgIHR5cGU6ICdieXRlcycKLSAgfSk7Ci0KLSAgY29uc3QgcmVhZGVy
ID0gc3RyZWFtLmdldFJlYWRlcih7IG1vZGU6ICdieW9iJyB9KTsKLQotICByZXR1cm4gcmVhZGVy
LmNhbmNlbChwYXNzZWRSZWFzb24pLnRoZW4ocmVzdWx0ID0+IHsKLSAgICBhc3NlcnRfZXF1YWxz
KHJlc3VsdCwgdW5kZWZpbmVkKTsKLSAgICBhc3NlcnRfZXF1YWxzKGNhbmNlbENvdW50LCAxKTsK
LSAgICBhc3NlcnRfZXF1YWxzKHJlYXNvbiwgcGFzc2VkUmVhc29uLCAncmVhc29uIHNob3VsZCBl
cXVhbCB0aGUgcGFzc2VkIHJlYXNvbicpOwotICB9KTsKLX0sICdSZWFkYWJsZVN0cmVhbSB3aXRo
IGJ5dGUgc291cmNlOiBlbnF1ZXVlKCksIGdldFJlYWRlcigpLCB0aGVuIGNhbmNlbCgpIChtb2Rl
ID0gQllPQiknKTsKLQotcHJvbWlzZV90ZXN0KHQgPT4gewotICBsZXQgY2FuY2VsQ291bnQgPSAw
OwotICBsZXQgcmVhc29uOwotCi0gIGNvbnN0IHBhc3NlZFJlYXNvbiA9IG5ldyBUeXBlRXJyb3Io
J2ZvbycpOwotCi0gIGxldCBjb250cm9sbGVyOwotCi0gIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFk
YWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgY29udHJvbGxlciA9IGM7Ci0gICAg
fSwKLSAgICBwdWxsOiB0LnVucmVhY2hlZF9mdW5jKCdwdWxsKCkgc2hvdWxkIG5vdCBiZSBjYWxs
ZWQnKSwKLSAgICBjYW5jZWwocikgewotICAgICAgaWYgKGNhbmNlbENvdW50ID09PSAwKSB7Ci0g
ICAgICAgIHJlYXNvbiA9IHI7Ci0gICAgICAgIGNvbnRyb2xsZXIuYnlvYlJlcXVlc3QucmVzcG9u
ZCgwKTsKLSAgICAgIH0KLQotICAgICAgKytjYW5jZWxDb3VudDsKLQotICAgICAgcmV0dXJuICdi
YXInOwotICAgIH0sCi0gICAgdHlwZTogJ2J5dGVzJwotICB9KTsKLQotICBjb25zdCByZWFkZXIg
PSBzdHJlYW0uZ2V0UmVhZGVyKHsgbW9kZTogJ2J5b2InIH0pOwotCi0gIGNvbnN0IHJlYWRQcm9t
aXNlID0gcmVhZGVyLnJlYWQobmV3IFVpbnQ4QXJyYXkoMSkpLnRoZW4ocmVzdWx0ID0+IHsKLSAg
ICBhc3NlcnRfZXF1YWxzKHJlc3VsdC5kb25lLCB0cnVlKTsKLSAgfSk7Ci0KLSAgY29uc3QgY2Fu
Y2VsUHJvbWlzZSA9IHJlYWRlci5jYW5jZWwocGFzc2VkUmVhc29uKS50aGVuKHJlc3VsdCA9PiB7
Ci0gICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQsIHVuZGVmaW5lZCk7Ci0gICAgYXNzZXJ0X2VxdWFs
cyhjYW5jZWxDb3VudCwgMSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhyZWFzb24sIHBhc3NlZFJlYXNv
biwgJ3JlYXNvbiBzaG91bGQgZXF1YWwgdGhlIHBhc3NlZCByZWFzb24nKTsKLSAgfSk7Ci0KLSAg
cmV0dXJuIFByb21pc2UuYWxsKFtyZWFkUHJvbWlzZSwgY2FuY2VsUHJvbWlzZV0pOwotfSwgJ1Jl
YWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IGdldFJlYWRlcigpLCByZWFkKHZpZXcpLCB0
aGVuIGNhbmNlbCgpJyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0gIGxldCBwdWxsQ291bnQg
PSAwOwotCi0gIGxldCBjb250cm9sbGVyOwotICBsZXQgYnlvYlJlcXVlc3Q7Ci0gIGNvbnN0IHZp
ZXdJbmZvcyA9IFtdOwotCi0gIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0g
ICAgc3RhcnQoYykgewotICAgICAgY29udHJvbGxlciA9IGM7Ci0gICAgfSwKLSAgICBwdWxsKCkg
ewotICAgICAgYnlvYlJlcXVlc3QgPSBjb250cm9sbGVyLmJ5b2JSZXF1ZXN0OwotCi0gICAgICB2
aWV3SW5mb3MucHVzaChleHRyYWN0Vmlld0luZm8oY29udHJvbGxlci5ieW9iUmVxdWVzdC52aWV3
KSk7Ci0gICAgICBjb250cm9sbGVyLmVucXVldWUobmV3IFVpbnQ4QXJyYXkoMSkpOwotICAgICAg
dmlld0luZm9zLnB1c2goZXh0cmFjdFZpZXdJbmZvKGNvbnRyb2xsZXIuYnlvYlJlcXVlc3Qudmll
dykpOwotCi0gICAgICArK3B1bGxDb3VudDsKLSAgICB9LAotICAgIHR5cGU6ICdieXRlcycKLSAg
fSk7Ci0KLSAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCkgPT4gewotICAgIGFzc2Vy
dF9lcXVhbHMocHVsbENvdW50LCAwLCAnTm8gcHVsbCgpIGFzIG5vIHJlYWQodmlldykgeWV0Jyk7
Ci0KLSAgICBjb25zdCByZWFkZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKHsgbW9kZTogJ2J5b2InIH0p
OwotCi0gICAgY29uc3QgcHJvbWlzZSA9IHJlYWRlci5yZWFkKG5ldyBVaW50MTZBcnJheSgxKSku
dGhlbihyZXN1bHQgPT4gewotICAgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQuZG9uZSwgdHJ1ZSwg
J3Jlc3VsdC5kb25lJyk7Ci0gICAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdC52YWx1ZS5jb25zdHJ1
Y3RvciwgVWludDE2QXJyYXksICdyZXN1bHQudmFsdWUnKTsKLSAgICB9KTsKLQotICAgIGFzc2Vy
dF9lcXVhbHMocHVsbENvdW50LCAxLCAnMSBwdWxsKCkgc2hvdWxkIGhhdmUgYmVlbiBtYWRlIGlu
IHJlc3BvbnNlIHRvIHBhcnRpYWwgZmlsbCBieSBlbnF1ZXVlKCknKTsKLSAgICBhc3NlcnRfbm90
X2VxdWFscyhieW9iUmVxdWVzdCwgdW5kZWZpbmVkLCAnYnlvYlJlcXVlc3Qgc2hvdWxkIG5vdCBi
ZSB1bmRlZmluZWQnKTsKLSAgICBhc3NlcnRfZXF1YWxzKHZpZXdJbmZvc1swXS5ieXRlTGVuZ3Ro
LCAyLCAnYnl0ZUxlbmd0aCBiZWZvcmUgZW5xdWV1ZSgpIHNob3VpbGQgYmUgMicpOwotICAgIGFz
c2VydF9lcXVhbHModmlld0luZm9zWzFdLmJ5dGVMZW5ndGgsIDEsICdieXRlTGVuZ3RoIGFmdGVy
IGVucXVldWUoKSBzaG91bGQgYmUgMScpOwotCi0KLSAgICByZWFkZXIuY2FuY2VsKCk7Ci0KLSAg
ICAvLyBUZWxsIHRoYXQgdGhlIGJ1ZmZlciBnaXZlbiB2aWEgcHVsbCgpIGlzIHJldHVybmVkLgot
ICAgIGNvbnRyb2xsZXIuYnlvYlJlcXVlc3QucmVzcG9uZCgwKTsKLQotICAgIGFzc2VydF9lcXVh
bHMocHVsbENvdW50LCAxLCAncHVsbCgpIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBvbmNlJyk7Ci0g
ICAgcmV0dXJuIHByb21pc2U7Ci0gIH0pOwotfSwgJ1JlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBz
b3VyY2U6IGNhbmNlbCgpIHdpdGggcGFydGlhbGx5IGZpbGxlZCBwZW5kaW5nIHB1bGwoKSByZXF1
ZXN0Jyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0gIGxldCBjb250cm9sbGVyOwotICBsZXQg
YnlvYlJlcXVlc3Q7Ci0KLSAgY29uc3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAg
ICBzdGFydChjKSB7Ci0gICAgICBjb25zdCB2aWV3ID0gbmV3IFVpbnQ4QXJyYXkoOCk7Ci0gICAg
ICB2aWV3WzddID0gMHgwMTsKLSAgICAgIGMuZW5xdWV1ZSh2aWV3KTsKLQotICAgICAgY29udHJv
bGxlciA9IGM7Ci0gICAgfSwKLSAgICBwdWxsKCkgewotICAgICAgYnlvYlJlcXVlc3QgPSBjb250
cm9sbGVyLmJ5b2JSZXF1ZXN0OwotICAgIH0sCi0gICAgdHlwZTogJ2J5dGVzJwotICB9KTsKLQot
ICBjb25zdCByZWFkZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKHsgbW9kZTogJ2J5b2InIH0pOwotCi0g
IGNvbnN0IGJ1ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcigxNik7Ci0KLSAgcmV0dXJuIHJlYWRlci5y
ZWFkKG5ldyBVaW50OEFycmF5KGJ1ZmZlciwgOCwgOCkpLnRoZW4ocmVzdWx0ID0+IHsKLSAgICBh
c3NlcnRfZXF1YWxzKHJlc3VsdC5kb25lLCBmYWxzZSk7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGJ5
b2JSZXF1ZXN0LCB1bmRlZmluZWQsICdieW9iUmVxdWVzdCBtdXN0IGJlIHVuZGVmaW5lZCcpOwot
Ci0gICAgY29uc3QgdmlldyA9IHJlc3VsdC52YWx1ZTsKLSAgICBhc3NlcnRfZXF1YWxzKHZpZXcu
Y29uc3RydWN0b3IsIFVpbnQ4QXJyYXkpOwotICAgIGFzc2VydF9lcXVhbHModmlldy5idWZmZXIu
Ynl0ZUxlbmd0aCwgMTYpOwotICAgIGFzc2VydF9lcXVhbHModmlldy5ieXRlT2Zmc2V0LCA4KTsK
LSAgICBhc3NlcnRfZXF1YWxzKHZpZXcuYnl0ZUxlbmd0aCwgOCk7Ci0gICAgYXNzZXJ0X2VxdWFs
cyh2aWV3WzddLCAweDAxKTsKLSAgfSk7Ci19LCAnUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNv
dXJjZTogZW5xdWV1ZSgpLCBnZXRSZWFkZXIoKSwgdGhlbiByZWFkKHZpZXcpIHdoZXJlIHZpZXcu
YnVmZmVyIGlzIG5vdCBmdWxseSAnICsKLSAgICdjb3ZlcmVkIGJ5IHZpZXcnKTsKLQotcHJvbWlz
ZV90ZXN0KCgpID0+IHsKLSAgbGV0IGNvbnRyb2xsZXI7Ci0gIGxldCBieW9iUmVxdWVzdDsKLQot
ICBjb25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAg
ICAgIGxldCB2aWV3OwotCi0gICAgICB2aWV3ID0gbmV3IFVpbnQ4QXJyYXkoMTYpOwotICAgICAg
dmlld1sxNV0gPSAxMjM7Ci0gICAgICBjLmVucXVldWUodmlldyk7Ci0KLSAgICAgIHZpZXcgPSBu
ZXcgVWludDhBcnJheSg4KTsKLSAgICAgIHZpZXdbN10gPSAxMTE7Ci0gICAgICBjLmVucXVldWUo
dmlldyk7Ci0KLSAgICAgIGNvbnRyb2xsZXIgPSBjOwotICAgIH0sCi0gICAgcHVsbCgpIHsKLSAg
ICAgIGJ5b2JSZXF1ZXN0ID0gY29udHJvbGxlci5ieW9iUmVxdWVzdDsKLSAgICB9LAotICAgIHR5
cGU6ICdieXRlcycKLSAgfSk7Ci0KLSAgY29uc3QgcmVhZGVyID0gc3RyZWFtLmdldFJlYWRlcih7
IG1vZGU6ICdieW9iJyB9KTsKLQotICByZXR1cm4gcmVhZGVyLnJlYWQobmV3IFVpbnQ4QXJyYXko
MjQpKS50aGVuKHJlc3VsdCA9PiB7Ci0gICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQuZG9uZSwgZmFs
c2UsICdkb25lJyk7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGJ5b2JSZXF1ZXN0LCB1bmRlZmluZWQs
ICdieW9iUmVxdWVzdCBtdXN0IGJlIHVuZGVmaW5lZCcpOwotCi0gICAgY29uc3QgdmlldyA9IHJl
c3VsdC52YWx1ZTsKLSAgICBhc3NlcnRfZXF1YWxzKHZpZXcuYnl0ZU9mZnNldCwgMCwgJ2J5dGVP
ZmZzZXQnKTsKLSAgICBhc3NlcnRfZXF1YWxzKHZpZXcuYnl0ZUxlbmd0aCwgMjQsICdieXRlTGVu
Z3RoJyk7Ci0gICAgYXNzZXJ0X2VxdWFscyh2aWV3WzE1XSwgMTIzLCAnQ29udGVudHMgYXJlIHNl
dCBmcm9tIHRoZSBmaXJzdCBjaHVuaycpOwotICAgIGFzc2VydF9lcXVhbHModmlld1syM10sIDEx
MSwgJ0NvbnRlbnRzIGFyZSBzZXQgZnJvbSB0aGUgc2Vjb25kIGNodW5rJyk7Ci0gIH0pOwotfSwg
J1JlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IE11bHRpcGxlIGVucXVldWUoKSwgZ2V0
UmVhZGVyKCksIHRoZW4gcmVhZCh2aWV3KScpOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotICBs
ZXQgYnlvYlJlcXVlc3Q7Ci0KLSAgY29uc3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsK
LSAgICBzdGFydChjKSB7Ci0gICAgICBjb25zdCB2aWV3ID0gbmV3IFVpbnQ4QXJyYXkoMTYpOwot
ICAgICAgdmlld1sxNV0gPSAweDAxOwotICAgICAgYy5lbnF1ZXVlKHZpZXcpOwotICAgIH0sCi0g
ICAgcHVsbChjb250cm9sbGVyKSB7Ci0gICAgICBieW9iUmVxdWVzdCA9IGNvbnRyb2xsZXIuYnlv
YlJlcXVlc3Q7Ci0gICAgfSwKLSAgICB0eXBlOiAnYnl0ZXMnCi0gIH0pOwotCi0gIGNvbnN0IHJl
YWRlciA9IHN0cmVhbS5nZXRSZWFkZXIoeyBtb2RlOiAnYnlvYicgfSk7Ci0KLSAgcmV0dXJuIHJl
YWRlci5yZWFkKG5ldyBVaW50OEFycmF5KDI0KSkudGhlbihyZXN1bHQgPT4gewotICAgIGFzc2Vy
dF9lcXVhbHMocmVzdWx0LmRvbmUsIGZhbHNlKTsKLQotICAgIGFzc2VydF9lcXVhbHMoYnlvYlJl
cXVlc3QsIHVuZGVmaW5lZCwgJ2J5b2JSZXF1ZXN0IG11c3QgYmUgdW5kZWZpbmVkJyk7Ci0KLSAg
ICBjb25zdCB2aWV3ID0gcmVzdWx0LnZhbHVlOwotICAgIGFzc2VydF9lcXVhbHModmlldy5ieXRl
T2Zmc2V0LCAwKTsKLSAgICBhc3NlcnRfZXF1YWxzKHZpZXcuYnl0ZUxlbmd0aCwgMTYpOwotICAg
IGFzc2VydF9lcXVhbHModmlld1sxNV0sIDB4MDEpOwotICB9KTsKLX0sICdSZWFkYWJsZVN0cmVh
bSB3aXRoIGJ5dGUgc291cmNlOiBlbnF1ZXVlKCksIGdldFJlYWRlcigpLCB0aGVuIHJlYWQodmll
dykgd2l0aCBhIGJpZ2dlciB2aWV3Jyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0gIGxldCBi
eW9iUmVxdWVzdDsKLQotICBjb25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAg
IHN0YXJ0KGMpIHsKLSAgICAgIGNvbnN0IHZpZXcgPSBuZXcgVWludDhBcnJheSgxNik7Ci0gICAg
ICB2aWV3WzddID0gMHgwMTsKLSAgICAgIHZpZXdbMTVdID0gMHgwMjsKLSAgICAgIGMuZW5xdWV1
ZSh2aWV3KTsKLSAgICB9LAotICAgIHB1bGwoY29udHJvbGxlcikgewotICAgICAgYnlvYlJlcXVl
c3QgPSBjb250cm9sbGVyLmJ5b2JSZXF1ZXN0OwotICAgIH0sCi0gICAgdHlwZTogJ2J5dGVzJwot
ICB9KTsKLQotICBjb25zdCByZWFkZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKHsgbW9kZTogJ2J5b2In
IH0pOwotCi0gIHJldHVybiByZWFkZXIucmVhZChuZXcgVWludDhBcnJheSg4KSkudGhlbihyZXN1
bHQgPT4gewotICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LmRvbmUsIGZhbHNlLCAnZG9uZScpOwot
Ci0gICAgY29uc3QgdmlldyA9IHJlc3VsdC52YWx1ZTsKLSAgICBhc3NlcnRfZXF1YWxzKHZpZXcu
Ynl0ZU9mZnNldCwgMCk7Ci0gICAgYXNzZXJ0X2VxdWFscyh2aWV3LmJ5dGVMZW5ndGgsIDgpOwot
ICAgIGFzc2VydF9lcXVhbHModmlld1s3XSwgMHgwMSk7Ci0KLSAgICByZXR1cm4gcmVhZGVyLnJl
YWQobmV3IFVpbnQ4QXJyYXkoOCkpOwotICB9KS50aGVuKHJlc3VsdCA9PiB7Ci0gICAgYXNzZXJ0
X2VxdWFscyhyZXN1bHQuZG9uZSwgZmFsc2UsICdkb25lJyk7Ci0KLSAgICBhc3NlcnRfZXF1YWxz
KGJ5b2JSZXF1ZXN0LCB1bmRlZmluZWQsICdieW9iUmVxdWVzdCBtdXN0IGJlIHVuZGVmaW5lZCcp
OwotCi0gICAgY29uc3QgdmlldyA9IHJlc3VsdC52YWx1ZTsKLSAgICBhc3NlcnRfZXF1YWxzKHZp
ZXcuYnl0ZU9mZnNldCwgMCk7Ci0gICAgYXNzZXJ0X2VxdWFscyh2aWV3LmJ5dGVMZW5ndGgsIDgp
OwotICAgIGFzc2VydF9lcXVhbHModmlld1s3XSwgMHgwMik7Ci0gIH0pOwotfSwgJ1JlYWRhYmxl
U3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IGVucXVldWUoKSwgZ2V0UmVhZGVyKCksIHRoZW4gcmVh
ZCh2aWV3KSB3aXRoIGEgc21hbGxlciB2aWV3cycpOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewot
ICBsZXQgY29udHJvbGxlcjsKLSAgbGV0IHZpZXdJbmZvOwotCi0gIGNvbnN0IHN0cmVhbSA9IG5l
dyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgY29uc3QgdmlldyA9IG5l
dyBVaW50OEFycmF5KDEpOwotICAgICAgdmlld1swXSA9IDB4ZmY7Ci0gICAgICBjLmVucXVldWUo
dmlldyk7Ci0KLSAgICAgIGNvbnRyb2xsZXIgPSBjOwotICAgIH0sCi0gICAgcHVsbCgpIHsKLSAg
ICAgIGlmIChjb250cm9sbGVyLmJ5b2JSZXF1ZXN0ID09PSB1bmRlZmluZWQpIHsKLSAgICAgICAg
cmV0dXJuOwotICAgICAgfQotCi0gICAgICBjb25zdCB2aWV3ID0gY29udHJvbGxlci5ieW9iUmVx
dWVzdC52aWV3OwotICAgICAgdmlld0luZm8gPSBleHRyYWN0Vmlld0luZm8odmlldyk7Ci0KLSAg
ICAgIHZpZXdbMF0gPSAweGFhOwotICAgICAgY29udHJvbGxlci5ieW9iUmVxdWVzdC5yZXNwb25k
KDEpOwotICAgIH0sCi0gICAgdHlwZTogJ2J5dGVzJwotICB9KTsKLQotICBjb25zdCByZWFkZXIg
PSBzdHJlYW0uZ2V0UmVhZGVyKHsgbW9kZTogJ2J5b2InIH0pOwotCi0gIHJldHVybiByZWFkZXIu
cmVhZChuZXcgVWludDE2QXJyYXkoMSkpLnRoZW4ocmVzdWx0ID0+IHsKLSAgICBhc3NlcnRfZXF1
YWxzKHJlc3VsdC5kb25lLCBmYWxzZSk7Ci0KLSAgICBjb25zdCB2aWV3ID0gcmVzdWx0LnZhbHVl
OwotICAgIGFzc2VydF9lcXVhbHModmlldy5ieXRlT2Zmc2V0LCAwKTsKLSAgICBhc3NlcnRfZXF1
YWxzKHZpZXcuYnl0ZUxlbmd0aCwgMik7Ci0gICAgYXNzZXJ0X2VxdWFscyh2aWV3WzBdLCAweGFh
ZmYpOwotCi0gICAgYXNzZXJ0X2VxdWFscyh2aWV3SW5mby5jb25zdHJ1Y3RvciwgVWludDhBcnJh
eSwgJ3ZpZXcuY29uc3RydWN0b3Igc2hvdWxkIGJlIFVpbnQ4QXJyYXknKTsKLSAgICBhc3NlcnRf
ZXF1YWxzKHZpZXdJbmZvLmJ1ZmZlckJ5dGVMZW5ndGgsIDIsICd2aWV3LmJ1ZmZlci5ieXRlTGVu
Z3RoIHNob3VsZCBiZSAyJyk7Ci0gICAgYXNzZXJ0X2VxdWFscyh2aWV3SW5mby5ieXRlT2Zmc2V0
LCAxLCAndmlldy5ieXRlT2Zmc2V0IHNob3VsZCBiZSAxJyk7Ci0gICAgYXNzZXJ0X2VxdWFscyh2
aWV3SW5mby5ieXRlTGVuZ3RoLCAxLCAndmlldy5ieXRlTGVuZ3RoIHNob3VsZCBiZSAxJyk7Ci0g
IH0pOwotfSwgJ1JlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IGVucXVldWUoKSAxIGJ5
dGUsIGdldFJlYWRlcigpLCB0aGVuIHJlYWQodmlldykgd2l0aCBVaW50MTZBcnJheScpOwotCi1w
cm9taXNlX3Rlc3QoKCkgPT4gewotICBsZXQgcHVsbENvdW50ID0gMDsKLQotICBsZXQgY29udHJv
bGxlcjsKLSAgbGV0IGJ5b2JSZXF1ZXN0OwotICBsZXQgdmlld0luZm87Ci0gIGxldCBkZXNpcmVk
U2l6ZTsKLQotICBjb25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0
KGMpIHsKLSAgICAgIGNvbnN0IHZpZXcgPSBuZXcgVWludDhBcnJheSgzKTsKLSAgICAgIHZpZXdb
MF0gPSAweDAxOwotICAgICAgdmlld1syXSA9IDB4MDI7Ci0gICAgICBjLmVucXVldWUodmlldyk7
Ci0KLSAgICAgIGNvbnRyb2xsZXIgPSBjOwotICAgIH0sCi0gICAgcHVsbCgpIHsKLSAgICAgIGJ5
b2JSZXF1ZXN0ID0gY29udHJvbGxlci5ieW9iUmVxdWVzdDsKLQotICAgICAgY29uc3QgdmlldyA9
IGNvbnRyb2xsZXIuYnlvYlJlcXVlc3QudmlldzsKLQotICAgICAgdmlld0luZm8gPSBleHRyYWN0
Vmlld0luZm8odmlldyk7Ci0KLSAgICAgIHZpZXdbMF0gPSAweDAzOwotICAgICAgY29udHJvbGxl
ci5ieW9iUmVxdWVzdC5yZXNwb25kKDEpOwotCi0gICAgICBkZXNpcmVkU2l6ZSA9IGNvbnRyb2xs
ZXIuZGVzaXJlZFNpemU7Ci0KLSAgICAgICsrcHVsbENvdW50OwotICAgIH0sCi0gICAgdHlwZTog
J2J5dGVzJwotICB9KTsKLQotICAvLyBXYWl0IGZvciBjb21wbGV0aW9uIG9mIHRoZSBzdGFydCBt
ZXRob2QgdG8gYmUgcmVmbGVjdGVkLgotICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCkudGhlbigo
KSA9PiB7Ci0gICAgY29uc3QgcmVhZGVyID0gc3RyZWFtLmdldFJlYWRlcih7IG1vZGU6ICdieW9i
JyB9KTsKLQotICAgIGNvbnN0IHByb21pc2UgPSByZWFkZXIucmVhZChuZXcgVWludDE2QXJyYXko
MikpLnRoZW4ocmVzdWx0ID0+IHsKLSAgICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LmRvbmUsIGZh
bHNlLCAnZG9uZScpOwotCi0gICAgICBjb25zdCB2aWV3ID0gcmVzdWx0LnZhbHVlOwotICAgICAg
YXNzZXJ0X2VxdWFscyh2aWV3LmNvbnN0cnVjdG9yLCBVaW50MTZBcnJheSwgJ2NvbnN0cnVjdG9y
Jyk7Ci0gICAgICBhc3NlcnRfZXF1YWxzKHZpZXcuYnVmZmVyLmJ5dGVMZW5ndGgsIDQsICdidWZm
ZXIuYnl0ZUxlbmd0aCcpOwotICAgICAgYXNzZXJ0X2VxdWFscyh2aWV3LmJ5dGVPZmZzZXQsIDAs
ICdieXRlT2Zmc2V0Jyk7Ci0gICAgICBhc3NlcnRfZXF1YWxzKHZpZXcuYnl0ZUxlbmd0aCwgMiwg
J2J5dGVMZW5ndGgnKTsKLSAgICAgIGFzc2VydF9lcXVhbHModmlld1swXSwgMHgwMDAxLCAnQ29u
dGVudHMgYXJlIHNldCcpOwotCi0gICAgICBjb25zdCBwID0gcmVhZGVyLnJlYWQobmV3IFVpbnQx
NkFycmF5KDEpKTsKLQotICAgICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDEpOwotCi0gICAg
ICByZXR1cm4gcDsKLSAgICB9KS50aGVuKHJlc3VsdCA9PiB7Ci0gICAgICBhc3NlcnRfZXF1YWxz
KHJlc3VsdC5kb25lLCBmYWxzZSwgJ2RvbmUnKTsKLQotICAgICAgY29uc3QgdmlldyA9IHJlc3Vs
dC52YWx1ZTsKLSAgICAgIGFzc2VydF9lcXVhbHModmlldy5idWZmZXIuYnl0ZUxlbmd0aCwgMiwg
J2J1ZmZlci5ieXRlTGVuZ3RoJyk7Ci0gICAgICBhc3NlcnRfZXF1YWxzKHZpZXcuYnl0ZU9mZnNl
dCwgMCwgJ2J5dGVPZmZzZXQnKTsKLSAgICAgIGFzc2VydF9lcXVhbHModmlldy5ieXRlTGVuZ3Ro
LCAyLCAnYnl0ZUxlbmd0aCcpOwotICAgICAgYXNzZXJ0X2VxdWFscyh2aWV3WzBdLCAweDAzMDIs
ICdDb250ZW50cyBhcmUgc2V0Jyk7Ci0KLSAgICAgIGFzc2VydF9ub3RfZXF1YWxzKGJ5b2JSZXF1
ZXN0LCB1bmRlZmluZWQsICdieW9iUmVxdWVzdCBtdXN0IG5vdCBiZSB1bmRlZmluZWQnKTsKLSAg
ICAgIGFzc2VydF9lcXVhbHModmlld0luZm8uY29uc3RydWN0b3IsIFVpbnQ4QXJyYXksICd2aWV3
LmNvbnN0cnVjdG9yIHNob3VsZCBiZSBVaW50OEFycmF5Jyk7Ci0gICAgICBhc3NlcnRfZXF1YWxz
KHZpZXdJbmZvLmJ1ZmZlckJ5dGVMZW5ndGgsIDIsICd2aWV3LmJ1ZmZlci5ieXRlTGVuZ3RoIHNo
b3VsZCBiZSAyJyk7Ci0gICAgICBhc3NlcnRfZXF1YWxzKHZpZXdJbmZvLmJ5dGVPZmZzZXQsIDEs
ICd2aWV3LmJ5dGVPZmZzZXQgc2hvdWxkIGJlIDEnKTsKLSAgICAgIGFzc2VydF9lcXVhbHModmll
d0luZm8uYnl0ZUxlbmd0aCwgMSwgJ3ZpZXcuYnl0ZUxlbmd0aCBzaG91bGQgYmUgMScpOwotICAg
ICAgYXNzZXJ0X2VxdWFscyhkZXNpcmVkU2l6ZSwgMCwgJ2Rlc2lyZWRTaXplIHNob3VsZCBiZSB6
ZXJvJyk7Ci0gICAgfSk7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMCk7Ci0KLSAg
ICByZXR1cm4gcHJvbWlzZTsKLSAgfSk7Ci19LCAnUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNv
dXJjZTogZW5xdWV1ZSgpIDMgYnl0ZSwgZ2V0UmVhZGVyKCksIHRoZW4gcmVhZCh2aWV3KSB3aXRo
IDItZWxlbWVudCBVaW50MTZBcnJheScpOwotCi1wcm9taXNlX3Rlc3QodCA9PiB7Ci0gIGNvbnN0
IHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgY29u
c3QgdmlldyA9IG5ldyBVaW50OEFycmF5KDEpOwotICAgICAgdmlld1swXSA9IDB4ZmY7Ci0gICAg
ICBjLmVucXVldWUodmlldyk7Ci0gICAgICBjLmNsb3NlKCk7Ci0gICAgfSwKLSAgICBwdWxsOiB0
LnVucmVhY2hlZF9mdW5jKCdwdWxsKCkgc2hvdWxkIG5vdCBiZSBjYWxsZWQnKSwKLSAgICB0eXBl
OiAnYnl0ZXMnCi0gIH0pOwotCi0gIGNvbnN0IHJlYWRlciA9IHN0cmVhbS5nZXRSZWFkZXIoeyBt
b2RlOiAnYnlvYicgfSk7Ci0KLQotICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHQsIG5ldyBUeXBl
RXJyb3IoKSwgcmVhZGVyLnJlYWQobmV3IFVpbnQxNkFycmF5KDEpKSwgJ3JlYWQodmlldykgbXVz
dCBmYWlsJykKLSAgICAgIC50aGVuKCgpID0+IHByb21pc2VfcmVqZWN0cyh0LCBuZXcgVHlwZUVy
cm9yKCksIHJlYWRlci5jbG9zZWQsICdyZWFkZXIuY2xvc2VkIHNob3VsZCByZWplY3QnKSk7Ci19
LCAnUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogcmVhZCh2aWV3KSB3aXRoIFVpbnQx
NkFycmF5IG9uIGNsb3NlKCktZCBzdHJlYW0gd2l0aCAxIGJ5dGUgZW5xdWV1ZSgpLWQgbXVzdCAn
ICsKLSAgICdmYWlsJyk7Ci0KLXByb21pc2VfdGVzdCh0ID0+IHsKLSAgbGV0IGNvbnRyb2xsZXI7
Ci0KLSAgY29uc3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7
Ci0gICAgICBjb25zdCB2aWV3ID0gbmV3IFVpbnQ4QXJyYXkoMSk7Ci0gICAgICB2aWV3WzBdID0g
MHhmZjsKLSAgICAgIGMuZW5xdWV1ZSh2aWV3KTsKLQotICAgICAgY29udHJvbGxlciA9IGM7Ci0g
ICAgfSwKLSAgICBwdWxsOiB0LnVucmVhY2hlZF9mdW5jKCdwdWxsKCkgc2hvdWxkIG5vdCBiZSBj
YWxsZWQnKSwKLSAgICB0eXBlOiAnYnl0ZXMnCi0gIH0pOwotCi0gIGNvbnN0IHJlYWRlciA9IHN0
cmVhbS5nZXRSZWFkZXIoeyBtb2RlOiAnYnlvYicgfSk7Ci0KLSAgY29uc3QgcmVhZFByb21pc2Ug
PSByZWFkZXIucmVhZChuZXcgVWludDE2QXJyYXkoMSkpOwotCi0gIGFzc2VydF90aHJvd3MobmV3
IFR5cGVFcnJvcigpLCAoKSA9PiBjb250cm9sbGVyLmNsb3NlKCksICdjb250cm9sbGVyLmNsb3Nl
KCkgbXVzdCB0aHJvdycpOwotCi0gIHJldHVybiBwcm9taXNlX3JlamVjdHModCwgbmV3IFR5cGVF
cnJvcigpLCByZWFkUHJvbWlzZSwgJ3JlYWQodmlldykgbXVzdCBmYWlsJykKLSAgICAgIC50aGVu
KCgpID0+IHByb21pc2VfcmVqZWN0cyh0LCBuZXcgVHlwZUVycm9yKCksIHJlYWRlci5jbG9zZWQs
ICdyZWFkZXIuY2xvc2VkIG11c3QgcmVqZWN0JykpOwotfSwgJ1JlYWRhYmxlU3RyZWFtIHdpdGgg
Ynl0ZSBzb3VyY2U6IEEgc3RyZWFtIG11c3QgYmUgZXJyb3JlZCBpZiBjbG9zZSgpLWQgYmVmb3Jl
IGZ1bGZpbGxpbmcgcmVhZCh2aWV3KSB3aXRoICcgKwotICAgJ1VpbnQxNkFycmF5Jyk7Ci0KLXRl
c3QoKCkgPT4gewotICBsZXQgY29udHJvbGxlcjsKLQotICBuZXcgUmVhZGFibGVTdHJlYW0oewot
ICAgIHN0YXJ0KGMpIHsKLSAgICAgIGNvbnRyb2xsZXIgPSBjOwotICAgIH0sCi0gICAgdHlwZTog
J2J5dGVzJwotICB9KTsKLQotICAvLyBFbnF1ZXVlIGEgY2h1bmsgc28gdGhhdCB0aGUgc3RyZWFt
IGRvZXNuJ3QgZ2V0IGNsb3NlZC4gVGhpcyBpcyB0byBjaGVjayBkdXBsaWNhdGUgY2xvc2UoKSBj
YWxscyBhcmUgcmVqZWN0ZWQKLSAgLy8gZXZlbiBpZiB0aGUgc3RyZWFtIGhhcyBub3QgeWV0IGVu
dGVyZWQgdGhlIGNsb3NlZCBzdGF0ZS4KLSAgY29uc3QgdmlldyA9IG5ldyBVaW50OEFycmF5KDEp
OwotICBjb250cm9sbGVyLmVucXVldWUodmlldyk7Ci0gIGNvbnRyb2xsZXIuY2xvc2UoKTsKLQot
ICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gY29udHJvbGxlci5jbG9zZSgp
LCAnY29udHJvbGxlci5jbG9zZSgpIG11c3QgdGhyb3cnKTsKLX0sICdSZWFkYWJsZVN0cmVhbSB3
aXRoIGJ5dGUgc291cmNlOiBUaHJvdyBpZiBjbG9zZSgpLWVkIG1vcmUgdGhhbiBvbmNlJyk7Ci0K
LXRlc3QoKCkgPT4gewotICBsZXQgY29udHJvbGxlcjsKLQotICBuZXcgUmVhZGFibGVTdHJlYW0o
ewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGNvbnRyb2xsZXIgPSBjOwotICAgIH0sCi0gICAgdHlw
ZTogJ2J5dGVzJwotICB9KTsKLQotICAvLyBFbnF1ZXVlIGEgY2h1bmsgc28gdGhhdCB0aGUgc3Ry
ZWFtIGRvZXNuJ3QgZ2V0IGNsb3NlZC4gVGhpcyBpcyB0byBjaGVjayBlbnF1ZXVlKCkgYWZ0ZXIg
Y2xvc2UoKSBpcyAgcmVqZWN0ZWQKLSAgLy8gZXZlbiBpZiB0aGUgc3RyZWFtIGhhcyBub3QgeWV0
IGVudGVyZWQgdGhlIGNsb3NlZCBzdGF0ZS4KLSAgY29uc3QgdmlldyA9IG5ldyBVaW50OEFycmF5
KDEpOwotICBjb250cm9sbGVyLmVucXVldWUodmlldyk7Ci0gIGNvbnRyb2xsZXIuY2xvc2UoKTsK
LQotICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gY29udHJvbGxlci5lbnF1
ZXVlKHZpZXcpLCAnY29udHJvbGxlci5jbG9zZSgpIG11c3QgdGhyb3cnKTsKLX0sICdSZWFkYWJs
ZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBUaHJvdyBvbiBlbnF1ZXVlKCkgYWZ0ZXIgY2xvc2Uo
KScpOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotICBsZXQgY29udHJvbGxlcjsKLSAgbGV0IGJ5
b2JSZXF1ZXN0OwotICBsZXQgdmlld0luZm87Ci0KLSAgY29uc3Qgc3RyZWFtID0gbmV3IFJlYWRh
YmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0gICAgICBjb250cm9sbGVyID0gYzsKLSAgICB9
LAotICAgIHB1bGwoKSB7Ci0gICAgICBieW9iUmVxdWVzdCA9IGNvbnRyb2xsZXIuYnlvYlJlcXVl
c3Q7Ci0gICAgICBjb25zdCB2aWV3ID0gY29udHJvbGxlci5ieW9iUmVxdWVzdC52aWV3OwotICAg
ICAgdmlld0luZm8gPSBleHRyYWN0Vmlld0luZm8odmlldyk7Ci0KLSAgICAgIHZpZXdbMTVdID0g
MHgwMTsKLSAgICAgIGNvbnRyb2xsZXIuYnlvYlJlcXVlc3QucmVzcG9uZCgxNik7Ci0gICAgICBj
b250cm9sbGVyLmNsb3NlKCk7Ci0gICAgfSwKLSAgICB0eXBlOiAnYnl0ZXMnCi0gIH0pOwotCi0g
IGNvbnN0IHJlYWRlciA9IHN0cmVhbS5nZXRSZWFkZXIoeyBtb2RlOiAnYnlvYicgfSk7Ci0KLSAg
cmV0dXJuIHJlYWRlci5yZWFkKG5ldyBVaW50OEFycmF5KDE2KSkudGhlbihyZXN1bHQgPT4gewot
ICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LmRvbmUsIGZhbHNlKTsKLQotICAgIGNvbnN0IHZpZXcg
PSByZXN1bHQudmFsdWU7Ci0gICAgYXNzZXJ0X2VxdWFscyh2aWV3LmJ5dGVPZmZzZXQsIDApOwot
ICAgIGFzc2VydF9lcXVhbHModmlldy5ieXRlTGVuZ3RoLCAxNik7Ci0gICAgYXNzZXJ0X2VxdWFs
cyh2aWV3WzE1XSwgMHgwMSk7Ci0KLSAgICByZXR1cm4gcmVhZGVyLnJlYWQobmV3IFVpbnQ4QXJy
YXkoMTYpKTsKLSAgfSkudGhlbihyZXN1bHQgPT4gewotICAgIGFzc2VydF9lcXVhbHMocmVzdWx0
LmRvbmUsIHRydWUpOwotCi0gICAgY29uc3QgdmlldyA9IHJlc3VsdC52YWx1ZTsKLSAgICBhc3Nl
cnRfZXF1YWxzKHZpZXcuYnl0ZU9mZnNldCwgMCk7Ci0gICAgYXNzZXJ0X2VxdWFscyh2aWV3LmJ5
dGVMZW5ndGgsIDApOwotCi0gICAgYXNzZXJ0X25vdF9lcXVhbHMoYnlvYlJlcXVlc3QsIHVuZGVm
aW5lZCwgJ2J5b2JSZXF1ZXN0IG11c3Qgbm90IGJlIHVuZGVmaW5lZCcpOwotICAgIGFzc2VydF9l
cXVhbHModmlld0luZm8uY29uc3RydWN0b3IsIFVpbnQ4QXJyYXksICd2aWV3LmNvbnN0cnVjdG9y
IHNob3VsZCBiZSBVaW50OEFycmF5Jyk7Ci0gICAgYXNzZXJ0X2VxdWFscyh2aWV3SW5mby5idWZm
ZXJCeXRlTGVuZ3RoLCAxNiwgJ3ZpZXcuYnVmZmVyLmJ5dGVMZW5ndGggc2hvdWxkIGJlIDE2Jyk7
Ci0gICAgYXNzZXJ0X2VxdWFscyh2aWV3SW5mby5ieXRlT2Zmc2V0LCAwLCAndmlldy5ieXRlT2Zm
c2V0IHNob3VsZCBiZSAwJyk7Ci0gICAgYXNzZXJ0X2VxdWFscyh2aWV3SW5mby5ieXRlTGVuZ3Ro
LCAxNiwgJ3ZpZXcuYnl0ZUxlbmd0aCBzaG91bGQgYmUgMTYnKTsKLSAgfSk7Ci19LCAnUmVhZGFi
bGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogcmVhZCh2aWV3KSwgdGhlbiByZXNwb25kKCkgYW5k
IGNsb3NlKCkgaW4gcHVsbCgpJyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0gIGxldCBwdWxs
Q291bnQgPSAwOwotCi0gIGxldCBjb250cm9sbGVyOwotICBjb25zdCB2aWV3SW5mb3MgPSBbXTsK
LQotICBjb25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsK
LSAgICAgIGNvbnRyb2xsZXIgPSBjOwotICAgIH0sCi0gICAgcHVsbCgpIHsKLSAgICAgIGlmIChj
b250cm9sbGVyLmJ5b2JSZXF1ZXN0ID09PSB1bmRlZmluZWQpIHsKLSAgICAgICAgcmV0dXJuOwot
ICAgICAgfQotCi0gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDQ7ICsraSkgewotICAgICAgICBj
b25zdCB2aWV3ID0gY29udHJvbGxlci5ieW9iUmVxdWVzdC52aWV3OwotICAgICAgICB2aWV3SW5m
b3MucHVzaChleHRyYWN0Vmlld0luZm8odmlldykpOwotCi0gICAgICAgIHZpZXdbMF0gPSAweDAx
OwotICAgICAgICBjb250cm9sbGVyLmJ5b2JSZXF1ZXN0LnJlc3BvbmQoMSk7Ci0gICAgICB9Ci0K
LSAgICAgICsrcHVsbENvdW50OwotICAgIH0sCi0gICAgdHlwZTogJ2J5dGVzJwotICB9KTsKLQot
ICBjb25zdCByZWFkZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKHsgbW9kZTogJ2J5b2InIH0pOwotCi0g
IHJldHVybiByZWFkZXIucmVhZChuZXcgVWludDMyQXJyYXkoMSkpLnRoZW4ocmVzdWx0ID0+IHsK
LSAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdC5kb25lLCBmYWxzZSk7Ci0KLSAgICBjb25zdCB2aWV3
ID0gcmVzdWx0LnZhbHVlOwotICAgIGFzc2VydF9lcXVhbHModmlldy5ieXRlT2Zmc2V0LCAwKTsK
LSAgICBhc3NlcnRfZXF1YWxzKHZpZXcuYnl0ZUxlbmd0aCwgNCk7Ci0gICAgYXNzZXJ0X2VxdWFs
cyh2aWV3WzBdLCAweDAxMDEwMTAxKTsKLQotICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAx
LCAncHVsbCgpIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBvbmNlJyk7Ci0KLSAgICBmb3IgKGxldCBp
ID0gMDsgaSA8IDQ7ICsraSkgewotICAgICAgYXNzZXJ0X2VxdWFscyh2aWV3SW5mb3NbaV0uY29u
c3RydWN0b3IsIFVpbnQ4QXJyYXksICd2aWV3LmNvbnN0cnVjdG9yIHNob3VsZCBiZSBVaW50OEFy
cmF5Jyk7Ci0gICAgICBhc3NlcnRfZXF1YWxzKHZpZXdJbmZvc1tpXS5idWZmZXJCeXRlTGVuZ3Ro
LCA0LCAndmlldy5idWZmZXIuYnl0ZUxlbmd0aCBzaG91bGQgYmUgNCcpOwotCi0gICAgICBhc3Nl
cnRfZXF1YWxzKHZpZXdJbmZvc1tpXS5ieXRlT2Zmc2V0LCBpLCAndmlldy5ieXRlT2Zmc2V0IHNo
b3VsZCBiZSBpJyk7Ci0gICAgICBhc3NlcnRfZXF1YWxzKHZpZXdJbmZvc1tpXS5ieXRlTGVuZ3Ro
LCA0IC0gaSwgJ3ZpZXcuYnl0ZUxlbmd0aCBzaG91bGQgYmUgNCAtIGknKTsKLSAgICB9Ci0gIH0p
OwotfSwgJ1JlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IHJlYWQodmlldykgd2l0aCBV
aW50MzJBcnJheSwgdGhlbiBmaWxsIGl0IGJ5IG11bHRpcGxlIHJlc3BvbmQoKSBjYWxscycpOwot
Ci1wcm9taXNlX3Rlc3QoKCkgPT4gewotICBsZXQgcHVsbENvdW50ID0gMDsKLQotICBsZXQgY29u
dHJvbGxlcjsKLSAgbGV0IGJ5b2JSZXF1ZXN0OwotCi0gIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFk
YWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgY29udHJvbGxlciA9IGM7Ci0gICAg
fSwKLSAgICBwdWxsKCkgewotICAgICAgYnlvYlJlcXVlc3QgPSBjb250cm9sbGVyLmJ5b2JSZXF1
ZXN0OwotCi0gICAgICArK3B1bGxDb3VudDsKLSAgICB9LAotICAgIHR5cGU6ICdieXRlcycKLSAg
fSk7Ci0KLSAgY29uc3QgcmVhZGVyID0gc3RyZWFtLmdldFJlYWRlcigpOwotCi0gIGNvbnN0IHAw
ID0gcmVhZGVyLnJlYWQoKS50aGVuKHJlc3VsdCA9PiB7Ci0gICAgYXNzZXJ0X2VxdWFscyhwdWxs
Q291bnQsIDEpOwotCi0gICAgY29udHJvbGxlci5lbnF1ZXVlKG5ldyBVaW50OEFycmF5KDIpKTsK
LQotICAgIC8vIFNpbmNlIHRoZSBxdWV1ZSBoYXMgZGF0YSBubyBsZXNzIHRoYW4gSFdNLCBubyBt
b3JlIHB1bGwuCi0gICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDEpOwotCi0gICAgYXNzZXJ0
X2VxdWFscyhyZXN1bHQuZG9uZSwgZmFsc2UpOwotCi0gICAgY29uc3QgdmlldyA9IHJlc3VsdC52
YWx1ZTsKLSAgICBhc3NlcnRfZXF1YWxzKHZpZXcuY29uc3RydWN0b3IsIFVpbnQ4QXJyYXkpOwot
ICAgIGFzc2VydF9lcXVhbHModmlldy5idWZmZXIuYnl0ZUxlbmd0aCwgMSk7Ci0gICAgYXNzZXJ0
X2VxdWFscyh2aWV3LmJ5dGVPZmZzZXQsIDApOwotICAgIGFzc2VydF9lcXVhbHModmlldy5ieXRl
TGVuZ3RoLCAxKTsKLSAgfSk7Ci0KLSAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDAsICdObyBw
dWxsIHNob3VsZCBoYXZlIGJlZW4gbWFkZSBzaW5jZSB0aGUgc3RhcnRQcm9taXNlIGhhcyBub3Qg
eWV0IGJlZW4gaGFuZGxlZCcpOwotCi0gIGNvbnN0IHAxID0gcmVhZGVyLnJlYWQoKS50aGVuKHJl
c3VsdCA9PiB7Ci0gICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDEpOwotCi0gICAgYXNzZXJ0
X2VxdWFscyhyZXN1bHQuZG9uZSwgZmFsc2UpOwotCi0gICAgY29uc3QgdmlldyA9IHJlc3VsdC52
YWx1ZTsKLSAgICBhc3NlcnRfZXF1YWxzKHZpZXcuY29uc3RydWN0b3IsIFVpbnQ4QXJyYXkpOwot
ICAgIGFzc2VydF9lcXVhbHModmlldy5idWZmZXIuYnl0ZUxlbmd0aCwgMik7Ci0gICAgYXNzZXJ0
X2VxdWFscyh2aWV3LmJ5dGVPZmZzZXQsIDApOwotICAgIGFzc2VydF9lcXVhbHModmlldy5ieXRl
TGVuZ3RoLCAyKTsKLQotICAgIGFzc2VydF9lcXVhbHMoYnlvYlJlcXVlc3QsIHVuZGVmaW5lZCwg
J2J5b2JSZXF1ZXN0IG11c3QgYmUgdW5kZWZpbmVkJyk7Ci0gIH0pOwotCi0gIGFzc2VydF9lcXVh
bHMocHVsbENvdW50LCAwLCAnTm8gcHVsbCBzaG91bGQgaGF2ZSBiZWVuIG1hZGUgc2luY2UgdGhl
IHN0YXJ0UHJvbWlzZSBoYXMgbm90IHlldCBiZWVuIGhhbmRsZWQnKTsKLQotICBjb250cm9sbGVy
LmVucXVldWUobmV3IFVpbnQ4QXJyYXkoMSkpOwotCi0gIGFzc2VydF9lcXVhbHMocHVsbENvdW50
LCAwLCAnTm8gcHVsbCBzaG91bGQgaGF2ZSBiZWVuIG1hZGUgc2luY2UgdGhlIHN0YXJ0UHJvbWlz
ZSBoYXMgbm90IHlldCBiZWVuIGhhbmRsZWQnKTsKLQotICByZXR1cm4gUHJvbWlzZS5hbGwoW3Aw
LCBwMV0pOwotfSwgJ1JlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IHJlYWQoKSB0d2lj
ZSwgdGhlbiBlbnF1ZXVlKCkgdHdpY2UnKTsKLQotcHJvbWlzZV90ZXN0KHQgPT4gewotICBsZXQg
Y29udHJvbGxlcjsKLQotICBjb25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAg
IHN0YXJ0KGMpIHsKLSAgICAgIGNvbnRyb2xsZXIgPSBjOwotICAgIH0sCi0gICAgcHVsbDogdC51
bnJlYWNoZWRfZnVuYygncHVsbCgpIHNob3VsZCBub3QgYmUgY2FsbGVkJyksCi0gICAgdHlwZTog
J2J5dGVzJwotICB9KTsKLQotICBjb25zdCByZWFkZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKHsgbW9k
ZTogJ2J5b2InIH0pOwotCi0gIGNvbnN0IHAwID0gcmVhZGVyLnJlYWQobmV3IFVpbnQ4QXJyYXko
MTYpKS50aGVuKHJlc3VsdCA9PiB7Ci0gICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQuZG9uZSwgdHJ1
ZSwgJzFzdCByZWFkOiBkb25lJyk7Ci0KLSAgICBjb25zdCB2aWV3ID0gcmVzdWx0LnZhbHVlOwot
ICAgIGFzc2VydF9lcXVhbHModmlldy5idWZmZXIuYnl0ZUxlbmd0aCwgMTYsICcxc3QgcmVhZDog
YnVmZmVyLmJ5dGVMZW5ndGgnKTsKLSAgICBhc3NlcnRfZXF1YWxzKHZpZXcuYnl0ZU9mZnNldCwg
MCwgJzFzdCByZWFkOiBieXRlT2Zmc2V0Jyk7Ci0gICAgYXNzZXJ0X2VxdWFscyh2aWV3LmJ5dGVM
ZW5ndGgsIDAsICcxc3QgcmVhZDogYnl0ZUxlbmd0aCcpOwotICB9KTsKLQotICBjb25zdCBwMSA9
IHJlYWRlci5yZWFkKG5ldyBVaW50OEFycmF5KDMyKSkudGhlbihyZXN1bHQgPT4gewotICAgIGFz
c2VydF9lcXVhbHMocmVzdWx0LmRvbmUsIHRydWUsICcybmQgcmVhZDogZG9uZScpOwotCi0gICAg
Y29uc3QgdmlldyA9IHJlc3VsdC52YWx1ZTsKLSAgICBhc3NlcnRfZXF1YWxzKHZpZXcuYnVmZmVy
LmJ5dGVMZW5ndGgsIDMyLCAnMm5kIHJlYWQ6IGJ1ZmZlci5ieXRlTGVuZ3RoJyk7Ci0gICAgYXNz
ZXJ0X2VxdWFscyh2aWV3LmJ5dGVPZmZzZXQsIDAsICcybmQgcmVhZDogYnl0ZU9mZnNldCcpOwot
ICAgIGFzc2VydF9lcXVhbHModmlldy5ieXRlTGVuZ3RoLCAwLCAnMm5kIHJlYWQ6IGJ5dGVMZW5n
dGgnKTsKLSAgfSk7Ci0KLSAgY29udHJvbGxlci5jbG9zZSgpOwotICBjb250cm9sbGVyLmJ5b2JS
ZXF1ZXN0LnJlc3BvbmQoMCk7Ci0KLSAgcmV0dXJuIFByb21pc2UuYWxsKFtwMCwgcDFdKTsKLX0s
ICdSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBNdWx0aXBsZSByZWFkKHZpZXcpLCBj
bG9zZSgpIGFuZCByZXNwb25kKCknKTsKLQotcHJvbWlzZV90ZXN0KHQgPT4gewotICBsZXQgY29u
dHJvbGxlcjsKLQotICBjb25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0
YXJ0KGMpIHsKLSAgICAgIGNvbnRyb2xsZXIgPSBjOwotICAgIH0sCi0gICAgcHVsbDogdC51bnJl
YWNoZWRfZnVuYygncHVsbCgpIHNob3VsZCBub3QgYmUgY2FsbGVkJyksCi0gICAgdHlwZTogJ2J5
dGVzJwotICB9KTsKLQotICBjb25zdCByZWFkZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKHsgbW9kZTog
J2J5b2InIH0pOwotCi0gIGNvbnN0IHAwID0gcmVhZGVyLnJlYWQobmV3IFVpbnQ4QXJyYXkoMTYp
KS50aGVuKHJlc3VsdCA9PiB7Ci0gICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQuZG9uZSwgZmFsc2Us
ICcxc3QgcmVhZDogZG9uZScpOwotCi0gICAgY29uc3QgdmlldyA9IHJlc3VsdC52YWx1ZTsKLSAg
ICBhc3NlcnRfZXF1YWxzKHZpZXcuYnVmZmVyLmJ5dGVMZW5ndGgsIDE2LCAnMXN0IHJlYWQ6IGJ1
ZmZlci5ieXRlTGVuZ3RoJyk7Ci0gICAgYXNzZXJ0X2VxdWFscyh2aWV3LmJ5dGVPZmZzZXQsIDAs
ICcxc3QgcmVhZDogYnl0ZU9mZnNldCcpOwotICAgIGFzc2VydF9lcXVhbHModmlldy5ieXRlTGVu
Z3RoLCAxNiwgJzFzdCByZWFkOiBieXRlTGVuZ3RoJyk7Ci0gIH0pOwotCi0gIGNvbnN0IHAxID0g
cmVhZGVyLnJlYWQobmV3IFVpbnQ4QXJyYXkoMTYpKS50aGVuKHJlc3VsdCA9PiB7Ci0gICAgYXNz
ZXJ0X2VxdWFscyhyZXN1bHQuZG9uZSwgZmFsc2UsICcybmQgcmVhZDogZG9uZScpOwotCi0gICAg
Y29uc3QgdmlldyA9IHJlc3VsdC52YWx1ZTsKLSAgICBhc3NlcnRfZXF1YWxzKHZpZXcuYnVmZmVy
LmJ5dGVMZW5ndGgsIDE2LCAnMm5kIHJlYWQ6IGJ1ZmZlci5ieXRlTGVuZ3RoJyk7Ci0gICAgYXNz
ZXJ0X2VxdWFscyh2aWV3LmJ5dGVPZmZzZXQsIDAsICcybmQgcmVhZDogYnl0ZU9mZnNldCcpOwot
ICAgIGFzc2VydF9lcXVhbHModmlldy5ieXRlTGVuZ3RoLCA4LCAnMm5kIHJlYWQ6IGJ5dGVMZW5n
dGgnKTsKLSAgfSk7Ci0KLSAgY29udHJvbGxlci5lbnF1ZXVlKG5ldyBVaW50OEFycmF5KDI0KSk7
Ci0KLSAgcmV0dXJuIFByb21pc2UuYWxsKFtwMCwgcDFdKTsKLX0sICdSZWFkYWJsZVN0cmVhbSB3
aXRoIGJ5dGUgc291cmNlOiBNdWx0aXBsZSByZWFkKHZpZXcpLCBiaWcgZW5xdWV1ZSgpJyk7Ci0K
LXByb21pc2VfdGVzdCh0ID0+IHsKLSAgbGV0IGNvbnRyb2xsZXI7Ci0KLSAgY29uc3Qgc3RyZWFt
ID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0gICAgICBjb250cm9sbGVy
ID0gYzsKLSAgICB9LAotICAgIHB1bGw6IHQudW5yZWFjaGVkX2Z1bmMoJ3B1bGwoKSBzaG91bGQg
bm90IGJlIGNhbGxlZCcpLAotICAgIHR5cGU6ICdieXRlcycKLSAgfSk7Ci0KLSAgY29uc3QgcmVh
ZGVyID0gc3RyZWFtLmdldFJlYWRlcih7IG1vZGU6ICdieW9iJyB9KTsKLQotICBsZXQgYnl0ZXNS
ZWFkID0gMDsKLQotICBmdW5jdGlvbiBwdW1wKCkgewotICAgIHJldHVybiByZWFkZXIucmVhZChu
ZXcgVWludDhBcnJheSg3KSkudGhlbihyZXN1bHQgPT4gewotICAgICAgaWYgKHJlc3VsdC5kb25l
KSB7Ci0gICAgICAgIGFzc2VydF9lcXVhbHMoYnl0ZXNSZWFkLCAxMDI0KTsKLSAgICAgICAgcmV0
dXJuIHVuZGVmaW5lZDsKLSAgICAgIH0KLQotICAgICAgYnl0ZXNSZWFkICs9IHJlc3VsdC52YWx1
ZS5ieXRlTGVuZ3RoOwotCi0gICAgICByZXR1cm4gcHVtcCgpOwotICAgIH0pOwotICB9Ci0gIGNv
bnN0IHByb21pc2UgPSBwdW1wKCk7Ci0KLSAgY29udHJvbGxlci5lbnF1ZXVlKG5ldyBVaW50OEFy
cmF5KDUxMikpOwotICBjb250cm9sbGVyLmVucXVldWUobmV3IFVpbnQ4QXJyYXkoNTEyKSk7Ci0g
IGNvbnRyb2xsZXIuY2xvc2UoKTsKLQotICByZXR1cm4gcHJvbWlzZTsKLX0sICdSZWFkYWJsZVN0
cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBNdWx0aXBsZSByZWFkKHZpZXcpIGFuZCBtdWx0aXBsZSBl
bnF1ZXVlKCknKTsKLQotcHJvbWlzZV90ZXN0KHQgPT4gewotICBsZXQgYnlvYlJlcXVlc3Q7Ci0g
IGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgcHVsbChjb250cm9sbGVy
KSB7Ci0gICAgICBieW9iUmVxdWVzdCA9IGNvbnRyb2xsZXIuYnlvYlJlcXVlc3Q7Ci0gICAgfSwK
LSAgICB0eXBlOiAnYnl0ZXMnCi0gIH0pOwotCi0gIGNvbnN0IHJlYWRlciA9IHN0cmVhbS5nZXRS
ZWFkZXIoeyBtb2RlOiAnYnlvYicgfSk7Ci0KLSAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0LCBu
ZXcgVHlwZUVycm9yKCksIHJlYWRlci5yZWFkKCksICdyZWFkKCkgbXVzdCBmYWlsJykKLSAgICAg
IC50aGVuKCgpID0+IGFzc2VydF9lcXVhbHMoYnlvYlJlcXVlc3QsIHVuZGVmaW5lZCwgJ2J5b2JS
ZXF1ZXN0IG11c3QgYmUgdW5kZWZpbmVkJykpOwotfSwgJ1JlYWRhYmxlU3RyZWFtIHdpdGggYnl0
ZSBzb3VyY2U6IHJlYWQodmlldykgd2l0aCBwYXNzaW5nIHVuZGVmaW5lZCBhcyB2aWV3IG11c3Qg
ZmFpbCcpOwotCi1wcm9taXNlX3Rlc3QodCA9PiB7Ci0gIGxldCBieW9iUmVxdWVzdDsKLSAgY29u
c3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBwdWxsKGNvbnRyb2xsZXIpIHsK
LSAgICAgIGJ5b2JSZXF1ZXN0ID0gY29udHJvbGxlci5ieW9iUmVxdWVzdDsKLSAgICB9LAotICAg
IHR5cGU6ICdieXRlcycKLSAgfSk7Ci0KLSAgY29uc3QgcmVhZGVyID0gc3RyZWFtLmdldFJlYWRl
cih7IG1vZGU6ICdieW9iJyB9KTsKLQotICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHQsIG5ldyBU
eXBlRXJyb3IoKSwgcmVhZGVyLnJlYWQobmV3IFVpbnQ4QXJyYXkoMCkpLCAncmVhZCh2aWV3KSBt
dXN0IGZhaWwnKQotICAgICAgLnRoZW4oKCkgPT4gYXNzZXJ0X2VxdWFscyhieW9iUmVxdWVzdCwg
dW5kZWZpbmVkLCAnYnlvYlJlcXVlc3QgbXVzdCBiZSB1bmRlZmluZWQnKSk7Ci19LCAnUmVhZGFi
bGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogcmVhZCh2aWV3KSB3aXRoIHplcm8tbGVuZ3RoIHZp
ZXcgbXVzdCBmYWlsJyk7Ci0KLXByb21pc2VfdGVzdCh0ID0+IHsKLSAgY29uc3Qgc3RyZWFtID0g
bmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICB0eXBlOiAnYnl0ZXMnCi0gIH0pOwotCi0gIGNvbnN0
IHJlYWRlciA9IHN0cmVhbS5nZXRSZWFkZXIoeyBtb2RlOiAnYnlvYicgfSk7Ci0KLSAgcmV0dXJu
IHByb21pc2VfcmVqZWN0cyh0LCBuZXcgVHlwZUVycm9yKCksIHJlYWRlci5yZWFkKHt9KSwgJ3Jl
YWQodmlldykgbXVzdCBmYWlsJyk7Ci19LCAnUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJj
ZTogcmVhZCh2aWV3KSB3aXRoIHBhc3NpbmcgYW4gZW1wdHkgb2JqZWN0IGFzIHZpZXcgbXVzdCBm
YWlsJyk7Ci0KLXByb21pc2VfdGVzdCh0ID0+IHsKLSAgY29uc3Qgc3RyZWFtID0gbmV3IFJlYWRh
YmxlU3RyZWFtKHsKLSAgICB0eXBlOiAnYnl0ZXMnCi0gIH0pOwotCi0gIGNvbnN0IHJlYWRlciA9
IHN0cmVhbS5nZXRSZWFkZXIoeyBtb2RlOiAnYnlvYicgfSk7Ci0KLSAgcmV0dXJuIHByb21pc2Vf
cmVqZWN0cyh0LCBuZXcgVHlwZUVycm9yKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmVh
ZGVyLnJlYWQoeyBidWZmZXI6IG5ldyBBcnJheUJ1ZmZlcigxMCksIGJ5dGVPZmZzZXQ6IDAsIGJ5
dGVMZW5ndGg6IDEwIH0pLAotICAgICAgICAgICAgICAgICAgICAgICAgICdyZWFkKHZpZXcpIG11
c3QgZmFpbCcpOwotfSwgJ1JlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IEV2ZW4gcmVh
ZCh2aWV3KSB3aXRoIHBhc3NpbmcgQXJyYXlCdWZmZXJWaWV3IGxpa2Ugb2JqZWN0IGFzIHZpZXcg
bXVzdCBmYWlsJyk7Ci0KLXByb21pc2VfdGVzdCh0ID0+IHsKLSAgY29uc3Qgc3RyZWFtID0gbmV3
IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0gICAgICBjLmVycm9yKGVycm9yMSk7
Ci0gICAgfSwKLSAgICBwdWxsOiB0LnVucmVhY2hlZF9mdW5jKCdwdWxsKCkgc2hvdWxkIG5vdCBi
ZSBjYWxsZWQnKSwKLSAgICB0eXBlOiAnYnl0ZXMnCi0gIH0pOwotCi0gIGNvbnN0IHJlYWRlciA9
IHN0cmVhbS5nZXRSZWFkZXIoKTsKLQotICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHQsIGVycm9y
MSwgcmVhZGVyLnJlYWQoKSwgJ3JlYWQoKSBtdXN0IGZhaWwnKTsKLX0sICdSZWFkYWJsZVN0cmVh
bSB3aXRoIGJ5dGUgc291cmNlOiByZWFkKCkgb24gYW4gZXJyb3JlZCBzdHJlYW0nKTsKLQotcHJv
bWlzZV90ZXN0KHQgPT4gewotICBsZXQgY29udHJvbGxlcjsKLQotICBjb25zdCBzdHJlYW0gPSBu
ZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGNvbnRyb2xsZXIgPSBj
OwotICAgIH0sCi0gICAgdHlwZTogJ2J5dGVzJwotICB9KTsKLQotICBjb25zdCByZWFkZXIgPSBz
dHJlYW0uZ2V0UmVhZGVyKCk7Ci0KLSAgY29uc3QgcHJvbWlzZSA9IHByb21pc2VfcmVqZWN0cyh0
LCBlcnJvcjEsIHJlYWRlci5yZWFkKCksICdyZWFkKCkgbXVzdCBmYWlsJyk7Ci0KLSAgY29udHJv
bGxlci5lcnJvcihlcnJvcjEpOwotCi0gIHJldHVybiBwcm9taXNlOwotfSwgJ1JlYWRhYmxlU3Ry
ZWFtIHdpdGggYnl0ZSBzb3VyY2U6IHJlYWQoKSwgdGhlbiBlcnJvcigpJyk7Ci0KLXByb21pc2Vf
dGVzdCh0ID0+IHsKLSAgY29uc3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBz
dGFydChjKSB7Ci0gICAgICBjLmVycm9yKGVycm9yMSk7Ci0gICAgfSwKLSAgICBwdWxsOiB0LnVu
cmVhY2hlZF9mdW5jKCdwdWxsKCkgc2hvdWxkIG5vdCBiZSBjYWxsZWQnKSwKLSAgICB0eXBlOiAn
Ynl0ZXMnCi0gIH0pOwotCi0gIGNvbnN0IHJlYWRlciA9IHN0cmVhbS5nZXRSZWFkZXIoeyBtb2Rl
OiAnYnlvYicgfSk7Ci0KLSAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0LCBlcnJvcjEsIHJlYWRl
ci5yZWFkKG5ldyBVaW50OEFycmF5KDEpKSwgJ3JlYWQoKSBtdXN0IGZhaWwnKTsKLX0sICdSZWFk
YWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiByZWFkKHZpZXcpIG9uIGFuIGVycm9yZWQgc3Ry
ZWFtJyk7Ci0KLXByb21pc2VfdGVzdCh0ID0+IHsKLSAgbGV0IGNvbnRyb2xsZXI7Ci0KLSAgY29u
c3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0gICAgICBj
b250cm9sbGVyID0gYzsKLSAgICB9LAotICAgIHR5cGU6ICdieXRlcycKLSAgfSk7Ci0KLSAgY29u
c3QgcmVhZGVyID0gc3RyZWFtLmdldFJlYWRlcih7IG1vZGU6ICdieW9iJyB9KTsKLQotICBjb25z
dCBwcm9taXNlID0gcHJvbWlzZV9yZWplY3RzKHQsIGVycm9yMSwgcmVhZGVyLnJlYWQobmV3IFVp
bnQ4QXJyYXkoMSkpLCAncmVhZCgpIG11c3QgZmFpbCcpOwotCi0gIGNvbnRyb2xsZXIuZXJyb3Io
ZXJyb3IxKTsKLQotICByZXR1cm4gcHJvbWlzZTsKLX0sICdSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5
dGUgc291cmNlOiByZWFkKHZpZXcpLCB0aGVuIGVycm9yKCknKTsKLQotcHJvbWlzZV90ZXN0KHQg
PT4gewotICBsZXQgY29udHJvbGxlcjsKLSAgbGV0IGJ5b2JSZXF1ZXN0OwotCi0gIGNvbnN0IHRl
c3RFcnJvciA9IG5ldyBUeXBlRXJyb3IoJ2ZvbycpOwotCi0gIGNvbnN0IHN0cmVhbSA9IG5ldyBS
ZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgY29udHJvbGxlciA9IGM7Ci0g
ICAgfSwKLSAgICBwdWxsKCkgewotICAgICAgYnlvYlJlcXVlc3QgPSBjb250cm9sbGVyLmJ5b2JS
ZXF1ZXN0OwotICAgICAgdGhyb3cgdGVzdEVycm9yOwotICAgIH0sCi0gICAgdHlwZTogJ2J5dGVz
JwotICB9KTsKLQotICBjb25zdCByZWFkZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKCk7Ci0KLSAgY29u
c3QgcHJvbWlzZSA9IHByb21pc2VfcmVqZWN0cyh0LCB0ZXN0RXJyb3IsIHJlYWRlci5yZWFkKCks
ICdyZWFkKCkgbXVzdCBmYWlsJyk7Ci0gIHJldHVybiBwcm9taXNlX3JlamVjdHModCwgdGVzdEVy
cm9yLCBwcm9taXNlLnRoZW4oKCkgPT4gcmVhZGVyLmNsb3NlZCkpCi0gICAgICAudGhlbigoKSA9
PiBhc3NlcnRfZXF1YWxzKGJ5b2JSZXF1ZXN0LCB1bmRlZmluZWQsICdieW9iUmVxdWVzdCBtdXN0
IGJlIHVuZGVmaW5lZCcpKTsKLX0sICdSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBU
aHJvd2luZyBpbiBwdWxsIGZ1bmN0aW9uIG11c3QgZXJyb3IgdGhlIHN0cmVhbScpOwotCi1wcm9t
aXNlX3Rlc3QodCA9PiB7Ci0gIGxldCBieW9iUmVxdWVzdDsKLQotICBjb25zdCBzdHJlYW0gPSBu
ZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHB1bGwoY29udHJvbGxlcikgewotICAgICAgYnlvYlJl
cXVlc3QgPSBjb250cm9sbGVyLmJ5b2JSZXF1ZXN0OwotICAgICAgY29udHJvbGxlci5lcnJvcihl
cnJvcjEpOwotICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignZm9vJyk7Ci0gICAgfSwKLSAgICB0
eXBlOiAnYnl0ZXMnCi0gIH0pOwotCi0gIGNvbnN0IHJlYWRlciA9IHN0cmVhbS5nZXRSZWFkZXIo
KTsKLQotICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHQsIGVycm9yMSwgcmVhZGVyLnJlYWQoKSwg
J3JlYWQoKSBtdXN0IGZhaWwnKQotICAgICAgLnRoZW4oKCkgPT4gcHJvbWlzZV9yZWplY3RzKHQs
IGVycm9yMSwgcmVhZGVyLmNsb3NlZCwgJ2Nsb3NlZCBtdXN0IGZhaWwnKSkKLSAgICAgIC50aGVu
KCgpID0+IGFzc2VydF9lcXVhbHMoYnlvYlJlcXVlc3QsIHVuZGVmaW5lZCwgJ2J5b2JSZXF1ZXN0
IG11c3QgYmUgdW5kZWZpbmVkJykpOwotfSwgJ1JlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3Vy
Y2U6IFRocm93aW5nIGluIHB1bGwgaW4gcmVzcG9uc2UgdG8gcmVhZCgpIG11c3QgYmUgaWdub3Jl
ZCBpZiB0aGUgc3RyZWFtIGlzICcgKwotICAgJ2Vycm9yZWQgaW4gaXQnKTsKLQotcHJvbWlzZV90
ZXN0KHQgPT4gewotICBsZXQgYnlvYlJlcXVlc3Q7Ci0KLSAgY29uc3QgdGVzdEVycm9yID0gbmV3
IFR5cGVFcnJvcignZm9vJyk7Ci0KLSAgY29uc3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFt
KHsKLSAgICBwdWxsKGNvbnRyb2xsZXIpIHsKLSAgICAgIGJ5b2JSZXF1ZXN0ID0gY29udHJvbGxl
ci5ieW9iUmVxdWVzdDsKLSAgICAgIHRocm93IHRlc3RFcnJvcjsKLSAgICB9LAotICAgIHR5cGU6
ICdieXRlcycKLSAgfSk7Ci0KLSAgY29uc3QgcmVhZGVyID0gc3RyZWFtLmdldFJlYWRlcih7IG1v
ZGU6ICdieW9iJyB9KTsKLQotICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHQsIHRlc3RFcnJvciwg
cmVhZGVyLnJlYWQobmV3IFVpbnQ4QXJyYXkoMSkpLCAncmVhZCh2aWV3KSBtdXN0IGZhaWwnKQot
ICAgICAgLnRoZW4oKCkgPT4gcHJvbWlzZV9yZWplY3RzKHQsIHRlc3RFcnJvciwgcmVhZGVyLmNs
b3NlZCwgJ3JlYWRlci5jbG9zZWQgbXVzdCByZWplY3QnKSkKLSAgICAgIC50aGVuKCgpID0+IGFz
c2VydF9ub3RfZXF1YWxzKGJ5b2JSZXF1ZXN0LCB1bmRlZmluZWQsICdieW9iUmVxdWVzdCBtdXN0
IG5vdCBiZSB1bmRlZmluZWQnKSk7Ci19LCAnUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJj
ZTogVGhyb3dpbmcgaW4gcHVsbCBpbiByZXNwb25zZSB0byByZWFkKHZpZXcpIGZ1bmN0aW9uIG11
c3QgZXJyb3IgdGhlIHN0cmVhbScpOwotCi1wcm9taXNlX3Rlc3QodCA9PiB7Ci0gIGxldCBieW9i
UmVxdWVzdDsKLQotICBjb25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHB1
bGwoY29udHJvbGxlcikgewotICAgICAgYnlvYlJlcXVlc3QgPSBjb250cm9sbGVyLmJ5b2JSZXF1
ZXN0OwotICAgICAgY29udHJvbGxlci5lcnJvcihlcnJvcjEpOwotICAgICAgdGhyb3cgbmV3IFR5
cGVFcnJvcignZm9vJyk7Ci0gICAgfSwKLSAgICB0eXBlOiAnYnl0ZXMnCi0gIH0pOwotCi0gIGNv
bnN0IHJlYWRlciA9IHN0cmVhbS5nZXRSZWFkZXIoeyBtb2RlOiAnYnlvYicgfSk7Ci0KLSAgcmV0
dXJuIHByb21pc2VfcmVqZWN0cyh0LCBlcnJvcjEsIHJlYWRlci5yZWFkKG5ldyBVaW50OEFycmF5
KDEpKSwgJ3JlYWQodmlldykgbXVzdCBmYWlsJykKLSAgICAgIC50aGVuKCgpID0+IHByb21pc2Vf
cmVqZWN0cyh0LCBlcnJvcjEsIHJlYWRlci5jbG9zZWQsICdjbG9zZWQgbXVzdCBmYWlsJykpCi0g
ICAgICAudGhlbigoKSA9PiBhc3NlcnRfbm90X2VxdWFscyhieW9iUmVxdWVzdCwgdW5kZWZpbmVk
LCAnYnlvYlJlcXVlc3QgbXVzdCBub3QgYmUgdW5kZWZpbmVkJykpOwotfSwgJ1JlYWRhYmxlU3Ry
ZWFtIHdpdGggYnl0ZSBzb3VyY2U6IFRocm93aW5nIGluIHB1bGwgaW4gcmVzcG9uc2UgdG8gcmVh
ZCh2aWV3KSBtdXN0IGJlIGlnbm9yZWQgaWYgdGhlIHN0cmVhbSBpcyAnICsKLSAgICdlcnJvcmVk
IGluIGl0Jyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0gIGxldCBieW9iUmVxdWVzdDsKLSAg
Y29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHB1bGwoY29udHJvbGxlcikgewot
ICAgICAgYnlvYlJlcXVlc3QgPSBjb250cm9sbGVyLmJ5b2JSZXF1ZXN0OwotICAgICAgYnlvYlJl
cXVlc3QucmVzcG9uZCg0KTsKLSAgICB9LAotICAgIHR5cGU6ICdieXRlcycKLSAgfSk7Ci0gIGNv
bnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcih7IG1vZGU6ICdieW9iJyB9KTsKLSAgY29uc3Qgdmll
dyA9IG5ldyBVaW50OEFycmF5KDE2KTsKLSAgcmV0dXJuIHJlYWRlci5yZWFkKHZpZXcpLnRoZW4o
KCkgPT4gewotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBieW9iUmVx
dWVzdC5yZXNwb25kKDQpLCAncmVzcG9uZCgpIHNob3VsZCB0aHJvdyBhIFR5cGVFcnJvcicpOwot
ICB9KTsKLX0sICdjYWxsaW5nIHJlc3BvbmQoKSB0d2ljZSBvbiB0aGUgc2FtZSBieW9iUmVxdWVz
dCBzaG91bGQgdGhyb3cnKTsKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLSAgbGV0IGJ5b2JSZXF1
ZXN0OwotICBjb25zdCBuZXdWaWV3ID0gKCkgPT4gbmV3IFVpbnQ4QXJyYXkoMTYpOwotICBjb25z
dCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgcHVsbChjb250cm9sbGVyKSB7Ci0gICAg
ICBieW9iUmVxdWVzdCA9IGNvbnRyb2xsZXIuYnlvYlJlcXVlc3Q7Ci0gICAgICBieW9iUmVxdWVz
dC5yZXNwb25kV2l0aE5ld1ZpZXcobmV3VmlldygpKTsKLSAgICB9LAotICAgIHR5cGU6ICdieXRl
cycKLSAgfSk7Ci0gIGNvbnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcih7IG1vZGU6ICdieW9iJyB9
KTsKLSAgcmV0dXJuIHJlYWRlci5yZWFkKG5ld1ZpZXcoKSkudGhlbigoKSA9PiB7Ci0gICAgYXNz
ZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IGJ5b2JSZXF1ZXN0LnJlc3BvbmRXaXRo
TmV3VmlldyhuZXdWaWV3KCkpLAotICAgICAgICAgICAgICAgICAgJ3Jlc3BvbmRXaXRoTmV3Vmll
dygpIHNob3VsZCB0aHJvdyBhIFR5cGVFcnJvcicpOwotICB9KTsKLX0sICdjYWxsaW5nIHJlc3Bv
bmRXaXRoTmV3VmlldygpIHR3aWNlIG9uIHRoZSBzYW1lIGJ5b2JSZXF1ZXN0IHNob3VsZCB0aHJv
dycpOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotICBsZXQgYnlvYlJlcXVlc3Q7Ci0gIGxldCBy
ZXNvbHZlUHVsbENhbGxlZFByb21pc2U7Ci0gIGNvbnN0IHB1bGxDYWxsZWRQcm9taXNlID0gbmV3
IFByb21pc2UocmVzb2x2ZSA9PiB7Ci0gICAgcmVzb2x2ZVB1bGxDYWxsZWRQcm9taXNlID0gcmVz
b2x2ZTsKLSAgfSk7Ci0gIGxldCByZXNvbHZlUHVsbDsKLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFi
bGVTdHJlYW0oewotICAgIHB1bGwoY29udHJvbGxlcikgewotICAgICAgYnlvYlJlcXVlc3QgPSBj
b250cm9sbGVyLmJ5b2JSZXF1ZXN0OwotICAgICAgcmVzb2x2ZVB1bGxDYWxsZWRQcm9taXNlKCk7
Ci0gICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7Ci0gICAgICAgIHJlc29sdmVQ
dWxsID0gcmVzb2x2ZTsKLSAgICAgIH0pOwotICAgIH0sCi0gICAgdHlwZTogJ2J5dGVzJwotICB9
KTsKLSAgY29uc3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKHsgbW9kZTogJ2J5b2InIH0pOwotICBj
b25zdCByZWFkUHJvbWlzZSA9IHJlYWRlci5yZWFkKG5ldyBVaW50OEFycmF5KDE2KSk7Ci0gIHJl
dHVybiBwdWxsQ2FsbGVkUHJvbWlzZS50aGVuKCgpID0+IHsKLSAgICBjb25zdCBjYW5jZWxQcm9t
aXNlID0gcmVhZGVyLmNhbmNlbCgnbWVoJyk7Ci0gICAgcmVzb2x2ZVB1bGwoKTsKLSAgICBieW9i
UmVxdWVzdC5yZXNwb25kKDApOwotICAgIHJldHVybiBQcm9taXNlLmFsbChbcmVhZFByb21pc2Us
IGNhbmNlbFByb21pc2VdKS50aGVuKCgpID0+IHsKLSAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5
cGVFcnJvcigpLCAoKSA9PiBieW9iUmVxdWVzdC5yZXNwb25kKDApLCAncmVzcG9uZCgpIHNob3Vs
ZCB0aHJvdycpOwotICAgIH0pOwotICB9KTsKLX0sICdjYWxsaW5nIHJlc3BvbmQoMCkgdHdpY2Ug
b24gdGhlIHNhbWUgYnlvYlJlcXVlc3Qgc2hvdWxkIHRocm93IGV2ZW4gd2hlbiBjbG9zZWQnKTsK
LQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLSAgbGV0IHJlc29sdmVQdWxsQ2FsbGVkUHJvbWlzZTsK
LSAgY29uc3QgcHVsbENhbGxlZFByb21pc2UgPSBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKLSAg
ICByZXNvbHZlUHVsbENhbGxlZFByb21pc2UgPSByZXNvbHZlOwotICB9KTsKLSAgbGV0IHJlc29s
dmVQdWxsOwotICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgcHVsbCgpIHsK
LSAgICAgIHJlc29sdmVQdWxsQ2FsbGVkUHJvbWlzZSgpOwotICAgICAgcmV0dXJuIG5ldyBQcm9t
aXNlKHJlc29sdmUgPT4gewotICAgICAgICByZXNvbHZlUHVsbCA9IHJlc29sdmU7Ci0gICAgICB9
KTsKLSAgICB9LAotICAgIHR5cGU6ICdieXRlcycKLSAgfSk7Ci0gIGNvbnN0IHJlYWRlciA9IHJz
LmdldFJlYWRlcih7IG1vZGU6ICdieW9iJyB9KTsKLSAgcmVhZGVyLnJlYWQobmV3IFVpbnQ4QXJy
YXkoMTYpKTsKLSAgcmV0dXJuIHB1bGxDYWxsZWRQcm9taXNlLnRoZW4oKCkgPT4gewotICAgIHJl
c29sdmVQdWxsKCk7Ci0gICAgcmV0dXJuIGRlbGF5KDApLnRoZW4oKCkgPT4gewotICAgICAgYXNz
ZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IHJlYWRlci5yZWxlYXNlTG9jaygpLCAn
cmVsZWFzZUxvY2soKSBzaG91bGQgdGhyb3cnKTsKLSAgICB9KTsKLSAgfSk7Ci19LCAncHVsbCgp
IHJlc29sdmluZyBzaG91bGQgbm90IG1ha2UgcmVsZWFzZUxvY2soKSBwb3NzaWJsZScpOwotCi1w
cm9taXNlX3Rlc3QoKCkgPT4gewotICAvLyBUZXN0cyBodHRwczovL2dpdGh1Yi5jb20vd2hhdHdn
L3N0cmVhbXMvaXNzdWVzLzY4NgotCi0gIGxldCBjb250cm9sbGVyOwotICBjb25zdCBycyA9IG5l
dyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgYXV0b0FsbG9jYXRlQ2h1bmtTaXplOiAxMjgsCi0gICAg
c3RhcnQoYykgewotICAgICAgY29udHJvbGxlciA9IGM7Ci0gICAgfSwKLSAgICB0eXBlOiAnYnl0
ZXMnCi0gIH0pOwotCi0gIGNvbnN0IHJlYWRQcm9taXNlID0gcnMuZ2V0UmVhZGVyKCkucmVhZCgp
OwotCi0gIGNvbnN0IGJyID0gY29udHJvbGxlci5ieW9iUmVxdWVzdDsKLSAgY29udHJvbGxlci5j
bG9zZSgpOwotCi0gIGJyLnJlc3BvbmQoMCk7Ci0KLSAgcmV0dXJuIHJlYWRQcm9taXNlOwotfSwg
J1JlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IGRlZmF1bHQgcmVhZGVyICsgYXV0b0Fs
bG9jYXRlQ2h1bmtTaXplICsgYnlvYlJlcXVlc3QgaW50ZXJhY3Rpb24nKTsKLQotdGVzdCgoKSA9
PiB7Ci0gIGNvbnN0IFJlYWRhYmxlU3RyZWFtQllPQlJlYWRlciA9IG5ldyBSZWFkYWJsZVN0cmVh
bSh7IHR5cGU6ICdieXRlcycgfSkuZ2V0UmVhZGVyKHsgbW9kZTogJ2J5b2InIH0pLmNvbnN0cnVj
dG9yOwotICBjb25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oeyB0eXBlOiAnYnl0ZXMn
IH0pOwotICBuZXcgUmVhZGFibGVTdHJlYW1CWU9CUmVhZGVyKHN0cmVhbSk7Ci19LCAnUmVhZGFi
bGVTdHJlYW1CWU9CUmVhZGVyIGNhbiBiZSBjb25zdHJ1Y3RlZCBkaXJlY3RseScpOwotCi10ZXN0
KCgpID0+IHsKLSAgY29uc3QgUmVhZGFibGVTdHJlYW1CWU9CUmVhZGVyID0gbmV3IFJlYWRhYmxl
U3RyZWFtKHsgdHlwZTogJ2J5dGVzJyB9KS5nZXRSZWFkZXIoeyBtb2RlOiAnYnlvYicgfSkuY29u
c3RydWN0b3I7Ci0gIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBuZXcgUmVh
ZGFibGVTdHJlYW1CWU9CUmVhZGVyKHt9KSwgJ2NvbnN0cnVjdG9yIG11c3QgdGhyb3cnKTsKLX0s
ICdSZWFkYWJsZVN0cmVhbUJZT0JSZWFkZXIgY29uc3RydWN0b3IgcmVxdWlyZXMgYSBSZWFkYWJs
ZVN0cmVhbSBhcmd1bWVudCcpOwotCi10ZXN0KCgpID0+IHsKLSAgY29uc3QgUmVhZGFibGVTdHJl
YW1CWU9CUmVhZGVyID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsgdHlwZTogJ2J5dGVzJyB9KS5nZXRS
ZWFkZXIoeyBtb2RlOiAnYnlvYicgfSkuY29uc3RydWN0b3I7Ci0gIGNvbnN0IHN0cmVhbSA9IG5l
dyBSZWFkYWJsZVN0cmVhbSh7IHR5cGU6ICdieXRlcycgfSk7Ci0gIHN0cmVhbS5nZXRSZWFkZXIo
KTsKLSAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IG5ldyBSZWFkYWJsZVN0
cmVhbUJZT0JSZWFkZXIoc3RyZWFtKSwgJ2NvbnN0cnVjdG9yIG11c3QgdGhyb3cnKTsKLX0sICdS
ZWFkYWJsZVN0cmVhbUJZT0JSZWFkZXIgY29uc3RydWN0b3IgcmVxdWlyZXMgYW4gdW5sb2NrZWQg
UmVhZGFibGVTdHJlYW0nKTsKLQotdGVzdCgoKSA9PiB7Ci0gIGNvbnN0IFJlYWRhYmxlU3RyZWFt
QllPQlJlYWRlciA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7IHR5cGU6ICdieXRlcycgfSkuZ2V0UmVh
ZGVyKHsgbW9kZTogJ2J5b2InIH0pLmNvbnN0cnVjdG9yOwotICBjb25zdCBzdHJlYW0gPSBuZXcg
UmVhZGFibGVTdHJlYW0oKTsKLSAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+
IG5ldyBSZWFkYWJsZVN0cmVhbUJZT0JSZWFkZXIoc3RyZWFtKSwgJ2NvbnN0cnVjdG9yIG11c3Qg
dGhyb3cnKTsKLX0sICdSZWFkYWJsZVN0cmVhbUJZT0JSZWFkZXIgY29uc3RydWN0b3IgcmVxdWly
ZXMgYSBSZWFkYWJsZVN0cmVhbSB3aXRoIHR5cGUgImJ5dGVzIicpOwotCi10ZXN0KCgpID0+IHsK
LSAgYXNzZXJ0X3Rocm93cyhuZXcgUmFuZ2VFcnJvcigpLCAoKSA9PiBuZXcgUmVhZGFibGVTdHJl
YW0oeyB0eXBlOiAnYnl0ZXMnIH0sIHsKLSAgICBzaXplKCkgewotICAgICAgcmV0dXJuIDE7Ci0g
ICAgfQotICB9KSwgJ2NvbnN0cnVjdG9yIHNob3VsZCB0aHJvdyBmb3Igc2l6ZSBmdW5jdGlvbicp
OwotCi0gIGFzc2VydF90aHJvd3MobmV3IFJhbmdlRXJyb3IoKSwgKCkgPT4gbmV3IFJlYWRhYmxl
U3RyZWFtKHsgdHlwZTogJ2J5dGVzJyB9LCB7IHNpemU6IG51bGwgfSksCi0gICAgICAgICAgICAg
ICAgJ2NvbnN0cnVjdG9yIHNob3VsZCB0aHJvdyBmb3Igc2l6ZSBkZWZpbmVkJyk7Ci0KLSAgYXNz
ZXJ0X3Rocm93cyhuZXcgUmFuZ2VFcnJvcigpLAotICAgICAgICAgICAgICAgICgpID0+IG5ldyBS
ZWFkYWJsZVN0cmVhbSh7IHR5cGU6ICdieXRlcycgfSwgbmV3IENvdW50UXVldWluZ1N0cmF0ZWd5
KHsgaGlnaFdhdGVyTWFyazogMSB9KSksCi0gICAgICAgICAgICAgICAgJ2NvbnN0cnVjdG9yIHNo
b3VsZCB0aHJvdyB3aGVuIHN0cmF0ZWd5IGlzIENvdW50UXVldWluZ1N0cmF0ZWd5Jyk7Ci0KLSAg
YXNzZXJ0X3Rocm93cyhuZXcgUmFuZ2VFcnJvcigpLAotICAgICAgICAgICAgICAgICgpID0+IG5l
dyBSZWFkYWJsZVN0cmVhbSh7IHR5cGU6ICdieXRlcycgfSwgbmV3IEJ5dGVMZW5ndGhRdWV1aW5n
U3RyYXRlZ3koeyBoaWdoV2F0ZXJNYXJrOiA1MTIgfSkpLAotICAgICAgICAgICAgICAgICdjb25z
dHJ1Y3RvciBzaG91bGQgdGhyb3cgd2hlbiBzdHJhdGVneSBpcyBCeXRlTGVuZ3RoUXVldWluZ1N0
cmF0ZWd5Jyk7Ci0KLSAgY2xhc3MgSGFzU2l6ZU1ldGhvZCB7Ci0gICAgc2l6ZSgpIHt9Ci0gfQot
Ci0gIGFzc2VydF90aHJvd3MobmV3IFJhbmdlRXJyb3IoKSwgKCkgPT4gbmV3IFJlYWRhYmxlU3Ry
ZWFtKHsgdHlwZTogJ2J5dGVzJyB9LCBuZXcgSGFzU2l6ZU1ldGhvZCgpKSwKLSAgICAgICAgICAg
ICAgICAnY29uc3RydWN0b3Igc2hvdWxkIHRocm93IHdoZW4gc2l6ZSBvbiB0aGUgcHJvdG90eXBl
IGNoYWluJyk7Ci19LCAnUmVhZGFibGVTdHJlYW0gY29uc3RydWN0b3Igc2hvdWxkIG5vdCBhY2Nl
cHQgYSBzdHJhdGVneSB3aXRoIGEgc2l6ZSBkZWZpbmVkIGlmIHR5cGUgaXMgImJ5dGVzIicpOwot
Ci1kb25lKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL2dlbmVyYWwuc2VydmljZXdv
cmtlci5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL2dlbmVyYWwuc2Vydmlj
ZXdvcmtlci5odHRwcy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDJhYWE1N2I4ZjViMjA0MGZiYmFmYzVmNGZkNzFlMzkyOGVlNTA2ZjUuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFtcy9nZW5lcmFs
LnNlcnZpY2V3b3JrZXIuaHR0cHMtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsODUg
KzAsMCBAQAotCi1IYXJuZXNzIEVycm9yIChUSU1FT1VUKSwgbWVzc2FnZSA9IG51bGwKLQotVElN
RU9VVCBTZXJ2aWNlIHdvcmtlciB0ZXN0IHNldHVwIFRlc3QgdGltZWQgb3V0Ci1QQVNTIGdldFJl
YWRlcih7bW9kZTogImJ5b2IifSkgdGhyb3dzIG9uIG5vbi1ieXRlcyBzdHJlYW1zIAotUEFTUyBS
ZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlIGNhbiBiZSBjb25zdHJ1Y3RlZCB3aXRoIG5v
IGVycm9ycyAKLVBBU1MgZ2V0UmVhZGVyKHttb2RlfSkgbXVzdCBwZXJmb3JtIFRvU3RyaW5nKCkg
Ci1QQVNTIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IENvbnN0cnVjdCBhbmQgZXhw
ZWN0IHN0YXJ0IGFuZCBwdWxsIGJlaW5nIGNhbGxlZCAKLVBBU1MgUmVhZGFibGVTdHJlYW0gd2l0
aCBieXRlIHNvdXJjZTogTm8gYXV0b21hdGljIHB1bGwgY2FsbCBpZiBzdGFydCBkb2Vzbid0IGZp
bmlzaCAKLVBBU1MgUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogQ29uc3RydWN0IHdp
dGggaGlnaFdhdGVyTWFyayBvZiAwIAotUEFTUyBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291
cmNlOiBkZXNpcmVkU2l6ZSB3aGVuIGNsb3NlZCAKLVBBU1MgUmVhZGFibGVTdHJlYW0gd2l0aCBi
eXRlIHNvdXJjZTogZGVzaXJlZFNpemUgd2hlbiBlcnJvcmVkIAotUEFTUyBSZWFkYWJsZVN0cmVh
bSB3aXRoIGJ5dGUgc291cmNlOiBnZXRSZWFkZXIoKSwgdGhlbiByZWxlYXNlTG9jaygpIAotUEFT
UyBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBnZXRSZWFkZXIoKSB3aXRoIG1vZGUg
c2V0IHRvIGJ5b2IsIHRoZW4gcmVsZWFzZUxvY2soKSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gd2l0
aCBieXRlIHNvdXJjZTogVGVzdCB0aGF0IGNsb3NpbmcgYSBzdHJlYW0gZG9lcyBub3QgcmVsZWFz
ZSBhIHJlYWRlciBhdXRvbWF0aWNhbGx5IAotUEFTUyBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUg
c291cmNlOiBUZXN0IHRoYXQgY2xvc2luZyBhIHN0cmVhbSBkb2VzIG5vdCByZWxlYXNlIGEgQllP
QiByZWFkZXIgYXV0b21hdGljYWxseSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNv
dXJjZTogVGVzdCB0aGF0IGVycm9yaW5nIGEgc3RyZWFtIGRvZXMgbm90IHJlbGVhc2UgYSByZWFk
ZXIgYXV0b21hdGljYWxseSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTog
VGVzdCB0aGF0IGVycm9yaW5nIGEgc3RyZWFtIGRvZXMgbm90IHJlbGVhc2UgYSBCWU9CIHJlYWRl
ciBhdXRvbWF0aWNhbGx5IAotUEFTUyBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBy
ZWxlYXNlTG9jaygpIG9uIFJlYWRhYmxlU3RyZWFtUmVhZGVyIHdpdGggcGVuZGluZyByZWFkKCkg
bXVzdCB0aHJvdyAKLVBBU1MgUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogQXV0b21h
dGljIHB1bGwoKSBhZnRlciBzdGFydCgpIAotUEFTUyBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUg
c291cmNlOiBBdXRvbWF0aWMgcHVsbCgpIGFmdGVyIHN0YXJ0KCkgYW5kIHJlYWQoKSAKLUZBSUwg
UmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogYXV0b0FsbG9jYXRlQ2h1bmtTaXplIGFz
c2VydF9lcXVhbHM6IHB1bGwoKSBtdXN0IGhhdmUgYmVlbiBpbnZva2VkIHR3aWNlIGV4cGVjdGVk
IDIgYnV0IGdvdCAxCi1QQVNTIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IE1peCBv
ZiBhdXRvIGFsbG9jYXRlIGFuZCBCWU9CIAotUEFTUyBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUg
c291cmNlOiBBdXRvbWF0aWMgcHVsbCgpIGFmdGVyIHN0YXJ0KCkgYW5kIHJlYWQodmlldykgCi1Q
QVNTIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IGVucXVldWUoKSwgZ2V0UmVhZGVy
KCksIHRoZW4gcmVhZCgpIAotUEFTUyBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBQ
dXNoIHNvdXJjZSB0aGF0IGRvZXNuJ3QgdW5kZXJzdGFuZCBwdWxsIHNpZ25hbCAKLUZBSUwgUmVh
ZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogcHVsbCgpIGZ1bmN0aW9uIGlzIG5vdCBjYWxs
YWJsZSBhc3NlcnRfdGhyb3dzOiBjb25zdHJ1Y3RvciBzaG91bGQgdGhyb3cgZnVuY3Rpb24gIigp
ID0+IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgcHVsbDogJ2ZvbycsCi0gICAgdHlwZTogJ2J5
dGVzJwotICB9KSIgZGlkIG5vdCB0aHJvdwotUEFTUyBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUg
c291cmNlOiBlbnF1ZXVlKCkgd2l0aCBVaW50MTZBcnJheSwgZ2V0UmVhZGVyKCksIHRoZW4gcmVh
ZCgpIAotUEFTUyBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBlbnF1ZXVlKCksIHJl
YWQodmlldykgcGFydGlhbGx5LCB0aGVuIHJlYWQoKSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gd2l0
aCBieXRlIHNvdXJjZTogZ2V0UmVhZGVyKCksIGVucXVldWUoKSwgY2xvc2UoKSwgdGhlbiByZWFk
KCkgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IGVucXVldWUoKSwgY2xv
c2UoKSwgZ2V0UmVhZGVyKCksIHRoZW4gcmVhZCgpIAotUEFTUyBSZWFkYWJsZVN0cmVhbSB3aXRo
IGJ5dGUgc291cmNlOiBSZXNwb25kIHRvIHB1bGwoKSBieSBlbnF1ZXVlKCkgCi1QQVNTIFJlYWRh
YmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IFJlc3BvbmQgdG8gcHVsbCgpIGJ5IGVucXVldWUo
KSBhc3luY2hyb25vdXNseSAKLVRJTUVPVVQgUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJj
ZTogUmVzcG9uZCB0byBtdWx0aXBsZSBwdWxsKCkgYnkgc2VwYXJhdGUgZW5xdWV1ZSgpIFRlc3Qg
dGltZWQgb3V0Ci1OT1RSVU4gUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogcmVhZCh2
aWV3KSwgdGhlbiByZXNwb25kKCkgCi1OT1RSVU4gUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNv
dXJjZTogcmVhZCh2aWV3KSwgdGhlbiByZXNwb25kKCkgd2l0aCBhIHRyYW5zZmVycmVkIEFycmF5
QnVmZmVyIAotTk9UUlVOIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IHJlYWQodmll
dyksIHRoZW4gcmVzcG9uZCgpIHdpdGggdG9vIGJpZyB2YWx1ZSAKLU5PVFJVTiBSZWFkYWJsZVN0
cmVhbSB3aXRoIGJ5dGUgc291cmNlOiByZXNwb25kKDMpIHRvIHJlYWQodmlldykgd2l0aCAyIGVs
ZW1lbnQgVWludDE2QXJyYXkgZW5xdWV1ZXMgdGhlIDEgYnl0ZSByZW1haW5kZXIgCi1OT1RSVU4g
UmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogZW5xdWV1ZSgpLCBnZXRSZWFkZXIoKSwg
dGhlbiByZWFkKHZpZXcpIAotTk9UUlVOIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6
IGVucXVldWUoKSwgZ2V0UmVhZGVyKCksIHRoZW4gY2FuY2VsKCkgKG1vZGUgPSBub3QgQllPQikg
Ci1OT1RSVU4gUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogZW5xdWV1ZSgpLCBnZXRS
ZWFkZXIoKSwgdGhlbiBjYW5jZWwoKSAobW9kZSA9IEJZT0IpIAotTk9UUlVOIFJlYWRhYmxlU3Ry
ZWFtIHdpdGggYnl0ZSBzb3VyY2U6IGdldFJlYWRlcigpLCByZWFkKHZpZXcpLCB0aGVuIGNhbmNl
bCgpIAotTk9UUlVOIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IGNhbmNlbCgpIHdp
dGggcGFydGlhbGx5IGZpbGxlZCBwZW5kaW5nIHB1bGwoKSByZXF1ZXN0IAotTk9UUlVOIFJlYWRh
YmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IGVucXVldWUoKSwgZ2V0UmVhZGVyKCksIHRoZW4g
cmVhZCh2aWV3KSB3aGVyZSB2aWV3LmJ1ZmZlciBpcyBub3QgZnVsbHkgY292ZXJlZCBieSB2aWV3
IAotTk9UUlVOIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IE11bHRpcGxlIGVucXVl
dWUoKSwgZ2V0UmVhZGVyKCksIHRoZW4gcmVhZCh2aWV3KSAKLU5PVFJVTiBSZWFkYWJsZVN0cmVh
bSB3aXRoIGJ5dGUgc291cmNlOiBlbnF1ZXVlKCksIGdldFJlYWRlcigpLCB0aGVuIHJlYWQodmll
dykgd2l0aCBhIGJpZ2dlciB2aWV3IAotTk9UUlVOIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBz
b3VyY2U6IGVucXVldWUoKSwgZ2V0UmVhZGVyKCksIHRoZW4gcmVhZCh2aWV3KSB3aXRoIGEgc21h
bGxlciB2aWV3cyAKLU5PVFJVTiBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBlbnF1
ZXVlKCkgMSBieXRlLCBnZXRSZWFkZXIoKSwgdGhlbiByZWFkKHZpZXcpIHdpdGggVWludDE2QXJy
YXkgCi1OT1RSVU4gUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogZW5xdWV1ZSgpIDMg
Ynl0ZSwgZ2V0UmVhZGVyKCksIHRoZW4gcmVhZCh2aWV3KSB3aXRoIDItZWxlbWVudCBVaW50MTZB
cnJheSAKLU5PVFJVTiBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiByZWFkKHZpZXcp
IHdpdGggVWludDE2QXJyYXkgb24gY2xvc2UoKS1kIHN0cmVhbSB3aXRoIDEgYnl0ZSBlbnF1ZXVl
KCktZCBtdXN0IGZhaWwgCi1OT1RSVU4gUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTog
QSBzdHJlYW0gbXVzdCBiZSBlcnJvcmVkIGlmIGNsb3NlKCktZCBiZWZvcmUgZnVsZmlsbGluZyBy
ZWFkKHZpZXcpIHdpdGggVWludDE2QXJyYXkgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0
ZSBzb3VyY2U6IFRocm93IGlmIGNsb3NlKCktZWQgbW9yZSB0aGFuIG9uY2UgCi1QQVNTIFJlYWRh
YmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IFRocm93IG9uIGVucXVldWUoKSBhZnRlciBjbG9z
ZSgpIAotTk9UUlVOIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IHJlYWQodmlldyks
IHRoZW4gcmVzcG9uZCgpIGFuZCBjbG9zZSgpIGluIHB1bGwoKSAKLU5PVFJVTiBSZWFkYWJsZVN0
cmVhbSB3aXRoIGJ5dGUgc291cmNlOiByZWFkKHZpZXcpIHdpdGggVWludDMyQXJyYXksIHRoZW4g
ZmlsbCBpdCBieSBtdWx0aXBsZSByZXNwb25kKCkgY2FsbHMgCi1OT1RSVU4gUmVhZGFibGVTdHJl
YW0gd2l0aCBieXRlIHNvdXJjZTogcmVhZCgpIHR3aWNlLCB0aGVuIGVucXVldWUoKSB0d2ljZSAK
LU5PVFJVTiBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBNdWx0aXBsZSByZWFkKHZp
ZXcpLCBjbG9zZSgpIGFuZCByZXNwb25kKCkgCi1OT1RSVU4gUmVhZGFibGVTdHJlYW0gd2l0aCBi
eXRlIHNvdXJjZTogTXVsdGlwbGUgcmVhZCh2aWV3KSwgYmlnIGVucXVldWUoKSAKLU5PVFJVTiBS
ZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBNdWx0aXBsZSByZWFkKHZpZXcpIGFuZCBt
dWx0aXBsZSBlbnF1ZXVlKCkgCi1OT1RSVU4gUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJj
ZTogcmVhZCh2aWV3KSB3aXRoIHBhc3NpbmcgdW5kZWZpbmVkIGFzIHZpZXcgbXVzdCBmYWlsIAot
Tk9UUlVOIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IHJlYWQodmlldykgd2l0aCB6
ZXJvLWxlbmd0aCB2aWV3IG11c3QgZmFpbCAKLU5PVFJVTiBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5
dGUgc291cmNlOiByZWFkKHZpZXcpIHdpdGggcGFzc2luZyBhbiBlbXB0eSBvYmplY3QgYXMgdmll
dyBtdXN0IGZhaWwgCi1OT1RSVU4gUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogRXZl
biByZWFkKHZpZXcpIHdpdGggcGFzc2luZyBBcnJheUJ1ZmZlclZpZXcgbGlrZSBvYmplY3QgYXMg
dmlldyBtdXN0IGZhaWwgCi1OT1RSVU4gUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTog
cmVhZCgpIG9uIGFuIGVycm9yZWQgc3RyZWFtIAotTk9UUlVOIFJlYWRhYmxlU3RyZWFtIHdpdGgg
Ynl0ZSBzb3VyY2U6IHJlYWQoKSwgdGhlbiBlcnJvcigpIAotTk9UUlVOIFJlYWRhYmxlU3RyZWFt
IHdpdGggYnl0ZSBzb3VyY2U6IHJlYWQodmlldykgb24gYW4gZXJyb3JlZCBzdHJlYW0gCi1OT1RS
VU4gUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogcmVhZCh2aWV3KSwgdGhlbiBlcnJv
cigpIAotTk9UUlVOIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IFRocm93aW5nIGlu
IHB1bGwgZnVuY3Rpb24gbXVzdCBlcnJvciB0aGUgc3RyZWFtIAotTk9UUlVOIFJlYWRhYmxlU3Ry
ZWFtIHdpdGggYnl0ZSBzb3VyY2U6IFRocm93aW5nIGluIHB1bGwgaW4gcmVzcG9uc2UgdG8gcmVh
ZCgpIG11c3QgYmUgaWdub3JlZCBpZiB0aGUgc3RyZWFtIGlzIGVycm9yZWQgaW4gaXQgCi1OT1RS
VU4gUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogVGhyb3dpbmcgaW4gcHVsbCBpbiBy
ZXNwb25zZSB0byByZWFkKHZpZXcpIGZ1bmN0aW9uIG11c3QgZXJyb3IgdGhlIHN0cmVhbSAKLU5P
VFJVTiBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBUaHJvd2luZyBpbiBwdWxsIGlu
IHJlc3BvbnNlIHRvIHJlYWQodmlldykgbXVzdCBiZSBpZ25vcmVkIGlmIHRoZSBzdHJlYW0gaXMg
ZXJyb3JlZCBpbiBpdCAKLU5PVFJVTiBjYWxsaW5nIHJlc3BvbmQoKSB0d2ljZSBvbiB0aGUgc2Ft
ZSBieW9iUmVxdWVzdCBzaG91bGQgdGhyb3cgCi1OT1RSVU4gY2FsbGluZyByZXNwb25kV2l0aE5l
d1ZpZXcoKSB0d2ljZSBvbiB0aGUgc2FtZSBieW9iUmVxdWVzdCBzaG91bGQgdGhyb3cgCi1OT1RS
VU4gY2FsbGluZyByZXNwb25kKDApIHR3aWNlIG9uIHRoZSBzYW1lIGJ5b2JSZXF1ZXN0IHNob3Vs
ZCB0aHJvdyBldmVuIHdoZW4gY2xvc2VkIAotTk9UUlVOIHB1bGwoKSByZXNvbHZpbmcgc2hvdWxk
IG5vdCBtYWtlIHJlbGVhc2VMb2NrKCkgcG9zc2libGUgCi1OT1RSVU4gUmVhZGFibGVTdHJlYW0g
d2l0aCBieXRlIHNvdXJjZTogZGVmYXVsdCByZWFkZXIgKyBhdXRvQWxsb2NhdGVDaHVua1NpemUg
KyBieW9iUmVxdWVzdCBpbnRlcmFjdGlvbiAKLVBBU1MgUmVhZGFibGVTdHJlYW1CWU9CUmVhZGVy
IGNhbiBiZSBjb25zdHJ1Y3RlZCBkaXJlY3RseSAKLVBBU1MgUmVhZGFibGVTdHJlYW1CWU9CUmVh
ZGVyIGNvbnN0cnVjdG9yIHJlcXVpcmVzIGEgUmVhZGFibGVTdHJlYW0gYXJndW1lbnQgCi1QQVNT
IFJlYWRhYmxlU3RyZWFtQllPQlJlYWRlciBjb25zdHJ1Y3RvciByZXF1aXJlcyBhbiB1bmxvY2tl
ZCBSZWFkYWJsZVN0cmVhbSAKLVBBU1MgUmVhZGFibGVTdHJlYW1CWU9CUmVhZGVyIGNvbnN0cnVj
dG9yIHJlcXVpcmVzIGEgUmVhZGFibGVTdHJlYW0gd2l0aCB0eXBlICJieXRlcyIgCi1QQVNTIFJl
YWRhYmxlU3RyZWFtIGNvbnN0cnVjdG9yIHNob3VsZCBub3QgYWNjZXB0IGEgc3RyYXRlZ3kgd2l0
aCBhIHNpemUgZGVmaW5lZCBpZiB0eXBlIGlzICJieXRlcyIgCi0KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1i
eXRlLXN0cmVhbXMvZ2VuZXJhbC5zZXJ2aWNld29ya2VyLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1z
dHJlYW1zL2dlbmVyYWwuc2VydmljZXdvcmtlci5odHRwcy5odG1sCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBkMWRlN2MzNDJjMDNkNjg2MWU1M2JmYjczNWVkYjQyNDlmZGNmYzcyLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0
cmVhbXMvZ2VuZXJhbC5zZXJ2aWNld29ya2VyLmh0dHBzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAt
MSwxMiArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTx0
aXRsZT5nZW5lcmFsLmpzIHNlcnZpY2Ugd29ya2VyIHdyYXBwZXIgZmlsZTwvdGl0bGU+Ci0KLTxz
Y3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQg
c3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQg
c3JjPSIvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL3Jlc291cmNlcy90ZXN0LWhlbHBl
cnMuc3ViLmpzIj48L3NjcmlwdD4KLQotPHNjcmlwdD4KLSd1c2Ugc3RyaWN0JzsKLXNlcnZpY2Vf
d29ya2VyX3Rlc3QoJ2dlbmVyYWwuanMnLCAnU2VydmljZSB3b3JrZXIgdGVzdCBzZXR1cCcpOwot
PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL2dlbmVyYWwuc2hhcmVkd29y
a2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMvZ2VuZXJhbC5zaGFyZWR3b3JrZXIt
ZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwOWQ1ZDI1MDlkNzg0
N2U4Y2Q2ZmU2NjA2YWE2MGNkZDMzYWE0NzRlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMvZ2VuZXJhbC5zaGFyZWR3b3JrZXIt
ZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1DT05TT0xFIE1FU1NB
R0U6IFJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBTaGFyZWRXb3JrZXIKLQot
SGFybmVzcyBFcnJvciAoRkFJTCksIG1lc3NhZ2UgPSBSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmlu
ZCB2YXJpYWJsZTogU2hhcmVkV29ya2VyCi0KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFt
cy9nZW5lcmFsLnNoYXJlZHdvcmtlci5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFtcy9nZW5lcmFsLnNo
YXJlZHdvcmtlci5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkY2VlYThhYzhi
OWYwMGM5ZDBjY2EzN2JmMTM3YmU0NTNlNzE0NTExLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMvZ2VuZXJhbC5zaGFyZWR3b3Jr
ZXIuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgot
PG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHRpdGxlPmdlbmVyYWwuanMgc2hhcmVkIHdvcmtlciB3
cmFwcGVyIGZpbGU8L3RpdGxlPgotCi08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVz
cy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9y
dC5qcyI+PC9zY3JpcHQ+Ci0KLTxzY3JpcHQ+Ci0ndXNlIHN0cmljdCc7Ci1mZXRjaF90ZXN0c19m
cm9tX3dvcmtlcihuZXcgU2hhcmVkV29ya2VyKCdnZW5lcmFsLmpzJykpOwotPC9zY3JpcHQ+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL3Byb3BlcnRpZXMuZGVkaWNhdGVkd29ya2VyLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMvcHJvcGVydGllcy5kZWRpY2F0ZWR3b3JrZXIt
ZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5OGU1NTFlYmNkZTlk
YzAxNjUwZTFkOTdkYzJmY2U2NWM2NGVjYmYwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMvcHJvcGVydGllcy5kZWRpY2F0ZWR3
b3JrZXItZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNyArMCwwIEBACi0KLVBBU1Mg
Q2FuIGdldCB0aGUgUmVhZGFibGVTdHJlYW1CWU9CUmVhZGVyIGNvbnN0cnVjdG9yIGluZGlyZWN0
bHkgCi1QQVNTIFJlYWRhYmxlU3RyZWFtQllPQlJlYWRlciBjb25zdHJ1Y3RvciBzaG91bGQgZ2V0
IGEgUmVhZGFibGVTdHJlYW0gb2JqZWN0IGFzIGFyZ3VtZW50IAotUEFTUyBSZWFkYWJsZVN0cmVh
bUJZT0JSZWFkZXIgaW5zdGFuY2VzIHNob3VsZCBoYXZlIHRoZSBjb3JyZWN0IGxpc3Qgb2YgcHJv
cGVydGllcyAKLUZBSUwgUmVhZGFibGVTdHJlYW1CWU9CUmVxdWVzdCBpbnN0YW5jZXMgc2hvdWxk
IGhhdmUgdGhlIGNvcnJlY3QgbGlzdCBvZiBwcm9wZXJ0aWVzIGFzc2VydF9lcXVhbHM6IGNvbnN0
cnVjdG9yIGhhcyAwIHBhcmFtZXRlcnMgZXhwZWN0ZWQgMCBidXQgZ290IDIKLUZBSUwgUmVhZGFi
bGVCeXRlU3RyZWFtQ29udHJvbGxlciBpbnN0YW5jZXMgc2hvdWxkIGhhdmUgdGhlIGNvcnJlY3Qg
bGlzdCBvZiBwcm9wZXJ0aWVzIGFzc2VydF9lcXVhbHM6IGNvbnN0cnVjdG9yIGhhcyBubyBwYXJh
bWV0ZXJzIGV4cGVjdGVkIDAgYnV0IGdvdCAzCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVh
bXMvcHJvcGVydGllcy5kZWRpY2F0ZWR3b3JrZXIuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMvcHJv
cGVydGllcy5kZWRpY2F0ZWR3b3JrZXIuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggNTBkNjNlZDBlZGIyYmEwNTJkYWFmODlkZjIzYzkzMjBmYzgyYzlkYy4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL3Byb3Bl
cnRpZXMuZGVkaWNhdGVkd29ya2VyLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBA
Ci08IURPQ1RZUEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTx0aXRsZT5wcm9wZXJ0
aWVzLmpzIGRlZGljYXRlZCB3b3JrZXIgd3JhcHBlciBmaWxlPC90aXRsZT4KLQotPHNjcmlwdCBz
cmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9y
ZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotCi08c2NyaXB0PgotJ3Vz
ZSBzdHJpY3QnOwotZmV0Y2hfdGVzdHNfZnJvbV93b3JrZXIobmV3IFdvcmtlcigncHJvcGVydGll
cy5qcycpKTsKLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFtcy9wcm9wZXJ0
aWVzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL3Byb3BlcnRpZXMuaHRtbApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggNDFhYjZiMjg1NDI5Y2M4MDY0MDFjODM5YjIyZjczM2U4YmI5NGRh
MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0
ZS1zdHJlYW1zL3Byb3BlcnRpZXMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAK
LTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHRpdGxlPnByb3BlcnRp
ZXMuanMgYnJvd3NlciBjb250ZXh0IHdyYXBwZXIgZmlsZTwvdGl0bGU+Ci0KLTxzY3JpcHQgc3Jj
PSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLQotPHNjcmlwdCBzcmM9Ii4u
L3Jlc291cmNlcy9ycy11dGlscy5qcyI+PC9zY3JpcHQ+Ci0KLTxzY3JpcHQgc3JjPSJwcm9wZXJ0
aWVzLmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMvcHJvcGVydGll
cy5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMvcHJvcGVydGllcy5qcwpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggOTc1ZmJhNzEwOWIwNjRmNGVlYTkyNDdmNmRhZjM0M2JiM2QwYTQyZS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJl
YW1zL3Byb3BlcnRpZXMuanMKKysrIC9kZXYvbnVsbApAQCAtMSwxNDcgKzAsMCBAQAotJ3VzZSBz
dHJpY3QnOwotCi1pZiAoc2VsZi5pbXBvcnRTY3JpcHRzKSB7Ci0gIHNlbGYuaW1wb3J0U2NyaXB0
cygnLi4vcmVzb3VyY2VzL3JzLXV0aWxzLmpzJyk7Ci0gIHNlbGYuaW1wb3J0U2NyaXB0cygnL3Jl
c291cmNlcy90ZXN0aGFybmVzcy5qcycpOwotfQotCi1sZXQgUmVhZGFibGVTdHJlYW1CWU9CUmVh
ZGVyOwotCi10ZXN0KCgpID0+IHsKLQotICAvLyBJdCdzIG5vdCBleHBvc2VkIGdsb2JhbGx5LCBi
dXQgd2UgdGVzdCBhIGZldyBvZiBpdHMgcHJvcGVydGllcyBoZXJlLgotICBSZWFkYWJsZVN0cmVh
bUJZT0JSZWFkZXIgPSAobmV3IFJlYWRhYmxlU3RyZWFtKHsgdHlwZTogJ2J5dGVzJyB9KSkKLSAg
ICAgIC5nZXRSZWFkZXIoeyBtb2RlOiAnYnlvYicgfSkuY29uc3RydWN0b3I7Ci0KLX0sICdDYW4g
Z2V0IHRoZSBSZWFkYWJsZVN0cmVhbUJZT0JSZWFkZXIgY29uc3RydWN0b3IgaW5kaXJlY3RseScp
OwotCi10ZXN0KCgpID0+IHsKLQotICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkg
PT4gbmV3IFJlYWRhYmxlU3RyZWFtQllPQlJlYWRlcigncG90YXRvJykpOwotICBhc3NlcnRfdGhy
b3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gbmV3IFJlYWRhYmxlU3RyZWFtQllPQlJlYWRlcih7
fSkpOwotICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gbmV3IFJlYWRhYmxl
U3RyZWFtQllPQlJlYWRlcigpKTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtQllPQlJlYWRlciBjb25z
dHJ1Y3RvciBzaG91bGQgZ2V0IGEgUmVhZGFibGVTdHJlYW0gb2JqZWN0IGFzIGFyZ3VtZW50Jyk7
Ci0KLXRlc3QoKCkgPT4gewotCi0gIGNvbnN0IG1ldGhvZHMgPSBbJ2NhbmNlbCcsICdjb25zdHJ1
Y3RvcicsICdyZWFkJywgJ3JlbGVhc2VMb2NrJ107Ci0gIGNvbnN0IHByb3BlcnRpZXMgPSBtZXRo
b2RzLmNvbmNhdChbJ2Nsb3NlZCddKS5zb3J0KCk7Ci0KLSAgY29uc3QgcnNSZWFkZXIgPSBuZXcg
UmVhZGFibGVTdHJlYW1CWU9CUmVhZGVyKG5ldyBSZWFkYWJsZVN0cmVhbSh7IHR5cGU6ICdieXRl
cycgfSkpOwotICBjb25zdCBwcm90byA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihyc1JlYWRlcik7
Ci0KLSAgYXNzZXJ0X2FycmF5X2VxdWFscyhPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhwcm90
bykuc29ydCgpLCBwcm9wZXJ0aWVzKTsKLQotICBmb3IgKGNvbnN0IG0gb2YgbWV0aG9kcykgewot
ICAgIGNvbnN0IHByb3BEZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihwcm90
bywgbSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhwcm9wRGVzYy5lbnVtZXJhYmxlLCBmYWxzZSwgJ21l
dGhvZCBzaG91bGQgYmUgbm9uLWVudW1lcmFibGUnKTsKLSAgICBhc3NlcnRfZXF1YWxzKHByb3BE
ZXNjLmNvbmZpZ3VyYWJsZSwgdHJ1ZSwgJ21ldGhvZCBzaG91bGQgYmUgY29uZmlndXJhYmxlJyk7
Ci0gICAgYXNzZXJ0X2VxdWFscyhwcm9wRGVzYy53cml0YWJsZSwgdHJ1ZSwgJ21ldGhvZCBzaG91
bGQgYmUgd3JpdGFibGUnKTsKLSAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiByc1JlYWRlclttXSwg
J2Z1bmN0aW9uJywgJ3Nob3VsZCBoYXZlIGJlIGEgbWV0aG9kJyk7Ci0gICAgY29uc3QgZXhwZWN0
ZWROYW1lID0gbSA9PT0gJ2NvbnN0cnVjdG9yJyA/ICdSZWFkYWJsZVN0cmVhbUJZT0JSZWFkZXIn
IDogbTsKLSAgICBhc3NlcnRfZXF1YWxzKHJzUmVhZGVyW21dLm5hbWUsIGV4cGVjdGVkTmFtZSwg
J21ldGhvZCBzaG91bGQgaGF2ZSB0aGUgY29ycmVjdCBuYW1lJyk7Ci0gIH0KLQotICBjb25zdCBj
bG9zZWRQcm9wRGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocHJvdG8sICdj
bG9zZWQnKTsKLSAgYXNzZXJ0X2VxdWFscyhjbG9zZWRQcm9wRGVzYy5lbnVtZXJhYmxlLCBmYWxz
ZSwgJ2Nsb3NlZCBzaG91bGQgYmUgbm9uLWVudW1lcmFibGUnKTsKLSAgYXNzZXJ0X2VxdWFscyhj
bG9zZWRQcm9wRGVzYy5jb25maWd1cmFibGUsIHRydWUsICdjbG9zZWQgc2hvdWxkIGJlIGNvbmZp
Z3VyYWJsZScpOwotICBhc3NlcnRfbm90X2VxdWFscyhjbG9zZWRQcm9wRGVzYy5nZXQsIHVuZGVm
aW5lZCwgJ2Nsb3NlZCBzaG91bGQgaGF2ZSBhIGdldHRlcicpOwotICBhc3NlcnRfZXF1YWxzKGNs
b3NlZFByb3BEZXNjLnNldCwgdW5kZWZpbmVkLCAnY2xvc2VkIHNob3VsZCBub3QgaGF2ZSBhIHNl
dHRlcicpOwotCi0gIGFzc2VydF9lcXVhbHMocnNSZWFkZXIuY2FuY2VsLmxlbmd0aCwgMSwgJ2Nh
bmNlbCBoYXMgMSBwYXJhbWV0ZXInKTsKLSAgYXNzZXJ0X25vdF9lcXVhbHMocnNSZWFkZXIuY2xv
c2VkLCB1bmRlZmluZWQsICdoYXMgYSBub24tdW5kZWZpbmVkIGNsb3NlZCBwcm9wZXJ0eScpOwot
ICBhc3NlcnRfZXF1YWxzKHR5cGVvZiByc1JlYWRlci5jbG9zZWQudGhlbiwgJ2Z1bmN0aW9uJywg
J2Nsb3NlZCBwcm9wZXJ0eSBpcyB0aGVuYWJsZScpOwotICBhc3NlcnRfZXF1YWxzKHJzUmVhZGVy
LmNvbnN0cnVjdG9yLmxlbmd0aCwgMSwgJ2NvbnN0cnVjdG9yIGhhcyAxIHBhcmFtZXRlcicpOwot
ICBhc3NlcnRfZXF1YWxzKHJzUmVhZGVyLnJlYWQubGVuZ3RoLCAxLCAncmVhZCBoYXMgMSBwYXJh
bWV0ZXInKTsKLSAgYXNzZXJ0X2VxdWFscyhyc1JlYWRlci5yZWxlYXNlTG9jay5sZW5ndGgsIDAs
ICdyZWxlYXNlTG9jayBoYXMgbm8gcGFyYW1ldGVycycpOwotCi19LCAnUmVhZGFibGVTdHJlYW1C
WU9CUmVhZGVyIGluc3RhbmNlcyBzaG91bGQgaGF2ZSB0aGUgY29ycmVjdCBsaXN0IG9mIHByb3Bl
cnRpZXMnKTsKLQotcHJvbWlzZV90ZXN0KHQgPT4gewotCi0gIGNvbnN0IHJzID0gbmV3IFJlYWRh
YmxlU3RyZWFtKHsKLSAgICBwdWxsKGNvbnRyb2xsZXIpIHsKLSAgICAgIHJldHVybiB0LnN0ZXAo
KCkgPT4gewotICAgICAgICBjb25zdCBieW9iUmVxdWVzdCA9IGNvbnRyb2xsZXIuYnlvYlJlcXVl
c3Q7Ci0KLSAgICAgICAgY29uc3QgbWV0aG9kcyA9IFsnY29uc3RydWN0b3InLCAncmVzcG9uZCcs
ICdyZXNwb25kV2l0aE5ld1ZpZXcnXTsKLSAgICAgICAgY29uc3QgcHJvcGVydGllcyA9IG1ldGhv
ZHMuY29uY2F0KFsndmlldyddKS5zb3J0KCk7Ci0KLSAgICAgICAgY29uc3QgcHJvdG8gPSBPYmpl
Y3QuZ2V0UHJvdG90eXBlT2YoYnlvYlJlcXVlc3QpOwotCi0gICAgICAgIGFzc2VydF9hcnJheV9l
cXVhbHMoT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMocHJvdG8pLnNvcnQoKSwgcHJvcGVydGll
cyk7Ci0KLSAgICAgICAgZm9yIChjb25zdCBtIG9mIG1ldGhvZHMpIHsKLSAgICAgICAgICBjb25z
dCBwcm9wRGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocHJvdG8sIG0pOwot
ICAgICAgICAgIGFzc2VydF9lcXVhbHMocHJvcERlc2MuZW51bWVyYWJsZSwgZmFsc2UsICdtZXRo
b2Qgc2hvdWxkIGJlIG5vbi1lbnVtZXJhYmxlJyk7Ci0gICAgICAgICAgYXNzZXJ0X2VxdWFscyhw
cm9wRGVzYy5jb25maWd1cmFibGUsIHRydWUsICdtZXRob2Qgc2hvdWxkIGJlIGNvbmZpZ3VyYWJs
ZScpOwotICAgICAgICAgIGFzc2VydF9lcXVhbHMocHJvcERlc2Mud3JpdGFibGUsIHRydWUsICdt
ZXRob2Qgc2hvdWxkIGJlIHdyaXRhYmxlJyk7Ci0gICAgICAgICAgYXNzZXJ0X2VxdWFscyh0eXBl
b2YgYnlvYlJlcXVlc3RbbV0sICdmdW5jdGlvbicsICdzaG91bGQgaGF2ZSBhIG1ldGhvZCcpOwot
ICAgICAgICAgIGNvbnN0IGV4cGVjdGVkTmFtZSA9IG0gPT09ICdjb25zdHJ1Y3RvcicgPyAnUmVh
ZGFibGVTdHJlYW1CWU9CUmVxdWVzdCcgOiBtOwotICAgICAgICAgIGFzc2VydF9lcXVhbHMoYnlv
YlJlcXVlc3RbbV0ubmFtZSwgZXhwZWN0ZWROYW1lLCAnbWV0aG9kIHNob3VsZCBoYXZlIHRoZSBj
b3JyZWN0IG5hbWUnKTsKLSAgICAgICAgfQotCi0gICAgICAgIGNvbnN0IHZpZXdQcm9wRGVzYyA9
IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocHJvdG8sICd2aWV3Jyk7Ci0gICAgICAg
IGFzc2VydF9lcXVhbHModmlld1Byb3BEZXNjLmVudW1lcmFibGUsIGZhbHNlLCAndmlldyBzaG91
bGQgYmUgbm9uLWVudW1lcmFibGUnKTsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyh2aWV3UHJvcERl
c2MuY29uZmlndXJhYmxlLCB0cnVlLCAndmlldyBzaG91bGQgYmUgY29uZmlndXJhYmxlJyk7Ci0g
ICAgICAgIGFzc2VydF9ub3RfZXF1YWxzKHZpZXdQcm9wRGVzYy5nZXQsIHVuZGVmaW5lZCwgJ3Zp
ZXcgc2hvdWxkIGhhdmUgYSBnZXR0ZXInKTsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyh2aWV3UHJv
cERlc2Muc2V0LCB1bmRlZmluZWQsICd2aWV3IHNob3VsZCBub3QgaGF2ZSBhIHNldHRlcicpOwot
ICAgICAgICBhc3NlcnRfbm90X2VxdWFscyhieW9iUmVxdWVzdC52aWV3LCB1bmRlZmluZWQsICdo
YXMgYSBub24tdW5kZWZpbmVkIHZpZXcgcHJvcGVydHknKTsKLSAgICAgICAgYXNzZXJ0X2VxdWFs
cyhieW9iUmVxdWVzdC5jb25zdHJ1Y3Rvci5sZW5ndGgsIDAsICdjb25zdHJ1Y3RvciBoYXMgMCBw
YXJhbWV0ZXJzJyk7Ci0gICAgICAgIGFzc2VydF9lcXVhbHMoYnlvYlJlcXVlc3QucmVzcG9uZC5s
ZW5ndGgsIDEsICdyZXNwb25kIGhhcyAxIHBhcmFtZXRlcicpOwotICAgICAgICBhc3NlcnRfZXF1
YWxzKGJ5b2JSZXF1ZXN0LnJlc3BvbmRXaXRoTmV3Vmlldy5sZW5ndGgsIDEsICdyZWxlYXNlTG9j
ayBoYXMgMSBwYXJhbWV0ZXInKTsKLQotICAgICAgICBieW9iUmVxdWVzdC5yZXNwb25kKDEpOwot
Ci0gICAgICB9KTsKLSAgICB9LAotICAgIHR5cGU6ICdieXRlcycgfSk7Ci0gIGNvbnN0IHJlYWRl
ciA9IHJzLmdldFJlYWRlcih7IG1vZGU6ICdieW9iJyB9KTsKLSAgcmV0dXJuIHJlYWRlci5yZWFk
KG5ldyBVaW50OEFycmF5KDEpKTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtQllPQlJlcXVlc3QgaW5z
dGFuY2VzIHNob3VsZCBoYXZlIHRoZSBjb3JyZWN0IGxpc3Qgb2YgcHJvcGVydGllcycpOwotCi10
ZXN0KCgpID0+IHsKLQotICBjb25zdCBtZXRob2RzID0gWydjbG9zZScsICdjb25zdHJ1Y3Rvcics
ICdlbnF1ZXVlJywgJ2Vycm9yJ107Ci0gIGNvbnN0IGFjY2Vzc29ycyA9IFsnYnlvYlJlcXVlc3Qn
LCAnZGVzaXJlZFNpemUnXTsKLSAgY29uc3QgcHJvcGVydGllcyA9IG1ldGhvZHMuY29uY2F0KGFj
Y2Vzc29ycykuc29ydCgpOwotCi0gIGxldCBjb250cm9sbGVyOwotICBuZXcgUmVhZGFibGVTdHJl
YW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGNvbnRyb2xsZXIgPSBjOwotICAgIH0sCi0gICAg
dHlwZTogJ2J5dGVzJwotICB9KTsKLSAgY29uc3QgcHJvdG8gPSBPYmplY3QuZ2V0UHJvdG90eXBl
T2YoY29udHJvbGxlcik7Ci0KLSAgYXNzZXJ0X2FycmF5X2VxdWFscyhPYmplY3QuZ2V0T3duUHJv
cGVydHlOYW1lcyhwcm90bykuc29ydCgpLCBwcm9wZXJ0aWVzKTsKLQotICBmb3IgKGNvbnN0IG0g
b2YgbWV0aG9kcykgewotICAgIGNvbnN0IHByb3BEZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5
RGVzY3JpcHRvcihwcm90bywgbSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhwcm9wRGVzYy5lbnVtZXJh
YmxlLCBmYWxzZSwgJ21ldGhvZCBzaG91bGQgYmUgbm9uLWVudW1lcmFibGUnKTsKLSAgICBhc3Nl
cnRfZXF1YWxzKHByb3BEZXNjLmNvbmZpZ3VyYWJsZSwgdHJ1ZSwgJ21ldGhvZCBzaG91bGQgYmUg
Y29uZmlndXJhYmxlJyk7Ci0gICAgYXNzZXJ0X2VxdWFscyhwcm9wRGVzYy53cml0YWJsZSwgdHJ1
ZSwgJ21ldGhvZCBzaG91bGQgYmUgd3JpdGFibGUnKTsKLSAgICBhc3NlcnRfZXF1YWxzKHR5cGVv
ZiBjb250cm9sbGVyW21dLCAnZnVuY3Rpb24nLCAnc2hvdWxkIGhhdmUgYmUgYSBtZXRob2QnKTsK
LSAgICBjb25zdCBleHBlY3RlZE5hbWUgPSBtID09PSAnY29uc3RydWN0b3InID8gJ1JlYWRhYmxl
Qnl0ZVN0cmVhbUNvbnRyb2xsZXInIDogbTsKLSAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXJb
bV0ubmFtZSwgZXhwZWN0ZWROYW1lLCAnbWV0aG9kIHNob3VsZCBoYXZlIHRoZSBjb3JyZWN0IG5h
bWUnKTsKLSAgfQotCi0gIGZvciAoY29uc3QgYSBvZiBhY2Nlc3NvcnMpIHsKLSAgICBjb25zdCBw
cm9wRGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocHJvdG8sIGEpOwotICAg
IGFzc2VydF9lcXVhbHMocHJvcERlc2MuZW51bWVyYWJsZSwgZmFsc2UsIGAke2F9IHNob3VsZCBi
ZSBub24tZW51bWVyYWJsZWApOwotICAgIGFzc2VydF9lcXVhbHMocHJvcERlc2MuY29uZmlndXJh
YmxlLCB0cnVlLCBgJHthfSBzaG91bGQgYmUgY29uZmlndXJhYmxlYCk7Ci0gICAgYXNzZXJ0X25v
dF9lcXVhbHMocHJvcERlc2MuZ2V0LCB1bmRlZmluZWQsIGAke2F9IHNob3VsZCBoYXZlIGEgZ2V0
dGVyYCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhwcm9wRGVzYy5zZXQsIHVuZGVmaW5lZCwgYCR7YX0g
c2hvdWxkIG5vdCBoYXZlIGEgc2V0dGVyYCk7Ci0gIH0KLQotICBhc3NlcnRfZXF1YWxzKGNvbnRy
b2xsZXIuY2xvc2UubGVuZ3RoLCAwLCAnY2FuY2VsIGhhcyBubyBwYXJhbWV0ZXJzJyk7Ci0gIGFz
c2VydF9lcXVhbHMoY29udHJvbGxlci5jb25zdHJ1Y3Rvci5sZW5ndGgsIDAsICdjb25zdHJ1Y3Rv
ciBoYXMgbm8gcGFyYW1ldGVycycpOwotICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZW5xdWV1
ZS5sZW5ndGgsIDEsICdlbnF1ZXVlIGhhcyAxIHBhcmFtZXRlcicpOwotICBhc3NlcnRfZXF1YWxz
KGNvbnRyb2xsZXIuZXJyb3IubGVuZ3RoLCAxLCAncmVsZWFzZUxvY2sgaGFzIDEgcGFyYW1ldGVy
Jyk7Ci0KLX0sICdSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyIGluc3RhbmNlcyBzaG91bGQg
aGF2ZSB0aGUgY29ycmVjdCBsaXN0IG9mIHByb3BlcnRpZXMnKTsKLQotZG9uZSgpOwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
L3JlYWRhYmxlLWJ5dGUtc3RyZWFtcy9wcm9wZXJ0aWVzLnNlcnZpY2V3b3JrZXIuaHR0cHMtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
dHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFtcy9wcm9wZXJ0aWVzLnNlcnZpY2V3b3JrZXIuaHR0
cHMtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNWI3OWNiMjNm
YmE5OGU2M2U1NjcyZjM2ODlhMDg2NDEwNTdjNzljLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMvcHJvcGVydGllcy5zZXJ2aWNl
d29ya2VyLmh0dHBzLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAot
Ci1QQVNTIFNlcnZpY2Ugd29ya2VyIHRlc3Qgc2V0dXAgCi1QQVNTIENhbiBnZXQgdGhlIFJlYWRh
YmxlU3RyZWFtQllPQlJlYWRlciBjb25zdHJ1Y3RvciBpbmRpcmVjdGx5IAotUEFTUyBSZWFkYWJs
ZVN0cmVhbUJZT0JSZWFkZXIgY29uc3RydWN0b3Igc2hvdWxkIGdldCBhIFJlYWRhYmxlU3RyZWFt
IG9iamVjdCBhcyBhcmd1bWVudCAKLVBBU1MgUmVhZGFibGVTdHJlYW1CWU9CUmVhZGVyIGluc3Rh
bmNlcyBzaG91bGQgaGF2ZSB0aGUgY29ycmVjdCBsaXN0IG9mIHByb3BlcnRpZXMgCi1GQUlMIFJl
YWRhYmxlU3RyZWFtQllPQlJlcXVlc3QgaW5zdGFuY2VzIHNob3VsZCBoYXZlIHRoZSBjb3JyZWN0
IGxpc3Qgb2YgcHJvcGVydGllcyBhc3NlcnRfZXF1YWxzOiBjb25zdHJ1Y3RvciBoYXMgMCBwYXJh
bWV0ZXJzIGV4cGVjdGVkIDAgYnV0IGdvdCAyCi1GQUlMIFJlYWRhYmxlQnl0ZVN0cmVhbUNvbnRy
b2xsZXIgaW5zdGFuY2VzIHNob3VsZCBoYXZlIHRoZSBjb3JyZWN0IGxpc3Qgb2YgcHJvcGVydGll
cyBhc3NlcnRfZXF1YWxzOiBjb25zdHJ1Y3RvciBoYXMgbm8gcGFyYW1ldGVycyBleHBlY3RlZCAw
IGJ1dCBnb3QgMwotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL3Byb3BlcnRpZXMuc2Vy
dmljZXdvcmtlci5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFtcy9wcm9wZXJ0aWVzLnNlcnZp
Y2V3b3JrZXIuaHR0cHMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmE1YzUx
MzVmMmY3ZmM5MDNiNjZiY2U4ODNjMTA2NjFkNzNlYmEzMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL3Byb3BlcnRpZXMuc2Vy
dmljZXdvcmtlci5odHRwcy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotPCFE
T0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08dGl0bGU+cHJvcGVydGllcy5q
cyBzZXJ2aWNlIHdvcmtlciB3cmFwcGVyIGZpbGU8L3RpdGxlPgotCi08c2NyaXB0IHNyYz0iL3Jl
c291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNl
cy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3NlcnZpY2Ut
d29ya2Vycy9zZXJ2aWNlLXdvcmtlci9yZXNvdXJjZXMvdGVzdC1oZWxwZXJzLnN1Yi5qcyI+PC9z
Y3JpcHQ+Ci0KLTxzY3JpcHQ+Ci0ndXNlIHN0cmljdCc7Ci1zZXJ2aWNlX3dvcmtlcl90ZXN0KCdw
cm9wZXJ0aWVzLmpzJywgJ1NlcnZpY2Ugd29ya2VyIHRlc3Qgc2V0dXAnKTsKLTwvc2NyaXB0Pgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
dHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFtcy9wcm9wZXJ0aWVzLnNoYXJlZHdvcmtlci1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL3Byb3BlcnRpZXMuc2hhcmVkd29ya2VyLWV4cGVj
dGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDlkNWQyNTA5ZDc4NDdlOGNk
NmZlNjYwNmFhNjBjZGQzM2FhNDc0ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL3Byb3BlcnRpZXMuc2hhcmVkd29ya2VyLWV4
cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotQ09OU09MRSBNRVNTQUdF
OiBSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogU2hhcmVkV29ya2VyCi0KLUhh
cm5lc3MgRXJyb3IgKEZBSUwpLCBtZXNzYWdlID0gUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQg
dmFyaWFibGU6IFNoYXJlZFdvcmtlcgotCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMv
cHJvcGVydGllcy5zaGFyZWR3b3JrZXIuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMvcHJvcGVydGll
cy5zaGFyZWR3b3JrZXIuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDJmYjNl
NWViYzBhMDMxMjNjNTMzOGIwMjViZTZlZjg1ZTRiMjg3My4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL3Byb3BlcnRpZXMuc2hh
cmVkd29ya2VyLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi08IURPQ1RZUEUg
aHRtbD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTx0aXRsZT5wcm9wZXJ0aWVzLmpzIHNoYXJl
ZCB3b3JrZXIgd3JhcHBlciBmaWxlPC90aXRsZT4KLQotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMv
dGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhh
cm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotCi08c2NyaXB0PgotJ3VzZSBzdHJpY3QnOwotZmV0
Y2hfdGVzdHNfZnJvbV93b3JrZXIobmV3IFNoYXJlZFdvcmtlcigncHJvcGVydGllcy5qcycpKTsK
LTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFtcy93M2MtaW1wb3J0LmxvZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFk
YWJsZS1ieXRlLXN0cmVhbXMvdzNjLWltcG9ydC5sb2cKaW5kZXggODkzN2JiYmIyNGNiZjk4NWNj
YjUxNTBkZDFlMzQxOWRkM2IyYTM4MS4uMDE5MmYxMWI2NWJiODE2NTA3OWNmN2E0MzVlMGNmNjU5
MjM4OTEwYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFtcy93M2MtaW1wb3J0LmxvZworKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVh
ZGFibGUtYnl0ZS1zdHJlYW1zL3czYy1pbXBvcnQubG9nCkBAIC0xLDcgKzEsNyBAQAogVGhlIHRl
c3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRv
cnkuCiBEbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KIEluc3Rl
YWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dp
dGh1Yi5jb20vdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cworCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWIt
cGxhdGZvcm0tdGVzdHMvd3B0CiAKIFRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13
M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0CiAKQEAgLTE0LDIzICsxNCw2IEBAIFByb3Bl
cnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgogTm9uZQogLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCiBMaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMvYnJhbmQtY2hlY2tzLmRlZGlj
YXRlZHdvcmtlci5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFtcy9icmFuZC1jaGVja3MuaHRtbAotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJs
ZS1ieXRlLXN0cmVhbXMvYnJhbmQtY2hlY2tzLmpzCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFtcy9icmFuZC1j
aGVja3Muc2VydmljZXdvcmtlci5odHRwcy5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFtcy9icmFuZC1j
aGVja3Muc2hhcmVkd29ya2VyLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL2RldGFjaGVkLWJ1ZmZl
cnMuZGVkaWNhdGVkd29ya2VyLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL2RldGFjaGVkLWJ1ZmZl
cnMuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMvZGV0YWNoZWQtYnVmZmVycy5qcwotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRl
LXN0cmVhbXMvZGV0YWNoZWQtYnVmZmVycy5zZXJ2aWNld29ya2VyLmh0dHBzLmh0bWwKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUt
Ynl0ZS1zdHJlYW1zL2RldGFjaGVkLWJ1ZmZlcnMuc2hhcmVkd29ya2VyLmh0bWwKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0
ZS1zdHJlYW1zL2dlbmVyYWwuZGVkaWNhdGVkd29ya2VyLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1z
L2dlbmVyYWwuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMvZ2VuZXJhbC5qcwotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0
cmVhbXMvZ2VuZXJhbC5zZXJ2aWNld29ya2VyLmh0dHBzLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1z
L2dlbmVyYWwuc2hhcmVkd29ya2VyLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL3Byb3BlcnRpZXMu
ZGVkaWNhdGVkd29ya2VyLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL3Byb3BlcnRpZXMuaHRtbAot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFk
YWJsZS1ieXRlLXN0cmVhbXMvcHJvcGVydGllcy5qcwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMvcHJvcGVy
dGllcy5zZXJ2aWNld29ya2VyLmh0dHBzLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL3Byb3BlcnRp
ZXMuc2hhcmVkd29ya2VyLmh0bWwKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL2JhZC1idWZmZXJzLWFuZC12
aWV3cy5hbnkuanMKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL2NvbnN0cnVjdC1ieW9iLXJlcXVlc3QuYW55
LmpzCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
L3JlYWRhYmxlLWJ5dGUtc3RyZWFtcy9nZW5lcmFsLmFueS5qcwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0
cmVhbXMvYXN5bmMtaXRlcmF0b3IuYW55LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2FzeW5j
LWl0ZXJhdG9yLmFueS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGU1N2VhY2VlNjQ0OTc1ODJh
NTQwNWMzNGNjYmQ1ZmNkY2I1MjRlZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2Fz
eW5jLWl0ZXJhdG9yLmFueS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0MCBAQAorCitGQUlMIEFz
eW5jIGl0ZXJhdG9yIGluc3RhbmNlcyBzaG91bGQgaGF2ZSB0aGUgY29ycmVjdCBsaXN0IG9mIHBy
b3BlcnRpZXMgcy52YWx1ZXMgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAncy52YWx1ZXMoKScsICdz
LnZhbHVlcycgaXMgdW5kZWZpbmVkKQorRkFJTCBBc3luYy1pdGVyYXRpbmcgYSBwdXNoIHNvdXJj
ZSBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJU
eXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBub3QgYSBmdW5jdGlvbiAobmVhciAnLi4uY2h1bmsgb2Yg
cy4uLicpIgorRkFJTCBBc3luYy1pdGVyYXRpbmcgYSBwdWxsIHNvdXJjZSBwcm9taXNlX3Rlc3Q6
IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJUeXBlRXJyb3I6IHVuZGVm
aW5lZCBpcyBub3QgYSBmdW5jdGlvbiAobmVhciAnLi4uY2h1bmsgb2Ygcy4uLicpIgorRkFJTCBB
c3luYy1pdGVyYXRpbmcgYSBwdXNoIHNvdXJjZSB3aXRoIHVuZGVmaW5lZCB2YWx1ZXMgcHJvbWlz
ZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiVHlwZUVycm9y
OiB1bmRlZmluZWQgaXMgbm90IGEgZnVuY3Rpb24gKG5lYXIgJy4uLmNodW5rIG9mIHMuLi4nKSIK
K0ZBSUwgQXN5bmMtaXRlcmF0aW5nIGEgcHVsbCBzb3VyY2Ugd2l0aCB1bmRlZmluZWQgdmFsdWVz
IHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5
cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhIGZ1bmN0aW9uIChuZWFyICcuLi5jaHVuayBvZiBz
Li4uJykiCitGQUlMIEFzeW5jLWl0ZXJhdGluZyBhIHB1bGwgc291cmNlIG1hbnVhbGx5IHByb21p
c2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVFcnJv
cjogcy52YWx1ZXMgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAncy52YWx1ZXMoKScsICdzLnZhbHVl
cycgaXMgdW5kZWZpbmVkKSIKK0ZBSUwgQXN5bmMtaXRlcmF0aW5nIGFuIGVycm9yZWQgc3RyZWFt
IHRocm93cyBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAoc3RyaW5nKSAiZSIgYnV0IGdvdCAob2Jq
ZWN0KSBvYmplY3QgIlR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhIGZ1bmN0aW9uIChuZWFy
ICcuLi5jaHVuayBvZiBzLi4uJykiCitGQUlMIEFzeW5jLWl0ZXJhdGluZyBhIGNsb3NlZCBzdHJl
YW0gbmV2ZXIgZXhlY3V0ZXMgdGhlIGxvb3AgYm9keSwgYnV0IHdvcmtzIGZpbmUgcHJvbWlzZV90
ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiVHlwZUVycm9yOiB1
bmRlZmluZWQgaXMgbm90IGEgZnVuY3Rpb24gKG5lYXIgJy4uLmNodW5rIG9mIHMuLi4nKSIKK0ZB
SUwgQXN5bmMtaXRlcmF0aW5nIGFuIGVtcHR5IGJ1dCBub3QgY2xvc2VkL2Vycm9yZWQgc3RyZWFt
IG5ldmVyIGV4ZWN1dGVzIHRoZSBsb29wIGJvZHkgYW5kIHN0YWxscyB0aGUgYXN5bmMgZnVuY3Rp
b24gcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAi
VHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90IGEgZnVuY3Rpb24gKG5lYXIgJy4uLmNodW5rIG9m
IHMuLi4nKSIKK0ZBSUwgQXN5bmMtaXRlcmF0aW5nIGEgcGFydGlhbGx5IGNvbnN1bWVkIHN0cmVh
bSBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJU
eXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBub3QgYSBmdW5jdGlvbiAobmVhciAnLi4uY2h1bmsgb2Yg
cy4uLicpIgorRkFJTCBDYW5jZWxsYXRpb24gYmVoYXZpb3Igd2hlbiB0aHJvd2luZyBpbnNpZGUg
bG9vcCBib2R5OyBwcmV2ZW50Q2FuY2VsID0gZmFsc2UgYXNzZXJ0X2FycmF5X2VxdWFsczogY2Fu
Y2VsKCkgc2hvdWxkIGJlIGNhbGxlZCBsZW5ndGhzIGRpZmZlciwgZXhwZWN0ZWQgYXJyYXkgWyJw
dWxsIiwgImNhbmNlbCIsIHVuZGVmaW5lZF0gbGVuZ3RoIDMsIGdvdCBbXSBsZW5ndGggMAorRkFJ
TCBDYW5jZWxsYXRpb24gYmVoYXZpb3Igd2hlbiB0aHJvd2luZyBpbnNpZGUgbG9vcCBib2R5OyBw
cmV2ZW50Q2FuY2VsID0gdHJ1ZSBhc3NlcnRfYXJyYXlfZXF1YWxzOiBjYW5jZWwoKSBzaG91bGQg
bm90IGJlIGNhbGxlZCBsZW5ndGhzIGRpZmZlciwgZXhwZWN0ZWQgYXJyYXkgWyJwdWxsIl0gbGVu
Z3RoIDEsIGdvdCBbXSBsZW5ndGggMAorRkFJTCBDYW5jZWxsYXRpb24gYmVoYXZpb3Igd2hlbiBi
cmVha2luZyBpbnNpZGUgbG9vcCBib2R5OyBwcmV2ZW50Q2FuY2VsID0gZmFsc2UgYXNzZXJ0X2Fy
cmF5X2VxdWFsczogY2FuY2VsKCkgc2hvdWxkIGJlIGNhbGxlZCBsZW5ndGhzIGRpZmZlciwgZXhw
ZWN0ZWQgYXJyYXkgWyJwdWxsIiwgImNhbmNlbCIsIHVuZGVmaW5lZF0gbGVuZ3RoIDMsIGdvdCBb
XSBsZW5ndGggMAorRkFJTCBDYW5jZWxsYXRpb24gYmVoYXZpb3Igd2hlbiBicmVha2luZyBpbnNp
ZGUgbG9vcCBib2R5OyBwcmV2ZW50Q2FuY2VsID0gdHJ1ZSBhc3NlcnRfYXJyYXlfZXF1YWxzOiBj
YW5jZWwoKSBzaG91bGQgbm90IGJlIGNhbGxlZCBsZW5ndGhzIGRpZmZlciwgZXhwZWN0ZWQgYXJy
YXkgWyJwdWxsIl0gbGVuZ3RoIDEsIGdvdCBbXSBsZW5ndGggMAorRkFJTCBDYW5jZWxsYXRpb24g
YmVoYXZpb3Igd2hlbiByZXR1cm5pbmcgaW5zaWRlIGxvb3AgYm9keTsgcHJldmVudENhbmNlbCA9
IGZhbHNlIGFzc2VydF9hcnJheV9lcXVhbHM6IGNhbmNlbCgpIHNob3VsZCBiZSBjYWxsZWQgbGVu
Z3RocyBkaWZmZXIsIGV4cGVjdGVkIGFycmF5IFsicHVsbCIsICJjYW5jZWwiLCB1bmRlZmluZWRd
IGxlbmd0aCAzLCBnb3QgW10gbGVuZ3RoIDAKK0ZBSUwgQ2FuY2VsbGF0aW9uIGJlaGF2aW9yIHdo
ZW4gcmV0dXJuaW5nIGluc2lkZSBsb29wIGJvZHk7IHByZXZlbnRDYW5jZWwgPSB0cnVlIGFzc2Vy
dF9hcnJheV9lcXVhbHM6IGNhbmNlbCgpIHNob3VsZCBub3QgYmUgY2FsbGVkIGxlbmd0aHMgZGlm
ZmVyLCBleHBlY3RlZCBhcnJheSBbInB1bGwiXSBsZW5ndGggMSwgZ290IFtdIGxlbmd0aCAwCitG
QUlMIENhbmNlbGxhdGlvbiBiZWhhdmlvciB3aGVuIG1hbnVhbGx5IGNhbGxpbmcgcmV0dXJuKCk7
IHByZXZlbnRDYW5jZWwgPSBmYWxzZSBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24g
d2l0aCB2YWx1ZTogb2JqZWN0ICJUeXBlRXJyb3I6IHMudmFsdWVzIGlzIG5vdCBhIGZ1bmN0aW9u
LiAoSW4gJ3MudmFsdWVzKHsgcHJldmVudENhbmNlbCB9KScsICdzLnZhbHVlcycgaXMgdW5kZWZp
bmVkKSIKK0ZBSUwgQ2FuY2VsbGF0aW9uIGJlaGF2aW9yIHdoZW4gbWFudWFsbHkgY2FsbGluZyBy
ZXR1cm4oKTsgcHJldmVudENhbmNlbCA9IHRydWUgcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVq
ZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiVHlwZUVycm9yOiBzLnZhbHVlcyBpcyBub3QgYSBm
dW5jdGlvbi4gKEluICdzLnZhbHVlcyh7IHByZXZlbnRDYW5jZWwgfSknLCAncy52YWx1ZXMnIGlz
IHVuZGVmaW5lZCkiCitGQUlMIG5leHQoKSByZWplY3RzIGlmIHRoZSBzdHJlYW0gZXJyb3JzIHBy
b21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVF
cnJvcjogc1tTeW1ib2wuYXN5bmNJdGVyYXRvcl0gaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnc1tT
eW1ib2wuYXN5bmNJdGVyYXRvcl0oKScsICdzW1N5bWJvbC5hc3luY0l0ZXJhdG9yXScgaXMgdW5k
ZWZpbmVkKSIKK0ZBSUwgcmV0dXJuKCkgZG9lcyBub3QgcmVqZWN0cyBpZiB0aGUgc3RyZWFtIGhh
cyBub3QgZXJyb3JlZCB5ZXQgcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGgg
dmFsdWU6IG9iamVjdCAiVHlwZUVycm9yOiBzW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSBpcyBub3Qg
YSBmdW5jdGlvbi4gKEluICdzW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSgpJywgJ3NbU3ltYm9sLmFz
eW5jSXRlcmF0b3JdJyBpcyB1bmRlZmluZWQpIgorRkFJTCByZXR1cm4oKSByZWplY3RzIGlmIHRo
ZSBzdHJlYW0gaGFzIGVycm9yZWQgcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdp
dGggdmFsdWU6IG9iamVjdCAiVHlwZUVycm9yOiBzW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSBpcyBu
b3QgYSBmdW5jdGlvbi4gKEluICdzW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSgpJywgJ3NbU3ltYm9s
LmFzeW5jSXRlcmF0b3JdJyBpcyB1bmRlZmluZWQpIgorRkFJTCBuZXh0KCkgdGhhdCBzdWNjZWVk
czsgbmV4dCgpIHRoYXQgcmVwb3J0cyBhbiBlcnJvcjsgbmV4dCgpIHByb21pc2VfdGVzdDogVW5o
YW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVFcnJvcjogc1tTeW1ib2wu
YXN5bmNJdGVyYXRvcl0gaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnc1tTeW1ib2wuYXN5bmNJdGVy
YXRvcl0oKScsICdzW1N5bWJvbC5hc3luY0l0ZXJhdG9yXScgaXMgdW5kZWZpbmVkKSIKK0ZBSUwg
bmV4dCgpIHRoYXQgc3VjY2VlZHM7IG5leHQoKSB0aGF0IHJlcG9ydHMgYW4gZXJyb3IoKTsgbmV4
dCgpIFtubyBhd2FpdGluZ10gcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGgg
dmFsdWU6IG9iamVjdCAiVHlwZUVycm9yOiBzW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSBpcyBub3Qg
YSBmdW5jdGlvbi4gKEluICdzW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSgpJywgJ3NbU3ltYm9sLmFz
eW5jSXRlcmF0b3JdJyBpcyB1bmRlZmluZWQpIgorRkFJTCBuZXh0KCkgdGhhdCBzdWNjZWVkczsg
bmV4dCgpIHRoYXQgcmVwb3J0cyBhbiBlcnJvcigpOyByZXR1cm4oKSBwcm9taXNlX3Rlc3Q6IFVu
aGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJUeXBlRXJyb3I6IHNbU3ltYm9s
LmFzeW5jSXRlcmF0b3JdIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3NbU3ltYm9sLmFzeW5jSXRl
cmF0b3JdKCknLCAnc1tTeW1ib2wuYXN5bmNJdGVyYXRvcl0nIGlzIHVuZGVmaW5lZCkiCitGQUlM
IG5leHQoKSB0aGF0IHN1Y2NlZWRzOyBuZXh0KCkgdGhhdCByZXBvcnRzIGFuIGVycm9yKCk7IHJl
dHVybigpIFtubyBhd2FpdGluZ10gcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdp
dGggdmFsdWU6IG9iamVjdCAiVHlwZUVycm9yOiBzW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSBpcyBu
b3QgYSBmdW5jdGlvbi4gKEluICdzW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSgpJywgJ3NbU3ltYm9s
LmFzeW5jSXRlcmF0b3JdJyBpcyB1bmRlZmluZWQpIgorRkFJTCBuZXh0KCkgdGhhdCBzdWNjZWVk
czsgcmV0dXJuKCkgcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6
IG9iamVjdCAiVHlwZUVycm9yOiBzW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSBpcyBub3QgYSBmdW5j
dGlvbi4gKEluICdzW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSgpJywgJ3NbU3ltYm9sLmFzeW5jSXRl
cmF0b3JdJyBpcyB1bmRlZmluZWQpIgorRkFJTCBuZXh0KCkgdGhhdCBzdWNjZWVkczsgcmV0dXJu
KCkgW25vIGF3YWl0aW5nXSBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2
YWx1ZTogb2JqZWN0ICJUeXBlRXJyb3I6IHNbU3ltYm9sLmFzeW5jSXRlcmF0b3JdIGlzIG5vdCBh
IGZ1bmN0aW9uLiAoSW4gJ3NbU3ltYm9sLmFzeW5jSXRlcmF0b3JdKCknLCAnc1tTeW1ib2wuYXN5
bmNJdGVyYXRvcl0nIGlzIHVuZGVmaW5lZCkiCitGQUlMIHJldHVybigpOyBuZXh0KCkgcHJvbWlz
ZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiVHlwZUVycm9y
OiBycy52YWx1ZXMgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAncnMudmFsdWVzKCknLCAncnMudmFs
dWVzJyBpcyB1bmRlZmluZWQpIgorRkFJTCByZXR1cm4oKTsgbmV4dCgpIFtubyBhd2FpdGluZ10g
cHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiVHlw
ZUVycm9yOiBycy52YWx1ZXMgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAncnMudmFsdWVzKCknLCAn
cnMudmFsdWVzJyBpcyB1bmRlZmluZWQpIgorRkFJTCByZXR1cm4oKTsgcmV0dXJuKCkgcHJvbWlz
ZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiVHlwZUVycm9y
OiBycy52YWx1ZXMgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAncnMudmFsdWVzKCknLCAncnMudmFs
dWVzJyBpcyB1bmRlZmluZWQpIgorRkFJTCByZXR1cm4oKTsgcmV0dXJuKCkgW25vIGF3YWl0aW5n
XSBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJU
eXBlRXJyb3I6IHJzLnZhbHVlcyBpcyBub3QgYSBmdW5jdGlvbi4gKEluICdycy52YWx1ZXMoKScs
ICdycy52YWx1ZXMnIGlzIHVuZGVmaW5lZCkiCitGQUlMIHZhbHVlcygpIHRocm93cyBpZiB0aGVy
ZSdzIGFscmVhZHkgYSBsb2NrIHMudmFsdWVzIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3MudmFs
dWVzKCknLCAncy52YWx1ZXMnIGlzIHVuZGVmaW5lZCkKK0ZBSUwgQWNxdWlyaW5nIGEgcmVhZGVy
IGFmdGVyIGV4aGF1c3RpdmVseSBhc3luYy1pdGVyYXRpbmcgYSBzdHJlYW0gcHJvbWlzZV90ZXN0
OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiVHlwZUVycm9yOiB1bmRl
ZmluZWQgaXMgbm90IGEgZnVuY3Rpb24gKG5lYXIgJy4uLmNodW5rIG9mIHMuLi4nKSIKK0ZBSUwg
QWNxdWlyaW5nIGEgcmVhZGVyIGFmdGVyIHJldHVybigpaW5nIGZyb20gYSBzdHJlYW0gdGhhdCBl
cnJvcnMgcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVj
dCAiVHlwZUVycm9yOiBzW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSBpcyBub3QgYSBmdW5jdGlvbi4g
KEluICdzW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSh7IHByZXZlbnRDYW5jZWw6IHRydWUgfSknLCAn
c1tTeW1ib2wuYXN5bmNJdGVyYXRvcl0nIGlzIHVuZGVmaW5lZCkiCitGQUlMIEFjcXVpcmluZyBh
IHJlYWRlciBhZnRlciBwYXJ0aWFsbHkgYXN5bmMtaXRlcmF0aW5nIGEgc3RyZWFtIHByb21pc2Vf
dGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVFcnJvcjog
dW5kZWZpbmVkIGlzIG5vdCBhIGZ1bmN0aW9uIChuZWFyICcuLi5jaHVuayBvZiBzLi4uJykiCitG
QUlMIEFjcXVpcmluZyBhIHJlYWRlciBhbmQgcmVhZGluZyB0aGUgcmVtYWluaW5nIGNodW5rcyBh
ZnRlciBwYXJ0aWFsbHkgYXN5bmMtaXRlcmF0aW5nIGEgc3RyZWFtIHdpdGggcHJldmVudENhbmNl
bCA9IHRydWUgcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9i
amVjdCAiVHlwZUVycm9yOiBzLnZhbHVlcyBpcyBub3QgYSBmdW5jdGlvbi4gKEluICdzLnZhbHVl
cyh7cHJldmVudENhbmNlbDogdHJ1ZX0pJywgJ3MudmFsdWVzJyBpcyB1bmRlZmluZWQpIgorRkFJ
TCByZXR1cm4oKSBzaG91bGQgdW5sb2NrIHRoZSBzdHJlYW0gc3luY2hyb25vdXNseSB3aGVuIHBy
ZXZlbnRDYW5jZWwgPSBmYWxzZSBycy52YWx1ZXMgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAncnMu
dmFsdWVzKHsgcHJldmVudENhbmNlbCB9KScsICdycy52YWx1ZXMnIGlzIHVuZGVmaW5lZCkKK0ZB
SUwgcmV0dXJuKCkgc2hvdWxkIHVubG9jayB0aGUgc3RyZWFtIHN5bmNocm9ub3VzbHkgd2hlbiBw
cmV2ZW50Q2FuY2VsID0gdHJ1ZSBycy52YWx1ZXMgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAncnMu
dmFsdWVzKHsgcHJldmVudENhbmNlbCB9KScsICdycy52YWx1ZXMnIGlzIHVuZGVmaW5lZCkKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
dHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvYXN5bmMtaXRlcmF0b3IuYW55Lmh0bWwgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3Ry
ZWFtcy9hc3luYy1pdGVyYXRvci5hbnkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMzgyOTEzNTI4ZTY5M2Iz
YTVkNTZjNjYwYTQ1MDYwOTgwYjU0OGMzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMv
YXN5bmMtaXRlcmF0b3IuYW55Lmh0bWwKQEAgLTAsMCArMSBAQAorPCEtLSBUaGlzIGZpbGUgaXMg
cmVxdWlyZWQgZm9yIFdlYktpdCB0ZXN0IGluZnJhc3RydWN0dXJlIHRvIHJ1biB0aGUgdGVtcGxh
dGVkIHRlc3QgLS0+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxl
LXN0cmVhbXMvYXN5bmMtaXRlcmF0b3IuYW55LmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvYXN5bmMtaXRlcmF0
b3IuYW55LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdjNDlmZTkzN2RlODcyNDVkOThjNzBiMzM5ODAxOWQzNTg2
ZTE3ZmQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9hc3luYy1pdGVyYXRvci5hbnku
anMKQEAgLTAsMCArMSw2MjcgQEAKKy8vIE1FVEE6IGdsb2JhbD13aW5kb3csd29ya2VyLGpzc2hl
bGwKKy8vIE1FVEE6IHNjcmlwdD0uLi9yZXNvdXJjZXMvcnMtdXRpbHMuanMKKy8vIE1FVEE6IHNj
cmlwdD0uLi9yZXNvdXJjZXMvdGVzdC11dGlscy5qcworLy8gTUVUQTogc2NyaXB0PS4uL3Jlc291
cmNlcy9yZWNvcmRpbmctc3RyZWFtcy5qcworJ3VzZSBzdHJpY3QnOworCitjb25zdCBlcnJvcjEg
PSBuZXcgRXJyb3IoJ2Vycm9yMScpOworCitmdW5jdGlvbiBhc3NlcnRfaXRlcl9yZXN1bHQoaXRl
clJlc3VsdCwgdmFsdWUsIGRvbmUsIG1lc3NhZ2UpIHsKKyAgY29uc3QgcHJlZml4ID0gbWVzc2Fn
ZSA9PT0gdW5kZWZpbmVkID8gJycgOiBgJHttZXNzYWdlfSBgOworICBhc3NlcnRfZXF1YWxzKHR5
cGVvZiBpdGVyUmVzdWx0LCAnb2JqZWN0JywgYCR7cHJlZml4fXR5cGUgaXMgb2JqZWN0YCk7Cisg
IGFzc2VydF9lcXVhbHMoT2JqZWN0LmdldFByb3RvdHlwZU9mKGl0ZXJSZXN1bHQpLCBPYmplY3Qu
cHJvdG90eXBlLCBgJHtwcmVmaXh9W1tQcm90b3R5cGVdXWApOworICBhc3NlcnRfYXJyYXlfZXF1
YWxzKE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGl0ZXJSZXN1bHQpLnNvcnQoKSwgWydkb25l
JywgJ3ZhbHVlJ10sIGAke3ByZWZpeH1wcm9wZXJ0eSBuYW1lc2ApOworICBhc3NlcnRfZXF1YWxz
KGl0ZXJSZXN1bHQudmFsdWUsIHZhbHVlLCBgJHtwcmVmaXh9dmFsdWVgKTsKKyAgYXNzZXJ0X2Vx
dWFscyhpdGVyUmVzdWx0LmRvbmUsIGRvbmUsIGAke3ByZWZpeH1kb25lYCk7Cit9CisKK3Rlc3Qo
KCkgPT4geworICBjb25zdCBzID0gbmV3IFJlYWRhYmxlU3RyZWFtKCk7CisgIGNvbnN0IGl0ID0g
cy52YWx1ZXMoKTsKKyAgY29uc3QgcHJvdG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YoaXQpOwor
CisgIGNvbnN0IEFzeW5jSXRlcmF0b3JQcm90b3R5cGUgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2Yo
T2JqZWN0LmdldFByb3RvdHlwZU9mKGFzeW5jIGZ1bmN0aW9uKiAoKSB7fSkucHJvdG90eXBlKTsK
KyAgYXNzZXJ0X2VxdWFscyhPYmplY3QuZ2V0UHJvdG90eXBlT2YocHJvdG8pLCBBc3luY0l0ZXJh
dG9yUHJvdG90eXBlLCAncHJvdG90eXBlIHNob3VsZCBleHRlbmQgQXN5bmNJdGVyYXRvclByb3Rv
dHlwZScpOworCisgIGNvbnN0IG1ldGhvZHMgPSBbJ25leHQnLCAncmV0dXJuJ10uc29ydCgpOwor
ICBhc3NlcnRfYXJyYXlfZXF1YWxzKE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHByb3RvKS5z
b3J0KCksIG1ldGhvZHMsICdzaG91bGQgaGF2ZSBhbGwgdGhlIGNvcnJlY3QgbWV0aG9kcycpOwor
CisgIGZvciAoY29uc3QgbSBvZiBtZXRob2RzKSB7CisgICAgY29uc3QgcHJvcERlc2MgPSBPYmpl
Y3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHByb3RvLCBtKTsKKyAgICBhc3NlcnRfdHJ1ZShw
cm9wRGVzYy5lbnVtZXJhYmxlLCAnbWV0aG9kIHNob3VsZCBiZSBlbnVtZXJhYmxlJyk7CisgICAg
YXNzZXJ0X3RydWUocHJvcERlc2MuY29uZmlndXJhYmxlLCAnbWV0aG9kIHNob3VsZCBiZSBjb25m
aWd1cmFibGUnKTsKKyAgICBhc3NlcnRfdHJ1ZShwcm9wRGVzYy53cml0YWJsZSwgJ21ldGhvZCBz
aG91bGQgYmUgd3JpdGFibGUnKTsKKyAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiBpdFttXSwgJ2Z1
bmN0aW9uJywgJ21ldGhvZCBzaG91bGQgYmUgYSBmdW5jdGlvbicpOworICAgIGFzc2VydF9lcXVh
bHMoaXRbbV0ubmFtZSwgbSwgJ21ldGhvZCBzaG91bGQgaGF2ZSB0aGUgY29ycmVjdCBuYW1lJyk7
CisgIH0KKworICBhc3NlcnRfZXF1YWxzKGl0Lm5leHQubGVuZ3RoLCAwLCAnbmV4dCBzaG91bGQg
aGF2ZSBubyBwYXJhbWV0ZXJzJyk7CisgIGFzc2VydF9lcXVhbHMoaXQucmV0dXJuLmxlbmd0aCwg
MSwgJ3JldHVybiBzaG91bGQgaGF2ZSAxIHBhcmFtZXRlcicpOworICBhc3NlcnRfZXF1YWxzKHR5
cGVvZiBpdC50aHJvdywgJ3VuZGVmaW5lZCcsICd0aHJvdyBzaG91bGQgbm90IGV4aXN0Jyk7Cit9
LCAnQXN5bmMgaXRlcmF0b3IgaW5zdGFuY2VzIHNob3VsZCBoYXZlIHRoZSBjb3JyZWN0IGxpc3Qg
b2YgcHJvcGVydGllcycpOworCitwcm9taXNlX3Rlc3QoYXN5bmMgKCkgPT4geworICBjb25zdCBz
ID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjLmVucXVldWUo
MSk7CisgICAgICBjLmVucXVldWUoMik7CisgICAgICBjLmVucXVldWUoMyk7CisgICAgICBjLmNs
b3NlKCk7CisgICAgfQorICB9KTsKKworICBjb25zdCBjaHVua3MgPSBbXTsKKyAgZm9yIGF3YWl0
IChjb25zdCBjaHVuayBvZiBzKSB7CisgICAgY2h1bmtzLnB1c2goY2h1bmspOworICB9CisgIGFz
c2VydF9hcnJheV9lcXVhbHMoY2h1bmtzLCBbMSwgMiwgM10pOworfSwgJ0FzeW5jLWl0ZXJhdGlu
ZyBhIHB1c2ggc291cmNlJyk7CisKK3Byb21pc2VfdGVzdChhc3luYyAoKSA9PiB7CisgIGxldCBp
ID0gMTsKKyAgY29uc3QgcyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgcHVsbChjKSB7Cisg
ICAgICBjLmVucXVldWUoaSk7CisgICAgICBpZiAoaSA+PSAzKSB7CisgICAgICAgIGMuY2xvc2Uo
KTsKKyAgICAgIH0KKyAgICAgIGkgKz0gMTsKKyAgICB9CisgIH0pOworCisgIGNvbnN0IGNodW5r
cyA9IFtdOworICBmb3IgYXdhaXQgKGNvbnN0IGNodW5rIG9mIHMpIHsKKyAgICBjaHVua3MucHVz
aChjaHVuayk7CisgIH0KKyAgYXNzZXJ0X2FycmF5X2VxdWFscyhjaHVua3MsIFsxLCAyLCAzXSk7
Cit9LCAnQXN5bmMtaXRlcmF0aW5nIGEgcHVsbCBzb3VyY2UnKTsKKworcHJvbWlzZV90ZXN0KGFz
eW5jICgpID0+IHsKKyAgY29uc3QgcyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQo
YykgeworICAgICAgYy5lbnF1ZXVlKHVuZGVmaW5lZCk7CisgICAgICBjLmVucXVldWUodW5kZWZp
bmVkKTsKKyAgICAgIGMuZW5xdWV1ZSh1bmRlZmluZWQpOworICAgICAgYy5jbG9zZSgpOworICAg
IH0KKyAgfSk7CisKKyAgY29uc3QgY2h1bmtzID0gW107CisgIGZvciBhd2FpdCAoY29uc3QgY2h1
bmsgb2YgcykgeworICAgIGNodW5rcy5wdXNoKGNodW5rKTsKKyAgfQorICBhc3NlcnRfYXJyYXlf
ZXF1YWxzKGNodW5rcywgW3VuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWRdKTsKK30sICdB
c3luYy1pdGVyYXRpbmcgYSBwdXNoIHNvdXJjZSB3aXRoIHVuZGVmaW5lZCB2YWx1ZXMnKTsKKwor
cHJvbWlzZV90ZXN0KGFzeW5jICgpID0+IHsKKyAgbGV0IGkgPSAxOworICBjb25zdCBzID0gbmV3
IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBwdWxsKGMpIHsKKyAgICAgIGMuZW5xdWV1ZSh1bmRlZmlu
ZWQpOworICAgICAgaWYgKGkgPj0gMykgeworICAgICAgICBjLmNsb3NlKCk7CisgICAgICB9Cisg
ICAgICBpICs9IDE7CisgICAgfQorICB9KTsKKworICBjb25zdCBjaHVua3MgPSBbXTsKKyAgZm9y
IGF3YWl0IChjb25zdCBjaHVuayBvZiBzKSB7CisgICAgY2h1bmtzLnB1c2goY2h1bmspOworICB9
CisgIGFzc2VydF9hcnJheV9lcXVhbHMoY2h1bmtzLCBbdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVu
ZGVmaW5lZF0pOworfSwgJ0FzeW5jLWl0ZXJhdGluZyBhIHB1bGwgc291cmNlIHdpdGggdW5kZWZp
bmVkIHZhbHVlcycpOworCitwcm9taXNlX3Rlc3QoYXN5bmMgKCkgPT4geworICBsZXQgaSA9IDE7
CisgIGNvbnN0IHMgPSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSh7CisgICAgcHVsbChjKSB7Cisg
ICAgICBjLmVucXVldWUoaSk7CisgICAgICBpZiAoaSA+PSAzKSB7CisgICAgICAgIGMuY2xvc2Uo
KTsKKyAgICAgIH0KKyAgICAgIGkgKz0gMTsKKyAgICB9LAorICB9LCBuZXcgQ291bnRRdWV1aW5n
U3RyYXRlZ3koeyBoaWdoV2F0ZXJNYXJrOiAwIH0pKTsKKworICBjb25zdCBpdCA9IHMudmFsdWVz
KCk7CisgIGFzc2VydF9hcnJheV9lcXVhbHMocy5ldmVudHMsIFtdKTsKKworICBjb25zdCByZWFk
MSA9IGF3YWl0IGl0Lm5leHQoKTsKKyAgYXNzZXJ0X2l0ZXJfcmVzdWx0KHJlYWQxLCAxLCBmYWxz
ZSk7CisgIGFzc2VydF9hcnJheV9lcXVhbHMocy5ldmVudHMsIFsncHVsbCddKTsKKworICBjb25z
dCByZWFkMiA9IGF3YWl0IGl0Lm5leHQoKTsKKyAgYXNzZXJ0X2l0ZXJfcmVzdWx0KHJlYWQyLCAy
LCBmYWxzZSk7CisgIGFzc2VydF9hcnJheV9lcXVhbHMocy5ldmVudHMsIFsncHVsbCcsICdwdWxs
J10pOworCisgIGNvbnN0IHJlYWQzID0gYXdhaXQgaXQubmV4dCgpOworICBhc3NlcnRfaXRlcl9y
ZXN1bHQocmVhZDMsIDMsIGZhbHNlKTsKKyAgYXNzZXJ0X2FycmF5X2VxdWFscyhzLmV2ZW50cywg
WydwdWxsJywgJ3B1bGwnLCAncHVsbCddKTsKKworICBjb25zdCByZWFkNCA9IGF3YWl0IGl0Lm5l
eHQoKTsKKyAgYXNzZXJ0X2l0ZXJfcmVzdWx0KHJlYWQ0LCB1bmRlZmluZWQsIHRydWUpOworICBh
c3NlcnRfYXJyYXlfZXF1YWxzKHMuZXZlbnRzLCBbJ3B1bGwnLCAncHVsbCcsICdwdWxsJ10pOwor
fSwgJ0FzeW5jLWl0ZXJhdGluZyBhIHB1bGwgc291cmNlIG1hbnVhbGx5Jyk7CisKK3Byb21pc2Vf
dGVzdChhc3luYyAoKSA9PiB7CisgIGNvbnN0IHMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAg
IHN0YXJ0KGMpIHsKKyAgICAgIGMuZXJyb3IoJ2UnKTsKKyAgICB9LAorICB9KTsKKworICB0cnkg
eworICAgIGZvciBhd2FpdCAoY29uc3QgY2h1bmsgb2Ygcykge30KKyAgICBhc3NlcnRfdW5yZWFj
aGVkKCk7CisgIH0gY2F0Y2ggKGUpIHsKKyAgICBhc3NlcnRfZXF1YWxzKGUsICdlJyk7CisgIH0K
K30sICdBc3luYy1pdGVyYXRpbmcgYW4gZXJyb3JlZCBzdHJlYW0gdGhyb3dzJyk7CisKK3Byb21p
c2VfdGVzdChhc3luYyAoKSA9PiB7CisgIGNvbnN0IHMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewor
ICAgIHN0YXJ0KGMpIHsKKyAgICAgIGMuY2xvc2UoKTsKKyAgICB9CisgIH0pOworCisgIGZvciBh
d2FpdCAoY29uc3QgY2h1bmsgb2YgcykgeworICAgIGFzc2VydF91bnJlYWNoZWQoKTsKKyAgfQor
fSwgJ0FzeW5jLWl0ZXJhdGluZyBhIGNsb3NlZCBzdHJlYW0gbmV2ZXIgZXhlY3V0ZXMgdGhlIGxv
b3AgYm9keSwgYnV0IHdvcmtzIGZpbmUnKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jICgpID0+IHsK
KyAgY29uc3QgcyA9IG5ldyBSZWFkYWJsZVN0cmVhbSgpOworCisgIGNvbnN0IGxvb3AgPSBhc3lu
YyAoKSA9PiB7CisgICAgZm9yIGF3YWl0IChjb25zdCBjaHVuayBvZiBzKSB7CisgICAgICBhc3Nl
cnRfdW5yZWFjaGVkKCk7CisgICAgfQorICAgIGFzc2VydF91bnJlYWNoZWQoKTsKKyAgfTsKKwor
ICBhd2FpdCBQcm9taXNlLnJhY2UoWworICAgIGxvb3AoKSwKKyAgICBmbHVzaEFzeW5jRXZlbnRz
KCkKKyAgXSk7Cit9LCAnQXN5bmMtaXRlcmF0aW5nIGFuIGVtcHR5IGJ1dCBub3QgY2xvc2VkL2Vy
cm9yZWQgc3RyZWFtIG5ldmVyIGV4ZWN1dGVzIHRoZSBsb29wIGJvZHkgYW5kIHN0YWxscyB0aGUg
YXN5bmMgZnVuY3Rpb24nKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jICgpID0+IHsKKyAgY29uc3Qg
cyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgYy5lbnF1ZXVl
KDEpOworICAgICAgYy5lbnF1ZXVlKDIpOworICAgICAgYy5lbnF1ZXVlKDMpOworICAgICAgYy5j
bG9zZSgpOworICAgIH0sCisgIH0pOworCisgIGNvbnN0IHJlYWRlciA9IHMuZ2V0UmVhZGVyKCk7
CisgIGNvbnN0IHJlYWRSZXN1bHQgPSBhd2FpdCByZWFkZXIucmVhZCgpOworICBhc3NlcnRfaXRl
cl9yZXN1bHQocmVhZFJlc3VsdCwgMSwgZmFsc2UpOworICByZWFkZXIucmVsZWFzZUxvY2soKTsK
KworICBjb25zdCBjaHVua3MgPSBbXTsKKyAgZm9yIGF3YWl0IChjb25zdCBjaHVuayBvZiBzKSB7
CisgICAgY2h1bmtzLnB1c2goY2h1bmspOworICB9CisgIGFzc2VydF9hcnJheV9lcXVhbHMoY2h1
bmtzLCBbMiwgM10pOworfSwgJ0FzeW5jLWl0ZXJhdGluZyBhIHBhcnRpYWxseSBjb25zdW1lZCBz
dHJlYW0nKTsKKworZm9yIChjb25zdCB0eXBlIG9mIFsndGhyb3cnLCAnYnJlYWsnLCAncmV0dXJu
J10pIHsKKyAgZm9yIChjb25zdCBwcmV2ZW50Q2FuY2VsIG9mIFtmYWxzZSwgdHJ1ZV0pIHsKKyAg
ICBwcm9taXNlX3Rlc3QoYXN5bmMgKCkgPT4geworICAgICAgY29uc3QgcyA9IHJlY29yZGluZ1Jl
YWRhYmxlU3RyZWFtKHsKKyAgICAgICAgc3RhcnQoYykgeworICAgICAgICAgIGMuZW5xdWV1ZSgw
KTsKKyAgICAgICAgfQorICAgICAgfSk7CisKKyAgICAgIC8vIHVzZSBhIHNlcGFyYXRlIGZ1bmN0
aW9uIGZvciB0aGUgbG9vcCBib2R5IHNvIHJldHVybiBkb2VzIG5vdCBzdG9wIHRoZSB0ZXN0Cisg
ICAgICBjb25zdCBsb29wID0gYXN5bmMgKCkgPT4geworICAgICAgICBmb3IgYXdhaXQgKGNvbnN0
IGMgb2Ygcy52YWx1ZXMoeyBwcmV2ZW50Q2FuY2VsIH0pKSB7CisgICAgICAgICAgaWYgKHR5cGUg
PT09ICd0aHJvdycpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigpOworICAgICAgICAg
IH0gZWxzZSBpZiAodHlwZSA9PT0gJ2JyZWFrJykgeworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAncmV0dXJuJykgeworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfTsKKworICAgICAgdHJ5IHsKKyAgICAg
ICAgYXdhaXQgbG9vcCgpOworICAgICAgfSBjYXRjaCAoZSkge30KKworICAgICAgaWYgKHByZXZl
bnRDYW5jZWwpIHsKKyAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhzLmV2ZW50cywgWydwdWxs
J10sIGBjYW5jZWwoKSBzaG91bGQgbm90IGJlIGNhbGxlZGApOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhzLmV2ZW50cywgWydwdWxsJywgJ2NhbmNlbCcsIHVu
ZGVmaW5lZF0sIGBjYW5jZWwoKSBzaG91bGQgYmUgY2FsbGVkYCk7CisgICAgICB9CisgICAgfSwg
YENhbmNlbGxhdGlvbiBiZWhhdmlvciB3aGVuICR7dHlwZX1pbmcgaW5zaWRlIGxvb3AgYm9keTsg
cHJldmVudENhbmNlbCA9ICR7cHJldmVudENhbmNlbH1gKTsKKyAgfQorfQorCitmb3IgKGNvbnN0
IHByZXZlbnRDYW5jZWwgb2YgW2ZhbHNlLCB0cnVlXSkgeworICBwcm9taXNlX3Rlc3QoYXN5bmMg
KCkgPT4geworICAgIGNvbnN0IHMgPSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSh7CisgICAgICBz
dGFydChjKSB7CisgICAgICAgIGMuZW5xdWV1ZSgwKTsKKyAgICAgIH0KKyAgICB9KTsKKworICAg
IGNvbnN0IGl0ID0gcy52YWx1ZXMoeyBwcmV2ZW50Q2FuY2VsIH0pOworICAgIGF3YWl0IGl0LnJl
dHVybigpOworCisgICAgaWYgKHByZXZlbnRDYW5jZWwpIHsKKyAgICAgIGFzc2VydF9hcnJheV9l
cXVhbHMocy5ldmVudHMsIFtdLCBgY2FuY2VsKCkgc2hvdWxkIG5vdCBiZSBjYWxsZWRgKTsKKyAg
ICB9IGVsc2UgeworICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhzLmV2ZW50cywgWydjYW5jZWwn
LCB1bmRlZmluZWRdLCBgY2FuY2VsKCkgc2hvdWxkIGJlIGNhbGxlZGApOworICAgIH0KKyAgfSwg
YENhbmNlbGxhdGlvbiBiZWhhdmlvciB3aGVuIG1hbnVhbGx5IGNhbGxpbmcgcmV0dXJuKCk7IHBy
ZXZlbnRDYW5jZWwgPSAke3ByZXZlbnRDYW5jZWx9YCk7Cit9CisKK3Byb21pc2VfdGVzdChhc3lu
YyB0ID0+IHsKKyAgbGV0IHRpbWVzUHVsbGVkID0gMDsKKyAgY29uc3QgcyA9IG5ldyBSZWFkYWJs
ZVN0cmVhbSh7CisgICAgcHVsbChjKSB7CisgICAgICBpZiAodGltZXNQdWxsZWQgPT09IDApIHsK
KyAgICAgICAgYy5lbnF1ZXVlKDApOworICAgICAgICArK3RpbWVzUHVsbGVkOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgYy5lcnJvcihlcnJvcjEpOworICAgICAgfQorICAgIH0KKyAgfSk7CisK
KyAgY29uc3QgaXQgPSBzW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSgpOworCisgIGNvbnN0IGl0ZXJS
ZXN1bHQxID0gYXdhaXQgaXQubmV4dCgpOworICBhc3NlcnRfaXRlcl9yZXN1bHQoaXRlclJlc3Vs
dDEsIDAsIGZhbHNlLCAnMXN0IG5leHQoKScpOworCisgIGF3YWl0IHByb21pc2VfcmVqZWN0c19l
eGFjdGx5KHQsIGVycm9yMSwgaXQubmV4dCgpLCAnMm5kIG5leHQoKScpOworfSwgJ25leHQoKSBy
ZWplY3RzIGlmIHRoZSBzdHJlYW0gZXJyb3JzJyk7CisKK3Byb21pc2VfdGVzdChhc3luYyAoKSA9
PiB7CisgIGxldCB0aW1lc1B1bGxlZCA9IDA7CisgIGNvbnN0IHMgPSBuZXcgUmVhZGFibGVTdHJl
YW0oeworICAgIHB1bGwoYykgeworICAgICAgaWYgKHRpbWVzUHVsbGVkID09PSAwKSB7CisgICAg
ICAgIGMuZW5xdWV1ZSgwKTsKKyAgICAgICAgKyt0aW1lc1B1bGxlZDsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIGMuZXJyb3IoZXJyb3IxKTsKKyAgICAgIH0KKyAgICB9CisgIH0pOworCisgIGNv
bnN0IGl0ID0gc1tTeW1ib2wuYXN5bmNJdGVyYXRvcl0oKTsKKworICBjb25zdCBpdGVyUmVzdWx0
ID0gYXdhaXQgaXQucmV0dXJuKCdyZXR1cm4gdmFsdWUnKTsKKyAgYXNzZXJ0X2l0ZXJfcmVzdWx0
KGl0ZXJSZXN1bHQsICdyZXR1cm4gdmFsdWUnLCB0cnVlKTsKK30sICdyZXR1cm4oKSBkb2VzIG5v
dCByZWplY3RzIGlmIHRoZSBzdHJlYW0gaGFzIG5vdCBlcnJvcmVkIHlldCcpOworCitwcm9taXNl
X3Rlc3QoYXN5bmMgdCA9PiB7CisgIGxldCB0aW1lc1B1bGxlZCA9IDA7CisgIGNvbnN0IHMgPSBu
ZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHB1bGwoYykgeworICAgICAgLy8gRG8gbm90IGVycm9y
IGluIHN0YXJ0KCkgYmVjYXVzZSBkb2luZyBzbyB3b3VsZCBwcmV2ZW50IGFjcXVpcmluZyBhIHJl
YWRlci9hc3luYyBpdGVyYXRvci4KKyAgICAgIGMuZXJyb3IoZXJyb3IxKTsKKyAgICB9CisgIH0p
OworCisgIGNvbnN0IGl0ID0gc1tTeW1ib2wuYXN5bmNJdGVyYXRvcl0oKTsKKworICBhd2FpdCBm
bHVzaEFzeW5jRXZlbnRzKCk7CisgIGF3YWl0IHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVy
cm9yMSwgaXQucmV0dXJuKCdyZXR1cm4gdmFsdWUnKSk7Cit9LCAncmV0dXJuKCkgcmVqZWN0cyBp
ZiB0aGUgc3RyZWFtIGhhcyBlcnJvcmVkJyk7CisKK3Byb21pc2VfdGVzdChhc3luYyB0ID0+IHsK
KyAgbGV0IHRpbWVzUHVsbGVkID0gMDsKKyAgY29uc3QgcyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7
CisgICAgcHVsbChjKSB7CisgICAgICBpZiAodGltZXNQdWxsZWQgPT09IDApIHsKKyAgICAgICAg
Yy5lbnF1ZXVlKDApOworICAgICAgICArK3RpbWVzUHVsbGVkOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgYy5lcnJvcihlcnJvcjEpOworICAgICAgfQorICAgIH0KKyAgfSk7CisKKyAgY29uc3Qg
aXQgPSBzW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSgpOworCisgIGNvbnN0IGl0ZXJSZXN1bHQxID0g
YXdhaXQgaXQubmV4dCgpOworICBhc3NlcnRfaXRlcl9yZXN1bHQoaXRlclJlc3VsdDEsIDAsIGZh
bHNlLCAnMXN0IG5leHQoKScpOworCisgIGF3YWl0IHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQs
IGVycm9yMSwgaXQubmV4dCgpLCAnMm5kIG5leHQoKScpOworCisgIGNvbnN0IGl0ZXJSZXN1bHQz
ID0gYXdhaXQgaXQubmV4dCgpOworICBhc3NlcnRfaXRlcl9yZXN1bHQoaXRlclJlc3VsdDMsIHVu
ZGVmaW5lZCwgdHJ1ZSwgJzNyZCBuZXh0KCknKTsKK30sICduZXh0KCkgdGhhdCBzdWNjZWVkczsg
bmV4dCgpIHRoYXQgcmVwb3J0cyBhbiBlcnJvcjsgbmV4dCgpJyk7CisKK3Byb21pc2VfdGVzdChh
c3luYyAoKSA9PiB7CisgIGxldCB0aW1lc1B1bGxlZCA9IDA7CisgIGNvbnN0IHMgPSBuZXcgUmVh
ZGFibGVTdHJlYW0oeworICAgIHB1bGwoYykgeworICAgICAgaWYgKHRpbWVzUHVsbGVkID09PSAw
KSB7CisgICAgICAgIGMuZW5xdWV1ZSgwKTsKKyAgICAgICAgKyt0aW1lc1B1bGxlZDsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIGMuZXJyb3IoZXJyb3IxKTsKKyAgICAgIH0KKyAgICB9CisgIH0p
OworCisgIGNvbnN0IGl0ID0gc1tTeW1ib2wuYXN5bmNJdGVyYXRvcl0oKTsKKworICBjb25zdCBp
dGVyUmVzdWx0cyA9IGF3YWl0IFByb21pc2UuYWxsU2V0dGxlZChbaXQubmV4dCgpLCBpdC5uZXh0
KCksIGl0Lm5leHQoKV0pOworCisgIGFzc2VydF9lcXVhbHMoaXRlclJlc3VsdHNbMF0uc3RhdHVz
LCAnZnVsZmlsbGVkJywgJzFzdCBuZXh0KCkgcHJvbWlzZSBzdGF0dXMnKTsKKyAgYXNzZXJ0X2l0
ZXJfcmVzdWx0KGl0ZXJSZXN1bHRzWzBdLnZhbHVlLCAwLCBmYWxzZSwgJzFzdCBuZXh0KCknKTsK
KworICBhc3NlcnRfZXF1YWxzKGl0ZXJSZXN1bHRzWzFdLnN0YXR1cywgJ3JlamVjdGVkJywgJzJu
ZCBuZXh0KCkgcHJvbWlzZSBzdGF0dXMnKTsKKyAgYXNzZXJ0X2VxdWFscyhpdGVyUmVzdWx0c1sx
XS5yZWFzb24sIGVycm9yMSwgJzJuZCBuZXh0KCkgcmVqZWN0aW9uIHJlYXNvbicpOworCisgIGFz
c2VydF9lcXVhbHMoaXRlclJlc3VsdHNbMl0uc3RhdHVzLCAnZnVsZmlsbGVkJywgJzNyZCBuZXh0
KCkgcHJvbWlzZSBzdGF0dXMnKTsKKyAgYXNzZXJ0X2l0ZXJfcmVzdWx0KGl0ZXJSZXN1bHRzWzJd
LnZhbHVlLCB1bmRlZmluZWQsIHRydWUsICczcmQgbmV4dCgpJyk7Cit9LCAnbmV4dCgpIHRoYXQg
c3VjY2VlZHM7IG5leHQoKSB0aGF0IHJlcG9ydHMgYW4gZXJyb3IoKTsgbmV4dCgpIFtubyBhd2Fp
dGluZ10nKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4geworICBsZXQgdGltZXNQdWxsZWQg
PSAwOworICBjb25zdCBzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBwdWxsKGMpIHsKKyAg
ICAgIGlmICh0aW1lc1B1bGxlZCA9PT0gMCkgeworICAgICAgICBjLmVucXVldWUoMCk7CisgICAg
ICAgICsrdGltZXNQdWxsZWQ7CisgICAgICB9IGVsc2UgeworICAgICAgICBjLmVycm9yKGVycm9y
MSk7CisgICAgICB9CisgICAgfQorICB9KTsKKworICBjb25zdCBpdCA9IHNbU3ltYm9sLmFzeW5j
SXRlcmF0b3JdKCk7CisKKyAgY29uc3QgaXRlclJlc3VsdDEgPSBhd2FpdCBpdC5uZXh0KCk7Cisg
IGFzc2VydF9pdGVyX3Jlc3VsdChpdGVyUmVzdWx0MSwgMCwgZmFsc2UsICcxc3QgbmV4dCgpJyk7
CisKKyAgYXdhaXQgcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCBpdC5uZXh0KCks
ICcybmQgbmV4dCgpJyk7CisKKyAgY29uc3QgaXRlclJlc3VsdDMgPSBhd2FpdCBpdC5yZXR1cm4o
J3JldHVybiB2YWx1ZScpOworICBhc3NlcnRfaXRlcl9yZXN1bHQoaXRlclJlc3VsdDMsICdyZXR1
cm4gdmFsdWUnLCB0cnVlLCAncmV0dXJuKCknKTsKK30sICduZXh0KCkgdGhhdCBzdWNjZWVkczsg
bmV4dCgpIHRoYXQgcmVwb3J0cyBhbiBlcnJvcigpOyByZXR1cm4oKScpOworCitwcm9taXNlX3Rl
c3QoYXN5bmMgKCkgPT4geworICBsZXQgdGltZXNQdWxsZWQgPSAwOworICBjb25zdCBzID0gbmV3
IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBwdWxsKGMpIHsKKyAgICAgIGlmICh0aW1lc1B1bGxlZCA9
PT0gMCkgeworICAgICAgICBjLmVucXVldWUoMCk7CisgICAgICAgICsrdGltZXNQdWxsZWQ7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBjLmVycm9yKGVycm9yMSk7CisgICAgICB9CisgICAgfQor
ICB9KTsKKworICBjb25zdCBpdCA9IHNbU3ltYm9sLmFzeW5jSXRlcmF0b3JdKCk7CisKKyAgY29u
c3QgaXRlclJlc3VsdHMgPSBhd2FpdCBQcm9taXNlLmFsbFNldHRsZWQoW2l0Lm5leHQoKSwgaXQu
bmV4dCgpLCBpdC5yZXR1cm4oJ3JldHVybiB2YWx1ZScpXSk7CisKKyAgYXNzZXJ0X2VxdWFscyhp
dGVyUmVzdWx0c1swXS5zdGF0dXMsICdmdWxmaWxsZWQnLCAnMXN0IG5leHQoKSBwcm9taXNlIHN0
YXR1cycpOworICBhc3NlcnRfaXRlcl9yZXN1bHQoaXRlclJlc3VsdHNbMF0udmFsdWUsIDAsIGZh
bHNlLCAnMXN0IG5leHQoKScpOworCisgIGFzc2VydF9lcXVhbHMoaXRlclJlc3VsdHNbMV0uc3Rh
dHVzLCAncmVqZWN0ZWQnLCAnMm5kIG5leHQoKSBwcm9taXNlIHN0YXR1cycpOworICBhc3NlcnRf
ZXF1YWxzKGl0ZXJSZXN1bHRzWzFdLnJlYXNvbiwgZXJyb3IxLCAnMm5kIG5leHQoKSByZWplY3Rp
b24gcmVhc29uJyk7CisKKyAgYXNzZXJ0X2VxdWFscyhpdGVyUmVzdWx0c1syXS5zdGF0dXMsICdm
dWxmaWxsZWQnLCAncmV0dXJuKCkgcHJvbWlzZSBzdGF0dXMnKTsKKyAgYXNzZXJ0X2l0ZXJfcmVz
dWx0KGl0ZXJSZXN1bHRzWzJdLnZhbHVlLCAncmV0dXJuIHZhbHVlJywgdHJ1ZSwgJ3JldHVybigp
Jyk7Cit9LCAnbmV4dCgpIHRoYXQgc3VjY2VlZHM7IG5leHQoKSB0aGF0IHJlcG9ydHMgYW4gZXJy
b3IoKTsgcmV0dXJuKCkgW25vIGF3YWl0aW5nXScpOworCitwcm9taXNlX3Rlc3QoYXN5bmMgKCkg
PT4geworICBsZXQgdGltZXNQdWxsZWQgPSAwOworICBjb25zdCBzID0gbmV3IFJlYWRhYmxlU3Ry
ZWFtKHsKKyAgICBwdWxsKGMpIHsKKyAgICAgIGMuZW5xdWV1ZSh0aW1lc1B1bGxlZCk7CisgICAg
ICArK3RpbWVzUHVsbGVkOworICAgIH0KKyAgfSk7CisgIGNvbnN0IGl0ID0gc1tTeW1ib2wuYXN5
bmNJdGVyYXRvcl0oKTsKKworICBjb25zdCBpdGVyUmVzdWx0MSA9IGF3YWl0IGl0Lm5leHQoKTsK
KyAgYXNzZXJ0X2l0ZXJfcmVzdWx0KGl0ZXJSZXN1bHQxLCAwLCBmYWxzZSwgJ25leHQoKScpOwor
CisgIGNvbnN0IGl0ZXJSZXN1bHQyID0gYXdhaXQgaXQucmV0dXJuKCdyZXR1cm4gdmFsdWUnKTsK
KyAgYXNzZXJ0X2l0ZXJfcmVzdWx0KGl0ZXJSZXN1bHQyLCAncmV0dXJuIHZhbHVlJywgdHJ1ZSwg
J3JldHVybigpJyk7CisKKyAgYXNzZXJ0X2VxdWFscyh0aW1lc1B1bGxlZCwgMik7Cit9LCAnbmV4
dCgpIHRoYXQgc3VjY2VlZHM7IHJldHVybigpJyk7CisKK3Byb21pc2VfdGVzdChhc3luYyAoKSA9
PiB7CisgIGxldCB0aW1lc1B1bGxlZCA9IDA7CisgIGNvbnN0IHMgPSBuZXcgUmVhZGFibGVTdHJl
YW0oeworICAgIHB1bGwoYykgeworICAgICAgYy5lbnF1ZXVlKHRpbWVzUHVsbGVkKTsKKyAgICAg
ICsrdGltZXNQdWxsZWQ7CisgICAgfQorICB9KTsKKyAgY29uc3QgaXQgPSBzW1N5bWJvbC5hc3lu
Y0l0ZXJhdG9yXSgpOworCisgIGNvbnN0IGl0ZXJSZXN1bHRzID0gYXdhaXQgUHJvbWlzZS5hbGxT
ZXR0bGVkKFtpdC5uZXh0KCksIGl0LnJldHVybigncmV0dXJuIHZhbHVlJyldKTsKKworICBhc3Nl
cnRfZXF1YWxzKGl0ZXJSZXN1bHRzWzBdLnN0YXR1cywgJ2Z1bGZpbGxlZCcsICduZXh0KCkgcHJv
bWlzZSBzdGF0dXMnKTsKKyAgYXNzZXJ0X2l0ZXJfcmVzdWx0KGl0ZXJSZXN1bHRzWzBdLnZhbHVl
LCAwLCBmYWxzZSwgJ25leHQoKScpOworCisgIGFzc2VydF9lcXVhbHMoaXRlclJlc3VsdHNbMV0u
c3RhdHVzLCAnZnVsZmlsbGVkJywgJ3JldHVybigpIHByb21pc2Ugc3RhdHVzJyk7CisgIGFzc2Vy
dF9pdGVyX3Jlc3VsdChpdGVyUmVzdWx0c1sxXS52YWx1ZSwgJ3JldHVybiB2YWx1ZScsIHRydWUs
ICdyZXR1cm4oKScpOworCisgIGFzc2VydF9lcXVhbHModGltZXNQdWxsZWQsIDIpOworfSwgJ25l
eHQoKSB0aGF0IHN1Y2NlZWRzOyByZXR1cm4oKSBbbm8gYXdhaXRpbmddJyk7CisKK3Byb21pc2Vf
dGVzdChhc3luYyAoKSA9PiB7CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKCk7Cisg
IGNvbnN0IGl0ID0gcnMudmFsdWVzKCk7CisKKyAgY29uc3QgaXRlclJlc3VsdDEgPSBhd2FpdCBp
dC5yZXR1cm4oJ3JldHVybiB2YWx1ZScpOworICBhc3NlcnRfaXRlcl9yZXN1bHQoaXRlclJlc3Vs
dDEsICdyZXR1cm4gdmFsdWUnLCB0cnVlLCAncmV0dXJuKCknKTsKKworICBjb25zdCBpdGVyUmVz
dWx0MiA9IGF3YWl0IGl0Lm5leHQoKTsKKyAgYXNzZXJ0X2l0ZXJfcmVzdWx0KGl0ZXJSZXN1bHQy
LCB1bmRlZmluZWQsIHRydWUsICduZXh0KCknKTsKK30sICdyZXR1cm4oKTsgbmV4dCgpJyk7CisK
K3Byb21pc2VfdGVzdChhc3luYyAoKSA9PiB7CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3Ry
ZWFtKCk7CisgIGNvbnN0IGl0ID0gcnMudmFsdWVzKCk7CisKKyAgY29uc3QgaXRlclJlc3VsdHMg
PSBhd2FpdCBQcm9taXNlLmFsbFNldHRsZWQoW2l0LnJldHVybigncmV0dXJuIHZhbHVlJyksIGl0
Lm5leHQoKV0pOworCisgIGFzc2VydF9lcXVhbHMoaXRlclJlc3VsdHNbMF0uc3RhdHVzLCAnZnVs
ZmlsbGVkJywgJ3JldHVybigpIHByb21pc2Ugc3RhdHVzJyk7CisgIGFzc2VydF9pdGVyX3Jlc3Vs
dChpdGVyUmVzdWx0c1swXS52YWx1ZSwgJ3JldHVybiB2YWx1ZScsIHRydWUsICdyZXR1cm4oKScp
OworCisgIGFzc2VydF9lcXVhbHMoaXRlclJlc3VsdHNbMV0uc3RhdHVzLCAnZnVsZmlsbGVkJywg
J25leHQoKSBwcm9taXNlIHN0YXR1cycpOworICBhc3NlcnRfaXRlcl9yZXN1bHQoaXRlclJlc3Vs
dHNbMV0udmFsdWUsIHVuZGVmaW5lZCwgdHJ1ZSwgJ25leHQoKScpOworfSwgJ3JldHVybigpOyBu
ZXh0KCkgW25vIGF3YWl0aW5nXScpOworCitwcm9taXNlX3Rlc3QoYXN5bmMgKCkgPT4geworICBj
b25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSgpOworICBjb25zdCBpdCA9IHJzLnZhbHVlcygp
OworCisgIGNvbnN0IGl0ZXJSZXN1bHQxID0gYXdhaXQgaXQucmV0dXJuKCdyZXR1cm4gdmFsdWUg
MScpOworICBhc3NlcnRfaXRlcl9yZXN1bHQoaXRlclJlc3VsdDEsICdyZXR1cm4gdmFsdWUgMScs
IHRydWUsICcxc3QgcmV0dXJuKCknKTsKKworICBjb25zdCBpdGVyUmVzdWx0MiA9IGF3YWl0IGl0
LnJldHVybigncmV0dXJuIHZhbHVlIDInKTsKKyAgYXNzZXJ0X2l0ZXJfcmVzdWx0KGl0ZXJSZXN1
bHQyLCAncmV0dXJuIHZhbHVlIDInLCB0cnVlLCAnMXN0IHJldHVybigpJyk7Cit9LCAncmV0dXJu
KCk7IHJldHVybigpJyk7CisKK3Byb21pc2VfdGVzdChhc3luYyAoKSA9PiB7CisgIGNvbnN0IHJz
ID0gbmV3IFJlYWRhYmxlU3RyZWFtKCk7CisgIGNvbnN0IGl0ID0gcnMudmFsdWVzKCk7CisKKyAg
Y29uc3QgaXRlclJlc3VsdHMgPSBhd2FpdCBQcm9taXNlLmFsbFNldHRsZWQoW2l0LnJldHVybign
cmV0dXJuIHZhbHVlIDEnKSwgaXQucmV0dXJuKCdyZXR1cm4gdmFsdWUgMicpXSk7CisKKyAgYXNz
ZXJ0X2VxdWFscyhpdGVyUmVzdWx0c1swXS5zdGF0dXMsICdmdWxmaWxsZWQnLCAnMXN0IHJldHVy
bigpIHByb21pc2Ugc3RhdHVzJyk7CisgIGFzc2VydF9pdGVyX3Jlc3VsdChpdGVyUmVzdWx0c1sw
XS52YWx1ZSwgJ3JldHVybiB2YWx1ZSAxJywgdHJ1ZSwgJzFzdCByZXR1cm4oKScpOworCisgIGFz
c2VydF9lcXVhbHMoaXRlclJlc3VsdHNbMV0uc3RhdHVzLCAnZnVsZmlsbGVkJywgJzJuZCByZXR1
cm4oKSBwcm9taXNlIHN0YXR1cycpOworICBhc3NlcnRfaXRlcl9yZXN1bHQoaXRlclJlc3VsdHNb
MV0udmFsdWUsICdyZXR1cm4gdmFsdWUgMicsIHRydWUsICcxc3QgcmV0dXJuKCknKTsKK30sICdy
ZXR1cm4oKTsgcmV0dXJuKCkgW25vIGF3YWl0aW5nXScpOworCit0ZXN0KCgpID0+IHsKKyAgY29u
c3QgcyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgYy5lbnF1
ZXVlKDApOworICAgICAgYy5jbG9zZSgpOworICAgIH0sCisgIH0pOworICBzLnZhbHVlcygpOwor
ICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4gcy52YWx1ZXMoKSwgJ3ZhbHVlcygp
IHNob3VsZCB0aHJvdycpOworfSwgJ3ZhbHVlcygpIHRocm93cyBpZiB0aGVyZVwncyBhbHJlYWR5
IGEgbG9jaycpOworCitwcm9taXNlX3Rlc3QoYXN5bmMgKCkgPT4geworICBjb25zdCBzID0gbmV3
IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjLmVucXVldWUoMSk7Cisg
ICAgICBjLmVucXVldWUoMik7CisgICAgICBjLmVucXVldWUoMyk7CisgICAgICBjLmNsb3NlKCk7
CisgICAgfQorICB9KTsKKworICBjb25zdCBjaHVua3MgPSBbXTsKKyAgZm9yIGF3YWl0IChjb25z
dCBjaHVuayBvZiBzKSB7CisgICAgY2h1bmtzLnB1c2goY2h1bmspOworICB9CisgIGFzc2VydF9h
cnJheV9lcXVhbHMoY2h1bmtzLCBbMSwgMiwgM10pOworCisgIGNvbnN0IHJlYWRlciA9IHMuZ2V0
UmVhZGVyKCk7CisgIGF3YWl0IHJlYWRlci5jbG9zZWQ7Cit9LCAnQWNxdWlyaW5nIGEgcmVhZGVy
IGFmdGVyIGV4aGF1c3RpdmVseSBhc3luYy1pdGVyYXRpbmcgYSBzdHJlYW0nKTsKKworcHJvbWlz
ZV90ZXN0KGFzeW5jIHQgPT4geworICBsZXQgdGltZXNQdWxsZWQgPSAwOworICBjb25zdCBzID0g
bmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBwdWxsKGMpIHsKKyAgICAgIGlmICh0aW1lc1B1bGxl
ZCA9PT0gMCkgeworICAgICAgICBjLmVucXVldWUoMCk7CisgICAgICAgICsrdGltZXNQdWxsZWQ7
CisgICAgICB9IGVsc2UgeworICAgICAgICBjLmVycm9yKGVycm9yMSk7CisgICAgICB9CisgICAg
fQorICB9KTsKKworICBjb25zdCBpdCA9IHNbU3ltYm9sLmFzeW5jSXRlcmF0b3JdKHsgcHJldmVu
dENhbmNlbDogdHJ1ZSB9KTsKKworICBjb25zdCBpdGVyUmVzdWx0MSA9IGF3YWl0IGl0Lm5leHQo
KTsKKyAgYXNzZXJ0X2l0ZXJfcmVzdWx0KGl0ZXJSZXN1bHQxLCAwLCBmYWxzZSwgJzFzdCBuZXh0
KCknKTsKKworICBhd2FpdCBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIGl0Lm5l
eHQoKSwgJzJuZCBuZXh0KCknKTsKKworICBjb25zdCBpdGVyUmVzdWx0MiA9IGF3YWl0IGl0LnJl
dHVybigncmV0dXJuIHZhbHVlJyk7CisgIGFzc2VydF9pdGVyX3Jlc3VsdChpdGVyUmVzdWx0Miwg
J3JldHVybiB2YWx1ZScsIHRydWUsICdyZXR1cm4oKScpOworCisgIC8vIGkuZS4gaXQgc2hvdWxk
IG5vdCByZWplY3Qgd2l0aCBhIGdlbmVyaWMgInRoaXMgc3RyZWFtIGlzIGxvY2tlZCIgVHlwZUVy
cm9yLgorICBjb25zdCByZWFkZXIgPSBzLmdldFJlYWRlcigpOworICBhd2FpdCBwcm9taXNlX3Jl
amVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIHJlYWRlci5jbG9zZWQsICdjbG9zZWQgb24gdGhlIG5l
dyByZWFkZXIgc2hvdWxkIHJlamVjdCB3aXRoIHRoZSBlcnJvcicpOworfSwgJ0FjcXVpcmluZyBh
IHJlYWRlciBhZnRlciByZXR1cm4oKWluZyBmcm9tIGEgc3RyZWFtIHRoYXQgZXJyb3JzJyk7CisK
K3Byb21pc2VfdGVzdChhc3luYyAoKSA9PiB7CisgIGNvbnN0IHMgPSBuZXcgUmVhZGFibGVTdHJl
YW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGMuZW5xdWV1ZSgxKTsKKyAgICAgIGMuZW5xdWV1
ZSgyKTsKKyAgICAgIGMuZW5xdWV1ZSgzKTsKKyAgICAgIGMuY2xvc2UoKTsKKyAgICB9LAorICB9
KTsKKworICAvLyByZWFkIHRoZSBmaXJzdCB0d28gY2h1bmtzLCB0aGVuIGNhbmNlbAorICBjb25z
dCBjaHVua3MgPSBbXTsKKyAgZm9yIGF3YWl0IChjb25zdCBjaHVuayBvZiBzKSB7CisgICAgY2h1
bmtzLnB1c2goY2h1bmspOworICAgIGlmIChjaHVuayA+PSAyKSB7CisgICAgICBicmVhazsKKyAg
ICB9CisgIH0KKyAgYXNzZXJ0X2FycmF5X2VxdWFscyhjaHVua3MsIFsxLCAyXSk7CisKKyAgY29u
c3QgcmVhZGVyID0gcy5nZXRSZWFkZXIoKTsKKyAgYXdhaXQgcmVhZGVyLmNsb3NlZDsKK30sICdB
Y3F1aXJpbmcgYSByZWFkZXIgYWZ0ZXIgcGFydGlhbGx5IGFzeW5jLWl0ZXJhdGluZyBhIHN0cmVh
bScpOworCitwcm9taXNlX3Rlc3QoYXN5bmMgKCkgPT4geworICBjb25zdCBzID0gbmV3IFJlYWRh
YmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjLmVucXVldWUoMSk7CisgICAgICBj
LmVucXVldWUoMik7CisgICAgICBjLmVucXVldWUoMyk7CisgICAgICBjLmNsb3NlKCk7CisgICAg
fSwKKyAgfSk7CisKKyAgLy8gcmVhZCB0aGUgZmlyc3QgdHdvIGNodW5rcywgdGhlbiByZWxlYXNl
IGxvY2sKKyAgY29uc3QgY2h1bmtzID0gW107CisgIGZvciBhd2FpdCAoY29uc3QgY2h1bmsgb2Yg
cy52YWx1ZXMoe3ByZXZlbnRDYW5jZWw6IHRydWV9KSkgeworICAgIGNodW5rcy5wdXNoKGNodW5r
KTsKKyAgICBpZiAoY2h1bmsgPj0gMikgeworICAgICAgYnJlYWs7CisgICAgfQorICB9CisgIGFz
c2VydF9hcnJheV9lcXVhbHMoY2h1bmtzLCBbMSwgMl0pOworCisgIGNvbnN0IHJlYWRlciA9IHMu
Z2V0UmVhZGVyKCk7CisgIGNvbnN0IHJlYWRSZXN1bHQgPSBhd2FpdCByZWFkZXIucmVhZCgpOwor
ICBhc3NlcnRfaXRlcl9yZXN1bHQocmVhZFJlc3VsdCwgMywgZmFsc2UpOworICBhd2FpdCByZWFk
ZXIuY2xvc2VkOworfSwgJ0FjcXVpcmluZyBhIHJlYWRlciBhbmQgcmVhZGluZyB0aGUgcmVtYWlu
aW5nIGNodW5rcyBhZnRlciBwYXJ0aWFsbHkgYXN5bmMtaXRlcmF0aW5nIGEgc3RyZWFtIHdpdGgg
cHJldmVudENhbmNlbCA9IHRydWUnKTsKKworZm9yIChjb25zdCBwcmV2ZW50Q2FuY2VsIG9mIFtm
YWxzZSwgdHJ1ZV0pIHsKKyAgdGVzdCgoKSA9PiB7CisgICAgY29uc3QgcnMgPSBuZXcgUmVhZGFi
bGVTdHJlYW0oKTsKKyAgICBycy52YWx1ZXMoeyBwcmV2ZW50Q2FuY2VsIH0pLnJldHVybigpOwor
ICAgIC8vIFRoZSB0ZXN0IHBhc3NlcyBpZiB0aGlzIGxpbmUgZG9lc24ndCB0aHJvdy4KKyAgICBy
cy5nZXRSZWFkZXIoKTsKKyAgfSwgYHJldHVybigpIHNob3VsZCB1bmxvY2sgdGhlIHN0cmVhbSBz
eW5jaHJvbm91c2x5IHdoZW4gcHJldmVudENhbmNlbCA9ICR7cHJldmVudENhbmNlbH1gKTsKK30K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2FzeW5jLWl0ZXJhdG9yLmFueS53b3JrZXItZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJl
YW1zL3JlYWRhYmxlLXN0cmVhbXMvYXN5bmMtaXRlcmF0b3IuYW55Lndvcmtlci1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZGU1N2VhY2VlNjQ0OTc1ODJhNTQwNWMzNGNjYmQ1ZmNkY2I1MjRlZAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2FzeW5jLWl0ZXJhdG9yLmFueS53b3JrZXIt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNDAgQEAKKworRkFJTCBBc3luYyBpdGVyYXRvciBpbnN0
YW5jZXMgc2hvdWxkIGhhdmUgdGhlIGNvcnJlY3QgbGlzdCBvZiBwcm9wZXJ0aWVzIHMudmFsdWVz
IGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3MudmFsdWVzKCknLCAncy52YWx1ZXMnIGlzIHVuZGVm
aW5lZCkKK0ZBSUwgQXN5bmMtaXRlcmF0aW5nIGEgcHVzaCBzb3VyY2UgcHJvbWlzZV90ZXN0OiBV
bmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiVHlwZUVycm9yOiB1bmRlZmlu
ZWQgaXMgbm90IGEgZnVuY3Rpb24gKG5lYXIgJy4uLmNodW5rIG9mIHMuLi4nKSIKK0ZBSUwgQXN5
bmMtaXRlcmF0aW5nIGEgcHVsbCBzb3VyY2UgcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0
aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiVHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90IGEgZnVu
Y3Rpb24gKG5lYXIgJy4uLmNodW5rIG9mIHMuLi4nKSIKK0ZBSUwgQXN5bmMtaXRlcmF0aW5nIGEg
cHVzaCBzb3VyY2Ugd2l0aCB1bmRlZmluZWQgdmFsdWVzIHByb21pc2VfdGVzdDogVW5oYW5kbGVk
IHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5v
dCBhIGZ1bmN0aW9uIChuZWFyICcuLi5jaHVuayBvZiBzLi4uJykiCitGQUlMIEFzeW5jLWl0ZXJh
dGluZyBhIHB1bGwgc291cmNlIHdpdGggdW5kZWZpbmVkIHZhbHVlcyBwcm9taXNlX3Rlc3Q6IFVu
aGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJUeXBlRXJyb3I6IHVuZGVmaW5l
ZCBpcyBub3QgYSBmdW5jdGlvbiAobmVhciAnLi4uY2h1bmsgb2Ygcy4uLicpIgorRkFJTCBBc3lu
Yy1pdGVyYXRpbmcgYSBwdWxsIHNvdXJjZSBtYW51YWxseSBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxl
ZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJUeXBlRXJyb3I6IHMudmFsdWVzIGlzIG5v
dCBhIGZ1bmN0aW9uLiAoSW4gJ3MudmFsdWVzKCknLCAncy52YWx1ZXMnIGlzIHVuZGVmaW5lZCki
CitGQUlMIEFzeW5jLWl0ZXJhdGluZyBhbiBlcnJvcmVkIHN0cmVhbSB0aHJvd3MgYXNzZXJ0X2Vx
dWFsczogZXhwZWN0ZWQgKHN0cmluZykgImUiIGJ1dCBnb3QgKG9iamVjdCkgb2JqZWN0ICJUeXBl
RXJyb3I6IHVuZGVmaW5lZCBpcyBub3QgYSBmdW5jdGlvbiAobmVhciAnLi4uY2h1bmsgb2Ygcy4u
LicpIgorRkFJTCBBc3luYy1pdGVyYXRpbmcgYSBjbG9zZWQgc3RyZWFtIG5ldmVyIGV4ZWN1dGVz
IHRoZSBsb29wIGJvZHksIGJ1dCB3b3JrcyBmaW5lIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJl
amVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBh
IGZ1bmN0aW9uIChuZWFyICcuLi5jaHVuayBvZiBzLi4uJykiCitGQUlMIEFzeW5jLWl0ZXJhdGlu
ZyBhbiBlbXB0eSBidXQgbm90IGNsb3NlZC9lcnJvcmVkIHN0cmVhbSBuZXZlciBleGVjdXRlcyB0
aGUgbG9vcCBib2R5IGFuZCBzdGFsbHMgdGhlIGFzeW5jIGZ1bmN0aW9uIHByb21pc2VfdGVzdDog
VW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVFcnJvcjogdW5kZWZp
bmVkIGlzIG5vdCBhIGZ1bmN0aW9uIChuZWFyICcuLi5jaHVuayBvZiBzLi4uJykiCitGQUlMIEFz
eW5jLWl0ZXJhdGluZyBhIHBhcnRpYWxseSBjb25zdW1lZCBzdHJlYW0gcHJvbWlzZV90ZXN0OiBV
bmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiVHlwZUVycm9yOiB1bmRlZmlu
ZWQgaXMgbm90IGEgZnVuY3Rpb24gKG5lYXIgJy4uLmNodW5rIG9mIHMuLi4nKSIKK0ZBSUwgQ2Fu
Y2VsbGF0aW9uIGJlaGF2aW9yIHdoZW4gdGhyb3dpbmcgaW5zaWRlIGxvb3AgYm9keTsgcHJldmVu
dENhbmNlbCA9IGZhbHNlIGFzc2VydF9hcnJheV9lcXVhbHM6IGNhbmNlbCgpIHNob3VsZCBiZSBj
YWxsZWQgbGVuZ3RocyBkaWZmZXIsIGV4cGVjdGVkIGFycmF5IFsicHVsbCIsICJjYW5jZWwiLCB1
bmRlZmluZWRdIGxlbmd0aCAzLCBnb3QgW10gbGVuZ3RoIDAKK0ZBSUwgQ2FuY2VsbGF0aW9uIGJl
aGF2aW9yIHdoZW4gdGhyb3dpbmcgaW5zaWRlIGxvb3AgYm9keTsgcHJldmVudENhbmNlbCA9IHRy
dWUgYXNzZXJ0X2FycmF5X2VxdWFsczogY2FuY2VsKCkgc2hvdWxkIG5vdCBiZSBjYWxsZWQgbGVu
Z3RocyBkaWZmZXIsIGV4cGVjdGVkIGFycmF5IFsicHVsbCJdIGxlbmd0aCAxLCBnb3QgW10gbGVu
Z3RoIDAKK0ZBSUwgQ2FuY2VsbGF0aW9uIGJlaGF2aW9yIHdoZW4gYnJlYWtpbmcgaW5zaWRlIGxv
b3AgYm9keTsgcHJldmVudENhbmNlbCA9IGZhbHNlIGFzc2VydF9hcnJheV9lcXVhbHM6IGNhbmNl
bCgpIHNob3VsZCBiZSBjYWxsZWQgbGVuZ3RocyBkaWZmZXIsIGV4cGVjdGVkIGFycmF5IFsicHVs
bCIsICJjYW5jZWwiLCB1bmRlZmluZWRdIGxlbmd0aCAzLCBnb3QgW10gbGVuZ3RoIDAKK0ZBSUwg
Q2FuY2VsbGF0aW9uIGJlaGF2aW9yIHdoZW4gYnJlYWtpbmcgaW5zaWRlIGxvb3AgYm9keTsgcHJl
dmVudENhbmNlbCA9IHRydWUgYXNzZXJ0X2FycmF5X2VxdWFsczogY2FuY2VsKCkgc2hvdWxkIG5v
dCBiZSBjYWxsZWQgbGVuZ3RocyBkaWZmZXIsIGV4cGVjdGVkIGFycmF5IFsicHVsbCJdIGxlbmd0
aCAxLCBnb3QgW10gbGVuZ3RoIDAKK0ZBSUwgQ2FuY2VsbGF0aW9uIGJlaGF2aW9yIHdoZW4gcmV0
dXJuaW5nIGluc2lkZSBsb29wIGJvZHk7IHByZXZlbnRDYW5jZWwgPSBmYWxzZSBhc3NlcnRfYXJy
YXlfZXF1YWxzOiBjYW5jZWwoKSBzaG91bGQgYmUgY2FsbGVkIGxlbmd0aHMgZGlmZmVyLCBleHBl
Y3RlZCBhcnJheSBbInB1bGwiLCAiY2FuY2VsIiwgdW5kZWZpbmVkXSBsZW5ndGggMywgZ290IFtd
IGxlbmd0aCAwCitGQUlMIENhbmNlbGxhdGlvbiBiZWhhdmlvciB3aGVuIHJldHVybmluZyBpbnNp
ZGUgbG9vcCBib2R5OyBwcmV2ZW50Q2FuY2VsID0gdHJ1ZSBhc3NlcnRfYXJyYXlfZXF1YWxzOiBj
YW5jZWwoKSBzaG91bGQgbm90IGJlIGNhbGxlZCBsZW5ndGhzIGRpZmZlciwgZXhwZWN0ZWQgYXJy
YXkgWyJwdWxsIl0gbGVuZ3RoIDEsIGdvdCBbXSBsZW5ndGggMAorRkFJTCBDYW5jZWxsYXRpb24g
YmVoYXZpb3Igd2hlbiBtYW51YWxseSBjYWxsaW5nIHJldHVybigpOyBwcmV2ZW50Q2FuY2VsID0g
ZmFsc2UgcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVj
dCAiVHlwZUVycm9yOiBzLnZhbHVlcyBpcyBub3QgYSBmdW5jdGlvbi4gKEluICdzLnZhbHVlcyh7
IHByZXZlbnRDYW5jZWwgfSknLCAncy52YWx1ZXMnIGlzIHVuZGVmaW5lZCkiCitGQUlMIENhbmNl
bGxhdGlvbiBiZWhhdmlvciB3aGVuIG1hbnVhbGx5IGNhbGxpbmcgcmV0dXJuKCk7IHByZXZlbnRD
YW5jZWwgPSB0cnVlIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVl
OiBvYmplY3QgIlR5cGVFcnJvcjogcy52YWx1ZXMgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAncy52
YWx1ZXMoeyBwcmV2ZW50Q2FuY2VsIH0pJywgJ3MudmFsdWVzJyBpcyB1bmRlZmluZWQpIgorRkFJ
TCBuZXh0KCkgcmVqZWN0cyBpZiB0aGUgc3RyZWFtIGVycm9ycyBwcm9taXNlX3Rlc3Q6IFVuaGFu
ZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJUeXBlRXJyb3I6IHNbU3ltYm9sLmFz
eW5jSXRlcmF0b3JdIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3NbU3ltYm9sLmFzeW5jSXRlcmF0
b3JdKCknLCAnc1tTeW1ib2wuYXN5bmNJdGVyYXRvcl0nIGlzIHVuZGVmaW5lZCkiCitGQUlMIHJl
dHVybigpIGRvZXMgbm90IHJlamVjdHMgaWYgdGhlIHN0cmVhbSBoYXMgbm90IGVycm9yZWQgeWV0
IHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5
cGVFcnJvcjogc1tTeW1ib2wuYXN5bmNJdGVyYXRvcl0gaXMgbm90IGEgZnVuY3Rpb24uIChJbiAn
c1tTeW1ib2wuYXN5bmNJdGVyYXRvcl0oKScsICdzW1N5bWJvbC5hc3luY0l0ZXJhdG9yXScgaXMg
dW5kZWZpbmVkKSIKK0ZBSUwgcmV0dXJuKCkgcmVqZWN0cyBpZiB0aGUgc3RyZWFtIGhhcyBlcnJv
cmVkIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3Qg
IlR5cGVFcnJvcjogc1tTeW1ib2wuYXN5bmNJdGVyYXRvcl0gaXMgbm90IGEgZnVuY3Rpb24uIChJ
biAnc1tTeW1ib2wuYXN5bmNJdGVyYXRvcl0oKScsICdzW1N5bWJvbC5hc3luY0l0ZXJhdG9yXScg
aXMgdW5kZWZpbmVkKSIKK0ZBSUwgbmV4dCgpIHRoYXQgc3VjY2VlZHM7IG5leHQoKSB0aGF0IHJl
cG9ydHMgYW4gZXJyb3I7IG5leHQoKSBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24g
d2l0aCB2YWx1ZTogb2JqZWN0ICJUeXBlRXJyb3I6IHNbU3ltYm9sLmFzeW5jSXRlcmF0b3JdIGlz
IG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3NbU3ltYm9sLmFzeW5jSXRlcmF0b3JdKCknLCAnc1tTeW1i
b2wuYXN5bmNJdGVyYXRvcl0nIGlzIHVuZGVmaW5lZCkiCitGQUlMIG5leHQoKSB0aGF0IHN1Y2Nl
ZWRzOyBuZXh0KCkgdGhhdCByZXBvcnRzIGFuIGVycm9yKCk7IG5leHQoKSBbbm8gYXdhaXRpbmdd
IHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5
cGVFcnJvcjogc1tTeW1ib2wuYXN5bmNJdGVyYXRvcl0gaXMgbm90IGEgZnVuY3Rpb24uIChJbiAn
c1tTeW1ib2wuYXN5bmNJdGVyYXRvcl0oKScsICdzW1N5bWJvbC5hc3luY0l0ZXJhdG9yXScgaXMg
dW5kZWZpbmVkKSIKK0ZBSUwgbmV4dCgpIHRoYXQgc3VjY2VlZHM7IG5leHQoKSB0aGF0IHJlcG9y
dHMgYW4gZXJyb3IoKTsgcmV0dXJuKCkgcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9u
IHdpdGggdmFsdWU6IG9iamVjdCAiVHlwZUVycm9yOiBzW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSBp
cyBub3QgYSBmdW5jdGlvbi4gKEluICdzW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSgpJywgJ3NbU3lt
Ym9sLmFzeW5jSXRlcmF0b3JdJyBpcyB1bmRlZmluZWQpIgorRkFJTCBuZXh0KCkgdGhhdCBzdWNj
ZWVkczsgbmV4dCgpIHRoYXQgcmVwb3J0cyBhbiBlcnJvcigpOyByZXR1cm4oKSBbbm8gYXdhaXRp
bmddIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3Qg
IlR5cGVFcnJvcjogc1tTeW1ib2wuYXN5bmNJdGVyYXRvcl0gaXMgbm90IGEgZnVuY3Rpb24uIChJ
biAnc1tTeW1ib2wuYXN5bmNJdGVyYXRvcl0oKScsICdzW1N5bWJvbC5hc3luY0l0ZXJhdG9yXScg
aXMgdW5kZWZpbmVkKSIKK0ZBSUwgbmV4dCgpIHRoYXQgc3VjY2VlZHM7IHJldHVybigpIHByb21p
c2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVFcnJv
cjogc1tTeW1ib2wuYXN5bmNJdGVyYXRvcl0gaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnc1tTeW1i
b2wuYXN5bmNJdGVyYXRvcl0oKScsICdzW1N5bWJvbC5hc3luY0l0ZXJhdG9yXScgaXMgdW5kZWZp
bmVkKSIKK0ZBSUwgbmV4dCgpIHRoYXQgc3VjY2VlZHM7IHJldHVybigpIFtubyBhd2FpdGluZ10g
cHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiVHlw
ZUVycm9yOiBzW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSBpcyBub3QgYSBmdW5jdGlvbi4gKEluICdz
W1N5bWJvbC5hc3luY0l0ZXJhdG9yXSgpJywgJ3NbU3ltYm9sLmFzeW5jSXRlcmF0b3JdJyBpcyB1
bmRlZmluZWQpIgorRkFJTCByZXR1cm4oKTsgbmV4dCgpIHByb21pc2VfdGVzdDogVW5oYW5kbGVk
IHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVFcnJvcjogcnMudmFsdWVzIGlzIG5v
dCBhIGZ1bmN0aW9uLiAoSW4gJ3JzLnZhbHVlcygpJywgJ3JzLnZhbHVlcycgaXMgdW5kZWZpbmVk
KSIKK0ZBSUwgcmV0dXJuKCk7IG5leHQoKSBbbm8gYXdhaXRpbmddIHByb21pc2VfdGVzdDogVW5o
YW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVFcnJvcjogcnMudmFsdWVz
IGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3JzLnZhbHVlcygpJywgJ3JzLnZhbHVlcycgaXMgdW5k
ZWZpbmVkKSIKK0ZBSUwgcmV0dXJuKCk7IHJldHVybigpIHByb21pc2VfdGVzdDogVW5oYW5kbGVk
IHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVFcnJvcjogcnMudmFsdWVzIGlzIG5v
dCBhIGZ1bmN0aW9uLiAoSW4gJ3JzLnZhbHVlcygpJywgJ3JzLnZhbHVlcycgaXMgdW5kZWZpbmVk
KSIKK0ZBSUwgcmV0dXJuKCk7IHJldHVybigpIFtubyBhd2FpdGluZ10gcHJvbWlzZV90ZXN0OiBV
bmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiVHlwZUVycm9yOiBycy52YWx1
ZXMgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAncnMudmFsdWVzKCknLCAncnMudmFsdWVzJyBpcyB1
bmRlZmluZWQpIgorRkFJTCB2YWx1ZXMoKSB0aHJvd3MgaWYgdGhlcmUncyBhbHJlYWR5IGEgbG9j
ayBzLnZhbHVlcyBpcyBub3QgYSBmdW5jdGlvbi4gKEluICdzLnZhbHVlcygpJywgJ3MudmFsdWVz
JyBpcyB1bmRlZmluZWQpCitGQUlMIEFjcXVpcmluZyBhIHJlYWRlciBhZnRlciBleGhhdXN0aXZl
bHkgYXN5bmMtaXRlcmF0aW5nIGEgc3RyZWFtIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVj
dGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhIGZ1
bmN0aW9uIChuZWFyICcuLi5jaHVuayBvZiBzLi4uJykiCitGQUlMIEFjcXVpcmluZyBhIHJlYWRl
ciBhZnRlciByZXR1cm4oKWluZyBmcm9tIGEgc3RyZWFtIHRoYXQgZXJyb3JzIHByb21pc2VfdGVz
dDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVFcnJvcjogc1tT
eW1ib2wuYXN5bmNJdGVyYXRvcl0gaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnc1tTeW1ib2wuYXN5
bmNJdGVyYXRvcl0oeyBwcmV2ZW50Q2FuY2VsOiB0cnVlIH0pJywgJ3NbU3ltYm9sLmFzeW5jSXRl
cmF0b3JdJyBpcyB1bmRlZmluZWQpIgorRkFJTCBBY3F1aXJpbmcgYSByZWFkZXIgYWZ0ZXIgcGFy
dGlhbGx5IGFzeW5jLWl0ZXJhdGluZyBhIHN0cmVhbSBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCBy
ZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJUeXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBub3Qg
YSBmdW5jdGlvbiAobmVhciAnLi4uY2h1bmsgb2Ygcy4uLicpIgorRkFJTCBBY3F1aXJpbmcgYSBy
ZWFkZXIgYW5kIHJlYWRpbmcgdGhlIHJlbWFpbmluZyBjaHVua3MgYWZ0ZXIgcGFydGlhbGx5IGFz
eW5jLWl0ZXJhdGluZyBhIHN0cmVhbSB3aXRoIHByZXZlbnRDYW5jZWwgPSB0cnVlIHByb21pc2Vf
dGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVFcnJvcjog
cy52YWx1ZXMgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAncy52YWx1ZXMoe3ByZXZlbnRDYW5jZWw6
IHRydWV9KScsICdzLnZhbHVlcycgaXMgdW5kZWZpbmVkKSIKK0ZBSUwgcmV0dXJuKCkgc2hvdWxk
IHVubG9jayB0aGUgc3RyZWFtIHN5bmNocm9ub3VzbHkgd2hlbiBwcmV2ZW50Q2FuY2VsID0gZmFs
c2UgcnMudmFsdWVzIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3JzLnZhbHVlcyh7IHByZXZlbnRD
YW5jZWwgfSknLCAncnMudmFsdWVzJyBpcyB1bmRlZmluZWQpCitGQUlMIHJldHVybigpIHNob3Vs
ZCB1bmxvY2sgdGhlIHN0cmVhbSBzeW5jaHJvbm91c2x5IHdoZW4gcHJldmVudENhbmNlbCA9IHRy
dWUgcnMudmFsdWVzIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3JzLnZhbHVlcyh7IHByZXZlbnRD
YW5jZWwgfSknLCAncnMudmFsdWVzJyBpcyB1bmRlZmluZWQpCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1z
dHJlYW1zL2FzeW5jLWl0ZXJhdG9yLmFueS53b3JrZXIuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2FzeW5j
LWl0ZXJhdG9yLmFueS53b3JrZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMzgyOTEzNTI4ZTY5M2IzYTVk
NTZjNjYwYTQ1MDYwOTgwYjU0OGMzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvYXN5
bmMtaXRlcmF0b3IuYW55Lndvcmtlci5odG1sCkBAIC0wLDAgKzEgQEAKKzwhLS0gVGhpcyBmaWxl
IGlzIHJlcXVpcmVkIGZvciBXZWJLaXQgdGVzdCBpbmZyYXN0cnVjdHVyZSB0byBydW4gdGhlIHRl
bXBsYXRlZCB0ZXN0IC0tPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFk
YWJsZS1zdHJlYW1zL2JhZC1zdHJhdGVnaWVzLmFueS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFt
cy9iYWQtc3RyYXRlZ2llcy5hbnktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhiOTgwZTlmODE5
ZDVhNTU5YTU4NTRlNjc3NDk3NzI1OTQzZWVkMTMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3Ry
ZWFtcy9iYWQtc3RyYXRlZ2llcy5hbnktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOSBAQAorCitQ
QVNTIFJlYWRhYmxlIHN0cmVhbTogdGhyb3dpbmcgc3RyYXRlZ3kuc2l6ZSBnZXR0ZXIgCitQQVNT
IFJlYWRhYmxlIHN0cmVhbTogc3RyYXRlZ3kuc2l6ZSBlcnJvcnMgdGhlIHN0cmVhbSBhbmQgdGhl
biB0aHJvd3MgCitQQVNTIFJlYWRhYmxlIHN0cmVhbTogc3RyYXRlZ3kuc2l6ZSBlcnJvcnMgdGhl
IHN0cmVhbSBhbmQgdGhlbiByZXR1cm5zIEluZmluaXR5IAorUEFTUyBSZWFkYWJsZSBzdHJlYW06
IHRocm93aW5nIHN0cmF0ZWd5LnNpemUgbWV0aG9kIAorUEFTUyBSZWFkYWJsZSBzdHJlYW06IHRo
cm93aW5nIHN0cmF0ZWd5LmhpZ2hXYXRlck1hcmsgZ2V0dGVyIAorUEFTUyBSZWFkYWJsZSBzdHJl
YW06IGludmFsaWQgc3RyYXRlZ3kuaGlnaFdhdGVyTWFyayAKK1BBU1MgUmVhZGFibGUgc3RyZWFt
OiBpbnZhbGlkIHN0cmF0ZWd5LnNpemUgcmV0dXJuIHZhbHVlIAorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUt
c3RyZWFtcy9iYWQtc3RyYXRlZ2llcy5hbnkuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2JhZC1zdHJhdGVn
aWVzLmFueS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzODI5MTM1MjhlNjkzYjNhNWQ1NmM2NjBhNDUwNjA5
ODBiNTQ4YzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9iYWQtc3RyYXRlZ2llcy5h
bnkuaHRtbApAQCAtMCwwICsxIEBACis8IS0tIFRoaXMgZmlsZSBpcyByZXF1aXJlZCBmb3IgV2Vi
S2l0IHRlc3QgaW5mcmFzdHJ1Y3R1cmUgdG8gcnVuIHRoZSB0ZW1wbGF0ZWQgdGVzdCAtLT4KXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9iYWQtc3Ry
YXRlZ2llcy5hbnkuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9iYWQtc3RyYXRlZ2llcy5hbnkuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYjc5NTM2MGZiN2M3YmI5NzlhNjQ5NTg4NGFkMGUwMjE5YTFhMzE4MwotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2JhZC1zdHJhdGVnaWVzLmFueS5qcwpAQCAtMCwwICsxLDE1
OSBAQAorLy8gTUVUQTogZ2xvYmFsPXdpbmRvdyx3b3JrZXIsanNzaGVsbAorJ3VzZSBzdHJpY3Qn
OworCit0ZXN0KCgpID0+IHsKKworICBjb25zdCB0aGVFcnJvciA9IG5ldyBFcnJvcignYSB1bmlx
dWUgc3RyaW5nJyk7CisKKyAgYXNzZXJ0X3Rocm93c19leGFjdGx5KHRoZUVycm9yLCAoKSA9PiB7
CisgICAgbmV3IFJlYWRhYmxlU3RyZWFtKHt9LCB7CisgICAgICBnZXQgc2l6ZSgpIHsKKyAgICAg
ICAgdGhyb3cgdGhlRXJyb3I7CisgICAgICB9LAorICAgICAgaGlnaFdhdGVyTWFyazogNQorICAg
IH0pOworICB9LCAnY29uc3RydWN0aW9uIHNob3VsZCByZS10aHJvdyB0aGUgZXJyb3InKTsKKwor
fSwgJ1JlYWRhYmxlIHN0cmVhbTogdGhyb3dpbmcgc3RyYXRlZ3kuc2l6ZSBnZXR0ZXInKTsKKwor
cHJvbWlzZV90ZXN0KHQgPT4geworCisgIGNvbnN0IGNvbnRyb2xsZXJFcnJvciA9IHsgbmFtZTog
J2NvbnRyb2xsZXIgZXJyb3InIH07CisgIGNvbnN0IHRocm93bkVycm9yID0geyBuYW1lOiAndGhy
b3duIGVycm9yJyB9OworCisgIGxldCBjb250cm9sbGVyOworICBjb25zdCBycyA9IG5ldyBSZWFk
YWJsZVN0cmVhbSgKKyAgICB7CisgICAgICBzdGFydChjKSB7CisgICAgICAgIGNvbnRyb2xsZXIg
PSBjOworICAgICAgfQorICAgIH0sCisgICAgeworICAgICAgc2l6ZSgpIHsKKyAgICAgICAgY29u
dHJvbGxlci5lcnJvcihjb250cm9sbGVyRXJyb3IpOworICAgICAgICB0aHJvdyB0aHJvd25FcnJv
cjsKKyAgICAgIH0sCisgICAgICBoaWdoV2F0ZXJNYXJrOiA1CisgICAgfQorICApOworCisgIGFz
c2VydF90aHJvd3NfZXhhY3RseSh0aHJvd25FcnJvciwgKCkgPT4gY29udHJvbGxlci5lbnF1ZXVl
KCdhJyksICdlbnF1ZXVlIHNob3VsZCByZS10aHJvdyB0aGUgZXJyb3InKTsKKworICByZXR1cm4g
cHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgY29udHJvbGxlckVycm9yLCBycy5nZXRSZWFkZXIo
KS5jbG9zZWQpOworCit9LCAnUmVhZGFibGUgc3RyZWFtOiBzdHJhdGVneS5zaXplIGVycm9ycyB0
aGUgc3RyZWFtIGFuZCB0aGVuIHRocm93cycpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisKKyAg
Y29uc3QgdGhlRXJyb3IgPSB7IG5hbWU6ICdteSBlcnJvcicgfTsKKworICBsZXQgY29udHJvbGxl
cjsKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oCisgICAgeworICAgICAgc3RhcnQo
YykgeworICAgICAgICBjb250cm9sbGVyID0gYzsKKyAgICAgIH0KKyAgICB9LAorICAgIHsKKyAg
ICAgIHNpemUoKSB7CisgICAgICAgIGNvbnRyb2xsZXIuZXJyb3IodGhlRXJyb3IpOworICAgICAg
ICByZXR1cm4gSW5maW5pdHk7CisgICAgICB9LAorICAgICAgaGlnaFdhdGVyTWFyazogNQorICAg
IH0KKyAgKTsKKworICBhc3NlcnRfdGhyb3dzX2pzKFJhbmdlRXJyb3IsICgpID0+IGNvbnRyb2xs
ZXIuZW5xdWV1ZSgnYScpLCAnZW5xdWV1ZSBzaG91bGQgdGhyb3cgYSBSYW5nZUVycm9yJyk7CisK
KyAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIHRoZUVycm9yLCBycy5nZXRSZWFk
ZXIoKS5jbG9zZWQsICdjbG9zZWQgc2hvdWxkIHJlamVjdCB3aXRoIHRoZSBlcnJvcicpOworCit9
LCAnUmVhZGFibGUgc3RyZWFtOiBzdHJhdGVneS5zaXplIGVycm9ycyB0aGUgc3RyZWFtIGFuZCB0
aGVuIHJldHVybnMgSW5maW5pdHknKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKworICBjb25z
dCB0aGVFcnJvciA9IG5ldyBFcnJvcignYSB1bmlxdWUgc3RyaW5nJyk7CisgIGNvbnN0IHJzID0g
bmV3IFJlYWRhYmxlU3RyZWFtKAorICAgIHsKKyAgICAgIHN0YXJ0KGMpIHsKKyAgICAgICAgYXNz
ZXJ0X3Rocm93c19leGFjdGx5KHRoZUVycm9yLCAoKSA9PiBjLmVucXVldWUoJ2EnKSwgJ2VucXVl
dWUgc2hvdWxkIHRocm93IHRoZSBlcnJvcicpOworICAgICAgfQorICAgIH0sCisgICAgeworICAg
ICAgc2l6ZSgpIHsKKyAgICAgICAgdGhyb3cgdGhlRXJyb3I7CisgICAgICB9LAorICAgICAgaGln
aFdhdGVyTWFyazogNQorICAgIH0KKyAgKTsKKworICByZXR1cm4gcnMuZ2V0UmVhZGVyKCkuY2xv
c2VkLmNhdGNoKGUgPT4geworICAgIGFzc2VydF9lcXVhbHMoZSwgdGhlRXJyb3IsICdjbG9zZWQg
c2hvdWxkIHJlamVjdCB3aXRoIHRoZSBlcnJvcicpOworICB9KTsKKworfSwgJ1JlYWRhYmxlIHN0
cmVhbTogdGhyb3dpbmcgc3RyYXRlZ3kuc2l6ZSBtZXRob2QnKTsKKwordGVzdCgoKSA9PiB7CisK
KyAgY29uc3QgdGhlRXJyb3IgPSBuZXcgRXJyb3IoJ2EgdW5pcXVlIHN0cmluZycpOworCisgIGFz
c2VydF90aHJvd3NfZXhhY3RseSh0aGVFcnJvciwgKCkgPT4geworICAgIG5ldyBSZWFkYWJsZVN0
cmVhbSh7fSwgeworICAgICAgc2l6ZSgpIHsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgICB9LAor
ICAgICAgZ2V0IGhpZ2hXYXRlck1hcmsoKSB7CisgICAgICAgIHRocm93IHRoZUVycm9yOworICAg
ICAgfQorICAgIH0pOworICB9LCAnY29uc3RydWN0aW9uIHNob3VsZCByZS10aHJvdyB0aGUgZXJy
b3InKTsKKworfSwgJ1JlYWRhYmxlIHN0cmVhbTogdGhyb3dpbmcgc3RyYXRlZ3kuaGlnaFdhdGVy
TWFyayBnZXR0ZXInKTsKKwordGVzdCgoKSA9PiB7CisKKyAgZm9yIChjb25zdCBoaWdoV2F0ZXJN
YXJrIG9mIFstMSwgLUluZmluaXR5LCBOYU4sICdmb28nLCB7fV0pIHsKKyAgICBhc3NlcnRfdGhy
b3dzX2pzKFJhbmdlRXJyb3IsICgpID0+IHsKKyAgICAgIG5ldyBSZWFkYWJsZVN0cmVhbSh7fSwg
eworICAgICAgICBzaXplKCkgeworICAgICAgICAgIHJldHVybiAxOworICAgICAgICB9LAorICAg
ICAgICBoaWdoV2F0ZXJNYXJrCisgICAgICB9KTsKKyAgICB9LCAnY29uc3RydWN0aW9uIHNob3Vs
ZCB0aHJvdyBhIFJhbmdlRXJyb3IgZm9yICcgKyBoaWdoV2F0ZXJNYXJrKTsKKyAgfQorCit9LCAn
UmVhZGFibGUgc3RyZWFtOiBpbnZhbGlkIHN0cmF0ZWd5LmhpZ2hXYXRlck1hcmsnKTsKKworcHJv
bWlzZV90ZXN0KCgpID0+IHsKKworICBjb25zdCBwcm9taXNlcyA9IFtdOworICBmb3IgKGNvbnN0
IHNpemUgb2YgW05hTiwgLUluZmluaXR5LCBJbmZpbml0eSwgLTFdKSB7CisgICAgbGV0IHRoZUVy
cm9yOworICAgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKAorICAgICAgeworICAgICAg
ICBzdGFydChjKSB7CisgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGMuZW5xdWV1ZSgnaGkn
KTsKKyAgICAgICAgICAgIGFzc2VydF91bnJlYWNoZWQoJ2VucXVldWUgZGlkblwndCB0aHJvdycp
OworICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxz
KGVycm9yLm5hbWUsICdSYW5nZUVycm9yJywgJ2VucXVldWUgc2hvdWxkIHRocm93IGEgUmFuZ2VF
cnJvciBmb3IgJyArIHNpemUpOworICAgICAgICAgICAgdGhlRXJyb3IgPSBlcnJvcjsKKyAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICAgIH0sCisgICAgICB7CisgICAgICAgIHNpemUoKSB7Cisg
ICAgICAgICAgcmV0dXJuIHNpemU7CisgICAgICAgIH0sCisgICAgICAgIGhpZ2hXYXRlck1hcms6
IDUKKyAgICAgIH0KKyAgICApOworCisgICAgcHJvbWlzZXMucHVzaChycy5nZXRSZWFkZXIoKS5j
bG9zZWQuY2F0Y2goZSA9PiB7CisgICAgICBhc3NlcnRfZXF1YWxzKGUsIHRoZUVycm9yLCAnY2xv
c2VkIHNob3VsZCByZWplY3Qgd2l0aCB0aGUgZXJyb3IgZm9yICcgKyBzaXplKTsKKyAgICB9KSk7
CisgIH0KKworICByZXR1cm4gUHJvbWlzZS5hbGwocHJvbWlzZXMpOworCit9LCAnUmVhZGFibGUg
c3RyZWFtOiBpbnZhbGlkIHN0cmF0ZWd5LnNpemUgcmV0dXJuIHZhbHVlJyk7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVh
ZGFibGUtc3RyZWFtcy9iYWQtc3RyYXRlZ2llcy5hbnkud29ya2VyLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJs
ZS1zdHJlYW1zL2JhZC1zdHJhdGVnaWVzLmFueS53b3JrZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjhiOTgwZTlmODE5ZDVhNTU5YTU4NTRlNjc3NDk3NzI1OTQzZWVkMTMKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvcmVhZGFibGUtc3RyZWFtcy9iYWQtc3RyYXRlZ2llcy5hbnkud29ya2VyLWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDkgQEAKKworUEFTUyBSZWFkYWJsZSBzdHJlYW06IHRocm93aW5nIHN0cmF0
ZWd5LnNpemUgZ2V0dGVyIAorUEFTUyBSZWFkYWJsZSBzdHJlYW06IHN0cmF0ZWd5LnNpemUgZXJy
b3JzIHRoZSBzdHJlYW0gYW5kIHRoZW4gdGhyb3dzIAorUEFTUyBSZWFkYWJsZSBzdHJlYW06IHN0
cmF0ZWd5LnNpemUgZXJyb3JzIHRoZSBzdHJlYW0gYW5kIHRoZW4gcmV0dXJucyBJbmZpbml0eSAK
K1BBU1MgUmVhZGFibGUgc3RyZWFtOiB0aHJvd2luZyBzdHJhdGVneS5zaXplIG1ldGhvZCAKK1BB
U1MgUmVhZGFibGUgc3RyZWFtOiB0aHJvd2luZyBzdHJhdGVneS5oaWdoV2F0ZXJNYXJrIGdldHRl
ciAKK1BBU1MgUmVhZGFibGUgc3RyZWFtOiBpbnZhbGlkIHN0cmF0ZWd5LmhpZ2hXYXRlck1hcmsg
CitQQVNTIFJlYWRhYmxlIHN0cmVhbTogaW52YWxpZCBzdHJhdGVneS5zaXplIHJldHVybiB2YWx1
ZSAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvYmFkLXN0cmF0ZWdpZXMuYW55Lndvcmtlci5o
dG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
L3JlYWRhYmxlLXN0cmVhbXMvYmFkLXN0cmF0ZWdpZXMuYW55Lndvcmtlci5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjIzODI5MTM1MjhlNjkzYjNhNWQ1NmM2NjBhNDUwNjA5ODBiNTQ4YzMKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvcmVhZGFibGUtc3RyZWFtcy9iYWQtc3RyYXRlZ2llcy5hbnkud29ya2VyLmh0bWwKQEAgLTAs
MCArMSBAQAorPCEtLSBUaGlzIGZpbGUgaXMgcmVxdWlyZWQgZm9yIFdlYktpdCB0ZXN0IGluZnJh
c3RydWN0dXJlIHRvIHJ1biB0aGUgdGVtcGxhdGVkIHRlc3QgLS0+ClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvYmFkLXN0cmF0ZWdpZXMuZGVkaWNh
dGVkd29ya2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2JhZC1zdHJhdGVnaWVzLmRlZGlj
YXRlZHdvcmtlci1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhi
OTgwZTlmODE5ZDVhNTU5YTU4NTRlNjc3NDk3NzI1OTQzZWVkMTMuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvYmFkLXN0cmF0ZWdpZXMu
ZGVkaWNhdGVkd29ya2VyLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDkgKzAsMCBA
QAotCi1QQVNTIFJlYWRhYmxlIHN0cmVhbTogdGhyb3dpbmcgc3RyYXRlZ3kuc2l6ZSBnZXR0ZXIg
Ci1QQVNTIFJlYWRhYmxlIHN0cmVhbTogc3RyYXRlZ3kuc2l6ZSBlcnJvcnMgdGhlIHN0cmVhbSBh
bmQgdGhlbiB0aHJvd3MgCi1QQVNTIFJlYWRhYmxlIHN0cmVhbTogc3RyYXRlZ3kuc2l6ZSBlcnJv
cnMgdGhlIHN0cmVhbSBhbmQgdGhlbiByZXR1cm5zIEluZmluaXR5IAotUEFTUyBSZWFkYWJsZSBz
dHJlYW06IHRocm93aW5nIHN0cmF0ZWd5LnNpemUgbWV0aG9kIAotUEFTUyBSZWFkYWJsZSBzdHJl
YW06IHRocm93aW5nIHN0cmF0ZWd5LmhpZ2hXYXRlck1hcmsgZ2V0dGVyIAotUEFTUyBSZWFkYWJs
ZSBzdHJlYW06IGludmFsaWQgc3RyYXRlZ3kuaGlnaFdhdGVyTWFyayAKLVBBU1MgUmVhZGFibGUg
c3RyZWFtOiBpbnZhbGlkIHN0cmF0ZWd5LnNpemUgcmV0dXJuIHZhbHVlIAotCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVh
ZGFibGUtc3RyZWFtcy9iYWQtc3RyYXRlZ2llcy5kZWRpY2F0ZWR3b3JrZXIuaHRtbCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1z
dHJlYW1zL2JhZC1zdHJhdGVnaWVzLmRlZGljYXRlZHdvcmtlci5odG1sCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBkNTM3NjdmM2Q2Y2RlOGI4ODRmYTdiMWJmYTg2NjUzMDE2ZjJmYmNm
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJl
YW1zL2JhZC1zdHJhdGVnaWVzLmRlZGljYXRlZHdvcmtlci5odG1sCisrKyAvZGV2L251bGwKQEAg
LTEsMTEgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08
dGl0bGU+YmFkLXN0cmF0ZWdpZXMuanMgZGVkaWNhdGVkIHdvcmtlciB3cmFwcGVyIGZpbGU8L3Rp
dGxlPgotCi08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+
Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+
Ci0KLTxzY3JpcHQ+Ci0ndXNlIHN0cmljdCc7Ci1mZXRjaF90ZXN0c19mcm9tX3dvcmtlcihuZXcg
V29ya2VyKCdiYWQtc3RyYXRlZ2llcy5qcycpKTsKLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxl
LXN0cmVhbXMvYmFkLXN0cmF0ZWdpZXMuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2JhZC1zdHJhdGVnaWVz
Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk0Y2ZiODNiYmM4ZmQwYTc1OTVm
MTM1ZTI1MTkyMGY4NTcyOTk5ZjkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
dHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvYmFkLXN0cmF0ZWdpZXMuaHRtbAorKysgL2Rldi9udWxs
CkBAIC0xLDEwICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgi
PgotPHRpdGxlPmJhZC1zdHJhdGVnaWVzLmpzIGJyb3dzZXIgY29udGV4dCB3cmFwcGVyIGZpbGU8
L3RpdGxlPgotCi08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3Jp
cHQ+Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3Jp
cHQ+Ci0KLQotCi08c2NyaXB0IHNyYz0iYmFkLXN0cmF0ZWdpZXMuanMiPjwvc2NyaXB0PgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJl
YW1zL3JlYWRhYmxlLXN0cmVhbXMvYmFkLXN0cmF0ZWdpZXMuanMgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9iYWQt
c3RyYXRlZ2llcy5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWE1MmQ2MGQ4NDJh
NmQ0ZGViMzFiYzhjM2ViNjYzMjA5YjFlMGUyYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9iYWQtc3RyYXRlZ2llcy5qcworKysgL2Rl
di9udWxsCkBAIC0xLDE2NCArMCwwIEBACi0ndXNlIHN0cmljdCc7Ci0KLWlmIChzZWxmLmltcG9y
dFNjcmlwdHMpIHsKLSAgc2VsZi5pbXBvcnRTY3JpcHRzKCcvcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
LmpzJyk7Ci19Ci0KLXRlc3QoKCkgPT4gewotCi0gIGNvbnN0IHRoZUVycm9yID0gbmV3IEVycm9y
KCdhIHVuaXF1ZSBzdHJpbmcnKTsKLQotICBhc3NlcnRfdGhyb3dzKHRoZUVycm9yLCAoKSA9PiB7
Ci0gICAgbmV3IFJlYWRhYmxlU3RyZWFtKHt9LCB7Ci0gICAgICBnZXQgc2l6ZSgpIHsKLSAgICAg
ICAgdGhyb3cgdGhlRXJyb3I7Ci0gICAgICB9LAotICAgICAgaGlnaFdhdGVyTWFyazogNQotICAg
IH0pOwotICB9LCAnY29uc3RydWN0aW9uIHNob3VsZCByZS10aHJvdyB0aGUgZXJyb3InKTsKLQot
fSwgJ1JlYWRhYmxlIHN0cmVhbTogdGhyb3dpbmcgc3RyYXRlZ3kuc2l6ZSBnZXR0ZXInKTsKLQot
cHJvbWlzZV90ZXN0KHQgPT4gewotCi0gIGNvbnN0IGNvbnRyb2xsZXJFcnJvciA9IHsgbmFtZTog
J2NvbnRyb2xsZXIgZXJyb3InIH07Ci0gIGNvbnN0IHRocm93bkVycm9yID0geyBuYW1lOiAndGhy
b3duIGVycm9yJyB9OwotCi0gIGxldCBjb250cm9sbGVyOwotICBjb25zdCBycyA9IG5ldyBSZWFk
YWJsZVN0cmVhbSgKLSAgICB7Ci0gICAgICBzdGFydChjKSB7Ci0gICAgICAgIGNvbnRyb2xsZXIg
PSBjOwotICAgICAgfQotICAgIH0sCi0gICAgewotICAgICAgc2l6ZSgpIHsKLSAgICAgICAgY29u
dHJvbGxlci5lcnJvcihjb250cm9sbGVyRXJyb3IpOwotICAgICAgICB0aHJvdyB0aHJvd25FcnJv
cjsKLSAgICAgIH0sCi0gICAgICBoaWdoV2F0ZXJNYXJrOiA1Ci0gICAgfQotICApOwotCi0gIGFz
c2VydF90aHJvd3ModGhyb3duRXJyb3IsICgpID0+IGNvbnRyb2xsZXIuZW5xdWV1ZSgnYScpLCAn
ZW5xdWV1ZSBzaG91bGQgcmUtdGhyb3cgdGhlIGVycm9yJyk7Ci0KLSAgcmV0dXJuIHByb21pc2Vf
cmVqZWN0cyh0LCBjb250cm9sbGVyRXJyb3IsIHJzLmdldFJlYWRlcigpLmNsb3NlZCk7Ci0KLX0s
ICdSZWFkYWJsZSBzdHJlYW06IHN0cmF0ZWd5LnNpemUgZXJyb3JzIHRoZSBzdHJlYW0gYW5kIHRo
ZW4gdGhyb3dzJyk7Ci0KLXByb21pc2VfdGVzdCh0ID0+IHsKLQotICBjb25zdCB0aGVFcnJvciA9
IHsgbmFtZTogJ215IGVycm9yJyB9OwotCi0gIGxldCBjb250cm9sbGVyOwotICBjb25zdCBycyA9
IG5ldyBSZWFkYWJsZVN0cmVhbSgKLSAgICB7Ci0gICAgICBzdGFydChjKSB7Ci0gICAgICAgIGNv
bnRyb2xsZXIgPSBjOwotICAgICAgfQotICAgIH0sCi0gICAgewotICAgICAgc2l6ZSgpIHsKLSAg
ICAgICAgY29udHJvbGxlci5lcnJvcih0aGVFcnJvcik7Ci0gICAgICAgIHJldHVybiBJbmZpbml0
eTsKLSAgICAgIH0sCi0gICAgICBoaWdoV2F0ZXJNYXJrOiA1Ci0gICAgfQotICApOwotCi0gIGFz
c2VydF90aHJvd3MobmV3IFJhbmdlRXJyb3IoKSwgKCkgPT4gY29udHJvbGxlci5lbnF1ZXVlKCdh
JyksICdlbnF1ZXVlIHNob3VsZCB0aHJvdyBhIFJhbmdlRXJyb3InKTsKLQotICByZXR1cm4gcHJv
bWlzZV9yZWplY3RzKHQsIHRoZUVycm9yLCBycy5nZXRSZWFkZXIoKS5jbG9zZWQsICdjbG9zZWQg
c2hvdWxkIHJlamVjdCB3aXRoIHRoZSBlcnJvcicpOwotCi19LCAnUmVhZGFibGUgc3RyZWFtOiBz
dHJhdGVneS5zaXplIGVycm9ycyB0aGUgc3RyZWFtIGFuZCB0aGVuIHJldHVybnMgSW5maW5pdHkn
KTsKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLQotICBjb25zdCB0aGVFcnJvciA9IG5ldyBFcnJv
cignYSB1bmlxdWUgc3RyaW5nJyk7Ci0gIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKAot
ICAgIHsKLSAgICAgIHN0YXJ0KGMpIHsKLSAgICAgICAgYXNzZXJ0X3Rocm93cyh0aGVFcnJvciwg
KCkgPT4gYy5lbnF1ZXVlKCdhJyksICdlbnF1ZXVlIHNob3VsZCB0aHJvdyB0aGUgZXJyb3InKTsK
LSAgICAgIH0KLSAgICB9LAotICAgIHsKLSAgICAgIHNpemUoKSB7Ci0gICAgICAgIHRocm93IHRo
ZUVycm9yOwotICAgICAgfSwKLSAgICAgIGhpZ2hXYXRlck1hcms6IDUKLSAgICB9Ci0gICk7Ci0K
LSAgcmV0dXJuIHJzLmdldFJlYWRlcigpLmNsb3NlZC5jYXRjaChlID0+IHsKLSAgICBhc3NlcnRf
ZXF1YWxzKGUsIHRoZUVycm9yLCAnY2xvc2VkIHNob3VsZCByZWplY3Qgd2l0aCB0aGUgZXJyb3In
KTsKLSAgfSk7Ci0KLX0sICdSZWFkYWJsZSBzdHJlYW06IHRocm93aW5nIHN0cmF0ZWd5LnNpemUg
bWV0aG9kJyk7Ci0KLXRlc3QoKCkgPT4gewotCi0gIGNvbnN0IHRoZUVycm9yID0gbmV3IEVycm9y
KCdhIHVuaXF1ZSBzdHJpbmcnKTsKLQotICBhc3NlcnRfdGhyb3dzKHRoZUVycm9yLCAoKSA9PiB7
Ci0gICAgbmV3IFJlYWRhYmxlU3RyZWFtKHt9LCB7Ci0gICAgICBzaXplKCkgewotICAgICAgICBy
ZXR1cm4gMTsKLSAgICAgIH0sCi0gICAgICBnZXQgaGlnaFdhdGVyTWFyaygpIHsKLSAgICAgICAg
dGhyb3cgdGhlRXJyb3I7Ci0gICAgICB9Ci0gICAgfSk7Ci0gIH0sICdjb25zdHJ1Y3Rpb24gc2hv
dWxkIHJlLXRocm93IHRoZSBlcnJvcicpOwotCi19LCAnUmVhZGFibGUgc3RyZWFtOiB0aHJvd2lu
ZyBzdHJhdGVneS5oaWdoV2F0ZXJNYXJrIGdldHRlcicpOwotCi10ZXN0KCgpID0+IHsKLQotICBm
b3IgKGNvbnN0IGhpZ2hXYXRlck1hcmsgb2YgWy0xLCAtSW5maW5pdHksIE5hTiwgJ2ZvbycsIHt9
XSkgewotICAgIGFzc2VydF90aHJvd3MobmV3IFJhbmdlRXJyb3IoKSwgKCkgPT4gewotICAgICAg
bmV3IFJlYWRhYmxlU3RyZWFtKHt9LCB7Ci0gICAgICAgIHNpemUoKSB7Ci0gICAgICAgICAgcmV0
dXJuIDE7Ci0gICAgICAgIH0sCi0gICAgICAgIGhpZ2hXYXRlck1hcmsKLSAgICAgIH0pOwotICAg
IH0sICdjb25zdHJ1Y3Rpb24gc2hvdWxkIHRocm93IGEgUmFuZ2VFcnJvciBmb3IgJyArIGhpZ2hX
YXRlck1hcmspOwotICB9Ci0KLX0sICdSZWFkYWJsZSBzdHJlYW06IGludmFsaWQgc3RyYXRlZ3ku
aGlnaFdhdGVyTWFyaycpOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotCi0gIGNvbnN0IHByb21p
c2VzID0gW107Ci0gIGZvciAoY29uc3Qgc2l6ZSBvZiBbTmFOLCAtSW5maW5pdHksIEluZmluaXR5
LCAtMV0pIHsKLSAgICBsZXQgdGhlRXJyb3I7Ci0gICAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVT
dHJlYW0oCi0gICAgICB7Ci0gICAgICAgIHN0YXJ0KGMpIHsKLSAgICAgICAgICB0cnkgewotICAg
ICAgICAgICAgYy5lbnF1ZXVlKCdoaScpOwotICAgICAgICAgICAgYXNzZXJ0X3VucmVhY2hlZCgn
ZW5xdWV1ZSBkaWRuXCd0IHRocm93Jyk7Ci0gICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHsKLSAg
ICAgICAgICAgIGFzc2VydF9lcXVhbHMoZXJyb3IubmFtZSwgJ1JhbmdlRXJyb3InLCAnZW5xdWV1
ZSBzaG91bGQgdGhyb3cgYSBSYW5nZUVycm9yIGZvciAnICsgc2l6ZSk7Ci0gICAgICAgICAgICB0
aGVFcnJvciA9IGVycm9yOwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgfSwKLSAgICAg
IHsKLSAgICAgICAgc2l6ZSgpIHsKLSAgICAgICAgICByZXR1cm4gc2l6ZTsKLSAgICAgICAgfSwK
LSAgICAgICAgaGlnaFdhdGVyTWFyazogNQotICAgICAgfQotICAgICk7Ci0KLSAgICBwcm9taXNl
cy5wdXNoKHJzLmdldFJlYWRlcigpLmNsb3NlZC5jYXRjaChlID0+IHsKLSAgICAgIGFzc2VydF9l
cXVhbHMoZSwgdGhlRXJyb3IsICdjbG9zZWQgc2hvdWxkIHJlamVjdCB3aXRoIHRoZSBlcnJvciBm
b3IgJyArIHNpemUpOwotICAgIH0pKTsKLSAgfQotCi0gIHJldHVybiBQcm9taXNlLmFsbChwcm9t
aXNlcyk7Ci0KLX0sICdSZWFkYWJsZSBzdHJlYW06IGludmFsaWQgc3RyYXRlZ3kuc2l6ZSByZXR1
cm4gdmFsdWUnKTsKLQotZG9uZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvYmFkLXN0cmF0
ZWdpZXMuc2VydmljZXdvcmtlci5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9iYWQt
c3RyYXRlZ2llcy5zZXJ2aWNld29ya2VyLmh0dHBzLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggYjAwYjJiMTc4ZDgxY2NlMDNlMzk5YzIxNTkyZGY2NGVjNzg5NGJj
My4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3Ry
ZWFtcy9iYWQtc3RyYXRlZ2llcy5zZXJ2aWNld29ya2VyLmh0dHBzLWV4cGVjdGVkLnR4dAorKysg
L2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAKLQotUEFTUyBTZXJ2aWNlIHdvcmtlciB0ZXN0IHNl
dHVwIAotUEFTUyBSZWFkYWJsZSBzdHJlYW06IHRocm93aW5nIHN0cmF0ZWd5LnNpemUgZ2V0dGVy
IAotUEFTUyBSZWFkYWJsZSBzdHJlYW06IHN0cmF0ZWd5LnNpemUgZXJyb3JzIHRoZSBzdHJlYW0g
YW5kIHRoZW4gdGhyb3dzIAotUEFTUyBSZWFkYWJsZSBzdHJlYW06IHN0cmF0ZWd5LnNpemUgZXJy
b3JzIHRoZSBzdHJlYW0gYW5kIHRoZW4gcmV0dXJucyBJbmZpbml0eSAKLVBBU1MgUmVhZGFibGUg
c3RyZWFtOiB0aHJvd2luZyBzdHJhdGVneS5zaXplIG1ldGhvZCAKLVBBU1MgUmVhZGFibGUgc3Ry
ZWFtOiB0aHJvd2luZyBzdHJhdGVneS5oaWdoV2F0ZXJNYXJrIGdldHRlciAKLVBBU1MgUmVhZGFi
bGUgc3RyZWFtOiBpbnZhbGlkIHN0cmF0ZWd5LmhpZ2hXYXRlck1hcmsgCi1QQVNTIFJlYWRhYmxl
IHN0cmVhbTogaW52YWxpZCBzdHJhdGVneS5zaXplIHJldHVybiB2YWx1ZSAKLQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3Jl
YWRhYmxlLXN0cmVhbXMvYmFkLXN0cmF0ZWdpZXMuc2VydmljZXdvcmtlci5odHRwcy5odG1sIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRh
YmxlLXN0cmVhbXMvYmFkLXN0cmF0ZWdpZXMuc2VydmljZXdvcmtlci5odHRwcy5odG1sCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YWEzYTRhY2Q0Nzk3MjBjNWNhZTU3MzlkMjNkMjcy
YTk1Nzg1MGQwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFk
YWJsZS1zdHJlYW1zL2JhZC1zdHJhdGVnaWVzLnNlcnZpY2V3b3JrZXIuaHR0cHMuaHRtbAorKysg
L2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNl
dD0idXRmLTgiPgotPHRpdGxlPmJhZC1zdHJhdGVnaWVzLmpzIHNlcnZpY2Ugd29ya2VyIHdyYXBw
ZXIgZmlsZTwvdGl0bGU+Ci0KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpz
Ij48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0Lmpz
Ij48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2Vy
L3Jlc291cmNlcy90ZXN0LWhlbHBlcnMuc3ViLmpzIj48L3NjcmlwdD4KLQotPHNjcmlwdD4KLSd1
c2Ugc3RyaWN0JzsKLXNlcnZpY2Vfd29ya2VyX3Rlc3QoJ2JhZC1zdHJhdGVnaWVzLmpzJywgJ1Nl
cnZpY2Ugd29ya2VyIHRlc3Qgc2V0dXAnKTsKLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0
cmVhbXMvYmFkLXN0cmF0ZWdpZXMuc2hhcmVkd29ya2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJl
YW1zL2JhZC1zdHJhdGVnaWVzLnNoYXJlZHdvcmtlci1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDA5ZDVkMjUwOWQ3ODQ3ZThjZDZmZTY2MDZhYTYwY2RkMzNhYTQ3
NGUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0
cmVhbXMvYmFkLXN0cmF0ZWdpZXMuc2hhcmVkd29ya2VyLWV4cGVjdGVkLnR4dAorKysgL2Rldi9u
dWxsCkBAIC0xLDUgKzAsMCBAQAotQ09OU09MRSBNRVNTQUdFOiBSZWZlcmVuY2VFcnJvcjogQ2Fu
J3QgZmluZCB2YXJpYWJsZTogU2hhcmVkV29ya2VyCi0KLUhhcm5lc3MgRXJyb3IgKEZBSUwpLCBt
ZXNzYWdlID0gUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IFNoYXJlZFdvcmtl
cgotCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2JhZC1zdHJhdGVnaWVzLnNoYXJlZHdvcmtl
ci5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJl
YW1zL3JlYWRhYmxlLXN0cmVhbXMvYmFkLXN0cmF0ZWdpZXMuc2hhcmVkd29ya2VyLmh0bWwKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc4Njk0Nzc2ZTNlZTVmOWUyZTcyMjY3MzRmYmM0
OWJlNzAwZWIyMDIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3Jl
YWRhYmxlLXN0cmVhbXMvYmFkLXN0cmF0ZWdpZXMuc2hhcmVkd29ya2VyLmh0bWwKKysrIC9kZXYv
bnVsbApAQCAtMSwxMSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9InV0
Zi04Ij4KLTx0aXRsZT5iYWQtc3RyYXRlZ2llcy5qcyBzaGFyZWQgd29ya2VyIHdyYXBwZXIgZmls
ZTwvdGl0bGU+Ci0KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3Nj
cmlwdD4KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3Nj
cmlwdD4KLQotPHNjcmlwdD4KLSd1c2Ugc3RyaWN0JzsKLWZldGNoX3Rlc3RzX2Zyb21fd29ya2Vy
KG5ldyBTaGFyZWRXb3JrZXIoJ2JhZC1zdHJhdGVnaWVzLmpzJykpOwotPC9zY3JpcHQ+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvcmVhZGFibGUtc3RyZWFtcy9iYWQtdW5kZXJseWluZy1zb3VyY2VzLmFueS1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
cmVhZGFibGUtc3RyZWFtcy9iYWQtdW5kZXJseWluZy1zb3VyY2VzLmFueS1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZmZhYWE4ZjRlZGIxNjcyMTQwMGE3OTkzYTlhOWQ5MDI1YmMwNTBlYwotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2JhZC11bmRlcmx5aW5nLXNvdXJjZXMuYW55LWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDI0IEBACisKK1BBU1MgVW5kZXJseWluZyBzb3VyY2Ugc3Rh
cnQ6IHRocm93aW5nIGdldHRlciAKK1BBU1MgVW5kZXJseWluZyBzb3VyY2Ugc3RhcnQ6IHRocm93
aW5nIG1ldGhvZCAKK1BBU1MgVW5kZXJseWluZyBzb3VyY2U6IHRocm93aW5nIHB1bGwgZ2V0dGVy
IChpbml0aWFsIHB1bGwpIAorUEFTUyBVbmRlcmx5aW5nIHNvdXJjZTogdGhyb3dpbmcgcHVsbCBt
ZXRob2QgKGluaXRpYWwgcHVsbCkgCitQQVNTIFVuZGVybHlpbmcgc291cmNlIHB1bGw6IHRocm93
aW5nIGdldHRlciAoc2Vjb25kIHB1bGwgZG9lcyBub3QgcmVzdWx0IGluIGEgc2Vjb25kIGdldCkg
CitQQVNTIFVuZGVybHlpbmcgc291cmNlIHB1bGw6IHRocm93aW5nIG1ldGhvZCAoc2Vjb25kIHB1
bGwpIAorUEFTUyBVbmRlcmx5aW5nIHNvdXJjZSBjYW5jZWw6IHRocm93aW5nIGdldHRlciAKK1BB
U1MgVW5kZXJseWluZyBzb3VyY2UgY2FuY2VsOiB0aHJvd2luZyBtZXRob2QgCitQQVNTIFVuZGVy
bHlpbmcgc291cmNlOiBjYWxsaW5nIGVucXVldWUgb24gYW4gZW1wdHkgY2FuY2VsZWQgc3RyZWFt
IHNob3VsZCB0aHJvdyAKK1BBU1MgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgZW5xdWV1ZSBv
biBhIG5vbi1lbXB0eSBjYW5jZWxlZCBzdHJlYW0gc2hvdWxkIHRocm93IAorUEFTUyBVbmRlcmx5
aW5nIHNvdXJjZTogY2FsbGluZyBlbnF1ZXVlIG9uIGEgY2xvc2VkIHN0cmVhbSBzaG91bGQgdGhy
b3cgCitQQVNTIFVuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGVucXVldWUgb24gYW4gZXJyb3Jl
ZCBzdHJlYW0gc2hvdWxkIHRocm93IAorUEFTUyBVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBj
bG9zZSB0d2ljZSBvbiBhbiBlbXB0eSBzdHJlYW0gc2hvdWxkIHRocm93IHRoZSBzZWNvbmQgdGlt
ZSAKK1BBU1MgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgY2xvc2UgdHdpY2Ugb24gYSBub24t
ZW1wdHkgc3RyZWFtIHNob3VsZCB0aHJvdyB0aGUgc2Vjb25kIHRpbWUgCitQQVNTIFVuZGVybHlp
bmcgc291cmNlOiBjYWxsaW5nIGNsb3NlIG9uIGFuIGVtcHR5IGNhbmNlbGVkIHN0cmVhbSBzaG91
bGQgdGhyb3cgCitQQVNTIFVuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGNsb3NlIG9uIGEgbm9u
LWVtcHR5IGNhbmNlbGVkIHN0cmVhbSBzaG91bGQgdGhyb3cgCitQQVNTIFVuZGVybHlpbmcgc291
cmNlOiBjYWxsaW5nIGNsb3NlIGFmdGVyIGVycm9yIHNob3VsZCB0aHJvdyAKK1BBU1MgVW5kZXJs
eWluZyBzb3VyY2U6IGNhbGxpbmcgZXJyb3IgdHdpY2Ugc2hvdWxkIG5vdCB0aHJvdyAKK1BBU1Mg
VW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgZXJyb3IgYWZ0ZXIgY2xvc2Ugc2hvdWxkIG5vdCB0
aHJvdyAKK1BBU1MgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgZXJyb3IgYW5kIHJldHVybmlu
ZyBhIHJlamVjdGVkIHByb21pc2UgZnJvbSBzdGFydCBzaG91bGQgY2F1c2UgdGhlIHN0cmVhbSB0
byBlcnJvciB3aXRoIHRoZSBmaXJzdCBlcnJvciAKK1BBU1MgVW5kZXJseWluZyBzb3VyY2U6IGNh
bGxpbmcgZXJyb3IgYW5kIHJldHVybmluZyBhIHJlamVjdGVkIHByb21pc2UgZnJvbSBwdWxsIHNo
b3VsZCBjYXVzZSB0aGUgc3RyZWFtIHRvIGVycm9yIHdpdGggdGhlIGZpcnN0IGVycm9yIAorUEFT
UyByZWFkIHNob3VsZCBub3QgZXJyb3IgaWYgaXQgZGVxdWV1ZXMgYW5kIHB1bGwoKSB0aHJvd3Mg
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2JhZC11bmRlcmx5aW5nLXNvdXJjZXMuYW55Lmh0
bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
cmVhZGFibGUtc3RyZWFtcy9iYWQtdW5kZXJseWluZy1zb3VyY2VzLmFueS5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjIzODI5MTM1MjhlNjkzYjNhNWQ1NmM2NjBhNDUwNjA5ODBiNTQ4YzMKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvcmVhZGFibGUtc3RyZWFtcy9iYWQtdW5kZXJseWluZy1zb3VyY2VzLmFueS5odG1sCkBAIC0w
LDAgKzEgQEAKKzwhLS0gVGhpcyBmaWxlIGlzIHJlcXVpcmVkIGZvciBXZWJLaXQgdGVzdCBpbmZy
YXN0cnVjdHVyZSB0byBydW4gdGhlIHRlbXBsYXRlZCB0ZXN0IC0tPgpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2JhZC11bmRlcmx5aW5nLXNvdXJj
ZXMuYW55LmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
dHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvYmFkLXVuZGVybHlpbmctc291cmNlcy5hbnkuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmY1OTE5N2E0OWIxOGJkY2MwNDc4MzRjYjFiMmM0NWJmNzQzNzkwYQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2JhZC11bmRlcmx5aW5nLXNvdXJjZXMuYW55LmpzCkBA
IC0wLDAgKzEsNDAwIEBACisvLyBNRVRBOiBnbG9iYWw9d2luZG93LHdvcmtlcixqc3NoZWxsCisn
dXNlIHN0cmljdCc7CisKKwordGVzdCgoKSA9PiB7CisKKyAgY29uc3QgdGhlRXJyb3IgPSBuZXcg
RXJyb3IoJ2EgdW5pcXVlIHN0cmluZycpOworCisgIGFzc2VydF90aHJvd3NfZXhhY3RseSh0aGVF
cnJvciwgKCkgPT4geworICAgIG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgICBnZXQgc3RhcnQo
KSB7CisgICAgICAgIHRocm93IHRoZUVycm9yOworICAgICAgfQorICAgIH0pOworICB9LCAnY29u
c3RydWN0aW5nIHRoZSBzdHJlYW0gc2hvdWxkIHJlLXRocm93IHRoZSBlcnJvcicpOworCit9LCAn
VW5kZXJseWluZyBzb3VyY2Ugc3RhcnQ6IHRocm93aW5nIGdldHRlcicpOworCisKK3Rlc3QoKCkg
PT4geworCisgIGNvbnN0IHRoZUVycm9yID0gbmV3IEVycm9yKCdhIHVuaXF1ZSBzdHJpbmcnKTsK
KworICBhc3NlcnRfdGhyb3dzX2V4YWN0bHkodGhlRXJyb3IsICgpID0+IHsKKyAgICBuZXcgUmVh
ZGFibGVTdHJlYW0oeworICAgICAgc3RhcnQoKSB7CisgICAgICAgIHRocm93IHRoZUVycm9yOwor
ICAgICAgfQorICAgIH0pOworICB9LCAnY29uc3RydWN0aW5nIHRoZSBzdHJlYW0gc2hvdWxkIHJl
LXRocm93IHRoZSBlcnJvcicpOworCit9LCAnVW5kZXJseWluZyBzb3VyY2Ugc3RhcnQ6IHRocm93
aW5nIG1ldGhvZCcpOworCisKK3Rlc3QoKCkgPT4geworCisgIGNvbnN0IHRoZUVycm9yID0gbmV3
IEVycm9yKCdhIHVuaXF1ZSBzdHJpbmcnKTsKKyAgYXNzZXJ0X3Rocm93c19leGFjdGx5KHRoZUVy
cm9yLCAoKSA9PiBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIGdldCBwdWxsKCkgeworICAgICAg
dGhyb3cgdGhlRXJyb3I7CisgICAgfQorICB9KSwgJ2NvbnN0cnVjdG9yIHNob3VsZCB0aHJvdycp
OworCit9LCAnVW5kZXJseWluZyBzb3VyY2U6IHRocm93aW5nIHB1bGwgZ2V0dGVyIChpbml0aWFs
IHB1bGwpJyk7CisKKworcHJvbWlzZV90ZXN0KHQgPT4geworCisgIGNvbnN0IHRoZUVycm9yID0g
bmV3IEVycm9yKCdhIHVuaXF1ZSBzdHJpbmcnKTsKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVT
dHJlYW0oeworICAgIHB1bGwoKSB7CisgICAgICB0aHJvdyB0aGVFcnJvcjsKKyAgICB9CisgIH0p
OworCisgIHJldHVybiBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCB0aGVFcnJvciwgcnMuZ2V0
UmVhZGVyKCkuY2xvc2VkKTsKKworfSwgJ1VuZGVybHlpbmcgc291cmNlOiB0aHJvd2luZyBwdWxs
IG1ldGhvZCAoaW5pdGlhbCBwdWxsKScpOworCisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKworICBj
b25zdCB0aGVFcnJvciA9IG5ldyBFcnJvcignYSB1bmlxdWUgc3RyaW5nJyk7CisKKyAgbGV0IGNv
dW50ZXIgPSAwOworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgZ2V0IHB1
bGwoKSB7CisgICAgICArK2NvdW50ZXI7CisgICAgICBpZiAoY291bnRlciA9PT0gMSkgeworICAg
ICAgICByZXR1cm4gYyA9PiBjLmVucXVldWUoJ2EnKTsKKyAgICAgIH0KKworICAgICAgdGhyb3cg
dGhlRXJyb3I7CisgICAgfQorICB9KTsKKyAgY29uc3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7
CisKKyAgcmV0dXJuIFByb21pc2UuYWxsKFsKKyAgICByZWFkZXIucmVhZCgpLnRoZW4ociA9PiB7
CisgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyLCB7IHZhbHVlOiAnYScsIGRvbmU6IGZhbHNl
IH0sICd0aGUgZmlyc3QgY2h1bmsgcmVhZCBzaG91bGQgYmUgY29ycmVjdCcpOworICAgIH0pLAor
ICAgIHJlYWRlci5yZWFkKCkudGhlbihyID0+IHsKKyAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxz
KHIsIHsgdmFsdWU6ICdhJywgZG9uZTogZmFsc2UgfSwgJ3RoZSBzZWNvbmQgY2h1bmsgcmVhZCBz
aG91bGQgYmUgY29ycmVjdCcpOworICAgICAgYXNzZXJ0X2VxdWFscyhjb3VudGVyLCAxLCAnY291
bnRlciBzaG91bGQgYmUgMScpOworICAgIH0pCisgIF0pOworCit9LCAnVW5kZXJseWluZyBzb3Vy
Y2UgcHVsbDogdGhyb3dpbmcgZ2V0dGVyIChzZWNvbmQgcHVsbCBkb2VzIG5vdCByZXN1bHQgaW4g
YSBzZWNvbmQgZ2V0KScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisKKyAgY29uc3QgdGhlRXJy
b3IgPSBuZXcgRXJyb3IoJ2EgdW5pcXVlIHN0cmluZycpOworCisgIGxldCBjb3VudGVyID0gMDsK
KyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHB1bGwoYykgeworICAgICAg
Kytjb3VudGVyOworICAgICAgaWYgKGNvdW50ZXIgPT09IDEpIHsKKyAgICAgICAgYy5lbnF1ZXVl
KCdhJyk7CisgICAgICAgIHJldHVybjsKKyAgICAgIH0KKworICAgICAgdGhyb3cgdGhlRXJyb3I7
CisgICAgfQorICB9KTsKKyAgY29uc3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7CisKKyAgcmV0
dXJuIFByb21pc2UuYWxsKFsKKyAgICByZWFkZXIucmVhZCgpLnRoZW4ociA9PiB7CisgICAgICBh
c3NlcnRfb2JqZWN0X2VxdWFscyhyLCB7IHZhbHVlOiAnYScsIGRvbmU6IGZhbHNlIH0sICd0aGUg
Y2h1bmsgcmVhZCBzaG91bGQgYmUgY29ycmVjdCcpOworICAgIH0pLAorICAgIHByb21pc2VfcmVq
ZWN0c19leGFjdGx5KHQsIHRoZUVycm9yLCByZWFkZXIuY2xvc2VkKQorICBdKTsKKworfSwgJ1Vu
ZGVybHlpbmcgc291cmNlIHB1bGw6IHRocm93aW5nIG1ldGhvZCAoc2Vjb25kIHB1bGwpJyk7CisK
K3Rlc3QoKCkgPT4geworCisgIGNvbnN0IHRoZUVycm9yID0gbmV3IEVycm9yKCdhIHVuaXF1ZSBz
dHJpbmcnKTsKKyAgYXNzZXJ0X3Rocm93c19leGFjdGx5KHRoZUVycm9yLCAoKSA9PiBuZXcgUmVh
ZGFibGVTdHJlYW0oeworICAgIGdldCBjYW5jZWwoKSB7CisgICAgICB0aHJvdyB0aGVFcnJvcjsK
KyAgICB9CisgIH0pLCAnY29uc3RydWN0b3Igc2hvdWxkIHRocm93Jyk7CisKK30sICdVbmRlcmx5
aW5nIHNvdXJjZSBjYW5jZWw6IHRocm93aW5nIGdldHRlcicpOworCitwcm9taXNlX3Rlc3QodCA9
PiB7CisKKyAgY29uc3QgdGhlRXJyb3IgPSBuZXcgRXJyb3IoJ2EgdW5pcXVlIHN0cmluZycpOwor
ICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgY2FuY2VsKCkgeworICAgICAg
dGhyb3cgdGhlRXJyb3I7CisgICAgfQorICB9KTsKKworICByZXR1cm4gcHJvbWlzZV9yZWplY3Rz
X2V4YWN0bHkodCwgdGhlRXJyb3IsIHJzLmNhbmNlbCgpKTsKKworfSwgJ1VuZGVybHlpbmcgc291
cmNlIGNhbmNlbDogdGhyb3dpbmcgbWV0aG9kJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisK
KyAgbGV0IGNvbnRyb2xsZXI7CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAg
ICBzdGFydChjKSB7CisgICAgICBjb250cm9sbGVyID0gYzsKKyAgICB9CisgIH0pOworCisgIHJz
LmNhbmNlbCgpOworICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4gY29udHJvbGxl
ci5lbnF1ZXVlKCdhJyksICdDYWxsaW5nIGVucXVldWUgYWZ0ZXIgY2FuY2VsaW5nIHNob3VsZCB0
aHJvdycpOworCisgIHJldHVybiBycy5nZXRSZWFkZXIoKS5jbG9zZWQ7CisKK30sICdVbmRlcmx5
aW5nIHNvdXJjZTogY2FsbGluZyBlbnF1ZXVlIG9uIGFuIGVtcHR5IGNhbmNlbGVkIHN0cmVhbSBz
aG91bGQgdGhyb3cnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKworICBsZXQgY29udHJvbGxl
cjsKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAg
ICAgIGMuZW5xdWV1ZSgnYScpOworICAgICAgYy5lbnF1ZXVlKCdiJyk7CisgICAgICBjb250cm9s
bGVyID0gYzsKKyAgICB9CisgIH0pOworCisgIHJzLmNhbmNlbCgpOworICBhc3NlcnRfdGhyb3dz
X2pzKFR5cGVFcnJvciwgKCkgPT4gY29udHJvbGxlci5lbnF1ZXVlKCdjJyksICdDYWxsaW5nIGVu
cXVldWUgYWZ0ZXIgY2FuY2VsaW5nIHNob3VsZCB0aHJvdycpOworCisgIHJldHVybiBycy5nZXRS
ZWFkZXIoKS5jbG9zZWQ7CisKK30sICdVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBlbnF1ZXVl
IG9uIGEgbm9uLWVtcHR5IGNhbmNlbGVkIHN0cmVhbSBzaG91bGQgdGhyb3cnKTsKKworcHJvbWlz
ZV90ZXN0KCgpID0+IHsKKworICByZXR1cm4gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFy
dChjKSB7CisgICAgICBjLmNsb3NlKCk7CisgICAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJv
ciwgKCkgPT4gYy5lbnF1ZXVlKCdhJyksICdjYWxsIHRvIGVucXVldWUgc2hvdWxkIHRocm93IGEg
VHlwZUVycm9yJyk7CisgICAgfQorICB9KS5nZXRSZWFkZXIoKS5jbG9zZWQ7CisKK30sICdVbmRl
cmx5aW5nIHNvdXJjZTogY2FsbGluZyBlbnF1ZXVlIG9uIGEgY2xvc2VkIHN0cmVhbSBzaG91bGQg
dGhyb3cnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworCisgIGNvbnN0IHRoZUVycm9yID0gbmV3
IEVycm9yKCdib28nKTsKKyAgY29uc3QgY2xvc2VkID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAg
ICBzdGFydChjKSB7CisgICAgICBjLmVycm9yKHRoZUVycm9yKTsKKyAgICAgIGFzc2VydF90aHJv
d3NfanMoVHlwZUVycm9yLCAoKSA9PiBjLmVucXVldWUoJ2EnKSwgJ2NhbGwgdG8gZW5xdWV1ZSBz
aG91bGQgdGhyb3cgdGhlIGVycm9yJyk7CisgICAgfQorICB9KS5nZXRSZWFkZXIoKS5jbG9zZWQ7
CisKKyAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIHRoZUVycm9yLCBjbG9zZWQp
OworCit9LCAnVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgZW5xdWV1ZSBvbiBhbiBlcnJvcmVk
IHN0cmVhbSBzaG91bGQgdGhyb3cnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKworICByZXR1
cm4gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjLmNsb3NlKCk7
CisgICAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4gYy5jbG9zZSgpLCAnc2Vj
b25kIGNhbGwgdG8gY2xvc2Ugc2hvdWxkIHRocm93IGEgVHlwZUVycm9yJyk7CisgICAgfQorICB9
KS5nZXRSZWFkZXIoKS5jbG9zZWQ7CisKK30sICdVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBj
bG9zZSB0d2ljZSBvbiBhbiBlbXB0eSBzdHJlYW0gc2hvdWxkIHRocm93IHRoZSBzZWNvbmQgdGlt
ZScpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworCisgIGxldCBzdGFydENhbGxlZCA9IGZhbHNl
OworICBsZXQgcmVhZENhbGxlZCA9IGZhbHNlOworICBjb25zdCByZWFkZXIgPSBuZXcgUmVhZGFi
bGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGMuZW5xdWV1ZSgnYScpOworICAgICAg
Yy5jbG9zZSgpOworICAgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IGMuY2xv
c2UoKSwgJ3NlY29uZCBjYWxsIHRvIGNsb3NlIHNob3VsZCB0aHJvdyBhIFR5cGVFcnJvcicpOwor
ICAgICAgc3RhcnRDYWxsZWQgPSB0cnVlOworICAgIH0KKyAgfSkuZ2V0UmVhZGVyKCk7CisKKyAg
cmV0dXJuIFByb21pc2UuYWxsKFsKKyAgICByZWFkZXIucmVhZCgpLnRoZW4ociA9PiB7CisgICAg
ICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyLCB7IHZhbHVlOiAnYScsIGRvbmU6IGZhbHNlIH0sICdy
ZWFkKCkgc2hvdWxkIHJlYWQgdGhlIGVucXVldWVkIGNodW5rJyk7CisgICAgICByZWFkQ2FsbGVk
ID0gdHJ1ZTsKKyAgICB9KSwKKyAgICByZWFkZXIuY2xvc2VkLnRoZW4oKCkgPT4geworICAgICAg
YXNzZXJ0X3RydWUoc3RhcnRDYWxsZWQpOworICAgICAgYXNzZXJ0X3RydWUocmVhZENhbGxlZCk7
CisgICAgfSkKKyAgXSk7CisKK30sICdVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBjbG9zZSB0
d2ljZSBvbiBhIG5vbi1lbXB0eSBzdHJlYW0gc2hvdWxkIHRocm93IHRoZSBzZWNvbmQgdGltZScp
OworCitwcm9taXNlX3Rlc3QoKCkgPT4geworCisgIGxldCBjb250cm9sbGVyOworICBsZXQgc3Rh
cnRDYWxsZWQgPSBmYWxzZTsKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAg
IHN0YXJ0KGMpIHsKKyAgICAgIGNvbnRyb2xsZXIgPSBjOworICAgICAgc3RhcnRDYWxsZWQgPSB0
cnVlOworICAgIH0KKyAgfSk7CisKKyAgcnMuY2FuY2VsKCk7CisgIGFzc2VydF90aHJvd3NfanMo
VHlwZUVycm9yLCAoKSA9PiBjb250cm9sbGVyLmNsb3NlKCksICdDYWxsaW5nIGNsb3NlIGFmdGVy
IGNhbmNlbGluZyBzaG91bGQgdGhyb3cnKTsKKworICByZXR1cm4gcnMuZ2V0UmVhZGVyKCkuY2xv
c2VkLnRoZW4oKCkgPT4geworICAgIGFzc2VydF90cnVlKHN0YXJ0Q2FsbGVkKTsKKyAgfSk7CisK
K30sICdVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBjbG9zZSBvbiBhbiBlbXB0eSBjYW5jZWxl
ZCBzdHJlYW0gc2hvdWxkIHRocm93Jyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisKKyAgbGV0
IGNvbnRyb2xsZXI7CisgIGxldCBzdGFydENhbGxlZCA9IGZhbHNlOworICBjb25zdCBycyA9IG5l
dyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgY29udHJvbGxlciA9IGM7
CisgICAgICBjLmVucXVldWUoJ2EnKTsKKyAgICAgIHN0YXJ0Q2FsbGVkID0gdHJ1ZTsKKyAgICB9
CisgIH0pOworCisgIHJzLmNhbmNlbCgpOworICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwg
KCkgPT4gY29udHJvbGxlci5jbG9zZSgpLCAnQ2FsbGluZyBjbG9zZSBhZnRlciBjYW5jZWxpbmcg
c2hvdWxkIHRocm93Jyk7CisKKyAgcmV0dXJuIHJzLmdldFJlYWRlcigpLmNsb3NlZC50aGVuKCgp
ID0+IHsKKyAgICBhc3NlcnRfdHJ1ZShzdGFydENhbGxlZCk7CisgIH0pOworCit9LCAnVW5kZXJs
eWluZyBzb3VyY2U6IGNhbGxpbmcgY2xvc2Ugb24gYSBub24tZW1wdHkgY2FuY2VsZWQgc3RyZWFt
IHNob3VsZCB0aHJvdycpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworCisgIGNvbnN0IHRoZUVy
cm9yID0gbmV3IEVycm9yKCdib28nKTsKKyAgbGV0IHN0YXJ0Q2FsbGVkID0gZmFsc2U7CisKKyAg
Y29uc3QgY2xvc2VkID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAg
ICBjLmVycm9yKHRoZUVycm9yKTsKKyAgICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAo
KSA9PiBjLmNsb3NlKCksICdjYWxsIHRvIGNsb3NlIHNob3VsZCB0aHJvdyBhIFR5cGVFcnJvcicp
OworICAgICAgc3RhcnRDYWxsZWQgPSB0cnVlOworICAgIH0KKyAgfSkuZ2V0UmVhZGVyKCkuY2xv
c2VkOworCisgIHJldHVybiBjbG9zZWQuY2F0Y2goZSA9PiB7CisgICAgYXNzZXJ0X3RydWUoc3Rh
cnRDYWxsZWQpOworICAgIGFzc2VydF9lcXVhbHMoZSwgdGhlRXJyb3IsICdjbG9zZWQgc2hvdWxk
IHJlamVjdCB3aXRoIHRoZSBlcnJvcicpOworICB9KTsKKworfSwgJ1VuZGVybHlpbmcgc291cmNl
OiBjYWxsaW5nIGNsb3NlIGFmdGVyIGVycm9yIHNob3VsZCB0aHJvdycpOworCitwcm9taXNlX3Rl
c3QoKCkgPT4geworCisgIGNvbnN0IHRoZUVycm9yID0gbmV3IEVycm9yKCdib28nKTsKKyAgbGV0
IHN0YXJ0Q2FsbGVkID0gZmFsc2U7CisKKyAgY29uc3QgY2xvc2VkID0gbmV3IFJlYWRhYmxlU3Ry
ZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjLmVycm9yKHRoZUVycm9yKTsKKyAgICAgIGMu
ZXJyb3IoKTsKKyAgICAgIHN0YXJ0Q2FsbGVkID0gdHJ1ZTsKKyAgICB9CisgIH0pLmdldFJlYWRl
cigpLmNsb3NlZDsKKworICByZXR1cm4gY2xvc2VkLmNhdGNoKGUgPT4geworICAgIGFzc2VydF90
cnVlKHN0YXJ0Q2FsbGVkKTsKKyAgICBhc3NlcnRfZXF1YWxzKGUsIHRoZUVycm9yLCAnY2xvc2Vk
IHNob3VsZCByZWplY3Qgd2l0aCB0aGUgZXJyb3InKTsKKyAgfSk7CisKK30sICdVbmRlcmx5aW5n
IHNvdXJjZTogY2FsbGluZyBlcnJvciB0d2ljZSBzaG91bGQgbm90IHRocm93Jyk7CisKK3Byb21p
c2VfdGVzdCgoKSA9PiB7CisKKyAgbGV0IHN0YXJ0Q2FsbGVkID0gZmFsc2U7CisKKyAgY29uc3Qg
Y2xvc2VkID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjLmNs
b3NlKCk7CisgICAgICBjLmVycm9yKCk7CisgICAgICBzdGFydENhbGxlZCA9IHRydWU7CisgICAg
fQorICB9KS5nZXRSZWFkZXIoKS5jbG9zZWQ7CisKKyAgcmV0dXJuIGNsb3NlZC50aGVuKCgpID0+
IGFzc2VydF90cnVlKHN0YXJ0Q2FsbGVkKSk7CisKK30sICdVbmRlcmx5aW5nIHNvdXJjZTogY2Fs
bGluZyBlcnJvciBhZnRlciBjbG9zZSBzaG91bGQgbm90IHRocm93Jyk7CisKK3Byb21pc2VfdGVz
dCgoKSA9PiB7CisKKyAgbGV0IHN0YXJ0Q2FsbGVkID0gZmFsc2U7CisgIGNvbnN0IGZpcnN0RXJy
b3IgPSBuZXcgRXJyb3IoJzEnKTsKKyAgY29uc3Qgc2Vjb25kRXJyb3IgPSBuZXcgRXJyb3IoJzIn
KTsKKworICBjb25zdCBjbG9zZWQgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMp
IHsKKyAgICAgIGMuZXJyb3IoZmlyc3RFcnJvcik7CisgICAgICBzdGFydENhbGxlZCA9IHRydWU7
CisgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3Qoc2Vjb25kRXJyb3IpOworICAgIH0KKyAgfSku
Z2V0UmVhZGVyKCkuY2xvc2VkOworCisgIHJldHVybiBjbG9zZWQuY2F0Y2goZSA9PiB7CisgICAg
YXNzZXJ0X3RydWUoc3RhcnRDYWxsZWQpOworICAgIGFzc2VydF9lcXVhbHMoZSwgZmlyc3RFcnJv
ciwgJ2Nsb3NlZCBzaG91bGQgcmVqZWN0IHdpdGggdGhlIGZpcnN0IGVycm9yJyk7CisgIH0pOwor
Cit9LCAnVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgZXJyb3IgYW5kIHJldHVybmluZyBhIHJl
amVjdGVkIHByb21pc2UgZnJvbSBzdGFydCBzaG91bGQgY2F1c2UgdGhlIHN0cmVhbSB0byBlcnJv
ciAnICsKKyAgICd3aXRoIHRoZSBmaXJzdCBlcnJvcicpOworCitwcm9taXNlX3Rlc3QoKCkgPT4g
eworCisgIGxldCBzdGFydENhbGxlZCA9IGZhbHNlOworICBjb25zdCBmaXJzdEVycm9yID0gbmV3
IEVycm9yKCcxJyk7CisgIGNvbnN0IHNlY29uZEVycm9yID0gbmV3IEVycm9yKCcyJyk7CisKKyAg
Y29uc3QgY2xvc2VkID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBwdWxsKGMpIHsKKyAgICAg
IGMuZXJyb3IoZmlyc3RFcnJvcik7CisgICAgICBzdGFydENhbGxlZCA9IHRydWU7CisgICAgICBy
ZXR1cm4gUHJvbWlzZS5yZWplY3Qoc2Vjb25kRXJyb3IpOworICAgIH0KKyAgfSkuZ2V0UmVhZGVy
KCkuY2xvc2VkOworCisgIHJldHVybiBjbG9zZWQuY2F0Y2goZSA9PiB7CisgICAgYXNzZXJ0X3Ry
dWUoc3RhcnRDYWxsZWQpOworICAgIGFzc2VydF9lcXVhbHMoZSwgZmlyc3RFcnJvciwgJ2Nsb3Nl
ZCBzaG91bGQgcmVqZWN0IHdpdGggdGhlIGZpcnN0IGVycm9yJyk7CisgIH0pOworCit9LCAnVW5k
ZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgZXJyb3IgYW5kIHJldHVybmluZyBhIHJlamVjdGVkIHBy
b21pc2UgZnJvbSBwdWxsIHNob3VsZCBjYXVzZSB0aGUgc3RyZWFtIHRvIGVycm9yICcgKworICAg
J3dpdGggdGhlIGZpcnN0IGVycm9yJyk7CisKK2NvbnN0IGVycm9yMSA9IHsgbmFtZTogJ2Vycm9y
MScgfTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworCisgIGxldCBwdWxsU2hvdWxkVGhyb3cgPSBm
YWxzZTsKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHB1bGwoY29udHJv
bGxlcikgeworICAgICAgaWYgKHB1bGxTaG91bGRUaHJvdykgeworICAgICAgICB0aHJvdyBlcnJv
cjE7CisgICAgICB9CisgICAgICBjb250cm9sbGVyLmVucXVldWUoMCk7CisgICAgfQorICB9LCBu
ZXcgQ291bnRRdWV1aW5nU3RyYXRlZ3koe2hpZ2hXYXRlck1hcms6IDF9KSk7CisgIGNvbnN0IHJl
YWRlciA9IHJzLmdldFJlYWRlcigpOworICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCkudGhlbigo
KSA9PiB7CisgICAgcHVsbFNob3VsZFRocm93ID0gdHJ1ZTsKKyAgICByZXR1cm4gUHJvbWlzZS5h
bGwoWworICAgICAgcmVhZGVyLnJlYWQoKSwKKyAgICAgIHByb21pc2VfcmVqZWN0c19leGFjdGx5
KHQsIGVycm9yMSwgcmVhZGVyLmNsb3NlZCwgJy5jbG9zZWQgcHJvbWlzZSBzaG91bGQgcmVqZWN0
JykKKyAgICBdKTsKKyAgfSk7CisKK30sICdyZWFkIHNob3VsZCBub3QgZXJyb3IgaWYgaXQgZGVx
dWV1ZXMgYW5kIHB1bGwoKSB0aHJvd3MnKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2JhZC11
bmRlcmx5aW5nLXNvdXJjZXMuYW55Lndvcmtlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9i
YWQtdW5kZXJseWluZy1zb3VyY2VzLmFueS53b3JrZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmZmYWFhOGY0ZWRiMTY3MjE0MDBhNzk5M2E5YTlkOTAyNWJjMDUwZWMKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
cmVhZGFibGUtc3RyZWFtcy9iYWQtdW5kZXJseWluZy1zb3VyY2VzLmFueS53b3JrZXItZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsMjQgQEAKKworUEFTUyBVbmRlcmx5aW5nIHNvdXJjZSBzdGFydDog
dGhyb3dpbmcgZ2V0dGVyIAorUEFTUyBVbmRlcmx5aW5nIHNvdXJjZSBzdGFydDogdGhyb3dpbmcg
bWV0aG9kIAorUEFTUyBVbmRlcmx5aW5nIHNvdXJjZTogdGhyb3dpbmcgcHVsbCBnZXR0ZXIgKGlu
aXRpYWwgcHVsbCkgCitQQVNTIFVuZGVybHlpbmcgc291cmNlOiB0aHJvd2luZyBwdWxsIG1ldGhv
ZCAoaW5pdGlhbCBwdWxsKSAKK1BBU1MgVW5kZXJseWluZyBzb3VyY2UgcHVsbDogdGhyb3dpbmcg
Z2V0dGVyIChzZWNvbmQgcHVsbCBkb2VzIG5vdCByZXN1bHQgaW4gYSBzZWNvbmQgZ2V0KSAKK1BB
U1MgVW5kZXJseWluZyBzb3VyY2UgcHVsbDogdGhyb3dpbmcgbWV0aG9kIChzZWNvbmQgcHVsbCkg
CitQQVNTIFVuZGVybHlpbmcgc291cmNlIGNhbmNlbDogdGhyb3dpbmcgZ2V0dGVyIAorUEFTUyBV
bmRlcmx5aW5nIHNvdXJjZSBjYW5jZWw6IHRocm93aW5nIG1ldGhvZCAKK1BBU1MgVW5kZXJseWlu
ZyBzb3VyY2U6IGNhbGxpbmcgZW5xdWV1ZSBvbiBhbiBlbXB0eSBjYW5jZWxlZCBzdHJlYW0gc2hv
dWxkIHRocm93IAorUEFTUyBVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBlbnF1ZXVlIG9uIGEg
bm9uLWVtcHR5IGNhbmNlbGVkIHN0cmVhbSBzaG91bGQgdGhyb3cgCitQQVNTIFVuZGVybHlpbmcg
c291cmNlOiBjYWxsaW5nIGVucXVldWUgb24gYSBjbG9zZWQgc3RyZWFtIHNob3VsZCB0aHJvdyAK
K1BBU1MgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgZW5xdWV1ZSBvbiBhbiBlcnJvcmVkIHN0
cmVhbSBzaG91bGQgdGhyb3cgCitQQVNTIFVuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGNsb3Nl
IHR3aWNlIG9uIGFuIGVtcHR5IHN0cmVhbSBzaG91bGQgdGhyb3cgdGhlIHNlY29uZCB0aW1lIAor
UEFTUyBVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBjbG9zZSB0d2ljZSBvbiBhIG5vbi1lbXB0
eSBzdHJlYW0gc2hvdWxkIHRocm93IHRoZSBzZWNvbmQgdGltZSAKK1BBU1MgVW5kZXJseWluZyBz
b3VyY2U6IGNhbGxpbmcgY2xvc2Ugb24gYW4gZW1wdHkgY2FuY2VsZWQgc3RyZWFtIHNob3VsZCB0
aHJvdyAKK1BBU1MgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgY2xvc2Ugb24gYSBub24tZW1w
dHkgY2FuY2VsZWQgc3RyZWFtIHNob3VsZCB0aHJvdyAKK1BBU1MgVW5kZXJseWluZyBzb3VyY2U6
IGNhbGxpbmcgY2xvc2UgYWZ0ZXIgZXJyb3Igc2hvdWxkIHRocm93IAorUEFTUyBVbmRlcmx5aW5n
IHNvdXJjZTogY2FsbGluZyBlcnJvciB0d2ljZSBzaG91bGQgbm90IHRocm93IAorUEFTUyBVbmRl
cmx5aW5nIHNvdXJjZTogY2FsbGluZyBlcnJvciBhZnRlciBjbG9zZSBzaG91bGQgbm90IHRocm93
IAorUEFTUyBVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBlcnJvciBhbmQgcmV0dXJuaW5nIGEg
cmVqZWN0ZWQgcHJvbWlzZSBmcm9tIHN0YXJ0IHNob3VsZCBjYXVzZSB0aGUgc3RyZWFtIHRvIGVy
cm9yIHdpdGggdGhlIGZpcnN0IGVycm9yIAorUEFTUyBVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGlu
ZyBlcnJvciBhbmQgcmV0dXJuaW5nIGEgcmVqZWN0ZWQgcHJvbWlzZSBmcm9tIHB1bGwgc2hvdWxk
IGNhdXNlIHRoZSBzdHJlYW0gdG8gZXJyb3Igd2l0aCB0aGUgZmlyc3QgZXJyb3IgCitQQVNTIHJl
YWQgc2hvdWxkIG5vdCBlcnJvciBpZiBpdCBkZXF1ZXVlcyBhbmQgcHVsbCgpIHRocm93cyAKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
dHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvYmFkLXVuZGVybHlpbmctc291cmNlcy5hbnkud29ya2Vy
Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvcmVhZGFibGUtc3RyZWFtcy9iYWQtdW5kZXJseWluZy1zb3VyY2VzLmFueS53b3JrZXIuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4yMzgyOTEzNTI4ZTY5M2IzYTVkNTZjNjYwYTQ1MDYwOTgwYjU0OGMzCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvYmFkLXVuZGVybHlpbmctc291cmNlcy5hbnku
d29ya2VyLmh0bWwKQEAgLTAsMCArMSBAQAorPCEtLSBUaGlzIGZpbGUgaXMgcmVxdWlyZWQgZm9y
IFdlYktpdCB0ZXN0IGluZnJhc3RydWN0dXJlIHRvIHJ1biB0aGUgdGVtcGxhdGVkIHRlc3QgLS0+
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvYmFk
LXVuZGVybHlpbmctc291cmNlcy5kZWRpY2F0ZWR3b3JrZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0
cmVhbXMvYmFkLXVuZGVybHlpbmctc291cmNlcy5kZWRpY2F0ZWR3b3JrZXItZXhwZWN0ZWQudHh0
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZmFhYThmNGVkYjE2NzIxNDAwYTc5OTNh
OWE5ZDkwMjViYzA1MGVjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy9yZWFkYWJsZS1zdHJlYW1zL2JhZC11bmRlcmx5aW5nLXNvdXJjZXMuZGVkaWNhdGVkd29ya2Vy
LWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLQotUEFTUyBVbmRl
cmx5aW5nIHNvdXJjZSBzdGFydDogdGhyb3dpbmcgZ2V0dGVyIAotUEFTUyBVbmRlcmx5aW5nIHNv
dXJjZSBzdGFydDogdGhyb3dpbmcgbWV0aG9kIAotUEFTUyBVbmRlcmx5aW5nIHNvdXJjZTogdGhy
b3dpbmcgcHVsbCBnZXR0ZXIgKGluaXRpYWwgcHVsbCkgCi1QQVNTIFVuZGVybHlpbmcgc291cmNl
OiB0aHJvd2luZyBwdWxsIG1ldGhvZCAoaW5pdGlhbCBwdWxsKSAKLVBBU1MgVW5kZXJseWluZyBz
b3VyY2UgcHVsbDogdGhyb3dpbmcgZ2V0dGVyIChzZWNvbmQgcHVsbCBkb2VzIG5vdCByZXN1bHQg
aW4gYSBzZWNvbmQgZ2V0KSAKLVBBU1MgVW5kZXJseWluZyBzb3VyY2UgcHVsbDogdGhyb3dpbmcg
bWV0aG9kIChzZWNvbmQgcHVsbCkgCi1QQVNTIFVuZGVybHlpbmcgc291cmNlIGNhbmNlbDogdGhy
b3dpbmcgZ2V0dGVyIAotUEFTUyBVbmRlcmx5aW5nIHNvdXJjZSBjYW5jZWw6IHRocm93aW5nIG1l
dGhvZCAKLVBBU1MgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgZW5xdWV1ZSBvbiBhbiBlbXB0
eSBjYW5jZWxlZCBzdHJlYW0gc2hvdWxkIHRocm93IAotUEFTUyBVbmRlcmx5aW5nIHNvdXJjZTog
Y2FsbGluZyBlbnF1ZXVlIG9uIGEgbm9uLWVtcHR5IGNhbmNlbGVkIHN0cmVhbSBzaG91bGQgdGhy
b3cgCi1QQVNTIFVuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGVucXVldWUgb24gYSBjbG9zZWQg
c3RyZWFtIHNob3VsZCB0aHJvdyAKLVBBU1MgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgZW5x
dWV1ZSBvbiBhbiBlcnJvcmVkIHN0cmVhbSBzaG91bGQgdGhyb3cgCi1QQVNTIFVuZGVybHlpbmcg
c291cmNlOiBjYWxsaW5nIGNsb3NlIHR3aWNlIG9uIGFuIGVtcHR5IHN0cmVhbSBzaG91bGQgdGhy
b3cgdGhlIHNlY29uZCB0aW1lIAotUEFTUyBVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBjbG9z
ZSB0d2ljZSBvbiBhIG5vbi1lbXB0eSBzdHJlYW0gc2hvdWxkIHRocm93IHRoZSBzZWNvbmQgdGlt
ZSAKLVBBU1MgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgY2xvc2Ugb24gYW4gZW1wdHkgY2Fu
Y2VsZWQgc3RyZWFtIHNob3VsZCB0aHJvdyAKLVBBU1MgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxp
bmcgY2xvc2Ugb24gYSBub24tZW1wdHkgY2FuY2VsZWQgc3RyZWFtIHNob3VsZCB0aHJvdyAKLVBB
U1MgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgY2xvc2UgYWZ0ZXIgZXJyb3Igc2hvdWxkIHRo
cm93IAotUEFTUyBVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBlcnJvciB0d2ljZSBzaG91bGQg
bm90IHRocm93IAotUEFTUyBVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBlcnJvciBhZnRlciBj
bG9zZSBzaG91bGQgbm90IHRocm93IAotUEFTUyBVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBl
cnJvciBhbmQgcmV0dXJuaW5nIGEgcmVqZWN0ZWQgcHJvbWlzZSBmcm9tIHN0YXJ0IHNob3VsZCBj
YXVzZSB0aGUgc3RyZWFtIHRvIGVycm9yIHdpdGggdGhlIGZpcnN0IGVycm9yIAotUEFTUyBVbmRl
cmx5aW5nIHNvdXJjZTogY2FsbGluZyBlcnJvciBhbmQgcmV0dXJuaW5nIGEgcmVqZWN0ZWQgcHJv
bWlzZSBmcm9tIHB1bGwgc2hvdWxkIGNhdXNlIHRoZSBzdHJlYW0gdG8gZXJyb3Igd2l0aCB0aGUg
Zmlyc3QgZXJyb3IgCi1QQVNTIHJlYWQgc2hvdWxkIG5vdCBlcnJvciBpZiBpdCBkZXF1ZXVlcyBh
bmQgcHVsbCgpIHRocm93cyAKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvYmFkLXVuZGVybHlp
bmctc291cmNlcy5kZWRpY2F0ZWR3b3JrZXIuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2JhZC11bmRlcmx5
aW5nLXNvdXJjZXMuZGVkaWNhdGVkd29ya2VyLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDE5MjkwMDdkYzYzYmM1YzM5ZTNhMzdiZDVhYWVjMmZhNzhkNDJkMDQuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvYmFkLXVu
ZGVybHlpbmctc291cmNlcy5kZWRpY2F0ZWR3b3JrZXIuaHRtbAorKysgL2Rldi9udWxsCkBAIC0x
LDExICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHRp
dGxlPmJhZC11bmRlcmx5aW5nLXNvdXJjZXMuanMgZGVkaWNhdGVkIHdvcmtlciB3cmFwcGVyIGZp
bGU8L3RpdGxlPgotCi08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9z
Y3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9z
Y3JpcHQ+Ci0KLTxzY3JpcHQ+Ci0ndXNlIHN0cmljdCc7Ci1mZXRjaF90ZXN0c19mcm9tX3dvcmtl
cihuZXcgV29ya2VyKCdiYWQtdW5kZXJseWluZy1zb3VyY2VzLmpzJykpOwotPC9zY3JpcHQ+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9iYWQtdW5kZXJseWluZy1zb3VyY2VzLmh0bWwgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUt
c3RyZWFtcy9iYWQtdW5kZXJseWluZy1zb3VyY2VzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDM5NjBlODg2ZGMwMzA1ZTJkZmRmZjllZWZjZDE5ZThlMzNlMWQzZDguLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvYmFk
LXVuZGVybHlpbmctc291cmNlcy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAot
PCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08dGl0bGU+YmFkLXVuZGVy
bHlpbmctc291cmNlcy5qcyBicm93c2VyIGNvbnRleHQgd3JhcHBlciBmaWxlPC90aXRsZT4KLQot
PHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlw
dCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotCi0KLQot
PHNjcmlwdCBzcmM9ImJhZC11bmRlcmx5aW5nLXNvdXJjZXMuanMiPjwvc2NyaXB0PgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
L3JlYWRhYmxlLXN0cmVhbXMvYmFkLXVuZGVybHlpbmctc291cmNlcy5qcyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1z
L2JhZC11bmRlcmx5aW5nLXNvdXJjZXMuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDZmY2U3YjE5MWIyMmIxMzA5MWNhMjYxODhlZmE4NjY0NWJjZjYzYTEuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvYmFkLXVuZGVybHlp
bmctc291cmNlcy5qcworKysgL2Rldi9udWxsCkBAIC0xLDQwNSArMCwwIEBACi0ndXNlIHN0cmlj
dCc7Ci0KLWlmIChzZWxmLmltcG9ydFNjcmlwdHMpIHsKLSAgc2VsZi5pbXBvcnRTY3JpcHRzKCcv
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzJyk7Ci19Ci0KLQotdGVzdCgoKSA9PiB7Ci0KLSAgY29u
c3QgdGhlRXJyb3IgPSBuZXcgRXJyb3IoJ2EgdW5pcXVlIHN0cmluZycpOwotCi0gIGFzc2VydF90
aHJvd3ModGhlRXJyb3IsICgpID0+IHsKLSAgICBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgICAg
Z2V0IHN0YXJ0KCkgewotICAgICAgICB0aHJvdyB0aGVFcnJvcjsKLSAgICAgIH0KLSAgICB9KTsK
LSAgfSwgJ2NvbnN0cnVjdGluZyB0aGUgc3RyZWFtIHNob3VsZCByZS10aHJvdyB0aGUgZXJyb3In
KTsKLQotfSwgJ1VuZGVybHlpbmcgc291cmNlIHN0YXJ0OiB0aHJvd2luZyBnZXR0ZXInKTsKLQot
Ci10ZXN0KCgpID0+IHsKLQotICBjb25zdCB0aGVFcnJvciA9IG5ldyBFcnJvcignYSB1bmlxdWUg
c3RyaW5nJyk7Ci0KLSAgYXNzZXJ0X3Rocm93cyh0aGVFcnJvciwgKCkgPT4gewotICAgIG5ldyBS
ZWFkYWJsZVN0cmVhbSh7Ci0gICAgICBzdGFydCgpIHsKLSAgICAgICAgdGhyb3cgdGhlRXJyb3I7
Ci0gICAgICB9Ci0gICAgfSk7Ci0gIH0sICdjb25zdHJ1Y3RpbmcgdGhlIHN0cmVhbSBzaG91bGQg
cmUtdGhyb3cgdGhlIGVycm9yJyk7Ci0KLX0sICdVbmRlcmx5aW5nIHNvdXJjZSBzdGFydDogdGhy
b3dpbmcgbWV0aG9kJyk7Ci0KLQotdGVzdCgoKSA9PiB7Ci0KLSAgY29uc3QgdGhlRXJyb3IgPSBu
ZXcgRXJyb3IoJ2EgdW5pcXVlIHN0cmluZycpOwotICBhc3NlcnRfdGhyb3dzKHRoZUVycm9yLCAo
KSA9PiBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIGdldCBwdWxsKCkgewotICAgICAgdGhyb3cg
dGhlRXJyb3I7Ci0gICAgfQotICB9KSwgJ2NvbnN0cnVjdG9yIHNob3VsZCB0aHJvdycpOwotCi19
LCAnVW5kZXJseWluZyBzb3VyY2U6IHRocm93aW5nIHB1bGwgZ2V0dGVyIChpbml0aWFsIHB1bGwp
Jyk7Ci0KLQotcHJvbWlzZV90ZXN0KHQgPT4gewotCi0gIGNvbnN0IHRoZUVycm9yID0gbmV3IEVy
cm9yKCdhIHVuaXF1ZSBzdHJpbmcnKTsKLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0o
ewotICAgIHB1bGwoKSB7Ci0gICAgICB0aHJvdyB0aGVFcnJvcjsKLSAgICB9Ci0gIH0pOwotCi0g
IHJldHVybiBwcm9taXNlX3JlamVjdHModCwgdGhlRXJyb3IsIHJzLmdldFJlYWRlcigpLmNsb3Nl
ZCk7Ci0KLX0sICdVbmRlcmx5aW5nIHNvdXJjZTogdGhyb3dpbmcgcHVsbCBtZXRob2QgKGluaXRp
YWwgcHVsbCknKTsKLQotCi1wcm9taXNlX3Rlc3QodCA9PiB7Ci0KLSAgY29uc3QgdGhlRXJyb3Ig
PSBuZXcgRXJyb3IoJ2EgdW5pcXVlIHN0cmluZycpOwotCi0gIGxldCBjb3VudGVyID0gMDsKLSAg
Y29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIGdldCBwdWxsKCkgewotICAgICAg
Kytjb3VudGVyOwotICAgICAgaWYgKGNvdW50ZXIgPT09IDEpIHsKLSAgICAgICAgcmV0dXJuIGMg
PT4gYy5lbnF1ZXVlKCdhJyk7Ci0gICAgICB9Ci0KLSAgICAgIHRocm93IHRoZUVycm9yOwotICAg
IH0KLSAgfSk7Ci0gIGNvbnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcigpOwotCi0gIHJldHVybiBQ
cm9taXNlLmFsbChbCi0gICAgcmVhZGVyLnJlYWQoKS50aGVuKHIgPT4gewotICAgICAgYXNzZXJ0
X29iamVjdF9lcXVhbHMociwgeyB2YWx1ZTogJ2EnLCBkb25lOiBmYWxzZSB9LCAndGhlIGZpcnN0
IGNodW5rIHJlYWQgc2hvdWxkIGJlIGNvcnJlY3QnKTsKLSAgICB9KSwKLSAgICByZWFkZXIucmVh
ZCgpLnRoZW4ociA9PiB7Ci0gICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyLCB7IHZhbHVlOiAn
YScsIGRvbmU6IGZhbHNlIH0sICd0aGUgc2Vjb25kIGNodW5rIHJlYWQgc2hvdWxkIGJlIGNvcnJl
Y3QnKTsKLSAgICAgIGFzc2VydF9lcXVhbHMoY291bnRlciwgMSwgJ2NvdW50ZXIgc2hvdWxkIGJl
IDEnKTsKLSAgICB9KQotICBdKTsKLQotfSwgJ1VuZGVybHlpbmcgc291cmNlIHB1bGw6IHRocm93
aW5nIGdldHRlciAoc2Vjb25kIHB1bGwgZG9lcyBub3QgcmVzdWx0IGluIGEgc2Vjb25kIGdldCkn
KTsKLQotcHJvbWlzZV90ZXN0KHQgPT4gewotCi0gIGNvbnN0IHRoZUVycm9yID0gbmV3IEVycm9y
KCdhIHVuaXF1ZSBzdHJpbmcnKTsKLQotICBsZXQgY291bnRlciA9IDA7Ci0gIGNvbnN0IHJzID0g
bmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBwdWxsKGMpIHsKLSAgICAgICsrY291bnRlcjsKLSAg
ICAgIGlmIChjb3VudGVyID09PSAxKSB7Ci0gICAgICAgIGMuZW5xdWV1ZSgnYScpOwotICAgICAg
ICByZXR1cm47Ci0gICAgICB9Ci0KLSAgICAgIHRocm93IHRoZUVycm9yOwotICAgIH0KLSAgfSk7
Ci0gIGNvbnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcigpOwotCi0gIHJldHVybiBQcm9taXNlLmFs
bChbCi0gICAgcmVhZGVyLnJlYWQoKS50aGVuKHIgPT4gewotICAgICAgYXNzZXJ0X29iamVjdF9l
cXVhbHMociwgeyB2YWx1ZTogJ2EnLCBkb25lOiBmYWxzZSB9LCAndGhlIGNodW5rIHJlYWQgc2hv
dWxkIGJlIGNvcnJlY3QnKTsKLSAgICB9KSwKLSAgICBwcm9taXNlX3JlamVjdHModCwgdGhlRXJy
b3IsIHJlYWRlci5jbG9zZWQpCi0gIF0pOwotCi19LCAnVW5kZXJseWluZyBzb3VyY2UgcHVsbDog
dGhyb3dpbmcgbWV0aG9kIChzZWNvbmQgcHVsbCknKTsKLQotdGVzdCgoKSA9PiB7Ci0KLSAgY29u
c3QgdGhlRXJyb3IgPSBuZXcgRXJyb3IoJ2EgdW5pcXVlIHN0cmluZycpOwotICBhc3NlcnRfdGhy
b3dzKHRoZUVycm9yLCAoKSA9PiBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIGdldCBjYW5jZWwo
KSB7Ci0gICAgICB0aHJvdyB0aGVFcnJvcjsKLSAgICB9Ci0gIH0pLCAnY29uc3RydWN0b3Igc2hv
dWxkIHRocm93Jyk7Ci0KLX0sICdVbmRlcmx5aW5nIHNvdXJjZSBjYW5jZWw6IHRocm93aW5nIGdl
dHRlcicpOwotCi1wcm9taXNlX3Rlc3QodCA9PiB7Ci0KLSAgY29uc3QgdGhlRXJyb3IgPSBuZXcg
RXJyb3IoJ2EgdW5pcXVlIHN0cmluZycpOwotICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVh
bSh7Ci0gICAgY2FuY2VsKCkgewotICAgICAgdGhyb3cgdGhlRXJyb3I7Ci0gICAgfQotICB9KTsK
LQotICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHQsIHRoZUVycm9yLCBycy5jYW5jZWwoKSk7Ci0K
LX0sICdVbmRlcmx5aW5nIHNvdXJjZSBjYW5jZWw6IHRocm93aW5nIG1ldGhvZCcpOwotCi1wcm9t
aXNlX3Rlc3QoKCkgPT4gewotCi0gIGxldCBjb250cm9sbGVyOwotICBjb25zdCBycyA9IG5ldyBS
ZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgY29udHJvbGxlciA9IGM7Ci0g
ICAgfQotICB9KTsKLQotICBycy5jYW5jZWwoKTsKLSAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVy
cm9yKCksICgpID0+IGNvbnRyb2xsZXIuZW5xdWV1ZSgnYScpLCAnQ2FsbGluZyBlbnF1ZXVlIGFm
dGVyIGNhbmNlbGluZyBzaG91bGQgdGhyb3cnKTsKLQotICByZXR1cm4gcnMuZ2V0UmVhZGVyKCku
Y2xvc2VkOwotCi19LCAnVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgZW5xdWV1ZSBvbiBhbiBl
bXB0eSBjYW5jZWxlZCBzdHJlYW0gc2hvdWxkIHRocm93Jyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9
PiB7Ci0KLSAgbGV0IGNvbnRyb2xsZXI7Ci0gIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFt
KHsKLSAgICBzdGFydChjKSB7Ci0gICAgICBjLmVucXVldWUoJ2EnKTsKLSAgICAgIGMuZW5xdWV1
ZSgnYicpOwotICAgICAgY29udHJvbGxlciA9IGM7Ci0gICAgfQotICB9KTsKLQotICBycy5jYW5j
ZWwoKTsKLSAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IGNvbnRyb2xsZXIu
ZW5xdWV1ZSgnYycpLCAnQ2FsbGluZyBlbnF1ZXVlIGFmdGVyIGNhbmNlbGluZyBzaG91bGQgdGhy
b3cnKTsKLQotICByZXR1cm4gcnMuZ2V0UmVhZGVyKCkuY2xvc2VkOwotCi19LCAnVW5kZXJseWlu
ZyBzb3VyY2U6IGNhbGxpbmcgZW5xdWV1ZSBvbiBhIG5vbi1lbXB0eSBjYW5jZWxlZCBzdHJlYW0g
c2hvdWxkIHRocm93Jyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgcmV0dXJuIG5ldyBS
ZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgYy5jbG9zZSgpOwotICAgICAg
YXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IGMuZW5xdWV1ZSgnYScpLCAnY2Fs
bCB0byBlbnF1ZXVlIHNob3VsZCB0aHJvdyBhIFR5cGVFcnJvcicpOwotICAgIH0KLSAgfSkuZ2V0
UmVhZGVyKCkuY2xvc2VkOwotCi19LCAnVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgZW5xdWV1
ZSBvbiBhIGNsb3NlZCBzdHJlYW0gc2hvdWxkIHRocm93Jyk7Ci0KLXByb21pc2VfdGVzdCh0ID0+
IHsKLQotICBjb25zdCB0aGVFcnJvciA9IG5ldyBFcnJvcignYm9vJyk7Ci0gIGNvbnN0IGNsb3Nl
ZCA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgYy5lcnJvcih0
aGVFcnJvcik7Ci0gICAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gYy5l
bnF1ZXVlKCdhJyksICdjYWxsIHRvIGVucXVldWUgc2hvdWxkIHRocm93IHRoZSBlcnJvcicpOwot
ICAgIH0KLSAgfSkuZ2V0UmVhZGVyKCkuY2xvc2VkOwotCi0gIHJldHVybiBwcm9taXNlX3JlamVj
dHModCwgdGhlRXJyb3IsIGNsb3NlZCk7Ci0KLX0sICdVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGlu
ZyBlbnF1ZXVlIG9uIGFuIGVycm9yZWQgc3RyZWFtIHNob3VsZCB0aHJvdycpOwotCi1wcm9taXNl
X3Rlc3QoKCkgPT4gewotCi0gIHJldHVybiBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0
KGMpIHsKLSAgICAgIGMuY2xvc2UoKTsKLSAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJv
cigpLCAoKSA9PiBjLmNsb3NlKCksICdzZWNvbmQgY2FsbCB0byBjbG9zZSBzaG91bGQgdGhyb3cg
YSBUeXBlRXJyb3InKTsKLSAgICB9Ci0gIH0pLmdldFJlYWRlcigpLmNsb3NlZDsKLQotfSwgJ1Vu
ZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGNsb3NlIHR3aWNlIG9uIGFuIGVtcHR5IHN0cmVhbSBz
aG91bGQgdGhyb3cgdGhlIHNlY29uZCB0aW1lJyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0K
LSAgbGV0IHN0YXJ0Q2FsbGVkID0gZmFsc2U7Ci0gIGxldCByZWFkQ2FsbGVkID0gZmFsc2U7Ci0g
IGNvbnN0IHJlYWRlciA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAg
ICAgYy5lbnF1ZXVlKCdhJyk7Ci0gICAgICBjLmNsb3NlKCk7Ci0gICAgICBhc3NlcnRfdGhyb3dz
KG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gYy5jbG9zZSgpLCAnc2Vjb25kIGNhbGwgdG8gY2xvc2Ug
c2hvdWxkIHRocm93IGEgVHlwZUVycm9yJyk7Ci0gICAgICBzdGFydENhbGxlZCA9IHRydWU7Ci0g
ICAgfQotICB9KS5nZXRSZWFkZXIoKTsKLQotICByZXR1cm4gUHJvbWlzZS5hbGwoWwotICAgIHJl
YWRlci5yZWFkKCkudGhlbihyID0+IHsKLSAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHIsIHsg
dmFsdWU6ICdhJywgZG9uZTogZmFsc2UgfSwgJ3JlYWQoKSBzaG91bGQgcmVhZCB0aGUgZW5xdWV1
ZWQgY2h1bmsnKTsKLSAgICAgIHJlYWRDYWxsZWQgPSB0cnVlOwotICAgIH0pLAotICAgIHJlYWRl
ci5jbG9zZWQudGhlbigoKSA9PiB7Ci0gICAgICBhc3NlcnRfdHJ1ZShzdGFydENhbGxlZCk7Ci0g
ICAgICBhc3NlcnRfdHJ1ZShyZWFkQ2FsbGVkKTsKLSAgICB9KQotICBdKTsKLQotfSwgJ1VuZGVy
bHlpbmcgc291cmNlOiBjYWxsaW5nIGNsb3NlIHR3aWNlIG9uIGEgbm9uLWVtcHR5IHN0cmVhbSBz
aG91bGQgdGhyb3cgdGhlIHNlY29uZCB0aW1lJyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0K
LSAgbGV0IGNvbnRyb2xsZXI7Ci0gIGxldCBzdGFydENhbGxlZCA9IGZhbHNlOwotICBjb25zdCBy
cyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgY29udHJvbGxl
ciA9IGM7Ci0gICAgICBzdGFydENhbGxlZCA9IHRydWU7Ci0gICAgfQotICB9KTsKLQotICBycy5j
YW5jZWwoKTsKLSAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IGNvbnRyb2xs
ZXIuY2xvc2UoKSwgJ0NhbGxpbmcgY2xvc2UgYWZ0ZXIgY2FuY2VsaW5nIHNob3VsZCB0aHJvdycp
OwotCi0gIHJldHVybiBycy5nZXRSZWFkZXIoKS5jbG9zZWQudGhlbigoKSA9PiB7Ci0gICAgYXNz
ZXJ0X3RydWUoc3RhcnRDYWxsZWQpOwotICB9KTsKLQotfSwgJ1VuZGVybHlpbmcgc291cmNlOiBj
YWxsaW5nIGNsb3NlIG9uIGFuIGVtcHR5IGNhbmNlbGVkIHN0cmVhbSBzaG91bGQgdGhyb3cnKTsK
LQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLQotICBsZXQgY29udHJvbGxlcjsKLSAgbGV0IHN0YXJ0
Q2FsbGVkID0gZmFsc2U7Ci0gIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBz
dGFydChjKSB7Ci0gICAgICBjb250cm9sbGVyID0gYzsKLSAgICAgIGMuZW5xdWV1ZSgnYScpOwot
ICAgICAgc3RhcnRDYWxsZWQgPSB0cnVlOwotICAgIH0KLSAgfSk7Ci0KLSAgcnMuY2FuY2VsKCk7
Ci0gIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBjb250cm9sbGVyLmNsb3Nl
KCksICdDYWxsaW5nIGNsb3NlIGFmdGVyIGNhbmNlbGluZyBzaG91bGQgdGhyb3cnKTsKLQotICBy
ZXR1cm4gcnMuZ2V0UmVhZGVyKCkuY2xvc2VkLnRoZW4oKCkgPT4gewotICAgIGFzc2VydF90cnVl
KHN0YXJ0Q2FsbGVkKTsKLSAgfSk7Ci0KLX0sICdVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBj
bG9zZSBvbiBhIG5vbi1lbXB0eSBjYW5jZWxlZCBzdHJlYW0gc2hvdWxkIHRocm93Jyk7Ci0KLXBy
b21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgY29uc3QgdGhlRXJyb3IgPSBuZXcgRXJyb3IoJ2Jvbycp
OwotICBsZXQgc3RhcnRDYWxsZWQgPSBmYWxzZTsKLQotICBjb25zdCBjbG9zZWQgPSBuZXcgUmVh
ZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGMuZXJyb3IodGhlRXJyb3IpOwot
ICAgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IGMuY2xvc2UoKSwgJ2Nh
bGwgdG8gY2xvc2Ugc2hvdWxkIHRocm93IGEgVHlwZUVycm9yJyk7Ci0gICAgICBzdGFydENhbGxl
ZCA9IHRydWU7Ci0gICAgfQotICB9KS5nZXRSZWFkZXIoKS5jbG9zZWQ7Ci0KLSAgcmV0dXJuIGNs
b3NlZC5jYXRjaChlID0+IHsKLSAgICBhc3NlcnRfdHJ1ZShzdGFydENhbGxlZCk7Ci0gICAgYXNz
ZXJ0X2VxdWFscyhlLCB0aGVFcnJvciwgJ2Nsb3NlZCBzaG91bGQgcmVqZWN0IHdpdGggdGhlIGVy
cm9yJyk7Ci0gIH0pOwotCi19LCAnVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgY2xvc2UgYWZ0
ZXIgZXJyb3Igc2hvdWxkIHRocm93Jyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgY29u
c3QgdGhlRXJyb3IgPSBuZXcgRXJyb3IoJ2JvbycpOwotICBsZXQgc3RhcnRDYWxsZWQgPSBmYWxz
ZTsKLQotICBjb25zdCBjbG9zZWQgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMp
IHsKLSAgICAgIGMuZXJyb3IodGhlRXJyb3IpOwotICAgICAgYy5lcnJvcigpOwotICAgICAgc3Rh
cnRDYWxsZWQgPSB0cnVlOwotICAgIH0KLSAgfSkuZ2V0UmVhZGVyKCkuY2xvc2VkOwotCi0gIHJl
dHVybiBjbG9zZWQuY2F0Y2goZSA9PiB7Ci0gICAgYXNzZXJ0X3RydWUoc3RhcnRDYWxsZWQpOwot
ICAgIGFzc2VydF9lcXVhbHMoZSwgdGhlRXJyb3IsICdjbG9zZWQgc2hvdWxkIHJlamVjdCB3aXRo
IHRoZSBlcnJvcicpOwotICB9KTsKLQotfSwgJ1VuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGVy
cm9yIHR3aWNlIHNob3VsZCBub3QgdGhyb3cnKTsKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLQot
ICBsZXQgc3RhcnRDYWxsZWQgPSBmYWxzZTsKLQotICBjb25zdCBjbG9zZWQgPSBuZXcgUmVhZGFi
bGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGMuY2xvc2UoKTsKLSAgICAgIGMuZXJy
b3IoKTsKLSAgICAgIHN0YXJ0Q2FsbGVkID0gdHJ1ZTsKLSAgICB9Ci0gIH0pLmdldFJlYWRlcigp
LmNsb3NlZDsKLQotICByZXR1cm4gY2xvc2VkLnRoZW4oKCkgPT4gYXNzZXJ0X3RydWUoc3RhcnRD
YWxsZWQpKTsKLQotfSwgJ1VuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGVycm9yIGFmdGVyIGNs
b3NlIHNob3VsZCBub3QgdGhyb3cnKTsKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLQotICBsZXQg
c3RhcnRDYWxsZWQgPSBmYWxzZTsKLSAgY29uc3QgZmlyc3RFcnJvciA9IG5ldyBFcnJvcignMScp
OwotICBjb25zdCBzZWNvbmRFcnJvciA9IG5ldyBFcnJvcignMicpOwotCi0gIGNvbnN0IGNsb3Nl
ZCA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgYy5lcnJvcihm
aXJzdEVycm9yKTsKLSAgICAgIHN0YXJ0Q2FsbGVkID0gdHJ1ZTsKLSAgICAgIHJldHVybiBQcm9t
aXNlLnJlamVjdChzZWNvbmRFcnJvcik7Ci0gICAgfQotICB9KS5nZXRSZWFkZXIoKS5jbG9zZWQ7
Ci0KLSAgcmV0dXJuIGNsb3NlZC5jYXRjaChlID0+IHsKLSAgICBhc3NlcnRfdHJ1ZShzdGFydENh
bGxlZCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhlLCBmaXJzdEVycm9yLCAnY2xvc2VkIHNob3VsZCBy
ZWplY3Qgd2l0aCB0aGUgZmlyc3QgZXJyb3InKTsKLSAgfSk7Ci0KLX0sICdVbmRlcmx5aW5nIHNv
dXJjZTogY2FsbGluZyBlcnJvciBhbmQgcmV0dXJuaW5nIGEgcmVqZWN0ZWQgcHJvbWlzZSBmcm9t
IHN0YXJ0IHNob3VsZCBjYXVzZSB0aGUgc3RyZWFtIHRvIGVycm9yICcgKwotICAgJ3dpdGggdGhl
IGZpcnN0IGVycm9yJyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgbGV0IHN0YXJ0Q2Fs
bGVkID0gZmFsc2U7Ci0gIGNvbnN0IGZpcnN0RXJyb3IgPSBuZXcgRXJyb3IoJzEnKTsKLSAgY29u
c3Qgc2Vjb25kRXJyb3IgPSBuZXcgRXJyb3IoJzInKTsKLQotICBjb25zdCBjbG9zZWQgPSBuZXcg
UmVhZGFibGVTdHJlYW0oewotICAgIHB1bGwoYykgewotICAgICAgYy5lcnJvcihmaXJzdEVycm9y
KTsKLSAgICAgIHN0YXJ0Q2FsbGVkID0gdHJ1ZTsKLSAgICAgIHJldHVybiBQcm9taXNlLnJlamVj
dChzZWNvbmRFcnJvcik7Ci0gICAgfQotICB9KS5nZXRSZWFkZXIoKS5jbG9zZWQ7Ci0KLSAgcmV0
dXJuIGNsb3NlZC5jYXRjaChlID0+IHsKLSAgICBhc3NlcnRfdHJ1ZShzdGFydENhbGxlZCk7Ci0g
ICAgYXNzZXJ0X2VxdWFscyhlLCBmaXJzdEVycm9yLCAnY2xvc2VkIHNob3VsZCByZWplY3Qgd2l0
aCB0aGUgZmlyc3QgZXJyb3InKTsKLSAgfSk7Ci0KLX0sICdVbmRlcmx5aW5nIHNvdXJjZTogY2Fs
bGluZyBlcnJvciBhbmQgcmV0dXJuaW5nIGEgcmVqZWN0ZWQgcHJvbWlzZSBmcm9tIHB1bGwgc2hv
dWxkIGNhdXNlIHRoZSBzdHJlYW0gdG8gZXJyb3IgJyArCi0gICAnd2l0aCB0aGUgZmlyc3QgZXJy
b3InKTsKLQotY29uc3QgZXJyb3IxID0geyBuYW1lOiAnZXJyb3IxJyB9OwotCi1wcm9taXNlX3Rl
c3QodCA9PiB7Ci0KLSAgbGV0IHB1bGxTaG91bGRUaHJvdyA9IGZhbHNlOwotICBjb25zdCBycyA9
IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgcHVsbChjb250cm9sbGVyKSB7Ci0gICAgICBpZiAo
cHVsbFNob3VsZFRocm93KSB7Ci0gICAgICAgIHRocm93IGVycm9yMTsKLSAgICAgIH0KLSAgICAg
IGNvbnRyb2xsZXIuZW5xdWV1ZSgwKTsKLSAgICB9Ci0gIH0sIG5ldyBDb3VudFF1ZXVpbmdTdHJh
dGVneSh7aGlnaFdhdGVyTWFyazogMX0pKTsKLSAgY29uc3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVy
KCk7Ci0gIHJldHVybiBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHsKLSAgICBwdWxsU2hv
dWxkVGhyb3cgPSB0cnVlOwotICAgIHJldHVybiBQcm9taXNlLmFsbChbCi0gICAgICByZWFkZXIu
cmVhZCgpLAotICAgICAgcHJvbWlzZV9yZWplY3RzKHQsIGVycm9yMSwgcmVhZGVyLmNsb3NlZCwg
Jy5jbG9zZWQgcHJvbWlzZSBzaG91bGQgcmVqZWN0JykKLSAgICBdKTsKLSAgfSk7Ci0KLX0sICdy
ZWFkIHNob3VsZCBub3QgZXJyb3IgaWYgaXQgZGVxdWV1ZXMgYW5kIHB1bGwoKSB0aHJvd3MnKTsK
LQotZG9uZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvYmFkLXVuZGVybHlpbmctc291cmNl
cy5zZXJ2aWNld29ya2VyLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2JhZC11bmRl
cmx5aW5nLXNvdXJjZXMuc2VydmljZXdvcmtlci5odHRwcy1leHBlY3RlZC50eHQKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY2YzZhNTRhYTE4ZWU5NjM4MjFhYzQ5NzY2OGZmNTZiNmIw
NjZjMjMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxl
LXN0cmVhbXMvYmFkLXVuZGVybHlpbmctc291cmNlcy5zZXJ2aWNld29ya2VyLmh0dHBzLWV4cGVj
dGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLQotUEFTUyBTZXJ2aWNlIHdv
cmtlciB0ZXN0IHNldHVwIAotUEFTUyBVbmRlcmx5aW5nIHNvdXJjZSBzdGFydDogdGhyb3dpbmcg
Z2V0dGVyIAotUEFTUyBVbmRlcmx5aW5nIHNvdXJjZSBzdGFydDogdGhyb3dpbmcgbWV0aG9kIAot
UEFTUyBVbmRlcmx5aW5nIHNvdXJjZTogdGhyb3dpbmcgcHVsbCBnZXR0ZXIgKGluaXRpYWwgcHVs
bCkgCi1QQVNTIFVuZGVybHlpbmcgc291cmNlOiB0aHJvd2luZyBwdWxsIG1ldGhvZCAoaW5pdGlh
bCBwdWxsKSAKLVBBU1MgVW5kZXJseWluZyBzb3VyY2UgcHVsbDogdGhyb3dpbmcgZ2V0dGVyIChz
ZWNvbmQgcHVsbCBkb2VzIG5vdCByZXN1bHQgaW4gYSBzZWNvbmQgZ2V0KSAKLVBBU1MgVW5kZXJs
eWluZyBzb3VyY2UgcHVsbDogdGhyb3dpbmcgbWV0aG9kIChzZWNvbmQgcHVsbCkgCi1QQVNTIFVu
ZGVybHlpbmcgc291cmNlIGNhbmNlbDogdGhyb3dpbmcgZ2V0dGVyIAotUEFTUyBVbmRlcmx5aW5n
IHNvdXJjZSBjYW5jZWw6IHRocm93aW5nIG1ldGhvZCAKLVBBU1MgVW5kZXJseWluZyBzb3VyY2U6
IGNhbGxpbmcgZW5xdWV1ZSBvbiBhbiBlbXB0eSBjYW5jZWxlZCBzdHJlYW0gc2hvdWxkIHRocm93
IAotUEFTUyBVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBlbnF1ZXVlIG9uIGEgbm9uLWVtcHR5
IGNhbmNlbGVkIHN0cmVhbSBzaG91bGQgdGhyb3cgCi1QQVNTIFVuZGVybHlpbmcgc291cmNlOiBj
YWxsaW5nIGVucXVldWUgb24gYSBjbG9zZWQgc3RyZWFtIHNob3VsZCB0aHJvdyAKLVBBU1MgVW5k
ZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgZW5xdWV1ZSBvbiBhbiBlcnJvcmVkIHN0cmVhbSBzaG91
bGQgdGhyb3cgCi1QQVNTIFVuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGNsb3NlIHR3aWNlIG9u
IGFuIGVtcHR5IHN0cmVhbSBzaG91bGQgdGhyb3cgdGhlIHNlY29uZCB0aW1lIAotUEFTUyBVbmRl
cmx5aW5nIHNvdXJjZTogY2FsbGluZyBjbG9zZSB0d2ljZSBvbiBhIG5vbi1lbXB0eSBzdHJlYW0g
c2hvdWxkIHRocm93IHRoZSBzZWNvbmQgdGltZSAKLVBBU1MgVW5kZXJseWluZyBzb3VyY2U6IGNh
bGxpbmcgY2xvc2Ugb24gYW4gZW1wdHkgY2FuY2VsZWQgc3RyZWFtIHNob3VsZCB0aHJvdyAKLVBB
U1MgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgY2xvc2Ugb24gYSBub24tZW1wdHkgY2FuY2Vs
ZWQgc3RyZWFtIHNob3VsZCB0aHJvdyAKLVBBU1MgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcg
Y2xvc2UgYWZ0ZXIgZXJyb3Igc2hvdWxkIHRocm93IAotUEFTUyBVbmRlcmx5aW5nIHNvdXJjZTog
Y2FsbGluZyBlcnJvciB0d2ljZSBzaG91bGQgbm90IHRocm93IAotUEFTUyBVbmRlcmx5aW5nIHNv
dXJjZTogY2FsbGluZyBlcnJvciBhZnRlciBjbG9zZSBzaG91bGQgbm90IHRocm93IAotUEFTUyBV
bmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBlcnJvciBhbmQgcmV0dXJuaW5nIGEgcmVqZWN0ZWQg
cHJvbWlzZSBmcm9tIHN0YXJ0IHNob3VsZCBjYXVzZSB0aGUgc3RyZWFtIHRvIGVycm9yIHdpdGgg
dGhlIGZpcnN0IGVycm9yIAotUEFTUyBVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBlcnJvciBh
bmQgcmV0dXJuaW5nIGEgcmVqZWN0ZWQgcHJvbWlzZSBmcm9tIHB1bGwgc2hvdWxkIGNhdXNlIHRo
ZSBzdHJlYW0gdG8gZXJyb3Igd2l0aCB0aGUgZmlyc3QgZXJyb3IgCi1QQVNTIHJlYWQgc2hvdWxk
IG5vdCBlcnJvciBpZiBpdCBkZXF1ZXVlcyBhbmQgcHVsbCgpIHRocm93cyAKLQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3Jl
YWRhYmxlLXN0cmVhbXMvYmFkLXVuZGVybHlpbmctc291cmNlcy5zZXJ2aWNld29ya2VyLmh0dHBz
Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvcmVhZGFibGUtc3RyZWFtcy9iYWQtdW5kZXJseWluZy1zb3VyY2VzLnNlcnZpY2V3b3JrZXIu
aHR0cHMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGZlZGNhYjk0NTA4MGQ0
YjFmNTAyY2Y3NTJmYzM3ZDkwZjU5N2RhMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9iYWQtdW5kZXJseWluZy1zb3VyY2VzLnNlcnZp
Y2V3b3JrZXIuaHR0cHMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLTwhRE9D
VFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHRpdGxlPmJhZC11bmRlcmx5aW5n
LXNvdXJjZXMuanMgc2VydmljZSB3b3JrZXIgd3JhcHBlciBmaWxlPC90aXRsZT4KLQotPHNjcmlw
dCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9
Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9
Ii9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvcmVzb3VyY2VzL3Rlc3QtaGVscGVycy5z
dWIuanMiPjwvc2NyaXB0PgotCi08c2NyaXB0PgotJ3VzZSBzdHJpY3QnOwotc2VydmljZV93b3Jr
ZXJfdGVzdCgnYmFkLXVuZGVybHlpbmctc291cmNlcy5qcycsICdTZXJ2aWNlIHdvcmtlciB0ZXN0
IHNldHVwJyk7Ci08L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2JhZC11bmRlcmx5
aW5nLXNvdXJjZXMuc2hhcmVkd29ya2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2JhZC11
bmRlcmx5aW5nLXNvdXJjZXMuc2hhcmVkd29ya2VyLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDlkNWQyNTA5ZDc4NDdlOGNkNmZlNjYwNmFhNjBjZGQzM2FhNDc0
ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3Ry
ZWFtcy9iYWQtdW5kZXJseWluZy1zb3VyY2VzLnNoYXJlZHdvcmtlci1leHBlY3RlZC50eHQKKysr
IC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLUNPTlNPTEUgTUVTU0FHRTogUmVmZXJlbmNlRXJy
b3I6IENhbid0IGZpbmQgdmFyaWFibGU6IFNoYXJlZFdvcmtlcgotCi1IYXJuZXNzIEVycm9yIChG
QUlMKSwgbWVzc2FnZSA9IFJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBTaGFy
ZWRXb3JrZXIKLQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9iYWQtdW5kZXJseWluZy1zb3Vy
Y2VzLnNoYXJlZHdvcmtlci5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvYmFkLXVuZGVybHlpbmctc291cmNl
cy5zaGFyZWR3b3JrZXIuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjU4NmM1
NWM1NGY4OTY3YmEwNDlmY2RhNDhhZjUyNWNlZjk1ZmMyMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9iYWQtdW5kZXJseWluZy1zb3Vy
Y2VzLnNoYXJlZHdvcmtlci5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotPCFE
T0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08dGl0bGU+YmFkLXVuZGVybHlp
bmctc291cmNlcy5qcyBzaGFyZWQgd29ya2VyIHdyYXBwZXIgZmlsZTwvdGl0bGU+Ci0KLTxzY3Jp
cHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3Jj
PSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLQotPHNjcmlwdD4K
LSd1c2Ugc3RyaWN0JzsKLWZldGNoX3Rlc3RzX2Zyb21fd29ya2VyKG5ldyBTaGFyZWRXb3JrZXIo
J2JhZC11bmRlcmx5aW5nLXNvdXJjZXMuanMnKSk7Ci08L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJs
ZS1zdHJlYW1zL2JyYW5kLWNoZWNrcy5kZWRpY2F0ZWR3b3JrZXItZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxl
LXN0cmVhbXMvYnJhbmQtY2hlY2tzLmRlZGljYXRlZHdvcmtlci1leHBlY3RlZC50eHQKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdkN2I2ZWY5OTJhODE1ZjkyOTBjN2MxNjZkNzc5ZDRh
OGUwZWU1ZTEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRh
YmxlLXN0cmVhbXMvYnJhbmQtY2hlY2tzLmRlZGljYXRlZHdvcmtlci1leHBlY3RlZC50eHQKKysr
IC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi0KLVBBU1MgQ2FuIGdldCB0aGUgUmVhZGFibGVT
dHJlYW1EZWZhdWx0UmVhZGVyIGNvbnN0cnVjdG9yIGluZGlyZWN0bHkgCi1QQVNTIENhbiBnZXQg
dGhlIFJlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIgY29uc3RydWN0b3IgaW5kaXJlY3Rs
eSAKLVBBU1MgUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLmNhbmNlbCBlbmZvcmNlcyBhIGJyYW5k
IGNoZWNrIAotUEFTUyBSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUuZ2V0UmVhZGVyIGVuZm9yY2Vz
IGEgYnJhbmQgY2hlY2sgCi1QQVNTIFJlYWRhYmxlU3RyZWFtLnByb3RvdHlwZS50ZWUgZW5mb3Jj
ZXMgYSBicmFuZCBjaGVjayAKLVBBU1MgUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyIGVuZm9y
Y2VzIGEgYnJhbmQgY2hlY2sgb24gaXRzIGFyZ3VtZW50IAotUEFTUyBSZWFkYWJsZVN0cmVhbURl
ZmF1bHRSZWFkZXIucHJvdG90eXBlLmNsb3NlZCBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrIAotUEFT
UyBSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIucHJvdG90eXBlLmNhbmNlbCBlbmZvcmNlcyBh
IGJyYW5kIGNoZWNrIAotUEFTUyBSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIucHJvdG90eXBl
LnJlYWQgZW5mb3JjZXMgYSBicmFuZCBjaGVjayAKLVBBU1MgUmVhZGFibGVTdHJlYW1EZWZhdWx0
UmVhZGVyLnByb3RvdHlwZS5yZWxlYXNlTG9jayBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrIAotUEFT
UyBSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2sg
b24gaXRzIGFyZ3VtZW50IAotUEFTUyBSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyIGNh
bid0IGJlIGdpdmVuIGEgZnVsbHktY29uc3RydWN0ZWQgUmVhZGFibGVTdHJlYW0gCi1QQVNTIFJl
YWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIucHJvdG90eXBlLmNsb3NlIGVuZm9yY2VzIGEg
YnJhbmQgY2hlY2sgCi1QQVNTIFJlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIucHJvdG90
eXBlLmVucXVldWUgZW5mb3JjZXMgYSBicmFuZCBjaGVjayAKLVBBU1MgUmVhZGFibGVTdHJlYW1E
ZWZhdWx0Q29udHJvbGxlci5wcm90b3R5cGUuZXJyb3IgZW5mb3JjZXMgYSBicmFuZCBjaGVjayAK
LQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvYnJhbmQtY2hlY2tzLmRlZGljYXRlZHdvcmtlci5o
dG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
L3JlYWRhYmxlLXN0cmVhbXMvYnJhbmQtY2hlY2tzLmRlZGljYXRlZHdvcmtlci5odG1sCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYjNmMTFhOTBlMjgxYjk2YWFiNDY5NWQ3Y2FiMDRj
YzQzNmU4ZjA3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFk
YWJsZS1zdHJlYW1zL2JyYW5kLWNoZWNrcy5kZWRpY2F0ZWR3b3JrZXIuaHRtbAorKysgL2Rldi9u
dWxsCkBAIC0xLDExICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRm
LTgiPgotPHRpdGxlPmJyYW5kLWNoZWNrcy5qcyBkZWRpY2F0ZWQgd29ya2VyIHdyYXBwZXIgZmls
ZTwvdGl0bGU+Ci0KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3Nj
cmlwdD4KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3Nj
cmlwdD4KLQotPHNjcmlwdD4KLSd1c2Ugc3RyaWN0JzsKLWZldGNoX3Rlc3RzX2Zyb21fd29ya2Vy
KG5ldyBXb3JrZXIoJ2JyYW5kLWNoZWNrcy5qcycpKTsKLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRh
YmxlLXN0cmVhbXMvYnJhbmQtY2hlY2tzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9icmFuZC1jaGVja3Mu
aHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOThkMmUyODFmZmFmNmYwYjQwNDZi
MzAyOTZiMmQwOWZiMWYzZGU5Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9icmFuZC1jaGVja3MuaHRtbAorKysgL2Rldi9udWxsCkBA
IC0xLDEwICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgot
PHRpdGxlPmJyYW5kLWNoZWNrcy5qcyBicm93c2VyIGNvbnRleHQgd3JhcHBlciBmaWxlPC90aXRs
ZT4KLQotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0Pgot
PHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0Pgot
Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgotCi08
c2NyaXB0IHNyYz0iYnJhbmQtY2hlY2tzLmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1z
dHJlYW1zL2JyYW5kLWNoZWNrcy5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2JyYW5kLWNoZWNrcy5qcwpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWIzOWQxYWQ2NjE2Y2M2NjQ1ZTBjNjIwMzkxNzBl
NmViZDQyODY3OS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVh
ZGFibGUtc3RyZWFtcy9icmFuZC1jaGVja3MuanMKKysrIC9kZXYvbnVsbApAQCAtMSwxNjQgKzAs
MCBAQAotJ3VzZSBzdHJpY3QnOwotCi1pZiAoc2VsZi5pbXBvcnRTY3JpcHRzKSB7Ci0gIHNlbGYu
aW1wb3J0U2NyaXB0cygnLi4vcmVzb3VyY2VzL3Rlc3QtdXRpbHMuanMnKTsKLSAgc2VsZi5pbXBv
cnRTY3JpcHRzKCcvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzJyk7Ci19Ci0KLWxldCBSZWFkYWJs
ZVN0cmVhbURlZmF1bHRSZWFkZXI7Ci1sZXQgUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxl
cjsKLQotdGVzdCgoKSA9PiB7Ci0KLSAgLy8gSXQncyBub3QgZXhwb3NlZCBnbG9iYWxseSwgYnV0
IHdlIHRlc3QgYSBmZXcgb2YgaXRzIHByb3BlcnRpZXMgaGVyZS4KLSAgUmVhZGFibGVTdHJlYW1E
ZWZhdWx0UmVhZGVyID0gKG5ldyBSZWFkYWJsZVN0cmVhbSgpKS5nZXRSZWFkZXIoKS5jb25zdHJ1
Y3RvcjsKLQotfSwgJ0NhbiBnZXQgdGhlIFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlciBjb25z
dHJ1Y3RvciBpbmRpcmVjdGx5Jyk7Ci0KLXRlc3QoKCkgPT4gewotCi0gIC8vIEl0J3Mgbm90IGV4
cG9zZWQgZ2xvYmFsbHksIGJ1dCB3ZSB0ZXN0IGEgZmV3IG9mIGl0cyBwcm9wZXJ0aWVzIGhlcmUu
Ci0gIG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgUmVhZGFibGVT
dHJlYW1EZWZhdWx0Q29udHJvbGxlciA9IGMuY29uc3RydWN0b3I7Ci0gICAgfQotICB9KTsKLQot
fSwgJ0NhbiBnZXQgdGhlIFJlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIgY29uc3RydWN0
b3IgaW5kaXJlY3RseScpOwotCi1mdW5jdGlvbiBmYWtlUlMoKSB7Ci0gIHJldHVybiBPYmplY3Qu
c2V0UHJvdG90eXBlT2YoewotICAgIGNhbmNlbCgpIHsgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgp
OyB9LAotICAgIGdldFJlYWRlcigpIHsgcmV0dXJuIG5ldyBSZWFkYWJsZVN0cmVhbURlZmF1bHRS
ZWFkZXIobmV3IFJlYWRhYmxlU3RyZWFtKCkpOyB9LAotICAgIHBpcGVUaHJvdWdoKG9iaikgeyBy
ZXR1cm4gb2JqLnJlYWRhYmxlOyB9LAotICAgIHBpcGVUbygpIHsgcmV0dXJuIFByb21pc2UucmVz
b2x2ZSgpOyB9LAotICAgIHRlZSgpIHsgcmV0dXJuIFtyZWFsUlMoKSwgcmVhbFJTKCldOyB9Ci0g
IH0sIFJlYWRhYmxlU3RyZWFtLnByb3RvdHlwZSk7Ci19Ci0KLWZ1bmN0aW9uIHJlYWxSUygpIHsK
LSAgcmV0dXJuIG5ldyBSZWFkYWJsZVN0cmVhbSgpOwotfQotCi1mdW5jdGlvbiBmYWtlUlNEZWZh
dWx0UmVhZGVyKCkgewotICByZXR1cm4gT2JqZWN0LnNldFByb3RvdHlwZU9mKHsKLSAgICBnZXQg
Y2xvc2VkKCkgeyByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7IH0sCi0gICAgY2FuY2VsKCkgeyBy
ZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7IH0sCi0gICAgcmVhZCgpIHsgcmV0dXJuIFByb21pc2Uu
cmVzb2x2ZSh7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSk7IH0sCi0gICAgcmVsZWFz
ZUxvY2soKSB7IHJldHVybjsgfQotICB9LCBSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIucHJv
dG90eXBlKTsKLX0KLQotZnVuY3Rpb24gcmVhbFJTRGVmYXVsdFJlYWRlcigpIHsKLSAgcmV0dXJu
IG5ldyBSZWFkYWJsZVN0cmVhbSgpLmdldFJlYWRlcigpOwotfQotCi1mdW5jdGlvbiBmYWtlUlNE
ZWZhdWx0Q29udHJvbGxlcigpIHsKLSAgcmV0dXJuIE9iamVjdC5zZXRQcm90b3R5cGVPZih7Ci0g
ICAgY2xvc2UoKSB7IH0sCi0gICAgZW5xdWV1ZSgpIHsgfSwKLSAgICBlcnJvcigpIHsgfQotICB9
LCBSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLnByb3RvdHlwZSk7Ci19Ci0KLWZ1bmN0
aW9uIHJlYWxSU0RlZmF1bHRDb250cm9sbGVyKCkgewotICBsZXQgY29udHJvbGxlcjsKLSAgbmV3
IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0gICAgICBjb250cm9sbGVyID0gYzsK
LSAgICB9Ci0gIH0pOwotICByZXR1cm4gY29udHJvbGxlcjsKLX0KLQotcHJvbWlzZV90ZXN0KHQg
PT4gewotCi0gIHJldHVybiBtZXRob2RSZWplY3RzRm9yQWxsKHQsIFJlYWRhYmxlU3RyZWFtLnBy
b3RvdHlwZSwgJ2NhbmNlbCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmYWtlUlMo
KSwgcmVhbFJTRGVmYXVsdFJlYWRlcigpLCByZWFsUlNEZWZhdWx0Q29udHJvbGxlcigpLCB1bmRl
ZmluZWQsIG51bGxdKTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtLnByb3RvdHlwZS5jYW5jZWwgZW5m
b3JjZXMgYSBicmFuZCBjaGVjaycpOwotCi10ZXN0KCgpID0+IHsKLQotICBtZXRob2RUaHJvd3NG
b3JBbGwoUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLCAnZ2V0UmVhZGVyJywKLSAgICAgICAgICAg
ICAgICAgICAgIFtmYWtlUlMoKSwgcmVhbFJTRGVmYXVsdFJlYWRlcigpLCByZWFsUlNEZWZhdWx0
Q29udHJvbGxlcigpLCB1bmRlZmluZWQsIG51bGxdKTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtLnBy
b3RvdHlwZS5nZXRSZWFkZXIgZW5mb3JjZXMgYSBicmFuZCBjaGVjaycpOwotCi10ZXN0KCgpID0+
IHsKLQotICBtZXRob2RUaHJvd3NGb3JBbGwoUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLCAndGVl
JywgW2Zha2VSUygpLCByZWFsUlNEZWZhdWx0UmVhZGVyKCksIHJlYWxSU0RlZmF1bHRDb250cm9s
bGVyKCksIHVuZGVmaW5lZCwgbnVsbF0pOwotCi19LCAnUmVhZGFibGVTdHJlYW0ucHJvdG90eXBl
LnRlZSBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrJyk7Ci0KLXRlc3QoKCkgPT4gewotCi0gIGFzc2Vy
dF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBuZXcgUmVhZGFibGVTdHJlYW1EZWZhdWx0
UmVhZGVyKGZha2VSUygpKSwKLSAgICAgICAgICAgICAgICAnQ29uc3RydWN0aW5nIGEgUmVhZGFi
bGVTdHJlYW1EZWZhdWx0UmVhZGVyIHNob3VsZCB0aHJvdycpOwotCi19LCAnUmVhZGFibGVTdHJl
YW1EZWZhdWx0UmVhZGVyIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2sgb24gaXRzIGFyZ3VtZW50Jyk7
Ci0KLXByb21pc2VfdGVzdCh0ID0+IHsKLQotICByZXR1cm4gZ2V0dGVyUmVqZWN0c0ZvckFsbCh0
LCBSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIucHJvdG90eXBlLCAnY2xvc2VkJywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgW2Zha2VSU0RlZmF1bHRSZWFkZXIoKSwgcmVhbFJTKCks
IHJlYWxSU0RlZmF1bHRDb250cm9sbGVyKCksIHVuZGVmaW5lZCwgbnVsbF0pOwotCi19LCAnUmVh
ZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyLnByb3RvdHlwZS5jbG9zZWQgZW5mb3JjZXMgYSBicmFu
ZCBjaGVjaycpOwotCi1wcm9taXNlX3Rlc3QodCA9PiB7Ci0KLSAgcmV0dXJuIG1ldGhvZFJlamVj
dHNGb3JBbGwodCwgUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyLnByb3RvdHlwZSwgJ2NhbmNl
bCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmYWtlUlNEZWZhdWx0UmVhZGVyKCks
IHJlYWxSUygpLCByZWFsUlNEZWZhdWx0Q29udHJvbGxlcigpLCB1bmRlZmluZWQsIG51bGxdKTsK
LQotfSwgJ1JlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlci5wcm90b3R5cGUuY2FuY2VsIGVuZm9y
Y2VzIGEgYnJhbmQgY2hlY2snKTsKLQotcHJvbWlzZV90ZXN0KHQgPT4gewotCi0gIHJldHVybiBt
ZXRob2RSZWplY3RzRm9yQWxsKHQsIFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlci5wcm90b3R5
cGUsICdyZWFkJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zha2VSU0RlZmF1bHRS
ZWFkZXIoKSwgcmVhbFJTKCksIHJlYWxSU0RlZmF1bHRDb250cm9sbGVyKCksIHVuZGVmaW5lZCwg
bnVsbF0pOwotCi19LCAnUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyLnByb3RvdHlwZS5yZWFk
IGVuZm9yY2VzIGEgYnJhbmQgY2hlY2snKTsKLQotdGVzdCgoKSA9PiB7Ci0KLSAgbWV0aG9kVGhy
b3dzRm9yQWxsKFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlci5wcm90b3R5cGUsICdyZWxlYXNl
TG9jaycsCi0gICAgICAgICAgICAgICAgICAgICBbZmFrZVJTRGVmYXVsdFJlYWRlcigpLCByZWFs
UlMoKSwgcmVhbFJTRGVmYXVsdENvbnRyb2xsZXIoKSwgdW5kZWZpbmVkLCBudWxsXSk7Ci0KLX0s
ICdSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIucHJvdG90eXBlLnJlbGVhc2VMb2NrIGVuZm9y
Y2VzIGEgYnJhbmQgY2hlY2snKTsKLQotdGVzdCgoKSA9PiB7Ci0KLSAgYXNzZXJ0X3Rocm93cyhu
ZXcgVHlwZUVycm9yKCksICgpID0+IG5ldyBSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVy
KGZha2VSUygpKSwKLSAgICAgICAgICAgICAgICAnQ29uc3RydWN0aW5nIGEgUmVhZGFibGVTdHJl
YW1EZWZhdWx0Q29udHJvbGxlciBzaG91bGQgdGhyb3cnKTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFt
RGVmYXVsdENvbnRyb2xsZXIgZW5mb3JjZXMgYSBicmFuZCBjaGVjayBvbiBpdHMgYXJndW1lbnQn
KTsKLQotdGVzdCgoKSA9PiB7Ci0KLSAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgp
ID0+IG5ldyBSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyKHJlYWxSUygpKSwKLSAgICAg
ICAgICAgICAgICAnQ29uc3RydWN0aW5nIGEgUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxl
ciBzaG91bGQgdGhyb3cnKTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIg
Y2FuXCd0IGJlIGdpdmVuIGEgZnVsbHktY29uc3RydWN0ZWQgUmVhZGFibGVTdHJlYW0nKTsKLQot
dGVzdCgoKSA9PiB7Ci0KLSAgbWV0aG9kVGhyb3dzRm9yQWxsKFJlYWRhYmxlU3RyZWFtRGVmYXVs
dENvbnRyb2xsZXIucHJvdG90eXBlLCAnY2xvc2UnLAotICAgICAgICAgICAgICAgICAgICAgW2Zh
a2VSU0RlZmF1bHRDb250cm9sbGVyKCksIHJlYWxSUygpLCByZWFsUlNEZWZhdWx0UmVhZGVyKCks
IHVuZGVmaW5lZCwgbnVsbF0pOwotCi19LCAnUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxl
ci5wcm90b3R5cGUuY2xvc2UgZW5mb3JjZXMgYSBicmFuZCBjaGVjaycpOwotCi10ZXN0KCgpID0+
IHsKLQotICBtZXRob2RUaHJvd3NGb3JBbGwoUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxl
ci5wcm90b3R5cGUsICdlbnF1ZXVlJywKLSAgICAgICAgICAgICAgICAgICAgIFtmYWtlUlNEZWZh
dWx0Q29udHJvbGxlcigpLCByZWFsUlMoKSwgcmVhbFJTRGVmYXVsdFJlYWRlcigpLCB1bmRlZmlu
ZWQsIG51bGxdKTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIucHJvdG90
eXBlLmVucXVldWUgZW5mb3JjZXMgYSBicmFuZCBjaGVjaycpOwotCi10ZXN0KCgpID0+IHsKLQot
ICBtZXRob2RUaHJvd3NGb3JBbGwoUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5wcm90
b3R5cGUsICdlcnJvcicsCi0gICAgICAgICAgICAgICAgICAgICBbZmFrZVJTRGVmYXVsdENvbnRy
b2xsZXIoKSwgcmVhbFJTKCksIHJlYWxSU0RlZmF1bHRSZWFkZXIoKSwgdW5kZWZpbmVkLCBudWxs
XSk7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLnByb3RvdHlwZS5lcnJv
ciBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrJyk7Ci0KLWRvbmUoKTsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1z
dHJlYW1zL2JyYW5kLWNoZWNrcy5zZXJ2aWNld29ya2VyLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJs
ZS1zdHJlYW1zL2JyYW5kLWNoZWNrcy5zZXJ2aWNld29ya2VyLmh0dHBzLWV4cGVjdGVkLnR4dApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzlhOGUxMjhjMmY2MDEwNWFhMDY4NjdjM2Nl
ZWMzOTE1NGQ4MjNlNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
cmVhZGFibGUtc3RyZWFtcy9icmFuZC1jaGVja3Muc2VydmljZXdvcmtlci5odHRwcy1leHBlY3Rl
ZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi0KLVBBU1MgU2VydmljZSB3b3Jr
ZXIgdGVzdCBzZXR1cCAKLVBBU1MgQ2FuIGdldCB0aGUgUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVh
ZGVyIGNvbnN0cnVjdG9yIGluZGlyZWN0bHkgCi1QQVNTIENhbiBnZXQgdGhlIFJlYWRhYmxlU3Ry
ZWFtRGVmYXVsdENvbnRyb2xsZXIgY29uc3RydWN0b3IgaW5kaXJlY3RseSAKLVBBU1MgUmVhZGFi
bGVTdHJlYW0ucHJvdG90eXBlLmNhbmNlbCBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrIAotUEFTUyBS
ZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUuZ2V0UmVhZGVyIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2sg
Ci1QQVNTIFJlYWRhYmxlU3RyZWFtLnByb3RvdHlwZS50ZWUgZW5mb3JjZXMgYSBicmFuZCBjaGVj
ayAKLVBBU1MgUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyIGVuZm9yY2VzIGEgYnJhbmQgY2hl
Y2sgb24gaXRzIGFyZ3VtZW50IAotUEFTUyBSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIucHJv
dG90eXBlLmNsb3NlZCBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrIAotUEFTUyBSZWFkYWJsZVN0cmVh
bURlZmF1bHRSZWFkZXIucHJvdG90eXBlLmNhbmNlbCBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrIAot
UEFTUyBSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIucHJvdG90eXBlLnJlYWQgZW5mb3JjZXMg
YSBicmFuZCBjaGVjayAKLVBBU1MgUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyLnByb3RvdHlw
ZS5yZWxlYXNlTG9jayBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrIAotUEFTUyBSZWFkYWJsZVN0cmVh
bURlZmF1bHRDb250cm9sbGVyIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2sgb24gaXRzIGFyZ3VtZW50
IAotUEFTUyBSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyIGNhbid0IGJlIGdpdmVuIGEg
ZnVsbHktY29uc3RydWN0ZWQgUmVhZGFibGVTdHJlYW0gCi1QQVNTIFJlYWRhYmxlU3RyZWFtRGVm
YXVsdENvbnRyb2xsZXIucHJvdG90eXBlLmNsb3NlIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2sgCi1Q
QVNTIFJlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIucHJvdG90eXBlLmVucXVldWUgZW5m
b3JjZXMgYSBicmFuZCBjaGVjayAKLVBBU1MgUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxl
ci5wcm90b3R5cGUuZXJyb3IgZW5mb3JjZXMgYSBicmFuZCBjaGVjayAKLQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRh
YmxlLXN0cmVhbXMvYnJhbmQtY2hlY2tzLnNlcnZpY2V3b3JrZXIuaHR0cHMuaHRtbCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1z
dHJlYW1zL2JyYW5kLWNoZWNrcy5zZXJ2aWNld29ya2VyLmh0dHBzLmh0bWwKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDI0MzljZGI5NWU5ODliN2U3NDI3NTYyY2U2MjdhZDE3YzgyY2I5
NzUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0
cmVhbXMvYnJhbmQtY2hlY2tzLnNlcnZpY2V3b3JrZXIuaHR0cHMuaHRtbAorKysgL2Rldi9udWxs
CkBAIC0xLDEyICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgi
PgotPHRpdGxlPmJyYW5kLWNoZWNrcy5qcyBzZXJ2aWNlIHdvcmtlciB3cmFwcGVyIGZpbGU8L3Rp
dGxlPgotCi08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+
Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+
Ci08c2NyaXB0IHNyYz0iL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9yZXNvdXJjZXMv
dGVzdC1oZWxwZXJzLnN1Yi5qcyI+PC9zY3JpcHQ+Ci0KLTxzY3JpcHQ+Ci0ndXNlIHN0cmljdCc7
Ci1zZXJ2aWNlX3dvcmtlcl90ZXN0KCdicmFuZC1jaGVja3MuanMnLCAnU2VydmljZSB3b3JrZXIg
dGVzdCBzZXR1cCcpOwotPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9icmFuZC1j
aGVja3Muc2hhcmVkd29ya2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2JyYW5kLWNoZWNr
cy5zaGFyZWR3b3JrZXItZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwOWQ1ZDI1MDlkNzg0N2U4Y2Q2ZmU2NjA2YWE2MGNkZDMzYWE0NzRlLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2JyYW5kLWNoZWNr
cy5zaGFyZWR3b3JrZXItZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBA
Ci1DT05TT0xFIE1FU1NBR0U6IFJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBT
aGFyZWRXb3JrZXIKLQotSGFybmVzcyBFcnJvciAoRkFJTCksIG1lc3NhZ2UgPSBSZWZlcmVuY2VF
cnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogU2hhcmVkV29ya2VyCi0KLQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRh
YmxlLXN0cmVhbXMvYnJhbmQtY2hlY2tzLnNoYXJlZHdvcmtlci5odG1sIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMv
YnJhbmQtY2hlY2tzLnNoYXJlZHdvcmtlci5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBjZmY3MmVjYTQ2MzQxZmRkNjY2M2VjMTM5ZDg3MWUxYjgxMzQ0YjIwLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2JyYW5kLWNo
ZWNrcy5zaGFyZWR3b3JrZXIuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLTwh
RE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHRpdGxlPmJyYW5kLWNoZWNr
cy5qcyBzaGFyZWQgd29ya2VyIHdyYXBwZXIgZmlsZTwvdGl0bGU+Ci0KLTxzY3JpcHQgc3JjPSIv
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLQotPHNjcmlwdD4KLSd1c2Ugc3Ry
aWN0JzsKLWZldGNoX3Rlc3RzX2Zyb21fd29ya2VyKG5ldyBTaGFyZWRXb3JrZXIoJ2JyYW5kLWNo
ZWNrcy5qcycpKTsKLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvY2FuY2VsLmFu
eS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9jYW5jZWwuYW55LWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi44M2ViZDkxMjhjOTQ5YmUwZThkZjViYjQxYjIxYTM2MTI3MzA3MWJiCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
dHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvY2FuY2VsLmFueS1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwxMiBAQAorCitQQVNTIFJlYWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlvbjogaW50ZWdyYXRpb24g
dGVzdCBvbiBhbiBpbmZpbml0ZSBzdHJlYW0gZGVyaXZlZCBmcm9tIGEgcmFuZG9tIHB1c2ggc291
cmNlIAorUEFTUyBSZWFkYWJsZVN0cmVhbSBjYW5jZWxsYXRpb246IGNhbmNlbChyZWFzb24pIHNo
b3VsZCBwYXNzIHRocm91Z2ggdGhlIGdpdmVuIHJlYXNvbiB0byB0aGUgdW5kZXJseWluZyBzb3Vy
Y2UgCitQQVNTIFJlYWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlvbjogY2FuY2VsKCkgb24gYSBsb2Nr
ZWQgc3RyZWFtIHNob3VsZCBmYWlsIGFuZCBub3QgY2FsbCB0aGUgdW5kZXJseWluZyBzb3VyY2Ug
Y2FuY2VsIAorUEFTUyBSZWFkYWJsZVN0cmVhbSBjYW5jZWxsYXRpb246IHNob3VsZCBmdWxmaWxs
IHByb21pc2Ugd2hlbiBjYW5jZWwgY2FsbGJhY2sgd2VudCBmaW5lIAorUEFTUyBSZWFkYWJsZVN0
cmVhbSBjYW5jZWxsYXRpb246IHJldHVybmluZyBhIHZhbHVlIGZyb20gdGhlIHVuZGVybHlpbmcg
c291cmNlJ3MgY2FuY2VsIHNob3VsZCBub3QgYWZmZWN0IHRoZSBmdWxmaWxsbWVudCB2YWx1ZSBv
ZiB0aGUgcHJvbWlzZSByZXR1cm5lZCBieSB0aGUgc3RyZWFtJ3MgY2FuY2VsIAorUEFTUyBSZWFk
YWJsZVN0cmVhbSBjYW5jZWxsYXRpb246IHNob3VsZCByZWplY3QgcHJvbWlzZSB3aGVuIGNhbmNl
bCBjYWxsYmFjayByYWlzZXMgYW4gZXhjZXB0aW9uIAorUEFTUyBSZWFkYWJsZVN0cmVhbSBjYW5j
ZWxsYXRpb246IGlmIHRoZSB1bmRlcmx5aW5nIHNvdXJjZSdzIGNhbmNlbCBtZXRob2QgcmV0dXJu
cyBhIHByb21pc2UsIHRoZSBwcm9taXNlIHJldHVybmVkIGJ5IHRoZSBzdHJlYW0ncyBjYW5jZWwg
c2hvdWxkIGZ1bGZpbGwgd2hlbiB0aGF0IG9uZSBkb2VzICgxKSAKK1BBU1MgUmVhZGFibGVTdHJl
YW0gY2FuY2VsbGF0aW9uOiBpZiB0aGUgdW5kZXJseWluZyBzb3VyY2UncyBjYW5jZWwgbWV0aG9k
IHJldHVybnMgYSBwcm9taXNlLCB0aGUgcHJvbWlzZSByZXR1cm5lZCBieSB0aGUgc3RyZWFtJ3Mg
Y2FuY2VsIHNob3VsZCBmdWxmaWxsIHdoZW4gdGhhdCBvbmUgZG9lcyAoMikgCitQQVNTIFJlYWRh
YmxlU3RyZWFtIGNhbmNlbGxhdGlvbjogaWYgdGhlIHVuZGVybHlpbmcgc291cmNlJ3MgY2FuY2Vs
IG1ldGhvZCByZXR1cm5zIGEgcHJvbWlzZSwgdGhlIHByb21pc2UgcmV0dXJuZWQgYnkgdGhlIHN0
cmVhbSdzIGNhbmNlbCBzaG91bGQgcmVqZWN0IHdoZW4gdGhhdCBvbmUgZG9lcyAKK1BBU1MgUmVh
ZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiBjYW5jZWxsaW5nIGJlZm9yZSBzdGFydCBmaW5pc2hl
cyBzaG91bGQgcHJldmVudCBwdWxsKCkgZnJvbSBiZWluZyBjYWxsZWQgCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFk
YWJsZS1zdHJlYW1zL2NhbmNlbC5hbnkuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2NhbmNlbC5hbnkuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4yMzgyOTEzNTI4ZTY5M2IzYTVkNTZjNjYwYTQ1MDYwOTgwYjU0OGMzCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvY2FuY2VsLmFueS5odG1sCkBAIC0wLDAgKzEg
QEAKKzwhLS0gVGhpcyBmaWxlIGlzIHJlcXVpcmVkIGZvciBXZWJLaXQgdGVzdCBpbmZyYXN0cnVj
dHVyZSB0byBydW4gdGhlIHRlbXBsYXRlZCB0ZXN0IC0tPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2NhbmNlbC5hbnkuanMgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFt
cy9jYW5jZWwuYW55LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMzNzIzYTQ2NWM5OTg4YjcwOTVmMjBiNDE5YmUw
ODY4NmRlOTk4N2UKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9jYW5jZWwuYW55Lmpz
CkBAIC0wLDAgKzEsMjM2IEBACisvLyBNRVRBOiBnbG9iYWw9d2luZG93LHdvcmtlcixqc3NoZWxs
CisvLyBNRVRBOiBzY3JpcHQ9Li4vcmVzb3VyY2VzL3Rlc3QtdXRpbHMuanMKKy8vIE1FVEE6IHNj
cmlwdD0uLi9yZXNvdXJjZXMvcnMtdXRpbHMuanMKKyd1c2Ugc3RyaWN0JzsKKworcHJvbWlzZV90
ZXN0KHQgPT4geworCisgIGNvbnN0IHJhbmRvbVNvdXJjZSA9IG5ldyBSYW5kb21QdXNoU291cmNl
KCk7CisKKyAgbGV0IGNhbmNlbGxhdGlvbkZpbmlzaGVkID0gZmFsc2U7CisgIGNvbnN0IHJzID0g
bmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICByYW5kb21Tb3VyY2Uu
b25kYXRhID0gYy5lbnF1ZXVlLmJpbmQoYyk7CisgICAgICByYW5kb21Tb3VyY2Uub25lbmQgPSBj
LmNsb3NlLmJpbmQoYyk7CisgICAgICByYW5kb21Tb3VyY2Uub25lcnJvciA9IGMuZXJyb3IuYmlu
ZChjKTsKKyAgICB9LAorCisgICAgcHVsbCgpIHsKKyAgICAgIHJhbmRvbVNvdXJjZS5yZWFkU3Rh
cnQoKTsKKyAgICB9LAorCisgICAgY2FuY2VsKCkgeworICAgICAgcmFuZG9tU291cmNlLnJlYWRT
dG9wKCk7CisKKyAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKKyAgICAgICAg
dC5zdGVwX3RpbWVvdXQoKCkgPT4geworICAgICAgICAgIGNhbmNlbGxhdGlvbkZpbmlzaGVkID0g
dHJ1ZTsKKyAgICAgICAgICByZXNvbHZlKCk7CisgICAgICAgIH0sIDEpOworICAgICAgfSk7Cisg
ICAgfQorICB9KTsKKworICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKKworICAvLyBX
ZSBjYWxsIGRlbGF5IG11bHRpcGxlIHRpbWVzIHRvIGF2b2lkIGNhbmNlbGxpbmcgdG9vIGVhcmx5
IGZvciB0aGUKKyAgLy8gc291cmNlIHRvIGVucXVldWUgYXQgbGVhc3Qgb25lIGNodW5rLgorICBj
b25zdCBjYW5jZWwgPSBkZWxheSg1KS50aGVuKCgpID0+IGRlbGF5KDUpKS50aGVuKCgpID0+IGRl
bGF5KDUpKS50aGVuKCgpID0+IHsKKyAgICBjb25zdCBjYW5jZWxQcm9taXNlID0gcmVhZGVyLmNh
bmNlbCgpOworICAgIGFzc2VydF9mYWxzZShjYW5jZWxsYXRpb25GaW5pc2hlZCwgJ2NhbmNlbGxh
dGlvbiBpbiBzb3VyY2Ugc2hvdWxkIGhhcHBlbiBsYXRlcicpOworICAgIHJldHVybiBjYW5jZWxQ
cm9taXNlOworICB9KTsKKworICByZXR1cm4gcmVhZGFibGVTdHJlYW1Ub0FycmF5KHJzLCByZWFk
ZXIpLnRoZW4oY2h1bmtzID0+IHsKKyAgICBhc3NlcnRfZ3JlYXRlcl90aGFuKGNodW5rcy5sZW5n
dGgsIDAsICdhdCBsZWFzdCBvbmUgY2h1bmsgc2hvdWxkIGJlIHJlYWQnKTsKKyAgICBmb3IgKGxl
dCBpID0gMDsgaSA8IGNodW5rcy5sZW5ndGg7IGkrKykgeworICAgICAgYXNzZXJ0X2VxdWFscyhj
aHVua3NbaV0ubGVuZ3RoLCAxMjgsICdjaHVuayAnICsgaSArICcgc2hvdWxkIGhhdmUgMTI4IGJ5
dGVzJyk7CisgICAgfQorICAgIHJldHVybiBjYW5jZWw7CisgIH0pLnRoZW4oKCkgPT4geworICAg
IGFzc2VydF90cnVlKGNhbmNlbGxhdGlvbkZpbmlzaGVkLCAnaXQgcmV0dXJucyBhIHByb21pc2Ug
dGhhdCBpcyBmdWxmaWxsZWQgd2hlbiB0aGUgY2FuY2VsbGF0aW9uIGZpbmlzaGVzJyk7CisgIH0p
OworCit9LCAnUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiBpbnRlZ3JhdGlvbiB0ZXN0IG9u
IGFuIGluZmluaXRlIHN0cmVhbSBkZXJpdmVkIGZyb20gYSByYW5kb20gcHVzaCBzb3VyY2UnKTsK
KwordGVzdCgoKSA9PiB7CisKKyAgbGV0IHJlY29yZGVkUmVhc29uOworICBjb25zdCBycyA9IG5l
dyBSZWFkYWJsZVN0cmVhbSh7CisgICAgY2FuY2VsKHJlYXNvbikgeworICAgICAgcmVjb3JkZWRS
ZWFzb24gPSByZWFzb247CisgICAgfQorICB9KTsKKworICBjb25zdCBwYXNzZWRSZWFzb24gPSBu
ZXcgRXJyb3IoJ1NvcnJ5LCBpdCBqdXN0IHdhc25cJ3QgbWVhbnQgdG8gYmUuJyk7CisgIHJzLmNh
bmNlbChwYXNzZWRSZWFzb24pOworCisgIGFzc2VydF9lcXVhbHMocmVjb3JkZWRSZWFzb24sIHBh
c3NlZFJlYXNvbiwKKyAgICAndGhlIGVycm9yIHBhc3NlZCB0byB0aGUgdW5kZXJseWluZyBzb3Vy
Y2VcJ3MgY2FuY2VsIG1ldGhvZCBzaG91bGQgZXF1YWwgdGhlIG9uZSBwYXNzZWQgdG8gdGhlIHN0
cmVhbVwncyBjYW5jZWwnKTsKKworfSwgJ1JlYWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlvbjogY2Fu
Y2VsKHJlYXNvbikgc2hvdWxkIHBhc3MgdGhyb3VnaCB0aGUgZ2l2ZW4gcmVhc29uIHRvIHRoZSB1
bmRlcmx5aW5nIHNvdXJjZScpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworCisgIGNvbnN0IHJz
ID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjLmVucXVldWUo
J2EnKTsKKyAgICAgIGMuY2xvc2UoKTsKKyAgICB9LAorICAgIGNhbmNlbCgpIHsKKyAgICAgIGFz
c2VydF91bnJlYWNoZWQoJ3VuZGVybHlpbmcgc291cmNlIGNhbmNlbCgpIHNob3VsZCBub3QgaGF2
ZSBiZWVuIGNhbGxlZCcpOworICAgIH0KKyAgfSk7CisKKyAgY29uc3QgcmVhZGVyID0gcnMuZ2V0
UmVhZGVyKCk7CisKKyAgcmV0dXJuIHJzLmNhbmNlbCgpLnRoZW4oKCkgPT4geworICAgIGFzc2Vy
dF91bnJlYWNoZWQoJ2NhbmNlbCgpIHNob3VsZCBiZSByZWplY3RlZCcpOworICB9LCBlID0+IHsK
KyAgICBhc3NlcnRfZXF1YWxzKGUubmFtZSwgJ1R5cGVFcnJvcicsICdjYW5jZWwoKSBzaG91bGQg
YmUgcmVqZWN0ZWQgd2l0aCBhIFR5cGVFcnJvcicpOworICB9KS50aGVuKCgpID0+IHsKKyAgICBy
ZXR1cm4gcmVhZGVyLnJlYWQoKTsKKyAgfSkudGhlbihyZXN1bHQgPT4geworICAgIGFzc2VydF9v
YmplY3RfZXF1YWxzKHJlc3VsdCwgeyB2YWx1ZTogJ2EnLCBkb25lOiBmYWxzZSB9LCAncmVhZCgp
IHNob3VsZCBzdGlsbCB3b3JrIGFmdGVyIHRoZSBhdHRlbXB0ZWQgY2FuY2VsJyk7CisgICAgcmV0
dXJuIHJlYWRlci5jbG9zZWQ7CisgIH0pOworCit9LCAnUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0
aW9uOiBjYW5jZWwoKSBvbiBhIGxvY2tlZCBzdHJlYW0gc2hvdWxkIGZhaWwgYW5kIG5vdCBjYWxs
IHRoZSB1bmRlcmx5aW5nIHNvdXJjZSBjYW5jZWwnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsK
KworICBsZXQgY2FuY2VsUmVjZWl2ZWQgPSBmYWxzZTsKKyAgY29uc3QgY2FuY2VsUmVhc29uID0g
bmV3IEVycm9yKCdJIGFtIHRpcmVkIG9mIHRoaXMgc3RyZWFtLCBJIHByZWZlciB0byBjYW5jZWwg
aXQnKTsKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIGNhbmNlbChyZWFz
b24pIHsKKyAgICAgIGNhbmNlbFJlY2VpdmVkID0gdHJ1ZTsKKyAgICAgIGFzc2VydF9lcXVhbHMo
cmVhc29uLCBjYW5jZWxSZWFzb24sICdjYW5jZWxsYXRpb24gcmVhc29uIGdpdmVuIHRvIHRoZSB1
bmRlcmx5aW5nIHNvdXJjZSBzaG91bGQgYmUgZXF1YWwgdG8gdGhlIG9uZSBwYXNzZWQnKTsKKyAg
ICB9CisgIH0pOworCisgIHJldHVybiBycy5jYW5jZWwoY2FuY2VsUmVhc29uKS50aGVuKCgpID0+
IHsKKyAgICBhc3NlcnRfdHJ1ZShjYW5jZWxSZWNlaXZlZCk7CisgIH0pOworCit9LCAnUmVhZGFi
bGVTdHJlYW0gY2FuY2VsbGF0aW9uOiBzaG91bGQgZnVsZmlsbCBwcm9taXNlIHdoZW4gY2FuY2Vs
IGNhbGxiYWNrIHdlbnQgZmluZScpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworCisgIGNvbnN0
IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBjYW5jZWwoKSB7CisgICAgICByZXR1cm4g
J0hlbGxvJzsKKyAgICB9CisgIH0pOworCisgIHJldHVybiBycy5jYW5jZWwoKS50aGVuKHYgPT4g
eworICAgIGFzc2VydF9lcXVhbHModiwgdW5kZWZpbmVkLCAnY2FuY2VsKCkgcmV0dXJuIHZhbHVl
IHNob3VsZCBiZSBmdWxmaWxsZWQgd2l0aCB1bmRlZmluZWQnKTsKKyAgfSk7CisKK30sICdSZWFk
YWJsZVN0cmVhbSBjYW5jZWxsYXRpb246IHJldHVybmluZyBhIHZhbHVlIGZyb20gdGhlIHVuZGVy
bHlpbmcgc291cmNlXCdzIGNhbmNlbCBzaG91bGQgbm90IGFmZmVjdCB0aGUgZnVsZmlsbG1lbnQg
dmFsdWUgb2YgdGhlIHByb21pc2UgcmV0dXJuZWQgYnkgdGhlIHN0cmVhbVwncyBjYW5jZWwnKTsK
KworcHJvbWlzZV90ZXN0KCgpID0+IHsKKworICBjb25zdCB0aHJvd25FcnJvciA9IG5ldyBFcnJv
cigndGVzdCcpOworICBsZXQgY2FuY2VsQ2FsbGVkID0gZmFsc2U7CisKKyAgY29uc3QgcnMgPSBu
ZXcgUmVhZGFibGVTdHJlYW0oeworICAgIGNhbmNlbCgpIHsKKyAgICAgIGNhbmNlbENhbGxlZCA9
IHRydWU7CisgICAgICB0aHJvdyB0aHJvd25FcnJvcjsKKyAgICB9CisgIH0pOworCisgIHJldHVy
biBycy5jYW5jZWwoJ3Rlc3QnKS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfdW5yZWFjaGVkKCdj
YW5jZWwgc2hvdWxkIHJlamVjdCcpOworICB9LCBlID0+IHsKKyAgICBhc3NlcnRfdHJ1ZShjYW5j
ZWxDYWxsZWQpOworICAgIGFzc2VydF9lcXVhbHMoZSwgdGhyb3duRXJyb3IpOworICB9KTsKKwor
fSwgJ1JlYWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlvbjogc2hvdWxkIHJlamVjdCBwcm9taXNlIHdo
ZW4gY2FuY2VsIGNhbGxiYWNrIHJhaXNlcyBhbiBleGNlcHRpb24nKTsKKworcHJvbWlzZV90ZXN0
KCgpID0+IHsKKworICBjb25zdCBjYW5jZWxSZWFzb24gPSBuZXcgRXJyb3IoJ3Rlc3QnKTsKKwor
ICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgY2FuY2VsKGVycm9yKSB7Cisg
ICAgICBhc3NlcnRfZXF1YWxzKGVycm9yLCBjYW5jZWxSZWFzb24pOworICAgICAgcmV0dXJuIGRl
bGF5KDEpOworICAgIH0KKyAgfSk7CisKKyAgcmV0dXJuIHJzLmNhbmNlbChjYW5jZWxSZWFzb24p
OworCit9LCAnUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiBpZiB0aGUgdW5kZXJseWluZyBz
b3VyY2VcJ3MgY2FuY2VsIG1ldGhvZCByZXR1cm5zIGEgcHJvbWlzZSwgdGhlIHByb21pc2UgcmV0
dXJuZWQgYnkgdGhlIHN0cmVhbVwncyBjYW5jZWwgc2hvdWxkIGZ1bGZpbGwgd2hlbiB0aGF0IG9u
ZSBkb2VzICgxKScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisKKyAgbGV0IHJlc29sdmVTb3Vy
Y2VDYW5jZWxQcm9taXNlOworICBsZXQgc291cmNlQ2FuY2VsUHJvbWlzZUhhc0Z1bGZpbGxlZCA9
IGZhbHNlOworCisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBjYW5jZWwo
KSB7CisgICAgICBjb25zdCBzb3VyY2VDYW5jZWxQcm9taXNlID0gbmV3IFByb21pc2UocmVzb2x2
ZSA9PiByZXNvbHZlU291cmNlQ2FuY2VsUHJvbWlzZSA9IHJlc29sdmUpOworCisgICAgICBzb3Vy
Y2VDYW5jZWxQcm9taXNlLnRoZW4oKCkgPT4geworICAgICAgICBzb3VyY2VDYW5jZWxQcm9taXNl
SGFzRnVsZmlsbGVkID0gdHJ1ZTsKKyAgICAgIH0pOworCisgICAgICByZXR1cm4gc291cmNlQ2Fu
Y2VsUHJvbWlzZTsKKyAgICB9CisgIH0pOworCisgIHQuc3RlcF90aW1lb3V0KCgpID0+IHJlc29s
dmVTb3VyY2VDYW5jZWxQcm9taXNlKCdIZWxsbycpLCAxKTsKKworICByZXR1cm4gcnMuY2FuY2Vs
KCkudGhlbih2YWx1ZSA9PiB7CisgICAgYXNzZXJ0X3RydWUoc291cmNlQ2FuY2VsUHJvbWlzZUhh
c0Z1bGZpbGxlZCwgJ2NhbmNlbCgpIHJldHVybiB2YWx1ZSBzaG91bGQgYmUgZnVsZmlsbGVkIG9u
bHkgYWZ0ZXIgdGhlIHByb21pc2UgcmV0dXJuZWQgYnkgdGhlIHVuZGVybHlpbmcgc291cmNlXCdz
IGNhbmNlbCcpOworICAgIGFzc2VydF9lcXVhbHModmFsdWUsIHVuZGVmaW5lZCwgJ2NhbmNlbCgp
IHJldHVybiB2YWx1ZSBzaG91bGQgYmUgZnVsZmlsbGVkIHdpdGggdW5kZWZpbmVkJyk7CisgIH0p
OworCit9LCAnUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiBpZiB0aGUgdW5kZXJseWluZyBz
b3VyY2VcJ3MgY2FuY2VsIG1ldGhvZCByZXR1cm5zIGEgcHJvbWlzZSwgdGhlIHByb21pc2UgcmV0
dXJuZWQgYnkgdGhlIHN0cmVhbVwncyBjYW5jZWwgc2hvdWxkIGZ1bGZpbGwgd2hlbiB0aGF0IG9u
ZSBkb2VzICgyKScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisKKyAgbGV0IHJlamVjdFNvdXJj
ZUNhbmNlbFByb21pc2U7CisgIGxldCBzb3VyY2VDYW5jZWxQcm9taXNlSGFzUmVqZWN0ZWQgPSBm
YWxzZTsKKworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgY2FuY2VsKCkg
eworICAgICAgY29uc3Qgc291cmNlQ2FuY2VsUHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZl
LCByZWplY3QpID0+IHJlamVjdFNvdXJjZUNhbmNlbFByb21pc2UgPSByZWplY3QpOworCisgICAg
ICBzb3VyY2VDYW5jZWxQcm9taXNlLmNhdGNoKCgpID0+IHsKKyAgICAgICAgc291cmNlQ2FuY2Vs
UHJvbWlzZUhhc1JlamVjdGVkID0gdHJ1ZTsKKyAgICAgIH0pOworCisgICAgICByZXR1cm4gc291
cmNlQ2FuY2VsUHJvbWlzZTsKKyAgICB9CisgIH0pOworCisgIGNvbnN0IGVycm9ySW5DYW5jZWwg
PSBuZXcgRXJyb3IoJ1NvcnJ5LCBpdCBqdXN0IHdhc25cJ3QgbWVhbnQgdG8gYmUuJyk7CisKKyAg
dC5zdGVwX3RpbWVvdXQoKCkgPT4gcmVqZWN0U291cmNlQ2FuY2VsUHJvbWlzZShlcnJvckluQ2Fu
Y2VsKSwgMSk7CisKKyAgcmV0dXJuIHJzLmNhbmNlbCgpLnRoZW4oKCkgPT4geworICAgIGFzc2Vy
dF91bnJlYWNoZWQoJ2NhbmNlbCgpIHJldHVybiB2YWx1ZSBzaG91bGQgYmUgcmVqZWN0ZWQnKTsK
KyAgfSwgciA9PiB7CisgICAgYXNzZXJ0X3RydWUoc291cmNlQ2FuY2VsUHJvbWlzZUhhc1JlamVj
dGVkLCAnY2FuY2VsKCkgcmV0dXJuIHZhbHVlIHNob3VsZCBiZSByZWplY3RlZCBvbmx5IGFmdGVy
IHRoZSBwcm9taXNlIHJldHVybmVkIGJ5IHRoZSB1bmRlcmx5aW5nIHNvdXJjZVwncyBjYW5jZWwn
KTsKKyAgICBhc3NlcnRfZXF1YWxzKHIsIGVycm9ySW5DYW5jZWwsICdjYW5jZWwoKSByZXR1cm4g
dmFsdWUgc2hvdWxkIGJlIHJlamVjdGVkIHdpdGggdGhlIHVuZGVybHlpbmcgc291cmNlXCdzIHJl
amVjdGlvbiByZWFzb24nKTsKKyAgfSk7CisKK30sICdSZWFkYWJsZVN0cmVhbSBjYW5jZWxsYXRp
b246IGlmIHRoZSB1bmRlcmx5aW5nIHNvdXJjZVwncyBjYW5jZWwgbWV0aG9kIHJldHVybnMgYSBw
cm9taXNlLCB0aGUgcHJvbWlzZSByZXR1cm5lZCBieSB0aGUgc3RyZWFtXCdzIGNhbmNlbCBzaG91
bGQgcmVqZWN0IHdoZW4gdGhhdCBvbmUgZG9lcycpOworCitwcm9taXNlX3Rlc3QoKCkgPT4gewor
CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydCgpIHsKKyAgICAg
IHJldHVybiBuZXcgUHJvbWlzZSgoKSA9PiB7fSk7CisgICAgfSwKKyAgICBwdWxsKCkgeworICAg
ICAgYXNzZXJ0X3VucmVhY2hlZCgncHVsbCBzaG91bGQgbm90IGhhdmUgYmVlbiBjYWxsZWQnKTsK
KyAgICB9CisgIH0pOworCisgIHJldHVybiBQcm9taXNlLmFsbChbcnMuY2FuY2VsKCksIHJzLmdl
dFJlYWRlcigpLmNsb3NlZF0pOworCit9LCAnUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiBj
YW5jZWxsaW5nIGJlZm9yZSBzdGFydCBmaW5pc2hlcyBzaG91bGQgcHJldmVudCBwdWxsKCkgZnJv
bSBiZWluZyBjYWxsZWQnKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2NhbmNlbC5hbnkud29y
a2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2NhbmNlbC5hbnkud29ya2VyLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi44M2ViZDkxMjhjOTQ5YmUwZThkZjViYjQxYjIxYTM2MTI3MzA3MWJi
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvY2FuY2VsLmFueS53b3JrZXItZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsMTIgQEAKKworUEFTUyBSZWFkYWJsZVN0cmVhbSBjYW5jZWxsYXRp
b246IGludGVncmF0aW9uIHRlc3Qgb24gYW4gaW5maW5pdGUgc3RyZWFtIGRlcml2ZWQgZnJvbSBh
IHJhbmRvbSBwdXNoIHNvdXJjZSAKK1BBU1MgUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiBj
YW5jZWwocmVhc29uKSBzaG91bGQgcGFzcyB0aHJvdWdoIHRoZSBnaXZlbiByZWFzb24gdG8gdGhl
IHVuZGVybHlpbmcgc291cmNlIAorUEFTUyBSZWFkYWJsZVN0cmVhbSBjYW5jZWxsYXRpb246IGNh
bmNlbCgpIG9uIGEgbG9ja2VkIHN0cmVhbSBzaG91bGQgZmFpbCBhbmQgbm90IGNhbGwgdGhlIHVu
ZGVybHlpbmcgc291cmNlIGNhbmNlbCAKK1BBU1MgUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9u
OiBzaG91bGQgZnVsZmlsbCBwcm9taXNlIHdoZW4gY2FuY2VsIGNhbGxiYWNrIHdlbnQgZmluZSAK
K1BBU1MgUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiByZXR1cm5pbmcgYSB2YWx1ZSBmcm9t
IHRoZSB1bmRlcmx5aW5nIHNvdXJjZSdzIGNhbmNlbCBzaG91bGQgbm90IGFmZmVjdCB0aGUgZnVs
ZmlsbG1lbnQgdmFsdWUgb2YgdGhlIHByb21pc2UgcmV0dXJuZWQgYnkgdGhlIHN0cmVhbSdzIGNh
bmNlbCAKK1BBU1MgUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiBzaG91bGQgcmVqZWN0IHBy
b21pc2Ugd2hlbiBjYW5jZWwgY2FsbGJhY2sgcmFpc2VzIGFuIGV4Y2VwdGlvbiAKK1BBU1MgUmVh
ZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiBpZiB0aGUgdW5kZXJseWluZyBzb3VyY2UncyBjYW5j
ZWwgbWV0aG9kIHJldHVybnMgYSBwcm9taXNlLCB0aGUgcHJvbWlzZSByZXR1cm5lZCBieSB0aGUg
c3RyZWFtJ3MgY2FuY2VsIHNob3VsZCBmdWxmaWxsIHdoZW4gdGhhdCBvbmUgZG9lcyAoMSkgCitQ
QVNTIFJlYWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlvbjogaWYgdGhlIHVuZGVybHlpbmcgc291cmNl
J3MgY2FuY2VsIG1ldGhvZCByZXR1cm5zIGEgcHJvbWlzZSwgdGhlIHByb21pc2UgcmV0dXJuZWQg
YnkgdGhlIHN0cmVhbSdzIGNhbmNlbCBzaG91bGQgZnVsZmlsbCB3aGVuIHRoYXQgb25lIGRvZXMg
KDIpIAorUEFTUyBSZWFkYWJsZVN0cmVhbSBjYW5jZWxsYXRpb246IGlmIHRoZSB1bmRlcmx5aW5n
IHNvdXJjZSdzIGNhbmNlbCBtZXRob2QgcmV0dXJucyBhIHByb21pc2UsIHRoZSBwcm9taXNlIHJl
dHVybmVkIGJ5IHRoZSBzdHJlYW0ncyBjYW5jZWwgc2hvdWxkIHJlamVjdCB3aGVuIHRoYXQgb25l
IGRvZXMgCitQQVNTIFJlYWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlvbjogY2FuY2VsbGluZyBiZWZv
cmUgc3RhcnQgZmluaXNoZXMgc2hvdWxkIHByZXZlbnQgcHVsbCgpIGZyb20gYmVpbmcgY2FsbGVk
IAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9jYW5jZWwuYW55Lndvcmtlci5odG1sIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxl
LXN0cmVhbXMvY2FuY2VsLmFueS53b3JrZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMzgyOTEzNTI4ZTY5
M2IzYTVkNTZjNjYwYTQ1MDYwOTgwYjU0OGMzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVh
bXMvY2FuY2VsLmFueS53b3JrZXIuaHRtbApAQCAtMCwwICsxIEBACis8IS0tIFRoaXMgZmlsZSBp
cyByZXF1aXJlZCBmb3IgV2ViS2l0IHRlc3QgaW5mcmFzdHJ1Y3R1cmUgdG8gcnVuIHRoZSB0ZW1w
bGF0ZWQgdGVzdCAtLT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFi
bGUtc3RyZWFtcy9jYW5jZWwuZGVkaWNhdGVkd29ya2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJl
YW1zL2NhbmNlbC5kZWRpY2F0ZWR3b3JrZXItZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA4M2ViZDkxMjhjOTQ5YmUwZThkZjViYjQxYjIxYTM2MTI3MzA3MWJiLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1z
L2NhbmNlbC5kZWRpY2F0ZWR3b3JrZXItZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEs
MTIgKzAsMCBAQAotCi1QQVNTIFJlYWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlvbjogaW50ZWdyYXRp
b24gdGVzdCBvbiBhbiBpbmZpbml0ZSBzdHJlYW0gZGVyaXZlZCBmcm9tIGEgcmFuZG9tIHB1c2gg
c291cmNlIAotUEFTUyBSZWFkYWJsZVN0cmVhbSBjYW5jZWxsYXRpb246IGNhbmNlbChyZWFzb24p
IHNob3VsZCBwYXNzIHRocm91Z2ggdGhlIGdpdmVuIHJlYXNvbiB0byB0aGUgdW5kZXJseWluZyBz
b3VyY2UgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlvbjogY2FuY2VsKCkgb24gYSBs
b2NrZWQgc3RyZWFtIHNob3VsZCBmYWlsIGFuZCBub3QgY2FsbCB0aGUgdW5kZXJseWluZyBzb3Vy
Y2UgY2FuY2VsIAotUEFTUyBSZWFkYWJsZVN0cmVhbSBjYW5jZWxsYXRpb246IHNob3VsZCBmdWxm
aWxsIHByb21pc2Ugd2hlbiBjYW5jZWwgY2FsbGJhY2sgd2VudCBmaW5lIAotUEFTUyBSZWFkYWJs
ZVN0cmVhbSBjYW5jZWxsYXRpb246IHJldHVybmluZyBhIHZhbHVlIGZyb20gdGhlIHVuZGVybHlp
bmcgc291cmNlJ3MgY2FuY2VsIHNob3VsZCBub3QgYWZmZWN0IHRoZSBmdWxmaWxsbWVudCB2YWx1
ZSBvZiB0aGUgcHJvbWlzZSByZXR1cm5lZCBieSB0aGUgc3RyZWFtJ3MgY2FuY2VsIAotUEFTUyBS
ZWFkYWJsZVN0cmVhbSBjYW5jZWxsYXRpb246IHNob3VsZCByZWplY3QgcHJvbWlzZSB3aGVuIGNh
bmNlbCBjYWxsYmFjayByYWlzZXMgYW4gZXhjZXB0aW9uIAotUEFTUyBSZWFkYWJsZVN0cmVhbSBj
YW5jZWxsYXRpb246IGlmIHRoZSB1bmRlcmx5aW5nIHNvdXJjZSdzIGNhbmNlbCBtZXRob2QgcmV0
dXJucyBhIHByb21pc2UsIHRoZSBwcm9taXNlIHJldHVybmVkIGJ5IHRoZSBzdHJlYW0ncyBjYW5j
ZWwgc2hvdWxkIGZ1bGZpbGwgd2hlbiB0aGF0IG9uZSBkb2VzICgxKSAKLVBBU1MgUmVhZGFibGVT
dHJlYW0gY2FuY2VsbGF0aW9uOiBpZiB0aGUgdW5kZXJseWluZyBzb3VyY2UncyBjYW5jZWwgbWV0
aG9kIHJldHVybnMgYSBwcm9taXNlLCB0aGUgcHJvbWlzZSByZXR1cm5lZCBieSB0aGUgc3RyZWFt
J3MgY2FuY2VsIHNob3VsZCBmdWxmaWxsIHdoZW4gdGhhdCBvbmUgZG9lcyAoMikgCi1QQVNTIFJl
YWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlvbjogaWYgdGhlIHVuZGVybHlpbmcgc291cmNlJ3MgY2Fu
Y2VsIG1ldGhvZCByZXR1cm5zIGEgcHJvbWlzZSwgdGhlIHByb21pc2UgcmV0dXJuZWQgYnkgdGhl
IHN0cmVhbSdzIGNhbmNlbCBzaG91bGQgcmVqZWN0IHdoZW4gdGhhdCBvbmUgZG9lcyAKLVBBU1Mg
UmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiBjYW5jZWxsaW5nIGJlZm9yZSBzdGFydCBmaW5p
c2hlcyBzaG91bGQgcHJldmVudCBwdWxsKCkgZnJvbSBiZWluZyBjYWxsZWQgCi0KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9y
ZWFkYWJsZS1zdHJlYW1zL2NhbmNlbC5kZWRpY2F0ZWR3b3JrZXIuaHRtbCBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1z
L2NhbmNlbC5kZWRpY2F0ZWR3b3JrZXIuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggYjNkMGI1MzQ1YWJlY2IyZTQ2Yzg1YzM2YjMzYmJhZDJiNzkyN2Y4Mi4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9jYW5jZWwuZGVk
aWNhdGVkd29ya2VyLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi08IURPQ1RZ
UEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTx0aXRsZT5jYW5jZWwuanMgZGVkaWNh
dGVkIHdvcmtlciB3cmFwcGVyIGZpbGU8L3RpdGxlPgotCi08c2NyaXB0IHNyYz0iL3Jlc291cmNl
cy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0
aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci0KLTxzY3JpcHQ+Ci0ndXNlIHN0cmljdCc7Ci1m
ZXRjaF90ZXN0c19mcm9tX3dvcmtlcihuZXcgV29ya2VyKCdjYW5jZWwuanMnKSk7Ci08L3Njcmlw
dD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2NhbmNlbC5odG1sIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvY2Fu
Y2VsLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI1MGE0OWVhZGQyYTE4MjY4
M2Q5MWYzYzU5NDZhNzNjNjNjODZlZGMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvY2FuY2VsLmh0bWwKKysrIC9kZXYvbnVsbApAQCAt
MSwxMSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTx0
aXRsZT5jYW5jZWwuanMgYnJvd3NlciBjb250ZXh0IHdyYXBwZXIgZmlsZTwvdGl0bGU+Ci0KLTxz
Y3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQg
c3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLQotPHNjcmlw
dCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3Jj
PSIuLi9yZXNvdXJjZXMvcnMtdXRpbHMuanMiPjwvc2NyaXB0PgotCi08c2NyaXB0IHNyYz0iY2Fu
Y2VsLmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2NhbmNlbC5qcyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJs
ZS1zdHJlYW1zL2NhbmNlbC5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjhmN2Vl
Yzc3Y2M0MTI0ZmM3MDJjYjUwZDA2NWYyZWM3ZWIxZDYwZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9jYW5jZWwuanMKKysrIC9kZXYv
bnVsbApAQCAtMSwyNDEgKzAsMCBAQAotJ3VzZSBzdHJpY3QnOwotCi1pZiAoc2VsZi5pbXBvcnRT
Y3JpcHRzKSB7Ci0gIHNlbGYuaW1wb3J0U2NyaXB0cygnLi4vcmVzb3VyY2VzL3Rlc3QtdXRpbHMu
anMnKTsKLSAgc2VsZi5pbXBvcnRTY3JpcHRzKCcuLi9yZXNvdXJjZXMvcnMtdXRpbHMuanMnKTsK
LSAgc2VsZi5pbXBvcnRTY3JpcHRzKCcvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzJyk7Ci19Ci0K
LXByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgY29uc3QgcmFuZG9tU291cmNlID0gbmV3IFJhbmRv
bVB1c2hTb3VyY2UoKTsKLQotICBsZXQgY2FuY2VsbGF0aW9uRmluaXNoZWQgPSBmYWxzZTsKLSAg
Y29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIHJh
bmRvbVNvdXJjZS5vbmRhdGEgPSBjLmVucXVldWUuYmluZChjKTsKLSAgICAgIHJhbmRvbVNvdXJj
ZS5vbmVuZCA9IGMuY2xvc2UuYmluZChjKTsKLSAgICAgIHJhbmRvbVNvdXJjZS5vbmVycm9yID0g
Yy5lcnJvci5iaW5kKGMpOwotICAgIH0sCi0KLSAgICBwdWxsKCkgewotICAgICAgcmFuZG9tU291
cmNlLnJlYWRTdGFydCgpOwotICAgIH0sCi0KLSAgICBjYW5jZWwoKSB7Ci0gICAgICByYW5kb21T
b3VyY2UucmVhZFN0b3AoKTsKLQotICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4g
ewotICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsKLSAgICAgICAgICBjYW5jZWxsYXRpb25GaW5p
c2hlZCA9IHRydWU7Ci0gICAgICAgICAgcmVzb2x2ZSgpOwotICAgICAgICB9LCAxKTsKLSAgICAg
IH0pOwotICAgIH0KLSAgfSk7Ci0KLSAgY29uc3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7Ci0K
LSAgLy8gV2UgY2FsbCBkZWxheSBtdWx0aXBsZSB0aW1lcyB0byBhdm9pZCBjYW5jZWxsaW5nIHRv
byBlYXJseSBmb3IgdGhlCi0gIC8vIHNvdXJjZSB0byBlbnF1ZXVlIGF0IGxlYXN0IG9uZSBjaHVu
ay4KLSAgY29uc3QgY2FuY2VsID0gZGVsYXkoNSkudGhlbigoKSA9PiBkZWxheSg1KSkudGhlbigo
KSA9PiBkZWxheSg1KSkudGhlbigoKSA9PiB7Ci0gICAgY29uc3QgY2FuY2VsUHJvbWlzZSA9IHJl
YWRlci5jYW5jZWwoKTsKLSAgICBhc3NlcnRfZmFsc2UoY2FuY2VsbGF0aW9uRmluaXNoZWQsICdj
YW5jZWxsYXRpb24gaW4gc291cmNlIHNob3VsZCBoYXBwZW4gbGF0ZXInKTsKLSAgICByZXR1cm4g
Y2FuY2VsUHJvbWlzZTsKLSAgfSk7Ci0KLSAgcmV0dXJuIHJlYWRhYmxlU3RyZWFtVG9BcnJheShy
cywgcmVhZGVyKS50aGVuKGNodW5rcyA9PiB7Ci0gICAgYXNzZXJ0X2dyZWF0ZXJfdGhhbihjaHVu
a3MubGVuZ3RoLCAwLCAnYXQgbGVhc3Qgb25lIGNodW5rIHNob3VsZCBiZSByZWFkJyk7Ci0gICAg
Zm9yIChsZXQgaSA9IDA7IGkgPCBjaHVua3MubGVuZ3RoOyBpKyspIHsKLSAgICAgIGFzc2VydF9l
cXVhbHMoY2h1bmtzW2ldLmxlbmd0aCwgMTI4LCAnY2h1bmsgJyArIGkgKyAnIHNob3VsZCBoYXZl
IDEyOCBieXRlcycpOwotICAgIH0KLSAgICByZXR1cm4gY2FuY2VsOwotICB9KS50aGVuKCgpID0+
IHsKLSAgICBhc3NlcnRfdHJ1ZShjYW5jZWxsYXRpb25GaW5pc2hlZCwgJ2l0IHJldHVybnMgYSBw
cm9taXNlIHRoYXQgaXMgZnVsZmlsbGVkIHdoZW4gdGhlIGNhbmNlbGxhdGlvbiBmaW5pc2hlcycp
OwotICB9KTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlvbjogaW50ZWdyYXRpb24g
dGVzdCBvbiBhbiBpbmZpbml0ZSBzdHJlYW0gZGVyaXZlZCBmcm9tIGEgcmFuZG9tIHB1c2ggc291
cmNlJyk7Ci0KLXRlc3QoKCkgPT4gewotCi0gIGxldCByZWNvcmRlZFJlYXNvbjsKLSAgY29uc3Qg
cnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIGNhbmNlbChyZWFzb24pIHsKLSAgICAgIHJl
Y29yZGVkUmVhc29uID0gcmVhc29uOwotICAgIH0KLSAgfSk7Ci0KLSAgY29uc3QgcGFzc2VkUmVh
c29uID0gbmV3IEVycm9yKCdTb3JyeSwgaXQganVzdCB3YXNuXCd0IG1lYW50IHRvIGJlLicpOwot
ICBycy5jYW5jZWwocGFzc2VkUmVhc29uKTsKLQotICBhc3NlcnRfZXF1YWxzKHJlY29yZGVkUmVh
c29uLCBwYXNzZWRSZWFzb24sCi0gICAgJ3RoZSBlcnJvciBwYXNzZWQgdG8gdGhlIHVuZGVybHlp
bmcgc291cmNlXCdzIGNhbmNlbCBtZXRob2Qgc2hvdWxkIGVxdWFsIHRoZSBvbmUgcGFzc2VkIHRv
IHRoZSBzdHJlYW1cJ3MgY2FuY2VsJyk7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbSBjYW5jZWxsYXRp
b246IGNhbmNlbChyZWFzb24pIHNob3VsZCBwYXNzIHRocm91Z2ggdGhlIGdpdmVuIHJlYXNvbiB0
byB0aGUgdW5kZXJseWluZyBzb3VyY2UnKTsKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLQotICBj
b25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgYy5l
bnF1ZXVlKCdhJyk7Ci0gICAgICBjLmNsb3NlKCk7Ci0gICAgfSwKLSAgICBjYW5jZWwoKSB7Ci0g
ICAgICBhc3NlcnRfdW5yZWFjaGVkKCd1bmRlcmx5aW5nIHNvdXJjZSBjYW5jZWwoKSBzaG91bGQg
bm90IGhhdmUgYmVlbiBjYWxsZWQnKTsKLSAgICB9Ci0gIH0pOwotCi0gIGNvbnN0IHJlYWRlciA9
IHJzLmdldFJlYWRlcigpOwotCi0gIHJldHVybiBycy5jYW5jZWwoKS50aGVuKCgpID0+IHsKLSAg
ICBhc3NlcnRfdW5yZWFjaGVkKCdjYW5jZWwoKSBzaG91bGQgYmUgcmVqZWN0ZWQnKTsKLSAgfSwg
ZSA9PiB7Ci0gICAgYXNzZXJ0X2VxdWFscyhlLm5hbWUsICdUeXBlRXJyb3InLCAnY2FuY2VsKCkg
c2hvdWxkIGJlIHJlamVjdGVkIHdpdGggYSBUeXBlRXJyb3InKTsKLSAgfSkudGhlbigoKSA9PiB7
Ci0gICAgcmV0dXJuIHJlYWRlci5yZWFkKCk7Ci0gIH0pLnRoZW4ocmVzdWx0ID0+IHsKLSAgICBh
c3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6ICdhJywgZG9uZTogZmFsc2UgfSwg
J3JlYWQoKSBzaG91bGQgc3RpbGwgd29yayBhZnRlciB0aGUgYXR0ZW1wdGVkIGNhbmNlbCcpOwot
ICAgIHJldHVybiByZWFkZXIuY2xvc2VkOwotICB9KTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtIGNh
bmNlbGxhdGlvbjogY2FuY2VsKCkgb24gYSBsb2NrZWQgc3RyZWFtIHNob3VsZCBmYWlsIGFuZCBu
b3QgY2FsbCB0aGUgdW5kZXJseWluZyBzb3VyY2UgY2FuY2VsJyk7Ci0KLXByb21pc2VfdGVzdCgo
KSA9PiB7Ci0KLSAgbGV0IGNhbmNlbFJlY2VpdmVkID0gZmFsc2U7Ci0gIGNvbnN0IGNhbmNlbFJl
YXNvbiA9IG5ldyBFcnJvcignSSBhbSB0aXJlZCBvZiB0aGlzIHN0cmVhbSwgSSBwcmVmZXIgdG8g
Y2FuY2VsIGl0Jyk7Ci0gIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBjYW5j
ZWwocmVhc29uKSB7Ci0gICAgICBjYW5jZWxSZWNlaXZlZCA9IHRydWU7Ci0gICAgICBhc3NlcnRf
ZXF1YWxzKHJlYXNvbiwgY2FuY2VsUmVhc29uLCAnY2FuY2VsbGF0aW9uIHJlYXNvbiBnaXZlbiB0
byB0aGUgdW5kZXJseWluZyBzb3VyY2Ugc2hvdWxkIGJlIGVxdWFsIHRvIHRoZSBvbmUgcGFzc2Vk
Jyk7Ci0gICAgfQotICB9KTsKLQotICByZXR1cm4gcnMuY2FuY2VsKGNhbmNlbFJlYXNvbikudGhl
bigoKSA9PiB7Ci0gICAgYXNzZXJ0X3RydWUoY2FuY2VsUmVjZWl2ZWQpOwotICB9KTsKLQotfSwg
J1JlYWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlvbjogc2hvdWxkIGZ1bGZpbGwgcHJvbWlzZSB3aGVu
IGNhbmNlbCBjYWxsYmFjayB3ZW50IGZpbmUnKTsKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLQot
ICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgY2FuY2VsKCkgewotICAgICAg
cmV0dXJuICdIZWxsbyc7Ci0gICAgfQotICB9KTsKLQotICByZXR1cm4gcnMuY2FuY2VsKCkudGhl
bih2ID0+IHsKLSAgICBhc3NlcnRfZXF1YWxzKHYsIHVuZGVmaW5lZCwgJ2NhbmNlbCgpIHJldHVy
biB2YWx1ZSBzaG91bGQgYmUgZnVsZmlsbGVkIHdpdGggdW5kZWZpbmVkJyk7Ci0gIH0pOwotCi19
LCAnUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiByZXR1cm5pbmcgYSB2YWx1ZSBmcm9tIHRo
ZSB1bmRlcmx5aW5nIHNvdXJjZVwncyBjYW5jZWwgc2hvdWxkIG5vdCBhZmZlY3QgdGhlIGZ1bGZp
bGxtZW50IHZhbHVlIG9mIHRoZSBwcm9taXNlIHJldHVybmVkIGJ5IHRoZSBzdHJlYW1cJ3MgY2Fu
Y2VsJyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgY29uc3QgdGhyb3duRXJyb3IgPSBu
ZXcgRXJyb3IoJ3Rlc3QnKTsKLSAgbGV0IGNhbmNlbENhbGxlZCA9IGZhbHNlOwotCi0gIGNvbnN0
IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBjYW5jZWwoKSB7Ci0gICAgICBjYW5jZWxD
YWxsZWQgPSB0cnVlOwotICAgICAgdGhyb3cgdGhyb3duRXJyb3I7Ci0gICAgfQotICB9KTsKLQot
ICByZXR1cm4gcnMuY2FuY2VsKCd0ZXN0JykudGhlbigoKSA9PiB7Ci0gICAgYXNzZXJ0X3VucmVh
Y2hlZCgnY2FuY2VsIHNob3VsZCByZWplY3QnKTsKLSAgfSwgZSA9PiB7Ci0gICAgYXNzZXJ0X3Ry
dWUoY2FuY2VsQ2FsbGVkKTsKLSAgICBhc3NlcnRfZXF1YWxzKGUsIHRocm93bkVycm9yKTsKLSAg
fSk7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbSBjYW5jZWxsYXRpb246IHNob3VsZCByZWplY3QgcHJv
bWlzZSB3aGVuIGNhbmNlbCBjYWxsYmFjayByYWlzZXMgYW4gZXhjZXB0aW9uJyk7Ci0KLXByb21p
c2VfdGVzdCgoKSA9PiB7Ci0KLSAgY29uc3QgY2FuY2VsUmVhc29uID0gbmV3IEVycm9yKCd0ZXN0
Jyk7Ci0KLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIGNhbmNlbChlcnJv
cikgewotICAgICAgYXNzZXJ0X2VxdWFscyhlcnJvciwgY2FuY2VsUmVhc29uKTsKLSAgICAgIHJl
dHVybiBkZWxheSgxKTsKLSAgICB9Ci0gIH0pOwotCi0gIHJldHVybiBycy5jYW5jZWwoY2FuY2Vs
UmVhc29uKTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlvbjogaWYgdGhlIHVuZGVy
bHlpbmcgc291cmNlXCdzIGNhbmNlbCBtZXRob2QgcmV0dXJucyBhIHByb21pc2UsIHRoZSBwcm9t
aXNlIHJldHVybmVkIGJ5IHRoZSBzdHJlYW1cJ3MgY2FuY2VsIHNob3VsZCBmdWxmaWxsIHdoZW4g
dGhhdCBvbmUgZG9lcyAoMSknKTsKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLQotICBsZXQgcmVz
b2x2ZVNvdXJjZUNhbmNlbFByb21pc2U7Ci0gIGxldCBzb3VyY2VDYW5jZWxQcm9taXNlSGFzRnVs
ZmlsbGVkID0gZmFsc2U7Ci0KLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAg
IGNhbmNlbCgpIHsKLSAgICAgIGNvbnN0IHNvdXJjZUNhbmNlbFByb21pc2UgPSBuZXcgUHJvbWlz
ZShyZXNvbHZlID0+IHJlc29sdmVTb3VyY2VDYW5jZWxQcm9taXNlID0gcmVzb2x2ZSk7Ci0KLSAg
ICAgIHNvdXJjZUNhbmNlbFByb21pc2UudGhlbigoKSA9PiB7Ci0gICAgICAgIHNvdXJjZUNhbmNl
bFByb21pc2VIYXNGdWxmaWxsZWQgPSB0cnVlOwotICAgICAgfSk7Ci0KLSAgICAgIHJldHVybiBz
b3VyY2VDYW5jZWxQcm9taXNlOwotICAgIH0KLSAgfSk7Ci0KLSAgc2V0VGltZW91dCgoKSA9PiBy
ZXNvbHZlU291cmNlQ2FuY2VsUHJvbWlzZSgnSGVsbG8nKSwgMSk7Ci0KLSAgcmV0dXJuIHJzLmNh
bmNlbCgpLnRoZW4odmFsdWUgPT4gewotICAgIGFzc2VydF90cnVlKHNvdXJjZUNhbmNlbFByb21p
c2VIYXNGdWxmaWxsZWQsICdjYW5jZWwoKSByZXR1cm4gdmFsdWUgc2hvdWxkIGJlIGZ1bGZpbGxl
ZCBvbmx5IGFmdGVyIHRoZSBwcm9taXNlIHJldHVybmVkIGJ5IHRoZSB1bmRlcmx5aW5nIHNvdXJj
ZVwncyBjYW5jZWwnKTsKLSAgICBhc3NlcnRfZXF1YWxzKHZhbHVlLCB1bmRlZmluZWQsICdjYW5j
ZWwoKSByZXR1cm4gdmFsdWUgc2hvdWxkIGJlIGZ1bGZpbGxlZCB3aXRoIHVuZGVmaW5lZCcpOwot
ICB9KTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlvbjogaWYgdGhlIHVuZGVybHlp
bmcgc291cmNlXCdzIGNhbmNlbCBtZXRob2QgcmV0dXJucyBhIHByb21pc2UsIHRoZSBwcm9taXNl
IHJldHVybmVkIGJ5IHRoZSBzdHJlYW1cJ3MgY2FuY2VsIHNob3VsZCBmdWxmaWxsIHdoZW4gdGhh
dCBvbmUgZG9lcyAoMiknKTsKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLQotICBsZXQgcmVqZWN0
U291cmNlQ2FuY2VsUHJvbWlzZTsKLSAgbGV0IHNvdXJjZUNhbmNlbFByb21pc2VIYXNSZWplY3Rl
ZCA9IGZhbHNlOwotCi0gIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBjYW5j
ZWwoKSB7Ci0gICAgICBjb25zdCBzb3VyY2VDYW5jZWxQcm9taXNlID0gbmV3IFByb21pc2UoKHJl
c29sdmUsIHJlamVjdCkgPT4gcmVqZWN0U291cmNlQ2FuY2VsUHJvbWlzZSA9IHJlamVjdCk7Ci0K
LSAgICAgIHNvdXJjZUNhbmNlbFByb21pc2UuY2F0Y2goKCkgPT4gewotICAgICAgICBzb3VyY2VD
YW5jZWxQcm9taXNlSGFzUmVqZWN0ZWQgPSB0cnVlOwotICAgICAgfSk7Ci0KLSAgICAgIHJldHVy
biBzb3VyY2VDYW5jZWxQcm9taXNlOwotICAgIH0KLSAgfSk7Ci0KLSAgY29uc3QgZXJyb3JJbkNh
bmNlbCA9IG5ldyBFcnJvcignU29ycnksIGl0IGp1c3Qgd2FzblwndCBtZWFudCB0byBiZS4nKTsK
LQotICBzZXRUaW1lb3V0KCgpID0+IHJlamVjdFNvdXJjZUNhbmNlbFByb21pc2UoZXJyb3JJbkNh
bmNlbCksIDEpOwotCi0gIHJldHVybiBycy5jYW5jZWwoKS50aGVuKCgpID0+IHsKLSAgICBhc3Nl
cnRfdW5yZWFjaGVkKCdjYW5jZWwoKSByZXR1cm4gdmFsdWUgc2hvdWxkIGJlIHJlamVjdGVkJyk7
Ci0gIH0sIHIgPT4gewotICAgIGFzc2VydF90cnVlKHNvdXJjZUNhbmNlbFByb21pc2VIYXNSZWpl
Y3RlZCwgJ2NhbmNlbCgpIHJldHVybiB2YWx1ZSBzaG91bGQgYmUgcmVqZWN0ZWQgb25seSBhZnRl
ciB0aGUgcHJvbWlzZSByZXR1cm5lZCBieSB0aGUgdW5kZXJseWluZyBzb3VyY2VcJ3MgY2FuY2Vs
Jyk7Ci0gICAgYXNzZXJ0X2VxdWFscyhyLCBlcnJvckluQ2FuY2VsLCAnY2FuY2VsKCkgcmV0dXJu
IHZhbHVlIHNob3VsZCBiZSByZWplY3RlZCB3aXRoIHRoZSB1bmRlcmx5aW5nIHNvdXJjZVwncyBy
ZWplY3Rpb24gcmVhc29uJyk7Ci0gIH0pOwotCi19LCAnUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0
aW9uOiBpZiB0aGUgdW5kZXJseWluZyBzb3VyY2VcJ3MgY2FuY2VsIG1ldGhvZCByZXR1cm5zIGEg
cHJvbWlzZSwgdGhlIHByb21pc2UgcmV0dXJuZWQgYnkgdGhlIHN0cmVhbVwncyBjYW5jZWwgc2hv
dWxkIHJlamVjdCB3aGVuIHRoYXQgb25lIGRvZXMnKTsKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsK
LQotICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoKSB7Ci0gICAg
ICByZXR1cm4gbmV3IFByb21pc2UoKCkgPT4ge30pOwotICAgIH0sCi0gICAgcHVsbCgpIHsKLSAg
ICAgIGFzc2VydF91bnJlYWNoZWQoJ3B1bGwgc2hvdWxkIG5vdCBoYXZlIGJlZW4gY2FsbGVkJyk7
Ci0gICAgfQotICB9KTsKLQotICByZXR1cm4gUHJvbWlzZS5hbGwoW3JzLmNhbmNlbCgpLCBycy5n
ZXRSZWFkZXIoKS5jbG9zZWRdKTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlvbjog
Y2FuY2VsbGluZyBiZWZvcmUgc3RhcnQgZmluaXNoZXMgc2hvdWxkIHByZXZlbnQgcHVsbCgpIGZy
b20gYmVpbmcgY2FsbGVkJyk7Ci0KLWRvbmUoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2Nh
bmNlbC5zZXJ2aWNld29ya2VyLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2NhbmNl
bC5zZXJ2aWNld29ya2VyLmh0dHBzLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggNTQxODdjOGE1YWRmMThhNzFlYTQ5NjY3NjZjOTRiMjRjMGE1Y2Q1OS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9jYW5j
ZWwuc2VydmljZXdvcmtlci5odHRwcy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwx
MyArMCwwIEBACi0KLVBBU1MgU2VydmljZSB3b3JrZXIgdGVzdCBzZXR1cCAKLVBBU1MgUmVhZGFi
bGVTdHJlYW0gY2FuY2VsbGF0aW9uOiBpbnRlZ3JhdGlvbiB0ZXN0IG9uIGFuIGluZmluaXRlIHN0
cmVhbSBkZXJpdmVkIGZyb20gYSByYW5kb20gcHVzaCBzb3VyY2UgCi1QQVNTIFJlYWRhYmxlU3Ry
ZWFtIGNhbmNlbGxhdGlvbjogY2FuY2VsKHJlYXNvbikgc2hvdWxkIHBhc3MgdGhyb3VnaCB0aGUg
Z2l2ZW4gcmVhc29uIHRvIHRoZSB1bmRlcmx5aW5nIHNvdXJjZSAKLVBBU1MgUmVhZGFibGVTdHJl
YW0gY2FuY2VsbGF0aW9uOiBjYW5jZWwoKSBvbiBhIGxvY2tlZCBzdHJlYW0gc2hvdWxkIGZhaWwg
YW5kIG5vdCBjYWxsIHRoZSB1bmRlcmx5aW5nIHNvdXJjZSBjYW5jZWwgCi1QQVNTIFJlYWRhYmxl
U3RyZWFtIGNhbmNlbGxhdGlvbjogc2hvdWxkIGZ1bGZpbGwgcHJvbWlzZSB3aGVuIGNhbmNlbCBj
YWxsYmFjayB3ZW50IGZpbmUgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlvbjogcmV0
dXJuaW5nIGEgdmFsdWUgZnJvbSB0aGUgdW5kZXJseWluZyBzb3VyY2UncyBjYW5jZWwgc2hvdWxk
IG5vdCBhZmZlY3QgdGhlIGZ1bGZpbGxtZW50IHZhbHVlIG9mIHRoZSBwcm9taXNlIHJldHVybmVk
IGJ5IHRoZSBzdHJlYW0ncyBjYW5jZWwgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlv
bjogc2hvdWxkIHJlamVjdCBwcm9taXNlIHdoZW4gY2FuY2VsIGNhbGxiYWNrIHJhaXNlcyBhbiBl
eGNlcHRpb24gCi1QQVNTIFJlYWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlvbjogaWYgdGhlIHVuZGVy
bHlpbmcgc291cmNlJ3MgY2FuY2VsIG1ldGhvZCByZXR1cm5zIGEgcHJvbWlzZSwgdGhlIHByb21p
c2UgcmV0dXJuZWQgYnkgdGhlIHN0cmVhbSdzIGNhbmNlbCBzaG91bGQgZnVsZmlsbCB3aGVuIHRo
YXQgb25lIGRvZXMgKDEpIAotUEFTUyBSZWFkYWJsZVN0cmVhbSBjYW5jZWxsYXRpb246IGlmIHRo
ZSB1bmRlcmx5aW5nIHNvdXJjZSdzIGNhbmNlbCBtZXRob2QgcmV0dXJucyBhIHByb21pc2UsIHRo
ZSBwcm9taXNlIHJldHVybmVkIGJ5IHRoZSBzdHJlYW0ncyBjYW5jZWwgc2hvdWxkIGZ1bGZpbGwg
d2hlbiB0aGF0IG9uZSBkb2VzICgyKSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9u
OiBpZiB0aGUgdW5kZXJseWluZyBzb3VyY2UncyBjYW5jZWwgbWV0aG9kIHJldHVybnMgYSBwcm9t
aXNlLCB0aGUgcHJvbWlzZSByZXR1cm5lZCBieSB0aGUgc3RyZWFtJ3MgY2FuY2VsIHNob3VsZCBy
ZWplY3Qgd2hlbiB0aGF0IG9uZSBkb2VzIAotUEFTUyBSZWFkYWJsZVN0cmVhbSBjYW5jZWxsYXRp
b246IGNhbmNlbGxpbmcgYmVmb3JlIHN0YXJ0IGZpbmlzaGVzIHNob3VsZCBwcmV2ZW50IHB1bGwo
KSBmcm9tIGJlaW5nIGNhbGxlZCAKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvY2FuY2VsLnNl
cnZpY2V3b3JrZXIuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2NhbmNlbC5zZXJ2aWNld29ya2Vy
Lmh0dHBzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM3ZmM0NTlhMDVmNmIw
MzNjODcxODJhZTE2YWMzMzJjMDkwNjgwMzYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvY2FuY2VsLnNlcnZpY2V3b3JrZXIuaHR0cHMu
aHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1l
dGEgY2hhcnNldD0idXRmLTgiPgotPHRpdGxlPmNhbmNlbC5qcyBzZXJ2aWNlIHdvcmtlciB3cmFw
cGVyIGZpbGU8L3RpdGxlPgotCi08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5q
cyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5q
cyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtl
ci9yZXNvdXJjZXMvdGVzdC1oZWxwZXJzLnN1Yi5qcyI+PC9zY3JpcHQ+Ci0KLTxzY3JpcHQ+Ci0n
dXNlIHN0cmljdCc7Ci1zZXJ2aWNlX3dvcmtlcl90ZXN0KCdjYW5jZWwuanMnLCAnU2VydmljZSB3
b3JrZXIgdGVzdCBzZXR1cCcpOwotPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9j
YW5jZWwuc2hhcmVkd29ya2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2NhbmNlbC5zaGFy
ZWR3b3JrZXItZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwOWQ1
ZDI1MDlkNzg0N2U4Y2Q2ZmU2NjA2YWE2MGNkZDMzYWE0NzRlLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2NhbmNlbC5zaGFyZWR3b3Jr
ZXItZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1DT05TT0xFIE1F
U1NBR0U6IFJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBTaGFyZWRXb3JrZXIK
LQotSGFybmVzcyBFcnJvciAoRkFJTCksIG1lc3NhZ2UgPSBSZWZlcmVuY2VFcnJvcjogQ2FuJ3Qg
ZmluZCB2YXJpYWJsZTogU2hhcmVkV29ya2VyCi0KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMv
Y2FuY2VsLnNoYXJlZHdvcmtlci5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvY2FuY2VsLnNoYXJlZHdvcmtl
ci5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiOWUyZThjOTY4YjNmNTBlZTc3
ZTlkMGFkYTkwNTBkOTk5NWFkNGI2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2NhbmNlbC5zaGFyZWR3b3JrZXIuaHRtbAorKysgL2Rl
di9udWxsCkBAIC0xLDExICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0i
dXRmLTgiPgotPHRpdGxlPmNhbmNlbC5qcyBzaGFyZWQgd29ya2VyIHdyYXBwZXIgZmlsZTwvdGl0
bGU+Ci0KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4K
LTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4K
LQotPHNjcmlwdD4KLSd1c2Ugc3RyaWN0JzsKLWZldGNoX3Rlc3RzX2Zyb21fd29ya2VyKG5ldyBT
aGFyZWRXb3JrZXIoJ2NhbmNlbC5qcycpKTsKLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0
cmVhbXMvY29uc3RydWN0b3IuYW55LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2NvbnN0cnVj
dG9yLmFueS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjM4ZjI1OTM4ZTc3MWM5MjQ4ZDdkZGQy
MmUwMjIxYmQ3ZDlkY2UwNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2NvbnN0cnVj
dG9yLmFueS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACisKK1BBU1MgdW5kZXJseWluZ1Nv
dXJjZSBhcmd1bWVudCBzaG91bGQgYmUgY29udmVydGVkIGFmdGVyIHF1ZXVpbmdTdHJhdGVneSBh
cmd1bWVudCAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvY29uc3RydWN0b3IuYW55Lmh0bWwg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVh
ZGFibGUtc3RyZWFtcy9jb25zdHJ1Y3Rvci5hbnkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMzgyOTEzNTI4
ZTY5M2IzYTVkNTZjNjYwYTQ1MDYwOTgwYjU0OGMzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0
cmVhbXMvY29uc3RydWN0b3IuYW55Lmh0bWwKQEAgLTAsMCArMSBAQAorPCEtLSBUaGlzIGZpbGUg
aXMgcmVxdWlyZWQgZm9yIFdlYktpdCB0ZXN0IGluZnJhc3RydWN0dXJlIHRvIHJ1biB0aGUgdGVt
cGxhdGVkIHRlc3QgLS0+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRh
YmxlLXN0cmVhbXMvY29uc3RydWN0b3IuYW55LmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvY29uc3RydWN0b3Iu
YW55LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmRjZmQ5ZTljMzM4NjFmN2VjZjgzZDRlNmY1ZDc4NzgxMGFiODQ3
NWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9jb25zdHJ1Y3Rvci5hbnkuanMKQEAg
LTAsMCArMSwxNyBAQAorLy8gTUVUQTogZ2xvYmFsPXdpbmRvdyx3b3JrZXIsanNzaGVsbAorJ3Vz
ZSBzdHJpY3QnOworCitjb25zdCBlcnJvcjEgPSBuZXcgRXJyb3IoJ2Vycm9yMScpOworZXJyb3Ix
Lm5hbWUgPSAnZXJyb3IxJzsKKworY29uc3QgZXJyb3IyID0gbmV3IEVycm9yKCdlcnJvcjInKTsK
K2Vycm9yMi5uYW1lID0gJ2Vycm9yMic7CisKK3Rlc3QoKCkgPT4geworICBjb25zdCB1bmRlcmx5
aW5nU291cmNlID0geyBnZXQgc3RhcnQoKSB7IHRocm93IGVycm9yMTsgfSB9OworICBjb25zdCBx
dWV1aW5nU3RyYXRlZ3kgPSB7IGhpZ2hXYXRlck1hcms6IDAsIGdldCBzaXplKCkgeyB0aHJvdyBl
cnJvcjI7IH0gfTsKKworICAvLyB1bmRlcmx5aW5nU291cmNlIGlzIGNvbnZlcnRlZCBpbiBwcm9z
ZSBpbiB0aGUgbWV0aG9kIGJvZHksIHdoZXJlYXMgcXVldWluZ1N0cmF0ZWd5IGlzIGRvbmUgYXQg
dGhlIElETCBsYXllci4KKyAgLy8gU28gdGhlIHF1ZXVpbmdTdHJhdGVneSBleGNlcHRpb24gc2hv
dWxkIGJlIGVuY291bnRlcmVkIGZpcnN0LgorICBhc3NlcnRfdGhyb3dzX2V4YWN0bHkoZXJyb3Iy
LCAoKSA9PiBuZXcgUmVhZGFibGVTdHJlYW0odW5kZXJseWluZ1NvdXJjZSwgcXVldWluZ1N0cmF0
ZWd5KSk7Cit9LCAndW5kZXJseWluZ1NvdXJjZSBhcmd1bWVudCBzaG91bGQgYmUgY29udmVydGVk
IGFmdGVyIHF1ZXVpbmdTdHJhdGVneSBhcmd1bWVudCcpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVh
bXMvY29uc3RydWN0b3IuYW55Lndvcmtlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9jb25z
dHJ1Y3Rvci5hbnkud29ya2VyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MzhmMjU5MzhlNzcx
YzkyNDhkN2RkZDIyZTAyMjFiZDdkOWRjZTA2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVh
bXMvY29uc3RydWN0b3IuYW55Lndvcmtlci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACisK
K1BBU1MgdW5kZXJseWluZ1NvdXJjZSBhcmd1bWVudCBzaG91bGQgYmUgY29udmVydGVkIGFmdGVy
IHF1ZXVpbmdTdHJhdGVneSBhcmd1bWVudCAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvY29u
c3RydWN0b3IuYW55Lndvcmtlci5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvY29uc3RydWN0b3IuYW55Lndv
cmtlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzODI5MTM1MjhlNjkzYjNhNWQ1NmM2NjBhNDUwNjA5ODBi
NTQ4YzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9jb25zdHJ1Y3Rvci5hbnkud29y
a2VyLmh0bWwKQEAgLTAsMCArMSBAQAorPCEtLSBUaGlzIGZpbGUgaXMgcmVxdWlyZWQgZm9yIFdl
YktpdCB0ZXN0IGluZnJhc3RydWN0dXJlIHRvIHJ1biB0aGUgdGVtcGxhdGVkIHRlc3QgLS0+Clwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvY291bnQt
cXVldWluZy1zdHJhdGVneS1pbnRlZ3JhdGlvbi5hbnktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVh
bXMvY291bnQtcXVldWluZy1zdHJhdGVneS1pbnRlZ3JhdGlvbi5hbnktZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjYwNjMzY2EwN2ZkMTZkOWIxN2I1YTQ2MjU0MzMwNjhiOTE1YTIwZGMKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5LWludGVncmF0
aW9uLmFueS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw2IEBACisKK1BBU1MgQ2FuIGNvbnN0cnVj
dCBhIHJlYWRhYmxlIHN0cmVhbSB3aXRoIGEgdmFsaWQgQ291bnRRdWV1aW5nU3RyYXRlZ3kgCitQ
QVNTIENvcnJlY3RseSBnb3Zlcm5zIGEgUmVhZGFibGVTdHJlYW1Db250cm9sbGVyJ3MgZGVzaXJl
ZFNpemUgcHJvcGVydHkgKEhXTSA9IDApIAorUEFTUyBDb3JyZWN0bHkgZ292ZXJucyBhIFJlYWRh
YmxlU3RyZWFtQ29udHJvbGxlcidzIGRlc2lyZWRTaXplIHByb3BlcnR5IChIV00gPSAxKSAKK1BB
U1MgQ29ycmVjdGx5IGdvdmVybnMgYSBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIncyBkZXNpcmVk
U2l6ZSBwcm9wZXJ0eSAoSFdNID0gNCkgCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2NvdW50
LXF1ZXVpbmctc3RyYXRlZ3ktaW50ZWdyYXRpb24uYW55Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9jb3Vu
dC1xdWV1aW5nLXN0cmF0ZWd5LWludGVncmF0aW9uLmFueS5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzODI5
MTM1MjhlNjkzYjNhNWQ1NmM2NjBhNDUwNjA5ODBiNTQ4YzMKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFi
bGUtc3RyZWFtcy9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5LWludGVncmF0aW9uLmFueS5odG1sCkBA
IC0wLDAgKzEgQEAKKzwhLS0gVGhpcyBmaWxlIGlzIHJlcXVpcmVkIGZvciBXZWJLaXQgdGVzdCBp
bmZyYXN0cnVjdHVyZSB0byBydW4gdGhlIHRlbXBsYXRlZCB0ZXN0IC0tPgpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2NvdW50LXF1ZXVpbmctc3Ry
YXRlZ3ktaW50ZWdyYXRpb24uYW55LmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvY291bnQtcXVldWluZy1zdHJh
dGVneS1pbnRlZ3JhdGlvbi5hbnkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzhhMjUzMThiMmRkNWFmOTg1Nzg1
NGRjZDhhZTZhMWZmMDg5ZDI2MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2NvdW50
LXF1ZXVpbmctc3RyYXRlZ3ktaW50ZWdyYXRpb24uYW55LmpzCkBAIC0wLDAgKzEsMjA4IEBACisv
LyBNRVRBOiBnbG9iYWw9d2luZG93LHdvcmtlcixqc3NoZWxsCisndXNlIHN0cmljdCc7CisKK3Rl
c3QoKCkgPT4geworCisgIG5ldyBSZWFkYWJsZVN0cmVhbSh7fSwgbmV3IENvdW50UXVldWluZ1N0
cmF0ZWd5KHsgaGlnaFdhdGVyTWFyazogNCB9KSk7CisKK30sICdDYW4gY29uc3RydWN0IGEgcmVh
ZGFibGUgc3RyZWFtIHdpdGggYSB2YWxpZCBDb3VudFF1ZXVpbmdTdHJhdGVneScpOworCitwcm9t
aXNlX3Rlc3QoKCkgPT4geworCisgIGxldCBjb250cm9sbGVyOworICBjb25zdCBycyA9IG5ldyBS
ZWFkYWJsZVN0cmVhbSgKKyAgICB7CisgICAgICBzdGFydChjKSB7CisgICAgICAgIGNvbnRyb2xs
ZXIgPSBjOworICAgICAgfQorICAgIH0sCisgICAgbmV3IENvdW50UXVldWluZ1N0cmF0ZWd5KHsg
aGlnaFdhdGVyTWFyazogMCB9KQorICApOworICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFkZXIo
KTsKKworICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDAsICcwIHJlYWRz
LCAwIGVucXVldWVzOiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUgMCcpOworICBjb250cm9sbGVyLmVu
cXVldWUoJ2EnKTsKKyAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAtMSwg
JzAgcmVhZHMsIDEgZW5xdWV1ZTogZGVzaXJlZFNpemUgc2hvdWxkIGJlIC0xJyk7CisgIGNvbnRy
b2xsZXIuZW5xdWV1ZSgnYicpOworICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNp
emUsIC0yLCAnMCByZWFkcywgMiBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIC0yJyk7
CisgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYycpOworICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIu
ZGVzaXJlZFNpemUsIC0zLCAnMCByZWFkcywgMyBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxk
IGJlIC0zJyk7CisgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnZCcpOworICBhc3NlcnRfZXF1YWxzKGNv
bnRyb2xsZXIuZGVzaXJlZFNpemUsIC00LCAnMCByZWFkcywgNCBlbnF1ZXVlczogZGVzaXJlZFNp
emUgc2hvdWxkIGJlIC00Jyk7CisKKyAgcmV0dXJuIHJlYWRlci5yZWFkKCkKKyAgICAudGhlbihy
ZXN1bHQgPT4geworICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0LCB7IHZhbHVlOiAn
YScsIGRvbmU6IGZhbHNlIH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAnMXN0IHJlYWQg
Z2l2ZXMgYmFjayB0aGUgMXN0IGNodW5rIGVucXVldWVkIChxdWV1ZSBub3cgY29udGFpbnMgMyBj
aHVua3MpJyk7CisgICAgICByZXR1cm4gcmVhZGVyLnJlYWQoKTsKKyAgICB9KQorICAgIC50aGVu
KHJlc3VsdCA9PiB7CisgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6
ICdiJywgZG9uZTogZmFsc2UgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICcybmQgcmVh
ZCBnaXZlcyBiYWNrIHRoZSAybmQgY2h1bmsgZW5xdWV1ZWQgKHF1ZXVlIG5vdyBjb250YWlucyAy
IGNodW5rcyknKTsKKyAgICAgIHJldHVybiByZWFkZXIucmVhZCgpOworICAgIH0pCisgICAgLnRo
ZW4ocmVzdWx0ID0+IHsKKyAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdCwgeyB2YWx1
ZTogJ2MnLCBkb25lOiBmYWxzZSB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJzNyZCBy
ZWFkIGdpdmVzIGJhY2sgdGhlIDNyZCBjaHVuayBlbnF1ZXVlZCAocXVldWUgbm93IGNvbnRhaW5z
IDEgY2h1bmspJyk7CisKKyAgICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6
ZSwgLTEsICczIHJlYWRzLCA0IGVucXVldWVzOiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUgLTEnKTsK
KyAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnZScpOworICAgICAgYXNzZXJ0X2VxdWFscyhjb250
cm9sbGVyLmRlc2lyZWRTaXplLCAtMiwgJzMgcmVhZHMsIDUgZW5xdWV1ZXM6IGRlc2lyZWRTaXpl
IHNob3VsZCBiZSAtMicpOworCisgICAgICByZXR1cm4gcmVhZGVyLnJlYWQoKTsKKyAgICB9KQor
ICAgIC50aGVuKHJlc3VsdCA9PiB7CisgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQs
IHsgdmFsdWU6ICdkJywgZG9uZTogZmFsc2UgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICc0dGggcmVhZCBnaXZlcyBiYWNrIHRoZSA0dGggY2h1bmsgZW5xdWV1ZWQgKHF1ZXVlIG5vdyBj
b250YWlucyAxIGNodW5rcyknKTsKKyAgICAgIHJldHVybiByZWFkZXIucmVhZCgpOworCisgICAg
fSkudGhlbihyZXN1bHQgPT4geworICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0LCB7
IHZhbHVlOiAnZScsIGRvbmU6IGZhbHNlIH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAn
NXRoIHJlYWQgZ2l2ZXMgYmFjayB0aGUgNXRoIGNodW5rIGVucXVldWVkIChxdWV1ZSBub3cgY29u
dGFpbnMgMCBjaHVua3MpJyk7CisKKyAgICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNp
cmVkU2l6ZSwgMCwgJzUgcmVhZHMsIDUgZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAw
Jyk7CisgICAgICBjb250cm9sbGVyLmVucXVldWUoJ2YnKTsKKyAgICAgIGFzc2VydF9lcXVhbHMo
Y29udHJvbGxlci5kZXNpcmVkU2l6ZSwgLTEsICc1IHJlYWRzLCA2IGVucXVldWVzOiBkZXNpcmVk
U2l6ZSBzaG91bGQgYmUgLTEnKTsKKyAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnZycpOworICAg
ICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAtMiwgJzUgcmVhZHMsIDcg
ZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAtMicpOworICAgIH0pOworCit9LCAnQ29y
cmVjdGx5IGdvdmVybnMgYSBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJcJ3MgZGVzaXJlZFNpemUg
cHJvcGVydHkgKEhXTSA9IDApJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisKKyAgbGV0IGNv
bnRyb2xsZXI7CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKAorICAgIHsKKyAgICAg
IHN0YXJ0KGMpIHsKKyAgICAgICAgY29udHJvbGxlciA9IGM7CisgICAgICB9CisgICAgfSwKKyAg
ICBuZXcgQ291bnRRdWV1aW5nU3RyYXRlZ3koeyBoaWdoV2F0ZXJNYXJrOiAxIH0pCisgICk7Cisg
IGNvbnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcigpOworCisgIGFzc2VydF9lcXVhbHMoY29udHJv
bGxlci5kZXNpcmVkU2l6ZSwgMSwgJzAgcmVhZHMsIDAgZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNo
b3VsZCBiZSAxJyk7CisgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYScpOworICBhc3NlcnRfZXF1YWxz
KGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDAsICcwIHJlYWRzLCAxIGVucXVldWU6IGRlc2lyZWRT
aXplIHNob3VsZCBiZSAwJyk7CisgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYicpOworICBhc3NlcnRf
ZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIC0xLCAnMCByZWFkcywgMiBlbnF1ZXVlczog
ZGVzaXJlZFNpemUgc2hvdWxkIGJlIC0xJyk7CisgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYycpOwor
ICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIC0yLCAnMCByZWFkcywgMyBl
bnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIC0yJyk7CisgIGNvbnRyb2xsZXIuZW5xdWV1
ZSgnZCcpOworICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIC0zLCAnMCBy
ZWFkcywgNCBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIC0zJyk7CisKKyAgcmV0dXJu
IHJlYWRlci5yZWFkKCkKKyAgICAudGhlbihyZXN1bHQgPT4geworICAgICAgYXNzZXJ0X29iamVj
dF9lcXVhbHMocmVzdWx0LCB7IHZhbHVlOiAnYScsIGRvbmU6IGZhbHNlIH0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAnMXN0IHJlYWQgZ2l2ZXMgYmFjayB0aGUgMXN0IGNodW5rIGVucXVl
dWVkIChxdWV1ZSBub3cgY29udGFpbnMgMyBjaHVua3MpJyk7CisgICAgICByZXR1cm4gcmVhZGVy
LnJlYWQoKTsKKyAgICB9KQorICAgIC50aGVuKHJlc3VsdCA9PiB7CisgICAgICBhc3NlcnRfb2Jq
ZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6ICdiJywgZG9uZTogZmFsc2UgfSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICcybmQgcmVhZCBnaXZlcyBiYWNrIHRoZSAybmQgY2h1bmsgZW5x
dWV1ZWQgKHF1ZXVlIG5vdyBjb250YWlucyAyIGNodW5rcyknKTsKKyAgICAgIHJldHVybiByZWFk
ZXIucmVhZCgpOworICAgIH0pCisgICAgLnRoZW4ocmVzdWx0ID0+IHsKKyAgICAgIGFzc2VydF9v
YmplY3RfZXF1YWxzKHJlc3VsdCwgeyB2YWx1ZTogJ2MnLCBkb25lOiBmYWxzZSB9LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJzNyZCByZWFkIGdpdmVzIGJhY2sgdGhlIDNyZCBjaHVuayBl
bnF1ZXVlZCAocXVldWUgbm93IGNvbnRhaW5zIDEgY2h1bmspJyk7CisKKyAgICAgIGFzc2VydF9l
cXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMCwgJzMgcmVhZHMsIDQgZW5xdWV1ZXM6IGRl
c2lyZWRTaXplIHNob3VsZCBiZSAwJyk7CisgICAgICBjb250cm9sbGVyLmVucXVldWUoJ2UnKTsK
KyAgICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgLTEsICczIHJlYWRz
LCA1IGVucXVldWVzOiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUgLTEnKTsKKworICAgICAgcmV0dXJu
IHJlYWRlci5yZWFkKCk7CisgICAgfSkKKyAgICAudGhlbihyZXN1bHQgPT4geworICAgICAgYXNz
ZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0LCB7IHZhbHVlOiAnZCcsIGRvbmU6IGZhbHNlIH0sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAnNHRoIHJlYWQgZ2l2ZXMgYmFjayB0aGUgNHRoIGNo
dW5rIGVucXVldWVkIChxdWV1ZSBub3cgY29udGFpbnMgMSBjaHVua3MpJyk7CisgICAgICByZXR1
cm4gcmVhZGVyLnJlYWQoKTsKKyAgICB9KQorICAgIC50aGVuKHJlc3VsdCA9PiB7CisgICAgICBh
c3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6ICdlJywgZG9uZTogZmFsc2UgfSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICc1dGggcmVhZCBnaXZlcyBiYWNrIHRoZSA1dGgg
Y2h1bmsgZW5xdWV1ZWQgKHF1ZXVlIG5vdyBjb250YWlucyAwIGNodW5rcyknKTsKKworICAgICAg
YXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAxLCAnNSByZWFkcywgNSBlbnF1
ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIDEnKTsKKyAgICAgIGNvbnRyb2xsZXIuZW5xdWV1
ZSgnZicpOworICAgICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAwLCAn
NSByZWFkcywgNiBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIDAnKTsKKyAgICAgIGNv
bnRyb2xsZXIuZW5xdWV1ZSgnZycpOworICAgICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRl
c2lyZWRTaXplLCAtMSwgJzUgcmVhZHMsIDcgZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBi
ZSAtMScpOworICAgIH0pOworCit9LCAnQ29ycmVjdGx5IGdvdmVybnMgYSBSZWFkYWJsZVN0cmVh
bUNvbnRyb2xsZXJcJ3MgZGVzaXJlZFNpemUgcHJvcGVydHkgKEhXTSA9IDEpJyk7CisKK3Byb21p
c2VfdGVzdCgoKSA9PiB7CisKKyAgbGV0IGNvbnRyb2xsZXI7CisgIGNvbnN0IHJzID0gbmV3IFJl
YWRhYmxlU3RyZWFtKAorICAgIHsKKyAgICAgIHN0YXJ0KGMpIHsKKyAgICAgICAgY29udHJvbGxl
ciA9IGM7CisgICAgICB9CisgICAgfSwKKyAgICBuZXcgQ291bnRRdWV1aW5nU3RyYXRlZ3koeyBo
aWdoV2F0ZXJNYXJrOiA0IH0pCisgICk7CisgIGNvbnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcigp
OworCisgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgNCwgJzAgcmVhZHMs
IDAgZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSA0Jyk7CisgIGNvbnRyb2xsZXIuZW5x
dWV1ZSgnYScpOworICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDMsICcw
IHJlYWRzLCAxIGVucXVldWU6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAzJyk7CisgIGNvbnRyb2xs
ZXIuZW5xdWV1ZSgnYicpOworICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUs
IDIsICcwIHJlYWRzLCAyIGVucXVldWVzOiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUgMicpOworICBj
b250cm9sbGVyLmVucXVldWUoJ2MnKTsKKyAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2ly
ZWRTaXplLCAxLCAnMCByZWFkcywgMyBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIDEn
KTsKKyAgY29udHJvbGxlci5lbnF1ZXVlKCdkJyk7CisgIGFzc2VydF9lcXVhbHMoY29udHJvbGxl
ci5kZXNpcmVkU2l6ZSwgMCwgJzAgcmVhZHMsIDQgZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3Vs
ZCBiZSAwJyk7CisgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnZScpOworICBhc3NlcnRfZXF1YWxzKGNv
bnRyb2xsZXIuZGVzaXJlZFNpemUsIC0xLCAnMCByZWFkcywgNSBlbnF1ZXVlczogZGVzaXJlZFNp
emUgc2hvdWxkIGJlIC0xJyk7CisgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnZicpOworICBhc3NlcnRf
ZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIC0yLCAnMCByZWFkcywgNiBlbnF1ZXVlczog
ZGVzaXJlZFNpemUgc2hvdWxkIGJlIC0yJyk7CisKKworICByZXR1cm4gcmVhZGVyLnJlYWQoKQor
ICAgIC50aGVuKHJlc3VsdCA9PiB7CisgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQs
IHsgdmFsdWU6ICdhJywgZG9uZTogZmFsc2UgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICcxc3QgcmVhZCBnaXZlcyBiYWNrIHRoZSAxc3QgY2h1bmsgZW5xdWV1ZWQgKHF1ZXVlIG5vdyBj
b250YWlucyA1IGNodW5rcyknKTsKKyAgICAgIHJldHVybiByZWFkZXIucmVhZCgpOworICAgIH0p
CisgICAgLnRoZW4ocmVzdWx0ID0+IHsKKyAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3Vs
dCwgeyB2YWx1ZTogJ2InLCBkb25lOiBmYWxzZSB9LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJzJuZCByZWFkIGdpdmVzIGJhY2sgdGhlIDJuZCBjaHVuayBlbnF1ZXVlZCAocXVldWUgbm93
IGNvbnRhaW5zIDQgY2h1bmtzKScpOworCisgICAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIu
ZGVzaXJlZFNpemUsIDAsICcyIHJlYWRzLCA2IGVucXVldWVzOiBkZXNpcmVkU2l6ZSBzaG91bGQg
YmUgMCcpOworICAgICAgY29udHJvbGxlci5lbnF1ZXVlKCdnJyk7CisgICAgICBhc3NlcnRfZXF1
YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIC0xLCAnMiByZWFkcywgNyBlbnF1ZXVlczogZGVz
aXJlZFNpemUgc2hvdWxkIGJlIC0xJyk7CisKKyAgICAgIHJldHVybiByZWFkZXIucmVhZCgpOwor
ICAgIH0pCisgICAgLnRoZW4ocmVzdWx0ID0+IHsKKyAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxz
KHJlc3VsdCwgeyB2YWx1ZTogJ2MnLCBkb25lOiBmYWxzZSB9LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJzNyZCByZWFkIGdpdmVzIGJhY2sgdGhlIDNyZCBjaHVuayBlbnF1ZXVlZCAocXVl
dWUgbm93IGNvbnRhaW5zIDQgY2h1bmtzKScpOworICAgICAgcmV0dXJuIHJlYWRlci5yZWFkKCk7
CisgICAgfSkKKyAgICAudGhlbihyZXN1bHQgPT4geworICAgICAgYXNzZXJ0X29iamVjdF9lcXVh
bHMocmVzdWx0LCB7IHZhbHVlOiAnZCcsIGRvbmU6IGZhbHNlIH0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnNHRoIHJlYWQgZ2l2ZXMgYmFjayB0aGUgNHRoIGNodW5rIGVucXVldWVkIChx
dWV1ZSBub3cgY29udGFpbnMgMyBjaHVua3MpJyk7CisgICAgICByZXR1cm4gcmVhZGVyLnJlYWQo
KTsKKyAgICB9KQorICAgIC50aGVuKHJlc3VsdCA9PiB7CisgICAgICBhc3NlcnRfb2JqZWN0X2Vx
dWFscyhyZXN1bHQsIHsgdmFsdWU6ICdlJywgZG9uZTogZmFsc2UgfSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICc1dGggcmVhZCBnaXZlcyBiYWNrIHRoZSA1dGggY2h1bmsgZW5xdWV1ZWQg
KHF1ZXVlIG5vdyBjb250YWlucyAyIGNodW5rcyknKTsKKyAgICAgIHJldHVybiByZWFkZXIucmVh
ZCgpOworICAgIH0pCisgICAgLnRoZW4ocmVzdWx0ID0+IHsKKyAgICAgIGFzc2VydF9vYmplY3Rf
ZXF1YWxzKHJlc3VsdCwgeyB2YWx1ZTogJ2YnLCBkb25lOiBmYWxzZSB9LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJzZ0aCByZWFkIGdpdmVzIGJhY2sgdGhlIDZ0aCBjaHVuayBlbnF1ZXVl
ZCAocXVldWUgbm93IGNvbnRhaW5zIDAgY2h1bmtzKScpOworCisgICAgICBhc3NlcnRfZXF1YWxz
KGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDMsICc2IHJlYWRzLCA3IGVucXVldWVzOiBkZXNpcmVk
U2l6ZSBzaG91bGQgYmUgMycpOworICAgICAgY29udHJvbGxlci5lbnF1ZXVlKCdoJyk7CisgICAg
ICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDIsICc2IHJlYWRzLCA4IGVu
cXVldWVzOiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUgMicpOworICAgICAgY29udHJvbGxlci5lbnF1
ZXVlKCdpJyk7CisgICAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDEs
ICc2IHJlYWRzLCA5IGVucXVldWVzOiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUgMScpOworICAgICAg
Y29udHJvbGxlci5lbnF1ZXVlKCdqJyk7CisgICAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIu
ZGVzaXJlZFNpemUsIDAsICc2IHJlYWRzLCAxMCBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxk
IGJlIDAnKTsKKyAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnaycpOworICAgICAgYXNzZXJ0X2Vx
dWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAtMSwgJzYgcmVhZHMsIDExIGVucXVldWVzOiBk
ZXNpcmVkU2l6ZSBzaG91bGQgYmUgLTEnKTsKKyAgICB9KTsKKworfSwgJ0NvcnJlY3RseSBnb3Zl
cm5zIGEgUmVhZGFibGVTdHJlYW1Db250cm9sbGVyXCdzIGRlc2lyZWRTaXplIHByb3BlcnR5IChI
V00gPSA0KScpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvY291bnQtcXVldWluZy1zdHJhdGVn
eS1pbnRlZ3JhdGlvbi5hbnkud29ya2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2NvdW50
LXF1ZXVpbmctc3RyYXRlZ3ktaW50ZWdyYXRpb24uYW55Lndvcmtlci1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNjA2MzNjYTA3ZmQxNmQ5YjE3YjVhNDYyNTQzMzA2OGI5MTVhMjBkYwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3ktaW50ZWdyYXRp
b24uYW55Lndvcmtlci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw2IEBACisKK1BBU1MgQ2FuIGNv
bnN0cnVjdCBhIHJlYWRhYmxlIHN0cmVhbSB3aXRoIGEgdmFsaWQgQ291bnRRdWV1aW5nU3RyYXRl
Z3kgCitQQVNTIENvcnJlY3RseSBnb3Zlcm5zIGEgUmVhZGFibGVTdHJlYW1Db250cm9sbGVyJ3Mg
ZGVzaXJlZFNpemUgcHJvcGVydHkgKEhXTSA9IDApIAorUEFTUyBDb3JyZWN0bHkgZ292ZXJucyBh
IFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlcidzIGRlc2lyZWRTaXplIHByb3BlcnR5IChIV00gPSAx
KSAKK1BBU1MgQ29ycmVjdGx5IGdvdmVybnMgYSBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIncyBk
ZXNpcmVkU2l6ZSBwcm9wZXJ0eSAoSFdNID0gNCkgCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1z
L2NvdW50LXF1ZXVpbmctc3RyYXRlZ3ktaW50ZWdyYXRpb24uYW55Lndvcmtlci5odG1sIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxl
LXN0cmVhbXMvY291bnQtcXVldWluZy1zdHJhdGVneS1pbnRlZ3JhdGlvbi5hbnkud29ya2VyLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMjM4MjkxMzUyOGU2OTNiM2E1ZDU2YzY2MGE0NTA2MDk4MGI1NDhjMwot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3ktaW50
ZWdyYXRpb24uYW55Lndvcmtlci5odG1sCkBAIC0wLDAgKzEgQEAKKzwhLS0gVGhpcyBmaWxlIGlz
IHJlcXVpcmVkIGZvciBXZWJLaXQgdGVzdCBpbmZyYXN0cnVjdHVyZSB0byBydW4gdGhlIHRlbXBs
YXRlZCB0ZXN0IC0tPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJs
ZS1zdHJlYW1zL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3ktaW50ZWdyYXRpb24uZGVkaWNhdGVkd29y
a2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3ktaW50
ZWdyYXRpb24uZGVkaWNhdGVkd29ya2VyLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggNjA2MzNjYTA3ZmQxNmQ5YjE3YjVhNDYyNTQzMzA2OGI5MTVhMjBkYy4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9j
b3VudC1xdWV1aW5nLXN0cmF0ZWd5LWludGVncmF0aW9uLmRlZGljYXRlZHdvcmtlci1leHBlY3Rl
ZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAgQEAKLQotUEFTUyBDYW4gY29uc3RydWN0
IGEgcmVhZGFibGUgc3RyZWFtIHdpdGggYSB2YWxpZCBDb3VudFF1ZXVpbmdTdHJhdGVneSAKLVBB
U1MgQ29ycmVjdGx5IGdvdmVybnMgYSBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIncyBkZXNpcmVk
U2l6ZSBwcm9wZXJ0eSAoSFdNID0gMCkgCi1QQVNTIENvcnJlY3RseSBnb3Zlcm5zIGEgUmVhZGFi
bGVTdHJlYW1Db250cm9sbGVyJ3MgZGVzaXJlZFNpemUgcHJvcGVydHkgKEhXTSA9IDEpIAotUEFT
UyBDb3JyZWN0bHkgZ292ZXJucyBhIFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlcidzIGRlc2lyZWRT
aXplIHByb3BlcnR5IChIV00gPSA0KSAKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvY291bnQt
cXVldWluZy1zdHJhdGVneS1pbnRlZ3JhdGlvbi5kZWRpY2F0ZWR3b3JrZXIuaHRtbCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1z
dHJlYW1zL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3ktaW50ZWdyYXRpb24uZGVkaWNhdGVkd29ya2Vy
Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU5YmNiMjFiMDFmYmVhMDEwOGRh
MjJjOWVmZjJhNjQ3NTkwNmM2NjEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
dHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvY291bnQtcXVldWluZy1zdHJhdGVneS1pbnRlZ3JhdGlv
bi5kZWRpY2F0ZWR3b3JrZXIuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLTwh
RE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHRpdGxlPmNvdW50LXF1ZXVp
bmctc3RyYXRlZ3ktaW50ZWdyYXRpb24uanMgZGVkaWNhdGVkIHdvcmtlciB3cmFwcGVyIGZpbGU8
L3RpdGxlPgotCi08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3Jp
cHQ+Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3Jp
cHQ+Ci0KLTxzY3JpcHQ+Ci0ndXNlIHN0cmljdCc7Ci1mZXRjaF90ZXN0c19mcm9tX3dvcmtlcihu
ZXcgV29ya2VyKCdjb3VudC1xdWV1aW5nLXN0cmF0ZWd5LWludGVncmF0aW9uLmpzJykpOwotPC9z
Y3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5LWlu
dGVncmF0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5LWludGVn
cmF0aW9uLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg5ZTJkOTlmYzdjZjY5
YjA1NjlhOTlhM2Y1NmJhZGYwZWFhZDhlMDEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvY291bnQtcXVldWluZy1zdHJhdGVneS1pbnRl
Z3JhdGlvbi5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotPCFET0NUWVBFIGh0
bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08dGl0bGU+Y291bnQtcXVldWluZy1zdHJhdGVn
eS1pbnRlZ3JhdGlvbi5qcyBicm93c2VyIGNvbnRleHQgd3JhcHBlciBmaWxlPC90aXRsZT4KLQot
PHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlw
dCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotCi0KLQot
PHNjcmlwdCBzcmM9ImNvdW50LXF1ZXVpbmctc3RyYXRlZ3ktaW50ZWdyYXRpb24uanMiPjwvc2Ny
aXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvY291bnQtcXVldWluZy1zdHJhdGVneS1pbnRl
Z3JhdGlvbi5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3ktaW50ZWdyYXRp
b24uanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY1YzhiOGNmMDAyOGI0N2Y3YTFi
Njg4NzNhYzZhYWM4NTgzOTZlZjUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
dHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvY291bnQtcXVldWluZy1zdHJhdGVneS1pbnRlZ3JhdGlv
bi5qcworKysgL2Rldi9udWxsCkBAIC0xLDIxMyArMCwwIEBACi0ndXNlIHN0cmljdCc7Ci0KLWlm
IChzZWxmLmltcG9ydFNjcmlwdHMpIHsKLSAgc2VsZi5pbXBvcnRTY3JpcHRzKCcvcmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzLmpzJyk7Ci19Ci0KLXRlc3QoKCkgPT4gewotCi0gIG5ldyBSZWFkYWJsZVN0
cmVhbSh7fSwgbmV3IENvdW50UXVldWluZ1N0cmF0ZWd5KHsgaGlnaFdhdGVyTWFyazogNCB9KSk7
Ci0KLX0sICdDYW4gY29uc3RydWN0IGEgcmVhZGFibGUgc3RyZWFtIHdpdGggYSB2YWxpZCBDb3Vu
dFF1ZXVpbmdTdHJhdGVneScpOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotCi0gIGxldCBjb250
cm9sbGVyOwotICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSgKLSAgICB7Ci0gICAgICBz
dGFydChjKSB7Ci0gICAgICAgIGNvbnRyb2xsZXIgPSBjOwotICAgICAgfQotICAgIH0sCi0gICAg
bmV3IENvdW50UXVldWluZ1N0cmF0ZWd5KHsgaGlnaFdhdGVyTWFyazogMCB9KQotICApOwotICBj
b25zdCByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKLQotICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xs
ZXIuZGVzaXJlZFNpemUsIDAsICcwIHJlYWRzLCAwIGVucXVldWVzOiBkZXNpcmVkU2l6ZSBzaG91
bGQgYmUgMCcpOwotICBjb250cm9sbGVyLmVucXVldWUoJ2EnKTsKLSAgYXNzZXJ0X2VxdWFscyhj
b250cm9sbGVyLmRlc2lyZWRTaXplLCAtMSwgJzAgcmVhZHMsIDEgZW5xdWV1ZTogZGVzaXJlZFNp
emUgc2hvdWxkIGJlIC0xJyk7Ci0gIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYicpOwotICBhc3NlcnRf
ZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIC0yLCAnMCByZWFkcywgMiBlbnF1ZXVlczog
ZGVzaXJlZFNpemUgc2hvdWxkIGJlIC0yJyk7Ci0gIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYycpOwot
ICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIC0zLCAnMCByZWFkcywgMyBl
bnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIC0zJyk7Ci0gIGNvbnRyb2xsZXIuZW5xdWV1
ZSgnZCcpOwotICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIC00LCAnMCBy
ZWFkcywgNCBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIC00Jyk7Ci0KLSAgcmV0dXJu
IHJlYWRlci5yZWFkKCkKLSAgICAudGhlbihyZXN1bHQgPT4gewotICAgICAgYXNzZXJ0X29iamVj
dF9lcXVhbHMocmVzdWx0LCB7IHZhbHVlOiAnYScsIGRvbmU6IGZhbHNlIH0sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAnMXN0IHJlYWQgZ2l2ZXMgYmFjayB0aGUgMXN0IGNodW5rIGVucXVl
dWVkIChxdWV1ZSBub3cgY29udGFpbnMgMyBjaHVua3MpJyk7Ci0gICAgICByZXR1cm4gcmVhZGVy
LnJlYWQoKTsKLSAgICB9KQotICAgIC50aGVuKHJlc3VsdCA9PiB7Ci0gICAgICBhc3NlcnRfb2Jq
ZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6ICdiJywgZG9uZTogZmFsc2UgfSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICcybmQgcmVhZCBnaXZlcyBiYWNrIHRoZSAybmQgY2h1bmsgZW5x
dWV1ZWQgKHF1ZXVlIG5vdyBjb250YWlucyAyIGNodW5rcyknKTsKLSAgICAgIHJldHVybiByZWFk
ZXIucmVhZCgpOwotICAgIH0pCi0gICAgLnRoZW4ocmVzdWx0ID0+IHsKLSAgICAgIGFzc2VydF9v
YmplY3RfZXF1YWxzKHJlc3VsdCwgeyB2YWx1ZTogJ2MnLCBkb25lOiBmYWxzZSB9LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJzNyZCByZWFkIGdpdmVzIGJhY2sgdGhlIDNyZCBjaHVuayBl
bnF1ZXVlZCAocXVldWUgbm93IGNvbnRhaW5zIDEgY2h1bmspJyk7Ci0KLSAgICAgIGFzc2VydF9l
cXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgLTEsICczIHJlYWRzLCA0IGVucXVldWVzOiBk
ZXNpcmVkU2l6ZSBzaG91bGQgYmUgLTEnKTsKLSAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnZScp
OwotICAgICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAtMiwgJzMgcmVh
ZHMsIDUgZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAtMicpOwotCi0gICAgICByZXR1
cm4gcmVhZGVyLnJlYWQoKTsKLSAgICB9KQotICAgIC50aGVuKHJlc3VsdCA9PiB7Ci0gICAgICBh
c3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6ICdkJywgZG9uZTogZmFsc2UgfSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICc0dGggcmVhZCBnaXZlcyBiYWNrIHRoZSA0dGgg
Y2h1bmsgZW5xdWV1ZWQgKHF1ZXVlIG5vdyBjb250YWlucyAxIGNodW5rcyknKTsKLSAgICAgIHJl
dHVybiByZWFkZXIucmVhZCgpOwotCi0gICAgfSkudGhlbihyZXN1bHQgPT4gewotICAgICAgYXNz
ZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0LCB7IHZhbHVlOiAnZScsIGRvbmU6IGZhbHNlIH0sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAnNXRoIHJlYWQgZ2l2ZXMgYmFjayB0aGUgNXRoIGNo
dW5rIGVucXVldWVkIChxdWV1ZSBub3cgY29udGFpbnMgMCBjaHVua3MpJyk7Ci0KLSAgICAgIGFz
c2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMCwgJzUgcmVhZHMsIDUgZW5xdWV1
ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAwJyk7Ci0gICAgICBjb250cm9sbGVyLmVucXVldWUo
J2YnKTsKLSAgICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgLTEsICc1
IHJlYWRzLCA2IGVucXVldWVzOiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUgLTEnKTsKLSAgICAgIGNv
bnRyb2xsZXIuZW5xdWV1ZSgnZycpOwotICAgICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRl
c2lyZWRTaXplLCAtMiwgJzUgcmVhZHMsIDcgZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBi
ZSAtMicpOwotICAgIH0pOwotCi19LCAnQ29ycmVjdGx5IGdvdmVybnMgYSBSZWFkYWJsZVN0cmVh
bUNvbnRyb2xsZXJcJ3MgZGVzaXJlZFNpemUgcHJvcGVydHkgKEhXTSA9IDApJyk7Ci0KLXByb21p
c2VfdGVzdCgoKSA9PiB7Ci0KLSAgbGV0IGNvbnRyb2xsZXI7Ci0gIGNvbnN0IHJzID0gbmV3IFJl
YWRhYmxlU3RyZWFtKAotICAgIHsKLSAgICAgIHN0YXJ0KGMpIHsKLSAgICAgICAgY29udHJvbGxl
ciA9IGM7Ci0gICAgICB9Ci0gICAgfSwKLSAgICBuZXcgQ291bnRRdWV1aW5nU3RyYXRlZ3koeyBo
aWdoV2F0ZXJNYXJrOiAxIH0pCi0gICk7Ci0gIGNvbnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcigp
OwotCi0gIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMSwgJzAgcmVhZHMs
IDAgZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAxJyk7Ci0gIGNvbnRyb2xsZXIuZW5x
dWV1ZSgnYScpOwotICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDAsICcw
IHJlYWRzLCAxIGVucXVldWU6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAwJyk7Ci0gIGNvbnRyb2xs
ZXIuZW5xdWV1ZSgnYicpOwotICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUs
IC0xLCAnMCByZWFkcywgMiBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIC0xJyk7Ci0g
IGNvbnRyb2xsZXIuZW5xdWV1ZSgnYycpOwotICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVz
aXJlZFNpemUsIC0yLCAnMCByZWFkcywgMyBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJl
IC0yJyk7Ci0gIGNvbnRyb2xsZXIuZW5xdWV1ZSgnZCcpOwotICBhc3NlcnRfZXF1YWxzKGNvbnRy
b2xsZXIuZGVzaXJlZFNpemUsIC0zLCAnMCByZWFkcywgNCBlbnF1ZXVlczogZGVzaXJlZFNpemUg
c2hvdWxkIGJlIC0zJyk7Ci0KLSAgcmV0dXJuIHJlYWRlci5yZWFkKCkKLSAgICAudGhlbihyZXN1
bHQgPT4gewotICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0LCB7IHZhbHVlOiAnYScs
IGRvbmU6IGZhbHNlIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAnMXN0IHJlYWQgZ2l2
ZXMgYmFjayB0aGUgMXN0IGNodW5rIGVucXVldWVkIChxdWV1ZSBub3cgY29udGFpbnMgMyBjaHVu
a3MpJyk7Ci0gICAgICByZXR1cm4gcmVhZGVyLnJlYWQoKTsKLSAgICB9KQotICAgIC50aGVuKHJl
c3VsdCA9PiB7Ci0gICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6ICdi
JywgZG9uZTogZmFsc2UgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICcybmQgcmVhZCBn
aXZlcyBiYWNrIHRoZSAybmQgY2h1bmsgZW5xdWV1ZWQgKHF1ZXVlIG5vdyBjb250YWlucyAyIGNo
dW5rcyknKTsKLSAgICAgIHJldHVybiByZWFkZXIucmVhZCgpOwotICAgIH0pCi0gICAgLnRoZW4o
cmVzdWx0ID0+IHsKLSAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdCwgeyB2YWx1ZTog
J2MnLCBkb25lOiBmYWxzZSB9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJzNyZCByZWFk
IGdpdmVzIGJhY2sgdGhlIDNyZCBjaHVuayBlbnF1ZXVlZCAocXVldWUgbm93IGNvbnRhaW5zIDEg
Y2h1bmspJyk7Ci0KLSAgICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwg
MCwgJzMgcmVhZHMsIDQgZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAwJyk7Ci0gICAg
ICBjb250cm9sbGVyLmVucXVldWUoJ2UnKTsKLSAgICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxl
ci5kZXNpcmVkU2l6ZSwgLTEsICczIHJlYWRzLCA1IGVucXVldWVzOiBkZXNpcmVkU2l6ZSBzaG91
bGQgYmUgLTEnKTsKLQotICAgICAgcmV0dXJuIHJlYWRlci5yZWFkKCk7Ci0gICAgfSkKLSAgICAu
dGhlbihyZXN1bHQgPT4gewotICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0LCB7IHZh
bHVlOiAnZCcsIGRvbmU6IGZhbHNlIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAnNHRo
IHJlYWQgZ2l2ZXMgYmFjayB0aGUgNHRoIGNodW5rIGVucXVldWVkIChxdWV1ZSBub3cgY29udGFp
bnMgMSBjaHVua3MpJyk7Ci0gICAgICByZXR1cm4gcmVhZGVyLnJlYWQoKTsKLSAgICB9KQotICAg
IC50aGVuKHJlc3VsdCA9PiB7Ci0gICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQsIHsg
dmFsdWU6ICdlJywgZG9uZTogZmFsc2UgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICc1
dGggcmVhZCBnaXZlcyBiYWNrIHRoZSA1dGggY2h1bmsgZW5xdWV1ZWQgKHF1ZXVlIG5vdyBjb250
YWlucyAwIGNodW5rcyknKTsKLQotICAgICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2ly
ZWRTaXplLCAxLCAnNSByZWFkcywgNSBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIDEn
KTsKLSAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnZicpOwotICAgICAgYXNzZXJ0X2VxdWFscyhj
b250cm9sbGVyLmRlc2lyZWRTaXplLCAwLCAnNSByZWFkcywgNiBlbnF1ZXVlczogZGVzaXJlZFNp
emUgc2hvdWxkIGJlIDAnKTsKLSAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnZycpOwotICAgICAg
YXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAtMSwgJzUgcmVhZHMsIDcgZW5x
dWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAtMScpOwotICAgIH0pOwotCi19LCAnQ29ycmVj
dGx5IGdvdmVybnMgYSBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJcJ3MgZGVzaXJlZFNpemUgcHJv
cGVydHkgKEhXTSA9IDEpJyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgbGV0IGNvbnRy
b2xsZXI7Ci0gIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKAotICAgIHsKLSAgICAgIHN0
YXJ0KGMpIHsKLSAgICAgICAgY29udHJvbGxlciA9IGM7Ci0gICAgICB9Ci0gICAgfSwKLSAgICBu
ZXcgQ291bnRRdWV1aW5nU3RyYXRlZ3koeyBoaWdoV2F0ZXJNYXJrOiA0IH0pCi0gICk7Ci0gIGNv
bnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcigpOwotCi0gIGFzc2VydF9lcXVhbHMoY29udHJvbGxl
ci5kZXNpcmVkU2l6ZSwgNCwgJzAgcmVhZHMsIDAgZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3Vs
ZCBiZSA0Jyk7Ci0gIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYScpOwotICBhc3NlcnRfZXF1YWxzKGNv
bnRyb2xsZXIuZGVzaXJlZFNpemUsIDMsICcwIHJlYWRzLCAxIGVucXVldWU6IGRlc2lyZWRTaXpl
IHNob3VsZCBiZSAzJyk7Ci0gIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYicpOwotICBhc3NlcnRfZXF1
YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDIsICcwIHJlYWRzLCAyIGVucXVldWVzOiBkZXNp
cmVkU2l6ZSBzaG91bGQgYmUgMicpOwotICBjb250cm9sbGVyLmVucXVldWUoJ2MnKTsKLSAgYXNz
ZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAxLCAnMCByZWFkcywgMyBlbnF1ZXVl
czogZGVzaXJlZFNpemUgc2hvdWxkIGJlIDEnKTsKLSAgY29udHJvbGxlci5lbnF1ZXVlKCdkJyk7
Ci0gIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMCwgJzAgcmVhZHMsIDQg
ZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAwJyk7Ci0gIGNvbnRyb2xsZXIuZW5xdWV1
ZSgnZScpOwotICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIC0xLCAnMCBy
ZWFkcywgNSBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIC0xJyk7Ci0gIGNvbnRyb2xs
ZXIuZW5xdWV1ZSgnZicpOwotICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUs
IC0yLCAnMCByZWFkcywgNiBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIC0yJyk7Ci0K
LQotICByZXR1cm4gcmVhZGVyLnJlYWQoKQotICAgIC50aGVuKHJlc3VsdCA9PiB7Ci0gICAgICBh
c3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6ICdhJywgZG9uZTogZmFsc2UgfSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICcxc3QgcmVhZCBnaXZlcyBiYWNrIHRoZSAxc3Qg
Y2h1bmsgZW5xdWV1ZWQgKHF1ZXVlIG5vdyBjb250YWlucyA1IGNodW5rcyknKTsKLSAgICAgIHJl
dHVybiByZWFkZXIucmVhZCgpOwotICAgIH0pCi0gICAgLnRoZW4ocmVzdWx0ID0+IHsKLSAgICAg
IGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdCwgeyB2YWx1ZTogJ2InLCBkb25lOiBmYWxzZSB9
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJzJuZCByZWFkIGdpdmVzIGJhY2sgdGhlIDJu
ZCBjaHVuayBlbnF1ZXVlZCAocXVldWUgbm93IGNvbnRhaW5zIDQgY2h1bmtzKScpOwotCi0gICAg
ICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDAsICcyIHJlYWRzLCA2IGVu
cXVldWVzOiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUgMCcpOwotICAgICAgY29udHJvbGxlci5lbnF1
ZXVlKCdnJyk7Ci0gICAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIC0x
LCAnMiByZWFkcywgNyBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIC0xJyk7Ci0KLSAg
ICAgIHJldHVybiByZWFkZXIucmVhZCgpOwotICAgIH0pCi0gICAgLnRoZW4ocmVzdWx0ID0+IHsK
LSAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdCwgeyB2YWx1ZTogJ2MnLCBkb25lOiBm
YWxzZSB9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJzNyZCByZWFkIGdpdmVzIGJhY2sg
dGhlIDNyZCBjaHVuayBlbnF1ZXVlZCAocXVldWUgbm93IGNvbnRhaW5zIDQgY2h1bmtzKScpOwot
ICAgICAgcmV0dXJuIHJlYWRlci5yZWFkKCk7Ci0gICAgfSkKLSAgICAudGhlbihyZXN1bHQgPT4g
ewotICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0LCB7IHZhbHVlOiAnZCcsIGRvbmU6
IGZhbHNlIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAnNHRoIHJlYWQgZ2l2ZXMgYmFj
ayB0aGUgNHRoIGNodW5rIGVucXVldWVkIChxdWV1ZSBub3cgY29udGFpbnMgMyBjaHVua3MpJyk7
Ci0gICAgICByZXR1cm4gcmVhZGVyLnJlYWQoKTsKLSAgICB9KQotICAgIC50aGVuKHJlc3VsdCA9
PiB7Ci0gICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6ICdlJywgZG9u
ZTogZmFsc2UgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICc1dGggcmVhZCBnaXZlcyBi
YWNrIHRoZSA1dGggY2h1bmsgZW5xdWV1ZWQgKHF1ZXVlIG5vdyBjb250YWlucyAyIGNodW5rcykn
KTsKLSAgICAgIHJldHVybiByZWFkZXIucmVhZCgpOwotICAgIH0pCi0gICAgLnRoZW4ocmVzdWx0
ID0+IHsKLSAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdCwgeyB2YWx1ZTogJ2YnLCBk
b25lOiBmYWxzZSB9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJzZ0aCByZWFkIGdpdmVz
IGJhY2sgdGhlIDZ0aCBjaHVuayBlbnF1ZXVlZCAocXVldWUgbm93IGNvbnRhaW5zIDAgY2h1bmtz
KScpOwotCi0gICAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDMsICc2
IHJlYWRzLCA3IGVucXVldWVzOiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUgMycpOwotICAgICAgY29u
dHJvbGxlci5lbnF1ZXVlKCdoJyk7Ci0gICAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVz
aXJlZFNpemUsIDIsICc2IHJlYWRzLCA4IGVucXVldWVzOiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUg
MicpOwotICAgICAgY29udHJvbGxlci5lbnF1ZXVlKCdpJyk7Ci0gICAgICBhc3NlcnRfZXF1YWxz
KGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDEsICc2IHJlYWRzLCA5IGVucXVldWVzOiBkZXNpcmVk
U2l6ZSBzaG91bGQgYmUgMScpOwotICAgICAgY29udHJvbGxlci5lbnF1ZXVlKCdqJyk7Ci0gICAg
ICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDAsICc2IHJlYWRzLCAxMCBl
bnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIDAnKTsKLSAgICAgIGNvbnRyb2xsZXIuZW5x
dWV1ZSgnaycpOwotICAgICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAt
MSwgJzYgcmVhZHMsIDExIGVucXVldWVzOiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUgLTEnKTsKLSAg
ICB9KTsKLQotfSwgJ0NvcnJlY3RseSBnb3Zlcm5zIGEgUmVhZGFibGVTdHJlYW1Db250cm9sbGVy
XCdzIGRlc2lyZWRTaXplIHByb3BlcnR5IChIV00gPSA0KScpOwotCi1kb25lKCk7CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
cmVhZGFibGUtc3RyZWFtcy9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5LWludGVncmF0aW9uLnNlcnZp
Y2V3b3JrZXIuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvY291bnQtcXVldWluZy1z
dHJhdGVneS1pbnRlZ3JhdGlvbi5zZXJ2aWNld29ya2VyLmh0dHBzLWV4cGVjdGVkLnR4dApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWJkODA0NDc3MzA0MGMyODczMDFkOTAxMzBkMWY4
MjE1YmQwNTY1ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVh
ZGFibGUtc3RyZWFtcy9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5LWludGVncmF0aW9uLnNlcnZpY2V3
b3JrZXIuaHR0cHMtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNyArMCwwIEBACi0K
LVBBU1MgU2VydmljZSB3b3JrZXIgdGVzdCBzZXR1cCAKLVBBU1MgQ2FuIGNvbnN0cnVjdCBhIHJl
YWRhYmxlIHN0cmVhbSB3aXRoIGEgdmFsaWQgQ291bnRRdWV1aW5nU3RyYXRlZ3kgCi1QQVNTIENv
cnJlY3RseSBnb3Zlcm5zIGEgUmVhZGFibGVTdHJlYW1Db250cm9sbGVyJ3MgZGVzaXJlZFNpemUg
cHJvcGVydHkgKEhXTSA9IDApIAotUEFTUyBDb3JyZWN0bHkgZ292ZXJucyBhIFJlYWRhYmxlU3Ry
ZWFtQ29udHJvbGxlcidzIGRlc2lyZWRTaXplIHByb3BlcnR5IChIV00gPSAxKSAKLVBBU1MgQ29y
cmVjdGx5IGdvdmVybnMgYSBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIncyBkZXNpcmVkU2l6ZSBw
cm9wZXJ0eSAoSFdNID0gNCkgCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2NvdW50LXF1ZXVp
bmctc3RyYXRlZ3ktaW50ZWdyYXRpb24uc2VydmljZXdvcmtlci5odHRwcy5odG1sIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0
cmVhbXMvY291bnQtcXVldWluZy1zdHJhdGVneS1pbnRlZ3JhdGlvbi5zZXJ2aWNld29ya2VyLmh0
dHBzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAyOWFjNzY1ZDRiODU3MzA3
ODVjYmYwMTBjNTFjMjE4ZTEyZWRkZjQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvY291bnQtcXVldWluZy1zdHJhdGVneS1pbnRlZ3Jh
dGlvbi5zZXJ2aWNld29ya2VyLmh0dHBzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCww
IEBACi08IURPQ1RZUEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTx0aXRsZT5jb3Vu
dC1xdWV1aW5nLXN0cmF0ZWd5LWludGVncmF0aW9uLmpzIHNlcnZpY2Ugd29ya2VyIHdyYXBwZXIg
ZmlsZTwvdGl0bGU+Ci0KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48
L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48
L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL3Jl
c291cmNlcy90ZXN0LWhlbHBlcnMuc3ViLmpzIj48L3NjcmlwdD4KLQotPHNjcmlwdD4KLSd1c2Ug
c3RyaWN0JzsKLXNlcnZpY2Vfd29ya2VyX3Rlc3QoJ2NvdW50LXF1ZXVpbmctc3RyYXRlZ3ktaW50
ZWdyYXRpb24uanMnLCAnU2VydmljZSB3b3JrZXIgdGVzdCBzZXR1cCcpOwotPC9zY3JpcHQ+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5LWludGVncmF0aW9u
LnNoYXJlZHdvcmtlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9jb3VudC1xdWV1aW5nLXN0
cmF0ZWd5LWludGVncmF0aW9uLnNoYXJlZHdvcmtlci1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDA5ZDVkMjUwOWQ3ODQ3ZThjZDZmZTY2MDZhYTYwY2RkMzNhYTQ3
NGUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0
cmVhbXMvY291bnQtcXVldWluZy1zdHJhdGVneS1pbnRlZ3JhdGlvbi5zaGFyZWR3b3JrZXItZXhw
ZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1DT05TT0xFIE1FU1NBR0U6
IFJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBTaGFyZWRXb3JrZXIKLQotSGFy
bmVzcyBFcnJvciAoRkFJTCksIG1lc3NhZ2UgPSBSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2
YXJpYWJsZTogU2hhcmVkV29ya2VyCi0KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvY291bnQt
cXVldWluZy1zdHJhdGVneS1pbnRlZ3JhdGlvbi5zaGFyZWR3b3JrZXIuaHRtbCBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJl
YW1zL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3ktaW50ZWdyYXRpb24uc2hhcmVkd29ya2VyLmh0bWwK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdhYTZmNTQwZGMwODMzZGY3MDkwNDhmODEx
OTIxNjFjMDcwNjg3MDIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
L3JlYWRhYmxlLXN0cmVhbXMvY291bnQtcXVldWluZy1zdHJhdGVneS1pbnRlZ3JhdGlvbi5zaGFy
ZWR3b3JrZXIuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLTwhRE9DVFlQRSBo
dG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHRpdGxlPmNvdW50LXF1ZXVpbmctc3RyYXRl
Z3ktaW50ZWdyYXRpb24uanMgc2hhcmVkIHdvcmtlciB3cmFwcGVyIGZpbGU8L3RpdGxlPgotCi08
c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0
IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci0KLTxzY3Jp
cHQ+Ci0ndXNlIHN0cmljdCc7Ci1mZXRjaF90ZXN0c19mcm9tX3dvcmtlcihuZXcgU2hhcmVkV29y
a2VyKCdjb3VudC1xdWV1aW5nLXN0cmF0ZWd5LWludGVncmF0aW9uLmpzJykpOwotPC9zY3JpcHQ+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9kZWZhdWx0LXJlYWRlci5hbnktZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3Jl
YWRhYmxlLXN0cmVhbXMvZGVmYXVsdC1yZWFkZXIuYW55LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5lNDdlNzVhYmI5NjQwNmU5ODg3ZmNiNjExMWU5MGZkYWNkNWZjM2ZlCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
L3JlYWRhYmxlLXN0cmVhbXMvZGVmYXVsdC1yZWFkZXIuYW55LWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDM0IEBACisKK0ZBSUwgUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyIGNvbnN0cnVjdG9y
IHNob3VsZCBnZXQgYSBSZWFkYWJsZVN0cmVhbSBvYmplY3QgYXMgYXJndW1lbnQgYXNzZXJ0X3Ro
cm93c19qczogZnVuY3Rpb24gIigpID0+IG5ldyBSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIo
J3BvdGF0bycpIiB0aHJldyBvYmplY3QgIlJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlh
YmxlOiBSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIiICgiUmVmZXJlbmNlRXJyb3IiKSBleHBl
Y3RlZCBpbnN0YW5jZSBvZiBmdW5jdGlvbiAiZnVuY3Rpb24gVHlwZUVycm9yKCkgeworICAgIFtu
YXRpdmUgY29kZV0KK30iICgiVHlwZUVycm9yIikKK0ZBSUwgUmVhZGFibGVTdHJlYW1EZWZhdWx0
UmVhZGVyIGNsb3NlZCBzaG91bGQgYWx3YXlzIHJldHVybiB0aGUgc2FtZSBwcm9taXNlIG9iamVj
dCBDYW4ndCBmaW5kIHZhcmlhYmxlOiBSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIKK0ZBSUwg
Q29uc3RydWN0aW5nIGEgUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyIGRpcmVjdGx5IHNob3Vs
ZCBmYWlsIGlmIHRoZSBzdHJlYW0gaXMgYWxyZWFkeSBsb2NrZWQgKHZpYSBkaXJlY3QgY29uc3Ry
dWN0aW9uKSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIK
K0ZBSUwgR2V0dGluZyBhIFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlciB2aWEgZ2V0UmVhZGVy
IHNob3VsZCBmYWlsIGlmIHRoZSBzdHJlYW0gaXMgYWxyZWFkeSBsb2NrZWQgKHZpYSBkaXJlY3Qg
Y29uc3RydWN0aW9uKSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBSZWFkYWJsZVN0cmVhbURlZmF1bHRS
ZWFkZXIKK0ZBSUwgQ29uc3RydWN0aW5nIGEgUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyIGRp
cmVjdGx5IHNob3VsZCBmYWlsIGlmIHRoZSBzdHJlYW0gaXMgYWxyZWFkeSBsb2NrZWQgKHZpYSBn
ZXRSZWFkZXIpIGFzc2VydF90aHJvd3NfanM6IGNvbnN0cnVjdGluZyBkaXJlY3RseSBzaG91bGQg
ZmFpbCBmdW5jdGlvbiAiKCkgPT4gbmV3IFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlcihycyki
IHRocmV3IG9iamVjdCAiUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IFJlYWRh
YmxlU3RyZWFtRGVmYXVsdFJlYWRlciIgKCJSZWZlcmVuY2VFcnJvciIpIGV4cGVjdGVkIGluc3Rh
bmNlIG9mIGZ1bmN0aW9uICJmdW5jdGlvbiBUeXBlRXJyb3IoKSB7CisgICAgW25hdGl2ZSBjb2Rl
XQorfSIgKCJUeXBlRXJyb3IiKQorUEFTUyBHZXR0aW5nIGEgUmVhZGFibGVTdHJlYW1EZWZhdWx0
UmVhZGVyIHZpYSBnZXRSZWFkZXIgc2hvdWxkIGZhaWwgaWYgdGhlIHN0cmVhbSBpcyBhbHJlYWR5
IGxvY2tlZCAodmlhIGdldFJlYWRlcikgCitGQUlMIENvbnN0cnVjdGluZyBhIFJlYWRhYmxlU3Ry
ZWFtRGVmYXVsdFJlYWRlciBkaXJlY3RseSBzaG91bGQgYmUgT0sgaWYgdGhlIHN0cmVhbSBpcyBj
bG9zZWQgQ2FuJ3QgZmluZCB2YXJpYWJsZTogUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyCitG
QUlMIENvbnN0cnVjdGluZyBhIFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlciBkaXJlY3RseSBz
aG91bGQgYmUgT0sgaWYgdGhlIHN0cmVhbSBpcyBlcnJvcmVkIENhbid0IGZpbmQgdmFyaWFibGU6
IFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlcgorUEFTUyBSZWFkaW5nIGZyb20gYSByZWFkZXIg
Zm9yIGFuIGVtcHR5IHN0cmVhbSB3aWxsIHdhaXQgdW50aWwgYSBjaHVuayBpcyBhdmFpbGFibGUg
CitQQVNTIGNhbmNlbCgpIG9uIGEgcmVhZGVyIGRvZXMgbm90IHJlbGVhc2UgdGhlIHJlYWRlciAK
K1BBU1MgY2xvc2VkIHNob3VsZCBiZSBmdWxmaWxsZWQgYWZ0ZXIgc3RyZWFtIGlzIGNsb3NlZCAo
LmNsb3NlZCBhY2Nlc3MgYmVmb3JlIGFjcXVpcmluZykgCitQQVNTIGNsb3NlZCBzaG91bGQgYmUg
cmVqZWN0ZWQgYWZ0ZXIgcmVhZGVyIHJlbGVhc2VzIGl0cyBsb2NrIChtdWx0aXBsZSBzdHJlYW0g
bG9ja3MpIAorUEFTUyBNdWx0aXBsZSByZWFkZXJzIGNhbiBhY2Nlc3MgdGhlIHN0cmVhbSBpbiBz
ZXF1ZW5jZSAKK1BBU1MgQ2Fubm90IHVzZSBhbiBhbHJlYWR5LXJlbGVhc2VkIHJlYWRlciB0byB1
bmxvY2sgYSBzdHJlYW0gYWdhaW4gCitQQVNTIGNhbmNlbCgpIG9uIGEgcmVsZWFzZWQgcmVhZGVy
IGlzIGEgbm8tb3AgYW5kIGRvZXMgbm90IHBhc3MgdGhyb3VnaCAKK1BBU1MgR2V0dGluZyBhIHNl
Y29uZCByZWFkZXIgYWZ0ZXIgZXJyb3JpbmcgdGhlIHN0cmVhbSBhbmQgcmVsZWFzaW5nIHRoZSBy
ZWFkZXIgc2hvdWxkIHN1Y2NlZWQgCitQQVNTIFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlciBj
bG9zZWQgcHJvbWlzZSBzaG91bGQgYmUgcmVqZWN0ZWQgd2l0aCB1bmRlZmluZWQgaWYgdGhhdCBp
cyB0aGUgZXJyb3IgCitQQVNTIFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlcjogaWYgc3RhcnQg
cmVqZWN0cyB3aXRoIG5vIHBhcmFtZXRlciwgaXQgc2hvdWxkIGVycm9yIHRoZSBzdHJlYW0gd2l0
aCBhbiB1bmRlZmluZWQgZXJyb3IgCitQQVNTIEVycm9yaW5nIGEgUmVhZGFibGVTdHJlYW0gYWZ0
ZXIgY2hlY2tpbmcgY2xvc2VkIHNob3VsZCByZWplY3QgUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVh
ZGVyIGNsb3NlZCBwcm9taXNlIAorUEFTUyBFcnJvcmluZyBhIFJlYWRhYmxlU3RyZWFtIGJlZm9y
ZSBjaGVja2luZyBjbG9zZWQgc2hvdWxkIHJlamVjdCBSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFk
ZXIgY2xvc2VkIHByb21pc2UgCitQQVNTIFJlYWRpbmcgdHdpY2Ugb24gYSBzdHJlYW0gdGhhdCBn
ZXRzIGNsb3NlZCAKK1BBU1MgUmVhZGluZyB0d2ljZSBvbiBhIGNsb3NlZCBzdHJlYW0gCitQQVNT
IFJlYWRpbmcgdHdpY2Ugb24gYW4gZXJyb3JlZCBzdHJlYW0gCitQQVNTIFJlYWRpbmcgdHdpY2Ug
b24gYSBzdHJlYW0gdGhhdCBnZXRzIGVycm9yZWQgCitGQUlMIGdldFJlYWRlcigpIHNob3VsZCBj
YWxsIFRvU3RyaW5nKCkgb24gbW9kZSBhc3NlcnRfdGhyb3dzX2pzOiBnZXRSZWFkZXIoKSBzaG91
bGQgdGhyb3cgZnVuY3Rpb24gIigpID0+IHJzLmdldFJlYWRlcih7IG1vZGUgfSkiIHRocmV3IG9i
amVjdCAiUmFuZ2VFcnJvcjogSW52YWxpZCBtb2RlIGlzIHNwZWNpZmllZCIgKCJSYW5nZUVycm9y
IikgZXhwZWN0ZWQgaW5zdGFuY2Ugb2YgZnVuY3Rpb24gImZ1bmN0aW9uIFR5cGVFcnJvcigpIHsK
KyAgICBbbmF0aXZlIGNvZGVdCit9IiAoIlR5cGVFcnJvciIpCitQQVNTIGNvbnRyb2xsZXIuY2xv
c2UoKSBzaG91bGQgY2xlYXIgdGhlIGxpc3Qgb2YgcGVuZGluZyByZWFkIHJlcXVlc3RzIAorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9kZWZhdWx0LXJlYWRlci5hbnkuaHRtbCBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJl
YW1zL2RlZmF1bHQtcmVhZGVyLmFueS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzODI5MTM1MjhlNjkzYjNh
NWQ1NmM2NjBhNDUwNjA5ODBiNTQ4YzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9k
ZWZhdWx0LXJlYWRlci5hbnkuaHRtbApAQCAtMCwwICsxIEBACis8IS0tIFRoaXMgZmlsZSBpcyBy
ZXF1aXJlZCBmb3IgV2ViS2l0IHRlc3QgaW5mcmFzdHJ1Y3R1cmUgdG8gcnVuIHRoZSB0ZW1wbGF0
ZWQgdGVzdCAtLT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUt
c3RyZWFtcy9kZWZhdWx0LXJlYWRlci5hbnkuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9kZWZhdWx0LXJlYWRl
ci5hbnkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZmM1NWViYzViOGY2NzhiNDQ2Y2I2MDQ2ZmYyNTdmMmJlNGQ2
M2Q1MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2RlZmF1bHQtcmVhZGVyLmFueS5q
cwpAQCAtMCwwICsxLDQ2MyBAQAorLy8gTUVUQTogZ2xvYmFsPXdpbmRvdyx3b3JrZXIsanNzaGVs
bAorLy8gTUVUQTogc2NyaXB0PS4uL3Jlc291cmNlcy9ycy11dGlscy5qcworJ3VzZSBzdHJpY3Qn
OworCit0ZXN0KCgpID0+IHsKKworICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4g
bmV3IFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlcigncG90YXRvJykpOworICBhc3NlcnRfdGhy
b3dzX2pzKFR5cGVFcnJvciwgKCkgPT4gbmV3IFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlcih7
fSkpOworICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4gbmV3IFJlYWRhYmxlU3Ry
ZWFtRGVmYXVsdFJlYWRlcigpKTsKKworfSwgJ1JlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlciBj
b25zdHJ1Y3RvciBzaG91bGQgZ2V0IGEgUmVhZGFibGVTdHJlYW0gb2JqZWN0IGFzIGFyZ3VtZW50
Jyk7CisKK3Rlc3QoKCkgPT4geworCisgIGNvbnN0IHJzUmVhZGVyID0gbmV3IFJlYWRhYmxlU3Ry
ZWFtRGVmYXVsdFJlYWRlcihuZXcgUmVhZGFibGVTdHJlYW0oKSk7CisgIGFzc2VydF9lcXVhbHMo
cnNSZWFkZXIuY2xvc2VkLCByc1JlYWRlci5jbG9zZWQsICdjbG9zZWQgc2hvdWxkIHJldHVybiB0
aGUgc2FtZSBwcm9taXNlJyk7CisKK30sICdSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIgY2xv
c2VkIHNob3VsZCBhbHdheXMgcmV0dXJuIHRoZSBzYW1lIHByb21pc2Ugb2JqZWN0Jyk7CisKK3Rl
c3QoKCkgPT4geworCisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKCk7CisgIG5ldyBS
ZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIocnMpOyAvLyBDb25zdHJ1Y3RpbmcgZGlyZWN0bHkg
dGhlIGZpcnN0IHRpbWUgc2hvdWxkIGJlIGZpbmUuCisgIGFzc2VydF90aHJvd3NfanMoVHlwZUVy
cm9yLCAoKSA9PiBuZXcgUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyKHJzKSwKKyAgICAgICAg
ICAgICAgICAgICAnY29uc3RydWN0aW5nIGRpcmVjdGx5IHRoZSBzZWNvbmQgdGltZSBzaG91bGQg
ZmFpbCcpOworCit9LCAnQ29uc3RydWN0aW5nIGEgUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVy
IGRpcmVjdGx5IHNob3VsZCBmYWlsIGlmIHRoZSBzdHJlYW0gaXMgYWxyZWFkeSBsb2NrZWQgKHZp
YSBkaXJlY3QgJyArCisgICAnY29uc3RydWN0aW9uKScpOworCit0ZXN0KCgpID0+IHsKKworICBj
b25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSgpOworICBuZXcgUmVhZGFibGVTdHJlYW1EZWZh
dWx0UmVhZGVyKHJzKTsgLy8gQ29uc3RydWN0aW5nIGRpcmVjdGx5IHNob3VsZCBiZSBmaW5lLgor
ICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4gcnMuZ2V0UmVhZGVyKCksICdnZXRS
ZWFkZXIoKSBzaG91bGQgZmFpbCcpOworCit9LCAnR2V0dGluZyBhIFJlYWRhYmxlU3RyZWFtRGVm
YXVsdFJlYWRlciB2aWEgZ2V0UmVhZGVyIHNob3VsZCBmYWlsIGlmIHRoZSBzdHJlYW0gaXMgYWxy
ZWFkeSBsb2NrZWQgKHZpYSBkaXJlY3QgJyArCisgICAnY29uc3RydWN0aW9uKScpOworCit0ZXN0
KCgpID0+IHsKKworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSgpOworICBycy5nZXRS
ZWFkZXIoKTsgLy8gZ2V0UmVhZGVyKCkgc2hvdWxkIGJlIGZpbmUuCisgIGFzc2VydF90aHJvd3Nf
anMoVHlwZUVycm9yLCAoKSA9PiBuZXcgUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyKHJzKSwg
J2NvbnN0cnVjdGluZyBkaXJlY3RseSBzaG91bGQgZmFpbCcpOworCit9LCAnQ29uc3RydWN0aW5n
IGEgUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyIGRpcmVjdGx5IHNob3VsZCBmYWlsIGlmIHRo
ZSBzdHJlYW0gaXMgYWxyZWFkeSBsb2NrZWQgKHZpYSBnZXRSZWFkZXIpJyk7CisKK3Rlc3QoKCkg
PT4geworCisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKCk7CisgIHJzLmdldFJlYWRl
cigpOyAvLyBnZXRSZWFkZXIoKSBzaG91bGQgYmUgZmluZS4KKyAgYXNzZXJ0X3Rocm93c19qcyhU
eXBlRXJyb3IsICgpID0+IHJzLmdldFJlYWRlcigpLCAnZ2V0UmVhZGVyKCkgc2hvdWxkIGZhaWwn
KTsKKworfSwgJ0dldHRpbmcgYSBSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIgdmlhIGdldFJl
YWRlciBzaG91bGQgZmFpbCBpZiB0aGUgc3RyZWFtIGlzIGFscmVhZHkgbG9ja2VkICh2aWEgZ2V0
UmVhZGVyKScpOworCit0ZXN0KCgpID0+IHsKKworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0
cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgYy5jbG9zZSgpOworICAgIH0KKyAgfSk7CisK
KyAgbmV3IFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlcihycyk7IC8vIENvbnN0cnVjdGluZyBk
aXJlY3RseSBzaG91bGQgbm90IHRocm93LgorCit9LCAnQ29uc3RydWN0aW5nIGEgUmVhZGFibGVT
dHJlYW1EZWZhdWx0UmVhZGVyIGRpcmVjdGx5IHNob3VsZCBiZSBPSyBpZiB0aGUgc3RyZWFtIGlz
IGNsb3NlZCcpOworCit0ZXN0KCgpID0+IHsKKworICBjb25zdCB0aGVFcnJvciA9IG5ldyBFcnJv
cignZG9uXCd0IHNheSBpIGRpZG5cJ3Qgd2FybiB5YScpOworICBjb25zdCBycyA9IG5ldyBSZWFk
YWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgYy5lcnJvcih0aGVFcnJvcik7Cisg
ICAgfQorICB9KTsKKworICBuZXcgUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyKHJzKTsgLy8g
Q29uc3RydWN0aW5nIGRpcmVjdGx5IHNob3VsZCBub3QgdGhyb3cuCisKK30sICdDb25zdHJ1Y3Rp
bmcgYSBSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIgZGlyZWN0bHkgc2hvdWxkIGJlIE9LIGlm
IHRoZSBzdHJlYW0gaXMgZXJyb3JlZCcpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworCisgIGxl
dCBjb250cm9sbGVyOworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3Rh
cnQoYykgeworICAgICAgY29udHJvbGxlciA9IGM7CisgICAgfQorICB9KTsKKyAgY29uc3QgcmVh
ZGVyID0gcnMuZ2V0UmVhZGVyKCk7CisKKyAgY29uc3QgcHJvbWlzZSA9IHJlYWRlci5yZWFkKCku
dGhlbihyZXN1bHQgPT4geworICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdCwgeyB2YWx1
ZTogJ2EnLCBkb25lOiBmYWxzZSB9LCAncmVhZCgpIHNob3VsZCBmdWxmaWxsIHdpdGggdGhlIGVu
cXVldWVkIGNodW5rJyk7CisgIH0pOworCisgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYScpOworICBy
ZXR1cm4gcHJvbWlzZTsKKworfSwgJ1JlYWRpbmcgZnJvbSBhIHJlYWRlciBmb3IgYW4gZW1wdHkg
c3RyZWFtIHdpbGwgd2FpdCB1bnRpbCBhIGNodW5rIGlzIGF2YWlsYWJsZScpOworCitwcm9taXNl
X3Rlc3QoKCkgPT4geworCisgIGxldCBjYW5jZWxDYWxsZWQgPSBmYWxzZTsKKyAgY29uc3QgcGFz
c2VkUmVhc29uID0gbmV3IEVycm9yKCdpdCB3YXNuXCd0IHRoZSByaWdodCB0aW1lLCBzb3JyeScp
OworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgY2FuY2VsKHJlYXNvbikg
eworICAgICAgYXNzZXJ0X3RydWUocnMubG9ja2VkLCAndGhlIHN0cmVhbSBzaG91bGQgc3RpbGwg
YmUgbG9ja2VkJyk7CisgICAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4gcnMu
Z2V0UmVhZGVyKCksICdzaG91bGQgbm90IGJlIGFibGUgdG8gZ2V0IGFub3RoZXIgcmVhZGVyJyk7
CisgICAgICBhc3NlcnRfZXF1YWxzKHJlYXNvbiwgcGFzc2VkUmVhc29uLCAndGhlIGNhbmNlbGxh
dGlvbiByZWFzb24gaXMgcGFzc2VkIHRocm91Z2ggdG8gdGhlIHVuZGVybHlpbmcgc291cmNlJyk7
CisgICAgICBjYW5jZWxDYWxsZWQgPSB0cnVlOworICAgIH0KKyAgfSk7CisKKyAgY29uc3QgcmVh
ZGVyID0gcnMuZ2V0UmVhZGVyKCk7CisgIHJldHVybiByZWFkZXIuY2FuY2VsKHBhc3NlZFJlYXNv
bikudGhlbigoKSA9PiBhc3NlcnRfdHJ1ZShjYW5jZWxDYWxsZWQpKTsKKworfSwgJ2NhbmNlbCgp
IG9uIGEgcmVhZGVyIGRvZXMgbm90IHJlbGVhc2UgdGhlIHJlYWRlcicpOworCitwcm9taXNlX3Rl
c3QoKCkgPT4geworCisgIGxldCBjb250cm9sbGVyOworICBjb25zdCBycyA9IG5ldyBSZWFkYWJs
ZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgY29udHJvbGxlciA9IGM7CisgICAgfQor
ICB9KTsKKworICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKKyAgY29uc3QgcHJvbWlz
ZSA9IHJlYWRlci5jbG9zZWQ7CisKKyAgY29udHJvbGxlci5jbG9zZSgpOworICByZXR1cm4gcHJv
bWlzZTsKKworfSwgJ2Nsb3NlZCBzaG91bGQgYmUgZnVsZmlsbGVkIGFmdGVyIHN0cmVhbSBpcyBj
bG9zZWQgKC5jbG9zZWQgYWNjZXNzIGJlZm9yZSBhY3F1aXJpbmcpJyk7CisKK3Byb21pc2VfdGVz
dCh0ID0+IHsKKworICBsZXQgY29udHJvbGxlcjsKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVT
dHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGNvbnRyb2xsZXIgPSBjOworICAgIH0KKyAg
fSk7CisKKyAgY29uc3QgcmVhZGVyMSA9IHJzLmdldFJlYWRlcigpOworCisgIHJlYWRlcjEucmVs
ZWFzZUxvY2soKTsKKworICBjb25zdCByZWFkZXIyID0gcnMuZ2V0UmVhZGVyKCk7CisgIGNvbnRy
b2xsZXIuY2xvc2UoKTsKKworICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAgIHByb21pc2VfcmVq
ZWN0c19qcyh0LCBUeXBlRXJyb3IsIHJlYWRlcjEuY2xvc2VkKSwKKyAgICByZWFkZXIyLmNsb3Nl
ZAorICBdKTsKKworfSwgJ2Nsb3NlZCBzaG91bGQgYmUgcmVqZWN0ZWQgYWZ0ZXIgcmVhZGVyIHJl
bGVhc2VzIGl0cyBsb2NrIChtdWx0aXBsZSBzdHJlYW0gbG9ja3MpJyk7CisKK3Byb21pc2VfdGVz
dCgoKSA9PiB7CisKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0
KGMpIHsKKyAgICAgIGMuZW5xdWV1ZSgnYScpOworICAgICAgYy5lbnF1ZXVlKCdiJyk7CisgICAg
ICBjLmNsb3NlKCk7CisgICAgfQorICB9KTsKKworICBjb25zdCByZWFkZXIxID0gcnMuZ2V0UmVh
ZGVyKCk7CisgIGNvbnN0IHByb21pc2UxID0gcmVhZGVyMS5yZWFkKCkudGhlbihyID0+IHsKKyAg
ICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyLCB7IHZhbHVlOiAnYScsIGRvbmU6IGZhbHNlIH0sICdy
ZWFkaW5nIHRoZSBmaXJzdCBjaHVuayBmcm9tIHJlYWRlcjEgd29ya3MnKTsKKyAgfSk7CisgIHJl
YWRlcjEucmVsZWFzZUxvY2soKTsKKworICBjb25zdCByZWFkZXIyID0gcnMuZ2V0UmVhZGVyKCk7
CisgIGNvbnN0IHByb21pc2UyID0gcmVhZGVyMi5yZWFkKCkudGhlbihyID0+IHsKKyAgICBhc3Nl
cnRfb2JqZWN0X2VxdWFscyhyLCB7IHZhbHVlOiAnYicsIGRvbmU6IGZhbHNlIH0sICdyZWFkaW5n
IHRoZSBzZWNvbmQgY2h1bmsgZnJvbSByZWFkZXIyIHdvcmtzJyk7CisgIH0pOworICByZWFkZXIy
LnJlbGVhc2VMb2NrKCk7CisKKyAgcmV0dXJuIFByb21pc2UuYWxsKFtwcm9taXNlMSwgcHJvbWlz
ZTJdKTsKKworfSwgJ011bHRpcGxlIHJlYWRlcnMgY2FuIGFjY2VzcyB0aGUgc3RyZWFtIGluIHNl
cXVlbmNlJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisgIGNvbnN0IHJzID0gbmV3IFJlYWRh
YmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjLmVucXVldWUoJ2EnKTsKKyAgICB9
CisgIH0pOworCisgIGNvbnN0IHJlYWRlcjEgPSBycy5nZXRSZWFkZXIoKTsKKyAgcmVhZGVyMS5y
ZWxlYXNlTG9jaygpOworCisgIGNvbnN0IHJlYWRlcjIgPSBycy5nZXRSZWFkZXIoKTsKKworICAv
LyBTaG91bGQgYmUgYSBuby1vcAorICByZWFkZXIxLnJlbGVhc2VMb2NrKCk7CisKKyAgcmV0dXJu
IHJlYWRlcjIucmVhZCgpLnRoZW4ocmVzdWx0ID0+IHsKKyAgICBhc3NlcnRfb2JqZWN0X2VxdWFs
cyhyZXN1bHQsIHsgdmFsdWU6ICdhJywgZG9uZTogZmFsc2UgfSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAncmVhZCgpIHNob3VsZCBzdGlsbCB3b3JrIG9uIHJlYWRlcjIgZXZlbiBhZnRlciBy
ZWFkZXIxIGlzIHJlbGVhc2VkJyk7CisgIH0pOworCit9LCAnQ2Fubm90IHVzZSBhbiBhbHJlYWR5
LXJlbGVhc2VkIHJlYWRlciB0byB1bmxvY2sgYSBzdHJlYW0gYWdhaW4nKTsKKworcHJvbWlzZV90
ZXN0KHQgPT4geworCisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFy
dChjKSB7CisgICAgICBjLmVucXVldWUoJ2EnKTsKKyAgICB9LAorICAgIGNhbmNlbCgpIHsKKyAg
ICAgIGFzc2VydF91bnJlYWNoZWQoJ3VuZGVybHlpbmcgc291cmNlIGNhbmNlbCBzaG91bGQgbm90
IGJlIGNhbGxlZCcpOworICAgIH0KKyAgfSk7CisKKyAgY29uc3QgcmVhZGVyID0gcnMuZ2V0UmVh
ZGVyKCk7CisgIHJlYWRlci5yZWxlYXNlTG9jaygpOworICBjb25zdCBjYW5jZWxQcm9taXNlID0g
cmVhZGVyLmNhbmNlbCgpOworCisgIGNvbnN0IHJlYWRlcjIgPSBycy5nZXRSZWFkZXIoKTsKKyAg
Y29uc3QgcmVhZFByb21pc2UgPSByZWFkZXIyLnJlYWQoKS50aGVuKHIgPT4geworICAgIGFzc2Vy
dF9vYmplY3RfZXF1YWxzKHIsIHsgdmFsdWU6ICdhJywgZG9uZTogZmFsc2UgfSwgJ2EgbmV3IHJl
YWRlciBzaG91bGQgYmUgYWJsZSB0byByZWFkIGEgY2h1bmsnKTsKKyAgfSk7CisKKyAgcmV0dXJu
IFByb21pc2UuYWxsKFsKKyAgICBwcm9taXNlX3JlamVjdHNfanModCwgVHlwZUVycm9yLCBjYW5j
ZWxQcm9taXNlKSwKKyAgICByZWFkUHJvbWlzZQorICBdKTsKKworfSwgJ2NhbmNlbCgpIG9uIGEg
cmVsZWFzZWQgcmVhZGVyIGlzIGEgbm8tb3AgYW5kIGRvZXMgbm90IHBhc3MgdGhyb3VnaCcpOwor
Citwcm9taXNlX3Rlc3QodCA9PiB7CisKKyAgY29uc3QgcHJvbWlzZUFzc2VydHMgPSBbXTsKKwor
ICBsZXQgY29udHJvbGxlcjsKKyAgY29uc3QgdGhlRXJyb3IgPSB7IG5hbWU6ICd1bmlxdWUgZXJy
b3InIH07CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7
CisgICAgICBjb250cm9sbGVyID0gYzsKKyAgICB9CisgIH0pOworCisgIGNvbnN0IHJlYWRlcjEg
PSBycy5nZXRSZWFkZXIoKTsKKworICBwcm9taXNlQXNzZXJ0cy5wdXNoKAorICAgIHByb21pc2Vf
cmVqZWN0c19leGFjdGx5KHQsIHRoZUVycm9yLCByZWFkZXIxLmNsb3NlZCksCisgICAgcHJvbWlz
ZV9yZWplY3RzX2V4YWN0bHkodCwgdGhlRXJyb3IsIHJlYWRlcjEucmVhZCgpKQorICApOworCisg
IGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiBycy5nZXRSZWFkZXIoKSwgJ3RyeWlu
ZyB0byBnZXQgYW5vdGhlciByZWFkZXIgYmVmb3JlIGVycm9yaW5nIHNob3VsZCB0aHJvdycpOwor
CisgIGNvbnRyb2xsZXIuZXJyb3IodGhlRXJyb3IpOworCisgIHJlYWRlcjEucmVsZWFzZUxvY2so
KTsKKworICBjb25zdCByZWFkZXIyID0gcnMuZ2V0UmVhZGVyKCk7CisKKyAgcHJvbWlzZUFzc2Vy
dHMucHVzaCgKKyAgICBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCB0aGVFcnJvciwgcmVhZGVy
Mi5jbG9zZWQpLAorICAgIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIHRoZUVycm9yLCByZWFk
ZXIyLnJlYWQoKSkKKyAgKTsKKworICByZXR1cm4gUHJvbWlzZS5hbGwocHJvbWlzZUFzc2VydHMp
OworCit9LCAnR2V0dGluZyBhIHNlY29uZCByZWFkZXIgYWZ0ZXIgZXJyb3JpbmcgdGhlIHN0cmVh
bSBhbmQgcmVsZWFzaW5nIHRoZSByZWFkZXIgc2hvdWxkIHN1Y2NlZWQnKTsKKworcHJvbWlzZV90
ZXN0KHQgPT4geworCisgIGxldCBjb250cm9sbGVyOworICBjb25zdCBycyA9IG5ldyBSZWFkYWJs
ZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgY29udHJvbGxlciA9IGM7CisgICAgfQor
ICB9KTsKKworICBjb25zdCBwcm9taXNlID0gcnMuZ2V0UmVhZGVyKCkuY2xvc2VkLnRoZW4oCisg
ICAgdC51bnJlYWNoZWRfZnVuYygnY2xvc2VkIHByb21pc2Ugc2hvdWxkIG5vdCBiZSBmdWxmaWxs
ZWQgd2hlbiBzdHJlYW0gaXMgZXJyb3JlZCcpLAorICAgIGVyciA9PiB7CisgICAgICBhc3NlcnRf
ZXF1YWxzKGVyciwgdW5kZWZpbmVkLCAncGFzc2VkIGVycm9yIHNob3VsZCBiZSB1bmRlZmluZWQg
YXMgaXQgd2FzJyk7CisgICAgfQorICApOworCisgIGNvbnRyb2xsZXIuZXJyb3IoKTsKKyAgcmV0
dXJuIHByb21pc2U7CisKK30sICdSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIgY2xvc2VkIHBy
b21pc2Ugc2hvdWxkIGJlIHJlamVjdGVkIHdpdGggdW5kZWZpbmVkIGlmIHRoYXQgaXMgdGhlIGVy
cm9yJyk7CisKKworcHJvbWlzZV90ZXN0KHQgPT4geworCisgIGNvbnN0IHJzID0gbmV3IFJlYWRh
YmxlU3RyZWFtKHsKKyAgICBzdGFydCgpIHsKKyAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCgp
OworICAgIH0KKyAgfSk7CisKKyAgcmV0dXJuIHJzLmdldFJlYWRlcigpLnJlYWQoKS50aGVuKAor
ICAgIHQudW5yZWFjaGVkX2Z1bmMoJ3JlYWQgcHJvbWlzZSBzaG91bGQgbm90IGJlIGZ1bGZpbGxl
ZCB3aGVuIHN0cmVhbSBpcyBlcnJvcmVkJyksCisgICAgZXJyID0+IHsKKyAgICAgIGFzc2VydF9l
cXVhbHMoZXJyLCB1bmRlZmluZWQsICdwYXNzZWQgZXJyb3Igc2hvdWxkIGJlIHVuZGVmaW5lZCBh
cyBpdCB3YXMnKTsKKyAgICB9CisgICk7CisKK30sICdSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFk
ZXI6IGlmIHN0YXJ0IHJlamVjdHMgd2l0aCBubyBwYXJhbWV0ZXIsIGl0IHNob3VsZCBlcnJvciB0
aGUgc3RyZWFtIHdpdGggYW4gdW5kZWZpbmVkICcgKworICAgICdlcnJvcicpOworCitwcm9taXNl
X3Rlc3QodCA9PiB7CisKKyAgY29uc3QgdGhlRXJyb3IgPSB7IG5hbWU6ICd1bmlxdWUgc3RyaW5n
JyB9OworICBsZXQgY29udHJvbGxlcjsKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0o
eworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGNvbnRyb2xsZXIgPSBjOworICAgIH0KKyAgfSk7CisK
KyAgY29uc3QgcHJvbWlzZSA9IHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIHRoZUVycm9yLCBy
cy5nZXRSZWFkZXIoKS5jbG9zZWQpOworCisgIGNvbnRyb2xsZXIuZXJyb3IodGhlRXJyb3IpOwor
ICByZXR1cm4gcHJvbWlzZTsKKworfSwgJ0Vycm9yaW5nIGEgUmVhZGFibGVTdHJlYW0gYWZ0ZXIg
Y2hlY2tpbmcgY2xvc2VkIHNob3VsZCByZWplY3QgUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVy
IGNsb3NlZCBwcm9taXNlJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKworICBjb25zdCB0aGVF
cnJvciA9IHsgbmFtZTogJ3VuaXF1ZSBzdHJpbmcnIH07CisgIGxldCBjb250cm9sbGVyOworICBj
b25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgY29u
dHJvbGxlciA9IGM7CisgICAgfQorICB9KTsKKworICBjb250cm9sbGVyLmVycm9yKHRoZUVycm9y
KTsKKworICAvLyBMZXQncyBjYWxsIGdldFJlYWRlciB0d2ljZSBmb3IgZXh0cmEgdGVzdCBjb3Zl
cmFnZSBvZiB0aGlzIGNvZGUgcGF0aC4KKyAgcnMuZ2V0UmVhZGVyKCkucmVsZWFzZUxvY2soKTsK
KworICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgdGhlRXJyb3IsIHJzLmdldFJl
YWRlcigpLmNsb3NlZCk7CisKK30sICdFcnJvcmluZyBhIFJlYWRhYmxlU3RyZWFtIGJlZm9yZSBj
aGVja2luZyBjbG9zZWQgc2hvdWxkIHJlamVjdCBSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIg
Y2xvc2VkIHByb21pc2UnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKworICBsZXQgY29udHJv
bGxlcjsKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsK
KyAgICAgIGNvbnRyb2xsZXIgPSBjOworICAgIH0KKyAgfSk7CisgIGNvbnN0IHJlYWRlciA9IHJz
LmdldFJlYWRlcigpOworCisgIGNvbnN0IHByb21pc2UgPSBQcm9taXNlLmFsbChbCisgICAgcmVh
ZGVyLnJlYWQoKS50aGVuKHJlc3VsdCA9PiB7CisgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhy
ZXN1bHQsIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9LCAncmVhZCgpIHNob3VsZCBm
dWxmaWxsIHdpdGggY2xvc2UgKDEpJyk7CisgICAgfSksCisgICAgcmVhZGVyLnJlYWQoKS50aGVu
KHJlc3VsdCA9PiB7CisgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6
IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9LCAncmVhZCgpIHNob3VsZCBmdWxmaWxsIHdpdGggY2xv
c2UgKDIpJyk7CisgICAgfSksCisgICAgcmVhZGVyLmNsb3NlZAorICBdKTsKKworICBjb250cm9s
bGVyLmNsb3NlKCk7CisgIHJldHVybiBwcm9taXNlOworCit9LCAnUmVhZGluZyB0d2ljZSBvbiBh
IHN0cmVhbSB0aGF0IGdldHMgY2xvc2VkJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisKKyAg
bGV0IGNvbnRyb2xsZXI7CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBz
dGFydChjKSB7CisgICAgICBjb250cm9sbGVyID0gYzsKKyAgICB9CisgIH0pOworCisgIGNvbnRy
b2xsZXIuY2xvc2UoKTsKKyAgY29uc3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7CisKKyAgcmV0
dXJuIFByb21pc2UuYWxsKFsKKyAgICByZWFkZXIucmVhZCgpLnRoZW4ocmVzdWx0ID0+IHsKKyAg
ICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdCwgeyB2YWx1ZTogdW5kZWZpbmVkLCBkb25l
OiB0cnVlIH0sICdyZWFkKCkgc2hvdWxkIGZ1bGZpbGwgd2l0aCBjbG9zZSAoMSknKTsKKyAgICB9
KSwKKyAgICByZWFkZXIucmVhZCgpLnRoZW4ocmVzdWx0ID0+IHsKKyAgICAgIGFzc2VydF9vYmpl
Y3RfZXF1YWxzKHJlc3VsdCwgeyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0sICdyZWFk
KCkgc2hvdWxkIGZ1bGZpbGwgd2l0aCBjbG9zZSAoMiknKTsKKyAgICB9KSwKKyAgICByZWFkZXIu
Y2xvc2VkCisgIF0pOworCit9LCAnUmVhZGluZyB0d2ljZSBvbiBhIGNsb3NlZCBzdHJlYW0nKTsK
KworcHJvbWlzZV90ZXN0KHQgPT4geworCisgIGxldCBjb250cm9sbGVyOworICBjb25zdCBycyA9
IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgY29udHJvbGxlciA9
IGM7CisgICAgfQorICB9KTsKKworICBjb25zdCBteUVycm9yID0geyBuYW1lOiAnbWFzaGVkIHBv
dGF0b2VzJyB9OworICBjb250cm9sbGVyLmVycm9yKG15RXJyb3IpOworCisgIGNvbnN0IHJlYWRl
ciA9IHJzLmdldFJlYWRlcigpOworCisgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAgcHJvbWlz
ZV9yZWplY3RzX2V4YWN0bHkodCwgbXlFcnJvciwgcmVhZGVyLnJlYWQoKSksCisgICAgcHJvbWlz
ZV9yZWplY3RzX2V4YWN0bHkodCwgbXlFcnJvciwgcmVhZGVyLnJlYWQoKSksCisgICAgcHJvbWlz
ZV9yZWplY3RzX2V4YWN0bHkodCwgbXlFcnJvciwgcmVhZGVyLmNsb3NlZCkKKyAgXSk7CisKK30s
ICdSZWFkaW5nIHR3aWNlIG9uIGFuIGVycm9yZWQgc3RyZWFtJyk7CisKK3Byb21pc2VfdGVzdCh0
ID0+IHsKKworICBsZXQgY29udHJvbGxlcjsKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJl
YW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGNvbnRyb2xsZXIgPSBjOworICAgIH0KKyAgfSk7
CisKKyAgY29uc3QgbXlFcnJvciA9IHsgbmFtZTogJ21hc2hlZCBwb3RhdG9lcycgfTsKKyAgY29u
c3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7CisKKyAgY29uc3QgcHJvbWlzZSA9IFByb21pc2Uu
YWxsKFsKKyAgICBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBteUVycm9yLCByZWFkZXIucmVh
ZCgpKSwKKyAgICBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBteUVycm9yLCByZWFkZXIucmVh
ZCgpKSwKKyAgICBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBteUVycm9yLCByZWFkZXIuY2xv
c2VkKQorICBdKTsKKworICBjb250cm9sbGVyLmVycm9yKG15RXJyb3IpOworICByZXR1cm4gcHJv
bWlzZTsKKworfSwgJ1JlYWRpbmcgdHdpY2Ugb24gYSBzdHJlYW0gdGhhdCBnZXRzIGVycm9yZWQn
KTsKKwordGVzdCgoKSA9PiB7CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKCk7Cisg
IGxldCB0b1N0cmluZ0NhbGxlZCA9IGZhbHNlOworICBjb25zdCBtb2RlID0geworICAgIHRvU3Ry
aW5nKCkgeworICAgICAgdG9TdHJpbmdDYWxsZWQgPSB0cnVlOworICAgICAgcmV0dXJuICcnOwor
ICAgIH0KKyAgfTsKKyAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IHJzLmdldFJl
YWRlcih7IG1vZGUgfSksICdnZXRSZWFkZXIoKSBzaG91bGQgdGhyb3cnKTsKKyAgYXNzZXJ0X3Ry
dWUodG9TdHJpbmdDYWxsZWQsICd0b1N0cmluZygpIHNob3VsZCBiZSBjYWxsZWQnKTsKK30sICdn
ZXRSZWFkZXIoKSBzaG91bGQgY2FsbCBUb1N0cmluZygpIG9uIG1vZGUnKTsKKworcHJvbWlzZV90
ZXN0KCgpID0+IHsKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHB1bGwo
Y29udHJvbGxlcikgeworICAgICAgY29udHJvbGxlci5jbG9zZSgpOworICAgIH0KKyAgfSk7CisK
KyAgY29uc3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7CisgIHJldHVybiByZWFkZXIucmVhZCgp
LnRoZW4oKCkgPT4geworICAgIC8vIFRoZSB0ZXN0IHBhc3NlcyBpZiByZWxlYXNlTG9jaygpIGRv
ZXMgbm90IHRocm93LgorICAgIHJlYWRlci5yZWxlYXNlTG9jaygpOworICB9KTsKK30sICdjb250
cm9sbGVyLmNsb3NlKCkgc2hvdWxkIGNsZWFyIHRoZSBsaXN0IG9mIHBlbmRpbmcgcmVhZCByZXF1
ZXN0cycpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZGVmYXVsdC1yZWFkZXIuYW55Lndvcmtl
ci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9kZWZhdWx0LXJlYWRlci5hbnkud29ya2VyLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNDdlNzVhYmI5NjQwNmU5ODg3ZmNiNjExMWU5MGZkYWNk
NWZjM2ZlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZGVmYXVsdC1yZWFkZXIuYW55
Lndvcmtlci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzNCBAQAorCitGQUlMIFJlYWRhYmxlU3Ry
ZWFtRGVmYXVsdFJlYWRlciBjb25zdHJ1Y3RvciBzaG91bGQgZ2V0IGEgUmVhZGFibGVTdHJlYW0g
b2JqZWN0IGFzIGFyZ3VtZW50IGFzc2VydF90aHJvd3NfanM6IGZ1bmN0aW9uICIoKSA9PiBuZXcg
UmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyKCdwb3RhdG8nKSIgdGhyZXcgb2JqZWN0ICJSZWZl
cmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVh
ZGVyIiAoIlJlZmVyZW5jZUVycm9yIikgZXhwZWN0ZWQgaW5zdGFuY2Ugb2YgZnVuY3Rpb24gImZ1
bmN0aW9uIFR5cGVFcnJvcigpIHsKKyAgICBbbmF0aXZlIGNvZGVdCit9IiAoIlR5cGVFcnJvciIp
CitGQUlMIFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlciBjbG9zZWQgc2hvdWxkIGFsd2F5cyBy
ZXR1cm4gdGhlIHNhbWUgcHJvbWlzZSBvYmplY3QgQ2FuJ3QgZmluZCB2YXJpYWJsZTogUmVhZGFi
bGVTdHJlYW1EZWZhdWx0UmVhZGVyCitGQUlMIENvbnN0cnVjdGluZyBhIFJlYWRhYmxlU3RyZWFt
RGVmYXVsdFJlYWRlciBkaXJlY3RseSBzaG91bGQgZmFpbCBpZiB0aGUgc3RyZWFtIGlzIGFscmVh
ZHkgbG9ja2VkICh2aWEgZGlyZWN0IGNvbnN0cnVjdGlvbikgQ2FuJ3QgZmluZCB2YXJpYWJsZTog
UmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyCitGQUlMIEdldHRpbmcgYSBSZWFkYWJsZVN0cmVh
bURlZmF1bHRSZWFkZXIgdmlhIGdldFJlYWRlciBzaG91bGQgZmFpbCBpZiB0aGUgc3RyZWFtIGlz
IGFscmVhZHkgbG9ja2VkICh2aWEgZGlyZWN0IGNvbnN0cnVjdGlvbikgQ2FuJ3QgZmluZCB2YXJp
YWJsZTogUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyCitGQUlMIENvbnN0cnVjdGluZyBhIFJl
YWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlciBkaXJlY3RseSBzaG91bGQgZmFpbCBpZiB0aGUgc3Ry
ZWFtIGlzIGFscmVhZHkgbG9ja2VkICh2aWEgZ2V0UmVhZGVyKSBhc3NlcnRfdGhyb3dzX2pzOiBj
b25zdHJ1Y3RpbmcgZGlyZWN0bHkgc2hvdWxkIGZhaWwgZnVuY3Rpb24gIigpID0+IG5ldyBSZWFk
YWJsZVN0cmVhbURlZmF1bHRSZWFkZXIocnMpIiB0aHJldyBvYmplY3QgIlJlZmVyZW5jZUVycm9y
OiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIiICgiUmVm
ZXJlbmNlRXJyb3IiKSBleHBlY3RlZCBpbnN0YW5jZSBvZiBmdW5jdGlvbiAiZnVuY3Rpb24gVHlw
ZUVycm9yKCkgeworICAgIFtuYXRpdmUgY29kZV0KK30iICgiVHlwZUVycm9yIikKK1BBU1MgR2V0
dGluZyBhIFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlciB2aWEgZ2V0UmVhZGVyIHNob3VsZCBm
YWlsIGlmIHRoZSBzdHJlYW0gaXMgYWxyZWFkeSBsb2NrZWQgKHZpYSBnZXRSZWFkZXIpIAorRkFJ
TCBDb25zdHJ1Y3RpbmcgYSBSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIgZGlyZWN0bHkgc2hv
dWxkIGJlIE9LIGlmIHRoZSBzdHJlYW0gaXMgY2xvc2VkIENhbid0IGZpbmQgdmFyaWFibGU6IFJl
YWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlcgorRkFJTCBDb25zdHJ1Y3RpbmcgYSBSZWFkYWJsZVN0
cmVhbURlZmF1bHRSZWFkZXIgZGlyZWN0bHkgc2hvdWxkIGJlIE9LIGlmIHRoZSBzdHJlYW0gaXMg
ZXJyb3JlZCBDYW4ndCBmaW5kIHZhcmlhYmxlOiBSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIK
K1BBU1MgUmVhZGluZyBmcm9tIGEgcmVhZGVyIGZvciBhbiBlbXB0eSBzdHJlYW0gd2lsbCB3YWl0
IHVudGlsIGEgY2h1bmsgaXMgYXZhaWxhYmxlIAorUEFTUyBjYW5jZWwoKSBvbiBhIHJlYWRlciBk
b2VzIG5vdCByZWxlYXNlIHRoZSByZWFkZXIgCitQQVNTIGNsb3NlZCBzaG91bGQgYmUgZnVsZmls
bGVkIGFmdGVyIHN0cmVhbSBpcyBjbG9zZWQgKC5jbG9zZWQgYWNjZXNzIGJlZm9yZSBhY3F1aXJp
bmcpIAorUEFTUyBjbG9zZWQgc2hvdWxkIGJlIHJlamVjdGVkIGFmdGVyIHJlYWRlciByZWxlYXNl
cyBpdHMgbG9jayAobXVsdGlwbGUgc3RyZWFtIGxvY2tzKSAKK1BBU1MgTXVsdGlwbGUgcmVhZGVy
cyBjYW4gYWNjZXNzIHRoZSBzdHJlYW0gaW4gc2VxdWVuY2UgCitQQVNTIENhbm5vdCB1c2UgYW4g
YWxyZWFkeS1yZWxlYXNlZCByZWFkZXIgdG8gdW5sb2NrIGEgc3RyZWFtIGFnYWluIAorUEFTUyBj
YW5jZWwoKSBvbiBhIHJlbGVhc2VkIHJlYWRlciBpcyBhIG5vLW9wIGFuZCBkb2VzIG5vdCBwYXNz
IHRocm91Z2ggCitQQVNTIEdldHRpbmcgYSBzZWNvbmQgcmVhZGVyIGFmdGVyIGVycm9yaW5nIHRo
ZSBzdHJlYW0gYW5kIHJlbGVhc2luZyB0aGUgcmVhZGVyIHNob3VsZCBzdWNjZWVkIAorUEFTUyBS
ZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIgY2xvc2VkIHByb21pc2Ugc2hvdWxkIGJlIHJlamVj
dGVkIHdpdGggdW5kZWZpbmVkIGlmIHRoYXQgaXMgdGhlIGVycm9yIAorUEFTUyBSZWFkYWJsZVN0
cmVhbURlZmF1bHRSZWFkZXI6IGlmIHN0YXJ0IHJlamVjdHMgd2l0aCBubyBwYXJhbWV0ZXIsIGl0
IHNob3VsZCBlcnJvciB0aGUgc3RyZWFtIHdpdGggYW4gdW5kZWZpbmVkIGVycm9yIAorUEFTUyBF
cnJvcmluZyBhIFJlYWRhYmxlU3RyZWFtIGFmdGVyIGNoZWNraW5nIGNsb3NlZCBzaG91bGQgcmVq
ZWN0IFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlciBjbG9zZWQgcHJvbWlzZSAKK1BBU1MgRXJy
b3JpbmcgYSBSZWFkYWJsZVN0cmVhbSBiZWZvcmUgY2hlY2tpbmcgY2xvc2VkIHNob3VsZCByZWpl
Y3QgUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyIGNsb3NlZCBwcm9taXNlIAorUEFTUyBSZWFk
aW5nIHR3aWNlIG9uIGEgc3RyZWFtIHRoYXQgZ2V0cyBjbG9zZWQgCitQQVNTIFJlYWRpbmcgdHdp
Y2Ugb24gYSBjbG9zZWQgc3RyZWFtIAorUEFTUyBSZWFkaW5nIHR3aWNlIG9uIGFuIGVycm9yZWQg
c3RyZWFtIAorUEFTUyBSZWFkaW5nIHR3aWNlIG9uIGEgc3RyZWFtIHRoYXQgZ2V0cyBlcnJvcmVk
IAorRkFJTCBnZXRSZWFkZXIoKSBzaG91bGQgY2FsbCBUb1N0cmluZygpIG9uIG1vZGUgYXNzZXJ0
X3Rocm93c19qczogZ2V0UmVhZGVyKCkgc2hvdWxkIHRocm93IGZ1bmN0aW9uICIoKSA9PiBycy5n
ZXRSZWFkZXIoeyBtb2RlIH0pIiB0aHJldyBvYmplY3QgIlJhbmdlRXJyb3I6IEludmFsaWQgbW9k
ZSBpcyBzcGVjaWZpZWQiICgiUmFuZ2VFcnJvciIpIGV4cGVjdGVkIGluc3RhbmNlIG9mIGZ1bmN0
aW9uICJmdW5jdGlvbiBUeXBlRXJyb3IoKSB7CisgICAgW25hdGl2ZSBjb2RlXQorfSIgKCJUeXBl
RXJyb3IiKQorUEFTUyBjb250cm9sbGVyLmNsb3NlKCkgc2hvdWxkIGNsZWFyIHRoZSBsaXN0IG9m
IHBlbmRpbmcgcmVhZCByZXF1ZXN0cyAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZGVmYXVs
dC1yZWFkZXIuYW55Lndvcmtlci5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZGVmYXVsdC1yZWFkZXIuYW55
Lndvcmtlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzODI5MTM1MjhlNjkzYjNhNWQ1NmM2NjBhNDUwNjA5
ODBiNTQ4YzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9kZWZhdWx0LXJlYWRlci5h
bnkud29ya2VyLmh0bWwKQEAgLTAsMCArMSBAQAorPCEtLSBUaGlzIGZpbGUgaXMgcmVxdWlyZWQg
Zm9yIFdlYktpdCB0ZXN0IGluZnJhc3RydWN0dXJlIHRvIHJ1biB0aGUgdGVtcGxhdGVkIHRlc3Qg
LS0+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMv
ZGVmYXVsdC1yZWFkZXIuZGVkaWNhdGVkd29ya2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1z
L2RlZmF1bHQtcmVhZGVyLmRlZGljYXRlZHdvcmtlci1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDYxZmUzMTcyYWJkYTU5M2RlNTI4NDUzNGIwZjliZTA2MzU5MzAx
Y2QuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0
cmVhbXMvZGVmYXVsdC1yZWFkZXIuZGVkaWNhdGVkd29ya2VyLWV4cGVjdGVkLnR4dAorKysgL2Rl
di9udWxsCkBAIC0xLDI5ICswLDAgQEAKLQotUEFTUyBDYW4gZ2V0IHRoZSBSZWFkYWJsZVN0cmVh
bURlZmF1bHRSZWFkZXIgY29uc3RydWN0b3IgaW5kaXJlY3RseSAKLVBBU1MgUmVhZGFibGVTdHJl
YW1EZWZhdWx0UmVhZGVyIGNvbnN0cnVjdG9yIHNob3VsZCBnZXQgYSBSZWFkYWJsZVN0cmVhbSBv
YmplY3QgYXMgYXJndW1lbnQgCi1QQVNTIFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlciBpbnN0
YW5jZXMgc2hvdWxkIGhhdmUgdGhlIGNvcnJlY3QgbGlzdCBvZiBwcm9wZXJ0aWVzIAotUEFTUyBS
ZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIgY2xvc2VkIHNob3VsZCBhbHdheXMgcmV0dXJuIHRo
ZSBzYW1lIHByb21pc2Ugb2JqZWN0IAotUEFTUyBDb25zdHJ1Y3RpbmcgYSBSZWFkYWJsZVN0cmVh
bURlZmF1bHRSZWFkZXIgZGlyZWN0bHkgc2hvdWxkIGZhaWwgaWYgdGhlIHN0cmVhbSBpcyBhbHJl
YWR5IGxvY2tlZCAodmlhIGRpcmVjdCBjb25zdHJ1Y3Rpb24pIAotUEFTUyBHZXR0aW5nIGEgUmVh
ZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyIHZpYSBnZXRSZWFkZXIgc2hvdWxkIGZhaWwgaWYgdGhl
IHN0cmVhbSBpcyBhbHJlYWR5IGxvY2tlZCAodmlhIGRpcmVjdCBjb25zdHJ1Y3Rpb24pIAotUEFT
UyBDb25zdHJ1Y3RpbmcgYSBSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIgZGlyZWN0bHkgc2hv
dWxkIGZhaWwgaWYgdGhlIHN0cmVhbSBpcyBhbHJlYWR5IGxvY2tlZCAodmlhIGdldFJlYWRlcikg
Ci1QQVNTIEdldHRpbmcgYSBSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIgdmlhIGdldFJlYWRl
ciBzaG91bGQgZmFpbCBpZiB0aGUgc3RyZWFtIGlzIGFscmVhZHkgbG9ja2VkICh2aWEgZ2V0UmVh
ZGVyKSAKLVBBU1MgQ29uc3RydWN0aW5nIGEgUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyIGRp
cmVjdGx5IHNob3VsZCBiZSBPSyBpZiB0aGUgc3RyZWFtIGlzIGNsb3NlZCAKLVBBU1MgQ29uc3Ry
dWN0aW5nIGEgUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyIGRpcmVjdGx5IHNob3VsZCBiZSBP
SyBpZiB0aGUgc3RyZWFtIGlzIGVycm9yZWQgCi1QQVNTIFJlYWRpbmcgZnJvbSBhIHJlYWRlciBm
b3IgYW4gZW1wdHkgc3RyZWFtIHdpbGwgd2FpdCB1bnRpbCBhIGNodW5rIGlzIGF2YWlsYWJsZSAK
LVBBU1MgY2FuY2VsKCkgb24gYSByZWFkZXIgZG9lcyBub3QgcmVsZWFzZSB0aGUgcmVhZGVyIAot
UEFTUyBjbG9zZWQgc2hvdWxkIGJlIGZ1bGZpbGxlZCBhZnRlciBzdHJlYW0gaXMgY2xvc2VkICgu
Y2xvc2VkIGFjY2VzcyBiZWZvcmUgYWNxdWlyaW5nKSAKLVBBU1MgY2xvc2VkIHNob3VsZCBiZSBy
ZWplY3RlZCBhZnRlciByZWFkZXIgcmVsZWFzZXMgaXRzIGxvY2sgKG11bHRpcGxlIHN0cmVhbSBs
b2NrcykgCi1QQVNTIE11bHRpcGxlIHJlYWRlcnMgY2FuIGFjY2VzcyB0aGUgc3RyZWFtIGluIHNl
cXVlbmNlIAotUEFTUyBDYW5ub3QgdXNlIGFuIGFscmVhZHktcmVsZWFzZWQgcmVhZGVyIHRvIHVu
bG9jayBhIHN0cmVhbSBhZ2FpbiAKLVBBU1MgY2FuY2VsKCkgb24gYSByZWxlYXNlZCByZWFkZXIg
aXMgYSBuby1vcCBhbmQgZG9lcyBub3QgcGFzcyB0aHJvdWdoIAotUEFTUyBHZXR0aW5nIGEgc2Vj
b25kIHJlYWRlciBhZnRlciBlcnJvcmluZyB0aGUgc3RyZWFtIGFuZCByZWxlYXNpbmcgdGhlIHJl
YWRlciBzaG91bGQgc3VjY2VlZCAKLVBBU1MgUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyIGNs
b3NlZCBwcm9taXNlIHNob3VsZCBiZSByZWplY3RlZCB3aXRoIHVuZGVmaW5lZCBpZiB0aGF0IGlz
IHRoZSBlcnJvciAKLVBBU1MgUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyOiBpZiBzdGFydCBy
ZWplY3RzIHdpdGggbm8gcGFyYW1ldGVyLCBpdCBzaG91bGQgZXJyb3IgdGhlIHN0cmVhbSB3aXRo
IGFuIHVuZGVmaW5lZCBlcnJvciAKLVBBU1MgRXJyb3JpbmcgYSBSZWFkYWJsZVN0cmVhbSBhZnRl
ciBjaGVja2luZyBjbG9zZWQgc2hvdWxkIHJlamVjdCBSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFk
ZXIgY2xvc2VkIHByb21pc2UgCi1QQVNTIEVycm9yaW5nIGEgUmVhZGFibGVTdHJlYW0gYmVmb3Jl
IGNoZWNraW5nIGNsb3NlZCBzaG91bGQgcmVqZWN0IFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRl
ciBjbG9zZWQgcHJvbWlzZSAKLVBBU1MgUmVhZGluZyB0d2ljZSBvbiBhIHN0cmVhbSB0aGF0IGdl
dHMgY2xvc2VkIAotUEFTUyBSZWFkaW5nIHR3aWNlIG9uIGEgY2xvc2VkIHN0cmVhbSAKLVBBU1Mg
UmVhZGluZyB0d2ljZSBvbiBhbiBlcnJvcmVkIHN0cmVhbSAKLVBBU1MgUmVhZGluZyB0d2ljZSBv
biBhIHN0cmVhbSB0aGF0IGdldHMgZXJyb3JlZCAKLVBBU1MgZ2V0UmVhZGVyKCkgc2hvdWxkIGNh
bGwgVG9TdHJpbmcoKSBvbiBtb2RlIAotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9kZWZhdWx0
LXJlYWRlci5kZWRpY2F0ZWR3b3JrZXIuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2RlZmF1bHQtcmVhZGVy
LmRlZGljYXRlZHdvcmtlci5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYTBi
MmQwNTExYjZmMmRjYzQxZDExMjgwNjU0ZGE3NzY1MWNjMzU3Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2RlZmF1bHQtcmVhZGVyLmRl
ZGljYXRlZHdvcmtlci5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotPCFET0NU
WVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08dGl0bGU+ZGVmYXVsdC1yZWFkZXIu
anMgZGVkaWNhdGVkIHdvcmtlciB3cmFwcGVyIGZpbGU8L3RpdGxlPgotCi08c2NyaXB0IHNyYz0i
L3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3Jlc291
cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci0KLTxzY3JpcHQ+Ci0ndXNlIHN0
cmljdCc7Ci1mZXRjaF90ZXN0c19mcm9tX3dvcmtlcihuZXcgV29ya2VyKCdkZWZhdWx0LXJlYWRl
ci5qcycpKTsKLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZGVmYXVsdC1yZWFk
ZXIuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2RlZmF1bHQtcmVhZGVyLmh0bWwKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDkyYzlhZTY1OGRkODAyNWUyM2QwNTI4NWIyZGJkOWY4ZjQ5ZDMu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVh
bXMvZGVmYXVsdC1yZWFkZXIuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAKLTwh
RE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHRpdGxlPmRlZmF1bHQtcmVh
ZGVyLmpzIGJyb3dzZXIgY29udGV4dCB3cmFwcGVyIGZpbGU8L3RpdGxlPgotCi08c2NyaXB0IHNy
Yz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3Jl
c291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci0KLTxzY3JpcHQgc3JjPSIu
Li9yZXNvdXJjZXMvcnMtdXRpbHMuanMiPjwvc2NyaXB0PgotCi08c2NyaXB0IHNyYz0iZGVmYXVs
dC1yZWFkZXIuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZGVmYXVsdC1y
ZWFkZXIuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9kZWZhdWx0LXJlYWRlci5qcwpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggOWI2NDVlMjQ3MjU4MmYxNzU5ODEzN2IyNjJjYjAyOTQ4YTE0MDY2MS4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFt
cy9kZWZhdWx0LXJlYWRlci5qcworKysgL2Rldi9udWxsCkBAIC0xLDUwMSArMCwwIEBACi0ndXNl
IHN0cmljdCc7Ci0KLWlmIChzZWxmLmltcG9ydFNjcmlwdHMpIHsKLSAgc2VsZi5pbXBvcnRTY3Jp
cHRzKCcuLi9yZXNvdXJjZXMvcnMtdXRpbHMuanMnKTsKLSAgc2VsZi5pbXBvcnRTY3JpcHRzKCcv
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzJyk7Ci19Ci0KLWxldCBSZWFkYWJsZVN0cmVhbURlZmF1
bHRSZWFkZXI7Ci0KLXRlc3QoKCkgPT4gewotCi0gIC8vIEl0J3Mgbm90IGV4cG9zZWQgZ2xvYmFs
bHksIGJ1dCB3ZSB0ZXN0IGEgZmV3IG9mIGl0cyBwcm9wZXJ0aWVzIGhlcmUuCi0gIFJlYWRhYmxl
U3RyZWFtRGVmYXVsdFJlYWRlciA9IChuZXcgUmVhZGFibGVTdHJlYW0oKSkuZ2V0UmVhZGVyKCku
Y29uc3RydWN0b3I7Ci0KLX0sICdDYW4gZ2V0IHRoZSBSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFk
ZXIgY29uc3RydWN0b3IgaW5kaXJlY3RseScpOwotCi10ZXN0KCgpID0+IHsKLQotICBhc3NlcnRf
dGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gbmV3IFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJl
YWRlcigncG90YXRvJykpOwotICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4g
bmV3IFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlcih7fSkpOwotICBhc3NlcnRfdGhyb3dzKG5l
dyBUeXBlRXJyb3IoKSwgKCkgPT4gbmV3IFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlcigpKTsK
LQotfSwgJ1JlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlciBjb25zdHJ1Y3RvciBzaG91bGQgZ2V0
IGEgUmVhZGFibGVTdHJlYW0gb2JqZWN0IGFzIGFyZ3VtZW50Jyk7Ci0KLXRlc3QoKCkgPT4gewot
Ci0gIGNvbnN0IG1ldGhvZHMgPSBbJ2NhbmNlbCcsICdjb25zdHJ1Y3RvcicsICdyZWFkJywgJ3Jl
bGVhc2VMb2NrJ107Ci0gIGNvbnN0IHByb3BlcnRpZXMgPSBtZXRob2RzLmNvbmNhdChbJ2Nsb3Nl
ZCddKS5zb3J0KCk7Ci0KLSAgY29uc3QgcnNSZWFkZXIgPSBuZXcgUmVhZGFibGVTdHJlYW1EZWZh
dWx0UmVhZGVyKG5ldyBSZWFkYWJsZVN0cmVhbSgpKTsKLSAgY29uc3QgcHJvdG8gPSBPYmplY3Qu
Z2V0UHJvdG90eXBlT2YocnNSZWFkZXIpOwotCi0gIGFzc2VydF9hcnJheV9lcXVhbHMoT2JqZWN0
LmdldE93blByb3BlcnR5TmFtZXMocHJvdG8pLnNvcnQoKSwgcHJvcGVydGllcyk7Ci0KLSAgZm9y
IChjb25zdCBtIG9mIG1ldGhvZHMpIHsKLSAgICBjb25zdCBwcm9wRGVzYyA9IE9iamVjdC5nZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3IocHJvdG8sIG0pOwotICAgIGFzc2VydF9lcXVhbHMocHJvcERl
c2MuZW51bWVyYWJsZSwgZmFsc2UsICdtZXRob2Qgc2hvdWxkIGJlIG5vbi1lbnVtZXJhYmxlJyk7
Ci0gICAgYXNzZXJ0X2VxdWFscyhwcm9wRGVzYy5jb25maWd1cmFibGUsIHRydWUsICdtZXRob2Qg
c2hvdWxkIGJlIGNvbmZpZ3VyYWJsZScpOwotICAgIGFzc2VydF9lcXVhbHMocHJvcERlc2Mud3Jp
dGFibGUsIHRydWUsICdtZXRob2Qgc2hvdWxkIGJlIHdyaXRhYmxlJyk7Ci0gICAgYXNzZXJ0X2Vx
dWFscyh0eXBlb2YgcnNSZWFkZXJbbV0sICdmdW5jdGlvbicsICdzaG91bGQgaGF2ZSBiZSBhIG1l
dGhvZCcpOwotICAgIGNvbnN0IGV4cGVjdGVkTmFtZSA9IG0gPT09ICdjb25zdHJ1Y3RvcicgPyAn
UmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyJyA6IG07Ci0gICAgYXNzZXJ0X2VxdWFscyhyc1Jl
YWRlclttXS5uYW1lLCBleHBlY3RlZE5hbWUsICdtZXRob2Qgc2hvdWxkIGhhdmUgdGhlIGNvcnJl
Y3QgbmFtZScpOwotICB9Ci0KLSAgY29uc3QgY2xvc2VkUHJvcERlc2MgPSBPYmplY3QuZ2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yKHByb3RvLCAnY2xvc2VkJyk7Ci0gIGFzc2VydF9lcXVhbHMoY2xv
c2VkUHJvcERlc2MuZW51bWVyYWJsZSwgZmFsc2UsICdjbG9zZWQgc2hvdWxkIGJlIG5vbi1lbnVt
ZXJhYmxlJyk7Ci0gIGFzc2VydF9lcXVhbHMoY2xvc2VkUHJvcERlc2MuY29uZmlndXJhYmxlLCB0
cnVlLCAnY2xvc2VkIHNob3VsZCBiZSBjb25maWd1cmFibGUnKTsKLSAgYXNzZXJ0X25vdF9lcXVh
bHMoY2xvc2VkUHJvcERlc2MuZ2V0LCB1bmRlZmluZWQsICdjbG9zZWQgc2hvdWxkIGhhdmUgYSBn
ZXR0ZXInKTsKLSAgYXNzZXJ0X2VxdWFscyhjbG9zZWRQcm9wRGVzYy5zZXQsIHVuZGVmaW5lZCwg
J2Nsb3NlZCBzaG91bGQgbm90IGhhdmUgYSBzZXR0ZXInKTsKLQotICBhc3NlcnRfZXF1YWxzKHJz
UmVhZGVyLmNhbmNlbC5sZW5ndGgsIDEsICdjYW5jZWwgaGFzIDEgcGFyYW1ldGVyJyk7Ci0gIGFz
c2VydF9ub3RfZXF1YWxzKHJzUmVhZGVyLmNsb3NlZCwgdW5kZWZpbmVkLCAnaGFzIGEgbm9uLXVu
ZGVmaW5lZCBjbG9zZWQgcHJvcGVydHknKTsKLSAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgcnNSZWFk
ZXIuY2xvc2VkLnRoZW4sICdmdW5jdGlvbicsICdjbG9zZWQgcHJvcGVydHkgaXMgdGhlbmFibGUn
KTsKLSAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgcnNSZWFkZXIuY29uc3RydWN0b3IsICdmdW5jdGlv
bicsICdoYXMgYSBjb25zdHJ1Y3RvciBtZXRob2QnKTsKLSAgYXNzZXJ0X2VxdWFscyhyc1JlYWRl
ci5jb25zdHJ1Y3Rvci5sZW5ndGgsIDEsICdjb25zdHJ1Y3RvciBoYXMgMSBwYXJhbWV0ZXInKTsK
LSAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgcnNSZWFkZXIucmVhZCwgJ2Z1bmN0aW9uJywgJ2hhcyBh
IGdldFJlYWRlciBtZXRob2QnKTsKLSAgYXNzZXJ0X2VxdWFscyhyc1JlYWRlci5yZWFkLmxlbmd0
aCwgMCwgJ3JlYWQgaGFzIG5vIHBhcmFtZXRlcnMnKTsKLSAgYXNzZXJ0X2VxdWFscyh0eXBlb2Yg
cnNSZWFkZXIucmVsZWFzZUxvY2ssICdmdW5jdGlvbicsICdoYXMgYSByZWxlYXNlTG9jayBtZXRo
b2QnKTsKLSAgYXNzZXJ0X2VxdWFscyhyc1JlYWRlci5yZWxlYXNlTG9jay5sZW5ndGgsIDAsICdy
ZWxlYXNlTG9jayBoYXMgbm8gcGFyYW1ldGVycycpOwotCi19LCAnUmVhZGFibGVTdHJlYW1EZWZh
dWx0UmVhZGVyIGluc3RhbmNlcyBzaG91bGQgaGF2ZSB0aGUgY29ycmVjdCBsaXN0IG9mIHByb3Bl
cnRpZXMnKTsKLQotdGVzdCgoKSA9PiB7Ci0KLSAgY29uc3QgcnNSZWFkZXIgPSBuZXcgUmVhZGFi
bGVTdHJlYW1EZWZhdWx0UmVhZGVyKG5ldyBSZWFkYWJsZVN0cmVhbSgpKTsKLSAgYXNzZXJ0X2Vx
dWFscyhyc1JlYWRlci5jbG9zZWQsIHJzUmVhZGVyLmNsb3NlZCwgJ2Nsb3NlZCBzaG91bGQgcmV0
dXJuIHRoZSBzYW1lIHByb21pc2UnKTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRl
ciBjbG9zZWQgc2hvdWxkIGFsd2F5cyByZXR1cm4gdGhlIHNhbWUgcHJvbWlzZSBvYmplY3QnKTsK
LQotdGVzdCgoKSA9PiB7Ci0KLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oKTsKLSAg
bmV3IFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlcihycyk7IC8vIENvbnN0cnVjdGluZyBkaXJl
Y3RseSB0aGUgZmlyc3QgdGltZSBzaG91bGQgYmUgZmluZS4KLSAgYXNzZXJ0X3Rocm93cyhuZXcg
VHlwZUVycm9yKCksICgpID0+IG5ldyBSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIocnMpLAot
ICAgICAgICAgICAgICAgICdjb25zdHJ1Y3RpbmcgZGlyZWN0bHkgdGhlIHNlY29uZCB0aW1lIHNo
b3VsZCBmYWlsJyk7Ci0KLX0sICdDb25zdHJ1Y3RpbmcgYSBSZWFkYWJsZVN0cmVhbURlZmF1bHRS
ZWFkZXIgZGlyZWN0bHkgc2hvdWxkIGZhaWwgaWYgdGhlIHN0cmVhbSBpcyBhbHJlYWR5IGxvY2tl
ZCAodmlhIGRpcmVjdCAnICsKLSAgICdjb25zdHJ1Y3Rpb24pJyk7Ci0KLXRlc3QoKCkgPT4gewot
Ci0gIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKCk7Ci0gIG5ldyBSZWFkYWJsZVN0cmVh
bURlZmF1bHRSZWFkZXIocnMpOyAvLyBDb25zdHJ1Y3RpbmcgZGlyZWN0bHkgc2hvdWxkIGJlIGZp
bmUuCi0gIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBycy5nZXRSZWFkZXIo
KSwgJ2dldFJlYWRlcigpIHNob3VsZCBmYWlsJyk7Ci0KLX0sICdHZXR0aW5nIGEgUmVhZGFibGVT
dHJlYW1EZWZhdWx0UmVhZGVyIHZpYSBnZXRSZWFkZXIgc2hvdWxkIGZhaWwgaWYgdGhlIHN0cmVh
bSBpcyBhbHJlYWR5IGxvY2tlZCAodmlhIGRpcmVjdCAnICsKLSAgICdjb25zdHJ1Y3Rpb24pJyk7
Ci0KLXRlc3QoKCkgPT4gewotCi0gIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKCk7Ci0g
IHJzLmdldFJlYWRlcigpOyAvLyBnZXRSZWFkZXIoKSBzaG91bGQgYmUgZmluZS4KLSAgYXNzZXJ0
X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IG5ldyBSZWFkYWJsZVN0cmVhbURlZmF1bHRS
ZWFkZXIocnMpLCAnY29uc3RydWN0aW5nIGRpcmVjdGx5IHNob3VsZCBmYWlsJyk7Ci0KLX0sICdD
b25zdHJ1Y3RpbmcgYSBSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIgZGlyZWN0bHkgc2hvdWxk
IGZhaWwgaWYgdGhlIHN0cmVhbSBpcyBhbHJlYWR5IGxvY2tlZCAodmlhIGdldFJlYWRlciknKTsK
LQotdGVzdCgoKSA9PiB7Ci0KLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oKTsKLSAg
cnMuZ2V0UmVhZGVyKCk7IC8vIGdldFJlYWRlcigpIHNob3VsZCBiZSBmaW5lLgotICBhc3NlcnRf
dGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gcnMuZ2V0UmVhZGVyKCksICdnZXRSZWFkZXIo
KSBzaG91bGQgZmFpbCcpOwotCi19LCAnR2V0dGluZyBhIFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJl
YWRlciB2aWEgZ2V0UmVhZGVyIHNob3VsZCBmYWlsIGlmIHRoZSBzdHJlYW0gaXMgYWxyZWFkeSBs
b2NrZWQgKHZpYSBnZXRSZWFkZXIpJyk7Ci0KLXRlc3QoKCkgPT4gewotCi0gIGNvbnN0IHJzID0g
bmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0gICAgICBjLmNsb3NlKCk7Ci0g
ICAgfQotICB9KTsKLQotICBuZXcgUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyKHJzKTsgLy8g
Q29uc3RydWN0aW5nIGRpcmVjdGx5IHNob3VsZCBub3QgdGhyb3cuCi0KLX0sICdDb25zdHJ1Y3Rp
bmcgYSBSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIgZGlyZWN0bHkgc2hvdWxkIGJlIE9LIGlm
IHRoZSBzdHJlYW0gaXMgY2xvc2VkJyk7Ci0KLXRlc3QoKCkgPT4gewotCi0gIGNvbnN0IHRoZUVy
cm9yID0gbmV3IEVycm9yKCdkb25cJ3Qgc2F5IGkgZGlkblwndCB3YXJuIHlhJyk7Ci0gIGNvbnN0
IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0gICAgICBjLmVycm9y
KHRoZUVycm9yKTsKLSAgICB9Ci0gIH0pOwotCi0gIG5ldyBSZWFkYWJsZVN0cmVhbURlZmF1bHRS
ZWFkZXIocnMpOyAvLyBDb25zdHJ1Y3RpbmcgZGlyZWN0bHkgc2hvdWxkIG5vdCB0aHJvdy4KLQot
fSwgJ0NvbnN0cnVjdGluZyBhIFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlciBkaXJlY3RseSBz
aG91bGQgYmUgT0sgaWYgdGhlIHN0cmVhbSBpcyBlcnJvcmVkJyk7Ci0KLXByb21pc2VfdGVzdCgo
KSA9PiB7Ci0KLSAgbGV0IGNvbnRyb2xsZXI7Ci0gIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3Ry
ZWFtKHsKLSAgICBzdGFydChjKSB7Ci0gICAgICBjb250cm9sbGVyID0gYzsKLSAgICB9Ci0gIH0p
OwotICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKLQotICBjb25zdCBwcm9taXNlID0g
cmVhZGVyLnJlYWQoKS50aGVuKHJlc3VsdCA9PiB7Ci0gICAgYXNzZXJ0X29iamVjdF9lcXVhbHMo
cmVzdWx0LCB7IHZhbHVlOiAnYScsIGRvbmU6IGZhbHNlIH0sICdyZWFkKCkgc2hvdWxkIGZ1bGZp
bGwgd2l0aCB0aGUgZW5xdWV1ZWQgY2h1bmsnKTsKLSAgfSk7Ci0KLSAgY29udHJvbGxlci5lbnF1
ZXVlKCdhJyk7Ci0gIHJldHVybiBwcm9taXNlOwotCi19LCAnUmVhZGluZyBmcm9tIGEgcmVhZGVy
IGZvciBhbiBlbXB0eSBzdHJlYW0gd2lsbCB3YWl0IHVudGlsIGEgY2h1bmsgaXMgYXZhaWxhYmxl
Jyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgbGV0IGNhbmNlbENhbGxlZCA9IGZhbHNl
OwotICBjb25zdCBwYXNzZWRSZWFzb24gPSBuZXcgRXJyb3IoJ2l0IHdhc25cJ3QgdGhlIHJpZ2h0
IHRpbWUsIHNvcnJ5Jyk7Ci0gIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBj
YW5jZWwocmVhc29uKSB7Ci0gICAgICBhc3NlcnRfdHJ1ZShycy5sb2NrZWQsICd0aGUgc3RyZWFt
IHNob3VsZCBzdGlsbCBiZSBsb2NrZWQnKTsKLSAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVF
cnJvcigpLCAoKSA9PiBycy5nZXRSZWFkZXIoKSwgJ3Nob3VsZCBub3QgYmUgYWJsZSB0byBnZXQg
YW5vdGhlciByZWFkZXInKTsKLSAgICAgIGFzc2VydF9lcXVhbHMocmVhc29uLCBwYXNzZWRSZWFz
b24sICd0aGUgY2FuY2VsbGF0aW9uIHJlYXNvbiBpcyBwYXNzZWQgdGhyb3VnaCB0byB0aGUgdW5k
ZXJseWluZyBzb3VyY2UnKTsKLSAgICAgIGNhbmNlbENhbGxlZCA9IHRydWU7Ci0gICAgfQotICB9
KTsKLQotICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKLSAgcmV0dXJuIHJlYWRlci5j
YW5jZWwocGFzc2VkUmVhc29uKS50aGVuKCgpID0+IGFzc2VydF90cnVlKGNhbmNlbENhbGxlZCkp
OwotCi19LCAnY2FuY2VsKCkgb24gYSByZWFkZXIgZG9lcyBub3QgcmVsZWFzZSB0aGUgcmVhZGVy
Jyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgbGV0IGNvbnRyb2xsZXI7Ci0gIGNvbnN0
IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0gICAgICBjb250cm9s
bGVyID0gYzsKLSAgICB9Ci0gIH0pOwotCi0gIGNvbnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcigp
OwotICBjb25zdCBwcm9taXNlID0gcmVhZGVyLmNsb3NlZDsKLQotICBjb250cm9sbGVyLmNsb3Nl
KCk7Ci0gIHJldHVybiBwcm9taXNlOwotCi19LCAnY2xvc2VkIHNob3VsZCBiZSBmdWxmaWxsZWQg
YWZ0ZXIgc3RyZWFtIGlzIGNsb3NlZCAoLmNsb3NlZCBhY2Nlc3MgYmVmb3JlIGFjcXVpcmluZykn
KTsKLQotcHJvbWlzZV90ZXN0KHQgPT4gewotCi0gIGxldCBjb250cm9sbGVyOwotICBjb25zdCBy
cyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgY29udHJvbGxl
ciA9IGM7Ci0gICAgfQotICB9KTsKLQotICBjb25zdCByZWFkZXIxID0gcnMuZ2V0UmVhZGVyKCk7
Ci0KLSAgcmVhZGVyMS5yZWxlYXNlTG9jaygpOwotCi0gIGNvbnN0IHJlYWRlcjIgPSBycy5nZXRS
ZWFkZXIoKTsKLSAgY29udHJvbGxlci5jbG9zZSgpOwotCi0gIHJldHVybiBQcm9taXNlLmFsbChb
Ci0gICAgcHJvbWlzZV9yZWplY3RzKHQsIG5ldyBUeXBlRXJyb3IoKSwgcmVhZGVyMS5jbG9zZWQp
LAotICAgIHJlYWRlcjIuY2xvc2VkCi0gIF0pOwotCi19LCAnY2xvc2VkIHNob3VsZCBiZSByZWpl
Y3RlZCBhZnRlciByZWFkZXIgcmVsZWFzZXMgaXRzIGxvY2sgKG11bHRpcGxlIHN0cmVhbSBsb2Nr
cyknKTsKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLQotICBjb25zdCBycyA9IG5ldyBSZWFkYWJs
ZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgYy5lbnF1ZXVlKCdhJyk7Ci0gICAgICBj
LmVucXVldWUoJ2InKTsKLSAgICAgIGMuY2xvc2UoKTsKLSAgICB9Ci0gIH0pOwotCi0gIGNvbnN0
IHJlYWRlcjEgPSBycy5nZXRSZWFkZXIoKTsKLSAgY29uc3QgcHJvbWlzZTEgPSByZWFkZXIxLnJl
YWQoKS50aGVuKHIgPT4gewotICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHIsIHsgdmFsdWU6ICdh
JywgZG9uZTogZmFsc2UgfSwgJ3JlYWRpbmcgdGhlIGZpcnN0IGNodW5rIGZyb20gcmVhZGVyMSB3
b3JrcycpOwotICB9KTsKLSAgcmVhZGVyMS5yZWxlYXNlTG9jaygpOwotCi0gIGNvbnN0IHJlYWRl
cjIgPSBycy5nZXRSZWFkZXIoKTsKLSAgY29uc3QgcHJvbWlzZTIgPSByZWFkZXIyLnJlYWQoKS50
aGVuKHIgPT4gewotICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHIsIHsgdmFsdWU6ICdiJywgZG9u
ZTogZmFsc2UgfSwgJ3JlYWRpbmcgdGhlIHNlY29uZCBjaHVuayBmcm9tIHJlYWRlcjIgd29ya3Mn
KTsKLSAgfSk7Ci0gIHJlYWRlcjIucmVsZWFzZUxvY2soKTsKLQotICByZXR1cm4gUHJvbWlzZS5h
bGwoW3Byb21pc2UxLCBwcm9taXNlMl0pOwotCi19LCAnTXVsdGlwbGUgcmVhZGVycyBjYW4gYWNj
ZXNzIHRoZSBzdHJlYW0gaW4gc2VxdWVuY2UnKTsKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLSAg
Y29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGMu
ZW5xdWV1ZSgnYScpOwotICAgIH0KLSAgfSk7Ci0KLSAgY29uc3QgcmVhZGVyMSA9IHJzLmdldFJl
YWRlcigpOwotICByZWFkZXIxLnJlbGVhc2VMb2NrKCk7Ci0KLSAgY29uc3QgcmVhZGVyMiA9IHJz
LmdldFJlYWRlcigpOwotCi0gIC8vIFNob3VsZCBiZSBhIG5vLW9wCi0gIHJlYWRlcjEucmVsZWFz
ZUxvY2soKTsKLQotICByZXR1cm4gcmVhZGVyMi5yZWFkKCkudGhlbihyZXN1bHQgPT4gewotICAg
IGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdCwgeyB2YWx1ZTogJ2EnLCBkb25lOiBmYWxzZSB9
LAotICAgICAgICAgICAgICAgICAgICAgICAgICdyZWFkKCkgc2hvdWxkIHN0aWxsIHdvcmsgb24g
cmVhZGVyMiBldmVuIGFmdGVyIHJlYWRlcjEgaXMgcmVsZWFzZWQnKTsKLSAgfSk7Ci0KLX0sICdD
YW5ub3QgdXNlIGFuIGFscmVhZHktcmVsZWFzZWQgcmVhZGVyIHRvIHVubG9jayBhIHN0cmVhbSBh
Z2FpbicpOwotCi1wcm9taXNlX3Rlc3QodCA9PiB7Ci0KLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFi
bGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGMuZW5xdWV1ZSgnYScpOwotICAgIH0s
Ci0gICAgY2FuY2VsKCkgewotICAgICAgYXNzZXJ0X3VucmVhY2hlZCgndW5kZXJseWluZyBzb3Vy
Y2UgY2FuY2VsIHNob3VsZCBub3QgYmUgY2FsbGVkJyk7Ci0gICAgfQotICB9KTsKLQotICBjb25z
dCByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKLSAgcmVhZGVyLnJlbGVhc2VMb2NrKCk7Ci0gIGNv
bnN0IGNhbmNlbFByb21pc2UgPSByZWFkZXIuY2FuY2VsKCk7Ci0KLSAgY29uc3QgcmVhZGVyMiA9
IHJzLmdldFJlYWRlcigpOwotICBjb25zdCByZWFkUHJvbWlzZSA9IHJlYWRlcjIucmVhZCgpLnRo
ZW4ociA9PiB7Ci0gICAgYXNzZXJ0X29iamVjdF9lcXVhbHMociwgeyB2YWx1ZTogJ2EnLCBkb25l
OiBmYWxzZSB9LCAnYSBuZXcgcmVhZGVyIHNob3VsZCBiZSBhYmxlIHRvIHJlYWQgYSBjaHVuaycp
OwotICB9KTsKLQotICByZXR1cm4gUHJvbWlzZS5hbGwoWwotICAgIHByb21pc2VfcmVqZWN0cyh0
LCBuZXcgVHlwZUVycm9yKCksIGNhbmNlbFByb21pc2UpLAotICAgIHJlYWRQcm9taXNlCi0gIF0p
OwotCi19LCAnY2FuY2VsKCkgb24gYSByZWxlYXNlZCByZWFkZXIgaXMgYSBuby1vcCBhbmQgZG9l
cyBub3QgcGFzcyB0aHJvdWdoJyk7Ci0KLXByb21pc2VfdGVzdCh0ID0+IHsKLQotICBjb25zdCBw
cm9taXNlQXNzZXJ0cyA9IFtdOwotCi0gIGxldCBjb250cm9sbGVyOwotICBjb25zdCB0aGVFcnJv
ciA9IHsgbmFtZTogJ3VuaXF1ZSBlcnJvcicgfTsKLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVT
dHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGNvbnRyb2xsZXIgPSBjOwotICAgIH0KLSAg
fSk7Ci0KLSAgY29uc3QgcmVhZGVyMSA9IHJzLmdldFJlYWRlcigpOwotCi0gIHByb21pc2VBc3Nl
cnRzLnB1c2goCi0gICAgcHJvbWlzZV9yZWplY3RzKHQsIHRoZUVycm9yLCByZWFkZXIxLmNsb3Nl
ZCksCi0gICAgcHJvbWlzZV9yZWplY3RzKHQsIHRoZUVycm9yLCByZWFkZXIxLnJlYWQoKSkKLSAg
KTsKLQotICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gcnMuZ2V0UmVhZGVy
KCksICd0cnlpbmcgdG8gZ2V0IGFub3RoZXIgcmVhZGVyIGJlZm9yZSBlcnJvcmluZyBzaG91bGQg
dGhyb3cnKTsKLQotICBjb250cm9sbGVyLmVycm9yKHRoZUVycm9yKTsKLQotICByZWFkZXIxLnJl
bGVhc2VMb2NrKCk7Ci0KLSAgY29uc3QgcmVhZGVyMiA9IHJzLmdldFJlYWRlcigpOwotCi0gIHBy
b21pc2VBc3NlcnRzLnB1c2goCi0gICAgcHJvbWlzZV9yZWplY3RzKHQsIHRoZUVycm9yLCByZWFk
ZXIyLmNsb3NlZCksCi0gICAgcHJvbWlzZV9yZWplY3RzKHQsIHRoZUVycm9yLCByZWFkZXIyLnJl
YWQoKSkKLSAgKTsKLQotICByZXR1cm4gUHJvbWlzZS5hbGwocHJvbWlzZUFzc2VydHMpOwotCi19
LCAnR2V0dGluZyBhIHNlY29uZCByZWFkZXIgYWZ0ZXIgZXJyb3JpbmcgdGhlIHN0cmVhbSBhbmQg
cmVsZWFzaW5nIHRoZSByZWFkZXIgc2hvdWxkIHN1Y2NlZWQnKTsKLQotcHJvbWlzZV90ZXN0KHQg
PT4gewotCi0gIGxldCBjb250cm9sbGVyOwotICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVh
bSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgY29udHJvbGxlciA9IGM7Ci0gICAgfQotICB9KTsK
LQotICBjb25zdCBwcm9taXNlID0gcnMuZ2V0UmVhZGVyKCkuY2xvc2VkLnRoZW4oCi0gICAgdC51
bnJlYWNoZWRfZnVuYygnY2xvc2VkIHByb21pc2Ugc2hvdWxkIG5vdCBiZSBmdWxmaWxsZWQgd2hl
biBzdHJlYW0gaXMgZXJyb3JlZCcpLAotICAgIGVyciA9PiB7Ci0gICAgICBhc3NlcnRfZXF1YWxz
KGVyciwgdW5kZWZpbmVkLCAncGFzc2VkIGVycm9yIHNob3VsZCBiZSB1bmRlZmluZWQgYXMgaXQg
d2FzJyk7Ci0gICAgfQotICApOwotCi0gIGNvbnRyb2xsZXIuZXJyb3IoKTsKLSAgcmV0dXJuIHBy
b21pc2U7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIgY2xvc2VkIHByb21pc2Ug
c2hvdWxkIGJlIHJlamVjdGVkIHdpdGggdW5kZWZpbmVkIGlmIHRoYXQgaXMgdGhlIGVycm9yJyk7
Ci0KLQotcHJvbWlzZV90ZXN0KHQgPT4gewotCi0gIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3Ry
ZWFtKHsKLSAgICBzdGFydCgpIHsKLSAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCgpOwotICAg
IH0KLSAgfSk7Ci0KLSAgcmV0dXJuIHJzLmdldFJlYWRlcigpLnJlYWQoKS50aGVuKAotICAgIHQu
dW5yZWFjaGVkX2Z1bmMoJ3JlYWQgcHJvbWlzZSBzaG91bGQgbm90IGJlIGZ1bGZpbGxlZCB3aGVu
IHN0cmVhbSBpcyBlcnJvcmVkJyksCi0gICAgZXJyID0+IHsKLSAgICAgIGFzc2VydF9lcXVhbHMo
ZXJyLCB1bmRlZmluZWQsICdwYXNzZWQgZXJyb3Igc2hvdWxkIGJlIHVuZGVmaW5lZCBhcyBpdCB3
YXMnKTsKLSAgICB9Ci0gICk7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXI6IGlm
IHN0YXJ0IHJlamVjdHMgd2l0aCBubyBwYXJhbWV0ZXIsIGl0IHNob3VsZCBlcnJvciB0aGUgc3Ry
ZWFtIHdpdGggYW4gdW5kZWZpbmVkICcgKwotICAgICdlcnJvcicpOwotCi1wcm9taXNlX3Rlc3Qo
dCA9PiB7Ci0KLSAgY29uc3QgdGhlRXJyb3IgPSB7IG5hbWU6ICd1bmlxdWUgc3RyaW5nJyB9Owot
ICBsZXQgY29udHJvbGxlcjsKLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAg
IHN0YXJ0KGMpIHsKLSAgICAgIGNvbnRyb2xsZXIgPSBjOwotICAgIH0KLSAgfSk7Ci0KLSAgY29u
c3QgcHJvbWlzZSA9IHByb21pc2VfcmVqZWN0cyh0LCB0aGVFcnJvciwgcnMuZ2V0UmVhZGVyKCku
Y2xvc2VkKTsKLQotICBjb250cm9sbGVyLmVycm9yKHRoZUVycm9yKTsKLSAgcmV0dXJuIHByb21p
c2U7Ci0KLX0sICdFcnJvcmluZyBhIFJlYWRhYmxlU3RyZWFtIGFmdGVyIGNoZWNraW5nIGNsb3Nl
ZCBzaG91bGQgcmVqZWN0IFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlciBjbG9zZWQgcHJvbWlz
ZScpOwotCi1wcm9taXNlX3Rlc3QodCA9PiB7Ci0KLSAgY29uc3QgdGhlRXJyb3IgPSB7IG5hbWU6
ICd1bmlxdWUgc3RyaW5nJyB9OwotICBsZXQgY29udHJvbGxlcjsKLSAgY29uc3QgcnMgPSBuZXcg
UmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGNvbnRyb2xsZXIgPSBjOwot
ICAgIH0KLSAgfSk7Ci0KLSAgY29udHJvbGxlci5lcnJvcih0aGVFcnJvcik7Ci0KLSAgLy8gTGV0
J3MgY2FsbCBnZXRSZWFkZXIgdHdpY2UgZm9yIGV4dHJhIHRlc3QgY292ZXJhZ2Ugb2YgdGhpcyBj
b2RlIHBhdGguCi0gIHJzLmdldFJlYWRlcigpLnJlbGVhc2VMb2NrKCk7Ci0KLSAgcmV0dXJuIHBy
b21pc2VfcmVqZWN0cyh0LCB0aGVFcnJvciwgcnMuZ2V0UmVhZGVyKCkuY2xvc2VkKTsKLQotfSwg
J0Vycm9yaW5nIGEgUmVhZGFibGVTdHJlYW0gYmVmb3JlIGNoZWNraW5nIGNsb3NlZCBzaG91bGQg
cmVqZWN0IFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlciBjbG9zZWQgcHJvbWlzZScpOwotCi1w
cm9taXNlX3Rlc3QoKCkgPT4gewotCi0gIGxldCBjb250cm9sbGVyOwotICBjb25zdCBycyA9IG5l
dyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgY29udHJvbGxlciA9IGM7
Ci0gICAgfQotICB9KTsKLSAgY29uc3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7Ci0KLSAgY29u
c3QgcHJvbWlzZSA9IFByb21pc2UuYWxsKFsKLSAgICByZWFkZXIucmVhZCgpLnRoZW4ocmVzdWx0
ID0+IHsKLSAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdCwgeyB2YWx1ZTogdW5kZWZp
bmVkLCBkb25lOiB0cnVlIH0sICdyZWFkKCkgc2hvdWxkIGZ1bGZpbGwgd2l0aCBjbG9zZSAoMSkn
KTsKLSAgICB9KSwKLSAgICByZWFkZXIucmVhZCgpLnRoZW4ocmVzdWx0ID0+IHsKLSAgICAgIGFz
c2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdCwgeyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVl
IH0sICdyZWFkKCkgc2hvdWxkIGZ1bGZpbGwgd2l0aCBjbG9zZSAoMiknKTsKLSAgICB9KSwKLSAg
ICByZWFkZXIuY2xvc2VkCi0gIF0pOwotCi0gIGNvbnRyb2xsZXIuY2xvc2UoKTsKLSAgcmV0dXJu
IHByb21pc2U7Ci0KLX0sICdSZWFkaW5nIHR3aWNlIG9uIGEgc3RyZWFtIHRoYXQgZ2V0cyBjbG9z
ZWQnKTsKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLQotICBsZXQgY29udHJvbGxlcjsKLSAgY29u
c3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGNvbnRy
b2xsZXIgPSBjOwotICAgIH0KLSAgfSk7Ci0KLSAgY29udHJvbGxlci5jbG9zZSgpOwotICBjb25z
dCByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKLQotICByZXR1cm4gUHJvbWlzZS5hbGwoWwotICAg
IHJlYWRlci5yZWFkKCkudGhlbihyZXN1bHQgPT4gewotICAgICAgYXNzZXJ0X29iamVjdF9lcXVh
bHMocmVzdWx0LCB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSwgJ3JlYWQoKSBzaG91
bGQgZnVsZmlsbCB3aXRoIGNsb3NlICgxKScpOwotICAgIH0pLAotICAgIHJlYWRlci5yZWFkKCku
dGhlbihyZXN1bHQgPT4gewotICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0LCB7IHZh
bHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSwgJ3JlYWQoKSBzaG91bGQgZnVsZmlsbCB3aXRo
IGNsb3NlICgyKScpOwotICAgIH0pLAotICAgIHJlYWRlci5jbG9zZWQKLSAgXSk7Ci0KLX0sICdS
ZWFkaW5nIHR3aWNlIG9uIGEgY2xvc2VkIHN0cmVhbScpOwotCi1wcm9taXNlX3Rlc3QodCA9PiB7
Ci0KLSAgbGV0IGNvbnRyb2xsZXI7Ci0gIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsK
LSAgICBzdGFydChjKSB7Ci0gICAgICBjb250cm9sbGVyID0gYzsKLSAgICB9Ci0gIH0pOwotCi0g
IGNvbnN0IG15RXJyb3IgPSB7IG5hbWU6ICdtYXNoZWQgcG90YXRvZXMnIH07Ci0gIGNvbnRyb2xs
ZXIuZXJyb3IobXlFcnJvcik7Ci0KLSAgY29uc3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7Ci0K
LSAgcmV0dXJuIFByb21pc2UuYWxsKFsKLSAgICBwcm9taXNlX3JlamVjdHModCwgbXlFcnJvciwg
cmVhZGVyLnJlYWQoKSksCi0gICAgcHJvbWlzZV9yZWplY3RzKHQsIG15RXJyb3IsIHJlYWRlci5y
ZWFkKCkpLAotICAgIHByb21pc2VfcmVqZWN0cyh0LCBteUVycm9yLCByZWFkZXIuY2xvc2VkKQot
ICBdKTsKLQotfSwgJ1JlYWRpbmcgdHdpY2Ugb24gYW4gZXJyb3JlZCBzdHJlYW0nKTsKLQotcHJv
bWlzZV90ZXN0KHQgPT4gewotCi0gIGxldCBjb250cm9sbGVyOwotICBjb25zdCBycyA9IG5ldyBS
ZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgY29udHJvbGxlciA9IGM7Ci0g
ICAgfQotICB9KTsKLQotICBjb25zdCBteUVycm9yID0geyBuYW1lOiAnbWFzaGVkIHBvdGF0b2Vz
JyB9OwotICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKLQotICBjb25zdCBwcm9taXNl
ID0gUHJvbWlzZS5hbGwoWwotICAgIHByb21pc2VfcmVqZWN0cyh0LCBteUVycm9yLCByZWFkZXIu
cmVhZCgpKSwKLSAgICBwcm9taXNlX3JlamVjdHModCwgbXlFcnJvciwgcmVhZGVyLnJlYWQoKSks
Ci0gICAgcHJvbWlzZV9yZWplY3RzKHQsIG15RXJyb3IsIHJlYWRlci5jbG9zZWQpCi0gIF0pOwot
Ci0gIGNvbnRyb2xsZXIuZXJyb3IobXlFcnJvcik7Ci0gIHJldHVybiBwcm9taXNlOwotCi19LCAn
UmVhZGluZyB0d2ljZSBvbiBhIHN0cmVhbSB0aGF0IGdldHMgZXJyb3JlZCcpOwotCi10ZXN0KCgp
ID0+IHsKLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oKTsKLSAgbGV0IHRvU3RyaW5n
Q2FsbGVkID0gZmFsc2U7Ci0gIGNvbnN0IG1vZGUgPSB7Ci0gICAgdG9TdHJpbmcoKSB7Ci0gICAg
ICB0b1N0cmluZ0NhbGxlZCA9IHRydWU7Ci0gICAgICByZXR1cm4gJyc7Ci0gICAgfQotICB9Owot
ICBhc3NlcnRfdGhyb3dzKG5ldyBSYW5nZUVycm9yKCksICgpID0+IHJzLmdldFJlYWRlcih7IG1v
ZGUgfSksICdnZXRSZWFkZXIoKSBzaG91bGQgdGhyb3cnKTsKLSAgYXNzZXJ0X3RydWUodG9TdHJp
bmdDYWxsZWQsICd0b1N0cmluZygpIHNob3VsZCBiZSBjYWxsZWQnKTsKLX0sICdnZXRSZWFkZXIo
KSBzaG91bGQgY2FsbCBUb1N0cmluZygpIG9uIG1vZGUnKTsKLQotZG9uZSgpOwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3Jl
YWRhYmxlLXN0cmVhbXMvZGVmYXVsdC1yZWFkZXIuc2VydmljZXdvcmtlci5odHRwcy1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvcmVhZGFibGUtc3RyZWFtcy9kZWZhdWx0LXJlYWRlci5zZXJ2aWNld29ya2VyLmh0dHBzLWV4
cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2ExZWVmNDRlN2VjODJm
NTU1YzE3Yzk4YWUzNmVmMWU5MGQzODVmMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9kZWZhdWx0LXJlYWRlci5zZXJ2aWNld29ya2Vy
Lmh0dHBzLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLQotUEFT
UyBTZXJ2aWNlIHdvcmtlciB0ZXN0IHNldHVwIAotUEFTUyBDYW4gZ2V0IHRoZSBSZWFkYWJsZVN0
cmVhbURlZmF1bHRSZWFkZXIgY29uc3RydWN0b3IgaW5kaXJlY3RseSAKLVBBU1MgUmVhZGFibGVT
dHJlYW1EZWZhdWx0UmVhZGVyIGNvbnN0cnVjdG9yIHNob3VsZCBnZXQgYSBSZWFkYWJsZVN0cmVh
bSBvYmplY3QgYXMgYXJndW1lbnQgCi1QQVNTIFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlciBp
bnN0YW5jZXMgc2hvdWxkIGhhdmUgdGhlIGNvcnJlY3QgbGlzdCBvZiBwcm9wZXJ0aWVzIAotUEFT
UyBSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIgY2xvc2VkIHNob3VsZCBhbHdheXMgcmV0dXJu
IHRoZSBzYW1lIHByb21pc2Ugb2JqZWN0IAotUEFTUyBDb25zdHJ1Y3RpbmcgYSBSZWFkYWJsZVN0
cmVhbURlZmF1bHRSZWFkZXIgZGlyZWN0bHkgc2hvdWxkIGZhaWwgaWYgdGhlIHN0cmVhbSBpcyBh
bHJlYWR5IGxvY2tlZCAodmlhIGRpcmVjdCBjb25zdHJ1Y3Rpb24pIAotUEFTUyBHZXR0aW5nIGEg
UmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyIHZpYSBnZXRSZWFkZXIgc2hvdWxkIGZhaWwgaWYg
dGhlIHN0cmVhbSBpcyBhbHJlYWR5IGxvY2tlZCAodmlhIGRpcmVjdCBjb25zdHJ1Y3Rpb24pIAot
UEFTUyBDb25zdHJ1Y3RpbmcgYSBSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIgZGlyZWN0bHkg
c2hvdWxkIGZhaWwgaWYgdGhlIHN0cmVhbSBpcyBhbHJlYWR5IGxvY2tlZCAodmlhIGdldFJlYWRl
cikgCi1QQVNTIEdldHRpbmcgYSBSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIgdmlhIGdldFJl
YWRlciBzaG91bGQgZmFpbCBpZiB0aGUgc3RyZWFtIGlzIGFscmVhZHkgbG9ja2VkICh2aWEgZ2V0
UmVhZGVyKSAKLVBBU1MgQ29uc3RydWN0aW5nIGEgUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVy
IGRpcmVjdGx5IHNob3VsZCBiZSBPSyBpZiB0aGUgc3RyZWFtIGlzIGNsb3NlZCAKLVBBU1MgQ29u
c3RydWN0aW5nIGEgUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyIGRpcmVjdGx5IHNob3VsZCBi
ZSBPSyBpZiB0aGUgc3RyZWFtIGlzIGVycm9yZWQgCi1QQVNTIFJlYWRpbmcgZnJvbSBhIHJlYWRl
ciBmb3IgYW4gZW1wdHkgc3RyZWFtIHdpbGwgd2FpdCB1bnRpbCBhIGNodW5rIGlzIGF2YWlsYWJs
ZSAKLVBBU1MgY2FuY2VsKCkgb24gYSByZWFkZXIgZG9lcyBub3QgcmVsZWFzZSB0aGUgcmVhZGVy
IAotUEFTUyBjbG9zZWQgc2hvdWxkIGJlIGZ1bGZpbGxlZCBhZnRlciBzdHJlYW0gaXMgY2xvc2Vk
ICguY2xvc2VkIGFjY2VzcyBiZWZvcmUgYWNxdWlyaW5nKSAKLVBBU1MgY2xvc2VkIHNob3VsZCBi
ZSByZWplY3RlZCBhZnRlciByZWFkZXIgcmVsZWFzZXMgaXRzIGxvY2sgKG11bHRpcGxlIHN0cmVh
bSBsb2NrcykgCi1QQVNTIE11bHRpcGxlIHJlYWRlcnMgY2FuIGFjY2VzcyB0aGUgc3RyZWFtIGlu
IHNlcXVlbmNlIAotUEFTUyBDYW5ub3QgdXNlIGFuIGFscmVhZHktcmVsZWFzZWQgcmVhZGVyIHRv
IHVubG9jayBhIHN0cmVhbSBhZ2FpbiAKLVBBU1MgY2FuY2VsKCkgb24gYSByZWxlYXNlZCByZWFk
ZXIgaXMgYSBuby1vcCBhbmQgZG9lcyBub3QgcGFzcyB0aHJvdWdoIAotUEFTUyBHZXR0aW5nIGEg
c2Vjb25kIHJlYWRlciBhZnRlciBlcnJvcmluZyB0aGUgc3RyZWFtIGFuZCByZWxlYXNpbmcgdGhl
IHJlYWRlciBzaG91bGQgc3VjY2VlZCAKLVBBU1MgUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVy
IGNsb3NlZCBwcm9taXNlIHNob3VsZCBiZSByZWplY3RlZCB3aXRoIHVuZGVmaW5lZCBpZiB0aGF0
IGlzIHRoZSBlcnJvciAKLVBBU1MgUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyOiBpZiBzdGFy
dCByZWplY3RzIHdpdGggbm8gcGFyYW1ldGVyLCBpdCBzaG91bGQgZXJyb3IgdGhlIHN0cmVhbSB3
aXRoIGFuIHVuZGVmaW5lZCBlcnJvciAKLVBBU1MgRXJyb3JpbmcgYSBSZWFkYWJsZVN0cmVhbSBh
ZnRlciBjaGVja2luZyBjbG9zZWQgc2hvdWxkIHJlamVjdCBSZWFkYWJsZVN0cmVhbURlZmF1bHRS
ZWFkZXIgY2xvc2VkIHByb21pc2UgCi1QQVNTIEVycm9yaW5nIGEgUmVhZGFibGVTdHJlYW0gYmVm
b3JlIGNoZWNraW5nIGNsb3NlZCBzaG91bGQgcmVqZWN0IFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJl
YWRlciBjbG9zZWQgcHJvbWlzZSAKLVBBU1MgUmVhZGluZyB0d2ljZSBvbiBhIHN0cmVhbSB0aGF0
IGdldHMgY2xvc2VkIAotUEFTUyBSZWFkaW5nIHR3aWNlIG9uIGEgY2xvc2VkIHN0cmVhbSAKLVBB
U1MgUmVhZGluZyB0d2ljZSBvbiBhbiBlcnJvcmVkIHN0cmVhbSAKLVBBU1MgUmVhZGluZyB0d2lj
ZSBvbiBhIHN0cmVhbSB0aGF0IGdldHMgZXJyb3JlZCAKLVBBU1MgZ2V0UmVhZGVyKCkgc2hvdWxk
IGNhbGwgVG9TdHJpbmcoKSBvbiBtb2RlIAotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9kZWZh
dWx0LXJlYWRlci5zZXJ2aWNld29ya2VyLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9kZWZhdWx0
LXJlYWRlci5zZXJ2aWNld29ya2VyLmh0dHBzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGFiNDFmZjI5YmZjMDAwMTJjZWVmYjBlNjM1YTk1YjI0YmFlOWQ3ODMuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZGVmYXVs
dC1yZWFkZXIuc2VydmljZXdvcmtlci5odHRwcy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTIg
KzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08dGl0bGU+
ZGVmYXVsdC1yZWFkZXIuanMgc2VydmljZSB3b3JrZXIgd3JhcHBlciBmaWxlPC90aXRsZT4KLQot
PHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlw
dCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlw
dCBzcmM9Ii9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvcmVzb3VyY2VzL3Rlc3QtaGVs
cGVycy5zdWIuanMiPjwvc2NyaXB0PgotCi08c2NyaXB0PgotJ3VzZSBzdHJpY3QnOwotc2Vydmlj
ZV93b3JrZXJfdGVzdCgnZGVmYXVsdC1yZWFkZXIuanMnLCAnU2VydmljZSB3b3JrZXIgdGVzdCBz
ZXR1cCcpOwotPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9kZWZhdWx0LXJlYWRl
ci5zaGFyZWR3b3JrZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZGVmYXVsdC1yZWFkZXIu
c2hhcmVkd29ya2VyLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDlkNWQyNTA5ZDc4NDdlOGNkNmZlNjYwNmFhNjBjZGQzM2FhNDc0ZS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9kZWZhdWx0LXJlYWRl
ci5zaGFyZWR3b3JrZXItZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBA
Ci1DT05TT0xFIE1FU1NBR0U6IFJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBT
aGFyZWRXb3JrZXIKLQotSGFybmVzcyBFcnJvciAoRkFJTCksIG1lc3NhZ2UgPSBSZWZlcmVuY2VF
cnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogU2hhcmVkV29ya2VyCi0KLQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRh
YmxlLXN0cmVhbXMvZGVmYXVsdC1yZWFkZXIuc2hhcmVkd29ya2VyLmh0bWwgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFt
cy9kZWZhdWx0LXJlYWRlci5zaGFyZWR3b3JrZXIuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggOTZkZTNiYTBmZjM3MWFkNDIwZGIyNzZlODhkM2M3MTk2ZGM4Y2VhMy4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9kZWZh
dWx0LXJlYWRlci5zaGFyZWR3b3JrZXIuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAg
QEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHRpdGxlPmRlZmF1
bHQtcmVhZGVyLmpzIHNoYXJlZCB3b3JrZXIgd3JhcHBlciBmaWxlPC90aXRsZT4KLQotPHNjcmlw
dCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9
Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotCi08c2NyaXB0Pgot
J3VzZSBzdHJpY3QnOwotZmV0Y2hfdGVzdHNfZnJvbV93b3JrZXIobmV3IFNoYXJlZFdvcmtlcign
ZGVmYXVsdC1yZWFkZXIuanMnKSk7Ci08L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1z
L2Zsb2F0aW5nLXBvaW50LXRvdGFsLXF1ZXVlLXNpemUuYW55LWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1z
dHJlYW1zL2Zsb2F0aW5nLXBvaW50LXRvdGFsLXF1ZXVlLXNpemUuYW55LWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5hN2YxOTdlNjBjMDk4Y2Q5MWJjNDdmNDRiODhmZWU4MDZhMTAyMjc0Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZmxvYXRpbmctcG9pbnQtdG90YWwtcXVldWUtc2l6
ZS5hbnktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNiBAQAorCitQQVNTIEZsb2F0aW5nIHBvaW50
IGFyaXRobWV0aWMgbXVzdCBtYW5pZmVzdCBuZWFyIE5VTUJFUi5NQVhfU0FGRV9JTlRFR0VSICh0
b3RhbCBlbmRzIHVwIHBvc2l0aXZlKSAKK1BBU1MgRmxvYXRpbmcgcG9pbnQgYXJpdGhtZXRpYyBt
dXN0IG1hbmlmZXN0IG5lYXIgMCAodG90YWwgZW5kcyB1cCBwb3NpdGl2ZSwgYnV0IGNsYW1wZWQp
IAorUEFTUyBGbG9hdGluZyBwb2ludCBhcml0aG1ldGljIG11c3QgbWFuaWZlc3QgbmVhciAwICh0
b3RhbCBlbmRzIHVwIHBvc2l0aXZlLCBhbmQgbm90IGNsYW1wZWQpIAorUEFTUyBGbG9hdGluZyBw
b2ludCBhcml0aG1ldGljIG11c3QgbWFuaWZlc3QgbmVhciAwICh0b3RhbCBlbmRzIHVwIHplcm8p
IAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9mbG9hdGluZy1wb2ludC10b3RhbC1xdWV1ZS1z
aXplLmFueS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZmxvYXRpbmctcG9pbnQtdG90YWwtcXVldWUtc2l6
ZS5hbnkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMzgyOTEzNTI4ZTY5M2IzYTVkNTZjNjYwYTQ1MDYwOTgw
YjU0OGMzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZmxvYXRpbmctcG9pbnQtdG90
YWwtcXVldWUtc2l6ZS5hbnkuaHRtbApAQCAtMCwwICsxIEBACis8IS0tIFRoaXMgZmlsZSBpcyBy
ZXF1aXJlZCBmb3IgV2ViS2l0IHRlc3QgaW5mcmFzdHJ1Y3R1cmUgdG8gcnVuIHRoZSB0ZW1wbGF0
ZWQgdGVzdCAtLT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUt
c3RyZWFtcy9mbG9hdGluZy1wb2ludC10b3RhbC1xdWV1ZS1zaXplLmFueS5qcyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJl
YW1zL2Zsb2F0aW5nLXBvaW50LXRvdGFsLXF1ZXVlLXNpemUuYW55LmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQw
MDQ4MmE0NTBjYWQyOWZlMmJjMDUxNWUyMjU0NGUzN2MwYWVkN2YKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVh
ZGFibGUtc3RyZWFtcy9mbG9hdGluZy1wb2ludC10b3RhbC1xdWV1ZS1zaXplLmFueS5qcwpAQCAt
MCwwICsxLDExNiBAQAorLy8gTUVUQTogZ2xvYmFsPXdpbmRvdyx3b3JrZXIsanNzaGVsbAorJ3Vz
ZSBzdHJpY3QnOworCisvLyBEdWUgdG8gdGhlIGxpbWl0YXRpb25zIG9mIGZsb2F0aW5nLXBvaW50
IHByZWNpc2lvbiwgdGhlIGNhbGN1bGF0aW9uIG9mIGRlc2lyZWRTaXplIHNvbWV0aW1lcyBnaXZl
cyBkaWZmZXJlbnQgYW5zd2VycworLy8gdGhhbiBhZGRpbmcgdXAgdGhlIGl0ZW1zIGluIHRoZSBx
dWV1ZSB3b3VsZC4gSXQgaXMgaW1wb3J0YW50IHRoYXQgaW1wbGVtZW50YXRpb25zIGdpdmUgdGhl
IHNhbWUgcmVzdWx0IGluIHRoZXNlIGVkZ2UKKy8vIGNhc2VzIHNvIHRoYXQgZGV2ZWxvcGVycyBk
byBub3QgY29tZSB0byBkZXBlbmQgb24gbm9uLXN0YW5kYXJkIGJlaGF2aW91ci4gU2VlCisvLyBo
dHRwczovL2dpdGh1Yi5jb20vd2hhdHdnL3N0cmVhbXMvaXNzdWVzLzU4MiBhbmQgbGlua2VkIGlz
c3VlcyBmb3IgZnVydGhlciBkaXNjdXNzaW9uLgorCitwcm9taXNlX3Rlc3QoKCkgPT4geworICBj
b25zdCB7IHJlYWRlciwgY29udHJvbGxlciB9ID0gc2V0dXBUZXN0U3RyZWFtKCk7CisKKyAgY29u
dHJvbGxlci5lbnF1ZXVlKDIpOworICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNp
emUsIDAgLSAyLCAnZGVzaXJlZFNpemUgbXVzdCBiZSAtMiBhZnRlciBlbnF1ZXVlaW5nIHN1Y2gg
YSBjaHVuaycpOworCisgIGNvbnRyb2xsZXIuZW5xdWV1ZShOdW1iZXIuTUFYX1NBRkVfSU5URUdF
Uik7CisgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMCAtIE51bWJlci5N
QVhfU0FGRV9JTlRFR0VSIC0gMiwKKyAgICAnZGVzaXJlZFNpemUgbXVzdCBiZSBjYWxjdWxhdGVk
IHVzaW5nIGRvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgYXJpdGhtZXRpYyAoYWRkaW5n
IGEgc2Vjb25kIGNodW5rKScpOworCisgIHJldHVybiByZWFkZXIucmVhZCgpLnRoZW4oKCkgPT4g
eworICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMCAtIE51bWJlci5N
QVhfU0FGRV9JTlRFR0VSIC0gMiArIDIsCisgICAgICAnZGVzaXJlZFNpemUgbXVzdCBiZSBjYWxj
dWxhdGVkIHVzaW5nIGRvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgYXJpdGhtZXRpYyAo
c3VidHJhY3RpbmcgYSBjaHVuayknKTsKKworICAgIHJldHVybiByZWFkZXIucmVhZCgpOworICB9
KS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUs
IDAsICdbW3F1ZXVlVG90YWxTaXplXV0gbXVzdCBjbGFtcCB0byAwIGlmIGl0IGJlY29tZXMgbmVn
YXRpdmUnKTsKKyAgfSk7Cit9LCAnRmxvYXRpbmcgcG9pbnQgYXJpdGhtZXRpYyBtdXN0IG1hbmlm
ZXN0IG5lYXIgTlVNQkVSLk1BWF9TQUZFX0lOVEVHRVIgKHRvdGFsIGVuZHMgdXAgcG9zaXRpdmUp
Jyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisgIGNvbnN0IHsgcmVhZGVyLCBjb250cm9sbGVy
IH0gPSBzZXR1cFRlc3RTdHJlYW0oKTsKKworICBjb250cm9sbGVyLmVucXVldWUoMWUtMTYpOwor
ICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDAgLSAxZS0xNiwgJ2Rlc2ly
ZWRTaXplIG11c3QgYmUgLTFlMTYgYWZ0ZXIgZW5xdWV1ZWluZyBzdWNoIGEgY2h1bmsnKTsKKwor
ICBjb250cm9sbGVyLmVucXVldWUoMSk7CisgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNp
cmVkU2l6ZSwgMCAtIDFlLTE2IC0gMSwKKyAgICAnZGVzaXJlZFNpemUgbXVzdCBiZSBjYWxjdWxh
dGVkIHVzaW5nIGRvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgYXJpdGhtZXRpYyAoYWRk
aW5nIGEgc2Vjb25kIGNodW5rKScpOworCisgIHJldHVybiByZWFkZXIucmVhZCgpLnRoZW4oKCkg
PT4geworICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMCAtIDFlLTE2
IC0gMSArIDFlLTE2LAorICAgICAgJ2Rlc2lyZWRTaXplIG11c3QgYmUgY2FsY3VsYXRlZCB1c2lu
ZyBkb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IGFyaXRobWV0aWMgKHN1YnRyYWN0aW5n
IGEgY2h1bmspJyk7CisKKyAgICByZXR1cm4gcmVhZGVyLnJlYWQoKTsKKyAgfSkudGhlbigoKSA9
PiB7CisgICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAwLCAnW1txdWV1
ZVRvdGFsU2l6ZV1dIG11c3QgY2xhbXAgdG8gMCBpZiBpdCBiZWNvbWVzIG5lZ2F0aXZlJyk7Cisg
IH0pOworfSwgJ0Zsb2F0aW5nIHBvaW50IGFyaXRobWV0aWMgbXVzdCBtYW5pZmVzdCBuZWFyIDAg
KHRvdGFsIGVuZHMgdXAgcG9zaXRpdmUsIGJ1dCBjbGFtcGVkKScpOworCitwcm9taXNlX3Rlc3Qo
KCkgPT4geworICBjb25zdCB7IHJlYWRlciwgY29udHJvbGxlciB9ID0gc2V0dXBUZXN0U3RyZWFt
KCk7CisKKyAgY29udHJvbGxlci5lbnF1ZXVlKDFlLTE2KTsKKyAgYXNzZXJ0X2VxdWFscyhjb250
cm9sbGVyLmRlc2lyZWRTaXplLCAwIC0gMWUtMTYsICdkZXNpcmVkU2l6ZSBtdXN0IGJlIC0yZTE2
IGFmdGVyIGVucXVldWVpbmcgc3VjaCBhIGNodW5rJyk7CisKKyAgY29udHJvbGxlci5lbnF1ZXVl
KDEpOworICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDAgLSAxZS0xNiAt
IDEsCisgICAgJ2Rlc2lyZWRTaXplIG11c3QgYmUgY2FsY3VsYXRlZCB1c2luZyBkb3VibGUtcHJl
Y2lzaW9uIGZsb2F0aW5nLXBvaW50IGFyaXRobWV0aWMgKGFkZGluZyBhIHNlY29uZCBjaHVuaykn
KTsKKworICBjb250cm9sbGVyLmVucXVldWUoMmUtMTYpOworICBhc3NlcnRfZXF1YWxzKGNvbnRy
b2xsZXIuZGVzaXJlZFNpemUsIDAgLSAxZS0xNiAtIDEgLSAyZS0xNiwKKyAgICAnZGVzaXJlZFNp
emUgbXVzdCBiZSBjYWxjdWxhdGVkIHVzaW5nIGRvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9p
bnQgYXJpdGhtZXRpYyAoYWRkaW5nIGEgdGhpcmQgY2h1bmspJyk7CisKKyAgcmV0dXJuIHJlYWRl
ci5yZWFkKCkudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2ly
ZWRTaXplLCAwIC0gMWUtMTYgLSAxIC0gMmUtMTYgKyAxZS0xNiwKKyAgICAgICdkZXNpcmVkU2l6
ZSBtdXN0IGJlIGNhbGN1bGF0ZWQgdXNpbmcgZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZy1wb2lu
dCBhcml0aG1ldGljIChzdWJ0cmFjdGluZyBhIGNodW5rKScpOworCisgICAgcmV0dXJuIHJlYWRl
ci5yZWFkKCk7CisgIH0pLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxl
ci5kZXNpcmVkU2l6ZSwgMCAtIDFlLTE2IC0gMSAtIDJlLTE2ICsgMWUtMTYgKyAxLAorICAgICAg
J2Rlc2lyZWRTaXplIG11c3QgYmUgY2FsY3VsYXRlZCB1c2luZyBkb3VibGUtcHJlY2lzaW9uIGZs
b2F0aW5nLXBvaW50IGFyaXRobWV0aWMgKHN1YnRyYWN0aW5nIGEgc2Vjb25kIGNodW5rKScpOwor
CisgICAgcmV0dXJuIHJlYWRlci5yZWFkKCk7CisgIH0pLnRoZW4oKCkgPT4geworICAgIGFzc2Vy
dF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMCAtIDFlLTE2IC0gMSAtIDJlLTE2ICsg
MWUtMTYgKyAxICsgMmUtMTYsCisgICAgICAnZGVzaXJlZFNpemUgbXVzdCBiZSBjYWxjdWxhdGVk
IHVzaW5nIGRvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgYXJpdGhtZXRpYyAoc3VidHJh
Y3RpbmcgYSB0aGlyZCBjaHVuayknKTsKKyAgfSk7Cit9LCAnRmxvYXRpbmcgcG9pbnQgYXJpdGht
ZXRpYyBtdXN0IG1hbmlmZXN0IG5lYXIgMCAodG90YWwgZW5kcyB1cCBwb3NpdGl2ZSwgYW5kIG5v
dCBjbGFtcGVkKScpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworICBjb25zdCB7IHJlYWRlciwg
Y29udHJvbGxlciB9ID0gc2V0dXBUZXN0U3RyZWFtKCk7CisKKyAgY29udHJvbGxlci5lbnF1ZXVl
KDJlLTE2KTsKKyAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAwIC0gMmUt
MTYsICdkZXNpcmVkU2l6ZSBtdXN0IGJlIC0yZTE2IGFmdGVyIGVucXVldWVpbmcgc3VjaCBhIGNo
dW5rJyk7CisKKyAgY29udHJvbGxlci5lbnF1ZXVlKDEpOworICBhc3NlcnRfZXF1YWxzKGNvbnRy
b2xsZXIuZGVzaXJlZFNpemUsIDAgLSAyZS0xNiAtIDEsCisgICAgJ2Rlc2lyZWRTaXplIG11c3Qg
YmUgY2FsY3VsYXRlZCB1c2luZyBkb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IGFyaXRo
bWV0aWMgKGFkZGluZyBhIHNlY29uZCBjaHVuayknKTsKKworICByZXR1cm4gcmVhZGVyLnJlYWQo
KS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUs
IDAgLSAyZS0xNiAtIDEgKyAyZS0xNiwKKyAgICAgICdkZXNpcmVkU2l6ZSBtdXN0IGJlIGNhbGN1
bGF0ZWQgdXNpbmcgZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCBhcml0aG1ldGljIChz
dWJ0cmFjdGluZyBhIGNodW5rKScpOworCisgICAgcmV0dXJuIHJlYWRlci5yZWFkKCk7CisgIH0p
LnRoZW4oKCkgPT4geworICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwg
MCwKKyAgICAgICdkZXNpcmVkU2l6ZSBtdXN0IGJlIGNhbGN1bGF0ZWQgdXNpbmcgZG91YmxlLXBy
ZWNpc2lvbiBmbG9hdGluZy1wb2ludCBhcml0aG1ldGljIChzdWJ0cmFjdGluZyBhIHNlY29uZCBj
aHVuayknKTsKKyAgfSk7Cit9LCAnRmxvYXRpbmcgcG9pbnQgYXJpdGhtZXRpYyBtdXN0IG1hbmlm
ZXN0IG5lYXIgMCAodG90YWwgZW5kcyB1cCB6ZXJvKScpOworCitmdW5jdGlvbiBzZXR1cFRlc3RT
dHJlYW0oKSB7CisgIGNvbnN0IHN0cmF0ZWd5ID0geworICAgIHNpemUoeCkgeworICAgICAgcmV0
dXJuIHg7CisgICAgfSwKKyAgICBoaWdoV2F0ZXJNYXJrOiAwCisgIH07CisKKyAgbGV0IGNvbnRy
b2xsZXI7CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7
CisgICAgICBjb250cm9sbGVyID0gYzsKKyAgICB9CisgIH0sIHN0cmF0ZWd5KTsKKworICByZXR1
cm4geyByZWFkZXI6IHJzLmdldFJlYWRlcigpLCBjb250cm9sbGVyIH07Cit9CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVh
ZGFibGUtc3RyZWFtcy9mbG9hdGluZy1wb2ludC10b3RhbC1xdWV1ZS1zaXplLmFueS53b3JrZXIt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZmxvYXRpbmctcG9pbnQtdG90YWwtcXVldWUtc2l6
ZS5hbnkud29ya2VyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hN2YxOTdlNjBjMDk4Y2Q5MWJj
NDdmNDRiODhmZWU4MDZhMTAyMjc0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZmxv
YXRpbmctcG9pbnQtdG90YWwtcXVldWUtc2l6ZS5hbnkud29ya2VyLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDYgQEAKKworUEFTUyBGbG9hdGluZyBwb2ludCBhcml0aG1ldGljIG11c3QgbWFuaWZl
c3QgbmVhciBOVU1CRVIuTUFYX1NBRkVfSU5URUdFUiAodG90YWwgZW5kcyB1cCBwb3NpdGl2ZSkg
CitQQVNTIEZsb2F0aW5nIHBvaW50IGFyaXRobWV0aWMgbXVzdCBtYW5pZmVzdCBuZWFyIDAgKHRv
dGFsIGVuZHMgdXAgcG9zaXRpdmUsIGJ1dCBjbGFtcGVkKSAKK1BBU1MgRmxvYXRpbmcgcG9pbnQg
YXJpdGhtZXRpYyBtdXN0IG1hbmlmZXN0IG5lYXIgMCAodG90YWwgZW5kcyB1cCBwb3NpdGl2ZSwg
YW5kIG5vdCBjbGFtcGVkKSAKK1BBU1MgRmxvYXRpbmcgcG9pbnQgYXJpdGhtZXRpYyBtdXN0IG1h
bmlmZXN0IG5lYXIgMCAodG90YWwgZW5kcyB1cCB6ZXJvKSAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0
cmVhbXMvZmxvYXRpbmctcG9pbnQtdG90YWwtcXVldWUtc2l6ZS5hbnkud29ya2VyLmh0bWwgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFi
bGUtc3RyZWFtcy9mbG9hdGluZy1wb2ludC10b3RhbC1xdWV1ZS1zaXplLmFueS53b3JrZXIuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4yMzgyOTEzNTI4ZTY5M2IzYTVkNTZjNjYwYTQ1MDYwOTgwYjU0OGMzCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZmxvYXRpbmctcG9pbnQtdG90YWwtcXVldWUt
c2l6ZS5hbnkud29ya2VyLmh0bWwKQEAgLTAsMCArMSBAQAorPCEtLSBUaGlzIGZpbGUgaXMgcmVx
dWlyZWQgZm9yIFdlYktpdCB0ZXN0IGluZnJhc3RydWN0dXJlIHRvIHJ1biB0aGUgdGVtcGxhdGVk
IHRlc3QgLS0+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0
cmVhbXMvZmxvYXRpbmctcG9pbnQtdG90YWwtcXVldWUtc2l6ZS5kZWRpY2F0ZWR3b3JrZXItZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
dHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZmxvYXRpbmctcG9pbnQtdG90YWwtcXVldWUtc2l6ZS5k
ZWRpY2F0ZWR3b3JrZXItZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBhN2YxOTdlNjBjMDk4Y2Q5MWJjNDdmNDRiODhmZWU4MDZhMTAyMjc0Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2Zsb2F0aW5nLXBv
aW50LXRvdGFsLXF1ZXVlLXNpemUuZGVkaWNhdGVkd29ya2VyLWV4cGVjdGVkLnR4dAorKysgL2Rl
di9udWxsCkBAIC0xLDYgKzAsMCBAQAotCi1QQVNTIEZsb2F0aW5nIHBvaW50IGFyaXRobWV0aWMg
bXVzdCBtYW5pZmVzdCBuZWFyIE5VTUJFUi5NQVhfU0FGRV9JTlRFR0VSICh0b3RhbCBlbmRzIHVw
IHBvc2l0aXZlKSAKLVBBU1MgRmxvYXRpbmcgcG9pbnQgYXJpdGhtZXRpYyBtdXN0IG1hbmlmZXN0
IG5lYXIgMCAodG90YWwgZW5kcyB1cCBwb3NpdGl2ZSwgYnV0IGNsYW1wZWQpIAotUEFTUyBGbG9h
dGluZyBwb2ludCBhcml0aG1ldGljIG11c3QgbWFuaWZlc3QgbmVhciAwICh0b3RhbCBlbmRzIHVw
IHBvc2l0aXZlLCBhbmQgbm90IGNsYW1wZWQpIAotUEFTUyBGbG9hdGluZyBwb2ludCBhcml0aG1l
dGljIG11c3QgbWFuaWZlc3QgbmVhciAwICh0b3RhbCBlbmRzIHVwIHplcm8pIAotCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
cmVhZGFibGUtc3RyZWFtcy9mbG9hdGluZy1wb2ludC10b3RhbC1xdWV1ZS1zaXplLmRlZGljYXRl
ZHdvcmtlci5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZmxvYXRpbmctcG9pbnQtdG90YWwtcXVldWUtc2l6
ZS5kZWRpY2F0ZWR3b3JrZXIuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjA5
OGIzOWEzNDU1M2EyNjJhY2YzNzJjYWUwZTkyYzY0ZjVlNmI5OS4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9mbG9hdGluZy1wb2ludC10
b3RhbC1xdWV1ZS1zaXplLmRlZGljYXRlZHdvcmtlci5odG1sCisrKyAvZGV2L251bGwKQEAgLTEs
MTEgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08dGl0
bGU+ZmxvYXRpbmctcG9pbnQtdG90YWwtcXVldWUtc2l6ZS5qcyBkZWRpY2F0ZWQgd29ya2VyIHdy
YXBwZXIgZmlsZTwvdGl0bGU+Ci0KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0
LmpzIj48L3NjcmlwdD4KLQotPHNjcmlwdD4KLSd1c2Ugc3RyaWN0JzsKLWZldGNoX3Rlc3RzX2Zy
b21fd29ya2VyKG5ldyBXb3JrZXIoJ2Zsb2F0aW5nLXBvaW50LXRvdGFsLXF1ZXVlLXNpemUuanMn
KSk7Ci08L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2Zsb2F0aW5nLXBvaW50LXRv
dGFsLXF1ZXVlLXNpemUuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2Zsb2F0aW5nLXBvaW50LXRvdGFsLXF1
ZXVlLXNpemUuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjBlYTY3OTczZjI4
OTI2MTY3NTZhMDVmYjYzYTA5NmEyYmJkNzE5MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9mbG9hdGluZy1wb2ludC10b3RhbC1xdWV1
ZS1zaXplLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi08IURPQ1RZUEUgaHRt
bD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTx0aXRsZT5mbG9hdGluZy1wb2ludC10b3RhbC1x
dWV1ZS1zaXplLmpzIGJyb3dzZXIgY29udGV4dCB3cmFwcGVyIGZpbGU8L3RpdGxlPgotCi08c2Ny
aXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNy
Yz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci0KLQotCi08c2Ny
aXB0IHNyYz0iZmxvYXRpbmctcG9pbnQtdG90YWwtcXVldWUtc2l6ZS5qcyI+PC9zY3JpcHQ+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9mbG9hdGluZy1wb2ludC10b3RhbC1xdWV1ZS1zaXplLmpz
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3Jl
YWRhYmxlLXN0cmVhbXMvZmxvYXRpbmctcG9pbnQtdG90YWwtcXVldWUtc2l6ZS5qcwpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjdjNzYyNDhiMGIyMDg2MmJiYmRiMzllZDc2OTUxYjg4
ODk0NTg2Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFi
bGUtc3RyZWFtcy9mbG9hdGluZy1wb2ludC10b3RhbC1xdWV1ZS1zaXplLmpzCisrKyAvZGV2L251
bGwKQEAgLTEsMTIxICswLDAgQEAKLSd1c2Ugc3RyaWN0JzsKLQotaWYgKHNlbGYuaW1wb3J0U2Ny
aXB0cykgewotICBzZWxmLmltcG9ydFNjcmlwdHMoJy9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMn
KTsKLX0KLQotLy8gRHVlIHRvIHRoZSBsaW1pdGF0aW9ucyBvZiBmbG9hdGluZy1wb2ludCBwcmVj
aXNpb24sIHRoZSBjYWxjdWxhdGlvbiBvZiBkZXNpcmVkU2l6ZSBzb21ldGltZXMgZ2l2ZXMgZGlm
ZmVyZW50IGFuc3dlcnMKLS8vIHRoYW4gYWRkaW5nIHVwIHRoZSBpdGVtcyBpbiB0aGUgcXVldWUg
d291bGQuIEl0IGlzIGltcG9ydGFudCB0aGF0IGltcGxlbWVudGF0aW9ucyBnaXZlIHRoZSBzYW1l
IHJlc3VsdCBpbiB0aGVzZSBlZGdlCi0vLyBjYXNlcyBzbyB0aGF0IGRldmVsb3BlcnMgZG8gbm90
IGNvbWUgdG8gZGVwZW5kIG9uIG5vbi1zdGFuZGFyZCBiZWhhdmlvdXIuIFNlZQotLy8gaHR0cHM6
Ly9naXRodWIuY29tL3doYXR3Zy9zdHJlYW1zL2lzc3Vlcy81ODIgYW5kIGxpbmtlZCBpc3N1ZXMg
Zm9yIGZ1cnRoZXIgZGlzY3Vzc2lvbi4KLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLSAgY29uc3Qg
eyByZWFkZXIsIGNvbnRyb2xsZXIgfSA9IHNldHVwVGVzdFN0cmVhbSgpOwotCi0gIGNvbnRyb2xs
ZXIuZW5xdWV1ZSgyKTsKLSAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAw
IC0gMiwgJ2Rlc2lyZWRTaXplIG11c3QgYmUgLTIgYWZ0ZXIgZW5xdWV1ZWluZyBzdWNoIGEgY2h1
bmsnKTsKLQotICBjb250cm9sbGVyLmVucXVldWUoTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIpOwot
ICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDAgLSBOdW1iZXIuTUFYX1NB
RkVfSU5URUdFUiAtIDIsCi0gICAgJ2Rlc2lyZWRTaXplIG11c3QgYmUgY2FsY3VsYXRlZCB1c2lu
ZyBkb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IGFyaXRobWV0aWMgKGFkZGluZyBhIHNl
Y29uZCBjaHVuayknKTsKLQotICByZXR1cm4gcmVhZGVyLnJlYWQoKS50aGVuKCgpID0+IHsKLSAg
ICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDAgLSBOdW1iZXIuTUFYX1NB
RkVfSU5URUdFUiAtIDIgKyAyLAotICAgICAgJ2Rlc2lyZWRTaXplIG11c3QgYmUgY2FsY3VsYXRl
ZCB1c2luZyBkb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IGFyaXRobWV0aWMgKHN1YnRy
YWN0aW5nIGEgY2h1bmspJyk7Ci0KLSAgICByZXR1cm4gcmVhZGVyLnJlYWQoKTsKLSAgfSkudGhl
bigoKSA9PiB7Ci0gICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAwLCAn
W1txdWV1ZVRvdGFsU2l6ZV1dIG11c3QgY2xhbXAgdG8gMCBpZiBpdCBiZWNvbWVzIG5lZ2F0aXZl
Jyk7Ci0gIH0pOwotfSwgJ0Zsb2F0aW5nIHBvaW50IGFyaXRobWV0aWMgbXVzdCBtYW5pZmVzdCBu
ZWFyIE5VTUJFUi5NQVhfU0FGRV9JTlRFR0VSICh0b3RhbCBlbmRzIHVwIHBvc2l0aXZlKScpOwot
Ci1wcm9taXNlX3Rlc3QoKCkgPT4gewotICBjb25zdCB7IHJlYWRlciwgY29udHJvbGxlciB9ID0g
c2V0dXBUZXN0U3RyZWFtKCk7Ci0KLSAgY29udHJvbGxlci5lbnF1ZXVlKDFlLTE2KTsKLSAgYXNz
ZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAwIC0gMWUtMTYsICdkZXNpcmVkU2l6
ZSBtdXN0IGJlIC0xZTE2IGFmdGVyIGVucXVldWVpbmcgc3VjaCBhIGNodW5rJyk7Ci0KLSAgY29u
dHJvbGxlci5lbnF1ZXVlKDEpOwotICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNp
emUsIDAgLSAxZS0xNiAtIDEsCi0gICAgJ2Rlc2lyZWRTaXplIG11c3QgYmUgY2FsY3VsYXRlZCB1
c2luZyBkb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IGFyaXRobWV0aWMgKGFkZGluZyBh
IHNlY29uZCBjaHVuayknKTsKLQotICByZXR1cm4gcmVhZGVyLnJlYWQoKS50aGVuKCgpID0+IHsK
LSAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDAgLSAxZS0xNiAtIDEg
KyAxZS0xNiwKLSAgICAgICdkZXNpcmVkU2l6ZSBtdXN0IGJlIGNhbGN1bGF0ZWQgdXNpbmcgZG91
YmxlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCBhcml0aG1ldGljIChzdWJ0cmFjdGluZyBhIGNo
dW5rKScpOwotCi0gICAgcmV0dXJuIHJlYWRlci5yZWFkKCk7Ci0gIH0pLnRoZW4oKCkgPT4gewot
ICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMCwgJ1tbcXVldWVUb3Rh
bFNpemVdXSBtdXN0IGNsYW1wIHRvIDAgaWYgaXQgYmVjb21lcyBuZWdhdGl2ZScpOwotICB9KTsK
LX0sICdGbG9hdGluZyBwb2ludCBhcml0aG1ldGljIG11c3QgbWFuaWZlc3QgbmVhciAwICh0b3Rh
bCBlbmRzIHVwIHBvc2l0aXZlLCBidXQgY2xhbXBlZCknKTsKLQotcHJvbWlzZV90ZXN0KCgpID0+
IHsKLSAgY29uc3QgeyByZWFkZXIsIGNvbnRyb2xsZXIgfSA9IHNldHVwVGVzdFN0cmVhbSgpOwot
Ci0gIGNvbnRyb2xsZXIuZW5xdWV1ZSgxZS0xNik7Ci0gIGFzc2VydF9lcXVhbHMoY29udHJvbGxl
ci5kZXNpcmVkU2l6ZSwgMCAtIDFlLTE2LCAnZGVzaXJlZFNpemUgbXVzdCBiZSAtMmUxNiBhZnRl
ciBlbnF1ZXVlaW5nIHN1Y2ggYSBjaHVuaycpOwotCi0gIGNvbnRyb2xsZXIuZW5xdWV1ZSgxKTsK
LSAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAwIC0gMWUtMTYgLSAxLAot
ICAgICdkZXNpcmVkU2l6ZSBtdXN0IGJlIGNhbGN1bGF0ZWQgdXNpbmcgZG91YmxlLXByZWNpc2lv
biBmbG9hdGluZy1wb2ludCBhcml0aG1ldGljIChhZGRpbmcgYSBzZWNvbmQgY2h1bmspJyk7Ci0K
LSAgY29udHJvbGxlci5lbnF1ZXVlKDJlLTE2KTsKLSAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVy
LmRlc2lyZWRTaXplLCAwIC0gMWUtMTYgLSAxIC0gMmUtMTYsCi0gICAgJ2Rlc2lyZWRTaXplIG11
c3QgYmUgY2FsY3VsYXRlZCB1c2luZyBkb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IGFy
aXRobWV0aWMgKGFkZGluZyBhIHRoaXJkIGNodW5rKScpOwotCi0gIHJldHVybiByZWFkZXIucmVh
ZCgpLnRoZW4oKCkgPT4gewotICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6
ZSwgMCAtIDFlLTE2IC0gMSAtIDJlLTE2ICsgMWUtMTYsCi0gICAgICAnZGVzaXJlZFNpemUgbXVz
dCBiZSBjYWxjdWxhdGVkIHVzaW5nIGRvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgYXJp
dGhtZXRpYyAoc3VidHJhY3RpbmcgYSBjaHVuayknKTsKLQotICAgIHJldHVybiByZWFkZXIucmVh
ZCgpOwotICB9KS50aGVuKCgpID0+IHsKLSAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVz
aXJlZFNpemUsIDAgLSAxZS0xNiAtIDEgLSAyZS0xNiArIDFlLTE2ICsgMSwKLSAgICAgICdkZXNp
cmVkU2l6ZSBtdXN0IGJlIGNhbGN1bGF0ZWQgdXNpbmcgZG91YmxlLXByZWNpc2lvbiBmbG9hdGlu
Zy1wb2ludCBhcml0aG1ldGljIChzdWJ0cmFjdGluZyBhIHNlY29uZCBjaHVuayknKTsKLQotICAg
IHJldHVybiByZWFkZXIucmVhZCgpOwotICB9KS50aGVuKCgpID0+IHsKLSAgICBhc3NlcnRfZXF1
YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDAgLSAxZS0xNiAtIDEgLSAyZS0xNiArIDFlLTE2
ICsgMSArIDJlLTE2LAotICAgICAgJ2Rlc2lyZWRTaXplIG11c3QgYmUgY2FsY3VsYXRlZCB1c2lu
ZyBkb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IGFyaXRobWV0aWMgKHN1YnRyYWN0aW5n
IGEgdGhpcmQgY2h1bmspJyk7Ci0gIH0pOwotfSwgJ0Zsb2F0aW5nIHBvaW50IGFyaXRobWV0aWMg
bXVzdCBtYW5pZmVzdCBuZWFyIDAgKHRvdGFsIGVuZHMgdXAgcG9zaXRpdmUsIGFuZCBub3QgY2xh
bXBlZCknKTsKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLSAgY29uc3QgeyByZWFkZXIsIGNvbnRy
b2xsZXIgfSA9IHNldHVwVGVzdFN0cmVhbSgpOwotCi0gIGNvbnRyb2xsZXIuZW5xdWV1ZSgyZS0x
Nik7Ci0gIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMCAtIDJlLTE2LCAn
ZGVzaXJlZFNpemUgbXVzdCBiZSAtMmUxNiBhZnRlciBlbnF1ZXVlaW5nIHN1Y2ggYSBjaHVuaycp
OwotCi0gIGNvbnRyb2xsZXIuZW5xdWV1ZSgxKTsKLSAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVy
LmRlc2lyZWRTaXplLCAwIC0gMmUtMTYgLSAxLAotICAgICdkZXNpcmVkU2l6ZSBtdXN0IGJlIGNh
bGN1bGF0ZWQgdXNpbmcgZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCBhcml0aG1ldGlj
IChhZGRpbmcgYSBzZWNvbmQgY2h1bmspJyk7Ci0KLSAgcmV0dXJuIHJlYWRlci5yZWFkKCkudGhl
bigoKSA9PiB7Ci0gICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAwIC0g
MmUtMTYgLSAxICsgMmUtMTYsCi0gICAgICAnZGVzaXJlZFNpemUgbXVzdCBiZSBjYWxjdWxhdGVk
IHVzaW5nIGRvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgYXJpdGhtZXRpYyAoc3VidHJh
Y3RpbmcgYSBjaHVuayknKTsKLQotICAgIHJldHVybiByZWFkZXIucmVhZCgpOwotICB9KS50aGVu
KCgpID0+IHsKLSAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDAsCi0g
ICAgICAnZGVzaXJlZFNpemUgbXVzdCBiZSBjYWxjdWxhdGVkIHVzaW5nIGRvdWJsZS1wcmVjaXNp
b24gZmxvYXRpbmctcG9pbnQgYXJpdGhtZXRpYyAoc3VidHJhY3RpbmcgYSBzZWNvbmQgY2h1bmsp
Jyk7Ci0gIH0pOwotfSwgJ0Zsb2F0aW5nIHBvaW50IGFyaXRobWV0aWMgbXVzdCBtYW5pZmVzdCBu
ZWFyIDAgKHRvdGFsIGVuZHMgdXAgemVybyknKTsKLQotZnVuY3Rpb24gc2V0dXBUZXN0U3RyZWFt
KCkgewotICBjb25zdCBzdHJhdGVneSA9IHsKLSAgICBzaXplKHgpIHsKLSAgICAgIHJldHVybiB4
OwotICAgIH0sCi0gICAgaGlnaFdhdGVyTWFyazogMAotICB9OwotCi0gIGxldCBjb250cm9sbGVy
OwotICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAg
ICAgY29udHJvbGxlciA9IGM7Ci0gICAgfQotICB9LCBzdHJhdGVneSk7Ci0KLSAgcmV0dXJuIHsg
cmVhZGVyOiBycy5nZXRSZWFkZXIoKSwgY29udHJvbGxlciB9OwotfQotCi1kb25lKCk7CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvcmVhZGFibGUtc3RyZWFtcy9mbG9hdGluZy1wb2ludC10b3RhbC1xdWV1ZS1zaXplLnNlcnZp
Y2V3b3JrZXIuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZmxvYXRpbmctcG9pbnQt
dG90YWwtcXVldWUtc2l6ZS5zZXJ2aWNld29ya2VyLmh0dHBzLWV4cGVjdGVkLnR4dApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDg0MGVlYjRmODU3OWFmZmZiMjM4OGRkMjUxOGYwYWE5
MTBlYWFhYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFi
bGUtc3RyZWFtcy9mbG9hdGluZy1wb2ludC10b3RhbC1xdWV1ZS1zaXplLnNlcnZpY2V3b3JrZXIu
aHR0cHMtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNyArMCwwIEBACi0KLVBBU1Mg
U2VydmljZSB3b3JrZXIgdGVzdCBzZXR1cCAKLVBBU1MgRmxvYXRpbmcgcG9pbnQgYXJpdGhtZXRp
YyBtdXN0IG1hbmlmZXN0IG5lYXIgTlVNQkVSLk1BWF9TQUZFX0lOVEVHRVIgKHRvdGFsIGVuZHMg
dXAgcG9zaXRpdmUpIAotUEFTUyBGbG9hdGluZyBwb2ludCBhcml0aG1ldGljIG11c3QgbWFuaWZl
c3QgbmVhciAwICh0b3RhbCBlbmRzIHVwIHBvc2l0aXZlLCBidXQgY2xhbXBlZCkgCi1QQVNTIEZs
b2F0aW5nIHBvaW50IGFyaXRobWV0aWMgbXVzdCBtYW5pZmVzdCBuZWFyIDAgKHRvdGFsIGVuZHMg
dXAgcG9zaXRpdmUsIGFuZCBub3QgY2xhbXBlZCkgCi1QQVNTIEZsb2F0aW5nIHBvaW50IGFyaXRo
bWV0aWMgbXVzdCBtYW5pZmVzdCBuZWFyIDAgKHRvdGFsIGVuZHMgdXAgemVybykgCi0KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy9yZWFkYWJsZS1zdHJlYW1zL2Zsb2F0aW5nLXBvaW50LXRvdGFsLXF1ZXVlLXNpemUuc2Vydmlj
ZXdvcmtlci5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZmxvYXRpbmctcG9pbnQtdG90YWwtcXVl
dWUtc2l6ZS5zZXJ2aWNld29ya2VyLmh0dHBzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDFlYjdjOWU1M2RlNDE2MGNmYmUwNjRmMDIyZTIyNTBkYWJjMzdkZDAuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZmxvYXRp
bmctcG9pbnQtdG90YWwtcXVldWUtc2l6ZS5zZXJ2aWNld29ya2VyLmh0dHBzLmh0bWwKKysrIC9k
ZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9
InV0Zi04Ij4KLTx0aXRsZT5mbG9hdGluZy1wb2ludC10b3RhbC1xdWV1ZS1zaXplLmpzIHNlcnZp
Y2Ugd29ya2VyIHdyYXBwZXIgZmlsZTwvdGl0bGU+Ci0KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvc2VydmljZS13b3JrZXJz
L3NlcnZpY2Utd29ya2VyL3Jlc291cmNlcy90ZXN0LWhlbHBlcnMuc3ViLmpzIj48L3NjcmlwdD4K
LQotPHNjcmlwdD4KLSd1c2Ugc3RyaWN0JzsKLXNlcnZpY2Vfd29ya2VyX3Rlc3QoJ2Zsb2F0aW5n
LXBvaW50LXRvdGFsLXF1ZXVlLXNpemUuanMnLCAnU2VydmljZSB3b3JrZXIgdGVzdCBzZXR1cCcp
OwotPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9mbG9hdGluZy1wb2ludC10b3Rh
bC1xdWV1ZS1zaXplLnNoYXJlZHdvcmtlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9mbG9h
dGluZy1wb2ludC10b3RhbC1xdWV1ZS1zaXplLnNoYXJlZHdvcmtlci1leHBlY3RlZC50eHQKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA5ZDVkMjUwOWQ3ODQ3ZThjZDZmZTY2MDZhYTYw
Y2RkMzNhYTQ3NGUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3Jl
YWRhYmxlLXN0cmVhbXMvZmxvYXRpbmctcG9pbnQtdG90YWwtcXVldWUtc2l6ZS5zaGFyZWR3b3Jr
ZXItZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1DT05TT0xFIE1F
U1NBR0U6IFJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBTaGFyZWRXb3JrZXIK
LQotSGFybmVzcyBFcnJvciAoRkFJTCksIG1lc3NhZ2UgPSBSZWZlcmVuY2VFcnJvcjogQ2FuJ3Qg
ZmluZCB2YXJpYWJsZTogU2hhcmVkV29ya2VyCi0KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMv
ZmxvYXRpbmctcG9pbnQtdG90YWwtcXVldWUtc2l6ZS5zaGFyZWR3b3JrZXIuaHRtbCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1z
dHJlYW1zL2Zsb2F0aW5nLXBvaW50LXRvdGFsLXF1ZXVlLXNpemUuc2hhcmVkd29ya2VyLmh0bWwK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE3YmU3NDYyMjBmZGU4OTA0YzFhODQyZjdi
NjJhNWZhNGI5NmJkN2UuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
L3JlYWRhYmxlLXN0cmVhbXMvZmxvYXRpbmctcG9pbnQtdG90YWwtcXVldWUtc2l6ZS5zaGFyZWR3
b3JrZXIuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLTwhRE9DVFlQRSBodG1s
PgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHRpdGxlPmZsb2F0aW5nLXBvaW50LXRvdGFsLXF1
ZXVlLXNpemUuanMgc2hhcmVkIHdvcmtlciB3cmFwcGVyIGZpbGU8L3RpdGxlPgotCi08c2NyaXB0
IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0i
L3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci0KLTxzY3JpcHQ+Ci0n
dXNlIHN0cmljdCc7Ci1mZXRjaF90ZXN0c19mcm9tX3dvcmtlcihuZXcgU2hhcmVkV29ya2VyKCdm
bG9hdGluZy1wb2ludC10b3RhbC1xdWV1ZS1zaXplLmpzJykpOwotPC9zY3JpcHQ+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
cmVhZGFibGUtc3RyZWFtcy9nYXJiYWdlLWNvbGxlY3Rpb24uYW55LWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJs
ZS1zdHJlYW1zL2dhcmJhZ2UtY29sbGVjdGlvbi5hbnktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjAxMGY1MGEwYzEzODVkYjYxMDdkMzQ2ZDk1NTFmMGY3MTBlNmQ1MmIKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
cmVhZGFibGUtc3RyZWFtcy9nYXJiYWdlLWNvbGxlY3Rpb24uYW55LWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDYgQEAKKworUEFTUyBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIgbWV0aG9kcyBzaG91
bGQgY29udGludWUgd29ya2luZyBwcm9wZXJseSB3aGVuIHNjcmlwdHMgbG9zZSB0aGVpciByZWZl
cmVuY2UgdG8gdGhlIHJlYWRhYmxlIHN0cmVhbSAKK1BBU1MgUmVhZGFibGVTdHJlYW0gY2xvc2Vk
IHByb21pc2Ugc2hvdWxkIGZ1bGZpbGwgZXZlbiBpZiB0aGUgc3RyZWFtIGFuZCByZWFkZXIgSlMg
cmVmZXJlbmNlcyBhcmUgbG9zdCAKK1BBU1MgUmVhZGFibGVTdHJlYW0gY2xvc2VkIHByb21pc2Ug
c2hvdWxkIHJlamVjdCBldmVuIGlmIHN0cmVhbSBhbmQgcmVhZGVyIEpTIHJlZmVyZW5jZXMgYXJl
IGxvc3QgCitQQVNTIEdhcmJhZ2UtY29sbGVjdGluZyBhIFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJl
YWRlciBzaG91bGQgbm90IHVubG9jayBpdHMgc3RyZWFtIAorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3Ry
ZWFtcy9nYXJiYWdlLWNvbGxlY3Rpb24uYW55Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9nYXJiYWdlLWNv
bGxlY3Rpb24uYW55Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjM4MjkxMzUyOGU2OTNiM2E1ZDU2YzY2MGE0
NTA2MDk4MGI1NDhjMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2dhcmJhZ2UtY29s
bGVjdGlvbi5hbnkuaHRtbApAQCAtMCwwICsxIEBACis8IS0tIFRoaXMgZmlsZSBpcyByZXF1aXJl
ZCBmb3IgV2ViS2l0IHRlc3QgaW5mcmFzdHJ1Y3R1cmUgdG8gcnVuIHRoZSB0ZW1wbGF0ZWQgdGVz
dCAtLT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFt
cy9nYXJiYWdlLWNvbGxlY3Rpb24uYW55LmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZ2FyYmFnZS1jb2xsZWN0
aW9uLmFueS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYWQwYWQxNTM1YTViZjEwMjQ1YmYyOTJkNWZhM2JlM2U0
Yjg5ZjVkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZ2FyYmFnZS1jb2xsZWN0aW9u
LmFueS5qcwpAQCAtMCwwICsxLDcwIEBACisvLyBNRVRBOiBnbG9iYWw9d2luZG93LHdvcmtlcixq
c3NoZWxsCisvLyBNRVRBOiBzY3JpcHQ9Li4vcmVzb3VyY2VzL3Rlc3QtdXRpbHMuanMKKyd1c2Ug
c3RyaWN0JzsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKworICBsZXQgY29udHJvbGxlcjsKKyAg
bmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjb250cm9sbGVyID0g
YzsKKyAgICB9CisgIH0pOworCisgIGdhcmJhZ2VDb2xsZWN0KCk7CisKKyAgcmV0dXJuIGRlbGF5
KDUwKS50aGVuKCgpID0+IHsKKyAgICBjb250cm9sbGVyLmNsb3NlKCk7CisgICAgYXNzZXJ0X3Ro
cm93c19qcyhUeXBlRXJyb3IsICgpID0+IGNvbnRyb2xsZXIuY2xvc2UoKSwgJ2Nsb3NlIHNob3Vs
ZCB0aHJvdyBhIFR5cGVFcnJvciB0aGUgc2Vjb25kIHRpbWUnKTsKKyAgICBjb250cm9sbGVyLmVy
cm9yKCk7CisgIH0pOworCit9LCAnUmVhZGFibGVTdHJlYW1Db250cm9sbGVyIG1ldGhvZHMgc2hv
dWxkIGNvbnRpbnVlIHdvcmtpbmcgcHJvcGVybHkgd2hlbiBzY3JpcHRzIGxvc2UgdGhlaXIgcmVm
ZXJlbmNlIHRvIHRoZSAnICsKKyAgICdyZWFkYWJsZSBzdHJlYW0nKTsKKworcHJvbWlzZV90ZXN0
KCgpID0+IHsKKworICBsZXQgY29udHJvbGxlcjsKKworICBjb25zdCBjbG9zZWRQcm9taXNlID0g
bmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjb250cm9sbGVyID0g
YzsKKyAgICB9CisgIH0pLmdldFJlYWRlcigpLmNsb3NlZDsKKworICBnYXJiYWdlQ29sbGVjdCgp
OworCisgIHJldHVybiBkZWxheSg1MCkudGhlbigoKSA9PiBjb250cm9sbGVyLmNsb3NlKCkpLnRo
ZW4oKCkgPT4gY2xvc2VkUHJvbWlzZSk7CisKK30sICdSZWFkYWJsZVN0cmVhbSBjbG9zZWQgcHJv
bWlzZSBzaG91bGQgZnVsZmlsbCBldmVuIGlmIHRoZSBzdHJlYW0gYW5kIHJlYWRlciBKUyByZWZl
cmVuY2VzIGFyZSBsb3N0Jyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKworICBjb25zdCB0aGVF
cnJvciA9IG5ldyBFcnJvcignYm9vJyk7CisgIGxldCBjb250cm9sbGVyOworCisgIGNvbnN0IGNs
b3NlZFByb21pc2UgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAg
IGNvbnRyb2xsZXIgPSBjOworICAgIH0KKyAgfSkuZ2V0UmVhZGVyKCkuY2xvc2VkOworCisgIGdh
cmJhZ2VDb2xsZWN0KCk7CisKKyAgcmV0dXJuIGRlbGF5KDUwKS50aGVuKCgpID0+IGNvbnRyb2xs
ZXIuZXJyb3IodGhlRXJyb3IpKQorICAgICAgICAgICAgICAgICAgLnRoZW4oKCkgPT4gcHJvbWlz
ZV9yZWplY3RzX2V4YWN0bHkodCwgdGhlRXJyb3IsIGNsb3NlZFByb21pc2UpKTsKKworfSwgJ1Jl
YWRhYmxlU3RyZWFtIGNsb3NlZCBwcm9taXNlIHNob3VsZCByZWplY3QgZXZlbiBpZiBzdHJlYW0g
YW5kIHJlYWRlciBKUyByZWZlcmVuY2VzIGFyZSBsb3N0Jyk7CisKK3Byb21pc2VfdGVzdCgoKSA9
PiB7CisKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oe30pOworCisgIHJzLmdldFJl
YWRlcigpOworCisgIGdhcmJhZ2VDb2xsZWN0KCk7CisKKyAgcmV0dXJuIGRlbGF5KDUwKS50aGVu
KCgpID0+IGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiBycy5nZXRSZWFkZXIoKSwK
KyAgICAnb2xkIHJlYWRlciBzaG91bGQgc3RpbGwgYmUgbG9ja2luZyB0aGUgc3RyZWFtIGV2ZW4g
YWZ0ZXIgZ2FyYmFnZSBjb2xsZWN0aW9uJykpOworCit9LCAnR2FyYmFnZS1jb2xsZWN0aW5nIGEg
UmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyIHNob3VsZCBub3QgdW5sb2NrIGl0cyBzdHJlYW0n
KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2dhcmJhZ2UtY29sbGVjdGlvbi5hbnkud29ya2Vy
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2dhcmJhZ2UtY29sbGVjdGlvbi5hbnkud29ya2Vy
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMTBmNTBhMGMxMzg1ZGI2MTA3ZDM0NmQ5NTUxZjBm
NzEwZTZkNTJiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZ2FyYmFnZS1jb2xsZWN0
aW9uLmFueS53b3JrZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNiBAQAorCitQQVNTIFJlYWRh
YmxlU3RyZWFtQ29udHJvbGxlciBtZXRob2RzIHNob3VsZCBjb250aW51ZSB3b3JraW5nIHByb3Bl
cmx5IHdoZW4gc2NyaXB0cyBsb3NlIHRoZWlyIHJlZmVyZW5jZSB0byB0aGUgcmVhZGFibGUgc3Ry
ZWFtIAorUEFTUyBSZWFkYWJsZVN0cmVhbSBjbG9zZWQgcHJvbWlzZSBzaG91bGQgZnVsZmlsbCBl
dmVuIGlmIHRoZSBzdHJlYW0gYW5kIHJlYWRlciBKUyByZWZlcmVuY2VzIGFyZSBsb3N0IAorUEFT
UyBSZWFkYWJsZVN0cmVhbSBjbG9zZWQgcHJvbWlzZSBzaG91bGQgcmVqZWN0IGV2ZW4gaWYgc3Ry
ZWFtIGFuZCByZWFkZXIgSlMgcmVmZXJlbmNlcyBhcmUgbG9zdCAKK1BBU1MgR2FyYmFnZS1jb2xs
ZWN0aW5nIGEgUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyIHNob3VsZCBub3QgdW5sb2NrIGl0
cyBzdHJlYW0gCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2dhcmJhZ2UtY29sbGVjdGlvbi5h
bnkud29ya2VyLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9nYXJiYWdlLWNvbGxlY3Rpb24uYW55Lndvcmtl
ci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjIzODI5MTM1MjhlNjkzYjNhNWQ1NmM2NjBhNDUwNjA5ODBiNTQ4
YzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9nYXJiYWdlLWNvbGxlY3Rpb24uYW55
Lndvcmtlci5odG1sCkBAIC0wLDAgKzEgQEAKKzwhLS0gVGhpcyBmaWxlIGlzIHJlcXVpcmVkIGZv
ciBXZWJLaXQgdGVzdCBpbmZyYXN0cnVjdHVyZSB0byBydW4gdGhlIHRlbXBsYXRlZCB0ZXN0IC0t
PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2dh
cmJhZ2UtY29sbGVjdGlvbi5kZWRpY2F0ZWR3b3JrZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVh
bXMvZ2FyYmFnZS1jb2xsZWN0aW9uLmRlZGljYXRlZHdvcmtlci1leHBlY3RlZC50eHQKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAxMGY1MGEwYzEzODVkYjYxMDdkMzQ2ZDk1NTFmMGY3
MTBlNmQ1MmIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRh
YmxlLXN0cmVhbXMvZ2FyYmFnZS1jb2xsZWN0aW9uLmRlZGljYXRlZHdvcmtlci1leHBlY3RlZC50
eHQKKysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAgQEAKLQotUEFTUyBSZWFkYWJsZVN0cmVhbUNv
bnRyb2xsZXIgbWV0aG9kcyBzaG91bGQgY29udGludWUgd29ya2luZyBwcm9wZXJseSB3aGVuIHNj
cmlwdHMgbG9zZSB0aGVpciByZWZlcmVuY2UgdG8gdGhlIHJlYWRhYmxlIHN0cmVhbSAKLVBBU1Mg
UmVhZGFibGVTdHJlYW0gY2xvc2VkIHByb21pc2Ugc2hvdWxkIGZ1bGZpbGwgZXZlbiBpZiB0aGUg
c3RyZWFtIGFuZCByZWFkZXIgSlMgcmVmZXJlbmNlcyBhcmUgbG9zdCAKLVBBU1MgUmVhZGFibGVT
dHJlYW0gY2xvc2VkIHByb21pc2Ugc2hvdWxkIHJlamVjdCBldmVuIGlmIHN0cmVhbSBhbmQgcmVh
ZGVyIEpTIHJlZmVyZW5jZXMgYXJlIGxvc3QgCi1QQVNTIEdhcmJhZ2UtY29sbGVjdGluZyBhIFJl
YWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlciBzaG91bGQgbm90IHVubG9jayBpdHMgc3RyZWFtIAot
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9nYXJiYWdlLWNvbGxlY3Rpb24uZGVkaWNhdGVkd29y
a2VyLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9nYXJiYWdlLWNvbGxlY3Rpb24uZGVkaWNhdGVkd29ya2Vy
Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVmZjk3Njg3NGYzZDA1ZGNjZjgx
ZTc4MTA4ZjM2ZDAxM2EwYmY2NmEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
dHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZ2FyYmFnZS1jb2xsZWN0aW9uLmRlZGljYXRlZHdvcmtl
ci5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08
bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08dGl0bGU+Z2FyYmFnZS1jb2xsZWN0aW9uLmpzIGRlZGlj
YXRlZCB3b3JrZXIgd3JhcHBlciBmaWxlPC90aXRsZT4KLQotPHNjcmlwdCBzcmM9Ii9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVz
dGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotCi08c2NyaXB0PgotJ3VzZSBzdHJpY3QnOwot
ZmV0Y2hfdGVzdHNfZnJvbV93b3JrZXIobmV3IFdvcmtlcignZ2FyYmFnZS1jb2xsZWN0aW9uLmpz
JykpOwotPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9nYXJiYWdlLWNvbGxlY3Rp
b24uaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2dhcmJhZ2UtY29sbGVjdGlvbi5odG1sCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBiOGJkZTEwZjY1ZDRhYjNlZjg4ZGM4NDNhOTljNTllZGM1OTFj
YWEyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1z
dHJlYW1zL2dhcmJhZ2UtY29sbGVjdGlvbi5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAs
MCBAQAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08dGl0bGU+Z2Fy
YmFnZS1jb2xsZWN0aW9uLmpzIGJyb3dzZXIgY29udGV4dCB3cmFwcGVyIGZpbGU8L3RpdGxlPgot
Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2Ny
aXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci0KLTxz
Y3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Ci0KLTxzY3Jp
cHQgc3JjPSJnYXJiYWdlLWNvbGxlY3Rpb24uanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxl
LXN0cmVhbXMvZ2FyYmFnZS1jb2xsZWN0aW9uLmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZ2FyYmFnZS1jb2xs
ZWN0aW9uLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZDE2NTI2ZTVhODViMjUy
NzMxNWFjYjNiNmFkZDMzOGEzNzRiZGNkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2dhcmJhZ2UtY29sbGVjdGlvbi5qcworKysgL2Rl
di9udWxsCkBAIC0xLDc1ICswLDAgQEAKLSd1c2Ugc3RyaWN0JzsKLQotaWYgKHNlbGYuaW1wb3J0
U2NyaXB0cykgewotICBzZWxmLmltcG9ydFNjcmlwdHMoJy4uL3Jlc291cmNlcy90ZXN0LXV0aWxz
LmpzJyk7Ci0gIHNlbGYuaW1wb3J0U2NyaXB0cygnL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcycp
OwotfQotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotCi0gIGxldCBjb250cm9sbGVyOwotICBuZXcg
UmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGNvbnRyb2xsZXIgPSBjOwot
ICAgIH0KLSAgfSk7Ci0KLSAgZ2FyYmFnZUNvbGxlY3QoKTsKLQotICByZXR1cm4gZGVsYXkoNTAp
LnRoZW4oKCkgPT4gewotICAgIGNvbnRyb2xsZXIuY2xvc2UoKTsKLSAgICBhc3NlcnRfdGhyb3dz
KG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gY29udHJvbGxlci5jbG9zZSgpLCAnY2xvc2Ugc2hvdWxk
IHRocm93IGEgVHlwZUVycm9yIHRoZSBzZWNvbmQgdGltZScpOwotICAgIGNvbnRyb2xsZXIuZXJy
b3IoKTsKLSAgfSk7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIgbWV0aG9kcyBzaG91
bGQgY29udGludWUgd29ya2luZyBwcm9wZXJseSB3aGVuIHNjcmlwdHMgbG9zZSB0aGVpciByZWZl
cmVuY2UgdG8gdGhlICcgKwotICAgJ3JlYWRhYmxlIHN0cmVhbScpOwotCi1wcm9taXNlX3Rlc3Qo
KCkgPT4gewotCi0gIGxldCBjb250cm9sbGVyOwotCi0gIGNvbnN0IGNsb3NlZFByb21pc2UgPSBu
ZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGNvbnRyb2xsZXIgPSBj
OwotICAgIH0KLSAgfSkuZ2V0UmVhZGVyKCkuY2xvc2VkOwotCi0gIGdhcmJhZ2VDb2xsZWN0KCk7
Ci0KLSAgcmV0dXJuIGRlbGF5KDUwKS50aGVuKCgpID0+IGNvbnRyb2xsZXIuY2xvc2UoKSkudGhl
bigoKSA9PiBjbG9zZWRQcm9taXNlKTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtIGNsb3NlZCBwcm9t
aXNlIHNob3VsZCBmdWxmaWxsIGV2ZW4gaWYgdGhlIHN0cmVhbSBhbmQgcmVhZGVyIEpTIHJlZmVy
ZW5jZXMgYXJlIGxvc3QnKTsKLQotcHJvbWlzZV90ZXN0KHQgPT4gewotCi0gIGNvbnN0IHRoZUVy
cm9yID0gbmV3IEVycm9yKCdib28nKTsKLSAgbGV0IGNvbnRyb2xsZXI7Ci0KLSAgY29uc3QgY2xv
c2VkUHJvbWlzZSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAg
Y29udHJvbGxlciA9IGM7Ci0gICAgfQotICB9KS5nZXRSZWFkZXIoKS5jbG9zZWQ7Ci0KLSAgZ2Fy
YmFnZUNvbGxlY3QoKTsKLQotICByZXR1cm4gZGVsYXkoNTApLnRoZW4oKCkgPT4gY29udHJvbGxl
ci5lcnJvcih0aGVFcnJvcikpCi0gICAgICAgICAgICAgICAgICAudGhlbigoKSA9PiBwcm9taXNl
X3JlamVjdHModCwgdGhlRXJyb3IsIGNsb3NlZFByb21pc2UpKTsKLQotfSwgJ1JlYWRhYmxlU3Ry
ZWFtIGNsb3NlZCBwcm9taXNlIHNob3VsZCByZWplY3QgZXZlbiBpZiBzdHJlYW0gYW5kIHJlYWRl
ciBKUyByZWZlcmVuY2VzIGFyZSBsb3N0Jyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAg
Y29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oe30pOwotCi0gIHJzLmdldFJlYWRlcigpOwot
Ci0gIGdhcmJhZ2VDb2xsZWN0KCk7Ci0KLSAgcmV0dXJuIGRlbGF5KDUwKS50aGVuKCgpID0+IGFz
c2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBycy5nZXRSZWFkZXIoKSwKLSAgICAn
b2xkIHJlYWRlciBzaG91bGQgc3RpbGwgYmUgbG9ja2luZyB0aGUgc3RyZWFtIGV2ZW4gYWZ0ZXIg
Z2FyYmFnZSBjb2xsZWN0aW9uJykpOwotCi19LCAnR2FyYmFnZS1jb2xsZWN0aW5nIGEgUmVhZGFi
bGVTdHJlYW1EZWZhdWx0UmVhZGVyIHNob3VsZCBub3QgdW5sb2NrIGl0cyBzdHJlYW0nKTsKLQot
ZG9uZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZ2FyYmFnZS1jb2xsZWN0aW9uLnNlcnZp
Y2V3b3JrZXIuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZ2FyYmFnZS1jb2xsZWN0
aW9uLnNlcnZpY2V3b3JrZXIuaHR0cHMtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBlZmZiOWI1MjhiMDMyYWE2ZmEwNDUxYjA4NGU2MTA5ODgzZGUwNDZlLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2dh
cmJhZ2UtY29sbGVjdGlvbi5zZXJ2aWNld29ya2VyLmh0dHBzLWV4cGVjdGVkLnR4dAorKysgL2Rl
di9udWxsCkBAIC0xLDcgKzAsMCBAQAotCi1QQVNTIFNlcnZpY2Ugd29ya2VyIHRlc3Qgc2V0dXAg
Ci1QQVNTIFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlciBtZXRob2RzIHNob3VsZCBjb250aW51ZSB3
b3JraW5nIHByb3Blcmx5IHdoZW4gc2NyaXB0cyBsb3NlIHRoZWlyIHJlZmVyZW5jZSB0byB0aGUg
cmVhZGFibGUgc3RyZWFtIAotUEFTUyBSZWFkYWJsZVN0cmVhbSBjbG9zZWQgcHJvbWlzZSBzaG91
bGQgZnVsZmlsbCBldmVuIGlmIHRoZSBzdHJlYW0gYW5kIHJlYWRlciBKUyByZWZlcmVuY2VzIGFy
ZSBsb3N0IAotUEFTUyBSZWFkYWJsZVN0cmVhbSBjbG9zZWQgcHJvbWlzZSBzaG91bGQgcmVqZWN0
IGV2ZW4gaWYgc3RyZWFtIGFuZCByZWFkZXIgSlMgcmVmZXJlbmNlcyBhcmUgbG9zdCAKLVBBU1Mg
R2FyYmFnZS1jb2xsZWN0aW5nIGEgUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyIHNob3VsZCBu
b3QgdW5sb2NrIGl0cyBzdHJlYW0gCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2dhcmJhZ2Ut
Y29sbGVjdGlvbi5zZXJ2aWNld29ya2VyLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9nYXJiYWdl
LWNvbGxlY3Rpb24uc2VydmljZXdvcmtlci5odHRwcy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBmZmY3MmU3YTM4NzEzZWQ5ODY2ZmQ3NzlhMzQwMjQ5Y2FjMmY0MmNkLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2dh
cmJhZ2UtY29sbGVjdGlvbi5zZXJ2aWNld29ya2VyLmh0dHBzLmh0bWwKKysrIC9kZXYvbnVsbApA
QCAtMSwxMiArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4K
LTx0aXRsZT5nYXJiYWdlLWNvbGxlY3Rpb24uanMgc2VydmljZSB3b3JrZXIgd3JhcHBlciBmaWxl
PC90aXRsZT4KLQotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2Ny
aXB0PgotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2Ny
aXB0PgotPHNjcmlwdCBzcmM9Ii9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvcmVzb3Vy
Y2VzL3Rlc3QtaGVscGVycy5zdWIuanMiPjwvc2NyaXB0PgotCi08c2NyaXB0PgotJ3VzZSBzdHJp
Y3QnOwotc2VydmljZV93b3JrZXJfdGVzdCgnZ2FyYmFnZS1jb2xsZWN0aW9uLmpzJywgJ1NlcnZp
Y2Ugd29ya2VyIHRlc3Qgc2V0dXAnKTsKLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVh
bXMvZ2FyYmFnZS1jb2xsZWN0aW9uLnNoYXJlZHdvcmtlci1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3Ry
ZWFtcy9nYXJiYWdlLWNvbGxlY3Rpb24uc2hhcmVkd29ya2VyLWV4cGVjdGVkLnR4dApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDlkNWQyNTA5ZDc4NDdlOGNkNmZlNjYwNmFhNjBjZGQz
M2FhNDc0ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFi
bGUtc3RyZWFtcy9nYXJiYWdlLWNvbGxlY3Rpb24uc2hhcmVkd29ya2VyLWV4cGVjdGVkLnR4dAor
KysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotQ09OU09MRSBNRVNTQUdFOiBSZWZlcmVuY2VF
cnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogU2hhcmVkV29ya2VyCi0KLUhhcm5lc3MgRXJyb3Ig
KEZBSUwpLCBtZXNzYWdlID0gUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IFNo
YXJlZFdvcmtlcgotCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2dhcmJhZ2UtY29sbGVjdGlv
bi5zaGFyZWR3b3JrZXIuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2dhcmJhZ2UtY29sbGVjdGlvbi5zaGFy
ZWR3b3JrZXIuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTFiZDM2ZDVkYjU2
OThkYzllYTY0MzEzMDQxMzc2ZWJmZTU4ZDI2NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9nYXJiYWdlLWNvbGxlY3Rpb24uc2hhcmVk
d29ya2VyLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi08IURPQ1RZUEUgaHRt
bD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTx0aXRsZT5nYXJiYWdlLWNvbGxlY3Rpb24uanMg
c2hhcmVkIHdvcmtlciB3cmFwcGVyIGZpbGU8L3RpdGxlPgotCi08c2NyaXB0IHNyYz0iL3Jlc291
cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90
ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci0KLTxzY3JpcHQ+Ci0ndXNlIHN0cmljdCc7
Ci1mZXRjaF90ZXN0c19mcm9tX3dvcmtlcihuZXcgU2hhcmVkV29ya2VyKCdnYXJiYWdlLWNvbGxl
Y3Rpb24uanMnKSk7Ci08L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2dlbmVyYWwu
YW55LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2dlbmVyYWwuYW55LWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4yMzliNzkxYTExZWJkZDE3ODY3NGMyODI2MzJhNTM0YTQ1NmE0NWU2Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZ2VuZXJhbC5hbnktZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsNDQgQEAKKworUEFTUyBSZWFkYWJsZVN0cmVhbSBjYW4gYmUgY29uc3RydWN0ZWQgd2l0
aCBubyBlcnJvcnMgCitQQVNTIFJlYWRhYmxlU3RyZWFtIGNhbid0IGJlIGNvbnN0cnVjdGVkIHdp
dGggZ2FyYmFnZSAKK0ZBSUwgUmVhZGFibGVTdHJlYW0gY2FuJ3QgYmUgY29uc3RydWN0ZWQgd2l0
aCBhbiBpbnZhbGlkIHR5cGUgYXNzZXJ0X3Rocm93c19qczogY29uc3RydWN0b3Igc2hvdWxkIHRo
cm93IHdoZW4gdGhlIHR5cGUgaXMgbnVsbCBmdW5jdGlvbiAiKCkgPT4gbmV3IFJlYWRhYmxlU3Ry
ZWFtKHsgdHlwZTogbnVsbCB9KSIgdGhyZXcgb2JqZWN0ICJSYW5nZUVycm9yOiBJbnZhbGlkIHR5
cGUgZm9yIHVuZGVybHlpbmcgc291cmNlIiAoIlJhbmdlRXJyb3IiKSBleHBlY3RlZCBpbnN0YW5j
ZSBvZiBmdW5jdGlvbiAiZnVuY3Rpb24gVHlwZUVycm9yKCkgeworICAgIFtuYXRpdmUgY29kZV0K
K30iICgiVHlwZUVycm9yIikKK1BBU1MgUmVhZGFibGVTdHJlYW0gY29uc3RydWN0b3Igc2hvdWxk
IHRocm93IGZvciBub24tZnVuY3Rpb24gc3RhcnQgYXJndW1lbnRzIAorRkFJTCBSZWFkYWJsZVN0
cmVhbSBjb25zdHJ1Y3RvciB3aWxsIG5vdCB0b2xlcmF0ZSBpbml0aWFsIGdhcmJhZ2UgYXMgY2Fu
Y2VsIGFyZ3VtZW50IGFzc2VydF90aHJvd3NfanM6IGNvbnN0cnVjdG9yIHNob3VsZCB0aHJvdyBm
dW5jdGlvbiAiKCkgPT4gbmV3IFJlYWRhYmxlU3RyZWFtKHsgY2FuY2VsOiAnMicgfSkiIGRpZCBu
b3QgdGhyb3cKK0ZBSUwgUmVhZGFibGVTdHJlYW0gY29uc3RydWN0b3Igd2lsbCBub3QgdG9sZXJh
dGUgaW5pdGlhbCBnYXJiYWdlIGFzIHB1bGwgYXJndW1lbnQgYXNzZXJ0X3Rocm93c19qczogY29u
c3RydWN0b3Igc2hvdWxkIHRocm93IGZ1bmN0aW9uICIoKSA9PiBuZXcgUmVhZGFibGVTdHJlYW0o
eyBwdWxsOiB7IH0gfSkiIGRpZCBub3QgdGhyb3cKK1BBU1MgUmVhZGFibGVTdHJlYW0gc3RhcnQg
c2hvdWxkIGJlIGNhbGxlZCB3aXRoIHRoZSBwcm9wZXIgdGhpc0FyZyAKK1BBU1MgUmVhZGFibGVT
dHJlYW0gc3RhcnQgY29udHJvbGxlciBwYXJhbWV0ZXIgc2hvdWxkIGJlIGV4dGVuc2libGUgCitG
QUlMIGRlZmF1bHQgUmVhZGFibGVTdHJlYW0gZ2V0UmVhZGVyKCkgc2hvdWxkIG9ubHkgYWNjZXB0
IG1vZGU6dW5kZWZpbmVkIGFzc2VydF90aHJvd3NfanM6IGZ1bmN0aW9uICIoKSA9PiAobmV3IFJl
YWRhYmxlU3RyZWFtKCkpLmdldFJlYWRlcih7IG1vZGU6ICdwb3RhdG8nIH0pIiB0aHJldyBvYmpl
Y3QgIlJhbmdlRXJyb3I6IEludmFsaWQgbW9kZSBpcyBzcGVjaWZpZWQiICgiUmFuZ2VFcnJvciIp
IGV4cGVjdGVkIGluc3RhbmNlIG9mIGZ1bmN0aW9uICJmdW5jdGlvbiBUeXBlRXJyb3IoKSB7Cisg
ICAgW25hdGl2ZSBjb2RlXQorfSIgKCJUeXBlRXJyb3IiKQorUEFTUyBSZWFkYWJsZVN0cmVhbSBz
aG91bGQgYmUgYWJsZSB0byBjYWxsIHN0YXJ0IG1ldGhvZCB3aXRoaW4gcHJvdG90eXBlIGNoYWlu
IG9mIGl0cyBzb3VyY2UgCitQQVNTIFJlYWRhYmxlU3RyZWFtIHN0YXJ0IHNob3VsZCBiZSBhYmxl
IHRvIHJldHVybiBhIHByb21pc2UgCitQQVNTIFJlYWRhYmxlU3RyZWFtIHN0YXJ0IHNob3VsZCBi
ZSBhYmxlIHRvIHJldHVybiBhIHByb21pc2UgYW5kIHJlamVjdCBpdCAKK1BBU1MgUmVhZGFibGVT
dHJlYW0gc2hvdWxkIGJlIGFibGUgdG8gZW5xdWV1ZSBkaWZmZXJlbnQgb2JqZWN0cy4gCitQQVNT
IFJlYWRhYmxlU3RyZWFtOiBpZiBwdWxsIHJlamVjdHMsIGl0IHNob3VsZCBlcnJvciB0aGUgc3Ry
ZWFtIAorUEFTUyBSZWFkYWJsZVN0cmVhbTogc2hvdWxkIG9ubHkgY2FsbCBwdWxsIG9uY2UgdXBv
biBzdGFydGluZyB0aGUgc3RyZWFtIAorUEFTUyBSZWFkYWJsZVN0cmVhbTogc2hvdWxkIGNhbGwg
cHVsbCB3aGVuIHRyeWluZyB0byByZWFkIGZyb20gYSBzdGFydGVkLCBlbXB0eSBzdHJlYW0gCitQ
QVNTIFJlYWRhYmxlU3RyZWFtOiBzaG91bGQgb25seSBjYWxsIHB1bGwgb25jZSBvbiBhIG5vbi1l
bXB0eSBzdHJlYW0gcmVhZCBmcm9tIGJlZm9yZSBzdGFydCBmdWxmaWxscyAKK1BBU1MgUmVhZGFi
bGVTdHJlYW06IHNob3VsZCBvbmx5IGNhbGwgcHVsbCBvbmNlIG9uIGEgbm9uLWVtcHR5IHN0cmVh
bSByZWFkIGZyb20gYWZ0ZXIgc3RhcnQgZnVsZmlsbHMgCitQQVNTIFJlYWRhYmxlU3RyZWFtOiBz
aG91bGQgY2FsbCBwdWxsIGluIHJlYWN0aW9uIHRvIHJlYWQoKWluZyB0aGUgbGFzdCBjaHVuaywg
aWYgbm90IGRyYWluaW5nIAorUEFTUyBSZWFkYWJsZVN0cmVhbTogc2hvdWxkIG5vdCBjYWxsIHB1
bGwoKSBpbiByZWFjdGlvbiB0byByZWFkKClpbmcgdGhlIGxhc3QgY2h1bmssIGlmIGRyYWluaW5n
IAorUEFTUyBSZWFkYWJsZVN0cmVhbTogc2hvdWxkIG5vdCBjYWxsIHB1bGwgdW50aWwgdGhlIHBy
ZXZpb3VzIHB1bGwgY2FsbCdzIHByb21pc2UgZnVsZmlsbHMgCitQQVNTIFJlYWRhYmxlU3RyZWFt
OiBzaG91bGQgcHVsbCBhZnRlciBzdGFydCwgYW5kIGFmdGVyIGV2ZXJ5IHJlYWQgCitQQVNTIFJl
YWRhYmxlU3RyZWFtOiBzaG91bGQgbm90IGNhbGwgcHVsbCBhZnRlciBzdGFydCBpZiB0aGUgc3Ry
ZWFtIGlzIG5vdyBjbG9zZWQgCitQQVNTIFJlYWRhYmxlU3RyZWFtOiBzaG91bGQgY2FsbCBwdWxs
IGFmdGVyIGVucXVldWVpbmcgZnJvbSBpbnNpZGUgcHVsbCAod2l0aCBubyByZWFkIHJlcXVlc3Rz
KSwgaWYgc3RyYXRlZ3kgYWxsb3dzIAorUEFTUyBSZWFkYWJsZVN0cmVhbSBwdWxsIHNob3VsZCBi
ZSBhYmxlIHRvIGNsb3NlIGEgc3RyZWFtLiAKK1BBU1MgUmVhZGFibGVTdHJlYW0gcHVsbCBzaG91
bGQgYmUgYWJsZSB0byBlcnJvciBhIHN0cmVhbS4gCitQQVNTIFJlYWRhYmxlU3RyZWFtIHB1bGwg
c2hvdWxkIGJlIGFibGUgdG8gZXJyb3IgYSBzdHJlYW0gYW5kIHRocm93LiAKK1BBU1MgUmVhZGFi
bGVTdHJlYW06IGVucXVldWUgc2hvdWxkIHRocm93IHdoZW4gdGhlIHN0cmVhbSBpcyByZWFkYWJs
ZSBidXQgZHJhaW5pbmcgCitQQVNTIFJlYWRhYmxlU3RyZWFtOiBlbnF1ZXVlIHNob3VsZCB0aHJv
dyB3aGVuIHRoZSBzdHJlYW0gaXMgY2xvc2VkIAorUEFTUyBSZWFkYWJsZVN0cmVhbTogc2hvdWxk
IGNhbGwgdW5kZXJseWluZyBzb3VyY2UgbWV0aG9kcyBhcyBtZXRob2RzIAorUEFTUyBSZWFkYWJs
ZVN0cmVhbTogZGVzaXJlZFNpemUgd2hlbiBjbG9zZWQgCitQQVNTIFJlYWRhYmxlU3RyZWFtOiBk
ZXNpcmVkU2l6ZSB3aGVuIGVycm9yZWQgCitGQUlMIFN1YmNsYXNzaW5nIFJlYWRhYmxlU3RyZWFt
IHNob3VsZCB3b3JrIGFzc2VydF90cnVlOiBTdWJjbGFzcyBvYmplY3Qgc2hvdWxkIGJlIGFuIGlu
c3RhbmNlIG9mIFN1YmNsYXNzIGV4cGVjdGVkIHRydWUgZ290IGZhbHNlCitQQVNTIFJlYWRhYmxl
U3RyZWFtIHN0cmF0ZWdpZXM6IHRoZSBkZWZhdWx0IHN0cmF0ZWd5IHNob3VsZCBnaXZlIGRlc2ly
ZWRTaXplIG9mIDEgdG8gc3RhcnQsIGRlY3JlYXNpbmcgYnkgMSBwZXIgZW5xdWV1ZSAKK1BBU1Mg
UmVhZGFibGVTdHJlYW0gc3RyYXRlZ2llczogdGhlIGRlZmF1bHQgc3RyYXRlZ3kgc2hvdWxkIGNv
bnRpbnVlIGdpdmluZyBkZXNpcmVkU2l6ZSBvZiAxIGlmIHRoZSBjaHVua3MgYXJlIHJlYWQgaW1t
ZWRpYXRlbHkgCitQQVNTIFJlYWRhYmxlU3RyZWFtIGludGVncmF0aW9uIHRlc3Q6IGFkYXB0aW5n
IGEgcmFuZG9tIHB1c2ggc291cmNlIAorUEFTUyBSZWFkYWJsZVN0cmVhbSBpbnRlZ3JhdGlvbiB0
ZXN0OiBhZGFwdGluZyBhIHN5bmMgcHVsbCBzb3VyY2UgCitQQVNTIFJlYWRhYmxlU3RyZWFtIGlu
dGVncmF0aW9uIHRlc3Q6IGFkYXB0aW5nIGFuIGFzeW5jIHB1bGwgc291cmNlIAorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
cmVhZGFibGUtc3RyZWFtcy9nZW5lcmFsLmFueS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZ2VuZXJhbC5h
bnkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4yMzgyOTEzNTI4ZTY5M2IzYTVkNTZjNjYwYTQ1MDYwOTgwYjU0
OGMzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZ2VuZXJhbC5hbnkuaHRtbApAQCAt
MCwwICsxIEBACis8IS0tIFRoaXMgZmlsZSBpcyByZXF1aXJlZCBmb3IgV2ViS2l0IHRlc3QgaW5m
cmFzdHJ1Y3R1cmUgdG8gcnVuIHRoZSB0ZW1wbGF0ZWQgdGVzdCAtLT4KXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9nZW5lcmFsLmFueS5qcyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJs
ZS1zdHJlYW1zL2dlbmVyYWwuYW55LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg2Yjc5M2ZlMTZjOTMyZTJmZjI5
ZDdhNzBhMGY4YjMzZWIwZTY2Y2EKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9nZW5l
cmFsLmFueS5qcwpAQCAtMCwwICsxLDg0MCBAQAorLy8gTUVUQTogZ2xvYmFsPXdpbmRvdyx3b3Jr
ZXIsanNzaGVsbAorLy8gTUVUQTogc2NyaXB0PS4uL3Jlc291cmNlcy90ZXN0LXV0aWxzLmpzCisv
LyBNRVRBOiBzY3JpcHQ9Li4vcmVzb3VyY2VzL3JzLXV0aWxzLmpzCisndXNlIHN0cmljdCc7CisK
K2NvbnN0IGVycm9yMSA9IG5ldyBFcnJvcignZXJyb3IxJyk7CitlcnJvcjEubmFtZSA9ICdlcnJv
cjEnOworCit0ZXN0KCgpID0+IHsKKworICBuZXcgUmVhZGFibGVTdHJlYW0oKTsgLy8gUmVhZGFi
bGVTdHJlYW0gY29uc3RydWN0ZWQgd2l0aCBubyBwYXJhbWV0ZXJzCisgIG5ldyBSZWFkYWJsZVN0
cmVhbSh7IH0pOyAvLyBSZWFkYWJsZVN0cmVhbSBjb25zdHJ1Y3RlZCB3aXRoIGFuIGVtcHR5IG9i
amVjdCBhcyBwYXJhbWV0ZXIKKyAgbmV3IFJlYWRhYmxlU3RyZWFtKHsgdHlwZTogdW5kZWZpbmVk
IH0pOyAvLyBSZWFkYWJsZVN0cmVhbSBjb25zdHJ1Y3RlZCB3aXRoIHVuZGVmaW5lZCB0eXBlCisg
IG5ldyBSZWFkYWJsZVN0cmVhbSh1bmRlZmluZWQpOyAvLyBSZWFkYWJsZVN0cmVhbSBjb25zdHJ1
Y3RlZCB3aXRoIHVuZGVmaW5lZCBhcyBwYXJhbWV0ZXIKKworICBsZXQgeDsKKyAgbmV3IFJlYWRh
YmxlU3RyZWFtKHgpOyAvLyBSZWFkYWJsZVN0cmVhbSBjb25zdHJ1Y3RlZCB3aXRoIGFuIHVuZGVm
aW5lZCB2YXJpYWJsZSBhcyBwYXJhbWV0ZXIKKworfSwgJ1JlYWRhYmxlU3RyZWFtIGNhbiBiZSBj
b25zdHJ1Y3RlZCB3aXRoIG5vIGVycm9ycycpOworCit0ZXN0KCgpID0+IHsKKworICBhc3NlcnRf
dGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4gbmV3IFJlYWRhYmxlU3RyZWFtKG51bGwpLCAnY29u
c3RydWN0b3Igc2hvdWxkIHRocm93IHdoZW4gdGhlIHNvdXJjZSBpcyBudWxsJyk7CisKK30sICdS
ZWFkYWJsZVN0cmVhbSBjYW5cJ3QgYmUgY29uc3RydWN0ZWQgd2l0aCBnYXJiYWdlJyk7CisKK3Rl
c3QoKCkgPT4geworCisgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiBuZXcgUmVh
ZGFibGVTdHJlYW0oeyB0eXBlOiBudWxsIH0pLAorICAgICdjb25zdHJ1Y3RvciBzaG91bGQgdGhy
b3cgd2hlbiB0aGUgdHlwZSBpcyBudWxsJyk7CisgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9y
LCAoKSA9PiBuZXcgUmVhZGFibGVTdHJlYW0oeyB0eXBlOiAnJyB9KSwKKyAgICAnY29uc3RydWN0
b3Igc2hvdWxkIHRocm93IHdoZW4gdGhlIHR5cGUgaXMgZW1wdHkgc3RyaW5nJyk7CisgIGFzc2Vy
dF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiBuZXcgUmVhZGFibGVTdHJlYW0oeyB0eXBlOiAn
YXNkZicgfSksCisgICAgJ2NvbnN0cnVjdG9yIHNob3VsZCB0aHJvdyB3aGVuIHRoZSB0eXBlIGlz
IGFzZGYnKTsKKyAgYXNzZXJ0X3Rocm93c19leGFjdGx5KAorICAgIGVycm9yMSwKKyAgICAoKSA9
PiBuZXcgUmVhZGFibGVTdHJlYW0oeyB0eXBlOiB7IGdldCB0b1N0cmluZygpIHsgdGhyb3cgZXJy
b3IxOyB9IH0gfSksCisgICAgJ2NvbnN0cnVjdG9yIHNob3VsZCB0aHJvdyB3aGVuIFRvU3RyaW5n
KCkgdGhyb3dzJworICApOworICBhc3NlcnRfdGhyb3dzX2V4YWN0bHkoCisgICAgZXJyb3IxLAor
ICAgICgpID0+IG5ldyBSZWFkYWJsZVN0cmVhbSh7IHR5cGU6IHsgdG9TdHJpbmcoKSB7IHRocm93
IGVycm9yMTsgfSB9IH0pLAorICAgICdjb25zdHJ1Y3RvciBzaG91bGQgdGhyb3cgd2hlbiBUb1N0
cmluZygpIHRocm93cycKKyAgKTsKKworfSwgJ1JlYWRhYmxlU3RyZWFtIGNhblwndCBiZSBjb25z
dHJ1Y3RlZCB3aXRoIGFuIGludmFsaWQgdHlwZScpOworCit0ZXN0KCgpID0+IHsKKworICBhc3Nl
cnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4geworICAgIG5ldyBSZWFkYWJsZVN0cmVhbSh7
IHN0YXJ0OiAncG90YXRvJyB9KTsKKyAgfSwgJ2NvbnN0cnVjdG9yIHNob3VsZCB0aHJvdyB3aGVu
IHN0YXJ0IGlzIG5vdCBhIGZ1bmN0aW9uJyk7CisKK30sICdSZWFkYWJsZVN0cmVhbSBjb25zdHJ1
Y3RvciBzaG91bGQgdGhyb3cgZm9yIG5vbi1mdW5jdGlvbiBzdGFydCBhcmd1bWVudHMnKTsKKwor
dGVzdCgoKSA9PiB7CisKKyAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IG5ldyBS
ZWFkYWJsZVN0cmVhbSh7IGNhbmNlbDogJzInIH0pLCAnY29uc3RydWN0b3Igc2hvdWxkIHRocm93
Jyk7CisKK30sICdSZWFkYWJsZVN0cmVhbSBjb25zdHJ1Y3RvciB3aWxsIG5vdCB0b2xlcmF0ZSBp
bml0aWFsIGdhcmJhZ2UgYXMgY2FuY2VsIGFyZ3VtZW50Jyk7CisKK3Rlc3QoKCkgPT4geworCisg
IGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiBuZXcgUmVhZGFibGVTdHJlYW0oeyBw
dWxsOiB7IH0gfSksICdjb25zdHJ1Y3RvciBzaG91bGQgdGhyb3cnKTsKKworfSwgJ1JlYWRhYmxl
U3RyZWFtIGNvbnN0cnVjdG9yIHdpbGwgbm90IHRvbGVyYXRlIGluaXRpYWwgZ2FyYmFnZSBhcyBw
dWxsIGFyZ3VtZW50Jyk7CisKK3Rlc3QoKCkgPT4geworCisgIGxldCBzdGFydENhbGxlZCA9IGZh
bHNlOworCisgIGNvbnN0IHNvdXJjZSA9IHsKKyAgICBzdGFydCgpIHsKKyAgICAgIGFzc2VydF9l
cXVhbHModGhpcywgc291cmNlLCAnc291cmNlIGlzIHRoaXMgZHVyaW5nIHN0YXJ0Jyk7CisgICAg
ICBzdGFydENhbGxlZCA9IHRydWU7CisgICAgfQorICB9OworCisgIG5ldyBSZWFkYWJsZVN0cmVh
bShzb3VyY2UpOworICBhc3NlcnRfdHJ1ZShzdGFydENhbGxlZCk7CisKK30sICdSZWFkYWJsZVN0
cmVhbSBzdGFydCBzaG91bGQgYmUgY2FsbGVkIHdpdGggdGhlIHByb3BlciB0aGlzQXJnJyk7CisK
K3Rlc3QoKCkgPT4geworCisgIGxldCBzdGFydENhbGxlZCA9IGZhbHNlOworICBjb25zdCBzb3Vy
Y2UgPSB7CisgICAgc3RhcnQoY29udHJvbGxlcikgeworICAgICAgY29uc3QgcHJvcGVydGllcyA9
IFsnY2xvc2UnLCAnY29uc3RydWN0b3InLCAnZGVzaXJlZFNpemUnLCAnZW5xdWV1ZScsICdlcnJv
ciddOworICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1l
cyhPYmplY3QuZ2V0UHJvdG90eXBlT2YoY29udHJvbGxlcikpLnNvcnQoKSwgcHJvcGVydGllcywK
KyAgICAgICAgJ3Byb3RvdHlwZSBzaG91bGQgaGF2ZSB0aGUgcmlnaHQgcHJvcGVydGllcycpOwor
CisgICAgICBjb250cm9sbGVyLnRlc3QgPSAnJzsKKyAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMo
T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoT2JqZWN0LmdldFByb3RvdHlwZU9mKGNvbnRyb2xs
ZXIpKS5zb3J0KCksIHByb3BlcnRpZXMsCisgICAgICAgICdwcm90b3R5cGUgc2hvdWxkIHN0aWxs
IGhhdmUgdGhlIHJpZ2h0IHByb3BlcnRpZXMnKTsKKyAgICAgIGFzc2VydF9ub3RfZXF1YWxzKE9i
amVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGNvbnRyb2xsZXIpLmluZGV4T2YoJ3Rlc3QnKSwgLTEs
CisgICAgICAgICcidGVzdCIgc2hvdWxkIGJlIGEgcHJvcGVydHkgb2YgdGhlIGNvbnRyb2xsZXIn
KTsKKworICAgICAgc3RhcnRDYWxsZWQgPSB0cnVlOworICAgIH0KKyAgfTsKKworICBuZXcgUmVh
ZGFibGVTdHJlYW0oc291cmNlKTsKKyAgYXNzZXJ0X3RydWUoc3RhcnRDYWxsZWQpOworCit9LCAn
UmVhZGFibGVTdHJlYW0gc3RhcnQgY29udHJvbGxlciBwYXJhbWV0ZXIgc2hvdWxkIGJlIGV4dGVu
c2libGUnKTsKKwordGVzdCgoKSA9PiB7CisgIChuZXcgUmVhZGFibGVTdHJlYW0oKSkuZ2V0UmVh
ZGVyKHVuZGVmaW5lZCk7CisgIChuZXcgUmVhZGFibGVTdHJlYW0oKSkuZ2V0UmVhZGVyKHt9KTsK
KyAgKG5ldyBSZWFkYWJsZVN0cmVhbSgpKS5nZXRSZWFkZXIoeyBtb2RlOiB1bmRlZmluZWQsIG5v
dG1vZGU6ICdpZ25vcmVkJyB9KTsKKyAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+
IChuZXcgUmVhZGFibGVTdHJlYW0oKSkuZ2V0UmVhZGVyKHsgbW9kZTogJ3BvdGF0bycgfSkpOwor
fSwgJ2RlZmF1bHQgUmVhZGFibGVTdHJlYW0gZ2V0UmVhZGVyKCkgc2hvdWxkIG9ubHkgYWNjZXB0
IG1vZGU6dW5kZWZpbmVkJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisKKyAgZnVuY3Rpb24g
U2ltcGxlU3RyZWFtU291cmNlKCkge30KKyAgbGV0IHJlc29sdmU7CisgIGNvbnN0IHByb21pc2Ug
PSBuZXcgUHJvbWlzZShyID0+IHJlc29sdmUgPSByKTsKKyAgU2ltcGxlU3RyZWFtU291cmNlLnBy
b3RvdHlwZSA9IHsKKyAgICBzdGFydDogcmVzb2x2ZQorICB9OworCisgIG5ldyBSZWFkYWJsZVN0
cmVhbShuZXcgU2ltcGxlU3RyZWFtU291cmNlKCkpOworICByZXR1cm4gcHJvbWlzZTsKKworfSwg
J1JlYWRhYmxlU3RyZWFtIHNob3VsZCBiZSBhYmxlIHRvIGNhbGwgc3RhcnQgbWV0aG9kIHdpdGhp
biBwcm90b3R5cGUgY2hhaW4gb2YgaXRzIHNvdXJjZScpOworCitwcm9taXNlX3Rlc3QoKCkgPT4g
eworCisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7Cisg
ICAgICByZXR1cm4gZGVsYXkoNSkudGhlbigoKSA9PiB7CisgICAgICAgIGMuZW5xdWV1ZSgnYScp
OworICAgICAgICBjLmNsb3NlKCk7CisgICAgICB9KTsKKyAgICB9CisgIH0pOworCisgIGNvbnN0
IHJlYWRlciA9IHJzLmdldFJlYWRlcigpOworICByZXR1cm4gcmVhZGVyLnJlYWQoKS50aGVuKHIg
PT4geworICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHIsIHsgdmFsdWU6ICdhJywgZG9uZTogZmFs
c2UgfSwgJ3ZhbHVlIHJlYWQgc2hvdWxkIGJlIHRoZSBvbmUgZW5xdWV1ZWQnKTsKKyAgICByZXR1
cm4gcmVhZGVyLmNsb3NlZDsKKyAgfSk7CisKK30sICdSZWFkYWJsZVN0cmVhbSBzdGFydCBzaG91
bGQgYmUgYWJsZSB0byByZXR1cm4gYSBwcm9taXNlJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7
CisKKyAgY29uc3QgdGhlRXJyb3IgPSBuZXcgRXJyb3IoJ3JlamVjdGVkIScpOworICBjb25zdCBy
cyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoKSB7CisgICAgICByZXR1cm4gZGVs
YXkoMSkudGhlbigoKSA9PiB7CisgICAgICAgIHRocm93IHRoZUVycm9yOworICAgICAgfSk7Cisg
ICAgfQorICB9KTsKKworICByZXR1cm4gcnMuZ2V0UmVhZGVyKCkuY2xvc2VkLnRoZW4oKCkgPT4g
eworICAgIGFzc2VydF91bnJlYWNoZWQoJ2Nsb3NlZCBwcm9taXNlIHNob3VsZCBiZSByZWplY3Rl
ZCcpOworICB9LCBlID0+IHsKKyAgICBhc3NlcnRfZXF1YWxzKGUsIHRoZUVycm9yLCAncHJvbWlz
ZSBzaG91bGQgYmUgcmVqZWN0ZWQgd2l0aCB0aGUgc2FtZSBlcnJvcicpOworICB9KTsKKworfSwg
J1JlYWRhYmxlU3RyZWFtIHN0YXJ0IHNob3VsZCBiZSBhYmxlIHRvIHJldHVybiBhIHByb21pc2Ug
YW5kIHJlamVjdCBpdCcpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworCisgIGNvbnN0IG9iamVj
dHMgPSBbCisgICAgeyBwb3RhdG86ICdHaXZlIG1lIG1vcmUhJyB9LAorICAgICd0ZXN0JywKKyAg
ICAxCisgIF07CisKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0
KGMpIHsKKyAgICAgIGZvciAoY29uc3QgbyBvZiBvYmplY3RzKSB7CisgICAgICAgIGMuZW5xdWV1
ZShvKTsKKyAgICAgIH0KKyAgICAgIGMuY2xvc2UoKTsKKyAgICB9CisgIH0pOworCisgIGNvbnN0
IHJlYWRlciA9IHJzLmdldFJlYWRlcigpOworCisgIHJldHVybiBQcm9taXNlLmFsbChbcmVhZGVy
LnJlYWQoKSwgcmVhZGVyLnJlYWQoKSwgcmVhZGVyLnJlYWQoKSwgcmVhZGVyLmNsb3NlZF0pLnRo
ZW4ociA9PiB7CisgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMoclswXSwgeyB2YWx1ZTogb2JqZWN0
c1swXSwgZG9uZTogZmFsc2UgfSwgJ3ZhbHVlIHJlYWQgc2hvdWxkIGJlIHRoZSBvbmUgZW5xdWV1
ZWQnKTsKKyAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyWzFdLCB7IHZhbHVlOiBvYmplY3RzWzFd
LCBkb25lOiBmYWxzZSB9LCAndmFsdWUgcmVhZCBzaG91bGQgYmUgdGhlIG9uZSBlbnF1ZXVlZCcp
OworICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJbMl0sIHsgdmFsdWU6IG9iamVjdHNbMl0sIGRv
bmU6IGZhbHNlIH0sICd2YWx1ZSByZWFkIHNob3VsZCBiZSB0aGUgb25lIGVucXVldWVkJyk7Cisg
IH0pOworCit9LCAnUmVhZGFibGVTdHJlYW0gc2hvdWxkIGJlIGFibGUgdG8gZW5xdWV1ZSBkaWZm
ZXJlbnQgb2JqZWN0cy4nKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKworICBjb25zdCBlcnJv
ciA9IG5ldyBFcnJvcigncHVsbCBmYWlsdXJlJyk7CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxl
U3RyZWFtKHsKKyAgICBwdWxsKCkgeworICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9y
KTsKKyAgICB9CisgIH0pOworCisgIGNvbnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcigpOworCisg
IGxldCBjbG9zZWQgPSBmYWxzZTsKKyAgbGV0IHJlYWQgPSBmYWxzZTsKKworICByZXR1cm4gUHJv
bWlzZS5hbGwoWworICAgIHJlYWRlci5jbG9zZWQudGhlbigoKSA9PiB7CisgICAgICBhc3NlcnRf
dW5yZWFjaGVkKCdjbG9zZWQgc2hvdWxkIGJlIHJlamVjdGVkJyk7CisgICAgfSwgZSA9PiB7Cisg
ICAgICBjbG9zZWQgPSB0cnVlOworICAgICAgYXNzZXJ0X3RydWUocmVhZCk7CisgICAgICBhc3Nl
cnRfZXF1YWxzKGUsIGVycm9yLCAnY2xvc2VkIHNob3VsZCBiZSByZWplY3RlZCB3aXRoIHRoZSB0
aHJvd24gZXJyb3InKTsKKyAgICB9KSwKKyAgICByZWFkZXIucmVhZCgpLnRoZW4oKCkgPT4gewor
ICAgICAgYXNzZXJ0X3VucmVhY2hlZCgncmVhZCgpIHNob3VsZCBiZSByZWplY3RlZCcpOworICAg
IH0sIGUgPT4geworICAgICAgcmVhZCA9IHRydWU7CisgICAgICBhc3NlcnRfZmFsc2UoY2xvc2Vk
KTsKKyAgICAgIGFzc2VydF9lcXVhbHMoZSwgZXJyb3IsICdyZWFkKCkgc2hvdWxkIGJlIHJlamVj
dGVkIHdpdGggdGhlIHRocm93biBlcnJvcicpOworICAgIH0pCisgIF0pOworCit9LCAnUmVhZGFi
bGVTdHJlYW06IGlmIHB1bGwgcmVqZWN0cywgaXQgc2hvdWxkIGVycm9yIHRoZSBzdHJlYW0nKTsK
KworcHJvbWlzZV90ZXN0KCgpID0+IHsKKworICBsZXQgcHVsbENvdW50ID0gMDsKKworICBuZXcg
UmVhZGFibGVTdHJlYW0oeworICAgIHB1bGwoKSB7CisgICAgICBwdWxsQ291bnQrKzsKKyAgICB9
CisgIH0pOworCisgIHJldHVybiBmbHVzaEFzeW5jRXZlbnRzKCkudGhlbigoKSA9PiB7CisgICAg
YXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDEsICdwdWxsIHNob3VsZCBiZSBjYWxsZWQgb25jZSBz
dGFydCBmaW5pc2hlcycpOworICAgIHJldHVybiBkZWxheSgxMCk7CisgIH0pLnRoZW4oKCkgPT4g
eworICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAxLCAncHVsbCBzaG91bGQgYmUgY2FsbGVk
IGV4YWN0bHkgb25jZScpOworICB9KTsKKworfSwgJ1JlYWRhYmxlU3RyZWFtOiBzaG91bGQgb25s
eSBjYWxsIHB1bGwgb25jZSB1cG9uIHN0YXJ0aW5nIHRoZSBzdHJlYW0nKTsKKworcHJvbWlzZV90
ZXN0KCgpID0+IHsKKworICBsZXQgcHVsbENvdW50ID0gMDsKKworICBjb25zdCBycyA9IG5ldyBS
ZWFkYWJsZVN0cmVhbSh7CisgICAgcHVsbChjKSB7CisgICAgICAvLyBEb24ndCBlbnF1ZXVlIGlt
bWVkaWF0ZWx5IGFmdGVyIHN0YXJ0LiBXZSB3YW50IHRoZSBzdHJlYW0gdG8gYmUgZW1wdHkgd2hl
biB3ZSBjYWxsIC5yZWFkKCkgb24gaXQuCisgICAgICBpZiAocHVsbENvdW50ID4gMCkgeworICAg
ICAgICBjLmVucXVldWUocHVsbENvdW50KTsKKyAgICAgIH0KKyAgICAgICsrcHVsbENvdW50Owor
ICAgIH0KKyAgfSk7CisKKyAgcmV0dXJuIGZsdXNoQXN5bmNFdmVudHMoKS50aGVuKCgpID0+IHsK
KyAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMSwgJ3B1bGwgc2hvdWxkIGJlIGNhbGxlZCBv
bmNlIHN0YXJ0IGZpbmlzaGVzJyk7CisgIH0pLnRoZW4oKCkgPT4geworICAgIGNvbnN0IHJlYWRl
ciA9IHJzLmdldFJlYWRlcigpOworICAgIGNvbnN0IHJlYWQgPSByZWFkZXIucmVhZCgpOworICAg
IGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAyLCAncHVsbCBzaG91bGQgYmUgY2FsbGVkIHdoZW4g
cmVhZCBpcyBjYWxsZWQnKTsKKyAgICByZXR1cm4gcmVhZDsKKyAgfSkudGhlbihyZXN1bHQgPT4g
eworICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAzLCAncHVsbCBzaG91bGQgYmUgY2FsbGVk
IGFnYWluIGluIHJlYWN0aW9uIHRvIGNhbGxpbmcgcmVhZCcpOworICAgIGFzc2VydF9vYmplY3Rf
ZXF1YWxzKHJlc3VsdCwgeyB2YWx1ZTogMSwgZG9uZTogZmFsc2UgfSwgJ3RoZSByZXN1bHQgcmVh
ZCBzaG91bGQgYmUgdGhlIG9uZSBlbnF1ZXVlZCcpOworICB9KTsKKworfSwgJ1JlYWRhYmxlU3Ry
ZWFtOiBzaG91bGQgY2FsbCBwdWxsIHdoZW4gdHJ5aW5nIHRvIHJlYWQgZnJvbSBhIHN0YXJ0ZWQs
IGVtcHR5IHN0cmVhbScpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworCisgIGxldCBwdWxsQ291
bnQgPSAwOworCisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChj
KSB7CisgICAgICBjLmVucXVldWUoJ2EnKTsKKyAgICB9LAorICAgIHB1bGwoKSB7CisgICAgICBw
dWxsQ291bnQrKzsKKyAgICB9CisgIH0pOworCisgIGNvbnN0IHJlYWQgPSBycy5nZXRSZWFkZXIo
KS5yZWFkKCk7CisgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAwLCAnY2FsbGluZyByZWFkKCkg
c2hvdWxkIG5vdCBjYXVzZSBwdWxsIHRvIGJlIGNhbGxlZCB5ZXQnKTsKKworICByZXR1cm4gZmx1
c2hBc3luY0V2ZW50cygpLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50
LCAxLCAncHVsbCBzaG91bGQgYmUgY2FsbGVkIG9uY2Ugc3RhcnQgZmluaXNoZXMnKTsKKyAgICBy
ZXR1cm4gcmVhZDsKKyAgfSkudGhlbihyID0+IHsKKyAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhy
LCB7IHZhbHVlOiAnYScsIGRvbmU6IGZhbHNlIH0sICdmaXJzdCByZWFkKCkgc2hvdWxkIHJldHVy
biBmaXJzdCBjaHVuaycpOworICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAxLCAncHVsbCBz
aG91bGQgbm90IGhhdmUgYmVlbiBjYWxsZWQgYWdhaW4nKTsKKyAgICByZXR1cm4gZGVsYXkoMTAp
OworICB9KS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMSwgJ3B1
bGwgc2hvdWxkIGJlIGNhbGxlZCBleGFjdGx5IG9uY2UnKTsKKyAgfSk7CisKK30sICdSZWFkYWJs
ZVN0cmVhbTogc2hvdWxkIG9ubHkgY2FsbCBwdWxsIG9uY2Ugb24gYSBub24tZW1wdHkgc3RyZWFt
IHJlYWQgZnJvbSBiZWZvcmUgc3RhcnQgZnVsZmlsbHMnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+
IHsKKworICBsZXQgcHVsbENvdW50ID0gMDsKKyAgY29uc3Qgc3RhcnRQcm9taXNlID0gUHJvbWlz
ZS5yZXNvbHZlKCk7CisKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0
YXJ0KGMpIHsKKyAgICAgIGMuZW5xdWV1ZSgnYScpOworICAgIH0sCisgICAgcHVsbCgpIHsKKyAg
ICAgIHB1bGxDb3VudCsrOworICAgIH0KKyAgfSk7CisKKyAgcmV0dXJuIGZsdXNoQXN5bmNFdmVu
dHMoKS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMCwgJ3B1bGwg
c2hvdWxkIG5vdCBiZSBjYWxsZWQgb25jZSBzdGFydCBmaW5pc2hlcywgc2luY2UgdGhlIHF1ZXVl
IGlzIGZ1bGwnKTsKKworICAgIGNvbnN0IHJlYWQgPSBycy5nZXRSZWFkZXIoKS5yZWFkKCk7Cisg
ICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDEsICdjYWxsaW5nIHJlYWQoKSBzaG91bGQgY2F1
c2UgcHVsbCB0byBiZSBjYWxsZWQgaW1tZWRpYXRlbHknKTsKKyAgICByZXR1cm4gcmVhZDsKKyAg
fSkudGhlbihyID0+IHsKKyAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyLCB7IHZhbHVlOiAnYScs
IGRvbmU6IGZhbHNlIH0sICdmaXJzdCByZWFkKCkgc2hvdWxkIHJldHVybiBmaXJzdCBjaHVuaycp
OworICAgIHJldHVybiBkZWxheSgxMCk7CisgIH0pLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9l
cXVhbHMocHVsbENvdW50LCAxLCAncHVsbCBzaG91bGQgYmUgY2FsbGVkIGV4YWN0bHkgb25jZScp
OworICB9KTsKKworfSwgJ1JlYWRhYmxlU3RyZWFtOiBzaG91bGQgb25seSBjYWxsIHB1bGwgb25j
ZSBvbiBhIG5vbi1lbXB0eSBzdHJlYW0gcmVhZCBmcm9tIGFmdGVyIHN0YXJ0IGZ1bGZpbGxzJyk7
CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisKKyAgbGV0IHB1bGxDb3VudCA9IDA7CisgIGxldCBj
b250cm9sbGVyOworCisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFy
dChjKSB7CisgICAgICBjb250cm9sbGVyID0gYzsKKyAgICB9LAorICAgIHB1bGwoKSB7CisgICAg
ICArK3B1bGxDb3VudDsKKyAgICB9CisgIH0pOworCisgIGNvbnN0IHJlYWRlciA9IHJzLmdldFJl
YWRlcigpOworICByZXR1cm4gZmx1c2hBc3luY0V2ZW50cygpLnRoZW4oKCkgPT4geworICAgIGFz
c2VydF9lcXVhbHMocHVsbENvdW50LCAxLCAncHVsbCBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCBv
bmNlIGJ5IHRoZSB0aW1lIHRoZSBzdHJlYW0gc3RhcnRzJyk7CisKKyAgICBjb250cm9sbGVyLmVu
cXVldWUoJ2EnKTsKKyAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMSwgJ3B1bGwgc2hvdWxk
IG5vdCBoYXZlIGJlZW4gY2FsbGVkIGFnYWluIGFmdGVyIGVucXVldWUnKTsKKworICAgIHJldHVy
biByZWFkZXIucmVhZCgpOworICB9KS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfZXF1YWxzKHB1
bGxDb3VudCwgMiwgJ3B1bGwgc2hvdWxkIGhhdmUgYmVlbiBjYWxsZWQgYWdhaW4gYWZ0ZXIgcmVh
ZCcpOworCisgICAgcmV0dXJuIGRlbGF5KDEwKTsKKyAgfSkudGhlbigoKSA9PiB7CisgICAgYXNz
ZXJ0X2VxdWFscyhwdWxsQ291bnQsIDIsICdwdWxsIHNob3VsZCBiZSBjYWxsZWQgZXhhY3RseSB0
d2ljZScpOworICB9KTsKK30sICdSZWFkYWJsZVN0cmVhbTogc2hvdWxkIGNhbGwgcHVsbCBpbiBy
ZWFjdGlvbiB0byByZWFkKClpbmcgdGhlIGxhc3QgY2h1bmssIGlmIG5vdCBkcmFpbmluZycpOwor
Citwcm9taXNlX3Rlc3QoKCkgPT4geworCisgIGxldCBwdWxsQ291bnQgPSAwOworICBsZXQgY29u
dHJvbGxlcjsKKworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQo
YykgeworICAgICAgY29udHJvbGxlciA9IGM7CisgICAgfSwKKyAgICBwdWxsKCkgeworICAgICAg
KytwdWxsQ291bnQ7CisgICAgfQorICB9KTsKKworICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFk
ZXIoKTsKKworICByZXR1cm4gZmx1c2hBc3luY0V2ZW50cygpLnRoZW4oKCkgPT4geworICAgIGFz
c2VydF9lcXVhbHMocHVsbENvdW50LCAxLCAncHVsbCBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCBv
bmNlIGJ5IHRoZSB0aW1lIHRoZSBzdHJlYW0gc3RhcnRzJyk7CisKKyAgICBjb250cm9sbGVyLmVu
cXVldWUoJ2EnKTsKKyAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMSwgJ3B1bGwgc2hvdWxk
IG5vdCBoYXZlIGJlZW4gY2FsbGVkIGFnYWluIGFmdGVyIGVucXVldWUnKTsKKworICAgIGNvbnRy
b2xsZXIuY2xvc2UoKTsKKworICAgIHJldHVybiByZWFkZXIucmVhZCgpOworICB9KS50aGVuKCgp
ID0+IHsKKyAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMSwgJ3B1bGwgc2hvdWxkIG5vdCBo
YXZlIGJlZW4gY2FsbGVkIGEgc2Vjb25kIHRpbWUgYWZ0ZXIgcmVhZCcpOworCisgICAgcmV0dXJu
IGRlbGF5KDEwKTsKKyAgfSkudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291
bnQsIDEsICdwdWxsIHNob3VsZCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlJyk7CisgIH0pOworCit9
LCAnUmVhZGFibGVTdHJlYW06IHNob3VsZCBub3QgY2FsbCBwdWxsKCkgaW4gcmVhY3Rpb24gdG8g
cmVhZCgpaW5nIHRoZSBsYXN0IGNodW5rLCBpZiBkcmFpbmluZycpOworCitwcm9taXNlX3Rlc3Qo
KCkgPT4geworCisgIGxldCByZXNvbHZlOworICBsZXQgcmV0dXJuZWRQcm9taXNlOworICBsZXQg
dGltZXNDYWxsZWQgPSAwOworCisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAg
ICBwdWxsKGMpIHsKKyAgICAgIGMuZW5xdWV1ZSgrK3RpbWVzQ2FsbGVkKTsKKyAgICAgIHJldHVy
bmVkUHJvbWlzZSA9IG5ldyBQcm9taXNlKHIgPT4gcmVzb2x2ZSA9IHIpOworICAgICAgcmV0dXJu
IHJldHVybmVkUHJvbWlzZTsKKyAgICB9CisgIH0pOworICBjb25zdCByZWFkZXIgPSBycy5nZXRS
ZWFkZXIoKTsKKworICByZXR1cm4gcmVhZGVyLnJlYWQoKQorICAudGhlbihyZXN1bHQxID0+IHsK
KyAgICBhc3NlcnRfZXF1YWxzKHRpbWVzQ2FsbGVkLCAxLAorICAgICAgJ3B1bGwgc2hvdWxkIGhh
dmUgYmVlbiBjYWxsZWQgb25jZSBhZnRlciBzdGFydCwgYnV0IG5vdCB5ZXQgaGF2ZSBiZWVuIGNh
bGxlZCBhIHNlY29uZCB0aW1lJyk7CisgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0MSwg
eyB2YWx1ZTogMSwgZG9uZTogZmFsc2UgfSwgJ3JlYWQoKSBzaG91bGQgZnVsZmlsbCB3aXRoIHRo
ZSBlbnF1ZXVlZCB2YWx1ZScpOworCisgICAgcmV0dXJuIGRlbGF5KDEwKTsKKyAgfSkudGhlbigo
KSA9PiB7CisgICAgYXNzZXJ0X2VxdWFscyh0aW1lc0NhbGxlZCwgMSwgJ2FmdGVyIDEwIG1zLCBw
dWxsIHNob3VsZCBzdGlsbCBvbmx5IGhhdmUgYmVlbiBjYWxsZWQgb25jZScpOworCisgICAgcmVz
b2x2ZSgpOworICAgIHJldHVybiByZXR1cm5lZFByb21pc2U7CisgIH0pLnRoZW4oKCkgPT4gewor
ICAgIGFzc2VydF9lcXVhbHModGltZXNDYWxsZWQsIDIsCisgICAgICAnYWZ0ZXIgdGhlIHByb21p
c2UgcmV0dXJuZWQgYnkgcHVsbCBpcyBmdWxmaWxsZWQsIHB1bGwgc2hvdWxkIGJlIGNhbGxlZCBh
IHNlY29uZCB0aW1lJyk7CisgIH0pOworCit9LCAnUmVhZGFibGVTdHJlYW06IHNob3VsZCBub3Qg
Y2FsbCBwdWxsIHVudGlsIHRoZSBwcmV2aW91cyBwdWxsIGNhbGxcJ3MgcHJvbWlzZSBmdWxmaWxs
cycpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworCisgIGxldCB0aW1lc0NhbGxlZCA9IDA7CisK
KyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oCisgICAgeworICAgICAgc3RhcnQoYykg
eworICAgICAgICBjLmVucXVldWUoJ2EnKTsKKyAgICAgICAgYy5lbnF1ZXVlKCdiJyk7CisgICAg
ICAgIGMuZW5xdWV1ZSgnYycpOworICAgICAgfSwKKyAgICAgIHB1bGwoKSB7CisgICAgICAgICsr
dGltZXNDYWxsZWQ7CisgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICBzaXplKCkgeworICAg
ICAgICByZXR1cm4gMTsKKyAgICAgIH0sCisgICAgICBoaWdoV2F0ZXJNYXJrOiBJbmZpbml0eQor
ICAgIH0KKyAgKTsKKyAgY29uc3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7CisKKyAgcmV0dXJu
IGZsdXNoQXN5bmNFdmVudHMoKS50aGVuKCgpID0+IHsKKyAgICByZXR1cm4gcmVhZGVyLnJlYWQo
KTsKKyAgfSkudGhlbihyZXN1bHQxID0+IHsKKyAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1
bHQxLCB7IHZhbHVlOiAnYScsIGRvbmU6IGZhbHNlIH0sICdmaXJzdCBjaHVuayBzaG91bGQgYmUg
YXMgZXhwZWN0ZWQnKTsKKworICAgIHJldHVybiByZWFkZXIucmVhZCgpOworICB9KS50aGVuKHJl
c3VsdDIgPT4geworICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdDIsIHsgdmFsdWU6ICdi
JywgZG9uZTogZmFsc2UgfSwgJ3NlY29uZCBjaHVuayBzaG91bGQgYmUgYXMgZXhwZWN0ZWQnKTsK
KworICAgIHJldHVybiByZWFkZXIucmVhZCgpOworICB9KS50aGVuKHJlc3VsdDMgPT4geworICAg
IGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdDMsIHsgdmFsdWU6ICdjJywgZG9uZTogZmFsc2Ug
fSwgJ3RoaXJkIGNodW5rIHNob3VsZCBiZSBhcyBleHBlY3RlZCcpOworCisgICAgcmV0dXJuIGRl
bGF5KDEwKTsKKyAgfSkudGhlbigoKSA9PiB7CisgICAgLy8gT25jZSBmb3IgYWZ0ZXIgc3RhcnQs
IGFuZCBvbmNlIGZvciBldmVyeSByZWFkLgorICAgIGFzc2VydF9lcXVhbHModGltZXNDYWxsZWQs
IDQsICdwdWxsKCkgc2hvdWxkIGJlIGNhbGxlZCBleGFjdGx5IGZvdXIgdGltZXMnKTsKKyAgfSk7
CisKK30sICdSZWFkYWJsZVN0cmVhbTogc2hvdWxkIHB1bGwgYWZ0ZXIgc3RhcnQsIGFuZCBhZnRl
ciBldmVyeSByZWFkJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisKKyAgbGV0IHRpbWVzQ2Fs
bGVkID0gMDsKKyAgY29uc3Qgc3RhcnRQcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKCk7CisKKyAg
Y29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGMu
ZW5xdWV1ZSgnYScpOworICAgICAgYy5jbG9zZSgpOworICAgICAgcmV0dXJuIHN0YXJ0UHJvbWlz
ZTsKKyAgICB9LAorICAgIHB1bGwoKSB7CisgICAgICArK3RpbWVzQ2FsbGVkOworICAgIH0KKyAg
fSk7CisKKyAgY29uc3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7CisgIHJldHVybiBzdGFydFBy
b21pc2UudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X2VxdWFscyh0aW1lc0NhbGxlZCwgMCwgJ2Fm
dGVyIHN0YXJ0IGZpbmlzaGVzLCBwdWxsIHNob3VsZCBub3QgaGF2ZSBiZWVuIGNhbGxlZCcpOwor
CisgICAgcmV0dXJuIHJlYWRlci5yZWFkKCk7CisgIH0pLnRoZW4oKCkgPT4geworICAgIGFzc2Vy
dF9lcXVhbHModGltZXNDYWxsZWQsIDAsICdyZWFkaW5nIHNob3VsZCBub3QgaGF2ZSB0cmlnZ2Vy
ZWQgYSBwdWxsIGNhbGwnKTsKKworICAgIHJldHVybiByZWFkZXIuY2xvc2VkOworICB9KS50aGVu
KCgpID0+IHsKKyAgICBhc3NlcnRfZXF1YWxzKHRpbWVzQ2FsbGVkLCAwLCAnc3RyZWFtIHNob3Vs
ZCBoYXZlIGNsb3NlZCB3aXRoIHN0aWxsIG5vIGNhbGxzIHRvIHB1bGwnKTsKKyAgfSk7CisKK30s
ICdSZWFkYWJsZVN0cmVhbTogc2hvdWxkIG5vdCBjYWxsIHB1bGwgYWZ0ZXIgc3RhcnQgaWYgdGhl
IHN0cmVhbSBpcyBub3cgY2xvc2VkJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisKKyAgbGV0
IHRpbWVzQ2FsbGVkID0gMDsKKyAgbGV0IHJlc29sdmU7CisgIGNvbnN0IHJlYWR5ID0gbmV3IFBy
b21pc2UociA9PiByZXNvbHZlID0gcik7CisKKyAgbmV3IFJlYWRhYmxlU3RyZWFtKAorICAgIHsK
KyAgICAgIHN0YXJ0KCkge30sCisgICAgICBwdWxsKGMpIHsKKyAgICAgICAgYy5lbnF1ZXVlKCsr
dGltZXNDYWxsZWQpOworCisgICAgICAgIGlmICh0aW1lc0NhbGxlZCA9PT0gNCkgeworICAgICAg
ICAgIHJlc29sdmUoKTsKKyAgICAgICAgfQorICAgICAgfQorICAgIH0sCisgICAgeworICAgICAg
c2l6ZSgpIHsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgICB9LAorICAgICAgaGlnaFdhdGVyTWFy
azogNAorICAgIH0KKyAgKTsKKworICByZXR1cm4gcmVhZHkudGhlbigoKSA9PiB7CisgICAgLy8g
YWZ0ZXIgc3RhcnQ6IHNpemUgPSAwLCBwdWxsKCkKKyAgICAvLyBhZnRlciBlbnF1ZXVlKDEpOiBz
aXplID0gMSwgcHVsbCgpCisgICAgLy8gYWZ0ZXIgZW5xdWV1ZSgyKTogc2l6ZSA9IDIsIHB1bGwo
KQorICAgIC8vIGFmdGVyIGVucXVldWUoMyk6IHNpemUgPSAzLCBwdWxsKCkKKyAgICAvLyBhZnRl
ciBlbnF1ZXVlKDQpOiBzaXplID0gNCwgZG8gbm90IHB1bGwKKyAgICBhc3NlcnRfZXF1YWxzKHRp
bWVzQ2FsbGVkLCA0LCAncHVsbCgpIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkIGZvdXIgdGltZXMn
KTsKKyAgfSk7CisKK30sICdSZWFkYWJsZVN0cmVhbTogc2hvdWxkIGNhbGwgcHVsbCBhZnRlciBl
bnF1ZXVlaW5nIGZyb20gaW5zaWRlIHB1bGwgKHdpdGggbm8gcmVhZCByZXF1ZXN0cyksIGlmIHN0
cmF0ZWd5IGFsbG93cycpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworCisgIGxldCBwdWxsQ2Fs
bGVkID0gZmFsc2U7CisKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHB1
bGwoYykgeworICAgICAgcHVsbENhbGxlZCA9IHRydWU7CisgICAgICBjLmNsb3NlKCk7CisgICAg
fQorICB9KTsKKworICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKKyAgcmV0dXJuIHJl
YWRlci5jbG9zZWQudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X3RydWUocHVsbENhbGxlZCk7Cisg
IH0pOworCit9LCAnUmVhZGFibGVTdHJlYW0gcHVsbCBzaG91bGQgYmUgYWJsZSB0byBjbG9zZSBh
IHN0cmVhbS4nKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworCisgIGNvbnN0IGNvbnRyb2xsZXJF
cnJvciA9IHsgbmFtZTogJ2NvbnRyb2xsZXIgZXJyb3InIH07CisKKyAgY29uc3QgcnMgPSBuZXcg
UmVhZGFibGVTdHJlYW0oeworICAgIHB1bGwoYykgeworICAgICAgYy5lcnJvcihjb250cm9sbGVy
RXJyb3IpOworICAgIH0KKyAgfSk7CisKKyAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19leGFjdGx5
KHQsIGNvbnRyb2xsZXJFcnJvciwgcnMuZ2V0UmVhZGVyKCkuY2xvc2VkKTsKKworfSwgJ1JlYWRh
YmxlU3RyZWFtIHB1bGwgc2hvdWxkIGJlIGFibGUgdG8gZXJyb3IgYSBzdHJlYW0uJyk7CisKK3By
b21pc2VfdGVzdCh0ID0+IHsKKworICBjb25zdCBjb250cm9sbGVyRXJyb3IgPSB7IG5hbWU6ICdj
b250cm9sbGVyIGVycm9yJyB9OworICBjb25zdCB0aHJvd25FcnJvciA9IHsgbmFtZTogJ3Rocm93
biBlcnJvcicgfTsKKworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgcHVs
bChjKSB7CisgICAgICBjLmVycm9yKGNvbnRyb2xsZXJFcnJvcik7CisgICAgICB0aHJvdyB0aHJv
d25FcnJvcjsKKyAgICB9CisgIH0pOworCisgIHJldHVybiBwcm9taXNlX3JlamVjdHNfZXhhY3Rs
eSh0LCBjb250cm9sbGVyRXJyb3IsIHJzLmdldFJlYWRlcigpLmNsb3NlZCk7CisKK30sICdSZWFk
YWJsZVN0cmVhbSBwdWxsIHNob3VsZCBiZSBhYmxlIHRvIGVycm9yIGEgc3RyZWFtIGFuZCB0aHJv
dy4nKTsKKwordGVzdCgoKSA9PiB7CisKKyAgbGV0IHN0YXJ0Q2FsbGVkID0gZmFsc2U7CisKKyAg
bmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBhc3NlcnRfZXF1YWxz
KGMuZW5xdWV1ZSgnYScpLCB1bmRlZmluZWQsICd0aGUgZmlyc3QgZW5xdWV1ZSBzaG91bGQgcmV0
dXJuIHVuZGVmaW5lZCcpOworICAgICAgYy5jbG9zZSgpOworCisgICAgICBhc3NlcnRfdGhyb3dz
X2pzKFR5cGVFcnJvciwgKCkgPT4gYy5lbnF1ZXVlKCdiJyksICdlbnF1ZXVlIGFmdGVyIGNsb3Nl
IHNob3VsZCB0aHJvdyBhIFR5cGVFcnJvcicpOworICAgICAgc3RhcnRDYWxsZWQgPSB0cnVlOwor
ICAgIH0KKyAgfSk7CisKKyAgYXNzZXJ0X3RydWUoc3RhcnRDYWxsZWQpOworCit9LCAnUmVhZGFi
bGVTdHJlYW06IGVucXVldWUgc2hvdWxkIHRocm93IHdoZW4gdGhlIHN0cmVhbSBpcyByZWFkYWJs
ZSBidXQgZHJhaW5pbmcnKTsKKwordGVzdCgoKSA9PiB7CisKKyAgbGV0IHN0YXJ0Q2FsbGVkID0g
ZmFsc2U7CisKKyAgbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBj
LmNsb3NlKCk7CisKKyAgICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiBjLmVu
cXVldWUoJ2EnKSwgJ2VucXVldWUgYWZ0ZXIgY2xvc2Ugc2hvdWxkIHRocm93IGEgVHlwZUVycm9y
Jyk7CisgICAgICBzdGFydENhbGxlZCA9IHRydWU7CisgICAgfQorICB9KTsKKworICBhc3NlcnRf
dHJ1ZShzdGFydENhbGxlZCk7CisKK30sICdSZWFkYWJsZVN0cmVhbTogZW5xdWV1ZSBzaG91bGQg
dGhyb3cgd2hlbiB0aGUgc3RyZWFtIGlzIGNsb3NlZCcpOworCitwcm9taXNlX3Rlc3QoKCkgPT4g
eworCisgIGxldCBzdGFydENhbGxlZCA9IDA7CisgIGxldCBwdWxsQ2FsbGVkID0gMDsKKyAgbGV0
IGNhbmNlbENhbGxlZCA9IDA7CisKKyAgLyogZXNsaW50LWRpc2FibGUgbm8tdXNlLWJlZm9yZS1k
ZWZpbmUgKi8KKyAgY2xhc3MgU291cmNlIHsKKyAgICBzdGFydChjKSB7CisgICAgICBzdGFydENh
bGxlZCsrOworICAgICAgYXNzZXJ0X2VxdWFscyh0aGlzLCB0aGVTb3VyY2UsICdzdGFydCgpIHNo
b3VsZCBiZSBjYWxsZWQgd2l0aCB0aGUgY29ycmVjdCB0aGlzJyk7CisgICAgICBjLmVucXVldWUo
J2EnKTsKKyAgICB9CisKKyAgICBwdWxsKCkgeworICAgICAgcHVsbENhbGxlZCsrOworICAgICAg
YXNzZXJ0X2VxdWFscyh0aGlzLCB0aGVTb3VyY2UsICdwdWxsKCkgc2hvdWxkIGJlIGNhbGxlZCB3
aXRoIHRoZSBjb3JyZWN0IHRoaXMnKTsKKyAgICB9CisKKyAgICBjYW5jZWwoKSB7CisgICAgICBj
YW5jZWxDYWxsZWQrKzsKKyAgICAgIGFzc2VydF9lcXVhbHModGhpcywgdGhlU291cmNlLCAnY2Fu
Y2VsKCkgc2hvdWxkIGJlIGNhbGxlZCB3aXRoIHRoZSBjb3JyZWN0IHRoaXMnKTsKKyAgICB9Cisg
IH0KKyAgLyogZXNsaW50LWVuYWJsZSBuby11c2UtYmVmb3JlLWRlZmluZSAqLworCisgIGNvbnN0
IHRoZVNvdXJjZSA9IG5ldyBTb3VyY2UoKTsKKyAgdGhlU291cmNlLmRlYnVnTmFtZSA9ICd0aGUg
c291cmNlIG9iamVjdCBwYXNzZWQgdG8gdGhlIGNvbnN0cnVjdG9yJzsgLy8gbWFrZXMgdGVzdCBm
YWlsdXJlcyBlYXNpZXIgdG8gZGlhZ25vc2UKKworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0
cmVhbSh0aGVTb3VyY2UpOworICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKKworICBy
ZXR1cm4gcmVhZGVyLnJlYWQoKS50aGVuKCgpID0+IHsKKyAgICByZWFkZXIucmVsZWFzZUxvY2so
KTsKKyAgICBycy5jYW5jZWwoKTsKKyAgICBhc3NlcnRfZXF1YWxzKHN0YXJ0Q2FsbGVkLCAxKTsK
KyAgICBhc3NlcnRfZXF1YWxzKHB1bGxDYWxsZWQsIDEpOworICAgIGFzc2VydF9lcXVhbHMoY2Fu
Y2VsQ2FsbGVkLCAxKTsKKyAgICByZXR1cm4gcnMuZ2V0UmVhZGVyKCkuY2xvc2VkOworICB9KTsK
KworfSwgJ1JlYWRhYmxlU3RyZWFtOiBzaG91bGQgY2FsbCB1bmRlcmx5aW5nIHNvdXJjZSBtZXRo
b2RzIGFzIG1ldGhvZHMnKTsKKwordGVzdCgoKSA9PiB7CisgIG5ldyBSZWFkYWJsZVN0cmVhbSh7
CisgICAgc3RhcnQoYykgeworICAgICAgYXNzZXJ0X2VxdWFscyhjLmRlc2lyZWRTaXplLCAxMCwg
J2Rlc2lyZWRTaXplIG11c3Qgc3RhcnQgYXQgaGlnaFdhdGVyTWFyaycpOworICAgICAgYy5jbG9z
ZSgpOworICAgICAgYXNzZXJ0X2VxdWFscyhjLmRlc2lyZWRTaXplLCAwLCAnYWZ0ZXIgY2xvc2lu
ZywgZGVzaXJlZFNpemUgbXVzdCBiZSAwJyk7CisgICAgfQorICB9LCB7CisgICAgaGlnaFdhdGVy
TWFyazogMTAKKyAgfSk7Cit9LCAnUmVhZGFibGVTdHJlYW06IGRlc2lyZWRTaXplIHdoZW4gY2xv
c2VkJyk7CisKK3Rlc3QoKCkgPT4geworICBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0
KGMpIHsKKyAgICAgIGFzc2VydF9lcXVhbHMoYy5kZXNpcmVkU2l6ZSwgMTAsICdkZXNpcmVkU2l6
ZSBtdXN0IHN0YXJ0IGF0IGhpZ2hXYXRlck1hcmsnKTsKKyAgICAgIGMuZXJyb3IoKTsKKyAgICAg
IGFzc2VydF9lcXVhbHMoYy5kZXNpcmVkU2l6ZSwgbnVsbCwgJ2FmdGVyIGVycm9yaW5nLCBkZXNp
cmVkU2l6ZSBtdXN0IGJlIG51bGwnKTsKKyAgICB9CisgIH0sIHsKKyAgICBoaWdoV2F0ZXJNYXJr
OiAxMAorICB9KTsKK30sICdSZWFkYWJsZVN0cmVhbTogZGVzaXJlZFNpemUgd2hlbiBlcnJvcmVk
Jyk7CisKK3Rlc3QoKCkgPT4geworICBjbGFzcyBTdWJjbGFzcyBleHRlbmRzIFJlYWRhYmxlU3Ry
ZWFtIHsKKyAgICBleHRyYUZ1bmN0aW9uKCkgeworICAgICAgcmV0dXJuIHRydWU7CisgICAgfQor
ICB9CisgIGFzc2VydF9lcXVhbHMoCisgICAgICBPYmplY3QuZ2V0UHJvdG90eXBlT2YoU3ViY2xh
c3MucHJvdG90eXBlKSwgUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLAorICAgICAgJ1N1YmNsYXNz
LnByb3RvdHlwZVwncyBwcm90b3R5cGUgc2hvdWxkIGJlIFJlYWRhYmxlU3RyZWFtLnByb3RvdHlw
ZScpOworICBhc3NlcnRfZXF1YWxzKE9iamVjdC5nZXRQcm90b3R5cGVPZihTdWJjbGFzcyksIFJl
YWRhYmxlU3RyZWFtLAorICAgICAgICAgICAgICAgICdTdWJjbGFzc1wncyBwcm90b3R5cGUgc2hv
dWxkIGJlIFJlYWRhYmxlU3RyZWFtJyk7CisgIGNvbnN0IHN1YiA9IG5ldyBTdWJjbGFzcygpOwor
ICBhc3NlcnRfdHJ1ZShzdWIgaW5zdGFuY2VvZiBSZWFkYWJsZVN0cmVhbSwKKyAgICAgICAgICAg
ICAgJ1N1YmNsYXNzIG9iamVjdCBzaG91bGQgYmUgYW4gaW5zdGFuY2Ugb2YgUmVhZGFibGVTdHJl
YW0nKTsKKyAgYXNzZXJ0X3RydWUoc3ViIGluc3RhbmNlb2YgU3ViY2xhc3MsCisgICAgICAgICAg
ICAgICdTdWJjbGFzcyBvYmplY3Qgc2hvdWxkIGJlIGFuIGluc3RhbmNlIG9mIFN1YmNsYXNzJyk7
CisgIGNvbnN0IGxvY2tlZEdldHRlciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
CisgICAgICBSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUsICdsb2NrZWQnKS5nZXQ7CisgIGFzc2Vy
dF9lcXVhbHMobG9ja2VkR2V0dGVyLmNhbGwoc3ViKSwgc3ViLmxvY2tlZCwKKyAgICAgICAgICAg
ICAgICAnU3ViY2xhc3Mgb2JqZWN0IHNob3VsZCBwYXNzIGJyYW5kIGNoZWNrJyk7CisgIGFzc2Vy
dF90cnVlKHN1Yi5leHRyYUZ1bmN0aW9uKCksCisgICAgICAgICAgICAgICdleHRyYUZ1bmN0aW9u
KCkgc2hvdWxkIGJlIHByZXNlbnQgb24gU3ViY2xhc3Mgb2JqZWN0Jyk7Cit9LCAnU3ViY2xhc3Np
bmcgUmVhZGFibGVTdHJlYW0gc2hvdWxkIHdvcmsnKTsKKwordGVzdCgoKSA9PiB7CisKKyAgbGV0
IHN0YXJ0Q2FsbGVkID0gZmFsc2U7CisgIG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQo
YykgeworICAgICAgYXNzZXJ0X2VxdWFscyhjLmRlc2lyZWRTaXplLCAxKTsKKyAgICAgIGMuZW5x
dWV1ZSgnYScpOworICAgICAgYXNzZXJ0X2VxdWFscyhjLmRlc2lyZWRTaXplLCAwKTsKKyAgICAg
IGMuZW5xdWV1ZSgnYicpOworICAgICAgYXNzZXJ0X2VxdWFscyhjLmRlc2lyZWRTaXplLCAtMSk7
CisgICAgICBjLmVucXVldWUoJ2MnKTsKKyAgICAgIGFzc2VydF9lcXVhbHMoYy5kZXNpcmVkU2l6
ZSwgLTIpOworICAgICAgYy5lbnF1ZXVlKCdkJyk7CisgICAgICBhc3NlcnRfZXF1YWxzKGMuZGVz
aXJlZFNpemUsIC0zKTsKKyAgICAgIGMuZW5xdWV1ZSgnZScpOworICAgICAgc3RhcnRDYWxsZWQg
PSB0cnVlOworICAgIH0KKyAgfSk7CisKKyAgYXNzZXJ0X3RydWUoc3RhcnRDYWxsZWQpOworCit9
LCAnUmVhZGFibGVTdHJlYW0gc3RyYXRlZ2llczogdGhlIGRlZmF1bHQgc3RyYXRlZ3kgc2hvdWxk
IGdpdmUgZGVzaXJlZFNpemUgb2YgMSB0byBzdGFydCwgZGVjcmVhc2luZyBieSAxIHBlciBlbnF1
ZXVlJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisKKyAgbGV0IGNvbnRyb2xsZXI7CisgIGNv
bnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjb250
cm9sbGVyID0gYzsKKyAgICB9CisgIH0pOworICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFkZXIo
KTsKKworICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDEsICdkZXNpcmVk
U2l6ZSBzaG91bGQgc3RhcnQgYXQgMScpOworICBjb250cm9sbGVyLmVucXVldWUoJ2EnKTsKKyAg
YXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAwLCAnZGVzaXJlZFNpemUgc2hv
dWxkIGRlY3JlYXNlIHRvIDAgYWZ0ZXIgZmlyc3QgZW5xdWV1ZScpOworCisgIHJldHVybiByZWFk
ZXIucmVhZCgpLnRoZW4ocmVzdWx0MSA9PiB7CisgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVz
dWx0MSwgeyB2YWx1ZTogJ2EnLCBkb25lOiBmYWxzZSB9LCAnZmlyc3QgY2h1bmsgcmVhZCBzaG91
bGQgYmUgY29ycmVjdCcpOworCisgICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRT
aXplLCAxLCAnZGVzaXJlZFNpemUgc2hvdWxkIGdvIHVwIHRvIDEgYWZ0ZXIgdGhlIGZpcnN0IHJl
YWQnKTsKKyAgICBjb250cm9sbGVyLmVucXVldWUoJ2InKTsKKyAgICBhc3NlcnRfZXF1YWxzKGNv
bnRyb2xsZXIuZGVzaXJlZFNpemUsIDAsICdkZXNpcmVkU2l6ZSBzaG91bGQgZ28gZG93biB0byAw
IGFmdGVyIHRoZSBzZWNvbmQgZW5xdWV1ZScpOworCisgICAgcmV0dXJuIHJlYWRlci5yZWFkKCk7
CisgIH0pLnRoZW4ocmVzdWx0MiA9PiB7CisgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0
MiwgeyB2YWx1ZTogJ2InLCBkb25lOiBmYWxzZSB9LCAnc2Vjb25kIGNodW5rIHJlYWQgc2hvdWxk
IGJlIGNvcnJlY3QnKTsKKworICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6
ZSwgMSwgJ2Rlc2lyZWRTaXplIHNob3VsZCBnbyB1cCB0byAxIGFmdGVyIHRoZSBzZWNvbmQgcmVh
ZCcpOworICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYycpOworICAgIGFzc2VydF9lcXVhbHMoY29u
dHJvbGxlci5kZXNpcmVkU2l6ZSwgMCwgJ2Rlc2lyZWRTaXplIHNob3VsZCBnbyBkb3duIHRvIDAg
YWZ0ZXIgdGhlIHRoaXJkIGVucXVldWUnKTsKKworICAgIHJldHVybiByZWFkZXIucmVhZCgpOwor
ICB9KS50aGVuKHJlc3VsdDMgPT4geworICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdDMs
IHsgdmFsdWU6ICdjJywgZG9uZTogZmFsc2UgfSwgJ3RoaXJkIGNodW5rIHJlYWQgc2hvdWxkIGJl
IGNvcnJlY3QnKTsKKworICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwg
MSwgJ2Rlc2lyZWRTaXplIHNob3VsZCBnbyB1cCB0byAxIGFmdGVyIHRoZSB0aGlyZCByZWFkJyk7
CisgICAgY29udHJvbGxlci5lbnF1ZXVlKCdkJyk7CisgICAgYXNzZXJ0X2VxdWFscyhjb250cm9s
bGVyLmRlc2lyZWRTaXplLCAwLCAnZGVzaXJlZFNpemUgc2hvdWxkIGdvIGRvd24gdG8gMCBhZnRl
ciB0aGUgZm91cnRoIGVucXVldWUnKTsKKyAgfSk7CisKK30sICdSZWFkYWJsZVN0cmVhbSBzdHJh
dGVnaWVzOiB0aGUgZGVmYXVsdCBzdHJhdGVneSBzaG91bGQgY29udGludWUgZ2l2aW5nIGRlc2ly
ZWRTaXplIG9mIDEgaWYgdGhlIGNodW5rcyBhcmUgcmVhZCBpbW1lZGlhdGVseScpOworCitwcm9t
aXNlX3Rlc3QodCA9PiB7CisKKyAgY29uc3QgcmFuZG9tU291cmNlID0gbmV3IFJhbmRvbVB1c2hT
b3VyY2UoOCk7CisKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0
KGMpIHsKKyAgICAgIGFzc2VydF9lcXVhbHModHlwZW9mIGMsICdvYmplY3QnLCAnYyBzaG91bGQg
YmUgYW4gb2JqZWN0IGluIHN0YXJ0Jyk7CisgICAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiBjLmVu
cXVldWUsICdmdW5jdGlvbicsICdlbnF1ZXVlIHNob3VsZCBiZSBhIGZ1bmN0aW9uIGluIHN0YXJ0
Jyk7CisgICAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiBjLmNsb3NlLCAnZnVuY3Rpb24nLCAnY2xv
c2Ugc2hvdWxkIGJlIGEgZnVuY3Rpb24gaW4gc3RhcnQnKTsKKyAgICAgIGFzc2VydF9lcXVhbHMo
dHlwZW9mIGMuZXJyb3IsICdmdW5jdGlvbicsICdlcnJvciBzaG91bGQgYmUgYSBmdW5jdGlvbiBp
biBzdGFydCcpOworCisgICAgICByYW5kb21Tb3VyY2Uub25kYXRhID0gdC5zdGVwX2Z1bmMoY2h1
bmsgPT4geworICAgICAgICBpZiAoIWMuZW5xdWV1ZShjaHVuaykgPD0gMCkgeworICAgICAgICAg
IHJhbmRvbVNvdXJjZS5yZWFkU3RvcCgpOworICAgICAgICB9CisgICAgICB9KTsKKworICAgICAg
cmFuZG9tU291cmNlLm9uZW5kID0gYy5jbG9zZS5iaW5kKGMpOworICAgICAgcmFuZG9tU291cmNl
Lm9uZXJyb3IgPSBjLmVycm9yLmJpbmQoYyk7CisgICAgfSwKKworICAgIHB1bGwoYykgeworICAg
ICAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgYywgJ29iamVjdCcsICdjIHNob3VsZCBiZSBhbiBvYmpl
Y3QgaW4gcHVsbCcpOworICAgICAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgYy5lbnF1ZXVlLCAnZnVu
Y3Rpb24nLCAnZW5xdWV1ZSBzaG91bGQgYmUgYSBmdW5jdGlvbiBpbiBwdWxsJyk7CisgICAgICBh
c3NlcnRfZXF1YWxzKHR5cGVvZiBjLmNsb3NlLCAnZnVuY3Rpb24nLCAnY2xvc2Ugc2hvdWxkIGJl
IGEgZnVuY3Rpb24gaW4gcHVsbCcpOworCisgICAgICByYW5kb21Tb3VyY2UucmVhZFN0YXJ0KCk7
CisgICAgfQorICB9KTsKKworICByZXR1cm4gcmVhZGFibGVTdHJlYW1Ub0FycmF5KHJzKS50aGVu
KGNodW5rcyA9PiB7CisgICAgYXNzZXJ0X2VxdWFscyhjaHVua3MubGVuZ3RoLCA4LCAnOCBjaHVu
a3Mgc2hvdWxkIGJlIHJlYWQnKTsKKyAgICBmb3IgKGNvbnN0IGNodW5rIG9mIGNodW5rcykgewor
ICAgICAgYXNzZXJ0X2VxdWFscyhjaHVuay5sZW5ndGgsIDEyOCwgJ2NodW5rIHNob3VsZCBoYXZl
IDEyOCBieXRlcycpOworICAgIH0KKyAgfSk7CisKK30sICdSZWFkYWJsZVN0cmVhbSBpbnRlZ3Jh
dGlvbiB0ZXN0OiBhZGFwdGluZyBhIHJhbmRvbSBwdXNoIHNvdXJjZScpOworCitwcm9taXNlX3Rl
c3QoKCkgPT4geworCisgIGNvbnN0IHJzID0gc2VxdWVudGlhbFJlYWRhYmxlU3RyZWFtKDEwKTsK
KworICByZXR1cm4gcmVhZGFibGVTdHJlYW1Ub0FycmF5KHJzKS50aGVuKGNodW5rcyA9PiB7Cisg
ICAgYXNzZXJ0X3RydWUocnMuc291cmNlLmNsb3NlZCwgJ3NvdXJjZSBzaG91bGQgYmUgY2xvc2Vk
IGFmdGVyIGFsbCBjaHVua3MgYXJlIHJlYWQnKTsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGNo
dW5rcywgWzEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwXSwgJ3RoZSBleHBlY3RlZCAxMCBj
aHVua3Mgc2hvdWxkIGJlIHJlYWQnKTsKKyAgfSk7CisKK30sICdSZWFkYWJsZVN0cmVhbSBpbnRl
Z3JhdGlvbiB0ZXN0OiBhZGFwdGluZyBhIHN5bmMgcHVsbCBzb3VyY2UnKTsKKworcHJvbWlzZV90
ZXN0KCgpID0+IHsKKworICBjb25zdCBycyA9IHNlcXVlbnRpYWxSZWFkYWJsZVN0cmVhbSgxMCwg
eyBhc3luYzogdHJ1ZSB9KTsKKworICByZXR1cm4gcmVhZGFibGVTdHJlYW1Ub0FycmF5KHJzKS50
aGVuKGNodW5rcyA9PiB7CisgICAgYXNzZXJ0X3RydWUocnMuc291cmNlLmNsb3NlZCwgJ3NvdXJj
ZSBzaG91bGQgYmUgY2xvc2VkIGFmdGVyIGFsbCBjaHVua3MgYXJlIHJlYWQnKTsKKyAgICBhc3Nl
cnRfYXJyYXlfZXF1YWxzKGNodW5rcywgWzEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwXSwg
J3RoZSBleHBlY3RlZCAxMCBjaHVua3Mgc2hvdWxkIGJlIHJlYWQnKTsKKyAgfSk7CisKK30sICdS
ZWFkYWJsZVN0cmVhbSBpbnRlZ3JhdGlvbiB0ZXN0OiBhZGFwdGluZyBhbiBhc3luYyBwdWxsIHNv
dXJjZScpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZ2VuZXJhbC5hbnkud29ya2VyLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2dlbmVyYWwuYW55Lndvcmtlci1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMjM5Yjc5MWExMWViZGQxNzg2NzRjMjgyNjMyYTUzNGE0NTZhNDVlNgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2dlbmVyYWwuYW55Lndvcmtlci1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSw0NCBAQAorCitQQVNTIFJlYWRhYmxlU3RyZWFtIGNhbiBiZSBjb25zdHJ1Y3Rl
ZCB3aXRoIG5vIGVycm9ycyAKK1BBU1MgUmVhZGFibGVTdHJlYW0gY2FuJ3QgYmUgY29uc3RydWN0
ZWQgd2l0aCBnYXJiYWdlIAorRkFJTCBSZWFkYWJsZVN0cmVhbSBjYW4ndCBiZSBjb25zdHJ1Y3Rl
ZCB3aXRoIGFuIGludmFsaWQgdHlwZSBhc3NlcnRfdGhyb3dzX2pzOiBjb25zdHJ1Y3RvciBzaG91
bGQgdGhyb3cgd2hlbiB0aGUgdHlwZSBpcyBudWxsIGZ1bmN0aW9uICIoKSA9PiBuZXcgUmVhZGFi
bGVTdHJlYW0oeyB0eXBlOiBudWxsIH0pIiB0aHJldyBvYmplY3QgIlJhbmdlRXJyb3I6IEludmFs
aWQgdHlwZSBmb3IgdW5kZXJseWluZyBzb3VyY2UiICgiUmFuZ2VFcnJvciIpIGV4cGVjdGVkIGlu
c3RhbmNlIG9mIGZ1bmN0aW9uICJmdW5jdGlvbiBUeXBlRXJyb3IoKSB7CisgICAgW25hdGl2ZSBj
b2RlXQorfSIgKCJUeXBlRXJyb3IiKQorUEFTUyBSZWFkYWJsZVN0cmVhbSBjb25zdHJ1Y3RvciBz
aG91bGQgdGhyb3cgZm9yIG5vbi1mdW5jdGlvbiBzdGFydCBhcmd1bWVudHMgCitGQUlMIFJlYWRh
YmxlU3RyZWFtIGNvbnN0cnVjdG9yIHdpbGwgbm90IHRvbGVyYXRlIGluaXRpYWwgZ2FyYmFnZSBh
cyBjYW5jZWwgYXJndW1lbnQgYXNzZXJ0X3Rocm93c19qczogY29uc3RydWN0b3Igc2hvdWxkIHRo
cm93IGZ1bmN0aW9uICIoKSA9PiBuZXcgUmVhZGFibGVTdHJlYW0oeyBjYW5jZWw6ICcyJyB9KSIg
ZGlkIG5vdCB0aHJvdworRkFJTCBSZWFkYWJsZVN0cmVhbSBjb25zdHJ1Y3RvciB3aWxsIG5vdCB0
b2xlcmF0ZSBpbml0aWFsIGdhcmJhZ2UgYXMgcHVsbCBhcmd1bWVudCBhc3NlcnRfdGhyb3dzX2pz
OiBjb25zdHJ1Y3RvciBzaG91bGQgdGhyb3cgZnVuY3Rpb24gIigpID0+IG5ldyBSZWFkYWJsZVN0
cmVhbSh7IHB1bGw6IHsgfSB9KSIgZGlkIG5vdCB0aHJvdworUEFTUyBSZWFkYWJsZVN0cmVhbSBz
dGFydCBzaG91bGQgYmUgY2FsbGVkIHdpdGggdGhlIHByb3BlciB0aGlzQXJnIAorUEFTUyBSZWFk
YWJsZVN0cmVhbSBzdGFydCBjb250cm9sbGVyIHBhcmFtZXRlciBzaG91bGQgYmUgZXh0ZW5zaWJs
ZSAKK0ZBSUwgZGVmYXVsdCBSZWFkYWJsZVN0cmVhbSBnZXRSZWFkZXIoKSBzaG91bGQgb25seSBh
Y2NlcHQgbW9kZTp1bmRlZmluZWQgYXNzZXJ0X3Rocm93c19qczogZnVuY3Rpb24gIigpID0+IChu
ZXcgUmVhZGFibGVTdHJlYW0oKSkuZ2V0UmVhZGVyKHsgbW9kZTogJ3BvdGF0bycgfSkiIHRocmV3
IG9iamVjdCAiUmFuZ2VFcnJvcjogSW52YWxpZCBtb2RlIGlzIHNwZWNpZmllZCIgKCJSYW5nZUVy
cm9yIikgZXhwZWN0ZWQgaW5zdGFuY2Ugb2YgZnVuY3Rpb24gImZ1bmN0aW9uIFR5cGVFcnJvcigp
IHsKKyAgICBbbmF0aXZlIGNvZGVdCit9IiAoIlR5cGVFcnJvciIpCitQQVNTIFJlYWRhYmxlU3Ry
ZWFtIHNob3VsZCBiZSBhYmxlIHRvIGNhbGwgc3RhcnQgbWV0aG9kIHdpdGhpbiBwcm90b3R5cGUg
Y2hhaW4gb2YgaXRzIHNvdXJjZSAKK1BBU1MgUmVhZGFibGVTdHJlYW0gc3RhcnQgc2hvdWxkIGJl
IGFibGUgdG8gcmV0dXJuIGEgcHJvbWlzZSAKK1BBU1MgUmVhZGFibGVTdHJlYW0gc3RhcnQgc2hv
dWxkIGJlIGFibGUgdG8gcmV0dXJuIGEgcHJvbWlzZSBhbmQgcmVqZWN0IGl0IAorUEFTUyBSZWFk
YWJsZVN0cmVhbSBzaG91bGQgYmUgYWJsZSB0byBlbnF1ZXVlIGRpZmZlcmVudCBvYmplY3RzLiAK
K1BBU1MgUmVhZGFibGVTdHJlYW06IGlmIHB1bGwgcmVqZWN0cywgaXQgc2hvdWxkIGVycm9yIHRo
ZSBzdHJlYW0gCitQQVNTIFJlYWRhYmxlU3RyZWFtOiBzaG91bGQgb25seSBjYWxsIHB1bGwgb25j
ZSB1cG9uIHN0YXJ0aW5nIHRoZSBzdHJlYW0gCitQQVNTIFJlYWRhYmxlU3RyZWFtOiBzaG91bGQg
Y2FsbCBwdWxsIHdoZW4gdHJ5aW5nIHRvIHJlYWQgZnJvbSBhIHN0YXJ0ZWQsIGVtcHR5IHN0cmVh
bSAKK1BBU1MgUmVhZGFibGVTdHJlYW06IHNob3VsZCBvbmx5IGNhbGwgcHVsbCBvbmNlIG9uIGEg
bm9uLWVtcHR5IHN0cmVhbSByZWFkIGZyb20gYmVmb3JlIHN0YXJ0IGZ1bGZpbGxzIAorUEFTUyBS
ZWFkYWJsZVN0cmVhbTogc2hvdWxkIG9ubHkgY2FsbCBwdWxsIG9uY2Ugb24gYSBub24tZW1wdHkg
c3RyZWFtIHJlYWQgZnJvbSBhZnRlciBzdGFydCBmdWxmaWxscyAKK1BBU1MgUmVhZGFibGVTdHJl
YW06IHNob3VsZCBjYWxsIHB1bGwgaW4gcmVhY3Rpb24gdG8gcmVhZCgpaW5nIHRoZSBsYXN0IGNo
dW5rLCBpZiBub3QgZHJhaW5pbmcgCitQQVNTIFJlYWRhYmxlU3RyZWFtOiBzaG91bGQgbm90IGNh
bGwgcHVsbCgpIGluIHJlYWN0aW9uIHRvIHJlYWQoKWluZyB0aGUgbGFzdCBjaHVuaywgaWYgZHJh
aW5pbmcgCitQQVNTIFJlYWRhYmxlU3RyZWFtOiBzaG91bGQgbm90IGNhbGwgcHVsbCB1bnRpbCB0
aGUgcHJldmlvdXMgcHVsbCBjYWxsJ3MgcHJvbWlzZSBmdWxmaWxscyAKK1BBU1MgUmVhZGFibGVT
dHJlYW06IHNob3VsZCBwdWxsIGFmdGVyIHN0YXJ0LCBhbmQgYWZ0ZXIgZXZlcnkgcmVhZCAKK1BB
U1MgUmVhZGFibGVTdHJlYW06IHNob3VsZCBub3QgY2FsbCBwdWxsIGFmdGVyIHN0YXJ0IGlmIHRo
ZSBzdHJlYW0gaXMgbm93IGNsb3NlZCAKK1BBU1MgUmVhZGFibGVTdHJlYW06IHNob3VsZCBjYWxs
IHB1bGwgYWZ0ZXIgZW5xdWV1ZWluZyBmcm9tIGluc2lkZSBwdWxsICh3aXRoIG5vIHJlYWQgcmVx
dWVzdHMpLCBpZiBzdHJhdGVneSBhbGxvd3MgCitQQVNTIFJlYWRhYmxlU3RyZWFtIHB1bGwgc2hv
dWxkIGJlIGFibGUgdG8gY2xvc2UgYSBzdHJlYW0uIAorUEFTUyBSZWFkYWJsZVN0cmVhbSBwdWxs
IHNob3VsZCBiZSBhYmxlIHRvIGVycm9yIGEgc3RyZWFtLiAKK1BBU1MgUmVhZGFibGVTdHJlYW0g
cHVsbCBzaG91bGQgYmUgYWJsZSB0byBlcnJvciBhIHN0cmVhbSBhbmQgdGhyb3cuIAorUEFTUyBS
ZWFkYWJsZVN0cmVhbTogZW5xdWV1ZSBzaG91bGQgdGhyb3cgd2hlbiB0aGUgc3RyZWFtIGlzIHJl
YWRhYmxlIGJ1dCBkcmFpbmluZyAKK1BBU1MgUmVhZGFibGVTdHJlYW06IGVucXVldWUgc2hvdWxk
IHRocm93IHdoZW4gdGhlIHN0cmVhbSBpcyBjbG9zZWQgCitQQVNTIFJlYWRhYmxlU3RyZWFtOiBz
aG91bGQgY2FsbCB1bmRlcmx5aW5nIHNvdXJjZSBtZXRob2RzIGFzIG1ldGhvZHMgCitQQVNTIFJl
YWRhYmxlU3RyZWFtOiBkZXNpcmVkU2l6ZSB3aGVuIGNsb3NlZCAKK1BBU1MgUmVhZGFibGVTdHJl
YW06IGRlc2lyZWRTaXplIHdoZW4gZXJyb3JlZCAKK0ZBSUwgU3ViY2xhc3NpbmcgUmVhZGFibGVT
dHJlYW0gc2hvdWxkIHdvcmsgYXNzZXJ0X3RydWU6IFN1YmNsYXNzIG9iamVjdCBzaG91bGQgYmUg
YW4gaW5zdGFuY2Ugb2YgU3ViY2xhc3MgZXhwZWN0ZWQgdHJ1ZSBnb3QgZmFsc2UKK1BBU1MgUmVh
ZGFibGVTdHJlYW0gc3RyYXRlZ2llczogdGhlIGRlZmF1bHQgc3RyYXRlZ3kgc2hvdWxkIGdpdmUg
ZGVzaXJlZFNpemUgb2YgMSB0byBzdGFydCwgZGVjcmVhc2luZyBieSAxIHBlciBlbnF1ZXVlIAor
UEFTUyBSZWFkYWJsZVN0cmVhbSBzdHJhdGVnaWVzOiB0aGUgZGVmYXVsdCBzdHJhdGVneSBzaG91
bGQgY29udGludWUgZ2l2aW5nIGRlc2lyZWRTaXplIG9mIDEgaWYgdGhlIGNodW5rcyBhcmUgcmVh
ZCBpbW1lZGlhdGVseSAKK1BBU1MgUmVhZGFibGVTdHJlYW0gaW50ZWdyYXRpb24gdGVzdDogYWRh
cHRpbmcgYSByYW5kb20gcHVzaCBzb3VyY2UgCitQQVNTIFJlYWRhYmxlU3RyZWFtIGludGVncmF0
aW9uIHRlc3Q6IGFkYXB0aW5nIGEgc3luYyBwdWxsIHNvdXJjZSAKK1BBU1MgUmVhZGFibGVTdHJl
YW0gaW50ZWdyYXRpb24gdGVzdDogYWRhcHRpbmcgYW4gYXN5bmMgcHVsbCBzb3VyY2UgCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2dlbmVyYWwuYW55Lndvcmtlci5odG1sIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVh
bXMvZ2VuZXJhbC5hbnkud29ya2VyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjM4MjkxMzUyOGU2OTNiM2E1
ZDU2YzY2MGE0NTA2MDk4MGI1NDhjMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2dl
bmVyYWwuYW55Lndvcmtlci5odG1sCkBAIC0wLDAgKzEgQEAKKzwhLS0gVGhpcyBmaWxlIGlzIHJl
cXVpcmVkIGZvciBXZWJLaXQgdGVzdCBpbmZyYXN0cnVjdHVyZSB0byBydW4gdGhlIHRlbXBsYXRl
ZCB0ZXN0IC0tPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1z
dHJlYW1zL2dlbmVyYWwuZGVkaWNhdGVkd29ya2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1z
L2dlbmVyYWwuZGVkaWNhdGVkd29ya2VyLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggNDQ1MjZhZDhhZmNkNWM3NGYzMGVlYmM4MDExZjgwZWFjYWU1YmVkZS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9n
ZW5lcmFsLmRlZGljYXRlZHdvcmtlci1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw0
MCArMCwwIEBACi0KLVBBU1MgUmVhZGFibGVTdHJlYW0gY2FuIGJlIGNvbnN0cnVjdGVkIHdpdGgg
bm8gZXJyb3JzIAotUEFTUyBSZWFkYWJsZVN0cmVhbSBjYW4ndCBiZSBjb25zdHJ1Y3RlZCB3aXRo
IGdhcmJhZ2UgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIGNhbid0IGJlIGNvbnN0cnVjdGVkIHdpdGgg
YW4gaW52YWxpZCB0eXBlIAotRkFJTCBSZWFkYWJsZVN0cmVhbSBpbnN0YW5jZXMgc2hvdWxkIGhh
dmUgdGhlIGNvcnJlY3QgbGlzdCBvZiBwcm9wZXJ0aWVzIGFzc2VydF9lcXVhbHM6IGdldFJlYWRl
ciBzaG91bGQgaGF2ZSBubyBwYXJhbWV0ZXJzIGV4cGVjdGVkIDAgYnV0IGdvdCAxCi1QQVNTIFJl
YWRhYmxlU3RyZWFtIGNvbnN0cnVjdG9yIHNob3VsZCB0aHJvdyBmb3Igbm9uLWZ1bmN0aW9uIHN0
YXJ0IGFyZ3VtZW50cyAKLUZBSUwgUmVhZGFibGVTdHJlYW0gY29uc3RydWN0b3Igd2lsbCBub3Qg
dG9sZXJhdGUgaW5pdGlhbCBnYXJiYWdlIGFzIGNhbmNlbCBhcmd1bWVudCBhc3NlcnRfdGhyb3dz
OiBjb25zdHJ1Y3RvciBzaG91bGQgdGhyb3cgZnVuY3Rpb24gIigpID0+IG5ldyBSZWFkYWJsZVN0
cmVhbSh7IGNhbmNlbDogJzInIH0pIiBkaWQgbm90IHRocm93Ci1GQUlMIFJlYWRhYmxlU3RyZWFt
IGNvbnN0cnVjdG9yIHdpbGwgbm90IHRvbGVyYXRlIGluaXRpYWwgZ2FyYmFnZSBhcyBwdWxsIGFy
Z3VtZW50IGFzc2VydF90aHJvd3M6IGNvbnN0cnVjdG9yIHNob3VsZCB0aHJvdyBmdW5jdGlvbiAi
KCkgPT4gbmV3IFJlYWRhYmxlU3RyZWFtKHsgcHVsbDogeyB9IH0pIiBkaWQgbm90IHRocm93Ci1G
QUlMIFJlYWRhYmxlU3RyZWFtIHN0YXJ0IHNob3VsZCBiZSBjYWxsZWQgd2l0aCB0aGUgcHJvcGVy
IHBhcmFtZXRlcnMgYXNzZXJ0X2VxdWFsczogY29uc3RydWN0b3Igc2hvdWxkIGhhdmUgbm8gcGFy
YW1ldGVycyBleHBlY3RlZCAwIGJ1dCBnb3QgNAotUEFTUyBSZWFkYWJsZVN0cmVhbSBzdGFydCBj
b250cm9sbGVyIHBhcmFtZXRlciBzaG91bGQgYmUgZXh0ZW5zaWJsZSAKLVBBU1MgZGVmYXVsdCBS
ZWFkYWJsZVN0cmVhbSBnZXRSZWFkZXIoKSBzaG91bGQgb25seSBhY2NlcHQgbW9kZTp1bmRlZmlu
ZWQgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIHNob3VsZCBiZSBhYmxlIHRvIGNhbGwgc3RhcnQgbWV0
aG9kIHdpdGhpbiBwcm90b3R5cGUgY2hhaW4gb2YgaXRzIHNvdXJjZSAKLVBBU1MgUmVhZGFibGVT
dHJlYW0gc3RhcnQgc2hvdWxkIGJlIGFibGUgdG8gcmV0dXJuIGEgcHJvbWlzZSAKLVBBU1MgUmVh
ZGFibGVTdHJlYW0gc3RhcnQgc2hvdWxkIGJlIGFibGUgdG8gcmV0dXJuIGEgcHJvbWlzZSBhbmQg
cmVqZWN0IGl0IAotUEFTUyBSZWFkYWJsZVN0cmVhbSBzaG91bGQgYmUgYWJsZSB0byBlbnF1ZXVl
IGRpZmZlcmVudCBvYmplY3RzLiAKLVBBU1MgUmVhZGFibGVTdHJlYW06IGlmIHB1bGwgcmVqZWN0
cywgaXQgc2hvdWxkIGVycm9yIHRoZSBzdHJlYW0gCi1QQVNTIFJlYWRhYmxlU3RyZWFtOiBzaG91
bGQgb25seSBjYWxsIHB1bGwgb25jZSB1cG9uIHN0YXJ0aW5nIHRoZSBzdHJlYW0gCi1QQVNTIFJl
YWRhYmxlU3RyZWFtOiBzaG91bGQgY2FsbCBwdWxsIHdoZW4gdHJ5aW5nIHRvIHJlYWQgZnJvbSBh
IHN0YXJ0ZWQsIGVtcHR5IHN0cmVhbSAKLVBBU1MgUmVhZGFibGVTdHJlYW06IHNob3VsZCBvbmx5
IGNhbGwgcHVsbCBvbmNlIG9uIGEgbm9uLWVtcHR5IHN0cmVhbSByZWFkIGZyb20gYmVmb3JlIHN0
YXJ0IGZ1bGZpbGxzIAotUEFTUyBSZWFkYWJsZVN0cmVhbTogc2hvdWxkIG9ubHkgY2FsbCBwdWxs
IG9uY2Ugb24gYSBub24tZW1wdHkgc3RyZWFtIHJlYWQgZnJvbSBhZnRlciBzdGFydCBmdWxmaWxs
cyAKLVBBU1MgUmVhZGFibGVTdHJlYW06IHNob3VsZCBjYWxsIHB1bGwgaW4gcmVhY3Rpb24gdG8g
cmVhZCgpaW5nIHRoZSBsYXN0IGNodW5rLCBpZiBub3QgZHJhaW5pbmcgCi1QQVNTIFJlYWRhYmxl
U3RyZWFtOiBzaG91bGQgbm90IGNhbGwgcHVsbCgpIGluIHJlYWN0aW9uIHRvIHJlYWQoKWluZyB0
aGUgbGFzdCBjaHVuaywgaWYgZHJhaW5pbmcgCi1QQVNTIFJlYWRhYmxlU3RyZWFtOiBzaG91bGQg
bm90IGNhbGwgcHVsbCB1bnRpbCB0aGUgcHJldmlvdXMgcHVsbCBjYWxsJ3MgcHJvbWlzZSBmdWxm
aWxscyAKLVBBU1MgUmVhZGFibGVTdHJlYW06IHNob3VsZCBwdWxsIGFmdGVyIHN0YXJ0LCBhbmQg
YWZ0ZXIgZXZlcnkgcmVhZCAKLVBBU1MgUmVhZGFibGVTdHJlYW06IHNob3VsZCBub3QgY2FsbCBw
dWxsIGFmdGVyIHN0YXJ0IGlmIHRoZSBzdHJlYW0gaXMgbm93IGNsb3NlZCAKLVBBU1MgUmVhZGFi
bGVTdHJlYW06IHNob3VsZCBjYWxsIHB1bGwgYWZ0ZXIgZW5xdWV1ZWluZyBmcm9tIGluc2lkZSBw
dWxsICh3aXRoIG5vIHJlYWQgcmVxdWVzdHMpLCBpZiBzdHJhdGVneSBhbGxvd3MgCi1QQVNTIFJl
YWRhYmxlU3RyZWFtIHB1bGwgc2hvdWxkIGJlIGFibGUgdG8gY2xvc2UgYSBzdHJlYW0uIAotUEFT
UyBSZWFkYWJsZVN0cmVhbSBwdWxsIHNob3VsZCBiZSBhYmxlIHRvIGVycm9yIGEgc3RyZWFtLiAK
LVBBU1MgUmVhZGFibGVTdHJlYW0gcHVsbCBzaG91bGQgYmUgYWJsZSB0byBlcnJvciBhIHN0cmVh
bSBhbmQgdGhyb3cuIAotUEFTUyBSZWFkYWJsZVN0cmVhbTogZW5xdWV1ZSBzaG91bGQgdGhyb3cg
d2hlbiB0aGUgc3RyZWFtIGlzIHJlYWRhYmxlIGJ1dCBkcmFpbmluZyAKLVBBU1MgUmVhZGFibGVT
dHJlYW06IGVucXVldWUgc2hvdWxkIHRocm93IHdoZW4gdGhlIHN0cmVhbSBpcyBjbG9zZWQgCi1Q
QVNTIFJlYWRhYmxlU3RyZWFtOiBzaG91bGQgY2FsbCB1bmRlcmx5aW5nIHNvdXJjZSBtZXRob2Rz
IGFzIG1ldGhvZHMgCi1QQVNTIFJlYWRhYmxlU3RyZWFtOiBkZXNpcmVkU2l6ZSB3aGVuIGNsb3Nl
ZCAKLVBBU1MgUmVhZGFibGVTdHJlYW06IGRlc2lyZWRTaXplIHdoZW4gZXJyb3JlZCAKLVBBU1Mg
UmVhZGFibGVTdHJlYW0gc3RyYXRlZ2llczogdGhlIGRlZmF1bHQgc3RyYXRlZ3kgc2hvdWxkIGdp
dmUgZGVzaXJlZFNpemUgb2YgMSB0byBzdGFydCwgZGVjcmVhc2luZyBieSAxIHBlciBlbnF1ZXVl
IAotUEFTUyBSZWFkYWJsZVN0cmVhbSBzdHJhdGVnaWVzOiB0aGUgZGVmYXVsdCBzdHJhdGVneSBz
aG91bGQgY29udGludWUgZ2l2aW5nIGRlc2lyZWRTaXplIG9mIDEgaWYgdGhlIGNodW5rcyBhcmUg
cmVhZCBpbW1lZGlhdGVseSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gaW50ZWdyYXRpb24gdGVzdDog
YWRhcHRpbmcgYSByYW5kb20gcHVzaCBzb3VyY2UgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIGludGVn
cmF0aW9uIHRlc3Q6IGFkYXB0aW5nIGEgc3luYyBwdWxsIHNvdXJjZSAKLVBBU1MgUmVhZGFibGVT
dHJlYW0gaW50ZWdyYXRpb24gdGVzdDogYWRhcHRpbmcgYW4gYXN5bmMgcHVsbCBzb3VyY2UgCi0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2dlbmVyYWwuZGVkaWNhdGVkd29ya2VyLmh0bWwgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFi
bGUtc3RyZWFtcy9nZW5lcmFsLmRlZGljYXRlZHdvcmtlci5odG1sCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA4NmU0ODAxMzllODkxNzJjY2NkMmEwOGYxNDE3ZGQzMzk4ZjUzMjhhLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1z
L2dlbmVyYWwuZGVkaWNhdGVkd29ya2VyLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCww
IEBACi08IURPQ1RZUEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTx0aXRsZT5nZW5l
cmFsLmpzIGRlZGljYXRlZCB3b3JrZXIgd3JhcHBlciBmaWxlPC90aXRsZT4KLQotPHNjcmlwdCBz
cmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9y
ZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotCi08c2NyaXB0PgotJ3Vz
ZSBzdHJpY3QnOwotZmV0Y2hfdGVzdHNfZnJvbV93b3JrZXIobmV3IFdvcmtlcignZ2VuZXJhbC5q
cycpKTsKLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZ2VuZXJhbC5odG1sIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRh
YmxlLXN0cmVhbXMvZ2VuZXJhbC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5
NzVjZDAwOWZkMTg0ZTMwMGQ3MTEzOTdiMDE0YmEyYWJkZTY3ZjhhLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2dlbmVyYWwuaHRtbAor
KysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hh
cnNldD0idXRmLTgiPgotPHRpdGxlPmdlbmVyYWwuanMgYnJvd3NlciBjb250ZXh0IHdyYXBwZXIg
ZmlsZTwvdGl0bGU+Ci0KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48
L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48
L3NjcmlwdD4KLQotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0LXV0aWxzLmpzIj48L3Nj
cmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvcnMtdXRpbHMuanMiPjwvc2NyaXB0Pgot
Ci08c2NyaXB0IHNyYz0iZ2VuZXJhbC5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3Ry
ZWFtcy9nZW5lcmFsLmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZ2VuZXJhbC5qcwpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDUzODJkNDdmN2ViNjFkZWFlMjQwYjZkOTQ0MWE5OThlNThkZDU0YS4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFt
cy9nZW5lcmFsLmpzCisrKyAvZGV2L251bGwKQEAgLTEsOTAxICswLDAgQEAKLSd1c2Ugc3RyaWN0
JzsKLQotaWYgKHNlbGYuaW1wb3J0U2NyaXB0cykgewotICBzZWxmLmltcG9ydFNjcmlwdHMoJy4u
L3Jlc291cmNlcy90ZXN0LXV0aWxzLmpzJyk7Ci0gIHNlbGYuaW1wb3J0U2NyaXB0cygnLi4vcmVz
b3VyY2VzL3JzLXV0aWxzLmpzJyk7Ci0gIHNlbGYuaW1wb3J0U2NyaXB0cygnL3Jlc291cmNlcy90
ZXN0aGFybmVzcy5qcycpOwotfQotCi1jb25zdCBlcnJvcjEgPSBuZXcgRXJyb3IoJ2Vycm9yMScp
OwotZXJyb3IxLm5hbWUgPSAnZXJyb3IxJzsKLQotdGVzdCgoKSA9PiB7Ci0KLSAgbmV3IFJlYWRh
YmxlU3RyZWFtKCk7IC8vIFJlYWRhYmxlU3RyZWFtIGNvbnN0cnVjdGVkIHdpdGggbm8gcGFyYW1l
dGVycwotICBuZXcgUmVhZGFibGVTdHJlYW0oeyB9KTsgLy8gUmVhZGFibGVTdHJlYW0gY29uc3Ry
dWN0ZWQgd2l0aCBhbiBlbXB0eSBvYmplY3QgYXMgcGFyYW1ldGVyCi0gIG5ldyBSZWFkYWJsZVN0
cmVhbSh7IHR5cGU6IHVuZGVmaW5lZCB9KTsgLy8gUmVhZGFibGVTdHJlYW0gY29uc3RydWN0ZWQg
d2l0aCB1bmRlZmluZWQgdHlwZQotICBuZXcgUmVhZGFibGVTdHJlYW0odW5kZWZpbmVkKTsgLy8g
UmVhZGFibGVTdHJlYW0gY29uc3RydWN0ZWQgd2l0aCB1bmRlZmluZWQgYXMgcGFyYW1ldGVyCi0K
LSAgbGV0IHg7Ci0gIG5ldyBSZWFkYWJsZVN0cmVhbSh4KTsgLy8gUmVhZGFibGVTdHJlYW0gY29u
c3RydWN0ZWQgd2l0aCBhbiB1bmRlZmluZWQgdmFyaWFibGUgYXMgcGFyYW1ldGVyCi0KLX0sICdS
ZWFkYWJsZVN0cmVhbSBjYW4gYmUgY29uc3RydWN0ZWQgd2l0aCBubyBlcnJvcnMnKTsKLQotdGVz
dCgoKSA9PiB7Ci0KLSAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IG5ldyBS
ZWFkYWJsZVN0cmVhbShudWxsKSwgJ2NvbnN0cnVjdG9yIHNob3VsZCB0aHJvdyB3aGVuIHRoZSBz
b3VyY2UgaXMgbnVsbCcpOwotCi19LCAnUmVhZGFibGVTdHJlYW0gY2FuXCd0IGJlIGNvbnN0cnVj
dGVkIHdpdGggZ2FyYmFnZScpOwotCi10ZXN0KCgpID0+IHsKLQotICBhc3NlcnRfdGhyb3dzKG5l
dyBSYW5nZUVycm9yKCksICgpID0+IG5ldyBSZWFkYWJsZVN0cmVhbSh7IHR5cGU6IG51bGwgfSks
Ci0gICAgJ2NvbnN0cnVjdG9yIHNob3VsZCB0aHJvdyB3aGVuIHRoZSB0eXBlIGlzIG51bGwnKTsK
LSAgYXNzZXJ0X3Rocm93cyhuZXcgUmFuZ2VFcnJvcigpLCAoKSA9PiBuZXcgUmVhZGFibGVTdHJl
YW0oeyB0eXBlOiAnJyB9KSwKLSAgICAnY29uc3RydWN0b3Igc2hvdWxkIHRocm93IHdoZW4gdGhl
IHR5cGUgaXMgZW1wdHkgc3RyaW5nJyk7Ci0gIGFzc2VydF90aHJvd3MobmV3IFJhbmdlRXJyb3Io
KSwgKCkgPT4gbmV3IFJlYWRhYmxlU3RyZWFtKHsgdHlwZTogJ2FzZGYnIH0pLAotICAgICdjb25z
dHJ1Y3RvciBzaG91bGQgdGhyb3cgd2hlbiB0aGUgdHlwZSBpcyBhc2RmJyk7Ci0gIGFzc2VydF90
aHJvd3MoZXJyb3IxLCAoKSA9PiBuZXcgUmVhZGFibGVTdHJlYW0oeyB0eXBlOiB7IGdldCB0b1N0
cmluZygpIHt0aHJvdyBlcnJvcjE7fSB9IH0pLCAnY29uc3RydWN0b3Igc2hvdWxkIHRocm93IHdo
ZW4gVG9TdHJpbmcoKSB0aHJvd3MnKTsKLSAgYXNzZXJ0X3Rocm93cyhlcnJvcjEsICgpID0+IG5l
dyBSZWFkYWJsZVN0cmVhbSh7IHR5cGU6IHsgdG9TdHJpbmcoKSB7dGhyb3cgZXJyb3IxO30gfSB9
KSwgJ2NvbnN0cnVjdG9yIHNob3VsZCB0aHJvdyB3aGVuIFRvU3RyaW5nKCkgdGhyb3dzJyk7Ci0K
LX0sICdSZWFkYWJsZVN0cmVhbSBjYW5cJ3QgYmUgY29uc3RydWN0ZWQgd2l0aCBhbiBpbnZhbGlk
IHR5cGUnKTsKLQotdGVzdCgoKSA9PiB7Ci0KLSAgY29uc3QgbWV0aG9kcyA9IFsnY2FuY2VsJywg
J2NvbnN0cnVjdG9yJywgJ2dldFJlYWRlcicsICdwaXBlVGhyb3VnaCcsICdwaXBlVG8nLCAndGVl
J107Ci0gIGNvbnN0IHByb3BlcnRpZXMgPSBtZXRob2RzLmNvbmNhdChbJ2xvY2tlZCddKS5zb3J0
KCk7Ci0KLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oKTsKLSAgY29uc3QgcHJvdG8g
PSBPYmplY3QuZ2V0UHJvdG90eXBlT2YocnMpOwotCi0gIGFzc2VydF9hcnJheV9lcXVhbHMoT2Jq
ZWN0LmdldE93blByb3BlcnR5TmFtZXMocHJvdG8pLnNvcnQoKSwgcHJvcGVydGllcywgJ3Nob3Vs
ZCBoYXZlIGFsbCB0aGUgY29ycmVjdCBtZXRob2RzJyk7Ci0KLSAgZm9yIChjb25zdCBtIG9mIG1l
dGhvZHMpIHsKLSAgICBjb25zdCBwcm9wRGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IocHJvdG8sIG0pOwotICAgIGFzc2VydF9mYWxzZShwcm9wRGVzYy5lbnVtZXJhYmxlLCAn
bWV0aG9kIHNob3VsZCBiZSBub24tZW51bWVyYWJsZScpOwotICAgIGFzc2VydF90cnVlKHByb3BE
ZXNjLmNvbmZpZ3VyYWJsZSwgJ21ldGhvZCBzaG91bGQgYmUgY29uZmlndXJhYmxlJyk7Ci0gICAg
YXNzZXJ0X3RydWUocHJvcERlc2Mud3JpdGFibGUsICdtZXRob2Qgc2hvdWxkIGJlIHdyaXRhYmxl
Jyk7Ci0gICAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgcnNbbV0sICdmdW5jdGlvbicsICdtZXRob2Qg
c2hvdWxkIGJlIGEgZnVuY3Rpb24nKTsKLSAgICBjb25zdCBleHBlY3RlZE5hbWUgPSBtID09PSAn
Y29uc3RydWN0b3InID8gJ1JlYWRhYmxlU3RyZWFtJyA6IG07Ci0gICAgYXNzZXJ0X2VxdWFscyhy
c1ttXS5uYW1lLCBleHBlY3RlZE5hbWUsICdtZXRob2Qgc2hvdWxkIGhhdmUgdGhlIGNvcnJlY3Qg
bmFtZScpOwotICB9Ci0KLSAgY29uc3QgbG9ja2VkUHJvcERlc2MgPSBPYmplY3QuZ2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKHByb3RvLCAnbG9ja2VkJyk7Ci0gIGFzc2VydF9mYWxzZShsb2NrZWRQ
cm9wRGVzYy5lbnVtZXJhYmxlLCAnbG9ja2VkIHNob3VsZCBiZSBub24tZW51bWVyYWJsZScpOwot
ICBhc3NlcnRfZXF1YWxzKGxvY2tlZFByb3BEZXNjLndyaXRhYmxlLCB1bmRlZmluZWQsICdsb2Nr
ZWQgc2hvdWxkIG5vdCBiZSBhIGRhdGEgcHJvcGVydHknKTsKLSAgYXNzZXJ0X2VxdWFscyh0eXBl
b2YgbG9ja2VkUHJvcERlc2MuZ2V0LCAnZnVuY3Rpb24nLCAnbG9ja2VkIHNob3VsZCBoYXZlIGEg
Z2V0dGVyJyk7Ci0gIGFzc2VydF9lcXVhbHMobG9ja2VkUHJvcERlc2Muc2V0LCB1bmRlZmluZWQs
ICdsb2NrZWQgc2hvdWxkIG5vdCBoYXZlIGEgc2V0dGVyJyk7Ci0gIGFzc2VydF90cnVlKGxvY2tl
ZFByb3BEZXNjLmNvbmZpZ3VyYWJsZSwgJ2xvY2tlZCBzaG91bGQgYmUgY29uZmlndXJhYmxlJyk7
Ci0KLSAgYXNzZXJ0X2VxdWFscyhycy5jYW5jZWwubGVuZ3RoLCAxLCAnY2FuY2VsIHNob3VsZCBo
YXZlIDEgcGFyYW1ldGVyJyk7Ci0gIGFzc2VydF9lcXVhbHMocnMuY29uc3RydWN0b3IubGVuZ3Ro
LCAwLCAnY29uc3RydWN0b3Igc2hvdWxkIGhhdmUgbm8gcGFyYW1ldGVycycpOwotICBhc3NlcnRf
ZXF1YWxzKHJzLmdldFJlYWRlci5sZW5ndGgsIDAsICdnZXRSZWFkZXIgc2hvdWxkIGhhdmUgbm8g
cGFyYW1ldGVycycpOwotICBhc3NlcnRfZXF1YWxzKHJzLnBpcGVUaHJvdWdoLmxlbmd0aCwgMiwg
J3BpcGVUaHJvdWdoIHNob3VsZCBoYXZlIDIgcGFyYW1ldGVycycpOwotICBhc3NlcnRfZXF1YWxz
KHJzLnBpcGVUby5sZW5ndGgsIDEsICdwaXBlVG8gc2hvdWxkIGhhdmUgMSBwYXJhbWV0ZXInKTsK
LSAgYXNzZXJ0X2VxdWFscyhycy50ZWUubGVuZ3RoLCAwLCAndGVlIHNob3VsZCBoYXZlIG5vIHBh
cmFtZXRlcnMnKTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtIGluc3RhbmNlcyBzaG91bGQgaGF2ZSB0
aGUgY29ycmVjdCBsaXN0IG9mIHByb3BlcnRpZXMnKTsKLQotdGVzdCgoKSA9PiB7Ci0KLSAgYXNz
ZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IHsKLSAgICBuZXcgUmVhZGFibGVTdHJl
YW0oeyBzdGFydDogJ3BvdGF0bycgfSk7Ci0gIH0sICdjb25zdHJ1Y3RvciBzaG91bGQgdGhyb3cg
d2hlbiBzdGFydCBpcyBub3QgYSBmdW5jdGlvbicpOwotCi19LCAnUmVhZGFibGVTdHJlYW0gY29u
c3RydWN0b3Igc2hvdWxkIHRocm93IGZvciBub24tZnVuY3Rpb24gc3RhcnQgYXJndW1lbnRzJyk7
Ci0KLXRlc3QoKCkgPT4gewotCi0gIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9
PiBuZXcgUmVhZGFibGVTdHJlYW0oeyBjYW5jZWw6ICcyJyB9KSwgJ2NvbnN0cnVjdG9yIHNob3Vs
ZCB0aHJvdycpOwotCi19LCAnUmVhZGFibGVTdHJlYW0gY29uc3RydWN0b3Igd2lsbCBub3QgdG9s
ZXJhdGUgaW5pdGlhbCBnYXJiYWdlIGFzIGNhbmNlbCBhcmd1bWVudCcpOwotCi10ZXN0KCgpID0+
IHsKLQotICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gbmV3IFJlYWRhYmxl
U3RyZWFtKHsgcHVsbDogeyB9IH0pLCAnY29uc3RydWN0b3Igc2hvdWxkIHRocm93Jyk7Ci0KLX0s
ICdSZWFkYWJsZVN0cmVhbSBjb25zdHJ1Y3RvciB3aWxsIG5vdCB0b2xlcmF0ZSBpbml0aWFsIGdh
cmJhZ2UgYXMgcHVsbCBhcmd1bWVudCcpOwotCi10ZXN0KCgpID0+IHsKLQotICBsZXQgc3RhcnRD
YWxsZWQgPSBmYWxzZTsKLQotICBjb25zdCBzb3VyY2UgPSB7Ci0gICAgc3RhcnQoY29udHJvbGxl
cikgewotICAgICAgYXNzZXJ0X2VxdWFscyh0aGlzLCBzb3VyY2UsICdzb3VyY2UgaXMgdGhpcyBk
dXJpbmcgc3RhcnQnKTsKLQotICAgICAgY29uc3QgbWV0aG9kcyA9IFsnY2xvc2UnLCAnZW5xdWV1
ZScsICdlcnJvcicsICdjb25zdHJ1Y3RvciddOwotICAgICAgY29uc3QgcHJvcGVydGllcyA9IFsn
ZGVzaXJlZFNpemUnXS5jb25jYXQobWV0aG9kcykuc29ydCgpOwotICAgICAgY29uc3QgcHJvdG8g
PSBPYmplY3QuZ2V0UHJvdG90eXBlT2YoY29udHJvbGxlcik7Ci0KLSAgICAgIGFzc2VydF9hcnJh
eV9lcXVhbHMoT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMocHJvdG8pLnNvcnQoKSwgcHJvcGVy
dGllcywKLSAgICAgICAgJ3RoZSBjb250cm9sbGVyIHNob3VsZCBoYXZlIHRoZSByaWdodCBwcm9w
ZXJ0aWVzJyk7Ci0KLSAgICAgIGZvciAoY29uc3QgbSBvZiBtZXRob2RzKSB7Ci0gICAgICAgIGNv
bnN0IHByb3BEZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihwcm90bywgbSk7
Ci0gICAgICAgIGFzc2VydF9lcXVhbHModHlwZW9mIGNvbnRyb2xsZXJbbV0sICdmdW5jdGlvbics
IGBzaG91bGQgaGF2ZSBhICR7bX0gbWV0aG9kYCk7Ci0gICAgICAgIGFzc2VydF9mYWxzZShwcm9w
RGVzYy5lbnVtZXJhYmxlLCBtICsgJyBzaG91bGQgYmUgbm9uLWVudW1lcmFibGUnKTsKLSAgICAg
ICAgYXNzZXJ0X3RydWUocHJvcERlc2MuY29uZmlndXJhYmxlLCBtICsgJyBzaG91bGQgYmUgY29u
ZmlndXJhYmxlJyk7Ci0gICAgICAgIGFzc2VydF90cnVlKHByb3BEZXNjLndyaXRhYmxlLCBtICsg
JyBzaG91bGQgYmUgd3JpdGFibGUnKTsKLSAgICAgICAgY29uc3QgZXhwZWN0ZWROYW1lID0gbSA9
PT0gJ2NvbnN0cnVjdG9yJyA/ICdSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyJyA6IG07
Ci0gICAgICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlclttXS5uYW1lLCBleHBlY3RlZE5hbWUs
ICdtZXRob2Qgc2hvdWxkIGhhdmUgdGhlIGNvcnJlY3QgbmFtZScpOwotICAgICAgfQotCi0gICAg
ICBjb25zdCBkZXNpcmVkU2l6ZVByb3BEZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3Jp
cHRvcihwcm90bywgJ2Rlc2lyZWRTaXplJyk7Ci0gICAgICBhc3NlcnRfZmFsc2UoZGVzaXJlZFNp
emVQcm9wRGVzYy5lbnVtZXJhYmxlLCAnZGVzaXJlZFNpemUgc2hvdWxkIGJlIG5vbi1lbnVtZXJh
YmxlJyk7Ci0gICAgICBhc3NlcnRfZXF1YWxzKGRlc2lyZWRTaXplUHJvcERlc2Mud3JpdGFibGUs
IHVuZGVmaW5lZCwgJ2Rlc2lyZWRTaXplIHNob3VsZCBub3QgYmUgYSBkYXRhIHByb3BlcnR5Jyk7
Ci0gICAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiBkZXNpcmVkU2l6ZVByb3BEZXNjLmdldCwgJ2Z1
bmN0aW9uJywgJ2Rlc2lyZWRTaXplIHNob3VsZCBoYXZlIGEgZ2V0dGVyJyk7Ci0gICAgICBhc3Nl
cnRfZXF1YWxzKGRlc2lyZWRTaXplUHJvcERlc2Muc2V0LCB1bmRlZmluZWQsICdkZXNpcmVkU2l6
ZSBzaG91bGQgbm90IGhhdmUgYSBzZXR0ZXInKTsKLSAgICAgIGFzc2VydF90cnVlKGRlc2lyZWRT
aXplUHJvcERlc2MuY29uZmlndXJhYmxlLCAnZGVzaXJlZFNpemUgc2hvdWxkIGJlIGNvbmZpZ3Vy
YWJsZScpOwotCi0gICAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuY2xvc2UubGVuZ3RoLCAw
LCAnY2xvc2Ugc2hvdWxkIGhhdmUgbm8gcGFyYW1ldGVycycpOwotICAgICAgYXNzZXJ0X2VxdWFs
cyhjb250cm9sbGVyLmNvbnN0cnVjdG9yLmxlbmd0aCwgMCwgJ2NvbnN0cnVjdG9yIHNob3VsZCBo
YXZlIG5vIHBhcmFtZXRlcnMnKTsKLSAgICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5lbnF1
ZXVlLmxlbmd0aCwgMSwgJ2VucXVldWUgc2hvdWxkIGhhdmUgMSBwYXJhbWV0ZXInKTsKLSAgICAg
IGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5lcnJvci5sZW5ndGgsIDEsICdlcnJvciBzaG91bGQg
aGF2ZSAxIHBhcmFtZXRlcicpOwotCi0gICAgICBzdGFydENhbGxlZCA9IHRydWU7Ci0gICAgfQot
ICB9OwotCi0gIG5ldyBSZWFkYWJsZVN0cmVhbShzb3VyY2UpOwotICBhc3NlcnRfdHJ1ZShzdGFy
dENhbGxlZCk7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbSBzdGFydCBzaG91bGQgYmUgY2FsbGVkIHdp
dGggdGhlIHByb3BlciBwYXJhbWV0ZXJzJyk7Ci0KLXRlc3QoKCkgPT4gewotCi0gIGxldCBzdGFy
dENhbGxlZCA9IGZhbHNlOwotICBjb25zdCBzb3VyY2UgPSB7Ci0gICAgc3RhcnQoY29udHJvbGxl
cikgewotICAgICAgY29uc3QgcHJvcGVydGllcyA9IFsnY2xvc2UnLCAnY29uc3RydWN0b3InLCAn
ZGVzaXJlZFNpemUnLCAnZW5xdWV1ZScsICdlcnJvciddOwotICAgICAgYXNzZXJ0X2FycmF5X2Vx
dWFscyhPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhPYmplY3QuZ2V0UHJvdG90eXBlT2YoY29u
dHJvbGxlcikpLnNvcnQoKSwgcHJvcGVydGllcywKLSAgICAgICAgJ3Byb3RvdHlwZSBzaG91bGQg
aGF2ZSB0aGUgcmlnaHQgcHJvcGVydGllcycpOwotCi0gICAgICBjb250cm9sbGVyLnRlc3QgPSAn
JzsKLSAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMo
T2JqZWN0LmdldFByb3RvdHlwZU9mKGNvbnRyb2xsZXIpKS5zb3J0KCksIHByb3BlcnRpZXMsCi0g
ICAgICAgICdwcm90b3R5cGUgc2hvdWxkIHN0aWxsIGhhdmUgdGhlIHJpZ2h0IHByb3BlcnRpZXMn
KTsKLSAgICAgIGFzc2VydF9ub3RfZXF1YWxzKE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGNv
bnRyb2xsZXIpLmluZGV4T2YoJ3Rlc3QnKSwgLTEsCi0gICAgICAgICcidGVzdCIgc2hvdWxkIGJl
IGEgcHJvcGVydHkgb2YgdGhlIGNvbnRyb2xsZXInKTsKLQotICAgICAgc3RhcnRDYWxsZWQgPSB0
cnVlOwotICAgIH0KLSAgfTsKLQotICBuZXcgUmVhZGFibGVTdHJlYW0oc291cmNlKTsKLSAgYXNz
ZXJ0X3RydWUoc3RhcnRDYWxsZWQpOwotCi19LCAnUmVhZGFibGVTdHJlYW0gc3RhcnQgY29udHJv
bGxlciBwYXJhbWV0ZXIgc2hvdWxkIGJlIGV4dGVuc2libGUnKTsKLQotdGVzdCgoKSA9PiB7Ci0g
IChuZXcgUmVhZGFibGVTdHJlYW0oKSkuZ2V0UmVhZGVyKHVuZGVmaW5lZCk7Ci0gIChuZXcgUmVh
ZGFibGVTdHJlYW0oKSkuZ2V0UmVhZGVyKHt9KTsKLSAgKG5ldyBSZWFkYWJsZVN0cmVhbSgpKS5n
ZXRSZWFkZXIoeyBtb2RlOiB1bmRlZmluZWQsIG5vdG1vZGU6ICdpZ25vcmVkJyB9KTsKLSAgYXNz
ZXJ0X3Rocm93cyhuZXcgUmFuZ2VFcnJvcigpLCAoKSA9PiAobmV3IFJlYWRhYmxlU3RyZWFtKCkp
LmdldFJlYWRlcih7IG1vZGU6ICdwb3RhdG8nIH0pKTsKLX0sICdkZWZhdWx0IFJlYWRhYmxlU3Ry
ZWFtIGdldFJlYWRlcigpIHNob3VsZCBvbmx5IGFjY2VwdCBtb2RlOnVuZGVmaW5lZCcpOwotCi1w
cm9taXNlX3Rlc3QoKCkgPT4gewotCi0gIGZ1bmN0aW9uIFNpbXBsZVN0cmVhbVNvdXJjZSgpIHt9
Ci0gIGxldCByZXNvbHZlOwotICBjb25zdCBwcm9taXNlID0gbmV3IFByb21pc2UociA9PiByZXNv
bHZlID0gcik7Ci0gIFNpbXBsZVN0cmVhbVNvdXJjZS5wcm90b3R5cGUgPSB7Ci0gICAgc3RhcnQ6
IHJlc29sdmUKLSAgfTsKLQotICBuZXcgUmVhZGFibGVTdHJlYW0obmV3IFNpbXBsZVN0cmVhbVNv
dXJjZSgpKTsKLSAgcmV0dXJuIHByb21pc2U7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbSBzaG91bGQg
YmUgYWJsZSB0byBjYWxsIHN0YXJ0IG1ldGhvZCB3aXRoaW4gcHJvdG90eXBlIGNoYWluIG9mIGl0
cyBzb3VyY2UnKTsKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLQotICBjb25zdCBycyA9IG5ldyBS
ZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgcmV0dXJuIGRlbGF5KDUpLnRo
ZW4oKCkgPT4gewotICAgICAgICBjLmVucXVldWUoJ2EnKTsKLSAgICAgICAgYy5jbG9zZSgpOwot
ICAgICAgfSk7Ci0gICAgfQotICB9KTsKLQotICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFkZXIo
KTsKLSAgcmV0dXJuIHJlYWRlci5yZWFkKCkudGhlbihyID0+IHsKLSAgICBhc3NlcnRfb2JqZWN0
X2VxdWFscyhyLCB7IHZhbHVlOiAnYScsIGRvbmU6IGZhbHNlIH0sICd2YWx1ZSByZWFkIHNob3Vs
ZCBiZSB0aGUgb25lIGVucXVldWVkJyk7Ci0gICAgcmV0dXJuIHJlYWRlci5jbG9zZWQ7Ci0gIH0p
OwotCi19LCAnUmVhZGFibGVTdHJlYW0gc3RhcnQgc2hvdWxkIGJlIGFibGUgdG8gcmV0dXJuIGEg
cHJvbWlzZScpOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotCi0gIGNvbnN0IHRoZUVycm9yID0g
bmV3IEVycm9yKCdyZWplY3RlZCEnKTsKLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0o
ewotICAgIHN0YXJ0KCkgewotICAgICAgcmV0dXJuIGRlbGF5KDEpLnRoZW4oKCkgPT4gewotICAg
ICAgICB0aHJvdyB0aGVFcnJvcjsKLSAgICAgIH0pOwotICAgIH0KLSAgfSk7Ci0KLSAgcmV0dXJu
IHJzLmdldFJlYWRlcigpLmNsb3NlZC50aGVuKCgpID0+IHsKLSAgICBhc3NlcnRfdW5yZWFjaGVk
KCdjbG9zZWQgcHJvbWlzZSBzaG91bGQgYmUgcmVqZWN0ZWQnKTsKLSAgfSwgZSA9PiB7Ci0gICAg
YXNzZXJ0X2VxdWFscyhlLCB0aGVFcnJvciwgJ3Byb21pc2Ugc2hvdWxkIGJlIHJlamVjdGVkIHdp
dGggdGhlIHNhbWUgZXJyb3InKTsKLSAgfSk7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbSBzdGFydCBz
aG91bGQgYmUgYWJsZSB0byByZXR1cm4gYSBwcm9taXNlIGFuZCByZWplY3QgaXQnKTsKLQotcHJv
bWlzZV90ZXN0KCgpID0+IHsKLQotICBjb25zdCBvYmplY3RzID0gWwotICAgIHsgcG90YXRvOiAn
R2l2ZSBtZSBtb3JlIScgfSwKLSAgICAndGVzdCcsCi0gICAgMQotICBdOwotCi0gIGNvbnN0IHJz
ID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0gICAgICBmb3IgKGNvbnN0
IG8gb2Ygb2JqZWN0cykgewotICAgICAgICBjLmVucXVldWUobyk7Ci0gICAgICB9Ci0gICAgICBj
LmNsb3NlKCk7Ci0gICAgfQotICB9KTsKLQotICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFkZXIo
KTsKLQotICByZXR1cm4gUHJvbWlzZS5hbGwoW3JlYWRlci5yZWFkKCksIHJlYWRlci5yZWFkKCks
IHJlYWRlci5yZWFkKCksIHJlYWRlci5jbG9zZWRdKS50aGVuKHIgPT4gewotICAgIGFzc2VydF9v
YmplY3RfZXF1YWxzKHJbMF0sIHsgdmFsdWU6IG9iamVjdHNbMF0sIGRvbmU6IGZhbHNlIH0sICd2
YWx1ZSByZWFkIHNob3VsZCBiZSB0aGUgb25lIGVucXVldWVkJyk7Ci0gICAgYXNzZXJ0X29iamVj
dF9lcXVhbHMoclsxXSwgeyB2YWx1ZTogb2JqZWN0c1sxXSwgZG9uZTogZmFsc2UgfSwgJ3ZhbHVl
IHJlYWQgc2hvdWxkIGJlIHRoZSBvbmUgZW5xdWV1ZWQnKTsKLSAgICBhc3NlcnRfb2JqZWN0X2Vx
dWFscyhyWzJdLCB7IHZhbHVlOiBvYmplY3RzWzJdLCBkb25lOiBmYWxzZSB9LCAndmFsdWUgcmVh
ZCBzaG91bGQgYmUgdGhlIG9uZSBlbnF1ZXVlZCcpOwotICB9KTsKLQotfSwgJ1JlYWRhYmxlU3Ry
ZWFtIHNob3VsZCBiZSBhYmxlIHRvIGVucXVldWUgZGlmZmVyZW50IG9iamVjdHMuJyk7Ci0KLXBy
b21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoJ3B1bGwgZmFp
bHVyZScpOwotICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgcHVsbCgpIHsK
LSAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcik7Ci0gICAgfQotICB9KTsKLQotICBj
b25zdCByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKLQotICBsZXQgY2xvc2VkID0gZmFsc2U7Ci0g
IGxldCByZWFkID0gZmFsc2U7Ci0KLSAgcmV0dXJuIFByb21pc2UuYWxsKFsKLSAgICByZWFkZXIu
Y2xvc2VkLnRoZW4oKCkgPT4gewotICAgICAgYXNzZXJ0X3VucmVhY2hlZCgnY2xvc2VkIHNob3Vs
ZCBiZSByZWplY3RlZCcpOwotICAgIH0sIGUgPT4gewotICAgICAgY2xvc2VkID0gdHJ1ZTsKLSAg
ICAgIGFzc2VydF90cnVlKHJlYWQpOwotICAgICAgYXNzZXJ0X2VxdWFscyhlLCBlcnJvciwgJ2Ns
b3NlZCBzaG91bGQgYmUgcmVqZWN0ZWQgd2l0aCB0aGUgdGhyb3duIGVycm9yJyk7Ci0gICAgfSks
Ci0gICAgcmVhZGVyLnJlYWQoKS50aGVuKCgpID0+IHsKLSAgICAgIGFzc2VydF91bnJlYWNoZWQo
J3JlYWQoKSBzaG91bGQgYmUgcmVqZWN0ZWQnKTsKLSAgICB9LCBlID0+IHsKLSAgICAgIHJlYWQg
PSB0cnVlOwotICAgICAgYXNzZXJ0X2ZhbHNlKGNsb3NlZCk7Ci0gICAgICBhc3NlcnRfZXF1YWxz
KGUsIGVycm9yLCAncmVhZCgpIHNob3VsZCBiZSByZWplY3RlZCB3aXRoIHRoZSB0aHJvd24gZXJy
b3InKTsKLSAgICB9KQotICBdKTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtOiBpZiBwdWxsIHJlamVj
dHMsIGl0IHNob3VsZCBlcnJvciB0aGUgc3RyZWFtJyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7
Ci0KLSAgbGV0IHB1bGxDb3VudCA9IDA7Ci0gIGNvbnN0IHN0YXJ0UHJvbWlzZSA9IFByb21pc2Uu
cmVzb2x2ZSgpOwotCi0gIG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoKSB7Ci0gICAg
ICByZXR1cm4gc3RhcnRQcm9taXNlOwotICAgIH0sCi0gICAgcHVsbCgpIHsKLSAgICAgIHB1bGxD
b3VudCsrOwotICAgIH0KLSAgfSk7Ci0KLSAgcmV0dXJuIHN0YXJ0UHJvbWlzZS50aGVuKCgpID0+
IHsKLSAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMSwgJ3B1bGwgc2hvdWxkIGJlIGNhbGxl
ZCBvbmNlIHN0YXJ0IGZpbmlzaGVzJyk7Ci0gICAgcmV0dXJuIGRlbGF5KDEwKTsKLSAgfSkudGhl
bigoKSA9PiB7Ci0gICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDEsICdwdWxsIHNob3VsZCBi
ZSBjYWxsZWQgZXhhY3RseSBvbmNlJyk7Ci0gIH0pOwotCi19LCAnUmVhZGFibGVTdHJlYW06IHNo
b3VsZCBvbmx5IGNhbGwgcHVsbCBvbmNlIHVwb24gc3RhcnRpbmcgdGhlIHN0cmVhbScpOwotCi1w
cm9taXNlX3Rlc3QoKCkgPT4gewotCi0gIGxldCBwdWxsQ291bnQgPSAwOwotICBjb25zdCBzdGFy
dFByb21pc2UgPSBQcm9taXNlLnJlc29sdmUoKTsKLQotICBjb25zdCBycyA9IG5ldyBSZWFkYWJs
ZVN0cmVhbSh7Ci0gICAgc3RhcnQoKSB7Ci0gICAgICByZXR1cm4gc3RhcnRQcm9taXNlOwotICAg
IH0sCi0gICAgcHVsbChjKSB7Ci0gICAgICAvLyBEb24ndCBlbnF1ZXVlIGltbWVkaWF0ZWx5IGFm
dGVyIHN0YXJ0LiBXZSB3YW50IHRoZSBzdHJlYW0gdG8gYmUgZW1wdHkgd2hlbiB3ZSBjYWxsIC5y
ZWFkKCkgb24gaXQuCi0gICAgICBpZiAocHVsbENvdW50ID4gMCkgewotICAgICAgICBjLmVucXVl
dWUocHVsbENvdW50KTsKLSAgICAgIH0KLSAgICAgICsrcHVsbENvdW50OwotICAgIH0KLSAgfSk7
Ci0KLSAgcmV0dXJuIHN0YXJ0UHJvbWlzZS50aGVuKCgpID0+IHsKLSAgICBhc3NlcnRfZXF1YWxz
KHB1bGxDb3VudCwgMSwgJ3B1bGwgc2hvdWxkIGJlIGNhbGxlZCBvbmNlIHN0YXJ0IGZpbmlzaGVz
Jyk7Ci0gIH0pLnRoZW4oKCkgPT4gewotICAgIGNvbnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcigp
OwotICAgIGNvbnN0IHJlYWQgPSByZWFkZXIucmVhZCgpOwotICAgIGFzc2VydF9lcXVhbHMocHVs
bENvdW50LCAyLCAncHVsbCBzaG91bGQgYmUgY2FsbGVkIHdoZW4gcmVhZCBpcyBjYWxsZWQnKTsK
LSAgICByZXR1cm4gcmVhZDsKLSAgfSkudGhlbihyZXN1bHQgPT4gewotICAgIGFzc2VydF9lcXVh
bHMocHVsbENvdW50LCAzLCAncHVsbCBzaG91bGQgYmUgY2FsbGVkIGFnYWluIGluIHJlYWN0aW9u
IHRvIGNhbGxpbmcgcmVhZCcpOwotICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdCwgeyB2
YWx1ZTogMSwgZG9uZTogZmFsc2UgfSwgJ3RoZSByZXN1bHQgcmVhZCBzaG91bGQgYmUgdGhlIG9u
ZSBlbnF1ZXVlZCcpOwotICB9KTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtOiBzaG91bGQgY2FsbCBw
dWxsIHdoZW4gdHJ5aW5nIHRvIHJlYWQgZnJvbSBhIHN0YXJ0ZWQsIGVtcHR5IHN0cmVhbScpOwot
Ci1wcm9taXNlX3Rlc3QoKCkgPT4gewotCi0gIGxldCBwdWxsQ291bnQgPSAwOwotICBjb25zdCBz
dGFydFByb21pc2UgPSBQcm9taXNlLnJlc29sdmUoKTsKLQotICBjb25zdCBycyA9IG5ldyBSZWFk
YWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgYy5lbnF1ZXVlKCdhJyk7Ci0gICAg
ICByZXR1cm4gc3RhcnRQcm9taXNlOwotICAgIH0sCi0gICAgcHVsbCgpIHsKLSAgICAgIHB1bGxD
b3VudCsrOwotICAgIH0KLSAgfSk7Ci0KLSAgY29uc3QgcmVhZCA9IHJzLmdldFJlYWRlcigpLnJl
YWQoKTsKLSAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDAsICdjYWxsaW5nIHJlYWQoKSBzaG91
bGQgbm90IGNhdXNlIHB1bGwgdG8gYmUgY2FsbGVkIHlldCcpOwotCi0gIHJldHVybiBzdGFydFBy
b21pc2UudGhlbigoKSA9PiB7Ci0gICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDEsICdwdWxs
IHNob3VsZCBiZSBjYWxsZWQgb25jZSBzdGFydCBmaW5pc2hlcycpOwotICAgIHJldHVybiByZWFk
OwotICB9KS50aGVuKHIgPT4gewotICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHIsIHsgdmFsdWU6
ICdhJywgZG9uZTogZmFsc2UgfSwgJ2ZpcnN0IHJlYWQoKSBzaG91bGQgcmV0dXJuIGZpcnN0IGNo
dW5rJyk7Ci0gICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDEsICdwdWxsIHNob3VsZCBub3Qg
aGF2ZSBiZWVuIGNhbGxlZCBhZ2FpbicpOwotICAgIHJldHVybiBkZWxheSgxMCk7Ci0gIH0pLnRo
ZW4oKCkgPT4gewotICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAxLCAncHVsbCBzaG91bGQg
YmUgY2FsbGVkIGV4YWN0bHkgb25jZScpOwotICB9KTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtOiBz
aG91bGQgb25seSBjYWxsIHB1bGwgb25jZSBvbiBhIG5vbi1lbXB0eSBzdHJlYW0gcmVhZCBmcm9t
IGJlZm9yZSBzdGFydCBmdWxmaWxscycpOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotCi0gIGxl
dCBwdWxsQ291bnQgPSAwOwotICBjb25zdCBzdGFydFByb21pc2UgPSBQcm9taXNlLnJlc29sdmUo
KTsKLQotICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewot
ICAgICAgYy5lbnF1ZXVlKCdhJyk7Ci0gICAgICByZXR1cm4gc3RhcnRQcm9taXNlOwotICAgIH0s
Ci0gICAgcHVsbCgpIHsKLSAgICAgIHB1bGxDb3VudCsrOwotICAgIH0KLSAgfSk7Ci0KLSAgcmV0
dXJuIHN0YXJ0UHJvbWlzZS50aGVuKCgpID0+IHsKLSAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3Vu
dCwgMCwgJ3B1bGwgc2hvdWxkIG5vdCBiZSBjYWxsZWQgb25jZSBzdGFydCBmaW5pc2hlcywgc2lu
Y2UgdGhlIHF1ZXVlIGlzIGZ1bGwnKTsKLQotICAgIGNvbnN0IHJlYWQgPSBycy5nZXRSZWFkZXIo
KS5yZWFkKCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDEsICdjYWxsaW5nIHJlYWQo
KSBzaG91bGQgY2F1c2UgcHVsbCB0byBiZSBjYWxsZWQgaW1tZWRpYXRlbHknKTsKLSAgICByZXR1
cm4gcmVhZDsKLSAgfSkudGhlbihyID0+IHsKLSAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyLCB7
IHZhbHVlOiAnYScsIGRvbmU6IGZhbHNlIH0sICdmaXJzdCByZWFkKCkgc2hvdWxkIHJldHVybiBm
aXJzdCBjaHVuaycpOwotICAgIHJldHVybiBkZWxheSgxMCk7Ci0gIH0pLnRoZW4oKCkgPT4gewot
ICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAxLCAncHVsbCBzaG91bGQgYmUgY2FsbGVkIGV4
YWN0bHkgb25jZScpOwotICB9KTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtOiBzaG91bGQgb25seSBj
YWxsIHB1bGwgb25jZSBvbiBhIG5vbi1lbXB0eSBzdHJlYW0gcmVhZCBmcm9tIGFmdGVyIHN0YXJ0
IGZ1bGZpbGxzJyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgbGV0IHB1bGxDb3VudCA9
IDA7Ci0gIGxldCBjb250cm9sbGVyOwotICBjb25zdCBzdGFydFByb21pc2UgPSBQcm9taXNlLnJl
c29sdmUoKTsKLQotICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQo
YykgewotICAgICAgY29udHJvbGxlciA9IGM7Ci0gICAgICByZXR1cm4gc3RhcnRQcm9taXNlOwot
ICAgIH0sCi0gICAgcHVsbCgpIHsKLSAgICAgICsrcHVsbENvdW50OwotICAgIH0KLSAgfSk7Ci0K
LSAgY29uc3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7Ci0gIHJldHVybiBzdGFydFByb21pc2Uu
dGhlbigoKSA9PiB7Ci0gICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDEsICdwdWxsIHNob3Vs
ZCBoYXZlIGJlZW4gY2FsbGVkIG9uY2UgYnkgdGhlIHRpbWUgdGhlIHN0cmVhbSBzdGFydHMnKTsK
LQotICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYScpOwotICAgIGFzc2VydF9lcXVhbHMocHVsbENv
dW50LCAxLCAncHVsbCBzaG91bGQgbm90IGhhdmUgYmVlbiBjYWxsZWQgYWdhaW4gYWZ0ZXIgZW5x
dWV1ZScpOwotCi0gICAgcmV0dXJuIHJlYWRlci5yZWFkKCk7Ci0gIH0pLnRoZW4oKCkgPT4gewot
ICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAyLCAncHVsbCBzaG91bGQgaGF2ZSBiZWVuIGNh
bGxlZCBhZ2FpbiBhZnRlciByZWFkJyk7Ci0KLSAgICByZXR1cm4gZGVsYXkoMTApOwotICB9KS50
aGVuKCgpID0+IHsKLSAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMiwgJ3B1bGwgc2hvdWxk
IGJlIGNhbGxlZCBleGFjdGx5IHR3aWNlJyk7Ci0gIH0pOwotfSwgJ1JlYWRhYmxlU3RyZWFtOiBz
aG91bGQgY2FsbCBwdWxsIGluIHJlYWN0aW9uIHRvIHJlYWQoKWluZyB0aGUgbGFzdCBjaHVuaywg
aWYgbm90IGRyYWluaW5nJyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgbGV0IHB1bGxD
b3VudCA9IDA7Ci0gIGxldCBjb250cm9sbGVyOwotICBjb25zdCBzdGFydFByb21pc2UgPSBQcm9t
aXNlLnJlc29sdmUoKTsKLQotICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAg
c3RhcnQoYykgewotICAgICAgY29udHJvbGxlciA9IGM7Ci0gICAgICByZXR1cm4gc3RhcnRQcm9t
aXNlOwotICAgIH0sCi0gICAgcHVsbCgpIHsKLSAgICAgICsrcHVsbENvdW50OwotICAgIH0KLSAg
fSk7Ci0KLSAgY29uc3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7Ci0KLSAgcmV0dXJuIHN0YXJ0
UHJvbWlzZS50aGVuKCgpID0+IHsKLSAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMSwgJ3B1
bGwgc2hvdWxkIGhhdmUgYmVlbiBjYWxsZWQgb25jZSBieSB0aGUgdGltZSB0aGUgc3RyZWFtIHN0
YXJ0cycpOwotCi0gICAgY29udHJvbGxlci5lbnF1ZXVlKCdhJyk7Ci0gICAgYXNzZXJ0X2VxdWFs
cyhwdWxsQ291bnQsIDEsICdwdWxsIHNob3VsZCBub3QgaGF2ZSBiZWVuIGNhbGxlZCBhZ2FpbiBh
ZnRlciBlbnF1ZXVlJyk7Ci0KLSAgICBjb250cm9sbGVyLmNsb3NlKCk7Ci0KLSAgICByZXR1cm4g
cmVhZGVyLnJlYWQoKTsKLSAgfSkudGhlbigoKSA9PiB7Ci0gICAgYXNzZXJ0X2VxdWFscyhwdWxs
Q291bnQsIDEsICdwdWxsIHNob3VsZCBub3QgaGF2ZSBiZWVuIGNhbGxlZCBhIHNlY29uZCB0aW1l
IGFmdGVyIHJlYWQnKTsKLQotICAgIHJldHVybiBkZWxheSgxMCk7Ci0gIH0pLnRoZW4oKCkgPT4g
ewotICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAxLCAncHVsbCBzaG91bGQgYmUgY2FsbGVk
IGV4YWN0bHkgb25jZScpOwotICB9KTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtOiBzaG91bGQgbm90
IGNhbGwgcHVsbCgpIGluIHJlYWN0aW9uIHRvIHJlYWQoKWluZyB0aGUgbGFzdCBjaHVuaywgaWYg
ZHJhaW5pbmcnKTsKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLQotICBsZXQgcmVzb2x2ZTsKLSAg
bGV0IHJldHVybmVkUHJvbWlzZTsKLSAgbGV0IHRpbWVzQ2FsbGVkID0gMDsKLSAgY29uc3Qgc3Rh
cnRQcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKCk7Ci0KLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFi
bGVTdHJlYW0oewotICAgIHN0YXJ0KCkgewotICAgICAgcmV0dXJuIHN0YXJ0UHJvbWlzZTsKLSAg
ICB9LAotICAgIHB1bGwoYykgewotICAgICAgYy5lbnF1ZXVlKCsrdGltZXNDYWxsZWQpOwotICAg
ICAgcmV0dXJuZWRQcm9taXNlID0gbmV3IFByb21pc2UociA9PiByZXNvbHZlID0gcik7Ci0gICAg
ICByZXR1cm4gcmV0dXJuZWRQcm9taXNlOwotICAgIH0KLSAgfSk7Ci0gIGNvbnN0IHJlYWRlciA9
IHJzLmdldFJlYWRlcigpOwotCi0gIHJldHVybiBzdGFydFByb21pc2UudGhlbigoKSA9PiB7Ci0g
ICAgcmV0dXJuIHJlYWRlci5yZWFkKCk7Ci0gIH0pLnRoZW4ocmVzdWx0MSA9PiB7Ci0gICAgYXNz
ZXJ0X2VxdWFscyh0aW1lc0NhbGxlZCwgMSwKLSAgICAgICdwdWxsIHNob3VsZCBoYXZlIGJlZW4g
Y2FsbGVkIG9uY2UgYWZ0ZXIgc3RhcnQsIGJ1dCBub3QgeWV0IGhhdmUgYmVlbiBjYWxsZWQgYSBz
ZWNvbmQgdGltZScpOwotICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdDEsIHsgdmFsdWU6
IDEsIGRvbmU6IGZhbHNlIH0sICdyZWFkKCkgc2hvdWxkIGZ1bGZpbGwgd2l0aCB0aGUgZW5xdWV1
ZWQgdmFsdWUnKTsKLQotICAgIHJldHVybiBkZWxheSgxMCk7Ci0gIH0pLnRoZW4oKCkgPT4gewot
ICAgIGFzc2VydF9lcXVhbHModGltZXNDYWxsZWQsIDEsICdhZnRlciAxMCBtcywgcHVsbCBzaG91
bGQgc3RpbGwgb25seSBoYXZlIGJlZW4gY2FsbGVkIG9uY2UnKTsKLQotICAgIHJlc29sdmUoKTsK
LSAgICByZXR1cm4gcmV0dXJuZWRQcm9taXNlOwotICB9KS50aGVuKCgpID0+IHsKLSAgICBhc3Nl
cnRfZXF1YWxzKHRpbWVzQ2FsbGVkLCAyLAotICAgICAgJ2FmdGVyIHRoZSBwcm9taXNlIHJldHVy
bmVkIGJ5IHB1bGwgaXMgZnVsZmlsbGVkLCBwdWxsIHNob3VsZCBiZSBjYWxsZWQgYSBzZWNvbmQg
dGltZScpOwotICB9KTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtOiBzaG91bGQgbm90IGNhbGwgcHVs
bCB1bnRpbCB0aGUgcHJldmlvdXMgcHVsbCBjYWxsXCdzIHByb21pc2UgZnVsZmlsbHMnKTsKLQot
cHJvbWlzZV90ZXN0KCgpID0+IHsKLQotICBsZXQgdGltZXNDYWxsZWQgPSAwOwotICBjb25zdCBz
dGFydFByb21pc2UgPSBQcm9taXNlLnJlc29sdmUoKTsKLQotICBjb25zdCBycyA9IG5ldyBSZWFk
YWJsZVN0cmVhbSgKLSAgICB7Ci0gICAgICBzdGFydChjKSB7Ci0gICAgICAgIGMuZW5xdWV1ZSgn
YScpOwotICAgICAgICBjLmVucXVldWUoJ2InKTsKLSAgICAgICAgYy5lbnF1ZXVlKCdjJyk7Ci0g
ICAgICAgIHJldHVybiBzdGFydFByb21pc2U7Ci0gICAgICB9LAotICAgICAgcHVsbCgpIHsKLSAg
ICAgICAgKyt0aW1lc0NhbGxlZDsKLSAgICAgIH0KLSAgICB9LAotICAgIHsKLSAgICAgIHNpemUo
KSB7Ci0gICAgICAgIHJldHVybiAxOwotICAgICAgfSwKLSAgICAgIGhpZ2hXYXRlck1hcms6IElu
ZmluaXR5Ci0gICAgfQotICApOwotICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKLQot
ICByZXR1cm4gc3RhcnRQcm9taXNlLnRoZW4oKCkgPT4gewotICAgIHJldHVybiByZWFkZXIucmVh
ZCgpOwotICB9KS50aGVuKHJlc3VsdDEgPT4gewotICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJl
c3VsdDEsIHsgdmFsdWU6ICdhJywgZG9uZTogZmFsc2UgfSwgJ2ZpcnN0IGNodW5rIHNob3VsZCBi
ZSBhcyBleHBlY3RlZCcpOwotCi0gICAgcmV0dXJuIHJlYWRlci5yZWFkKCk7Ci0gIH0pLnRoZW4o
cmVzdWx0MiA9PiB7Ci0gICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0MiwgeyB2YWx1ZTog
J2InLCBkb25lOiBmYWxzZSB9LCAnc2Vjb25kIGNodW5rIHNob3VsZCBiZSBhcyBleHBlY3RlZCcp
OwotCi0gICAgcmV0dXJuIHJlYWRlci5yZWFkKCk7Ci0gIH0pLnRoZW4ocmVzdWx0MyA9PiB7Ci0g
ICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0MywgeyB2YWx1ZTogJ2MnLCBkb25lOiBmYWxz
ZSB9LCAndGhpcmQgY2h1bmsgc2hvdWxkIGJlIGFzIGV4cGVjdGVkJyk7Ci0KLSAgICByZXR1cm4g
ZGVsYXkoMTApOwotICB9KS50aGVuKCgpID0+IHsKLSAgICAvLyBPbmNlIGZvciBhZnRlciBzdGFy
dCwgYW5kIG9uY2UgZm9yIGV2ZXJ5IHJlYWQuCi0gICAgYXNzZXJ0X2VxdWFscyh0aW1lc0NhbGxl
ZCwgNCwgJ3B1bGwoKSBzaG91bGQgYmUgY2FsbGVkIGV4YWN0bHkgZm91ciB0aW1lcycpOwotICB9
KTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtOiBzaG91bGQgcHVsbCBhZnRlciBzdGFydCwgYW5kIGFm
dGVyIGV2ZXJ5IHJlYWQnKTsKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLQotICBsZXQgdGltZXND
YWxsZWQgPSAwOwotICBjb25zdCBzdGFydFByb21pc2UgPSBQcm9taXNlLnJlc29sdmUoKTsKLQot
ICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAg
Yy5lbnF1ZXVlKCdhJyk7Ci0gICAgICBjLmNsb3NlKCk7Ci0gICAgICByZXR1cm4gc3RhcnRQcm9t
aXNlOwotICAgIH0sCi0gICAgcHVsbCgpIHsKLSAgICAgICsrdGltZXNDYWxsZWQ7Ci0gICAgfQot
ICB9KTsKLQotICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKLSAgcmV0dXJuIHN0YXJ0
UHJvbWlzZS50aGVuKCgpID0+IHsKLSAgICBhc3NlcnRfZXF1YWxzKHRpbWVzQ2FsbGVkLCAwLCAn
YWZ0ZXIgc3RhcnQgZmluaXNoZXMsIHB1bGwgc2hvdWxkIG5vdCBoYXZlIGJlZW4gY2FsbGVkJyk7
Ci0KLSAgICByZXR1cm4gcmVhZGVyLnJlYWQoKTsKLSAgfSkudGhlbigoKSA9PiB7Ci0gICAgYXNz
ZXJ0X2VxdWFscyh0aW1lc0NhbGxlZCwgMCwgJ3JlYWRpbmcgc2hvdWxkIG5vdCBoYXZlIHRyaWdn
ZXJlZCBhIHB1bGwgY2FsbCcpOwotCi0gICAgcmV0dXJuIHJlYWRlci5jbG9zZWQ7Ci0gIH0pLnRo
ZW4oKCkgPT4gewotICAgIGFzc2VydF9lcXVhbHModGltZXNDYWxsZWQsIDAsICdzdHJlYW0gc2hv
dWxkIGhhdmUgY2xvc2VkIHdpdGggc3RpbGwgbm8gY2FsbHMgdG8gcHVsbCcpOwotICB9KTsKLQot
fSwgJ1JlYWRhYmxlU3RyZWFtOiBzaG91bGQgbm90IGNhbGwgcHVsbCBhZnRlciBzdGFydCBpZiB0
aGUgc3RyZWFtIGlzIG5vdyBjbG9zZWQnKTsKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLQotICBs
ZXQgdGltZXNDYWxsZWQgPSAwOwotICBsZXQgcmVzb2x2ZTsKLSAgY29uc3QgcmVhZHkgPSBuZXcg
UHJvbWlzZShyID0+IHJlc29sdmUgPSByKTsKLQotICBuZXcgUmVhZGFibGVTdHJlYW0oCi0gICAg
ewotICAgICAgc3RhcnQoKSB7fSwKLSAgICAgIHB1bGwoYykgewotICAgICAgICBjLmVucXVldWUo
Kyt0aW1lc0NhbGxlZCk7Ci0KLSAgICAgICAgaWYgKHRpbWVzQ2FsbGVkID09PSA0KSB7Ci0gICAg
ICAgICAgcmVzb2x2ZSgpOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfSwKLSAgICB7Ci0gICAg
ICBzaXplKCkgewotICAgICAgICByZXR1cm4gMTsKLSAgICAgIH0sCi0gICAgICBoaWdoV2F0ZXJN
YXJrOiA0Ci0gICAgfQotICApOwotCi0gIHJldHVybiByZWFkeS50aGVuKCgpID0+IHsKLSAgICAv
LyBhZnRlciBzdGFydDogc2l6ZSA9IDAsIHB1bGwoKQotICAgIC8vIGFmdGVyIGVucXVldWUoMSk6
IHNpemUgPSAxLCBwdWxsKCkKLSAgICAvLyBhZnRlciBlbnF1ZXVlKDIpOiBzaXplID0gMiwgcHVs
bCgpCi0gICAgLy8gYWZ0ZXIgZW5xdWV1ZSgzKTogc2l6ZSA9IDMsIHB1bGwoKQotICAgIC8vIGFm
dGVyIGVucXVldWUoNCk6IHNpemUgPSA0LCBkbyBub3QgcHVsbAotICAgIGFzc2VydF9lcXVhbHMo
dGltZXNDYWxsZWQsIDQsICdwdWxsKCkgc2hvdWxkIGhhdmUgYmVlbiBjYWxsZWQgZm91ciB0aW1l
cycpOwotICB9KTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtOiBzaG91bGQgY2FsbCBwdWxsIGFmdGVy
IGVucXVldWVpbmcgZnJvbSBpbnNpZGUgcHVsbCAod2l0aCBubyByZWFkIHJlcXVlc3RzKSwgaWYg
c3RyYXRlZ3kgYWxsb3dzJyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgbGV0IHB1bGxD
YWxsZWQgPSBmYWxzZTsKLQotICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAg
cHVsbChjKSB7Ci0gICAgICBwdWxsQ2FsbGVkID0gdHJ1ZTsKLSAgICAgIGMuY2xvc2UoKTsKLSAg
ICB9Ci0gIH0pOwotCi0gIGNvbnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcigpOwotICByZXR1cm4g
cmVhZGVyLmNsb3NlZC50aGVuKCgpID0+IHsKLSAgICBhc3NlcnRfdHJ1ZShwdWxsQ2FsbGVkKTsK
LSAgfSk7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbSBwdWxsIHNob3VsZCBiZSBhYmxlIHRvIGNsb3Nl
IGEgc3RyZWFtLicpOwotCi1wcm9taXNlX3Rlc3QodCA9PiB7Ci0KLSAgY29uc3QgY29udHJvbGxl
ckVycm9yID0geyBuYW1lOiAnY29udHJvbGxlciBlcnJvcicgfTsKLQotICBjb25zdCBycyA9IG5l
dyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgcHVsbChjKSB7Ci0gICAgICBjLmVycm9yKGNvbnRyb2xs
ZXJFcnJvcik7Ci0gICAgfQotICB9KTsKLQotICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHQsIGNv
bnRyb2xsZXJFcnJvciwgcnMuZ2V0UmVhZGVyKCkuY2xvc2VkKTsKLQotfSwgJ1JlYWRhYmxlU3Ry
ZWFtIHB1bGwgc2hvdWxkIGJlIGFibGUgdG8gZXJyb3IgYSBzdHJlYW0uJyk7Ci0KLXByb21pc2Vf
dGVzdCh0ID0+IHsKLQotICBjb25zdCBjb250cm9sbGVyRXJyb3IgPSB7IG5hbWU6ICdjb250cm9s
bGVyIGVycm9yJyB9OwotICBjb25zdCB0aHJvd25FcnJvciA9IHsgbmFtZTogJ3Rocm93biBlcnJv
cicgfTsKLQotICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgcHVsbChjKSB7
Ci0gICAgICBjLmVycm9yKGNvbnRyb2xsZXJFcnJvcik7Ci0gICAgICB0aHJvdyB0aHJvd25FcnJv
cjsKLSAgICB9Ci0gIH0pOwotCi0gIHJldHVybiBwcm9taXNlX3JlamVjdHModCwgY29udHJvbGxl
ckVycm9yLCBycy5nZXRSZWFkZXIoKS5jbG9zZWQpOwotCi19LCAnUmVhZGFibGVTdHJlYW0gcHVs
bCBzaG91bGQgYmUgYWJsZSB0byBlcnJvciBhIHN0cmVhbSBhbmQgdGhyb3cuJyk7Ci0KLXRlc3Qo
KCkgPT4gewotCi0gIGxldCBzdGFydENhbGxlZCA9IGZhbHNlOwotCi0gIG5ldyBSZWFkYWJsZVN0
cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgYXNzZXJ0X2VxdWFscyhjLmVucXVldWUoJ2En
KSwgdW5kZWZpbmVkLCAndGhlIGZpcnN0IGVucXVldWUgc2hvdWxkIHJldHVybiB1bmRlZmluZWQn
KTsKLSAgICAgIGMuY2xvc2UoKTsKLQotICAgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9y
KCksICgpID0+IGMuZW5xdWV1ZSgnYicpLCAnZW5xdWV1ZSBhZnRlciBjbG9zZSBzaG91bGQgdGhy
b3cgYSBUeXBlRXJyb3InKTsKLSAgICAgIHN0YXJ0Q2FsbGVkID0gdHJ1ZTsKLSAgICB9Ci0gIH0p
OwotCi0gIGFzc2VydF90cnVlKHN0YXJ0Q2FsbGVkKTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtOiBl
bnF1ZXVlIHNob3VsZCB0aHJvdyB3aGVuIHRoZSBzdHJlYW0gaXMgcmVhZGFibGUgYnV0IGRyYWlu
aW5nJyk7Ci0KLXRlc3QoKCkgPT4gewotCi0gIGxldCBzdGFydENhbGxlZCA9IGZhbHNlOwotCi0g
IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgYy5jbG9zZSgpOwot
Ci0gICAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gYy5lbnF1ZXVlKCdh
JyksICdlbnF1ZXVlIGFmdGVyIGNsb3NlIHNob3VsZCB0aHJvdyBhIFR5cGVFcnJvcicpOwotICAg
ICAgc3RhcnRDYWxsZWQgPSB0cnVlOwotICAgIH0KLSAgfSk7Ci0KLSAgYXNzZXJ0X3RydWUoc3Rh
cnRDYWxsZWQpOwotCi19LCAnUmVhZGFibGVTdHJlYW06IGVucXVldWUgc2hvdWxkIHRocm93IHdo
ZW4gdGhlIHN0cmVhbSBpcyBjbG9zZWQnKTsKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLQotICBs
ZXQgc3RhcnRDYWxsZWQgPSAwOwotICBsZXQgcHVsbENhbGxlZCA9IDA7Ci0gIGxldCBjYW5jZWxD
YWxsZWQgPSAwOwotCi0gIC8qIGVzbGludC1kaXNhYmxlIG5vLXVzZS1iZWZvcmUtZGVmaW5lICov
Ci0gIGNsYXNzIFNvdXJjZSB7Ci0gICAgc3RhcnQoYykgewotICAgICAgc3RhcnRDYWxsZWQrKzsK
LSAgICAgIGFzc2VydF9lcXVhbHModGhpcywgdGhlU291cmNlLCAnc3RhcnQoKSBzaG91bGQgYmUg
Y2FsbGVkIHdpdGggdGhlIGNvcnJlY3QgdGhpcycpOwotICAgICAgYy5lbnF1ZXVlKCdhJyk7Ci0g
ICAgfQotCi0gICAgcHVsbCgpIHsKLSAgICAgIHB1bGxDYWxsZWQrKzsKLSAgICAgIGFzc2VydF9l
cXVhbHModGhpcywgdGhlU291cmNlLCAncHVsbCgpIHNob3VsZCBiZSBjYWxsZWQgd2l0aCB0aGUg
Y29ycmVjdCB0aGlzJyk7Ci0gICAgfQotCi0gICAgY2FuY2VsKCkgewotICAgICAgY2FuY2VsQ2Fs
bGVkKys7Ci0gICAgICBhc3NlcnRfZXF1YWxzKHRoaXMsIHRoZVNvdXJjZSwgJ2NhbmNlbCgpIHNo
b3VsZCBiZSBjYWxsZWQgd2l0aCB0aGUgY29ycmVjdCB0aGlzJyk7Ci0gICAgfQotICB9Ci0gIC8q
IGVzbGludC1lbmFibGUgbm8tdXNlLWJlZm9yZS1kZWZpbmUgKi8KLQotICBjb25zdCB0aGVTb3Vy
Y2UgPSBuZXcgU291cmNlKCk7Ci0gIHRoZVNvdXJjZS5kZWJ1Z05hbWUgPSAndGhlIHNvdXJjZSBv
YmplY3QgcGFzc2VkIHRvIHRoZSBjb25zdHJ1Y3Rvcic7IC8vIG1ha2VzIHRlc3QgZmFpbHVyZXMg
ZWFzaWVyIHRvIGRpYWdub3NlCi0KLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0odGhl
U291cmNlKTsKLSAgY29uc3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7Ci0KLSAgcmV0dXJuIHJl
YWRlci5yZWFkKCkudGhlbigoKSA9PiB7Ci0gICAgcmVhZGVyLnJlbGVhc2VMb2NrKCk7Ci0gICAg
cnMuY2FuY2VsKCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhzdGFydENhbGxlZCwgMSk7Ci0gICAgYXNz
ZXJ0X2VxdWFscyhwdWxsQ2FsbGVkLCAxKTsKLSAgICBhc3NlcnRfZXF1YWxzKGNhbmNlbENhbGxl
ZCwgMSk7Ci0gICAgcmV0dXJuIHJzLmdldFJlYWRlcigpLmNsb3NlZDsKLSAgfSk7Ci0KLX0sICdS
ZWFkYWJsZVN0cmVhbTogc2hvdWxkIGNhbGwgdW5kZXJseWluZyBzb3VyY2UgbWV0aG9kcyBhcyBt
ZXRob2RzJyk7Ci0KLXRlc3QoKCkgPT4gewotICBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0
YXJ0KGMpIHsKLSAgICAgIGFzc2VydF9lcXVhbHMoYy5kZXNpcmVkU2l6ZSwgMTAsICdkZXNpcmVk
U2l6ZSBtdXN0IHN0YXJ0IGF0IGhpZ2hXYXRlck1hcmsnKTsKLSAgICAgIGMuY2xvc2UoKTsKLSAg
ICAgIGFzc2VydF9lcXVhbHMoYy5kZXNpcmVkU2l6ZSwgMCwgJ2FmdGVyIGNsb3NpbmcsIGRlc2ly
ZWRTaXplIG11c3QgYmUgMCcpOwotICAgIH0KLSAgfSwgewotICAgIGhpZ2hXYXRlck1hcms6IDEw
Ci0gIH0pOwotfSwgJ1JlYWRhYmxlU3RyZWFtOiBkZXNpcmVkU2l6ZSB3aGVuIGNsb3NlZCcpOwot
Ci10ZXN0KCgpID0+IHsKLSAgbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0g
ICAgICBhc3NlcnRfZXF1YWxzKGMuZGVzaXJlZFNpemUsIDEwLCAnZGVzaXJlZFNpemUgbXVzdCBz
dGFydCBhdCBoaWdoV2F0ZXJNYXJrJyk7Ci0gICAgICBjLmVycm9yKCk7Ci0gICAgICBhc3NlcnRf
ZXF1YWxzKGMuZGVzaXJlZFNpemUsIG51bGwsICdhZnRlciBlcnJvcmluZywgZGVzaXJlZFNpemUg
bXVzdCBiZSBudWxsJyk7Ci0gICAgfQotICB9LCB7Ci0gICAgaGlnaFdhdGVyTWFyazogMTAKLSAg
fSk7Ci19LCAnUmVhZGFibGVTdHJlYW06IGRlc2lyZWRTaXplIHdoZW4gZXJyb3JlZCcpOwotCi10
ZXN0KCgpID0+IHsKLQotICBsZXQgc3RhcnRDYWxsZWQgPSBmYWxzZTsKLSAgbmV3IFJlYWRhYmxl
U3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0gICAgICBhc3NlcnRfZXF1YWxzKGMuZGVzaXJlZFNp
emUsIDEpOwotICAgICAgYy5lbnF1ZXVlKCdhJyk7Ci0gICAgICBhc3NlcnRfZXF1YWxzKGMuZGVz
aXJlZFNpemUsIDApOwotICAgICAgYy5lbnF1ZXVlKCdiJyk7Ci0gICAgICBhc3NlcnRfZXF1YWxz
KGMuZGVzaXJlZFNpemUsIC0xKTsKLSAgICAgIGMuZW5xdWV1ZSgnYycpOwotICAgICAgYXNzZXJ0
X2VxdWFscyhjLmRlc2lyZWRTaXplLCAtMik7Ci0gICAgICBjLmVucXVldWUoJ2QnKTsKLSAgICAg
IGFzc2VydF9lcXVhbHMoYy5kZXNpcmVkU2l6ZSwgLTMpOwotICAgICAgYy5lbnF1ZXVlKCdlJyk7
Ci0gICAgICBzdGFydENhbGxlZCA9IHRydWU7Ci0gICAgfQotICB9KTsKLQotICBhc3NlcnRfdHJ1
ZShzdGFydENhbGxlZCk7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbSBzdHJhdGVnaWVzOiB0aGUgZGVm
YXVsdCBzdHJhdGVneSBzaG91bGQgZ2l2ZSBkZXNpcmVkU2l6ZSBvZiAxIHRvIHN0YXJ0LCBkZWNy
ZWFzaW5nIGJ5IDEgcGVyIGVucXVldWUnKTsKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLQotICBs
ZXQgY29udHJvbGxlcjsKLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0
YXJ0KGMpIHsKLSAgICAgIGNvbnRyb2xsZXIgPSBjOwotICAgIH0KLSAgfSk7Ci0gIGNvbnN0IHJl
YWRlciA9IHJzLmdldFJlYWRlcigpOwotCi0gIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNp
cmVkU2l6ZSwgMSwgJ2Rlc2lyZWRTaXplIHNob3VsZCBzdGFydCBhdCAxJyk7Ci0gIGNvbnRyb2xs
ZXIuZW5xdWV1ZSgnYScpOwotICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUs
IDAsICdkZXNpcmVkU2l6ZSBzaG91bGQgZGVjcmVhc2UgdG8gMCBhZnRlciBmaXJzdCBlbnF1ZXVl
Jyk7Ci0KLSAgcmV0dXJuIHJlYWRlci5yZWFkKCkudGhlbihyZXN1bHQxID0+IHsKLSAgICBhc3Nl
cnRfb2JqZWN0X2VxdWFscyhyZXN1bHQxLCB7IHZhbHVlOiAnYScsIGRvbmU6IGZhbHNlIH0sICdm
aXJzdCBjaHVuayByZWFkIHNob3VsZCBiZSBjb3JyZWN0Jyk7Ci0KLSAgICBhc3NlcnRfZXF1YWxz
KGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDEsICdkZXNpcmVkU2l6ZSBzaG91bGQgZ28gdXAgdG8g
MSBhZnRlciB0aGUgZmlyc3QgcmVhZCcpOwotICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYicpOwot
ICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMCwgJ2Rlc2lyZWRTaXpl
IHNob3VsZCBnbyBkb3duIHRvIDAgYWZ0ZXIgdGhlIHNlY29uZCBlbnF1ZXVlJyk7Ci0KLSAgICBy
ZXR1cm4gcmVhZGVyLnJlYWQoKTsKLSAgfSkudGhlbihyZXN1bHQyID0+IHsKLSAgICBhc3NlcnRf
b2JqZWN0X2VxdWFscyhyZXN1bHQyLCB7IHZhbHVlOiAnYicsIGRvbmU6IGZhbHNlIH0sICdzZWNv
bmQgY2h1bmsgcmVhZCBzaG91bGQgYmUgY29ycmVjdCcpOwotCi0gICAgYXNzZXJ0X2VxdWFscyhj
b250cm9sbGVyLmRlc2lyZWRTaXplLCAxLCAnZGVzaXJlZFNpemUgc2hvdWxkIGdvIHVwIHRvIDEg
YWZ0ZXIgdGhlIHNlY29uZCByZWFkJyk7Ci0gICAgY29udHJvbGxlci5lbnF1ZXVlKCdjJyk7Ci0g
ICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAwLCAnZGVzaXJlZFNpemUg
c2hvdWxkIGdvIGRvd24gdG8gMCBhZnRlciB0aGUgdGhpcmQgZW5xdWV1ZScpOwotCi0gICAgcmV0
dXJuIHJlYWRlci5yZWFkKCk7Ci0gIH0pLnRoZW4ocmVzdWx0MyA9PiB7Ci0gICAgYXNzZXJ0X29i
amVjdF9lcXVhbHMocmVzdWx0MywgeyB2YWx1ZTogJ2MnLCBkb25lOiBmYWxzZSB9LCAndGhpcmQg
Y2h1bmsgcmVhZCBzaG91bGQgYmUgY29ycmVjdCcpOwotCi0gICAgYXNzZXJ0X2VxdWFscyhjb250
cm9sbGVyLmRlc2lyZWRTaXplLCAxLCAnZGVzaXJlZFNpemUgc2hvdWxkIGdvIHVwIHRvIDEgYWZ0
ZXIgdGhlIHRoaXJkIHJlYWQnKTsKLSAgICBjb250cm9sbGVyLmVucXVldWUoJ2QnKTsKLSAgICBh
c3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDAsICdkZXNpcmVkU2l6ZSBzaG91
bGQgZ28gZG93biB0byAwIGFmdGVyIHRoZSBmb3VydGggZW5xdWV1ZScpOwotICB9KTsKLQotfSwg
J1JlYWRhYmxlU3RyZWFtIHN0cmF0ZWdpZXM6IHRoZSBkZWZhdWx0IHN0cmF0ZWd5IHNob3VsZCBj
b250aW51ZSBnaXZpbmcgZGVzaXJlZFNpemUgb2YgMSBpZiB0aGUgY2h1bmtzIGFyZSByZWFkIGlt
bWVkaWF0ZWx5Jyk7Ci0KLXByb21pc2VfdGVzdCh0ID0+IHsKLQotICBjb25zdCByYW5kb21Tb3Vy
Y2UgPSBuZXcgUmFuZG9tUHVzaFNvdXJjZSg4KTsKLQotICBjb25zdCBycyA9IG5ldyBSZWFkYWJs
ZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgYywg
J29iamVjdCcsICdjIHNob3VsZCBiZSBhbiBvYmplY3QgaW4gc3RhcnQnKTsKLSAgICAgIGFzc2Vy
dF9lcXVhbHModHlwZW9mIGMuZW5xdWV1ZSwgJ2Z1bmN0aW9uJywgJ2VucXVldWUgc2hvdWxkIGJl
IGEgZnVuY3Rpb24gaW4gc3RhcnQnKTsKLSAgICAgIGFzc2VydF9lcXVhbHModHlwZW9mIGMuY2xv
c2UsICdmdW5jdGlvbicsICdjbG9zZSBzaG91bGQgYmUgYSBmdW5jdGlvbiBpbiBzdGFydCcpOwot
ICAgICAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgYy5lcnJvciwgJ2Z1bmN0aW9uJywgJ2Vycm9yIHNo
b3VsZCBiZSBhIGZ1bmN0aW9uIGluIHN0YXJ0Jyk7Ci0KLSAgICAgIHJhbmRvbVNvdXJjZS5vbmRh
dGEgPSB0LnN0ZXBfZnVuYyhjaHVuayA9PiB7Ci0gICAgICAgIGlmICghYy5lbnF1ZXVlKGNodW5r
KSA8PSAwKSB7Ci0gICAgICAgICAgcmFuZG9tU291cmNlLnJlYWRTdG9wKCk7Ci0gICAgICAgIH0K
LSAgICAgIH0pOwotCi0gICAgICByYW5kb21Tb3VyY2Uub25lbmQgPSBjLmNsb3NlLmJpbmQoYyk7
Ci0gICAgICByYW5kb21Tb3VyY2Uub25lcnJvciA9IGMuZXJyb3IuYmluZChjKTsKLSAgICB9LAot
Ci0gICAgcHVsbChjKSB7Ci0gICAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiBjLCAnb2JqZWN0Jywg
J2Mgc2hvdWxkIGJlIGFuIG9iamVjdCBpbiBwdWxsJyk7Ci0gICAgICBhc3NlcnRfZXF1YWxzKHR5
cGVvZiBjLmVucXVldWUsICdmdW5jdGlvbicsICdlbnF1ZXVlIHNob3VsZCBiZSBhIGZ1bmN0aW9u
IGluIHB1bGwnKTsKLSAgICAgIGFzc2VydF9lcXVhbHModHlwZW9mIGMuY2xvc2UsICdmdW5jdGlv
bicsICdjbG9zZSBzaG91bGQgYmUgYSBmdW5jdGlvbiBpbiBwdWxsJyk7Ci0KLSAgICAgIHJhbmRv
bVNvdXJjZS5yZWFkU3RhcnQoKTsKLSAgICB9Ci0gIH0pOwotCi0gIHJldHVybiByZWFkYWJsZVN0
cmVhbVRvQXJyYXkocnMpLnRoZW4oY2h1bmtzID0+IHsKLSAgICBhc3NlcnRfZXF1YWxzKGNodW5r
cy5sZW5ndGgsIDgsICc4IGNodW5rcyBzaG91bGQgYmUgcmVhZCcpOwotICAgIGZvciAoY29uc3Qg
Y2h1bmsgb2YgY2h1bmtzKSB7Ci0gICAgICBhc3NlcnRfZXF1YWxzKGNodW5rLmxlbmd0aCwgMTI4
LCAnY2h1bmsgc2hvdWxkIGhhdmUgMTI4IGJ5dGVzJyk7Ci0gICAgfQotICB9KTsKLQotfSwgJ1Jl
YWRhYmxlU3RyZWFtIGludGVncmF0aW9uIHRlc3Q6IGFkYXB0aW5nIGEgcmFuZG9tIHB1c2ggc291
cmNlJyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgY29uc3QgcnMgPSBzZXF1ZW50aWFs
UmVhZGFibGVTdHJlYW0oMTApOwotCi0gIHJldHVybiByZWFkYWJsZVN0cmVhbVRvQXJyYXkocnMp
LnRoZW4oY2h1bmtzID0+IHsKLSAgICBhc3NlcnRfdHJ1ZShycy5zb3VyY2UuY2xvc2VkLCAnc291
cmNlIHNob3VsZCBiZSBjbG9zZWQgYWZ0ZXIgYWxsIGNodW5rcyBhcmUgcmVhZCcpOwotICAgIGFz
c2VydF9hcnJheV9lcXVhbHMoY2h1bmtzLCBbMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTBd
LCAndGhlIGV4cGVjdGVkIDEwIGNodW5rcyBzaG91bGQgYmUgcmVhZCcpOwotICB9KTsKLQotfSwg
J1JlYWRhYmxlU3RyZWFtIGludGVncmF0aW9uIHRlc3Q6IGFkYXB0aW5nIGEgc3luYyBwdWxsIHNv
dXJjZScpOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotCi0gIGNvbnN0IHJzID0gc2VxdWVudGlh
bFJlYWRhYmxlU3RyZWFtKDEwLCB7IGFzeW5jOiB0cnVlIH0pOwotCi0gIHJldHVybiByZWFkYWJs
ZVN0cmVhbVRvQXJyYXkocnMpLnRoZW4oY2h1bmtzID0+IHsKLSAgICBhc3NlcnRfdHJ1ZShycy5z
b3VyY2UuY2xvc2VkLCAnc291cmNlIHNob3VsZCBiZSBjbG9zZWQgYWZ0ZXIgYWxsIGNodW5rcyBh
cmUgcmVhZCcpOwotICAgIGFzc2VydF9hcnJheV9lcXVhbHMoY2h1bmtzLCBbMSwgMiwgMywgNCwg
NSwgNiwgNywgOCwgOSwgMTBdLCAndGhlIGV4cGVjdGVkIDEwIGNodW5rcyBzaG91bGQgYmUgcmVh
ZCcpOwotICB9KTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtIGludGVncmF0aW9uIHRlc3Q6IGFkYXB0
aW5nIGFuIGFzeW5jIHB1bGwgc291cmNlJyk7Ci0KLWRvbmUoKTsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1z
dHJlYW1zL2dlbmVyYWwuc2VydmljZXdvcmtlci5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3Ry
ZWFtcy9nZW5lcmFsLnNlcnZpY2V3b3JrZXIuaHR0cHMtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBlODdiOGExY2NjNTk5YjA3NGU2MmZlODY0ZjA2MDZkYzU1NjIz
MGRhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1z
dHJlYW1zL2dlbmVyYWwuc2VydmljZXdvcmtlci5odHRwcy1leHBlY3RlZC50eHQKKysrIC9kZXYv
bnVsbApAQCAtMSw0MSArMCwwIEBACi0KLVBBU1MgU2VydmljZSB3b3JrZXIgdGVzdCBzZXR1cCAK
LVBBU1MgUmVhZGFibGVTdHJlYW0gY2FuIGJlIGNvbnN0cnVjdGVkIHdpdGggbm8gZXJyb3JzIAot
UEFTUyBSZWFkYWJsZVN0cmVhbSBjYW4ndCBiZSBjb25zdHJ1Y3RlZCB3aXRoIGdhcmJhZ2UgCi1Q
QVNTIFJlYWRhYmxlU3RyZWFtIGNhbid0IGJlIGNvbnN0cnVjdGVkIHdpdGggYW4gaW52YWxpZCB0
eXBlIAotRkFJTCBSZWFkYWJsZVN0cmVhbSBpbnN0YW5jZXMgc2hvdWxkIGhhdmUgdGhlIGNvcnJl
Y3QgbGlzdCBvZiBwcm9wZXJ0aWVzIGFzc2VydF9lcXVhbHM6IGdldFJlYWRlciBzaG91bGQgaGF2
ZSBubyBwYXJhbWV0ZXJzIGV4cGVjdGVkIDAgYnV0IGdvdCAxCi1QQVNTIFJlYWRhYmxlU3RyZWFt
IGNvbnN0cnVjdG9yIHNob3VsZCB0aHJvdyBmb3Igbm9uLWZ1bmN0aW9uIHN0YXJ0IGFyZ3VtZW50
cyAKLUZBSUwgUmVhZGFibGVTdHJlYW0gY29uc3RydWN0b3Igd2lsbCBub3QgdG9sZXJhdGUgaW5p
dGlhbCBnYXJiYWdlIGFzIGNhbmNlbCBhcmd1bWVudCBhc3NlcnRfdGhyb3dzOiBjb25zdHJ1Y3Rv
ciBzaG91bGQgdGhyb3cgZnVuY3Rpb24gIigpID0+IG5ldyBSZWFkYWJsZVN0cmVhbSh7IGNhbmNl
bDogJzInIH0pIiBkaWQgbm90IHRocm93Ci1GQUlMIFJlYWRhYmxlU3RyZWFtIGNvbnN0cnVjdG9y
IHdpbGwgbm90IHRvbGVyYXRlIGluaXRpYWwgZ2FyYmFnZSBhcyBwdWxsIGFyZ3VtZW50IGFzc2Vy
dF90aHJvd3M6IGNvbnN0cnVjdG9yIHNob3VsZCB0aHJvdyBmdW5jdGlvbiAiKCkgPT4gbmV3IFJl
YWRhYmxlU3RyZWFtKHsgcHVsbDogeyB9IH0pIiBkaWQgbm90IHRocm93Ci1GQUlMIFJlYWRhYmxl
U3RyZWFtIHN0YXJ0IHNob3VsZCBiZSBjYWxsZWQgd2l0aCB0aGUgcHJvcGVyIHBhcmFtZXRlcnMg
YXNzZXJ0X2VxdWFsczogY29uc3RydWN0b3Igc2hvdWxkIGhhdmUgbm8gcGFyYW1ldGVycyBleHBl
Y3RlZCAwIGJ1dCBnb3QgNAotUEFTUyBSZWFkYWJsZVN0cmVhbSBzdGFydCBjb250cm9sbGVyIHBh
cmFtZXRlciBzaG91bGQgYmUgZXh0ZW5zaWJsZSAKLVBBU1MgZGVmYXVsdCBSZWFkYWJsZVN0cmVh
bSBnZXRSZWFkZXIoKSBzaG91bGQgb25seSBhY2NlcHQgbW9kZTp1bmRlZmluZWQgCi1QQVNTIFJl
YWRhYmxlU3RyZWFtIHNob3VsZCBiZSBhYmxlIHRvIGNhbGwgc3RhcnQgbWV0aG9kIHdpdGhpbiBw
cm90b3R5cGUgY2hhaW4gb2YgaXRzIHNvdXJjZSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gc3RhcnQg
c2hvdWxkIGJlIGFibGUgdG8gcmV0dXJuIGEgcHJvbWlzZSAKLVBBU1MgUmVhZGFibGVTdHJlYW0g
c3RhcnQgc2hvdWxkIGJlIGFibGUgdG8gcmV0dXJuIGEgcHJvbWlzZSBhbmQgcmVqZWN0IGl0IAot
UEFTUyBSZWFkYWJsZVN0cmVhbSBzaG91bGQgYmUgYWJsZSB0byBlbnF1ZXVlIGRpZmZlcmVudCBv
YmplY3RzLiAKLVBBU1MgUmVhZGFibGVTdHJlYW06IGlmIHB1bGwgcmVqZWN0cywgaXQgc2hvdWxk
IGVycm9yIHRoZSBzdHJlYW0gCi1QQVNTIFJlYWRhYmxlU3RyZWFtOiBzaG91bGQgb25seSBjYWxs
IHB1bGwgb25jZSB1cG9uIHN0YXJ0aW5nIHRoZSBzdHJlYW0gCi1QQVNTIFJlYWRhYmxlU3RyZWFt
OiBzaG91bGQgY2FsbCBwdWxsIHdoZW4gdHJ5aW5nIHRvIHJlYWQgZnJvbSBhIHN0YXJ0ZWQsIGVt
cHR5IHN0cmVhbSAKLVBBU1MgUmVhZGFibGVTdHJlYW06IHNob3VsZCBvbmx5IGNhbGwgcHVsbCBv
bmNlIG9uIGEgbm9uLWVtcHR5IHN0cmVhbSByZWFkIGZyb20gYmVmb3JlIHN0YXJ0IGZ1bGZpbGxz
IAotUEFTUyBSZWFkYWJsZVN0cmVhbTogc2hvdWxkIG9ubHkgY2FsbCBwdWxsIG9uY2Ugb24gYSBu
b24tZW1wdHkgc3RyZWFtIHJlYWQgZnJvbSBhZnRlciBzdGFydCBmdWxmaWxscyAKLVBBU1MgUmVh
ZGFibGVTdHJlYW06IHNob3VsZCBjYWxsIHB1bGwgaW4gcmVhY3Rpb24gdG8gcmVhZCgpaW5nIHRo
ZSBsYXN0IGNodW5rLCBpZiBub3QgZHJhaW5pbmcgCi1QQVNTIFJlYWRhYmxlU3RyZWFtOiBzaG91
bGQgbm90IGNhbGwgcHVsbCgpIGluIHJlYWN0aW9uIHRvIHJlYWQoKWluZyB0aGUgbGFzdCBjaHVu
aywgaWYgZHJhaW5pbmcgCi1QQVNTIFJlYWRhYmxlU3RyZWFtOiBzaG91bGQgbm90IGNhbGwgcHVs
bCB1bnRpbCB0aGUgcHJldmlvdXMgcHVsbCBjYWxsJ3MgcHJvbWlzZSBmdWxmaWxscyAKLVBBU1Mg
UmVhZGFibGVTdHJlYW06IHNob3VsZCBwdWxsIGFmdGVyIHN0YXJ0LCBhbmQgYWZ0ZXIgZXZlcnkg
cmVhZCAKLVBBU1MgUmVhZGFibGVTdHJlYW06IHNob3VsZCBub3QgY2FsbCBwdWxsIGFmdGVyIHN0
YXJ0IGlmIHRoZSBzdHJlYW0gaXMgbm93IGNsb3NlZCAKLVBBU1MgUmVhZGFibGVTdHJlYW06IHNo
b3VsZCBjYWxsIHB1bGwgYWZ0ZXIgZW5xdWV1ZWluZyBmcm9tIGluc2lkZSBwdWxsICh3aXRoIG5v
IHJlYWQgcmVxdWVzdHMpLCBpZiBzdHJhdGVneSBhbGxvd3MgCi1QQVNTIFJlYWRhYmxlU3RyZWFt
IHB1bGwgc2hvdWxkIGJlIGFibGUgdG8gY2xvc2UgYSBzdHJlYW0uIAotUEFTUyBSZWFkYWJsZVN0
cmVhbSBwdWxsIHNob3VsZCBiZSBhYmxlIHRvIGVycm9yIGEgc3RyZWFtLiAKLVBBU1MgUmVhZGFi
bGVTdHJlYW0gcHVsbCBzaG91bGQgYmUgYWJsZSB0byBlcnJvciBhIHN0cmVhbSBhbmQgdGhyb3cu
IAotUEFTUyBSZWFkYWJsZVN0cmVhbTogZW5xdWV1ZSBzaG91bGQgdGhyb3cgd2hlbiB0aGUgc3Ry
ZWFtIGlzIHJlYWRhYmxlIGJ1dCBkcmFpbmluZyAKLVBBU1MgUmVhZGFibGVTdHJlYW06IGVucXVl
dWUgc2hvdWxkIHRocm93IHdoZW4gdGhlIHN0cmVhbSBpcyBjbG9zZWQgCi1QQVNTIFJlYWRhYmxl
U3RyZWFtOiBzaG91bGQgY2FsbCB1bmRlcmx5aW5nIHNvdXJjZSBtZXRob2RzIGFzIG1ldGhvZHMg
Ci1QQVNTIFJlYWRhYmxlU3RyZWFtOiBkZXNpcmVkU2l6ZSB3aGVuIGNsb3NlZCAKLVBBU1MgUmVh
ZGFibGVTdHJlYW06IGRlc2lyZWRTaXplIHdoZW4gZXJyb3JlZCAKLVBBU1MgUmVhZGFibGVTdHJl
YW0gc3RyYXRlZ2llczogdGhlIGRlZmF1bHQgc3RyYXRlZ3kgc2hvdWxkIGdpdmUgZGVzaXJlZFNp
emUgb2YgMSB0byBzdGFydCwgZGVjcmVhc2luZyBieSAxIHBlciBlbnF1ZXVlIAotUEFTUyBSZWFk
YWJsZVN0cmVhbSBzdHJhdGVnaWVzOiB0aGUgZGVmYXVsdCBzdHJhdGVneSBzaG91bGQgY29udGlu
dWUgZ2l2aW5nIGRlc2lyZWRTaXplIG9mIDEgaWYgdGhlIGNodW5rcyBhcmUgcmVhZCBpbW1lZGlh
dGVseSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gaW50ZWdyYXRpb24gdGVzdDogYWRhcHRpbmcgYSBy
YW5kb20gcHVzaCBzb3VyY2UgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIGludGVncmF0aW9uIHRlc3Q6
IGFkYXB0aW5nIGEgc3luYyBwdWxsIHNvdXJjZSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gaW50ZWdy
YXRpb24gdGVzdDogYWRhcHRpbmcgYW4gYXN5bmMgcHVsbCBzb3VyY2UgCi0KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFk
YWJsZS1zdHJlYW1zL2dlbmVyYWwuc2VydmljZXdvcmtlci5odHRwcy5odG1sIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVh
bXMvZ2VuZXJhbC5zZXJ2aWNld29ya2VyLmh0dHBzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGQxZGU3YzM0MmMwM2Q2ODYxZTUzYmZiNzM1ZWRiNDI0OWZkY2ZjNzIuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZ2Vu
ZXJhbC5zZXJ2aWNld29ya2VyLmh0dHBzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCww
IEBACi08IURPQ1RZUEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTx0aXRsZT5nZW5l
cmFsLmpzIHNlcnZpY2Ugd29ya2VyIHdyYXBwZXIgZmlsZTwvdGl0bGU+Ci0KLTxzY3JpcHQgc3Jj
PSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvc2Vy
dmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL3Jlc291cmNlcy90ZXN0LWhlbHBlcnMuc3ViLmpz
Ij48L3NjcmlwdD4KLQotPHNjcmlwdD4KLSd1c2Ugc3RyaWN0JzsKLXNlcnZpY2Vfd29ya2VyX3Rl
c3QoJ2dlbmVyYWwuanMnLCAnU2VydmljZSB3b3JrZXIgdGVzdCBzZXR1cCcpOwotPC9zY3JpcHQ+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9nZW5lcmFsLnNoYXJlZHdvcmtlci1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
cmVhZGFibGUtc3RyZWFtcy9nZW5lcmFsLnNoYXJlZHdvcmtlci1leHBlY3RlZC50eHQKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA5ZDVkMjUwOWQ3ODQ3ZThjZDZmZTY2MDZhYTYwY2Rk
MzNhYTQ3NGUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRh
YmxlLXN0cmVhbXMvZ2VuZXJhbC5zaGFyZWR3b3JrZXItZXhwZWN0ZWQudHh0CisrKyAvZGV2L251
bGwKQEAgLTEsNSArMCwwIEBACi1DT05TT0xFIE1FU1NBR0U6IFJlZmVyZW5jZUVycm9yOiBDYW4n
dCBmaW5kIHZhcmlhYmxlOiBTaGFyZWRXb3JrZXIKLQotSGFybmVzcyBFcnJvciAoRkFJTCksIG1l
c3NhZ2UgPSBSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogU2hhcmVkV29ya2Vy
Ci0KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZ2VuZXJhbC5zaGFyZWR3b3JrZXIuaHRtbCBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFk
YWJsZS1zdHJlYW1zL2dlbmVyYWwuc2hhcmVkd29ya2VyLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGRjZWVhOGFjOGI5ZjAwYzlkMGNjYTM3YmYxMzdiZTQ1M2U3MTQ1MTEuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMv
Z2VuZXJhbC5zaGFyZWR3b3JrZXIuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAK
LTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHRpdGxlPmdlbmVyYWwu
anMgc2hhcmVkIHdvcmtlciB3cmFwcGVyIGZpbGU8L3RpdGxlPgotCi08c2NyaXB0IHNyYz0iL3Jl
c291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNl
cy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci0KLTxzY3JpcHQ+Ci0ndXNlIHN0cmlj
dCc7Ci1mZXRjaF90ZXN0c19mcm9tX3dvcmtlcihuZXcgU2hhcmVkV29ya2VyKCdnZW5lcmFsLmpz
JykpOwotPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9wYXRjaGVkLWdsb2JhbC5h
bnktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvcGF0Y2hlZC1nbG9iYWwuYW55LWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4xMzE4MjY0NmM1MTU2MDM1YTEyN2NiOWViMDZiY2M3M2FjMWE2ZTJi
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvcGF0Y2hlZC1nbG9iYWwuYW55LWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDggQEAKK0NPTlNPTEUgTUVTU0FHRTogVW5oYW5kbGVkIFByb21p
c2UgUmVqZWN0aW9uOiBFcnJvcjogcGF0Y2hlZCB0aGVuKCkgY2FsbGVkCisKK1BBU1MgUmVhZGFi
bGVTdHJlYW0gdGVlKCkgc2hvdWxkIG5vdCB0b3VjaCBPYmplY3QucHJvdG90eXBlIHByb3BlcnRp
ZXMgCitQQVNTIFJlYWRhYmxlU3RyZWFtIHRlZSgpIHNob3VsZCBub3QgY2FsbCB0aGUgZ2xvYmFs
IFJlYWRhYmxlU3RyZWFtIAorRkFJTCBSZWFkYWJsZVN0cmVhbSBhc3luYyBpdGVyYXRvciBzaG91
bGQgdXNlIHRoZSBvcmlnaW5hbCB2YWx1ZXMgb2YgZ2V0UmVhZGVyKCkgYW5kIFJlYWRhYmxlU3Ry
ZWFtRGVmYXVsdFJlYWRlciBtZXRob2RzIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlv
biB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhIGZ1bmN0
aW9uIChuZWFyICcuLi5jaHVuayBvZiBycy4uLicpIgorUEFTUyB0ZWUoKSBzaG91bGQgbm90IGNh
bGwgUHJvbWlzZS5wcm90b3R5cGUudGhlbigpIAorUEFTUyBwaXBlVG8oKSBzaG91bGQgbm90IGNh
bGwgUHJvbWlzZS5wcm90b3R5cGUudGhlbigpIAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9w
YXRjaGVkLWdsb2JhbC5hbnkuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3BhdGNoZWQtZ2xvYmFsLmFueS5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjIzODI5MTM1MjhlNjkzYjNhNWQ1NmM2NjBhNDUwNjA5ODBiNTQ4YzMK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9wYXRjaGVkLWdsb2JhbC5hbnkuaHRtbApA
QCAtMCwwICsxIEBACis8IS0tIFRoaXMgZmlsZSBpcyByZXF1aXJlZCBmb3IgV2ViS2l0IHRlc3Qg
aW5mcmFzdHJ1Y3R1cmUgdG8gcnVuIHRoZSB0ZW1wbGF0ZWQgdGVzdCAtLT4KXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9wYXRjaGVkLWdsb2JhbC5h
bnkuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvcmVhZGFibGUtc3RyZWFtcy9wYXRjaGVkLWdsb2JhbC5hbnkuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTc2
YTM5ZjY3NzdlMmI0OTcwZWFlYzc0Yjg4ZTZlZTdmODJkM2I3MAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFk
YWJsZS1zdHJlYW1zL3BhdGNoZWQtZ2xvYmFsLmFueS5qcwpAQCAtMCwwICsxLDE0MiBAQAorLy8g
TUVUQTogZ2xvYmFsPXdpbmRvdyx3b3JrZXIsanNzaGVsbAorJ3VzZSBzdHJpY3QnOworCisvLyBU
ZXN0cyB3aGljaCBwYXRjaCB0aGUgZ2xvYmFsIGVudmlyb25tZW50IGFyZSBrZXB0IHNlcGFyYXRl
IHRvIGF2b2lkCisvLyBpbnRlcmZlcmluZyB3aXRoIG90aGVyIHRlc3RzLgorCitjb25zdCBSZWFk
YWJsZVN0cmVhbV9wcm90b3R5cGVfbG9ja2VkX2dldCA9CisgICAgICBPYmplY3QuZ2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKFJlYWRhYmxlU3RyZWFtLnByb3RvdHlwZSwgJ2xvY2tlZCcpLmdldDsK
KworLy8gVmVyaWZ5IHRoYXQgfHJzfCBwYXNzZXMgdGhlIGJyYW5kIGNoZWNrIGFzIGEgcmVhZGFi
bGUgc3RyZWFtLgorZnVuY3Rpb24gaXNSZWFkYWJsZVN0cmVhbShycykgeworICB0cnkgeworICAg
IFJlYWRhYmxlU3RyZWFtX3Byb3RvdHlwZV9sb2NrZWRfZ2V0LmNhbGwocnMpOworICAgIHJldHVy
biB0cnVlOworICB9IGNhdGNoIChlKSB7CisgICAgcmV0dXJuIGZhbHNlOworICB9Cit9CisKK3Rl
c3QodCA9PiB7CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKCk7CisKKyAgY29uc3Qg
dHJhcHBlZFByb3BlcnRpZXMgPSBbJ2hpZ2hXYXRlck1hcmsnLCAnc2l6ZScsICdzdGFydCcsICd0
eXBlJywgJ21vZGUnXTsKKyAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiB0cmFwcGVkUHJvcGVydGll
cykgeworICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1leHRlbmQtbmF0aXZlLCBh
Y2Nlc3Nvci1wYWlycworICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShPYmplY3QucHJvdG90eXBl
LCBwcm9wZXJ0eSwgeworICAgICAgZ2V0KCkgeyB0aHJvdyBuZXcgRXJyb3IoYCR7cHJvcGVydHl9
IGdldHRlciBjYWxsZWRgKTsgfSwKKyAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZQorICAgIH0pOwor
ICB9CisgIHQuYWRkX2NsZWFudXAoKCkgPT4geworICAgIGZvciAoY29uc3QgcHJvcGVydHkgb2Yg
dHJhcHBlZFByb3BlcnRpZXMpIHsKKyAgICAgIGRlbGV0ZSBPYmplY3QucHJvdG90eXBlW3Byb3Bl
cnR5XTsKKyAgICB9CisgIH0pOworCisgIGNvbnN0IFticmFuY2gxLCBicmFuY2gyXSA9IHJzLnRl
ZSgpOworICBhc3NlcnRfdHJ1ZShpc1JlYWRhYmxlU3RyZWFtKGJyYW5jaDEpLCAnYnJhbmNoMSBz
aG91bGQgYmUgYSBSZWFkYWJsZVN0cmVhbScpOworICBhc3NlcnRfdHJ1ZShpc1JlYWRhYmxlU3Ry
ZWFtKGJyYW5jaDIpLCAnYnJhbmNoMiBzaG91bGQgYmUgYSBSZWFkYWJsZVN0cmVhbScpOworfSwg
J1JlYWRhYmxlU3RyZWFtIHRlZSgpIHNob3VsZCBub3QgdG91Y2ggT2JqZWN0LnByb3RvdHlwZSBw
cm9wZXJ0aWVzJyk7CisKK3Rlc3QodCA9PiB7CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3Ry
ZWFtKCk7CisKKyAgY29uc3Qgb2xkUmVhZGFibGVTdHJlYW0gPSBzZWxmLlJlYWRhYmxlU3RyZWFt
OworCisgIHNlbGYuUmVhZGFibGVTdHJlYW0gPSBmdW5jdGlvbigpIHsKKyAgICB0aHJvdyBuZXcg
RXJyb3IoJ1JlYWRhYmxlU3RyZWFtIGNhbGxlZCBvbiBnbG9iYWwgb2JqZWN0Jyk7CisgIH07CisK
KyAgdC5hZGRfY2xlYW51cCgoKSA9PiB7CisgICAgc2VsZi5SZWFkYWJsZVN0cmVhbSA9IG9sZFJl
YWRhYmxlU3RyZWFtOworICB9KTsKKworICBjb25zdCBbYnJhbmNoMSwgYnJhbmNoMl0gPSBycy50
ZWUoKTsKKworICBhc3NlcnRfdHJ1ZShpc1JlYWRhYmxlU3RyZWFtKGJyYW5jaDEpLCAnYnJhbmNo
MSBzaG91bGQgYmUgYSBSZWFkYWJsZVN0cmVhbScpOworICBhc3NlcnRfdHJ1ZShpc1JlYWRhYmxl
U3RyZWFtKGJyYW5jaDIpLCAnYnJhbmNoMiBzaG91bGQgYmUgYSBSZWFkYWJsZVN0cmVhbScpOwor
fSwgJ1JlYWRhYmxlU3RyZWFtIHRlZSgpIHNob3VsZCBub3QgY2FsbCB0aGUgZ2xvYmFsIFJlYWRh
YmxlU3RyZWFtJyk7CisKK3Byb21pc2VfdGVzdChhc3luYyB0ID0+IHsKKyAgY29uc3QgcnMgPSBu
ZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGMuZW5xdWV1ZSgxKTsK
KyAgICAgIGMuZW5xdWV1ZSgyKTsKKyAgICAgIGMuZW5xdWV1ZSgzKTsKKyAgICAgIGMuY2xvc2Uo
KTsKKyAgICB9CisgIH0pOworCisgIGNvbnN0IG9sZFJlYWRhYmxlU3RyZWFtR2V0UmVhZGVyID0g
UmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLmdldFJlYWRlcjsKKworICBjb25zdCBSZWFkYWJsZVN0
cmVhbURlZmF1bHRSZWFkZXIgPSAobmV3IFJlYWRhYmxlU3RyZWFtKCkpLmdldFJlYWRlcigpLmNv
bnN0cnVjdG9yOworICBjb25zdCBvbGREZWZhdWx0UmVhZGVyUmVhZCA9IFJlYWRhYmxlU3RyZWFt
RGVmYXVsdFJlYWRlci5wcm90b3R5cGUucmVhZDsKKyAgY29uc3Qgb2xkRGVmYXVsdFJlYWRlckNh
bmNlbCA9IFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlci5wcm90b3R5cGUuY2FuY2VsOworICBj
b25zdCBvbGREZWZhdWx0UmVhZGVyUmVsZWFzZUxvY2sgPSBSZWFkYWJsZVN0cmVhbURlZmF1bHRS
ZWFkZXIucHJvdG90eXBlLnJlbGVhc2VMb2NrOworCisgIHNlbGYuUmVhZGFibGVTdHJlYW0ucHJv
dG90eXBlLmdldFJlYWRlciA9IGZ1bmN0aW9uKCkgeworICAgIHRocm93IG5ldyBFcnJvcigncGF0
Y2hlZCBnZXRSZWFkZXIoKSBjYWxsZWQnKTsKKyAgfTsKKworICBSZWFkYWJsZVN0cmVhbURlZmF1
bHRSZWFkZXIucHJvdG90eXBlLnJlYWQgPSBmdW5jdGlvbigpIHsKKyAgICB0aHJvdyBuZXcgRXJy
b3IoJ3BhdGNoZWQgcmVhZCgpIGNhbGxlZCcpOworICB9OworICBSZWFkYWJsZVN0cmVhbURlZmF1
bHRSZWFkZXIucHJvdG90eXBlLmNhbmNlbCA9IGZ1bmN0aW9uKCkgeworICAgIHRocm93IG5ldyBF
cnJvcigncGF0Y2hlZCBjYW5jZWwoKSBjYWxsZWQnKTsKKyAgfTsKKyAgUmVhZGFibGVTdHJlYW1E
ZWZhdWx0UmVhZGVyLnByb3RvdHlwZS5yZWxlYXNlTG9jayA9IGZ1bmN0aW9uKCkgeworICAgIHRo
cm93IG5ldyBFcnJvcigncGF0Y2hlZCByZWxlYXNlTG9jaygpIGNhbGxlZCcpOworICB9OworCisg
IHQuYWRkX2NsZWFudXAoKCkgPT4geworICAgIHNlbGYuUmVhZGFibGVTdHJlYW0ucHJvdG90eXBl
LmdldFJlYWRlciA9IG9sZFJlYWRhYmxlU3RyZWFtR2V0UmVhZGVyOworCisgICAgUmVhZGFibGVT
dHJlYW1EZWZhdWx0UmVhZGVyLnByb3RvdHlwZS5yZWFkID0gb2xkRGVmYXVsdFJlYWRlclJlYWQ7
CisgICAgUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyLnByb3RvdHlwZS5jYW5jZWwgPSBvbGRE
ZWZhdWx0UmVhZGVyQ2FuY2VsOworICAgIFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlci5wcm90
b3R5cGUucmVsZWFzZUxvY2sgPSBvbGREZWZhdWx0UmVhZGVyUmVsZWFzZUxvY2s7CisgIH0pOwor
CisgIC8vIHJlYWQgdGhlIGZpcnN0IGNodW5rLCB0aGVuIGNhbmNlbAorICBmb3IgYXdhaXQgKGNv
bnN0IGNodW5rIG9mIHJzKSB7CisgICAgYnJlYWs7CisgIH0KKworICAvLyBzaG91bGQgYmUgYWJs
ZSB0byBhY3F1aXJlIGEgbmV3IHJlYWRlcgorICBjb25zdCByZWFkZXIgPSBvbGRSZWFkYWJsZVN0
cmVhbUdldFJlYWRlci5jYWxsKHJzKTsKKyAgLy8gc3RyZWFtIHNob3VsZCBiZSBjYW5jZWxsZWQK
KyAgYXdhaXQgcmVhZGVyLmNsb3NlZDsKK30sICdSZWFkYWJsZVN0cmVhbSBhc3luYyBpdGVyYXRv
ciBzaG91bGQgdXNlIHRoZSBvcmlnaW5hbCB2YWx1ZXMgb2YgZ2V0UmVhZGVyKCkgYW5kIFJlYWRh
YmxlU3RyZWFtRGVmYXVsdFJlYWRlciAnICsKKyAgICdtZXRob2RzJyk7CisKK3Rlc3QodCA9PiB7
CisgIGNvbnN0IG9sZFByb21pc2VUaGVuID0gUHJvbWlzZS5wcm90b3R5cGUudGhlbjsKKyAgUHJv
bWlzZS5wcm90b3R5cGUudGhlbiA9ICgpID0+IHsKKyAgICB0aHJvdyBuZXcgRXJyb3IoJ3BhdGNo
ZWQgdGhlbigpIGNhbGxlZCcpOworICB9OworICB0LmFkZF9jbGVhbnVwKCgpID0+IHsKKyAgICBQ
cm9taXNlLnByb3RvdHlwZS50aGVuID0gb2xkUHJvbWlzZVRoZW47CisgIH0pOworICBjb25zdCBb
YnJhbmNoMSwgYnJhbmNoMl0gPSBuZXcgUmVhZGFibGVTdHJlYW0oKS50ZWUoKTsKKyAgYXNzZXJ0
X3RydWUoaXNSZWFkYWJsZVN0cmVhbShicmFuY2gxKSwgJ2JyYW5jaDEgc2hvdWxkIGJlIGEgUmVh
ZGFibGVTdHJlYW0nKTsKKyAgYXNzZXJ0X3RydWUoaXNSZWFkYWJsZVN0cmVhbShicmFuY2gyKSwg
J2JyYW5jaDIgc2hvdWxkIGJlIGEgUmVhZGFibGVTdHJlYW0nKTsKK30sICd0ZWUoKSBzaG91bGQg
bm90IGNhbGwgUHJvbWlzZS5wcm90b3R5cGUudGhlbigpJyk7CisKK3Rlc3QodCA9PiB7CisgIGNv
bnN0IG9sZFByb21pc2VUaGVuID0gUHJvbWlzZS5wcm90b3R5cGUudGhlbjsKKyAgUHJvbWlzZS5w
cm90b3R5cGUudGhlbiA9ICgpID0+IHsKKyAgICB0aHJvdyBuZXcgRXJyb3IoJ3BhdGNoZWQgdGhl
bigpIGNhbGxlZCcpOworICB9OworICB0LmFkZF9jbGVhbnVwKCgpID0+IHsKKyAgICBQcm9taXNl
LnByb3RvdHlwZS50aGVuID0gb2xkUHJvbWlzZVRoZW47CisgIH0pOworICBsZXQgcmVhZGFibGVD
b250cm9sbGVyOworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQo
YykgeworICAgICAgcmVhZGFibGVDb250cm9sbGVyID0gYzsKKyAgICB9CisgIH0pOworICBjb25z
dCB3cyA9IG5ldyBXcml0YWJsZVN0cmVhbSgpOworICBycy5waXBlVG8od3MpOworICByZWFkYWJs
ZUNvbnRyb2xsZXIuY2xvc2UoKTsKK30sICdwaXBlVG8oKSBzaG91bGQgbm90IGNhbGwgUHJvbWlz
ZS5wcm90b3R5cGUudGhlbigpJyk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9wYXRjaGVkLWds
b2JhbC5hbnkud29ya2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3BhdGNoZWQtZ2xvYmFs
LmFueS53b3JrZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJlYzhiMDcyZDJlMzM4NGM0ZjVm
YTA3MDg1ZWE3Y2ZlOWRlZWE3Y2QKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9wYXRj
aGVkLWdsb2JhbC5hbnkud29ya2VyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDcgQEAKKworUEFT
UyBSZWFkYWJsZVN0cmVhbSB0ZWUoKSBzaG91bGQgbm90IHRvdWNoIE9iamVjdC5wcm90b3R5cGUg
cHJvcGVydGllcyAKK1BBU1MgUmVhZGFibGVTdHJlYW0gdGVlKCkgc2hvdWxkIG5vdCBjYWxsIHRo
ZSBnbG9iYWwgUmVhZGFibGVTdHJlYW0gCitGQUlMIFJlYWRhYmxlU3RyZWFtIGFzeW5jIGl0ZXJh
dG9yIHNob3VsZCB1c2UgdGhlIG9yaWdpbmFsIHZhbHVlcyBvZiBnZXRSZWFkZXIoKSBhbmQgUmVh
ZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyIG1ldGhvZHMgcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQg
cmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiVHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90
IGEgZnVuY3Rpb24gKG5lYXIgJy4uLmNodW5rIG9mIHJzLi4uJykiCitQQVNTIHRlZSgpIHNob3Vs
ZCBub3QgY2FsbCBQcm9taXNlLnByb3RvdHlwZS50aGVuKCkgCitGQUlMIHBpcGVUbygpIHNob3Vs
ZCBub3QgY2FsbCBQcm9taXNlLnByb3RvdHlwZS50aGVuKCkgQ2FuJ3QgZmluZCB2YXJpYWJsZTog
V3JpdGFibGVTdHJlYW0KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvcGF0Y2hlZC1nbG9iYWwu
YW55Lndvcmtlci5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvcGF0Y2hlZC1nbG9iYWwuYW55Lndvcmtlci5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjIzODI5MTM1MjhlNjkzYjNhNWQ1NmM2NjBhNDUwNjA5ODBiNTQ4YzMK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9wYXRjaGVkLWdsb2JhbC5hbnkud29ya2Vy
Lmh0bWwKQEAgLTAsMCArMSBAQAorPCEtLSBUaGlzIGZpbGUgaXMgcmVxdWlyZWQgZm9yIFdlYktp
dCB0ZXN0IGluZnJhc3RydWN0dXJlIHRvIHJ1biB0aGUgdGVtcGxhdGVkIHRlc3QgLS0+ClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvcmVhZGFibGUt
c3RyZWFtLXJlYWRlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW0t
cmVhZGVyLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGI3ZWZh
MWFlODU5MjEyNDUxMzhhNWFkOWUwZjdlMzYxYTAwMWM0ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW0tcmVh
ZGVyLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLQotUEFTUyBD
YW4gZ2V0IHRoZSBSZWFkYWJsZVN0cmVhbVJlYWRlciBjb25zdHJ1Y3RvciBpbmRpcmVjdGx5IAot
UEFTUyBSZWFkYWJsZVN0cmVhbVJlYWRlciBjb25zdHJ1Y3RvciBzaG91bGQgZ2V0IGEgUmVhZGFi
bGVTdHJlYW0gb2JqZWN0IGFzIGFyZ3VtZW50IAotUEFTUyBSZWFkYWJsZVN0cmVhbVJlYWRlciBp
bnN0YW5jZXMgc2hvdWxkIGhhdmUgdGhlIGNvcnJlY3QgbGlzdCBvZiBwcm9wZXJ0aWVzIAotUEFT
UyBSZWFkYWJsZVN0cmVhbVJlYWRlciBjbG9zZWQgc2hvdWxkIGFsd2F5cyByZXR1cm4gdGhlIHNh
bWUgcHJvbWlzZSBvYmplY3QgCi1QQVNTIENvbnN0cnVjdGluZyBhIFJlYWRhYmxlU3RyZWFtUmVh
ZGVyIGRpcmVjdGx5IHNob3VsZCBmYWlsIGlmIHRoZSBzdHJlYW0gaXMgYWxyZWFkeSBsb2NrZWQg
KHZpYSBkaXJlY3QgY29uc3RydWN0aW9uKSAKLVBBU1MgR2V0dGluZyBhIFJlYWRhYmxlU3RyZWFt
UmVhZGVyIHZpYSBnZXRSZWFkZXIgc2hvdWxkIGZhaWwgaWYgdGhlIHN0cmVhbSBpcyBhbHJlYWR5
IGxvY2tlZCAodmlhIGRpcmVjdCBjb25zdHJ1Y3Rpb24pIAotUEFTUyBDb25zdHJ1Y3RpbmcgYSBS
ZWFkYWJsZVN0cmVhbVJlYWRlciBkaXJlY3RseSBzaG91bGQgZmFpbCBpZiB0aGUgc3RyZWFtIGlz
IGFscmVhZHkgbG9ja2VkICh2aWEgZ2V0UmVhZGVyKSAKLVBBU1MgR2V0dGluZyBhIFJlYWRhYmxl
U3RyZWFtUmVhZGVyIHZpYSBnZXRSZWFkZXIgc2hvdWxkIGZhaWwgaWYgdGhlIHN0cmVhbSBpcyBh
bHJlYWR5IGxvY2tlZCAodmlhIGdldFJlYWRlcikgCi1QQVNTIENvbnN0cnVjdGluZyBhIFJlYWRh
YmxlU3RyZWFtUmVhZGVyIGRpcmVjdGx5IHNob3VsZCBiZSBPSyBpZiB0aGUgc3RyZWFtIGlzIGNs
b3NlZCAKLVBBU1MgQ29uc3RydWN0aW5nIGEgUmVhZGFibGVTdHJlYW1SZWFkZXIgZGlyZWN0bHkg
c2hvdWxkIGJlIE9LIGlmIHRoZSBzdHJlYW0gaXMgZXJyb3JlZCAKLVBBU1MgUmVhZGluZyBmcm9t
IGEgcmVhZGVyIGZvciBhbiBlbXB0eSBzdHJlYW0gd2lsbCB3YWl0IHVudGlsIGEgY2h1bmsgaXMg
YXZhaWxhYmxlIAotUEFTUyBjYW5jZWwoKSBvbiBhIHJlYWRlciBkb2VzIG5vdCByZWxlYXNlIHRo
ZSByZWFkZXIgCi1QQVNTIGNsb3NlZCBzaG91bGQgYmUgZnVsZmlsbGVkIGFmdGVyIHN0cmVhbSBp
cyBjbG9zZWQgKC5jbG9zZWQgYWNjZXNzIGJlZm9yZSBhY3F1aXJpbmcpIAotUEFTUyBjbG9zZWQg
c2hvdWxkIGJlIHJlamVjdGVkIGFmdGVyIHJlYWRlciByZWxlYXNlcyBpdHMgbG9jayAobXVsdGlw
bGUgc3RyZWFtIGxvY2tzKSAKLVBBU1MgTXVsdGlwbGUgcmVhZGVycyBjYW4gYWNjZXNzIHRoZSBz
dHJlYW0gaW4gc2VxdWVuY2UgCi1QQVNTIENhbm5vdCB1c2UgYW4gYWxyZWFkeS1yZWxlYXNlZCBy
ZWFkZXIgdG8gdW5sb2NrIGEgc3RyZWFtIGFnYWluIAotUEFTUyBjYW5jZWwoKSBvbiBhIHJlbGVh
c2VkIHJlYWRlciBpcyBhIG5vLW9wIGFuZCBkb2VzIG5vdCBwYXNzIHRocm91Z2ggCi1QQVNTIEdl
dHRpbmcgYSBzZWNvbmQgcmVhZGVyIGFmdGVyIGVycm9yaW5nIHRoZSBzdHJlYW0gYW5kIHJlbGVh
c2luZyB0aGUgcmVhZGVyIHNob3VsZCBzdWNjZWVkIAotUEFTUyBSZWFkYWJsZVN0cmVhbVJlYWRl
ciBjbG9zZWQgcHJvbWlzZSBzaG91bGQgYmUgcmVqZWN0ZWQgd2l0aCB1bmRlZmluZWQgaWYgdGhh
dCBpcyB0aGUgZXJyb3IgCi1QQVNTIFJlYWRhYmxlU3RyZWFtUmVhZGVyOiBpZiBzdGFydCByZWpl
Y3RzIHdpdGggbm8gcGFyYW1ldGVyLCBpdCBzaG91bGQgZXJyb3IgdGhlIHN0cmVhbSB3aXRoIGFu
IHVuZGVmaW5lZCBlcnJvciAKLVBBU1MgRXJyb3JpbmcgYSBSZWFkYWJsZVN0cmVhbSBhZnRlciBj
aGVja2luZyBjbG9zZWQgc2hvdWxkIHJlamVjdCBSZWFkYWJsZVN0cmVhbVJlYWRlciBjbG9zZWQg
cHJvbWlzZSAKLVBBU1MgRXJyb3JpbmcgYSBSZWFkYWJsZVN0cmVhbSBiZWZvcmUgY2hlY2tpbmcg
Y2xvc2VkIHNob3VsZCByZWplY3QgUmVhZGFibGVTdHJlYW1SZWFkZXIgY2xvc2VkIHByb21pc2Ug
Ci1QQVNTIFJlYWRpbmcgdHdpY2Ugb24gYSBzdHJlYW0gdGhhdCBnZXRzIGNsb3NlZCAKLVBBU1Mg
UmVhZGluZyB0d2ljZSBvbiBhIGNsb3NlZCBzdHJlYW0gCi1QQVNTIFJlYWRpbmcgdHdpY2Ugb24g
YW4gZXJyb3JlZCBzdHJlYW0gCi1QQVNTIFJlYWRpbmcgdHdpY2Ugb24gYSBzdHJlYW0gdGhhdCBn
ZXRzIGVycm9yZWQgCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbS1y
ZWFkZXIuZGVkaWNhdGVkd29ya2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3JlYWRhYmxl
LXN0cmVhbS1yZWFkZXIuZGVkaWNhdGVkd29ya2VyLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggZGI3ZWZhMWFlODU5MjEyNDUxMzhhNWFkOWUwZjdlMzYxYTAwMWM0
ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3Ry
ZWFtcy9yZWFkYWJsZS1zdHJlYW0tcmVhZGVyLmRlZGljYXRlZHdvcmtlci1leHBlY3RlZC50eHQK
KysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi0KLVBBU1MgQ2FuIGdldCB0aGUgUmVhZGFi
bGVTdHJlYW1SZWFkZXIgY29uc3RydWN0b3IgaW5kaXJlY3RseSAKLVBBU1MgUmVhZGFibGVTdHJl
YW1SZWFkZXIgY29uc3RydWN0b3Igc2hvdWxkIGdldCBhIFJlYWRhYmxlU3RyZWFtIG9iamVjdCBh
cyBhcmd1bWVudCAKLVBBU1MgUmVhZGFibGVTdHJlYW1SZWFkZXIgaW5zdGFuY2VzIHNob3VsZCBo
YXZlIHRoZSBjb3JyZWN0IGxpc3Qgb2YgcHJvcGVydGllcyAKLVBBU1MgUmVhZGFibGVTdHJlYW1S
ZWFkZXIgY2xvc2VkIHNob3VsZCBhbHdheXMgcmV0dXJuIHRoZSBzYW1lIHByb21pc2Ugb2JqZWN0
IAotUEFTUyBDb25zdHJ1Y3RpbmcgYSBSZWFkYWJsZVN0cmVhbVJlYWRlciBkaXJlY3RseSBzaG91
bGQgZmFpbCBpZiB0aGUgc3RyZWFtIGlzIGFscmVhZHkgbG9ja2VkICh2aWEgZGlyZWN0IGNvbnN0
cnVjdGlvbikgCi1QQVNTIEdldHRpbmcgYSBSZWFkYWJsZVN0cmVhbVJlYWRlciB2aWEgZ2V0UmVh
ZGVyIHNob3VsZCBmYWlsIGlmIHRoZSBzdHJlYW0gaXMgYWxyZWFkeSBsb2NrZWQgKHZpYSBkaXJl
Y3QgY29uc3RydWN0aW9uKSAKLVBBU1MgQ29uc3RydWN0aW5nIGEgUmVhZGFibGVTdHJlYW1SZWFk
ZXIgZGlyZWN0bHkgc2hvdWxkIGZhaWwgaWYgdGhlIHN0cmVhbSBpcyBhbHJlYWR5IGxvY2tlZCAo
dmlhIGdldFJlYWRlcikgCi1QQVNTIEdldHRpbmcgYSBSZWFkYWJsZVN0cmVhbVJlYWRlciB2aWEg
Z2V0UmVhZGVyIHNob3VsZCBmYWlsIGlmIHRoZSBzdHJlYW0gaXMgYWxyZWFkeSBsb2NrZWQgKHZp
YSBnZXRSZWFkZXIpIAotUEFTUyBDb25zdHJ1Y3RpbmcgYSBSZWFkYWJsZVN0cmVhbVJlYWRlciBk
aXJlY3RseSBzaG91bGQgYmUgT0sgaWYgdGhlIHN0cmVhbSBpcyBjbG9zZWQgCi1QQVNTIENvbnN0
cnVjdGluZyBhIFJlYWRhYmxlU3RyZWFtUmVhZGVyIGRpcmVjdGx5IHNob3VsZCBiZSBPSyBpZiB0
aGUgc3RyZWFtIGlzIGVycm9yZWQgCi1QQVNTIFJlYWRpbmcgZnJvbSBhIHJlYWRlciBmb3IgYW4g
ZW1wdHkgc3RyZWFtIHdpbGwgd2FpdCB1bnRpbCBhIGNodW5rIGlzIGF2YWlsYWJsZSAKLVBBU1Mg
Y2FuY2VsKCkgb24gYSByZWFkZXIgZG9lcyBub3QgcmVsZWFzZSB0aGUgcmVhZGVyIAotUEFTUyBj
bG9zZWQgc2hvdWxkIGJlIGZ1bGZpbGxlZCBhZnRlciBzdHJlYW0gaXMgY2xvc2VkICguY2xvc2Vk
IGFjY2VzcyBiZWZvcmUgYWNxdWlyaW5nKSAKLVBBU1MgY2xvc2VkIHNob3VsZCBiZSByZWplY3Rl
ZCBhZnRlciByZWFkZXIgcmVsZWFzZXMgaXRzIGxvY2sgKG11bHRpcGxlIHN0cmVhbSBsb2Nrcykg
Ci1QQVNTIE11bHRpcGxlIHJlYWRlcnMgY2FuIGFjY2VzcyB0aGUgc3RyZWFtIGluIHNlcXVlbmNl
IAotUEFTUyBDYW5ub3QgdXNlIGFuIGFscmVhZHktcmVsZWFzZWQgcmVhZGVyIHRvIHVubG9jayBh
IHN0cmVhbSBhZ2FpbiAKLVBBU1MgY2FuY2VsKCkgb24gYSByZWxlYXNlZCByZWFkZXIgaXMgYSBu
by1vcCBhbmQgZG9lcyBub3QgcGFzcyB0aHJvdWdoIAotUEFTUyBHZXR0aW5nIGEgc2Vjb25kIHJl
YWRlciBhZnRlciBlcnJvcmluZyB0aGUgc3RyZWFtIGFuZCByZWxlYXNpbmcgdGhlIHJlYWRlciBz
aG91bGQgc3VjY2VlZCAKLVBBU1MgUmVhZGFibGVTdHJlYW1SZWFkZXIgY2xvc2VkIHByb21pc2Ug
c2hvdWxkIGJlIHJlamVjdGVkIHdpdGggdW5kZWZpbmVkIGlmIHRoYXQgaXMgdGhlIGVycm9yIAot
UEFTUyBSZWFkYWJsZVN0cmVhbVJlYWRlcjogaWYgc3RhcnQgcmVqZWN0cyB3aXRoIG5vIHBhcmFt
ZXRlciwgaXQgc2hvdWxkIGVycm9yIHRoZSBzdHJlYW0gd2l0aCBhbiB1bmRlZmluZWQgZXJyb3Ig
Ci1QQVNTIEVycm9yaW5nIGEgUmVhZGFibGVTdHJlYW0gYWZ0ZXIgY2hlY2tpbmcgY2xvc2VkIHNo
b3VsZCByZWplY3QgUmVhZGFibGVTdHJlYW1SZWFkZXIgY2xvc2VkIHByb21pc2UgCi1QQVNTIEVy
cm9yaW5nIGEgUmVhZGFibGVTdHJlYW0gYmVmb3JlIGNoZWNraW5nIGNsb3NlZCBzaG91bGQgcmVq
ZWN0IFJlYWRhYmxlU3RyZWFtUmVhZGVyIGNsb3NlZCBwcm9taXNlIAotUEFTUyBSZWFkaW5nIHR3
aWNlIG9uIGEgc3RyZWFtIHRoYXQgZ2V0cyBjbG9zZWQgCi1QQVNTIFJlYWRpbmcgdHdpY2Ugb24g
YSBjbG9zZWQgc3RyZWFtIAotUEFTUyBSZWFkaW5nIHR3aWNlIG9uIGFuIGVycm9yZWQgc3RyZWFt
IAotUEFTUyBSZWFkaW5nIHR3aWNlIG9uIGEgc3RyZWFtIHRoYXQgZ2V0cyBlcnJvcmVkIAotCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW0tcmVhZGVyLmRlZGljYXRlZHdv
cmtlci5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
dHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvcmVhZGFibGUtc3RyZWFtLXJlYWRlci5kZWRpY2F0ZWR3
b3JrZXIuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTI4MTg3NzFlNDU1ZTNm
Y2U3ODM5NWUzZWI2MDBhOWIzYTExZTJjNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW0tcmVhZGVyLmRlZGlj
YXRlZHdvcmtlci5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotPCFET0NUWVBF
IGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08dGl0bGU+cmVhZGFibGUtc3RyZWFtLXJl
YWRlci5qcyBkZWRpY2F0ZWQgd29ya2VyIHdyYXBwZXIgZmlsZTwvdGl0bGU+Ci0KLTxzY3JpcHQg
c3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIv
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLQotPHNjcmlwdD4KLSd1
c2Ugc3RyaWN0JzsKLWZldGNoX3Rlc3RzX2Zyb21fd29ya2VyKG5ldyBXb3JrZXIoJ3JlYWRhYmxl
LXN0cmVhbS1yZWFkZXIuanMnKSk7Ci08L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1z
L3JlYWRhYmxlLXN0cmVhbS1yZWFkZXIuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3JlYWRhYmxlLXN0cmVh
bS1yZWFkZXIuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGQ5YzVmM2ZhOGVm
NGFiN2I4NTk2ZTBjOTUzMzdjNjJlZDRiZWJjNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW0tcmVhZGVyLmh0
bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxtZXRh
IGNoYXJzZXQ9InV0Zi04Ij4KLTx0aXRsZT5yZWFkYWJsZS1zdHJlYW0tcmVhZGVyLmpzIGJyb3dz
ZXIgY29udGV4dCB3cmFwcGVyIGZpbGU8L3RpdGxlPgotCi08c2NyaXB0IHNyYz0iL3Jlc291cmNl
cy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0
aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci0KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMv
cnMtdXRpbHMuanMiPjwvc2NyaXB0PgotCi08c2NyaXB0IHNyYz0icmVhZGFibGUtc3RyZWFtLXJl
YWRlci5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9yZWFkYWJsZS1zdHJl
YW0tcmVhZGVyLmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvcmVhZGFibGUtc3RyZWFtLXJlYWRlci5qcwpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWQ1YmMxMzAwNGY4YTM1N2ZjNWU4MjUyMmYzYmQz
MDlmMTMxMWI5YS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVh
ZGFibGUtc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW0tcmVhZGVyLmpzCisrKyAvZGV2L251bGwKQEAg
LTEsNDg1ICswLDAgQEAKLSd1c2Ugc3RyaWN0JzsKLQotaWYgKHNlbGYuaW1wb3J0U2NyaXB0cykg
ewotICBzZWxmLmltcG9ydFNjcmlwdHMoJy4uL3Jlc291cmNlcy9ycy11dGlscy5qcycpOwotICBz
ZWxmLmltcG9ydFNjcmlwdHMoJy9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMnKTsKLX0KLQotbGV0
IFJlYWRhYmxlU3RyZWFtUmVhZGVyOwotCi10ZXN0KCgpID0+IHsKLQotICAvLyBJdCdzIG5vdCBl
eHBvc2VkIGdsb2JhbGx5LCBidXQgd2UgdGVzdCBhIGZldyBvZiBpdHMgcHJvcGVydGllcyBoZXJl
LgotICBSZWFkYWJsZVN0cmVhbVJlYWRlciA9IChuZXcgUmVhZGFibGVTdHJlYW0oKSkuZ2V0UmVh
ZGVyKCkuY29uc3RydWN0b3I7Ci0KLX0sICdDYW4gZ2V0IHRoZSBSZWFkYWJsZVN0cmVhbVJlYWRl
ciBjb25zdHJ1Y3RvciBpbmRpcmVjdGx5Jyk7Ci0KLXRlc3QoKCkgPT4gewotCi0gIGFzc2VydF90
aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBuZXcgUmVhZGFibGVTdHJlYW1SZWFkZXIoJ3Bv
dGF0bycpKTsKLSAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IG5ldyBSZWFk
YWJsZVN0cmVhbVJlYWRlcih7fSkpOwotICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwg
KCkgPT4gbmV3IFJlYWRhYmxlU3RyZWFtUmVhZGVyKCkpOwotCi19LCAnUmVhZGFibGVTdHJlYW1S
ZWFkZXIgY29uc3RydWN0b3Igc2hvdWxkIGdldCBhIFJlYWRhYmxlU3RyZWFtIG9iamVjdCBhcyBh
cmd1bWVudCcpOwotCi10ZXN0KCgpID0+IHsKLQotICBjb25zdCBtZXRob2RzID0gWydjYW5jZWwn
LCAnY29uc3RydWN0b3InLCAncmVhZCcsICdyZWxlYXNlTG9jayddOwotICBjb25zdCBwcm9wZXJ0
aWVzID0gbWV0aG9kcy5jb25jYXQoWydjbG9zZWQnXSkuc29ydCgpOwotCi0gIGNvbnN0IHJzUmVh
ZGVyID0gbmV3IFJlYWRhYmxlU3RyZWFtUmVhZGVyKG5ldyBSZWFkYWJsZVN0cmVhbSgpKTsKLSAg
Y29uc3QgcHJvdG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YocnNSZWFkZXIpOwotCi0gIGFzc2Vy
dF9hcnJheV9lcXVhbHMoT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMocHJvdG8pLnNvcnQoKSwg
cHJvcGVydGllcyk7Ci0KLSAgZm9yIChjb25zdCBtIG9mIG1ldGhvZHMpIHsKLSAgICBjb25zdCBw
cm9wRGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocHJvdG8sIG0pOwotICAg
IGFzc2VydF9lcXVhbHMocHJvcERlc2MuZW51bWVyYWJsZSwgZmFsc2UsICdtZXRob2Qgc2hvdWxk
IGJlIG5vbi1lbnVtZXJhYmxlJyk7Ci0gICAgYXNzZXJ0X2VxdWFscyhwcm9wRGVzYy5jb25maWd1
cmFibGUsIHRydWUsICdtZXRob2Qgc2hvdWxkIGJlIGNvbmZpZ3VyYWJsZScpOwotICAgIGFzc2Vy
dF9lcXVhbHMocHJvcERlc2Mud3JpdGFibGUsIHRydWUsICdtZXRob2Qgc2hvdWxkIGJlIHdyaXRh
YmxlJyk7Ci0gICAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgcnNSZWFkZXJbbV0sICdmdW5jdGlvbics
ICdzaG91bGQgaGF2ZSBiZSBhIG1ldGhvZCcpOwotICB9Ci0KLSAgY29uc3QgY2xvc2VkUHJvcERl
c2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHByb3RvLCAnY2xvc2VkJyk7Ci0g
IGFzc2VydF9lcXVhbHMoY2xvc2VkUHJvcERlc2MuZW51bWVyYWJsZSwgZmFsc2UsICdjbG9zZWQg
c2hvdWxkIGJlIG5vbi1lbnVtZXJhYmxlJyk7Ci0gIGFzc2VydF9lcXVhbHMoY2xvc2VkUHJvcERl
c2MuY29uZmlndXJhYmxlLCB0cnVlLCAnY2xvc2VkIHNob3VsZCBiZSBjb25maWd1cmFibGUnKTsK
LSAgYXNzZXJ0X25vdF9lcXVhbHMoY2xvc2VkUHJvcERlc2MuZ2V0LCB1bmRlZmluZWQsICdjbG9z
ZWQgc2hvdWxkIGhhdmUgYSBnZXR0ZXInKTsKLSAgYXNzZXJ0X2VxdWFscyhjbG9zZWRQcm9wRGVz
Yy5zZXQsIHVuZGVmaW5lZCwgJ2Nsb3NlZCBzaG91bGQgbm90IGhhdmUgYSBzZXR0ZXInKTsKLQot
ICBhc3NlcnRfZXF1YWxzKHJzUmVhZGVyLmNhbmNlbC5sZW5ndGgsIDEsICdjYW5jZWwgaGFzIDEg
cGFyYW1ldGVyJyk7Ci0gIGFzc2VydF9ub3RfZXF1YWxzKHJzUmVhZGVyLmNsb3NlZCwgdW5kZWZp
bmVkLCAnaGFzIGEgbm9uLXVuZGVmaW5lZCBjbG9zZWQgcHJvcGVydHknKTsKLSAgYXNzZXJ0X2Vx
dWFscyh0eXBlb2YgcnNSZWFkZXIuY2xvc2VkLnRoZW4sICdmdW5jdGlvbicsICdjbG9zZWQgcHJv
cGVydHkgaXMgdGhlbmFibGUnKTsKLSAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgcnNSZWFkZXIuY29u
c3RydWN0b3IsICdmdW5jdGlvbicsICdoYXMgYSBjb25zdHJ1Y3RvciBtZXRob2QnKTsKLSAgYXNz
ZXJ0X2VxdWFscyhyc1JlYWRlci5jb25zdHJ1Y3Rvci5sZW5ndGgsIDEsICdjb25zdHJ1Y3RvciBo
YXMgMSBwYXJhbWV0ZXInKTsKLSAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgcnNSZWFkZXIucmVhZCwg
J2Z1bmN0aW9uJywgJ2hhcyBhIGdldFJlYWRlciBtZXRob2QnKTsKLSAgYXNzZXJ0X2VxdWFscyhy
c1JlYWRlci5yZWFkLmxlbmd0aCwgMCwgJ3JlYWQgaGFzIG5vIHBhcmFtZXRlcnMnKTsKLSAgYXNz
ZXJ0X2VxdWFscyh0eXBlb2YgcnNSZWFkZXIucmVsZWFzZUxvY2ssICdmdW5jdGlvbicsICdoYXMg
YSByZWxlYXNlTG9jayBtZXRob2QnKTsKLSAgYXNzZXJ0X2VxdWFscyhyc1JlYWRlci5yZWxlYXNl
TG9jay5sZW5ndGgsIDAsICdyZWxlYXNlTG9jayBoYXMgbm8gcGFyYW1ldGVycycpOwotCi19LCAn
UmVhZGFibGVTdHJlYW1SZWFkZXIgaW5zdGFuY2VzIHNob3VsZCBoYXZlIHRoZSBjb3JyZWN0IGxp
c3Qgb2YgcHJvcGVydGllcycpOwotCi10ZXN0KCgpID0+IHsKLQotICBjb25zdCByc1JlYWRlciA9
IG5ldyBSZWFkYWJsZVN0cmVhbVJlYWRlcihuZXcgUmVhZGFibGVTdHJlYW0oKSk7Ci0gIGFzc2Vy
dF9lcXVhbHMocnNSZWFkZXIuY2xvc2VkLCByc1JlYWRlci5jbG9zZWQsICdjbG9zZWQgc2hvdWxk
IHJldHVybiB0aGUgc2FtZSBwcm9taXNlJyk7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbVJlYWRlciBj
bG9zZWQgc2hvdWxkIGFsd2F5cyByZXR1cm4gdGhlIHNhbWUgcHJvbWlzZSBvYmplY3QnKTsKLQot
dGVzdCgoKSA9PiB7Ci0KLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oKTsKLSAgbmV3
IFJlYWRhYmxlU3RyZWFtUmVhZGVyKHJzKTsgLy8gQ29uc3RydWN0aW5nIGRpcmVjdGx5IHRoZSBm
aXJzdCB0aW1lIHNob3VsZCBiZSBmaW5lLgotICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3Io
KSwgKCkgPT4gbmV3IFJlYWRhYmxlU3RyZWFtUmVhZGVyKHJzKSwKLSAgICAgICAgICAgICAgICAn
Y29uc3RydWN0aW5nIGRpcmVjdGx5IHRoZSBzZWNvbmQgdGltZSBzaG91bGQgZmFpbCcpOwotCi19
LCAnQ29uc3RydWN0aW5nIGEgUmVhZGFibGVTdHJlYW1SZWFkZXIgZGlyZWN0bHkgc2hvdWxkIGZh
aWwgaWYgdGhlIHN0cmVhbSBpcyBhbHJlYWR5IGxvY2tlZCAodmlhIGRpcmVjdCAnICsKLSAgICdj
b25zdHJ1Y3Rpb24pJyk7Ci0KLXRlc3QoKCkgPT4gewotCi0gIGNvbnN0IHJzID0gbmV3IFJlYWRh
YmxlU3RyZWFtKCk7Ci0gIG5ldyBSZWFkYWJsZVN0cmVhbVJlYWRlcihycyk7IC8vIENvbnN0cnVj
dGluZyBkaXJlY3RseSBzaG91bGQgYmUgZmluZS4KLSAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVy
cm9yKCksICgpID0+IHJzLmdldFJlYWRlcigpLCAnZ2V0UmVhZGVyKCkgc2hvdWxkIGZhaWwnKTsK
LQotfSwgJ0dldHRpbmcgYSBSZWFkYWJsZVN0cmVhbVJlYWRlciB2aWEgZ2V0UmVhZGVyIHNob3Vs
ZCBmYWlsIGlmIHRoZSBzdHJlYW0gaXMgYWxyZWFkeSBsb2NrZWQgKHZpYSBkaXJlY3QgJyArCi0g
ICAnY29uc3RydWN0aW9uKScpOwotCi10ZXN0KCgpID0+IHsKLQotICBjb25zdCBycyA9IG5ldyBS
ZWFkYWJsZVN0cmVhbSgpOwotICBycy5nZXRSZWFkZXIoKTsgLy8gZ2V0UmVhZGVyKCkgc2hvdWxk
IGJlIGZpbmUuCi0gIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBuZXcgUmVh
ZGFibGVTdHJlYW1SZWFkZXIocnMpLCAnY29uc3RydWN0aW5nIGRpcmVjdGx5IHNob3VsZCBmYWls
Jyk7Ci0KLX0sICdDb25zdHJ1Y3RpbmcgYSBSZWFkYWJsZVN0cmVhbVJlYWRlciBkaXJlY3RseSBz
aG91bGQgZmFpbCBpZiB0aGUgc3RyZWFtIGlzIGFscmVhZHkgbG9ja2VkICh2aWEgZ2V0UmVhZGVy
KScpOwotCi10ZXN0KCgpID0+IHsKLQotICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSgp
OwotICBycy5nZXRSZWFkZXIoKTsgLy8gZ2V0UmVhZGVyKCkgc2hvdWxkIGJlIGZpbmUuCi0gIGFz
c2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBycy5nZXRSZWFkZXIoKSwgJ2dldFJl
YWRlcigpIHNob3VsZCBmYWlsJyk7Ci0KLX0sICdHZXR0aW5nIGEgUmVhZGFibGVTdHJlYW1SZWFk
ZXIgdmlhIGdldFJlYWRlciBzaG91bGQgZmFpbCBpZiB0aGUgc3RyZWFtIGlzIGFscmVhZHkgbG9j
a2VkICh2aWEgZ2V0UmVhZGVyKScpOwotCi10ZXN0KCgpID0+IHsKLQotICBjb25zdCBycyA9IG5l
dyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgYy5jbG9zZSgpOwotICAg
IH0KLSAgfSk7Ci0KLSAgbmV3IFJlYWRhYmxlU3RyZWFtUmVhZGVyKHJzKTsgLy8gQ29uc3RydWN0
aW5nIGRpcmVjdGx5IHNob3VsZCBub3QgdGhyb3cuCi0KLX0sICdDb25zdHJ1Y3RpbmcgYSBSZWFk
YWJsZVN0cmVhbVJlYWRlciBkaXJlY3RseSBzaG91bGQgYmUgT0sgaWYgdGhlIHN0cmVhbSBpcyBj
bG9zZWQnKTsKLQotdGVzdCgoKSA9PiB7Ci0KLSAgY29uc3QgdGhlRXJyb3IgPSBuZXcgRXJyb3Io
J2RvblwndCBzYXkgaSBkaWRuXCd0IHdhcm4geWEnKTsKLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFi
bGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGMuZXJyb3IodGhlRXJyb3IpOwotICAg
IH0KLSAgfSk7Ci0KLSAgbmV3IFJlYWRhYmxlU3RyZWFtUmVhZGVyKHJzKTsgLy8gQ29uc3RydWN0
aW5nIGRpcmVjdGx5IHNob3VsZCBub3QgdGhyb3cuCi0KLX0sICdDb25zdHJ1Y3RpbmcgYSBSZWFk
YWJsZVN0cmVhbVJlYWRlciBkaXJlY3RseSBzaG91bGQgYmUgT0sgaWYgdGhlIHN0cmVhbSBpcyBl
cnJvcmVkJyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgbGV0IGNvbnRyb2xsZXI7Ci0g
IGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0gICAgICBj
b250cm9sbGVyID0gYzsKLSAgICB9Ci0gIH0pOwotICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFk
ZXIoKTsKLQotICBjb25zdCBwcm9taXNlID0gcmVhZGVyLnJlYWQoKS50aGVuKHJlc3VsdCA9PiB7
Ci0gICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0LCB7IHZhbHVlOiAnYScsIGRvbmU6IGZh
bHNlIH0sICdyZWFkKCkgc2hvdWxkIGZ1bGZpbGwgd2l0aCB0aGUgZW5xdWV1ZWQgY2h1bmsnKTsK
LSAgfSk7Ci0KLSAgY29udHJvbGxlci5lbnF1ZXVlKCdhJyk7Ci0gIHJldHVybiBwcm9taXNlOwot
Ci19LCAnUmVhZGluZyBmcm9tIGEgcmVhZGVyIGZvciBhbiBlbXB0eSBzdHJlYW0gd2lsbCB3YWl0
IHVudGlsIGEgY2h1bmsgaXMgYXZhaWxhYmxlJyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0K
LSAgbGV0IGNhbmNlbENhbGxlZCA9IGZhbHNlOwotICBjb25zdCBwYXNzZWRSZWFzb24gPSBuZXcg
RXJyb3IoJ2l0IHdhc25cJ3QgdGhlIHJpZ2h0IHRpbWUsIHNvcnJ5Jyk7Ci0gIGNvbnN0IHJzID0g
bmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBjYW5jZWwocmVhc29uKSB7Ci0gICAgICBhc3NlcnRf
dHJ1ZShycy5sb2NrZWQsICd0aGUgc3RyZWFtIHNob3VsZCBzdGlsbCBiZSBsb2NrZWQnKTsKLSAg
ICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBycy5nZXRSZWFkZXIoKSwg
J3Nob3VsZCBub3QgYmUgYWJsZSB0byBnZXQgYW5vdGhlciByZWFkZXInKTsKLSAgICAgIGFzc2Vy
dF9lcXVhbHMocmVhc29uLCBwYXNzZWRSZWFzb24sICd0aGUgY2FuY2VsbGF0aW9uIHJlYXNvbiBp
cyBwYXNzZWQgdGhyb3VnaCB0byB0aGUgdW5kZXJseWluZyBzb3VyY2UnKTsKLSAgICAgIGNhbmNl
bENhbGxlZCA9IHRydWU7Ci0gICAgfQotICB9KTsKLQotICBjb25zdCByZWFkZXIgPSBycy5nZXRS
ZWFkZXIoKTsKLSAgcmV0dXJuIHJlYWRlci5jYW5jZWwocGFzc2VkUmVhc29uKS50aGVuKCgpID0+
IGFzc2VydF90cnVlKGNhbmNlbENhbGxlZCkpOwotCi19LCAnY2FuY2VsKCkgb24gYSByZWFkZXIg
ZG9lcyBub3QgcmVsZWFzZSB0aGUgcmVhZGVyJyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0K
LSAgbGV0IGNvbnRyb2xsZXI7Ci0gIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAg
ICBzdGFydChjKSB7Ci0gICAgICBjb250cm9sbGVyID0gYzsKLSAgICB9Ci0gIH0pOwotCi0gIGNv
bnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcigpOwotICBjb25zdCBwcm9taXNlID0gcmVhZGVyLmNs
b3NlZDsKLQotICBjb250cm9sbGVyLmNsb3NlKCk7Ci0gIHJldHVybiBwcm9taXNlOwotCi19LCAn
Y2xvc2VkIHNob3VsZCBiZSBmdWxmaWxsZWQgYWZ0ZXIgc3RyZWFtIGlzIGNsb3NlZCAoLmNsb3Nl
ZCBhY2Nlc3MgYmVmb3JlIGFjcXVpcmluZyknKTsKLQotcHJvbWlzZV90ZXN0KHQgPT4gewotCi0g
IGxldCBjb250cm9sbGVyOwotICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAg
c3RhcnQoYykgewotICAgICAgY29udHJvbGxlciA9IGM7Ci0gICAgfQotICB9KTsKLQotICBjb25z
dCByZWFkZXIxID0gcnMuZ2V0UmVhZGVyKCk7Ci0KLSAgcmVhZGVyMS5yZWxlYXNlTG9jaygpOwot
Ci0gIGNvbnN0IHJlYWRlcjIgPSBycy5nZXRSZWFkZXIoKTsKLSAgY29udHJvbGxlci5jbG9zZSgp
OwotCi0gIHJldHVybiBQcm9taXNlLmFsbChbCi0gICAgcHJvbWlzZV9yZWplY3RzKHQsIG5ldyBU
eXBlRXJyb3IoKSwgcmVhZGVyMS5jbG9zZWQpLAotICAgIHJlYWRlcjIuY2xvc2VkCi0gIF0pOwot
Ci19LCAnY2xvc2VkIHNob3VsZCBiZSByZWplY3RlZCBhZnRlciByZWFkZXIgcmVsZWFzZXMgaXRz
IGxvY2sgKG11bHRpcGxlIHN0cmVhbSBsb2NrcyknKTsKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsK
LQotICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAg
ICAgYy5lbnF1ZXVlKCdhJyk7Ci0gICAgICBjLmVucXVldWUoJ2InKTsKLSAgICAgIGMuY2xvc2Uo
KTsKLSAgICB9Ci0gIH0pOwotCi0gIGNvbnN0IHJlYWRlcjEgPSBycy5nZXRSZWFkZXIoKTsKLSAg
Y29uc3QgcHJvbWlzZTEgPSByZWFkZXIxLnJlYWQoKS50aGVuKHIgPT4gewotICAgIGFzc2VydF9v
YmplY3RfZXF1YWxzKHIsIHsgdmFsdWU6ICdhJywgZG9uZTogZmFsc2UgfSwgJ3JlYWRpbmcgdGhl
IGZpcnN0IGNodW5rIGZyb20gcmVhZGVyMSB3b3JrcycpOwotICB9KTsKLSAgcmVhZGVyMS5yZWxl
YXNlTG9jaygpOwotCi0gIGNvbnN0IHJlYWRlcjIgPSBycy5nZXRSZWFkZXIoKTsKLSAgY29uc3Qg
cHJvbWlzZTIgPSByZWFkZXIyLnJlYWQoKS50aGVuKHIgPT4gewotICAgIGFzc2VydF9vYmplY3Rf
ZXF1YWxzKHIsIHsgdmFsdWU6ICdiJywgZG9uZTogZmFsc2UgfSwgJ3JlYWRpbmcgdGhlIHNlY29u
ZCBjaHVuayBmcm9tIHJlYWRlcjIgd29ya3MnKTsKLSAgfSk7Ci0gIHJlYWRlcjIucmVsZWFzZUxv
Y2soKTsKLQotICByZXR1cm4gUHJvbWlzZS5hbGwoW3Byb21pc2UxLCBwcm9taXNlMl0pOwotCi19
LCAnTXVsdGlwbGUgcmVhZGVycyBjYW4gYWNjZXNzIHRoZSBzdHJlYW0gaW4gc2VxdWVuY2UnKTsK
LQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0o
ewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGMuZW5xdWV1ZSgnYScpOwotICAgIH0KLSAgfSk7Ci0K
LSAgY29uc3QgcmVhZGVyMSA9IHJzLmdldFJlYWRlcigpOwotICByZWFkZXIxLnJlbGVhc2VMb2Nr
KCk7Ci0KLSAgY29uc3QgcmVhZGVyMiA9IHJzLmdldFJlYWRlcigpOwotCi0gIC8vIFNob3VsZCBi
ZSBhIG5vLW9wCi0gIHJlYWRlcjEucmVsZWFzZUxvY2soKTsKLQotICByZXR1cm4gcmVhZGVyMi5y
ZWFkKCkudGhlbihyZXN1bHQgPT4gewotICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdCwg
eyB2YWx1ZTogJ2EnLCBkb25lOiBmYWxzZSB9LAotICAgICAgICAgICAgICAgICAgICAgICAgICdy
ZWFkKCkgc2hvdWxkIHN0aWxsIHdvcmsgb24gcmVhZGVyMiBldmVuIGFmdGVyIHJlYWRlcjEgaXMg
cmVsZWFzZWQnKTsKLSAgfSk7Ci0KLX0sICdDYW5ub3QgdXNlIGFuIGFscmVhZHktcmVsZWFzZWQg
cmVhZGVyIHRvIHVubG9jayBhIHN0cmVhbSBhZ2FpbicpOwotCi1wcm9taXNlX3Rlc3QodCA9PiB7
Ci0KLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAg
ICAgIGMuZW5xdWV1ZSgnYScpOwotICAgIH0sCi0gICAgY2FuY2VsKCkgewotICAgICAgYXNzZXJ0
X3VucmVhY2hlZCgndW5kZXJseWluZyBzb3VyY2UgY2FuY2VsIHNob3VsZCBub3QgYmUgY2FsbGVk
Jyk7Ci0gICAgfQotICB9KTsKLQotICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKLSAg
cmVhZGVyLnJlbGVhc2VMb2NrKCk7Ci0gIGNvbnN0IGNhbmNlbFByb21pc2UgPSByZWFkZXIuY2Fu
Y2VsKCk7Ci0KLSAgY29uc3QgcmVhZGVyMiA9IHJzLmdldFJlYWRlcigpOwotICBjb25zdCByZWFk
UHJvbWlzZSA9IHJlYWRlcjIucmVhZCgpLnRoZW4ociA9PiB7Ci0gICAgYXNzZXJ0X29iamVjdF9l
cXVhbHMociwgeyB2YWx1ZTogJ2EnLCBkb25lOiBmYWxzZSB9LCAnYSBuZXcgcmVhZGVyIHNob3Vs
ZCBiZSBhYmxlIHRvIHJlYWQgYSBjaHVuaycpOwotICB9KTsKLQotICByZXR1cm4gUHJvbWlzZS5h
bGwoWwotICAgIHByb21pc2VfcmVqZWN0cyh0LCBuZXcgVHlwZUVycm9yKCksIGNhbmNlbFByb21p
c2UpLAotICAgIHJlYWRQcm9taXNlCi0gIF0pOwotCi19LCAnY2FuY2VsKCkgb24gYSByZWxlYXNl
ZCByZWFkZXIgaXMgYSBuby1vcCBhbmQgZG9lcyBub3QgcGFzcyB0aHJvdWdoJyk7Ci0KLXByb21p
c2VfdGVzdCh0ID0+IHsKLQotICBjb25zdCBwcm9taXNlQXNzZXJ0cyA9IFtdOwotCi0gIGxldCBj
b250cm9sbGVyOwotICBjb25zdCB0aGVFcnJvciA9IHsgbmFtZTogJ3VuaXF1ZSBlcnJvcicgfTsK
LSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAg
IGNvbnRyb2xsZXIgPSBjOwotICAgIH0KLSAgfSk7Ci0KLSAgY29uc3QgcmVhZGVyMSA9IHJzLmdl
dFJlYWRlcigpOwotCi0gIHByb21pc2VBc3NlcnRzLnB1c2goCi0gICAgcHJvbWlzZV9yZWplY3Rz
KHQsIHRoZUVycm9yLCByZWFkZXIxLmNsb3NlZCksCi0gICAgcHJvbWlzZV9yZWplY3RzKHQsIHRo
ZUVycm9yLCByZWFkZXIxLnJlYWQoKSkKLSAgKTsKLQotICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBl
RXJyb3IoKSwgKCkgPT4gcnMuZ2V0UmVhZGVyKCksICd0cnlpbmcgdG8gZ2V0IGFub3RoZXIgcmVh
ZGVyIGJlZm9yZSBlcnJvcmluZyBzaG91bGQgdGhyb3cnKTsKLQotICBjb250cm9sbGVyLmVycm9y
KHRoZUVycm9yKTsKLQotICByZWFkZXIxLnJlbGVhc2VMb2NrKCk7Ci0KLSAgY29uc3QgcmVhZGVy
MiA9IHJzLmdldFJlYWRlcigpOwotCi0gIHByb21pc2VBc3NlcnRzLnB1c2goCi0gICAgcHJvbWlz
ZV9yZWplY3RzKHQsIHRoZUVycm9yLCByZWFkZXIyLmNsb3NlZCksCi0gICAgcHJvbWlzZV9yZWpl
Y3RzKHQsIHRoZUVycm9yLCByZWFkZXIyLnJlYWQoKSkKLSAgKTsKLQotICByZXR1cm4gUHJvbWlz
ZS5hbGwocHJvbWlzZUFzc2VydHMpOwotCi19LCAnR2V0dGluZyBhIHNlY29uZCByZWFkZXIgYWZ0
ZXIgZXJyb3JpbmcgdGhlIHN0cmVhbSBhbmQgcmVsZWFzaW5nIHRoZSByZWFkZXIgc2hvdWxkIHN1
Y2NlZWQnKTsKLQotcHJvbWlzZV90ZXN0KHQgPT4gewotCi0gIGxldCBjb250cm9sbGVyOwotICBj
b25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgY29u
dHJvbGxlciA9IGM7Ci0gICAgfQotICB9KTsKLQotICBjb25zdCBwcm9taXNlID0gcnMuZ2V0UmVh
ZGVyKCkuY2xvc2VkLnRoZW4oCi0gICAgdC51bnJlYWNoZWRfZnVuYygnY2xvc2VkIHByb21pc2Ug
c2hvdWxkIG5vdCBiZSBmdWxmaWxsZWQgd2hlbiBzdHJlYW0gaXMgZXJyb3JlZCcpLAotICAgIGVy
ciA9PiB7Ci0gICAgICBhc3NlcnRfZXF1YWxzKGVyciwgdW5kZWZpbmVkLCAncGFzc2VkIGVycm9y
IHNob3VsZCBiZSB1bmRlZmluZWQgYXMgaXQgd2FzJyk7Ci0gICAgfQotICApOwotCi0gIGNvbnRy
b2xsZXIuZXJyb3IoKTsKLSAgcmV0dXJuIHByb21pc2U7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbVJl
YWRlciBjbG9zZWQgcHJvbWlzZSBzaG91bGQgYmUgcmVqZWN0ZWQgd2l0aCB1bmRlZmluZWQgaWYg
dGhhdCBpcyB0aGUgZXJyb3InKTsKLQotCi1wcm9taXNlX3Rlc3QodCA9PiB7Ci0KLSAgY29uc3Qg
cnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KCkgewotICAgICAgcmV0dXJuIFBy
b21pc2UucmVqZWN0KCk7Ci0gICAgfQotICB9KTsKLQotICByZXR1cm4gcnMuZ2V0UmVhZGVyKCku
cmVhZCgpLnRoZW4oCi0gICAgdC51bnJlYWNoZWRfZnVuYygncmVhZCBwcm9taXNlIHNob3VsZCBu
b3QgYmUgZnVsZmlsbGVkIHdoZW4gc3RyZWFtIGlzIGVycm9yZWQnKSwKLSAgICBlcnIgPT4gewot
ICAgICAgYXNzZXJ0X2VxdWFscyhlcnIsIHVuZGVmaW5lZCwgJ3Bhc3NlZCBlcnJvciBzaG91bGQg
YmUgdW5kZWZpbmVkIGFzIGl0IHdhcycpOwotICAgIH0KLSAgKTsKLQotfSwgJ1JlYWRhYmxlU3Ry
ZWFtUmVhZGVyOiBpZiBzdGFydCByZWplY3RzIHdpdGggbm8gcGFyYW1ldGVyLCBpdCBzaG91bGQg
ZXJyb3IgdGhlIHN0cmVhbSB3aXRoIGFuIHVuZGVmaW5lZCBlcnJvcicpOwotCi1wcm9taXNlX3Rl
c3QodCA9PiB7Ci0KLSAgY29uc3QgdGhlRXJyb3IgPSB7IG5hbWU6ICd1bmlxdWUgc3RyaW5nJyB9
OwotICBsZXQgY29udHJvbGxlcjsKLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewot
ICAgIHN0YXJ0KGMpIHsKLSAgICAgIGNvbnRyb2xsZXIgPSBjOwotICAgIH0KLSAgfSk7Ci0KLSAg
Y29uc3QgcHJvbWlzZSA9IHByb21pc2VfcmVqZWN0cyh0LCB0aGVFcnJvciwgcnMuZ2V0UmVhZGVy
KCkuY2xvc2VkKTsKLQotICBjb250cm9sbGVyLmVycm9yKHRoZUVycm9yKTsKLSAgcmV0dXJuIHBy
b21pc2U7Ci0KLX0sICdFcnJvcmluZyBhIFJlYWRhYmxlU3RyZWFtIGFmdGVyIGNoZWNraW5nIGNs
b3NlZCBzaG91bGQgcmVqZWN0IFJlYWRhYmxlU3RyZWFtUmVhZGVyIGNsb3NlZCBwcm9taXNlJyk7
Ci0KLXByb21pc2VfdGVzdCh0ID0+IHsKLQotICBjb25zdCB0aGVFcnJvciA9IHsgbmFtZTogJ3Vu
aXF1ZSBzdHJpbmcnIH07Ci0gIGxldCBjb250cm9sbGVyOwotICBjb25zdCBycyA9IG5ldyBSZWFk
YWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgY29udHJvbGxlciA9IGM7Ci0gICAg
fQotICB9KTsKLQotICBjb250cm9sbGVyLmVycm9yKHRoZUVycm9yKTsKLQotICAvLyBMZXQncyBj
YWxsIGdldFJlYWRlciB0d2ljZSBmb3IgZXh0cmEgdGVzdCBjb3ZlcmFnZSBvZiB0aGlzIGNvZGUg
cGF0aC4KLSAgcnMuZ2V0UmVhZGVyKCkucmVsZWFzZUxvY2soKTsKLQotICByZXR1cm4gcHJvbWlz
ZV9yZWplY3RzKHQsIHRoZUVycm9yLCBycy5nZXRSZWFkZXIoKS5jbG9zZWQpOwotCi19LCAnRXJy
b3JpbmcgYSBSZWFkYWJsZVN0cmVhbSBiZWZvcmUgY2hlY2tpbmcgY2xvc2VkIHNob3VsZCByZWpl
Y3QgUmVhZGFibGVTdHJlYW1SZWFkZXIgY2xvc2VkIHByb21pc2UnKTsKLQotcHJvbWlzZV90ZXN0
KCgpID0+IHsKLQotICBsZXQgY29udHJvbGxlcjsKLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVT
dHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGNvbnRyb2xsZXIgPSBjOwotICAgIH0KLSAg
fSk7Ci0gIGNvbnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcigpOwotCi0gIGNvbnN0IHByb21pc2Ug
PSBQcm9taXNlLmFsbChbCi0gICAgcmVhZGVyLnJlYWQoKS50aGVuKHJlc3VsdCA9PiB7Ci0gICAg
ICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTog
dHJ1ZSB9LCAncmVhZCgpIHNob3VsZCBmdWxmaWxsIHdpdGggY2xvc2UgKDEpJyk7Ci0gICAgfSks
Ci0gICAgcmVhZGVyLnJlYWQoKS50aGVuKHJlc3VsdCA9PiB7Ci0gICAgICBhc3NlcnRfb2JqZWN0
X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9LCAncmVhZCgp
IHNob3VsZCBmdWxmaWxsIHdpdGggY2xvc2UgKDIpJyk7Ci0gICAgfSksCi0gICAgcmVhZGVyLmNs
b3NlZAotICBdKTsKLQotICBjb250cm9sbGVyLmNsb3NlKCk7Ci0gIHJldHVybiBwcm9taXNlOwot
Ci19LCAnUmVhZGluZyB0d2ljZSBvbiBhIHN0cmVhbSB0aGF0IGdldHMgY2xvc2VkJyk7Ci0KLXBy
b21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgbGV0IGNvbnRyb2xsZXI7Ci0gIGNvbnN0IHJzID0gbmV3
IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0gICAgICBjb250cm9sbGVyID0gYzsK
LSAgICB9Ci0gIH0pOwotCi0gIGNvbnRyb2xsZXIuY2xvc2UoKTsKLSAgY29uc3QgcmVhZGVyID0g
cnMuZ2V0UmVhZGVyKCk7Ci0KLSAgcmV0dXJuIFByb21pc2UuYWxsKFsKLSAgICByZWFkZXIucmVh
ZCgpLnRoZW4ocmVzdWx0ID0+IHsKLSAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdCwg
eyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0sICdyZWFkKCkgc2hvdWxkIGZ1bGZpbGwg
d2l0aCBjbG9zZSAoMSknKTsKLSAgICB9KSwKLSAgICByZWFkZXIucmVhZCgpLnRoZW4ocmVzdWx0
ID0+IHsKLSAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdCwgeyB2YWx1ZTogdW5kZWZp
bmVkLCBkb25lOiB0cnVlIH0sICdyZWFkKCkgc2hvdWxkIGZ1bGZpbGwgd2l0aCBjbG9zZSAoMikn
KTsKLSAgICB9KSwKLSAgICByZWFkZXIuY2xvc2VkCi0gIF0pOwotCi19LCAnUmVhZGluZyB0d2lj
ZSBvbiBhIGNsb3NlZCBzdHJlYW0nKTsKLQotcHJvbWlzZV90ZXN0KHQgPT4gewotCi0gIGxldCBj
b250cm9sbGVyOwotICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQo
YykgewotICAgICAgY29udHJvbGxlciA9IGM7Ci0gICAgfQotICB9KTsKLQotICBjb25zdCBteUVy
cm9yID0geyBuYW1lOiAnbWFzaGVkIHBvdGF0b2VzJyB9OwotICBjb250cm9sbGVyLmVycm9yKG15
RXJyb3IpOwotCi0gIGNvbnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcigpOwotCi0gIHJldHVybiBQ
cm9taXNlLmFsbChbCi0gICAgcHJvbWlzZV9yZWplY3RzKHQsIG15RXJyb3IsIHJlYWRlci5yZWFk
KCkpLAotICAgIHByb21pc2VfcmVqZWN0cyh0LCBteUVycm9yLCByZWFkZXIucmVhZCgpKSwKLSAg
ICBwcm9taXNlX3JlamVjdHModCwgbXlFcnJvciwgcmVhZGVyLmNsb3NlZCkKLSAgXSk7Ci0KLX0s
ICdSZWFkaW5nIHR3aWNlIG9uIGFuIGVycm9yZWQgc3RyZWFtJyk7Ci0KLXByb21pc2VfdGVzdCh0
ID0+IHsKLQotICBsZXQgY29udHJvbGxlcjsKLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJl
YW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGNvbnRyb2xsZXIgPSBjOwotICAgIH0KLSAgfSk7
Ci0KLSAgY29uc3QgbXlFcnJvciA9IHsgbmFtZTogJ21hc2hlZCBwb3RhdG9lcycgfTsKLSAgY29u
c3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7Ci0KLSAgY29uc3QgcHJvbWlzZSA9IFByb21pc2Uu
YWxsKFsKLSAgICBwcm9taXNlX3JlamVjdHModCwgbXlFcnJvciwgcmVhZGVyLnJlYWQoKSksCi0g
ICAgcHJvbWlzZV9yZWplY3RzKHQsIG15RXJyb3IsIHJlYWRlci5yZWFkKCkpLAotICAgIHByb21p
c2VfcmVqZWN0cyh0LCBteUVycm9yLCByZWFkZXIuY2xvc2VkKQotICBdKTsKLQotICBjb250cm9s
bGVyLmVycm9yKG15RXJyb3IpOwotICByZXR1cm4gcHJvbWlzZTsKLQotfSwgJ1JlYWRpbmcgdHdp
Y2Ugb24gYSBzdHJlYW0gdGhhdCBnZXRzIGVycm9yZWQnKTsKLQotZG9uZSgpOwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3Jl
YWRhYmxlLXN0cmVhbXMvcmVhZGFibGUtc3RyZWFtLXJlYWRlci5zZXJ2aWNld29ya2VyLmh0dHBz
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbS1yZWFkZXIuc2Vydmlj
ZXdvcmtlci5odHRwcy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDRhMjQzNDhkZGFmNDgwYzI4OGFjOTcxZWYwMTczODM1NjhhNDlmMDkuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvcmVhZGFibGUtc3Ry
ZWFtLXJlYWRlci5zZXJ2aWNld29ya2VyLmh0dHBzLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxs
CkBAIC0xLDI5ICswLDAgQEAKLQotUEFTUyBTZXJ2aWNlIHdvcmtlciB0ZXN0IHNldHVwIAotUEFT
UyBDYW4gZ2V0IHRoZSBSZWFkYWJsZVN0cmVhbVJlYWRlciBjb25zdHJ1Y3RvciBpbmRpcmVjdGx5
IAotUEFTUyBSZWFkYWJsZVN0cmVhbVJlYWRlciBjb25zdHJ1Y3RvciBzaG91bGQgZ2V0IGEgUmVh
ZGFibGVTdHJlYW0gb2JqZWN0IGFzIGFyZ3VtZW50IAotUEFTUyBSZWFkYWJsZVN0cmVhbVJlYWRl
ciBpbnN0YW5jZXMgc2hvdWxkIGhhdmUgdGhlIGNvcnJlY3QgbGlzdCBvZiBwcm9wZXJ0aWVzIAot
UEFTUyBSZWFkYWJsZVN0cmVhbVJlYWRlciBjbG9zZWQgc2hvdWxkIGFsd2F5cyByZXR1cm4gdGhl
IHNhbWUgcHJvbWlzZSBvYmplY3QgCi1QQVNTIENvbnN0cnVjdGluZyBhIFJlYWRhYmxlU3RyZWFt
UmVhZGVyIGRpcmVjdGx5IHNob3VsZCBmYWlsIGlmIHRoZSBzdHJlYW0gaXMgYWxyZWFkeSBsb2Nr
ZWQgKHZpYSBkaXJlY3QgY29uc3RydWN0aW9uKSAKLVBBU1MgR2V0dGluZyBhIFJlYWRhYmxlU3Ry
ZWFtUmVhZGVyIHZpYSBnZXRSZWFkZXIgc2hvdWxkIGZhaWwgaWYgdGhlIHN0cmVhbSBpcyBhbHJl
YWR5IGxvY2tlZCAodmlhIGRpcmVjdCBjb25zdHJ1Y3Rpb24pIAotUEFTUyBDb25zdHJ1Y3Rpbmcg
YSBSZWFkYWJsZVN0cmVhbVJlYWRlciBkaXJlY3RseSBzaG91bGQgZmFpbCBpZiB0aGUgc3RyZWFt
IGlzIGFscmVhZHkgbG9ja2VkICh2aWEgZ2V0UmVhZGVyKSAKLVBBU1MgR2V0dGluZyBhIFJlYWRh
YmxlU3RyZWFtUmVhZGVyIHZpYSBnZXRSZWFkZXIgc2hvdWxkIGZhaWwgaWYgdGhlIHN0cmVhbSBp
cyBhbHJlYWR5IGxvY2tlZCAodmlhIGdldFJlYWRlcikgCi1QQVNTIENvbnN0cnVjdGluZyBhIFJl
YWRhYmxlU3RyZWFtUmVhZGVyIGRpcmVjdGx5IHNob3VsZCBiZSBPSyBpZiB0aGUgc3RyZWFtIGlz
IGNsb3NlZCAKLVBBU1MgQ29uc3RydWN0aW5nIGEgUmVhZGFibGVTdHJlYW1SZWFkZXIgZGlyZWN0
bHkgc2hvdWxkIGJlIE9LIGlmIHRoZSBzdHJlYW0gaXMgZXJyb3JlZCAKLVBBU1MgUmVhZGluZyBm
cm9tIGEgcmVhZGVyIGZvciBhbiBlbXB0eSBzdHJlYW0gd2lsbCB3YWl0IHVudGlsIGEgY2h1bmsg
aXMgYXZhaWxhYmxlIAotUEFTUyBjYW5jZWwoKSBvbiBhIHJlYWRlciBkb2VzIG5vdCByZWxlYXNl
IHRoZSByZWFkZXIgCi1QQVNTIGNsb3NlZCBzaG91bGQgYmUgZnVsZmlsbGVkIGFmdGVyIHN0cmVh
bSBpcyBjbG9zZWQgKC5jbG9zZWQgYWNjZXNzIGJlZm9yZSBhY3F1aXJpbmcpIAotUEFTUyBjbG9z
ZWQgc2hvdWxkIGJlIHJlamVjdGVkIGFmdGVyIHJlYWRlciByZWxlYXNlcyBpdHMgbG9jayAobXVs
dGlwbGUgc3RyZWFtIGxvY2tzKSAKLVBBU1MgTXVsdGlwbGUgcmVhZGVycyBjYW4gYWNjZXNzIHRo
ZSBzdHJlYW0gaW4gc2VxdWVuY2UgCi1QQVNTIENhbm5vdCB1c2UgYW4gYWxyZWFkeS1yZWxlYXNl
ZCByZWFkZXIgdG8gdW5sb2NrIGEgc3RyZWFtIGFnYWluIAotUEFTUyBjYW5jZWwoKSBvbiBhIHJl
bGVhc2VkIHJlYWRlciBpcyBhIG5vLW9wIGFuZCBkb2VzIG5vdCBwYXNzIHRocm91Z2ggCi1QQVNT
IEdldHRpbmcgYSBzZWNvbmQgcmVhZGVyIGFmdGVyIGVycm9yaW5nIHRoZSBzdHJlYW0gYW5kIHJl
bGVhc2luZyB0aGUgcmVhZGVyIHNob3VsZCBzdWNjZWVkIAotUEFTUyBSZWFkYWJsZVN0cmVhbVJl
YWRlciBjbG9zZWQgcHJvbWlzZSBzaG91bGQgYmUgcmVqZWN0ZWQgd2l0aCB1bmRlZmluZWQgaWYg
dGhhdCBpcyB0aGUgZXJyb3IgCi1QQVNTIFJlYWRhYmxlU3RyZWFtUmVhZGVyOiBpZiBzdGFydCBy
ZWplY3RzIHdpdGggbm8gcGFyYW1ldGVyLCBpdCBzaG91bGQgZXJyb3IgdGhlIHN0cmVhbSB3aXRo
IGFuIHVuZGVmaW5lZCBlcnJvciAKLVBBU1MgRXJyb3JpbmcgYSBSZWFkYWJsZVN0cmVhbSBhZnRl
ciBjaGVja2luZyBjbG9zZWQgc2hvdWxkIHJlamVjdCBSZWFkYWJsZVN0cmVhbVJlYWRlciBjbG9z
ZWQgcHJvbWlzZSAKLVBBU1MgRXJyb3JpbmcgYSBSZWFkYWJsZVN0cmVhbSBiZWZvcmUgY2hlY2tp
bmcgY2xvc2VkIHNob3VsZCByZWplY3QgUmVhZGFibGVTdHJlYW1SZWFkZXIgY2xvc2VkIHByb21p
c2UgCi1QQVNTIFJlYWRpbmcgdHdpY2Ugb24gYSBzdHJlYW0gdGhhdCBnZXRzIGNsb3NlZCAKLVBB
U1MgUmVhZGluZyB0d2ljZSBvbiBhIGNsb3NlZCBzdHJlYW0gCi1QQVNTIFJlYWRpbmcgdHdpY2Ug
b24gYW4gZXJyb3JlZCBzdHJlYW0gCi1QQVNTIFJlYWRpbmcgdHdpY2Ugb24gYSBzdHJlYW0gdGhh
dCBnZXRzIGVycm9yZWQgCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3JlYWRhYmxlLXN0cmVh
bS1yZWFkZXIuc2VydmljZXdvcmtlci5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvcmVhZGFibGUt
c3RyZWFtLXJlYWRlci5zZXJ2aWNld29ya2VyLmh0dHBzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGNjOGFmZTAzYTIxMzY0NWFlMWZhMmZlNzI0ZDc3MDk5ZjUzODRmYmQuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMv
cmVhZGFibGUtc3RyZWFtLXJlYWRlci5zZXJ2aWNld29ya2VyLmh0dHBzLmh0bWwKKysrIC9kZXYv
bnVsbApAQCAtMSwxMiArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9InV0
Zi04Ij4KLTx0aXRsZT5yZWFkYWJsZS1zdHJlYW0tcmVhZGVyLmpzIHNlcnZpY2Ugd29ya2VyIHdy
YXBwZXIgZmlsZTwvdGl0bGU+Ci0KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0
LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29y
a2VyL3Jlc291cmNlcy90ZXN0LWhlbHBlcnMuc3ViLmpzIj48L3NjcmlwdD4KLQotPHNjcmlwdD4K
LSd1c2Ugc3RyaWN0JzsKLXNlcnZpY2Vfd29ya2VyX3Rlc3QoJ3JlYWRhYmxlLXN0cmVhbS1yZWFk
ZXIuanMnLCAnU2VydmljZSB3b3JrZXIgdGVzdCBzZXR1cCcpOwotPC9zY3JpcHQ+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
cmVhZGFibGUtc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW0tcmVhZGVyLnNoYXJlZHdvcmtlci1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW0tcmVhZGVyLnNoYXJlZHdvcmtl
ci1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA5ZDVkMjUwOWQ3
ODQ3ZThjZDZmZTY2MDZhYTYwY2RkMzNhYTQ3NGUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvcmVhZGFibGUtc3RyZWFtLXJlYWRlci5z
aGFyZWR3b3JrZXItZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1D
T05TT0xFIE1FU1NBR0U6IFJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBTaGFy
ZWRXb3JrZXIKLQotSGFybmVzcyBFcnJvciAoRkFJTCksIG1lc3NhZ2UgPSBSZWZlcmVuY2VFcnJv
cjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogU2hhcmVkV29ya2VyCi0KLQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxl
LXN0cmVhbXMvcmVhZGFibGUtc3RyZWFtLXJlYWRlci5zaGFyZWR3b3JrZXIuaHRtbCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1z
dHJlYW1zL3JlYWRhYmxlLXN0cmVhbS1yZWFkZXIuc2hhcmVkd29ya2VyLmh0bWwKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI3N2U0ZWQyMzgwZDg0MDc5MGE3OGYxY2RiZmI3NDJhNDQw
NDRhMzguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxl
LXN0cmVhbXMvcmVhZGFibGUtc3RyZWFtLXJlYWRlci5zaGFyZWR3b3JrZXIuaHRtbAorKysgL2Rl
di9udWxsCkBAIC0xLDExICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0i
dXRmLTgiPgotPHRpdGxlPnJlYWRhYmxlLXN0cmVhbS1yZWFkZXIuanMgc2hhcmVkIHdvcmtlciB3
cmFwcGVyIGZpbGU8L3RpdGxlPgotCi08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVz
cy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9y
dC5qcyI+PC9zY3JpcHQ+Ci0KLTxzY3JpcHQ+Ci0ndXNlIHN0cmljdCc7Ci1mZXRjaF90ZXN0c19m
cm9tX3dvcmtlcihuZXcgU2hhcmVkV29ya2VyKCdyZWFkYWJsZS1zdHJlYW0tcmVhZGVyLmpzJykp
OwotPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9yZWVudHJhbnQtc3RyYXRlZ2ll
cy5hbnktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvcmVlbnRyYW50LXN0cmF0ZWdpZXMuYW55
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xZmE0MjIwYzY1MGIwMTA0OTFlNzg1NWUyNDU3Nzhh
ZDNkYWE1MTI3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvcmVlbnRyYW50LXN0cmF0
ZWdpZXMuYW55LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEyIEBACisKK1BBU1MgZW5xdWV1ZSgp
IGluc2lkZSBzaXplKCkgc2hvdWxkIHdvcmsgCitQQVNTIGNsb3NlKCkgaW5zaWRlIHNpemUoKSBz
aG91bGQgbm90IGNyYXNoIAorUEFTUyBjbG9zZSByZXF1ZXN0IGluc2lkZSBzaXplKCkgc2hvdWxk
IHdvcmsgCitQQVNTIGVycm9yKCkgaW5zaWRlIHNpemUoKSBzaG91bGQgd29yayAKK1BBU1MgZGVz
aXJlZFNpemUgaW5zaWRlIHNpemUoKSBzaG91bGQgd29yayAKK1BBU1MgY2FuY2VsKCkgaW5zaWRl
IHNpemUoKSBzaG91bGQgd29yayAKK1BBU1MgcGlwZVRvKCkgaW5zaWRlIHNpemUoKSBzaG91bGQg
YmVoYXZlIGFzIGV4cGVjdGVkIAorUEFTUyByZWFkKCkgaW5zaWRlIG9mIHNpemUoKSBzaG91bGQg
YmVoYXZlIGFzIGV4cGVjdGVkIAorUEFTUyBnZXRSZWFkZXIoKSBpbnNpZGUgc2l6ZSgpIHNob3Vs
ZCB3b3JrIAorUEFTUyB0ZWUoKSBpbnNpZGUgc2l6ZSgpIHNob3VsZCB3b3JrIAorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
cmVhZGFibGUtc3RyZWFtcy9yZWVudHJhbnQtc3RyYXRlZ2llcy5hbnkuaHRtbCBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJl
YW1zL3JlZW50cmFudC1zdHJhdGVnaWVzLmFueS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzODI5MTM1Mjhl
NjkzYjNhNWQ1NmM2NjBhNDUwNjA5ODBiNTQ4YzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3Ry
ZWFtcy9yZWVudHJhbnQtc3RyYXRlZ2llcy5hbnkuaHRtbApAQCAtMCwwICsxIEBACis8IS0tIFRo
aXMgZmlsZSBpcyByZXF1aXJlZCBmb3IgV2ViS2l0IHRlc3QgaW5mcmFzdHJ1Y3R1cmUgdG8gcnVu
IHRoZSB0ZW1wbGF0ZWQgdGVzdCAtLT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvcmVhZGFibGUtc3RyZWFtcy9yZWVudHJhbnQtc3RyYXRlZ2llcy5hbnkuanMgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3Ry
ZWFtcy9yZWVudHJhbnQtc3RyYXRlZ2llcy5hbnkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTAyZDA4YjBhY2M1
MGE0M2RiZTk4N2QyM2Q4Mzk0NDBhNTIxMjAzNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJl
YW1zL3JlZW50cmFudC1zdHJhdGVnaWVzLmFueS5qcwpAQCAtMCwwICsxLDI2NCBAQAorLy8gTUVU
QTogZ2xvYmFsPXdpbmRvdyx3b3JrZXIsanNzaGVsbAorLy8gTUVUQTogc2NyaXB0PS4uL3Jlc291
cmNlcy9yZWNvcmRpbmctc3RyZWFtcy5qcworLy8gTUVUQTogc2NyaXB0PS4uL3Jlc291cmNlcy9y
cy11dGlscy5qcworLy8gTUVUQTogc2NyaXB0PS4uL3Jlc291cmNlcy90ZXN0LXV0aWxzLmpzCisn
dXNlIHN0cmljdCc7CisKKy8vIFRoZSBzaXplKCkgZnVuY3Rpb24gb2YgdGhlIHJlYWRhYmxlIHN0
cmF0ZWd5IGNhbiByZS1lbnRyYW50bHkgY2FsbCBiYWNrIGludG8gdGhlIFJlYWRhYmxlU3RyZWFt
IGltcGxlbWVudGF0aW9uLiBUaGlzCisvLyBtYWtlcyBpdCByaXNreSB0byBjYWNoZSBzdGF0ZSBh
Y3Jvc3MgdGhlIGNhbGwgdG8gUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlckVucXVldWUu
IFRoZXNlIHRlc3RzIGF0dGVtcHQgdG8gY2F0Y2gKKy8vIHN1Y2ggZXJyb3JzLiBUaGV5IGFyZSBz
ZXBhcmF0ZWQgZnJvbSB0aGUgb3RoZXIgc3RyYXRlZ3kgdGVzdHMgYmVjYXVzZSBubyByZWFsIHVz
ZXIgY29kZSBzaG91bGQgZXZlciBkbyBhbnl0aGluZyBsaWtlCisvLyB0aGlzLgorCitjb25zdCBl
cnJvcjEgPSBuZXcgRXJyb3IoJ2Vycm9yMScpOworZXJyb3IxLm5hbWUgPSAnZXJyb3IxJzsKKwor
cHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgbGV0IGNvbnRyb2xsZXI7CisgIGxldCBjYWxscyA9IDA7
CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAg
ICBjb250cm9sbGVyID0gYzsKKyAgICB9CisgIH0sIHsKKyAgICBzaXplKCkgeworICAgICAgKytj
YWxsczsKKyAgICAgIGlmIChjYWxscyA8IDIpIHsKKyAgICAgICAgY29udHJvbGxlci5lbnF1ZXVl
KCdiJyk7CisgICAgICB9CisgICAgICByZXR1cm4gMTsKKyAgICB9CisgIH0pOworICBjb250cm9s
bGVyLmVucXVldWUoJ2EnKTsKKyAgY29udHJvbGxlci5jbG9zZSgpOworICByZXR1cm4gcmVhZGFi
bGVTdHJlYW1Ub0FycmF5KHJzKQorICAgICAgLnRoZW4oYXJyYXkgPT4gYXNzZXJ0X2FycmF5X2Vx
dWFscyhhcnJheSwgWydiJywgJ2EnXSwgJ2FycmF5IHNob3VsZCBjb250YWluIHR3byBjaHVua3Mn
KSk7Cit9LCAnZW5xdWV1ZSgpIGluc2lkZSBzaXplKCkgc2hvdWxkIHdvcmsnKTsKKworcHJvbWlz
ZV90ZXN0KCgpID0+IHsKKyAgbGV0IGNvbnRyb2xsZXI7CisgIGNvbnN0IHJzID0gbmV3IFJlYWRh
YmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjb250cm9sbGVyID0gYzsKKyAgICB9
CisgIH0sIHsKKyAgICBzaXplKCkgeworICAgICAgLy8gVGhlIHF1ZXVlIGlzIGVtcHR5LgorICAg
ICAgY29udHJvbGxlci5jbG9zZSgpOworICAgICAgLy8gVGhlIHN0YXRlIGhhcyBnb25lIGZyb20g
InJlYWRhYmxlIiB0byAiY2xvc2VkIi4KKyAgICAgIHJldHVybiAxOworICAgICAgLy8gVGhpcyBj
aHVuayB3aWxsIGJlIGVucXVldWVkLCBidXQgd2lsbCBiZSBpbXBvc3NpYmxlIHRvIHJlYWQgYmVj
YXVzZSB0aGUgc3RhdGUgaXMgYWxyZWFkeSAiY2xvc2VkIi4KKyAgICB9CisgIH0pOworICBjb250
cm9sbGVyLmVucXVldWUoJ2EnKTsKKyAgcmV0dXJuIHJlYWRhYmxlU3RyZWFtVG9BcnJheShycykK
KyAgICAgIC50aGVuKGFycmF5ID0+IGFzc2VydF9hcnJheV9lcXVhbHMoYXJyYXksIFtdLCAnYXJy
YXkgc2hvdWxkIGNvbnRhaW4gbm8gY2h1bmtzJykpOworICAvLyBUaGUgY2h1bmsgJ2EnIGlzIHN0
aWxsIGluIHJzJ3MgcXVldWUuIEl0IGlzIGNsb3NlZCBzbyAnYScgY2Fubm90IGJlIHJlYWQuCit9
LCAnY2xvc2UoKSBpbnNpZGUgc2l6ZSgpIHNob3VsZCBub3QgY3Jhc2gnKTsKKworcHJvbWlzZV90
ZXN0KCgpID0+IHsKKyAgbGV0IGNvbnRyb2xsZXI7CisgIGxldCBjYWxscyA9IDA7CisgIGNvbnN0
IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjb250cm9s
bGVyID0gYzsKKyAgICB9CisgIH0sIHsKKyAgICBzaXplKCkgeworICAgICAgKytjYWxsczsKKyAg
ICAgIGlmIChjYWxscyA9PT0gMikgeworICAgICAgICAvLyBUaGUgcXVldWUgY29udGFpbnMgb25l
IGNodW5rLgorICAgICAgICBjb250cm9sbGVyLmNsb3NlKCk7CisgICAgICAgIC8vIFRoZSBzdGF0
ZSBpcyBzdGlsbCAicmVhZGFibGUiLCBidXQgY2xvc2VSZXF1ZXN0IGlzIG5vdyB0cnVlLgorICAg
ICAgfQorICAgICAgcmV0dXJuIDE7CisgICAgfQorICB9KTsKKyAgY29udHJvbGxlci5lbnF1ZXVl
KCdhJyk7CisgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYicpOworICByZXR1cm4gcmVhZGFibGVTdHJl
YW1Ub0FycmF5KHJzKQorICAgICAgLnRoZW4oYXJyYXkgPT4gYXNzZXJ0X2FycmF5X2VxdWFscyhh
cnJheSwgWydhJywgJ2InXSwgJ2FycmF5IHNob3VsZCBjb250YWluIHR3byBjaHVua3MnKSk7Cit9
LCAnY2xvc2UgcmVxdWVzdCBpbnNpZGUgc2l6ZSgpIHNob3VsZCB3b3JrJyk7CisKK3Byb21pc2Vf
dGVzdCh0ID0+IHsKKyAgbGV0IGNvbnRyb2xsZXI7CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxl
U3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjb250cm9sbGVyID0gYzsKKyAgICB9Cisg
IH0sIHsKKyAgICBzaXplKCkgeworICAgICAgY29udHJvbGxlci5lcnJvcihlcnJvcjEpOworICAg
ICAgcmV0dXJuIDE7CisgICAgfQorICB9KTsKKyAgY29udHJvbGxlci5lbnF1ZXVlKCdhJyk7Cisg
IHJldHVybiBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIHJzLmdldFJlYWRlcigp
LnJlYWQoKSwgJ3JlYWQoKSBzaG91bGQgcmVqZWN0Jyk7Cit9LCAnZXJyb3IoKSBpbnNpZGUgc2l6
ZSgpIHNob3VsZCB3b3JrJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisgIGxldCBjb250cm9s
bGVyOworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgewor
ICAgICAgY29udHJvbGxlciA9IGM7CisgICAgfQorICB9LCB7CisgICAgc2l6ZSgpIHsKKyAgICAg
IGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMSwgJ2Rlc2lyZWRTaXplIHNo
b3VsZCBiZSAxJyk7CisgICAgICByZXR1cm4gMTsKKyAgICB9LAorICAgIGhpZ2hXYXRlck1hcms6
IDEKKyAgfSk7CisgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYScpOworICBjb250cm9sbGVyLmNsb3Nl
KCk7CisgIHJldHVybiByZWFkYWJsZVN0cmVhbVRvQXJyYXkocnMpCisgICAgICAudGhlbihhcnJh
eSA9PiBhc3NlcnRfYXJyYXlfZXF1YWxzKGFycmF5LCBbJ2EnXSwgJ2FycmF5IHNob3VsZCBjb250
YWluIG9uZSBjaHVuaycpKTsKK30sICdkZXNpcmVkU2l6ZSBpbnNpZGUgc2l6ZSgpIHNob3VsZCB3
b3JrJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgbGV0IGNhbmNlbFByb21pc2U7CisgIGxl
dCBjb250cm9sbGVyOworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3Rh
cnQoYykgeworICAgICAgY29udHJvbGxlciA9IGM7CisgICAgfSwKKyAgICBjYW5jZWw6IHQuc3Rl
cF9mdW5jKHJlYXNvbiA9PiB7CisgICAgICBhc3NlcnRfZXF1YWxzKHJlYXNvbiwgZXJyb3IxLCAn
cmVhc29uIHNob3VsZCBiZSBlcnJvcjEnKTsKKyAgICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVy
cm9yLCAoKSA9PiBjb250cm9sbGVyLmVucXVldWUoKSwgJ2VucXVldWUoKSBzaG91bGQgdGhyb3cn
KTsKKyAgICB9KQorICB9LCB7CisgICAgc2l6ZSgpIHsKKyAgICAgIGNhbmNlbFByb21pc2UgPSBy
cy5jYW5jZWwoZXJyb3IxKTsKKyAgICAgIHJldHVybiAxOworICAgIH0sCisgICAgaGlnaFdhdGVy
TWFyazogSW5maW5pdHkKKyAgfSk7CisgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYScpOworICBjb25z
dCByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKKyAgcmV0dXJuIFByb21pc2UuYWxsKFsKKyAgICBy
ZWFkZXIuY2xvc2VkLAorICAgIGNhbmNlbFByb21pc2UKKyAgXSk7Cit9LCAnY2FuY2VsKCkgaW5z
aWRlIHNpemUoKSBzaG91bGQgd29yaycpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworICBsZXQg
Y29udHJvbGxlcjsKKyAgbGV0IHBpcGVUb1Byb21pc2U7CisgIGNvbnN0IHdzID0gcmVjb3JkaW5n
V3JpdGFibGVTdHJlYW0oKTsKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAg
IHN0YXJ0KGMpIHsKKyAgICAgIGNvbnRyb2xsZXIgPSBjOworICAgIH0KKyAgfSwgeworICAgIHNp
emUoKSB7CisgICAgICBpZiAoIXBpcGVUb1Byb21pc2UpIHsKKyAgICAgICAgcGlwZVRvUHJvbWlz
ZSA9IHJzLnBpcGVUbyh3cyk7CisgICAgICB9CisgICAgICByZXR1cm4gMTsKKyAgICB9LAorICAg
IGhpZ2hXYXRlck1hcms6IDEKKyAgfSk7CisgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYScpOworICBh
c3NlcnRfbm90X2VxdWFscyhwaXBlVG9Qcm9taXNlLCB1bmRlZmluZWQpOworCisgIC8vIFNvbWUg
cGlwZVRvKCkgaW1wbGVtZW50YXRpb25zIG5lZWQgYW4gYWRkaXRpb25hbCBjaHVuayBlbnF1ZXVl
ZCBpbiBvcmRlciBmb3IgdGhlIGZpcnN0IG9uZSB0byBiZSBwcm9jZXNzZWQuIFNlZQorICAvLyBo
dHRwczovL2dpdGh1Yi5jb20vd2hhdHdnL3N0cmVhbXMvaXNzdWVzLzc5NCBmb3IgYmFja2dyb3Vu
ZC4KKyAgY29udHJvbGxlci5lbnF1ZXVlKCdhJyk7CisKKyAgLy8gR2l2ZSBwaXBlVG8oKSBhIGNo
YW5jZSB0byBwcm9jZXNzIHRoZSBxdWV1ZWQgY2h1bmtzLgorICByZXR1cm4gZGVsYXkoMCkudGhl
bigoKSA9PiB7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsnd3JpdGUnLCAn
YScsICd3cml0ZScsICdhJ10sICd3cyBzaG91bGQgY29udGFpbiB0d28gY2h1bmtzJyk7CisgICAg
Y29udHJvbGxlci5jbG9zZSgpOworICAgIHJldHVybiBwaXBlVG9Qcm9taXNlOworICB9KS50aGVu
KCgpID0+IHsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWyd3cml0ZScsICdh
JywgJ3dyaXRlJywgJ2EnLCAnY2xvc2UnXSwgJ3RhcmdldCBzaG91bGQgaGF2ZSBiZWVuIGNsb3Nl
ZCcpOworICB9KTsKK30sICdwaXBlVG8oKSBpbnNpZGUgc2l6ZSgpIHNob3VsZCBiZWhhdmUgYXMg
ZXhwZWN0ZWQnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgbGV0IGNvbnRyb2xsZXI7Cisg
IGxldCByZWFkUHJvbWlzZTsKKyAgbGV0IGNhbGxzID0gMDsKKyAgbGV0IHJlYWRSZXNvbHZlZCA9
IGZhbHNlOworICBsZXQgcmVhZGVyOworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7
CisgICAgc3RhcnQoYykgeworICAgICAgY29udHJvbGxlciA9IGM7CisgICAgfQorICB9LCB7Cisg
ICAgc2l6ZSgpIHsKKyAgICAgIC8vIFRoaXMgaXMgdHJpZ2dlcmVkIGJ5IGNvbnRyb2xsZXIuZW5x
dWV1ZSgpLiBUaGUgcXVldWUgaXMgZW1wdHkgYW5kIHRoZXJlIGFyZSBubyBwZW5kaW5nIHJlYWRz
LiBUaGlzIHJlYWQgaXMKKyAgICAgIC8vIGFkZGVkIHRvIHRoZSBsaXN0IG9mIHBlbmRpbmcgcmVh
ZHMuCisgICAgICByZWFkUHJvbWlzZSA9IHJlYWRlci5yZWFkKCk7CisgICAgICArK2NhbGxzOwor
ICAgICAgcmV0dXJuIDE7CisgICAgfSwKKyAgICBoaWdoV2F0ZXJNYXJrOiAwCisgIH0pOworICBy
ZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKKyAgY29udHJvbGxlci5lbnF1ZXVlKCdhJyk7CisgIHJl
YWRQcm9taXNlLnRoZW4oKCkgPT4geworICAgIHJlYWRSZXNvbHZlZCA9IHRydWU7CisgIH0pOwor
ICByZXR1cm4gZmx1c2hBc3luY0V2ZW50cygpLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9mYWxz
ZShyZWFkUmVzb2x2ZWQpOworICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYicpOworICAgIGFzc2Vy
dF9lcXVhbHMoY2FsbHMsIDEsICdzaXplKCkgc2hvdWxkIGhhdmUgYmVlbiBjYWxsZWQgb25jZScp
OworICAgIHJldHVybiBkZWxheSgwKTsKKyAgfSkudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X3Ry
dWUocmVhZFJlc29sdmVkKTsKKyAgICBhc3NlcnRfZXF1YWxzKGNhbGxzLCAxLCAnc2l6ZSgpIHNo
b3VsZCBvbmx5IGJlIGNhbGxlZCBvbmNlJyk7CisgICAgcmV0dXJuIHJlYWRQcm9taXNlOworICB9
KS50aGVuKCh7IHZhbHVlLCBkb25lIH0pID0+IHsKKyAgICBhc3NlcnRfZmFsc2UoZG9uZSwgJ2Rv
bmUgc2hvdWxkIGJlIGZhbHNlJyk7CisgICAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS93aGF0
d2cvc3RyZWFtcy9pc3N1ZXMvNzk0IGZvciB3aHkgdGhpcyBjaHVuayBpcyBub3QgJ2EnLgorICAg
IGFzc2VydF9lcXVhbHModmFsdWUsICdiJywgJ2NodW5rIHNob3VsZCBoYXZlIGJlZW4gcmVhZCcp
OworICAgIGFzc2VydF9lcXVhbHMoY2FsbHMsIDEsICdjYWxscyBzaG91bGQgc3RpbGwgYmUgMScp
OworICAgIHJldHVybiByZWFkZXIucmVhZCgpOworICB9KS50aGVuKCh7IHZhbHVlLCBkb25lIH0p
ID0+IHsKKyAgICBhc3NlcnRfZmFsc2UoZG9uZSwgJ2RvbmUgc2hvdWxkIGJlIGZhbHNlIGFnYWlu
Jyk7CisgICAgYXNzZXJ0X2VxdWFscyh2YWx1ZSwgJ2EnLCAnY2h1bmsgYSBzaG91bGQgY29tZSBh
ZnRlciBiJyk7CisgIH0pOworfSwgJ3JlYWQoKSBpbnNpZGUgb2Ygc2l6ZSgpIHNob3VsZCBiZWhh
dmUgYXMgZXhwZWN0ZWQnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgbGV0IGNvbnRyb2xs
ZXI7CisgIGxldCByZWFkZXI7CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAg
ICBzdGFydChjKSB7CisgICAgICBjb250cm9sbGVyID0gYzsKKyAgICB9CisgIH0sIHsKKyAgICBz
aXplKCkgeworICAgICAgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7CisgICAgICByZXR1cm4gMTsK
KyAgICB9CisgIH0pOworICBjb250cm9sbGVyLmVucXVldWUoJ2EnKTsKKyAgcmV0dXJuIHJlYWRl
ci5yZWFkKCkudGhlbigoeyB2YWx1ZSwgZG9uZSB9KSA9PiB7CisgICAgYXNzZXJ0X2ZhbHNlKGRv
bmUsICdkb25lIHNob3VsZCBiZSBmYWxzZScpOworICAgIGFzc2VydF9lcXVhbHModmFsdWUsICdh
JywgJ3ZhbHVlIHNob3VsZCBiZSBhJyk7CisgIH0pOworfSwgJ2dldFJlYWRlcigpIGluc2lkZSBz
aXplKCkgc2hvdWxkIHdvcmsnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgbGV0IGNvbnRy
b2xsZXI7CisgIGxldCBicmFuY2gxOworICBsZXQgYnJhbmNoMjsKKyAgY29uc3QgcnMgPSBuZXcg
UmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGNvbnRyb2xsZXIgPSBjOwor
ICAgIH0KKyAgfSwgeworICAgIHNpemUoKSB7CisgICAgICBbYnJhbmNoMSwgYnJhbmNoMl0gPSBy
cy50ZWUoKTsKKyAgICAgIHJldHVybiAxOworICAgIH0KKyAgfSk7CisgIGNvbnRyb2xsZXIuZW5x
dWV1ZSgnYScpOworICBhc3NlcnRfdHJ1ZShycy5sb2NrZWQsICdycyBzaG91bGQgYmUgbG9ja2Vk
Jyk7CisgIGNvbnRyb2xsZXIuY2xvc2UoKTsKKyAgcmV0dXJuIFByb21pc2UuYWxsKFsKKyAgICBy
ZWFkYWJsZVN0cmVhbVRvQXJyYXkoYnJhbmNoMSkudGhlbihhcnJheSA9PiBhc3NlcnRfYXJyYXlf
ZXF1YWxzKGFycmF5LCBbJ2EnXSwgJ2JyYW5jaDEgc2hvdWxkIGhhdmUgb25lIGNodW5rJykpLAor
ICAgIHJlYWRhYmxlU3RyZWFtVG9BcnJheShicmFuY2gyKS50aGVuKGFycmF5ID0+IGFzc2VydF9h
cnJheV9lcXVhbHMoYXJyYXksIFsnYSddLCAnYnJhbmNoMiBzaG91bGQgaGF2ZSBvbmUgY2h1bmsn
KSkKKyAgXSk7Cit9LCAndGVlKCkgaW5zaWRlIHNpemUoKSBzaG91bGQgd29yaycpOwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
L3JlYWRhYmxlLXN0cmVhbXMvcmVlbnRyYW50LXN0cmF0ZWdpZXMuYW55Lndvcmtlci1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvcmVhZGFibGUtc3RyZWFtcy9yZWVudHJhbnQtc3RyYXRlZ2llcy5hbnkud29ya2VyLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi44NjRlODFhNzg2ZDBkOTc2ZGRkOTY5ZDc4ZGYyMzJjNDUwODk3
NTdmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvcmVlbnRyYW50LXN0cmF0ZWdpZXMu
YW55Lndvcmtlci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMiBAQAorCitQQVNTIGVucXVldWUo
KSBpbnNpZGUgc2l6ZSgpIHNob3VsZCB3b3JrIAorUEFTUyBjbG9zZSgpIGluc2lkZSBzaXplKCkg
c2hvdWxkIG5vdCBjcmFzaCAKK1BBU1MgY2xvc2UgcmVxdWVzdCBpbnNpZGUgc2l6ZSgpIHNob3Vs
ZCB3b3JrIAorUEFTUyBlcnJvcigpIGluc2lkZSBzaXplKCkgc2hvdWxkIHdvcmsgCitQQVNTIGRl
c2lyZWRTaXplIGluc2lkZSBzaXplKCkgc2hvdWxkIHdvcmsgCitQQVNTIGNhbmNlbCgpIGluc2lk
ZSBzaXplKCkgc2hvdWxkIHdvcmsgCitGQUlMIHBpcGVUbygpIGluc2lkZSBzaXplKCkgc2hvdWxk
IGJlaGF2ZSBhcyBleHBlY3RlZCBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQor
UEFTUyByZWFkKCkgaW5zaWRlIG9mIHNpemUoKSBzaG91bGQgYmVoYXZlIGFzIGV4cGVjdGVkIAor
UEFTUyBnZXRSZWFkZXIoKSBpbnNpZGUgc2l6ZSgpIHNob3VsZCB3b3JrIAorUEFTUyB0ZWUoKSBp
bnNpZGUgc2l6ZSgpIHNob3VsZCB3b3JrIAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9yZWVu
dHJhbnQtc3RyYXRlZ2llcy5hbnkud29ya2VyLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9yZWVudHJhbnQt
c3RyYXRlZ2llcy5hbnkud29ya2VyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjM4MjkxMzUyOGU2OTNiM2E1
ZDU2YzY2MGE0NTA2MDk4MGI1NDhjMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3Jl
ZW50cmFudC1zdHJhdGVnaWVzLmFueS53b3JrZXIuaHRtbApAQCAtMCwwICsxIEBACis8IS0tIFRo
aXMgZmlsZSBpcyByZXF1aXJlZCBmb3IgV2ViS2l0IHRlc3QgaW5mcmFzdHJ1Y3R1cmUgdG8gcnVu
IHRoZSB0ZW1wbGF0ZWQgdGVzdCAtLT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvcmVhZGFibGUtc3RyZWFtcy90ZWUuYW55LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3Rl
ZS5hbnktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgzM2JlMzEwMzc4OTM5YTE4M2YzNGEyNmY3
ZDhjNjYzYTNmOTY2OGUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy90ZWUuYW55LWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDMwIEBACitDT05TT0xFIE1FU1NBR0U6IFVuaGFuZGxlZCBQ
cm9taXNlIFJlamVjdGlvbjogW29iamVjdCBPYmplY3RdCitDT05TT0xFIE1FU1NBR0U6IFVuaGFu
ZGxlZCBQcm9taXNlIFJlamVjdGlvbjogW29iamVjdCBPYmplY3RdCitDT05TT0xFIE1FU1NBR0U6
IFVuaGFuZGxlZCBQcm9taXNlIFJlamVjdGlvbjogW29iamVjdCBPYmplY3RdCitDT05TT0xFIE1F
U1NBR0U6IFVuaGFuZGxlZCBQcm9taXNlIFJlamVjdGlvbjogW29iamVjdCBPYmplY3RdCitDT05T
T0xFIE1FU1NBR0U6IFVuaGFuZGxlZCBQcm9taXNlIFJlamVjdGlvbjogW29iamVjdCBPYmplY3Rd
CitDT05TT0xFIE1FU1NBR0U6IFVuaGFuZGxlZCBQcm9taXNlIFJlamVjdGlvbjogW29iamVjdCBP
YmplY3RdCisKK0hhcm5lc3MgRXJyb3IgKEZBSUwpLCBtZXNzYWdlID0gVW5oYW5kbGVkIHJlamVj
dGlvbgorCitQQVNTIFJlYWRhYmxlU3RyZWFtIHRlZWluZzogcnMudGVlKCkgcmV0dXJucyBhbiBh
cnJheSBvZiB0d28gUmVhZGFibGVTdHJlYW1zIAorUEFTUyBSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6
IHNob3VsZCBiZSBhYmxlIHRvIHJlYWQgb25lIGJyYW5jaCB0byB0aGUgZW5kIHdpdGhvdXQgYWZm
ZWN0aW5nIHRoZSBvdGhlciAKK1BBU1MgUmVhZGFibGVTdHJlYW0gdGVlaW5nOiB2YWx1ZXMgc2hv
dWxkIGJlIGVxdWFsIGFjcm9zcyBlYWNoIGJyYW5jaCAKK1BBU1MgUmVhZGFibGVTdHJlYW0gdGVl
aW5nOiBlcnJvcnMgaW4gdGhlIHNvdXJjZSBzaG91bGQgcHJvcGFnYXRlIHRvIGJvdGggYnJhbmNo
ZXMgCitQQVNTIFJlYWRhYmxlU3RyZWFtIHRlZWluZzogY2FuY2VsaW5nIGJyYW5jaDEgc2hvdWxk
IG5vdCBpbXBhY3QgYnJhbmNoMiAKK1BBU1MgUmVhZGFibGVTdHJlYW0gdGVlaW5nOiBjYW5jZWxp
bmcgYnJhbmNoMiBzaG91bGQgbm90IGltcGFjdCBicmFuY2gxIAorUEFTUyBSZWFkYWJsZVN0cmVh
bSB0ZWVpbmc6IGNhbmNlbGluZyBib3RoIGJyYW5jaGVzIHNob3VsZCBhZ2dyZWdhdGUgdGhlIGNh
bmNlbCByZWFzb25zIGludG8gYW4gYXJyYXkgCitQQVNTIFJlYWRhYmxlU3RyZWFtIHRlZWluZzog
Y2FuY2VsaW5nIGJvdGggYnJhbmNoZXMgaW4gcmV2ZXJzZSBvcmRlciBzaG91bGQgYWdncmVnYXRl
IHRoZSBjYW5jZWwgcmVhc29ucyBpbnRvIGFuIGFycmF5IAorUEFTUyBSZWFkYWJsZVN0cmVhbSB0
ZWVpbmc6IGZhaWxpbmcgdG8gY2FuY2VsIHRoZSBvcmlnaW5hbCBzdHJlYW0gc2hvdWxkIGNhdXNl
IGNhbmNlbCgpIHRvIHJlamVjdCBvbiBicmFuY2hlcyAKK1BBU1MgUmVhZGFibGVTdHJlYW0gdGVl
aW5nOiBlcnJvcmluZyBhIHRlZWQgc3RyZWFtIHNob3VsZCBwcm9wZXJseSBoYW5kbGUgY2FuY2Vs
ZWQgYnJhbmNoZXMgCitQQVNTIFJlYWRhYmxlU3RyZWFtIHRlZWluZzogZXJyb3JpbmcgYSB0ZWVk
IHN0cmVhbSBzaG91bGQgZXJyb3IgYm90aCBicmFuY2hlcyAKK1BBU1MgUmVhZGFibGVTdHJlYW0g
dGVlaW5nOiBjbG9zaW5nIHRoZSBvcmlnaW5hbCBzaG91bGQgaW1tZWRpYXRlbHkgY2xvc2UgdGhl
IGJyYW5jaGVzIAorUEFTUyBSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IGVycm9yaW5nIHRoZSBvcmln
aW5hbCBzaG91bGQgaW1tZWRpYXRlbHkgZXJyb3IgdGhlIGJyYW5jaGVzIAorUEFTUyBSZWFkYWJs
ZVN0cmVhbVRlZSBzaG91bGQgbm90IHVzZSBhIG1vZGlmaWVkIFJlYWRhYmxlU3RyZWFtIGNvbnN0
cnVjdG9yIGZyb20gdGhlIGdsb2JhbCBvYmplY3QgCitGQUlMIFJlYWRhYmxlU3RyZWFtVGVlIHNo
b3VsZCBub3QgcHVsbCBtb3JlIGNodW5rcyB0aGFuIGNhbiBmaXQgaW4gdGhlIGJyYW5jaCBxdWV1
ZSBhc3NlcnRfYXJyYXlfZXF1YWxzOiBwdWxsIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBvbmNlIGxl
bmd0aHMgZGlmZmVyLCBleHBlY3RlZCBhcnJheSBbInB1bGwiXSBsZW5ndGggMSwgZ290IFsicHVs
bCIsICJwdWxsIl0gbGVuZ3RoIDIKK0ZBSUwgUmVhZGFibGVTdHJlYW1UZWUgc2hvdWxkIG9ubHkg
cHVsbCBlbm91Z2ggdG8gZmlsbCB0aGUgZW1wdGllc3QgcXVldWUgYXNzZXJ0X2FycmF5X2VxdWFs
czogcHVsbCBzaG91bGQgYmUgY2FsbGVkIHR3aWNlIGxlbmd0aHMgZGlmZmVyLCBleHBlY3RlZCBh
cnJheSBbInB1bGwiLCAicHVsbCJdIGxlbmd0aCAyLCBnb3QgWyJwdWxsIiwgInB1bGwiLCAicHVs
bCIsICJwdWxsIl0gbGVuZ3RoIDQKK1BBU1MgUmVhZGFibGVTdHJlYW1UZWUgc2hvdWxkIG5vdCBw
dWxsIHdoZW4gb3JpZ2luYWwgaXMgYWxyZWFkeSBlcnJvcmVkIAorRkFJTCBSZWFkYWJsZVN0cmVh
bVRlZSBzdG9wcyBwdWxsaW5nIHdoZW4gb3JpZ2luYWwgc3RyZWFtIGVycm9ycyB3aGlsZSBicmFu
Y2ggMSBpcyByZWFkaW5nIGFzc2VydF9hcnJheV9lcXVhbHM6IHB1bGwgc2hvdWxkIGJlIGNhbGxl
ZCBvbmNlIGxlbmd0aHMgZGlmZmVyLCBleHBlY3RlZCBhcnJheSBbInB1bGwiXSBsZW5ndGggMSwg
Z290IFsicHVsbCIsICJwdWxsIl0gbGVuZ3RoIDIKK0ZBSUwgUmVhZGFibGVTdHJlYW1UZWUgc3Rv
cHMgcHVsbGluZyB3aGVuIG9yaWdpbmFsIHN0cmVhbSBlcnJvcnMgd2hpbGUgYnJhbmNoIDIgaXMg
cmVhZGluZyBhc3NlcnRfYXJyYXlfZXF1YWxzOiBwdWxsIHNob3VsZCBiZSBjYWxsZWQgb25jZSBs
ZW5ndGhzIGRpZmZlciwgZXhwZWN0ZWQgYXJyYXkgWyJwdWxsIl0gbGVuZ3RoIDEsIGdvdCBbInB1
bGwiLCAicHVsbCJdIGxlbmd0aCAyCitGQUlMIFJlYWRhYmxlU3RyZWFtVGVlIHN0b3BzIHB1bGxp
bmcgd2hlbiBvcmlnaW5hbCBzdHJlYW0gZXJyb3JzIHdoaWxlIGJvdGggYnJhbmNoZXMgYXJlIHJl
YWRpbmcgYXNzZXJ0X2FycmF5X2VxdWFsczogcHVsbCBzaG91bGQgYmUgY2FsbGVkIG9uY2UgbGVu
Z3RocyBkaWZmZXIsIGV4cGVjdGVkIGFycmF5IFsicHVsbCJdIGxlbmd0aCAxLCBnb3QgWyJwdWxs
IiwgInB1bGwiXSBsZW5ndGggMgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy90ZWUuYW55Lmh0
bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
cmVhZGFibGUtc3RyZWFtcy90ZWUuYW55Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjM4MjkxMzUyOGU2OTNi
M2E1ZDU2YzY2MGE0NTA2MDk4MGI1NDhjMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1z
L3RlZS5hbnkuaHRtbApAQCAtMCwwICsxIEBACis8IS0tIFRoaXMgZmlsZSBpcyByZXF1aXJlZCBm
b3IgV2ViS2l0IHRlc3QgaW5mcmFzdHJ1Y3R1cmUgdG8gcnVuIHRoZSB0ZW1wbGF0ZWQgdGVzdCAt
LT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy90
ZWUuYW55LmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
dHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvdGVlLmFueS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNmE5NTM2OGFh
NWU2NGRmNmNhOWUxNWMwMzRhMWI0Mjg4ODgzNjIyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0
cmVhbXMvdGVlLmFueS5qcwpAQCAtMCwwICsxLDQ1MSBAQAorLy8gTUVUQTogZ2xvYmFsPXdpbmRv
dyx3b3JrZXIsanNzaGVsbAorLy8gTUVUQTogc2NyaXB0PS4uL3Jlc291cmNlcy9ycy11dGlscy5q
cworLy8gTUVUQTogc2NyaXB0PS4uL3Jlc291cmNlcy90ZXN0LXV0aWxzLmpzCisvLyBNRVRBOiBz
Y3JpcHQ9Li4vcmVzb3VyY2VzL3JlY29yZGluZy1zdHJlYW1zLmpzCisndXNlIHN0cmljdCc7CisK
K3Rlc3QoKCkgPT4geworCisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKCk7CisgIGNv
bnN0IHJlc3VsdCA9IHJzLnRlZSgpOworCisgIGFzc2VydF90cnVlKEFycmF5LmlzQXJyYXkocmVz
dWx0KSwgJ3JldHVybiB2YWx1ZSBzaG91bGQgYmUgYW4gYXJyYXknKTsKKyAgYXNzZXJ0X2VxdWFs
cyhyZXN1bHQubGVuZ3RoLCAyLCAnYXJyYXkgc2hvdWxkIGhhdmUgbGVuZ3RoIDInKTsKKyAgYXNz
ZXJ0X2VxdWFscyhyZXN1bHRbMF0uY29uc3RydWN0b3IsIFJlYWRhYmxlU3RyZWFtLCAnMHRoIGVs
ZW1lbnQgc2hvdWxkIGJlIGEgUmVhZGFibGVTdHJlYW0nKTsKKyAgYXNzZXJ0X2VxdWFscyhyZXN1
bHRbMV0uY29uc3RydWN0b3IsIFJlYWRhYmxlU3RyZWFtLCAnMXN0IGVsZW1lbnQgc2hvdWxkIGJl
IGEgUmVhZGFibGVTdHJlYW0nKTsKKworfSwgJ1JlYWRhYmxlU3RyZWFtIHRlZWluZzogcnMudGVl
KCkgcmV0dXJucyBhbiBhcnJheSBvZiB0d28gUmVhZGFibGVTdHJlYW1zJyk7CisKK3Byb21pc2Vf
dGVzdCh0ID0+IHsKKworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3Rh
cnQoYykgeworICAgICAgYy5lbnF1ZXVlKCdhJyk7CisgICAgICBjLmVucXVldWUoJ2InKTsKKyAg
ICAgIGMuY2xvc2UoKTsKKyAgICB9CisgIH0pOworCisgIGNvbnN0IGJyYW5jaCA9IHJzLnRlZSgp
OworICBjb25zdCBicmFuY2gxID0gYnJhbmNoWzBdOworICBjb25zdCBicmFuY2gyID0gYnJhbmNo
WzFdOworICBjb25zdCByZWFkZXIxID0gYnJhbmNoMS5nZXRSZWFkZXIoKTsKKyAgY29uc3QgcmVh
ZGVyMiA9IGJyYW5jaDIuZ2V0UmVhZGVyKCk7CisKKyAgcmVhZGVyMi5jbG9zZWQudGhlbih0LnVu
cmVhY2hlZF9mdW5jKCdicmFuY2gyIHNob3VsZCBub3QgYmUgY2xvc2VkJykpOworCisgIHJldHVy
biBQcm9taXNlLmFsbChbCisgICAgcmVhZGVyMS5jbG9zZWQsCisgICAgcmVhZGVyMS5yZWFkKCku
dGhlbihyID0+IHsKKyAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHIsIHsgdmFsdWU6ICdhJywg
ZG9uZTogZmFsc2UgfSwgJ2ZpcnN0IGNodW5rIGZyb20gYnJhbmNoMSBzaG91bGQgYmUgY29ycmVj
dCcpOworICAgIH0pLAorICAgIHJlYWRlcjEucmVhZCgpLnRoZW4ociA9PiB7CisgICAgICBhc3Nl
cnRfb2JqZWN0X2VxdWFscyhyLCB7IHZhbHVlOiAnYicsIGRvbmU6IGZhbHNlIH0sICdzZWNvbmQg
Y2h1bmsgZnJvbSBicmFuY2gxIHNob3VsZCBiZSBjb3JyZWN0Jyk7CisgICAgfSksCisgICAgcmVh
ZGVyMS5yZWFkKCkudGhlbihyID0+IHsKKyAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHIsIHsg
dmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9LCAndGhpcmQgcmVhZCgpIGZyb20gYnJhbmNo
MSBzaG91bGQgYmUgZG9uZScpOworICAgIH0pLAorICAgIHJlYWRlcjIucmVhZCgpLnRoZW4ociA9
PiB7CisgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyLCB7IHZhbHVlOiAnYScsIGRvbmU6IGZh
bHNlIH0sICdmaXJzdCBjaHVuayBmcm9tIGJyYW5jaDIgc2hvdWxkIGJlIGNvcnJlY3QnKTsKKyAg
ICB9KQorICBdKTsKKworfSwgJ1JlYWRhYmxlU3RyZWFtIHRlZWluZzogc2hvdWxkIGJlIGFibGUg
dG8gcmVhZCBvbmUgYnJhbmNoIHRvIHRoZSBlbmQgd2l0aG91dCBhZmZlY3RpbmcgdGhlIG90aGVy
Jyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisKKyAgY29uc3QgdGhlT2JqZWN0ID0geyB0aGU6
ICd0ZXN0IG9iamVjdCcgfTsKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAg
IHN0YXJ0KGMpIHsKKyAgICAgIGMuZW5xdWV1ZSh0aGVPYmplY3QpOworICAgIH0KKyAgfSk7CisK
KyAgY29uc3QgYnJhbmNoID0gcnMudGVlKCk7CisgIGNvbnN0IGJyYW5jaDEgPSBicmFuY2hbMF07
CisgIGNvbnN0IGJyYW5jaDIgPSBicmFuY2hbMV07CisgIGNvbnN0IHJlYWRlcjEgPSBicmFuY2gx
LmdldFJlYWRlcigpOworICBjb25zdCByZWFkZXIyID0gYnJhbmNoMi5nZXRSZWFkZXIoKTsKKwor
ICByZXR1cm4gUHJvbWlzZS5hbGwoW3JlYWRlcjEucmVhZCgpLCByZWFkZXIyLnJlYWQoKV0pLnRo
ZW4odmFsdWVzID0+IHsKKyAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyh2YWx1ZXNbMF0sIHZhbHVl
c1sxXSwgJ3RoZSB2YWx1ZXMgc2hvdWxkIGJlIGVxdWFsJyk7CisgIH0pOworCit9LCAnUmVhZGFi
bGVTdHJlYW0gdGVlaW5nOiB2YWx1ZXMgc2hvdWxkIGJlIGVxdWFsIGFjcm9zcyBlYWNoIGJyYW5j
aCcpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisKKyAgY29uc3QgdGhlRXJyb3IgPSB7IG5hbWU6
ICdib28hJyB9OworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQo
YykgeworICAgICAgYy5lbnF1ZXVlKCdhJyk7CisgICAgICBjLmVucXVldWUoJ2InKTsKKyAgICB9
LAorICAgIHB1bGwoKSB7CisgICAgICB0aHJvdyB0aGVFcnJvcjsKKyAgICB9CisgIH0pOworCisg
IGNvbnN0IGJyYW5jaGVzID0gcnMudGVlKCk7CisgIGNvbnN0IHJlYWRlcjEgPSBicmFuY2hlc1sw
XS5nZXRSZWFkZXIoKTsKKyAgY29uc3QgcmVhZGVyMiA9IGJyYW5jaGVzWzFdLmdldFJlYWRlcigp
OworCisgIHJlYWRlcjEubGFiZWwgPSAncmVhZGVyMSc7CisgIHJlYWRlcjIubGFiZWwgPSAncmVh
ZGVyMic7CisKKyAgcmV0dXJuIFByb21pc2UuYWxsKFsKKyAgICBwcm9taXNlX3JlamVjdHNfZXhh
Y3RseSh0LCB0aGVFcnJvciwgcmVhZGVyMS5jbG9zZWQpLAorICAgIHByb21pc2VfcmVqZWN0c19l
eGFjdGx5KHQsIHRoZUVycm9yLCByZWFkZXIyLmNsb3NlZCksCisgICAgcmVhZGVyMS5yZWFkKCku
dGhlbihyID0+IHsKKyAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHIsIHsgdmFsdWU6ICdhJywg
ZG9uZTogZmFsc2UgfSwgJ3Nob3VsZCBiZSBhYmxlIHRvIHJlYWQgdGhlIGZpcnN0IGNodW5rIGlu
IGJyYW5jaDEnKTsKKyAgICB9KSwKKyAgICByZWFkZXIxLnJlYWQoKS50aGVuKHIgPT4geworICAg
ICAgYXNzZXJ0X29iamVjdF9lcXVhbHMociwgeyB2YWx1ZTogJ2InLCBkb25lOiBmYWxzZSB9LCAn
c2hvdWxkIGJlIGFibGUgdG8gcmVhZCB0aGUgc2Vjb25kIGNodW5rIGluIGJyYW5jaDEnKTsKKwor
ICAgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIHRoZUVycm9yLCByZWFkZXIy
LnJlYWQoKSk7CisgICAgfSkKKyAgICAudGhlbigoKSA9PiBwcm9taXNlX3JlamVjdHNfZXhhY3Rs
eSh0LCB0aGVFcnJvciwgcmVhZGVyMS5yZWFkKCkpKQorICBdKTsKKworfSwgJ1JlYWRhYmxlU3Ry
ZWFtIHRlZWluZzogZXJyb3JzIGluIHRoZSBzb3VyY2Ugc2hvdWxkIHByb3BhZ2F0ZSB0byBib3Ro
IGJyYW5jaGVzJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisKKyAgY29uc3QgcnMgPSBuZXcg
UmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGMuZW5xdWV1ZSgnYScpOwor
ICAgICAgYy5lbnF1ZXVlKCdiJyk7CisgICAgICBjLmNsb3NlKCk7CisgICAgfQorICB9KTsKKwor
ICBjb25zdCBicmFuY2hlcyA9IHJzLnRlZSgpOworICBjb25zdCBicmFuY2gxID0gYnJhbmNoZXNb
MF07CisgIGNvbnN0IGJyYW5jaDIgPSBicmFuY2hlc1sxXTsKKyAgYnJhbmNoMS5jYW5jZWwoKTsK
KworICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAgIHJlYWRhYmxlU3RyZWFtVG9BcnJheShicmFu
Y2gxKS50aGVuKGNodW5rcyA9PiB7CisgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGNodW5rcywg
W10sICdicmFuY2gxIHNob3VsZCBoYXZlIG5vIGNodW5rcycpOworICAgIH0pLAorICAgIHJlYWRh
YmxlU3RyZWFtVG9BcnJheShicmFuY2gyKS50aGVuKGNodW5rcyA9PiB7CisgICAgICBhc3NlcnRf
YXJyYXlfZXF1YWxzKGNodW5rcywgWydhJywgJ2InXSwgJ2JyYW5jaDIgc2hvdWxkIGhhdmUgdHdv
IGNodW5rcycpOworICAgIH0pCisgIF0pOworCit9LCAnUmVhZGFibGVTdHJlYW0gdGVlaW5nOiBj
YW5jZWxpbmcgYnJhbmNoMSBzaG91bGQgbm90IGltcGFjdCBicmFuY2gyJyk7CisKK3Byb21pc2Vf
dGVzdCgoKSA9PiB7CisKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0
YXJ0KGMpIHsKKyAgICAgIGMuZW5xdWV1ZSgnYScpOworICAgICAgYy5lbnF1ZXVlKCdiJyk7Cisg
ICAgICBjLmNsb3NlKCk7CisgICAgfQorICB9KTsKKworICBjb25zdCBicmFuY2hlcyA9IHJzLnRl
ZSgpOworICBjb25zdCBicmFuY2gxID0gYnJhbmNoZXNbMF07CisgIGNvbnN0IGJyYW5jaDIgPSBi
cmFuY2hlc1sxXTsKKyAgYnJhbmNoMi5jYW5jZWwoKTsKKworICByZXR1cm4gUHJvbWlzZS5hbGwo
WworICAgIHJlYWRhYmxlU3RyZWFtVG9BcnJheShicmFuY2gxKS50aGVuKGNodW5rcyA9PiB7Cisg
ICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGNodW5rcywgWydhJywgJ2InXSwgJ2JyYW5jaDEgc2hv
dWxkIGhhdmUgdHdvIGNodW5rcycpOworICAgIH0pLAorICAgIHJlYWRhYmxlU3RyZWFtVG9BcnJh
eShicmFuY2gyKS50aGVuKGNodW5rcyA9PiB7CisgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGNo
dW5rcywgW10sICdicmFuY2gyIHNob3VsZCBoYXZlIG5vIGNodW5rcycpOworICAgIH0pCisgIF0p
OworCit9LCAnUmVhZGFibGVTdHJlYW0gdGVlaW5nOiBjYW5jZWxpbmcgYnJhbmNoMiBzaG91bGQg
bm90IGltcGFjdCBicmFuY2gxJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisKKyAgY29uc3Qg
cmVhc29uMSA9IG5ldyBFcnJvcignV2VcJ3JlIHdhbnRlZCBtZW4uJyk7CisgIGNvbnN0IHJlYXNv
bjIgPSBuZXcgRXJyb3IoJ0kgaGF2ZSB0aGUgZGVhdGggc2VudGVuY2Ugb24gdHdlbHZlIHN5c3Rl
bXMuJyk7CisKKyAgbGV0IHJlc29sdmU7CisgIGNvbnN0IHByb21pc2UgPSBuZXcgUHJvbWlzZShy
ID0+IHJlc29sdmUgPSByKTsKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAg
IGNhbmNlbChyZWFzb24pIHsKKyAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMocmVhc29uLCBbcmVh
c29uMSwgcmVhc29uMl0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICd0aGUgY2FuY2VsIHJl
YXNvbiBzaG91bGQgYmUgYW4gYXJyYXkgY29udGFpbmluZyB0aG9zZSBmcm9tIHRoZSBicmFuY2hl
cycpOworICAgICAgcmVzb2x2ZSgpOworICAgIH0KKyAgfSk7CisKKyAgY29uc3QgYnJhbmNoID0g
cnMudGVlKCk7CisgIGNvbnN0IGJyYW5jaDEgPSBicmFuY2hbMF07CisgIGNvbnN0IGJyYW5jaDIg
PSBicmFuY2hbMV07CisgIGJyYW5jaDEuY2FuY2VsKHJlYXNvbjEpOworICBicmFuY2gyLmNhbmNl
bChyZWFzb24yKTsKKworICByZXR1cm4gcHJvbWlzZTsKKworfSwgJ1JlYWRhYmxlU3RyZWFtIHRl
ZWluZzogY2FuY2VsaW5nIGJvdGggYnJhbmNoZXMgc2hvdWxkIGFnZ3JlZ2F0ZSB0aGUgY2FuY2Vs
IHJlYXNvbnMgaW50byBhbiBhcnJheScpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworCisgIGNv
bnN0IHJlYXNvbjEgPSBuZXcgRXJyb3IoJ1RoaXMgbGl0dGxlIG9uZVwncyBub3Qgd29ydGggdGhl
IGVmZm9ydC4nKTsKKyAgY29uc3QgcmVhc29uMiA9IG5ldyBFcnJvcignQ29tZSwgbGV0IG1lIGdl
dCB5b3Ugc29tZXRoaW5nLicpOworCisgIGxldCByZXNvbHZlOworICBjb25zdCBwcm9taXNlID0g
bmV3IFByb21pc2UociA9PiByZXNvbHZlID0gcik7CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxl
U3RyZWFtKHsKKyAgICBjYW5jZWwocmVhc29uKSB7CisgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxz
KHJlYXNvbiwgW3JlYXNvbjEsIHJlYXNvbjJdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAn
dGhlIGNhbmNlbCByZWFzb24gc2hvdWxkIGJlIGFuIGFycmF5IGNvbnRhaW5pbmcgdGhvc2UgZnJv
bSB0aGUgYnJhbmNoZXMnKTsKKyAgICAgIHJlc29sdmUoKTsKKyAgICB9CisgIH0pOworCisgIGNv
bnN0IGJyYW5jaCA9IHJzLnRlZSgpOworICBjb25zdCBicmFuY2gxID0gYnJhbmNoWzBdOworICBj
b25zdCBicmFuY2gyID0gYnJhbmNoWzFdOworICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAgIGJy
YW5jaDIuY2FuY2VsKHJlYXNvbjIpLAorICAgIGJyYW5jaDEuY2FuY2VsKHJlYXNvbjEpLAorICAg
IHByb21pc2UKKyAgXSk7CisKK30sICdSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IGNhbmNlbGluZyBi
b3RoIGJyYW5jaGVzIGluIHJldmVyc2Ugb3JkZXIgc2hvdWxkIGFnZ3JlZ2F0ZSB0aGUgY2FuY2Vs
IHJlYXNvbnMgaW50byBhbiBhcnJheScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisKKyAgY29u
c3QgdGhlRXJyb3IgPSB7IG5hbWU6ICdJXCdsbCBiZSBjYXJlZnVsLicgfTsKKyAgY29uc3QgcnMg
PSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIGNhbmNlbCgpIHsKKyAgICAgIHRocm93IHRoZUVy
cm9yOworICAgIH0KKyAgfSk7CisKKyAgY29uc3QgYnJhbmNoID0gcnMudGVlKCk7CisgIGNvbnN0
IGJyYW5jaDEgPSBicmFuY2hbMF07CisgIGNvbnN0IGJyYW5jaDIgPSBicmFuY2hbMV07CisKKyAg
cmV0dXJuIFByb21pc2UuYWxsKFsKKyAgICBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCB0aGVF
cnJvciwgYnJhbmNoMS5jYW5jZWwoKSksCisgICAgcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwg
dGhlRXJyb3IsIGJyYW5jaDIuY2FuY2VsKCkpCisgIF0pOworCit9LCAnUmVhZGFibGVTdHJlYW0g
dGVlaW5nOiBmYWlsaW5nIHRvIGNhbmNlbCB0aGUgb3JpZ2luYWwgc3RyZWFtIHNob3VsZCBjYXVz
ZSBjYW5jZWwoKSB0byByZWplY3Qgb24gYnJhbmNoZXMnKTsKKwordGVzdCgoKSA9PiB7CisKKyAg
bGV0IGNvbnRyb2xsZXI7CisgIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7IHN0
YXJ0KGMpIHsgY29udHJvbGxlciA9IGM7IH0gfSk7CisgIGNvbnN0IFticmFuY2gxLCBicmFuY2gy
XSA9IHN0cmVhbS50ZWUoKTsKKworICBjb250cm9sbGVyLmVycm9yKCJlcnJvciIpOworCisgIGJy
YW5jaDEuY2FuY2VsKCkuY2F0Y2goXz0+Xyk7CisgIGJyYW5jaDIuY2FuY2VsKCkuY2F0Y2goXz0+
Xyk7CisKK30sICdSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IGVycm9yaW5nIGEgdGVlZCBzdHJlYW0g
c2hvdWxkIHByb3Blcmx5IGhhbmRsZSBjYW5jZWxlZCBicmFuY2hlcycpOworCitwcm9taXNlX3Rl
c3QodCA9PiB7CisKKyAgbGV0IGNvbnRyb2xsZXI7CisgIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFk
YWJsZVN0cmVhbSh7IHN0YXJ0KGMpIHsgY29udHJvbGxlciA9IGM7IH0gfSk7CisgIGNvbnN0IFti
cmFuY2gxLCBicmFuY2gyXSA9IHN0cmVhbS50ZWUoKTsKKworICBjb25zdCBlcnJvciA9IG5ldyBF
cnJvcigpOworICBlcnJvci5uYW1lID0gJ2Rpc3RpbmN0aXZlJzsKKworICAvLyBFbnN1cmUgbmVp
dGhlciBicmFuY2ggaXMgd2FpdGluZyBpbiBSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXJSZWFk
KCkuCisgIGNvbnRyb2xsZXIuZW5xdWV1ZSgpOworICBjb250cm9sbGVyLmVucXVldWUoKTsKKwor
ICByZXR1cm4gZGVsYXkoMCkudGhlbigoKSA9PiB7CisgICAgLy8gVGhpcyBlcnJvciB3aWxsIGhh
dmUgdG8gYmUgZGV0ZWN0ZWQgdmlhIFtbY2xvc2VkUHJvbWlzZV1dLgorICAgIGNvbnRyb2xsZXIu
ZXJyb3IoZXJyb3IpOworCisgICAgY29uc3QgcmVhZGVyMSA9IGJyYW5jaDEuZ2V0UmVhZGVyKCk7
CisgICAgY29uc3QgcmVhZGVyMiA9IGJyYW5jaDIuZ2V0UmVhZGVyKCk7CisKKyAgICByZXR1cm4g
UHJvbWlzZS5hbGwoWworICAgICAgcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IsIHJl
YWRlcjEuY2xvc2VkLCAncmVhZGVyMS5jbG9zZWQgc2hvdWxkIHJlamVjdCcpLAorICAgICAgcHJv
bWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IsIHJlYWRlcjIuY2xvc2VkLCAncmVhZGVyMi5j
bG9zZWQgc2hvdWxkIHJlamVjdCcpCisgICAgXSk7CisgIH0pOworCit9LCAnUmVhZGFibGVTdHJl
YW0gdGVlaW5nOiBlcnJvcmluZyBhIHRlZWQgc3RyZWFtIHNob3VsZCBlcnJvciBib3RoIGJyYW5j
aGVzJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisKKyAgbGV0IGNvbnRyb2xsZXI7CisgIGNv
bnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjb250
cm9sbGVyID0gYzsKKyAgICB9CisgIH0pOworCisgIGNvbnN0IGJyYW5jaGVzID0gcnMudGVlKCk7
CisgIGNvbnN0IHJlYWRlcjEgPSBicmFuY2hlc1swXS5nZXRSZWFkZXIoKTsKKyAgY29uc3QgcmVh
ZGVyMiA9IGJyYW5jaGVzWzFdLmdldFJlYWRlcigpOworCisgIGNvbnN0IHByb21pc2UgPSBQcm9t
aXNlLmFsbChbcmVhZGVyMS5jbG9zZWQsIHJlYWRlcjIuY2xvc2VkXSk7CisKKyAgY29udHJvbGxl
ci5jbG9zZSgpOworICByZXR1cm4gcHJvbWlzZTsKKworfSwgJ1JlYWRhYmxlU3RyZWFtIHRlZWlu
ZzogY2xvc2luZyB0aGUgb3JpZ2luYWwgc2hvdWxkIGltbWVkaWF0ZWx5IGNsb3NlIHRoZSBicmFu
Y2hlcycpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisKKyAgbGV0IGNvbnRyb2xsZXI7CisgIGNv
bnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjb250
cm9sbGVyID0gYzsKKyAgICB9CisgIH0pOworCisgIGNvbnN0IGJyYW5jaGVzID0gcnMudGVlKCk7
CisgIGNvbnN0IHJlYWRlcjEgPSBicmFuY2hlc1swXS5nZXRSZWFkZXIoKTsKKyAgY29uc3QgcmVh
ZGVyMiA9IGJyYW5jaGVzWzFdLmdldFJlYWRlcigpOworCisgIGNvbnN0IHRoZUVycm9yID0geyBu
YW1lOiAnYm9vIScgfTsKKyAgY29uc3QgcHJvbWlzZSA9IFByb21pc2UuYWxsKFsKKyAgICBwcm9t
aXNlX3JlamVjdHNfZXhhY3RseSh0LCB0aGVFcnJvciwgcmVhZGVyMS5jbG9zZWQpLAorICAgIHBy
b21pc2VfcmVqZWN0c19leGFjdGx5KHQsIHRoZUVycm9yLCByZWFkZXIyLmNsb3NlZCkKKyAgXSk7
CisKKyAgY29udHJvbGxlci5lcnJvcih0aGVFcnJvcik7CisgIHJldHVybiBwcm9taXNlOworCit9
LCAnUmVhZGFibGVTdHJlYW0gdGVlaW5nOiBlcnJvcmluZyB0aGUgb3JpZ2luYWwgc2hvdWxkIGlt
bWVkaWF0ZWx5IGVycm9yIHRoZSBicmFuY2hlcycpOworCit0ZXN0KHQgPT4geworCisgIC8vIENv
cHkgb3JpZ2luYWwgZ2xvYmFsLgorICBjb25zdCBvbGRSZWFkYWJsZVN0cmVhbSA9IFJlYWRhYmxl
U3RyZWFtOworICBjb25zdCBnZXRSZWFkZXIgPSBSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUuZ2V0
UmVhZGVyOworCisgIGNvbnN0IG9yaWdSUyA9IG5ldyBSZWFkYWJsZVN0cmVhbSgpOworCisgIC8v
IFJlcGxhY2UgdGhlIGdsb2JhbCBSZWFkYWJsZVN0cmVhbSBjb25zdHJ1Y3RvciB3aXRoIG9uZSB0
aGF0IGRvZXNuJ3Qgd29yay4KKyAgUmVhZGFibGVTdHJlYW0gPSBmdW5jdGlvbigpIHsKKyAgICB0
aHJvdyBuZXcgRXJyb3IoJ2dsb2JhbCBSZWFkYWJsZVN0cmVhbSBjb25zdHJ1Y3RvciBjYWxsZWQn
KTsKKyAgfTsKKyAgdC5hZGRfY2xlYW51cCgoKSA9PiB7CisgICAgUmVhZGFibGVTdHJlYW0gPSBv
bGRSZWFkYWJsZVN0cmVhbTsKKyAgfSk7CisKKyAgLy8gVGhpcyB3aWxsIHByb2JhYmx5IGZhaWwg
aWYgdGhlIGdsb2JhbCBSZWFkYWJsZVN0cmVhbSBjb25zdHJ1Y3RvciB3YXMgdXNlZC4KKyAgY29u
c3QgW3JzMSwgcnMyXSA9IG9yaWdSUy50ZWUoKTsKKworICAvLyBUaGVzZSB3aWxsIGRlZmluaXRl
bHkgZmFpbCBpZiB0aGUgZ2xvYmFsIFJlYWRhYmxlU3RyZWFtIGNvbnN0cnVjdG9yIHdhcyB1c2Vk
LgorICBhc3NlcnRfbm90X2VxdWFscyhnZXRSZWFkZXIuY2FsbChyczEpLCB1bmRlZmluZWQsICdn
ZXRSZWFkZXIgc2hvdWxkIHdvcmsgb24gcnMxJyk7CisgIGFzc2VydF9ub3RfZXF1YWxzKGdldFJl
YWRlci5jYWxsKHJzMiksIHVuZGVmaW5lZCwgJ2dldFJlYWRlciBzaG91bGQgd29yayBvbiByczIn
KTsKKworfSwgJ1JlYWRhYmxlU3RyZWFtVGVlIHNob3VsZCBub3QgdXNlIGEgbW9kaWZpZWQgUmVh
ZGFibGVTdHJlYW0gY29uc3RydWN0b3IgZnJvbSB0aGUgZ2xvYmFsIG9iamVjdCcpOworCitwcm9t
aXNlX3Rlc3QodCA9PiB7CisKKyAgY29uc3QgcnMgPSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSh7
fSwgeyBoaWdoV2F0ZXJNYXJrOiAwIH0pOworCisgIC8vIENyZWF0ZSB0d28gYnJhbmNoZXMsIGVh
Y2ggd2l0aCBhIEhXTSBvZiAxLiBUaGlzIHNob3VsZCByZXN1bHQgaW4gb25lCisgIC8vIGNodW5r
IGJlaW5nIHB1bGxlZCwgbm90IHR3by4KKyAgcnMudGVlKCk7CisgIHJldHVybiBmbHVzaEFzeW5j
RXZlbnRzKCkudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhycy5ldmVudHMs
IFsncHVsbCddLCAncHVsbCBzaG91bGQgb25seSBiZSBjYWxsZWQgb25jZScpOworICB9KTsKKwor
fSwgJ1JlYWRhYmxlU3RyZWFtVGVlIHNob3VsZCBub3QgcHVsbCBtb3JlIGNodW5rcyB0aGFuIGNh
biBmaXQgaW4gdGhlIGJyYW5jaCBxdWV1ZScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisKKyAg
Y29uc3QgcnMgPSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSh7CisgICAgcHVsbChjb250cm9sbGVy
KSB7CisgICAgICBjb250cm9sbGVyLmVucXVldWUoJ2EnKTsKKyAgICB9CisgIH0sIHsgaGlnaFdh
dGVyTWFyazogMCB9KTsKKworICBjb25zdCBbcmVhZGVyMSwgcmVhZGVyMl0gPSBycy50ZWUoKS5t
YXAoYnJhbmNoID0+IGJyYW5jaC5nZXRSZWFkZXIoKSk7CisgIHJldHVybiBQcm9taXNlLmFsbChb
cmVhZGVyMS5yZWFkKCksIHJlYWRlcjIucmVhZCgpXSkKKyAgICAgIC50aGVuKCgpID0+IHsKKyAg
ICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJzLmV2ZW50cywgWydwdWxsJywgJ3B1bGwnXSwgJ3B1bGwg
c2hvdWxkIGJlIGNhbGxlZCB0d2ljZScpOworICB9KTsKKworfSwgJ1JlYWRhYmxlU3RyZWFtVGVl
IHNob3VsZCBvbmx5IHB1bGwgZW5vdWdoIHRvIGZpbGwgdGhlIGVtcHRpZXN0IHF1ZXVlJyk7CisK
K3Byb21pc2VfdGVzdCh0ID0+IHsKKworICBjb25zdCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3Ry
ZWFtKHt9LCB7IGhpZ2hXYXRlck1hcms6IDAgfSk7CisgIGNvbnN0IHRoZUVycm9yID0geyBuYW1l
OiAnYm9vIScgfTsKKworICBycy5jb250cm9sbGVyLmVycm9yKHRoZUVycm9yKTsKKworICBjb25z
dCBbcmVhZGVyMSwgcmVhZGVyMl0gPSBycy50ZWUoKS5tYXAoYnJhbmNoID0+IGJyYW5jaC5nZXRS
ZWFkZXIoKSk7CisKKyAgcmV0dXJuIGZsdXNoQXN5bmNFdmVudHMoKS50aGVuKCgpID0+IHsKKyAg
ICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJzLmV2ZW50cywgW10sICdwdWxsIHNob3VsZCBub3QgYmUg
Y2FsbGVkJyk7CisKKyAgICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAgICAgcHJvbWlzZV9yZWpl
Y3RzX2V4YWN0bHkodCwgdGhlRXJyb3IsIHJlYWRlcjEuY2xvc2VkKSwKKyAgICAgIHByb21pc2Vf
cmVqZWN0c19leGFjdGx5KHQsIHRoZUVycm9yLCByZWFkZXIyLmNsb3NlZCkKKyAgICBdKTsKKyAg
fSk7CisKK30sICdSZWFkYWJsZVN0cmVhbVRlZSBzaG91bGQgbm90IHB1bGwgd2hlbiBvcmlnaW5h
bCBpcyBhbHJlYWR5IGVycm9yZWQnKTsKKworZm9yIChjb25zdCBicmFuY2ggb2YgWzEsIDJdKSB7
CisgIHByb21pc2VfdGVzdCh0ID0+IHsKKworICAgIGNvbnN0IHJzID0gcmVjb3JkaW5nUmVhZGFi
bGVTdHJlYW0oe30sIHsgaGlnaFdhdGVyTWFyazogMCB9KTsKKyAgICBjb25zdCB0aGVFcnJvciA9
IHsgbmFtZTogJ2JvbyEnIH07CisKKyAgICBjb25zdCBbcmVhZGVyMSwgcmVhZGVyMl0gPSBycy50
ZWUoKS5tYXAoYnJhbmNoID0+IGJyYW5jaC5nZXRSZWFkZXIoKSk7CisKKyAgICByZXR1cm4gZmx1
c2hBc3luY0V2ZW50cygpLnRoZW4oKCkgPT4geworICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhy
cy5ldmVudHMsIFsncHVsbCddLCAncHVsbCBzaG91bGQgYmUgY2FsbGVkIG9uY2UnKTsKKworICAg
ICAgcnMuY29udHJvbGxlci5lbnF1ZXVlKCdhJyk7CisKKyAgICAgIGNvbnN0IHJlYWRlciA9IChi
cmFuY2ggPT09IDEpID8gcmVhZGVyMSA6IHJlYWRlcjI7CisgICAgICByZXR1cm4gcmVhZGVyLnJl
YWQoKTsKKyAgICB9KS50aGVuKCgpID0+IGZsdXNoQXN5bmNFdmVudHMoKSkudGhlbigoKSA9PiB7
CisgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJzLmV2ZW50cywgWydwdWxsJywgJ3B1bGwnXSwg
J3B1bGwgc2hvdWxkIGJlIGNhbGxlZCB0d2ljZScpOworCisgICAgICBycy5jb250cm9sbGVyLmVy
cm9yKHRoZUVycm9yKTsKKworICAgICAgcmV0dXJuIFByb21pc2UuYWxsKFsKKyAgICAgICAgcHJv
bWlzZV9yZWplY3RzX2V4YWN0bHkodCwgdGhlRXJyb3IsIHJlYWRlcjEuY2xvc2VkKSwKKyAgICAg
ICAgcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgdGhlRXJyb3IsIHJlYWRlcjIuY2xvc2VkKQor
ICAgICAgXSk7CisgICAgfSkudGhlbigoKSA9PiBmbHVzaEFzeW5jRXZlbnRzKCkpLnRoZW4oKCkg
PT4geworICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhycy5ldmVudHMsIFsncHVsbCcsICdwdWxs
J10sICdwdWxsIHNob3VsZCBiZSBjYWxsZWQgdHdpY2UnKTsKKyAgICB9KTsKKworICB9LCBgUmVh
ZGFibGVTdHJlYW1UZWUgc3RvcHMgcHVsbGluZyB3aGVuIG9yaWdpbmFsIHN0cmVhbSBlcnJvcnMg
d2hpbGUgYnJhbmNoICR7YnJhbmNofSBpcyByZWFkaW5nYCk7Cit9CisKK3Byb21pc2VfdGVzdCh0
ID0+IHsKKworICBjb25zdCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKHt9LCB7IGhpZ2hX
YXRlck1hcms6IDAgfSk7CisgIGNvbnN0IHRoZUVycm9yID0geyBuYW1lOiAnYm9vIScgfTsKKwor
ICBjb25zdCBbcmVhZGVyMSwgcmVhZGVyMl0gPSBycy50ZWUoKS5tYXAoYnJhbmNoID0+IGJyYW5j
aC5nZXRSZWFkZXIoKSk7CisKKyAgcmV0dXJuIGZsdXNoQXN5bmNFdmVudHMoKS50aGVuKCgpID0+
IHsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJzLmV2ZW50cywgWydwdWxsJ10sICdwdWxsIHNo
b3VsZCBiZSBjYWxsZWQgb25jZScpOworCisgICAgcnMuY29udHJvbGxlci5lbnF1ZXVlKCdhJyk7
CisKKyAgICByZXR1cm4gUHJvbWlzZS5hbGwoW3JlYWRlcjEucmVhZCgpLCByZWFkZXIyLnJlYWQo
KV0pOworICB9KS50aGVuKCgpID0+IGZsdXNoQXN5bmNFdmVudHMoKSkudGhlbigoKSA9PiB7Cisg
ICAgYXNzZXJ0X2FycmF5X2VxdWFscyhycy5ldmVudHMsIFsncHVsbCcsICdwdWxsJ10sICdwdWxs
IHNob3VsZCBiZSBjYWxsZWQgdHdpY2UnKTsKKworICAgIHJzLmNvbnRyb2xsZXIuZXJyb3IodGhl
RXJyb3IpOworCisgICAgcmV0dXJuIFByb21pc2UuYWxsKFsKKyAgICAgIHByb21pc2VfcmVqZWN0
c19leGFjdGx5KHQsIHRoZUVycm9yLCByZWFkZXIxLmNsb3NlZCksCisgICAgICBwcm9taXNlX3Jl
amVjdHNfZXhhY3RseSh0LCB0aGVFcnJvciwgcmVhZGVyMi5jbG9zZWQpCisgICAgXSk7CisgIH0p
LnRoZW4oKCkgPT4gZmx1c2hBc3luY0V2ZW50cygpKS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRf
YXJyYXlfZXF1YWxzKHJzLmV2ZW50cywgWydwdWxsJywgJ3B1bGwnXSwgJ3B1bGwgc2hvdWxkIGJl
IGNhbGxlZCB0d2ljZScpOworICB9KTsKKworfSwgJ1JlYWRhYmxlU3RyZWFtVGVlIHN0b3BzIHB1
bGxpbmcgd2hlbiBvcmlnaW5hbCBzdHJlYW0gZXJyb3JzIHdoaWxlIGJvdGggYnJhbmNoZXMgYXJl
IHJlYWRpbmcnKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3RlZS5hbnkud29ya2VyLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3RlZS5hbnkud29ya2VyLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5iYzEzMTVhOGE0YWRkZTk3YWMzOWY4ZWQwYjYxZmU2YTE4NGQzOWYzCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJl
YW1zL3JlYWRhYmxlLXN0cmVhbXMvdGVlLmFueS53b3JrZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsMjQgQEAKKworSGFybmVzcyBFcnJvciAoRkFJTCksIG1lc3NhZ2UgPSBVbmhhbmRsZWQgcmVq
ZWN0aW9uCisKK1BBU1MgUmVhZGFibGVTdHJlYW0gdGVlaW5nOiBycy50ZWUoKSByZXR1cm5zIGFu
IGFycmF5IG9mIHR3byBSZWFkYWJsZVN0cmVhbXMgCitQQVNTIFJlYWRhYmxlU3RyZWFtIHRlZWlu
Zzogc2hvdWxkIGJlIGFibGUgdG8gcmVhZCBvbmUgYnJhbmNoIHRvIHRoZSBlbmQgd2l0aG91dCBh
ZmZlY3RpbmcgdGhlIG90aGVyIAorUEFTUyBSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IHZhbHVlcyBz
aG91bGQgYmUgZXF1YWwgYWNyb3NzIGVhY2ggYnJhbmNoIAorUEFTUyBSZWFkYWJsZVN0cmVhbSB0
ZWVpbmc6IGVycm9ycyBpbiB0aGUgc291cmNlIHNob3VsZCBwcm9wYWdhdGUgdG8gYm90aCBicmFu
Y2hlcyAKK1BBU1MgUmVhZGFibGVTdHJlYW0gdGVlaW5nOiBjYW5jZWxpbmcgYnJhbmNoMSBzaG91
bGQgbm90IGltcGFjdCBicmFuY2gyIAorUEFTUyBSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IGNhbmNl
bGluZyBicmFuY2gyIHNob3VsZCBub3QgaW1wYWN0IGJyYW5jaDEgCitQQVNTIFJlYWRhYmxlU3Ry
ZWFtIHRlZWluZzogY2FuY2VsaW5nIGJvdGggYnJhbmNoZXMgc2hvdWxkIGFnZ3JlZ2F0ZSB0aGUg
Y2FuY2VsIHJlYXNvbnMgaW50byBhbiBhcnJheSAKK1BBU1MgUmVhZGFibGVTdHJlYW0gdGVlaW5n
OiBjYW5jZWxpbmcgYm90aCBicmFuY2hlcyBpbiByZXZlcnNlIG9yZGVyIHNob3VsZCBhZ2dyZWdh
dGUgdGhlIGNhbmNlbCByZWFzb25zIGludG8gYW4gYXJyYXkgCitQQVNTIFJlYWRhYmxlU3RyZWFt
IHRlZWluZzogZmFpbGluZyB0byBjYW5jZWwgdGhlIG9yaWdpbmFsIHN0cmVhbSBzaG91bGQgY2F1
c2UgY2FuY2VsKCkgdG8gcmVqZWN0IG9uIGJyYW5jaGVzIAorUEFTUyBSZWFkYWJsZVN0cmVhbSB0
ZWVpbmc6IGVycm9yaW5nIGEgdGVlZCBzdHJlYW0gc2hvdWxkIHByb3Blcmx5IGhhbmRsZSBjYW5j
ZWxlZCBicmFuY2hlcyAKK1BBU1MgUmVhZGFibGVTdHJlYW0gdGVlaW5nOiBlcnJvcmluZyBhIHRl
ZWQgc3RyZWFtIHNob3VsZCBlcnJvciBib3RoIGJyYW5jaGVzIAorUEFTUyBSZWFkYWJsZVN0cmVh
bSB0ZWVpbmc6IGNsb3NpbmcgdGhlIG9yaWdpbmFsIHNob3VsZCBpbW1lZGlhdGVseSBjbG9zZSB0
aGUgYnJhbmNoZXMgCitQQVNTIFJlYWRhYmxlU3RyZWFtIHRlZWluZzogZXJyb3JpbmcgdGhlIG9y
aWdpbmFsIHNob3VsZCBpbW1lZGlhdGVseSBlcnJvciB0aGUgYnJhbmNoZXMgCitQQVNTIFJlYWRh
YmxlU3RyZWFtVGVlIHNob3VsZCBub3QgdXNlIGEgbW9kaWZpZWQgUmVhZGFibGVTdHJlYW0gY29u
c3RydWN0b3IgZnJvbSB0aGUgZ2xvYmFsIG9iamVjdCAKK0ZBSUwgUmVhZGFibGVTdHJlYW1UZWUg
c2hvdWxkIG5vdCBwdWxsIG1vcmUgY2h1bmtzIHRoYW4gY2FuIGZpdCBpbiB0aGUgYnJhbmNoIHF1
ZXVlIGFzc2VydF9hcnJheV9lcXVhbHM6IHB1bGwgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIG9uY2Ug
bGVuZ3RocyBkaWZmZXIsIGV4cGVjdGVkIGFycmF5IFsicHVsbCJdIGxlbmd0aCAxLCBnb3QgWyJw
dWxsIiwgInB1bGwiXSBsZW5ndGggMgorRkFJTCBSZWFkYWJsZVN0cmVhbVRlZSBzaG91bGQgb25s
eSBwdWxsIGVub3VnaCB0byBmaWxsIHRoZSBlbXB0aWVzdCBxdWV1ZSBhc3NlcnRfYXJyYXlfZXF1
YWxzOiBwdWxsIHNob3VsZCBiZSBjYWxsZWQgdHdpY2UgbGVuZ3RocyBkaWZmZXIsIGV4cGVjdGVk
IGFycmF5IFsicHVsbCIsICJwdWxsIl0gbGVuZ3RoIDIsIGdvdCBbInB1bGwiLCAicHVsbCIsICJw
dWxsIiwgInB1bGwiXSBsZW5ndGggNAorUEFTUyBSZWFkYWJsZVN0cmVhbVRlZSBzaG91bGQgbm90
IHB1bGwgd2hlbiBvcmlnaW5hbCBpcyBhbHJlYWR5IGVycm9yZWQgCitGQUlMIFJlYWRhYmxlU3Ry
ZWFtVGVlIHN0b3BzIHB1bGxpbmcgd2hlbiBvcmlnaW5hbCBzdHJlYW0gZXJyb3JzIHdoaWxlIGJy
YW5jaCAxIGlzIHJlYWRpbmcgYXNzZXJ0X2FycmF5X2VxdWFsczogcHVsbCBzaG91bGQgYmUgY2Fs
bGVkIG9uY2UgbGVuZ3RocyBkaWZmZXIsIGV4cGVjdGVkIGFycmF5IFsicHVsbCJdIGxlbmd0aCAx
LCBnb3QgWyJwdWxsIiwgInB1bGwiXSBsZW5ndGggMgorRkFJTCBSZWFkYWJsZVN0cmVhbVRlZSBz
dG9wcyBwdWxsaW5nIHdoZW4gb3JpZ2luYWwgc3RyZWFtIGVycm9ycyB3aGlsZSBicmFuY2ggMiBp
cyByZWFkaW5nIGFzc2VydF9hcnJheV9lcXVhbHM6IHB1bGwgc2hvdWxkIGJlIGNhbGxlZCBvbmNl
IGxlbmd0aHMgZGlmZmVyLCBleHBlY3RlZCBhcnJheSBbInB1bGwiXSBsZW5ndGggMSwgZ290IFsi
cHVsbCIsICJwdWxsIl0gbGVuZ3RoIDIKK0ZBSUwgUmVhZGFibGVTdHJlYW1UZWUgc3RvcHMgcHVs
bGluZyB3aGVuIG9yaWdpbmFsIHN0cmVhbSBlcnJvcnMgd2hpbGUgYm90aCBicmFuY2hlcyBhcmUg
cmVhZGluZyBhc3NlcnRfYXJyYXlfZXF1YWxzOiBwdWxsIHNob3VsZCBiZSBjYWxsZWQgb25jZSBs
ZW5ndGhzIGRpZmZlciwgZXhwZWN0ZWQgYXJyYXkgWyJwdWxsIl0gbGVuZ3RoIDEsIGdvdCBbInB1
bGwiLCAicHVsbCJdIGxlbmd0aCAyCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3RlZS5hbnku
d29ya2VyLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy90ZWUuYW55Lndvcmtlci5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjIzODI5MTM1MjhlNjkzYjNhNWQ1NmM2NjBhNDUwNjA5ODBiNTQ4YzMKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
cmVhZGFibGUtc3RyZWFtcy90ZWUuYW55Lndvcmtlci5odG1sCkBAIC0wLDAgKzEgQEAKKzwhLS0g
VGhpcyBmaWxlIGlzIHJlcXVpcmVkIGZvciBXZWJLaXQgdGVzdCBpbmZyYXN0cnVjdHVyZSB0byBy
dW4gdGhlIHRlbXBsYXRlZCB0ZXN0IC0tPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3RlZS5kZWRpY2F0ZWR3b3JrZXItZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRh
YmxlLXN0cmVhbXMvdGVlLmRlZGljYXRlZHdvcmtlci1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGUwM2E1YzIxODNjODQ1NTI2ZDFiMGIyZjlhN2VhNDMzOTgxZDNk
NWQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0
cmVhbXMvdGVlLmRlZGljYXRlZHdvcmtlci1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAt
MSwxNCArMCwwIEBACi0KLVBBU1MgUmVhZGFibGVTdHJlYW0gdGVlaW5nOiBycy50ZWUoKSByZXR1
cm5zIGFuIGFycmF5IG9mIHR3byBSZWFkYWJsZVN0cmVhbXMgCi1QQVNTIFJlYWRhYmxlU3RyZWFt
IHRlZWluZzogc2hvdWxkIGJlIGFibGUgdG8gcmVhZCBvbmUgYnJhbmNoIHRvIHRoZSBlbmQgd2l0
aG91dCBhZmZlY3RpbmcgdGhlIG90aGVyIAotUEFTUyBSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IHZh
bHVlcyBzaG91bGQgYmUgZXF1YWwgYWNyb3NzIGVhY2ggYnJhbmNoIAotUEFTUyBSZWFkYWJsZVN0
cmVhbSB0ZWVpbmc6IGVycm9ycyBpbiB0aGUgc291cmNlIHNob3VsZCBwcm9wYWdhdGUgdG8gYm90
aCBicmFuY2hlcyAKLVBBU1MgUmVhZGFibGVTdHJlYW0gdGVlaW5nOiBjYW5jZWxpbmcgYnJhbmNo
MSBzaG91bGQgbm90IGltcGFjdCBicmFuY2gyIAotUEFTUyBSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6
IGNhbmNlbGluZyBicmFuY2gyIHNob3VsZCBub3QgaW1wYWN0IGJyYW5jaDIgCi1QQVNTIFJlYWRh
YmxlU3RyZWFtIHRlZWluZzogY2FuY2VsaW5nIGJvdGggYnJhbmNoZXMgc2hvdWxkIGFnZ3JlZ2F0
ZSB0aGUgY2FuY2VsIHJlYXNvbnMgaW50byBhbiBhcnJheSAKLVBBU1MgUmVhZGFibGVTdHJlYW0g
dGVlaW5nOiBmYWlsaW5nIHRvIGNhbmNlbCB0aGUgb3JpZ2luYWwgc3RyZWFtIHNob3VsZCBjYXVz
ZSBjYW5jZWwoKSB0byByZWplY3Qgb24gYnJhbmNoZXMgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIHRl
ZWluZzogZXJyb3JpbmcgYSB0ZWVkIHN0cmVhbSBzaG91bGQgcHJvcGVybHkgaGFuZGxlIGNhbmNl
bGVkIGJyYW5jaGVzIAotUEFTUyBSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IGNsb3NpbmcgdGhlIG9y
aWdpbmFsIHNob3VsZCBpbW1lZGlhdGVseSBjbG9zZSB0aGUgYnJhbmNoZXMgCi1QQVNTIFJlYWRh
YmxlU3RyZWFtIHRlZWluZzogZXJyb3JpbmcgdGhlIG9yaWdpbmFsIHNob3VsZCBpbW1lZGlhdGVs
eSBlcnJvciB0aGUgYnJhbmNoZXMgCi1QQVNTIFJlYWRhYmxlU3RyZWFtVGVlIHNob3VsZCBub3Qg
dXNlIGEgbW9kaWZpZWQgUmVhZGFibGVTdHJlYW0gY29uc3RydWN0b3IgZnJvbSB0aGUgZ2xvYmFs
IG9iamVjdCAKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvdGVlLmRlZGljYXRlZHdvcmtlci5o
dG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
L3JlYWRhYmxlLXN0cmVhbXMvdGVlLmRlZGljYXRlZHdvcmtlci5odG1sCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBiZjc5NDIyMTc0YjFkNTZlYzM0ODFlNTMzM2NjNWIwNDdlMjI4M2I1
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJl
YW1zL3RlZS5kZWRpY2F0ZWR3b3JrZXIuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAg
QEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHRpdGxlPnRlZS5q
cyBkZWRpY2F0ZWQgd29ya2VyIHdyYXBwZXIgZmlsZTwvdGl0bGU+Ci0KLTxzY3JpcHQgc3JjPSIv
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLQotPHNjcmlwdD4KLSd1c2Ugc3Ry
aWN0JzsKLWZldGNoX3Rlc3RzX2Zyb21fd29ya2VyKG5ldyBXb3JrZXIoJ3RlZS5qcycpKTsKLTwv
c2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvdGVlLmh0bWwgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy90
ZWUuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmJmYWZiNzI4MTZkYTdmMWFh
YTYxM2Q0NDA0YmIxY2RlZWY0YmU4OS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy90ZWUuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEw
ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHRpdGxl
PnRlZS5qcyBicm93c2VyIGNvbnRleHQgd3JhcHBlciBmaWxlPC90aXRsZT4KLQotPHNjcmlwdCBz
cmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9y
ZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotCi08c2NyaXB0IHNyYz0i
Li4vcmVzb3VyY2VzL3JzLXV0aWxzLmpzIj48L3NjcmlwdD4KLQotPHNjcmlwdCBzcmM9InRlZS5q
cyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy90ZWUuanMgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFt
cy90ZWUuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRmNzY4NzdlZmY0YTE3OTNl
ZDBjMjIyMjU1ZjRkNTU3ODk3YmMxM2UuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvdGVlLmpzCisrKyAvZGV2L251bGwKQEAgLTEsMjkz
ICswLDAgQEAKLSd1c2Ugc3RyaWN0JzsKLQotaWYgKHNlbGYuaW1wb3J0U2NyaXB0cykgewotICBz
ZWxmLmltcG9ydFNjcmlwdHMoJy4uL3Jlc291cmNlcy9ycy11dGlscy5qcycpOwotICBzZWxmLmlt
cG9ydFNjcmlwdHMoJy9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMnKTsKLX0KLQotdGVzdCgoKSA9
PiB7Ci0KLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oKTsKLSAgY29uc3QgcmVzdWx0
ID0gcnMudGVlKCk7Ci0KLSAgYXNzZXJ0X3RydWUoQXJyYXkuaXNBcnJheShyZXN1bHQpLCAncmV0
dXJuIHZhbHVlIHNob3VsZCBiZSBhbiBhcnJheScpOwotICBhc3NlcnRfZXF1YWxzKHJlc3VsdC5s
ZW5ndGgsIDIsICdhcnJheSBzaG91bGQgaGF2ZSBsZW5ndGggMicpOwotICBhc3NlcnRfZXF1YWxz
KHJlc3VsdFswXS5jb25zdHJ1Y3RvciwgUmVhZGFibGVTdHJlYW0sICcwdGggZWxlbWVudCBzaG91
bGQgYmUgYSBSZWFkYWJsZVN0cmVhbScpOwotICBhc3NlcnRfZXF1YWxzKHJlc3VsdFsxXS5jb25z
dHJ1Y3RvciwgUmVhZGFibGVTdHJlYW0sICcxc3QgZWxlbWVudCBzaG91bGQgYmUgYSBSZWFkYWJs
ZVN0cmVhbScpOwotCi19LCAnUmVhZGFibGVTdHJlYW0gdGVlaW5nOiBycy50ZWUoKSByZXR1cm5z
IGFuIGFycmF5IG9mIHR3byBSZWFkYWJsZVN0cmVhbXMnKTsKLQotcHJvbWlzZV90ZXN0KHQgPT4g
ewotCi0gIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0g
ICAgICBjLmVucXVldWUoJ2EnKTsKLSAgICAgIGMuZW5xdWV1ZSgnYicpOwotICAgICAgYy5jbG9z
ZSgpOwotICAgIH0KLSAgfSk7Ci0KLSAgY29uc3QgYnJhbmNoID0gcnMudGVlKCk7Ci0gIGNvbnN0
IGJyYW5jaDEgPSBicmFuY2hbMF07Ci0gIGNvbnN0IGJyYW5jaDIgPSBicmFuY2hbMV07Ci0gIGNv
bnN0IHJlYWRlcjEgPSBicmFuY2gxLmdldFJlYWRlcigpOwotICBjb25zdCByZWFkZXIyID0gYnJh
bmNoMi5nZXRSZWFkZXIoKTsKLQotICByZWFkZXIyLmNsb3NlZC50aGVuKHQudW5yZWFjaGVkX2Z1
bmMoJ2JyYW5jaDIgc2hvdWxkIG5vdCBiZSBjbG9zZWQnKSk7Ci0KLSAgcmV0dXJuIFByb21pc2Uu
YWxsKFsKLSAgICByZWFkZXIxLmNsb3NlZCwKLSAgICByZWFkZXIxLnJlYWQoKS50aGVuKHIgPT4g
ewotICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMociwgeyB2YWx1ZTogJ2EnLCBkb25lOiBmYWxz
ZSB9LCAnZmlyc3QgY2h1bmsgZnJvbSBicmFuY2gxIHNob3VsZCBiZSBjb3JyZWN0Jyk7Ci0gICAg
fSksCi0gICAgcmVhZGVyMS5yZWFkKCkudGhlbihyID0+IHsKLSAgICAgIGFzc2VydF9vYmplY3Rf
ZXF1YWxzKHIsIHsgdmFsdWU6ICdiJywgZG9uZTogZmFsc2UgfSwgJ3NlY29uZCBjaHVuayBmcm9t
IGJyYW5jaDEgc2hvdWxkIGJlIGNvcnJlY3QnKTsKLSAgICB9KSwKLSAgICByZWFkZXIxLnJlYWQo
KS50aGVuKHIgPT4gewotICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMociwgeyB2YWx1ZTogdW5k
ZWZpbmVkLCBkb25lOiB0cnVlIH0sICd0aGlyZCByZWFkKCkgZnJvbSBicmFuY2gxIHNob3VsZCBi
ZSBkb25lJyk7Ci0gICAgfSksCi0gICAgcmVhZGVyMi5yZWFkKCkudGhlbihyID0+IHsKLSAgICAg
IGFzc2VydF9vYmplY3RfZXF1YWxzKHIsIHsgdmFsdWU6ICdhJywgZG9uZTogZmFsc2UgfSwgJ2Zp
cnN0IGNodW5rIGZyb20gYnJhbmNoMiBzaG91bGQgYmUgY29ycmVjdCcpOwotICAgIH0pCi0gIF0p
OwotCi19LCAnUmVhZGFibGVTdHJlYW0gdGVlaW5nOiBzaG91bGQgYmUgYWJsZSB0byByZWFkIG9u
ZSBicmFuY2ggdG8gdGhlIGVuZCB3aXRob3V0IGFmZmVjdGluZyB0aGUgb3RoZXInKTsKLQotcHJv
bWlzZV90ZXN0KCgpID0+IHsKLQotICBjb25zdCB0aGVPYmplY3QgPSB7IHRoZTogJ3Rlc3Qgb2Jq
ZWN0JyB9OwotICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykg
ewotICAgICAgYy5lbnF1ZXVlKHRoZU9iamVjdCk7Ci0gICAgfQotICB9KTsKLQotICBjb25zdCBi
cmFuY2ggPSBycy50ZWUoKTsKLSAgY29uc3QgYnJhbmNoMSA9IGJyYW5jaFswXTsKLSAgY29uc3Qg
YnJhbmNoMiA9IGJyYW5jaFsxXTsKLSAgY29uc3QgcmVhZGVyMSA9IGJyYW5jaDEuZ2V0UmVhZGVy
KCk7Ci0gIGNvbnN0IHJlYWRlcjIgPSBicmFuY2gyLmdldFJlYWRlcigpOwotCi0gIHJldHVybiBQ
cm9taXNlLmFsbChbcmVhZGVyMS5yZWFkKCksIHJlYWRlcjIucmVhZCgpXSkudGhlbih2YWx1ZXMg
PT4gewotICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHZhbHVlc1swXSwgdmFsdWVzWzFdLCAndGhl
IHZhbHVlcyBzaG91bGQgYmUgZXF1YWwnKTsKLSAgfSk7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbSB0
ZWVpbmc6IHZhbHVlcyBzaG91bGQgYmUgZXF1YWwgYWNyb3NzIGVhY2ggYnJhbmNoJyk7Ci0KLXBy
b21pc2VfdGVzdCh0ID0+IHsKLQotICBjb25zdCB0aGVFcnJvciA9IHsgbmFtZTogJ2JvbyEnIH07
Ci0gIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0gICAg
ICBjLmVucXVldWUoJ2EnKTsKLSAgICAgIGMuZW5xdWV1ZSgnYicpOwotICAgIH0sCi0gICAgcHVs
bCgpIHsKLSAgICAgIHRocm93IHRoZUVycm9yOwotICAgIH0KLSAgfSk7Ci0KLSAgY29uc3QgYnJh
bmNoZXMgPSBycy50ZWUoKTsKLSAgY29uc3QgcmVhZGVyMSA9IGJyYW5jaGVzWzBdLmdldFJlYWRl
cigpOwotICBjb25zdCByZWFkZXIyID0gYnJhbmNoZXNbMV0uZ2V0UmVhZGVyKCk7Ci0KLSAgcmVh
ZGVyMS5sYWJlbCA9ICdyZWFkZXIxJzsKLSAgcmVhZGVyMi5sYWJlbCA9ICdyZWFkZXIyJzsKLQot
ICByZXR1cm4gUHJvbWlzZS5hbGwoWwotICAgIHByb21pc2VfcmVqZWN0cyh0LCB0aGVFcnJvciwg
cmVhZGVyMS5jbG9zZWQpLAotICAgIHByb21pc2VfcmVqZWN0cyh0LCB0aGVFcnJvciwgcmVhZGVy
Mi5jbG9zZWQpLAotICAgIHJlYWRlcjEucmVhZCgpLnRoZW4ociA9PiB7Ci0gICAgICBhc3NlcnRf
b2JqZWN0X2VxdWFscyhyLCB7IHZhbHVlOiAnYScsIGRvbmU6IGZhbHNlIH0sICdzaG91bGQgYmUg
YWJsZSB0byByZWFkIHRoZSBmaXJzdCBjaHVuayBpbiBicmFuY2gxJyk7Ci0gICAgfSksCi0gICAg
cmVhZGVyMS5yZWFkKCkudGhlbihyID0+IHsKLSAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHIs
IHsgdmFsdWU6ICdiJywgZG9uZTogZmFsc2UgfSwgJ3Nob3VsZCBiZSBhYmxlIHRvIHJlYWQgdGhl
IHNlY29uZCBjaHVuayBpbiBicmFuY2gxJyk7Ci0KLSAgICAgIHJldHVybiBwcm9taXNlX3JlamVj
dHModCwgdGhlRXJyb3IsIHJlYWRlcjIucmVhZCgpKTsKLSAgICB9KQotICAgIC50aGVuKCgpID0+
IHByb21pc2VfcmVqZWN0cyh0LCB0aGVFcnJvciwgcmVhZGVyMS5yZWFkKCkpKQotICBdKTsKLQot
fSwgJ1JlYWRhYmxlU3RyZWFtIHRlZWluZzogZXJyb3JzIGluIHRoZSBzb3VyY2Ugc2hvdWxkIHBy
b3BhZ2F0ZSB0byBib3RoIGJyYW5jaGVzJyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAg
Y29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGMu
ZW5xdWV1ZSgnYScpOwotICAgICAgYy5lbnF1ZXVlKCdiJyk7Ci0gICAgICBjLmNsb3NlKCk7Ci0g
ICAgfQotICB9KTsKLQotICBjb25zdCBicmFuY2hlcyA9IHJzLnRlZSgpOwotICBjb25zdCBicmFu
Y2gxID0gYnJhbmNoZXNbMF07Ci0gIGNvbnN0IGJyYW5jaDIgPSBicmFuY2hlc1sxXTsKLSAgYnJh
bmNoMS5jYW5jZWwoKTsKLQotICByZXR1cm4gUHJvbWlzZS5hbGwoWwotICAgIHJlYWRhYmxlU3Ry
ZWFtVG9BcnJheShicmFuY2gxKS50aGVuKGNodW5rcyA9PiB7Ci0gICAgICBhc3NlcnRfYXJyYXlf
ZXF1YWxzKGNodW5rcywgW10sICdicmFuY2gxIHNob3VsZCBoYXZlIG5vIGNodW5rcycpOwotICAg
IH0pLAotICAgIHJlYWRhYmxlU3RyZWFtVG9BcnJheShicmFuY2gyKS50aGVuKGNodW5rcyA9PiB7
Ci0gICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGNodW5rcywgWydhJywgJ2InXSwgJ2JyYW5jaDIg
c2hvdWxkIGhhdmUgdHdvIGNodW5rcycpOwotICAgIH0pCi0gIF0pOwotCi19LCAnUmVhZGFibGVT
dHJlYW0gdGVlaW5nOiBjYW5jZWxpbmcgYnJhbmNoMSBzaG91bGQgbm90IGltcGFjdCBicmFuY2gy
Jyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVT
dHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGMuZW5xdWV1ZSgnYScpOwotICAgICAgYy5l
bnF1ZXVlKCdiJyk7Ci0gICAgICBjLmNsb3NlKCk7Ci0gICAgfQotICB9KTsKLQotICBjb25zdCBi
cmFuY2hlcyA9IHJzLnRlZSgpOwotICBjb25zdCBicmFuY2gxID0gYnJhbmNoZXNbMF07Ci0gIGNv
bnN0IGJyYW5jaDIgPSBicmFuY2hlc1sxXTsKLSAgYnJhbmNoMi5jYW5jZWwoKTsKLQotICByZXR1
cm4gUHJvbWlzZS5hbGwoWwotICAgIHJlYWRhYmxlU3RyZWFtVG9BcnJheShicmFuY2gxKS50aGVu
KGNodW5rcyA9PiB7Ci0gICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGNodW5rcywgWydhJywgJ2In
XSwgJ2JyYW5jaDEgc2hvdWxkIGhhdmUgdHdvIGNodW5rcycpOwotICAgIH0pLAotICAgIHJlYWRh
YmxlU3RyZWFtVG9BcnJheShicmFuY2gyKS50aGVuKGNodW5rcyA9PiB7Ci0gICAgICBhc3NlcnRf
YXJyYXlfZXF1YWxzKGNodW5rcywgW10sICdicmFuY2gyIHNob3VsZCBoYXZlIG5vIGNodW5rcycp
OwotICAgIH0pCi0gIF0pOwotCi19LCAnUmVhZGFibGVTdHJlYW0gdGVlaW5nOiBjYW5jZWxpbmcg
YnJhbmNoMiBzaG91bGQgbm90IGltcGFjdCBicmFuY2gyJyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9
PiB7Ci0KLSAgY29uc3QgcmVhc29uMSA9IG5ldyBFcnJvcignV2VcJ3JlIHdhbnRlZCBtZW4uJyk7
Ci0gIGNvbnN0IHJlYXNvbjIgPSBuZXcgRXJyb3IoJ0kgaGF2ZSB0aGUgZGVhdGggc2VudGVuY2Ug
b24gdHdlbHZlIHN5c3RlbXMuJyk7Ci0KLSAgbGV0IHJlc29sdmU7Ci0gIGNvbnN0IHByb21pc2Ug
PSBuZXcgUHJvbWlzZShyID0+IHJlc29sdmUgPSByKTsKLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFi
bGVTdHJlYW0oewotICAgIGNhbmNlbChyZWFzb24pIHsKLSAgICAgIGFzc2VydF9hcnJheV9lcXVh
bHMocmVhc29uLCBbcmVhc29uMSwgcmVhc29uMl0sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICd0aGUgY2FuY2VsIHJlYXNvbiBzaG91bGQgYmUgYW4gYXJyYXkgY29udGFpbmluZyB0aG9zZSBm
cm9tIHRoZSBicmFuY2hlcycpOwotICAgICAgcmVzb2x2ZSgpOwotICAgIH0KLSAgfSk7Ci0KLSAg
Y29uc3QgYnJhbmNoID0gcnMudGVlKCk7Ci0gIGNvbnN0IGJyYW5jaDEgPSBicmFuY2hbMF07Ci0g
IGNvbnN0IGJyYW5jaDIgPSBicmFuY2hbMV07Ci0gIGJyYW5jaDEuY2FuY2VsKHJlYXNvbjEpOwot
ICBicmFuY2gyLmNhbmNlbChyZWFzb24yKTsKLQotICByZXR1cm4gcHJvbWlzZTsKLQotfSwgJ1Jl
YWRhYmxlU3RyZWFtIHRlZWluZzogY2FuY2VsaW5nIGJvdGggYnJhbmNoZXMgc2hvdWxkIGFnZ3Jl
Z2F0ZSB0aGUgY2FuY2VsIHJlYXNvbnMgaW50byBhbiBhcnJheScpOwotCi1wcm9taXNlX3Rlc3Qo
dCA9PiB7Ci0KLSAgY29uc3QgdGhlRXJyb3IgPSB7IG5hbWU6ICdJXCdsbCBiZSBjYXJlZnVsLicg
fTsKLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIGNhbmNlbCgpIHsKLSAg
ICAgIHRocm93IHRoZUVycm9yOwotICAgIH0KLSAgfSk7Ci0KLSAgY29uc3QgYnJhbmNoID0gcnMu
dGVlKCk7Ci0gIGNvbnN0IGJyYW5jaDEgPSBicmFuY2hbMF07Ci0gIGNvbnN0IGJyYW5jaDIgPSBi
cmFuY2hbMV07Ci0KLSAgcmV0dXJuIFByb21pc2UuYWxsKFsKLSAgICBwcm9taXNlX3JlamVjdHMo
dCwgdGhlRXJyb3IsIGJyYW5jaDEuY2FuY2VsKCkpLAotICAgIHByb21pc2VfcmVqZWN0cyh0LCB0
aGVFcnJvciwgYnJhbmNoMi5jYW5jZWwoKSkKLSAgXSk7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbSB0
ZWVpbmc6IGZhaWxpbmcgdG8gY2FuY2VsIHRoZSBvcmlnaW5hbCBzdHJlYW0gc2hvdWxkIGNhdXNl
IGNhbmNlbCgpIHRvIHJlamVjdCBvbiBicmFuY2hlcycpOwotCi10ZXN0KHQgPT4gewotCi0gIGxl
dCBjb250cm9sbGVyOwotICBjb25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oeyBzdGFy
dChjKSB7IGNvbnRyb2xsZXIgPSBjOyB9IH0pOwotICBjb25zdCBbYnJhbmNoMSwgYnJhbmNoMl0g
PSBzdHJlYW0udGVlKCk7Ci0KLSAgY29uc3QgcHJvbWlzZSA9IGNvbnRyb2xsZXIuZXJyb3IoImVy
cm9yIik7Ci0KLSAgYnJhbmNoMS5jYW5jZWwoKS5jYXRjaChfPT5fKTsKLSAgYnJhbmNoMi5jYW5j
ZWwoKS5jYXRjaChfPT5fKTsKLQotICByZXR1cm4gcHJvbWlzZTsKLX0sICdSZWFkYWJsZVN0cmVh
bSB0ZWVpbmc6IGVycm9yaW5nIGEgdGVlZCBzdHJlYW0gc2hvdWxkIHByb3Blcmx5IGhhbmRsZSBj
YW5jZWxlZCBicmFuY2hlcycpOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotCi0gIGxldCBjb250
cm9sbGVyOwotICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykg
ewotICAgICAgY29udHJvbGxlciA9IGM7Ci0gICAgfQotICB9KTsKLQotICBjb25zdCBicmFuY2hl
cyA9IHJzLnRlZSgpOwotICBjb25zdCByZWFkZXIxID0gYnJhbmNoZXNbMF0uZ2V0UmVhZGVyKCk7
Ci0gIGNvbnN0IHJlYWRlcjIgPSBicmFuY2hlc1sxXS5nZXRSZWFkZXIoKTsKLQotICBjb25zdCBw
cm9taXNlID0gUHJvbWlzZS5hbGwoW3JlYWRlcjEuY2xvc2VkLCByZWFkZXIyLmNsb3NlZF0pOwot
Ci0gIGNvbnRyb2xsZXIuY2xvc2UoKTsKLSAgcmV0dXJuIHByb21pc2U7Ci0KLX0sICdSZWFkYWJs
ZVN0cmVhbSB0ZWVpbmc6IGNsb3NpbmcgdGhlIG9yaWdpbmFsIHNob3VsZCBpbW1lZGlhdGVseSBj
bG9zZSB0aGUgYnJhbmNoZXMnKTsKLQotcHJvbWlzZV90ZXN0KHQgPT4gewotCi0gIGxldCBjb250
cm9sbGVyOwotICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykg
ewotICAgICAgY29udHJvbGxlciA9IGM7Ci0gICAgfQotICB9KTsKLQotICBjb25zdCBicmFuY2hl
cyA9IHJzLnRlZSgpOwotICBjb25zdCByZWFkZXIxID0gYnJhbmNoZXNbMF0uZ2V0UmVhZGVyKCk7
Ci0gIGNvbnN0IHJlYWRlcjIgPSBicmFuY2hlc1sxXS5nZXRSZWFkZXIoKTsKLQotICBjb25zdCB0
aGVFcnJvciA9IHsgbmFtZTogJ2JvbyEnIH07Ci0gIGNvbnN0IHByb21pc2UgPSBQcm9taXNlLmFs
bChbCi0gICAgcHJvbWlzZV9yZWplY3RzKHQsIHRoZUVycm9yLCByZWFkZXIxLmNsb3NlZCksCi0g
ICAgcHJvbWlzZV9yZWplY3RzKHQsIHRoZUVycm9yLCByZWFkZXIyLmNsb3NlZCkKLSAgXSk7Ci0K
LSAgY29udHJvbGxlci5lcnJvcih0aGVFcnJvcik7Ci0gIHJldHVybiBwcm9taXNlOwotCi19LCAn
UmVhZGFibGVTdHJlYW0gdGVlaW5nOiBlcnJvcmluZyB0aGUgb3JpZ2luYWwgc2hvdWxkIGltbWVk
aWF0ZWx5IGVycm9yIHRoZSBicmFuY2hlcycpOwotCi10ZXN0KHQgPT4gewotCi0gIC8vIENvcHkg
b3JpZ2luYWwgZ2xvYmFsLgotICBjb25zdCBvbGRSZWFkYWJsZVN0cmVhbSA9IFJlYWRhYmxlU3Ry
ZWFtOwotICBjb25zdCBnZXRSZWFkZXIgPSBSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUuZ2V0UmVh
ZGVyOwotCi0gIGNvbnN0IG9yaWdSUyA9IG5ldyBSZWFkYWJsZVN0cmVhbSgpOwotCi0gIC8vIFJl
cGxhY2UgdGhlIGdsb2JhbCBSZWFkYWJsZVN0cmVhbSBjb25zdHJ1Y3RvciB3aXRoIG9uZSB0aGF0
IGRvZXNuJ3Qgd29yay4KLSAgUmVhZGFibGVTdHJlYW0gPSBmdW5jdGlvbigpIHsKLSAgICB0aHJv
dyBuZXcgRXJyb3IoJ2dsb2JhbCBSZWFkYWJsZVN0cmVhbSBjb25zdHJ1Y3RvciBjYWxsZWQnKTsK
LSAgfTsKLSAgdC5hZGRfY2xlYW51cCgoKSA9PiB7Ci0gICAgUmVhZGFibGVTdHJlYW0gPSBvbGRS
ZWFkYWJsZVN0cmVhbTsKLSAgfSk7Ci0KLSAgLy8gVGhpcyB3aWxsIHByb2JhYmx5IGZhaWwgaWYg
dGhlIGdsb2JhbCBSZWFkYWJsZVN0cmVhbSBjb25zdHJ1Y3RvciB3YXMgdXNlZC4KLSAgY29uc3Qg
W3JzMSwgcnMyXSA9IG9yaWdSUy50ZWUoKTsKLQotICAvLyBUaGVzZSB3aWxsIGRlZmluaXRlbHkg
ZmFpbCBpZiB0aGUgZ2xvYmFsIFJlYWRhYmxlU3RyZWFtIGNvbnN0cnVjdG9yIHdhcyB1c2VkLgot
ICBhc3NlcnRfbm90X2VxdWFscyhnZXRSZWFkZXIuY2FsbChyczEpLCB1bmRlZmluZWQsICdnZXRS
ZWFkZXIgc2hvdWxkIHdvcmsgb24gcnMxJyk7Ci0gIGFzc2VydF9ub3RfZXF1YWxzKGdldFJlYWRl
ci5jYWxsKHJzMiksIHVuZGVmaW5lZCwgJ2dldFJlYWRlciBzaG91bGQgd29yayBvbiByczInKTsK
LQotfSwgJ1JlYWRhYmxlU3RyZWFtVGVlIHNob3VsZCBub3QgdXNlIGEgbW9kaWZpZWQgUmVhZGFi
bGVTdHJlYW0gY29uc3RydWN0b3IgZnJvbSB0aGUgZ2xvYmFsIG9iamVjdCcpOwotCi1kb25lKCk7
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy90ZWUuc2VydmljZXdvcmtlci5odHRwcy1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvcmVhZGFibGUtc3RyZWFtcy90ZWUuc2VydmljZXdvcmtlci5odHRwcy1leHBlY3RlZC50eHQK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFlNGU0OGEyYzA5YWYzMzM2MmM5ODk4MmQw
ZjE0NjM1YTI2NDcxNjMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
L3JlYWRhYmxlLXN0cmVhbXMvdGVlLnNlcnZpY2V3b3JrZXIuaHR0cHMtZXhwZWN0ZWQudHh0Cisr
KyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotCi1IYXJuZXNzIEVycm9yIChGQUlMKSwgbWVz
c2FnZSA9IFVuaGFuZGxlZCByZWplY3Rpb24KLQotUEFTUyBTZXJ2aWNlIHdvcmtlciB0ZXN0IHNl
dHVwIAotUEFTUyBSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IHJzLnRlZSgpIHJldHVybnMgYW4gYXJy
YXkgb2YgdHdvIFJlYWRhYmxlU3RyZWFtcyAKLVBBU1MgUmVhZGFibGVTdHJlYW0gdGVlaW5nOiBz
aG91bGQgYmUgYWJsZSB0byByZWFkIG9uZSBicmFuY2ggdG8gdGhlIGVuZCB3aXRob3V0IGFmZmVj
dGluZyB0aGUgb3RoZXIgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIHRlZWluZzogdmFsdWVzIHNob3Vs
ZCBiZSBlcXVhbCBhY3Jvc3MgZWFjaCBicmFuY2ggCi1QQVNTIFJlYWRhYmxlU3RyZWFtIHRlZWlu
ZzogZXJyb3JzIGluIHRoZSBzb3VyY2Ugc2hvdWxkIHByb3BhZ2F0ZSB0byBib3RoIGJyYW5jaGVz
IAotUEFTUyBSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IGNhbmNlbGluZyBicmFuY2gxIHNob3VsZCBu
b3QgaW1wYWN0IGJyYW5jaDIgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIHRlZWluZzogY2FuY2VsaW5n
IGJyYW5jaDIgc2hvdWxkIG5vdCBpbXBhY3QgYnJhbmNoMiAKLVBBU1MgUmVhZGFibGVTdHJlYW0g
dGVlaW5nOiBjYW5jZWxpbmcgYm90aCBicmFuY2hlcyBzaG91bGQgYWdncmVnYXRlIHRoZSBjYW5j
ZWwgcmVhc29ucyBpbnRvIGFuIGFycmF5IAotUEFTUyBSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IGZh
aWxpbmcgdG8gY2FuY2VsIHRoZSBvcmlnaW5hbCBzdHJlYW0gc2hvdWxkIGNhdXNlIGNhbmNlbCgp
IHRvIHJlamVjdCBvbiBicmFuY2hlcyAKLVBBU1MgUmVhZGFibGVTdHJlYW0gdGVlaW5nOiBlcnJv
cmluZyBhIHRlZWQgc3RyZWFtIHNob3VsZCBwcm9wZXJseSBoYW5kbGUgY2FuY2VsZWQgYnJhbmNo
ZXMgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIHRlZWluZzogY2xvc2luZyB0aGUgb3JpZ2luYWwgc2hv
dWxkIGltbWVkaWF0ZWx5IGNsb3NlIHRoZSBicmFuY2hlcyAKLVBBU1MgUmVhZGFibGVTdHJlYW0g
dGVlaW5nOiBlcnJvcmluZyB0aGUgb3JpZ2luYWwgc2hvdWxkIGltbWVkaWF0ZWx5IGVycm9yIHRo
ZSBicmFuY2hlcyAKLVBBU1MgUmVhZGFibGVTdHJlYW1UZWUgc2hvdWxkIG5vdCB1c2UgYSBtb2Rp
ZmllZCBSZWFkYWJsZVN0cmVhbSBjb25zdHJ1Y3RvciBmcm9tIHRoZSBnbG9iYWwgb2JqZWN0IAot
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy90ZWUuc2VydmljZXdvcmtlci5odHRwcy5odG1sIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRh
YmxlLXN0cmVhbXMvdGVlLnNlcnZpY2V3b3JrZXIuaHR0cHMuaHRtbApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggYjIyZmJlZjU3YjgxYjkwNzVkNWUyYjk5YTlkNDRhMTE2YzAzNzU5My4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFt
cy90ZWUuc2VydmljZXdvcmtlci5odHRwcy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAs
MCBAQAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08dGl0bGU+dGVl
LmpzIHNlcnZpY2Ugd29ya2VyIHdyYXBwZXIgZmlsZTwvdGl0bGU+Ci0KLTxzY3JpcHQgc3JjPSIv
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvc2Vydmlj
ZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL3Jlc291cmNlcy90ZXN0LWhlbHBlcnMuc3ViLmpzIj48
L3NjcmlwdD4KLQotPHNjcmlwdD4KLSd1c2Ugc3RyaWN0JzsKLXNlcnZpY2Vfd29ya2VyX3Rlc3Qo
J3RlZS5qcycsICdTZXJ2aWNlIHdvcmtlciB0ZXN0IHNldHVwJyk7Ci08L3NjcmlwdD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy9yZWFkYWJsZS1zdHJlYW1zL3RlZS5zaGFyZWR3b3JrZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0
cmVhbXMvdGVlLnNoYXJlZHdvcmtlci1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDA5ZDVkMjUwOWQ3ODQ3ZThjZDZmZTY2MDZhYTYwY2RkMzNhYTQ3NGUuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvdGVl
LnNoYXJlZHdvcmtlci1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAK
LUNPTlNPTEUgTUVTU0FHRTogUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IFNo
YXJlZFdvcmtlcgotCi1IYXJuZXNzIEVycm9yIChGQUlMKSwgbWVzc2FnZSA9IFJlZmVyZW5jZUVy
cm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBTaGFyZWRXb3JrZXIKLQotCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFi
bGUtc3RyZWFtcy90ZWUuc2hhcmVkd29ya2VyLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy90ZWUuc2hhcmVk
d29ya2VyLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYzODBjOWQ0ZmEzMmI4
ZjQ3NzRlM2M4YTY1NjY4OTc2ZGY5ZWFhNDguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvdGVlLnNoYXJlZHdvcmtlci5odG1sCisrKyAv
ZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0
PSJ1dGYtOCI+Ci08dGl0bGU+dGVlLmpzIHNoYXJlZCB3b3JrZXIgd3JhcHBlciBmaWxlPC90aXRs
ZT4KLQotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0Pgot
PHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0Pgot
Ci08c2NyaXB0PgotJ3VzZSBzdHJpY3QnOwotZmV0Y2hfdGVzdHNfZnJvbV93b3JrZXIobmV3IFNo
YXJlZFdvcmtlcigndGVlLmpzJykpOwotPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFt
cy90ZW1wbGF0ZWQuYW55LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3RlbXBsYXRlZC5hbnkt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk0NGRmN2U5ODNhZDUzNTJkMTU5NzdiYjUwMmRlMjVk
MzI0YWRhM2EKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy90ZW1wbGF0ZWQuYW55LWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDkwIEBACisKK1BBU1MgUnVubmluZyB0ZW1wbGF0ZWRSU0Vt
cHR5IHdpdGggUmVhZGFibGVTdHJlYW0gKGVtcHR5KSAKK1BBU1MgUmVhZGFibGVTdHJlYW0gKGVt
cHR5KTogaW5zdGFuY2VzIGhhdmUgdGhlIGNvcnJlY3QgbWV0aG9kcyBhbmQgcHJvcGVydGllcyAK
K0ZBSUwgUmVhZGFibGVTdHJlYW0gKGVtcHR5KTogY2FsbGluZyBnZXRSZWFkZXIgd2l0aCBpbnZh
bGlkIGFyZ3VtZW50cyBzaG91bGQgdGhyb3cgYXBwcm9wcmlhdGUgZXJyb3JzIGFzc2VydF90aHJv
d3NfanM6IGVtcHR5IHN0cmluZyBtb2RlIHNob3VsZCB0aHJvdyBmdW5jdGlvbiAiKCkgPT4gcnMu
Z2V0UmVhZGVyKHsgbW9kZTogJycgfSkiIHRocmV3IG9iamVjdCAiUmFuZ2VFcnJvcjogSW52YWxp
ZCBtb2RlIGlzIHNwZWNpZmllZCIgKCJSYW5nZUVycm9yIikgZXhwZWN0ZWQgaW5zdGFuY2Ugb2Yg
ZnVuY3Rpb24gImZ1bmN0aW9uIFR5cGVFcnJvcigpIHsKKyAgICBbbmF0aXZlIGNvZGVdCit9IiAo
IlR5cGVFcnJvciIpCitQQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNFbXB0eVJlYWRlciB3aXRoIFJl
YWRhYmxlU3RyZWFtIChlbXB0eSkgcmVhZGVyIAorUEFTUyBSZWFkYWJsZVN0cmVhbSAoZW1wdHkp
IHJlYWRlcjogaW5zdGFuY2VzIGhhdmUgdGhlIGNvcnJlY3QgbWV0aG9kcyBhbmQgcHJvcGVydGll
cyAKK1BBU1MgUmVhZGFibGVTdHJlYW0gKGVtcHR5KSByZWFkZXI6IGxvY2tlZCBzaG91bGQgYmUg
dHJ1ZSAKK1BBU1MgUmVhZGFibGVTdHJlYW0gKGVtcHR5KSByZWFkZXI6IHJlYWQoKSBzaG91bGQg
bmV2ZXIgc2V0dGxlIAorUEFTUyBSZWFkYWJsZVN0cmVhbSAoZW1wdHkpIHJlYWRlcjogdHdvIHJl
YWQoKXMgc2hvdWxkIGJvdGggbmV2ZXIgc2V0dGxlIAorUEFTUyBSZWFkYWJsZVN0cmVhbSAoZW1w
dHkpIHJlYWRlcjogcmVhZCgpIHNob3VsZCByZXR1cm4gZGlzdGluY3QgcHJvbWlzZXMgZWFjaCB0
aW1lIAorUEFTUyBSZWFkYWJsZVN0cmVhbSAoZW1wdHkpIHJlYWRlcjogZ2V0UmVhZGVyKCkgYWdh
aW4gb24gdGhlIHN0cmVhbSBzaG91bGQgZmFpbCAKK1BBU1MgUmVhZGFibGVTdHJlYW0gKGVtcHR5
KSByZWFkZXI6IHJlbGVhc2luZyB0aGUgbG9jayB3aXRoIHBlbmRpbmcgcmVhZCByZXF1ZXN0cyBz
aG91bGQgdGhyb3cgYnV0IHRoZSByZWFkIHJlcXVlc3RzIHNob3VsZCBzdGF5IHBlbmRpbmcgCitQ
QVNTIFJlYWRhYmxlU3RyZWFtIChlbXB0eSkgcmVhZGVyOiByZWxlYXNpbmcgdGhlIGxvY2sgc2hv
dWxkIGNhdXNlIGZ1cnRoZXIgcmVhZCgpIGNhbGxzIHRvIHJlamVjdCB3aXRoIGEgVHlwZUVycm9y
IAorUEFTUyBSZWFkYWJsZVN0cmVhbSAoZW1wdHkpIHJlYWRlcjogcmVsZWFzaW5nIHRoZSBsb2Nr
IHNob3VsZCBjYXVzZSBjbG9zZWQgY2FsbHMgdG8gcmVqZWN0IHdpdGggYSBUeXBlRXJyb3IgCitQ
QVNTIFJlYWRhYmxlU3RyZWFtIChlbXB0eSkgcmVhZGVyOiByZWxlYXNpbmcgdGhlIGxvY2sgc2hv
dWxkIGNhdXNlIGxvY2tlZCB0byBiZWNvbWUgZmFsc2UgCitQQVNTIFJlYWRhYmxlU3RyZWFtIChl
bXB0eSkgcmVhZGVyOiBjYW5jZWxpbmcgdmlhIHRoZSByZWFkZXIgc2hvdWxkIGNhdXNlIHRoZSBy
ZWFkZXIgdG8gYWN0IGNsb3NlZCAKK1BBU1MgUmVhZGFibGVTdHJlYW0gKGVtcHR5KSByZWFkZXI6
IGNhbmNlbGluZyB2aWEgdGhlIHN0cmVhbSBzaG91bGQgZmFpbCAKK1BBU1MgUnVubmluZyB0ZW1w
bGF0ZWRSU0Nsb3NlZCB3aXRoIFJlYWRhYmxlU3RyZWFtIChjbG9zZWQgdmlhIGNhbGwgaW4gc3Rh
cnQpIAorUEFTUyBSZWFkYWJsZVN0cmVhbSAoY2xvc2VkIHZpYSBjYWxsIGluIHN0YXJ0KTogY2Fu
Y2VsKCkgc2hvdWxkIHJldHVybiBhIGRpc3RpbmN0IGZ1bGZpbGxlZCBwcm9taXNlIGVhY2ggdGlt
ZSAKK1BBU1MgUmVhZGFibGVTdHJlYW0gKGNsb3NlZCB2aWEgY2FsbCBpbiBzdGFydCk6IGxvY2tl
ZCBzaG91bGQgYmUgZmFsc2UgCitQQVNTIFJlYWRhYmxlU3RyZWFtIChjbG9zZWQgdmlhIGNhbGwg
aW4gc3RhcnQpOiBnZXRSZWFkZXIoKSBzaG91bGQgYmUgT0sgCitQQVNTIFJlYWRhYmxlU3RyZWFt
IChjbG9zZWQgdmlhIGNhbGwgaW4gc3RhcnQpOiBzaG91bGQgYmUgYWJsZSB0byBhY3F1aXJlIG11
bHRpcGxlIHJlYWRlcnMgaWYgdGhleSBhcmUgcmVsZWFzZWQgaW4gc3VjY2Vzc2lvbiAKK1BBU1Mg
UmVhZGFibGVTdHJlYW0gKGNsb3NlZCB2aWEgY2FsbCBpbiBzdGFydCk6IHNob3VsZCBub3QgYmUg
YWJsZSB0byBhY3F1aXJlIGEgc2Vjb25kIHJlYWRlciBpZiB3ZSBkb24ndCByZWxlYXNlIHRoZSBm
aXJzdCBvbmUgCitQQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNDbG9zZWRSZWFkZXIgd2l0aCBSZWFk
YWJsZVN0cmVhbSByZWFkZXIgKGNsb3NlZCBiZWZvcmUgZ2V0dGluZyByZWFkZXIpIAorUEFTUyBS
ZWFkYWJsZVN0cmVhbSByZWFkZXIgKGNsb3NlZCBiZWZvcmUgZ2V0dGluZyByZWFkZXIpOiByZWFk
KCkgc2hvdWxkIGZ1bGZpbGwgd2l0aCB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSAK
K1BBU1MgUmVhZGFibGVTdHJlYW0gcmVhZGVyIChjbG9zZWQgYmVmb3JlIGdldHRpbmcgcmVhZGVy
KTogcmVhZCgpIG11bHRpcGxlIHRpbWVzIHNob3VsZCBmdWxmaWxsIHdpdGggeyB2YWx1ZTogdW5k
ZWZpbmVkLCBkb25lOiB0cnVlIH0gCitQQVNTIFJlYWRhYmxlU3RyZWFtIHJlYWRlciAoY2xvc2Vk
IGJlZm9yZSBnZXR0aW5nIHJlYWRlcik6IHJlYWQoKSBzaG91bGQgd29yayB3aGVuIHVzZWQgd2l0
aGluIGFub3RoZXIgcmVhZCgpIGZ1bGZpbGwgY2FsbGJhY2sgCitQQVNTIFJlYWRhYmxlU3RyZWFt
IHJlYWRlciAoY2xvc2VkIGJlZm9yZSBnZXR0aW5nIHJlYWRlcik6IGNsb3NlZCBzaG91bGQgZnVs
ZmlsbCB3aXRoIHVuZGVmaW5lZCAKK1BBU1MgUmVhZGFibGVTdHJlYW0gcmVhZGVyIChjbG9zZWQg
YmVmb3JlIGdldHRpbmcgcmVhZGVyKTogcmVsZWFzaW5nIHRoZSBsb2NrIHNob3VsZCBjYXVzZSBj
bG9zZWQgdG8gcmVqZWN0IGFuZCBjaGFuZ2UgaWRlbnRpdHkgCitQQVNTIFJlYWRhYmxlU3RyZWFt
IHJlYWRlciAoY2xvc2VkIGJlZm9yZSBnZXR0aW5nIHJlYWRlcik6IGNhbmNlbCgpIHNob3VsZCBy
ZXR1cm4gYSBkaXN0aW5jdCBmdWxmaWxsZWQgcHJvbWlzZSBlYWNoIHRpbWUgCitQQVNTIFJ1bm5p
bmcgdGVtcGxhdGVkUlNDbG9zZWRSZWFkZXIgd2l0aCBSZWFkYWJsZVN0cmVhbSByZWFkZXIgKGNs
b3NlZCBhZnRlciBnZXR0aW5nIHJlYWRlcikgCitQQVNTIFJlYWRhYmxlU3RyZWFtIHJlYWRlciAo
Y2xvc2VkIGFmdGVyIGdldHRpbmcgcmVhZGVyKTogcmVhZCgpIHNob3VsZCBmdWxmaWxsIHdpdGgg
eyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0gCitQQVNTIFJlYWRhYmxlU3RyZWFtIHJl
YWRlciAoY2xvc2VkIGFmdGVyIGdldHRpbmcgcmVhZGVyKTogcmVhZCgpIG11bHRpcGxlIHRpbWVz
IHNob3VsZCBmdWxmaWxsIHdpdGggeyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0gCitQ
QVNTIFJlYWRhYmxlU3RyZWFtIHJlYWRlciAoY2xvc2VkIGFmdGVyIGdldHRpbmcgcmVhZGVyKTog
cmVhZCgpIHNob3VsZCB3b3JrIHdoZW4gdXNlZCB3aXRoaW4gYW5vdGhlciByZWFkKCkgZnVsZmls
bCBjYWxsYmFjayAKK1BBU1MgUmVhZGFibGVTdHJlYW0gcmVhZGVyIChjbG9zZWQgYWZ0ZXIgZ2V0
dGluZyByZWFkZXIpOiBjbG9zZWQgc2hvdWxkIGZ1bGZpbGwgd2l0aCB1bmRlZmluZWQgCitQQVNT
IFJlYWRhYmxlU3RyZWFtIHJlYWRlciAoY2xvc2VkIGFmdGVyIGdldHRpbmcgcmVhZGVyKTogcmVs
ZWFzaW5nIHRoZSBsb2NrIHNob3VsZCBjYXVzZSBjbG9zZWQgdG8gcmVqZWN0IGFuZCBjaGFuZ2Ug
aWRlbnRpdHkgCitQQVNTIFJlYWRhYmxlU3RyZWFtIHJlYWRlciAoY2xvc2VkIGFmdGVyIGdldHRp
bmcgcmVhZGVyKTogY2FuY2VsKCkgc2hvdWxkIHJldHVybiBhIGRpc3RpbmN0IGZ1bGZpbGxlZCBw
cm9taXNlIGVhY2ggdGltZSAKK1BBU1MgUnVubmluZyB0ZW1wbGF0ZWRSU0Nsb3NlZCB3aXRoIFJl
YWRhYmxlU3RyZWFtIChjbG9zZWQgdmlhIGNhbmNlbCkgCitQQVNTIFJlYWRhYmxlU3RyZWFtIChj
bG9zZWQgdmlhIGNhbmNlbCk6IGNhbmNlbCgpIHNob3VsZCByZXR1cm4gYSBkaXN0aW5jdCBmdWxm
aWxsZWQgcHJvbWlzZSBlYWNoIHRpbWUgCitQQVNTIFJlYWRhYmxlU3RyZWFtIChjbG9zZWQgdmlh
IGNhbmNlbCk6IGxvY2tlZCBzaG91bGQgYmUgZmFsc2UgCitQQVNTIFJlYWRhYmxlU3RyZWFtIChj
bG9zZWQgdmlhIGNhbmNlbCk6IGdldFJlYWRlcigpIHNob3VsZCBiZSBPSyAKK1BBU1MgUmVhZGFi
bGVTdHJlYW0gKGNsb3NlZCB2aWEgY2FuY2VsKTogc2hvdWxkIGJlIGFibGUgdG8gYWNxdWlyZSBt
dWx0aXBsZSByZWFkZXJzIGlmIHRoZXkgYXJlIHJlbGVhc2VkIGluIHN1Y2Nlc3Npb24gCitQQVNT
IFJlYWRhYmxlU3RyZWFtIChjbG9zZWQgdmlhIGNhbmNlbCk6IHNob3VsZCBub3QgYmUgYWJsZSB0
byBhY3F1aXJlIGEgc2Vjb25kIHJlYWRlciBpZiB3ZSBkb24ndCByZWxlYXNlIHRoZSBmaXJzdCBv
bmUgCitQQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNDbG9zZWRSZWFkZXIgd2l0aCBSZWFkYWJsZVN0
cmVhbSByZWFkZXIgKGNsb3NlZCB2aWEgY2FuY2VsIGFmdGVyIGdldHRpbmcgcmVhZGVyKSAKK1BB
U1MgUmVhZGFibGVTdHJlYW0gcmVhZGVyIChjbG9zZWQgdmlhIGNhbmNlbCBhZnRlciBnZXR0aW5n
IHJlYWRlcik6IHJlYWQoKSBzaG91bGQgZnVsZmlsbCB3aXRoIHsgdmFsdWU6IHVuZGVmaW5lZCwg
ZG9uZTogdHJ1ZSB9IAorUEFTUyBSZWFkYWJsZVN0cmVhbSByZWFkZXIgKGNsb3NlZCB2aWEgY2Fu
Y2VsIGFmdGVyIGdldHRpbmcgcmVhZGVyKTogcmVhZCgpIG11bHRpcGxlIHRpbWVzIHNob3VsZCBm
dWxmaWxsIHdpdGggeyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0gCitQQVNTIFJlYWRh
YmxlU3RyZWFtIHJlYWRlciAoY2xvc2VkIHZpYSBjYW5jZWwgYWZ0ZXIgZ2V0dGluZyByZWFkZXIp
OiByZWFkKCkgc2hvdWxkIHdvcmsgd2hlbiB1c2VkIHdpdGhpbiBhbm90aGVyIHJlYWQoKSBmdWxm
aWxsIGNhbGxiYWNrIAorUEFTUyBSZWFkYWJsZVN0cmVhbSByZWFkZXIgKGNsb3NlZCB2aWEgY2Fu
Y2VsIGFmdGVyIGdldHRpbmcgcmVhZGVyKTogY2xvc2VkIHNob3VsZCBmdWxmaWxsIHdpdGggdW5k
ZWZpbmVkIAorUEFTUyBSZWFkYWJsZVN0cmVhbSByZWFkZXIgKGNsb3NlZCB2aWEgY2FuY2VsIGFm
dGVyIGdldHRpbmcgcmVhZGVyKTogcmVsZWFzaW5nIHRoZSBsb2NrIHNob3VsZCBjYXVzZSBjbG9z
ZWQgdG8gcmVqZWN0IGFuZCBjaGFuZ2UgaWRlbnRpdHkgCitQQVNTIFJlYWRhYmxlU3RyZWFtIHJl
YWRlciAoY2xvc2VkIHZpYSBjYW5jZWwgYWZ0ZXIgZ2V0dGluZyByZWFkZXIpOiBjYW5jZWwoKSBz
aG91bGQgcmV0dXJuIGEgZGlzdGluY3QgZnVsZmlsbGVkIHByb21pc2UgZWFjaCB0aW1lIAorUEFT
UyBSdW5uaW5nIHRlbXBsYXRlZFJTRXJyb3JlZCB3aXRoIFJlYWRhYmxlU3RyZWFtIChlcnJvcmVk
IHZpYSBjYWxsIGluIHN0YXJ0KSAKK1BBU1MgUmVhZGFibGVTdHJlYW0gKGVycm9yZWQgdmlhIGNh
bGwgaW4gc3RhcnQpOiBnZXRSZWFkZXIoKSBzaG91bGQgcmV0dXJuIGEgcmVhZGVyIHRoYXQgYWN0
cyBlcnJvcmVkIAorUEFTUyBSZWFkYWJsZVN0cmVhbSAoZXJyb3JlZCB2aWEgY2FsbCBpbiBzdGFy
dCk6IHJlYWQoKSB0d2ljZSBzaG91bGQgZ2l2ZSB0aGUgZXJyb3IgZWFjaCB0aW1lIAorUEFTUyBS
ZWFkYWJsZVN0cmVhbSAoZXJyb3JlZCB2aWEgY2FsbCBpbiBzdGFydCk6IGxvY2tlZCBzaG91bGQg
YmUgZmFsc2UgCitQQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNFcnJvcmVkU3luY09ubHkgd2l0aCBS
ZWFkYWJsZVN0cmVhbSAoZXJyb3JlZCB2aWEgY2FsbCBpbiBzdGFydCkgCitQQVNTIFJlYWRhYmxl
U3RyZWFtIChlcnJvcmVkIHZpYSBjYWxsIGluIHN0YXJ0KTogc2hvdWxkIGJlIGFibGUgdG8gb2J0
YWluIGEgc2Vjb25kIHJlYWRlciwgd2l0aCB0aGUgY29ycmVjdCBjbG9zZWQgcHJvbWlzZSAKK1BB
U1MgUmVhZGFibGVTdHJlYW0gKGVycm9yZWQgdmlhIGNhbGwgaW4gc3RhcnQpOiBzaG91bGQgbm90
IGJlIGFibGUgdG8gb2J0YWluIGFkZGl0aW9uYWwgcmVhZGVycyBpZiB3ZSBkb24ndCByZWxlYXNl
IHRoZSBmaXJzdCBsb2NrIAorUEFTUyBSZWFkYWJsZVN0cmVhbSAoZXJyb3JlZCB2aWEgY2FsbCBp
biBzdGFydCk6IGNhbmNlbCgpIHNob3VsZCByZXR1cm4gYSBkaXN0aW5jdCByZWplY3RlZCBwcm9t
aXNlIGVhY2ggdGltZSAKK1BBU1MgUmVhZGFibGVTdHJlYW0gKGVycm9yZWQgdmlhIGNhbGwgaW4g
c3RhcnQpOiByZWFkZXIgY2FuY2VsKCkgc2hvdWxkIHJldHVybiBhIGRpc3RpbmN0IHJlamVjdGVk
IHByb21pc2UgZWFjaCB0aW1lIAorUEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTRXJyb3JlZCB3aXRo
IFJlYWRhYmxlU3RyZWFtIChlcnJvcmVkIHZpYSByZXR1cm5pbmcgYSByZWplY3RlZCBwcm9taXNl
IGluIHN0YXJ0KSAKK1BBU1MgUmVhZGFibGVTdHJlYW0gKGVycm9yZWQgdmlhIHJldHVybmluZyBh
IHJlamVjdGVkIHByb21pc2UgaW4gc3RhcnQpOiBnZXRSZWFkZXIoKSBzaG91bGQgcmV0dXJuIGEg
cmVhZGVyIHRoYXQgYWN0cyBlcnJvcmVkIAorUEFTUyBSZWFkYWJsZVN0cmVhbSAoZXJyb3JlZCB2
aWEgcmV0dXJuaW5nIGEgcmVqZWN0ZWQgcHJvbWlzZSBpbiBzdGFydCk6IHJlYWQoKSB0d2ljZSBz
aG91bGQgZ2l2ZSB0aGUgZXJyb3IgZWFjaCB0aW1lIAorUEFTUyBSZWFkYWJsZVN0cmVhbSAoZXJy
b3JlZCB2aWEgcmV0dXJuaW5nIGEgcmVqZWN0ZWQgcHJvbWlzZSBpbiBzdGFydCk6IGxvY2tlZCBz
aG91bGQgYmUgZmFsc2UgCitQQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNFcnJvcmVkUmVhZGVyIHdp
dGggUmVhZGFibGVTdHJlYW0gKGVycm9yZWQgdmlhIHJldHVybmluZyBhIHJlamVjdGVkIHByb21p
c2UgaW4gc3RhcnQpIHJlYWRlciAKK1BBU1MgUmVhZGFibGVTdHJlYW0gKGVycm9yZWQgdmlhIHJl
dHVybmluZyBhIHJlamVjdGVkIHByb21pc2UgaW4gc3RhcnQpIHJlYWRlcjogY2xvc2VkIHNob3Vs
ZCByZWplY3Qgd2l0aCB0aGUgZXJyb3IgCitQQVNTIFJlYWRhYmxlU3RyZWFtIChlcnJvcmVkIHZp
YSByZXR1cm5pbmcgYSByZWplY3RlZCBwcm9taXNlIGluIHN0YXJ0KSByZWFkZXI6IHJlbGVhc2lu
ZyB0aGUgbG9jayBzaG91bGQgY2F1c2UgY2xvc2VkIHRvIHJlamVjdCBhbmQgY2hhbmdlIGlkZW50
aXR5IAorUEFTUyBSZWFkYWJsZVN0cmVhbSAoZXJyb3JlZCB2aWEgcmV0dXJuaW5nIGEgcmVqZWN0
ZWQgcHJvbWlzZSBpbiBzdGFydCkgcmVhZGVyOiByZWFkKCkgc2hvdWxkIHJlamVjdCB3aXRoIHRo
ZSBlcnJvciAKK1BBU1MgUnVubmluZyB0ZW1wbGF0ZWRSU0Vycm9yZWRSZWFkZXIgd2l0aCBSZWFk
YWJsZVN0cmVhbSByZWFkZXIgKGVycm9yZWQgYmVmb3JlIGdldHRpbmcgcmVhZGVyKSAKK1BBU1Mg
UmVhZGFibGVTdHJlYW0gcmVhZGVyIChlcnJvcmVkIGJlZm9yZSBnZXR0aW5nIHJlYWRlcik6IGNs
b3NlZCBzaG91bGQgcmVqZWN0IHdpdGggdGhlIGVycm9yIAorUEFTUyBSZWFkYWJsZVN0cmVhbSBy
ZWFkZXIgKGVycm9yZWQgYmVmb3JlIGdldHRpbmcgcmVhZGVyKTogcmVsZWFzaW5nIHRoZSBsb2Nr
IHNob3VsZCBjYXVzZSBjbG9zZWQgdG8gcmVqZWN0IGFuZCBjaGFuZ2UgaWRlbnRpdHkgCitQQVNT
IFJlYWRhYmxlU3RyZWFtIHJlYWRlciAoZXJyb3JlZCBiZWZvcmUgZ2V0dGluZyByZWFkZXIpOiBy
ZWFkKCkgc2hvdWxkIHJlamVjdCB3aXRoIHRoZSBlcnJvciAKK1BBU1MgUnVubmluZyB0ZW1wbGF0
ZWRSU0Vycm9yZWRSZWFkZXIgd2l0aCBSZWFkYWJsZVN0cmVhbSByZWFkZXIgKGVycm9yZWQgYWZ0
ZXIgZ2V0dGluZyByZWFkZXIpIAorUEFTUyBSZWFkYWJsZVN0cmVhbSByZWFkZXIgKGVycm9yZWQg
YWZ0ZXIgZ2V0dGluZyByZWFkZXIpOiBjbG9zZWQgc2hvdWxkIHJlamVjdCB3aXRoIHRoZSBlcnJv
ciAKK1BBU1MgUmVhZGFibGVTdHJlYW0gcmVhZGVyIChlcnJvcmVkIGFmdGVyIGdldHRpbmcgcmVh
ZGVyKTogcmVsZWFzaW5nIHRoZSBsb2NrIHNob3VsZCBjYXVzZSBjbG9zZWQgdG8gcmVqZWN0IGFu
ZCBjaGFuZ2UgaWRlbnRpdHkgCitQQVNTIFJlYWRhYmxlU3RyZWFtIHJlYWRlciAoZXJyb3JlZCBh
ZnRlciBnZXR0aW5nIHJlYWRlcik6IHJlYWQoKSBzaG91bGQgcmVqZWN0IHdpdGggdGhlIGVycm9y
IAorUEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTVHdvQ2h1bmtzT3BlblJlYWRlciB3aXRoIFJlYWRh
YmxlU3RyZWFtICh0d28gY2h1bmtzIGVucXVldWVkLCBzdGlsbCBvcGVuKSByZWFkZXIgCitQQVNT
IFJlYWRhYmxlU3RyZWFtICh0d28gY2h1bmtzIGVucXVldWVkLCBzdGlsbCBvcGVuKSByZWFkZXI6
IGNhbGxpbmcgcmVhZCgpIHR3aWNlIHdpdGhvdXQgd2FpdGluZyB3aWxsIGV2ZW50dWFsbHkgZ2l2
ZSBib3RoIGNodW5rcyAoc2VxdWVudGlhbCkgCitQQVNTIFJlYWRhYmxlU3RyZWFtICh0d28gY2h1
bmtzIGVucXVldWVkLCBzdGlsbCBvcGVuKSByZWFkZXI6IGNhbGxpbmcgcmVhZCgpIHR3aWNlIHdp
dGhvdXQgd2FpdGluZyB3aWxsIGV2ZW50dWFsbHkgZ2l2ZSBib3RoIGNodW5rcyAobmVzdGVkKSAK
K1BBU1MgUmVhZGFibGVTdHJlYW0gKHR3byBjaHVua3MgZW5xdWV1ZWQsIHN0aWxsIG9wZW4pIHJl
YWRlcjogcmVhZCgpIHNob3VsZCByZXR1cm4gZGlzdGluY3QgcHJvbWlzZXMgZWFjaCB0aW1lIAor
UEFTUyBSZWFkYWJsZVN0cmVhbSAodHdvIGNodW5rcyBlbnF1ZXVlZCwgc3RpbGwgb3BlbikgcmVh
ZGVyOiBjYW5jZWwoKSBhZnRlciBhIHJlYWQoKSBzaG91bGQgc3RpbGwgZ2l2ZSB0aGF0IHNpbmds
ZSByZWFkIHJlc3VsdCAKK1BBU1MgUnVubmluZyB0ZW1wbGF0ZWRSU1R3b0NodW5rc0Nsb3NlZFJl
YWRlciB3aXRoIFJlYWRhYmxlU3RyZWFtICh0d28gY2h1bmtzIGVucXVldWVkLCB0aGVuIGNsb3Nl
ZCkgcmVhZGVyIAorUEFTUyBSZWFkYWJsZVN0cmVhbSAodHdvIGNodW5rcyBlbnF1ZXVlZCwgdGhl
biBjbG9zZWQpIHJlYWRlcjogdGhpcmQgcmVhZCgpLCB3aXRob3V0IHdhaXRpbmcsIHNob3VsZCBn
aXZlIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9IChzZXF1ZW50aWFsKSAKK1BBU1Mg
UmVhZGFibGVTdHJlYW0gKHR3byBjaHVua3MgZW5xdWV1ZWQsIHRoZW4gY2xvc2VkKSByZWFkZXI6
IHRoaXJkIHJlYWQoKSwgd2l0aG91dCB3YWl0aW5nLCBzaG91bGQgZ2l2ZSB7IHZhbHVlOiB1bmRl
ZmluZWQsIGRvbmU6IHRydWUgfSAobmVzdGVkKSAKK1BBU1MgUmVhZGFibGVTdHJlYW0gKHR3byBj
aHVua3MgZW5xdWV1ZWQsIHRoZW4gY2xvc2VkKSByZWFkZXI6IGRyYWluaW5nIHRoZSBzdHJlYW0g
dmlhIHJlYWQoKSBzaG91bGQgY2F1c2UgdGhlIHJlYWRlciBjbG9zZWQgcHJvbWlzZSB0byBmdWxm
aWxsLCBidXQgbG9ja2VkIHN0YXlzIHRydWUgCitQQVNTIFJlYWRhYmxlU3RyZWFtICh0d28gY2h1
bmtzIGVucXVldWVkLCB0aGVuIGNsb3NlZCkgcmVhZGVyOiByZWxlYXNpbmcgdGhlIGxvY2sgYWZ0
ZXIgdGhlIHN0cmVhbSBpcyBjbG9zZWQgc2hvdWxkIGNhdXNlIGxvY2tlZCB0byBiZWNvbWUgZmFs
c2UgCitQQVNTIFJlYWRhYmxlU3RyZWFtICh0d28gY2h1bmtzIGVucXVldWVkLCB0aGVuIGNsb3Nl
ZCkgcmVhZGVyOiByZWxlYXNpbmcgdGhlIGxvY2sgc2hvdWxkIGNhdXNlIGZ1cnRoZXIgcmVhZCgp
IGNhbGxzIHRvIHJlamVjdCB3aXRoIGEgVHlwZUVycm9yIAorUEFTUyBSZWFkYWJsZVN0cmVhbSAo
dHdvIGNodW5rcyBlbnF1ZXVlZCwgdGhlbiBjbG9zZWQpIHJlYWRlcjogcmVhZGVyJ3MgY2xvc2Vk
IHByb3BlcnR5IGFsd2F5cyByZXR1cm5zIHRoZSBzYW1lIHByb21pc2UgCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFk
YWJsZS1zdHJlYW1zL3RlbXBsYXRlZC5hbnkuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3RlbXBsYXRlZC5h
bnkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4yMzgyOTEzNTI4ZTY5M2IzYTVkNTZjNjYwYTQ1MDYwOTgwYjU0
OGMzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvdGVtcGxhdGVkLmFueS5odG1sCkBA
IC0wLDAgKzEgQEAKKzwhLS0gVGhpcyBmaWxlIGlzIHJlcXVpcmVkIGZvciBXZWJLaXQgdGVzdCBp
bmZyYXN0cnVjdHVyZSB0byBydW4gdGhlIHRlbXBsYXRlZCB0ZXN0IC0tPgpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3RlbXBsYXRlZC5hbnkuanMg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVh
ZGFibGUtc3RyZWFtcy90ZW1wbGF0ZWQuYW55LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkNTI0ZTY5ZmVlMTll
ODJhNTYwN2MxMjM2ODk1NTg2NzQwMTdkMjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFt
cy90ZW1wbGF0ZWQuYW55LmpzCkBAIC0wLDAgKzEsMTQzIEBACisvLyBNRVRBOiBnbG9iYWw9d2lu
ZG93LHdvcmtlcixqc3NoZWxsCisvLyBNRVRBOiBzY3JpcHQ9Li4vcmVzb3VyY2VzL3Rlc3QtdXRp
bHMuanMKKy8vIE1FVEE6IHNjcmlwdD0uLi9yZXNvdXJjZXMvcnMtdGVzdC10ZW1wbGF0ZXMuanMK
Kyd1c2Ugc3RyaWN0JzsKKworLy8gUnVuIHRoZSByZWFkYWJsZSBzdHJlYW0gdGVzdCB0ZW1wbGF0
ZXMgYWdhaW5zdCByZWFkYWJsZSBzdHJlYW1zIGNyZWF0ZWQgZGlyZWN0bHkgdXNpbmcgdGhlIGNv
bnN0cnVjdG9yCisKK2NvbnN0IHRoZUVycm9yID0geyBuYW1lOiAnYm9vIScgfTsKK2NvbnN0IGNo
dW5rcyA9IFsnYScsICdiJ107CisKK3RlbXBsYXRlZFJTRW1wdHkoJ1JlYWRhYmxlU3RyZWFtIChl
bXB0eSknLCAoKSA9PiB7CisgIHJldHVybiBuZXcgUmVhZGFibGVTdHJlYW0oKTsKK30pOworCit0
ZW1wbGF0ZWRSU0VtcHR5UmVhZGVyKCdSZWFkYWJsZVN0cmVhbSAoZW1wdHkpIHJlYWRlcicsICgp
ID0+IHsKKyAgcmV0dXJuIHN0cmVhbUFuZERlZmF1bHRSZWFkZXIobmV3IFJlYWRhYmxlU3RyZWFt
KCkpOworfSk7CisKK3RlbXBsYXRlZFJTQ2xvc2VkKCdSZWFkYWJsZVN0cmVhbSAoY2xvc2VkIHZp
YSBjYWxsIGluIHN0YXJ0KScsICgpID0+IHsKKyAgcmV0dXJuIG5ldyBSZWFkYWJsZVN0cmVhbSh7
CisgICAgc3RhcnQoYykgeworICAgICAgYy5jbG9zZSgpOworICAgIH0KKyAgfSk7Cit9KTsKKwor
dGVtcGxhdGVkUlNDbG9zZWRSZWFkZXIoJ1JlYWRhYmxlU3RyZWFtIHJlYWRlciAoY2xvc2VkIGJl
Zm9yZSBnZXR0aW5nIHJlYWRlciknLCAoKSA9PiB7CisgIGxldCBjb250cm9sbGVyOworICBjb25z
dCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGNv
bnRyb2xsZXIgPSBjOworICAgIH0KKyAgfSk7CisgIGNvbnRyb2xsZXIuY2xvc2UoKTsKKyAgY29u
c3QgcmVzdWx0ID0gc3RyZWFtQW5kRGVmYXVsdFJlYWRlcihzdHJlYW0pOworICByZXR1cm4gcmVz
dWx0OworfSk7CisKK3RlbXBsYXRlZFJTQ2xvc2VkUmVhZGVyKCdSZWFkYWJsZVN0cmVhbSByZWFk
ZXIgKGNsb3NlZCBhZnRlciBnZXR0aW5nIHJlYWRlciknLCAoKSA9PiB7CisgIGxldCBjb250cm9s
bGVyOworICBjb25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMp
IHsKKyAgICAgIGNvbnRyb2xsZXIgPSBjOworICAgIH0KKyAgfSk7CisgIGNvbnN0IHJlc3VsdCA9
IHN0cmVhbUFuZERlZmF1bHRSZWFkZXIoc3RyZWFtKTsKKyAgY29udHJvbGxlci5jbG9zZSgpOwor
ICByZXR1cm4gcmVzdWx0OworfSk7CisKK3RlbXBsYXRlZFJTQ2xvc2VkKCdSZWFkYWJsZVN0cmVh
bSAoY2xvc2VkIHZpYSBjYW5jZWwpJywgKCkgPT4geworICBjb25zdCBzdHJlYW0gPSBuZXcgUmVh
ZGFibGVTdHJlYW0oKTsKKyAgc3RyZWFtLmNhbmNlbCgpOworICByZXR1cm4gc3RyZWFtOworfSk7
CisKK3RlbXBsYXRlZFJTQ2xvc2VkUmVhZGVyKCdSZWFkYWJsZVN0cmVhbSByZWFkZXIgKGNsb3Nl
ZCB2aWEgY2FuY2VsIGFmdGVyIGdldHRpbmcgcmVhZGVyKScsICgpID0+IHsKKyAgY29uc3Qgc3Ry
ZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKCk7CisgIGNvbnN0IHJlc3VsdCA9IHN0cmVhbUFuZERl
ZmF1bHRSZWFkZXIoc3RyZWFtKTsKKyAgcmVzdWx0LnJlYWRlci5jYW5jZWwoKTsKKyAgcmV0dXJu
IHJlc3VsdDsKK30pOworCit0ZW1wbGF0ZWRSU0Vycm9yZWQoJ1JlYWRhYmxlU3RyZWFtIChlcnJv
cmVkIHZpYSBjYWxsIGluIHN0YXJ0KScsICgpID0+IHsKKyAgcmV0dXJuIG5ldyBSZWFkYWJsZVN0
cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgYy5lcnJvcih0aGVFcnJvcik7CisgICAgfQor
ICB9KTsKK30sIHRoZUVycm9yKTsKKwordGVtcGxhdGVkUlNFcnJvcmVkU3luY09ubHkoJ1JlYWRh
YmxlU3RyZWFtIChlcnJvcmVkIHZpYSBjYWxsIGluIHN0YXJ0KScsICgpID0+IHsKKyAgcmV0dXJu
IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgYy5lcnJvcih0aGVF
cnJvcik7CisgICAgfQorICB9KTsKK30sIHRoZUVycm9yKTsKKwordGVtcGxhdGVkUlNFcnJvcmVk
KCdSZWFkYWJsZVN0cmVhbSAoZXJyb3JlZCB2aWEgcmV0dXJuaW5nIGEgcmVqZWN0ZWQgcHJvbWlz
ZSBpbiBzdGFydCknLCAoKSA9PiB7CisgIHJldHVybiBuZXcgUmVhZGFibGVTdHJlYW0oeworICAg
IHN0YXJ0KCkgeworICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KHRoZUVycm9yKTsKKyAgICB9
CisgIH0pOworfSwgdGhlRXJyb3IpOworCit0ZW1wbGF0ZWRSU0Vycm9yZWRSZWFkZXIoJ1JlYWRh
YmxlU3RyZWFtIChlcnJvcmVkIHZpYSByZXR1cm5pbmcgYSByZWplY3RlZCBwcm9taXNlIGluIHN0
YXJ0KSByZWFkZXInLCAoKSA9PiB7CisgIHJldHVybiBzdHJlYW1BbmREZWZhdWx0UmVhZGVyKG5l
dyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoKSB7CisgICAgICByZXR1cm4gUHJvbWlzZS5y
ZWplY3QodGhlRXJyb3IpOworICAgIH0KKyAgfSkpOworfSwgdGhlRXJyb3IpOworCit0ZW1wbGF0
ZWRSU0Vycm9yZWRSZWFkZXIoJ1JlYWRhYmxlU3RyZWFtIHJlYWRlciAoZXJyb3JlZCBiZWZvcmUg
Z2V0dGluZyByZWFkZXIpJywgKCkgPT4geworICBsZXQgY29udHJvbGxlcjsKKyAgY29uc3Qgc3Ry
ZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjb250cm9s
bGVyID0gYzsKKyAgICB9CisgIH0pOworICBjb250cm9sbGVyLmVycm9yKHRoZUVycm9yKTsKKyAg
cmV0dXJuIHN0cmVhbUFuZERlZmF1bHRSZWFkZXIoc3RyZWFtKTsKK30sIHRoZUVycm9yKTsKKwor
dGVtcGxhdGVkUlNFcnJvcmVkUmVhZGVyKCdSZWFkYWJsZVN0cmVhbSByZWFkZXIgKGVycm9yZWQg
YWZ0ZXIgZ2V0dGluZyByZWFkZXIpJywgKCkgPT4geworICBsZXQgY29udHJvbGxlcjsKKyAgY29u
c3QgcmVzdWx0ID0gc3RyZWFtQW5kRGVmYXVsdFJlYWRlcihuZXcgUmVhZGFibGVTdHJlYW0oewor
ICAgIHN0YXJ0KGMpIHsKKyAgICAgIGNvbnRyb2xsZXIgPSBjOworICAgIH0KKyAgfSkpOworICBj
b250cm9sbGVyLmVycm9yKHRoZUVycm9yKTsKKyAgcmV0dXJuIHJlc3VsdDsKK30sIHRoZUVycm9y
KTsKKwordGVtcGxhdGVkUlNUd29DaHVua3NPcGVuUmVhZGVyKCdSZWFkYWJsZVN0cmVhbSAodHdv
IGNodW5rcyBlbnF1ZXVlZCwgc3RpbGwgb3BlbikgcmVhZGVyJywgKCkgPT4geworICByZXR1cm4g
c3RyZWFtQW5kRGVmYXVsdFJlYWRlcihuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMp
IHsKKyAgICAgIGMuZW5xdWV1ZShjaHVua3NbMF0pOworICAgICAgYy5lbnF1ZXVlKGNodW5rc1sx
XSk7CisgICAgfQorICB9KSk7Cit9LCBjaHVua3MpOworCit0ZW1wbGF0ZWRSU1R3b0NodW5rc0Ns
b3NlZFJlYWRlcignUmVhZGFibGVTdHJlYW0gKHR3byBjaHVua3MgZW5xdWV1ZWQsIHRoZW4gY2xv
c2VkKSByZWFkZXInLCAoKSA9PiB7CisgIGxldCBkb0Nsb3NlOworICBjb25zdCBzdHJlYW0gPSBu
ZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGMuZW5xdWV1ZShjaHVu
a3NbMF0pOworICAgICAgYy5lbnF1ZXVlKGNodW5rc1sxXSk7CisgICAgICBkb0Nsb3NlID0gYy5j
bG9zZS5iaW5kKGMpOworICAgIH0KKyAgfSk7CisgIGNvbnN0IHJlc3VsdCA9IHN0cmVhbUFuZERl
ZmF1bHRSZWFkZXIoc3RyZWFtKTsKKyAgZG9DbG9zZSgpOworICByZXR1cm4gcmVzdWx0OworfSwg
Y2h1bmtzKTsKKworZnVuY3Rpb24gc3RyZWFtQW5kRGVmYXVsdFJlYWRlcihzdHJlYW0pIHsKKyAg
cmV0dXJuIHsgc3RyZWFtLCByZWFkZXI6IHN0cmVhbS5nZXRSZWFkZXIoKSB9OworfQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
L3JlYWRhYmxlLXN0cmVhbXMvdGVtcGxhdGVkLmFueS53b3JrZXItZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxl
LXN0cmVhbXMvdGVtcGxhdGVkLmFueS53b3JrZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk0
NGRmN2U5ODNhZDUzNTJkMTU5NzdiYjUwMmRlMjVkMzI0YWRhM2EKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVh
ZGFibGUtc3RyZWFtcy90ZW1wbGF0ZWQuYW55Lndvcmtlci1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSw5MCBAQAorCitQQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNFbXB0eSB3aXRoIFJlYWRhYmxlU3Ry
ZWFtIChlbXB0eSkgCitQQVNTIFJlYWRhYmxlU3RyZWFtIChlbXB0eSk6IGluc3RhbmNlcyBoYXZl
IHRoZSBjb3JyZWN0IG1ldGhvZHMgYW5kIHByb3BlcnRpZXMgCitGQUlMIFJlYWRhYmxlU3RyZWFt
IChlbXB0eSk6IGNhbGxpbmcgZ2V0UmVhZGVyIHdpdGggaW52YWxpZCBhcmd1bWVudHMgc2hvdWxk
IHRocm93IGFwcHJvcHJpYXRlIGVycm9ycyBhc3NlcnRfdGhyb3dzX2pzOiBlbXB0eSBzdHJpbmcg
bW9kZSBzaG91bGQgdGhyb3cgZnVuY3Rpb24gIigpID0+IHJzLmdldFJlYWRlcih7IG1vZGU6ICcn
IH0pIiB0aHJldyBvYmplY3QgIlJhbmdlRXJyb3I6IEludmFsaWQgbW9kZSBpcyBzcGVjaWZpZWQi
ICgiUmFuZ2VFcnJvciIpIGV4cGVjdGVkIGluc3RhbmNlIG9mIGZ1bmN0aW9uICJmdW5jdGlvbiBU
eXBlRXJyb3IoKSB7CisgICAgW25hdGl2ZSBjb2RlXQorfSIgKCJUeXBlRXJyb3IiKQorUEFTUyBS
dW5uaW5nIHRlbXBsYXRlZFJTRW1wdHlSZWFkZXIgd2l0aCBSZWFkYWJsZVN0cmVhbSAoZW1wdHkp
IHJlYWRlciAKK1BBU1MgUmVhZGFibGVTdHJlYW0gKGVtcHR5KSByZWFkZXI6IGluc3RhbmNlcyBo
YXZlIHRoZSBjb3JyZWN0IG1ldGhvZHMgYW5kIHByb3BlcnRpZXMgCitQQVNTIFJlYWRhYmxlU3Ry
ZWFtIChlbXB0eSkgcmVhZGVyOiBsb2NrZWQgc2hvdWxkIGJlIHRydWUgCitQQVNTIFJlYWRhYmxl
U3RyZWFtIChlbXB0eSkgcmVhZGVyOiByZWFkKCkgc2hvdWxkIG5ldmVyIHNldHRsZSAKK1BBU1Mg
UmVhZGFibGVTdHJlYW0gKGVtcHR5KSByZWFkZXI6IHR3byByZWFkKClzIHNob3VsZCBib3RoIG5l
dmVyIHNldHRsZSAKK1BBU1MgUmVhZGFibGVTdHJlYW0gKGVtcHR5KSByZWFkZXI6IHJlYWQoKSBz
aG91bGQgcmV0dXJuIGRpc3RpbmN0IHByb21pc2VzIGVhY2ggdGltZSAKK1BBU1MgUmVhZGFibGVT
dHJlYW0gKGVtcHR5KSByZWFkZXI6IGdldFJlYWRlcigpIGFnYWluIG9uIHRoZSBzdHJlYW0gc2hv
dWxkIGZhaWwgCitQQVNTIFJlYWRhYmxlU3RyZWFtIChlbXB0eSkgcmVhZGVyOiByZWxlYXNpbmcg
dGhlIGxvY2sgd2l0aCBwZW5kaW5nIHJlYWQgcmVxdWVzdHMgc2hvdWxkIHRocm93IGJ1dCB0aGUg
cmVhZCByZXF1ZXN0cyBzaG91bGQgc3RheSBwZW5kaW5nIAorUEFTUyBSZWFkYWJsZVN0cmVhbSAo
ZW1wdHkpIHJlYWRlcjogcmVsZWFzaW5nIHRoZSBsb2NrIHNob3VsZCBjYXVzZSBmdXJ0aGVyIHJl
YWQoKSBjYWxscyB0byByZWplY3Qgd2l0aCBhIFR5cGVFcnJvciAKK1BBU1MgUmVhZGFibGVTdHJl
YW0gKGVtcHR5KSByZWFkZXI6IHJlbGVhc2luZyB0aGUgbG9jayBzaG91bGQgY2F1c2UgY2xvc2Vk
IGNhbGxzIHRvIHJlamVjdCB3aXRoIGEgVHlwZUVycm9yIAorUEFTUyBSZWFkYWJsZVN0cmVhbSAo
ZW1wdHkpIHJlYWRlcjogcmVsZWFzaW5nIHRoZSBsb2NrIHNob3VsZCBjYXVzZSBsb2NrZWQgdG8g
YmVjb21lIGZhbHNlIAorUEFTUyBSZWFkYWJsZVN0cmVhbSAoZW1wdHkpIHJlYWRlcjogY2FuY2Vs
aW5nIHZpYSB0aGUgcmVhZGVyIHNob3VsZCBjYXVzZSB0aGUgcmVhZGVyIHRvIGFjdCBjbG9zZWQg
CitQQVNTIFJlYWRhYmxlU3RyZWFtIChlbXB0eSkgcmVhZGVyOiBjYW5jZWxpbmcgdmlhIHRoZSBz
dHJlYW0gc2hvdWxkIGZhaWwgCitQQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNDbG9zZWQgd2l0aCBS
ZWFkYWJsZVN0cmVhbSAoY2xvc2VkIHZpYSBjYWxsIGluIHN0YXJ0KSAKK1BBU1MgUmVhZGFibGVT
dHJlYW0gKGNsb3NlZCB2aWEgY2FsbCBpbiBzdGFydCk6IGNhbmNlbCgpIHNob3VsZCByZXR1cm4g
YSBkaXN0aW5jdCBmdWxmaWxsZWQgcHJvbWlzZSBlYWNoIHRpbWUgCitQQVNTIFJlYWRhYmxlU3Ry
ZWFtIChjbG9zZWQgdmlhIGNhbGwgaW4gc3RhcnQpOiBsb2NrZWQgc2hvdWxkIGJlIGZhbHNlIAor
UEFTUyBSZWFkYWJsZVN0cmVhbSAoY2xvc2VkIHZpYSBjYWxsIGluIHN0YXJ0KTogZ2V0UmVhZGVy
KCkgc2hvdWxkIGJlIE9LIAorUEFTUyBSZWFkYWJsZVN0cmVhbSAoY2xvc2VkIHZpYSBjYWxsIGlu
IHN0YXJ0KTogc2hvdWxkIGJlIGFibGUgdG8gYWNxdWlyZSBtdWx0aXBsZSByZWFkZXJzIGlmIHRo
ZXkgYXJlIHJlbGVhc2VkIGluIHN1Y2Nlc3Npb24gCitQQVNTIFJlYWRhYmxlU3RyZWFtIChjbG9z
ZWQgdmlhIGNhbGwgaW4gc3RhcnQpOiBzaG91bGQgbm90IGJlIGFibGUgdG8gYWNxdWlyZSBhIHNl
Y29uZCByZWFkZXIgaWYgd2UgZG9uJ3QgcmVsZWFzZSB0aGUgZmlyc3Qgb25lIAorUEFTUyBSdW5u
aW5nIHRlbXBsYXRlZFJTQ2xvc2VkUmVhZGVyIHdpdGggUmVhZGFibGVTdHJlYW0gcmVhZGVyIChj
bG9zZWQgYmVmb3JlIGdldHRpbmcgcmVhZGVyKSAKK1BBU1MgUmVhZGFibGVTdHJlYW0gcmVhZGVy
IChjbG9zZWQgYmVmb3JlIGdldHRpbmcgcmVhZGVyKTogcmVhZCgpIHNob3VsZCBmdWxmaWxsIHdp
dGggeyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0gCitQQVNTIFJlYWRhYmxlU3RyZWFt
IHJlYWRlciAoY2xvc2VkIGJlZm9yZSBnZXR0aW5nIHJlYWRlcik6IHJlYWQoKSBtdWx0aXBsZSB0
aW1lcyBzaG91bGQgZnVsZmlsbCB3aXRoIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9
IAorUEFTUyBSZWFkYWJsZVN0cmVhbSByZWFkZXIgKGNsb3NlZCBiZWZvcmUgZ2V0dGluZyByZWFk
ZXIpOiByZWFkKCkgc2hvdWxkIHdvcmsgd2hlbiB1c2VkIHdpdGhpbiBhbm90aGVyIHJlYWQoKSBm
dWxmaWxsIGNhbGxiYWNrIAorUEFTUyBSZWFkYWJsZVN0cmVhbSByZWFkZXIgKGNsb3NlZCBiZWZv
cmUgZ2V0dGluZyByZWFkZXIpOiBjbG9zZWQgc2hvdWxkIGZ1bGZpbGwgd2l0aCB1bmRlZmluZWQg
CitQQVNTIFJlYWRhYmxlU3RyZWFtIHJlYWRlciAoY2xvc2VkIGJlZm9yZSBnZXR0aW5nIHJlYWRl
cik6IHJlbGVhc2luZyB0aGUgbG9jayBzaG91bGQgY2F1c2UgY2xvc2VkIHRvIHJlamVjdCBhbmQg
Y2hhbmdlIGlkZW50aXR5IAorUEFTUyBSZWFkYWJsZVN0cmVhbSByZWFkZXIgKGNsb3NlZCBiZWZv
cmUgZ2V0dGluZyByZWFkZXIpOiBjYW5jZWwoKSBzaG91bGQgcmV0dXJuIGEgZGlzdGluY3QgZnVs
ZmlsbGVkIHByb21pc2UgZWFjaCB0aW1lIAorUEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTQ2xvc2Vk
UmVhZGVyIHdpdGggUmVhZGFibGVTdHJlYW0gcmVhZGVyIChjbG9zZWQgYWZ0ZXIgZ2V0dGluZyBy
ZWFkZXIpIAorUEFTUyBSZWFkYWJsZVN0cmVhbSByZWFkZXIgKGNsb3NlZCBhZnRlciBnZXR0aW5n
IHJlYWRlcik6IHJlYWQoKSBzaG91bGQgZnVsZmlsbCB3aXRoIHsgdmFsdWU6IHVuZGVmaW5lZCwg
ZG9uZTogdHJ1ZSB9IAorUEFTUyBSZWFkYWJsZVN0cmVhbSByZWFkZXIgKGNsb3NlZCBhZnRlciBn
ZXR0aW5nIHJlYWRlcik6IHJlYWQoKSBtdWx0aXBsZSB0aW1lcyBzaG91bGQgZnVsZmlsbCB3aXRo
IHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9IAorUEFTUyBSZWFkYWJsZVN0cmVhbSBy
ZWFkZXIgKGNsb3NlZCBhZnRlciBnZXR0aW5nIHJlYWRlcik6IHJlYWQoKSBzaG91bGQgd29yayB3
aGVuIHVzZWQgd2l0aGluIGFub3RoZXIgcmVhZCgpIGZ1bGZpbGwgY2FsbGJhY2sgCitQQVNTIFJl
YWRhYmxlU3RyZWFtIHJlYWRlciAoY2xvc2VkIGFmdGVyIGdldHRpbmcgcmVhZGVyKTogY2xvc2Vk
IHNob3VsZCBmdWxmaWxsIHdpdGggdW5kZWZpbmVkIAorUEFTUyBSZWFkYWJsZVN0cmVhbSByZWFk
ZXIgKGNsb3NlZCBhZnRlciBnZXR0aW5nIHJlYWRlcik6IHJlbGVhc2luZyB0aGUgbG9jayBzaG91
bGQgY2F1c2UgY2xvc2VkIHRvIHJlamVjdCBhbmQgY2hhbmdlIGlkZW50aXR5IAorUEFTUyBSZWFk
YWJsZVN0cmVhbSByZWFkZXIgKGNsb3NlZCBhZnRlciBnZXR0aW5nIHJlYWRlcik6IGNhbmNlbCgp
IHNob3VsZCByZXR1cm4gYSBkaXN0aW5jdCBmdWxmaWxsZWQgcHJvbWlzZSBlYWNoIHRpbWUgCitQ
QVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNDbG9zZWQgd2l0aCBSZWFkYWJsZVN0cmVhbSAoY2xvc2Vk
IHZpYSBjYW5jZWwpIAorUEFTUyBSZWFkYWJsZVN0cmVhbSAoY2xvc2VkIHZpYSBjYW5jZWwpOiBj
YW5jZWwoKSBzaG91bGQgcmV0dXJuIGEgZGlzdGluY3QgZnVsZmlsbGVkIHByb21pc2UgZWFjaCB0
aW1lIAorUEFTUyBSZWFkYWJsZVN0cmVhbSAoY2xvc2VkIHZpYSBjYW5jZWwpOiBsb2NrZWQgc2hv
dWxkIGJlIGZhbHNlIAorUEFTUyBSZWFkYWJsZVN0cmVhbSAoY2xvc2VkIHZpYSBjYW5jZWwpOiBn
ZXRSZWFkZXIoKSBzaG91bGQgYmUgT0sgCitQQVNTIFJlYWRhYmxlU3RyZWFtIChjbG9zZWQgdmlh
IGNhbmNlbCk6IHNob3VsZCBiZSBhYmxlIHRvIGFjcXVpcmUgbXVsdGlwbGUgcmVhZGVycyBpZiB0
aGV5IGFyZSByZWxlYXNlZCBpbiBzdWNjZXNzaW9uIAorUEFTUyBSZWFkYWJsZVN0cmVhbSAoY2xv
c2VkIHZpYSBjYW5jZWwpOiBzaG91bGQgbm90IGJlIGFibGUgdG8gYWNxdWlyZSBhIHNlY29uZCBy
ZWFkZXIgaWYgd2UgZG9uJ3QgcmVsZWFzZSB0aGUgZmlyc3Qgb25lIAorUEFTUyBSdW5uaW5nIHRl
bXBsYXRlZFJTQ2xvc2VkUmVhZGVyIHdpdGggUmVhZGFibGVTdHJlYW0gcmVhZGVyIChjbG9zZWQg
dmlhIGNhbmNlbCBhZnRlciBnZXR0aW5nIHJlYWRlcikgCitQQVNTIFJlYWRhYmxlU3RyZWFtIHJl
YWRlciAoY2xvc2VkIHZpYSBjYW5jZWwgYWZ0ZXIgZ2V0dGluZyByZWFkZXIpOiByZWFkKCkgc2hv
dWxkIGZ1bGZpbGwgd2l0aCB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSAKK1BBU1Mg
UmVhZGFibGVTdHJlYW0gcmVhZGVyIChjbG9zZWQgdmlhIGNhbmNlbCBhZnRlciBnZXR0aW5nIHJl
YWRlcik6IHJlYWQoKSBtdWx0aXBsZSB0aW1lcyBzaG91bGQgZnVsZmlsbCB3aXRoIHsgdmFsdWU6
IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9IAorUEFTUyBSZWFkYWJsZVN0cmVhbSByZWFkZXIgKGNs
b3NlZCB2aWEgY2FuY2VsIGFmdGVyIGdldHRpbmcgcmVhZGVyKTogcmVhZCgpIHNob3VsZCB3b3Jr
IHdoZW4gdXNlZCB3aXRoaW4gYW5vdGhlciByZWFkKCkgZnVsZmlsbCBjYWxsYmFjayAKK1BBU1Mg
UmVhZGFibGVTdHJlYW0gcmVhZGVyIChjbG9zZWQgdmlhIGNhbmNlbCBhZnRlciBnZXR0aW5nIHJl
YWRlcik6IGNsb3NlZCBzaG91bGQgZnVsZmlsbCB3aXRoIHVuZGVmaW5lZCAKK1BBU1MgUmVhZGFi
bGVTdHJlYW0gcmVhZGVyIChjbG9zZWQgdmlhIGNhbmNlbCBhZnRlciBnZXR0aW5nIHJlYWRlcik6
IHJlbGVhc2luZyB0aGUgbG9jayBzaG91bGQgY2F1c2UgY2xvc2VkIHRvIHJlamVjdCBhbmQgY2hh
bmdlIGlkZW50aXR5IAorUEFTUyBSZWFkYWJsZVN0cmVhbSByZWFkZXIgKGNsb3NlZCB2aWEgY2Fu
Y2VsIGFmdGVyIGdldHRpbmcgcmVhZGVyKTogY2FuY2VsKCkgc2hvdWxkIHJldHVybiBhIGRpc3Rp
bmN0IGZ1bGZpbGxlZCBwcm9taXNlIGVhY2ggdGltZSAKK1BBU1MgUnVubmluZyB0ZW1wbGF0ZWRS
U0Vycm9yZWQgd2l0aCBSZWFkYWJsZVN0cmVhbSAoZXJyb3JlZCB2aWEgY2FsbCBpbiBzdGFydCkg
CitQQVNTIFJlYWRhYmxlU3RyZWFtIChlcnJvcmVkIHZpYSBjYWxsIGluIHN0YXJ0KTogZ2V0UmVh
ZGVyKCkgc2hvdWxkIHJldHVybiBhIHJlYWRlciB0aGF0IGFjdHMgZXJyb3JlZCAKK1BBU1MgUmVh
ZGFibGVTdHJlYW0gKGVycm9yZWQgdmlhIGNhbGwgaW4gc3RhcnQpOiByZWFkKCkgdHdpY2Ugc2hv
dWxkIGdpdmUgdGhlIGVycm9yIGVhY2ggdGltZSAKK1BBU1MgUmVhZGFibGVTdHJlYW0gKGVycm9y
ZWQgdmlhIGNhbGwgaW4gc3RhcnQpOiBsb2NrZWQgc2hvdWxkIGJlIGZhbHNlIAorUEFTUyBSdW5u
aW5nIHRlbXBsYXRlZFJTRXJyb3JlZFN5bmNPbmx5IHdpdGggUmVhZGFibGVTdHJlYW0gKGVycm9y
ZWQgdmlhIGNhbGwgaW4gc3RhcnQpIAorUEFTUyBSZWFkYWJsZVN0cmVhbSAoZXJyb3JlZCB2aWEg
Y2FsbCBpbiBzdGFydCk6IHNob3VsZCBiZSBhYmxlIHRvIG9idGFpbiBhIHNlY29uZCByZWFkZXIs
IHdpdGggdGhlIGNvcnJlY3QgY2xvc2VkIHByb21pc2UgCitQQVNTIFJlYWRhYmxlU3RyZWFtIChl
cnJvcmVkIHZpYSBjYWxsIGluIHN0YXJ0KTogc2hvdWxkIG5vdCBiZSBhYmxlIHRvIG9idGFpbiBh
ZGRpdGlvbmFsIHJlYWRlcnMgaWYgd2UgZG9uJ3QgcmVsZWFzZSB0aGUgZmlyc3QgbG9jayAKK1BB
U1MgUmVhZGFibGVTdHJlYW0gKGVycm9yZWQgdmlhIGNhbGwgaW4gc3RhcnQpOiBjYW5jZWwoKSBz
aG91bGQgcmV0dXJuIGEgZGlzdGluY3QgcmVqZWN0ZWQgcHJvbWlzZSBlYWNoIHRpbWUgCitQQVNT
IFJlYWRhYmxlU3RyZWFtIChlcnJvcmVkIHZpYSBjYWxsIGluIHN0YXJ0KTogcmVhZGVyIGNhbmNl
bCgpIHNob3VsZCByZXR1cm4gYSBkaXN0aW5jdCByZWplY3RlZCBwcm9taXNlIGVhY2ggdGltZSAK
K1BBU1MgUnVubmluZyB0ZW1wbGF0ZWRSU0Vycm9yZWQgd2l0aCBSZWFkYWJsZVN0cmVhbSAoZXJy
b3JlZCB2aWEgcmV0dXJuaW5nIGEgcmVqZWN0ZWQgcHJvbWlzZSBpbiBzdGFydCkgCitQQVNTIFJl
YWRhYmxlU3RyZWFtIChlcnJvcmVkIHZpYSByZXR1cm5pbmcgYSByZWplY3RlZCBwcm9taXNlIGlu
IHN0YXJ0KTogZ2V0UmVhZGVyKCkgc2hvdWxkIHJldHVybiBhIHJlYWRlciB0aGF0IGFjdHMgZXJy
b3JlZCAKK1BBU1MgUmVhZGFibGVTdHJlYW0gKGVycm9yZWQgdmlhIHJldHVybmluZyBhIHJlamVj
dGVkIHByb21pc2UgaW4gc3RhcnQpOiByZWFkKCkgdHdpY2Ugc2hvdWxkIGdpdmUgdGhlIGVycm9y
IGVhY2ggdGltZSAKK1BBU1MgUmVhZGFibGVTdHJlYW0gKGVycm9yZWQgdmlhIHJldHVybmluZyBh
IHJlamVjdGVkIHByb21pc2UgaW4gc3RhcnQpOiBsb2NrZWQgc2hvdWxkIGJlIGZhbHNlIAorUEFT
UyBSdW5uaW5nIHRlbXBsYXRlZFJTRXJyb3JlZFJlYWRlciB3aXRoIFJlYWRhYmxlU3RyZWFtIChl
cnJvcmVkIHZpYSByZXR1cm5pbmcgYSByZWplY3RlZCBwcm9taXNlIGluIHN0YXJ0KSByZWFkZXIg
CitQQVNTIFJlYWRhYmxlU3RyZWFtIChlcnJvcmVkIHZpYSByZXR1cm5pbmcgYSByZWplY3RlZCBw
cm9taXNlIGluIHN0YXJ0KSByZWFkZXI6IGNsb3NlZCBzaG91bGQgcmVqZWN0IHdpdGggdGhlIGVy
cm9yIAorUEFTUyBSZWFkYWJsZVN0cmVhbSAoZXJyb3JlZCB2aWEgcmV0dXJuaW5nIGEgcmVqZWN0
ZWQgcHJvbWlzZSBpbiBzdGFydCkgcmVhZGVyOiByZWxlYXNpbmcgdGhlIGxvY2sgc2hvdWxkIGNh
dXNlIGNsb3NlZCB0byByZWplY3QgYW5kIGNoYW5nZSBpZGVudGl0eSAKK1BBU1MgUmVhZGFibGVT
dHJlYW0gKGVycm9yZWQgdmlhIHJldHVybmluZyBhIHJlamVjdGVkIHByb21pc2UgaW4gc3RhcnQp
IHJlYWRlcjogcmVhZCgpIHNob3VsZCByZWplY3Qgd2l0aCB0aGUgZXJyb3IgCitQQVNTIFJ1bm5p
bmcgdGVtcGxhdGVkUlNFcnJvcmVkUmVhZGVyIHdpdGggUmVhZGFibGVTdHJlYW0gcmVhZGVyIChl
cnJvcmVkIGJlZm9yZSBnZXR0aW5nIHJlYWRlcikgCitQQVNTIFJlYWRhYmxlU3RyZWFtIHJlYWRl
ciAoZXJyb3JlZCBiZWZvcmUgZ2V0dGluZyByZWFkZXIpOiBjbG9zZWQgc2hvdWxkIHJlamVjdCB3
aXRoIHRoZSBlcnJvciAKK1BBU1MgUmVhZGFibGVTdHJlYW0gcmVhZGVyIChlcnJvcmVkIGJlZm9y
ZSBnZXR0aW5nIHJlYWRlcik6IHJlbGVhc2luZyB0aGUgbG9jayBzaG91bGQgY2F1c2UgY2xvc2Vk
IHRvIHJlamVjdCBhbmQgY2hhbmdlIGlkZW50aXR5IAorUEFTUyBSZWFkYWJsZVN0cmVhbSByZWFk
ZXIgKGVycm9yZWQgYmVmb3JlIGdldHRpbmcgcmVhZGVyKTogcmVhZCgpIHNob3VsZCByZWplY3Qg
d2l0aCB0aGUgZXJyb3IgCitQQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNFcnJvcmVkUmVhZGVyIHdp
dGggUmVhZGFibGVTdHJlYW0gcmVhZGVyIChlcnJvcmVkIGFmdGVyIGdldHRpbmcgcmVhZGVyKSAK
K1BBU1MgUmVhZGFibGVTdHJlYW0gcmVhZGVyIChlcnJvcmVkIGFmdGVyIGdldHRpbmcgcmVhZGVy
KTogY2xvc2VkIHNob3VsZCByZWplY3Qgd2l0aCB0aGUgZXJyb3IgCitQQVNTIFJlYWRhYmxlU3Ry
ZWFtIHJlYWRlciAoZXJyb3JlZCBhZnRlciBnZXR0aW5nIHJlYWRlcik6IHJlbGVhc2luZyB0aGUg
bG9jayBzaG91bGQgY2F1c2UgY2xvc2VkIHRvIHJlamVjdCBhbmQgY2hhbmdlIGlkZW50aXR5IAor
UEFTUyBSZWFkYWJsZVN0cmVhbSByZWFkZXIgKGVycm9yZWQgYWZ0ZXIgZ2V0dGluZyByZWFkZXIp
OiByZWFkKCkgc2hvdWxkIHJlamVjdCB3aXRoIHRoZSBlcnJvciAKK1BBU1MgUnVubmluZyB0ZW1w
bGF0ZWRSU1R3b0NodW5rc09wZW5SZWFkZXIgd2l0aCBSZWFkYWJsZVN0cmVhbSAodHdvIGNodW5r
cyBlbnF1ZXVlZCwgc3RpbGwgb3BlbikgcmVhZGVyIAorUEFTUyBSZWFkYWJsZVN0cmVhbSAodHdv
IGNodW5rcyBlbnF1ZXVlZCwgc3RpbGwgb3BlbikgcmVhZGVyOiBjYWxsaW5nIHJlYWQoKSB0d2lj
ZSB3aXRob3V0IHdhaXRpbmcgd2lsbCBldmVudHVhbGx5IGdpdmUgYm90aCBjaHVua3MgKHNlcXVl
bnRpYWwpIAorUEFTUyBSZWFkYWJsZVN0cmVhbSAodHdvIGNodW5rcyBlbnF1ZXVlZCwgc3RpbGwg
b3BlbikgcmVhZGVyOiBjYWxsaW5nIHJlYWQoKSB0d2ljZSB3aXRob3V0IHdhaXRpbmcgd2lsbCBl
dmVudHVhbGx5IGdpdmUgYm90aCBjaHVua3MgKG5lc3RlZCkgCitQQVNTIFJlYWRhYmxlU3RyZWFt
ICh0d28gY2h1bmtzIGVucXVldWVkLCBzdGlsbCBvcGVuKSByZWFkZXI6IHJlYWQoKSBzaG91bGQg
cmV0dXJuIGRpc3RpbmN0IHByb21pc2VzIGVhY2ggdGltZSAKK1BBU1MgUmVhZGFibGVTdHJlYW0g
KHR3byBjaHVua3MgZW5xdWV1ZWQsIHN0aWxsIG9wZW4pIHJlYWRlcjogY2FuY2VsKCkgYWZ0ZXIg
YSByZWFkKCkgc2hvdWxkIHN0aWxsIGdpdmUgdGhhdCBzaW5nbGUgcmVhZCByZXN1bHQgCitQQVNT
IFJ1bm5pbmcgdGVtcGxhdGVkUlNUd29DaHVua3NDbG9zZWRSZWFkZXIgd2l0aCBSZWFkYWJsZVN0
cmVhbSAodHdvIGNodW5rcyBlbnF1ZXVlZCwgdGhlbiBjbG9zZWQpIHJlYWRlciAKK1BBU1MgUmVh
ZGFibGVTdHJlYW0gKHR3byBjaHVua3MgZW5xdWV1ZWQsIHRoZW4gY2xvc2VkKSByZWFkZXI6IHRo
aXJkIHJlYWQoKSwgd2l0aG91dCB3YWl0aW5nLCBzaG91bGQgZ2l2ZSB7IHZhbHVlOiB1bmRlZmlu
ZWQsIGRvbmU6IHRydWUgfSAoc2VxdWVudGlhbCkgCitQQVNTIFJlYWRhYmxlU3RyZWFtICh0d28g
Y2h1bmtzIGVucXVldWVkLCB0aGVuIGNsb3NlZCkgcmVhZGVyOiB0aGlyZCByZWFkKCksIHdpdGhv
dXQgd2FpdGluZywgc2hvdWxkIGdpdmUgeyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0g
KG5lc3RlZCkgCitQQVNTIFJlYWRhYmxlU3RyZWFtICh0d28gY2h1bmtzIGVucXVldWVkLCB0aGVu
IGNsb3NlZCkgcmVhZGVyOiBkcmFpbmluZyB0aGUgc3RyZWFtIHZpYSByZWFkKCkgc2hvdWxkIGNh
dXNlIHRoZSByZWFkZXIgY2xvc2VkIHByb21pc2UgdG8gZnVsZmlsbCwgYnV0IGxvY2tlZCBzdGF5
cyB0cnVlIAorUEFTUyBSZWFkYWJsZVN0cmVhbSAodHdvIGNodW5rcyBlbnF1ZXVlZCwgdGhlbiBj
bG9zZWQpIHJlYWRlcjogcmVsZWFzaW5nIHRoZSBsb2NrIGFmdGVyIHRoZSBzdHJlYW0gaXMgY2xv
c2VkIHNob3VsZCBjYXVzZSBsb2NrZWQgdG8gYmVjb21lIGZhbHNlIAorUEFTUyBSZWFkYWJsZVN0
cmVhbSAodHdvIGNodW5rcyBlbnF1ZXVlZCwgdGhlbiBjbG9zZWQpIHJlYWRlcjogcmVsZWFzaW5n
IHRoZSBsb2NrIHNob3VsZCBjYXVzZSBmdXJ0aGVyIHJlYWQoKSBjYWxscyB0byByZWplY3Qgd2l0
aCBhIFR5cGVFcnJvciAKK1BBU1MgUmVhZGFibGVTdHJlYW0gKHR3byBjaHVua3MgZW5xdWV1ZWQs
IHRoZW4gY2xvc2VkKSByZWFkZXI6IHJlYWRlcidzIGNsb3NlZCBwcm9wZXJ0eSBhbHdheXMgcmV0
dXJucyB0aGUgc2FtZSBwcm9taXNlIAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy90ZW1wbGF0
ZWQuYW55Lndvcmtlci5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvdGVtcGxhdGVkLmFueS53b3JrZXIuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4yMzgyOTEzNTI4ZTY5M2IzYTVkNTZjNjYwYTQ1MDYwOTgwYjU0OGMzCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvdGVtcGxhdGVkLmFueS53b3JrZXIuaHRtbApA
QCAtMCwwICsxIEBACis8IS0tIFRoaXMgZmlsZSBpcyByZXF1aXJlZCBmb3IgV2ViS2l0IHRlc3Qg
aW5mcmFzdHJ1Y3R1cmUgdG8gcnVuIHRoZSB0ZW1wbGF0ZWQgdGVzdCAtLT4KXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy90ZW1wbGF0ZWQuZGVkaWNh
dGVkd29ya2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3RlbXBsYXRlZC5kZWRpY2F0ZWR3
b3JrZXItZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0M2Q3MDdm
MDhiNWEwM2FlYzRiZmZmNWQ3Mjc4ZDVkMjBkZjM1M2UwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3RlbXBsYXRlZC5kZWRpY2F0ZWR3
b3JrZXItZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsODggKzAsMCBAQAotCi1QQVNT
IFJ1bm5pbmcgdGVtcGxhdGVkUlNFbXB0eSB3aXRoIFJlYWRhYmxlU3RyZWFtIChlbXB0eSkgCi1Q
QVNTIFJlYWRhYmxlU3RyZWFtIChlbXB0eSk6IGluc3RhbmNlcyBoYXZlIHRoZSBjb3JyZWN0IG1l
dGhvZHMgYW5kIHByb3BlcnRpZXMgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIChlbXB0eSk6IGNhbGxp
bmcgZ2V0UmVhZGVyIHdpdGggaW52YWxpZCBhcmd1bWVudHMgc2hvdWxkIHRocm93IGFwcHJvcHJp
YXRlIGVycm9ycyAKLVBBU1MgUnVubmluZyB0ZW1wbGF0ZWRSU0VtcHR5UmVhZGVyIHdpdGggUmVh
ZGFibGVTdHJlYW0gKGVtcHR5KSByZWFkZXIgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIChlbXB0eSkg
cmVhZGVyOiBpbnN0YW5jZXMgaGF2ZSB0aGUgY29ycmVjdCBtZXRob2RzIGFuZCBwcm9wZXJ0aWVz
IAotUEFTUyBSZWFkYWJsZVN0cmVhbSAoZW1wdHkpIHJlYWRlcjogbG9ja2VkIHNob3VsZCBiZSB0
cnVlIAotUEFTUyBSZWFkYWJsZVN0cmVhbSAoZW1wdHkpIHJlYWRlcjogcmVhZCgpIHNob3VsZCBu
ZXZlciBzZXR0bGUgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIChlbXB0eSkgcmVhZGVyOiB0d28gcmVh
ZCgpcyBzaG91bGQgYm90aCBuZXZlciBzZXR0bGUgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIChlbXB0
eSkgcmVhZGVyOiByZWFkKCkgc2hvdWxkIHJldHVybiBkaXN0aW5jdCBwcm9taXNlcyBlYWNoIHRp
bWUgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIChlbXB0eSkgcmVhZGVyOiBnZXRSZWFkZXIoKSBhZ2Fp
biBvbiB0aGUgc3RyZWFtIHNob3VsZCBmYWlsIAotUEFTUyBSZWFkYWJsZVN0cmVhbSAoZW1wdHkp
IHJlYWRlcjogcmVsZWFzaW5nIHRoZSBsb2NrIHdpdGggcGVuZGluZyByZWFkIHJlcXVlc3RzIHNo
b3VsZCB0aHJvdyBidXQgdGhlIHJlYWQgcmVxdWVzdHMgc2hvdWxkIHN0YXkgcGVuZGluZyAKLVBB
U1MgUmVhZGFibGVTdHJlYW0gKGVtcHR5KSByZWFkZXI6IHJlbGVhc2luZyB0aGUgbG9jayBzaG91
bGQgY2F1c2UgZnVydGhlciByZWFkKCkgY2FsbHMgdG8gcmVqZWN0IHdpdGggYSBUeXBlRXJyb3Ig
Ci1QQVNTIFJlYWRhYmxlU3RyZWFtIChlbXB0eSkgcmVhZGVyOiByZWxlYXNpbmcgdGhlIGxvY2sg
c2hvdWxkIGNhdXNlIGNsb3NlZCBjYWxscyB0byByZWplY3Qgd2l0aCBhIFR5cGVFcnJvciAKLVBB
U1MgUmVhZGFibGVTdHJlYW0gKGVtcHR5KSByZWFkZXI6IHJlbGVhc2luZyB0aGUgbG9jayBzaG91
bGQgY2F1c2UgbG9ja2VkIHRvIGJlY29tZSBmYWxzZSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gKGVt
cHR5KSByZWFkZXI6IGNhbmNlbGluZyB2aWEgdGhlIHJlYWRlciBzaG91bGQgY2F1c2UgdGhlIHJl
YWRlciB0byBhY3QgY2xvc2VkIAotUEFTUyBSZWFkYWJsZVN0cmVhbSAoZW1wdHkpIHJlYWRlcjog
Y2FuY2VsaW5nIHZpYSB0aGUgc3RyZWFtIHNob3VsZCBmYWlsIAotUEFTUyBSdW5uaW5nIHRlbXBs
YXRlZFJTQ2xvc2VkIHdpdGggUmVhZGFibGVTdHJlYW0gKGNsb3NlZCB2aWEgY2FsbCBpbiBzdGFy
dCkgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIChjbG9zZWQgdmlhIGNhbGwgaW4gc3RhcnQpOiBjYW5j
ZWwoKSBzaG91bGQgcmV0dXJuIGEgZGlzdGluY3QgZnVsZmlsbGVkIHByb21pc2UgZWFjaCB0aW1l
IAotUEFTUyBSZWFkYWJsZVN0cmVhbSAoY2xvc2VkIHZpYSBjYWxsIGluIHN0YXJ0KTogbG9ja2Vk
IHNob3VsZCBiZSBmYWxzZSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gKGNsb3NlZCB2aWEgY2FsbCBp
biBzdGFydCk6IGdldFJlYWRlcigpIHNob3VsZCBiZSBPSyAKLVBBU1MgUmVhZGFibGVTdHJlYW0g
KGNsb3NlZCB2aWEgY2FsbCBpbiBzdGFydCk6IHNob3VsZCBiZSBhYmxlIHRvIGFjcXVpcmUgbXVs
dGlwbGUgcmVhZGVycyBpZiB0aGV5IGFyZSByZWxlYXNlZCBpbiBzdWNjZXNzaW9uIAotUEFTUyBS
ZWFkYWJsZVN0cmVhbSAoY2xvc2VkIHZpYSBjYWxsIGluIHN0YXJ0KTogc2hvdWxkIG5vdCBiZSBh
YmxlIHRvIGFjcXVpcmUgYSBzZWNvbmQgcmVhZGVyIGlmIHdlIGRvbid0IHJlbGVhc2UgdGhlIGZp
cnN0IG9uZSAKLVBBU1MgUnVubmluZyB0ZW1wbGF0ZWRSU0Nsb3NlZFJlYWRlciB3aXRoIFJlYWRh
YmxlU3RyZWFtIHJlYWRlciAoY2xvc2VkIGJlZm9yZSBnZXR0aW5nIHJlYWRlcikgCi1QQVNTIFJl
YWRhYmxlU3RyZWFtIHJlYWRlciAoY2xvc2VkIGJlZm9yZSBnZXR0aW5nIHJlYWRlcik6IHJlYWQo
KSBzaG91bGQgZnVsZmlsbCB3aXRoIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9IAot
UEFTUyBSZWFkYWJsZVN0cmVhbSByZWFkZXIgKGNsb3NlZCBiZWZvcmUgZ2V0dGluZyByZWFkZXIp
OiByZWFkKCkgbXVsdGlwbGUgdGltZXMgc2hvdWxkIGZ1bGZpbGwgd2l0aCB7IHZhbHVlOiB1bmRl
ZmluZWQsIGRvbmU6IHRydWUgfSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gcmVhZGVyIChjbG9zZWQg
YmVmb3JlIGdldHRpbmcgcmVhZGVyKTogcmVhZCgpIHNob3VsZCB3b3JrIHdoZW4gdXNlZCB3aXRo
aW4gYW5vdGhlciByZWFkKCkgZnVsZmlsbCBjYWxsYmFjayAKLVBBU1MgUmVhZGFibGVTdHJlYW0g
cmVhZGVyIChjbG9zZWQgYmVmb3JlIGdldHRpbmcgcmVhZGVyKTogY2xvc2VkIHNob3VsZCBmdWxm
aWxsIHdpdGggdW5kZWZpbmVkIAotUEFTUyBSZWFkYWJsZVN0cmVhbSByZWFkZXIgKGNsb3NlZCBi
ZWZvcmUgZ2V0dGluZyByZWFkZXIpOiByZWxlYXNpbmcgdGhlIGxvY2sgc2hvdWxkIGNhdXNlIGNs
b3NlZCB0byByZWplY3QgYW5kIGNoYW5nZSBpZGVudGl0eSAKLVBBU1MgUmVhZGFibGVTdHJlYW0g
cmVhZGVyIChjbG9zZWQgYmVmb3JlIGdldHRpbmcgcmVhZGVyKTogY2FuY2VsKCkgc2hvdWxkIHJl
dHVybiBhIGRpc3RpbmN0IGZ1bGZpbGxlZCBwcm9taXNlIGVhY2ggdGltZSAKLVBBU1MgUnVubmlu
ZyB0ZW1wbGF0ZWRSU0Nsb3NlZFJlYWRlciB3aXRoIFJlYWRhYmxlU3RyZWFtIHJlYWRlciAoY2xv
c2VkIGFmdGVyIGdldHRpbmcgcmVhZGVyKSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gcmVhZGVyIChj
bG9zZWQgYWZ0ZXIgZ2V0dGluZyByZWFkZXIpOiByZWFkKCkgc2hvdWxkIGZ1bGZpbGwgd2l0aCB7
IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gcmVh
ZGVyIChjbG9zZWQgYWZ0ZXIgZ2V0dGluZyByZWFkZXIpOiByZWFkKCkgbXVsdGlwbGUgdGltZXMg
c2hvdWxkIGZ1bGZpbGwgd2l0aCB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSAKLVBB
U1MgUmVhZGFibGVTdHJlYW0gcmVhZGVyIChjbG9zZWQgYWZ0ZXIgZ2V0dGluZyByZWFkZXIpOiBy
ZWFkKCkgc2hvdWxkIHdvcmsgd2hlbiB1c2VkIHdpdGhpbiBhbm90aGVyIHJlYWQoKSBmdWxmaWxs
IGNhbGxiYWNrIAotUEFTUyBSZWFkYWJsZVN0cmVhbSByZWFkZXIgKGNsb3NlZCBhZnRlciBnZXR0
aW5nIHJlYWRlcik6IGNsb3NlZCBzaG91bGQgZnVsZmlsbCB3aXRoIHVuZGVmaW5lZCAKLVBBU1Mg
UmVhZGFibGVTdHJlYW0gcmVhZGVyIChjbG9zZWQgYWZ0ZXIgZ2V0dGluZyByZWFkZXIpOiByZWxl
YXNpbmcgdGhlIGxvY2sgc2hvdWxkIGNhdXNlIGNsb3NlZCB0byByZWplY3QgYW5kIGNoYW5nZSBp
ZGVudGl0eSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gcmVhZGVyIChjbG9zZWQgYWZ0ZXIgZ2V0dGlu
ZyByZWFkZXIpOiBjYW5jZWwoKSBzaG91bGQgcmV0dXJuIGEgZGlzdGluY3QgZnVsZmlsbGVkIHBy
b21pc2UgZWFjaCB0aW1lIAotUEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTQ2xvc2VkIHdpdGggUmVh
ZGFibGVTdHJlYW0gKGNsb3NlZCB2aWEgY2FuY2VsKSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gKGNs
b3NlZCB2aWEgY2FuY2VsKTogY2FuY2VsKCkgc2hvdWxkIHJldHVybiBhIGRpc3RpbmN0IGZ1bGZp
bGxlZCBwcm9taXNlIGVhY2ggdGltZSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gKGNsb3NlZCB2aWEg
Y2FuY2VsKTogbG9ja2VkIHNob3VsZCBiZSBmYWxzZSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gKGNs
b3NlZCB2aWEgY2FuY2VsKTogZ2V0UmVhZGVyKCkgc2hvdWxkIGJlIE9LIAotUEFTUyBSZWFkYWJs
ZVN0cmVhbSAoY2xvc2VkIHZpYSBjYW5jZWwpOiBzaG91bGQgYmUgYWJsZSB0byBhY3F1aXJlIG11
bHRpcGxlIHJlYWRlcnMgaWYgdGhleSBhcmUgcmVsZWFzZWQgaW4gc3VjY2Vzc2lvbiAKLVBBU1Mg
UmVhZGFibGVTdHJlYW0gKGNsb3NlZCB2aWEgY2FuY2VsKTogc2hvdWxkIG5vdCBiZSBhYmxlIHRv
IGFjcXVpcmUgYSBzZWNvbmQgcmVhZGVyIGlmIHdlIGRvbid0IHJlbGVhc2UgdGhlIGZpcnN0IG9u
ZSAKLVBBU1MgUnVubmluZyB0ZW1wbGF0ZWRSU0Nsb3NlZFJlYWRlciB3aXRoIFJlYWRhYmxlU3Ry
ZWFtIHJlYWRlciAoY2xvc2VkIHZpYSBjYW5jZWwgYWZ0ZXIgZ2V0dGluZyByZWFkZXIpIAotUEFT
UyBSZWFkYWJsZVN0cmVhbSByZWFkZXIgKGNsb3NlZCB2aWEgY2FuY2VsIGFmdGVyIGdldHRpbmcg
cmVhZGVyKTogcmVhZCgpIHNob3VsZCBmdWxmaWxsIHdpdGggeyB2YWx1ZTogdW5kZWZpbmVkLCBk
b25lOiB0cnVlIH0gCi1QQVNTIFJlYWRhYmxlU3RyZWFtIHJlYWRlciAoY2xvc2VkIHZpYSBjYW5j
ZWwgYWZ0ZXIgZ2V0dGluZyByZWFkZXIpOiByZWFkKCkgbXVsdGlwbGUgdGltZXMgc2hvdWxkIGZ1
bGZpbGwgd2l0aCB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSAKLVBBU1MgUmVhZGFi
bGVTdHJlYW0gcmVhZGVyIChjbG9zZWQgdmlhIGNhbmNlbCBhZnRlciBnZXR0aW5nIHJlYWRlcik6
IHJlYWQoKSBzaG91bGQgd29yayB3aGVuIHVzZWQgd2l0aGluIGFub3RoZXIgcmVhZCgpIGZ1bGZp
bGwgY2FsbGJhY2sgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIHJlYWRlciAoY2xvc2VkIHZpYSBjYW5j
ZWwgYWZ0ZXIgZ2V0dGluZyByZWFkZXIpOiBjbG9zZWQgc2hvdWxkIGZ1bGZpbGwgd2l0aCB1bmRl
ZmluZWQgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIHJlYWRlciAoY2xvc2VkIHZpYSBjYW5jZWwgYWZ0
ZXIgZ2V0dGluZyByZWFkZXIpOiByZWxlYXNpbmcgdGhlIGxvY2sgc2hvdWxkIGNhdXNlIGNsb3Nl
ZCB0byByZWplY3QgYW5kIGNoYW5nZSBpZGVudGl0eSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gcmVh
ZGVyIChjbG9zZWQgdmlhIGNhbmNlbCBhZnRlciBnZXR0aW5nIHJlYWRlcik6IGNhbmNlbCgpIHNo
b3VsZCByZXR1cm4gYSBkaXN0aW5jdCBmdWxmaWxsZWQgcHJvbWlzZSBlYWNoIHRpbWUgCi1QQVNT
IFJ1bm5pbmcgdGVtcGxhdGVkUlNFcnJvcmVkIHdpdGggUmVhZGFibGVTdHJlYW0gKGVycm9yZWQg
dmlhIGNhbGwgaW4gc3RhcnQpIAotUEFTUyBSZWFkYWJsZVN0cmVhbSAoZXJyb3JlZCB2aWEgY2Fs
bCBpbiBzdGFydCk6IGdldFJlYWRlcigpIHNob3VsZCByZXR1cm4gYSByZWFkZXIgdGhhdCBhY3Rz
IGVycm9yZWQgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIChlcnJvcmVkIHZpYSBjYWxsIGluIHN0YXJ0
KTogcmVhZCgpIHR3aWNlIHNob3VsZCBnaXZlIHRoZSBlcnJvciBlYWNoIHRpbWUgCi1QQVNTIFJl
YWRhYmxlU3RyZWFtIChlcnJvcmVkIHZpYSBjYWxsIGluIHN0YXJ0KTogbG9ja2VkIHNob3VsZCBi
ZSBmYWxzZSAKLVBBU1MgUnVubmluZyB0ZW1wbGF0ZWRSU0Vycm9yZWRTeW5jT25seSB3aXRoIFJl
YWRhYmxlU3RyZWFtIChlcnJvcmVkIHZpYSBjYWxsIGluIHN0YXJ0KSAKLVBBU1MgUmVhZGFibGVT
dHJlYW0gKGVycm9yZWQgdmlhIGNhbGwgaW4gc3RhcnQpOiBzaG91bGQgYmUgYWJsZSB0byBvYnRh
aW4gYSBzZWNvbmQgcmVhZGVyLCB3aXRoIHRoZSBjb3JyZWN0IGNsb3NlZCBwcm9taXNlIAotUEFT
UyBSZWFkYWJsZVN0cmVhbSAoZXJyb3JlZCB2aWEgY2FsbCBpbiBzdGFydCk6IHNob3VsZCBub3Qg
YmUgYWJsZSB0byBvYnRhaW4gYWRkaXRpb25hbCByZWFkZXJzIGlmIHdlIGRvbid0IHJlbGVhc2Ug
dGhlIGZpcnN0IGxvY2sgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIChlcnJvcmVkIHZpYSBjYWxsIGlu
IHN0YXJ0KTogY2FuY2VsKCkgc2hvdWxkIHJldHVybiBhIGRpc3RpbmN0IHJlamVjdGVkIHByb21p
c2UgZWFjaCB0aW1lIAotUEFTUyBSZWFkYWJsZVN0cmVhbSAoZXJyb3JlZCB2aWEgY2FsbCBpbiBz
dGFydCk6IHJlYWRlciBjYW5jZWwoKSBzaG91bGQgcmV0dXJuIGEgZGlzdGluY3QgcmVqZWN0ZWQg
cHJvbWlzZSBlYWNoIHRpbWUgCi1QQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNFcnJvcmVkIHdpdGgg
UmVhZGFibGVTdHJlYW0gKGVycm9yZWQgdmlhIHJldHVybmluZyBhIHJlamVjdGVkIHByb21pc2Ug
aW4gc3RhcnQpIAotUEFTUyBSZWFkYWJsZVN0cmVhbSAoZXJyb3JlZCB2aWEgcmV0dXJuaW5nIGEg
cmVqZWN0ZWQgcHJvbWlzZSBpbiBzdGFydCk6IGdldFJlYWRlcigpIHNob3VsZCByZXR1cm4gYSBy
ZWFkZXIgdGhhdCBhY3RzIGVycm9yZWQgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIChlcnJvcmVkIHZp
YSByZXR1cm5pbmcgYSByZWplY3RlZCBwcm9taXNlIGluIHN0YXJ0KTogcmVhZCgpIHR3aWNlIHNo
b3VsZCBnaXZlIHRoZSBlcnJvciBlYWNoIHRpbWUgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIChlcnJv
cmVkIHZpYSByZXR1cm5pbmcgYSByZWplY3RlZCBwcm9taXNlIGluIHN0YXJ0KTogbG9ja2VkIHNo
b3VsZCBiZSBmYWxzZSAKLVBBU1MgUnVubmluZyB0ZW1wbGF0ZWRSU0Vycm9yZWRSZWFkZXIgd2l0
aCBSZWFkYWJsZVN0cmVhbSAoZXJyb3JlZCB2aWEgcmV0dXJuaW5nIGEgcmVqZWN0ZWQgcHJvbWlz
ZSBpbiBzdGFydCkgcmVhZGVyIAotUEFTUyBSZWFkYWJsZVN0cmVhbSAoZXJyb3JlZCB2aWEgcmV0
dXJuaW5nIGEgcmVqZWN0ZWQgcHJvbWlzZSBpbiBzdGFydCkgcmVhZGVyOiBjbG9zZWQgc2hvdWxk
IHJlamVjdCB3aXRoIHRoZSBlcnJvciAKLVBBU1MgUmVhZGFibGVTdHJlYW0gKGVycm9yZWQgdmlh
IHJldHVybmluZyBhIHJlamVjdGVkIHByb21pc2UgaW4gc3RhcnQpIHJlYWRlcjogcmVsZWFzaW5n
IHRoZSBsb2NrIHNob3VsZCBjYXVzZSBjbG9zZWQgdG8gcmVqZWN0IGFuZCBjaGFuZ2UgaWRlbnRp
dHkgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIChlcnJvcmVkIHZpYSByZXR1cm5pbmcgYSByZWplY3Rl
ZCBwcm9taXNlIGluIHN0YXJ0KSByZWFkZXI6IHJlYWQoKSBzaG91bGQgcmVqZWN0IHdpdGggdGhl
IGVycm9yIAotUEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTRXJyb3JlZFJlYWRlciB3aXRoIFJlYWRh
YmxlU3RyZWFtIHJlYWRlciAoZXJyb3JlZCBiZWZvcmUgZ2V0dGluZyByZWFkZXIpIAotUEFTUyBS
ZWFkYWJsZVN0cmVhbSByZWFkZXIgKGVycm9yZWQgYmVmb3JlIGdldHRpbmcgcmVhZGVyKTogY2xv
c2VkIHNob3VsZCByZWplY3Qgd2l0aCB0aGUgZXJyb3IgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIHJl
YWRlciAoZXJyb3JlZCBiZWZvcmUgZ2V0dGluZyByZWFkZXIpOiByZWxlYXNpbmcgdGhlIGxvY2sg
c2hvdWxkIGNhdXNlIGNsb3NlZCB0byByZWplY3QgYW5kIGNoYW5nZSBpZGVudGl0eSAKLVBBU1Mg
UmVhZGFibGVTdHJlYW0gcmVhZGVyIChlcnJvcmVkIGJlZm9yZSBnZXR0aW5nIHJlYWRlcik6IHJl
YWQoKSBzaG91bGQgcmVqZWN0IHdpdGggdGhlIGVycm9yIAotUEFTUyBSdW5uaW5nIHRlbXBsYXRl
ZFJTRXJyb3JlZFJlYWRlciB3aXRoIFJlYWRhYmxlU3RyZWFtIHJlYWRlciAoZXJyb3JlZCBhZnRl
ciBnZXR0aW5nIHJlYWRlcikgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIHJlYWRlciAoZXJyb3JlZCBh
ZnRlciBnZXR0aW5nIHJlYWRlcik6IGNsb3NlZCBzaG91bGQgcmVqZWN0IHdpdGggdGhlIGVycm9y
IAotUEFTUyBSZWFkYWJsZVN0cmVhbSByZWFkZXIgKGVycm9yZWQgYWZ0ZXIgZ2V0dGluZyByZWFk
ZXIpOiByZWxlYXNpbmcgdGhlIGxvY2sgc2hvdWxkIGNhdXNlIGNsb3NlZCB0byByZWplY3QgYW5k
IGNoYW5nZSBpZGVudGl0eSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gcmVhZGVyIChlcnJvcmVkIGFm
dGVyIGdldHRpbmcgcmVhZGVyKTogcmVhZCgpIHNob3VsZCByZWplY3Qgd2l0aCB0aGUgZXJyb3Ig
Ci1QQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNUd29DaHVua3NPcGVuUmVhZGVyIHdpdGggUmVhZGFi
bGVTdHJlYW0gKHR3byBjaHVua3MgZW5xdWV1ZWQsIHN0aWxsIG9wZW4pIHJlYWRlciAKLVBBU1Mg
UmVhZGFibGVTdHJlYW0gKHR3byBjaHVua3MgZW5xdWV1ZWQsIHN0aWxsIG9wZW4pIHJlYWRlcjog
Y2FsbGluZyByZWFkKCkgdHdpY2Ugd2l0aG91dCB3YWl0aW5nIHdpbGwgZXZlbnR1YWxseSBnaXZl
IGJvdGggY2h1bmtzIChzZXF1ZW50aWFsKSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gKHR3byBjaHVu
a3MgZW5xdWV1ZWQsIHN0aWxsIG9wZW4pIHJlYWRlcjogY2FsbGluZyByZWFkKCkgdHdpY2Ugd2l0
aG91dCB3YWl0aW5nIHdpbGwgZXZlbnR1YWxseSBnaXZlIGJvdGggY2h1bmtzIChuZXN0ZWQpIAot
UEFTUyBSZWFkYWJsZVN0cmVhbSAodHdvIGNodW5rcyBlbnF1ZXVlZCwgc3RpbGwgb3BlbikgcmVh
ZGVyOiByZWFkKCkgc2hvdWxkIHJldHVybiBkaXN0aW5jdCBwcm9taXNlcyBlYWNoIHRpbWUgCi1Q
QVNTIFJlYWRhYmxlU3RyZWFtICh0d28gY2h1bmtzIGVucXVldWVkLCBzdGlsbCBvcGVuKSByZWFk
ZXI6IGNhbmNlbCgpIGFmdGVyIGEgcmVhZCgpIHNob3VsZCBzdGlsbCBnaXZlIHRoYXQgc2luZ2xl
IHJlYWQgcmVzdWx0IAotUEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTVHdvQ2h1bmtzQ2xvc2VkUmVh
ZGVyIHdpdGggUmVhZGFibGVTdHJlYW0gKHR3byBjaHVua3MgZW5xdWV1ZWQsIHRoZW4gY2xvc2Vk
KSByZWFkZXIgCi1QQVNTIFJlYWRhYmxlU3RyZWFtICh0d28gY2h1bmtzIGVucXVldWVkLCB0aGVu
IGNsb3NlZCkgcmVhZGVyOiB0aGlyZCByZWFkKCksIHdpdGhvdXQgd2FpdGluZywgc2hvdWxkIGdp
dmUgeyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0gKHNlcXVlbnRpYWwpIAotUEFTUyBS
ZWFkYWJsZVN0cmVhbSAodHdvIGNodW5rcyBlbnF1ZXVlZCwgdGhlbiBjbG9zZWQpIHJlYWRlcjog
dGhpcmQgcmVhZCgpLCB3aXRob3V0IHdhaXRpbmcsIHNob3VsZCBnaXZlIHsgdmFsdWU6IHVuZGVm
aW5lZCwgZG9uZTogdHJ1ZSB9IChuZXN0ZWQpIAotUEFTUyBSZWFkYWJsZVN0cmVhbSAodHdvIGNo
dW5rcyBlbnF1ZXVlZCwgdGhlbiBjbG9zZWQpIHJlYWRlcjogZHJhaW5pbmcgdGhlIHN0cmVhbSB2
aWEgcmVhZCgpIHNob3VsZCBjYXVzZSB0aGUgcmVhZGVyIGNsb3NlZCBwcm9taXNlIHRvIGZ1bGZp
bGwsIGJ1dCBsb2NrZWQgc3RheXMgdHJ1ZSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gKHR3byBjaHVu
a3MgZW5xdWV1ZWQsIHRoZW4gY2xvc2VkKSByZWFkZXI6IHJlbGVhc2luZyB0aGUgbG9jayBhZnRl
ciB0aGUgc3RyZWFtIGlzIGNsb3NlZCBzaG91bGQgY2F1c2UgbG9ja2VkIHRvIGJlY29tZSBmYWxz
ZSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gKHR3byBjaHVua3MgZW5xdWV1ZWQsIHRoZW4gY2xvc2Vk
KSByZWFkZXI6IHJlbGVhc2luZyB0aGUgbG9jayBzaG91bGQgY2F1c2UgZnVydGhlciByZWFkKCkg
Y2FsbHMgdG8gcmVqZWN0IHdpdGggYSBUeXBlRXJyb3IgCi1QQVNTIFJlYWRhYmxlU3RyZWFtICh0
d28gY2h1bmtzIGVucXVldWVkLCB0aGVuIGNsb3NlZCkgcmVhZGVyOiByZWFkZXIncyBjbG9zZWQg
cHJvcGVydHkgYWx3YXlzIHJldHVybnMgdGhlIHNhbWUgcHJvbWlzZSAKLQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRh
YmxlLXN0cmVhbXMvdGVtcGxhdGVkLmRlZGljYXRlZHdvcmtlci5odG1sIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMv
dGVtcGxhdGVkLmRlZGljYXRlZHdvcmtlci5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAyMzU0Yjk4ZGM2OTdjOTZkYTU2Zjg1ZGNiOTA0NWQ2YjY1NDRkYWYyLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3RlbXBsYXRl
ZC5kZWRpY2F0ZWR3b3JrZXIuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLTwh
RE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHRpdGxlPnRlbXBsYXRlZC5q
cyBkZWRpY2F0ZWQgd29ya2VyIHdyYXBwZXIgZmlsZTwvdGl0bGU+Ci0KLTxzY3JpcHQgc3JjPSIv
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLQotPHNjcmlwdD4KLSd1c2Ugc3Ry
aWN0JzsKLWZldGNoX3Rlc3RzX2Zyb21fd29ya2VyKG5ldyBXb3JrZXIoJ3RlbXBsYXRlZC5qcycp
KTsKLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvdGVtcGxhdGVkLmh0bWwgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFi
bGUtc3RyZWFtcy90ZW1wbGF0ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
NjNiMTdmMmYzZGY4MmNjYTI3ODk0Y2Y3ZWU2ZDVlMzJkNGQwMmM3Ny4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy90ZW1wbGF0ZWQuaHRt
bAorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEg
Y2hhcnNldD0idXRmLTgiPgotPHRpdGxlPnRlbXBsYXRlZC5qcyBicm93c2VyIGNvbnRleHQgd3Jh
cHBlciBmaWxlPC90aXRsZT4KLQotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3Mu
anMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQu
anMiPjwvc2NyaXB0PgotCi08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3QtdXRpbHMuanMi
Pjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9ycy10ZXN0LXRlbXBsYXRlcy5q
cyI+PC9zY3JpcHQ+Ci0KLTxzY3JpcHQgc3JjPSJ0ZW1wbGF0ZWQuanMiPjwvc2NyaXB0PgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJl
YW1zL3JlYWRhYmxlLXN0cmVhbXMvdGVtcGxhdGVkLmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvdGVtcGxhdGVk
LmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZGIwNDI5OTk0ZDQ1M2RiZmNkMmU4
MzQ3ZTZmYTdlZmRmMjBiYzRlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3RlbXBsYXRlZC5qcworKysgL2Rldi9udWxsCkBAIC0xLDE0
OCArMCwwIEBACi0ndXNlIHN0cmljdCc7Ci0KLWlmIChzZWxmLmltcG9ydFNjcmlwdHMpIHsKLSAg
c2VsZi5pbXBvcnRTY3JpcHRzKCcvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzJyk7Ci0gIHNlbGYu
aW1wb3J0U2NyaXB0cygnLi4vcmVzb3VyY2VzL3Rlc3QtdXRpbHMuanMnKTsKLSAgc2VsZi5pbXBv
cnRTY3JpcHRzKCcuLi9yZXNvdXJjZXMvcnMtdGVzdC10ZW1wbGF0ZXMuanMnKTsKLX0KLQotLy8g
UnVuIHRoZSByZWFkYWJsZSBzdHJlYW0gdGVzdCB0ZW1wbGF0ZXMgYWdhaW5zdCByZWFkYWJsZSBz
dHJlYW1zIGNyZWF0ZWQgZGlyZWN0bHkgdXNpbmcgdGhlIGNvbnN0cnVjdG9yCi0KLWNvbnN0IHRo
ZUVycm9yID0geyBuYW1lOiAnYm9vIScgfTsKLWNvbnN0IGNodW5rcyA9IFsnYScsICdiJ107Ci0K
LXRlbXBsYXRlZFJTRW1wdHkoJ1JlYWRhYmxlU3RyZWFtIChlbXB0eSknLCAoKSA9PiB7Ci0gIHJl
dHVybiBuZXcgUmVhZGFibGVTdHJlYW0oKTsKLX0pOwotCi10ZW1wbGF0ZWRSU0VtcHR5UmVhZGVy
KCdSZWFkYWJsZVN0cmVhbSAoZW1wdHkpIHJlYWRlcicsICgpID0+IHsKLSAgcmV0dXJuIHN0cmVh
bUFuZERlZmF1bHRSZWFkZXIobmV3IFJlYWRhYmxlU3RyZWFtKCkpOwotfSk7Ci0KLXRlbXBsYXRl
ZFJTQ2xvc2VkKCdSZWFkYWJsZVN0cmVhbSAoY2xvc2VkIHZpYSBjYWxsIGluIHN0YXJ0KScsICgp
ID0+IHsKLSAgcmV0dXJuIG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAg
ICAgYy5jbG9zZSgpOwotICAgIH0KLSAgfSk7Ci19KTsKLQotdGVtcGxhdGVkUlNDbG9zZWRSZWFk
ZXIoJ1JlYWRhYmxlU3RyZWFtIHJlYWRlciAoY2xvc2VkIGJlZm9yZSBnZXR0aW5nIHJlYWRlcikn
LCAoKSA9PiB7Ci0gIGxldCBjb250cm9sbGVyOwotICBjb25zdCBzdHJlYW0gPSBuZXcgUmVhZGFi
bGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGNvbnRyb2xsZXIgPSBjOwotICAgIH0K
LSAgfSk7Ci0gIGNvbnRyb2xsZXIuY2xvc2UoKTsKLSAgY29uc3QgcmVzdWx0ID0gc3RyZWFtQW5k
RGVmYXVsdFJlYWRlcihzdHJlYW0pOwotICByZXR1cm4gcmVzdWx0OwotfSk7Ci0KLXRlbXBsYXRl
ZFJTQ2xvc2VkUmVhZGVyKCdSZWFkYWJsZVN0cmVhbSByZWFkZXIgKGNsb3NlZCBhZnRlciBnZXR0
aW5nIHJlYWRlciknLCAoKSA9PiB7Ci0gIGxldCBjb250cm9sbGVyOwotICBjb25zdCBzdHJlYW0g
PSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGNvbnRyb2xsZXIg
PSBjOwotICAgIH0KLSAgfSk7Ci0gIGNvbnN0IHJlc3VsdCA9IHN0cmVhbUFuZERlZmF1bHRSZWFk
ZXIoc3RyZWFtKTsKLSAgY29udHJvbGxlci5jbG9zZSgpOwotICByZXR1cm4gcmVzdWx0OwotfSk7
Ci0KLXRlbXBsYXRlZFJTQ2xvc2VkKCdSZWFkYWJsZVN0cmVhbSAoY2xvc2VkIHZpYSBjYW5jZWwp
JywgKCkgPT4gewotICBjb25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oKTsKLSAgc3Ry
ZWFtLmNhbmNlbCgpOwotICByZXR1cm4gc3RyZWFtOwotfSk7Ci0KLXRlbXBsYXRlZFJTQ2xvc2Vk
UmVhZGVyKCdSZWFkYWJsZVN0cmVhbSByZWFkZXIgKGNsb3NlZCB2aWEgY2FuY2VsIGFmdGVyIGdl
dHRpbmcgcmVhZGVyKScsICgpID0+IHsKLSAgY29uc3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxlU3Ry
ZWFtKCk7Ci0gIGNvbnN0IHJlc3VsdCA9IHN0cmVhbUFuZERlZmF1bHRSZWFkZXIoc3RyZWFtKTsK
LSAgcmVzdWx0LnJlYWRlci5jYW5jZWwoKTsKLSAgcmV0dXJuIHJlc3VsdDsKLX0pOwotCi10ZW1w
bGF0ZWRSU0Vycm9yZWQoJ1JlYWRhYmxlU3RyZWFtIChlcnJvcmVkIHZpYSBjYWxsIGluIHN0YXJ0
KScsICgpID0+IHsKLSAgcmV0dXJuIG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykg
ewotICAgICAgYy5lcnJvcih0aGVFcnJvcik7Ci0gICAgfQotICB9KTsKLX0sIHRoZUVycm9yKTsK
LQotdGVtcGxhdGVkUlNFcnJvcmVkU3luY09ubHkoJ1JlYWRhYmxlU3RyZWFtIChlcnJvcmVkIHZp
YSBjYWxsIGluIHN0YXJ0KScsICgpID0+IHsKLSAgcmV0dXJuIG5ldyBSZWFkYWJsZVN0cmVhbSh7
Ci0gICAgc3RhcnQoYykgewotICAgICAgYy5lcnJvcih0aGVFcnJvcik7Ci0gICAgfQotICB9KTsK
LX0sIHRoZUVycm9yKTsKLQotdGVtcGxhdGVkUlNFcnJvcmVkKCdSZWFkYWJsZVN0cmVhbSAoZXJy
b3JlZCB2aWEgcmV0dXJuaW5nIGEgcmVqZWN0ZWQgcHJvbWlzZSBpbiBzdGFydCknLCAoKSA9PiB7
Ci0gIHJldHVybiBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KCkgewotICAgICAgcmV0
dXJuIFByb21pc2UucmVqZWN0KHRoZUVycm9yKTsKLSAgICB9Ci0gIH0pOwotfSwgdGhlRXJyb3Ip
OwotCi10ZW1wbGF0ZWRSU0Vycm9yZWRSZWFkZXIoJ1JlYWRhYmxlU3RyZWFtIChlcnJvcmVkIHZp
YSByZXR1cm5pbmcgYSByZWplY3RlZCBwcm9taXNlIGluIHN0YXJ0KSByZWFkZXInLCAoKSA9PiB7
Ci0gIHJldHVybiBzdHJlYW1BbmREZWZhdWx0UmVhZGVyKG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0g
ICAgc3RhcnQoKSB7Ci0gICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QodGhlRXJyb3IpOwotICAg
IH0KLSAgfSkpOwotfSwgdGhlRXJyb3IpOwotCi10ZW1wbGF0ZWRSU0Vycm9yZWRSZWFkZXIoJ1Jl
YWRhYmxlU3RyZWFtIHJlYWRlciAoZXJyb3JlZCBiZWZvcmUgZ2V0dGluZyByZWFkZXIpJywgKCkg
PT4gewotICBsZXQgY29udHJvbGxlcjsKLSAgY29uc3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxlU3Ry
ZWFtKHsKLSAgICBzdGFydChjKSB7Ci0gICAgICBjb250cm9sbGVyID0gYzsKLSAgICB9Ci0gIH0p
OwotICBjb250cm9sbGVyLmVycm9yKHRoZUVycm9yKTsKLSAgcmV0dXJuIHN0cmVhbUFuZERlZmF1
bHRSZWFkZXIoc3RyZWFtKTsKLX0sIHRoZUVycm9yKTsKLQotdGVtcGxhdGVkUlNFcnJvcmVkUmVh
ZGVyKCdSZWFkYWJsZVN0cmVhbSByZWFkZXIgKGVycm9yZWQgYWZ0ZXIgZ2V0dGluZyByZWFkZXIp
JywgKCkgPT4gewotICBsZXQgY29udHJvbGxlcjsKLSAgY29uc3QgcmVzdWx0ID0gc3RyZWFtQW5k
RGVmYXVsdFJlYWRlcihuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAg
IGNvbnRyb2xsZXIgPSBjOwotICAgIH0KLSAgfSkpOwotICBjb250cm9sbGVyLmVycm9yKHRoZUVy
cm9yKTsKLSAgcmV0dXJuIHJlc3VsdDsKLX0sIHRoZUVycm9yKTsKLQotdGVtcGxhdGVkUlNUd29D
aHVua3NPcGVuUmVhZGVyKCdSZWFkYWJsZVN0cmVhbSAodHdvIGNodW5rcyBlbnF1ZXVlZCwgc3Rp
bGwgb3BlbikgcmVhZGVyJywgKCkgPT4gewotICByZXR1cm4gc3RyZWFtQW5kRGVmYXVsdFJlYWRl
cihuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGMuZW5xdWV1ZShj
aHVua3NbMF0pOwotICAgICAgYy5lbnF1ZXVlKGNodW5rc1sxXSk7Ci0gICAgfQotICB9KSk7Ci19
LCBjaHVua3MpOwotCi10ZW1wbGF0ZWRSU1R3b0NodW5rc0Nsb3NlZFJlYWRlcignUmVhZGFibGVT
dHJlYW0gKHR3byBjaHVua3MgZW5xdWV1ZWQsIHRoZW4gY2xvc2VkKSByZWFkZXInLCAoKSA9PiB7
Ci0gIGxldCBkb0Nsb3NlOwotICBjb25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oewot
ICAgIHN0YXJ0KGMpIHsKLSAgICAgIGMuZW5xdWV1ZShjaHVua3NbMF0pOwotICAgICAgYy5lbnF1
ZXVlKGNodW5rc1sxXSk7Ci0gICAgICBkb0Nsb3NlID0gYy5jbG9zZS5iaW5kKGMpOwotICAgIH0K
LSAgfSk7Ci0gIGNvbnN0IHJlc3VsdCA9IHN0cmVhbUFuZERlZmF1bHRSZWFkZXIoc3RyZWFtKTsK
LSAgZG9DbG9zZSgpOwotICByZXR1cm4gcmVzdWx0OwotfSwgY2h1bmtzKTsKLQotZnVuY3Rpb24g
c3RyZWFtQW5kRGVmYXVsdFJlYWRlcihzdHJlYW0pIHsKLSAgcmV0dXJuIHsgc3RyZWFtLCByZWFk
ZXI6IHN0cmVhbS5nZXRSZWFkZXIoKSB9OwotfQotCi1kb25lKCk7CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUt
c3RyZWFtcy90ZW1wbGF0ZWQuc2VydmljZXdvcmtlci5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUt
c3RyZWFtcy90ZW1wbGF0ZWQuc2VydmljZXdvcmtlci5odHRwcy1leHBlY3RlZC50eHQKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQzN2EwM2FkZDY2N2VmOWY0ZTRmZGFmNGI4MTliYjk1
ZjM0MDE1ZWQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRh
YmxlLXN0cmVhbXMvdGVtcGxhdGVkLnNlcnZpY2V3b3JrZXIuaHR0cHMtZXhwZWN0ZWQudHh0Cisr
KyAvZGV2L251bGwKQEAgLTEsODkgKzAsMCBAQAotCi1QQVNTIFNlcnZpY2Ugd29ya2VyIHRlc3Qg
c2V0dXAgCi1QQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNFbXB0eSB3aXRoIFJlYWRhYmxlU3RyZWFt
IChlbXB0eSkgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIChlbXB0eSk6IGluc3RhbmNlcyBoYXZlIHRo
ZSBjb3JyZWN0IG1ldGhvZHMgYW5kIHByb3BlcnRpZXMgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIChl
bXB0eSk6IGNhbGxpbmcgZ2V0UmVhZGVyIHdpdGggaW52YWxpZCBhcmd1bWVudHMgc2hvdWxkIHRo
cm93IGFwcHJvcHJpYXRlIGVycm9ycyAKLVBBU1MgUnVubmluZyB0ZW1wbGF0ZWRSU0VtcHR5UmVh
ZGVyIHdpdGggUmVhZGFibGVTdHJlYW0gKGVtcHR5KSByZWFkZXIgCi1QQVNTIFJlYWRhYmxlU3Ry
ZWFtIChlbXB0eSkgcmVhZGVyOiBpbnN0YW5jZXMgaGF2ZSB0aGUgY29ycmVjdCBtZXRob2RzIGFu
ZCBwcm9wZXJ0aWVzIAotUEFTUyBSZWFkYWJsZVN0cmVhbSAoZW1wdHkpIHJlYWRlcjogbG9ja2Vk
IHNob3VsZCBiZSB0cnVlIAotUEFTUyBSZWFkYWJsZVN0cmVhbSAoZW1wdHkpIHJlYWRlcjogcmVh
ZCgpIHNob3VsZCBuZXZlciBzZXR0bGUgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIChlbXB0eSkgcmVh
ZGVyOiB0d28gcmVhZCgpcyBzaG91bGQgYm90aCBuZXZlciBzZXR0bGUgCi1QQVNTIFJlYWRhYmxl
U3RyZWFtIChlbXB0eSkgcmVhZGVyOiByZWFkKCkgc2hvdWxkIHJldHVybiBkaXN0aW5jdCBwcm9t
aXNlcyBlYWNoIHRpbWUgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIChlbXB0eSkgcmVhZGVyOiBnZXRS
ZWFkZXIoKSBhZ2FpbiBvbiB0aGUgc3RyZWFtIHNob3VsZCBmYWlsIAotUEFTUyBSZWFkYWJsZVN0
cmVhbSAoZW1wdHkpIHJlYWRlcjogcmVsZWFzaW5nIHRoZSBsb2NrIHdpdGggcGVuZGluZyByZWFk
IHJlcXVlc3RzIHNob3VsZCB0aHJvdyBidXQgdGhlIHJlYWQgcmVxdWVzdHMgc2hvdWxkIHN0YXkg
cGVuZGluZyAKLVBBU1MgUmVhZGFibGVTdHJlYW0gKGVtcHR5KSByZWFkZXI6IHJlbGVhc2luZyB0
aGUgbG9jayBzaG91bGQgY2F1c2UgZnVydGhlciByZWFkKCkgY2FsbHMgdG8gcmVqZWN0IHdpdGgg
YSBUeXBlRXJyb3IgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIChlbXB0eSkgcmVhZGVyOiByZWxlYXNp
bmcgdGhlIGxvY2sgc2hvdWxkIGNhdXNlIGNsb3NlZCBjYWxscyB0byByZWplY3Qgd2l0aCBhIFR5
cGVFcnJvciAKLVBBU1MgUmVhZGFibGVTdHJlYW0gKGVtcHR5KSByZWFkZXI6IHJlbGVhc2luZyB0
aGUgbG9jayBzaG91bGQgY2F1c2UgbG9ja2VkIHRvIGJlY29tZSBmYWxzZSAKLVBBU1MgUmVhZGFi
bGVTdHJlYW0gKGVtcHR5KSByZWFkZXI6IGNhbmNlbGluZyB2aWEgdGhlIHJlYWRlciBzaG91bGQg
Y2F1c2UgdGhlIHJlYWRlciB0byBhY3QgY2xvc2VkIAotUEFTUyBSZWFkYWJsZVN0cmVhbSAoZW1w
dHkpIHJlYWRlcjogY2FuY2VsaW5nIHZpYSB0aGUgc3RyZWFtIHNob3VsZCBmYWlsIAotUEFTUyBS
dW5uaW5nIHRlbXBsYXRlZFJTQ2xvc2VkIHdpdGggUmVhZGFibGVTdHJlYW0gKGNsb3NlZCB2aWEg
Y2FsbCBpbiBzdGFydCkgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIChjbG9zZWQgdmlhIGNhbGwgaW4g
c3RhcnQpOiBjYW5jZWwoKSBzaG91bGQgcmV0dXJuIGEgZGlzdGluY3QgZnVsZmlsbGVkIHByb21p
c2UgZWFjaCB0aW1lIAotUEFTUyBSZWFkYWJsZVN0cmVhbSAoY2xvc2VkIHZpYSBjYWxsIGluIHN0
YXJ0KTogbG9ja2VkIHNob3VsZCBiZSBmYWxzZSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gKGNsb3Nl
ZCB2aWEgY2FsbCBpbiBzdGFydCk6IGdldFJlYWRlcigpIHNob3VsZCBiZSBPSyAKLVBBU1MgUmVh
ZGFibGVTdHJlYW0gKGNsb3NlZCB2aWEgY2FsbCBpbiBzdGFydCk6IHNob3VsZCBiZSBhYmxlIHRv
IGFjcXVpcmUgbXVsdGlwbGUgcmVhZGVycyBpZiB0aGV5IGFyZSByZWxlYXNlZCBpbiBzdWNjZXNz
aW9uIAotUEFTUyBSZWFkYWJsZVN0cmVhbSAoY2xvc2VkIHZpYSBjYWxsIGluIHN0YXJ0KTogc2hv
dWxkIG5vdCBiZSBhYmxlIHRvIGFjcXVpcmUgYSBzZWNvbmQgcmVhZGVyIGlmIHdlIGRvbid0IHJl
bGVhc2UgdGhlIGZpcnN0IG9uZSAKLVBBU1MgUnVubmluZyB0ZW1wbGF0ZWRSU0Nsb3NlZFJlYWRl
ciB3aXRoIFJlYWRhYmxlU3RyZWFtIHJlYWRlciAoY2xvc2VkIGJlZm9yZSBnZXR0aW5nIHJlYWRl
cikgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIHJlYWRlciAoY2xvc2VkIGJlZm9yZSBnZXR0aW5nIHJl
YWRlcik6IHJlYWQoKSBzaG91bGQgZnVsZmlsbCB3aXRoIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9u
ZTogdHJ1ZSB9IAotUEFTUyBSZWFkYWJsZVN0cmVhbSByZWFkZXIgKGNsb3NlZCBiZWZvcmUgZ2V0
dGluZyByZWFkZXIpOiByZWFkKCkgbXVsdGlwbGUgdGltZXMgc2hvdWxkIGZ1bGZpbGwgd2l0aCB7
IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gcmVh
ZGVyIChjbG9zZWQgYmVmb3JlIGdldHRpbmcgcmVhZGVyKTogcmVhZCgpIHNob3VsZCB3b3JrIHdo
ZW4gdXNlZCB3aXRoaW4gYW5vdGhlciByZWFkKCkgZnVsZmlsbCBjYWxsYmFjayAKLVBBU1MgUmVh
ZGFibGVTdHJlYW0gcmVhZGVyIChjbG9zZWQgYmVmb3JlIGdldHRpbmcgcmVhZGVyKTogY2xvc2Vk
IHNob3VsZCBmdWxmaWxsIHdpdGggdW5kZWZpbmVkIAotUEFTUyBSZWFkYWJsZVN0cmVhbSByZWFk
ZXIgKGNsb3NlZCBiZWZvcmUgZ2V0dGluZyByZWFkZXIpOiByZWxlYXNpbmcgdGhlIGxvY2sgc2hv
dWxkIGNhdXNlIGNsb3NlZCB0byByZWplY3QgYW5kIGNoYW5nZSBpZGVudGl0eSAKLVBBU1MgUmVh
ZGFibGVTdHJlYW0gcmVhZGVyIChjbG9zZWQgYmVmb3JlIGdldHRpbmcgcmVhZGVyKTogY2FuY2Vs
KCkgc2hvdWxkIHJldHVybiBhIGRpc3RpbmN0IGZ1bGZpbGxlZCBwcm9taXNlIGVhY2ggdGltZSAK
LVBBU1MgUnVubmluZyB0ZW1wbGF0ZWRSU0Nsb3NlZFJlYWRlciB3aXRoIFJlYWRhYmxlU3RyZWFt
IHJlYWRlciAoY2xvc2VkIGFmdGVyIGdldHRpbmcgcmVhZGVyKSAKLVBBU1MgUmVhZGFibGVTdHJl
YW0gcmVhZGVyIChjbG9zZWQgYWZ0ZXIgZ2V0dGluZyByZWFkZXIpOiByZWFkKCkgc2hvdWxkIGZ1
bGZpbGwgd2l0aCB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSAKLVBBU1MgUmVhZGFi
bGVTdHJlYW0gcmVhZGVyIChjbG9zZWQgYWZ0ZXIgZ2V0dGluZyByZWFkZXIpOiByZWFkKCkgbXVs
dGlwbGUgdGltZXMgc2hvdWxkIGZ1bGZpbGwgd2l0aCB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6
IHRydWUgfSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gcmVhZGVyIChjbG9zZWQgYWZ0ZXIgZ2V0dGlu
ZyByZWFkZXIpOiByZWFkKCkgc2hvdWxkIHdvcmsgd2hlbiB1c2VkIHdpdGhpbiBhbm90aGVyIHJl
YWQoKSBmdWxmaWxsIGNhbGxiYWNrIAotUEFTUyBSZWFkYWJsZVN0cmVhbSByZWFkZXIgKGNsb3Nl
ZCBhZnRlciBnZXR0aW5nIHJlYWRlcik6IGNsb3NlZCBzaG91bGQgZnVsZmlsbCB3aXRoIHVuZGVm
aW5lZCAKLVBBU1MgUmVhZGFibGVTdHJlYW0gcmVhZGVyIChjbG9zZWQgYWZ0ZXIgZ2V0dGluZyBy
ZWFkZXIpOiByZWxlYXNpbmcgdGhlIGxvY2sgc2hvdWxkIGNhdXNlIGNsb3NlZCB0byByZWplY3Qg
YW5kIGNoYW5nZSBpZGVudGl0eSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gcmVhZGVyIChjbG9zZWQg
YWZ0ZXIgZ2V0dGluZyByZWFkZXIpOiBjYW5jZWwoKSBzaG91bGQgcmV0dXJuIGEgZGlzdGluY3Qg
ZnVsZmlsbGVkIHByb21pc2UgZWFjaCB0aW1lIAotUEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTQ2xv
c2VkIHdpdGggUmVhZGFibGVTdHJlYW0gKGNsb3NlZCB2aWEgY2FuY2VsKSAKLVBBU1MgUmVhZGFi
bGVTdHJlYW0gKGNsb3NlZCB2aWEgY2FuY2VsKTogY2FuY2VsKCkgc2hvdWxkIHJldHVybiBhIGRp
c3RpbmN0IGZ1bGZpbGxlZCBwcm9taXNlIGVhY2ggdGltZSAKLVBBU1MgUmVhZGFibGVTdHJlYW0g
KGNsb3NlZCB2aWEgY2FuY2VsKTogbG9ja2VkIHNob3VsZCBiZSBmYWxzZSAKLVBBU1MgUmVhZGFi
bGVTdHJlYW0gKGNsb3NlZCB2aWEgY2FuY2VsKTogZ2V0UmVhZGVyKCkgc2hvdWxkIGJlIE9LIAot
UEFTUyBSZWFkYWJsZVN0cmVhbSAoY2xvc2VkIHZpYSBjYW5jZWwpOiBzaG91bGQgYmUgYWJsZSB0
byBhY3F1aXJlIG11bHRpcGxlIHJlYWRlcnMgaWYgdGhleSBhcmUgcmVsZWFzZWQgaW4gc3VjY2Vz
c2lvbiAKLVBBU1MgUmVhZGFibGVTdHJlYW0gKGNsb3NlZCB2aWEgY2FuY2VsKTogc2hvdWxkIG5v
dCBiZSBhYmxlIHRvIGFjcXVpcmUgYSBzZWNvbmQgcmVhZGVyIGlmIHdlIGRvbid0IHJlbGVhc2Ug
dGhlIGZpcnN0IG9uZSAKLVBBU1MgUnVubmluZyB0ZW1wbGF0ZWRSU0Nsb3NlZFJlYWRlciB3aXRo
IFJlYWRhYmxlU3RyZWFtIHJlYWRlciAoY2xvc2VkIHZpYSBjYW5jZWwgYWZ0ZXIgZ2V0dGluZyBy
ZWFkZXIpIAotUEFTUyBSZWFkYWJsZVN0cmVhbSByZWFkZXIgKGNsb3NlZCB2aWEgY2FuY2VsIGFm
dGVyIGdldHRpbmcgcmVhZGVyKTogcmVhZCgpIHNob3VsZCBmdWxmaWxsIHdpdGggeyB2YWx1ZTog
dW5kZWZpbmVkLCBkb25lOiB0cnVlIH0gCi1QQVNTIFJlYWRhYmxlU3RyZWFtIHJlYWRlciAoY2xv
c2VkIHZpYSBjYW5jZWwgYWZ0ZXIgZ2V0dGluZyByZWFkZXIpOiByZWFkKCkgbXVsdGlwbGUgdGlt
ZXMgc2hvdWxkIGZ1bGZpbGwgd2l0aCB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSAK
LVBBU1MgUmVhZGFibGVTdHJlYW0gcmVhZGVyIChjbG9zZWQgdmlhIGNhbmNlbCBhZnRlciBnZXR0
aW5nIHJlYWRlcik6IHJlYWQoKSBzaG91bGQgd29yayB3aGVuIHVzZWQgd2l0aGluIGFub3RoZXIg
cmVhZCgpIGZ1bGZpbGwgY2FsbGJhY2sgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIHJlYWRlciAoY2xv
c2VkIHZpYSBjYW5jZWwgYWZ0ZXIgZ2V0dGluZyByZWFkZXIpOiBjbG9zZWQgc2hvdWxkIGZ1bGZp
bGwgd2l0aCB1bmRlZmluZWQgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIHJlYWRlciAoY2xvc2VkIHZp
YSBjYW5jZWwgYWZ0ZXIgZ2V0dGluZyByZWFkZXIpOiByZWxlYXNpbmcgdGhlIGxvY2sgc2hvdWxk
IGNhdXNlIGNsb3NlZCB0byByZWplY3QgYW5kIGNoYW5nZSBpZGVudGl0eSAKLVBBU1MgUmVhZGFi
bGVTdHJlYW0gcmVhZGVyIChjbG9zZWQgdmlhIGNhbmNlbCBhZnRlciBnZXR0aW5nIHJlYWRlcik6
IGNhbmNlbCgpIHNob3VsZCByZXR1cm4gYSBkaXN0aW5jdCBmdWxmaWxsZWQgcHJvbWlzZSBlYWNo
IHRpbWUgCi1QQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNFcnJvcmVkIHdpdGggUmVhZGFibGVTdHJl
YW0gKGVycm9yZWQgdmlhIGNhbGwgaW4gc3RhcnQpIAotUEFTUyBSZWFkYWJsZVN0cmVhbSAoZXJy
b3JlZCB2aWEgY2FsbCBpbiBzdGFydCk6IGdldFJlYWRlcigpIHNob3VsZCByZXR1cm4gYSByZWFk
ZXIgdGhhdCBhY3RzIGVycm9yZWQgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIChlcnJvcmVkIHZpYSBj
YWxsIGluIHN0YXJ0KTogcmVhZCgpIHR3aWNlIHNob3VsZCBnaXZlIHRoZSBlcnJvciBlYWNoIHRp
bWUgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIChlcnJvcmVkIHZpYSBjYWxsIGluIHN0YXJ0KTogbG9j
a2VkIHNob3VsZCBiZSBmYWxzZSAKLVBBU1MgUnVubmluZyB0ZW1wbGF0ZWRSU0Vycm9yZWRTeW5j
T25seSB3aXRoIFJlYWRhYmxlU3RyZWFtIChlcnJvcmVkIHZpYSBjYWxsIGluIHN0YXJ0KSAKLVBB
U1MgUmVhZGFibGVTdHJlYW0gKGVycm9yZWQgdmlhIGNhbGwgaW4gc3RhcnQpOiBzaG91bGQgYmUg
YWJsZSB0byBvYnRhaW4gYSBzZWNvbmQgcmVhZGVyLCB3aXRoIHRoZSBjb3JyZWN0IGNsb3NlZCBw
cm9taXNlIAotUEFTUyBSZWFkYWJsZVN0cmVhbSAoZXJyb3JlZCB2aWEgY2FsbCBpbiBzdGFydCk6
IHNob3VsZCBub3QgYmUgYWJsZSB0byBvYnRhaW4gYWRkaXRpb25hbCByZWFkZXJzIGlmIHdlIGRv
bid0IHJlbGVhc2UgdGhlIGZpcnN0IGxvY2sgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIChlcnJvcmVk
IHZpYSBjYWxsIGluIHN0YXJ0KTogY2FuY2VsKCkgc2hvdWxkIHJldHVybiBhIGRpc3RpbmN0IHJl
amVjdGVkIHByb21pc2UgZWFjaCB0aW1lIAotUEFTUyBSZWFkYWJsZVN0cmVhbSAoZXJyb3JlZCB2
aWEgY2FsbCBpbiBzdGFydCk6IHJlYWRlciBjYW5jZWwoKSBzaG91bGQgcmV0dXJuIGEgZGlzdGlu
Y3QgcmVqZWN0ZWQgcHJvbWlzZSBlYWNoIHRpbWUgCi1QQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNF
cnJvcmVkIHdpdGggUmVhZGFibGVTdHJlYW0gKGVycm9yZWQgdmlhIHJldHVybmluZyBhIHJlamVj
dGVkIHByb21pc2UgaW4gc3RhcnQpIAotUEFTUyBSZWFkYWJsZVN0cmVhbSAoZXJyb3JlZCB2aWEg
cmV0dXJuaW5nIGEgcmVqZWN0ZWQgcHJvbWlzZSBpbiBzdGFydCk6IGdldFJlYWRlcigpIHNob3Vs
ZCByZXR1cm4gYSByZWFkZXIgdGhhdCBhY3RzIGVycm9yZWQgCi1QQVNTIFJlYWRhYmxlU3RyZWFt
IChlcnJvcmVkIHZpYSByZXR1cm5pbmcgYSByZWplY3RlZCBwcm9taXNlIGluIHN0YXJ0KTogcmVh
ZCgpIHR3aWNlIHNob3VsZCBnaXZlIHRoZSBlcnJvciBlYWNoIHRpbWUgCi1QQVNTIFJlYWRhYmxl
U3RyZWFtIChlcnJvcmVkIHZpYSByZXR1cm5pbmcgYSByZWplY3RlZCBwcm9taXNlIGluIHN0YXJ0
KTogbG9ja2VkIHNob3VsZCBiZSBmYWxzZSAKLVBBU1MgUnVubmluZyB0ZW1wbGF0ZWRSU0Vycm9y
ZWRSZWFkZXIgd2l0aCBSZWFkYWJsZVN0cmVhbSAoZXJyb3JlZCB2aWEgcmV0dXJuaW5nIGEgcmVq
ZWN0ZWQgcHJvbWlzZSBpbiBzdGFydCkgcmVhZGVyIAotUEFTUyBSZWFkYWJsZVN0cmVhbSAoZXJy
b3JlZCB2aWEgcmV0dXJuaW5nIGEgcmVqZWN0ZWQgcHJvbWlzZSBpbiBzdGFydCkgcmVhZGVyOiBj
bG9zZWQgc2hvdWxkIHJlamVjdCB3aXRoIHRoZSBlcnJvciAKLVBBU1MgUmVhZGFibGVTdHJlYW0g
KGVycm9yZWQgdmlhIHJldHVybmluZyBhIHJlamVjdGVkIHByb21pc2UgaW4gc3RhcnQpIHJlYWRl
cjogcmVsZWFzaW5nIHRoZSBsb2NrIHNob3VsZCBjYXVzZSBjbG9zZWQgdG8gcmVqZWN0IGFuZCBj
aGFuZ2UgaWRlbnRpdHkgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIChlcnJvcmVkIHZpYSByZXR1cm5p
bmcgYSByZWplY3RlZCBwcm9taXNlIGluIHN0YXJ0KSByZWFkZXI6IHJlYWQoKSBzaG91bGQgcmVq
ZWN0IHdpdGggdGhlIGVycm9yIAotUEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTRXJyb3JlZFJlYWRl
ciB3aXRoIFJlYWRhYmxlU3RyZWFtIHJlYWRlciAoZXJyb3JlZCBiZWZvcmUgZ2V0dGluZyByZWFk
ZXIpIAotUEFTUyBSZWFkYWJsZVN0cmVhbSByZWFkZXIgKGVycm9yZWQgYmVmb3JlIGdldHRpbmcg
cmVhZGVyKTogY2xvc2VkIHNob3VsZCByZWplY3Qgd2l0aCB0aGUgZXJyb3IgCi1QQVNTIFJlYWRh
YmxlU3RyZWFtIHJlYWRlciAoZXJyb3JlZCBiZWZvcmUgZ2V0dGluZyByZWFkZXIpOiByZWxlYXNp
bmcgdGhlIGxvY2sgc2hvdWxkIGNhdXNlIGNsb3NlZCB0byByZWplY3QgYW5kIGNoYW5nZSBpZGVu
dGl0eSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gcmVhZGVyIChlcnJvcmVkIGJlZm9yZSBnZXR0aW5n
IHJlYWRlcik6IHJlYWQoKSBzaG91bGQgcmVqZWN0IHdpdGggdGhlIGVycm9yIAotUEFTUyBSdW5u
aW5nIHRlbXBsYXRlZFJTRXJyb3JlZFJlYWRlciB3aXRoIFJlYWRhYmxlU3RyZWFtIHJlYWRlciAo
ZXJyb3JlZCBhZnRlciBnZXR0aW5nIHJlYWRlcikgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIHJlYWRl
ciAoZXJyb3JlZCBhZnRlciBnZXR0aW5nIHJlYWRlcik6IGNsb3NlZCBzaG91bGQgcmVqZWN0IHdp
dGggdGhlIGVycm9yIAotUEFTUyBSZWFkYWJsZVN0cmVhbSByZWFkZXIgKGVycm9yZWQgYWZ0ZXIg
Z2V0dGluZyByZWFkZXIpOiByZWxlYXNpbmcgdGhlIGxvY2sgc2hvdWxkIGNhdXNlIGNsb3NlZCB0
byByZWplY3QgYW5kIGNoYW5nZSBpZGVudGl0eSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gcmVhZGVy
IChlcnJvcmVkIGFmdGVyIGdldHRpbmcgcmVhZGVyKTogcmVhZCgpIHNob3VsZCByZWplY3Qgd2l0
aCB0aGUgZXJyb3IgCi1QQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNUd29DaHVua3NPcGVuUmVhZGVy
IHdpdGggUmVhZGFibGVTdHJlYW0gKHR3byBjaHVua3MgZW5xdWV1ZWQsIHN0aWxsIG9wZW4pIHJl
YWRlciAKLVBBU1MgUmVhZGFibGVTdHJlYW0gKHR3byBjaHVua3MgZW5xdWV1ZWQsIHN0aWxsIG9w
ZW4pIHJlYWRlcjogY2FsbGluZyByZWFkKCkgdHdpY2Ugd2l0aG91dCB3YWl0aW5nIHdpbGwgZXZl
bnR1YWxseSBnaXZlIGJvdGggY2h1bmtzIChzZXF1ZW50aWFsKSAKLVBBU1MgUmVhZGFibGVTdHJl
YW0gKHR3byBjaHVua3MgZW5xdWV1ZWQsIHN0aWxsIG9wZW4pIHJlYWRlcjogY2FsbGluZyByZWFk
KCkgdHdpY2Ugd2l0aG91dCB3YWl0aW5nIHdpbGwgZXZlbnR1YWxseSBnaXZlIGJvdGggY2h1bmtz
IChuZXN0ZWQpIAotUEFTUyBSZWFkYWJsZVN0cmVhbSAodHdvIGNodW5rcyBlbnF1ZXVlZCwgc3Rp
bGwgb3BlbikgcmVhZGVyOiByZWFkKCkgc2hvdWxkIHJldHVybiBkaXN0aW5jdCBwcm9taXNlcyBl
YWNoIHRpbWUgCi1QQVNTIFJlYWRhYmxlU3RyZWFtICh0d28gY2h1bmtzIGVucXVldWVkLCBzdGls
bCBvcGVuKSByZWFkZXI6IGNhbmNlbCgpIGFmdGVyIGEgcmVhZCgpIHNob3VsZCBzdGlsbCBnaXZl
IHRoYXQgc2luZ2xlIHJlYWQgcmVzdWx0IAotUEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTVHdvQ2h1
bmtzQ2xvc2VkUmVhZGVyIHdpdGggUmVhZGFibGVTdHJlYW0gKHR3byBjaHVua3MgZW5xdWV1ZWQs
IHRoZW4gY2xvc2VkKSByZWFkZXIgCi1QQVNTIFJlYWRhYmxlU3RyZWFtICh0d28gY2h1bmtzIGVu
cXVldWVkLCB0aGVuIGNsb3NlZCkgcmVhZGVyOiB0aGlyZCByZWFkKCksIHdpdGhvdXQgd2FpdGlu
Zywgc2hvdWxkIGdpdmUgeyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0gKHNlcXVlbnRp
YWwpIAotUEFTUyBSZWFkYWJsZVN0cmVhbSAodHdvIGNodW5rcyBlbnF1ZXVlZCwgdGhlbiBjbG9z
ZWQpIHJlYWRlcjogdGhpcmQgcmVhZCgpLCB3aXRob3V0IHdhaXRpbmcsIHNob3VsZCBnaXZlIHsg
dmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9IChuZXN0ZWQpIAotUEFTUyBSZWFkYWJsZVN0
cmVhbSAodHdvIGNodW5rcyBlbnF1ZXVlZCwgdGhlbiBjbG9zZWQpIHJlYWRlcjogZHJhaW5pbmcg
dGhlIHN0cmVhbSB2aWEgcmVhZCgpIHNob3VsZCBjYXVzZSB0aGUgcmVhZGVyIGNsb3NlZCBwcm9t
aXNlIHRvIGZ1bGZpbGwsIGJ1dCBsb2NrZWQgc3RheXMgdHJ1ZSAKLVBBU1MgUmVhZGFibGVTdHJl
YW0gKHR3byBjaHVua3MgZW5xdWV1ZWQsIHRoZW4gY2xvc2VkKSByZWFkZXI6IHJlbGVhc2luZyB0
aGUgbG9jayBhZnRlciB0aGUgc3RyZWFtIGlzIGNsb3NlZCBzaG91bGQgY2F1c2UgbG9ja2VkIHRv
IGJlY29tZSBmYWxzZSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gKHR3byBjaHVua3MgZW5xdWV1ZWQs
IHRoZW4gY2xvc2VkKSByZWFkZXI6IHJlbGVhc2luZyB0aGUgbG9jayBzaG91bGQgY2F1c2UgZnVy
dGhlciByZWFkKCkgY2FsbHMgdG8gcmVqZWN0IHdpdGggYSBUeXBlRXJyb3IgCi1QQVNTIFJlYWRh
YmxlU3RyZWFtICh0d28gY2h1bmtzIGVucXVldWVkLCB0aGVuIGNsb3NlZCkgcmVhZGVyOiByZWFk
ZXIncyBjbG9zZWQgcHJvcGVydHkgYWx3YXlzIHJldHVybnMgdGhlIHNhbWUgcHJvbWlzZSAKLQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
dHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvdGVtcGxhdGVkLnNlcnZpY2V3b3JrZXIuaHR0cHMuaHRt
bCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9y
ZWFkYWJsZS1zdHJlYW1zL3RlbXBsYXRlZC5zZXJ2aWNld29ya2VyLmh0dHBzLmh0bWwKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAxYjA3MTc1MTYwMjkzNGEyOTgyOWNmZmM5NTE4YTcz
YzMxMzAwNDYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRh
YmxlLXN0cmVhbXMvdGVtcGxhdGVkLnNlcnZpY2V3b3JrZXIuaHR0cHMuaHRtbAorKysgL2Rldi9u
dWxsCkBAIC0xLDEyICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRm
LTgiPgotPHRpdGxlPnRlbXBsYXRlZC5qcyBzZXJ2aWNlIHdvcmtlciB3cmFwcGVyIGZpbGU8L3Rp
dGxlPgotCi08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+
Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+
Ci08c2NyaXB0IHNyYz0iL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9yZXNvdXJjZXMv
dGVzdC1oZWxwZXJzLnN1Yi5qcyI+PC9zY3JpcHQ+Ci0KLTxzY3JpcHQ+Ci0ndXNlIHN0cmljdCc7
Ci1zZXJ2aWNlX3dvcmtlcl90ZXN0KCd0ZW1wbGF0ZWQuanMnLCAnU2VydmljZSB3b3JrZXIgdGVz
dCBzZXR1cCcpOwotPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy90ZW1wbGF0ZWQu
c2hhcmVkd29ya2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3RlbXBsYXRlZC5zaGFyZWR3
b3JrZXItZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwOWQ1ZDI1
MDlkNzg0N2U4Y2Q2ZmU2NjA2YWE2MGNkZDMzYWE0NzRlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3RlbXBsYXRlZC5zaGFyZWR3b3Jr
ZXItZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1DT05TT0xFIE1F
U1NBR0U6IFJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBTaGFyZWRXb3JrZXIK
LQotSGFybmVzcyBFcnJvciAoRkFJTCksIG1lc3NhZ2UgPSBSZWZlcmVuY2VFcnJvcjogQ2FuJ3Qg
ZmluZCB2YXJpYWJsZTogU2hhcmVkV29ya2VyCi0KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMv
dGVtcGxhdGVkLnNoYXJlZHdvcmtlci5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvdGVtcGxhdGVkLnNoYXJl
ZHdvcmtlci5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZjYwZjE4NzhiY2Yw
MzZjN2ZmNzM0YjlhNGJkYjI3NzU4YmFjYzZiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3RlbXBsYXRlZC5zaGFyZWR3b3JrZXIuaHRt
bAorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEg
Y2hhcnNldD0idXRmLTgiPgotPHRpdGxlPnRlbXBsYXRlZC5qcyBzaGFyZWQgd29ya2VyIHdyYXBw
ZXIgZmlsZTwvdGl0bGU+Ci0KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpz
Ij48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0Lmpz
Ij48L3NjcmlwdD4KLQotPHNjcmlwdD4KLSd1c2Ugc3RyaWN0JzsKLWZldGNoX3Rlc3RzX2Zyb21f
d29ya2VyKG5ldyBTaGFyZWRXb3JrZXIoJ3RlbXBsYXRlZC5qcycpKTsKLTwvc2NyaXB0PgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJl
YW1zL3JlYWRhYmxlLXN0cmVhbXMvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy93M2MtaW1w
b3J0LmxvZwppbmRleCAwNDM1MzRlNTBmNDU3M2VhYzFmMjhkNTU0NTVlOTk3MmViZWNlNmJhLi45
YzcxYzQ3MDU4ZTM0MmJkZmNjOTZlOTc1N2IwMDRmZmRkNDQ0ZDEyIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUt
c3RyZWFtcy93M2MtaW1wb3J0LmxvZworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy93M2MtaW1wb3J0LmxvZwpA
QCAtMSw3ICsxLDcgQEAKIFRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVk
IGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgogRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJl
Y3RseSBpbiBXZWJLaXQuCiBJbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQ
VCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3czYy93ZWItcGxhdGZvcm0tdGVzdHMKKwlo
dHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAogCiBUaGVuIHJ1biB0aGUg
VG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAogCkBA
IC0xNCw1OCArMTQsMTcgQEAgUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4
ZXM6CiBOb25lCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIExpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMv
YmFkLXN0cmF0ZWdpZXMuZGVkaWNhdGVkd29ya2VyLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9iYWQtc3Ry
YXRlZ2llcy5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvYmFkLXN0cmF0ZWdpZXMuanMKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFt
cy9iYWQtc3RyYXRlZ2llcy5zZXJ2aWNld29ya2VyLmh0dHBzLmh0bWwKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9i
YWQtc3RyYXRlZ2llcy5zaGFyZWR3b3JrZXIuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2JhZC11bmRlcmx5
aW5nLXNvdXJjZXMuZGVkaWNhdGVkd29ya2VyLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9iYWQtdW5kZXJs
eWluZy1zb3VyY2VzLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9iYWQtdW5kZXJseWluZy1zb3VyY2VzLmpz
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3Jl
YWRhYmxlLXN0cmVhbXMvYmFkLXVuZGVybHlpbmctc291cmNlcy5zZXJ2aWNld29ya2VyLmh0dHBz
Lmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvcmVhZGFibGUtc3RyZWFtcy9iYWQtdW5kZXJseWluZy1zb3VyY2VzLnNoYXJlZHdvcmtlci5o
dG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
L3JlYWRhYmxlLXN0cmVhbXMvYnJhbmQtY2hlY2tzLmRlZGljYXRlZHdvcmtlci5odG1sCi0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxl
LXN0cmVhbXMvYnJhbmQtY2hlY2tzLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9icmFuZC1jaGVja3MuanMK
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVh
ZGFibGUtc3RyZWFtcy9icmFuZC1jaGVja3Muc2VydmljZXdvcmtlci5odHRwcy5odG1sCi0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxl
LXN0cmVhbXMvYnJhbmQtY2hlY2tzLnNoYXJlZHdvcmtlci5odG1sCi0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvY2Fu
Y2VsLmRlZGljYXRlZHdvcmtlci5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvY2FuY2VsLmh0bWwKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUt
c3RyZWFtcy9jYW5jZWwuanMKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9jYW5jZWwuc2VydmljZXdvcmtlci5odHRw
cy5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJl
YW1zL3JlYWRhYmxlLXN0cmVhbXMvY2FuY2VsLnNoYXJlZHdvcmtlci5odG1sCi0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVh
bXMvY291bnQtcXVldWluZy1zdHJhdGVneS1pbnRlZ3JhdGlvbi5kZWRpY2F0ZWR3b3JrZXIuaHRt
bAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9y
ZWFkYWJsZS1zdHJlYW1zL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3ktaW50ZWdyYXRpb24uaHRtbAot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFk
YWJsZS1zdHJlYW1zL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3ktaW50ZWdyYXRpb24uanMKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUt
c3RyZWFtcy9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5LWludGVncmF0aW9uLnNlcnZpY2V3b3JrZXIu
aHR0cHMuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3ktaW50ZWdyYXRp
b24uc2hhcmVkd29ya2VyLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9kZWZhdWx0LXJlYWRlci5kZWRpY2F0
ZWR3b3JrZXIuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2RlZmF1bHQtcmVhZGVyLmh0bWwKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3Ry
ZWFtcy9kZWZhdWx0LXJlYWRlci5qcwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2RlZmF1bHQtcmVhZGVyLnNlcnZp
Y2V3b3JrZXIuaHR0cHMuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2RlZmF1bHQtcmVhZGVyLnNoYXJlZHdv
cmtlci5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
dHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZmxvYXRpbmctcG9pbnQtdG90YWwtcXVldWUtc2l6ZS5k
ZWRpY2F0ZWR3b3JrZXIuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2Zsb2F0aW5nLXBvaW50LXRvdGFsLXF1
ZXVlLXNpemUuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2Zsb2F0aW5nLXBvaW50LXRvdGFsLXF1ZXVlLXNp
emUuanMKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvcmVhZGFibGUtc3RyZWFtcy9mbG9hdGluZy1wb2ludC10b3RhbC1xdWV1ZS1zaXplLnNlcnZp
Y2V3b3JrZXIuaHR0cHMuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2Zsb2F0aW5nLXBvaW50LXRvdGFsLXF1
ZXVlLXNpemUuc2hhcmVkd29ya2VyLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9nYXJiYWdlLWNvbGxlY3Rp
b24uZGVkaWNhdGVkd29ya2VyLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9nYXJiYWdlLWNvbGxlY3Rpb24u
aHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy9yZWFkYWJsZS1zdHJlYW1zL2dhcmJhZ2UtY29sbGVjdGlvbi5qcwotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2dh
cmJhZ2UtY29sbGVjdGlvbi5zZXJ2aWNld29ya2VyLmh0dHBzLmh0bWwKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9n
YXJiYWdlLWNvbGxlY3Rpb24uc2hhcmVkd29ya2VyLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9nZW5lcmFs
LmRlZGljYXRlZHdvcmtlci5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZ2VuZXJhbC5odG1sCi0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0
cmVhbXMvZ2VuZXJhbC5qcwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2dlbmVyYWwuc2VydmljZXdvcmtlci5odHRw
cy5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJl
YW1zL3JlYWRhYmxlLXN0cmVhbXMvZ2VuZXJhbC5zaGFyZWR3b3JrZXIuaHRtbAotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJl
YW1zL3RlZS5kZWRpY2F0ZWR3b3JrZXIuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3RlZS5odG1sCi0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxl
LXN0cmVhbXMvdGVlLmpzCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvdGVlLnNlcnZpY2V3b3JrZXIuaHR0cHMuaHRt
bAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9y
ZWFkYWJsZS1zdHJlYW1zL3RlZS5zaGFyZWR3b3JrZXIuaHRtbAotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3RlbXBs
YXRlZC5kZWRpY2F0ZWR3b3JrZXIuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3RlbXBsYXRlZC5odG1sCi0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRh
YmxlLXN0cmVhbXMvdGVtcGxhdGVkLmpzCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvdGVtcGxhdGVkLnNlcnZpY2V3
b3JrZXIuaHR0cHMuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3RlbXBsYXRlZC5zaGFyZWR3b3JrZXIuaHRt
bAorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9y
ZWFkYWJsZS1zdHJlYW1zL2FzeW5jLWl0ZXJhdG9yLmFueS5qcworL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2JhZC1z
dHJhdGVnaWVzLmFueS5qcworL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2JhZC11bmRlcmx5aW5nLXNvdXJjZXMuYW55
LmpzCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
L3JlYWRhYmxlLXN0cmVhbXMvY2FuY2VsLmFueS5qcworL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2NvbnN0cnVjdG9y
LmFueS5qcworL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3ktaW50ZWdyYXRpb24u
YW55LmpzCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJl
YW1zL3JlYWRhYmxlLXN0cmVhbXMvZGVmYXVsdC1yZWFkZXIuYW55LmpzCisvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMv
ZmxvYXRpbmctcG9pbnQtdG90YWwtcXVldWUtc2l6ZS5hbnkuanMKKy9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9nYXJi
YWdlLWNvbGxlY3Rpb24uYW55LmpzCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZ2VuZXJhbC5hbnkuanMKKy9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUt
c3RyZWFtcy9wYXRjaGVkLWdsb2JhbC5hbnkuanMKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9yZWVudHJhbnQtc3Ry
YXRlZ2llcy5hbnkuanMKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy90ZWUuYW55LmpzCisvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvdGVt
cGxhdGVkLmFueS5qcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3Jlc291cmNlcy9ycy10ZXN0LXRlbXBsYXRlcy5qcyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZXNvdXJj
ZXMvcnMtdGVzdC10ZW1wbGF0ZXMuanMKaW5kZXggZWY2OGUwYWRlNjQ3YmFmNWRkZjAwMjYxNWU0
ZTRlZmRiNWRiYWUwMi4uNzAwYmQ5YzNjYTlmOWU5MmM4NjUxMmJmMzhmOTAzOTQ0YmU5YmRjZSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
dHJlYW1zL3Jlc291cmNlcy9ycy10ZXN0LXRlbXBsYXRlcy5qcworKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVzb3VyY2VzL3JzLXRlc3Qt
dGVtcGxhdGVzLmpzCkBAIC0yMywxMCArMjMsMTMgQEAgc2VsZi50ZW1wbGF0ZWRSU0VtcHR5ID0g
KGxhYmVsLCBmYWN0b3J5KSA9PiB7CiAgIHRlc3QoKCkgPT4gewogICAgIGNvbnN0IHJzID0gZmFj
dG9yeSgpOwogCi0gICAgYXNzZXJ0X3Rocm93cyhuZXcgUmFuZ2VFcnJvcigpLCAoKSA9PiBycy5n
ZXRSZWFkZXIoeyBtb2RlOiAnJyB9KSwgJ2VtcHR5IHN0cmluZyBtb2RlIHNob3VsZCB0aHJvdycp
OwotICAgIGFzc2VydF90aHJvd3MobmV3IFJhbmdlRXJyb3IoKSwgKCkgPT4gcnMuZ2V0UmVhZGVy
KHsgbW9kZTogbnVsbCB9KSwgJ251bGwgbW9kZSBzaG91bGQgdGhyb3cnKTsKLSAgICBhc3NlcnRf
dGhyb3dzKG5ldyBSYW5nZUVycm9yKCksICgpID0+IHJzLmdldFJlYWRlcih7IG1vZGU6ICdhc2Rm
JyB9KSwgJ2FzZGYgbW9kZSBzaG91bGQgdGhyb3cnKTsKLSAgICBhc3NlcnRfdGhyb3dzKG5ldyBU
eXBlRXJyb3IoKSwgKCkgPT4gcnMuZ2V0UmVhZGVyKG51bGwpLCAnbnVsbCBzaG91bGQgdGhyb3cn
KTsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4gcnMuZ2V0UmVhZGVyKHsg
bW9kZTogJycgfSksICdlbXB0eSBzdHJpbmcgbW9kZSBzaG91bGQgdGhyb3cnKTsKKyAgICBhc3Nl
cnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4gcnMuZ2V0UmVhZGVyKHsgbW9kZTogbnVsbCB9
KSwgJ251bGwgbW9kZSBzaG91bGQgdGhyb3cnKTsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVF
cnJvciwgKCkgPT4gcnMuZ2V0UmVhZGVyKHsgbW9kZTogJ2FzZGYnIH0pLCAnYXNkZiBtb2RlIHNo
b3VsZCB0aHJvdycpOworICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiBycy5n
ZXRSZWFkZXIoNSksICc1IHNob3VsZCB0aHJvdycpOworCisgICAgLy8gU2hvdWxkIG5vdCB0aHJv
dworICAgIHJzLmdldFJlYWRlcihudWxsKTsKIAogICB9LCBsYWJlbCArICc6IGNhbGxpbmcgZ2V0
UmVhZGVyIHdpdGggaW52YWxpZCBhcmd1bWVudHMgc2hvdWxkIHRocm93IGFwcHJvcHJpYXRlIGVy
cm9ycycpOwogfTsKQEAgLTgzLDggKzg2LDggQEAgc2VsZi50ZW1wbGF0ZWRSU0Nsb3NlZCA9IChs
YWJlbCwgZmFjdG9yeSkgPT4gewogCiAgICAgcnMuZ2V0UmVhZGVyKCk7CiAKLSAgICBhc3NlcnRf
dGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gcnMuZ2V0UmVhZGVyKCksICdnZXR0aW5nIGEg
c2Vjb25kIHJlYWRlciBzaG91bGQgdGhyb3cnKTsKLSAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBl
RXJyb3IoKSwgKCkgPT4gcnMuZ2V0UmVhZGVyKCksICdnZXR0aW5nIGEgdGhpcmQgcmVhZGVyIHNo
b3VsZCB0aHJvdycpOworICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiBycy5n
ZXRSZWFkZXIoKSwgJ2dldHRpbmcgYSBzZWNvbmQgcmVhZGVyIHNob3VsZCB0aHJvdycpOworICAg
IGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiBycy5nZXRSZWFkZXIoKSwgJ2dldHRp
bmcgYSB0aGlyZCByZWFkZXIgc2hvdWxkIHRocm93Jyk7CiAKICAgfSwgbGFiZWwgKyAnOiBzaG91
bGQgbm90IGJlIGFibGUgdG8gYWNxdWlyZSBhIHNlY29uZCByZWFkZXIgaWYgd2UgZG9uXCd0IHJl
bGVhc2UgdGhlIGZpcnN0IG9uZScpOwogfTsKQEAgLTk4LDggKzEwMSw4IEBAIHNlbGYudGVtcGxh
dGVkUlNFcnJvcmVkID0gKGxhYmVsLCBmYWN0b3J5LCBlcnJvcikgPT4gewogICAgIGNvbnN0IHJl
YWRlciA9IHJzLmdldFJlYWRlcigpOwogCiAgICAgcmV0dXJuIFByb21pc2UuYWxsKFsKLSAgICAg
IHByb21pc2VfcmVqZWN0cyh0LCBlcnJvciwgcmVhZGVyLmNsb3NlZCksCi0gICAgICBwcm9taXNl
X3JlamVjdHModCwgZXJyb3IsIHJlYWRlci5yZWFkKCkpCisgICAgICBwcm9taXNlX3JlamVjdHNf
ZXhhY3RseSh0LCBlcnJvciwgcmVhZGVyLmNsb3NlZCksCisgICAgICBwcm9taXNlX3JlamVjdHNf
ZXhhY3RseSh0LCBlcnJvciwgcmVhZGVyLnJlYWQoKSkKICAgICBdKTsKIAogICB9LCBsYWJlbCAr
ICc6IGdldFJlYWRlcigpIHNob3VsZCByZXR1cm4gYSByZWFkZXIgdGhhdCBhY3RzIGVycm9yZWQn
KTsKQEAgLTExMCw5ICsxMTMsOSBAQCBzZWxmLnRlbXBsYXRlZFJTRXJyb3JlZCA9IChsYWJlbCwg
ZmFjdG9yeSwgZXJyb3IpID0+IHsKICAgICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsK
IAogICAgIHJldHVybiBQcm9taXNlLmFsbChbCi0gICAgICBwcm9taXNlX3JlamVjdHModCwgZXJy
b3IsIHJlYWRlci5yZWFkKCkpLAotICAgICAgcHJvbWlzZV9yZWplY3RzKHQsIGVycm9yLCByZWFk
ZXIucmVhZCgpKSwKLSAgICAgIHByb21pc2VfcmVqZWN0cyh0LCBlcnJvciwgcmVhZGVyLmNsb3Nl
ZCkKKyAgICAgIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yLCByZWFkZXIucmVhZCgp
KSwKKyAgICAgIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yLCByZWFkZXIucmVhZCgp
KSwKKyAgICAgIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yLCByZWFkZXIuY2xvc2Vk
KQogICAgIF0pOwogCiAgIH0sIGxhYmVsICsgJzogcmVhZCgpIHR3aWNlIHNob3VsZCBnaXZlIHRo
ZSBlcnJvciBlYWNoIHRpbWUnKTsKQEAgLTEzMyw3ICsxMzYsNyBAQCBzZWxmLnRlbXBsYXRlZFJT
RXJyb3JlZFN5bmNPbmx5ID0gKGxhYmVsLCBmYWN0b3J5LCBlcnJvcikgPT4gewogICAgIHJzLmdl
dFJlYWRlcigpLnJlbGVhc2VMb2NrKCk7CiAgICAgY29uc3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVy
KCk7IC8vIENhbGxpbmcgZ2V0UmVhZGVyKCkgdHdpY2UgZG9lcyBub3QgdGhyb3cgKHRoZSBzdHJl
YW0gaXMgbm90IGxvY2tlZCkuCiAKLSAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHQsIGVycm9y
LCByZWFkZXIuY2xvc2VkKTsKKyAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwg
ZXJyb3IsIHJlYWRlci5jbG9zZWQpOwogCiAgIH0sIGxhYmVsICsgJzogc2hvdWxkIGJlIGFibGUg
dG8gb2J0YWluIGEgc2Vjb25kIHJlYWRlciwgd2l0aCB0aGUgY29ycmVjdCBjbG9zZWQgcHJvbWlz
ZScpOwogCkBAIC0xNDIsOCArMTQ1LDggQEAgc2VsZi50ZW1wbGF0ZWRSU0Vycm9yZWRTeW5jT25s
eSA9IChsYWJlbCwgZmFjdG9yeSwgZXJyb3IpID0+IHsKICAgICBjb25zdCBycyA9IGZhY3Rvcnko
KTsKICAgICBycy5nZXRSZWFkZXIoKTsKIAotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJv
cigpLCAoKSA9PiBycy5nZXRSZWFkZXIoKSwgJ2dldHRpbmcgYSBzZWNvbmQgcmVhZGVyIHNob3Vs
ZCB0aHJvdyBhIFR5cGVFcnJvcicpOwotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigp
LCAoKSA9PiBycy5nZXRSZWFkZXIoKSwgJ2dldHRpbmcgYSB0aGlyZCByZWFkZXIgc2hvdWxkIHRo
cm93IGEgVHlwZUVycm9yJyk7CisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+
IHJzLmdldFJlYWRlcigpLCAnZ2V0dGluZyBhIHNlY29uZCByZWFkZXIgc2hvdWxkIHRocm93IGEg
VHlwZUVycm9yJyk7CisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IHJzLmdl
dFJlYWRlcigpLCAnZ2V0dGluZyBhIHRoaXJkIHJlYWRlciBzaG91bGQgdGhyb3cgYSBUeXBlRXJy
b3InKTsKIAogICB9LCBsYWJlbCArICc6IHNob3VsZCBub3QgYmUgYWJsZSB0byBvYnRhaW4gYWRk
aXRpb25hbCByZWFkZXJzIGlmIHdlIGRvblwndCByZWxlYXNlIHRoZSBmaXJzdCBsb2NrJyk7CiAK
QEAgLTE1Niw4ICsxNTksOCBAQCBzZWxmLnRlbXBsYXRlZFJTRXJyb3JlZFN5bmNPbmx5ID0gKGxh
YmVsLCBmYWN0b3J5LCBlcnJvcikgPT4gewogICAgIGFzc2VydF9ub3RfZXF1YWxzKGNhbmNlbFBy
b21pc2UxLCBjYW5jZWxQcm9taXNlMiwgJ2NhbmNlbCgpIGNhbGxzIHNob3VsZCByZXR1cm4gZGlz
dGluY3QgcHJvbWlzZXMnKTsKIAogICAgIHJldHVybiBQcm9taXNlLmFsbChbCi0gICAgICBwcm9t
aXNlX3JlamVjdHModCwgZXJyb3IsIGNhbmNlbFByb21pc2UxKSwKLSAgICAgIHByb21pc2VfcmVq
ZWN0cyh0LCBlcnJvciwgY2FuY2VsUHJvbWlzZTIpCisgICAgICBwcm9taXNlX3JlamVjdHNfZXhh
Y3RseSh0LCBlcnJvciwgY2FuY2VsUHJvbWlzZTEpLAorICAgICAgcHJvbWlzZV9yZWplY3RzX2V4
YWN0bHkodCwgZXJyb3IsIGNhbmNlbFByb21pc2UyKQogICAgIF0pOwogCiAgIH0sIGxhYmVsICsg
JzogY2FuY2VsKCkgc2hvdWxkIHJldHVybiBhIGRpc3RpbmN0IHJlamVjdGVkIHByb21pc2UgZWFj
aCB0aW1lJyk7CkBAIC0xNzIsOCArMTc1LDggQEAgc2VsZi50ZW1wbGF0ZWRSU0Vycm9yZWRTeW5j
T25seSA9IChsYWJlbCwgZmFjdG9yeSwgZXJyb3IpID0+IHsKICAgICBhc3NlcnRfbm90X2VxdWFs
cyhjYW5jZWxQcm9taXNlMSwgY2FuY2VsUHJvbWlzZTIsICdjYW5jZWwoKSBjYWxscyBzaG91bGQg
cmV0dXJuIGRpc3RpbmN0IHByb21pc2VzJyk7CiAKICAgICByZXR1cm4gUHJvbWlzZS5hbGwoWwot
ICAgICAgcHJvbWlzZV9yZWplY3RzKHQsIGVycm9yLCBjYW5jZWxQcm9taXNlMSksCi0gICAgICBw
cm9taXNlX3JlamVjdHModCwgZXJyb3IsIGNhbmNlbFByb21pc2UyKQorICAgICAgcHJvbWlzZV9y
ZWplY3RzX2V4YWN0bHkodCwgZXJyb3IsIGNhbmNlbFByb21pc2UxKSwKKyAgICAgIHByb21pc2Vf
cmVqZWN0c19leGFjdGx5KHQsIGVycm9yLCBjYW5jZWxQcm9taXNlMikKICAgICBdKTsKIAogICB9
LCBsYWJlbCArICc6IHJlYWRlciBjYW5jZWwoKSBzaG91bGQgcmV0dXJuIGEgZGlzdGluY3QgcmVq
ZWN0ZWQgcHJvbWlzZSBlYWNoIHRpbWUnKTsKQEAgLTI0NCw3ICsyNDcsNyBAQCBzZWxmLnRlbXBs
YXRlZFJTRW1wdHlSZWFkZXIgPSAobGFiZWwsIGZhY3RvcnkpID0+IHsKICAgdGVzdCgoKSA9PiB7
CiAKICAgICBjb25zdCBzdHJlYW0gPSBmYWN0b3J5KCkuc3RyZWFtOwotICAgIGFzc2VydF90aHJv
d3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBzdHJlYW0uZ2V0UmVhZGVyKCksICdzdHJlYW0uZ2V0
UmVhZGVyKCkgc2hvdWxkIHRocm93IGEgVHlwZUVycm9yJyk7CisgICAgYXNzZXJ0X3Rocm93c19q
cyhUeXBlRXJyb3IsICgpID0+IHN0cmVhbS5nZXRSZWFkZXIoKSwgJ3N0cmVhbS5nZXRSZWFkZXIo
KSBzaG91bGQgdGhyb3cgYSBUeXBlRXJyb3InKTsKIAogICB9LCBsYWJlbCArICc6IGdldFJlYWRl
cigpIGFnYWluIG9uIHRoZSBzdHJlYW0gc2hvdWxkIGZhaWwnKTsKIApAQCAtMjY5LDcgKzI3Miw3
IEBAIHNlbGYudGVtcGxhdGVkUlNFbXB0eVJlYWRlciA9IChsYWJlbCwgZmFjdG9yeSkgPT4gewog
ICAgICAgdC51bnJlYWNoZWRfZnVuYygnY2xvc2VkIHNob3VsZCBub3QgcmVqZWN0JykKICAgICAp
OwogCi0gICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IHJlYWRlci5yZWxl
YXNlTG9jaygpLCAncmVsZWFzZUxvY2sgc2hvdWxkIHRocm93IGEgVHlwZUVycm9yJyk7CisgICAg
YXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IHJlYWRlci5yZWxlYXNlTG9jaygpLCAn
cmVsZWFzZUxvY2sgc2hvdWxkIHRocm93IGEgVHlwZUVycm9yJyk7CiAKICAgICBhc3NlcnRfdHJ1
ZShzdHJlYW0ubG9ja2VkLCAndGhlIHN0cmVhbSBzaG91bGQgc3RpbGwgYmUgbG9ja2VkJyk7CiAK
QEAgLTI4Myw4ICsyODYsOCBAQCBzZWxmLnRlbXBsYXRlZFJTRW1wdHlSZWFkZXIgPSAobGFiZWws
IGZhY3RvcnkpID0+IHsKICAgICByZWFkZXIucmVsZWFzZUxvY2soKTsKIAogICAgIHJldHVybiBQ
cm9taXNlLmFsbChbCi0gICAgICBwcm9taXNlX3JlamVjdHModCwgbmV3IFR5cGVFcnJvcigpLCBy
ZWFkZXIucmVhZCgpKSwKLSAgICAgIHByb21pc2VfcmVqZWN0cyh0LCBuZXcgVHlwZUVycm9yKCks
IHJlYWRlci5yZWFkKCkpCisgICAgICBwcm9taXNlX3JlamVjdHNfanModCwgVHlwZUVycm9yLCBy
ZWFkZXIucmVhZCgpKSwKKyAgICAgIHByb21pc2VfcmVqZWN0c19qcyh0LCBUeXBlRXJyb3IsIHJl
YWRlci5yZWFkKCkpCiAgICAgXSk7CiAKICAgfSwgbGFiZWwgKyAnOiByZWxlYXNpbmcgdGhlIGxv
Y2sgc2hvdWxkIGNhdXNlIGZ1cnRoZXIgcmVhZCgpIGNhbGxzIHRvIHJlamVjdCB3aXRoIGEgVHlw
ZUVycm9yJyk7CkBAIC0yOTksNyArMzAyLDcgQEAgc2VsZi50ZW1wbGF0ZWRSU0VtcHR5UmVhZGVy
ID0gKGxhYmVsLCBmYWN0b3J5KSA9PiB7CiAKICAgICBhc3NlcnRfZXF1YWxzKGNsb3NlZEJlZm9y
ZSwgY2xvc2VkQWZ0ZXIsICd0aGUgY2xvc2VkIHByb21pc2Ugc2hvdWxkIG5vdCBjaGFuZ2UgaWRl
bnRpdHknKTsKIAotICAgIHJldHVybiBwcm9taXNlX3JlamVjdHModCwgbmV3IFR5cGVFcnJvcigp
LCBjbG9zZWRCZWZvcmUpOworICAgIHJldHVybiBwcm9taXNlX3JlamVjdHNfanModCwgVHlwZUVy
cm9yLCBjbG9zZWRCZWZvcmUpOwogCiAgIH0sIGxhYmVsICsgJzogcmVsZWFzaW5nIHRoZSBsb2Nr
IHNob3VsZCBjYXVzZSBjbG9zZWQgY2FsbHMgdG8gcmVqZWN0IHdpdGggYSBUeXBlRXJyb3InKTsK
IApAQCAtMzI4LDcgKzMzMSw3IEBAIHNlbGYudGVtcGxhdGVkUlNFbXB0eVJlYWRlciA9IChsYWJl
bCwgZmFjdG9yeSkgPT4gewogICBwcm9taXNlX3Rlc3QodCA9PiB7CiAKICAgICBjb25zdCBzdHJl
YW0gPSBmYWN0b3J5KCkuc3RyZWFtOwotICAgIHJldHVybiBwcm9taXNlX3JlamVjdHModCwgbmV3
IFR5cGVFcnJvcigpLCBzdHJlYW0uY2FuY2VsKCkpOworICAgIHJldHVybiBwcm9taXNlX3JlamVj
dHNfanModCwgVHlwZUVycm9yLCBzdHJlYW0uY2FuY2VsKCkpOwogCiAgIH0sIGxhYmVsICsgJzog
Y2FuY2VsaW5nIHZpYSB0aGUgc3RyZWFtIHNob3VsZCBmYWlsJyk7CiB9OwpAQCAtMzkxLDcgKzM5
NCw3IEBAIHNlbGYudGVtcGxhdGVkUlNDbG9zZWRSZWFkZXIgPSAobGFiZWwsIGZhY3RvcnkpID0+
IHsKIAogICAgIHJldHVybiBQcm9taXNlLmFsbChbCiAgICAgICBjbG9zZWRCZWZvcmUudGhlbih2
ID0+IGFzc2VydF9lcXVhbHModiwgdW5kZWZpbmVkLCAncmVhZGVyLmNsb3NlZCBhY3F1aXJlZCBi
ZWZvcmUgcmVsZWFzZSBzaG91bGQgZnVsZmlsbCcpKSwKLSAgICAgIHByb21pc2VfcmVqZWN0cyh0
LCBuZXcgVHlwZUVycm9yKCksIGNsb3NlZEFmdGVyKQorICAgICAgcHJvbWlzZV9yZWplY3RzX2pz
KHQsIFR5cGVFcnJvciwgY2xvc2VkQWZ0ZXIpCiAgICAgXSk7CiAKICAgfSwgbGFiZWwgKyAnOiBy
ZWxlYXNpbmcgdGhlIGxvY2sgc2hvdWxkIGNhdXNlIGNsb3NlZCB0byByZWplY3QgYW5kIGNoYW5n
ZSBpZGVudGl0eScpOwpAQCAtNDIxLDcgKzQyNCw3IEBAIHNlbGYudGVtcGxhdGVkUlNFcnJvcmVk
UmVhZGVyID0gKGxhYmVsLCBmYWN0b3J5LCBlcnJvcikgPT4gewogICBwcm9taXNlX3Rlc3QodCA9
PiB7CiAKICAgICBjb25zdCByZWFkZXIgPSBmYWN0b3J5KCkucmVhZGVyOwotICAgIHJldHVybiBw
cm9taXNlX3JlamVjdHModCwgZXJyb3IsIHJlYWRlci5jbG9zZWQpOworICAgIHJldHVybiBwcm9t
aXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvciwgcmVhZGVyLmNsb3NlZCk7CiAKICAgfSwgbGFi
ZWwgKyAnOiBjbG9zZWQgc2hvdWxkIHJlamVjdCB3aXRoIHRoZSBlcnJvcicpOwogCkBAIC00MzAs
MTMgKzQzMywxMyBAQCBzZWxmLnRlbXBsYXRlZFJTRXJyb3JlZFJlYWRlciA9IChsYWJlbCwgZmFj
dG9yeSwgZXJyb3IpID0+IHsKICAgICBjb25zdCByZWFkZXIgPSBmYWN0b3J5KCkucmVhZGVyOwog
ICAgIGNvbnN0IGNsb3NlZEJlZm9yZSA9IHJlYWRlci5jbG9zZWQ7CiAKLSAgICByZXR1cm4gcHJv
bWlzZV9yZWplY3RzKHQsIGVycm9yLCBjbG9zZWRCZWZvcmUpLnRoZW4oKCkgPT4geworICAgIHJl
dHVybiBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvciwgY2xvc2VkQmVmb3JlKS50aGVu
KCgpID0+IHsKICAgICAgIHJlYWRlci5yZWxlYXNlTG9jaygpOwogCiAgICAgICBjb25zdCBjbG9z
ZWRBZnRlciA9IHJlYWRlci5jbG9zZWQ7CiAgICAgICBhc3NlcnRfbm90X2VxdWFscyhjbG9zZWRC
ZWZvcmUsIGNsb3NlZEFmdGVyLCAndGhlIGNsb3NlZCBwcm9taXNlIHNob3VsZCBjaGFuZ2UgaWRl
bnRpdHknKTsKIAotICAgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0LCBuZXcgVHlwZUVycm9y
KCksIGNsb3NlZEFmdGVyKTsKKyAgICAgIHJldHVybiBwcm9taXNlX3JlamVjdHNfanModCwgVHlw
ZUVycm9yLCBjbG9zZWRBZnRlcik7CiAgICAgfSk7CiAKICAgfSwgbGFiZWwgKyAnOiByZWxlYXNp
bmcgdGhlIGxvY2sgc2hvdWxkIGNhdXNlIGNsb3NlZCB0byByZWplY3QgYW5kIGNoYW5nZSBpZGVu
dGl0eScpOwpAQCAtNDQ0LDcgKzQ0Nyw3IEBAIHNlbGYudGVtcGxhdGVkUlNFcnJvcmVkUmVhZGVy
ID0gKGxhYmVsLCBmYWN0b3J5LCBlcnJvcikgPT4gewogICBwcm9taXNlX3Rlc3QodCA9PiB7CiAK
ICAgICBjb25zdCByZWFkZXIgPSBmYWN0b3J5KCkucmVhZGVyOwotICAgIHJldHVybiBwcm9taXNl
X3JlamVjdHModCwgZXJyb3IsIHJlYWRlci5yZWFkKCkpOworICAgIHJldHVybiBwcm9taXNlX3Jl
amVjdHNfZXhhY3RseSh0LCBlcnJvciwgcmVhZGVyLnJlYWQoKSk7CiAKICAgfSwgbGFiZWwgKyAn
OiByZWFkKCkgc2hvdWxkIHJlamVjdCB3aXRoIHRoZSBlcnJvcicpOwogfTsKQEAgLTU5OSw5ICs2
MDIsOSBAQCBzZWxmLnRlbXBsYXRlZFJTVHdvQ2h1bmtzQ2xvc2VkUmVhZGVyID0gZnVuY3Rpb24g
KGxhYmVsLCBmYWN0b3J5LCBjaHVua3MpIHsKICAgICByZWFkZXIucmVsZWFzZUxvY2soKTsKIAog
ICAgIHJldHVybiBQcm9taXNlLmFsbChbCi0gICAgICBwcm9taXNlX3JlamVjdHModCwgbmV3IFR5
cGVFcnJvcigpLCByZWFkZXIucmVhZCgpKSwKLSAgICAgIHByb21pc2VfcmVqZWN0cyh0LCBuZXcg
VHlwZUVycm9yKCksIHJlYWRlci5yZWFkKCkpLAotICAgICAgcHJvbWlzZV9yZWplY3RzKHQsIG5l
dyBUeXBlRXJyb3IoKSwgcmVhZGVyLnJlYWQoKSkKKyAgICAgIHByb21pc2VfcmVqZWN0c19qcyh0
LCBUeXBlRXJyb3IsIHJlYWRlci5yZWFkKCkpLAorICAgICAgcHJvbWlzZV9yZWplY3RzX2pzKHQs
IFR5cGVFcnJvciwgcmVhZGVyLnJlYWQoKSksCisgICAgICBwcm9taXNlX3JlamVjdHNfanModCwg
VHlwZUVycm9yLCByZWFkZXIucmVhZCgpKQogICAgIF0pOwogCiAgIH0sIGxhYmVsICsgJzogcmVs
ZWFzaW5nIHRoZSBsb2NrIHNob3VsZCBjYXVzZSBmdXJ0aGVyIHJlYWQoKSBjYWxscyB0byByZWpl
Y3Qgd2l0aCBhIFR5cGVFcnJvcicpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3Jlc291cmNlcy9ycy11dGlscy5qcyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZXNvdXJj
ZXMvcnMtdXRpbHMuanMKaW5kZXggMGYzMjIyZTIzY2FiN2EwYTZkNjE3NzExNmM5OWVkOTBkZjk1
Nzk3Ny4uYTYyMDEyYzZmMWNhZTg3MzJlMGYxNGM5YjIyNWY3NGE0NmM3YzdkOCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3Jl
c291cmNlcy9ycy11dGlscy5qcworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVzb3VyY2VzL3JzLXV0aWxzLmpzCkBAIC0xMDYsNyArMTA2
LDcgQEAKIAogICAgICAgdGhpcy5fZXhlYyA9IGYgPT4gZigpOwogICAgICAgaWYgKGFzeW5jKSB7
Ci0gICAgICAgIHRoaXMuX2V4ZWMgPSBmID0+IHNldFRpbWVvdXQoZiwgMCk7CisgICAgICAgIHRo
aXMuX2V4ZWMgPSBmID0+IHN0ZXBfdGltZW91dChmLCAwKTsKICAgICAgIH0KICAgICB9CiAKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy9yZXNvdXJjZXMvdGVzdC11dGlscy5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZXNvdXJjZXMvdGVzdC11dGlscy5qcwppbmRleCA4
NzFhYjQ5ZmE4MWRiZjY3NGVmY2RhOTRkZTU3YmJhOTM2ZjRmODdiLi4wNTkzOTgwZTEwNTViNTZi
MzQyMThhMjFkOGY3Njg3MTI5YTg0ZDVhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVzb3VyY2VzL3Rlc3QtdXRpbHMuanMK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
L3Jlc291cmNlcy90ZXN0LXV0aWxzLmpzCkBAIC0zLDcgKzMsNyBAQAogc2VsZi5nZXR0ZXJSZWpl
Y3RzID0gKHQsIG9iaiwgZ2V0dGVyTmFtZSwgdGFyZ2V0KSA9PiB7CiAgIGNvbnN0IGdldHRlciA9
IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqLCBnZXR0ZXJOYW1lKS5nZXQ7CiAK
LSAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0LCBuZXcgVHlwZUVycm9yKCksIGdldHRlci5jYWxs
KHRhcmdldCksIGdldHRlck5hbWUgKyAnIHNob3VsZCByZWplY3Qgd2l0aCBhIFR5cGVFcnJvcicp
OworICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2pzKHQsIFR5cGVFcnJvciwgZ2V0dGVyLmNhbGwo
dGFyZ2V0KSwgZ2V0dGVyTmFtZSArICcgc2hvdWxkIHJlamVjdCB3aXRoIGEgVHlwZUVycm9yJyk7
CiB9OwogCiBzZWxmLmdldHRlclJlamVjdHNGb3JBbGwgPSAodCwgb2JqLCBnZXR0ZXJOYW1lLCB0
YXJnZXRzKSA9PiB7CkBAIC0xMyw3ICsxMyw3IEBAIHNlbGYuZ2V0dGVyUmVqZWN0c0ZvckFsbCA9
ICh0LCBvYmosIGdldHRlck5hbWUsIHRhcmdldHMpID0+IHsKIHNlbGYubWV0aG9kUmVqZWN0cyA9
ICh0LCBvYmosIG1ldGhvZE5hbWUsIHRhcmdldCwgYXJncykgPT4gewogICBjb25zdCBtZXRob2Qg
PSBvYmpbbWV0aG9kTmFtZV07CiAKLSAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0LCBuZXcgVHlw
ZUVycm9yKCksIG1ldGhvZC5hcHBseSh0YXJnZXQsIGFyZ3MpLAorICByZXR1cm4gcHJvbWlzZV9y
ZWplY3RzX2pzKHQsIFR5cGVFcnJvciwgbWV0aG9kLmFwcGx5KHRhcmdldCwgYXJncyksCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgbWV0aG9kTmFtZSArICcgc2hvdWxkIHJlamVjdCB3aXRoIGEg
VHlwZUVycm9yJyk7CiB9OwogCkBAIC0yNCw3ICsyNCw3IEBAIHNlbGYubWV0aG9kUmVqZWN0c0Zv
ckFsbCA9ICh0LCBvYmosIG1ldGhvZE5hbWUsIHRhcmdldHMsIGFyZ3MpID0+IHsKIHNlbGYuZ2V0
dGVyVGhyb3dzID0gKG9iaiwgZ2V0dGVyTmFtZSwgdGFyZ2V0KSA9PiB7CiAgIGNvbnN0IGdldHRl
ciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqLCBnZXR0ZXJOYW1lKS5nZXQ7
CiAKLSAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IGdldHRlci5jYWxsKHRh
cmdldCksIGdldHRlck5hbWUgKyAnIHNob3VsZCB0aHJvdyBhIFR5cGVFcnJvcicpOworICBhc3Nl
cnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4gZ2V0dGVyLmNhbGwodGFyZ2V0KSwgZ2V0dGVy
TmFtZSArICcgc2hvdWxkIHRocm93IGEgVHlwZUVycm9yJyk7CiB9OwogCiBzZWxmLmdldHRlclRo
cm93c0ZvckFsbCA9IChvYmosIGdldHRlck5hbWUsIHRhcmdldHMpID0+IHsKQEAgLTM1LDcgKzM1
LDcgQEAgc2VsZi5tZXRob2RUaHJvd3MgPSAob2JqLCBtZXRob2ROYW1lLCB0YXJnZXQsIGFyZ3Mp
ID0+IHsKICAgY29uc3QgbWV0aG9kID0gb2JqW21ldGhvZE5hbWVdOwogICBhc3NlcnRfZXF1YWxz
KHR5cGVvZiBtZXRob2QsICdmdW5jdGlvbicsIG1ldGhvZE5hbWUgKyAnIHNob3VsZCBleGlzdCcp
OwogCi0gIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBtZXRob2QuYXBwbHko
dGFyZ2V0LCBhcmdzKSwgbWV0aG9kTmFtZSArICcgc2hvdWxkIHRocm93IGEgVHlwZUVycm9yJyk7
CisgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiBtZXRob2QuYXBwbHkodGFyZ2V0
LCBhcmdzKSwgbWV0aG9kTmFtZSArICcgc2hvdWxkIHRocm93IGEgVHlwZUVycm9yJyk7CiB9Owog
CiBzZWxmLm1ldGhvZFRocm93c0ZvckFsbCA9IChvYmosIG1ldGhvZE5hbWUsIHRhcmdldHMsIGFy
Z3MpID0+IHsKQEAgLTQzLDEzICs0MywxNCBAQCBzZWxmLm1ldGhvZFRocm93c0ZvckFsbCA9IChv
YmosIG1ldGhvZE5hbWUsIHRhcmdldHMsIGFyZ3MpID0+IHsKIH07CiAKIHNlbGYuY29uc3RydWN0
b3JUaHJvd3NGb3JBbGwgPSAoY29uc3RydWN0b3IsIGZpcnN0QXJncykgPT4gewotICBmaXJzdEFy
Z3MuZm9yRWFjaChmaXJzdEFyZyA9PiBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkg
PT4gbmV3IGNvbnN0cnVjdG9yKGZpcnN0QXJnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnY29uc3RydWN0b3Igc2hvdWxkIHRocm93IGEgVHlwZUVycm9y
JykpOworICBmaXJzdEFyZ3MuZm9yRWFjaChmaXJzdEFyZyA9PiBhc3NlcnRfdGhyb3dzX2pzKFR5
cGVFcnJvciwgKCkgPT4gbmV3IGNvbnN0cnVjdG9yKGZpcnN0QXJnKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29uc3RydWN0b3Igc2hvdWxkIHRo
cm93IGEgVHlwZUVycm9yJykpOwogfTsKIAogc2VsZi5nYXJiYWdlQ29sbGVjdCA9ICgpID0+IHsK
ICAgaWYgKHNlbGYuZ2MpIHsKICAgICAvLyBVc2UgLS1leHBvc2VfZ2MgZm9yIFY4IChhbmQgTm9k
ZS5qcykKKyAgICAvLyB0byBwYXNzIHRoaXMgZmxhZyBhdCBjaHJvbWUgbGF1bmNoIHVzZTogLS1q
cy1mbGFncz0iLS1leHBvc2UtZ2MiCiAgICAgLy8gRXhwb3NlZCBpbiBTcGlkZXJNb25rZXkgc2hl
bGwgYXMgd2VsbAogICAgIHNlbGYuZ2MoKTsKICAgfSBlbHNlIGlmIChzZWxmLkdDQ29udHJvbGxl
cikgewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL3Jlc291cmNlcy93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZXNvdXJjZXMvdzNjLWltcG9ydC5s
b2cKaW5kZXggNzIyMjBkMTVlZGI3ZWI4ZDUyZDM2NDA1NjI5MWYzZjg2NTlmNGMwNy4uMjAxOWI2
Y2ZkZTQ5MmZkMDJkOTliYTAwNWVhMjUyNTAwZjQwZTNiZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3Jlc291cmNlcy93M2Mt
aW1wb3J0LmxvZworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3N0cmVhbXMvcmVzb3VyY2VzL3czYy1pbXBvcnQubG9nCkBAIC0xLDcgKzEsNyBAQAogVGhl
IHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9z
aXRvcnkuCiBEbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KIElu
c3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczov
L2dpdGh1Yi5jb20vdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cworCWh0dHBzOi8vZ2l0aHViLmNvbS93
ZWItcGxhdGZvcm0tdGVzdHMvd3B0CiAKIFRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9y
dC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0CiAKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy90cmFuc2Zvcm0tc3Ry
ZWFtcy9iYWNrcHJlc3N1cmUuYW55LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy9iYWNrcHJl
c3N1cmUuYW55LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYzA3YzdiOTcyODUxZGQ5YzdkMjY4
ODVmMTU1ODI2OTc5YzVhOTcxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1zL2JhY2tw
cmVzc3VyZS5hbnktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTYgQEAKKworRkFJTCBiYWNrcHJl
c3N1cmUgYWxsb3dzIG5vIHRyYW5zZm9ybXMgd2l0aCBhIGRlZmF1bHQgaWRlbnRpdHkgdHJhbnNm
b3JtIGFuZCBubyByZWFkZXIgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitG
QUlMIGJhY2twcmVzc3VyZSBvbmx5IGFsbG93cyBvbmUgdHJhbnNmb3JtKCkgd2l0aCBhIGlkZW50
aXR5IHRyYW5zZm9ybSB3aXRoIGEgcmVhZGFibGUgSFdNIG9mIDEgYW5kIG5vIHJlYWRlciBDYW4n
dCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgdHJhbnNmb3JtKCkgc2hvdWxk
IGtlZXAgYmVpbmcgY2FsbGVkIGFzIGxvbmcgYXMgdGhlcmUgaXMgbm8gYmFja3ByZXNzdXJlIENh
bid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCB3cml0ZXMgc2hvdWxkIHJl
c29sdmUgYXMgc29vbiBhcyB0cmFuc2Zvcm0gY29tcGxldGVzIENhbid0IGZpbmQgdmFyaWFibGU6
IFRyYW5zZm9ybVN0cmVhbQorRkFJTCBjYWxsaW5nIHB1bGwoKSBiZWZvcmUgdGhlIGZpcnN0IHdy
aXRlKCkgd2l0aCBiYWNrcHJlc3N1cmUgc2hvdWxkIHdvcmsgQ2FuJ3QgZmluZCB2YXJpYWJsZTog
VHJhbnNmb3JtU3RyZWFtCitGQUlMIHRyYW5zZm9ybSgpIHNob3VsZCBiZSBhYmxlIHRvIHJlYWQg
dGhlIGNodW5rIGl0IGp1c3QgZW5xdWV1ZWQgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3Jt
U3RyZWFtCitGQUlMIGJsb2NraW5nIHRyYW5zZm9ybSgpIHNob3VsZCBjYXVzZSBiYWNrcHJlc3N1
cmUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIHdyaXRlci5jbG9z
ZWQgc2hvdWxkIHJlc29sdmUgYWZ0ZXIgcmVhZGFibGUgaXMgY2FuY2VsZWQgZHVyaW5nIHN0YXJ0
IENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCB3cml0ZXIuY2xvc2Vk
IHNob3VsZCByZXNvbHZlIGFmdGVyIHJlYWRhYmxlIGlzIGNhbmNlbGVkIHdpdGggYmFja3ByZXNz
dXJlIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCB3cml0ZXIuY2xv
c2VkIHNob3VsZCByZXNvbHZlIGFmdGVyIHJlYWRhYmxlIGlzIGNhbmNlbGVkIHdpdGggbm8gYmFj
a3ByZXNzdXJlIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCBjYW5j
ZWxsaW5nIHRoZSByZWFkYWJsZSBzaG91bGQgY2F1c2UgYSBwZW5kaW5nIHdyaXRlIHRvIHJlc29s
dmUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIGNhbmNlbGxpbmcg
dGhlIHJlYWRhYmxlIHNpZGUgb2YgYSBUcmFuc2Zvcm1TdHJlYW0gc2hvdWxkIGFib3J0IGFuIGVt
cHR5IHBpcGUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIGNhbmNl
bGxpbmcgdGhlIHJlYWRhYmxlIHNpZGUgb2YgYSBUcmFuc2Zvcm1TdHJlYW0gc2hvdWxkIGFib3J0
IGFuIGVtcHR5IHBpcGUgYWZ0ZXIgc3RhcnR1cCBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zv
cm1TdHJlYW0KK0ZBSUwgY2FuY2VsbGluZyB0aGUgcmVhZGFibGUgc2lkZSBvZiBhIFRyYW5zZm9y
bVN0cmVhbSBzaG91bGQgYWJvcnQgYSBmdWxsIHBpcGUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJh
bnNmb3JtU3RyZWFtCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy9iYWNrcHJlc3N1cmUuYW55
Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvdHJhbnNmb3JtLXN0cmVhbXMvYmFja3ByZXNzdXJlLmFueS5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIz
ODI5MTM1MjhlNjkzYjNhNWQ1NmM2NjBhNDUwNjA5ODBiNTQ4YzMKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvdHJh
bnNmb3JtLXN0cmVhbXMvYmFja3ByZXNzdXJlLmFueS5odG1sCkBAIC0wLDAgKzEgQEAKKzwhLS0g
VGhpcyBmaWxlIGlzIHJlcXVpcmVkIGZvciBXZWJLaXQgdGVzdCBpbmZyYXN0cnVjdHVyZSB0byBy
dW4gdGhlIHRlbXBsYXRlZCB0ZXN0IC0tPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy9iYWNrcHJlc3N1cmUuYW55LmpzIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1z
L2JhY2twcmVzc3VyZS5hbnkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjRjOWQwOTMwZWQyZjI2YWY3NzVmYTBj
YjRiYzU4ZWRhYzdmZmFjZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy9iYWNrcHJl
c3N1cmUuYW55LmpzCkBAIC0wLDAgKzEsMTk1IEBACisvLyBNRVRBOiBnbG9iYWw9d2luZG93LHdv
cmtlcixqc3NoZWxsCisvLyBNRVRBOiBzY3JpcHQ9Li4vcmVzb3VyY2VzL3JlY29yZGluZy1zdHJl
YW1zLmpzCisvLyBNRVRBOiBzY3JpcHQ9Li4vcmVzb3VyY2VzL3Rlc3QtdXRpbHMuanMKKyd1c2Ug
c3RyaWN0JzsKKworY29uc3QgZXJyb3IxID0gbmV3IEVycm9yKCdlcnJvcjEgbWVzc2FnZScpOwor
ZXJyb3IxLm5hbWUgPSAnZXJyb3IxJzsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgY29uc3Qg
dHMgPSByZWNvcmRpbmdUcmFuc2Zvcm1TdHJlYW0oKTsKKyAgY29uc3Qgd3JpdGVyID0gdHMud3Jp
dGFibGUuZ2V0V3JpdGVyKCk7CisgIC8vIFRoaXMgY2FsbCBuZXZlciByZXNvbHZlcy4KKyAgd3Jp
dGVyLndyaXRlKCdhJyk7CisgIHJldHVybiBmbHVzaEFzeW5jRXZlbnRzKCkudGhlbigoKSA9PiB7
CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh0cy5ldmVudHMsIFtdLCAndHJhbnNmb3JtIHNob3Vs
ZCBub3QgYmUgY2FsbGVkJyk7CisgIH0pOworfSwgJ2JhY2twcmVzc3VyZSBhbGxvd3Mgbm8gdHJh
bnNmb3JtcyB3aXRoIGEgZGVmYXVsdCBpZGVudGl0eSB0cmFuc2Zvcm0gYW5kIG5vIHJlYWRlcicp
OworCitwcm9taXNlX3Rlc3QoKCkgPT4geworICBjb25zdCB0cyA9IHJlY29yZGluZ1RyYW5zZm9y
bVN0cmVhbSh7fSwgdW5kZWZpbmVkLCB7IGhpZ2hXYXRlck1hcms6IDEgfSk7CisgIGNvbnN0IHdy
aXRlciA9IHRzLndyaXRhYmxlLmdldFdyaXRlcigpOworICAvLyBUaGlzIGNhbGwgdG8gd3JpdGUo
KSByZXNvbHZlcyBhc3luY2hyb25vdXNseS4KKyAgd3JpdGVyLndyaXRlKCdhJyk7CisgIC8vIFRo
aXMgY2FsbCB0byB3cml0ZSgpIHdhaXRzIGZvciBiYWNrcHJlc3N1cmUgdGhhdCBpcyBuZXZlciBy
ZWxpZXZlZCBhbmQgbmV2ZXIgY2FsbHMgdHJhbnNmb3JtKCkuCisgIHdyaXRlci53cml0ZSgnYicp
OworICByZXR1cm4gZmx1c2hBc3luY0V2ZW50cygpLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9h
cnJheV9lcXVhbHModHMuZXZlbnRzLCBbJ3RyYW5zZm9ybScsICdhJ10sICd0cmFuc2Zvcm0gc2hv
dWxkIGJlIGNhbGxlZCBvbmNlJyk7CisgIH0pOworfSwgJ2JhY2twcmVzc3VyZSBvbmx5IGFsbG93
cyBvbmUgdHJhbnNmb3JtKCkgd2l0aCBhIGlkZW50aXR5IHRyYW5zZm9ybSB3aXRoIGEgcmVhZGFi
bGUgSFdNIG9mIDEgYW5kIG5vIHJlYWRlcicpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworICAv
LyBXaXRob3V0IGEgdHJhbnNmb3JtKCkgaW1wbGVtZW50YXRpb24sIHJlY29yZGluZ1RyYW5zZm9y
bVN0cmVhbSgpIG5ldmVyIGVucXVldWVzIGFueXRoaW5nLgorICBjb25zdCB0cyA9IHJlY29yZGlu
Z1RyYW5zZm9ybVN0cmVhbSh7CisgICAgdHJhbnNmb3JtKCkgeworICAgICAgLy8gRGlzY2FyZCBh
bGwgY2h1bmtzLiBBcyBhIHJlc3VsdCwgdGhlIHJlYWRhYmxlIHNpZGUgaXMgbmV2ZXIgZnVsbCBl
bm91Z2ggdG8gZXhlcnQgYmFja3ByZXNzdXJlIGFuZCB0cmFuc2Zvcm0oKQorICAgICAgLy8ga2Vl
cHMgYmVpbmcgY2FsbGVkLgorICAgIH0KKyAgfSwgdW5kZWZpbmVkLCB7IGhpZ2hXYXRlck1hcms6
IDEgfSk7CisgIGNvbnN0IHdyaXRlciA9IHRzLndyaXRhYmxlLmdldFdyaXRlcigpOworICBjb25z
dCB3cml0ZVByb21pc2VzID0gW107CisgIGZvciAobGV0IGkgPSAwOyBpIDwgNDsgKytpKSB7Cisg
ICAgd3JpdGVQcm9taXNlcy5wdXNoKHdyaXRlci53cml0ZShpKSk7CisgIH0KKyAgcmV0dXJuIFBy
b21pc2UuYWxsKHdyaXRlUHJvbWlzZXMpLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9hcnJheV9l
cXVhbHModHMuZXZlbnRzLCBbJ3RyYW5zZm9ybScsIDAsICd0cmFuc2Zvcm0nLCAxLCAndHJhbnNm
b3JtJywgMiwgJ3RyYW5zZm9ybScsIDNdLAorICAgICAgICAgICAgICAgICAgICAgICAgJ2FsbCA0
IGV2ZW50cyBzaG91bGQgYmUgdHJhbnNmb3JtZWQnKTsKKyAgfSk7Cit9LCAndHJhbnNmb3JtKCkg
c2hvdWxkIGtlZXAgYmVpbmcgY2FsbGVkIGFzIGxvbmcgYXMgdGhlcmUgaXMgbm8gYmFja3ByZXNz
dXJlJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisgIGNvbnN0IHRzID0gbmV3IFRyYW5zZm9y
bVN0cmVhbSh7fSwgdW5kZWZpbmVkLCB7IGhpZ2hXYXRlck1hcms6IDEgfSk7CisgIGNvbnN0IHdy
aXRlciA9IHRzLndyaXRhYmxlLmdldFdyaXRlcigpOworICBjb25zdCByZWFkZXIgPSB0cy5yZWFk
YWJsZS5nZXRSZWFkZXIoKTsKKyAgY29uc3QgZXZlbnRzID0gW107CisgIGNvbnN0IHdyaXRlclBy
b21pc2VzID0gWworICAgIHdyaXRlci53cml0ZSgnYScpLnRoZW4oKCkgPT4gZXZlbnRzLnB1c2go
J2EnKSksCisgICAgd3JpdGVyLndyaXRlKCdiJykudGhlbigoKSA9PiBldmVudHMucHVzaCgnYicp
KSwKKyAgICB3cml0ZXIuY2xvc2UoKS50aGVuKCgpID0+IGV2ZW50cy5wdXNoKCdjbG9zZWQnKSld
OworICByZXR1cm4gZGVsYXkoMCkudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFs
cyhldmVudHMsIFsnYSddLCAndGhlIGZpcnN0IHdyaXRlIHNob3VsZCBoYXZlIHJlc29sdmVkJyk7
CisgICAgcmV0dXJuIHJlYWRlci5yZWFkKCk7CisgIH0pLnRoZW4oKHsgdmFsdWUsIGRvbmUgfSkg
PT4geworICAgIGFzc2VydF9mYWxzZShkb25lLCAnZG9uZSBzaG91bGQgbm90IGJlIHRydWUnKTsK
KyAgICBhc3NlcnRfZXF1YWxzKCdhJywgdmFsdWUsICd2YWx1ZSBzaG91bGQgYmUgImEiJyk7Cisg
ICAgcmV0dXJuIGRlbGF5KDApOworICB9KS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfYXJyYXlf
ZXF1YWxzKGV2ZW50cywgWydhJywgJ2InLCAnY2xvc2VkJ10sICdib3RoIHdyaXRlcyBhbmQgY2xv
c2UoKSBzaG91bGQgaGF2ZSByZXNvbHZlZCcpOworICAgIHJldHVybiByZWFkZXIucmVhZCgpOwor
ICB9KS50aGVuKCh7IHZhbHVlLCBkb25lIH0pID0+IHsKKyAgICBhc3NlcnRfZmFsc2UoZG9uZSwg
J2RvbmUgc2hvdWxkIHN0aWxsIG5vdCBiZSB0cnVlJyk7CisgICAgYXNzZXJ0X2VxdWFscygnYics
IHZhbHVlLCAndmFsdWUgc2hvdWxkIGJlICJiIicpOworICAgIHJldHVybiByZWFkZXIucmVhZCgp
OworICB9KS50aGVuKCh7IGRvbmUgfSkgPT4geworICAgIGFzc2VydF90cnVlKGRvbmUsICdkb25l
IHNob3VsZCBiZSB0cnVlJyk7CisgICAgcmV0dXJuIHdyaXRlclByb21pc2VzOworICB9KTsKK30s
ICd3cml0ZXMgc2hvdWxkIHJlc29sdmUgYXMgc29vbiBhcyB0cmFuc2Zvcm0gY29tcGxldGVzJyk7
CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisgIGNvbnN0IHRzID0gbmV3IFRyYW5zZm9ybVN0cmVh
bSh1bmRlZmluZWQsIHVuZGVmaW5lZCwgeyBoaWdoV2F0ZXJNYXJrOiAwIH0pOworICBjb25zdCB3
cml0ZXIgPSB0cy53cml0YWJsZS5nZXRXcml0ZXIoKTsKKyAgY29uc3QgcmVhZGVyID0gdHMucmVh
ZGFibGUuZ2V0UmVhZGVyKCk7CisgIGNvbnN0IHJlYWRQcm9taXNlID0gcmVhZGVyLnJlYWQoKTsK
KyAgd3JpdGVyLndyaXRlKCdhJyk7CisgIHJldHVybiByZWFkUHJvbWlzZS50aGVuKCh7IHZhbHVl
LCBkb25lIH0pID0+IHsKKyAgICBhc3NlcnRfZmFsc2UoZG9uZSwgJ25vdCBkb25lJyk7CisgICAg
YXNzZXJ0X2VxdWFscyh2YWx1ZSwgJ2EnLCAndmFsdWUgc2hvdWxkIGJlICJhIicpOworICB9KTsK
K30sICdjYWxsaW5nIHB1bGwoKSBiZWZvcmUgdGhlIGZpcnN0IHdyaXRlKCkgd2l0aCBiYWNrcHJl
c3N1cmUgc2hvdWxkIHdvcmsnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgbGV0IHJlYWRl
cjsKKyAgY29uc3QgdHMgPSByZWNvcmRpbmdUcmFuc2Zvcm1TdHJlYW0oeworICAgIHRyYW5zZm9y
bShjaHVuaywgY29udHJvbGxlcikgeworICAgICAgY29udHJvbGxlci5lbnF1ZXVlKGNodW5rKTsK
KyAgICAgIHJldHVybiByZWFkZXIucmVhZCgpOworICAgIH0KKyAgfSwgdW5kZWZpbmVkLCB7IGhp
Z2hXYXRlck1hcms6IDEgfSk7CisgIGNvbnN0IHdyaXRlciA9IHRzLndyaXRhYmxlLmdldFdyaXRl
cigpOworICByZWFkZXIgPSB0cy5yZWFkYWJsZS5nZXRSZWFkZXIoKTsKKyAgcmV0dXJuIHdyaXRl
ci53cml0ZSgnYScpOworfSwgJ3RyYW5zZm9ybSgpIHNob3VsZCBiZSBhYmxlIHRvIHJlYWQgdGhl
IGNodW5rIGl0IGp1c3QgZW5xdWV1ZWQnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgbGV0
IHJlc29sdmVUcmFuc2Zvcm07CisgIGNvbnN0IHRyYW5zZm9ybVByb21pc2UgPSBuZXcgUHJvbWlz
ZShyZXNvbHZlID0+IHsKKyAgICByZXNvbHZlVHJhbnNmb3JtID0gcmVzb2x2ZTsKKyAgfSk7Cisg
IGNvbnN0IHRzID0gcmVjb3JkaW5nVHJhbnNmb3JtU3RyZWFtKHsKKyAgICB0cmFuc2Zvcm0oKSB7
CisgICAgICByZXR1cm4gdHJhbnNmb3JtUHJvbWlzZTsKKyAgICB9CisgIH0sIHVuZGVmaW5lZCwg
bmV3IENvdW50UXVldWluZ1N0cmF0ZWd5KHsgaGlnaFdhdGVyTWFyazogSW5maW5pdHkgfSkpOwor
ICBjb25zdCB3cml0ZXIgPSB0cy53cml0YWJsZS5nZXRXcml0ZXIoKTsKKyAgYXNzZXJ0X2VxdWFs
cyh3cml0ZXIuZGVzaXJlZFNpemUsIDEsICdkZXNpcmVkU2l6ZSBzaG91bGQgYmUgMScpOworICBy
ZXR1cm4gZGVsYXkoMCkudGhlbigoKSA9PiB7CisgICAgd3JpdGVyLndyaXRlKCdhJyk7CisgICAg
YXNzZXJ0X2FycmF5X2VxdWFscyh0cy5ldmVudHMsIFsndHJhbnNmb3JtJywgJ2EnXSk7CisgICAg
YXNzZXJ0X2VxdWFscyh3cml0ZXIuZGVzaXJlZFNpemUsIDAsICdkZXNpcmVkU2l6ZSBzaG91bGQg
YmUgMCcpOworICAgIHJldHVybiBmbHVzaEFzeW5jRXZlbnRzKCk7CisgIH0pLnRoZW4oKCkgPT4g
eworICAgIGFzc2VydF9lcXVhbHMod3JpdGVyLmRlc2lyZWRTaXplLCAwLCAnZGVzaXJlZFNpemUg
c2hvdWxkIHN0aWxsIGJlIDAnKTsKKyAgICByZXNvbHZlVHJhbnNmb3JtKCk7CisgICAgcmV0dXJu
IGRlbGF5KDApOworICB9KS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfZXF1YWxzKHdyaXRlci5k
ZXNpcmVkU2l6ZSwgMSwgJ2Rlc2lyZWRTaXplIHNob3VsZCBiZSAxJyk7CisgIH0pOworfSwgJ2Js
b2NraW5nIHRyYW5zZm9ybSgpIHNob3VsZCBjYXVzZSBiYWNrcHJlc3N1cmUnKTsKKworcHJvbWlz
ZV90ZXN0KHQgPT4geworICBjb25zdCB0cyA9IG5ldyBUcmFuc2Zvcm1TdHJlYW0oKTsKKyAgdHMu
cmVhZGFibGUuY2FuY2VsKGVycm9yMSk7CisgIHJldHVybiBwcm9taXNlX3JlamVjdHNfZXhhY3Rs
eSh0LCBlcnJvcjEsIHRzLndyaXRhYmxlLmdldFdyaXRlcigpLmNsb3NlZCwgJ2Nsb3NlZCBzaG91
bGQgcmVqZWN0Jyk7Cit9LCAnd3JpdGVyLmNsb3NlZCBzaG91bGQgcmVzb2x2ZSBhZnRlciByZWFk
YWJsZSBpcyBjYW5jZWxlZCBkdXJpbmcgc3RhcnQnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4gewor
ICBjb25zdCB0cyA9IG5ldyBUcmFuc2Zvcm1TdHJlYW0oe30sIHVuZGVmaW5lZCwgeyBoaWdoV2F0
ZXJNYXJrOiAwIH0pOworICByZXR1cm4gZGVsYXkoMCkudGhlbigoKSA9PiB7CisgICAgdHMucmVh
ZGFibGUuY2FuY2VsKGVycm9yMSk7CisgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19leGFjdGx5
KHQsIGVycm9yMSwgdHMud3JpdGFibGUuZ2V0V3JpdGVyKCkuY2xvc2VkLCAnY2xvc2VkIHNob3Vs
ZCByZWplY3QnKTsKKyAgfSk7Cit9LCAnd3JpdGVyLmNsb3NlZCBzaG91bGQgcmVzb2x2ZSBhZnRl
ciByZWFkYWJsZSBpcyBjYW5jZWxlZCB3aXRoIGJhY2twcmVzc3VyZScpOworCitwcm9taXNlX3Rl
c3QodCA9PiB7CisgIGNvbnN0IHRzID0gbmV3IFRyYW5zZm9ybVN0cmVhbSh7fSwgdW5kZWZpbmVk
LCB7IGhpZ2hXYXRlck1hcms6IDEgfSk7CisgIHJldHVybiBkZWxheSgwKS50aGVuKCgpID0+IHsK
KyAgICB0cy5yZWFkYWJsZS5jYW5jZWwoZXJyb3IxKTsKKyAgICByZXR1cm4gcHJvbWlzZV9yZWpl
Y3RzX2V4YWN0bHkodCwgZXJyb3IxLCB0cy53cml0YWJsZS5nZXRXcml0ZXIoKS5jbG9zZWQsICdj
bG9zZWQgc2hvdWxkIHJlamVjdCcpOworICB9KTsKK30sICd3cml0ZXIuY2xvc2VkIHNob3VsZCBy
ZXNvbHZlIGFmdGVyIHJlYWRhYmxlIGlzIGNhbmNlbGVkIHdpdGggbm8gYmFja3ByZXNzdXJlJyk7
CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisgIGNvbnN0IHRzID0gbmV3IFRyYW5zZm9ybVN0cmVh
bSh7fSwgdW5kZWZpbmVkLCB7IGhpZ2hXYXRlck1hcms6IDEgfSk7CisgIGNvbnN0IHdyaXRlciA9
IHRzLndyaXRhYmxlLmdldFdyaXRlcigpOworICByZXR1cm4gZGVsYXkoMCkudGhlbigoKSA9PiB7
CisgICAgY29uc3Qgd3JpdGVQcm9taXNlID0gd3JpdGVyLndyaXRlKCdhJyk7CisgICAgdHMucmVh
ZGFibGUuY2FuY2VsKGVycm9yMSk7CisgICAgcmV0dXJuIHdyaXRlUHJvbWlzZTsKKyAgfSk7Cit9
LCAnY2FuY2VsbGluZyB0aGUgcmVhZGFibGUgc2hvdWxkIGNhdXNlIGEgcGVuZGluZyB3cml0ZSB0
byByZXNvbHZlJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgY29uc3QgcnMgPSBuZXcgUmVh
ZGFibGVTdHJlYW0oKTsKKyAgY29uc3QgdHMgPSBuZXcgVHJhbnNmb3JtU3RyZWFtKCk7CisgIGNv
bnN0IHBpcGVQcm9taXNlID0gcnMucGlwZVRvKHRzLndyaXRhYmxlKTsKKyAgdHMucmVhZGFibGUu
Y2FuY2VsKGVycm9yMSk7CisgIHJldHVybiBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJv
cjEsIHBpcGVQcm9taXNlLCAncHJvbWlzZSByZXR1cm5lZCBmcm9tIHBpcGVUbygpIHNob3VsZCBi
ZSByZWplY3RlZCcpOworfSwgJ2NhbmNlbGxpbmcgdGhlIHJlYWRhYmxlIHNpZGUgb2YgYSBUcmFu
c2Zvcm1TdHJlYW0gc2hvdWxkIGFib3J0IGFuIGVtcHR5IHBpcGUnKTsKKworcHJvbWlzZV90ZXN0
KHQgPT4geworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSgpOworICBjb25zdCB0cyA9
IG5ldyBUcmFuc2Zvcm1TdHJlYW0oKTsKKyAgY29uc3QgcGlwZVByb21pc2UgPSBycy5waXBlVG8o
dHMud3JpdGFibGUpOworICByZXR1cm4gZGVsYXkoMCkudGhlbigoKSA9PiB7CisgICAgdHMucmVh
ZGFibGUuY2FuY2VsKGVycm9yMSk7CisgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19leGFjdGx5
KHQsIGVycm9yMSwgcGlwZVByb21pc2UsICdwcm9taXNlIHJldHVybmVkIGZyb20gcGlwZVRvKCkg
c2hvdWxkIGJlIHJlamVjdGVkJyk7CisgIH0pOworfSwgJ2NhbmNlbGxpbmcgdGhlIHJlYWRhYmxl
IHNpZGUgb2YgYSBUcmFuc2Zvcm1TdHJlYW0gc2hvdWxkIGFib3J0IGFuIGVtcHR5IHBpcGUgYWZ0
ZXIgc3RhcnR1cCcpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIGNvbnN0IHJzID0gbmV3IFJl
YWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjb250cm9sbGVyKSB7CisgICAgICBjb250cm9sbGVy
LmVucXVldWUoJ2EnKTsKKyAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYicpOworICAgICAgY29u
dHJvbGxlci5lbnF1ZXVlKCdjJyk7CisgICAgfQorICB9KTsKKyAgY29uc3QgdHMgPSBuZXcgVHJh
bnNmb3JtU3RyZWFtKCk7CisgIGNvbnN0IHBpcGVQcm9taXNlID0gcnMucGlwZVRvKHRzLndyaXRh
YmxlKTsKKyAgLy8gQWxsb3cgZGF0YSB0byBmbG93IGludG8gdGhlIHBpcGUuCisgIHJldHVybiBk
ZWxheSgwKS50aGVuKCgpID0+IHsKKyAgICB0cy5yZWFkYWJsZS5jYW5jZWwoZXJyb3IxKTsKKyAg
ICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCBwaXBlUHJvbWlzZSwg
J3Byb21pc2UgcmV0dXJuZWQgZnJvbSBwaXBlVG8oKSBzaG91bGQgYmUgcmVqZWN0ZWQnKTsKKyAg
fSk7Cit9LCAnY2FuY2VsbGluZyB0aGUgcmVhZGFibGUgc2lkZSBvZiBhIFRyYW5zZm9ybVN0cmVh
bSBzaG91bGQgYWJvcnQgYSBmdWxsIHBpcGUnKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy9i
YWNrcHJlc3N1cmUuYW55Lndvcmtlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvdHJhbnNmb3JtLXN0cmVhbXMvYmFja3By
ZXNzdXJlLmFueS53b3JrZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVjMDdjN2I5NzI4NTFk
ZDljN2QyNjg4NWYxNTU4MjY5NzljNWE5NzEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvdHJhbnNmb3JtLXN0cmVh
bXMvYmFja3ByZXNzdXJlLmFueS53b3JrZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTYgQEAK
KworRkFJTCBiYWNrcHJlc3N1cmUgYWxsb3dzIG5vIHRyYW5zZm9ybXMgd2l0aCBhIGRlZmF1bHQg
aWRlbnRpdHkgdHJhbnNmb3JtIGFuZCBubyByZWFkZXIgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJh
bnNmb3JtU3RyZWFtCitGQUlMIGJhY2twcmVzc3VyZSBvbmx5IGFsbG93cyBvbmUgdHJhbnNmb3Jt
KCkgd2l0aCBhIGlkZW50aXR5IHRyYW5zZm9ybSB3aXRoIGEgcmVhZGFibGUgSFdNIG9mIDEgYW5k
IG5vIHJlYWRlciBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgdHJh
bnNmb3JtKCkgc2hvdWxkIGtlZXAgYmVpbmcgY2FsbGVkIGFzIGxvbmcgYXMgdGhlcmUgaXMgbm8g
YmFja3ByZXNzdXJlIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCB3
cml0ZXMgc2hvdWxkIHJlc29sdmUgYXMgc29vbiBhcyB0cmFuc2Zvcm0gY29tcGxldGVzIENhbid0
IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCBjYWxsaW5nIHB1bGwoKSBiZWZv
cmUgdGhlIGZpcnN0IHdyaXRlKCkgd2l0aCBiYWNrcHJlc3N1cmUgc2hvdWxkIHdvcmsgQ2FuJ3Qg
ZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIHRyYW5zZm9ybSgpIHNob3VsZCBi
ZSBhYmxlIHRvIHJlYWQgdGhlIGNodW5rIGl0IGp1c3QgZW5xdWV1ZWQgQ2FuJ3QgZmluZCB2YXJp
YWJsZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIGJsb2NraW5nIHRyYW5zZm9ybSgpIHNob3VsZCBj
YXVzZSBiYWNrcHJlc3N1cmUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitG
QUlMIHdyaXRlci5jbG9zZWQgc2hvdWxkIHJlc29sdmUgYWZ0ZXIgcmVhZGFibGUgaXMgY2FuY2Vs
ZWQgZHVyaW5nIHN0YXJ0IENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJ
TCB3cml0ZXIuY2xvc2VkIHNob3VsZCByZXNvbHZlIGFmdGVyIHJlYWRhYmxlIGlzIGNhbmNlbGVk
IHdpdGggYmFja3ByZXNzdXJlIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQor
RkFJTCB3cml0ZXIuY2xvc2VkIHNob3VsZCByZXNvbHZlIGFmdGVyIHJlYWRhYmxlIGlzIGNhbmNl
bGVkIHdpdGggbm8gYmFja3ByZXNzdXJlIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0
cmVhbQorRkFJTCBjYW5jZWxsaW5nIHRoZSByZWFkYWJsZSBzaG91bGQgY2F1c2UgYSBwZW5kaW5n
IHdyaXRlIHRvIHJlc29sdmUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitG
QUlMIGNhbmNlbGxpbmcgdGhlIHJlYWRhYmxlIHNpZGUgb2YgYSBUcmFuc2Zvcm1TdHJlYW0gc2hv
dWxkIGFib3J0IGFuIGVtcHR5IHBpcGUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3Ry
ZWFtCitGQUlMIGNhbmNlbGxpbmcgdGhlIHJlYWRhYmxlIHNpZGUgb2YgYSBUcmFuc2Zvcm1TdHJl
YW0gc2hvdWxkIGFib3J0IGFuIGVtcHR5IHBpcGUgYWZ0ZXIgc3RhcnR1cCBDYW4ndCBmaW5kIHZh
cmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgY2FuY2VsbGluZyB0aGUgcmVhZGFibGUgc2lk
ZSBvZiBhIFRyYW5zZm9ybVN0cmVhbSBzaG91bGQgYWJvcnQgYSBmdWxsIHBpcGUgQ2FuJ3QgZmlu
ZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy9i
YWNrcHJlc3N1cmUuYW55Lndvcmtlci5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1zL2JhY2twcmVzc3VyZS5h
bnkud29ya2VyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjM4MjkxMzUyOGU2OTNiM2E1ZDU2YzY2MGE0NTA2
MDk4MGI1NDhjMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy9iYWNrcHJlc3N1cmUu
YW55Lndvcmtlci5odG1sCkBAIC0wLDAgKzEgQEAKKzwhLS0gVGhpcyBmaWxlIGlzIHJlcXVpcmVk
IGZvciBXZWJLaXQgdGVzdCBpbmZyYXN0cnVjdHVyZSB0byBydW4gdGhlIHRlbXBsYXRlZCB0ZXN0
IC0tPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFt
cy9lcnJvcnMuYW55LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy9lcnJvcnMuYW55LWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZDNkNzhmM2RhM2I4N2E5YjZjODZlN2JkZDM5ZmFkMThiMDFh
MDA1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1zL2Vycm9ycy5hbnktZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsNDIgQEAKKworRkFJTCBUcmFuc2Zvcm1TdHJlYW0gZXJyb3JzIHRocm93
biBpbiB0cmFuc2Zvcm0gcHV0IHRoZSB3cml0YWJsZSBhbmQgcmVhZGFibGUgaW4gYW4gZXJyb3Jl
ZCBzdGF0ZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgVHJhbnNm
b3JtU3RyZWFtIGVycm9ycyB0aHJvd24gaW4gZmx1c2ggcHV0IHRoZSB3cml0YWJsZSBhbmQgcmVh
ZGFibGUgaW4gYW4gZXJyb3JlZCBzdGF0ZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1T
dHJlYW0KK0ZBSUwgZXJyb3JlZCBUcmFuc2Zvcm1TdHJlYW0gc2hvdWxkIG5vdCBlbnF1ZXVlIG5l
dyBjaHVua3MgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIFRyYW5z
Zm9ybVN0cmVhbSB0cmFuc2Zvcm1lci5zdGFydCgpIHJlamVjdGVkIHByb21pc2Ugc2hvdWxkIGVy
cm9yIHRoZSBzdHJlYW0gQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitGQUlM
IHdoZW4gY29udHJvbGxlci5lcnJvciBpcyBmb2xsb3dlZCBieSBhIHJlamVjdGlvbiwgdGhlIGVy
cm9yIHJlYXNvbiBzaG91bGQgY29tZSBmcm9tIGNvbnRyb2xsZXIuZXJyb3IgQ2FuJ3QgZmluZCB2
YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIFRyYW5zZm9ybVN0cmVhbSBjb25zdHJ1Y3Rv
ciBzaG91bGQgdGhyb3cgd2hlbiBzdGFydCBkb2VzIGFzc2VydF90aHJvd3NfanM6IGNvbnN0cnVj
dG9yIHNob3VsZCB0aHJvdyBmdW5jdGlvbiAiKCkgPT4gbmV3IFRyYW5zZm9ybVN0cmVhbSh7Cisg
ICAgc3RhcnQoKSB7IHRocm93IG5ldyBVUklFcnJvcignc3RhcnQgdGhyb3duIGVycm9yJyk7IH0s
CisgICAgdHJhbnNmb3JtKCkge30KKyAgfSkiIHRocmV3IG9iamVjdCAiUmVmZXJlbmNlRXJyb3I6
IENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbSIgKCJSZWZlcmVuY2VFcnJvciIp
IGV4cGVjdGVkIGluc3RhbmNlIG9mIGZ1bmN0aW9uICJmdW5jdGlvbiBVUklFcnJvcigpIHsKKyAg
ICBbbmF0aXZlIGNvZGVdCit9IiAoIlVSSUVycm9yIikKK0ZBSUwgd2hlbiBzdHJhdGVneS5zaXpl
IHRocm93cyBpbnNpZGUgc3RhcnQoKSwgdGhlIGNvbnN0cnVjdG9yIHNob3VsZCB0aHJvdyB0aGUg
c2FtZSBlcnJvciBhc3NlcnRfdGhyb3dzX2pzOiBjb25zdHJ1Y3RvciBzaG91bGQgdGhyb3cgdGhl
IHNhbWUgZXJyb3Igc3RyYXRlZ3kuc2l6ZSB0aHJvd3MgZnVuY3Rpb24gIigpID0+IG5ldyBUcmFu
c2Zvcm1TdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGMuZW5xdWV1ZSgnYScpOworICAg
IH0sCisgICAgdHJhbnNmb3JtKCkge30KKyAgfSwgdW5kZWZpbmVkLCBzdHJhdGVneSkiIHRocmV3
IG9iamVjdCAiUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0
cmVhbSIgKCJSZWZlcmVuY2VFcnJvciIpIGV4cGVjdGVkIGluc3RhbmNlIG9mIGZ1bmN0aW9uICJm
dW5jdGlvbiBVUklFcnJvcigpIHsKKyAgICBbbmF0aXZlIGNvZGVdCit9IiAoIlVSSUVycm9yIikK
K0ZBSUwgd2hlbiBzdHJhdGVneS5zaXplIGNhbGxzIGNvbnRyb2xsZXIuZXJyb3IoKSB0aGVuIHRo
cm93cywgdGhlIGNvbnN0cnVjdG9yIHNob3VsZCB0aHJvdyB0aGUgZmlyc3QgZXJyb3IgYXNzZXJ0
X3Rocm93c19qczogdGhlIGZpcnN0IGVycm9yIHNob3VsZCBiZSB0aHJvd24gZnVuY3Rpb24gIigp
ID0+IG5ldyBUcmFuc2Zvcm1TdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGNvbnRyb2xs
ZXIgPSBjOworICAgICAgYy5lbnF1ZXVlKCdhJyk7CisgICAgfSwKKyAgICB0cmFuc2Zvcm0oKSB7
fQorICB9LCB1bmRlZmluZWQsIHN0cmF0ZWd5KSIgdGhyZXcgb2JqZWN0ICJSZWZlcmVuY2VFcnJv
cjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtIiAoIlJlZmVyZW5jZUVycm9y
IikgZXhwZWN0ZWQgaW5zdGFuY2Ugb2YgZnVuY3Rpb24gImZ1bmN0aW9uIFVSSUVycm9yKCkgewor
ICAgIFtuYXRpdmUgY29kZV0KK30iICgiVVJJRXJyb3IiKQorRkFJTCBjYW5jZWxsaW5nIHRoZSBy
ZWFkYWJsZSBzaWRlIHNob3VsZCBlcnJvciB0aGUgd3JpdGFibGUgQ2FuJ3QgZmluZCB2YXJpYWJs
ZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIGl0IHNob3VsZCBiZSBwb3NzaWJsZSB0byBlcnJvciB0
aGUgcmVhZGFibGUgYmV0d2VlbiBjbG9zZSByZXF1ZXN0ZWQgYW5kIGNvbXBsZXRlIENhbid0IGZp
bmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCBhbiBleGNlcHRpb24gZnJvbSB0cmFu
c2Zvcm0oKSBzaG91bGQgZXJyb3IgdGhlIHN0cmVhbSBpZiB0ZXJtaW5hdGUgaGFzIGJlZW4gcmVx
dWVzdGVkIGJ1dCBub3QgY29tcGxldGVkIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0
cmVhbQorRkFJTCBhYm9ydCBzaG91bGQgc2V0IHRoZSBjbG9zZSByZWFzb24gZm9yIHRoZSB3cml0
YWJsZSB3aGVuIGl0IGhhcHBlbnMgYmVmb3JlIGNhbmNlbCBkdXJpbmcgc3RhcnQsIGJ1dCBjYW5j
ZWwgc2hvdWxkIHN0aWxsIHN1Y2NlZWQgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3Ry
ZWFtCitGQUlMIGFib3J0IHNob3VsZCBzZXQgdGhlIGNsb3NlIHJlYXNvbiBmb3IgdGhlIHdyaXRh
YmxlIHdoZW4gaXQgaGFwcGVucyBiZWZvcmUgY2FuY2VsIGR1cmluZyB1bmRlcmx5aW5nIHNpbmsg
d3JpdGUsIGJ1dCBjYW5jZWwgc2hvdWxkIHN0aWxsIHN1Y2NlZWQgQ2FuJ3QgZmluZCB2YXJpYWJs
ZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIGNvbnRyb2xsZXIuZXJyb3IoKSBzaG91bGQgZG8gbm90
aGluZyB0aGUgc2Vjb25kIHRpbWUgaXQgaXMgY2FsbGVkIENhbid0IGZpbmQgdmFyaWFibGU6IFRy
YW5zZm9ybVN0cmVhbQorRkFJTCBjb250cm9sbGVyLmVycm9yKCkgc2hvdWxkIGRvIG5vdGhpbmcg
YWZ0ZXIgcmVhZGFibGUuY2FuY2VsKCkgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3Ry
ZWFtCitGQUlMIGNvbnRyb2xsZXIuZXJyb3IoKSBzaG91bGQgZG8gbm90aGluZyBhZnRlciB3cml0
YWJsZS5hYm9ydCgpIGhhcyBjb21wbGV0ZWQgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3Jt
U3RyZWFtCitGQUlMIGNvbnRyb2xsZXIuZXJyb3IoKSBzaG91bGQgZG8gbm90aGluZyBhZnRlciBh
IHRyYW5zZm9ybWVyIG1ldGhvZCBoYXMgdGhyb3duIGFuIGV4Y2VwdGlvbiBDYW4ndCBmaW5kIHZh
cmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgZXJyb3JpbmcgZHVyaW5nIHdyaXRlIHdpdGgg
YmFja3ByZXNzdXJlIHNob3VsZCByZXN1bHQgaW4gdGhlIHdyaXRlIGZhaWxpbmcgQ2FuJ3QgZmlu
ZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIGEgd3JpdGUoKSB0aGF0IHdhcyB3YWl0
aW5nIGZvciBiYWNrcHJlc3N1cmUgc2hvdWxkIHJlamVjdCBpZiB0aGUgd3JpdGFibGUgaXMgYWJv
cnRlZCBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgdGhlIHJlYWRh
YmxlIHNob3VsZCBiZSBlcnJvcmVkIHdpdGggdGhlIHJlYXNvbiBwYXNzZWQgdG8gdGhlIHdyaXRh
YmxlIGFib3J0KCkgbWV0aG9kIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMvdHJhbnNmb3JtLXN0cmVhbXMvZXJyb3JzLmFueS5odG1sIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1z
L2Vycm9ycy5hbnkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMzgyOTEzNTI4ZTY5M2IzYTVkNTZjNjYwYTQ1
MDYwOTgwYjU0OGMzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1zL2Vycm9ycy5hbnku
aHRtbApAQCAtMCwwICsxIEBACis8IS0tIFRoaXMgZmlsZSBpcyByZXF1aXJlZCBmb3IgV2ViS2l0
IHRlc3QgaW5mcmFzdHJ1Y3R1cmUgdG8gcnVuIHRoZSB0ZW1wbGF0ZWQgdGVzdCAtLT4KXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvdHJhbnNmb3JtLXN0cmVhbXMvZXJyb3JzLmFu
eS5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy90cmFuc2Zvcm0tc3RyZWFtcy9lcnJvcnMuYW55LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJhMjZiMzJiNzVh
NmE0MDdjOWE1ZmQzODE0MzY1ZGE1MWMzYTIxZTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvdHJhbnNmb3JtLXN0
cmVhbXMvZXJyb3JzLmFueS5qcwpAQCAtMCwwICsxLDM0MSBAQAorLy8gTUVUQTogZ2xvYmFsPXdp
bmRvdyx3b3JrZXIsanNzaGVsbAorLy8gTUVUQTogc2NyaXB0PS4uL3Jlc291cmNlcy90ZXN0LXV0
aWxzLmpzCisndXNlIHN0cmljdCc7CisKK2NvbnN0IHRocm93bkVycm9yID0gbmV3IEVycm9yKCdi
YWQgdGhpbmdzIGFyZSBoYXBwZW5pbmchJyk7Cit0aHJvd25FcnJvci5uYW1lID0gJ2Vycm9yMSc7
CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgY29uc3QgdHMgPSBuZXcgVHJhbnNmb3JtU3RyZWFt
KHsKKyAgICB0cmFuc2Zvcm0oKSB7CisgICAgICB0aHJvdyB0aHJvd25FcnJvcjsKKyAgICB9Cisg
IH0pOworCisgIGNvbnN0IHJlYWRlciA9IHRzLnJlYWRhYmxlLmdldFJlYWRlcigpOworCisgIGNv
bnN0IHdyaXRlciA9IHRzLndyaXRhYmxlLmdldFdyaXRlcigpOworCisgIHJldHVybiBQcm9taXNl
LmFsbChbCisgICAgcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgdGhyb3duRXJyb3IsIHdyaXRl
ci53cml0ZSgnYScpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICd3cml0YWJsZVwncyB3
cml0ZSBzaG91bGQgcmVqZWN0IHdpdGggdGhlIHRocm93biBlcnJvcicpLAorICAgIHByb21pc2Vf
cmVqZWN0c19leGFjdGx5KHQsIHRocm93bkVycm9yLCByZWFkZXIucmVhZCgpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICdyZWFkYWJsZVwncyByZWFkIHNob3VsZCByZWplY3Qgd2l0aCB0
aGUgdGhyb3duIGVycm9yJyksCisgICAgcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgdGhyb3du
RXJyb3IsIHJlYWRlci5jbG9zZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlYWRh
YmxlXCdzIGNsb3NlZCBzaG91bGQgYmUgcmVqZWN0ZWQgd2l0aCB0aGUgdGhyb3duIGVycm9yJyks
CisgICAgcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgdGhyb3duRXJyb3IsIHdyaXRlci5jbG9z
ZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3dyaXRhYmxlXCdzIGNsb3NlZCBzaG91
bGQgYmUgcmVqZWN0ZWQgd2l0aCB0aGUgdGhyb3duIGVycm9yJykKKyAgXSk7Cit9LCAnVHJhbnNm
b3JtU3RyZWFtIGVycm9ycyB0aHJvd24gaW4gdHJhbnNmb3JtIHB1dCB0aGUgd3JpdGFibGUgYW5k
IHJlYWRhYmxlIGluIGFuIGVycm9yZWQgc3RhdGUnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4gewor
ICBjb25zdCB0cyA9IG5ldyBUcmFuc2Zvcm1TdHJlYW0oeworICAgIHRyYW5zZm9ybSgpIHsKKyAg
ICB9LAorICAgIGZsdXNoKCkgeworICAgICAgdGhyb3cgdGhyb3duRXJyb3I7CisgICAgfQorICB9
KTsKKworICBjb25zdCByZWFkZXIgPSB0cy5yZWFkYWJsZS5nZXRSZWFkZXIoKTsKKworICBjb25z
dCB3cml0ZXIgPSB0cy53cml0YWJsZS5nZXRXcml0ZXIoKTsKKworICByZXR1cm4gUHJvbWlzZS5h
bGwoWworICAgIHdyaXRlci53cml0ZSgnYScpLAorICAgIHByb21pc2VfcmVqZWN0c19leGFjdGx5
KHQsIHRocm93bkVycm9yLCB3cml0ZXIuY2xvc2UoKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAnd3JpdGFibGVcJ3MgY2xvc2Ugc2hvdWxkIHJlamVjdCB3aXRoIHRoZSB0aHJvd24gZXJy
b3InKSwKKyAgICBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCB0aHJvd25FcnJvciwgcmVhZGVy
LnJlYWQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmVhZGFibGVcJ3MgcmVhZCBz
aG91bGQgcmVqZWN0IHdpdGggdGhlIHRocm93biBlcnJvcicpLAorICAgIHByb21pc2VfcmVqZWN0
c19leGFjdGx5KHQsIHRocm93bkVycm9yLCByZWFkZXIuY2xvc2VkLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICdyZWFkYWJsZVwncyBjbG9zZWQgc2hvdWxkIGJlIHJlamVjdGVkIHdpdGgg
dGhlIHRocm93biBlcnJvcicpLAorICAgIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIHRocm93
bkVycm9yLCB3cml0ZXIuY2xvc2VkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICd3cml0
YWJsZVwncyBjbG9zZWQgc2hvdWxkIGJlIHJlamVjdGVkIHdpdGggdGhlIHRocm93biBlcnJvcicp
CisgIF0pOworfSwgJ1RyYW5zZm9ybVN0cmVhbSBlcnJvcnMgdGhyb3duIGluIGZsdXNoIHB1dCB0
aGUgd3JpdGFibGUgYW5kIHJlYWRhYmxlIGluIGFuIGVycm9yZWQgc3RhdGUnKTsKKwordGVzdCgo
KSA9PiB7CisgIG5ldyBUcmFuc2Zvcm1TdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGMu
ZW5xdWV1ZSgnYScpOworICAgICAgYy5lcnJvcihuZXcgRXJyb3IoJ2dlbmVyaWMgZXJyb3InKSk7
CisgICAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4gYy5lbnF1ZXVlKCdiJyks
ICdlbnF1ZXVlKCkgc2hvdWxkIHRocm93Jyk7CisgICAgfQorICB9KTsKK30sICdlcnJvcmVkIFRy
YW5zZm9ybVN0cmVhbSBzaG91bGQgbm90IGVucXVldWUgbmV3IGNodW5rcycpOworCitwcm9taXNl
X3Rlc3QodCA9PiB7CisgIGNvbnN0IHRzID0gbmV3IFRyYW5zZm9ybVN0cmVhbSh7CisgICAgc3Rh
cnQoKSB7CisgICAgICByZXR1cm4gZmx1c2hBc3luY0V2ZW50cygpLnRoZW4oKCkgPT4geworICAg
ICAgICB0aHJvdyB0aHJvd25FcnJvcjsKKyAgICAgIH0pOworICAgIH0sCisgICAgdHJhbnNmb3Jt
OiB0LnVucmVhY2hlZF9mdW5jKCd0cmFuc2Zvcm0gc2hvdWxkIG5vdCBiZSBjYWxsZWQnKSwKKyAg
ICBmbHVzaDogdC51bnJlYWNoZWRfZnVuYygnZmx1c2ggc2hvdWxkIG5vdCBiZSBjYWxsZWQnKQor
ICB9KTsKKworICBjb25zdCB3cml0ZXIgPSB0cy53cml0YWJsZS5nZXRXcml0ZXIoKTsKKyAgY29u
c3QgcmVhZGVyID0gdHMucmVhZGFibGUuZ2V0UmVhZGVyKCk7CisgIHJldHVybiBQcm9taXNlLmFs
bChbCisgICAgcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgdGhyb3duRXJyb3IsIHdyaXRlci53
cml0ZSgnYScpLCAnd3JpdGVyIHNob3VsZCByZWplY3Qgd2l0aCB0aHJvd25FcnJvcicpLAorICAg
IHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIHRocm93bkVycm9yLCB3cml0ZXIuY2xvc2UoKSwg
J2Nsb3NlKCkgc2hvdWxkIHJlamVjdCB3aXRoIHRocm93bkVycm9yJyksCisgICAgcHJvbWlzZV9y
ZWplY3RzX2V4YWN0bHkodCwgdGhyb3duRXJyb3IsIHJlYWRlci5yZWFkKCksICdyZWFkZXIgc2hv
dWxkIHJlamVjdCB3aXRoIHRocm93bkVycm9yJykKKyAgXSk7Cit9LCAnVHJhbnNmb3JtU3RyZWFt
IHRyYW5zZm9ybWVyLnN0YXJ0KCkgcmVqZWN0ZWQgcHJvbWlzZSBzaG91bGQgZXJyb3IgdGhlIHN0
cmVhbScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIGNvbnN0IGNvbnRyb2xsZXJFcnJvciA9
IG5ldyBFcnJvcignc3RhcnQgZmFpbHVyZScpOworICBjb250cm9sbGVyRXJyb3IubmFtZSA9ICdj
b250cm9sbGVyRXJyb3InOworICBjb25zdCB0cyA9IG5ldyBUcmFuc2Zvcm1TdHJlYW0oeworICAg
IHN0YXJ0KGMpIHsKKyAgICAgIHJldHVybiBmbHVzaEFzeW5jRXZlbnRzKCkKKyAgICAgICAgLnRo
ZW4oKCkgPT4geworICAgICAgICAgIGMuZXJyb3IoY29udHJvbGxlckVycm9yKTsKKyAgICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoJ2lnbm9yZWQgZXJyb3InKTsKKyAgICAgICAgfSk7CisgICAgfSwK
KyAgICB0cmFuc2Zvcm06IHQudW5yZWFjaGVkX2Z1bmMoJ3RyYW5zZm9ybSBzaG91bGQgbmV2ZXIg
YmUgY2FsbGVkIGlmIHN0YXJ0KCkgZmFpbHMnKSwKKyAgICBmbHVzaDogdC51bnJlYWNoZWRfZnVu
YygnZmx1c2ggc2hvdWxkIG5ldmVyIGJlIGNhbGxlZCBpZiBzdGFydCgpIGZhaWxzJykKKyAgfSk7
CisKKyAgY29uc3Qgd3JpdGVyID0gdHMud3JpdGFibGUuZ2V0V3JpdGVyKCk7CisgIGNvbnN0IHJl
YWRlciA9IHRzLnJlYWRhYmxlLmdldFJlYWRlcigpOworICByZXR1cm4gUHJvbWlzZS5hbGwoWwor
ICAgIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGNvbnRyb2xsZXJFcnJvciwgd3JpdGVyLndy
aXRlKCdhJyksICd3cml0ZXIgc2hvdWxkIHJlamVjdCB3aXRoIGNvbnRyb2xsZXJFcnJvcicpLAor
ICAgIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGNvbnRyb2xsZXJFcnJvciwgd3JpdGVyLmNs
b3NlKCksICdjbG9zZSBzaG91bGQgcmVqZWN0IHdpdGggc2FtZSBlcnJvcicpLAorICAgIHByb21p
c2VfcmVqZWN0c19leGFjdGx5KHQsIGNvbnRyb2xsZXJFcnJvciwgcmVhZGVyLnJlYWQoKSwgJ3Jl
YWRlciBzaG91bGQgcmVqZWN0IHdpdGggc2FtZSBlcnJvcicpCisgIF0pOworfSwgJ3doZW4gY29u
dHJvbGxlci5lcnJvciBpcyBmb2xsb3dlZCBieSBhIHJlamVjdGlvbiwgdGhlIGVycm9yIHJlYXNv
biBzaG91bGQgY29tZSBmcm9tIGNvbnRyb2xsZXIuZXJyb3InKTsKKwordGVzdCgoKSA9PiB7Cisg
IGFzc2VydF90aHJvd3NfanMoVVJJRXJyb3IsICgpID0+IG5ldyBUcmFuc2Zvcm1TdHJlYW0oewor
ICAgIHN0YXJ0KCkgeyB0aHJvdyBuZXcgVVJJRXJyb3IoJ3N0YXJ0IHRocm93biBlcnJvcicpOyB9
LAorICAgIHRyYW5zZm9ybSgpIHt9CisgIH0pLCAnY29uc3RydWN0b3Igc2hvdWxkIHRocm93Jyk7
Cit9LCAnVHJhbnNmb3JtU3RyZWFtIGNvbnN0cnVjdG9yIHNob3VsZCB0aHJvdyB3aGVuIHN0YXJ0
IGRvZXMnKTsKKwordGVzdCgoKSA9PiB7CisgIGNvbnN0IHN0cmF0ZWd5ID0geworICAgIHNpemUo
KSB7IHRocm93IG5ldyBVUklFcnJvcignc2l6ZSB0aHJvd24gZXJyb3InKTsgfQorICB9OworCisg
IGFzc2VydF90aHJvd3NfanMoVVJJRXJyb3IsICgpID0+IG5ldyBUcmFuc2Zvcm1TdHJlYW0oewor
ICAgIHN0YXJ0KGMpIHsKKyAgICAgIGMuZW5xdWV1ZSgnYScpOworICAgIH0sCisgICAgdHJhbnNm
b3JtKCkge30KKyAgfSwgdW5kZWZpbmVkLCBzdHJhdGVneSksICdjb25zdHJ1Y3RvciBzaG91bGQg
dGhyb3cgdGhlIHNhbWUgZXJyb3Igc3RyYXRlZ3kuc2l6ZSB0aHJvd3MnKTsKK30sICd3aGVuIHN0
cmF0ZWd5LnNpemUgdGhyb3dzIGluc2lkZSBzdGFydCgpLCB0aGUgY29uc3RydWN0b3Igc2hvdWxk
IHRocm93IHRoZSBzYW1lIGVycm9yJyk7CisKK3Rlc3QoKCkgPT4geworICBjb25zdCBjb250cm9s
bGVyRXJyb3IgPSBuZXcgVVJJRXJyb3IoJ2NvbnRyb2xsZXIuZXJyb3InKTsKKworICBsZXQgY29u
dHJvbGxlcjsKKyAgY29uc3Qgc3RyYXRlZ3kgPSB7CisgICAgc2l6ZSgpIHsKKyAgICAgIGNvbnRy
b2xsZXIuZXJyb3IoY29udHJvbGxlckVycm9yKTsKKyAgICAgIHRocm93IG5ldyBFcnJvcigncmVk
dW5kYW50IGVycm9yJyk7CisgICAgfQorICB9OworCisgIGFzc2VydF90aHJvd3NfanMoVVJJRXJy
b3IsICgpID0+IG5ldyBUcmFuc2Zvcm1TdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGNv
bnRyb2xsZXIgPSBjOworICAgICAgYy5lbnF1ZXVlKCdhJyk7CisgICAgfSwKKyAgICB0cmFuc2Zv
cm0oKSB7fQorICB9LCB1bmRlZmluZWQsIHN0cmF0ZWd5KSwgJ3RoZSBmaXJzdCBlcnJvciBzaG91
bGQgYmUgdGhyb3duJyk7Cit9LCAnd2hlbiBzdHJhdGVneS5zaXplIGNhbGxzIGNvbnRyb2xsZXIu
ZXJyb3IoKSB0aGVuIHRocm93cywgdGhlIGNvbnN0cnVjdG9yIHNob3VsZCB0aHJvdyB0aGUgZmly
c3QgZXJyb3InKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBjb25zdCB0cyA9IG5ldyBUcmFu
c2Zvcm1TdHJlYW0oKTsKKyAgY29uc3Qgd3JpdGVyID0gdHMud3JpdGFibGUuZ2V0V3JpdGVyKCk7
CisgIGNvbnN0IGNsb3NlZFByb21pc2UgPSB3cml0ZXIuY2xvc2VkOworICByZXR1cm4gUHJvbWlz
ZS5hbGwoWworICAgIHRzLnJlYWRhYmxlLmNhbmNlbCh0aHJvd25FcnJvciksCisgICAgcHJvbWlz
ZV9yZWplY3RzX2V4YWN0bHkodCwgdGhyb3duRXJyb3IsIGNsb3NlZFByb21pc2UsICdjbG9zZWQg
c2hvdWxkIHRocm93IGEgVHlwZUVycm9yJykKKyAgXSk7Cit9LCAnY2FuY2VsbGluZyB0aGUgcmVh
ZGFibGUgc2lkZSBzaG91bGQgZXJyb3IgdGhlIHdyaXRhYmxlJyk7CisKK3Byb21pc2VfdGVzdCh0
ID0+IHsKKyAgbGV0IGNvbnRyb2xsZXI7CisgIGNvbnN0IHRzID0gbmV3IFRyYW5zZm9ybVN0cmVh
bSh7CisgICAgc3RhcnQoYykgeworICAgICAgY29udHJvbGxlciA9IGM7CisgICAgfQorICB9KTsK
KyAgY29uc3Qgd3JpdGVyID0gdHMud3JpdGFibGUuZ2V0V3JpdGVyKCk7CisgIGNvbnN0IHJlYWRl
ciA9IHRzLnJlYWRhYmxlLmdldFJlYWRlcigpOworICBjb25zdCB3cml0ZVByb21pc2UgPSB3cml0
ZXIud3JpdGUoJ2EnKTsKKyAgY29uc3QgY2xvc2VQcm9taXNlID0gd3JpdGVyLmNsb3NlKCk7Cisg
IGNvbnRyb2xsZXIuZXJyb3IodGhyb3duRXJyb3IpOworICByZXR1cm4gUHJvbWlzZS5hbGwoWwor
ICAgIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIHRocm93bkVycm9yLCByZWFkZXIuY2xvc2Vk
LCAncmVhZGVyLmNsb3NlZCBzaG91bGQgcmVqZWN0JyksCisgICAgcHJvbWlzZV9yZWplY3RzX2V4
YWN0bHkodCwgdGhyb3duRXJyb3IsIHdyaXRlUHJvbWlzZSwgJ3dyaXRlUHJvbWlzZSBzaG91bGQg
cmVqZWN0JyksCisgICAgcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgdGhyb3duRXJyb3IsIGNs
b3NlUHJvbWlzZSwgJ2Nsb3NlUHJvbWlzZSBzaG91bGQgcmVqZWN0JyldKTsKK30sICdpdCBzaG91
bGQgYmUgcG9zc2libGUgdG8gZXJyb3IgdGhlIHJlYWRhYmxlIGJldHdlZW4gY2xvc2UgcmVxdWVz
dGVkIGFuZCBjb21wbGV0ZScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIGNvbnN0IHRzID0g
bmV3IFRyYW5zZm9ybVN0cmVhbSh7CisgICAgdHJhbnNmb3JtKGNodW5rLCBjb250cm9sbGVyKSB7
CisgICAgICBjb250cm9sbGVyLmVucXVldWUoY2h1bmspOworICAgICAgY29udHJvbGxlci50ZXJt
aW5hdGUoKTsKKyAgICAgIHRocm93IHRocm93bkVycm9yOworICAgIH0KKyAgfSwgdW5kZWZpbmVk
LCB7IGhpZ2hXYXRlck1hcms6IDEgfSk7CisgIGNvbnN0IHdyaXRlUHJvbWlzZSA9IHRzLndyaXRh
YmxlLmdldFdyaXRlcigpLndyaXRlKCdhJyk7CisgIGNvbnN0IGNsb3NlZFByb21pc2UgPSB0cy5y
ZWFkYWJsZS5nZXRSZWFkZXIoKS5jbG9zZWQ7CisgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAg
cHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgdGhyb3duRXJyb3IsIHdyaXRlUHJvbWlzZSwgJ3dy
aXRlKCkgc2hvdWxkIHJlamVjdCcpLAorICAgIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIHRo
cm93bkVycm9yLCBjbG9zZWRQcm9taXNlLCAncmVhZGVyLmNsb3NlZCBzaG91bGQgcmVqZWN0JykK
KyAgXSk7Cit9LCAnYW4gZXhjZXB0aW9uIGZyb20gdHJhbnNmb3JtKCkgc2hvdWxkIGVycm9yIHRo
ZSBzdHJlYW0gaWYgdGVybWluYXRlIGhhcyBiZWVuIHJlcXVlc3RlZCBidXQgbm90IGNvbXBsZXRl
ZCcpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIGNvbnN0IHRzID0gbmV3IFRyYW5zZm9ybVN0
cmVhbSgpOworICBjb25zdCB3cml0ZXIgPSB0cy53cml0YWJsZS5nZXRXcml0ZXIoKTsKKyAgLy8g
VGhlIG1pY3JvdGFzayBmb2xsb3dpbmcgdHJhbnNmb3JtZXIuc3RhcnQoKSBoYXNuJ3QgY29tcGxl
dGVkIHlldCwgc28gdGhlIGFib3J0IGlzIHF1ZXVlZCBhbmQgbm90IG5vdGlmaWVkIHRvIHRoZQor
ICAvLyBUcmFuc2Zvcm1TdHJlYW0geWV0LgorICBjb25zdCBhYm9ydFByb21pc2UgPSB3cml0ZXIu
YWJvcnQodGhyb3duRXJyb3IpOworICBjb25zdCBjYW5jZWxQcm9taXNlID0gdHMucmVhZGFibGUu
Y2FuY2VsKG5ldyBFcnJvcignY2FuY2VsIHJlYXNvbicpKTsKKyAgcmV0dXJuIFByb21pc2UuYWxs
KFsKKyAgICBhYm9ydFByb21pc2UsCisgICAgY2FuY2VsUHJvbWlzZSwKKyAgICBwcm9taXNlX3Jl
amVjdHNfZXhhY3RseSh0LCB0aHJvd25FcnJvciwgd3JpdGVyLmNsb3NlZCwgJ3dyaXRlci5jbG9z
ZWQgc2hvdWxkIHJlamVjdCB3aXRoIHRocm93bkVycm9yJyldKTsKK30sICdhYm9ydCBzaG91bGQg
c2V0IHRoZSBjbG9zZSByZWFzb24gZm9yIHRoZSB3cml0YWJsZSB3aGVuIGl0IGhhcHBlbnMgYmVm
b3JlIGNhbmNlbCBkdXJpbmcgc3RhcnQsIGJ1dCBjYW5jZWwgc2hvdWxkICcgKworICAgICAgICAg
ICAgICdzdGlsbCBzdWNjZWVkJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgbGV0IHJlc29s
dmVUcmFuc2Zvcm07CisgIGNvbnN0IHRyYW5zZm9ybVByb21pc2UgPSBuZXcgUHJvbWlzZShyZXNv
bHZlID0+IHsKKyAgICByZXNvbHZlVHJhbnNmb3JtID0gcmVzb2x2ZTsKKyAgfSk7CisgIGNvbnN0
IHRzID0gbmV3IFRyYW5zZm9ybVN0cmVhbSh7CisgICAgdHJhbnNmb3JtKCkgeworICAgICAgcmV0
dXJuIHRyYW5zZm9ybVByb21pc2U7CisgICAgfQorICB9LCB1bmRlZmluZWQsIHsgaGlnaFdhdGVy
TWFyazogMiB9KTsKKyAgY29uc3Qgd3JpdGVyID0gdHMud3JpdGFibGUuZ2V0V3JpdGVyKCk7Cisg
IHJldHVybiBkZWxheSgwKS50aGVuKCgpID0+IHsKKyAgICBjb25zdCB3cml0ZVByb21pc2UgPSB3
cml0ZXIud3JpdGUoKTsKKyAgICBjb25zdCBhYm9ydFByb21pc2UgPSB3cml0ZXIuYWJvcnQodGhy
b3duRXJyb3IpOworICAgIGNvbnN0IGNhbmNlbFByb21pc2UgPSB0cy5yZWFkYWJsZS5jYW5jZWwo
bmV3IEVycm9yKCdjYW5jZWwgcmVhc29uJykpOworICAgIHJlc29sdmVUcmFuc2Zvcm0oKTsKKyAg
ICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAgICAgd3JpdGVQcm9taXNlLAorICAgICAgYWJvcnRQ
cm9taXNlLAorICAgICAgY2FuY2VsUHJvbWlzZSwKKyAgICAgIHByb21pc2VfcmVqZWN0c19leGFj
dGx5KHQsIHRocm93bkVycm9yLCB3cml0ZXIuY2xvc2VkLCAnd3JpdGVyLmNsb3NlZCBzaG91bGQg
cmVqZWN0IHdpdGggdGhyb3duRXJyb3InKV0pOworICB9KTsKK30sICdhYm9ydCBzaG91bGQgc2V0
IHRoZSBjbG9zZSByZWFzb24gZm9yIHRoZSB3cml0YWJsZSB3aGVuIGl0IGhhcHBlbnMgYmVmb3Jl
IGNhbmNlbCBkdXJpbmcgdW5kZXJseWluZyBzaW5rIHdyaXRlLCAnICsKKyAgICAgICAgICAgICAn
YnV0IGNhbmNlbCBzaG91bGQgc3RpbGwgc3VjY2VlZCcpOworCitjb25zdCBpZ25vcmVkRXJyb3Ig
PSBuZXcgRXJyb3IoJ2lnbm9yZWRFcnJvcicpOworaWdub3JlZEVycm9yLm5hbWUgPSAnaWdub3Jl
ZEVycm9yJzsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBjb25zdCB0cyA9IG5ldyBUcmFuc2Zv
cm1TdHJlYW0oeworICAgIHN0YXJ0KGNvbnRyb2xsZXIpIHsKKyAgICAgIGNvbnRyb2xsZXIuZXJy
b3IodGhyb3duRXJyb3IpOworICAgICAgY29udHJvbGxlci5lcnJvcihpZ25vcmVkRXJyb3IpOwor
ICAgIH0KKyAgfSk7CisgIHJldHVybiBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCB0aHJvd25F
cnJvciwgdHMud3JpdGFibGUuYWJvcnQoKSwgJ2Fib3J0KCkgc2hvdWxkIHJlamVjdCB3aXRoIHRo
cm93bkVycm9yJyk7Cit9LCAnY29udHJvbGxlci5lcnJvcigpIHNob3VsZCBkbyBub3RoaW5nIHRo
ZSBzZWNvbmQgdGltZSBpdCBpcyBjYWxsZWQnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBs
ZXQgY29udHJvbGxlcjsKKyAgY29uc3QgdHMgPSBuZXcgVHJhbnNmb3JtU3RyZWFtKHsKKyAgICBz
dGFydChjKSB7CisgICAgICBjb250cm9sbGVyID0gYzsKKyAgICB9CisgIH0pOworICBjb25zdCBj
YW5jZWxQcm9taXNlID0gdHMucmVhZGFibGUuY2FuY2VsKHRocm93bkVycm9yKTsKKyAgY29udHJv
bGxlci5lcnJvcihpZ25vcmVkRXJyb3IpOworICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAgIGNh
bmNlbFByb21pc2UsCisgICAgcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgdGhyb3duRXJyb3Is
IHRzLndyaXRhYmxlLmdldFdyaXRlcigpLmNsb3NlZCwgJ2Nsb3NlZCBzaG91bGQgcmVqZWN0IHdp
dGggdGhyb3duRXJyb3InKQorICBdKTsKK30sICdjb250cm9sbGVyLmVycm9yKCkgc2hvdWxkIGRv
IG5vdGhpbmcgYWZ0ZXIgcmVhZGFibGUuY2FuY2VsKCknKTsKKworcHJvbWlzZV90ZXN0KHQgPT4g
eworICBsZXQgY29udHJvbGxlcjsKKyAgY29uc3QgdHMgPSBuZXcgVHJhbnNmb3JtU3RyZWFtKHsK
KyAgICBzdGFydChjKSB7CisgICAgICBjb250cm9sbGVyID0gYzsKKyAgICB9CisgIH0pOworICBy
ZXR1cm4gdHMud3JpdGFibGUuYWJvcnQodGhyb3duRXJyb3IpLnRoZW4oKCkgPT4geworICAgIGNv
bnRyb2xsZXIuZXJyb3IoaWdub3JlZEVycm9yKTsKKyAgICByZXR1cm4gcHJvbWlzZV9yZWplY3Rz
X2V4YWN0bHkodCwgdGhyb3duRXJyb3IsIHRzLndyaXRhYmxlLmdldFdyaXRlcigpLmNsb3NlZCwg
J2Nsb3NlZCBzaG91bGQgcmVqZWN0IHdpdGggdGhyb3duRXJyb3InKTsKKyAgfSk7Cit9LCAnY29u
dHJvbGxlci5lcnJvcigpIHNob3VsZCBkbyBub3RoaW5nIGFmdGVyIHdyaXRhYmxlLmFib3J0KCkg
aGFzIGNvbXBsZXRlZCcpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIGxldCBjb250cm9sbGVy
OworICBjb25zdCB0cyA9IG5ldyBUcmFuc2Zvcm1TdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAg
ICAgIGNvbnRyb2xsZXIgPSBjOworICAgIH0sCisgICAgdHJhbnNmb3JtKCkgeworICAgICAgdGhy
b3cgdGhyb3duRXJyb3I7CisgICAgfQorICB9LCB1bmRlZmluZWQsIHsgaGlnaFdhdGVyTWFyazog
SW5maW5pdHkgfSk7CisgIGNvbnN0IHdyaXRlciA9IHRzLndyaXRhYmxlLmdldFdyaXRlcigpOwor
ICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgdGhyb3duRXJyb3IsIHdyaXRlci53
cml0ZSgpLCAnd3JpdGUoKSBzaG91bGQgcmVqZWN0JykudGhlbigoKSA9PiB7CisgICAgY29udHJv
bGxlci5lcnJvcigpOworICAgIHJldHVybiBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCB0aHJv
d25FcnJvciwgd3JpdGVyLmNsb3NlZCwgJ2Nsb3NlZCBzaG91bGQgcmVqZWN0IHdpdGggdGhyb3du
RXJyb3InKTsKKyAgfSk7Cit9LCAnY29udHJvbGxlci5lcnJvcigpIHNob3VsZCBkbyBub3RoaW5n
IGFmdGVyIGEgdHJhbnNmb3JtZXIgbWV0aG9kIGhhcyB0aHJvd24gYW4gZXhjZXB0aW9uJyk7CisK
K3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgbGV0IGNvbnRyb2xsZXI7CisgIGxldCBjYWxscyA9IDA7
CisgIGNvbnN0IHRzID0gbmV3IFRyYW5zZm9ybVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAg
ICAgY29udHJvbGxlciA9IGM7CisgICAgfSwKKyAgICB0cmFuc2Zvcm0oKSB7CisgICAgICArK2Nh
bGxzOworICAgIH0KKyAgfSwgdW5kZWZpbmVkLCB7IGhpZ2hXYXRlck1hcms6IDEgfSk7CisgIHJl
dHVybiBkZWxheSgwKS50aGVuKCgpID0+IHsKKyAgICAvLyBDcmVhdGUgYmFja3ByZXNzdXJlLgor
ICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYScpOworICAgIGNvbnN0IHdyaXRlciA9IHRzLndyaXRh
YmxlLmdldFdyaXRlcigpOworICAgIC8vIHRyYW5zZm9ybSgpIHdpbGwgbm90IGJlIGNhbGxlZCB1
bnRpbCBiYWNrcHJlc3N1cmUgaXMgcmVsaWV2ZWQuCisgICAgY29uc3Qgd3JpdGVQcm9taXNlID0g
d3JpdGVyLndyaXRlKCdiJyk7CisgICAgYXNzZXJ0X2VxdWFscyhjYWxscywgMCwgJ3RyYW5zZm9y
bSgpIHNob3VsZCBub3QgaGF2ZSBiZWVuIGNhbGxlZCcpOworICAgIGNvbnRyb2xsZXIuZXJyb3Io
dGhyb3duRXJyb3IpOworICAgIC8vIE5vdyBiYWNrcHJlc3N1cmUgaGFzIGJlZW4gcmVsaWV2ZWQg
YW5kIHRoZSB3cml0ZSBjYW4gcHJvY2VlZC4KKyAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2V4
YWN0bHkodCwgdGhyb3duRXJyb3IsIHdyaXRlUHJvbWlzZSwgJ3dyaXRlKCkgc2hvdWxkIHJlamVj
dCcpLnRoZW4oKCkgPT4geworICAgICAgYXNzZXJ0X2VxdWFscyhjYWxscywgMCwgJ3RyYW5zZm9y
bSgpIHNob3VsZCBub3QgYmUgY2FsbGVkJyk7CisgICAgfSk7CisgIH0pOworfSwgJ2Vycm9yaW5n
IGR1cmluZyB3cml0ZSB3aXRoIGJhY2twcmVzc3VyZSBzaG91bGQgcmVzdWx0IGluIHRoZSB3cml0
ZSBmYWlsaW5nJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgY29uc3QgdHMgPSBuZXcgVHJh
bnNmb3JtU3RyZWFtKHt9LCB1bmRlZmluZWQsIHsgaGlnaFdhdGVyTWFyazogMCB9KTsKKyAgcmV0
dXJuIGRlbGF5KDApLnRoZW4oKCkgPT4geworICAgIGNvbnN0IHdyaXRlciA9IHRzLndyaXRhYmxl
LmdldFdyaXRlcigpOworICAgIC8vIHdyaXRlIHNob3VsZCBzdGFydCBzeW5jaHJvbm91c2x5Cisg
ICAgY29uc3Qgd3JpdGVQcm9taXNlID0gd3JpdGVyLndyaXRlKDApOworICAgIC8vIFRoZSB1bmRl
cmx5aW5nIHNpbmsncyBhYm9ydCgpIGlzIG5vdCBjYWxsZWQgdW50aWwgdGhlIHdyaXRlKCkgY29t
cGxldGVzLgorICAgIGNvbnN0IGFib3J0UHJvbWlzZSA9IHdyaXRlci5hYm9ydCh0aHJvd25FcnJv
cik7CisgICAgLy8gUGVyZm9ybSBhIHJlYWQgdG8gcmVsaWV2ZSBiYWNrcHJlc3N1cmUgYW5kIHBl
cm1pdCB0aGUgd3JpdGUoKSB0byBjb21wbGV0ZS4KKyAgICBjb25zdCByZWFkUHJvbWlzZSA9IHRz
LnJlYWRhYmxlLmdldFJlYWRlcigpLnJlYWQoKTsKKyAgICByZXR1cm4gUHJvbWlzZS5hbGwoWwor
ICAgICAgcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgdGhyb3duRXJyb3IsIHJlYWRQcm9taXNl
LCAncmVhZCgpIHNob3VsZCByZWplY3QnKSwKKyAgICAgIHByb21pc2VfcmVqZWN0c19leGFjdGx5
KHQsIHRocm93bkVycm9yLCB3cml0ZVByb21pc2UsICd3cml0ZSgpIHNob3VsZCByZWplY3QnKSwK
KyAgICAgIGFib3J0UHJvbWlzZQorICAgIF0pOworICB9KTsKK30sICdhIHdyaXRlKCkgdGhhdCB3
YXMgd2FpdGluZyBmb3IgYmFja3ByZXNzdXJlIHNob3VsZCByZWplY3QgaWYgdGhlIHdyaXRhYmxl
IGlzIGFib3J0ZWQnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBjb25zdCB0cyA9IG5ldyBU
cmFuc2Zvcm1TdHJlYW0oKTsKKyAgdHMud3JpdGFibGUuYWJvcnQodGhyb3duRXJyb3IpOworICBj
b25zdCByZWFkZXIgPSB0cy5yZWFkYWJsZS5nZXRSZWFkZXIoKTsKKyAgcmV0dXJuIHByb21pc2Vf
cmVqZWN0c19leGFjdGx5KHQsIHRocm93bkVycm9yLCByZWFkZXIucmVhZCgpLCAncmVhZCgpIHNo
b3VsZCByZWplY3Qgd2l0aCB0aHJvd25FcnJvcicpOworfSwgJ3RoZSByZWFkYWJsZSBzaG91bGQg
YmUgZXJyb3JlZCB3aXRoIHRoZSByZWFzb24gcGFzc2VkIHRvIHRoZSB3cml0YWJsZSBhYm9ydCgp
IG1ldGhvZCcpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1zL2Vycm9ycy5hbnkud29ya2VyLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy9lcnJvcnMuYW55Lndvcmtlci1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmQzZDc4ZjNkYTNiODdhOWI2Yzg2ZTdiZGQzOWZhZDE4YjAxYTAwNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy9lcnJvcnMuYW55Lndvcmtlci1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSw0MiBAQAorCitGQUlMIFRyYW5zZm9ybVN0cmVhbSBlcnJvcnMgdGhyb3du
IGluIHRyYW5zZm9ybSBwdXQgdGhlIHdyaXRhYmxlIGFuZCByZWFkYWJsZSBpbiBhbiBlcnJvcmVk
IHN0YXRlIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCBUcmFuc2Zv
cm1TdHJlYW0gZXJyb3JzIHRocm93biBpbiBmbHVzaCBwdXQgdGhlIHdyaXRhYmxlIGFuZCByZWFk
YWJsZSBpbiBhbiBlcnJvcmVkIHN0YXRlIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0
cmVhbQorRkFJTCBlcnJvcmVkIFRyYW5zZm9ybVN0cmVhbSBzaG91bGQgbm90IGVucXVldWUgbmV3
IGNodW5rcyBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgVHJhbnNm
b3JtU3RyZWFtIHRyYW5zZm9ybWVyLnN0YXJ0KCkgcmVqZWN0ZWQgcHJvbWlzZSBzaG91bGQgZXJy
b3IgdGhlIHN0cmVhbSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwg
d2hlbiBjb250cm9sbGVyLmVycm9yIGlzIGZvbGxvd2VkIGJ5IGEgcmVqZWN0aW9uLCB0aGUgZXJy
b3IgcmVhc29uIHNob3VsZCBjb21lIGZyb20gY29udHJvbGxlci5lcnJvciBDYW4ndCBmaW5kIHZh
cmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgVHJhbnNmb3JtU3RyZWFtIGNvbnN0cnVjdG9y
IHNob3VsZCB0aHJvdyB3aGVuIHN0YXJ0IGRvZXMgYXNzZXJ0X3Rocm93c19qczogY29uc3RydWN0
b3Igc2hvdWxkIHRocm93IGZ1bmN0aW9uICIoKSA9PiBuZXcgVHJhbnNmb3JtU3RyZWFtKHsKKyAg
ICBzdGFydCgpIHsgdGhyb3cgbmV3IFVSSUVycm9yKCdzdGFydCB0aHJvd24gZXJyb3InKTsgfSwK
KyAgICB0cmFuc2Zvcm0oKSB7fQorICB9KSIgdGhyZXcgb2JqZWN0ICJSZWZlcmVuY2VFcnJvcjog
Q2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtIiAoIlJlZmVyZW5jZUVycm9yIikg
ZXhwZWN0ZWQgaW5zdGFuY2Ugb2YgZnVuY3Rpb24gImZ1bmN0aW9uIFVSSUVycm9yKCkgeworICAg
IFtuYXRpdmUgY29kZV0KK30iICgiVVJJRXJyb3IiKQorRkFJTCB3aGVuIHN0cmF0ZWd5LnNpemUg
dGhyb3dzIGluc2lkZSBzdGFydCgpLCB0aGUgY29uc3RydWN0b3Igc2hvdWxkIHRocm93IHRoZSBz
YW1lIGVycm9yIGFzc2VydF90aHJvd3NfanM6IGNvbnN0cnVjdG9yIHNob3VsZCB0aHJvdyB0aGUg
c2FtZSBlcnJvciBzdHJhdGVneS5zaXplIHRocm93cyBmdW5jdGlvbiAiKCkgPT4gbmV3IFRyYW5z
Zm9ybVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgYy5lbnF1ZXVlKCdhJyk7CisgICAg
fSwKKyAgICB0cmFuc2Zvcm0oKSB7fQorICB9LCB1bmRlZmluZWQsIHN0cmF0ZWd5KSIgdGhyZXcg
b2JqZWN0ICJSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3Ry
ZWFtIiAoIlJlZmVyZW5jZUVycm9yIikgZXhwZWN0ZWQgaW5zdGFuY2Ugb2YgZnVuY3Rpb24gImZ1
bmN0aW9uIFVSSUVycm9yKCkgeworICAgIFtuYXRpdmUgY29kZV0KK30iICgiVVJJRXJyb3IiKQor
RkFJTCB3aGVuIHN0cmF0ZWd5LnNpemUgY2FsbHMgY29udHJvbGxlci5lcnJvcigpIHRoZW4gdGhy
b3dzLCB0aGUgY29uc3RydWN0b3Igc2hvdWxkIHRocm93IHRoZSBmaXJzdCBlcnJvciBhc3NlcnRf
dGhyb3dzX2pzOiB0aGUgZmlyc3QgZXJyb3Igc2hvdWxkIGJlIHRocm93biBmdW5jdGlvbiAiKCkg
PT4gbmV3IFRyYW5zZm9ybVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgY29udHJvbGxl
ciA9IGM7CisgICAgICBjLmVucXVldWUoJ2EnKTsKKyAgICB9LAorICAgIHRyYW5zZm9ybSgpIHt9
CisgIH0sIHVuZGVmaW5lZCwgc3RyYXRlZ3kpIiB0aHJldyBvYmplY3QgIlJlZmVyZW5jZUVycm9y
OiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0iICgiUmVmZXJlbmNlRXJyb3Ii
KSBleHBlY3RlZCBpbnN0YW5jZSBvZiBmdW5jdGlvbiAiZnVuY3Rpb24gVVJJRXJyb3IoKSB7Cisg
ICAgW25hdGl2ZSBjb2RlXQorfSIgKCJVUklFcnJvciIpCitGQUlMIGNhbmNlbGxpbmcgdGhlIHJl
YWRhYmxlIHNpZGUgc2hvdWxkIGVycm9yIHRoZSB3cml0YWJsZSBDYW4ndCBmaW5kIHZhcmlhYmxl
OiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgaXQgc2hvdWxkIGJlIHBvc3NpYmxlIHRvIGVycm9yIHRo
ZSByZWFkYWJsZSBiZXR3ZWVuIGNsb3NlIHJlcXVlc3RlZCBhbmQgY29tcGxldGUgQ2FuJ3QgZmlu
ZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIGFuIGV4Y2VwdGlvbiBmcm9tIHRyYW5z
Zm9ybSgpIHNob3VsZCBlcnJvciB0aGUgc3RyZWFtIGlmIHRlcm1pbmF0ZSBoYXMgYmVlbiByZXF1
ZXN0ZWQgYnV0IG5vdCBjb21wbGV0ZWQgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3Ry
ZWFtCitGQUlMIGFib3J0IHNob3VsZCBzZXQgdGhlIGNsb3NlIHJlYXNvbiBmb3IgdGhlIHdyaXRh
YmxlIHdoZW4gaXQgaGFwcGVucyBiZWZvcmUgY2FuY2VsIGR1cmluZyBzdGFydCwgYnV0IGNhbmNl
bCBzaG91bGQgc3RpbGwgc3VjY2VlZCBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJl
YW0KK0ZBSUwgYWJvcnQgc2hvdWxkIHNldCB0aGUgY2xvc2UgcmVhc29uIGZvciB0aGUgd3JpdGFi
bGUgd2hlbiBpdCBoYXBwZW5zIGJlZm9yZSBjYW5jZWwgZHVyaW5nIHVuZGVybHlpbmcgc2luayB3
cml0ZSwgYnV0IGNhbmNlbCBzaG91bGQgc3RpbGwgc3VjY2VlZCBDYW4ndCBmaW5kIHZhcmlhYmxl
OiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgY29udHJvbGxlci5lcnJvcigpIHNob3VsZCBkbyBub3Ro
aW5nIHRoZSBzZWNvbmQgdGltZSBpdCBpcyBjYWxsZWQgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJh
bnNmb3JtU3RyZWFtCitGQUlMIGNvbnRyb2xsZXIuZXJyb3IoKSBzaG91bGQgZG8gbm90aGluZyBh
ZnRlciByZWFkYWJsZS5jYW5jZWwoKSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJl
YW0KK0ZBSUwgY29udHJvbGxlci5lcnJvcigpIHNob3VsZCBkbyBub3RoaW5nIGFmdGVyIHdyaXRh
YmxlLmFib3J0KCkgaGFzIGNvbXBsZXRlZCBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1T
dHJlYW0KK0ZBSUwgY29udHJvbGxlci5lcnJvcigpIHNob3VsZCBkbyBub3RoaW5nIGFmdGVyIGEg
dHJhbnNmb3JtZXIgbWV0aG9kIGhhcyB0aHJvd24gYW4gZXhjZXB0aW9uIENhbid0IGZpbmQgdmFy
aWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCBlcnJvcmluZyBkdXJpbmcgd3JpdGUgd2l0aCBi
YWNrcHJlc3N1cmUgc2hvdWxkIHJlc3VsdCBpbiB0aGUgd3JpdGUgZmFpbGluZyBDYW4ndCBmaW5k
IHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgYSB3cml0ZSgpIHRoYXQgd2FzIHdhaXRp
bmcgZm9yIGJhY2twcmVzc3VyZSBzaG91bGQgcmVqZWN0IGlmIHRoZSB3cml0YWJsZSBpcyBhYm9y
dGVkIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCB0aGUgcmVhZGFi
bGUgc2hvdWxkIGJlIGVycm9yZWQgd2l0aCB0aGUgcmVhc29uIHBhc3NlZCB0byB0aGUgd3JpdGFi
bGUgYWJvcnQoKSBtZXRob2QgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy9lcnJvcnMuYW55Lndvcmtlci5odG1sIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1z
dHJlYW1zL2Vycm9ycy5hbnkud29ya2VyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjM4MjkxMzUyOGU2OTNi
M2E1ZDU2YzY2MGE0NTA2MDk4MGI1NDhjMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFt
cy9lcnJvcnMuYW55Lndvcmtlci5odG1sCkBAIC0wLDAgKzEgQEAKKzwhLS0gVGhpcyBmaWxlIGlz
IHJlcXVpcmVkIGZvciBXZWJLaXQgdGVzdCBpbmZyYXN0cnVjdHVyZSB0byBydW4gdGhlIHRlbXBs
YXRlZCB0ZXN0IC0tPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy90cmFuc2Zv
cm0tc3RyZWFtcy9mbHVzaC5hbnktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1zL2ZsdXNoLmFu
eS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGRlZDgxYTE5NDQ1ZjdhYWIwMmJlNjQ0MTE5NmFl
ODgzM2M0NzUzYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy9mbHVzaC5hbnktZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsNyBAQAorCitGQUlMIFRyYW5zZm9ybVN0cmVhbSBmbHVzaCBp
cyBjYWxsZWQgaW1tZWRpYXRlbHkgd2hlbiB0aGUgd3JpdGFibGUgaXMgY2xvc2VkLCBpZiBubyB3
cml0ZXMgYXJlIHF1ZXVlZCBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZB
SUwgVHJhbnNmb3JtU3RyZWFtIGZsdXNoIGlzIGNhbGxlZCBhZnRlciBhbGwgcXVldWVkIHdyaXRl
cyBmaW5pc2gsIG9uY2UgdGhlIHdyaXRhYmxlIGlzIGNsb3NlZCBDYW4ndCBmaW5kIHZhcmlhYmxl
OiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgVHJhbnNmb3JtU3RyZWFtIGZsdXNoIGdldHMgYSBjaGFu
Y2UgdG8gZW5xdWV1ZSBtb3JlIGludG8gdGhlIHJlYWRhYmxlIENhbid0IGZpbmQgdmFyaWFibGU6
IFRyYW5zZm9ybVN0cmVhbQorRkFJTCBUcmFuc2Zvcm1TdHJlYW0gZmx1c2ggZ2V0cyBhIGNoYW5j
ZSB0byBlbnF1ZXVlIG1vcmUgaW50byB0aGUgcmVhZGFibGUsIGFuZCBjYW4gdGhlbiBhc3luYyBj
bG9zZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgZXJyb3IoKSBk
dXJpbmcgZmx1c2ggc2hvdWxkIGNhdXNlIHdyaXRlci5jbG9zZSgpIHRvIHJlamVjdCBDYW4ndCBm
aW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1z
L2ZsdXNoLmFueS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1zL2ZsdXNoLmFueS5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjIzODI5MTM1MjhlNjkzYjNhNWQ1NmM2NjBhNDUwNjA5ODBiNTQ4YzMKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
dHJhbnNmb3JtLXN0cmVhbXMvZmx1c2guYW55Lmh0bWwKQEAgLTAsMCArMSBAQAorPCEtLSBUaGlz
IGZpbGUgaXMgcmVxdWlyZWQgZm9yIFdlYktpdCB0ZXN0IGluZnJhc3RydWN0dXJlIHRvIHJ1biB0
aGUgdGVtcGxhdGVkIHRlc3QgLS0+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
L3RyYW5zZm9ybS1zdHJlYW1zL2ZsdXNoLmFueS5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy9mbHVzaC5hbnku
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZGM0MDUzMjk1N2IxNGJkZGIyNTU1MTMzZGJkMWIyZjQyNDg0NmQ4OQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy9mbHVzaC5hbnkuanMKQEAgLTAsMCArMSwx
MzEgQEAKKy8vIE1FVEE6IGdsb2JhbD13aW5kb3csd29ya2VyLGpzc2hlbGwKKy8vIE1FVEE6IHNj
cmlwdD0uLi9yZXNvdXJjZXMvdGVzdC11dGlscy5qcworJ3VzZSBzdHJpY3QnOworCitwcm9taXNl
X3Rlc3QoKCkgPT4geworICBsZXQgZmx1c2hDYWxsZWQgPSBmYWxzZTsKKyAgY29uc3QgdHMgPSBu
ZXcgVHJhbnNmb3JtU3RyZWFtKHsKKyAgICB0cmFuc2Zvcm0oKSB7IH0sCisgICAgZmx1c2goKSB7
CisgICAgICBmbHVzaENhbGxlZCA9IHRydWU7CisgICAgfQorICB9KTsKKworICByZXR1cm4gdHMu
d3JpdGFibGUuZ2V0V3JpdGVyKCkuY2xvc2UoKS50aGVuKCgpID0+IHsKKyAgICByZXR1cm4gYXNz
ZXJ0X3RydWUoZmx1c2hDYWxsZWQsICdjbG9zaW5nIHRoZSB3cml0YWJsZSB0cmlnZ2VycyB0aGUg
dHJhbnNmb3JtIGZsdXNoIGltbWVkaWF0ZWx5Jyk7CisgIH0pOworfSwgJ1RyYW5zZm9ybVN0cmVh
bSBmbHVzaCBpcyBjYWxsZWQgaW1tZWRpYXRlbHkgd2hlbiB0aGUgd3JpdGFibGUgaXMgY2xvc2Vk
LCBpZiBubyB3cml0ZXMgYXJlIHF1ZXVlZCcpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworICBs
ZXQgZmx1c2hDYWxsZWQgPSBmYWxzZTsKKyAgbGV0IHJlc29sdmVUcmFuc2Zvcm07CisgIGNvbnN0
IHRzID0gbmV3IFRyYW5zZm9ybVN0cmVhbSh7CisgICAgdHJhbnNmb3JtKCkgeworICAgICAgcmV0
dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4geworICAgICAgICByZXNvbHZlVHJhbnNmb3JtID0g
cmVzb2x2ZTsKKyAgICAgIH0pOworICAgIH0sCisgICAgZmx1c2goKSB7CisgICAgICBmbHVzaENh
bGxlZCA9IHRydWU7CisgICAgICByZXR1cm4gbmV3IFByb21pc2UoKCkgPT4ge30pOyAvLyBuZXZl
ciByZXNvbHZlcworICAgIH0KKyAgfSwgdW5kZWZpbmVkLCB7IGhpZ2hXYXRlck1hcms6IDEgfSk7
CisKKyAgY29uc3Qgd3JpdGVyID0gdHMud3JpdGFibGUuZ2V0V3JpdGVyKCk7CisgIHdyaXRlci53
cml0ZSgnYScpOworICB3cml0ZXIuY2xvc2UoKTsKKyAgYXNzZXJ0X2ZhbHNlKGZsdXNoQ2FsbGVk
LCAnY2xvc2luZyB0aGUgd3JpdGFibGUgZG9lcyBub3QgaW1tZWRpYXRlbHkgY2FsbCBmbHVzaCBp
ZiB3cml0ZXMgYXJlIG5vdCBmaW5pc2hlZCcpOworCisgIGxldCByc0Nsb3NlZCA9IGZhbHNlOwor
ICB0cy5yZWFkYWJsZS5nZXRSZWFkZXIoKS5jbG9zZWQudGhlbigoKSA9PiB7CisgICAgcnNDbG9z
ZWQgPSB0cnVlOworICB9KTsKKworICByZXR1cm4gZGVsYXkoMCkudGhlbigoKSA9PiB7CisgICAg
YXNzZXJ0X2ZhbHNlKGZsdXNoQ2FsbGVkLCAnY2xvc2luZyB0aGUgd3JpdGFibGUgZG9lcyBub3Qg
YXN5bmNocm9ub3VzbHkgY2FsbCBmbHVzaCBpZiB3cml0ZXMgYXJlIG5vdCBmaW5pc2hlZCcpOwor
ICAgIHJlc29sdmVUcmFuc2Zvcm0oKTsKKyAgICByZXR1cm4gZGVsYXkoMCk7CisgIH0pLnRoZW4o
KCkgPT4geworICAgIGFzc2VydF90cnVlKGZsdXNoQ2FsbGVkLCAnZmx1c2ggaXMgZXZlbnR1YWxs
eSBjYWxsZWQnKTsKKyAgICBhc3NlcnRfZmFsc2UocnNDbG9zZWQsICdpZiBmbHVzaFByb21pc2Ug
ZG9lcyBub3QgcmVzb2x2ZSwgdGhlIHJlYWRhYmxlIGRvZXMgbm90IGJlY29tZSBjbG9zZWQnKTsK
KyAgfSk7Cit9LCAnVHJhbnNmb3JtU3RyZWFtIGZsdXNoIGlzIGNhbGxlZCBhZnRlciBhbGwgcXVl
dWVkIHdyaXRlcyBmaW5pc2gsIG9uY2UgdGhlIHdyaXRhYmxlIGlzIGNsb3NlZCcpOworCitwcm9t
aXNlX3Rlc3QoKCkgPT4geworICBsZXQgYzsKKyAgY29uc3QgdHMgPSBuZXcgVHJhbnNmb3JtU3Ry
ZWFtKHsKKyAgICBzdGFydChjb250cm9sbGVyKSB7CisgICAgICBjID0gY29udHJvbGxlcjsKKyAg
ICB9LAorICAgIHRyYW5zZm9ybSgpIHsKKyAgICB9LAorICAgIGZsdXNoKCkgeworICAgICAgYy5l
bnF1ZXVlKCd4Jyk7CisgICAgICBjLmVucXVldWUoJ3knKTsKKyAgICB9CisgIH0pOworCisgIGNv
bnN0IHJlYWRlciA9IHRzLnJlYWRhYmxlLmdldFJlYWRlcigpOworCisgIGNvbnN0IHdyaXRlciA9
IHRzLndyaXRhYmxlLmdldFdyaXRlcigpOworICB3cml0ZXIud3JpdGUoJ2EnKTsKKyAgd3JpdGVy
LmNsb3NlKCk7CisgIHJldHVybiByZWFkZXIucmVhZCgpLnRoZW4ocmVzdWx0MSA9PiB7CisgICAg
YXNzZXJ0X2VxdWFscyhyZXN1bHQxLnZhbHVlLCAneCcsICd0aGUgZmlyc3QgY2h1bmsgcmVhZCBp
cyB0aGUgZmlyc3Qgb25lIGVucXVldWVkIGluIGZsdXNoJyk7CisgICAgYXNzZXJ0X2VxdWFscyhy
ZXN1bHQxLmRvbmUsIGZhbHNlLCAndGhlIGZpcnN0IGNodW5rIHJlYWQgaXMgdGhlIGZpcnN0IG9u
ZSBlbnF1ZXVlZCBpbiBmbHVzaCcpOworCisgICAgcmV0dXJuIHJlYWRlci5yZWFkKCkudGhlbihy
ZXN1bHQyID0+IHsKKyAgICAgIGFzc2VydF9lcXVhbHMocmVzdWx0Mi52YWx1ZSwgJ3knLCAndGhl
IHNlY29uZCBjaHVuayByZWFkIGlzIHRoZSBzZWNvbmQgb25lIGVucXVldWVkIGluIGZsdXNoJyk7
CisgICAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdDIuZG9uZSwgZmFsc2UsICd0aGUgc2Vjb25kIGNo
dW5rIHJlYWQgaXMgdGhlIHNlY29uZCBvbmUgZW5xdWV1ZWQgaW4gZmx1c2gnKTsKKyAgICB9KTsK
KyAgfSk7Cit9LCAnVHJhbnNmb3JtU3RyZWFtIGZsdXNoIGdldHMgYSBjaGFuY2UgdG8gZW5xdWV1
ZSBtb3JlIGludG8gdGhlIHJlYWRhYmxlJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisgIGxl
dCBjOworICBjb25zdCB0cyA9IG5ldyBUcmFuc2Zvcm1TdHJlYW0oeworICAgIHN0YXJ0KGNvbnRy
b2xsZXIpIHsKKyAgICAgIGMgPSBjb250cm9sbGVyOworICAgIH0sCisgICAgdHJhbnNmb3JtKCkg
eworICAgIH0sCisgICAgZmx1c2goKSB7CisgICAgICBjLmVucXVldWUoJ3gnKTsKKyAgICAgIGMu
ZW5xdWV1ZSgneScpOworICAgICAgcmV0dXJuIGRlbGF5KDApOworICAgIH0KKyAgfSk7CisKKyAg
Y29uc3QgcmVhZGVyID0gdHMucmVhZGFibGUuZ2V0UmVhZGVyKCk7CisKKyAgY29uc3Qgd3JpdGVy
ID0gdHMud3JpdGFibGUuZ2V0V3JpdGVyKCk7CisgIHdyaXRlci53cml0ZSgnYScpOworICB3cml0
ZXIuY2xvc2UoKTsKKworICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAgIHJlYWRlci5yZWFkKCku
dGhlbihyZXN1bHQxID0+IHsKKyAgICAgIGFzc2VydF9lcXVhbHMocmVzdWx0MS52YWx1ZSwgJ3gn
LCAndGhlIGZpcnN0IGNodW5rIHJlYWQgaXMgdGhlIGZpcnN0IG9uZSBlbnF1ZXVlZCBpbiBmbHVz
aCcpOworICAgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQxLmRvbmUsIGZhbHNlLCAndGhlIGZpcnN0
IGNodW5rIHJlYWQgaXMgdGhlIGZpcnN0IG9uZSBlbnF1ZXVlZCBpbiBmbHVzaCcpOworCisgICAg
ICByZXR1cm4gcmVhZGVyLnJlYWQoKS50aGVuKHJlc3VsdDIgPT4geworICAgICAgICBhc3NlcnRf
ZXF1YWxzKHJlc3VsdDIudmFsdWUsICd5JywgJ3RoZSBzZWNvbmQgY2h1bmsgcmVhZCBpcyB0aGUg
c2Vjb25kIG9uZSBlbnF1ZXVlZCBpbiBmbHVzaCcpOworICAgICAgICBhc3NlcnRfZXF1YWxzKHJl
c3VsdDIuZG9uZSwgZmFsc2UsICd0aGUgc2Vjb25kIGNodW5rIHJlYWQgaXMgdGhlIHNlY29uZCBv
bmUgZW5xdWV1ZWQgaW4gZmx1c2gnKTsKKyAgICAgIH0pOworICAgIH0pLAorICAgIHJlYWRlci5j
bG9zZWQudGhlbigoKSA9PiB7CisgICAgICBhc3NlcnRfdHJ1ZSh0cnVlLCAncmVhZGFibGUgcmVh
ZGVyIGJlY29tZXMgY2xvc2VkJyk7CisgICAgfSkKKyAgXSk7Cit9LCAnVHJhbnNmb3JtU3RyZWFt
IGZsdXNoIGdldHMgYSBjaGFuY2UgdG8gZW5xdWV1ZSBtb3JlIGludG8gdGhlIHJlYWRhYmxlLCBh
bmQgY2FuIHRoZW4gYXN5bmMgY2xvc2UnKTsKKworY29uc3QgZXJyb3IxID0gbmV3IEVycm9yKCdl
cnJvcjEnKTsKK2Vycm9yMS5uYW1lID0gJ2Vycm9yMSc7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsK
KyAgY29uc3QgdHMgPSBuZXcgVHJhbnNmb3JtU3RyZWFtKHsKKyAgICBmbHVzaChjb250cm9sbGVy
KSB7CisgICAgICBjb250cm9sbGVyLmVycm9yKGVycm9yMSk7CisgICAgfQorICB9KTsKKyAgcmV0
dXJuIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMSwgdHMud3JpdGFibGUuZ2V0V3Jp
dGVyKCkuY2xvc2UoKSwgJ2Nsb3NlKCkgc2hvdWxkIHJlamVjdCcpOworfSwgJ2Vycm9yKCkgZHVy
aW5nIGZsdXNoIHNob3VsZCBjYXVzZSB3cml0ZXIuY2xvc2UoKSB0byByZWplY3QnKTsKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy90cmFuc2Zvcm0tc3RyZWFtcy9mbHVzaC5hbnkud29ya2VyLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy90cmFuc2Zvcm0t
c3RyZWFtcy9mbHVzaC5hbnkud29ya2VyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZGVkODFh
MTk0NDVmN2FhYjAyYmU2NDQxMTk2YWU4ODMzYzQ3NTNiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9y
bS1zdHJlYW1zL2ZsdXNoLmFueS53b3JrZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNyBAQAor
CitGQUlMIFRyYW5zZm9ybVN0cmVhbSBmbHVzaCBpcyBjYWxsZWQgaW1tZWRpYXRlbHkgd2hlbiB0
aGUgd3JpdGFibGUgaXMgY2xvc2VkLCBpZiBubyB3cml0ZXMgYXJlIHF1ZXVlZCBDYW4ndCBmaW5k
IHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgVHJhbnNmb3JtU3RyZWFtIGZsdXNoIGlz
IGNhbGxlZCBhZnRlciBhbGwgcXVldWVkIHdyaXRlcyBmaW5pc2gsIG9uY2UgdGhlIHdyaXRhYmxl
IGlzIGNsb3NlZCBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgVHJh
bnNmb3JtU3RyZWFtIGZsdXNoIGdldHMgYSBjaGFuY2UgdG8gZW5xdWV1ZSBtb3JlIGludG8gdGhl
IHJlYWRhYmxlIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCBUcmFu
c2Zvcm1TdHJlYW0gZmx1c2ggZ2V0cyBhIGNoYW5jZSB0byBlbnF1ZXVlIG1vcmUgaW50byB0aGUg
cmVhZGFibGUsIGFuZCBjYW4gdGhlbiBhc3luYyBjbG9zZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBU
cmFuc2Zvcm1TdHJlYW0KK0ZBSUwgZXJyb3IoKSBkdXJpbmcgZmx1c2ggc2hvdWxkIGNhdXNlIHdy
aXRlci5jbG9zZSgpIHRvIHJlamVjdCBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJl
YW0KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1zL2ZsdXNoLmFueS53b3JrZXIuaHRtbCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy90cmFuc2Zv
cm0tc3RyZWFtcy9mbHVzaC5hbnkud29ya2VyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjM4MjkxMzUyOGU2
OTNiM2E1ZDU2YzY2MGE0NTA2MDk4MGI1NDhjMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy90cmFuc2Zvcm0tc3Ry
ZWFtcy9mbHVzaC5hbnkud29ya2VyLmh0bWwKQEAgLTAsMCArMSBAQAorPCEtLSBUaGlzIGZpbGUg
aXMgcmVxdWlyZWQgZm9yIFdlYktpdCB0ZXN0IGluZnJhc3RydWN0dXJlIHRvIHJ1biB0aGUgdGVt
cGxhdGVkIHRlc3QgLS0+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5z
Zm9ybS1zdHJlYW1zL2dlbmVyYWwuYW55LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy9nZW5l
cmFsLmFueS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGRhMzQ0OWNiZGUzNzliZTYxNjA1Nzk1
NDk3YzFiMTU4YjgxYWE1MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy9nZW5lcmFs
LmFueS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzMSBAQAorCitGQUlMIFRyYW5zZm9ybVN0cmVh
bSBjYW4gYmUgY29uc3RydWN0ZWQgd2l0aCBhIHRyYW5zZm9ybSBmdW5jdGlvbiBDYW4ndCBmaW5k
IHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgVHJhbnNmb3JtU3RyZWFtIGNhbiBiZSBj
b25zdHJ1Y3RlZCB3aXRoIG5vIHRyYW5zZm9ybSBmdW5jdGlvbiBDYW4ndCBmaW5kIHZhcmlhYmxl
OiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgVHJhbnNmb3JtU3RyZWFtIHdyaXRhYmxlIHN0YXJ0cyBp
biB0aGUgd3JpdGFibGUgc3RhdGUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFt
CitGQUlMIElkZW50aXR5IFRyYW5zZm9ybVN0cmVhbTogY2FuIHJlYWQgZnJvbSByZWFkYWJsZSB3
aGF0IGlzIHB1dCBpbnRvIHdyaXRhYmxlIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0
cmVhbQorRkFJTCBVcHBlcmNhc2VyIHN5bmMgVHJhbnNmb3JtU3RyZWFtOiBjYW4gcmVhZCBmcm9t
IHJlYWRhYmxlIHRyYW5zZm9ybWVkIHZlcnNpb24gb2Ygd2hhdCBpcyBwdXQgaW50byB3cml0YWJs
ZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgVXBwZXJjYXNlci1k
b3VibGVyIHN5bmMgVHJhbnNmb3JtU3RyZWFtOiBjYW4gcmVhZCBib3RoIGNodW5rcyBwdXQgaW50
byB0aGUgcmVhZGFibGUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitGQUlM
IFVwcGVyY2FzZXIgYXN5bmMgVHJhbnNmb3JtU3RyZWFtOiBjYW4gcmVhZCBmcm9tIHJlYWRhYmxl
IHRyYW5zZm9ybWVkIHZlcnNpb24gb2Ygd2hhdCBpcyBwdXQgaW50byB3cml0YWJsZSBDYW4ndCBm
aW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgVXBwZXJjYXNlci1kb3VibGVyIGFz
eW5jIFRyYW5zZm9ybVN0cmVhbTogY2FuIHJlYWQgYm90aCBjaHVua3MgcHV0IGludG8gdGhlIHJl
YWRhYmxlIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCBUcmFuc2Zv
cm1TdHJlYW06IGJ5IGRlZmF1bHQsIGNsb3NpbmcgdGhlIHdyaXRhYmxlIGNsb3NlcyB0aGUgcmVh
ZGFibGUgKHdoZW4gdGhlcmUgYXJlIG5vIHF1ZXVlZCB3cml0ZXMpIENhbid0IGZpbmQgdmFyaWFi
bGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCBUcmFuc2Zvcm1TdHJlYW06IGJ5IGRlZmF1bHQsIGNs
b3NpbmcgdGhlIHdyaXRhYmxlIHdhaXRzIGZvciB0cmFuc2Zvcm1zIHRvIGZpbmlzaCBiZWZvcmUg
Y2xvc2luZyBib3RoIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCBU
cmFuc2Zvcm1TdHJlYW06IGJ5IGRlZmF1bHQsIGNsb3NpbmcgdGhlIHdyaXRhYmxlIGNsb3NlcyB0
aGUgcmVhZGFibGUgYWZ0ZXIgc3luYyBlbnF1ZXVlcyBhbmQgYXN5bmMgZG9uZSBDYW4ndCBmaW5k
IHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgVHJhbnNmb3JtU3RyZWFtOiBieSBkZWZh
dWx0LCBjbG9zaW5nIHRoZSB3cml0YWJsZSBjbG9zZXMgdGhlIHJlYWRhYmxlIGFmdGVyIGFzeW5j
IGVucXVldWVzIGFuZCBhc3luYyBkb25lIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0
cmVhbQorRkFJTCBUcmFuc2Zvcm0gc3RyZWFtIHNob3VsZCBjYWxsIHRyYW5zZm9ybWVyIG1ldGhv
ZHMgYXMgbWV0aG9kcyBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwg
bWV0aG9kcyBzaG91bGQgbm90IG5vdCBoYXZlIC5hcHBseSgpIG9yIC5jYWxsKCkgY2FsbGVkIENh
bid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCBUcmFuc2Zvcm1TdHJlYW0g
c3RhcnQsIHRyYW5zZm9ybSwgYW5kIGZsdXNoIHNob3VsZCBiZSBzdHJpY3RseSBvcmRlcmVkIENh
bid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCBpdCBzaG91bGQgYmUgcG9z
c2libGUgdG8gY2FsbCB0cmFuc2Zvcm0oKSBzeW5jaHJvbm91c2x5IENhbid0IGZpbmQgdmFyaWFi
bGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCBjbG9zaW5nIHRoZSB3cml0YWJsZSBzaG91bGQgY2xv
c2UgdGhlIHJlYWRhYmxlIHdoZW4gdGhlcmUgYXJlIG5vIHF1ZXVlZCBjaHVua3MsIGV2ZW4gd2l0
aCBiYWNrcHJlc3N1cmUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitGQUlM
IGVucXVldWUoKSBzaG91bGQgdGhyb3cgYWZ0ZXIgY29udHJvbGxlci50ZXJtaW5hdGUoKSBDYW4n
dCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgZW5xdWV1ZSgpIHNob3VsZCB0
aHJvdyBhZnRlciByZWFkYWJsZS5jYW5jZWwoKSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zv
cm1TdHJlYW0KK0ZBSUwgY29udHJvbGxlci50ZXJtaW5hdGUoKSBzaG91bGQgZG8gbm90aGluZyB0
aGUgc2Vjb25kIHRpbWUgaXQgaXMgY2FsbGVkIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9y
bVN0cmVhbQorRkFJTCB0ZXJtaW5hdGUoKSBzaG91bGQgZG8gbm90aGluZyBhZnRlciByZWFkYWJs
ZS5jYW5jZWwoKSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgc3Rh
cnQoKSBzaG91bGQgbm90IGJlIGNhbGxlZCB0d2ljZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFu
c2Zvcm1TdHJlYW0KK0ZBSUwgc3BlY2lmeWluZyBhIGRlZmluZWQgcmVhZGFibGVUeXBlIHNob3Vs
ZCB0aHJvdyBhc3NlcnRfdGhyb3dzX2pzOiBjb25zdHJ1Y3RvciBzaG91bGQgdGhyb3cgZnVuY3Rp
b24gIigpID0+IG5ldyBUcmFuc2Zvcm1TdHJlYW0oeyByZWFkYWJsZVR5cGU6ICdieXRlcycgfSki
IHRocmV3IG9iamVjdCAiUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5z
Zm9ybVN0cmVhbSIgKCJSZWZlcmVuY2VFcnJvciIpIGV4cGVjdGVkIGluc3RhbmNlIG9mIGZ1bmN0
aW9uICJmdW5jdGlvbiBSYW5nZUVycm9yKCkgeworICAgIFtuYXRpdmUgY29kZV0KK30iICgiUmFu
Z2VFcnJvciIpCitGQUlMIHNwZWNpZnlpbmcgYSBkZWZpbmVkIHdyaXRhYmxlVHlwZSBzaG91bGQg
dGhyb3cgYXNzZXJ0X3Rocm93c19qczogY29uc3RydWN0b3Igc2hvdWxkIHRocm93IGZ1bmN0aW9u
ICIoKSA9PiBuZXcgVHJhbnNmb3JtU3RyZWFtKHsgd3JpdGFibGVUeXBlOiAnYnl0ZXMnIH0pIiB0
aHJldyBvYmplY3QgIlJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zv
cm1TdHJlYW0iICgiUmVmZXJlbmNlRXJyb3IiKSBleHBlY3RlZCBpbnN0YW5jZSBvZiBmdW5jdGlv
biAiZnVuY3Rpb24gUmFuZ2VFcnJvcigpIHsKKyAgICBbbmF0aXZlIGNvZGVdCit9IiAoIlJhbmdl
RXJyb3IiKQorRkFJTCBTdWJjbGFzc2luZyBUcmFuc2Zvcm1TdHJlYW0gc2hvdWxkIHdvcmsgQ2Fu
J3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy90cmFuc2Zvcm0tc3Ry
ZWFtcy9nZW5lcmFsLmFueS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1zL2dlbmVyYWwuYW55Lmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMjM4MjkxMzUyOGU2OTNiM2E1ZDU2YzY2MGE0NTA2MDk4MGI1NDhjMwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy9nZW5lcmFsLmFueS5odG1sCkBAIC0wLDAgKzEgQEAK
KzwhLS0gVGhpcyBmaWxlIGlzIHJlcXVpcmVkIGZvciBXZWJLaXQgdGVzdCBpbmZyYXN0cnVjdHVy
ZSB0byBydW4gdGhlIHRlbXBsYXRlZCB0ZXN0IC0tPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy9nZW5lcmFsLmFueS5qcyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFt
cy9nZW5lcmFsLmFueS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNGYyYTFkNWEyOWNmNmRhMWEzNjA4YzMyNmY1
OGM3OGQwNTgwMDk0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1zL2dlbmVyYWwuYW55
LmpzCkBAIC0wLDAgKzEsNDM3IEBACisvLyBNRVRBOiBnbG9iYWw9d2luZG93LHdvcmtlcixqc3No
ZWxsCisvLyBNRVRBOiBzY3JpcHQ9Li4vcmVzb3VyY2VzL3Rlc3QtdXRpbHMuanMKKy8vIE1FVEE6
IHNjcmlwdD0uLi9yZXNvdXJjZXMvcnMtdXRpbHMuanMKKyd1c2Ugc3RyaWN0JzsKKwordGVzdCgo
KSA9PiB7CisgIG5ldyBUcmFuc2Zvcm1TdHJlYW0oeyB0cmFuc2Zvcm0oKSB7IH0gfSk7Cit9LCAn
VHJhbnNmb3JtU3RyZWFtIGNhbiBiZSBjb25zdHJ1Y3RlZCB3aXRoIGEgdHJhbnNmb3JtIGZ1bmN0
aW9uJyk7CisKK3Rlc3QoKCkgPT4geworICBuZXcgVHJhbnNmb3JtU3RyZWFtKCk7CisgIG5ldyBU
cmFuc2Zvcm1TdHJlYW0oe30pOworfSwgJ1RyYW5zZm9ybVN0cmVhbSBjYW4gYmUgY29uc3RydWN0
ZWQgd2l0aCBubyB0cmFuc2Zvcm0gZnVuY3Rpb24nKTsKKwordGVzdCgoKSA9PiB7CisgIGNvbnN0
IHRzID0gbmV3IFRyYW5zZm9ybVN0cmVhbSh7IHRyYW5zZm9ybSgpIHsgfSB9KTsKKworICBjb25z
dCB3cml0ZXIgPSB0cy53cml0YWJsZS5nZXRXcml0ZXIoKTsKKyAgYXNzZXJ0X2VxdWFscyh3cml0
ZXIuZGVzaXJlZFNpemUsIDEsICd3cml0ZXIuZGVzaXJlZFNpemUgc2hvdWxkIGJlIDEnKTsKK30s
ICdUcmFuc2Zvcm1TdHJlYW0gd3JpdGFibGUgc3RhcnRzIGluIHRoZSB3cml0YWJsZSBzdGF0ZScp
OworCitwcm9taXNlX3Rlc3QoKCkgPT4geworICBjb25zdCB0cyA9IG5ldyBUcmFuc2Zvcm1TdHJl
YW0oKTsKKworICBjb25zdCB3cml0ZXIgPSB0cy53cml0YWJsZS5nZXRXcml0ZXIoKTsKKyAgd3Jp
dGVyLndyaXRlKCdhJyk7CisgIGFzc2VydF9lcXVhbHMod3JpdGVyLmRlc2lyZWRTaXplLCAwLCAn
d3JpdGVyLmRlc2lyZWRTaXplIHNob3VsZCBiZSAwIGFmdGVyIHdyaXRlKCknKTsKKworICByZXR1
cm4gdHMucmVhZGFibGUuZ2V0UmVhZGVyKCkucmVhZCgpLnRoZW4ocmVzdWx0ID0+IHsKKyAgICBh
c3NlcnRfZXF1YWxzKHJlc3VsdC52YWx1ZSwgJ2EnLAorICAgICAgJ3Jlc3VsdCBmcm9tIHJlYWRp
bmcgdGhlIHJlYWRhYmxlIGlzIHRoZSBzYW1lIGFzIHdhcyB3cml0dGVuIHRvIHdyaXRhYmxlJyk7
CisgICAgYXNzZXJ0X2ZhbHNlKHJlc3VsdC5kb25lLCAnc3RyZWFtIHNob3VsZCBub3QgYmUgZG9u
ZScpOworCisgICAgcmV0dXJuIGRlbGF5KDApLnRoZW4oKCkgPT4gYXNzZXJ0X2VxdWFscyh3cml0
ZXIuZGVzaXJlZFNpemUsIDEsICdkZXNpcmVkU2l6ZSBzaG91bGQgYmUgMSBhZ2FpbicpKTsKKyAg
fSk7Cit9LCAnSWRlbnRpdHkgVHJhbnNmb3JtU3RyZWFtOiBjYW4gcmVhZCBmcm9tIHJlYWRhYmxl
IHdoYXQgaXMgcHV0IGludG8gd3JpdGFibGUnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAg
bGV0IGM7CisgIGNvbnN0IHRzID0gbmV3IFRyYW5zZm9ybVN0cmVhbSh7CisgICAgc3RhcnQoY29u
dHJvbGxlcikgeworICAgICAgYyA9IGNvbnRyb2xsZXI7CisgICAgfSwKKyAgICB0cmFuc2Zvcm0o
Y2h1bmspIHsKKyAgICAgIGMuZW5xdWV1ZShjaHVuay50b1VwcGVyQ2FzZSgpKTsKKyAgICB9Cisg
IH0pOworCisgIGNvbnN0IHdyaXRlciA9IHRzLndyaXRhYmxlLmdldFdyaXRlcigpOworICB3cml0
ZXIud3JpdGUoJ2EnKTsKKworICByZXR1cm4gdHMucmVhZGFibGUuZ2V0UmVhZGVyKCkucmVhZCgp
LnRoZW4ocmVzdWx0ID0+IHsKKyAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdC52YWx1ZSwgJ0EnLAor
ICAgICAgJ3Jlc3VsdCBmcm9tIHJlYWRpbmcgdGhlIHJlYWRhYmxlIGlzIHRoZSB0cmFuc2Zvcm1h
dGlvbiBvZiB3aGF0IHdhcyB3cml0dGVuIHRvIHdyaXRhYmxlJyk7CisgICAgYXNzZXJ0X2ZhbHNl
KHJlc3VsdC5kb25lLCAnc3RyZWFtIHNob3VsZCBub3QgYmUgZG9uZScpOworICB9KTsKK30sICdV
cHBlcmNhc2VyIHN5bmMgVHJhbnNmb3JtU3RyZWFtOiBjYW4gcmVhZCBmcm9tIHJlYWRhYmxlIHRy
YW5zZm9ybWVkIHZlcnNpb24gb2Ygd2hhdCBpcyBwdXQgaW50byB3cml0YWJsZScpOworCitwcm9t
aXNlX3Rlc3QoKCkgPT4geworICBsZXQgYzsKKyAgY29uc3QgdHMgPSBuZXcgVHJhbnNmb3JtU3Ry
ZWFtKHsKKyAgICBzdGFydChjb250cm9sbGVyKSB7CisgICAgICBjID0gY29udHJvbGxlcjsKKyAg
ICB9LAorICAgIHRyYW5zZm9ybShjaHVuaykgeworICAgICAgYy5lbnF1ZXVlKGNodW5rLnRvVXBw
ZXJDYXNlKCkpOworICAgICAgYy5lbnF1ZXVlKGNodW5rLnRvVXBwZXJDYXNlKCkpOworICAgIH0K
KyAgfSk7CisKKyAgY29uc3Qgd3JpdGVyID0gdHMud3JpdGFibGUuZ2V0V3JpdGVyKCk7CisgIHdy
aXRlci53cml0ZSgnYScpOworCisgIGNvbnN0IHJlYWRlciA9IHRzLnJlYWRhYmxlLmdldFJlYWRl
cigpOworCisgIHJldHVybiByZWFkZXIucmVhZCgpLnRoZW4ocmVzdWx0MSA9PiB7CisgICAgYXNz
ZXJ0X2VxdWFscyhyZXN1bHQxLnZhbHVlLCAnQScsCisgICAgICAndGhlIGZpcnN0IGNodW5rIHJl
YWQgaXMgdGhlIHRyYW5zZm9ybWF0aW9uIG9mIHRoZSBzaW5nbGUgY2h1bmsgd3JpdHRlbicpOwor
ICAgIGFzc2VydF9mYWxzZShyZXN1bHQxLmRvbmUsICdzdHJlYW0gc2hvdWxkIG5vdCBiZSBkb25l
Jyk7CisKKyAgICByZXR1cm4gcmVhZGVyLnJlYWQoKS50aGVuKHJlc3VsdDIgPT4geworICAgICAg
YXNzZXJ0X2VxdWFscyhyZXN1bHQyLnZhbHVlLCAnQScsCisgICAgICAgICd0aGUgc2Vjb25kIGNo
dW5rIHJlYWQgaXMgYWxzbyB0aGUgdHJhbnNmb3JtYXRpb24gb2YgdGhlIHNpbmdsZSBjaHVuayB3
cml0dGVuJyk7CisgICAgICBhc3NlcnRfZmFsc2UocmVzdWx0Mi5kb25lLCAnc3RyZWFtIHNob3Vs
ZCBub3QgYmUgZG9uZScpOworICAgIH0pOworICB9KTsKK30sICdVcHBlcmNhc2VyLWRvdWJsZXIg
c3luYyBUcmFuc2Zvcm1TdHJlYW06IGNhbiByZWFkIGJvdGggY2h1bmtzIHB1dCBpbnRvIHRoZSBy
ZWFkYWJsZScpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworICBsZXQgYzsKKyAgY29uc3QgdHMg
PSBuZXcgVHJhbnNmb3JtU3RyZWFtKHsKKyAgICBzdGFydChjb250cm9sbGVyKSB7CisgICAgICBj
ID0gY29udHJvbGxlcjsKKyAgICB9LAorICAgIHRyYW5zZm9ybShjaHVuaykgeworICAgICAgcmV0
dXJuIGRlbGF5KDApLnRoZW4oKCkgPT4gYy5lbnF1ZXVlKGNodW5rLnRvVXBwZXJDYXNlKCkpKTsK
KyAgICB9CisgIH0pOworCisgIGNvbnN0IHdyaXRlciA9IHRzLndyaXRhYmxlLmdldFdyaXRlcigp
OworICB3cml0ZXIud3JpdGUoJ2EnKTsKKworICByZXR1cm4gdHMucmVhZGFibGUuZ2V0UmVhZGVy
KCkucmVhZCgpLnRoZW4ocmVzdWx0ID0+IHsKKyAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdC52YWx1
ZSwgJ0EnLAorICAgICAgJ3Jlc3VsdCBmcm9tIHJlYWRpbmcgdGhlIHJlYWRhYmxlIGlzIHRoZSB0
cmFuc2Zvcm1hdGlvbiBvZiB3aGF0IHdhcyB3cml0dGVuIHRvIHdyaXRhYmxlJyk7CisgICAgYXNz
ZXJ0X2ZhbHNlKHJlc3VsdC5kb25lLCAnc3RyZWFtIHNob3VsZCBub3QgYmUgZG9uZScpOworICB9
KTsKK30sICdVcHBlcmNhc2VyIGFzeW5jIFRyYW5zZm9ybVN0cmVhbTogY2FuIHJlYWQgZnJvbSBy
ZWFkYWJsZSB0cmFuc2Zvcm1lZCB2ZXJzaW9uIG9mIHdoYXQgaXMgcHV0IGludG8gd3JpdGFibGUn
KTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgbGV0IGRvU2Vjb25kRW5xdWV1ZTsKKyAgbGV0
IHJldHVybkZyb21UcmFuc2Zvcm07CisgIGNvbnN0IHRzID0gbmV3IFRyYW5zZm9ybVN0cmVhbSh7
CisgICAgdHJhbnNmb3JtKGNodW5rLCBjb250cm9sbGVyKSB7CisgICAgICBkZWxheSgwKS50aGVu
KCgpID0+IGNvbnRyb2xsZXIuZW5xdWV1ZShjaHVuay50b1VwcGVyQ2FzZSgpKSk7CisgICAgICBk
b1NlY29uZEVucXVldWUgPSAoKSA9PiBjb250cm9sbGVyLmVucXVldWUoY2h1bmsudG9VcHBlckNh
c2UoKSk7CisgICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7CisgICAgICAgIHJl
dHVybkZyb21UcmFuc2Zvcm0gPSByZXNvbHZlOworICAgICAgfSk7CisgICAgfQorICB9KTsKKwor
ICBjb25zdCByZWFkZXIgPSB0cy5yZWFkYWJsZS5nZXRSZWFkZXIoKTsKKworICBjb25zdCB3cml0
ZXIgPSB0cy53cml0YWJsZS5nZXRXcml0ZXIoKTsKKyAgd3JpdGVyLndyaXRlKCdhJyk7CisKKyAg
cmV0dXJuIHJlYWRlci5yZWFkKCkudGhlbihyZXN1bHQxID0+IHsKKyAgICBhc3NlcnRfZXF1YWxz
KHJlc3VsdDEudmFsdWUsICdBJywKKyAgICAgICd0aGUgZmlyc3QgY2h1bmsgcmVhZCBpcyB0aGUg
dHJhbnNmb3JtYXRpb24gb2YgdGhlIHNpbmdsZSBjaHVuayB3cml0dGVuJyk7CisgICAgYXNzZXJ0
X2ZhbHNlKHJlc3VsdDEuZG9uZSwgJ3N0cmVhbSBzaG91bGQgbm90IGJlIGRvbmUnKTsKKyAgICBk
b1NlY29uZEVucXVldWUoKTsKKworICAgIHJldHVybiByZWFkZXIucmVhZCgpLnRoZW4ocmVzdWx0
MiA9PiB7CisgICAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdDIudmFsdWUsICdBJywKKyAgICAgICAg
J3RoZSBzZWNvbmQgY2h1bmsgcmVhZCBpcyBhbHNvIHRoZSB0cmFuc2Zvcm1hdGlvbiBvZiB0aGUg
c2luZ2xlIGNodW5rIHdyaXR0ZW4nKTsKKyAgICAgIGFzc2VydF9mYWxzZShyZXN1bHQyLmRvbmUs
ICdzdHJlYW0gc2hvdWxkIG5vdCBiZSBkb25lJyk7CisgICAgICByZXR1cm5Gcm9tVHJhbnNmb3Jt
KCk7CisgICAgfSk7CisgIH0pOworfSwgJ1VwcGVyY2FzZXItZG91YmxlciBhc3luYyBUcmFuc2Zv
cm1TdHJlYW06IGNhbiByZWFkIGJvdGggY2h1bmtzIHB1dCBpbnRvIHRoZSByZWFkYWJsZScpOwor
Citwcm9taXNlX3Rlc3QoKCkgPT4geworICBjb25zdCB0cyA9IG5ldyBUcmFuc2Zvcm1TdHJlYW0o
eyB0cmFuc2Zvcm0oKSB7IH0gfSk7CisKKyAgY29uc3Qgd3JpdGVyID0gdHMud3JpdGFibGUuZ2V0
V3JpdGVyKCk7CisgIHdyaXRlci5jbG9zZSgpOworCisgIHJldHVybiBQcm9taXNlLmFsbChbd3Jp
dGVyLmNsb3NlZCwgdHMucmVhZGFibGUuZ2V0UmVhZGVyKCkuY2xvc2VkXSk7Cit9LCAnVHJhbnNm
b3JtU3RyZWFtOiBieSBkZWZhdWx0LCBjbG9zaW5nIHRoZSB3cml0YWJsZSBjbG9zZXMgdGhlIHJl
YWRhYmxlICh3aGVuIHRoZXJlIGFyZSBubyBxdWV1ZWQgd3JpdGVzKScpOworCitwcm9taXNlX3Rl
c3QoKCkgPT4geworICBsZXQgdHJhbnNmb3JtUmVzb2x2ZTsKKyAgY29uc3QgdHJhbnNmb3JtUHJv
bWlzZSA9IG5ldyBQcm9taXNlKHJlc29sdmUgPT4geworICAgIHRyYW5zZm9ybVJlc29sdmUgPSBy
ZXNvbHZlOworICB9KTsKKyAgY29uc3QgdHMgPSBuZXcgVHJhbnNmb3JtU3RyZWFtKHsKKyAgICB0
cmFuc2Zvcm0oKSB7CisgICAgICByZXR1cm4gdHJhbnNmb3JtUHJvbWlzZTsKKyAgICB9CisgIH0s
IHVuZGVmaW5lZCwgeyBoaWdoV2F0ZXJNYXJrOiAxIH0pOworCisgIGNvbnN0IHdyaXRlciA9IHRz
LndyaXRhYmxlLmdldFdyaXRlcigpOworICB3cml0ZXIud3JpdGUoJ2EnKTsKKyAgd3JpdGVyLmNs
b3NlKCk7CisKKyAgbGV0IHJzQ2xvc2VkID0gZmFsc2U7CisgIHRzLnJlYWRhYmxlLmdldFJlYWRl
cigpLmNsb3NlZC50aGVuKCgpID0+IHsKKyAgICByc0Nsb3NlZCA9IHRydWU7CisgIH0pOworCisg
IHJldHVybiBkZWxheSgwKS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfZXF1YWxzKHJzQ2xvc2Vk
LCBmYWxzZSwgJ3JlYWRhYmxlIGlzIG5vdCBjbG9zZWQgYWZ0ZXIgYSB0aWNrJyk7CisgICAgdHJh
bnNmb3JtUmVzb2x2ZSgpOworCisgICAgcmV0dXJuIHdyaXRlci5jbG9zZWQudGhlbigoKSA9PiB7
CisgICAgICAvLyBUT0RPOiBJcyB0aGlzIGV4cGVjdGF0aW9uIGNvcnJlY3Q/CisgICAgICBhc3Nl
cnRfZXF1YWxzKHJzQ2xvc2VkLCB0cnVlLCAncmVhZGFibGUgaXMgY2xvc2VkIGF0IHRoYXQgcG9p
bnQnKTsKKyAgICB9KTsKKyAgfSk7Cit9LCAnVHJhbnNmb3JtU3RyZWFtOiBieSBkZWZhdWx0LCBj
bG9zaW5nIHRoZSB3cml0YWJsZSB3YWl0cyBmb3IgdHJhbnNmb3JtcyB0byBmaW5pc2ggYmVmb3Jl
IGNsb3NpbmcgYm90aCcpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworICBsZXQgYzsKKyAgY29u
c3QgdHMgPSBuZXcgVHJhbnNmb3JtU3RyZWFtKHsKKyAgICBzdGFydChjb250cm9sbGVyKSB7Cisg
ICAgICBjID0gY29udHJvbGxlcjsKKyAgICB9LAorICAgIHRyYW5zZm9ybSgpIHsKKyAgICAgIGMu
ZW5xdWV1ZSgneCcpOworICAgICAgYy5lbnF1ZXVlKCd5Jyk7CisgICAgICByZXR1cm4gZGVsYXko
MCk7CisgICAgfQorICB9KTsKKworICBjb25zdCB3cml0ZXIgPSB0cy53cml0YWJsZS5nZXRXcml0
ZXIoKTsKKyAgd3JpdGVyLndyaXRlKCdhJyk7CisgIHdyaXRlci5jbG9zZSgpOworCisgIGNvbnN0
IHJlYWRhYmxlQ2h1bmtzID0gcmVhZGFibGVTdHJlYW1Ub0FycmF5KHRzLnJlYWRhYmxlKTsKKwor
ICByZXR1cm4gd3JpdGVyLmNsb3NlZC50aGVuKCgpID0+IHsKKyAgICByZXR1cm4gcmVhZGFibGVD
aHVua3MudGhlbihjaHVua3MgPT4geworICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhjaHVua3Ms
IFsneCcsICd5J10sICdib3RoIGVucXVldWVkIGNodW5rcyBjYW4gYmUgcmVhZCBmcm9tIHRoZSBy
ZWFkYWJsZScpOworICAgIH0pOworICB9KTsKK30sICdUcmFuc2Zvcm1TdHJlYW06IGJ5IGRlZmF1
bHQsIGNsb3NpbmcgdGhlIHdyaXRhYmxlIGNsb3NlcyB0aGUgcmVhZGFibGUgYWZ0ZXIgc3luYyBl
bnF1ZXVlcyBhbmQgYXN5bmMgZG9uZScpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworICBsZXQg
YzsKKyAgY29uc3QgdHMgPSBuZXcgVHJhbnNmb3JtU3RyZWFtKHsKKyAgICBzdGFydChjb250cm9s
bGVyKSB7CisgICAgICBjID0gY29udHJvbGxlcjsKKyAgICB9LAorICAgIHRyYW5zZm9ybSgpIHsK
KyAgICAgIHJldHVybiBkZWxheSgwKQorICAgICAgICAgIC50aGVuKCgpID0+IGMuZW5xdWV1ZSgn
eCcpKQorICAgICAgICAgIC50aGVuKCgpID0+IGMuZW5xdWV1ZSgneScpKQorICAgICAgICAgIC50
aGVuKCgpID0+IGRlbGF5KDApKTsKKyAgICB9CisgIH0pOworCisgIGNvbnN0IHdyaXRlciA9IHRz
LndyaXRhYmxlLmdldFdyaXRlcigpOworICB3cml0ZXIud3JpdGUoJ2EnKTsKKyAgd3JpdGVyLmNs
b3NlKCk7CisKKyAgY29uc3QgcmVhZGFibGVDaHVua3MgPSByZWFkYWJsZVN0cmVhbVRvQXJyYXko
dHMucmVhZGFibGUpOworCisgIHJldHVybiB3cml0ZXIuY2xvc2VkLnRoZW4oKCkgPT4geworICAg
IHJldHVybiByZWFkYWJsZUNodW5rcy50aGVuKGNodW5rcyA9PiB7CisgICAgICBhc3NlcnRfYXJy
YXlfZXF1YWxzKGNodW5rcywgWyd4JywgJ3knXSwgJ2JvdGggZW5xdWV1ZWQgY2h1bmtzIGNhbiBi
ZSByZWFkIGZyb20gdGhlIHJlYWRhYmxlJyk7CisgICAgfSk7CisgIH0pOworfSwgJ1RyYW5zZm9y
bVN0cmVhbTogYnkgZGVmYXVsdCwgY2xvc2luZyB0aGUgd3JpdGFibGUgY2xvc2VzIHRoZSByZWFk
YWJsZSBhZnRlciBhc3luYyBlbnF1ZXVlcyBhbmQgYXN5bmMgZG9uZScpOworCitwcm9taXNlX3Rl
c3QoKCkgPT4geworICBsZXQgYzsKKyAgY29uc3QgdHMgPSBuZXcgVHJhbnNmb3JtU3RyZWFtKHsK
KyAgICBzdWZmaXg6ICctc3VmZml4JywKKworICAgIHN0YXJ0KGNvbnRyb2xsZXIpIHsKKyAgICAg
IGMgPSBjb250cm9sbGVyOworICAgICAgYy5lbnF1ZXVlKCdzdGFydCcgKyB0aGlzLnN1ZmZpeCk7
CisgICAgfSwKKworICAgIHRyYW5zZm9ybShjaHVuaykgeworICAgICAgYy5lbnF1ZXVlKGNodW5r
ICsgdGhpcy5zdWZmaXgpOworICAgIH0sCisKKyAgICBmbHVzaCgpIHsKKyAgICAgIGMuZW5xdWV1
ZSgnZmx1c2hlZCcgKyB0aGlzLnN1ZmZpeCk7CisgICAgfQorICB9KTsKKworICBjb25zdCB3cml0
ZXIgPSB0cy53cml0YWJsZS5nZXRXcml0ZXIoKTsKKyAgd3JpdGVyLndyaXRlKCdhJyk7CisgIHdy
aXRlci5jbG9zZSgpOworCisgIGNvbnN0IHJlYWRhYmxlQ2h1bmtzID0gcmVhZGFibGVTdHJlYW1U
b0FycmF5KHRzLnJlYWRhYmxlKTsKKworICByZXR1cm4gd3JpdGVyLmNsb3NlZC50aGVuKCgpID0+
IHsKKyAgICByZXR1cm4gcmVhZGFibGVDaHVua3MudGhlbihjaHVua3MgPT4geworICAgICAgYXNz
ZXJ0X2FycmF5X2VxdWFscyhjaHVua3MsIFsnc3RhcnQtc3VmZml4JywgJ2Etc3VmZml4JywgJ2Zs
dXNoZWQtc3VmZml4J10sICdhbGwgZW5xdWV1ZWQgY2h1bmtzIGhhdmUgc3VmZml4ZXMnKTsKKyAg
ICB9KTsKKyAgfSk7Cit9LCAnVHJhbnNmb3JtIHN0cmVhbSBzaG91bGQgY2FsbCB0cmFuc2Zvcm1l
ciBtZXRob2RzIGFzIG1ldGhvZHMnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgZnVuY3Rp
b24gZnVuY3Rpb25XaXRoT3ZlcmxvYWRzKCkge30KKyAgZnVuY3Rpb25XaXRoT3ZlcmxvYWRzLmFw
cGx5ID0gKCkgPT4gYXNzZXJ0X3VucmVhY2hlZCgnYXBwbHkoKSBzaG91bGQgbm90IGJlIGNhbGxl
ZCcpOworICBmdW5jdGlvbldpdGhPdmVybG9hZHMuY2FsbCA9ICgpID0+IGFzc2VydF91bnJlYWNo
ZWQoJ2NhbGwoKSBzaG91bGQgbm90IGJlIGNhbGxlZCcpOworICBjb25zdCB0cyA9IG5ldyBUcmFu
c2Zvcm1TdHJlYW0oeworICAgIHN0YXJ0OiBmdW5jdGlvbldpdGhPdmVybG9hZHMsCisgICAgdHJh
bnNmb3JtOiBmdW5jdGlvbldpdGhPdmVybG9hZHMsCisgICAgZmx1c2g6IGZ1bmN0aW9uV2l0aE92
ZXJsb2FkcworICB9KTsKKyAgY29uc3Qgd3JpdGVyID0gdHMud3JpdGFibGUuZ2V0V3JpdGVyKCk7
CisgIHdyaXRlci53cml0ZSgnYScpOworICB3cml0ZXIuY2xvc2UoKTsKKworICByZXR1cm4gcmVh
ZGFibGVTdHJlYW1Ub0FycmF5KHRzLnJlYWRhYmxlKTsKK30sICdtZXRob2RzIHNob3VsZCBub3Qg
bm90IGhhdmUgLmFwcGx5KCkgb3IgLmNhbGwoKSBjYWxsZWQnKTsKKworcHJvbWlzZV90ZXN0KHQg
PT4geworICBsZXQgc3RhcnRDYWxsZWQgPSBmYWxzZTsKKyAgbGV0IHN0YXJ0RG9uZSA9IGZhbHNl
OworICBsZXQgdHJhbnNmb3JtRG9uZSA9IGZhbHNlOworICBsZXQgZmx1c2hEb25lID0gZmFsc2U7
CisgIGNvbnN0IHRzID0gbmV3IFRyYW5zZm9ybVN0cmVhbSh7CisgICAgc3RhcnQoKSB7CisgICAg
ICBzdGFydENhbGxlZCA9IHRydWU7CisgICAgICByZXR1cm4gZmx1c2hBc3luY0V2ZW50cygpLnRo
ZW4oKCkgPT4geworICAgICAgICBzdGFydERvbmUgPSB0cnVlOworICAgICAgfSk7CisgICAgfSwK
KyAgICB0cmFuc2Zvcm0oKSB7CisgICAgICByZXR1cm4gdC5zdGVwKCgpID0+IHsKKyAgICAgICAg
YXNzZXJ0X3RydWUoc3RhcnREb25lLCAndHJhbnNmb3JtKCkgc2hvdWxkIG5vdCBiZSBjYWxsZWQg
dW50aWwgdGhlIHByb21pc2UgcmV0dXJuZWQgZnJvbSBzdGFydCgpIGhhcyByZXNvbHZlZCcpOwor
ICAgICAgICByZXR1cm4gZmx1c2hBc3luY0V2ZW50cygpLnRoZW4oKCkgPT4geworICAgICAgICAg
IHRyYW5zZm9ybURvbmUgPSB0cnVlOworICAgICAgICB9KTsKKyAgICAgIH0pOworICAgIH0sCisg
ICAgZmx1c2goKSB7CisgICAgICByZXR1cm4gdC5zdGVwKCgpID0+IHsKKyAgICAgICAgYXNzZXJ0
X3RydWUodHJhbnNmb3JtRG9uZSwKKyAgICAgICAgICAgICAgICAgICAgJ2ZsdXNoKCkgc2hvdWxk
IG5vdCBiZSBjYWxsZWQgdW50aWwgdGhlIHByb21pc2UgcmV0dXJuZWQgZnJvbSB0cmFuc2Zvcm0o
KSBoYXMgcmVzb2x2ZWQnKTsKKyAgICAgICAgcmV0dXJuIGZsdXNoQXN5bmNFdmVudHMoKS50aGVu
KCgpID0+IHsKKyAgICAgICAgICBmbHVzaERvbmUgPSB0cnVlOworICAgICAgICB9KTsKKyAgICAg
IH0pOworICAgIH0KKyAgfSwgdW5kZWZpbmVkLCB7IGhpZ2hXYXRlck1hcms6IDEgfSk7CisKKyAg
YXNzZXJ0X3RydWUoc3RhcnRDYWxsZWQsICdzdGFydCgpIHNob3VsZCBiZSBjYWxsZWQgc3luY2hy
b25vdXNseScpOworCisgIGNvbnN0IHdyaXRlciA9IHRzLndyaXRhYmxlLmdldFdyaXRlcigpOwor
ICBjb25zdCB3cml0ZVByb21pc2UgPSB3cml0ZXIud3JpdGUoJ2EnKTsKKyAgcmV0dXJuIHdyaXRl
ci5jbG9zZSgpLnRoZW4oKCkgPT4geworICAgIGFzc2VydF90cnVlKGZsdXNoRG9uZSwgJ3Byb21p
c2UgcmV0dXJuZWQgZnJvbSBmbHVzaCgpIHNob3VsZCBoYXZlIHJlc29sdmVkJyk7CisgICAgcmV0
dXJuIHdyaXRlUHJvbWlzZTsKKyAgfSk7Cit9LCAnVHJhbnNmb3JtU3RyZWFtIHN0YXJ0LCB0cmFu
c2Zvcm0sIGFuZCBmbHVzaCBzaG91bGQgYmUgc3RyaWN0bHkgb3JkZXJlZCcpOworCitwcm9taXNl
X3Rlc3QoKCkgPT4geworICBsZXQgdHJhbnNmb3JtQ2FsbGVkID0gZmFsc2U7CisgIGNvbnN0IHRz
ID0gbmV3IFRyYW5zZm9ybVN0cmVhbSh7CisgICAgdHJhbnNmb3JtKCkgeworICAgICAgdHJhbnNm
b3JtQ2FsbGVkID0gdHJ1ZTsKKyAgICB9CisgIH0sIHVuZGVmaW5lZCwgeyBoaWdoV2F0ZXJNYXJr
OiBJbmZpbml0eSB9KTsKKyAgLy8gdHJhbnNmb3JtKCkgaXMgb25seSBjYWxsZWQgc3luY2hyb25v
dXNseSB3aGVuIHRoZXJlIGlzIG5vIGJhY2twcmVzc3VyZSBhbmQgYWxsIG1pY3JvdGFza3MgaGF2
ZSBydW4uCisgIHJldHVybiBkZWxheSgwKS50aGVuKCgpID0+IHsKKyAgICBjb25zdCB3cml0ZVBy
b21pc2UgPSB0cy53cml0YWJsZS5nZXRXcml0ZXIoKS53cml0ZSgpOworICAgIGFzc2VydF90cnVl
KHRyYW5zZm9ybUNhbGxlZCwgJ3RyYW5zZm9ybSgpIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkJyk7
CisgICAgcmV0dXJuIHdyaXRlUHJvbWlzZTsKKyAgfSk7Cit9LCAnaXQgc2hvdWxkIGJlIHBvc3Np
YmxlIHRvIGNhbGwgdHJhbnNmb3JtKCkgc3luY2hyb25vdXNseScpOworCitwcm9taXNlX3Rlc3Qo
KCkgPT4geworICBjb25zdCB0cyA9IG5ldyBUcmFuc2Zvcm1TdHJlYW0oe30sIHVuZGVmaW5lZCwg
eyBoaWdoV2F0ZXJNYXJrOiAwIH0pOworCisgIGNvbnN0IHdyaXRlciA9IHRzLndyaXRhYmxlLmdl
dFdyaXRlcigpOworICB3cml0ZXIuY2xvc2UoKTsKKworICByZXR1cm4gUHJvbWlzZS5hbGwoW3dy
aXRlci5jbG9zZWQsIHRzLnJlYWRhYmxlLmdldFJlYWRlcigpLmNsb3NlZF0pOworfSwgJ2Nsb3Np
bmcgdGhlIHdyaXRhYmxlIHNob3VsZCBjbG9zZSB0aGUgcmVhZGFibGUgd2hlbiB0aGVyZSBhcmUg
bm8gcXVldWVkIGNodW5rcywgZXZlbiB3aXRoIGJhY2twcmVzc3VyZScpOworCit0ZXN0KCgpID0+
IHsKKyAgbmV3IFRyYW5zZm9ybVN0cmVhbSh7CisgICAgc3RhcnQoY29udHJvbGxlcikgeworICAg
ICAgY29udHJvbGxlci50ZXJtaW5hdGUoKTsKKyAgICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVy
cm9yLCAoKSA9PiBjb250cm9sbGVyLmVucXVldWUoKSwgJ2VucXVldWUgc2hvdWxkIHRocm93Jyk7
CisgICAgfQorICB9KTsKK30sICdlbnF1ZXVlKCkgc2hvdWxkIHRocm93IGFmdGVyIGNvbnRyb2xs
ZXIudGVybWluYXRlKCknKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgbGV0IGNvbnRyb2xs
ZXI7CisgIGNvbnN0IHRzID0gbmV3IFRyYW5zZm9ybVN0cmVhbSh7CisgICAgc3RhcnQoYykgewor
ICAgICAgY29udHJvbGxlciA9IGM7CisgICAgfQorICB9KTsKKyAgY29uc3QgY2FuY2VsUHJvbWlz
ZSA9IHRzLnJlYWRhYmxlLmNhbmNlbCgpOworICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwg
KCkgPT4gY29udHJvbGxlci5lbnF1ZXVlKCksICdlbnF1ZXVlIHNob3VsZCB0aHJvdycpOworICBy
ZXR1cm4gY2FuY2VsUHJvbWlzZTsKK30sICdlbnF1ZXVlKCkgc2hvdWxkIHRocm93IGFmdGVyIHJl
YWRhYmxlLmNhbmNlbCgpJyk7CisKK3Rlc3QoKCkgPT4geworICBuZXcgVHJhbnNmb3JtU3RyZWFt
KHsKKyAgICBzdGFydChjb250cm9sbGVyKSB7CisgICAgICBjb250cm9sbGVyLnRlcm1pbmF0ZSgp
OworICAgICAgY29udHJvbGxlci50ZXJtaW5hdGUoKTsKKyAgICB9CisgIH0pOworfSwgJ2NvbnRy
b2xsZXIudGVybWluYXRlKCkgc2hvdWxkIGRvIG5vdGhpbmcgdGhlIHNlY29uZCB0aW1lIGl0IGlz
IGNhbGxlZCcpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIGxldCBjb250cm9sbGVyOworICBj
b25zdCB0cyA9IG5ldyBUcmFuc2Zvcm1TdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGNv
bnRyb2xsZXIgPSBjOworICAgIH0KKyAgfSk7CisgIGNvbnN0IGNhbmNlbFJlYXNvbiA9IHsgbmFt
ZTogJ2NhbmNlbFJlYXNvbicgfTsKKyAgY29uc3QgY2FuY2VsUHJvbWlzZSA9IHRzLnJlYWRhYmxl
LmNhbmNlbChjYW5jZWxSZWFzb24pOworICBjb250cm9sbGVyLnRlcm1pbmF0ZSgpOworICByZXR1
cm4gUHJvbWlzZS5hbGwoWworICAgIGNhbmNlbFByb21pc2UsCisgICAgcHJvbWlzZV9yZWplY3Rz
X2V4YWN0bHkodCwgY2FuY2VsUmVhc29uLCB0cy53cml0YWJsZS5nZXRXcml0ZXIoKS5jbG9zZWQs
ICdjbG9zZWQgc2hvdWxkIHJlamVjdCB3aXRoIGNhbmNlbFJlYXNvbicpCisgIF0pOworfSwgJ3Rl
cm1pbmF0ZSgpIHNob3VsZCBkbyBub3RoaW5nIGFmdGVyIHJlYWRhYmxlLmNhbmNlbCgpJyk7CisK
K3Byb21pc2VfdGVzdCgoKSA9PiB7CisgIGxldCBjYWxscyA9IDA7CisgIG5ldyBUcmFuc2Zvcm1T
dHJlYW0oeworICAgIHN0YXJ0KCkgeworICAgICAgKytjYWxsczsKKyAgICB9CisgIH0pOworICBy
ZXR1cm4gZmx1c2hBc3luY0V2ZW50cygpLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9lcXVhbHMo
Y2FsbHMsIDEsICdzdGFydCgpIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkIGV4YWN0bHkgb25jZScp
OworICB9KTsKK30sICdzdGFydCgpIHNob3VsZCBub3QgYmUgY2FsbGVkIHR3aWNlJyk7CisKK3Rl
c3QoKCkgPT4geworICBhc3NlcnRfdGhyb3dzX2pzKFJhbmdlRXJyb3IsICgpID0+IG5ldyBUcmFu
c2Zvcm1TdHJlYW0oeyByZWFkYWJsZVR5cGU6ICdieXRlcycgfSksICdjb25zdHJ1Y3RvciBzaG91
bGQgdGhyb3cnKTsKK30sICdzcGVjaWZ5aW5nIGEgZGVmaW5lZCByZWFkYWJsZVR5cGUgc2hvdWxk
IHRocm93Jyk7CisKK3Rlc3QoKCkgPT4geworICBhc3NlcnRfdGhyb3dzX2pzKFJhbmdlRXJyb3Is
ICgpID0+IG5ldyBUcmFuc2Zvcm1TdHJlYW0oeyB3cml0YWJsZVR5cGU6ICdieXRlcycgfSksICdj
b25zdHJ1Y3RvciBzaG91bGQgdGhyb3cnKTsKK30sICdzcGVjaWZ5aW5nIGEgZGVmaW5lZCB3cml0
YWJsZVR5cGUgc2hvdWxkIHRocm93Jyk7CisKK3Rlc3QoKCkgPT4geworICBjbGFzcyBTdWJjbGFz
cyBleHRlbmRzIFRyYW5zZm9ybVN0cmVhbSB7CisgICAgZXh0cmFGdW5jdGlvbigpIHsKKyAgICAg
IHJldHVybiB0cnVlOworICAgIH0KKyAgfQorICBhc3NlcnRfZXF1YWxzKAorICAgICAgT2JqZWN0
LmdldFByb3RvdHlwZU9mKFN1YmNsYXNzLnByb3RvdHlwZSksIFRyYW5zZm9ybVN0cmVhbS5wcm90
b3R5cGUsCisgICAgICAnU3ViY2xhc3MucHJvdG90eXBlXCdzIHByb3RvdHlwZSBzaG91bGQgYmUg
VHJhbnNmb3JtU3RyZWFtLnByb3RvdHlwZScpOworICBhc3NlcnRfZXF1YWxzKE9iamVjdC5nZXRQ
cm90b3R5cGVPZihTdWJjbGFzcyksIFRyYW5zZm9ybVN0cmVhbSwKKyAgICAgICAgICAgICAgICAn
U3ViY2xhc3NcJ3MgcHJvdG90eXBlIHNob3VsZCBiZSBUcmFuc2Zvcm1TdHJlYW0nKTsKKyAgY29u
c3Qgc3ViID0gbmV3IFN1YmNsYXNzKCk7CisgIGFzc2VydF90cnVlKHN1YiBpbnN0YW5jZW9mIFRy
YW5zZm9ybVN0cmVhbSwKKyAgICAgICAgICAgICAgJ1N1YmNsYXNzIG9iamVjdCBzaG91bGQgYmUg
YW4gaW5zdGFuY2Ugb2YgVHJhbnNmb3JtU3RyZWFtJyk7CisgIGFzc2VydF90cnVlKHN1YiBpbnN0
YW5jZW9mIFN1YmNsYXNzLAorICAgICAgICAgICAgICAnU3ViY2xhc3Mgb2JqZWN0IHNob3VsZCBi
ZSBhbiBpbnN0YW5jZSBvZiBTdWJjbGFzcycpOworICBjb25zdCByZWFkYWJsZUdldHRlciA9IE9i
amVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoCisgICAgICBUcmFuc2Zvcm1TdHJlYW0ucHJv
dG90eXBlLCAncmVhZGFibGUnKS5nZXQ7CisgIGFzc2VydF9lcXVhbHMocmVhZGFibGVHZXR0ZXIu
Y2FsbChzdWIpLCBzdWIucmVhZGFibGUsCisgICAgICAgICAgICAgICAgJ1N1YmNsYXNzIG9iamVj
dCBzaG91bGQgcGFzcyBicmFuZCBjaGVjaycpOworICBhc3NlcnRfdHJ1ZShzdWIuZXh0cmFGdW5j
dGlvbigpLAorICAgICAgICAgICAgICAnZXh0cmFGdW5jdGlvbigpIHNob3VsZCBiZSBwcmVzZW50
IG9uIFN1YmNsYXNzIG9iamVjdCcpOworfSwgJ1N1YmNsYXNzaW5nIFRyYW5zZm9ybVN0cmVhbSBz
aG91bGQgd29yaycpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1zL2dlbmVyYWwuYW55Lndvcmtl
ci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3N0cmVhbXMvdHJhbnNmb3JtLXN0cmVhbXMvZ2VuZXJhbC5hbnkud29ya2VyLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5kZGEzNDQ5Y2JkZTM3OWJlNjE2MDU3OTU0OTdjMWIxNThiODFhYTUx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1zL2dlbmVyYWwuYW55Lndvcmtlci1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwzMSBAQAorCitGQUlMIFRyYW5zZm9ybVN0cmVhbSBjYW4gYmUg
Y29uc3RydWN0ZWQgd2l0aCBhIHRyYW5zZm9ybSBmdW5jdGlvbiBDYW4ndCBmaW5kIHZhcmlhYmxl
OiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgVHJhbnNmb3JtU3RyZWFtIGNhbiBiZSBjb25zdHJ1Y3Rl
ZCB3aXRoIG5vIHRyYW5zZm9ybSBmdW5jdGlvbiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zv
cm1TdHJlYW0KK0ZBSUwgVHJhbnNmb3JtU3RyZWFtIHdyaXRhYmxlIHN0YXJ0cyBpbiB0aGUgd3Jp
dGFibGUgc3RhdGUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIElk
ZW50aXR5IFRyYW5zZm9ybVN0cmVhbTogY2FuIHJlYWQgZnJvbSByZWFkYWJsZSB3aGF0IGlzIHB1
dCBpbnRvIHdyaXRhYmxlIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJ
TCBVcHBlcmNhc2VyIHN5bmMgVHJhbnNmb3JtU3RyZWFtOiBjYW4gcmVhZCBmcm9tIHJlYWRhYmxl
IHRyYW5zZm9ybWVkIHZlcnNpb24gb2Ygd2hhdCBpcyBwdXQgaW50byB3cml0YWJsZSBDYW4ndCBm
aW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgVXBwZXJjYXNlci1kb3VibGVyIHN5
bmMgVHJhbnNmb3JtU3RyZWFtOiBjYW4gcmVhZCBib3RoIGNodW5rcyBwdXQgaW50byB0aGUgcmVh
ZGFibGUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIFVwcGVyY2Fz
ZXIgYXN5bmMgVHJhbnNmb3JtU3RyZWFtOiBjYW4gcmVhZCBmcm9tIHJlYWRhYmxlIHRyYW5zZm9y
bWVkIHZlcnNpb24gb2Ygd2hhdCBpcyBwdXQgaW50byB3cml0YWJsZSBDYW4ndCBmaW5kIHZhcmlh
YmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgVXBwZXJjYXNlci1kb3VibGVyIGFzeW5jIFRyYW5z
Zm9ybVN0cmVhbTogY2FuIHJlYWQgYm90aCBjaHVua3MgcHV0IGludG8gdGhlIHJlYWRhYmxlIENh
bid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCBUcmFuc2Zvcm1TdHJlYW06
IGJ5IGRlZmF1bHQsIGNsb3NpbmcgdGhlIHdyaXRhYmxlIGNsb3NlcyB0aGUgcmVhZGFibGUgKHdo
ZW4gdGhlcmUgYXJlIG5vIHF1ZXVlZCB3cml0ZXMpIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5z
Zm9ybVN0cmVhbQorRkFJTCBUcmFuc2Zvcm1TdHJlYW06IGJ5IGRlZmF1bHQsIGNsb3NpbmcgdGhl
IHdyaXRhYmxlIHdhaXRzIGZvciB0cmFuc2Zvcm1zIHRvIGZpbmlzaCBiZWZvcmUgY2xvc2luZyBi
b3RoIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCBUcmFuc2Zvcm1T
dHJlYW06IGJ5IGRlZmF1bHQsIGNsb3NpbmcgdGhlIHdyaXRhYmxlIGNsb3NlcyB0aGUgcmVhZGFi
bGUgYWZ0ZXIgc3luYyBlbnF1ZXVlcyBhbmQgYXN5bmMgZG9uZSBDYW4ndCBmaW5kIHZhcmlhYmxl
OiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgVHJhbnNmb3JtU3RyZWFtOiBieSBkZWZhdWx0LCBjbG9z
aW5nIHRoZSB3cml0YWJsZSBjbG9zZXMgdGhlIHJlYWRhYmxlIGFmdGVyIGFzeW5jIGVucXVldWVz
IGFuZCBhc3luYyBkb25lIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJ
TCBUcmFuc2Zvcm0gc3RyZWFtIHNob3VsZCBjYWxsIHRyYW5zZm9ybWVyIG1ldGhvZHMgYXMgbWV0
aG9kcyBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgbWV0aG9kcyBz
aG91bGQgbm90IG5vdCBoYXZlIC5hcHBseSgpIG9yIC5jYWxsKCkgY2FsbGVkIENhbid0IGZpbmQg
dmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCBUcmFuc2Zvcm1TdHJlYW0gc3RhcnQsIHRy
YW5zZm9ybSwgYW5kIGZsdXNoIHNob3VsZCBiZSBzdHJpY3RseSBvcmRlcmVkIENhbid0IGZpbmQg
dmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCBpdCBzaG91bGQgYmUgcG9zc2libGUgdG8g
Y2FsbCB0cmFuc2Zvcm0oKSBzeW5jaHJvbm91c2x5IENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5z
Zm9ybVN0cmVhbQorRkFJTCBjbG9zaW5nIHRoZSB3cml0YWJsZSBzaG91bGQgY2xvc2UgdGhlIHJl
YWRhYmxlIHdoZW4gdGhlcmUgYXJlIG5vIHF1ZXVlZCBjaHVua3MsIGV2ZW4gd2l0aCBiYWNrcHJl
c3N1cmUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIGVucXVldWUo
KSBzaG91bGQgdGhyb3cgYWZ0ZXIgY29udHJvbGxlci50ZXJtaW5hdGUoKSBDYW4ndCBmaW5kIHZh
cmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgZW5xdWV1ZSgpIHNob3VsZCB0aHJvdyBhZnRl
ciByZWFkYWJsZS5jYW5jZWwoKSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0K
K0ZBSUwgY29udHJvbGxlci50ZXJtaW5hdGUoKSBzaG91bGQgZG8gbm90aGluZyB0aGUgc2Vjb25k
IHRpbWUgaXQgaXMgY2FsbGVkIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQor
RkFJTCB0ZXJtaW5hdGUoKSBzaG91bGQgZG8gbm90aGluZyBhZnRlciByZWFkYWJsZS5jYW5jZWwo
KSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgc3RhcnQoKSBzaG91
bGQgbm90IGJlIGNhbGxlZCB0d2ljZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJl
YW0KK0ZBSUwgc3BlY2lmeWluZyBhIGRlZmluZWQgcmVhZGFibGVUeXBlIHNob3VsZCB0aHJvdyBh
c3NlcnRfdGhyb3dzX2pzOiBjb25zdHJ1Y3RvciBzaG91bGQgdGhyb3cgZnVuY3Rpb24gIigpID0+
IG5ldyBUcmFuc2Zvcm1TdHJlYW0oeyByZWFkYWJsZVR5cGU6ICdieXRlcycgfSkiIHRocmV3IG9i
amVjdCAiUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVh
bSIgKCJSZWZlcmVuY2VFcnJvciIpIGV4cGVjdGVkIGluc3RhbmNlIG9mIGZ1bmN0aW9uICJmdW5j
dGlvbiBSYW5nZUVycm9yKCkgeworICAgIFtuYXRpdmUgY29kZV0KK30iICgiUmFuZ2VFcnJvciIp
CitGQUlMIHNwZWNpZnlpbmcgYSBkZWZpbmVkIHdyaXRhYmxlVHlwZSBzaG91bGQgdGhyb3cgYXNz
ZXJ0X3Rocm93c19qczogY29uc3RydWN0b3Igc2hvdWxkIHRocm93IGZ1bmN0aW9uICIoKSA9PiBu
ZXcgVHJhbnNmb3JtU3RyZWFtKHsgd3JpdGFibGVUeXBlOiAnYnl0ZXMnIH0pIiB0aHJldyBvYmpl
Y3QgIlJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0i
ICgiUmVmZXJlbmNlRXJyb3IiKSBleHBlY3RlZCBpbnN0YW5jZSBvZiBmdW5jdGlvbiAiZnVuY3Rp
b24gUmFuZ2VFcnJvcigpIHsKKyAgICBbbmF0aXZlIGNvZGVdCit9IiAoIlJhbmdlRXJyb3IiKQor
RkFJTCBTdWJjbGFzc2luZyBUcmFuc2Zvcm1TdHJlYW0gc2hvdWxkIHdvcmsgQ2FuJ3QgZmluZCB2
YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy9nZW5l
cmFsLmFueS53b3JrZXIuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy9nZW5lcmFsLmFueS53b3JrZXIuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4yMzgyOTEzNTI4ZTY5M2IzYTVkNTZjNjYwYTQ1MDYwOTgwYjU0OGMzCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1zL2dlbmVyYWwuYW55Lndvcmtlci5odG1sCkBA
IC0wLDAgKzEgQEAKKzwhLS0gVGhpcyBmaWxlIGlzIHJlcXVpcmVkIGZvciBXZWJLaXQgdGVzdCBp
bmZyYXN0cnVjdHVyZSB0byBydW4gdGhlIHRlbXBsYXRlZCB0ZXN0IC0tPgpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy9saXBmdXp6LmFueS1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMvdHJhbnNmb3JtLXN0cmVhbXMvbGlwZnV6ei5hbnktZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmQwNjBhNzExYWI1NDdkYmQzMzBhN2ZiNWQzYTc4ODU3NDc5ODMwM2IKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvdHJhbnNmb3JtLXN0cmVhbXMvbGlwZnV6ei5hbnktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MjIgQEAKKworRkFJTCB0ZXN0aW5nICIiIChsZW5ndGggMSkgQ2FuJ3QgZmluZCB2YXJpYWJsZTog
VHJhbnNmb3JtU3RyZWFtCitGQUlMIHRlc3RpbmcgIiIgKGxlbmd0aCAwKSBDYW4ndCBmaW5kIHZh
cmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgdGVzdGluZyAie3tpbjF9fSIgKGxlbmd0aCAx
KSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgdGVzdGluZyAient7
aW4xfX0iIChsZW5ndGggMSkgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitG
QUlMIHRlc3RpbmcgInt7aW4xfX1xIiAobGVuZ3RoIDEpIENhbid0IGZpbmQgdmFyaWFibGU6IFRy
YW5zZm9ybVN0cmVhbQorRkFJTCB0ZXN0aW5nICJ7e2luMX19e3tpbjF9IiAobGVuZ3RoIDEpIENh
bid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCB0ZXN0aW5nICJ7e2luMX19
e3tpbjF9LH0iIChsZW5ndGggMikgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFt
CitGQUlMIHRlc3RpbmcgInt7aW4xLH19IiAobGVuZ3RoIDIpIENhbid0IGZpbmQgdmFyaWFibGU6
IFRyYW5zZm9ybVN0cmVhbQorRkFJTCB0ZXN0aW5nICJ7eyxpbjF9fSIgKGxlbmd0aCAyKSBDYW4n
dCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgdGVzdGluZyAieyx7aW4xfX0i
IChsZW5ndGggMikgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIHRl
c3RpbmcgInt7LGluMX0iIChsZW5ndGggMikgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3Jt
U3RyZWFtCitGQUlMIHRlc3RpbmcgInsiIChsZW5ndGggMSkgQ2FuJ3QgZmluZCB2YXJpYWJsZTog
VHJhbnNmb3JtU3RyZWFtCitGQUlMIHRlc3RpbmcgInssIiAobGVuZ3RoIDIpIENhbid0IGZpbmQg
dmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCB0ZXN0aW5nICJ7LHssaSxuLDEsfSx9IiAo
bGVuZ3RoIDcpIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCB0ZXN0
aW5nICJ7e2luMX19e3tpbjJ9fXt7aW4xfX0iIChsZW5ndGggMSkgQ2FuJ3QgZmluZCB2YXJpYWJs
ZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIHRlc3RpbmcgInt7d3Jvbmd9fSIgKGxlbmd0aCAxKSBD
YW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgdGVzdGluZyAie3t3cm9u
LGd9fSIgKGxlbmd0aCAyKSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZB
SUwgdGVzdGluZyAie3txdWluZX19IiAobGVuZ3RoIDEpIENhbid0IGZpbmQgdmFyaWFibGU6IFRy
YW5zZm9ybVN0cmVhbQorRkFJTCB0ZXN0aW5nICJ7e2JvZ3VzUGFydGlhbH19IiAobGVuZ3RoIDEp
IENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCB0ZXN0aW5nICJ7e2Jv
Z3VzUGFydGlhbH19fSIgKGxlbmd0aCAxKSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1T
dHJlYW0KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1zL2xpcGZ1enouYW55Lmh0bWwgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvdHJhbnNmb3Jt
LXN0cmVhbXMvbGlwZnV6ei5hbnkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMzgyOTEzNTI4ZTY5M2IzYTVk
NTZjNjYwYTQ1MDYwOTgwYjU0OGMzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1zL2xp
cGZ1enouYW55Lmh0bWwKQEAgLTAsMCArMSBAQAorPCEtLSBUaGlzIGZpbGUgaXMgcmVxdWlyZWQg
Zm9yIFdlYktpdCB0ZXN0IGluZnJhc3RydWN0dXJlIHRvIHJ1biB0aGUgdGVtcGxhdGVkIHRlc3Qg
LS0+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1z
L2xpcGZ1enouYW55LmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1zL2xpcGZ1enouYW55LmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmM4YzM4MDNjNmRmYjRiMWQyNTljZWQwNjI3NTJlYTcwNDg4NzJlYzkKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
dHJhbnNmb3JtLXN0cmVhbXMvbGlwZnV6ei5hbnkuanMKQEAgLTAsMCArMSwxNjMgQEAKKy8vIE1F
VEE6IGdsb2JhbD13aW5kb3csd29ya2VyLGpzc2hlbGwKKyd1c2Ugc3RyaWN0JzsKKworY2xhc3Mg
TGlwRnV6elRyYW5zZm9ybWVyIHsKKyAgY29uc3RydWN0b3Ioc3Vic3RpdHV0aW9ucykgeworICAg
IHRoaXMuc3Vic3RpdHV0aW9ucyA9IHN1YnN0aXR1dGlvbnM7CisgICAgdGhpcy5wYXJ0aWFsQ2h1
bmsgPSAnJzsKKyAgICB0aGlzLmxhc3RJbmRleCA9IHVuZGVmaW5lZDsKKyAgfQorCisgIHRyYW5z
Zm9ybShjaHVuaywgY29udHJvbGxlcikgeworICAgIGNodW5rID0gdGhpcy5wYXJ0aWFsQ2h1bmsg
KyBjaHVuazsKKyAgICB0aGlzLnBhcnRpYWxDaHVuayA9ICcnOworICAgIC8vIGxhc3RJbmRleCBp
cyB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IGNoYXJhY3RlciBhZnRlciB0aGUgbGFzdCBzdWJzdGl0
dXRpb24uCisgICAgdGhpcy5sYXN0SW5kZXggPSAwOworICAgIGNodW5rID0gY2h1bmsucmVwbGFj
ZSgvXHtceyhbYS16QS1aMC05Xy1dKylcfVx9L2csIHRoaXMucmVwbGFjZVRhZy5iaW5kKHRoaXMp
KTsKKyAgICAvLyBSZWd1bGFyIGV4cHJlc3Npb24gZm9yIGFuIGluY29tcGxldGUgdGVtcGxhdGUg
YXQgdGhlIGVuZCBvZiBhIHN0cmluZy4KKyAgICBjb25zdCBwYXJ0aWFsQXRFbmRSZWdleHAgPSAv
XHsoXHsoW2EtekEtWjAtOV8tXSsoXH0pPyk/KT8kL2c7CisgICAgLy8gQXZvaWQgbG9va2luZyBh
dCBhbnkgY2hhcmFjdGVycyB0aGF0IGhhdmUgYWxyZWFkeSBiZWVuIHN1YnN0aXR1dGVkLgorICAg
IHBhcnRpYWxBdEVuZFJlZ2V4cC5sYXN0SW5kZXggPSB0aGlzLmxhc3RJbmRleDsKKyAgICB0aGlz
Lmxhc3RJbmRleCA9IHVuZGVmaW5lZDsKKyAgICBjb25zdCBtYXRjaCA9IHBhcnRpYWxBdEVuZFJl
Z2V4cC5leGVjKGNodW5rKTsKKyAgICBpZiAobWF0Y2gpIHsKKyAgICAgIHRoaXMucGFydGlhbENo
dW5rID0gY2h1bmsuc3Vic3RyaW5nKG1hdGNoLmluZGV4KTsKKyAgICAgIGNodW5rID0gY2h1bmsu
c3Vic3RyaW5nKDAsIG1hdGNoLmluZGV4KTsKKyAgICB9CisgICAgY29udHJvbGxlci5lbnF1ZXVl
KGNodW5rKTsKKyAgfQorCisgIGZsdXNoKGNvbnRyb2xsZXIpIHsKKyAgICBpZiAodGhpcy5wYXJ0
aWFsQ2h1bmsubGVuZ3RoID4gMCkgeworICAgICAgY29udHJvbGxlci5lbnF1ZXVlKHRoaXMucGFy
dGlhbENodW5rKTsKKyAgICB9CisgIH0KKworICByZXBsYWNlVGFnKG1hdGNoLCBwMSwgb2Zmc2V0
KSB7CisgICAgbGV0IHJlcGxhY2VtZW50ID0gdGhpcy5zdWJzdGl0dXRpb25zW3AxXTsKKyAgICBp
ZiAocmVwbGFjZW1lbnQgPT09IHVuZGVmaW5lZCkgeworICAgICAgcmVwbGFjZW1lbnQgPSAnJzsK
KyAgICB9CisgICAgdGhpcy5sYXN0SW5kZXggPSBvZmZzZXQgKyByZXBsYWNlbWVudC5sZW5ndGg7
CisgICAgcmV0dXJuIHJlcGxhY2VtZW50OworICB9Cit9CisKK2NvbnN0IHN1YnN0aXR1dGlvbnMg
PSB7CisgIGluMTogJ291dDEnLAorICBpbjI6ICdvdXQyJywKKyAgcXVpbmU6ICd7e3F1aW5lfX0n
LAorICBib2d1c1BhcnRpYWw6ICd7e2luY29tcGxldGVSZXN1bHR9JworfTsKKworY29uc3QgY2Fz
ZXMgPSBbCisgIHsKKyAgICBpbnB1dDogWycnXSwKKyAgICBvdXRwdXQ6IFsnJ10KKyAgfSwKKyAg
eworICAgIGlucHV0OiBbXSwKKyAgICBvdXRwdXQ6IFtdCisgIH0sCisgIHsKKyAgICBpbnB1dDog
Wyd7e2luMX19J10sCisgICAgb3V0cHV0OiBbJ291dDEnXQorICB9LAorICB7CisgICAgaW5wdXQ6
IFsnent7aW4xfX0nXSwKKyAgICBvdXRwdXQ6IFsnem91dDEnXQorICB9LAorICB7CisgICAgaW5w
dXQ6IFsne3tpbjF9fXEnXSwKKyAgICBvdXRwdXQ6IFsnb3V0MXEnXQorICB9LAorICB7CisgICAg
aW5wdXQ6IFsne3tpbjF9fXt7aW4xfSddLAorICAgIG91dHB1dDogWydvdXQxJywgJ3t7aW4xfSdd
CisgIH0sCisgIHsKKyAgICBpbnB1dDogWyd7e2luMX19e3tpbjF9JywgJ30nXSwKKyAgICBvdXRw
dXQ6IFsnb3V0MScsICdvdXQxJ10KKyAgfSwKKyAgeworICAgIGlucHV0OiBbJ3t7aW4xJywgJ319
J10sCisgICAgb3V0cHV0OiBbJycsICdvdXQxJ10KKyAgfSwKKyAgeworICAgIGlucHV0OiBbJ3t7
JywgJ2luMX19J10sCisgICAgb3V0cHV0OiBbJycsICdvdXQxJ10KKyAgfSwKKyAgeworICAgIGlu
cHV0OiBbJ3snLCAne2luMX19J10sCisgICAgb3V0cHV0OiBbJycsICdvdXQxJ10KKyAgfSwKKyAg
eworICAgIGlucHV0OiBbJ3t7JywgJ2luMX0nXSwKKyAgICBvdXRwdXQ6IFsnJywgJycsICd7e2lu
MX0nXQorICB9LAorICB7CisgICAgaW5wdXQ6IFsneyddLAorICAgIG91dHB1dDogWycnLCAneydd
CisgIH0sCisgIHsKKyAgICBpbnB1dDogWyd7JywgJyddLAorICAgIG91dHB1dDogWycnLCAnJywg
J3snXQorICB9LAorICB7CisgICAgaW5wdXQ6IFsneycsICd7JywgJ2knLCAnbicsICcxJywgJ30n
LCAnfSddLAorICAgIG91dHB1dDogWycnLCAnJywgJycsICcnLCAnJywgJycsICdvdXQxJ10KKyAg
fSwKKyAgeworICAgIGlucHV0OiBbJ3t7aW4xfX17e2luMn19e3tpbjF9fSddLAorICAgIG91dHB1
dDogWydvdXQxb3V0Mm91dDEnXQorICB9LAorICB7CisgICAgaW5wdXQ6IFsne3t3cm9uZ319J10s
CisgICAgb3V0cHV0OiBbJyddCisgIH0sCisgIHsKKyAgICBpbnB1dDogWyd7e3dyb24nLCAnZ319
J10sCisgICAgb3V0cHV0OiBbJycsICcnXQorICB9LAorICB7CisgICAgaW5wdXQ6IFsne3txdWlu
ZX19J10sCisgICAgb3V0cHV0OiBbJ3t7cXVpbmV9fSddCisgIH0sCisgIHsKKyAgICBpbnB1dDog
Wyd7e2JvZ3VzUGFydGlhbH19J10sCisgICAgb3V0cHV0OiBbJ3t7aW5jb21wbGV0ZVJlc3VsdH0n
XQorICB9LAorICB7CisgICAgaW5wdXQ6IFsne3tib2d1c1BhcnRpYWx9fX0nXSwKKyAgICBvdXRw
dXQ6IFsne3tpbmNvbXBsZXRlUmVzdWx0fX0nXQorICB9CitdOworCitmb3IgKGNvbnN0IHRlc3RD
YXNlIG9mIGNhc2VzKSB7CisgIGNvbnN0IGlucHV0Q2h1bmtzID0gdGVzdENhc2UuaW5wdXQ7Cisg
IGNvbnN0IG91dHB1dENodW5rcyA9IHRlc3RDYXNlLm91dHB1dDsKKyAgcHJvbWlzZV90ZXN0KCgp
ID0+IHsKKyAgICBjb25zdCBsZnQgPSBuZXcgVHJhbnNmb3JtU3RyZWFtKG5ldyBMaXBGdXp6VHJh
bnNmb3JtZXIoc3Vic3RpdHV0aW9ucykpOworICAgIGNvbnN0IHdyaXRlciA9IGxmdC53cml0YWJs
ZS5nZXRXcml0ZXIoKTsKKyAgICBjb25zdCBwcm9taXNlcyA9IFtdOworICAgIGZvciAoY29uc3Qg
aW5wdXRDaHVuayBvZiBpbnB1dENodW5rcykgeworICAgICAgcHJvbWlzZXMucHVzaCh3cml0ZXIu
d3JpdGUoaW5wdXRDaHVuaykpOworICAgIH0KKyAgICBwcm9taXNlcy5wdXNoKHdyaXRlci5jbG9z
ZSgpKTsKKyAgICBjb25zdCByZWFkZXIgPSBsZnQucmVhZGFibGUuZ2V0UmVhZGVyKCk7CisgICAg
bGV0IHJlYWRlckNoYWluID0gUHJvbWlzZS5yZXNvbHZlKCk7CisgICAgZm9yIChjb25zdCBvdXRw
dXRDaHVuayBvZiBvdXRwdXRDaHVua3MpIHsKKyAgICAgIHJlYWRlckNoYWluID0gcmVhZGVyQ2hh
aW4udGhlbigoKSA9PiB7CisgICAgICAgIHJldHVybiByZWFkZXIucmVhZCgpLnRoZW4oKHsgdmFs
dWUsIGRvbmUgfSkgPT4geworICAgICAgICAgIGFzc2VydF9mYWxzZShkb25lLCBgZG9uZSBzaG91
bGQgYmUgZmFsc2Ugd2hlbiByZWFkaW5nICR7b3V0cHV0Q2h1bmt9YCk7CisgICAgICAgICAgYXNz
ZXJ0X2VxdWFscyh2YWx1ZSwgb3V0cHV0Q2h1bmssIGB2YWx1ZSBzaG91bGQgbWF0Y2ggb3V0cHV0
Q2h1bmtgKTsKKyAgICAgICAgfSk7CisgICAgICB9KTsKKyAgICB9CisgICAgcmVhZGVyQ2hhaW4g
PSByZWFkZXJDaGFpbi50aGVuKCgpID0+IHsKKyAgICAgIHJldHVybiByZWFkZXIucmVhZCgpLnRo
ZW4oKHsgZG9uZSB9KSA9PiBhc3NlcnRfdHJ1ZShkb25lLCBgZG9uZSBzaG91bGQgYmUgdHJ1ZWAp
KTsKKyAgICB9KTsKKyAgICBwcm9taXNlcy5wdXNoKHJlYWRlckNoYWluKTsKKyAgICByZXR1cm4g
UHJvbWlzZS5hbGwocHJvbWlzZXMpOworICB9LCBgdGVzdGluZyAiJHtpbnB1dENodW5rc30iIChs
ZW5ndGggJHtpbnB1dENodW5rcy5sZW5ndGh9KWApOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJl
YW1zL2xpcGZ1enouYW55Lndvcmtlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvdHJhbnNmb3JtLXN0cmVhbXMvbGlwZnV6
ei5hbnkud29ya2VyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMDYwYTcxMWFiNTQ3ZGJkMzMw
YTdmYjVkM2E3ODg1NzQ3OTgzMDNiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1zL2xp
cGZ1enouYW55Lndvcmtlci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyMiBAQAorCitGQUlMIHRl
c3RpbmcgIiIgKGxlbmd0aCAxKSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0K
K0ZBSUwgdGVzdGluZyAiIiAobGVuZ3RoIDApIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9y
bVN0cmVhbQorRkFJTCB0ZXN0aW5nICJ7e2luMX19IiAobGVuZ3RoIDEpIENhbid0IGZpbmQgdmFy
aWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCB0ZXN0aW5nICJ6e3tpbjF9fSIgKGxlbmd0aCAx
KSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgdGVzdGluZyAie3tp
bjF9fXEiIChsZW5ndGggMSkgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitG
QUlMIHRlc3RpbmcgInt7aW4xfX17e2luMX0iIChsZW5ndGggMSkgQ2FuJ3QgZmluZCB2YXJpYWJs
ZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIHRlc3RpbmcgInt7aW4xfX17e2luMX0sfSIgKGxlbmd0
aCAyKSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgdGVzdGluZyAi
e3tpbjEsfX0iIChsZW5ndGggMikgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFt
CitGQUlMIHRlc3RpbmcgInt7LGluMX19IiAobGVuZ3RoIDIpIENhbid0IGZpbmQgdmFyaWFibGU6
IFRyYW5zZm9ybVN0cmVhbQorRkFJTCB0ZXN0aW5nICJ7LHtpbjF9fSIgKGxlbmd0aCAyKSBDYW4n
dCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgdGVzdGluZyAie3ssaW4xfSIg
KGxlbmd0aCAyKSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgdGVz
dGluZyAieyIgKGxlbmd0aCAxKSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0K
K0ZBSUwgdGVzdGluZyAieywiIChsZW5ndGggMikgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNm
b3JtU3RyZWFtCitGQUlMIHRlc3RpbmcgInsseyxpLG4sMSx9LH0iIChsZW5ndGggNykgQ2FuJ3Qg
ZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIHRlc3RpbmcgInt7aW4xfX17e2lu
Mn19e3tpbjF9fSIgKGxlbmd0aCAxKSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJl
YW0KK0ZBSUwgdGVzdGluZyAie3t3cm9uZ319IiAobGVuZ3RoIDEpIENhbid0IGZpbmQgdmFyaWFi
bGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCB0ZXN0aW5nICJ7e3dyb24sZ319IiAobGVuZ3RoIDIp
IENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCB0ZXN0aW5nICJ7e3F1
aW5lfX0iIChsZW5ndGggMSkgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitG
QUlMIHRlc3RpbmcgInt7Ym9ndXNQYXJ0aWFsfX0iIChsZW5ndGggMSkgQ2FuJ3QgZmluZCB2YXJp
YWJsZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIHRlc3RpbmcgInt7Ym9ndXNQYXJ0aWFsfX19IiAo
bGVuZ3RoIDEpIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
dHJhbnNmb3JtLXN0cmVhbXMvbGlwZnV6ei5hbnkud29ya2VyLmh0bWwgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvdHJhbnNmb3JtLXN0cmVhbXMv
bGlwZnV6ei5hbnkud29ya2VyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjM4MjkxMzUyOGU2OTNiM2E1ZDU2
YzY2MGE0NTA2MDk4MGI1NDhjMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy9saXBm
dXp6LmFueS53b3JrZXIuaHRtbApAQCAtMCwwICsxIEBACis8IS0tIFRoaXMgZmlsZSBpcyByZXF1
aXJlZCBmb3IgV2ViS2l0IHRlc3QgaW5mcmFzdHJ1Y3R1cmUgdG8gcnVuIHRoZSB0ZW1wbGF0ZWQg
dGVzdCAtLT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvdHJhbnNmb3JtLXN0
cmVhbXMvcGF0Y2hlZC1nbG9iYWwuYW55LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy9wYXRj
aGVkLWdsb2JhbC5hbnktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhlNmRkNzVlNGJkNmJhODhh
NjMyYjdiMzU0YmM3NDdkMjY5NGM0MzEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvdHJhbnNmb3JtLXN0cmVhbXMv
cGF0Y2hlZC1nbG9iYWwuYW55LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKKworRkFJTCBU
cmFuc2Zvcm1TdHJlYW0gY29uc3RydWN0b3Igc2hvdWxkIG5vdCBjYWxsIHNldHRlcnMgZm9yIGhp
Z2hXYXRlck1hcmsgb3Igc2l6ZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0K
K0ZBSUwgVHJhbnNmb3JtU3RyZWFtIHNob3VsZCB1c2UgdGhlIG9yaWdpbmFsIHZhbHVlIG9mIFJl
YWRhYmxlU3RyZWFtIGFuZCBXcml0YWJsZVN0cmVhbSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFu
c2Zvcm1TdHJlYW0KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1zL3BhdGNoZWQtZ2xvYmFsLmFu
eS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJl
YW1zL3RyYW5zZm9ybS1zdHJlYW1zL3BhdGNoZWQtZ2xvYmFsLmFueS5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjIzODI5MTM1MjhlNjkzYjNhNWQ1NmM2NjBhNDUwNjA5ODBiNTQ4YzMKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
dHJhbnNmb3JtLXN0cmVhbXMvcGF0Y2hlZC1nbG9iYWwuYW55Lmh0bWwKQEAgLTAsMCArMSBAQAor
PCEtLSBUaGlzIGZpbGUgaXMgcmVxdWlyZWQgZm9yIFdlYktpdCB0ZXN0IGluZnJhc3RydWN0dXJl
IHRvIHJ1biB0aGUgdGVtcGxhdGVkIHRlc3QgLS0+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1zL3BhdGNoZWQtZ2xvYmFsLmFueS5qcyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy90cmFuc2Zvcm0t
c3RyZWFtcy9wYXRjaGVkLWdsb2JhbC5hbnkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmYzNTNiYzI0MWZmYWIx
MmM1NTg5MTI4NTE5NDA3ODViY2RmNjJmMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFt
cy9wYXRjaGVkLWdsb2JhbC5hbnkuanMKQEAgLTAsMCArMSw0NSBAQAorLy8gTUVUQTogZ2xvYmFs
PXdpbmRvdyx3b3JrZXIsanNzaGVsbAorJ3VzZSBzdHJpY3QnOworCisvLyBUZXN0cyB3aGljaCBw
YXRjaCB0aGUgZ2xvYmFsIGVudmlyb25tZW50IGFyZSBrZXB0IHNlcGFyYXRlIHRvIGF2b2lkIGlu
dGVyZmVyaW5nIHdpdGggb3RoZXIgdGVzdHMuCisKKy8vIGVzbGludC1kaXNhYmxlLW5leHQtbGlu
ZSBuby1leHRlbmQtbmF0aXZlLCBhY2Nlc3Nvci1wYWlycworT2JqZWN0LmRlZmluZVByb3BlcnR5
KE9iamVjdC5wcm90b3R5cGUsICdoaWdoV2F0ZXJNYXJrJywgeworICBzZXQoKSB7IHRocm93IG5l
dyBFcnJvcignaGlnaFdhdGVyTWFyayBzZXR0ZXIgY2FsbGVkJyk7IH0KK30pOworCisvLyBlc2xp
bnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tZXh0ZW5kLW5hdGl2ZSwgYWNjZXNzb3ItcGFpcnMKK09i
amVjdC5kZWZpbmVQcm9wZXJ0eShPYmplY3QucHJvdG90eXBlLCAnc2l6ZScsIHsKKyAgc2V0KCkg
eyB0aHJvdyBuZXcgRXJyb3IoJ3NpemUgc2V0dGVyIGNhbGxlZCcpOyB9Cit9KTsKKwordGVzdCgo
KSA9PiB7CisgIGFzc2VydF9ub3RfZXF1YWxzKG5ldyBUcmFuc2Zvcm1TdHJlYW0oKSwgbnVsbCwg
J2NvbnN0cnVjdG9yIHNob3VsZCB3b3JrJyk7Cit9LCAnVHJhbnNmb3JtU3RyZWFtIGNvbnN0cnVj
dG9yIHNob3VsZCBub3QgY2FsbCBzZXR0ZXJzIGZvciBoaWdoV2F0ZXJNYXJrIG9yIHNpemUnKTsK
KwordGVzdCh0ID0+IHsKKyAgY29uc3Qgb2xkUmVhZGFibGVTdHJlYW0gPSBSZWFkYWJsZVN0cmVh
bTsKKyAgY29uc3Qgb2xkV3JpdGFibGVTdHJlYW0gPSBXcml0YWJsZVN0cmVhbTsKKyAgY29uc3Qg
Z2V0UmVhZGVyID0gUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLmdldFJlYWRlcjsKKyAgY29uc3Qg
Z2V0V3JpdGVyID0gV3JpdGFibGVTdHJlYW0ucHJvdG90eXBlLmdldFdyaXRlcjsKKworICAvLyBS
ZXBsYWNlIFJlYWRhYmxlU3RyZWFtIGFuZCBXcml0YWJsZVN0cmVhbSB3aXRoIGJyb2tlbiB2ZXJz
aW9ucy4KKyAgUmVhZGFibGVTdHJlYW0gPSBmdW5jdGlvbiAoKSB7CisgICAgdGhyb3cgbmV3IEVy
cm9yKCdDYWxsZWQgdGhlIGdsb2JhbCBSZWFkYWJsZVN0cmVhbSBjb25zdHJ1Y3RvcicpOworICB9
OworICBXcml0YWJsZVN0cmVhbSA9IGZ1bmN0aW9uICgpIHsKKyAgICB0aHJvdyBuZXcgRXJyb3Io
J0NhbGxlZCB0aGUgZ2xvYmFsIFdyaXRhYmxlU3RyZWFtIGNvbnN0cnVjdG9yJyk7CisgIH07Cisg
IHQuYWRkX2NsZWFudXAoKCkgPT4geworICAgIFJlYWRhYmxlU3RyZWFtID0gb2xkUmVhZGFibGVT
dHJlYW07CisgICAgV3JpdGFibGVTdHJlYW0gPSBvbGRXcml0YWJsZVN0cmVhbTsKKyAgfSk7CisK
KyAgY29uc3QgdHMgPSBuZXcgVHJhbnNmb3JtU3RyZWFtKCk7CisKKyAgLy8gSnVzdCB0byBiZSBz
dXJlLCBlbnN1cmUgdGhlIHJlYWRhYmxlIGFuZCB3cml0YWJsZSBwYXNzIGJyYW5kIGNoZWNrcy4K
KyAgYXNzZXJ0X25vdF9lcXVhbHMoZ2V0UmVhZGVyLmNhbGwodHMucmVhZGFibGUpLCB1bmRlZmlu
ZWQsCisgICAgICAgICAgICAgICAgICAgICdnZXRSZWFkZXIgc2hvdWxkIHdvcmsgd2hlbiBjYWxs
ZWQgb24gdHMucmVhZGFibGUnKTsKKyAgYXNzZXJ0X25vdF9lcXVhbHMoZ2V0V3JpdGVyLmNhbGwo
dHMud3JpdGFibGUpLCB1bmRlZmluZWQsCisgICAgICAgICAgICAgICAgICAgICdnZXRXcml0ZXIg
c2hvdWxkIHdvcmsgd2hlbiBjYWxsZWQgb24gdHMud3JpdGFibGUnKTsKK30sICdUcmFuc2Zvcm1T
dHJlYW0gc2hvdWxkIHVzZSB0aGUgb3JpZ2luYWwgdmFsdWUgb2YgUmVhZGFibGVTdHJlYW0gYW5k
IFdyaXRhYmxlU3RyZWFtJyk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvdHJhbnNmb3JtLXN0cmVhbXMvcGF0Y2hlZC1nbG9i
YWwuYW55Lndvcmtlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvdHJhbnNmb3JtLXN0cmVhbXMvcGF0Y2hlZC1nbG9iYWwu
YW55Lndvcmtlci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDU5NjgxYTg0YWQ5YzZkYzE4N2Y5
MmFlZmNmM2M5NjkzZTQyZGIzNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy9wYXRj
aGVkLWdsb2JhbC5hbnkud29ya2VyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKKworRkFJ
TCBUcmFuc2Zvcm1TdHJlYW0gY29uc3RydWN0b3Igc2hvdWxkIG5vdCBjYWxsIHNldHRlcnMgZm9y
IGhpZ2hXYXRlck1hcmsgb3Igc2l6ZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJl
YW0KK0ZBSUwgVHJhbnNmb3JtU3RyZWFtIHNob3VsZCB1c2UgdGhlIG9yaWdpbmFsIHZhbHVlIG9m
IFJlYWRhYmxlU3RyZWFtIGFuZCBXcml0YWJsZVN0cmVhbSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBX
cml0YWJsZVN0cmVhbQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvdHJhbnNmb3JtLXN0cmVhbXMvcGF0Y2hlZC1nbG9iYWwu
YW55Lndvcmtlci5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1zL3BhdGNoZWQtZ2xvYmFsLmFueS53b3JrZXIu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4yMzgyOTEzNTI4ZTY5M2IzYTVkNTZjNjYwYTQ1MDYwOTgwYjU0OGMz
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1zL3BhdGNoZWQtZ2xvYmFsLmFueS53b3Jr
ZXIuaHRtbApAQCAtMCwwICsxIEBACis8IS0tIFRoaXMgZmlsZSBpcyByZXF1aXJlZCBmb3IgV2Vi
S2l0IHRlc3QgaW5mcmFzdHJ1Y3R1cmUgdG8gcnVuIHRoZSB0ZW1wbGF0ZWQgdGVzdCAtLT4KXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvdHJhbnNmb3JtLXN0cmVhbXMvcHJvcGVy
dGllcy5hbnktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1zL3Byb3BlcnRpZXMuYW55LWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi45MmM2NDBiMDhkN2I1YjA5MGM1OGRkYzI2ODkzMDY3OTc4YWVl
YzE3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1zL3Byb3BlcnRpZXMuYW55LWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDggQEAKKworRkFJTCB0cmFuc2Zvcm1lciBtZXRob2Qgc3RhcnQg
c2hvdWxkIGJlIGNhbGxlZCB3aXRoIHRoZSByaWdodCBudW1iZXIgb2YgYXJndW1lbnRzIENhbid0
IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCB0cmFuc2Zvcm1lciBtZXRob2Qg
c3RhcnQgc2hvdWxkIGJlIGNhbGxlZCBldmVuIHdoZW4gaXQncyBsb2NhdGVkIG9uIHRoZSBwcm90
b3R5cGUgY2hhaW4gQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIHRy
YW5zZm9ybWVyIG1ldGhvZCB0cmFuc2Zvcm0gc2hvdWxkIGJlIGNhbGxlZCB3aXRoIHRoZSByaWdo
dCBudW1iZXIgb2YgYXJndW1lbnRzIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVh
bQorRkFJTCB0cmFuc2Zvcm1lciBtZXRob2QgdHJhbnNmb3JtIHNob3VsZCBiZSBjYWxsZWQgZXZl
biB3aGVuIGl0J3MgbG9jYXRlZCBvbiB0aGUgcHJvdG90eXBlIGNoYWluIENhbid0IGZpbmQgdmFy
aWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCB0cmFuc2Zvcm1lciBtZXRob2QgZmx1c2ggc2hv
dWxkIGJlIGNhbGxlZCB3aXRoIHRoZSByaWdodCBudW1iZXIgb2YgYXJndW1lbnRzIENhbid0IGZp
bmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCB0cmFuc2Zvcm1lciBtZXRob2QgZmx1
c2ggc2hvdWxkIGJlIGNhbGxlZCBldmVuIHdoZW4gaXQncyBsb2NhdGVkIG9uIHRoZSBwcm90b3R5
cGUgY2hhaW4gQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy90
cmFuc2Zvcm0tc3RyZWFtcy9wcm9wZXJ0aWVzLmFueS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1zL3Byb3Bl
cnRpZXMuYW55Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjM4MjkxMzUyOGU2OTNiM2E1ZDU2YzY2MGE0NTA2
MDk4MGI1NDhjMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy9wcm9wZXJ0aWVzLmFu
eS5odG1sCkBAIC0wLDAgKzEgQEAKKzwhLS0gVGhpcyBmaWxlIGlzIHJlcXVpcmVkIGZvciBXZWJL
aXQgdGVzdCBpbmZyYXN0cnVjdHVyZSB0byBydW4gdGhlIHRlbXBsYXRlZCB0ZXN0IC0tPgpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy9wcm9wZXJ0
aWVzLmFueS5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy9wcm9wZXJ0aWVzLmFueS5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5m
MmFjNDgyZTBkZTIyMzQ2NTgyYzgzYjIzN2EwNmMxMzE5NTc4ZjhjCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3Ry
YW5zZm9ybS1zdHJlYW1zL3Byb3BlcnRpZXMuYW55LmpzCkBAIC0wLDAgKzEsNDkgQEAKKy8vIE1F
VEE6IGdsb2JhbD13aW5kb3csd29ya2VyLGpzc2hlbGwKKyd1c2Ugc3RyaWN0JzsKKworY29uc3Qg
dHJhbnNmb3JtZXJNZXRob2RzID0geworICBzdGFydDogeworICAgIGxlbmd0aDogMSwKKyAgICB0
cmlnZ2VyOiAoKSA9PiBQcm9taXNlLnJlc29sdmUoKQorICB9LAorICB0cmFuc2Zvcm06IHsKKyAg
ICBsZW5ndGg6IDIsCisgICAgdHJpZ2dlcjogdHMgPT4gdHMud3JpdGFibGUuZ2V0V3JpdGVyKCku
d3JpdGUoKQorICB9LAorICBmbHVzaDogeworICAgIGxlbmd0aDogMSwKKyAgICB0cmlnZ2VyOiB0
cyA9PiB0cy53cml0YWJsZS5nZXRXcml0ZXIoKS5jbG9zZSgpCisgIH0KK307CisKK2ZvciAoY29u
c3QgbWV0aG9kIGluIHRyYW5zZm9ybWVyTWV0aG9kcykgeworICBjb25zdCB7IGxlbmd0aCwgdHJp
Z2dlciB9ID0gdHJhbnNmb3JtZXJNZXRob2RzW21ldGhvZF07CisKKyAgLy8gU29tZSBzZW1hbnRp
YyB0ZXN0cyBvZiBob3cgdHJhbnNmb3JtZXIgbWV0aG9kcyBhcmUgY2FsbGVkIGNhbiBiZSBmb3Vu
ZCBpbiBnZW5lcmFsLmpzLCBhcyB3ZWxsIGFzIGluIHRoZSB0ZXN0IGZpbGVzCisgIC8vIHNwZWNp
ZmljIHRvIGVhY2ggbWV0aG9kLgorICBwcm9taXNlX3Rlc3QoKCkgPT4geworICAgIGxldCBhcmdD
b3VudDsKKyAgICBjb25zdCB0cyA9IG5ldyBUcmFuc2Zvcm1TdHJlYW0oeworICAgICAgW21ldGhv
ZF0oLi4uYXJncykgeworICAgICAgICBhcmdDb3VudCA9IGFyZ3MubGVuZ3RoOworICAgICAgfQor
ICAgIH0sIHVuZGVmaW5lZCwgeyBoaWdoV2F0ZXJNYXJrOiBJbmZpbml0eSB9KTsKKyAgICByZXR1
cm4gUHJvbWlzZS5yZXNvbHZlKHRyaWdnZXIodHMpKS50aGVuKCgpID0+IHsKKyAgICAgIGFzc2Vy
dF9lcXVhbHMoYXJnQ291bnQsIGxlbmd0aCwgYCR7bWV0aG9kfSBzaG91bGQgYmUgY2FsbGVkIHdp
dGggJHtsZW5ndGh9IGFyZ3VtZW50c2ApOworICAgIH0pOworICB9LCBgdHJhbnNmb3JtZXIgbWV0
aG9kICR7bWV0aG9kfSBzaG91bGQgYmUgY2FsbGVkIHdpdGggdGhlIHJpZ2h0IG51bWJlciBvZiBh
cmd1bWVudHNgKTsKKworICBwcm9taXNlX3Rlc3QoKCkgPT4geworICAgIGxldCBtZXRob2RXYXND
YWxsZWQgPSBmYWxzZTsKKyAgICBmdW5jdGlvbiBUcmFuc2Zvcm1lcigpIHt9CisgICAgVHJhbnNm
b3JtZXIucHJvdG90eXBlID0geworICAgICAgW21ldGhvZF0oKSB7CisgICAgICAgIG1ldGhvZFdh
c0NhbGxlZCA9IHRydWU7CisgICAgICB9CisgICAgfTsKKyAgICBjb25zdCB0cyA9IG5ldyBUcmFu
c2Zvcm1TdHJlYW0obmV3IFRyYW5zZm9ybWVyKCksIHVuZGVmaW5lZCwgeyBoaWdoV2F0ZXJNYXJr
OiBJbmZpbml0eSB9KTsKKyAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRyaWdnZXIodHMpKS50
aGVuKCgpID0+IHsKKyAgICAgIGFzc2VydF90cnVlKG1ldGhvZFdhc0NhbGxlZCwgYCR7bWV0aG9k
fSBzaG91bGQgYmUgY2FsbGVkYCk7CisgICAgfSk7CisgIH0sIGB0cmFuc2Zvcm1lciBtZXRob2Qg
JHttZXRob2R9IHNob3VsZCBiZSBjYWxsZWQgZXZlbiB3aGVuIGl0J3MgbG9jYXRlZCBvbiB0aGUg
cHJvdG90eXBlIGNoYWluYCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvdHJhbnNmb3JtLXN0cmVhbXMvcHJvcGVydGll
cy5hbnkud29ya2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy9wcm9wZXJ0aWVzLmFueS53
b3JrZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkyYzY0MGIwOGQ3YjViMDkwYzU4ZGRjMjY4
OTMwNjc5NzhhZWVjMTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvdHJhbnNmb3JtLXN0cmVhbXMvcHJvcGVydGll
cy5hbnkud29ya2VyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDggQEAKKworRkFJTCB0cmFuc2Zv
cm1lciBtZXRob2Qgc3RhcnQgc2hvdWxkIGJlIGNhbGxlZCB3aXRoIHRoZSByaWdodCBudW1iZXIg
b2YgYXJndW1lbnRzIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCB0
cmFuc2Zvcm1lciBtZXRob2Qgc3RhcnQgc2hvdWxkIGJlIGNhbGxlZCBldmVuIHdoZW4gaXQncyBs
b2NhdGVkIG9uIHRoZSBwcm90b3R5cGUgY2hhaW4gQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNm
b3JtU3RyZWFtCitGQUlMIHRyYW5zZm9ybWVyIG1ldGhvZCB0cmFuc2Zvcm0gc2hvdWxkIGJlIGNh
bGxlZCB3aXRoIHRoZSByaWdodCBudW1iZXIgb2YgYXJndW1lbnRzIENhbid0IGZpbmQgdmFyaWFi
bGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCB0cmFuc2Zvcm1lciBtZXRob2QgdHJhbnNmb3JtIHNo
b3VsZCBiZSBjYWxsZWQgZXZlbiB3aGVuIGl0J3MgbG9jYXRlZCBvbiB0aGUgcHJvdG90eXBlIGNo
YWluIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCB0cmFuc2Zvcm1l
ciBtZXRob2QgZmx1c2ggc2hvdWxkIGJlIGNhbGxlZCB3aXRoIHRoZSByaWdodCBudW1iZXIgb2Yg
YXJndW1lbnRzIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCB0cmFu
c2Zvcm1lciBtZXRob2QgZmx1c2ggc2hvdWxkIGJlIGNhbGxlZCBldmVuIHdoZW4gaXQncyBsb2Nh
dGVkIG9uIHRoZSBwcm90b3R5cGUgY2hhaW4gQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3Jt
U3RyZWFtCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy9wcm9wZXJ0aWVzLmFueS53b3JrZXIu
aHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy90cmFuc2Zvcm0tc3RyZWFtcy9wcm9wZXJ0aWVzLmFueS53b3JrZXIuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4yMzgyOTEzNTI4ZTY5M2IzYTVkNTZjNjYwYTQ1MDYwOTgwYjU0OGMzCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
L3RyYW5zZm9ybS1zdHJlYW1zL3Byb3BlcnRpZXMuYW55Lndvcmtlci5odG1sCkBAIC0wLDAgKzEg
QEAKKzwhLS0gVGhpcyBmaWxlIGlzIHJlcXVpcmVkIGZvciBXZWJLaXQgdGVzdCBpbmZyYXN0cnVj
dHVyZSB0byBydW4gdGhlIHRlbXBsYXRlZCB0ZXN0IC0tPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy9yZWVudHJhbnQtc3RyYXRlZ2llcy5hbnkt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1zL3JlZW50cmFudC1zdHJhdGVnaWVzLmFueS1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMmI1OTMxN2E3NjE3NThmMDE4NjgzYmYyOTZkNGViNjU1MWUz
ODQ4MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy9yZWVudHJhbnQtc3RyYXRlZ2ll
cy5hbnktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTMgQEAKKworRkFJTCBlbnF1ZXVlKCkgaW5z
aWRlIHNpemUoKSBzaG91bGQgd29yayBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJl
YW0KK0ZBSUwgdGVybWluYXRlKCkgaW5zaWRlIHNpemUoKSBzaG91bGQgd29yayBDYW4ndCBmaW5k
IHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgZXJyb3IoKSBpbnNpZGUgc2l6ZSgpIHNo
b3VsZCB3b3JrIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCBkZXNp
cmVkU2l6ZSBpbnNpZGUgc2l6ZSgpIHNob3VsZCB3b3JrIENhbid0IGZpbmQgdmFyaWFibGU6IFRy
YW5zZm9ybVN0cmVhbQorRkFJTCByZWFkYWJsZSBjYW5jZWwoKSBpbnNpZGUgc2l6ZSgpIHNob3Vs
ZCB3b3JrIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCBwaXBlVG8o
KSBpbnNpZGUgc2l6ZSgpIHNob3VsZCB3b3JrIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9y
bVN0cmVhbQorRkFJTCByZWFkKCkgaW5zaWRlIG9mIHNpemUoKSBzaG91bGQgd29yayBDYW4ndCBm
aW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgd3JpdGVyLndyaXRlKCkgaW5zaWRl
IHNpemUoKSBzaG91bGQgd29yayBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0K
K0ZBSUwgc3luY2hyb25vdXMgd3JpdGVyLndyaXRlKCkgaW5zaWRlIHNpemUoKSBzaG91bGQgd29y
ayBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgd3JpdGVyLmNsb3Nl
KCkgaW5zaWRlIHNpemUoKSBzaG91bGQgd29yayBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zv
cm1TdHJlYW0KK0ZBSUwgd3JpdGVyLmFib3J0KCkgaW5zaWRlIHNpemUoKSBzaG91bGQgd29yayBD
YW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1z
dHJlYW1zL3JlZW50cmFudC1zdHJhdGVnaWVzLmFueS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1zL3JlZW50
cmFudC1zdHJhdGVnaWVzLmFueS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzODI5MTM1MjhlNjkzYjNhNWQ1
NmM2NjBhNDUwNjA5ODBiNTQ4YzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvdHJhbnNmb3JtLXN0cmVhbXMvcmVl
bnRyYW50LXN0cmF0ZWdpZXMuYW55Lmh0bWwKQEAgLTAsMCArMSBAQAorPCEtLSBUaGlzIGZpbGUg
aXMgcmVxdWlyZWQgZm9yIFdlYktpdCB0ZXN0IGluZnJhc3RydWN0dXJlIHRvIHJ1biB0aGUgdGVt
cGxhdGVkIHRlc3QgLS0+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5z
Zm9ybS1zdHJlYW1zL3JlZW50cmFudC1zdHJhdGVnaWVzLmFueS5qcyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy9y
ZWVudHJhbnQtc3RyYXRlZ2llcy5hbnkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzFlNTM5NDlmM2MyNmUxZjYy
ZGI3OGJkNjQyNzk2ODg5ZDJiNzA2ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy9y
ZWVudHJhbnQtc3RyYXRlZ2llcy5hbnkuanMKQEAgLTAsMCArMSwzMTkgQEAKKy8vIE1FVEE6IGds
b2JhbD13aW5kb3csd29ya2VyLGpzc2hlbGwKKy8vIE1FVEE6IHNjcmlwdD0uLi9yZXNvdXJjZXMv
cmVjb3JkaW5nLXN0cmVhbXMuanMKKy8vIE1FVEE6IHNjcmlwdD0uLi9yZXNvdXJjZXMvcnMtdXRp
bHMuanMKKy8vIE1FVEE6IHNjcmlwdD0uLi9yZXNvdXJjZXMvdGVzdC11dGlscy5qcworJ3VzZSBz
dHJpY3QnOworCisvLyBUaGUgc2l6ZSgpIGZ1bmN0aW9uIG9mIHJlYWRhYmxlU3RyYXRlZ3kgY2Fu
IHJlLWVudHJhbnRseSBjYWxsIGJhY2sgaW50byB0aGUgVHJhbnNmb3JtU3RyZWFtIGltcGxlbWVu
dGF0aW9uLiBUaGlzCisvLyBtYWtlcyBpdCByaXNreSB0byBjYWNoZSBzdGF0ZSBhY3Jvc3MgdGhl
IGNhbGwgdG8gUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlckVucXVldWUuIFRoZXNlIHRl
c3RzIGF0dGVtcHQgdG8gY2F0Y2gKKy8vIHN1Y2ggZXJyb3JzLiBUaGV5IGFyZSBzZXBhcmF0ZWQg
ZnJvbSB0aGUgb3RoZXIgc3RyYXRlZ3kgdGVzdHMgYmVjYXVzZSBubyByZWFsIHVzZXIgY29kZSBz
aG91bGQgZXZlciBkbyBhbnl0aGluZyBsaWtlCisvLyB0aGlzLgorLy8KKy8vIFRoZXJlIGlzIG5v
IHN1Y2ggaXNzdWUgd2l0aCB3cml0YWJsZVN0cmF0ZWd5IHNpemUoKSBiZWNhdXNlIGl0IGlzIG5l
dmVyIGNhbGxlZCBmcm9tIHdpdGhpbiBUcmFuc2Zvcm1TdHJlYW0KKy8vIGFsZ29yaXRobXMuCisK
K2NvbnN0IGVycm9yMSA9IG5ldyBFcnJvcignZXJyb3IxJyk7CitlcnJvcjEubmFtZSA9ICdlcnJv
cjEnOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworICBsZXQgY29udHJvbGxlcjsKKyAgbGV0IGNh
bGxzID0gMDsKKyAgY29uc3QgdHMgPSBuZXcgVHJhbnNmb3JtU3RyZWFtKHsKKyAgICBzdGFydChj
KSB7CisgICAgICBjb250cm9sbGVyID0gYzsKKyAgICB9CisgIH0sIHVuZGVmaW5lZCwgeworICAg
IHNpemUoKSB7CisgICAgICArK2NhbGxzOworICAgICAgaWYgKGNhbGxzIDwgMikgeworICAgICAg
ICBjb250cm9sbGVyLmVucXVldWUoJ2InKTsKKyAgICAgIH0KKyAgICAgIHJldHVybiAxOworICAg
IH0sCisgICAgaGlnaFdhdGVyTWFyazogSW5maW5pdHkKKyAgfSk7CisgIGNvbnN0IHdyaXRlciA9
IHRzLndyaXRhYmxlLmdldFdyaXRlcigpOworICByZXR1cm4gUHJvbWlzZS5hbGwoW3dyaXRlci53
cml0ZSgnYScpLCB3cml0ZXIuY2xvc2UoKV0pCisgICAgICAudGhlbigoKSA9PiByZWFkYWJsZVN0
cmVhbVRvQXJyYXkodHMucmVhZGFibGUpKQorICAgICAgLnRoZW4oYXJyYXkgPT4gYXNzZXJ0X2Fy
cmF5X2VxdWFscyhhcnJheSwgWydiJywgJ2EnXSwgJ2FycmF5IHNob3VsZCBjb250YWluIHR3byBj
aHVua3MnKSk7Cit9LCAnZW5xdWV1ZSgpIGluc2lkZSBzaXplKCkgc2hvdWxkIHdvcmsnKTsKKwor
cHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgbGV0IGNvbnRyb2xsZXI7CisgIGNvbnN0IHRzID0gbmV3
IFRyYW5zZm9ybVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgY29udHJvbGxlciA9IGM7
CisgICAgfQorICB9LCB1bmRlZmluZWQsIHsKKyAgICBzaXplKCkgeworICAgICAgLy8gVGhlIHJl
YWRhYmxlIHF1ZXVlIGlzIGVtcHR5LgorICAgICAgY29udHJvbGxlci50ZXJtaW5hdGUoKTsKKyAg
ICAgIC8vIFRoZSByZWFkYWJsZSBzdGF0ZSBoYXMgZ29uZSBmcm9tICJyZWFkYWJsZSIgdG8gImNs
b3NlZCIuCisgICAgICByZXR1cm4gMTsKKyAgICAgIC8vIFRoaXMgY2h1bmsgd2lsbCBiZSBlbnF1
ZXVlZCwgYnV0IHdpbGwgYmUgaW1wb3NzaWJsZSB0byByZWFkIGJlY2F1c2UgdGhlIHN0YXRlIGlz
IGFscmVhZHkgImNsb3NlZCIuCisgICAgfSwKKyAgICBoaWdoV2F0ZXJNYXJrOiBJbmZpbml0eQor
ICB9KTsKKyAgY29uc3Qgd3JpdGVyID0gdHMud3JpdGFibGUuZ2V0V3JpdGVyKCk7CisgIHJldHVy
biB3cml0ZXIud3JpdGUoJ2EnKQorICAgICAgLnRoZW4oKCkgPT4gcmVhZGFibGVTdHJlYW1Ub0Fy
cmF5KHRzLnJlYWRhYmxlKSkKKyAgICAgIC50aGVuKGFycmF5ID0+IGFzc2VydF9hcnJheV9lcXVh
bHMoYXJyYXksIFtdLCAnYXJyYXkgc2hvdWxkIGNvbnRhaW4gbm8gY2h1bmtzJykpOworICAvLyBU
aGUgY2h1bmsgJ2EnIGlzIHN0aWxsIGluIHJlYWRhYmxlJ3MgcXVldWUuIHJlYWRhYmxlIGlzIGNs
b3NlZCBzbyAnYScgY2Fubm90IGJlIHJlYWQuIHdyaXRhYmxlJ3MgcXVldWUgaXMgZW1wdHkgYW5k
CisgIC8vIGl0IGlzIHN0aWxsIHdyaXRhYmxlLgorfSwgJ3Rlcm1pbmF0ZSgpIGluc2lkZSBzaXpl
KCkgc2hvdWxkIHdvcmsnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBsZXQgY29udHJvbGxl
cjsKKyAgY29uc3QgdHMgPSBuZXcgVHJhbnNmb3JtU3RyZWFtKHsKKyAgICBzdGFydChjKSB7Cisg
ICAgICBjb250cm9sbGVyID0gYzsKKyAgICB9CisgIH0sIHVuZGVmaW5lZCwgeworICAgIHNpemUo
KSB7CisgICAgICBjb250cm9sbGVyLmVycm9yKGVycm9yMSk7CisgICAgICByZXR1cm4gMTsKKyAg
ICB9LAorICAgIGhpZ2hXYXRlck1hcms6IEluZmluaXR5CisgIH0pOworICBjb25zdCB3cml0ZXIg
PSB0cy53cml0YWJsZS5nZXRXcml0ZXIoKTsKKyAgcmV0dXJuIHdyaXRlci53cml0ZSgnYScpCisg
ICAgICAudGhlbigoKSA9PiBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIHRzLnJl
YWRhYmxlLmdldFJlYWRlcigpLnJlYWQoKSwgJ3JlYWQoKSBzaG91bGQgcmVqZWN0JykpOworfSwg
J2Vycm9yKCkgaW5zaWRlIHNpemUoKSBzaG91bGQgd29yaycpOworCitwcm9taXNlX3Rlc3QoKCkg
PT4geworICBsZXQgY29udHJvbGxlcjsKKyAgY29uc3QgdHMgPSBuZXcgVHJhbnNmb3JtU3RyZWFt
KHsKKyAgICBzdGFydChjKSB7CisgICAgICBjb250cm9sbGVyID0gYzsKKyAgICB9CisgIH0sIHVu
ZGVmaW5lZCwgeworICAgIHNpemUoKSB7CisgICAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIu
ZGVzaXJlZFNpemUsIDEsICdkZXNpcmVkU2l6ZSBzaG91bGQgYmUgMScpOworICAgICAgcmV0dXJu
IDE7CisgICAgfSwKKyAgICBoaWdoV2F0ZXJNYXJrOiAxCisgIH0pOworICBjb25zdCB3cml0ZXIg
PSB0cy53cml0YWJsZS5nZXRXcml0ZXIoKTsKKyAgcmV0dXJuIFByb21pc2UuYWxsKFt3cml0ZXIu
d3JpdGUoJ2EnKSwgd3JpdGVyLmNsb3NlKCldKQorICAgICAgLnRoZW4oKCkgPT4gcmVhZGFibGVT
dHJlYW1Ub0FycmF5KHRzLnJlYWRhYmxlKSkKKyAgICAgIC50aGVuKGFycmF5ID0+IGFzc2VydF9h
cnJheV9lcXVhbHMoYXJyYXksIFsnYSddLCAnYXJyYXkgc2hvdWxkIGNvbnRhaW4gb25lIGNodW5r
JykpOworfSwgJ2Rlc2lyZWRTaXplIGluc2lkZSBzaXplKCkgc2hvdWxkIHdvcmsnKTsKKworcHJv
bWlzZV90ZXN0KHQgPT4geworICBsZXQgY2FuY2VsUHJvbWlzZTsKKyAgY29uc3QgdHMgPSBuZXcg
VHJhbnNmb3JtU3RyZWFtKHt9LCB1bmRlZmluZWQsIHsKKyAgICBzaXplKCkgeworICAgICAgY2Fu
Y2VsUHJvbWlzZSA9IHRzLnJlYWRhYmxlLmNhbmNlbChlcnJvcjEpOworICAgICAgcmV0dXJuIDE7
CisgICAgfSwKKyAgICBoaWdoV2F0ZXJNYXJrOiBJbmZpbml0eQorICB9KTsKKyAgY29uc3Qgd3Jp
dGVyID0gdHMud3JpdGFibGUuZ2V0V3JpdGVyKCk7CisgIHJldHVybiB3cml0ZXIud3JpdGUoJ2En
KQorICAgICAgLnRoZW4oKCkgPT4geworICAgICAgICBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0
LCBlcnJvcjEsIHdyaXRlci5jbG9zZWQsICd3cml0ZXIuY2xvc2VkIHNob3VsZCByZWplY3QnKTsK
KyAgICAgICAgcmV0dXJuIGNhbmNlbFByb21pc2U7CisgICAgICB9KTsKK30sICdyZWFkYWJsZSBj
YW5jZWwoKSBpbnNpZGUgc2l6ZSgpIHNob3VsZCB3b3JrJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9
PiB7CisgIGxldCBjb250cm9sbGVyOworICBsZXQgcGlwZVRvUHJvbWlzZTsKKyAgY29uc3Qgd3Mg
PSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSgpOworICBjb25zdCB0cyA9IG5ldyBUcmFuc2Zvcm1T
dHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGNvbnRyb2xsZXIgPSBjOworICAgIH0KKyAg
fSwgdW5kZWZpbmVkLCB7CisgICAgc2l6ZSgpIHsKKyAgICAgIGlmICghcGlwZVRvUHJvbWlzZSkg
eworICAgICAgICBwaXBlVG9Qcm9taXNlID0gdHMucmVhZGFibGUucGlwZVRvKHdzKTsKKyAgICAg
IH0KKyAgICAgIHJldHVybiAxOworICAgIH0sCisgICAgaGlnaFdhdGVyTWFyazogMQorICB9KTsK
KyAgLy8gQWxsb3cgcHJvbWlzZSByZXR1cm5lZCBieSBzdGFydCgpIHRvIHJlc29sdmUgc28gdGhh
dCBlbnF1ZXVlKCkgd2lsbCBoYXBwZW4gc3luY2hyb25vdXNseS4KKyAgcmV0dXJuIGRlbGF5KDAp
LnRoZW4oKCkgPT4geworICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYScpOworICAgIGFzc2VydF9u
b3RfZXF1YWxzKHBpcGVUb1Byb21pc2UsIHVuZGVmaW5lZCk7CisKKyAgICAvLyBTb21lIHBpcGVU
bygpIGltcGxlbWVudGF0aW9ucyBuZWVkIGFuIGFkZGl0aW9uYWwgY2h1bmsgZW5xdWV1ZWQgaW4g
b3JkZXIgZm9yIHRoZSBmaXJzdCBvbmUgdG8gYmUgcHJvY2Vzc2VkLiBTZWUKKyAgICAvLyBodHRw
czovL2dpdGh1Yi5jb20vd2hhdHdnL3N0cmVhbXMvaXNzdWVzLzc5NCBmb3IgYmFja2dyb3VuZC4K
KyAgICBjb250cm9sbGVyLmVucXVldWUoJ2EnKTsKKworICAgIC8vIEdpdmUgcGlwZVRvKCkgYSBj
aGFuY2UgdG8gcHJvY2VzcyB0aGUgcXVldWVkIGNodW5rcy4KKyAgICByZXR1cm4gZGVsYXkoMCk7
CisgIH0pLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBb
J3dyaXRlJywgJ2EnLCAnd3JpdGUnLCAnYSddLCAnd3Mgc2hvdWxkIGNvbnRhaW4gdHdvIGNodW5r
cycpOworICAgIGNvbnRyb2xsZXIudGVybWluYXRlKCk7CisgICAgcmV0dXJuIHBpcGVUb1Byb21p
c2U7CisgIH0pLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRz
LCBbJ3dyaXRlJywgJ2EnLCAnd3JpdGUnLCAnYScsICdjbG9zZSddLCAndGFyZ2V0IHNob3VsZCBo
YXZlIGJlZW4gY2xvc2VkJyk7CisgIH0pOworfSwgJ3BpcGVUbygpIGluc2lkZSBzaXplKCkgc2hv
dWxkIHdvcmsnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgbGV0IGNvbnRyb2xsZXI7Cisg
IGxldCByZWFkUHJvbWlzZTsKKyAgbGV0IGNhbGxzID0gMDsKKyAgbGV0IHJlYWRlcjsKKyAgY29u
c3QgdHMgPSBuZXcgVHJhbnNmb3JtU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjb250
cm9sbGVyID0gYzsKKyAgICB9CisgIH0sIHVuZGVmaW5lZCwgeworICAgIHNpemUoKSB7CisgICAg
ICAvLyBUaGlzIGlzIHRyaWdnZXJlZCBieSBjb250cm9sbGVyLmVucXVldWUoKS4gVGhlIHF1ZXVl
IGlzIGVtcHR5IGFuZCB0aGVyZSBhcmUgbm8gcGVuZGluZyByZWFkcy4gcHVsbCgpIGlzIGNhbGxl
ZAorICAgICAgLy8gc3luY2hyb25vdXNseSwgYWxsb3dpbmcgdHJhbnNmb3JtKCkgdG8gcHJvY2Vl
ZCBhc3luY2hyb25vdXNseS4gVGhpcyByZXN1bHRzIGluIGEgc2Vjb25kIGNhbGwgdG8gZW5xdWV1
ZSgpLAorICAgICAgLy8gd2hpY2ggcmVzb2x2ZXMgdGhpcyBwZW5kaW5nIHJlYWQoKSB3aXRob3V0
IGNhbGxpbmcgc2l6ZSgpIGFnYWluLgorICAgICAgcmVhZFByb21pc2UgPSByZWFkZXIucmVhZCgp
OworICAgICAgKytjYWxsczsKKyAgICAgIHJldHVybiAxOworICAgIH0sCisgICAgaGlnaFdhdGVy
TWFyazogMAorICB9KTsKKyAgcmVhZGVyID0gdHMucmVhZGFibGUuZ2V0UmVhZGVyKCk7CisgIGNv
bnN0IHdyaXRlciA9IHRzLndyaXRhYmxlLmdldFdyaXRlcigpOworICBsZXQgd3JpdGVSZXNvbHZl
ZCA9IGZhbHNlOworICBjb25zdCB3cml0ZVByb21pc2UgPSB3cml0ZXIud3JpdGUoJ2InKS50aGVu
KCgpID0+IHsKKyAgICB3cml0ZVJlc29sdmVkID0gdHJ1ZTsKKyAgfSk7CisgIHJldHVybiBmbHVz
aEFzeW5jRXZlbnRzKCkudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X2ZhbHNlKHdyaXRlUmVzb2x2
ZWQpOworICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYScpOworICAgIGFzc2VydF9lcXVhbHMoY2Fs
bHMsIDEsICdzaXplKCkgc2hvdWxkIGhhdmUgYmVlbiBjYWxsZWQgb25jZScpOworICAgIHJldHVy
biBkZWxheSgwKTsKKyAgfSkudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X3RydWUod3JpdGVSZXNv
bHZlZCk7CisgICAgYXNzZXJ0X2VxdWFscyhjYWxscywgMSwgJ3NpemUoKSBzaG91bGQgb25seSBi
ZSBjYWxsZWQgb25jZScpOworICAgIHJldHVybiByZWFkUHJvbWlzZTsKKyAgfSkudGhlbigoeyB2
YWx1ZSwgZG9uZSB9KSA9PiB7CisgICAgYXNzZXJ0X2ZhbHNlKGRvbmUsICdkb25lIHNob3VsZCBi
ZSBmYWxzZScpOworICAgIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vd2hhdHdnL3N0cmVhbXMv
aXNzdWVzLzc5NCBmb3Igd2h5IHRoaXMgY2h1bmsgaXMgbm90ICdhJy4KKyAgICBhc3NlcnRfZXF1
YWxzKHZhbHVlLCAnYicsICdjaHVuayBzaG91bGQgaGF2ZSBiZWVuIHJlYWQnKTsKKyAgICBhc3Nl
cnRfZXF1YWxzKGNhbGxzLCAxLCAnY2FsbHMgc2hvdWxkIHN0aWxsIGJlIDEnKTsKKyAgICByZXR1
cm4gd3JpdGVQcm9taXNlOworICB9KTsKK30sICdyZWFkKCkgaW5zaWRlIG9mIHNpemUoKSBzaG91
bGQgd29yaycpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworICBsZXQgd3JpdGVyOworICBsZXQg
d3JpdGVQcm9taXNlMTsKKyAgbGV0IGNhbGxzID0gMDsKKyAgY29uc3QgdHMgPSBuZXcgVHJhbnNm
b3JtU3RyZWFtKHt9LCB1bmRlZmluZWQsIHsKKyAgICBzaXplKCkgeworICAgICAgKytjYWxsczsK
KyAgICAgIGlmIChjYWxscyA8IDIpIHsKKyAgICAgICAgd3JpdGVQcm9taXNlMSA9IHdyaXRlci53
cml0ZSgnYScpOworICAgICAgfQorICAgICAgcmV0dXJuIDE7CisgICAgfSwKKyAgICBoaWdoV2F0
ZXJNYXJrOiBJbmZpbml0eQorICB9KTsKKyAgd3JpdGVyID0gdHMud3JpdGFibGUuZ2V0V3JpdGVy
KCk7CisgIC8vIEdpdmUgcHVsbCgpIGEgY2hhbmNlIHRvIGJlIGNhbGxlZC4KKyAgcmV0dXJuIGRl
bGF5KDApLnRoZW4oKCkgPT4geworICAgIC8vIFRoaXMgd3JpdGUgcmVzdWx0cyBpbiBhIHN5bmNo
cm9ub3VzIGNhbGwgdG8gdHJhbnNmb3JtKCksIGVucXVldWUoKSwgYW5kIHNpemUoKS4KKyAgICBj
b25zdCB3cml0ZVByb21pc2UyID0gd3JpdGVyLndyaXRlKCdiJyk7CisgICAgYXNzZXJ0X2VxdWFs
cyhjYWxscywgMSwgJ3NpemUoKSBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCBvbmNlJyk7CisgICAg
cmV0dXJuIFByb21pc2UuYWxsKFt3cml0ZVByb21pc2UxLCB3cml0ZVByb21pc2UyLCB3cml0ZXIu
Y2xvc2UoKV0pOworICB9KS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfZXF1YWxzKGNhbGxzLCAy
LCAnc2l6ZSgpIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkIHR3aWNlJyk7CisgICAgcmV0dXJuIHJl
YWRhYmxlU3RyZWFtVG9BcnJheSh0cy5yZWFkYWJsZSk7CisgIH0pLnRoZW4oYXJyYXkgPT4gewor
ICAgIGFzc2VydF9hcnJheV9lcXVhbHMoYXJyYXksIFsnYicsICdhJ10sICdib3RoIGNodW5rcyBz
aG91bGQgaGF2ZSBiZWVuIGVucXVldWVkJyk7CisgICAgYXNzZXJ0X2VxdWFscyhjYWxscywgMiwg
J2NhbGxzIHNob3VsZCBzdGlsbCBiZSAyJyk7CisgIH0pOworfSwgJ3dyaXRlci53cml0ZSgpIGlu
c2lkZSBzaXplKCkgc2hvdWxkIHdvcmsnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgbGV0
IGNvbnRyb2xsZXI7CisgIGxldCB3cml0ZXI7CisgIGxldCB3cml0ZVByb21pc2U7CisgIGxldCBj
YWxscyA9IDA7CisgIGNvbnN0IHRzID0gbmV3IFRyYW5zZm9ybVN0cmVhbSh7CisgICAgc3RhcnQo
YykgeworICAgICAgY29udHJvbGxlciA9IGM7CisgICAgfQorICB9LCB1bmRlZmluZWQsIHsKKyAg
ICBzaXplKCkgeworICAgICAgKytjYWxsczsKKyAgICAgIGlmIChjYWxscyA8IDIpIHsKKyAgICAg
ICAgd3JpdGVQcm9taXNlID0gd3JpdGVyLndyaXRlKCdhJyk7CisgICAgICB9CisgICAgICByZXR1
cm4gMTsKKyAgICB9LAorICAgIGhpZ2hXYXRlck1hcms6IEluZmluaXR5CisgIH0pOworICB3cml0
ZXIgPSB0cy53cml0YWJsZS5nZXRXcml0ZXIoKTsKKyAgLy8gR2l2ZSBwdWxsKCkgYSBjaGFuY2Ug
dG8gYmUgY2FsbGVkLgorICByZXR1cm4gZGVsYXkoMCkudGhlbigoKSA9PiB7CisgICAgLy8gVGhp
cyBlbnF1ZXVlIHJlc3VsdHMgaW4gc3luY2hyb25vdXMgY2FsbHMgdG8gc2l6ZSgpLCB3cml0ZSgp
LCB0cmFuc2Zvcm0oKSBhbmQgZW5xdWV1ZSgpLgorICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYicp
OworICAgIGFzc2VydF9lcXVhbHMoY2FsbHMsIDIsICdzaXplKCkgc2hvdWxkIGhhdmUgYmVlbiBj
YWxsZWQgdHdpY2UnKTsKKyAgICByZXR1cm4gUHJvbWlzZS5hbGwoW3dyaXRlUHJvbWlzZSwgd3Jp
dGVyLmNsb3NlKCldKTsKKyAgfSkudGhlbigoKSA9PiB7CisgICAgcmV0dXJuIHJlYWRhYmxlU3Ry
ZWFtVG9BcnJheSh0cy5yZWFkYWJsZSk7CisgIH0pLnRoZW4oYXJyYXkgPT4geworICAgIC8vIEJl
Y2F1c2Ugb25lIGNhbGwgdG8gZW5xdWV1ZSgpIGlzIG5lc3RlZCBpbnNpZGUgdGhlIG90aGVyLCB0
aGV5IGZpbmlzaCBpbiB0aGUgb3Bwb3NpdGUgb3JkZXIgdGhhdCB0aGV5IHdlcmUKKyAgICAvLyBj
YWxsZWQsIHNvIHRoZSBjaHVua3MgZW5kIHVwIHJldmVyc2Ugb3JkZXIuCisgICAgYXNzZXJ0X2Fy
cmF5X2VxdWFscyhhcnJheSwgWydhJywgJ2InXSwgJ2JvdGggY2h1bmtzIHNob3VsZCBoYXZlIGJl
ZW4gZW5xdWV1ZWQnKTsKKyAgICBhc3NlcnRfZXF1YWxzKGNhbGxzLCAyLCAnY2FsbHMgc2hvdWxk
IHN0aWxsIGJlIDInKTsKKyAgfSk7Cit9LCAnc3luY2hyb25vdXMgd3JpdGVyLndyaXRlKCkgaW5z
aWRlIHNpemUoKSBzaG91bGQgd29yaycpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworICBsZXQg
d3JpdGVyOworICBsZXQgY2xvc2VQcm9taXNlOworICBsZXQgY29udHJvbGxlcjsKKyAgY29uc3Qg
dHMgPSBuZXcgVHJhbnNmb3JtU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjb250cm9s
bGVyID0gYzsKKyAgICB9CisgIH0sIHVuZGVmaW5lZCwgeworICAgIHNpemUoKSB7CisgICAgICBj
bG9zZVByb21pc2UgPSB3cml0ZXIuY2xvc2UoKTsKKyAgICAgIHJldHVybiAxOworICAgIH0sCisg
ICAgaGlnaFdhdGVyTWFyazogMQorICB9KTsKKyAgd3JpdGVyID0gdHMud3JpdGFibGUuZ2V0V3Jp
dGVyKCk7CisgIGNvbnN0IHJlYWRlciA9IHRzLnJlYWRhYmxlLmdldFJlYWRlcigpOworICAvLyBX
YWl0IGZvciB0aGUgcHJvbWlzZSByZXR1cm5lZCBieSBzdGFydCgpIHRvIGJlIHJlc29sdmVkIHNv
IHRoYXQgdGhlIGNhbGwgdG8gY2xvc2UoKSB3aWxsIHJlc3VsdCBpbiBhIHN5bmNocm9ub3VzCisg
IC8vIGNhbGwgdG8gVHJhbnNmb3JtU3RyZWFtRGVmYXVsdFNpbmsuCisgIHJldHVybiBkZWxheSgw
KS50aGVuKCgpID0+IHsKKyAgICBjb250cm9sbGVyLmVucXVldWUoJ2EnKTsKKyAgICByZXR1cm4g
cmVhZGVyLnJlYWQoKTsKKyAgfSkudGhlbigoeyB2YWx1ZSwgZG9uZSB9KSA9PiB7CisgICAgYXNz
ZXJ0X2ZhbHNlKGRvbmUsICdkb25lIHNob3VsZCBiZSBmYWxzZScpOworICAgIGFzc2VydF9lcXVh
bHModmFsdWUsICdhJywgJ3ZhbHVlIHNob3VsZCBiZSBjb3JyZWN0Jyk7CisgICAgcmV0dXJuIHJl
YWRlci5yZWFkKCk7CisgIH0pLnRoZW4oKHsgZG9uZSB9KSA9PiB7CisgICAgYXNzZXJ0X3RydWUo
ZG9uZSwgJ2RvbmUgc2hvdWxkIGJlIHRydWUnKTsKKyAgICByZXR1cm4gY2xvc2VQcm9taXNlOwor
ICB9KTsKK30sICd3cml0ZXIuY2xvc2UoKSBpbnNpZGUgc2l6ZSgpIHNob3VsZCB3b3JrJyk7CisK
K3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgbGV0IGFib3J0UHJvbWlzZTsKKyAgbGV0IGNvbnRyb2xs
ZXI7CisgIGNvbnN0IHRzID0gbmV3IFRyYW5zZm9ybVN0cmVhbSh7CisgICAgc3RhcnQoYykgewor
ICAgICAgY29udHJvbGxlciA9IGM7CisgICAgfQorICB9LCB1bmRlZmluZWQsIHsKKyAgICBzaXpl
KCkgeworICAgICAgYWJvcnRQcm9taXNlID0gdHMud3JpdGFibGUuYWJvcnQoZXJyb3IxKTsKKyAg
ICAgIHJldHVybiAxOworICAgIH0sCisgICAgaGlnaFdhdGVyTWFyazogMQorICB9KTsKKyAgY29u
c3QgcmVhZGVyID0gdHMucmVhZGFibGUuZ2V0UmVhZGVyKCk7CisgIC8vIFdhaXQgZm9yIHRoZSBw
cm9taXNlIHJldHVybmVkIGJ5IHN0YXJ0KCkgdG8gYmUgcmVzb2x2ZWQgc28gdGhhdCB0aGUgY2Fs
bCB0byBhYm9ydCgpIHdpbGwgcmVzdWx0IGluIGEgc3luY2hyb25vdXMKKyAgLy8gY2FsbCB0byBU
cmFuc2Zvcm1TdHJlYW1EZWZhdWx0U2luay4KKyAgcmV0dXJuIGRlbGF5KDApLnRoZW4oKCkgPT4g
eworICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYScpOworICAgIHJldHVybiBQcm9taXNlLmFsbChb
cHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCByZWFkZXIucmVhZCgpLCAncmVhZCgp
IHNob3VsZCByZWplY3QnKSwgYWJvcnRQcm9taXNlXSk7CisgIH0pOworfSwgJ3dyaXRlci5hYm9y
dCgpIGluc2lkZSBzaXplKCkgc2hvdWxkIHdvcmsnKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFt
cy9yZWVudHJhbnQtc3RyYXRlZ2llcy5hbnkud29ya2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy90cmFuc2Zvcm0tc3Ry
ZWFtcy9yZWVudHJhbnQtc3RyYXRlZ2llcy5hbnkud29ya2VyLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi43MmI3MWU0MmMyMzZkMDFlMWU2NGIzZjQyOGE4MWZiNTZmNTZlMDVkCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJl
YW1zL3RyYW5zZm9ybS1zdHJlYW1zL3JlZW50cmFudC1zdHJhdGVnaWVzLmFueS53b3JrZXItZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTMgQEAKKworRkFJTCBlbnF1ZXVlKCkgaW5zaWRlIHNpemUo
KSBzaG91bGQgd29yayBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwg
dGVybWluYXRlKCkgaW5zaWRlIHNpemUoKSBzaG91bGQgd29yayBDYW4ndCBmaW5kIHZhcmlhYmxl
OiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgZXJyb3IoKSBpbnNpZGUgc2l6ZSgpIHNob3VsZCB3b3Jr
IENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCBkZXNpcmVkU2l6ZSBp
bnNpZGUgc2l6ZSgpIHNob3VsZCB3b3JrIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0
cmVhbQorRkFJTCByZWFkYWJsZSBjYW5jZWwoKSBpbnNpZGUgc2l6ZSgpIHNob3VsZCB3b3JrIENh
bid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCBwaXBlVG8oKSBpbnNpZGUg
c2l6ZSgpIHNob3VsZCB3b3JrIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitG
QUlMIHJlYWQoKSBpbnNpZGUgb2Ygc2l6ZSgpIHNob3VsZCB3b3JrIENhbid0IGZpbmQgdmFyaWFi
bGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCB3cml0ZXIud3JpdGUoKSBpbnNpZGUgc2l6ZSgpIHNo
b3VsZCB3b3JrIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCBzeW5j
aHJvbm91cyB3cml0ZXIud3JpdGUoKSBpbnNpZGUgc2l6ZSgpIHNob3VsZCB3b3JrIENhbid0IGZp
bmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCB3cml0ZXIuY2xvc2UoKSBpbnNpZGUg
c2l6ZSgpIHNob3VsZCB3b3JrIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQor
RkFJTCB3cml0ZXIuYWJvcnQoKSBpbnNpZGUgc2l6ZSgpIHNob3VsZCB3b3JrIENhbid0IGZpbmQg
dmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvdHJhbnNmb3JtLXN0cmVhbXMvcmVl
bnRyYW50LXN0cmF0ZWdpZXMuYW55Lndvcmtlci5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1zL3JlZW50cmFu
dC1zdHJhdGVnaWVzLmFueS53b3JrZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMzgyOTEzNTI4ZTY5M2Iz
YTVkNTZjNjYwYTQ1MDYwOTgwYjU0OGMzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1z
L3JlZW50cmFudC1zdHJhdGVnaWVzLmFueS53b3JrZXIuaHRtbApAQCAtMCwwICsxIEBACis8IS0t
IFRoaXMgZmlsZSBpcyByZXF1aXJlZCBmb3IgV2ViS2l0IHRlc3QgaW5mcmFzdHJ1Y3R1cmUgdG8g
cnVuIHRoZSB0ZW1wbGF0ZWQgdGVzdCAtLT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMvdHJhbnNmb3JtLXN0cmVhbXMvc3RyYXRlZ2llcy5hbnktZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9y
bS1zdHJlYW1zL3N0cmF0ZWdpZXMuYW55LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43M2NhMDc2
MDhjM2VhMjAyNDY3MzVjNmY5MmEwMGZmY2E2OTVjYmZmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9y
bS1zdHJlYW1zL3N0cmF0ZWdpZXMuYW55LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACisK
K0ZBSUwgd3JpdGFibGVTdHJhdGVneSBoaWdoV2F0ZXJNYXJrIHNob3VsZCB3b3JrIENhbid0IGZp
bmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCByZWFkYWJsZVN0cmF0ZWd5IGhpZ2hX
YXRlck1hcmsgc2hvdWxkIHdvcmsgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFt
CitGQUlMIHdyaXRhYmxlIHNob3VsZCBoYXZlIHRoZSBjb3JyZWN0IHNpemUoKSBmdW5jdGlvbiBD
YW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgZGVmYXVsdCB3cml0YWJs
ZSBzdHJhdGVneSBzaG91bGQgYmUgZXF1aXZhbGVudCB0byB7IGhpZ2hXYXRlck1hcms6IDEgfSBD
YW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgZGVmYXVsdCByZWFkYWJs
ZSBzdHJhdGVneSBzaG91bGQgYmUgZXF1aXZhbGVudCB0byB7IGhpZ2hXYXRlck1hcms6IDAgfSBD
YW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgYSBSYW5nZUVycm9yIHNo
b3VsZCBiZSB0aHJvd24gZm9yIGFuIGludmFsaWQgaGlnaFdhdGVyTWFyayBhc3NlcnRfdGhyb3dz
X2pzOiBzaG91bGQgdGhyb3cgUmFuZ2VFcnJvciBmb3IgbmVnYXRpdmUgd3JpdGFibGVIaWdoV2F0
ZXJNYXJrIGZ1bmN0aW9uICIoKSA9PiBuZXcgVHJhbnNmb3JtU3RyZWFtKHVuZGVmaW5lZCwgeyBo
aWdoV2F0ZXJNYXJrOiAtMSB9KSIgdGhyZXcgb2JqZWN0ICJSZWZlcmVuY2VFcnJvcjogQ2FuJ3Qg
ZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtIiAoIlJlZmVyZW5jZUVycm9yIikgZXhwZWN0
ZWQgaW5zdGFuY2Ugb2YgZnVuY3Rpb24gImZ1bmN0aW9uIFJhbmdlRXJyb3IoKSB7CisgICAgW25h
dGl2ZSBjb2RlXQorfSIgKCJSYW5nZUVycm9yIikKK0ZBSUwgd3JpdGFibGVTdHJhdGVneSBoaWdo
V2F0ZXJNYXJrIHNob3VsZCBiZSBjb252ZXJ0ZWQgdG8gYSBudW1iZXIgQ2FuJ3QgZmluZCB2YXJp
YWJsZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIHJlYWRhYmxlU3RyYXRlZ3kgaGlnaFdhdGVyTWFy
ayBzaG91bGQgYmUgY29udmVydGVkIHRvIGEgbnVtYmVyIENhbid0IGZpbmQgdmFyaWFibGU6IFRy
YW5zZm9ybVN0cmVhbQorRkFJTCBhIGJhZCByZWFkYWJsZVN0cmF0ZWd5IHNpemUgZnVuY3Rpb24g
c2hvdWxkIGNhdXNlIHdyaXRlci53cml0ZSgpIHRvIHJlamVjdCBvbiBhbiBpZGVudGl0eSB0cmFu
c2Zvcm0gQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIGEgYmFkIHJl
YWRhYmxlU3RyYXRlZ3kgc2l6ZSBmdW5jdGlvbiBzaG91bGQgZXJyb3IgdGhlIHN0cmVhbSBvbiBl
bnF1ZXVlIGV2ZW4gd2hlbiB0cmFuc2Zvcm1lci50cmFuc2Zvcm0oKSBjYXRjaGVzIHRoZSBleGNl
cHRpb24gQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy90cmFu
c2Zvcm0tc3RyZWFtcy9zdHJhdGVnaWVzLmFueS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1zL3N0cmF0ZWdp
ZXMuYW55Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjM4MjkxMzUyOGU2OTNiM2E1ZDU2YzY2MGE0NTA2MDk4
MGI1NDhjMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy9zdHJhdGVnaWVzLmFueS5o
dG1sCkBAIC0wLDAgKzEgQEAKKzwhLS0gVGhpcyBmaWxlIGlzIHJlcXVpcmVkIGZvciBXZWJLaXQg
dGVzdCBpbmZyYXN0cnVjdHVyZSB0byBydW4gdGhlIHRlbXBsYXRlZCB0ZXN0IC0tPgpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy9zdHJhdGVnaWVz
LmFueS5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy9zdHJhdGVnaWVzLmFueS5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNDY1
ZDMxYWIwOTczNmQ2ZTk4ZjI4MDE2YjE5ZTJlMTRkNTFkYTBlCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5z
Zm9ybS1zdHJlYW1zL3N0cmF0ZWdpZXMuYW55LmpzCkBAIC0wLDAgKzEsMTUwIEBACisvLyBNRVRB
OiBnbG9iYWw9d2luZG93LHdvcmtlcixqc3NoZWxsCisvLyBNRVRBOiBzY3JpcHQ9Li4vcmVzb3Vy
Y2VzL3JlY29yZGluZy1zdHJlYW1zLmpzCisvLyBNRVRBOiBzY3JpcHQ9Li4vcmVzb3VyY2VzL3Rl
c3QtdXRpbHMuanMKKyd1c2Ugc3RyaWN0JzsKKworLy8gSGVyZSB3ZSBqdXN0IHRlc3QgdGhhdCB0
aGUgc3RyYXRlZ2llcyBhcmUgY29ycmVjdGx5IHBhc3NlZCB0byB0aGUgcmVhZGFibGUgYW5kIHdy
aXRhYmxlIHNpZGVzLiBXZSBhc3N1bWUgdGhhdAorLy8gUmVhZGFibGVTdHJlYW0gYW5kIFdyaXRh
YmxlU3RyZWFtIHdpbGwgY29ycmVjdGx5IGFwcGx5IHRoZSBzdHJhdGVnaWVzIHdoZW4gdGhleSBh
cmUgYmVpbmcgdXNlZCBieSBhIFRyYW5zZm9ybVN0cmVhbQorLy8gYW5kIHNvIGl0IGlzbid0IG5l
Y2Vzc2FyeSB0byByZXBlYXQgdGhlaXIgdGVzdHMgaGVyZS4KKwordGVzdCgoKSA9PiB7CisgIGNv
bnN0IHRzID0gbmV3IFRyYW5zZm9ybVN0cmVhbSh7fSwgeyBoaWdoV2F0ZXJNYXJrOiAxNyB9KTsK
KyAgYXNzZXJ0X2VxdWFscyh0cy53cml0YWJsZS5nZXRXcml0ZXIoKS5kZXNpcmVkU2l6ZSwgMTcs
ICdkZXNpcmVkU2l6ZSBzaG91bGQgYmUgMTcnKTsKK30sICd3cml0YWJsZVN0cmF0ZWd5IGhpZ2hX
YXRlck1hcmsgc2hvdWxkIHdvcmsnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgY29uc3Qg
dHMgPSByZWNvcmRpbmdUcmFuc2Zvcm1TdHJlYW0oe30sIHVuZGVmaW5lZCwgeyBoaWdoV2F0ZXJN
YXJrOiA5IH0pOworICBjb25zdCB3cml0ZXIgPSB0cy53cml0YWJsZS5nZXRXcml0ZXIoKTsKKyAg
Zm9yIChsZXQgaSA9IDA7IGkgPCAxMDsgKytpKSB7CisgICAgd3JpdGVyLndyaXRlKGkpOworICB9
CisgIHJldHVybiBkZWxheSgwKS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxz
KHRzLmV2ZW50cywgWworICAgICAgJ3RyYW5zZm9ybScsIDAsICd0cmFuc2Zvcm0nLCAxLCAndHJh
bnNmb3JtJywgMiwgJ3RyYW5zZm9ybScsIDMsICd0cmFuc2Zvcm0nLCA0LAorICAgICAgJ3RyYW5z
Zm9ybScsIDUsICd0cmFuc2Zvcm0nLCA2LCAndHJhbnNmb3JtJywgNywgJ3RyYW5zZm9ybScsIDhd
LAorICAgICAgICAgICAgICAgICAgICAgICAgJ3RyYW5zZm9ybSgpIHNob3VsZCBoYXZlIGJlZW4g
Y2FsbGVkIDkgdGltZXMnKTsKKyAgfSk7Cit9LCAncmVhZGFibGVTdHJhdGVneSBoaWdoV2F0ZXJN
YXJrIHNob3VsZCB3b3JrJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgbGV0IHdyaXRhYmxl
U2l6ZUNhbGxlZCA9IGZhbHNlOworICBsZXQgcmVhZGFibGVTaXplQ2FsbGVkID0gZmFsc2U7Cisg
IGxldCB0cmFuc2Zvcm1DYWxsZWQgPSBmYWxzZTsKKyAgY29uc3QgdHMgPSBuZXcgVHJhbnNmb3Jt
U3RyZWFtKAorICAgIHsKKyAgICAgIHRyYW5zZm9ybShjaHVuaywgY29udHJvbGxlcikgeworICAg
ICAgICB0LnN0ZXAoKCkgPT4geworICAgICAgICAgIHRyYW5zZm9ybUNhbGxlZCA9IHRydWU7Cisg
ICAgICAgICAgYXNzZXJ0X3RydWUod3JpdGFibGVTaXplQ2FsbGVkLCAnd3JpdGFibGVTdHJhdGVn
eS5zaXplKCkgc2hvdWxkIGhhdmUgYmVlbiBjYWxsZWQnKTsKKyAgICAgICAgICBhc3NlcnRfZmFs
c2UocmVhZGFibGVTaXplQ2FsbGVkLCAncmVhZGFibGVTdHJhdGVneS5zaXplKCkgc2hvdWxkIG5v
dCBoYXZlIGJlZW4gY2FsbGVkJyk7CisgICAgICAgICAgY29udHJvbGxlci5lbnF1ZXVlKGNodW5r
KTsKKyAgICAgICAgICBhc3NlcnRfdHJ1ZShyZWFkYWJsZVNpemVDYWxsZWQsICdyZWFkYWJsZVN0
cmF0ZWd5LnNpemUoKSBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCcpOworICAgICAgICB9KTsKKyAg
ICAgIH0KKyAgICB9LAorICAgIHsKKyAgICAgIHNpemUoKSB7CisgICAgICAgIHdyaXRhYmxlU2l6
ZUNhbGxlZCA9IHRydWU7CisgICAgICAgIHJldHVybiAxOworICAgICAgfQorICAgIH0sCisgICAg
eworICAgICAgc2l6ZSgpIHsKKyAgICAgICAgcmVhZGFibGVTaXplQ2FsbGVkID0gdHJ1ZTsKKyAg
ICAgICAgcmV0dXJuIDE7CisgICAgICB9LAorICAgICAgaGlnaFdhdGVyTWFyazogSW5maW5pdHkK
KyAgICB9KTsKKyAgcmV0dXJuIHRzLndyaXRhYmxlLmdldFdyaXRlcigpLndyaXRlKCkudGhlbigo
KSA9PiB7CisgICAgYXNzZXJ0X3RydWUodHJhbnNmb3JtQ2FsbGVkLCAndHJhbnNmb3JtKCkgc2hv
dWxkIGJlIGNhbGxlZCcpOworICB9KTsKK30sICd3cml0YWJsZSBzaG91bGQgaGF2ZSB0aGUgY29y
cmVjdCBzaXplKCkgZnVuY3Rpb24nKTsKKwordGVzdCgoKSA9PiB7CisgIGNvbnN0IHRzID0gbmV3
IFRyYW5zZm9ybVN0cmVhbSgpOworICBjb25zdCB3cml0ZXIgPSB0cy53cml0YWJsZS5nZXRXcml0
ZXIoKTsKKyAgYXNzZXJ0X2VxdWFscyh3cml0ZXIuZGVzaXJlZFNpemUsIDEsICdkZWZhdWx0IHdy
aXRhYmxlIEhXTSBpcyAxJyk7CisgIHdyaXRlci53cml0ZSh1bmRlZmluZWQpOworICBhc3NlcnRf
ZXF1YWxzKHdyaXRlci5kZXNpcmVkU2l6ZSwgMCwgJ2RlZmF1bHQgY2h1bmsgc2l6ZSBpcyAxJyk7
Cit9LCAnZGVmYXVsdCB3cml0YWJsZSBzdHJhdGVneSBzaG91bGQgYmUgZXF1aXZhbGVudCB0byB7
IGhpZ2hXYXRlck1hcms6IDEgfScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIGNvbnN0IHRz
ID0gbmV3IFRyYW5zZm9ybVN0cmVhbSh7CisgICAgdHJhbnNmb3JtKGNodW5rLCBjb250cm9sbGVy
KSB7CisgICAgICByZXR1cm4gdC5zdGVwKCgpID0+IHsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhj
b250cm9sbGVyLmRlc2lyZWRTaXplLCAwLCAnZGVzaXJlZFNpemUgc2hvdWxkIGJlIDAnKTsKKyAg
ICAgICAgY29udHJvbGxlci5lbnF1ZXVlKHVuZGVmaW5lZCk7CisgICAgICAgIC8vIFRoZSBmaXJz
dCBjaHVuayBlbnF1ZXVlZCBpcyBjb25zdW1lZCBieSB0aGUgcGVuZGluZyByZWFkKCkuCisgICAg
ICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMCwgJ2Rlc2lyZWRTaXpl
IHNob3VsZCBzdGlsbCBiZSAwJyk7CisgICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSh1bmRlZmlu
ZWQpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIC0xLCAn
ZGVzaXJlZFNpemUgc2hvdWxkIGJlIC0xJyk7CisgICAgICB9KTsKKyAgICB9CisgIH0pOworICBj
b25zdCB3cml0ZVByb21pc2UgPSB0cy53cml0YWJsZS5nZXRXcml0ZXIoKS53cml0ZSgpOworICBy
ZXR1cm4gdHMucmVhZGFibGUuZ2V0UmVhZGVyKCkucmVhZCgpLnRoZW4oKCkgPT4gd3JpdGVQcm9t
aXNlKTsKK30sICdkZWZhdWx0IHJlYWRhYmxlIHN0cmF0ZWd5IHNob3VsZCBiZSBlcXVpdmFsZW50
IHRvIHsgaGlnaFdhdGVyTWFyazogMCB9Jyk7CisKK3Rlc3QoKCkgPT4geworICBhc3NlcnRfdGhy
b3dzX2pzKFJhbmdlRXJyb3IsICgpID0+IG5ldyBUcmFuc2Zvcm1TdHJlYW0odW5kZWZpbmVkLCB7
IGhpZ2hXYXRlck1hcms6IC0xIH0pLAorICAgICAgICAgICAgICAgICAgICdzaG91bGQgdGhyb3cg
UmFuZ2VFcnJvciBmb3IgbmVnYXRpdmUgd3JpdGFibGVIaWdoV2F0ZXJNYXJrJyk7CisgIGFzc2Vy
dF90aHJvd3NfanMoUmFuZ2VFcnJvciwgKCkgPT4gbmV3IFRyYW5zZm9ybVN0cmVhbSh1bmRlZmlu
ZWQsIHVuZGVmaW5lZCwgeyBoaWdoV2F0ZXJNYXJrOiAtMSB9KSwKKyAgICAgICAgICAgICAgICAg
ICAnc2hvdWxkIHRocm93IFJhbmdlRXJyb3IgZm9yIG5lZ2F0aXZlIHJlYWRhYmxlSGlnaFdhdGVy
TWFyaycpOworICBhc3NlcnRfdGhyb3dzX2pzKFJhbmdlRXJyb3IsICgpID0+IG5ldyBUcmFuc2Zv
cm1TdHJlYW0odW5kZWZpbmVkLCB7IGhpZ2hXYXRlck1hcms6IE5hTiB9KSwKKyAgICAgICAgICAg
ICAgICAgICAnc2hvdWxkIHRocm93IFJhbmdlRXJyb3IgZm9yIE5hTiB3cml0YWJsZUhpZ2hXYXRl
ck1hcmsnKTsKKyAgYXNzZXJ0X3Rocm93c19qcyhSYW5nZUVycm9yLCAoKSA9PiBuZXcgVHJhbnNm
b3JtU3RyZWFtKHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB7IGhpZ2hXYXRlck1hcms6IE5hTiB9KSwK
KyAgICAgICAgICAgICAgICAgICAnc2hvdWxkIHRocm93IFJhbmdlRXJyb3IgZm9yIE5hTiByZWFk
YWJsZUhpZ2hXYXRlck1hcmsnKTsKK30sICdhIFJhbmdlRXJyb3Igc2hvdWxkIGJlIHRocm93biBm
b3IgYW4gaW52YWxpZCBoaWdoV2F0ZXJNYXJrJyk7CisKK2NvbnN0IG9iamVjdFRoYXRDb252ZXJ0
c1RvNDIgPSB7CisgIHRvU3RyaW5nKCkgeworICAgIHJldHVybiAnNDInOworICB9Cit9OworCit0
ZXN0KCgpID0+IHsKKyAgY29uc3QgdHMgPSBuZXcgVHJhbnNmb3JtU3RyZWFtKHVuZGVmaW5lZCwg
eyBoaWdoV2F0ZXJNYXJrOiBvYmplY3RUaGF0Q29udmVydHNUbzQyIH0pOworICBjb25zdCB3cml0
ZXIgPSB0cy53cml0YWJsZS5nZXRXcml0ZXIoKTsKKyAgYXNzZXJ0X2VxdWFscyh3cml0ZXIuZGVz
aXJlZFNpemUsIDQyLCAnd3JpdGFibGUgSFdNIGlzIDQyJyk7Cit9LCAnd3JpdGFibGVTdHJhdGVn
eSBoaWdoV2F0ZXJNYXJrIHNob3VsZCBiZSBjb252ZXJ0ZWQgdG8gYSBudW1iZXInKTsKKwordGVz
dCgoKSA9PiB7CisgIGNvbnN0IHRzID0gbmV3IFRyYW5zZm9ybVN0cmVhbSh7CisgICAgc3RhcnQo
Y29udHJvbGxlcikgeworICAgICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXpl
LCA0MiwgJ2Rlc2lyZWRTaXplIHNob3VsZCBiZSA0MicpOworICAgIH0KKyAgfSwgdW5kZWZpbmVk
LCB7IGhpZ2hXYXRlck1hcms6IG9iamVjdFRoYXRDb252ZXJ0c1RvNDIgfSk7Cit9LCAncmVhZGFi
bGVTdHJhdGVneSBoaWdoV2F0ZXJNYXJrIHNob3VsZCBiZSBjb252ZXJ0ZWQgdG8gYSBudW1iZXIn
KTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBjb25zdCB0cyA9IG5ldyBUcmFuc2Zvcm1TdHJl
YW0odW5kZWZpbmVkLCB1bmRlZmluZWQsIHsKKyAgICBzaXplKCkgeyByZXR1cm4gTmFOOyB9LAor
ICAgIGhpZ2hXYXRlck1hcms6IDEKKyAgfSk7CisgIGNvbnN0IHdyaXRlciA9IHRzLndyaXRhYmxl
LmdldFdyaXRlcigpOworICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2pzKHQsIFJhbmdlRXJyb3Is
IHdyaXRlci53cml0ZSgpLCAnd3JpdGUgc2hvdWxkIHJlamVjdCcpOworfSwgJ2EgYmFkIHJlYWRh
YmxlU3RyYXRlZ3kgc2l6ZSBmdW5jdGlvbiBzaG91bGQgY2F1c2Ugd3JpdGVyLndyaXRlKCkgdG8g
cmVqZWN0IG9uIGFuIGlkZW50aXR5IHRyYW5zZm9ybScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7
CisgIGNvbnN0IHRzID0gbmV3IFRyYW5zZm9ybVN0cmVhbSh7CisgICAgdHJhbnNmb3JtKGNodW5r
LCBjb250cm9sbGVyKSB7CisgICAgICAvLyBUaGlzIGFzc2VydCBoYXMgdGhlIGltcG9ydGFudCBz
aWRlLWVmZmVjdCBvZiBjYXRjaGluZyB0aGUgZXJyb3IsIHNvIHRyYW5zZm9ybSgpIGRvZXMgbm90
IHRocm93LgorICAgICAgYXNzZXJ0X3Rocm93c19qcyhSYW5nZUVycm9yLCAoKSA9PiBjb250cm9s
bGVyLmVucXVldWUoY2h1bmspLCAnZW5xdWV1ZSBzaG91bGQgdGhyb3cnKTsKKyAgICB9CisgIH0s
IHVuZGVmaW5lZCwgeworICAgIHNpemUoKSB7CisgICAgICByZXR1cm4gLTE7CisgICAgfSwKKyAg
ICBoaWdoV2F0ZXJNYXJrOiAxCisgIH0pOworCisgIGNvbnN0IHdyaXRlciA9IHRzLndyaXRhYmxl
LmdldFdyaXRlcigpOworICByZXR1cm4gd3JpdGVyLndyaXRlKCkudGhlbigoKSA9PiB7CisgICAg
cmV0dXJuIFByb21pc2UuYWxsKFsKKyAgICAgIHByb21pc2VfcmVqZWN0c19qcyh0LCBSYW5nZUVy
cm9yLCB3cml0ZXIucmVhZHksICdyZWFkeSBzaG91bGQgcmVqZWN0JyksCisgICAgICBwcm9taXNl
X3JlamVjdHNfanModCwgUmFuZ2VFcnJvciwgd3JpdGVyLmNsb3NlZCwgJ2Nsb3NlZCBzaG91bGQg
cmVqZWN0JyksCisgICAgICBwcm9taXNlX3JlamVjdHNfanModCwgUmFuZ2VFcnJvciwgdHMucmVh
ZGFibGUuZ2V0UmVhZGVyKCkuY2xvc2VkLCAncmVhZGFibGUgY2xvc2VkIHNob3VsZCByZWplY3Qn
KQorICAgIF0pOworICB9KTsKK30sICdhIGJhZCByZWFkYWJsZVN0cmF0ZWd5IHNpemUgZnVuY3Rp
b24gc2hvdWxkIGVycm9yIHRoZSBzdHJlYW0gb24gZW5xdWV1ZSBldmVuIHdoZW4gdHJhbnNmb3Jt
ZXIudHJhbnNmb3JtKCkgJyArCisgICAnY2F0Y2hlcyB0aGUgZXhjZXB0aW9uJyk7CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
dHJhbnNmb3JtLXN0cmVhbXMvc3RyYXRlZ2llcy5hbnkud29ya2VyLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy90cmFuc2Zv
cm0tc3RyZWFtcy9zdHJhdGVnaWVzLmFueS53b3JrZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjczY2EwNzYwOGMzZWEyMDI0NjczNWM2ZjkyYTAwZmZjYTY5NWNiZmYKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
dHJhbnNmb3JtLXN0cmVhbXMvc3RyYXRlZ2llcy5hbnkud29ya2VyLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDE0IEBACisKK0ZBSUwgd3JpdGFibGVTdHJhdGVneSBoaWdoV2F0ZXJNYXJrIHNob3Vs
ZCB3b3JrIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCByZWFkYWJs
ZVN0cmF0ZWd5IGhpZ2hXYXRlck1hcmsgc2hvdWxkIHdvcmsgQ2FuJ3QgZmluZCB2YXJpYWJsZTog
VHJhbnNmb3JtU3RyZWFtCitGQUlMIHdyaXRhYmxlIHNob3VsZCBoYXZlIHRoZSBjb3JyZWN0IHNp
emUoKSBmdW5jdGlvbiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwg
ZGVmYXVsdCB3cml0YWJsZSBzdHJhdGVneSBzaG91bGQgYmUgZXF1aXZhbGVudCB0byB7IGhpZ2hX
YXRlck1hcms6IDEgfSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwg
ZGVmYXVsdCByZWFkYWJsZSBzdHJhdGVneSBzaG91bGQgYmUgZXF1aXZhbGVudCB0byB7IGhpZ2hX
YXRlck1hcms6IDAgfSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwg
YSBSYW5nZUVycm9yIHNob3VsZCBiZSB0aHJvd24gZm9yIGFuIGludmFsaWQgaGlnaFdhdGVyTWFy
ayBhc3NlcnRfdGhyb3dzX2pzOiBzaG91bGQgdGhyb3cgUmFuZ2VFcnJvciBmb3IgbmVnYXRpdmUg
d3JpdGFibGVIaWdoV2F0ZXJNYXJrIGZ1bmN0aW9uICIoKSA9PiBuZXcgVHJhbnNmb3JtU3RyZWFt
KHVuZGVmaW5lZCwgeyBoaWdoV2F0ZXJNYXJrOiAtMSB9KSIgdGhyZXcgb2JqZWN0ICJSZWZlcmVu
Y2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtIiAoIlJlZmVyZW5j
ZUVycm9yIikgZXhwZWN0ZWQgaW5zdGFuY2Ugb2YgZnVuY3Rpb24gImZ1bmN0aW9uIFJhbmdlRXJy
b3IoKSB7CisgICAgW25hdGl2ZSBjb2RlXQorfSIgKCJSYW5nZUVycm9yIikKK0ZBSUwgd3JpdGFi
bGVTdHJhdGVneSBoaWdoV2F0ZXJNYXJrIHNob3VsZCBiZSBjb252ZXJ0ZWQgdG8gYSBudW1iZXIg
Q2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIHJlYWRhYmxlU3RyYXRl
Z3kgaGlnaFdhdGVyTWFyayBzaG91bGQgYmUgY29udmVydGVkIHRvIGEgbnVtYmVyIENhbid0IGZp
bmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCBhIGJhZCByZWFkYWJsZVN0cmF0ZWd5
IHNpemUgZnVuY3Rpb24gc2hvdWxkIGNhdXNlIHdyaXRlci53cml0ZSgpIHRvIHJlamVjdCBvbiBh
biBpZGVudGl0eSB0cmFuc2Zvcm0gQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFt
CitGQUlMIGEgYmFkIHJlYWRhYmxlU3RyYXRlZ3kgc2l6ZSBmdW5jdGlvbiBzaG91bGQgZXJyb3Ig
dGhlIHN0cmVhbSBvbiBlbnF1ZXVlIGV2ZW4gd2hlbiB0cmFuc2Zvcm1lci50cmFuc2Zvcm0oKSBj
YXRjaGVzIHRoZSBleGNlcHRpb24gQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFt
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy9zdHJhdGVnaWVzLmFueS53b3JrZXIuaHRtbCBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy90cmFu
c2Zvcm0tc3RyZWFtcy9zdHJhdGVnaWVzLmFueS53b3JrZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMzgy
OTEzNTI4ZTY5M2IzYTVkNTZjNjYwYTQ1MDYwOTgwYjU0OGMzCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5z
Zm9ybS1zdHJlYW1zL3N0cmF0ZWdpZXMuYW55Lndvcmtlci5odG1sCkBAIC0wLDAgKzEgQEAKKzwh
LS0gVGhpcyBmaWxlIGlzIHJlcXVpcmVkIGZvciBXZWJLaXQgdGVzdCBpbmZyYXN0cnVjdHVyZSB0
byBydW4gdGhlIHRlbXBsYXRlZCB0ZXN0IC0tPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy90ZXJtaW5hdGUuYW55LWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy90cmFuc2Zv
cm0tc3RyZWFtcy90ZXJtaW5hdGUuYW55LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YjhhNWJh
OTYzZDJlOTk1OTE5NjBiNDNhY2Q2NWIxZWEzZDlhZDEwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9y
bS1zdHJlYW1zL3Rlcm1pbmF0ZS5hbnktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOCBAQAorCitG
QUlMIGNvbnRyb2xsZXIudGVybWluYXRlKCkgc2hvdWxkIGVycm9yIHBpcGVUbygpIENhbid0IGZp
bmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCBjb250cm9sbGVyLnRlcm1pbmF0ZSgp
IHNob3VsZCBwcmV2ZW50IHJlbWFpbmluZyBjaHVua3MgZnJvbSBiZWluZyBwcm9jZXNzZWQgQ2Fu
J3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIGNvbnRyb2xsZXIuZW5xdWV1
ZSgpIHNob3VsZCB0aHJvdyBhZnRlciBjb250cm9sbGVyLnRlcm1pbmF0ZSgpIENhbid0IGZpbmQg
dmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCBjb250cm9sbGVyLmVycm9yKCkgYWZ0ZXIg
Y29udHJvbGxlci50ZXJtaW5hdGUoKSB3aXRoIHF1ZXVlZCBjaHVuayBzaG91bGQgZXJyb3IgdGhl
IHJlYWRhYmxlIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCBjb250
cm9sbGVyLmVycm9yKCkgYWZ0ZXIgY29udHJvbGxlci50ZXJtaW5hdGUoKSB3aXRob3V0IHF1ZXVl
ZCBjaHVuayBzaG91bGQgZG8gbm90aGluZyBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1T
dHJlYW0KK0ZBSUwgY29udHJvbGxlci50ZXJtaW5hdGUoKSBpbnNpZGUgZmx1c2goKSBzaG91bGQg
bm90IHByZXZlbnQgd3JpdGVyLmNsb3NlKCkgZnJvbSBzdWNjZWVkaW5nIENhbid0IGZpbmQgdmFy
aWFibGU6IFRyYW5zZm9ybVN0cmVhbQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvdHJhbnNmb3JtLXN0cmVhbXMvdGVybWlu
YXRlLmFueS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1zL3Rlcm1pbmF0ZS5hbnkuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4yMzgyOTEzNTI4ZTY5M2IzYTVkNTZjNjYwYTQ1MDYwOTgwYjU0OGMzCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
L3RyYW5zZm9ybS1zdHJlYW1zL3Rlcm1pbmF0ZS5hbnkuaHRtbApAQCAtMCwwICsxIEBACis8IS0t
IFRoaXMgZmlsZSBpcyByZXF1aXJlZCBmb3IgV2ViS2l0IHRlc3QgaW5mcmFzdHJ1Y3R1cmUgdG8g
cnVuIHRoZSB0ZW1wbGF0ZWQgdGVzdCAtLT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMvdHJhbnNmb3JtLXN0cmVhbXMvdGVybWluYXRlLmFueS5qcyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy90
ZXJtaW5hdGUuYW55LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhjYjEwNjc5MzQ4YjUwMTVhZDc1ZmIxYTc0ZDRi
NmY0YTcyNDBiMTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvdHJhbnNmb3JtLXN0cmVhbXMvdGVybWluYXRlLmFu
eS5qcwpAQCAtMCwwICsxLDEwMCBAQAorLy8gTUVUQTogZ2xvYmFsPXdpbmRvdyx3b3JrZXIsanNz
aGVsbAorLy8gTUVUQTogc2NyaXB0PS4uL3Jlc291cmNlcy9yZWNvcmRpbmctc3RyZWFtcy5qcwor
Ly8gTUVUQTogc2NyaXB0PS4uL3Jlc291cmNlcy90ZXN0LXV0aWxzLmpzCisndXNlIHN0cmljdCc7
CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgY29uc3QgdHMgPSByZWNvcmRpbmdUcmFuc2Zvcm1T
dHJlYW0oe30sIHVuZGVmaW5lZCwgeyBoaWdoV2F0ZXJNYXJrOiAwIH0pOworICBjb25zdCBycyA9
IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoY29udHJvbGxlcikgeworICAgICAgY29u
dHJvbGxlci5lbnF1ZXVlKDApOworICAgIH0KKyAgfSk7CisgIGxldCBwaXBlVG9SZWplY3RlZCA9
IGZhbHNlOworICBjb25zdCBwaXBlVG9Qcm9taXNlID0gcHJvbWlzZV9yZWplY3RzX2pzKHQsIFR5
cGVFcnJvciwgcnMucGlwZVRvKHRzLndyaXRhYmxlKSwgJ3BpcGVUbyBzaG91bGQgcmVqZWN0Jyku
dGhlbigoKSA9PiB7CisgICAgcGlwZVRvUmVqZWN0ZWQgPSB0cnVlOworICB9KTsKKyAgcmV0dXJu
IGRlbGF5KDApLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9hcnJheV9lcXVhbHModHMuZXZlbnRz
LCBbXSwgJ3RyYW5zZm9ybSgpIHNob3VsZCBoYXZlIHNlZW4gbm8gY2h1bmtzJyk7CisgICAgYXNz
ZXJ0X2ZhbHNlKHBpcGVUb1JlamVjdGVkLCAncGlwZVRvKCkgc2hvdWxkIG5vdCBoYXZlIHJlamVj
dGVkIHlldCcpOworICAgIHRzLmNvbnRyb2xsZXIudGVybWluYXRlKCk7CisgICAgcmV0dXJuIHBp
cGVUb1Byb21pc2U7CisgIH0pLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9hcnJheV9lcXVhbHMo
dHMuZXZlbnRzLCBbXSwgJ3RyYW5zZm9ybSgpIHNob3VsZCBzdGlsbCBoYXZlIHNlZW4gbm8gY2h1
bmtzJyk7CisgICAgYXNzZXJ0X3RydWUocGlwZVRvUmVqZWN0ZWQsICdwaXBlVG9SZWplY3RlZCBt
dXN0IGJlIHRydWUnKTsKKyAgfSk7Cit9LCAnY29udHJvbGxlci50ZXJtaW5hdGUoKSBzaG91bGQg
ZXJyb3IgcGlwZVRvKCknKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBjb25zdCB0cyA9IHJl
Y29yZGluZ1RyYW5zZm9ybVN0cmVhbSh7fSwgdW5kZWZpbmVkLCB7IGhpZ2hXYXRlck1hcms6IDEg
fSk7CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjb250cm9s
bGVyKSB7CisgICAgICBjb250cm9sbGVyLmVucXVldWUoMCk7CisgICAgICBjb250cm9sbGVyLmVu
cXVldWUoMSk7CisgICAgfQorICB9KTsKKyAgY29uc3QgcGlwZVRvUHJvbWlzZSA9IHJzLnBpcGVU
byh0cy53cml0YWJsZSk7CisgIHJldHVybiBkZWxheSgwKS50aGVuKCgpID0+IHsKKyAgICBhc3Nl
cnRfYXJyYXlfZXF1YWxzKHRzLmV2ZW50cywgWyd0cmFuc2Zvcm0nLCAwXSwgJ3RyYW5zZm9ybSgp
IHNob3VsZCBoYXZlIHNlZW4gb25lIGNodW5rJyk7CisgICAgdHMuY29udHJvbGxlci50ZXJtaW5h
dGUoKTsKKyAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2pzKHQsIFR5cGVFcnJvciwgcGlwZVRv
UHJvbWlzZSwgJ3BpcGVUbygpIHNob3VsZCByZWplY3QnKTsKKyAgfSkudGhlbigoKSA9PiB7Cisg
ICAgYXNzZXJ0X2FycmF5X2VxdWFscyh0cy5ldmVudHMsIFsndHJhbnNmb3JtJywgMF0sICd0cmFu
c2Zvcm0oKSBzaG91bGQgc3RpbGwgaGF2ZSBzZWVuIG9ubHkgb25lIGNodW5rJyk7CisgIH0pOwor
fSwgJ2NvbnRyb2xsZXIudGVybWluYXRlKCkgc2hvdWxkIHByZXZlbnQgcmVtYWluaW5nIGNodW5r
cyBmcm9tIGJlaW5nIHByb2Nlc3NlZCcpOworCit0ZXN0KCgpID0+IHsKKyAgbmV3IFRyYW5zZm9y
bVN0cmVhbSh7CisgICAgc3RhcnQoY29udHJvbGxlcikgeworICAgICAgY29udHJvbGxlci5lbnF1
ZXVlKDApOworICAgICAgY29udHJvbGxlci50ZXJtaW5hdGUoKTsKKyAgICAgIGFzc2VydF90aHJv
d3NfanMoVHlwZUVycm9yLCAoKSA9PiBjb250cm9sbGVyLmVucXVldWUoMSksICdlbnF1ZXVlIHNo
b3VsZCB0aHJvdycpOworICAgIH0KKyAgfSk7Cit9LCAnY29udHJvbGxlci5lbnF1ZXVlKCkgc2hv
dWxkIHRocm93IGFmdGVyIGNvbnRyb2xsZXIudGVybWluYXRlKCknKTsKKworY29uc3QgZXJyb3Ix
ID0gbmV3IEVycm9yKCdlcnJvcjEnKTsKK2Vycm9yMS5uYW1lID0gJ2Vycm9yMSc7CisKK3Byb21p
c2VfdGVzdCh0ID0+IHsKKyAgY29uc3QgdHMgPSBuZXcgVHJhbnNmb3JtU3RyZWFtKHsKKyAgICBz
dGFydChjb250cm9sbGVyKSB7CisgICAgICBjb250cm9sbGVyLmVucXVldWUoMCk7CisgICAgICBj
b250cm9sbGVyLnRlcm1pbmF0ZSgpOworICAgICAgY29udHJvbGxlci5lcnJvcihlcnJvcjEpOwor
ICAgIH0KKyAgfSk7CisgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAgcHJvbWlzZV9yZWplY3Rz
X2pzKHQsIFR5cGVFcnJvciwgdHMud3JpdGFibGUuYWJvcnQoKSwgJ2Fib3J0KCkgc2hvdWxkIHJl
amVjdCB3aXRoIGEgVHlwZUVycm9yJyksCisgICAgcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwg
ZXJyb3IxLCB0cy5yZWFkYWJsZS5jYW5jZWwoKSwgJ2NhbmNlbCgpIHNob3VsZCByZWplY3Qgd2l0
aCBlcnJvcjEnKSwKKyAgICBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIHRzLnJl
YWRhYmxlLmdldFJlYWRlcigpLmNsb3NlZCwgJ2Nsb3NlZCBzaG91bGQgcmVqZWN0IHdpdGggZXJy
b3IxJykKKyAgXSk7Cit9LCAnY29udHJvbGxlci5lcnJvcigpIGFmdGVyIGNvbnRyb2xsZXIudGVy
bWluYXRlKCkgd2l0aCBxdWV1ZWQgY2h1bmsgc2hvdWxkIGVycm9yIHRoZSByZWFkYWJsZScpOwor
Citwcm9taXNlX3Rlc3QodCA9PiB7CisgIGNvbnN0IHRzID0gbmV3IFRyYW5zZm9ybVN0cmVhbSh7
CisgICAgc3RhcnQoY29udHJvbGxlcikgeworICAgICAgY29udHJvbGxlci50ZXJtaW5hdGUoKTsK
KyAgICAgIGNvbnRyb2xsZXIuZXJyb3IoZXJyb3IxKTsKKyAgICB9CisgIH0pOworICByZXR1cm4g
UHJvbWlzZS5hbGwoWworICAgIHByb21pc2VfcmVqZWN0c19qcyh0LCBUeXBlRXJyb3IsIHRzLndy
aXRhYmxlLmFib3J0KCksICdhYm9ydCgpIHNob3VsZCByZWplY3Qgd2l0aCBhIFR5cGVFcnJvcicp
LAorICAgIHRzLnJlYWRhYmxlLmNhbmNlbCgpLAorICAgIHRzLnJlYWRhYmxlLmdldFJlYWRlcigp
LmNsb3NlZAorICBdKTsKK30sICdjb250cm9sbGVyLmVycm9yKCkgYWZ0ZXIgY29udHJvbGxlci50
ZXJtaW5hdGUoKSB3aXRob3V0IHF1ZXVlZCBjaHVuayBzaG91bGQgZG8gbm90aGluZycpOworCitw
cm9taXNlX3Rlc3QoKCkgPT4geworICBjb25zdCB0cyA9IG5ldyBUcmFuc2Zvcm1TdHJlYW0oewor
ICAgIGZsdXNoKGNvbnRyb2xsZXIpIHsKKyAgICAgIGNvbnRyb2xsZXIudGVybWluYXRlKCk7Cisg
ICAgfQorICB9KTsKKyAgY29uc3Qgd3JpdGVyID0gdHMud3JpdGFibGUuZ2V0V3JpdGVyKCk7Cisg
IHJldHVybiBQcm9taXNlLmFsbChbCisgICAgd3JpdGVyLmNsb3NlKCksCisgICAgd3JpdGVyLmNs
b3NlZCwKKyAgICB0cy5yZWFkYWJsZS5nZXRSZWFkZXIoKS5jbG9zZWQKKyAgXSk7Cit9LCAnY29u
dHJvbGxlci50ZXJtaW5hdGUoKSBpbnNpZGUgZmx1c2goKSBzaG91bGQgbm90IHByZXZlbnQgd3Jp
dGVyLmNsb3NlKCkgZnJvbSBzdWNjZWVkaW5nJyk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvdHJhbnNmb3JtLXN0cmVhbXMv
dGVybWluYXRlLmFueS53b3JrZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1zL3Rlcm1pbmF0
ZS5hbnkud29ya2VyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YjhhNWJhOTYzZDJlOTk1OTE5
NjBiNDNhY2Q2NWIxZWEzZDlhZDEwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1zL3Rl
cm1pbmF0ZS5hbnkud29ya2VyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDggQEAKKworRkFJTCBj
b250cm9sbGVyLnRlcm1pbmF0ZSgpIHNob3VsZCBlcnJvciBwaXBlVG8oKSBDYW4ndCBmaW5kIHZh
cmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgY29udHJvbGxlci50ZXJtaW5hdGUoKSBzaG91
bGQgcHJldmVudCByZW1haW5pbmcgY2h1bmtzIGZyb20gYmVpbmcgcHJvY2Vzc2VkIENhbid0IGZp
bmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCBjb250cm9sbGVyLmVucXVldWUoKSBz
aG91bGQgdGhyb3cgYWZ0ZXIgY29udHJvbGxlci50ZXJtaW5hdGUoKSBDYW4ndCBmaW5kIHZhcmlh
YmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgY29udHJvbGxlci5lcnJvcigpIGFmdGVyIGNvbnRy
b2xsZXIudGVybWluYXRlKCkgd2l0aCBxdWV1ZWQgY2h1bmsgc2hvdWxkIGVycm9yIHRoZSByZWFk
YWJsZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgY29udHJvbGxl
ci5lcnJvcigpIGFmdGVyIGNvbnRyb2xsZXIudGVybWluYXRlKCkgd2l0aG91dCBxdWV1ZWQgY2h1
bmsgc2hvdWxkIGRvIG5vdGhpbmcgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFt
CitGQUlMIGNvbnRyb2xsZXIudGVybWluYXRlKCkgaW5zaWRlIGZsdXNoKCkgc2hvdWxkIG5vdCBw
cmV2ZW50IHdyaXRlci5jbG9zZSgpIGZyb20gc3VjY2VlZGluZyBDYW4ndCBmaW5kIHZhcmlhYmxl
OiBUcmFuc2Zvcm1TdHJlYW0KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1zL3Rlcm1pbmF0ZS5h
bnkud29ya2VyLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3N0cmVhbXMvdHJhbnNmb3JtLXN0cmVhbXMvdGVybWluYXRlLmFueS53b3JrZXIuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4yMzgyOTEzNTI4ZTY5M2IzYTVkNTZjNjYwYTQ1MDYwOTgwYjU0OGMzCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1zL3Rlcm1pbmF0ZS5hbnkud29ya2VyLmh0bWwKQEAg
LTAsMCArMSBAQAorPCEtLSBUaGlzIGZpbGUgaXMgcmVxdWlyZWQgZm9yIFdlYktpdCB0ZXN0IGlu
ZnJhc3RydWN0dXJlIHRvIHJ1biB0aGUgdGVtcGxhdGVkIHRlc3QgLS0+ClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1zL3czYy1pbXBvcnQubG9nIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5z
Zm9ybS1zdHJlYW1zL3czYy1pbXBvcnQubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg0M2MwNWUwZGMxMTZiNjgy
MDhmY2VjNjNmMWZhMTBiNWJiZDVmZGQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvdHJhbnNmb3JtLXN0cmVhbXMv
dzNjLWltcG9ydC5sb2cKQEAgLTAsMCArMSwyNiBAQAorVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0
b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCitEbyBOT1QgbW9kaWZ5
IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KK0luc3RlYWQsIGNyZWF0ZSBhIHB1bGwg
cmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKKwlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRm
b3JtLXRlc3RzL3dwdAorCitUaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRl
c3RzIGluIFdlYktpdCB0byByZWltcG9ydAorCitEbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlz
IGZpbGUuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHBy
ZWZpeGVzOgorTm9uZQorUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6
CitOb25lCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xpc3Qgb2YgZmlsZXM6CisvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1zL2Jh
Y2twcmVzc3VyZS5hbnkuanMKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMvdHJhbnNmb3JtLXN0cmVhbXMvZXJyb3JzLmFueS5qcworL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy90cmFuc2Zvcm0tc3Ry
ZWFtcy9mbHVzaC5hbnkuanMKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMvdHJhbnNmb3JtLXN0cmVhbXMvZ2VuZXJhbC5hbnkuanMKKy9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvdHJhbnNmb3JtLXN0
cmVhbXMvbGlwZnV6ei5hbnkuanMKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMvdHJhbnNmb3JtLXN0cmVhbXMvcGF0Y2hlZC1nbG9iYWwuYW55Lmpz
CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3Ry
YW5zZm9ybS1zdHJlYW1zL3Byb3BlcnRpZXMuYW55LmpzCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1zL3JlZW50cmFu
dC1zdHJhdGVnaWVzLmFueS5qcworL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy9zdHJhdGVnaWVzLmFueS5qcworL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy90cmFuc2Zv
cm0tc3RyZWFtcy90ZXJtaW5hdGUuYW55LmpzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvdzNjLWltcG9ydC5sb2cgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvdzNjLWltcG9y
dC5sb2cKaW5kZXggYmQzNWVhODg4ZTAyOWI4NmFlYTFlNGRmZTQyMDRmZWI2YmYyYWEzZS4uMmUy
M2UxOGNlOGU3ZTUyYzRhMjE5NGMzOTVmNWY1YmE4ZDQ5YWMxZCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3czYy1pbXBvcnQu
bG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy93M2MtaW1wb3J0LmxvZwpAQCAtMSw3ICsxLDcgQEAKIFRoZSB0ZXN0cyBpbiB0aGlzIGRp
cmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgogRG8gTk9UIG1v
ZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCiBJbnN0ZWFkLCBjcmVhdGUgYSBw
dWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMKKwlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3Rz
L3dwdAogCiBUaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdl
YktpdCB0byByZWltcG9ydAogCkBAIC0xNCwxNiArMTQsNyBAQCBQcm9wZXJ0eSB2YWx1ZXMgcmVx
dWlyaW5nIHZlbmRvciBwcmVmaXhlczoKIE5vbmUKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogTGlzdCBvZiBm
aWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvT1dORVJTCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
dHJlYW1zL01FVEEueW1sCiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL1JFQURNRS5tZAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy9ieXRlLWxlbmd0aC1xdWV1aW5nLXN0cmF0ZWd5LmRlZGljYXRl
ZHdvcmtlci5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL2J5dGUtbGVuZ3RoLXF1ZXVpbmctc3RyYXRlZ3kuaHRtbAotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9ieXRlLWxlbmd0aC1xdWV1
aW5nLXN0cmF0ZWd5LmpzCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL2J5dGUtbGVuZ3RoLXF1ZXVpbmctc3RyYXRlZ3kuc2VydmljZXdvcmtlci5o
dHRwcy5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
dHJlYW1zL2J5dGUtbGVuZ3RoLXF1ZXVpbmctc3RyYXRlZ3kuc2hhcmVkd29ya2VyLmh0bWwKLS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvY291bnQt
cXVldWluZy1zdHJhdGVneS5kZWRpY2F0ZWR3b3JrZXIuaHRtbAotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5
Lmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvY291bnQtcXVldWluZy1zdHJhdGVneS5qcwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5LnNlcnZpY2V3
b3JrZXIuaHR0cHMuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5LnNoYXJlZHdvcmtlci5odG1sCi0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL2dlbmVy
YXRlLXRlc3Qtd3JhcHBlcnMuanMKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMvaWRsaGFybmVzcy5hbnkuanMKKy9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcXVldWluZy1zdHJhdGVnaWVzLmFueS5q
cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvYWJvcnRpbmcuYW55LWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJs
ZS1zdHJlYW1zL2Fib3J0aW5nLmFueS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmE1Y2U1MDMz
M2Q3ZGMwMjRiNDc0ODAxY2Q0OGViMzcxNGMzODMyNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1z
dHJlYW1zL2Fib3J0aW5nLmFueS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw3MCBAQAorQ09OU09M
RSBNRVNTQUdFOiBVbmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rpb246IHVuZGVmaW5lZAorQ09OU09M
RSBNRVNTQUdFOiBVbmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rpb246IGRvbmUKK0NPTlNPTEUgTUVT
U0FHRTogVW5oYW5kbGVkIFByb21pc2UgUmVqZWN0aW9uOiBkb25lCitDT05TT0xFIE1FU1NBR0U6
IFVuaGFuZGxlZCBQcm9taXNlIFJlamVjdGlvbjogZG9uZQorQ09OU09MRSBNRVNTQUdFOiBVbmhh
bmRsZWQgUHJvbWlzZSBSZWplY3Rpb246IGVycm9yMjogZXJyb3IyCitDT05TT0xFIE1FU1NBR0U6
IFVuaGFuZGxlZCBQcm9taXNlIFJlamVjdGlvbjogdW5kZWZpbmVkCitDT05TT0xFIE1FU1NBR0U6
IFVuaGFuZGxlZCBQcm9taXNlIFJlamVjdGlvbjogdW5kZWZpbmVkCitDT05TT0xFIE1FU1NBR0U6
IFVuaGFuZGxlZCBQcm9taXNlIFJlamVjdGlvbjogdW5kZWZpbmVkCitDT05TT0xFIE1FU1NBR0U6
IFVuaGFuZGxlZCBQcm9taXNlIFJlamVjdGlvbjogdW5kZWZpbmVkCitDT05TT0xFIE1FU1NBR0U6
IFVuaGFuZGxlZCBQcm9taXNlIFJlamVjdGlvbjogdW5kZWZpbmVkCitDT05TT0xFIE1FU1NBR0U6
IFVuaGFuZGxlZCBQcm9taXNlIFJlamVjdGlvbjogc3RyaW5nIGFyZ3VtZW50CisKK0hhcm5lc3Mg
RXJyb3IgKEZBSUwpLCBtZXNzYWdlID0gVW5oYW5kbGVkIHJlamVjdGlvbgorCitGQUlMIEFib3J0
aW5nIGEgV3JpdGFibGVTdHJlYW0gYmVmb3JlIGl0IHN0YXJ0cyBzaG91bGQgY2F1c2UgdGhlIHdy
aXRlcidzIHVuc2V0dGxlZCByZWFkeSBwcm9taXNlIHRvIHJlamVjdCB3cy5nZXRXcml0ZXIgaXMg
bm90IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3JpdGVyKCknLCAnd3MuZ2V0V3JpdGVyJyBpcyB1
bmRlZmluZWQpCitGQUlMIEFib3J0aW5nIGEgV3JpdGFibGVTdHJlYW0gc2hvdWxkIGNhdXNlIHRo
ZSB3cml0ZXIncyBmdWxmaWxsZWQgcmVhZHkgcHJvbWlzZSB0byByZXNldCB0byBhIHJlamVjdGVk
IG9uZSB3cy5nZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3JpdGVyKCkn
LCAnd3MuZ2V0V3JpdGVyJyBpcyB1bmRlZmluZWQpCitGQUlMIGFib3J0KCkgb24gYSByZWxlYXNl
ZCB3cml0ZXIgcmVqZWN0cyB3cy5nZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3Mu
Z2V0V3JpdGVyKCknLCAnd3MuZ2V0V3JpdGVyJyBpcyB1bmRlZmluZWQpCitGQUlMIEFib3J0aW5n
IGEgV3JpdGFibGVTdHJlYW0gaW1tZWRpYXRlbHkgcHJldmVudHMgZnV0dXJlIHdyaXRlcyBwcm9t
aXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJUeXBlRXJy
b3I6IHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0ZXIoKScs
ICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkiCitGQUlMIEFib3J0aW5nIGEgV3JpdGFibGVT
dHJlYW0gcHJldmVudHMgZnVydGhlciB3cml0ZXMgYWZ0ZXIgYW55IHRoYXQgYXJlIGluIHByb2dy
ZXNzIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3Qg
IlR5cGVFcnJvcjogd3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdy
aXRlcigpJywgJ3dzLmdldFdyaXRlcicgaXMgdW5kZWZpbmVkKSIKK0ZBSUwgRnVsZmlsbG1lbnQg
dmFsdWUgb2Ygd3JpdGVyLmFib3J0KCkgY2FsbCBtdXN0IGJlIHVuZGVmaW5lZCBldmVuIGlmIHRo
ZSB1bmRlcmx5aW5nIHNpbmsgcmV0dXJucyBhIG5vbi11bmRlZmluZWQgdmFsdWUgd3MuZ2V0V3Jp
dGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRl
cicgaXMgdW5kZWZpbmVkKQorRkFJTCBXcml0YWJsZVN0cmVhbSBpZiBzaW5rJ3MgYWJvcnQgdGhy
b3dzLCB0aGUgcHJvbWlzZSByZXR1cm5lZCBieSB3cml0ZXIuYWJvcnQoKSByZWplY3RzIHdzLmdl
dFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRX
cml0ZXInIGlzIHVuZGVmaW5lZCkKK0ZBSUwgV3JpdGFibGVTdHJlYW0gaWYgc2luaydzIGFib3J0
IHRocm93cywgdGhlIHByb21pc2UgcmV0dXJuZWQgYnkgbXVsdGlwbGUgd3JpdGVyLmFib3J0KClz
IGlzIHRoZSBzYW1lIGFuZCByZWplY3RzIHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4g
KEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkKK1BBU1Mg
V3JpdGFibGVTdHJlYW0gaWYgc2luaydzIGFib3J0IHRocm93cywgdGhlIHByb21pc2UgcmV0dXJu
ZWQgYnkgd3MuYWJvcnQoKSByZWplY3RzIAorRkFJTCBXcml0YWJsZVN0cmVhbSBpZiBzaW5rJ3Mg
YWJvcnQgdGhyb3dzLCBmb3IgYW4gYWJvcnQgcGVyZm9ybWVkIGR1cmluZyBhIHdyaXRlLCB0aGUg
cHJvbWlzZSByZXR1cm5lZCBieSB3cy5hYm9ydCgpIHJlamVjdHMgd3MuZ2V0V3JpdGVyIGlzIG5v
dCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicgaXMgdW5k
ZWZpbmVkKQorRkFJTCBBYm9ydGluZyBhIFdyaXRhYmxlU3RyZWFtIHBhc3NlcyB0aHJvdWdoIHRo
ZSBnaXZlbiByZWFzb24gd3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdl
dFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicgaXMgdW5kZWZpbmVkKQorRkFJTCBBYm9ydGluZyBh
IFdyaXRhYmxlU3RyZWFtIHB1dHMgaXQgaW4gYW4gZXJyb3JlZCBzdGF0ZSB3aXRoIHRoZSBlcnJv
ciBwYXNzZWQgdG8gYWJvcnQoKSB3cy5nZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAn
d3MuZ2V0V3JpdGVyKCknLCAnd3MuZ2V0V3JpdGVyJyBpcyB1bmRlZmluZWQpCitGQUlMIEFib3J0
aW5nIGEgV3JpdGFibGVTdHJlYW0gY2F1c2VzIGFueSBvdXRzdGFuZGluZyB3cml0ZSgpIHByb21p
c2VzIHRvIGJlIHJlamVjdGVkIHdpdGggdGhlIHJlYXNvbiBzdXBwbGllZCB3cy5nZXRXcml0ZXIg
aXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3JpdGVyKCknLCAnd3MuZ2V0V3JpdGVyJyBp
cyB1bmRlZmluZWQpCitGQUlMIENsb3NpbmcgYnV0IHRoZW4gaW1tZWRpYXRlbHkgYWJvcnRpbmcg
YSBXcml0YWJsZVN0cmVhbSBjYXVzZXMgdGhlIHN0cmVhbSB0byBlcnJvciB3cy5nZXRXcml0ZXIg
aXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3JpdGVyKCknLCAnd3MuZ2V0V3JpdGVyJyBp
cyB1bmRlZmluZWQpCitGQUlMIENsb3NpbmcgYSBXcml0YWJsZVN0cmVhbSBhbmQgYWJvcnRpbmcg
aXQgd2hpbGUgaXQgY2xvc2VzIGNhdXNlcyB0aGUgc3RyZWFtIHRvIGlnbm9yZSB0aGUgYWJvcnQg
YXR0ZW1wdCB3cy5nZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3JpdGVy
KCknLCAnd3MuZ2V0V3JpdGVyJyBpcyB1bmRlZmluZWQpCitGQUlMIEFib3J0aW5nIGEgV3JpdGFi
bGVTdHJlYW0gYWZ0ZXIgaXQgaXMgY2xvc2VkIGlzIGEgbm8tb3Agd3MuZ2V0V3JpdGVyIGlzIG5v
dCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicgaXMgdW5k
ZWZpbmVkKQorRkFJTCBXcml0YWJsZVN0cmVhbSBzaG91bGQgTk9UIGNhbGwgdW5kZXJseWluZyBz
aW5rJ3MgY2xvc2UgaWYgbm8gYWJvcnQgaXMgc3VwcGxpZWQgKGhpc3RvcmljYWwpIHdzLmdldFdy
aXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0
ZXInIGlzIHVuZGVmaW5lZCkKK0ZBSUwgcmV0dXJuaW5nIGEgdGhlbmFibGUgZnJvbSBhYm9ydCgp
IHNob3VsZCB3b3JrIHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRX
cml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkKK0ZBSUwgLmNsb3NlZCBzaG91
bGQgbm90IHJlc29sdmUgYmVmb3JlIGZ1bGZpbGxlZCB3cml0ZSgpIHdzLmdldFdyaXRlciBpcyBu
b3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVu
ZGVmaW5lZCkKK0ZBSUwgLmNsb3NlZCBzaG91bGQgbm90IHJlc29sdmUgYmVmb3JlIHJlamVjdGVk
IHdyaXRlKCk7IHdyaXRlKCkgZXJyb3Igc2hvdWxkIG5vdCBvdmVyd3JpdGUgYWJvcnQoKSBlcnJv
ciB3cy5nZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3JpdGVyKCknLCAn
d3MuZ2V0V3JpdGVyJyBpcyB1bmRlZmluZWQpCitGQUlMIHdyaXRlcyBzaG91bGQgYmUgc2F0aXNm
aWVkIGluIG9yZGVyIHdoZW4gYWJvcnRpbmcgd3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9u
LiAoSW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicgaXMgdW5kZWZpbmVkKQorRkFJ
TCB3cml0ZXMgc2hvdWxkIGJlIHNhdGlzZmllZCBpbiBvcmRlciBhZnRlciByZWplY3RlZCB3cml0
ZSB3aGVuIGFib3J0aW5nIHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5n
ZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkKK0ZBSUwgY2xvc2UoKSBz
aG91bGQgcmVqZWN0IHdpdGggYWJvcnQgcmVhc29uIHdoeSBhYm9ydCgpIGlzIGZpcnN0IGVycm9y
IHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3
cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkKK0ZBSUwgdW5kZXJseWluZyBhYm9ydCgpIHNob3Vs
ZCBub3QgYmUgY2FsbGVkIHVudGlsIHVuZGVybHlpbmcgd3JpdGUoKSBjb21wbGV0ZXMgd3MuZ2V0
V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdy
aXRlcicgaXMgdW5kZWZpbmVkKQorRkFJTCB1bmRlcmx5aW5nIGFib3J0KCkgc2hvdWxkIG5vdCBi
ZSBjYWxsZWQgaWYgdW5kZXJseWluZyBjbG9zZSgpIGhhcyBzdGFydGVkIHdzLmdldFdyaXRlciBp
cyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlz
IHVuZGVmaW5lZCkKK0ZBSUwgaWYgdW5kZXJseWluZyBjbG9zZSgpIGhhcyBzdGFydGVkIGFuZCB0
aGVuIHJlamVjdHMsIHRoZSBhYm9ydCgpIGFuZCBjbG9zZSgpIHByb21pc2VzIHNob3VsZCByZWpl
Y3Qgd2l0aCB0aGUgdW5kZXJseWluZyBjbG9zZSByZWplY3Rpb24gcmVhc29uIHdzLmdldFdyaXRl
ciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXIn
IGlzIHVuZGVmaW5lZCkKK0ZBSUwgYW4gYWJvcnQoKSB0aGF0IGhhcHBlbnMgZHVyaW5nIGEgd3Jp
dGUoKSBzaG91bGQgdHJpZ2dlciB0aGUgdW5kZXJseWluZyBhYm9ydCgpIGV2ZW4gd2l0aCBhIGNs
b3NlKCkgcXVldWVkIHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRX
cml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkKK0ZBSUwgaWYgYSB3cml0ZXIg
aXMgY3JlYXRlZCBmb3IgYSBzdHJlYW0gd2l0aCBhIHBlbmRpbmcgYWJvcnQsIGl0cyByZWFkeSBz
aG91bGQgYmUgcmVqZWN0ZWQgd2l0aCB0aGUgYWJvcnQgZXJyb3Igd3MuZ2V0V3JpdGVyIGlzIG5v
dCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicgaXMgdW5k
ZWZpbmVkKQorRkFJTCB3cml0ZXIgY2xvc2UoKSBwcm9taXNlIHNob3VsZCByZXNvbHZlIGJlZm9y
ZSBhYm9ydCgpIHByb21pc2Ugd3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dz
LmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicgaXMgdW5kZWZpbmVkKQorRkFJTCB3cml0ZXIu
cmVhZHkgc2hvdWxkIHJlamVjdCBvbiBjb250cm9sbGVyIGVycm9yIHdpdGhvdXQgd2FpdGluZyBm
b3IgdW5kZXJseWluZyB3cml0ZSB3cy5nZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAn
d3MuZ2V0V3JpdGVyKCknLCAnd3MuZ2V0V3JpdGVyJyBpcyB1bmRlZmluZWQpCitGQUlMIHdyaXRl
ci5hYm9ydCgpIHdoaWxlIHRoZXJlIGlzIGFuIGluLWZsaWdodCB3cml0ZSwgYW5kIHRoZW4gZmlu
aXNoIHRoZSB3cml0ZSB3aXRoIHJlamVjdGlvbiB3cy5nZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rp
b24uIChJbiAnd3MuZ2V0V3JpdGVyKCknLCAnd3MuZ2V0V3JpdGVyJyBpcyB1bmRlZmluZWQpCitG
QUlMIHdyaXRlci5hYm9ydCgpLCBjb250cm9sbGVyLmVycm9yKCkgd2hpbGUgdGhlcmUgaXMgYW4g
aW4tZmxpZ2h0IHdyaXRlLCBhbmQgdGhlbiBmaW5pc2ggdGhlIHdyaXRlIHdzLmdldFdyaXRlciBp
cyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlz
IHVuZGVmaW5lZCkKK0ZBSUwgd3JpdGVyLmFib3J0KCksIGNvbnRyb2xsZXIuZXJyb3IoKSB3aGls
ZSB0aGVyZSBpcyBhbiBpbi1mbGlnaHQgY2xvc2UsIGFuZCB0aGVuIGZpbmlzaCB0aGUgY2xvc2Ug
d3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywgJ3dz
LmdldFdyaXRlcicgaXMgdW5kZWZpbmVkKQorRkFJTCBjb250cm9sbGVyLmVycm9yKCksIHdyaXRl
ci5hYm9ydCgpIHdoaWxlIHRoZXJlIGlzIGFuIGluLWZsaWdodCB3cml0ZSwgYW5kIHRoZW4gZmlu
aXNoIHRoZSB3cml0ZSB3cy5nZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0
V3JpdGVyKCknLCAnd3MuZ2V0V3JpdGVyJyBpcyB1bmRlZmluZWQpCitGQUlMIGNvbnRyb2xsZXIu
ZXJyb3IoKSwgd3JpdGVyLmFib3J0KCkgd2hpbGUgdGhlcmUgaXMgYW4gaW4tZmxpZ2h0IGNsb3Nl
LCBhbmQgdGhlbiBmaW5pc2ggdGhlIGNsb3NlIHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlv
bi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkKK0ZB
SUwgcmVsZWFzZUxvY2soKSB3aGlsZSBhYm9ydGluZyBzaG91bGQgcmVqZWN0IHRoZSBvcmlnaW5h
bCBjbG9zZWQgcHJvbWlzZSB3cy5nZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3Mu
Z2V0V3JpdGVyKCknLCAnd3MuZ2V0V3JpdGVyJyBpcyB1bmRlZmluZWQpCitGQUlMIHJlbGVhc2VM
b2NrKCkgZHVyaW5nIGRlbGF5ZWQgYXN5bmMgYWJvcnQoKSBzaG91bGQgcmVqZWN0IHRoZSB3cml0
ZXIuY2xvc2VkIHByb21pc2Ugd3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dz
LmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicgaXMgdW5kZWZpbmVkKQorRkFJTCBzaW5rIGFi
b3J0KCkgc2hvdWxkIG5vdCBiZSBjYWxsZWQgdW50aWwgc2luayBzdGFydCgpIGlzIGRvbmUgYXNz
ZXJ0X2FycmF5X2VxdWFsczogYWJvcnQoKSBzaG91bGQgbm90IGJlIGNhbGxlZCBkdXJpbmcgc3Rh
cnQoKSBsZW5ndGhzIGRpZmZlciwgZXhwZWN0ZWQgYXJyYXkgW10gbGVuZ3RoIDAsIGdvdCBbImFi
b3J0IiwgImRvbmUiXSBsZW5ndGggMgorRkFJTCBpZiBzdGFydCBhdHRlbXB0cyB0byBlcnJvciB0
aGUgY29udHJvbGxlciBhZnRlciBhYm9ydCgpIGhhcyBiZWVuIGNhbGxlZCwgdGhlbiBpdCBzaG91
bGQgbG9zZSBjb250cm9sbGVyLmVycm9yIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ2NvbnRyb2xs
ZXIuZXJyb3IoZXJyb3IxKScsICdjb250cm9sbGVyLmVycm9yJyBpcyB1bmRlZmluZWQpCitQQVNT
IHN0cmVhbSBhYm9ydCgpIHByb21pc2Ugc2hvdWxkIHN0aWxsIHJlc29sdmUgaWYgc2luayBzdGFy
dCgpIHJlamVjdHMgCitGQUlMIHdyaXRlciBhYm9ydCgpIGR1cmluZyBzaW5rIHN0YXJ0KCkgc2hv
dWxkIHJlcGxhY2UgdGhlIHdyaXRlci5yZWFkeSBwcm9taXNlIHN5bmNocm9ub3VzbHkgd3MuZ2V0
V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdy
aXRlcicgaXMgdW5kZWZpbmVkKQorRkFJTCBwcm9taXNlcyByZXR1cm5lZCBmcm9tIG90aGVyIHdy
aXRlciBtZXRob2RzIHNob3VsZCBiZSByZWplY3RlZCB3aGVuIHdyaXRlciBhYm9ydCgpIGhhcHBl
bnMgZHVyaW5nIHNpbmsgc3RhcnQoKSB3cy5nZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJ
biAnd3MuZ2V0V3JpdGVyKCknLCAnd3MuZ2V0V3JpdGVyJyBpcyB1bmRlZmluZWQpCitGQUlMIGFi
b3J0KCkgc2hvdWxkIHN1Y2NlZWQgZGVzcGl0ZSByZWplY3Rpb24gZnJvbSB3cml0ZSB3cy5nZXRX
cml0ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3JpdGVyKCknLCAnd3MuZ2V0V3Jp
dGVyJyBpcyB1bmRlZmluZWQpCitGQUlMIGFib3J0KCkgc2hvdWxkIGJlIHJlamVjdGVkIHdpdGgg
dGhlIHJlamVjdGlvbiByZXR1cm5lZCBmcm9tIGNsb3NlKCkgd3MuZ2V0V3JpdGVyIGlzIG5vdCBh
IGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicgaXMgdW5kZWZp
bmVkKQorRkFJTCBhIHJlamVjdGluZyBzaW5rLndyaXRlKCkgc2hvdWxkIG5vdCBwcmV2ZW50IHNp
bmsuYWJvcnQoKSBmcm9tIGJlaW5nIGNhbGxlZCB3cy5nZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rp
b24uIChJbiAnd3MuZ2V0V3JpdGVyKCknLCAnd3MuZ2V0V3JpdGVyJyBpcyB1bmRlZmluZWQpCitQ
QVNTIHdoZW4gc3RhcnQgZXJyb3JzIGFmdGVyIHN0cmVhbSBhYm9ydCgpLCB1bmRlcmx5aW5nIHNp
bmsgYWJvcnQoKSBzaG91bGQgYmUgY2FsbGVkIGFueXdheSAKK0ZBSUwgd2hlbiBjYWxsaW5nIGFi
b3J0KCkgdHdpY2Ugb24gdGhlIHNhbWUgc3RyZWFtLCBib3RoIHNob3VsZCBnaXZlIHRoZSBzYW1l
IHByb21pc2UgdGhhdCBmdWxmaWxscyB3aXRoIHVuZGVmaW5lZCBhc3NlcnRfZXF1YWxzOiB0aGUg
cHJvbWlzZXMgbXVzdCBiZSB0aGUgc2FtZSBleHBlY3RlZCBvYmplY3QgIltvYmplY3QgUHJvbWlz
ZV0iIGJ1dCBnb3Qgb2JqZWN0ICJbb2JqZWN0IFByb21pc2VdIgorRkFJTCB3aGVuIGNhbGxpbmcg
YWJvcnQoKSB0d2ljZSBvbiB0aGUgc2FtZSBzdHJlYW0sIGJ1dCBzZXF1ZW50aWFsbHkgc28gc28g
dGhlcmUncyBubyBwZW5kaW5nIGFib3J0IHRoZSBzZWNvbmQgdGltZSwgYm90aCBzaG91bGQgZnVs
ZmlsbCB3aXRoIHVuZGVmaW5lZCBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0
aCB2YWx1ZTogdW5kZWZpbmVkCitGQUlMIGNhbGxpbmcgYWJvcnQoKSBvbiBhbiBlcnJvcmVkIHN0
cmVhbSBzaG91bGQgZnVsZmlsbCB3aXRoIHVuZGVmaW5lZCBjLmVycm9yIGlzIG5vdCBhIGZ1bmN0
aW9uLiAoSW4gJ2MuZXJyb3IoZXJyb3IxKScsICdjLmVycm9yJyBpcyB1bmRlZmluZWQpCitGQUlM
IHNpbmsgYWJvcnQoKSBzaG91bGQgbm90IGJlIGNhbGxlZCBpZiBzdHJlYW0gd2FzIGVycm9yaW5n
IGR1ZSB0byBjb250cm9sbGVyLmVycm9yKCkgYmVmb3JlIGFib3J0KCkgd2FzIGNhbGxlZCB3cy5n
ZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3JpdGVyKCknLCAnd3MuZ2V0
V3JpdGVyJyBpcyB1bmRlZmluZWQpCitGQUlMIHNpbmsgYWJvcnQoKSBzaG91bGQgbm90IGJlIGNh
bGxlZCBpZiBzdHJlYW0gd2FzIGVycm9yaW5nIGR1ZSB0byBiYWQgc3RyYXRlZ3kgYmVmb3JlIGFi
b3J0KCkgd2FzIGNhbGxlZCB3cy5nZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3Mu
Z2V0V3JpdGVyKCknLCAnd3MuZ2V0V3JpdGVyJyBpcyB1bmRlZmluZWQpCitGQUlMIGFib3J0IHdp
dGggbm8gYXJndW1lbnRzIHNob3VsZCBzZXQgdGhlIHN0b3JlZCBlcnJvciB0byB1bmRlZmluZWQg
cHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiVHlw
ZUVycm9yOiB3cy5nZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3JpdGVy
KCknLCAnd3MuZ2V0V3JpdGVyJyBpcyB1bmRlZmluZWQpIgorRkFJTCBhYm9ydCB3aXRoIGFuIHVu
ZGVmaW5lZCBhcmd1bWVudCBzaG91bGQgc2V0IHRoZSBzdG9yZWQgZXJyb3IgdG8gdW5kZWZpbmVk
IHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5
cGVFcnJvcjogd3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRl
cigpJywgJ3dzLmdldFdyaXRlcicgaXMgdW5kZWZpbmVkKSIKK0ZBSUwgYWJvcnQgd2l0aCBhIHN0
cmluZyBhcmd1bWVudCBzaG91bGQgc2V0IHRoZSBzdG9yZWQgZXJyb3IgdG8gdGhhdCBhcmd1bWVu
dCBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJU
eXBlRXJyb3I6IHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0
ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkiCitGQUlMIGFib3J0IG9uIGEgbG9j
a2VkIHN0cmVhbSBzaG91bGQgcmVqZWN0IHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4g
KEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJl
YW1zL3dyaXRhYmxlLXN0cmVhbXMvYWJvcnRpbmcuYW55Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9hYm9y
dGluZy5hbnkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMzgyOTEzNTI4ZTY5M2IzYTVkNTZjNjYwYTQ1MDYw
OTgwYjU0OGMzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvYWJvcnRpbmcuYW55Lmh0
bWwKQEAgLTAsMCArMSBAQAorPCEtLSBUaGlzIGZpbGUgaXMgcmVxdWlyZWQgZm9yIFdlYktpdCB0
ZXN0IGluZnJhc3RydWN0dXJlIHRvIHJ1biB0aGUgdGVtcGxhdGVkIHRlc3QgLS0+ClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvYWJvcnRpbmcuYW55
LmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
L3dyaXRhYmxlLXN0cmVhbXMvYWJvcnRpbmcuYW55LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVjMDUzYmFiOTE1
NzAwNzRlNDA1NWUxODBkNThiNTA2ZTFkYjdmY2QKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3Ry
ZWFtcy9hYm9ydGluZy5hbnkuanMKQEAgLTAsMCArMSwxMzc4IEBACisvLyBNRVRBOiBnbG9iYWw9
d2luZG93LHdvcmtlcixqc3NoZWxsCisvLyBNRVRBOiBzY3JpcHQ9Li4vcmVzb3VyY2VzL3Rlc3Qt
dXRpbHMuanMKKy8vIE1FVEE6IHNjcmlwdD0uLi9yZXNvdXJjZXMvcmVjb3JkaW5nLXN0cmVhbXMu
anMKKyd1c2Ugc3RyaWN0JzsKKworY29uc3QgZXJyb3IxID0gbmV3IEVycm9yKCdlcnJvcjEnKTsK
K2Vycm9yMS5uYW1lID0gJ2Vycm9yMSc7CisKK2NvbnN0IGVycm9yMiA9IG5ldyBFcnJvcignZXJy
b3IyJyk7CitlcnJvcjIubmFtZSA9ICdlcnJvcjInOworCitwcm9taXNlX3Rlc3QodCA9PiB7Cisg
IGNvbnN0IHdzID0gbmV3IFdyaXRhYmxlU3RyZWFtKHsKKyAgICB3cml0ZTogdC51bnJlYWNoZWRf
ZnVuYygnd3JpdGUoKSBzaG91bGQgbm90IGJlIGNhbGxlZCcpCisgIH0pOworCisgIGNvbnN0IHdy
aXRlciA9IHdzLmdldFdyaXRlcigpOworICBjb25zdCB3cml0ZVByb21pc2UgPSB3cml0ZXIud3Jp
dGUoJ2EnKTsKKworICBjb25zdCByZWFkeVByb21pc2UgPSB3cml0ZXIucmVhZHk7CisKKyAgd3Jp
dGVyLmFib3J0KGVycm9yMSk7CisKKyAgYXNzZXJ0X2VxdWFscyh3cml0ZXIucmVhZHksIHJlYWR5
UHJvbWlzZSwgJ3RoZSByZWFkeSBwcm9taXNlIHByb3BlcnR5IHNob3VsZCBub3QgY2hhbmdlJyk7
CisKKyAgcmV0dXJuIFByb21pc2UuYWxsKFsKKyAgICBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0
LCBlcnJvcjEsIHJlYWR5UHJvbWlzZSwgJ3RoZSByZWFkeSBwcm9taXNlIHNob3VsZCByZWplY3Qg
d2l0aCBlcnJvcjEnKSwKKyAgICBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIHdy
aXRlUHJvbWlzZSwgJ3RoZSB3cml0ZSgpIHByb21pc2Ugc2hvdWxkIHJlamVjdCB3aXRoIGVycm9y
MScpCisgIF0pOworfSwgJ0Fib3J0aW5nIGEgV3JpdGFibGVTdHJlYW0gYmVmb3JlIGl0IHN0YXJ0
cyBzaG91bGQgY2F1c2UgdGhlIHdyaXRlclwncyB1bnNldHRsZWQgcmVhZHkgcHJvbWlzZSB0byBy
ZWplY3QnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBjb25zdCB3cyA9IG5ldyBXcml0YWJs
ZVN0cmVhbSgpOworCisgIGNvbnN0IHdyaXRlciA9IHdzLmdldFdyaXRlcigpOworICB3cml0ZXIu
d3JpdGUoJ2EnKTsKKworICBjb25zdCByZWFkeVByb21pc2UgPSB3cml0ZXIucmVhZHk7CisKKyAg
cmV0dXJuIHJlYWR5UHJvbWlzZS50aGVuKCgpID0+IHsKKyAgICB3cml0ZXIuYWJvcnQoZXJyb3Ix
KTsKKworICAgIGFzc2VydF9ub3RfZXF1YWxzKHdyaXRlci5yZWFkeSwgcmVhZHlQcm9taXNlLCAn
dGhlIHJlYWR5IHByb21pc2UgcHJvcGVydHkgc2hvdWxkIGNoYW5nZScpOworICAgIHJldHVybiBw
cm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIHdyaXRlci5yZWFkeSwgJ3RoZSByZWFk
eSBwcm9taXNlIHNob3VsZCByZWplY3Qgd2l0aCBlcnJvcjEnKTsKKyAgfSk7Cit9LCAnQWJvcnRp
bmcgYSBXcml0YWJsZVN0cmVhbSBzaG91bGQgY2F1c2UgdGhlIHdyaXRlclwncyBmdWxmaWxsZWQg
cmVhZHkgcHJvbWlzZSB0byByZXNldCB0byBhIHJlamVjdGVkIG9uZScpOworCitwcm9taXNlX3Rl
c3QodCA9PiB7CisgIGNvbnN0IHdzID0gbmV3IFdyaXRhYmxlU3RyZWFtKCk7CisgIGNvbnN0IHdy
aXRlciA9IHdzLmdldFdyaXRlcigpOworCisgIHdyaXRlci5yZWxlYXNlTG9jaygpOworCisgIHJl
dHVybiBwcm9taXNlX3JlamVjdHNfanModCwgVHlwZUVycm9yLCB3cml0ZXIuYWJvcnQoKSwgJ2Fi
b3J0KCkgc2hvdWxkIHJlamVjdCB3aXRoIGEgVHlwZUVycm9yJyk7Cit9LCAnYWJvcnQoKSBvbiBh
IHJlbGVhc2VkIHdyaXRlciByZWplY3RzJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgY29u
c3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSgpOworCisgIHJldHVybiBkZWxheSgwKQor
ICAgIC50aGVuKCgpID0+IHsKKyAgICAgIGNvbnN0IHdyaXRlciA9IHdzLmdldFdyaXRlcigpOwor
CisgICAgICBjb25zdCBhYm9ydFByb21pc2UgPSB3cml0ZXIuYWJvcnQoZXJyb3IxKTsKKworICAg
ICAgcmV0dXJuIFByb21pc2UuYWxsKFsKKyAgICAgICAgcHJvbWlzZV9yZWplY3RzX2V4YWN0bHko
dCwgZXJyb3IxLCB3cml0ZXIud3JpdGUoMSksICd3cml0ZSgxKSBtdXN0IHJlamVjdCB3aXRoIGVy
cm9yMScpLAorICAgICAgICBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIHdyaXRl
ci53cml0ZSgyKSwgJ3dyaXRlKDIpIG11c3QgcmVqZWN0IHdpdGggZXJyb3IxJyksCisgICAgICAg
IGFib3J0UHJvbWlzZQorICAgICAgXSk7CisgICAgfSkKKyAgICAudGhlbigoKSA9PiB7CisgICAg
ICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWydhYm9ydCcsIGVycm9yMV0pOworICAg
IH0pOworfSwgJ0Fib3J0aW5nIGEgV3JpdGFibGVTdHJlYW0gaW1tZWRpYXRlbHkgcHJldmVudHMg
ZnV0dXJlIHdyaXRlcycpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIGNvbnN0IHdzID0gcmVj
b3JkaW5nV3JpdGFibGVTdHJlYW0oKTsKKyAgY29uc3QgcmVzdWx0cyA9IFtdOworCisgIHJldHVy
biBkZWxheSgwKQorICAgIC50aGVuKCgpID0+IHsKKyAgICAgIGNvbnN0IHdyaXRlciA9IHdzLmdl
dFdyaXRlcigpOworCisgICAgICByZXN1bHRzLnB1c2goCisgICAgICAgIHdyaXRlci53cml0ZSgx
KSwKKyAgICAgICAgcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCB3cml0ZXIud3Jp
dGUoMiksICd3cml0ZSgyKSBtdXN0IHJlamVjdCB3aXRoIGVycm9yMScpLAorICAgICAgICBwcm9t
aXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIHdyaXRlci53cml0ZSgzKSwgJ3dyaXRlKDMp
IG11c3QgcmVqZWN0IHdpdGggZXJyb3IxJykKKyAgICAgICk7CisKKyAgICAgIGNvbnN0IGFib3J0
UHJvbWlzZSA9IHdyaXRlci5hYm9ydChlcnJvcjEpOworCisgICAgICByZXN1bHRzLnB1c2goCisg
ICAgICAgIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMSwgd3JpdGVyLndyaXRlKDQp
LCAnd3JpdGUoNCkgbXVzdCByZWplY3Qgd2l0aCBlcnJvcjEnKSwKKyAgICAgICAgcHJvbWlzZV9y
ZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCB3cml0ZXIud3JpdGUoNSksICd3cml0ZSg1KSBtdXN0
IHJlamVjdCB3aXRoIGVycm9yMScpCisgICAgICApOworCisgICAgICByZXR1cm4gYWJvcnRQcm9t
aXNlOworICAgIH0pLnRoZW4oKCkgPT4geworICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5l
dmVudHMsIFsnd3JpdGUnLCAxLCAnYWJvcnQnLCBlcnJvcjFdKTsKKworICAgICAgcmV0dXJuIFBy
b21pc2UuYWxsKHJlc3VsdHMpOworICAgIH0pOworfSwgJ0Fib3J0aW5nIGEgV3JpdGFibGVTdHJl
YW0gcHJldmVudHMgZnVydGhlciB3cml0ZXMgYWZ0ZXIgYW55IHRoYXQgYXJlIGluIHByb2dyZXNz
Jyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisgIGNvbnN0IHdzID0gbmV3IFdyaXRhYmxlU3Ry
ZWFtKHsKKyAgICBhYm9ydCgpIHsKKyAgICAgIHJldHVybiAnSGVsbG8nOworICAgIH0KKyAgfSk7
CisgIGNvbnN0IHdyaXRlciA9IHdzLmdldFdyaXRlcigpOworCisgIHJldHVybiB3cml0ZXIuYWJv
cnQoJ2EnKS50aGVuKHZhbHVlID0+IHsKKyAgICBhc3NlcnRfZXF1YWxzKHZhbHVlLCB1bmRlZmlu
ZWQsICdmdWxmaWxsbWVudCB2YWx1ZSBtdXN0IGJlIHVuZGVmaW5lZCcpOworICB9KTsKK30sICdG
dWxmaWxsbWVudCB2YWx1ZSBvZiB3cml0ZXIuYWJvcnQoKSBjYWxsIG11c3QgYmUgdW5kZWZpbmVk
IGV2ZW4gaWYgdGhlIHVuZGVybHlpbmcgc2luayByZXR1cm5zIGEgbm9uLXVuZGVmaW5lZCAnICsK
KyAgICd2YWx1ZScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIGNvbnN0IHdzID0gbmV3IFdy
aXRhYmxlU3RyZWFtKHsKKyAgICBhYm9ydCgpIHsKKyAgICAgIHRocm93IGVycm9yMTsKKyAgICB9
CisgIH0pOworICBjb25zdCB3cml0ZXIgPSB3cy5nZXRXcml0ZXIoKTsKKworICByZXR1cm4gcHJv
bWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCB3cml0ZXIuYWJvcnQodW5kZWZpbmVkKSwK
KyAgICAncmVqZWN0aW9uIHJlYXNvbiBvZiBhYm9ydFByb21pc2UgbXVzdCBiZSB0aGUgZXJyb3Ig
dGhyb3duIGJ5IGFib3J0Jyk7Cit9LCAnV3JpdGFibGVTdHJlYW0gaWYgc2lua1wncyBhYm9ydCB0
aHJvd3MsIHRoZSBwcm9taXNlIHJldHVybmVkIGJ5IHdyaXRlci5hYm9ydCgpIHJlamVjdHMnKTsK
KworcHJvbWlzZV90ZXN0KHQgPT4geworICBjb25zdCB3cyA9IG5ldyBXcml0YWJsZVN0cmVhbSh7
CisgICAgYWJvcnQoKSB7CisgICAgICB0aHJvdyBlcnJvcjE7CisgICAgfQorICB9KTsKKyAgY29u
c3Qgd3JpdGVyID0gd3MuZ2V0V3JpdGVyKCk7CisKKyAgY29uc3QgYWJvcnRQcm9taXNlMSA9IHdy
aXRlci5hYm9ydCh1bmRlZmluZWQpOworICBjb25zdCBhYm9ydFByb21pc2UyID0gd3JpdGVyLmFi
b3J0KHVuZGVmaW5lZCk7CisKKyAgYXNzZXJ0X2VxdWFscyhhYm9ydFByb21pc2UxLCBhYm9ydFBy
b21pc2UyLCAndGhlIHByb21pc2VzIG11c3QgYmUgdGhlIHNhbWUnKTsKKworICByZXR1cm4gcHJv
bWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCBhYm9ydFByb21pc2UxLCAncHJvbWlzZSBt
dXN0IGhhdmUgbWF0Y2hpbmcgcmVqZWN0aW9uJyk7Cit9LCAnV3JpdGFibGVTdHJlYW0gaWYgc2lu
a1wncyBhYm9ydCB0aHJvd3MsIHRoZSBwcm9taXNlIHJldHVybmVkIGJ5IG11bHRpcGxlIHdyaXRl
ci5hYm9ydCgpcyBpcyB0aGUgc2FtZSBhbmQgcmVqZWN0cycpOworCitwcm9taXNlX3Rlc3QodCA9
PiB7CisgIGNvbnN0IHdzID0gbmV3IFdyaXRhYmxlU3RyZWFtKHsKKyAgICBhYm9ydCgpIHsKKyAg
ICAgIHRocm93IGVycm9yMTsKKyAgICB9CisgIH0pOworCisgIHJldHVybiBwcm9taXNlX3JlamVj
dHNfZXhhY3RseSh0LCBlcnJvcjEsIHdzLmFib3J0KHVuZGVmaW5lZCksCisgICAgJ3JlamVjdGlv
biByZWFzb24gb2YgYWJvcnRQcm9taXNlIG11c3QgYmUgdGhlIGVycm9yIHRocm93biBieSBhYm9y
dCcpOworfSwgJ1dyaXRhYmxlU3RyZWFtIGlmIHNpbmtcJ3MgYWJvcnQgdGhyb3dzLCB0aGUgcHJv
bWlzZSByZXR1cm5lZCBieSB3cy5hYm9ydCgpIHJlamVjdHMnKTsKKworcHJvbWlzZV90ZXN0KHQg
PT4geworICBsZXQgcmVzb2x2ZVdyaXRlUHJvbWlzZTsKKyAgY29uc3Qgd3MgPSBuZXcgV3JpdGFi
bGVTdHJlYW0oeworICAgIHdyaXRlKCkgeworICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29s
dmUgPT4geworICAgICAgICByZXNvbHZlV3JpdGVQcm9taXNlID0gcmVzb2x2ZTsKKyAgICAgIH0p
OworICAgIH0sCisgICAgYWJvcnQoKSB7CisgICAgICB0aHJvdyBlcnJvcjE7CisgICAgfQorICB9
KTsKKworICBjb25zdCB3cml0ZXIgPSB3cy5nZXRXcml0ZXIoKTsKKworICB3cml0ZXIud3JpdGUo
KS5jYXRjaCgoKSA9PiB7fSk7CisgIHJldHVybiBmbHVzaEFzeW5jRXZlbnRzKCkudGhlbigoKSA9
PiB7CisgICAgY29uc3QgYWJvcnRQcm9taXNlID0gd3JpdGVyLmFib3J0KHVuZGVmaW5lZCk7CisK
KyAgICByZXNvbHZlV3JpdGVQcm9taXNlKCk7CisgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19l
eGFjdGx5KHQsIGVycm9yMSwgYWJvcnRQcm9taXNlLAorICAgICAgJ3JlamVjdGlvbiByZWFzb24g
b2YgYWJvcnRQcm9taXNlIG11c3QgYmUgdGhlIGVycm9yIHRocm93biBieSBhYm9ydCcpOworICB9
KTsKK30sICdXcml0YWJsZVN0cmVhbSBpZiBzaW5rXCdzIGFib3J0IHRocm93cywgZm9yIGFuIGFi
b3J0IHBlcmZvcm1lZCBkdXJpbmcgYSB3cml0ZSwgdGhlIHByb21pc2UgcmV0dXJuZWQgYnkgJyAr
CisgICAnd3MuYWJvcnQoKSByZWplY3RzJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisgIGNv
bnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0oKTsKKyAgY29uc3Qgd3JpdGVyID0gd3Mu
Z2V0V3JpdGVyKCk7CisKKyAgcmV0dXJuIHdyaXRlci5hYm9ydChlcnJvcjEpLnRoZW4oKCkgPT4g
eworICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ2Fib3J0JywgZXJyb3IxXSk7
CisgIH0pOworfSwgJ0Fib3J0aW5nIGEgV3JpdGFibGVTdHJlYW0gcGFzc2VzIHRocm91Z2ggdGhl
IGdpdmVuIHJlYXNvbicpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIGNvbnN0IHdzID0gbmV3
IFdyaXRhYmxlU3RyZWFtKCk7CisgIGNvbnN0IHdyaXRlciA9IHdzLmdldFdyaXRlcigpOworCisg
IGNvbnN0IGFib3J0UHJvbWlzZSA9IHdyaXRlci5hYm9ydChlcnJvcjEpOworCisgIGNvbnN0IGV2
ZW50cyA9IFtdOworICB3cml0ZXIucmVhZHkuY2F0Y2goKCkgPT4geworICAgIGV2ZW50cy5wdXNo
KCdyZWFkeScpOworICB9KTsKKyAgd3JpdGVyLmNsb3NlZC5jYXRjaCgoKSA9PiB7CisgICAgZXZl
bnRzLnB1c2goJ2Nsb3NlZCcpOworICB9KTsKKworICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAg
IGFib3J0UHJvbWlzZSwKKyAgICBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIHdy
aXRlci53cml0ZSgpLCAnd3JpdGluZyBzaG91bGQgcmVqZWN0IHdpdGggZXJyb3IxJyksCisgICAg
cHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCB3cml0ZXIuY2xvc2UoKSwgJ2Nsb3Np
bmcgc2hvdWxkIHJlamVjdCB3aXRoIGVycm9yMScpLAorICAgIHByb21pc2VfcmVqZWN0c19leGFj
dGx5KHQsIGVycm9yMSwgd3JpdGVyLnJlYWR5LCAncmVhZHkgc2hvdWxkIHJlamVjdCB3aXRoIGVy
cm9yMScpLAorICAgIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMSwgd3JpdGVyLmNs
b3NlZCwgJ2Nsb3NlZCBzaG91bGQgcmVqZWN0IHdpdGggZXJyb3IxJykKKyAgXSkudGhlbigoKSA9
PiB7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhbJ3JlYWR5JywgJ2Nsb3NlZCddLCBldmVudHMs
ICdyZWFkeSBzaG91bGQgcmVqZWN0IGJlZm9yZSBjbG9zZWQnKTsKKyAgfSk7Cit9LCAnQWJvcnRp
bmcgYSBXcml0YWJsZVN0cmVhbSBwdXRzIGl0IGluIGFuIGVycm9yZWQgc3RhdGUgd2l0aCB0aGUg
ZXJyb3IgcGFzc2VkIHRvIGFib3J0KCknKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBjb25z
dCB3cyA9IG5ldyBXcml0YWJsZVN0cmVhbSgpOworICBjb25zdCB3cml0ZXIgPSB3cy5nZXRXcml0
ZXIoKTsKKworICBjb25zdCB3cml0ZVByb21pc2UgPSBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0
LCBlcnJvcjEsIHdyaXRlci53cml0ZSgnYScpLAorICAgICd3cml0aW5nIHNob3VsZCByZWplY3Qg
d2l0aCBlcnJvcjEnKTsKKworICB3cml0ZXIuYWJvcnQoZXJyb3IxKTsKKworICByZXR1cm4gd3Jp
dGVQcm9taXNlOworfSwgJ0Fib3J0aW5nIGEgV3JpdGFibGVTdHJlYW0gY2F1c2VzIGFueSBvdXRz
dGFuZGluZyB3cml0ZSgpIHByb21pc2VzIHRvIGJlIHJlamVjdGVkIHdpdGggdGhlIHJlYXNvbiBz
dXBwbGllZCcpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIGNvbnN0IHdzID0gcmVjb3JkaW5n
V3JpdGFibGVTdHJlYW0oKTsKKyAgY29uc3Qgd3JpdGVyID0gd3MuZ2V0V3JpdGVyKCk7CisKKyAg
Y29uc3QgY2xvc2VQcm9taXNlID0gd3JpdGVyLmNsb3NlKCk7CisgIGNvbnN0IGFib3J0UHJvbWlz
ZSA9IHdyaXRlci5hYm9ydChlcnJvcjEpOworCisgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAg
cHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCB3cml0ZXIuY2xvc2VkLCAnY2xvc2Vk
IHNob3VsZCByZWplY3Qgd2l0aCBlcnJvcjEnKSwKKyAgICBwcm9taXNlX3JlamVjdHNfZXhhY3Rs
eSh0LCBlcnJvcjEsIGNsb3NlUHJvbWlzZSwgJ2Nsb3NlKCkgc2hvdWxkIHJlamVjdCB3aXRoIGVy
cm9yMScpLAorICAgIGFib3J0UHJvbWlzZQorICBdKS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRf
YXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWydhYm9ydCcsIGVycm9yMV0pOworICB9KTsKK30sICdD
bG9zaW5nIGJ1dCB0aGVuIGltbWVkaWF0ZWx5IGFib3J0aW5nIGEgV3JpdGFibGVTdHJlYW0gY2F1
c2VzIHRoZSBzdHJlYW0gdG8gZXJyb3InKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgbGV0
IHJlc29sdmVDbG9zZTsKKyAgY29uc3Qgd3MgPSBuZXcgV3JpdGFibGVTdHJlYW0oeworICAgIGNs
b3NlKCkgeworICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4geworICAgICAgICBy
ZXNvbHZlQ2xvc2UgPSByZXNvbHZlOworICAgICAgfSk7CisgICAgfQorICB9KTsKKyAgY29uc3Qg
d3JpdGVyID0gd3MuZ2V0V3JpdGVyKCk7CisKKyAgY29uc3QgY2xvc2VQcm9taXNlID0gd3JpdGVy
LmNsb3NlKCk7CisKKyAgcmV0dXJuIGRlbGF5KDApLnRoZW4oKCkgPT4geworICAgIGNvbnN0IGFi
b3J0UHJvbWlzZSA9IHdyaXRlci5hYm9ydChlcnJvcjEpOworICAgIHJlc29sdmVDbG9zZSgpOwor
ICAgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAgICB3cml0ZXIuY2xvc2VkLAorICAgICAgYWJv
cnRQcm9taXNlLAorICAgICAgY2xvc2VQcm9taXNlCisgICAgXSk7CisgIH0pOworfSwgJ0Nsb3Np
bmcgYSBXcml0YWJsZVN0cmVhbSBhbmQgYWJvcnRpbmcgaXQgd2hpbGUgaXQgY2xvc2VzIGNhdXNl
cyB0aGUgc3RyZWFtIHRvIGlnbm9yZSB0aGUgYWJvcnQgYXR0ZW1wdCcpOworCitwcm9taXNlX3Rl
c3QoKCkgPT4geworICBjb25zdCB3cyA9IG5ldyBXcml0YWJsZVN0cmVhbSgpOworICBjb25zdCB3
cml0ZXIgPSB3cy5nZXRXcml0ZXIoKTsKKworICB3cml0ZXIuY2xvc2UoKTsKKworICByZXR1cm4g
ZGVsYXkoMCkudGhlbigoKSA9PiB3cml0ZXIuYWJvcnQoKSk7Cit9LCAnQWJvcnRpbmcgYSBXcml0
YWJsZVN0cmVhbSBhZnRlciBpdCBpcyBjbG9zZWQgaXMgYSBuby1vcCcpOworCitwcm9taXNlX3Rl
c3QodCA9PiB7CisgIC8vIFRlc3RpbmcgdGhhdCBwZXIgaHR0cHM6Ly9naXRodWIuY29tL3doYXR3
Zy9zdHJlYW1zL2lzc3Vlcy82MjAjaXNzdWVjb21tZW50LTI2MzQ4Mzk1MyB0aGUgZmFsbGJhY2sg
dG8gY2xvc2Ugd2FzCisgIC8vIHJlbW92ZWQuCisKKyAgLy8gQ2Fubm90IHVzZSByZWNvcmRpbmdX
cml0YWJsZVN0cmVhbSBzaW5jZSBpdCBhbHdheXMgaGFzIGFuIGFib3J0CisgIGxldCBjbG9zZUNh
bGxlZCA9IGZhbHNlOworICBjb25zdCB3cyA9IG5ldyBXcml0YWJsZVN0cmVhbSh7CisgICAgY2xv
c2UoKSB7CisgICAgICBjbG9zZUNhbGxlZCA9IHRydWU7CisgICAgfQorICB9KTsKKworICBjb25z
dCB3cml0ZXIgPSB3cy5nZXRXcml0ZXIoKTsKKworICB3cml0ZXIuYWJvcnQoZXJyb3IxKTsKKwor
ICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCB3cml0ZXIuY2xvc2Vk
LCAnY2xvc2VkIHNob3VsZCByZWplY3Qgd2l0aCBlcnJvcjEnKS50aGVuKCgpID0+IHsKKyAgICBh
c3NlcnRfZmFsc2UoY2xvc2VDYWxsZWQsICdjbG9zZSBtdXN0IG5vdCBoYXZlIGJlZW4gY2FsbGVk
Jyk7CisgIH0pOworfSwgJ1dyaXRhYmxlU3RyZWFtIHNob3VsZCBOT1QgY2FsbCB1bmRlcmx5aW5n
IHNpbmtcJ3MgY2xvc2UgaWYgbm8gYWJvcnQgaXMgc3VwcGxpZWQgKGhpc3RvcmljYWwpJyk7CisK
K3Byb21pc2VfdGVzdCgoKSA9PiB7CisgIGxldCB0aGVuQ2FsbGVkID0gZmFsc2U7CisgIGNvbnN0
IHdzID0gbmV3IFdyaXRhYmxlU3RyZWFtKHsKKyAgICBhYm9ydCgpIHsKKyAgICAgIHJldHVybiB7
CisgICAgICAgIHRoZW4ob25GdWxmaWxsZWQpIHsKKyAgICAgICAgICB0aGVuQ2FsbGVkID0gdHJ1
ZTsKKyAgICAgICAgICBvbkZ1bGZpbGxlZCgpOworICAgICAgICB9CisgICAgICB9OworICAgIH0K
KyAgfSk7CisgIGNvbnN0IHdyaXRlciA9IHdzLmdldFdyaXRlcigpOworICByZXR1cm4gd3JpdGVy
LmFib3J0KCkudGhlbigoKSA9PiBhc3NlcnRfdHJ1ZSh0aGVuQ2FsbGVkLCAndGhlbigpIHNob3Vs
ZCBiZSBjYWxsZWQnKSk7Cit9LCAncmV0dXJuaW5nIGEgdGhlbmFibGUgZnJvbSBhYm9ydCgpIHNo
b3VsZCB3b3JrJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgY29uc3Qgd3MgPSBuZXcgV3Jp
dGFibGVTdHJlYW0oeworICAgIHdyaXRlKCkgeworICAgICAgcmV0dXJuIGZsdXNoQXN5bmNFdmVu
dHMoKTsKKyAgICB9CisgIH0pOworICBjb25zdCB3cml0ZXIgPSB3cy5nZXRXcml0ZXIoKTsKKyAg
cmV0dXJuIHdyaXRlci5yZWFkeS50aGVuKCgpID0+IHsKKyAgICBjb25zdCB3cml0ZVByb21pc2Ug
PSB3cml0ZXIud3JpdGUoJ2EnKTsKKyAgICB3cml0ZXIuYWJvcnQoZXJyb3IxKTsKKyAgICBsZXQg
Y2xvc2VkUmVqZWN0ZWQgPSBmYWxzZTsKKyAgICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAgICAg
d3JpdGVQcm9taXNlLnRoZW4oKCkgPT4gYXNzZXJ0X2ZhbHNlKGNsb3NlZFJlamVjdGVkLCAnLmNs
b3NlZCBzaG91bGQgbm90IHJlc29sdmUgYmVmb3JlIHdyaXRlKCknKSksCisgICAgICBwcm9taXNl
X3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIHdyaXRlci5jbG9zZWQsICcuY2xvc2VkIHNob3Vs
ZCByZWplY3QnKS50aGVuKCgpID0+IHsKKyAgICAgICAgY2xvc2VkUmVqZWN0ZWQgPSB0cnVlOwor
ICAgICAgfSkKKyAgICBdKTsKKyAgfSk7Cit9LCAnLmNsb3NlZCBzaG91bGQgbm90IHJlc29sdmUg
YmVmb3JlIGZ1bGZpbGxlZCB3cml0ZSgpJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgY29u
c3Qgd3MgPSBuZXcgV3JpdGFibGVTdHJlYW0oeworICAgIHdyaXRlKCkgeworICAgICAgcmV0dXJu
IFByb21pc2UucmVqZWN0KGVycm9yMSk7CisgICAgfQorICB9KTsKKyAgY29uc3Qgd3JpdGVyID0g
d3MuZ2V0V3JpdGVyKCk7CisgIHJldHVybiB3cml0ZXIucmVhZHkudGhlbigoKSA9PiB7CisgICAg
Y29uc3Qgd3JpdGVQcm9taXNlID0gd3JpdGVyLndyaXRlKCdhJyk7CisgICAgY29uc3QgYWJvcnRQ
cm9taXNlID0gd3JpdGVyLmFib3J0KGVycm9yMik7CisgICAgbGV0IGNsb3NlZFJlamVjdGVkID0g
ZmFsc2U7CisgICAgcmV0dXJuIFByb21pc2UuYWxsKFsKKyAgICAgIHByb21pc2VfcmVqZWN0c19l
eGFjdGx5KHQsIGVycm9yMSwgd3JpdGVQcm9taXNlLCAnd3JpdGUoKSBzaG91bGQgcmVqZWN0JykK
KyAgICAgICAgICAudGhlbigoKSA9PiBhc3NlcnRfZmFsc2UoY2xvc2VkUmVqZWN0ZWQsICcuY2xv
c2VkIHNob3VsZCBub3QgcmVzb2x2ZSBiZWZvcmUgd3JpdGUoKScpKSwKKyAgICAgIHByb21pc2Vf
cmVqZWN0c19leGFjdGx5KHQsIGVycm9yMiwgd3JpdGVyLmNsb3NlZCwgJy5jbG9zZWQgc2hvdWxk
IHJlamVjdCcpCisgICAgICAgICAgLnRoZW4oKCkgPT4geworICAgICAgICAgICAgY2xvc2VkUmVq
ZWN0ZWQgPSB0cnVlOworICAgICAgICAgIH0pLAorICAgICAgYWJvcnRQcm9taXNlCisgICAgXSk7
CisgIH0pOworfSwgJy5jbG9zZWQgc2hvdWxkIG5vdCByZXNvbHZlIGJlZm9yZSByZWplY3RlZCB3
cml0ZSgpOyB3cml0ZSgpIGVycm9yIHNob3VsZCBub3Qgb3ZlcndyaXRlIGFib3J0KCkgZXJyb3In
KTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBjb25zdCB3cyA9IG5ldyBXcml0YWJsZVN0cmVh
bSh7CisgICAgd3JpdGUoKSB7CisgICAgICByZXR1cm4gZmx1c2hBc3luY0V2ZW50cygpOworICAg
IH0KKyAgfSwgbmV3IENvdW50UXVldWluZ1N0cmF0ZWd5KHsgaGlnaFdhdGVyTWFyazogNCB9KSk7
CisgIGNvbnN0IHdyaXRlciA9IHdzLmdldFdyaXRlcigpOworICByZXR1cm4gd3JpdGVyLnJlYWR5
LnRoZW4oKCkgPT4geworICAgIGNvbnN0IHNldHRsZW1lbnRPcmRlciA9IFtdOworICAgIHJldHVy
biBQcm9taXNlLmFsbChbCisgICAgICB3cml0ZXIud3JpdGUoJzEnKS50aGVuKCgpID0+IHNldHRs
ZW1lbnRPcmRlci5wdXNoKDEpKSwKKyAgICAgIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVy
cm9yMSwgd3JpdGVyLndyaXRlKCcyJyksICdmaXJzdCBxdWV1ZWQgd3JpdGUgc2hvdWxkIGJlIHJl
amVjdGVkJykKKyAgICAgICAgICAudGhlbigoKSA9PiBzZXR0bGVtZW50T3JkZXIucHVzaCgyKSks
CisgICAgICBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIHdyaXRlci53cml0ZSgn
MycpLCAnc2Vjb25kIHF1ZXVlZCB3cml0ZSBzaG91bGQgYmUgcmVqZWN0ZWQnKQorICAgICAgICAg
IC50aGVuKCgpID0+IHNldHRsZW1lbnRPcmRlci5wdXNoKDMpKSwKKyAgICAgIHdyaXRlci5hYm9y
dChlcnJvcjEpCisgICAgXSkudGhlbigoKSA9PiBhc3NlcnRfYXJyYXlfZXF1YWxzKFsxLCAyLCAz
XSwgc2V0dGxlbWVudE9yZGVyLCAnd3JpdGVzIHNob3VsZCBiZSBzYXRpc2ZpZWQgaW4gb3JkZXIn
KSk7CisgIH0pOworfSwgJ3dyaXRlcyBzaG91bGQgYmUgc2F0aXNmaWVkIGluIG9yZGVyIHdoZW4g
YWJvcnRpbmcnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBjb25zdCB3cyA9IG5ldyBXcml0
YWJsZVN0cmVhbSh7CisgICAgd3JpdGUoKSB7CisgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3Qo
ZXJyb3IxKTsKKyAgICB9CisgIH0sIG5ldyBDb3VudFF1ZXVpbmdTdHJhdGVneSh7IGhpZ2hXYXRl
ck1hcms6IDQgfSkpOworICBjb25zdCB3cml0ZXIgPSB3cy5nZXRXcml0ZXIoKTsKKyAgcmV0dXJu
IHdyaXRlci5yZWFkeS50aGVuKCgpID0+IHsKKyAgICBjb25zdCBzZXR0bGVtZW50T3JkZXIgPSBb
XTsKKyAgICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAgICAgcHJvbWlzZV9yZWplY3RzX2V4YWN0
bHkodCwgZXJyb3IxLCB3cml0ZXIud3JpdGUoJzEnKSwgJ2luLWZsaWdodCB3cml0ZSBzaG91bGQg
YmUgcmVqZWN0ZWQnKQorICAgICAgICAgIC50aGVuKCgpID0+IHNldHRsZW1lbnRPcmRlci5wdXNo
KDEpKSwKKyAgICAgIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMiwgd3JpdGVyLndy
aXRlKCcyJyksICdmaXJzdCBxdWV1ZWQgd3JpdGUgc2hvdWxkIGJlIHJlamVjdGVkJykKKyAgICAg
ICAgICAudGhlbigoKSA9PiBzZXR0bGVtZW50T3JkZXIucHVzaCgyKSksCisgICAgICBwcm9taXNl
X3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjIsIHdyaXRlci53cml0ZSgnMycpLCAnc2Vjb25kIHF1
ZXVlZCB3cml0ZSBzaG91bGQgYmUgcmVqZWN0ZWQnKQorICAgICAgICAgIC50aGVuKCgpID0+IHNl
dHRsZW1lbnRPcmRlci5wdXNoKDMpKSwKKyAgICAgIHdyaXRlci5hYm9ydChlcnJvcjIpCisgICAg
XSkudGhlbigoKSA9PiBhc3NlcnRfYXJyYXlfZXF1YWxzKFsxLCAyLCAzXSwgc2V0dGxlbWVudE9y
ZGVyLCAnd3JpdGVzIHNob3VsZCBiZSBzYXRpc2ZpZWQgaW4gb3JkZXInKSk7CisgIH0pOworfSwg
J3dyaXRlcyBzaG91bGQgYmUgc2F0aXNmaWVkIGluIG9yZGVyIGFmdGVyIHJlamVjdGVkIHdyaXRl
IHdoZW4gYWJvcnRpbmcnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBjb25zdCB3cyA9IG5l
dyBXcml0YWJsZVN0cmVhbSh7CisgICAgd3JpdGUoKSB7CisgICAgICByZXR1cm4gUHJvbWlzZS5y
ZWplY3QoZXJyb3IxKTsKKyAgICB9CisgIH0pOworICBjb25zdCB3cml0ZXIgPSB3cy5nZXRXcml0
ZXIoKTsKKyAgcmV0dXJuIHdyaXRlci5yZWFkeS50aGVuKCgpID0+IHsKKyAgICByZXR1cm4gUHJv
bWlzZS5hbGwoWworICAgICAgcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCB3cml0
ZXIud3JpdGUoJ2EnKSwgJ3dyaXRlci53cml0ZSgpIHNob3VsZCByZWplY3Qgd2l0aCBlcnJvciBm
cm9tIHVuZGVybHlpbmcgd3JpdGUoKScpLAorICAgICAgcHJvbWlzZV9yZWplY3RzX2V4YWN0bHko
dCwgZXJyb3IyLCB3cml0ZXIuY2xvc2UoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICd3cml0ZXIuY2xvc2UoKSBzaG91bGQgcmVqZWN0IHdpdGggZXJyb3IgZnJvbSB1bmRlcmx5aW5n
IHdyaXRlKCknKSwKKyAgICAgIHdyaXRlci5hYm9ydChlcnJvcjIpCisgICAgXSk7CisgIH0pOwor
fSwgJ2Nsb3NlKCkgc2hvdWxkIHJlamVjdCB3aXRoIGFib3J0IHJlYXNvbiB3aHkgYWJvcnQoKSBp
cyBmaXJzdCBlcnJvcicpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworICBsZXQgcmVzb2x2ZVdy
aXRlOworICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKHsKKyAgICB3cml0ZSgp
IHsKKyAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKKyAgICAgICAgcmVzb2x2
ZVdyaXRlID0gcmVzb2x2ZTsKKyAgICAgIH0pOworICAgIH0KKyAgfSk7CisKKyAgY29uc3Qgd3Jp
dGVyID0gd3MuZ2V0V3JpdGVyKCk7CisgIHJldHVybiB3cml0ZXIucmVhZHkudGhlbigoKSA9PiB7
CisgICAgd3JpdGVyLndyaXRlKCdhJyk7CisgICAgY29uc3QgYWJvcnRQcm9taXNlID0gd3JpdGVy
LmFib3J0KCdiJyk7CisgICAgcmV0dXJuIGZsdXNoQXN5bmNFdmVudHMoKS50aGVuKCgpID0+IHsK
KyAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ3dyaXRlJywgJ2EnXSwgJ2Fi
b3J0IHNob3VsZCBub3QgYmUgY2FsbGVkIHdoaWxlIHdyaXRlIGlzIGluLWZsaWdodCcpOworICAg
ICAgcmVzb2x2ZVdyaXRlKCk7CisgICAgICByZXR1cm4gYWJvcnRQcm9taXNlLnRoZW4oKCkgPT4g
eworICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWyd3cml0ZScsICdhJywg
J2Fib3J0JywgJ2InXSwgJ2Fib3J0IHNob3VsZCBiZSBjYWxsZWQgYWZ0ZXIgdGhlIHdyaXRlIGZp
bmlzaGVzJyk7CisgICAgICB9KTsKKyAgICB9KTsKKyAgfSk7Cit9LCAndW5kZXJseWluZyBhYm9y
dCgpIHNob3VsZCBub3QgYmUgY2FsbGVkIHVudGlsIHVuZGVybHlpbmcgd3JpdGUoKSBjb21wbGV0
ZXMnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgbGV0IHJlc29sdmVDbG9zZTsKKyAgY29u
c3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSh7CisgICAgY2xvc2UoKSB7CisgICAgICBy
ZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7CisgICAgICAgIHJlc29sdmVDbG9zZSA9IHJl
c29sdmU7CisgICAgICB9KTsKKyAgICB9CisgIH0pOworCisgIGNvbnN0IHdyaXRlciA9IHdzLmdl
dFdyaXRlcigpOworICByZXR1cm4gd3JpdGVyLnJlYWR5LnRoZW4oKCkgPT4geworICAgIHdyaXRl
ci5jbG9zZSgpOworICAgIGNvbnN0IGFib3J0UHJvbWlzZSA9IHdyaXRlci5hYm9ydCgpOworICAg
IHJldHVybiBmbHVzaEFzeW5jRXZlbnRzKCkudGhlbigoKSA9PiB7CisgICAgICBhc3NlcnRfYXJy
YXlfZXF1YWxzKHdzLmV2ZW50cywgWydjbG9zZSddLCAnYWJvcnQgc2hvdWxkIG5vdCBiZSBjYWxs
ZWQgd2hpbGUgY2xvc2UgaXMgaW4tZmxpZ2h0Jyk7CisgICAgICByZXNvbHZlQ2xvc2UoKTsKKyAg
ICAgIHJldHVybiBhYm9ydFByb21pc2UudGhlbigoKSA9PiB7CisgICAgICAgIGFzc2VydF9hcnJh
eV9lcXVhbHMod3MuZXZlbnRzLCBbJ2Nsb3NlJ10sICdhYm9ydCBzaG91bGQgbm90IGJlIGNhbGxl
ZCcpOworICAgICAgfSk7CisgICAgfSk7CisgIH0pOworfSwgJ3VuZGVybHlpbmcgYWJvcnQoKSBz
aG91bGQgbm90IGJlIGNhbGxlZCBpZiB1bmRlcmx5aW5nIGNsb3NlKCkgaGFzIHN0YXJ0ZWQnKTsK
KworcHJvbWlzZV90ZXN0KHQgPT4geworICBsZXQgcmVqZWN0Q2xvc2U7CisgIGxldCBhYm9ydENh
bGxlZCA9IGZhbHNlOworICBjb25zdCB3cyA9IG5ldyBXcml0YWJsZVN0cmVhbSh7CisgICAgY2xv
c2UoKSB7CisgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gewor
ICAgICAgICByZWplY3RDbG9zZSA9IHJlamVjdDsKKyAgICAgIH0pOworICAgIH0sCisgICAgYWJv
cnQoKSB7CisgICAgICBhYm9ydENhbGxlZCA9IHRydWU7CisgICAgfQorICB9KTsKKworICBjb25z
dCB3cml0ZXIgPSB3cy5nZXRXcml0ZXIoKTsKKyAgcmV0dXJuIHdyaXRlci5yZWFkeS50aGVuKCgp
ID0+IHsKKyAgICBjb25zdCBjbG9zZVByb21pc2UgPSB3cml0ZXIuY2xvc2UoKTsKKyAgICBjb25z
dCBhYm9ydFByb21pc2UgPSB3cml0ZXIuYWJvcnQoKTsKKyAgICByZXR1cm4gZmx1c2hBc3luY0V2
ZW50cygpLnRoZW4oKCkgPT4geworICAgICAgYXNzZXJ0X2ZhbHNlKGFib3J0Q2FsbGVkLCAndW5k
ZXJseWluZyBhYm9ydCBzaG91bGQgbm90IGJlIGNhbGxlZCB3aGlsZSBjbG9zZSBpcyBpbi1mbGln
aHQnKTsKKyAgICAgIHJlamVjdENsb3NlKGVycm9yMSk7CisgICAgICByZXR1cm4gcHJvbWlzZV9y
ZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCBhYm9ydFByb21pc2UsICdhYm9ydCBzaG91bGQgcmVq
ZWN0IHdpdGggdGhlIHNhbWUgcmVhc29uJykudGhlbigoKSA9PiB7CisgICAgICAgIHJldHVybiBw
cm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIGNsb3NlUHJvbWlzZSwgJ2Nsb3NlIHNo
b3VsZCByZWplY3Qgd2l0aCB0aGUgc2FtZSByZWFzb24nKTsKKyAgICAgIH0pLnRoZW4oKCkgPT4g
eworICAgICAgICBhc3NlcnRfZmFsc2UoYWJvcnRDYWxsZWQsICd1bmRlcmx5aW5nIGFib3J0IHNo
b3VsZCBub3QgYmUgY2FsbGVkIGFmdGVyIGNsb3NlIGNvbXBsZXRlcycpOworICAgICAgfSk7Cisg
ICAgfSk7CisgIH0pOworfSwgJ2lmIHVuZGVybHlpbmcgY2xvc2UoKSBoYXMgc3RhcnRlZCBhbmQg
dGhlbiByZWplY3RzLCB0aGUgYWJvcnQoKSBhbmQgY2xvc2UoKSBwcm9taXNlcyBzaG91bGQgcmVq
ZWN0IHdpdGggdGhlICcgKworICAgJ3VuZGVybHlpbmcgY2xvc2UgcmVqZWN0aW9uIHJlYXNvbicp
OworCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIGxldCByZXNvbHZlV3JpdGU7CisgIGNvbnN0IHdz
ID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0oeworICAgIHdyaXRlKCkgeworICAgICAgcmV0dXJu
IG5ldyBQcm9taXNlKHJlc29sdmUgPT4geworICAgICAgICByZXNvbHZlV3JpdGUgPSByZXNvbHZl
OworICAgICAgfSk7CisgICAgfQorICB9KTsKKworICBjb25zdCB3cml0ZXIgPSB3cy5nZXRXcml0
ZXIoKTsKKyAgcmV0dXJuIHdyaXRlci5yZWFkeS50aGVuKCgpID0+IHsKKyAgICB3cml0ZXIud3Jp
dGUoJ2EnKTsKKyAgICBjb25zdCBjbG9zZVByb21pc2UgPSB3cml0ZXIuY2xvc2UoKTsKKyAgICBj
b25zdCBhYm9ydFByb21pc2UgPSB3cml0ZXIuYWJvcnQoZXJyb3IxKTsKKworICAgIHJldHVybiBm
bHVzaEFzeW5jRXZlbnRzKCkudGhlbigoKSA9PiB7CisgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxz
KHdzLmV2ZW50cywgWyd3cml0ZScsICdhJ10sICdhYm9ydCBzaG91bGQgbm90IGJlIGNhbGxlZCB3
aGlsZSB3cml0ZSBpcyBpbi1mbGlnaHQnKTsKKyAgICAgIHJlc29sdmVXcml0ZSgpOworICAgICAg
cmV0dXJuIGFib3J0UHJvbWlzZS50aGVuKCgpID0+IHsKKyAgICAgICAgYXNzZXJ0X2FycmF5X2Vx
dWFscyh3cy5ldmVudHMsIFsnd3JpdGUnLCAnYScsICdhYm9ydCcsIGVycm9yMV0sICdhYm9ydCBz
aG91bGQgYmUgY2FsbGVkIGFmdGVyIHdyaXRlIGNvbXBsZXRlcycpOworICAgICAgICByZXR1cm4g
cHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCBjbG9zZVByb21pc2UsICdwcm9taXNl
IHJldHVybmVkIGJ5IGNsb3NlKCkgc2hvdWxkIGJlIHJlamVjdGVkJyk7CisgICAgICB9KTsKKyAg
ICB9KTsKKyAgfSk7Cit9LCAnYW4gYWJvcnQoKSB0aGF0IGhhcHBlbnMgZHVyaW5nIGEgd3JpdGUo
KSBzaG91bGQgdHJpZ2dlciB0aGUgdW5kZXJseWluZyBhYm9ydCgpIGV2ZW4gd2l0aCBhIGNsb3Nl
KCkgcXVldWVkJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgY29uc3Qgd3MgPSBuZXcgV3Jp
dGFibGVTdHJlYW0oeworICAgIHdyaXRlKCkgeworICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKCgp
ID0+IHt9KTsKKyAgICB9CisgIH0pOworCisgIGNvbnN0IHdyaXRlciA9IHdzLmdldFdyaXRlcigp
OworICByZXR1cm4gd3JpdGVyLnJlYWR5LnRoZW4oKCkgPT4geworICAgIHdyaXRlci53cml0ZSgn
YScpOworICAgIHdyaXRlci5hYm9ydChlcnJvcjEpOworICAgIHdyaXRlci5yZWxlYXNlTG9jaygp
OworICAgIGNvbnN0IHdyaXRlcjIgPSB3cy5nZXRXcml0ZXIoKTsKKyAgICByZXR1cm4gcHJvbWlz
ZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCB3cml0ZXIyLnJlYWR5LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAncmVhZHkgb2YgdGhlIHNlY29uZCB3cml0ZXIgc2hvdWxk
IGJlIHJlamVjdGVkIHdpdGggZXJyb3IxJyk7CisgIH0pOworfSwgJ2lmIGEgd3JpdGVyIGlzIGNy
ZWF0ZWQgZm9yIGEgc3RyZWFtIHdpdGggYSBwZW5kaW5nIGFib3J0LCBpdHMgcmVhZHkgc2hvdWxk
IGJlIHJlamVjdGVkIHdpdGggdGhlIGFib3J0IGVycm9yJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9
PiB7CisgIGNvbnN0IHdzID0gbmV3IFdyaXRhYmxlU3RyZWFtKCk7CisgIGNvbnN0IHdyaXRlciA9
IHdzLmdldFdyaXRlcigpOworICByZXR1cm4gd3JpdGVyLnJlYWR5LnRoZW4oKCkgPT4geworICAg
IGNvbnN0IGNsb3NlUHJvbWlzZSA9IHdyaXRlci5jbG9zZSgpOworICAgIGNvbnN0IGFib3J0UHJv
bWlzZSA9IHdyaXRlci5hYm9ydCgpOworICAgIGNvbnN0IGV2ZW50cyA9IFtdOworICAgIHJldHVy
biBQcm9taXNlLmFsbChbCisgICAgICBjbG9zZVByb21pc2UudGhlbigoKSA9PiB7IGV2ZW50cy5w
dXNoKCdjbG9zZScpOyB9KSwKKyAgICAgIGFib3J0UHJvbWlzZS50aGVuKCgpID0+IHsgZXZlbnRz
LnB1c2goJ2Fib3J0Jyk7IH0pCisgICAgXSkudGhlbigoKSA9PiB7CisgICAgICBhc3NlcnRfYXJy
YXlfZXF1YWxzKGV2ZW50cywgWydjbG9zZScsICdhYm9ydCddKTsKKyAgICB9KTsKKyAgfSk7Cit9
LCAnd3JpdGVyIGNsb3NlKCkgcHJvbWlzZSBzaG91bGQgcmVzb2x2ZSBiZWZvcmUgYWJvcnQoKSBw
cm9taXNlJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgY29uc3Qgd3MgPSBuZXcgV3JpdGFi
bGVTdHJlYW0oeworICAgIHdyaXRlKGNodW5rLCBjb250cm9sbGVyKSB7CisgICAgICBjb250cm9s
bGVyLmVycm9yKGVycm9yMSk7CisgICAgICByZXR1cm4gbmV3IFByb21pc2UoKCkgPT4ge30pOwor
ICAgIH0KKyAgfSk7CisgIGNvbnN0IHdyaXRlciA9IHdzLmdldFdyaXRlcigpOworICByZXR1cm4g
d3JpdGVyLnJlYWR5LnRoZW4oKCkgPT4geworICAgIHdyaXRlci53cml0ZSgnYScpOworICAgIHJl
dHVybiBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIHdyaXRlci5yZWFkeSwgJ3dy
aXRlci5yZWFkeSBzaG91bGQgcmVqZWN0Jyk7CisgIH0pOworfSwgJ3dyaXRlci5yZWFkeSBzaG91
bGQgcmVqZWN0IG9uIGNvbnRyb2xsZXIgZXJyb3Igd2l0aG91dCB3YWl0aW5nIGZvciB1bmRlcmx5
aW5nIHdyaXRlJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgbGV0IHJlamVjdFdyaXRlOwor
ICBjb25zdCB3cyA9IG5ldyBXcml0YWJsZVN0cmVhbSh7CisgICAgd3JpdGUoKSB7CisgICAgICBy
ZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4geworICAgICAgICByZWplY3RX
cml0ZSA9IHJlamVjdDsKKyAgICAgIH0pOworICAgIH0KKyAgfSk7CisKKyAgbGV0IHdyaXRlUHJv
bWlzZTsKKyAgbGV0IGFib3J0UHJvbWlzZTsKKworICBjb25zdCBldmVudHMgPSBbXTsKKworICBj
b25zdCB3cml0ZXIgPSB3cy5nZXRXcml0ZXIoKTsKKworICB3cml0ZXIuY2xvc2VkLmNhdGNoKCgp
ID0+IHsKKyAgICBldmVudHMucHVzaCgnY2xvc2VkJyk7CisgIH0pOworCisgIC8vIFdhaXQgZm9y
IHdzIHRvIHN0YXJ0CisgIHJldHVybiBmbHVzaEFzeW5jRXZlbnRzKCkudGhlbigoKSA9PiB7Cisg
ICAgd3JpdGVQcm9taXNlID0gd3JpdGVyLndyaXRlKCdhJyk7CisgICAgd3JpdGVQcm9taXNlLmNh
dGNoKCgpID0+IHsKKyAgICAgIGV2ZW50cy5wdXNoKCd3cml0ZVByb21pc2UnKTsKKyAgICB9KTsK
KworICAgIGFib3J0UHJvbWlzZSA9IHdyaXRlci5hYm9ydChlcnJvcjEpOworICAgIGFib3J0UHJv
bWlzZS50aGVuKCgpID0+IHsKKyAgICAgIGV2ZW50cy5wdXNoKCdhYm9ydFByb21pc2UnKTsKKyAg
ICB9KTsKKworICAgIGNvbnN0IHdyaXRlUHJvbWlzZTIgPSB3cml0ZXIud3JpdGUoJ2EnKTsKKwor
ICAgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAgICBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0
LCBlcnJvcjEsIHdyaXRlUHJvbWlzZTIsICd3cml0ZVByb21pc2UyIG11c3QgcmVqZWN0IHdpdGgg
dGhlIGVycm9yIGZyb20gYWJvcnQnKSwKKyAgICAgIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQs
IGVycm9yMSwgd3JpdGVyLnJlYWR5LCAnd3JpdGVyLnJlYWR5IG11c3QgcmVqZWN0IHdpdGggdGhl
IGVycm9yIGZyb20gYWJvcnQnKSwKKyAgICAgIGZsdXNoQXN5bmNFdmVudHMoKQorICAgIF0pOwor
ICB9KS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGV2ZW50cywgW10sICd3
cml0ZVByb21pc2UsIGFib3J0UHJvbWlzZSBhbmQgd3JpdGVyLmNsb3NlZCBtdXN0IG5vdCBiZSBy
ZWplY3RlZCB5ZXQnKTsKKworICAgIHJlamVjdFdyaXRlKGVycm9yMik7CisKKyAgICByZXR1cm4g
UHJvbWlzZS5hbGwoWworICAgICAgcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IyLCB3
cml0ZVByb21pc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnd3JpdGVQcm9taXNl
IG11c3QgcmVqZWN0IHdpdGggdGhlIGVycm9yIHJldHVybmVkIGZyb20gdGhlIHNpbmtcJ3Mgd3Jp
dGUgbWV0aG9kJyksCisgICAgICBhYm9ydFByb21pc2UsCisgICAgICBwcm9taXNlX3JlamVjdHNf
ZXhhY3RseSh0LCBlcnJvcjEsIHdyaXRlci5jbG9zZWQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnd3JpdGVyLmNsb3NlZCBtdXN0IHJlamVjdCB3aXRoIHRoZSBlcnJvciBmcm9tIGFi
b3J0JyksCisgICAgICBmbHVzaEFzeW5jRXZlbnRzKCkKKyAgICBdKTsKKyAgfSkudGhlbigoKSA9
PiB7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhldmVudHMsIFsnd3JpdGVQcm9taXNlJywgJ2Fi
b3J0UHJvbWlzZScsICdjbG9zZWQnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICd3cml0ZVBy
b21pc2UsIGFib3J0UHJvbWlzZSBhbmQgd3JpdGVyLmNsb3NlZCBtdXN0IHNldHRsZScpOworCisg
ICAgY29uc3Qgd3JpdGVQcm9taXNlMyA9IHdyaXRlci53cml0ZSgnYScpOworCisgICAgcmV0dXJu
IFByb21pc2UuYWxsKFsKKyAgICAgIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMSwg
d3JpdGVQcm9taXNlMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd3cml0ZVByb21p
c2UzIG11c3QgcmVqZWN0IHdpdGggdGhlIGVycm9yIGZyb20gYWJvcnQnKSwKKyAgICAgIHByb21p
c2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMSwgd3JpdGVyLnJlYWR5LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ3dyaXRlci5yZWFkeSBtdXN0IGJlIHN0aWxsIHJlamVjdGVkIHdp
dGggdGhlIGVycm9yIGluZGljYXRpbmcgYWJvcnQnKQorICAgIF0pOworICB9KS50aGVuKCgpID0+
IHsKKyAgICB3cml0ZXIucmVsZWFzZUxvY2soKTsKKworICAgIHJldHVybiBQcm9taXNlLmFsbChb
CisgICAgICBwcm9taXNlX3JlamVjdHNfanModCwgVHlwZUVycm9yLCB3cml0ZXIucmVhZHksCisg
ICAgICAgICAgICAgICAgICAgICAgJ3dyaXRlci5yZWFkeSBtdXN0IGJlIHJlamVjdGVkIHdpdGgg
YW4gZXJyb3IgaW5kaWNhdGluZyByZWxlYXNlJyksCisgICAgICBwcm9taXNlX3JlamVjdHNfanMo
dCwgVHlwZUVycm9yLCB3cml0ZXIuY2xvc2VkLAorICAgICAgICAgICAgICAgICAgICAgICd3cml0
ZXIuY2xvc2VkIG11c3QgYmUgcmVqZWN0ZWQgd2l0aCBhbiBlcnJvciBpbmRpY2F0aW5nIHJlbGVh
c2UnKQorICAgIF0pOworICB9KTsKK30sICd3cml0ZXIuYWJvcnQoKSB3aGlsZSB0aGVyZSBpcyBh
biBpbi1mbGlnaHQgd3JpdGUsIGFuZCB0aGVuIGZpbmlzaCB0aGUgd3JpdGUgd2l0aCByZWplY3Rp
b24nKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBsZXQgcmVzb2x2ZVdyaXRlOworICBsZXQg
Y29udHJvbGxlcjsKKyAgY29uc3Qgd3MgPSBuZXcgV3JpdGFibGVTdHJlYW0oeworICAgIHdyaXRl
KGNodW5rLCBjKSB7CisgICAgICBjb250cm9sbGVyID0gYzsKKyAgICAgIHJldHVybiBuZXcgUHJv
bWlzZShyZXNvbHZlID0+IHsKKyAgICAgICAgcmVzb2x2ZVdyaXRlID0gcmVzb2x2ZTsKKyAgICAg
IH0pOworICAgIH0KKyAgfSk7CisKKyAgbGV0IHdyaXRlUHJvbWlzZTsKKyAgbGV0IGFib3J0UHJv
bWlzZTsKKworICBjb25zdCBldmVudHMgPSBbXTsKKworICBjb25zdCB3cml0ZXIgPSB3cy5nZXRX
cml0ZXIoKTsKKworICB3cml0ZXIuY2xvc2VkLmNhdGNoKCgpID0+IHsKKyAgICBldmVudHMucHVz
aCgnY2xvc2VkJyk7CisgIH0pOworCisgIC8vIFdhaXQgZm9yIHdzIHRvIHN0YXJ0CisgIHJldHVy
biBmbHVzaEFzeW5jRXZlbnRzKCkudGhlbigoKSA9PiB7CisgICAgd3JpdGVQcm9taXNlID0gd3Jp
dGVyLndyaXRlKCdhJyk7CisgICAgd3JpdGVQcm9taXNlLnRoZW4oKCkgPT4geworICAgICAgZXZl
bnRzLnB1c2goJ3dyaXRlUHJvbWlzZScpOworICAgIH0pOworCisgICAgYWJvcnRQcm9taXNlID0g
d3JpdGVyLmFib3J0KGVycm9yMSk7CisgICAgYWJvcnRQcm9taXNlLnRoZW4oKCkgPT4geworICAg
ICAgZXZlbnRzLnB1c2goJ2Fib3J0UHJvbWlzZScpOworICAgIH0pOworCisgICAgY29uc3Qgd3Jp
dGVQcm9taXNlMiA9IHdyaXRlci53cml0ZSgnYScpOworCisgICAgcmV0dXJuIFByb21pc2UuYWxs
KFsKKyAgICAgIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMSwgd3JpdGVQcm9taXNl
MiwgJ3dyaXRlUHJvbWlzZTIgbXVzdCByZWplY3Qgd2l0aCB0aGUgZXJyb3IgZnJvbSBhYm9ydCcp
LAorICAgICAgcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCB3cml0ZXIucmVhZHks
ICd3cml0ZXIucmVhZHkgbXVzdCByZWplY3Qgd2l0aCB0aGUgZXJyb3IgZnJvbSBhYm9ydCcpLAor
ICAgICAgZmx1c2hBc3luY0V2ZW50cygpCisgICAgXSk7CisgIH0pLnRoZW4oKCkgPT4geworICAg
IGFzc2VydF9hcnJheV9lcXVhbHMoZXZlbnRzLCBbXSwgJ3dyaXRlUHJvbWlzZSwgYWJvcnRQcm9t
aXNlIGFuZCB3cml0ZXIuY2xvc2VkIG11c3Qgbm90IGJlIGZ1bGZpbGxlZC9yZWplY3RlZCB5ZXQn
KTsKKworICAgIC8vIFRoaXMgZXJyb3IgaXMgdG9vIGxhdGUgdG8gY2hhbmdlIGFueXRoaW5nLiBh
Ym9ydCgpIGhhcyBhbHJlYWR5IGNoYW5nZWQgdGhlIHN0cmVhbSBzdGF0ZSB0byAnZXJyb3Jpbmcn
LgorICAgIGNvbnRyb2xsZXIuZXJyb3IoZXJyb3IyKTsKKworICAgIGNvbnN0IHdyaXRlUHJvbWlz
ZTMgPSB3cml0ZXIud3JpdGUoJ2EnKTsKKworICAgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAg
ICBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIHdyaXRlUHJvbWlzZTMsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAnd3JpdGVQcm9taXNlMyBtdXN0IHJlamVjdCB3aXRo
IHRoZSBlcnJvciBmcm9tIGFib3J0JyksCisgICAgICBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0
LCBlcnJvcjEsIHdyaXRlci5yZWFkeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd3
cml0ZXIucmVhZHkgbXVzdCBiZSBzdGlsbCByZWplY3RlZCB3aXRoIHRoZSBlcnJvciBpbmRpY2F0
aW5nIGFib3J0JyksCisgICAgICBmbHVzaEFzeW5jRXZlbnRzKCkKKyAgICBdKTsKKyAgfSkudGhl
bigoKSA9PiB7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscygKKyAgICAgICAgZXZlbnRzLCBbXSwK
KyAgICAgICAgJ3dyaXRlUHJvbWlzZSwgYWJvcnRQcm9taXNlIGFuZCB3cml0ZXIuY2xvc2VkIG11
c3Qgbm90IGJlIGZ1bGZpbGxlZC9yZWplY3RlZCB5ZXQgZXZlbiBhZnRlciAnICsKKyAgICAgICAg
ICAgICdjb250cm9sbGVyLmVycm9yKCkgY2FsbCcpOworCisgICAgcmVzb2x2ZVdyaXRlKCk7CisK
KyAgICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAgICAgd3JpdGVQcm9taXNlLAorICAgICAgYWJv
cnRQcm9taXNlLAorICAgICAgcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCB3cml0
ZXIuY2xvc2VkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3dyaXRlci5jbG9zZWQg
bXVzdCByZWplY3Qgd2l0aCB0aGUgZXJyb3IgZnJvbSBhYm9ydCcpLAorICAgICAgZmx1c2hBc3lu
Y0V2ZW50cygpCisgICAgXSk7CisgIH0pLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9hcnJheV9l
cXVhbHMoZXZlbnRzLCBbJ3dyaXRlUHJvbWlzZScsICdhYm9ydFByb21pc2UnLCAnY2xvc2VkJ10s
CisgICAgICAgICAgICAgICAgICAgICAgICAnd3JpdGVQcm9taXNlLCBhYm9ydFByb21pc2UgYW5k
IHdyaXRlci5jbG9zZWQgbXVzdCBzZXR0bGUnKTsKKworICAgIGNvbnN0IHdyaXRlUHJvbWlzZTQg
PSB3cml0ZXIud3JpdGUoJ2EnKTsKKworICAgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAgICB3
cml0ZVByb21pc2UsCisgICAgICBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIHdy
aXRlUHJvbWlzZTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnd3JpdGVQcm9taXNl
NCBtdXN0IHJlamVjdCB3aXRoIHRoZSBlcnJvciBmcm9tIGFib3J0JyksCisgICAgICBwcm9taXNl
X3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIHdyaXRlci5yZWFkeSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICd3cml0ZXIucmVhZHkgbXVzdCBiZSBzdGlsbCByZWplY3RlZCB3aXRo
IHRoZSBlcnJvciBpbmRpY2F0aW5nIGFib3J0JykKKyAgICBdKTsKKyAgfSkudGhlbigoKSA9PiB7
CisgICAgd3JpdGVyLnJlbGVhc2VMb2NrKCk7CisKKyAgICByZXR1cm4gUHJvbWlzZS5hbGwoWwor
ICAgICAgcHJvbWlzZV9yZWplY3RzX2pzKHQsIFR5cGVFcnJvciwgd3JpdGVyLnJlYWR5LAorICAg
ICAgICAgICAgICAgICAgICAgICd3cml0ZXIucmVhZHkgbXVzdCBiZSByZWplY3RlZCB3aXRoIGFu
IGVycm9yIGluZGljYXRpbmcgcmVsZWFzZScpLAorICAgICAgcHJvbWlzZV9yZWplY3RzX2pzKHQs
IFR5cGVFcnJvciwgd3JpdGVyLmNsb3NlZCwKKyAgICAgICAgICAgICAgICAgICAgICAnd3JpdGVy
LmNsb3NlZCBtdXN0IGJlIHJlamVjdGVkIHdpdGggYW4gZXJyb3IgaW5kaWNhdGluZyByZWxlYXNl
JykKKyAgICBdKTsKKyAgfSk7Cit9LCAnd3JpdGVyLmFib3J0KCksIGNvbnRyb2xsZXIuZXJyb3Io
KSB3aGlsZSB0aGVyZSBpcyBhbiBpbi1mbGlnaHQgd3JpdGUsIGFuZCB0aGVuIGZpbmlzaCB0aGUg
d3JpdGUnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBsZXQgcmVzb2x2ZUNsb3NlOworICBs
ZXQgY29udHJvbGxlcjsKKyAgY29uc3Qgd3MgPSBuZXcgV3JpdGFibGVTdHJlYW0oeworICAgIHN0
YXJ0KGMpIHsKKyAgICAgIGNvbnRyb2xsZXIgPSBjOworICAgIH0sCisgICAgY2xvc2UoKSB7Cisg
ICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7CisgICAgICAgIHJlc29sdmVDbG9z
ZSA9IHJlc29sdmU7CisgICAgICB9KTsKKyAgICB9CisgIH0pOworCisgIGxldCBjbG9zZVByb21p
c2U7CisgIGxldCBhYm9ydFByb21pc2U7CisKKyAgY29uc3QgZXZlbnRzID0gW107CisKKyAgY29u
c3Qgd3JpdGVyID0gd3MuZ2V0V3JpdGVyKCk7CisKKyAgd3JpdGVyLmNsb3NlZC50aGVuKCgpID0+
IHsKKyAgICBldmVudHMucHVzaCgnY2xvc2VkJyk7CisgIH0pOworCisgIC8vIFdhaXQgZm9yIHdz
IHRvIHN0YXJ0CisgIHJldHVybiBmbHVzaEFzeW5jRXZlbnRzKCkudGhlbigoKSA9PiB7CisgICAg
Y2xvc2VQcm9taXNlID0gd3JpdGVyLmNsb3NlKCk7CisgICAgY2xvc2VQcm9taXNlLnRoZW4oKCkg
PT4geworICAgICAgZXZlbnRzLnB1c2goJ2Nsb3NlUHJvbWlzZScpOworICAgIH0pOworCisgICAg
YWJvcnRQcm9taXNlID0gd3JpdGVyLmFib3J0KGVycm9yMSk7CisgICAgYWJvcnRQcm9taXNlLnRo
ZW4oKCkgPT4geworICAgICAgZXZlbnRzLnB1c2goJ2Fib3J0UHJvbWlzZScpOworICAgIH0pOwor
CisgICAgcmV0dXJuIFByb21pc2UuYWxsKFsKKyAgICAgIHByb21pc2VfcmVqZWN0c19qcyh0LCBU
eXBlRXJyb3IsIHdyaXRlci5jbG9zZSgpLAorICAgICAgICAnd3JpdGVyLmNsb3NlKCkgbXVzdCBy
ZWplY3Qgd2l0aCBhbiBlcnJvciBpbmRpY2F0aW5nIGFscmVhZHkgY2xvc2luZycpLAorICAgICAg
cHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCB3cml0ZXIucmVhZHksICd3cml0ZXIu
cmVhZHkgbXVzdCByZWplY3Qgd2l0aCB0aGUgZXJyb3IgZnJvbSBhYm9ydCcpLAorICAgICAgZmx1
c2hBc3luY0V2ZW50cygpCisgICAgXSk7CisgIH0pLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9h
cnJheV9lcXVhbHMoZXZlbnRzLCBbXSwgJ2Nsb3NlUHJvbWlzZSwgYWJvcnRQcm9taXNlIGFuZCB3
cml0ZXIuY2xvc2VkIG11c3Qgbm90IGJlIGZ1bGZpbGxlZC9yZWplY3RlZCB5ZXQnKTsKKworICAg
IGNvbnRyb2xsZXIuZXJyb3IoZXJyb3IyKTsKKworICAgIHJldHVybiBQcm9taXNlLmFsbChbCisg
ICAgICBwcm9taXNlX3JlamVjdHNfanModCwgVHlwZUVycm9yLCB3cml0ZXIuY2xvc2UoKSwKKyAg
ICAgICAgJ3dyaXRlci5jbG9zZSgpIG11c3QgcmVqZWN0IHdpdGggYW4gZXJyb3IgaW5kaWNhdGlu
ZyBhbHJlYWR5IGNsb3NpbmcnKSwKKyAgICAgIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVy
cm9yMSwgd3JpdGVyLnJlYWR5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3dyaXRl
ci5yZWFkeSBtdXN0IGJlIHN0aWxsIHJlamVjdGVkIHdpdGggdGhlIGVycm9yIGluZGljYXRpbmcg
YWJvcnQnKSwKKyAgICAgIGZsdXNoQXN5bmNFdmVudHMoKQorICAgIF0pOworICB9KS50aGVuKCgp
ID0+IHsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKAorICAgICAgICBldmVudHMsIFtdLAorICAg
ICAgICAnY2xvc2VQcm9taXNlLCBhYm9ydFByb21pc2UgYW5kIHdyaXRlci5jbG9zZWQgbXVzdCBu
b3QgYmUgZnVsZmlsbGVkL3JlamVjdGVkIHlldCBldmVuIGFmdGVyICcgKworICAgICAgICAgICAg
J2NvbnRyb2xsZXIuZXJyb3IoKSBjYWxsJyk7CisKKyAgICByZXNvbHZlQ2xvc2UoKTsKKworICAg
IHJldHVybiBQcm9taXNlLmFsbChbCisgICAgICBjbG9zZVByb21pc2UsCisgICAgICBhYm9ydFBy
b21pc2UsCisgICAgICB3cml0ZXIuY2xvc2VkLAorICAgICAgZmx1c2hBc3luY0V2ZW50cygpCisg
ICAgXSk7CisgIH0pLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9hcnJheV9lcXVhbHMoZXZlbnRz
LCBbJ2Nsb3NlUHJvbWlzZScsICdhYm9ydFByb21pc2UnLCAnY2xvc2VkJ10sCisgICAgICAgICAg
ICAgICAgICAgICAgICAnY2xvc2VkUHJvbWlzZSwgYWJvcnRQcm9taXNlIGFuZCB3cml0ZXIuY2xv
c2VkIG11c3QgZnVsZmlsbCcpOworCisgICAgcmV0dXJuIFByb21pc2UuYWxsKFsKKyAgICAgIHBy
b21pc2VfcmVqZWN0c19qcyh0LCBUeXBlRXJyb3IsIHdyaXRlci5jbG9zZSgpLAorICAgICAgICAn
d3JpdGVyLmNsb3NlKCkgbXVzdCByZWplY3Qgd2l0aCBhbiBlcnJvciBpbmRpY2F0aW5nIGFscmVh
ZHkgY2xvc2luZycpLAorICAgICAgcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCB3
cml0ZXIucmVhZHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnd3JpdGVyLnJlYWR5
IG11c3QgYmUgc3RpbGwgcmVqZWN0ZWQgd2l0aCB0aGUgZXJyb3IgaW5kaWNhdGluZyBhYm9ydCcp
CisgICAgXSk7CisgIH0pLnRoZW4oKCkgPT4geworICAgIHdyaXRlci5yZWxlYXNlTG9jaygpOwor
CisgICAgcmV0dXJuIFByb21pc2UuYWxsKFsKKyAgICAgIHByb21pc2VfcmVqZWN0c19qcyh0LCBU
eXBlRXJyb3IsIHdyaXRlci5jbG9zZSgpLAorICAgICAgICAnd3JpdGVyLmNsb3NlKCkgbXVzdCBy
ZWplY3Qgd2l0aCBhbiBlcnJvciBpbmRpY2F0aW5nIHJlbGVhc2UnKSwKKyAgICAgIHByb21pc2Vf
cmVqZWN0c19qcyh0LCBUeXBlRXJyb3IsIHdyaXRlci5yZWFkeSwKKyAgICAgICAgICAgICAgICAg
ICAgICAnd3JpdGVyLnJlYWR5IG11c3QgYmUgcmVqZWN0ZWQgd2l0aCBhbiBlcnJvciBpbmRpY2F0
aW5nIHJlbGVhc2UnKSwKKyAgICAgIHByb21pc2VfcmVqZWN0c19qcyh0LCBUeXBlRXJyb3IsIHdy
aXRlci5jbG9zZWQsCisgICAgICAgICAgICAgICAgICAgICAgJ3dyaXRlci5jbG9zZWQgbXVzdCBi
ZSByZWplY3RlZCB3aXRoIGFuIGVycm9yIGluZGljYXRpbmcgcmVsZWFzZScpCisgICAgXSk7Cisg
IH0pOworfSwgJ3dyaXRlci5hYm9ydCgpLCBjb250cm9sbGVyLmVycm9yKCkgd2hpbGUgdGhlcmUg
aXMgYW4gaW4tZmxpZ2h0IGNsb3NlLCBhbmQgdGhlbiBmaW5pc2ggdGhlIGNsb3NlJyk7CisKK3By
b21pc2VfdGVzdCh0ID0+IHsKKyAgbGV0IHJlc29sdmVXcml0ZTsKKyAgbGV0IGNvbnRyb2xsZXI7
CisgIGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0oeworICAgIHdyaXRlKGNodW5r
LCBjKSB7CisgICAgICBjb250cm9sbGVyID0gYzsKKyAgICAgIHJldHVybiBuZXcgUHJvbWlzZShy
ZXNvbHZlID0+IHsKKyAgICAgICAgcmVzb2x2ZVdyaXRlID0gcmVzb2x2ZTsKKyAgICAgIH0pOwor
ICAgIH0KKyAgfSk7CisKKyAgbGV0IHdyaXRlUHJvbWlzZTsKKyAgbGV0IGFib3J0UHJvbWlzZTsK
KworICBjb25zdCBldmVudHMgPSBbXTsKKworICBjb25zdCB3cml0ZXIgPSB3cy5nZXRXcml0ZXIo
KTsKKworICB3cml0ZXIuY2xvc2VkLmNhdGNoKCgpID0+IHsKKyAgICBldmVudHMucHVzaCgnY2xv
c2VkJyk7CisgIH0pOworCisgIC8vIFdhaXQgZm9yIHdzIHRvIHN0YXJ0CisgIHJldHVybiBmbHVz
aEFzeW5jRXZlbnRzKCkudGhlbigoKSA9PiB7CisgICAgd3JpdGVQcm9taXNlID0gd3JpdGVyLndy
aXRlKCdhJyk7CisgICAgd3JpdGVQcm9taXNlLnRoZW4oKCkgPT4geworICAgICAgZXZlbnRzLnB1
c2goJ3dyaXRlUHJvbWlzZScpOworICAgIH0pOworCisgICAgY29udHJvbGxlci5lcnJvcihlcnJv
cjIpOworCisgICAgY29uc3Qgd3JpdGVQcm9taXNlMiA9IHdyaXRlci53cml0ZSgnYScpOworCisg
ICAgcmV0dXJuIFByb21pc2UuYWxsKFsKKyAgICAgIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQs
IGVycm9yMiwgd3JpdGVQcm9taXNlMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd3
cml0ZVByb21pc2UyIG11c3QgcmVqZWN0IHdpdGggdGhlIGVycm9yIHBhc3NlZCB0byB0aGUgY29u
dHJvbGxlclwncyBlcnJvciBtZXRob2QnKSwKKyAgICAgIHByb21pc2VfcmVqZWN0c19leGFjdGx5
KHQsIGVycm9yMiwgd3JpdGVyLnJlYWR5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
J3dyaXRlci5yZWFkeSBtdXN0IHJlamVjdCB3aXRoIHRoZSBlcnJvciBwYXNzZWQgdG8gdGhlIGNv
bnRyb2xsZXJcJ3MgZXJyb3IgbWV0aG9kJyksCisgICAgICBmbHVzaEFzeW5jRXZlbnRzKCkKKyAg
ICBdKTsKKyAgfSkudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhldmVudHMs
IFtdLCAnd3JpdGVQcm9taXNlIGFuZCB3cml0ZXIuY2xvc2VkIG11c3Qgbm90IGJlIGZ1bGZpbGxl
ZC9yZWplY3RlZCB5ZXQnKTsKKworICAgIGFib3J0UHJvbWlzZSA9IHdyaXRlci5hYm9ydChlcnJv
cjEpOworICAgIGFib3J0UHJvbWlzZS5jYXRjaCgoKSA9PiB7CisgICAgICBldmVudHMucHVzaCgn
YWJvcnRQcm9taXNlJyk7CisgICAgfSk7CisKKyAgICBjb25zdCB3cml0ZVByb21pc2UzID0gd3Jp
dGVyLndyaXRlKCdhJyk7CisKKyAgICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAgICAgcHJvbWlz
ZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IyLCB3cml0ZVByb21pc2UzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ3dyaXRlUHJvbWlzZTMgbXVzdCByZWplY3Qgd2l0aCB0aGUgZXJy
b3IgcGFzc2VkIHRvIHRoZSBjb250cm9sbGVyXCdzIGVycm9yIG1ldGhvZCcpLAorICAgICAgZmx1
c2hBc3luY0V2ZW50cygpCisgICAgXSk7CisgIH0pLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9h
cnJheV9lcXVhbHMoCisgICAgICAgIGV2ZW50cywgW10sCisgICAgICAgICd3cml0ZVByb21pc2Ug
YW5kIHdyaXRlci5jbG9zZWQgbXVzdCBub3QgYmUgZnVsZmlsbGVkL3JlamVjdGVkIHlldCBldmVu
IGFmdGVyIHdyaXRlci5hYm9ydCgpJyk7CisKKyAgICByZXNvbHZlV3JpdGUoKTsKKworICAgIHJl
dHVybiBQcm9taXNlLmFsbChbCisgICAgICBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJv
cjIsIGFib3J0UHJvbWlzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhYm9ydCgp
IG11c3QgcmVqZWN0IHdpdGggdGhlIGVycm9yIHBhc3NlZCB0byB0aGUgY29udHJvbGxlclwncyBl
cnJvciBtZXRob2QnKSwKKyAgICAgIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMiwg
d3JpdGVyLmNsb3NlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd3cml0ZXIuY2xv
c2VkIG11c3QgcmVqZWN0IHdpdGggdGhlIGVycm9yIHBhc3NlZCB0byB0aGUgY29udHJvbGxlclwn
cyBlcnJvciBtZXRob2QnKSwKKyAgICAgIGZsdXNoQXN5bmNFdmVudHMoKQorICAgIF0pOworICB9
KS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGV2ZW50cywgWyd3cml0ZVBy
b21pc2UnLCAnYWJvcnRQcm9taXNlJywgJ2Nsb3NlZCddLAorICAgICAgICAgICAgICAgICAgICAg
ICAgJ3dyaXRlUHJvbWlzZSwgYWJvcnRQcm9taXNlIGFuZCB3cml0ZXIuY2xvc2VkIG11c3QgZnVs
ZmlsbC9yZWplY3QnKTsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWyd3cml0
ZScsICdhJ10sICdzaW5rIGFib3J0KCkgc2hvdWxkIG5vdCBiZSBjYWxsZWQnKTsKKworICAgIGNv
bnN0IHdyaXRlUHJvbWlzZTQgPSB3cml0ZXIud3JpdGUoJ2EnKTsKKworICAgIHJldHVybiBQcm9t
aXNlLmFsbChbCisgICAgICB3cml0ZVByb21pc2UsCisgICAgICBwcm9taXNlX3JlamVjdHNfZXhh
Y3RseSh0LCBlcnJvcjIsIHdyaXRlUHJvbWlzZTQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAnd3JpdGVQcm9taXNlNCBtdXN0IHJlamVjdCB3aXRoIHRoZSBlcnJvciBwYXNzZWQgdG8g
dGhlIGNvbnRyb2xsZXJcJ3MgZXJyb3IgbWV0aG9kJyksCisgICAgICBwcm9taXNlX3JlamVjdHNf
ZXhhY3RseSh0LCBlcnJvcjIsIHdyaXRlci5yZWFkeSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICd3cml0ZXIucmVhZHkgbXVzdCBiZSBzdGlsbCByZWplY3RlZCB3aXRoIHRoZSBlcnJv
ciBwYXNzZWQgdG8gdGhlIGNvbnRyb2xsZXJcJ3MgZXJyb3IgbWV0aG9kJykKKyAgICBdKTsKKyAg
fSkudGhlbigoKSA9PiB7CisgICAgd3JpdGVyLnJlbGVhc2VMb2NrKCk7CisKKyAgICByZXR1cm4g
UHJvbWlzZS5hbGwoWworICAgICAgcHJvbWlzZV9yZWplY3RzX2pzKHQsIFR5cGVFcnJvciwgd3Jp
dGVyLnJlYWR5LAorICAgICAgICAgICAgICAgICAgICAgICd3cml0ZXIucmVhZHkgbXVzdCBiZSBy
ZWplY3RlZCB3aXRoIGFuIGVycm9yIGluZGljYXRpbmcgcmVsZWFzZScpLAorICAgICAgcHJvbWlz
ZV9yZWplY3RzX2pzKHQsIFR5cGVFcnJvciwgd3JpdGVyLmNsb3NlZCwKKyAgICAgICAgICAgICAg
ICAgICAgICAnd3JpdGVyLmNsb3NlZCBtdXN0IGJlIHJlamVjdGVkIHdpdGggYW4gZXJyb3IgaW5k
aWNhdGluZyByZWxlYXNlJykKKyAgICBdKTsKKyAgfSk7Cit9LCAnY29udHJvbGxlci5lcnJvcigp
LCB3cml0ZXIuYWJvcnQoKSB3aGlsZSB0aGVyZSBpcyBhbiBpbi1mbGlnaHQgd3JpdGUsIGFuZCB0
aGVuIGZpbmlzaCB0aGUgd3JpdGUnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBsZXQgcmVz
b2x2ZUNsb3NlOworICBsZXQgY29udHJvbGxlcjsKKyAgY29uc3Qgd3MgPSBuZXcgV3JpdGFibGVT
dHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGNvbnRyb2xsZXIgPSBjOworICAgIH0sCisg
ICAgY2xvc2UoKSB7CisgICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7CisgICAg
ICAgIHJlc29sdmVDbG9zZSA9IHJlc29sdmU7CisgICAgICB9KTsKKyAgICB9CisgIH0pOworCisg
IGxldCBjbG9zZVByb21pc2U7CisgIGxldCBhYm9ydFByb21pc2U7CisKKyAgY29uc3QgZXZlbnRz
ID0gW107CisKKyAgY29uc3Qgd3JpdGVyID0gd3MuZ2V0V3JpdGVyKCk7CisKKyAgd3JpdGVyLmNs
b3NlZC50aGVuKCgpID0+IHsKKyAgICBldmVudHMucHVzaCgnY2xvc2VkJyk7CisgIH0pOworCisg
IC8vIFdhaXQgZm9yIHdzIHRvIHN0YXJ0CisgIHJldHVybiBmbHVzaEFzeW5jRXZlbnRzKCkudGhl
bigoKSA9PiB7CisgICAgY2xvc2VQcm9taXNlID0gd3JpdGVyLmNsb3NlKCk7CisgICAgY2xvc2VQ
cm9taXNlLnRoZW4oKCkgPT4geworICAgICAgZXZlbnRzLnB1c2goJ2Nsb3NlUHJvbWlzZScpOwor
ICAgIH0pOworCisgICAgY29udHJvbGxlci5lcnJvcihlcnJvcjIpOworCisgICAgcmV0dXJuIGZs
dXNoQXN5bmNFdmVudHMoKTsKKyAgfSkudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X2FycmF5X2Vx
dWFscyhldmVudHMsIFtdLCAnY2xvc2VQcm9taXNlIG11c3Qgbm90IGJlIGZ1bGZpbGxlZC9yZWpl
Y3RlZCB5ZXQnKTsKKworICAgIGFib3J0UHJvbWlzZSA9IHdyaXRlci5hYm9ydChlcnJvcjEpOwor
ICAgIGFib3J0UHJvbWlzZS50aGVuKCgpID0+IHsKKyAgICAgIGV2ZW50cy5wdXNoKCdhYm9ydFBy
b21pc2UnKTsKKyAgICB9KTsKKworICAgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAgICBwcm9t
aXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjIsIHdyaXRlci5yZWFkeSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICd3cml0ZXIucmVhZHkgbXVzdCByZWplY3Qgd2l0aCB0aGUgZXJy
b3IgcGFzc2VkIHRvIHRoZSBjb250cm9sbGVyXCdzIGVycm9yIG1ldGhvZCcpLAorICAgICAgZmx1
c2hBc3luY0V2ZW50cygpCisgICAgXSk7CisgIH0pLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9h
cnJheV9lcXVhbHMoCisgICAgICAgIGV2ZW50cywgW10sCisgICAgICAgICdjbG9zZVByb21pc2Ug
YW5kIHdyaXRlci5jbG9zZWQgbXVzdCBub3QgYmUgZnVsZmlsbGVkL3JlamVjdGVkIHlldCBldmVu
IGFmdGVyIHdyaXRlci5hYm9ydCgpJyk7CisKKyAgICByZXNvbHZlQ2xvc2UoKTsKKworICAgIHJl
dHVybiBQcm9taXNlLmFsbChbCisgICAgICBjbG9zZVByb21pc2UsCisgICAgICBwcm9taXNlX3Jl
amVjdHNfZXhhY3RseSh0LCBlcnJvcjIsIHdyaXRlci5yZWFkeSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICd3cml0ZXIucmVhZHkgbXVzdCBiZSBzdGlsbCByZWplY3RlZCB3aXRoIHRo
ZSBlcnJvciBwYXNzZWQgdG8gdGhlIGNvbnRyb2xsZXJcJ3MgZXJyb3IgbWV0aG9kJyksCisgICAg
ICB3cml0ZXIuY2xvc2VkLAorICAgICAgZmx1c2hBc3luY0V2ZW50cygpCisgICAgXSk7CisgIH0p
LnRoZW4oKCkgPT4geworICAgIGFzc2VydF9hcnJheV9lcXVhbHMoZXZlbnRzLCBbJ2Nsb3NlUHJv
bWlzZScsICdhYm9ydFByb21pc2UnLCAnY2xvc2VkJ10sCisgICAgICAgICAgICAgICAgICAgICAg
ICAnYWJvcnRQcm9taXNlLCBjbG9zZVByb21pc2UgYW5kIHdyaXRlci5jbG9zZWQgbXVzdCBmdWxm
aWxsL3JlamVjdCcpOworICB9KS50aGVuKCgpID0+IHsKKyAgICB3cml0ZXIucmVsZWFzZUxvY2so
KTsKKworICAgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAgICBwcm9taXNlX3JlamVjdHNfanMo
dCwgVHlwZUVycm9yLCB3cml0ZXIucmVhZHksCisgICAgICAgICAgICAgICAgICAgICAgJ3dyaXRl
ci5yZWFkeSBtdXN0IGJlIHJlamVjdGVkIHdpdGggYW4gZXJyb3IgaW5kaWNhdGluZyByZWxlYXNl
JyksCisgICAgICBwcm9taXNlX3JlamVjdHNfanModCwgVHlwZUVycm9yLCB3cml0ZXIuY2xvc2Vk
LAorICAgICAgICAgICAgICAgICAgICAgICd3cml0ZXIuY2xvc2VkIG11c3QgYmUgcmVqZWN0ZWQg
d2l0aCBhbiBlcnJvciBpbmRpY2F0aW5nIHJlbGVhc2UnKQorICAgIF0pOworICB9KTsKK30sICdj
b250cm9sbGVyLmVycm9yKCksIHdyaXRlci5hYm9ydCgpIHdoaWxlIHRoZXJlIGlzIGFuIGluLWZs
aWdodCBjbG9zZSwgYW5kIHRoZW4gZmluaXNoIHRoZSBjbG9zZScpOworCitwcm9taXNlX3Rlc3Qo
dCA9PiB7CisgIGxldCByZXNvbHZlV3JpdGU7CisgIGNvbnN0IHdzID0gbmV3IFdyaXRhYmxlU3Ry
ZWFtKHsKKyAgICB3cml0ZSgpIHsKKyAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+
IHsKKyAgICAgICAgcmVzb2x2ZVdyaXRlID0gcmVzb2x2ZTsKKyAgICAgIH0pOworICAgIH0KKyAg
fSk7CisgIGNvbnN0IHdyaXRlciA9IHdzLmdldFdyaXRlcigpOworICByZXR1cm4gd3JpdGVyLnJl
YWR5LnRoZW4oKCkgPT4geworICAgIGNvbnN0IHdyaXRlUHJvbWlzZSA9IHdyaXRlci53cml0ZSgn
YScpOworICAgIGNvbnN0IGNsb3NlZCA9IHdyaXRlci5jbG9zZWQ7CisgICAgY29uc3QgYWJvcnRQ
cm9taXNlID0gd3JpdGVyLmFib3J0KCk7CisgICAgd3JpdGVyLnJlbGVhc2VMb2NrKCk7CisgICAg
cmVzb2x2ZVdyaXRlKCk7CisgICAgcmV0dXJuIFByb21pc2UuYWxsKFsKKyAgICAgIHdyaXRlUHJv
bWlzZSwKKyAgICAgIGFib3J0UHJvbWlzZSwKKyAgICAgIHByb21pc2VfcmVqZWN0c19qcyh0LCBU
eXBlRXJyb3IsIGNsb3NlZCwgJ2Nsb3NlZCBzaG91bGQgcmVqZWN0JyldKTsKKyAgfSk7Cit9LCAn
cmVsZWFzZUxvY2soKSB3aGlsZSBhYm9ydGluZyBzaG91bGQgcmVqZWN0IHRoZSBvcmlnaW5hbCBj
bG9zZWQgcHJvbWlzZScpOworCisvLyBUT0RPKHJpY2VhKTogQ29uc2lkZXIgcmVtb3ZpbmcgdGhp
cyB0ZXN0IGlmIGl0IGlzIG5vIGxvbmdlciB1c2VmdWwuCitwcm9taXNlX3Rlc3QodCA9PiB7Cisg
IGxldCByZXNvbHZlV3JpdGU7CisgIGxldCByZXNvbHZlQWJvcnQ7CisgIGxldCByZXNvbHZlQWJv
cnRTdGFydGVkOworICBjb25zdCBhYm9ydFN0YXJ0ZWQgPSBuZXcgUHJvbWlzZShyZXNvbHZlID0+
IHsKKyAgICByZXNvbHZlQWJvcnRTdGFydGVkID0gcmVzb2x2ZTsKKyAgfSk7CisgIGNvbnN0IHdz
ID0gbmV3IFdyaXRhYmxlU3RyZWFtKHsKKyAgICB3cml0ZSgpIHsKKyAgICAgIHJldHVybiBuZXcg
UHJvbWlzZShyZXNvbHZlID0+IHsKKyAgICAgICAgcmVzb2x2ZVdyaXRlID0gcmVzb2x2ZTsKKyAg
ICAgIH0pOworICAgIH0sCisgICAgYWJvcnQoKSB7CisgICAgICByZXNvbHZlQWJvcnRTdGFydGVk
KCk7CisgICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7CisgICAgICAgIHJlc29s
dmVBYm9ydCA9IHJlc29sdmU7CisgICAgICB9KTsKKyAgICB9CisgIH0pOworICBjb25zdCB3cml0
ZXIgPSB3cy5nZXRXcml0ZXIoKTsKKyAgcmV0dXJuIHdyaXRlci5yZWFkeS50aGVuKCgpID0+IHsK
KyAgICBjb25zdCB3cml0ZVByb21pc2UgPSB3cml0ZXIud3JpdGUoJ2EnKTsKKyAgICBjb25zdCBj
bG9zZWQgPSB3cml0ZXIuY2xvc2VkOworICAgIGNvbnN0IGFib3J0UHJvbWlzZSA9IHdyaXRlci5h
Ym9ydCgpOworICAgIHJlc29sdmVXcml0ZSgpOworICAgIHJldHVybiBhYm9ydFN0YXJ0ZWQudGhl
bigoKSA9PiB7CisgICAgICB3cml0ZXIucmVsZWFzZUxvY2soKTsKKyAgICAgIGFzc2VydF9lcXVh
bHMod3JpdGVyLmNsb3NlZCwgY2xvc2VkLCAnY2xvc2VkIHByb21pc2Ugc2hvdWxkIG5vdCBoYXZl
IGNoYW5nZWQnKTsKKyAgICAgIHJlc29sdmVBYm9ydCgpOworICAgICAgcmV0dXJuIFByb21pc2Uu
YWxsKFsKKyAgICAgICAgd3JpdGVQcm9taXNlLAorICAgICAgICBhYm9ydFByb21pc2UsCisgICAg
ICAgIHByb21pc2VfcmVqZWN0c19qcyh0LCBUeXBlRXJyb3IsIGNsb3NlZCwgJ2Nsb3NlZCBzaG91
bGQgcmVqZWN0JyldKTsKKyAgICB9KTsKKyAgfSk7Cit9LCAncmVsZWFzZUxvY2soKSBkdXJpbmcg
ZGVsYXllZCBhc3luYyBhYm9ydCgpIHNob3VsZCByZWplY3QgdGhlIHdyaXRlci5jbG9zZWQgcHJv
bWlzZScpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworICBsZXQgcmVzb2x2ZVN0YXJ0OworICBj
b25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKHsKKyAgICBzdGFydCgpIHsKKyAgICAg
IHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKKyAgICAgICAgcmVzb2x2ZVN0YXJ0ID0g
cmVzb2x2ZTsKKyAgICAgIH0pOworICAgIH0KKyAgfSk7CisgIGNvbnN0IGFib3J0UHJvbWlzZSA9
IHdzLmFib3J0KCdkb25lJyk7CisgIHJldHVybiBmbHVzaEFzeW5jRXZlbnRzKCkudGhlbigoKSA9
PiB7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFtdLCAnYWJvcnQoKSBzaG91
bGQgbm90IGJlIGNhbGxlZCBkdXJpbmcgc3RhcnQoKScpOworICAgIHJlc29sdmVTdGFydCgpOwor
ICAgIHJldHVybiBhYm9ydFByb21pc2UudGhlbigoKSA9PiB7CisgICAgICBhc3NlcnRfYXJyYXlf
ZXF1YWxzKHdzLmV2ZW50cywgWydhYm9ydCcsICdkb25lJ10sICdhYm9ydCgpIHNob3VsZCBiZSBj
YWxsZWQgYWZ0ZXIgc3RhcnQoKSBpcyBkb25lJyk7CisgICAgfSk7CisgIH0pOworfSwgJ3Npbmsg
YWJvcnQoKSBzaG91bGQgbm90IGJlIGNhbGxlZCB1bnRpbCBzaW5rIHN0YXJ0KCkgaXMgZG9uZScp
OworCitwcm9taXNlX3Rlc3QoKCkgPT4geworICBsZXQgcmVzb2x2ZVN0YXJ0OworICBsZXQgY29u
dHJvbGxlcjsKKyAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSh7CisgICAgc3Rh
cnQoYykgeworICAgICAgY29udHJvbGxlciA9IGM7CisgICAgICByZXR1cm4gbmV3IFByb21pc2Uo
cmVzb2x2ZSA9PiB7CisgICAgICAgIHJlc29sdmVTdGFydCA9IHJlc29sdmU7CisgICAgICB9KTsK
KyAgICB9CisgIH0pOworICBjb25zdCBhYm9ydFByb21pc2UgPSB3cy5hYm9ydCgnZG9uZScpOwor
ICBjb250cm9sbGVyLmVycm9yKGVycm9yMSk7CisgIHJlc29sdmVTdGFydCgpOworICByZXR1cm4g
YWJvcnRQcm9taXNlLnRoZW4oKCkgPT4KKyAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZl
bnRzLCBbJ2Fib3J0JywgJ2RvbmUnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Fib3J0
KCkgc2hvdWxkIHN0aWxsIGJlIGNhbGxlZCBpZiBzdGFydCgpIGVycm9ycyB0aGUgY29udHJvbGxl
cicpKTsKK30sICdpZiBzdGFydCBhdHRlbXB0cyB0byBlcnJvciB0aGUgY29udHJvbGxlciBhZnRl
ciBhYm9ydCgpIGhhcyBiZWVuIGNhbGxlZCwgdGhlbiBpdCBzaG91bGQgbG9zZScpOworCitwcm9t
aXNlX3Rlc3QoKCkgPT4geworICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKHsK
KyAgICBzdGFydCgpIHsKKyAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcjEpOworICAg
IH0KKyAgfSk7CisgIHJldHVybiB3cy5hYm9ydCgnZG9uZScpLnRoZW4oKCkgPT4KKyAgICAgIGFz
c2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ2Fib3J0JywgJ2RvbmUnXSwgJ2Fib3J0KCkg
c2hvdWxkIHN0aWxsIGJlIGNhbGxlZCBpZiBzdGFydCgpIHJlamVjdHMnKSk7Cit9LCAnc3RyZWFt
IGFib3J0KCkgcHJvbWlzZSBzaG91bGQgc3RpbGwgcmVzb2x2ZSBpZiBzaW5rIHN0YXJ0KCkgcmVq
ZWN0cycpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIGNvbnN0IHdzID0gbmV3IFdyaXRhYmxl
U3RyZWFtKCk7CisgIGNvbnN0IHdyaXRlciA9IHdzLmdldFdyaXRlcigpOworICBjb25zdCB3cml0
ZXJSZWFkeTEgPSB3cml0ZXIucmVhZHk7CisgIHdyaXRlci5hYm9ydChlcnJvcjEpOworICBjb25z
dCB3cml0ZXJSZWFkeTIgPSB3cml0ZXIucmVhZHk7CisgIGFzc2VydF9ub3RfZXF1YWxzKHdyaXRl
clJlYWR5MSwgd3JpdGVyUmVhZHkyLCAnYWJvcnQoKSBzaG91bGQgcmVwbGFjZSB0aGUgcmVhZHkg
cHJvbWlzZSB3aXRoIGEgcmVqZWN0ZWQgb25lJyk7CisgIHJldHVybiBQcm9taXNlLmFsbChbd3Jp
dGVyUmVhZHkxLAorICAgICAgICAgICAgICAgICAgICAgIHByb21pc2VfcmVqZWN0c19leGFjdGx5
KHQsIGVycm9yMSwgd3JpdGVyUmVhZHkyLCAnd3JpdGVyUmVhZHkyIHNob3VsZCByZWplY3QnKV0p
OworfSwgJ3dyaXRlciBhYm9ydCgpIGR1cmluZyBzaW5rIHN0YXJ0KCkgc2hvdWxkIHJlcGxhY2Ug
dGhlIHdyaXRlci5yZWFkeSBwcm9taXNlIHN5bmNocm9ub3VzbHknKTsKKworcHJvbWlzZV90ZXN0
KHQgPT4geworICBjb25zdCBldmVudHMgPSBbXTsKKyAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0
YWJsZVN0cmVhbSgpOworICBjb25zdCB3cml0ZXIgPSB3cy5nZXRXcml0ZXIoKTsKKyAgY29uc3Qg
d3JpdGVQcm9taXNlMSA9IHdyaXRlci53cml0ZSgxKTsKKyAgY29uc3QgYWJvcnRQcm9taXNlID0g
d3JpdGVyLmFib3J0KGVycm9yMSk7CisgIGNvbnN0IHdyaXRlUHJvbWlzZTIgPSB3cml0ZXIud3Jp
dGUoMik7CisgIGNvbnN0IGNsb3NlUHJvbWlzZSA9IHdyaXRlci5jbG9zZSgpOworICB3cml0ZVBy
b21pc2UxLmNhdGNoKCgpID0+IGV2ZW50cy5wdXNoKCd3cml0ZTEnKSk7CisgIGFib3J0UHJvbWlz
ZS50aGVuKCgpID0+IGV2ZW50cy5wdXNoKCdhYm9ydCcpKTsKKyAgd3JpdGVQcm9taXNlMi5jYXRj
aCgoKSA9PiBldmVudHMucHVzaCgnd3JpdGUyJykpOworICBjbG9zZVByb21pc2UuY2F0Y2goKCkg
PT4gZXZlbnRzLnB1c2goJ2Nsb3NlJykpOworICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAgIHBy
b21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMSwgd3JpdGVQcm9taXNlMSwgJ2ZpcnN0IHdy
aXRlKCkgc2hvdWxkIHJlamVjdCcpLAorICAgIGFib3J0UHJvbWlzZSwKKyAgICBwcm9taXNlX3Jl
amVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIHdyaXRlUHJvbWlzZTIsICdzZWNvbmQgd3JpdGUoKSBz
aG91bGQgcmVqZWN0JyksCisgICAgcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCBj
bG9zZVByb21pc2UsICdjbG9zZSgpIHNob3VsZCByZWplY3QnKQorICBdKQorICAudGhlbigoKSA9
PiB7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhldmVudHMsIFsnd3JpdGUyJywgJ3dyaXRlMScs
ICdhYm9ydCcsICdjbG9zZSddLAorICAgICAgICAgICAgICAgICAgICAgICAgJ3Byb21pc2VzIHNo
b3VsZCByZXNvbHZlIGluIHRoZSBzdGFuZGFyZCBvcmRlcicpOworICAgIGFzc2VydF9hcnJheV9l
cXVhbHMod3MuZXZlbnRzLCBbJ2Fib3J0JywgZXJyb3IxXSwgJ3VuZGVybHlpbmcgc2luayB3cml0
ZSgpIHNob3VsZCBub3QgYmUgY2FsbGVkJyk7CisgIH0pOworfSwgJ3Byb21pc2VzIHJldHVybmVk
IGZyb20gb3RoZXIgd3JpdGVyIG1ldGhvZHMgc2hvdWxkIGJlIHJlamVjdGVkIHdoZW4gd3JpdGVy
IGFib3J0KCkgaGFwcGVucyBkdXJpbmcgc2luayBzdGFydCgpJyk7CisKK3Byb21pc2VfdGVzdCh0
ID0+IHsKKyAgbGV0IHdyaXRlUmVqZWN0OworICBsZXQgY29udHJvbGxlcjsKKyAgY29uc3Qgd3Mg
PSBuZXcgV3JpdGFibGVTdHJlYW0oeworICAgIHdyaXRlKGNodW5rLCBjKSB7CisgICAgICBjb250
cm9sbGVyID0gYzsKKyAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9
PiB7CisgICAgICAgIHdyaXRlUmVqZWN0ID0gcmVqZWN0OworICAgICAgfSk7CisgICAgfQorICB9
KTsKKyAgY29uc3Qgd3JpdGVyID0gd3MuZ2V0V3JpdGVyKCk7CisgIHJldHVybiB3cml0ZXIucmVh
ZHkudGhlbigoKSA9PiB7CisgICAgY29uc3Qgd3JpdGVQcm9taXNlID0gd3JpdGVyLndyaXRlKCdh
Jyk7CisgICAgY29uc3QgYWJvcnRQcm9taXNlID0gd3JpdGVyLmFib3J0KCk7CisgICAgY29udHJv
bGxlci5lcnJvcihlcnJvcjEpOworICAgIHdyaXRlUmVqZWN0KGVycm9yMik7CisgICAgcmV0dXJu
IFByb21pc2UuYWxsKFsKKyAgICAgIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMiwg
d3JpdGVQcm9taXNlLCAnd3JpdGUoKSBzaG91bGQgcmVqZWN0IHdpdGggZXJyb3IyJyksCisgICAg
ICBhYm9ydFByb21pc2UKKyAgICBdKTsKKyAgfSk7Cit9LCAnYWJvcnQoKSBzaG91bGQgc3VjY2Vl
ZCBkZXNwaXRlIHJlamVjdGlvbiBmcm9tIHdyaXRlJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsK
KyAgbGV0IGNsb3NlUmVqZWN0OworICBsZXQgY29udHJvbGxlcjsKKyAgY29uc3Qgd3MgPSBuZXcg
V3JpdGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGNvbnRyb2xsZXIgPSBjOwor
ICAgIH0sCisgICAgY2xvc2UoKSB7CisgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUs
IHJlamVjdCkgPT4geworICAgICAgICBjbG9zZVJlamVjdCA9IHJlamVjdDsKKyAgICAgIH0pOwor
ICAgIH0KKyAgfSk7CisgIGNvbnN0IHdyaXRlciA9IHdzLmdldFdyaXRlcigpOworICByZXR1cm4g
d3JpdGVyLnJlYWR5LnRoZW4oKCkgPT4geworICAgIGNvbnN0IGNsb3NlUHJvbWlzZSA9IHdyaXRl
ci5jbG9zZSgpOworICAgIGNvbnN0IGFib3J0UHJvbWlzZSA9IHdyaXRlci5hYm9ydCgpOworICAg
IGNvbnRyb2xsZXIuZXJyb3IoZXJyb3IxKTsKKyAgICBjbG9zZVJlamVjdChlcnJvcjIpOworICAg
IHJldHVybiBQcm9taXNlLmFsbChbCisgICAgICBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBl
cnJvcjIsIGNsb3NlUHJvbWlzZSwgJ2Nsb3NlKCkgc2hvdWxkIHJlamVjdCB3aXRoIGVycm9yMicp
LAorICAgICAgcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IyLCBhYm9ydFByb21pc2Us
ICdhYm9ydCgpIHNob3VsZCByZWplY3Qgd2l0aCBlcnJvcjInKQorICAgIF0pOworICB9KTsKK30s
ICdhYm9ydCgpIHNob3VsZCBiZSByZWplY3RlZCB3aXRoIHRoZSByZWplY3Rpb24gcmV0dXJuZWQg
ZnJvbSBjbG9zZSgpJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgbGV0IHJlamVjdFdyaXRl
OworICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKHsKKyAgICB3cml0ZSgpIHsK
KyAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CisgICAgICAg
IHJlamVjdFdyaXRlID0gcmVqZWN0OworICAgICAgfSk7CisgICAgfQorICB9KTsKKyAgY29uc3Qg
d3JpdGVyID0gd3MuZ2V0V3JpdGVyKCk7CisgIHJldHVybiB3cml0ZXIucmVhZHkudGhlbigoKSA9
PiB7CisgICAgY29uc3Qgd3JpdGVQcm9taXNlID0gd3JpdGVyLndyaXRlKCcxJyk7CisgICAgY29u
c3QgYWJvcnRQcm9taXNlID0gd3JpdGVyLmFib3J0KGVycm9yMik7CisgICAgcmVqZWN0V3JpdGUo
ZXJyb3IxKTsKKyAgICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAgICAgcHJvbWlzZV9yZWplY3Rz
X2V4YWN0bHkodCwgZXJyb3IxLCB3cml0ZVByb21pc2UsICd3cml0ZSBzaG91bGQgcmVqZWN0Jyks
CisgICAgICBhYm9ydFByb21pc2UsCisgICAgICBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBl
cnJvcjIsIHdyaXRlci5jbG9zZWQsICdjbG9zZWQgc2hvdWxkIHJlamVjdCB3aXRoIGVycm9yMicp
CisgICAgXSk7CisgIH0pLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3Mu
ZXZlbnRzLCBbJ3dyaXRlJywgJzEnLCAnYWJvcnQnLCBlcnJvcjJdLCAnYWJvcnQgc2luayBtZXRo
b2Qgc2hvdWxkIGJlIGNhbGxlZCcpOworICB9KTsKK30sICdhIHJlamVjdGluZyBzaW5rLndyaXRl
KCkgc2hvdWxkIG5vdCBwcmV2ZW50IHNpbmsuYWJvcnQoKSBmcm9tIGJlaW5nIGNhbGxlZCcpOwor
Citwcm9taXNlX3Rlc3QoKCkgPT4geworICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3Ry
ZWFtKHsKKyAgICBzdGFydCgpIHsKKyAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcjEp
OworICAgIH0KKyAgfSk7CisgIHJldHVybiB3cy5hYm9ydChlcnJvcjIpCisgICAgICAudGhlbigo
KSA9PiB7CisgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ2Fib3J0Jywg
ZXJyb3IyXSk7CisgICAgICB9KTsKK30sICd3aGVuIHN0YXJ0IGVycm9ycyBhZnRlciBzdHJlYW0g
YWJvcnQoKSwgdW5kZXJseWluZyBzaW5rIGFib3J0KCkgc2hvdWxkIGJlIGNhbGxlZCBhbnl3YXkn
KTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgY29uc3Qgd3MgPSBuZXcgV3JpdGFibGVTdHJl
YW0oKTsKKyAgY29uc3QgYWJvcnRQcm9taXNlMSA9IHdzLmFib3J0KCk7CisgIGNvbnN0IGFib3J0
UHJvbWlzZTIgPSB3cy5hYm9ydCgpOworICBhc3NlcnRfZXF1YWxzKGFib3J0UHJvbWlzZTEsIGFi
b3J0UHJvbWlzZTIsICd0aGUgcHJvbWlzZXMgbXVzdCBiZSB0aGUgc2FtZScpOworCisgIHJldHVy
biBhYm9ydFByb21pc2UxLnRoZW4oCisgICAgICB2ID0+IGFzc2VydF9lcXVhbHModiwgdW5kZWZp
bmVkLCAnYWJvcnQoKSBzaG91bGQgZnVsZmlsbCB3aXRoIHVuZGVmaW5lZCcpKTsKK30sICd3aGVu
IGNhbGxpbmcgYWJvcnQoKSB0d2ljZSBvbiB0aGUgc2FtZSBzdHJlYW0sIGJvdGggc2hvdWxkIGdp
dmUgdGhlIHNhbWUgcHJvbWlzZSB0aGF0IGZ1bGZpbGxzIHdpdGggdW5kZWZpbmVkJyk7CisKK3By
b21pc2VfdGVzdCgoKSA9PiB7CisgIGNvbnN0IHdzID0gbmV3IFdyaXRhYmxlU3RyZWFtKCk7Cisg
IGNvbnN0IGFib3J0UHJvbWlzZTEgPSB3cy5hYm9ydCgpOworCisgIHJldHVybiBhYm9ydFByb21p
c2UxLnRoZW4odjEgPT4geworICAgIGFzc2VydF9lcXVhbHModjEsIHVuZGVmaW5lZCwgJ2ZpcnN0
IGFib3J0KCkgc2hvdWxkIGZ1bGZpbGwgd2l0aCB1bmRlZmluZWQnKTsKKworICAgIGNvbnN0IGFi
b3J0UHJvbWlzZTIgPSB3cy5hYm9ydCgpOworICAgIGFzc2VydF9ub3RfZXF1YWxzKGFib3J0UHJv
bWlzZTIsIGFib3J0UHJvbWlzZTEsICdiZWNhdXNlIHdlIHdhaXRlZCwgdGhlIHNlY29uZCBwcm9t
aXNlIHNob3VsZCBiZSBhIG5ldyBwcm9taXNlJyk7CisKKyAgICByZXR1cm4gYWJvcnRQcm9taXNl
Mi50aGVuKHYyID0+IHsKKyAgICAgIGFzc2VydF9lcXVhbHModjIsIHVuZGVmaW5lZCwgJ3NlY29u
ZCBhYm9ydCgpIHNob3VsZCBmdWxmaWxsIHdpdGggdW5kZWZpbmVkJyk7CisgICAgfSk7CisgIH0p
OworfSwgJ3doZW4gY2FsbGluZyBhYm9ydCgpIHR3aWNlIG9uIHRoZSBzYW1lIHN0cmVhbSwgYnV0
IHNlcXVlbnRpYWxseSBzbyBzbyB0aGVyZVwncyBubyBwZW5kaW5nIGFib3J0IHRoZSBzZWNvbmQg
dGltZSwgJyArCisgICAnYm90aCBzaG91bGQgZnVsZmlsbCB3aXRoIHVuZGVmaW5lZCcpOworCitw
cm9taXNlX3Rlc3QodCA9PiB7CisgIGNvbnN0IHdzID0gbmV3IFdyaXRhYmxlU3RyZWFtKHsKKyAg
ICBzdGFydChjKSB7CisgICAgICBjLmVycm9yKGVycm9yMSk7CisgICAgfQorICB9KTsKKworICBj
b25zdCB3cml0ZXIgPSB3cy5nZXRXcml0ZXIoKTsKKworICByZXR1cm4gcHJvbWlzZV9yZWplY3Rz
X2V4YWN0bHkodCwgZXJyb3IxLCB3cml0ZXIuY2xvc2VkLCAnd3JpdGVyLmNsb3NlZCBzaG91bGQg
cmVqZWN0JykudGhlbigoKSA9PiB7CisgICAgcmV0dXJuIHdyaXRlci5hYm9ydCgpLnRoZW4oCisg
ICAgICB2ID0+IGFzc2VydF9lcXVhbHModiwgdW5kZWZpbmVkLCAnYWJvcnQoKSBzaG91bGQgZnVs
ZmlsbCB3aXRoIHVuZGVmaW5lZCcpKTsKKyAgfSk7Cit9LCAnY2FsbGluZyBhYm9ydCgpIG9uIGFu
IGVycm9yZWQgc3RyZWFtIHNob3VsZCBmdWxmaWxsIHdpdGggdW5kZWZpbmVkJyk7CisKK3Byb21p
c2VfdGVzdCh0ID0+IHsKKyAgbGV0IGNvbnRyb2xsZXI7CisgIGxldCByZXNvbHZlV3JpdGU7Cisg
IGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAg
ICAgIGNvbnRyb2xsZXIgPSBjOworICAgIH0sCisgICAgd3JpdGUoKSB7CisgICAgICByZXR1cm4g
bmV3IFByb21pc2UocmVzb2x2ZSA9PiB7CisgICAgICAgIHJlc29sdmVXcml0ZSA9IHJlc29sdmU7
CisgICAgICB9KTsKKyAgICB9CisgIH0pOworICBjb25zdCB3cml0ZXIgPSB3cy5nZXRXcml0ZXIo
KTsKKyAgcmV0dXJuIHdyaXRlci5yZWFkeS50aGVuKCgpID0+IHsKKyAgICBjb25zdCB3cml0ZVBy
b21pc2UgPSB3cml0ZXIud3JpdGUoJ2NodW5rJyk7CisgICAgY29udHJvbGxlci5lcnJvcihlcnJv
cjEpOworICAgIGNvbnN0IGFib3J0UHJvbWlzZSA9IHdyaXRlci5hYm9ydChlcnJvcjIpOworICAg
IHJlc29sdmVXcml0ZSgpOworICAgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAgICB3cml0ZVBy
b21pc2UsCisgICAgICBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIGFib3J0UHJv
bWlzZSwgJ2Fib3J0KCkgc2hvdWxkIHJlamVjdCcpCisgICAgXSkudGhlbigoKSA9PiB7CisgICAg
ICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWyd3cml0ZScsICdjaHVuayddLCAnc2lu
ayBhYm9ydCgpIHNob3VsZCBub3QgYmUgY2FsbGVkJyk7CisgICAgfSk7CisgIH0pOworfSwgJ3Np
bmsgYWJvcnQoKSBzaG91bGQgbm90IGJlIGNhbGxlZCBpZiBzdHJlYW0gd2FzIGVycm9yaW5nIGR1
ZSB0byBjb250cm9sbGVyLmVycm9yKCkgYmVmb3JlIGFib3J0KCkgd2FzIGNhbGxlZCcpOworCitw
cm9taXNlX3Rlc3QodCA9PiB7CisgIGxldCByZXNvbHZlV3JpdGU7CisgIGxldCBzaXplID0gMTsK
KyAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSh7CisgICAgd3JpdGUoKSB7Cisg
ICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7CisgICAgICAgIHJlc29sdmVXcml0
ZSA9IHJlc29sdmU7CisgICAgICB9KTsKKyAgICB9CisgIH0sIHsKKyAgICBzaXplKCkgeworICAg
ICAgcmV0dXJuIHNpemU7CisgICAgfSwKKyAgICBoaWdoV2F0ZXJNYXJrOiAxCisgIH0pOworICBj
b25zdCB3cml0ZXIgPSB3cy5nZXRXcml0ZXIoKTsKKyAgcmV0dXJuIHdyaXRlci5yZWFkeS50aGVu
KCgpID0+IHsKKyAgICBjb25zdCB3cml0ZVByb21pc2UxID0gd3JpdGVyLndyaXRlKCdjaHVuazEn
KTsKKyAgICBzaXplID0gTmFOOworICAgIGNvbnN0IHdyaXRlUHJvbWlzZTIgPSB3cml0ZXIud3Jp
dGUoJ2NodW5rMicpOworICAgIGNvbnN0IGFib3J0UHJvbWlzZSA9IHdyaXRlci5hYm9ydChlcnJv
cjIpOworICAgIHJlc29sdmVXcml0ZSgpOworICAgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAg
ICB3cml0ZVByb21pc2UxLAorICAgICAgcHJvbWlzZV9yZWplY3RzX2pzKHQsIFJhbmdlRXJyb3Is
IHdyaXRlUHJvbWlzZTIsICdzZWNvbmQgd3JpdGUoKSBzaG91bGQgcmVqZWN0JyksCisgICAgICBw
cm9taXNlX3JlamVjdHNfanModCwgUmFuZ2VFcnJvciwgYWJvcnRQcm9taXNlLCAnYWJvcnQoKSBz
aG91bGQgcmVqZWN0JykKKyAgICBdKS50aGVuKCgpID0+IHsKKyAgICAgIGFzc2VydF9hcnJheV9l
cXVhbHMod3MuZXZlbnRzLCBbJ3dyaXRlJywgJ2NodW5rMSddLCAnc2luayBhYm9ydCgpIHNob3Vs
ZCBub3QgYmUgY2FsbGVkJyk7CisgICAgfSk7CisgIH0pOworfSwgJ3NpbmsgYWJvcnQoKSBzaG91
bGQgbm90IGJlIGNhbGxlZCBpZiBzdHJlYW0gd2FzIGVycm9yaW5nIGR1ZSB0byBiYWQgc3RyYXRl
Z3kgYmVmb3JlIGFib3J0KCkgd2FzIGNhbGxlZCcpOworCitwcm9taXNlX3Rlc3QodCA9PiB7Cisg
IGNvbnN0IHdzID0gbmV3IFdyaXRhYmxlU3RyZWFtKCk7CisgIHJldHVybiB3cy5hYm9ydCgpLnRo
ZW4oKCkgPT4geworICAgIGNvbnN0IHdyaXRlciA9IHdzLmdldFdyaXRlcigpOworICAgIHJldHVy
biB3cml0ZXIuY2xvc2VkLnRoZW4odC51bnJlYWNoZWRfZnVuYygnY2xvc2VkIHByb21pc2Ugc2hv
dWxkIG5vdCBmdWxmaWxsJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlID0+IGFz
c2VydF9lcXVhbHMoZSwgdW5kZWZpbmVkLCAnZSBzaG91bGQgYmUgdW5kZWZpbmVkJykpOworICB9
KTsKK30sICdhYm9ydCB3aXRoIG5vIGFyZ3VtZW50cyBzaG91bGQgc2V0IHRoZSBzdG9yZWQgZXJy
b3IgdG8gdW5kZWZpbmVkJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgY29uc3Qgd3MgPSBu
ZXcgV3JpdGFibGVTdHJlYW0oKTsKKyAgcmV0dXJuIHdzLmFib3J0KHVuZGVmaW5lZCkudGhlbigo
KSA9PiB7CisgICAgY29uc3Qgd3JpdGVyID0gd3MuZ2V0V3JpdGVyKCk7CisgICAgcmV0dXJuIHdy
aXRlci5jbG9zZWQudGhlbih0LnVucmVhY2hlZF9mdW5jKCdjbG9zZWQgcHJvbWlzZSBzaG91bGQg
bm90IGZ1bGZpbGwnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgPT4gYXNzZXJ0
X2VxdWFscyhlLCB1bmRlZmluZWQsICdlIHNob3VsZCBiZSB1bmRlZmluZWQnKSk7CisgIH0pOwor
fSwgJ2Fib3J0IHdpdGggYW4gdW5kZWZpbmVkIGFyZ3VtZW50IHNob3VsZCBzZXQgdGhlIHN0b3Jl
ZCBlcnJvciB0byB1bmRlZmluZWQnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBjb25zdCB3
cyA9IG5ldyBXcml0YWJsZVN0cmVhbSgpOworICByZXR1cm4gd3MuYWJvcnQoJ3N0cmluZyBhcmd1
bWVudCcpLnRoZW4oKCkgPT4geworICAgIGNvbnN0IHdyaXRlciA9IHdzLmdldFdyaXRlcigpOwor
ICAgIHJldHVybiB3cml0ZXIuY2xvc2VkLnRoZW4odC51bnJlYWNoZWRfZnVuYygnY2xvc2VkIHBy
b21pc2Ugc2hvdWxkIG5vdCBmdWxmaWxsJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBlID0+IGFzc2VydF9lcXVhbHMoZSwgJ3N0cmluZyBhcmd1bWVudCcsICdlIHNob3VsZCBiZSBc
J3N0cmluZyBhcmd1bWVudFwnJykpOworICB9KTsKK30sICdhYm9ydCB3aXRoIGEgc3RyaW5nIGFy
Z3VtZW50IHNob3VsZCBzZXQgdGhlIHN0b3JlZCBlcnJvciB0byB0aGF0IGFyZ3VtZW50Jyk7CisK
K3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgY29uc3Qgd3MgPSBuZXcgV3JpdGFibGVTdHJlYW0oKTsK
KyAgY29uc3Qgd3JpdGVyID0gd3MuZ2V0V3JpdGVyKCk7CisgIHJldHVybiBwcm9taXNlX3JlamVj
dHNfanModCwgVHlwZUVycm9yLCB3cy5hYm9ydCgpLCAnYWJvcnQgc2hvdWxkIHJlamVjdCcpCisg
ICAgLnRoZW4oKCkgPT4gd3JpdGVyLnJlYWR5KTsKK30sICdhYm9ydCBvbiBhIGxvY2tlZCBzdHJl
YW0gc2hvdWxkIHJlamVjdCcpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvYWJvcnRpbmcuYW55
Lndvcmtlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9hYm9ydGluZy5hbnkud29ya2VyLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNjQyYmRjMGE5ZjY2NTJkM2NkMzg4MzQxY2M3NDFiYWVh
ZDUzMWFlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvYWJvcnRpbmcuYW55Lndvcmtl
ci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1NyBAQAorCitGQUlMIEFib3J0aW5nIGEgV3JpdGFi
bGVTdHJlYW0gYmVmb3JlIGl0IHN0YXJ0cyBzaG91bGQgY2F1c2UgdGhlIHdyaXRlcidzIHVuc2V0
dGxlZCByZWFkeSBwcm9taXNlIHRvIHJlamVjdCBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJs
ZVN0cmVhbQorRkFJTCBBYm9ydGluZyBhIFdyaXRhYmxlU3RyZWFtIHNob3VsZCBjYXVzZSB0aGUg
d3JpdGVyJ3MgZnVsZmlsbGVkIHJlYWR5IHByb21pc2UgdG8gcmVzZXQgdG8gYSByZWplY3RlZCBv
bmUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgYWJvcnQoKSBvbiBh
IHJlbGVhc2VkIHdyaXRlciByZWplY3RzIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3Ry
ZWFtCitGQUlMIEFib3J0aW5nIGEgV3JpdGFibGVTdHJlYW0gaW1tZWRpYXRlbHkgcHJldmVudHMg
ZnV0dXJlIHdyaXRlcyBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBB
Ym9ydGluZyBhIFdyaXRhYmxlU3RyZWFtIHByZXZlbnRzIGZ1cnRoZXIgd3JpdGVzIGFmdGVyIGFu
eSB0aGF0IGFyZSBpbiBwcm9ncmVzcyBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVh
bQorRkFJTCBGdWxmaWxsbWVudCB2YWx1ZSBvZiB3cml0ZXIuYWJvcnQoKSBjYWxsIG11c3QgYmUg
dW5kZWZpbmVkIGV2ZW4gaWYgdGhlIHVuZGVybHlpbmcgc2luayByZXR1cm5zIGEgbm9uLXVuZGVm
aW5lZCB2YWx1ZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBXcml0
YWJsZVN0cmVhbSBpZiBzaW5rJ3MgYWJvcnQgdGhyb3dzLCB0aGUgcHJvbWlzZSByZXR1cm5lZCBi
eSB3cml0ZXIuYWJvcnQoKSByZWplY3RzIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3Ry
ZWFtCitGQUlMIFdyaXRhYmxlU3RyZWFtIGlmIHNpbmsncyBhYm9ydCB0aHJvd3MsIHRoZSBwcm9t
aXNlIHJldHVybmVkIGJ5IG11bHRpcGxlIHdyaXRlci5hYm9ydCgpcyBpcyB0aGUgc2FtZSBhbmQg
cmVqZWN0cyBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBXcml0YWJs
ZVN0cmVhbSBpZiBzaW5rJ3MgYWJvcnQgdGhyb3dzLCB0aGUgcHJvbWlzZSByZXR1cm5lZCBieSB3
cy5hYm9ydCgpIHJlamVjdHMgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZB
SUwgV3JpdGFibGVTdHJlYW0gaWYgc2luaydzIGFib3J0IHRocm93cywgZm9yIGFuIGFib3J0IHBl
cmZvcm1lZCBkdXJpbmcgYSB3cml0ZSwgdGhlIHByb21pc2UgcmV0dXJuZWQgYnkgd3MuYWJvcnQo
KSByZWplY3RzIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIEFib3J0
aW5nIGEgV3JpdGFibGVTdHJlYW0gcGFzc2VzIHRocm91Z2ggdGhlIGdpdmVuIHJlYXNvbiBDYW4n
dCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBBYm9ydGluZyBhIFdyaXRhYmxl
U3RyZWFtIHB1dHMgaXQgaW4gYW4gZXJyb3JlZCBzdGF0ZSB3aXRoIHRoZSBlcnJvciBwYXNzZWQg
dG8gYWJvcnQoKSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBBYm9y
dGluZyBhIFdyaXRhYmxlU3RyZWFtIGNhdXNlcyBhbnkgb3V0c3RhbmRpbmcgd3JpdGUoKSBwcm9t
aXNlcyB0byBiZSByZWplY3RlZCB3aXRoIHRoZSByZWFzb24gc3VwcGxpZWQgQ2FuJ3QgZmluZCB2
YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgQ2xvc2luZyBidXQgdGhlbiBpbW1lZGlhdGVs
eSBhYm9ydGluZyBhIFdyaXRhYmxlU3RyZWFtIGNhdXNlcyB0aGUgc3RyZWFtIHRvIGVycm9yIENh
bid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIENsb3NpbmcgYSBXcml0YWJs
ZVN0cmVhbSBhbmQgYWJvcnRpbmcgaXQgd2hpbGUgaXQgY2xvc2VzIGNhdXNlcyB0aGUgc3RyZWFt
IHRvIGlnbm9yZSB0aGUgYWJvcnQgYXR0ZW1wdCBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJs
ZVN0cmVhbQorRkFJTCBBYm9ydGluZyBhIFdyaXRhYmxlU3RyZWFtIGFmdGVyIGl0IGlzIGNsb3Nl
ZCBpcyBhIG5vLW9wIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIFdy
aXRhYmxlU3RyZWFtIHNob3VsZCBOT1QgY2FsbCB1bmRlcmx5aW5nIHNpbmsncyBjbG9zZSBpZiBu
byBhYm9ydCBpcyBzdXBwbGllZCAoaGlzdG9yaWNhbCkgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3Jp
dGFibGVTdHJlYW0KK0ZBSUwgcmV0dXJuaW5nIGEgdGhlbmFibGUgZnJvbSBhYm9ydCgpIHNob3Vs
ZCB3b3JrIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIC5jbG9zZWQg
c2hvdWxkIG5vdCByZXNvbHZlIGJlZm9yZSBmdWxmaWxsZWQgd3JpdGUoKSBDYW4ndCBmaW5kIHZh
cmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCAuY2xvc2VkIHNob3VsZCBub3QgcmVzb2x2ZSBi
ZWZvcmUgcmVqZWN0ZWQgd3JpdGUoKTsgd3JpdGUoKSBlcnJvciBzaG91bGQgbm90IG92ZXJ3cml0
ZSBhYm9ydCgpIGVycm9yIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlM
IHdyaXRlcyBzaG91bGQgYmUgc2F0aXNmaWVkIGluIG9yZGVyIHdoZW4gYWJvcnRpbmcgQ2FuJ3Qg
ZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgd3JpdGVzIHNob3VsZCBiZSBzYXRp
c2ZpZWQgaW4gb3JkZXIgYWZ0ZXIgcmVqZWN0ZWQgd3JpdGUgd2hlbiBhYm9ydGluZyBDYW4ndCBm
aW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBjbG9zZSgpIHNob3VsZCByZWplY3Qg
d2l0aCBhYm9ydCByZWFzb24gd2h5IGFib3J0KCkgaXMgZmlyc3QgZXJyb3IgQ2FuJ3QgZmluZCB2
YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgdW5kZXJseWluZyBhYm9ydCgpIHNob3VsZCBu
b3QgYmUgY2FsbGVkIHVudGlsIHVuZGVybHlpbmcgd3JpdGUoKSBjb21wbGV0ZXMgQ2FuJ3QgZmlu
ZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgdW5kZXJseWluZyBhYm9ydCgpIHNob3Vs
ZCBub3QgYmUgY2FsbGVkIGlmIHVuZGVybHlpbmcgY2xvc2UoKSBoYXMgc3RhcnRlZCBDYW4ndCBm
aW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBpZiB1bmRlcmx5aW5nIGNsb3NlKCkg
aGFzIHN0YXJ0ZWQgYW5kIHRoZW4gcmVqZWN0cywgdGhlIGFib3J0KCkgYW5kIGNsb3NlKCkgcHJv
bWlzZXMgc2hvdWxkIHJlamVjdCB3aXRoIHRoZSB1bmRlcmx5aW5nIGNsb3NlIHJlamVjdGlvbiBy
ZWFzb24gQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgYW4gYWJvcnQo
KSB0aGF0IGhhcHBlbnMgZHVyaW5nIGEgd3JpdGUoKSBzaG91bGQgdHJpZ2dlciB0aGUgdW5kZXJs
eWluZyBhYm9ydCgpIGV2ZW4gd2l0aCBhIGNsb3NlKCkgcXVldWVkIENhbid0IGZpbmQgdmFyaWFi
bGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIGlmIGEgd3JpdGVyIGlzIGNyZWF0ZWQgZm9yIGEgc3Ry
ZWFtIHdpdGggYSBwZW5kaW5nIGFib3J0LCBpdHMgcmVhZHkgc2hvdWxkIGJlIHJlamVjdGVkIHdp
dGggdGhlIGFib3J0IGVycm9yIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitG
QUlMIHdyaXRlciBjbG9zZSgpIHByb21pc2Ugc2hvdWxkIHJlc29sdmUgYmVmb3JlIGFib3J0KCkg
cHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCB3cml0ZXIu
cmVhZHkgc2hvdWxkIHJlamVjdCBvbiBjb250cm9sbGVyIGVycm9yIHdpdGhvdXQgd2FpdGluZyBm
b3IgdW5kZXJseWluZyB3cml0ZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQor
RkFJTCB3cml0ZXIuYWJvcnQoKSB3aGlsZSB0aGVyZSBpcyBhbiBpbi1mbGlnaHQgd3JpdGUsIGFu
ZCB0aGVuIGZpbmlzaCB0aGUgd3JpdGUgd2l0aCByZWplY3Rpb24gQ2FuJ3QgZmluZCB2YXJpYWJs
ZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgd3JpdGVyLmFib3J0KCksIGNvbnRyb2xsZXIuZXJyb3Io
KSB3aGlsZSB0aGVyZSBpcyBhbiBpbi1mbGlnaHQgd3JpdGUsIGFuZCB0aGVuIGZpbmlzaCB0aGUg
d3JpdGUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgd3JpdGVyLmFi
b3J0KCksIGNvbnRyb2xsZXIuZXJyb3IoKSB3aGlsZSB0aGVyZSBpcyBhbiBpbi1mbGlnaHQgY2xv
c2UsIGFuZCB0aGVuIGZpbmlzaCB0aGUgY2xvc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFi
bGVTdHJlYW0KK0ZBSUwgY29udHJvbGxlci5lcnJvcigpLCB3cml0ZXIuYWJvcnQoKSB3aGlsZSB0
aGVyZSBpcyBhbiBpbi1mbGlnaHQgd3JpdGUsIGFuZCB0aGVuIGZpbmlzaCB0aGUgd3JpdGUgQ2Fu
J3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgY29udHJvbGxlci5lcnJvcigp
LCB3cml0ZXIuYWJvcnQoKSB3aGlsZSB0aGVyZSBpcyBhbiBpbi1mbGlnaHQgY2xvc2UsIGFuZCB0
aGVuIGZpbmlzaCB0aGUgY2xvc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0K
K0ZBSUwgcmVsZWFzZUxvY2soKSB3aGlsZSBhYm9ydGluZyBzaG91bGQgcmVqZWN0IHRoZSBvcmln
aW5hbCBjbG9zZWQgcHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQor
RkFJTCByZWxlYXNlTG9jaygpIGR1cmluZyBkZWxheWVkIGFzeW5jIGFib3J0KCkgc2hvdWxkIHJl
amVjdCB0aGUgd3JpdGVyLmNsb3NlZCBwcm9taXNlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRh
YmxlU3RyZWFtCitGQUlMIHNpbmsgYWJvcnQoKSBzaG91bGQgbm90IGJlIGNhbGxlZCB1bnRpbCBz
aW5rIHN0YXJ0KCkgaXMgZG9uZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQor
RkFJTCBpZiBzdGFydCBhdHRlbXB0cyB0byBlcnJvciB0aGUgY29udHJvbGxlciBhZnRlciBhYm9y
dCgpIGhhcyBiZWVuIGNhbGxlZCwgdGhlbiBpdCBzaG91bGQgbG9zZSBDYW4ndCBmaW5kIHZhcmlh
YmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBzdHJlYW0gYWJvcnQoKSBwcm9taXNlIHNob3VsZCBz
dGlsbCByZXNvbHZlIGlmIHNpbmsgc3RhcnQoKSByZWplY3RzIENhbid0IGZpbmQgdmFyaWFibGU6
IFdyaXRhYmxlU3RyZWFtCitGQUlMIHdyaXRlciBhYm9ydCgpIGR1cmluZyBzaW5rIHN0YXJ0KCkg
c2hvdWxkIHJlcGxhY2UgdGhlIHdyaXRlci5yZWFkeSBwcm9taXNlIHN5bmNocm9ub3VzbHkgQ2Fu
J3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgcHJvbWlzZXMgcmV0dXJuZWQg
ZnJvbSBvdGhlciB3cml0ZXIgbWV0aG9kcyBzaG91bGQgYmUgcmVqZWN0ZWQgd2hlbiB3cml0ZXIg
YWJvcnQoKSBoYXBwZW5zIGR1cmluZyBzaW5rIHN0YXJ0KCkgQ2FuJ3QgZmluZCB2YXJpYWJsZTog
V3JpdGFibGVTdHJlYW0KK0ZBSUwgYWJvcnQoKSBzaG91bGQgc3VjY2VlZCBkZXNwaXRlIHJlamVj
dGlvbiBmcm9tIHdyaXRlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlM
IGFib3J0KCkgc2hvdWxkIGJlIHJlamVjdGVkIHdpdGggdGhlIHJlamVjdGlvbiByZXR1cm5lZCBm
cm9tIGNsb3NlKCkgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgYSBy
ZWplY3Rpbmcgc2luay53cml0ZSgpIHNob3VsZCBub3QgcHJldmVudCBzaW5rLmFib3J0KCkgZnJv
bSBiZWluZyBjYWxsZWQgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwg
d2hlbiBzdGFydCBlcnJvcnMgYWZ0ZXIgc3RyZWFtIGFib3J0KCksIHVuZGVybHlpbmcgc2luayBh
Ym9ydCgpIHNob3VsZCBiZSBjYWxsZWQgYW55d2F5IENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRh
YmxlU3RyZWFtCitGQUlMIHdoZW4gY2FsbGluZyBhYm9ydCgpIHR3aWNlIG9uIHRoZSBzYW1lIHN0
cmVhbSwgYm90aCBzaG91bGQgZ2l2ZSB0aGUgc2FtZSBwcm9taXNlIHRoYXQgZnVsZmlsbHMgd2l0
aCB1bmRlZmluZWQgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgd2hl
biBjYWxsaW5nIGFib3J0KCkgdHdpY2Ugb24gdGhlIHNhbWUgc3RyZWFtLCBidXQgc2VxdWVudGlh
bGx5IHNvIHNvIHRoZXJlJ3Mgbm8gcGVuZGluZyBhYm9ydCB0aGUgc2Vjb25kIHRpbWUsIGJvdGgg
c2hvdWxkIGZ1bGZpbGwgd2l0aCB1bmRlZmluZWQgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFi
bGVTdHJlYW0KK0ZBSUwgY2FsbGluZyBhYm9ydCgpIG9uIGFuIGVycm9yZWQgc3RyZWFtIHNob3Vs
ZCBmdWxmaWxsIHdpdGggdW5kZWZpbmVkIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3Ry
ZWFtCitGQUlMIHNpbmsgYWJvcnQoKSBzaG91bGQgbm90IGJlIGNhbGxlZCBpZiBzdHJlYW0gd2Fz
IGVycm9yaW5nIGR1ZSB0byBjb250cm9sbGVyLmVycm9yKCkgYmVmb3JlIGFib3J0KCkgd2FzIGNh
bGxlZCBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBzaW5rIGFib3J0
KCkgc2hvdWxkIG5vdCBiZSBjYWxsZWQgaWYgc3RyZWFtIHdhcyBlcnJvcmluZyBkdWUgdG8gYmFk
IHN0cmF0ZWd5IGJlZm9yZSBhYm9ydCgpIHdhcyBjYWxsZWQgQ2FuJ3QgZmluZCB2YXJpYWJsZTog
V3JpdGFibGVTdHJlYW0KK0ZBSUwgYWJvcnQgd2l0aCBubyBhcmd1bWVudHMgc2hvdWxkIHNldCB0
aGUgc3RvcmVkIGVycm9yIHRvIHVuZGVmaW5lZCBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJs
ZVN0cmVhbQorRkFJTCBhYm9ydCB3aXRoIGFuIHVuZGVmaW5lZCBhcmd1bWVudCBzaG91bGQgc2V0
IHRoZSBzdG9yZWQgZXJyb3IgdG8gdW5kZWZpbmVkIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRh
YmxlU3RyZWFtCitGQUlMIGFib3J0IHdpdGggYSBzdHJpbmcgYXJndW1lbnQgc2hvdWxkIHNldCB0
aGUgc3RvcmVkIGVycm9yIHRvIHRoYXQgYXJndW1lbnQgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3Jp
dGFibGVTdHJlYW0KK0ZBSUwgYWJvcnQgb24gYSBsb2NrZWQgc3RyZWFtIHNob3VsZCByZWplY3Qg
Q2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0
cmVhbXMvYWJvcnRpbmcuYW55Lndvcmtlci5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvYWJvcnRpbmcuYW55
Lndvcmtlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzODI5MTM1MjhlNjkzYjNhNWQ1NmM2NjBhNDUwNjA5
ODBiNTQ4YzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9hYm9ydGluZy5hbnkud29y
a2VyLmh0bWwKQEAgLTAsMCArMSBAQAorPCEtLSBUaGlzIGZpbGUgaXMgcmVxdWlyZWQgZm9yIFdl
YktpdCB0ZXN0IGluZnJhc3RydWN0dXJlIHRvIHJ1biB0aGUgdGVtcGxhdGVkIHRlc3QgLS0+Clwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvYmFkLXN0
cmF0ZWdpZXMuYW55LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL2JhZC1zdHJhdGVnaWVzLmFu
eS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDgxYjgwYmExNTFhNTU3NTgzZTk4MDQzM2RkZDAw
MmM1OTM1MWVlMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL2JhZC1zdHJhdGVnaWVz
LmFueS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw5IEBACisKK1BBU1MgV3JpdGFibGUgc3RyZWFt
OiB0aHJvd2luZyBzdHJhdGVneS5zaXplIGdldHRlciAKK1BBU1MgcmVqZWN0IGFueSBub24tZnVu
Y3Rpb24gdmFsdWUgZm9yIHN0cmF0ZWd5LnNpemUgCitQQVNTIFdyaXRhYmxlIHN0cmVhbTogdGhy
b3dpbmcgc3RyYXRlZ3kuaGlnaFdhdGVyTWFyayBnZXR0ZXIgCitQQVNTIFdyaXRhYmxlIHN0cmVh
bTogaW52YWxpZCBzdHJhdGVneS5oaWdoV2F0ZXJNYXJrIAorRkFJTCBXcml0YWJsZSBzdHJlYW06
IHRocm93aW5nIHN0cmF0ZWd5LnNpemUgbWV0aG9kIHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5j
dGlvbi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkK
K0ZBSUwgV3JpdGFibGUgc3RyZWFtOiBpbnZhbGlkIHN0cmF0ZWd5LnNpemUgcmV0dXJuIHZhbHVl
IHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3
cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkKK1BBU1MgV3JpdGFibGUgc3RyZWFtOiBpbnZhbGlk
IHNpemUgYmVhdHMgaW52YWxpZCBoaWdoV2F0ZXJNYXJrIAorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3Ry
ZWFtcy9iYWQtc3RyYXRlZ2llcy5hbnkuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL2JhZC1zdHJhdGVnaWVz
LmFueS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzODI5MTM1MjhlNjkzYjNhNWQ1NmM2NjBhNDUwNjA5ODBi
NTQ4YzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9iYWQtc3RyYXRlZ2llcy5hbnku
aHRtbApAQCAtMCwwICsxIEBACis8IS0tIFRoaXMgZmlsZSBpcyByZXF1aXJlZCBmb3IgV2ViS2l0
IHRlc3QgaW5mcmFzdHJ1Y3R1cmUgdG8gcnVuIHRoZSB0ZW1wbGF0ZWQgdGVzdCAtLT4KXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9iYWQtc3RyYXRl
Z2llcy5hbnkuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9iYWQtc3RyYXRlZ2llcy5hbnkuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYjE4MGJhZTU3YzA1ODVmZDkxMGYwY2M3ZGZmN2NlNDIzMjEyZjk2YgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy93cml0YWJsZS1zdHJlYW1zL2JhZC1zdHJhdGVnaWVzLmFueS5qcwpAQCAtMCwwICsxLDk1IEBA
CisvLyBNRVRBOiBnbG9iYWw9d2luZG93LHdvcmtlcixqc3NoZWxsCisndXNlIHN0cmljdCc7CisK
K2NvbnN0IGVycm9yMSA9IG5ldyBFcnJvcignYSB1bmlxdWUgc3RyaW5nJyk7CitlcnJvcjEubmFt
ZSA9ICdlcnJvcjEnOworCit0ZXN0KCgpID0+IHsKKyAgYXNzZXJ0X3Rocm93c19leGFjdGx5KGVy
cm9yMSwgKCkgPT4geworICAgIG5ldyBXcml0YWJsZVN0cmVhbSh7fSwgeworICAgICAgZ2V0IHNp
emUoKSB7CisgICAgICAgIHRocm93IGVycm9yMTsKKyAgICAgIH0sCisgICAgICBoaWdoV2F0ZXJN
YXJrOiA1CisgICAgfSk7CisgIH0sICdjb25zdHJ1Y3Rpb24gc2hvdWxkIHJlLXRocm93IHRoZSBl
cnJvcicpOworfSwgJ1dyaXRhYmxlIHN0cmVhbTogdGhyb3dpbmcgc3RyYXRlZ3kuc2l6ZSBnZXR0
ZXInKTsKKwordGVzdCgoKSA9PiB7CisgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9
PiB7CisgICAgbmV3IFdyaXRhYmxlU3RyZWFtKHt9LCB7IHNpemU6ICdhIHN0cmluZycgfSk7Cisg
IH0pOworfSwgJ3JlamVjdCBhbnkgbm9uLWZ1bmN0aW9uIHZhbHVlIGZvciBzdHJhdGVneS5zaXpl
Jyk7CisKK3Rlc3QoKCkgPT4geworICBhc3NlcnRfdGhyb3dzX2V4YWN0bHkoZXJyb3IxLCAoKSA9
PiB7CisgICAgbmV3IFdyaXRhYmxlU3RyZWFtKHt9LCB7CisgICAgICBzaXplKCkgeworICAgICAg
ICByZXR1cm4gMTsKKyAgICAgIH0sCisgICAgICBnZXQgaGlnaFdhdGVyTWFyaygpIHsKKyAgICAg
ICAgdGhyb3cgZXJyb3IxOworICAgICAgfQorICAgIH0pOworICB9LCAnY29uc3RydWN0aW9uIHNo
b3VsZCByZS10aHJvdyB0aGUgZXJyb3InKTsKK30sICdXcml0YWJsZSBzdHJlYW06IHRocm93aW5n
IHN0cmF0ZWd5LmhpZ2hXYXRlck1hcmsgZ2V0dGVyJyk7CisKK3Rlc3QoKCkgPT4geworCisgIGZv
ciAoY29uc3QgaGlnaFdhdGVyTWFyayBvZiBbLTEsIC1JbmZpbml0eSwgTmFOLCAnZm9vJywge31d
KSB7CisgICAgYXNzZXJ0X3Rocm93c19qcyhSYW5nZUVycm9yLCAoKSA9PiB7CisgICAgICBuZXcg
V3JpdGFibGVTdHJlYW0oe30sIHsKKyAgICAgICAgc2l6ZSgpIHsKKyAgICAgICAgICByZXR1cm4g
MTsKKyAgICAgICAgfSwKKyAgICAgICAgaGlnaFdhdGVyTWFyaworICAgICAgfSk7CisgICAgfSwg
YGNvbnN0cnVjdGlvbiBzaG91bGQgdGhyb3cgYSBSYW5nZUVycm9yIGZvciAke2hpZ2hXYXRlck1h
cmt9YCk7CisgIH0KK30sICdXcml0YWJsZSBzdHJlYW06IGludmFsaWQgc3RyYXRlZ3kuaGlnaFdh
dGVyTWFyaycpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIGNvbnN0IHdzID0gbmV3IFdyaXRh
YmxlU3RyZWFtKHt9LCB7CisgICAgc2l6ZSgpIHsKKyAgICAgIHRocm93IGVycm9yMTsKKyAgICB9
LAorICAgIGhpZ2hXYXRlck1hcms6IDUKKyAgfSk7CisKKyAgY29uc3Qgd3JpdGVyID0gd3MuZ2V0
V3JpdGVyKCk7CisKKyAgY29uc3QgcDEgPSBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJv
cjEsIHdyaXRlci53cml0ZSgnYScpLCAnd3JpdGUgc2hvdWxkIHJlamVjdCB3aXRoIHRoZSB0aHJv
d24gZXJyb3InKTsKKworICBjb25zdCBwMiA9IHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVy
cm9yMSwgd3JpdGVyLmNsb3NlZCwgJ2Nsb3NlZCBzaG91bGQgcmVqZWN0IHdpdGggdGhlIHRocm93
biBlcnJvcicpOworCisgIHJldHVybiBQcm9taXNlLmFsbChbcDEsIHAyXSk7Cit9LCAnV3JpdGFi
bGUgc3RyZWFtOiB0aHJvd2luZyBzdHJhdGVneS5zaXplIG1ldGhvZCcpOworCitwcm9taXNlX3Rl
c3QoKCkgPT4geworICBjb25zdCBzaXplcyA9IFtOYU4sIC1JbmZpbml0eSwgSW5maW5pdHksIC0x
XTsKKyAgcmV0dXJuIFByb21pc2UuYWxsKHNpemVzLm1hcChzaXplID0+IHsKKyAgICBjb25zdCB3
cyA9IG5ldyBXcml0YWJsZVN0cmVhbSh7fSwgeworICAgICAgc2l6ZSgpIHsKKyAgICAgICAgcmV0
dXJuIHNpemU7CisgICAgICB9LAorICAgICAgaGlnaFdhdGVyTWFyazogNQorICAgIH0pOworCisg
ICAgY29uc3Qgd3JpdGVyID0gd3MuZ2V0V3JpdGVyKCk7CisKKyAgICByZXR1cm4gd3JpdGVyLndy
aXRlKCdhJykudGhlbigoKSA9PiBhc3NlcnRfdW5yZWFjaGVkKCd3cml0ZSBtdXN0IHJlamVjdCcp
LCB3cml0ZUUgPT4geworICAgICAgYXNzZXJ0X2VxdWFscyh3cml0ZUUubmFtZSwgJ1JhbmdlRXJy
b3InLCBgd3JpdGUgbXVzdCByZWplY3Qgd2l0aCBhIFJhbmdlRXJyb3IgZm9yICR7c2l6ZX1gKTsK
KworICAgICAgcmV0dXJuIHdyaXRlci5jbG9zZWQudGhlbigoKSA9PiBhc3NlcnRfdW5yZWFjaGVk
KCd3cml0ZSBtdXN0IHJlamVjdCcpLCBjbG9zZWRFID0+IHsKKyAgICAgICAgYXNzZXJ0X2VxdWFs
cyhjbG9zZWRFLCB3cml0ZUUsIGBjbG9zZWQgc2hvdWxkIHJlamVjdCB3aXRoIHRoZSBzYW1lIGVy
cm9yIGFzIHdyaXRlYCk7CisgICAgICB9KTsKKyAgICB9KTsKKyAgfSkpOworfSwgJ1dyaXRhYmxl
IHN0cmVhbTogaW52YWxpZCBzdHJhdGVneS5zaXplIHJldHVybiB2YWx1ZScpOworCit0ZXN0KCgp
ID0+IHsKKyAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IG5ldyBXcml0YWJsZVN0
cmVhbSh1bmRlZmluZWQsIHsKKyAgICBzaXplOiAnbm90IGEgZnVuY3Rpb24nLAorICAgIGhpZ2hX
YXRlck1hcms6IE5hTgorICB9KSwgJ1dyaXRhYmxlU3RyZWFtIGNvbnN0cnVjdG9yIHNob3VsZCB0
aHJvdyBhIFR5cGVFcnJvcicpOworfSwgJ1dyaXRhYmxlIHN0cmVhbTogaW52YWxpZCBzaXplIGJl
YXRzIGludmFsaWQgaGlnaFdhdGVyTWFyaycpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvYmFk
LXN0cmF0ZWdpZXMuYW55Lndvcmtlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9iYWQtc3Ry
YXRlZ2llcy5hbnkud29ya2VyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZWQ1M2ZhOWY5ZmYy
YWQ5YjM0NmZjMzlkYjNlYjRhMjM4ZGJlMjg1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVh
bXMvYmFkLXN0cmF0ZWdpZXMuYW55Lndvcmtlci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0MyBA
QAorCitGQUlMIFdyaXRhYmxlIHN0cmVhbTogdGhyb3dpbmcgc3RyYXRlZ3kuc2l6ZSBnZXR0ZXIg
YXNzZXJ0X3Rocm93c19leGFjdGx5OiBjb25zdHJ1Y3Rpb24gc2hvdWxkIHJlLXRocm93IHRoZSBl
cnJvciBmdW5jdGlvbiAiKCkgPT4geworICAgIG5ldyBXcml0YWJsZVN0cmVhbSh7fSwgeworICAg
ICAgZ2V0IHNpemUoKSB7CisgICAgICAgIHRocm93IGVycm9yMTsKKyAgICAgIH0sCisgICAgICBo
aWdoV2F0ZXJNYXJrOiA1CisgICAgfSk7CisgIH0iIHRocmV3IG9iamVjdCAiUmVmZXJlbmNlRXJy
b3I6IENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtIiBidXQgd2UgZXhwZWN0ZWQg
aXQgdG8gdGhyb3cgb2JqZWN0ICJlcnJvcjE6IGEgdW5pcXVlIHN0cmluZyIKK0ZBSUwgcmVqZWN0
IGFueSBub24tZnVuY3Rpb24gdmFsdWUgZm9yIHN0cmF0ZWd5LnNpemUgYXNzZXJ0X3Rocm93c19q
czogZnVuY3Rpb24gIigpID0+IHsKKyAgICBuZXcgV3JpdGFibGVTdHJlYW0oe30sIHsgc2l6ZTog
J2Egc3RyaW5nJyB9KTsKKyAgfSIgdGhyZXcgb2JqZWN0ICJSZWZlcmVuY2VFcnJvcjogQ2FuJ3Qg
ZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0iICgiUmVmZXJlbmNlRXJyb3IiKSBleHBlY3Rl
ZCBpbnN0YW5jZSBvZiBmdW5jdGlvbiAiZnVuY3Rpb24gVHlwZUVycm9yKCkgeworICAgIFtuYXRp
dmUgY29kZV0KK30iICgiVHlwZUVycm9yIikKK0ZBSUwgV3JpdGFibGUgc3RyZWFtOiB0aHJvd2lu
ZyBzdHJhdGVneS5oaWdoV2F0ZXJNYXJrIGdldHRlciBhc3NlcnRfdGhyb3dzX2V4YWN0bHk6IGNv
bnN0cnVjdGlvbiBzaG91bGQgcmUtdGhyb3cgdGhlIGVycm9yIGZ1bmN0aW9uICIoKSA9PiB7Cisg
ICAgbmV3IFdyaXRhYmxlU3RyZWFtKHt9LCB7CisgICAgICBzaXplKCkgeworICAgICAgICByZXR1
cm4gMTsKKyAgICAgIH0sCisgICAgICBnZXQgaGlnaFdhdGVyTWFyaygpIHsKKyAgICAgICAgdGhy
b3cgZXJyb3IxOworICAgICAgfQorICAgIH0pOworICB9IiB0aHJldyBvYmplY3QgIlJlZmVyZW5j
ZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbSIgYnV0IHdlIGV4cGVj
dGVkIGl0IHRvIHRocm93IG9iamVjdCAiZXJyb3IxOiBhIHVuaXF1ZSBzdHJpbmciCitGQUlMIFdy
aXRhYmxlIHN0cmVhbTogaW52YWxpZCBzdHJhdGVneS5oaWdoV2F0ZXJNYXJrIGFzc2VydF90aHJv
d3NfanM6IGNvbnN0cnVjdGlvbiBzaG91bGQgdGhyb3cgYSBSYW5nZUVycm9yIGZvciAtMSBmdW5j
dGlvbiAiKCkgPT4geworICAgICAgbmV3IFdyaXRhYmxlU3RyZWFtKHt9LCB7CisgICAgICAgIHNp
emUoKSB7CisgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIH0sCisgICAgICAgIGhpZ2hXYXRl
ck1hcmsKKyAgICAgIH0pOworICAgIH0iIHRocmV3IG9iamVjdCAiUmVmZXJlbmNlRXJyb3I6IENh
bid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtIiAoIlJlZmVyZW5jZUVycm9yIikgZXhw
ZWN0ZWQgaW5zdGFuY2Ugb2YgZnVuY3Rpb24gImZ1bmN0aW9uIFJhbmdlRXJyb3IoKSB7CisgICAg
W25hdGl2ZSBjb2RlXQorfSIgKCJSYW5nZUVycm9yIikKK0ZBSUwgV3JpdGFibGUgc3RyZWFtOiB0
aHJvd2luZyBzdHJhdGVneS5zaXplIG1ldGhvZCBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJs
ZVN0cmVhbQorRkFJTCBXcml0YWJsZSBzdHJlYW06IGludmFsaWQgc3RyYXRlZ3kuc2l6ZSByZXR1
cm4gdmFsdWUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgV3JpdGFi
bGUgc3RyZWFtOiBpbnZhbGlkIHNpemUgYmVhdHMgaW52YWxpZCBoaWdoV2F0ZXJNYXJrIGFzc2Vy
dF90aHJvd3NfanM6IFdyaXRhYmxlU3RyZWFtIGNvbnN0cnVjdG9yIHNob3VsZCB0aHJvdyBhIFR5
cGVFcnJvciBmdW5jdGlvbiAiKCkgPT4gbmV3IFdyaXRhYmxlU3RyZWFtKHVuZGVmaW5lZCwgewor
ICAgIHNpemU6ICdub3QgYSBmdW5jdGlvbicsCisgICAgaGlnaFdhdGVyTWFyazogTmFOCisgIH0p
IiB0aHJldyBvYmplY3QgIlJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0
YWJsZVN0cmVhbSIgKCJSZWZlcmVuY2VFcnJvciIpIGV4cGVjdGVkIGluc3RhbmNlIG9mIGZ1bmN0
aW9uICJmdW5jdGlvbiBUeXBlRXJyb3IoKSB7CisgICAgW25hdGl2ZSBjb2RlXQorfSIgKCJUeXBl
RXJyb3IiKQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9iYWQtc3RyYXRlZ2llcy5hbnkud29y
a2VyLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9iYWQtc3RyYXRlZ2llcy5hbnkud29ya2VyLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMjM4MjkxMzUyOGU2OTNiM2E1ZDU2YzY2MGE0NTA2MDk4MGI1NDhjMwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL2JhZC1zdHJhdGVnaWVzLmFueS53b3JrZXIuaHRtbApA
QCAtMCwwICsxIEBACis8IS0tIFRoaXMgZmlsZSBpcyByZXF1aXJlZCBmb3IgV2ViS2l0IHRlc3Qg
aW5mcmFzdHJ1Y3R1cmUgdG8gcnVuIHRoZSB0ZW1wbGF0ZWQgdGVzdCAtLT4KXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9iYWQtdW5kZXJseWluZy1z
aW5rcy5hbnktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvYmFkLXVuZGVybHlpbmctc2lua3Mu
YW55LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNDZmNzUwZGQ0NDdiZDQ1NTQyNGFkYjk3NmM4
OTZhYjMyMGQ5NjU3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvYmFkLXVuZGVybHlp
bmctc2lua3MuYW55LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDI3IEBACisKK1BBU1Mgc3RhcnQ6
IGVycm9ycyBpbiBzdGFydCBjYXVzZSBXcml0YWJsZVN0cmVhbSBjb25zdHJ1Y3RvciB0byB0aHJv
dyAKK0ZBSUwgY2xvc2U6IHRocm93aW5nIG1ldGhvZCBzaG91bGQgY2F1c2Ugd3JpdGVyIGNsb3Nl
KCkgYW5kIHJlYWR5IHRvIHJlamVjdCB3cy5nZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJ
biAnd3MuZ2V0V3JpdGVyKCknLCAnd3MuZ2V0V3JpdGVyJyBpcyB1bmRlZmluZWQpCitGQUlMIGNs
b3NlOiByZXR1cm5pbmcgYSByZWplY3RlZCBwcm9taXNlIHNob3VsZCBjYXVzZSB3cml0ZXIgY2xv
c2UoKSBhbmQgcmVhZHkgdG8gcmVqZWN0IHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4g
KEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkKK0ZBSUwg
Y2xvc2U6IHRocm93aW5nIGdldHRlciBzaG91bGQgY2F1c2UgY29uc3RydWN0b3IgdG8gdGhyb3cg
YXNzZXJ0X3Rocm93c19leGFjdGx5OiBjb25zdHJ1Y3RvciBzaG91bGQgdGhyb3cgZnVuY3Rpb24g
IigpID0+IG5ldyBXcml0YWJsZVN0cmVhbSh7CisgICAgZ2V0IGNsb3NlKCkgeworICAgICAgdGhy
b3cgZXJyb3IxOworICAgIH0KKyAgfSkiIGRpZCBub3QgdGhyb3cKK0ZBSUwgd3JpdGU6IHRocm93
aW5nIGdldHRlciBzaG91bGQgY2F1c2Ugd3JpdGUoKSBhbmQgY2xvc2VkIHRvIHJlamVjdCBhc3Nl
cnRfdGhyb3dzX2V4YWN0bHk6IGNvbnN0cnVjdG9yIHNob3VsZCB0aHJvdyBmdW5jdGlvbiAiKCkg
PT4gbmV3IFdyaXRhYmxlU3RyZWFtKHsKKyAgICBnZXQgd3JpdGUoKSB7CisgICAgICB0aHJvdyBl
cnJvcjE7CisgICAgfQorICB9KSIgZGlkIG5vdCB0aHJvdworRkFJTCB3cml0ZTogdGhyb3dpbmcg
bWV0aG9kIHNob3VsZCBjYXVzZSB3cml0ZSgpIGFuZCBjbG9zZWQgdG8gcmVqZWN0IHdzLmdldFdy
aXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0
ZXInIGlzIHVuZGVmaW5lZCkKK0ZBSUwgd3JpdGU6IHJldHVybmluZyBhIHByb21pc2UgdGhhdCBi
ZWNvbWVzIHJlamVjdGVkIGFmdGVyIHRoZSB3cml0ZXIgd3JpdGUoKSBzaG91bGQgY2F1c2Ugd3Jp
dGVyIHdyaXRlKCkgYW5kIHJlYWR5IHRvIHJlamVjdCBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCBy
ZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJUeXBlRXJyb3I6IHdzLmdldFdyaXRlciBpcyBu
b3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVu
ZGVmaW5lZCkiCitGQUlMIHdyaXRlOiByZXR1cm5pbmcgYSByZWplY3RlZCBwcm9taXNlIChzZWNv
bmQgd3JpdGUpIHNob3VsZCBjYXVzZSB3cml0ZXIgd3JpdGUoKSBhbmQgcmVhZHkgdG8gcmVqZWN0
IHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3
cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkKK0ZBSUwgYWJvcnQ6IG5vbi1mdW5jdGlvbiBhYm9y
dCBtZXRob2Qgd2l0aCAuYXBwbHkgYXNzZXJ0X3Rocm93c19qczogY29uc3RydWN0b3Igc2hvdWxk
IHRocm93IGZ1bmN0aW9uICIoKSA9PiBuZXcgV3JpdGFibGVTdHJlYW0oeworICAgIGFib3J0OiB7
IGFwcGx5KCkge30gfQorICB9KSIgZGlkIG5vdCB0aHJvdworRkFJTCBhYm9ydDogdGhyb3dpbmcg
Z2V0dGVyIHNob3VsZCBjYXVzZSBhYm9ydCgpIGFuZCBjbG9zZWQgdG8gcmVqZWN0IGFzc2VydF90
aHJvd3NfZXhhY3RseTogY29uc3RydWN0b3Igc2hvdWxkIHRocm93IGZ1bmN0aW9uICIoKSA9PiBu
ZXcgV3JpdGFibGVTdHJlYW0oeworICAgIGdldCBhYm9ydCgpIHsKKyAgICAgIHRocm93IGVycm9y
MTsKKyAgICB9CisgIH0pIiBkaWQgbm90IHRocm93CitGQUlMIGFib3J0OiB0aHJvd2luZyBtZXRo
b2Qgc2hvdWxkIGNhdXNlIGFib3J0KCkgYW5kIGNsb3NlZCB0byByZWplY3Qgd3MuZ2V0V3JpdGVy
IGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicg
aXMgdW5kZWZpbmVkKQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9iYWQtdW5kZXJseWluZy1z
aW5rcy5hbnkuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL2JhZC11bmRlcmx5aW5nLXNpbmtzLmFueS5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjIzODI5MTM1MjhlNjkzYjNhNWQ1NmM2NjBhNDUwNjA5ODBiNTQ4YzMKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9iYWQtdW5kZXJseWluZy1zaW5rcy5hbnkuaHRt
bApAQCAtMCwwICsxIEBACis8IS0tIFRoaXMgZmlsZSBpcyByZXF1aXJlZCBmb3IgV2ViS2l0IHRl
c3QgaW5mcmFzdHJ1Y3R1cmUgdG8gcnVuIHRoZSB0ZW1wbGF0ZWQgdGVzdCAtLT4KXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9iYWQtdW5kZXJseWlu
Zy1zaW5rcy5hbnkuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9iYWQtdW5kZXJseWluZy1zaW5rcy5hbnkuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uY2YwNGUwMWIwYzBjNGRhYTBiMTkzZTQ2ZmVlNjU4M2MwZWQ3Y2JhMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL2JhZC11bmRlcmx5aW5nLXNpbmtzLmFueS5qcwpA
QCAtMCwwICsxLDE4NiBAQAorLy8gTUVUQTogZ2xvYmFsPXdpbmRvdyx3b3JrZXIsanNzaGVsbAor
Ly8gTUVUQTogc2NyaXB0PS4uL3Jlc291cmNlcy90ZXN0LXV0aWxzLmpzCisvLyBNRVRBOiBzY3Jp
cHQ9Li4vcmVzb3VyY2VzL3JlY29yZGluZy1zdHJlYW1zLmpzCisndXNlIHN0cmljdCc7CisKK2Nv
bnN0IGVycm9yMSA9IG5ldyBFcnJvcignZXJyb3IxJyk7CitlcnJvcjEubmFtZSA9ICdlcnJvcjEn
OworCit0ZXN0KCgpID0+IHsKKyAgYXNzZXJ0X3Rocm93c19leGFjdGx5KGVycm9yMSwgKCkgPT4g
eworICAgIG5ldyBXcml0YWJsZVN0cmVhbSh7CisgICAgICBnZXQgc3RhcnQoKSB7CisgICAgICAg
IHRocm93IGVycm9yMTsKKyAgICAgIH0KKyAgICB9KTsKKyAgfSwgJ2NvbnN0cnVjdG9yIHNob3Vs
ZCB0aHJvdyBzYW1lIGVycm9yIGFzIHRocm93aW5nIHN0YXJ0IGdldHRlcicpOworCisgIGFzc2Vy
dF90aHJvd3NfZXhhY3RseShlcnJvcjEsICgpID0+IHsKKyAgICBuZXcgV3JpdGFibGVTdHJlYW0o
eworICAgICAgc3RhcnQoKSB7CisgICAgICAgIHRocm93IGVycm9yMTsKKyAgICAgIH0KKyAgICB9
KTsKKyAgfSwgJ2NvbnN0cnVjdG9yIHNob3VsZCB0aHJvdyBzYW1lIGVycm9yIGFzIHRocm93aW5n
IHN0YXJ0IG1ldGhvZCcpOworCisgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiB7
CisgICAgbmV3IFdyaXRhYmxlU3RyZWFtKHsKKyAgICAgIHN0YXJ0OiAnbm90IGEgZnVuY3Rpb24g
b3IgdW5kZWZpbmVkJworICAgIH0pOworICB9LCAnY29uc3RydWN0b3Igc2hvdWxkIHRocm93IFR5
cGVFcnJvciB3aGVuIHBhc3NlZCBhIG5vbi1mdW5jdGlvbiBzdGFydCBwcm9wZXJ0eScpOworCisg
IGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiB7CisgICAgbmV3IFdyaXRhYmxlU3Ry
ZWFtKHsKKyAgICAgIHN0YXJ0OiB7IGFwcGx5KCkge30gfQorICAgIH0pOworICB9LCAnY29uc3Ry
dWN0b3Igc2hvdWxkIHRocm93IFR5cGVFcnJvciB3aGVuIHBhc3NlZCBhIG5vbi1mdW5jdGlvbiBz
dGFydCBwcm9wZXJ0eSB3aXRoIGFuIC5hcHBseSBtZXRob2QnKTsKK30sICdzdGFydDogZXJyb3Jz
IGluIHN0YXJ0IGNhdXNlIFdyaXRhYmxlU3RyZWFtIGNvbnN0cnVjdG9yIHRvIHRocm93Jyk7CisK
K3Byb21pc2VfdGVzdCh0ID0+IHsKKworICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3Ry
ZWFtKHsKKyAgICBjbG9zZSgpIHsKKyAgICAgIHRocm93IGVycm9yMTsKKyAgICB9CisgIH0pOwor
CisgIGNvbnN0IHdyaXRlciA9IHdzLmdldFdyaXRlcigpOworCisgIHJldHVybiBwcm9taXNlX3Jl
amVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIHdyaXRlci5jbG9zZSgpLCAnY2xvc2UoKSBwcm9taXNl
IG11c3QgcmVqZWN0IHdpdGggdGhlIHRocm93biBlcnJvcicpCisgIC50aGVuKCgpID0+IHByb21p
c2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMSwgd3JpdGVyLnJlYWR5LCAncmVhZHkgcHJvbWlz
ZSBtdXN0IHJlamVjdCB3aXRoIHRoZSB0aHJvd24gZXJyb3InKSkKKyAgLnRoZW4oKCkgPT4gcHJv
bWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCB3cml0ZXIuY2xvc2VkLCAnY2xvc2VkIHBy
b21pc2UgbXVzdCByZWplY3Qgd2l0aCB0aGUgdGhyb3duIGVycm9yJykpCisgIC50aGVuKCgpID0+
IHsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWydjbG9zZSddKTsKKyAgfSk7
CisKK30sICdjbG9zZTogdGhyb3dpbmcgbWV0aG9kIHNob3VsZCBjYXVzZSB3cml0ZXIgY2xvc2Uo
KSBhbmQgcmVhZHkgdG8gcmVqZWN0Jyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKworICBjb25z
dCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKHsKKyAgICBjbG9zZSgpIHsKKyAgICAgIHJl
dHVybiBQcm9taXNlLnJlamVjdChlcnJvcjEpOworICAgIH0KKyAgfSk7CisKKyAgY29uc3Qgd3Jp
dGVyID0gd3MuZ2V0V3JpdGVyKCk7CisKKyAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19leGFjdGx5
KHQsIGVycm9yMSwgd3JpdGVyLmNsb3NlKCksICdjbG9zZSgpIHByb21pc2UgbXVzdCByZWplY3Qg
d2l0aCB0aGUgc2FtZSBlcnJvcicpCisgIC50aGVuKCgpID0+IHByb21pc2VfcmVqZWN0c19leGFj
dGx5KHQsIGVycm9yMSwgd3JpdGVyLnJlYWR5LCAncmVhZHkgcHJvbWlzZSBtdXN0IHJlamVjdCB3
aXRoIHRoZSBzYW1lIGVycm9yJykpCisgIC50aGVuKCgpID0+IGFzc2VydF9hcnJheV9lcXVhbHMo
d3MuZXZlbnRzLCBbJ2Nsb3NlJ10pKTsKKworfSwgJ2Nsb3NlOiByZXR1cm5pbmcgYSByZWplY3Rl
ZCBwcm9taXNlIHNob3VsZCBjYXVzZSB3cml0ZXIgY2xvc2UoKSBhbmQgcmVhZHkgdG8gcmVqZWN0
Jyk7CisKK3Rlc3QoKCkgPT4geworICBhc3NlcnRfdGhyb3dzX2V4YWN0bHkoZXJyb3IxLCAoKSA9
PiBuZXcgV3JpdGFibGVTdHJlYW0oeworICAgIGdldCBjbG9zZSgpIHsKKyAgICAgIHRocm93IGVy
cm9yMTsKKyAgICB9CisgIH0pLCAnY29uc3RydWN0b3Igc2hvdWxkIHRocm93Jyk7Cit9LCAnY2xv
c2U6IHRocm93aW5nIGdldHRlciBzaG91bGQgY2F1c2UgY29uc3RydWN0b3IgdG8gdGhyb3cnKTsK
KwordGVzdCgoKSA9PiB7CisgIGFzc2VydF90aHJvd3NfZXhhY3RseShlcnJvcjEsICgpID0+IG5l
dyBXcml0YWJsZVN0cmVhbSh7CisgICAgZ2V0IHdyaXRlKCkgeworICAgICAgdGhyb3cgZXJyb3Ix
OworICAgIH0KKyAgfSksICdjb25zdHJ1Y3RvciBzaG91bGQgdGhyb3cnKTsKK30sICd3cml0ZTog
dGhyb3dpbmcgZ2V0dGVyIHNob3VsZCBjYXVzZSB3cml0ZSgpIGFuZCBjbG9zZWQgdG8gcmVqZWN0
Jyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgY29uc3Qgd3MgPSBuZXcgV3JpdGFibGVTdHJl
YW0oeworICAgIHdyaXRlKCkgeworICAgICAgdGhyb3cgZXJyb3IxOworICAgIH0KKyAgfSk7CisK
KyAgY29uc3Qgd3JpdGVyID0gd3MuZ2V0V3JpdGVyKCk7CisKKyAgcmV0dXJuIHByb21pc2VfcmVq
ZWN0c19leGFjdGx5KHQsIGVycm9yMSwgd3JpdGVyLndyaXRlKCdhJyksICd3cml0ZSBzaG91bGQg
cmVqZWN0IHdpdGggdGhlIHRocm93biBlcnJvcicpCisgIC50aGVuKCgpID0+IHByb21pc2VfcmVq
ZWN0c19leGFjdGx5KHQsIGVycm9yMSwgd3JpdGVyLmNsb3NlZCwgJ2Nsb3NlZCBzaG91bGQgcmVq
ZWN0IHdpdGggdGhlIHRocm93biBlcnJvcicpKTsKK30sICd3cml0ZTogdGhyb3dpbmcgbWV0aG9k
IHNob3VsZCBjYXVzZSB3cml0ZSgpIGFuZCBjbG9zZWQgdG8gcmVqZWN0Jyk7CisKK3Byb21pc2Vf
dGVzdCh0ID0+IHsKKworICBsZXQgcmVqZWN0U2lua1dyaXRlUHJvbWlzZTsKKyAgY29uc3Qgd3Mg
PSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSh7CisgICAgd3JpdGUoKSB7CisgICAgICByZXR1cm4g
bmV3IFByb21pc2UoKHIsIHJlamVjdCkgPT4geworICAgICAgICByZWplY3RTaW5rV3JpdGVQcm9t
aXNlID0gcmVqZWN0OworICAgICAgfSk7CisgICAgfQorICB9KTsKKworICByZXR1cm4gZmx1c2hB
c3luY0V2ZW50cygpLnRoZW4oKCkgPT4geworICAgIGNvbnN0IHdyaXRlciA9IHdzLmdldFdyaXRl
cigpOworICAgIGNvbnN0IHdyaXRlUHJvbWlzZSA9IHdyaXRlci53cml0ZSgnYScpOworICAgIHJl
amVjdFNpbmtXcml0ZVByb21pc2UoZXJyb3IxKTsKKworICAgIHJldHVybiBQcm9taXNlLmFsbChb
CisgICAgICBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIHdyaXRlUHJvbWlzZSwg
J3dyaXRlciB3cml0ZSBtdXN0IHJlamVjdCB3aXRoIHRoZSBzYW1lIGVycm9yJyksCisgICAgICBw
cm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIHdyaXRlci5yZWFkeSwgJ3JlYWR5IHBy
b21pc2UgbXVzdCByZWplY3Qgd2l0aCB0aGUgc2FtZSBlcnJvcicpCisgICAgXSk7CisgIH0pCisg
IC50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWyd3cml0
ZScsICdhJ10pOworICB9KTsKKworfSwgJ3dyaXRlOiByZXR1cm5pbmcgYSBwcm9taXNlIHRoYXQg
YmVjb21lcyByZWplY3RlZCBhZnRlciB0aGUgd3JpdGVyIHdyaXRlKCkgc2hvdWxkIGNhdXNlIHdy
aXRlciB3cml0ZSgpIGFuZCByZWFkeSAnICsKKyAgICd0byByZWplY3QnKTsKKworcHJvbWlzZV90
ZXN0KHQgPT4geworCisgIGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0oeworICAg
IHdyaXRlKCkgeworICAgICAgaWYgKHdzLmV2ZW50cy5sZW5ndGggPT09IDIpIHsKKyAgICAgICAg
cmV0dXJuIGRlbGF5KDApOworICAgICAgfQorCisgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3Qo
ZXJyb3IxKTsKKyAgICB9CisgIH0pOworCisgIGNvbnN0IHdyaXRlciA9IHdzLmdldFdyaXRlcigp
OworCisgIC8vIERvIG5vdCB3YWl0IGZvciB0aGlzOyB3ZSB3YW50IHRvIHRlc3QgdGhlIHJlYWR5
IHByb21pc2Ugd2hlbiB0aGUgc3RyZWFtIGlzICJmdWxsIiAoZGVzaXJlZFNpemUgPSAwKSwgYnV0
IGlmIHdlIHdhaXQKKyAgLy8gdGhlbiB0aGUgc3RyZWFtIHdpbGwgdHJhbnNpdGlvbiBiYWNrIHRv
ICJlbXB0eSIgKGRlc2lyZWRTaXplID0gMSkKKyAgd3JpdGVyLndyaXRlKCdhJyk7CisgIGNvbnN0
IHJlYWR5UHJvbWlzZSA9IHdyaXRlci5yZWFkeTsKKworICByZXR1cm4gcHJvbWlzZV9yZWplY3Rz
X2V4YWN0bHkodCwgZXJyb3IxLCB3cml0ZXIud3JpdGUoJ2InKSwgJ3NlY29uZCB3cml0ZSBtdXN0
IHJlamVjdCB3aXRoIHRoZSBzYW1lIGVycm9yJykudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X2Vx
dWFscyh3cml0ZXIucmVhZHksIHJlYWR5UHJvbWlzZSwKKyAgICAgICd0aGUgcmVhZHkgcHJvbWlz
ZSBtdXN0IG5vdCBjaGFuZ2UsIHNpbmNlIHRoZSBxdWV1ZSB3YXMgZnVsbCBhZnRlciB0aGUgZmly
c3Qgd3JpdGUsIHNvIHRoZSBwZW5kaW5nIG9uZSBzaW1wbHkgJyArCisgICAgICAndHJhbnNpdGlv
bmVkJyk7CisgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMSwgd3Jp
dGVyLnJlYWR5LCAncmVhZHkgcHJvbWlzZSBtdXN0IHJlamVjdCB3aXRoIHRoZSBzYW1lIGVycm9y
Jyk7CisgIH0pCisgIC50aGVuKCgpID0+IGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBb
J3dyaXRlJywgJ2EnLCAnd3JpdGUnLCAnYiddKSk7CisKK30sICd3cml0ZTogcmV0dXJuaW5nIGEg
cmVqZWN0ZWQgcHJvbWlzZSAoc2Vjb25kIHdyaXRlKSBzaG91bGQgY2F1c2Ugd3JpdGVyIHdyaXRl
KCkgYW5kIHJlYWR5IHRvIHJlamVjdCcpOworCit0ZXN0KCgpID0+IHsKKyAgYXNzZXJ0X3Rocm93
c19qcyhUeXBlRXJyb3IsICgpID0+IG5ldyBXcml0YWJsZVN0cmVhbSh7CisgICAgYWJvcnQ6IHsg
YXBwbHkoKSB7fSB9CisgIH0pLCAnY29uc3RydWN0b3Igc2hvdWxkIHRocm93Jyk7Cit9LCAnYWJv
cnQ6IG5vbi1mdW5jdGlvbiBhYm9ydCBtZXRob2Qgd2l0aCAuYXBwbHknKTsKKwordGVzdCgoKSA9
PiB7CisgIGFzc2VydF90aHJvd3NfZXhhY3RseShlcnJvcjEsICgpID0+IG5ldyBXcml0YWJsZVN0
cmVhbSh7CisgICAgZ2V0IGFib3J0KCkgeworICAgICAgdGhyb3cgZXJyb3IxOworICAgIH0KKyAg
fSksICdjb25zdHJ1Y3RvciBzaG91bGQgdGhyb3cnKTsKK30sICdhYm9ydDogdGhyb3dpbmcgZ2V0
dGVyIHNob3VsZCBjYXVzZSBhYm9ydCgpIGFuZCBjbG9zZWQgdG8gcmVqZWN0Jyk7CisKK3Byb21p
c2VfdGVzdCh0ID0+IHsKKyAgY29uc3QgYWJvcnRSZWFzb24gPSBuZXcgRXJyb3IoJ2RpZmZlcmVu
dCBzdHJpbmcnKTsKKyAgY29uc3Qgd3MgPSBuZXcgV3JpdGFibGVTdHJlYW0oeworICAgIGFib3J0
KCkgeworICAgICAgdGhyb3cgZXJyb3IxOworICAgIH0KKyAgfSk7CisKKyAgY29uc3Qgd3JpdGVy
ID0gd3MuZ2V0V3JpdGVyKCk7CisKKyAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQs
IGVycm9yMSwgd3JpdGVyLmFib3J0KGFib3J0UmVhc29uKSwgJ2Fib3J0IHNob3VsZCByZWplY3Qg
d2l0aCB0aGUgdGhyb3duIGVycm9yJykKKyAgLnRoZW4oKCkgPT4gcHJvbWlzZV9yZWplY3RzX2V4
YWN0bHkodCwgYWJvcnRSZWFzb24sIHdyaXRlci5jbG9zZWQsICdjbG9zZWQgc2hvdWxkIHJlamVj
dCB3aXRoIGFib3J0UmVhc29uJykpOworfSwgJ2Fib3J0OiB0aHJvd2luZyBtZXRob2Qgc2hvdWxk
IGNhdXNlIGFib3J0KCkgYW5kIGNsb3NlZCB0byByZWplY3QnKTsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1z
dHJlYW1zL2JhZC11bmRlcmx5aW5nLXNpbmtzLmFueS53b3JrZXItZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxl
LXN0cmVhbXMvYmFkLXVuZGVybHlpbmctc2lua3MuYW55Lndvcmtlci1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMjMyNzcyMzVjMzcxZmNkYzFmNzc4NWUwNDc4Y2ZmMzE3ZmZjODEzNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL2JhZC11bmRlcmx5aW5nLXNpbmtzLmFueS53b3JrZXIt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMzUgQEAKKworRkFJTCBzdGFydDogZXJyb3JzIGluIHN0
YXJ0IGNhdXNlIFdyaXRhYmxlU3RyZWFtIGNvbnN0cnVjdG9yIHRvIHRocm93IGFzc2VydF90aHJv
d3NfZXhhY3RseTogY29uc3RydWN0b3Igc2hvdWxkIHRocm93IHNhbWUgZXJyb3IgYXMgdGhyb3dp
bmcgc3RhcnQgZ2V0dGVyIGZ1bmN0aW9uICIoKSA9PiB7CisgICAgbmV3IFdyaXRhYmxlU3RyZWFt
KHsKKyAgICAgIGdldCBzdGFydCgpIHsKKyAgICAgICAgdGhyb3cgZXJyb3IxOworICAgICAgfQor
ICAgIH0pOworICB9IiB0aHJldyBvYmplY3QgIlJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZh
cmlhYmxlOiBXcml0YWJsZVN0cmVhbSIgYnV0IHdlIGV4cGVjdGVkIGl0IHRvIHRocm93IG9iamVj
dCAiZXJyb3IxOiBlcnJvcjEiCitGQUlMIGNsb3NlOiB0aHJvd2luZyBtZXRob2Qgc2hvdWxkIGNh
dXNlIHdyaXRlciBjbG9zZSgpIGFuZCByZWFkeSB0byByZWplY3QgQ2FuJ3QgZmluZCB2YXJpYWJs
ZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgY2xvc2U6IHJldHVybmluZyBhIHJlamVjdGVkIHByb21p
c2Ugc2hvdWxkIGNhdXNlIHdyaXRlciBjbG9zZSgpIGFuZCByZWFkeSB0byByZWplY3QgQ2FuJ3Qg
ZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgY2xvc2U6IHRocm93aW5nIGdldHRl
ciBzaG91bGQgY2F1c2UgY29uc3RydWN0b3IgdG8gdGhyb3cgYXNzZXJ0X3Rocm93c19leGFjdGx5
OiBjb25zdHJ1Y3RvciBzaG91bGQgdGhyb3cgZnVuY3Rpb24gIigpID0+IG5ldyBXcml0YWJsZVN0
cmVhbSh7CisgICAgZ2V0IGNsb3NlKCkgeworICAgICAgdGhyb3cgZXJyb3IxOworICAgIH0KKyAg
fSkiIHRocmV3IG9iamVjdCAiUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IFdy
aXRhYmxlU3RyZWFtIiBidXQgd2UgZXhwZWN0ZWQgaXQgdG8gdGhyb3cgb2JqZWN0ICJlcnJvcjE6
IGVycm9yMSIKK0ZBSUwgd3JpdGU6IHRocm93aW5nIGdldHRlciBzaG91bGQgY2F1c2Ugd3JpdGUo
KSBhbmQgY2xvc2VkIHRvIHJlamVjdCBhc3NlcnRfdGhyb3dzX2V4YWN0bHk6IGNvbnN0cnVjdG9y
IHNob3VsZCB0aHJvdyBmdW5jdGlvbiAiKCkgPT4gbmV3IFdyaXRhYmxlU3RyZWFtKHsKKyAgICBn
ZXQgd3JpdGUoKSB7CisgICAgICB0aHJvdyBlcnJvcjE7CisgICAgfQorICB9KSIgdGhyZXcgb2Jq
ZWN0ICJSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0i
IGJ1dCB3ZSBleHBlY3RlZCBpdCB0byB0aHJvdyBvYmplY3QgImVycm9yMTogZXJyb3IxIgorRkFJ
TCB3cml0ZTogdGhyb3dpbmcgbWV0aG9kIHNob3VsZCBjYXVzZSB3cml0ZSgpIGFuZCBjbG9zZWQg
dG8gcmVqZWN0IENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIHdyaXRl
OiByZXR1cm5pbmcgYSBwcm9taXNlIHRoYXQgYmVjb21lcyByZWplY3RlZCBhZnRlciB0aGUgd3Jp
dGVyIHdyaXRlKCkgc2hvdWxkIGNhdXNlIHdyaXRlciB3cml0ZSgpIGFuZCByZWFkeSB0byByZWpl
Y3QgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgd3JpdGU6IHJldHVy
bmluZyBhIHJlamVjdGVkIHByb21pc2UgKHNlY29uZCB3cml0ZSkgc2hvdWxkIGNhdXNlIHdyaXRl
ciB3cml0ZSgpIGFuZCByZWFkeSB0byByZWplY3QgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFi
bGVTdHJlYW0KK0ZBSUwgYWJvcnQ6IG5vbi1mdW5jdGlvbiBhYm9ydCBtZXRob2Qgd2l0aCAuYXBw
bHkgYXNzZXJ0X3Rocm93c19qczogY29uc3RydWN0b3Igc2hvdWxkIHRocm93IGZ1bmN0aW9uICIo
KSA9PiBuZXcgV3JpdGFibGVTdHJlYW0oeworICAgIGFib3J0OiB7IGFwcGx5KCkge30gfQorICB9
KSIgdGhyZXcgb2JqZWN0ICJSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3Jp
dGFibGVTdHJlYW0iICgiUmVmZXJlbmNlRXJyb3IiKSBleHBlY3RlZCBpbnN0YW5jZSBvZiBmdW5j
dGlvbiAiZnVuY3Rpb24gVHlwZUVycm9yKCkgeworICAgIFtuYXRpdmUgY29kZV0KK30iICgiVHlw
ZUVycm9yIikKK0ZBSUwgYWJvcnQ6IHRocm93aW5nIGdldHRlciBzaG91bGQgY2F1c2UgYWJvcnQo
KSBhbmQgY2xvc2VkIHRvIHJlamVjdCBhc3NlcnRfdGhyb3dzX2V4YWN0bHk6IGNvbnN0cnVjdG9y
IHNob3VsZCB0aHJvdyBmdW5jdGlvbiAiKCkgPT4gbmV3IFdyaXRhYmxlU3RyZWFtKHsKKyAgICBn
ZXQgYWJvcnQoKSB7CisgICAgICB0aHJvdyBlcnJvcjE7CisgICAgfQorICB9KSIgdGhyZXcgb2Jq
ZWN0ICJSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0i
IGJ1dCB3ZSBleHBlY3RlZCBpdCB0byB0aHJvdyBvYmplY3QgImVycm9yMTogZXJyb3IxIgorRkFJ
TCBhYm9ydDogdGhyb3dpbmcgbWV0aG9kIHNob3VsZCBjYXVzZSBhYm9ydCgpIGFuZCBjbG9zZWQg
dG8gcmVqZWN0IENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93
cml0YWJsZS1zdHJlYW1zL2JhZC11bmRlcmx5aW5nLXNpbmtzLmFueS53b3JrZXIuaHRtbCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJs
ZS1zdHJlYW1zL2JhZC11bmRlcmx5aW5nLXNpbmtzLmFueS53b3JrZXIuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4yMzgyOTEzNTI4ZTY5M2IzYTVkNTZjNjYwYTQ1MDYwOTgwYjU0OGMzCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
L3dyaXRhYmxlLXN0cmVhbXMvYmFkLXVuZGVybHlpbmctc2lua3MuYW55Lndvcmtlci5odG1sCkBA
IC0wLDAgKzEgQEAKKzwhLS0gVGhpcyBmaWxlIGlzIHJlcXVpcmVkIGZvciBXZWJLaXQgdGVzdCBp
bmZyYXN0cnVjdHVyZSB0byBydW4gdGhlIHRlbXBsYXRlZCB0ZXN0IC0tPgpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL2J5dGUtbGVuZ3RoLXF1ZXVp
bmctc3RyYXRlZ3kuYW55LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL2J5dGUtbGVuZ3RoLXF1
ZXVpbmctc3RyYXRlZ3kuYW55LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMzJkYmQ5MzQ1NTZk
YzQzZDM4OWFjMTI5OWViYTY4NjUwMmE0YTRiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVh
bXMvYnl0ZS1sZW5ndGgtcXVldWluZy1zdHJhdGVneS5hbnktZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsMyBAQAorCitGQUlMIENsb3NpbmcgYSB3cml0YWJsZSBzdHJlYW0gd2l0aCBpbi1mbGlnaHQg
d3JpdGVzIGJlbG93IHRoZSBoaWdoIHdhdGVyIG1hcmsgZGVsYXlzIHRoZSBjbG9zZSBjYWxsIHBy
b3Blcmx5IHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0ZXIo
KScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVh
bXMvYnl0ZS1sZW5ndGgtcXVldWluZy1zdHJhdGVneS5hbnkuaHRtbCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL2J5
dGUtbGVuZ3RoLXF1ZXVpbmctc3RyYXRlZ3kuYW55Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjM4MjkxMzUy
OGU2OTNiM2E1ZDU2YzY2MGE0NTA2MDk4MGI1NDhjMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1z
dHJlYW1zL2J5dGUtbGVuZ3RoLXF1ZXVpbmctc3RyYXRlZ3kuYW55Lmh0bWwKQEAgLTAsMCArMSBA
QAorPCEtLSBUaGlzIGZpbGUgaXMgcmVxdWlyZWQgZm9yIFdlYktpdCB0ZXN0IGluZnJhc3RydWN0
dXJlIHRvIHJ1biB0aGUgdGVtcGxhdGVkIHRlc3QgLS0+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvYnl0ZS1sZW5ndGgtcXVldWluZy1zdHJhdGVn
eS5hbnkuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9ieXRlLWxlbmd0aC1xdWV1aW5nLXN0cmF0ZWd5LmFueS5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi45YTYxZGQ3Y2M2OTc4N2VhYmU5Y2ZmMmQ4ZTUwMGM2OTRmNGJlZWU3Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvYnl0ZS1sZW5ndGgtcXVldWluZy1zdHJhdGVn
eS5hbnkuanMKQEAgLTAsMCArMSwyOCBAQAorLy8gTUVUQTogZ2xvYmFsPXdpbmRvdyx3b3JrZXIs
anNzaGVsbAorJ3VzZSBzdHJpY3QnOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIGxldCBpc0Rv
bmUgPSBmYWxzZTsKKyAgY29uc3Qgd3MgPSBuZXcgV3JpdGFibGVTdHJlYW0oCisgICAgeworICAg
ICAgd3JpdGUoKSB7CisgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKKyAg
ICAgICAgICB0LnN0ZXBfdGltZW91dCgoKSA9PiB7CisgICAgICAgICAgICBpc0RvbmUgPSB0cnVl
OworICAgICAgICAgICAgcmVzb2x2ZSgpOworICAgICAgICAgIH0sIDIwMCk7CisgICAgICAgIH0p
OworICAgICAgfSwKKworICAgICAgY2xvc2UoKSB7CisgICAgICAgIGFzc2VydF90cnVlKGlzRG9u
ZSwgJ2Nsb3NlIGlzIG9ubHkgY2FsbGVkIG9uY2UgdGhlIHByb21pc2UgaGFzIGJlZW4gcmVzb2x2
ZWQnKTsKKyAgICAgIH0KKyAgICB9LAorICAgIG5ldyBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5
KHsgaGlnaFdhdGVyTWFyazogMTAyNCAqIDE2IH0pCisgICk7CisKKyAgY29uc3Qgd3JpdGVyID0g
d3MuZ2V0V3JpdGVyKCk7CisgIHdyaXRlci53cml0ZSh7IGJ5dGVMZW5ndGg6IDEwMjQgfSk7CisK
KyAgcmV0dXJuIHdyaXRlci5jbG9zZSgpOworfSwgJ0Nsb3NpbmcgYSB3cml0YWJsZSBzdHJlYW0g
d2l0aCBpbi1mbGlnaHQgd3JpdGVzIGJlbG93IHRoZSBoaWdoIHdhdGVyIG1hcmsgZGVsYXlzIHRo
ZSBjbG9zZSBjYWxsIHByb3Blcmx5Jyk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9ieXRlLWxl
bmd0aC1xdWV1aW5nLXN0cmF0ZWd5LmFueS53b3JrZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVh
bXMvYnl0ZS1sZW5ndGgtcXVldWluZy1zdHJhdGVneS5hbnkud29ya2VyLWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi45Zjc1NDFkNGQ4NGM5MWQ0ZTUxYzg5NjVkNGZkNjNlYTlmYWQ2NTY4Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvYnl0ZS1sZW5ndGgtcXVldWluZy1zdHJhdGVneS5h
bnkud29ya2VyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKKworRkFJTCBDbG9zaW5nIGEg
d3JpdGFibGUgc3RyZWFtIHdpdGggaW4tZmxpZ2h0IHdyaXRlcyBiZWxvdyB0aGUgaGlnaCB3YXRl
ciBtYXJrIGRlbGF5cyB0aGUgY2xvc2UgY2FsbCBwcm9wZXJseSBDYW4ndCBmaW5kIHZhcmlhYmxl
OiBXcml0YWJsZVN0cmVhbQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9ieXRlLWxlbmd0aC1x
dWV1aW5nLXN0cmF0ZWd5LmFueS53b3JrZXIuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL2J5dGUtbGVuZ3Ro
LXF1ZXVpbmctc3RyYXRlZ3kuYW55Lndvcmtlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzODI5MTM1Mjhl
NjkzYjNhNWQ1NmM2NjBhNDUwNjA5ODBiNTQ4YzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3Ry
ZWFtcy9ieXRlLWxlbmd0aC1xdWV1aW5nLXN0cmF0ZWd5LmFueS53b3JrZXIuaHRtbApAQCAtMCww
ICsxIEBACis8IS0tIFRoaXMgZmlsZSBpcyByZXF1aXJlZCBmb3IgV2ViS2l0IHRlc3QgaW5mcmFz
dHJ1Y3R1cmUgdG8gcnVuIHRoZSB0ZW1wbGF0ZWQgdGVzdCAtLT4KXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9jbG9zZS5hbnktZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dy
aXRhYmxlLXN0cmVhbXMvY2xvc2UuYW55LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZjE1NDUy
N2JlZWNjNDUxMzk0ZDRjZThjNmVkODU0ZjA1NmM0MTc2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxl
LXN0cmVhbXMvY2xvc2UuYW55LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDI3IEBACisKK0ZBSUwg
ZnVsZmlsbG1lbnQgdmFsdWUgb2Ygd3JpdGVyLmNsb3NlKCkgY2FsbCBtdXN0IGJlIHVuZGVmaW5l
ZCBldmVuIGlmIHRoZSB1bmRlcmx5aW5nIHNpbmsgcmV0dXJucyBhIG5vbi11bmRlZmluZWQgdmFs
dWUgd3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywg
J3dzLmdldFdyaXRlcicgaXMgdW5kZWZpbmVkKQorRkFJTCB3aGVuIHNpbmsgY2FsbHMgZXJyb3Ig
YXN5bmNocm9ub3VzbHkgd2hpbGUgc2luayBjbG9zZSBpcyBpbi1mbGlnaHQsIHRoZSBzdHJlYW0g
c2hvdWxkIG5vdCBiZWNvbWUgZXJyb3JlZCB3cy5nZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rpb24u
IChJbiAnd3MuZ2V0V3JpdGVyKCknLCAnd3MuZ2V0V3JpdGVyJyBpcyB1bmRlZmluZWQpCitGQUlM
IHdoZW4gc2luayBjYWxscyBlcnJvciBzeW5jaHJvbm91c2x5IHdoaWxlIGNsb3NpbmcsIHRoZSBz
dHJlYW0gc2hvdWxkIG5vdCBiZWNvbWUgZXJyb3JlZCB3cy5nZXRXcml0ZXIgaXMgbm90IGEgZnVu
Y3Rpb24uIChJbiAnd3MuZ2V0V3JpdGVyKCknLCAnd3MuZ2V0V3JpdGVyJyBpcyB1bmRlZmluZWQp
CitGQUlMIHdoZW4gdGhlIHNpbmsgdGhyb3dzIGR1cmluZyBjbG9zZSwgYW5kIHRoZSBjbG9zZSBp
cyByZXF1ZXN0ZWQgd2hpbGUgYSB3cml0ZSBpcyBzdGlsbCBpbi1mbGlnaHQsIHRoZSBzdHJlYW0g
c2hvdWxkIGJlY29tZSBlcnJvcmVkIGR1cmluZyB0aGUgY2xvc2Ugd3MuZ2V0V3JpdGVyIGlzIG5v
dCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicgaXMgdW5k
ZWZpbmVkKQorRkFJTCByZWxlYXNlTG9jayBvbiBhIHN0cmVhbSB3aXRoIGEgcGVuZGluZyB3cml0
ZSBpbiB3aGljaCB0aGUgc3RyZWFtIGhhcyBiZWVuIGVycm9yZWQgd3MuZ2V0V3JpdGVyIGlzIG5v
dCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicgaXMgdW5k
ZWZpbmVkKQorRkFJTCByZWxlYXNlTG9jayBvbiBhIHN0cmVhbSB3aXRoIGEgcGVuZGluZyBjbG9z
ZSBpbiB3aGljaCBjb250cm9sbGVyLmVycm9yKCkgd2FzIGNhbGxlZCB3cy5nZXRXcml0ZXIgaXMg
bm90IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3JpdGVyKCknLCAnd3MuZ2V0V3JpdGVyJyBpcyB1
bmRlZmluZWQpCitGQUlMIHdoZW4gY2xvc2UgaXMgY2FsbGVkIG9uIGEgV3JpdGFibGVTdHJlYW0g
aW4gd3JpdGFibGUgc3RhdGUsIHJlYWR5IHNob3VsZCByZXR1cm4gYSBmdWxmaWxsZWQgcHJvbWlz
ZSB3cy5nZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3JpdGVyKCknLCAn
d3MuZ2V0V3JpdGVyJyBpcyB1bmRlZmluZWQpCitGQUlMIHdoZW4gY2xvc2UgaXMgY2FsbGVkIG9u
IGEgV3JpdGFibGVTdHJlYW0gaW4gd2FpdGluZyBzdGF0ZSwgcmVhZHkgcHJvbWlzZSBzaG91bGQg
YmUgZnVsZmlsbGVkIHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRX
cml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkKK0ZBSUwgd2hlbiBjbG9zZSBp
cyBjYWxsZWQgb24gYSBXcml0YWJsZVN0cmVhbSBpbiB3YWl0aW5nIHN0YXRlLCByZWFkeSBzaG91
bGQgYmUgZnVsZmlsbGVkIGltbWVkaWF0ZWx5IGV2ZW4gaWYgY2xvc2UgdGFrZXMgYSBsb25nIHRp
bWUgd3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywg
J3dzLmdldFdyaXRlcicgaXMgdW5kZWZpbmVkKQorRkFJTCByZXR1cm5pbmcgYSB0aGVuYWJsZSBm
cm9tIGNsb3NlKCkgc2hvdWxkIHdvcmsgd3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAo
SW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicgaXMgdW5kZWZpbmVkKQorRkFJTCBy
ZWxlYXNlTG9jaygpIHNob3VsZCBub3QgY2hhbmdlIHRoZSByZXN1bHQgb2Ygc3luYyBjbG9zZSgp
IHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3
cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkKK0ZBSUwgcmVsZWFzZUxvY2soKSBzaG91bGQgbm90
IGNoYW5nZSB0aGUgcmVzdWx0IG9mIGFzeW5jIGNsb3NlKCkgd3MuZ2V0V3JpdGVyIGlzIG5vdCBh
IGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicgaXMgdW5kZWZp
bmVkKQorRkFJTCBjbG9zZSgpIHNob3VsZCBzZXQgc3RhdGUgdG8gQ0xPU0VEIGV2ZW4gaWYgd3Jp
dGVyIGhhcyBkZXRhY2hlZCB3cy5nZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3Mu
Z2V0V3JpdGVyKCknLCAnd3MuZ2V0V3JpdGVyJyBpcyB1bmRlZmluZWQpCitGQUlMIHRoZSBwcm9t
aXNlIHJldHVybmVkIGJ5IGFzeW5jIGFib3J0IGR1cmluZyBjbG9zZSBzaG91bGQgcmVzb2x2ZSB3
cy5nZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3JpdGVyKCknLCAnd3Mu
Z2V0V3JpdGVyJyBpcyB1bmRlZmluZWQpCitGQUlMIHByb21pc2VzIG11c3QgZnVsZmlsbC9yZWpl
Y3QgaW4gdGhlIGV4cGVjdGVkIG9yZGVyIG9uIGNsb3N1cmUgd3MuZ2V0V3JpdGVyIGlzIG5vdCBh
IGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicgaXMgdW5kZWZp
bmVkKQorRkFJTCBwcm9taXNlcyBtdXN0IGZ1bGZpbGwvcmVqZWN0IGluIHRoZSBleHBlY3RlZCBv
cmRlciBvbiBhYm9ydGVkIGNsb3N1cmUgcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9u
IHdpdGggdmFsdWU6IG9iamVjdCAiVHlwZUVycm9yOiB3cy5nZXRXcml0ZXIgaXMgbm90IGEgZnVu
Y3Rpb24uIChJbiAnd3MuZ2V0V3JpdGVyKCknLCAnd3MuZ2V0V3JpdGVyJyBpcyB1bmRlZmluZWQp
IgorRkFJTCBwcm9taXNlcyBtdXN0IGZ1bGZpbGwvcmVqZWN0IGluIHRoZSBleHBlY3RlZCBvcmRl
ciBvbiBhYm9ydGVkIGFuZCBlcnJvcmVkIGNsb3N1cmUgcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQg
cmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiVHlwZUVycm9yOiB3cy5nZXRXcml0ZXIgaXMg
bm90IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3JpdGVyKCknLCAnd3MuZ2V0V3JpdGVyJyBpcyB1
bmRlZmluZWQpIgorRkFJTCBjbG9zZSgpIHNob3VsZCBub3QgcmVqZWN0IHVudGlsIG5vIHNpbmsg
bWV0aG9kcyBhcmUgaW4gZmxpZ2h0IHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKElu
ICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkKK0ZBSUwgcmVh
ZHkgcHJvbWlzZSBzaG91bGQgYmUgaW5pdGlhbGlzZWQgYXMgZnVsZmlsbGVkIGZvciBhIHdyaXRl
ciBvbiBhIGNsb3NlZCBzdHJlYW0gd3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4g
J3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicgaXMgdW5kZWZpbmVkKQorRkFJTCBjbG9z
ZSgpIG9uIGEgd3JpdGFibGUgc3RyZWFtIHNob3VsZCB3b3JrIHdzLmdldFdyaXRlciBpcyBub3Qg
YSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVm
aW5lZCkKK0ZBSUwgY2xvc2UoKSBvbiBhIGxvY2tlZCBzdHJlYW0gc2hvdWxkIHJlamVjdCB3cy5n
ZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3JpdGVyKCknLCAnd3MuZ2V0
V3JpdGVyJyBpcyB1bmRlZmluZWQpCitGQUlMIGNsb3NlKCkgb24gYW4gZXJyb3Jpbmcgc3RyZWFt
IHNob3VsZCByZWplY3QgY29udHJvbGxlci5lcnJvciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICdj
b250cm9sbGVyLmVycm9yKGVycm9yMSknLCAnY29udHJvbGxlci5lcnJvcicgaXMgdW5kZWZpbmVk
KQorRkFJTCBjbG9zZSgpIG9uIGFuIGVycm9yZWQgc3RyZWFtIHNob3VsZCByZWplY3QgY29udHJv
bGxlci5lcnJvciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICdjb250cm9sbGVyLmVycm9yKGVycm9y
MSknLCAnY29udHJvbGxlci5lcnJvcicgaXMgdW5kZWZpbmVkKQorRkFJTCBjbG9zZSgpIG9uIGFu
IGNsb3NlZCBzdHJlYW0gc2hvdWxkIHJlamVjdCB3cy5nZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rp
b24uIChJbiAnd3MuZ2V0V3JpdGVyKCknLCAnd3MuZ2V0V3JpdGVyJyBpcyB1bmRlZmluZWQpCitG
QUlMIGNsb3NlKCkgb24gYSBzdHJlYW0gd2l0aCBhIHBlbmRpbmcgY2xvc2Ugc2hvdWxkIHJlamVj
dCB3cy5nZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3JpdGVyKCknLCAn
d3MuZ2V0V3JpdGVyJyBpcyB1bmRlZmluZWQpCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL2Ns
b3NlLmFueS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvY2xvc2UuYW55Lmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjM4
MjkxMzUyOGU2OTNiM2E1ZDU2YzY2MGE0NTA2MDk4MGI1NDhjMwotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0
YWJsZS1zdHJlYW1zL2Nsb3NlLmFueS5odG1sCkBAIC0wLDAgKzEgQEAKKzwhLS0gVGhpcyBmaWxl
IGlzIHJlcXVpcmVkIGZvciBXZWJLaXQgdGVzdCBpbmZyYXN0cnVjdHVyZSB0byBydW4gdGhlIHRl
bXBsYXRlZCB0ZXN0IC0tPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0
YWJsZS1zdHJlYW1zL2Nsb3NlLmFueS5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL2Nsb3NlLmFueS5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5jZjk5N2VkODRjZGNhYzA2NDQ5ZmQxNmRlMThmNWFkM2U3MTZlOGVhCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
dHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvY2xvc2UuYW55LmpzCkBAIC0wLDAgKzEsNDcwIEBACisv
LyBNRVRBOiBnbG9iYWw9d2luZG93LHdvcmtlcixqc3NoZWxsCisvLyBNRVRBOiBzY3JpcHQ9Li4v
cmVzb3VyY2VzL3Rlc3QtdXRpbHMuanMKKy8vIE1FVEE6IHNjcmlwdD0uLi9yZXNvdXJjZXMvcmVj
b3JkaW5nLXN0cmVhbXMuanMKKyd1c2Ugc3RyaWN0JzsKKworY29uc3QgZXJyb3IxID0gbmV3IEVy
cm9yKCdlcnJvcjEnKTsKK2Vycm9yMS5uYW1lID0gJ2Vycm9yMSc7CisKK2NvbnN0IGVycm9yMiA9
IG5ldyBFcnJvcignZXJyb3IyJyk7CitlcnJvcjIubmFtZSA9ICdlcnJvcjInOworCitwcm9taXNl
X3Rlc3QoKCkgPT4geworICBjb25zdCB3cyA9IG5ldyBXcml0YWJsZVN0cmVhbSh7CisgICAgY2xv
c2UoKSB7CisgICAgICByZXR1cm4gJ0hlbGxvJzsKKyAgICB9CisgIH0pOworCisgIGNvbnN0IHdy
aXRlciA9IHdzLmdldFdyaXRlcigpOworCisgIGNvbnN0IGNsb3NlUHJvbWlzZSA9IHdyaXRlci5j
bG9zZSgpOworICByZXR1cm4gY2xvc2VQcm9taXNlLnRoZW4odmFsdWUgPT4gYXNzZXJ0X2VxdWFs
cyh2YWx1ZSwgdW5kZWZpbmVkLCAnZnVsZmlsbG1lbnQgdmFsdWUgbXVzdCBiZSB1bmRlZmluZWQn
KSk7Cit9LCAnZnVsZmlsbG1lbnQgdmFsdWUgb2Ygd3JpdGVyLmNsb3NlKCkgY2FsbCBtdXN0IGJl
IHVuZGVmaW5lZCBldmVuIGlmIHRoZSB1bmRlcmx5aW5nIHNpbmsgcmV0dXJucyBhIG5vbi11bmRl
ZmluZWQgJyArCisgICAgJ3ZhbHVlJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisgIGxldCBj
b250cm9sbGVyOworICBsZXQgcmVzb2x2ZUNsb3NlOworICBjb25zdCB3cyA9IG5ldyBXcml0YWJs
ZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgY29udHJvbGxlciA9IGM7CisgICAgfSwK
KyAgICBjbG9zZSgpIHsKKyAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKKyAg
ICAgICAgcmVzb2x2ZUNsb3NlID0gcmVzb2x2ZTsKKyAgICAgIH0pOworICAgIH0KKyAgfSk7CisK
KyAgY29uc3Qgd3JpdGVyID0gd3MuZ2V0V3JpdGVyKCk7CisKKyAgY29uc3QgY2xvc2VQcm9taXNl
ID0gd3JpdGVyLmNsb3NlKCk7CisgIHJldHVybiBmbHVzaEFzeW5jRXZlbnRzKCkudGhlbigoKSA9
PiB7CisgICAgY29udHJvbGxlci5lcnJvcihlcnJvcjEpOworICAgIHJldHVybiBmbHVzaEFzeW5j
RXZlbnRzKCk7CisgIH0pLnRoZW4oKCkgPT4geworICAgIHJlc29sdmVDbG9zZSgpOworICAgIHJl
dHVybiBQcm9taXNlLmFsbChbCisgICAgICBjbG9zZVByb21pc2UsCisgICAgICB3cml0ZXIuY2xv
c2VkLAorICAgICAgZmx1c2hBc3luY0V2ZW50cygpLnRoZW4oKCkgPT4gd3JpdGVyLmNsb3NlZCld
KTsKKyAgfSk7Cit9LCAnd2hlbiBzaW5rIGNhbGxzIGVycm9yIGFzeW5jaHJvbm91c2x5IHdoaWxl
IHNpbmsgY2xvc2UgaXMgaW4tZmxpZ2h0LCB0aGUgc3RyZWFtIHNob3VsZCBub3QgYmVjb21lIGVy
cm9yZWQnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgbGV0IGNvbnRyb2xsZXI7CisgIGNv
bnN0IHBhc3NlZEVycm9yID0gbmV3IEVycm9yKCdlcnJvciBtZScpOworICBjb25zdCB3cyA9IG5l
dyBXcml0YWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgY29udHJvbGxlciA9IGM7
CisgICAgfSwKKyAgICBjbG9zZSgpIHsKKyAgICAgIGNvbnRyb2xsZXIuZXJyb3IocGFzc2VkRXJy
b3IpOworICAgIH0KKyAgfSk7CisKKyAgY29uc3Qgd3JpdGVyID0gd3MuZ2V0V3JpdGVyKCk7CisK
KyAgcmV0dXJuIHdyaXRlci5jbG9zZSgpLnRoZW4oKCkgPT4gd3JpdGVyLmNsb3NlZCk7Cit9LCAn
d2hlbiBzaW5rIGNhbGxzIGVycm9yIHN5bmNocm9ub3VzbHkgd2hpbGUgY2xvc2luZywgdGhlIHN0
cmVhbSBzaG91bGQgbm90IGJlY29tZSBlcnJvcmVkJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsK
KyAgY29uc3Qgd3MgPSBuZXcgV3JpdGFibGVTdHJlYW0oeworICAgIGNsb3NlKCkgeworICAgICAg
dGhyb3cgZXJyb3IxOworICAgIH0KKyAgfSk7CisKKyAgY29uc3Qgd3JpdGVyID0gd3MuZ2V0V3Jp
dGVyKCk7CisKKyAgcmV0dXJuIFByb21pc2UuYWxsKFsKKyAgICB3cml0ZXIud3JpdGUoJ3knKSwK
KyAgICBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIHdyaXRlci5jbG9zZSgpLCAn
Y2xvc2UoKSBtdXN0IHJlamVjdCB3aXRoIHRoZSBlcnJvcicpLAorICAgIHByb21pc2VfcmVqZWN0
c19leGFjdGx5KHQsIGVycm9yMSwgd3JpdGVyLmNsb3NlZCwgJ2Nsb3NlZCBtdXN0IHJlamVjdCB3
aXRoIHRoZSBlcnJvcicpCisgIF0pOworfSwgJ3doZW4gdGhlIHNpbmsgdGhyb3dzIGR1cmluZyBj
bG9zZSwgYW5kIHRoZSBjbG9zZSBpcyByZXF1ZXN0ZWQgd2hpbGUgYSB3cml0ZSBpcyBzdGlsbCBp
bi1mbGlnaHQsIHRoZSBzdHJlYW0gc2hvdWxkICcgKworICAgJ2JlY29tZSBlcnJvcmVkIGR1cmlu
ZyB0aGUgY2xvc2UnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgY29uc3Qgd3MgPSBuZXcg
V3JpdGFibGVTdHJlYW0oeworICAgIHdyaXRlKGNodW5rLCBjb250cm9sbGVyKSB7CisgICAgICBj
b250cm9sbGVyLmVycm9yKGVycm9yMSk7CisgICAgICByZXR1cm4gbmV3IFByb21pc2UoKCkgPT4g
e30pOworICAgIH0KKyAgfSk7CisKKyAgY29uc3Qgd3JpdGVyID0gd3MuZ2V0V3JpdGVyKCk7Cisg
IHdyaXRlci53cml0ZSgnYScpOworCisgIHJldHVybiBkZWxheSgwKS50aGVuKCgpID0+IHsKKyAg
ICB3cml0ZXIucmVsZWFzZUxvY2soKTsKKyAgfSk7Cit9LCAncmVsZWFzZUxvY2sgb24gYSBzdHJl
YW0gd2l0aCBhIHBlbmRpbmcgd3JpdGUgaW4gd2hpY2ggdGhlIHN0cmVhbSBoYXMgYmVlbiBlcnJv
cmVkJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisgIGxldCBjb250cm9sbGVyOworICBjb25z
dCB3cyA9IG5ldyBXcml0YWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgY29udHJv
bGxlciA9IGM7CisgICAgfSwKKyAgICBjbG9zZSgpIHsKKyAgICAgIGNvbnRyb2xsZXIuZXJyb3Io
ZXJyb3IxKTsKKyAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgoKSA9PiB7fSk7CisgICAgfQorICB9
KTsKKworICBjb25zdCB3cml0ZXIgPSB3cy5nZXRXcml0ZXIoKTsKKyAgd3JpdGVyLmNsb3NlKCk7
CisKKyAgcmV0dXJuIGRlbGF5KDApLnRoZW4oKCkgPT4geworICAgIHdyaXRlci5yZWxlYXNlTG9j
aygpOworICB9KTsKK30sICdyZWxlYXNlTG9jayBvbiBhIHN0cmVhbSB3aXRoIGEgcGVuZGluZyBj
bG9zZSBpbiB3aGljaCBjb250cm9sbGVyLmVycm9yKCkgd2FzIGNhbGxlZCcpOworCitwcm9taXNl
X3Rlc3QoKCkgPT4geworICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKCk7CisK
KyAgY29uc3Qgd3JpdGVyID0gd3MuZ2V0V3JpdGVyKCk7CisKKyAgcmV0dXJuIHdyaXRlci5yZWFk
eS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfZXF1YWxzKHdyaXRlci5kZXNpcmVkU2l6ZSwgMSwg
J2Rlc2lyZWRTaXplIHNob3VsZCBiZSAxJyk7CisKKyAgICB3cml0ZXIuY2xvc2UoKTsKKyAgICBh
c3NlcnRfZXF1YWxzKHdyaXRlci5kZXNpcmVkU2l6ZSwgMSwgJ2Rlc2lyZWRTaXplIHNob3VsZCBi
ZSBzdGlsbCAxJyk7CisKKyAgICByZXR1cm4gd3JpdGVyLnJlYWR5LnRoZW4odiA9PiB7CisgICAg
ICBhc3NlcnRfZXF1YWxzKHYsIHVuZGVmaW5lZCwgJ3JlYWR5IHByb21pc2Ugc2hvdWxkIGJlIGZ1
bGZpbGxlZCB3aXRoIHVuZGVmaW5lZCcpOworICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5l
dmVudHMsIFsnY2xvc2UnXSwgJ3dyaXRlIGFuZCBhYm9ydCBzaG91bGQgbm90IGJlIGNhbGxlZCcp
OworICAgIH0pOworICB9KTsKK30sICd3aGVuIGNsb3NlIGlzIGNhbGxlZCBvbiBhIFdyaXRhYmxl
U3RyZWFtIGluIHdyaXRhYmxlIHN0YXRlLCByZWFkeSBzaG91bGQgcmV0dXJuIGEgZnVsZmlsbGVk
IHByb21pc2UnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgY29uc3Qgd3MgPSByZWNvcmRp
bmdXcml0YWJsZVN0cmVhbSh7CisgICAgd3JpdGUoKSB7CisgICAgICByZXR1cm4gbmV3IFByb21p
c2UoKCkgPT4ge30pOworICAgIH0KKyAgfSk7CisKKyAgY29uc3Qgd3JpdGVyID0gd3MuZ2V0V3Jp
dGVyKCk7CisKKyAgcmV0dXJuIHdyaXRlci5yZWFkeS50aGVuKCgpID0+IHsKKyAgICB3cml0ZXIu
d3JpdGUoJ2EnKTsKKworICAgIGFzc2VydF9lcXVhbHMod3JpdGVyLmRlc2lyZWRTaXplLCAwLCAn
ZGVzaXJlZFNpemUgc2hvdWxkIGJlIDAnKTsKKworICAgIGxldCBjYWxsZWRDbG9zZSA9IGZhbHNl
OworICAgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAgICB3cml0ZXIucmVhZHkudGhlbih2ID0+
IHsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyh2LCB1bmRlZmluZWQsICdyZWFkeSBwcm9taXNlIHNo
b3VsZCBiZSBmdWxmaWxsZWQgd2l0aCB1bmRlZmluZWQnKTsKKyAgICAgICAgYXNzZXJ0X3RydWUo
Y2FsbGVkQ2xvc2UsICdyZWFkeSBzaG91bGQgbm90IGJlIGZ1bGZpbGxlZCBiZWZvcmUgd3JpdGVy
LmNsb3NlKCkgaXMgY2FsbGVkJyk7CisgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZl
bnRzLCBbJ3dyaXRlJywgJ2EnXSwgJ3NpbmsgYWJvcnQoKSBzaG91bGQgbm90IGJlIGNhbGxlZCcp
OworICAgICAgfSksCisgICAgICBmbHVzaEFzeW5jRXZlbnRzKCkudGhlbigoKSA9PiB7CisgICAg
ICAgIHdyaXRlci5jbG9zZSgpOworICAgICAgICBjYWxsZWRDbG9zZSA9IHRydWU7CisgICAgICB9
KQorICAgIF0pOworICB9KTsKK30sICd3aGVuIGNsb3NlIGlzIGNhbGxlZCBvbiBhIFdyaXRhYmxl
U3RyZWFtIGluIHdhaXRpbmcgc3RhdGUsIHJlYWR5IHByb21pc2Ugc2hvdWxkIGJlIGZ1bGZpbGxl
ZCcpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworICBsZXQgYXN5bmNDbG9zZUZpbmlzaGVkID0g
ZmFsc2U7CisgIGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0oeworICAgIGNsb3Nl
KCkgeworICAgICAgcmV0dXJuIGZsdXNoQXN5bmNFdmVudHMoKS50aGVuKCgpID0+IHsKKyAgICAg
ICAgYXN5bmNDbG9zZUZpbmlzaGVkID0gdHJ1ZTsKKyAgICAgIH0pOworICAgIH0KKyAgfSk7CisK
KyAgY29uc3Qgd3JpdGVyID0gd3MuZ2V0V3JpdGVyKCk7CisgIHJldHVybiB3cml0ZXIucmVhZHku
dGhlbigoKSA9PiB7CisgICAgd3JpdGVyLndyaXRlKCdhJyk7CisKKyAgICB3cml0ZXIuY2xvc2Uo
KTsKKworICAgIHJldHVybiB3cml0ZXIucmVhZHkudGhlbih2ID0+IHsKKyAgICAgIGFzc2VydF9m
YWxzZShhc3luY0Nsb3NlRmluaXNoZWQsICdyZWFkeSBwcm9taXNlIHNob3VsZCBiZSBmdWxmaWxs
ZWQgYmVmb3JlIGFzeW5jIGNsb3NlIGNvbXBsZXRlcycpOworICAgICAgYXNzZXJ0X2VxdWFscyh2
LCB1bmRlZmluZWQsICdyZWFkeSBwcm9taXNlIHNob3VsZCBiZSBmdWxmaWxsZWQgd2l0aCB1bmRl
ZmluZWQnKTsKKyAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ3dyaXRlJywg
J2EnLCAnY2xvc2UnXSwgJ3NpbmsgYWJvcnQoKSBzaG91bGQgbm90IGJlIGNhbGxlZCcpOworICAg
IH0pOworICB9KTsKK30sICd3aGVuIGNsb3NlIGlzIGNhbGxlZCBvbiBhIFdyaXRhYmxlU3RyZWFt
IGluIHdhaXRpbmcgc3RhdGUsIHJlYWR5IHNob3VsZCBiZSBmdWxmaWxsZWQgaW1tZWRpYXRlbHkg
ZXZlbiBpZiBjbG9zZSAnICsKKyAgICAndGFrZXMgYSBsb25nIHRpbWUnKTsKKworcHJvbWlzZV90
ZXN0KHQgPT4geworICBjb25zdCByZWplY3Rpb24gPSB7IG5hbWU6ICdsZXR0ZXInIH07CisgIGNv
bnN0IHdzID0gbmV3IFdyaXRhYmxlU3RyZWFtKHsKKyAgICBjbG9zZSgpIHsKKyAgICAgIHJldHVy
biB7CisgICAgICAgIHRoZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpIHsgb25SZWplY3RlZChy
ZWplY3Rpb24pOyB9CisgICAgICB9OworICAgIH0KKyAgfSk7CisgIHJldHVybiBwcm9taXNlX3Jl
amVjdHNfZXhhY3RseSh0LCByZWplY3Rpb24sIHdzLmdldFdyaXRlcigpLmNsb3NlKCksICdjbG9z
ZSgpIHNob3VsZCByZXR1cm4gYSByZWplY3Rpb24nKTsKK30sICdyZXR1cm5pbmcgYSB0aGVuYWJs
ZSBmcm9tIGNsb3NlKCkgc2hvdWxkIHdvcmsnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBj
b25zdCB3cyA9IG5ldyBXcml0YWJsZVN0cmVhbSgpOworICBjb25zdCB3cml0ZXIgPSB3cy5nZXRX
cml0ZXIoKTsKKyAgcmV0dXJuIHdyaXRlci5yZWFkeS50aGVuKCgpID0+IHsKKyAgICBjb25zdCBj
bG9zZVByb21pc2UgPSB3cml0ZXIuY2xvc2UoKTsKKyAgICBjb25zdCBjbG9zZWRQcm9taXNlID0g
d3JpdGVyLmNsb3NlZDsKKyAgICB3cml0ZXIucmVsZWFzZUxvY2soKTsKKyAgICByZXR1cm4gUHJv
bWlzZS5hbGwoWworICAgICAgY2xvc2VQcm9taXNlLAorICAgICAgcHJvbWlzZV9yZWplY3RzX2pz
KHQsIFR5cGVFcnJvciwgY2xvc2VkUHJvbWlzZSwgJy5jbG9zZWQgcHJvbWlzZSBzaG91bGQgYmUg
cmVqZWN0ZWQnKQorICAgIF0pOworICB9KTsKK30sICdyZWxlYXNlTG9jaygpIHNob3VsZCBub3Qg
Y2hhbmdlIHRoZSByZXN1bHQgb2Ygc3luYyBjbG9zZSgpJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+
IHsKKyAgY29uc3Qgd3MgPSBuZXcgV3JpdGFibGVTdHJlYW0oeworICAgIGNsb3NlKCkgeworICAg
ICAgcmV0dXJuIGZsdXNoQXN5bmNFdmVudHMoKTsKKyAgICB9CisgIH0pOworICBjb25zdCB3cml0
ZXIgPSB3cy5nZXRXcml0ZXIoKTsKKyAgcmV0dXJuIHdyaXRlci5yZWFkeS50aGVuKCgpID0+IHsK
KyAgICBjb25zdCBjbG9zZVByb21pc2UgPSB3cml0ZXIuY2xvc2UoKTsKKyAgICBjb25zdCBjbG9z
ZWRQcm9taXNlID0gd3JpdGVyLmNsb3NlZDsKKyAgICB3cml0ZXIucmVsZWFzZUxvY2soKTsKKyAg
ICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAgICAgY2xvc2VQcm9taXNlLAorICAgICAgcHJvbWlz
ZV9yZWplY3RzX2pzKHQsIFR5cGVFcnJvciwgY2xvc2VkUHJvbWlzZSwgJy5jbG9zZWQgcHJvbWlz
ZSBzaG91bGQgYmUgcmVqZWN0ZWQnKQorICAgIF0pOworICB9KTsKK30sICdyZWxlYXNlTG9jaygp
IHNob3VsZCBub3QgY2hhbmdlIHRoZSByZXN1bHQgb2YgYXN5bmMgY2xvc2UoKScpOworCitwcm9t
aXNlX3Rlc3QoKCkgPT4geworICBsZXQgcmVzb2x2ZUNsb3NlOworICBjb25zdCB3cyA9IG5ldyBX
cml0YWJsZVN0cmVhbSh7CisgICAgY2xvc2UoKSB7CisgICAgICBjb25zdCBwcm9taXNlID0gbmV3
IFByb21pc2UocmVzb2x2ZSA9PiB7CisgICAgICAgIHJlc29sdmVDbG9zZSA9IHJlc29sdmU7Cisg
ICAgICB9KTsKKyAgICAgIHJldHVybiBwcm9taXNlOworICAgIH0KKyAgfSk7CisgIGNvbnN0IHdy
aXRlciA9IHdzLmdldFdyaXRlcigpOworICBjb25zdCBjbG9zZVByb21pc2UgPSB3cml0ZXIuY2xv
c2UoKTsKKyAgd3JpdGVyLnJlbGVhc2VMb2NrKCk7CisgIHJldHVybiBkZWxheSgwKS50aGVuKCgp
ID0+IHsKKyAgICByZXNvbHZlQ2xvc2UoKTsKKyAgICByZXR1cm4gY2xvc2VQcm9taXNlLnRoZW4o
KCkgPT4geworICAgICAgYXNzZXJ0X2VxdWFscyh3cy5nZXRXcml0ZXIoKS5kZXNpcmVkU2l6ZSwg
MCwgJ2Rlc2lyZWRTaXplIHNob3VsZCBiZSAwJyk7CisgICAgfSk7CisgIH0pOworfSwgJ2Nsb3Nl
KCkgc2hvdWxkIHNldCBzdGF0ZSB0byBDTE9TRUQgZXZlbiBpZiB3cml0ZXIgaGFzIGRldGFjaGVk
Jyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisgIGxldCByZXNvbHZlQ2xvc2U7CisgIGNvbnN0
IHdzID0gbmV3IFdyaXRhYmxlU3RyZWFtKHsKKyAgICBjbG9zZSgpIHsKKyAgICAgIGNvbnN0IHBy
b21pc2UgPSBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKKyAgICAgICAgcmVzb2x2ZUNsb3NlID0g
cmVzb2x2ZTsKKyAgICAgIH0pOworICAgICAgcmV0dXJuIHByb21pc2U7CisgICAgfQorICB9KTsK
KyAgY29uc3Qgd3JpdGVyID0gd3MuZ2V0V3JpdGVyKCk7CisgIHdyaXRlci5jbG9zZSgpOworICB3
cml0ZXIucmVsZWFzZUxvY2soKTsKKyAgcmV0dXJuIGRlbGF5KDApLnRoZW4oKCkgPT4geworICAg
IGNvbnN0IGFib3J0aW5nV3JpdGVyID0gd3MuZ2V0V3JpdGVyKCk7CisgICAgY29uc3QgYWJvcnRQ
cm9taXNlID0gYWJvcnRpbmdXcml0ZXIuYWJvcnQoKTsKKyAgICBhYm9ydGluZ1dyaXRlci5yZWxl
YXNlTG9jaygpOworICAgIHJlc29sdmVDbG9zZSgpOworICAgIHJldHVybiBhYm9ydFByb21pc2U7
CisgIH0pOworfSwgJ3RoZSBwcm9taXNlIHJldHVybmVkIGJ5IGFzeW5jIGFib3J0IGR1cmluZyBj
bG9zZSBzaG91bGQgcmVzb2x2ZScpOworCisvLyBUaG91Z2ggdGhlIG9yZGVyIGluIHdoaWNoIHRo
ZSBwcm9taXNlcyBhcmUgZnVsZmlsbGVkIG9yIHJlamVjdGVkIGlzIGFyYml0cmFyeSwgd2UncmUg
Y2hlY2tpbmcgaXQgZm9yCisvLyBpbnRlcm9wZXJhYmlsaXR5LiBXZSBjYW4gY2hhbmdlIHRoZSBv
cmRlciBhcyBsb25nIGFzIHdlIGZpbGUgYnVncyBvbiBhbGwgaW1wbGVtZW50ZXJzIHRvIHVwZGF0
ZSB0byB0aGUgbGF0ZXN0IHRlc3RzCisvLyB0byBrZWVwIHRoZW0gaW50ZXJvcGVyYWJsZS4KKwor
cHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgY29uc3Qgd3MgPSBuZXcgV3JpdGFibGVTdHJlYW0oe30p
OworCisgIGNvbnN0IHdyaXRlciA9IHdzLmdldFdyaXRlcigpOworCisgIGNvbnN0IGNsb3NlUHJv
bWlzZSA9IHdyaXRlci5jbG9zZSgpOworCisgIGNvbnN0IGV2ZW50cyA9IFtdOworICByZXR1cm4g
UHJvbWlzZS5hbGwoWworICAgIGNsb3NlUHJvbWlzZS50aGVuKCgpID0+IHsKKyAgICAgIGV2ZW50
cy5wdXNoKCdjbG9zZVByb21pc2UnKTsKKyAgICB9KSwKKyAgICB3cml0ZXIuY2xvc2VkLnRoZW4o
KCkgPT4geworICAgICAgZXZlbnRzLnB1c2goJ2Nsb3NlZCcpOworICAgIH0pCisgIF0pLnRoZW4o
KCkgPT4geworICAgIGFzc2VydF9hcnJheV9lcXVhbHMoZXZlbnRzLCBbJ2Nsb3NlUHJvbWlzZScs
ICdjbG9zZWQnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICdwcm9taXNlcyBtdXN0IGZ1bGZp
bGwvcmVqZWN0IGluIHRoZSBleHBlY3RlZCBvcmRlcicpOworICB9KTsKK30sICdwcm9taXNlcyBt
dXN0IGZ1bGZpbGwvcmVqZWN0IGluIHRoZSBleHBlY3RlZCBvcmRlciBvbiBjbG9zdXJlJyk7CisK
K3Byb21pc2VfdGVzdCgoKSA9PiB7CisgIGNvbnN0IHdzID0gbmV3IFdyaXRhYmxlU3RyZWFtKHt9
KTsKKworICAvLyBXYWl0IHVudGlsIHRoZSBXcml0YWJsZVN0cmVhbSBzdGFydHMgc28gdGhhdCB0
aGUgY2xvc2UoKSBjYWxsIGdldHMgcHJvY2Vzc2VkLiBPdGhlcndpc2UsIGFib3J0KCkgd2lsbCBi
ZQorICAvLyBwcm9jZXNzZWQgd2l0aG91dCB3YWl0aW5nIGZvciBjb21wbGV0aW9uIG9mIHRoZSBj
bG9zZSgpLgorICByZXR1cm4gZGVsYXkoMCkudGhlbigoKSA9PiB7CisgICAgY29uc3Qgd3JpdGVy
ID0gd3MuZ2V0V3JpdGVyKCk7CisKKyAgICBjb25zdCBjbG9zZVByb21pc2UgPSB3cml0ZXIuY2xv
c2UoKTsKKyAgICBjb25zdCBhYm9ydFByb21pc2UgPSB3cml0ZXIuYWJvcnQoZXJyb3IxKTsKKwor
ICAgIGNvbnN0IGV2ZW50cyA9IFtdOworICAgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAgICBj
bG9zZVByb21pc2UudGhlbigoKSA9PiB7CisgICAgICAgIGV2ZW50cy5wdXNoKCdjbG9zZVByb21p
c2UnKTsKKyAgICAgIH0pLAorICAgICAgYWJvcnRQcm9taXNlLnRoZW4oKCkgPT4geworICAgICAg
ICBldmVudHMucHVzaCgnYWJvcnRQcm9taXNlJyk7CisgICAgICB9KSwKKyAgICAgIHdyaXRlci5j
bG9zZWQudGhlbigoKSA9PiB7CisgICAgICAgIGV2ZW50cy5wdXNoKCdjbG9zZWQnKTsKKyAgICAg
IH0pCisgICAgXSkudGhlbigoKSA9PiB7CisgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGV2ZW50
cywgWydjbG9zZVByb21pc2UnLCAnYWJvcnRQcm9taXNlJywgJ2Nsb3NlZCddLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAncHJvbWlzZXMgbXVzdCBmdWxmaWxsL3JlamVjdCBpbiB0aGUgZXhw
ZWN0ZWQgb3JkZXInKTsKKyAgICB9KTsKKyAgfSk7Cit9LCAncHJvbWlzZXMgbXVzdCBmdWxmaWxs
L3JlamVjdCBpbiB0aGUgZXhwZWN0ZWQgb3JkZXIgb24gYWJvcnRlZCBjbG9zdXJlJyk7CisKK3By
b21pc2VfdGVzdCh0ID0+IHsKKyAgY29uc3Qgd3MgPSBuZXcgV3JpdGFibGVTdHJlYW0oeworICAg
IGNsb3NlKCkgeworICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yMSk7CisgICAgfQor
ICB9KTsKKworICAvLyBXYWl0IHVudGlsIHRoZSBXcml0YWJsZVN0cmVhbSBzdGFydHMgc28gdGhh
dCB0aGUgY2xvc2UoKSBjYWxsIGdldHMgcHJvY2Vzc2VkLgorICByZXR1cm4gZGVsYXkoMCkudGhl
bigoKSA9PiB7CisgICAgY29uc3Qgd3JpdGVyID0gd3MuZ2V0V3JpdGVyKCk7CisKKyAgICBjb25z
dCBjbG9zZVByb21pc2UgPSB3cml0ZXIuY2xvc2UoKTsKKyAgICBjb25zdCBhYm9ydFByb21pc2Ug
PSB3cml0ZXIuYWJvcnQoZXJyb3IyKTsKKworICAgIGNvbnN0IGV2ZW50cyA9IFtdOworICAgIGNs
b3NlUHJvbWlzZS5jYXRjaCgoKSA9PiBldmVudHMucHVzaCgnY2xvc2VQcm9taXNlJykpOworICAg
IGFib3J0UHJvbWlzZS5jYXRjaCgoKSA9PiBldmVudHMucHVzaCgnYWJvcnRQcm9taXNlJykpOwor
ICAgIHdyaXRlci5jbG9zZWQuY2F0Y2goKCkgPT4gZXZlbnRzLnB1c2goJ2Nsb3NlZCcpKTsKKyAg
ICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAgICAgcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwg
ZXJyb3IxLCBjbG9zZVByb21pc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjbG9z
ZVByb21pc2UgbXVzdCByZWplY3Qgd2l0aCB0aGUgZXJyb3IgcmV0dXJuZWQgZnJvbSB0aGUgc2lu
a1wncyBjbG9zZSBtZXRob2QnKSwKKyAgICAgIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVy
cm9yMSwgYWJvcnRQcm9taXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYWJvcnRQ
cm9taXNlIG11c3QgcmVqZWN0IHdpdGggdGhlIGVycm9yIHJldHVybmVkIGZyb20gdGhlIHNpbmtc
J3MgY2xvc2UgbWV0aG9kJyksCisgICAgICBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJv
cjIsIHdyaXRlci5jbG9zZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnd3JpdGVy
LmNsb3NlZCBtdXN0IHJlamVjdCB3aXRoIGVycm9yMicpCisgICAgXSkudGhlbigoKSA9PiB7Cisg
ICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGV2ZW50cywgWydjbG9zZVByb21pc2UnLCAnYWJvcnRQ
cm9taXNlJywgJ2Nsb3NlZCddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAncHJvbWlzZXMg
bXVzdCBmdWxmaWxsL3JlamVjdCBpbiB0aGUgZXhwZWN0ZWQgb3JkZXInKTsKKyAgICB9KTsKKyAg
fSk7Cit9LCAncHJvbWlzZXMgbXVzdCBmdWxmaWxsL3JlamVjdCBpbiB0aGUgZXhwZWN0ZWQgb3Jk
ZXIgb24gYWJvcnRlZCBhbmQgZXJyb3JlZCBjbG9zdXJlJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+
IHsKKyAgbGV0IHJlc29sdmVXcml0ZTsKKyAgbGV0IGNvbnRyb2xsZXI7CisgIGNvbnN0IHdzID0g
bmV3IFdyaXRhYmxlU3RyZWFtKHsKKyAgICB3cml0ZShjaHVuaywgYykgeworICAgICAgY29udHJv
bGxlciA9IGM7CisgICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7CisgICAgICAg
IHJlc29sdmVXcml0ZSA9IHJlc29sdmU7CisgICAgICB9KTsKKyAgICB9CisgIH0pOworICBjb25z
dCB3cml0ZXIgPSB3cy5nZXRXcml0ZXIoKTsKKyAgcmV0dXJuIHdyaXRlci5yZWFkeS50aGVuKCgp
ID0+IHsKKyAgICBjb25zdCB3cml0ZVByb21pc2UgPSB3cml0ZXIud3JpdGUoJ2MnKTsKKyAgICBj
b250cm9sbGVyLmVycm9yKGVycm9yMSk7CisgICAgY29uc3QgY2xvc2VQcm9taXNlID0gd3JpdGVy
LmNsb3NlKCk7CisgICAgbGV0IGNsb3NlUmVqZWN0ZWQgPSBmYWxzZTsKKyAgICBjbG9zZVByb21p
c2UuY2F0Y2goKCkgPT4geworICAgICAgY2xvc2VSZWplY3RlZCA9IHRydWU7CisgICAgfSk7Cisg
ICAgcmV0dXJuIGZsdXNoQXN5bmNFdmVudHMoKS50aGVuKCgpID0+IHsKKyAgICAgIGFzc2VydF9m
YWxzZShjbG9zZVJlamVjdGVkKTsKKyAgICAgIHJlc29sdmVXcml0ZSgpOworICAgICAgcmV0dXJu
IFByb21pc2UuYWxsKFsKKyAgICAgICAgd3JpdGVQcm9taXNlLAorICAgICAgICBwcm9taXNlX3Jl
amVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIGNsb3NlUHJvbWlzZSwgJ2Nsb3NlKCkgc2hvdWxkIHJl
amVjdCcpCisgICAgICBdKS50aGVuKCgpID0+IHsKKyAgICAgICAgYXNzZXJ0X3RydWUoY2xvc2VS
ZWplY3RlZCk7CisgICAgICB9KTsKKyAgICB9KTsKKyAgfSk7Cit9LCAnY2xvc2UoKSBzaG91bGQg
bm90IHJlamVjdCB1bnRpbCBubyBzaW5rIG1ldGhvZHMgYXJlIGluIGZsaWdodCcpOworCitwcm9t
aXNlX3Rlc3QoKCkgPT4geworICBjb25zdCB3cyA9IG5ldyBXcml0YWJsZVN0cmVhbSgpOworICBj
b25zdCB3cml0ZXIxID0gd3MuZ2V0V3JpdGVyKCk7CisgIHJldHVybiB3cml0ZXIxLmNsb3NlKCku
dGhlbigoKSA9PiB7CisgICAgd3JpdGVyMS5yZWxlYXNlTG9jaygpOworICAgIGNvbnN0IHdyaXRl
cjIgPSB3cy5nZXRXcml0ZXIoKTsKKyAgICBjb25zdCByZWFkeSA9IHdyaXRlcjIucmVhZHk7Cisg
ICAgYXNzZXJ0X2VxdWFscyhyZWFkeS5jb25zdHJ1Y3RvciwgUHJvbWlzZSk7CisgICAgcmV0dXJu
IHJlYWR5OworICB9KTsKK30sICdyZWFkeSBwcm9taXNlIHNob3VsZCBiZSBpbml0aWFsaXNlZCBh
cyBmdWxmaWxsZWQgZm9yIGEgd3JpdGVyIG9uIGEgY2xvc2VkIHN0cmVhbScpOworCitwcm9taXNl
X3Rlc3QoKCkgPT4geworICBjb25zdCB3cyA9IG5ldyBXcml0YWJsZVN0cmVhbSgpOworICB3cy5j
bG9zZSgpOworICBjb25zdCB3cml0ZXIgPSB3cy5nZXRXcml0ZXIoKTsKKyAgcmV0dXJuIHdyaXRl
ci5jbG9zZWQ7Cit9LCAnY2xvc2UoKSBvbiBhIHdyaXRhYmxlIHN0cmVhbSBzaG91bGQgd29yaycp
OworCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIGNvbnN0IHdzID0gbmV3IFdyaXRhYmxlU3RyZWFt
KCk7CisgIHdzLmdldFdyaXRlcigpOworICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2pzKHQsIFR5
cGVFcnJvciwgd3MuY2xvc2UoKSwgJ2Nsb3NlIHNob3VsZCByZWplY3QnKTsKK30sICdjbG9zZSgp
IG9uIGEgbG9ja2VkIHN0cmVhbSBzaG91bGQgcmVqZWN0Jyk7CisKK3Byb21pc2VfdGVzdCh0ID0+
IHsKKyAgY29uc3Qgd3MgPSBuZXcgV3JpdGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGNvbnRyb2xs
ZXIpIHsKKyAgICAgIGNvbnRyb2xsZXIuZXJyb3IoZXJyb3IxKTsKKyAgICB9CisgIH0pOworICBy
ZXR1cm4gcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCB3cy5jbG9zZSgpLCAnY2xv
c2Ugc2hvdWxkIHJlamVjdCB3aXRoIGVycm9yMScpOworfSwgJ2Nsb3NlKCkgb24gYW4gZXJyb3Jp
bmcgc3RyZWFtIHNob3VsZCByZWplY3QnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBjb25z
dCB3cyA9IG5ldyBXcml0YWJsZVN0cmVhbSh7CisgICAgc3RhcnQoY29udHJvbGxlcikgeworICAg
ICAgY29udHJvbGxlci5lcnJvcihlcnJvcjEpOworICAgIH0KKyAgfSk7CisgIGNvbnN0IHdyaXRl
ciA9IHdzLmdldFdyaXRlcigpOworICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwg
ZXJyb3IxLCB3cml0ZXIuY2xvc2VkLCAnY2xvc2VkIHNob3VsZCByZWplY3Qgd2l0aCB0aGUgZXJy
b3InKS50aGVuKCgpID0+IHsKKyAgICB3cml0ZXIucmVsZWFzZUxvY2soKTsKKyAgICByZXR1cm4g
cHJvbWlzZV9yZWplY3RzX2pzKHQsIFR5cGVFcnJvciwgd3MuY2xvc2UoKSwgJ2Nsb3NlIHNob3Vs
ZCByZWplY3QnKTsKKyAgfSk7Cit9LCAnY2xvc2UoKSBvbiBhbiBlcnJvcmVkIHN0cmVhbSBzaG91
bGQgcmVqZWN0Jyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgY29uc3Qgd3MgPSBuZXcgV3Jp
dGFibGVTdHJlYW0oKTsKKyAgY29uc3Qgd3JpdGVyID0gd3MuZ2V0V3JpdGVyKCk7CisgIHJldHVy
biB3cml0ZXIuY2xvc2UoKS50aGVuKCgpID0+IHsKKyAgICByZXR1cm4gcHJvbWlzZV9yZWplY3Rz
X2pzKHQsIFR5cGVFcnJvciwgd3MuY2xvc2UoKSwgJ2Nsb3NlIHNob3VsZCByZWplY3QnKTsKKyAg
fSk7Cit9LCAnY2xvc2UoKSBvbiBhbiBjbG9zZWQgc3RyZWFtIHNob3VsZCByZWplY3QnKTsKKwor
cHJvbWlzZV90ZXN0KHQgPT4geworICBjb25zdCB3cyA9IG5ldyBXcml0YWJsZVN0cmVhbSh7Cisg
ICAgY2xvc2UoKSB7CisgICAgICByZXR1cm4gbmV3IFByb21pc2UoKCkgPT4ge30pOworICAgIH0K
KyAgfSk7CisKKyAgY29uc3Qgd3JpdGVyID0gd3MuZ2V0V3JpdGVyKCk7CisgIHdyaXRlci5jbG9z
ZSgpOworICB3cml0ZXIucmVsZWFzZUxvY2soKTsKKworICByZXR1cm4gcHJvbWlzZV9yZWplY3Rz
X2pzKHQsIFR5cGVFcnJvciwgd3MuY2xvc2UoKSwgJ2Nsb3NlIHNob3VsZCByZWplY3QnKTsKK30s
ICdjbG9zZSgpIG9uIGEgc3RyZWFtIHdpdGggYSBwZW5kaW5nIGNsb3NlIHNob3VsZCByZWplY3Qn
KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL2Nsb3NlLmFueS53b3JrZXItZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dy
aXRhYmxlLXN0cmVhbXMvY2xvc2UuYW55Lndvcmtlci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZWQ0M2ZhZWNkZTU4ZjA2ZjFiODhkNGYyZDlkYWYwMDk2ODU2MzExNgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93
cml0YWJsZS1zdHJlYW1zL2Nsb3NlLmFueS53b3JrZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MjcgQEAKKworRkFJTCBmdWxmaWxsbWVudCB2YWx1ZSBvZiB3cml0ZXIuY2xvc2UoKSBjYWxsIG11
c3QgYmUgdW5kZWZpbmVkIGV2ZW4gaWYgdGhlIHVuZGVybHlpbmcgc2luayByZXR1cm5zIGEgbm9u
LXVuZGVmaW5lZCB2YWx1ZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJ
TCB3aGVuIHNpbmsgY2FsbHMgZXJyb3IgYXN5bmNocm9ub3VzbHkgd2hpbGUgc2luayBjbG9zZSBp
cyBpbi1mbGlnaHQsIHRoZSBzdHJlYW0gc2hvdWxkIG5vdCBiZWNvbWUgZXJyb3JlZCBDYW4ndCBm
aW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCB3aGVuIHNpbmsgY2FsbHMgZXJyb3Ig
c3luY2hyb25vdXNseSB3aGlsZSBjbG9zaW5nLCB0aGUgc3RyZWFtIHNob3VsZCBub3QgYmVjb21l
IGVycm9yZWQgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgd2hlbiB0
aGUgc2luayB0aHJvd3MgZHVyaW5nIGNsb3NlLCBhbmQgdGhlIGNsb3NlIGlzIHJlcXVlc3RlZCB3
aGlsZSBhIHdyaXRlIGlzIHN0aWxsIGluLWZsaWdodCwgdGhlIHN0cmVhbSBzaG91bGQgYmVjb21l
IGVycm9yZWQgZHVyaW5nIHRoZSBjbG9zZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0
cmVhbQorRkFJTCByZWxlYXNlTG9jayBvbiBhIHN0cmVhbSB3aXRoIGEgcGVuZGluZyB3cml0ZSBp
biB3aGljaCB0aGUgc3RyZWFtIGhhcyBiZWVuIGVycm9yZWQgQ2FuJ3QgZmluZCB2YXJpYWJsZTog
V3JpdGFibGVTdHJlYW0KK0ZBSUwgcmVsZWFzZUxvY2sgb24gYSBzdHJlYW0gd2l0aCBhIHBlbmRp
bmcgY2xvc2UgaW4gd2hpY2ggY29udHJvbGxlci5lcnJvcigpIHdhcyBjYWxsZWQgQ2FuJ3QgZmlu
ZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgd2hlbiBjbG9zZSBpcyBjYWxsZWQgb24g
YSBXcml0YWJsZVN0cmVhbSBpbiB3cml0YWJsZSBzdGF0ZSwgcmVhZHkgc2hvdWxkIHJldHVybiBh
IGZ1bGZpbGxlZCBwcm9taXNlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitG
QUlMIHdoZW4gY2xvc2UgaXMgY2FsbGVkIG9uIGEgV3JpdGFibGVTdHJlYW0gaW4gd2FpdGluZyBz
dGF0ZSwgcmVhZHkgcHJvbWlzZSBzaG91bGQgYmUgZnVsZmlsbGVkIENhbid0IGZpbmQgdmFyaWFi
bGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIHdoZW4gY2xvc2UgaXMgY2FsbGVkIG9uIGEgV3JpdGFi
bGVTdHJlYW0gaW4gd2FpdGluZyBzdGF0ZSwgcmVhZHkgc2hvdWxkIGJlIGZ1bGZpbGxlZCBpbW1l
ZGlhdGVseSBldmVuIGlmIGNsb3NlIHRha2VzIGEgbG9uZyB0aW1lIENhbid0IGZpbmQgdmFyaWFi
bGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIHJldHVybmluZyBhIHRoZW5hYmxlIGZyb20gY2xvc2Uo
KSBzaG91bGQgd29yayBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBy
ZWxlYXNlTG9jaygpIHNob3VsZCBub3QgY2hhbmdlIHRoZSByZXN1bHQgb2Ygc3luYyBjbG9zZSgp
IENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIHJlbGVhc2VMb2NrKCkg
c2hvdWxkIG5vdCBjaGFuZ2UgdGhlIHJlc3VsdCBvZiBhc3luYyBjbG9zZSgpIENhbid0IGZpbmQg
dmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIGNsb3NlKCkgc2hvdWxkIHNldCBzdGF0ZSB0
byBDTE9TRUQgZXZlbiBpZiB3cml0ZXIgaGFzIGRldGFjaGVkIENhbid0IGZpbmQgdmFyaWFibGU6
IFdyaXRhYmxlU3RyZWFtCitGQUlMIHRoZSBwcm9taXNlIHJldHVybmVkIGJ5IGFzeW5jIGFib3J0
IGR1cmluZyBjbG9zZSBzaG91bGQgcmVzb2x2ZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJs
ZVN0cmVhbQorRkFJTCBwcm9taXNlcyBtdXN0IGZ1bGZpbGwvcmVqZWN0IGluIHRoZSBleHBlY3Rl
ZCBvcmRlciBvbiBjbG9zdXJlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitG
QUlMIHByb21pc2VzIG11c3QgZnVsZmlsbC9yZWplY3QgaW4gdGhlIGV4cGVjdGVkIG9yZGVyIG9u
IGFib3J0ZWQgY2xvc3VyZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJ
TCBwcm9taXNlcyBtdXN0IGZ1bGZpbGwvcmVqZWN0IGluIHRoZSBleHBlY3RlZCBvcmRlciBvbiBh
Ym9ydGVkIGFuZCBlcnJvcmVkIGNsb3N1cmUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVT
dHJlYW0KK0ZBSUwgY2xvc2UoKSBzaG91bGQgbm90IHJlamVjdCB1bnRpbCBubyBzaW5rIG1ldGhv
ZHMgYXJlIGluIGZsaWdodCBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJ
TCByZWFkeSBwcm9taXNlIHNob3VsZCBiZSBpbml0aWFsaXNlZCBhcyBmdWxmaWxsZWQgZm9yIGEg
d3JpdGVyIG9uIGEgY2xvc2VkIHN0cmVhbSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0
cmVhbQorRkFJTCBjbG9zZSgpIG9uIGEgd3JpdGFibGUgc3RyZWFtIHNob3VsZCB3b3JrIENhbid0
IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIGNsb3NlKCkgb24gYSBsb2NrZWQg
c3RyZWFtIHNob3VsZCByZWplY3QgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0K
K0ZBSUwgY2xvc2UoKSBvbiBhbiBlcnJvcmluZyBzdHJlYW0gc2hvdWxkIHJlamVjdCBDYW4ndCBm
aW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBjbG9zZSgpIG9uIGFuIGVycm9yZWQg
c3RyZWFtIHNob3VsZCByZWplY3QgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0K
K0ZBSUwgY2xvc2UoKSBvbiBhbiBjbG9zZWQgc3RyZWFtIHNob3VsZCByZWplY3QgQ2FuJ3QgZmlu
ZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgY2xvc2UoKSBvbiBhIHN0cmVhbSB3aXRo
IGEgcGVuZGluZyBjbG9zZSBzaG91bGQgcmVqZWN0IENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRh
YmxlU3RyZWFtCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL2Nsb3NlLmFueS53b3JrZXIuaHRt
bCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93
cml0YWJsZS1zdHJlYW1zL2Nsb3NlLmFueS53b3JrZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMzgyOTEz
NTI4ZTY5M2IzYTVkNTZjNjYwYTQ1MDYwOTgwYjU0OGMzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxl
LXN0cmVhbXMvY2xvc2UuYW55Lndvcmtlci5odG1sCkBAIC0wLDAgKzEgQEAKKzwhLS0gVGhpcyBm
aWxlIGlzIHJlcXVpcmVkIGZvciBXZWJLaXQgdGVzdCBpbmZyYXN0cnVjdHVyZSB0byBydW4gdGhl
IHRlbXBsYXRlZCB0ZXN0IC0tPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93
cml0YWJsZS1zdHJlYW1zL2NvbnN0cnVjdG9yLmFueS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFt
cy9jb25zdHJ1Y3Rvci5hbnktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE5NTY5MzQ5MDRiYTE4
NGI0ZjIzOWVmN2NjMjMxM2U0NWU3MTZmNmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFt
cy9jb25zdHJ1Y3Rvci5hbnktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTggQEAKKworRkFJTCBj
b250cm9sbGVyIGFyZ3VtZW50IHNob3VsZCBiZSBwYXNzZWQgdG8gc3RhcnQgbWV0aG9kIGNvbnRy
b2xsZXIuZXJyb3IgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnY29udHJvbGxlci5lcnJvcihlcnJv
cjEpJywgJ2NvbnRyb2xsZXIuZXJyb3InIGlzIHVuZGVmaW5lZCkKK0ZBSUwgY29udHJvbGxlciBh
cmd1bWVudCBzaG91bGQgYmUgcGFzc2VkIHRvIHdyaXRlIG1ldGhvZCB3cy5nZXRXcml0ZXIgaXMg
bm90IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3JpdGVyKCknLCAnd3MuZ2V0V3JpdGVyJyBpcyB1
bmRlZmluZWQpCitGQUlMIGNvbnRyb2xsZXIgYXJndW1lbnQgc2hvdWxkIG5vdCBiZSBwYXNzZWQg
dG8gY2xvc2UgbWV0aG9kIHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5n
ZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkKK0ZBSUwgaGlnaFdhdGVy
TWFyayBzaG91bGQgYmUgcmVmbGVjdGVkIHRvIGRlc2lyZWRTaXplIHdzLmdldFdyaXRlciBpcyBu
b3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVu
ZGVmaW5lZCkKK0ZBSUwgV3JpdGFibGVTdHJlYW0gc2hvdWxkIGJlIHdyaXRhYmxlIGFuZCByZWFk
eSBzaG91bGQgZnVsZmlsbCBpbW1lZGlhdGVseSBpZiB0aGUgc3RyYXRlZ3kgZG9lcyBub3QgYXBw
bHkgYmFja3ByZXNzdXJlIHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5n
ZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkKK1BBU1MgV3JpdGFibGVT
dHJlYW0gc2hvdWxkIGJlIGNvbnN0cnVjdGlibGUgd2l0aCBubyBhcmd1bWVudHMgCitQQVNTIHVu
ZGVybHlpbmdTaW5rIGFyZ3VtZW50IHNob3VsZCBiZSBjb252ZXJ0ZWQgYWZ0ZXIgcXVldWluZ1N0
cmF0ZWd5IGFyZ3VtZW50IAorRkFJTCBXcml0YWJsZVN0cmVhbSBpbnN0YW5jZXMgc2hvdWxkIGhh
dmUgc3RhbmRhcmQgbWV0aG9kcyBhbmQgcHJvcGVydGllcyB3cy5nZXRXcml0ZXIgaXMgbm90IGEg
ZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3JpdGVyKCknLCAnd3MuZ2V0V3JpdGVyJyBpcyB1bmRlZmlu
ZWQpCitGQUlMIFdyaXRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIgY29uc3RydWN0b3Igc2hv
dWxkIHRocm93IGFzc2VydF90aHJvd3NfanM6IGNvbnN0cnVjdG9yIHNob3VsZCB0aHJvdyBhIFR5
cGVFcnJvciBleGNlcHRpb24gZnVuY3Rpb24gIigpID0+IG5ldyBXcml0YWJsZVN0cmVhbURlZmF1
bHRDb250cm9sbGVyKHt9KSIgdGhyZXcgb2JqZWN0ICJTeW50YXhFcnJvcjogVW5leHBlY3RlZCBp
ZGVudGlmaWVyICdPYmplY3QnLiBFeHBlY3RlZCBlaXRoZXIgYSBjbG9zaW5nICddJyBvciBhICcs
JyBmb2xsb3dpbmcgYW4gYXJyYXkgZWxlbWVudC4iICgiU3ludGF4RXJyb3IiKSBleHBlY3RlZCBp
bnN0YW5jZSBvZiBmdW5jdGlvbiAiZnVuY3Rpb24gVHlwZUVycm9yKCkgeworICAgIFtuYXRpdmUg
Y29kZV0KK30iICgiVHlwZUVycm9yIikKK0ZBSUwgV3JpdGFibGVTdHJlYW1EZWZhdWx0Q29udHJv
bGxlciBjb25zdHJ1Y3RvciBzaG91bGQgdGhyb3cgd2hlbiBwYXNzZWQgYW4gaW5pdGlhbGlzZWQg
V3JpdGFibGVTdHJlYW0gYXNzZXJ0X3Rocm93c19qczogY29uc3RydWN0b3Igc2hvdWxkIHRocm93
IGEgVHlwZUVycm9yIGV4Y2VwdGlvbiBmdW5jdGlvbiAiKCkgPT4gbmV3IFdyaXRhYmxlU3RyZWFt
RGVmYXVsdENvbnRyb2xsZXIoc3RyZWFtKSIgdGhyZXcgb2JqZWN0ICJTeW50YXhFcnJvcjogVW5l
eHBlY3RlZCBpZGVudGlmaWVyICdXcml0YWJsZVN0cmVhbScuIEV4cGVjdGVkIGVpdGhlciBhIGNs
b3NpbmcgJ10nIG9yIGEgJywnIGZvbGxvd2luZyBhbiBhcnJheSBlbGVtZW50LiIgKCJTeW50YXhF
cnJvciIpIGV4cGVjdGVkIGluc3RhbmNlIG9mIGZ1bmN0aW9uICJmdW5jdGlvbiBUeXBlRXJyb3Io
KSB7CisgICAgW25hdGl2ZSBjb2RlXQorfSIgKCJUeXBlRXJyb3IiKQorRkFJTCBXcml0YWJsZVN0
cmVhbURlZmF1bHRXcml0ZXIgc2hvdWxkIHRocm93IHVubGVzcyBwYXNzZWQgYSBXcml0YWJsZVN0
cmVhbSBzdHJlYW0uZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3N0cmVhbS5nZXRX
cml0ZXIoKScsICdzdHJlYW0uZ2V0V3JpdGVyJyBpcyB1bmRlZmluZWQpCitGQUlMIFdyaXRhYmxl
U3RyZWFtRGVmYXVsdFdyaXRlciBjb25zdHJ1Y3RvciBzaG91bGQgdGhyb3cgd2hlbiBzdHJlYW0g
YXJndW1lbnQgaXMgbG9ja2VkIHN0cmVhbS5nZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJ
biAnc3RyZWFtLmdldFdyaXRlcigpJywgJ3N0cmVhbS5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvY29uc3RydWN0b3IuYW55Lmh0bWwgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3Ry
ZWFtcy9jb25zdHJ1Y3Rvci5hbnkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMzgyOTEzNTI4ZTY5M2IzYTVk
NTZjNjYwYTQ1MDYwOTgwYjU0OGMzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvY29u
c3RydWN0b3IuYW55Lmh0bWwKQEAgLTAsMCArMSBAQAorPCEtLSBUaGlzIGZpbGUgaXMgcmVxdWly
ZWQgZm9yIFdlYktpdCB0ZXN0IGluZnJhc3RydWN0dXJlIHRvIHJ1biB0aGUgdGVtcGxhdGVkIHRl
c3QgLS0+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVh
bXMvY29uc3RydWN0b3IuYW55LmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvY29uc3RydWN0b3IuYW55LmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjc1ZWVkMmE5OTNmZTVlMDk2ZDZlMDkyMjA5YTA4Yjk3YjBjNDBhYzMKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9jb25zdHJ1Y3Rvci5hbnkuanMKQEAgLTAsMCArMSwx
NTUgQEAKKy8vIE1FVEE6IGdsb2JhbD13aW5kb3csd29ya2VyLGpzc2hlbGwKKyd1c2Ugc3RyaWN0
JzsKKworY29uc3QgZXJyb3IxID0gbmV3IEVycm9yKCdlcnJvcjEnKTsKK2Vycm9yMS5uYW1lID0g
J2Vycm9yMSc7CisKK2NvbnN0IGVycm9yMiA9IG5ldyBFcnJvcignZXJyb3IyJyk7CitlcnJvcjIu
bmFtZSA9ICdlcnJvcjInOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworICBsZXQgY29udHJvbGxl
cjsKKyAgY29uc3Qgd3MgPSBuZXcgV3JpdGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAg
ICAgIGNvbnRyb2xsZXIgPSBjOworICAgIH0KKyAgfSk7CisKKyAgLy8gTm93IGVycm9yIHRoZSBz
dHJlYW0gYWZ0ZXIgaXRzIGNvbnN0cnVjdGlvbi4KKyAgY29udHJvbGxlci5lcnJvcihlcnJvcjEp
OworCisgIGNvbnN0IHdyaXRlciA9IHdzLmdldFdyaXRlcigpOworCisgIGFzc2VydF9lcXVhbHMo
d3JpdGVyLmRlc2lyZWRTaXplLCBudWxsLCAnZGVzaXJlZFNpemUgc2hvdWxkIGJlIG51bGwnKTsK
KyAgcmV0dXJuIHdyaXRlci5jbG9zZWQuY2F0Y2gociA9PiB7CisgICAgYXNzZXJ0X2VxdWFscyhy
LCBlcnJvcjEsICd3cyBzaG91bGQgYmUgZXJyb3JlZCBieSB0aGUgcGFzc2VkIGVycm9yJyk7Cisg
IH0pOworfSwgJ2NvbnRyb2xsZXIgYXJndW1lbnQgc2hvdWxkIGJlIHBhc3NlZCB0byBzdGFydCBt
ZXRob2QnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBjb25zdCB3cyA9IG5ldyBXcml0YWJs
ZVN0cmVhbSh7CisgICAgd3JpdGUoY2h1bmssIGNvbnRyb2xsZXIpIHsKKyAgICAgIGNvbnRyb2xs
ZXIuZXJyb3IoZXJyb3IxKTsKKyAgICB9CisgIH0pOworCisgIGNvbnN0IHdyaXRlciA9IHdzLmdl
dFdyaXRlcigpOworCisgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAgd3JpdGVyLndyaXRlKCdh
JyksCisgICAgcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCB3cml0ZXIuY2xvc2Vk
LCAnY29udHJvbGxlci5lcnJvcigpIGluIHdyaXRlKCkgc2hvdWxkIGVycm9yIHRoZSBzdHJlYW0n
KQorICBdKTsKK30sICdjb250cm9sbGVyIGFyZ3VtZW50IHNob3VsZCBiZSBwYXNzZWQgdG8gd3Jp
dGUgbWV0aG9kJyk7CisKKy8vIE9sZGVyIHZlcnNpb25zIG9mIHRoZSBzdGFuZGFyZCBoYWQgdGhl
IGNvbnRyb2xsZXIgYXJndW1lbnQgcGFzc2VkIHRvIGNsb3NlKCkuIEl0IHdhc24ndCB1c2VmdWws
IGFuZCBzbyBoYXMgYmVlbgorLy8gcmVtb3ZlZC4gVGhpcyB0ZXN0IHJlbWFpbnMgdG8gaWRlbnRp
ZnkgaW1wbGVtZW50YXRpb25zIHRoYXQgaGF2ZW4ndCBiZWVuIHVwZGF0ZWQuCitwcm9taXNlX3Rl
c3QodCA9PiB7CisgIGNvbnN0IHdzID0gbmV3IFdyaXRhYmxlU3RyZWFtKHsKKyAgICBjbG9zZSgu
Li5hcmdzKSB7CisgICAgICB0LnN0ZXAoKCkgPT4geworICAgICAgICBhc3NlcnRfYXJyYXlfZXF1
YWxzKGFyZ3MsIFtdLCAnbm8gYXJndW1lbnRzIHNob3VsZCBiZSBwYXNzZWQgdG8gY2xvc2UnKTsK
KyAgICAgIH0pOworICAgIH0KKyAgfSk7CisKKyAgcmV0dXJuIHdzLmdldFdyaXRlcigpLmNsb3Nl
KCk7Cit9LCAnY29udHJvbGxlciBhcmd1bWVudCBzaG91bGQgbm90IGJlIHBhc3NlZCB0byBjbG9z
ZSBtZXRob2QnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgY29uc3Qgd3MgPSBuZXcgV3Jp
dGFibGVTdHJlYW0oe30sIHsKKyAgICBoaWdoV2F0ZXJNYXJrOiAxMDAwLAorICAgIHNpemUoKSB7
IHJldHVybiAxOyB9CisgIH0pOworCisgIGNvbnN0IHdyaXRlciA9IHdzLmdldFdyaXRlcigpOwor
CisgIGFzc2VydF9lcXVhbHMod3JpdGVyLmRlc2lyZWRTaXplLCAxMDAwLCAnZGVzaXJlZFNpemUg
c2hvdWxkIGJlIDEwMDAnKTsKKyAgcmV0dXJuIHdyaXRlci5yZWFkeS50aGVuKHYgPT4geworICAg
IGFzc2VydF9lcXVhbHModiwgdW5kZWZpbmVkLCAncmVhZHkgcHJvbWlzZSBzaG91bGQgZnVsZmls
bCB3aXRoIHVuZGVmaW5lZCcpOworICB9KTsKK30sICdoaWdoV2F0ZXJNYXJrIHNob3VsZCBiZSBy
ZWZsZWN0ZWQgdG8gZGVzaXJlZFNpemUnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgY29u
c3Qgd3MgPSBuZXcgV3JpdGFibGVTdHJlYW0oe30sIHsKKyAgICBoaWdoV2F0ZXJNYXJrOiBJbmZp
bml0eSwKKyAgICBzaXplKCkgeyByZXR1cm4gMDsgfQorICB9KTsKKworICBjb25zdCB3cml0ZXIg
PSB3cy5nZXRXcml0ZXIoKTsKKworICBhc3NlcnRfZXF1YWxzKHdyaXRlci5kZXNpcmVkU2l6ZSwg
SW5maW5pdHksICdkZXNpcmVkU2l6ZSBzaG91bGQgYmUgSW5maW5pdHknKTsKKworICByZXR1cm4g
d3JpdGVyLnJlYWR5OworfSwgJ1dyaXRhYmxlU3RyZWFtIHNob3VsZCBiZSB3cml0YWJsZSBhbmQg
cmVhZHkgc2hvdWxkIGZ1bGZpbGwgaW1tZWRpYXRlbHkgaWYgdGhlIHN0cmF0ZWd5IGRvZXMgbm90
IGFwcGx5ICcgKworICAgICdiYWNrcHJlc3N1cmUnKTsKKwordGVzdCgoKSA9PiB7CisgIG5ldyBX
cml0YWJsZVN0cmVhbSgpOworfSwgJ1dyaXRhYmxlU3RyZWFtIHNob3VsZCBiZSBjb25zdHJ1Y3Rp
YmxlIHdpdGggbm8gYXJndW1lbnRzJyk7CisKK3Rlc3QoKCkgPT4geworICBjb25zdCB1bmRlcmx5
aW5nU2luayA9IHsgZ2V0IHN0YXJ0KCkgeyB0aHJvdyBlcnJvcjE7IH0gfTsKKyAgY29uc3QgcXVl
dWluZ1N0cmF0ZWd5ID0geyBoaWdoV2F0ZXJNYXJrOiAwLCBnZXQgc2l6ZSgpIHsgdGhyb3cgZXJy
b3IyOyB9IH07CisKKyAgLy8gdW5kZXJseWluZ1NpbmsgaXMgY29udmVydGVkIGluIHByb3NlIGlu
IHRoZSBtZXRob2QgYm9keSwgd2hlcmVhcyBxdWV1aW5nU3RyYXRlZ3kgaXMgZG9uZSBhdCB0aGUg
SURMIGxheWVyLgorICAvLyBTbyB0aGUgcXVldWluZ1N0cmF0ZWd5IGV4Y2VwdGlvbiBzaG91bGQg
YmUgZW5jb3VudGVyZWQgZmlyc3QuCisgIGFzc2VydF90aHJvd3NfZXhhY3RseShlcnJvcjIsICgp
ID0+IG5ldyBXcml0YWJsZVN0cmVhbSh1bmRlcmx5aW5nU2luaywgcXVldWluZ1N0cmF0ZWd5KSk7
Cit9LCAndW5kZXJseWluZ1NpbmsgYXJndW1lbnQgc2hvdWxkIGJlIGNvbnZlcnRlZCBhZnRlciBx
dWV1aW5nU3RyYXRlZ3kgYXJndW1lbnQnKTsKKwordGVzdCgoKSA9PiB7CisgIGNvbnN0IHdzID0g
bmV3IFdyaXRhYmxlU3RyZWFtKHt9KTsKKworICBjb25zdCB3cml0ZXIgPSB3cy5nZXRXcml0ZXIo
KTsKKworICBhc3NlcnRfZXF1YWxzKHR5cGVvZiB3cml0ZXIud3JpdGUsICdmdW5jdGlvbicsICd3
cml0ZXIgc2hvdWxkIGhhdmUgYSB3cml0ZSBtZXRob2QnKTsKKyAgYXNzZXJ0X2VxdWFscyh0eXBl
b2Ygd3JpdGVyLmFib3J0LCAnZnVuY3Rpb24nLCAnd3JpdGVyIHNob3VsZCBoYXZlIGFuIGFib3J0
IG1ldGhvZCcpOworICBhc3NlcnRfZXF1YWxzKHR5cGVvZiB3cml0ZXIuY2xvc2UsICdmdW5jdGlv
bicsICd3cml0ZXIgc2hvdWxkIGhhdmUgYSBjbG9zZSBtZXRob2QnKTsKKworICBhc3NlcnRfZXF1
YWxzKHdyaXRlci5kZXNpcmVkU2l6ZSwgMSwgJ2Rlc2lyZWRTaXplIHNob3VsZCBzdGFydCBhdCAx
Jyk7CisKKyAgYXNzZXJ0X25vdF9lcXVhbHModHlwZW9mIHdyaXRlci5yZWFkeSwgJ3VuZGVmaW5l
ZCcsICd3cml0ZXIgc2hvdWxkIGhhdmUgYSByZWFkeSBwcm9wZXJ0eScpOworICBhc3NlcnRfZXF1
YWxzKHR5cGVvZiB3cml0ZXIucmVhZHkudGhlbiwgJ2Z1bmN0aW9uJywgJ3JlYWR5IHByb3BlcnR5
IHNob3VsZCBiZSB0aGVuYWJsZScpOworICBhc3NlcnRfbm90X2VxdWFscyh0eXBlb2Ygd3JpdGVy
LmNsb3NlZCwgJ3VuZGVmaW5lZCcsICd3cml0ZXIgc2hvdWxkIGhhdmUgYSBjbG9zZWQgcHJvcGVy
dHknKTsKKyAgYXNzZXJ0X2VxdWFscyh0eXBlb2Ygd3JpdGVyLmNsb3NlZC50aGVuLCAnZnVuY3Rp
b24nLCAnY2xvc2VkIHByb3BlcnR5IHNob3VsZCBiZSB0aGVuYWJsZScpOworfSwgJ1dyaXRhYmxl
U3RyZWFtIGluc3RhbmNlcyBzaG91bGQgaGF2ZSBzdGFuZGFyZCBtZXRob2RzIGFuZCBwcm9wZXJ0
aWVzJyk7CisKK3Rlc3QoKCkgPT4geworICBsZXQgV3JpdGFibGVTdHJlYW1EZWZhdWx0Q29udHJv
bGxlcjsKKyAgbmV3IFdyaXRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBXcml0
YWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyID0gYy5jb25zdHJ1Y3RvcjsKKyAgICB9CisgIH0p
OworCisgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiBuZXcgV3JpdGFibGVTdHJl
YW1EZWZhdWx0Q29udHJvbGxlcih7fSksCisgICAgICAgICAgICAgICAgICAgJ2NvbnN0cnVjdG9y
IHNob3VsZCB0aHJvdyBhIFR5cGVFcnJvciBleGNlcHRpb24nKTsKK30sICdXcml0YWJsZVN0cmVh
bURlZmF1bHRDb250cm9sbGVyIGNvbnN0cnVjdG9yIHNob3VsZCB0aHJvdycpOworCit0ZXN0KCgp
ID0+IHsKKyAgbGV0IFdyaXRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXI7CisgIGNvbnN0IHN0
cmVhbSA9IG5ldyBXcml0YWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgV3JpdGFi
bGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlciA9IGMuY29uc3RydWN0b3I7CisgICAgfQorICB9KTsK
KworICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4gbmV3IFdyaXRhYmxlU3RyZWFt
RGVmYXVsdENvbnRyb2xsZXIoc3RyZWFtKSwKKyAgICAgICAgICAgICAgICAgICAnY29uc3RydWN0
b3Igc2hvdWxkIHRocm93IGEgVHlwZUVycm9yIGV4Y2VwdGlvbicpOworfSwgJ1dyaXRhYmxlU3Ry
ZWFtRGVmYXVsdENvbnRyb2xsZXIgY29uc3RydWN0b3Igc2hvdWxkIHRocm93IHdoZW4gcGFzc2Vk
IGFuIGluaXRpYWxpc2VkIFdyaXRhYmxlU3RyZWFtJyk7CisKK3Rlc3QoKCkgPT4geworICBjb25z
dCBzdHJlYW0gPSBuZXcgV3JpdGFibGVTdHJlYW0oKTsKKyAgY29uc3Qgd3JpdGVyID0gc3RyZWFt
LmdldFdyaXRlcigpOworICBjb25zdCBXcml0YWJsZVN0cmVhbURlZmF1bHRXcml0ZXIgPSB3cml0
ZXIuY29uc3RydWN0b3I7CisgIHdyaXRlci5yZWxlYXNlTG9jaygpOworICBhc3NlcnRfdGhyb3dz
X2pzKFR5cGVFcnJvciwgKCkgPT4gbmV3IFdyaXRhYmxlU3RyZWFtRGVmYXVsdFdyaXRlcih7fSks
CisgICAgICAgICAgICAgICAgICAgJ2NvbnN0cnVjdG9yIHNob3VsZCB0aHJvdyBhIFR5cGVFcnJv
ciBleGNlcHRpb24nKTsKK30sICdXcml0YWJsZVN0cmVhbURlZmF1bHRXcml0ZXIgc2hvdWxkIHRo
cm93IHVubGVzcyBwYXNzZWQgYSBXcml0YWJsZVN0cmVhbScpOworCit0ZXN0KCgpID0+IHsKKyAg
Y29uc3Qgc3RyZWFtID0gbmV3IFdyaXRhYmxlU3RyZWFtKCk7CisgIGNvbnN0IHdyaXRlciA9IHN0
cmVhbS5nZXRXcml0ZXIoKTsKKyAgY29uc3QgV3JpdGFibGVTdHJlYW1EZWZhdWx0V3JpdGVyID0g
d3JpdGVyLmNvbnN0cnVjdG9yOworICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4g
bmV3IFdyaXRhYmxlU3RyZWFtRGVmYXVsdFdyaXRlcihzdHJlYW0pLAorICAgICAgICAgICAgICAg
ICAgICdjb25zdHJ1Y3RvciBzaG91bGQgdGhyb3cgYSBUeXBlRXJyb3IgZXhjZXB0aW9uJyk7Cit9
LCAnV3JpdGFibGVTdHJlYW1EZWZhdWx0V3JpdGVyIGNvbnN0cnVjdG9yIHNob3VsZCB0aHJvdyB3
aGVuIHN0cmVhbSBhcmd1bWVudCBpcyBsb2NrZWQnKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1z
L2NvbnN0cnVjdG9yLmFueS53b3JrZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvY29uc3Ry
dWN0b3IuYW55Lndvcmtlci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjUwNzJlZjdjODFjMjMz
Y2E5OGQ4YjJlZTJlODkyN2ZlOGYwZjk1MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1z
L2NvbnN0cnVjdG9yLmFueS53b3JrZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKKwor
RkFJTCBjb250cm9sbGVyIGFyZ3VtZW50IHNob3VsZCBiZSBwYXNzZWQgdG8gc3RhcnQgbWV0aG9k
IENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIGNvbnRyb2xsZXIgYXJn
dW1lbnQgc2hvdWxkIGJlIHBhc3NlZCB0byB3cml0ZSBtZXRob2QgQ2FuJ3QgZmluZCB2YXJpYWJs
ZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgY29udHJvbGxlciBhcmd1bWVudCBzaG91bGQgbm90IGJl
IHBhc3NlZCB0byBjbG9zZSBtZXRob2QgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJl
YW0KK0ZBSUwgaGlnaFdhdGVyTWFyayBzaG91bGQgYmUgcmVmbGVjdGVkIHRvIGRlc2lyZWRTaXpl
IENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIFdyaXRhYmxlU3RyZWFt
IHNob3VsZCBiZSB3cml0YWJsZSBhbmQgcmVhZHkgc2hvdWxkIGZ1bGZpbGwgaW1tZWRpYXRlbHkg
aWYgdGhlIHN0cmF0ZWd5IGRvZXMgbm90IGFwcGx5IGJhY2twcmVzc3VyZSBDYW4ndCBmaW5kIHZh
cmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBXcml0YWJsZVN0cmVhbSBzaG91bGQgYmUgY29u
c3RydWN0aWJsZSB3aXRoIG5vIGFyZ3VtZW50cyBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJs
ZVN0cmVhbQorRkFJTCB1bmRlcmx5aW5nU2luayBhcmd1bWVudCBzaG91bGQgYmUgY29udmVydGVk
IGFmdGVyIHF1ZXVpbmdTdHJhdGVneSBhcmd1bWVudCBhc3NlcnRfdGhyb3dzX2V4YWN0bHk6IGZ1
bmN0aW9uICIoKSA9PiBuZXcgV3JpdGFibGVTdHJlYW0odW5kZXJseWluZ1NpbmssIHF1ZXVpbmdT
dHJhdGVneSkiIHRocmV3IG9iamVjdCAiUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFi
bGU6IFdyaXRhYmxlU3RyZWFtIiBidXQgd2UgZXhwZWN0ZWQgaXQgdG8gdGhyb3cgb2JqZWN0ICJl
cnJvcjI6IGVycm9yMiIKK0ZBSUwgV3JpdGFibGVTdHJlYW0gaW5zdGFuY2VzIHNob3VsZCBoYXZl
IHN0YW5kYXJkIG1ldGhvZHMgYW5kIHByb3BlcnRpZXMgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3Jp
dGFibGVTdHJlYW0KK0ZBSUwgV3JpdGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlciBjb25zdHJ1
Y3RvciBzaG91bGQgdGhyb3cgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZB
SUwgV3JpdGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlciBjb25zdHJ1Y3RvciBzaG91bGQgdGhy
b3cgd2hlbiBwYXNzZWQgYW4gaW5pdGlhbGlzZWQgV3JpdGFibGVTdHJlYW0gQ2FuJ3QgZmluZCB2
YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgV3JpdGFibGVTdHJlYW1EZWZhdWx0V3JpdGVy
IHNob3VsZCB0aHJvdyB1bmxlc3MgcGFzc2VkIGEgV3JpdGFibGVTdHJlYW0gQ2FuJ3QgZmluZCB2
YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgV3JpdGFibGVTdHJlYW1EZWZhdWx0V3JpdGVy
IGNvbnN0cnVjdG9yIHNob3VsZCB0aHJvdyB3aGVuIHN0cmVhbSBhcmd1bWVudCBpcyBsb2NrZWQg
Q2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0
cmVhbXMvY29uc3RydWN0b3IuYW55Lndvcmtlci5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvY29uc3RydWN0
b3IuYW55Lndvcmtlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzODI5MTM1MjhlNjkzYjNhNWQ1NmM2NjBh
NDUwNjA5ODBiNTQ4YzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9jb25zdHJ1Y3Rv
ci5hbnkud29ya2VyLmh0bWwKQEAgLTAsMCArMSBAQAorPCEtLSBUaGlzIGZpbGUgaXMgcmVxdWly
ZWQgZm9yIFdlYktpdCB0ZXN0IGluZnJhc3RydWN0dXJlIHRvIHJ1biB0aGUgdGVtcGxhdGVkIHRl
c3QgLS0+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVh
bXMvY291bnQtcXVldWluZy1zdHJhdGVneS5hbnktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMv
Y291bnQtcXVldWluZy1zdHJhdGVneS5hbnktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJiZjhk
MzU3YzViNWZlZWQwZDlkNzMzNzcyNDVlYWMzNzdhYTQyZTUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFi
bGUtc3RyZWFtcy9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5LmFueS1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSw1IEBACisKK1BBU1MgQ2FuIGNvbnN0cnVjdCBhIHdyaXRhYmxlIHN0cmVhbSB3aXRoIGEg
dmFsaWQgQ291bnRRdWV1aW5nU3RyYXRlZ3kgCitGQUlMIENvcnJlY3RseSBnb3Zlcm5zIHRoZSB2
YWx1ZSBvZiBhIFdyaXRhYmxlU3RyZWFtJ3Mgc3RhdGUgcHJvcGVydHkgKEhXTSA9IDApIHdzLmdl
dFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRX
cml0ZXInIGlzIHVuZGVmaW5lZCkKK0ZBSUwgQ29ycmVjdGx5IGdvdmVybnMgdGhlIHZhbHVlIG9m
IGEgV3JpdGFibGVTdHJlYW0ncyBzdGF0ZSBwcm9wZXJ0eSAoSFdNID0gNCkgd3MuZ2V0V3JpdGVy
IGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicg
aXMgdW5kZWZpbmVkKQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9jb3VudC1xdWV1aW5nLXN0
cmF0ZWd5LmFueS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvY291bnQtcXVldWluZy1zdHJhdGVneS5hbnku
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4yMzgyOTEzNTI4ZTY5M2IzYTVkNTZjNjYwYTQ1MDYwOTgwYjU0OGMz
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvY291bnQtcXVldWluZy1zdHJhdGVneS5h
bnkuaHRtbApAQCAtMCwwICsxIEBACis8IS0tIFRoaXMgZmlsZSBpcyByZXF1aXJlZCBmb3IgV2Vi
S2l0IHRlc3QgaW5mcmFzdHJ1Y3R1cmUgdG8gcnVuIHRoZSB0ZW1wbGF0ZWQgdGVzdCAtLT4KXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9jb3VudC1x
dWV1aW5nLXN0cmF0ZWd5LmFueS5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL2NvdW50LXF1ZXVpbmctc3RyYXRl
Z3kuYW55LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMwZWRiM2ViMzE1YzYyODFmZWU2YzhmNGE5MGRjZDk1YmJh
NDg3ZmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9jb3VudC1xdWV1aW5nLXN0cmF0
ZWd5LmFueS5qcwpAQCAtMCwwICsxLDEyNCBAQAorLy8gTUVUQTogZ2xvYmFsPXdpbmRvdyx3b3Jr
ZXIsanNzaGVsbAorJ3VzZSBzdHJpY3QnOworCit0ZXN0KCgpID0+IHsKKyAgbmV3IFdyaXRhYmxl
U3RyZWFtKHt9LCBuZXcgQ291bnRRdWV1aW5nU3RyYXRlZ3koeyBoaWdoV2F0ZXJNYXJrOiA0IH0p
KTsKK30sICdDYW4gY29uc3RydWN0IGEgd3JpdGFibGUgc3RyZWFtIHdpdGggYSB2YWxpZCBDb3Vu
dFF1ZXVpbmdTdHJhdGVneScpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworICBjb25zdCBkb25l
cyA9IE9iamVjdC5jcmVhdGUobnVsbCk7CisKKyAgY29uc3Qgd3MgPSBuZXcgV3JpdGFibGVTdHJl
YW0oCisgICAgeworICAgICAgd3JpdGUoY2h1bmspIHsKKyAgICAgICAgcmV0dXJuIG5ldyBQcm9t
aXNlKHJlc29sdmUgPT4geworICAgICAgICAgIGRvbmVzW2NodW5rXSA9IHJlc29sdmU7CisgICAg
ICAgIH0pOworICAgICAgfQorICAgIH0sCisgICAgbmV3IENvdW50UXVldWluZ1N0cmF0ZWd5KHsg
aGlnaFdhdGVyTWFyazogMCB9KQorICApOworCisgIGNvbnN0IHdyaXRlciA9IHdzLmdldFdyaXRl
cigpOworICBsZXQgd3JpdGVQcm9taXNlQjsKKyAgbGV0IHdyaXRlUHJvbWlzZUM7CisKKyAgcmV0
dXJuIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9lcXVhbHMod3Jp
dGVyLmRlc2lyZWRTaXplLCAwLCAnZGVzaXJlZFNpemUgc2hvdWxkIGJlIGluaXRpYWxseSAwJyk7
CisKKyAgICBjb25zdCB3cml0ZVByb21pc2VBID0gd3JpdGVyLndyaXRlKCdhJyk7CisgICAgYXNz
ZXJ0X2VxdWFscyh3cml0ZXIuZGVzaXJlZFNpemUsIC0xLCAnZGVzaXJlZFNpemUgc2hvdWxkIGJl
IC0xIGFmdGVyIDFzdCB3cml0ZSgpJyk7CisKKyAgICB3cml0ZVByb21pc2VCID0gd3JpdGVyLndy
aXRlKCdiJyk7CisgICAgYXNzZXJ0X2VxdWFscyh3cml0ZXIuZGVzaXJlZFNpemUsIC0yLCAnZGVz
aXJlZFNpemUgc2hvdWxkIGJlIC0yIGFmdGVyIDJuZCB3cml0ZSgpJyk7CisKKyAgICBkb25lcy5h
KCk7CisgICAgcmV0dXJuIHdyaXRlUHJvbWlzZUE7CisgIH0pLnRoZW4oKCkgPT4geworICAgIGFz
c2VydF9lcXVhbHMod3JpdGVyLmRlc2lyZWRTaXplLCAtMSwgJ2Rlc2lyZWRTaXplIHNob3VsZCBi
ZSAtMSBhZnRlciBjb21wbGV0aW5nIDFzdCB3cml0ZSgpJyk7CisKKyAgICBkb25lcy5iKCk7Cisg
ICAgcmV0dXJuIHdyaXRlUHJvbWlzZUI7CisgIH0pLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9l
cXVhbHMod3JpdGVyLmRlc2lyZWRTaXplLCAwLCAnZGVzaXJlZFNpemUgc2hvdWxkIGJlIDAgYWZ0
ZXIgY29tcGxldGluZyAybmQgd3JpdGUoKScpOworCisgICAgd3JpdGVQcm9taXNlQyA9IHdyaXRl
ci53cml0ZSgnYycpOworICAgIGFzc2VydF9lcXVhbHMod3JpdGVyLmRlc2lyZWRTaXplLCAtMSwg
J2Rlc2lyZWRTaXplIHNob3VsZCBiZSAtMSBhZnRlciAzcmQgd3JpdGUoKScpOworCisgICAgZG9u
ZXMuYygpOworICAgIHJldHVybiB3cml0ZVByb21pc2VDOworICB9KS50aGVuKCgpID0+IHsKKyAg
ICBhc3NlcnRfZXF1YWxzKHdyaXRlci5kZXNpcmVkU2l6ZSwgMCwgJ2Rlc2lyZWRTaXplIHNob3Vs
ZCBiZSAwIGFmdGVyIGNvbXBsZXRpbmcgM3JkIHdyaXRlKCknKTsKKyAgfSk7Cit9LCAnQ29ycmVj
dGx5IGdvdmVybnMgdGhlIHZhbHVlIG9mIGEgV3JpdGFibGVTdHJlYW1cJ3Mgc3RhdGUgcHJvcGVy
dHkgKEhXTSA9IDApJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisgIGNvbnN0IGRvbmVzID0g
T2JqZWN0LmNyZWF0ZShudWxsKTsKKworICBjb25zdCB3cyA9IG5ldyBXcml0YWJsZVN0cmVhbSgK
KyAgICB7CisgICAgICB3cml0ZShjaHVuaykgeworICAgICAgICByZXR1cm4gbmV3IFByb21pc2Uo
cmVzb2x2ZSA9PiB7CisgICAgICAgICAgZG9uZXNbY2h1bmtdID0gcmVzb2x2ZTsKKyAgICAgICAg
fSk7CisgICAgICB9CisgICAgfSwKKyAgICBuZXcgQ291bnRRdWV1aW5nU3RyYXRlZ3koeyBoaWdo
V2F0ZXJNYXJrOiA0IH0pCisgICk7CisKKyAgY29uc3Qgd3JpdGVyID0gd3MuZ2V0V3JpdGVyKCk7
CisgIGxldCB3cml0ZVByb21pc2VCOworICBsZXQgd3JpdGVQcm9taXNlQzsKKyAgbGV0IHdyaXRl
UHJvbWlzZUQ7CisKKyAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCkgPT4geworICAg
IGFzc2VydF9lcXVhbHMod3JpdGVyLmRlc2lyZWRTaXplLCA0LCAnZGVzaXJlZFNpemUgc2hvdWxk
IGJlIGluaXRpYWxseSA0Jyk7CisKKyAgICBjb25zdCB3cml0ZVByb21pc2VBID0gd3JpdGVyLndy
aXRlKCdhJyk7CisgICAgYXNzZXJ0X2VxdWFscyh3cml0ZXIuZGVzaXJlZFNpemUsIDMsICdkZXNp
cmVkU2l6ZSBzaG91bGQgYmUgMyBhZnRlciAxc3Qgd3JpdGUoKScpOworCisgICAgd3JpdGVQcm9t
aXNlQiA9IHdyaXRlci53cml0ZSgnYicpOworICAgIGFzc2VydF9lcXVhbHMod3JpdGVyLmRlc2ly
ZWRTaXplLCAyLCAnZGVzaXJlZFNpemUgc2hvdWxkIGJlIDIgYWZ0ZXIgMm5kIHdyaXRlKCknKTsK
KworICAgIHdyaXRlUHJvbWlzZUMgPSB3cml0ZXIud3JpdGUoJ2MnKTsKKyAgICBhc3NlcnRfZXF1
YWxzKHdyaXRlci5kZXNpcmVkU2l6ZSwgMSwgJ2Rlc2lyZWRTaXplIHNob3VsZCBiZSAxIGFmdGVy
IDNyZCB3cml0ZSgpJyk7CisKKyAgICB3cml0ZVByb21pc2VEID0gd3JpdGVyLndyaXRlKCdkJyk7
CisgICAgYXNzZXJ0X2VxdWFscyh3cml0ZXIuZGVzaXJlZFNpemUsIDAsICdkZXNpcmVkU2l6ZSBz
aG91bGQgYmUgMCBhZnRlciA0dGggd3JpdGUoKScpOworCisgICAgd3JpdGVyLndyaXRlKCdlJyk7
CisgICAgYXNzZXJ0X2VxdWFscyh3cml0ZXIuZGVzaXJlZFNpemUsIC0xLCAnZGVzaXJlZFNpemUg
c2hvdWxkIGJlIC0xIGFmdGVyIDV0aCB3cml0ZSgpJyk7CisKKyAgICB3cml0ZXIud3JpdGUoJ2Yn
KTsKKyAgICBhc3NlcnRfZXF1YWxzKHdyaXRlci5kZXNpcmVkU2l6ZSwgLTIsICdkZXNpcmVkU2l6
ZSBzaG91bGQgYmUgLTIgYWZ0ZXIgNnRoIHdyaXRlKCknKTsKKworICAgIHdyaXRlci53cml0ZSgn
ZycpOworICAgIGFzc2VydF9lcXVhbHMod3JpdGVyLmRlc2lyZWRTaXplLCAtMywgJ2Rlc2lyZWRT
aXplIHNob3VsZCBiZSAtMyBhZnRlciA3dGggd3JpdGUoKScpOworCisgICAgZG9uZXMuYSgpOwor
ICAgIHJldHVybiB3cml0ZVByb21pc2VBOworICB9KS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRf
ZXF1YWxzKHdyaXRlci5kZXNpcmVkU2l6ZSwgLTIsICdkZXNpcmVkU2l6ZSBzaG91bGQgYmUgLTIg
YWZ0ZXIgY29tcGxldGluZyAxc3Qgd3JpdGUoKScpOworCisgICAgZG9uZXMuYigpOworICAgIHJl
dHVybiB3cml0ZVByb21pc2VCOworICB9KS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfZXF1YWxz
KHdyaXRlci5kZXNpcmVkU2l6ZSwgLTEsICdkZXNpcmVkU2l6ZSBzaG91bGQgYmUgLTEgYWZ0ZXIg
Y29tcGxldGluZyAybmQgd3JpdGUoKScpOworCisgICAgZG9uZXMuYygpOworICAgIHJldHVybiB3
cml0ZVByb21pc2VDOworICB9KS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfZXF1YWxzKHdyaXRl
ci5kZXNpcmVkU2l6ZSwgMCwgJ2Rlc2lyZWRTaXplIHNob3VsZCBiZSAwIGFmdGVyIGNvbXBsZXRp
bmcgM3JkIHdyaXRlKCknKTsKKworICAgIHdyaXRlci53cml0ZSgnaCcpOworICAgIGFzc2VydF9l
cXVhbHMod3JpdGVyLmRlc2lyZWRTaXplLCAtMSwgJ2Rlc2lyZWRTaXplIHNob3VsZCBiZSAtMSBh
ZnRlciA4dGggd3JpdGUoKScpOworCisgICAgZG9uZXMuZCgpOworICAgIHJldHVybiB3cml0ZVBy
b21pc2VEOworICB9KS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfZXF1YWxzKHdyaXRlci5kZXNp
cmVkU2l6ZSwgMCwgJ2Rlc2lyZWRTaXplIHNob3VsZCBiZSAwIGFmdGVyIGNvbXBsZXRpbmcgNHRo
IHdyaXRlKCknKTsKKworICAgIHdyaXRlci53cml0ZSgnaScpOworICAgIGFzc2VydF9lcXVhbHMo
d3JpdGVyLmRlc2lyZWRTaXplLCAtMSwgJ2Rlc2lyZWRTaXplIHNob3VsZCBiZSAtMSBhZnRlciA5
dGggd3JpdGUoKScpOworICB9KTsKK30sICdDb3JyZWN0bHkgZ292ZXJucyB0aGUgdmFsdWUgb2Yg
YSBXcml0YWJsZVN0cmVhbVwncyBzdGF0ZSBwcm9wZXJ0eSAoSFdNID0gNCknKTsKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93
cml0YWJsZS1zdHJlYW1zL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3kuYW55Lndvcmtlci1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvd3JpdGFibGUtc3RyZWFtcy9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5LmFueS53b3JrZXItZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ4NDJiYjE0Y2I1ZWJiNTQ4ZTRiYTEyOWEzZDMzOTY2OWYw
YTU0NDEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9jb3VudC1xdWV1aW5nLXN0cmF0
ZWd5LmFueS53b3JrZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNSBAQAorCitGQUlMIENhbiBj
b25zdHJ1Y3QgYSB3cml0YWJsZSBzdHJlYW0gd2l0aCBhIHZhbGlkIENvdW50UXVldWluZ1N0cmF0
ZWd5IENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIENvcnJlY3RseSBn
b3Zlcm5zIHRoZSB2YWx1ZSBvZiBhIFdyaXRhYmxlU3RyZWFtJ3Mgc3RhdGUgcHJvcGVydHkgKEhX
TSA9IDApIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIENvcnJlY3Rs
eSBnb3Zlcm5zIHRoZSB2YWx1ZSBvZiBhIFdyaXRhYmxlU3RyZWFtJ3Mgc3RhdGUgcHJvcGVydHkg
KEhXTSA9IDQpIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93
cml0YWJsZS1zdHJlYW1zL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3kuYW55Lndvcmtlci5odG1sIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRh
YmxlLXN0cmVhbXMvY291bnQtcXVldWluZy1zdHJhdGVneS5hbnkud29ya2VyLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMjM4MjkxMzUyOGU2OTNiM2E1ZDU2YzY2MGE0NTA2MDk4MGI1NDhjMwotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy93cml0YWJsZS1zdHJlYW1zL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3kuYW55Lndvcmtlci5o
dG1sCkBAIC0wLDAgKzEgQEAKKzwhLS0gVGhpcyBmaWxlIGlzIHJlcXVpcmVkIGZvciBXZWJLaXQg
dGVzdCBpbmZyYXN0cnVjdHVyZSB0byBydW4gdGhlIHRlbXBsYXRlZCB0ZXN0IC0tPgpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL2Vycm9yLmFueS1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9lcnJvci5hbnktZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjBhZjg2ZmE1OWJiODc3ZjJmYjZiZTQ2NTI4NzkyNmVmOTY4ODdhZGUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvd3JpdGFibGUtc3RyZWFtcy9lcnJvci5hbnktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNyBA
QAorCitGQUlMIGNvbnRyb2xsZXIuZXJyb3IoKSBzaG91bGQgZXJyb3IgdGhlIHN0cmVhbSBjb250
cm9sbGVyLmVycm9yIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ2NvbnRyb2xsZXIuZXJyb3IoZXJy
b3IxKScsICdjb250cm9sbGVyLmVycm9yJyBpcyB1bmRlZmluZWQpCitGQUlMIGNvbnRyb2xsZXIu
ZXJyb3IoKSBvbiBlcnJvcmluZyBzdHJlYW0gc2hvdWxkIG5vdCB0aHJvdyBjb250cm9sbGVyLmVy
cm9yIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ2NvbnRyb2xsZXIuZXJyb3IoZXJyb3IxKScsICdj
b250cm9sbGVyLmVycm9yJyBpcyB1bmRlZmluZWQpCitGQUlMIHN1cnBsdXMgY2FsbHMgdG8gY29u
dHJvbGxlci5lcnJvcigpIHNob3VsZCBiZSBhIG5vLW9wIGNvbnRyb2xsZXIuZXJyb3IgaXMgbm90
IGEgZnVuY3Rpb24uIChJbiAnY29udHJvbGxlci5lcnJvcihlcnJvcjEpJywgJ2NvbnRyb2xsZXIu
ZXJyb3InIGlzIHVuZGVmaW5lZCkKK0ZBSUwgY29udHJvbGxlci5lcnJvcigpIG9uIGVycm9yZWQg
c3RyZWFtIHNob3VsZCBub3QgdGhyb3cgcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9u
IHdpdGggdmFsdWU6IG9iamVjdCAiVHlwZUVycm9yOiBjb250cm9sbGVyLmVycm9yIGlzIG5vdCBh
IGZ1bmN0aW9uLiAoSW4gJ2NvbnRyb2xsZXIuZXJyb3IoZXJyb3IxKScsICdjb250cm9sbGVyLmVy
cm9yJyBpcyB1bmRlZmluZWQpIgorRkFJTCBjb250cm9sbGVyLmVycm9yKCkgb24gY2xvc2VkIHN0
cmVhbSBzaG91bGQgbm90IHRocm93IHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKElu
ICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
L3dyaXRhYmxlLXN0cmVhbXMvZXJyb3IuYW55Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9lcnJvci5hbnku
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4yMzgyOTEzNTI4ZTY5M2IzYTVkNTZjNjYwYTQ1MDYwOTgwYjU0OGMz
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvZXJyb3IuYW55Lmh0bWwKQEAgLTAsMCAr
MSBAQAorPCEtLSBUaGlzIGZpbGUgaXMgcmVxdWlyZWQgZm9yIFdlYktpdCB0ZXN0IGluZnJhc3Ry
dWN0dXJlIHRvIHJ1biB0aGUgdGVtcGxhdGVkIHRlc3QgLS0+ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvZXJyb3IuYW55LmpzIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVh
bXMvZXJyb3IuYW55LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJlOTg2ZmNjYzZlYWM2NTE3MjJhYjQyZTBjMDNm
ZjdmMzg2ZmNmYTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9lcnJvci5hbnkuanMK
QEAgLTAsMCArMSw2NCBAQAorLy8gTUVUQTogZ2xvYmFsPXdpbmRvdyx3b3JrZXIsanNzaGVsbAor
J3VzZSBzdHJpY3QnOworCitjb25zdCBlcnJvcjEgPSBuZXcgRXJyb3IoJ2Vycm9yMScpOworZXJy
b3IxLm5hbWUgPSAnZXJyb3IxJzsKKworY29uc3QgZXJyb3IyID0gbmV3IEVycm9yKCdlcnJvcjIn
KTsKK2Vycm9yMi5uYW1lID0gJ2Vycm9yMic7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgY29u
c3Qgd3MgPSBuZXcgV3JpdGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGNvbnRyb2xsZXIpIHsKKyAg
ICAgIGNvbnRyb2xsZXIuZXJyb3IoZXJyb3IxKTsKKyAgICB9CisgIH0pOworICByZXR1cm4gcHJv
bWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCB3cy5nZXRXcml0ZXIoKS5jbG9zZWQsICdz
dHJlYW0gc2hvdWxkIGJlIGVycm9yZWQnKTsKK30sICdjb250cm9sbGVyLmVycm9yKCkgc2hvdWxk
IGVycm9yIHRoZSBzdHJlYW0nKTsKKwordGVzdCgoKSA9PiB7CisgIGxldCBjb250cm9sbGVyOwor
ICBjb25zdCB3cyA9IG5ldyBXcml0YWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAg
Y29udHJvbGxlciA9IGM7CisgICAgfQorICB9KTsKKyAgd3MuYWJvcnQoKTsKKyAgY29udHJvbGxl
ci5lcnJvcihlcnJvcjEpOworfSwgJ2NvbnRyb2xsZXIuZXJyb3IoKSBvbiBlcnJvcmluZyBzdHJl
YW0gc2hvdWxkIG5vdCB0aHJvdycpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIGxldCBjb250
cm9sbGVyOworICBjb25zdCB3cyA9IG5ldyBXcml0YWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykg
eworICAgICAgY29udHJvbGxlciA9IGM7CisgICAgfQorICB9KTsKKyAgY29udHJvbGxlci5lcnJv
cihlcnJvcjEpOworICBjb250cm9sbGVyLmVycm9yKGVycm9yMik7CisgIHJldHVybiBwcm9taXNl
X3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIHdzLmdldFdyaXRlcigpLmNsb3NlZCwgJ2ZpcnN0
IGNvbnRyb2xsZXIuZXJyb3IoKSBzaG91bGQgd2luJyk7Cit9LCAnc3VycGx1cyBjYWxscyB0byBj
b250cm9sbGVyLmVycm9yKCkgc2hvdWxkIGJlIGEgbm8tb3AnKTsKKworcHJvbWlzZV90ZXN0KCgp
ID0+IHsKKyAgbGV0IGNvbnRyb2xsZXI7CisgIGNvbnN0IHdzID0gbmV3IFdyaXRhYmxlU3RyZWFt
KHsKKyAgICBzdGFydChjKSB7CisgICAgICBjb250cm9sbGVyID0gYzsKKyAgICB9CisgIH0pOwor
ICByZXR1cm4gd3MuYWJvcnQoKS50aGVuKCgpID0+IHsKKyAgICBjb250cm9sbGVyLmVycm9yKGVy
cm9yMSk7CisgIH0pOworfSwgJ2NvbnRyb2xsZXIuZXJyb3IoKSBvbiBlcnJvcmVkIHN0cmVhbSBz
aG91bGQgbm90IHRocm93Jyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisgIGxldCBjb250cm9s
bGVyOworICBjb25zdCB3cyA9IG5ldyBXcml0YWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgewor
ICAgICAgY29udHJvbGxlciA9IGM7CisgICAgfQorICB9KTsKKyAgcmV0dXJuIHdzLmdldFdyaXRl
cigpLmNsb3NlKCkudGhlbigoKSA9PiB7CisgICAgY29udHJvbGxlci5lcnJvcihlcnJvcjEpOwor
ICB9KTsKK30sICdjb250cm9sbGVyLmVycm9yKCkgb24gY2xvc2VkIHN0cmVhbSBzaG91bGQgbm90
IHRocm93Jyk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9lcnJvci5hbnkud29ya2VyLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy93cml0YWJsZS1zdHJlYW1zL2Vycm9yLmFueS53b3JrZXItZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjdjNzk3NTk2NDM5OWZlMzNmNzg2ZWQ0Y2E2ZDk4Njc3MjA2ZjU1YzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9lcnJvci5hbnkud29ya2VyLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDcgQEAKKworRkFJTCBjb250cm9sbGVyLmVycm9yKCkgc2hvdWxkIGVycm9yIHRoZSBz
dHJlYW0gQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgY29udHJvbGxl
ci5lcnJvcigpIG9uIGVycm9yaW5nIHN0cmVhbSBzaG91bGQgbm90IHRocm93IENhbid0IGZpbmQg
dmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIHN1cnBsdXMgY2FsbHMgdG8gY29udHJvbGxl
ci5lcnJvcigpIHNob3VsZCBiZSBhIG5vLW9wIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxl
U3RyZWFtCitGQUlMIGNvbnRyb2xsZXIuZXJyb3IoKSBvbiBlcnJvcmVkIHN0cmVhbSBzaG91bGQg
bm90IHRocm93IENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIGNvbnRy
b2xsZXIuZXJyb3IoKSBvbiBjbG9zZWQgc3RyZWFtIHNob3VsZCBub3QgdGhyb3cgQ2FuJ3QgZmlu
ZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvZXJy
b3IuYW55Lndvcmtlci5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvZXJyb3IuYW55Lndvcmtlci5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjIzODI5MTM1MjhlNjkzYjNhNWQ1NmM2NjBhNDUwNjA5ODBiNTQ4YzMKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9lcnJvci5hbnkud29ya2VyLmh0bWwKQEAgLTAsMCAr
MSBAQAorPCEtLSBUaGlzIGZpbGUgaXMgcmVxdWlyZWQgZm9yIFdlYktpdCB0ZXN0IGluZnJhc3Ry
dWN0dXJlIHRvIHJ1biB0aGUgdGVtcGxhdGVkIHRlc3QgLS0+ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvZmxvYXRpbmctcG9pbnQtdG90YWwtcXVl
dWUtc2l6ZS5hbnktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvZmxvYXRpbmctcG9pbnQtdG90
YWwtcXVldWUtc2l6ZS5hbnktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk4MzM4NDAwM2FlNjAy
YTY1MzIyYzkyZDkxYjJhYTY4NWVjMTc3ZTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFt
cy9mbG9hdGluZy1wb2ludC10b3RhbC1xdWV1ZS1zaXplLmFueS1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSw2IEBACisKK0ZBSUwgRmxvYXRpbmcgcG9pbnQgYXJpdGhtZXRpYyBtdXN0IG1hbmlmZXN0
IG5lYXIgTlVNQkVSLk1BWF9TQUZFX0lOVEVHRVIgKHRvdGFsIGVuZHMgdXAgcG9zaXRpdmUpIHdz
LmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5n
ZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkKK0ZBSUwgRmxvYXRpbmcgcG9pbnQgYXJpdGhtZXRpYyBt
dXN0IG1hbmlmZXN0IG5lYXIgMCAodG90YWwgZW5kcyB1cCBwb3NpdGl2ZSwgYnV0IGNsYW1wZWQp
IHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3
cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkKK0ZBSUwgRmxvYXRpbmcgcG9pbnQgYXJpdGhtZXRp
YyBtdXN0IG1hbmlmZXN0IG5lYXIgMCAodG90YWwgZW5kcyB1cCBwb3NpdGl2ZSwgYW5kIG5vdCBj
bGFtcGVkKSB3cy5nZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3JpdGVy
KCknLCAnd3MuZ2V0V3JpdGVyJyBpcyB1bmRlZmluZWQpCitGQUlMIEZsb2F0aW5nIHBvaW50IGFy
aXRobWV0aWMgbXVzdCBtYW5pZmVzdCBuZWFyIDAgKHRvdGFsIGVuZHMgdXAgemVybykgd3MuZ2V0
V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdy
aXRlcicgaXMgdW5kZWZpbmVkKQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9mbG9hdGluZy1w
b2ludC10b3RhbC1xdWV1ZS1zaXplLmFueS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvZmxvYXRpbmctcG9p
bnQtdG90YWwtcXVldWUtc2l6ZS5hbnkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMzgyOTEzNTI4ZTY5M2Iz
YTVkNTZjNjYwYTQ1MDYwOTgwYjU0OGMzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMv
ZmxvYXRpbmctcG9pbnQtdG90YWwtcXVldWUtc2l6ZS5hbnkuaHRtbApAQCAtMCwwICsxIEBACis8
IS0tIFRoaXMgZmlsZSBpcyByZXF1aXJlZCBmb3IgV2ViS2l0IHRlc3QgaW5mcmFzdHJ1Y3R1cmUg
dG8gcnVuIHRoZSB0ZW1wbGF0ZWQgdGVzdCAtLT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9mbG9hdGluZy1wb2ludC10b3RhbC1xdWV1ZS1zaXpl
LmFueS5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy93cml0YWJsZS1zdHJlYW1zL2Zsb2F0aW5nLXBvaW50LXRvdGFsLXF1ZXVlLXNpemUuYW55
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjhlNzdiYTBiYjMxMTg1YzVlMGI3YmU2OTI0NmUxYzkxOWM3YmFlNmYK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9mbG9hdGluZy1wb2ludC10b3RhbC1xdWV1
ZS1zaXplLmFueS5qcwpAQCAtMCwwICsxLDg3IEBACisvLyBNRVRBOiBnbG9iYWw9d2luZG93LHdv
cmtlcixqc3NoZWxsCisndXNlIHN0cmljdCc7CisKKy8vIER1ZSB0byB0aGUgbGltaXRhdGlvbnMg
b2YgZmxvYXRpbmctcG9pbnQgcHJlY2lzaW9uLCB0aGUgY2FsY3VsYXRpb24gb2YgZGVzaXJlZFNp
emUgc29tZXRpbWVzIGdpdmVzIGRpZmZlcmVudCBhbnN3ZXJzCisvLyB0aGFuIGFkZGluZyB1cCB0
aGUgaXRlbXMgaW4gdGhlIHF1ZXVlIHdvdWxkLiBJdCBpcyBpbXBvcnRhbnQgdGhhdCBpbXBsZW1l
bnRhdGlvbnMgZ2l2ZSB0aGUgc2FtZSByZXN1bHQgaW4gdGhlc2UgZWRnZQorLy8gY2FzZXMgc28g
dGhhdCBkZXZlbG9wZXJzIGRvIG5vdCBjb21lIHRvIGRlcGVuZCBvbiBub24tc3RhbmRhcmQgYmVo
YXZpb3VyLiBTZWUKKy8vIGh0dHBzOi8vZ2l0aHViLmNvbS93aGF0d2cvc3RyZWFtcy9pc3N1ZXMv
NTgyIGFuZCBsaW5rZWQgaXNzdWVzIGZvciBmdXJ0aGVyIGRpc2N1c3Npb24uCisKK3Byb21pc2Vf
dGVzdCgoKSA9PiB7CisgIGNvbnN0IHdyaXRlciA9IHNldHVwVGVzdFN0cmVhbSgpOworCisgIGNv
bnN0IHdyaXRlUHJvbWlzZXMgPSBbCisgICAgd3JpdGVyLndyaXRlKDIpLAorICAgIHdyaXRlci53
cml0ZShOdW1iZXIuTUFYX1NBRkVfSU5URUdFUikKKyAgXTsKKworICBhc3NlcnRfZXF1YWxzKHdy
aXRlci5kZXNpcmVkU2l6ZSwgMCAtIDIgLSBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUiwKKyAgICAn
ZGVzaXJlZFNpemUgbXVzdCBiZSBjYWxjdWxhdGVkIHVzaW5nIGRvdWJsZS1wcmVjaXNpb24gZmxv
YXRpbmctcG9pbnQgYXJpdGhtZXRpYyAoYWZ0ZXIgd3JpdGluZyB0d28gY2h1bmtzKScpOworCisg
IHJldHVybiBQcm9taXNlLmFsbCh3cml0ZVByb21pc2VzKS50aGVuKCgpID0+IHsKKyAgICBhc3Nl
cnRfZXF1YWxzKHdyaXRlci5kZXNpcmVkU2l6ZSwgMCwgJ1tbcXVldWVUb3RhbFNpemVdXSBtdXN0
IGNsYW1wIHRvIDAgaWYgaXQgYmVjb21lcyBuZWdhdGl2ZScpOworICB9KTsKK30sICdGbG9hdGlu
ZyBwb2ludCBhcml0aG1ldGljIG11c3QgbWFuaWZlc3QgbmVhciBOVU1CRVIuTUFYX1NBRkVfSU5U
RUdFUiAodG90YWwgZW5kcyB1cCBwb3NpdGl2ZSknKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsK
KyAgY29uc3Qgd3JpdGVyID0gc2V0dXBUZXN0U3RyZWFtKCk7CisKKyAgY29uc3Qgd3JpdGVQcm9t
aXNlcyA9IFsKKyAgICB3cml0ZXIud3JpdGUoMWUtMTYpLAorICAgIHdyaXRlci53cml0ZSgxKQor
ICBdOworCisgIGFzc2VydF9lcXVhbHMod3JpdGVyLmRlc2lyZWRTaXplLCAwIC0gMWUtMTYgLSAx
LAorICAgICdkZXNpcmVkU2l6ZSBtdXN0IGJlIGNhbGN1bGF0ZWQgdXNpbmcgZG91YmxlLXByZWNp
c2lvbiBmbG9hdGluZy1wb2ludCBhcml0aG1ldGljIChhZnRlciB3cml0aW5nIHR3byBjaHVua3Mp
Jyk7CisKKyAgcmV0dXJuIFByb21pc2UuYWxsKHdyaXRlUHJvbWlzZXMpLnRoZW4oKCkgPT4gewor
ICAgIGFzc2VydF9lcXVhbHMod3JpdGVyLmRlc2lyZWRTaXplLCAwLCAnW1txdWV1ZVRvdGFsU2l6
ZV1dIG11c3QgY2xhbXAgdG8gMCBpZiBpdCBiZWNvbWVzIG5lZ2F0aXZlJyk7CisgIH0pOworfSwg
J0Zsb2F0aW5nIHBvaW50IGFyaXRobWV0aWMgbXVzdCBtYW5pZmVzdCBuZWFyIDAgKHRvdGFsIGVu
ZHMgdXAgcG9zaXRpdmUsIGJ1dCBjbGFtcGVkKScpOworCitwcm9taXNlX3Rlc3QoKCkgPT4gewor
ICBjb25zdCB3cml0ZXIgPSBzZXR1cFRlc3RTdHJlYW0oKTsKKworICBjb25zdCB3cml0ZVByb21p
c2VzID0gWworICAgIHdyaXRlci53cml0ZSgxZS0xNiksCisgICAgd3JpdGVyLndyaXRlKDEpLAor
ICAgIHdyaXRlci53cml0ZSgyZS0xNikKKyAgXTsKKworICBhc3NlcnRfZXF1YWxzKHdyaXRlci5k
ZXNpcmVkU2l6ZSwgMCAtIDFlLTE2IC0gMSAtIDJlLTE2LAorICAgICdkZXNpcmVkU2l6ZSBtdXN0
IGJlIGNhbGN1bGF0ZWQgdXNpbmcgZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCBhcml0
aG1ldGljIChhZnRlciB3cml0aW5nIHRocmVlIGNodW5rcyknKTsKKworICByZXR1cm4gUHJvbWlz
ZS5hbGwod3JpdGVQcm9taXNlcykudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X2VxdWFscyh3cml0
ZXIuZGVzaXJlZFNpemUsIDAgLSAxZS0xNiAtIDEgLSAyZS0xNiArIDFlLTE2ICsgMSArIDJlLTE2
LAorICAgICAgJ2Rlc2lyZWRTaXplIG11c3QgYmUgY2FsY3VsYXRlZCB1c2luZyBmbG9hdGluZy1w
b2ludCBhcml0aG1ldGljIChhZnRlciB0aGUgdGhyZWUgY2h1bmtzIGhhdmUgZmluaXNoZWQgd3Jp
dGluZyknKTsKKyAgfSk7Cit9LCAnRmxvYXRpbmcgcG9pbnQgYXJpdGhtZXRpYyBtdXN0IG1hbmlm
ZXN0IG5lYXIgMCAodG90YWwgZW5kcyB1cCBwb3NpdGl2ZSwgYW5kIG5vdCBjbGFtcGVkKScpOwor
Citwcm9taXNlX3Rlc3QoKCkgPT4geworICBjb25zdCB3cml0ZXIgPSBzZXR1cFRlc3RTdHJlYW0o
KTsKKworICBjb25zdCB3cml0ZVByb21pc2VzID0gWworICAgIHdyaXRlci53cml0ZSgyZS0xNiks
CisgICAgd3JpdGVyLndyaXRlKDEpCisgIF07CisKKyAgYXNzZXJ0X2VxdWFscyh3cml0ZXIuZGVz
aXJlZFNpemUsIDAgLSAyZS0xNiAtIDEsCisgICAgJ2Rlc2lyZWRTaXplIG11c3QgYmUgY2FsY3Vs
YXRlZCB1c2luZyBkb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IGFyaXRobWV0aWMgKGFm
dGVyIHdyaXRpbmcgdHdvIGNodW5rcyknKTsKKworICByZXR1cm4gUHJvbWlzZS5hbGwod3JpdGVQ
cm9taXNlcykudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X2VxdWFscyh3cml0ZXIuZGVzaXJlZFNp
emUsIDAgLSAyZS0xNiAtIDEgKyAyZS0xNiArIDEsCisgICAgICAnZGVzaXJlZFNpemUgbXVzdCBi
ZSBjYWxjdWxhdGVkIHVzaW5nIGZsb2F0aW5nLXBvaW50IGFyaXRobWV0aWMgKGFmdGVyIHRoZSB0
d28gY2h1bmtzIGhhdmUgZmluaXNoZWQgd3JpdGluZyknKTsKKyAgfSk7Cit9LCAnRmxvYXRpbmcg
cG9pbnQgYXJpdGhtZXRpYyBtdXN0IG1hbmlmZXN0IG5lYXIgMCAodG90YWwgZW5kcyB1cCB6ZXJv
KScpOworCitmdW5jdGlvbiBzZXR1cFRlc3RTdHJlYW0oKSB7CisgIGNvbnN0IHN0cmF0ZWd5ID0g
eworICAgIHNpemUoeCkgeworICAgICAgcmV0dXJuIHg7CisgICAgfSwKKyAgICBoaWdoV2F0ZXJN
YXJrOiAwCisgIH07CisKKyAgY29uc3Qgd3MgPSBuZXcgV3JpdGFibGVTdHJlYW0oe30sIHN0cmF0
ZWd5KTsKKworICByZXR1cm4gd3MuZ2V0V3JpdGVyKCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3Ry
ZWFtcy9mbG9hdGluZy1wb2ludC10b3RhbC1xdWV1ZS1zaXplLmFueS53b3JrZXItZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
L3dyaXRhYmxlLXN0cmVhbXMvZmxvYXRpbmctcG9pbnQtdG90YWwtcXVldWUtc2l6ZS5hbnkud29y
a2VyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZWQzNDZlMDNiYWY0OWVlOTUwNzlhMzQ3MzUy
ODIzMDE2OTE1OGMxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvZmxvYXRpbmctcG9p
bnQtdG90YWwtcXVldWUtc2l6ZS5hbnkud29ya2VyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDYg
QEAKKworRkFJTCBGbG9hdGluZyBwb2ludCBhcml0aG1ldGljIG11c3QgbWFuaWZlc3QgbmVhciBO
VU1CRVIuTUFYX1NBRkVfSU5URUdFUiAodG90YWwgZW5kcyB1cCBwb3NpdGl2ZSkgQ2FuJ3QgZmlu
ZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgRmxvYXRpbmcgcG9pbnQgYXJpdGhtZXRp
YyBtdXN0IG1hbmlmZXN0IG5lYXIgMCAodG90YWwgZW5kcyB1cCBwb3NpdGl2ZSwgYnV0IGNsYW1w
ZWQpIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIEZsb2F0aW5nIHBv
aW50IGFyaXRobWV0aWMgbXVzdCBtYW5pZmVzdCBuZWFyIDAgKHRvdGFsIGVuZHMgdXAgcG9zaXRp
dmUsIGFuZCBub3QgY2xhbXBlZCkgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0K
K0ZBSUwgRmxvYXRpbmcgcG9pbnQgYXJpdGhtZXRpYyBtdXN0IG1hbmlmZXN0IG5lYXIgMCAodG90
YWwgZW5kcyB1cCB6ZXJvKSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9mbG9hdGluZy1wb2ludC10b3RhbC1xdWV1ZS1zaXplLmFu
eS53b3JrZXIuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL2Zsb2F0aW5nLXBvaW50LXRvdGFsLXF1ZXVlLXNp
emUuYW55Lndvcmtlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzODI5MTM1MjhlNjkzYjNhNWQ1NmM2NjBh
NDUwNjA5ODBiNTQ4YzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9mbG9hdGluZy1w
b2ludC10b3RhbC1xdWV1ZS1zaXplLmFueS53b3JrZXIuaHRtbApAQCAtMCwwICsxIEBACis8IS0t
IFRoaXMgZmlsZSBpcyByZXF1aXJlZCBmb3IgV2ViS2l0IHRlc3QgaW5mcmFzdHJ1Y3R1cmUgdG8g
cnVuIHRoZSB0ZW1wbGF0ZWQgdGVzdCAtLT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9nZW5lcmFsLmFueS1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3Ry
ZWFtcy9nZW5lcmFsLmFueS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmFlZjQ0MWM0MTE0MmRm
ZTYyMTlhMjcxYzMxNzNhMmQzMzA3MTlmOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1z
L2dlbmVyYWwuYW55LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE4IEBACisKK0ZBSUwgZGVzaXJl
ZFNpemUgb24gYSByZWxlYXNlZCB3cml0ZXIgd3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9u
LiAoSW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicgaXMgdW5kZWZpbmVkKQorRkFJ
TCBkZXNpcmVkU2l6ZSBpbml0aWFsIHZhbHVlIHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlv
bi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkKK0ZB
SUwgZGVzaXJlZFNpemUgb24gYSB3cml0ZXIgZm9yIGEgY2xvc2VkIHN0cmVhbSB3cy5nZXRXcml0
ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3JpdGVyKCknLCAnd3MuZ2V0V3JpdGVy
JyBpcyB1bmRlZmluZWQpCitGQUlMIGRlc2lyZWRTaXplIG9uIGEgd3JpdGVyIGZvciBhbiBlcnJv
cmVkIHN0cmVhbSBjLmVycm9yIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ2MuZXJyb3IoKScsICdj
LmVycm9yJyBpcyB1bmRlZmluZWQpCitGQUlMIHdzLmdldFdyaXRlcigpIG9uIGEgY2xvc2luZyBX
cml0YWJsZVN0cmVhbSB3cy5nZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0
V3JpdGVyKCknLCAnd3MuZ2V0V3JpdGVyJyBpcyB1bmRlZmluZWQpCitGQUlMIHdzLmdldFdyaXRl
cigpIG9uIGEgY2xvc2VkIFdyaXRhYmxlU3RyZWFtIHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5j
dGlvbi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkK
K0ZBSUwgd3MuZ2V0V3JpdGVyKCkgb24gYW4gYWJvcnRlZCBXcml0YWJsZVN0cmVhbSB3cy5nZXRX
cml0ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3JpdGVyKCknLCAnd3MuZ2V0V3Jp
dGVyJyBpcyB1bmRlZmluZWQpCitGQUlMIHdzLmdldFdyaXRlcigpIG9uIGFuIGVycm9yZWQgV3Jp
dGFibGVTdHJlYW0gYy5lcnJvciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICdjLmVycm9yKCknLCAn
Yy5lcnJvcicgaXMgdW5kZWZpbmVkKQorRkFJTCBjbG9zZWQgYW5kIHJlYWR5IG9uIGEgcmVsZWFz
ZWQgd3JpdGVyIHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0
ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkKK0ZBSUwgV3JpdGFibGVTdHJlYW0g
c2hvdWxkIGNhbGwgdW5kZXJseWluZyBzaW5rIG1ldGhvZHMgYXMgbWV0aG9kcyB3cy5nZXRXcml0
ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3JpdGVyKCknLCAnd3MuZ2V0V3JpdGVy
JyBpcyB1bmRlZmluZWQpCitGQUlMIG1ldGhvZHMgc2hvdWxkIG5vdCBub3QgaGF2ZSAuYXBwbHko
KSBvciAuY2FsbCgpIGNhbGxlZCB3czEuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4g
J3dzMS5nZXRXcml0ZXIoKScsICd3czEuZ2V0V3JpdGVyJyBpcyB1bmRlZmluZWQpCitGQUlMIFdy
aXRhYmxlU3RyZWFtJ3Mgc3RyYXRlZ3kuc2l6ZSBzaG91bGQgbm90IGJlIGNhbGxlZCBhcyBhIG1l
dGhvZCBoaWdoV2F0ZXJNYXJrIHZhbHVlIGlzIG5lZ2F0aXZlIG9yIG5vdCBhIG51bWJlcgorRkFJ
TCByZWR1bmRhbnQgcmVsZWFzZUxvY2soKSBpcyBuby1vcCB3cy5nZXRXcml0ZXIgaXMgbm90IGEg
ZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3JpdGVyKCknLCAnd3MuZ2V0V3JpdGVyJyBpcyB1bmRlZmlu
ZWQpCitGQUlMIHJlYWR5IHByb21pc2Ugc2hvdWxkIGZpcmUgYmVmb3JlIGNsb3NlZCBvbiByZWxl
YXNlTG9jayB3cy5nZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3JpdGVy
KCknLCAnd3MuZ2V0V3JpdGVyJyBpcyB1bmRlZmluZWQpCitGQUlMIFN1YmNsYXNzaW5nIFdyaXRh
YmxlU3RyZWFtIHNob3VsZCB3b3JrIGFzc2VydF90cnVlOiBTdWJjbGFzcyBvYmplY3Qgc2hvdWxk
IGJlIGFuIGluc3RhbmNlIG9mIFN1YmNsYXNzIGV4cGVjdGVkIHRydWUgZ290IGZhbHNlCitGQUlM
IHRoZSBsb2NrZWQgZ2V0dGVyIHNob3VsZCByZXR1cm4gdHJ1ZSBpZiB0aGUgc3RyZWFtIGhhcyBh
IHdyaXRlciBhc3NlcnRfZmFsc2U6IHN0cmVhbSBzaG91bGQgbm90IGJlIGxvY2tlZCBleHBlY3Rl
ZCBmYWxzZSBnb3QgdW5kZWZpbmVkCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL2dlbmVyYWwu
YW55Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9nZW5lcmFsLmFueS5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzODI5
MTM1MjhlNjkzYjNhNWQ1NmM2NjBhNDUwNjA5ODBiNTQ4YzMKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFi
bGUtc3RyZWFtcy9nZW5lcmFsLmFueS5odG1sCkBAIC0wLDAgKzEgQEAKKzwhLS0gVGhpcyBmaWxl
IGlzIHJlcXVpcmVkIGZvciBXZWJLaXQgdGVzdCBpbmZyYXN0cnVjdHVyZSB0byBydW4gdGhlIHRl
bXBsYXRlZCB0ZXN0IC0tPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0
YWJsZS1zdHJlYW1zL2dlbmVyYWwuYW55LmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvZ2VuZXJhbC5hbnkuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZmRkMTBiMjlhYTBlYmM1YmY3MGY1NTJiNDlhZmM5Yzg5OWMyNTgyOAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL2dlbmVyYWwuYW55LmpzCkBAIC0wLDAgKzEsMjc3
IEBACisvLyBNRVRBOiBnbG9iYWw9d2luZG93LHdvcmtlcixqc3NoZWxsCisndXNlIHN0cmljdCc7
CisKK3Rlc3QoKCkgPT4geworICBjb25zdCB3cyA9IG5ldyBXcml0YWJsZVN0cmVhbSh7fSk7Cisg
IGNvbnN0IHdyaXRlciA9IHdzLmdldFdyaXRlcigpOworICB3cml0ZXIucmVsZWFzZUxvY2soKTsK
KworICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4gd3JpdGVyLmRlc2lyZWRTaXpl
LCAnZGVzaXJlZFNpemUgc2hvdWxkIHRocm93IGEgVHlwZUVycm9yJyk7Cit9LCAnZGVzaXJlZFNp
emUgb24gYSByZWxlYXNlZCB3cml0ZXInKTsKKwordGVzdCgoKSA9PiB7CisgIGNvbnN0IHdzID0g
bmV3IFdyaXRhYmxlU3RyZWFtKHt9KTsKKworICBjb25zdCB3cml0ZXIgPSB3cy5nZXRXcml0ZXIo
KTsKKworICBhc3NlcnRfZXF1YWxzKHdyaXRlci5kZXNpcmVkU2l6ZSwgMSwgJ2Rlc2lyZWRTaXpl
IHNob3VsZCBiZSAxJyk7Cit9LCAnZGVzaXJlZFNpemUgaW5pdGlhbCB2YWx1ZScpOworCitwcm9t
aXNlX3Rlc3QoKCkgPT4geworICBjb25zdCB3cyA9IG5ldyBXcml0YWJsZVN0cmVhbSh7fSk7CisK
KyAgY29uc3Qgd3JpdGVyID0gd3MuZ2V0V3JpdGVyKCk7CisKKyAgd3JpdGVyLmNsb3NlKCk7CisK
KyAgcmV0dXJuIHdyaXRlci5jbG9zZWQudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X2VxdWFscyh3
cml0ZXIuZGVzaXJlZFNpemUsIDAsICdkZXNpcmVkU2l6ZSBzaG91bGQgYmUgMCcpOworICB9KTsK
K30sICdkZXNpcmVkU2l6ZSBvbiBhIHdyaXRlciBmb3IgYSBjbG9zZWQgc3RyZWFtJyk7CisKK3Rl
c3QoKCkgPT4geworICBjb25zdCB3cyA9IG5ldyBXcml0YWJsZVN0cmVhbSh7CisgICAgc3RhcnQo
YykgeworICAgICAgYy5lcnJvcigpOworICAgIH0KKyAgfSk7CisKKyAgY29uc3Qgd3JpdGVyID0g
d3MuZ2V0V3JpdGVyKCk7CisgIGFzc2VydF9lcXVhbHMod3JpdGVyLmRlc2lyZWRTaXplLCBudWxs
LCAnZGVzaXJlZFNpemUgc2hvdWxkIGJlIG51bGwnKTsKK30sICdkZXNpcmVkU2l6ZSBvbiBhIHdy
aXRlciBmb3IgYW4gZXJyb3JlZCBzdHJlYW0nKTsKKwordGVzdCgoKSA9PiB7CisgIGNvbnN0IHdz
ID0gbmV3IFdyaXRhYmxlU3RyZWFtKHt9KTsKKworICBjb25zdCB3cml0ZXIgPSB3cy5nZXRXcml0
ZXIoKTsKKyAgd3JpdGVyLmNsb3NlKCk7CisgIHdyaXRlci5yZWxlYXNlTG9jaygpOworCisgIHdz
LmdldFdyaXRlcigpOworfSwgJ3dzLmdldFdyaXRlcigpIG9uIGEgY2xvc2luZyBXcml0YWJsZVN0
cmVhbScpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworICBjb25zdCB3cyA9IG5ldyBXcml0YWJs
ZVN0cmVhbSh7fSk7CisKKyAgY29uc3Qgd3JpdGVyID0gd3MuZ2V0V3JpdGVyKCk7CisgIHJldHVy
biB3cml0ZXIuY2xvc2UoKS50aGVuKCgpID0+IHsKKyAgICB3cml0ZXIucmVsZWFzZUxvY2soKTsK
KworICAgIHdzLmdldFdyaXRlcigpOworICB9KTsKK30sICd3cy5nZXRXcml0ZXIoKSBvbiBhIGNs
b3NlZCBXcml0YWJsZVN0cmVhbScpOworCit0ZXN0KCgpID0+IHsKKyAgY29uc3Qgd3MgPSBuZXcg
V3JpdGFibGVTdHJlYW0oe30pOworCisgIGNvbnN0IHdyaXRlciA9IHdzLmdldFdyaXRlcigpOwor
ICB3cml0ZXIuYWJvcnQoKTsKKyAgd3JpdGVyLnJlbGVhc2VMb2NrKCk7CisKKyAgd3MuZ2V0V3Jp
dGVyKCk7Cit9LCAnd3MuZ2V0V3JpdGVyKCkgb24gYW4gYWJvcnRlZCBXcml0YWJsZVN0cmVhbScp
OworCitwcm9taXNlX3Rlc3QoKCkgPT4geworICBjb25zdCB3cyA9IG5ldyBXcml0YWJsZVN0cmVh
bSh7CisgICAgc3RhcnQoYykgeworICAgICAgYy5lcnJvcigpOworICAgIH0KKyAgfSk7CisKKyAg
Y29uc3Qgd3JpdGVyID0gd3MuZ2V0V3JpdGVyKCk7CisgIHJldHVybiB3cml0ZXIuY2xvc2VkLnRo
ZW4oCisgICAgdiA9PiBhc3NlcnRfdW5yZWFjaGVkKCd3cml0ZXIuY2xvc2VkIGZ1bGZpbGxlZCB1
bmV4cGVjdGVkbHkgd2l0aDogJyArIHYpLAorICAgICgpID0+IHsKKyAgICAgIHdyaXRlci5yZWxl
YXNlTG9jaygpOworCisgICAgICB3cy5nZXRXcml0ZXIoKTsKKyAgICB9CisgICk7Cit9LCAnd3Mu
Z2V0V3JpdGVyKCkgb24gYW4gZXJyb3JlZCBXcml0YWJsZVN0cmVhbScpOworCitwcm9taXNlX3Rl
c3QoKCkgPT4geworICBjb25zdCB3cyA9IG5ldyBXcml0YWJsZVN0cmVhbSh7fSk7CisKKyAgY29u
c3Qgd3JpdGVyID0gd3MuZ2V0V3JpdGVyKCk7CisgIHdyaXRlci5yZWxlYXNlTG9jaygpOworCisg
IHJldHVybiB3cml0ZXIuY2xvc2VkLnRoZW4oCisgICAgdiA9PiBhc3NlcnRfdW5yZWFjaGVkKCd3
cml0ZXIuY2xvc2VkIGZ1bGZpbGxlZCB1bmV4cGVjdGVkbHkgd2l0aDogJyArIHYpLAorICAgIGNs
b3NlZFJlamVjdGlvbiA9PiB7CisgICAgICBhc3NlcnRfZXF1YWxzKGNsb3NlZFJlamVjdGlvbi5u
YW1lLCAnVHlwZUVycm9yJywgJ2Nsb3NlZCBwcm9taXNlIHNob3VsZCByZWplY3Qgd2l0aCBhIFR5
cGVFcnJvcicpOworICAgICAgcmV0dXJuIHdyaXRlci5yZWFkeS50aGVuKAorICAgICAgICB2ID0+
IGFzc2VydF91bnJlYWNoZWQoJ3dyaXRlci5yZWFkeSBmdWxmaWxsZWQgdW5leHBlY3RlZGx5IHdp
dGg6ICcgKyB2KSwKKyAgICAgICAgcmVhZHlSZWplY3Rpb24gPT4gYXNzZXJ0X2VxdWFscyhyZWFk
eVJlamVjdGlvbiwgY2xvc2VkUmVqZWN0aW9uLAorICAgICAgICAgICdyZWFkeSBwcm9taXNlIHNo
b3VsZCByZWplY3Qgd2l0aCB0aGUgc2FtZSBlcnJvcicpCisgICAgICApOworICAgIH0KKyAgKTsK
K30sICdjbG9zZWQgYW5kIHJlYWR5IG9uIGEgcmVsZWFzZWQgd3JpdGVyJyk7CisKK3Byb21pc2Vf
dGVzdCh0ID0+IHsKKyAgbGV0IHRoaXNPYmplY3QgPSBudWxsOworICAvLyBDYWxscyB0byBTaW5r
IG1ldGhvZHMgYWZ0ZXIgdGhlIGZpcnN0IGFyZSBpbXBsaWNpdGx5IGlnbm9yZWQuIE9ubHkgdGhl
IGZpcnN0IHZhbHVlIHRoYXQgaXMgcGFzc2VkIHRvIHRoZSByZXNvbHZlcgorICAvLyBpcyB1c2Vk
LgorICBjbGFzcyBTaW5rIHsKKyAgICBzdGFydCgpIHsKKyAgICAgIC8vIENhbGxlZCB0d2ljZQor
ICAgICAgdC5zdGVwKCgpID0+IHsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyh0aGlzLCB0aGlzT2Jq
ZWN0LCAnc3RhcnQgc2hvdWxkIGJlIGNhbGxlZCBhcyBhIG1ldGhvZCcpOworICAgICAgfSk7Cisg
ICAgfQorCisgICAgd3JpdGUoKSB7CisgICAgICB0LnN0ZXAoKCkgPT4geworICAgICAgICBhc3Nl
cnRfZXF1YWxzKHRoaXMsIHRoaXNPYmplY3QsICd3cml0ZSBzaG91bGQgYmUgY2FsbGVkIGFzIGEg
bWV0aG9kJyk7CisgICAgICB9KTsKKyAgICB9CisKKyAgICBjbG9zZSgpIHsKKyAgICAgIHQuc3Rl
cCgoKSA9PiB7CisgICAgICAgIGFzc2VydF9lcXVhbHModGhpcywgdGhpc09iamVjdCwgJ2Nsb3Nl
IHNob3VsZCBiZSBjYWxsZWQgYXMgYSBtZXRob2QnKTsKKyAgICAgIH0pOworICAgIH0KKworICAg
IGFib3J0KCkgeworICAgICAgdC5zdGVwKCgpID0+IHsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyh0
aGlzLCB0aGlzT2JqZWN0LCAnYWJvcnQgc2hvdWxkIGJlIGNhbGxlZCBhcyBhIG1ldGhvZCcpOwor
ICAgICAgfSk7CisgICAgfQorICB9CisKKyAgY29uc3QgdGhlU2luayA9IG5ldyBTaW5rKCk7Cisg
IHRoaXNPYmplY3QgPSB0aGVTaW5rOworICBjb25zdCB3cyA9IG5ldyBXcml0YWJsZVN0cmVhbSh0
aGVTaW5rKTsKKworICBjb25zdCB3cml0ZXIgPSB3cy5nZXRXcml0ZXIoKTsKKworICB3cml0ZXIu
d3JpdGUoJ2EnKTsKKyAgY29uc3QgY2xvc2VQcm9taXNlID0gd3JpdGVyLmNsb3NlKCk7CisKKyAg
Y29uc3Qgd3MyID0gbmV3IFdyaXRhYmxlU3RyZWFtKHRoZVNpbmspOworICBjb25zdCB3cml0ZXIy
ID0gd3MyLmdldFdyaXRlcigpOworICBjb25zdCBhYm9ydFByb21pc2UgPSB3cml0ZXIyLmFib3J0
KCk7CisKKyAgcmV0dXJuIFByb21pc2UuYWxsKFsKKyAgICBjbG9zZVByb21pc2UsCisgICAgYWJv
cnRQcm9taXNlCisgIF0pOworfSwgJ1dyaXRhYmxlU3RyZWFtIHNob3VsZCBjYWxsIHVuZGVybHlp
bmcgc2luayBtZXRob2RzIGFzIG1ldGhvZHMnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBm
dW5jdGlvbiBmdW5jdGlvbldpdGhPdmVybG9hZHMoKSB7fQorICBmdW5jdGlvbldpdGhPdmVybG9h
ZHMuYXBwbHkgPSB0LnVucmVhY2hlZF9mdW5jKCdhcHBseSgpIHNob3VsZCBub3QgYmUgY2FsbGVk
Jyk7CisgIGZ1bmN0aW9uV2l0aE92ZXJsb2Fkcy5jYWxsID0gdC51bnJlYWNoZWRfZnVuYygnY2Fs
bCgpIHNob3VsZCBub3QgYmUgY2FsbGVkJyk7CisgIGNvbnN0IHVuZGVybHlpbmdTaW5rID0gewor
ICAgIHN0YXJ0OiBmdW5jdGlvbldpdGhPdmVybG9hZHMsCisgICAgd3JpdGU6IGZ1bmN0aW9uV2l0
aE92ZXJsb2FkcywKKyAgICBjbG9zZTogZnVuY3Rpb25XaXRoT3ZlcmxvYWRzLAorICAgIGFib3J0
OiBmdW5jdGlvbldpdGhPdmVybG9hZHMKKyAgfTsKKyAgLy8gVGVzdCBzdGFydCgpLCB3cml0ZSgp
LCBjbG9zZSgpLgorICBjb25zdCB3czEgPSBuZXcgV3JpdGFibGVTdHJlYW0odW5kZXJseWluZ1Np
bmspOworICBjb25zdCB3cml0ZXIxID0gd3MxLmdldFdyaXRlcigpOworICB3cml0ZXIxLndyaXRl
KCdhJyk7CisgIHdyaXRlcjEuY2xvc2UoKTsKKworICAvLyBUZXN0IGFib3J0KCkuCisgIGNvbnN0
IGFib3J0RXJyb3IgPSBuZXcgRXJyb3IoKTsKKyAgYWJvcnRFcnJvci5uYW1lID0gJ2Fib3J0IGVy
cm9yJzsKKworICBjb25zdCB3czIgPSBuZXcgV3JpdGFibGVTdHJlYW0odW5kZXJseWluZ1Npbmsp
OworICBjb25zdCB3cml0ZXIyID0gd3MyLmdldFdyaXRlcigpOworICB3cml0ZXIyLmFib3J0KGFi
b3J0RXJyb3IpOworCisgIC8vIFRlc3QgYWJvcnQoKSB3aXRoIGEgY2xvc2UgdW5kZXJseWluZyBz
aW5rIG1ldGhvZCBwcmVzZW50LiAoSGlzdG9yaWNhbDsgc2VlCisgIC8vIGh0dHBzOi8vZ2l0aHVi
LmNvbS93aGF0d2cvc3RyZWFtcy9pc3N1ZXMvNjIwI2lzc3VlY29tbWVudC0yNjM0ODM5NTMgZm9y
IHdoYXQgdXNlZCB0byBiZQorICAvLyB0ZXN0ZWQgaGVyZS4gQnV0IG1vcmUgY292ZXJhZ2UgY2Fu
J3QgaHVydC4pCisgIGNvbnN0IHdzMyA9IG5ldyBXcml0YWJsZVN0cmVhbSh7CisgICAgc3RhcnQ6
IGZ1bmN0aW9uV2l0aE92ZXJsb2FkcywKKyAgICB3cml0ZTogZnVuY3Rpb25XaXRoT3ZlcmxvYWRz
LAorICAgIGNsb3NlOiBmdW5jdGlvbldpdGhPdmVybG9hZHMKKyAgfSk7CisgIGNvbnN0IHdyaXRl
cjMgPSB3czMuZ2V0V3JpdGVyKCk7CisgIHdyaXRlcjMuYWJvcnQoYWJvcnRFcnJvcik7CisKKyAg
cmV0dXJuIHdyaXRlcjEuY2xvc2VkCisgICAgICAudGhlbigoKSA9PiBwcm9taXNlX3JlamVjdHNf
ZXhhY3RseSh0LCBhYm9ydEVycm9yLCB3cml0ZXIyLmNsb3NlZCwgJ3dyaXRlcjIuY2xvc2VkIHNo
b3VsZCBiZSByZWplY3RlZCcpKQorICAgICAgLnRoZW4oKCkgPT4gcHJvbWlzZV9yZWplY3RzX2V4
YWN0bHkodCwgYWJvcnRFcnJvciwgd3JpdGVyMy5jbG9zZWQsICd3cml0ZXIzLmNsb3NlZCBzaG91
bGQgYmUgcmVqZWN0ZWQnKSk7Cit9LCAnbWV0aG9kcyBzaG91bGQgbm90IG5vdCBoYXZlIC5hcHBs
eSgpIG9yIC5jYWxsKCkgY2FsbGVkJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisgIGNvbnN0
IHN0cmF0ZWd5ID0geworICAgIHNpemUoKSB7CisgICAgICBpZiAodGhpcyAhPT0gdW5kZWZpbmVk
KSB7CisgICAgICAgIHRocm93IG5ldyBFcnJvcignc2l6ZSBjYWxsZWQgYXMgYSBtZXRob2QnKTsK
KyAgICAgIH0KKyAgICAgIHJldHVybiAxOworICAgIH0KKyAgfTsKKworICBjb25zdCB3cyA9IG5l
dyBXcml0YWJsZVN0cmVhbSh7fSwgc3RyYXRlZ3kpOworICBjb25zdCB3cml0ZXIgPSB3cy5nZXRX
cml0ZXIoKTsKKyAgcmV0dXJuIHdyaXRlci53cml0ZSgnYScpOworfSwgJ1dyaXRhYmxlU3RyZWFt
XCdzIHN0cmF0ZWd5LnNpemUgc2hvdWxkIG5vdCBiZSBjYWxsZWQgYXMgYSBtZXRob2QnKTsKKwor
cHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgY29uc3Qgd3MgPSBuZXcgV3JpdGFibGVTdHJlYW0oKTsK
KyAgY29uc3Qgd3JpdGVyMSA9IHdzLmdldFdyaXRlcigpOworICBhc3NlcnRfZXF1YWxzKHVuZGVm
aW5lZCwgd3JpdGVyMS5yZWxlYXNlTG9jaygpLCAncmVsZWFzZUxvY2soKSBzaG91bGQgcmV0dXJu
IHVuZGVmaW5lZCcpOworICBjb25zdCB3cml0ZXIyID0gd3MuZ2V0V3JpdGVyKCk7CisgIGFzc2Vy
dF9lcXVhbHModW5kZWZpbmVkLCB3cml0ZXIxLnJlbGVhc2VMb2NrKCksICduby1vcCByZWxlYXNl
TG9jaygpIHNob3VsZCByZXR1cm4gdW5kZWZpbmVkJyk7CisgIC8vIENhbGxpbmcgcmVsZWFzZUxv
Y2soKSBvbiB3cml0ZXIxIHNob3VsZCBub3QgaW50ZXJmZXJlIHdpdGggd3JpdGVyMi4gSWYgaXQg
ZGlkLCB0aGVuIHRoZSByZWFkeSBwcm9taXNlIHdvdWxkIGJlCisgIC8vIHJlamVjdGVkLgorICBy
ZXR1cm4gd3JpdGVyMi5yZWFkeTsKK30sICdyZWR1bmRhbnQgcmVsZWFzZUxvY2soKSBpcyBuby1v
cCcpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworICBjb25zdCBldmVudHMgPSBbXTsKKyAgY29u
c3Qgd3MgPSBuZXcgV3JpdGFibGVTdHJlYW0oKTsKKyAgY29uc3Qgd3JpdGVyID0gd3MuZ2V0V3Jp
dGVyKCk7CisgIHJldHVybiB3cml0ZXIucmVhZHkudGhlbigoKSA9PiB7CisgICAgLy8gRm9yY2Ug
dGhlIHJlYWR5IHByb21pc2UgYmFjayB0byBhIHBlbmRpbmcgc3RhdGUuCisgICAgY29uc3Qgd3Jp
dGVyUHJvbWlzZSA9IHdyaXRlci53cml0ZSgnZHVtbXknKTsKKyAgICBjb25zdCByZWFkeVByb21p
c2UgPSB3cml0ZXIucmVhZHkuY2F0Y2goKCkgPT4gZXZlbnRzLnB1c2goJ3JlYWR5JykpOworICAg
IGNvbnN0IGNsb3NlZFByb21pc2UgPSB3cml0ZXIuY2xvc2VkLmNhdGNoKCgpID0+IGV2ZW50cy5w
dXNoKCdjbG9zZWQnKSk7CisgICAgd3JpdGVyLnJlbGVhc2VMb2NrKCk7CisgICAgcmV0dXJuIFBy
b21pc2UuYWxsKFtyZWFkeVByb21pc2UsIGNsb3NlZFByb21pc2VdKS50aGVuKCgpID0+IHsKKyAg
ICAgIGFzc2VydF9hcnJheV9lcXVhbHMoZXZlbnRzLCBbJ3JlYWR5JywgJ2Nsb3NlZCddLCAncmVh
ZHkgcHJvbWlzZSBzaG91bGQgZmlyZSBiZWZvcmUgY2xvc2VkIHByb21pc2UnKTsKKyAgICAgIC8v
IFN0b3AgdGhlIHdyaXRlciBwcm9taXNlIGhhbmdpbmcgYXJvdW5kIGFmdGVyIHRoZSB0ZXN0IGhh
cyBmaW5pc2hlZC4KKyAgICAgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAgICAgIHdyaXRlclBy
b21pc2UsCisgICAgICAgIHdzLmFib3J0KCkKKyAgICAgIF0pOworICAgIH0pOworICB9KTsKK30s
ICdyZWFkeSBwcm9taXNlIHNob3VsZCBmaXJlIGJlZm9yZSBjbG9zZWQgb24gcmVsZWFzZUxvY2sn
KTsKKwordGVzdCgoKSA9PiB7CisgIGNsYXNzIFN1YmNsYXNzIGV4dGVuZHMgV3JpdGFibGVTdHJl
YW0geworICAgIGV4dHJhRnVuY3Rpb24oKSB7CisgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9Cisg
IH0KKyAgYXNzZXJ0X2VxdWFscygKKyAgICAgIE9iamVjdC5nZXRQcm90b3R5cGVPZihTdWJjbGFz
cy5wcm90b3R5cGUpLCBXcml0YWJsZVN0cmVhbS5wcm90b3R5cGUsCisgICAgICAnU3ViY2xhc3Mu
cHJvdG90eXBlXCdzIHByb3RvdHlwZSBzaG91bGQgYmUgV3JpdGFibGVTdHJlYW0ucHJvdG90eXBl
Jyk7CisgIGFzc2VydF9lcXVhbHMoT2JqZWN0LmdldFByb3RvdHlwZU9mKFN1YmNsYXNzKSwgV3Jp
dGFibGVTdHJlYW0sCisgICAgICAgICAgICAgICAgJ1N1YmNsYXNzXCdzIHByb3RvdHlwZSBzaG91
bGQgYmUgV3JpdGFibGVTdHJlYW0nKTsKKyAgY29uc3Qgc3ViID0gbmV3IFN1YmNsYXNzKCk7Cisg
IGFzc2VydF90cnVlKHN1YiBpbnN0YW5jZW9mIFdyaXRhYmxlU3RyZWFtLAorICAgICAgICAgICAg
ICAnU3ViY2xhc3Mgb2JqZWN0IHNob3VsZCBiZSBhbiBpbnN0YW5jZSBvZiBXcml0YWJsZVN0cmVh
bScpOworICBhc3NlcnRfdHJ1ZShzdWIgaW5zdGFuY2VvZiBTdWJjbGFzcywKKyAgICAgICAgICAg
ICAgJ1N1YmNsYXNzIG9iamVjdCBzaG91bGQgYmUgYW4gaW5zdGFuY2Ugb2YgU3ViY2xhc3MnKTsK
KyAgY29uc3QgbG9ja2VkR2V0dGVyID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcigK
KyAgICAgIFdyaXRhYmxlU3RyZWFtLnByb3RvdHlwZSwgJ2xvY2tlZCcpLmdldDsKKyAgYXNzZXJ0
X2VxdWFscyhsb2NrZWRHZXR0ZXIuY2FsbChzdWIpLCBzdWIubG9ja2VkLAorICAgICAgICAgICAg
ICAgICdTdWJjbGFzcyBvYmplY3Qgc2hvdWxkIHBhc3MgYnJhbmQgY2hlY2snKTsKKyAgYXNzZXJ0
X3RydWUoc3ViLmV4dHJhRnVuY3Rpb24oKSwKKyAgICAgICAgICAgICAgJ2V4dHJhRnVuY3Rpb24o
KSBzaG91bGQgYmUgcHJlc2VudCBvbiBTdWJjbGFzcyBvYmplY3QnKTsKK30sICdTdWJjbGFzc2lu
ZyBXcml0YWJsZVN0cmVhbSBzaG91bGQgd29yaycpOworCit0ZXN0KCgpID0+IHsKKyAgY29uc3Qg
d3MgPSBuZXcgV3JpdGFibGVTdHJlYW0oKTsKKyAgYXNzZXJ0X2ZhbHNlKHdzLmxvY2tlZCwgJ3N0
cmVhbSBzaG91bGQgbm90IGJlIGxvY2tlZCcpOworICB3cy5nZXRXcml0ZXIoKTsKKyAgYXNzZXJ0
X3RydWUod3MubG9ja2VkLCAnc3RyZWFtIHNob3VsZCBiZSBsb2NrZWQnKTsKK30sICd0aGUgbG9j
a2VkIGdldHRlciBzaG91bGQgcmV0dXJuIHRydWUgaWYgdGhlIHN0cmVhbSBoYXMgYSB3cml0ZXIn
KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL2dlbmVyYWwuYW55Lndvcmtlci1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
d3JpdGFibGUtc3RyZWFtcy9nZW5lcmFsLmFueS53b3JrZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmZlYWI1YmNiZWYwMDRmMzA2M2NkMzAyYzkyYTlhNzIxZGVkZmJkNWQKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvd3JpdGFibGUtc3RyZWFtcy9nZW5lcmFsLmFueS53b3JrZXItZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMTggQEAKKworRkFJTCBkZXNpcmVkU2l6ZSBvbiBhIHJlbGVhc2VkIHdyaXRlciBDYW4n
dCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBkZXNpcmVkU2l6ZSBpbml0aWFs
IHZhbHVlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIGRlc2lyZWRT
aXplIG9uIGEgd3JpdGVyIGZvciBhIGNsb3NlZCBzdHJlYW0gQ2FuJ3QgZmluZCB2YXJpYWJsZTog
V3JpdGFibGVTdHJlYW0KK0ZBSUwgZGVzaXJlZFNpemUgb24gYSB3cml0ZXIgZm9yIGFuIGVycm9y
ZWQgc3RyZWFtIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIHdzLmdl
dFdyaXRlcigpIG9uIGEgY2xvc2luZyBXcml0YWJsZVN0cmVhbSBDYW4ndCBmaW5kIHZhcmlhYmxl
OiBXcml0YWJsZVN0cmVhbQorRkFJTCB3cy5nZXRXcml0ZXIoKSBvbiBhIGNsb3NlZCBXcml0YWJs
ZVN0cmVhbSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCB3cy5nZXRX
cml0ZXIoKSBvbiBhbiBhYm9ydGVkIFdyaXRhYmxlU3RyZWFtIENhbid0IGZpbmQgdmFyaWFibGU6
IFdyaXRhYmxlU3RyZWFtCitGQUlMIHdzLmdldFdyaXRlcigpIG9uIGFuIGVycm9yZWQgV3JpdGFi
bGVTdHJlYW0gQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgY2xvc2Vk
IGFuZCByZWFkeSBvbiBhIHJlbGVhc2VkIHdyaXRlciBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0
YWJsZVN0cmVhbQorRkFJTCBXcml0YWJsZVN0cmVhbSBzaG91bGQgY2FsbCB1bmRlcmx5aW5nIHNp
bmsgbWV0aG9kcyBhcyBtZXRob2RzIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFt
CitGQUlMIG1ldGhvZHMgc2hvdWxkIG5vdCBub3QgaGF2ZSAuYXBwbHkoKSBvciAuY2FsbCgpIGNh
bGxlZCBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBXcml0YWJsZVN0
cmVhbSdzIHN0cmF0ZWd5LnNpemUgc2hvdWxkIG5vdCBiZSBjYWxsZWQgYXMgYSBtZXRob2QgQ2Fu
J3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgcmVkdW5kYW50IHJlbGVhc2VM
b2NrKCkgaXMgbm8tb3AgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwg
cmVhZHkgcHJvbWlzZSBzaG91bGQgZmlyZSBiZWZvcmUgY2xvc2VkIG9uIHJlbGVhc2VMb2NrIENh
bid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIFN1YmNsYXNzaW5nIFdyaXRh
YmxlU3RyZWFtIHNob3VsZCB3b3JrIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFt
CitGQUlMIHRoZSBsb2NrZWQgZ2V0dGVyIHNob3VsZCByZXR1cm4gdHJ1ZSBpZiB0aGUgc3RyZWFt
IGhhcyBhIHdyaXRlciBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvd3JpdGFibGUtc3RyZWFtcy9nZW5lcmFsLmFueS53b3JrZXIuaHRtbCBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1z
L2dlbmVyYWwuYW55Lndvcmtlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzODI5MTM1MjhlNjkzYjNhNWQ1
NmM2NjBhNDUwNjA5ODBiNTQ4YzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9nZW5l
cmFsLmFueS53b3JrZXIuaHRtbApAQCAtMCwwICsxIEBACis8IS0tIFRoaXMgZmlsZSBpcyByZXF1
aXJlZCBmb3IgV2ViS2l0IHRlc3QgaW5mcmFzdHJ1Y3R1cmUgdG8gcnVuIHRoZSB0ZW1wbGF0ZWQg
dGVzdCAtLT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3Ry
ZWFtcy9wcm9wZXJ0aWVzLmFueS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9wcm9wZXJ0aWVz
LmFueS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzI1NDQ4OWM4N2YyZGZhYmIyMmVjOGEwMWUy
YWQ5ZWYwNTI0MjM3MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL3Byb3BlcnRpZXMu
YW55LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBACisKK0ZBSUwgc2luayBtZXRob2Qgc3Rh
cnQgc2hvdWxkIGJlIGNhbGxlZCB3aXRoIHRoZSByaWdodCBudW1iZXIgb2YgYXJndW1lbnRzIHdz
LmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5n
ZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkKK0ZBSUwgc2luayBtZXRob2Qgc3RhcnQgc2hvdWxkIGJl
IGNhbGxlZCBldmVuIHdoZW4gaXQncyBsb2NhdGVkIG9uIHRoZSBwcm90b3R5cGUgY2hhaW4gd3Mu
Z2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdl
dFdyaXRlcicgaXMgdW5kZWZpbmVkKQorRkFJTCBzaW5rIG1ldGhvZCB3cml0ZSBzaG91bGQgYmUg
Y2FsbGVkIHdpdGggdGhlIHJpZ2h0IG51bWJlciBvZiBhcmd1bWVudHMgd3MuZ2V0V3JpdGVyIGlz
IG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicgaXMg
dW5kZWZpbmVkKQorRkFJTCBzaW5rIG1ldGhvZCB3cml0ZSBzaG91bGQgYmUgY2FsbGVkIGV2ZW4g
d2hlbiBpdCdzIGxvY2F0ZWQgb24gdGhlIHByb3RvdHlwZSBjaGFpbiB3cy5nZXRXcml0ZXIgaXMg
bm90IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3JpdGVyKCknLCAnd3MuZ2V0V3JpdGVyJyBpcyB1
bmRlZmluZWQpCitGQUlMIHNpbmsgbWV0aG9kIGNsb3NlIHNob3VsZCBiZSBjYWxsZWQgd2l0aCB0
aGUgcmlnaHQgbnVtYmVyIG9mIGFyZ3VtZW50cyB3cy5nZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rp
b24uIChJbiAnd3MuZ2V0V3JpdGVyKCknLCAnd3MuZ2V0V3JpdGVyJyBpcyB1bmRlZmluZWQpCitG
QUlMIHNpbmsgbWV0aG9kIGNsb3NlIHNob3VsZCBiZSBjYWxsZWQgZXZlbiB3aGVuIGl0J3MgbG9j
YXRlZCBvbiB0aGUgcHJvdG90eXBlIGNoYWluIHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlv
bi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkKK0ZB
SUwgc2luayBtZXRob2QgYWJvcnQgc2hvdWxkIGJlIGNhbGxlZCB3aXRoIHRoZSByaWdodCBudW1i
ZXIgb2YgYXJndW1lbnRzIHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5n
ZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkKK0ZBSUwgc2luayBtZXRo
b2QgYWJvcnQgc2hvdWxkIGJlIGNhbGxlZCBldmVuIHdoZW4gaXQncyBsb2NhdGVkIG9uIHRoZSBw
cm90b3R5cGUgY2hhaW4gd3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdl
dFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicgaXMgdW5kZWZpbmVkKQorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFi
bGUtc3RyZWFtcy9wcm9wZXJ0aWVzLmFueS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvcHJvcGVydGllcy5h
bnkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4yMzgyOTEzNTI4ZTY5M2IzYTVkNTZjNjYwYTQ1MDYwOTgwYjU0
OGMzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvcHJvcGVydGllcy5hbnkuaHRtbApA
QCAtMCwwICsxIEBACis8IS0tIFRoaXMgZmlsZSBpcyByZXF1aXJlZCBmb3IgV2ViS2l0IHRlc3Qg
aW5mcmFzdHJ1Y3R1cmUgdG8gcnVuIHRoZSB0ZW1wbGF0ZWQgdGVzdCAtLT4KXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9wcm9wZXJ0aWVzLmFueS5q
cyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93
cml0YWJsZS1zdHJlYW1zL3Byb3BlcnRpZXMuYW55LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBmN2Y4NzZkOGI2
ZmM0Yjk3ZGM4MDEwY2U1N2RlYTQxZDFlNGI1OTMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3Ry
ZWFtcy9wcm9wZXJ0aWVzLmFueS5qcwpAQCAtMCwwICsxLDUzIEBACisvLyBNRVRBOiBnbG9iYWw9
d2luZG93LHdvcmtlcixqc3NoZWxsCisndXNlIHN0cmljdCc7CisKK2NvbnN0IHNpbmtNZXRob2Rz
ID0geworICBzdGFydDogeworICAgIGxlbmd0aDogMSwKKyAgICB0cmlnZ2VyOiAoKSA9PiBQcm9t
aXNlLnJlc29sdmUoKQorICB9LAorICB3cml0ZTogeworICAgIGxlbmd0aDogMiwKKyAgICB0cmln
Z2VyOiB3cml0ZXIgPT4gd3JpdGVyLndyaXRlKCkKKyAgfSwKKyAgY2xvc2U6IHsKKyAgICBsZW5n
dGg6IDAsCisgICAgdHJpZ2dlcjogd3JpdGVyID0+IHdyaXRlci5jbG9zZSgpCisgIH0sCisgIGFi
b3J0OiB7CisgICAgbGVuZ3RoOiAxLAorICAgIHRyaWdnZXI6IHdyaXRlciA9PiB3cml0ZXIuYWJv
cnQoKQorICB9Cit9OworCitmb3IgKGNvbnN0IG1ldGhvZCBpbiBzaW5rTWV0aG9kcykgeworICBj
b25zdCB7IGxlbmd0aCwgdHJpZ2dlciB9ID0gc2lua01ldGhvZHNbbWV0aG9kXTsKKworICAvLyBT
b21lIHNlbWFudGljIHRlc3RzIG9mIGhvdyBzaW5rIG1ldGhvZHMgYXJlIGNhbGxlZCBjYW4gYmUg
Zm91bmQgaW4gZ2VuZXJhbC5qcywgYXMgd2VsbCBhcyBpbiB0aGUgdGVzdCBmaWxlcworICAvLyBz
cGVjaWZpYyB0byBlYWNoIG1ldGhvZC4KKyAgcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgICBsZXQg
YXJnQ291bnQ7CisgICAgY29uc3Qgd3MgPSBuZXcgV3JpdGFibGVTdHJlYW0oeworICAgICAgW21l
dGhvZF0oLi4uYXJncykgeworICAgICAgICBhcmdDb3VudCA9IGFyZ3MubGVuZ3RoOworICAgICAg
fQorICAgIH0pOworICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodHJpZ2dlcih3cy5nZXRXcml0
ZXIoKSkpLnRoZW4oKCkgPT4geworICAgICAgYXNzZXJ0X2VxdWFscyhhcmdDb3VudCwgbGVuZ3Ro
LCBgJHttZXRob2R9IHNob3VsZCBiZSBjYWxsZWQgd2l0aCAke2xlbmd0aH0gYXJndW1lbnRzYCk7
CisgICAgfSk7CisgIH0sIGBzaW5rIG1ldGhvZCAke21ldGhvZH0gc2hvdWxkIGJlIGNhbGxlZCB3
aXRoIHRoZSByaWdodCBudW1iZXIgb2YgYXJndW1lbnRzYCk7CisKKyAgcHJvbWlzZV90ZXN0KCgp
ID0+IHsKKyAgICBsZXQgbWV0aG9kV2FzQ2FsbGVkID0gZmFsc2U7CisgICAgZnVuY3Rpb24gU2lu
aygpIHt9CisgICAgU2luay5wcm90b3R5cGUgPSB7CisgICAgICBbbWV0aG9kXSgpIHsKKyAgICAg
ICAgbWV0aG9kV2FzQ2FsbGVkID0gdHJ1ZTsKKyAgICAgIH0KKyAgICB9OworICAgIGNvbnN0IHdz
ID0gbmV3IFdyaXRhYmxlU3RyZWFtKG5ldyBTaW5rKCkpOworICAgIHJldHVybiBQcm9taXNlLnJl
c29sdmUodHJpZ2dlcih3cy5nZXRXcml0ZXIoKSkpLnRoZW4oKCkgPT4geworICAgICAgYXNzZXJ0
X3RydWUobWV0aG9kV2FzQ2FsbGVkLCBgJHttZXRob2R9IHNob3VsZCBiZSBjYWxsZWRgKTsKKyAg
ICB9KTsKKyAgfSwgYHNpbmsgbWV0aG9kICR7bWV0aG9kfSBzaG91bGQgYmUgY2FsbGVkIGV2ZW4g
d2hlbiBpdCdzIGxvY2F0ZWQgb24gdGhlIHByb3RvdHlwZSBjaGFpbmApOworfQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dy
aXRhYmxlLXN0cmVhbXMvcHJvcGVydGllcy5hbnkud29ya2VyLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1z
dHJlYW1zL3Byb3BlcnRpZXMuYW55Lndvcmtlci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzQ0
M2E1OTkwNjkxMDQ5ODgwZmZjODI0YzZmZTI2NWIzY2JiMGQ3NAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0
YWJsZS1zdHJlYW1zL3Byb3BlcnRpZXMuYW55Lndvcmtlci1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwxMCBAQAorCitGQUlMIHNpbmsgbWV0aG9kIHN0YXJ0IHNob3VsZCBiZSBjYWxsZWQgd2l0aCB0
aGUgcmlnaHQgbnVtYmVyIG9mIGFyZ3VtZW50cyBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJs
ZVN0cmVhbQorRkFJTCBzaW5rIG1ldGhvZCBzdGFydCBzaG91bGQgYmUgY2FsbGVkIGV2ZW4gd2hl
biBpdCdzIGxvY2F0ZWQgb24gdGhlIHByb3RvdHlwZSBjaGFpbiBDYW4ndCBmaW5kIHZhcmlhYmxl
OiBXcml0YWJsZVN0cmVhbQorRkFJTCBzaW5rIG1ldGhvZCB3cml0ZSBzaG91bGQgYmUgY2FsbGVk
IHdpdGggdGhlIHJpZ2h0IG51bWJlciBvZiBhcmd1bWVudHMgQ2FuJ3QgZmluZCB2YXJpYWJsZTog
V3JpdGFibGVTdHJlYW0KK0ZBSUwgc2luayBtZXRob2Qgd3JpdGUgc2hvdWxkIGJlIGNhbGxlZCBl
dmVuIHdoZW4gaXQncyBsb2NhdGVkIG9uIHRoZSBwcm90b3R5cGUgY2hhaW4gQ2FuJ3QgZmluZCB2
YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgc2luayBtZXRob2QgY2xvc2Ugc2hvdWxkIGJl
IGNhbGxlZCB3aXRoIHRoZSByaWdodCBudW1iZXIgb2YgYXJndW1lbnRzIENhbid0IGZpbmQgdmFy
aWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIHNpbmsgbWV0aG9kIGNsb3NlIHNob3VsZCBiZSBj
YWxsZWQgZXZlbiB3aGVuIGl0J3MgbG9jYXRlZCBvbiB0aGUgcHJvdG90eXBlIGNoYWluIENhbid0
IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIHNpbmsgbWV0aG9kIGFib3J0IHNo
b3VsZCBiZSBjYWxsZWQgd2l0aCB0aGUgcmlnaHQgbnVtYmVyIG9mIGFyZ3VtZW50cyBDYW4ndCBm
aW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBzaW5rIG1ldGhvZCBhYm9ydCBzaG91
bGQgYmUgY2FsbGVkIGV2ZW4gd2hlbiBpdCdzIGxvY2F0ZWQgb24gdGhlIHByb3RvdHlwZSBjaGFp
biBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUt
c3RyZWFtcy9wcm9wZXJ0aWVzLmFueS53b3JrZXIuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL3Byb3BlcnRp
ZXMuYW55Lndvcmtlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzODI5MTM1MjhlNjkzYjNhNWQ1NmM2NjBh
NDUwNjA5ODBiNTQ4YzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9wcm9wZXJ0aWVz
LmFueS53b3JrZXIuaHRtbApAQCAtMCwwICsxIEBACis8IS0tIFRoaXMgZmlsZSBpcyByZXF1aXJl
ZCBmb3IgV2ViS2l0IHRlc3QgaW5mcmFzdHJ1Y3R1cmUgdG8gcnVuIHRoZSB0ZW1wbGF0ZWQgdGVz
dCAtLT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFt
cy9yZWVudHJhbnQtc3RyYXRlZ3kuYW55LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL3JlZW50
cmFudC1zdHJhdGVneS5hbnktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjczMWZhMmM5ZjY1MjA1
NzQ2Yzc2NjY3Zjk4NDRkZjUwOTI0YjM5ZWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFt
cy9yZWVudHJhbnQtc3RyYXRlZ3kuYW55LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDkgQEAKKwor
RkFJTCB3cml0ZXMgc2hvdWxkIGJlIHdyaXR0ZW4gaW4gdGhlIHN0YW5kYXJkIG9yZGVyIGhpZ2hX
YXRlck1hcmsgdmFsdWUgaXMgbmVnYXRpdmUgb3Igbm90IGEgbnVtYmVyCitGQUlMIHdyaXRlci53
cml0ZSgpIHByb21pc2VzIHNob3VsZCByZXNvbHZlIGluIHRoZSBzdGFuZGFyZCBvcmRlciBoaWdo
V2F0ZXJNYXJrIHZhbHVlIGlzIG5lZ2F0aXZlIG9yIG5vdCBhIG51bWJlcgorRkFJTCBjb250cm9s
bGVyLmVycm9yKCkgc2hvdWxkIHdvcmsgd2hlbiBjYWxsZWQgZnJvbSB3aXRoaW4gc3RyYXRlZ3ku
c2l6ZSgpIGhpZ2hXYXRlck1hcmsgdmFsdWUgaXMgbmVnYXRpdmUgb3Igbm90IGEgbnVtYmVyCitG
QUlMIGNsb3NlKCkgc2hvdWxkIHdvcmsgd2hlbiBjYWxsZWQgZnJvbSB3aXRoaW4gc3RyYXRlZ3ku
c2l6ZSgpIGhpZ2hXYXRlck1hcmsgdmFsdWUgaXMgbmVnYXRpdmUgb3Igbm90IGEgbnVtYmVyCitG
QUlMIGFib3J0KCkgc2hvdWxkIHdvcmsgd2hlbiBjYWxsZWQgZnJvbSB3aXRoaW4gc3RyYXRlZ3ku
c2l6ZSgpIGhpZ2hXYXRlck1hcmsgdmFsdWUgaXMgbmVnYXRpdmUgb3Igbm90IGEgbnVtYmVyCitG
QUlMIHJlbGVhc2VMb2NrKCkgc2hvdWxkIGFib3J0IHRoZSB3cml0ZSgpIHdoZW4gY2FsbGVkIHdp
dGhpbiBzdHJhdGVneS5zaXplKCkgaGlnaFdhdGVyTWFyayB2YWx1ZSBpcyBuZWdhdGl2ZSBvciBu
b3QgYSBudW1iZXIKK0ZBSUwgb3JpZ2luYWwgcmVhZGVyIHNob3VsZCBlcnJvciB3aGVuIG5ldyBy
ZWFkZXIgaXMgY3JlYXRlZCB3aXRoaW4gc3RyYXRlZ3kuc2l6ZSgpIGhpZ2hXYXRlck1hcmsgdmFs
dWUgaXMgbmVnYXRpdmUgb3Igbm90IGEgbnVtYmVyCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1z
L3JlZW50cmFudC1zdHJhdGVneS5hbnkuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL3JlZW50cmFudC1zdHJh
dGVneS5hbnkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMzgyOTEzNTI4ZTY5M2IzYTVkNTZjNjYwYTQ1MDYw
OTgwYjU0OGMzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvcmVlbnRyYW50LXN0cmF0
ZWd5LmFueS5odG1sCkBAIC0wLDAgKzEgQEAKKzwhLS0gVGhpcyBmaWxlIGlzIHJlcXVpcmVkIGZv
ciBXZWJLaXQgdGVzdCBpbmZyYXN0cnVjdHVyZSB0byBydW4gdGhlIHRlbXBsYXRlZCB0ZXN0IC0t
PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL3Jl
ZW50cmFudC1zdHJhdGVneS5hbnkuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9yZWVudHJhbnQtc3RyYXRlZ3ku
YW55LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmFmZGU0MTNiNDI1MmQxNWEwZjY4M2JlZDY5NDFjMjM0ODE2MWY1
ZjIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9yZWVudHJhbnQtc3RyYXRlZ3kuYW55
LmpzCkBAIC0wLDAgKzEsMTc0IEBACisvLyBNRVRBOiBnbG9iYWw9d2luZG93LHdvcmtlcixqc3No
ZWxsCisvLyBNRVRBOiBzY3JpcHQ9Li4vcmVzb3VyY2VzL3Rlc3QtdXRpbHMuanMKKy8vIE1FVEE6
IHNjcmlwdD0uLi9yZXNvdXJjZXMvcmVjb3JkaW5nLXN0cmVhbXMuanMKKyd1c2Ugc3RyaWN0JzsK
KworLy8gVGhlc2UgdGVzdHMgZXhlcmNpc2UgdGhlIHBhdGhvbG9naWNhbCBjYXNlIG9mIGNhbGxp
bmcgV3JpdGFibGVTdHJlYW0qIG1ldGhvZHMgZnJvbSB3aXRoaW4gdGhlIHN0cmF0ZWd5LnNpemUo
KQorLy8gY2FsbGJhY2suIFRoaXMgaXMgbm90IHNvbWV0aGluZyBhbnkgcmVhbCBjb2RlIHNob3Vs
ZCBldmVyIGRvLiBGYWlsdXJlcyBoZXJlIGluZGljYXRlIHN1YnRsZSBkZXZpYXRpb25zIGZyb20g
dGhlCisvLyBzdGFuZGFyZCB0aGF0IG1heSBhZmZlY3QgcmVhbCwgbm9uLXBhdGhvbG9naWNhbCBj
b2RlLgorCitjb25zdCBlcnJvcjEgPSB7IG5hbWU6ICdlcnJvcjEnIH07CisKK3Byb21pc2VfdGVz
dCgoKSA9PiB7CisgIGxldCB3cml0ZXI7CisgIGNvbnN0IHN0cmF0ZWd5ID0geworICAgIHNpemUo
Y2h1bmspIHsKKyAgICAgIGlmIChjaHVuayA+IDApIHsKKyAgICAgICAgd3JpdGVyLndyaXRlKGNo
dW5rIC0gMSk7CisgICAgICB9CisgICAgICByZXR1cm4gY2h1bms7CisgICAgfQorICB9OworCisg
IGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0oe30sIHN0cmF0ZWd5KTsKKyAgd3Jp
dGVyID0gd3MuZ2V0V3JpdGVyKCk7CisgIHJldHVybiB3cml0ZXIud3JpdGUoMikKKyAgICAgIC50
aGVuKCgpID0+IHsKKyAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsnd3Jp
dGUnLCAwLCAnd3JpdGUnLCAxLCAnd3JpdGUnLCAyXSwgJ3dyaXRlcyBzaG91bGQgYXBwZWFyIGlu
IG9yZGVyJyk7CisgICAgICB9KTsKK30sICd3cml0ZXMgc2hvdWxkIGJlIHdyaXR0ZW4gaW4gdGhl
IHN0YW5kYXJkIG9yZGVyJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisgIGxldCB3cml0ZXI7
CisgIGNvbnN0IGV2ZW50cyA9IFtdOworICBjb25zdCBzdHJhdGVneSA9IHsKKyAgICBzaXplKGNo
dW5rKSB7CisgICAgICBldmVudHMucHVzaCgnc2l6ZScsIGNodW5rKTsKKyAgICAgIGlmIChjaHVu
ayA+IDApIHsKKyAgICAgICAgd3JpdGVyLndyaXRlKGNodW5rIC0gMSkKKyAgICAgICAgICAgIC50
aGVuKCgpID0+IGV2ZW50cy5wdXNoKCd3cml0ZXIud3JpdGUgZG9uZScsIGNodW5rIC0gMSkpOwor
ICAgICAgfQorICAgICAgcmV0dXJuIGNodW5rOworICAgIH0KKyAgfTsKKyAgY29uc3Qgd3MgPSBu
ZXcgV3JpdGFibGVTdHJlYW0oeworICAgIHdyaXRlKGNodW5rKSB7CisgICAgICBldmVudHMucHVz
aCgnc2luay53cml0ZScsIGNodW5rKTsKKyAgICB9CisgIH0sIHN0cmF0ZWd5KTsKKyAgd3JpdGVy
ID0gd3MuZ2V0V3JpdGVyKCk7CisgIHJldHVybiB3cml0ZXIud3JpdGUoMikKKyAgICAgIC50aGVu
KCgpID0+IGV2ZW50cy5wdXNoKCd3cml0ZXIud3JpdGUgZG9uZScsIDIpKQorICAgICAgLnRoZW4o
KCkgPT4gZmx1c2hBc3luY0V2ZW50cygpKQorICAgICAgLnRoZW4oKCkgPT4geworICAgICAgICBh
c3NlcnRfYXJyYXlfZXF1YWxzKGV2ZW50cywgWydzaXplJywgMiwgJ3NpemUnLCAxLCAnc2l6ZScs
IDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Npbmsud3JpdGUnLCAw
LCAnc2luay53cml0ZScsIDEsICd3cml0ZXIud3JpdGUgZG9uZScsIDAsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ3Npbmsud3JpdGUnLCAyLCAnd3JpdGVyLndyaXRlIGRv
bmUnLCAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd3cml0ZXIud3Jp
dGUgZG9uZScsIDJdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdldmVudHMgc2hvdWxk
IGhhcHBlbiBpbiBzdGFuZGFyZCBvcmRlcicpOworICAgICAgfSk7Cit9LCAnd3JpdGVyLndyaXRl
KCkgcHJvbWlzZXMgc2hvdWxkIHJlc29sdmUgaW4gdGhlIHN0YW5kYXJkIG9yZGVyJyk7CisKK3By
b21pc2VfdGVzdCh0ID0+IHsKKyAgbGV0IGNvbnRyb2xsZXI7CisgIGNvbnN0IHN0cmF0ZWd5ID0g
eworICAgIHNpemUoKSB7CisgICAgICBjb250cm9sbGVyLmVycm9yKGVycm9yMSk7CisgICAgICBy
ZXR1cm4gMTsKKyAgICB9CisgIH07CisgIGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJl
YW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGNvbnRyb2xsZXIgPSBjOworICAgIH0KKyAgfSwg
c3RyYXRlZ3kpOworICBjb25zdCByZXNvbHZlZCA9IFtdOworICBjb25zdCB3cml0ZXIgPSB3cy5n
ZXRXcml0ZXIoKTsKKyAgY29uc3QgcmVhZHlQcm9taXNlMSA9IHdyaXRlci5yZWFkeS50aGVuKCgp
ID0+IHJlc29sdmVkLnB1c2goJ3JlYWR5MScpKTsKKyAgY29uc3Qgd3JpdGVQcm9taXNlID0gcHJv
bWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCB3cml0ZXIud3JpdGUoKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3dyaXRlKCkgc2hvdWxkIHJl
amVjdCB3aXRoIHRoZSBlcnJvcicpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAudGhlbigoKSA9PiByZXNvbHZlZC5wdXNoKCd3cml0ZScpKTsKKyAg
Y29uc3QgcmVhZHlQcm9taXNlMiA9IHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMSwg
d3JpdGVyLnJlYWR5LCAncmVhZHkgc2hvdWxkIHJlamVjdCB3aXRoIGVycm9yMScpCisgICAgICAu
dGhlbigoKSA9PiByZXNvbHZlZC5wdXNoKCdyZWFkeTInKSk7CisgIGNvbnN0IGNsb3NlZFByb21p
c2UgPSBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIHdyaXRlci5jbG9zZWQsICdj
bG9zZWQgc2hvdWxkIHJlamVjdCB3aXRoIGVycm9yMScpCisgICAgICAudGhlbigoKSA9PiByZXNv
bHZlZC5wdXNoKCdjbG9zZWQnKSk7CisgIHJldHVybiBQcm9taXNlLmFsbChbcmVhZHlQcm9taXNl
MSwgd3JpdGVQcm9taXNlLCByZWFkeVByb21pc2UyLCBjbG9zZWRQcm9taXNlXSkKKyAgICAgIC50
aGVuKCgpID0+IHsKKyAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhyZXNvbHZlZCwgWydyZWFk
eTEnLCAnd3JpdGUnLCAncmVhZHkyJywgJ2Nsb3NlZCddLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICdwcm9taXNlcyBzaG91bGQgcmVzb2x2ZSBpbiBzdGFuZGFyZCBvcmRlcicpOworICAg
ICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgW10sICd1bmRlcmx5aW5nIHNpbmsg
d3JpdGUgc2hvdWxkIG5vdCBiZSBjYWxsZWQnKTsKKyAgICAgIH0pOworfSwgJ2NvbnRyb2xsZXIu
ZXJyb3IoKSBzaG91bGQgd29yayB3aGVuIGNhbGxlZCBmcm9tIHdpdGhpbiBzdHJhdGVneS5zaXpl
KCknKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBsZXQgd3JpdGVyOworICBjb25zdCBzdHJh
dGVneSA9IHsKKyAgICBzaXplKCkgeworICAgICAgd3JpdGVyLmNsb3NlKCk7CisgICAgICByZXR1
cm4gMTsKKyAgICB9CisgIH07CisKKyAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVh
bSh7fSwgc3RyYXRlZ3kpOworICB3cml0ZXIgPSB3cy5nZXRXcml0ZXIoKTsKKyAgcmV0dXJuIHBy
b21pc2VfcmVqZWN0c19qcyh0LCBUeXBlRXJyb3IsIHdyaXRlci53cml0ZSgnYScpLCAnd3JpdGUo
KSBwcm9taXNlIHNob3VsZCByZWplY3QnKQorICAgICAgLnRoZW4oKCkgPT4geworICAgICAgICBh
c3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWydjbG9zZSddLCAnc2luay53cml0ZSgpIHNo
b3VsZCBub3QgYmUgY2FsbGVkJyk7CisgICAgICB9KTsKK30sICdjbG9zZSgpIHNob3VsZCB3b3Jr
IHdoZW4gY2FsbGVkIGZyb20gd2l0aGluIHN0cmF0ZWd5LnNpemUoKScpOworCitwcm9taXNlX3Rl
c3QodCA9PiB7CisgIGxldCB3cml0ZXI7CisgIGNvbnN0IHN0cmF0ZWd5ID0geworICAgIHNpemUo
KSB7CisgICAgICB3cml0ZXIuYWJvcnQoZXJyb3IxKTsKKyAgICAgIHJldHVybiAxOworICAgIH0K
KyAgfTsKKworICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKHt9LCBzdHJhdGVn
eSk7CisgIHdyaXRlciA9IHdzLmdldFdyaXRlcigpOworICByZXR1cm4gcHJvbWlzZV9yZWplY3Rz
X2V4YWN0bHkodCwgZXJyb3IxLCB3cml0ZXIud3JpdGUoJ2EnKSwgJ3dyaXRlKCkgcHJvbWlzZSBz
aG91bGQgcmVqZWN0JykKKyAgICAgIC50aGVuKCgpID0+IHsKKyAgICAgICAgYXNzZXJ0X2FycmF5
X2VxdWFscyh3cy5ldmVudHMsIFsnYWJvcnQnLCBlcnJvcjFdLCAnc2luay53cml0ZSgpIHNob3Vs
ZCBub3QgYmUgY2FsbGVkJyk7CisgICAgICB9KTsKK30sICdhYm9ydCgpIHNob3VsZCB3b3JrIHdo
ZW4gY2FsbGVkIGZyb20gd2l0aGluIHN0cmF0ZWd5LnNpemUoKScpOworCitwcm9taXNlX3Rlc3Qo
dCA9PiB7CisgIGxldCB3cml0ZXI7CisgIGNvbnN0IHN0cmF0ZWd5ID0geworICAgIHNpemUoKSB7
CisgICAgICB3cml0ZXIucmVsZWFzZUxvY2soKTsKKyAgICAgIHJldHVybiAxOworICAgIH0KKyAg
fTsKKworICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKHt9LCBzdHJhdGVneSk7
CisgIHdyaXRlciA9IHdzLmdldFdyaXRlcigpOworICBjb25zdCB3cml0ZVByb21pc2UgPSBwcm9t
aXNlX3JlamVjdHNfanModCwgVHlwZUVycm9yLCB3cml0ZXIud3JpdGUoJ2EnKSwgJ3dyaXRlKCkg
cHJvbWlzZSBzaG91bGQgcmVqZWN0Jyk7CisgIGNvbnN0IHJlYWR5UHJvbWlzZSA9IHByb21pc2Vf
cmVqZWN0c19qcyh0LCBUeXBlRXJyb3IsIHdyaXRlci5yZWFkeSwgJ3JlYWR5IHByb21pc2Ugc2hv
dWxkIHJlamVjdCcpOworICBjb25zdCBjbG9zZWRQcm9taXNlID0gcHJvbWlzZV9yZWplY3RzX2pz
KHQsIFR5cGVFcnJvciwgd3JpdGVyLmNsb3NlZCwgJ2Nsb3NlZCBwcm9taXNlIHNob3VsZCByZWpl
Y3QnKTsKKyAgcmV0dXJuIFByb21pc2UuYWxsKFt3cml0ZVByb21pc2UsIHJlYWR5UHJvbWlzZSwg
Y2xvc2VkUHJvbWlzZV0pCisgICAgICAudGhlbigoKSA9PiB7CisgICAgICAgIGFzc2VydF9hcnJh
eV9lcXVhbHMod3MuZXZlbnRzLCBbXSwgJ3Npbmsud3JpdGUoKSBzaG91bGQgbm90IGJlIGNhbGxl
ZCcpOworICAgICAgfSk7Cit9LCAncmVsZWFzZUxvY2soKSBzaG91bGQgYWJvcnQgdGhlIHdyaXRl
KCkgd2hlbiBjYWxsZWQgd2l0aGluIHN0cmF0ZWd5LnNpemUoKScpOworCitwcm9taXNlX3Rlc3Qo
dCA9PiB7CisgIGxldCB3cml0ZXIxOworICBsZXQgd3M7CisgIGxldCB3cml0ZVByb21pc2UyOwor
ICBsZXQgY2xvc2VQcm9taXNlOworICBsZXQgY2xvc2VkUHJvbWlzZTI7CisgIGNvbnN0IHN0cmF0
ZWd5ID0geworICAgIHNpemUoY2h1bmspIHsKKyAgICAgIGlmIChjaHVuayA+IDApIHsKKyAgICAg
ICAgd3JpdGVyMS5yZWxlYXNlTG9jaygpOworICAgICAgICBjb25zdCB3cml0ZXIyID0gd3MuZ2V0
V3JpdGVyKCk7CisgICAgICAgIHdyaXRlUHJvbWlzZTIgPSB3cml0ZXIyLndyaXRlKDApOworICAg
ICAgICBjbG9zZVByb21pc2UgPSB3cml0ZXIyLmNsb3NlKCk7CisgICAgICAgIGNsb3NlZFByb21p
c2UyID0gd3JpdGVyMi5jbG9zZWQ7CisgICAgICB9CisgICAgICByZXR1cm4gMTsKKyAgICB9Cisg
IH07CisgIHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0oe30sIHN0cmF0ZWd5KTsKKyAgd3Jp
dGVyMSA9IHdzLmdldFdyaXRlcigpOworICBjb25zdCB3cml0ZVByb21pc2UxID0gcHJvbWlzZV9y
ZWplY3RzX2pzKHQsIFR5cGVFcnJvciwgd3JpdGVyMS53cml0ZSgxKSwgJ3dyaXRlKCkgcHJvbWlz
ZSBzaG91bGQgcmVqZWN0Jyk7CisgIGNvbnN0IHJlYWR5UHJvbWlzZSA9IHByb21pc2VfcmVqZWN0
c19qcyh0LCBUeXBlRXJyb3IsIHdyaXRlcjEucmVhZHksICdyZWFkeSBwcm9taXNlIHNob3VsZCBy
ZWplY3QnKTsKKyAgY29uc3QgY2xvc2VkUHJvbWlzZTEgPSBwcm9taXNlX3JlamVjdHNfanModCwg
VHlwZUVycm9yLCB3cml0ZXIxLmNsb3NlZCwgJ2Nsb3NlZCBwcm9taXNlIHNob3VsZCByZWplY3Qn
KTsKKyAgcmV0dXJuIFByb21pc2UuYWxsKFt3cml0ZVByb21pc2UxLCByZWFkeVByb21pc2UsIGNs
b3NlZFByb21pc2UxLCB3cml0ZVByb21pc2UyLCBjbG9zZVByb21pc2UsIGNsb3NlZFByb21pc2Uy
XSkKKyAgICAgIC50aGVuKCgpID0+IHsKKyAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5l
dmVudHMsIFsnd3JpdGUnLCAwLCAnY2xvc2UnXSwgJ3Npbmsud3JpdGUoKSBzaG91bGQgb25seSBi
ZSBjYWxsZWQgb25jZScpOworICAgICAgfSk7Cit9LCAnb3JpZ2luYWwgcmVhZGVyIHNob3VsZCBl
cnJvciB3aGVuIG5ldyByZWFkZXIgaXMgY3JlYXRlZCB3aXRoaW4gc3RyYXRlZ3kuc2l6ZSgpJyk7
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9yZWVudHJhbnQtc3RyYXRlZ3kuYW55Lndvcmtlci1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9yZWVudHJhbnQtc3RyYXRlZ3kuYW55Lndvcmtlci1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGJjMDk3NGE2M2ViNTkzNTdlNWZhYTE1ZWM1NDc5NGJl
ZGQyNmEzNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL3JlZW50cmFudC1zdHJhdGVn
eS5hbnkud29ya2VyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDkgQEAKKworRkFJTCB3cml0ZXMg
c2hvdWxkIGJlIHdyaXR0ZW4gaW4gdGhlIHN0YW5kYXJkIG9yZGVyIENhbid0IGZpbmQgdmFyaWFi
bGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIHdyaXRlci53cml0ZSgpIHByb21pc2VzIHNob3VsZCBy
ZXNvbHZlIGluIHRoZSBzdGFuZGFyZCBvcmRlciBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJs
ZVN0cmVhbQorRkFJTCBjb250cm9sbGVyLmVycm9yKCkgc2hvdWxkIHdvcmsgd2hlbiBjYWxsZWQg
ZnJvbSB3aXRoaW4gc3RyYXRlZ3kuc2l6ZSgpIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxl
U3RyZWFtCitGQUlMIGNsb3NlKCkgc2hvdWxkIHdvcmsgd2hlbiBjYWxsZWQgZnJvbSB3aXRoaW4g
c3RyYXRlZ3kuc2l6ZSgpIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlM
IGFib3J0KCkgc2hvdWxkIHdvcmsgd2hlbiBjYWxsZWQgZnJvbSB3aXRoaW4gc3RyYXRlZ3kuc2l6
ZSgpIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIHJlbGVhc2VMb2Nr
KCkgc2hvdWxkIGFib3J0IHRoZSB3cml0ZSgpIHdoZW4gY2FsbGVkIHdpdGhpbiBzdHJhdGVneS5z
aXplKCkgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgb3JpZ2luYWwg
cmVhZGVyIHNob3VsZCBlcnJvciB3aGVuIG5ldyByZWFkZXIgaXMgY3JlYXRlZCB3aXRoaW4gc3Ry
YXRlZ3kuc2l6ZSgpIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy93cml0YWJsZS1zdHJlYW1zL3JlZW50cmFudC1zdHJhdGVneS5hbnkud29ya2VyLmh0bWwgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFi
bGUtc3RyZWFtcy9yZWVudHJhbnQtc3RyYXRlZ3kuYW55Lndvcmtlci5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjIzODI5MTM1MjhlNjkzYjNhNWQ1NmM2NjBhNDUwNjA5ODBiNTQ4YzMKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
d3JpdGFibGUtc3RyZWFtcy9yZWVudHJhbnQtc3RyYXRlZ3kuYW55Lndvcmtlci5odG1sCkBAIC0w
LDAgKzEgQEAKKzwhLS0gVGhpcyBmaWxlIGlzIHJlcXVpcmVkIGZvciBXZWJLaXQgdGVzdCBpbmZy
YXN0cnVjdHVyZSB0byBydW4gdGhlIHRlbXBsYXRlZCB0ZXN0IC0tPgpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL3N0YXJ0LmFueS1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
d3JpdGFibGUtc3RyZWFtcy9zdGFydC5hbnktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJkMTQx
MmNiMjU4Yzc5NGE0MDVmYzJhNmRmMzFkNzM0NjRmODExZmMKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFi
bGUtc3RyZWFtcy9zdGFydC5hbnktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTUgQEAKK0NPTlNP
TEUgTUVTU0FHRTogVW5oYW5kbGVkIFByb21pc2UgUmVqZWN0aW9uOiB1bmRlZmluZWQKK0NPTlNP
TEUgTUVTU0FHRTogVW5oYW5kbGVkIFByb21pc2UgUmVqZWN0aW9uOiBbb2JqZWN0IE9iamVjdF0K
K0NPTlNPTEUgTUVTU0FHRTogVW5oYW5kbGVkIFByb21pc2UgUmVqZWN0aW9uOiB1bmRlZmluZWQK
KworSGFybmVzcyBFcnJvciAoRkFJTCksIG1lc3NhZ2UgPSBVbmhhbmRsZWQgcmVqZWN0aW9uCisK
K0ZBSUwgdW5kZXJseWluZyBzaW5rJ3Mgd3JpdGUgc2hvdWxkIG5vdCBiZSBjYWxsZWQgdW50aWwg
c3RhcnQgZmluaXNoZXMgd3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdl
dFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicgaXMgdW5kZWZpbmVkKQorRkFJTCB1bmRlcmx5aW5n
IHNpbmsncyBjbG9zZSBzaG91bGQgbm90IGJlIGNhbGxlZCB1bnRpbCBzdGFydCBmaW5pc2hlcyB3
cy5nZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3JpdGVyKCknLCAnd3Mu
Z2V0V3JpdGVyJyBpcyB1bmRlZmluZWQpCitQQVNTIHVuZGVybHlpbmcgc2luaydzIHdyaXRlIG9y
IGNsb3NlIHNob3VsZCBub3QgYmUgY2FsbGVkIGlmIHN0YXJ0IHRocm93cyAKK1BBU1MgdW5kZXJs
eWluZyBzaW5rJ3Mgd3JpdGUgb3IgY2xvc2Ugc2hvdWxkIG5vdCBiZSBpbnZva2VkIGlmIHRoZSBw
cm9taXNlIHJldHVybmVkIGJ5IHN0YXJ0IGlzIHJlamVjdGVkIAorRkFJTCByZXR1cm5pbmcgYSB0
aGVuYWJsZSBmcm9tIHN0YXJ0KCkgc2hvdWxkIHdvcmsgd3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1
bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicgaXMgdW5kZWZpbmVk
KQorRkFJTCBjb250cm9sbGVyLmVycm9yKCkgZHVyaW5nIHN0YXJ0IHNob3VsZCBjYXVzZSB3cml0
ZXMgdG8gZmFpbCBjb250cm9sbGVyLmVycm9yIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ2NvbnRy
b2xsZXIuZXJyb3IoZXJyb3IxKScsICdjb250cm9sbGVyLmVycm9yJyBpcyB1bmRlZmluZWQpCitG
QUlMIGNvbnRyb2xsZXIuZXJyb3IoKSBkdXJpbmcgYXN5bmMgc3RhcnQgc2hvdWxkIGNhdXNlIGV4
aXN0aW5nIHdyaXRlcyB0byBmYWlsIHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKElu
ICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkKK0ZBSUwgd2hl
biBzdGFydCgpIHJlamVjdHMsIHdyaXRlciBwcm9taXNlcyBzaG91bGQgcmVqZWN0IGluIHN0YW5k
YXJkIG9yZGVyIHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0
ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0
cmVhbXMvc3RhcnQuYW55Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9zdGFydC5hbnkuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4yMzgyOTEzNTI4ZTY5M2IzYTVkNTZjNjYwYTQ1MDYwOTgwYjU0OGMzCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJl
YW1zL3dyaXRhYmxlLXN0cmVhbXMvc3RhcnQuYW55Lmh0bWwKQEAgLTAsMCArMSBAQAorPCEtLSBU
aGlzIGZpbGUgaXMgcmVxdWlyZWQgZm9yIFdlYktpdCB0ZXN0IGluZnJhc3RydWN0dXJlIHRvIHJ1
biB0aGUgdGVtcGxhdGVkIHRlc3QgLS0+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJl
YW1zL3dyaXRhYmxlLXN0cmVhbXMvc3RhcnQuYW55LmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvc3RhcnQuYW55
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjAyYjVmMmEzODc2MjVhMzY1NDg2MWNhZGQwZGFlM2NhZWYxMTdjYjAK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9zdGFydC5hbnkuanMKQEAgLTAsMCArMSwx
NjMgQEAKKy8vIE1FVEE6IGdsb2JhbD13aW5kb3csd29ya2VyLGpzc2hlbGwKKy8vIE1FVEE6IHNj
cmlwdD0uLi9yZXNvdXJjZXMvdGVzdC11dGlscy5qcworLy8gTUVUQTogc2NyaXB0PS4uL3Jlc291
cmNlcy9yZWNvcmRpbmctc3RyZWFtcy5qcworJ3VzZSBzdHJpY3QnOworCitjb25zdCBlcnJvcjEg
PSB7IG5hbWU6ICdlcnJvcjEnIH07CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisgIGxldCByZXNv
bHZlU3RhcnRQcm9taXNlOworICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKHsK
KyAgICBzdGFydCgpIHsKKyAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKKyAg
ICAgICAgcmVzb2x2ZVN0YXJ0UHJvbWlzZSA9IHJlc29sdmU7CisgICAgICB9KTsKKyAgICB9Cisg
IH0pOworCisgIGNvbnN0IHdyaXRlciA9IHdzLmdldFdyaXRlcigpOworCisgIGFzc2VydF9lcXVh
bHMod3JpdGVyLmRlc2lyZWRTaXplLCAxLCAnZGVzaXJlZFNpemUgc2hvdWxkIGJlIDEnKTsKKyAg
d3JpdGVyLndyaXRlKCdhJyk7CisgIGFzc2VydF9lcXVhbHMod3JpdGVyLmRlc2lyZWRTaXplLCAw
LCAnZGVzaXJlZFNpemUgc2hvdWxkIGJlIDAgYWZ0ZXIgd3JpdGVyLndyaXRlKCknKTsKKworICAv
LyBXYWl0IGFuZCB2ZXJpZnkgdGhhdCB3cml0ZSBpc24ndCBjYWxsZWQuCisgIHJldHVybiBmbHVz
aEFzeW5jRXZlbnRzKCkKKyAgICAgIC50aGVuKCgpID0+IHsKKyAgICAgICAgYXNzZXJ0X2FycmF5
X2VxdWFscyh3cy5ldmVudHMsIFtdLCAnd3JpdGUgc2hvdWxkIG5vdCBiZSBjYWxsZWQgdW50aWwg
c3RhcnQgcHJvbWlzZSByZXNvbHZlcycpOworICAgICAgICByZXNvbHZlU3RhcnRQcm9taXNlKCk7
CisgICAgICAgIHJldHVybiB3cml0ZXIucmVhZHk7CisgICAgICB9KQorICAgICAgLnRoZW4oKCkg
PT4gYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsnd3JpdGUnLCAnYSddLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnd3JpdGUgc2hvdWxkIG5vdCBiZSBjYWxs
ZWQgdW50aWwgc3RhcnQgcHJvbWlzZSByZXNvbHZlcycpKTsKK30sICd1bmRlcmx5aW5nIHNpbmtc
J3Mgd3JpdGUgc2hvdWxkIG5vdCBiZSBjYWxsZWQgdW50aWwgc3RhcnQgZmluaXNoZXMnKTsKKwor
cHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgbGV0IHJlc29sdmVTdGFydFByb21pc2U7CisgIGNvbnN0
IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0oeworICAgIHN0YXJ0KCkgeworICAgICAgcmV0
dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4geworICAgICAgICByZXNvbHZlU3RhcnRQcm9taXNl
ID0gcmVzb2x2ZTsKKyAgICAgIH0pOworICAgIH0KKyAgfSk7CisKKyAgY29uc3Qgd3JpdGVyID0g
d3MuZ2V0V3JpdGVyKCk7CisKKyAgd3JpdGVyLmNsb3NlKCk7CisgIGFzc2VydF9lcXVhbHMod3Jp
dGVyLmRlc2lyZWRTaXplLCAxLCAnZGVzaXJlZFNpemUgc2hvdWxkIGJlIDEnKTsKKworICAvLyBX
YWl0IGFuZCB2ZXJpZnkgdGhhdCB3cml0ZSBpc24ndCBjYWxsZWQuCisgIHJldHVybiBmbHVzaEFz
eW5jRXZlbnRzKCkudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVu
dHMsIFtdLCAnY2xvc2Ugc2hvdWxkIG5vdCBiZSBjYWxsZWQgdW50aWwgc3RhcnQgcHJvbWlzZSBy
ZXNvbHZlcycpOworICAgIHJlc29sdmVTdGFydFByb21pc2UoKTsKKyAgICByZXR1cm4gd3JpdGVy
LmNsb3NlZDsKKyAgfSk7Cit9LCAndW5kZXJseWluZyBzaW5rXCdzIGNsb3NlIHNob3VsZCBub3Qg
YmUgY2FsbGVkIHVudGlsIHN0YXJ0IGZpbmlzaGVzJyk7CisKK3Rlc3QoKCkgPT4geworICBjb25z
dCBwYXNzZWRFcnJvciA9IG5ldyBFcnJvcignaG9ycmlibGUgdGhpbmdzJyk7CisKKyAgbGV0IHdy
aXRlQ2FsbGVkID0gZmFsc2U7CisgIGxldCBjbG9zZUNhbGxlZCA9IGZhbHNlOworICBhc3NlcnRf
dGhyb3dzX2V4YWN0bHkocGFzc2VkRXJyb3IsICgpID0+IHsKKyAgICAvLyByZWNvcmRpbmdXcml0
YWJsZVN0cmVhbSBjYW5ub3QgYmUgdXNlZCBoZXJlIGJlY2F1c2UgdGhlIGV4Y2VwdGlvbiBpbiB0
aGUKKyAgICAvLyBjb25zdHJ1Y3RvciBwcmV2ZW50cyBhc3NpZ25pbmcgdGhlIG9iamVjdCB0byBh
IHZhcmlhYmxlLgorICAgIG5ldyBXcml0YWJsZVN0cmVhbSh7CisgICAgICBzdGFydCgpIHsKKyAg
ICAgICAgdGhyb3cgcGFzc2VkRXJyb3I7CisgICAgICB9LAorICAgICAgd3JpdGUoKSB7CisgICAg
ICAgIHdyaXRlQ2FsbGVkID0gdHJ1ZTsKKyAgICAgIH0sCisgICAgICBjbG9zZSgpIHsKKyAgICAg
ICAgY2xvc2VDYWxsZWQgPSB0cnVlOworICAgICAgfQorICAgIH0pOworICB9LCAnY29uc3RydWN0
b3Igc2hvdWxkIHRocm93IHBhc3NlZEVycm9yJyk7CisgIGFzc2VydF9mYWxzZSh3cml0ZUNhbGxl
ZCwgJ3dyaXRlIHNob3VsZCBub3QgYmUgY2FsbGVkJyk7CisgIGFzc2VydF9mYWxzZShjbG9zZUNh
bGxlZCwgJ2Nsb3NlIHNob3VsZCBub3QgYmUgY2FsbGVkJyk7Cit9LCAndW5kZXJseWluZyBzaW5r
XCdzIHdyaXRlIG9yIGNsb3NlIHNob3VsZCBub3QgYmUgY2FsbGVkIGlmIHN0YXJ0IHRocm93cycp
OworCitwcm9taXNlX3Rlc3QoKCkgPT4geworICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxl
U3RyZWFtKHsKKyAgICBzdGFydCgpIHsKKyAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCgpOwor
ICAgIH0KKyAgfSk7CisKKyAgLy8gV2FpdCBhbmQgdmVyaWZ5IHRoYXQgd3JpdGUgb3IgY2xvc2Ug
YXJlbid0IGNhbGxlZC4KKyAgcmV0dXJuIGZsdXNoQXN5bmNFdmVudHMoKQorICAgICAgLnRoZW4o
KCkgPT4gYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFtdLCAnd3JpdGUgYW5kIGNsb3Nl
IHNob3VsZCBub3QgYmUgY2FsbGVkJykpOworfSwgJ3VuZGVybHlpbmcgc2lua1wncyB3cml0ZSBv
ciBjbG9zZSBzaG91bGQgbm90IGJlIGludm9rZWQgaWYgdGhlIHByb21pc2UgcmV0dXJuZWQgYnkg
c3RhcnQgaXMgcmVqZWN0ZWQnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBjb25zdCB3cyA9
IG5ldyBXcml0YWJsZVN0cmVhbSh7CisgICAgc3RhcnQoKSB7CisgICAgICByZXR1cm4geworICAg
ICAgICB0aGVuKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKSB7IG9uUmVqZWN0ZWQoZXJyb3IxKTsg
fQorICAgICAgfTsKKyAgICB9CisgIH0pOworICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2V4YWN0
bHkodCwgZXJyb3IxLCB3cy5nZXRXcml0ZXIoKS5jbG9zZWQsICdjbG9zZWQgcHJvbWlzZSBzaG91
bGQgYmUgcmVqZWN0ZWQnKTsKK30sICdyZXR1cm5pbmcgYSB0aGVuYWJsZSBmcm9tIHN0YXJ0KCkg
c2hvdWxkIHdvcmsnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBjb25zdCB3cyA9IHJlY29y
ZGluZ1dyaXRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjb250cm9sbGVyKSB7CisgICAgICBjb250
cm9sbGVyLmVycm9yKGVycm9yMSk7CisgICAgfQorICB9KTsKKyAgcmV0dXJuIHByb21pc2VfcmVq
ZWN0c19leGFjdGx5KHQsIGVycm9yMSwgd3MuZ2V0V3JpdGVyKCkud3JpdGUoJ2EnKSwgJ3dyaXRl
KCkgc2hvdWxkIHJlamVjdCB3aXRoIHRoZSBlcnJvcicpCisgICAgICAudGhlbigoKSA9PiB7Cisg
ICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbXSwgJ3Npbmsgd3JpdGUoKSBz
aG91bGQgbm90IGhhdmUgYmVlbiBjYWxsZWQnKTsKKyAgICAgIH0pOworfSwgJ2NvbnRyb2xsZXIu
ZXJyb3IoKSBkdXJpbmcgc3RhcnQgc2hvdWxkIGNhdXNlIHdyaXRlcyB0byBmYWlsJyk7CisKK3By
b21pc2VfdGVzdCh0ID0+IHsKKyAgbGV0IGNvbnRyb2xsZXI7CisgIGxldCByZXNvbHZlU3RhcnQ7
CisgIGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsK
KyAgICAgIGNvbnRyb2xsZXIgPSBjOworICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUg
PT4geworICAgICAgICByZXNvbHZlU3RhcnQgPSByZXNvbHZlOworICAgICAgfSk7CisgICAgfQor
ICB9KTsKKyAgY29uc3Qgd3JpdGVyID0gd3MuZ2V0V3JpdGVyKCk7CisgIGNvbnN0IHdyaXRlUHJv
bWlzZSA9IHdyaXRlci53cml0ZSgnYScpOworICBjb25zdCBjbG9zZVByb21pc2UgPSB3cml0ZXIu
Y2xvc2UoKTsKKyAgY29udHJvbGxlci5lcnJvcihlcnJvcjEpOworICByZXNvbHZlU3RhcnQoKTsK
KyAgcmV0dXJuIFByb21pc2UuYWxsKFsKKyAgICBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBl
cnJvcjEsIHdyaXRlUHJvbWlzZSwgJ3dyaXRlKCkgc2hvdWxkIGZhaWwnKSwKKyAgICBwcm9taXNl
X3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIGNsb3NlUHJvbWlzZSwgJ2Nsb3NlKCkgc2hvdWxk
IGZhaWwnKQorICBdKS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2
ZW50cywgW10sICdzaW5rIHdyaXRlKCkgYW5kIGNsb3NlKCkgc2hvdWxkIG5vdCBoYXZlIGJlZW4g
Y2FsbGVkJyk7CisgIH0pOworfSwgJ2NvbnRyb2xsZXIuZXJyb3IoKSBkdXJpbmcgYXN5bmMgc3Rh
cnQgc2hvdWxkIGNhdXNlIGV4aXN0aW5nIHdyaXRlcyB0byBmYWlsJyk7CisKK3Byb21pc2VfdGVz
dCh0ID0+IHsKKyAgY29uc3QgZXZlbnRzID0gW107CisgIGNvbnN0IHByb21pc2VzID0gW107Cisg
IGZ1bmN0aW9uIGNhdGNoQW5kUmVjb3JkKHByb21pc2UsIG5hbWUpIHsKKyAgICBwcm9taXNlcy5w
dXNoKHByb21pc2UudGhlbih0LnVucmVhY2hlZF9mdW5jKGBwcm9taXNlICR7bmFtZX0gc2hvdWxk
IG5vdCByZXNvbHZlYCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkgPT4gewor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRzLnB1c2gobmFtZSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpOworICB9CisgIGNvbnN0IHdzID0gbmV3IFdy
aXRhYmxlU3RyZWFtKHsKKyAgICBzdGFydCgpIHsKKyAgICAgIHJldHVybiBQcm9taXNlLnJlamVj
dCgpOworICAgIH0KKyAgfSwgeyBoaWdoV2F0ZXJNYXJrOiAwIH0pOworICBjb25zdCB3cml0ZXIg
PSB3cy5nZXRXcml0ZXIoKTsKKyAgY2F0Y2hBbmRSZWNvcmQod3JpdGVyLnJlYWR5LCAncmVhZHkn
KTsKKyAgY2F0Y2hBbmRSZWNvcmQod3JpdGVyLmNsb3NlZCwgJ2Nsb3NlZCcpOworICBjYXRjaEFu
ZFJlY29yZCh3cml0ZXIud3JpdGUoKSwgJ3dyaXRlJyk7CisgIHJldHVybiBQcm9taXNlLmFsbChw
cm9taXNlcykKKyAgICAgIC50aGVuKCgpID0+IHsKKyAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFs
cyhldmVudHMsIFsncmVhZHknLCAnd3JpdGUnLCAnY2xvc2VkJ10sICdwcm9taXNlcyBzaG91bGQg
cmVqZWN0IGluIHN0YW5kYXJkIG9yZGVyJyk7CisgICAgICB9KTsKK30sICd3aGVuIHN0YXJ0KCkg
cmVqZWN0cywgd3JpdGVyIHByb21pc2VzIHNob3VsZCByZWplY3QgaW4gc3RhbmRhcmQgb3JkZXIn
KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL3N0YXJ0LmFueS53b3JrZXItZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dy
aXRhYmxlLXN0cmVhbXMvc3RhcnQuYW55Lndvcmtlci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MzJiODNmODEyYTZkNjE0OGQ4ODFlMTUyZTQyN2FhOTE2YTk0MmVlMAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93
cml0YWJsZS1zdHJlYW1zL3N0YXJ0LmFueS53b3JrZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MjQgQEAKKworRkFJTCB1bmRlcmx5aW5nIHNpbmsncyB3cml0ZSBzaG91bGQgbm90IGJlIGNhbGxl
ZCB1bnRpbCBzdGFydCBmaW5pc2hlcyBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVh
bQorRkFJTCB1bmRlcmx5aW5nIHNpbmsncyBjbG9zZSBzaG91bGQgbm90IGJlIGNhbGxlZCB1bnRp
bCBzdGFydCBmaW5pc2hlcyBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJ
TCB1bmRlcmx5aW5nIHNpbmsncyB3cml0ZSBvciBjbG9zZSBzaG91bGQgbm90IGJlIGNhbGxlZCBp
ZiBzdGFydCB0aHJvd3MgYXNzZXJ0X3Rocm93c19leGFjdGx5OiBjb25zdHJ1Y3RvciBzaG91bGQg
dGhyb3cgcGFzc2VkRXJyb3IgZnVuY3Rpb24gIigpID0+IHsKKyAgICAvLyByZWNvcmRpbmdXcml0
YWJsZVN0cmVhbSBjYW5ub3QgYmUgdXNlZCBoZXJlIGJlY2F1c2UgdGhlIGV4Y2VwdGlvbiBpbiB0
aGUKKyAgICAvLyBjb25zdHJ1Y3RvciBwcmV2ZW50cyBhc3NpZ25pbmcgdGhlIG9iamVjdCB0byBh
IHZhcmlhYmxlLgorICAgIG5ldyBXcml0YWJsZVN0cmVhbSh7CisgICAgICBzdGFydCgpIHsKKyAg
ICAgICAgdGhyb3cgcGFzc2VkRXJyb3I7CisgICAgICB9LAorICAgICAgd3JpdGUoKSB7CisgICAg
ICAgIHdyaXRlQ2FsbGVkID0gdHJ1ZTsKKyAgICAgIH0sCisgICAgICBjbG9zZSgpIHsKKyAgICAg
ICAgY2xvc2VDYWxsZWQgPSB0cnVlOworICAgICAgfQorICAgIH0pOworICB9IiB0aHJldyBvYmpl
Y3QgIlJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbSIg
YnV0IHdlIGV4cGVjdGVkIGl0IHRvIHRocm93IG9iamVjdCAiRXJyb3I6IGhvcnJpYmxlIHRoaW5n
cyIKK0ZBSUwgdW5kZXJseWluZyBzaW5rJ3Mgd3JpdGUgb3IgY2xvc2Ugc2hvdWxkIG5vdCBiZSBp
bnZva2VkIGlmIHRoZSBwcm9taXNlIHJldHVybmVkIGJ5IHN0YXJ0IGlzIHJlamVjdGVkIENhbid0
IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIHJldHVybmluZyBhIHRoZW5hYmxl
IGZyb20gc3RhcnQoKSBzaG91bGQgd29yayBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0
cmVhbQorRkFJTCBjb250cm9sbGVyLmVycm9yKCkgZHVyaW5nIHN0YXJ0IHNob3VsZCBjYXVzZSB3
cml0ZXMgdG8gZmFpbCBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBj
b250cm9sbGVyLmVycm9yKCkgZHVyaW5nIGFzeW5jIHN0YXJ0IHNob3VsZCBjYXVzZSBleGlzdGlu
ZyB3cml0ZXMgdG8gZmFpbCBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJ
TCB3aGVuIHN0YXJ0KCkgcmVqZWN0cywgd3JpdGVyIHByb21pc2VzIHNob3VsZCByZWplY3QgaW4g
c3RhbmRhcmQgb3JkZXIgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJl
YW1zL3dyaXRhYmxlLXN0cmVhbXMvc3RhcnQuYW55Lndvcmtlci5odG1sIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMv
c3RhcnQuYW55Lndvcmtlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzODI5MTM1MjhlNjkzYjNhNWQ1NmM2
NjBhNDUwNjA5ODBiNTQ4YzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9zdGFydC5h
bnkud29ya2VyLmh0bWwKQEAgLTAsMCArMSBAQAorPCEtLSBUaGlzIGZpbGUgaXMgcmVxdWlyZWQg
Zm9yIFdlYktpdCB0ZXN0IGluZnJhc3RydWN0dXJlIHRvIHJ1biB0aGUgdGVtcGxhdGVkIHRlc3Qg
LS0+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMv
dzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy93M2MtaW1wb3J0LmxvZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4y
ZTE4NTFjNmVjMzRmOWFhZGU1ZTMzMjIxYWJjMDk2ZTMxOGUwZWQ0Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dy
aXRhYmxlLXN0cmVhbXMvdzNjLWltcG9ydC5sb2cKQEAgLTAsMCArMSwzMCBAQAorVGhlIHRlc3Rz
IGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnku
CitEbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KK0luc3RlYWQs
IGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKKwlodHRwczovL2dpdGh1
Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAorCitUaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0
cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAorCitEbyBOT1QgbW9kaWZ5
IG9yIHJlbW92ZSB0aGlzIGZpbGUuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorUHJvcGVydGllcyByZXF1
aXJpbmcgdmVuZG9yIHByZWZpeGVzOgorTm9uZQorUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2
ZW5kb3IgcHJlZml4ZXM6CitOb25lCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xpc3Qgb2YgZmlsZXM6Cisv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRh
YmxlLXN0cmVhbXMvYWJvcnRpbmcuYW55LmpzCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvYmFkLXN0cmF0ZWdpZXMu
YW55LmpzCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJl
YW1zL3dyaXRhYmxlLXN0cmVhbXMvYmFkLXVuZGVybHlpbmctc2lua3MuYW55LmpzCisvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0
cmVhbXMvYnl0ZS1sZW5ndGgtcXVldWluZy1zdHJhdGVneS5hbnkuanMKKy9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9j
bG9zZS5hbnkuanMKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9jb25zdHJ1Y3Rvci5hbnkuanMKKy9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFt
cy9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5LmFueS5qcworL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL2Vycm9yLmFueS5q
cworL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93
cml0YWJsZS1zdHJlYW1zL2Zsb2F0aW5nLXBvaW50LXRvdGFsLXF1ZXVlLXNpemUuYW55LmpzCisv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRh
YmxlLXN0cmVhbXMvZ2VuZXJhbC5hbnkuanMKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9wcm9wZXJ0aWVzLmFueS5q
cworL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93
cml0YWJsZS1zdHJlYW1zL3JlZW50cmFudC1zdHJhdGVneS5hbnkuanMKKy9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9z
dGFydC5hbnkuanMKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy93cml0ZS5hbnkuanMKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1z
dHJlYW1zL3dyaXRlLmFueS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy93cml0ZS5hbnktZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY3OWQxOTQ5OTBkNjAzNDA2MzQ3ODFjNjAxYWIzY2JiODlk
OTQ5M2UKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy93cml0ZS5hbnktZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMTYgQEAKK0NPTlNPTEUgTUVTU0FHRTogVW5oYW5kbGVkIFByb21pc2Ug
UmVqZWN0aW9uOiBlcnJvcjE6IGVycm9yMQorCitGQUlMIFdyaXRhYmxlU3RyZWFtIHNob3VsZCBj
b21wbGV0ZSBhc3luY2hyb25vdXMgd3JpdGVzIGJlZm9yZSBjbG9zZSByZXNvbHZlcyB3cy5nZXRX
cml0ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3JpdGVyKCknLCAnd3MuZ2V0V3Jp
dGVyJyBpcyB1bmRlZmluZWQpCitGQUlMIFdyaXRhYmxlU3RyZWFtIHNob3VsZCBjb21wbGV0ZSBz
eW5jaHJvbm91cyB3cml0ZXMgYmVmb3JlIGNsb3NlIHJlc29sdmVzIHdzLmdldFdyaXRlciBpcyBu
b3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVu
ZGVmaW5lZCkKK0ZBSUwgZnVsZmlsbG1lbnQgdmFsdWUgb2Ygd3Mud3JpdGUoKSBjYWxsIHNob3Vs
ZCBiZSB1bmRlZmluZWQgZXZlbiBpZiB0aGUgdW5kZXJseWluZyBzaW5rIHJldHVybnMgYSBub24t
dW5kZWZpbmVkIHZhbHVlIHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5n
ZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkKK0ZBSUwgV3JpdGFibGVT
dHJlYW0gc2hvdWxkIHRyYW5zaXRpb24gdG8gd2FpdGluZyB1bnRpbCB3cml0ZSBpcyBhY2tub3ds
ZWRnZWQgd3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigp
JywgJ3dzLmdldFdyaXRlcicgaXMgdW5kZWZpbmVkKQorRkFJTCB3aGVuIHdyaXRlIHJldHVybnMg
YSByZWplY3RlZCBwcm9taXNlLCBxdWV1ZWQgd3JpdGVzIGFuZCBjbG9zZSBzaG91bGQgYmUgY2xl
YXJlZCB3cy5nZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3JpdGVyKCkn
LCAnd3MuZ2V0V3JpdGVyJyBpcyB1bmRlZmluZWQpCitGQUlMIHdoZW4gc2luaydzIHdyaXRlIHRo
cm93cyBhbiBlcnJvciwgdGhlIHN0cmVhbSBzaG91bGQgYmVjb21lIGVycm9yZWQgYW5kIHRoZSBw
cm9taXNlIHNob3VsZCByZWplY3Qgd3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4g
J3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicgaXMgdW5kZWZpbmVkKQorRkFJTCB3cml0
ZXIud3JpdGUoKSwgcmVhZHkgYW5kIGNsb3NlZCByZWplY3Qgd2l0aCB0aGUgZXJyb3IgcGFzc2Vk
IHRvIGNvbnRyb2xsZXIuZXJyb3IoKSBtYWRlIGJlZm9yZSBzaW5rLndyaXRlIHJlamVjdGlvbiB3
cy5nZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3JpdGVyKCknLCAnd3Mu
Z2V0V3JpdGVyJyBpcyB1bmRlZmluZWQpCitGQUlMIGEgbGFyZ2UgcXVldWUgb2Ygd3JpdGVzIHNo
b3VsZCBiZSBwcm9jZXNzZWQgY29tcGxldGVseSB3cy5nZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rp
b24uIChJbiAnd3MuZ2V0V3JpdGVyKCknLCAnd3MuZ2V0V3JpdGVyJyBpcyB1bmRlZmluZWQpCitG
QUlMIFdyaXRhYmxlU3RyZWFtRGVmYXVsdFdyaXRlciBzaG91bGQgd29yayB3aGVuIG1hbnVhbGx5
IGNvbnN0cnVjdGVkIHN0cmVhbS5nZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnc3Ry
ZWFtLmdldFdyaXRlcigpJywgJ3N0cmVhbS5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkKK0ZBSUwg
cmV0dXJuaW5nIGEgdGhlbmFibGUgZnJvbSB3cml0ZSgpIHNob3VsZCB3b3JrIHdzLmdldFdyaXRl
ciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXIn
IGlzIHVuZGVmaW5lZCkKK0ZBSUwgZmFpbGluZyBEZWZhdWx0V3JpdGVyIGNvbnN0cnVjdG9yIHNo
b3VsZCBub3QgcmVsZWFzZSBhbiBleGlzdGluZyB3cml0ZXIgc3RyZWFtLmdldFdyaXRlciBpcyBu
b3QgYSBmdW5jdGlvbi4gKEluICdzdHJlYW0uZ2V0V3JpdGVyKCknLCAnc3RyZWFtLmdldFdyaXRl
cicgaXMgdW5kZWZpbmVkKQorRkFJTCB3cml0ZSgpIG9uIGEgc3RyZWFtIHdpdGggSFdNIDAgc2hv
dWxkIG5vdCBjYXVzZSB0aGUgcmVhZHkgUHJvbWlzZSB0byByZXNvbHZlIHdzLmdldFdyaXRlciBp
cyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlz
IHVuZGVmaW5lZCkKK0ZBSUwgd3JpdGluZyB0byBhIHJlbGVhc2VkIHdyaXRlciBzaG91bGQgcmVq
ZWN0IHRoZSByZXR1cm5lZCBwcm9taXNlIHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4g
KEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJl
YW1zL3dyaXRhYmxlLXN0cmVhbXMvd3JpdGUuYW55Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy93cml0ZS5h
bnkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4yMzgyOTEzNTI4ZTY5M2IzYTVkNTZjNjYwYTQ1MDYwOTgwYjU0
OGMzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvd3JpdGUuYW55Lmh0bWwKQEAgLTAs
MCArMSBAQAorPCEtLSBUaGlzIGZpbGUgaXMgcmVxdWlyZWQgZm9yIFdlYktpdCB0ZXN0IGluZnJh
c3RydWN0dXJlIHRvIHJ1biB0aGUgdGVtcGxhdGVkIHRlc3QgLS0+ClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvd3JpdGUuYW55LmpzIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0
cmVhbXMvd3JpdGUuYW55LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUzZGVmYTgzNDgyMGQ0MGQ3OWEzYjcyODk0
MDc1ZjViYjRlYTBkZWEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy93cml0ZS5hbnku
anMKQEAgLTAsMCArMSwyODQgQEAKKy8vIE1FVEE6IGdsb2JhbD13aW5kb3csd29ya2VyLGpzc2hl
bGwKKy8vIE1FVEE6IHNjcmlwdD0uLi9yZXNvdXJjZXMvdGVzdC11dGlscy5qcworLy8gTUVUQTog
c2NyaXB0PS4uL3Jlc291cmNlcy9yZWNvcmRpbmctc3RyZWFtcy5qcworJ3VzZSBzdHJpY3QnOwor
Citjb25zdCBlcnJvcjEgPSBuZXcgRXJyb3IoJ2Vycm9yMScpOworZXJyb3IxLm5hbWUgPSAnZXJy
b3IxJzsKKworY29uc3QgZXJyb3IyID0gbmV3IEVycm9yKCdlcnJvcjInKTsKK2Vycm9yMi5uYW1l
ID0gJ2Vycm9yMic7CisKK2Z1bmN0aW9uIHdyaXRlQXJyYXlUb1N0cmVhbShhcnJheSwgd3JpdGFi
bGVTdHJlYW1Xcml0ZXIpIHsKKyAgYXJyYXkuZm9yRWFjaChjaHVuayA9PiB3cml0YWJsZVN0cmVh
bVdyaXRlci53cml0ZShjaHVuaykpOworICByZXR1cm4gd3JpdGFibGVTdHJlYW1Xcml0ZXIuY2xv
c2UoKTsKK30KKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgbGV0IHN0b3JhZ2U7CisgIGNvbnN0
IHdzID0gbmV3IFdyaXRhYmxlU3RyZWFtKHsKKyAgICBzdGFydCgpIHsKKyAgICAgIHN0b3JhZ2Ug
PSBbXTsKKyAgICB9LAorCisgICAgd3JpdGUoY2h1bmspIHsKKyAgICAgIHJldHVybiBkZWxheSgw
KS50aGVuKCgpID0+IHN0b3JhZ2UucHVzaChjaHVuaykpOworICAgIH0sCisKKyAgICBjbG9zZSgp
IHsKKyAgICAgIHJldHVybiBkZWxheSgwKTsKKyAgICB9CisgIH0pOworCisgIGNvbnN0IHdyaXRl
ciA9IHdzLmdldFdyaXRlcigpOworCisgIGNvbnN0IGlucHV0ID0gWzEsIDIsIDMsIDQsIDVdOwor
ICByZXR1cm4gd3JpdGVBcnJheVRvU3RyZWFtKGlucHV0LCB3cml0ZXIpCisgICAgICAudGhlbigo
KSA9PiBhc3NlcnRfYXJyYXlfZXF1YWxzKHN0b3JhZ2UsIGlucHV0LCAnY29ycmVjdCBkYXRhIHNo
b3VsZCBiZSByZWxheWVkIHRvIHVuZGVybHlpbmcgc2luaycpKTsKK30sICdXcml0YWJsZVN0cmVh
bSBzaG91bGQgY29tcGxldGUgYXN5bmNocm9ub3VzIHdyaXRlcyBiZWZvcmUgY2xvc2UgcmVzb2x2
ZXMnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0
YWJsZVN0cmVhbSgpOworCisgIGNvbnN0IHdyaXRlciA9IHdzLmdldFdyaXRlcigpOworCisgIGNv
bnN0IGlucHV0ID0gWzEsIDIsIDMsIDQsIDVdOworICByZXR1cm4gd3JpdGVBcnJheVRvU3RyZWFt
KGlucHV0LCB3cml0ZXIpCisgICAgICAudGhlbigoKSA9PiBhc3NlcnRfYXJyYXlfZXF1YWxzKHdz
LmV2ZW50cywgWyd3cml0ZScsIDEsICd3cml0ZScsIDIsICd3cml0ZScsIDMsICd3cml0ZScsIDQs
ICd3cml0ZScsIDUsICdjbG9zZSddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAnY29ycmVjdCBkYXRhIHNob3VsZCBiZSByZWxheWVkIHRvIHVuZGVybHlpbmcgc2luaycp
KTsKK30sICdXcml0YWJsZVN0cmVhbSBzaG91bGQgY29tcGxldGUgc3luY2hyb25vdXMgd3JpdGVz
IGJlZm9yZSBjbG9zZSByZXNvbHZlcycpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworICBjb25z
dCB3cyA9IG5ldyBXcml0YWJsZVN0cmVhbSh7CisgICAgd3JpdGUoKSB7CisgICAgICByZXR1cm4g
J0hlbGxvJzsKKyAgICB9CisgIH0pOworCisgIGNvbnN0IHdyaXRlciA9IHdzLmdldFdyaXRlcigp
OworCisgIGNvbnN0IHdyaXRlUHJvbWlzZSA9IHdyaXRlci53cml0ZSgnYScpOworICByZXR1cm4g
d3JpdGVQcm9taXNlCisgICAgICAudGhlbih2YWx1ZSA9PiBhc3NlcnRfZXF1YWxzKHZhbHVlLCB1
bmRlZmluZWQsICdmdWxmaWxsbWVudCB2YWx1ZSBtdXN0IGJlIHVuZGVmaW5lZCcpKTsKK30sICdm
dWxmaWxsbWVudCB2YWx1ZSBvZiB3cy53cml0ZSgpIGNhbGwgc2hvdWxkIGJlIHVuZGVmaW5lZCBl
dmVuIGlmIHRoZSB1bmRlcmx5aW5nIHNpbmsgcmV0dXJucyBhIG5vbi11bmRlZmluZWQgJyArCisg
ICAgJ3ZhbHVlJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisgIGxldCByZXNvbHZlU2lua1dy
aXRlUHJvbWlzZTsKKyAgY29uc3Qgd3MgPSBuZXcgV3JpdGFibGVTdHJlYW0oeworICAgIHdyaXRl
KCkgeworICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4geworICAgICAgICByZXNv
bHZlU2lua1dyaXRlUHJvbWlzZSA9IHJlc29sdmU7CisgICAgICB9KTsKKyAgICB9CisgIH0pOwor
CisgIGNvbnN0IHdyaXRlciA9IHdzLmdldFdyaXRlcigpOworCisgIGFzc2VydF9lcXVhbHMod3Jp
dGVyLmRlc2lyZWRTaXplLCAxLCAnZGVzaXJlZFNpemUgc2hvdWxkIGJlIDEnKTsKKworICByZXR1
cm4gd3JpdGVyLnJlYWR5LnRoZW4oKCkgPT4geworICAgIGNvbnN0IHdyaXRlUHJvbWlzZSA9IHdy
aXRlci53cml0ZSgnYScpOworICAgIGxldCB3cml0ZVByb21pc2VSZXNvbHZlZCA9IGZhbHNlOwor
ICAgIGFzc2VydF9ub3RfZXF1YWxzKHJlc29sdmVTaW5rV3JpdGVQcm9taXNlLCB1bmRlZmluZWQs
ICdyZXNvbHZlU2lua1dyaXRlUHJvbWlzZSBzaG91bGQgbm90IGJlIHVuZGVmaW5lZCcpOworCisg
ICAgYXNzZXJ0X2VxdWFscyh3cml0ZXIuZGVzaXJlZFNpemUsIDAsICdkZXNpcmVkU2l6ZSBzaG91
bGQgYmUgMCBhZnRlciB3cml0ZXIud3JpdGUoKScpOworCisgICAgcmV0dXJuIFByb21pc2UuYWxs
KFsKKyAgICAgIHdyaXRlUHJvbWlzZS50aGVuKHZhbHVlID0+IHsKKyAgICAgICAgd3JpdGVQcm9t
aXNlUmVzb2x2ZWQgPSB0cnVlOworICAgICAgICBhc3NlcnRfZXF1YWxzKHJlc29sdmVTaW5rV3Jp
dGVQcm9taXNlLCB1bmRlZmluZWQsICdzaW5rV3JpdGVQcm9taXNlIHNob3VsZCBiZSBmdWxmaWxs
ZWQgYmVmb3JlIHdyaXRlUHJvbWlzZScpOworCisgICAgICAgIGFzc2VydF9lcXVhbHModmFsdWUs
IHVuZGVmaW5lZCwgJ3dyaXRlUHJvbWlzZSBzaG91bGQgYmUgZnVsZmlsbGVkIHdpdGggdW5kZWZp
bmVkJyk7CisgICAgICB9KSwKKyAgICAgIHdyaXRlci5yZWFkeS50aGVuKHZhbHVlID0+IHsKKyAg
ICAgICAgYXNzZXJ0X2VxdWFscyhyZXNvbHZlU2lua1dyaXRlUHJvbWlzZSwgdW5kZWZpbmVkLCAn
c2lua1dyaXRlUHJvbWlzZSBzaG91bGQgYmUgZnVsZmlsbGVkIGJlZm9yZSB3cml0ZXIucmVhZHkn
KTsKKyAgICAgICAgYXNzZXJ0X3RydWUod3JpdGVQcm9taXNlUmVzb2x2ZWQsICd3cml0ZVByb21p
c2Ugc2hvdWxkIGJlIGZ1bGZpbGxlZCBiZWZvcmUgd3JpdGVyLnJlYWR5Jyk7CisKKyAgICAgICAg
YXNzZXJ0X2VxdWFscyh3cml0ZXIuZGVzaXJlZFNpemUsIDEsICdkZXNpcmVkU2l6ZSBzaG91bGQg
YmUgMSBhZ2FpbicpOworCisgICAgICAgIGFzc2VydF9lcXVhbHModmFsdWUsIHVuZGVmaW5lZCwg
J3dyaXRlUHJvbWlzZSBzaG91bGQgYmUgZnVsZmlsbGVkIHdpdGggdW5kZWZpbmVkJyk7CisgICAg
ICB9KSwKKyAgICAgIGZsdXNoQXN5bmNFdmVudHMoKS50aGVuKCgpID0+IHsKKyAgICAgICAgcmVz
b2x2ZVNpbmtXcml0ZVByb21pc2UoKTsKKyAgICAgICAgcmVzb2x2ZVNpbmtXcml0ZVByb21pc2Ug
PSB1bmRlZmluZWQ7CisgICAgICB9KQorICAgIF0pOworICB9KTsKK30sICdXcml0YWJsZVN0cmVh
bSBzaG91bGQgdHJhbnNpdGlvbiB0byB3YWl0aW5nIHVudGlsIHdyaXRlIGlzIGFja25vd2xlZGdl
ZCcpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIGxldCBzaW5rV3JpdGVQcm9taXNlUmVqZWN0
b3JzID0gW107CisgIGNvbnN0IHdzID0gbmV3IFdyaXRhYmxlU3RyZWFtKHsKKyAgICB3cml0ZSgp
IHsKKyAgICAgIGNvbnN0IHNpbmtXcml0ZVByb21pc2UgPSBuZXcgUHJvbWlzZSgociwgcmVqZWN0
KSA9PiBzaW5rV3JpdGVQcm9taXNlUmVqZWN0b3JzLnB1c2gocmVqZWN0KSk7CisgICAgICByZXR1
cm4gc2lua1dyaXRlUHJvbWlzZTsKKyAgICB9CisgIH0pOworCisgIGNvbnN0IHdyaXRlciA9IHdz
LmdldFdyaXRlcigpOworCisgIGFzc2VydF9lcXVhbHMod3JpdGVyLmRlc2lyZWRTaXplLCAxLCAn
ZGVzaXJlZFNpemUgc2hvdWxkIGJlIDEnKTsKKworICByZXR1cm4gd3JpdGVyLnJlYWR5LnRoZW4o
KCkgPT4geworICAgIGNvbnN0IHdyaXRlUHJvbWlzZSA9IHdyaXRlci53cml0ZSgnYScpOworICAg
IGFzc2VydF9lcXVhbHMoc2lua1dyaXRlUHJvbWlzZVJlamVjdG9ycy5sZW5ndGgsIDEsICd0aGVy
ZSBzaG91bGQgYmUgMSByZWplY3RvcicpOworICAgIGFzc2VydF9lcXVhbHMod3JpdGVyLmRlc2ly
ZWRTaXplLCAwLCAnZGVzaXJlZFNpemUgc2hvdWxkIGJlIDAnKTsKKworICAgIGNvbnN0IHdyaXRl
UHJvbWlzZTIgPSB3cml0ZXIud3JpdGUoJ2InKTsKKyAgICBhc3NlcnRfZXF1YWxzKHNpbmtXcml0
ZVByb21pc2VSZWplY3RvcnMubGVuZ3RoLCAxLCAndGhlcmUgc2hvdWxkIGJlIHN0aWxsIDEgcmVq
ZWN0b3InKTsKKyAgICBhc3NlcnRfZXF1YWxzKHdyaXRlci5kZXNpcmVkU2l6ZSwgLTEsICdkZXNp
cmVkU2l6ZSBzaG91bGQgYmUgLTEnKTsKKworICAgIGNvbnN0IGNsb3NlZFByb21pc2UgPSB3cml0
ZXIuY2xvc2UoKTsKKworICAgIGFzc2VydF9lcXVhbHMod3JpdGVyLmRlc2lyZWRTaXplLCAtMSwg
J2Rlc2lyZWRTaXplIHNob3VsZCBzdGlsbCBiZSAtMScpOworCisgICAgcmV0dXJuIFByb21pc2Uu
YWxsKFsKKyAgICAgIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMSwgY2xvc2VkUHJv
bWlzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjbG9zZWRQcm9taXNlIHNob3Vs
ZCByZWplY3Qgd2l0aCB0aGUgZXJyb3IgcmV0dXJuZWQgZnJvbSB0aGUgc2lua1wncyB3cml0ZSBt
ZXRob2QnKQorICAgICAgICAgIC50aGVuKCgpID0+IGFzc2VydF9lcXVhbHMoc2lua1dyaXRlUHJv
bWlzZVJlamVjdG9ycy5sZW5ndGgsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAnc2lua1dyaXRlUHJvbWlzZSBzaG91bGQgcmVqZWN0IGJlZm9yZSBjbG9zZWRQcm9taXNl
JykpLAorICAgICAgcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCB3cml0ZVByb21p
c2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnd3JpdGVQcm9taXNlIHNob3VsZCBy
ZWplY3Qgd2l0aCB0aGUgZXJyb3IgcmV0dXJuZWQgZnJvbSB0aGUgc2lua1wncyB3cml0ZSBtZXRo
b2QnKQorICAgICAgICAgIC50aGVuKCgpID0+IGFzc2VydF9lcXVhbHMoc2lua1dyaXRlUHJvbWlz
ZVJlamVjdG9ycy5sZW5ndGgsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnc2lua1dyaXRlUHJvbWlzZSBzaG91bGQgcmVqZWN0IGJlZm9yZSB3cml0ZVByb21pc2UnKSks
CisgICAgICBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIHdyaXRlUHJvbWlzZTIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnd3JpdGVQcm9taXNlMiBzaG91bGQgcmVq
ZWN0IHdpdGggdGhlIGVycm9yIHJldHVybmVkIGZyb20gdGhlIHNpbmtcJ3Mgd3JpdGUgbWV0aG9k
JykKKyAgICAgICAgICAudGhlbigoKSA9PiBhc3NlcnRfZXF1YWxzKHNpbmtXcml0ZVByb21pc2VS
ZWplY3RvcnMubGVuZ3RoLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
J3NpbmtXcml0ZVByb21pc2Ugc2hvdWxkIHJlamVjdCBiZWZvcmUgd3JpdGVQcm9taXNlMicpKSwK
KyAgICAgIGZsdXNoQXN5bmNFdmVudHMoKS50aGVuKCgpID0+IHsKKyAgICAgICAgc2lua1dyaXRl
UHJvbWlzZVJlamVjdG9yc1swXShlcnJvcjEpOworICAgICAgICBzaW5rV3JpdGVQcm9taXNlUmVq
ZWN0b3JzID0gW107CisgICAgICB9KQorICAgIF0pOworICB9KTsKK30sICd3aGVuIHdyaXRlIHJl
dHVybnMgYSByZWplY3RlZCBwcm9taXNlLCBxdWV1ZWQgd3JpdGVzIGFuZCBjbG9zZSBzaG91bGQg
YmUgY2xlYXJlZCcpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIGNvbnN0IHdzID0gbmV3IFdy
aXRhYmxlU3RyZWFtKHsKKyAgICB3cml0ZSgpIHsKKyAgICAgIHRocm93IGVycm9yMTsKKyAgICB9
CisgIH0pOworCisgIGNvbnN0IHdyaXRlciA9IHdzLmdldFdyaXRlcigpOworCisgIHJldHVybiBw
cm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIHdyaXRlci53cml0ZSgnYScpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3dyaXRlKCkgc2hvdWxkIHJlamVjdCB3aXRo
IHRoZSBlcnJvciByZXR1cm5lZCBmcm9tIHRoZSBzaW5rXCdzIHdyaXRlIG1ldGhvZCcpCisgICAg
ICAudGhlbigoKSA9PiBwcm9taXNlX3JlamVjdHNfanModCwgVHlwZUVycm9yLCB3cml0ZXIuY2xv
c2UoKSwgJ2Nsb3NlKCkgc2hvdWxkIGJlIHJlamVjdGVkJykpOworfSwgJ3doZW4gc2lua1wncyB3
cml0ZSB0aHJvd3MgYW4gZXJyb3IsIHRoZSBzdHJlYW0gc2hvdWxkIGJlY29tZSBlcnJvcmVkIGFu
ZCB0aGUgcHJvbWlzZSBzaG91bGQgcmVqZWN0Jyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAg
Y29uc3Qgd3MgPSBuZXcgV3JpdGFibGVTdHJlYW0oeworICAgIHdyaXRlKGNodW5rLCBjb250cm9s
bGVyKSB7CisgICAgICBjb250cm9sbGVyLmVycm9yKGVycm9yMSk7CisgICAgICB0aHJvdyBlcnJv
cjI7CisgICAgfQorICB9KTsKKworICBjb25zdCB3cml0ZXIgPSB3cy5nZXRXcml0ZXIoKTsKKwor
ICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IyLCB3cml0ZXIud3JpdGUo
J2EnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd3cml0ZSgpIHNob3VsZCBy
ZWplY3Qgd2l0aCB0aGUgZXJyb3IgcmV0dXJuZWQgZnJvbSB0aGUgc2lua1wncyB3cml0ZSBtZXRo
b2QgJykKKyAgLnRoZW4oKCkgPT4geworICAgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAgICBw
cm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIHdyaXRlci5yZWFkeSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICd3cml0ZXIucmVhZHkgbXVzdCByZWplY3Qgd2l0aCB0aGUg
ZXJyb3IgcGFzc2VkIHRvIHRoZSBjb250cm9sbGVyJyksCisgICAgICBwcm9taXNlX3JlamVjdHNf
ZXhhY3RseSh0LCBlcnJvcjEsIHdyaXRlci5jbG9zZWQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnd3JpdGVyLmNsb3NlZCBtdXN0IHJlamVjdCB3aXRoIHRoZSBlcnJvciBwYXNzZWQg
dG8gdGhlIGNvbnRyb2xsZXInKQorICAgIF0pOworICB9KTsKK30sICd3cml0ZXIud3JpdGUoKSwg
cmVhZHkgYW5kIGNsb3NlZCByZWplY3Qgd2l0aCB0aGUgZXJyb3IgcGFzc2VkIHRvIGNvbnRyb2xs
ZXIuZXJyb3IoKSBtYWRlIGJlZm9yZSBzaW5rLndyaXRlJyArCisgICAgJyByZWplY3Rpb24nKTsK
KworcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgY29uc3QgbnVtYmVyT2ZXcml0ZXMgPSAxMDAwOwor
CisgIGxldCByZXNvbHZlRmlyc3RXcml0ZVByb21pc2U7CisgIGxldCB3cml0ZUNvdW50ID0gMDsK
KyAgY29uc3Qgd3MgPSBuZXcgV3JpdGFibGVTdHJlYW0oeworICAgIHdyaXRlKCkgeworICAgICAg
Kyt3cml0ZUNvdW50OworICAgICAgaWYgKCFyZXNvbHZlRmlyc3RXcml0ZVByb21pc2UpIHsKKyAg
ICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4geworICAgICAgICAgIHJlc29sdmVG
aXJzdFdyaXRlUHJvbWlzZSA9IHJlc29sdmU7CisgICAgICAgIH0pOworICAgICAgfQorICAgICAg
cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpOworICAgIH0KKyAgfSk7CisKKyAgY29uc3Qgd3JpdGVy
ID0gd3MuZ2V0V3JpdGVyKCk7CisgIHJldHVybiB3cml0ZXIucmVhZHkudGhlbigoKSA9PiB7Cisg
ICAgZm9yIChsZXQgaSA9IDE7IGkgPCBudW1iZXJPZldyaXRlczsgKytpKSB7CisgICAgICB3cml0
ZXIud3JpdGUoJ2EnKTsKKyAgICB9CisgICAgY29uc3Qgd3JpdGVQcm9taXNlID0gd3JpdGVyLndy
aXRlKCdhJyk7CisKKyAgICBhc3NlcnRfZXF1YWxzKHdyaXRlQ291bnQsIDEsICdzaG91bGQgaGF2
ZSBjYWxsZWQgc2lua1wncyB3cml0ZSBvbmNlJyk7CisKKyAgICByZXNvbHZlRmlyc3RXcml0ZVBy
b21pc2UoKTsKKworICAgIHJldHVybiB3cml0ZVByb21pc2UKKyAgICAgICAgLnRoZW4oKCkgPT4K
KyAgICAgICAgYXNzZXJ0X2VxdWFscyh3cml0ZUNvdW50LCBudW1iZXJPZldyaXRlcywgYHNob3Vs
ZCBoYXZlIGNhbGxlZCBzaW5rJ3Mgd3JpdGUgJHtudW1iZXJPZldyaXRlc30gdGltZXNgKSk7Cisg
IH0pOworfSwgJ2EgbGFyZ2UgcXVldWUgb2Ygd3JpdGVzIHNob3VsZCBiZSBwcm9jZXNzZWQgY29t
cGxldGVseScpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworICBjb25zdCBzdHJlYW0gPSByZWNv
cmRpbmdXcml0YWJsZVN0cmVhbSgpOworICBjb25zdCB3ID0gc3RyZWFtLmdldFdyaXRlcigpOwor
ICBjb25zdCBXcml0YWJsZVN0cmVhbURlZmF1bHRXcml0ZXIgPSB3LmNvbnN0cnVjdG9yOworICB3
LnJlbGVhc2VMb2NrKCk7CisgIGNvbnN0IHdyaXRlciA9IG5ldyBXcml0YWJsZVN0cmVhbURlZmF1
bHRXcml0ZXIoc3RyZWFtKTsKKyAgcmV0dXJuIHdyaXRlci5yZWFkeS50aGVuKCgpID0+IHsKKyAg
ICB3cml0ZXIud3JpdGUoJ2EnKTsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHN0cmVhbS5ldmVu
dHMsIFsnd3JpdGUnLCAnYSddLCAnd3JpdGUoKSBzaG91bGQgYmUgcGFzc2VkIHRvIHNpbmsnKTsK
KyAgfSk7Cit9LCAnV3JpdGFibGVTdHJlYW1EZWZhdWx0V3JpdGVyIHNob3VsZCB3b3JrIHdoZW4g
bWFudWFsbHkgY29uc3RydWN0ZWQnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgbGV0IHRo
ZW5DYWxsZWQgPSBmYWxzZTsKKyAgY29uc3Qgd3MgPSBuZXcgV3JpdGFibGVTdHJlYW0oeworICAg
IHdyaXRlKCkgeworICAgICAgcmV0dXJuIHsKKyAgICAgICAgdGhlbihvbkZ1bGZpbGxlZCkgewor
ICAgICAgICAgIHRoZW5DYWxsZWQgPSB0cnVlOworICAgICAgICAgIG9uRnVsZmlsbGVkKCk7Cisg
ICAgICAgIH0KKyAgICAgIH07CisgICAgfQorICB9KTsKKyAgcmV0dXJuIHdzLmdldFdyaXRlcigp
LndyaXRlKCdhJykudGhlbigoKSA9PiBhc3NlcnRfdHJ1ZSh0aGVuQ2FsbGVkLCAndGhlbkNhbGxl
ZCBzaG91bGQgYmUgdHJ1ZScpKTsKK30sICdyZXR1cm5pbmcgYSB0aGVuYWJsZSBmcm9tIHdyaXRl
KCkgc2hvdWxkIHdvcmsnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgY29uc3Qgc3RyZWFt
ID0gbmV3IFdyaXRhYmxlU3RyZWFtKCk7CisgIGNvbnN0IHdyaXRlciA9IHN0cmVhbS5nZXRXcml0
ZXIoKTsKKyAgY29uc3QgV3JpdGFibGVTdHJlYW1EZWZhdWx0V3JpdGVyID0gd3JpdGVyLmNvbnN0
cnVjdG9yOworICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4gbmV3IFdyaXRhYmxl
U3RyZWFtRGVmYXVsdFdyaXRlcihzdHJlYW0pLAorICAgICAgICAgICAgICAgICAgICdzaG91bGQg
bm90IGJlIGFibGUgdG8gY29uc3RydWN0IG9uIGxvY2tlZCBzdHJlYW0nKTsKKyAgLy8gSWYgc3Ry
ZWFtLltbd3JpdGVyXV0gbm8gbG9uZ2VyIHBvaW50cyB0byB8d3JpdGVyfCB0aGVuIHRoZSBjbG9z
ZWQgUHJvbWlzZQorICAvLyB3b24ndCB3b3JrIHByb3Blcmx5LgorICByZXR1cm4gUHJvbWlzZS5h
bGwoW3dyaXRlci5jbG9zZSgpLCB3cml0ZXIuY2xvc2VkXSk7Cit9LCAnZmFpbGluZyBEZWZhdWx0
V3JpdGVyIGNvbnN0cnVjdG9yIHNob3VsZCBub3QgcmVsZWFzZSBhbiBleGlzdGluZyB3cml0ZXIn
KTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBjb25zdCB3cyA9IG5ldyBXcml0YWJsZVN0cmVh
bSh7CisgICAgc3RhcnQoKSB7CisgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyb3IxKTsK
KyAgICB9CisgIH0sIHsgaGlnaFdhdGVyTWFyazogMCB9KTsKKyAgY29uc3Qgd3JpdGVyID0gd3Mu
Z2V0V3JpdGVyKCk7CisgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAgcHJvbWlzZV9yZWplY3Rz
X2V4YWN0bHkodCwgZXJyb3IxLCB3cml0ZXIucmVhZHksICdyZWFkeSBzaG91bGQgYmUgcmVqZWN0
ZWQnKSwKKyAgICBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIHdyaXRlci53cml0
ZSgpLCAnd3JpdGUoKSBzaG91bGQgYmUgcmVqZWN0ZWQnKQorICBdKTsKK30sICd3cml0ZSgpIG9u
IGEgc3RyZWFtIHdpdGggSFdNIDAgc2hvdWxkIG5vdCBjYXVzZSB0aGUgcmVhZHkgUHJvbWlzZSB0
byByZXNvbHZlJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgY29uc3Qgd3MgPSBuZXcgV3Jp
dGFibGVTdHJlYW0oKTsKKyAgY29uc3Qgd3JpdGVyID0gd3MuZ2V0V3JpdGVyKCk7CisgIHdyaXRl
ci5yZWxlYXNlTG9jaygpOworICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2pzKHQsIFR5cGVFcnJv
ciwgd3JpdGVyLndyaXRlKCksICd3cml0ZSBzaG91bGQgcmVqZWN0Jyk7Cit9LCAnd3JpdGluZyB0
byBhIHJlbGVhc2VkIHdyaXRlciBzaG91bGQgcmVqZWN0IHRoZSByZXR1cm5lZCBwcm9taXNlJyk7
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy93cml0ZS5hbnkud29ya2VyLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0
YWJsZS1zdHJlYW1zL3dyaXRlLmFueS53b3JrZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlk
MzAwNzI0MWVjMzIxZWZhNDgwZjdiZDZlYWNiNWM1NzBhMDgwMmUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3Jp
dGFibGUtc3RyZWFtcy93cml0ZS5hbnkud29ya2VyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE1
IEBACisKK0ZBSUwgV3JpdGFibGVTdHJlYW0gc2hvdWxkIGNvbXBsZXRlIGFzeW5jaHJvbm91cyB3
cml0ZXMgYmVmb3JlIGNsb3NlIHJlc29sdmVzIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxl
U3RyZWFtCitGQUlMIFdyaXRhYmxlU3RyZWFtIHNob3VsZCBjb21wbGV0ZSBzeW5jaHJvbm91cyB3
cml0ZXMgYmVmb3JlIGNsb3NlIHJlc29sdmVzIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxl
U3RyZWFtCitGQUlMIGZ1bGZpbGxtZW50IHZhbHVlIG9mIHdzLndyaXRlKCkgY2FsbCBzaG91bGQg
YmUgdW5kZWZpbmVkIGV2ZW4gaWYgdGhlIHVuZGVybHlpbmcgc2luayByZXR1cm5zIGEgbm9uLXVu
ZGVmaW5lZCB2YWx1ZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBX
cml0YWJsZVN0cmVhbSBzaG91bGQgdHJhbnNpdGlvbiB0byB3YWl0aW5nIHVudGlsIHdyaXRlIGlz
IGFja25vd2xlZGdlZCBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCB3
aGVuIHdyaXRlIHJldHVybnMgYSByZWplY3RlZCBwcm9taXNlLCBxdWV1ZWQgd3JpdGVzIGFuZCBj
bG9zZSBzaG91bGQgYmUgY2xlYXJlZCBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVh
bQorRkFJTCB3aGVuIHNpbmsncyB3cml0ZSB0aHJvd3MgYW4gZXJyb3IsIHRoZSBzdHJlYW0gc2hv
dWxkIGJlY29tZSBlcnJvcmVkIGFuZCB0aGUgcHJvbWlzZSBzaG91bGQgcmVqZWN0IENhbid0IGZp
bmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIHdyaXRlci53cml0ZSgpLCByZWFkeSBh
bmQgY2xvc2VkIHJlamVjdCB3aXRoIHRoZSBlcnJvciBwYXNzZWQgdG8gY29udHJvbGxlci5lcnJv
cigpIG1hZGUgYmVmb3JlIHNpbmsud3JpdGUgcmVqZWN0aW9uIENhbid0IGZpbmQgdmFyaWFibGU6
IFdyaXRhYmxlU3RyZWFtCitGQUlMIGEgbGFyZ2UgcXVldWUgb2Ygd3JpdGVzIHNob3VsZCBiZSBw
cm9jZXNzZWQgY29tcGxldGVseSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQor
RkFJTCBXcml0YWJsZVN0cmVhbURlZmF1bHRXcml0ZXIgc2hvdWxkIHdvcmsgd2hlbiBtYW51YWxs
eSBjb25zdHJ1Y3RlZCBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBy
ZXR1cm5pbmcgYSB0aGVuYWJsZSBmcm9tIHdyaXRlKCkgc2hvdWxkIHdvcmsgQ2FuJ3QgZmluZCB2
YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgZmFpbGluZyBEZWZhdWx0V3JpdGVyIGNvbnN0
cnVjdG9yIHNob3VsZCBub3QgcmVsZWFzZSBhbiBleGlzdGluZyB3cml0ZXIgQ2FuJ3QgZmluZCB2
YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgd3JpdGUoKSBvbiBhIHN0cmVhbSB3aXRoIEhX
TSAwIHNob3VsZCBub3QgY2F1c2UgdGhlIHJlYWR5IFByb21pc2UgdG8gcmVzb2x2ZSBDYW4ndCBm
aW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCB3cml0aW5nIHRvIGEgcmVsZWFzZWQg
d3JpdGVyIHNob3VsZCByZWplY3QgdGhlIHJldHVybmVkIHByb21pc2UgQ2FuJ3QgZmluZCB2YXJp
YWJsZTogV3JpdGFibGVTdHJlYW0KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvd3JpdGUuYW55
Lndvcmtlci5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvd3JpdGUuYW55Lndvcmtlci5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjIzODI5MTM1MjhlNjkzYjNhNWQ1NmM2NjBhNDUwNjA5ODBiNTQ4YzMKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvd3JpdGFibGUtc3RyZWFtcy93cml0ZS5hbnkud29ya2VyLmh0bWwKQEAgLTAsMCArMSBAQAor
PCEtLSBUaGlzIGZpbGUgaXMgcmVxdWlyZWQgZm9yIFdlYktpdCB0ZXN0IGluZnJhc3RydWN0dXJl
IHRvIHJ1biB0aGUgdGVtcGxhdGVkIHRlc3QgLS0+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBlYTJhM2Uy
MTk2YWFjMDcyOTZiZGIxZmJkNmE4OWY0ZjUxODM2ZjAxLi5lMjE3NWQwMDJjYWY4MDU4ZGRhYjZl
MmNkZmU3ZTkyNzAzYTcxMzdmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsv
VGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVj
dGF0aW9ucwpAQCAtMTYwOCw3ICsxNjA4LDYgQEAgd2Via2l0Lm9yZy9iLzE4NjYzOCBlZGl0aW5n
L2V4ZWNDb21tYW5kL3ByaW50Lmh0bWwgWyBDcmFzaCBdCiB3ZWJraXQub3JnL2IvMTg2NjM4IGVk
aXRpbmcvc2VsZWN0aW9uL3NlbGVjdC1iaWRpLXJ1bi5odG1sIFsgVGltZW91dCBQYXNzIF0KIHdl
YmtpdC5vcmcvYi8xODY2MzggZmFzdC9tZWRpYS9wcmludC1yZXN0b3Jlcy1wcmV2aW91cy1tZWRp
YXR5cGUuaHRtbCBbIENyYXNoIF0KIHdlYmtpdC5vcmcvYi8xODY2MzggZmFzdC9zZWxlY3RvcnMv
dW5xdWFsaWZpZWQtaG92ZXItc3RyaWN0Lmh0bWwgWyBGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8x
ODY2MzggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9lcnJv
ci1wcm9wYWdhdGlvbi1mb3J3YXJkLmh0bWwgWyBGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xODY2
MzggbWVkaWEvdmlkZW8tcmVtb3RlLWNvbnRyb2wtcGxheXBhdXNlLmh0bWwgWyBGYWlsdXJlIFRp
bWVvdXQgUGFzcyBdCiB3ZWJraXQub3JnL2IvMTg2NjM4IHByaW50aW5nL3ByaW50LWNsb3NlLWNy
YXNoLmh0bWwgWyBDcmFzaCBdCiB3ZWJraXQub3JnL2IvMTc3OTQwIHdlYmtpdC5vcmcvYi8xODY2
Mzggd29ya2Vycy93YXNtLWhhc2hzZXQtbWFueS5odG1sIFsgQ3Jhc2ggVGltZW91dCBQYXNzIF0K
QEAgLTMzMDcsNyArMzMwNiw2IEBAIHdlYmtpdC5vcmcvYi8xODQ1MDQgaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvcmVxdWVzdC9yZXF1ZXN0LWtlCiB3ZWJraXQub3Jn
L2IvMTgwNjQ1IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3Mv
Zm9ybXMvdGhlLWlucHV0LWVsZW1lbnQvdHlwZS1jaGFuZ2Utc3RhdGUuaHRtbCBbIEZhaWx1cmUg
XQogCiB3ZWJraXQub3JnL2IvMTg0Nzc2IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
aHRtbC9zZW1hbnRpY3MvZm9ybXMvdGV4dGZpZWxkc2VsZWN0aW9uL3NlbGVjdGlvbi1ub3QtYXBw
bGljYXRpb24uaHRtbCBbIEZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzE4NDc3NiBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL2dlbmVy
YWwuaHRtbCBbIEZhaWx1cmUgXQogCiB3ZWJraXQub3JnL2IvMTg1MjU0IGh0dHAvdGVzdHMveG1s
aHR0cHJlcXVlc3Qvb25sb2FkZW5kLWV2ZW50LWFmdGVyLWVycm9yLmh0bWwgWyBGYWlsdXJlIF0K
IHdlYmtpdC5vcmcvYi8xODUyNTQgaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZXNwb25zZS1h
Y2Nlc3Mtb24tZXJyb3IuaHRtbCBbIEZhaWx1cmUgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vaW9zLXdrMi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
aW9zLXdrMi9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGNkNjEyOTY2YmVkOTdmZjNmYzgzMGQ0Y2Nh
N2Q5MWRmZTQzMTk1NzAuLjU5MzZiM2ZmMjRhMGI0NGRhNjg4YjEwMjlkOGY4NDI5MmVkY2FiNzUg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy13azIvVGVzdEV4cGVjdGF0aW9u
cworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtd2syL1Rlc3RFeHBlY3RhdGlvbnMKQEAg
LTExNjUsOCArMTE2NSw2IEBAIHdlYmtpdC5vcmcvYi8xNzE4MzAgWyBEZWJ1ZyBdIGh0dHAvdGVz
dHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd29ya2Vycy9jbG9zZS5odG1sCiAKIHdlYmtpdC5vcmcv
Yi8xNjk2MzcgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy94aHIvdGltZW91dC1tdWx0
aXBsZS1mZXRjaGVzLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCi13ZWJraXQub3JnL2IvMTcxODg2
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0
cmVhbXMvZ2VuZXJhbC5odG1sIFsgUGFzcyBGYWlsdXJlIF0KLQogd2Via2l0Lm9yZy9iLzE3MTk1
NyBmYXN0L2FuaW1hdGlvbi9yZXF1ZXN0LWFuaW1hdGlvbi1mcmFtZS10aW1lLXVuaXQuaHRtbCBb
IFBhc3MgRmFpbHVyZSBdCiAKIHdlYmtpdC5vcmcvYi8xNzI0NTQgaHR0cC90ZXN0cy9uYXZpZ2F0
aW9uL3N0YXRpc3RpY3MuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2lvcy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDc5OThiOTdhODk1MDYxYTE1ZjljZDEyZGE4MDZj
NWY3ZGYyYmU5Y2IuLjYzZjZkMzE0OGIyNmZlMTUzN2U2ZGY2ZWY4OGYyMTNkYzdjZDk0YjUgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zCisrKyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zCkBAIC0zMDc5LDggKzMw
NzksNiBAQCB3ZWJraXQub3JnL2IvMTg4NTc4IHN2Zy9jdXN0b20vc2Nyb2xsaW5nLWVtYmVkZGVk
LXN2Zy1maWxlLWltYWdlLXJlcGFpbnQtcHJvYmxlbQogCiB3ZWJraXQub3JnL2IvMTI4MzEyIG1l
ZGlhL3ZpZGVvLWxvYWQtcHJlbG9hZC1tZXRhZGF0YS5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAot
d2Via2l0Lm9yZy9iLzE4ODA3MCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvcGlwaW5nL2Vycm9yLXByb3BhZ2F0aW9uLWJhY2t3YXJkLmh0bWwgWyBQYXNzIEZhaWx1cmUg
XQotCiB3ZWJraXQub3JnL2IvMTg5NzI2IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL2ZldGNoLW1peGVkLWNvbnRlbnQtdG8taW5z
Y29wZS5odHRwcy5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xODk3MjYgaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3Jr
ZXIvZmV0Y2gtbWl4ZWQtY29udGVudC10by1vdXRzY29wZS5odHRwcy5odG1sIFsgUGFzcyBGYWls
dXJlIF0KIApAQCAtMzQ3Myw0ICszNDcxLDQgQEAgd2Via2l0Lm9yZy9iLzIxMjU2NSBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2VuY29kaW5nL3NpbmdsZS1ieXRlLWRlY29kZXIKIAog
ZmFzdC90ZXh0L3RleHQtc3R5bGVzLy1hcHBsZS1zeXN0ZW0gWyBQYXNzIF0KIAotd2Via2l0Lm9y
Zy9iLzIxNDE1NSBbIERlYnVnIF0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1s
L2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvYmxvYi5odHRwcy5odG1sIFsgUGFzcyBGYWls
dXJlIF0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCit3ZWJraXQub3JnL2IvMjE0MTU1IFsg
RGVidWcgXSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2lu
LWVtYmVkZGVyLXBvbGljeS9ibG9iLmh0dHBzLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGQ0YzY3YWZj
OWI2N2M0YTczMjkyYzA1MzliM2NmNjllZGUzNzlmMDAuLmFmZDI1OWFhN2U0YjQ5ZGEyMzRhNzI2
NTA5NDM3ZjYwMjYwNGNjYjAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13
azEvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rl
c3RFeHBlY3RhdGlvbnMKQEAgLTMyMyw3ICszMjMsNiBAQCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2luLWVtYmVkZGVyLXBvbGljeS9yZXF1aXJlLWNvcnAt
cwogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJl
ZGRlci1wb2xpY3kvc2VydmljZS13b3JrZXItY2FjaGUtc3RvcmFnZS5odHRwcy5odG1sIFsgU2tp
cCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZlci10aW1pbmcvc2Vydmlj
ZV93b3JrZXJfaWRsLmh0bWwgWyBTa2lwIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc2VydmljZS13b3JrZXJzIFsgU2tpcCBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL2RldGFjaGVkLWJ1ZmZlcnMuc2Vydmlj
ZXdvcmtlci5odHRwcy5odG1sIFsgU2tpcCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2luZnJhc3RydWN0dXJlL3NlcnZlci9jb250ZXh0LmFueS5zZXJ2aWNld29ya2VyLmh0bWwg
WyBTa2lwIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaW5mcmFzdHJ1Y3R1cmUv
c2VydmVyL3NlY3VyZS1jb250ZXh0Lmh0dHBzLmFueS5zZXJ2aWNld29ya2VyLmh0bWwgWyBTa2lw
IF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvSW5kZXhlZERCL2tleS1nZW5lcmF0
b3JzL3JlYWRpbmctYXV0b2luY3JlbWVudC1pbmRleGVzLWN1cnNvcnMuYW55LnNlcnZpY2V3b3Jr
ZXIuaHRtbCBbIFNraXAgXQpAQCAtNjU5LDggKzY1OCw2IEBAIHdlYmtpdC5vcmcvYi8xNzQxODAg
c3ZnL2FuaW1hdGlvbnMvc21pbC1sZWFrLWVsZW1lbnRzLnN2ZyBbIFBhc3MgRmFpbHVyZSBdCiAK
IHdlYmtpdC5vcmcvYi8xNzU4Njcgc3ZnL2FuaW1hdGlvbnMvc21pbC1sZWFrLWR5bmFtaWNhbGx5
LWFkZGVkLWVsZW1lbnQtaW5zdGFuY2VzLnN2ZyBbIFBhc3MgRmFpbHVyZSBdCiAKLXdlYmtpdC5v
cmcvYi8xNzY5MjAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGlu
Zy9lcnJvci1wcm9wYWdhdGlvbi1mb3J3YXJkLmRlZGljYXRlZHdvcmtlci5odG1sIFsgUGFzcyBU
aW1lb3V0IF0KLQogd2Via2l0Lm9yZy9iLzE3NTg4NiBzdmcvYW5pbWF0aW9ucy9zbWlsLWxlYWst
ZWxlbWVudC1pbnN0YW5jZXMuc3ZnIFsgUGFzcyBGYWlsdXJlIF0KIAogIyA8cmRhcjovL3Byb2Js
ZW0vMjkyMDE2OTg+IER1bXBSZW5kZXJUcmVlIGNyYXNoZWQgaW4gY29tLmFwcGxlLkNvcmVHcmFw
aGljczogQ0dEYXRhUHJvdmlkZXJDb3B5RGF0YSArIDM3NwpAQCAtNzY4LDggKzc2NSw2IEBAIHdl
YmtpdC5vcmcvYi8xODkwODcgc3ZnL2FuaW1hdGlvbnMvYW5pbWF0ZS1lbmQtYXR0cmlidXRlLW51
bWVyaWMtcHJlY2lzaW9uLmh0bWwKIAogd2Via2l0Lm9yZy9iLzE4OTU5NCBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtYW5pbWF0aW9ucy9wZW5kaW5nLXN0eWxlLWNoYW5n
ZXMtMDAxLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCi13ZWJraXQub3JnL2IvMTg4MDcwIGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvZXJyb3ItcHJvcGFnYXRp
b24tYmFja3dhcmQuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCi0KICMgVGVzdHMgZm9yIHNtb290aCBz
Y3JvbGwgYmVoYXZpb3IgZG8gbm90IGFsbCB3b3JrIGFuZCB0aGV5IGFyZSBzbG93LCBzbyBsZXQn
cyBqdXN0IHNraXAgdGhlbS4KIHdlYmtpdC5vcmcvYi8xOTEzNTcgaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jc3MvY3Nzb20tdmlldy9zY3JvbGwtYmVoYXZpb3ItbWFpbi1mcmFtZS1y
b290Lmh0bWwgWyBTa2lwIF0KIHdlYmtpdC5vcmcvYi8xOTEzNTcgaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jc3MvY3Nzb20tdmlldy9zY3JvbGwtYmVoYXZpb3ItbWFpbi1mcmFtZS13
aW5kb3cuaHRtbCBbIFNraXAgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
LXdrMi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0
RXhwZWN0YXRpb25zCmluZGV4IGFkOTY5NTIzZDVkZjcyMDg5N2Q1MzU2Yjk5MzRjNjQ1OTM5N2Nh
ZWEuLmJjODU3YTU0ZDc0YmMxMDZiNmNjMTI3Nzg4Y2IwM2ZhZGQ2Y2QwOTUgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTU5NCw4ICs1OTQs
NiBAQCB3ZWJraXQub3JnL2IvMTY4MjM1IFsgRGVidWcgXSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL3RleAogCiB3ZWJraXQub3JnL2IvMTY4MDg1IHRpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL2xhdGNoZWQtdG8tZGVsZXRlZC1ub2RlLmh0bWwgWyBQYXNzIEZh
aWx1cmUgXQogCi13ZWJraXQub3JnL2IvMTY4MzM2IFsgRGVidWcgXSBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9nYXJiYWdlLWNvbGxlY3Rp
b24uaHRtbCBbIFBhc3MgVGltZW91dCBdCi0KICMgU2tpcHBlZCBiZWNhdXNlIE1hYyBkb2Vzbid0
IGhhdmUgYSBrZXkgdG8gc2hvdyB0aGUgY29udGV4dCBtZW51CiBmYXN0L2V2ZW50cy9jb250ZXh0
LWFjdGl2YXRlZC1ieS1rZXktZXZlbnQuaHRtbCBbIFNraXAgXQogCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL21hYy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDk0YTZiMjNjZWZhYzJiZGM1OTc1YTc5MzI5
OTJiZDM4MGZhYzRjZWUuLjIxNWNiMDMyY2Y1NmU4YzA4NThiNGYwODdlZTU5NDFiYjJkMTIxYTgg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zCisr
KyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zCkBAIC0xMjcxLDgg
KzEyNzEsNiBAQCB3ZWJraXQub3JnL2IvMTcxNDY1IG1lZGlhL3RyYWNrL3RyYWNrLWluLWJhbmQt
c3R5bGUuaHRtbCBbIFBhc3MgVGltZW91dCBdCiAKIHdlYmtpdC5vcmcvYi8xNzE3NjAgaW1wb3J0
ZWQvdzNjL2kxOG4vYmlkaS9iaWRpLXBsYWludGV4dC0wMTEuaHRtbCBbIEltYWdlT25seUZhaWx1
cmUgXQogCi13ZWJraXQub3JnL2IvMTcxODg2IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMvZ2VuZXJhbC5odG1sIFsgUGFzcyBGYWls
dXJlIF0KLQogIyBUaGVzZSB0ZXN0cyBhcmUgaU9TLXNwZWNpZmljCiBtZWRpYS9tb2Rlcm4tbWVk
aWEtY29udHJvbHMvYXVkaW8vYXVkaW8tY29udHJvbHMtc3R5bGVzLmh0bWwgWyBTa2lwIF0KIG1l
ZGlhL21vZGVybi1tZWRpYS1jb250cm9scy9pb3MtaW5saW5lLW1lZGlhLWNvbnRyb2xzIFsgU2tp
cCBdCkBAIC0xOTAwLDQgKzE4OTgsNCBAQCB3ZWJraXQub3JnL2IvMjEyNTY1IFsgQ2F0YWxpbmEg
TW9qYXZlIF0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9lbmNvZGluZwogCiBmYXN0
L3RleHQvdGV4dC1zdHlsZXMvLWFwcGxlLXN5c3RlbSBbIFBhc3MgXQogCi13ZWJraXQub3JnL2Iv
MjE0MTU1IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4t
ZW1iZWRkZXItcG9saWN5L2Jsb2IuaHR0cHMuaHRtbCBbIFBhc3MgRmFpbHVyZSBdClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQord2Via2l0Lm9yZy9iLzIxNDE1NSBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2luLWVtYmVkZGVyLXBvbGljeS9ibG9iLmh0
dHBzLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vd3BlL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93cGUvVGVzdEV4
cGVjdGF0aW9ucwppbmRleCAyYzFhMWIxMDgzNWUxZGEzMDhiYzQ1MGVkYWY5MjJlMTAyZmQ0MGJj
Li4zNTkyYjNlNDI4ODFhZmFhNTU0YTFjZjdkZTA0MGUxZWUwNzdjNmM1IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS93cGUvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS93cGUvVGVzdEV4cGVjdGF0aW9ucwpAQCAtOTQ1LDcgKzk0NSw2IEBAIHdlYmtp
dC5vcmcvYi8xMjk3NTgganMvZG9tL2NyZWF0ZS1sb3RzLW9mLXdvcmtlcnMuaHRtbCBbIFRpbWVv
dXQgUGFzcyBdCiAKIHdlYmtpdC5vcmcvYi8xNzc1MzAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy94aHIvc2V0cmVxdWVzdGhlYWRlci1oZWFkZXItYWxsb3dlZC5odG0gWyBQYXNzIEZh
aWx1cmUgXQogCi13ZWJraXQub3JnL2IvMTc1NDE5IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMvZGV0YWNoZWQtYnVmZmVycy5zZXJ2
aWNld29ya2VyLmh0dHBzLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzE3NTQx
OSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9hYm9ydC9zZXJ2aWNl
d29ya2VyLWludGVyY2VwdGVkLmh0dHBzLmh0bWwgWyBGYWlsdXJlIFBhc3MgXQogd2Via2l0Lm9y
Zy9iLzE3NTQxOSBodHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItbmV0d29y
a3Byb2Nlc3MtY3Jhc2guaHRtbCBbIFBhc3MgRmFpbHVyZSBUaW1lb3V0IF0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404024</attachid>
            <date>2020-07-10 16:54:06 -0700</date>
            <delta_ts>2020-07-10 21:25:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214207-20200710165405.patch</filename>
            <type>text/plain</type>
            <size>1507833</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY0MjQ2CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2MvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwpp
bmRleCAyZmRiMzcxYTM0NDY3MmViYjNjNzM4OTliOTQxZDBiNjU3ZWExYmVjLi40YmQ5MThiZWY5
MjlkMmM2MTYzZjgzYWEzNThjNTNjMTY1YjNjYzA2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2MvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMC0wNy0xMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpA
YXBwbGUuY29tPgorCisgICAgICAgIFJlc3luYyB3ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcyBm
cm9tIHVwc3RyZWFtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMTQyMDcKKworICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgorCisgICAgICAg
IFJlc3luYyB3ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcyBmcm9tIHVwc3RyZWFtIDg1OTUyN2Ez
NTEzMDI5ZDIuCisKKyAgICAgICAgKiByZXNvdXJjZXMvaW1wb3J0LWV4cGVjdGF0aW9ucy5qc29u
OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLyo6IFVwZGF0ZWQuCisKIDIw
MjAtMDctMTAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXN5
bmMgd2ViLXBsYXRmb3JtLXRlc3RzL2V2ZW50c291cmNlIGZyb20gdXBzdHJlYW0KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0
YXRpb25zCmluZGV4IDY5NTRjOWI1MmMzNTdiMWY3ZTYzNTZjZjhkMjNjMzVlOGRkMmUyZTQuLmNj
YTc5ZjUxYTRmODBlYTZiMzJkYzY1MzQwODI0N2Y3ZjhmOTkzZDEgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9u
cwpAQCAtMzM4LDYgKzMzOCw4IEBAIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRt
bC9icm93c2Vycy9oaXN0b3J5L3RoZS1sb2NhdGlvbi1pbnRlcmZhY2UvbG9jCiBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvaGlzdG9yeS90aGUtbG9jYXRpb24t
aW50ZXJmYWNlL2xvY2F0aW9uLXByb3RvY29sLXNldHRlci1ub24tYnJva2VuLXdlaXJkLmh0bWwg
WyBEdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L2ltYWdlYml0bWFwL2NyZWF0ZUltYWdlQml0bWFwLWlu
dmFsaWQtYXJncy5odG1sIFsgRHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIF0KIGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvcGF5bWVudC1yZXF1ZXN0L3BheW1lbnQtcmVxdWVzdC1oYXNl
bnJvbGxlZGluc3RydW1lbnQtbWV0aG9kLnRlbnRhdGl2ZS5odHRwcy5odG1sIFsgRHVtcEpTQ29u
c29sZUxvZ0luU3RkRXJyIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy9yZWFkYWJsZS1zdHJlYW1zL3BhdGNoZWQtZ2xvYmFsLmFueS5odG1sIFsgRHVtcEpTQ29uc29s
ZUxvZ0luU3RkRXJyIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93
cml0YWJsZS1zdHJlYW1zL3dyaXRlLmFueS5odG1sIFsgRHVtcEpTQ29uc29sZUxvZ0luU3RkRXJy
IF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9Xb3JrZXJHbG9iYWxT
Y29wZV9FcnJvckV2ZW50X2xpbmVuby5odG0gWyBEdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIgXQog
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJhdWRpby90aGUtYXVkaW8tYXBpL3Ro
ZS1hdWRpb25vZGUtaW50ZXJmYWNlL2F1ZGlvbm9kZS1kaXNjb25uZWN0LWF1ZGlvcGFyYW0uaHRt
bCBbIER1bXBKU0NvbnNvbGVMb2dJblN0ZEVyciBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3dlYmF1ZGlvL3RoZS1hdWRpby1hcGkvdGhlLXBhbm5lcm5vZGUtaW50ZXJmYWNlL3Bh
bm5lci1hdXRvbWF0aW9uLWJhc2ljLmh0bWwgWyBEdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIgXQpA
QCAtMTIxOCwxNCArMTIyMCw2IEBAIGh0dHAvdGVzdHMvbG9hZGluZy90ZXh0LWNvbnRlbnQtdHlw
ZS13aXRoLWJpbmFyeS1leHRlbnNpb24uaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiB3ZWJraXQub3Jn
L2IvMTcxMDk0IHN0cmVhbXMvYnJhbmQtY2hlY2tzLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogd2Vi
a2l0Lm9yZy9iLzE3MTA5NCBzdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9hYnN0cmFj
dC1vcHMuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKLSMgdGVlLmh0bWwgaXMgZmxha3kgd2l0aCB1
bmhhbmRsZWQgcHJvbWlzZSByZWplY3Rpb25zCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy90ZWUuaHRtbCBbIER1bXBKU0NvbnNvbGVMb2dJ
blN0ZEVyciBdCi0jIFRpbWVvdXQgdGVzdHMuCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL2dlbmVyYWwuc2VydmljZXdvcmtlci5o
dHRwcy5odG1sIFsgU2tpcCBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL2RldGFjaGVkLWJ1ZmZlcnMuc2VydmljZXdvcmtlci5o
dHRwcy5odG1sIFsgU2tpcCBdCi0KLXdlYmtpdC5vcmcvYi8xODYxNjEgaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9lcnJvci1wcm9wYWdhdGlvbi1mb3J3YXJk
Lmh0bWwgWyBQYXNzIEZhaWx1cmUgXQotCiAjIFdQVCB0ZXN0cyB0aGF0IGZhaWwgYWZ0ZXIgZG9p
bmcgZnVsbCB0ZXN0IHJlcG9zaXRvcnkgcmVpbXBvcnQgYW5kIG5lZWQgZnVydGhlciBpbnZlc3Rp
Z2F0aW9uCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvd2lu
ZG93cy9uZXN0ZWQtYnJvd3NpbmctY29udGV4dHMvZnJhbWVFbGVtZW50LnN1Yi5odG1sIFsgUGFz
cyBGYWlsdXJlIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vy
cy93aW5kb3dzL3RhcmdldGluZy1jcm9zcy1vcmlnaW4tbmVzdGVkLWJyb3dzaW5nLWNvbnRleHRz
LnN1Yi5odG1sIFsgUGFzcyBGYWlsdXJlIF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy9yZXNvdXJjZXMvaW1wb3J0LWV4cGVjdGF0aW9ucy5qc29uIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3Jlc291cmNlcy9pbXBvcnQtZXhwZWN0YXRpb25zLmpzb24KaW5kZXggNTQ1
Y2FkMGU0ODMwMjQxYzYzYmU5ZWM3MjY5YTE3ZDljNTEzMDYyMS4uNDdjNzhiMzk4MGFjMTQ5NWQy
NmFlMTIyNDBhMGQyZDRjYTM0OTMxOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3Jlc291cmNlcy9pbXBvcnQtZXhwZWN0YXRpb25zLmpzb24KKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3Jlc291cmNlcy9pbXBvcnQtZXhwZWN0YXRpb25zLmpzb24KQEAgLTM3MSw2
ICszNzEsNyBAQAogICAgICJ3ZWItcGxhdGZvcm0tdGVzdHMvc3BlZWNoLWFwaSI6ICJza2lwIiwg
CiAgICAgIndlYi1wbGF0Zm9ybS10ZXN0cy9zdGF0aWNyYW5nZSI6ICJza2lwIiwgCiAgICAgIndl
Yi1wbGF0Zm9ybS10ZXN0cy9zdG9yYWdlIjogInNraXAiLCAKKyAgICAid2ViLXBsYXRmb3JtLXRl
c3RzL3N0cmVhbXMiOiAiaW1wb3J0IiwgCiAgICAgIndlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
L3dyaXRhYmxlLXN0cmVhbXMiOiAic2tpcCIsIAogICAgICJ3ZWItcGxhdGZvcm0tdGVzdHMvc3Vi
cmVzb3VyY2UtaW50ZWdyaXR5IjogImltcG9ydCIsIAogICAgICJ3ZWItcGxhdGZvcm0tdGVzdHMv
c3ZnIjogImltcG9ydCIsIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL01FVEEueW1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL01FVEEueW1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEyNTlh
NTVjYjVhOTllM2JhM2ExM2Q4MWQwMmRkNzhkNjk3ZGRhYmYKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvTUVUQS55
bWwKQEAgLTAsMCArMSw3IEBACitzcGVjOiBodHRwczovL3N0cmVhbXMuc3BlYy53aGF0d2cub3Jn
Lworc3VnZ2VzdGVkX3Jldmlld2VyczoKKyAgLSBkb21lbmljCisgIC0geXV0YWthaGlyYW5vCisg
IC0geW91ZW5uZgorICAtIHdhbmRlcnZpZXcKKyAgLSByaWNlYQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL09XTkVSUyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9PV05FUlMK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM5MzQ3MWI0NjcwNjhmYjY3YmU4ZmNkZDk0
ZjBjOWFkYzFhM2FjNmYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
L09XTkVSUworKysgL2Rldi9udWxsCkBAIC0xLDcgKzAsMCBAQAotQGRvbWVuaWMKLUB0eW9zaGlu
bwotQHl1dGFrYWhpcmFubwotQHlvdWVubmYKLUBjYWx2YXJpcwotQHdhbmRlcnZpZXcKLUByaWNl
YQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL1JFQURNRS5tZCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy9SRUFETUUubWQKaW5kZXggODg2OGE4NThlNWY0OWFlNDU3YzdkMWRl
MDc4YTFmNjk3Y2M2NzYyNi4uZmQ5NjRjZjdlNWI3NWRiNDA4ZTBiNTgxM2NiOTQxNzIxODZmNWMy
NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL1JFQURNRS5tZAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMvUkVBRE1FLm1kCkBAIC0xLDE0ICsxLDMgQEAKICMgU3RyZWFt
cyBUZXN0cwogCiBUaGUgd29yayBvbiB0aGUgc3RyZWFtcyB0ZXN0cyBpcyBjbG9zZWx5IHRyYWNr
ZWQgYnkgdGhlIHNwZWNpZmljYXRpb24gYXV0aG9ycywgd2hvIG1haW50YWluIGEgcmVmZXJlbmNl
IGltcGxlbWVudGF0aW9uIGludGVuZGVkIHRvIG1hdGNoIHRoZSBzcGVjIGxpbmUtYnktbGluZSB3
aGlsZSBwYXNzaW5nIGFsbCBvZiB0aGVzZSB0ZXN0cy4gU2VlIFt0aGUgd2hhdHdnL3N0cmVhbXMg
cmVwb3NpdG9yeSBmb3IgZGV0YWlsc10oaHR0cHM6Ly9naXRodWIuY29tL3doYXR3Zy9zdHJlYW1z
L3RyZWUvbWFzdGVyL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbikuIFNvbWUgdGVzdHMgbWF5IGJl
IGluIHRoYXQgcmVwb3NpdG9yeSB3aGlsZSB0aGUgc3BlYyBzZWN0aW9ucyB0aGV5IHRlc3QgYXJl
IHN0aWxsIHVuZGVyZ29pbmcgaGVhdnkgY2h1cm4uCi0KLSMjIEdlbmVyYXRpbmcgd3JhcHBlciBm
aWxlcwotCi1CZWNhdXNlIHRoZSBzdHJlYW1zIGZlYXR1cmUgaXMgc3VwcG9zZWQgdG8gd29yayBp
biBhbGwgZ2xvYmFsIGNvbnRleHRzLCBlYWNoIHRlc3QgaXMgd3JpdHRlbiBhcyBhIGAuanNgIGZp
bGUsIGFuZCB0aGVuIGZvdXIgYC5odG1sYCBmaWxlcyBhcmUgZ2VuZXJhdGVkIGFyb3VuZCBpdC4g
U28gZm9yIGV4YW1wbGUsIGZvciBgY291bnQtcXVldWVpbmctc3RyYXRlZ3kuanNgLCB3ZSBoYXZl
IHRoZSB3cmFwcGVyIGZpbGVzOgotCi0tIGBjb3VudC1xdWV1ZWluZy1zdHJhdGVneS5odHRwcy5o
dG1sYAotLSBgY291bnQtcXVldWVpbmctc3RyYXRlZ3kuZGVkaWNhdGVkd29ya2VyLmh0bWxgCi0t
IGBjb3VudC1xdWV1ZWluZy1zdHJhdGVneS1zaGFyZWR3b3JrZXIuaHRtbGAKLS0gYGNvdW50LXF1
ZXVlaW5nLXN0cmF0ZWd5LXNlcnZpY2V3b3JrZXIuaHRtbGAKLQotVGhlc2UgYXJlIGdlbmVyYXRl
ZCBhdXRvbWF0aWNhbGx5IGJ5IHRoZSBOb2RlLmpzIHNjcmlwdCBpbiBgZ2VuZXJhdGUtdGVzdC13
cmFwcGVycy5qc2AuIFNlZSBpdCBmb3IgZGV0YWlscywgYW5kIHBsZWFzZSByZW1lbWJlciB0byB1
c2UgaXQgd2hlbmV2ZXIgYWRkaW5nIG5ldyB0ZXN0cy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9ieXRlLWxlbmd0aC1xdWV1
aW5nLXN0cmF0ZWd5LmRlZGljYXRlZHdvcmtlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvYnl0ZS1sZW5ndGgtcXVldWlu
Zy1zdHJhdGVneS5kZWRpY2F0ZWR3b3JrZXItZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAxNzE0MjgxNjFjMmRjMDc2MmJmMGM2ZWZkMzIyOWVhMGRmODQ3ZTgzLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9ieXRlLWxlbmd0aC1xdWV1
aW5nLXN0cmF0ZWd5LmRlZGljYXRlZHdvcmtlci1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApA
QCAtMSwxMCArMCwwIEBACi0KLVBBU1MgQ2FuIGNvbnN0cnVjdCBhIEJ5dGVMZW5ndGhRdWV1aW5n
U3RyYXRlZ3kgd2l0aCBhIHZhbGlkIGhpZ2ggd2F0ZXIgbWFyayAKLVBBU1MgQ2FuIGNvbnN0cnVj
dCBhIEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3kgd2l0aCBhbnkgdmFsdWUgYXMgaXRzIGhpZ2gg
d2F0ZXIgbWFyayAKLVBBU1MgQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneSBjb25zdHJ1Y3RvciBi
ZWhhdmVzIGFzIGV4cGVjdGVkIHdpdGggc3RyYW5nZSBhcmd1bWVudHMgCi1QQVNTIEJ5dGVMZW5n
dGhRdWV1aW5nU3RyYXRlZ3kgc2l6ZSBiZWhhdmVzIGFzIGV4cGVjdGVkIHdpdGggc3RyYW5nZSBh
cmd1bWVudHMgCi1QQVNTIEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3kucHJvdG90eXBlLnNpemUg
c2hvdWxkIHdvcmsgZ2VuZXJpY2FsbHkgb24gaXRzIHRoaXMgYW5kIGl0cyBhcmd1bWVudHMgCi1Q
QVNTIEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3kgaW5zdGFuY2VzIGhhdmUgdGhlIGNvcnJlY3Qg
cHJvcGVydGllcyAKLVBBU1MgQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneSdzIGhpZ2hXYXRlck1h
cmsgcHJvcGVydHkgY2FuIGJlIHNldCB0byBhbnl0aGluZyAKLVBBU1MgQnl0ZUxlbmd0aFF1ZXVp
bmdTdHJhdGVneS5uYW1lIGlzIGNvcnJlY3QgCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9ieXRlLWxlbmd0aC1xdWV1aW5n
LXN0cmF0ZWd5LmRlZGljYXRlZHdvcmtlci5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL2J5dGUtbGVuZ3RoLXF1ZXVpbmctc3RyYXRlZ3ku
ZGVkaWNhdGVkd29ya2VyLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFlOGU3
ZjcyOWY0NTE2OTc3NWQwOTNjMDY3ZWI2NmExOGQ5N2NiMGQuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zdHJlYW1zL2J5dGUtbGVuZ3RoLXF1ZXVpbmctc3RyYXRlZ3kuZGVkaWNh
dGVkd29ya2VyLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi08IURPQ1RZUEUg
aHRtbD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTx0aXRsZT5ieXRlLWxlbmd0aC1xdWV1aW5n
LXN0cmF0ZWd5LmpzIGRlZGljYXRlZCB3b3JrZXIgd3JhcHBlciBmaWxlPC90aXRsZT4KLQotPHNj
cmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBz
cmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotCi08c2NyaXB0
PgotJ3VzZSBzdHJpY3QnOwotZmV0Y2hfdGVzdHNfZnJvbV93b3JrZXIobmV3IFdvcmtlcignYnl0
ZS1sZW5ndGgtcXVldWluZy1zdHJhdGVneS5qcycpKTsKLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL2J5dGUt
bGVuZ3RoLXF1ZXVpbmctc3RyYXRlZ3kuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9ieXRlLWxlbmd0aC1xdWV1aW5nLXN0cmF0ZWd5Lmh0
bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUxZWFhM2JmYTRkN2IxYmZlMGNkZDY4
OTNjODUzMTMyOWNjNjBjOGUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJl
YW1zL2J5dGUtbGVuZ3RoLXF1ZXVpbmctc3RyYXRlZ3kuaHRtbAorKysgL2Rldi9udWxsCkBAIC0x
LDEwICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHRp
dGxlPmJ5dGUtbGVuZ3RoLXF1ZXVpbmctc3RyYXRlZ3kuanMgYnJvd3NlciBjb250ZXh0IHdyYXBw
ZXIgZmlsZTwvdGl0bGU+Ci0KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpz
Ij48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0Lmpz
Ij48L3NjcmlwdD4KLQotCi0KLTxzY3JpcHQgc3JjPSJieXRlLWxlbmd0aC1xdWV1aW5nLXN0cmF0
ZWd5LmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9ieXRlLWxlbmd0aC1xdWV1aW5nLXN0cmF0ZWd5Lmpz
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL2J5
dGUtbGVuZ3RoLXF1ZXVpbmctc3RyYXRlZ3kuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGU5NmU2OGVlNDA2YTU2Njg4ZTA0NjFmZmQwZjUxMzExMDlmNzA3Y2YuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL2J5dGUtbGVuZ3RoLXF1ZXVpbmctc3RyYXRl
Z3kuanMKKysrIC9kZXYvbnVsbApAQCAtMSwxMTQgKzAsMCBAQAotJ3VzZSBzdHJpY3QnOwotCi1p
ZiAoc2VsZi5pbXBvcnRTY3JpcHRzKSB7Ci0gIHNlbGYuaW1wb3J0U2NyaXB0cygnL3Jlc291cmNl
cy90ZXN0aGFybmVzcy5qcycpOwotfQotCi10ZXN0KCgpID0+IHsKLQotICBuZXcgQnl0ZUxlbmd0
aFF1ZXVpbmdTdHJhdGVneSh7IGhpZ2hXYXRlck1hcms6IDQgfSk7Ci0KLX0sICdDYW4gY29uc3Ry
dWN0IGEgQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneSB3aXRoIGEgdmFsaWQgaGlnaCB3YXRlciBt
YXJrJyk7Ci0KLXRlc3QoKCkgPT4gewotCi0gIGZvciAoY29uc3QgaGlnaFdhdGVyTWFyayBvZiBb
LUluZmluaXR5LCBOYU4sICdmb28nLCB7fSwgKCkgPT4ge31dKSB7Ci0gICAgY29uc3Qgc3RyYXRl
Z3kgPSBuZXcgQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneSh7IGhpZ2hXYXRlck1hcmsgfSk7Ci0g
ICAgYXNzZXJ0X2VxdWFscyhzdHJhdGVneS5oaWdoV2F0ZXJNYXJrLCBoaWdoV2F0ZXJNYXJrLCBg
JHtoaWdoV2F0ZXJNYXJrfSBnZXRzIHNldCBjb3JyZWN0bHlgKTsKLSAgfQotCi19LCAnQ2FuIGNv
bnN0cnVjdCBhIEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3kgd2l0aCBhbnkgdmFsdWUgYXMgaXRz
IGhpZ2ggd2F0ZXIgbWFyaycpOwotCi10ZXN0KCgpID0+IHsKLQotICBjb25zdCBoaWdoV2F0ZXJN
YXJrID0gMTsKLSAgY29uc3QgaGlnaFdhdGVyTWFya09iamVjdEdldHRlciA9IHsKLSAgICBnZXQg
aGlnaFdhdGVyTWFyaygpIHsgcmV0dXJuIGhpZ2hXYXRlck1hcms7IH0KLSAgfTsKLSAgY29uc3Qg
ZXJyb3IgPSBuZXcgRXJyb3IoJ3dvdyEnKTsKLSAgY29uc3QgaGlnaFdhdGVyTWFya09iamVjdEdl
dHRlclRocm93aW5nID0gewotICAgIGdldCBoaWdoV2F0ZXJNYXJrKCkgeyB0aHJvdyBlcnJvcjsg
fQotICB9OwotCi0gIGFzc2VydF90aHJvd3MoeyBuYW1lOiAnVHlwZUVycm9yJyB9LCAoKSA9PiBu
ZXcgQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneSgpLCAnY29uc3RydWN0aW9uIGZhaWxzIHdpdGgg
dW5kZWZpbmVkJyk7Ci0gIGFzc2VydF90aHJvd3MoeyBuYW1lOiAnVHlwZUVycm9yJyB9LCAoKSA9
PiBuZXcgQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneShudWxsKSwgJ2NvbnN0cnVjdGlvbiBmYWls
cyB3aXRoIG51bGwnKTsKLSAgYXNzZXJ0X3Rocm93cyh7IG5hbWU6ICdFcnJvcicgfSwgKCkgPT4g
bmV3IEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3koaGlnaFdhdGVyTWFya09iamVjdEdldHRlclRo
cm93aW5nKSwKLSAgICAnY29uc3RydWN0aW9uIGZhaWxzIHdpdGggYW4gb2JqZWN0IHdpdGggYSB0
aHJvd2luZyBoaWdoV2F0ZXJNYXJrIGdldHRlcicpOwotCi0gIC8vIFNob3VsZCBub3QgZmFpbDoK
LSAgbmV3IEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3koJ3BvdGF0bycpOwotICBuZXcgQnl0ZUxl
bmd0aFF1ZXVpbmdTdHJhdGVneSh7fSk7Ci0gIG5ldyBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5
KGhpZ2hXYXRlck1hcmtPYmplY3RHZXR0ZXIpOwotCi19LCAnQnl0ZUxlbmd0aFF1ZXVpbmdTdHJh
dGVneSBjb25zdHJ1Y3RvciBiZWhhdmVzIGFzIGV4cGVjdGVkIHdpdGggc3RyYW5nZSBhcmd1bWVu
dHMnKTsKLQotdGVzdCgoKSA9PiB7Ci0KLSAgY29uc3Qgc2l6ZSA9IDEwMjQ7Ci0gIGNvbnN0IGNo
dW5rID0geyBieXRlTGVuZ3RoOiBzaXplIH07Ci0gIGNvbnN0IGNodW5rR2V0dGVyID0gewotICAg
IGdldCBieXRlTGVuZ3RoKCkgeyByZXR1cm4gc2l6ZTsgfQotICB9OwotICBjb25zdCBlcnJvciA9
IG5ldyBFcnJvcignd293IScpOwotICBjb25zdCBjaHVua0dldHRlclRocm93aW5nID0gewotICAg
IGdldCBieXRlTGVuZ3RoKCkgeyB0aHJvdyBlcnJvcjsgfQotICB9OwotICBhc3NlcnRfdGhyb3dz
KHsgbmFtZTogJ1R5cGVFcnJvcicgfSwgKCkgPT4gQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneS5w
cm90b3R5cGUuc2l6ZSgpLCAnc2l6ZSBmYWlscyB3aXRoIHVuZGVmaW5lZCcpOwotICBhc3NlcnRf
dGhyb3dzKHsgbmFtZTogJ1R5cGVFcnJvcicgfSwgKCkgPT4gQnl0ZUxlbmd0aFF1ZXVpbmdTdHJh
dGVneS5wcm90b3R5cGUuc2l6ZShudWxsKSwgJ3NpemUgZmFpbHMgd2l0aCBudWxsJyk7Ci0gIGFz
c2VydF9lcXVhbHMoQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneS5wcm90b3R5cGUuc2l6ZSgncG90
YXRvJyksIHVuZGVmaW5lZCwKLSAgICAnc2l6ZSBzdWNjZWVkcyB3aXRoIHVuZGVmaW5lZCB3aXRo
IGEgcmFuZG9tIG5vbi1vYmplY3QgdHlwZScpOwotICBhc3NlcnRfZXF1YWxzKEJ5dGVMZW5ndGhR
dWV1aW5nU3RyYXRlZ3kucHJvdG90eXBlLnNpemUoe30pLCB1bmRlZmluZWQsCi0gICAgJ3NpemUg
c3VjY2VlZHMgd2l0aCB1bmRlZmluZWQgd2l0aCBhbiBvYmplY3Qgd2l0aG91dCBod20gcHJvcGVy
dHknKTsKLSAgYXNzZXJ0X2VxdWFscyhCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5LnByb3RvdHlw
ZS5zaXplKGNodW5rKSwgc2l6ZSwKLSAgICAnc2l6ZSBzdWNjZWVkcyB3aXRoIHRoZSByaWdodCBh
bW91bnQgd2l0aCBhbiBvYmplY3Qgd2l0aCBhIGh3bScpOwotICBhc3NlcnRfZXF1YWxzKEJ5dGVM
ZW5ndGhRdWV1aW5nU3RyYXRlZ3kucHJvdG90eXBlLnNpemUoY2h1bmtHZXR0ZXIpLCBzaXplLAot
ICAgICdzaXplIHN1Y2NlZWRzIHdpdGggdGhlIHJpZ2h0IGFtb3VudCB3aXRoIGFuIG9iamVjdCB3
aXRoIGEgaHdtIGdldHRlcicpOwotICBhc3NlcnRfdGhyb3dzKHsgbmFtZTogJ0Vycm9yJyB9LCAo
KSA9PiBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5LnByb3RvdHlwZS5zaXplKGNodW5rR2V0dGVy
VGhyb3dpbmcpLAotICAgICdzaXplIGZhaWxzIHdpdGggdGhlIGVycm9yIHRocm93biBieSB0aGUg
Z2V0dGVyJyk7Ci0KLX0sICdCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5IHNpemUgYmVoYXZlcyBh
cyBleHBlY3RlZCB3aXRoIHN0cmFuZ2UgYXJndW1lbnRzJyk7Ci0KLXRlc3QoKCkgPT4gewotCi0g
IGNvbnN0IHRoaXNWYWx1ZSA9IG51bGw7Ci0gIGNvbnN0IHJldHVyblZhbHVlID0geyAncmV0dXJu
ZWQgZnJvbSc6ICdieXRlTGVuZ3RoIGdldHRlcicgfTsKLSAgY29uc3QgY2h1bmsgPSB7Ci0gICAg
Z2V0IGJ5dGVMZW5ndGgoKSB7IHJldHVybiByZXR1cm5WYWx1ZTsgfQotICB9OwotCi0gIGFzc2Vy
dF9lcXVhbHMoQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneS5wcm90b3R5cGUuc2l6ZS5jYWxsKHRo
aXNWYWx1ZSwgY2h1bmspLCByZXR1cm5WYWx1ZSk7Ci0KLX0sICdCeXRlTGVuZ3RoUXVldWluZ1N0
cmF0ZWd5LnByb3RvdHlwZS5zaXplIHNob3VsZCB3b3JrIGdlbmVyaWNhbGx5IG9uIGl0cyB0aGlz
IGFuZCBpdHMgYXJndW1lbnRzJyk7Ci0KLXRlc3QoKCkgPT4gewotCi0gIGNvbnN0IHN0cmF0ZWd5
ID0gbmV3IEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3koeyBoaWdoV2F0ZXJNYXJrOiA0IH0pOwot
Ci0gIGFzc2VydF9vYmplY3RfZXF1YWxzKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
c3RyYXRlZ3ksICdoaWdoV2F0ZXJNYXJrJyksCi0gICAgeyB2YWx1ZTogNCwgd3JpdGFibGU6IHRy
dWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9LAotICAgICdoaWdoV2F0
ZXJNYXJrIHByb3BlcnR5IHNob3VsZCBiZSBhIGRhdGEgcHJvcGVydHkgd2l0aCB0aGUgdmFsdWUg
cGFzc2VkIHRoZSBjb25zdHJ1Y3RvcicpOwotICBhc3NlcnRfZXF1YWxzKHR5cGVvZiBzdHJhdGVn
eS5zaXplLCAnZnVuY3Rpb24nKTsKLQotfSwgJ0J5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3kgaW5z
dGFuY2VzIGhhdmUgdGhlIGNvcnJlY3QgcHJvcGVydGllcycpOwotCi10ZXN0KCgpID0+IHsKLQot
ICBjb25zdCBzdHJhdGVneSA9IG5ldyBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5KHsgaGlnaFdh
dGVyTWFyazogNCB9KTsKLSAgYXNzZXJ0X2VxdWFscyhzdHJhdGVneS5oaWdoV2F0ZXJNYXJrLCA0
KTsKLQotICBzdHJhdGVneS5oaWdoV2F0ZXJNYXJrID0gMTA7Ci0gIGFzc2VydF9lcXVhbHMoc3Ry
YXRlZ3kuaGlnaFdhdGVyTWFyaywgMTApOwotCi0gIHN0cmF0ZWd5LmhpZ2hXYXRlck1hcmsgPSAn
YmFuYW5hJzsKLSAgYXNzZXJ0X2VxdWFscyhzdHJhdGVneS5oaWdoV2F0ZXJNYXJrLCAnYmFuYW5h
Jyk7Ci0KLX0sICdCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5XCdzIGhpZ2hXYXRlck1hcmsgcHJv
cGVydHkgY2FuIGJlIHNldCB0byBhbnl0aGluZycpOwotCi10ZXN0KCgpID0+IHsKLQotICBhc3Nl
cnRfZXF1YWxzKEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3kubmFtZSwgJ0J5dGVMZW5ndGhRdWV1
aW5nU3RyYXRlZ3knLAotICAgICAgICAgICAgICAgICdCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5
Lm5hbWUgbXVzdCBiZSAiQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneSInKTsKLQotfSwgJ0J5dGVM
ZW5ndGhRdWV1aW5nU3RyYXRlZ3kubmFtZSBpcyBjb3JyZWN0Jyk7Ci0KLWRvbmUoKTsKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy9ieXRlLWxlbmd0aC1xdWV1aW5nLXN0cmF0ZWd5LnNlcnZpY2V3b3JrZXIuaHR0cHMtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJl
YW1zL2J5dGUtbGVuZ3RoLXF1ZXVpbmctc3RyYXRlZ3kuc2VydmljZXdvcmtlci5odHRwcy1leHBl
Y3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE3MzlmYmJiMmI5NmUzNWIz
MGY5YWE5OWQzZDI3OTZhMmQ2YjZhNzcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL2J5dGUtbGVuZ3RoLXF1ZXVpbmctc3RyYXRlZ3kuc2VydmljZXdvcmtlci5odHRw
cy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi0KLVBBU1MgU2Vy
dmljZSB3b3JrZXIgdGVzdCBzZXR1cCAKLVBBU1MgQ2FuIGNvbnN0cnVjdCBhIEJ5dGVMZW5ndGhR
dWV1aW5nU3RyYXRlZ3kgd2l0aCBhIHZhbGlkIGhpZ2ggd2F0ZXIgbWFyayAKLVBBU1MgQ2FuIGNv
bnN0cnVjdCBhIEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3kgd2l0aCBhbnkgdmFsdWUgYXMgaXRz
IGhpZ2ggd2F0ZXIgbWFyayAKLVBBU1MgQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneSBjb25zdHJ1
Y3RvciBiZWhhdmVzIGFzIGV4cGVjdGVkIHdpdGggc3RyYW5nZSBhcmd1bWVudHMgCi1QQVNTIEJ5
dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3kgc2l6ZSBiZWhhdmVzIGFzIGV4cGVjdGVkIHdpdGggc3Ry
YW5nZSBhcmd1bWVudHMgCi1QQVNTIEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3kucHJvdG90eXBl
LnNpemUgc2hvdWxkIHdvcmsgZ2VuZXJpY2FsbHkgb24gaXRzIHRoaXMgYW5kIGl0cyBhcmd1bWVu
dHMgCi1QQVNTIEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3kgaW5zdGFuY2VzIGhhdmUgdGhlIGNv
cnJlY3QgcHJvcGVydGllcyAKLVBBU1MgQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneSdzIGhpZ2hX
YXRlck1hcmsgcHJvcGVydHkgY2FuIGJlIHNldCB0byBhbnl0aGluZyAKLVBBU1MgQnl0ZUxlbmd0
aFF1ZXVpbmdTdHJhdGVneS5uYW1lIGlzIGNvcnJlY3QgCi0KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9ieXRlLWxlbmd0aC1x
dWV1aW5nLXN0cmF0ZWd5LnNlcnZpY2V3b3JrZXIuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9ieXRlLWxlbmd0aC1xdWV1aW5n
LXN0cmF0ZWd5LnNlcnZpY2V3b3JrZXIuaHR0cHMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMTJhYzg1NmQyODI1YTAzMGJmNjQyMjdkZDRmMzI5YWYxMzRhNTY1OS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvYnl0ZS1sZW5ndGgtcXVldWluZy1z
dHJhdGVneS5zZXJ2aWNld29ya2VyLmh0dHBzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMiAr
MCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTx0aXRsZT5i
eXRlLWxlbmd0aC1xdWV1aW5nLXN0cmF0ZWd5LmpzIHNlcnZpY2Ugd29ya2VyIHdyYXBwZXIgZmls
ZTwvdGl0bGU+Ci0KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3Nj
cmlwdD4KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3Nj
cmlwdD4KLTxzY3JpcHQgc3JjPSIvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL3Jlc291
cmNlcy90ZXN0LWhlbHBlcnMuc3ViLmpzIj48L3NjcmlwdD4KLQotPHNjcmlwdD4KLSd1c2Ugc3Ry
aWN0JzsKLXNlcnZpY2Vfd29ya2VyX3Rlc3QoJ2J5dGUtbGVuZ3RoLXF1ZXVpbmctc3RyYXRlZ3ku
anMnLCAnU2VydmljZSB3b3JrZXIgdGVzdCBzZXR1cCcpOwotPC9zY3JpcHQ+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvYnl0
ZS1sZW5ndGgtcXVldWluZy1zdHJhdGVneS5zaGFyZWR3b3JrZXItZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL2J5dGUtbGVu
Z3RoLXF1ZXVpbmctc3RyYXRlZ3kuc2hhcmVkd29ya2VyLWV4cGVjdGVkLnR4dApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDlkNWQyNTA5ZDc4NDdlOGNkNmZlNjYwNmFhNjBjZGQzM2Fh
NDc0ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvYnl0ZS1sZW5n
dGgtcXVldWluZy1zdHJhdGVneS5zaGFyZWR3b3JrZXItZXhwZWN0ZWQudHh0CisrKyAvZGV2L251
bGwKQEAgLTEsNSArMCwwIEBACi1DT05TT0xFIE1FU1NBR0U6IFJlZmVyZW5jZUVycm9yOiBDYW4n
dCBmaW5kIHZhcmlhYmxlOiBTaGFyZWRXb3JrZXIKLQotSGFybmVzcyBFcnJvciAoRkFJTCksIG1l
c3NhZ2UgPSBSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogU2hhcmVkV29ya2Vy
Ci0KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL2J5dGUtbGVuZ3RoLXF1ZXVpbmctc3RyYXRlZ3kuc2hhcmVkd29ya2VyLmh0
bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
Ynl0ZS1sZW5ndGgtcXVldWluZy1zdHJhdGVneS5zaGFyZWR3b3JrZXIuaHRtbApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggNzY1ODc4ZTNlNmE2NWViNzVlZjI2ZTA1YjM2NTlmNmQ1YzUx
YmJkZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvYnl0ZS1sZW5n
dGgtcXVldWluZy1zdHJhdGVneS5zaGFyZWR3b3JrZXIuaHRtbAorKysgL2Rldi9udWxsCkBAIC0x
LDExICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHRp
dGxlPmJ5dGUtbGVuZ3RoLXF1ZXVpbmctc3RyYXRlZ3kuanMgc2hhcmVkIHdvcmtlciB3cmFwcGVy
IGZpbGU8L3RpdGxlPgotCi08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+
PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+
PC9zY3JpcHQ+Ci0KLTxzY3JpcHQ+Ci0ndXNlIHN0cmljdCc7Ci1mZXRjaF90ZXN0c19mcm9tX3dv
cmtlcihuZXcgU2hhcmVkV29ya2VyKCdieXRlLWxlbmd0aC1xdWV1aW5nLXN0cmF0ZWd5LmpzJykp
OwotPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMvY291bnQtcXVldWluZy1zdHJhdGVneS5kZWRpY2F0ZWR3b3Jr
ZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3kuZGVkaWNhdGVkd29ya2VyLWV4cGVj
dGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2RiZDMxMWE4ZGFmMTAwZjRm
Y2I2MzMwNGFhYjM1OWU3ZjdhMWQ2ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMvY291bnQtcXVldWluZy1zdHJhdGVneS5kZWRpY2F0ZWR3b3JrZXItZXhwZWN0ZWQu
dHh0CisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotCi1QQVNTIENhbiBjb25zdHJ1Y3Qg
YSBDb3VudFF1ZXVpbmdTdHJhdGVneSB3aXRoIGEgdmFsaWQgaGlnaCB3YXRlciBtYXJrIAotUEFT
UyBDYW4gY29uc3RydWN0IGEgQ291bnRRdWV1aW5nU3RyYXRlZ3kgd2l0aCBhbnkgdmFsdWUgYXMg
aXRzIGhpZ2ggd2F0ZXIgbWFyayAKLVBBU1MgQ291bnRRdWV1aW5nU3RyYXRlZ3kgY29uc3RydWN0
b3IgYmVoYXZlcyBhcyBleHBlY3RlZCB3aXRoIHN0cmFuZ2UgYXJndW1lbnRzIAotUEFTUyBDb3Vu
dFF1ZXVpbmdTdHJhdGVneS5wcm90b3R5cGUuc2l6ZSBzaG91bGQgd29yayBnZW5lcmljYWxseSBv
biBpdHMgdGhpcyBhbmQgaXRzIGFyZ3VtZW50cyAKLVBBU1MgQ291bnRRdWV1aW5nU3RyYXRlZ3kg
c2l6ZSBiZWhhdmVzIGFzIGV4cGVjdGVkIHdpdGggc3RyYW5nZSBhcmd1bWVudHMgCi1QQVNTIENv
dW50UXVldWluZ1N0cmF0ZWd5IGluc3RhbmNlcyBoYXZlIHRoZSBjb3JyZWN0IHByb3BlcnRpZXMg
Ci1QQVNTIENvdW50UXVldWluZ1N0cmF0ZWd5J3MgaGlnaFdhdGVyTWFyayBwcm9wZXJ0eSBjYW4g
YmUgc2V0IHRvIGFueXRoaW5nIAotUEFTUyBDb3VudFF1ZXVpbmdTdHJhdGVneS5uYW1lIGlzIGNv
cnJlY3QgCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5LmRlZGljYXRlZHdvcmtlci5o
dG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
L2NvdW50LXF1ZXVpbmctc3RyYXRlZ3kuZGVkaWNhdGVkd29ya2VyLmh0bWwKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGQwMTM2ZWJkZWEzYmMxNDc0YzI5NDhjNzc1ZGQ4YjVlYWFiMDdm
MjguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL2NvdW50LXF1ZXVp
bmctc3RyYXRlZ3kuZGVkaWNhdGVkd29ya2VyLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMSAr
MCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTx0aXRsZT5j
b3VudC1xdWV1aW5nLXN0cmF0ZWd5LmpzIGRlZGljYXRlZCB3b3JrZXIgd3JhcHBlciBmaWxlPC90
aXRsZT4KLQotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0
PgotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0
PgotCi08c2NyaXB0PgotJ3VzZSBzdHJpY3QnOwotZmV0Y2hfdGVzdHNfZnJvbV93b3JrZXIobmV3
IFdvcmtlcignY291bnQtcXVldWluZy1zdHJhdGVneS5qcycpKTsKLTwvc2NyaXB0PgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
L2NvdW50LXF1ZXVpbmctc3RyYXRlZ3kuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5Lmh0bWwKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFiYmVkMzk0YjNmMDlhYmM2NzkxYTU4OTYzMGZh
MTc3OGU1NzA3NjUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL2Nv
dW50LXF1ZXVpbmctc3RyYXRlZ3kuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAK
LTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHRpdGxlPmNvdW50LXF1
ZXVpbmctc3RyYXRlZ3kuanMgYnJvd3NlciBjb250ZXh0IHdyYXBwZXIgZmlsZTwvdGl0bGU+Ci0K
LTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3Jp
cHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLQotCi0K
LTxzY3JpcHQgc3JjPSJjb3VudC1xdWV1aW5nLXN0cmF0ZWd5LmpzIj48L3NjcmlwdD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5LmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3kuanMKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhkYThlYjY3OWRlZjMxN2NhN2EyNDk3ZGU2NzI0MGU0
Y2U3ZWZkODIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL2NvdW50
LXF1ZXVpbmctc3RyYXRlZ3kuanMKKysrIC9kZXYvbnVsbApAQCAtMSwxMTMgKzAsMCBAQAotJ3Vz
ZSBzdHJpY3QnOwotCi1pZiAoc2VsZi5pbXBvcnRTY3JpcHRzKSB7Ci0gIHNlbGYuaW1wb3J0U2Ny
aXB0cygnL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcycpOwotfQotCi10ZXN0KCgpID0+IHsKLQot
ICBuZXcgQ291bnRRdWV1aW5nU3RyYXRlZ3koeyBoaWdoV2F0ZXJNYXJrOiA0IH0pOwotCi19LCAn
Q2FuIGNvbnN0cnVjdCBhIENvdW50UXVldWluZ1N0cmF0ZWd5IHdpdGggYSB2YWxpZCBoaWdoIHdh
dGVyIG1hcmsnKTsKLQotdGVzdCgoKSA9PiB7Ci0KLSAgZm9yIChjb25zdCBoaWdoV2F0ZXJNYXJr
IG9mIFstSW5maW5pdHksIE5hTiwgJ2ZvbycsIHt9LCAoKSA9PiB7fV0pIHsKLSAgICBjb25zdCBz
dHJhdGVneSA9IG5ldyBDb3VudFF1ZXVpbmdTdHJhdGVneSh7IGhpZ2hXYXRlck1hcmsgfSk7Ci0g
ICAgYXNzZXJ0X2VxdWFscyhzdHJhdGVneS5oaWdoV2F0ZXJNYXJrLCBoaWdoV2F0ZXJNYXJrLCBg
JHtoaWdoV2F0ZXJNYXJrfSBnZXRzIHNldCBjb3JyZWN0bHlgKTsKLSAgfQotCi19LCAnQ2FuIGNv
bnN0cnVjdCBhIENvdW50UXVldWluZ1N0cmF0ZWd5IHdpdGggYW55IHZhbHVlIGFzIGl0cyBoaWdo
IHdhdGVyIG1hcmsnKTsKLQotdGVzdCgoKSA9PiB7Ci0KLSAgY29uc3QgaGlnaFdhdGVyTWFyayA9
IDE7Ci0gIGNvbnN0IGhpZ2hXYXRlck1hcmtPYmplY3RHZXR0ZXIgPSB7Ci0gICAgZ2V0IGhpZ2hX
YXRlck1hcmsoKSB7IHJldHVybiBoaWdoV2F0ZXJNYXJrOyB9Ci0gIH07Ci0gIGNvbnN0IGVycm9y
ID0gbmV3IEVycm9yKCd3b3chJyk7Ci0gIGNvbnN0IGhpZ2hXYXRlck1hcmtPYmplY3RHZXR0ZXJU
aHJvd2luZyA9IHsKLSAgICBnZXQgaGlnaFdhdGVyTWFyaygpIHsgdGhyb3cgZXJyb3I7IH0KLSAg
fTsKLQotICBhc3NlcnRfdGhyb3dzKHsgbmFtZTogJ1R5cGVFcnJvcicgfSwgKCkgPT4gbmV3IENv
dW50UXVldWluZ1N0cmF0ZWd5KCksICdjb25zdHJ1Y3Rpb24gZmFpbHMgd2l0aCB1bmRlZmluZWQn
KTsKLSAgYXNzZXJ0X3Rocm93cyh7IG5hbWU6ICdUeXBlRXJyb3InIH0sICgpID0+IG5ldyBDb3Vu
dFF1ZXVpbmdTdHJhdGVneShudWxsKSwgJ2NvbnN0cnVjdGlvbiBmYWlscyB3aXRoIG51bGwnKTsK
LSAgYXNzZXJ0X3Rocm93cyh7IG5hbWU6ICdFcnJvcicgfSwgKCkgPT4gbmV3IENvdW50UXVldWlu
Z1N0cmF0ZWd5KGhpZ2hXYXRlck1hcmtPYmplY3RHZXR0ZXJUaHJvd2luZyksCi0gICAgJ2NvbnN0
cnVjdGlvbiBmYWlscyB3aXRoIGFuIG9iamVjdCB3aXRoIGEgdGhyb3dpbmcgaGlnaFdhdGVyTWFy
ayBnZXR0ZXInKTsKLQotICAvLyBTaG91bGQgbm90IGZhaWw6Ci0gIG5ldyBDb3VudFF1ZXVpbmdT
dHJhdGVneSgncG90YXRvJyk7Ci0gIG5ldyBDb3VudFF1ZXVpbmdTdHJhdGVneSh7fSk7Ci0gIG5l
dyBDb3VudFF1ZXVpbmdTdHJhdGVneShoaWdoV2F0ZXJNYXJrT2JqZWN0R2V0dGVyKTsKLQotfSwg
J0NvdW50UXVldWluZ1N0cmF0ZWd5IGNvbnN0cnVjdG9yIGJlaGF2ZXMgYXMgZXhwZWN0ZWQgd2l0
aCBzdHJhbmdlIGFyZ3VtZW50cycpOwotCi0KLXRlc3QoKCkgPT4gewotCi0gIGNvbnN0IHRoaXNW
YWx1ZSA9IG51bGw7Ci0gIGNvbnN0IGNodW5rID0gewotICAgIGdldCBieXRlTGVuZ3RoKCkgewot
ICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignc2hvdWxkblwndCBiZSBjYWxsZWQnKTsKLSAgICB9
Ci0gIH07Ci0KLSAgYXNzZXJ0X2VxdWFscyhDb3VudFF1ZXVpbmdTdHJhdGVneS5wcm90b3R5cGUu
c2l6ZS5jYWxsKHRoaXNWYWx1ZSwgY2h1bmspLCAxKTsKLQotfSwgJ0NvdW50UXVldWluZ1N0cmF0
ZWd5LnByb3RvdHlwZS5zaXplIHNob3VsZCB3b3JrIGdlbmVyaWNhbGx5IG9uIGl0cyB0aGlzIGFu
ZCBpdHMgYXJndW1lbnRzJyk7Ci0KLXRlc3QoKCkgPT4gewotCi0gIGNvbnN0IHNpemUgPSAxMDI0
OwotICBjb25zdCBjaHVuayA9IHsgYnl0ZUxlbmd0aDogc2l6ZSB9OwotICBjb25zdCBjaHVua0dl
dHRlciA9IHsKLSAgICBnZXQgYnl0ZUxlbmd0aCgpIHsgcmV0dXJuIHNpemU7IH0KLSAgfTsKLSAg
Y29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoJ3dvdyEnKTsKLSAgY29uc3QgY2h1bmtHZXR0ZXJUaHJv
d2luZyA9IHsKLSAgICBnZXQgYnl0ZUxlbmd0aCgpIHsgdGhyb3cgZXJyb3I7IH0KLSAgfTsKLQot
ICBhc3NlcnRfZXF1YWxzKENvdW50UXVldWluZ1N0cmF0ZWd5LnByb3RvdHlwZS5zaXplKCksIDEs
ICdzaXplIHJldHVybnMgMSB3aXRoIHVuZGVmaW5lZCcpOwotICBhc3NlcnRfZXF1YWxzKENvdW50
UXVldWluZ1N0cmF0ZWd5LnByb3RvdHlwZS5zaXplKG51bGwpLCAxLCAnc2l6ZSByZXR1cm5zIDEg
d2l0aCBudWxsJyk7Ci0gIGFzc2VydF9lcXVhbHMoQ291bnRRdWV1aW5nU3RyYXRlZ3kucHJvdG90
eXBlLnNpemUoJ3BvdGF0bycpLCAxLCAnc2l6ZSByZXR1cm5zIDEgd2l0aCBub24tb2JqZWN0IHR5
cGUnKTsKLSAgYXNzZXJ0X2VxdWFscyhDb3VudFF1ZXVpbmdTdHJhdGVneS5wcm90b3R5cGUuc2l6
ZSh7fSksIDEsICdzaXplIHJldHVybnMgMSB3aXRoIGVtcHR5IG9iamVjdCcpOwotICBhc3NlcnRf
ZXF1YWxzKENvdW50UXVldWluZ1N0cmF0ZWd5LnByb3RvdHlwZS5zaXplKGNodW5rKSwgMSwgJ3Np
emUgcmV0dXJucyAxIHdpdGggYSBjaHVuaycpOwotICBhc3NlcnRfZXF1YWxzKENvdW50UXVldWlu
Z1N0cmF0ZWd5LnByb3RvdHlwZS5zaXplKGNodW5rR2V0dGVyKSwgMSwgJ3NpemUgcmV0dXJucyAx
IHdpdGggY2h1bmsgZ2V0dGVyJyk7Ci0gIGFzc2VydF9lcXVhbHMoQ291bnRRdWV1aW5nU3RyYXRl
Z3kucHJvdG90eXBlLnNpemUoY2h1bmtHZXR0ZXJUaHJvd2luZyksIDEsCi0gICAgJ3NpemUgcmV0
dXJucyAxIHdpdGggY2h1bmsgZ2V0dGVyIHRoYXQgdGhyb3dzJyk7Ci0KLX0sICdDb3VudFF1ZXVp
bmdTdHJhdGVneSBzaXplIGJlaGF2ZXMgYXMgZXhwZWN0ZWQgd2l0aCBzdHJhbmdlIGFyZ3VtZW50
cycpOwotCi10ZXN0KCgpID0+IHsKLQotICBjb25zdCBzdHJhdGVneSA9IG5ldyBDb3VudFF1ZXVp
bmdTdHJhdGVneSh7IGhpZ2hXYXRlck1hcms6IDQgfSk7Ci0KLSAgYXNzZXJ0X29iamVjdF9lcXVh
bHMoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzdHJhdGVneSwgJ2hpZ2hXYXRlck1h
cmsnKSwKLSAgICB7IHZhbHVlOiA0LCB3cml0YWJsZTogdHJ1ZSwgZW51bWVyYWJsZTogdHJ1ZSwg
Y29uZmlndXJhYmxlOiB0cnVlIH0sCi0gICAgJ2hpZ2hXYXRlck1hcmsgcHJvcGVydHkgc2hvdWxk
IGJlIGEgZGF0YSBwcm9wZXJ0eSB3aXRoIHRoZSB2YWx1ZSBwYXNzZWQgdGhlIGNvbnN0cnVjdG9y
Jyk7Ci0gIGFzc2VydF9lcXVhbHModHlwZW9mIHN0cmF0ZWd5LnNpemUsICdmdW5jdGlvbicpOwot
Ci19LCAnQ291bnRRdWV1aW5nU3RyYXRlZ3kgaW5zdGFuY2VzIGhhdmUgdGhlIGNvcnJlY3QgcHJv
cGVydGllcycpOwotCi10ZXN0KCgpID0+IHsKLQotICBjb25zdCBzdHJhdGVneSA9IG5ldyBDb3Vu
dFF1ZXVpbmdTdHJhdGVneSh7IGhpZ2hXYXRlck1hcms6IDQgfSk7Ci0gIGFzc2VydF9lcXVhbHMo
c3RyYXRlZ3kuaGlnaFdhdGVyTWFyaywgNCk7Ci0KLSAgc3RyYXRlZ3kuaGlnaFdhdGVyTWFyayA9
IDEwOwotICBhc3NlcnRfZXF1YWxzKHN0cmF0ZWd5LmhpZ2hXYXRlck1hcmssIDEwKTsKLQotICBz
dHJhdGVneS5oaWdoV2F0ZXJNYXJrID0gJ2JhbmFuYSc7Ci0gIGFzc2VydF9lcXVhbHMoc3RyYXRl
Z3kuaGlnaFdhdGVyTWFyaywgJ2JhbmFuYScpOwotCi19LCAnQ291bnRRdWV1aW5nU3RyYXRlZ3lc
J3MgaGlnaFdhdGVyTWFyayBwcm9wZXJ0eSBjYW4gYmUgc2V0IHRvIGFueXRoaW5nJyk7Ci0KLXRl
c3QoKCkgPT4gewotCi0gIGFzc2VydF9lcXVhbHMoQ291bnRRdWV1aW5nU3RyYXRlZ3kubmFtZSwg
J0NvdW50UXVldWluZ1N0cmF0ZWd5JywKLSAgICAgICAgICAgICAgICAnQ291bnRRdWV1aW5nU3Ry
YXRlZ3kubmFtZSBtdXN0IGJlICJDb3VudFF1ZXVpbmdTdHJhdGVneSInKTsKLQotfSwgJ0NvdW50
UXVldWluZ1N0cmF0ZWd5Lm5hbWUgaXMgY29ycmVjdCcpOwotCi1kb25lKCk7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvY291
bnQtcXVldWluZy1zdHJhdGVneS5zZXJ2aWNld29ya2VyLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9jb3VudC1x
dWV1aW5nLXN0cmF0ZWd5LnNlcnZpY2V3b3JrZXIuaHR0cHMtZXhwZWN0ZWQudHh0CmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNjVhMTMzZmU0ZmY5N2Q4NDI1Zjk5ZGRkYzA5NjVhMDdj
ZmNmYjc3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9jb3VudC1x
dWV1aW5nLXN0cmF0ZWd5LnNlcnZpY2V3b3JrZXIuaHR0cHMtZXhwZWN0ZWQudHh0CisrKyAvZGV2
L251bGwKQEAgLTEsMTEgKzAsMCBAQAotCi1QQVNTIFNlcnZpY2Ugd29ya2VyIHRlc3Qgc2V0dXAg
Ci1QQVNTIENhbiBjb25zdHJ1Y3QgYSBDb3VudFF1ZXVpbmdTdHJhdGVneSB3aXRoIGEgdmFsaWQg
aGlnaCB3YXRlciBtYXJrIAotUEFTUyBDYW4gY29uc3RydWN0IGEgQ291bnRRdWV1aW5nU3RyYXRl
Z3kgd2l0aCBhbnkgdmFsdWUgYXMgaXRzIGhpZ2ggd2F0ZXIgbWFyayAKLVBBU1MgQ291bnRRdWV1
aW5nU3RyYXRlZ3kgY29uc3RydWN0b3IgYmVoYXZlcyBhcyBleHBlY3RlZCB3aXRoIHN0cmFuZ2Ug
YXJndW1lbnRzIAotUEFTUyBDb3VudFF1ZXVpbmdTdHJhdGVneS5wcm90b3R5cGUuc2l6ZSBzaG91
bGQgd29yayBnZW5lcmljYWxseSBvbiBpdHMgdGhpcyBhbmQgaXRzIGFyZ3VtZW50cyAKLVBBU1Mg
Q291bnRRdWV1aW5nU3RyYXRlZ3kgc2l6ZSBiZWhhdmVzIGFzIGV4cGVjdGVkIHdpdGggc3RyYW5n
ZSBhcmd1bWVudHMgCi1QQVNTIENvdW50UXVldWluZ1N0cmF0ZWd5IGluc3RhbmNlcyBoYXZlIHRo
ZSBjb3JyZWN0IHByb3BlcnRpZXMgCi1QQVNTIENvdW50UXVldWluZ1N0cmF0ZWd5J3MgaGlnaFdh
dGVyTWFyayBwcm9wZXJ0eSBjYW4gYmUgc2V0IHRvIGFueXRoaW5nIAotUEFTUyBDb3VudFF1ZXVp
bmdTdHJhdGVneS5uYW1lIGlzIGNvcnJlY3QgCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9jb3VudC1xdWV1aW5nLXN0cmF0
ZWd5LnNlcnZpY2V3b3JrZXIuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5LnNlcnZpY2V3
b3JrZXIuaHR0cHMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjEzYWUwZTk3
NDg0MjRlM2QxYjZkYjBjYjdmYTcxMDdkMTJmY2E4My4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMvY291bnQtcXVldWluZy1zdHJhdGVneS5zZXJ2aWNld29ya2VyLmh0
dHBzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4K
LTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTx0aXRsZT5jb3VudC1xdWV1aW5nLXN0cmF0ZWd5Lmpz
IHNlcnZpY2Ugd29ya2VyIHdyYXBwZXIgZmlsZTwvdGl0bGU+Ci0KLTxzY3JpcHQgc3JjPSIvcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvc2VydmljZS13
b3JrZXJzL3NlcnZpY2Utd29ya2VyL3Jlc291cmNlcy90ZXN0LWhlbHBlcnMuc3ViLmpzIj48L3Nj
cmlwdD4KLQotPHNjcmlwdD4KLSd1c2Ugc3RyaWN0JzsKLXNlcnZpY2Vfd29ya2VyX3Rlc3QoJ2Nv
dW50LXF1ZXVpbmctc3RyYXRlZ3kuanMnLCAnU2VydmljZSB3b3JrZXIgdGVzdCBzZXR1cCcpOwot
PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMvY291bnQtcXVldWluZy1zdHJhdGVneS5zaGFyZWR3b3JrZXItZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
dHJlYW1zL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3kuc2hhcmVkd29ya2VyLWV4cGVjdGVkLnR4dApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDlkNWQyNTA5ZDc4NDdlOGNkNmZlNjYwNmFh
NjBjZGQzM2FhNDc0ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
Y291bnQtcXVldWluZy1zdHJhdGVneS5zaGFyZWR3b3JrZXItZXhwZWN0ZWQudHh0CisrKyAvZGV2
L251bGwKQEAgLTEsNSArMCwwIEBACi1DT05TT0xFIE1FU1NBR0U6IFJlZmVyZW5jZUVycm9yOiBD
YW4ndCBmaW5kIHZhcmlhYmxlOiBTaGFyZWRXb3JrZXIKLQotSGFybmVzcyBFcnJvciAoRkFJTCks
IG1lc3NhZ2UgPSBSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogU2hhcmVkV29y
a2VyCi0KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zdHJlYW1zL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3kuc2hhcmVkd29ya2VyLmh0bWwg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvY291
bnQtcXVldWluZy1zdHJhdGVneS5zaGFyZWR3b3JrZXIuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggNmQ0MzYxMmE4ZWJkNzYxODI4NDQ1MTY3MmQ4MzhmNTVmYzc5ZGExOC4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvY291bnQtcXVldWluZy1zdHJh
dGVneS5zaGFyZWR3b3JrZXIuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLTwh
RE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHRpdGxlPmNvdW50LXF1ZXVp
bmctc3RyYXRlZ3kuanMgc2hhcmVkIHdvcmtlciB3cmFwcGVyIGZpbGU8L3RpdGxlPgotCi08c2Ny
aXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNy
Yz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci0KLTxzY3JpcHQ+
Ci0ndXNlIHN0cmljdCc7Ci1mZXRjaF90ZXN0c19mcm9tX3dvcmtlcihuZXcgU2hhcmVkV29ya2Vy
KCdjb3VudC1xdWV1aW5nLXN0cmF0ZWd5LmpzJykpOwotPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvZ2VuZXJh
dGUtdGVzdC13cmFwcGVycy5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy9nZW5lcmF0ZS10ZXN0LXdyYXBwZXJzLmpzCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA0YTQwNmZlNzVjMmVlMzdiNjg5YjNhN2M4YTNmYTdmMWVkMTgyMzBi
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9nZW5lcmF0ZS10ZXN0
LXdyYXBwZXJzLmpzCisrKyAvZGV2L251bGwKQEAgLTEsOTkgKzAsMCBAQAotInVzZSBzdHJpY3Qi
OwotLy8gVXNhZ2U6IGBub2RlIGdlbmVyYXRlLXRlc3Qtd3JhcHBlcnMuanMganMtZmlsZW5hbWUx
LmpzIFtqcy1maWxlbmFtZTIuanMgLi4uXWAgd2lsbCBnZW5lcmF0ZToKLS8vIC0ganMtZmlsZW5h
bWUxLmh0bWwKLS8vIC0ganMtZmlsZW5hbWUxLnNoYXJlZHdvcmtlci5odG1sCi0vLyAtIGpzLWZp
bGVuYW1lMS5kZWRpY2F0ZWR3b3JrZXIuaHRtbAotLy8gLSBqcy1maWxlbmFtZTEuc2VydmljZXdv
cmtlci5odHRwcy5odG1sCi0vLyAoZm9yIGVhY2ggcGFzc2VkIGZpbGVuYW1lKQotLy8KLS8vIEl0
IHdpbGwgdHVybiBhbnkgaW1wb3J0U2NyaXB0cyBpbnNpZGUgdGhlIC5qcyBmaWxlIGludG8gPHNj
cmlwdD5zIGluIHRoZSBicm93c2VyIGNvbnRleHQgd3JhcHBlci4KLS8vCi0vLyBUaGlzIGNvdWxk
IGJlY29tZSBvYnNvbGV0ZSBpZiBodHRwczovL2dpdGh1Yi5jb20vdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9pc3N1ZXMvNDIxMCBnZXRzIGZpeGVkLAotLy8gYWxsb3dpbmcgLmFueS5qcyB0byB3b3Jr
IHdpdGggYWxsIGZvdXIgY29udGV4dHMuCi0KLWNvbnN0IGZzID0gcmVxdWlyZSgiZnMiKTsKLWNv
bnN0IHBhdGggPSByZXF1aXJlKCJwYXRoIik7Ci0KLWZvciAoY29uc3QgYXJnIG9mIHByb2Nlc3Mu
YXJndi5zbGljZSgyKSkgewotICAgIGdlbmVyYXRlV3JhcHBlcihhcmcpOwotfQotCi1mdW5jdGlv
biBnZW5lcmF0ZVdyYXBwZXIoanNGaWxlbmFtZSkgewotICAgIGNvbnN0IGltcG9ydGVkU2NyaXB0
RmlsZW5hbWVzID0gZmluZEltcG9ydGVkU2NyaXB0RmlsZW5hbWVzKGpzRmlsZW5hbWUpOwotICAg
IGNvbnN0IGltcG9ydGVkU2NyaXB0VGFncyA9IGltcG9ydGVkU2NyaXB0RmlsZW5hbWVzCi0gICAg
ICAgIC5tYXAoZmlsZW5hbWUgPT4gYDxzY3JpcHQgc3JjPSIke2ZpbGVuYW1lfSI+PC9zY3JpcHQ+
YCkKLSAgICAgICAgLmpvaW4oJ1xuJyk7Ci0KLSAgICBjb25zdCBiYXNlbmFtZSA9IHBhdGguYmFz
ZW5hbWUoanNGaWxlbmFtZSk7Ci0gICAgY29uc3Qgbm9FeHRlbnNpb24gPSBwYXRoLmJhc2VuYW1l
KGpzRmlsZW5hbWUsICcuanMnKTsKLQotICAgIGNvbnN0IG91dHB1dHMgPSB7Ci0gICAgICAgICcu
aHRtbCc6IGA8IURPQ1RZUEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTx0aXRsZT4k
e2Jhc2VuYW1lfSBicm93c2VyIGNvbnRleHQgd3JhcHBlciBmaWxlPC90aXRsZT4KLQotPHNjcmlw
dCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9
Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotCi0ke2ltcG9ydGVk
U2NyaXB0VGFnc30KLQotPHNjcmlwdCBzcmM9IiR7YmFzZW5hbWV9Ij48L3NjcmlwdD4KLWAsCi0g
ICAgICAgICcuZGVkaWNhdGVkd29ya2VyLmh0bWwnOiBgPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBj
aGFyc2V0PSJ1dGYtOCI+Ci08dGl0bGU+JHtiYXNlbmFtZX0gZGVkaWNhdGVkIHdvcmtlciB3cmFw
cGVyIGZpbGU8L3RpdGxlPgotCi08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5q
cyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5q
cyI+PC9zY3JpcHQ+Ci0KLTxzY3JpcHQ+Ci0ndXNlIHN0cmljdCc7Ci1mZXRjaF90ZXN0c19mcm9t
X3dvcmtlcihuZXcgV29ya2VyKCcke2Jhc2VuYW1lfScpKTsKLTwvc2NyaXB0PgotYCwKLSAgICAg
ICAgJy5zaGFyZWR3b3JrZXIuaHRtbCc6IGA8IURPQ1RZUEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9
InV0Zi04Ij4KLTx0aXRsZT4ke2Jhc2VuYW1lfSBzaGFyZWQgd29ya2VyIHdyYXBwZXIgZmlsZTwv
dGl0bGU+Ci0KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3Njcmlw
dD4KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3Njcmlw
dD4KLQotPHNjcmlwdD4KLSd1c2Ugc3RyaWN0JzsKLWZldGNoX3Rlc3RzX2Zyb21fd29ya2VyKG5l
dyBTaGFyZWRXb3JrZXIoJyR7YmFzZW5hbWV9JykpOwotPC9zY3JpcHQ+Ci1gLAotICAgICAgICAn
LnNlcnZpY2V3b3JrZXIuaHR0cHMuaHRtbCc6IGA8IURPQ1RZUEUgaHRtbD4KLTxtZXRhIGNoYXJz
ZXQ9InV0Zi04Ij4KLTx0aXRsZT4ke2Jhc2VuYW1lfSBzZXJ2aWNlIHdvcmtlciB3cmFwcGVyIGZp
bGU8L3RpdGxlPgotCi08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9z
Y3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9z
Y3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9yZXNv
dXJjZXMvdGVzdC1oZWxwZXJzLnN1Yi5qcyI+PC9zY3JpcHQ+Ci0KLTxzY3JpcHQ+Ci0ndXNlIHN0
cmljdCc7Ci1zZXJ2aWNlX3dvcmtlcl90ZXN0KCcke2Jhc2VuYW1lfScsICdTZXJ2aWNlIHdvcmtl
ciB0ZXN0IHNldHVwJyk7Ci08L3NjcmlwdD4KLWAKLSAgICB9OwotCi0gICAgZm9yIChjb25zdCBb
a2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMob3V0cHV0cykpIHsKLSAgICAgICAgY29uc3Qg
ZGVzdEZpbGVuYW1lID0gcGF0aC5yZXNvbHZlKHBhdGguZGlybmFtZShqc0ZpbGVuYW1lKSwgYCR7
bm9FeHRlbnNpb259JHtrZXl9YCk7Ci0gICAgICAgIGZzLndyaXRlRmlsZVN5bmMoZGVzdEZpbGVu
YW1lLCB2YWx1ZSwgeyBlbmNvZGluZzogJ3V0Zi04JyB9KTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9u
IGZpbmRJbXBvcnRlZFNjcmlwdEZpbGVuYW1lcyhpbnB1dEZpbGVuYW1lKSB7Ci0gICAgY29uc3Qg
c2NyaXB0Q29udGVudHMgPSBmcy5yZWFkRmlsZVN5bmMoaW5wdXRGaWxlbmFtZSwgeyBlbmNvZGlu
ZzogJ3V0Zi04JyB9KTsKLQotICAgIGNvbnN0IHJlZ0V4cCA9IC9zZWxmXC5pbXBvcnRTY3JpcHRz
XCgnKFteJ10rKSdcKTsvZzsKLQotICAgIGxldCByZXN1bHQgPSBbXTsKLSAgICBsZXQgbWF0Y2g7
Ci0gICAgd2hpbGUgKG1hdGNoID0gcmVnRXhwLmV4ZWMoc2NyaXB0Q29udGVudHMpKSB7Ci0gICAg
ICAgIHJlc3VsdC5wdXNoKG1hdGNoWzFdKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gcmVzdWx0LmZp
bHRlcih4ID0+IHggIT09ICcvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzJyk7Ci19CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
aWRsaGFybmVzcy5hbnktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL2lkbGhhcm5lc3MuYW55LWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4zYWQ2YTY4NjU4NGRhMTJhNjMzM2U4NzcxNGVjNzIwZWY0ZGExNmY1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
dHJlYW1zL2lkbGhhcm5lc3MuYW55LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKKworRkFJ
TCBpZGxfdGVzdCBzZXR1cCBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2
YWx1ZTogb2JqZWN0ICJFcnJvciBmZXRjaGluZyAvaW50ZXJmYWNlcy9zdHJlYW1zLmlkbC4iCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy9pZGxoYXJuZXNzLmFueS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL2lkbGhhcm5lc3MuYW55Lmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MjM4MjkxMzUyOGU2OTNiM2E1ZDU2YzY2MGE0NTA2MDk4MGI1NDhjMwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9p
ZGxoYXJuZXNzLmFueS5odG1sCkBAIC0wLDAgKzEgQEAKKzwhLS0gVGhpcyBmaWxlIGlzIHJlcXVp
cmVkIGZvciBXZWJLaXQgdGVzdCBpbmZyYXN0cnVjdHVyZSB0byBydW4gdGhlIHRlbXBsYXRlZCB0
ZXN0IC0tPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9pZGxoYXJuZXNzLmFu
eS5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy9pZGxoYXJuZXNzLmFueS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MmExN2RhNThjNWFlMzkwMjM0ZWUzOTQz
MDNhYTJmZTZhNzJlYmRkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL2lkbGhhcm5lc3MuYW55LmpzCkBAIC0wLDAg
KzEsNzkgQEAKKy8vIE1FVEE6IGdsb2JhbD13aW5kb3csd29ya2VyCisvLyBNRVRBOiBzY3JpcHQ9
L3Jlc291cmNlcy9XZWJJRExQYXJzZXIuanMKKy8vIE1FVEE6IHNjcmlwdD0vcmVzb3VyY2VzL2lk
bGhhcm5lc3MuanMKKy8vIE1FVEE6IHRpbWVvdXQ9bG9uZworCitpZGxfdGVzdCgKKyAgWydzdHJl
YW1zJ10sCisgIFsnZG9tJ10sIC8vIGZvciBBYm9ydFNpZ25hbAorICBhc3luYyBpZGxfYXJyYXkg
PT4geworICAgIC8vIEVtcHR5IHRyeS9jYXRjaGVzIGVuc3VyZSB0aGF0IGlmIHNvbWV0aGluZyBp
c24ndCBpbXBsZW1lbnRlZCAoZS5nLiwgcmVhZGFibGUgYnl0ZSBzdHJlYW1zLCBvciB3cml0YWJs
ZSBzdHJlYW1zKQorICAgIC8vIHRoZSBoYXJuZXNzIHN0aWxsIHNldHMgdGhpbmdzIHVwIGNvcnJl
Y3RseS4gTm90ZSB0aGF0IHRoZSBjb3JyZXNwb25kaW5nIGludGVyZmFjZSB0ZXN0cyB3aWxsIHN0
aWxsIGZhaWwuCisKKyAgICB0cnkgeworICAgICAgbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICAg
ICAgc3RhcnQoYykgeworICAgICAgICAgIHNlbGYucmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJv
bGxlciA9IGM7CisgICAgICAgIH0KKyAgICAgIH0pOworICAgIH0gY2F0Y2gge30KKworICAgIHRy
eSB7CisgICAgICBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgICAgICBzdGFydChjKSB7CisgICAg
ICAgICAgc2VsZi5yZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyID0gYzsKKyAgICAgICAgfSwK
KyAgICAgICAgdHlwZTogJ2J5dGVzJworICAgICAgfSk7CisgICAgfSBjYXRjaCB7fQorCisgICAg
dHJ5IHsKKyAgICAgIGxldCByZXNvbHZlUHVsbENhbGxlZFByb21pc2U7CisgICAgICBjb25zdCBw
dWxsQ2FsbGVkUHJvbWlzZSA9IG5ldyBQcm9taXNlKHJlc29sdmUgPT4geworICAgICAgICByZXNv
bHZlUHVsbENhbGxlZFByb21pc2UgPSByZXNvbHZlOworICAgICAgfSk7CisgICAgICBjb25zdCBz
dHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgICAgICBwdWxsKGMpIHsKKyAgICAgICAg
ICBzZWxmLnJlYWRhYmxlU3RyZWFtQnlvYlJlcXVlc3QgPSBjLmJ5b2JSZXF1ZXN0OworICAgICAg
ICAgIHJlc29sdmVQdWxsQ2FsbGVkUHJvbWlzZSgpOworICAgICAgICB9LAorICAgICAgICB0eXBl
OiAnYnl0ZXMnCisgICAgICB9KTsKKyAgICAgIGNvbnN0IHJlYWRlciA9IHN0cmVhbS5nZXRSZWFk
ZXIoeyBtb2RlOiAnYnlvYicgfSk7CisgICAgICByZWFkZXIucmVhZChuZXcgVWludDhBcnJheSgx
KSk7CisgICAgICBhd2FpdCBwdWxsQ2FsbGVkUHJvbWlzZTsKKyAgICB9IGNhdGNoIHt9CisKKyAg
ICB0cnkgeworICAgICAgbmV3IFdyaXRhYmxlU3RyZWFtKHsKKyAgICAgICAgc3RhcnQoYykgewor
ICAgICAgICAgIHNlbGYud3JpdGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlciA9IGM7CisgICAg
ICAgIH0KKyAgICAgIH0pOworICAgIH0gY2F0Y2gge30KKworICAgIHRyeSB7CisgICAgICBuZXcg
VHJhbnNmb3JtU3RyZWFtKHsKKyAgICAgICAgc3RhcnQoYykgeworICAgICAgICAgIHNlbGYudHJh
bnNmb3JtU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIgPSBjOworICAgICAgICB9CisgICAgICB9KTsK
KyAgICB9IGNhdGNoIHt9CisKKyAgICBpZGxfYXJyYXkuYWRkX29iamVjdHMoeworICAgICAgUmVh
ZGFibGVTdHJlYW06IFsibmV3IFJlYWRhYmxlU3RyZWFtKCkiXSwKKyAgICAgIFJlYWRhYmxlU3Ry
ZWFtRGVmYXVsdFJlYWRlcjogWyIobmV3IFJlYWRhYmxlU3RyZWFtKCkpLmdldFJlYWRlcigpIl0s
CisgICAgICBSZWFkYWJsZVN0cmVhbUJZT0JSZWFkZXI6IFsiKG5ldyBSZWFkYWJsZVN0cmVhbSh7
IHR5cGU6ICdieXRlcycgfSkpLmdldFJlYWRlcih7IG1vZGU6ICdieW9iJyB9KSJdLAorICAgICAg
UmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlcjogWyJzZWxmLnJlYWRhYmxlU3RyZWFtRGVm
YXVsdENvbnRyb2xsZXIiXSwKKyAgICAgIFJlYWRhYmxlQnl0ZVN0cmVhbUNvbnRyb2xsZXI6IFsi
c2VsZi5yZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyIl0sCisgICAgICBSZWFkYWJsZVN0cmVh
bUJZT0JSZXF1ZXN0OiBbInNlbGYucmVhZGFibGVTdHJlYW1CeW9iUmVxdWVzdCJdLAorICAgICAg
V3JpdGFibGVTdHJlYW06IFsibmV3IFdyaXRhYmxlU3RyZWFtKCkiXSwKKyAgICAgIFdyaXRhYmxl
U3RyZWFtRGVmYXVsdFdyaXRlcjogWyIobmV3IFdyaXRhYmxlU3RyZWFtKCkpLmdldFdyaXRlcigp
Il0sCisgICAgICBXcml0YWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyOiBbInNlbGYud3JpdGFi
bGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlciJdLAorICAgICAgVHJhbnNmb3JtU3RyZWFtOiBbIm5l
dyBUcmFuc2Zvcm1TdHJlYW0oKSJdLAorICAgICAgVHJhbnNmb3JtU3RyZWFtRGVmYXVsdENvbnRy
b2xsZXI6IFsic2VsZi50cmFuc2Zvcm1TdHJlYW1EZWZhdWx0Q29udHJvbGxlciJdLAorICAgICAg
Qnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneTogWyJuZXcgQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVn
eSh7IGhpZ2hXYXRlck1hcms6IDUgfSkiXSwKKyAgICAgIENvdW50UXVldWluZ1N0cmF0ZWd5OiBb
Im5ldyBDb3VudFF1ZXVpbmdTdHJhdGVneSh7IGhpZ2hXYXRlck1hcms6IDUgfSkiXQorICAgIH0p
OworICB9CispOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zL2lkbGhhcm5lc3MuYW55Lndvcmtlci1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvaWRsaGFy
bmVzcy5hbnkud29ya2VyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYWQ2YTY4NjU4NGRhMTJh
NjMzM2U4NzcxNGVjNzIwZWY0ZGExNmY1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL2lkbGhhcm5lc3MuYW55Lndv
cmtlci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACisKK0ZBSUwgaWRsX3Rlc3Qgc2V0dXAg
cHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiRXJy
b3IgZmV0Y2hpbmcgL2ludGVyZmFjZXMvc3RyZWFtcy5pZGwuIgorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvaWRsaGFybmVz
cy5hbnkud29ya2VyLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMvaWRsaGFybmVzcy5hbnkud29ya2VyLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjM4
MjkxMzUyOGU2OTNiM2E1ZDU2YzY2MGE0NTA2MDk4MGI1NDhjMwotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9pZGxo
YXJuZXNzLmFueS53b3JrZXIuaHRtbApAQCAtMCwwICsxIEBACis8IS0tIFRoaXMgZmlsZSBpcyBy
ZXF1aXJlZCBmb3IgV2ViS2l0IHRlc3QgaW5mcmFzdHJ1Y3R1cmUgdG8gcnVuIHRoZSB0ZW1wbGF0
ZWQgdGVzdCAtLT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Fi
b3J0LmFueS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Fib3J0LmFueS1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYmRmZjIzNTA2NjI3Yzc1NTA3OWU5NjQ1Y2Q5ZTk1YzgyZjE0N2RmNwotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy9waXBpbmcvYWJvcnQuYW55LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDU4IEBACitDT05TT0xF
IE1FU1NBR0U6IFVuaGFuZGxlZCBQcm9taXNlIFJlamVjdGlvbjogZmFpbGVkIHRvIGFib3J0CitD
T05TT0xFIE1FU1NBR0U6IFVuaGFuZGxlZCBQcm9taXNlIFJlamVjdGlvbjogVHlwZUVycm9yOiBj
YW5jZWwoKSBjYWxsZWQgb24gYSByZWFkZXIgb3duZWQgYnkgbm8gcmVhZGFibGUgc3RyZWFtCitD
T05TT0xFIE1FU1NBR0U6IFVuaGFuZGxlZCBQcm9taXNlIFJlamVjdGlvbjogZmFpbGVkIHRvIGFi
b3J0CitDT05TT0xFIE1FU1NBR0U6IFVuaGFuZGxlZCBQcm9taXNlIFJlamVjdGlvbjogVHlwZUVy
cm9yOiBjYW5jZWwoKSBjYWxsZWQgb24gYSByZWFkZXIgb3duZWQgYnkgbm8gcmVhZGFibGUgc3Ry
ZWFtCitDT05TT0xFIE1FU1NBR0U6IFVuaGFuZGxlZCBQcm9taXNlIFJlamVjdGlvbjogZmFpbGVk
IHRvIGFib3J0CitDT05TT0xFIE1FU1NBR0U6IFVuaGFuZGxlZCBQcm9taXNlIFJlamVjdGlvbjog
VHlwZUVycm9yOiBjYW5jZWwoKSBjYWxsZWQgb24gYSByZWFkZXIgb3duZWQgYnkgbm8gcmVhZGFi
bGUgc3RyZWFtCitDT05TT0xFIE1FU1NBR0U6IFVuaGFuZGxlZCBQcm9taXNlIFJlamVjdGlvbjog
ZmFpbGVkIHRvIGFib3J0CitDT05TT0xFIE1FU1NBR0U6IFVuaGFuZGxlZCBQcm9taXNlIFJlamVj
dGlvbjogVHlwZUVycm9yOiBjYW5jZWwoKSBjYWxsZWQgb24gYSByZWFkZXIgb3duZWQgYnkgbm8g
cmVhZGFibGUgc3RyZWFtCitDT05TT0xFIE1FU1NBR0U6IFVuaGFuZGxlZCBQcm9taXNlIFJlamVj
dGlvbjogZmFpbGVkIHRvIGFib3J0CitDT05TT0xFIE1FU1NBR0U6IFVuaGFuZGxlZCBQcm9taXNl
IFJlamVjdGlvbjogVHlwZUVycm9yOiBjYW5jZWwoKSBjYWxsZWQgb24gYSByZWFkZXIgb3duZWQg
Ynkgbm8gcmVhZGFibGUgc3RyZWFtCitDT05TT0xFIE1FU1NBR0U6IFVuaGFuZGxlZCBQcm9taXNl
IFJlamVjdGlvbjogZmFpbGVkIHRvIGFib3J0CitDT05TT0xFIE1FU1NBR0U6IFVuaGFuZGxlZCBQ
cm9taXNlIFJlamVjdGlvbjogVHlwZUVycm9yOiBjYW5jZWwoKSBjYWxsZWQgb24gYSByZWFkZXIg
b3duZWQgYnkgbm8gcmVhZGFibGUgc3RyZWFtCitDT05TT0xFIE1FU1NBR0U6IFVuaGFuZGxlZCBQ
cm9taXNlIFJlamVjdGlvbjogZmFpbGVkIHRvIGFib3J0CitDT05TT0xFIE1FU1NBR0U6IFVuaGFu
ZGxlZCBQcm9taXNlIFJlamVjdGlvbjogVHlwZUVycm9yOiBjYW5jZWwoKSBjYWxsZWQgb24gYSBy
ZWFkZXIgb3duZWQgYnkgbm8gcmVhZGFibGUgc3RyZWFtCitDT05TT0xFIE1FU1NBR0U6IFVuaGFu
ZGxlZCBQcm9taXNlIFJlamVjdGlvbjogZmFpbGVkIHRvIGFib3J0CitDT05TT0xFIE1FU1NBR0U6
IFVuaGFuZGxlZCBQcm9taXNlIFJlamVjdGlvbjogZmFpbGVkIHRvIGFib3J0CitDT05TT0xFIE1F
U1NBR0U6IFVuaGFuZGxlZCBQcm9taXNlIFJlamVjdGlvbjogZmFpbGVkIHRvIGFib3J0CitDT05T
T0xFIE1FU1NBR0U6IFVuaGFuZGxlZCBQcm9taXNlIFJlamVjdGlvbjogZmFpbGVkIHRvIGFib3J0
CitDT05TT0xFIE1FU1NBR0U6IFVuaGFuZGxlZCBQcm9taXNlIFJlamVjdGlvbjogZmFpbGVkIHRv
IGFib3J0CitDT05TT0xFIE1FU1NBR0U6IFVuaGFuZGxlZCBQcm9taXNlIFJlamVjdGlvbjogVHlw
ZUVycm9yOiBjYW5jZWwoKSBjYWxsZWQgb24gYSByZWFkZXIgb3duZWQgYnkgbm8gcmVhZGFibGUg
c3RyZWFtCitDT05TT0xFIE1FU1NBR0U6IFVuaGFuZGxlZCBQcm9taXNlIFJlamVjdGlvbjogZmFp
bGVkIHRvIGFib3J0CitDT05TT0xFIE1FU1NBR0U6IFVuaGFuZGxlZCBQcm9taXNlIFJlamVjdGlv
bjogVHlwZUVycm9yOiBjYW5jZWwoKSBjYWxsZWQgb24gYSByZWFkZXIgb3duZWQgYnkgbm8gcmVh
ZGFibGUgc3RyZWFtCitDT05TT0xFIE1FU1NBR0U6IFVuaGFuZGxlZCBQcm9taXNlIFJlamVjdGlv
bjogZXJyb3IxOiBlcnJvcjEKK0NPTlNPTEUgTUVTU0FHRTogVW5oYW5kbGVkIFByb21pc2UgUmVq
ZWN0aW9uOiBmYWlsZWQgdG8gYWJvcnQKK0NPTlNPTEUgTUVTU0FHRTogVW5oYW5kbGVkIFByb21p
c2UgUmVqZWN0aW9uOiBUeXBlRXJyb3I6IGNhbmNlbCgpIGNhbGxlZCBvbiBhIHJlYWRlciBvd25l
ZCBieSBubyByZWFkYWJsZSBzdHJlYW0KK0NPTlNPTEUgTUVTU0FHRTogVW5oYW5kbGVkIFByb21p
c2UgUmVqZWN0aW9uOiBlcnJvcjI6IGVycm9yMgorQ09OU09MRSBNRVNTQUdFOiBVbmhhbmRsZWQg
UHJvbWlzZSBSZWplY3Rpb246IFR5cGVFcnJvcjogY2FuY2VsKCkgY2FsbGVkIG9uIGEgcmVhZGVy
IG93bmVkIGJ5IG5vIHJlYWRhYmxlIHN0cmVhbQorQ09OU09MRSBNRVNTQUdFOiBVbmhhbmRsZWQg
UHJvbWlzZSBSZWplY3Rpb246IGVycm9yMTogZXJyb3IxCitDT05TT0xFIE1FU1NBR0U6IFVuaGFu
ZGxlZCBQcm9taXNlIFJlamVjdGlvbjogZXJyb3IxOiBlcnJvcjEKK0NPTlNPTEUgTUVTU0FHRTog
VW5oYW5kbGVkIFByb21pc2UgUmVqZWN0aW9uOiBlcnJvcjE6IGVycm9yMQorQ09OU09MRSBNRVNT
QUdFOiBVbmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rpb246IGVycm9yMTogZXJyb3IxCisKK0hhcm5l
c3MgRXJyb3IgKEZBSUwpLCBtZXNzYWdlID0gVW5oYW5kbGVkIHJlamVjdGlvbjogZXJyb3IxCisK
K0ZBSUwgYSBzaWduYWwgYXJndW1lbnQgJ251bGwnIHNob3VsZCBjYXVzZSBwaXBlVG8oKSB0byBy
ZWplY3QgcHJvbWlzZV9yZWplY3RzX2pzOiBwaXBlVG8gc2hvdWxkIHJlamVjdCBmdW5jdGlvbiAi
ZnVuY3Rpb24gKCkgeyB0aHJvdyBlIH0iIHRocmV3ICJmYWlsZWQgdG8gYWJvcnQiIHdpdGggdHlw
ZSAic3RyaW5nIiwgbm90IGFuIG9iamVjdAorRkFJTCBhIHNpZ25hbCBhcmd1bWVudCAnQWJvcnRT
aWduYWwnIHNob3VsZCBjYXVzZSBwaXBlVG8oKSB0byByZWplY3QgcHJvbWlzZV9yZWplY3RzX2pz
OiBwaXBlVG8gc2hvdWxkIHJlamVjdCBmdW5jdGlvbiAiZnVuY3Rpb24gKCkgeyB0aHJvdyBlIH0i
IHRocmV3ICJmYWlsZWQgdG8gYWJvcnQiIHdpdGggdHlwZSAic3RyaW5nIiwgbm90IGFuIG9iamVj
dAorRkFJTCBhIHNpZ25hbCBhcmd1bWVudCAndHJ1ZScgc2hvdWxkIGNhdXNlIHBpcGVUbygpIHRv
IHJlamVjdCBwcm9taXNlX3JlamVjdHNfanM6IHBpcGVUbyBzaG91bGQgcmVqZWN0IGZ1bmN0aW9u
ICJmdW5jdGlvbiAoKSB7IHRocm93IGUgfSIgdGhyZXcgImZhaWxlZCB0byBhYm9ydCIgd2l0aCB0
eXBlICJzdHJpbmciLCBub3QgYW4gb2JqZWN0CitGQUlMIGEgc2lnbmFsIGFyZ3VtZW50ICctMScg
c2hvdWxkIGNhdXNlIHBpcGVUbygpIHRvIHJlamVjdCBwcm9taXNlX3JlamVjdHNfanM6IHBpcGVU
byBzaG91bGQgcmVqZWN0IGZ1bmN0aW9uICJmdW5jdGlvbiAoKSB7IHRocm93IGUgfSIgdGhyZXcg
ImZhaWxlZCB0byBhYm9ydCIgd2l0aCB0eXBlICJzdHJpbmciLCBub3QgYW4gb2JqZWN0CitGQUlM
IGEgc2lnbmFsIGFyZ3VtZW50ICdbb2JqZWN0IEFib3J0U2lnbmFsXScgc2hvdWxkIGNhdXNlIHBp
cGVUbygpIHRvIHJlamVjdCBwcm9taXNlX3JlamVjdHNfanM6IHBpcGVUbyBzaG91bGQgcmVqZWN0
IGZ1bmN0aW9uICJmdW5jdGlvbiAoKSB7IHRocm93IGUgfSIgdGhyZXcgImZhaWxlZCB0byBhYm9y
dCIgd2l0aCB0eXBlICJzdHJpbmciLCBub3QgYW4gb2JqZWN0CitGQUlMIGFuIGFib3J0ZWQgc2ln
bmFsIHNob3VsZCBjYXVzZSB0aGUgd3JpdGFibGUgc3RyZWFtIHRvIHJlamVjdCB3aXRoIGFuIEFi
b3J0RXJyb3IgcHJvbWlzZV9yZWplY3RzX2RvbTogcGlwZVRvIHNob3VsZCByZWplY3QgZnVuY3Rp
b24gImZ1bmN0aW9uICgpIHsgdGhyb3cgZSB9IiB0aHJldyAiZmFpbGVkIHRvIGFib3J0IiB3aXRo
IHR5cGUgInN0cmluZyIsIG5vdCBhbiBvYmplY3QKK0ZBSUwgYWxsIHRoZSBBYm9ydEVycm9yIG9i
amVjdHMgc2hvdWxkIGJlIHRoZSBzYW1lIG9iamVjdCBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCBy
ZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJUeXBlRXJyb3I6IHdzLmdldFdyaXRlciBpcyBu
b3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVu
ZGVmaW5lZCkiCitGQUlMIHByZXZlbnRDYW5jZWwgc2hvdWxkIHByZXZlbnQgY2FuY2VsaW5nIHRo
ZSByZWFkYWJsZSBwcm9taXNlX3JlamVjdHNfZG9tOiBwaXBlVG8gc2hvdWxkIHJlamVjdCBmdW5j
dGlvbiAiZnVuY3Rpb24gKCkgeyB0aHJvdyBlIH0iIHRocmV3ICJmYWlsZWQgdG8gYWJvcnQiIHdp
dGggdHlwZSAic3RyaW5nIiwgbm90IGFuIG9iamVjdAorRkFJTCBwcmV2ZW50QWJvcnQgc2hvdWxk
IHByZXZlbnQgYWJvcnRpbmcgdGhlIHJlYWRhYmxlIHByb21pc2VfcmVqZWN0c19kb206IHBpcGVU
byBzaG91bGQgcmVqZWN0IGZ1bmN0aW9uICJmdW5jdGlvbiAoKSB7IHRocm93IGUgfSIgdGhyZXcg
ImZhaWxlZCB0byBhYm9ydCIgd2l0aCB0eXBlICJzdHJpbmciLCBub3QgYW4gb2JqZWN0CitGQUlM
IHByZXZlbnRDYW5jZWwgYW5kIHByZXZlbnRBYm9ydCBzaG91bGQgcHJldmVudCBjYW5jZWxpbmcg
dGhlIHJlYWRhYmxlIGFuZCBhYm9ydGluZyB0aGUgcmVhZGFibGUgcHJvbWlzZV9yZWplY3RzX2Rv
bTogcGlwZVRvIHNob3VsZCByZWplY3QgZnVuY3Rpb24gImZ1bmN0aW9uICgpIHsgdGhyb3cgZSB9
IiB0aHJldyAiZmFpbGVkIHRvIGFib3J0IiB3aXRoIHR5cGUgInN0cmluZyIsIG5vdCBhbiBvYmpl
Y3QKK0ZBSUwgYWJvcnQgc2hvdWxkIHByZXZlbnQgZnVydGhlciByZWFkcyBhc3NlcnRfdW5yZWFj
aGVkOiBTaG91bGQgaGF2ZSByZWplY3RlZDogcGlwZVRvIHNob3VsZCByZWplY3QgUmVhY2hlZCB1
bnJlYWNoYWJsZSBjb2RlCitGQUlMIGFsbCBwZW5kaW5nIHdyaXRlcyBzaG91bGQgY29tcGxldGUg
b24gYWJvcnQgYXNzZXJ0X3VucmVhY2hlZDogU2hvdWxkIGhhdmUgcmVqZWN0ZWQ6IHBpcGVUbyBz
aG91bGQgcmVqZWN0IFJlYWNoZWQgdW5yZWFjaGFibGUgY29kZQorRkFJTCBhIHJlamVjdGlvbiBm
cm9tIHVuZGVybHlpbmdTb3VyY2UuY2FuY2VsKCkgc2hvdWxkIGJlIHJldHVybmVkIGJ5IHBpcGVU
bygpIHByb21pc2VfcmVqZWN0c19leGFjdGx5OiBwaXBlVG8gc2hvdWxkIHJlamVjdCBmdW5jdGlv
biAiZnVuY3Rpb24gKCkgeyB0aHJvdyBlIH0iIHRocmV3ICJmYWlsZWQgdG8gYWJvcnQiIGJ1dCB3
ZSBleHBlY3RlZCBpdCB0byB0aHJvdyBvYmplY3QgImVycm9yMTogZXJyb3IxIgorRkFJTCBhIHJl
amVjdGlvbiBmcm9tIHVuZGVybHlpbmdTaW5rLmFib3J0KCkgc2hvdWxkIGJlIHJldHVybmVkIGJ5
IHBpcGVUbygpIHByb21pc2VfcmVqZWN0c19leGFjdGx5OiBwaXBlVG8gc2hvdWxkIHJlamVjdCBm
dW5jdGlvbiAiZnVuY3Rpb24gKCkgeyB0aHJvdyBlIH0iIHRocmV3ICJmYWlsZWQgdG8gYWJvcnQi
IGJ1dCB3ZSBleHBlY3RlZCBpdCB0byB0aHJvdyBvYmplY3QgImVycm9yMTogZXJyb3IxIgorRkFJ
TCBhIHJlamVjdGlvbiBmcm9tIHVuZGVybHlpbmdTaW5rLmFib3J0KCkgc2hvdWxkIGJlIHByZWZl
cnJlZCB0byBvbmUgZnJvbSB1bmRlcmx5aW5nU291cmNlLmNhbmNlbCgpIHByb21pc2VfcmVqZWN0
c19leGFjdGx5OiBwaXBlVG8gc2hvdWxkIHJlamVjdCBmdW5jdGlvbiAiZnVuY3Rpb24gKCkgeyB0
aHJvdyBlIH0iIHRocmV3ICJmYWlsZWQgdG8gYWJvcnQiIGJ1dCB3ZSBleHBlY3RlZCBpdCB0byB0
aHJvdyBvYmplY3QgImVycm9yMjogZXJyb3IyIgorRkFJTCBhYm9ydCBzaWduYWwgdGFrZXMgcHJp
b3JpdHkgb3ZlciBjbG9zZWQgcmVhZGFibGUgYXNzZXJ0X3VucmVhY2hlZDogU2hvdWxkIGhhdmUg
cmVqZWN0ZWQ6IHBpcGVUbyBzaG91bGQgcmVqZWN0IFJlYWNoZWQgdW5yZWFjaGFibGUgY29kZQor
RkFJTCBhYm9ydCBzaWduYWwgdGFrZXMgcHJpb3JpdHkgb3ZlciBlcnJvcmVkIHJlYWRhYmxlIHBy
b21pc2VfcmVqZWN0c19kb206IHBpcGVUbyBzaG91bGQgcmVqZWN0IGZ1bmN0aW9uICJmdW5jdGlv
biAoKSB7IHRocm93IGUgfSIgdGhyZXcgb2JqZWN0ICJlcnJvcjE6IGVycm9yMSIgdGhhdCBpcyBu
b3QgYSBET01FeGNlcHRpb24gQWJvcnRFcnJvcjogcHJvcGVydHkgImNvZGUiIGlzIGVxdWFsIHRv
IHVuZGVmaW5lZCwgZXhwZWN0ZWQgMjAKK0ZBSUwgYWJvcnQgc2lnbmFsIHRha2VzIHByaW9yaXR5
IG92ZXIgY2xvc2VkIHdyaXRhYmxlIHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKElu
ICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkKK0ZBSUwgYWJv
cnQgc2lnbmFsIHRha2VzIHByaW9yaXR5IG92ZXIgZXJyb3JlZCB3cml0YWJsZSBjb250cm9sbGVy
LmVycm9yIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ2NvbnRyb2xsZXIuZXJyb3IoZXJyb3IxKScs
ICdjb250cm9sbGVyLmVycm9yJyBpcyB1bmRlZmluZWQpCitGQUlMIGFib3J0IHNob3VsZCBkbyBu
b3RoaW5nIGFmdGVyIHRoZSByZWFkYWJsZSBpcyBjbG9zZWQgcHJvbWlzZV90ZXN0OiBVbmhhbmRs
ZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiVHlwZUVycm9yOiB3cy5nZXRXcml0ZXIg
aXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3JpdGVyKCknLCAnd3MuZ2V0V3JpdGVyJyBp
cyB1bmRlZmluZWQpIgorRkFJTCBhYm9ydCBzaG91bGQgZG8gbm90aGluZyBhZnRlciB0aGUgcmVh
ZGFibGUgaXMgZXJyb3JlZCBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2
YWx1ZTogb2JqZWN0ICJUeXBlRXJyb3I6IHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4g
KEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkiCitGQUlM
IGFib3J0IHNob3VsZCBkbyBub3RoaW5nIGFmdGVyIHRoZSByZWFkYWJsZSBpcyBlcnJvcmVkLCBl
dmVuIHdpdGggcGVuZGluZyB3cml0ZXMgcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9u
IHdpdGggdmFsdWU6IG9iamVjdCAiVHlwZUVycm9yOiB3cy5nZXRXcml0ZXIgaXMgbm90IGEgZnVu
Y3Rpb24uIChJbiAnd3MuZ2V0V3JpdGVyKCknLCAnd3MuZ2V0V3JpdGVyJyBpcyB1bmRlZmluZWQp
IgorRkFJTCBhYm9ydCBzaG91bGQgZG8gbm90aGluZyBhZnRlciB0aGUgd3JpdGFibGUgaXMgZXJy
b3JlZCBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0
ICJUeXBlRXJyb3I6IHdyaXRlQ29udHJvbGxlci5lcnJvciBpcyBub3QgYSBmdW5jdGlvbi4gKElu
ICd3cml0ZUNvbnRyb2xsZXIuZXJyb3IoZXJyb3IxKScsICd3cml0ZUNvbnRyb2xsZXIuZXJyb3In
IGlzIHVuZGVmaW5lZCkiCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvYWJvcnQuYW55Lmh0bWwgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Fib3J0
LmFueS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzODI5MTM1MjhlNjkzYjNhNWQ1NmM2NjBhNDUwNjA5ODBi
NTQ4YzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Fib3J0LmFueS5odG1sCkBAIC0wLDAgKzEgQEAK
KzwhLS0gVGhpcyBmaWxlIGlzIHJlcXVpcmVkIGZvciBXZWJLaXQgdGVzdCBpbmZyYXN0cnVjdHVy
ZSB0byBydW4gdGhlIHRlbXBsYXRlZCB0ZXN0IC0tPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy9waXBpbmcvYWJvcnQuYW55LmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9hYm9ydC5hbnkuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uM2ZlMDI5ZGU5NWExYjg5MjFlMzhiNGY3MjU1YmUzYzU2ZDAwN2U0NQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy9waXBpbmcvYWJvcnQuYW55LmpzCkBAIC0wLDAgKzEsMzc1IEBACisvLyBNRVRBOiBnbG9iYWw9
d2luZG93LHdvcmtlcixqc3NoZWxsCisvLyBNRVRBOiBzY3JpcHQ9Li4vcmVzb3VyY2VzL3JlY29y
ZGluZy1zdHJlYW1zLmpzCisvLyBNRVRBOiBzY3JpcHQ9Li4vcmVzb3VyY2VzL3Rlc3QtdXRpbHMu
anMKKyd1c2Ugc3RyaWN0JzsKKworLy8gVGVzdHMgZm9yIHRoZSB1c2Ugb2YgcGlwZVRvIHdpdGgg
QWJvcnRTaWduYWwuCisvLyBUaGVyZSBpcyBzb21lIGV4dHJhIGNvbXBsZXhpdHkgdG8gYXZvaWQg
dGltZW91dHMgaW4gZW52aXJvbm1lbnRzIHdoZXJlIGFib3J0IGlzIG5vdCBpbXBsZW1lbnRlZC4K
KworY29uc3QgZXJyb3IxID0gbmV3IEVycm9yKCdlcnJvcjEnKTsKK2Vycm9yMS5uYW1lID0gJ2Vy
cm9yMSc7Citjb25zdCBlcnJvcjIgPSBuZXcgRXJyb3IoJ2Vycm9yMicpOworZXJyb3IyLm5hbWUg
PSAnZXJyb3IyJzsKKworY29uc3QgZXJyb3JPblB1bGwgPSB7CisgIHB1bGwoY29udHJvbGxlcikg
eworICAgIC8vIFRoaXMgd2lsbCBjYXVzZSB0aGUgdGVzdCB0byBlcnJvciBpZiBwaXBlVG8gYWJv
cnQgaXMgbm90IGltcGxlbWVudGVkLgorICAgIGNvbnRyb2xsZXIuZXJyb3IoJ2ZhaWxlZCB0byBh
Ym9ydCcpOworICB9Cit9OworCisvLyBUbyBzdG9wIHB1bGwoKSBiZWluZyBjYWxsZWQgaW1tZWRp
YXRlbHkgd2hlbiB0aGUgc3RyZWFtIGlzIGNyZWF0ZWQsIHdlIG5lZWQgdG8gc2V0IGhpZ2hXYXRl
ck1hcmsgdG8gMC4KK2NvbnN0IGh3bTAgPSB7IGhpZ2hXYXRlck1hcms6IDAgfTsKKworZm9yIChj
b25zdCBpbnZhbGlkU2lnbmFsIG9mIFtudWxsLCAnQWJvcnRTaWduYWwnLCB0cnVlLCAtMSwgT2Jq
ZWN0LmNyZWF0ZShBYm9ydFNpZ25hbC5wcm90b3R5cGUpXSkgeworICBwcm9taXNlX3Rlc3QodCA9
PiB7CisgICAgY29uc3QgcnMgPSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbShlcnJvck9uUHVsbCwg
aHdtMCk7CisgICAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSgpOworICAgIHJl
dHVybiBwcm9taXNlX3JlamVjdHNfanModCwgVHlwZUVycm9yLCBycy5waXBlVG8od3MsIHsgc2ln
bmFsOiBpbnZhbGlkU2lnbmFsIH0pLCAncGlwZVRvIHNob3VsZCByZWplY3QnKQorICAgICAgICAu
dGhlbigoKSA9PiB7CisgICAgICAgICAgYXNzZXJ0X2VxdWFscyhycy5ldmVudHMubGVuZ3RoLCAw
LCAnbm8gUmVhZGFibGVTdHJlYW0gbWV0aG9kcyBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCcpOwor
ICAgICAgICAgIGFzc2VydF9lcXVhbHMod3MuZXZlbnRzLmxlbmd0aCwgMCwgJ25vIFdyaXRhYmxl
U3RyZWFtIG1ldGhvZHMgc2hvdWxkIGhhdmUgYmVlbiBjYWxsZWQnKTsKKyAgICAgICAgfSk7Cisg
IH0sIGBhIHNpZ25hbCBhcmd1bWVudCAnJHtpbnZhbGlkU2lnbmFsfScgc2hvdWxkIGNhdXNlIHBp
cGVUbygpIHRvIHJlamVjdGApOworfQorCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIGNvbnN0IHJz
ID0gcmVjb3JkaW5nUmVhZGFibGVTdHJlYW0oZXJyb3JPblB1bGwsIGh3bTApOworICBjb25zdCB3
cyA9IG5ldyBXcml0YWJsZVN0cmVhbSgpOworICBjb25zdCBhYm9ydENvbnRyb2xsZXIgPSBuZXcg
QWJvcnRDb250cm9sbGVyKCk7CisgIGNvbnN0IHNpZ25hbCA9IGFib3J0Q29udHJvbGxlci5zaWdu
YWw7CisgIGFib3J0Q29udHJvbGxlci5hYm9ydCgpOworICByZXR1cm4gcHJvbWlzZV9yZWplY3Rz
X2RvbSh0LCAnQWJvcnRFcnJvcicsIHJzLnBpcGVUbyh3cywgeyBzaWduYWwgfSksICdwaXBlVG8g
c2hvdWxkIHJlamVjdCcpCisgICAgICAudGhlbigoKSA9PiBQcm9taXNlLmFsbChbCisgICAgICAg
IHJzLmdldFJlYWRlcigpLmNsb3NlZCwKKyAgICAgICAgcHJvbWlzZV9yZWplY3RzX2RvbSh0LCAn
QWJvcnRFcnJvcicsIHdzLmdldFdyaXRlcigpLmNsb3NlZCwgJ3dyaXRlci5jbG9zZWQgc2hvdWxk
IHJlamVjdCcpCisgICAgICBdKSkKKyAgICAgIC50aGVuKCgpID0+IHsKKyAgICAgICAgYXNzZXJ0
X2VxdWFscyhycy5ldmVudHMubGVuZ3RoLCAyLCAnY2FuY2VsIHNob3VsZCBoYXZlIGJlZW4gY2Fs
bGVkJyk7CisgICAgICAgIGFzc2VydF9lcXVhbHMocnMuZXZlbnRzWzBdLCAnY2FuY2VsJywgJ2Zp
cnN0IGV2ZW50IHNob3VsZCBiZSBjYW5jZWwnKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhycy5l
dmVudHNbMV0ubmFtZSwgJ0Fib3J0RXJyb3InLCAndGhlIGFyZ3VtZW50IHRvIGNhbmNlbCBzaG91
bGQgYmUgYW4gQWJvcnRFcnJvcicpOworICAgICAgICBhc3NlcnRfZXF1YWxzKHJzLmV2ZW50c1sx
XS5jb25zdHJ1Y3Rvci5uYW1lLCAnRE9NRXhjZXB0aW9uJywKKyAgICAgICAgICAgICAgICAgICAg
ICAndGhlIGFyZ3VtZW50IHRvIGNhbmNlbCBzaG91bGQgYmUgYSBET01FeGNlcHRpb24nKTsKKyAg
ICAgIH0pOworfSwgJ2FuIGFib3J0ZWQgc2lnbmFsIHNob3VsZCBjYXVzZSB0aGUgd3JpdGFibGUg
c3RyZWFtIHRvIHJlamVjdCB3aXRoIGFuIEFib3J0RXJyb3InKTsKKworcHJvbWlzZV90ZXN0KCgp
ID0+IHsKKyAgbGV0IGVycm9yOworICBjb25zdCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFt
KGVycm9yT25QdWxsLCBod20wKTsKKyAgY29uc3Qgd3MgPSBuZXcgV3JpdGFibGVTdHJlYW0oKTsK
KyAgY29uc3QgYWJvcnRDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpOworICBjb25z
dCBzaWduYWwgPSBhYm9ydENvbnRyb2xsZXIuc2lnbmFsOworICBhYm9ydENvbnRyb2xsZXIuYWJv
cnQoKTsKKyAgcmV0dXJuIHJzLnBpcGVUbyh3cywgeyBzaWduYWwgfSkKKyAgICAgIC5jYXRjaChl
ID0+IHsKKyAgICAgICAgZXJyb3IgPSBlOworICAgICAgfSkKKyAgICAgIC50aGVuKCgpID0+IFBy
b21pc2UuYWxsKFsKKyAgICAgICAgcnMuZ2V0UmVhZGVyKCkuY2xvc2VkLAorICAgICAgICB3cy5n
ZXRXcml0ZXIoKS5jbG9zZWQuY2F0Y2goZSA9PiB7CisgICAgICAgICAgYXNzZXJ0X2VxdWFscyhl
LCBlcnJvciwgJ3RoZSB3cml0YWJsZSBzaG91bGQgYmUgZXJyb3JlZCB3aXRoIHRoZSBzYW1lIG9i
amVjdCcpOworICAgICAgICB9KQorICAgICAgXSkpCisgIC50aGVuKCgpID0+IHsKKyAgICBhc3Nl
cnRfZXF1YWxzKHJzLmV2ZW50cy5sZW5ndGgsIDIsICdjYW5jZWwgc2hvdWxkIGhhdmUgYmVlbiBj
YWxsZWQnKTsKKyAgICBhc3NlcnRfZXF1YWxzKHJzLmV2ZW50c1swXSwgJ2NhbmNlbCcsICdmaXJz
dCBldmVudCBzaG91bGQgYmUgY2FuY2VsJyk7CisgICAgYXNzZXJ0X2VxdWFscyhycy5ldmVudHNb
MV0sIGVycm9yLCAndGhlIHJlYWRhYmxlIHNob3VsZCBiZSBjYW5jZWxlZCB3aXRoIHRoZSBzYW1l
IG9iamVjdCcpOworICB9KTsKK30sICdhbGwgdGhlIEFib3J0RXJyb3Igb2JqZWN0cyBzaG91bGQg
YmUgdGhlIHNhbWUgb2JqZWN0Jyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgY29uc3QgcnMg
PSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbShlcnJvck9uUHVsbCwgaHdtMCk7CisgIGNvbnN0IHdz
ID0gbmV3IFdyaXRhYmxlU3RyZWFtKCk7CisgIGNvbnN0IGFib3J0Q29udHJvbGxlciA9IG5ldyBB
Ym9ydENvbnRyb2xsZXIoKTsKKyAgY29uc3Qgc2lnbmFsID0gYWJvcnRDb250cm9sbGVyLnNpZ25h
bDsKKyAgYWJvcnRDb250cm9sbGVyLmFib3J0KCk7CisgIHJldHVybiBwcm9taXNlX3JlamVjdHNf
ZG9tKHQsICdBYm9ydEVycm9yJywgcnMucGlwZVRvKHdzLCB7IHNpZ25hbCwgcHJldmVudENhbmNl
bDogdHJ1ZSB9KSwgJ3BpcGVUbyBzaG91bGQgcmVqZWN0JykKKyAgICAgIC50aGVuKCgpID0+IGFz
c2VydF9lcXVhbHMocnMuZXZlbnRzLmxlbmd0aCwgMCwgJ2NhbmNlbCBzaG91bGQgbm90IGJlIGNh
bGxlZCcpKTsKK30sICdwcmV2ZW50Q2FuY2VsIHNob3VsZCBwcmV2ZW50IGNhbmNlbGluZyB0aGUg
cmVhZGFibGUnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBjb25zdCBycyA9IG5ldyBSZWFk
YWJsZVN0cmVhbShlcnJvck9uUHVsbCwgaHdtMCk7CisgIGNvbnN0IHdzID0gcmVjb3JkaW5nV3Jp
dGFibGVTdHJlYW0oKTsKKyAgY29uc3QgYWJvcnRDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJv
bGxlcigpOworICBjb25zdCBzaWduYWwgPSBhYm9ydENvbnRyb2xsZXIuc2lnbmFsOworICBhYm9y
dENvbnRyb2xsZXIuYWJvcnQoKTsKKyAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19kb20odCwgJ0Fi
b3J0RXJyb3InLCBycy5waXBlVG8od3MsIHsgc2lnbmFsLCBwcmV2ZW50QWJvcnQ6IHRydWUgfSks
ICdwaXBlVG8gc2hvdWxkIHJlamVjdCcpCisgICAgICAudGhlbigoKSA9PiB7CisgICAgICAgIGFz
c2VydF9lcXVhbHMod3MuZXZlbnRzLmxlbmd0aCwgMCwgJ3dyaXRhYmxlIHNob3VsZCBub3QgaGF2
ZSBiZWVuIGFib3J0ZWQnKTsKKyAgICAgICAgcmV0dXJuIHdzLmdldFdyaXRlcigpLnJlYWR5Owor
ICAgICAgfSk7Cit9LCAncHJldmVudEFib3J0IHNob3VsZCBwcmV2ZW50IGFib3J0aW5nIHRoZSBy
ZWFkYWJsZScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIGNvbnN0IHJzID0gcmVjb3JkaW5n
UmVhZGFibGVTdHJlYW0oZXJyb3JPblB1bGwsIGh3bTApOworICBjb25zdCB3cyA9IHJlY29yZGlu
Z1dyaXRhYmxlU3RyZWFtKCk7CisgIGNvbnN0IGFib3J0Q29udHJvbGxlciA9IG5ldyBBYm9ydENv
bnRyb2xsZXIoKTsKKyAgY29uc3Qgc2lnbmFsID0gYWJvcnRDb250cm9sbGVyLnNpZ25hbDsKKyAg
YWJvcnRDb250cm9sbGVyLmFib3J0KCk7CisgIHJldHVybiBwcm9taXNlX3JlamVjdHNfZG9tKHQs
ICdBYm9ydEVycm9yJywgcnMucGlwZVRvKHdzLCB7IHNpZ25hbCwgcHJldmVudENhbmNlbDogdHJ1
ZSwgcHJldmVudEFib3J0OiB0cnVlIH0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICdwaXBl
VG8gc2hvdWxkIHJlamVjdCcpCisgICAgLnRoZW4oKCkgPT4geworICAgICAgYXNzZXJ0X2VxdWFs
cyhycy5ldmVudHMubGVuZ3RoLCAwLCAnY2FuY2VsIHNob3VsZCBub3QgYmUgY2FsbGVkJyk7Cisg
ICAgICBhc3NlcnRfZXF1YWxzKHdzLmV2ZW50cy5sZW5ndGgsIDAsICd3cml0YWJsZSBzaG91bGQg
bm90IGhhdmUgYmVlbiBhYm9ydGVkJyk7CisgICAgICByZXR1cm4gd3MuZ2V0V3JpdGVyKCkucmVh
ZHk7CisgICAgfSk7Cit9LCAncHJldmVudENhbmNlbCBhbmQgcHJldmVudEFib3J0IHNob3VsZCBw
cmV2ZW50IGNhbmNlbGluZyB0aGUgcmVhZGFibGUgYW5kIGFib3J0aW5nIHRoZSByZWFkYWJsZScp
OworCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFt
KHsKKyAgICBzdGFydChjb250cm9sbGVyKSB7CisgICAgICBjb250cm9sbGVyLmVucXVldWUoJ2En
KTsKKyAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYicpOworICAgICAgY29udHJvbGxlci5jbG9z
ZSgpOworICAgIH0KKyAgfSk7CisgIGNvbnN0IGFib3J0Q29udHJvbGxlciA9IG5ldyBBYm9ydENv
bnRyb2xsZXIoKTsKKyAgY29uc3Qgc2lnbmFsID0gYWJvcnRDb250cm9sbGVyLnNpZ25hbDsKKyAg
Y29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSh7CisgICAgd3JpdGUoKSB7CisgICAg
ICBhYm9ydENvbnRyb2xsZXIuYWJvcnQoKTsKKyAgICB9CisgIH0pOworICByZXR1cm4gcHJvbWlz
ZV9yZWplY3RzX2RvbSh0LCAnQWJvcnRFcnJvcicsIHJzLnBpcGVUbyh3cywgeyBzaWduYWwgfSks
ICdwaXBlVG8gc2hvdWxkIHJlamVjdCcpCisgICAgICAudGhlbigoKSA9PiB7CisgICAgICAgIGFz
c2VydF9lcXVhbHMod3MuZXZlbnRzLmxlbmd0aCwgNCwgJ29ubHkgY2h1bmsgImEiIHNob3VsZCBo
YXZlIGJlZW4gd3JpdHRlbicpOworICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50
cy5zbGljZSgwLCAzKSwgWyd3cml0ZScsICdhJywgJ2Fib3J0J10sICdldmVudHMgc2hvdWxkIG1h
dGNoJyk7CisgICAgICAgIGFzc2VydF9lcXVhbHMod3MuZXZlbnRzWzNdLm5hbWUsICdBYm9ydEVy
cm9yJywgJ2Fib3J0IHJlYXNvbiBzaG91bGQgYmUgYW4gQWJvcnRFcnJvcicpOworICAgICAgfSk7
Cit9LCAnYWJvcnQgc2hvdWxkIHByZXZlbnQgZnVydGhlciByZWFkcycpOworCitwcm9taXNlX3Rl
c3QodCA9PiB7CisgIGxldCByZWFkQ29udHJvbGxlcjsKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFi
bGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIHJlYWRDb250cm9sbGVyID0gYzsKKyAg
ICAgIGMuZW5xdWV1ZSgnYScpOworICAgICAgYy5lbnF1ZXVlKCdiJyk7CisgICAgfQorICB9KTsK
KyAgY29uc3QgYWJvcnRDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpOworICBjb25z
dCBzaWduYWwgPSBhYm9ydENvbnRyb2xsZXIuc2lnbmFsOworICBsZXQgcmVzb2x2ZVdyaXRlOwor
ICBjb25zdCB3cml0ZVByb21pc2UgPSBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKKyAgICByZXNv
bHZlV3JpdGUgPSByZXNvbHZlOworICB9KTsKKyAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJs
ZVN0cmVhbSh7CisgICAgd3JpdGUoKSB7CisgICAgICByZXR1cm4gd3JpdGVQcm9taXNlOworICAg
IH0KKyAgfSwgbmV3IENvdW50UXVldWluZ1N0cmF0ZWd5KHsgaGlnaFdhdGVyTWFyazogSW5maW5p
dHkgfSkpOworICBjb25zdCBwaXBlVG9Qcm9taXNlID0gcnMucGlwZVRvKHdzLCB7IHNpZ25hbCB9
KTsKKyAgcmV0dXJuIGRlbGF5KDApLnRoZW4oKCkgPT4geworICAgIGFib3J0Q29udHJvbGxlci5h
Ym9ydCgpOworICAgIHJlYWRDb250cm9sbGVyLmNsb3NlKCk7IC8vIE1ha2Ugc3VyZSB0aGUgdGVz
dCB0ZXJtaW5hdGVzIHdoZW4gc2lnbmFsIGlzIG5vdCBpbXBsZW1lbnRlZC4KKyAgICByZXNvbHZl
V3JpdGUoKTsKKyAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2RvbSh0LCAnQWJvcnRFcnJvcics
IHBpcGVUb1Byb21pc2UsICdwaXBlVG8gc2hvdWxkIHJlamVjdCcpOworICB9KS50aGVuKCgpID0+
IHsKKyAgICBhc3NlcnRfZXF1YWxzKHdzLmV2ZW50cy5sZW5ndGgsIDYsICdjaHVua3MgImEiIGFu
ZCAiYiIgc2hvdWxkIGhhdmUgYmVlbiB3cml0dGVuJyk7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFs
cyh3cy5ldmVudHMuc2xpY2UoMCwgNSksIFsnd3JpdGUnLCAnYScsICd3cml0ZScsICdiJywgJ2Fi
b3J0J10sICdldmVudHMgc2hvdWxkIG1hdGNoJyk7CisgICAgYXNzZXJ0X2VxdWFscyh3cy5ldmVu
dHNbNV0ubmFtZSwgJ0Fib3J0RXJyb3InLCAnYWJvcnQgcmVhc29uIHNob3VsZCBiZSBhbiBBYm9y
dEVycm9yJyk7CisgIH0pOworfSwgJ2FsbCBwZW5kaW5nIHdyaXRlcyBzaG91bGQgY29tcGxldGUg
b24gYWJvcnQnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBjb25zdCBycyA9IG5ldyBSZWFk
YWJsZVN0cmVhbSh7CisgICAgcHVsbChjb250cm9sbGVyKSB7CisgICAgICBjb250cm9sbGVyLmVy
cm9yKCdmYWlsZWQgdG8gYWJvcnQnKTsKKyAgICB9LAorICAgIGNhbmNlbCgpIHsKKyAgICAgIHJl
dHVybiBQcm9taXNlLnJlamVjdChlcnJvcjEpOworICAgIH0KKyAgfSwgaHdtMCk7CisgIGNvbnN0
IHdzID0gbmV3IFdyaXRhYmxlU3RyZWFtKCk7CisgIGNvbnN0IGFib3J0Q29udHJvbGxlciA9IG5l
dyBBYm9ydENvbnRyb2xsZXIoKTsKKyAgY29uc3Qgc2lnbmFsID0gYWJvcnRDb250cm9sbGVyLnNp
Z25hbDsKKyAgYWJvcnRDb250cm9sbGVyLmFib3J0KCk7CisgIHJldHVybiBwcm9taXNlX3JlamVj
dHNfZXhhY3RseSh0LCBlcnJvcjEsIHJzLnBpcGVUbyh3cywgeyBzaWduYWwgfSksICdwaXBlVG8g
c2hvdWxkIHJlamVjdCcpOworfSwgJ2EgcmVqZWN0aW9uIGZyb20gdW5kZXJseWluZ1NvdXJjZS5j
YW5jZWwoKSBzaG91bGQgYmUgcmV0dXJuZWQgYnkgcGlwZVRvKCknKTsKKworcHJvbWlzZV90ZXN0
KHQgPT4geworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbShlcnJvck9uUHVsbCwgaHdt
MCk7CisgIGNvbnN0IHdzID0gbmV3IFdyaXRhYmxlU3RyZWFtKHsKKyAgICBhYm9ydCgpIHsKKyAg
ICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcjEpOworICAgIH0KKyAgfSk7CisgIGNvbnN0
IGFib3J0Q29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTsKKyAgY29uc3Qgc2lnbmFs
ID0gYWJvcnRDb250cm9sbGVyLnNpZ25hbDsKKyAgYWJvcnRDb250cm9sbGVyLmFib3J0KCk7Cisg
IHJldHVybiBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIHJzLnBpcGVUbyh3cywg
eyBzaWduYWwgfSksICdwaXBlVG8gc2hvdWxkIHJlamVjdCcpOworfSwgJ2EgcmVqZWN0aW9uIGZy
b20gdW5kZXJseWluZ1NpbmsuYWJvcnQoKSBzaG91bGQgYmUgcmV0dXJuZWQgYnkgcGlwZVRvKCkn
KTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBjb25zdCBldmVudHMgPSBbXTsKKyAgY29uc3Qg
cnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHB1bGwoY29udHJvbGxlcikgeworICAgICAg
Y29udHJvbGxlci5lcnJvcignZmFpbGVkIHRvIGFib3J0Jyk7CisgICAgfSwKKyAgICBjYW5jZWwo
KSB7CisgICAgICBldmVudHMucHVzaCgnY2FuY2VsJyk7CisgICAgICByZXR1cm4gUHJvbWlzZS5y
ZWplY3QoZXJyb3IxKTsKKyAgICB9CisgIH0sIGh3bTApOworICBjb25zdCB3cyA9IG5ldyBXcml0
YWJsZVN0cmVhbSh7CisgICAgYWJvcnQoKSB7CisgICAgICBldmVudHMucHVzaCgnYWJvcnQnKTsK
KyAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcjIpOworICAgIH0KKyAgfSk7CisgIGNv
bnN0IGFib3J0Q29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTsKKyAgY29uc3Qgc2ln
bmFsID0gYWJvcnRDb250cm9sbGVyLnNpZ25hbDsKKyAgYWJvcnRDb250cm9sbGVyLmFib3J0KCk7
CisgIHJldHVybiBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjIsIHJzLnBpcGVUbyh3
cywgeyBzaWduYWwgfSksICdwaXBlVG8gc2hvdWxkIHJlamVjdCcpCisgICAgICAudGhlbigoKSA9
PiBhc3NlcnRfYXJyYXlfZXF1YWxzKGV2ZW50cywgWydhYm9ydCcsICdjYW5jZWwnXSwgJ2Fib3J0
KCkgc2hvdWxkIGJlIGNhbGxlZCBiZWZvcmUgY2FuY2VsKCknKSk7Cit9LCAnYSByZWplY3Rpb24g
ZnJvbSB1bmRlcmx5aW5nU2luay5hYm9ydCgpIHNob3VsZCBiZSBwcmVmZXJyZWQgdG8gb25lIGZy
b20gdW5kZXJseWluZ1NvdXJjZS5jYW5jZWwoKScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7Cisg
IGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjb250cm9sbGVyKSB7
CisgICAgICBjb250cm9sbGVyLmNsb3NlKCk7CisgICAgfQorICB9KTsKKyAgY29uc3Qgd3MgPSBu
ZXcgV3JpdGFibGVTdHJlYW0oKTsKKyAgY29uc3QgYWJvcnRDb250cm9sbGVyID0gbmV3IEFib3J0
Q29udHJvbGxlcigpOworICBjb25zdCBzaWduYWwgPSBhYm9ydENvbnRyb2xsZXIuc2lnbmFsOwor
ICBhYm9ydENvbnRyb2xsZXIuYWJvcnQoKTsKKyAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19kb20o
dCwgJ0Fib3J0RXJyb3InLCBycy5waXBlVG8od3MsIHsgc2lnbmFsIH0pLCAncGlwZVRvIHNob3Vs
ZCByZWplY3QnKTsKK30sICdhYm9ydCBzaWduYWwgdGFrZXMgcHJpb3JpdHkgb3ZlciBjbG9zZWQg
cmVhZGFibGUnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBjb25zdCBycyA9IG5ldyBSZWFk
YWJsZVN0cmVhbSh7CisgICAgc3RhcnQoY29udHJvbGxlcikgeworICAgICAgY29udHJvbGxlci5l
cnJvcihlcnJvcjEpOworICAgIH0KKyAgfSk7CisgIGNvbnN0IHdzID0gbmV3IFdyaXRhYmxlU3Ry
ZWFtKCk7CisgIGNvbnN0IGFib3J0Q29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTsK
KyAgY29uc3Qgc2lnbmFsID0gYWJvcnRDb250cm9sbGVyLnNpZ25hbDsKKyAgYWJvcnRDb250cm9s
bGVyLmFib3J0KCk7CisgIHJldHVybiBwcm9taXNlX3JlamVjdHNfZG9tKHQsICdBYm9ydEVycm9y
JywgcnMucGlwZVRvKHdzLCB7IHNpZ25hbCB9KSwgJ3BpcGVUbyBzaG91bGQgcmVqZWN0Jyk7Cit9
LCAnYWJvcnQgc2lnbmFsIHRha2VzIHByaW9yaXR5IG92ZXIgZXJyb3JlZCByZWFkYWJsZScpOwor
Citwcm9taXNlX3Rlc3QodCA9PiB7CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsK
KyAgICBwdWxsKGNvbnRyb2xsZXIpIHsKKyAgICAgIGNvbnRyb2xsZXIuZXJyb3IoJ2ZhaWxlZCB0
byBhYm9ydCcpOworICAgIH0KKyAgfSwgaHdtMCk7CisgIGNvbnN0IHdzID0gbmV3IFdyaXRhYmxl
U3RyZWFtKCk7CisgIGNvbnN0IGFib3J0Q29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIo
KTsKKyAgY29uc3Qgc2lnbmFsID0gYWJvcnRDb250cm9sbGVyLnNpZ25hbDsKKyAgYWJvcnRDb250
cm9sbGVyLmFib3J0KCk7CisgIGNvbnN0IHdyaXRlciA9IHdzLmdldFdyaXRlcigpOworICByZXR1
cm4gd3JpdGVyLmNsb3NlKCkudGhlbigoKSA9PiB7CisgICAgd3JpdGVyLnJlbGVhc2VMb2NrKCk7
CisgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19kb20odCwgJ0Fib3J0RXJyb3InLCBycy5waXBl
VG8od3MsIHsgc2lnbmFsIH0pLCAncGlwZVRvIHNob3VsZCByZWplY3QnKTsKKyAgfSk7Cit9LCAn
YWJvcnQgc2lnbmFsIHRha2VzIHByaW9yaXR5IG92ZXIgY2xvc2VkIHdyaXRhYmxlJyk7CisKK3By
b21pc2VfdGVzdCh0ID0+IHsKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAg
IHB1bGwoY29udHJvbGxlcikgeworICAgICAgY29udHJvbGxlci5lcnJvcignZmFpbGVkIHRvIGFi
b3J0Jyk7CisgICAgfQorICB9LCBod20wKTsKKyAgY29uc3Qgd3MgPSBuZXcgV3JpdGFibGVTdHJl
YW0oeworICAgIHN0YXJ0KGNvbnRyb2xsZXIpIHsKKyAgICAgIGNvbnRyb2xsZXIuZXJyb3IoZXJy
b3IxKTsKKyAgICB9CisgIH0pOworICBjb25zdCBhYm9ydENvbnRyb2xsZXIgPSBuZXcgQWJvcnRD
b250cm9sbGVyKCk7CisgIGNvbnN0IHNpZ25hbCA9IGFib3J0Q29udHJvbGxlci5zaWduYWw7Cisg
IGFib3J0Q29udHJvbGxlci5hYm9ydCgpOworICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2RvbSh0
LCAnQWJvcnRFcnJvcicsIHJzLnBpcGVUbyh3cywgeyBzaWduYWwgfSksICdwaXBlVG8gc2hvdWxk
IHJlamVjdCcpOworfSwgJ2Fib3J0IHNpZ25hbCB0YWtlcyBwcmlvcml0eSBvdmVyIGVycm9yZWQg
d3JpdGFibGUnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgbGV0IHJlYWRDb250cm9sbGVy
OworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAg
ICAgcmVhZENvbnRyb2xsZXIgPSBjOworICAgIH0KKyAgfSk7CisgIGNvbnN0IHdzID0gbmV3IFdy
aXRhYmxlU3RyZWFtKCk7CisgIGNvbnN0IGFib3J0Q29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRy
b2xsZXIoKTsKKyAgY29uc3Qgc2lnbmFsID0gYWJvcnRDb250cm9sbGVyLnNpZ25hbDsKKyAgY29u
c3QgcGlwZVRvUHJvbWlzZSA9IHJzLnBpcGVUbyh3cywgeyBzaWduYWwsIHByZXZlbnRDbG9zZTog
dHJ1ZSB9KTsKKyAgcmVhZENvbnRyb2xsZXIuY2xvc2UoKTsKKyAgcmV0dXJuIFByb21pc2UucmVz
b2x2ZSgpLnRoZW4oKCkgPT4geworICAgIGFib3J0Q29udHJvbGxlci5hYm9ydCgpOworICAgIHJl
dHVybiBwaXBlVG9Qcm9taXNlOworICB9KS50aGVuKCgpID0+IHdzLmdldFdyaXRlcigpLndyaXRl
KCd0aGlzIHNob3VsZCBzdWNjZWVkJykpOworfSwgJ2Fib3J0IHNob3VsZCBkbyBub3RoaW5nIGFm
dGVyIHRoZSByZWFkYWJsZSBpcyBjbG9zZWQnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBs
ZXQgcmVhZENvbnRyb2xsZXI7CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAg
ICBzdGFydChjKSB7CisgICAgICByZWFkQ29udHJvbGxlciA9IGM7CisgICAgfQorICB9KTsKKyAg
Y29uc3Qgd3MgPSBuZXcgV3JpdGFibGVTdHJlYW0oKTsKKyAgY29uc3QgYWJvcnRDb250cm9sbGVy
ID0gbmV3IEFib3J0Q29udHJvbGxlcigpOworICBjb25zdCBzaWduYWwgPSBhYm9ydENvbnRyb2xs
ZXIuc2lnbmFsOworICBjb25zdCBwaXBlVG9Qcm9taXNlID0gcnMucGlwZVRvKHdzLCB7IHNpZ25h
bCwgcHJldmVudEFib3J0OiB0cnVlIH0pOworICByZWFkQ29udHJvbGxlci5lcnJvcihlcnJvcjEp
OworICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiB7CisgICAgYWJvcnRDb250
cm9sbGVyLmFib3J0KCk7CisgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVy
cm9yMSwgcGlwZVRvUHJvbWlzZSwgJ3BpcGVUbyBzaG91bGQgcmVqZWN0Jyk7CisgIH0pLnRoZW4o
KCkgPT4gd3MuZ2V0V3JpdGVyKCkud3JpdGUoJ3RoaXMgc2hvdWxkIHN1Y2NlZWQnKSk7Cit9LCAn
YWJvcnQgc2hvdWxkIGRvIG5vdGhpbmcgYWZ0ZXIgdGhlIHJlYWRhYmxlIGlzIGVycm9yZWQnKTsK
KworcHJvbWlzZV90ZXN0KHQgPT4geworICBsZXQgcmVhZENvbnRyb2xsZXI7CisgIGNvbnN0IHJz
ID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICByZWFkQ29udHJv
bGxlciA9IGM7CisgICAgfQorICB9KTsKKyAgbGV0IHJlc29sdmVXcml0ZTsKKyAgY29uc3Qgd3Jp
dGVQcm9taXNlID0gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7CisgICAgcmVzb2x2ZVdyaXRlID0g
cmVzb2x2ZTsKKyAgfSk7CisgIGNvbnN0IHdzID0gbmV3IFdyaXRhYmxlU3RyZWFtKHsKKyAgICB3
cml0ZSgpIHsKKyAgICAgIHJlYWRDb250cm9sbGVyLmVycm9yKGVycm9yMSk7CisgICAgICByZXR1
cm4gd3JpdGVQcm9taXNlOworICAgIH0KKyAgfSk7CisgIGNvbnN0IGFib3J0Q29udHJvbGxlciA9
IG5ldyBBYm9ydENvbnRyb2xsZXIoKTsKKyAgY29uc3Qgc2lnbmFsID0gYWJvcnRDb250cm9sbGVy
LnNpZ25hbDsKKyAgY29uc3QgcGlwZVRvUHJvbWlzZSA9IHJzLnBpcGVUbyh3cywgeyBzaWduYWws
IHByZXZlbnRBYm9ydDogdHJ1ZSB9KTsKKyAgcmVhZENvbnRyb2xsZXIuZW5xdWV1ZSgnYScpOwor
ICByZXR1cm4gZGVsYXkoMCkudGhlbigoKSA9PiB7CisgICAgYWJvcnRDb250cm9sbGVyLmFib3J0
KCk7CisgICAgcmVzb2x2ZVdyaXRlKCk7CisgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19leGFj
dGx5KHQsIGVycm9yMSwgcGlwZVRvUHJvbWlzZSwgJ3BpcGVUbyBzaG91bGQgcmVqZWN0Jyk7Cisg
IH0pLnRoZW4oKCkgPT4gd3MuZ2V0V3JpdGVyKCkud3JpdGUoJ3RoaXMgc2hvdWxkIHN1Y2NlZWQn
KSk7Cit9LCAnYWJvcnQgc2hvdWxkIGRvIG5vdGhpbmcgYWZ0ZXIgdGhlIHJlYWRhYmxlIGlzIGVy
cm9yZWQsIGV2ZW4gd2l0aCBwZW5kaW5nIHdyaXRlcycpOworCitwcm9taXNlX3Rlc3QodCA9PiB7
CisgIGNvbnN0IHJzID0gcmVjb3JkaW5nUmVhZGFibGVTdHJlYW0oeworICAgIHB1bGwoY29udHJv
bGxlcikgeworICAgICAgcmV0dXJuIGRlbGF5KDApLnRoZW4oKCkgPT4gY29udHJvbGxlci5jbG9z
ZSgpKTsKKyAgICB9CisgIH0pOworICBsZXQgd3JpdGVDb250cm9sbGVyOworICBjb25zdCB3cyA9
IG5ldyBXcml0YWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgd3JpdGVDb250cm9s
bGVyID0gYzsKKyAgICB9CisgIH0pOworICBjb25zdCBhYm9ydENvbnRyb2xsZXIgPSBuZXcgQWJv
cnRDb250cm9sbGVyKCk7CisgIGNvbnN0IHNpZ25hbCA9IGFib3J0Q29udHJvbGxlci5zaWduYWw7
CisgIGNvbnN0IHBpcGVUb1Byb21pc2UgPSBycy5waXBlVG8od3MsIHsgc2lnbmFsLCBwcmV2ZW50
Q2FuY2VsOiB0cnVlIH0pOworICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiB7
CisgICAgd3JpdGVDb250cm9sbGVyLmVycm9yKGVycm9yMSk7CisgICAgcmV0dXJuIFByb21pc2Uu
cmVzb2x2ZSgpOworICB9KS50aGVuKCgpID0+IHsKKyAgICBhYm9ydENvbnRyb2xsZXIuYWJvcnQo
KTsKKyAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCBwaXBlVG9Q
cm9taXNlLCAncGlwZVRvIHNob3VsZCByZWplY3QnKTsKKyAgfSkudGhlbigoKSA9PiB7CisgICAg
YXNzZXJ0X2FycmF5X2VxdWFscyhycy5ldmVudHMsIFsncHVsbCddLCAnY2FuY2VsIHNob3VsZCBu
b3QgaGF2ZSBiZWVuIGNhbGxlZCcpOworICB9KTsKK30sICdhYm9ydCBzaG91bGQgZG8gbm90aGlu
ZyBhZnRlciB0aGUgd3JpdGFibGUgaXMgZXJyb3JlZCcpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9hYm9ydC5h
bnkud29ya2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvYWJvcnQuYW55Lndvcmtlci1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNjVmNzZiZTE3ODFmNjI2MWYxNjc0OThlYTFmMjUwZTQ0NThjNzMxNgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy9waXBpbmcvYWJvcnQuYW55Lndvcmtlci1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwyNSBAQAorCitGQUlMIGEgc2lnbmFsIGFyZ3VtZW50ICdudWxsJyBzaG91bGQgY2F1c2UgcGlw
ZVRvKCkgdG8gcmVqZWN0IENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlM
IGEgc2lnbmFsIGFyZ3VtZW50ICdBYm9ydFNpZ25hbCcgc2hvdWxkIGNhdXNlIHBpcGVUbygpIHRv
IHJlamVjdCBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBhIHNpZ25h
bCBhcmd1bWVudCAndHJ1ZScgc2hvdWxkIGNhdXNlIHBpcGVUbygpIHRvIHJlamVjdCBDYW4ndCBm
aW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBhIHNpZ25hbCBhcmd1bWVudCAnLTEn
IHNob3VsZCBjYXVzZSBwaXBlVG8oKSB0byByZWplY3QgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3Jp
dGFibGVTdHJlYW0KK0ZBSUwgYSBzaWduYWwgYXJndW1lbnQgJ1tvYmplY3QgQWJvcnRTaWduYWxd
JyBzaG91bGQgY2F1c2UgcGlwZVRvKCkgdG8gcmVqZWN0IENhbid0IGZpbmQgdmFyaWFibGU6IFdy
aXRhYmxlU3RyZWFtCitGQUlMIGFuIGFib3J0ZWQgc2lnbmFsIHNob3VsZCBjYXVzZSB0aGUgd3Jp
dGFibGUgc3RyZWFtIHRvIHJlamVjdCB3aXRoIGFuIEFib3J0RXJyb3IgQ2FuJ3QgZmluZCB2YXJp
YWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgYWxsIHRoZSBBYm9ydEVycm9yIG9iamVjdHMgc2hv
dWxkIGJlIHRoZSBzYW1lIG9iamVjdCBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVh
bQorRkFJTCBwcmV2ZW50Q2FuY2VsIHNob3VsZCBwcmV2ZW50IGNhbmNlbGluZyB0aGUgcmVhZGFi
bGUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgcHJldmVudEFib3J0
IHNob3VsZCBwcmV2ZW50IGFib3J0aW5nIHRoZSByZWFkYWJsZSBDYW4ndCBmaW5kIHZhcmlhYmxl
OiBXcml0YWJsZVN0cmVhbQorRkFJTCBwcmV2ZW50Q2FuY2VsIGFuZCBwcmV2ZW50QWJvcnQgc2hv
dWxkIHByZXZlbnQgY2FuY2VsaW5nIHRoZSByZWFkYWJsZSBhbmQgYWJvcnRpbmcgdGhlIHJlYWRh
YmxlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIGFib3J0IHNob3Vs
ZCBwcmV2ZW50IGZ1cnRoZXIgcmVhZHMgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJl
YW0KK0ZBSUwgYWxsIHBlbmRpbmcgd3JpdGVzIHNob3VsZCBjb21wbGV0ZSBvbiBhYm9ydCBDYW4n
dCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBhIHJlamVjdGlvbiBmcm9tIHVu
ZGVybHlpbmdTb3VyY2UuY2FuY2VsKCkgc2hvdWxkIGJlIHJldHVybmVkIGJ5IHBpcGVUbygpIENh
bid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIGEgcmVqZWN0aW9uIGZyb20g
dW5kZXJseWluZ1NpbmsuYWJvcnQoKSBzaG91bGQgYmUgcmV0dXJuZWQgYnkgcGlwZVRvKCkgQ2Fu
J3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgYSByZWplY3Rpb24gZnJvbSB1
bmRlcmx5aW5nU2luay5hYm9ydCgpIHNob3VsZCBiZSBwcmVmZXJyZWQgdG8gb25lIGZyb20gdW5k
ZXJseWluZ1NvdXJjZS5jYW5jZWwoKSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVh
bQorRkFJTCBhYm9ydCBzaWduYWwgdGFrZXMgcHJpb3JpdHkgb3ZlciBjbG9zZWQgcmVhZGFibGUg
Q2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgYWJvcnQgc2lnbmFsIHRh
a2VzIHByaW9yaXR5IG92ZXIgZXJyb3JlZCByZWFkYWJsZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBX
cml0YWJsZVN0cmVhbQorRkFJTCBhYm9ydCBzaWduYWwgdGFrZXMgcHJpb3JpdHkgb3ZlciBjbG9z
ZWQgd3JpdGFibGUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgYWJv
cnQgc2lnbmFsIHRha2VzIHByaW9yaXR5IG92ZXIgZXJyb3JlZCB3cml0YWJsZSBDYW4ndCBmaW5k
IHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBhYm9ydCBzaG91bGQgZG8gbm90aGluZyBh
ZnRlciB0aGUgcmVhZGFibGUgaXMgY2xvc2VkIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxl
U3RyZWFtCitGQUlMIGFib3J0IHNob3VsZCBkbyBub3RoaW5nIGFmdGVyIHRoZSByZWFkYWJsZSBp
cyBlcnJvcmVkIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIGFib3J0
IHNob3VsZCBkbyBub3RoaW5nIGFmdGVyIHRoZSByZWFkYWJsZSBpcyBlcnJvcmVkLCBldmVuIHdp
dGggcGVuZGluZyB3cml0ZXMgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZB
SUwgYWJvcnQgc2hvdWxkIGRvIG5vdGhpbmcgYWZ0ZXIgdGhlIHdyaXRhYmxlIGlzIGVycm9yZWQg
Q2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9hYm9y
dC5hbnkud29ya2VyLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Fib3J0LmFueS53b3JrZXIuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4y
MzgyOTEzNTI4ZTY5M2IzYTVkNTZjNjYwYTQ1MDYwOTgwYjU0OGMzCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3Bp
cGluZy9hYm9ydC5hbnkud29ya2VyLmh0bWwKQEAgLTAsMCArMSBAQAorPCEtLSBUaGlzIGZpbGUg
aXMgcmVxdWlyZWQgZm9yIFdlYktpdCB0ZXN0IGluZnJhc3RydWN0dXJlIHRvIHJ1biB0aGUgdGVt
cGxhdGVkIHRlc3QgLS0+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGlu
Zy9jbG9zZS1wcm9wYWdhdGlvbi1iYWNrd2FyZC5hbnktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9jbG9zZS1w
cm9wYWdhdGlvbi1iYWNrd2FyZC5hbnktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZhYTljYjQw
N2E4NzU5NmYzZDFhM2YxOGMzY2JiMTdlYTkwOWE3ODIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Ns
b3NlLXByb3BhZ2F0aW9uLWJhY2t3YXJkLmFueS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxOCBA
QAorCitGQUlMIENsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBzdGFydHMgY2xv
c2VkOyBwcmV2ZW50Q2FuY2VsIG9taXR0ZWQ7IGZ1bGZpbGxlZCBjYW5jZWwgcHJvbWlzZSB3cy5n
ZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3JpdGVyKCknLCAnd3MuZ2V0
V3JpdGVyJyBpcyB1bmRlZmluZWQpCitGQUlMIENsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGJh
Y2t3YXJkOiBzdGFydHMgY2xvc2VkOyBwcmV2ZW50Q2FuY2VsIG9taXR0ZWQ7IHJlamVjdGVkIGNh
bmNlbCBwcm9taXNlIHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRX
cml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkKK0ZBSUwgQ2xvc2luZyBtdXN0
IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IHN0YXJ0cyBjbG9zZWQ7IHByZXZlbnRDYW5jZWwgPSB1
bmRlZmluZWQgKGZhbHN5KTsgZnVsZmlsbGVkIGNhbmNlbCBwcm9taXNlIHdzLmdldFdyaXRlciBp
cyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlz
IHVuZGVmaW5lZCkKK0ZBSUwgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IHN0
YXJ0cyBjbG9zZWQ7IHByZXZlbnRDYW5jZWwgPSBudWxsIChmYWxzeSk7IGZ1bGZpbGxlZCBjYW5j
ZWwgcHJvbWlzZSB3cy5nZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3Jp
dGVyKCknLCAnd3MuZ2V0V3JpdGVyJyBpcyB1bmRlZmluZWQpCitGQUlMIENsb3NpbmcgbXVzdCBi
ZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBzdGFydHMgY2xvc2VkOyBwcmV2ZW50Q2FuY2VsID0gZmFs
c2UgKGZhbHN5KTsgZnVsZmlsbGVkIGNhbmNlbCBwcm9taXNlIHdzLmdldFdyaXRlciBpcyBub3Qg
YSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVm
aW5lZCkKK0ZBSUwgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IHN0YXJ0cyBj
bG9zZWQ7IHByZXZlbnRDYW5jZWwgPSAwIChmYWxzeSk7IGZ1bGZpbGxlZCBjYW5jZWwgcHJvbWlz
ZSB3cy5nZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3JpdGVyKCknLCAn
d3MuZ2V0V3JpdGVyJyBpcyB1bmRlZmluZWQpCitGQUlMIENsb3NpbmcgbXVzdCBiZSBwcm9wYWdh
dGVkIGJhY2t3YXJkOiBzdGFydHMgY2xvc2VkOyBwcmV2ZW50Q2FuY2VsID0gLTAgKGZhbHN5KTsg
ZnVsZmlsbGVkIGNhbmNlbCBwcm9taXNlIHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4g
KEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkKK0ZBSUwg
Q2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IHN0YXJ0cyBjbG9zZWQ7IHByZXZl
bnRDYW5jZWwgPSBOYU4gKGZhbHN5KTsgZnVsZmlsbGVkIGNhbmNlbCBwcm9taXNlIHdzLmdldFdy
aXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0
ZXInIGlzIHVuZGVmaW5lZCkKK0ZBSUwgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dh
cmQ6IHN0YXJ0cyBjbG9zZWQ7IHByZXZlbnRDYW5jZWwgPSAgKGZhbHN5KTsgZnVsZmlsbGVkIGNh
bmNlbCBwcm9taXNlIHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRX
cml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkKK0ZBSUwgQ2xvc2luZyBtdXN0
IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IHN0YXJ0cyBjbG9zZWQ7IHByZXZlbnRDYW5jZWwgPSB0
cnVlICh0cnV0aHkpIHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRX
cml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkKK0ZBSUwgQ2xvc2luZyBtdXN0
IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IHN0YXJ0cyBjbG9zZWQ7IHByZXZlbnRDYW5jZWwgPSBh
ICh0cnV0aHkpIHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0
ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkKK0ZBSUwgQ2xvc2luZyBtdXN0IGJl
IHByb3BhZ2F0ZWQgYmFja3dhcmQ6IHN0YXJ0cyBjbG9zZWQ7IHByZXZlbnRDYW5jZWwgPSAxICh0
cnV0aHkpIHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0ZXIo
KScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkKK0ZBSUwgQ2xvc2luZyBtdXN0IGJlIHBy
b3BhZ2F0ZWQgYmFja3dhcmQ6IHN0YXJ0cyBjbG9zZWQ7IHByZXZlbnRDYW5jZWwgPSBTeW1ib2wo
KSAodHJ1dGh5KSB3cy5nZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3Jp
dGVyKCknLCAnd3MuZ2V0V3JpdGVyJyBpcyB1bmRlZmluZWQpCitGQUlMIENsb3NpbmcgbXVzdCBi
ZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBzdGFydHMgY2xvc2VkOyBwcmV2ZW50Q2FuY2VsID0gW29i
amVjdCBPYmplY3RdICh0cnV0aHkpIHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKElu
ICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkKK0ZBSUwgQ2xv
c2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IHN0YXJ0cyBjbG9zZWQ7IHByZXZlbnRD
YW5jZWwgPSB0cnVlLCBwcmV2ZW50QWJvcnQgPSB0cnVlIHdzLmdldFdyaXRlciBpcyBub3QgYSBm
dW5jdGlvbi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5l
ZCkKK0ZBSUwgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IHN0YXJ0cyBjbG9z
ZWQ7IHByZXZlbnRDYW5jZWwgPSB0cnVlLCBwcmV2ZW50QWJvcnQgPSB0cnVlLCBwcmV2ZW50Q2xv
c2UgPSB0cnVlIHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0
ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9jbG9z
ZS1wcm9wYWdhdGlvbi1iYWNrd2FyZC5hbnkuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvY2xvc2UtcHJvcGFnYXRpb24tYmFj
a3dhcmQuYW55Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjM4MjkxMzUyOGU2OTNiM2E1ZDU2YzY2MGE0NTA2
MDk4MGI1NDhjMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvY2xvc2UtcHJvcGFnYXRpb24tYmFja3dh
cmQuYW55Lmh0bWwKQEAgLTAsMCArMSBAQAorPCEtLSBUaGlzIGZpbGUgaXMgcmVxdWlyZWQgZm9y
IFdlYktpdCB0ZXN0IGluZnJhc3RydWN0dXJlIHRvIHJ1biB0aGUgdGVtcGxhdGVkIHRlc3QgLS0+
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9jbG9zZS1wcm9wYWdh
dGlvbi1iYWNrd2FyZC5hbnkuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Nsb3NlLXByb3BhZ2F0aW9uLWJhY2t3YXJkLmFueS5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5iZDFlOWNiOTI2NTdiMTQwMmNjMDZjYzdmMTU5MzQyOWFkOTYyMzBjCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL3BpcGluZy9jbG9zZS1wcm9wYWdhdGlvbi1iYWNrd2FyZC5hbnkuanMKQEAg
LTAsMCArMSwxNTMgQEAKKy8vIE1FVEE6IGdsb2JhbD13aW5kb3csd29ya2VyLGpzc2hlbGwKKy8v
IE1FVEE6IHNjcmlwdD0uLi9yZXNvdXJjZXMvcmVjb3JkaW5nLXN0cmVhbXMuanMKKyd1c2Ugc3Ry
aWN0JzsKKworY29uc3QgZXJyb3IxID0gbmV3IEVycm9yKCdlcnJvcjEhJyk7CitlcnJvcjEubmFt
ZSA9ICdlcnJvcjEnOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworCisgIGNvbnN0IHJzID0gcmVj
b3JkaW5nUmVhZGFibGVTdHJlYW0oKTsKKworICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxl
U3RyZWFtKCk7CisgIGNvbnN0IHdyaXRlciA9IHdzLmdldFdyaXRlcigpOworICB3cml0ZXIuY2xv
c2UoKTsKKyAgd3JpdGVyLnJlbGVhc2VMb2NrKCk7CisKKyAgcmV0dXJuIHJzLnBpcGVUbyh3cyku
dGhlbigKKyAgICAoKSA9PiBhc3NlcnRfdW5yZWFjaGVkKCd0aGUgcHJvbWlzZSBtdXN0IG5vdCBm
dWxmaWxsJyksCisgICAgZXJyID0+IHsKKyAgICAgIGFzc2VydF9lcXVhbHMoZXJyLm5hbWUsICdU
eXBlRXJyb3InLCAndGhlIHByb21pc2UgbXVzdCByZWplY3Qgd2l0aCBhIFR5cGVFcnJvcicpOwor
CisgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJzLmV2ZW50c1dpdGhvdXRQdWxscywgWydjYW5j
ZWwnLCBlcnJdKTsKKyAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ2Nsb3Nl
J10pOworCisgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAgICAgICBycy5nZXRSZWFkZXIo
KS5jbG9zZWQsCisgICAgICAgIHdzLmdldFdyaXRlcigpLmNsb3NlZAorICAgICAgXSk7CisgICAg
fQorICApOworCit9LCAnQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IHN0YXJ0
cyBjbG9zZWQ7IHByZXZlbnRDYW5jZWwgb21pdHRlZDsgZnVsZmlsbGVkIGNhbmNlbCBwcm9taXNl
Jyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKworICAvLyBPdXIgcmVjb3JkaW5nIHN0cmVhbXMg
ZG8gbm90IGRlYWwgd2VsbCB3aXRoIGVycm9ycyBnZW5lcmF0ZWQgYnkgdGhlIHN5c3RlbSwgc28g
Z2l2ZSB0aGVtIHNvbWUgaGVscAorICBsZXQgcmVjb3JkZWRFcnJvcjsKKyAgY29uc3QgcnMgPSBy
ZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSh7CisgICAgY2FuY2VsKGNhbmNlbEVycikgeworICAgICAg
cmVjb3JkZWRFcnJvciA9IGNhbmNlbEVycjsKKyAgICAgIHRocm93IGVycm9yMTsKKyAgICB9Cisg
IH0pOworCisgIGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0oKTsKKyAgY29uc3Qg
d3JpdGVyID0gd3MuZ2V0V3JpdGVyKCk7CisgIHdyaXRlci5jbG9zZSgpOworICB3cml0ZXIucmVs
ZWFzZUxvY2soKTsKKworICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3Ix
LCBycy5waXBlVG8od3MpLCAncGlwZVRvIG11c3QgcmVqZWN0IHdpdGggdGhlIHNhbWUgZXJyb3In
KS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfZXF1YWxzKHJlY29yZGVkRXJyb3IubmFtZSwgJ1R5
cGVFcnJvcicsICd0aGUgY2FuY2VsIHJlYXNvbiBtdXN0IGJlIGEgVHlwZUVycm9yJyk7CisKKyAg
ICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJzLmV2ZW50c1dpdGhvdXRQdWxscywgWydjYW5jZWwnLCBy
ZWNvcmRlZEVycm9yXSk7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsnY2xv
c2UnXSk7CisKKyAgICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAgICAgcnMuZ2V0UmVhZGVyKCku
Y2xvc2VkLAorICAgICAgd3MuZ2V0V3JpdGVyKCkuY2xvc2VkCisgICAgXSk7CisgIH0pOworCit9
LCAnQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IHN0YXJ0cyBjbG9zZWQ7IHBy
ZXZlbnRDYW5jZWwgb21pdHRlZDsgcmVqZWN0ZWQgY2FuY2VsIHByb21pc2UnKTsKKworZm9yIChj
b25zdCBmYWxzeSBvZiBbdW5kZWZpbmVkLCBudWxsLCBmYWxzZSwgKzAsIC0wLCBOYU4sICcnXSkg
eworICBjb25zdCBzdHJpbmdWZXJzaW9uID0gT2JqZWN0LmlzKGZhbHN5LCAtMCkgPyAnLTAnIDog
U3RyaW5nKGZhbHN5KTsKKworICBwcm9taXNlX3Rlc3QoKCkgPT4geworCisgICAgY29uc3QgcnMg
PSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSgpOworCisgICAgY29uc3Qgd3MgPSByZWNvcmRpbmdX
cml0YWJsZVN0cmVhbSgpOworICAgIGNvbnN0IHdyaXRlciA9IHdzLmdldFdyaXRlcigpOworICAg
IHdyaXRlci5jbG9zZSgpOworICAgIHdyaXRlci5yZWxlYXNlTG9jaygpOworCisgICAgcmV0dXJu
IHJzLnBpcGVUbyh3cywgeyBwcmV2ZW50Q2FuY2VsOiBmYWxzeSB9KS50aGVuKAorICAgICAgKCkg
PT4gYXNzZXJ0X3VucmVhY2hlZCgndGhlIHByb21pc2UgbXVzdCBub3QgZnVsZmlsbCcpLAorICAg
ICAgZXJyID0+IHsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhlcnIubmFtZSwgJ1R5cGVFcnJvcics
ICd0aGUgcHJvbWlzZSBtdXN0IHJlamVjdCB3aXRoIGEgVHlwZUVycm9yJyk7CisKKyAgICAgICAg
YXNzZXJ0X2FycmF5X2VxdWFscyhycy5ldmVudHNXaXRob3V0UHVsbHMsIFsnY2FuY2VsJywgZXJy
XSk7CisgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ2Nsb3NlJ10pOwor
CisgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAgICAgICAgcnMuZ2V0UmVhZGVyKCku
Y2xvc2VkLAorICAgICAgICAgIHdzLmdldFdyaXRlcigpLmNsb3NlZAorICAgICAgICBdKTsKKyAg
ICAgIH0KKyAgICApOworCisgIH0sIGBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2Fy
ZDogc3RhcnRzIGNsb3NlZDsgcHJldmVudENhbmNlbCA9ICR7c3RyaW5nVmVyc2lvbn0gKGZhbHN5
KTsgZnVsZmlsbGVkIGNhbmNlbCBgICsKKyAgICAgYHByb21pc2VgKTsKK30KKworZm9yIChjb25z
dCB0cnV0aHkgb2YgW3RydWUsICdhJywgMSwgU3ltYm9sKCksIHsgfV0pIHsKKyAgcHJvbWlzZV90
ZXN0KHQgPT4geworCisgICAgY29uc3QgcnMgPSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSgpOwor
CisgICAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSgpOworICAgIGNvbnN0IHdy
aXRlciA9IHdzLmdldFdyaXRlcigpOworICAgIHdyaXRlci5jbG9zZSgpOworICAgIHdyaXRlci5y
ZWxlYXNlTG9jaygpOworCisgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19qcyh0LCBUeXBlRXJy
b3IsIHJzLnBpcGVUbyh3cywgeyBwcmV2ZW50Q2FuY2VsOiB0cnV0aHkgfSkpLnRoZW4oKCkgPT4g
eworICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhycy5ldmVudHNXaXRob3V0UHVsbHMsIFtdKTsK
KyAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ2Nsb3NlJ10pOworCisgICAg
ICByZXR1cm4gd3MuZ2V0V3JpdGVyKCkuY2xvc2VkOworICAgIH0pOworCisgIH0sIGBDbG9zaW5n
IG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogc3RhcnRzIGNsb3NlZDsgcHJldmVudENhbmNl
bCA9ICR7U3RyaW5nKHRydXRoeSl9ICh0cnV0aHkpYCk7Cit9CisKK3Byb21pc2VfdGVzdCh0ID0+
IHsKKworICBjb25zdCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKCk7CisKKyAgY29uc3Qg
d3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSgpOworICBjb25zdCB3cml0ZXIgPSB3cy5nZXRX
cml0ZXIoKTsKKyAgd3JpdGVyLmNsb3NlKCk7CisgIHdyaXRlci5yZWxlYXNlTG9jaygpOworCisg
IHJldHVybiBwcm9taXNlX3JlamVjdHNfanModCwgVHlwZUVycm9yLCBycy5waXBlVG8od3MsIHsg
cHJldmVudENhbmNlbDogdHJ1ZSwgcHJldmVudEFib3J0OiB0cnVlIH0pKQorICAgIC50aGVuKCgp
ID0+IHsKKyAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMocnMuZXZlbnRzV2l0aG91dFB1bGxzLCBb
XSk7CisgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWydjbG9zZSddKTsKKwor
ICAgICAgcmV0dXJuIHdzLmdldFdyaXRlcigpLmNsb3NlZDsKKyAgICB9KTsKKworfSwgJ0Nsb3Np
bmcgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBzdGFydHMgY2xvc2VkOyBwcmV2ZW50Q2Fu
Y2VsID0gdHJ1ZSwgcHJldmVudEFib3J0ID0gdHJ1ZScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7
CisKKyAgY29uc3QgcnMgPSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSgpOworCisgIGNvbnN0IHdz
ID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0oKTsKKyAgY29uc3Qgd3JpdGVyID0gd3MuZ2V0V3Jp
dGVyKCk7CisgIHdyaXRlci5jbG9zZSgpOworICB3cml0ZXIucmVsZWFzZUxvY2soKTsKKworICBy
ZXR1cm4gcHJvbWlzZV9yZWplY3RzX2pzKHQsIFR5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICBycy5waXBlVG8od3MsIHsgcHJldmVudENhbmNlbDogdHJ1ZSwgcHJldmVudEFib3J0
OiB0cnVlLCBwcmV2ZW50Q2xvc2U6IHRydWUgfSkpCisgIC50aGVuKCgpID0+IHsKKyAgICBhc3Nl
cnRfYXJyYXlfZXF1YWxzKHJzLmV2ZW50c1dpdGhvdXRQdWxscywgW10pOworICAgIGFzc2VydF9h
cnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ2Nsb3NlJ10pOworCisgICAgcmV0dXJuIHdzLmdldFdy
aXRlcigpLmNsb3NlZDsKKyAgfSk7CisKK30sICdDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBi
YWNrd2FyZDogc3RhcnRzIGNsb3NlZDsgcHJldmVudENhbmNlbCA9IHRydWUsIHByZXZlbnRBYm9y
dCA9IHRydWUsIHByZXZlbnRDbG9zZSAnICsKKyAgICc9IHRydWUnKTsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcv
Y2xvc2UtcHJvcGFnYXRpb24tYmFja3dhcmQuYW55Lndvcmtlci1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Ns
b3NlLXByb3BhZ2F0aW9uLWJhY2t3YXJkLmFueS53b3JrZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjAwMDgxYmExYmZjYmIzOTliOGQzNmU1MTA4ZjU0ZWI5OGU3ZDkwNWYKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvcGlwaW5nL2Nsb3NlLXByb3BhZ2F0aW9uLWJhY2t3YXJkLmFueS53b3JrZXItZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMTggQEAKKworRkFJTCBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBi
YWNrd2FyZDogc3RhcnRzIGNsb3NlZDsgcHJldmVudENhbmNlbCBvbWl0dGVkOyBmdWxmaWxsZWQg
Y2FuY2VsIHByb21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwg
Q2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IHN0YXJ0cyBjbG9zZWQ7IHByZXZl
bnRDYW5jZWwgb21pdHRlZDsgcmVqZWN0ZWQgY2FuY2VsIHByb21pc2UgQ2FuJ3QgZmluZCB2YXJp
YWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFj
a3dhcmQ6IHN0YXJ0cyBjbG9zZWQ7IHByZXZlbnRDYW5jZWwgPSB1bmRlZmluZWQgKGZhbHN5KTsg
ZnVsZmlsbGVkIGNhbmNlbCBwcm9taXNlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3Ry
ZWFtCitGQUlMIENsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBzdGFydHMgY2xv
c2VkOyBwcmV2ZW50Q2FuY2VsID0gbnVsbCAoZmFsc3kpOyBmdWxmaWxsZWQgY2FuY2VsIHByb21p
c2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgQ2xvc2luZyBtdXN0
IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IHN0YXJ0cyBjbG9zZWQ7IHByZXZlbnRDYW5jZWwgPSBm
YWxzZSAoZmFsc3kpOyBmdWxmaWxsZWQgY2FuY2VsIHByb21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJs
ZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dh
cmQ6IHN0YXJ0cyBjbG9zZWQ7IHByZXZlbnRDYW5jZWwgPSAwIChmYWxzeSk7IGZ1bGZpbGxlZCBj
YW5jZWwgcHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBD
bG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogc3RhcnRzIGNsb3NlZDsgcHJldmVu
dENhbmNlbCA9IC0wIChmYWxzeSk7IGZ1bGZpbGxlZCBjYW5jZWwgcHJvbWlzZSBDYW4ndCBmaW5k
IHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRl
ZCBiYWNrd2FyZDogc3RhcnRzIGNsb3NlZDsgcHJldmVudENhbmNlbCA9IE5hTiAoZmFsc3kpOyBm
dWxmaWxsZWQgY2FuY2VsIHByb21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJl
YW0KK0ZBSUwgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IHN0YXJ0cyBjbG9z
ZWQ7IHByZXZlbnRDYW5jZWwgPSAgKGZhbHN5KTsgZnVsZmlsbGVkIGNhbmNlbCBwcm9taXNlIENh
bid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIENsb3NpbmcgbXVzdCBiZSBw
cm9wYWdhdGVkIGJhY2t3YXJkOiBzdGFydHMgY2xvc2VkOyBwcmV2ZW50Q2FuY2VsID0gdHJ1ZSAo
dHJ1dGh5KSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBDbG9zaW5n
IG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogc3RhcnRzIGNsb3NlZDsgcHJldmVudENhbmNl
bCA9IGEgKHRydXRoeSkgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwg
Q2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IHN0YXJ0cyBjbG9zZWQ7IHByZXZl
bnRDYW5jZWwgPSAxICh0cnV0aHkpIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFt
CitGQUlMIENsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBzdGFydHMgY2xvc2Vk
OyBwcmV2ZW50Q2FuY2VsID0gU3ltYm9sKCkgKHRydXRoeSkgQ2FuJ3QgZmluZCB2YXJpYWJsZTog
V3JpdGFibGVTdHJlYW0KK0ZBSUwgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6
IHN0YXJ0cyBjbG9zZWQ7IHByZXZlbnRDYW5jZWwgPSBbb2JqZWN0IE9iamVjdF0gKHRydXRoeSkg
Q2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgQ2xvc2luZyBtdXN0IGJl
IHByb3BhZ2F0ZWQgYmFja3dhcmQ6IHN0YXJ0cyBjbG9zZWQ7IHByZXZlbnRDYW5jZWwgPSB0cnVl
LCBwcmV2ZW50QWJvcnQgPSB0cnVlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFt
CitGQUlMIENsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBzdGFydHMgY2xvc2Vk
OyBwcmV2ZW50Q2FuY2VsID0gdHJ1ZSwgcHJldmVudEFib3J0ID0gdHJ1ZSwgcHJldmVudENsb3Nl
ID0gdHJ1ZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlw
aW5nL2Nsb3NlLXByb3BhZ2F0aW9uLWJhY2t3YXJkLmFueS53b3JrZXIuaHRtbCBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvY2xvc2Ut
cHJvcGFnYXRpb24tYmFja3dhcmQuYW55Lndvcmtlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzODI5MTM1
MjhlNjkzYjNhNWQ1NmM2NjBhNDUwNjA5ODBiNTQ4YzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Ns
b3NlLXByb3BhZ2F0aW9uLWJhY2t3YXJkLmFueS53b3JrZXIuaHRtbApAQCAtMCwwICsxIEBACis8
IS0tIFRoaXMgZmlsZSBpcyByZXF1aXJlZCBmb3IgV2ViS2l0IHRlc3QgaW5mcmFzdHJ1Y3R1cmUg
dG8gcnVuIHRoZSB0ZW1wbGF0ZWQgdGVzdCAtLT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMvcGlwaW5nL2Nsb3NlLXByb3BhZ2F0aW9uLWJhY2t3YXJkLmRlZGljYXRlZHdvcmtl
ci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3N0cmVhbXMvcGlwaW5nL2Nsb3NlLXByb3BhZ2F0aW9uLWJhY2t3YXJkLmRlZGljYXRlZHdv
cmtlci1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDgxYmEx
YmZjYmIzOTliOGQzNmU1MTA4ZjU0ZWI5OGU3ZDkwNWYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9jbG9zZS1wcm9wYWdhdGlvbi1iYWNrd2FyZC5kZWRp
Y2F0ZWR3b3JrZXItZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAot
Ci1GQUlMIENsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBzdGFydHMgY2xvc2Vk
OyBwcmV2ZW50Q2FuY2VsIG9taXR0ZWQ7IGZ1bGZpbGxlZCBjYW5jZWwgcHJvbWlzZSBDYW4ndCBm
aW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBDbG9zaW5nIG11c3QgYmUgcHJvcGFn
YXRlZCBiYWNrd2FyZDogc3RhcnRzIGNsb3NlZDsgcHJldmVudENhbmNlbCBvbWl0dGVkOyByZWpl
Y3RlZCBjYW5jZWwgcHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQot
RkFJTCBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogc3RhcnRzIGNsb3NlZDsg
cHJldmVudENhbmNlbCA9IHVuZGVmaW5lZCAoZmFsc3kpOyBmdWxmaWxsZWQgY2FuY2VsIHByb21p
c2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgQ2xvc2luZyBtdXN0
IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IHN0YXJ0cyBjbG9zZWQ7IHByZXZlbnRDYW5jZWwgPSBu
dWxsIChmYWxzeSk7IGZ1bGZpbGxlZCBjYW5jZWwgcHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxl
OiBXcml0YWJsZVN0cmVhbQotRkFJTCBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2Fy
ZDogc3RhcnRzIGNsb3NlZDsgcHJldmVudENhbmNlbCA9IGZhbHNlIChmYWxzeSk7IGZ1bGZpbGxl
ZCBjYW5jZWwgcHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJ
TCBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogc3RhcnRzIGNsb3NlZDsgcHJl
dmVudENhbmNlbCA9IDAgKGZhbHN5KTsgZnVsZmlsbGVkIGNhbmNlbCBwcm9taXNlIENhbid0IGZp
bmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIENsb3NpbmcgbXVzdCBiZSBwcm9wYWdh
dGVkIGJhY2t3YXJkOiBzdGFydHMgY2xvc2VkOyBwcmV2ZW50Q2FuY2VsID0gLTAgKGZhbHN5KTsg
ZnVsZmlsbGVkIGNhbmNlbCBwcm9taXNlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3Ry
ZWFtCi1GQUlMIENsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBzdGFydHMgY2xv
c2VkOyBwcmV2ZW50Q2FuY2VsID0gTmFOIChmYWxzeSk7IGZ1bGZpbGxlZCBjYW5jZWwgcHJvbWlz
ZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBDbG9zaW5nIG11c3Qg
YmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogc3RhcnRzIGNsb3NlZDsgcHJldmVudENhbmNlbCA9ICAo
ZmFsc3kpOyBmdWxmaWxsZWQgY2FuY2VsIHByb21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3Jp
dGFibGVTdHJlYW0KLUZBSUwgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IHN0
YXJ0cyBjbG9zZWQ7IHByZXZlbnRDYW5jZWwgPSB0cnVlICh0cnV0aHkpIENhbid0IGZpbmQgdmFy
aWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIENsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGJh
Y2t3YXJkOiBzdGFydHMgY2xvc2VkOyBwcmV2ZW50Q2FuY2VsID0gYSAodHJ1dGh5KSBDYW4ndCBm
aW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBDbG9zaW5nIG11c3QgYmUgcHJvcGFn
YXRlZCBiYWNrd2FyZDogc3RhcnRzIGNsb3NlZDsgcHJldmVudENhbmNlbCA9IDEgKHRydXRoeSkg
Q2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgQ2xvc2luZyBtdXN0IGJl
IHByb3BhZ2F0ZWQgYmFja3dhcmQ6IHN0YXJ0cyBjbG9zZWQ7IHByZXZlbnRDYW5jZWwgPSBTeW1i
b2woKSAodHJ1dGh5KSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBD
bG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogc3RhcnRzIGNsb3NlZDsgcHJldmVu
dENhbmNlbCA9IFtvYmplY3QgT2JqZWN0XSAodHJ1dGh5KSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBX
cml0YWJsZVN0cmVhbQotRkFJTCBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDog
c3RhcnRzIGNsb3NlZDsgcHJldmVudENhbmNlbCA9IHRydWUsIHByZXZlbnRBYm9ydCA9IHRydWUg
Q2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgQ2xvc2luZyBtdXN0IGJl
IHByb3BhZ2F0ZWQgYmFja3dhcmQ6IHN0YXJ0cyBjbG9zZWQ7IHByZXZlbnRDYW5jZWwgPSB0cnVl
LCBwcmV2ZW50QWJvcnQgPSB0cnVlLCBwcmV2ZW50Q2xvc2UgPSB0cnVlIENhbid0IGZpbmQgdmFy
aWFibGU6IFdyaXRhYmxlU3RyZWFtCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvY2xvc2UtcHJvcGFnYXRpb24t
YmFja3dhcmQuZGVkaWNhdGVkd29ya2VyLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Nsb3NlLXByb3BhZ2F0aW9uLWJhY2t3
YXJkLmRlZGljYXRlZHdvcmtlci5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
N2YzODc1YjJiMDI4NTQxMWE3MDA5ZmI4Nzk0Nzk4OWVhYjRjMjUwLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvY2xvc2UtcHJvcGFnYXRpb24tYmFja3dh
cmQuZGVkaWNhdGVkd29ya2VyLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi08
IURPQ1RZUEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTx0aXRsZT5jbG9zZS1wcm9w
YWdhdGlvbi1iYWNrd2FyZC5qcyBkZWRpY2F0ZWQgd29ya2VyIHdyYXBwZXIgZmlsZTwvdGl0bGU+
Ci0KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxz
Y3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLQot
PHNjcmlwdD4KLSd1c2Ugc3RyaWN0JzsKLWZldGNoX3Rlc3RzX2Zyb21fd29ya2VyKG5ldyBXb3Jr
ZXIoJ2Nsb3NlLXByb3BhZ2F0aW9uLWJhY2t3YXJkLmpzJykpOwotPC9zY3JpcHQ+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
cGlwaW5nL2Nsb3NlLXByb3BhZ2F0aW9uLWJhY2t3YXJkLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Nsb3NlLXByb3BhZ2F0
aW9uLWJhY2t3YXJkLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI1MjM5YTMz
YjE1YWI4ZTYzZDE5YzM4NGVkOTdkNjU1NzlkZGRlYzEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9jbG9zZS1wcm9wYWdhdGlvbi1iYWNrd2FyZC5odG1s
CisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBj
aGFyc2V0PSJ1dGYtOCI+Ci08dGl0bGU+Y2xvc2UtcHJvcGFnYXRpb24tYmFja3dhcmQuanMgYnJv
d3NlciBjb250ZXh0IHdyYXBwZXIgZmlsZTwvdGl0bGU+Ci0KLTxzY3JpcHQgc3JjPSIvcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rl
c3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLQotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNl
cy9yZWNvcmRpbmctc3RyZWFtcy5qcyI+PC9zY3JpcHQ+Ci0KLTxzY3JpcHQgc3JjPSJjbG9zZS1w
cm9wYWdhdGlvbi1iYWNrd2FyZC5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Nsb3NlLXBy
b3BhZ2F0aW9uLWJhY2t3YXJkLmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9jbG9zZS1wcm9wYWdhdGlvbi1iYWNrd2FyZC5qcwpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzEyMDdlOTk2NzJiYTcyZmY0NTRiYjAzYjNk
N2E4MWIwNjJlYzMzZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
cGlwaW5nL2Nsb3NlLXByb3BhZ2F0aW9uLWJhY2t3YXJkLmpzCisrKyAvZGV2L251bGwKQEAgLTEs
MTU4ICswLDAgQEAKLSd1c2Ugc3RyaWN0JzsKLQotaWYgKHNlbGYuaW1wb3J0U2NyaXB0cykgewot
ICBzZWxmLmltcG9ydFNjcmlwdHMoJy9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMnKTsKLSAgc2Vs
Zi5pbXBvcnRTY3JpcHRzKCcuLi9yZXNvdXJjZXMvcmVjb3JkaW5nLXN0cmVhbXMuanMnKTsKLX0K
LQotY29uc3QgZXJyb3IxID0gbmV3IEVycm9yKCdlcnJvcjEhJyk7Ci1lcnJvcjEubmFtZSA9ICdl
cnJvcjEnOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotCi0gIGNvbnN0IHJzID0gcmVjb3JkaW5n
UmVhZGFibGVTdHJlYW0oKTsKLQotICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFt
KCk7Ci0gIGNvbnN0IHdyaXRlciA9IHdzLmdldFdyaXRlcigpOwotICB3cml0ZXIuY2xvc2UoKTsK
LSAgd3JpdGVyLnJlbGVhc2VMb2NrKCk7Ci0KLSAgcmV0dXJuIHJzLnBpcGVUbyh3cykudGhlbigK
LSAgICAoKSA9PiBhc3NlcnRfdW5yZWFjaGVkKCd0aGUgcHJvbWlzZSBtdXN0IG5vdCBmdWxmaWxs
JyksCi0gICAgZXJyID0+IHsKLSAgICAgIGFzc2VydF9lcXVhbHMoZXJyLm5hbWUsICdUeXBlRXJy
b3InLCAndGhlIHByb21pc2UgbXVzdCByZWplY3Qgd2l0aCBhIFR5cGVFcnJvcicpOwotCi0gICAg
ICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJzLmV2ZW50c1dpdGhvdXRQdWxscywgWydjYW5jZWwnLCBl
cnJdKTsKLSAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ2Nsb3NlJ10pOwot
Ci0gICAgICByZXR1cm4gUHJvbWlzZS5hbGwoWwotICAgICAgICBycy5nZXRSZWFkZXIoKS5jbG9z
ZWQsCi0gICAgICAgIHdzLmdldFdyaXRlcigpLmNsb3NlZAotICAgICAgXSk7Ci0gICAgfQotICAp
OwotCi19LCAnQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IHN0YXJ0cyBjbG9z
ZWQ7IHByZXZlbnRDYW5jZWwgb21pdHRlZDsgZnVsZmlsbGVkIGNhbmNlbCBwcm9taXNlJyk7Ci0K
LXByb21pc2VfdGVzdCh0ID0+IHsKLQotICAvLyBPdXIgcmVjb3JkaW5nIHN0cmVhbXMgZG8gbm90
IGRlYWwgd2VsbCB3aXRoIGVycm9ycyBnZW5lcmF0ZWQgYnkgdGhlIHN5c3RlbSwgc28gZ2l2ZSB0
aGVtIHNvbWUgaGVscAotICBsZXQgcmVjb3JkZWRFcnJvcjsKLSAgY29uc3QgcnMgPSByZWNvcmRp
bmdSZWFkYWJsZVN0cmVhbSh7Ci0gICAgY2FuY2VsKGNhbmNlbEVycikgewotICAgICAgcmVjb3Jk
ZWRFcnJvciA9IGNhbmNlbEVycjsKLSAgICAgIHRocm93IGVycm9yMTsKLSAgICB9Ci0gIH0pOwot
Ci0gIGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0oKTsKLSAgY29uc3Qgd3JpdGVy
ID0gd3MuZ2V0V3JpdGVyKCk7Ci0gIHdyaXRlci5jbG9zZSgpOwotICB3cml0ZXIucmVsZWFzZUxv
Y2soKTsKLQotICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHQsIGVycm9yMSwgcnMucGlwZVRvKHdz
KSwgJ3BpcGVUbyBtdXN0IHJlamVjdCB3aXRoIHRoZSBzYW1lIGVycm9yJykudGhlbigoKSA9PiB7
Ci0gICAgYXNzZXJ0X2VxdWFscyhyZWNvcmRlZEVycm9yLm5hbWUsICdUeXBlRXJyb3InLCAndGhl
IGNhbmNlbCByZWFzb24gbXVzdCBiZSBhIFR5cGVFcnJvcicpOwotCi0gICAgYXNzZXJ0X2FycmF5
X2VxdWFscyhycy5ldmVudHNXaXRob3V0UHVsbHMsIFsnY2FuY2VsJywgcmVjb3JkZWRFcnJvcl0p
OwotICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ2Nsb3NlJ10pOwotCi0gICAg
cmV0dXJuIFByb21pc2UuYWxsKFsKLSAgICAgIHJzLmdldFJlYWRlcigpLmNsb3NlZCwKLSAgICAg
IHdzLmdldFdyaXRlcigpLmNsb3NlZAotICAgIF0pOwotICB9KTsKLQotfSwgJ0Nsb3NpbmcgbXVz
dCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBzdGFydHMgY2xvc2VkOyBwcmV2ZW50Q2FuY2VsIG9t
aXR0ZWQ7IHJlamVjdGVkIGNhbmNlbCBwcm9taXNlJyk7Ci0KLWZvciAoY29uc3QgZmFsc3kgb2Yg
W3VuZGVmaW5lZCwgbnVsbCwgZmFsc2UsICswLCAtMCwgTmFOLCAnJ10pIHsKLSAgY29uc3Qgc3Ry
aW5nVmVyc2lvbiA9IE9iamVjdC5pcyhmYWxzeSwgLTApID8gJy0wJyA6IFN0cmluZyhmYWxzeSk7
Ci0KLSAgcHJvbWlzZV90ZXN0KCgpID0+IHsKLQotICAgIGNvbnN0IHJzID0gcmVjb3JkaW5nUmVh
ZGFibGVTdHJlYW0oKTsKLQotICAgIGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0o
KTsKLSAgICBjb25zdCB3cml0ZXIgPSB3cy5nZXRXcml0ZXIoKTsKLSAgICB3cml0ZXIuY2xvc2Uo
KTsKLSAgICB3cml0ZXIucmVsZWFzZUxvY2soKTsKLQotICAgIHJldHVybiBycy5waXBlVG8od3Ms
IHsgcHJldmVudENhbmNlbDogZmFsc3kgfSkudGhlbigKLSAgICAgICgpID0+IGFzc2VydF91bnJl
YWNoZWQoJ3RoZSBwcm9taXNlIG11c3Qgbm90IGZ1bGZpbGwnKSwKLSAgICAgIGVyciA9PiB7Ci0g
ICAgICAgIGFzc2VydF9lcXVhbHMoZXJyLm5hbWUsICdUeXBlRXJyb3InLCAndGhlIHByb21pc2Ug
bXVzdCByZWplY3Qgd2l0aCBhIFR5cGVFcnJvcicpOwotCi0gICAgICAgIGFzc2VydF9hcnJheV9l
cXVhbHMocnMuZXZlbnRzV2l0aG91dFB1bGxzLCBbJ2NhbmNlbCcsIGVycl0pOwotICAgICAgICBh
c3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWydjbG9zZSddKTsKLQotICAgICAgICByZXR1
cm4gUHJvbWlzZS5hbGwoWwotICAgICAgICAgIHJzLmdldFJlYWRlcigpLmNsb3NlZCwKLSAgICAg
ICAgICB3cy5nZXRXcml0ZXIoKS5jbG9zZWQKLSAgICAgICAgXSk7Ci0gICAgICB9Ci0gICAgKTsK
LQotICB9LCBgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IHN0YXJ0cyBjbG9z
ZWQ7IHByZXZlbnRDYW5jZWwgPSAke3N0cmluZ1ZlcnNpb259IChmYWxzeSk7IGZ1bGZpbGxlZCBj
YW5jZWwgYCArCi0gICAgIGBwcm9taXNlYCk7Ci19Ci0KLWZvciAoY29uc3QgdHJ1dGh5IG9mIFt0
cnVlLCAnYScsIDEsIFN5bWJvbCgpLCB7IH1dKSB7Ci0gIHByb21pc2VfdGVzdCh0ID0+IHsKLQot
ICAgIGNvbnN0IHJzID0gcmVjb3JkaW5nUmVhZGFibGVTdHJlYW0oKTsKLQotICAgIGNvbnN0IHdz
ID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0oKTsKLSAgICBjb25zdCB3cml0ZXIgPSB3cy5nZXRX
cml0ZXIoKTsKLSAgICB3cml0ZXIuY2xvc2UoKTsKLSAgICB3cml0ZXIucmVsZWFzZUxvY2soKTsK
LQotICAgIHJldHVybiBwcm9taXNlX3JlamVjdHModCwgbmV3IFR5cGVFcnJvcigpLCBycy5waXBl
VG8od3MsIHsgcHJldmVudENhbmNlbDogdHJ1dGh5IH0pKS50aGVuKCgpID0+IHsKLSAgICAgIGFz
c2VydF9hcnJheV9lcXVhbHMocnMuZXZlbnRzV2l0aG91dFB1bGxzLCBbXSk7Ci0gICAgICBhc3Nl
cnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWydjbG9zZSddKTsKLQotICAgICAgcmV0dXJuIHdz
LmdldFdyaXRlcigpLmNsb3NlZDsKLSAgICB9KTsKLQotICB9LCBgQ2xvc2luZyBtdXN0IGJlIHBy
b3BhZ2F0ZWQgYmFja3dhcmQ6IHN0YXJ0cyBjbG9zZWQ7IHByZXZlbnRDYW5jZWwgPSAke1N0cmlu
Zyh0cnV0aHkpfSAodHJ1dGh5KWApOwotfQotCi1wcm9taXNlX3Rlc3QodCA9PiB7Ci0KLSAgY29u
c3QgcnMgPSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSgpOwotCi0gIGNvbnN0IHdzID0gcmVjb3Jk
aW5nV3JpdGFibGVTdHJlYW0oKTsKLSAgY29uc3Qgd3JpdGVyID0gd3MuZ2V0V3JpdGVyKCk7Ci0g
IHdyaXRlci5jbG9zZSgpOwotICB3cml0ZXIucmVsZWFzZUxvY2soKTsKLQotICByZXR1cm4gcHJv
bWlzZV9yZWplY3RzKHQsIG5ldyBUeXBlRXJyb3IoKSwgcnMucGlwZVRvKHdzLCB7IHByZXZlbnRD
YW5jZWw6IHRydWUsIHByZXZlbnRBYm9ydDogdHJ1ZSB9KSkKLSAgICAudGhlbigoKSA9PiB7Ci0g
ICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJzLmV2ZW50c1dpdGhvdXRQdWxscywgW10pOwotICAg
ICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsnY2xvc2UnXSk7Ci0KLSAgICAgIHJl
dHVybiB3cy5nZXRXcml0ZXIoKS5jbG9zZWQ7Ci0gICAgfSk7Ci0KLX0sICdDbG9zaW5nIG11c3Qg
YmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogc3RhcnRzIGNsb3NlZDsgcHJldmVudENhbmNlbCA9IHRy
dWUsIHByZXZlbnRBYm9ydCA9IHRydWUnKTsKLQotcHJvbWlzZV90ZXN0KHQgPT4gewotCi0gIGNv
bnN0IHJzID0gcmVjb3JkaW5nUmVhZGFibGVTdHJlYW0oKTsKLQotICBjb25zdCB3cyA9IHJlY29y
ZGluZ1dyaXRhYmxlU3RyZWFtKCk7Ci0gIGNvbnN0IHdyaXRlciA9IHdzLmdldFdyaXRlcigpOwot
ICB3cml0ZXIuY2xvc2UoKTsKLSAgd3JpdGVyLnJlbGVhc2VMb2NrKCk7Ci0KLSAgcmV0dXJuIHBy
b21pc2VfcmVqZWN0cyh0LCBuZXcgVHlwZUVycm9yKCksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgcnMucGlwZVRvKHdzLCB7IHByZXZlbnRDYW5jZWw6IHRydWUsIHByZXZlbnRBYm9ydDogdHJ1
ZSwgcHJldmVudENsb3NlOiB0cnVlIH0pKQotICAudGhlbigoKSA9PiB7Ci0gICAgYXNzZXJ0X2Fy
cmF5X2VxdWFscyhycy5ldmVudHNXaXRob3V0UHVsbHMsIFtdKTsKLSAgICBhc3NlcnRfYXJyYXlf
ZXF1YWxzKHdzLmV2ZW50cywgWydjbG9zZSddKTsKLQotICAgIHJldHVybiB3cy5nZXRXcml0ZXIo
KS5jbG9zZWQ7Ci0gIH0pOwotCi19LCAnQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dh
cmQ6IHN0YXJ0cyBjbG9zZWQ7IHByZXZlbnRDYW5jZWwgPSB0cnVlLCBwcmV2ZW50QWJvcnQgPSB0
cnVlLCBwcmV2ZW50Q2xvc2UgJyArCi0gICAnPSB0cnVlJyk7Ci0KLWRvbmUoKTsKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9w
aXBpbmcvY2xvc2UtcHJvcGFnYXRpb24tYmFja3dhcmQuc2VydmljZXdvcmtlci5odHRwcy1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMvcGlwaW5nL2Nsb3NlLXByb3BhZ2F0aW9uLWJhY2t3YXJkLnNlcnZpY2V3b3JrZXIuaHR0
cHMtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNmZlY2VmYjVj
ZTljOTlkOTczNDhmM2RmNjc3MjA5ZTQzZWM0NTQ0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvY2xvc2UtcHJvcGFnYXRpb24tYmFja3dhcmQuc2Vydmlj
ZXdvcmtlci5odHRwcy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBA
Ci0KLVBBU1MgU2VydmljZSB3b3JrZXIgdGVzdCBzZXR1cCAKLUZBSUwgQ2xvc2luZyBtdXN0IGJl
IHByb3BhZ2F0ZWQgYmFja3dhcmQ6IHN0YXJ0cyBjbG9zZWQ7IHByZXZlbnRDYW5jZWwgb21pdHRl
ZDsgZnVsZmlsbGVkIGNhbmNlbCBwcm9taXNlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxl
U3RyZWFtCi1GQUlMIENsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBzdGFydHMg
Y2xvc2VkOyBwcmV2ZW50Q2FuY2VsIG9taXR0ZWQ7IHJlamVjdGVkIGNhbmNlbCBwcm9taXNlIENh
bid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIENsb3NpbmcgbXVzdCBiZSBw
cm9wYWdhdGVkIGJhY2t3YXJkOiBzdGFydHMgY2xvc2VkOyBwcmV2ZW50Q2FuY2VsID0gdW5kZWZp
bmVkIChmYWxzeSk7IGZ1bGZpbGxlZCBjYW5jZWwgcHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxl
OiBXcml0YWJsZVN0cmVhbQotRkFJTCBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2Fy
ZDogc3RhcnRzIGNsb3NlZDsgcHJldmVudENhbmNlbCA9IG51bGwgKGZhbHN5KTsgZnVsZmlsbGVk
IGNhbmNlbCBwcm9taXNlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlM
IENsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBzdGFydHMgY2xvc2VkOyBwcmV2
ZW50Q2FuY2VsID0gZmFsc2UgKGZhbHN5KTsgZnVsZmlsbGVkIGNhbmNlbCBwcm9taXNlIENhbid0
IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIENsb3NpbmcgbXVzdCBiZSBwcm9w
YWdhdGVkIGJhY2t3YXJkOiBzdGFydHMgY2xvc2VkOyBwcmV2ZW50Q2FuY2VsID0gMCAoZmFsc3kp
OyBmdWxmaWxsZWQgY2FuY2VsIHByb21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVT
dHJlYW0KLUZBSUwgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IHN0YXJ0cyBj
bG9zZWQ7IHByZXZlbnRDYW5jZWwgPSAtMCAoZmFsc3kpOyBmdWxmaWxsZWQgY2FuY2VsIHByb21p
c2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgQ2xvc2luZyBtdXN0
IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IHN0YXJ0cyBjbG9zZWQ7IHByZXZlbnRDYW5jZWwgPSBO
YU4gKGZhbHN5KTsgZnVsZmlsbGVkIGNhbmNlbCBwcm9taXNlIENhbid0IGZpbmQgdmFyaWFibGU6
IFdyaXRhYmxlU3RyZWFtCi1GQUlMIENsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJk
OiBzdGFydHMgY2xvc2VkOyBwcmV2ZW50Q2FuY2VsID0gIChmYWxzeSk7IGZ1bGZpbGxlZCBjYW5j
ZWwgcHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBDbG9z
aW5nIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogc3RhcnRzIGNsb3NlZDsgcHJldmVudENh
bmNlbCA9IHRydWUgKHRydXRoeSkgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0K
LUZBSUwgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IHN0YXJ0cyBjbG9zZWQ7
IHByZXZlbnRDYW5jZWwgPSBhICh0cnV0aHkpIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxl
U3RyZWFtCi1GQUlMIENsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBzdGFydHMg
Y2xvc2VkOyBwcmV2ZW50Q2FuY2VsID0gMSAodHJ1dGh5KSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBX
cml0YWJsZVN0cmVhbQotRkFJTCBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDog
c3RhcnRzIGNsb3NlZDsgcHJldmVudENhbmNlbCA9IFN5bWJvbCgpICh0cnV0aHkpIENhbid0IGZp
bmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIENsb3NpbmcgbXVzdCBiZSBwcm9wYWdh
dGVkIGJhY2t3YXJkOiBzdGFydHMgY2xvc2VkOyBwcmV2ZW50Q2FuY2VsID0gW29iamVjdCBPYmpl
Y3RdICh0cnV0aHkpIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIENs
b3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBzdGFydHMgY2xvc2VkOyBwcmV2ZW50
Q2FuY2VsID0gdHJ1ZSwgcHJldmVudEFib3J0ID0gdHJ1ZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBX
cml0YWJsZVN0cmVhbQotRkFJTCBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDog
c3RhcnRzIGNsb3NlZDsgcHJldmVudENhbmNlbCA9IHRydWUsIHByZXZlbnRBYm9ydCA9IHRydWUs
IHByZXZlbnRDbG9zZSA9IHRydWUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0K
LQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL3BpcGluZy9jbG9zZS1wcm9wYWdhdGlvbi1iYWNrd2FyZC5zZXJ2aWNld29ya2Vy
Lmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMvcGlwaW5nL2Nsb3NlLXByb3BhZ2F0aW9uLWJhY2t3YXJkLnNlcnZpY2V3b3JrZXIu
aHR0cHMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTZiMzA0MDZlOTgxNTM1
OWZiNjNkOTc0ZDkwZDBlZmFlMjVmZTc1MS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3N0cmVhbXMvcGlwaW5nL2Nsb3NlLXByb3BhZ2F0aW9uLWJhY2t3YXJkLnNlcnZpY2V3b3Jr
ZXIuaHR0cHMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLTwhRE9DVFlQRSBo
dG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHRpdGxlPmNsb3NlLXByb3BhZ2F0aW9uLWJh
Y2t3YXJkLmpzIHNlcnZpY2Ugd29ya2VyIHdyYXBwZXIgZmlsZTwvdGl0bGU+Ci0KLTxzY3JpcHQg
c3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIv
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIv
c2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL3Jlc291cmNlcy90ZXN0LWhlbHBlcnMuc3Vi
LmpzIj48L3NjcmlwdD4KLQotPHNjcmlwdD4KLSd1c2Ugc3RyaWN0JzsKLXNlcnZpY2Vfd29ya2Vy
X3Rlc3QoJ2Nsb3NlLXByb3BhZ2F0aW9uLWJhY2t3YXJkLmpzJywgJ1NlcnZpY2Ugd29ya2VyIHRl
c3Qgc2V0dXAnKTsKLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9jbG9zZS1wcm9wYWdhdGlvbi1i
YWNrd2FyZC5zaGFyZWR3b3JrZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9jbG9zZS1wcm9wYWdhdGlvbi1i
YWNrd2FyZC5zaGFyZWR3b3JrZXItZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwOWQ1ZDI1MDlkNzg0N2U4Y2Q2ZmU2NjA2YWE2MGNkZDMzYWE0NzRlLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvY2xvc2UtcHJvcGFnYXRp
b24tYmFja3dhcmQuc2hhcmVkd29ya2VyLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0x
LDUgKzAsMCBAQAotQ09OU09MRSBNRVNTQUdFOiBSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2
YXJpYWJsZTogU2hhcmVkV29ya2VyCi0KLUhhcm5lc3MgRXJyb3IgKEZBSUwpLCBtZXNzYWdlID0g
UmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IFNoYXJlZFdvcmtlcgotCi0KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy9waXBpbmcvY2xvc2UtcHJvcGFnYXRpb24tYmFja3dhcmQuc2hhcmVkd29ya2VyLmh0bWwg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlw
aW5nL2Nsb3NlLXByb3BhZ2F0aW9uLWJhY2t3YXJkLnNoYXJlZHdvcmtlci5odG1sCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZDE5Yjc2ODg4NDc4ZDQyN2JhNzkwYWUzZTBmYzJmY2I0
ZGUxOWIzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcv
Y2xvc2UtcHJvcGFnYXRpb24tYmFja3dhcmQuc2hhcmVkd29ya2VyLmh0bWwKKysrIC9kZXYvbnVs
bApAQCAtMSwxMSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04
Ij4KLTx0aXRsZT5jbG9zZS1wcm9wYWdhdGlvbi1iYWNrd2FyZC5qcyBzaGFyZWQgd29ya2VyIHdy
YXBwZXIgZmlsZTwvdGl0bGU+Ci0KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0
LmpzIj48L3NjcmlwdD4KLQotPHNjcmlwdD4KLSd1c2Ugc3RyaWN0JzsKLWZldGNoX3Rlc3RzX2Zy
b21fd29ya2VyKG5ldyBTaGFyZWRXb3JrZXIoJ2Nsb3NlLXByb3BhZ2F0aW9uLWJhY2t3YXJkLmpz
JykpOwotPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Nsb3NlLXByb3BhZ2F0aW9uLWZvcndhcmQu
YW55LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy9waXBpbmcvY2xvc2UtcHJvcGFnYXRpb24tZm9yd2FyZC5hbnktZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjFkZjA5MTQ1NTgwNWZlOGQ4NjFmYjU4NGVjYTQyMjMwY2Q1ZDk1
NTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Nsb3NlLXByb3BhZ2F0aW9uLWZvcndhcmQuYW55LWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDQxIEBACitDT05TT0xFIE1FU1NBR0U6IFVuaGFuZGxlZCBQ
cm9taXNlIFJlamVjdGlvbjogVHlwZUVycm9yOiBjYW5jZWwoKSBjYWxsZWQgb24gYSByZWFkZXIg
b3duZWQgYnkgbm8gcmVhZGFibGUgc3RyZWFtCitDT05TT0xFIE1FU1NBR0U6IFVuaGFuZGxlZCBQ
cm9taXNlIFJlamVjdGlvbjogVHlwZUVycm9yOiBjYW5jZWwoKSBjYWxsZWQgb24gYSByZWFkZXIg
b3duZWQgYnkgbm8gcmVhZGFibGUgc3RyZWFtCitDT05TT0xFIE1FU1NBR0U6IFVuaGFuZGxlZCBQ
cm9taXNlIFJlamVjdGlvbjogVHlwZUVycm9yOiBjYW5jZWwoKSBjYWxsZWQgb24gYSByZWFkZXIg
b3duZWQgYnkgbm8gcmVhZGFibGUgc3RyZWFtCitDT05TT0xFIE1FU1NBR0U6IFVuaGFuZGxlZCBQ
cm9taXNlIFJlamVjdGlvbjogVHlwZUVycm9yOiBjYW5jZWwoKSBjYWxsZWQgb24gYSByZWFkZXIg
b3duZWQgYnkgbm8gcmVhZGFibGUgc3RyZWFtCitDT05TT0xFIE1FU1NBR0U6IFVuaGFuZGxlZCBQ
cm9taXNlIFJlamVjdGlvbjogZXJyb3IxOiBlcnJvcjEhCitDT05TT0xFIE1FU1NBR0U6IFVuaGFu
ZGxlZCBQcm9taXNlIFJlamVjdGlvbjogZXJyb3IxOiBlcnJvcjEhCitDT05TT0xFIE1FU1NBR0U6
IFVuaGFuZGxlZCBQcm9taXNlIFJlamVjdGlvbjogVHlwZUVycm9yOiBjYW5jZWwoKSBjYWxsZWQg
b24gYSByZWFkZXIgb3duZWQgYnkgbm8gcmVhZGFibGUgc3RyZWFtCisKK0hhcm5lc3MgRXJyb3Ig
KEZBSUwpLCBtZXNzYWdlID0gVW5oYW5kbGVkIHJlamVjdGlvbjogY2FuY2VsKCkgY2FsbGVkIG9u
IGEgcmVhZGVyIG93bmVkIGJ5IG5vIHJlYWRhYmxlIHN0cmVhbQorCitGQUlMIENsb3NpbmcgbXVz
dCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHN0YXJ0cyBjbG9zZWQ7IHByZXZlbnRDbG9zZSBvbWl0
dGVkOyBmdWxmaWxsZWQgY2xvc2UgcHJvbWlzZSBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWpl
Y3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJUeXBlRXJyb3I6IHdzLmdldFdyaXRlciBpcyBub3Qg
YSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVm
aW5lZCkiCitGQUlMIENsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHN0YXJ0cyBj
bG9zZWQ7IHByZXZlbnRDbG9zZSBvbWl0dGVkOyByZWplY3RlZCBjbG9zZSBwcm9taXNlIHByb21p
c2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVFcnJv
cjogd3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywg
J3dzLmdldFdyaXRlcicgaXMgdW5kZWZpbmVkKSIKK0ZBSUwgQ2xvc2luZyBtdXN0IGJlIHByb3Bh
Z2F0ZWQgZm9yd2FyZDogc3RhcnRzIGNsb3NlZDsgcHJldmVudENsb3NlID0gdW5kZWZpbmVkIChm
YWxzeSk7IGZ1bGZpbGxlZCBjbG9zZSBwcm9taXNlIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJl
amVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVFcnJvcjogd3MuZ2V0V3JpdGVyIGlzIG5v
dCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicgaXMgdW5k
ZWZpbmVkKSIKK0ZBSUwgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc3RhcnRz
IGNsb3NlZDsgcHJldmVudENsb3NlID0gbnVsbCAoZmFsc3kpOyBmdWxmaWxsZWQgY2xvc2UgcHJv
bWlzZSBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0
ICJUeXBlRXJyb3I6IHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRX
cml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkiCitGQUlMIENsb3NpbmcgbXVz
dCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHN0YXJ0cyBjbG9zZWQ7IHByZXZlbnRDbG9zZSA9IGZh
bHNlIChmYWxzeSk7IGZ1bGZpbGxlZCBjbG9zZSBwcm9taXNlIHByb21pc2VfdGVzdDogVW5oYW5k
bGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVFcnJvcjogd3MuZ2V0V3JpdGVy
IGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicg
aXMgdW5kZWZpbmVkKSIKK0ZBSUwgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDog
c3RhcnRzIGNsb3NlZDsgcHJldmVudENsb3NlID0gMCAoZmFsc3kpOyBmdWxmaWxsZWQgY2xvc2Ug
cHJvbWlzZSBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2Jq
ZWN0ICJUeXBlRXJyb3I6IHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5n
ZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkiCitGQUlMIENsb3Npbmcg
bXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHN0YXJ0cyBjbG9zZWQ7IHByZXZlbnRDbG9zZSA9
IC0wIChmYWxzeSk7IGZ1bGZpbGxlZCBjbG9zZSBwcm9taXNlIHByb21pc2VfdGVzdDogVW5oYW5k
bGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVFcnJvcjogd3MuZ2V0V3JpdGVy
IGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicg
aXMgdW5kZWZpbmVkKSIKK0ZBSUwgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDog
c3RhcnRzIGNsb3NlZDsgcHJldmVudENsb3NlID0gTmFOIChmYWxzeSk7IGZ1bGZpbGxlZCBjbG9z
ZSBwcm9taXNlIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBv
YmplY3QgIlR5cGVFcnJvcjogd3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dz
LmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicgaXMgdW5kZWZpbmVkKSIKK0ZBSUwgQ2xvc2lu
ZyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc3RhcnRzIGNsb3NlZDsgcHJldmVudENsb3Nl
ID0gIChmYWxzeSk7IGZ1bGZpbGxlZCBjbG9zZSBwcm9taXNlIHByb21pc2VfdGVzdDogVW5oYW5k
bGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVFcnJvcjogd3MuZ2V0V3JpdGVy
IGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicg
aXMgdW5kZWZpbmVkKSIKK1BBU1MgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDog
c3RhcnRzIGNsb3NlZDsgcHJldmVudENsb3NlID0gdHJ1ZSAodHJ1dGh5KSAKK1BBU1MgQ2xvc2lu
ZyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc3RhcnRzIGNsb3NlZDsgcHJldmVudENsb3Nl
ID0gYSAodHJ1dGh5KSAKK1BBU1MgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDog
c3RhcnRzIGNsb3NlZDsgcHJldmVudENsb3NlID0gMSAodHJ1dGh5KSAKK1BBU1MgQ2xvc2luZyBt
dXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc3RhcnRzIGNsb3NlZDsgcHJldmVudENsb3NlID0g
U3ltYm9sKCkgKHRydXRoeSkgCitQQVNTIENsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndh
cmQ6IHN0YXJ0cyBjbG9zZWQ7IHByZXZlbnRDbG9zZSA9IFtvYmplY3QgT2JqZWN0XSAodHJ1dGh5
KSAKK1BBU1MgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc3RhcnRzIGNsb3Nl
ZDsgcHJldmVudENsb3NlID0gdHJ1ZSwgcHJldmVudEFib3J0ID0gdHJ1ZSAKK1BBU1MgQ2xvc2lu
ZyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc3RhcnRzIGNsb3NlZDsgcHJldmVudENsb3Nl
ID0gdHJ1ZSwgcHJldmVudEFib3J0ID0gdHJ1ZSwgcHJldmVudENhbmNlbCA9IHRydWUgCitGQUlM
IENsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IGJlY29tZXMgY2xvc2VkIGFzeW5j
aHJvbm91c2x5OyBwcmV2ZW50Q2xvc2Ugb21pdHRlZDsgZnVsZmlsbGVkIGNsb3NlIHByb21pc2Ug
cHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiVHlw
ZUVycm9yOiB3cy5nZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3JpdGVy
KCknLCAnd3MuZ2V0V3JpdGVyJyBpcyB1bmRlZmluZWQpIgorRkFJTCBDbG9zaW5nIG11c3QgYmUg
cHJvcGFnYXRlZCBmb3J3YXJkOiBiZWNvbWVzIGNsb3NlZCBhc3luY2hyb25vdXNseTsgcHJldmVu
dENsb3NlIG9taXR0ZWQ7IHJlamVjdGVkIGNsb3NlIHByb21pc2UgcHJvbWlzZV90ZXN0OiBVbmhh
bmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiVHlwZUVycm9yOiB3cy5nZXRXcml0
ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3JpdGVyKCknLCAnd3MuZ2V0V3JpdGVy
JyBpcyB1bmRlZmluZWQpIgorUEFTUyBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJk
OiBiZWNvbWVzIGNsb3NlZCBhc3luY2hyb25vdXNseTsgcHJldmVudENsb3NlID0gdHJ1ZSAKK0ZB
SUwgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogYmVjb21lcyBjbG9zZWQgYXN5
bmNocm9ub3VzbHk7IGRlc3QgbmV2ZXIgZGVzaXJlcyBjaHVua3M7IHByZXZlbnRDbG9zZSBvbWl0
dGVkOyBmdWxmaWxsZWQgY2xvc2UgcHJvbWlzZSBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWpl
Y3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJUeXBlRXJyb3I6IHdzLmdldFdyaXRlciBpcyBub3Qg
YSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVm
aW5lZCkiCitGQUlMIENsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IGJlY29tZXMg
Y2xvc2VkIGFzeW5jaHJvbm91c2x5OyBkZXN0IG5ldmVyIGRlc2lyZXMgY2h1bmtzOyBwcmV2ZW50
Q2xvc2Ugb21pdHRlZDsgcmVqZWN0ZWQgY2xvc2UgcHJvbWlzZSBwcm9taXNlX3Rlc3Q6IFVuaGFu
ZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJUeXBlRXJyb3I6IHdzLmdldFdyaXRl
ciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXIn
IGlzIHVuZGVmaW5lZCkiCitQQVNTIENsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6
IGJlY29tZXMgY2xvc2VkIGFzeW5jaHJvbm91c2x5OyBkZXN0IG5ldmVyIGRlc2lyZXMgY2h1bmtz
OyBwcmV2ZW50Q2xvc2UgPSB0cnVlIAorRkFJTCBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBm
b3J3YXJkOiBiZWNvbWVzIGNsb3NlZCBhZnRlciBvbmUgY2h1bms7IHByZXZlbnRDbG9zZSBvbWl0
dGVkOyBmdWxmaWxsZWQgY2xvc2UgcHJvbWlzZSBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWpl
Y3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJUeXBlRXJyb3I6IHdzLmdldFdyaXRlciBpcyBub3Qg
YSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVm
aW5lZCkiCitGQUlMIENsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IGJlY29tZXMg
Y2xvc2VkIGFmdGVyIG9uZSBjaHVuazsgcHJldmVudENsb3NlIG9taXR0ZWQ7IHJlamVjdGVkIGNs
b3NlIHByb21pc2UgcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6
IG9iamVjdCAiVHlwZUVycm9yOiB3cy5nZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAn
d3MuZ2V0V3JpdGVyKCknLCAnd3MuZ2V0V3JpdGVyJyBpcyB1bmRlZmluZWQpIgorUEFTUyBDbG9z
aW5nIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBiZWNvbWVzIGNsb3NlZCBhZnRlciBvbmUg
Y2h1bms7IHByZXZlbnRDbG9zZSA9IHRydWUgCitQQVNTIENsb3NpbmcgbXVzdCBiZSBwcm9wYWdh
dGVkIGZvcndhcmQ6IHNodXRkb3duIG11c3Qgbm90IG9jY3VyIHVudGlsIHRoZSBmaW5hbCB3cml0
ZSBjb21wbGV0ZXMgCitQQVNTIENsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHNo
dXRkb3duIG11c3Qgbm90IG9jY3VyIHVudGlsIHRoZSBmaW5hbCB3cml0ZSBjb21wbGV0ZXM7IHBy
ZXZlbnRDbG9zZSA9IHRydWUgCitQQVNTIENsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndh
cmQ6IHNodXRkb3duIG11c3Qgbm90IG9jY3VyIHVudGlsIHRoZSBmaW5hbCB3cml0ZSBjb21wbGV0
ZXM7IGJlY29tZXMgY2xvc2VkIGFmdGVyIGZpcnN0IHdyaXRlIAorUEFTUyBDbG9zaW5nIG11c3Qg
YmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBzaHV0ZG93biBtdXN0IG5vdCBvY2N1ciB1bnRpbCB0aGUg
ZmluYWwgd3JpdGUgY29tcGxldGVzOyBiZWNvbWVzIGNsb3NlZCBhZnRlciBmaXJzdCB3cml0ZTsg
cHJldmVudENsb3NlID0gdHJ1ZSAKK0ZBSUwgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9y
d2FyZDogZXJyb3JpbmcgdGhlIHdyaXRhYmxlIHdoaWxlIGZsdXNoaW5nIHBlbmRpbmcgd3JpdGVz
IHNob3VsZCBlcnJvciBwaXBlVG8gcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdp
dGggdmFsdWU6IG9iamVjdCAiVHlwZUVycm9yOiB3cy5nZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rp
b24uIChJbiAnd3MuZ2V0V3JpdGVyKCknLCAnd3MuZ2V0V3JpdGVyJyBpcyB1bmRlZmluZWQpIgor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMvcGlwaW5nL2Nsb3NlLXByb3BhZ2F0aW9uLWZvcndhcmQuYW55Lmh0bWwgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Ns
b3NlLXByb3BhZ2F0aW9uLWZvcndhcmQuYW55Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjM4MjkxMzUyOGU2
OTNiM2E1ZDU2YzY2MGE0NTA2MDk4MGI1NDhjMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvY2xvc2Ut
cHJvcGFnYXRpb24tZm9yd2FyZC5hbnkuaHRtbApAQCAtMCwwICsxIEBACis8IS0tIFRoaXMgZmls
ZSBpcyByZXF1aXJlZCBmb3IgV2ViS2l0IHRlc3QgaW5mcmFzdHJ1Y3R1cmUgdG8gcnVuIHRoZSB0
ZW1wbGF0ZWQgdGVzdCAtLT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlw
aW5nL2Nsb3NlLXByb3BhZ2F0aW9uLWZvcndhcmQuYW55LmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9jbG9zZS1wcm9wYWdhdGlv
bi1mb3J3YXJkLmFueS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYzMyODJlZWE3NGI0MGYzOTUzOTViNDA3MDkw
ZWYwNTBiMWJkMzQ5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9jbG9zZS1wcm9wYWdhdGlvbi1mb3J3
YXJkLmFueS5qcwpAQCAtMCwwICsxLDU4OSBAQAorLy8gTUVUQTogZ2xvYmFsPXdpbmRvdyx3b3Jr
ZXIsanNzaGVsbAorLy8gTUVUQTogc2NyaXB0PS4uL3Jlc291cmNlcy90ZXN0LXV0aWxzLmpzCisv
LyBNRVRBOiBzY3JpcHQ9Li4vcmVzb3VyY2VzL3JlY29yZGluZy1zdHJlYW1zLmpzCisndXNlIHN0
cmljdCc7CisKK2NvbnN0IGVycm9yMSA9IG5ldyBFcnJvcignZXJyb3IxIScpOworZXJyb3IxLm5h
bWUgPSAnZXJyb3IxJzsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKworICBjb25zdCBycyA9IHJl
Y29yZGluZ1JlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjb250cm9sbGVyKSB7CisgICAgICBj
b250cm9sbGVyLmNsb3NlKCk7CisgICAgfQorICB9KTsKKworICBjb25zdCB3cyA9IHJlY29yZGlu
Z1dyaXRhYmxlU3RyZWFtKCk7CisKKyAgcmV0dXJuIHJzLnBpcGVUbyh3cykudGhlbih2YWx1ZSA9
PiB7CisgICAgYXNzZXJ0X2VxdWFscyh2YWx1ZSwgdW5kZWZpbmVkLCAndGhlIHByb21pc2UgbXVz
dCBmdWxmaWxsIHdpdGggdW5kZWZpbmVkJyk7CisgIH0pCisgIC50aGVuKCgpID0+IHsKKyAgICBh
c3NlcnRfYXJyYXlfZXF1YWxzKHJzLmV2ZW50cywgW10pOworICAgIGFzc2VydF9hcnJheV9lcXVh
bHMod3MuZXZlbnRzLCBbJ2Nsb3NlJ10pOworCisgICAgcmV0dXJuIFByb21pc2UuYWxsKFsKKyAg
ICAgIHJzLmdldFJlYWRlcigpLmNsb3NlZCwKKyAgICAgIHdzLmdldFdyaXRlcigpLmNsb3NlZAor
ICAgIF0pOworICB9KTsKKworfSwgJ0Nsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6
IHN0YXJ0cyBjbG9zZWQ7IHByZXZlbnRDbG9zZSBvbWl0dGVkOyBmdWxmaWxsZWQgY2xvc2UgcHJv
bWlzZScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisKKyAgY29uc3QgcnMgPSByZWNvcmRpbmdS
ZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoY29udHJvbGxlcikgeworICAgICAgY29udHJvbGxl
ci5jbG9zZSgpOworICAgIH0KKyAgfSk7CisKKyAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJs
ZVN0cmVhbSh7CisgICAgY2xvc2UoKSB7CisgICAgICB0aHJvdyBlcnJvcjE7CisgICAgfQorICB9
KTsKKworICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCBycy5waXBl
VG8od3MpLCAncGlwZVRvIG11c3QgcmVqZWN0IHdpdGggdGhlIHNhbWUgZXJyb3InKS50aGVuKCgp
ID0+IHsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJzLmV2ZW50cywgW10pOworICAgIGFzc2Vy
dF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ2Nsb3NlJ10pOworCisgICAgcmV0dXJuIFByb21p
c2UuYWxsKFsKKyAgICAgIHJzLmdldFJlYWRlcigpLmNsb3NlZCwKKyAgICAgIHByb21pc2VfcmVq
ZWN0c19leGFjdGx5KHQsIGVycm9yMSwgd3MuZ2V0V3JpdGVyKCkuY2xvc2VkKQorICAgIF0pOwor
ICB9KTsKKworfSwgJ0Nsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHN0YXJ0cyBj
bG9zZWQ7IHByZXZlbnRDbG9zZSBvbWl0dGVkOyByZWplY3RlZCBjbG9zZSBwcm9taXNlJyk7CisK
K2ZvciAoY29uc3QgZmFsc3kgb2YgW3VuZGVmaW5lZCwgbnVsbCwgZmFsc2UsICswLCAtMCwgTmFO
LCAnJ10pIHsKKyAgY29uc3Qgc3RyaW5nVmVyc2lvbiA9IE9iamVjdC5pcyhmYWxzeSwgLTApID8g
Jy0wJyA6IFN0cmluZyhmYWxzeSk7CisKKyAgcHJvbWlzZV90ZXN0KCgpID0+IHsKKworICAgIGNv
bnN0IHJzID0gcmVjb3JkaW5nUmVhZGFibGVTdHJlYW0oeworICAgICAgc3RhcnQoY29udHJvbGxl
cikgeworICAgICAgICBjb250cm9sbGVyLmNsb3NlKCk7CisgICAgICB9CisgICAgfSk7CisKKyAg
ICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKCk7CisKKyAgICByZXR1cm4gcnMu
cGlwZVRvKHdzLCB7IHByZXZlbnRDbG9zZTogZmFsc3kgfSkudGhlbih2YWx1ZSA9PiB7CisgICAg
ICBhc3NlcnRfZXF1YWxzKHZhbHVlLCB1bmRlZmluZWQsICd0aGUgcHJvbWlzZSBtdXN0IGZ1bGZp
bGwgd2l0aCB1bmRlZmluZWQnKTsKKyAgICB9KQorICAgIC50aGVuKCgpID0+IHsKKyAgICAgIGFz
c2VydF9hcnJheV9lcXVhbHMocnMuZXZlbnRzLCBbXSk7CisgICAgICBhc3NlcnRfYXJyYXlfZXF1
YWxzKHdzLmV2ZW50cywgWydjbG9zZSddKTsKKworICAgICAgcmV0dXJuIFByb21pc2UuYWxsKFsK
KyAgICAgICAgcnMuZ2V0UmVhZGVyKCkuY2xvc2VkLAorICAgICAgICB3cy5nZXRXcml0ZXIoKS5j
bG9zZWQKKyAgICAgIF0pOworICAgIH0pOworCisgIH0sIGBDbG9zaW5nIG11c3QgYmUgcHJvcGFn
YXRlZCBmb3J3YXJkOiBzdGFydHMgY2xvc2VkOyBwcmV2ZW50Q2xvc2UgPSAke3N0cmluZ1ZlcnNp
b259IChmYWxzeSk7IGZ1bGZpbGxlZCBjbG9zZSBgICsKKyAgICAgYHByb21pc2VgKTsKK30KKwor
Zm9yIChjb25zdCB0cnV0aHkgb2YgW3RydWUsICdhJywgMSwgU3ltYm9sKCksIHsgfV0pIHsKKyAg
cHJvbWlzZV90ZXN0KCgpID0+IHsKKworICAgIGNvbnN0IHJzID0gcmVjb3JkaW5nUmVhZGFibGVT
dHJlYW0oeworICAgICAgc3RhcnQoY29udHJvbGxlcikgeworICAgICAgICBjb250cm9sbGVyLmNs
b3NlKCk7CisgICAgICB9CisgICAgfSk7CisKKyAgICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRh
YmxlU3RyZWFtKCk7CisKKyAgICByZXR1cm4gcnMucGlwZVRvKHdzLCB7IHByZXZlbnRDbG9zZTog
dHJ1dGh5IH0pLnRoZW4odmFsdWUgPT4geworICAgICAgYXNzZXJ0X2VxdWFscyh2YWx1ZSwgdW5k
ZWZpbmVkLCAndGhlIHByb21pc2UgbXVzdCBmdWxmaWxsIHdpdGggdW5kZWZpbmVkJyk7CisgICAg
fSkKKyAgICAudGhlbigoKSA9PiB7CisgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJzLmV2ZW50
cywgW10pOworICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFtdKTsKKworICAg
ICAgcmV0dXJuIHJzLmdldFJlYWRlcigpLmNsb3NlZDsKKyAgICB9KTsKKworICB9LCBgQ2xvc2lu
ZyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc3RhcnRzIGNsb3NlZDsgcHJldmVudENsb3Nl
ID0gJHtTdHJpbmcodHJ1dGh5KX0gKHRydXRoeSlgKTsKK30KKworcHJvbWlzZV90ZXN0KCgpID0+
IHsKKworICBjb25zdCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChj
b250cm9sbGVyKSB7CisgICAgICBjb250cm9sbGVyLmNsb3NlKCk7CisgICAgfQorICB9KTsKKwor
ICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKCk7CisKKyAgcmV0dXJuIHJzLnBp
cGVUbyh3cywgeyBwcmV2ZW50Q2xvc2U6IHRydWUsIHByZXZlbnRBYm9ydDogdHJ1ZSB9KS50aGVu
KHZhbHVlID0+IHsKKyAgICBhc3NlcnRfZXF1YWxzKHZhbHVlLCB1bmRlZmluZWQsICd0aGUgcHJv
bWlzZSBtdXN0IGZ1bGZpbGwgd2l0aCB1bmRlZmluZWQnKTsKKyAgfSkKKyAgLnRoZW4oKCkgPT4g
eworICAgIGFzc2VydF9hcnJheV9lcXVhbHMocnMuZXZlbnRzLCBbXSk7CisgICAgYXNzZXJ0X2Fy
cmF5X2VxdWFscyh3cy5ldmVudHMsIFtdKTsKKworICAgIHJldHVybiBycy5nZXRSZWFkZXIoKS5j
bG9zZWQ7CisgIH0pOworCit9LCAnQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDog
c3RhcnRzIGNsb3NlZDsgcHJldmVudENsb3NlID0gdHJ1ZSwgcHJldmVudEFib3J0ID0gdHJ1ZScp
OworCitwcm9taXNlX3Rlc3QoKCkgPT4geworCisgIGNvbnN0IHJzID0gcmVjb3JkaW5nUmVhZGFi
bGVTdHJlYW0oeworICAgIHN0YXJ0KGNvbnRyb2xsZXIpIHsKKyAgICAgIGNvbnRyb2xsZXIuY2xv
c2UoKTsKKyAgICB9CisgIH0pOworCisgIGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJl
YW0oKTsKKworICByZXR1cm4gcnMucGlwZVRvKHdzLCB7IHByZXZlbnRDbG9zZTogdHJ1ZSwgcHJl
dmVudEFib3J0OiB0cnVlLCBwcmV2ZW50Q2FuY2VsOiB0cnVlIH0pLnRoZW4odmFsdWUgPT4gewor
ICAgIGFzc2VydF9lcXVhbHModmFsdWUsIHVuZGVmaW5lZCwgJ3RoZSBwcm9taXNlIG11c3QgZnVs
ZmlsbCB3aXRoIHVuZGVmaW5lZCcpOworICB9KQorICAudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0
X2FycmF5X2VxdWFscyhycy5ldmVudHMsIFtdKTsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdz
LmV2ZW50cywgW10pOworCisgICAgcmV0dXJuIHJzLmdldFJlYWRlcigpLmNsb3NlZDsKKyAgfSk7
CisKK30sICdDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBzdGFydHMgY2xvc2Vk
OyBwcmV2ZW50Q2xvc2UgPSB0cnVlLCBwcmV2ZW50QWJvcnQgPSB0cnVlLCBwcmV2ZW50Q2FuY2Vs
ID0gdHJ1ZScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisKKyAgY29uc3QgcnMgPSByZWNvcmRp
bmdSZWFkYWJsZVN0cmVhbSgpOworCisgIGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJl
YW0oKTsKKworICBjb25zdCBwaXBlUHJvbWlzZSA9IHJzLnBpcGVUbyh3cyk7CisKKyAgdC5zdGVw
X3RpbWVvdXQoKCkgPT4gcnMuY29udHJvbGxlci5jbG9zZSgpKTsKKworICByZXR1cm4gcGlwZVBy
b21pc2UudGhlbih2YWx1ZSA9PiB7CisgICAgYXNzZXJ0X2VxdWFscyh2YWx1ZSwgdW5kZWZpbmVk
LCAndGhlIHByb21pc2UgbXVzdCBmdWxmaWxsIHdpdGggdW5kZWZpbmVkJyk7CisgIH0pCisgIC50
aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJzLmV2ZW50c1dpdGhvdXRQdWxs
cywgW10pOworICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ2Nsb3NlJ10pOwor
CisgICAgcmV0dXJuIFByb21pc2UuYWxsKFsKKyAgICAgIHJzLmdldFJlYWRlcigpLmNsb3NlZCwK
KyAgICAgIHdzLmdldFdyaXRlcigpLmNsb3NlZAorICAgIF0pOworICB9KTsKKworfSwgJ0Nsb3Np
bmcgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IGJlY29tZXMgY2xvc2VkIGFzeW5jaHJvbm91
c2x5OyBwcmV2ZW50Q2xvc2Ugb21pdHRlZDsgZnVsZmlsbGVkIGNsb3NlIHByb21pc2UnKTsKKwor
cHJvbWlzZV90ZXN0KHQgPT4geworCisgIGNvbnN0IHJzID0gcmVjb3JkaW5nUmVhZGFibGVTdHJl
YW0oKTsKKworICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKHsKKyAgICBjbG9z
ZSgpIHsKKyAgICAgIHRocm93IGVycm9yMTsKKyAgICB9CisgIH0pOworCisgIGNvbnN0IHBpcGVQ
cm9taXNlID0gcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCBycy5waXBlVG8od3Mp
LCAncGlwZVRvIG11c3QgcmVqZWN0IHdpdGggdGhlIHNhbWUgZXJyb3InKTsKKworICB0LnN0ZXBf
dGltZW91dCgoKSA9PiBycy5jb250cm9sbGVyLmNsb3NlKCkpOworCisgIHJldHVybiBwaXBlUHJv
bWlzZS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJzLmV2ZW50c1dpdGhv
dXRQdWxscywgW10pOworICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ2Nsb3Nl
J10pOworCisgICAgcmV0dXJuIFByb21pc2UuYWxsKFsKKyAgICAgIHJzLmdldFJlYWRlcigpLmNs
b3NlZCwKKyAgICAgIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMSwgd3MuZ2V0V3Jp
dGVyKCkuY2xvc2VkKQorICAgIF0pOworICB9KTsKKworfSwgJ0Nsb3NpbmcgbXVzdCBiZSBwcm9w
YWdhdGVkIGZvcndhcmQ6IGJlY29tZXMgY2xvc2VkIGFzeW5jaHJvbm91c2x5OyBwcmV2ZW50Q2xv
c2Ugb21pdHRlZDsgcmVqZWN0ZWQgY2xvc2UgcHJvbWlzZScpOworCitwcm9taXNlX3Rlc3QodCA9
PiB7CisKKyAgY29uc3QgcnMgPSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSgpOworCisgIGNvbnN0
IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0oKTsKKworICBjb25zdCBwaXBlUHJvbWlzZSA9
IHJzLnBpcGVUbyh3cywgeyBwcmV2ZW50Q2xvc2U6IHRydWUgfSk7CisKKyAgdC5zdGVwX3RpbWVv
dXQoKCkgPT4gcnMuY29udHJvbGxlci5jbG9zZSgpKTsKKworICByZXR1cm4gcGlwZVByb21pc2Uu
dGhlbih2YWx1ZSA9PiB7CisgICAgYXNzZXJ0X2VxdWFscyh2YWx1ZSwgdW5kZWZpbmVkLCAndGhl
IHByb21pc2UgbXVzdCBmdWxmaWxsIHdpdGggdW5kZWZpbmVkJyk7CisgIH0pCisgIC50aGVuKCgp
ID0+IHsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJzLmV2ZW50c1dpdGhvdXRQdWxscywgW10p
OworICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbXSk7CisKKyAgICByZXR1cm4g
cnMuZ2V0UmVhZGVyKCkuY2xvc2VkOworICB9KTsKKworfSwgJ0Nsb3NpbmcgbXVzdCBiZSBwcm9w
YWdhdGVkIGZvcndhcmQ6IGJlY29tZXMgY2xvc2VkIGFzeW5jaHJvbm91c2x5OyBwcmV2ZW50Q2xv
c2UgPSB0cnVlJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKworICBjb25zdCBycyA9IHJlY29y
ZGluZ1JlYWRhYmxlU3RyZWFtKCk7CisKKyAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0
cmVhbSh1bmRlZmluZWQsIG5ldyBDb3VudFF1ZXVpbmdTdHJhdGVneSh7IGhpZ2hXYXRlck1hcms6
IDAgfSkpOworCisgIGNvbnN0IHBpcGVQcm9taXNlID0gcnMucGlwZVRvKHdzKTsKKworICB0LnN0
ZXBfdGltZW91dCgoKSA9PiBycy5jb250cm9sbGVyLmNsb3NlKCkpOworCisgIHJldHVybiBwaXBl
UHJvbWlzZS50aGVuKHZhbHVlID0+IHsKKyAgICBhc3NlcnRfZXF1YWxzKHZhbHVlLCB1bmRlZmlu
ZWQsICd0aGUgcHJvbWlzZSBtdXN0IGZ1bGZpbGwgd2l0aCB1bmRlZmluZWQnKTsKKyAgfSkKKyAg
LnRoZW4oKCkgPT4geworICAgIGFzc2VydF9hcnJheV9lcXVhbHMocnMuZXZlbnRzV2l0aG91dFB1
bGxzLCBbXSk7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsnY2xvc2UnXSk7
CisKKyAgICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAgICAgcnMuZ2V0UmVhZGVyKCkuY2xvc2Vk
LAorICAgICAgd3MuZ2V0V3JpdGVyKCkuY2xvc2VkCisgICAgXSk7CisgIH0pOworCit9LCAnQ2xv
c2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogYmVjb21lcyBjbG9zZWQgYXN5bmNocm9u
b3VzbHk7IGRlc3QgbmV2ZXIgZGVzaXJlcyBjaHVua3M7ICcgKworICAgJ3ByZXZlbnRDbG9zZSBv
bWl0dGVkOyBmdWxmaWxsZWQgY2xvc2UgcHJvbWlzZScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7
CisKKyAgY29uc3QgcnMgPSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSgpOworCisgIGNvbnN0IHdz
ID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0oeworICAgIGNsb3NlKCkgeworICAgICAgdGhyb3cg
ZXJyb3IxOworICAgIH0KKyAgfSwgbmV3IENvdW50UXVldWluZ1N0cmF0ZWd5KHsgaGlnaFdhdGVy
TWFyazogMCB9KSk7CisKKyAgY29uc3QgcGlwZVByb21pc2UgPSBwcm9taXNlX3JlamVjdHNfZXhh
Y3RseSh0LCBlcnJvcjEsIHJzLnBpcGVUbyh3cyksICdwaXBlVG8gbXVzdCByZWplY3Qgd2l0aCB0
aGUgc2FtZSBlcnJvcicpOworCisgIHQuc3RlcF90aW1lb3V0KCgpID0+IHJzLmNvbnRyb2xsZXIu
Y2xvc2UoKSk7CisKKyAgcmV0dXJuIHBpcGVQcm9taXNlLnRoZW4oKCkgPT4geworICAgIGFzc2Vy
dF9hcnJheV9lcXVhbHMocnMuZXZlbnRzV2l0aG91dFB1bGxzLCBbXSk7CisgICAgYXNzZXJ0X2Fy
cmF5X2VxdWFscyh3cy5ldmVudHMsIFsnY2xvc2UnXSk7CisKKyAgICByZXR1cm4gUHJvbWlzZS5h
bGwoWworICAgICAgcnMuZ2V0UmVhZGVyKCkuY2xvc2VkLAorICAgICAgcHJvbWlzZV9yZWplY3Rz
X2V4YWN0bHkodCwgZXJyb3IxLCB3cy5nZXRXcml0ZXIoKS5jbG9zZWQpCisgICAgXSk7CisgIH0p
OworCit9LCAnQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogYmVjb21lcyBjbG9z
ZWQgYXN5bmNocm9ub3VzbHk7IGRlc3QgbmV2ZXIgZGVzaXJlcyBjaHVua3M7ICcgKworICAgJ3By
ZXZlbnRDbG9zZSBvbWl0dGVkOyByZWplY3RlZCBjbG9zZSBwcm9taXNlJyk7CisKK3Byb21pc2Vf
dGVzdCh0ID0+IHsKKworICBjb25zdCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKCk7CisK
KyAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSh1bmRlZmluZWQsIG5ldyBDb3Vu
dFF1ZXVpbmdTdHJhdGVneSh7IGhpZ2hXYXRlck1hcms6IDAgfSkpOworCisgIGNvbnN0IHBpcGVQ
cm9taXNlID0gcnMucGlwZVRvKHdzLCB7IHByZXZlbnRDbG9zZTogdHJ1ZSB9KTsKKworICB0LnN0
ZXBfdGltZW91dCgoKSA9PiBycy5jb250cm9sbGVyLmNsb3NlKCkpOworCisgIHJldHVybiBwaXBl
UHJvbWlzZS50aGVuKHZhbHVlID0+IHsKKyAgICBhc3NlcnRfZXF1YWxzKHZhbHVlLCB1bmRlZmlu
ZWQsICd0aGUgcHJvbWlzZSBtdXN0IGZ1bGZpbGwgd2l0aCB1bmRlZmluZWQnKTsKKyAgfSkKKyAg
LnRoZW4oKCkgPT4geworICAgIGFzc2VydF9hcnJheV9lcXVhbHMocnMuZXZlbnRzV2l0aG91dFB1
bGxzLCBbXSk7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFtdKTsKKworICAg
IHJldHVybiBycy5nZXRSZWFkZXIoKS5jbG9zZWQ7CisgIH0pOworCit9LCAnQ2xvc2luZyBtdXN0
IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogYmVjb21lcyBjbG9zZWQgYXN5bmNocm9ub3VzbHk7IGRl
c3QgbmV2ZXIgZGVzaXJlcyBjaHVua3M7ICcgKworICAgJ3ByZXZlbnRDbG9zZSA9IHRydWUnKTsK
KworcHJvbWlzZV90ZXN0KHQgPT4geworCisgIGNvbnN0IHJzID0gcmVjb3JkaW5nUmVhZGFibGVT
dHJlYW0oKTsKKworICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKCk7CisKKyAg
Y29uc3QgcGlwZVByb21pc2UgPSBycy5waXBlVG8od3MpOworCisgIHQuc3RlcF90aW1lb3V0KCgp
ID0+IHsKKyAgICBycy5jb250cm9sbGVyLmVucXVldWUoJ0hlbGxvJyk7CisgICAgdC5zdGVwX3Rp
bWVvdXQoKCkgPT4gcnMuY29udHJvbGxlci5jbG9zZSgpKTsKKyAgfSwgMTApOworCisgIHJldHVy
biBwaXBlUHJvbWlzZS50aGVuKHZhbHVlID0+IHsKKyAgICBhc3NlcnRfZXF1YWxzKHZhbHVlLCB1
bmRlZmluZWQsICd0aGUgcHJvbWlzZSBtdXN0IGZ1bGZpbGwgd2l0aCB1bmRlZmluZWQnKTsKKyAg
fSkKKyAgLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9hcnJheV9lcXVhbHMocnMuZXZlbnRzV2l0
aG91dFB1bGxzLCBbXSk7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsnd3Jp
dGUnLCAnSGVsbG8nLCAnY2xvc2UnXSk7CisKKyAgICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAg
ICAgcnMuZ2V0UmVhZGVyKCkuY2xvc2VkLAorICAgICAgd3MuZ2V0V3JpdGVyKCkuY2xvc2VkCisg
ICAgXSk7CisgIH0pOworCit9LCAnQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDog
YmVjb21lcyBjbG9zZWQgYWZ0ZXIgb25lIGNodW5rOyBwcmV2ZW50Q2xvc2Ugb21pdHRlZDsgZnVs
ZmlsbGVkIGNsb3NlIHByb21pc2UnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworCisgIGNvbnN0
IHJzID0gcmVjb3JkaW5nUmVhZGFibGVTdHJlYW0oKTsKKworICBjb25zdCB3cyA9IHJlY29yZGlu
Z1dyaXRhYmxlU3RyZWFtKHsKKyAgICBjbG9zZSgpIHsKKyAgICAgIHRocm93IGVycm9yMTsKKyAg
ICB9CisgIH0pOworCisgIGNvbnN0IHBpcGVQcm9taXNlID0gcHJvbWlzZV9yZWplY3RzX2V4YWN0
bHkodCwgZXJyb3IxLCBycy5waXBlVG8od3MpLCAncGlwZVRvIG11c3QgcmVqZWN0IHdpdGggdGhl
IHNhbWUgZXJyb3InKTsKKworICB0LnN0ZXBfdGltZW91dCgoKSA9PiB7CisgICAgcnMuY29udHJv
bGxlci5lbnF1ZXVlKCdIZWxsbycpOworICAgIHQuc3RlcF90aW1lb3V0KCgpID0+IHJzLmNvbnRy
b2xsZXIuY2xvc2UoKSk7CisgIH0sIDEwKTsKKworICByZXR1cm4gcGlwZVByb21pc2UudGhlbigo
KSA9PiB7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhycy5ldmVudHNXaXRob3V0UHVsbHMsIFtd
KTsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWyd3cml0ZScsICdIZWxsbycs
ICdjbG9zZSddKTsKKworICAgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAgICBycy5nZXRSZWFk
ZXIoKS5jbG9zZWQsCisgICAgICBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIHdz
LmdldFdyaXRlcigpLmNsb3NlZCkKKyAgICBdKTsKKyAgfSk7CisKK30sICdDbG9zaW5nIG11c3Qg
YmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBiZWNvbWVzIGNsb3NlZCBhZnRlciBvbmUgY2h1bms7IHBy
ZXZlbnRDbG9zZSBvbWl0dGVkOyByZWplY3RlZCBjbG9zZSBwcm9taXNlJyk7CisKK3Byb21pc2Vf
dGVzdCh0ID0+IHsKKworICBjb25zdCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKCk7CisK
KyAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSgpOworCisgIGNvbnN0IHBpcGVQ
cm9taXNlID0gcnMucGlwZVRvKHdzLCB7IHByZXZlbnRDbG9zZTogdHJ1ZSB9KTsKKworICB0LnN0
ZXBfdGltZW91dCgoKSA9PiB7CisgICAgcnMuY29udHJvbGxlci5lbnF1ZXVlKCdIZWxsbycpOwor
ICAgIHQuc3RlcF90aW1lb3V0KCgpID0+IHJzLmNvbnRyb2xsZXIuY2xvc2UoKSk7CisgIH0sIDEw
KTsKKworICByZXR1cm4gcGlwZVByb21pc2UudGhlbih2YWx1ZSA9PiB7CisgICAgYXNzZXJ0X2Vx
dWFscyh2YWx1ZSwgdW5kZWZpbmVkLCAndGhlIHByb21pc2UgbXVzdCBmdWxmaWxsIHdpdGggdW5k
ZWZpbmVkJyk7CisgIH0pCisgIC50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxz
KHJzLmV2ZW50c1dpdGhvdXRQdWxscywgW10pOworICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3Mu
ZXZlbnRzLCBbJ3dyaXRlJywgJ0hlbGxvJ10pOworCisgICAgcmV0dXJuIHJzLmdldFJlYWRlcigp
LmNsb3NlZDsKKyAgfSk7CisKK30sICdDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJk
OiBiZWNvbWVzIGNsb3NlZCBhZnRlciBvbmUgY2h1bms7IHByZXZlbnRDbG9zZSA9IHRydWUnKTsK
KworcHJvbWlzZV90ZXN0KCgpID0+IHsKKworICBjb25zdCBycyA9IHJlY29yZGluZ1JlYWRhYmxl
U3RyZWFtKCk7CisKKyAgbGV0IHJlc29sdmVXcml0ZVByb21pc2U7CisgIGNvbnN0IHdzID0gcmVj
b3JkaW5nV3JpdGFibGVTdHJlYW0oeworICAgIHdyaXRlKCkgeworICAgICAgcmV0dXJuIG5ldyBQ
cm9taXNlKHJlc29sdmUgPT4geworICAgICAgICByZXNvbHZlV3JpdGVQcm9taXNlID0gcmVzb2x2
ZTsKKyAgICAgIH0pOworICAgIH0KKyAgfSk7CisKKyAgbGV0IHBpcGVDb21wbGV0ZSA9IGZhbHNl
OworICBjb25zdCBwaXBlUHJvbWlzZSA9IHJzLnBpcGVUbyh3cykudGhlbigoKSA9PiB7CisgICAg
cGlwZUNvbXBsZXRlID0gdHJ1ZTsKKyAgfSk7CisKKyAgcnMuY29udHJvbGxlci5lbnF1ZXVlKCdh
Jyk7CisgIHJzLmNvbnRyb2xsZXIuY2xvc2UoKTsKKworICAvLyBGbHVzaCBhc3luYyBldmVudHMg
YW5kIHZlcmlmeSB0aGF0IG5vIHNodXRkb3duIG9jY3Vycy4KKyAgcmV0dXJuIGZsdXNoQXN5bmNF
dmVudHMoKS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywg
Wyd3cml0ZScsICdhJ10pOyAvLyBubyAnY2xvc2UnCisgICAgYXNzZXJ0X2VxdWFscyhwaXBlQ29t
cGxldGUsIGZhbHNlLCAndGhlIHBpcGUgbXVzdCBub3QgYmUgY29tcGxldGUnKTsKKworICAgIHJl
c29sdmVXcml0ZVByb21pc2UoKTsKKworICAgIHJldHVybiBwaXBlUHJvbWlzZS50aGVuKCgpID0+
IHsKKyAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ3dyaXRlJywgJ2EnLCAn
Y2xvc2UnXSk7CisgICAgfSk7CisgIH0pOworCit9LCAnQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0
ZWQgZm9yd2FyZDogc2h1dGRvd24gbXVzdCBub3Qgb2NjdXIgdW50aWwgdGhlIGZpbmFsIHdyaXRl
IGNvbXBsZXRlcycpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworCisgIGNvbnN0IHJzID0gcmVj
b3JkaW5nUmVhZGFibGVTdHJlYW0oKTsKKworICBsZXQgcmVzb2x2ZVdyaXRlUHJvbWlzZTsKKyAg
Y29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSh7CisgICAgd3JpdGUoKSB7CisgICAg
ICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7CisgICAgICAgIHJlc29sdmVXcml0ZVBy
b21pc2UgPSByZXNvbHZlOworICAgICAgfSk7CisgICAgfQorICB9KTsKKworICBsZXQgcGlwZUNv
bXBsZXRlID0gZmFsc2U7CisgIGNvbnN0IHBpcGVQcm9taXNlID0gcnMucGlwZVRvKHdzLCB7IHBy
ZXZlbnRDbG9zZTogdHJ1ZSB9KS50aGVuKCgpID0+IHsKKyAgICBwaXBlQ29tcGxldGUgPSB0cnVl
OworICB9KTsKKworICBycy5jb250cm9sbGVyLmVucXVldWUoJ2EnKTsKKyAgcnMuY29udHJvbGxl
ci5jbG9zZSgpOworCisgIC8vIEZsdXNoIGFzeW5jIGV2ZW50cyBhbmQgdmVyaWZ5IHRoYXQgbm8g
c2h1dGRvd24gb2NjdXJzLgorICByZXR1cm4gZmx1c2hBc3luY0V2ZW50cygpLnRoZW4oKCkgPT4g
eworICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ3dyaXRlJywgJ2EnXSwKKyAg
ICAgICd0aGUgY2h1bmsgbXVzdCBoYXZlIGJlZW4gd3JpdHRlbiwgYnV0IGNsb3NlIG11c3Qgbm90
IGhhdmUgaGFwcGVuZWQnKTsKKyAgICBhc3NlcnRfZXF1YWxzKHBpcGVDb21wbGV0ZSwgZmFsc2Us
ICd0aGUgcGlwZSBtdXN0IG5vdCBiZSBjb21wbGV0ZScpOworCisgICAgcmVzb2x2ZVdyaXRlUHJv
bWlzZSgpOworCisgICAgcmV0dXJuIHBpcGVQcm9taXNlOworICB9KS50aGVuKCgpID0+IGZsdXNo
QXN5bmNFdmVudHMoKSkudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5l
dmVudHMsIFsnd3JpdGUnLCAnYSddLAorICAgICAgJ3RoZSBjaHVuayBtdXN0IGhhdmUgYmVlbiB3
cml0dGVuLCBidXQgY2xvc2UgbXVzdCBub3QgaGF2ZSBoYXBwZW5lZCcpOworICB9KTsKKworfSwg
J0Nsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHNodXRkb3duIG11c3Qgbm90IG9j
Y3VyIHVudGlsIHRoZSBmaW5hbCB3cml0ZSBjb21wbGV0ZXM7IHByZXZlbnRDbG9zZSA9IHRydWUn
KTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKworICBjb25zdCBycyA9IHJlY29yZGluZ1JlYWRh
YmxlU3RyZWFtKCk7CisKKyAgbGV0IHJlc29sdmVXcml0ZUNhbGxlZDsKKyAgY29uc3Qgd3JpdGVD
YWxsZWRQcm9taXNlID0gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7CisgICAgcmVzb2x2ZVdyaXRl
Q2FsbGVkID0gcmVzb2x2ZTsKKyAgfSk7CisKKyAgbGV0IHJlc29sdmVXcml0ZVByb21pc2U7Cisg
IGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0oeworICAgIHdyaXRlKCkgeworICAg
ICAgcmVzb2x2ZVdyaXRlQ2FsbGVkKCk7CisKKyAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNv
bHZlID0+IHsKKyAgICAgICAgcmVzb2x2ZVdyaXRlUHJvbWlzZSA9IHJlc29sdmU7CisgICAgICB9
KTsKKyAgICB9CisgIH0sIG5ldyBDb3VudFF1ZXVpbmdTdHJhdGVneSh7IGhpZ2hXYXRlck1hcms6
IDIgfSkpOworCisgIGxldCBwaXBlQ29tcGxldGUgPSBmYWxzZTsKKyAgY29uc3QgcGlwZVByb21p
c2UgPSBycy5waXBlVG8od3MpLnRoZW4oKCkgPT4geworICAgIHBpcGVDb21wbGV0ZSA9IHRydWU7
CisgIH0pOworCisgIHJzLmNvbnRyb2xsZXIuZW5xdWV1ZSgnYScpOworICBycy5jb250cm9sbGVy
LmVucXVldWUoJ2InKTsKKworICByZXR1cm4gd3JpdGVDYWxsZWRQcm9taXNlLnRoZW4oKCkgPT4g
Zmx1c2hBc3luY0V2ZW50cygpKS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxz
KHdzLmV2ZW50cywgWyd3cml0ZScsICdhJ10sCisgICAgICAndGhlIGZpcnN0IGNodW5rIG11c3Qg
aGF2ZSBiZWVuIHdyaXR0ZW4sIGJ1dCBjbG9zZSBtdXN0IG5vdCBoYXZlIGhhcHBlbmVkIHlldCcp
OworICAgIGFzc2VydF9mYWxzZShwaXBlQ29tcGxldGUsICd0aGUgcGlwZSBzaG91bGQgbm90IGNv
bXBsZXRlIHdoaWxlIHRoZSBmaXJzdCB3cml0ZSBpcyBwZW5kaW5nJyk7CisKKyAgICBycy5jb250
cm9sbGVyLmNsb3NlKCk7CisgICAgcmVzb2x2ZVdyaXRlUHJvbWlzZSgpOworICB9KS50aGVuKCgp
ID0+IGZsdXNoQXN5bmNFdmVudHMoKSkudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X2FycmF5X2Vx
dWFscyh3cy5ldmVudHMsIFsnd3JpdGUnLCAnYScsICd3cml0ZScsICdiJ10sCisgICAgICAndGhl
IHNlY29uZCBjaHVuayBtdXN0IGhhdmUgYmVlbiB3cml0dGVuLCBidXQgY2xvc2UgbXVzdCBub3Qg
aGF2ZSBoYXBwZW5lZCB5ZXQnKTsKKyAgICBhc3NlcnRfZmFsc2UocGlwZUNvbXBsZXRlLCAndGhl
IHBpcGUgc2hvdWxkIG5vdCBjb21wbGV0ZSB3aGlsZSB0aGUgc2Vjb25kIHdyaXRlIGlzIHBlbmRp
bmcnKTsKKworICAgIHJlc29sdmVXcml0ZVByb21pc2UoKTsKKyAgICByZXR1cm4gcGlwZVByb21p
c2U7CisgIH0pLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRz
LCBbJ3dyaXRlJywgJ2EnLCAnd3JpdGUnLCAnYicsICdjbG9zZSddLAorICAgICAgJ2FsbCBjaHVu
a3MgbXVzdCBoYXZlIGJlZW4gd3JpdHRlbiBhbmQgY2xvc2UgbXVzdCBoYXZlIGhhcHBlbmVkJyk7
CisgIH0pOworCit9LCAnQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc2h1dGRv
d24gbXVzdCBub3Qgb2NjdXIgdW50aWwgdGhlIGZpbmFsIHdyaXRlIGNvbXBsZXRlczsgYmVjb21l
cyBjbG9zZWQgYWZ0ZXIgZmlyc3Qgd3JpdGUnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKwor
ICBjb25zdCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKCk7CisKKyAgbGV0IHJlc29sdmVX
cml0ZUNhbGxlZDsKKyAgY29uc3Qgd3JpdGVDYWxsZWRQcm9taXNlID0gbmV3IFByb21pc2UocmVz
b2x2ZSA9PiB7CisgICAgcmVzb2x2ZVdyaXRlQ2FsbGVkID0gcmVzb2x2ZTsKKyAgfSk7CisKKyAg
bGV0IHJlc29sdmVXcml0ZVByb21pc2U7CisgIGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVT
dHJlYW0oeworICAgIHdyaXRlKCkgeworICAgICAgcmVzb2x2ZVdyaXRlQ2FsbGVkKCk7CisKKyAg
ICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKKyAgICAgICAgcmVzb2x2ZVdyaXRl
UHJvbWlzZSA9IHJlc29sdmU7CisgICAgICB9KTsKKyAgICB9CisgIH0sIG5ldyBDb3VudFF1ZXVp
bmdTdHJhdGVneSh7IGhpZ2hXYXRlck1hcms6IDIgfSkpOworCisgIGxldCBwaXBlQ29tcGxldGUg
PSBmYWxzZTsKKyAgY29uc3QgcGlwZVByb21pc2UgPSBycy5waXBlVG8od3MsIHsgcHJldmVudENs
b3NlOiB0cnVlIH0pLnRoZW4oKCkgPT4geworICAgIHBpcGVDb21wbGV0ZSA9IHRydWU7CisgIH0p
OworCisgIHJzLmNvbnRyb2xsZXIuZW5xdWV1ZSgnYScpOworICBycy5jb250cm9sbGVyLmVucXVl
dWUoJ2InKTsKKworICByZXR1cm4gd3JpdGVDYWxsZWRQcm9taXNlLnRoZW4oKCkgPT4gZmx1c2hB
c3luY0V2ZW50cygpKS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2
ZW50cywgWyd3cml0ZScsICdhJ10sCisgICAgICAndGhlIGZpcnN0IGNodW5rIG11c3QgaGF2ZSBi
ZWVuIHdyaXR0ZW4sIGJ1dCBjbG9zZSBtdXN0IG5vdCBoYXZlIGhhcHBlbmVkJyk7CisgICAgYXNz
ZXJ0X2ZhbHNlKHBpcGVDb21wbGV0ZSwgJ3RoZSBwaXBlIHNob3VsZCBub3QgY29tcGxldGUgd2hp
bGUgdGhlIGZpcnN0IHdyaXRlIGlzIHBlbmRpbmcnKTsKKworICAgIHJzLmNvbnRyb2xsZXIuY2xv
c2UoKTsKKyAgICByZXNvbHZlV3JpdGVQcm9taXNlKCk7CisgIH0pLnRoZW4oKCkgPT4gZmx1c2hB
c3luY0V2ZW50cygpKS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2
ZW50cywgWyd3cml0ZScsICdhJywgJ3dyaXRlJywgJ2InXSwKKyAgICAgICd0aGUgc2Vjb25kIGNo
dW5rIG11c3QgaGF2ZSBiZWVuIHdyaXR0ZW4sIGJ1dCBjbG9zZSBtdXN0IG5vdCBoYXZlIGhhcHBl
bmVkJyk7CisgICAgYXNzZXJ0X2ZhbHNlKHBpcGVDb21wbGV0ZSwgJ3RoZSBwaXBlIHNob3VsZCBu
b3QgY29tcGxldGUgd2hpbGUgdGhlIHNlY29uZCB3cml0ZSBpcyBwZW5kaW5nJyk7CisKKyAgICBy
ZXNvbHZlV3JpdGVQcm9taXNlKCk7CisgICAgcmV0dXJuIHBpcGVQcm9taXNlOworICB9KS50aGVu
KCgpID0+IGZsdXNoQXN5bmNFdmVudHMoKSkudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X2FycmF5
X2VxdWFscyh3cy5ldmVudHMsIFsnd3JpdGUnLCAnYScsICd3cml0ZScsICdiJ10sCisgICAgICAn
YWxsIGNodW5rcyBtdXN0IGhhdmUgYmVlbiB3cml0dGVuLCBidXQgY2xvc2UgbXVzdCBub3QgaGF2
ZSBoYXBwZW5lZCcpOworICB9KTsKKworfSwgJ0Nsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGZv
cndhcmQ6IHNodXRkb3duIG11c3Qgbm90IG9jY3VyIHVudGlsIHRoZSBmaW5hbCB3cml0ZSBjb21w
bGV0ZXM7IGJlY29tZXMgY2xvc2VkIGFmdGVyIGZpcnN0IHdyaXRlOyBwcmV2ZW50Q2xvc2UgPSB0
cnVlJyk7CisKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBjb25zdCBycyA9IHJlY29yZGluZ1Jl
YWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjLmVucXVldWUoJ2EnKTsKKyAg
ICAgIGMuZW5xdWV1ZSgnYicpOworICAgICAgYy5jbG9zZSgpOworICAgIH0KKyAgfSk7CisgIGxl
dCByZWplY3RXcml0ZVByb21pc2U7CisgIGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJl
YW0oeworICAgIHdyaXRlKCkgeworICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCBy
ZWplY3QpID0+IHsKKyAgICAgICAgcmVqZWN0V3JpdGVQcm9taXNlID0gcmVqZWN0OworICAgICAg
fSk7CisgICAgfQorICB9LCB7IGhpZ2hXYXRlck1hcms6IDMgfSk7CisgIGNvbnN0IHBpcGVUb1By
b21pc2UgPSBycy5waXBlVG8od3MpOworICByZXR1cm4gZGVsYXkoMCkudGhlbigoKSA9PiB7Cisg
ICAgcmVqZWN0V3JpdGVQcm9taXNlKGVycm9yMSk7CisgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0
c19leGFjdGx5KHQsIGVycm9yMSwgcGlwZVRvUHJvbWlzZSwgJ3BpcGVUbyBzaG91bGQgcmVqZWN0
Jyk7CisgIH0pLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9hcnJheV9lcXVhbHMocnMuZXZlbnRz
LCBbXSk7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsnd3JpdGUnLCAnYSdd
KTsKKworICAgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAgICBycy5nZXRSZWFkZXIoKS5jbG9z
ZWQsCisgICAgICBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIHdzLmdldFdyaXRl
cigpLmNsb3NlZCwgJ3dzIHNob3VsZCBiZSBlcnJvcmVkJykKKyAgICBdKTsKKyAgfSk7Cit9LCAn
Q2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogZXJyb3JpbmcgdGhlIHdyaXRhYmxl
IHdoaWxlIGZsdXNoaW5nIHBlbmRpbmcgd3JpdGVzIHNob3VsZCBlcnJvciBwaXBlVG8nKTsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy9waXBpbmcvY2xvc2UtcHJvcGFnYXRpb24tZm9yd2FyZC5hbnkud29ya2VyLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy9waXBpbmcvY2xvc2UtcHJvcGFnYXRpb24tZm9yd2FyZC5hbnkud29ya2VyLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi43NTc4MThlMmY4YmI4YTEwZTMzNjViZjg1MzYyMTQ0MDM4MjU3MTM5Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL3BpcGluZy9jbG9zZS1wcm9wYWdhdGlvbi1mb3J3YXJkLmFueS53b3JrZXIt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMzIgQEAKKworRkFJTCBDbG9zaW5nIG11c3QgYmUgcHJv
cGFnYXRlZCBmb3J3YXJkOiBzdGFydHMgY2xvc2VkOyBwcmV2ZW50Q2xvc2Ugb21pdHRlZDsgZnVs
ZmlsbGVkIGNsb3NlIHByb21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0K
K0ZBSUwgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc3RhcnRzIGNsb3NlZDsg
cHJldmVudENsb3NlIG9taXR0ZWQ7IHJlamVjdGVkIGNsb3NlIHByb21pc2UgQ2FuJ3QgZmluZCB2
YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQg
Zm9yd2FyZDogc3RhcnRzIGNsb3NlZDsgcHJldmVudENsb3NlID0gdW5kZWZpbmVkIChmYWxzeSk7
IGZ1bGZpbGxlZCBjbG9zZSBwcm9taXNlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3Ry
ZWFtCitGQUlMIENsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHN0YXJ0cyBjbG9z
ZWQ7IHByZXZlbnRDbG9zZSA9IG51bGwgKGZhbHN5KTsgZnVsZmlsbGVkIGNsb3NlIHByb21pc2Ug
Q2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgQ2xvc2luZyBtdXN0IGJl
IHByb3BhZ2F0ZWQgZm9yd2FyZDogc3RhcnRzIGNsb3NlZDsgcHJldmVudENsb3NlID0gZmFsc2Ug
KGZhbHN5KTsgZnVsZmlsbGVkIGNsb3NlIHByb21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3Jp
dGFibGVTdHJlYW0KK0ZBSUwgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc3Rh
cnRzIGNsb3NlZDsgcHJldmVudENsb3NlID0gMCAoZmFsc3kpOyBmdWxmaWxsZWQgY2xvc2UgcHJv
bWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBDbG9zaW5nIG11
c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBzdGFydHMgY2xvc2VkOyBwcmV2ZW50Q2xvc2UgPSAt
MCAoZmFsc3kpOyBmdWxmaWxsZWQgY2xvc2UgcHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBX
cml0YWJsZVN0cmVhbQorRkFJTCBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBz
dGFydHMgY2xvc2VkOyBwcmV2ZW50Q2xvc2UgPSBOYU4gKGZhbHN5KTsgZnVsZmlsbGVkIGNsb3Nl
IHByb21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgQ2xvc2lu
ZyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc3RhcnRzIGNsb3NlZDsgcHJldmVudENsb3Nl
ID0gIChmYWxzeSk7IGZ1bGZpbGxlZCBjbG9zZSBwcm9taXNlIENhbid0IGZpbmQgdmFyaWFibGU6
IFdyaXRhYmxlU3RyZWFtCitGQUlMIENsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6
IHN0YXJ0cyBjbG9zZWQ7IHByZXZlbnRDbG9zZSA9IHRydWUgKHRydXRoeSkgQ2FuJ3QgZmluZCB2
YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQg
Zm9yd2FyZDogc3RhcnRzIGNsb3NlZDsgcHJldmVudENsb3NlID0gYSAodHJ1dGh5KSBDYW4ndCBm
aW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBDbG9zaW5nIG11c3QgYmUgcHJvcGFn
YXRlZCBmb3J3YXJkOiBzdGFydHMgY2xvc2VkOyBwcmV2ZW50Q2xvc2UgPSAxICh0cnV0aHkpIENh
bid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIENsb3NpbmcgbXVzdCBiZSBw
cm9wYWdhdGVkIGZvcndhcmQ6IHN0YXJ0cyBjbG9zZWQ7IHByZXZlbnRDbG9zZSA9IFN5bWJvbCgp
ICh0cnV0aHkpIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIENsb3Np
bmcgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHN0YXJ0cyBjbG9zZWQ7IHByZXZlbnRDbG9z
ZSA9IFtvYmplY3QgT2JqZWN0XSAodHJ1dGh5KSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJs
ZVN0cmVhbQorRkFJTCBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBzdGFydHMg
Y2xvc2VkOyBwcmV2ZW50Q2xvc2UgPSB0cnVlLCBwcmV2ZW50QWJvcnQgPSB0cnVlIENhbid0IGZp
bmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIENsb3NpbmcgbXVzdCBiZSBwcm9wYWdh
dGVkIGZvcndhcmQ6IHN0YXJ0cyBjbG9zZWQ7IHByZXZlbnRDbG9zZSA9IHRydWUsIHByZXZlbnRB
Ym9ydCA9IHRydWUsIHByZXZlbnRDYW5jZWwgPSB0cnVlIENhbid0IGZpbmQgdmFyaWFibGU6IFdy
aXRhYmxlU3RyZWFtCitGQUlMIENsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IGJl
Y29tZXMgY2xvc2VkIGFzeW5jaHJvbm91c2x5OyBwcmV2ZW50Q2xvc2Ugb21pdHRlZDsgZnVsZmls
bGVkIGNsb3NlIHByb21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZB
SUwgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogYmVjb21lcyBjbG9zZWQgYXN5
bmNocm9ub3VzbHk7IHByZXZlbnRDbG9zZSBvbWl0dGVkOyByZWplY3RlZCBjbG9zZSBwcm9taXNl
IENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIENsb3NpbmcgbXVzdCBi
ZSBwcm9wYWdhdGVkIGZvcndhcmQ6IGJlY29tZXMgY2xvc2VkIGFzeW5jaHJvbm91c2x5OyBwcmV2
ZW50Q2xvc2UgPSB0cnVlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlM
IENsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IGJlY29tZXMgY2xvc2VkIGFzeW5j
aHJvbm91c2x5OyBkZXN0IG5ldmVyIGRlc2lyZXMgY2h1bmtzOyBwcmV2ZW50Q2xvc2Ugb21pdHRl
ZDsgZnVsZmlsbGVkIGNsb3NlIHByb21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVT
dHJlYW0KK0ZBSUwgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogYmVjb21lcyBj
bG9zZWQgYXN5bmNocm9ub3VzbHk7IGRlc3QgbmV2ZXIgZGVzaXJlcyBjaHVua3M7IHByZXZlbnRD
bG9zZSBvbWl0dGVkOyByZWplY3RlZCBjbG9zZSBwcm9taXNlIENhbid0IGZpbmQgdmFyaWFibGU6
IFdyaXRhYmxlU3RyZWFtCitGQUlMIENsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6
IGJlY29tZXMgY2xvc2VkIGFzeW5jaHJvbm91c2x5OyBkZXN0IG5ldmVyIGRlc2lyZXMgY2h1bmtz
OyBwcmV2ZW50Q2xvc2UgPSB0cnVlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFt
CitGQUlMIENsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IGJlY29tZXMgY2xvc2Vk
IGFmdGVyIG9uZSBjaHVuazsgcHJldmVudENsb3NlIG9taXR0ZWQ7IGZ1bGZpbGxlZCBjbG9zZSBw
cm9taXNlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIENsb3Npbmcg
bXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IGJlY29tZXMgY2xvc2VkIGFmdGVyIG9uZSBjaHVu
azsgcHJldmVudENsb3NlIG9taXR0ZWQ7IHJlamVjdGVkIGNsb3NlIHByb21pc2UgQ2FuJ3QgZmlu
ZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0
ZWQgZm9yd2FyZDogYmVjb21lcyBjbG9zZWQgYWZ0ZXIgb25lIGNodW5rOyBwcmV2ZW50Q2xvc2Ug
PSB0cnVlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIENsb3Npbmcg
bXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHNodXRkb3duIG11c3Qgbm90IG9jY3VyIHVudGls
IHRoZSBmaW5hbCB3cml0ZSBjb21wbGV0ZXMgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVT
dHJlYW0KK0ZBSUwgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc2h1dGRvd24g
bXVzdCBub3Qgb2NjdXIgdW50aWwgdGhlIGZpbmFsIHdyaXRlIGNvbXBsZXRlczsgcHJldmVudENs
b3NlID0gdHJ1ZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBDbG9z
aW5nIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBzaHV0ZG93biBtdXN0IG5vdCBvY2N1ciB1
bnRpbCB0aGUgZmluYWwgd3JpdGUgY29tcGxldGVzOyBiZWNvbWVzIGNsb3NlZCBhZnRlciBmaXJz
dCB3cml0ZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBDbG9zaW5n
IG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBzaHV0ZG93biBtdXN0IG5vdCBvY2N1ciB1bnRp
bCB0aGUgZmluYWwgd3JpdGUgY29tcGxldGVzOyBiZWNvbWVzIGNsb3NlZCBhZnRlciBmaXJzdCB3
cml0ZTsgcHJldmVudENsb3NlID0gdHJ1ZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0
cmVhbQorRkFJTCBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBlcnJvcmluZyB0
aGUgd3JpdGFibGUgd2hpbGUgZmx1c2hpbmcgcGVuZGluZyB3cml0ZXMgc2hvdWxkIGVycm9yIHBp
cGVUbyBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5n
L2Nsb3NlLXByb3BhZ2F0aW9uLWZvcndhcmQuYW55Lndvcmtlci5odG1sIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9jbG9zZS1wcm9w
YWdhdGlvbi1mb3J3YXJkLmFueS53b3JrZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMzgyOTEzNTI4ZTY5
M2IzYTVkNTZjNjYwYTQ1MDYwOTgwYjU0OGMzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9jbG9zZS1w
cm9wYWdhdGlvbi1mb3J3YXJkLmFueS53b3JrZXIuaHRtbApAQCAtMCwwICsxIEBACis8IS0tIFRo
aXMgZmlsZSBpcyByZXF1aXJlZCBmb3IgV2ViS2l0IHRlc3QgaW5mcmFzdHJ1Y3R1cmUgdG8gcnVu
IHRoZSB0ZW1wbGF0ZWQgdGVzdCAtLT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvcGlwaW5nL2Nsb3NlLXByb3BhZ2F0aW9uLWZvcndhcmQuZGVkaWNhdGVkd29ya2VyLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy9waXBpbmcvY2xvc2UtcHJvcGFnYXRpb24tZm9yd2FyZC5kZWRpY2F0ZWR3b3JrZXItZXhw
ZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NmM4NWUzNjkyNTYyZTE2
MjNhOGZjYjM1YTRjMjI0Y2ZlNWIyYWI3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy9waXBpbmcvY2xvc2UtcHJvcGFnYXRpb24tZm9yd2FyZC5kZWRpY2F0ZWR3b3Jr
ZXItZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotCi1GQUlMIENs
b3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHN0YXJ0cyBjbG9zZWQ7IHByZXZlbnRD
bG9zZSBvbWl0dGVkOyBmdWxmaWxsZWQgY2xvc2UgcHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxl
OiBXcml0YWJsZVN0cmVhbQotRkFJTCBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJk
OiBzdGFydHMgY2xvc2VkOyBwcmV2ZW50Q2xvc2Ugb21pdHRlZDsgcmVqZWN0ZWQgY2xvc2UgcHJv
bWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBDbG9zaW5nIG11
c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBzdGFydHMgY2xvc2VkOyBwcmV2ZW50Q2xvc2UgPSB1
bmRlZmluZWQgKGZhbHN5KTsgZnVsZmlsbGVkIGNsb3NlIHByb21pc2UgQ2FuJ3QgZmluZCB2YXJp
YWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9y
d2FyZDogc3RhcnRzIGNsb3NlZDsgcHJldmVudENsb3NlID0gbnVsbCAoZmFsc3kpOyBmdWxmaWxs
ZWQgY2xvc2UgcHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJ
TCBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBzdGFydHMgY2xvc2VkOyBwcmV2
ZW50Q2xvc2UgPSBmYWxzZSAoZmFsc3kpOyBmdWxmaWxsZWQgY2xvc2UgcHJvbWlzZSBDYW4ndCBm
aW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBDbG9zaW5nIG11c3QgYmUgcHJvcGFn
YXRlZCBmb3J3YXJkOiBzdGFydHMgY2xvc2VkOyBwcmV2ZW50Q2xvc2UgPSAwIChmYWxzeSk7IGZ1
bGZpbGxlZCBjbG9zZSBwcm9taXNlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFt
Ci1GQUlMIENsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHN0YXJ0cyBjbG9zZWQ7
IHByZXZlbnRDbG9zZSA9IC0wIChmYWxzeSk7IGZ1bGZpbGxlZCBjbG9zZSBwcm9taXNlIENhbid0
IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIENsb3NpbmcgbXVzdCBiZSBwcm9w
YWdhdGVkIGZvcndhcmQ6IHN0YXJ0cyBjbG9zZWQ7IHByZXZlbnRDbG9zZSA9IE5hTiAoZmFsc3kp
OyBmdWxmaWxsZWQgY2xvc2UgcHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0
cmVhbQotRkFJTCBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBzdGFydHMgY2xv
c2VkOyBwcmV2ZW50Q2xvc2UgPSAgKGZhbHN5KTsgZnVsZmlsbGVkIGNsb3NlIHByb21pc2UgQ2Fu
J3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgQ2xvc2luZyBtdXN0IGJlIHBy
b3BhZ2F0ZWQgZm9yd2FyZDogc3RhcnRzIGNsb3NlZDsgcHJldmVudENsb3NlID0gdHJ1ZSAodHJ1
dGh5KSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBDbG9zaW5nIG11
c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBzdGFydHMgY2xvc2VkOyBwcmV2ZW50Q2xvc2UgPSBh
ICh0cnV0aHkpIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIENsb3Np
bmcgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHN0YXJ0cyBjbG9zZWQ7IHByZXZlbnRDbG9z
ZSA9IDEgKHRydXRoeSkgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwg
Q2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc3RhcnRzIGNsb3NlZDsgcHJldmVu
dENsb3NlID0gU3ltYm9sKCkgKHRydXRoeSkgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVT
dHJlYW0KLUZBSUwgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc3RhcnRzIGNs
b3NlZDsgcHJldmVudENsb3NlID0gW29iamVjdCBPYmplY3RdICh0cnV0aHkpIENhbid0IGZpbmQg
dmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIENsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVk
IGZvcndhcmQ6IHN0YXJ0cyBjbG9zZWQ7IHByZXZlbnRDbG9zZSA9IHRydWUsIHByZXZlbnRBYm9y
dCA9IHRydWUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgQ2xvc2lu
ZyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc3RhcnRzIGNsb3NlZDsgcHJldmVudENsb3Nl
ID0gdHJ1ZSwgcHJldmVudEFib3J0ID0gdHJ1ZSwgcHJldmVudENhbmNlbCA9IHRydWUgQ2FuJ3Qg
ZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgQ2xvc2luZyBtdXN0IGJlIHByb3Bh
Z2F0ZWQgZm9yd2FyZDogYmVjb21lcyBjbG9zZWQgYXN5bmNocm9ub3VzbHk7IHByZXZlbnRDbG9z
ZSBvbWl0dGVkOyBmdWxmaWxsZWQgY2xvc2UgcHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBX
cml0YWJsZVN0cmVhbQotRkFJTCBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBi
ZWNvbWVzIGNsb3NlZCBhc3luY2hyb25vdXNseTsgcHJldmVudENsb3NlIG9taXR0ZWQ7IHJlamVj
dGVkIGNsb3NlIHByb21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZB
SUwgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogYmVjb21lcyBjbG9zZWQgYXN5
bmNocm9ub3VzbHk7IHByZXZlbnRDbG9zZSA9IHRydWUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3Jp
dGFibGVTdHJlYW0KLUZBSUwgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogYmVj
b21lcyBjbG9zZWQgYXN5bmNocm9ub3VzbHk7IGRlc3QgbmV2ZXIgZGVzaXJlcyBjaHVua3M7IHBy
ZXZlbnRDbG9zZSBvbWl0dGVkOyBmdWxmaWxsZWQgY2xvc2UgcHJvbWlzZSBDYW4ndCBmaW5kIHZh
cmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBm
b3J3YXJkOiBiZWNvbWVzIGNsb3NlZCBhc3luY2hyb25vdXNseTsgZGVzdCBuZXZlciBkZXNpcmVz
IGNodW5rczsgcHJldmVudENsb3NlIG9taXR0ZWQ7IHJlamVjdGVkIGNsb3NlIHByb21pc2UgQ2Fu
J3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgQ2xvc2luZyBtdXN0IGJlIHBy
b3BhZ2F0ZWQgZm9yd2FyZDogYmVjb21lcyBjbG9zZWQgYXN5bmNocm9ub3VzbHk7IGRlc3QgbmV2
ZXIgZGVzaXJlcyBjaHVua3M7IHByZXZlbnRDbG9zZSA9IHRydWUgQ2FuJ3QgZmluZCB2YXJpYWJs
ZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2Fy
ZDogYmVjb21lcyBjbG9zZWQgYWZ0ZXIgb25lIGNodW5rOyBwcmV2ZW50Q2xvc2Ugb21pdHRlZDsg
ZnVsZmlsbGVkIGNsb3NlIHByb21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJl
YW0KLUZBSUwgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogYmVjb21lcyBjbG9z
ZWQgYWZ0ZXIgb25lIGNodW5rOyBwcmV2ZW50Q2xvc2Ugb21pdHRlZDsgcmVqZWN0ZWQgY2xvc2Ug
cHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBDbG9zaW5n
IG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBiZWNvbWVzIGNsb3NlZCBhZnRlciBvbmUgY2h1
bms7IHByZXZlbnRDbG9zZSA9IHRydWUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJl
YW0KLUZBSUwgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc2h1dGRvd24gbXVz
dCBub3Qgb2NjdXIgdW50aWwgdGhlIGZpbmFsIHdyaXRlIGNvbXBsZXRlcyBDYW4ndCBmaW5kIHZh
cmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBm
b3J3YXJkOiBzaHV0ZG93biBtdXN0IG5vdCBvY2N1ciB1bnRpbCB0aGUgZmluYWwgd3JpdGUgY29t
cGxldGVzOyBwcmV2ZW50Q2xvc2UgPSB0cnVlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxl
U3RyZWFtCi1GQUlMIENsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHNodXRkb3du
IG11c3Qgbm90IG9jY3VyIHVudGlsIHRoZSBmaW5hbCB3cml0ZSBjb21wbGV0ZXM7IGJlY29tZXMg
Y2xvc2VkIGFmdGVyIGZpcnN0IHdyaXRlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3Ry
ZWFtCi1GQUlMIENsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHNodXRkb3duIG11
c3Qgbm90IG9jY3VyIHVudGlsIHRoZSBmaW5hbCB3cml0ZSBjb21wbGV0ZXM7IGJlY29tZXMgY2xv
c2VkIGFmdGVyIGZpcnN0IHdyaXRlOyBwcmV2ZW50Q2xvc2UgPSB0cnVlIENhbid0IGZpbmQgdmFy
aWFibGU6IFdyaXRhYmxlU3RyZWFtCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvY2xvc2UtcHJvcGFnYXRpb24t
Zm9yd2FyZC5kZWRpY2F0ZWR3b3JrZXIuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvY2xvc2UtcHJvcGFnYXRpb24tZm9yd2Fy
ZC5kZWRpY2F0ZWR3b3JrZXIuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWMw
MTZmZmU4ZWZjYTlmYmUyOTgxNzA1YTgwZWIyMTg4M2NiYzQ3NS4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Nsb3NlLXByb3BhZ2F0aW9uLWZvcndhcmQu
ZGVkaWNhdGVkd29ya2VyLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi08IURP
Q1RZUEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTx0aXRsZT5jbG9zZS1wcm9wYWdh
dGlvbi1mb3J3YXJkLmpzIGRlZGljYXRlZCB3b3JrZXIgd3JhcHBlciBmaWxlPC90aXRsZT4KLQot
PHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlw
dCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotCi08c2Ny
aXB0PgotJ3VzZSBzdHJpY3QnOwotZmV0Y2hfdGVzdHNfZnJvbV93b3JrZXIobmV3IFdvcmtlcign
Y2xvc2UtcHJvcGFnYXRpb24tZm9yd2FyZC5qcycpKTsKLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGlu
Zy9jbG9zZS1wcm9wYWdhdGlvbi1mb3J3YXJkLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Nsb3NlLXByb3BhZ2F0aW9uLWZv
cndhcmQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2Y5MGZhN2MyZjUzM2Yw
Y2Y3NDZkNGI4ZjY4YzZjOTIyNGM2OTM5YS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3N0cmVhbXMvcGlwaW5nL2Nsb3NlLXByb3BhZ2F0aW9uLWZvcndhcmQuaHRtbAorKysgL2Rl
di9udWxsCkBAIC0xLDExICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0i
dXRmLTgiPgotPHRpdGxlPmNsb3NlLXByb3BhZ2F0aW9uLWZvcndhcmQuanMgYnJvd3NlciBjb250
ZXh0IHdyYXBwZXIgZmlsZTwvdGl0bGU+Ci0KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
cmVwb3J0LmpzIj48L3NjcmlwdD4KLQotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0LXV0
aWxzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvcmVjb3JkaW5nLXN0
cmVhbXMuanMiPjwvc2NyaXB0PgotCi08c2NyaXB0IHNyYz0iY2xvc2UtcHJvcGFnYXRpb24tZm9y
d2FyZC5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Nsb3NlLXByb3BhZ2F0aW9uLWZvcndh
cmQuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvcGlwaW5nL2Nsb3NlLXByb3BhZ2F0aW9uLWZvcndhcmQuanMKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDBmMGI3YmIxYTM1MmQyZDE0YWY4MTRlMzliNjA0ZDE1M2U2ZTBmZmMuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9jbG9zZS1wcm9w
YWdhdGlvbi1mb3J3YXJkLmpzCisrKyAvZGV2L251bGwKQEAgLTEsNTYyICswLDAgQEAKLSd1c2Ug
c3RyaWN0JzsKLQotaWYgKHNlbGYuaW1wb3J0U2NyaXB0cykgewotICBzZWxmLmltcG9ydFNjcmlw
dHMoJy9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMnKTsKLSAgc2VsZi5pbXBvcnRTY3JpcHRzKCcu
Li9yZXNvdXJjZXMvdGVzdC11dGlscy5qcycpOwotICBzZWxmLmltcG9ydFNjcmlwdHMoJy4uL3Jl
c291cmNlcy9yZWNvcmRpbmctc3RyZWFtcy5qcycpOwotfQotCi1jb25zdCBlcnJvcjEgPSBuZXcg
RXJyb3IoJ2Vycm9yMSEnKTsKLWVycm9yMS5uYW1lID0gJ2Vycm9yMSc7Ci0KLXByb21pc2VfdGVz
dCgoKSA9PiB7Ci0KLSAgY29uc3QgcnMgPSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSh7Ci0gICAg
c3RhcnQoY29udHJvbGxlcikgewotICAgICAgY29udHJvbGxlci5jbG9zZSgpOwotICAgIH0KLSAg
fSk7Ci0KLSAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSgpOwotCi0gIHJldHVy
biBycy5waXBlVG8od3MpLnRoZW4odmFsdWUgPT4gewotICAgIGFzc2VydF9lcXVhbHModmFsdWUs
IHVuZGVmaW5lZCwgJ3RoZSBwcm9taXNlIG11c3QgZnVsZmlsbCB3aXRoIHVuZGVmaW5lZCcpOwot
ICB9KQotICAudGhlbigoKSA9PiB7Ci0gICAgYXNzZXJ0X2FycmF5X2VxdWFscyhycy5ldmVudHMs
IFtdKTsKLSAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWydjbG9zZSddKTsKLQot
ICAgIHJldHVybiBQcm9taXNlLmFsbChbCi0gICAgICBycy5nZXRSZWFkZXIoKS5jbG9zZWQsCi0g
ICAgICB3cy5nZXRXcml0ZXIoKS5jbG9zZWQKLSAgICBdKTsKLSAgfSk7Ci0KLX0sICdDbG9zaW5n
IG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBzdGFydHMgY2xvc2VkOyBwcmV2ZW50Q2xvc2Ug
b21pdHRlZDsgZnVsZmlsbGVkIGNsb3NlIHByb21pc2UnKTsKLQotcHJvbWlzZV90ZXN0KHQgPT4g
ewotCi0gIGNvbnN0IHJzID0gcmVjb3JkaW5nUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGNv
bnRyb2xsZXIpIHsKLSAgICAgIGNvbnRyb2xsZXIuY2xvc2UoKTsKLSAgICB9Ci0gIH0pOwotCi0g
IGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0oewotICAgIGNsb3NlKCkgewotICAg
ICAgdGhyb3cgZXJyb3IxOwotICAgIH0KLSAgfSk7Ci0KLSAgcmV0dXJuIHByb21pc2VfcmVqZWN0
cyh0LCBlcnJvcjEsIHJzLnBpcGVUbyh3cyksICdwaXBlVG8gbXVzdCByZWplY3Qgd2l0aCB0aGUg
c2FtZSBlcnJvcicpLnRoZW4oKCkgPT4gewotICAgIGFzc2VydF9hcnJheV9lcXVhbHMocnMuZXZl
bnRzLCBbXSk7Ci0gICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsnY2xvc2UnXSk7
Ci0KLSAgICByZXR1cm4gUHJvbWlzZS5hbGwoWwotICAgICAgcnMuZ2V0UmVhZGVyKCkuY2xvc2Vk
LAotICAgICAgcHJvbWlzZV9yZWplY3RzKHQsIGVycm9yMSwgd3MuZ2V0V3JpdGVyKCkuY2xvc2Vk
KQotICAgIF0pOwotICB9KTsKLQotfSwgJ0Nsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndh
cmQ6IHN0YXJ0cyBjbG9zZWQ7IHByZXZlbnRDbG9zZSBvbWl0dGVkOyByZWplY3RlZCBjbG9zZSBw
cm9taXNlJyk7Ci0KLWZvciAoY29uc3QgZmFsc3kgb2YgW3VuZGVmaW5lZCwgbnVsbCwgZmFsc2Us
ICswLCAtMCwgTmFOLCAnJ10pIHsKLSAgY29uc3Qgc3RyaW5nVmVyc2lvbiA9IE9iamVjdC5pcyhm
YWxzeSwgLTApID8gJy0wJyA6IFN0cmluZyhmYWxzeSk7Ci0KLSAgcHJvbWlzZV90ZXN0KCgpID0+
IHsKLQotICAgIGNvbnN0IHJzID0gcmVjb3JkaW5nUmVhZGFibGVTdHJlYW0oewotICAgICAgc3Rh
cnQoY29udHJvbGxlcikgewotICAgICAgICBjb250cm9sbGVyLmNsb3NlKCk7Ci0gICAgICB9Ci0g
ICAgfSk7Ci0KLSAgICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKCk7Ci0KLSAg
ICByZXR1cm4gcnMucGlwZVRvKHdzLCB7IHByZXZlbnRDbG9zZTogZmFsc3kgfSkudGhlbih2YWx1
ZSA9PiB7Ci0gICAgICBhc3NlcnRfZXF1YWxzKHZhbHVlLCB1bmRlZmluZWQsICd0aGUgcHJvbWlz
ZSBtdXN0IGZ1bGZpbGwgd2l0aCB1bmRlZmluZWQnKTsKLSAgICB9KQotICAgIC50aGVuKCgpID0+
IHsKLSAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMocnMuZXZlbnRzLCBbXSk7Ci0gICAgICBhc3Nl
cnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWydjbG9zZSddKTsKLQotICAgICAgcmV0dXJuIFBy
b21pc2UuYWxsKFsKLSAgICAgICAgcnMuZ2V0UmVhZGVyKCkuY2xvc2VkLAotICAgICAgICB3cy5n
ZXRXcml0ZXIoKS5jbG9zZWQKLSAgICAgIF0pOwotICAgIH0pOwotCi0gIH0sIGBDbG9zaW5nIG11
c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBzdGFydHMgY2xvc2VkOyBwcmV2ZW50Q2xvc2UgPSAk
e3N0cmluZ1ZlcnNpb259IChmYWxzeSk7IGZ1bGZpbGxlZCBjbG9zZSBgICsKLSAgICAgYHByb21p
c2VgKTsKLX0KLQotZm9yIChjb25zdCB0cnV0aHkgb2YgW3RydWUsICdhJywgMSwgU3ltYm9sKCks
IHsgfV0pIHsKLSAgcHJvbWlzZV90ZXN0KCgpID0+IHsKLQotICAgIGNvbnN0IHJzID0gcmVjb3Jk
aW5nUmVhZGFibGVTdHJlYW0oewotICAgICAgc3RhcnQoY29udHJvbGxlcikgewotICAgICAgICBj
b250cm9sbGVyLmNsb3NlKCk7Ci0gICAgICB9Ci0gICAgfSk7Ci0KLSAgICBjb25zdCB3cyA9IHJl
Y29yZGluZ1dyaXRhYmxlU3RyZWFtKCk7Ci0KLSAgICByZXR1cm4gcnMucGlwZVRvKHdzLCB7IHBy
ZXZlbnRDbG9zZTogdHJ1dGh5IH0pLnRoZW4odmFsdWUgPT4gewotICAgICAgYXNzZXJ0X2VxdWFs
cyh2YWx1ZSwgdW5kZWZpbmVkLCAndGhlIHByb21pc2UgbXVzdCBmdWxmaWxsIHdpdGggdW5kZWZp
bmVkJyk7Ci0gICAgfSkKLSAgICAudGhlbigoKSA9PiB7Ci0gICAgICBhc3NlcnRfYXJyYXlfZXF1
YWxzKHJzLmV2ZW50cywgW10pOwotICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMs
IFtdKTsKLQotICAgICAgcmV0dXJuIHJzLmdldFJlYWRlcigpLmNsb3NlZDsKLSAgICB9KTsKLQot
ICB9LCBgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc3RhcnRzIGNsb3NlZDsg
cHJldmVudENsb3NlID0gJHtTdHJpbmcodHJ1dGh5KX0gKHRydXRoeSlgKTsKLX0KLQotcHJvbWlz
ZV90ZXN0KCgpID0+IHsKLQotICBjb25zdCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKHsK
LSAgICBzdGFydChjb250cm9sbGVyKSB7Ci0gICAgICBjb250cm9sbGVyLmNsb3NlKCk7Ci0gICAg
fQotICB9KTsKLQotICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKCk7Ci0KLSAg
cmV0dXJuIHJzLnBpcGVUbyh3cywgeyBwcmV2ZW50Q2xvc2U6IHRydWUsIHByZXZlbnRBYm9ydDog
dHJ1ZSB9KS50aGVuKHZhbHVlID0+IHsKLSAgICBhc3NlcnRfZXF1YWxzKHZhbHVlLCB1bmRlZmlu
ZWQsICd0aGUgcHJvbWlzZSBtdXN0IGZ1bGZpbGwgd2l0aCB1bmRlZmluZWQnKTsKLSAgfSkKLSAg
LnRoZW4oKCkgPT4gewotICAgIGFzc2VydF9hcnJheV9lcXVhbHMocnMuZXZlbnRzLCBbXSk7Ci0g
ICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFtdKTsKLQotICAgIHJldHVybiBycy5n
ZXRSZWFkZXIoKS5jbG9zZWQ7Ci0gIH0pOwotCi19LCAnQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0
ZWQgZm9yd2FyZDogc3RhcnRzIGNsb3NlZDsgcHJldmVudENsb3NlID0gdHJ1ZSwgcHJldmVudEFi
b3J0ID0gdHJ1ZScpOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotCi0gIGNvbnN0IHJzID0gcmVj
b3JkaW5nUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGNvbnRyb2xsZXIpIHsKLSAgICAgIGNv
bnRyb2xsZXIuY2xvc2UoKTsKLSAgICB9Ci0gIH0pOwotCi0gIGNvbnN0IHdzID0gcmVjb3JkaW5n
V3JpdGFibGVTdHJlYW0oKTsKLQotICByZXR1cm4gcnMucGlwZVRvKHdzLCB7IHByZXZlbnRDbG9z
ZTogdHJ1ZSwgcHJldmVudEFib3J0OiB0cnVlLCBwcmV2ZW50Q2FuY2VsOiB0cnVlIH0pLnRoZW4o
dmFsdWUgPT4gewotICAgIGFzc2VydF9lcXVhbHModmFsdWUsIHVuZGVmaW5lZCwgJ3RoZSBwcm9t
aXNlIG11c3QgZnVsZmlsbCB3aXRoIHVuZGVmaW5lZCcpOwotICB9KQotICAudGhlbigoKSA9PiB7
Ci0gICAgYXNzZXJ0X2FycmF5X2VxdWFscyhycy5ldmVudHMsIFtdKTsKLSAgICBhc3NlcnRfYXJy
YXlfZXF1YWxzKHdzLmV2ZW50cywgW10pOwotCi0gICAgcmV0dXJuIHJzLmdldFJlYWRlcigpLmNs
b3NlZDsKLSAgfSk7Ci0KLX0sICdDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBz
dGFydHMgY2xvc2VkOyBwcmV2ZW50Q2xvc2UgPSB0cnVlLCBwcmV2ZW50QWJvcnQgPSB0cnVlLCBw
cmV2ZW50Q2FuY2VsID0gdHJ1ZScpOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotCi0gIGNvbnN0
IHJzID0gcmVjb3JkaW5nUmVhZGFibGVTdHJlYW0oKTsKLQotICBjb25zdCB3cyA9IHJlY29yZGlu
Z1dyaXRhYmxlU3RyZWFtKCk7Ci0KLSAgY29uc3QgcGlwZVByb21pc2UgPSBycy5waXBlVG8od3Mp
OwotCi0gIHNldFRpbWVvdXQoKCkgPT4gcnMuY29udHJvbGxlci5jbG9zZSgpKTsKLQotICByZXR1
cm4gcGlwZVByb21pc2UudGhlbih2YWx1ZSA9PiB7Ci0gICAgYXNzZXJ0X2VxdWFscyh2YWx1ZSwg
dW5kZWZpbmVkLCAndGhlIHByb21pc2UgbXVzdCBmdWxmaWxsIHdpdGggdW5kZWZpbmVkJyk7Ci0g
IH0pCi0gIC50aGVuKCgpID0+IHsKLSAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJzLmV2ZW50c1dp
dGhvdXRQdWxscywgW10pOwotICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ2Ns
b3NlJ10pOwotCi0gICAgcmV0dXJuIFByb21pc2UuYWxsKFsKLSAgICAgIHJzLmdldFJlYWRlcigp
LmNsb3NlZCwKLSAgICAgIHdzLmdldFdyaXRlcigpLmNsb3NlZAotICAgIF0pOwotICB9KTsKLQot
fSwgJ0Nsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IGJlY29tZXMgY2xvc2VkIGFz
eW5jaHJvbm91c2x5OyBwcmV2ZW50Q2xvc2Ugb21pdHRlZDsgZnVsZmlsbGVkIGNsb3NlIHByb21p
c2UnKTsKLQotcHJvbWlzZV90ZXN0KHQgPT4gewotCi0gIGNvbnN0IHJzID0gcmVjb3JkaW5nUmVh
ZGFibGVTdHJlYW0oKTsKLQotICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKHsK
LSAgICBjbG9zZSgpIHsKLSAgICAgIHRocm93IGVycm9yMTsKLSAgICB9Ci0gIH0pOwotCi0gIGNv
bnN0IHBpcGVQcm9taXNlID0gcHJvbWlzZV9yZWplY3RzKHQsIGVycm9yMSwgcnMucGlwZVRvKHdz
KSwgJ3BpcGVUbyBtdXN0IHJlamVjdCB3aXRoIHRoZSBzYW1lIGVycm9yJyk7Ci0KLSAgc2V0VGlt
ZW91dCgoKSA9PiBycy5jb250cm9sbGVyLmNsb3NlKCkpOwotCi0gIHJldHVybiBwaXBlUHJvbWlz
ZS50aGVuKCgpID0+IHsKLSAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJzLmV2ZW50c1dpdGhvdXRQ
dWxscywgW10pOwotICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ2Nsb3NlJ10p
OwotCi0gICAgcmV0dXJuIFByb21pc2UuYWxsKFsKLSAgICAgIHJzLmdldFJlYWRlcigpLmNsb3Nl
ZCwKLSAgICAgIHByb21pc2VfcmVqZWN0cyh0LCBlcnJvcjEsIHdzLmdldFdyaXRlcigpLmNsb3Nl
ZCkKLSAgICBdKTsKLSAgfSk7Ci0KLX0sICdDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3
YXJkOiBiZWNvbWVzIGNsb3NlZCBhc3luY2hyb25vdXNseTsgcHJldmVudENsb3NlIG9taXR0ZWQ7
IHJlamVjdGVkIGNsb3NlIHByb21pc2UnKTsKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLQotICBj
b25zdCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKCk7Ci0KLSAgY29uc3Qgd3MgPSByZWNv
cmRpbmdXcml0YWJsZVN0cmVhbSgpOwotCi0gIGNvbnN0IHBpcGVQcm9taXNlID0gcnMucGlwZVRv
KHdzLCB7IHByZXZlbnRDbG9zZTogdHJ1ZSB9KTsKLQotICBzZXRUaW1lb3V0KCgpID0+IHJzLmNv
bnRyb2xsZXIuY2xvc2UoKSk7Ci0KLSAgcmV0dXJuIHBpcGVQcm9taXNlLnRoZW4odmFsdWUgPT4g
ewotICAgIGFzc2VydF9lcXVhbHModmFsdWUsIHVuZGVmaW5lZCwgJ3RoZSBwcm9taXNlIG11c3Qg
ZnVsZmlsbCB3aXRoIHVuZGVmaW5lZCcpOwotICB9KQotICAudGhlbigoKSA9PiB7Ci0gICAgYXNz
ZXJ0X2FycmF5X2VxdWFscyhycy5ldmVudHNXaXRob3V0UHVsbHMsIFtdKTsKLSAgICBhc3NlcnRf
YXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgW10pOwotCi0gICAgcmV0dXJuIHJzLmdldFJlYWRlcigp
LmNsb3NlZDsKLSAgfSk7Ci0KLX0sICdDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJk
OiBiZWNvbWVzIGNsb3NlZCBhc3luY2hyb25vdXNseTsgcHJldmVudENsb3NlID0gdHJ1ZScpOwot
Ci1wcm9taXNlX3Rlc3QoKCkgPT4gewotCi0gIGNvbnN0IHJzID0gcmVjb3JkaW5nUmVhZGFibGVT
dHJlYW0oKTsKLQotICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKHVuZGVmaW5l
ZCwgbmV3IENvdW50UXVldWluZ1N0cmF0ZWd5KHsgaGlnaFdhdGVyTWFyazogMCB9KSk7Ci0KLSAg
Y29uc3QgcGlwZVByb21pc2UgPSBycy5waXBlVG8od3MpOwotCi0gIHNldFRpbWVvdXQoKCkgPT4g
cnMuY29udHJvbGxlci5jbG9zZSgpKTsKLQotICByZXR1cm4gcGlwZVByb21pc2UudGhlbih2YWx1
ZSA9PiB7Ci0gICAgYXNzZXJ0X2VxdWFscyh2YWx1ZSwgdW5kZWZpbmVkLCAndGhlIHByb21pc2Ug
bXVzdCBmdWxmaWxsIHdpdGggdW5kZWZpbmVkJyk7Ci0gIH0pCi0gIC50aGVuKCgpID0+IHsKLSAg
ICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJzLmV2ZW50c1dpdGhvdXRQdWxscywgW10pOwotICAgIGFz
c2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ2Nsb3NlJ10pOwotCi0gICAgcmV0dXJuIFBy
b21pc2UuYWxsKFsKLSAgICAgIHJzLmdldFJlYWRlcigpLmNsb3NlZCwKLSAgICAgIHdzLmdldFdy
aXRlcigpLmNsb3NlZAotICAgIF0pOwotICB9KTsKLQotfSwgJ0Nsb3NpbmcgbXVzdCBiZSBwcm9w
YWdhdGVkIGZvcndhcmQ6IGJlY29tZXMgY2xvc2VkIGFzeW5jaHJvbm91c2x5OyBkZXN0IG5ldmVy
IGRlc2lyZXMgY2h1bmtzOyAnICsKLSAgICdwcmV2ZW50Q2xvc2Ugb21pdHRlZDsgZnVsZmlsbGVk
IGNsb3NlIHByb21pc2UnKTsKLQotcHJvbWlzZV90ZXN0KHQgPT4gewotCi0gIGNvbnN0IHJzID0g
cmVjb3JkaW5nUmVhZGFibGVTdHJlYW0oKTsKLQotICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRh
YmxlU3RyZWFtKHsKLSAgICBjbG9zZSgpIHsKLSAgICAgIHRocm93IGVycm9yMTsKLSAgICB9Ci0g
IH0sIG5ldyBDb3VudFF1ZXVpbmdTdHJhdGVneSh7IGhpZ2hXYXRlck1hcms6IDAgfSkpOwotCi0g
IGNvbnN0IHBpcGVQcm9taXNlID0gcHJvbWlzZV9yZWplY3RzKHQsIGVycm9yMSwgcnMucGlwZVRv
KHdzKSwgJ3BpcGVUbyBtdXN0IHJlamVjdCB3aXRoIHRoZSBzYW1lIGVycm9yJyk7Ci0KLSAgc2V0
VGltZW91dCgoKSA9PiBycy5jb250cm9sbGVyLmNsb3NlKCkpOwotCi0gIHJldHVybiBwaXBlUHJv
bWlzZS50aGVuKCgpID0+IHsKLSAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJzLmV2ZW50c1dpdGhv
dXRQdWxscywgW10pOwotICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ2Nsb3Nl
J10pOwotCi0gICAgcmV0dXJuIFByb21pc2UuYWxsKFsKLSAgICAgIHJzLmdldFJlYWRlcigpLmNs
b3NlZCwKLSAgICAgIHByb21pc2VfcmVqZWN0cyh0LCBlcnJvcjEsIHdzLmdldFdyaXRlcigpLmNs
b3NlZCkKLSAgICBdKTsKLSAgfSk7Ci0KLX0sICdDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBm
b3J3YXJkOiBiZWNvbWVzIGNsb3NlZCBhc3luY2hyb25vdXNseTsgZGVzdCBuZXZlciBkZXNpcmVz
IGNodW5rczsgJyArCi0gICAncHJldmVudENsb3NlIG9taXR0ZWQ7IHJlamVjdGVkIGNsb3NlIHBy
b21pc2UnKTsKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLQotICBjb25zdCBycyA9IHJlY29yZGlu
Z1JlYWRhYmxlU3RyZWFtKCk7Ci0KLSAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVh
bSh1bmRlZmluZWQsIG5ldyBDb3VudFF1ZXVpbmdTdHJhdGVneSh7IGhpZ2hXYXRlck1hcms6IDAg
fSkpOwotCi0gIGNvbnN0IHBpcGVQcm9taXNlID0gcnMucGlwZVRvKHdzLCB7IHByZXZlbnRDbG9z
ZTogdHJ1ZSB9KTsKLQotICBzZXRUaW1lb3V0KCgpID0+IHJzLmNvbnRyb2xsZXIuY2xvc2UoKSk7
Ci0KLSAgcmV0dXJuIHBpcGVQcm9taXNlLnRoZW4odmFsdWUgPT4gewotICAgIGFzc2VydF9lcXVh
bHModmFsdWUsIHVuZGVmaW5lZCwgJ3RoZSBwcm9taXNlIG11c3QgZnVsZmlsbCB3aXRoIHVuZGVm
aW5lZCcpOwotICB9KQotICAudGhlbigoKSA9PiB7Ci0gICAgYXNzZXJ0X2FycmF5X2VxdWFscyhy
cy5ldmVudHNXaXRob3V0UHVsbHMsIFtdKTsKLSAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2
ZW50cywgW10pOwotCi0gICAgcmV0dXJuIHJzLmdldFJlYWRlcigpLmNsb3NlZDsKLSAgfSk7Ci0K
LX0sICdDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBiZWNvbWVzIGNsb3NlZCBh
c3luY2hyb25vdXNseTsgZGVzdCBuZXZlciBkZXNpcmVzIGNodW5rczsgJyArCi0gICAncHJldmVu
dENsb3NlID0gdHJ1ZScpOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotCi0gIGNvbnN0IHJzID0g
cmVjb3JkaW5nUmVhZGFibGVTdHJlYW0oKTsKLQotICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRh
YmxlU3RyZWFtKCk7Ci0KLSAgY29uc3QgcGlwZVByb21pc2UgPSBycy5waXBlVG8od3MpOwotCi0g
IHNldFRpbWVvdXQoKCkgPT4gewotICAgIHJzLmNvbnRyb2xsZXIuZW5xdWV1ZSgnSGVsbG8nKTsK
LSAgICBzZXRUaW1lb3V0KCgpID0+IHJzLmNvbnRyb2xsZXIuY2xvc2UoKSk7Ci0gIH0sIDEwKTsK
LQotICByZXR1cm4gcGlwZVByb21pc2UudGhlbih2YWx1ZSA9PiB7Ci0gICAgYXNzZXJ0X2VxdWFs
cyh2YWx1ZSwgdW5kZWZpbmVkLCAndGhlIHByb21pc2UgbXVzdCBmdWxmaWxsIHdpdGggdW5kZWZp
bmVkJyk7Ci0gIH0pCi0gIC50aGVuKCgpID0+IHsKLSAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJz
LmV2ZW50c1dpdGhvdXRQdWxscywgW10pOwotICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZl
bnRzLCBbJ3dyaXRlJywgJ0hlbGxvJywgJ2Nsb3NlJ10pOwotCi0gICAgcmV0dXJuIFByb21pc2Uu
YWxsKFsKLSAgICAgIHJzLmdldFJlYWRlcigpLmNsb3NlZCwKLSAgICAgIHdzLmdldFdyaXRlcigp
LmNsb3NlZAotICAgIF0pOwotICB9KTsKLQotfSwgJ0Nsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVk
IGZvcndhcmQ6IGJlY29tZXMgY2xvc2VkIGFmdGVyIG9uZSBjaHVuazsgcHJldmVudENsb3NlIG9t
aXR0ZWQ7IGZ1bGZpbGxlZCBjbG9zZSBwcm9taXNlJyk7Ci0KLXByb21pc2VfdGVzdCh0ID0+IHsK
LQotICBjb25zdCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKCk7Ci0KLSAgY29uc3Qgd3Mg
PSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSh7Ci0gICAgY2xvc2UoKSB7Ci0gICAgICB0aHJvdyBl
cnJvcjE7Ci0gICAgfQotICB9KTsKLQotICBjb25zdCBwaXBlUHJvbWlzZSA9IHByb21pc2VfcmVq
ZWN0cyh0LCBlcnJvcjEsIHJzLnBpcGVUbyh3cyksICdwaXBlVG8gbXVzdCByZWplY3Qgd2l0aCB0
aGUgc2FtZSBlcnJvcicpOwotCi0gIHNldFRpbWVvdXQoKCkgPT4gewotICAgIHJzLmNvbnRyb2xs
ZXIuZW5xdWV1ZSgnSGVsbG8nKTsKLSAgICBzZXRUaW1lb3V0KCgpID0+IHJzLmNvbnRyb2xsZXIu
Y2xvc2UoKSk7Ci0gIH0sIDEwKTsKLQotICByZXR1cm4gcGlwZVByb21pc2UudGhlbigoKSA9PiB7
Ci0gICAgYXNzZXJ0X2FycmF5X2VxdWFscyhycy5ldmVudHNXaXRob3V0UHVsbHMsIFtdKTsKLSAg
ICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWyd3cml0ZScsICdIZWxsbycsICdjbG9z
ZSddKTsKLQotICAgIHJldHVybiBQcm9taXNlLmFsbChbCi0gICAgICBycy5nZXRSZWFkZXIoKS5j
bG9zZWQsCi0gICAgICBwcm9taXNlX3JlamVjdHModCwgZXJyb3IxLCB3cy5nZXRXcml0ZXIoKS5j
bG9zZWQpCi0gICAgXSk7Ci0gIH0pOwotCi19LCAnQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQg
Zm9yd2FyZDogYmVjb21lcyBjbG9zZWQgYWZ0ZXIgb25lIGNodW5rOyBwcmV2ZW50Q2xvc2Ugb21p
dHRlZDsgcmVqZWN0ZWQgY2xvc2UgcHJvbWlzZScpOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewot
Ci0gIGNvbnN0IHJzID0gcmVjb3JkaW5nUmVhZGFibGVTdHJlYW0oKTsKLQotICBjb25zdCB3cyA9
IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKCk7Ci0KLSAgY29uc3QgcGlwZVByb21pc2UgPSBycy5w
aXBlVG8od3MsIHsgcHJldmVudENsb3NlOiB0cnVlIH0pOwotCi0gIHNldFRpbWVvdXQoKCkgPT4g
ewotICAgIHJzLmNvbnRyb2xsZXIuZW5xdWV1ZSgnSGVsbG8nKTsKLSAgICBzZXRUaW1lb3V0KCgp
ID0+IHJzLmNvbnRyb2xsZXIuY2xvc2UoKSk7Ci0gIH0sIDEwKTsKLQotICByZXR1cm4gcGlwZVBy
b21pc2UudGhlbih2YWx1ZSA9PiB7Ci0gICAgYXNzZXJ0X2VxdWFscyh2YWx1ZSwgdW5kZWZpbmVk
LCAndGhlIHByb21pc2UgbXVzdCBmdWxmaWxsIHdpdGggdW5kZWZpbmVkJyk7Ci0gIH0pCi0gIC50
aGVuKCgpID0+IHsKLSAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJzLmV2ZW50c1dpdGhvdXRQdWxs
cywgW10pOwotICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ3dyaXRlJywgJ0hl
bGxvJ10pOwotCi0gICAgcmV0dXJuIHJzLmdldFJlYWRlcigpLmNsb3NlZDsKLSAgfSk7Ci0KLX0s
ICdDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBiZWNvbWVzIGNsb3NlZCBhZnRl
ciBvbmUgY2h1bms7IHByZXZlbnRDbG9zZSA9IHRydWUnKTsKLQotcHJvbWlzZV90ZXN0KCgpID0+
IHsKLQotICBjb25zdCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKCk7Ci0KLSAgbGV0IHJl
c29sdmVXcml0ZVByb21pc2U7Ci0gIGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0o
ewotICAgIHdyaXRlKCkgewotICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4gewot
ICAgICAgICByZXNvbHZlV3JpdGVQcm9taXNlID0gcmVzb2x2ZTsKLSAgICAgIH0pOwotICAgIH0K
LSAgfSk7Ci0KLSAgbGV0IHBpcGVDb21wbGV0ZSA9IGZhbHNlOwotICBjb25zdCBwaXBlUHJvbWlz
ZSA9IHJzLnBpcGVUbyh3cykudGhlbigoKSA9PiB7Ci0gICAgcGlwZUNvbXBsZXRlID0gdHJ1ZTsK
LSAgfSk7Ci0KLSAgcnMuY29udHJvbGxlci5lbnF1ZXVlKCdhJyk7Ci0gIHJzLmNvbnRyb2xsZXIu
Y2xvc2UoKTsKLQotICAvLyBGbHVzaCBhc3luYyBldmVudHMgYW5kIHZlcmlmeSB0aGF0IG5vIHNo
dXRkb3duIG9jY3Vycy4KLSAgcmV0dXJuIGZsdXNoQXN5bmNFdmVudHMoKS50aGVuKCgpID0+IHsK
LSAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWyd3cml0ZScsICdhJ10pOyAvLyBu
byAnY2xvc2UnCi0gICAgYXNzZXJ0X2VxdWFscyhwaXBlQ29tcGxldGUsIGZhbHNlLCAndGhlIHBp
cGUgbXVzdCBub3QgYmUgY29tcGxldGUnKTsKLQotICAgIHJlc29sdmVXcml0ZVByb21pc2UoKTsK
LQotICAgIHJldHVybiBwaXBlUHJvbWlzZS50aGVuKCgpID0+IHsKLSAgICAgIGFzc2VydF9hcnJh
eV9lcXVhbHMod3MuZXZlbnRzLCBbJ3dyaXRlJywgJ2EnLCAnY2xvc2UnXSk7Ci0gICAgfSk7Ci0g
IH0pOwotCi19LCAnQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc2h1dGRvd24g
bXVzdCBub3Qgb2NjdXIgdW50aWwgdGhlIGZpbmFsIHdyaXRlIGNvbXBsZXRlcycpOwotCi1wcm9t
aXNlX3Rlc3QoKCkgPT4gewotCi0gIGNvbnN0IHJzID0gcmVjb3JkaW5nUmVhZGFibGVTdHJlYW0o
KTsKLQotICBsZXQgcmVzb2x2ZVdyaXRlUHJvbWlzZTsKLSAgY29uc3Qgd3MgPSByZWNvcmRpbmdX
cml0YWJsZVN0cmVhbSh7Ci0gICAgd3JpdGUoKSB7Ci0gICAgICByZXR1cm4gbmV3IFByb21pc2Uo
cmVzb2x2ZSA9PiB7Ci0gICAgICAgIHJlc29sdmVXcml0ZVByb21pc2UgPSByZXNvbHZlOwotICAg
ICAgfSk7Ci0gICAgfQotICB9KTsKLQotICBsZXQgcGlwZUNvbXBsZXRlID0gZmFsc2U7Ci0gIGNv
bnN0IHBpcGVQcm9taXNlID0gcnMucGlwZVRvKHdzLCB7IHByZXZlbnRDbG9zZTogdHJ1ZSB9KS50
aGVuKCgpID0+IHsKLSAgICBwaXBlQ29tcGxldGUgPSB0cnVlOwotICB9KTsKLQotICBycy5jb250
cm9sbGVyLmVucXVldWUoJ2EnKTsKLSAgcnMuY29udHJvbGxlci5jbG9zZSgpOwotCi0gIC8vIEZs
dXNoIGFzeW5jIGV2ZW50cyBhbmQgdmVyaWZ5IHRoYXQgbm8gc2h1dGRvd24gb2NjdXJzLgotICBy
ZXR1cm4gZmx1c2hBc3luY0V2ZW50cygpLnRoZW4oKCkgPT4gewotICAgIGFzc2VydF9hcnJheV9l
cXVhbHMod3MuZXZlbnRzLCBbJ3dyaXRlJywgJ2EnXSwKLSAgICAgICd0aGUgY2h1bmsgbXVzdCBo
YXZlIGJlZW4gd3JpdHRlbiwgYnV0IGNsb3NlIG11c3Qgbm90IGhhdmUgaGFwcGVuZWQnKTsKLSAg
ICBhc3NlcnRfZXF1YWxzKHBpcGVDb21wbGV0ZSwgZmFsc2UsICd0aGUgcGlwZSBtdXN0IG5vdCBi
ZSBjb21wbGV0ZScpOwotCi0gICAgcmVzb2x2ZVdyaXRlUHJvbWlzZSgpOwotCi0gICAgcmV0dXJu
IHBpcGVQcm9taXNlOwotICB9KS50aGVuKCgpID0+IGZsdXNoQXN5bmNFdmVudHMoKSkudGhlbigo
KSA9PiB7Ci0gICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsnd3JpdGUnLCAnYSdd
LAotICAgICAgJ3RoZSBjaHVuayBtdXN0IGhhdmUgYmVlbiB3cml0dGVuLCBidXQgY2xvc2UgbXVz
dCBub3QgaGF2ZSBoYXBwZW5lZCcpOwotICB9KTsKLQotfSwgJ0Nsb3NpbmcgbXVzdCBiZSBwcm9w
YWdhdGVkIGZvcndhcmQ6IHNodXRkb3duIG11c3Qgbm90IG9jY3VyIHVudGlsIHRoZSBmaW5hbCB3
cml0ZSBjb21wbGV0ZXM7IHByZXZlbnRDbG9zZSA9IHRydWUnKTsKLQotcHJvbWlzZV90ZXN0KCgp
ID0+IHsKLQotICBjb25zdCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKCk7Ci0KLSAgbGV0
IHJlc29sdmVXcml0ZUNhbGxlZDsKLSAgY29uc3Qgd3JpdGVDYWxsZWRQcm9taXNlID0gbmV3IFBy
b21pc2UocmVzb2x2ZSA9PiB7Ci0gICAgcmVzb2x2ZVdyaXRlQ2FsbGVkID0gcmVzb2x2ZTsKLSAg
fSk7Ci0KLSAgbGV0IHJlc29sdmVXcml0ZVByb21pc2U7Ci0gIGNvbnN0IHdzID0gcmVjb3JkaW5n
V3JpdGFibGVTdHJlYW0oewotICAgIHdyaXRlKCkgewotICAgICAgcmVzb2x2ZVdyaXRlQ2FsbGVk
KCk7Ci0KLSAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKLSAgICAgICAgcmVz
b2x2ZVdyaXRlUHJvbWlzZSA9IHJlc29sdmU7Ci0gICAgICB9KTsKLSAgICB9Ci0gIH0sIG5ldyBD
b3VudFF1ZXVpbmdTdHJhdGVneSh7IGhpZ2hXYXRlck1hcms6IDIgfSkpOwotCi0gIGxldCBwaXBl
Q29tcGxldGUgPSBmYWxzZTsKLSAgY29uc3QgcGlwZVByb21pc2UgPSBycy5waXBlVG8od3MpLnRo
ZW4oKCkgPT4gewotICAgIHBpcGVDb21wbGV0ZSA9IHRydWU7Ci0gIH0pOwotCi0gIHJzLmNvbnRy
b2xsZXIuZW5xdWV1ZSgnYScpOwotICBycy5jb250cm9sbGVyLmVucXVldWUoJ2InKTsKLQotICBy
ZXR1cm4gd3JpdGVDYWxsZWRQcm9taXNlLnRoZW4oKCkgPT4gZmx1c2hBc3luY0V2ZW50cygpKS50
aGVuKCgpID0+IHsKLSAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWyd3cml0ZScs
ICdhJ10sCi0gICAgICAndGhlIGZpcnN0IGNodW5rIG11c3QgaGF2ZSBiZWVuIHdyaXR0ZW4sIGJ1
dCBjbG9zZSBtdXN0IG5vdCBoYXZlIGhhcHBlbmVkIHlldCcpOwotICAgIGFzc2VydF9mYWxzZShw
aXBlQ29tcGxldGUsICd0aGUgcGlwZSBzaG91bGQgbm90IGNvbXBsZXRlIHdoaWxlIHRoZSBmaXJz
dCB3cml0ZSBpcyBwZW5kaW5nJyk7Ci0KLSAgICBycy5jb250cm9sbGVyLmNsb3NlKCk7Ci0gICAg
cmVzb2x2ZVdyaXRlUHJvbWlzZSgpOwotICB9KS50aGVuKCgpID0+IGZsdXNoQXN5bmNFdmVudHMo
KSkudGhlbigoKSA9PiB7Ci0gICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsnd3Jp
dGUnLCAnYScsICd3cml0ZScsICdiJ10sCi0gICAgICAndGhlIHNlY29uZCBjaHVuayBtdXN0IGhh
dmUgYmVlbiB3cml0dGVuLCBidXQgY2xvc2UgbXVzdCBub3QgaGF2ZSBoYXBwZW5lZCB5ZXQnKTsK
LSAgICBhc3NlcnRfZmFsc2UocGlwZUNvbXBsZXRlLCAndGhlIHBpcGUgc2hvdWxkIG5vdCBjb21w
bGV0ZSB3aGlsZSB0aGUgc2Vjb25kIHdyaXRlIGlzIHBlbmRpbmcnKTsKLQotICAgIHJlc29sdmVX
cml0ZVByb21pc2UoKTsKLSAgICByZXR1cm4gcGlwZVByb21pc2U7Ci0gIH0pLnRoZW4oKCkgPT4g
ewotICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ3dyaXRlJywgJ2EnLCAnd3Jp
dGUnLCAnYicsICdjbG9zZSddLAotICAgICAgJ2FsbCBjaHVua3MgbXVzdCBoYXZlIGJlZW4gd3Jp
dHRlbiBhbmQgY2xvc2UgbXVzdCBoYXZlIGhhcHBlbmVkJyk7Ci0gIH0pOwotCi19LCAnQ2xvc2lu
ZyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc2h1dGRvd24gbXVzdCBub3Qgb2NjdXIgdW50
aWwgdGhlIGZpbmFsIHdyaXRlIGNvbXBsZXRlczsgYmVjb21lcyBjbG9zZWQgYWZ0ZXIgZmlyc3Qg
d3JpdGUnKTsKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLQotICBjb25zdCBycyA9IHJlY29yZGlu
Z1JlYWRhYmxlU3RyZWFtKCk7Ci0KLSAgbGV0IHJlc29sdmVXcml0ZUNhbGxlZDsKLSAgY29uc3Qg
d3JpdGVDYWxsZWRQcm9taXNlID0gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7Ci0gICAgcmVzb2x2
ZVdyaXRlQ2FsbGVkID0gcmVzb2x2ZTsKLSAgfSk7Ci0KLSAgbGV0IHJlc29sdmVXcml0ZVByb21p
c2U7Ci0gIGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0oewotICAgIHdyaXRlKCkg
ewotICAgICAgcmVzb2x2ZVdyaXRlQ2FsbGVkKCk7Ci0KLSAgICAgIHJldHVybiBuZXcgUHJvbWlz
ZShyZXNvbHZlID0+IHsKLSAgICAgICAgcmVzb2x2ZVdyaXRlUHJvbWlzZSA9IHJlc29sdmU7Ci0g
ICAgICB9KTsKLSAgICB9Ci0gIH0sIG5ldyBDb3VudFF1ZXVpbmdTdHJhdGVneSh7IGhpZ2hXYXRl
ck1hcms6IDIgfSkpOwotCi0gIGxldCBwaXBlQ29tcGxldGUgPSBmYWxzZTsKLSAgY29uc3QgcGlw
ZVByb21pc2UgPSBycy5waXBlVG8od3MsIHsgcHJldmVudENsb3NlOiB0cnVlIH0pLnRoZW4oKCkg
PT4gewotICAgIHBpcGVDb21wbGV0ZSA9IHRydWU7Ci0gIH0pOwotCi0gIHJzLmNvbnRyb2xsZXIu
ZW5xdWV1ZSgnYScpOwotICBycy5jb250cm9sbGVyLmVucXVldWUoJ2InKTsKLQotICByZXR1cm4g
d3JpdGVDYWxsZWRQcm9taXNlLnRoZW4oKCkgPT4gZmx1c2hBc3luY0V2ZW50cygpKS50aGVuKCgp
ID0+IHsKLSAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWyd3cml0ZScsICdhJ10s
Ci0gICAgICAndGhlIGZpcnN0IGNodW5rIG11c3QgaGF2ZSBiZWVuIHdyaXR0ZW4sIGJ1dCBjbG9z
ZSBtdXN0IG5vdCBoYXZlIGhhcHBlbmVkJyk7Ci0gICAgYXNzZXJ0X2ZhbHNlKHBpcGVDb21wbGV0
ZSwgJ3RoZSBwaXBlIHNob3VsZCBub3QgY29tcGxldGUgd2hpbGUgdGhlIGZpcnN0IHdyaXRlIGlz
IHBlbmRpbmcnKTsKLQotICAgIHJzLmNvbnRyb2xsZXIuY2xvc2UoKTsKLSAgICByZXNvbHZlV3Jp
dGVQcm9taXNlKCk7Ci0gIH0pLnRoZW4oKCkgPT4gZmx1c2hBc3luY0V2ZW50cygpKS50aGVuKCgp
ID0+IHsKLSAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWyd3cml0ZScsICdhJywg
J3dyaXRlJywgJ2InXSwKLSAgICAgICd0aGUgc2Vjb25kIGNodW5rIG11c3QgaGF2ZSBiZWVuIHdy
aXR0ZW4sIGJ1dCBjbG9zZSBtdXN0IG5vdCBoYXZlIGhhcHBlbmVkJyk7Ci0gICAgYXNzZXJ0X2Zh
bHNlKHBpcGVDb21wbGV0ZSwgJ3RoZSBwaXBlIHNob3VsZCBub3QgY29tcGxldGUgd2hpbGUgdGhl
IHNlY29uZCB3cml0ZSBpcyBwZW5kaW5nJyk7Ci0KLSAgICByZXNvbHZlV3JpdGVQcm9taXNlKCk7
Ci0gICAgcmV0dXJuIHBpcGVQcm9taXNlOwotICB9KS50aGVuKCgpID0+IGZsdXNoQXN5bmNFdmVu
dHMoKSkudGhlbigoKSA9PiB7Ci0gICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsn
d3JpdGUnLCAnYScsICd3cml0ZScsICdiJ10sCi0gICAgICAnYWxsIGNodW5rcyBtdXN0IGhhdmUg
YmVlbiB3cml0dGVuLCBidXQgY2xvc2UgbXVzdCBub3QgaGF2ZSBoYXBwZW5lZCcpOwotICB9KTsK
LQotfSwgJ0Nsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHNodXRkb3duIG11c3Qg
bm90IG9jY3VyIHVudGlsIHRoZSBmaW5hbCB3cml0ZSBjb21wbGV0ZXM7IGJlY29tZXMgY2xvc2Vk
IGFmdGVyIGZpcnN0IHdyaXRlOyBwcmV2ZW50Q2xvc2UgPSB0cnVlJyk7Ci0KLWRvbmUoKTsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy9waXBpbmcvY2xvc2UtcHJvcGFnYXRpb24tZm9yd2FyZC5zZXJ2aWNld29ya2VyLmh0dHBz
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy9waXBpbmcvY2xvc2UtcHJvcGFnYXRpb24tZm9yd2FyZC5zZXJ2aWNld29ya2Vy
Lmh0dHBzLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2EzN2Vm
YWVjYzQ1NDExZjA0YmVhZmM1ODBkYTJjNzQyZDRlYjFiNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Nsb3NlLXByb3BhZ2F0aW9uLWZvcndhcmQuc2Vy
dmljZXdvcmtlci5odHRwcy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCww
IEBACi0KLVBBU1MgU2VydmljZSB3b3JrZXIgdGVzdCBzZXR1cCAKLUZBSUwgQ2xvc2luZyBtdXN0
IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc3RhcnRzIGNsb3NlZDsgcHJldmVudENsb3NlIG9taXR0
ZWQ7IGZ1bGZpbGxlZCBjbG9zZSBwcm9taXNlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxl
U3RyZWFtCi1GQUlMIENsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHN0YXJ0cyBj
bG9zZWQ7IHByZXZlbnRDbG9zZSBvbWl0dGVkOyByZWplY3RlZCBjbG9zZSBwcm9taXNlIENhbid0
IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIENsb3NpbmcgbXVzdCBiZSBwcm9w
YWdhdGVkIGZvcndhcmQ6IHN0YXJ0cyBjbG9zZWQ7IHByZXZlbnRDbG9zZSA9IHVuZGVmaW5lZCAo
ZmFsc3kpOyBmdWxmaWxsZWQgY2xvc2UgcHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0
YWJsZVN0cmVhbQotRkFJTCBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBzdGFy
dHMgY2xvc2VkOyBwcmV2ZW50Q2xvc2UgPSBudWxsIChmYWxzeSk7IGZ1bGZpbGxlZCBjbG9zZSBw
cm9taXNlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIENsb3Npbmcg
bXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHN0YXJ0cyBjbG9zZWQ7IHByZXZlbnRDbG9zZSA9
IGZhbHNlIChmYWxzeSk7IGZ1bGZpbGxlZCBjbG9zZSBwcm9taXNlIENhbid0IGZpbmQgdmFyaWFi
bGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIENsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndh
cmQ6IHN0YXJ0cyBjbG9zZWQ7IHByZXZlbnRDbG9zZSA9IDAgKGZhbHN5KTsgZnVsZmlsbGVkIGNs
b3NlIHByb21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgQ2xv
c2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc3RhcnRzIGNsb3NlZDsgcHJldmVudENs
b3NlID0gLTAgKGZhbHN5KTsgZnVsZmlsbGVkIGNsb3NlIHByb21pc2UgQ2FuJ3QgZmluZCB2YXJp
YWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9y
d2FyZDogc3RhcnRzIGNsb3NlZDsgcHJldmVudENsb3NlID0gTmFOIChmYWxzeSk7IGZ1bGZpbGxl
ZCBjbG9zZSBwcm9taXNlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlM
IENsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHN0YXJ0cyBjbG9zZWQ7IHByZXZl
bnRDbG9zZSA9ICAoZmFsc3kpOyBmdWxmaWxsZWQgY2xvc2UgcHJvbWlzZSBDYW4ndCBmaW5kIHZh
cmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBm
b3J3YXJkOiBzdGFydHMgY2xvc2VkOyBwcmV2ZW50Q2xvc2UgPSB0cnVlICh0cnV0aHkpIENhbid0
IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIENsb3NpbmcgbXVzdCBiZSBwcm9w
YWdhdGVkIGZvcndhcmQ6IHN0YXJ0cyBjbG9zZWQ7IHByZXZlbnRDbG9zZSA9IGEgKHRydXRoeSkg
Q2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgQ2xvc2luZyBtdXN0IGJl
IHByb3BhZ2F0ZWQgZm9yd2FyZDogc3RhcnRzIGNsb3NlZDsgcHJldmVudENsb3NlID0gMSAodHJ1
dGh5KSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBDbG9zaW5nIG11
c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBzdGFydHMgY2xvc2VkOyBwcmV2ZW50Q2xvc2UgPSBT
eW1ib2woKSAodHJ1dGh5KSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJ
TCBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBzdGFydHMgY2xvc2VkOyBwcmV2
ZW50Q2xvc2UgPSBbb2JqZWN0IE9iamVjdF0gKHRydXRoeSkgQ2FuJ3QgZmluZCB2YXJpYWJsZTog
V3JpdGFibGVTdHJlYW0KLUZBSUwgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDog
c3RhcnRzIGNsb3NlZDsgcHJldmVudENsb3NlID0gdHJ1ZSwgcHJldmVudEFib3J0ID0gdHJ1ZSBD
YW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBDbG9zaW5nIG11c3QgYmUg
cHJvcGFnYXRlZCBmb3J3YXJkOiBzdGFydHMgY2xvc2VkOyBwcmV2ZW50Q2xvc2UgPSB0cnVlLCBw
cmV2ZW50QWJvcnQgPSB0cnVlLCBwcmV2ZW50Q2FuY2VsID0gdHJ1ZSBDYW4ndCBmaW5kIHZhcmlh
YmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3
YXJkOiBiZWNvbWVzIGNsb3NlZCBhc3luY2hyb25vdXNseTsgcHJldmVudENsb3NlIG9taXR0ZWQ7
IGZ1bGZpbGxlZCBjbG9zZSBwcm9taXNlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3Ry
ZWFtCi1GQUlMIENsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IGJlY29tZXMgY2xv
c2VkIGFzeW5jaHJvbm91c2x5OyBwcmV2ZW50Q2xvc2Ugb21pdHRlZDsgcmVqZWN0ZWQgY2xvc2Ug
cHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBDbG9zaW5n
IG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBiZWNvbWVzIGNsb3NlZCBhc3luY2hyb25vdXNs
eTsgcHJldmVudENsb3NlID0gdHJ1ZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVh
bQotRkFJTCBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBiZWNvbWVzIGNsb3Nl
ZCBhc3luY2hyb25vdXNseTsgZGVzdCBuZXZlciBkZXNpcmVzIGNodW5rczsgcHJldmVudENsb3Nl
IG9taXR0ZWQ7IGZ1bGZpbGxlZCBjbG9zZSBwcm9taXNlIENhbid0IGZpbmQgdmFyaWFibGU6IFdy
aXRhYmxlU3RyZWFtCi1GQUlMIENsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IGJl
Y29tZXMgY2xvc2VkIGFzeW5jaHJvbm91c2x5OyBkZXN0IG5ldmVyIGRlc2lyZXMgY2h1bmtzOyBw
cmV2ZW50Q2xvc2Ugb21pdHRlZDsgcmVqZWN0ZWQgY2xvc2UgcHJvbWlzZSBDYW4ndCBmaW5kIHZh
cmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBm
b3J3YXJkOiBiZWNvbWVzIGNsb3NlZCBhc3luY2hyb25vdXNseTsgZGVzdCBuZXZlciBkZXNpcmVz
IGNodW5rczsgcHJldmVudENsb3NlID0gdHJ1ZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJs
ZVN0cmVhbQotRkFJTCBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBiZWNvbWVz
IGNsb3NlZCBhZnRlciBvbmUgY2h1bms7IHByZXZlbnRDbG9zZSBvbWl0dGVkOyBmdWxmaWxsZWQg
Y2xvc2UgcHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBD
bG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBiZWNvbWVzIGNsb3NlZCBhZnRlciBv
bmUgY2h1bms7IHByZXZlbnRDbG9zZSBvbWl0dGVkOyByZWplY3RlZCBjbG9zZSBwcm9taXNlIENh
bid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIENsb3NpbmcgbXVzdCBiZSBw
cm9wYWdhdGVkIGZvcndhcmQ6IGJlY29tZXMgY2xvc2VkIGFmdGVyIG9uZSBjaHVuazsgcHJldmVu
dENsb3NlID0gdHJ1ZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBD
bG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBzaHV0ZG93biBtdXN0IG5vdCBvY2N1
ciB1bnRpbCB0aGUgZmluYWwgd3JpdGUgY29tcGxldGVzIENhbid0IGZpbmQgdmFyaWFibGU6IFdy
aXRhYmxlU3RyZWFtCi1GQUlMIENsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHNo
dXRkb3duIG11c3Qgbm90IG9jY3VyIHVudGlsIHRoZSBmaW5hbCB3cml0ZSBjb21wbGV0ZXM7IHBy
ZXZlbnRDbG9zZSA9IHRydWUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZB
SUwgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc2h1dGRvd24gbXVzdCBub3Qg
b2NjdXIgdW50aWwgdGhlIGZpbmFsIHdyaXRlIGNvbXBsZXRlczsgYmVjb21lcyBjbG9zZWQgYWZ0
ZXIgZmlyc3Qgd3JpdGUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwg
Q2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc2h1dGRvd24gbXVzdCBub3Qgb2Nj
dXIgdW50aWwgdGhlIGZpbmFsIHdyaXRlIGNvbXBsZXRlczsgYmVjb21lcyBjbG9zZWQgYWZ0ZXIg
Zmlyc3Qgd3JpdGU7IHByZXZlbnRDbG9zZSA9IHRydWUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3Jp
dGFibGVTdHJlYW0KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9jbG9zZS1wcm9wYWdhdGlvbi1mb3J3YXJkLnNl
cnZpY2V3b3JrZXIuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvY2xvc2UtcHJvcGFnYXRpb24tZm9yd2FyZC5zZXJ2
aWNld29ya2VyLmh0dHBzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVjZmQ0
NzQwOTc1N2ExZGUwYzQ2NTJiMDcwNzM3YzYyYzlmNDI2MWEuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9jbG9zZS1wcm9wYWdhdGlvbi1mb3J3YXJkLnNl
cnZpY2V3b3JrZXIuaHR0cHMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLTwh
RE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHRpdGxlPmNsb3NlLXByb3Bh
Z2F0aW9uLWZvcndhcmQuanMgc2VydmljZSB3b3JrZXIgd3JhcHBlciBmaWxlPC90aXRsZT4KLQot
PHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlw
dCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlw
dCBzcmM9Ii9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvcmVzb3VyY2VzL3Rlc3QtaGVs
cGVycy5zdWIuanMiPjwvc2NyaXB0PgotCi08c2NyaXB0PgotJ3VzZSBzdHJpY3QnOwotc2Vydmlj
ZV93b3JrZXJfdGVzdCgnY2xvc2UtcHJvcGFnYXRpb24tZm9yd2FyZC5qcycsICdTZXJ2aWNlIHdv
cmtlciB0ZXN0IHNldHVwJyk7Ci08L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvY2xvc2UtcHJvcGFn
YXRpb24tZm9yd2FyZC5zaGFyZWR3b3JrZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9jbG9zZS1wcm9wYWdh
dGlvbi1mb3J3YXJkLnNoYXJlZHdvcmtlci1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDA5ZDVkMjUwOWQ3ODQ3ZThjZDZmZTY2MDZhYTYwY2RkMzNhYTQ3NGUuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9jbG9zZS1wcm9w
YWdhdGlvbi1mb3J3YXJkLnNoYXJlZHdvcmtlci1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApA
QCAtMSw1ICswLDAgQEAKLUNPTlNPTEUgTUVTU0FHRTogUmVmZXJlbmNlRXJyb3I6IENhbid0IGZp
bmQgdmFyaWFibGU6IFNoYXJlZFdvcmtlcgotCi1IYXJuZXNzIEVycm9yIChGQUlMKSwgbWVzc2Fn
ZSA9IFJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBTaGFyZWRXb3JrZXIKLQot
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMvcGlwaW5nL2Nsb3NlLXByb3BhZ2F0aW9uLWZvcndhcmQuc2hhcmVkd29ya2VyLmh0
bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
cGlwaW5nL2Nsb3NlLXByb3BhZ2F0aW9uLWZvcndhcmQuc2hhcmVkd29ya2VyLmh0bWwKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVmOWU5ODU3MmE3ODFkM2MxNzZmNGM5OTc1NTkzZDAx
MTRhM2NkOWQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGlu
Zy9jbG9zZS1wcm9wYWdhdGlvbi1mb3J3YXJkLnNoYXJlZHdvcmtlci5odG1sCisrKyAvZGV2L251
bGwKQEAgLTEsMTEgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYt
OCI+Ci08dGl0bGU+Y2xvc2UtcHJvcGFnYXRpb24tZm9yd2FyZC5qcyBzaGFyZWQgd29ya2VyIHdy
YXBwZXIgZmlsZTwvdGl0bGU+Ci0KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0
LmpzIj48L3NjcmlwdD4KLQotPHNjcmlwdD4KLSd1c2Ugc3RyaWN0JzsKLWZldGNoX3Rlc3RzX2Zy
b21fd29ya2VyKG5ldyBTaGFyZWRXb3JrZXIoJ2Nsb3NlLXByb3BhZ2F0aW9uLWZvcndhcmQuanMn
KSk7Ci08L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvZXJyb3ItcHJvcGFnYXRpb24tYmFja3dhcmQu
YW55LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy9waXBpbmcvZXJyb3ItcHJvcGFnYXRpb24tYmFja3dhcmQuYW55LWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5iNDY3MmRjYmJkOTNhNjgzNjZjNjk1NmRmZmM4MWVmZDkzYWZm
YzFmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9lcnJvci1wcm9wYWdhdGlvbi1iYWNrd2FyZC5hbnkt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNDEgQEAKK0NPTlNPTEUgTUVTU0FHRTogVW5oYW5kbGVk
IFByb21pc2UgUmVqZWN0aW9uOiBlcnJvcjI6IGVycm9yMiEKK0NPTlNPTEUgTUVTU0FHRTogVW5o
YW5kbGVkIFByb21pc2UgUmVqZWN0aW9uOiBlcnJvcjE6IGVycm9yMSEKKworSGFybmVzcyBFcnJv
ciAoRkFJTCksIG1lc3NhZ2UgPSBVbmhhbmRsZWQgcmVqZWN0aW9uOiBlcnJvcjEhCisKK1BBU1Mg
RXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogc3RhcnRzIGVycm9yZWQ7IHByZXZl
bnRDYW5jZWwgb21pdHRlZDsgZnVsZmlsbGVkIGNhbmNlbCBwcm9taXNlIAorRkFJTCBFcnJvcnMg
bXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVycm9yZWQgYmVmb3JlIHBpcGlu
ZyBkdWUgdG8gd3JpdGU7IHByZXZlbnRDYW5jZWwgb21pdHRlZDsgZnVsZmlsbGVkIGNhbmNlbCBw
cm9taXNlIHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0ZXIo
KScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkKK0ZBSUwgRXJyb3JzIG11c3QgYmUgcHJv
cGFnYXRlZCBiYWNrd2FyZDogYmVjb21lcyBlcnJvcmVkIGJlZm9yZSBwaXBpbmcgZHVlIHRvIHdy
aXRlOyBwcmV2ZW50Q2FuY2VsIG9taXR0ZWQ7IHJlamVjdGVkIGNhbmNlbCBwcm9taXNlIHdzLmdl
dFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRX
cml0ZXInIGlzIHVuZGVmaW5lZCkKK0ZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNr
d2FyZDogYmVjb21lcyBlcnJvcmVkIGJlZm9yZSBwaXBpbmcgZHVlIHRvIHdyaXRlOyBwcmV2ZW50
Q2FuY2VsID0gdW5kZWZpbmVkIChmYWxzeSk7IGZ1bGZpbGxlZCBjYW5jZWwgcHJvbWlzZSB3cy5n
ZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3JpdGVyKCknLCAnd3MuZ2V0
V3JpdGVyJyBpcyB1bmRlZmluZWQpCitGQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFj
a3dhcmQ6IGJlY29tZXMgZXJyb3JlZCBiZWZvcmUgcGlwaW5nIGR1ZSB0byB3cml0ZTsgcHJldmVu
dENhbmNlbCA9IG51bGwgKGZhbHN5KTsgZnVsZmlsbGVkIGNhbmNlbCBwcm9taXNlIHdzLmdldFdy
aXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0
ZXInIGlzIHVuZGVmaW5lZCkKK0ZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2Fy
ZDogYmVjb21lcyBlcnJvcmVkIGJlZm9yZSBwaXBpbmcgZHVlIHRvIHdyaXRlOyBwcmV2ZW50Q2Fu
Y2VsID0gZmFsc2UgKGZhbHN5KTsgZnVsZmlsbGVkIGNhbmNlbCBwcm9taXNlIHdzLmdldFdyaXRl
ciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXIn
IGlzIHVuZGVmaW5lZCkKK0ZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDog
YmVjb21lcyBlcnJvcmVkIGJlZm9yZSBwaXBpbmcgZHVlIHRvIHdyaXRlOyBwcmV2ZW50Q2FuY2Vs
ID0gMCAoZmFsc3kpOyBmdWxmaWxsZWQgY2FuY2VsIHByb21pc2Ugd3MuZ2V0V3JpdGVyIGlzIG5v
dCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicgaXMgdW5k
ZWZpbmVkKQorRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVz
IGVycm9yZWQgYmVmb3JlIHBpcGluZyBkdWUgdG8gd3JpdGU7IHByZXZlbnRDYW5jZWwgPSAtMCAo
ZmFsc3kpOyBmdWxmaWxsZWQgY2FuY2VsIHByb21pc2Ugd3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1
bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicgaXMgdW5kZWZpbmVk
KQorRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVycm9y
ZWQgYmVmb3JlIHBpcGluZyBkdWUgdG8gd3JpdGU7IHByZXZlbnRDYW5jZWwgPSBOYU4gKGZhbHN5
KTsgZnVsZmlsbGVkIGNhbmNlbCBwcm9taXNlIHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlv
bi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkKK0ZB
SUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogYmVjb21lcyBlcnJvcmVkIGJl
Zm9yZSBwaXBpbmcgZHVlIHRvIHdyaXRlOyBwcmV2ZW50Q2FuY2VsID0gIChmYWxzeSk7IGZ1bGZp
bGxlZCBjYW5jZWwgcHJvbWlzZSB3cy5nZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAn
d3MuZ2V0V3JpdGVyKCknLCAnd3MuZ2V0V3JpdGVyJyBpcyB1bmRlZmluZWQpCitGQUlMIEVycm9y
cyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGJlY29tZXMgZXJyb3JlZCBiZWZvcmUgcGlw
aW5nIGR1ZSB0byB3cml0ZTsgcHJldmVudENhbmNlbCA9IHRydWUgKHRydXRoeSkgd3MuZ2V0V3Jp
dGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRl
cicgaXMgdW5kZWZpbmVkKQorRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJk
OiBiZWNvbWVzIGVycm9yZWQgYmVmb3JlIHBpcGluZyBkdWUgdG8gd3JpdGU7IHByZXZlbnRDYW5j
ZWwgPSBhICh0cnV0aHkpIHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5n
ZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkKK0ZBSUwgRXJyb3JzIG11
c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogYmVjb21lcyBlcnJvcmVkIGJlZm9yZSBwaXBpbmcg
ZHVlIHRvIHdyaXRlOyBwcmV2ZW50Q2FuY2VsID0gMSAodHJ1dGh5KSB3cy5nZXRXcml0ZXIgaXMg
bm90IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3JpdGVyKCknLCAnd3MuZ2V0V3JpdGVyJyBpcyB1
bmRlZmluZWQpCitGQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGJlY29t
ZXMgZXJyb3JlZCBiZWZvcmUgcGlwaW5nIGR1ZSB0byB3cml0ZTsgcHJldmVudENhbmNlbCA9IFN5
bWJvbCgpICh0cnV0aHkpIHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5n
ZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkKK0ZBSUwgRXJyb3JzIG11
c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogYmVjb21lcyBlcnJvcmVkIGJlZm9yZSBwaXBpbmcg
ZHVlIHRvIHdyaXRlOyBwcmV2ZW50Q2FuY2VsID0gW29iamVjdCBPYmplY3RdICh0cnV0aHkpIHdz
LmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5n
ZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkKK0ZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBi
YWNrd2FyZDogYmVjb21lcyBlcnJvcmVkIGJlZm9yZSBwaXBpbmcgZHVlIHRvIHdyaXRlLCBwcmV2
ZW50Q2FuY2VsID0gdHJ1ZTsgcHJldmVudEFib3J0ID0gdHJ1ZSB3cy5nZXRXcml0ZXIgaXMgbm90
IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3JpdGVyKCknLCAnd3MuZ2V0V3JpdGVyJyBpcyB1bmRl
ZmluZWQpCitGQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGJlY29tZXMg
ZXJyb3JlZCBiZWZvcmUgcGlwaW5nIGR1ZSB0byB3cml0ZTsgcHJldmVudENhbmNlbCA9IHRydWUs
IHByZXZlbnRBYm9ydCA9IHRydWUsIHByZXZlbnRDbG9zZSA9IHRydWUgd3MuZ2V0V3JpdGVyIGlz
IG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicgaXMg
dW5kZWZpbmVkKQorUEFTUyBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBiZWNv
bWVzIGVycm9yZWQgZHVyaW5nIHBpcGluZyBkdWUgdG8gd3JpdGU7IHByZXZlbnRDYW5jZWwgb21p
dHRlZDsgZnVsZmlsbGVkIGNhbmNlbCBwcm9taXNlIAorRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9w
YWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVycm9yZWQgZHVyaW5nIHBpcGluZyBkdWUgdG8gd3Jp
dGU7IHByZXZlbnRDYW5jZWwgb21pdHRlZDsgcmVqZWN0ZWQgY2FuY2VsIHByb21pc2UgcHJvbWlz
ZV9yZWplY3RzX2V4YWN0bHk6IHBpcGVUbyBtdXN0IHJlamVjdCB3aXRoIHRoZSBjYW5jZWwgZXJy
b3IgZnVuY3Rpb24gImZ1bmN0aW9uICgpIHsgdGhyb3cgZSB9IiB0aHJldyBvYmplY3QgImVycm9y
MTogZXJyb3IxISIgYnV0IHdlIGV4cGVjdGVkIGl0IHRvIHRocm93IG9iamVjdCAiZXJyb3IyOiBl
cnJvcjIhIgorVElNRU9VVCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBiZWNv
bWVzIGVycm9yZWQgZHVyaW5nIHBpcGluZyBkdWUgdG8gd3JpdGU7IHByZXZlbnRDYW5jZWwgPSB0
cnVlIFRlc3QgdGltZWQgb3V0CitOT1RSVU4gRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNr
d2FyZDogYmVjb21lcyBlcnJvcmVkIGR1cmluZyBwaXBpbmcgZHVlIHRvIHdyaXRlLCBidXQgYXN5
bmM7IHByZXZlbnRDYW5jZWwgPSBmYWxzZTsgZnVsZmlsbGVkIGNhbmNlbCBwcm9taXNlIAorTk9U
UlVOIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGJlY29tZXMgZXJyb3JlZCBk
dXJpbmcgcGlwaW5nIGR1ZSB0byB3cml0ZSwgYnV0IGFzeW5jOyBwcmV2ZW50Q2FuY2VsID0gZmFs
c2U7IHJlamVjdGVkIGNhbmNlbCBwcm9taXNlIAorTk9UUlVOIEVycm9ycyBtdXN0IGJlIHByb3Bh
Z2F0ZWQgYmFja3dhcmQ6IGJlY29tZXMgZXJyb3JlZCBkdXJpbmcgcGlwaW5nIGR1ZSB0byB3cml0
ZSwgYnV0IGFzeW5jOyBwcmV2ZW50Q2FuY2VsID0gdHJ1ZSAKK05PVFJVTiBFcnJvcnMgbXVzdCBi
ZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVycm9yZWQgYWZ0ZXIgcGlwaW5nOyBwcmV2
ZW50Q2FuY2VsIG9taXR0ZWQ7IGZ1bGZpbGxlZCBjYW5jZWwgcHJvbWlzZSAKK05PVFJVTiBFcnJv
cnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVycm9yZWQgYWZ0ZXIgcGlw
aW5nOyBwcmV2ZW50Q2FuY2VsIG9taXR0ZWQ7IHJlamVjdGVkIGNhbmNlbCBwcm9taXNlIAorTk9U
UlVOIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGJlY29tZXMgZXJyb3JlZCBh
ZnRlciBwaXBpbmc7IHByZXZlbnRDYW5jZWwgPSB0cnVlIAorTk9UUlVOIEVycm9ycyBtdXN0IGJl
IHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGJlY29tZXMgZXJyb3JlZCBhZnRlciBwaXBpbmcgZHVlIHRv
IGxhc3Qgd3JpdGU7IHNvdXJjZSBpcyBjbG9zZWQ7IHByZXZlbnRDYW5jZWwgb21pdHRlZCAoYnV0
IGNhbmNlbCBpcyBuZXZlciBjYWxsZWQpIAorTk9UUlVOIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0
ZWQgYmFja3dhcmQ6IGJlY29tZXMgZXJyb3JlZCBhZnRlciBwaXBpbmcgZHVlIHRvIGxhc3Qgd3Jp
dGU7IHNvdXJjZSBpcyBjbG9zZWQ7IHByZXZlbnRDYW5jZWwgPSB0cnVlIAorTk9UUlVOIEVycm9y
cyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGJlY29tZXMgZXJyb3JlZCBhZnRlciBwaXBp
bmc7IGRlc3QgbmV2ZXIgZGVzaXJlcyBjaHVua3M7IHByZXZlbnRDYW5jZWwgPSBmYWxzZTsgZnVs
ZmlsbGVkIGNhbmNlbCBwcm9taXNlIAorTk9UUlVOIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQg
YmFja3dhcmQ6IGJlY29tZXMgZXJyb3JlZCBhZnRlciBwaXBpbmc7IGRlc3QgbmV2ZXIgZGVzaXJl
cyBjaHVua3M7IHByZXZlbnRDYW5jZWwgPSBmYWxzZTsgcmVqZWN0ZWQgY2FuY2VsIHByb21pc2Ug
CitOT1RSVU4gRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogYmVjb21lcyBlcnJv
cmVkIGFmdGVyIHBpcGluZzsgZGVzdCBuZXZlciBkZXNpcmVzIGNodW5rczsgcHJldmVudENhbmNl
bCA9IHRydWUgCitOT1RSVU4gRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogYmVj
b21lcyBlcnJvcmVkIGJlZm9yZSBwaXBpbmcgdmlhIGFib3J0OyBwcmV2ZW50Q2FuY2VsIG9taXR0
ZWQ7IGZ1bGZpbGxlZCBjYW5jZWwgcHJvbWlzZSAKK05PVFJVTiBFcnJvcnMgbXVzdCBiZSBwcm9w
YWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVycm9yZWQgYmVmb3JlIHBpcGluZyB2aWEgYWJvcnQ7
IHByZXZlbnRDYW5jZWwgb21pdHRlZDsgcmVqZWN0ZWQgY2FuY2VsIHByb21pc2UgCitOT1RSVU4g
RXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogYmVjb21lcyBlcnJvcmVkIGJlZm9y
ZSBwaXBpbmcgdmlhIGFib3J0OyBwcmV2ZW50Q2FuY2VsID0gdHJ1ZSAKK05PVFJVTiBFcnJvcnMg
bXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBlcnJvcmluZyB2aWEgdGhlIGNvbnRyb2xsZXIg
ZXJyb3JzIG9uY2UgcGVuZGluZyB3cml0ZSBjb21wbGV0ZXMgCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvZXJy
b3ItcHJvcGFnYXRpb24tYmFja3dhcmQuYW55Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Vycm9yLXByb3BhZ2F0aW9uLWJh
Y2t3YXJkLmFueS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzODI5MTM1MjhlNjkzYjNhNWQ1NmM2NjBhNDUw
NjA5ODBiNTQ4YzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Vycm9yLXByb3BhZ2F0aW9uLWJhY2t3
YXJkLmFueS5odG1sCkBAIC0wLDAgKzEgQEAKKzwhLS0gVGhpcyBmaWxlIGlzIHJlcXVpcmVkIGZv
ciBXZWJLaXQgdGVzdCBpbmZyYXN0cnVjdHVyZSB0byBydW4gdGhlIHRlbXBsYXRlZCB0ZXN0IC0t
PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvZXJyb3ItcHJvcGFn
YXRpb24tYmFja3dhcmQuYW55LmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9lcnJvci1wcm9wYWdhdGlvbi1iYWNrd2FyZC5hbnku
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmRjMjAzMDY2ZTNkN2U2ODQxYWYyNzFjYWIyMDk5YWQzNTFkODU1OQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy9waXBpbmcvZXJyb3ItcHJvcGFnYXRpb24tYmFja3dhcmQuYW55LmpzCkBA
IC0wLDAgKzEsNjMwIEBACisvLyBNRVRBOiBnbG9iYWw9d2luZG93LHdvcmtlcixqc3NoZWxsCisv
LyBNRVRBOiBzY3JpcHQ9Li4vcmVzb3VyY2VzL3Rlc3QtdXRpbHMuanMKKy8vIE1FVEE6IHNjcmlw
dD0uLi9yZXNvdXJjZXMvcmVjb3JkaW5nLXN0cmVhbXMuanMKKyd1c2Ugc3RyaWN0JzsKKworY29u
c3QgZXJyb3IxID0gbmV3IEVycm9yKCdlcnJvcjEhJyk7CitlcnJvcjEubmFtZSA9ICdlcnJvcjEn
OworCitjb25zdCBlcnJvcjIgPSBuZXcgRXJyb3IoJ2Vycm9yMiEnKTsKK2Vycm9yMi5uYW1lID0g
J2Vycm9yMic7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKworICBjb25zdCBycyA9IHJlY29yZGlu
Z1JlYWRhYmxlU3RyZWFtKCk7CisKKyAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVh
bSh7CisgICAgc3RhcnQoKSB7CisgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyb3IxKTsK
KyAgICB9CisgIH0pOworCisgIHJldHVybiBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJv
cjEsIHJzLnBpcGVUbyh3cyksICdwaXBlVG8gbXVzdCByZWplY3Qgd2l0aCB0aGUgc2FtZSBlcnJv
cicpCisgICAgLnRoZW4oKCkgPT4geworICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhycy5ldmVu
dHNXaXRob3V0UHVsbHMsIFsnY2FuY2VsJywgZXJyb3IxXSk7CisgICAgICBhc3NlcnRfYXJyYXlf
ZXF1YWxzKHdzLmV2ZW50cywgW10pOworICAgIH0pOworCit9LCAnRXJyb3JzIG11c3QgYmUgcHJv
cGFnYXRlZCBiYWNrd2FyZDogc3RhcnRzIGVycm9yZWQ7IHByZXZlbnRDYW5jZWwgb21pdHRlZDsg
ZnVsZmlsbGVkIGNhbmNlbCBwcm9taXNlJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKworICBj
b25zdCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKCk7CisKKyAgY29uc3Qgd3MgPSByZWNv
cmRpbmdXcml0YWJsZVN0cmVhbSh7CisgICAgd3JpdGUoKSB7CisgICAgICByZXR1cm4gUHJvbWlz
ZS5yZWplY3QoZXJyb3IxKTsKKyAgICB9CisgIH0pOworCisgIGNvbnN0IHdyaXRlciA9IHdzLmdl
dFdyaXRlcigpOworCisgIHJldHVybiBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEs
IHdyaXRlci53cml0ZSgnSGVsbG8nKSwgJ3dyaXRlci53cml0ZSgpIG11c3QgcmVqZWN0IHdpdGgg
dGhlIHdyaXRlIGVycm9yJykKKyAgICAudGhlbigoKSA9PiBwcm9taXNlX3JlamVjdHNfZXhhY3Rs
eSh0LCBlcnJvcjEsIHdyaXRlci5jbG9zZWQsICd3cml0ZXIuY2xvc2VkIG11c3QgcmVqZWN0IHdp
dGggdGhlIHdyaXRlIGVycm9yJykpCisgICAgLnRoZW4oKCkgPT4geworICAgICAgd3JpdGVyLnJl
bGVhc2VMb2NrKCk7CisKKyAgICAgIHJldHVybiBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBl
cnJvcjEsIHJzLnBpcGVUbyh3cyksICdwaXBlVG8gbXVzdCByZWplY3Qgd2l0aCB0aGUgd3JpdGUg
ZXJyb3InKQorICAgICAgICAudGhlbigoKSA9PiB7CisgICAgICAgICAgYXNzZXJ0X2FycmF5X2Vx
dWFscyhycy5ldmVudHNXaXRob3V0UHVsbHMsIFsnY2FuY2VsJywgZXJyb3IxXSk7CisgICAgICAg
ICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsnd3JpdGUnLCAnSGVsbG8nXSk7Cisg
ICAgICAgIH0pOworICAgIH0pOworCit9LCAnRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNr
d2FyZDogYmVjb21lcyBlcnJvcmVkIGJlZm9yZSBwaXBpbmcgZHVlIHRvIHdyaXRlOyBwcmV2ZW50
Q2FuY2VsIG9taXR0ZWQ7ICcgKworICAgJ2Z1bGZpbGxlZCBjYW5jZWwgcHJvbWlzZScpOworCitw
cm9taXNlX3Rlc3QodCA9PiB7CisKKyAgY29uc3QgcnMgPSByZWNvcmRpbmdSZWFkYWJsZVN0cmVh
bSh7CisgICAgY2FuY2VsKCkgeworICAgICAgdGhyb3cgZXJyb3IyOworICAgIH0KKyAgfSk7CisK
KyAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSh7CisgICAgd3JpdGUoKSB7Cisg
ICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyb3IxKTsKKyAgICB9CisgIH0pOworCisgIGNv
bnN0IHdyaXRlciA9IHdzLmdldFdyaXRlcigpOworCisgIHJldHVybiBwcm9taXNlX3JlamVjdHNf
ZXhhY3RseSh0LCBlcnJvcjEsIHdyaXRlci53cml0ZSgnSGVsbG8nKSwgJ3dyaXRlci53cml0ZSgp
IG11c3QgcmVqZWN0IHdpdGggdGhlIHdyaXRlIGVycm9yJykKKyAgICAudGhlbigoKSA9PiBwcm9t
aXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIHdyaXRlci5jbG9zZWQsICd3cml0ZXIuY2xv
c2VkIG11c3QgcmVqZWN0IHdpdGggdGhlIHdyaXRlIGVycm9yJykpCisgICAgLnRoZW4oKCkgPT4g
eworICAgICAgd3JpdGVyLnJlbGVhc2VMb2NrKCk7CisKKyAgICAgIHJldHVybiBwcm9taXNlX3Jl
amVjdHNfZXhhY3RseSh0LCBlcnJvcjIsIHJzLnBpcGVUbyh3cyksICdwaXBlVG8gbXVzdCByZWpl
Y3Qgd2l0aCB0aGUgY2FuY2VsIGVycm9yJykKKyAgICAgICAgLnRoZW4oKCkgPT4geworICAgICAg
ICAgIGFzc2VydF9hcnJheV9lcXVhbHMocnMuZXZlbnRzV2l0aG91dFB1bGxzLCBbJ2NhbmNlbCcs
IGVycm9yMV0pOworICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ3dy
aXRlJywgJ0hlbGxvJ10pOworICAgICAgICB9KTsKKyAgICB9KTsKKworfSwgJ0Vycm9ycyBtdXN0
IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGJlY29tZXMgZXJyb3JlZCBiZWZvcmUgcGlwaW5nIGR1
ZSB0byB3cml0ZTsgcHJldmVudENhbmNlbCBvbWl0dGVkOyByZWplY3RlZCAnICsKKyAgICdjYW5j
ZWwgcHJvbWlzZScpOworCitmb3IgKGNvbnN0IGZhbHN5IG9mIFt1bmRlZmluZWQsIG51bGwsIGZh
bHNlLCArMCwgLTAsIE5hTiwgJyddKSB7CisgIGNvbnN0IHN0cmluZ1ZlcnNpb24gPSBPYmplY3Qu
aXMoZmFsc3ksIC0wKSA/ICctMCcgOiBTdHJpbmcoZmFsc3kpOworCisgIHByb21pc2VfdGVzdCh0
ID0+IHsKKworICAgIGNvbnN0IHJzID0gcmVjb3JkaW5nUmVhZGFibGVTdHJlYW0oKTsKKworICAg
IGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0oeworICAgICAgd3JpdGUoKSB7Cisg
ICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcjEpOworICAgICAgfQorICAgIH0pOwor
CisgICAgY29uc3Qgd3JpdGVyID0gd3MuZ2V0V3JpdGVyKCk7CisKKyAgICByZXR1cm4gcHJvbWlz
ZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCB3cml0ZXIud3JpdGUoJ0hlbGxvJyksICd3cml0
ZXIud3JpdGUoKSBtdXN0IHJlamVjdCB3aXRoIHRoZSB3cml0ZSBlcnJvcicpCisgICAgICAudGhl
bigoKSA9PiBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIHdyaXRlci5jbG9zZWQs
ICd3cml0ZXIuY2xvc2VkIG11c3QgcmVqZWN0IHdpdGggdGhlIHdyaXRlIGVycm9yJykpCisgICAg
ICAudGhlbigoKSA9PiB7CisgICAgICAgIHdyaXRlci5yZWxlYXNlTG9jaygpOworCisgICAgICAg
IHJldHVybiBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIHJzLnBpcGVUbyh3cywg
eyBwcmV2ZW50Q2FuY2VsOiBmYWxzeSB9KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAncGlwZVRvIG11c3QgcmVqZWN0IHdpdGggdGhlIHdyaXRlIGVycm9yJykKKyAgICAgICAgICAu
dGhlbigoKSA9PiB7CisgICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJzLmV2ZW50c1dp
dGhvdXRQdWxscywgWydjYW5jZWwnLCBlcnJvcjFdKTsKKyAgICAgICAgICAgIGFzc2VydF9hcnJh
eV9lcXVhbHMod3MuZXZlbnRzLCBbJ3dyaXRlJywgJ0hlbGxvJ10pOworICAgICAgICAgIH0pOwor
ICAgICAgfSk7CisKKyAgfSwgYEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGJl
Y29tZXMgZXJyb3JlZCBiZWZvcmUgcGlwaW5nIGR1ZSB0byB3cml0ZTsgcHJldmVudENhbmNlbCA9
IGAgKworICAgICBgJHtzdHJpbmdWZXJzaW9ufSAoZmFsc3kpOyBmdWxmaWxsZWQgY2FuY2VsIHBy
b21pc2VgKTsKK30KKworZm9yIChjb25zdCB0cnV0aHkgb2YgW3RydWUsICdhJywgMSwgU3ltYm9s
KCksIHsgfV0pIHsKKyAgcHJvbWlzZV90ZXN0KHQgPT4geworCisgICAgY29uc3QgcnMgPSByZWNv
cmRpbmdSZWFkYWJsZVN0cmVhbSgpOworCisgICAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJs
ZVN0cmVhbSh7CisgICAgICB3cml0ZSgpIHsKKyAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0
KGVycm9yMSk7CisgICAgICB9CisgICAgfSk7CisKKyAgICBjb25zdCB3cml0ZXIgPSB3cy5nZXRX
cml0ZXIoKTsKKworICAgIHJldHVybiBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEs
IHdyaXRlci53cml0ZSgnSGVsbG8nKSwgJ3dyaXRlci53cml0ZSgpIG11c3QgcmVqZWN0IHdpdGgg
dGhlIHdyaXRlIGVycm9yJykKKyAgICAgIC50aGVuKCgpID0+IHByb21pc2VfcmVqZWN0c19leGFj
dGx5KHQsIGVycm9yMSwgd3JpdGVyLmNsb3NlZCwgJ3dyaXRlci5jbG9zZWQgbXVzdCByZWplY3Qg
d2l0aCB0aGUgd3JpdGUgZXJyb3InKSkKKyAgICAgIC50aGVuKCgpID0+IHsKKyAgICAgICAgd3Jp
dGVyLnJlbGVhc2VMb2NrKCk7CisKKyAgICAgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19leGFj
dGx5KHQsIGVycm9yMSwgcnMucGlwZVRvKHdzLCB7IHByZXZlbnRDYW5jZWw6IHRydXRoeSB9KSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGlwZVRvIG11c3QgcmVqZWN0IHdpdGgg
dGhlIHdyaXRlIGVycm9yJykKKyAgICAgICAgICAudGhlbigoKSA9PiB7CisgICAgICAgICAgICBh
c3NlcnRfYXJyYXlfZXF1YWxzKHJzLmV2ZW50c1dpdGhvdXRQdWxscywgW10pOworICAgICAgICAg
ICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsnd3JpdGUnLCAnSGVsbG8nXSk7Cisg
ICAgICAgICAgfSk7CisgICAgICB9KTsKKworICB9LCBgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRl
ZCBiYWNrd2FyZDogYmVjb21lcyBlcnJvcmVkIGJlZm9yZSBwaXBpbmcgZHVlIHRvIHdyaXRlOyBw
cmV2ZW50Q2FuY2VsID0gYCArCisgICAgIGAke1N0cmluZyh0cnV0aHkpfSAodHJ1dGh5KWApOwor
fQorCitwcm9taXNlX3Rlc3QodCA9PiB7CisKKyAgY29uc3QgcnMgPSByZWNvcmRpbmdSZWFkYWJs
ZVN0cmVhbSgpOworCisgIGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0oeworICAg
IHdyaXRlKCkgeworICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yMSk7CisgICAgfQor
ICB9KTsKKworICBjb25zdCB3cml0ZXIgPSB3cy5nZXRXcml0ZXIoKTsKKworICByZXR1cm4gcHJv
bWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCB3cml0ZXIud3JpdGUoJ0hlbGxvJyksICd3
cml0ZXIud3JpdGUoKSBtdXN0IHJlamVjdCB3aXRoIHRoZSB3cml0ZSBlcnJvcicpCisgICAgLnRo
ZW4oKCkgPT4gcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCB3cml0ZXIuY2xvc2Vk
LCAnd3JpdGVyLmNsb3NlZCBtdXN0IHJlamVjdCB3aXRoIHRoZSB3cml0ZSBlcnJvcicpKQorICAg
IC50aGVuKCgpID0+IHsKKyAgICAgIHdyaXRlci5yZWxlYXNlTG9jaygpOworCisgICAgICByZXR1
cm4gcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCBycy5waXBlVG8od3MsIHsgcHJl
dmVudENhbmNlbDogdHJ1ZSwgcHJldmVudEFib3J0OiB0cnVlIH0pLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAncGlwZVRvIG11c3QgcmVqZWN0IHdpdGggdGhlIHdyaXRlIGVycm9yJykK
KyAgICAgICAgLnRoZW4oKCkgPT4geworICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMocnMu
ZXZlbnRzV2l0aG91dFB1bGxzLCBbXSk7CisgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3
cy5ldmVudHMsIFsnd3JpdGUnLCAnSGVsbG8nXSk7CisgICAgICAgIH0pOworICAgIH0pOworCit9
LCAnRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogYmVjb21lcyBlcnJvcmVkIGJl
Zm9yZSBwaXBpbmcgZHVlIHRvIHdyaXRlLCBwcmV2ZW50Q2FuY2VsID0gdHJ1ZTsgJyArCisgICAn
cHJldmVudEFib3J0ID0gdHJ1ZScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisKKyAgY29uc3Qg
cnMgPSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSgpOworCisgIGNvbnN0IHdzID0gcmVjb3JkaW5n
V3JpdGFibGVTdHJlYW0oeworICAgIHdyaXRlKCkgeworICAgICAgcmV0dXJuIFByb21pc2UucmVq
ZWN0KGVycm9yMSk7CisgICAgfQorICB9KTsKKworICBjb25zdCB3cml0ZXIgPSB3cy5nZXRXcml0
ZXIoKTsKKworICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCB3cml0
ZXIud3JpdGUoJ0hlbGxvJyksICd3cml0ZXIud3JpdGUoKSBtdXN0IHJlamVjdCB3aXRoIHRoZSB3
cml0ZSBlcnJvcicpCisgICAgLnRoZW4oKCkgPT4gcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwg
ZXJyb3IxLCB3cml0ZXIuY2xvc2VkLCAnd3JpdGVyLmNsb3NlZCBtdXN0IHJlamVjdCB3aXRoIHRo
ZSB3cml0ZSBlcnJvcicpKQorICAgIC50aGVuKCgpID0+IHsKKyAgICAgIHdyaXRlci5yZWxlYXNl
TG9jaygpOworCisgICAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3Ix
LCBycy5waXBlVG8od3MsIHsgcHJldmVudENhbmNlbDogdHJ1ZSwgcHJldmVudEFib3J0OiB0cnVl
LCBwcmV2ZW50Q2xvc2U6IHRydWUgfSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdw
aXBlVG8gbXVzdCByZWplY3Qgd2l0aCB0aGUgd3JpdGUgZXJyb3InKQorICAgICAgICAudGhlbigo
KSA9PiB7CisgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhycy5ldmVudHNXaXRob3V0UHVs
bHMsIFtdKTsKKyAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWyd3cml0
ZScsICdIZWxsbyddKTsKKyAgICAgICAgfSk7CisgICAgfSk7CisKK30sICdFcnJvcnMgbXVzdCBi
ZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVycm9yZWQgYmVmb3JlIHBpcGluZyBkdWUg
dG8gd3JpdGU7IHByZXZlbnRDYW5jZWwgPSB0cnVlLCAnICsKKyAgICdwcmV2ZW50QWJvcnQgPSB0
cnVlLCBwcmV2ZW50Q2xvc2UgPSB0cnVlJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKworICBj
b25zdCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjb250cm9sbGVy
KSB7CisgICAgICBjb250cm9sbGVyLmVucXVldWUoJ0hlbGxvJyk7CisgICAgfQorICB9KTsKKwor
ICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKHsKKyAgICB3cml0ZSgpIHsKKyAg
ICAgIHRocm93IGVycm9yMTsKKyAgICB9CisgIH0pOworCisgIHJldHVybiBwcm9taXNlX3JlamVj
dHNfZXhhY3RseSh0LCBlcnJvcjEsIHJzLnBpcGVUbyh3cyksICdwaXBlVG8gbXVzdCByZWplY3Qg
d2l0aCB0aGUgc2FtZSBlcnJvcicpLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9hcnJheV9lcXVh
bHMocnMuZXZlbnRzV2l0aG91dFB1bGxzLCBbJ2NhbmNlbCcsIGVycm9yMV0pOworICAgIGFzc2Vy
dF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ3dyaXRlJywgJ0hlbGxvJ10pOworICB9KTsKKwor
fSwgJ0Vycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGJlY29tZXMgZXJyb3JlZCBk
dXJpbmcgcGlwaW5nIGR1ZSB0byB3cml0ZTsgcHJldmVudENhbmNlbCBvbWl0dGVkOyBmdWxmaWxs
ZWQgJyArCisgICAnY2FuY2VsIHByb21pc2UnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworCisg
IGNvbnN0IHJzID0gcmVjb3JkaW5nUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGNvbnRyb2xs
ZXIpIHsKKyAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnSGVsbG8nKTsKKyAgICB9LAorICAgIGNh
bmNlbCgpIHsKKyAgICAgIHRocm93IGVycm9yMjsKKyAgICB9CisgIH0pOworCisgIGNvbnN0IHdz
ID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0oeworICAgIHdyaXRlKCkgeworICAgICAgdGhyb3cg
ZXJyb3IxOworICAgIH0KKyAgfSk7CisKKyAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19leGFjdGx5
KHQsIGVycm9yMiwgcnMucGlwZVRvKHdzKSwgJ3BpcGVUbyBtdXN0IHJlamVjdCB3aXRoIHRoZSBj
YW5jZWwgZXJyb3InKS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJzLmV2
ZW50c1dpdGhvdXRQdWxscywgWydjYW5jZWwnLCBlcnJvcjFdKTsKKyAgICBhc3NlcnRfYXJyYXlf
ZXF1YWxzKHdzLmV2ZW50cywgWyd3cml0ZScsICdIZWxsbyddKTsKKyAgfSk7CisKK30sICdFcnJv
cnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVycm9yZWQgZHVyaW5nIHBp
cGluZyBkdWUgdG8gd3JpdGU7IHByZXZlbnRDYW5jZWwgb21pdHRlZDsgcmVqZWN0ZWQgJyArCisg
ICAnY2FuY2VsIHByb21pc2UnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworCisgIGNvbnN0IHJz
ID0gcmVjb3JkaW5nUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGNvbnRyb2xsZXIpIHsKKyAg
ICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnSGVsbG8nKTsKKyAgICB9CisgIH0pOworCisgIGNvbnN0
IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0oeworICAgIHdyaXRlKCkgeworICAgICAgdGhy
b3cgZXJyb3IxOworICAgIH0KKyAgfSk7CisKKyAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19leGFj
dGx5KHQsIGVycm9yMSwgcnMucGlwZVRvKHdzLCB7IHByZXZlbnRDYW5jZWw6IHRydWUgfSksICdw
aXBlVG8gbXVzdCByZWplY3Qgd2l0aCB0aGUgc2FtZSBlcnJvcicpCisgIC50aGVuKCgpID0+IHsK
KyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJzLmV2ZW50c1dpdGhvdXRQdWxscywgW10pOworICAg
IGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ3dyaXRlJywgJ0hlbGxvJ10pOworICB9
KTsKKworfSwgJ0Vycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGJlY29tZXMgZXJy
b3JlZCBkdXJpbmcgcGlwaW5nIGR1ZSB0byB3cml0ZTsgcHJldmVudENhbmNlbCA9IHRydWUnKTsK
KworcHJvbWlzZV90ZXN0KHQgPT4geworCisgIGNvbnN0IHJzID0gcmVjb3JkaW5nUmVhZGFibGVT
dHJlYW0oeworICAgIHN0YXJ0KGNvbnRyb2xsZXIpIHsKKyAgICAgIGNvbnRyb2xsZXIuZW5xdWV1
ZSgnYScpOworICAgICAgY29udHJvbGxlci5lbnF1ZXVlKCdiJyk7CisgICAgICBjb250cm9sbGVy
LmVucXVldWUoJ2MnKTsKKyAgICB9CisgIH0pOworCisgIGNvbnN0IHdzID0gcmVjb3JkaW5nV3Jp
dGFibGVTdHJlYW0oeworICAgIHdyaXRlKCkgeworICAgICAgaWYgKHdzLmV2ZW50cy5sZW5ndGgg
PiAyKSB7CisgICAgICAgIHJldHVybiBkZWxheSgwKS50aGVuKCgpID0+IHsKKyAgICAgICAgICB0
aHJvdyBlcnJvcjE7CisgICAgICAgIH0pOworICAgICAgfQorICAgICAgcmV0dXJuIHVuZGVmaW5l
ZDsKKyAgICB9CisgIH0pOworCisgIHJldHVybiBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBl
cnJvcjEsIHJzLnBpcGVUbyh3cyksICdwaXBlVG8gbXVzdCByZWplY3Qgd2l0aCB0aGUgc2FtZSBl
cnJvcicpLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9hcnJheV9lcXVhbHMocnMuZXZlbnRzV2l0
aG91dFB1bGxzLCBbJ2NhbmNlbCcsIGVycm9yMV0pOworICAgIGFzc2VydF9hcnJheV9lcXVhbHMo
d3MuZXZlbnRzLCBbJ3dyaXRlJywgJ2EnLCAnd3JpdGUnLCAnYiddKTsKKyAgfSk7CisKK30sICdF
cnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVycm9yZWQgZHVyaW5n
IHBpcGluZyBkdWUgdG8gd3JpdGUsIGJ1dCBhc3luYzsgcHJldmVudENhbmNlbCA9ICcgKworICAg
J2ZhbHNlOyBmdWxmaWxsZWQgY2FuY2VsIHByb21pc2UnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4g
eworCisgIGNvbnN0IHJzID0gcmVjb3JkaW5nUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGNv
bnRyb2xsZXIpIHsKKyAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYScpOworICAgICAgY29udHJv
bGxlci5lbnF1ZXVlKCdiJyk7CisgICAgICBjb250cm9sbGVyLmVucXVldWUoJ2MnKTsKKyAgICB9
LAorICAgIGNhbmNlbCgpIHsKKyAgICAgIHRocm93IGVycm9yMjsKKyAgICB9CisgIH0pOworCisg
IGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0oeworICAgIHdyaXRlKCkgeworICAg
ICAgaWYgKHdzLmV2ZW50cy5sZW5ndGggPiAyKSB7CisgICAgICAgIHJldHVybiBkZWxheSgwKS50
aGVuKCgpID0+IHsKKyAgICAgICAgICB0aHJvdyBlcnJvcjE7CisgICAgICAgIH0pOworICAgICAg
fQorICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKKyAgICB9CisgIH0pOworCisgIHJldHVybiBwcm9t
aXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjIsIHJzLnBpcGVUbyh3cyksICdwaXBlVG8gbXVz
dCByZWplY3Qgd2l0aCB0aGUgY2FuY2VsIGVycm9yJykudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0
X2FycmF5X2VxdWFscyhycy5ldmVudHNXaXRob3V0UHVsbHMsIFsnY2FuY2VsJywgZXJyb3IxXSk7
CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsnd3JpdGUnLCAnYScsICd3cml0
ZScsICdiJ10pOworICB9KTsKKworfSwgJ0Vycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dh
cmQ6IGJlY29tZXMgZXJyb3JlZCBkdXJpbmcgcGlwaW5nIGR1ZSB0byB3cml0ZSwgYnV0IGFzeW5j
OyBwcmV2ZW50Q2FuY2VsID0gJyArCisgICAnZmFsc2U7IHJlamVjdGVkIGNhbmNlbCBwcm9taXNl
Jyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKworICBjb25zdCBycyA9IHJlY29yZGluZ1JlYWRh
YmxlU3RyZWFtKHsKKyAgICBzdGFydChjb250cm9sbGVyKSB7CisgICAgICBjb250cm9sbGVyLmVu
cXVldWUoJ2EnKTsKKyAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYicpOworICAgICAgY29udHJv
bGxlci5lbnF1ZXVlKCdjJyk7CisgICAgfQorICB9KTsKKworICBjb25zdCB3cyA9IHJlY29yZGlu
Z1dyaXRhYmxlU3RyZWFtKHsKKyAgICB3cml0ZSgpIHsKKyAgICAgIGlmICh3cy5ldmVudHMubGVu
Z3RoID4gMikgeworICAgICAgICByZXR1cm4gZGVsYXkoMCkudGhlbigoKSA9PiB7CisgICAgICAg
ICAgdGhyb3cgZXJyb3IxOworICAgICAgICB9KTsKKyAgICAgIH0KKyAgICAgIHJldHVybiB1bmRl
ZmluZWQ7CisgICAgfQorICB9KTsKKworICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2V4YWN0bHko
dCwgZXJyb3IxLCBycy5waXBlVG8od3MsIHsgcHJldmVudENhbmNlbDogdHJ1ZSB9KSwgJ3BpcGVU
byBtdXN0IHJlamVjdCB3aXRoIHRoZSBzYW1lIGVycm9yJykKKyAgLnRoZW4oKCkgPT4geworICAg
IGFzc2VydF9hcnJheV9lcXVhbHMocnMuZXZlbnRzV2l0aG91dFB1bGxzLCBbXSk7CisgICAgYXNz
ZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsnd3JpdGUnLCAnYScsICd3cml0ZScsICdiJ10p
OworICB9KTsKKworfSwgJ0Vycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGJlY29t
ZXMgZXJyb3JlZCBkdXJpbmcgcGlwaW5nIGR1ZSB0byB3cml0ZSwgYnV0IGFzeW5jOyBwcmV2ZW50
Q2FuY2VsID0gdHJ1ZScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisKKyAgY29uc3QgcnMgPSBy
ZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSgpOworCisgIGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFi
bGVTdHJlYW0oKTsKKworICBjb25zdCBwaXBlUHJvbWlzZSA9IHByb21pc2VfcmVqZWN0c19leGFj
dGx5KHQsIGVycm9yMSwgcnMucGlwZVRvKHdzKSwgJ3BpcGVUbyBtdXN0IHJlamVjdCB3aXRoIHRo
ZSBzYW1lIGVycm9yJyk7CisKKyAgdC5zdGVwX3RpbWVvdXQoKCkgPT4gd3MuY29udHJvbGxlci5l
cnJvcihlcnJvcjEpLCAxMCk7CisKKyAgcmV0dXJuIHBpcGVQcm9taXNlLnRoZW4oKCkgPT4gewor
ICAgIGFzc2VydF9hcnJheV9lcXVhbHMocnMuZXZlbnRzV2l0aG91dFB1bGxzLCBbJ2NhbmNlbCcs
IGVycm9yMV0pOworICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbXSk7CisgIH0p
OworCit9LCAnRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogYmVjb21lcyBlcnJv
cmVkIGFmdGVyIHBpcGluZzsgcHJldmVudENhbmNlbCBvbWl0dGVkOyBmdWxmaWxsZWQgY2FuY2Vs
IHByb21pc2UnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworCisgIGNvbnN0IHJzID0gcmVjb3Jk
aW5nUmVhZGFibGVTdHJlYW0oeworICAgIGNhbmNlbCgpIHsKKyAgICAgIHRocm93IGVycm9yMjsK
KyAgICB9CisgIH0pOworCisgIGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0oKTsK
KworICBjb25zdCBwaXBlUHJvbWlzZSA9IHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9y
MiwgcnMucGlwZVRvKHdzKSwgJ3BpcGVUbyBtdXN0IHJlamVjdCB3aXRoIHRoZSBjYW5jZWwgZXJy
b3InKTsKKworICB0LnN0ZXBfdGltZW91dCgoKSA9PiB3cy5jb250cm9sbGVyLmVycm9yKGVycm9y
MSksIDEwKTsKKworICByZXR1cm4gcGlwZVByb21pc2UudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0
X2FycmF5X2VxdWFscyhycy5ldmVudHNXaXRob3V0UHVsbHMsIFsnY2FuY2VsJywgZXJyb3IxXSk7
CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFtdKTsKKyAgfSk7CisKK30sICdF
cnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVycm9yZWQgYWZ0ZXIg
cGlwaW5nOyBwcmV2ZW50Q2FuY2VsIG9taXR0ZWQ7IHJlamVjdGVkIGNhbmNlbCBwcm9taXNlJyk7
CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKworICBjb25zdCBycyA9IHJlY29yZGluZ1JlYWRhYmxl
U3RyZWFtKCk7CisKKyAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSgpOworCisg
IGNvbnN0IHBpcGVQcm9taXNlID0gcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCBy
cy5waXBlVG8od3MsIHsgcHJldmVudENhbmNlbDogdHJ1ZSB9KSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGlwZVRvIG11c3QgcmVqZWN0IHdpdGggdGhl
IHNhbWUgZXJyb3InKTsKKworICB0LnN0ZXBfdGltZW91dCgoKSA9PiB3cy5jb250cm9sbGVyLmVy
cm9yKGVycm9yMSksIDEwKTsKKworICByZXR1cm4gcGlwZVByb21pc2UudGhlbigoKSA9PiB7Cisg
ICAgYXNzZXJ0X2FycmF5X2VxdWFscyhycy5ldmVudHNXaXRob3V0UHVsbHMsIFtdKTsKKyAgICBh
c3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgW10pOworICB9KTsKKworfSwgJ0Vycm9ycyBt
dXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGJlY29tZXMgZXJyb3JlZCBhZnRlciBwaXBpbmc7
IHByZXZlbnRDYW5jZWwgPSB0cnVlJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKworICBjb25z
dCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjb250cm9sbGVyKSB7
CisgICAgICBjb250cm9sbGVyLmVucXVldWUoJ2EnKTsKKyAgICAgIGNvbnRyb2xsZXIuZW5xdWV1
ZSgnYicpOworICAgICAgY29udHJvbGxlci5lbnF1ZXVlKCdjJyk7CisgICAgICBjb250cm9sbGVy
LmNsb3NlKCk7CisgICAgfQorICB9KTsKKworICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxl
U3RyZWFtKHsKKyAgICB3cml0ZShjaHVuaykgeworICAgICAgaWYgKGNodW5rID09PSAnYycpIHsK
KyAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yMSk7CisgICAgICB9CisgICAgICBy
ZXR1cm4gdW5kZWZpbmVkOworICAgIH0KKyAgfSk7CisKKyAgcmV0dXJuIHByb21pc2VfcmVqZWN0
c19leGFjdGx5KHQsIGVycm9yMSwgcnMucGlwZVRvKHdzKSwgJ3BpcGVUbyBtdXN0IHJlamVjdCB3
aXRoIHRoZSBzYW1lIGVycm9yJykudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFs
cyhycy5ldmVudHNXaXRob3V0UHVsbHMsIFtdKTsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdz
LmV2ZW50cywgWyd3cml0ZScsICdhJywgJ3dyaXRlJywgJ2InLCAnd3JpdGUnLCAnYyddKTsKKyAg
fSk7CisKK30sICdFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVy
cm9yZWQgYWZ0ZXIgcGlwaW5nIGR1ZSB0byBsYXN0IHdyaXRlOyBzb3VyY2UgaXMgY2xvc2VkOyAn
ICsKKyAgICdwcmV2ZW50Q2FuY2VsIG9taXR0ZWQgKGJ1dCBjYW5jZWwgaXMgbmV2ZXIgY2FsbGVk
KScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisKKyAgY29uc3QgcnMgPSByZWNvcmRpbmdSZWFk
YWJsZVN0cmVhbSh7CisgICAgc3RhcnQoY29udHJvbGxlcikgeworICAgICAgY29udHJvbGxlci5l
bnF1ZXVlKCdhJyk7CisgICAgICBjb250cm9sbGVyLmVucXVldWUoJ2InKTsKKyAgICAgIGNvbnRy
b2xsZXIuZW5xdWV1ZSgnYycpOworICAgICAgY29udHJvbGxlci5jbG9zZSgpOworICAgIH0KKyAg
fSk7CisKKyAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSh7CisgICAgd3JpdGUo
Y2h1bmspIHsKKyAgICAgIGlmIChjaHVuayA9PT0gJ2MnKSB7CisgICAgICAgIHJldHVybiBQcm9t
aXNlLnJlamVjdChlcnJvcjEpOworICAgICAgfQorICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKKyAg
ICB9CisgIH0pOworCisgIHJldHVybiBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEs
IHJzLnBpcGVUbyh3cywgeyBwcmV2ZW50Q2FuY2VsOiB0cnVlIH0pLCAncGlwZVRvIG11c3QgcmVq
ZWN0IHdpdGggdGhlIHNhbWUgZXJyb3InKQorICAgIC50aGVuKCgpID0+IHsKKyAgICAgIGFzc2Vy
dF9hcnJheV9lcXVhbHMocnMuZXZlbnRzV2l0aG91dFB1bGxzLCBbXSk7CisgICAgICBhc3NlcnRf
YXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWyd3cml0ZScsICdhJywgJ3dyaXRlJywgJ2InLCAnd3Jp
dGUnLCAnYyddKTsKKyAgICB9KTsKKworfSwgJ0Vycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFj
a3dhcmQ6IGJlY29tZXMgZXJyb3JlZCBhZnRlciBwaXBpbmcgZHVlIHRvIGxhc3Qgd3JpdGU7IHNv
dXJjZSBpcyBjbG9zZWQ7ICcgKworICAgJ3ByZXZlbnRDYW5jZWwgPSB0cnVlJyk7CisKK3Byb21p
c2VfdGVzdCh0ID0+IHsKKworICBjb25zdCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKCk7
CisKKyAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSh1bmRlZmluZWQsIG5ldyBD
b3VudFF1ZXVpbmdTdHJhdGVneSh7IGhpZ2hXYXRlck1hcms6IDAgfSkpOworCisgIGNvbnN0IHBp
cGVQcm9taXNlID0gcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCBycy5waXBlVG8o
d3MpLCAncGlwZVRvIG11c3QgcmVqZWN0IHdpdGggdGhlIHNhbWUgZXJyb3InKTsKKworICB0LnN0
ZXBfdGltZW91dCgoKSA9PiB3cy5jb250cm9sbGVyLmVycm9yKGVycm9yMSksIDEwKTsKKworICBy
ZXR1cm4gcGlwZVByb21pc2UudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhy
cy5ldmVudHNXaXRob3V0UHVsbHMsIFsnY2FuY2VsJywgZXJyb3IxXSk7CisgICAgYXNzZXJ0X2Fy
cmF5X2VxdWFscyh3cy5ldmVudHMsIFtdKTsKKyAgfSk7CisKK30sICdFcnJvcnMgbXVzdCBiZSBw
cm9wYWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVycm9yZWQgYWZ0ZXIgcGlwaW5nOyBkZXN0IG5l
dmVyIGRlc2lyZXMgY2h1bmtzOyBwcmV2ZW50Q2FuY2VsID0gJyArCisgICAnZmFsc2U7IGZ1bGZp
bGxlZCBjYW5jZWwgcHJvbWlzZScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisKKyAgY29uc3Qg
cnMgPSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSh7CisgICAgY2FuY2VsKCkgeworICAgICAgdGhy
b3cgZXJyb3IyOworICAgIH0KKyAgfSk7CisKKyAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJs
ZVN0cmVhbSh1bmRlZmluZWQsIG5ldyBDb3VudFF1ZXVpbmdTdHJhdGVneSh7IGhpZ2hXYXRlck1h
cms6IDAgfSkpOworCisgIGNvbnN0IHBpcGVQcm9taXNlID0gcHJvbWlzZV9yZWplY3RzX2V4YWN0
bHkodCwgZXJyb3IyLCBycy5waXBlVG8od3MpLCAncGlwZVRvIG11c3QgcmVqZWN0IHdpdGggdGhl
IGNhbmNlbCBlcnJvcicpOworCisgIHQuc3RlcF90aW1lb3V0KCgpID0+IHdzLmNvbnRyb2xsZXIu
ZXJyb3IoZXJyb3IxKSwgMTApOworCisgIHJldHVybiBwaXBlUHJvbWlzZS50aGVuKCgpID0+IHsK
KyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJzLmV2ZW50c1dpdGhvdXRQdWxscywgWydjYW5jZWwn
LCBlcnJvcjFdKTsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgW10pOworICB9
KTsKKworfSwgJ0Vycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGJlY29tZXMgZXJy
b3JlZCBhZnRlciBwaXBpbmc7IGRlc3QgbmV2ZXIgZGVzaXJlcyBjaHVua3M7IHByZXZlbnRDYW5j
ZWwgPSAnICsKKyAgICdmYWxzZTsgcmVqZWN0ZWQgY2FuY2VsIHByb21pc2UnKTsKKworcHJvbWlz
ZV90ZXN0KHQgPT4geworCisgIGNvbnN0IHJzID0gcmVjb3JkaW5nUmVhZGFibGVTdHJlYW0oKTsK
KworICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKHVuZGVmaW5lZCwgbmV3IENv
dW50UXVldWluZ1N0cmF0ZWd5KHsgaGlnaFdhdGVyTWFyazogMCB9KSk7CisKKyAgY29uc3QgcGlw
ZVByb21pc2UgPSBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIHJzLnBpcGVUbyh3
cywgeyBwcmV2ZW50Q2FuY2VsOiB0cnVlIH0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICdwaXBlVG8gbXVzdCByZWplY3Qgd2l0aCB0aGUgc2FtZSBlcnJv
cicpOworCisgIHQuc3RlcF90aW1lb3V0KCgpID0+IHdzLmNvbnRyb2xsZXIuZXJyb3IoZXJyb3Ix
KSwgMTApOworCisgIHJldHVybiBwaXBlUHJvbWlzZS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRf
YXJyYXlfZXF1YWxzKHJzLmV2ZW50c1dpdGhvdXRQdWxscywgW10pOworICAgIGFzc2VydF9hcnJh
eV9lcXVhbHMod3MuZXZlbnRzLCBbXSk7CisgIH0pOworCit9LCAnRXJyb3JzIG11c3QgYmUgcHJv
cGFnYXRlZCBiYWNrd2FyZDogYmVjb21lcyBlcnJvcmVkIGFmdGVyIHBpcGluZzsgZGVzdCBuZXZl
ciBkZXNpcmVzIGNodW5rczsgcHJldmVudENhbmNlbCA9ICcgKworICAgJ3RydWUnKTsKKworcHJv
bWlzZV90ZXN0KCgpID0+IHsKKworICBjb25zdCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFt
KCk7CisKKyAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSgpOworCisgIHdzLmFi
b3J0KGVycm9yMSk7CisKKyAgcmV0dXJuIHJzLnBpcGVUbyh3cykudGhlbigKKyAgICAoKSA9PiBh
c3NlcnRfdW5yZWFjaGVkKCd0aGUgcHJvbWlzZSBtdXN0IG5vdCBmdWxmaWxsJyksCisgICAgZXJy
ID0+IHsKKyAgICAgIGFzc2VydF9lcXVhbHMoZXJyLCBlcnJvcjEsICd0aGUgcHJvbWlzZSBtdXN0
IHJlamVjdCB3aXRoIGVycm9yMScpOworCisgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJzLmV2
ZW50c1dpdGhvdXRQdWxscywgWydjYW5jZWwnLCBlcnJdKTsKKyAgICAgIGFzc2VydF9hcnJheV9l
cXVhbHMod3MuZXZlbnRzLCBbJ2Fib3J0JywgZXJyb3IxXSk7CisgICAgfQorICApOworCit9LCAn
RXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogYmVjb21lcyBlcnJvcmVkIGJlZm9y
ZSBwaXBpbmcgdmlhIGFib3J0OyBwcmV2ZW50Q2FuY2VsIG9taXR0ZWQ7IGZ1bGZpbGxlZCAnICsK
KyAgICdjYW5jZWwgcHJvbWlzZScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisKKyAgY29uc3Qg
cnMgPSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSh7CisgICAgY2FuY2VsKCkgeworICAgICAgdGhy
b3cgZXJyb3IyOworICAgIH0KKyAgfSk7CisKKyAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJs
ZVN0cmVhbSgpOworCisgIHdzLmFib3J0KGVycm9yMSk7CisKKyAgcmV0dXJuIHByb21pc2VfcmVq
ZWN0c19leGFjdGx5KHQsIGVycm9yMiwgcnMucGlwZVRvKHdzKSwgJ3BpcGVUbyBtdXN0IHJlamVj
dCB3aXRoIHRoZSBjYW5jZWwgZXJyb3InKQorICAgIC50aGVuKCgpID0+IHsKKyAgICAgIHJldHVy
biB3cy5nZXRXcml0ZXIoKS5jbG9zZWQudGhlbigKKyAgICAgICAgKCkgPT4gYXNzZXJ0X3VucmVh
Y2hlZCgndGhlIHByb21pc2UgbXVzdCBub3QgZnVsZmlsbCcpLAorICAgICAgICBlcnIgPT4gewor
ICAgICAgICAgIGFzc2VydF9lcXVhbHMoZXJyLCBlcnJvcjEsICd0aGUgcHJvbWlzZSBtdXN0IHJl
amVjdCB3aXRoIGVycm9yMScpOworCisgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhycy5l
dmVudHNXaXRob3V0UHVsbHMsIFsnY2FuY2VsJywgZXJyXSk7CisgICAgICAgICAgYXNzZXJ0X2Fy
cmF5X2VxdWFscyh3cy5ldmVudHMsIFsnYWJvcnQnLCBlcnJvcjFdKTsKKyAgICAgICAgfQorICAg
ICAgKTsKKyAgICB9KTsKKworfSwgJ0Vycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6
IGJlY29tZXMgZXJyb3JlZCBiZWZvcmUgcGlwaW5nIHZpYSBhYm9ydDsgcHJldmVudENhbmNlbCBv
bWl0dGVkOyByZWplY3RlZCAnICsKKyAgICdjYW5jZWwgcHJvbWlzZScpOworCitwcm9taXNlX3Rl
c3QodCA9PiB7CisKKyAgY29uc3QgcnMgPSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSgpOworCisg
IGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0oKTsKKworICB3cy5hYm9ydChlcnJv
cjEpOworCisgIHJldHVybiBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIHJzLnBp
cGVUbyh3cywgeyBwcmV2ZW50Q2FuY2VsOiB0cnVlIH0pKS50aGVuKCgpID0+IHsKKyAgICBhc3Nl
cnRfYXJyYXlfZXF1YWxzKHJzLmV2ZW50c1dpdGhvdXRQdWxscywgW10pOworICAgIGFzc2VydF9h
cnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ2Fib3J0JywgZXJyb3IxXSk7CisgIH0pOworCit9LCAn
RXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogYmVjb21lcyBlcnJvcmVkIGJlZm9y
ZSBwaXBpbmcgdmlhIGFib3J0OyBwcmV2ZW50Q2FuY2VsID0gdHJ1ZScpOworCitwcm9taXNlX3Rl
c3QodCA9PiB7CisKKyAgY29uc3QgcnMgPSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSgpOworCisg
IGxldCByZXNvbHZlV3JpdGVDYWxsZWQ7CisgIGNvbnN0IHdyaXRlQ2FsbGVkUHJvbWlzZSA9IG5l
dyBQcm9taXNlKHJlc29sdmUgPT4geworICAgIHJlc29sdmVXcml0ZUNhbGxlZCA9IHJlc29sdmU7
CisgIH0pOworCisgIGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0oeworICAgIHdy
aXRlKCkgeworICAgICAgcmVzb2x2ZVdyaXRlQ2FsbGVkKCk7CisgICAgICByZXR1cm4gZmx1c2hB
c3luY0V2ZW50cygpOworICAgIH0KKyAgfSk7CisKKyAgY29uc3QgcGlwZVByb21pc2UgPSBycy5w
aXBlVG8od3MpOworCisgIHJzLmNvbnRyb2xsZXIuZW5xdWV1ZSgnYScpOworCisgIHJldHVybiB3
cml0ZUNhbGxlZFByb21pc2UudGhlbigoKSA9PiB7CisgICAgd3MuY29udHJvbGxlci5lcnJvcihl
cnJvcjEpOworCisgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMSwg
cGlwZVByb21pc2UpOworICB9KS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxz
KHJzLmV2ZW50c1dpdGhvdXRQdWxscywgWydjYW5jZWwnLCBlcnJvcjFdKTsKKyAgICBhc3NlcnRf
YXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWyd3cml0ZScsICdhJ10pOworICB9KTsKKworfSwgJ0Vy
cm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGVycm9yaW5nIHZpYSB0aGUgY29udHJv
bGxlciBlcnJvcnMgb25jZSBwZW5kaW5nIHdyaXRlIGNvbXBsZXRlcycpOwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGlu
Zy9lcnJvci1wcm9wYWdhdGlvbi1iYWNrd2FyZC5hbnkud29ya2VyLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcv
ZXJyb3ItcHJvcGFnYXRpb24tYmFja3dhcmQuYW55Lndvcmtlci1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZTUxOWQxMGI3M2ZjMTZjNTY0ZTYwNjYxYTkxOWQ0ZDdiMjJiMmY4YwotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy9waXBpbmcvZXJyb3ItcHJvcGFnYXRpb24tYmFja3dhcmQuYW55Lndvcmtlci1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwzNyBAQAorCitGQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQg
YmFja3dhcmQ6IHN0YXJ0cyBlcnJvcmVkOyBwcmV2ZW50Q2FuY2VsIG9taXR0ZWQ7IGZ1bGZpbGxl
ZCBjYW5jZWwgcHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJ
TCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVycm9yZWQgYmVm
b3JlIHBpcGluZyBkdWUgdG8gd3JpdGU7IHByZXZlbnRDYW5jZWwgb21pdHRlZDsgZnVsZmlsbGVk
IGNhbmNlbCBwcm9taXNlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlM
IEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGJlY29tZXMgZXJyb3JlZCBiZWZv
cmUgcGlwaW5nIGR1ZSB0byB3cml0ZTsgcHJldmVudENhbmNlbCBvbWl0dGVkOyByZWplY3RlZCBj
YW5jZWwgcHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBF
cnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVycm9yZWQgYmVmb3Jl
IHBpcGluZyBkdWUgdG8gd3JpdGU7IHByZXZlbnRDYW5jZWwgPSB1bmRlZmluZWQgKGZhbHN5KTsg
ZnVsZmlsbGVkIGNhbmNlbCBwcm9taXNlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3Ry
ZWFtCitGQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGJlY29tZXMgZXJy
b3JlZCBiZWZvcmUgcGlwaW5nIGR1ZSB0byB3cml0ZTsgcHJldmVudENhbmNlbCA9IG51bGwgKGZh
bHN5KTsgZnVsZmlsbGVkIGNhbmNlbCBwcm9taXNlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRh
YmxlU3RyZWFtCitGQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGJlY29t
ZXMgZXJyb3JlZCBiZWZvcmUgcGlwaW5nIGR1ZSB0byB3cml0ZTsgcHJldmVudENhbmNlbCA9IGZh
bHNlIChmYWxzeSk7IGZ1bGZpbGxlZCBjYW5jZWwgcHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxl
OiBXcml0YWJsZVN0cmVhbQorRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJk
OiBiZWNvbWVzIGVycm9yZWQgYmVmb3JlIHBpcGluZyBkdWUgdG8gd3JpdGU7IHByZXZlbnRDYW5j
ZWwgPSAwIChmYWxzeSk7IGZ1bGZpbGxlZCBjYW5jZWwgcHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlh
YmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3
YXJkOiBiZWNvbWVzIGVycm9yZWQgYmVmb3JlIHBpcGluZyBkdWUgdG8gd3JpdGU7IHByZXZlbnRD
YW5jZWwgPSAtMCAoZmFsc3kpOyBmdWxmaWxsZWQgY2FuY2VsIHByb21pc2UgQ2FuJ3QgZmluZCB2
YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBi
YWNrd2FyZDogYmVjb21lcyBlcnJvcmVkIGJlZm9yZSBwaXBpbmcgZHVlIHRvIHdyaXRlOyBwcmV2
ZW50Q2FuY2VsID0gTmFOIChmYWxzeSk7IGZ1bGZpbGxlZCBjYW5jZWwgcHJvbWlzZSBDYW4ndCBm
aW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdh
dGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVycm9yZWQgYmVmb3JlIHBpcGluZyBkdWUgdG8gd3JpdGU7
IHByZXZlbnRDYW5jZWwgPSAgKGZhbHN5KTsgZnVsZmlsbGVkIGNhbmNlbCBwcm9taXNlIENhbid0
IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIEVycm9ycyBtdXN0IGJlIHByb3Bh
Z2F0ZWQgYmFja3dhcmQ6IGJlY29tZXMgZXJyb3JlZCBiZWZvcmUgcGlwaW5nIGR1ZSB0byB3cml0
ZTsgcHJldmVudENhbmNlbCA9IHRydWUgKHRydXRoeSkgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3Jp
dGFibGVTdHJlYW0KK0ZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogYmVj
b21lcyBlcnJvcmVkIGJlZm9yZSBwaXBpbmcgZHVlIHRvIHdyaXRlOyBwcmV2ZW50Q2FuY2VsID0g
YSAodHJ1dGh5KSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBFcnJv
cnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVycm9yZWQgYmVmb3JlIHBp
cGluZyBkdWUgdG8gd3JpdGU7IHByZXZlbnRDYW5jZWwgPSAxICh0cnV0aHkpIENhbid0IGZpbmQg
dmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQg
YmFja3dhcmQ6IGJlY29tZXMgZXJyb3JlZCBiZWZvcmUgcGlwaW5nIGR1ZSB0byB3cml0ZTsgcHJl
dmVudENhbmNlbCA9IFN5bWJvbCgpICh0cnV0aHkpIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRh
YmxlU3RyZWFtCitGQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGJlY29t
ZXMgZXJyb3JlZCBiZWZvcmUgcGlwaW5nIGR1ZSB0byB3cml0ZTsgcHJldmVudENhbmNlbCA9IFtv
YmplY3QgT2JqZWN0XSAodHJ1dGh5KSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVh
bQorRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVycm9y
ZWQgYmVmb3JlIHBpcGluZyBkdWUgdG8gd3JpdGUsIHByZXZlbnRDYW5jZWwgPSB0cnVlOyBwcmV2
ZW50QWJvcnQgPSB0cnVlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlM
IEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGJlY29tZXMgZXJyb3JlZCBiZWZv
cmUgcGlwaW5nIGR1ZSB0byB3cml0ZTsgcHJldmVudENhbmNlbCA9IHRydWUsIHByZXZlbnRBYm9y
dCA9IHRydWUsIHByZXZlbnRDbG9zZSA9IHRydWUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFi
bGVTdHJlYW0KK0ZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogYmVjb21l
cyBlcnJvcmVkIGR1cmluZyBwaXBpbmcgZHVlIHRvIHdyaXRlOyBwcmV2ZW50Q2FuY2VsIG9taXR0
ZWQ7IGZ1bGZpbGxlZCBjYW5jZWwgcHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJs
ZVN0cmVhbQorRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVz
IGVycm9yZWQgZHVyaW5nIHBpcGluZyBkdWUgdG8gd3JpdGU7IHByZXZlbnRDYW5jZWwgb21pdHRl
ZDsgcmVqZWN0ZWQgY2FuY2VsIHByb21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVT
dHJlYW0KK0ZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogYmVjb21lcyBl
cnJvcmVkIGR1cmluZyBwaXBpbmcgZHVlIHRvIHdyaXRlOyBwcmV2ZW50Q2FuY2VsID0gdHJ1ZSBD
YW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBFcnJvcnMgbXVzdCBiZSBw
cm9wYWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVycm9yZWQgZHVyaW5nIHBpcGluZyBkdWUgdG8g
d3JpdGUsIGJ1dCBhc3luYzsgcHJldmVudENhbmNlbCA9IGZhbHNlOyBmdWxmaWxsZWQgY2FuY2Vs
IHByb21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgRXJyb3Jz
IG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogYmVjb21lcyBlcnJvcmVkIGR1cmluZyBwaXBp
bmcgZHVlIHRvIHdyaXRlLCBidXQgYXN5bmM7IHByZXZlbnRDYW5jZWwgPSBmYWxzZTsgcmVqZWN0
ZWQgY2FuY2VsIHByb21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZB
SUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogYmVjb21lcyBlcnJvcmVkIGR1
cmluZyBwaXBpbmcgZHVlIHRvIHdyaXRlLCBidXQgYXN5bmM7IHByZXZlbnRDYW5jZWwgPSB0cnVl
IENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIEVycm9ycyBtdXN0IGJl
IHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGJlY29tZXMgZXJyb3JlZCBhZnRlciBwaXBpbmc7IHByZXZl
bnRDYW5jZWwgb21pdHRlZDsgZnVsZmlsbGVkIGNhbmNlbCBwcm9taXNlIENhbid0IGZpbmQgdmFy
aWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFj
a3dhcmQ6IGJlY29tZXMgZXJyb3JlZCBhZnRlciBwaXBpbmc7IHByZXZlbnRDYW5jZWwgb21pdHRl
ZDsgcmVqZWN0ZWQgY2FuY2VsIHByb21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVT
dHJlYW0KK0ZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogYmVjb21lcyBl
cnJvcmVkIGFmdGVyIHBpcGluZzsgcHJldmVudENhbmNlbCA9IHRydWUgQ2FuJ3QgZmluZCB2YXJp
YWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNr
d2FyZDogYmVjb21lcyBlcnJvcmVkIGFmdGVyIHBpcGluZyBkdWUgdG8gbGFzdCB3cml0ZTsgc291
cmNlIGlzIGNsb3NlZDsgcHJldmVudENhbmNlbCBvbWl0dGVkIChidXQgY2FuY2VsIGlzIG5ldmVy
IGNhbGxlZCkgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgRXJyb3Jz
IG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogYmVjb21lcyBlcnJvcmVkIGFmdGVyIHBpcGlu
ZyBkdWUgdG8gbGFzdCB3cml0ZTsgc291cmNlIGlzIGNsb3NlZDsgcHJldmVudENhbmNlbCA9IHRy
dWUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgRXJyb3JzIG11c3Qg
YmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogYmVjb21lcyBlcnJvcmVkIGFmdGVyIHBpcGluZzsgZGVz
dCBuZXZlciBkZXNpcmVzIGNodW5rczsgcHJldmVudENhbmNlbCA9IGZhbHNlOyBmdWxmaWxsZWQg
Y2FuY2VsIHByb21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwg
RXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogYmVjb21lcyBlcnJvcmVkIGFmdGVy
IHBpcGluZzsgZGVzdCBuZXZlciBkZXNpcmVzIGNodW5rczsgcHJldmVudENhbmNlbCA9IGZhbHNl
OyByZWplY3RlZCBjYW5jZWwgcHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0
cmVhbQorRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVy
cm9yZWQgYWZ0ZXIgcGlwaW5nOyBkZXN0IG5ldmVyIGRlc2lyZXMgY2h1bmtzOyBwcmV2ZW50Q2Fu
Y2VsID0gdHJ1ZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBFcnJv
cnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVycm9yZWQgYmVmb3JlIHBp
cGluZyB2aWEgYWJvcnQ7IHByZXZlbnRDYW5jZWwgb21pdHRlZDsgZnVsZmlsbGVkIGNhbmNlbCBw
cm9taXNlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIEVycm9ycyBt
dXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGJlY29tZXMgZXJyb3JlZCBiZWZvcmUgcGlwaW5n
IHZpYSBhYm9ydDsgcHJldmVudENhbmNlbCBvbWl0dGVkOyByZWplY3RlZCBjYW5jZWwgcHJvbWlz
ZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBFcnJvcnMgbXVzdCBi
ZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVycm9yZWQgYmVmb3JlIHBpcGluZyB2aWEg
YWJvcnQ7IHByZXZlbnRDYW5jZWwgPSB0cnVlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxl
U3RyZWFtCitGQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGVycm9yaW5n
IHZpYSB0aGUgY29udHJvbGxlciBlcnJvcnMgb25jZSBwZW5kaW5nIHdyaXRlIGNvbXBsZXRlcyBD
YW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Vycm9y
LXByb3BhZ2F0aW9uLWJhY2t3YXJkLmFueS53b3JrZXIuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvZXJyb3ItcHJvcGFnYXRp
b24tYmFja3dhcmQuYW55Lndvcmtlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzODI5MTM1MjhlNjkzYjNh
NWQ1NmM2NjBhNDUwNjA5ODBiNTQ4YzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Vycm9yLXByb3Bh
Z2F0aW9uLWJhY2t3YXJkLmFueS53b3JrZXIuaHRtbApAQCAtMCwwICsxIEBACis8IS0tIFRoaXMg
ZmlsZSBpcyByZXF1aXJlZCBmb3IgV2ViS2l0IHRlc3QgaW5mcmFzdHJ1Y3R1cmUgdG8gcnVuIHRo
ZSB0ZW1wbGF0ZWQgdGVzdCAtLT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
cGlwaW5nL2Vycm9yLXByb3BhZ2F0aW9uLWJhY2t3YXJkLmRlZGljYXRlZHdvcmtlci1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvcGlwaW5nL2Vycm9yLXByb3BhZ2F0aW9uLWJhY2t3YXJkLmRlZGljYXRlZHdvcmtlci1leHBl
Y3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU1MTlkMTBiNzNmYzE2YzU2
NGU2MDY2MWE5MTlkNGQ3YjIyYjJmOGMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL3BpcGluZy9lcnJvci1wcm9wYWdhdGlvbi1iYWNrd2FyZC5kZWRpY2F0ZWR3b3Jr
ZXItZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotCi1GQUlMIEVy
cm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IHN0YXJ0cyBlcnJvcmVkOyBwcmV2ZW50
Q2FuY2VsIG9taXR0ZWQ7IGZ1bGZpbGxlZCBjYW5jZWwgcHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlh
YmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3
YXJkOiBiZWNvbWVzIGVycm9yZWQgYmVmb3JlIHBpcGluZyBkdWUgdG8gd3JpdGU7IHByZXZlbnRD
YW5jZWwgb21pdHRlZDsgZnVsZmlsbGVkIGNhbmNlbCBwcm9taXNlIENhbid0IGZpbmQgdmFyaWFi
bGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dh
cmQ6IGJlY29tZXMgZXJyb3JlZCBiZWZvcmUgcGlwaW5nIGR1ZSB0byB3cml0ZTsgcHJldmVudENh
bmNlbCBvbWl0dGVkOyByZWplY3RlZCBjYW5jZWwgcHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxl
OiBXcml0YWJsZVN0cmVhbQotRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJk
OiBiZWNvbWVzIGVycm9yZWQgYmVmb3JlIHBpcGluZyBkdWUgdG8gd3JpdGU7IHByZXZlbnRDYW5j
ZWwgPSB1bmRlZmluZWQgKGZhbHN5KTsgZnVsZmlsbGVkIGNhbmNlbCBwcm9taXNlIENhbid0IGZp
bmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0
ZWQgYmFja3dhcmQ6IGJlY29tZXMgZXJyb3JlZCBiZWZvcmUgcGlwaW5nIGR1ZSB0byB3cml0ZTsg
cHJldmVudENhbmNlbCA9IG51bGwgKGZhbHN5KTsgZnVsZmlsbGVkIGNhbmNlbCBwcm9taXNlIENh
bid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIEVycm9ycyBtdXN0IGJlIHBy
b3BhZ2F0ZWQgYmFja3dhcmQ6IGJlY29tZXMgZXJyb3JlZCBiZWZvcmUgcGlwaW5nIGR1ZSB0byB3
cml0ZTsgcHJldmVudENhbmNlbCA9IGZhbHNlIChmYWxzeSk7IGZ1bGZpbGxlZCBjYW5jZWwgcHJv
bWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBFcnJvcnMgbXVz
dCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVycm9yZWQgYmVmb3JlIHBpcGluZyBk
dWUgdG8gd3JpdGU7IHByZXZlbnRDYW5jZWwgPSAwIChmYWxzeSk7IGZ1bGZpbGxlZCBjYW5jZWwg
cHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBFcnJvcnMg
bXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVycm9yZWQgYmVmb3JlIHBpcGlu
ZyBkdWUgdG8gd3JpdGU7IHByZXZlbnRDYW5jZWwgPSAtMCAoZmFsc3kpOyBmdWxmaWxsZWQgY2Fu
Y2VsIHByb21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgRXJy
b3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogYmVjb21lcyBlcnJvcmVkIGJlZm9yZSBw
aXBpbmcgZHVlIHRvIHdyaXRlOyBwcmV2ZW50Q2FuY2VsID0gTmFOIChmYWxzeSk7IGZ1bGZpbGxl
ZCBjYW5jZWwgcHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJ
TCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVycm9yZWQgYmVm
b3JlIHBpcGluZyBkdWUgdG8gd3JpdGU7IHByZXZlbnRDYW5jZWwgPSAgKGZhbHN5KTsgZnVsZmls
bGVkIGNhbmNlbCBwcm9taXNlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1G
QUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGJlY29tZXMgZXJyb3JlZCBi
ZWZvcmUgcGlwaW5nIGR1ZSB0byB3cml0ZTsgcHJldmVudENhbmNlbCA9IHRydWUgKHRydXRoeSkg
Q2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgRXJyb3JzIG11c3QgYmUg
cHJvcGFnYXRlZCBiYWNrd2FyZDogYmVjb21lcyBlcnJvcmVkIGJlZm9yZSBwaXBpbmcgZHVlIHRv
IHdyaXRlOyBwcmV2ZW50Q2FuY2VsID0gYSAodHJ1dGh5KSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBX
cml0YWJsZVN0cmVhbQotRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBi
ZWNvbWVzIGVycm9yZWQgYmVmb3JlIHBpcGluZyBkdWUgdG8gd3JpdGU7IHByZXZlbnRDYW5jZWwg
PSAxICh0cnV0aHkpIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIEVy
cm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGJlY29tZXMgZXJyb3JlZCBiZWZvcmUg
cGlwaW5nIGR1ZSB0byB3cml0ZTsgcHJldmVudENhbmNlbCA9IFN5bWJvbCgpICh0cnV0aHkpIENh
bid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIEVycm9ycyBtdXN0IGJlIHBy
b3BhZ2F0ZWQgYmFja3dhcmQ6IGJlY29tZXMgZXJyb3JlZCBiZWZvcmUgcGlwaW5nIGR1ZSB0byB3
cml0ZTsgcHJldmVudENhbmNlbCA9IFtvYmplY3QgT2JqZWN0XSAodHJ1dGh5KSBDYW4ndCBmaW5k
IHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVk
IGJhY2t3YXJkOiBiZWNvbWVzIGVycm9yZWQgYmVmb3JlIHBpcGluZyBkdWUgdG8gd3JpdGUsIHBy
ZXZlbnRDYW5jZWwgPSB0cnVlOyBwcmV2ZW50QWJvcnQgPSB0cnVlIENhbid0IGZpbmQgdmFyaWFi
bGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dh
cmQ6IGJlY29tZXMgZXJyb3JlZCBiZWZvcmUgcGlwaW5nIGR1ZSB0byB3cml0ZTsgcHJldmVudENh
bmNlbCA9IHRydWUsIHByZXZlbnRBYm9ydCA9IHRydWUsIHByZXZlbnRDbG9zZSA9IHRydWUgQ2Fu
J3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgRXJyb3JzIG11c3QgYmUgcHJv
cGFnYXRlZCBiYWNrd2FyZDogYmVjb21lcyBlcnJvcmVkIGR1cmluZyBwaXBpbmcgZHVlIHRvIHdy
aXRlOyBwcmV2ZW50Q2FuY2VsIG9taXR0ZWQ7IGZ1bGZpbGxlZCBjYW5jZWwgcHJvbWlzZSBDYW4n
dCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9w
YWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVycm9yZWQgZHVyaW5nIHBpcGluZyBkdWUgdG8gd3Jp
dGU7IHByZXZlbnRDYW5jZWwgb21pdHRlZDsgcmVqZWN0ZWQgY2FuY2VsIHByb21pc2UgQ2FuJ3Qg
ZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFn
YXRlZCBiYWNrd2FyZDogYmVjb21lcyBlcnJvcmVkIGR1cmluZyBwaXBpbmcgZHVlIHRvIHdyaXRl
OyBwcmV2ZW50Q2FuY2VsID0gdHJ1ZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVh
bQotRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVycm9y
ZWQgZHVyaW5nIHBpcGluZyBkdWUgdG8gd3JpdGUsIGJ1dCBhc3luYzsgcHJldmVudENhbmNlbCA9
IGZhbHNlOyBmdWxmaWxsZWQgY2FuY2VsIHByb21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3Jp
dGFibGVTdHJlYW0KLUZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogYmVj
b21lcyBlcnJvcmVkIGR1cmluZyBwaXBpbmcgZHVlIHRvIHdyaXRlLCBidXQgYXN5bmM7IHByZXZl
bnRDYW5jZWwgPSBmYWxzZTsgcmVqZWN0ZWQgY2FuY2VsIHByb21pc2UgQ2FuJ3QgZmluZCB2YXJp
YWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNr
d2FyZDogYmVjb21lcyBlcnJvcmVkIGR1cmluZyBwaXBpbmcgZHVlIHRvIHdyaXRlLCBidXQgYXN5
bmM7IHByZXZlbnRDYW5jZWwgPSB0cnVlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3Ry
ZWFtCi1GQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGJlY29tZXMgZXJy
b3JlZCBhZnRlciBwaXBpbmc7IHByZXZlbnRDYW5jZWwgb21pdHRlZDsgZnVsZmlsbGVkIGNhbmNl
bCBwcm9taXNlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIEVycm9y
cyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGJlY29tZXMgZXJyb3JlZCBhZnRlciBwaXBp
bmc7IHByZXZlbnRDYW5jZWwgb21pdHRlZDsgcmVqZWN0ZWQgY2FuY2VsIHByb21pc2UgQ2FuJ3Qg
ZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFn
YXRlZCBiYWNrd2FyZDogYmVjb21lcyBlcnJvcmVkIGFmdGVyIHBpcGluZzsgcHJldmVudENhbmNl
bCA9IHRydWUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgRXJyb3Jz
IG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogYmVjb21lcyBlcnJvcmVkIGFmdGVyIHBpcGlu
ZyBkdWUgdG8gbGFzdCB3cml0ZTsgc291cmNlIGlzIGNsb3NlZDsgcHJldmVudENhbmNlbCBvbWl0
dGVkIChidXQgY2FuY2VsIGlzIG5ldmVyIGNhbGxlZCkgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3Jp
dGFibGVTdHJlYW0KLUZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogYmVj
b21lcyBlcnJvcmVkIGFmdGVyIHBpcGluZyBkdWUgdG8gbGFzdCB3cml0ZTsgc291cmNlIGlzIGNs
b3NlZDsgcHJldmVudENhbmNlbCA9IHRydWUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVT
dHJlYW0KLUZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogYmVjb21lcyBl
cnJvcmVkIGFmdGVyIHBpcGluZzsgZGVzdCBuZXZlciBkZXNpcmVzIGNodW5rczsgcHJldmVudENh
bmNlbCA9IGZhbHNlOyBmdWxmaWxsZWQgY2FuY2VsIHByb21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJs
ZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2Fy
ZDogYmVjb21lcyBlcnJvcmVkIGFmdGVyIHBpcGluZzsgZGVzdCBuZXZlciBkZXNpcmVzIGNodW5r
czsgcHJldmVudENhbmNlbCA9IGZhbHNlOyByZWplY3RlZCBjYW5jZWwgcHJvbWlzZSBDYW4ndCBm
aW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdh
dGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVycm9yZWQgYWZ0ZXIgcGlwaW5nOyBkZXN0IG5ldmVyIGRl
c2lyZXMgY2h1bmtzOyBwcmV2ZW50Q2FuY2VsID0gdHJ1ZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBX
cml0YWJsZVN0cmVhbQotRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBi
ZWNvbWVzIGVycm9yZWQgYmVmb3JlIHBpcGluZyB2aWEgYWJvcnQ7IHByZXZlbnRDYW5jZWwgb21p
dHRlZDsgZnVsZmlsbGVkIGNhbmNlbCBwcm9taXNlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRh
YmxlU3RyZWFtCi1GQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGJlY29t
ZXMgZXJyb3JlZCBiZWZvcmUgcGlwaW5nIHZpYSBhYm9ydDsgcHJldmVudENhbmNlbCBvbWl0dGVk
OyByZWplY3RlZCBjYW5jZWwgcHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0
cmVhbQotRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVy
cm9yZWQgYmVmb3JlIHBpcGluZyB2aWEgYWJvcnQ7IHByZXZlbnRDYW5jZWwgPSB0cnVlIENhbid0
IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIEVycm9ycyBtdXN0IGJlIHByb3Bh
Z2F0ZWQgYmFja3dhcmQ6IGVycm9yaW5nIHZpYSB0aGUgY29udHJvbGxlciBlcnJvcnMgb25jZSBw
ZW5kaW5nIHdyaXRlIGNvbXBsZXRlcyBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVh
bQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3N0cmVhbXMvcGlwaW5nL2Vycm9yLXByb3BhZ2F0aW9uLWJhY2t3YXJkLmRlZGljYXRlZHdv
cmtlci5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
dHJlYW1zL3BpcGluZy9lcnJvci1wcm9wYWdhdGlvbi1iYWNrd2FyZC5kZWRpY2F0ZWR3b3JrZXIu
aHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzZlMmY0ZWNkMmQxZTYwYTVmOTY5
ZTU0NmRkMjExYTFkZTk0ZTRiNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMvcGlwaW5nL2Vycm9yLXByb3BhZ2F0aW9uLWJhY2t3YXJkLmRlZGljYXRlZHdvcmtlci5o
dG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08bWV0
YSBjaGFyc2V0PSJ1dGYtOCI+Ci08dGl0bGU+ZXJyb3ItcHJvcGFnYXRpb24tYmFja3dhcmQuanMg
ZGVkaWNhdGVkIHdvcmtlciB3cmFwcGVyIGZpbGU8L3RpdGxlPgotCi08c2NyaXB0IHNyYz0iL3Jl
c291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNl
cy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci0KLTxzY3JpcHQ+Ci0ndXNlIHN0cmlj
dCc7Ci1mZXRjaF90ZXN0c19mcm9tX3dvcmtlcihuZXcgV29ya2VyKCdlcnJvci1wcm9wYWdhdGlv
bi1iYWNrd2FyZC5qcycpKTsKLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9lcnJvci1wcm9wYWdh
dGlvbi1iYWNrd2FyZC5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zdHJlYW1zL3BpcGluZy9lcnJvci1wcm9wYWdhdGlvbi1iYWNrd2FyZC5odG1sCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZDQ4NzY4NjVjYzU1ZDgxNDAyOTMwYTg5NTNi
MTQyYWEyODVjOGFkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9w
aXBpbmcvZXJyb3ItcHJvcGFnYXRpb24tYmFja3dhcmQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0x
LDExICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHRp
dGxlPmVycm9yLXByb3BhZ2F0aW9uLWJhY2t3YXJkLmpzIGJyb3dzZXIgY29udGV4dCB3cmFwcGVy
IGZpbGU8L3RpdGxlPgotCi08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+
PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+
PC9zY3JpcHQ+Ci0KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdC11dGlscy5qcyI+PC9z
Y3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3JlY29yZGluZy1zdHJlYW1zLmpzIj48
L3NjcmlwdD4KLQotPHNjcmlwdCBzcmM9ImVycm9yLXByb3BhZ2F0aW9uLWJhY2t3YXJkLmpzIj48
L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvZXJyb3ItcHJvcGFnYXRpb24tYmFja3dhcmQuanMgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5n
L2Vycm9yLXByb3BhZ2F0aW9uLWJhY2t3YXJkLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBkZGE1Nzc0ZTFjOWFlNjljNTIyMmMyZmEzOGFjMWNmYjZhNmU3ZmQ0Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvZXJyb3ItcHJvcGFnYXRpb24t
YmFja3dhcmQuanMKKysrIC9kZXYvbnVsbApAQCAtMSw2MzUgKzAsMCBAQAotJ3VzZSBzdHJpY3Qn
OwotCi1pZiAoc2VsZi5pbXBvcnRTY3JpcHRzKSB7Ci0gIHNlbGYuaW1wb3J0U2NyaXB0cygnL3Jl
c291cmNlcy90ZXN0aGFybmVzcy5qcycpOwotICBzZWxmLmltcG9ydFNjcmlwdHMoJy4uL3Jlc291
cmNlcy90ZXN0LXV0aWxzLmpzJyk7Ci0gIHNlbGYuaW1wb3J0U2NyaXB0cygnLi4vcmVzb3VyY2Vz
L3JlY29yZGluZy1zdHJlYW1zLmpzJyk7Ci19Ci0KLWNvbnN0IGVycm9yMSA9IG5ldyBFcnJvcign
ZXJyb3IxIScpOwotZXJyb3IxLm5hbWUgPSAnZXJyb3IxJzsKLQotY29uc3QgZXJyb3IyID0gbmV3
IEVycm9yKCdlcnJvcjIhJyk7Ci1lcnJvcjIubmFtZSA9ICdlcnJvcjInOwotCi1wcm9taXNlX3Rl
c3QodCA9PiB7Ci0KLSAgY29uc3QgcnMgPSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSgpOwotCi0g
IGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0oewotICAgIHN0YXJ0KCkgewotICAg
ICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yMSk7Ci0gICAgfQotICB9KTsKLQotICByZXR1
cm4gcHJvbWlzZV9yZWplY3RzKHQsIGVycm9yMSwgcnMucGlwZVRvKHdzKSwgJ3BpcGVUbyBtdXN0
IHJlamVjdCB3aXRoIHRoZSBzYW1lIGVycm9yJykKLSAgICAudGhlbigoKSA9PiB7Ci0gICAgICBh
c3NlcnRfYXJyYXlfZXF1YWxzKHJzLmV2ZW50c1dpdGhvdXRQdWxscywgWydjYW5jZWwnLCBlcnJv
cjFdKTsKLSAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbXSk7Ci0gICAgfSk7
Ci0KLX0sICdFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBzdGFydHMgZXJyb3Jl
ZDsgcHJldmVudENhbmNlbCBvbWl0dGVkOyBmdWxmaWxsZWQgY2FuY2VsIHByb21pc2UnKTsKLQot
cHJvbWlzZV90ZXN0KHQgPT4gewotCi0gIGNvbnN0IHJzID0gcmVjb3JkaW5nUmVhZGFibGVTdHJl
YW0oKTsKLQotICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKHsKLSAgICB3cml0
ZSgpIHsKLSAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcjEpOwotICAgIH0KLSAgfSk7
Ci0KLSAgY29uc3Qgd3JpdGVyID0gd3MuZ2V0V3JpdGVyKCk7Ci0KLSAgcmV0dXJuIHByb21pc2Vf
cmVqZWN0cyh0LCBlcnJvcjEsIHdyaXRlci53cml0ZSgnSGVsbG8nKSwgJ3dyaXRlci53cml0ZSgp
IG11c3QgcmVqZWN0IHdpdGggdGhlIHdyaXRlIGVycm9yJykKLSAgICAudGhlbigoKSA9PiBwcm9t
aXNlX3JlamVjdHModCwgZXJyb3IxLCB3cml0ZXIuY2xvc2VkLCAnd3JpdGVyLmNsb3NlZCBtdXN0
IHJlamVjdCB3aXRoIHRoZSB3cml0ZSBlcnJvcicpKQotICAgIC50aGVuKCgpID0+IHsKLSAgICAg
IHdyaXRlci5yZWxlYXNlTG9jaygpOwotCi0gICAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHQs
IGVycm9yMSwgcnMucGlwZVRvKHdzKSwgJ3BpcGVUbyBtdXN0IHJlamVjdCB3aXRoIHRoZSB3cml0
ZSBlcnJvcicpCi0gICAgICAgIC50aGVuKCgpID0+IHsKLSAgICAgICAgICBhc3NlcnRfYXJyYXlf
ZXF1YWxzKHJzLmV2ZW50c1dpdGhvdXRQdWxscywgWydjYW5jZWwnLCBlcnJvcjFdKTsKLSAgICAg
ICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWyd3cml0ZScsICdIZWxsbyddKTsK
LSAgICAgICAgfSk7Ci0gICAgfSk7Ci0KLX0sICdFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJh
Y2t3YXJkOiBiZWNvbWVzIGVycm9yZWQgYmVmb3JlIHBpcGluZyBkdWUgdG8gd3JpdGU7IHByZXZl
bnRDYW5jZWwgb21pdHRlZDsgJyArCi0gICAnZnVsZmlsbGVkIGNhbmNlbCBwcm9taXNlJyk7Ci0K
LXByb21pc2VfdGVzdCh0ID0+IHsKLQotICBjb25zdCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3Ry
ZWFtKHsKLSAgICBjYW5jZWwoKSB7Ci0gICAgICB0aHJvdyBlcnJvcjI7Ci0gICAgfQotICB9KTsK
LQotICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKHsKLSAgICB3cml0ZSgpIHsK
LSAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcjEpOwotICAgIH0KLSAgfSk7Ci0KLSAg
Y29uc3Qgd3JpdGVyID0gd3MuZ2V0V3JpdGVyKCk7Ci0KLSAgcmV0dXJuIHByb21pc2VfcmVqZWN0
cyh0LCBlcnJvcjEsIHdyaXRlci53cml0ZSgnSGVsbG8nKSwgJ3dyaXRlci53cml0ZSgpIG11c3Qg
cmVqZWN0IHdpdGggdGhlIHdyaXRlIGVycm9yJykKLSAgICAudGhlbigoKSA9PiBwcm9taXNlX3Jl
amVjdHModCwgZXJyb3IxLCB3cml0ZXIuY2xvc2VkLCAnd3JpdGVyLmNsb3NlZCBtdXN0IHJlamVj
dCB3aXRoIHRoZSB3cml0ZSBlcnJvcicpKQotICAgIC50aGVuKCgpID0+IHsKLSAgICAgIHdyaXRl
ci5yZWxlYXNlTG9jaygpOwotCi0gICAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHQsIGVycm9y
MiwgcnMucGlwZVRvKHdzKSwgJ3BpcGVUbyBtdXN0IHJlamVjdCB3aXRoIHRoZSBjYW5jZWwgZXJy
b3InKQotICAgICAgICAudGhlbigoKSA9PiB7Ci0gICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFs
cyhycy5ldmVudHNXaXRob3V0UHVsbHMsIFsnY2FuY2VsJywgZXJyb3IxXSk7Ci0gICAgICAgICAg
YXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsnd3JpdGUnLCAnSGVsbG8nXSk7Ci0gICAg
ICAgIH0pOwotICAgIH0pOwotCi19LCAnRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2Fy
ZDogYmVjb21lcyBlcnJvcmVkIGJlZm9yZSBwaXBpbmcgZHVlIHRvIHdyaXRlOyBwcmV2ZW50Q2Fu
Y2VsIG9taXR0ZWQ7IHJlamVjdGVkICcgKwotICAgJ2NhbmNlbCBwcm9taXNlJyk7Ci0KLWZvciAo
Y29uc3QgZmFsc3kgb2YgW3VuZGVmaW5lZCwgbnVsbCwgZmFsc2UsICswLCAtMCwgTmFOLCAnJ10p
IHsKLSAgY29uc3Qgc3RyaW5nVmVyc2lvbiA9IE9iamVjdC5pcyhmYWxzeSwgLTApID8gJy0wJyA6
IFN0cmluZyhmYWxzeSk7Ci0KLSAgcHJvbWlzZV90ZXN0KHQgPT4gewotCi0gICAgY29uc3QgcnMg
PSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSgpOwotCi0gICAgY29uc3Qgd3MgPSByZWNvcmRpbmdX
cml0YWJsZVN0cmVhbSh7Ci0gICAgICB3cml0ZSgpIHsKLSAgICAgICAgcmV0dXJuIFByb21pc2Uu
cmVqZWN0KGVycm9yMSk7Ci0gICAgICB9Ci0gICAgfSk7Ci0KLSAgICBjb25zdCB3cml0ZXIgPSB3
cy5nZXRXcml0ZXIoKTsKLQotICAgIHJldHVybiBwcm9taXNlX3JlamVjdHModCwgZXJyb3IxLCB3
cml0ZXIud3JpdGUoJ0hlbGxvJyksICd3cml0ZXIud3JpdGUoKSBtdXN0IHJlamVjdCB3aXRoIHRo
ZSB3cml0ZSBlcnJvcicpCi0gICAgICAudGhlbigoKSA9PiBwcm9taXNlX3JlamVjdHModCwgZXJy
b3IxLCB3cml0ZXIuY2xvc2VkLCAnd3JpdGVyLmNsb3NlZCBtdXN0IHJlamVjdCB3aXRoIHRoZSB3
cml0ZSBlcnJvcicpKQotICAgICAgLnRoZW4oKCkgPT4gewotICAgICAgICB3cml0ZXIucmVsZWFz
ZUxvY2soKTsKLQotICAgICAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHQsIGVycm9yMSwgcnMu
cGlwZVRvKHdzLCB7IHByZXZlbnRDYW5jZWw6IGZhbHN5IH0pLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICdwaXBlVG8gbXVzdCByZWplY3Qgd2l0aCB0aGUgd3JpdGUgZXJyb3InKQot
ICAgICAgICAgIC50aGVuKCgpID0+IHsKLSAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMo
cnMuZXZlbnRzV2l0aG91dFB1bGxzLCBbJ2NhbmNlbCcsIGVycm9yMV0pOwotICAgICAgICAgICAg
YXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsnd3JpdGUnLCAnSGVsbG8nXSk7Ci0gICAg
ICAgICAgfSk7Ci0gICAgICB9KTsKLQotICB9LCBgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBi
YWNrd2FyZDogYmVjb21lcyBlcnJvcmVkIGJlZm9yZSBwaXBpbmcgZHVlIHRvIHdyaXRlOyBwcmV2
ZW50Q2FuY2VsID0gYCArCi0gICAgIGAke3N0cmluZ1ZlcnNpb259IChmYWxzeSk7IGZ1bGZpbGxl
ZCBjYW5jZWwgcHJvbWlzZWApOwotfQotCi1mb3IgKGNvbnN0IHRydXRoeSBvZiBbdHJ1ZSwgJ2En
LCAxLCBTeW1ib2woKSwgeyB9XSkgewotICBwcm9taXNlX3Rlc3QodCA9PiB7Ci0KLSAgICBjb25z
dCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKCk7Ci0KLSAgICBjb25zdCB3cyA9IHJlY29y
ZGluZ1dyaXRhYmxlU3RyZWFtKHsKLSAgICAgIHdyaXRlKCkgewotICAgICAgICByZXR1cm4gUHJv
bWlzZS5yZWplY3QoZXJyb3IxKTsKLSAgICAgIH0KLSAgICB9KTsKLQotICAgIGNvbnN0IHdyaXRl
ciA9IHdzLmdldFdyaXRlcigpOwotCi0gICAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0LCBlcnJv
cjEsIHdyaXRlci53cml0ZSgnSGVsbG8nKSwgJ3dyaXRlci53cml0ZSgpIG11c3QgcmVqZWN0IHdp
dGggdGhlIHdyaXRlIGVycm9yJykKLSAgICAgIC50aGVuKCgpID0+IHByb21pc2VfcmVqZWN0cyh0
LCBlcnJvcjEsIHdyaXRlci5jbG9zZWQsICd3cml0ZXIuY2xvc2VkIG11c3QgcmVqZWN0IHdpdGgg
dGhlIHdyaXRlIGVycm9yJykpCi0gICAgICAudGhlbigoKSA9PiB7Ci0gICAgICAgIHdyaXRlci5y
ZWxlYXNlTG9jaygpOwotCi0gICAgICAgIHJldHVybiBwcm9taXNlX3JlamVjdHModCwgZXJyb3Ix
LCBycy5waXBlVG8od3MsIHsgcHJldmVudENhbmNlbDogdHJ1dGh5IH0pLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICdwaXBlVG8gbXVzdCByZWplY3Qgd2l0aCB0aGUgd3JpdGUgZXJy
b3InKQotICAgICAgICAgIC50aGVuKCgpID0+IHsKLSAgICAgICAgICAgIGFzc2VydF9hcnJheV9l
cXVhbHMocnMuZXZlbnRzV2l0aG91dFB1bGxzLCBbXSk7Ci0gICAgICAgICAgICBhc3NlcnRfYXJy
YXlfZXF1YWxzKHdzLmV2ZW50cywgWyd3cml0ZScsICdIZWxsbyddKTsKLSAgICAgICAgICB9KTsK
LSAgICAgIH0pOwotCi0gIH0sIGBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBi
ZWNvbWVzIGVycm9yZWQgYmVmb3JlIHBpcGluZyBkdWUgdG8gd3JpdGU7IHByZXZlbnRDYW5jZWwg
PSBgICsKLSAgICAgYCR7U3RyaW5nKHRydXRoeSl9ICh0cnV0aHkpYCk7Ci19Ci0KLXByb21pc2Vf
dGVzdCh0ID0+IHsKLQotICBjb25zdCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKCk7Ci0K
LSAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSh7Ci0gICAgd3JpdGUoKSB7Ci0g
ICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyb3IxKTsKLSAgICB9Ci0gIH0pOwotCi0gIGNv
bnN0IHdyaXRlciA9IHdzLmdldFdyaXRlcigpOwotCi0gIHJldHVybiBwcm9taXNlX3JlamVjdHMo
dCwgZXJyb3IxLCB3cml0ZXIud3JpdGUoJ0hlbGxvJyksICd3cml0ZXIud3JpdGUoKSBtdXN0IHJl
amVjdCB3aXRoIHRoZSB3cml0ZSBlcnJvcicpCi0gICAgLnRoZW4oKCkgPT4gcHJvbWlzZV9yZWpl
Y3RzKHQsIGVycm9yMSwgd3JpdGVyLmNsb3NlZCwgJ3dyaXRlci5jbG9zZWQgbXVzdCByZWplY3Qg
d2l0aCB0aGUgd3JpdGUgZXJyb3InKSkKLSAgICAudGhlbigoKSA9PiB7Ci0gICAgICB3cml0ZXIu
cmVsZWFzZUxvY2soKTsKLQotICAgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0LCBlcnJvcjEs
IHJzLnBpcGVUbyh3cywgeyBwcmV2ZW50Q2FuY2VsOiB0cnVlLCBwcmV2ZW50QWJvcnQ6IHRydWUg
fSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwaXBlVG8gbXVzdCByZWplY3Qgd2l0
aCB0aGUgd3JpdGUgZXJyb3InKQotICAgICAgICAudGhlbigoKSA9PiB7Ci0gICAgICAgICAgYXNz
ZXJ0X2FycmF5X2VxdWFscyhycy5ldmVudHNXaXRob3V0UHVsbHMsIFtdKTsKLSAgICAgICAgICBh
c3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWyd3cml0ZScsICdIZWxsbyddKTsKLSAgICAg
ICAgfSk7Ci0gICAgfSk7Ci0KLX0sICdFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJk
OiBiZWNvbWVzIGVycm9yZWQgYmVmb3JlIHBpcGluZyBkdWUgdG8gd3JpdGUsIHByZXZlbnRDYW5j
ZWwgPSB0cnVlOyAnICsKLSAgICdwcmV2ZW50QWJvcnQgPSB0cnVlJyk7Ci0KLXByb21pc2VfdGVz
dCh0ID0+IHsKLQotICBjb25zdCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKCk7Ci0KLSAg
Y29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSh7Ci0gICAgd3JpdGUoKSB7Ci0gICAg
ICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyb3IxKTsKLSAgICB9Ci0gIH0pOwotCi0gIGNvbnN0
IHdyaXRlciA9IHdzLmdldFdyaXRlcigpOwotCi0gIHJldHVybiBwcm9taXNlX3JlamVjdHModCwg
ZXJyb3IxLCB3cml0ZXIud3JpdGUoJ0hlbGxvJyksICd3cml0ZXIud3JpdGUoKSBtdXN0IHJlamVj
dCB3aXRoIHRoZSB3cml0ZSBlcnJvcicpCi0gICAgLnRoZW4oKCkgPT4gcHJvbWlzZV9yZWplY3Rz
KHQsIGVycm9yMSwgd3JpdGVyLmNsb3NlZCwgJ3dyaXRlci5jbG9zZWQgbXVzdCByZWplY3Qgd2l0
aCB0aGUgd3JpdGUgZXJyb3InKSkKLSAgICAudGhlbigoKSA9PiB7Ci0gICAgICB3cml0ZXIucmVs
ZWFzZUxvY2soKTsKLQotICAgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0LCBlcnJvcjEsIHJz
LnBpcGVUbyh3cywgeyBwcmV2ZW50Q2FuY2VsOiB0cnVlLCBwcmV2ZW50QWJvcnQ6IHRydWUsIHBy
ZXZlbnRDbG9zZTogdHJ1ZSB9KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BpcGVU
byBtdXN0IHJlamVjdCB3aXRoIHRoZSB3cml0ZSBlcnJvcicpCi0gICAgICAgIC50aGVuKCgpID0+
IHsKLSAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJzLmV2ZW50c1dpdGhvdXRQdWxscywg
W10pOwotICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ3dyaXRlJywg
J0hlbGxvJ10pOwotICAgICAgICB9KTsKLSAgICB9KTsKLQotfSwgJ0Vycm9ycyBtdXN0IGJlIHBy
b3BhZ2F0ZWQgYmFja3dhcmQ6IGJlY29tZXMgZXJyb3JlZCBiZWZvcmUgcGlwaW5nIGR1ZSB0byB3
cml0ZTsgcHJldmVudENhbmNlbCA9IHRydWUsICcgKwotICAgJ3ByZXZlbnRBYm9ydCA9IHRydWUs
IHByZXZlbnRDbG9zZSA9IHRydWUnKTsKLQotcHJvbWlzZV90ZXN0KHQgPT4gewotCi0gIGNvbnN0
IHJzID0gcmVjb3JkaW5nUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGNvbnRyb2xsZXIpIHsK
LSAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnSGVsbG8nKTsKLSAgICB9Ci0gIH0pOwotCi0gIGNv
bnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0oewotICAgIHdyaXRlKCkgewotICAgICAg
dGhyb3cgZXJyb3IxOwotICAgIH0KLSAgfSk7Ci0KLSAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0
LCBlcnJvcjEsIHJzLnBpcGVUbyh3cyksICdwaXBlVG8gbXVzdCByZWplY3Qgd2l0aCB0aGUgc2Ft
ZSBlcnJvcicpLnRoZW4oKCkgPT4gewotICAgIGFzc2VydF9hcnJheV9lcXVhbHMocnMuZXZlbnRz
V2l0aG91dFB1bGxzLCBbJ2NhbmNlbCcsIGVycm9yMV0pOwotICAgIGFzc2VydF9hcnJheV9lcXVh
bHMod3MuZXZlbnRzLCBbJ3dyaXRlJywgJ0hlbGxvJ10pOwotICB9KTsKLQotfSwgJ0Vycm9ycyBt
dXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGJlY29tZXMgZXJyb3JlZCBkdXJpbmcgcGlwaW5n
IGR1ZSB0byB3cml0ZTsgcHJldmVudENhbmNlbCBvbWl0dGVkOyBmdWxmaWxsZWQgJyArCi0gICAn
Y2FuY2VsIHByb21pc2UnKTsKLQotcHJvbWlzZV90ZXN0KHQgPT4gewotCi0gIGNvbnN0IHJzID0g
cmVjb3JkaW5nUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGNvbnRyb2xsZXIpIHsKLSAgICAg
IGNvbnRyb2xsZXIuZW5xdWV1ZSgnSGVsbG8nKTsKLSAgICB9LAotICAgIGNhbmNlbCgpIHsKLSAg
ICAgIHRocm93IGVycm9yMjsKLSAgICB9Ci0gIH0pOwotCi0gIGNvbnN0IHdzID0gcmVjb3JkaW5n
V3JpdGFibGVTdHJlYW0oewotICAgIHdyaXRlKCkgewotICAgICAgdGhyb3cgZXJyb3IxOwotICAg
IH0KLSAgfSk7Ci0KLSAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0LCBlcnJvcjIsIHJzLnBpcGVU
byh3cyksICdwaXBlVG8gbXVzdCByZWplY3Qgd2l0aCB0aGUgY2FuY2VsIGVycm9yJykudGhlbigo
KSA9PiB7Ci0gICAgYXNzZXJ0X2FycmF5X2VxdWFscyhycy5ldmVudHNXaXRob3V0UHVsbHMsIFsn
Y2FuY2VsJywgZXJyb3IxXSk7Ci0gICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsn
d3JpdGUnLCAnSGVsbG8nXSk7Ci0gIH0pOwotCi19LCAnRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRl
ZCBiYWNrd2FyZDogYmVjb21lcyBlcnJvcmVkIGR1cmluZyBwaXBpbmcgZHVlIHRvIHdyaXRlOyBw
cmV2ZW50Q2FuY2VsIG9taXR0ZWQ7IHJlamVjdGVkICcgKwotICAgJ2NhbmNlbCBwcm9taXNlJyk7
Ci0KLXByb21pc2VfdGVzdCh0ID0+IHsKLQotICBjb25zdCBycyA9IHJlY29yZGluZ1JlYWRhYmxl
U3RyZWFtKHsKLSAgICBzdGFydChjb250cm9sbGVyKSB7Ci0gICAgICBjb250cm9sbGVyLmVucXVl
dWUoJ0hlbGxvJyk7Ci0gICAgfQotICB9KTsKLQotICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRh
YmxlU3RyZWFtKHsKLSAgICB3cml0ZSgpIHsKLSAgICAgIHRocm93IGVycm9yMTsKLSAgICB9Ci0g
IH0pOwotCi0gIHJldHVybiBwcm9taXNlX3JlamVjdHModCwgZXJyb3IxLCBycy5waXBlVG8od3Ms
IHsgcHJldmVudENhbmNlbDogdHJ1ZSB9KSwgJ3BpcGVUbyBtdXN0IHJlamVjdCB3aXRoIHRoZSBz
YW1lIGVycm9yJykKLSAgLnRoZW4oKCkgPT4gewotICAgIGFzc2VydF9hcnJheV9lcXVhbHMocnMu
ZXZlbnRzV2l0aG91dFB1bGxzLCBbXSk7Ci0gICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVu
dHMsIFsnd3JpdGUnLCAnSGVsbG8nXSk7Ci0gIH0pOwotCi19LCAnRXJyb3JzIG11c3QgYmUgcHJv
cGFnYXRlZCBiYWNrd2FyZDogYmVjb21lcyBlcnJvcmVkIGR1cmluZyBwaXBpbmcgZHVlIHRvIHdy
aXRlOyBwcmV2ZW50Q2FuY2VsID0gdHJ1ZScpOwotCi1wcm9taXNlX3Rlc3QodCA9PiB7Ci0KLSAg
Y29uc3QgcnMgPSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoY29udHJvbGxl
cikgewotICAgICAgY29udHJvbGxlci5lbnF1ZXVlKCdhJyk7Ci0gICAgICBjb250cm9sbGVyLmVu
cXVldWUoJ2InKTsKLSAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYycpOwotICAgIH0KLSAgfSk7
Ci0KLSAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSh7Ci0gICAgd3JpdGUoKSB7
Ci0gICAgICBpZiAod3MuZXZlbnRzLmxlbmd0aCA+IDIpIHsKLSAgICAgICAgcmV0dXJuIGRlbGF5
KDApLnRoZW4oKCkgPT4gewotICAgICAgICAgIHRocm93IGVycm9yMTsKLSAgICAgICAgfSk7Ci0g
ICAgICB9Ci0gICAgICByZXR1cm4gdW5kZWZpbmVkOwotICAgIH0KLSAgfSk7Ci0KLSAgcmV0dXJu
IHByb21pc2VfcmVqZWN0cyh0LCBlcnJvcjEsIHJzLnBpcGVUbyh3cyksICdwaXBlVG8gbXVzdCBy
ZWplY3Qgd2l0aCB0aGUgc2FtZSBlcnJvcicpLnRoZW4oKCkgPT4gewotICAgIGFzc2VydF9hcnJh
eV9lcXVhbHMocnMuZXZlbnRzV2l0aG91dFB1bGxzLCBbJ2NhbmNlbCcsIGVycm9yMV0pOwotICAg
IGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ3dyaXRlJywgJ2EnLCAnd3JpdGUnLCAn
YiddKTsKLSAgfSk7Ci0KLX0sICdFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBi
ZWNvbWVzIGVycm9yZWQgZHVyaW5nIHBpcGluZyBkdWUgdG8gd3JpdGUsIGJ1dCBhc3luYzsgcHJl
dmVudENhbmNlbCA9ICcgKwotICAgJ2ZhbHNlOyBmdWxmaWxsZWQgY2FuY2VsIHByb21pc2UnKTsK
LQotcHJvbWlzZV90ZXN0KHQgPT4gewotCi0gIGNvbnN0IHJzID0gcmVjb3JkaW5nUmVhZGFibGVT
dHJlYW0oewotICAgIHN0YXJ0KGNvbnRyb2xsZXIpIHsKLSAgICAgIGNvbnRyb2xsZXIuZW5xdWV1
ZSgnYScpOwotICAgICAgY29udHJvbGxlci5lbnF1ZXVlKCdiJyk7Ci0gICAgICBjb250cm9sbGVy
LmVucXVldWUoJ2MnKTsKLSAgICB9LAotICAgIGNhbmNlbCgpIHsKLSAgICAgIHRocm93IGVycm9y
MjsKLSAgICB9Ci0gIH0pOwotCi0gIGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0o
ewotICAgIHdyaXRlKCkgewotICAgICAgaWYgKHdzLmV2ZW50cy5sZW5ndGggPiAyKSB7Ci0gICAg
ICAgIHJldHVybiBkZWxheSgwKS50aGVuKCgpID0+IHsKLSAgICAgICAgICB0aHJvdyBlcnJvcjE7
Ci0gICAgICAgIH0pOwotICAgICAgfQotICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKLSAgICB9Ci0g
IH0pOwotCi0gIHJldHVybiBwcm9taXNlX3JlamVjdHModCwgZXJyb3IyLCBycy5waXBlVG8od3Mp
LCAncGlwZVRvIG11c3QgcmVqZWN0IHdpdGggdGhlIGNhbmNlbCBlcnJvcicpLnRoZW4oKCkgPT4g
ewotICAgIGFzc2VydF9hcnJheV9lcXVhbHMocnMuZXZlbnRzV2l0aG91dFB1bGxzLCBbJ2NhbmNl
bCcsIGVycm9yMV0pOwotICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ3dyaXRl
JywgJ2EnLCAnd3JpdGUnLCAnYiddKTsKLSAgfSk7Ci0KLX0sICdFcnJvcnMgbXVzdCBiZSBwcm9w
YWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVycm9yZWQgZHVyaW5nIHBpcGluZyBkdWUgdG8gd3Jp
dGUsIGJ1dCBhc3luYzsgcHJldmVudENhbmNlbCA9ICcgKwotICAgJ2ZhbHNlOyByZWplY3RlZCBj
YW5jZWwgcHJvbWlzZScpOwotCi1wcm9taXNlX3Rlc3QodCA9PiB7Ci0KLSAgY29uc3QgcnMgPSBy
ZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoY29udHJvbGxlcikgewotICAgICAg
Y29udHJvbGxlci5lbnF1ZXVlKCdhJyk7Ci0gICAgICBjb250cm9sbGVyLmVucXVldWUoJ2InKTsK
LSAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYycpOwotICAgIH0KLSAgfSk7Ci0KLSAgY29uc3Qg
d3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSh7Ci0gICAgd3JpdGUoKSB7Ci0gICAgICBpZiAo
d3MuZXZlbnRzLmxlbmd0aCA+IDIpIHsKLSAgICAgICAgcmV0dXJuIGRlbGF5KDApLnRoZW4oKCkg
PT4gewotICAgICAgICAgIHRocm93IGVycm9yMTsKLSAgICAgICAgfSk7Ci0gICAgICB9Ci0gICAg
ICByZXR1cm4gdW5kZWZpbmVkOwotICAgIH0KLSAgfSk7Ci0KLSAgcmV0dXJuIHByb21pc2VfcmVq
ZWN0cyh0LCBlcnJvcjEsIHJzLnBpcGVUbyh3cywgeyBwcmV2ZW50Q2FuY2VsOiB0cnVlIH0pLCAn
cGlwZVRvIG11c3QgcmVqZWN0IHdpdGggdGhlIHNhbWUgZXJyb3InKQotICAudGhlbigoKSA9PiB7
Ci0gICAgYXNzZXJ0X2FycmF5X2VxdWFscyhycy5ldmVudHNXaXRob3V0UHVsbHMsIFtdKTsKLSAg
ICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWyd3cml0ZScsICdhJywgJ3dyaXRlJywg
J2InXSk7Ci0gIH0pOwotCi19LCAnRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDog
YmVjb21lcyBlcnJvcmVkIGR1cmluZyBwaXBpbmcgZHVlIHRvIHdyaXRlLCBidXQgYXN5bmM7IHBy
ZXZlbnRDYW5jZWwgPSB0cnVlJyk7Ci0KLXByb21pc2VfdGVzdCh0ID0+IHsKLQotICBjb25zdCBy
cyA9IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKCk7Ci0KLSAgY29uc3Qgd3MgPSByZWNvcmRpbmdX
cml0YWJsZVN0cmVhbSgpOwotCi0gIGNvbnN0IHBpcGVQcm9taXNlID0gcHJvbWlzZV9yZWplY3Rz
KHQsIGVycm9yMSwgcnMucGlwZVRvKHdzKSwgJ3BpcGVUbyBtdXN0IHJlamVjdCB3aXRoIHRoZSBz
YW1lIGVycm9yJyk7Ci0KLSAgc2V0VGltZW91dCgoKSA9PiB3cy5jb250cm9sbGVyLmVycm9yKGVy
cm9yMSksIDEwKTsKLQotICByZXR1cm4gcGlwZVByb21pc2UudGhlbigoKSA9PiB7Ci0gICAgYXNz
ZXJ0X2FycmF5X2VxdWFscyhycy5ldmVudHNXaXRob3V0UHVsbHMsIFsnY2FuY2VsJywgZXJyb3Ix
XSk7Ci0gICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFtdKTsKLSAgfSk7Ci0KLX0s
ICdFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVycm9yZWQgYWZ0
ZXIgcGlwaW5nOyBwcmV2ZW50Q2FuY2VsIG9taXR0ZWQ7IGZ1bGZpbGxlZCBjYW5jZWwgcHJvbWlz
ZScpOwotCi1wcm9taXNlX3Rlc3QodCA9PiB7Ci0KLSAgY29uc3QgcnMgPSByZWNvcmRpbmdSZWFk
YWJsZVN0cmVhbSh7Ci0gICAgY2FuY2VsKCkgewotICAgICAgdGhyb3cgZXJyb3IyOwotICAgIH0K
LSAgfSk7Ci0KLSAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSgpOwotCi0gIGNv
bnN0IHBpcGVQcm9taXNlID0gcHJvbWlzZV9yZWplY3RzKHQsIGVycm9yMiwgcnMucGlwZVRvKHdz
KSwgJ3BpcGVUbyBtdXN0IHJlamVjdCB3aXRoIHRoZSBjYW5jZWwgZXJyb3InKTsKLQotICBzZXRU
aW1lb3V0KCgpID0+IHdzLmNvbnRyb2xsZXIuZXJyb3IoZXJyb3IxKSwgMTApOwotCi0gIHJldHVy
biBwaXBlUHJvbWlzZS50aGVuKCgpID0+IHsKLSAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJzLmV2
ZW50c1dpdGhvdXRQdWxscywgWydjYW5jZWwnLCBlcnJvcjFdKTsKLSAgICBhc3NlcnRfYXJyYXlf
ZXF1YWxzKHdzLmV2ZW50cywgW10pOwotICB9KTsKLQotfSwgJ0Vycm9ycyBtdXN0IGJlIHByb3Bh
Z2F0ZWQgYmFja3dhcmQ6IGJlY29tZXMgZXJyb3JlZCBhZnRlciBwaXBpbmc7IHByZXZlbnRDYW5j
ZWwgb21pdHRlZDsgcmVqZWN0ZWQgY2FuY2VsIHByb21pc2UnKTsKLQotcHJvbWlzZV90ZXN0KHQg
PT4gewotCi0gIGNvbnN0IHJzID0gcmVjb3JkaW5nUmVhZGFibGVTdHJlYW0oKTsKLQotICBjb25z
dCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKCk7Ci0KLSAgY29uc3QgcGlwZVByb21pc2Ug
PSBwcm9taXNlX3JlamVjdHModCwgZXJyb3IxLCBycy5waXBlVG8od3MsIHsgcHJldmVudENhbmNl
bDogdHJ1ZSB9KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BpcGVU
byBtdXN0IHJlamVjdCB3aXRoIHRoZSBzYW1lIGVycm9yJyk7Ci0KLSAgc2V0VGltZW91dCgoKSA9
PiB3cy5jb250cm9sbGVyLmVycm9yKGVycm9yMSksIDEwKTsKLQotICByZXR1cm4gcGlwZVByb21p
c2UudGhlbigoKSA9PiB7Ci0gICAgYXNzZXJ0X2FycmF5X2VxdWFscyhycy5ldmVudHNXaXRob3V0
UHVsbHMsIFtdKTsKLSAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgW10pOwotICB9
KTsKLQotfSwgJ0Vycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGJlY29tZXMgZXJy
b3JlZCBhZnRlciBwaXBpbmc7IHByZXZlbnRDYW5jZWwgPSB0cnVlJyk7Ci0KLXByb21pc2VfdGVz
dCh0ID0+IHsKLQotICBjb25zdCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKHsKLSAgICBz
dGFydChjb250cm9sbGVyKSB7Ci0gICAgICBjb250cm9sbGVyLmVucXVldWUoJ2EnKTsKLSAgICAg
IGNvbnRyb2xsZXIuZW5xdWV1ZSgnYicpOwotICAgICAgY29udHJvbGxlci5lbnF1ZXVlKCdjJyk7
Ci0gICAgICBjb250cm9sbGVyLmNsb3NlKCk7Ci0gICAgfQotICB9KTsKLQotICBjb25zdCB3cyA9
IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKHsKLSAgICB3cml0ZShjaHVuaykgewotICAgICAgaWYg
KGNodW5rID09PSAnYycpIHsKLSAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yMSk7
Ci0gICAgICB9Ci0gICAgICByZXR1cm4gdW5kZWZpbmVkOwotICAgIH0KLSAgfSk7Ci0KLSAgcmV0
dXJuIHByb21pc2VfcmVqZWN0cyh0LCBlcnJvcjEsIHJzLnBpcGVUbyh3cyksICdwaXBlVG8gbXVz
dCByZWplY3Qgd2l0aCB0aGUgc2FtZSBlcnJvcicpLnRoZW4oKCkgPT4gewotICAgIGFzc2VydF9h
cnJheV9lcXVhbHMocnMuZXZlbnRzV2l0aG91dFB1bGxzLCBbXSk7Ci0gICAgYXNzZXJ0X2FycmF5
X2VxdWFscyh3cy5ldmVudHMsIFsnd3JpdGUnLCAnYScsICd3cml0ZScsICdiJywgJ3dyaXRlJywg
J2MnXSk7Ci0gIH0pOwotCi19LCAnRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDog
YmVjb21lcyBlcnJvcmVkIGFmdGVyIHBpcGluZyBkdWUgdG8gbGFzdCB3cml0ZTsgc291cmNlIGlz
IGNsb3NlZDsgJyArCi0gICAncHJldmVudENhbmNlbCBvbWl0dGVkIChidXQgY2FuY2VsIGlzIG5l
dmVyIGNhbGxlZCknKTsKLQotcHJvbWlzZV90ZXN0KHQgPT4gewotCi0gIGNvbnN0IHJzID0gcmVj
b3JkaW5nUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGNvbnRyb2xsZXIpIHsKLSAgICAgIGNv
bnRyb2xsZXIuZW5xdWV1ZSgnYScpOwotICAgICAgY29udHJvbGxlci5lbnF1ZXVlKCdiJyk7Ci0g
ICAgICBjb250cm9sbGVyLmVucXVldWUoJ2MnKTsKLSAgICAgIGNvbnRyb2xsZXIuY2xvc2UoKTsK
LSAgICB9Ci0gIH0pOwotCi0gIGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0oewot
ICAgIHdyaXRlKGNodW5rKSB7Ci0gICAgICBpZiAoY2h1bmsgPT09ICdjJykgewotICAgICAgICBy
ZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyb3IxKTsKLSAgICAgIH0KLSAgICAgIHJldHVybiB1bmRl
ZmluZWQ7Ci0gICAgfQotICB9KTsKLQotICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHQsIGVycm9y
MSwgcnMucGlwZVRvKHdzLCB7IHByZXZlbnRDYW5jZWw6IHRydWUgfSksICdwaXBlVG8gbXVzdCBy
ZWplY3Qgd2l0aCB0aGUgc2FtZSBlcnJvcicpCi0gICAgLnRoZW4oKCkgPT4gewotICAgICAgYXNz
ZXJ0X2FycmF5X2VxdWFscyhycy5ldmVudHNXaXRob3V0UHVsbHMsIFtdKTsKLSAgICAgIGFzc2Vy
dF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ3dyaXRlJywgJ2EnLCAnd3JpdGUnLCAnYicsICd3
cml0ZScsICdjJ10pOwotICAgIH0pOwotCi19LCAnRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBi
YWNrd2FyZDogYmVjb21lcyBlcnJvcmVkIGFmdGVyIHBpcGluZyBkdWUgdG8gbGFzdCB3cml0ZTsg
c291cmNlIGlzIGNsb3NlZDsgJyArCi0gICAncHJldmVudENhbmNlbCA9IHRydWUnKTsKLQotcHJv
bWlzZV90ZXN0KHQgPT4gewotCi0gIGNvbnN0IHJzID0gcmVjb3JkaW5nUmVhZGFibGVTdHJlYW0o
KTsKLQotICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKHVuZGVmaW5lZCwgbmV3
IENvdW50UXVldWluZ1N0cmF0ZWd5KHsgaGlnaFdhdGVyTWFyazogMCB9KSk7Ci0KLSAgY29uc3Qg
cGlwZVByb21pc2UgPSBwcm9taXNlX3JlamVjdHModCwgZXJyb3IxLCBycy5waXBlVG8od3MpLCAn
cGlwZVRvIG11c3QgcmVqZWN0IHdpdGggdGhlIHNhbWUgZXJyb3InKTsKLQotICBzZXRUaW1lb3V0
KCgpID0+IHdzLmNvbnRyb2xsZXIuZXJyb3IoZXJyb3IxKSwgMTApOwotCi0gIHJldHVybiBwaXBl
UHJvbWlzZS50aGVuKCgpID0+IHsKLSAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJzLmV2ZW50c1dp
dGhvdXRQdWxscywgWydjYW5jZWwnLCBlcnJvcjFdKTsKLSAgICBhc3NlcnRfYXJyYXlfZXF1YWxz
KHdzLmV2ZW50cywgW10pOwotICB9KTsKLQotfSwgJ0Vycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQg
YmFja3dhcmQ6IGJlY29tZXMgZXJyb3JlZCBhZnRlciBwaXBpbmc7IGRlc3QgbmV2ZXIgZGVzaXJl
cyBjaHVua3M7IHByZXZlbnRDYW5jZWwgPSAnICsKLSAgICdmYWxzZTsgZnVsZmlsbGVkIGNhbmNl
bCBwcm9taXNlJyk7Ci0KLXByb21pc2VfdGVzdCh0ID0+IHsKLQotICBjb25zdCBycyA9IHJlY29y
ZGluZ1JlYWRhYmxlU3RyZWFtKHsKLSAgICBjYW5jZWwoKSB7Ci0gICAgICB0aHJvdyBlcnJvcjI7
Ci0gICAgfQotICB9KTsKLQotICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKHVu
ZGVmaW5lZCwgbmV3IENvdW50UXVldWluZ1N0cmF0ZWd5KHsgaGlnaFdhdGVyTWFyazogMCB9KSk7
Ci0KLSAgY29uc3QgcGlwZVByb21pc2UgPSBwcm9taXNlX3JlamVjdHModCwgZXJyb3IyLCBycy5w
aXBlVG8od3MpLCAncGlwZVRvIG11c3QgcmVqZWN0IHdpdGggdGhlIGNhbmNlbCBlcnJvcicpOwot
Ci0gIHNldFRpbWVvdXQoKCkgPT4gd3MuY29udHJvbGxlci5lcnJvcihlcnJvcjEpLCAxMCk7Ci0K
LSAgcmV0dXJuIHBpcGVQcm9taXNlLnRoZW4oKCkgPT4gewotICAgIGFzc2VydF9hcnJheV9lcXVh
bHMocnMuZXZlbnRzV2l0aG91dFB1bGxzLCBbJ2NhbmNlbCcsIGVycm9yMV0pOwotICAgIGFzc2Vy
dF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbXSk7Ci0gIH0pOwotCi19LCAnRXJyb3JzIG11c3Qg
YmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogYmVjb21lcyBlcnJvcmVkIGFmdGVyIHBpcGluZzsgZGVz
dCBuZXZlciBkZXNpcmVzIGNodW5rczsgcHJldmVudENhbmNlbCA9ICcgKwotICAgJ2ZhbHNlOyBy
ZWplY3RlZCBjYW5jZWwgcHJvbWlzZScpOwotCi1wcm9taXNlX3Rlc3QodCA9PiB7Ci0KLSAgY29u
c3QgcnMgPSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSgpOwotCi0gIGNvbnN0IHdzID0gcmVjb3Jk
aW5nV3JpdGFibGVTdHJlYW0odW5kZWZpbmVkLCBuZXcgQ291bnRRdWV1aW5nU3RyYXRlZ3koeyBo
aWdoV2F0ZXJNYXJrOiAwIH0pKTsKLQotICBjb25zdCBwaXBlUHJvbWlzZSA9IHByb21pc2VfcmVq
ZWN0cyh0LCBlcnJvcjEsIHJzLnBpcGVUbyh3cywgeyBwcmV2ZW50Q2FuY2VsOiB0cnVlIH0pLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGlwZVRvIG11c3QgcmVqZWN0
IHdpdGggdGhlIHNhbWUgZXJyb3InKTsKLQotICBzZXRUaW1lb3V0KCgpID0+IHdzLmNvbnRyb2xs
ZXIuZXJyb3IoZXJyb3IxKSwgMTApOwotCi0gIHJldHVybiBwaXBlUHJvbWlzZS50aGVuKCgpID0+
IHsKLSAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJzLmV2ZW50c1dpdGhvdXRQdWxscywgW10pOwot
ICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbXSk7Ci0gIH0pOwotCi19LCAnRXJy
b3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogYmVjb21lcyBlcnJvcmVkIGFmdGVyIHBp
cGluZzsgZGVzdCBuZXZlciBkZXNpcmVzIGNodW5rczsgcHJldmVudENhbmNlbCA9ICcgKwotICAg
J3RydWUnKTsKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLQotICBjb25zdCBycyA9IHJlY29yZGlu
Z1JlYWRhYmxlU3RyZWFtKCk7Ci0KLSAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVh
bSgpOwotCi0gIHdzLmFib3J0KGVycm9yMSk7Ci0KLSAgcmV0dXJuIHJzLnBpcGVUbyh3cykudGhl
bigKLSAgICAoKSA9PiBhc3NlcnRfdW5yZWFjaGVkKCd0aGUgcHJvbWlzZSBtdXN0IG5vdCBmdWxm
aWxsJyksCi0gICAgZXJyID0+IHsKLSAgICAgIGFzc2VydF9lcXVhbHMoZXJyLCBlcnJvcjEsICd0
aGUgcHJvbWlzZSBtdXN0IHJlamVjdCB3aXRoIGVycm9yMScpOwotCi0gICAgICBhc3NlcnRfYXJy
YXlfZXF1YWxzKHJzLmV2ZW50c1dpdGhvdXRQdWxscywgWydjYW5jZWwnLCBlcnJdKTsKLSAgICAg
IGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ2Fib3J0JywgZXJyb3IxXSk7Ci0gICAg
fQotICApOwotCi19LCAnRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogYmVjb21l
cyBlcnJvcmVkIGJlZm9yZSBwaXBpbmcgdmlhIGFib3J0OyBwcmV2ZW50Q2FuY2VsIG9taXR0ZWQ7
IGZ1bGZpbGxlZCAnICsKLSAgICdjYW5jZWwgcHJvbWlzZScpOwotCi1wcm9taXNlX3Rlc3QodCA9
PiB7Ci0KLSAgY29uc3QgcnMgPSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSh7Ci0gICAgY2FuY2Vs
KCkgewotICAgICAgdGhyb3cgZXJyb3IyOwotICAgIH0KLSAgfSk7Ci0KLSAgY29uc3Qgd3MgPSBy
ZWNvcmRpbmdXcml0YWJsZVN0cmVhbSgpOwotCi0gIHdzLmFib3J0KGVycm9yMSk7Ci0KLSAgcmV0
dXJuIHByb21pc2VfcmVqZWN0cyh0LCBlcnJvcjIsIHJzLnBpcGVUbyh3cyksICdwaXBlVG8gbXVz
dCByZWplY3Qgd2l0aCB0aGUgY2FuY2VsIGVycm9yJykKLSAgICAudGhlbigoKSA9PiB7Ci0gICAg
ICByZXR1cm4gd3MuZ2V0V3JpdGVyKCkuY2xvc2VkLnRoZW4oCi0gICAgICAgICgpID0+IGFzc2Vy
dF91bnJlYWNoZWQoJ3RoZSBwcm9taXNlIG11c3Qgbm90IGZ1bGZpbGwnKSwKLSAgICAgICAgZXJy
ID0+IHsKLSAgICAgICAgICBhc3NlcnRfZXF1YWxzKGVyciwgZXJyb3IxLCAndGhlIHByb21pc2Ug
bXVzdCByZWplY3Qgd2l0aCBlcnJvcjEnKTsKLQotICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVh
bHMocnMuZXZlbnRzV2l0aG91dFB1bGxzLCBbJ2NhbmNlbCcsIGVycl0pOwotICAgICAgICAgIGFz
c2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ2Fib3J0JywgZXJyb3IxXSk7Ci0gICAgICAg
IH0KLSAgICAgICk7Ci0gICAgfSk7Ci0KLX0sICdFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJh
Y2t3YXJkOiBiZWNvbWVzIGVycm9yZWQgYmVmb3JlIHBpcGluZyB2aWEgYWJvcnQ7IHByZXZlbnRD
YW5jZWwgb21pdHRlZDsgcmVqZWN0ZWQgJyArCi0gICAnY2FuY2VsIHByb21pc2UnKTsKLQotcHJv
bWlzZV90ZXN0KHQgPT4gewotCi0gIGNvbnN0IHJzID0gcmVjb3JkaW5nUmVhZGFibGVTdHJlYW0o
KTsKLQotICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKCk7Ci0KLSAgd3MuYWJv
cnQoZXJyb3IxKTsKLQotICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHQsIGVycm9yMSwgcnMucGlw
ZVRvKHdzLCB7IHByZXZlbnRDYW5jZWw6IHRydWUgfSkpLnRoZW4oKCkgPT4gewotICAgIGFzc2Vy
dF9hcnJheV9lcXVhbHMocnMuZXZlbnRzV2l0aG91dFB1bGxzLCBbXSk7Ci0gICAgYXNzZXJ0X2Fy
cmF5X2VxdWFscyh3cy5ldmVudHMsIFsnYWJvcnQnLCBlcnJvcjFdKTsKLSAgfSk7Ci0KLX0sICdF
cnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVycm9yZWQgYmVmb3Jl
IHBpcGluZyB2aWEgYWJvcnQ7IHByZXZlbnRDYW5jZWwgPSB0cnVlJyk7Ci0KLXByb21pc2VfdGVz
dCh0ID0+IHsKLQotICBjb25zdCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKCk7Ci0KLSAg
bGV0IHJlc29sdmVXcml0ZUNhbGxlZDsKLSAgY29uc3Qgd3JpdGVDYWxsZWRQcm9taXNlID0gbmV3
IFByb21pc2UocmVzb2x2ZSA9PiB7Ci0gICAgcmVzb2x2ZVdyaXRlQ2FsbGVkID0gcmVzb2x2ZTsK
LSAgfSk7Ci0KLSAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSh7Ci0gICAgd3Jp
dGUoKSB7Ci0gICAgICByZXNvbHZlV3JpdGVDYWxsZWQoKTsKLSAgICAgIHJldHVybiBmbHVzaEFz
eW5jRXZlbnRzKCk7Ci0gICAgfQotICB9KTsKLQotICBjb25zdCBwaXBlUHJvbWlzZSA9IHJzLnBp
cGVUbyh3cyk7Ci0KLSAgcnMuY29udHJvbGxlci5lbnF1ZXVlKCdhJyk7Ci0KLSAgcmV0dXJuIHdy
aXRlQ2FsbGVkUHJvbWlzZS50aGVuKCgpID0+IHsKLSAgICB3cy5jb250cm9sbGVyLmVycm9yKGVy
cm9yMSk7Ci0KLSAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHQsIGVycm9yMSwgcGlwZVByb21p
c2UpOwotICB9KS50aGVuKCgpID0+IHsKLSAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJzLmV2ZW50
c1dpdGhvdXRQdWxscywgWydjYW5jZWwnLCBlcnJvcjFdKTsKLSAgICBhc3NlcnRfYXJyYXlfZXF1
YWxzKHdzLmV2ZW50cywgWyd3cml0ZScsICdhJ10pOwotICB9KTsKLQotfSwgJ0Vycm9ycyBtdXN0
IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGVycm9yaW5nIHZpYSB0aGUgY29udHJvbGxlciBlcnJv
cnMgb25jZSBwZW5kaW5nIHdyaXRlIGNvbXBsZXRlcycpOwotCi1kb25lKCk7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlw
aW5nL2Vycm9yLXByb3BhZ2F0aW9uLWJhY2t3YXJkLnNlcnZpY2V3b3JrZXIuaHR0cHMtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJl
YW1zL3BpcGluZy9lcnJvci1wcm9wYWdhdGlvbi1iYWNrd2FyZC5zZXJ2aWNld29ya2VyLmh0dHBz
LWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjQ5OThhMGZkN2Ew
YWVkYjAzNDcwMmI4NTkyNDU3MmIxZmVhZGFlZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Vycm9yLXByb3BhZ2F0aW9uLWJhY2t3YXJkLnNlcnZpY2V3
b3JrZXIuaHR0cHMtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAot
Ci1QQVNTIFNlcnZpY2Ugd29ya2VyIHRlc3Qgc2V0dXAgCi1GQUlMIEVycm9ycyBtdXN0IGJlIHBy
b3BhZ2F0ZWQgYmFja3dhcmQ6IHN0YXJ0cyBlcnJvcmVkOyBwcmV2ZW50Q2FuY2VsIG9taXR0ZWQ7
IGZ1bGZpbGxlZCBjYW5jZWwgcHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0
cmVhbQotRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVy
cm9yZWQgYmVmb3JlIHBpcGluZyBkdWUgdG8gd3JpdGU7IHByZXZlbnRDYW5jZWwgb21pdHRlZDsg
ZnVsZmlsbGVkIGNhbmNlbCBwcm9taXNlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3Ry
ZWFtCi1GQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGJlY29tZXMgZXJy
b3JlZCBiZWZvcmUgcGlwaW5nIGR1ZSB0byB3cml0ZTsgcHJldmVudENhbmNlbCBvbWl0dGVkOyBy
ZWplY3RlZCBjYW5jZWwgcHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVh
bQotRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVycm9y
ZWQgYmVmb3JlIHBpcGluZyBkdWUgdG8gd3JpdGU7IHByZXZlbnRDYW5jZWwgPSB1bmRlZmluZWQg
KGZhbHN5KTsgZnVsZmlsbGVkIGNhbmNlbCBwcm9taXNlIENhbid0IGZpbmQgdmFyaWFibGU6IFdy
aXRhYmxlU3RyZWFtCi1GQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGJl
Y29tZXMgZXJyb3JlZCBiZWZvcmUgcGlwaW5nIGR1ZSB0byB3cml0ZTsgcHJldmVudENhbmNlbCA9
IG51bGwgKGZhbHN5KTsgZnVsZmlsbGVkIGNhbmNlbCBwcm9taXNlIENhbid0IGZpbmQgdmFyaWFi
bGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dh
cmQ6IGJlY29tZXMgZXJyb3JlZCBiZWZvcmUgcGlwaW5nIGR1ZSB0byB3cml0ZTsgcHJldmVudENh
bmNlbCA9IGZhbHNlIChmYWxzeSk7IGZ1bGZpbGxlZCBjYW5jZWwgcHJvbWlzZSBDYW4ndCBmaW5k
IHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVk
IGJhY2t3YXJkOiBiZWNvbWVzIGVycm9yZWQgYmVmb3JlIHBpcGluZyBkdWUgdG8gd3JpdGU7IHBy
ZXZlbnRDYW5jZWwgPSAwIChmYWxzeSk7IGZ1bGZpbGxlZCBjYW5jZWwgcHJvbWlzZSBDYW4ndCBm
aW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdh
dGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVycm9yZWQgYmVmb3JlIHBpcGluZyBkdWUgdG8gd3JpdGU7
IHByZXZlbnRDYW5jZWwgPSAtMCAoZmFsc3kpOyBmdWxmaWxsZWQgY2FuY2VsIHByb21pc2UgQ2Fu
J3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgRXJyb3JzIG11c3QgYmUgcHJv
cGFnYXRlZCBiYWNrd2FyZDogYmVjb21lcyBlcnJvcmVkIGJlZm9yZSBwaXBpbmcgZHVlIHRvIHdy
aXRlOyBwcmV2ZW50Q2FuY2VsID0gTmFOIChmYWxzeSk7IGZ1bGZpbGxlZCBjYW5jZWwgcHJvbWlz
ZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBFcnJvcnMgbXVzdCBi
ZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVycm9yZWQgYmVmb3JlIHBpcGluZyBkdWUg
dG8gd3JpdGU7IHByZXZlbnRDYW5jZWwgPSAgKGZhbHN5KTsgZnVsZmlsbGVkIGNhbmNlbCBwcm9t
aXNlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIEVycm9ycyBtdXN0
IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGJlY29tZXMgZXJyb3JlZCBiZWZvcmUgcGlwaW5nIGR1
ZSB0byB3cml0ZTsgcHJldmVudENhbmNlbCA9IHRydWUgKHRydXRoeSkgQ2FuJ3QgZmluZCB2YXJp
YWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNr
d2FyZDogYmVjb21lcyBlcnJvcmVkIGJlZm9yZSBwaXBpbmcgZHVlIHRvIHdyaXRlOyBwcmV2ZW50
Q2FuY2VsID0gYSAodHJ1dGh5KSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQot
RkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVycm9yZWQg
YmVmb3JlIHBpcGluZyBkdWUgdG8gd3JpdGU7IHByZXZlbnRDYW5jZWwgPSAxICh0cnV0aHkpIENh
bid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIEVycm9ycyBtdXN0IGJlIHBy
b3BhZ2F0ZWQgYmFja3dhcmQ6IGJlY29tZXMgZXJyb3JlZCBiZWZvcmUgcGlwaW5nIGR1ZSB0byB3
cml0ZTsgcHJldmVudENhbmNlbCA9IFN5bWJvbCgpICh0cnV0aHkpIENhbid0IGZpbmQgdmFyaWFi
bGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dh
cmQ6IGJlY29tZXMgZXJyb3JlZCBiZWZvcmUgcGlwaW5nIGR1ZSB0byB3cml0ZTsgcHJldmVudENh
bmNlbCA9IFtvYmplY3QgT2JqZWN0XSAodHJ1dGh5KSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0
YWJsZVN0cmVhbQotRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBiZWNv
bWVzIGVycm9yZWQgYmVmb3JlIHBpcGluZyBkdWUgdG8gd3JpdGUsIHByZXZlbnRDYW5jZWwgPSB0
cnVlOyBwcmV2ZW50QWJvcnQgPSB0cnVlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3Ry
ZWFtCi1GQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGJlY29tZXMgZXJy
b3JlZCBiZWZvcmUgcGlwaW5nIGR1ZSB0byB3cml0ZTsgcHJldmVudENhbmNlbCA9IHRydWUsIHBy
ZXZlbnRBYm9ydCA9IHRydWUsIHByZXZlbnRDbG9zZSA9IHRydWUgQ2FuJ3QgZmluZCB2YXJpYWJs
ZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2Fy
ZDogYmVjb21lcyBlcnJvcmVkIGR1cmluZyBwaXBpbmcgZHVlIHRvIHdyaXRlOyBwcmV2ZW50Q2Fu
Y2VsIG9taXR0ZWQ7IGZ1bGZpbGxlZCBjYW5jZWwgcHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxl
OiBXcml0YWJsZVN0cmVhbQotRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJk
OiBiZWNvbWVzIGVycm9yZWQgZHVyaW5nIHBpcGluZyBkdWUgdG8gd3JpdGU7IHByZXZlbnRDYW5j
ZWwgb21pdHRlZDsgcmVqZWN0ZWQgY2FuY2VsIHByb21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTog
V3JpdGFibGVTdHJlYW0KLUZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDog
YmVjb21lcyBlcnJvcmVkIGR1cmluZyBwaXBpbmcgZHVlIHRvIHdyaXRlOyBwcmV2ZW50Q2FuY2Vs
ID0gdHJ1ZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBFcnJvcnMg
bXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVycm9yZWQgZHVyaW5nIHBpcGlu
ZyBkdWUgdG8gd3JpdGUsIGJ1dCBhc3luYzsgcHJldmVudENhbmNlbCA9IGZhbHNlOyBmdWxmaWxs
ZWQgY2FuY2VsIHByb21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZB
SUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogYmVjb21lcyBlcnJvcmVkIGR1
cmluZyBwaXBpbmcgZHVlIHRvIHdyaXRlLCBidXQgYXN5bmM7IHByZXZlbnRDYW5jZWwgPSBmYWxz
ZTsgcmVqZWN0ZWQgY2FuY2VsIHByb21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVT
dHJlYW0KLUZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogYmVjb21lcyBl
cnJvcmVkIGR1cmluZyBwaXBpbmcgZHVlIHRvIHdyaXRlLCBidXQgYXN5bmM7IHByZXZlbnRDYW5j
ZWwgPSB0cnVlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIEVycm9y
cyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGJlY29tZXMgZXJyb3JlZCBhZnRlciBwaXBp
bmc7IHByZXZlbnRDYW5jZWwgb21pdHRlZDsgZnVsZmlsbGVkIGNhbmNlbCBwcm9taXNlIENhbid0
IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIEVycm9ycyBtdXN0IGJlIHByb3Bh
Z2F0ZWQgYmFja3dhcmQ6IGJlY29tZXMgZXJyb3JlZCBhZnRlciBwaXBpbmc7IHByZXZlbnRDYW5j
ZWwgb21pdHRlZDsgcmVqZWN0ZWQgY2FuY2VsIHByb21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTog
V3JpdGFibGVTdHJlYW0KLUZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDog
YmVjb21lcyBlcnJvcmVkIGFmdGVyIHBpcGluZzsgcHJldmVudENhbmNlbCA9IHRydWUgQ2FuJ3Qg
ZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFn
YXRlZCBiYWNrd2FyZDogYmVjb21lcyBlcnJvcmVkIGFmdGVyIHBpcGluZyBkdWUgdG8gbGFzdCB3
cml0ZTsgc291cmNlIGlzIGNsb3NlZDsgcHJldmVudENhbmNlbCBvbWl0dGVkIChidXQgY2FuY2Vs
IGlzIG5ldmVyIGNhbGxlZCkgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZB
SUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogYmVjb21lcyBlcnJvcmVkIGFm
dGVyIHBpcGluZyBkdWUgdG8gbGFzdCB3cml0ZTsgc291cmNlIGlzIGNsb3NlZDsgcHJldmVudENh
bmNlbCA9IHRydWUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgRXJy
b3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogYmVjb21lcyBlcnJvcmVkIGFmdGVyIHBp
cGluZzsgZGVzdCBuZXZlciBkZXNpcmVzIGNodW5rczsgcHJldmVudENhbmNlbCA9IGZhbHNlOyBm
dWxmaWxsZWQgY2FuY2VsIHByb21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJl
YW0KLUZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogYmVjb21lcyBlcnJv
cmVkIGFmdGVyIHBpcGluZzsgZGVzdCBuZXZlciBkZXNpcmVzIGNodW5rczsgcHJldmVudENhbmNl
bCA9IGZhbHNlOyByZWplY3RlZCBjYW5jZWwgcHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBX
cml0YWJsZVN0cmVhbQotRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBi
ZWNvbWVzIGVycm9yZWQgYWZ0ZXIgcGlwaW5nOyBkZXN0IG5ldmVyIGRlc2lyZXMgY2h1bmtzOyBw
cmV2ZW50Q2FuY2VsID0gdHJ1ZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQot
RkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVycm9yZWQg
YmVmb3JlIHBpcGluZyB2aWEgYWJvcnQ7IHByZXZlbnRDYW5jZWwgb21pdHRlZDsgZnVsZmlsbGVk
IGNhbmNlbCBwcm9taXNlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlM
IEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGJlY29tZXMgZXJyb3JlZCBiZWZv
cmUgcGlwaW5nIHZpYSBhYm9ydDsgcHJldmVudENhbmNlbCBvbWl0dGVkOyByZWplY3RlZCBjYW5j
ZWwgcHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBFcnJv
cnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVycm9yZWQgYmVmb3JlIHBp
cGluZyB2aWEgYWJvcnQ7IHByZXZlbnRDYW5jZWwgPSB0cnVlIENhbid0IGZpbmQgdmFyaWFibGU6
IFdyaXRhYmxlU3RyZWFtCi1GQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6
IGVycm9yaW5nIHZpYSB0aGUgY29udHJvbGxlciBlcnJvcnMgb25jZSBwZW5kaW5nIHdyaXRlIGNv
bXBsZXRlcyBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlw
aW5nL2Vycm9yLXByb3BhZ2F0aW9uLWJhY2t3YXJkLnNlcnZpY2V3b3JrZXIuaHR0cHMuaHRtbCBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBp
bmcvZXJyb3ItcHJvcGFnYXRpb24tYmFja3dhcmQuc2VydmljZXdvcmtlci5odHRwcy5odG1sCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmY2QwNGJhMWQzNWYzNzY2NDNmODRkOGNhZDg3
ZTQ1ZmZmNGQwNGVkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9w
aXBpbmcvZXJyb3ItcHJvcGFnYXRpb24tYmFja3dhcmQuc2VydmljZXdvcmtlci5odHRwcy5odG1s
CisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBj
aGFyc2V0PSJ1dGYtOCI+Ci08dGl0bGU+ZXJyb3ItcHJvcGFnYXRpb24tYmFja3dhcmQuanMgc2Vy
dmljZSB3b3JrZXIgd3JhcHBlciBmaWxlPC90aXRsZT4KLQotPHNjcmlwdCBzcmM9Ii9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVz
dGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9zZXJ2aWNlLXdvcmtl
cnMvc2VydmljZS13b3JrZXIvcmVzb3VyY2VzL3Rlc3QtaGVscGVycy5zdWIuanMiPjwvc2NyaXB0
PgotCi08c2NyaXB0PgotJ3VzZSBzdHJpY3QnOwotc2VydmljZV93b3JrZXJfdGVzdCgnZXJyb3It
cHJvcGFnYXRpb24tYmFja3dhcmQuanMnLCAnU2VydmljZSB3b3JrZXIgdGVzdCBzZXR1cCcpOwot
PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Vycm9yLXByb3BhZ2F0aW9uLWJhY2t3YXJkLnNoYXJl
ZHdvcmtlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Vycm9yLXByb3BhZ2F0aW9uLWJhY2t3YXJkLnNoYXJl
ZHdvcmtlci1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA5ZDVk
MjUwOWQ3ODQ3ZThjZDZmZTY2MDZhYTYwY2RkMzNhYTQ3NGUuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9lcnJvci1wcm9wYWdhdGlvbi1iYWNrd2FyZC5z
aGFyZWR3b3JrZXItZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1D
T05TT0xFIE1FU1NBR0U6IFJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBTaGFy
ZWRXb3JrZXIKLQotSGFybmVzcyBFcnJvciAoRkFJTCksIG1lc3NhZ2UgPSBSZWZlcmVuY2VFcnJv
cjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogU2hhcmVkV29ya2VyCi0KLQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9l
cnJvci1wcm9wYWdhdGlvbi1iYWNrd2FyZC5zaGFyZWR3b3JrZXIuaHRtbCBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvZXJyb3ItcHJv
cGFnYXRpb24tYmFja3dhcmQuc2hhcmVkd29ya2VyLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDdlYTYyNjI3ZGMxYWFiMDI0ZTVlYjM5YTU1NmNhYzhiODc4MzNjMDMuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9lcnJvci1wcm9wYWdh
dGlvbi1iYWNrd2FyZC5zaGFyZWR3b3JrZXIuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDExICsw
LDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHRpdGxlPmVy
cm9yLXByb3BhZ2F0aW9uLWJhY2t3YXJkLmpzIHNoYXJlZCB3b3JrZXIgd3JhcHBlciBmaWxlPC90
aXRsZT4KLQotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0
PgotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0
PgotCi08c2NyaXB0PgotJ3VzZSBzdHJpY3QnOwotZmV0Y2hfdGVzdHNfZnJvbV93b3JrZXIobmV3
IFNoYXJlZFdvcmtlcignZXJyb3ItcHJvcGFnYXRpb24tYmFja3dhcmQuanMnKSk7Ci08L3Njcmlw
dD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy9waXBpbmcvZXJyb3ItcHJvcGFnYXRpb24tZm9yd2FyZC5hbnktZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
L3BpcGluZy9lcnJvci1wcm9wYWdhdGlvbi1mb3J3YXJkLmFueS1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMGE1MWQ0ZjZiYzY2YjI2YjY5OTBmMzAzOWI4ZWZiOWRmMjMxMzlhMgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy9waXBpbmcvZXJyb3ItcHJvcGFnYXRpb24tZm9yd2FyZC5hbnktZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsOTUgQEAKK0NPTlNPTEUgTUVTU0FHRTogVW5oYW5kbGVkIFByb21pc2UgUmVqZWN0
aW9uOiBlcnJvcjE6IGVycm9yMSEKK0NPTlNPTEUgTUVTU0FHRTogVW5oYW5kbGVkIFByb21pc2Ug
UmVqZWN0aW9uOiBUeXBlRXJyb3I6IGNhbmNlbCgpIGNhbGxlZCBvbiBhIHJlYWRlciBvd25lZCBi
eSBubyByZWFkYWJsZSBzdHJlYW0KK0NPTlNPTEUgTUVTU0FHRTogVW5oYW5kbGVkIFByb21pc2Ug
UmVqZWN0aW9uOiBlcnJvcjE6IGVycm9yMSEKK0NPTlNPTEUgTUVTU0FHRTogVW5oYW5kbGVkIFBy
b21pc2UgUmVqZWN0aW9uOiBUeXBlRXJyb3I6IGNhbmNlbCgpIGNhbGxlZCBvbiBhIHJlYWRlciBv
d25lZCBieSBubyByZWFkYWJsZSBzdHJlYW0KK0NPTlNPTEUgTUVTU0FHRTogVW5oYW5kbGVkIFBy
b21pc2UgUmVqZWN0aW9uOiBlcnJvcjI6IGVycm9yMiEKK0NPTlNPTEUgTUVTU0FHRTogVW5oYW5k
bGVkIFByb21pc2UgUmVqZWN0aW9uOiBlcnJvcjE6IGVycm9yMSEKK0NPTlNPTEUgTUVTU0FHRTog
VW5oYW5kbGVkIFByb21pc2UgUmVqZWN0aW9uOiBUeXBlRXJyb3I6IGNhbmNlbCgpIGNhbGxlZCBv
biBhIHJlYWRlciBvd25lZCBieSBubyByZWFkYWJsZSBzdHJlYW0KK0NPTlNPTEUgTUVTU0FHRTog
VW5oYW5kbGVkIFByb21pc2UgUmVqZWN0aW9uOiBlcnJvcjE6IGVycm9yMSEKK0NPTlNPTEUgTUVT
U0FHRTogVW5oYW5kbGVkIFByb21pc2UgUmVqZWN0aW9uOiBUeXBlRXJyb3I6IGNhbmNlbCgpIGNh
bGxlZCBvbiBhIHJlYWRlciBvd25lZCBieSBubyByZWFkYWJsZSBzdHJlYW0KK0NPTlNPTEUgTUVT
U0FHRTogVW5oYW5kbGVkIFByb21pc2UgUmVqZWN0aW9uOiBlcnJvcjE6IGVycm9yMSEKK0NPTlNP
TEUgTUVTU0FHRTogVW5oYW5kbGVkIFByb21pc2UgUmVqZWN0aW9uOiBUeXBlRXJyb3I6IGNhbmNl
bCgpIGNhbGxlZCBvbiBhIHJlYWRlciBvd25lZCBieSBubyByZWFkYWJsZSBzdHJlYW0KK0NPTlNP
TEUgTUVTU0FHRTogVW5oYW5kbGVkIFByb21pc2UgUmVqZWN0aW9uOiBlcnJvcjE6IGVycm9yMSEK
K0NPTlNPTEUgTUVTU0FHRTogVW5oYW5kbGVkIFByb21pc2UgUmVqZWN0aW9uOiBUeXBlRXJyb3I6
IGNhbmNlbCgpIGNhbGxlZCBvbiBhIHJlYWRlciBvd25lZCBieSBubyByZWFkYWJsZSBzdHJlYW0K
K0NPTlNPTEUgTUVTU0FHRTogVW5oYW5kbGVkIFByb21pc2UgUmVqZWN0aW9uOiBlcnJvcjE6IGVy
cm9yMSEKK0NPTlNPTEUgTUVTU0FHRTogVW5oYW5kbGVkIFByb21pc2UgUmVqZWN0aW9uOiBUeXBl
RXJyb3I6IGNhbmNlbCgpIGNhbGxlZCBvbiBhIHJlYWRlciBvd25lZCBieSBubyByZWFkYWJsZSBz
dHJlYW0KK0NPTlNPTEUgTUVTU0FHRTogVW5oYW5kbGVkIFByb21pc2UgUmVqZWN0aW9uOiBlcnJv
cjE6IGVycm9yMSEKK0NPTlNPTEUgTUVTU0FHRTogVW5oYW5kbGVkIFByb21pc2UgUmVqZWN0aW9u
OiBUeXBlRXJyb3I6IGNhbmNlbCgpIGNhbGxlZCBvbiBhIHJlYWRlciBvd25lZCBieSBubyByZWFk
YWJsZSBzdHJlYW0KK0NPTlNPTEUgTUVTU0FHRTogVW5oYW5kbGVkIFByb21pc2UgUmVqZWN0aW9u
OiBlcnJvcjE6IGVycm9yMSEKK0NPTlNPTEUgTUVTU0FHRTogVW5oYW5kbGVkIFByb21pc2UgUmVq
ZWN0aW9uOiBUeXBlRXJyb3I6IGNhbmNlbCgpIGNhbGxlZCBvbiBhIHJlYWRlciBvd25lZCBieSBu
byByZWFkYWJsZSBzdHJlYW0KK0NPTlNPTEUgTUVTU0FHRTogVW5oYW5kbGVkIFByb21pc2UgUmVq
ZWN0aW9uOiBlcnJvcjE6IGVycm9yMSEKK0NPTlNPTEUgTUVTU0FHRTogVW5oYW5kbGVkIFByb21p
c2UgUmVqZWN0aW9uOiBlcnJvcjE6IGVycm9yMSEKK0NPTlNPTEUgTUVTU0FHRTogVW5oYW5kbGVk
IFByb21pc2UgUmVqZWN0aW9uOiBlcnJvcjE6IGVycm9yMSEKK0NPTlNPTEUgTUVTU0FHRTogVW5o
YW5kbGVkIFByb21pc2UgUmVqZWN0aW9uOiBlcnJvcjE6IGVycm9yMSEKK0NPTlNPTEUgTUVTU0FH
RTogVW5oYW5kbGVkIFByb21pc2UgUmVqZWN0aW9uOiBlcnJvcjE6IGVycm9yMSEKK0NPTlNPTEUg
TUVTU0FHRTogVW5oYW5kbGVkIFByb21pc2UgUmVqZWN0aW9uOiBlcnJvcjE6IGVycm9yMSEKK0NP
TlNPTEUgTUVTU0FHRTogVW5oYW5kbGVkIFByb21pc2UgUmVqZWN0aW9uOiBlcnJvcjE6IGVycm9y
MSEKK0NPTlNPTEUgTUVTU0FHRTogVW5oYW5kbGVkIFByb21pc2UgUmVqZWN0aW9uOiBlcnJvcjE6
IGVycm9yMSEKK0NPTlNPTEUgTUVTU0FHRTogVW5oYW5kbGVkIFByb21pc2UgUmVqZWN0aW9uOiBU
eXBlRXJyb3I6IGNhbmNlbCgpIGNhbGxlZCBvbiBhIHJlYWRlciBvd25lZCBieSBubyByZWFkYWJs
ZSBzdHJlYW0KK0NPTlNPTEUgTUVTU0FHRTogVW5oYW5kbGVkIFByb21pc2UgUmVqZWN0aW9uOiBl
cnJvcjE6IGVycm9yMSEKK0NPTlNPTEUgTUVTU0FHRTogVW5oYW5kbGVkIFByb21pc2UgUmVqZWN0
aW9uOiBUeXBlRXJyb3I6IGNhbmNlbCgpIGNhbGxlZCBvbiBhIHJlYWRlciBvd25lZCBieSBubyBy
ZWFkYWJsZSBzdHJlYW0KK0NPTlNPTEUgTUVTU0FHRTogVW5oYW5kbGVkIFByb21pc2UgUmVqZWN0
aW9uOiBlcnJvcjI6IGVycm9yMiEKK0NPTlNPTEUgTUVTU0FHRTogVW5oYW5kbGVkIFByb21pc2Ug
UmVqZWN0aW9uOiBlcnJvcjE6IGVycm9yMSEKK0NPTlNPTEUgTUVTU0FHRTogVW5oYW5kbGVkIFBy
b21pc2UgUmVqZWN0aW9uOiBlcnJvcjE6IGVycm9yMSEKK0NPTlNPTEUgTUVTU0FHRTogVW5oYW5k
bGVkIFByb21pc2UgUmVqZWN0aW9uOiBUeXBlRXJyb3I6IGNhbmNlbCgpIGNhbGxlZCBvbiBhIHJl
YWRlciBvd25lZCBieSBubyByZWFkYWJsZSBzdHJlYW0KK0NPTlNPTEUgTUVTU0FHRTogVW5oYW5k
bGVkIFByb21pc2UgUmVqZWN0aW9uOiBlcnJvcjE6IGVycm9yMSEKK0NPTlNPTEUgTUVTU0FHRTog
VW5oYW5kbGVkIFByb21pc2UgUmVqZWN0aW9uOiBUeXBlRXJyb3I6IGNhbmNlbCgpIGNhbGxlZCBv
biBhIHJlYWRlciBvd25lZCBieSBubyByZWFkYWJsZSBzdHJlYW0KK0NPTlNPTEUgTUVTU0FHRTog
VW5oYW5kbGVkIFByb21pc2UgUmVqZWN0aW9uOiBlcnJvcjI6IGVycm9yMiEKK0NPTlNPTEUgTUVT
U0FHRTogVW5oYW5kbGVkIFByb21pc2UgUmVqZWN0aW9uOiBlcnJvcjE6IGVycm9yMSEKK0NPTlNP
TEUgTUVTU0FHRTogVW5oYW5kbGVkIFByb21pc2UgUmVqZWN0aW9uOiBlcnJvcjE6IGVycm9yMSEK
K0NPTlNPTEUgTUVTU0FHRTogVW5oYW5kbGVkIFByb21pc2UgUmVqZWN0aW9uOiBUeXBlRXJyb3I6
IGNhbmNlbCgpIGNhbGxlZCBvbiBhIHJlYWRlciBvd25lZCBieSBubyByZWFkYWJsZSBzdHJlYW0K
K0NPTlNPTEUgTUVTU0FHRTogVW5oYW5kbGVkIFByb21pc2UgUmVqZWN0aW9uOiBlcnJvcjE6IGVy
cm9yMSEKK0NPTlNPTEUgTUVTU0FHRTogVW5oYW5kbGVkIFByb21pc2UgUmVqZWN0aW9uOiBUeXBl
RXJyb3I6IGNhbmNlbCgpIGNhbGxlZCBvbiBhIHJlYWRlciBvd25lZCBieSBubyByZWFkYWJsZSBz
dHJlYW0KK0NPTlNPTEUgTUVTU0FHRTogVW5oYW5kbGVkIFByb21pc2UgUmVqZWN0aW9uOiBlcnJv
cjI6IGVycm9yMiEKK0NPTlNPTEUgTUVTU0FHRTogVW5oYW5kbGVkIFByb21pc2UgUmVqZWN0aW9u
OiBlcnJvcjE6IGVycm9yMSEKK0NPTlNPTEUgTUVTU0FHRTogVW5oYW5kbGVkIFByb21pc2UgUmVq
ZWN0aW9uOiBlcnJvcjE6IGVycm9yMSEKK0NPTlNPTEUgTUVTU0FHRTogVW5oYW5kbGVkIFByb21p
c2UgUmVqZWN0aW9uOiBUeXBlRXJyb3I6IGNhbmNlbCgpIGNhbGxlZCBvbiBhIHJlYWRlciBvd25l
ZCBieSBubyByZWFkYWJsZSBzdHJlYW0KK0NPTlNPTEUgTUVTU0FHRTogVW5oYW5kbGVkIFByb21p
c2UgUmVqZWN0aW9uOiBlcnJvcjE6IGVycm9yMSEKK0NPTlNPTEUgTUVTU0FHRTogVW5oYW5kbGVk
IFByb21pc2UgUmVqZWN0aW9uOiBUeXBlRXJyb3I6IGNhbmNlbCgpIGNhbGxlZCBvbiBhIHJlYWRl
ciBvd25lZCBieSBubyByZWFkYWJsZSBzdHJlYW0KK0NPTlNPTEUgTUVTU0FHRTogVW5oYW5kbGVk
IFByb21pc2UgUmVqZWN0aW9uOiBlcnJvcjI6IGVycm9yMiEKK0NPTlNPTEUgTUVTU0FHRTogVW5o
YW5kbGVkIFByb21pc2UgUmVqZWN0aW9uOiBlcnJvcjE6IGVycm9yMSEKK0NPTlNPTEUgTUVTU0FH
RTogVW5oYW5kbGVkIFByb21pc2UgUmVqZWN0aW9uOiBlcnJvcjE6IGVycm9yMSEKK0NPTlNPTEUg
TUVTU0FHRTogVW5oYW5kbGVkIFByb21pc2UgUmVqZWN0aW9uOiBlcnJvcjE6IGVycm9yMSEKK0NP
TlNPTEUgTUVTU0FHRTogVW5oYW5kbGVkIFByb21pc2UgUmVqZWN0aW9uOiBUeXBlRXJyb3I6IGNh
bmNlbCgpIGNhbGxlZCBvbiBhIHJlYWRlciBvd25lZCBieSBubyByZWFkYWJsZSBzdHJlYW0KK0NP
TlNPTEUgTUVTU0FHRTogVW5oYW5kbGVkIFByb21pc2UgUmVqZWN0aW9uOiBlcnJvcjE6IGVycm9y
MSEKK0NPTlNPTEUgTUVTU0FHRTogVW5oYW5kbGVkIFByb21pc2UgUmVqZWN0aW9uOiBlcnJvcjE6
IGVycm9yMSEKK0NPTlNPTEUgTUVTU0FHRTogVW5oYW5kbGVkIFByb21pc2UgUmVqZWN0aW9uOiBl
cnJvcjE6IGVycm9yMSEKK0NPTlNPTEUgTUVTU0FHRTogVW5oYW5kbGVkIFByb21pc2UgUmVqZWN0
aW9uOiBlcnJvcjE6IGVycm9yMSEKK0NPTlNPTEUgTUVTU0FHRTogVW5oYW5kbGVkIFByb21pc2Ug
UmVqZWN0aW9uOiBUeXBlRXJyb3I6IGNhbmNlbCgpIGNhbGxlZCBvbiBhIHJlYWRlciBvd25lZCBi
eSBubyByZWFkYWJsZSBzdHJlYW0KK0NPTlNPTEUgTUVTU0FHRTogVW5oYW5kbGVkIFByb21pc2Ug
UmVqZWN0aW9uOiBlcnJvcjE6IGVycm9yMSEKKworSGFybmVzcyBFcnJvciAoRkFJTCksIG1lc3Nh
Z2UgPSBVbmhhbmRsZWQgcmVqZWN0aW9uOiBlcnJvcjEhCisKK1BBU1MgRXJyb3JzIG11c3QgYmUg
cHJvcGFnYXRlZCBmb3J3YXJkOiBzdGFydHMgZXJyb3JlZDsgcHJldmVudEFib3J0ID0gZmFsc2U7
IGZ1bGZpbGxlZCBhYm9ydCBwcm9taXNlIAorRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVk
IGZvcndhcmQ6IHN0YXJ0cyBlcnJvcmVkOyBwcmV2ZW50QWJvcnQgPSBmYWxzZTsgcmVqZWN0ZWQg
YWJvcnQgcHJvbWlzZSBwcm9taXNlX3JlamVjdHNfZXhhY3RseTogcGlwZVRvIG11c3QgcmVqZWN0
IHdpdGggdGhlIGFib3J0IGVycm9yIGZ1bmN0aW9uICJmdW5jdGlvbiAoKSB7IHRocm93IGUgfSIg
dGhyZXcgb2JqZWN0ICJlcnJvcjE6IGVycm9yMSEiIGJ1dCB3ZSBleHBlY3RlZCBpdCB0byB0aHJv
dyBvYmplY3QgImVycm9yMjogZXJyb3IyISIKK1BBU1MgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRl
ZCBmb3J3YXJkOiBzdGFydHMgZXJyb3JlZDsgcHJldmVudEFib3J0ID0gdW5kZWZpbmVkIChmYWxz
eSk7IGZ1bGZpbGxlZCBhYm9ydCBwcm9taXNlIAorUEFTUyBFcnJvcnMgbXVzdCBiZSBwcm9wYWdh
dGVkIGZvcndhcmQ6IHN0YXJ0cyBlcnJvcmVkOyBwcmV2ZW50QWJvcnQgPSBudWxsIChmYWxzeSk7
IGZ1bGZpbGxlZCBhYm9ydCBwcm9taXNlIAorUEFTUyBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVk
IGZvcndhcmQ6IHN0YXJ0cyBlcnJvcmVkOyBwcmV2ZW50QWJvcnQgPSBmYWxzZSAoZmFsc3kpOyBm
dWxmaWxsZWQgYWJvcnQgcHJvbWlzZSAKK1BBU1MgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBm
b3J3YXJkOiBzdGFydHMgZXJyb3JlZDsgcHJldmVudEFib3J0ID0gMCAoZmFsc3kpOyBmdWxmaWxs
ZWQgYWJvcnQgcHJvbWlzZSAKK1BBU1MgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJk
OiBzdGFydHMgZXJyb3JlZDsgcHJldmVudEFib3J0ID0gLTAgKGZhbHN5KTsgZnVsZmlsbGVkIGFi
b3J0IHByb21pc2UgCitQQVNTIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc3Rh
cnRzIGVycm9yZWQ7IHByZXZlbnRBYm9ydCA9IE5hTiAoZmFsc3kpOyBmdWxmaWxsZWQgYWJvcnQg
cHJvbWlzZSAKK1BBU1MgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBzdGFydHMg
ZXJyb3JlZDsgcHJldmVudEFib3J0ID0gIChmYWxzeSk7IGZ1bGZpbGxlZCBhYm9ydCBwcm9taXNl
IAorUEFTUyBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHN0YXJ0cyBlcnJvcmVk
OyBwcmV2ZW50QWJvcnQgPSB0cnVlICh0cnV0aHkpIAorUEFTUyBFcnJvcnMgbXVzdCBiZSBwcm9w
YWdhdGVkIGZvcndhcmQ6IHN0YXJ0cyBlcnJvcmVkOyBwcmV2ZW50QWJvcnQgPSBhICh0cnV0aHkp
IAorUEFTUyBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHN0YXJ0cyBlcnJvcmVk
OyBwcmV2ZW50QWJvcnQgPSAxICh0cnV0aHkpIAorUEFTUyBFcnJvcnMgbXVzdCBiZSBwcm9wYWdh
dGVkIGZvcndhcmQ6IHN0YXJ0cyBlcnJvcmVkOyBwcmV2ZW50QWJvcnQgPSBTeW1ib2woKSAodHJ1
dGh5KSAKK1BBU1MgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBzdGFydHMgZXJy
b3JlZDsgcHJldmVudEFib3J0ID0gW29iamVjdCBPYmplY3RdICh0cnV0aHkpIAorUEFTUyBFcnJv
cnMgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHN0YXJ0cyBlcnJvcmVkOyBwcmV2ZW50QWJv
cnQgPSB0cnVlLCBwcmV2ZW50Q2FuY2VsID0gdHJ1ZSAKK1BBU1MgRXJyb3JzIG11c3QgYmUgcHJv
cGFnYXRlZCBmb3J3YXJkOiBzdGFydHMgZXJyb3JlZDsgcHJldmVudEFib3J0ID0gdHJ1ZSwgcHJl
dmVudENhbmNlbCA9IHRydWUsIHByZXZlbnRDbG9zZSA9IHRydWUgCitQQVNTIEVycm9ycyBtdXN0
IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogYmVjb21lcyBlcnJvcmVkIHdoaWxlIGVtcHR5OyBwcmV2
ZW50QWJvcnQgPSBmYWxzZTsgZnVsZmlsbGVkIGFib3J0IHByb21pc2UgCitGQUlMIEVycm9ycyBt
dXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogYmVjb21lcyBlcnJvcmVkIHdoaWxlIGVtcHR5OyBw
cmV2ZW50QWJvcnQgPSBmYWxzZTsgcmVqZWN0ZWQgYWJvcnQgcHJvbWlzZSBwcm9taXNlX3JlamVj
dHNfZXhhY3RseTogcGlwZVRvIG11c3QgcmVqZWN0IHdpdGggdGhlIGFib3J0IGVycm9yIGZ1bmN0
aW9uICJmdW5jdGlvbiAoKSB7IHRocm93IGUgfSIgdGhyZXcgb2JqZWN0ICJlcnJvcjE6IGVycm9y
MSEiIGJ1dCB3ZSBleHBlY3RlZCBpdCB0byB0aHJvdyBvYmplY3QgImVycm9yMjogZXJyb3IyISIK
K1BBU1MgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBiZWNvbWVzIGVycm9yZWQg
d2hpbGUgZW1wdHk7IHByZXZlbnRBYm9ydCA9IHRydWUgCitQQVNTIEVycm9ycyBtdXN0IGJlIHBy
b3BhZ2F0ZWQgZm9yd2FyZDogYmVjb21lcyBlcnJvcmVkIHdoaWxlIGVtcHR5OyBkZXN0IG5ldmVy
IGRlc2lyZXMgY2h1bmtzOyBwcmV2ZW50QWJvcnQgPSBmYWxzZTsgZnVsZmlsbGVkIGFib3J0IHBy
b21pc2UgCitGQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogYmVjb21lcyBl
cnJvcmVkIHdoaWxlIGVtcHR5OyBkZXN0IG5ldmVyIGRlc2lyZXMgY2h1bmtzOyBwcmV2ZW50QWJv
cnQgPSBmYWxzZTsgcmVqZWN0ZWQgYWJvcnQgcHJvbWlzZSBwcm9taXNlX3JlamVjdHNfZXhhY3Rs
eTogcGlwZVRvIG11c3QgcmVqZWN0IHdpdGggdGhlIGFib3J0IGVycm9yIGZ1bmN0aW9uICJmdW5j
dGlvbiAoKSB7IHRocm93IGUgfSIgdGhyZXcgb2JqZWN0ICJlcnJvcjE6IGVycm9yMSEiIGJ1dCB3
ZSBleHBlY3RlZCBpdCB0byB0aHJvdyBvYmplY3QgImVycm9yMjogZXJyb3IyISIKK1BBU1MgRXJy
b3JzIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBiZWNvbWVzIGVycm9yZWQgd2hpbGUgZW1w
dHk7IGRlc3QgbmV2ZXIgZGVzaXJlcyBjaHVua3M7IHByZXZlbnRBYm9ydCA9IHRydWUgCitQQVNT
IEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogYmVjb21lcyBlcnJvcmVkIGFmdGVy
IG9uZSBjaHVuazsgcHJldmVudEFib3J0ID0gZmFsc2U7IGZ1bGZpbGxlZCBhYm9ydCBwcm9taXNl
IAorRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IGJlY29tZXMgZXJyb3Jl
ZCBhZnRlciBvbmUgY2h1bms7IHByZXZlbnRBYm9ydCA9IGZhbHNlOyByZWplY3RlZCBhYm9ydCBw
cm9taXNlIHByb21pc2VfcmVqZWN0c19leGFjdGx5OiBwaXBlVG8gbXVzdCByZWplY3Qgd2l0aCB0
aGUgYWJvcnQgZXJyb3IgZnVuY3Rpb24gImZ1bmN0aW9uICgpIHsgdGhyb3cgZSB9IiB0aHJldyBv
YmplY3QgImVycm9yMTogZXJyb3IxISIgYnV0IHdlIGV4cGVjdGVkIGl0IHRvIHRocm93IG9iamVj
dCAiZXJyb3IyOiBlcnJvcjIhIgorUEFTUyBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndh
cmQ6IGJlY29tZXMgZXJyb3JlZCBhZnRlciBvbmUgY2h1bms7IHByZXZlbnRBYm9ydCA9IHRydWUg
CitGQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogYmVjb21lcyBlcnJvcmVk
IGFmdGVyIG9uZSBjaHVuazsgZGVzdCBuZXZlciBkZXNpcmVzIGNodW5rczsgcHJldmVudEFib3J0
ID0gZmFsc2U7IGZ1bGZpbGxlZCBhYm9ydCBwcm9taXNlIGFzc2VydF9hcnJheV9lcXVhbHM6IGxl
bmd0aHMgZGlmZmVyLCBleHBlY3RlZCBhcnJheSBbImFib3J0Iiwgb2JqZWN0ICJlcnJvcjE6IGVy
cm9yMSEiXSBsZW5ndGggMiwgZ290IFsid3JpdGUiLCAiSGVsbG8iLCAiYWJvcnQiLCBvYmplY3Qg
ImVycm9yMTogZXJyb3IxISJdIGxlbmd0aCA0CitGQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0
ZWQgZm9yd2FyZDogYmVjb21lcyBlcnJvcmVkIGFmdGVyIG9uZSBjaHVuazsgZGVzdCBuZXZlciBk
ZXNpcmVzIGNodW5rczsgcHJldmVudEFib3J0ID0gZmFsc2U7IHJlamVjdGVkIGFib3J0IHByb21p
c2UgcHJvbWlzZV9yZWplY3RzX2V4YWN0bHk6IHBpcGVUbyBtdXN0IHJlamVjdCB3aXRoIHRoZSBh
Ym9ydCBlcnJvciBmdW5jdGlvbiAiZnVuY3Rpb24gKCkgeyB0aHJvdyBlIH0iIHRocmV3IG9iamVj
dCAiZXJyb3IxOiBlcnJvcjEhIiBidXQgd2UgZXhwZWN0ZWQgaXQgdG8gdGhyb3cgb2JqZWN0ICJl
cnJvcjI6IGVycm9yMiEiCitGQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDog
YmVjb21lcyBlcnJvcmVkIGFmdGVyIG9uZSBjaHVuazsgZGVzdCBuZXZlciBkZXNpcmVzIGNodW5r
czsgcHJldmVudEFib3J0ID0gdHJ1ZSBhc3NlcnRfYXJyYXlfZXF1YWxzOiBsZW5ndGhzIGRpZmZl
ciwgZXhwZWN0ZWQgYXJyYXkgW10gbGVuZ3RoIDAsIGdvdCBbIndyaXRlIiwgIkhlbGxvIl0gbGVu
Z3RoIDIKK0ZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBzaHV0ZG93biBt
dXN0IG5vdCBvY2N1ciB1bnRpbCB0aGUgZmluYWwgd3JpdGUgY29tcGxldGVzIGFzc2VydF9hcnJh
eV9lcXVhbHM6IGxlbmd0aHMgZGlmZmVyLCBleHBlY3RlZCBhcnJheSBbIndyaXRlIiwgImEiXSBs
ZW5ndGggMiwgZ290IFsid3JpdGUiLCAiYSIsICJhYm9ydCIsIG9iamVjdCAiZXJyb3IxOiBlcnJv
cjEhIl0gbGVuZ3RoIDQKK0ZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBz
aHV0ZG93biBtdXN0IG5vdCBvY2N1ciB1bnRpbCB0aGUgZmluYWwgd3JpdGUgY29tcGxldGVzOyBw
cmV2ZW50QWJvcnQgPSB0cnVlIGFzc2VydF9lcXVhbHM6IHRoZSBwaXBlIG11c3Qgbm90IGJlIGNv
bXBsZXRlIGV4cGVjdGVkIGZhbHNlIGJ1dCBnb3QgdHJ1ZQorRkFJTCBFcnJvcnMgbXVzdCBiZSBw
cm9wYWdhdGVkIGZvcndhcmQ6IHNodXRkb3duIG11c3Qgbm90IG9jY3VyIHVudGlsIHRoZSBmaW5h
bCB3cml0ZSBjb21wbGV0ZXM7IGJlY29tZXMgZXJyb3JlZCBhZnRlciBmaXJzdCB3cml0ZSBhc3Nl
cnRfYXJyYXlfZXF1YWxzOiB0aGUgc2Vjb25kIGNodW5rIG11c3QgaGF2ZSBiZWVuIHdyaXR0ZW4s
IGJ1dCBhYm9ydCBtdXN0IG5vdCBoYXZlIGhhcHBlbmVkIHlldCBleHBlY3RlZCBwcm9wZXJ0eSAy
IHRvIGJlICJ3cml0ZSIgYnV0IGdvdCAiYWJvcnQiIChleHBlY3RlZCBhcnJheSBbIndyaXRlIiwg
ImEiLCAid3JpdGUiLCAiYiJdIGdvdCBbIndyaXRlIiwgImEiLCAiYWJvcnQiLCBvYmplY3QgImVy
cm9yMTogZXJyb3IxISJdKQorRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6
IHNodXRkb3duIG11c3Qgbm90IG9jY3VyIHVudGlsIHRoZSBmaW5hbCB3cml0ZSBjb21wbGV0ZXM7
IGJlY29tZXMgZXJyb3JlZCBhZnRlciBmaXJzdCB3cml0ZTsgcHJldmVudEFib3J0ID0gdHJ1ZSBh
c3NlcnRfZmFsc2U6IHRoZSBwaXBlIHNob3VsZCBub3QgY29tcGxldGUgd2hpbGUgdGhlIHNlY29u
ZCB3cml0ZSBpcyBwZW5kaW5nIGV4cGVjdGVkIGZhbHNlIGdvdCB0cnVlCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBp
bmcvZXJyb3ItcHJvcGFnYXRpb24tZm9yd2FyZC5hbnkuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvZXJyb3ItcHJvcGFnYXRp
b24tZm9yd2FyZC5hbnkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMzgyOTEzNTI4ZTY5M2IzYTVkNTZjNjYw
YTQ1MDYwOTgwYjU0OGMzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9lcnJvci1wcm9wYWdhdGlvbi1m
b3J3YXJkLmFueS5odG1sCkBAIC0wLDAgKzEgQEAKKzwhLS0gVGhpcyBmaWxlIGlzIHJlcXVpcmVk
IGZvciBXZWJLaXQgdGVzdCBpbmZyYXN0cnVjdHVyZSB0byBydW4gdGhlIHRlbXBsYXRlZCB0ZXN0
IC0tPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvZXJyb3ItcHJv
cGFnYXRpb24tZm9yd2FyZC5hbnkuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Vycm9yLXByb3BhZ2F0aW9uLWZvcndhcmQuYW55
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmYzNWVjNjY1ZWVjMjJmYzM0NzM3MmRiNzJlMjg3M2M3MDI4MjE1MWMK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Vycm9yLXByb3BhZ2F0aW9uLWZvcndhcmQuYW55LmpzCkBA
IC0wLDAgKzEsNTY5IEBACisvLyBNRVRBOiBnbG9iYWw9d2luZG93LHdvcmtlcixqc3NoZWxsCisv
LyBNRVRBOiBzY3JpcHQ9Li4vcmVzb3VyY2VzL3Rlc3QtdXRpbHMuanMKKy8vIE1FVEE6IHNjcmlw
dD0uLi9yZXNvdXJjZXMvcmVjb3JkaW5nLXN0cmVhbXMuanMKKyd1c2Ugc3RyaWN0JzsKKworY29u
c3QgZXJyb3IxID0gbmV3IEVycm9yKCdlcnJvcjEhJyk7CitlcnJvcjEubmFtZSA9ICdlcnJvcjEn
OworCitjb25zdCBlcnJvcjIgPSBuZXcgRXJyb3IoJ2Vycm9yMiEnKTsKK2Vycm9yMi5uYW1lID0g
J2Vycm9yMic7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKworICBjb25zdCBycyA9IHJlY29yZGlu
Z1JlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydCgpIHsKKyAgICAgIHJldHVybiBQcm9taXNlLnJl
amVjdChlcnJvcjEpOworICAgIH0KKyAgfSk7CisKKyAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0
YWJsZVN0cmVhbSgpOworCisgIHJldHVybiBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJv
cjEsIHJzLnBpcGVUbyh3cyksICdwaXBlVG8gbXVzdCByZWplY3Qgd2l0aCB0aGUgc2FtZSBlcnJv
cicpCisgICAgLnRoZW4oKCkgPT4geworICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhycy5ldmVu
dHMsIFtdKTsKKyAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ2Fib3J0Jywg
ZXJyb3IxXSk7CisgICAgfSk7CisKK30sICdFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndh
cmQ6IHN0YXJ0cyBlcnJvcmVkOyBwcmV2ZW50QWJvcnQgPSBmYWxzZTsgZnVsZmlsbGVkIGFib3J0
IHByb21pc2UnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworCisgIGNvbnN0IHJzID0gcmVjb3Jk
aW5nUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KCkgeworICAgICAgcmV0dXJuIFByb21pc2Uu
cmVqZWN0KGVycm9yMSk7CisgICAgfQorICB9KTsKKworICBjb25zdCB3cyA9IHJlY29yZGluZ1dy
aXRhYmxlU3RyZWFtKHsKKyAgICBhYm9ydCgpIHsKKyAgICAgIHRocm93IGVycm9yMjsKKyAgICB9
CisgIH0pOworCisgIHJldHVybiBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjIsIHJz
LnBpcGVUbyh3cyksICdwaXBlVG8gbXVzdCByZWplY3Qgd2l0aCB0aGUgYWJvcnQgZXJyb3InKQor
ICAgIC50aGVuKCgpID0+IHsKKyAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMocnMuZXZlbnRzLCBb
XSk7CisgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWydhYm9ydCcsIGVycm9y
MV0pOworICAgIH0pOworCit9LCAnRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBz
dGFydHMgZXJyb3JlZDsgcHJldmVudEFib3J0ID0gZmFsc2U7IHJlamVjdGVkIGFib3J0IHByb21p
c2UnKTsKKworZm9yIChjb25zdCBmYWxzeSBvZiBbdW5kZWZpbmVkLCBudWxsLCBmYWxzZSwgKzAs
IC0wLCBOYU4sICcnXSkgeworICBjb25zdCBzdHJpbmdWZXJzaW9uID0gT2JqZWN0LmlzKGZhbHN5
LCAtMCkgPyAnLTAnIDogU3RyaW5nKGZhbHN5KTsKKworICBwcm9taXNlX3Rlc3QodCA9PiB7CisK
KyAgICBjb25zdCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKHsKKyAgICAgIHN0YXJ0KCkg
eworICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyb3IxKTsKKyAgICAgIH0KKyAgICB9
KTsKKworICAgIGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0oKTsKKworICAgIHJl
dHVybiBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIHJzLnBpcGVUbyh3cywgeyBw
cmV2ZW50QWJvcnQ6IGZhbHN5IH0pLCAncGlwZVRvIG11c3QgcmVqZWN0IHdpdGggdGhlIHNhbWUg
ZXJyb3InKQorICAgICAgLnRoZW4oKCkgPT4geworICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxz
KHJzLmV2ZW50cywgW10pOworICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywg
WydhYm9ydCcsIGVycm9yMV0pOworICAgICAgfSk7CisKKyAgfSwgYEVycm9ycyBtdXN0IGJlIHBy
b3BhZ2F0ZWQgZm9yd2FyZDogc3RhcnRzIGVycm9yZWQ7IHByZXZlbnRBYm9ydCA9ICR7c3RyaW5n
VmVyc2lvbn0gKGZhbHN5KTsgZnVsZmlsbGVkIGFib3J0IGAgKworICAgICBgcHJvbWlzZWApOwor
fQorCitmb3IgKGNvbnN0IHRydXRoeSBvZiBbdHJ1ZSwgJ2EnLCAxLCBTeW1ib2woKSwgeyB9XSkg
eworICBwcm9taXNlX3Rlc3QodCA9PiB7CisKKyAgICBjb25zdCBycyA9IHJlY29yZGluZ1JlYWRh
YmxlU3RyZWFtKHsKKyAgICAgIHN0YXJ0KCkgeworICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWpl
Y3QoZXJyb3IxKTsKKyAgICAgIH0KKyAgICB9KTsKKworICAgIGNvbnN0IHdzID0gcmVjb3JkaW5n
V3JpdGFibGVTdHJlYW0oKTsKKworICAgIHJldHVybiBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0
LCBlcnJvcjEsIHJzLnBpcGVUbyh3cywgeyBwcmV2ZW50QWJvcnQ6IHRydXRoeSB9KSwKKyAgICAg
ICdwaXBlVG8gbXVzdCByZWplY3Qgd2l0aCB0aGUgc2FtZSBlcnJvcicpCisgICAgICAudGhlbigo
KSA9PiB7CisgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMocnMuZXZlbnRzLCBbXSk7CisgICAg
ICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbXSk7CisgICAgICB9KTsKKworICB9
LCBgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBzdGFydHMgZXJyb3JlZDsgcHJl
dmVudEFib3J0ID0gJHtTdHJpbmcodHJ1dGh5KX0gKHRydXRoeSlgKTsKK30KKworCitwcm9taXNl
X3Rlc3QodCA9PiB7CisKKyAgY29uc3QgcnMgPSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSh7Cisg
ICAgc3RhcnQoKSB7CisgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyb3IxKTsKKyAgICB9
CisgIH0pOworCisgIGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0oKTsKKworICBy
ZXR1cm4gcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCBycy5waXBlVG8od3MsIHsg
cHJldmVudEFib3J0OiB0cnVlLCBwcmV2ZW50Q2FuY2VsOiB0cnVlIH0pLAorICAgICdwaXBlVG8g
bXVzdCByZWplY3Qgd2l0aCB0aGUgc2FtZSBlcnJvcicpCisgICAgLnRoZW4oKCkgPT4geworICAg
ICAgYXNzZXJ0X2FycmF5X2VxdWFscyhycy5ldmVudHMsIFtdKTsKKyAgICAgIGFzc2VydF9hcnJh
eV9lcXVhbHMod3MuZXZlbnRzLCBbXSk7CisgICAgfSk7CisKK30sICdFcnJvcnMgbXVzdCBiZSBw
cm9wYWdhdGVkIGZvcndhcmQ6IHN0YXJ0cyBlcnJvcmVkOyBwcmV2ZW50QWJvcnQgPSB0cnVlLCBw
cmV2ZW50Q2FuY2VsID0gdHJ1ZScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisKKyAgY29uc3Qg
cnMgPSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoKSB7CisgICAgICByZXR1
cm4gUHJvbWlzZS5yZWplY3QoZXJyb3IxKTsKKyAgICB9CisgIH0pOworCisgIGNvbnN0IHdzID0g
cmVjb3JkaW5nV3JpdGFibGVTdHJlYW0oKTsKKworICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2V4
YWN0bHkodCwgZXJyb3IxLCBycy5waXBlVG8od3MsIHsgcHJldmVudEFib3J0OiB0cnVlLCBwcmV2
ZW50Q2FuY2VsOiB0cnVlLCBwcmV2ZW50Q2xvc2U6IHRydWUgfSksCisgICAgJ3BpcGVUbyBtdXN0
IHJlamVjdCB3aXRoIHRoZSBzYW1lIGVycm9yJykKKyAgICAudGhlbigoKSA9PiB7CisgICAgICBh
c3NlcnRfYXJyYXlfZXF1YWxzKHJzLmV2ZW50cywgW10pOworICAgICAgYXNzZXJ0X2FycmF5X2Vx
dWFscyh3cy5ldmVudHMsIFtdKTsKKyAgICB9KTsKKworfSwgJ0Vycm9ycyBtdXN0IGJlIHByb3Bh
Z2F0ZWQgZm9yd2FyZDogc3RhcnRzIGVycm9yZWQ7IHByZXZlbnRBYm9ydCA9IHRydWUsIHByZXZl
bnRDYW5jZWwgPSB0cnVlLCBwcmV2ZW50Q2xvc2UgPSB0cnVlJyk7CisKK3Byb21pc2VfdGVzdCh0
ID0+IHsKKworICBjb25zdCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKCk7CisKKyAgY29u
c3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSgpOworCisgIGNvbnN0IHBpcGVQcm9taXNl
ID0gcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCBycy5waXBlVG8od3MpLCAncGlw
ZVRvIG11c3QgcmVqZWN0IHdpdGggdGhlIHNhbWUgZXJyb3InKTsKKworICB0LnN0ZXBfdGltZW91
dCgoKSA9PiBycy5jb250cm9sbGVyLmVycm9yKGVycm9yMSksIDEwKTsKKworICByZXR1cm4gcGlw
ZVByb21pc2UudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhycy5ldmVudHNX
aXRob3V0UHVsbHMsIFtdKTsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWydh
Ym9ydCcsIGVycm9yMV0pOworICB9KTsKKworfSwgJ0Vycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQg
Zm9yd2FyZDogYmVjb21lcyBlcnJvcmVkIHdoaWxlIGVtcHR5OyBwcmV2ZW50QWJvcnQgPSBmYWxz
ZTsgZnVsZmlsbGVkIGFib3J0IHByb21pc2UnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworCisg
IGNvbnN0IHJzID0gcmVjb3JkaW5nUmVhZGFibGVTdHJlYW0oKTsKKworICBjb25zdCB3cyA9IHJl
Y29yZGluZ1dyaXRhYmxlU3RyZWFtKHsKKyAgICBhYm9ydCgpIHsKKyAgICAgIHRocm93IGVycm9y
MjsKKyAgICB9CisgIH0pOworCisgIGNvbnN0IHBpcGVQcm9taXNlID0gcHJvbWlzZV9yZWplY3Rz
X2V4YWN0bHkodCwgZXJyb3IyLCBycy5waXBlVG8od3MpLCAncGlwZVRvIG11c3QgcmVqZWN0IHdp
dGggdGhlIGFib3J0IGVycm9yJyk7CisKKyAgdC5zdGVwX3RpbWVvdXQoKCkgPT4gcnMuY29udHJv
bGxlci5lcnJvcihlcnJvcjEpLCAxMCk7CisKKyAgcmV0dXJuIHBpcGVQcm9taXNlLnRoZW4oKCkg
PT4geworICAgIGFzc2VydF9hcnJheV9lcXVhbHMocnMuZXZlbnRzV2l0aG91dFB1bGxzLCBbXSk7
CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsnYWJvcnQnLCBlcnJvcjFdKTsK
KyAgfSk7CisKK30sICdFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IGJlY29tZXMg
ZXJyb3JlZCB3aGlsZSBlbXB0eTsgcHJldmVudEFib3J0ID0gZmFsc2U7IHJlamVjdGVkIGFib3J0
IHByb21pc2UnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworCisgIGNvbnN0IHJzID0gcmVjb3Jk
aW5nUmVhZGFibGVTdHJlYW0oKTsKKworICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3Ry
ZWFtKCk7CisKKyAgY29uc3QgcGlwZVByb21pc2UgPSBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0
LCBlcnJvcjEsIHJzLnBpcGVUbyh3cywgeyBwcmV2ZW50QWJvcnQ6IHRydWUgfSksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BpcGVUbyBtdXN0IHJlamVj
dCB3aXRoIHRoZSBzYW1lIGVycm9yJyk7CisKKyAgdC5zdGVwX3RpbWVvdXQoKCkgPT4gcnMuY29u
dHJvbGxlci5lcnJvcihlcnJvcjEpLCAxMCk7CisKKyAgcmV0dXJuIHBpcGVQcm9taXNlLnRoZW4o
KCkgPT4geworICAgIGFzc2VydF9hcnJheV9lcXVhbHMocnMuZXZlbnRzV2l0aG91dFB1bGxzLCBb
XSk7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFtdKTsKKyAgfSk7CisKK30s
ICdFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IGJlY29tZXMgZXJyb3JlZCB3aGls
ZSBlbXB0eTsgcHJldmVudEFib3J0ID0gdHJ1ZScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisK
KyAgY29uc3QgcnMgPSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSgpOworCisgIGNvbnN0IHdzID0g
cmVjb3JkaW5nV3JpdGFibGVTdHJlYW0odW5kZWZpbmVkLCBuZXcgQ291bnRRdWV1aW5nU3RyYXRl
Z3koeyBoaWdoV2F0ZXJNYXJrOiAwIH0pKTsKKworICBjb25zdCBwaXBlUHJvbWlzZSA9IHByb21p
c2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMSwgcnMucGlwZVRvKHdzKSwgJ3BpcGVUbyBtdXN0
IHJlamVjdCB3aXRoIHRoZSBzYW1lIGVycm9yJyk7CisKKyAgdC5zdGVwX3RpbWVvdXQoKCkgPT4g
cnMuY29udHJvbGxlci5lcnJvcihlcnJvcjEpLCAxMCk7CisKKyAgcmV0dXJuIHBpcGVQcm9taXNl
LnRoZW4oKCkgPT4geworICAgIGFzc2VydF9hcnJheV9lcXVhbHMocnMuZXZlbnRzV2l0aG91dFB1
bGxzLCBbXSk7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsnYWJvcnQnLCBl
cnJvcjFdKTsKKyAgfSk7CisKK30sICdFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6
IGJlY29tZXMgZXJyb3JlZCB3aGlsZSBlbXB0eTsgZGVzdCBuZXZlciBkZXNpcmVzIGNodW5rczsg
JyArCisgICAncHJldmVudEFib3J0ID0gZmFsc2U7IGZ1bGZpbGxlZCBhYm9ydCBwcm9taXNlJyk7
CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKworICBjb25zdCBycyA9IHJlY29yZGluZ1JlYWRhYmxl
U3RyZWFtKCk7CisKKyAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSh7CisgICAg
YWJvcnQoKSB7CisgICAgICB0aHJvdyBlcnJvcjI7CisgICAgfQorICB9LCBuZXcgQ291bnRRdWV1
aW5nU3RyYXRlZ3koeyBoaWdoV2F0ZXJNYXJrOiAwIH0pKTsKKworICBjb25zdCBwaXBlUHJvbWlz
ZSA9IHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMiwgcnMucGlwZVRvKHdzKSwgJ3Bp
cGVUbyBtdXN0IHJlamVjdCB3aXRoIHRoZSBhYm9ydCBlcnJvcicpOworCisgIHQuc3RlcF90aW1l
b3V0KCgpID0+IHJzLmNvbnRyb2xsZXIuZXJyb3IoZXJyb3IxKSwgMTApOworCisgIHJldHVybiBw
aXBlUHJvbWlzZS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJzLmV2ZW50
c1dpdGhvdXRQdWxscywgW10pOworICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBb
J2Fib3J0JywgZXJyb3IxXSk7CisgIH0pOworCit9LCAnRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRl
ZCBmb3J3YXJkOiBiZWNvbWVzIGVycm9yZWQgd2hpbGUgZW1wdHk7IGRlc3QgbmV2ZXIgZGVzaXJl
cyBjaHVua3M7ICcgKworICAgJ3ByZXZlbnRBYm9ydCA9IGZhbHNlOyByZWplY3RlZCBhYm9ydCBw
cm9taXNlJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKworICBjb25zdCBycyA9IHJlY29yZGlu
Z1JlYWRhYmxlU3RyZWFtKCk7CisKKyAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVh
bSh1bmRlZmluZWQsIG5ldyBDb3VudFF1ZXVpbmdTdHJhdGVneSh7IGhpZ2hXYXRlck1hcms6IDAg
fSkpOworCisgIGNvbnN0IHBpcGVQcm9taXNlID0gcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwg
ZXJyb3IxLCBycy5waXBlVG8od3MsIHsgcHJldmVudEFib3J0OiB0cnVlIH0pLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwaXBlVG8gbXVzdCByZWplY3Qg
d2l0aCB0aGUgc2FtZSBlcnJvcicpOworCisgIHQuc3RlcF90aW1lb3V0KCgpID0+IHJzLmNvbnRy
b2xsZXIuZXJyb3IoZXJyb3IxKSwgMTApOworCisgIHJldHVybiBwaXBlUHJvbWlzZS50aGVuKCgp
ID0+IHsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJzLmV2ZW50c1dpdGhvdXRQdWxscywgW10p
OworICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbXSk7CisgIH0pOworCit9LCAn
RXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBiZWNvbWVzIGVycm9yZWQgd2hpbGUg
ZW1wdHk7IGRlc3QgbmV2ZXIgZGVzaXJlcyBjaHVua3M7ICcgKworICAgJ3ByZXZlbnRBYm9ydCA9
IHRydWUnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworCisgIGNvbnN0IHJzID0gcmVjb3JkaW5n
UmVhZGFibGVTdHJlYW0oKTsKKworICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFt
KCk7CisKKyAgY29uc3QgcGlwZVByb21pc2UgPSBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBl
cnJvcjEsIHJzLnBpcGVUbyh3cyksICdwaXBlVG8gbXVzdCByZWplY3Qgd2l0aCB0aGUgc2FtZSBl
cnJvcicpOworCisgIHQuc3RlcF90aW1lb3V0KCgpID0+IHsKKyAgICBycy5jb250cm9sbGVyLmVu
cXVldWUoJ0hlbGxvJyk7CisgICAgdC5zdGVwX3RpbWVvdXQoKCkgPT4gcnMuY29udHJvbGxlci5l
cnJvcihlcnJvcjEpLCAxMCk7CisgIH0sIDEwKTsKKworICByZXR1cm4gcGlwZVByb21pc2UudGhl
bigoKSA9PiB7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhycy5ldmVudHNXaXRob3V0UHVsbHMs
IFtdKTsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWyd3cml0ZScsICdIZWxs
bycsICdhYm9ydCcsIGVycm9yMV0pOworICB9KTsKKworfSwgJ0Vycm9ycyBtdXN0IGJlIHByb3Bh
Z2F0ZWQgZm9yd2FyZDogYmVjb21lcyBlcnJvcmVkIGFmdGVyIG9uZSBjaHVuazsgcHJldmVudEFi
b3J0ID0gZmFsc2U7IGZ1bGZpbGxlZCBhYm9ydCBwcm9taXNlJyk7CisKK3Byb21pc2VfdGVzdCh0
ID0+IHsKKworICBjb25zdCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKCk7CisKKyAgY29u
c3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSh7CisgICAgYWJvcnQoKSB7CisgICAgICB0
aHJvdyBlcnJvcjI7CisgICAgfQorICB9KTsKKworICBjb25zdCBwaXBlUHJvbWlzZSA9IHByb21p
c2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMiwgcnMucGlwZVRvKHdzKSwgJ3BpcGVUbyBtdXN0
IHJlamVjdCB3aXRoIHRoZSBhYm9ydCBlcnJvcicpOworCisgIHQuc3RlcF90aW1lb3V0KCgpID0+
IHsKKyAgICBycy5jb250cm9sbGVyLmVucXVldWUoJ0hlbGxvJyk7CisgICAgdC5zdGVwX3RpbWVv
dXQoKCkgPT4gcnMuY29udHJvbGxlci5lcnJvcihlcnJvcjEpLCAxMCk7CisgIH0sIDEwKTsKKwor
ICByZXR1cm4gcGlwZVByb21pc2UudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFs
cyhycy5ldmVudHNXaXRob3V0UHVsbHMsIFtdKTsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdz
LmV2ZW50cywgWyd3cml0ZScsICdIZWxsbycsICdhYm9ydCcsIGVycm9yMV0pOworICB9KTsKKwor
fSwgJ0Vycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogYmVjb21lcyBlcnJvcmVkIGFm
dGVyIG9uZSBjaHVuazsgcHJldmVudEFib3J0ID0gZmFsc2U7IHJlamVjdGVkIGFib3J0IHByb21p
c2UnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworCisgIGNvbnN0IHJzID0gcmVjb3JkaW5nUmVh
ZGFibGVTdHJlYW0oKTsKKworICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKCk7
CisKKyAgY29uc3QgcGlwZVByb21pc2UgPSBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJv
cjEsIHJzLnBpcGVUbyh3cywgeyBwcmV2ZW50QWJvcnQ6IHRydWUgfSksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BpcGVUbyBtdXN0IHJlamVjdCB3aXRo
IHRoZSBzYW1lIGVycm9yJyk7CisKKyAgdC5zdGVwX3RpbWVvdXQoKCkgPT4geworICAgIHJzLmNv
bnRyb2xsZXIuZW5xdWV1ZSgnSGVsbG8nKTsKKyAgICB0LnN0ZXBfdGltZW91dCgoKSA9PiBycy5j
b250cm9sbGVyLmVycm9yKGVycm9yMSksIDEwKTsKKyAgfSwgMTApOworCisgIHJldHVybiBwaXBl
UHJvbWlzZS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJzLmV2ZW50c1dp
dGhvdXRQdWxscywgW10pOworICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ3dy
aXRlJywgJ0hlbGxvJ10pOworICB9KTsKKworfSwgJ0Vycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQg
Zm9yd2FyZDogYmVjb21lcyBlcnJvcmVkIGFmdGVyIG9uZSBjaHVuazsgcHJldmVudEFib3J0ID0g
dHJ1ZScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisKKyAgY29uc3QgcnMgPSByZWNvcmRpbmdS
ZWFkYWJsZVN0cmVhbSgpOworCisgIGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0o
dW5kZWZpbmVkLCBuZXcgQ291bnRRdWV1aW5nU3RyYXRlZ3koeyBoaWdoV2F0ZXJNYXJrOiAwIH0p
KTsKKworICBjb25zdCBwaXBlUHJvbWlzZSA9IHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVy
cm9yMSwgcnMucGlwZVRvKHdzKSwgJ3BpcGVUbyBtdXN0IHJlamVjdCB3aXRoIHRoZSBzYW1lIGVy
cm9yJyk7CisKKyAgdC5zdGVwX3RpbWVvdXQoKCkgPT4geworICAgIHJzLmNvbnRyb2xsZXIuZW5x
dWV1ZSgnSGVsbG8nKTsKKyAgICB0LnN0ZXBfdGltZW91dCgoKSA9PiBycy5jb250cm9sbGVyLmVy
cm9yKGVycm9yMSksIDEwKTsKKyAgfSwgMTApOworCisgIHJldHVybiBwaXBlUHJvbWlzZS50aGVu
KCgpID0+IHsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJzLmV2ZW50c1dpdGhvdXRQdWxscywg
W10pOworICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ2Fib3J0JywgZXJyb3Ix
XSk7CisgIH0pOworCit9LCAnRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBiZWNv
bWVzIGVycm9yZWQgYWZ0ZXIgb25lIGNodW5rOyBkZXN0IG5ldmVyIGRlc2lyZXMgY2h1bmtzOyAn
ICsKKyAgICdwcmV2ZW50QWJvcnQgPSBmYWxzZTsgZnVsZmlsbGVkIGFib3J0IHByb21pc2UnKTsK
KworcHJvbWlzZV90ZXN0KHQgPT4geworCisgIGNvbnN0IHJzID0gcmVjb3JkaW5nUmVhZGFibGVT
dHJlYW0oKTsKKworICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKHsKKyAgICBh
Ym9ydCgpIHsKKyAgICAgIHRocm93IGVycm9yMjsKKyAgICB9CisgIH0sIG5ldyBDb3VudFF1ZXVp
bmdTdHJhdGVneSh7IGhpZ2hXYXRlck1hcms6IDAgfSkpOworCisgIGNvbnN0IHBpcGVQcm9taXNl
ID0gcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IyLCBycy5waXBlVG8od3MpLCAncGlw
ZVRvIG11c3QgcmVqZWN0IHdpdGggdGhlIGFib3J0IGVycm9yJyk7CisKKyAgdC5zdGVwX3RpbWVv
dXQoKCkgPT4geworICAgIHJzLmNvbnRyb2xsZXIuZW5xdWV1ZSgnSGVsbG8nKTsKKyAgICB0LnN0
ZXBfdGltZW91dCgoKSA9PiBycy5jb250cm9sbGVyLmVycm9yKGVycm9yMSksIDEwKTsKKyAgfSwg
MTApOworCisgIHJldHVybiBwaXBlUHJvbWlzZS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfYXJy
YXlfZXF1YWxzKHJzLmV2ZW50c1dpdGhvdXRQdWxscywgW10pOworICAgIGFzc2VydF9hcnJheV9l
cXVhbHMod3MuZXZlbnRzLCBbJ2Fib3J0JywgZXJyb3IxXSk7CisgIH0pOworCit9LCAnRXJyb3Jz
IG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBiZWNvbWVzIGVycm9yZWQgYWZ0ZXIgb25lIGNo
dW5rOyBkZXN0IG5ldmVyIGRlc2lyZXMgY2h1bmtzOyAnICsKKyAgICdwcmV2ZW50QWJvcnQgPSBm
YWxzZTsgcmVqZWN0ZWQgYWJvcnQgcHJvbWlzZScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisK
KyAgY29uc3QgcnMgPSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSgpOworCisgIGNvbnN0IHdzID0g
cmVjb3JkaW5nV3JpdGFibGVTdHJlYW0odW5kZWZpbmVkLCBuZXcgQ291bnRRdWV1aW5nU3RyYXRl
Z3koeyBoaWdoV2F0ZXJNYXJrOiAwIH0pKTsKKworICBjb25zdCBwaXBlUHJvbWlzZSA9IHByb21p
c2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMSwgcnMucGlwZVRvKHdzLCB7IHByZXZlbnRBYm9y
dDogdHJ1ZSB9KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAncGlwZVRvIG11c3QgcmVqZWN0IHdpdGggdGhlIHNhbWUgZXJyb3InKTsKKworICB0LnN0ZXBf
dGltZW91dCgoKSA9PiB7CisgICAgcnMuY29udHJvbGxlci5lbnF1ZXVlKCdIZWxsbycpOworICAg
IHQuc3RlcF90aW1lb3V0KCgpID0+IHJzLmNvbnRyb2xsZXIuZXJyb3IoZXJyb3IxKSwgMTApOwor
ICB9LCAxMCk7CisKKyAgcmV0dXJuIHBpcGVQcm9taXNlLnRoZW4oKCkgPT4geworICAgIGFzc2Vy
dF9hcnJheV9lcXVhbHMocnMuZXZlbnRzV2l0aG91dFB1bGxzLCBbXSk7CisgICAgYXNzZXJ0X2Fy
cmF5X2VxdWFscyh3cy5ldmVudHMsIFtdKTsKKyAgfSk7CisKK30sICdFcnJvcnMgbXVzdCBiZSBw
cm9wYWdhdGVkIGZvcndhcmQ6IGJlY29tZXMgZXJyb3JlZCBhZnRlciBvbmUgY2h1bms7IGRlc3Qg
bmV2ZXIgZGVzaXJlcyBjaHVua3M7ICcgKworICAgJ3ByZXZlbnRBYm9ydCA9IHRydWUnKTsKKwor
cHJvbWlzZV90ZXN0KHQgPT4geworCisgIGNvbnN0IHJzID0gcmVjb3JkaW5nUmVhZGFibGVTdHJl
YW0oKTsKKworICBsZXQgcmVzb2x2ZVdyaXRlQ2FsbGVkOworICBjb25zdCB3cml0ZUNhbGxlZFBy
b21pc2UgPSBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKKyAgICByZXNvbHZlV3JpdGVDYWxsZWQg
PSByZXNvbHZlOworICB9KTsKKworICBsZXQgcmVzb2x2ZVdyaXRlUHJvbWlzZTsKKyAgY29uc3Qg
d3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSh7CisgICAgd3JpdGUoKSB7CisgICAgICByZXNv
bHZlV3JpdGVDYWxsZWQoKTsKKworICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4g
eworICAgICAgICByZXNvbHZlV3JpdGVQcm9taXNlID0gcmVzb2x2ZTsKKyAgICAgIH0pOworICAg
IH0KKyAgfSk7CisKKyAgbGV0IHBpcGVDb21wbGV0ZSA9IGZhbHNlOworICBjb25zdCBwaXBlUHJv
bWlzZSA9IHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMSwgcnMucGlwZVRvKHdzKSku
dGhlbigoKSA9PiB7CisgICAgcGlwZUNvbXBsZXRlID0gdHJ1ZTsKKyAgfSk7CisKKyAgcnMuY29u
dHJvbGxlci5lbnF1ZXVlKCdhJyk7CisKKyAgcmV0dXJuIHdyaXRlQ2FsbGVkUHJvbWlzZS50aGVu
KCgpID0+IHsKKyAgICBycy5jb250cm9sbGVyLmVycm9yKGVycm9yMSk7CisKKyAgICAvLyBGbHVz
aCBhc3luYyBldmVudHMgYW5kIHZlcmlmeSB0aGF0IG5vIHNodXRkb3duIG9jY3Vycy4KKyAgICBy
ZXR1cm4gZmx1c2hBc3luY0V2ZW50cygpOworICB9KS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRf
YXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWyd3cml0ZScsICdhJ10pOyAvLyBubyAnYWJvcnQnCisg
ICAgYXNzZXJ0X2VxdWFscyhwaXBlQ29tcGxldGUsIGZhbHNlLCAndGhlIHBpcGUgbXVzdCBub3Qg
YmUgY29tcGxldGUnKTsKKworICAgIHJlc29sdmVXcml0ZVByb21pc2UoKTsKKworICAgIHJldHVy
biBwaXBlUHJvbWlzZS50aGVuKCgpID0+IHsKKyAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3Mu
ZXZlbnRzLCBbJ3dyaXRlJywgJ2EnLCAnYWJvcnQnLCBlcnJvcjFdKTsKKyAgICB9KTsKKyAgfSk7
CisKK30sICdFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHNodXRkb3duIG11c3Qg
bm90IG9jY3VyIHVudGlsIHRoZSBmaW5hbCB3cml0ZSBjb21wbGV0ZXMnKTsKKworcHJvbWlzZV90
ZXN0KHQgPT4geworCisgIGNvbnN0IHJzID0gcmVjb3JkaW5nUmVhZGFibGVTdHJlYW0oKTsKKwor
ICBsZXQgcmVzb2x2ZVdyaXRlQ2FsbGVkOworICBjb25zdCB3cml0ZUNhbGxlZFByb21pc2UgPSBu
ZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKKyAgICByZXNvbHZlV3JpdGVDYWxsZWQgPSByZXNvbHZl
OworICB9KTsKKworICBsZXQgcmVzb2x2ZVdyaXRlUHJvbWlzZTsKKyAgY29uc3Qgd3MgPSByZWNv
cmRpbmdXcml0YWJsZVN0cmVhbSh7CisgICAgd3JpdGUoKSB7CisgICAgICByZXNvbHZlV3JpdGVD
YWxsZWQoKTsKKworICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4geworICAgICAg
ICByZXNvbHZlV3JpdGVQcm9taXNlID0gcmVzb2x2ZTsKKyAgICAgIH0pOworICAgIH0KKyAgfSk7
CisKKyAgbGV0IHBpcGVDb21wbGV0ZSA9IGZhbHNlOworICBjb25zdCBwaXBlUHJvbWlzZSA9IHBy
b21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMSwgcnMucGlwZVRvKHdzLCB7IHByZXZlbnRB
Ym9ydDogdHJ1ZSB9KSkudGhlbigoKSA9PiB7CisgICAgcGlwZUNvbXBsZXRlID0gdHJ1ZTsKKyAg
fSk7CisKKyAgcnMuY29udHJvbGxlci5lbnF1ZXVlKCdhJyk7CisKKyAgcmV0dXJuIHdyaXRlQ2Fs
bGVkUHJvbWlzZS50aGVuKCgpID0+IHsKKyAgICBycy5jb250cm9sbGVyLmVycm9yKGVycm9yMSk7
CisKKyAgICAvLyBGbHVzaCBhc3luYyBldmVudHMgYW5kIHZlcmlmeSB0aGF0IG5vIHNodXRkb3du
IG9jY3Vycy4KKyAgICByZXR1cm4gZmx1c2hBc3luY0V2ZW50cygpOworICB9KS50aGVuKCgpID0+
IHsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWyd3cml0ZScsICdhJ10pOyAv
LyBubyAnYWJvcnQnCisgICAgYXNzZXJ0X2VxdWFscyhwaXBlQ29tcGxldGUsIGZhbHNlLCAndGhl
IHBpcGUgbXVzdCBub3QgYmUgY29tcGxldGUnKTsKKworICAgIHJlc29sdmVXcml0ZVByb21pc2Uo
KTsKKyAgICByZXR1cm4gcGlwZVByb21pc2U7CisgIH0pLnRoZW4oKCkgPT4gZmx1c2hBc3luY0V2
ZW50cygpKS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywg
Wyd3cml0ZScsICdhJ10pOyAvLyBubyAnYWJvcnQnCisgIH0pOworCit9LCAnRXJyb3JzIG11c3Qg
YmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBzaHV0ZG93biBtdXN0IG5vdCBvY2N1ciB1bnRpbCB0aGUg
ZmluYWwgd3JpdGUgY29tcGxldGVzOyBwcmV2ZW50QWJvcnQgPSB0cnVlJyk7CisKK3Byb21pc2Vf
dGVzdCh0ID0+IHsKKworICBjb25zdCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKCk7CisK
KyAgbGV0IHJlc29sdmVXcml0ZUNhbGxlZDsKKyAgY29uc3Qgd3JpdGVDYWxsZWRQcm9taXNlID0g
bmV3IFByb21pc2UocmVzb2x2ZSA9PiB7CisgICAgcmVzb2x2ZVdyaXRlQ2FsbGVkID0gcmVzb2x2
ZTsKKyAgfSk7CisKKyAgbGV0IHJlc29sdmVXcml0ZVByb21pc2U7CisgIGNvbnN0IHdzID0gcmVj
b3JkaW5nV3JpdGFibGVTdHJlYW0oeworICAgIHdyaXRlKCkgeworICAgICAgcmVzb2x2ZVdyaXRl
Q2FsbGVkKCk7CisKKyAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKKyAgICAg
ICAgcmVzb2x2ZVdyaXRlUHJvbWlzZSA9IHJlc29sdmU7CisgICAgICB9KTsKKyAgICB9CisgIH0s
IG5ldyBDb3VudFF1ZXVpbmdTdHJhdGVneSh7IGhpZ2hXYXRlck1hcms6IDIgfSkpOworCisgIGxl
dCBwaXBlQ29tcGxldGUgPSBmYWxzZTsKKyAgY29uc3QgcGlwZVByb21pc2UgPSBwcm9taXNlX3Jl
amVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIHJzLnBpcGVUbyh3cykpLnRoZW4oKCkgPT4geworICAg
IHBpcGVDb21wbGV0ZSA9IHRydWU7CisgIH0pOworCisgIHJzLmNvbnRyb2xsZXIuZW5xdWV1ZSgn
YScpOworICBycy5jb250cm9sbGVyLmVucXVldWUoJ2InKTsKKworICByZXR1cm4gd3JpdGVDYWxs
ZWRQcm9taXNlLnRoZW4oKCkgPT4gZmx1c2hBc3luY0V2ZW50cygpKS50aGVuKCgpID0+IHsKKyAg
ICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWyd3cml0ZScsICdhJ10sCisgICAgICAn
dGhlIGZpcnN0IGNodW5rIG11c3QgaGF2ZSBiZWVuIHdyaXR0ZW4sIGJ1dCBhYm9ydCBtdXN0IG5v
dCBoYXZlIGhhcHBlbmVkIHlldCcpOworICAgIGFzc2VydF9mYWxzZShwaXBlQ29tcGxldGUsICd0
aGUgcGlwZSBzaG91bGQgbm90IGNvbXBsZXRlIHdoaWxlIHRoZSBmaXJzdCB3cml0ZSBpcyBwZW5k
aW5nJyk7CisKKyAgICBycy5jb250cm9sbGVyLmVycm9yKGVycm9yMSk7CisgICAgcmVzb2x2ZVdy
aXRlUHJvbWlzZSgpOworICAgIHJldHVybiBmbHVzaEFzeW5jRXZlbnRzKCk7CisgIH0pLnRoZW4o
KCkgPT4geworICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ3dyaXRlJywgJ2En
LCAnd3JpdGUnLCAnYiddLAorICAgICAgJ3RoZSBzZWNvbmQgY2h1bmsgbXVzdCBoYXZlIGJlZW4g
d3JpdHRlbiwgYnV0IGFib3J0IG11c3Qgbm90IGhhdmUgaGFwcGVuZWQgeWV0Jyk7CisgICAgYXNz
ZXJ0X2ZhbHNlKHBpcGVDb21wbGV0ZSwgJ3RoZSBwaXBlIHNob3VsZCBub3QgY29tcGxldGUgd2hp
bGUgdGhlIHNlY29uZCB3cml0ZSBpcyBwZW5kaW5nJyk7CisKKyAgICByZXNvbHZlV3JpdGVQcm9t
aXNlKCk7CisgICAgcmV0dXJuIHBpcGVQcm9taXNlOworICB9KS50aGVuKCgpID0+IHsKKyAgICBh
c3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWyd3cml0ZScsICdhJywgJ3dyaXRlJywgJ2In
LCAnYWJvcnQnLCBlcnJvcjFdLAorICAgICAgJ2FsbCBjaHVua3MgbXVzdCBoYXZlIGJlZW4gd3Jp
dHRlbiBhbmQgYWJvcnQgbXVzdCBoYXZlIGhhcHBlbmVkJyk7CisgIH0pOworCit9LCAnRXJyb3Jz
IG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBzaHV0ZG93biBtdXN0IG5vdCBvY2N1ciB1bnRp
bCB0aGUgZmluYWwgd3JpdGUgY29tcGxldGVzOyBiZWNvbWVzIGVycm9yZWQgYWZ0ZXIgZmlyc3Qg
d3JpdGUnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworCisgIGNvbnN0IHJzID0gcmVjb3JkaW5n
UmVhZGFibGVTdHJlYW0oKTsKKworICBsZXQgcmVzb2x2ZVdyaXRlQ2FsbGVkOworICBjb25zdCB3
cml0ZUNhbGxlZFByb21pc2UgPSBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKKyAgICByZXNvbHZl
V3JpdGVDYWxsZWQgPSByZXNvbHZlOworICB9KTsKKworICBsZXQgcmVzb2x2ZVdyaXRlUHJvbWlz
ZTsKKyAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSh7CisgICAgd3JpdGUoKSB7
CisgICAgICByZXNvbHZlV3JpdGVDYWxsZWQoKTsKKworICAgICAgcmV0dXJuIG5ldyBQcm9taXNl
KHJlc29sdmUgPT4geworICAgICAgICByZXNvbHZlV3JpdGVQcm9taXNlID0gcmVzb2x2ZTsKKyAg
ICAgIH0pOworICAgIH0KKyAgfSwgbmV3IENvdW50UXVldWluZ1N0cmF0ZWd5KHsgaGlnaFdhdGVy
TWFyazogMiB9KSk7CisKKyAgbGV0IHBpcGVDb21wbGV0ZSA9IGZhbHNlOworICBjb25zdCBwaXBl
UHJvbWlzZSA9IHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMSwgcnMucGlwZVRvKHdz
LCB7IHByZXZlbnRBYm9ydDogdHJ1ZSB9KSkudGhlbigoKSA9PiB7CisgICAgcGlwZUNvbXBsZXRl
ID0gdHJ1ZTsKKyAgfSk7CisKKyAgcnMuY29udHJvbGxlci5lbnF1ZXVlKCdhJyk7CisgIHJzLmNv
bnRyb2xsZXIuZW5xdWV1ZSgnYicpOworCisgIHJldHVybiB3cml0ZUNhbGxlZFByb21pc2UudGhl
bigoKSA9PiBmbHVzaEFzeW5jRXZlbnRzKCkpLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9hcnJh
eV9lcXVhbHMod3MuZXZlbnRzLCBbJ3dyaXRlJywgJ2EnXSwKKyAgICAgICd0aGUgZmlyc3QgY2h1
bmsgbXVzdCBoYXZlIGJlZW4gd3JpdHRlbiwgYnV0IGFib3J0IG11c3Qgbm90IGhhdmUgaGFwcGVu
ZWQnKTsKKyAgICBhc3NlcnRfZmFsc2UocGlwZUNvbXBsZXRlLCAndGhlIHBpcGUgc2hvdWxkIG5v
dCBjb21wbGV0ZSB3aGlsZSB0aGUgZmlyc3Qgd3JpdGUgaXMgcGVuZGluZycpOworCisgICAgcnMu
Y29udHJvbGxlci5lcnJvcihlcnJvcjEpOworICAgIHJlc29sdmVXcml0ZVByb21pc2UoKTsKKyAg
fSkudGhlbigoKSA9PiBmbHVzaEFzeW5jRXZlbnRzKCkpLnRoZW4oKCkgPT4geworICAgIGFzc2Vy
dF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ3dyaXRlJywgJ2EnLCAnd3JpdGUnLCAnYiddLAor
ICAgICAgJ3RoZSBzZWNvbmQgY2h1bmsgbXVzdCBoYXZlIGJlZW4gd3JpdHRlbiwgYnV0IGFib3J0
IG11c3Qgbm90IGhhdmUgaGFwcGVuZWQnKTsKKyAgICBhc3NlcnRfZmFsc2UocGlwZUNvbXBsZXRl
LCAndGhlIHBpcGUgc2hvdWxkIG5vdCBjb21wbGV0ZSB3aGlsZSB0aGUgc2Vjb25kIHdyaXRlIGlz
IHBlbmRpbmcnKTsKKworICAgIHJlc29sdmVXcml0ZVByb21pc2UoKTsKKyAgICByZXR1cm4gcGlw
ZVByb21pc2U7CisgIH0pLnRoZW4oKCkgPT4gZmx1c2hBc3luY0V2ZW50cygpKS50aGVuKCgpID0+
IHsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWyd3cml0ZScsICdhJywgJ3dy
aXRlJywgJ2InXSwKKyAgICAgICdhbGwgY2h1bmtzIG11c3QgaGF2ZSBiZWVuIHdyaXR0ZW4sIGJ1
dCBhYm9ydCBtdXN0IG5vdCBoYXZlIGhhcHBlbmVkJyk7CisgIH0pOworCit9LCAnRXJyb3JzIG11
c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBzaHV0ZG93biBtdXN0IG5vdCBvY2N1ciB1bnRpbCB0
aGUgZmluYWwgd3JpdGUgY29tcGxldGVzOyBiZWNvbWVzIGVycm9yZWQgYWZ0ZXIgZmlyc3Qgd3Jp
dGU7IHByZXZlbnRBYm9ydCA9IHRydWUnKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvZXJyb3ItcHJvcGFnYXRp
b24tZm9yd2FyZC5hbnkud29ya2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvZXJyb3ItcHJvcGFnYXRpb24t
Zm9yd2FyZC5hbnkud29ya2VyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zY2VlZTI3ZDBiOGIz
NTRmZjlkOGUyOWE0MDlmNmYyOTBkMDZhYTBhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9lcnJvci1w
cm9wYWdhdGlvbi1mb3J3YXJkLmFueS53b3JrZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMzQg
QEAKKworRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHN0YXJ0cyBlcnJv
cmVkOyBwcmV2ZW50QWJvcnQgPSBmYWxzZTsgZnVsZmlsbGVkIGFib3J0IHByb21pc2UgQ2FuJ3Qg
ZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFn
YXRlZCBmb3J3YXJkOiBzdGFydHMgZXJyb3JlZDsgcHJldmVudEFib3J0ID0gZmFsc2U7IHJlamVj
dGVkIGFib3J0IHByb21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZB
SUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBzdGFydHMgZXJyb3JlZDsgcHJl
dmVudEFib3J0ID0gdW5kZWZpbmVkIChmYWxzeSk7IGZ1bGZpbGxlZCBhYm9ydCBwcm9taXNlIENh
bid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIEVycm9ycyBtdXN0IGJlIHBy
b3BhZ2F0ZWQgZm9yd2FyZDogc3RhcnRzIGVycm9yZWQ7IHByZXZlbnRBYm9ydCA9IG51bGwgKGZh
bHN5KTsgZnVsZmlsbGVkIGFib3J0IHByb21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFi
bGVTdHJlYW0KK0ZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBzdGFydHMg
ZXJyb3JlZDsgcHJldmVudEFib3J0ID0gZmFsc2UgKGZhbHN5KTsgZnVsZmlsbGVkIGFib3J0IHBy
b21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgRXJyb3JzIG11
c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBzdGFydHMgZXJyb3JlZDsgcHJldmVudEFib3J0ID0g
MCAoZmFsc3kpOyBmdWxmaWxsZWQgYWJvcnQgcHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBX
cml0YWJsZVN0cmVhbQorRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHN0
YXJ0cyBlcnJvcmVkOyBwcmV2ZW50QWJvcnQgPSAtMCAoZmFsc3kpOyBmdWxmaWxsZWQgYWJvcnQg
cHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBFcnJvcnMg
bXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHN0YXJ0cyBlcnJvcmVkOyBwcmV2ZW50QWJvcnQg
PSBOYU4gKGZhbHN5KTsgZnVsZmlsbGVkIGFib3J0IHByb21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJs
ZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJk
OiBzdGFydHMgZXJyb3JlZDsgcHJldmVudEFib3J0ID0gIChmYWxzeSk7IGZ1bGZpbGxlZCBhYm9y
dCBwcm9taXNlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIEVycm9y
cyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc3RhcnRzIGVycm9yZWQ7IHByZXZlbnRBYm9y
dCA9IHRydWUgKHRydXRoeSkgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZB
SUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBzdGFydHMgZXJyb3JlZDsgcHJl
dmVudEFib3J0ID0gYSAodHJ1dGh5KSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVh
bQorRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHN0YXJ0cyBlcnJvcmVk
OyBwcmV2ZW50QWJvcnQgPSAxICh0cnV0aHkpIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxl
U3RyZWFtCitGQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc3RhcnRzIGVy
cm9yZWQ7IHByZXZlbnRBYm9ydCA9IFN5bWJvbCgpICh0cnV0aHkpIENhbid0IGZpbmQgdmFyaWFi
bGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2Fy
ZDogc3RhcnRzIGVycm9yZWQ7IHByZXZlbnRBYm9ydCA9IFtvYmplY3QgT2JqZWN0XSAodHJ1dGh5
KSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBFcnJvcnMgbXVzdCBi
ZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHN0YXJ0cyBlcnJvcmVkOyBwcmV2ZW50QWJvcnQgPSB0cnVl
LCBwcmV2ZW50Q2FuY2VsID0gdHJ1ZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVh
bQorRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHN0YXJ0cyBlcnJvcmVk
OyBwcmV2ZW50QWJvcnQgPSB0cnVlLCBwcmV2ZW50Q2FuY2VsID0gdHJ1ZSwgcHJldmVudENsb3Nl
ID0gdHJ1ZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBFcnJvcnMg
bXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IGJlY29tZXMgZXJyb3JlZCB3aGlsZSBlbXB0eTsg
cHJldmVudEFib3J0ID0gZmFsc2U7IGZ1bGZpbGxlZCBhYm9ydCBwcm9taXNlIENhbid0IGZpbmQg
dmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQg
Zm9yd2FyZDogYmVjb21lcyBlcnJvcmVkIHdoaWxlIGVtcHR5OyBwcmV2ZW50QWJvcnQgPSBmYWxz
ZTsgcmVqZWN0ZWQgYWJvcnQgcHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0
cmVhbQorRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IGJlY29tZXMgZXJy
b3JlZCB3aGlsZSBlbXB0eTsgcHJldmVudEFib3J0ID0gdHJ1ZSBDYW4ndCBmaW5kIHZhcmlhYmxl
OiBXcml0YWJsZVN0cmVhbQorRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6
IGJlY29tZXMgZXJyb3JlZCB3aGlsZSBlbXB0eTsgZGVzdCBuZXZlciBkZXNpcmVzIGNodW5rczsg
cHJldmVudEFib3J0ID0gZmFsc2U7IGZ1bGZpbGxlZCBhYm9ydCBwcm9taXNlIENhbid0IGZpbmQg
dmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQg
Zm9yd2FyZDogYmVjb21lcyBlcnJvcmVkIHdoaWxlIGVtcHR5OyBkZXN0IG5ldmVyIGRlc2lyZXMg
Y2h1bmtzOyBwcmV2ZW50QWJvcnQgPSBmYWxzZTsgcmVqZWN0ZWQgYWJvcnQgcHJvbWlzZSBDYW4n
dCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9w
YWdhdGVkIGZvcndhcmQ6IGJlY29tZXMgZXJyb3JlZCB3aGlsZSBlbXB0eTsgZGVzdCBuZXZlciBk
ZXNpcmVzIGNodW5rczsgcHJldmVudEFib3J0ID0gdHJ1ZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBX
cml0YWJsZVN0cmVhbQorRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IGJl
Y29tZXMgZXJyb3JlZCBhZnRlciBvbmUgY2h1bms7IHByZXZlbnRBYm9ydCA9IGZhbHNlOyBmdWxm
aWxsZWQgYWJvcnQgcHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQor
RkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IGJlY29tZXMgZXJyb3JlZCBh
ZnRlciBvbmUgY2h1bms7IHByZXZlbnRBYm9ydCA9IGZhbHNlOyByZWplY3RlZCBhYm9ydCBwcm9t
aXNlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIEVycm9ycyBtdXN0
IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogYmVjb21lcyBlcnJvcmVkIGFmdGVyIG9uZSBjaHVuazsg
cHJldmVudEFib3J0ID0gdHJ1ZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQor
RkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IGJlY29tZXMgZXJyb3JlZCBh
ZnRlciBvbmUgY2h1bms7IGRlc3QgbmV2ZXIgZGVzaXJlcyBjaHVua3M7IHByZXZlbnRBYm9ydCA9
IGZhbHNlOyBmdWxmaWxsZWQgYWJvcnQgcHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0
YWJsZVN0cmVhbQorRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IGJlY29t
ZXMgZXJyb3JlZCBhZnRlciBvbmUgY2h1bms7IGRlc3QgbmV2ZXIgZGVzaXJlcyBjaHVua3M7IHBy
ZXZlbnRBYm9ydCA9IGZhbHNlOyByZWplY3RlZCBhYm9ydCBwcm9taXNlIENhbid0IGZpbmQgdmFy
aWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9y
d2FyZDogYmVjb21lcyBlcnJvcmVkIGFmdGVyIG9uZSBjaHVuazsgZGVzdCBuZXZlciBkZXNpcmVz
IGNodW5rczsgcHJldmVudEFib3J0ID0gdHJ1ZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJs
ZVN0cmVhbQorRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHNodXRkb3du
IG11c3Qgbm90IG9jY3VyIHVudGlsIHRoZSBmaW5hbCB3cml0ZSBjb21wbGV0ZXMgQ2FuJ3QgZmlu
ZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRl
ZCBmb3J3YXJkOiBzaHV0ZG93biBtdXN0IG5vdCBvY2N1ciB1bnRpbCB0aGUgZmluYWwgd3JpdGUg
Y29tcGxldGVzOyBwcmV2ZW50QWJvcnQgPSB0cnVlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRh
YmxlU3RyZWFtCitGQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc2h1dGRv
d24gbXVzdCBub3Qgb2NjdXIgdW50aWwgdGhlIGZpbmFsIHdyaXRlIGNvbXBsZXRlczsgYmVjb21l
cyBlcnJvcmVkIGFmdGVyIGZpcnN0IHdyaXRlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxl
U3RyZWFtCitGQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc2h1dGRvd24g
bXVzdCBub3Qgb2NjdXIgdW50aWwgdGhlIGZpbmFsIHdyaXRlIGNvbXBsZXRlczsgYmVjb21lcyBl
cnJvcmVkIGFmdGVyIGZpcnN0IHdyaXRlOyBwcmV2ZW50QWJvcnQgPSB0cnVlIENhbid0IGZpbmQg
dmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvZXJyb3ItcHJvcGFnYXRp
b24tZm9yd2FyZC5hbnkud29ya2VyLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Vycm9yLXByb3BhZ2F0aW9uLWZvcndhcmQu
YW55Lndvcmtlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzODI5MTM1MjhlNjkzYjNhNWQ1NmM2NjBhNDUw
NjA5ODBiNTQ4YzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Vycm9yLXByb3BhZ2F0aW9uLWZvcndh
cmQuYW55Lndvcmtlci5odG1sCkBAIC0wLDAgKzEgQEAKKzwhLS0gVGhpcyBmaWxlIGlzIHJlcXVp
cmVkIGZvciBXZWJLaXQgdGVzdCBpbmZyYXN0cnVjdHVyZSB0byBydW4gdGhlIHRlbXBsYXRlZCB0
ZXN0IC0tPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvZXJyb3It
cHJvcGFnYXRpb24tZm9yd2FyZC5kZWRpY2F0ZWR3b3JrZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9lcnJv
ci1wcm9wYWdhdGlvbi1mb3J3YXJkLmRlZGljYXRlZHdvcmtlci1leHBlY3RlZC50eHQKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNjZWVlMjdkMGI4YjM1NGZmOWQ4ZTI5YTQwOWY2ZjI5
MGQwNmFhMGEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGlu
Zy9lcnJvci1wcm9wYWdhdGlvbi1mb3J3YXJkLmRlZGljYXRlZHdvcmtlci1leHBlY3RlZC50eHQK
KysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi0KLUZBSUwgRXJyb3JzIG11c3QgYmUgcHJv
cGFnYXRlZCBmb3J3YXJkOiBzdGFydHMgZXJyb3JlZDsgcHJldmVudEFib3J0ID0gZmFsc2U7IGZ1
bGZpbGxlZCBhYm9ydCBwcm9taXNlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFt
Ci1GQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc3RhcnRzIGVycm9yZWQ7
IHByZXZlbnRBYm9ydCA9IGZhbHNlOyByZWplY3RlZCBhYm9ydCBwcm9taXNlIENhbid0IGZpbmQg
dmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQg
Zm9yd2FyZDogc3RhcnRzIGVycm9yZWQ7IHByZXZlbnRBYm9ydCA9IHVuZGVmaW5lZCAoZmFsc3kp
OyBmdWxmaWxsZWQgYWJvcnQgcHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0
cmVhbQotRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHN0YXJ0cyBlcnJv
cmVkOyBwcmV2ZW50QWJvcnQgPSBudWxsIChmYWxzeSk7IGZ1bGZpbGxlZCBhYm9ydCBwcm9taXNl
IENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIEVycm9ycyBtdXN0IGJl
IHByb3BhZ2F0ZWQgZm9yd2FyZDogc3RhcnRzIGVycm9yZWQ7IHByZXZlbnRBYm9ydCA9IGZhbHNl
IChmYWxzeSk7IGZ1bGZpbGxlZCBhYm9ydCBwcm9taXNlIENhbid0IGZpbmQgdmFyaWFibGU6IFdy
aXRhYmxlU3RyZWFtCi1GQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc3Rh
cnRzIGVycm9yZWQ7IHByZXZlbnRBYm9ydCA9IDAgKGZhbHN5KTsgZnVsZmlsbGVkIGFib3J0IHBy
b21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgRXJyb3JzIG11
c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBzdGFydHMgZXJyb3JlZDsgcHJldmVudEFib3J0ID0g
LTAgKGZhbHN5KTsgZnVsZmlsbGVkIGFib3J0IHByb21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTog
V3JpdGFibGVTdHJlYW0KLUZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBz
dGFydHMgZXJyb3JlZDsgcHJldmVudEFib3J0ID0gTmFOIChmYWxzeSk7IGZ1bGZpbGxlZCBhYm9y
dCBwcm9taXNlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIEVycm9y
cyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc3RhcnRzIGVycm9yZWQ7IHByZXZlbnRBYm9y
dCA9ICAoZmFsc3kpOyBmdWxmaWxsZWQgYWJvcnQgcHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxl
OiBXcml0YWJsZVN0cmVhbQotRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6
IHN0YXJ0cyBlcnJvcmVkOyBwcmV2ZW50QWJvcnQgPSB0cnVlICh0cnV0aHkpIENhbid0IGZpbmQg
dmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQg
Zm9yd2FyZDogc3RhcnRzIGVycm9yZWQ7IHByZXZlbnRBYm9ydCA9IGEgKHRydXRoeSkgQ2FuJ3Qg
ZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFn
YXRlZCBmb3J3YXJkOiBzdGFydHMgZXJyb3JlZDsgcHJldmVudEFib3J0ID0gMSAodHJ1dGh5KSBD
YW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBFcnJvcnMgbXVzdCBiZSBw
cm9wYWdhdGVkIGZvcndhcmQ6IHN0YXJ0cyBlcnJvcmVkOyBwcmV2ZW50QWJvcnQgPSBTeW1ib2wo
KSAodHJ1dGh5KSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBFcnJv
cnMgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHN0YXJ0cyBlcnJvcmVkOyBwcmV2ZW50QWJv
cnQgPSBbb2JqZWN0IE9iamVjdF0gKHRydXRoeSkgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFi
bGVTdHJlYW0KLUZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBzdGFydHMg
ZXJyb3JlZDsgcHJldmVudEFib3J0ID0gdHJ1ZSwgcHJldmVudENhbmNlbCA9IHRydWUgQ2FuJ3Qg
ZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFn
YXRlZCBmb3J3YXJkOiBzdGFydHMgZXJyb3JlZDsgcHJldmVudEFib3J0ID0gdHJ1ZSwgcHJldmVu
dENhbmNlbCA9IHRydWUsIHByZXZlbnRDbG9zZSA9IHRydWUgQ2FuJ3QgZmluZCB2YXJpYWJsZTog
V3JpdGFibGVTdHJlYW0KLUZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBi
ZWNvbWVzIGVycm9yZWQgd2hpbGUgZW1wdHk7IHByZXZlbnRBYm9ydCA9IGZhbHNlOyBmdWxmaWxs
ZWQgYWJvcnQgcHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJ
TCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IGJlY29tZXMgZXJyb3JlZCB3aGls
ZSBlbXB0eTsgcHJldmVudEFib3J0ID0gZmFsc2U7IHJlamVjdGVkIGFib3J0IHByb21pc2UgQ2Fu
J3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgRXJyb3JzIG11c3QgYmUgcHJv
cGFnYXRlZCBmb3J3YXJkOiBiZWNvbWVzIGVycm9yZWQgd2hpbGUgZW1wdHk7IHByZXZlbnRBYm9y
dCA9IHRydWUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgRXJyb3Jz
IG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBiZWNvbWVzIGVycm9yZWQgd2hpbGUgZW1wdHk7
IGRlc3QgbmV2ZXIgZGVzaXJlcyBjaHVua3M7IHByZXZlbnRBYm9ydCA9IGZhbHNlOyBmdWxmaWxs
ZWQgYWJvcnQgcHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJ
TCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IGJlY29tZXMgZXJyb3JlZCB3aGls
ZSBlbXB0eTsgZGVzdCBuZXZlciBkZXNpcmVzIGNodW5rczsgcHJldmVudEFib3J0ID0gZmFsc2U7
IHJlamVjdGVkIGFib3J0IHByb21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJl
YW0KLUZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBiZWNvbWVzIGVycm9y
ZWQgd2hpbGUgZW1wdHk7IGRlc3QgbmV2ZXIgZGVzaXJlcyBjaHVua3M7IHByZXZlbnRBYm9ydCA9
IHRydWUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgRXJyb3JzIG11
c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBiZWNvbWVzIGVycm9yZWQgYWZ0ZXIgb25lIGNodW5r
OyBwcmV2ZW50QWJvcnQgPSBmYWxzZTsgZnVsZmlsbGVkIGFib3J0IHByb21pc2UgQ2FuJ3QgZmlu
ZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRl
ZCBmb3J3YXJkOiBiZWNvbWVzIGVycm9yZWQgYWZ0ZXIgb25lIGNodW5rOyBwcmV2ZW50QWJvcnQg
PSBmYWxzZTsgcmVqZWN0ZWQgYWJvcnQgcHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0
YWJsZVN0cmVhbQotRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IGJlY29t
ZXMgZXJyb3JlZCBhZnRlciBvbmUgY2h1bms7IHByZXZlbnRBYm9ydCA9IHRydWUgQ2FuJ3QgZmlu
ZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRl
ZCBmb3J3YXJkOiBiZWNvbWVzIGVycm9yZWQgYWZ0ZXIgb25lIGNodW5rOyBkZXN0IG5ldmVyIGRl
c2lyZXMgY2h1bmtzOyBwcmV2ZW50QWJvcnQgPSBmYWxzZTsgZnVsZmlsbGVkIGFib3J0IHByb21p
c2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgRXJyb3JzIG11c3Qg
YmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBiZWNvbWVzIGVycm9yZWQgYWZ0ZXIgb25lIGNodW5rOyBk
ZXN0IG5ldmVyIGRlc2lyZXMgY2h1bmtzOyBwcmV2ZW50QWJvcnQgPSBmYWxzZTsgcmVqZWN0ZWQg
YWJvcnQgcHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBF
cnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IGJlY29tZXMgZXJyb3JlZCBhZnRlciBv
bmUgY2h1bms7IGRlc3QgbmV2ZXIgZGVzaXJlcyBjaHVua3M7IHByZXZlbnRBYm9ydCA9IHRydWUg
Q2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgRXJyb3JzIG11c3QgYmUg
cHJvcGFnYXRlZCBmb3J3YXJkOiBzaHV0ZG93biBtdXN0IG5vdCBvY2N1ciB1bnRpbCB0aGUgZmlu
YWwgd3JpdGUgY29tcGxldGVzIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1G
QUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc2h1dGRvd24gbXVzdCBub3Qg
b2NjdXIgdW50aWwgdGhlIGZpbmFsIHdyaXRlIGNvbXBsZXRlczsgcHJldmVudEFib3J0ID0gdHJ1
ZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBFcnJvcnMgbXVzdCBi
ZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHNodXRkb3duIG11c3Qgbm90IG9jY3VyIHVudGlsIHRoZSBm
aW5hbCB3cml0ZSBjb21wbGV0ZXM7IGJlY29tZXMgZXJyb3JlZCBhZnRlciBmaXJzdCB3cml0ZSBD
YW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBFcnJvcnMgbXVzdCBiZSBw
cm9wYWdhdGVkIGZvcndhcmQ6IHNodXRkb3duIG11c3Qgbm90IG9jY3VyIHVudGlsIHRoZSBmaW5h
bCB3cml0ZSBjb21wbGV0ZXM7IGJlY29tZXMgZXJyb3JlZCBhZnRlciBmaXJzdCB3cml0ZTsgcHJl
dmVudEFib3J0ID0gdHJ1ZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMvcGlwaW5nL2Vycm9yLXByb3BhZ2F0aW9uLWZvcndhcmQuZGVkaWNhdGVkd29ya2VyLmh0
bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
cGlwaW5nL2Vycm9yLXByb3BhZ2F0aW9uLWZvcndhcmQuZGVkaWNhdGVkd29ya2VyLmh0bWwKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwOTQ2ODA0MWU5MzVlNzc0OGM3MGJkOWMwOWIw
ZjYxYjliNjVhNGYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3Bp
cGluZy9lcnJvci1wcm9wYWdhdGlvbi1mb3J3YXJkLmRlZGljYXRlZHdvcmtlci5odG1sCisrKyAv
ZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0
PSJ1dGYtOCI+Ci08dGl0bGU+ZXJyb3ItcHJvcGFnYXRpb24tZm9yd2FyZC5qcyBkZWRpY2F0ZWQg
d29ya2VyIHdyYXBwZXIgZmlsZTwvdGl0bGU+Ci0KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rl
c3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJu
ZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLQotPHNjcmlwdD4KLSd1c2Ugc3RyaWN0JzsKLWZldGNo
X3Rlc3RzX2Zyb21fd29ya2VyKG5ldyBXb3JrZXIoJ2Vycm9yLXByb3BhZ2F0aW9uLWZvcndhcmQu
anMnKSk7Ci08L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvZXJyb3ItcHJvcGFnYXRpb24tZm9yd2Fy
ZC5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJl
YW1zL3BpcGluZy9lcnJvci1wcm9wYWdhdGlvbi1mb3J3YXJkLmh0bWwKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDk5OGM1NDcyNjMxMjlmMjYxNjNlZDRjNDI5M2M1YjM3ZjRkYzQxMzQu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9lcnJvci1w
cm9wYWdhdGlvbi1mb3J3YXJkLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi08
IURPQ1RZUEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTx0aXRsZT5lcnJvci1wcm9w
YWdhdGlvbi1mb3J3YXJkLmpzIGJyb3dzZXIgY29udGV4dCB3cmFwcGVyIGZpbGU8L3RpdGxlPgot
Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2Ny
aXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci0KLTxz
Y3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0
IHNyYz0iLi4vcmVzb3VyY2VzL3JlY29yZGluZy1zdHJlYW1zLmpzIj48L3NjcmlwdD4KLQotPHNj
cmlwdCBzcmM9ImVycm9yLXByb3BhZ2F0aW9uLWZvcndhcmQuanMiPjwvc2NyaXB0PgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
L3BpcGluZy9lcnJvci1wcm9wYWdhdGlvbi1mb3J3YXJkLmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9lcnJvci1wcm9wYWdhdGlv
bi1mb3J3YXJkLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ODNiOTJiOWMzZjhj
NzA2NzVhNmY5YTQ1NDlhZjYwYTk0MzllNTY2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy9waXBpbmcvZXJyb3ItcHJvcGFnYXRpb24tZm9yd2FyZC5qcworKysgL2Rl
di9udWxsCkBAIC0xLDU3NCArMCwwIEBACi0ndXNlIHN0cmljdCc7Ci0KLWlmIChzZWxmLmltcG9y
dFNjcmlwdHMpIHsKLSAgc2VsZi5pbXBvcnRTY3JpcHRzKCcvcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
LmpzJyk7Ci0gIHNlbGYuaW1wb3J0U2NyaXB0cygnLi4vcmVzb3VyY2VzL3Rlc3QtdXRpbHMuanMn
KTsKLSAgc2VsZi5pbXBvcnRTY3JpcHRzKCcuLi9yZXNvdXJjZXMvcmVjb3JkaW5nLXN0cmVhbXMu
anMnKTsKLX0KLQotY29uc3QgZXJyb3IxID0gbmV3IEVycm9yKCdlcnJvcjEhJyk7Ci1lcnJvcjEu
bmFtZSA9ICdlcnJvcjEnOwotCi1jb25zdCBlcnJvcjIgPSBuZXcgRXJyb3IoJ2Vycm9yMiEnKTsK
LWVycm9yMi5uYW1lID0gJ2Vycm9yMic7Ci0KLXByb21pc2VfdGVzdCh0ID0+IHsKLQotICBjb25z
dCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydCgpIHsKLSAgICAgIHJl
dHVybiBQcm9taXNlLnJlamVjdChlcnJvcjEpOwotICAgIH0KLSAgfSk7Ci0KLSAgY29uc3Qgd3Mg
PSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSgpOwotCi0gIHJldHVybiBwcm9taXNlX3JlamVjdHMo
dCwgZXJyb3IxLCBycy5waXBlVG8od3MpLCAncGlwZVRvIG11c3QgcmVqZWN0IHdpdGggdGhlIHNh
bWUgZXJyb3InKQotICAgIC50aGVuKCgpID0+IHsKLSAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMo
cnMuZXZlbnRzLCBbXSk7Ci0gICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWydh
Ym9ydCcsIGVycm9yMV0pOwotICAgIH0pOwotCi19LCAnRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRl
ZCBmb3J3YXJkOiBzdGFydHMgZXJyb3JlZDsgcHJldmVudEFib3J0ID0gZmFsc2U7IGZ1bGZpbGxl
ZCBhYm9ydCBwcm9taXNlJyk7Ci0KLXByb21pc2VfdGVzdCh0ID0+IHsKLQotICBjb25zdCBycyA9
IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydCgpIHsKLSAgICAgIHJldHVybiBQ
cm9taXNlLnJlamVjdChlcnJvcjEpOwotICAgIH0KLSAgfSk7Ci0KLSAgY29uc3Qgd3MgPSByZWNv
cmRpbmdXcml0YWJsZVN0cmVhbSh7Ci0gICAgYWJvcnQoKSB7Ci0gICAgICB0aHJvdyBlcnJvcjI7
Ci0gICAgfQotICB9KTsKLQotICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHQsIGVycm9yMiwgcnMu
cGlwZVRvKHdzKSwgJ3BpcGVUbyBtdXN0IHJlamVjdCB3aXRoIHRoZSBhYm9ydCBlcnJvcicpCi0g
ICAgLnRoZW4oKCkgPT4gewotICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhycy5ldmVudHMsIFtd
KTsKLSAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ2Fib3J0JywgZXJyb3Ix
XSk7Ci0gICAgfSk7Ci0KLX0sICdFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHN0
YXJ0cyBlcnJvcmVkOyBwcmV2ZW50QWJvcnQgPSBmYWxzZTsgcmVqZWN0ZWQgYWJvcnQgcHJvbWlz
ZScpOwotCi1mb3IgKGNvbnN0IGZhbHN5IG9mIFt1bmRlZmluZWQsIG51bGwsIGZhbHNlLCArMCwg
LTAsIE5hTiwgJyddKSB7Ci0gIGNvbnN0IHN0cmluZ1ZlcnNpb24gPSBPYmplY3QuaXMoZmFsc3ks
IC0wKSA/ICctMCcgOiBTdHJpbmcoZmFsc3kpOwotCi0gIHByb21pc2VfdGVzdCh0ID0+IHsKLQot
ICAgIGNvbnN0IHJzID0gcmVjb3JkaW5nUmVhZGFibGVTdHJlYW0oewotICAgICAgc3RhcnQoKSB7
Ci0gICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcjEpOwotICAgICAgfQotICAgIH0p
OwotCi0gICAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSgpOwotCi0gICAgcmV0
dXJuIHByb21pc2VfcmVqZWN0cyh0LCBlcnJvcjEsIHJzLnBpcGVUbyh3cywgeyBwcmV2ZW50QWJv
cnQ6IGZhbHN5IH0pLCAncGlwZVRvIG11c3QgcmVqZWN0IHdpdGggdGhlIHNhbWUgZXJyb3InKQot
ICAgICAgLnRoZW4oKCkgPT4gewotICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJzLmV2ZW50
cywgW10pOwotICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWydhYm9ydCcs
IGVycm9yMV0pOwotICAgICAgfSk7Ci0KLSAgfSwgYEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQg
Zm9yd2FyZDogc3RhcnRzIGVycm9yZWQ7IHByZXZlbnRBYm9ydCA9ICR7c3RyaW5nVmVyc2lvbn0g
KGZhbHN5KTsgZnVsZmlsbGVkIGFib3J0IGAgKwotICAgICBgcHJvbWlzZWApOwotfQotCi1mb3Ig
KGNvbnN0IHRydXRoeSBvZiBbdHJ1ZSwgJ2EnLCAxLCBTeW1ib2woKSwgeyB9XSkgewotICBwcm9t
aXNlX3Rlc3QodCA9PiB7Ci0KLSAgICBjb25zdCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFt
KHsKLSAgICAgIHN0YXJ0KCkgewotICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyb3Ix
KTsKLSAgICAgIH0KLSAgICB9KTsKLQotICAgIGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVT
dHJlYW0oKTsKLQotICAgIHJldHVybiBwcm9taXNlX3JlamVjdHModCwgZXJyb3IxLCBycy5waXBl
VG8od3MsIHsgcHJldmVudEFib3J0OiB0cnV0aHkgfSksCi0gICAgICAncGlwZVRvIG11c3QgcmVq
ZWN0IHdpdGggdGhlIHNhbWUgZXJyb3InKQotICAgICAgLnRoZW4oKCkgPT4gewotICAgICAgICBh
c3NlcnRfYXJyYXlfZXF1YWxzKHJzLmV2ZW50cywgW10pOwotICAgICAgICBhc3NlcnRfYXJyYXlf
ZXF1YWxzKHdzLmV2ZW50cywgW10pOwotICAgICAgfSk7Ci0KLSAgfSwgYEVycm9ycyBtdXN0IGJl
IHByb3BhZ2F0ZWQgZm9yd2FyZDogc3RhcnRzIGVycm9yZWQ7IHByZXZlbnRBYm9ydCA9ICR7U3Ry
aW5nKHRydXRoeSl9ICh0cnV0aHkpYCk7Ci19Ci0KLQotcHJvbWlzZV90ZXN0KHQgPT4gewotCi0g
IGNvbnN0IHJzID0gcmVjb3JkaW5nUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KCkgewotICAg
ICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yMSk7Ci0gICAgfQotICB9KTsKLQotICBjb25z
dCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKCk7Ci0KLSAgcmV0dXJuIHByb21pc2VfcmVq
ZWN0cyh0LCBlcnJvcjEsIHJzLnBpcGVUbyh3cywgeyBwcmV2ZW50QWJvcnQ6IHRydWUsIHByZXZl
bnRDYW5jZWw6IHRydWUgfSksCi0gICAgJ3BpcGVUbyBtdXN0IHJlamVjdCB3aXRoIHRoZSBzYW1l
IGVycm9yJykKLSAgICAudGhlbigoKSA9PiB7Ci0gICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJz
LmV2ZW50cywgW10pOwotICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFtdKTsK
LSAgICB9KTsKLQotfSwgJ0Vycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc3RhcnRz
IGVycm9yZWQ7IHByZXZlbnRBYm9ydCA9IHRydWUsIHByZXZlbnRDYW5jZWwgPSB0cnVlJyk7Ci0K
LXByb21pc2VfdGVzdCh0ID0+IHsKLQotICBjb25zdCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3Ry
ZWFtKHsKLSAgICBzdGFydCgpIHsKLSAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcjEp
OwotICAgIH0KLSAgfSk7Ci0KLSAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSgp
OwotCi0gIHJldHVybiBwcm9taXNlX3JlamVjdHModCwgZXJyb3IxLCBycy5waXBlVG8od3MsIHsg
cHJldmVudEFib3J0OiB0cnVlLCBwcmV2ZW50Q2FuY2VsOiB0cnVlLCBwcmV2ZW50Q2xvc2U6IHRy
dWUgfSksCi0gICAgJ3BpcGVUbyBtdXN0IHJlamVjdCB3aXRoIHRoZSBzYW1lIGVycm9yJykKLSAg
ICAudGhlbigoKSA9PiB7Ci0gICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJzLmV2ZW50cywgW10p
OwotICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFtdKTsKLSAgICB9KTsKLQot
fSwgJ0Vycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc3RhcnRzIGVycm9yZWQ7IHBy
ZXZlbnRBYm9ydCA9IHRydWUsIHByZXZlbnRDYW5jZWwgPSB0cnVlLCBwcmV2ZW50Q2xvc2UgPSB0
cnVlJyk7Ci0KLXByb21pc2VfdGVzdCh0ID0+IHsKLQotICBjb25zdCBycyA9IHJlY29yZGluZ1Jl
YWRhYmxlU3RyZWFtKCk7Ci0KLSAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSgp
OwotCi0gIGNvbnN0IHBpcGVQcm9taXNlID0gcHJvbWlzZV9yZWplY3RzKHQsIGVycm9yMSwgcnMu
cGlwZVRvKHdzKSwgJ3BpcGVUbyBtdXN0IHJlamVjdCB3aXRoIHRoZSBzYW1lIGVycm9yJyk7Ci0K
LSAgc2V0VGltZW91dCgoKSA9PiBycy5jb250cm9sbGVyLmVycm9yKGVycm9yMSksIDEwKTsKLQot
ICByZXR1cm4gcGlwZVByb21pc2UudGhlbigoKSA9PiB7Ci0gICAgYXNzZXJ0X2FycmF5X2VxdWFs
cyhycy5ldmVudHNXaXRob3V0UHVsbHMsIFtdKTsKLSAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdz
LmV2ZW50cywgWydhYm9ydCcsIGVycm9yMV0pOwotICB9KTsKLQotfSwgJ0Vycm9ycyBtdXN0IGJl
IHByb3BhZ2F0ZWQgZm9yd2FyZDogYmVjb21lcyBlcnJvcmVkIHdoaWxlIGVtcHR5OyBwcmV2ZW50
QWJvcnQgPSBmYWxzZTsgZnVsZmlsbGVkIGFib3J0IHByb21pc2UnKTsKLQotcHJvbWlzZV90ZXN0
KHQgPT4gewotCi0gIGNvbnN0IHJzID0gcmVjb3JkaW5nUmVhZGFibGVTdHJlYW0oKTsKLQotICBj
b25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKHsKLSAgICBhYm9ydCgpIHsKLSAgICAg
IHRocm93IGVycm9yMjsKLSAgICB9Ci0gIH0pOwotCi0gIGNvbnN0IHBpcGVQcm9taXNlID0gcHJv
bWlzZV9yZWplY3RzKHQsIGVycm9yMiwgcnMucGlwZVRvKHdzKSwgJ3BpcGVUbyBtdXN0IHJlamVj
dCB3aXRoIHRoZSBhYm9ydCBlcnJvcicpOwotCi0gIHNldFRpbWVvdXQoKCkgPT4gcnMuY29udHJv
bGxlci5lcnJvcihlcnJvcjEpLCAxMCk7Ci0KLSAgcmV0dXJuIHBpcGVQcm9taXNlLnRoZW4oKCkg
PT4gewotICAgIGFzc2VydF9hcnJheV9lcXVhbHMocnMuZXZlbnRzV2l0aG91dFB1bGxzLCBbXSk7
Ci0gICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsnYWJvcnQnLCBlcnJvcjFdKTsK
LSAgfSk7Ci0KLX0sICdFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IGJlY29tZXMg
ZXJyb3JlZCB3aGlsZSBlbXB0eTsgcHJldmVudEFib3J0ID0gZmFsc2U7IHJlamVjdGVkIGFib3J0
IHByb21pc2UnKTsKLQotcHJvbWlzZV90ZXN0KHQgPT4gewotCi0gIGNvbnN0IHJzID0gcmVjb3Jk
aW5nUmVhZGFibGVTdHJlYW0oKTsKLQotICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3Ry
ZWFtKCk7Ci0KLSAgY29uc3QgcGlwZVByb21pc2UgPSBwcm9taXNlX3JlamVjdHModCwgZXJyb3Ix
LCBycy5waXBlVG8od3MsIHsgcHJldmVudEFib3J0OiB0cnVlIH0pLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAncGlwZVRvIG11c3QgcmVqZWN0IHdpdGggdGhlIHNhbWUg
ZXJyb3InKTsKLQotICBzZXRUaW1lb3V0KCgpID0+IHJzLmNvbnRyb2xsZXIuZXJyb3IoZXJyb3Ix
KSwgMTApOwotCi0gIHJldHVybiBwaXBlUHJvbWlzZS50aGVuKCgpID0+IHsKLSAgICBhc3NlcnRf
YXJyYXlfZXF1YWxzKHJzLmV2ZW50c1dpdGhvdXRQdWxscywgW10pOwotICAgIGFzc2VydF9hcnJh
eV9lcXVhbHMod3MuZXZlbnRzLCBbXSk7Ci0gIH0pOwotCi19LCAnRXJyb3JzIG11c3QgYmUgcHJv
cGFnYXRlZCBmb3J3YXJkOiBiZWNvbWVzIGVycm9yZWQgd2hpbGUgZW1wdHk7IHByZXZlbnRBYm9y
dCA9IHRydWUnKTsKLQotcHJvbWlzZV90ZXN0KHQgPT4gewotCi0gIGNvbnN0IHJzID0gcmVjb3Jk
aW5nUmVhZGFibGVTdHJlYW0oKTsKLQotICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3Ry
ZWFtKHVuZGVmaW5lZCwgbmV3IENvdW50UXVldWluZ1N0cmF0ZWd5KHsgaGlnaFdhdGVyTWFyazog
MCB9KSk7Ci0KLSAgY29uc3QgcGlwZVByb21pc2UgPSBwcm9taXNlX3JlamVjdHModCwgZXJyb3Ix
LCBycy5waXBlVG8od3MpLCAncGlwZVRvIG11c3QgcmVqZWN0IHdpdGggdGhlIHNhbWUgZXJyb3In
KTsKLQotICBzZXRUaW1lb3V0KCgpID0+IHJzLmNvbnRyb2xsZXIuZXJyb3IoZXJyb3IxKSwgMTAp
OwotCi0gIHJldHVybiBwaXBlUHJvbWlzZS50aGVuKCgpID0+IHsKLSAgICBhc3NlcnRfYXJyYXlf
ZXF1YWxzKHJzLmV2ZW50c1dpdGhvdXRQdWxscywgW10pOwotICAgIGFzc2VydF9hcnJheV9lcXVh
bHMod3MuZXZlbnRzLCBbJ2Fib3J0JywgZXJyb3IxXSk7Ci0gIH0pOwotCi19LCAnRXJyb3JzIG11
c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBiZWNvbWVzIGVycm9yZWQgd2hpbGUgZW1wdHk7IGRl
c3QgbmV2ZXIgZGVzaXJlcyBjaHVua3M7ICcgKwotICAgJ3ByZXZlbnRBYm9ydCA9IGZhbHNlOyBm
dWxmaWxsZWQgYWJvcnQgcHJvbWlzZScpOwotCi1wcm9taXNlX3Rlc3QodCA9PiB7Ci0KLSAgY29u
c3QgcnMgPSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSgpOwotCi0gIGNvbnN0IHdzID0gcmVjb3Jk
aW5nV3JpdGFibGVTdHJlYW0oewotICAgIGFib3J0KCkgewotICAgICAgdGhyb3cgZXJyb3IyOwot
ICAgIH0KLSAgfSwgbmV3IENvdW50UXVldWluZ1N0cmF0ZWd5KHsgaGlnaFdhdGVyTWFyazogMCB9
KSk7Ci0KLSAgY29uc3QgcGlwZVByb21pc2UgPSBwcm9taXNlX3JlamVjdHModCwgZXJyb3IyLCBy
cy5waXBlVG8od3MpLCAncGlwZVRvIG11c3QgcmVqZWN0IHdpdGggdGhlIGFib3J0IGVycm9yJyk7
Ci0KLSAgc2V0VGltZW91dCgoKSA9PiBycy5jb250cm9sbGVyLmVycm9yKGVycm9yMSksIDEwKTsK
LQotICByZXR1cm4gcGlwZVByb21pc2UudGhlbigoKSA9PiB7Ci0gICAgYXNzZXJ0X2FycmF5X2Vx
dWFscyhycy5ldmVudHNXaXRob3V0UHVsbHMsIFtdKTsKLSAgICBhc3NlcnRfYXJyYXlfZXF1YWxz
KHdzLmV2ZW50cywgWydhYm9ydCcsIGVycm9yMV0pOwotICB9KTsKLQotfSwgJ0Vycm9ycyBtdXN0
IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogYmVjb21lcyBlcnJvcmVkIHdoaWxlIGVtcHR5OyBkZXN0
IG5ldmVyIGRlc2lyZXMgY2h1bmtzOyAnICsKLSAgICdwcmV2ZW50QWJvcnQgPSBmYWxzZTsgcmVq
ZWN0ZWQgYWJvcnQgcHJvbWlzZScpOwotCi1wcm9taXNlX3Rlc3QodCA9PiB7Ci0KLSAgY29uc3Qg
cnMgPSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSgpOwotCi0gIGNvbnN0IHdzID0gcmVjb3JkaW5n
V3JpdGFibGVTdHJlYW0odW5kZWZpbmVkLCBuZXcgQ291bnRRdWV1aW5nU3RyYXRlZ3koeyBoaWdo
V2F0ZXJNYXJrOiAwIH0pKTsKLQotICBjb25zdCBwaXBlUHJvbWlzZSA9IHByb21pc2VfcmVqZWN0
cyh0LCBlcnJvcjEsIHJzLnBpcGVUbyh3cywgeyBwcmV2ZW50QWJvcnQ6IHRydWUgfSksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwaXBlVG8gbXVzdCByZWplY3Qgd2l0
aCB0aGUgc2FtZSBlcnJvcicpOwotCi0gIHNldFRpbWVvdXQoKCkgPT4gcnMuY29udHJvbGxlci5l
cnJvcihlcnJvcjEpLCAxMCk7Ci0KLSAgcmV0dXJuIHBpcGVQcm9taXNlLnRoZW4oKCkgPT4gewot
ICAgIGFzc2VydF9hcnJheV9lcXVhbHMocnMuZXZlbnRzV2l0aG91dFB1bGxzLCBbXSk7Ci0gICAg
YXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFtdKTsKLSAgfSk7Ci0KLX0sICdFcnJvcnMg
bXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IGJlY29tZXMgZXJyb3JlZCB3aGlsZSBlbXB0eTsg
ZGVzdCBuZXZlciBkZXNpcmVzIGNodW5rczsgJyArCi0gICAncHJldmVudEFib3J0ID0gdHJ1ZScp
OwotCi1wcm9taXNlX3Rlc3QodCA9PiB7Ci0KLSAgY29uc3QgcnMgPSByZWNvcmRpbmdSZWFkYWJs
ZVN0cmVhbSgpOwotCi0gIGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0oKTsKLQot
ICBjb25zdCBwaXBlUHJvbWlzZSA9IHByb21pc2VfcmVqZWN0cyh0LCBlcnJvcjEsIHJzLnBpcGVU
byh3cyksICdwaXBlVG8gbXVzdCByZWplY3Qgd2l0aCB0aGUgc2FtZSBlcnJvcicpOwotCi0gIHNl
dFRpbWVvdXQoKCkgPT4gewotICAgIHJzLmNvbnRyb2xsZXIuZW5xdWV1ZSgnSGVsbG8nKTsKLSAg
ICBzZXRUaW1lb3V0KCgpID0+IHJzLmNvbnRyb2xsZXIuZXJyb3IoZXJyb3IxKSwgMTApOwotICB9
LCAxMCk7Ci0KLSAgcmV0dXJuIHBpcGVQcm9taXNlLnRoZW4oKCkgPT4gewotICAgIGFzc2VydF9h
cnJheV9lcXVhbHMocnMuZXZlbnRzV2l0aG91dFB1bGxzLCBbXSk7Ci0gICAgYXNzZXJ0X2FycmF5
X2VxdWFscyh3cy5ldmVudHMsIFsnd3JpdGUnLCAnSGVsbG8nLCAnYWJvcnQnLCBlcnJvcjFdKTsK
LSAgfSk7Ci0KLX0sICdFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IGJlY29tZXMg
ZXJyb3JlZCBhZnRlciBvbmUgY2h1bms7IHByZXZlbnRBYm9ydCA9IGZhbHNlOyBmdWxmaWxsZWQg
YWJvcnQgcHJvbWlzZScpOwotCi1wcm9taXNlX3Rlc3QodCA9PiB7Ci0KLSAgY29uc3QgcnMgPSBy
ZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSgpOwotCi0gIGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFi
bGVTdHJlYW0oewotICAgIGFib3J0KCkgewotICAgICAgdGhyb3cgZXJyb3IyOwotICAgIH0KLSAg
fSk7Ci0KLSAgY29uc3QgcGlwZVByb21pc2UgPSBwcm9taXNlX3JlamVjdHModCwgZXJyb3IyLCBy
cy5waXBlVG8od3MpLCAncGlwZVRvIG11c3QgcmVqZWN0IHdpdGggdGhlIGFib3J0IGVycm9yJyk7
Ci0KLSAgc2V0VGltZW91dCgoKSA9PiB7Ci0gICAgcnMuY29udHJvbGxlci5lbnF1ZXVlKCdIZWxs
bycpOwotICAgIHNldFRpbWVvdXQoKCkgPT4gcnMuY29udHJvbGxlci5lcnJvcihlcnJvcjEpLCAx
MCk7Ci0gIH0sIDEwKTsKLQotICByZXR1cm4gcGlwZVByb21pc2UudGhlbigoKSA9PiB7Ci0gICAg
YXNzZXJ0X2FycmF5X2VxdWFscyhycy5ldmVudHNXaXRob3V0UHVsbHMsIFtdKTsKLSAgICBhc3Nl
cnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWyd3cml0ZScsICdIZWxsbycsICdhYm9ydCcsIGVy
cm9yMV0pOwotICB9KTsKLQotfSwgJ0Vycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDog
YmVjb21lcyBlcnJvcmVkIGFmdGVyIG9uZSBjaHVuazsgcHJldmVudEFib3J0ID0gZmFsc2U7IHJl
amVjdGVkIGFib3J0IHByb21pc2UnKTsKLQotcHJvbWlzZV90ZXN0KHQgPT4gewotCi0gIGNvbnN0
IHJzID0gcmVjb3JkaW5nUmVhZGFibGVTdHJlYW0oKTsKLQotICBjb25zdCB3cyA9IHJlY29yZGlu
Z1dyaXRhYmxlU3RyZWFtKCk7Ci0KLSAgY29uc3QgcGlwZVByb21pc2UgPSBwcm9taXNlX3JlamVj
dHModCwgZXJyb3IxLCBycy5waXBlVG8od3MsIHsgcHJldmVudEFib3J0OiB0cnVlIH0pLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGlwZVRvIG11c3QgcmVqZWN0IHdp
dGggdGhlIHNhbWUgZXJyb3InKTsKLQotICBzZXRUaW1lb3V0KCgpID0+IHsKLSAgICBycy5jb250
cm9sbGVyLmVucXVldWUoJ0hlbGxvJyk7Ci0gICAgc2V0VGltZW91dCgoKSA9PiBycy5jb250cm9s
bGVyLmVycm9yKGVycm9yMSksIDEwKTsKLSAgfSwgMTApOwotCi0gIHJldHVybiBwaXBlUHJvbWlz
ZS50aGVuKCgpID0+IHsKLSAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJzLmV2ZW50c1dpdGhvdXRQ
dWxscywgW10pOwotICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ3dyaXRlJywg
J0hlbGxvJ10pOwotICB9KTsKLQotfSwgJ0Vycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2Fy
ZDogYmVjb21lcyBlcnJvcmVkIGFmdGVyIG9uZSBjaHVuazsgcHJldmVudEFib3J0ID0gdHJ1ZScp
OwotCi1wcm9taXNlX3Rlc3QodCA9PiB7Ci0KLSAgY29uc3QgcnMgPSByZWNvcmRpbmdSZWFkYWJs
ZVN0cmVhbSgpOwotCi0gIGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0odW5kZWZp
bmVkLCBuZXcgQ291bnRRdWV1aW5nU3RyYXRlZ3koeyBoaWdoV2F0ZXJNYXJrOiAwIH0pKTsKLQot
ICBjb25zdCBwaXBlUHJvbWlzZSA9IHByb21pc2VfcmVqZWN0cyh0LCBlcnJvcjEsIHJzLnBpcGVU
byh3cyksICdwaXBlVG8gbXVzdCByZWplY3Qgd2l0aCB0aGUgc2FtZSBlcnJvcicpOwotCi0gIHNl
dFRpbWVvdXQoKCkgPT4gewotICAgIHJzLmNvbnRyb2xsZXIuZW5xdWV1ZSgnSGVsbG8nKTsKLSAg
ICBzZXRUaW1lb3V0KCgpID0+IHJzLmNvbnRyb2xsZXIuZXJyb3IoZXJyb3IxKSwgMTApOwotICB9
LCAxMCk7Ci0KLSAgcmV0dXJuIHBpcGVQcm9taXNlLnRoZW4oKCkgPT4gewotICAgIGFzc2VydF9h
cnJheV9lcXVhbHMocnMuZXZlbnRzV2l0aG91dFB1bGxzLCBbXSk7Ci0gICAgYXNzZXJ0X2FycmF5
X2VxdWFscyh3cy5ldmVudHMsIFsnYWJvcnQnLCBlcnJvcjFdKTsKLSAgfSk7Ci0KLX0sICdFcnJv
cnMgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IGJlY29tZXMgZXJyb3JlZCBhZnRlciBvbmUg
Y2h1bms7IGRlc3QgbmV2ZXIgZGVzaXJlcyBjaHVua3M7ICcgKwotICAgJ3ByZXZlbnRBYm9ydCA9
IGZhbHNlOyBmdWxmaWxsZWQgYWJvcnQgcHJvbWlzZScpOwotCi1wcm9taXNlX3Rlc3QodCA9PiB7
Ci0KLSAgY29uc3QgcnMgPSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSgpOwotCi0gIGNvbnN0IHdz
ID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0oewotICAgIGFib3J0KCkgewotICAgICAgdGhyb3cg
ZXJyb3IyOwotICAgIH0KLSAgfSwgbmV3IENvdW50UXVldWluZ1N0cmF0ZWd5KHsgaGlnaFdhdGVy
TWFyazogMCB9KSk7Ci0KLSAgY29uc3QgcGlwZVByb21pc2UgPSBwcm9taXNlX3JlamVjdHModCwg
ZXJyb3IyLCBycy5waXBlVG8od3MpLCAncGlwZVRvIG11c3QgcmVqZWN0IHdpdGggdGhlIGFib3J0
IGVycm9yJyk7Ci0KLSAgc2V0VGltZW91dCgoKSA9PiB7Ci0gICAgcnMuY29udHJvbGxlci5lbnF1
ZXVlKCdIZWxsbycpOwotICAgIHNldFRpbWVvdXQoKCkgPT4gcnMuY29udHJvbGxlci5lcnJvcihl
cnJvcjEpLCAxMCk7Ci0gIH0sIDEwKTsKLQotICByZXR1cm4gcGlwZVByb21pc2UudGhlbigoKSA9
PiB7Ci0gICAgYXNzZXJ0X2FycmF5X2VxdWFscyhycy5ldmVudHNXaXRob3V0UHVsbHMsIFtdKTsK
LSAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWydhYm9ydCcsIGVycm9yMV0pOwot
ICB9KTsKLQotfSwgJ0Vycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogYmVjb21lcyBl
cnJvcmVkIGFmdGVyIG9uZSBjaHVuazsgZGVzdCBuZXZlciBkZXNpcmVzIGNodW5rczsgJyArCi0g
ICAncHJldmVudEFib3J0ID0gZmFsc2U7IHJlamVjdGVkIGFib3J0IHByb21pc2UnKTsKLQotcHJv
bWlzZV90ZXN0KHQgPT4gewotCi0gIGNvbnN0IHJzID0gcmVjb3JkaW5nUmVhZGFibGVTdHJlYW0o
KTsKLQotICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKHVuZGVmaW5lZCwgbmV3
IENvdW50UXVldWluZ1N0cmF0ZWd5KHsgaGlnaFdhdGVyTWFyazogMCB9KSk7Ci0KLSAgY29uc3Qg
cGlwZVByb21pc2UgPSBwcm9taXNlX3JlamVjdHModCwgZXJyb3IxLCBycy5waXBlVG8od3MsIHsg
cHJldmVudEFib3J0OiB0cnVlIH0pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAncGlwZVRvIG11c3QgcmVqZWN0IHdpdGggdGhlIHNhbWUgZXJyb3InKTsKLQotICBzZXRU
aW1lb3V0KCgpID0+IHsKLSAgICBycy5jb250cm9sbGVyLmVucXVldWUoJ0hlbGxvJyk7Ci0gICAg
c2V0VGltZW91dCgoKSA9PiBycy5jb250cm9sbGVyLmVycm9yKGVycm9yMSksIDEwKTsKLSAgfSwg
MTApOwotCi0gIHJldHVybiBwaXBlUHJvbWlzZS50aGVuKCgpID0+IHsKLSAgICBhc3NlcnRfYXJy
YXlfZXF1YWxzKHJzLmV2ZW50c1dpdGhvdXRQdWxscywgW10pOwotICAgIGFzc2VydF9hcnJheV9l
cXVhbHMod3MuZXZlbnRzLCBbXSk7Ci0gIH0pOwotCi19LCAnRXJyb3JzIG11c3QgYmUgcHJvcGFn
YXRlZCBmb3J3YXJkOiBiZWNvbWVzIGVycm9yZWQgYWZ0ZXIgb25lIGNodW5rOyBkZXN0IG5ldmVy
IGRlc2lyZXMgY2h1bmtzOyAnICsKLSAgICdwcmV2ZW50QWJvcnQgPSB0cnVlJyk7Ci0KLXByb21p
c2VfdGVzdCh0ID0+IHsKLQotICBjb25zdCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKCk7
Ci0KLSAgbGV0IHJlc29sdmVXcml0ZUNhbGxlZDsKLSAgY29uc3Qgd3JpdGVDYWxsZWRQcm9taXNl
ID0gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7Ci0gICAgcmVzb2x2ZVdyaXRlQ2FsbGVkID0gcmVz
b2x2ZTsKLSAgfSk7Ci0KLSAgbGV0IHJlc29sdmVXcml0ZVByb21pc2U7Ci0gIGNvbnN0IHdzID0g
cmVjb3JkaW5nV3JpdGFibGVTdHJlYW0oewotICAgIHdyaXRlKCkgewotICAgICAgcmVzb2x2ZVdy
aXRlQ2FsbGVkKCk7Ci0KLSAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKLSAg
ICAgICAgcmVzb2x2ZVdyaXRlUHJvbWlzZSA9IHJlc29sdmU7Ci0gICAgICB9KTsKLSAgICB9Ci0g
IH0pOwotCi0gIGxldCBwaXBlQ29tcGxldGUgPSBmYWxzZTsKLSAgY29uc3QgcGlwZVByb21pc2Ug
PSBwcm9taXNlX3JlamVjdHModCwgZXJyb3IxLCBycy5waXBlVG8od3MpKS50aGVuKCgpID0+IHsK
LSAgICBwaXBlQ29tcGxldGUgPSB0cnVlOwotICB9KTsKLQotICBycy5jb250cm9sbGVyLmVucXVl
dWUoJ2EnKTsKLQotICByZXR1cm4gd3JpdGVDYWxsZWRQcm9taXNlLnRoZW4oKCkgPT4gewotICAg
IHJzLmNvbnRyb2xsZXIuZXJyb3IoZXJyb3IxKTsKLQotICAgIC8vIEZsdXNoIGFzeW5jIGV2ZW50
cyBhbmQgdmVyaWZ5IHRoYXQgbm8gc2h1dGRvd24gb2NjdXJzLgotICAgIHJldHVybiBmbHVzaEFz
eW5jRXZlbnRzKCk7Ci0gIH0pLnRoZW4oKCkgPT4gewotICAgIGFzc2VydF9hcnJheV9lcXVhbHMo
d3MuZXZlbnRzLCBbJ3dyaXRlJywgJ2EnXSk7IC8vIG5vICdhYm9ydCcKLSAgICBhc3NlcnRfZXF1
YWxzKHBpcGVDb21wbGV0ZSwgZmFsc2UsICd0aGUgcGlwZSBtdXN0IG5vdCBiZSBjb21wbGV0ZScp
OwotCi0gICAgcmVzb2x2ZVdyaXRlUHJvbWlzZSgpOwotCi0gICAgcmV0dXJuIHBpcGVQcm9taXNl
LnRoZW4oKCkgPT4gewotICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsnd3Jp
dGUnLCAnYScsICdhYm9ydCcsIGVycm9yMV0pOwotICAgIH0pOwotICB9KTsKLQotfSwgJ0Vycm9y
cyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc2h1dGRvd24gbXVzdCBub3Qgb2NjdXIgdW50
aWwgdGhlIGZpbmFsIHdyaXRlIGNvbXBsZXRlcycpOwotCi1wcm9taXNlX3Rlc3QodCA9PiB7Ci0K
LSAgY29uc3QgcnMgPSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSgpOwotCi0gIGxldCByZXNvbHZl
V3JpdGVDYWxsZWQ7Ci0gIGNvbnN0IHdyaXRlQ2FsbGVkUHJvbWlzZSA9IG5ldyBQcm9taXNlKHJl
c29sdmUgPT4gewotICAgIHJlc29sdmVXcml0ZUNhbGxlZCA9IHJlc29sdmU7Ci0gIH0pOwotCi0g
IGxldCByZXNvbHZlV3JpdGVQcm9taXNlOwotICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxl
U3RyZWFtKHsKLSAgICB3cml0ZSgpIHsKLSAgICAgIHJlc29sdmVXcml0ZUNhbGxlZCgpOwotCi0g
ICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7Ci0gICAgICAgIHJlc29sdmVXcml0
ZVByb21pc2UgPSByZXNvbHZlOwotICAgICAgfSk7Ci0gICAgfQotICB9KTsKLQotICBsZXQgcGlw
ZUNvbXBsZXRlID0gZmFsc2U7Ci0gIGNvbnN0IHBpcGVQcm9taXNlID0gcHJvbWlzZV9yZWplY3Rz
KHQsIGVycm9yMSwgcnMucGlwZVRvKHdzLCB7IHByZXZlbnRBYm9ydDogdHJ1ZSB9KSkudGhlbigo
KSA9PiB7Ci0gICAgcGlwZUNvbXBsZXRlID0gdHJ1ZTsKLSAgfSk7Ci0KLSAgcnMuY29udHJvbGxl
ci5lbnF1ZXVlKCdhJyk7Ci0KLSAgcmV0dXJuIHdyaXRlQ2FsbGVkUHJvbWlzZS50aGVuKCgpID0+
IHsKLSAgICBycy5jb250cm9sbGVyLmVycm9yKGVycm9yMSk7Ci0KLSAgICAvLyBGbHVzaCBhc3lu
YyBldmVudHMgYW5kIHZlcmlmeSB0aGF0IG5vIHNodXRkb3duIG9jY3Vycy4KLSAgICByZXR1cm4g
Zmx1c2hBc3luY0V2ZW50cygpOwotICB9KS50aGVuKCgpID0+IHsKLSAgICBhc3NlcnRfYXJyYXlf
ZXF1YWxzKHdzLmV2ZW50cywgWyd3cml0ZScsICdhJ10pOyAvLyBubyAnYWJvcnQnCi0gICAgYXNz
ZXJ0X2VxdWFscyhwaXBlQ29tcGxldGUsIGZhbHNlLCAndGhlIHBpcGUgbXVzdCBub3QgYmUgY29t
cGxldGUnKTsKLQotICAgIHJlc29sdmVXcml0ZVByb21pc2UoKTsKLSAgICByZXR1cm4gcGlwZVBy
b21pc2U7Ci0gIH0pLnRoZW4oKCkgPT4gZmx1c2hBc3luY0V2ZW50cygpKS50aGVuKCgpID0+IHsK
LSAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWyd3cml0ZScsICdhJ10pOyAvLyBu
byAnYWJvcnQnCi0gIH0pOwotCi19LCAnRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJk
OiBzaHV0ZG93biBtdXN0IG5vdCBvY2N1ciB1bnRpbCB0aGUgZmluYWwgd3JpdGUgY29tcGxldGVz
OyBwcmV2ZW50QWJvcnQgPSB0cnVlJyk7Ci0KLXByb21pc2VfdGVzdCh0ID0+IHsKLQotICBjb25z
dCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKCk7Ci0KLSAgbGV0IHJlc29sdmVXcml0ZUNh
bGxlZDsKLSAgY29uc3Qgd3JpdGVDYWxsZWRQcm9taXNlID0gbmV3IFByb21pc2UocmVzb2x2ZSA9
PiB7Ci0gICAgcmVzb2x2ZVdyaXRlQ2FsbGVkID0gcmVzb2x2ZTsKLSAgfSk7Ci0KLSAgbGV0IHJl
c29sdmVXcml0ZVByb21pc2U7Ci0gIGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0o
ewotICAgIHdyaXRlKCkgewotICAgICAgcmVzb2x2ZVdyaXRlQ2FsbGVkKCk7Ci0KLSAgICAgIHJl
dHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKLSAgICAgICAgcmVzb2x2ZVdyaXRlUHJvbWlz
ZSA9IHJlc29sdmU7Ci0gICAgICB9KTsKLSAgICB9Ci0gIH0sIG5ldyBDb3VudFF1ZXVpbmdTdHJh
dGVneSh7IGhpZ2hXYXRlck1hcms6IDIgfSkpOwotCi0gIGxldCBwaXBlQ29tcGxldGUgPSBmYWxz
ZTsKLSAgY29uc3QgcGlwZVByb21pc2UgPSBwcm9taXNlX3JlamVjdHModCwgZXJyb3IxLCBycy5w
aXBlVG8od3MpKS50aGVuKCgpID0+IHsKLSAgICBwaXBlQ29tcGxldGUgPSB0cnVlOwotICB9KTsK
LQotICBycy5jb250cm9sbGVyLmVucXVldWUoJ2EnKTsKLSAgcnMuY29udHJvbGxlci5lbnF1ZXVl
KCdiJyk7Ci0KLSAgcmV0dXJuIHdyaXRlQ2FsbGVkUHJvbWlzZS50aGVuKCgpID0+IGZsdXNoQXN5
bmNFdmVudHMoKSkudGhlbigoKSA9PiB7Ci0gICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVu
dHMsIFsnd3JpdGUnLCAnYSddLAotICAgICAgJ3RoZSBmaXJzdCBjaHVuayBtdXN0IGhhdmUgYmVl
biB3cml0dGVuLCBidXQgYWJvcnQgbXVzdCBub3QgaGF2ZSBoYXBwZW5lZCB5ZXQnKTsKLSAgICBh
c3NlcnRfZmFsc2UocGlwZUNvbXBsZXRlLCAndGhlIHBpcGUgc2hvdWxkIG5vdCBjb21wbGV0ZSB3
aGlsZSB0aGUgZmlyc3Qgd3JpdGUgaXMgcGVuZGluZycpOwotCi0gICAgcnMuY29udHJvbGxlci5l
cnJvcihlcnJvcjEpOwotICAgIHJlc29sdmVXcml0ZVByb21pc2UoKTsKLSAgICByZXR1cm4gZmx1
c2hBc3luY0V2ZW50cygpOwotICB9KS50aGVuKCgpID0+IHsKLSAgICBhc3NlcnRfYXJyYXlfZXF1
YWxzKHdzLmV2ZW50cywgWyd3cml0ZScsICdhJywgJ3dyaXRlJywgJ2InXSwKLSAgICAgICd0aGUg
c2Vjb25kIGNodW5rIG11c3QgaGF2ZSBiZWVuIHdyaXR0ZW4sIGJ1dCBhYm9ydCBtdXN0IG5vdCBo
YXZlIGhhcHBlbmVkIHlldCcpOwotICAgIGFzc2VydF9mYWxzZShwaXBlQ29tcGxldGUsICd0aGUg
cGlwZSBzaG91bGQgbm90IGNvbXBsZXRlIHdoaWxlIHRoZSBzZWNvbmQgd3JpdGUgaXMgcGVuZGlu
ZycpOwotCi0gICAgcmVzb2x2ZVdyaXRlUHJvbWlzZSgpOwotICAgIHJldHVybiBwaXBlUHJvbWlz
ZTsKLSAgfSkudGhlbigoKSA9PiB7Ci0gICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMs
IFsnd3JpdGUnLCAnYScsICd3cml0ZScsICdiJywgJ2Fib3J0JywgZXJyb3IxXSwKLSAgICAgICdh
bGwgY2h1bmtzIG11c3QgaGF2ZSBiZWVuIHdyaXR0ZW4gYW5kIGFib3J0IG11c3QgaGF2ZSBoYXBw
ZW5lZCcpOwotICB9KTsKLQotfSwgJ0Vycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDog
c2h1dGRvd24gbXVzdCBub3Qgb2NjdXIgdW50aWwgdGhlIGZpbmFsIHdyaXRlIGNvbXBsZXRlczsg
YmVjb21lcyBlcnJvcmVkIGFmdGVyIGZpcnN0IHdyaXRlJyk7Ci0KLXByb21pc2VfdGVzdCh0ID0+
IHsKLQotICBjb25zdCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKCk7Ci0KLSAgbGV0IHJl
c29sdmVXcml0ZUNhbGxlZDsKLSAgY29uc3Qgd3JpdGVDYWxsZWRQcm9taXNlID0gbmV3IFByb21p
c2UocmVzb2x2ZSA9PiB7Ci0gICAgcmVzb2x2ZVdyaXRlQ2FsbGVkID0gcmVzb2x2ZTsKLSAgfSk7
Ci0KLSAgbGV0IHJlc29sdmVXcml0ZVByb21pc2U7Ci0gIGNvbnN0IHdzID0gcmVjb3JkaW5nV3Jp
dGFibGVTdHJlYW0oewotICAgIHdyaXRlKCkgewotICAgICAgcmVzb2x2ZVdyaXRlQ2FsbGVkKCk7
Ci0KLSAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKLSAgICAgICAgcmVzb2x2
ZVdyaXRlUHJvbWlzZSA9IHJlc29sdmU7Ci0gICAgICB9KTsKLSAgICB9Ci0gIH0sIG5ldyBDb3Vu
dFF1ZXVpbmdTdHJhdGVneSh7IGhpZ2hXYXRlck1hcms6IDIgfSkpOwotCi0gIGxldCBwaXBlQ29t
cGxldGUgPSBmYWxzZTsKLSAgY29uc3QgcGlwZVByb21pc2UgPSBwcm9taXNlX3JlamVjdHModCwg
ZXJyb3IxLCBycy5waXBlVG8od3MsIHsgcHJldmVudEFib3J0OiB0cnVlIH0pKS50aGVuKCgpID0+
IHsKLSAgICBwaXBlQ29tcGxldGUgPSB0cnVlOwotICB9KTsKLQotICBycy5jb250cm9sbGVyLmVu
cXVldWUoJ2EnKTsKLSAgcnMuY29udHJvbGxlci5lbnF1ZXVlKCdiJyk7Ci0KLSAgcmV0dXJuIHdy
aXRlQ2FsbGVkUHJvbWlzZS50aGVuKCgpID0+IGZsdXNoQXN5bmNFdmVudHMoKSkudGhlbigoKSA9
PiB7Ci0gICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsnd3JpdGUnLCAnYSddLAot
ICAgICAgJ3RoZSBmaXJzdCBjaHVuayBtdXN0IGhhdmUgYmVlbiB3cml0dGVuLCBidXQgYWJvcnQg
bXVzdCBub3QgaGF2ZSBoYXBwZW5lZCcpOwotICAgIGFzc2VydF9mYWxzZShwaXBlQ29tcGxldGUs
ICd0aGUgcGlwZSBzaG91bGQgbm90IGNvbXBsZXRlIHdoaWxlIHRoZSBmaXJzdCB3cml0ZSBpcyBw
ZW5kaW5nJyk7Ci0KLSAgICBycy5jb250cm9sbGVyLmVycm9yKGVycm9yMSk7Ci0gICAgcmVzb2x2
ZVdyaXRlUHJvbWlzZSgpOwotICB9KS50aGVuKCgpID0+IGZsdXNoQXN5bmNFdmVudHMoKSkudGhl
bigoKSA9PiB7Ci0gICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsnd3JpdGUnLCAn
YScsICd3cml0ZScsICdiJ10sCi0gICAgICAndGhlIHNlY29uZCBjaHVuayBtdXN0IGhhdmUgYmVl
biB3cml0dGVuLCBidXQgYWJvcnQgbXVzdCBub3QgaGF2ZSBoYXBwZW5lZCcpOwotICAgIGFzc2Vy
dF9mYWxzZShwaXBlQ29tcGxldGUsICd0aGUgcGlwZSBzaG91bGQgbm90IGNvbXBsZXRlIHdoaWxl
IHRoZSBzZWNvbmQgd3JpdGUgaXMgcGVuZGluZycpOwotCi0gICAgcmVzb2x2ZVdyaXRlUHJvbWlz
ZSgpOwotICAgIHJldHVybiBwaXBlUHJvbWlzZTsKLSAgfSkudGhlbigoKSA9PiBmbHVzaEFzeW5j
RXZlbnRzKCkpLnRoZW4oKCkgPT4gewotICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRz
LCBbJ3dyaXRlJywgJ2EnLCAnd3JpdGUnLCAnYiddLAotICAgICAgJ2FsbCBjaHVua3MgbXVzdCBo
YXZlIGJlZW4gd3JpdHRlbiwgYnV0IGFib3J0IG11c3Qgbm90IGhhdmUgaGFwcGVuZWQnKTsKLSAg
fSk7Ci0KLX0sICdFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHNodXRkb3duIG11
c3Qgbm90IG9jY3VyIHVudGlsIHRoZSBmaW5hbCB3cml0ZSBjb21wbGV0ZXM7IGJlY29tZXMgZXJy
b3JlZCBhZnRlciBmaXJzdCB3cml0ZTsgcHJldmVudEFib3J0ID0gdHJ1ZScpOwotCi1kb25lKCk7
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMvcGlwaW5nL2Vycm9yLXByb3BhZ2F0aW9uLWZvcndhcmQuc2VydmljZXdvcmtlci5o
dHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Vycm9yLXByb3BhZ2F0aW9uLWZvcndhcmQuc2VydmljZXdv
cmtlci5odHRwcy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNi
ZmVmYzY0NWRhYzExNjhlNmVlNjIyMDMwMzg5MDk3OWM4ZmRiYmUuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9lcnJvci1wcm9wYWdhdGlvbi1mb3J3YXJk
LnNlcnZpY2V3b3JrZXIuaHR0cHMtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMzUg
KzAsMCBAQAotCi1QQVNTIFNlcnZpY2Ugd29ya2VyIHRlc3Qgc2V0dXAgCi1GQUlMIEVycm9ycyBt
dXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc3RhcnRzIGVycm9yZWQ7IHByZXZlbnRBYm9ydCA9
IGZhbHNlOyBmdWxmaWxsZWQgYWJvcnQgcHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0
YWJsZVN0cmVhbQotRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHN0YXJ0
cyBlcnJvcmVkOyBwcmV2ZW50QWJvcnQgPSBmYWxzZTsgcmVqZWN0ZWQgYWJvcnQgcHJvbWlzZSBD
YW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBFcnJvcnMgbXVzdCBiZSBw
cm9wYWdhdGVkIGZvcndhcmQ6IHN0YXJ0cyBlcnJvcmVkOyBwcmV2ZW50QWJvcnQgPSB1bmRlZmlu
ZWQgKGZhbHN5KTsgZnVsZmlsbGVkIGFib3J0IHByb21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTog
V3JpdGFibGVTdHJlYW0KLUZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBz
dGFydHMgZXJyb3JlZDsgcHJldmVudEFib3J0ID0gbnVsbCAoZmFsc3kpOyBmdWxmaWxsZWQgYWJv
cnQgcHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBFcnJv
cnMgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHN0YXJ0cyBlcnJvcmVkOyBwcmV2ZW50QWJv
cnQgPSBmYWxzZSAoZmFsc3kpOyBmdWxmaWxsZWQgYWJvcnQgcHJvbWlzZSBDYW4ndCBmaW5kIHZh
cmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGZv
cndhcmQ6IHN0YXJ0cyBlcnJvcmVkOyBwcmV2ZW50QWJvcnQgPSAwIChmYWxzeSk7IGZ1bGZpbGxl
ZCBhYm9ydCBwcm9taXNlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlM
IEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc3RhcnRzIGVycm9yZWQ7IHByZXZl
bnRBYm9ydCA9IC0wIChmYWxzeSk7IGZ1bGZpbGxlZCBhYm9ydCBwcm9taXNlIENhbid0IGZpbmQg
dmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQg
Zm9yd2FyZDogc3RhcnRzIGVycm9yZWQ7IHByZXZlbnRBYm9ydCA9IE5hTiAoZmFsc3kpOyBmdWxm
aWxsZWQgYWJvcnQgcHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQot
RkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHN0YXJ0cyBlcnJvcmVkOyBw
cmV2ZW50QWJvcnQgPSAgKGZhbHN5KTsgZnVsZmlsbGVkIGFib3J0IHByb21pc2UgQ2FuJ3QgZmlu
ZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRl
ZCBmb3J3YXJkOiBzdGFydHMgZXJyb3JlZDsgcHJldmVudEFib3J0ID0gdHJ1ZSAodHJ1dGh5KSBD
YW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBFcnJvcnMgbXVzdCBiZSBw
cm9wYWdhdGVkIGZvcndhcmQ6IHN0YXJ0cyBlcnJvcmVkOyBwcmV2ZW50QWJvcnQgPSBhICh0cnV0
aHkpIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIEVycm9ycyBtdXN0
IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc3RhcnRzIGVycm9yZWQ7IHByZXZlbnRBYm9ydCA9IDEg
KHRydXRoeSkgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgRXJyb3Jz
IG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBzdGFydHMgZXJyb3JlZDsgcHJldmVudEFib3J0
ID0gU3ltYm9sKCkgKHRydXRoeSkgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0K
LUZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBzdGFydHMgZXJyb3JlZDsg
cHJldmVudEFib3J0ID0gW29iamVjdCBPYmplY3RdICh0cnV0aHkpIENhbid0IGZpbmQgdmFyaWFi
bGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2Fy
ZDogc3RhcnRzIGVycm9yZWQ7IHByZXZlbnRBYm9ydCA9IHRydWUsIHByZXZlbnRDYW5jZWwgPSB0
cnVlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIEVycm9ycyBtdXN0
IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc3RhcnRzIGVycm9yZWQ7IHByZXZlbnRBYm9ydCA9IHRy
dWUsIHByZXZlbnRDYW5jZWwgPSB0cnVlLCBwcmV2ZW50Q2xvc2UgPSB0cnVlIENhbid0IGZpbmQg
dmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQg
Zm9yd2FyZDogYmVjb21lcyBlcnJvcmVkIHdoaWxlIGVtcHR5OyBwcmV2ZW50QWJvcnQgPSBmYWxz
ZTsgZnVsZmlsbGVkIGFib3J0IHByb21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVT
dHJlYW0KLUZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBiZWNvbWVzIGVy
cm9yZWQgd2hpbGUgZW1wdHk7IHByZXZlbnRBYm9ydCA9IGZhbHNlOyByZWplY3RlZCBhYm9ydCBw
cm9taXNlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIEVycm9ycyBt
dXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogYmVjb21lcyBlcnJvcmVkIHdoaWxlIGVtcHR5OyBw
cmV2ZW50QWJvcnQgPSB0cnVlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1G
QUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogYmVjb21lcyBlcnJvcmVkIHdo
aWxlIGVtcHR5OyBkZXN0IG5ldmVyIGRlc2lyZXMgY2h1bmtzOyBwcmV2ZW50QWJvcnQgPSBmYWxz
ZTsgZnVsZmlsbGVkIGFib3J0IHByb21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVT
dHJlYW0KLUZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBiZWNvbWVzIGVy
cm9yZWQgd2hpbGUgZW1wdHk7IGRlc3QgbmV2ZXIgZGVzaXJlcyBjaHVua3M7IHByZXZlbnRBYm9y
dCA9IGZhbHNlOyByZWplY3RlZCBhYm9ydCBwcm9taXNlIENhbid0IGZpbmQgdmFyaWFibGU6IFdy
aXRhYmxlU3RyZWFtCi1GQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogYmVj
b21lcyBlcnJvcmVkIHdoaWxlIGVtcHR5OyBkZXN0IG5ldmVyIGRlc2lyZXMgY2h1bmtzOyBwcmV2
ZW50QWJvcnQgPSB0cnVlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlM
IEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogYmVjb21lcyBlcnJvcmVkIGFmdGVy
IG9uZSBjaHVuazsgcHJldmVudEFib3J0ID0gZmFsc2U7IGZ1bGZpbGxlZCBhYm9ydCBwcm9taXNl
IENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIEVycm9ycyBtdXN0IGJl
IHByb3BhZ2F0ZWQgZm9yd2FyZDogYmVjb21lcyBlcnJvcmVkIGFmdGVyIG9uZSBjaHVuazsgcHJl
dmVudEFib3J0ID0gZmFsc2U7IHJlamVjdGVkIGFib3J0IHByb21pc2UgQ2FuJ3QgZmluZCB2YXJp
YWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3
YXJkOiBiZWNvbWVzIGVycm9yZWQgYWZ0ZXIgb25lIGNodW5rOyBwcmV2ZW50QWJvcnQgPSB0cnVl
IENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIEVycm9ycyBtdXN0IGJl
IHByb3BhZ2F0ZWQgZm9yd2FyZDogYmVjb21lcyBlcnJvcmVkIGFmdGVyIG9uZSBjaHVuazsgZGVz
dCBuZXZlciBkZXNpcmVzIGNodW5rczsgcHJldmVudEFib3J0ID0gZmFsc2U7IGZ1bGZpbGxlZCBh
Ym9ydCBwcm9taXNlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIEVy
cm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogYmVjb21lcyBlcnJvcmVkIGFmdGVyIG9u
ZSBjaHVuazsgZGVzdCBuZXZlciBkZXNpcmVzIGNodW5rczsgcHJldmVudEFib3J0ID0gZmFsc2U7
IHJlamVjdGVkIGFib3J0IHByb21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJl
YW0KLUZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBiZWNvbWVzIGVycm9y
ZWQgYWZ0ZXIgb25lIGNodW5rOyBkZXN0IG5ldmVyIGRlc2lyZXMgY2h1bmtzOyBwcmV2ZW50QWJv
cnQgPSB0cnVlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIEVycm9y
cyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc2h1dGRvd24gbXVzdCBub3Qgb2NjdXIgdW50
aWwgdGhlIGZpbmFsIHdyaXRlIGNvbXBsZXRlcyBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJs
ZVN0cmVhbQotRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHNodXRkb3du
IG11c3Qgbm90IG9jY3VyIHVudGlsIHRoZSBmaW5hbCB3cml0ZSBjb21wbGV0ZXM7IHByZXZlbnRB
Ym9ydCA9IHRydWUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgRXJy
b3JzIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBzaHV0ZG93biBtdXN0IG5vdCBvY2N1ciB1
bnRpbCB0aGUgZmluYWwgd3JpdGUgY29tcGxldGVzOyBiZWNvbWVzIGVycm9yZWQgYWZ0ZXIgZmly
c3Qgd3JpdGUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgRXJyb3Jz
IG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBzaHV0ZG93biBtdXN0IG5vdCBvY2N1ciB1bnRp
bCB0aGUgZmluYWwgd3JpdGUgY29tcGxldGVzOyBiZWNvbWVzIGVycm9yZWQgYWZ0ZXIgZmlyc3Qg
d3JpdGU7IHByZXZlbnRBYm9ydCA9IHRydWUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVT
dHJlYW0KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zdHJlYW1zL3BpcGluZy9lcnJvci1wcm9wYWdhdGlvbi1mb3J3YXJkLnNlcnZpY2V3
b3JrZXIuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy9waXBpbmcvZXJyb3ItcHJvcGFnYXRpb24tZm9yd2FyZC5zZXJ2aWNld29y
a2VyLmh0dHBzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU0NWYyMGI3MTZi
M2NjMDRkNmFmNDNjZmEyNzJmNzFlM2UxYzAxMjkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zdHJlYW1zL3BpcGluZy9lcnJvci1wcm9wYWdhdGlvbi1mb3J3YXJkLnNlcnZpY2V3
b3JrZXIuaHR0cHMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLTwhRE9DVFlQ
RSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHRpdGxlPmVycm9yLXByb3BhZ2F0aW9u
LWZvcndhcmQuanMgc2VydmljZSB3b3JrZXIgd3JhcHBlciBmaWxlPC90aXRsZT4KLQotPHNjcmlw
dCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9
Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9
Ii9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvcmVzb3VyY2VzL3Rlc3QtaGVscGVycy5z
dWIuanMiPjwvc2NyaXB0PgotCi08c2NyaXB0PgotJ3VzZSBzdHJpY3QnOwotc2VydmljZV93b3Jr
ZXJfdGVzdCgnZXJyb3ItcHJvcGFnYXRpb24tZm9yd2FyZC5qcycsICdTZXJ2aWNlIHdvcmtlciB0
ZXN0IHNldHVwJyk7Ci08L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvZXJyb3ItcHJvcGFnYXRpb24t
Zm9yd2FyZC5zaGFyZWR3b3JrZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9lcnJvci1wcm9wYWdhdGlvbi1m
b3J3YXJkLnNoYXJlZHdvcmtlci1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDA5ZDVkMjUwOWQ3ODQ3ZThjZDZmZTY2MDZhYTYwY2RkMzNhYTQ3NGUuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9lcnJvci1wcm9wYWdhdGlv
bi1mb3J3YXJkLnNoYXJlZHdvcmtlci1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw1
ICswLDAgQEAKLUNPTlNPTEUgTUVTU0FHRTogUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFy
aWFibGU6IFNoYXJlZFdvcmtlcgotCi1IYXJuZXNzIEVycm9yIChGQUlMKSwgbWVzc2FnZSA9IFJl
ZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBTaGFyZWRXb3JrZXIKLQotCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvcGlwaW5nL2Vycm9yLXByb3BhZ2F0aW9uLWZvcndhcmQuc2hhcmVkd29ya2VyLmh0bWwgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5n
L2Vycm9yLXByb3BhZ2F0aW9uLWZvcndhcmQuc2hhcmVkd29ya2VyLmh0bWwKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDEzZDAyYzAzZjM0NjU3ZDk0MzY5ODMyYWExYzNlZjNhOWRmMGYy
OTEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9lcnJv
ci1wcm9wYWdhdGlvbi1mb3J3YXJkLnNoYXJlZHdvcmtlci5odG1sCisrKyAvZGV2L251bGwKQEAg
LTEsMTEgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08
dGl0bGU+ZXJyb3ItcHJvcGFnYXRpb24tZm9yd2FyZC5qcyBzaGFyZWQgd29ya2VyIHdyYXBwZXIg
ZmlsZTwvdGl0bGU+Ci0KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48
L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48
L3NjcmlwdD4KLQotPHNjcmlwdD4KLSd1c2Ugc3RyaWN0JzsKLWZldGNoX3Rlc3RzX2Zyb21fd29y
a2VyKG5ldyBTaGFyZWRXb3JrZXIoJ2Vycm9yLXByb3BhZ2F0aW9uLWZvcndhcmQuanMnKSk7Ci08
L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvZmxvdy1jb250cm9sLmFueS1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5n
L2Zsb3ctY29udHJvbC5hbnktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJjZTVjMjMwZGUzOTZh
NzhjY2MyZTkyZjRiNTQwMjBmNjY1MjQ5ODAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Zsb3ctY29u
dHJvbC5hbnktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNyBAQAorCitGQUlMIFBpcGluZyBmcm9t
IGEgbm9uLWVtcHR5IFJlYWRhYmxlU3RyZWFtIGludG8gYSBXcml0YWJsZVN0cmVhbSB0aGF0IGRv
ZXMgbm90IGRlc2lyZSBjaHVua3MgcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdp
dGggdmFsdWU6IG9iamVjdCAiVHlwZUVycm9yOiB3cy5jb250cm9sbGVyLmVycm9yIGlzIG5vdCBh
IGZ1bmN0aW9uLiAoSW4gJ3dzLmNvbnRyb2xsZXIuZXJyb3IoZXJyb3IxKScsICd3cy5jb250cm9s
bGVyLmVycm9yJyBpcyB1bmRlZmluZWQpIgorRkFJTCBQaXBpbmcgZnJvbSBhIG5vbi1lbXB0eSBS
ZWFkYWJsZVN0cmVhbSBpbnRvIGEgV3JpdGFibGVTdHJlYW0gdGhhdCBkb2VzIG5vdCBkZXNpcmUg
Y2h1bmtzLCBidXQgdGhlbiBkb2VzIHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKElu
ICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkKK0ZBSUwgUGlw
aW5nIGZyb20gYW4gZW1wdHkgUmVhZGFibGVTdHJlYW0gaW50byBhIFdyaXRhYmxlU3RyZWFtIHRo
YXQgZG9lcyBub3QgZGVzaXJlIGNodW5rcywgYnV0IHRoZW4gdGhlIHJlYWRhYmxlIHN0cmVhbSBi
ZWNvbWVzIG5vbi1lbXB0eSBhbmQgdGhlIHdyaXRhYmxlIHN0cmVhbSBzdGFydHMgZGVzaXJpbmcg
Y2h1bmtzIHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0ZXIo
KScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkKK0ZBSUwgUGlwaW5nIGZyb20gYSBSZWFk
YWJsZVN0cmVhbSB0byBhIFdyaXRhYmxlU3RyZWFtIHRoYXQgZGVzaXJlcyBtb3JlIGNodW5rcyBi
ZWZvcmUgZmluaXNoaW5nIHdpdGggcHJldmlvdXMgb25lcyB3cy5nZXRXcml0ZXIgaXMgbm90IGEg
ZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3JpdGVyKCknLCAnd3MuZ2V0V3JpdGVyJyBpcyB1bmRlZmlu
ZWQpCitGQUlMIFBpcGluZyB0byBhIFdyaXRhYmxlU3RyZWFtIHRoYXQgZG9lcyBub3QgY29uc3Vt
ZSB0aGUgd3JpdGVzIGZhc3QgZW5vdWdoIGV4ZXJ0cyBiYWNrcHJlc3N1cmUgb24gdGhlIFJlYWRh
YmxlU3RyZWFtIGFzc2VydF9hcnJheV9lcXVhbHM6IGF0IHN0ZXAgNCwgdGhlIGRlc2lyZWRTaXpl
IGF0IHRoZSBsYXN0IGVucXVldWUgKHN0ZXAgMykgbXVzdCBoYXZlIGJlZW4gMCBleHBlY3RlZCBw
cm9wZXJ0eSAxIHRvIGJlIDAgYnV0IGdvdCAxIChleHBlY3RlZCBhcnJheSBbMSwgMF0gZ290IFsx
LCAxXSkKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zdHJlYW1zL3BpcGluZy9mbG93LWNvbnRyb2wuYW55Lmh0bWwgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Zsb3ctY29u
dHJvbC5hbnkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMzgyOTEzNTI4ZTY5M2IzYTVkNTZjNjYwYTQ1MDYw
OTgwYjU0OGMzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9mbG93LWNvbnRyb2wuYW55Lmh0bWwKQEAg
LTAsMCArMSBAQAorPCEtLSBUaGlzIGZpbGUgaXMgcmVxdWlyZWQgZm9yIFdlYktpdCB0ZXN0IGlu
ZnJhc3RydWN0dXJlIHRvIHJ1biB0aGUgdGVtcGxhdGVkIHRlc3QgLS0+ClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9mbG93LWNvbnRyb2wuYW55LmpzIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9mbG93
LWNvbnRyb2wuYW55LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRiODNjMDExZjRhNzE4ZGRkZGVmODg2YzI1NTg4
Yzg4YjAwN2U0MzgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Zsb3ctY29udHJvbC5hbnkuanMKQEAg
LTAsMCArMSwyOTcgQEAKKy8vIE1FVEE6IGdsb2JhbD13aW5kb3csd29ya2VyLGpzc2hlbGwKKy8v
IE1FVEE6IHNjcmlwdD0uLi9yZXNvdXJjZXMvdGVzdC11dGlscy5qcworLy8gTUVUQTogc2NyaXB0
PS4uL3Jlc291cmNlcy9ycy11dGlscy5qcworLy8gTUVUQTogc2NyaXB0PS4uL3Jlc291cmNlcy9y
ZWNvcmRpbmctc3RyZWFtcy5qcworJ3VzZSBzdHJpY3QnOworCitjb25zdCBlcnJvcjEgPSBuZXcg
RXJyb3IoJ2Vycm9yMSEnKTsKK2Vycm9yMS5uYW1lID0gJ2Vycm9yMSc7CisKK3Byb21pc2VfdGVz
dCh0ID0+IHsKKworICBjb25zdCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKHsKKyAgICBz
dGFydChjb250cm9sbGVyKSB7CisgICAgICBjb250cm9sbGVyLmVucXVldWUoJ2EnKTsKKyAgICAg
IGNvbnRyb2xsZXIuZW5xdWV1ZSgnYicpOworICAgICAgY29udHJvbGxlci5jbG9zZSgpOworICAg
IH0KKyAgfSk7CisKKyAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSh1bmRlZmlu
ZWQsIG5ldyBDb3VudFF1ZXVpbmdTdHJhdGVneSh7IGhpZ2hXYXRlck1hcms6IDAgfSkpOworCisg
IGNvbnN0IHBpcGVQcm9taXNlID0gcnMucGlwZVRvKHdzLCB7IHByZXZlbnRDYW5jZWw6IHRydWUg
fSk7CisKKyAgLy8gV2FpdCBhbmQgbWFrZSBzdXJlIGl0IGRvZXNuJ3QgZG8gYW55IHJlYWRpbmcu
CisgIHJldHVybiBmbHVzaEFzeW5jRXZlbnRzKCkudGhlbigoKSA9PiB7CisgICAgd3MuY29udHJv
bGxlci5lcnJvcihlcnJvcjEpOworICB9KQorICAudGhlbigoKSA9PiBwcm9taXNlX3JlamVjdHNf
ZXhhY3RseSh0LCBlcnJvcjEsIHBpcGVQcm9taXNlLCAncGlwZVRvIG11c3QgcmVqZWN0IHdpdGgg
dGhlIHNhbWUgZXJyb3InKSkKKyAgLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9hcnJheV9lcXVh
bHMocnMuZXZlbnRzV2l0aG91dFB1bGxzLCBbXSk7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3
cy5ldmVudHMsIFtdKTsKKyAgfSkKKyAgLnRoZW4oKCkgPT4gcmVhZGFibGVTdHJlYW1Ub0FycmF5
KHJzKSkKKyAgLnRoZW4oY2h1bmtzTm90UHJldmlvdXNseVJlYWQgPT4geworICAgIGFzc2VydF9h
cnJheV9lcXVhbHMoY2h1bmtzTm90UHJldmlvdXNseVJlYWQsIFsnYScsICdiJ10pOworICB9KTsK
KworfSwgJ1BpcGluZyBmcm9tIGEgbm9uLWVtcHR5IFJlYWRhYmxlU3RyZWFtIGludG8gYSBXcml0
YWJsZVN0cmVhbSB0aGF0IGRvZXMgbm90IGRlc2lyZSBjaHVua3MnKTsKKworcHJvbWlzZV90ZXN0
KCgpID0+IHsKKworICBjb25zdCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKHsKKyAgICBz
dGFydChjb250cm9sbGVyKSB7CisgICAgICBjb250cm9sbGVyLmVucXVldWUoJ2InKTsKKyAgICAg
IGNvbnRyb2xsZXIuY2xvc2UoKTsKKyAgICB9CisgIH0pOworCisgIGxldCByZXNvbHZlV3JpdGVQ
cm9taXNlOworICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKHsKKyAgICB3cml0
ZSgpIHsKKyAgICAgIGlmICghcmVzb2x2ZVdyaXRlUHJvbWlzZSkgeworICAgICAgICAvLyBmaXJz
dCB3cml0ZQorICAgICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7CisgICAgICAg
ICAgcmVzb2x2ZVdyaXRlUHJvbWlzZSA9IHJlc29sdmU7CisgICAgICAgIH0pOworICAgICAgfQor
ICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKKyAgICB9CisgIH0pOworCisgIGNvbnN0IHdyaXRlciA9
IHdzLmdldFdyaXRlcigpOworICBjb25zdCBmaXJzdFdyaXRlUHJvbWlzZSA9IHdyaXRlci53cml0
ZSgnYScpOworICBhc3NlcnRfZXF1YWxzKHdyaXRlci5kZXNpcmVkU2l6ZSwgMCwgJ2FmdGVyIHdy
aXRpbmcgdGhlIHdyaXRlclwncyBkZXNpcmVkU2l6ZSBtdXN0IGJlIDAnKTsKKyAgd3JpdGVyLnJl
bGVhc2VMb2NrKCk7CisKKyAgLy8gZmlyc3RXcml0ZVByb21pc2Ugd29uJ3Qgc2V0dGxlIHVudGls
IHdlIGNhbGwgcmVzb2x2ZVdyaXRlUHJvbWlzZS4KKworICBjb25zdCBwaXBlUHJvbWlzZSA9IHJz
LnBpcGVUbyh3cyk7CisKKyAgcmV0dXJuIGZsdXNoQXN5bmNFdmVudHMoKS50aGVuKCgpID0+IHJl
c29sdmVXcml0ZVByb21pc2UoKSkKKyAgICAudGhlbigoKSA9PiBQcm9taXNlLmFsbChbZmlyc3RX
cml0ZVByb21pc2UsIHBpcGVQcm9taXNlXSkpCisgICAgLnRoZW4oKCkgPT4geworICAgICAgYXNz
ZXJ0X2FycmF5X2VxdWFscyhycy5ldmVudHNXaXRob3V0UHVsbHMsIFtdKTsKKyAgICAgIGFzc2Vy
dF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ3dyaXRlJywgJ2EnLCAnd3JpdGUnLCAnYicsICdj
bG9zZSddKTsKKyAgICB9KTsKKworfSwgJ1BpcGluZyBmcm9tIGEgbm9uLWVtcHR5IFJlYWRhYmxl
U3RyZWFtIGludG8gYSBXcml0YWJsZVN0cmVhbSB0aGF0IGRvZXMgbm90IGRlc2lyZSBjaHVua3Ms
IGJ1dCB0aGVuIGRvZXMnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKworICBjb25zdCBycyA9
IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKCk7CisKKyAgbGV0IHJlc29sdmVXcml0ZVByb21pc2U7
CisgIGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0oeworICAgIHdyaXRlKCkgewor
ICAgICAgaWYgKCFyZXNvbHZlV3JpdGVQcm9taXNlKSB7CisgICAgICAgIC8vIGZpcnN0IHdyaXRl
CisgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKKyAgICAgICAgICByZXNv
bHZlV3JpdGVQcm9taXNlID0gcmVzb2x2ZTsKKyAgICAgICAgfSk7CisgICAgICB9CisgICAgICBy
ZXR1cm4gdW5kZWZpbmVkOworICAgIH0KKyAgfSk7CisKKyAgY29uc3Qgd3JpdGVyID0gd3MuZ2V0
V3JpdGVyKCk7CisgIHdyaXRlci53cml0ZSgnYScpOworCisgIHJldHVybiBmbHVzaEFzeW5jRXZl
bnRzKCkudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsn
d3JpdGUnLCAnYSddKTsKKyAgICBhc3NlcnRfZXF1YWxzKHdyaXRlci5kZXNpcmVkU2l6ZSwgMCwg
J2FmdGVyIHdyaXRpbmcgdGhlIHdyaXRlclwncyBkZXNpcmVkU2l6ZSBtdXN0IGJlIDAnKTsKKyAg
ICB3cml0ZXIucmVsZWFzZUxvY2soKTsKKworICAgIGNvbnN0IHBpcGVQcm9taXNlID0gcnMucGlw
ZVRvKHdzKTsKKworICAgIHJzLmNvbnRyb2xsZXIuZW5xdWV1ZSgnYicpOworICAgIHJlc29sdmVX
cml0ZVByb21pc2UoKTsKKyAgICBycy5jb250cm9sbGVyLmNsb3NlKCk7CisKKyAgICByZXR1cm4g
cGlwZVByb21pc2UudGhlbigoKSA9PiB7CisgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJzLmV2
ZW50c1dpdGhvdXRQdWxscywgW10pOworICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVu
dHMsIFsnd3JpdGUnLCAnYScsICd3cml0ZScsICdiJywgJ2Nsb3NlJ10pOworICAgIH0pOworICB9
KTsKKworfSwgJ1BpcGluZyBmcm9tIGFuIGVtcHR5IFJlYWRhYmxlU3RyZWFtIGludG8gYSBXcml0
YWJsZVN0cmVhbSB0aGF0IGRvZXMgbm90IGRlc2lyZSBjaHVua3MsIGJ1dCB0aGVuIHRoZSByZWFk
YWJsZSAnICsKKyAgICdzdHJlYW0gYmVjb21lcyBub24tZW1wdHkgYW5kIHRoZSB3cml0YWJsZSBz
dHJlYW0gc3RhcnRzIGRlc2lyaW5nIGNodW5rcycpOworCitwcm9taXNlX3Rlc3QoKCkgPT4gewor
ICBjb25zdCB1bnJlYWRDaHVua3MgPSBbJ2InLCAnYycsICdkJ107CisKKyAgY29uc3QgcnMgPSBy
ZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSh7CisgICAgcHVsbChjb250cm9sbGVyKSB7CisgICAgICBj
b250cm9sbGVyLmVucXVldWUodW5yZWFkQ2h1bmtzLnNoaWZ0KCkpOworICAgICAgaWYgKHVucmVh
ZENodW5rcy5sZW5ndGggPT09IDApIHsKKyAgICAgICAgY29udHJvbGxlci5jbG9zZSgpOworICAg
ICAgfQorICAgIH0KKyAgfSwgbmV3IENvdW50UXVldWluZ1N0cmF0ZWd5KHsgaGlnaFdhdGVyTWFy
azogMCB9KSk7CisKKyAgbGV0IHJlc29sdmVXcml0ZVByb21pc2U7CisgIGNvbnN0IHdzID0gcmVj
b3JkaW5nV3JpdGFibGVTdHJlYW0oeworICAgIHdyaXRlKCkgeworICAgICAgaWYgKCFyZXNvbHZl
V3JpdGVQcm9taXNlKSB7CisgICAgICAgIC8vIGZpcnN0IHdyaXRlCisgICAgICAgIHJldHVybiBu
ZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKKyAgICAgICAgICByZXNvbHZlV3JpdGVQcm9taXNlID0g
cmVzb2x2ZTsKKyAgICAgICAgfSk7CisgICAgICB9CisgICAgICByZXR1cm4gdW5kZWZpbmVkOwor
ICAgIH0KKyAgfSwgbmV3IENvdW50UXVldWluZ1N0cmF0ZWd5KHsgaGlnaFdhdGVyTWFyazogMyB9
KSk7CisKKyAgY29uc3Qgd3JpdGVyID0gd3MuZ2V0V3JpdGVyKCk7CisgIGNvbnN0IGZpcnN0V3Jp
dGVQcm9taXNlID0gd3JpdGVyLndyaXRlKCdhJyk7CisgIGFzc2VydF9lcXVhbHMod3JpdGVyLmRl
c2lyZWRTaXplLCAyLCAnYWZ0ZXIgd3JpdGluZyB0aGUgd3JpdGVyXCdzIGRlc2lyZWRTaXplIG11
c3QgYmUgMicpOworICB3cml0ZXIucmVsZWFzZUxvY2soKTsKKworICAvLyBmaXJzdFdyaXRlUHJv
bWlzZSB3b24ndCBzZXR0bGUgdW50aWwgd2UgY2FsbCByZXNvbHZlV3JpdGVQcm9taXNlLgorCisg
IGNvbnN0IHBpcGVQcm9taXNlID0gcnMucGlwZVRvKHdzKTsKKworICByZXR1cm4gZmx1c2hBc3lu
Y0V2ZW50cygpLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRz
LCBbJ3dyaXRlJywgJ2EnXSk7CisgICAgYXNzZXJ0X2VxdWFscyh1bnJlYWRDaHVua3MubGVuZ3Ro
LCAxLCAnY2h1bmtzIHNob3VsZCBjb250aW51ZSB0byBiZSBlbnF1ZXVlZCB1bnRpbCB0aGUgSFdN
IGlzIHJlYWNoZWQnKTsKKyAgfSkudGhlbigoKSA9PiByZXNvbHZlV3JpdGVQcm9taXNlKCkpCisg
ICAgLnRoZW4oKCkgPT4gUHJvbWlzZS5hbGwoW2ZpcnN0V3JpdGVQcm9taXNlLCBwaXBlUHJvbWlz
ZV0pKQorICAgIC50aGVuKCgpID0+IHsKKyAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMocnMuZXZl
bnRzLCBbJ3B1bGwnLCAncHVsbCcsICdwdWxsJ10pOworICAgICAgYXNzZXJ0X2FycmF5X2VxdWFs
cyh3cy5ldmVudHMsIFsnd3JpdGUnLCAnYScsICd3cml0ZScsICdiJywnd3JpdGUnLCAnYycsJ3dy
aXRlJywgJ2QnLCAnY2xvc2UnXSk7CisgICAgfSk7CisKK30sICdQaXBpbmcgZnJvbSBhIFJlYWRh
YmxlU3RyZWFtIHRvIGEgV3JpdGFibGVTdHJlYW0gdGhhdCBkZXNpcmVzIG1vcmUgY2h1bmtzIGJl
Zm9yZSBmaW5pc2hpbmcgd2l0aCBwcmV2aW91cyBvbmVzJyk7CisKK2NsYXNzIFN0ZXBUcmFja2Vy
IHsKKyAgY29uc3RydWN0b3IoKSB7CisgICAgdGhpcy53YWl0ZXJzID0gW107CisgICAgdGhpcy53
YWtlcnMgPSBbXTsKKyAgfQorCisgIC8vIFJldHVybnMgcHJvbWlzZSB3aGljaCByZXNvbHZlcyB3
aGVuIHN0ZXAgYG5gIGlzIHJlYWNoZWQuIEFsc28gc2NoZWR1bGVzIHN0ZXAgbiArIDEgdG8gaGFw
cGVuIHNob3J0bHkgYWZ0ZXIgdGhlCisgIC8vIHByb21pc2UgaXMgcmVzb2x2ZWQuCisgIHdhaXRU
aGVuQWR2YW5jZShuKSB7CisgICAgaWYgKHRoaXMud2FpdGVyc1tuXSA9PT0gdW5kZWZpbmVkKSB7
CisgICAgICB0aGlzLndhaXRlcnNbbl0gPSBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKKyAgICAg
ICAgdGhpcy53YWtlcnNbbl0gPSByZXNvbHZlOworICAgICAgfSk7CisgICAgICB0aGlzLndhaXRl
cnNbbl0KKyAgICAgICAgICAudGhlbigoKSA9PiBmbHVzaEFzeW5jRXZlbnRzKCkpCisgICAgICAg
ICAgLnRoZW4oKCkgPT4geworICAgICAgICAgICAgaWYgKHRoaXMud2FrZXJzW24gKyAxXSAhPT0g
dW5kZWZpbmVkKSB7CisgICAgICAgICAgICAgIHRoaXMud2FrZXJzW24gKyAxXSgpOworICAgICAg
ICAgICAgfQorICAgICAgICAgIH0pOworICAgIH0KKyAgICBpZiAobiA9PSAwKSB7CisgICAgICB0
aGlzLndha2Vyc1swXSgpOworICAgIH0KKyAgICByZXR1cm4gdGhpcy53YWl0ZXJzW25dOworICB9
Cit9CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisgIGNvbnN0IHN0ZXBzID0gbmV3IFN0ZXBUcmFj
a2VyKCk7CisgIGNvbnN0IGRlc2lyZWRTaXplcyA9IFtdOworICBjb25zdCBycyA9IHJlY29yZGlu
Z1JlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjb250cm9sbGVyKSB7CisgICAgICBzdGVwcy53
YWl0VGhlbkFkdmFuY2UoMSkudGhlbigoKSA9PiBlbnF1ZXVlKCdhJykpOworICAgICAgc3RlcHMu
d2FpdFRoZW5BZHZhbmNlKDMpLnRoZW4oKCkgPT4gZW5xdWV1ZSgnYicpKTsKKyAgICAgIHN0ZXBz
LndhaXRUaGVuQWR2YW5jZSg1KS50aGVuKCgpID0+IGVucXVldWUoJ2MnKSk7CisgICAgICBzdGVw
cy53YWl0VGhlbkFkdmFuY2UoNykudGhlbigoKSA9PiBlbnF1ZXVlKCdkJykpOworICAgICAgc3Rl
cHMud2FpdFRoZW5BZHZhbmNlKDExKS50aGVuKCgpID0+IGNvbnRyb2xsZXIuY2xvc2UoKSk7CisK
KyAgICAgIGZ1bmN0aW9uIGVucXVldWUoY2h1bmspIHsKKyAgICAgICAgY29udHJvbGxlci5lbnF1
ZXVlKGNodW5rKTsKKyAgICAgICAgZGVzaXJlZFNpemVzLnB1c2goY29udHJvbGxlci5kZXNpcmVk
U2l6ZSk7CisgICAgICB9CisgICAgfQorICB9KTsKKworICBjb25zdCBjaHVua3NGaW5pc2hlZFdy
aXRpbmcgPSBbXTsKKyAgY29uc3Qgd3JpdGFibGVTdGFydFByb21pc2UgPSBQcm9taXNlLnJlc29s
dmUoKTsKKyAgbGV0IHdyaXRlQ2FsbGVkID0gZmFsc2U7CisgIGNvbnN0IHdzID0gcmVjb3JkaW5n
V3JpdGFibGVTdHJlYW0oeworICAgIHN0YXJ0KCkgeworICAgICAgcmV0dXJuIHdyaXRhYmxlU3Rh
cnRQcm9taXNlOworICAgIH0sCisgICAgd3JpdGUoY2h1bmspIHsKKyAgICAgIGNvbnN0IHdhaXRG
b3JTdGVwID0gd3JpdGVDYWxsZWQgPyAxMiA6IDk7CisgICAgICB3cml0ZUNhbGxlZCA9IHRydWU7
CisgICAgICByZXR1cm4gc3RlcHMud2FpdFRoZW5BZHZhbmNlKHdhaXRGb3JTdGVwKS50aGVuKCgp
ID0+IHsKKyAgICAgICAgY2h1bmtzRmluaXNoZWRXcml0aW5nLnB1c2goY2h1bmspOworICAgICAg
fSk7CisgICAgfQorICB9KTsKKworICByZXR1cm4gd3JpdGFibGVTdGFydFByb21pc2UudGhlbigo
KSA9PiB7CisgICAgY29uc3QgcGlwZVByb21pc2UgPSBycy5waXBlVG8od3MpOworICAgIHN0ZXBz
LndhaXRUaGVuQWR2YW5jZSgwKTsKKworICAgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAgICBz
dGVwcy53YWl0VGhlbkFkdmFuY2UoMikudGhlbigoKSA9PiB7CisgICAgICAgIGFzc2VydF9hcnJh
eV9lcXVhbHMoY2h1bmtzRmluaXNoZWRXcml0aW5nLCBbXSwgJ2F0IHN0ZXAgMiwgemVybyBjaHVu
a3MgbXVzdCBoYXZlIGZpbmlzaGVkIHdyaXRpbmcnKTsKKyAgICAgICAgYXNzZXJ0X2FycmF5X2Vx
dWFscyh3cy5ldmVudHMsIFsnd3JpdGUnLCAnYSddLCAnYXQgc3RlcCAyLCBvbmUgY2h1bmsgbXVz
dCBoYXZlIGJlZW4gd3JpdHRlbicpOworCisgICAgICAgIC8vIFdoZW4gJ2EnICh0aGUgdmVyeSBm
aXJzdCBjaHVuaykgd2FzIGVucXVldWVkLCBpdCB3YXMgaW1tZWRpYXRlbHkgdXNlZCB0byBmdWxm
aWxsIHRoZSBvdXRzdGFuZGluZyByZWFkIHJlcXVlc3QKKyAgICAgICAgLy8gcHJvbWlzZSwgbGVh
dmluZyB0aGUgcXVldWUgZW1wdHkuCisgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoZGVzaXJl
ZFNpemVzLCBbMV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2F0IHN0ZXAgMiwgdGhl
IGRlc2lyZWRTaXplIGF0IHRoZSBsYXN0IGVucXVldWUgKHN0ZXAgMSkgbXVzdCBoYXZlIGJlZW4g
MScpOworICAgICAgICBhc3NlcnRfZXF1YWxzKHJzLmNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDEs
ICdhdCBzdGVwIDIsIHRoZSBjdXJyZW50IGRlc2lyZWRTaXplIG11c3QgYmUgMScpOworICAgICAg
fSksCisKKyAgICAgIHN0ZXBzLndhaXRUaGVuQWR2YW5jZSg0KS50aGVuKCgpID0+IHsKKyAgICAg
ICAgYXNzZXJ0X2FycmF5X2VxdWFscyhjaHVua3NGaW5pc2hlZFdyaXRpbmcsIFtdLCAnYXQgc3Rl
cCA0LCB6ZXJvIGNodW5rcyBtdXN0IGhhdmUgZmluaXNoZWQgd3JpdGluZycpOworICAgICAgICBh
c3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWyd3cml0ZScsICdhJ10sICdhdCBzdGVwIDQs
IG9uZSBjaHVuayBtdXN0IGhhdmUgYmVlbiB3cml0dGVuJyk7CisKKyAgICAgICAgLy8gV2hlbiAn
Yicgd2FzIGVucXVldWVkIGF0IHN0ZXAgMywgdGhlIHF1ZXVlIHdhcyBhbHNvIGVtcHR5LCBzaW5j
ZSBpbW1lZGlhdGVseSBhZnRlciBlbnF1ZXVpbmcgJ2EnIGF0CisgICAgICAgIC8vIHN0ZXAgMSwg
aXQgd2FzIGRlcXVldWVkIGluIG9yZGVyIHRvIGZ1bGZpbGwgdGhlIHJlYWQoKSBjYWxsIHRoYXQg
d2FzIG1hZGUgYXQgc3RlcCAwLiBUaHVzIHRoZSBxdWV1ZQorICAgICAgICAvLyBoYWQgc2l6ZSAx
ICh0aHVzIGRlc2lyZWRTaXplIG9mIDApLgorICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGRl
c2lyZWRTaXplcywgWzEsIDBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhdCBzdGVw
IDQsIHRoZSBkZXNpcmVkU2l6ZSBhdCB0aGUgbGFzdCBlbnF1ZXVlIChzdGVwIDMpIG11c3QgaGF2
ZSBiZWVuIDAnKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhycy5jb250cm9sbGVyLmRlc2lyZWRT
aXplLCAwLCAnYXQgc3RlcCA0LCB0aGUgY3VycmVudCBkZXNpcmVkU2l6ZSBtdXN0IGJlIDAnKTsK
KyAgICAgIH0pLAorCisgICAgICBzdGVwcy53YWl0VGhlbkFkdmFuY2UoNikudGhlbigoKSA9PiB7
CisgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoY2h1bmtzRmluaXNoZWRXcml0aW5nLCBbXSwg
J2F0IHN0ZXAgNiwgemVybyBjaHVua3MgbXVzdCBoYXZlIGZpbmlzaGVkIHdyaXRpbmcnKTsKKyAg
ICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsnd3JpdGUnLCAnYSddLCAnYXQg
c3RlcCA2LCBvbmUgY2h1bmsgbXVzdCBoYXZlIGJlZW4gd3JpdHRlbicpOworCisgICAgICAgIC8v
IFdoZW4gJ2MnIHdhcyBlbnF1ZXVlZCBhdCBzdGVwIDUsIHRoZSBxdWV1ZSB3YXMgbm90IGVtcHR5
OyBpdCBoYWQgJ2InIGluIGl0LCBzaW5jZSAnYicgd2lsbCBub3QgYmUgcmVhZCB1bnRpbAorICAg
ICAgICAvLyB0aGUgZmlyc3Qgd3JpdGUgY29tcGxldGVzIGF0IHN0ZXAgOS4gVGh1cywgdGhlIHF1
ZXVlIHNpemUgaXMgMiBhZnRlciBlbnF1ZXVpbmcgJ2MnLCBnaXZpbmcgYSBkZXNpcmVkU2l6ZSBv
ZgorICAgICAgICAvLyAtMS4KKyAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhkZXNpcmVkU2l6
ZXMsIFsxLCAwLCAtMV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2F0IHN0ZXAgNiwg
dGhlIGRlc2lyZWRTaXplIGF0IHRoZSBsYXN0IGVucXVldWUgKHN0ZXAgNSkgbXVzdCBoYXZlIGJl
ZW4gLTEnKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhycy5jb250cm9sbGVyLmRlc2lyZWRTaXpl
LCAtMSwgJ2F0IHN0ZXAgNiwgdGhlIGN1cnJlbnQgZGVzaXJlZFNpemUgbXVzdCBiZSAtMScpOwor
ICAgICAgfSksCisKKyAgICAgIHN0ZXBzLndhaXRUaGVuQWR2YW5jZSg4KS50aGVuKCgpID0+IHsK
KyAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhjaHVua3NGaW5pc2hlZFdyaXRpbmcsIFtdLCAn
YXQgc3RlcCA4LCB6ZXJvIGNodW5rcyBtdXN0IGhhdmUgZmluaXNoZWQgd3JpdGluZycpOworICAg
ICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWyd3cml0ZScsICdhJ10sICdhdCBz
dGVwIDgsIG9uZSBjaHVuayBtdXN0IGhhdmUgYmVlbiB3cml0dGVuJyk7CisKKyAgICAgICAgLy8g
V2hlbiAnZCcgd2FzIGVucXVldWVkIGF0IHN0ZXAgNywgdGhlIHNpdHVhdGlvbiBpcyB0aGUgc2Ft
ZSBhcyBiZWZvcmUsIGxlYWRpbmcgdG8gYSBxdWV1ZSBjb250YWluaW5nICdiJywgJ2MnLAorICAg
ICAgICAvLyBhbmQgJ2QnLgorICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGRlc2lyZWRTaXpl
cywgWzEsIDAsIC0xLCAtMl0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2F0IHN0ZXAg
OCwgdGhlIGRlc2lyZWRTaXplIGF0IHRoZSBsYXN0IGVucXVldWUgKHN0ZXAgNykgbXVzdCBoYXZl
IGJlZW4gLTInKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhycy5jb250cm9sbGVyLmRlc2lyZWRT
aXplLCAtMiwgJ2F0IHN0ZXAgOCwgdGhlIGN1cnJlbnQgZGVzaXJlZFNpemUgbXVzdCBiZSAtMicp
OworICAgICAgfSksCisKKyAgICAgIHN0ZXBzLndhaXRUaGVuQWR2YW5jZSgxMCkudGhlbigoKSA9
PiB7CisgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoY2h1bmtzRmluaXNoZWRXcml0aW5nLCBb
J2EnXSwgJ2F0IHN0ZXAgMTAsIG9uZSBjaHVuayBtdXN0IGhhdmUgZmluaXNoZWQgd3JpdGluZycp
OworICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWyd3cml0ZScsICdhJywg
J3dyaXRlJywgJ2InXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXQgc3RlcCAxMCwg
dHdvIGNodW5rcyBtdXN0IGhhdmUgYmVlbiB3cml0dGVuJyk7CisKKyAgICAgICAgYXNzZXJ0X2Vx
dWFscyhycy5jb250cm9sbGVyLmRlc2lyZWRTaXplLCAtMSwgJ2F0IHN0ZXAgMTAsIHRoZSBjdXJy
ZW50IGRlc2lyZWRTaXplIG11c3QgYmUgLTEnKTsKKyAgICAgIH0pLAorCisgICAgICBwaXBlUHJv
bWlzZS50aGVuKCgpID0+IHsKKyAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhkZXNpcmVkU2l6
ZXMsIFsxLCAwLCAtMSwgLTJdLCAnYmFja3ByZXNzdXJlIG11c3QgaGF2ZSBiZWVuIGV4ZXJ0ZWQg
YXQgdGhlIHNvdXJjZScpOworICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGNodW5rc0Zpbmlz
aGVkV3JpdGluZywgWydhJywgJ2InLCAnYycsICdkJ10sICdhbGwgY2h1bmtzIGZpbmlzaGVkIHdy
aXRpbmcnKTsKKworICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJzLmV2ZW50c1dpdGhvdXRQ
dWxscywgW10sICdub3RoaW5nIHVuZXhwZWN0ZWQgc2hvdWxkIGhhcHBlbiB0byB0aGUgUmVhZGFi
bGVTdHJlYW0nKTsKKyAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsnd3Jp
dGUnLCAnYScsICd3cml0ZScsICdiJywgJ3dyaXRlJywgJ2MnLCAnd3JpdGUnLCAnZCcsICdjbG9z
ZSddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhbGwgY2h1bmtzIHdlcmUgd3JpdHRl
biAoYW5kIHRoZSBXcml0YWJsZVN0cmVhbSBjbG9zZWQpJyk7CisgICAgICB9KQorICAgIF0pOwor
ICB9KTsKK30sICdQaXBpbmcgdG8gYSBXcml0YWJsZVN0cmVhbSB0aGF0IGRvZXMgbm90IGNvbnN1
bWUgdGhlIHdyaXRlcyBmYXN0IGVub3VnaCBleGVydHMgYmFja3ByZXNzdXJlIG9uIHRoZSBSZWFk
YWJsZVN0cmVhbScpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9mbG93LWNvbnRyb2wuYW55Lndvcmtlci1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMvcGlwaW5nL2Zsb3ctY29udHJvbC5hbnkud29ya2VyLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi43NGQyZTE3ZDA3YzYwMDIxNWQxYTBiZDg2M2FjMWI0ZTE4Yjk3YTQ3Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJl
YW1zL3BpcGluZy9mbG93LWNvbnRyb2wuYW55Lndvcmtlci1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSw3IEBACisKK0ZBSUwgUGlwaW5nIGZyb20gYSBub24tZW1wdHkgUmVhZGFibGVTdHJlYW0gaW50
byBhIFdyaXRhYmxlU3RyZWFtIHRoYXQgZG9lcyBub3QgZGVzaXJlIGNodW5rcyBDYW4ndCBmaW5k
IHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBQaXBpbmcgZnJvbSBhIG5vbi1lbXB0eSBS
ZWFkYWJsZVN0cmVhbSBpbnRvIGEgV3JpdGFibGVTdHJlYW0gdGhhdCBkb2VzIG5vdCBkZXNpcmUg
Y2h1bmtzLCBidXQgdGhlbiBkb2VzIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFt
CitGQUlMIFBpcGluZyBmcm9tIGFuIGVtcHR5IFJlYWRhYmxlU3RyZWFtIGludG8gYSBXcml0YWJs
ZVN0cmVhbSB0aGF0IGRvZXMgbm90IGRlc2lyZSBjaHVua3MsIGJ1dCB0aGVuIHRoZSByZWFkYWJs
ZSBzdHJlYW0gYmVjb21lcyBub24tZW1wdHkgYW5kIHRoZSB3cml0YWJsZSBzdHJlYW0gc3RhcnRz
IGRlc2lyaW5nIGNodW5rcyBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJ
TCBQaXBpbmcgZnJvbSBhIFJlYWRhYmxlU3RyZWFtIHRvIGEgV3JpdGFibGVTdHJlYW0gdGhhdCBk
ZXNpcmVzIG1vcmUgY2h1bmtzIGJlZm9yZSBmaW5pc2hpbmcgd2l0aCBwcmV2aW91cyBvbmVzIENh
bid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIFBpcGluZyB0byBhIFdyaXRh
YmxlU3RyZWFtIHRoYXQgZG9lcyBub3QgY29uc3VtZSB0aGUgd3JpdGVzIGZhc3QgZW5vdWdoIGV4
ZXJ0cyBiYWNrcHJlc3N1cmUgb24gdGhlIFJlYWRhYmxlU3RyZWFtIENhbid0IGZpbmQgdmFyaWFi
bGU6IFdyaXRhYmxlU3RyZWFtCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvZmxvdy1jb250cm9sLmFueS53b3Jr
ZXIuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy9waXBpbmcvZmxvdy1jb250cm9sLmFueS53b3JrZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMzgy
OTEzNTI4ZTY5M2IzYTVkNTZjNjYwYTQ1MDYwOTgwYjU0OGMzCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGlu
Zy9mbG93LWNvbnRyb2wuYW55Lndvcmtlci5odG1sCkBAIC0wLDAgKzEgQEAKKzwhLS0gVGhpcyBm
aWxlIGlzIHJlcXVpcmVkIGZvciBXZWJLaXQgdGVzdCBpbmZyYXN0cnVjdHVyZSB0byBydW4gdGhl
IHRlbXBsYXRlZCB0ZXN0IC0tPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9w
aXBpbmcvZmxvdy1jb250cm9sLmRlZGljYXRlZHdvcmtlci1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Zsb3ct
Y29udHJvbC5kZWRpY2F0ZWR3b3JrZXItZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA3NGQyZTE3ZDA3YzYwMDIxNWQxYTBiZDg2M2FjMWI0ZTE4Yjk3YTQ3Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvZmxvdy1jb250cm9s
LmRlZGljYXRlZHdvcmtlci1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw3ICswLDAg
QEAKLQotRkFJTCBQaXBpbmcgZnJvbSBhIG5vbi1lbXB0eSBSZWFkYWJsZVN0cmVhbSBpbnRvIGEg
V3JpdGFibGVTdHJlYW0gdGhhdCBkb2VzIG5vdCBkZXNpcmUgY2h1bmtzIENhbid0IGZpbmQgdmFy
aWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIFBpcGluZyBmcm9tIGEgbm9uLWVtcHR5IFJlYWRh
YmxlU3RyZWFtIGludG8gYSBXcml0YWJsZVN0cmVhbSB0aGF0IGRvZXMgbm90IGRlc2lyZSBjaHVu
a3MsIGJ1dCB0aGVuIGRvZXMgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZB
SUwgUGlwaW5nIGZyb20gYW4gZW1wdHkgUmVhZGFibGVTdHJlYW0gaW50byBhIFdyaXRhYmxlU3Ry
ZWFtIHRoYXQgZG9lcyBub3QgZGVzaXJlIGNodW5rcywgYnV0IHRoZW4gdGhlIHJlYWRhYmxlIHN0
cmVhbSBiZWNvbWVzIG5vbi1lbXB0eSBhbmQgdGhlIHdyaXRhYmxlIHN0cmVhbSBzdGFydHMgZGVz
aXJpbmcgY2h1bmtzIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIFBp
cGluZyBmcm9tIGEgUmVhZGFibGVTdHJlYW0gdG8gYSBXcml0YWJsZVN0cmVhbSB0aGF0IGRlc2ly
ZXMgbW9yZSBjaHVua3MgYmVmb3JlIGZpbmlzaGluZyB3aXRoIHByZXZpb3VzIG9uZXMgQ2FuJ3Qg
ZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgUGlwaW5nIHRvIGEgV3JpdGFibGVT
dHJlYW0gdGhhdCBkb2VzIG5vdCBjb25zdW1lIHRoZSB3cml0ZXMgZmFzdCBlbm91Z2ggZXhlcnRz
IGJhY2twcmVzc3VyZSBvbiB0aGUgUmVhZGFibGVTdHJlYW0gQ2FuJ3QgZmluZCB2YXJpYWJsZTog
V3JpdGFibGVTdHJlYW0KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9mbG93LWNvbnRyb2wuZGVkaWNhdGVkd29y
a2VyLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMvcGlwaW5nL2Zsb3ctY29udHJvbC5kZWRpY2F0ZWR3b3JrZXIuaHRtbApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggNjcwMzE4M2MxMTcyYjYyMzY5N2M2MDgyNzg0ZjhlMGViNDI2
MTg5NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Zs
b3ctY29udHJvbC5kZWRpY2F0ZWR3b3JrZXIuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDExICsw
LDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHRpdGxlPmZs
b3ctY29udHJvbC5qcyBkZWRpY2F0ZWQgd29ya2VyIHdyYXBwZXIgZmlsZTwvdGl0bGU+Ci0KLTxz
Y3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQg
c3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLQotPHNjcmlw
dD4KLSd1c2Ugc3RyaWN0JzsKLWZldGNoX3Rlc3RzX2Zyb21fd29ya2VyKG5ldyBXb3JrZXIoJ2Zs
b3ctY29udHJvbC5qcycpKTsKLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9mbG93LWNvbnRyb2wu
aHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy9waXBpbmcvZmxvdy1jb250cm9sLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDIxOWU1MDExODcwODg3ZWI5ZThhMmJjZGNjNGEyM2Y0Y2Y0MWU4MjYuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9mbG93LWNvbnRyb2wuaHRtbAorKysg
L2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNl
dD0idXRmLTgiPgotPHRpdGxlPmZsb3ctY29udHJvbC5qcyBicm93c2VyIGNvbnRleHQgd3JhcHBl
ciBmaWxlPC90aXRsZT4KLQotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMi
Pjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMi
Pjwvc2NyaXB0PgotCi08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3QtdXRpbHMuanMiPjwv
c2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9ycy11dGlscy5qcyI+PC9zY3JpcHQ+
Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3JlY29yZGluZy1zdHJlYW1zLmpzIj48L3Njcmlw
dD4KLQotPHNjcmlwdCBzcmM9ImZsb3ctY29udHJvbC5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlw
aW5nL2Zsb3ctY29udHJvbC5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvZmxvdy1jb250cm9sLmpzCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwNGM1NmVjNDBkMGI0NDZhYTczM2IwOWVhNTBkMmNjY2MwNTA0YTQyLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvZmxvdy1jb250
cm9sLmpzCisrKyAvZGV2L251bGwKQEAgLTEsMzA2ICswLDAgQEAKLSd1c2Ugc3RyaWN0JzsKLQot
aWYgKHNlbGYuaW1wb3J0U2NyaXB0cykgewotICBzZWxmLmltcG9ydFNjcmlwdHMoJy9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3MuanMnKTsKLSAgc2VsZi5pbXBvcnRTY3JpcHRzKCcuLi9yZXNvdXJjZXMv
dGVzdC11dGlscy5qcycpOwotICBzZWxmLmltcG9ydFNjcmlwdHMoJy4uL3Jlc291cmNlcy9ycy11
dGlscy5qcycpOwotICBzZWxmLmltcG9ydFNjcmlwdHMoJy4uL3Jlc291cmNlcy9yZWNvcmRpbmct
c3RyZWFtcy5qcycpOwotfQotCi1jb25zdCBlcnJvcjEgPSBuZXcgRXJyb3IoJ2Vycm9yMSEnKTsK
LWVycm9yMS5uYW1lID0gJ2Vycm9yMSc7Ci0KLXByb21pc2VfdGVzdCh0ID0+IHsKLQotICBjb25z
dCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjb250cm9sbGVyKSB7
Ci0gICAgICBjb250cm9sbGVyLmVucXVldWUoJ2EnKTsKLSAgICAgIGNvbnRyb2xsZXIuZW5xdWV1
ZSgnYicpOwotICAgICAgY29udHJvbGxlci5jbG9zZSgpOwotICAgIH0KLSAgfSk7Ci0KLSAgY29u
c3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSh1bmRlZmluZWQsIG5ldyBDb3VudFF1ZXVp
bmdTdHJhdGVneSh7IGhpZ2hXYXRlck1hcms6IDAgfSkpOwotCi0gIGNvbnN0IHBpcGVQcm9taXNl
ID0gcnMucGlwZVRvKHdzLCB7IHByZXZlbnRDYW5jZWw6IHRydWUgfSk7Ci0KLSAgLy8gV2FpdCBh
bmQgbWFrZSBzdXJlIGl0IGRvZXNuJ3QgZG8gYW55IHJlYWRpbmcuCi0gIHJldHVybiBmbHVzaEFz
eW5jRXZlbnRzKCkudGhlbigoKSA9PiB7Ci0gICAgd3MuY29udHJvbGxlci5lcnJvcihlcnJvcjEp
OwotICB9KQotICAudGhlbigoKSA9PiBwcm9taXNlX3JlamVjdHModCwgZXJyb3IxLCBwaXBlUHJv
bWlzZSwgJ3BpcGVUbyBtdXN0IHJlamVjdCB3aXRoIHRoZSBzYW1lIGVycm9yJykpCi0gIC50aGVu
KCgpID0+IHsKLSAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJzLmV2ZW50c1dpdGhvdXRQdWxscywg
W10pOwotICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbXSk7Ci0gIH0pCi0gIC50
aGVuKCgpID0+IHJlYWRhYmxlU3RyZWFtVG9BcnJheShycykpCi0gIC50aGVuKGNodW5rc05vdFBy
ZXZpb3VzbHlSZWFkID0+IHsKLSAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGNodW5rc05vdFByZXZp
b3VzbHlSZWFkLCBbJ2EnLCAnYiddKTsKLSAgfSk7Ci0KLX0sICdQaXBpbmcgZnJvbSBhIG5vbi1l
bXB0eSBSZWFkYWJsZVN0cmVhbSBpbnRvIGEgV3JpdGFibGVTdHJlYW0gdGhhdCBkb2VzIG5vdCBk
ZXNpcmUgY2h1bmtzJyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgY29uc3QgcnMgPSBy
ZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoY29udHJvbGxlcikgewotICAgICAg
Y29udHJvbGxlci5lbnF1ZXVlKCdiJyk7Ci0gICAgICBjb250cm9sbGVyLmNsb3NlKCk7Ci0gICAg
fQotICB9KTsKLQotICBsZXQgcmVzb2x2ZVdyaXRlUHJvbWlzZTsKLSAgY29uc3Qgd3MgPSByZWNv
cmRpbmdXcml0YWJsZVN0cmVhbSh7Ci0gICAgd3JpdGUoKSB7Ci0gICAgICBpZiAoIXJlc29sdmVX
cml0ZVByb21pc2UpIHsKLSAgICAgICAgLy8gZmlyc3Qgd3JpdGUKLSAgICAgICAgcmV0dXJuIG5l
dyBQcm9taXNlKHJlc29sdmUgPT4gewotICAgICAgICAgIHJlc29sdmVXcml0ZVByb21pc2UgPSBy
ZXNvbHZlOwotICAgICAgICB9KTsKLSAgICAgIH0KLSAgICAgIHJldHVybiB1bmRlZmluZWQ7Ci0g
ICAgfQotICB9KTsKLQotICBjb25zdCB3cml0ZXIgPSB3cy5nZXRXcml0ZXIoKTsKLSAgY29uc3Qg
Zmlyc3RXcml0ZVByb21pc2UgPSB3cml0ZXIud3JpdGUoJ2EnKTsKLSAgYXNzZXJ0X2VxdWFscyh3
cml0ZXIuZGVzaXJlZFNpemUsIDAsICdhZnRlciB3cml0aW5nIHRoZSB3cml0ZXJcJ3MgZGVzaXJl
ZFNpemUgbXVzdCBiZSAwJyk7Ci0gIHdyaXRlci5yZWxlYXNlTG9jaygpOwotCi0gIC8vIGZpcnN0
V3JpdGVQcm9taXNlIHdvbid0IHNldHRsZSB1bnRpbCB3ZSBjYWxsIHJlc29sdmVXcml0ZVByb21p
c2UuCi0KLSAgY29uc3QgcGlwZVByb21pc2UgPSBycy5waXBlVG8od3MpOwotCi0gIHJldHVybiBm
bHVzaEFzeW5jRXZlbnRzKCkudGhlbigoKSA9PiByZXNvbHZlV3JpdGVQcm9taXNlKCkpCi0gICAg
LnRoZW4oKCkgPT4gUHJvbWlzZS5hbGwoW2ZpcnN0V3JpdGVQcm9taXNlLCBwaXBlUHJvbWlzZV0p
KQotICAgIC50aGVuKCgpID0+IHsKLSAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMocnMuZXZlbnRz
V2l0aG91dFB1bGxzLCBbXSk7Ci0gICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywg
Wyd3cml0ZScsICdhJywgJ3dyaXRlJywgJ2InLCAnY2xvc2UnXSk7Ci0gICAgfSk7Ci0KLX0sICdQ
aXBpbmcgZnJvbSBhIG5vbi1lbXB0eSBSZWFkYWJsZVN0cmVhbSBpbnRvIGEgV3JpdGFibGVTdHJl
YW0gdGhhdCBkb2VzIG5vdCBkZXNpcmUgY2h1bmtzLCBidXQgdGhlbiBkb2VzJyk7Ci0KLXByb21p
c2VfdGVzdCgoKSA9PiB7Ci0KLSAgY29uc3QgcnMgPSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSgp
OwotCi0gIGNvbnN0IHN0YXJ0UHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZSgpOwotICBsZXQgcmVz
b2x2ZVdyaXRlUHJvbWlzZTsKLSAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSh7
Ci0gICAgc3RhcnQoKSB7Ci0gICAgICByZXR1cm4gc3RhcnRQcm9taXNlOwotICAgIH0sCi0gICAg
d3JpdGUoKSB7Ci0gICAgICBpZiAoIXJlc29sdmVXcml0ZVByb21pc2UpIHsKLSAgICAgICAgLy8g
Zmlyc3Qgd3JpdGUKLSAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4gewotICAg
ICAgICAgIHJlc29sdmVXcml0ZVByb21pc2UgPSByZXNvbHZlOwotICAgICAgICB9KTsKLSAgICAg
IH0KLSAgICAgIHJldHVybiB1bmRlZmluZWQ7Ci0gICAgfQotICB9KTsKLQotICBjb25zdCB3cml0
ZXIgPSB3cy5nZXRXcml0ZXIoKTsKLSAgd3JpdGVyLndyaXRlKCdhJyk7Ci0KLSAgcmV0dXJuIHN0
YXJ0UHJvbWlzZS50aGVuKCgpID0+IHsKLSAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50
cywgWyd3cml0ZScsICdhJ10pOwotICAgIGFzc2VydF9lcXVhbHMod3JpdGVyLmRlc2lyZWRTaXpl
LCAwLCAnYWZ0ZXIgd3JpdGluZyB0aGUgd3JpdGVyXCdzIGRlc2lyZWRTaXplIG11c3QgYmUgMCcp
OwotICAgIHdyaXRlci5yZWxlYXNlTG9jaygpOwotCi0gICAgY29uc3QgcGlwZVByb21pc2UgPSBy
cy5waXBlVG8od3MpOwotCi0gICAgcnMuY29udHJvbGxlci5lbnF1ZXVlKCdiJyk7Ci0gICAgcmVz
b2x2ZVdyaXRlUHJvbWlzZSgpOwotICAgIHJzLmNvbnRyb2xsZXIuY2xvc2UoKTsKLQotICAgIHJl
dHVybiBwaXBlUHJvbWlzZS50aGVuKCgpID0+IHsKLSAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMo
cnMuZXZlbnRzV2l0aG91dFB1bGxzLCBbXSk7Ci0gICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdz
LmV2ZW50cywgWyd3cml0ZScsICdhJywgJ3dyaXRlJywgJ2InLCAnY2xvc2UnXSk7Ci0gICAgfSk7
Ci0gIH0pOwotCi19LCAnUGlwaW5nIGZyb20gYW4gZW1wdHkgUmVhZGFibGVTdHJlYW0gaW50byBh
IFdyaXRhYmxlU3RyZWFtIHRoYXQgZG9lcyBub3QgZGVzaXJlIGNodW5rcywgYnV0IHRoZW4gdGhl
IHJlYWRhYmxlICcgKwotICAgJ3N0cmVhbSBiZWNvbWVzIG5vbi1lbXB0eSBhbmQgdGhlIHdyaXRh
YmxlIHN0cmVhbSBzdGFydHMgZGVzaXJpbmcgY2h1bmtzJyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9
PiB7Ci0gIGNvbnN0IHVucmVhZENodW5rcyA9IFsnYicsICdjJywgJ2QnXTsKLQotICBjb25zdCBy
cyA9IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKHsKLSAgICBwdWxsKGNvbnRyb2xsZXIpIHsKLSAg
ICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSh1bnJlYWRDaHVua3Muc2hpZnQoKSk7Ci0gICAgICBpZiAo
dW5yZWFkQ2h1bmtzLmxlbmd0aCA9PT0gMCkgewotICAgICAgICBjb250cm9sbGVyLmNsb3NlKCk7
Ci0gICAgICB9Ci0gICAgfQotICB9LCBuZXcgQ291bnRRdWV1aW5nU3RyYXRlZ3koeyBoaWdoV2F0
ZXJNYXJrOiAwIH0pKTsKLQotICBsZXQgcmVzb2x2ZVdyaXRlUHJvbWlzZTsKLSAgY29uc3Qgd3Mg
PSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSh7Ci0gICAgd3JpdGUoKSB7Ci0gICAgICBpZiAoIXJl
c29sdmVXcml0ZVByb21pc2UpIHsKLSAgICAgICAgLy8gZmlyc3Qgd3JpdGUKLSAgICAgICAgcmV0
dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4gewotICAgICAgICAgIHJlc29sdmVXcml0ZVByb21p
c2UgPSByZXNvbHZlOwotICAgICAgICB9KTsKLSAgICAgIH0KLSAgICAgIHJldHVybiB1bmRlZmlu
ZWQ7Ci0gICAgfQotICB9LCBuZXcgQ291bnRRdWV1aW5nU3RyYXRlZ3koeyBoaWdoV2F0ZXJNYXJr
OiAzIH0pKTsKLQotICBjb25zdCB3cml0ZXIgPSB3cy5nZXRXcml0ZXIoKTsKLSAgY29uc3QgZmly
c3RXcml0ZVByb21pc2UgPSB3cml0ZXIud3JpdGUoJ2EnKTsKLSAgYXNzZXJ0X2VxdWFscyh3cml0
ZXIuZGVzaXJlZFNpemUsIDIsICdhZnRlciB3cml0aW5nIHRoZSB3cml0ZXJcJ3MgZGVzaXJlZFNp
emUgbXVzdCBiZSAyJyk7Ci0gIHdyaXRlci5yZWxlYXNlTG9jaygpOwotCi0gIC8vIGZpcnN0V3Jp
dGVQcm9taXNlIHdvbid0IHNldHRsZSB1bnRpbCB3ZSBjYWxsIHJlc29sdmVXcml0ZVByb21pc2Uu
Ci0KLSAgY29uc3QgcGlwZVByb21pc2UgPSBycy5waXBlVG8od3MpOwotCi0gIHJldHVybiBmbHVz
aEFzeW5jRXZlbnRzKCkudGhlbigoKSA9PiB7Ci0gICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5l
dmVudHMsIFsnd3JpdGUnLCAnYSddKTsKLSAgICBhc3NlcnRfZXF1YWxzKHVucmVhZENodW5rcy5s
ZW5ndGgsIDEsICdjaHVua3Mgc2hvdWxkIGNvbnRpbnVlIHRvIGJlIGVucXVldWVkIHVudGlsIHRo
ZSBIV00gaXMgcmVhY2hlZCcpOwotICB9KS50aGVuKCgpID0+IHJlc29sdmVXcml0ZVByb21pc2Uo
KSkKLSAgICAudGhlbigoKSA9PiBQcm9taXNlLmFsbChbZmlyc3RXcml0ZVByb21pc2UsIHBpcGVQ
cm9taXNlXSkpCi0gICAgLnRoZW4oKCkgPT4gewotICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhy
cy5ldmVudHMsIFsncHVsbCcsICdwdWxsJywgJ3B1bGwnXSk7Ci0gICAgICBhc3NlcnRfYXJyYXlf
ZXF1YWxzKHdzLmV2ZW50cywgWyd3cml0ZScsICdhJywgJ3dyaXRlJywgJ2InLCd3cml0ZScsICdj
Jywnd3JpdGUnLCAnZCcsICdjbG9zZSddKTsKLSAgICB9KTsKLQotfSwgJ1BpcGluZyBmcm9tIGEg
UmVhZGFibGVTdHJlYW0gdG8gYSBXcml0YWJsZVN0cmVhbSB0aGF0IGRlc2lyZXMgbW9yZSBjaHVu
a3MgYmVmb3JlIGZpbmlzaGluZyB3aXRoIHByZXZpb3VzIG9uZXMnKTsKLQotY2xhc3MgU3RlcFRy
YWNrZXIgewotICBjb25zdHJ1Y3RvcigpIHsKLSAgICB0aGlzLndhaXRlcnMgPSBbXTsKLSAgICB0
aGlzLndha2VycyA9IFtdOwotICB9Ci0KLSAgLy8gUmV0dXJucyBwcm9taXNlIHdoaWNoIHJlc29s
dmVzIHdoZW4gc3RlcCBgbmAgaXMgcmVhY2hlZC4gQWxzbyBzY2hlZHVsZXMgc3RlcCBuICsgMSB0
byBoYXBwZW4gc2hvcnRseSBhZnRlciB0aGUKLSAgLy8gcHJvbWlzZSBpcyByZXNvbHZlZC4KLSAg
d2FpdFRoZW5BZHZhbmNlKG4pIHsKLSAgICBpZiAodGhpcy53YWl0ZXJzW25dID09PSB1bmRlZmlu
ZWQpIHsKLSAgICAgIHRoaXMud2FpdGVyc1tuXSA9IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gewot
ICAgICAgICB0aGlzLndha2Vyc1tuXSA9IHJlc29sdmU7Ci0gICAgICB9KTsKLSAgICAgIHRoaXMu
d2FpdGVyc1tuXQotICAgICAgICAgIC50aGVuKCgpID0+IGZsdXNoQXN5bmNFdmVudHMoKSkKLSAg
ICAgICAgICAudGhlbigoKSA9PiB7Ci0gICAgICAgICAgICBpZiAodGhpcy53YWtlcnNbbiArIDFd
ICE9PSB1bmRlZmluZWQpIHsKLSAgICAgICAgICAgICAgdGhpcy53YWtlcnNbbiArIDFdKCk7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgfSk7Ci0gICAgfQotICAgIGlmIChuID09IDApIHsKLSAg
ICAgIHRoaXMud2FrZXJzWzBdKCk7Ci0gICAgfQotICAgIHJldHVybiB0aGlzLndhaXRlcnNbbl07
Ci0gIH0KLX0KLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLSAgY29uc3Qgc3RlcHMgPSBuZXcgU3Rl
cFRyYWNrZXIoKTsKLSAgY29uc3QgZGVzaXJlZFNpemVzID0gW107Ci0gIGNvbnN0IHJzID0gcmVj
b3JkaW5nUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGNvbnRyb2xsZXIpIHsKLSAgICAgIHN0
ZXBzLndhaXRUaGVuQWR2YW5jZSgxKS50aGVuKCgpID0+IGVucXVldWUoJ2EnKSk7Ci0gICAgICBz
dGVwcy53YWl0VGhlbkFkdmFuY2UoMykudGhlbigoKSA9PiBlbnF1ZXVlKCdiJykpOwotICAgICAg
c3RlcHMud2FpdFRoZW5BZHZhbmNlKDUpLnRoZW4oKCkgPT4gZW5xdWV1ZSgnYycpKTsKLSAgICAg
IHN0ZXBzLndhaXRUaGVuQWR2YW5jZSg3KS50aGVuKCgpID0+IGVucXVldWUoJ2QnKSk7Ci0gICAg
ICBzdGVwcy53YWl0VGhlbkFkdmFuY2UoMTEpLnRoZW4oKCkgPT4gY29udHJvbGxlci5jbG9zZSgp
KTsKLQotICAgICAgZnVuY3Rpb24gZW5xdWV1ZShjaHVuaykgewotICAgICAgICBjb250cm9sbGVy
LmVucXVldWUoY2h1bmspOwotICAgICAgICBkZXNpcmVkU2l6ZXMucHVzaChjb250cm9sbGVyLmRl
c2lyZWRTaXplKTsKLSAgICAgIH0KLSAgICB9Ci0gIH0pOwotCi0gIGNvbnN0IGNodW5rc0Zpbmlz
aGVkV3JpdGluZyA9IFtdOwotICBjb25zdCB3cml0YWJsZVN0YXJ0UHJvbWlzZSA9IFByb21pc2Uu
cmVzb2x2ZSgpOwotICBsZXQgd3JpdGVDYWxsZWQgPSBmYWxzZTsKLSAgY29uc3Qgd3MgPSByZWNv
cmRpbmdXcml0YWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoKSB7Ci0gICAgICByZXR1cm4gd3JpdGFi
bGVTdGFydFByb21pc2U7Ci0gICAgfSwKLSAgICB3cml0ZShjaHVuaykgewotICAgICAgY29uc3Qg
d2FpdEZvclN0ZXAgPSB3cml0ZUNhbGxlZCA/IDEyIDogOTsKLSAgICAgIHdyaXRlQ2FsbGVkID0g
dHJ1ZTsKLSAgICAgIHJldHVybiBzdGVwcy53YWl0VGhlbkFkdmFuY2Uod2FpdEZvclN0ZXApLnRo
ZW4oKCkgPT4gewotICAgICAgICBjaHVua3NGaW5pc2hlZFdyaXRpbmcucHVzaChjaHVuayk7Ci0g
ICAgICB9KTsKLSAgICB9Ci0gIH0pOwotCi0gIHJldHVybiB3cml0YWJsZVN0YXJ0UHJvbWlzZS50
aGVuKCgpID0+IHsKLSAgICBjb25zdCBwaXBlUHJvbWlzZSA9IHJzLnBpcGVUbyh3cyk7Ci0gICAg
c3RlcHMud2FpdFRoZW5BZHZhbmNlKDApOwotCi0gICAgcmV0dXJuIFByb21pc2UuYWxsKFsKLSAg
ICAgIHN0ZXBzLndhaXRUaGVuQWR2YW5jZSgyKS50aGVuKCgpID0+IHsKLSAgICAgICAgYXNzZXJ0
X2FycmF5X2VxdWFscyhjaHVua3NGaW5pc2hlZFdyaXRpbmcsIFtdLCAnYXQgc3RlcCAyLCB6ZXJv
IGNodW5rcyBtdXN0IGhhdmUgZmluaXNoZWQgd3JpdGluZycpOwotICAgICAgICBhc3NlcnRfYXJy
YXlfZXF1YWxzKHdzLmV2ZW50cywgWyd3cml0ZScsICdhJ10sICdhdCBzdGVwIDIsIG9uZSBjaHVu
ayBtdXN0IGhhdmUgYmVlbiB3cml0dGVuJyk7Ci0KLSAgICAgICAgLy8gV2hlbiAnYScgKHRoZSB2
ZXJ5IGZpcnN0IGNodW5rKSB3YXMgZW5xdWV1ZWQsIGl0IHdhcyBpbW1lZGlhdGVseSB1c2VkIHRv
IGZ1bGZpbGwgdGhlIG91dHN0YW5kaW5nIHJlYWQgcmVxdWVzdAotICAgICAgICAvLyBwcm9taXNl
LCBsZWF2aW5nIHRoZSBxdWV1ZSBlbXB0eS4KLSAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhk
ZXNpcmVkU2l6ZXMsIFsxXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXQgc3RlcCAy
LCB0aGUgZGVzaXJlZFNpemUgYXQgdGhlIGxhc3QgZW5xdWV1ZSAoc3RlcCAxKSBtdXN0IGhhdmUg
YmVlbiAxJyk7Ci0gICAgICAgIGFzc2VydF9lcXVhbHMocnMuY29udHJvbGxlci5kZXNpcmVkU2l6
ZSwgMSwgJ2F0IHN0ZXAgMiwgdGhlIGN1cnJlbnQgZGVzaXJlZFNpemUgbXVzdCBiZSAxJyk7Ci0g
ICAgICB9KSwKLQotICAgICAgc3RlcHMud2FpdFRoZW5BZHZhbmNlKDQpLnRoZW4oKCkgPT4gewot
ICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGNodW5rc0ZpbmlzaGVkV3JpdGluZywgW10sICdh
dCBzdGVwIDQsIHplcm8gY2h1bmtzIG11c3QgaGF2ZSBmaW5pc2hlZCB3cml0aW5nJyk7Ci0gICAg
ICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ3dyaXRlJywgJ2EnXSwgJ2F0IHN0
ZXAgNCwgb25lIGNodW5rIG11c3QgaGF2ZSBiZWVuIHdyaXR0ZW4nKTsKLQotICAgICAgICAvLyBX
aGVuICdiJyB3YXMgZW5xdWV1ZWQgYXQgc3RlcCAzLCB0aGUgcXVldWUgd2FzIGFsc28gZW1wdHks
IHNpbmNlIGltbWVkaWF0ZWx5IGFmdGVyIGVucXVldWluZyAnYScgYXQKLSAgICAgICAgLy8gc3Rl
cCAxLCBpdCB3YXMgZGVxdWV1ZWQgaW4gb3JkZXIgdG8gZnVsZmlsbCB0aGUgcmVhZCgpIGNhbGwg
dGhhdCB3YXMgbWFkZSBhdCBzdGVwIDAuIFRodXMgdGhlIHF1ZXVlCi0gICAgICAgIC8vIGhhZCBz
aXplIDEgKHRodXMgZGVzaXJlZFNpemUgb2YgMCkuCi0gICAgICAgIGFzc2VydF9hcnJheV9lcXVh
bHMoZGVzaXJlZFNpemVzLCBbMSwgMF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2F0
IHN0ZXAgNCwgdGhlIGRlc2lyZWRTaXplIGF0IHRoZSBsYXN0IGVucXVldWUgKHN0ZXAgMykgbXVz
dCBoYXZlIGJlZW4gMCcpOwotICAgICAgICBhc3NlcnRfZXF1YWxzKHJzLmNvbnRyb2xsZXIuZGVz
aXJlZFNpemUsIDAsICdhdCBzdGVwIDQsIHRoZSBjdXJyZW50IGRlc2lyZWRTaXplIG11c3QgYmUg
MCcpOwotICAgICAgfSksCi0KLSAgICAgIHN0ZXBzLndhaXRUaGVuQWR2YW5jZSg2KS50aGVuKCgp
ID0+IHsKLSAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhjaHVua3NGaW5pc2hlZFdyaXRpbmcs
IFtdLCAnYXQgc3RlcCA2LCB6ZXJvIGNodW5rcyBtdXN0IGhhdmUgZmluaXNoZWQgd3JpdGluZycp
OwotICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWyd3cml0ZScsICdhJ10s
ICdhdCBzdGVwIDYsIG9uZSBjaHVuayBtdXN0IGhhdmUgYmVlbiB3cml0dGVuJyk7Ci0KLSAgICAg
ICAgLy8gV2hlbiAnYycgd2FzIGVucXVldWVkIGF0IHN0ZXAgNSwgdGhlIHF1ZXVlIHdhcyBub3Qg
ZW1wdHk7IGl0IGhhZCAnYicgaW4gaXQsIHNpbmNlICdiJyB3aWxsIG5vdCBiZSByZWFkIHVudGls
Ci0gICAgICAgIC8vIHRoZSBmaXJzdCB3cml0ZSBjb21wbGV0ZXMgYXQgc3RlcCA5LiBUaHVzLCB0
aGUgcXVldWUgc2l6ZSBpcyAyIGFmdGVyIGVucXVldWluZyAnYycsIGdpdmluZyBhIGRlc2lyZWRT
aXplIG9mCi0gICAgICAgIC8vIC0xLgotICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGRlc2ly
ZWRTaXplcywgWzEsIDAsIC0xXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXQgc3Rl
cCA2LCB0aGUgZGVzaXJlZFNpemUgYXQgdGhlIGxhc3QgZW5xdWV1ZSAoc3RlcCA1KSBtdXN0IGhh
dmUgYmVlbiAtMScpOwotICAgICAgICBhc3NlcnRfZXF1YWxzKHJzLmNvbnRyb2xsZXIuZGVzaXJl
ZFNpemUsIC0xLCAnYXQgc3RlcCA2LCB0aGUgY3VycmVudCBkZXNpcmVkU2l6ZSBtdXN0IGJlIC0x
Jyk7Ci0gICAgICB9KSwKLQotICAgICAgc3RlcHMud2FpdFRoZW5BZHZhbmNlKDgpLnRoZW4oKCkg
PT4gewotICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGNodW5rc0ZpbmlzaGVkV3JpdGluZywg
W10sICdhdCBzdGVwIDgsIHplcm8gY2h1bmtzIG11c3QgaGF2ZSBmaW5pc2hlZCB3cml0aW5nJyk7
Ci0gICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ3dyaXRlJywgJ2EnXSwg
J2F0IHN0ZXAgOCwgb25lIGNodW5rIG11c3QgaGF2ZSBiZWVuIHdyaXR0ZW4nKTsKLQotICAgICAg
ICAvLyBXaGVuICdkJyB3YXMgZW5xdWV1ZWQgYXQgc3RlcCA3LCB0aGUgc2l0dWF0aW9uIGlzIHRo
ZSBzYW1lIGFzIGJlZm9yZSwgbGVhZGluZyB0byBhIHF1ZXVlIGNvbnRhaW5pbmcgJ2InLCAnYycs
Ci0gICAgICAgIC8vIGFuZCAnZCcuCi0gICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoZGVzaXJl
ZFNpemVzLCBbMSwgMCwgLTEsIC0yXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXQg
c3RlcCA4LCB0aGUgZGVzaXJlZFNpemUgYXQgdGhlIGxhc3QgZW5xdWV1ZSAoc3RlcCA3KSBtdXN0
IGhhdmUgYmVlbiAtMicpOwotICAgICAgICBhc3NlcnRfZXF1YWxzKHJzLmNvbnRyb2xsZXIuZGVz
aXJlZFNpemUsIC0yLCAnYXQgc3RlcCA4LCB0aGUgY3VycmVudCBkZXNpcmVkU2l6ZSBtdXN0IGJl
IC0yJyk7Ci0gICAgICB9KSwKLQotICAgICAgc3RlcHMud2FpdFRoZW5BZHZhbmNlKDEwKS50aGVu
KCgpID0+IHsKLSAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhjaHVua3NGaW5pc2hlZFdyaXRp
bmcsIFsnYSddLCAnYXQgc3RlcCAxMCwgb25lIGNodW5rIG11c3QgaGF2ZSBmaW5pc2hlZCB3cml0
aW5nJyk7Ci0gICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ3dyaXRlJywg
J2EnLCAnd3JpdGUnLCAnYiddLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhdCBzdGVw
IDEwLCB0d28gY2h1bmtzIG11c3QgaGF2ZSBiZWVuIHdyaXR0ZW4nKTsKLQotICAgICAgICBhc3Nl
cnRfZXF1YWxzKHJzLmNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIC0xLCAnYXQgc3RlcCAxMCwgdGhl
IGN1cnJlbnQgZGVzaXJlZFNpemUgbXVzdCBiZSAtMScpOwotICAgICAgfSksCi0KLSAgICAgIHBp
cGVQcm9taXNlLnRoZW4oKCkgPT4gewotICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGRlc2ly
ZWRTaXplcywgWzEsIDAsIC0xLCAtMl0sICdiYWNrcHJlc3N1cmUgbXVzdCBoYXZlIGJlZW4gZXhl
cnRlZCBhdCB0aGUgc291cmNlJyk7Ci0gICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoY2h1bmtz
RmluaXNoZWRXcml0aW5nLCBbJ2EnLCAnYicsICdjJywgJ2QnXSwgJ2FsbCBjaHVua3MgZmluaXNo
ZWQgd3JpdGluZycpOwotCi0gICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMocnMuZXZlbnRzV2l0
aG91dFB1bGxzLCBbXSwgJ25vdGhpbmcgdW5leHBlY3RlZCBzaG91bGQgaGFwcGVuIHRvIHRoZSBS
ZWFkYWJsZVN0cmVhbScpOwotICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywg
Wyd3cml0ZScsICdhJywgJ3dyaXRlJywgJ2InLCAnd3JpdGUnLCAnYycsICd3cml0ZScsICdkJywg
J2Nsb3NlJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FsbCBjaHVua3Mgd2VyZSB3
cml0dGVuIChhbmQgdGhlIFdyaXRhYmxlU3RyZWFtIGNsb3NlZCknKTsKLSAgICAgIH0pCi0gICAg
XSk7Ci0gIH0pOwotfSwgJ1BpcGluZyB0byBhIFdyaXRhYmxlU3RyZWFtIHRoYXQgZG9lcyBub3Qg
Y29uc3VtZSB0aGUgd3JpdGVzIGZhc3QgZW5vdWdoIGV4ZXJ0cyBiYWNrcHJlc3N1cmUgb24gdGhl
IFJlYWRhYmxlU3RyZWFtJyk7Ci0KLWRvbmUoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvZmxvdy1jb250cm9s
LnNlcnZpY2V3b3JrZXIuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9mbG93LWNvbnRyb2wuc2Vydmlj
ZXdvcmtlci5odHRwcy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDc0ZGJhOTA4ZDhhMDc4YTI2ZGMzYThhY2YzYWY0ZTNkNGM4Yjk0M2QuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9mbG93LWNvbnRyb2wuc2VydmljZXdv
cmtlci5odHRwcy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw4ICswLDAgQEAKLQot
UEFTUyBTZXJ2aWNlIHdvcmtlciB0ZXN0IHNldHVwIAotRkFJTCBQaXBpbmcgZnJvbSBhIG5vbi1l
bXB0eSBSZWFkYWJsZVN0cmVhbSBpbnRvIGEgV3JpdGFibGVTdHJlYW0gdGhhdCBkb2VzIG5vdCBk
ZXNpcmUgY2h1bmtzIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIFBp
cGluZyBmcm9tIGEgbm9uLWVtcHR5IFJlYWRhYmxlU3RyZWFtIGludG8gYSBXcml0YWJsZVN0cmVh
bSB0aGF0IGRvZXMgbm90IGRlc2lyZSBjaHVua3MsIGJ1dCB0aGVuIGRvZXMgQ2FuJ3QgZmluZCB2
YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgUGlwaW5nIGZyb20gYW4gZW1wdHkgUmVhZGFi
bGVTdHJlYW0gaW50byBhIFdyaXRhYmxlU3RyZWFtIHRoYXQgZG9lcyBub3QgZGVzaXJlIGNodW5r
cywgYnV0IHRoZW4gdGhlIHJlYWRhYmxlIHN0cmVhbSBiZWNvbWVzIG5vbi1lbXB0eSBhbmQgdGhl
IHdyaXRhYmxlIHN0cmVhbSBzdGFydHMgZGVzaXJpbmcgY2h1bmtzIENhbid0IGZpbmQgdmFyaWFi
bGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIFBpcGluZyBmcm9tIGEgUmVhZGFibGVTdHJlYW0gdG8g
YSBXcml0YWJsZVN0cmVhbSB0aGF0IGRlc2lyZXMgbW9yZSBjaHVua3MgYmVmb3JlIGZpbmlzaGlu
ZyB3aXRoIHByZXZpb3VzIG9uZXMgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0K
LUZBSUwgUGlwaW5nIHRvIGEgV3JpdGFibGVTdHJlYW0gdGhhdCBkb2VzIG5vdCBjb25zdW1lIHRo
ZSB3cml0ZXMgZmFzdCBlbm91Z2ggZXhlcnRzIGJhY2twcmVzc3VyZSBvbiB0aGUgUmVhZGFibGVT
dHJlYW0gQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGlu
Zy9mbG93LWNvbnRyb2wuc2VydmljZXdvcmtlci5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9mbG93LWNvbnRyb2wu
c2VydmljZXdvcmtlci5odHRwcy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3
ZmEwMWQ1YzBkM2IwY2IyNWIzMThmODcwNGViZjdjMGYzZmQ5MDkxLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvZmxvdy1jb250cm9sLnNlcnZpY2V3b3Jr
ZXIuaHR0cHMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLTwhRE9DVFlQRSBo
dG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHRpdGxlPmZsb3ctY29udHJvbC5qcyBzZXJ2
aWNlIHdvcmtlciB3cmFwcGVyIGZpbGU8L3RpdGxlPgotCi08c2NyaXB0IHNyYz0iL3Jlc291cmNl
cy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0
aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3NlcnZpY2Utd29ya2Vy
cy9zZXJ2aWNlLXdvcmtlci9yZXNvdXJjZXMvdGVzdC1oZWxwZXJzLnN1Yi5qcyI+PC9zY3JpcHQ+
Ci0KLTxzY3JpcHQ+Ci0ndXNlIHN0cmljdCc7Ci1zZXJ2aWNlX3dvcmtlcl90ZXN0KCdmbG93LWNv
bnRyb2wuanMnLCAnU2VydmljZSB3b3JrZXIgdGVzdCBzZXR1cCcpOwotPC9zY3JpcHQ+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvcGlwaW5nL2Zsb3ctY29udHJvbC5zaGFyZWR3b3JrZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9mbG93
LWNvbnRyb2wuc2hhcmVkd29ya2VyLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDlkNWQyNTA5ZDc4NDdlOGNkNmZlNjYwNmFhNjBjZGQzM2FhNDc0ZS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Zsb3ctY29udHJvbC5z
aGFyZWR3b3JrZXItZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1D
T05TT0xFIE1FU1NBR0U6IFJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBTaGFy
ZWRXb3JrZXIKLQotSGFybmVzcyBFcnJvciAoRkFJTCksIG1lc3NhZ2UgPSBSZWZlcmVuY2VFcnJv
cjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogU2hhcmVkV29ya2VyCi0KLQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9m
bG93LWNvbnRyb2wuc2hhcmVkd29ya2VyLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Zsb3ctY29udHJvbC5zaGFyZWR3b3Jr
ZXIuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmI4NGNlZmI5OTdjNWE5Nzkx
NTViMjBlMWUyNmY5ZTFjMmQyZjdhMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMvcGlwaW5nL2Zsb3ctY29udHJvbC5zaGFyZWR3b3JrZXIuaHRtbAorKysgL2Rldi9u
dWxsCkBAIC0xLDExICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRm
LTgiPgotPHRpdGxlPmZsb3ctY29udHJvbC5qcyBzaGFyZWQgd29ya2VyIHdyYXBwZXIgZmlsZTwv
dGl0bGU+Ci0KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3Njcmlw
dD4KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3Njcmlw
dD4KLQotPHNjcmlwdD4KLSd1c2Ugc3RyaWN0JzsKLWZldGNoX3Rlc3RzX2Zyb21fd29ya2VyKG5l
dyBTaGFyZWRXb3JrZXIoJ2Zsb3ctY29udHJvbC5qcycpKTsKLTwvc2NyaXB0PgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3Bp
cGluZy9nZW5lcmFsLmFueS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2dlbmVyYWwuYW55LWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4yMjIyOWQ1YjNiODgyODBlOWVjMGJmZDcwNzdhMDhlNjFlM2FlNzkyCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL3BpcGluZy9nZW5lcmFsLmFueS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwy
NCBAQAorQ09OU09MRSBNRVNTQUdFOiBVbmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rpb246IFR5cGVF
cnJvcjogVGhlIFdyaXRhYmxlU3RyZWFtLnJlYWR5IGdldHRlciBjYW4gb25seSBiZSB1c2VkIG9u
IGluc3RhbmNlcyBvZiBXcml0YWJsZVN0cmVhbQorQ09OU09MRSBNRVNTQUdFOiBVbmhhbmRsZWQg
UHJvbWlzZSBSZWplY3Rpb246IHVuZGVmaW5lZAorQ09OU09MRSBNRVNTQUdFOiBVbmhhbmRsZWQg
UHJvbWlzZSBSZWplY3Rpb246IHVuZGVmaW5lZAorQ09OU09MRSBNRVNTQUdFOiBVbmhhbmRsZWQg
UHJvbWlzZSBSZWplY3Rpb246IFR5cGVFcnJvcjogY2FuY2VsKCkgY2FsbGVkIG9uIGEgcmVhZGVy
IG93bmVkIGJ5IG5vIHJlYWRhYmxlIHN0cmVhbQorQ09OU09MRSBNRVNTQUdFOiBVbmhhbmRsZWQg
UHJvbWlzZSBSZWplY3Rpb246IHVuZGVmaW5lZAorQ09OU09MRSBNRVNTQUdFOiBVbmhhbmRsZWQg
UHJvbWlzZSBSZWplY3Rpb246IHVuZGVmaW5lZAorQ09OU09MRSBNRVNTQUdFOiBVbmhhbmRsZWQg
UHJvbWlzZSBSZWplY3Rpb246IHVuZGVmaW5lZAorCitIYXJuZXNzIEVycm9yIChGQUlMKSwgbWVz
c2FnZSA9IFVuaGFuZGxlZCByZWplY3Rpb246IFRoZSBXcml0YWJsZVN0cmVhbS5yZWFkeSBnZXR0
ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgV3JpdGFibGVTdHJlYW0KKworRkFJ
TCBQaXBpbmcgbXVzdCBsb2NrIGJvdGggdGhlIFJlYWRhYmxlU3RyZWFtIGFuZCBXcml0YWJsZVN0
cmVhbSBhc3NlcnRfZmFsc2U6IHNhbml0eSBjaGVjazogdGhlIFdyaXRhYmxlU3RyZWFtIG11c3Qg
bm90IHN0YXJ0IGxvY2tlZCBleHBlY3RlZCBmYWxzZSBnb3QgdW5kZWZpbmVkCitGQUlMIFBpcGlu
ZyBmaW5pc2hpbmcgbXVzdCB1bmxvY2sgYm90aCB0aGUgUmVhZGFibGVTdHJlYW0gYW5kIFdyaXRh
YmxlU3RyZWFtIGFzc2VydF9mYWxzZTogdGhlIFdyaXRhYmxlU3RyZWFtIG11c3QgYmVjb21lIHVu
bG9ja2VkIGV4cGVjdGVkIGZhbHNlIGdvdCB1bmRlZmluZWQKK0ZBSUwgcGlwZVRvIG11c3QgY2hl
Y2sgdGhlIGJyYW5kIG9mIGl0cyBSZWFkYWJsZVN0cmVhbSB0aGlzIHZhbHVlIENhbiBvbmx5IGNh
bGwgUmVhZGFibGVTdHJlYW0uZ2V0UmVhZGVyIG9uIGluc3RhbmNlcyBvZiBSZWFkYWJsZVN0cmVh
bQorUEFTUyBwaXBlVG8gbXVzdCBjaGVjayB0aGUgYnJhbmQgb2YgaXRzIFdyaXRhYmxlU3RyZWFt
IGFyZ3VtZW50IAorRkFJTCBwaXBlVG8gbXVzdCBmYWlsIGlmIHRoZSBSZWFkYWJsZVN0cmVhbSBp
cyBsb2NrZWQsIGFuZCBub3QgbG9jayB0aGUgV3JpdGFibGVTdHJlYW0gYXNzZXJ0X2ZhbHNlOiBz
YW5pdHkgY2hlY2s6IHRoZSBXcml0YWJsZVN0cmVhbSBkb2VzIG5vdCBzdGFydCBsb2NrZWQgZXhw
ZWN0ZWQgZmFsc2UgZ290IHVuZGVmaW5lZAorRkFJTCBwaXBlVG8gbXVzdCBmYWlsIGlmIHRoZSBX
cml0YWJsZVN0cmVhbSBpcyBsb2NrZWQsIGFuZCBub3QgbG9jayB0aGUgUmVhZGFibGVTdHJlYW0g
d3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywgJ3dz
LmdldFdyaXRlcicgaXMgdW5kZWZpbmVkKQorRkFJTCBQaXBpbmcgZnJvbSBhIFJlYWRhYmxlU3Ry
ZWFtIGZyb20gd2hpY2ggbG90cyBvZiBjaHVua3MgYXJlIHN5bmNocm9ub3VzbHkgcmVhZGFibGUg
cHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiVHlw
ZUVycm9yOiB3cy5nZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3JpdGVy
KCknLCAnd3MuZ2V0V3JpdGVyJyBpcyB1bmRlZmluZWQpIgorUEFTUyBQaXBpbmcgZnJvbSBhIFJl
YWRhYmxlU3RyZWFtIGZvciB3aGljaCBhIGNodW5rIGJlY29tZXMgYXN5bmNocm9ub3VzbHkgcmVh
ZGFibGUgYWZ0ZXIgdGhlIHBpcGVUbyAKK1BBU1MgYW4gdW5kZWZpbmVkIHJlamVjdGlvbiBmcm9t
IHB1bGwgc2hvdWxkIGNhdXNlIHBpcGVUbygpIHRvIHJlamVjdCB3aGVuIHByZXZlbnRBYm9ydCBp
cyB0cnVlIAorUEFTUyBhbiB1bmRlZmluZWQgcmVqZWN0aW9uIGZyb20gcHVsbCBzaG91bGQgY2F1
c2UgcGlwZVRvKCkgdG8gcmVqZWN0IHdoZW4gcHJldmVudEFib3J0IGlzIGZhbHNlIAorUEFTUyBh
biB1bmRlZmluZWQgcmVqZWN0aW9uIGZyb20gd3JpdGUgc2hvdWxkIGNhdXNlIHBpcGVUbygpIHRv
IHJlamVjdCB3aGVuIHByZXZlbnRDYW5jZWwgaXMgdHJ1ZSAKK1BBU1MgYW4gdW5kZWZpbmVkIHJl
amVjdGlvbiBmcm9tIHdyaXRlIHNob3VsZCBjYXVzZSBwaXBlVG8oKSB0byByZWplY3Qgd2hlbiBw
cmV2ZW50Q2FuY2VsIGlzIGZhbHNlIAorRkFJTCBwaXBlVG8oKSBzaG91bGQgcmVqZWN0IGlmIGFu
IG9wdGlvbiBnZXR0ZXIgZ3JhYnMgYSB3cml0ZXIgd3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0
aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicgaXMgdW5kZWZpbmVkKQor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMvcGlwaW5nL2dlbmVyYWwuYW55Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2dlbmVyYWwuYW55Lmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMjM4MjkxMzUyOGU2OTNiM2E1ZDU2YzY2MGE0NTA2MDk4MGI1NDhjMwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy9waXBpbmcvZ2VuZXJhbC5hbnkuaHRtbApAQCAtMCwwICsxIEBACis8IS0tIFRoaXMg
ZmlsZSBpcyByZXF1aXJlZCBmb3IgV2ViS2l0IHRlc3QgaW5mcmFzdHJ1Y3R1cmUgdG8gcnVuIHRo
ZSB0ZW1wbGF0ZWQgdGVzdCAtLT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
cGlwaW5nL2dlbmVyYWwuYW55LmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9nZW5lcmFsLmFueS5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZDE4
OTczYjQxMzE1ZDFiZGJmM2YyNDJkNmMwOWY4MjFjODY3ZjNmCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGlu
Zy9nZW5lcmFsLmFueS5qcwpAQCAtMCwwICsxLDIwMCBAQAorLy8gTUVUQTogZ2xvYmFsPXdpbmRv
dyx3b3JrZXIsanNzaGVsbAorLy8gTUVUQTogc2NyaXB0PS4uL3Jlc291cmNlcy90ZXN0LXV0aWxz
LmpzCisvLyBNRVRBOiBzY3JpcHQ9Li4vcmVzb3VyY2VzL3JlY29yZGluZy1zdHJlYW1zLmpzCisn
dXNlIHN0cmljdCc7CisKK3Rlc3QoKCkgPT4geworCisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxl
U3RyZWFtKCk7CisgIGNvbnN0IHdzID0gbmV3IFdyaXRhYmxlU3RyZWFtKCk7CisKKyAgYXNzZXJ0
X2ZhbHNlKHJzLmxvY2tlZCwgJ3Nhbml0eSBjaGVjazogdGhlIFJlYWRhYmxlU3RyZWFtIG11c3Qg
bm90IHN0YXJ0IGxvY2tlZCcpOworICBhc3NlcnRfZmFsc2Uod3MubG9ja2VkLCAnc2FuaXR5IGNo
ZWNrOiB0aGUgV3JpdGFibGVTdHJlYW0gbXVzdCBub3Qgc3RhcnQgbG9ja2VkJyk7CisKKyAgcnMu
cGlwZVRvKHdzKTsKKworICBhc3NlcnRfdHJ1ZShycy5sb2NrZWQsICd0aGUgUmVhZGFibGVTdHJl
YW0gbXVzdCBiZWNvbWUgbG9ja2VkJyk7CisgIGFzc2VydF90cnVlKHdzLmxvY2tlZCwgJ3RoZSBX
cml0YWJsZVN0cmVhbSBtdXN0IGJlY29tZSBsb2NrZWQnKTsKKworfSwgJ1BpcGluZyBtdXN0IGxv
Y2sgYm90aCB0aGUgUmVhZGFibGVTdHJlYW0gYW5kIFdyaXRhYmxlU3RyZWFtJyk7CisKK3Byb21p
c2VfdGVzdCgoKSA9PiB7CisKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAg
IHN0YXJ0KGNvbnRyb2xsZXIpIHsKKyAgICAgIGNvbnRyb2xsZXIuY2xvc2UoKTsKKyAgICB9Cisg
IH0pOworICBjb25zdCB3cyA9IG5ldyBXcml0YWJsZVN0cmVhbSgpOworCisgIHJldHVybiBycy5w
aXBlVG8od3MpLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9mYWxzZShycy5sb2NrZWQsICd0aGUg
UmVhZGFibGVTdHJlYW0gbXVzdCBiZWNvbWUgdW5sb2NrZWQnKTsKKyAgICBhc3NlcnRfZmFsc2Uo
d3MubG9ja2VkLCAndGhlIFdyaXRhYmxlU3RyZWFtIG11c3QgYmVjb21lIHVubG9ja2VkJyk7Cisg
IH0pOworCit9LCAnUGlwaW5nIGZpbmlzaGluZyBtdXN0IHVubG9jayBib3RoIHRoZSBSZWFkYWJs
ZVN0cmVhbSBhbmQgV3JpdGFibGVTdHJlYW0nKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworCisg
IGNvbnN0IGZha2VSUyA9IE9iamVjdC5jcmVhdGUoUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlKTsK
KyAgY29uc3Qgd3MgPSBuZXcgV3JpdGFibGVTdHJlYW0oKTsKKworICByZXR1cm4gbWV0aG9kUmVq
ZWN0cyh0LCBSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUsICdwaXBlVG8nLCBmYWtlUlMsIFt3c10p
OworCit9LCAncGlwZVRvIG11c3QgY2hlY2sgdGhlIGJyYW5kIG9mIGl0cyBSZWFkYWJsZVN0cmVh
bSB0aGlzIHZhbHVlJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKworICBjb25zdCBycyA9IG5l
dyBSZWFkYWJsZVN0cmVhbSgpOworICBjb25zdCBmYWtlV1MgPSBPYmplY3QuY3JlYXRlKFdyaXRh
YmxlU3RyZWFtLnByb3RvdHlwZSk7CisKKyAgcmV0dXJuIG1ldGhvZFJlamVjdHModCwgUmVhZGFi
bGVTdHJlYW0ucHJvdG90eXBlLCAncGlwZVRvJywgcnMsIFtmYWtlV1NdKTsKKworfSwgJ3BpcGVU
byBtdXN0IGNoZWNrIHRoZSBicmFuZCBvZiBpdHMgV3JpdGFibGVTdHJlYW0gYXJndW1lbnQnKTsK
KworcHJvbWlzZV90ZXN0KHQgPT4geworCisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFt
KCk7CisgIGNvbnN0IHdzID0gbmV3IFdyaXRhYmxlU3RyZWFtKCk7CisKKyAgcnMuZ2V0UmVhZGVy
KCk7CisKKyAgYXNzZXJ0X3RydWUocnMubG9ja2VkLCAnc2FuaXR5IGNoZWNrOiB0aGUgUmVhZGFi
bGVTdHJlYW0gc3RhcnRzIGxvY2tlZCcpOworICBhc3NlcnRfZmFsc2Uod3MubG9ja2VkLCAnc2Fu
aXR5IGNoZWNrOiB0aGUgV3JpdGFibGVTdHJlYW0gZG9lcyBub3Qgc3RhcnQgbG9ja2VkJyk7CisK
KyAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19qcyh0LCBUeXBlRXJyb3IsIHJzLnBpcGVUbyh3cykp
LnRoZW4oKCkgPT4geworICAgIGFzc2VydF9mYWxzZSh3cy5sb2NrZWQsICd0aGUgV3JpdGFibGVT
dHJlYW0gbXVzdCBzdGlsbCBiZSB1bmxvY2tlZCcpOworICB9KTsKKworfSwgJ3BpcGVUbyBtdXN0
IGZhaWwgaWYgdGhlIFJlYWRhYmxlU3RyZWFtIGlzIGxvY2tlZCwgYW5kIG5vdCBsb2NrIHRoZSBX
cml0YWJsZVN0cmVhbScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisKKyAgY29uc3QgcnMgPSBu
ZXcgUmVhZGFibGVTdHJlYW0oKTsKKyAgY29uc3Qgd3MgPSBuZXcgV3JpdGFibGVTdHJlYW0oKTsK
KworICB3cy5nZXRXcml0ZXIoKTsKKworICBhc3NlcnRfZmFsc2UocnMubG9ja2VkLCAnc2FuaXR5
IGNoZWNrOiB0aGUgUmVhZGFibGVTdHJlYW0gZG9lcyBub3Qgc3RhcnQgbG9ja2VkJyk7CisgIGFz
c2VydF90cnVlKHdzLmxvY2tlZCwgJ3Nhbml0eSBjaGVjazogdGhlIFdyaXRhYmxlU3RyZWFtIHN0
YXJ0cyBsb2NrZWQnKTsKKworICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2pzKHQsIFR5cGVFcnJv
ciwgcnMucGlwZVRvKHdzKSkudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X2ZhbHNlKHJzLmxvY2tl
ZCwgJ3RoZSBSZWFkYWJsZVN0cmVhbSBtdXN0IHN0aWxsIGJlIHVubG9ja2VkJyk7CisgIH0pOwor
Cit9LCAncGlwZVRvIG11c3QgZmFpbCBpZiB0aGUgV3JpdGFibGVTdHJlYW0gaXMgbG9ja2VkLCBh
bmQgbm90IGxvY2sgdGhlIFJlYWRhYmxlU3RyZWFtJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7
CisKKyAgY29uc3QgQ0hVTktTID0gMTA7CisKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJl
YW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgQ0hVTktTOyAr
K2kpIHsKKyAgICAgICAgYy5lbnF1ZXVlKGkpOworICAgICAgfQorICAgICAgYy5jbG9zZSgpOwor
ICAgIH0KKyAgfSk7CisKKyAgY29uc3Qgd3JpdHRlbiA9IFtdOworICBjb25zdCB3cyA9IG5ldyBX
cml0YWJsZVN0cmVhbSh7CisgICAgd3JpdGUoY2h1bmspIHsKKyAgICAgIHdyaXR0ZW4ucHVzaChj
aHVuayk7CisgICAgfSwKKyAgICBjbG9zZSgpIHsKKyAgICAgIHdyaXR0ZW4ucHVzaCgnY2xvc2Vk
Jyk7CisgICAgfQorICB9LCBuZXcgQ291bnRRdWV1aW5nU3RyYXRlZ3koeyBoaWdoV2F0ZXJNYXJr
OiBDSFVOS1MgfSkpOworCisgIHJldHVybiBycy5waXBlVG8od3MpLnRoZW4oKCkgPT4geworICAg
IGNvbnN0IHRhcmdldFZhbHVlcyA9IFtdOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgQ0hVTktT
OyArK2kpIHsKKyAgICAgIHRhcmdldFZhbHVlcy5wdXNoKGkpOworICAgIH0KKyAgICB0YXJnZXRW
YWx1ZXMucHVzaCgnY2xvc2VkJyk7CisKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdyaXR0ZW4s
IHRhcmdldFZhbHVlcywgJ3RoZSBjb3JyZWN0IHZhbHVlcyBtdXN0IGJlIHdyaXR0ZW4nKTsKKwor
ICAgIC8vIEVuc3VyZSBib3RoIHJlYWRhYmxlIGFuZCB3cml0YWJsZSBhcmUgY2xvc2VkIGJ5IHRo
ZSB0aW1lIHRoZSBwaXBlIGZpbmlzaGVzLgorICAgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAg
ICBycy5nZXRSZWFkZXIoKS5jbG9zZWQsCisgICAgICB3cy5nZXRXcml0ZXIoKS5jbG9zZWQKKyAg
ICBdKTsKKyAgfSk7CisKKyAgLy8gTk9URTogbm8gcmVxdWlyZW1lbnQgb24gKndoZW4qIHRoZSBw
aXBlIGZpbmlzaGVzOyB0aGF0IGlzIGxlZnQgdG8gaW1wbGVtZW50YXRpb25zLgorCit9LCAnUGlw
aW5nIGZyb20gYSBSZWFkYWJsZVN0cmVhbSBmcm9tIHdoaWNoIGxvdHMgb2YgY2h1bmtzIGFyZSBz
eW5jaHJvbm91c2x5IHJlYWRhYmxlJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKworICBsZXQg
Y29udHJvbGxlcjsKKyAgY29uc3QgcnMgPSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSh7CisgICAg
c3RhcnQoYykgeworICAgICAgY29udHJvbGxlciA9IGM7CisgICAgfQorICB9KTsKKworICBjb25z
dCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKCk7CisKKyAgY29uc3QgcGlwZVByb21pc2Ug
PSBycy5waXBlVG8od3MpLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3Mu
ZXZlbnRzLCBbJ3dyaXRlJywgJ0hlbGxvJywgJ2Nsb3NlJ10pOworICB9KTsKKworICB0LnN0ZXBf
dGltZW91dCgoKSA9PiB7CisgICAgY29udHJvbGxlci5lbnF1ZXVlKCdIZWxsbycpOworICAgIHQu
c3RlcF90aW1lb3V0KCgpID0+IGNvbnRyb2xsZXIuY2xvc2UoKSwgMTApOworICB9LCAxMCk7CisK
KyAgcmV0dXJuIHBpcGVQcm9taXNlOworCit9LCAnUGlwaW5nIGZyb20gYSBSZWFkYWJsZVN0cmVh
bSBmb3Igd2hpY2ggYSBjaHVuayBiZWNvbWVzIGFzeW5jaHJvbm91c2x5IHJlYWRhYmxlIGFmdGVy
IHRoZSBwaXBlVG8nKTsKKworZm9yIChjb25zdCBwcmV2ZW50QWJvcnQgb2YgW3RydWUsIGZhbHNl
XSkgeworICBwcm9taXNlX3Rlc3QoKCkgPT4geworCisgICAgY29uc3QgcnMgPSBuZXcgUmVhZGFi
bGVTdHJlYW0oeworICAgICAgcHVsbCgpIHsKKyAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0
KHVuZGVmaW5lZCk7CisgICAgICB9CisgICAgfSk7CisKKyAgICByZXR1cm4gcnMucGlwZVRvKG5l
dyBXcml0YWJsZVN0cmVhbSgpLCB7IHByZXZlbnRBYm9ydCB9KS50aGVuKAorICAgICAgICAoKSA9
PiBhc3NlcnRfdW5yZWFjaGVkKCdwaXBlVG8gcHJvbWlzZSBzaG91bGQgYmUgcmVqZWN0ZWQnKSwK
KyAgICAgICAgdmFsdWUgPT4gYXNzZXJ0X2VxdWFscyh2YWx1ZSwgdW5kZWZpbmVkLCAncmVqZWN0
aW9uIHZhbHVlIHNob3VsZCBiZSB1bmRlZmluZWQnKSk7CisKKyAgfSwgYGFuIHVuZGVmaW5lZCBy
ZWplY3Rpb24gZnJvbSBwdWxsIHNob3VsZCBjYXVzZSBwaXBlVG8oKSB0byByZWplY3Qgd2hlbiBw
cmV2ZW50QWJvcnQgaXMgJHtwcmV2ZW50QWJvcnR9YCk7Cit9CisKK2ZvciAoY29uc3QgcHJldmVu
dENhbmNlbCBvZiBbdHJ1ZSwgZmFsc2VdKSB7CisgIHByb21pc2VfdGVzdCgoKSA9PiB7CisKKyAg
ICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgICBwdWxsKGNvbnRyb2xsZXIp
IHsKKyAgICAgICAgY29udHJvbGxlci5lbnF1ZXVlKDApOworICAgICAgfQorICAgIH0pOworCisg
ICAgY29uc3Qgd3MgPSBuZXcgV3JpdGFibGVTdHJlYW0oeworICAgICAgd3JpdGUoKSB7CisgICAg
ICAgIHJldHVybiBQcm9taXNlLnJlamVjdCh1bmRlZmluZWQpOworICAgICAgfQorICAgIH0pOwor
CisgICAgcmV0dXJuIHJzLnBpcGVUbyh3cywgeyBwcmV2ZW50Q2FuY2VsIH0pLnRoZW4oCisgICAg
ICAgICAoKSA9PiBhc3NlcnRfdW5yZWFjaGVkKCdwaXBlVG8gcHJvbWlzZSBzaG91bGQgYmUgcmVq
ZWN0ZWQnKSwKKyAgICAgICAgdmFsdWUgPT4gYXNzZXJ0X2VxdWFscyh2YWx1ZSwgdW5kZWZpbmVk
LCAncmVqZWN0aW9uIHZhbHVlIHNob3VsZCBiZSB1bmRlZmluZWQnKSk7CisKKyAgfSwgYGFuIHVu
ZGVmaW5lZCByZWplY3Rpb24gZnJvbSB3cml0ZSBzaG91bGQgY2F1c2UgcGlwZVRvKCkgdG8gcmVq
ZWN0IHdoZW4gcHJldmVudENhbmNlbCBpcyAke3ByZXZlbnRDYW5jZWx9YCk7Cit9CisKK3Byb21p
c2VfdGVzdCh0ID0+IHsKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oKTsKKyAgY29u
c3Qgd3MgPSBuZXcgV3JpdGFibGVTdHJlYW0oKTsKKyAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19q
cyh0LCBUeXBlRXJyb3IsIHJzLnBpcGVUbyh3cywgeworICAgIGdldCBwcmV2ZW50QWJvcnQoKSB7
CisgICAgICB3cy5nZXRXcml0ZXIoKTsKKyAgICB9CisgIH0pLCAncGlwZVRvIHNob3VsZCByZWpl
Y3QnKTsKK30sICdwaXBlVG8oKSBzaG91bGQgcmVqZWN0IGlmIGFuIG9wdGlvbiBnZXR0ZXIgZ3Jh
YnMgYSB3cml0ZXInKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvZ2VuZXJhbC5hbnkud29ya2VyLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy9waXBpbmcvZ2VuZXJhbC5hbnkud29ya2VyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZTM5
MGJiZjRkNWJiY2Y2NGYxNmMzZGU3MmIwZDg0OTY4MmVjNzZhCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGlu
Zy9nZW5lcmFsLmFueS53b3JrZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTUgQEAKKworRkFJ
TCBQaXBpbmcgbXVzdCBsb2NrIGJvdGggdGhlIFJlYWRhYmxlU3RyZWFtIGFuZCBXcml0YWJsZVN0
cmVhbSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBQaXBpbmcgZmlu
aXNoaW5nIG11c3QgdW5sb2NrIGJvdGggdGhlIFJlYWRhYmxlU3RyZWFtIGFuZCBXcml0YWJsZVN0
cmVhbSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBwaXBlVG8gbXVz
dCBjaGVjayB0aGUgYnJhbmQgb2YgaXRzIFJlYWRhYmxlU3RyZWFtIHRoaXMgdmFsdWUgQ2FuJ3Qg
ZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgcGlwZVRvIG11c3QgY2hlY2sgdGhl
IGJyYW5kIG9mIGl0cyBXcml0YWJsZVN0cmVhbSBhcmd1bWVudCBDYW4ndCBmaW5kIHZhcmlhYmxl
OiBXcml0YWJsZVN0cmVhbQorRkFJTCBwaXBlVG8gbXVzdCBmYWlsIGlmIHRoZSBSZWFkYWJsZVN0
cmVhbSBpcyBsb2NrZWQsIGFuZCBub3QgbG9jayB0aGUgV3JpdGFibGVTdHJlYW0gQ2FuJ3QgZmlu
ZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgcGlwZVRvIG11c3QgZmFpbCBpZiB0aGUg
V3JpdGFibGVTdHJlYW0gaXMgbG9ja2VkLCBhbmQgbm90IGxvY2sgdGhlIFJlYWRhYmxlU3RyZWFt
IENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIFBpcGluZyBmcm9tIGEg
UmVhZGFibGVTdHJlYW0gZnJvbSB3aGljaCBsb3RzIG9mIGNodW5rcyBhcmUgc3luY2hyb25vdXNs
eSByZWFkYWJsZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBQaXBp
bmcgZnJvbSBhIFJlYWRhYmxlU3RyZWFtIGZvciB3aGljaCBhIGNodW5rIGJlY29tZXMgYXN5bmNo
cm9ub3VzbHkgcmVhZGFibGUgYWZ0ZXIgdGhlIHBpcGVUbyBDYW4ndCBmaW5kIHZhcmlhYmxlOiBX
cml0YWJsZVN0cmVhbQorRkFJTCBhbiB1bmRlZmluZWQgcmVqZWN0aW9uIGZyb20gcHVsbCBzaG91
bGQgY2F1c2UgcGlwZVRvKCkgdG8gcmVqZWN0IHdoZW4gcHJldmVudEFib3J0IGlzIHRydWUgQ2Fu
J3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgYW4gdW5kZWZpbmVkIHJlamVj
dGlvbiBmcm9tIHB1bGwgc2hvdWxkIGNhdXNlIHBpcGVUbygpIHRvIHJlamVjdCB3aGVuIHByZXZl
bnRBYm9ydCBpcyBmYWxzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJ
TCBhbiB1bmRlZmluZWQgcmVqZWN0aW9uIGZyb20gd3JpdGUgc2hvdWxkIGNhdXNlIHBpcGVUbygp
IHRvIHJlamVjdCB3aGVuIHByZXZlbnRDYW5jZWwgaXMgdHJ1ZSBDYW4ndCBmaW5kIHZhcmlhYmxl
OiBXcml0YWJsZVN0cmVhbQorRkFJTCBhbiB1bmRlZmluZWQgcmVqZWN0aW9uIGZyb20gd3JpdGUg
c2hvdWxkIGNhdXNlIHBpcGVUbygpIHRvIHJlamVjdCB3aGVuIHByZXZlbnRDYW5jZWwgaXMgZmFs
c2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgcGlwZVRvKCkgc2hv
dWxkIHJlamVjdCBpZiBhbiBvcHRpb24gZ2V0dGVyIGdyYWJzIGEgd3JpdGVyIENhbid0IGZpbmQg
dmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvZ2VuZXJhbC5hbnkud29y
a2VyLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMvcGlwaW5nL2dlbmVyYWwuYW55Lndvcmtlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzODI5MTM1
MjhlNjkzYjNhNWQ1NmM2NjBhNDUwNjA5ODBiNTQ4YzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2dl
bmVyYWwuYW55Lndvcmtlci5odG1sCkBAIC0wLDAgKzEgQEAKKzwhLS0gVGhpcyBmaWxlIGlzIHJl
cXVpcmVkIGZvciBXZWJLaXQgdGVzdCBpbmZyYXN0cnVjdHVyZSB0byBydW4gdGhlIHRlbXBsYXRl
ZCB0ZXN0IC0tPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvZ2Vu
ZXJhbC5kZWRpY2F0ZWR3b3JrZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9nZW5lcmFsLmRlZGljYXRlZHdv
cmtlci1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU1ZGU0ODll
NjBkOTcwNzVkYzVkOWI4YjBiMWQ0NjQxODExODI1YmQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9nZW5lcmFsLmRlZGljYXRlZHdvcmtlci1leHBlY3Rl
ZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwxNCArMCwwIEBACi0KLUZBSUwgUGlwaW5nIG11c3Qg
bG9jayBib3RoIHRoZSBSZWFkYWJsZVN0cmVhbSBhbmQgV3JpdGFibGVTdHJlYW0gQ2FuJ3QgZmlu
ZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgUGlwaW5nIGZpbmlzaGluZyBtdXN0IHVu
bG9jayBib3RoIHRoZSBSZWFkYWJsZVN0cmVhbSBhbmQgV3JpdGFibGVTdHJlYW0gQ2FuJ3QgZmlu
ZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgcGlwZVRvIG11c3QgY2hlY2sgdGhlIGJy
YW5kIG9mIGl0cyBSZWFkYWJsZVN0cmVhbSB0aGlzIHZhbHVlIENhbid0IGZpbmQgdmFyaWFibGU6
IFdyaXRhYmxlU3RyZWFtCi1GQUlMIHBpcGVUbyBtdXN0IGNoZWNrIHRoZSBicmFuZCBvZiBpdHMg
V3JpdGFibGVTdHJlYW0gYXJndW1lbnQgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJl
YW0KLUZBSUwgcGlwZVRvIG11c3QgZmFpbCBpZiB0aGUgUmVhZGFibGVTdHJlYW0gaXMgbG9ja2Vk
LCBhbmQgbm90IGxvY2sgdGhlIFdyaXRhYmxlU3RyZWFtIENhbid0IGZpbmQgdmFyaWFibGU6IFdy
aXRhYmxlU3RyZWFtCi1GQUlMIHBpcGVUbyBtdXN0IGZhaWwgaWYgdGhlIFdyaXRhYmxlU3RyZWFt
IGlzIGxvY2tlZCwgYW5kIG5vdCBsb2NrIHRoZSBSZWFkYWJsZVN0cmVhbSBDYW4ndCBmaW5kIHZh
cmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBQaXBpbmcgZnJvbSBhIFJlYWRhYmxlU3RyZWFt
IGZyb20gd2hpY2ggbG90cyBvZiBjaHVua3MgYXJlIHN5bmNocm9ub3VzbHkgcmVhZGFibGUgQ2Fu
J3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgUGlwaW5nIGZyb20gYSBSZWFk
YWJsZVN0cmVhbSBmb3Igd2hpY2ggYSBjaHVuayBiZWNvbWVzIGFzeW5jaHJvbm91c2x5IHJlYWRh
YmxlIGFmdGVyIHRoZSBwaXBlVG8gQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0K
LUZBSUwgYW4gdW5kZWZpbmVkIHJlamVjdGlvbiBmcm9tIHB1bGwgc2hvdWxkIGNhdXNlIHBpcGVU
bygpIHRvIHJlamVjdCB3aGVuIHByZXZlbnRBYm9ydCBpcyB0cnVlIENhbid0IGZpbmQgdmFyaWFi
bGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIGFuIHVuZGVmaW5lZCByZWplY3Rpb24gZnJvbSBwdWxs
IHNob3VsZCBjYXVzZSBwaXBlVG8oKSB0byByZWplY3Qgd2hlbiBwcmV2ZW50QWJvcnQgaXMgZmFs
c2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgYW4gdW5kZWZpbmVk
IHJlamVjdGlvbiBmcm9tIHdyaXRlIHNob3VsZCBjYXVzZSBwaXBlVG8oKSB0byByZWplY3Qgd2hl
biBwcmV2ZW50Q2FuY2VsIGlzIHRydWUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJl
YW0KLUZBSUwgYW4gdW5kZWZpbmVkIHJlamVjdGlvbiBmcm9tIHdyaXRlIHNob3VsZCBjYXVzZSBw
aXBlVG8oKSB0byByZWplY3Qgd2hlbiBwcmV2ZW50Q2FuY2VsIGlzIGZhbHNlIENhbid0IGZpbmQg
dmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvZ2VuZXJhbC5kZWRpY2F0
ZWR3b3JrZXIuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy9waXBpbmcvZ2VuZXJhbC5kZWRpY2F0ZWR3b3JrZXIuaHRtbApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggODZlNDgwMTM5ZTg5MTcyY2NjZDJhMDhmMTQxN2RkMzM5OGY1
MzI4YS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2dl
bmVyYWwuZGVkaWNhdGVkd29ya2VyLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBA
Ci08IURPQ1RZUEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTx0aXRsZT5nZW5lcmFs
LmpzIGRlZGljYXRlZCB3b3JrZXIgd3JhcHBlciBmaWxlPC90aXRsZT4KLQotPHNjcmlwdCBzcmM9
Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9yZXNv
dXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotCi08c2NyaXB0PgotJ3VzZSBz
dHJpY3QnOwotZmV0Y2hfdGVzdHNfZnJvbV93b3JrZXIobmV3IFdvcmtlcignZ2VuZXJhbC5qcycp
KTsKLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9nZW5lcmFsLmh0bWwgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2dlbmVyYWwuaHRt
bApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzQ5MzhhMjE2YzIyNGYwNWIxMjBmYmVi
ZDliZjdjZGE4M2FkYzViNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvcGlwaW5nL2dlbmVyYWwuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLTwh
RE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHRpdGxlPmdlbmVyYWwuanMg
YnJvd3NlciBjb250ZXh0IHdyYXBwZXIgZmlsZTwvdGl0bGU+Ci0KLTxzY3JpcHQgc3JjPSIvcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLQotPHNjcmlwdCBzcmM9Ii4uL3Jlc291
cmNlcy90ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMv
cmVjb3JkaW5nLXN0cmVhbXMuanMiPjwvc2NyaXB0PgotCi08c2NyaXB0IHNyYz0iZ2VuZXJhbC5q
cyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2dlbmVyYWwuanMgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2dlbmVyYWwuanMKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZiYzZlOWJlNThiZDg2NzQwM2I4ODU4ZjQxMmEx
YjBmZGNlZjNiZjcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3Bp
cGluZy9nZW5lcmFsLmpzCisrKyAvZGV2L251bGwKQEAgLTEsMTk1ICswLDAgQEAKLSd1c2Ugc3Ry
aWN0JzsKLQotaWYgKHNlbGYuaW1wb3J0U2NyaXB0cykgewotICBzZWxmLmltcG9ydFNjcmlwdHMo
Jy9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMnKTsKLSAgc2VsZi5pbXBvcnRTY3JpcHRzKCcuLi9y
ZXNvdXJjZXMvdGVzdC11dGlscy5qcycpOwotICBzZWxmLmltcG9ydFNjcmlwdHMoJy4uL3Jlc291
cmNlcy9yZWNvcmRpbmctc3RyZWFtcy5qcycpOwotfQotCi10ZXN0KCgpID0+IHsKLQotICBjb25z
dCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSgpOwotICBjb25zdCB3cyA9IG5ldyBXcml0YWJsZVN0
cmVhbSgpOwotCi0gIGFzc2VydF9mYWxzZShycy5sb2NrZWQsICdzYW5pdHkgY2hlY2s6IHRoZSBS
ZWFkYWJsZVN0cmVhbSBtdXN0IG5vdCBzdGFydCBsb2NrZWQnKTsKLSAgYXNzZXJ0X2ZhbHNlKHdz
LmxvY2tlZCwgJ3Nhbml0eSBjaGVjazogdGhlIFdyaXRhYmxlU3RyZWFtIG11c3Qgbm90IHN0YXJ0
IGxvY2tlZCcpOwotCi0gIHJzLnBpcGVUbyh3cyk7Ci0KLSAgYXNzZXJ0X3RydWUocnMubG9ja2Vk
LCAndGhlIFJlYWRhYmxlU3RyZWFtIG11c3QgYmVjb21lIGxvY2tlZCcpOwotICBhc3NlcnRfdHJ1
ZSh3cy5sb2NrZWQsICd0aGUgV3JpdGFibGVTdHJlYW0gbXVzdCBiZWNvbWUgbG9ja2VkJyk7Ci0K
LX0sICdQaXBpbmcgbXVzdCBsb2NrIGJvdGggdGhlIFJlYWRhYmxlU3RyZWFtIGFuZCBXcml0YWJs
ZVN0cmVhbScpOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotCi0gIGNvbnN0IHJzID0gbmV3IFJl
YWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjb250cm9sbGVyKSB7Ci0gICAgICBjb250cm9sbGVy
LmNsb3NlKCk7Ci0gICAgfQotICB9KTsKLSAgY29uc3Qgd3MgPSBuZXcgV3JpdGFibGVTdHJlYW0o
KTsKLQotICByZXR1cm4gcnMucGlwZVRvKHdzKS50aGVuKCgpID0+IHsKLSAgICBhc3NlcnRfZmFs
c2UocnMubG9ja2VkLCAndGhlIFJlYWRhYmxlU3RyZWFtIG11c3QgYmVjb21lIHVubG9ja2VkJyk7
Ci0gICAgYXNzZXJ0X2ZhbHNlKHdzLmxvY2tlZCwgJ3RoZSBXcml0YWJsZVN0cmVhbSBtdXN0IGJl
Y29tZSB1bmxvY2tlZCcpOwotICB9KTsKLQotfSwgJ1BpcGluZyBmaW5pc2hpbmcgbXVzdCB1bmxv
Y2sgYm90aCB0aGUgUmVhZGFibGVTdHJlYW0gYW5kIFdyaXRhYmxlU3RyZWFtJyk7Ci0KLXByb21p
c2VfdGVzdCh0ID0+IHsKLQotICBjb25zdCBmYWtlUlMgPSBPYmplY3QuY3JlYXRlKFJlYWRhYmxl
U3RyZWFtLnByb3RvdHlwZSk7Ci0gIGNvbnN0IHdzID0gbmV3IFdyaXRhYmxlU3RyZWFtKCk7Ci0K
LSAgcmV0dXJuIG1ldGhvZFJlamVjdHModCwgUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLCAncGlw
ZVRvJywgZmFrZVJTLCBbd3NdKTsKLQotfSwgJ3BpcGVUbyBtdXN0IGNoZWNrIHRoZSBicmFuZCBv
ZiBpdHMgUmVhZGFibGVTdHJlYW0gdGhpcyB2YWx1ZScpOwotCi1wcm9taXNlX3Rlc3QodCA9PiB7
Ci0KLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oKTsKLSAgY29uc3QgZmFrZVdTID0g
T2JqZWN0LmNyZWF0ZShXcml0YWJsZVN0cmVhbS5wcm90b3R5cGUpOwotCi0gIHJldHVybiBtZXRo
b2RSZWplY3RzKHQsIFJlYWRhYmxlU3RyZWFtLnByb3RvdHlwZSwgJ3BpcGVUbycsIHJzLCBbZmFr
ZVdTXSk7Ci0KLX0sICdwaXBlVG8gbXVzdCBjaGVjayB0aGUgYnJhbmQgb2YgaXRzIFdyaXRhYmxl
U3RyZWFtIGFyZ3VtZW50Jyk7Ci0KLXByb21pc2VfdGVzdCh0ID0+IHsKLQotICBjb25zdCBycyA9
IG5ldyBSZWFkYWJsZVN0cmVhbSgpOwotICBjb25zdCB3cyA9IG5ldyBXcml0YWJsZVN0cmVhbSgp
OwotCi0gIHJzLmdldFJlYWRlcigpOwotCi0gIGFzc2VydF90cnVlKHJzLmxvY2tlZCwgJ3Nhbml0
eSBjaGVjazogdGhlIFJlYWRhYmxlU3RyZWFtIHN0YXJ0cyBsb2NrZWQnKTsKLSAgYXNzZXJ0X2Zh
bHNlKHdzLmxvY2tlZCwgJ3Nhbml0eSBjaGVjazogdGhlIFdyaXRhYmxlU3RyZWFtIGRvZXMgbm90
IHN0YXJ0IGxvY2tlZCcpOwotCi0gIHJldHVybiBwcm9taXNlX3JlamVjdHModCwgbmV3IFR5cGVF
cnJvcigpLCBycy5waXBlVG8od3MpKS50aGVuKCgpID0+IHsKLSAgICBhc3NlcnRfZmFsc2Uod3Mu
bG9ja2VkLCAndGhlIFdyaXRhYmxlU3RyZWFtIG11c3Qgc3RpbGwgYmUgdW5sb2NrZWQnKTsKLSAg
fSk7Ci0KLX0sICdwaXBlVG8gbXVzdCBmYWlsIGlmIHRoZSBSZWFkYWJsZVN0cmVhbSBpcyBsb2Nr
ZWQsIGFuZCBub3QgbG9jayB0aGUgV3JpdGFibGVTdHJlYW0nKTsKLQotcHJvbWlzZV90ZXN0KHQg
PT4gewotCi0gIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKCk7Ci0gIGNvbnN0IHdzID0g
bmV3IFdyaXRhYmxlU3RyZWFtKCk7Ci0KLSAgd3MuZ2V0V3JpdGVyKCk7Ci0KLSAgYXNzZXJ0X2Zh
bHNlKHJzLmxvY2tlZCwgJ3Nhbml0eSBjaGVjazogdGhlIFJlYWRhYmxlU3RyZWFtIGRvZXMgbm90
IHN0YXJ0IGxvY2tlZCcpOwotICBhc3NlcnRfdHJ1ZSh3cy5sb2NrZWQsICdzYW5pdHkgY2hlY2s6
IHRoZSBXcml0YWJsZVN0cmVhbSBzdGFydHMgbG9ja2VkJyk7Ci0KLSAgcmV0dXJuIHByb21pc2Vf
cmVqZWN0cyh0LCBuZXcgVHlwZUVycm9yKCksIHJzLnBpcGVUbyh3cykpLnRoZW4oKCkgPT4gewot
ICAgIGFzc2VydF9mYWxzZShycy5sb2NrZWQsICd0aGUgUmVhZGFibGVTdHJlYW0gbXVzdCBzdGls
bCBiZSB1bmxvY2tlZCcpOwotICB9KTsKLQotfSwgJ3BpcGVUbyBtdXN0IGZhaWwgaWYgdGhlIFdy
aXRhYmxlU3RyZWFtIGlzIGxvY2tlZCwgYW5kIG5vdCBsb2NrIHRoZSBSZWFkYWJsZVN0cmVhbScp
OwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotCi0gIGNvbnN0IENIVU5LUyA9IDEwOwotCi0gIGNv
bnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0gICAgICBmb3Ig
KGxldCBpID0gMDsgaSA8IENIVU5LUzsgKytpKSB7Ci0gICAgICAgIGMuZW5xdWV1ZShpKTsKLSAg
ICAgIH0KLSAgICAgIGMuY2xvc2UoKTsKLSAgICB9Ci0gIH0pOwotCi0gIGNvbnN0IHdyaXR0ZW4g
PSBbXTsKLSAgY29uc3Qgd3MgPSBuZXcgV3JpdGFibGVTdHJlYW0oewotICAgIHdyaXRlKGNodW5r
KSB7Ci0gICAgICB3cml0dGVuLnB1c2goY2h1bmspOwotICAgIH0sCi0gICAgY2xvc2UoKSB7Ci0g
ICAgICB3cml0dGVuLnB1c2goJ2Nsb3NlZCcpOwotICAgIH0KLSAgfSwgbmV3IENvdW50UXVldWlu
Z1N0cmF0ZWd5KHsgaGlnaFdhdGVyTWFyazogQ0hVTktTIH0pKTsKLQotICByZXR1cm4gcnMucGlw
ZVRvKHdzKS50aGVuKCgpID0+IHsKLSAgICBjb25zdCB0YXJnZXRWYWx1ZXMgPSBbXTsKLSAgICBm
b3IgKGxldCBpID0gMDsgaSA8IENIVU5LUzsgKytpKSB7Ci0gICAgICB0YXJnZXRWYWx1ZXMucHVz
aChpKTsKLSAgICB9Ci0gICAgdGFyZ2V0VmFsdWVzLnB1c2goJ2Nsb3NlZCcpOwotCi0gICAgYXNz
ZXJ0X2FycmF5X2VxdWFscyh3cml0dGVuLCB0YXJnZXRWYWx1ZXMsICd0aGUgY29ycmVjdCB2YWx1
ZXMgbXVzdCBiZSB3cml0dGVuJyk7Ci0KLSAgICAvLyBFbnN1cmUgYm90aCByZWFkYWJsZSBhbmQg
d3JpdGFibGUgYXJlIGNsb3NlZCBieSB0aGUgdGltZSB0aGUgcGlwZSBmaW5pc2hlcy4KLSAgICBy
ZXR1cm4gUHJvbWlzZS5hbGwoWwotICAgICAgcnMuZ2V0UmVhZGVyKCkuY2xvc2VkLAotICAgICAg
d3MuZ2V0V3JpdGVyKCkuY2xvc2VkCi0gICAgXSk7Ci0gIH0pOwotCi0gIC8vIE5PVEU6IG5vIHJl
cXVpcmVtZW50IG9uICp3aGVuKiB0aGUgcGlwZSBmaW5pc2hlczsgdGhhdCBpcyBsZWZ0IHRvIGlt
cGxlbWVudGF0aW9ucy4KLQotfSwgJ1BpcGluZyBmcm9tIGEgUmVhZGFibGVTdHJlYW0gZnJvbSB3
aGljaCBsb3RzIG9mIGNodW5rcyBhcmUgc3luY2hyb25vdXNseSByZWFkYWJsZScpOwotCi1wcm9t
aXNlX3Rlc3QoKCkgPT4gewotCi0gIGxldCBjb250cm9sbGVyOwotICBjb25zdCBycyA9IHJlY29y
ZGluZ1JlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0gICAgICBjb250cm9sbGVyID0g
YzsKLSAgICB9Ci0gIH0pOwotCi0gIGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0o
KTsKLQotICBjb25zdCBwaXBlUHJvbWlzZSA9IHJzLnBpcGVUbyh3cykudGhlbigoKSA9PiB7Ci0g
ICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsnd3JpdGUnLCAnSGVsbG8nLCAnY2xv
c2UnXSk7Ci0gIH0pOwotCi0gIHNldFRpbWVvdXQoKCkgPT4gewotICAgIGNvbnRyb2xsZXIuZW5x
dWV1ZSgnSGVsbG8nKTsKLSAgICBzZXRUaW1lb3V0KCgpID0+IGNvbnRyb2xsZXIuY2xvc2UoKSwg
MTApOwotICB9LCAxMCk7Ci0KLSAgcmV0dXJuIHBpcGVQcm9taXNlOwotCi19LCAnUGlwaW5nIGZy
b20gYSBSZWFkYWJsZVN0cmVhbSBmb3Igd2hpY2ggYSBjaHVuayBiZWNvbWVzIGFzeW5jaHJvbm91
c2x5IHJlYWRhYmxlIGFmdGVyIHRoZSBwaXBlVG8nKTsKLQotZm9yIChjb25zdCBwcmV2ZW50QWJv
cnQgb2YgW3RydWUsIGZhbHNlXSkgewotICBwcm9taXNlX3Rlc3QoKCkgPT4gewotCi0gICAgY29u
c3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgICAgcHVsbCgpIHsKLSAgICAgICAgcmV0
dXJuIFByb21pc2UucmVqZWN0KHVuZGVmaW5lZCk7Ci0gICAgICB9Ci0gICAgfSk7Ci0KLSAgICBy
ZXR1cm4gcnMucGlwZVRvKG5ldyBXcml0YWJsZVN0cmVhbSgpLCB7IHByZXZlbnRBYm9ydCB9KS50
aGVuKAotICAgICAgICAoKSA9PiBhc3NlcnRfdW5yZWFjaGVkKCdwaXBlVG8gcHJvbWlzZSBzaG91
bGQgYmUgcmVqZWN0ZWQnKSwKLSAgICAgICAgdmFsdWUgPT4gYXNzZXJ0X2VxdWFscyh2YWx1ZSwg
dW5kZWZpbmVkLCAncmVqZWN0aW9uIHZhbHVlIHNob3VsZCBiZSB1bmRlZmluZWQnKSk7Ci0KLSAg
fSwgYGFuIHVuZGVmaW5lZCByZWplY3Rpb24gZnJvbSBwdWxsIHNob3VsZCBjYXVzZSBwaXBlVG8o
KSB0byByZWplY3Qgd2hlbiBwcmV2ZW50QWJvcnQgaXMgJHtwcmV2ZW50QWJvcnR9YCk7Ci19Ci0K
LWZvciAoY29uc3QgcHJldmVudENhbmNlbCBvZiBbdHJ1ZSwgZmFsc2VdKSB7Ci0gIHByb21pc2Vf
dGVzdCgoKSA9PiB7Ci0KLSAgICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAg
ICBwdWxsKGNvbnRyb2xsZXIpIHsKLSAgICAgICAgY29udHJvbGxlci5lbnF1ZXVlKDApOwotICAg
ICAgfQotICAgIH0pOwotCi0gICAgY29uc3Qgd3MgPSBuZXcgV3JpdGFibGVTdHJlYW0oewotICAg
ICAgd3JpdGUoKSB7Ci0gICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCh1bmRlZmluZWQpOwot
ICAgICAgfQotICAgIH0pOwotCi0gICAgcmV0dXJuIHJzLnBpcGVUbyh3cywgeyBwcmV2ZW50Q2Fu
Y2VsIH0pLnRoZW4oCi0gICAgICAgICAoKSA9PiBhc3NlcnRfdW5yZWFjaGVkKCdwaXBlVG8gcHJv
bWlzZSBzaG91bGQgYmUgcmVqZWN0ZWQnKSwKLSAgICAgICAgdmFsdWUgPT4gYXNzZXJ0X2VxdWFs
cyh2YWx1ZSwgdW5kZWZpbmVkLCAncmVqZWN0aW9uIHZhbHVlIHNob3VsZCBiZSB1bmRlZmluZWQn
KSk7Ci0KLSAgfSwgYGFuIHVuZGVmaW5lZCByZWplY3Rpb24gZnJvbSB3cml0ZSBzaG91bGQgY2F1
c2UgcGlwZVRvKCkgdG8gcmVqZWN0IHdoZW4gcHJldmVudENhbmNlbCBpcyAke3ByZXZlbnRDYW5j
ZWx9YCk7Ci19Ci0KLWRvbmUoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvZ2VuZXJhbC5zZXJ2aWNld29ya2Vy
Lmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvZ2VuZXJhbC5zZXJ2aWNld29ya2VyLmh0dHBzLWV4cGVj
dGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2YwNGE4NzM3ZjMzMTQ0Yzkz
MzM1MmZjMWM3ZWE5M2UwNzVhMzkxNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMvcGlwaW5nL2dlbmVyYWwuc2VydmljZXdvcmtlci5odHRwcy1leHBlY3RlZC50eHQK
KysrIC9kZXYvbnVsbApAQCAtMSwxNSArMCwwIEBACi0KLVBBU1MgU2VydmljZSB3b3JrZXIgdGVz
dCBzZXR1cCAKLUZBSUwgUGlwaW5nIG11c3QgbG9jayBib3RoIHRoZSBSZWFkYWJsZVN0cmVhbSBh
bmQgV3JpdGFibGVTdHJlYW0gQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZB
SUwgUGlwaW5nIGZpbmlzaGluZyBtdXN0IHVubG9jayBib3RoIHRoZSBSZWFkYWJsZVN0cmVhbSBh
bmQgV3JpdGFibGVTdHJlYW0gQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZB
SUwgcGlwZVRvIG11c3QgY2hlY2sgdGhlIGJyYW5kIG9mIGl0cyBSZWFkYWJsZVN0cmVhbSB0aGlz
IHZhbHVlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIHBpcGVUbyBt
dXN0IGNoZWNrIHRoZSBicmFuZCBvZiBpdHMgV3JpdGFibGVTdHJlYW0gYXJndW1lbnQgQ2FuJ3Qg
ZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgcGlwZVRvIG11c3QgZmFpbCBpZiB0
aGUgUmVhZGFibGVTdHJlYW0gaXMgbG9ja2VkLCBhbmQgbm90IGxvY2sgdGhlIFdyaXRhYmxlU3Ry
ZWFtIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIHBpcGVUbyBtdXN0
IGZhaWwgaWYgdGhlIFdyaXRhYmxlU3RyZWFtIGlzIGxvY2tlZCwgYW5kIG5vdCBsb2NrIHRoZSBS
ZWFkYWJsZVN0cmVhbSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBQ
aXBpbmcgZnJvbSBhIFJlYWRhYmxlU3RyZWFtIGZyb20gd2hpY2ggbG90cyBvZiBjaHVua3MgYXJl
IHN5bmNocm9ub3VzbHkgcmVhZGFibGUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJl
YW0KLUZBSUwgUGlwaW5nIGZyb20gYSBSZWFkYWJsZVN0cmVhbSBmb3Igd2hpY2ggYSBjaHVuayBi
ZWNvbWVzIGFzeW5jaHJvbm91c2x5IHJlYWRhYmxlIGFmdGVyIHRoZSBwaXBlVG8gQ2FuJ3QgZmlu
ZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgYW4gdW5kZWZpbmVkIHJlamVjdGlvbiBm
cm9tIHB1bGwgc2hvdWxkIGNhdXNlIHBpcGVUbygpIHRvIHJlamVjdCB3aGVuIHByZXZlbnRBYm9y
dCBpcyB0cnVlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIGFuIHVu
ZGVmaW5lZCByZWplY3Rpb24gZnJvbSBwdWxsIHNob3VsZCBjYXVzZSBwaXBlVG8oKSB0byByZWpl
Y3Qgd2hlbiBwcmV2ZW50QWJvcnQgaXMgZmFsc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFi
bGVTdHJlYW0KLUZBSUwgYW4gdW5kZWZpbmVkIHJlamVjdGlvbiBmcm9tIHdyaXRlIHNob3VsZCBj
YXVzZSBwaXBlVG8oKSB0byByZWplY3Qgd2hlbiBwcmV2ZW50Q2FuY2VsIGlzIHRydWUgQ2FuJ3Qg
ZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgYW4gdW5kZWZpbmVkIHJlamVjdGlv
biBmcm9tIHdyaXRlIHNob3VsZCBjYXVzZSBwaXBlVG8oKSB0byByZWplY3Qgd2hlbiBwcmV2ZW50
Q2FuY2VsIGlzIGZhbHNlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi0KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy9waXBpbmcvZ2VuZXJhbC5zZXJ2aWNld29ya2VyLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2dlbmVyYWwu
c2VydmljZXdvcmtlci5odHRwcy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBk
MWRlN2MzNDJjMDNkNjg2MWU1M2JmYjczNWVkYjQyNDlmZGNmYzcyLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvZ2VuZXJhbC5zZXJ2aWNld29ya2VyLmh0
dHBzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4K
LTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTx0aXRsZT5nZW5lcmFsLmpzIHNlcnZpY2Ugd29ya2Vy
IHdyYXBwZXIgZmlsZTwvdGl0bGU+Ci0KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJu
ZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVw
b3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvc2VydmljZS13b3JrZXJzL3NlcnZpY2Ut
d29ya2VyL3Jlc291cmNlcy90ZXN0LWhlbHBlcnMuc3ViLmpzIj48L3NjcmlwdD4KLQotPHNjcmlw
dD4KLSd1c2Ugc3RyaWN0JzsKLXNlcnZpY2Vfd29ya2VyX3Rlc3QoJ2dlbmVyYWwuanMnLCAnU2Vy
dmljZSB3b3JrZXIgdGVzdCBzZXR1cCcpOwotPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2dlbmVy
YWwuc2hhcmVkd29ya2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvZ2VuZXJhbC5zaGFyZWR3b3JrZXItZXhw
ZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwOWQ1ZDI1MDlkNzg0N2U4
Y2Q2ZmU2NjA2YWE2MGNkZDMzYWE0NzRlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy9waXBpbmcvZ2VuZXJhbC5zaGFyZWR3b3JrZXItZXhwZWN0ZWQudHh0CisrKyAv
ZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1DT05TT0xFIE1FU1NBR0U6IFJlZmVyZW5jZUVycm9y
OiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBTaGFyZWRXb3JrZXIKLQotSGFybmVzcyBFcnJvciAoRkFJ
TCksIG1lc3NhZ2UgPSBSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogU2hhcmVk
V29ya2VyCi0KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9nZW5lcmFsLnNoYXJlZHdvcmtlci5odG1sIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9n
ZW5lcmFsLnNoYXJlZHdvcmtlci5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBk
Y2VlYThhYzhiOWYwMGM5ZDBjY2EzN2JmMTM3YmU0NTNlNzE0NTExLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvZ2VuZXJhbC5zaGFyZWR3b3JrZXIuaHRt
bAorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEg
Y2hhcnNldD0idXRmLTgiPgotPHRpdGxlPmdlbmVyYWwuanMgc2hhcmVkIHdvcmtlciB3cmFwcGVy
IGZpbGU8L3RpdGxlPgotCi08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+
PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+
PC9zY3JpcHQ+Ci0KLTxzY3JpcHQ+Ci0ndXNlIHN0cmljdCc7Ci1mZXRjaF90ZXN0c19mcm9tX3dv
cmtlcihuZXcgU2hhcmVkV29ya2VyKCdnZW5lcmFsLmpzJykpOwotPC9zY3JpcHQ+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
cGlwaW5nL211bHRpcGxlLXByb3BhZ2F0aW9uLmFueS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL211bHRpcGxl
LXByb3BhZ2F0aW9uLmFueS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjFlMmRlMjM3MjZiNDM5
ZmJhNDA0MTE0NzQ5YmZmMTRhODJkZDVhZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvbXVsdGlwbGUt
cHJvcGFnYXRpb24uYW55LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDExIEBACisKK0ZBSUwgUGlw
aW5nIGZyb20gYW4gZXJyb3JlZCByZWFkYWJsZSBzdHJlYW0gdG8gYW4gZXJyb3Jpbmcgd3JpdGFi
bGUgc3RyZWFtIGMuZXJyb3IgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnYy5lcnJvcihlcnJvcjIp
JywgJ2MuZXJyb3InIGlzIHVuZGVmaW5lZCkKK0ZBSUwgUGlwaW5nIGZyb20gYW4gZXJyb3JlZCBy
ZWFkYWJsZSBzdHJlYW0gdG8gYW4gZXJyb3JlZCB3cml0YWJsZSBzdHJlYW0gcHJvbWlzZV90ZXN0
OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiVHlwZUVycm9yOiBjLmVy
cm9yIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ2MuZXJyb3IoZXJyb3IyKScsICdjLmVycm9yJyBp
cyB1bmRlZmluZWQpIgorRkFJTCBQaXBpbmcgZnJvbSBhbiBlcnJvcmVkIHJlYWRhYmxlIHN0cmVh
bSB0byBhbiBlcnJvcmluZyB3cml0YWJsZSBzdHJlYW07IHByZXZlbnRBYm9ydCA9IHRydWUgYy5l
cnJvciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICdjLmVycm9yKGVycm9yMiknLCAnYy5lcnJvcicg
aXMgdW5kZWZpbmVkKQorRkFJTCBQaXBpbmcgZnJvbSBhbiBlcnJvcmVkIHJlYWRhYmxlIHN0cmVh
bSB0byBhbiBlcnJvcmVkIHdyaXRhYmxlIHN0cmVhbTsgcHJldmVudEFib3J0ID0gdHJ1ZSBwcm9t
aXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJUeXBlRXJy
b3I6IGMuZXJyb3IgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnYy5lcnJvcihlcnJvcjIpJywgJ2Mu
ZXJyb3InIGlzIHVuZGVmaW5lZCkiCitGQUlMIFBpcGluZyBmcm9tIGFuIGVycm9yZWQgcmVhZGFi
bGUgc3RyZWFtIHRvIGEgY2xvc2luZyB3cml0YWJsZSBzdHJlYW0gd3MuZ2V0V3JpdGVyIGlzIG5v
dCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicgaXMgdW5k
ZWZpbmVkKQorRkFJTCBQaXBpbmcgZnJvbSBhbiBlcnJvcmVkIHJlYWRhYmxlIHN0cmVhbSB0byBh
IGNsb3NlZCB3cml0YWJsZSBzdHJlYW0gd3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAo
SW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicgaXMgdW5kZWZpbmVkKQorRkFJTCBQ
aXBpbmcgZnJvbSBhIGNsb3NlZCByZWFkYWJsZSBzdHJlYW0gdG8gYW4gZXJyb3Jpbmcgd3JpdGFi
bGUgc3RyZWFtIGMuZXJyb3IgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnYy5lcnJvcihlcnJvcjEp
JywgJ2MuZXJyb3InIGlzIHVuZGVmaW5lZCkKK0ZBSUwgUGlwaW5nIGZyb20gYSBjbG9zZWQgcmVh
ZGFibGUgc3RyZWFtIHRvIGFuIGVycm9yZWQgd3JpdGFibGUgc3RyZWFtIHByb21pc2VfdGVzdDog
VW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVFcnJvcjogYy5lcnJv
ciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICdjLmVycm9yKGVycm9yMiknLCAnYy5lcnJvcicgaXMg
dW5kZWZpbmVkKSIKK0ZBSUwgUGlwaW5nIGZyb20gYSBjbG9zZWQgcmVhZGFibGUgc3RyZWFtIHRv
IGEgY2xvc2VkIHdyaXRhYmxlIHN0cmVhbSB3cy5nZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rpb24u
IChJbiAnd3MuZ2V0V3JpdGVyKCknLCAnd3MuZ2V0V3JpdGVyJyBpcyB1bmRlZmluZWQpCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy9waXBpbmcvbXVsdGlwbGUtcHJvcGFnYXRpb24uYW55Lmh0bWwgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL211bHRpcGxlLXBy
b3BhZ2F0aW9uLmFueS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzODI5MTM1MjhlNjkzYjNhNWQ1NmM2NjBh
NDUwNjA5ODBiNTQ4YzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL211bHRpcGxlLXByb3BhZ2F0aW9u
LmFueS5odG1sCkBAIC0wLDAgKzEgQEAKKzwhLS0gVGhpcyBmaWxlIGlzIHJlcXVpcmVkIGZvciBX
ZWJLaXQgdGVzdCBpbmZyYXN0cnVjdHVyZSB0byBydW4gdGhlIHRlbXBsYXRlZCB0ZXN0IC0tPgpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvbXVsdGlwbGUtcHJvcGFn
YXRpb24uYW55LmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL3BpcGluZy9tdWx0aXBsZS1wcm9wYWdhdGlvbi5hbnkuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YzlhNDg2ZjNmOWFjMmZlNTk1MzU2YmIxNGRlYTVhNjY3OTZlM2FhZgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9w
aXBpbmcvbXVsdGlwbGUtcHJvcGFnYXRpb24uYW55LmpzCkBAIC0wLDAgKzEsMjI3IEBACisvLyBN
RVRBOiBnbG9iYWw9d2luZG93LHdvcmtlcixqc3NoZWxsCisvLyBNRVRBOiBzY3JpcHQ9Li4vcmVz
b3VyY2VzL3Rlc3QtdXRpbHMuanMKKy8vIE1FVEE6IHNjcmlwdD0uLi9yZXNvdXJjZXMvcmVjb3Jk
aW5nLXN0cmVhbXMuanMKKyd1c2Ugc3RyaWN0JzsKKworY29uc3QgZXJyb3IxID0gbmV3IEVycm9y
KCdlcnJvcjEhJyk7CitlcnJvcjEubmFtZSA9ICdlcnJvcjEnOworCitjb25zdCBlcnJvcjIgPSBu
ZXcgRXJyb3IoJ2Vycm9yMiEnKTsKK2Vycm9yMi5uYW1lID0gJ2Vycm9yMic7CisKK2Z1bmN0aW9u
IGNyZWF0ZUVycm9yZWRXcml0YWJsZVN0cmVhbSh0KSB7CisgIHJldHVybiBQcm9taXNlLnJlc29s
dmUoKS50aGVuKCgpID0+IHsKKyAgICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFt
KHsKKyAgICAgIHN0YXJ0KGMpIHsKKyAgICAgICAgYy5lcnJvcihlcnJvcjIpOworICAgICAgfQor
ICAgIH0pOworCisgICAgY29uc3Qgd3JpdGVyID0gd3MuZ2V0V3JpdGVyKCk7CisgICAgcmV0dXJu
IHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMiwgd3JpdGVyLmNsb3NlZCwgJ3RoZSB3
cml0YWJsZSBzdHJlYW0gbXVzdCBiZSBlcnJvcmVkIHdpdGggZXJyb3IyJykKKyAgICAgICAgLnRo
ZW4oKCkgPT4geworICAgICAgICAgIHdyaXRlci5yZWxlYXNlTG9jaygpOworICAgICAgICAgIGFz
c2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbXSk7CisgICAgICAgICAgcmV0dXJuIHdzOwor
ICAgICAgICB9KTsKKyAgfSk7Cit9CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgY29uc3QgcnMg
PSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgYy5lcnJv
cihlcnJvcjEpOworICAgIH0KKyAgfSk7CisgIGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVT
dHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGMuZXJyb3IoZXJyb3IyKTsKKyAgICB9Cisg
IH0pOworCisgIC8vIFRyeWluZyB0byBhYm9ydCBhIHN0cmVhbSB0aGF0IGlzIGVycm9yaW5nIHdp
bGwgZ2l2ZSB0aGUgd3JpdGFibGUncyBlcnJvcgorICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2V4
YWN0bHkodCwgZXJyb3IyLCBycy5waXBlVG8od3MpLCAncGlwZVRvIG11c3QgcmVqZWN0IHdpdGgg
dGhlIHdyaXRhYmxlIHN0cmVhbVwncyBlcnJvcicpLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9h
cnJheV9lcXVhbHMocnMuZXZlbnRzLCBbXSk7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5l
dmVudHMsIFtdKTsKKworICAgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAgICBwcm9taXNlX3Jl
amVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIHJzLmdldFJlYWRlcigpLmNsb3NlZCwgJ3RoZSByZWFk
YWJsZSBzdHJlYW0gbXVzdCBiZSBlcnJvcmVkIHdpdGggZXJyb3IxJyksCisgICAgICBwcm9taXNl
X3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjIsIHdzLmdldFdyaXRlcigpLmNsb3NlZCwgJ3RoZSB3
cml0YWJsZSBzdHJlYW0gbXVzdCBiZSBlcnJvcmVkIHdpdGggZXJyb3IyJykKKyAgICBdKTsKKyAg
fSk7CisKK30sICdQaXBpbmcgZnJvbSBhbiBlcnJvcmVkIHJlYWRhYmxlIHN0cmVhbSB0byBhbiBl
cnJvcmluZyB3cml0YWJsZSBzdHJlYW0nKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBjb25z
dCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBj
LmVycm9yKGVycm9yMSk7CisgICAgfQorICB9KTsKKworICByZXR1cm4gY3JlYXRlRXJyb3JlZFdy
aXRhYmxlU3RyZWFtKHQpCisgICAgICAudGhlbih3cyA9PiBwcm9taXNlX3JlamVjdHNfZXhhY3Rs
eSh0LCBlcnJvcjEsIHJzLnBpcGVUbyh3cyksICdwaXBlVG8gbXVzdCByZWplY3Qgd2l0aCB0aGUg
cmVhZGFibGUgc3RyZWFtXCdzIGVycm9yJykpCisgICAgICAudGhlbigoKSA9PiB7CisgICAgICAg
IGFzc2VydF9hcnJheV9lcXVhbHMocnMuZXZlbnRzLCBbXSk7CisKKyAgICAgICAgcmV0dXJuIHBy
b21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMSwgcnMuZ2V0UmVhZGVyKCkuY2xvc2VkLCAn
dGhlIHJlYWRhYmxlIHN0cmVhbSBtdXN0IGJlIGVycm9yZWQgd2l0aCBlcnJvcjEnKTsKKyAgICAg
IH0pOworfSwgJ1BpcGluZyBmcm9tIGFuIGVycm9yZWQgcmVhZGFibGUgc3RyZWFtIHRvIGFuIGVy
cm9yZWQgd3JpdGFibGUgc3RyZWFtJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgY29uc3Qg
cnMgPSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgYy5l
cnJvcihlcnJvcjEpOworICAgIH0KKyAgfSk7CisgIGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFi
bGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGMuZXJyb3IoZXJyb3IyKTsKKyAgICB9
CisgIH0pOworCisgIHJldHVybiBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIHJz
LnBpcGVUbyh3cywgeyBwcmV2ZW50QWJvcnQ6IHRydWUgfSksCisgICAgJ3BpcGVUbyBtdXN0IHJl
amVjdCB3aXRoIHRoZSByZWFkYWJsZSBzdHJlYW1cJ3MgZXJyb3InKQorICAudGhlbigoKSA9PiB7
CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhycy5ldmVudHMsIFtdKTsKKyAgICBhc3NlcnRfYXJy
YXlfZXF1YWxzKHdzLmV2ZW50cywgW10pOworCisgICAgcmV0dXJuIFByb21pc2UuYWxsKFsKKyAg
ICAgIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMSwgcnMuZ2V0UmVhZGVyKCkuY2xv
c2VkLCAndGhlIHJlYWRhYmxlIHN0cmVhbSBtdXN0IGJlIGVycm9yZWQgd2l0aCBlcnJvcjEnKSwK
KyAgICAgIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMiwgd3MuZ2V0V3JpdGVyKCku
Y2xvc2VkLCAndGhlIHdyaXRhYmxlIHN0cmVhbSBtdXN0IGJlIGVycm9yZWQgd2l0aCBlcnJvcjIn
KQorICAgIF0pOworICB9KTsKKworfSwgJ1BpcGluZyBmcm9tIGFuIGVycm9yZWQgcmVhZGFibGUg
c3RyZWFtIHRvIGFuIGVycm9yaW5nIHdyaXRhYmxlIHN0cmVhbTsgcHJldmVudEFib3J0ID0gdHJ1
ZScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIGNvbnN0IHJzID0gcmVjb3JkaW5nUmVhZGFi
bGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGMuZXJyb3IoZXJyb3IxKTsKKyAgICB9
CisgIH0pOworICByZXR1cm4gY3JlYXRlRXJyb3JlZFdyaXRhYmxlU3RyZWFtKHQpCisgIC50aGVu
KHdzID0+IHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMSwgcnMucGlwZVRvKHdzLCB7
IHByZXZlbnRBYm9ydDogdHJ1ZSB9KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ3BpcGVUbyBtdXN0IHJlamVjdCB3aXRoIHRoZSByZWFkYWJsZSBzdHJlYW1cJ3MgZXJy
b3InKSkKKyAgLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9hcnJheV9lcXVhbHMocnMuZXZlbnRz
LCBbXSk7CisKKyAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCBy
cy5nZXRSZWFkZXIoKS5jbG9zZWQsICd0aGUgcmVhZGFibGUgc3RyZWFtIG11c3QgYmUgZXJyb3Jl
ZCB3aXRoIGVycm9yMScpOworICB9KTsKKworfSwgJ1BpcGluZyBmcm9tIGFuIGVycm9yZWQgcmVh
ZGFibGUgc3RyZWFtIHRvIGFuIGVycm9yZWQgd3JpdGFibGUgc3RyZWFtOyBwcmV2ZW50QWJvcnQg
PSB0cnVlJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgY29uc3QgcnMgPSByZWNvcmRpbmdS
ZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgYy5lcnJvcihlcnJvcjEpOwor
ICAgIH0KKyAgfSk7CisgIGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0oKTsKKyAg
Y29uc3Qgd3JpdGVyID0gd3MuZ2V0V3JpdGVyKCk7CisgIGNvbnN0IGNsb3NlUHJvbWlzZSA9IHdy
aXRlci5jbG9zZSgpOworICB3cml0ZXIucmVsZWFzZUxvY2soKTsKKworICByZXR1cm4gcHJvbWlz
ZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCBycy5waXBlVG8od3MpLCAncGlwZVRvIG11c3Qg
cmVqZWN0IHdpdGggdGhlIHJlYWRhYmxlIHN0cmVhbVwncyBlcnJvcicpLnRoZW4oKCkgPT4gewor
ICAgIGFzc2VydF9hcnJheV9lcXVhbHMocnMuZXZlbnRzLCBbXSk7CisgICAgYXNzZXJ0X2FycmF5
X2VxdWFscyh3cy5ldmVudHMsIFsnYWJvcnQnLCBlcnJvcjFdKTsKKworICAgIHJldHVybiBQcm9t
aXNlLmFsbChbCisgICAgICBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIHJzLmdl
dFJlYWRlcigpLmNsb3NlZCwgJ3RoZSByZWFkYWJsZSBzdHJlYW0gbXVzdCBiZSBlcnJvcmVkIHdp
dGggZXJyb3IxJyksCisgICAgICBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIHdz
LmdldFdyaXRlcigpLmNsb3NlZCwKKyAgICAgICAgJ2Nsb3NlZCBtdXN0IHJlamVjdCB3aXRoIGVy
cm9yMScpLAorICAgICAgcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCBjbG9zZVBy
b21pc2UsCisgICAgICAgICdjbG9zZSgpIG11c3QgcmVqZWN0IHdpdGggZXJyb3IxJykKKyAgICBd
KTsKKyAgfSk7CisKK30sICdQaXBpbmcgZnJvbSBhbiBlcnJvcmVkIHJlYWRhYmxlIHN0cmVhbSB0
byBhIGNsb3Npbmcgd3JpdGFibGUgc3RyZWFtJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAg
Y29uc3QgcnMgPSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAg
ICAgYy5lcnJvcihlcnJvcjEpOworICAgIH0KKyAgfSk7CisgIGNvbnN0IHdzID0gcmVjb3JkaW5n
V3JpdGFibGVTdHJlYW0oKTsKKyAgY29uc3Qgd3JpdGVyID0gd3MuZ2V0V3JpdGVyKCk7CisgIGNv
bnN0IGNsb3NlUHJvbWlzZSA9IHdyaXRlci5jbG9zZSgpOworICB3cml0ZXIucmVsZWFzZUxvY2so
KTsKKworICByZXR1cm4gZmx1c2hBc3luY0V2ZW50cygpLnRoZW4oKCkgPT4geworICAgIHJldHVy
biBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIHJzLnBpcGVUbyh3cyksICdwaXBl
VG8gbXVzdCByZWplY3Qgd2l0aCB0aGUgcmVhZGFibGUgc3RyZWFtXCdzIGVycm9yJykudGhlbigo
KSA9PiB7CisgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJzLmV2ZW50cywgW10pOworICAgICAg
YXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsnY2xvc2UnXSk7CisKKyAgICAgIHJldHVy
biBQcm9taXNlLmFsbChbCisgICAgICAgIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9y
MSwgcnMuZ2V0UmVhZGVyKCkuY2xvc2VkLCAndGhlIHJlYWRhYmxlIHN0cmVhbSBtdXN0IGJlIGVy
cm9yZWQgd2l0aCBlcnJvcjEnKSwKKyAgICAgICAgd3MuZ2V0V3JpdGVyKCkuY2xvc2VkLAorICAg
ICAgICBjbG9zZVByb21pc2UKKyAgICAgIF0pOworICAgIH0pOworICB9KTsKKworfSwgJ1BpcGlu
ZyBmcm9tIGFuIGVycm9yZWQgcmVhZGFibGUgc3RyZWFtIHRvIGEgY2xvc2VkIHdyaXRhYmxlIHN0
cmVhbScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIGNvbnN0IHJzID0gcmVjb3JkaW5nUmVh
ZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGMuY2xvc2UoKTsKKyAgICB9Cisg
IH0pOworICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChj
KSB7CisgICAgICBjLmVycm9yKGVycm9yMSk7CisgICAgfQorICB9KTsKKworICByZXR1cm4gcHJv
bWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCBycy5waXBlVG8od3MpLCAncGlwZVRvIG11
c3QgcmVqZWN0IHdpdGggdGhlIHdyaXRhYmxlIHN0cmVhbVwncyBlcnJvcicpLnRoZW4oKCkgPT4g
eworICAgIGFzc2VydF9hcnJheV9lcXVhbHMocnMuZXZlbnRzLCBbXSk7CisgICAgYXNzZXJ0X2Fy
cmF5X2VxdWFscyh3cy5ldmVudHMsIFtdKTsKKworICAgIHJldHVybiBQcm9taXNlLmFsbChbCisg
ICAgICBycy5nZXRSZWFkZXIoKS5jbG9zZWQsCisgICAgICBwcm9taXNlX3JlamVjdHNfZXhhY3Rs
eSh0LCBlcnJvcjEsIHdzLmdldFdyaXRlcigpLmNsb3NlZCwgJ3RoZSB3cml0YWJsZSBzdHJlYW0g
bXVzdCBiZSBlcnJvcmVkIHdpdGggZXJyb3IxJykKKyAgICBdKTsKKyAgfSk7CisKK30sICdQaXBp
bmcgZnJvbSBhIGNsb3NlZCByZWFkYWJsZSBzdHJlYW0gdG8gYW4gZXJyb3Jpbmcgd3JpdGFibGUg
c3RyZWFtJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgY29uc3QgcnMgPSByZWNvcmRpbmdS
ZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgYy5jbG9zZSgpOworICAgIH0K
KyAgfSk7CisgIHJldHVybiBjcmVhdGVFcnJvcmVkV3JpdGFibGVTdHJlYW0odCkKKyAgLnRoZW4o
d3MgPT4gcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IyLCBycy5waXBlVG8od3MpLCAn
cGlwZVRvIG11c3QgcmVqZWN0IHdpdGggdGhlIHdyaXRhYmxlIHN0cmVhbVwncyBlcnJvcicpKQor
ICAudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhycy5ldmVudHMsIFtdKTsK
KworICAgIHJldHVybiBycy5nZXRSZWFkZXIoKS5jbG9zZWQ7CisgIH0pOworCit9LCAnUGlwaW5n
IGZyb20gYSBjbG9zZWQgcmVhZGFibGUgc3RyZWFtIHRvIGFuIGVycm9yZWQgd3JpdGFibGUgc3Ry
ZWFtJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisgIGNvbnN0IHJzID0gcmVjb3JkaW5nUmVh
ZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGMuY2xvc2UoKTsKKyAgICB9Cisg
IH0pOworICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKCk7CisgIGNvbnN0IHdy
aXRlciA9IHdzLmdldFdyaXRlcigpOworICB3cml0ZXIuY2xvc2UoKTsKKyAgd3JpdGVyLnJlbGVh
c2VMb2NrKCk7CisKKyAgcmV0dXJuIHJzLnBpcGVUbyh3cykudGhlbigoKSA9PiB7CisgICAgYXNz
ZXJ0X2FycmF5X2VxdWFscyhycy5ldmVudHMsIFtdKTsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxz
KHdzLmV2ZW50cywgWydjbG9zZSddKTsKKworICAgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAg
ICBycy5nZXRSZWFkZXIoKS5jbG9zZWQsCisgICAgICB3cy5nZXRXcml0ZXIoKS5jbG9zZWQKKyAg
ICBdKTsKKyAgfSk7CisKK30sICdQaXBpbmcgZnJvbSBhIGNsb3NlZCByZWFkYWJsZSBzdHJlYW0g
dG8gYSBjbG9zZWQgd3JpdGFibGUgc3RyZWFtJyk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL211bHRpcGxlLXBy
b3BhZ2F0aW9uLmFueS53b3JrZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9tdWx0aXBsZS1wcm9wYWdhdGlv
bi5hbnkud29ya2VyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNzgzM2YyZTMyYjYyYTYxNTU0
NjZmYTA4MjVmZTE0NGEzMTYyYmNlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9tdWx0aXBsZS1wcm9w
YWdhdGlvbi5hbnkud29ya2VyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDExIEBACisKK0ZBSUwg
UGlwaW5nIGZyb20gYW4gZXJyb3JlZCByZWFkYWJsZSBzdHJlYW0gdG8gYW4gZXJyb3Jpbmcgd3Jp
dGFibGUgc3RyZWFtIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIFBp
cGluZyBmcm9tIGFuIGVycm9yZWQgcmVhZGFibGUgc3RyZWFtIHRvIGFuIGVycm9yZWQgd3JpdGFi
bGUgc3RyZWFtIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBv
YmplY3QgIlJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVh
bSIKK0ZBSUwgUGlwaW5nIGZyb20gYW4gZXJyb3JlZCByZWFkYWJsZSBzdHJlYW0gdG8gYW4gZXJy
b3Jpbmcgd3JpdGFibGUgc3RyZWFtOyBwcmV2ZW50QWJvcnQgPSB0cnVlIENhbid0IGZpbmQgdmFy
aWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIFBpcGluZyBmcm9tIGFuIGVycm9yZWQgcmVhZGFi
bGUgc3RyZWFtIHRvIGFuIGVycm9yZWQgd3JpdGFibGUgc3RyZWFtOyBwcmV2ZW50QWJvcnQgPSB0
cnVlIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3Qg
IlJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbSIKK0ZB
SUwgUGlwaW5nIGZyb20gYW4gZXJyb3JlZCByZWFkYWJsZSBzdHJlYW0gdG8gYSBjbG9zaW5nIHdy
aXRhYmxlIHN0cmVhbSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBQ
aXBpbmcgZnJvbSBhbiBlcnJvcmVkIHJlYWRhYmxlIHN0cmVhbSB0byBhIGNsb3NlZCB3cml0YWJs
ZSBzdHJlYW0gQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgUGlwaW5n
IGZyb20gYSBjbG9zZWQgcmVhZGFibGUgc3RyZWFtIHRvIGFuIGVycm9yaW5nIHdyaXRhYmxlIHN0
cmVhbSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBQaXBpbmcgZnJv
bSBhIGNsb3NlZCByZWFkYWJsZSBzdHJlYW0gdG8gYW4gZXJyb3JlZCB3cml0YWJsZSBzdHJlYW0g
cHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiUmVm
ZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtIgorRkFJTCBQ
aXBpbmcgZnJvbSBhIGNsb3NlZCByZWFkYWJsZSBzdHJlYW0gdG8gYSBjbG9zZWQgd3JpdGFibGUg
c3RyZWFtIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBp
bmcvbXVsdGlwbGUtcHJvcGFnYXRpb24uYW55Lndvcmtlci5odG1sIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9tdWx0aXBsZS1wcm9w
YWdhdGlvbi5hbnkud29ya2VyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjM4MjkxMzUyOGU2OTNiM2E1ZDU2
YzY2MGE0NTA2MDk4MGI1NDhjMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvbXVsdGlwbGUtcHJvcGFn
YXRpb24uYW55Lndvcmtlci5odG1sCkBAIC0wLDAgKzEgQEAKKzwhLS0gVGhpcyBmaWxlIGlzIHJl
cXVpcmVkIGZvciBXZWJLaXQgdGVzdCBpbmZyYXN0cnVjdHVyZSB0byBydW4gdGhlIHRlbXBsYXRl
ZCB0ZXN0IC0tPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvbXVs
dGlwbGUtcHJvcGFnYXRpb24uZGVkaWNhdGVkd29ya2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvbXVsdGlw
bGUtcHJvcGFnYXRpb24uZGVkaWNhdGVkd29ya2VyLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDk0ODg1MzM1NWFiMjcwMWMxNDIyM2ExOTEyNWJkZmM0YjhhODI5
YS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL211bHRp
cGxlLXByb3BhZ2F0aW9uLmRlZGljYXRlZHdvcmtlci1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVs
bApAQCAtMSw4ICswLDAgQEAKLQotRkFJTCBQaXBpbmcgZnJvbSBhbiBlcnJvcmVkIHJlYWRhYmxl
IHN0cmVhbSB0byBhbiBlcnJvcmVkIHdyaXRhYmxlIHN0cmVhbSBDYW4ndCBmaW5kIHZhcmlhYmxl
OiBXcml0YWJsZVN0cmVhbQotRkFJTCBQaXBpbmcgZnJvbSBhbiBlcnJvcmVkIHJlYWRhYmxlIHN0
cmVhbSB0byBhbiBlcnJvcmVkIHdyaXRhYmxlIHN0cmVhbTsgcHJldmVudEFib3J0ID0gdHJ1ZSBD
YW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBQaXBpbmcgZnJvbSBhbiBl
cnJvcmVkIHJlYWRhYmxlIHN0cmVhbSB0byBhIGNsb3Npbmcgd3JpdGFibGUgc3RyZWFtIENhbid0
IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIFBpcGluZyBmcm9tIGFuIGVycm9y
ZWQgcmVhZGFibGUgc3RyZWFtIHRvIGEgY2xvc2VkIHdyaXRhYmxlIHN0cmVhbSBDYW4ndCBmaW5k
IHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBQaXBpbmcgZnJvbSBhIGNsb3NlZCByZWFk
YWJsZSBzdHJlYW0gdG8gYW4gZXJyb3JlZCB3cml0YWJsZSBzdHJlYW0gQ2FuJ3QgZmluZCB2YXJp
YWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgUGlwaW5nIGZyb20gYSBjbG9zZWQgcmVhZGFibGUg
c3RyZWFtIHRvIGEgY2xvc2VkIHdyaXRhYmxlIHN0cmVhbSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBX
cml0YWJsZVN0cmVhbQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL211bHRpcGxlLXByb3BhZ2F0aW9uLmRlZGlj
YXRlZHdvcmtlci5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL3BpcGluZy9tdWx0aXBsZS1wcm9wYWdhdGlvbi5kZWRpY2F0ZWR3b3JrZXIu
aHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDcxY2UxNWY1ZDI0ODY1NmI5NTg0
OTBmY2QwZjdiZjg2N2U5ZGIxMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMvcGlwaW5nL211bHRpcGxlLXByb3BhZ2F0aW9uLmRlZGljYXRlZHdvcmtlci5odG1sCisr
KyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFy
c2V0PSJ1dGYtOCI+Ci08dGl0bGU+bXVsdGlwbGUtcHJvcGFnYXRpb24uanMgZGVkaWNhdGVkIHdv
cmtlciB3cmFwcGVyIGZpbGU8L3RpdGxlPgotCi08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0
aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVz
c3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci0KLTxzY3JpcHQ+Ci0ndXNlIHN0cmljdCc7Ci1mZXRjaF90
ZXN0c19mcm9tX3dvcmtlcihuZXcgV29ya2VyKCdtdWx0aXBsZS1wcm9wYWdhdGlvbi5qcycpKTsK
LTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9tdWx0aXBsZS1wcm9wYWdhdGlvbi5odG1sIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9t
dWx0aXBsZS1wcm9wYWdhdGlvbi5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5
MmUzZmYwNGM3NGQxYmE1ODUwOTFkYjI4Y2Y5ZDcxMTczYmI3ZmY4Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvbXVsdGlwbGUtcHJvcGFnYXRpb24uaHRt
bAorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEg
Y2hhcnNldD0idXRmLTgiPgotPHRpdGxlPm11bHRpcGxlLXByb3BhZ2F0aW9uLmpzIGJyb3dzZXIg
Y29udGV4dCB3cmFwcGVyIGZpbGU8L3RpdGxlPgotCi08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90
ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFy
bmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci0KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVz
dC11dGlscy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3JlY29yZGlu
Zy1zdHJlYW1zLmpzIj48L3NjcmlwdD4KLQotPHNjcmlwdCBzcmM9Im11bHRpcGxlLXByb3BhZ2F0
aW9uLmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvbXVsdGlwbGUtcHJvcGFnYXRpb24uanMg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlw
aW5nL211bHRpcGxlLXByb3BhZ2F0aW9uLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA0ZWRjN2MxODBlMTE3Nzc5YzdkZWQxZjkwZWVlZDIzNmVmODJjMGFlLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvbXVsdGlwbGUtcHJvcGFnYXRpb24u
anMKKysrIC9kZXYvbnVsbApAQCAtMSwxNjUgKzAsMCBAQAotJ3VzZSBzdHJpY3QnOwotCi1pZiAo
c2VsZi5pbXBvcnRTY3JpcHRzKSB7Ci0gIHNlbGYuaW1wb3J0U2NyaXB0cygnL3Jlc291cmNlcy90
ZXN0aGFybmVzcy5qcycpOwotICBzZWxmLmltcG9ydFNjcmlwdHMoJy4uL3Jlc291cmNlcy90ZXN0
LXV0aWxzLmpzJyk7Ci0gIHNlbGYuaW1wb3J0U2NyaXB0cygnLi4vcmVzb3VyY2VzL3JlY29yZGlu
Zy1zdHJlYW1zLmpzJyk7Ci19Ci0KLWNvbnN0IGVycm9yMSA9IG5ldyBFcnJvcignZXJyb3IxIScp
OwotZXJyb3IxLm5hbWUgPSAnZXJyb3IxJzsKLQotY29uc3QgZXJyb3IyID0gbmV3IEVycm9yKCdl
cnJvcjIhJyk7Ci1lcnJvcjIubmFtZSA9ICdlcnJvcjInOwotCi1wcm9taXNlX3Rlc3QodCA9PiB7
Ci0gIGNvbnN0IHJzID0gcmVjb3JkaW5nUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsK
LSAgICAgIGMuZXJyb3IoZXJyb3IxKTsKLSAgICB9Ci0gIH0pOwotICBjb25zdCB3cyA9IHJlY29y
ZGluZ1dyaXRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0gICAgICBjLmVycm9yKGVycm9y
Mik7Ci0gICAgfQotICB9KTsKLQotICAvLyBUcnlpbmcgdG8gYWJvcnQgYSBzdHJlYW0gdGhhdCB3
YXMgZXJyb3JlZCB3aWxsIGdpdmUgdGhhdCBlcnJvciBiYWNrCi0gIHJldHVybiBwcm9taXNlX3Jl
amVjdHModCwgZXJyb3IyLCBycy5waXBlVG8od3MpLCAncGlwZVRvIG11c3QgcmVqZWN0IHdpdGgg
dGhlIHdyaXRhYmxlIHN0cmVhbVwncyBlcnJvcicpLnRoZW4oKCkgPT4gewotICAgIGFzc2VydF9h
cnJheV9lcXVhbHMocnMuZXZlbnRzLCBbXSk7Ci0gICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5l
dmVudHMsIFtdKTsKLQotICAgIHJldHVybiBQcm9taXNlLmFsbChbCi0gICAgICBwcm9taXNlX3Jl
amVjdHModCwgZXJyb3IxLCBycy5nZXRSZWFkZXIoKS5jbG9zZWQsICd0aGUgcmVhZGFibGUgc3Ry
ZWFtIG11c3QgYmUgZXJyb3JlZCB3aXRoIGVycm9yMScpLAotICAgICAgcHJvbWlzZV9yZWplY3Rz
KHQsIGVycm9yMiwgd3MuZ2V0V3JpdGVyKCkuY2xvc2VkLCAndGhlIHdyaXRhYmxlIHN0cmVhbSBt
dXN0IGJlIGVycm9yZWQgd2l0aCBlcnJvcjInKQotICAgIF0pOwotICB9KTsKLQotfSwgJ1BpcGlu
ZyBmcm9tIGFuIGVycm9yZWQgcmVhZGFibGUgc3RyZWFtIHRvIGFuIGVycm9yZWQgd3JpdGFibGUg
c3RyZWFtJyk7Ci0KLXByb21pc2VfdGVzdCh0ID0+IHsKLSAgY29uc3QgcnMgPSByZWNvcmRpbmdS
ZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgYy5lcnJvcihlcnJvcjEpOwot
ICAgIH0KLSAgfSk7Ci0gIGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0oewotICAg
IHN0YXJ0KGMpIHsKLSAgICAgIGMuZXJyb3IoZXJyb3IyKTsKLSAgICB9Ci0gIH0pOwotCi0gIHJl
dHVybiBwcm9taXNlX3JlamVjdHModCwgZXJyb3IxLCBycy5waXBlVG8od3MsIHsgcHJldmVudEFi
b3J0OiB0cnVlIH0pLAotICAgICdwaXBlVG8gbXVzdCByZWplY3Qgd2l0aCB0aGUgcmVhZGFibGUg
c3RyZWFtXCdzIGVycm9yJykKLSAgLnRoZW4oKCkgPT4gewotICAgIGFzc2VydF9hcnJheV9lcXVh
bHMocnMuZXZlbnRzLCBbXSk7Ci0gICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFtd
KTsKLQotICAgIHJldHVybiBQcm9taXNlLmFsbChbCi0gICAgICBwcm9taXNlX3JlamVjdHModCwg
ZXJyb3IxLCBycy5nZXRSZWFkZXIoKS5jbG9zZWQsICd0aGUgcmVhZGFibGUgc3RyZWFtIG11c3Qg
YmUgZXJyb3JlZCB3aXRoIGVycm9yMScpLAotICAgICAgcHJvbWlzZV9yZWplY3RzKHQsIGVycm9y
Miwgd3MuZ2V0V3JpdGVyKCkuY2xvc2VkLCAndGhlIHdyaXRhYmxlIHN0cmVhbSBtdXN0IGJlIGVy
cm9yZWQgd2l0aCBlcnJvcjInKQotICAgIF0pOwotICB9KTsKLQotfSwgJ1BpcGluZyBmcm9tIGFu
IGVycm9yZWQgcmVhZGFibGUgc3RyZWFtIHRvIGFuIGVycm9yZWQgd3JpdGFibGUgc3RyZWFtOyBw
cmV2ZW50QWJvcnQgPSB0cnVlJyk7Ci0KLXByb21pc2VfdGVzdCh0ID0+IHsKLSAgY29uc3QgcnMg
PSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgYy5lcnJv
cihlcnJvcjEpOwotICAgIH0KLSAgfSk7Ci0gIGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVT
dHJlYW0oKTsKLSAgY29uc3Qgd3JpdGVyID0gd3MuZ2V0V3JpdGVyKCk7Ci0gIGNvbnN0IGNsb3Nl
UHJvbWlzZSA9IHdyaXRlci5jbG9zZSgpOwotICB3cml0ZXIucmVsZWFzZUxvY2soKTsKLQotICBy
ZXR1cm4gcHJvbWlzZV9yZWplY3RzKHQsIGVycm9yMSwgcnMucGlwZVRvKHdzKSwgJ3BpcGVUbyBt
dXN0IHJlamVjdCB3aXRoIHRoZSByZWFkYWJsZSBzdHJlYW1cJ3MgZXJyb3InKS50aGVuKCgpID0+
IHsKLSAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJzLmV2ZW50cywgW10pOwotICAgIGFzc2VydF9h
cnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ2Fib3J0JywgZXJyb3IxXSk7Ci0KLSAgICByZXR1cm4g
UHJvbWlzZS5hbGwoWwotICAgICAgcHJvbWlzZV9yZWplY3RzKHQsIGVycm9yMSwgcnMuZ2V0UmVh
ZGVyKCkuY2xvc2VkLCAndGhlIHJlYWRhYmxlIHN0cmVhbSBtdXN0IGJlIGVycm9yZWQgd2l0aCBl
cnJvcjEnKSwKLSAgICAgIHByb21pc2VfcmVqZWN0cyh0LCBlcnJvcjEsIHdzLmdldFdyaXRlcigp
LmNsb3NlZCwKLSAgICAgICAgJ2Nsb3NlZCBtdXN0IHJlamVjdCB3aXRoIGVycm9yMScpLAotICAg
ICAgcHJvbWlzZV9yZWplY3RzKHQsIGVycm9yMSwgY2xvc2VQcm9taXNlLAotICAgICAgICAnY2xv
c2UoKSBtdXN0IHJlamVjdCB3aXRoIGVycm9yMScpCi0gICAgXSk7Ci0gIH0pOwotCi19LCAnUGlw
aW5nIGZyb20gYW4gZXJyb3JlZCByZWFkYWJsZSBzdHJlYW0gdG8gYSBjbG9zaW5nIHdyaXRhYmxl
IHN0cmVhbScpOwotCi1wcm9taXNlX3Rlc3QodCA9PiB7Ci0gIGNvbnN0IHJzID0gcmVjb3JkaW5n
UmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGMuZXJyb3IoZXJyb3IxKTsK
LSAgICB9Ci0gIH0pOwotICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKCk7Ci0g
IGNvbnN0IHdyaXRlciA9IHdzLmdldFdyaXRlcigpOwotICBjb25zdCBjbG9zZVByb21pc2UgPSB3
cml0ZXIuY2xvc2UoKTsKLSAgd3JpdGVyLnJlbGVhc2VMb2NrKCk7Ci0KLSAgcmV0dXJuIGZsdXNo
QXN5bmNFdmVudHMoKS50aGVuKCgpID0+IHsKLSAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHQs
IGVycm9yMSwgcnMucGlwZVRvKHdzKSwgJ3BpcGVUbyBtdXN0IHJlamVjdCB3aXRoIHRoZSByZWFk
YWJsZSBzdHJlYW1cJ3MgZXJyb3InKS50aGVuKCgpID0+IHsKLSAgICAgIGFzc2VydF9hcnJheV9l
cXVhbHMocnMuZXZlbnRzLCBbXSk7Ci0gICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50
cywgWydjbG9zZSddKTsKLQotICAgICAgcmV0dXJuIFByb21pc2UuYWxsKFsKLSAgICAgICAgcHJv
bWlzZV9yZWplY3RzKHQsIGVycm9yMSwgcnMuZ2V0UmVhZGVyKCkuY2xvc2VkLCAndGhlIHJlYWRh
YmxlIHN0cmVhbSBtdXN0IGJlIGVycm9yZWQgd2l0aCBlcnJvcjEnKSwKLSAgICAgICAgd3MuZ2V0
V3JpdGVyKCkuY2xvc2VkLAotICAgICAgICBjbG9zZVByb21pc2UKLSAgICAgIF0pOwotICAgIH0p
OwotICB9KTsKLQotfSwgJ1BpcGluZyBmcm9tIGFuIGVycm9yZWQgcmVhZGFibGUgc3RyZWFtIHRv
IGEgY2xvc2VkIHdyaXRhYmxlIHN0cmVhbScpOwotCi1wcm9taXNlX3Rlc3QodCA9PiB7Ci0gIGNv
bnN0IHJzID0gcmVjb3JkaW5nUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAg
IGMuY2xvc2UoKTsKLSAgICB9Ci0gIH0pOwotICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxl
U3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0gICAgICBjLmVycm9yKGVycm9yMSk7Ci0gICAgfQot
ICB9KTsKLQotICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHQsIGVycm9yMSwgcnMucGlwZVRvKHdz
KSwgJ3BpcGVUbyBtdXN0IHJlamVjdCB3aXRoIHRoZSB3cml0YWJsZSBzdHJlYW1cJ3MgZXJyb3In
KS50aGVuKCgpID0+IHsKLSAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJzLmV2ZW50cywgW10pOwot
ICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbXSk7Ci0KLSAgICByZXR1cm4gUHJv
bWlzZS5hbGwoWwotICAgICAgcnMuZ2V0UmVhZGVyKCkuY2xvc2VkLAotICAgICAgcHJvbWlzZV9y
ZWplY3RzKHQsIGVycm9yMSwgd3MuZ2V0V3JpdGVyKCkuY2xvc2VkLCAndGhlIHdyaXRhYmxlIHN0
cmVhbSBtdXN0IGJlIGVycm9yZWQgd2l0aCBlcnJvcjEnKQotICAgIF0pOwotICB9KTsKLQotfSwg
J1BpcGluZyBmcm9tIGEgY2xvc2VkIHJlYWRhYmxlIHN0cmVhbSB0byBhbiBlcnJvcmVkIHdyaXRh
YmxlIHN0cmVhbScpOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotICBjb25zdCBycyA9IHJlY29y
ZGluZ1JlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0gICAgICBjLmNsb3NlKCk7Ci0g
ICAgfQotICB9KTsKLSAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSgpOwotICBj
b25zdCB3cml0ZXIgPSB3cy5nZXRXcml0ZXIoKTsKLSAgd3JpdGVyLmNsb3NlKCk7Ci0gIHdyaXRl
ci5yZWxlYXNlTG9jaygpOwotCi0gIHJldHVybiBycy5waXBlVG8od3MpLnRoZW4oKCkgPT4gewot
ICAgIGFzc2VydF9hcnJheV9lcXVhbHMocnMuZXZlbnRzLCBbXSk7Ci0gICAgYXNzZXJ0X2FycmF5
X2VxdWFscyh3cy5ldmVudHMsIFsnY2xvc2UnXSk7Ci0KLSAgICByZXR1cm4gUHJvbWlzZS5hbGwo
WwotICAgICAgcnMuZ2V0UmVhZGVyKCkuY2xvc2VkLAotICAgICAgd3MuZ2V0V3JpdGVyKCkuY2xv
c2VkCi0gICAgXSk7Ci0gIH0pOwotCi19LCAnUGlwaW5nIGZyb20gYSBjbG9zZWQgcmVhZGFibGUg
c3RyZWFtIHRvIGEgY2xvc2VkIHdyaXRhYmxlIHN0cmVhbScpOwotCi1kb25lKCk7CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
cGlwaW5nL211bHRpcGxlLXByb3BhZ2F0aW9uLnNlcnZpY2V3b3JrZXIuaHR0cHMtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
L3BpcGluZy9tdWx0aXBsZS1wcm9wYWdhdGlvbi5zZXJ2aWNld29ya2VyLmh0dHBzLWV4cGVjdGVk
LnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzEwNTAzZWZiNjczNDRlZTVkZTQ1
NTBkNmNmOTA1N2Y3NDUzMTVhYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMvcGlwaW5nL211bHRpcGxlLXByb3BhZ2F0aW9uLnNlcnZpY2V3b3JrZXIuaHR0cHMtZXhw
ZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsOSArMCwwIEBACi0KLVBBU1MgU2VydmljZSB3
b3JrZXIgdGVzdCBzZXR1cCAKLUZBSUwgUGlwaW5nIGZyb20gYW4gZXJyb3JlZCByZWFkYWJsZSBz
dHJlYW0gdG8gYW4gZXJyb3JlZCB3cml0YWJsZSBzdHJlYW0gQ2FuJ3QgZmluZCB2YXJpYWJsZTog
V3JpdGFibGVTdHJlYW0KLUZBSUwgUGlwaW5nIGZyb20gYW4gZXJyb3JlZCByZWFkYWJsZSBzdHJl
YW0gdG8gYW4gZXJyb3JlZCB3cml0YWJsZSBzdHJlYW07IHByZXZlbnRBYm9ydCA9IHRydWUgQ2Fu
J3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgUGlwaW5nIGZyb20gYW4gZXJy
b3JlZCByZWFkYWJsZSBzdHJlYW0gdG8gYSBjbG9zaW5nIHdyaXRhYmxlIHN0cmVhbSBDYW4ndCBm
aW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBQaXBpbmcgZnJvbSBhbiBlcnJvcmVk
IHJlYWRhYmxlIHN0cmVhbSB0byBhIGNsb3NlZCB3cml0YWJsZSBzdHJlYW0gQ2FuJ3QgZmluZCB2
YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgUGlwaW5nIGZyb20gYSBjbG9zZWQgcmVhZGFi
bGUgc3RyZWFtIHRvIGFuIGVycm9yZWQgd3JpdGFibGUgc3RyZWFtIENhbid0IGZpbmQgdmFyaWFi
bGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIFBpcGluZyBmcm9tIGEgY2xvc2VkIHJlYWRhYmxlIHN0
cmVhbSB0byBhIGNsb3NlZCB3cml0YWJsZSBzdHJlYW0gQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3Jp
dGFibGVTdHJlYW0KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9tdWx0aXBsZS1wcm9wYWdhdGlvbi5zZXJ2aWNl
d29ya2VyLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMvcGlwaW5nL211bHRpcGxlLXByb3BhZ2F0aW9uLnNlcnZpY2V3b3JrZXIu
aHR0cHMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjNmN2IwMGI0MGZiZDg3
N2NlZDdhMTY0YmJiYzEzZmQxNDU3MjJjNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3N0cmVhbXMvcGlwaW5nL211bHRpcGxlLXByb3BhZ2F0aW9uLnNlcnZpY2V3b3JrZXIuaHR0
cHMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgot
PG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHRpdGxlPm11bHRpcGxlLXByb3BhZ2F0aW9uLmpzIHNl
cnZpY2Ugd29ya2VyIHdyYXBwZXIgZmlsZTwvdGl0bGU+Ci0KLTxzY3JpcHQgc3JjPSIvcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rl
c3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvc2VydmljZS13b3Jr
ZXJzL3NlcnZpY2Utd29ya2VyL3Jlc291cmNlcy90ZXN0LWhlbHBlcnMuc3ViLmpzIj48L3Njcmlw
dD4KLQotPHNjcmlwdD4KLSd1c2Ugc3RyaWN0JzsKLXNlcnZpY2Vfd29ya2VyX3Rlc3QoJ211bHRp
cGxlLXByb3BhZ2F0aW9uLmpzJywgJ1NlcnZpY2Ugd29ya2VyIHRlc3Qgc2V0dXAnKTsKLTwvc2Ny
aXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL3BpcGluZy9tdWx0aXBsZS1wcm9wYWdhdGlvbi5zaGFyZWR3b3JrZXItZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
dHJlYW1zL3BpcGluZy9tdWx0aXBsZS1wcm9wYWdhdGlvbi5zaGFyZWR3b3JrZXItZXhwZWN0ZWQu
dHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwOWQ1ZDI1MDlkNzg0N2U4Y2Q2ZmU2
NjA2YWE2MGNkZDMzYWE0NzRlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy9waXBpbmcvbXVsdGlwbGUtcHJvcGFnYXRpb24uc2hhcmVkd29ya2VyLWV4cGVjdGVkLnR4
dAorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotQ09OU09MRSBNRVNTQUdFOiBSZWZlcmVu
Y2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogU2hhcmVkV29ya2VyCi0KLUhhcm5lc3MgRXJy
b3IgKEZBSUwpLCBtZXNzYWdlID0gUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6
IFNoYXJlZFdvcmtlcgotCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvbXVsdGlwbGUtcHJvcGFnYXRpb24uc2hh
cmVkd29ya2VyLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3N0cmVhbXMvcGlwaW5nL211bHRpcGxlLXByb3BhZ2F0aW9uLnNoYXJlZHdvcmtlci5odG1s
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2Mzk2YzY0NWNkNTQyNjUyZjVmODM4ODVj
Mjg4MTdmMjFlZTFkZmRlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy9waXBpbmcvbXVsdGlwbGUtcHJvcGFnYXRpb24uc2hhcmVkd29ya2VyLmh0bWwKKysrIC9kZXYv
bnVsbApAQCAtMSwxMSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9InV0
Zi04Ij4KLTx0aXRsZT5tdWx0aXBsZS1wcm9wYWdhdGlvbi5qcyBzaGFyZWQgd29ya2VyIHdyYXBw
ZXIgZmlsZTwvdGl0bGU+Ci0KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpz
Ij48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0Lmpz
Ij48L3NjcmlwdD4KLQotPHNjcmlwdD4KLSd1c2Ugc3RyaWN0JzsKLWZldGNoX3Rlc3RzX2Zyb21f
d29ya2VyKG5ldyBTaGFyZWRXb3JrZXIoJ211bHRpcGxlLXByb3BhZ2F0aW9uLmpzJykpOwotPC9z
Y3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMvcGlwaW5nL3BpcGUtdGhyb3VnaC5hbnktZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9w
aXBlLXRocm91Z2guYW55LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yOWIzNGMxZjZlODcwMTA4
ZDU0OGQ3MjgxZmZjZTI1NDJkY2QxZWZjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9waXBlLXRocm91
Z2guYW55LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDk0IEBACitDT05TT0xFIE1FU1NBR0U6IFVu
aGFuZGxlZCBQcm9taXNlIFJlamVjdGlvbjogVHlwZUVycm9yOiBUaGUgV3JpdGFibGVTdHJlYW0u
cmVhZHkgZ2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mIFdyaXRhYmxlU3Ry
ZWFtCitDT05TT0xFIE1FU1NBR0U6IFVuaGFuZGxlZCBQcm9taXNlIFJlamVjdGlvbjogdW5kZWZp
bmVkCisKK0hhcm5lc3MgRXJyb3IgKEZBSUwpLCBtZXNzYWdlID0gVW5oYW5kbGVkIHJlamVjdGlv
bgorCitQQVNTIFBpcGluZyB0aHJvdWdoIGEgZHVjay10eXBlZCBwYXNzLXRocm91Z2ggdHJhbnNm
b3JtIHN0cmVhbSBzaG91bGQgd29yayAKK0ZBSUwgUGlwaW5nIHRocm91Z2ggYSB0cmFuc2Zvcm0g
ZXJyb3JlZCBvbiB0aGUgd3JpdGFibGUgZW5kIGRvZXMgbm90IGNhdXNlIGFuIHVuaGFuZGxlZCBw
cm9taXNlIHJlamVjdGlvbiBjLmVycm9yIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ2MuZXJyb3Io
bmV3IEVycm9yKCd0aGlzIHJlamVjdGlvbiBzaG91bGQgbm90IGJlIHJlcG9ydGVkIGFzIHVuaGFu
ZGxlZCcpKScsICdjLmVycm9yJyBpcyB1bmRlZmluZWQpCitQQVNTIHBpcGVUaHJvdWdoIHNob3Vs
ZCBub3QgY2FsbCBwaXBlVG8gb24gdGhpcyAKK0ZBSUwgcGlwZVRocm91Z2ggc2hvdWxkIG5vdCBj
YWxsIHBpcGVUbyBvbiB0aGUgUmVhZGFibGVTdHJlYW0gcHJvdG90eXBlIGFzc2VydF9mYWxzZTog
dGhlIG1vbmtleS1wYXRjaGVkIHBpcGVUbyBzaG91bGQgbm90IGhhdmUgYmVlbiBjYWxsZWQgZXhw
ZWN0ZWQgZmFsc2UgZ290IHRydWUKK1BBU1MgcGlwZVRocm91Z2ggc2hvdWxkIGJyYW5kLWNoZWNr
IHRoaXMgYW5kIG5vdCBhbGxvdyAnbnVsbCcgCitGQUlMIHBpcGVUaHJvdWdoIHNob3VsZCBicmFu
ZC1jaGVjayByZWFkYWJsZSBhbmQgbm90IGFsbG93ICdudWxsJyBhc3NlcnRfdGhyb3dzX2pzOiBw
aXBlVGhyb3VnaCBzaG91bGQgYnJhbmQtY2hlY2sgcmVhZGFibGUgZnVuY3Rpb24gIigpID0+IHJz
LnBpcGVUaHJvdWdoKHsKKyAgICAgICAgZ2V0IHdyaXRhYmxlKCkgeworICAgICAgICAgIHdyaXRh
YmxlR2V0dGVyQ2FsbGVkID0gdHJ1ZTsKKyAgICAgICAgICByZXR1cm4gbmV3IFdyaXRhYmxlU3Ry
ZWFtKCk7CisgICAgICAgIH0sCisgICAgICAgIHJlYWRhYmxlCisgICAgICB9KSIgZGlkIG5vdCB0
aHJvdworUEFTUyBwaXBlVGhyb3VnaCBzaG91bGQgYnJhbmQtY2hlY2sgdGhpcyBhbmQgbm90IGFs
bG93ICd1bmRlZmluZWQnIAorRkFJTCBwaXBlVGhyb3VnaCBzaG91bGQgYnJhbmQtY2hlY2sgcmVh
ZGFibGUgYW5kIG5vdCBhbGxvdyAndW5kZWZpbmVkJyBhc3NlcnRfdGhyb3dzX2pzOiBwaXBlVGhy
b3VnaCBzaG91bGQgYnJhbmQtY2hlY2sgcmVhZGFibGUgZnVuY3Rpb24gIigpID0+IHJzLnBpcGVU
aHJvdWdoKHsKKyAgICAgICAgZ2V0IHdyaXRhYmxlKCkgeworICAgICAgICAgIHdyaXRhYmxlR2V0
dGVyQ2FsbGVkID0gdHJ1ZTsKKyAgICAgICAgICByZXR1cm4gbmV3IFdyaXRhYmxlU3RyZWFtKCk7
CisgICAgICAgIH0sCisgICAgICAgIHJlYWRhYmxlCisgICAgICB9KSIgZGlkIG5vdCB0aHJvdwor
UEFTUyBwaXBlVGhyb3VnaCBzaG91bGQgYnJhbmQtY2hlY2sgdGhpcyBhbmQgbm90IGFsbG93ICcw
JyAKK0ZBSUwgcGlwZVRocm91Z2ggc2hvdWxkIGJyYW5kLWNoZWNrIHJlYWRhYmxlIGFuZCBub3Qg
YWxsb3cgJzAnIGFzc2VydF90aHJvd3NfanM6IHBpcGVUaHJvdWdoIHNob3VsZCBicmFuZC1jaGVj
ayByZWFkYWJsZSBmdW5jdGlvbiAiKCkgPT4gcnMucGlwZVRocm91Z2goeworICAgICAgICBnZXQg
d3JpdGFibGUoKSB7CisgICAgICAgICAgd3JpdGFibGVHZXR0ZXJDYWxsZWQgPSB0cnVlOworICAg
ICAgICAgIHJldHVybiBuZXcgV3JpdGFibGVTdHJlYW0oKTsKKyAgICAgICAgfSwKKyAgICAgICAg
cmVhZGFibGUKKyAgICAgIH0pIiBkaWQgbm90IHRocm93CitQQVNTIHBpcGVUaHJvdWdoIHNob3Vs
ZCBicmFuZC1jaGVjayB0aGlzIGFuZCBub3QgYWxsb3cgJ05hTicgCitGQUlMIHBpcGVUaHJvdWdo
IHNob3VsZCBicmFuZC1jaGVjayByZWFkYWJsZSBhbmQgbm90IGFsbG93ICdOYU4nIGFzc2VydF90
aHJvd3NfanM6IHBpcGVUaHJvdWdoIHNob3VsZCBicmFuZC1jaGVjayByZWFkYWJsZSBmdW5jdGlv
biAiKCkgPT4gcnMucGlwZVRocm91Z2goeworICAgICAgICBnZXQgd3JpdGFibGUoKSB7CisgICAg
ICAgICAgd3JpdGFibGVHZXR0ZXJDYWxsZWQgPSB0cnVlOworICAgICAgICAgIHJldHVybiBuZXcg
V3JpdGFibGVTdHJlYW0oKTsKKyAgICAgICAgfSwKKyAgICAgICAgcmVhZGFibGUKKyAgICAgIH0p
IiBkaWQgbm90IHRocm93CitQQVNTIHBpcGVUaHJvdWdoIHNob3VsZCBicmFuZC1jaGVjayB0aGlz
IGFuZCBub3QgYWxsb3cgJ3RydWUnIAorRkFJTCBwaXBlVGhyb3VnaCBzaG91bGQgYnJhbmQtY2hl
Y2sgcmVhZGFibGUgYW5kIG5vdCBhbGxvdyAndHJ1ZScgYXNzZXJ0X3Rocm93c19qczogcGlwZVRo
cm91Z2ggc2hvdWxkIGJyYW5kLWNoZWNrIHJlYWRhYmxlIGZ1bmN0aW9uICIoKSA9PiBycy5waXBl
VGhyb3VnaCh7CisgICAgICAgIGdldCB3cml0YWJsZSgpIHsKKyAgICAgICAgICB3cml0YWJsZUdl
dHRlckNhbGxlZCA9IHRydWU7CisgICAgICAgICAgcmV0dXJuIG5ldyBXcml0YWJsZVN0cmVhbSgp
OworICAgICAgICB9LAorICAgICAgICByZWFkYWJsZQorICAgICAgfSkiIGRpZCBub3QgdGhyb3cK
K1BBU1MgcGlwZVRocm91Z2ggc2hvdWxkIGJyYW5kLWNoZWNrIHRoaXMgYW5kIG5vdCBhbGxvdyAn
UmVhZGFibGVTdHJlYW0nIAorRkFJTCBwaXBlVGhyb3VnaCBzaG91bGQgYnJhbmQtY2hlY2sgcmVh
ZGFibGUgYW5kIG5vdCBhbGxvdyAnUmVhZGFibGVTdHJlYW0nIGFzc2VydF90aHJvd3NfanM6IHBp
cGVUaHJvdWdoIHNob3VsZCBicmFuZC1jaGVjayByZWFkYWJsZSBmdW5jdGlvbiAiKCkgPT4gcnMu
cGlwZVRocm91Z2goeworICAgICAgICBnZXQgd3JpdGFibGUoKSB7CisgICAgICAgICAgd3JpdGFi
bGVHZXR0ZXJDYWxsZWQgPSB0cnVlOworICAgICAgICAgIHJldHVybiBuZXcgV3JpdGFibGVTdHJl
YW0oKTsKKyAgICAgICAgfSwKKyAgICAgICAgcmVhZGFibGUKKyAgICAgIH0pIiBkaWQgbm90IHRo
cm93CitQQVNTIHBpcGVUaHJvdWdoIHNob3VsZCBicmFuZC1jaGVjayB0aGlzIGFuZCBub3QgYWxs
b3cgJ1tvYmplY3QgUmVhZGFibGVTdHJlYW1dJyAKK0ZBSUwgcGlwZVRocm91Z2ggc2hvdWxkIGJy
YW5kLWNoZWNrIHJlYWRhYmxlIGFuZCBub3QgYWxsb3cgJ1tvYmplY3QgUmVhZGFibGVTdHJlYW1d
JyBhc3NlcnRfdGhyb3dzX2pzOiBwaXBlVGhyb3VnaCBzaG91bGQgYnJhbmQtY2hlY2sgcmVhZGFi
bGUgZnVuY3Rpb24gIigpID0+IHJzLnBpcGVUaHJvdWdoKHsKKyAgICAgICAgZ2V0IHdyaXRhYmxl
KCkgeworICAgICAgICAgIHdyaXRhYmxlR2V0dGVyQ2FsbGVkID0gdHJ1ZTsKKyAgICAgICAgICBy
ZXR1cm4gbmV3IFdyaXRhYmxlU3RyZWFtKCk7CisgICAgICAgIH0sCisgICAgICAgIHJlYWRhYmxl
CisgICAgICB9KSIgZGlkIG5vdCB0aHJvdworUEFTUyBwaXBlVGhyb3VnaCBzaG91bGQgYnJhbmQt
Y2hlY2sgd3JpdGFibGUgYW5kIG5vdCBhbGxvdyAnbnVsbCcgCitQQVNTIHBpcGVUaHJvdWdoIHNo
b3VsZCBicmFuZC1jaGVjayB3cml0YWJsZSBhbmQgbm90IGFsbG93ICd1bmRlZmluZWQnIAorUEFT
UyBwaXBlVGhyb3VnaCBzaG91bGQgYnJhbmQtY2hlY2sgd3JpdGFibGUgYW5kIG5vdCBhbGxvdyAn
MCcgCitQQVNTIHBpcGVUaHJvdWdoIHNob3VsZCBicmFuZC1jaGVjayB3cml0YWJsZSBhbmQgbm90
IGFsbG93ICdOYU4nIAorUEFTUyBwaXBlVGhyb3VnaCBzaG91bGQgYnJhbmQtY2hlY2sgd3JpdGFi
bGUgYW5kIG5vdCBhbGxvdyAndHJ1ZScgCitQQVNTIHBpcGVUaHJvdWdoIHNob3VsZCBicmFuZC1j
aGVjayB3cml0YWJsZSBhbmQgbm90IGFsbG93ICdXcml0YWJsZVN0cmVhbScgCitGQUlMIHBpcGVU
aHJvdWdoIHNob3VsZCBicmFuZC1jaGVjayB3cml0YWJsZSBhbmQgbm90IGFsbG93ICdbb2JqZWN0
IFdyaXRhYmxlU3RyZWFtXScgYXNzZXJ0X3Rocm93c19qczogcGlwZVRocm91Z2ggc2hvdWxkIGJy
YW5kLWNoZWNrIHdyaXRhYmxlIGZ1bmN0aW9uICIoKSA9PiBycy5waXBlVGhyb3VnaCh7CisgICAg
ICBnZXQgcmVhZGFibGUoKSB7CisgICAgICAgIHJlYWRhYmxlR2V0dGVyQ2FsbGVkID0gdHJ1ZTsK
KyAgICAgICAgcmV0dXJuIG5ldyBSZWFkYWJsZVN0cmVhbSgpOworICAgICAgfSwKKyAgICAgIHdy
aXRhYmxlCisgICAgfSkiIGRpZCBub3QgdGhyb3cKK1BBU1MgcGlwZVRocm91Z2ggc2hvdWxkIHJl
dGhyb3cgZXJyb3JzIGZyb20gYWNjZXNzaW5nIHJlYWRhYmxlIG9yIHdyaXRhYmxlIAorRkFJTCBp
bnZhbGlkIHZhbHVlcyBvZiBzaWduYWwgc2hvdWxkIHRocm93OyBzcGVjaWZpY2FsbHkgJ251bGwn
IGFzc2VydF90aHJvd3NfanM6IHBpcGVUaHJvdWdoIHNob3VsZCB0aHJvdyBmdW5jdGlvbiAiKCkg
PT4gcnMucGlwZVRocm91Z2godW5pbnRlcmVzdGluZ1JlYWRhYmxlV3JpdGFibGVQYWlyKCksIHsg
c2lnbmFsIH0pIiBkaWQgbm90IHRocm93CitGQUlMIGludmFsaWQgdmFsdWVzIG9mIHNpZ25hbCBz
aG91bGQgdGhyb3c7IHNwZWNpZmljYWxseSAnMCcgYXNzZXJ0X3Rocm93c19qczogcGlwZVRocm91
Z2ggc2hvdWxkIHRocm93IGZ1bmN0aW9uICIoKSA9PiBycy5waXBlVGhyb3VnaCh1bmludGVyZXN0
aW5nUmVhZGFibGVXcml0YWJsZVBhaXIoKSwgeyBzaWduYWwgfSkiIGRpZCBub3QgdGhyb3cKK0ZB
SUwgaW52YWxpZCB2YWx1ZXMgb2Ygc2lnbmFsIHNob3VsZCB0aHJvdzsgc3BlY2lmaWNhbGx5ICdO
YU4nIGFzc2VydF90aHJvd3NfanM6IHBpcGVUaHJvdWdoIHNob3VsZCB0aHJvdyBmdW5jdGlvbiAi
KCkgPT4gcnMucGlwZVRocm91Z2godW5pbnRlcmVzdGluZ1JlYWRhYmxlV3JpdGFibGVQYWlyKCks
IHsgc2lnbmFsIH0pIiBkaWQgbm90IHRocm93CitGQUlMIGludmFsaWQgdmFsdWVzIG9mIHNpZ25h
bCBzaG91bGQgdGhyb3c7IHNwZWNpZmljYWxseSAndHJ1ZScgYXNzZXJ0X3Rocm93c19qczogcGlw
ZVRocm91Z2ggc2hvdWxkIHRocm93IGZ1bmN0aW9uICIoKSA9PiBycy5waXBlVGhyb3VnaCh1bmlu
dGVyZXN0aW5nUmVhZGFibGVXcml0YWJsZVBhaXIoKSwgeyBzaWduYWwgfSkiIGRpZCBub3QgdGhy
b3cKK0ZBSUwgaW52YWxpZCB2YWx1ZXMgb2Ygc2lnbmFsIHNob3VsZCB0aHJvdzsgc3BlY2lmaWNh
bGx5ICdBYm9ydFNpZ25hbCcgYXNzZXJ0X3Rocm93c19qczogcGlwZVRocm91Z2ggc2hvdWxkIHRo
cm93IGZ1bmN0aW9uICIoKSA9PiBycy5waXBlVGhyb3VnaCh1bmludGVyZXN0aW5nUmVhZGFibGVX
cml0YWJsZVBhaXIoKSwgeyBzaWduYWwgfSkiIGRpZCBub3QgdGhyb3cKK0ZBSUwgaW52YWxpZCB2
YWx1ZXMgb2Ygc2lnbmFsIHNob3VsZCB0aHJvdzsgc3BlY2lmaWNhbGx5ICdbb2JqZWN0IEFib3J0
U2lnbmFsXScgYXNzZXJ0X3Rocm93c19qczogcGlwZVRocm91Z2ggc2hvdWxkIHRocm93IGZ1bmN0
aW9uICIoKSA9PiBycy5waXBlVGhyb3VnaCh1bmludGVyZXN0aW5nUmVhZGFibGVXcml0YWJsZVBh
aXIoKSwgeyBzaWduYWwgfSkiIGRpZCBub3QgdGhyb3cKK1BBU1MgcGlwZVRocm91Z2ggc2hvdWxk
IGFjY2VwdCBhIHJlYWwgQWJvcnRTaWduYWwgCitQQVNTIHBpcGVUaHJvdWdoIHNob3VsZCB0aHJv
dyBpZiB0aGlzIGlzIGxvY2tlZCAKK0ZBSUwgcGlwZVRocm91Z2ggc2hvdWxkIHRocm93IGlmIHdy
aXRhYmxlIGlzIGxvY2tlZCB3cml0YWJsZS5nZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJ
biAnd3JpdGFibGUuZ2V0V3JpdGVyKCknLCAnd3JpdGFibGUuZ2V0V3JpdGVyJyBpcyB1bmRlZmlu
ZWQpCitQQVNTIHBpcGVUaHJvdWdoIHNob3VsZCBub3QgY2FyZSBpZiByZWFkYWJsZSBpcyBsb2Nr
ZWQgCitGQUlMIHByZXZlbnRDYW5jZWwgc2hvdWxkIHdvcmsgY29udHJvbGxlci5lcnJvciBpcyBu
b3QgYSBmdW5jdGlvbi4gKEluICdjb250cm9sbGVyLmVycm9yKCknLCAnY29udHJvbGxlci5lcnJv
cicgaXMgdW5kZWZpbmVkKQorUEFTUyBwcmV2ZW50Q2xvc2Ugc2hvdWxkIHdvcmsgCitQQVNTIHBy
ZXZlbnRBYm9ydCBzaG91bGQgd29yayAKK1BBU1MgcGlwZVRocm91Z2goKSBzaG91bGQgdGhyb3cg
aWYgYW4gb3B0aW9uIGdldHRlciBncmFicyBhIHdyaXRlciAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9waXBl
LXRocm91Z2guYW55Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMvcGlwaW5nL3BpcGUtdGhyb3VnaC5hbnkuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4y
MzgyOTEzNTI4ZTY5M2IzYTVkNTZjNjYwYTQ1MDYwOTgwYjU0OGMzCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3Bp
cGluZy9waXBlLXRocm91Z2guYW55Lmh0bWwKQEAgLTAsMCArMSBAQAorPCEtLSBUaGlzIGZpbGUg
aXMgcmVxdWlyZWQgZm9yIFdlYktpdCB0ZXN0IGluZnJhc3RydWN0dXJlIHRvIHJ1biB0aGUgdGVt
cGxhdGVkIHRlc3QgLS0+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGlu
Zy9waXBlLXRocm91Z2guYW55LmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9waXBlLXRocm91Z2guYW55LmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjM1ZGJiNDU2YjNlMmM2ZDAyYTE4YTk1MDViYzIxMzhhNTc0NzQ4ODcKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
cGlwaW5nL3BpcGUtdGhyb3VnaC5hbnkuanMKQEAgLTAsMCArMSwyNjggQEAKKy8vIE1FVEE6IGds
b2JhbD13aW5kb3csd29ya2VyLGpzc2hlbGwKKy8vIE1FVEE6IHNjcmlwdD0uLi9yZXNvdXJjZXMv
cnMtdXRpbHMuanMKKy8vIE1FVEE6IHNjcmlwdD0uLi9yZXNvdXJjZXMvdGVzdC11dGlscy5qcwor
Ly8gTUVUQTogc2NyaXB0PS4uL3Jlc291cmNlcy9yZWNvcmRpbmctc3RyZWFtcy5qcworJ3VzZSBz
dHJpY3QnOworCitmdW5jdGlvbiBkdWNrVHlwZWRQYXNzVGhyb3VnaFRyYW5zZm9ybSgpIHsKKyAg
bGV0IGVucXVldWVJblJlYWRhYmxlOworICBsZXQgY2xvc2VSZWFkYWJsZTsKKworICByZXR1cm4g
eworICAgIHdyaXRhYmxlOiBuZXcgV3JpdGFibGVTdHJlYW0oeworICAgICAgd3JpdGUoY2h1bmsp
IHsKKyAgICAgICAgZW5xdWV1ZUluUmVhZGFibGUoY2h1bmspOworICAgICAgfSwKKworICAgICAg
Y2xvc2UoKSB7CisgICAgICAgIGNsb3NlUmVhZGFibGUoKTsKKyAgICAgIH0KKyAgICB9KSwKKwor
ICAgIHJlYWRhYmxlOiBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgICAgc3RhcnQoYykgeworICAg
ICAgICBlbnF1ZXVlSW5SZWFkYWJsZSA9IGMuZW5xdWV1ZS5iaW5kKGMpOworICAgICAgICBjbG9z
ZVJlYWRhYmxlID0gYy5jbG9zZS5iaW5kKGMpOworICAgICAgfQorICAgIH0pCisgIH07Cit9CisK
K2Z1bmN0aW9uIHVuaW50ZXJlc3RpbmdSZWFkYWJsZVdyaXRhYmxlUGFpcigpIHsKKyAgcmV0dXJu
IHsgd3JpdGFibGU6IG5ldyBXcml0YWJsZVN0cmVhbSgpLCByZWFkYWJsZTogbmV3IFJlYWRhYmxl
U3RyZWFtKCkgfTsKK30KKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgY29uc3QgcmVhZGFibGVF
bmQgPSBzZXF1ZW50aWFsUmVhZGFibGVTdHJlYW0oNSkucGlwZVRocm91Z2goZHVja1R5cGVkUGFz
c1Rocm91Z2hUcmFuc2Zvcm0oKSk7CisKKyAgcmV0dXJuIHJlYWRhYmxlU3RyZWFtVG9BcnJheShy
ZWFkYWJsZUVuZCkudGhlbihjaHVua3MgPT4KKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGNodW5r
cywgWzEsIDIsIDMsIDQsIDVdKSwgJ2NodW5rcyBzaG91bGQgbWF0Y2gnKTsKK30sICdQaXBpbmcg
dGhyb3VnaCBhIGR1Y2stdHlwZWQgcGFzcy10aHJvdWdoIHRyYW5zZm9ybSBzdHJlYW0gc2hvdWxk
IHdvcmsnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgY29uc3QgdHJhbnNmb3JtID0gewor
ICAgIHdyaXRhYmxlOiBuZXcgV3JpdGFibGVTdHJlYW0oeworICAgICAgc3RhcnQoYykgeworICAg
ICAgICBjLmVycm9yKG5ldyBFcnJvcigndGhpcyByZWplY3Rpb24gc2hvdWxkIG5vdCBiZSByZXBv
cnRlZCBhcyB1bmhhbmRsZWQnKSk7CisgICAgICB9CisgICAgfSksCisgICAgcmVhZGFibGU6IG5l
dyBSZWFkYWJsZVN0cmVhbSgpCisgIH07CisKKyAgc2VxdWVudGlhbFJlYWRhYmxlU3RyZWFtKDUp
LnBpcGVUaHJvdWdoKHRyYW5zZm9ybSk7CisKKyAgLy8gVGhlIHRlc3QgaGFybmVzcyBzaG91bGQg
Y29tcGxhaW4gYWJvdXQgdW5oYW5kbGVkIHJlamVjdGlvbnMgYnkgdGhlbi4KKyAgcmV0dXJuIGZs
dXNoQXN5bmNFdmVudHMoKTsKKworfSwgJ1BpcGluZyB0aHJvdWdoIGEgdHJhbnNmb3JtIGVycm9y
ZWQgb24gdGhlIHdyaXRhYmxlIGVuZCBkb2VzIG5vdCBjYXVzZSBhbiB1bmhhbmRsZWQgcHJvbWlz
ZSByZWplY3Rpb24nKTsKKwordGVzdCgoKSA9PiB7CisgIGxldCBjYWxsZWRQaXBlVG8gPSBmYWxz
ZTsKKyAgY2xhc3MgQmFkUmVhZGFibGVTdHJlYW0gZXh0ZW5kcyBSZWFkYWJsZVN0cmVhbSB7Cisg
ICAgcGlwZVRvKCkgeworICAgICAgY2FsbGVkUGlwZVRvID0gdHJ1ZTsKKyAgICB9CisgIH0KKwor
ICBjb25zdCBicnMgPSBuZXcgQmFkUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGNvbnRyb2xs
ZXIpIHsKKyAgICAgIGNvbnRyb2xsZXIuY2xvc2UoKTsKKyAgICB9CisgIH0pOworICBjb25zdCBy
ZWFkYWJsZSA9IG5ldyBSZWFkYWJsZVN0cmVhbSgpOworICBjb25zdCB3cml0YWJsZSA9IG5ldyBX
cml0YWJsZVN0cmVhbSgpOworICBjb25zdCByZXN1bHQgPSBicnMucGlwZVRocm91Z2goeyByZWFk
YWJsZSwgd3JpdGFibGUgfSk7CisKKyAgYXNzZXJ0X2ZhbHNlKGNhbGxlZFBpcGVUbywgJ3RoZSBv
dmVycmlkZGVuIHBpcGVUbyBzaG91bGQgbm90IGhhdmUgYmVlbiBjYWxsZWQnKTsKKyAgYXNzZXJ0
X2VxdWFscyhyZXN1bHQsIHJlYWRhYmxlLCAncmV0dXJuIHZhbHVlIHNob3VsZCBiZSB0aGUgcGFz
c2VkIHJlYWRhYmxlIHByb3BlcnR5Jyk7Cit9LCAncGlwZVRocm91Z2ggc2hvdWxkIG5vdCBjYWxs
IHBpcGVUbyBvbiB0aGlzJyk7CisKK3Rlc3QodCA9PiB7CisgIGxldCBjYWxsZWRGYWtlUGlwZVRv
ID0gZmFsc2U7CisgIGNvbnN0IHJlYWxQaXBlVG8gPSBSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUu
cGlwZVRvOworICB0LmFkZF9jbGVhbnVwKCgpID0+IHsKKyAgICBSZWFkYWJsZVN0cmVhbS5wcm90
b3R5cGUucGlwZVRvID0gcmVhbFBpcGVUbzsKKyAgfSk7CisgIFJlYWRhYmxlU3RyZWFtLnByb3Rv
dHlwZS5waXBlVG8gPSAoKSA9PiB7CisgICAgY2FsbGVkRmFrZVBpcGVUbyA9IHRydWU7CisgIH07
CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKCk7CisgIGNvbnN0IHJlYWRhYmxlID0g
bmV3IFJlYWRhYmxlU3RyZWFtKCk7CisgIGNvbnN0IHdyaXRhYmxlID0gbmV3IFdyaXRhYmxlU3Ry
ZWFtKCk7CisgIGNvbnN0IHJlc3VsdCA9IHJzLnBpcGVUaHJvdWdoKHsgcmVhZGFibGUsIHdyaXRh
YmxlIH0pOworCisgIGFzc2VydF9mYWxzZShjYWxsZWRGYWtlUGlwZVRvLCAndGhlIG1vbmtleS1w
YXRjaGVkIHBpcGVUbyBzaG91bGQgbm90IGhhdmUgYmVlbiBjYWxsZWQnKTsKKyAgYXNzZXJ0X2Vx
dWFscyhyZXN1bHQsIHJlYWRhYmxlLCAncmV0dXJuIHZhbHVlIHNob3VsZCBiZSB0aGUgcGFzc2Vk
IHJlYWRhYmxlIHByb3BlcnR5Jyk7CisKK30sICdwaXBlVGhyb3VnaCBzaG91bGQgbm90IGNhbGwg
cGlwZVRvIG9uIHRoZSBSZWFkYWJsZVN0cmVhbSBwcm90b3R5cGUnKTsKKworY29uc3QgYmFkUmVh
ZGFibGVzID0gW251bGwsIHVuZGVmaW5lZCwgMCwgTmFOLCB0cnVlLCAnUmVhZGFibGVTdHJlYW0n
LCBPYmplY3QuY3JlYXRlKFJlYWRhYmxlU3RyZWFtLnByb3RvdHlwZSldOworZm9yIChjb25zdCBy
ZWFkYWJsZSBvZiBiYWRSZWFkYWJsZXMpIHsKKyAgdGVzdCgoKSA9PiB7CisgICAgYXNzZXJ0X3Ro
cm93c19qcyhUeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICBSZWFkYWJsZVN0cmVhbS5w
cm90b3R5cGUucGlwZVRocm91Z2guYmluZChyZWFkYWJsZSwgdW5pbnRlcmVzdGluZ1JlYWRhYmxl
V3JpdGFibGVQYWlyKCkpLAorICAgICAgICAgICAgICAgICAgICAgJ3BpcGVUaHJvdWdoIHNob3Vs
ZCB0aHJvdycpOworICB9LCBgcGlwZVRocm91Z2ggc2hvdWxkIGJyYW5kLWNoZWNrIHRoaXMgYW5k
IG5vdCBhbGxvdyAnJHtyZWFkYWJsZX0nYCk7CisKKyAgdGVzdCgoKSA9PiB7CisgICAgY29uc3Qg
cnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oKTsKKyAgICBsZXQgd3JpdGFibGVHZXR0ZXJDYWxsZWQg
PSBmYWxzZTsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKAorICAgICAgVHlwZUVycm9yLAorICAgICAg
KCkgPT4gcnMucGlwZVRocm91Z2goeworICAgICAgICBnZXQgd3JpdGFibGUoKSB7CisgICAgICAg
ICAgd3JpdGFibGVHZXR0ZXJDYWxsZWQgPSB0cnVlOworICAgICAgICAgIHJldHVybiBuZXcgV3Jp
dGFibGVTdHJlYW0oKTsKKyAgICAgICAgfSwKKyAgICAgICAgcmVhZGFibGUKKyAgICAgIH0pLAor
ICAgICAgJ3BpcGVUaHJvdWdoIHNob3VsZCBicmFuZC1jaGVjayByZWFkYWJsZScKKyAgICApOwor
ICAgIGFzc2VydF9mYWxzZSh3cml0YWJsZUdldHRlckNhbGxlZCwgJ3dyaXRhYmxlIHNob3VsZCBu
b3QgaGF2ZSBiZWVuIGFjY2Vzc2VkJyk7CisgIH0sIGBwaXBlVGhyb3VnaCBzaG91bGQgYnJhbmQt
Y2hlY2sgcmVhZGFibGUgYW5kIG5vdCBhbGxvdyAnJHtyZWFkYWJsZX0nYCk7Cit9CisKK2NvbnN0
IGJhZFdyaXRhYmxlcyA9IFtudWxsLCB1bmRlZmluZWQsIDAsIE5hTiwgdHJ1ZSwgJ1dyaXRhYmxl
U3RyZWFtJywgT2JqZWN0LmNyZWF0ZShXcml0YWJsZVN0cmVhbS5wcm90b3R5cGUpXTsKK2ZvciAo
Y29uc3Qgd3JpdGFibGUgb2YgYmFkV3JpdGFibGVzKSB7CisgIHRlc3QoKCkgPT4geworICAgIGNv
bnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICAgIHN0YXJ0KGMpIHsKKyAgICAgICAg
Yy5jbG9zZSgpOworICAgICAgfQorICAgIH0pOworICAgIGxldCByZWFkYWJsZUdldHRlckNhbGxl
ZCA9IGZhbHNlOworICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiBycy5waXBl
VGhyb3VnaCh7CisgICAgICBnZXQgcmVhZGFibGUoKSB7CisgICAgICAgIHJlYWRhYmxlR2V0dGVy
Q2FsbGVkID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIG5ldyBSZWFkYWJsZVN0cmVhbSgpOworICAg
ICAgfSwKKyAgICAgIHdyaXRhYmxlCisgICAgfSksCisgICAgICAgICAgICAgICAgICAncGlwZVRo
cm91Z2ggc2hvdWxkIGJyYW5kLWNoZWNrIHdyaXRhYmxlJyk7CisgICAgYXNzZXJ0X3RydWUocmVh
ZGFibGVHZXR0ZXJDYWxsZWQsICdyZWFkYWJsZSBzaG91bGQgaGF2ZSBiZWVuIGFjY2Vzc2VkJyk7
CisgIH0sIGBwaXBlVGhyb3VnaCBzaG91bGQgYnJhbmQtY2hlY2sgd3JpdGFibGUgYW5kIG5vdCBh
bGxvdyAnJHt3cml0YWJsZX0nYCk7Cit9CisKK3Rlc3QodCA9PiB7CisgIGNvbnN0IGVycm9yID0g
bmV3IEVycm9yKCk7CisgIGVycm9yLm5hbWUgPSAnY3VzdG9tJzsKKworICBjb25zdCBycyA9IG5l
dyBSZWFkYWJsZVN0cmVhbSh7CisgICAgcHVsbDogdC51bnJlYWNoZWRfZnVuYygncHVsbCBzaG91
bGQgbm90IGJlIGNhbGxlZCcpCisgIH0sIHsgaGlnaFdhdGVyTWFyazogMCB9KTsKKworICBjb25z
dCB0aHJvd2luZ1dyaXRhYmxlID0geworICAgIHJlYWRhYmxlOiBycywKKyAgICBnZXQgd3JpdGFi
bGUoKSB7CisgICAgICB0aHJvdyBlcnJvcjsKKyAgICB9CisgIH07CisgIGFzc2VydF90aHJvd3Nf
ZXhhY3RseShlcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICgpID0+IFJlYWRhYmxlU3Ry
ZWFtLnByb3RvdHlwZS5waXBlVGhyb3VnaC5jYWxsKHJzLCB0aHJvd2luZ1dyaXRhYmxlLCB7fSks
CisgICAgICAgICAgICAgICAgICAgICAgICAncGlwZVRocm91Z2ggc2hvdWxkIHJldGhyb3cgdGhl
IGVycm9yIHRocm93biBieSB0aGUgd3JpdGFibGUgZ2V0dGVyJyk7CisKKyAgY29uc3QgdGhyb3dp
bmdSZWFkYWJsZSA9IHsKKyAgICBnZXQgcmVhZGFibGUoKSB7CisgICAgICB0aHJvdyBlcnJvcjsK
KyAgICB9LAorICAgIHdyaXRhYmxlOiB7fQorICB9OworICBhc3NlcnRfdGhyb3dzX2V4YWN0bHko
ZXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAoKSA9PiBSZWFkYWJsZVN0cmVhbS5wcm90
b3R5cGUucGlwZVRocm91Z2guY2FsbChycywgdGhyb3dpbmdSZWFkYWJsZSwge30pLAorICAgICAg
ICAgICAgICAgICAgICAgICAgJ3BpcGVUaHJvdWdoIHNob3VsZCByZXRocm93IHRoZSBlcnJvciB0
aHJvd24gYnkgdGhlIHJlYWRhYmxlIGdldHRlcicpOworCit9LCAncGlwZVRocm91Z2ggc2hvdWxk
IHJldGhyb3cgZXJyb3JzIGZyb20gYWNjZXNzaW5nIHJlYWRhYmxlIG9yIHdyaXRhYmxlJyk7CisK
K2NvbnN0IGJhZFNpZ25hbHMgPSBbbnVsbCwgMCwgTmFOLCB0cnVlLCAnQWJvcnRTaWduYWwnLCBP
YmplY3QuY3JlYXRlKEFib3J0U2lnbmFsLnByb3RvdHlwZSldOworZm9yIChjb25zdCBzaWduYWwg
b2YgYmFkU2lnbmFscykgeworICB0ZXN0KCgpID0+IHsKKyAgICBjb25zdCBycyA9IG5ldyBSZWFk
YWJsZVN0cmVhbSgpOworICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiBycy5w
aXBlVGhyb3VnaCh1bmludGVyZXN0aW5nUmVhZGFibGVXcml0YWJsZVBhaXIoKSwgeyBzaWduYWwg
fSksCisgICAgICAgICAgICAgICAgICAgICAncGlwZVRocm91Z2ggc2hvdWxkIHRocm93Jyk7Cisg
IH0sIGBpbnZhbGlkIHZhbHVlcyBvZiBzaWduYWwgc2hvdWxkIHRocm93OyBzcGVjaWZpY2FsbHkg
JyR7c2lnbmFsfSdgKTsKK30KKwordGVzdCgoKSA9PiB7CisgIGNvbnN0IHJzID0gbmV3IFJlYWRh
YmxlU3RyZWFtKCk7CisgIGNvbnN0IGNvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7
CisgIGNvbnN0IHNpZ25hbCA9IGNvbnRyb2xsZXIuc2lnbmFsOworICBycy5waXBlVGhyb3VnaCh1
bmludGVyZXN0aW5nUmVhZGFibGVXcml0YWJsZVBhaXIoKSwgeyBzaWduYWwgfSk7Cit9LCAncGlw
ZVRocm91Z2ggc2hvdWxkIGFjY2VwdCBhIHJlYWwgQWJvcnRTaWduYWwnKTsKKwordGVzdCgoKSA9
PiB7CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKCk7CisgIHJzLmdldFJlYWRlcigp
OworICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4gcnMucGlwZVRocm91Z2godW5p
bnRlcmVzdGluZ1JlYWRhYmxlV3JpdGFibGVQYWlyKCkpLAorICAgICAgICAgICAgICAgICAgICdw
aXBlVGhyb3VnaCBzaG91bGQgdGhyb3cnKTsKK30sICdwaXBlVGhyb3VnaCBzaG91bGQgdGhyb3cg
aWYgdGhpcyBpcyBsb2NrZWQnKTsKKwordGVzdCgoKSA9PiB7CisgIGNvbnN0IHJzID0gbmV3IFJl
YWRhYmxlU3RyZWFtKCk7CisgIGNvbnN0IHdyaXRhYmxlID0gbmV3IFdyaXRhYmxlU3RyZWFtKCk7
CisgIGNvbnN0IHJlYWRhYmxlID0gbmV3IFJlYWRhYmxlU3RyZWFtKCk7CisgIHdyaXRhYmxlLmdl
dFdyaXRlcigpOworICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4gcnMucGlwZVRo
cm91Z2goe3dyaXRhYmxlLCByZWFkYWJsZX0pLAorICAgICAgICAgICAgICAgICAgICdwaXBlVGhy
b3VnaCBzaG91bGQgdGhyb3cnKTsKK30sICdwaXBlVGhyb3VnaCBzaG91bGQgdGhyb3cgaWYgd3Jp
dGFibGUgaXMgbG9ja2VkJyk7CisKK3Rlc3QoKCkgPT4geworICBjb25zdCBycyA9IG5ldyBSZWFk
YWJsZVN0cmVhbSgpOworICBjb25zdCB3cml0YWJsZSA9IG5ldyBXcml0YWJsZVN0cmVhbSgpOwor
ICBjb25zdCByZWFkYWJsZSA9IG5ldyBSZWFkYWJsZVN0cmVhbSgpOworICByZWFkYWJsZS5nZXRS
ZWFkZXIoKTsKKyAgYXNzZXJ0X2VxdWFscyhycy5waXBlVGhyb3VnaCh7IHdyaXRhYmxlLCByZWFk
YWJsZSB9KSwgcmVhZGFibGUsCisgICAgICAgICAgICAgICAgJ3BpcGVUaHJvdWdoIHNob3VsZCBu
b3QgdGhyb3cnKTsKK30sICdwaXBlVGhyb3VnaCBzaG91bGQgbm90IGNhcmUgaWYgcmVhZGFibGUg
aXMgbG9ja2VkJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisgIGNvbnN0IHJzID0gcmVjb3Jk
aW5nUmVhZGFibGVTdHJlYW0oKTsKKyAgY29uc3Qgd3JpdGFibGUgPSBuZXcgV3JpdGFibGVTdHJl
YW0oeworICAgIHN0YXJ0KGNvbnRyb2xsZXIpIHsKKyAgICAgIGNvbnRyb2xsZXIuZXJyb3IoKTsK
KyAgICB9CisgIH0pOworICBjb25zdCByZWFkYWJsZSA9IG5ldyBSZWFkYWJsZVN0cmVhbSgpOwor
ICBycy5waXBlVGhyb3VnaCh7IHdyaXRhYmxlLCByZWFkYWJsZSB9LCB7IHByZXZlbnRDYW5jZWw6
IHRydWUgfSk7CisgIHJldHVybiBmbHVzaEFzeW5jRXZlbnRzKDApLnRoZW4oKCkgPT4geworICAg
IGFzc2VydF9hcnJheV9lcXVhbHMocnMuZXZlbnRzLCBbJ3B1bGwnXSwgJ2NhbmNlbCBzaG91bGQg
bm90IGhhdmUgYmVlbiBjYWxsZWQnKTsKKyAgfSk7Cit9LCAncHJldmVudENhbmNlbCBzaG91bGQg
d29yaycpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworICBjb25zdCBycyA9IG5ldyBSZWFkYWJs
ZVN0cmVhbSh7CisgICAgc3RhcnQoY29udHJvbGxlcikgeworICAgICAgY29udHJvbGxlci5jbG9z
ZSgpOworICAgIH0KKyAgfSk7CisgIGNvbnN0IHdyaXRhYmxlID0gcmVjb3JkaW5nV3JpdGFibGVT
dHJlYW0oKTsKKyAgY29uc3QgcmVhZGFibGUgPSBuZXcgUmVhZGFibGVTdHJlYW0oKTsKKyAgcnMu
cGlwZVRocm91Z2goeyB3cml0YWJsZSwgcmVhZGFibGUgfSwgeyBwcmV2ZW50Q2xvc2U6IHRydWUg
fSk7CisgIHJldHVybiBmbHVzaEFzeW5jRXZlbnRzKDApLnRoZW4oKCkgPT4geworICAgIGFzc2Vy
dF9hcnJheV9lcXVhbHMod3JpdGFibGUuZXZlbnRzLCBbXSwgJ3dyaXRhYmxlIHNob3VsZCBub3Qg
YmUgY2xvc2VkJyk7CisgIH0pOworfSwgJ3ByZXZlbnRDbG9zZSBzaG91bGQgd29yaycpOworCitw
cm9taXNlX3Rlc3QoKCkgPT4geworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Cisg
ICAgc3RhcnQoY29udHJvbGxlcikgeworICAgICAgY29udHJvbGxlci5lcnJvcigpOworICAgIH0K
KyAgfSk7CisgIGNvbnN0IHdyaXRhYmxlID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0oKTsKKyAg
Y29uc3QgcmVhZGFibGUgPSBuZXcgUmVhZGFibGVTdHJlYW0oKTsKKyAgcnMucGlwZVRocm91Z2go
eyB3cml0YWJsZSwgcmVhZGFibGUgfSwgeyBwcmV2ZW50QWJvcnQ6IHRydWUgfSk7CisgIHJldHVy
biBmbHVzaEFzeW5jRXZlbnRzKDApLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9hcnJheV9lcXVh
bHMod3JpdGFibGUuZXZlbnRzLCBbXSwgJ3dyaXRhYmxlIHNob3VsZCBub3QgYmUgYWJvcnRlZCcp
OworICB9KTsKK30sICdwcmV2ZW50QWJvcnQgc2hvdWxkIHdvcmsnKTsKKwordGVzdCgoKSA9PiB7
CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKCk7CisgIGNvbnN0IHJlYWRhYmxlID0g
bmV3IFJlYWRhYmxlU3RyZWFtKCk7CisgIGNvbnN0IHdyaXRhYmxlID0gbmV3IFdyaXRhYmxlU3Ry
ZWFtKCk7CisgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiBycy5waXBlVGhyb3Vn
aCh7cmVhZGFibGUsIHdyaXRhYmxlfSwgeworICAgIGdldCBwcmV2ZW50QWJvcnQoKSB7CisgICAg
ICB3cml0YWJsZS5nZXRXcml0ZXIoKTsKKyAgICB9CisgIH0pLCAncGlwZVRocm91Z2ggc2hvdWxk
IHRocm93Jyk7Cit9LCAncGlwZVRocm91Z2goKSBzaG91bGQgdGhyb3cgaWYgYW4gb3B0aW9uIGdl
dHRlciBncmFicyBhIHdyaXRlcicpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9waXBlLXRocm91Z2guYW55Lndv
cmtlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMvcGlwaW5nL3BpcGUtdGhyb3VnaC5hbnkud29ya2VyLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi45NjQzYjFkMmYwN2U2ZTU5ODc5YzA3MTE5ZDY5NWRiODI0NDg2YTYwCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL3BpcGluZy9waXBlLXRocm91Z2guYW55Lndvcmtlci1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSw3OSBAQAorQ09OU09MRSBNRVNTQUdFOiBSZWZlcmVuY2VFcnJvcjogQ2FuJ3Qg
ZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KKworSGFybmVzcyBFcnJvciAoRkFJTCksIG1l
c3NhZ2UgPSBSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJl
YW0KKworRkFJTCBQaXBpbmcgdGhyb3VnaCBhIGR1Y2stdHlwZWQgcGFzcy10aHJvdWdoIHRyYW5z
Zm9ybSBzdHJlYW0gc2hvdWxkIHdvcmsgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJl
YW0KK0ZBSUwgUGlwaW5nIHRocm91Z2ggYSB0cmFuc2Zvcm0gZXJyb3JlZCBvbiB0aGUgd3JpdGFi
bGUgZW5kIGRvZXMgbm90IGNhdXNlIGFuIHVuaGFuZGxlZCBwcm9taXNlIHJlamVjdGlvbiBDYW4n
dCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBwaXBlVGhyb3VnaCBzaG91bGQg
bm90IGNhbGwgcGlwZVRvIG9uIHRoaXMgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJl
YW0KK0ZBSUwgcGlwZVRocm91Z2ggc2hvdWxkIG5vdCBjYWxsIHBpcGVUbyBvbiB0aGUgUmVhZGFi
bGVTdHJlYW0gcHJvdG90eXBlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitG
QUlMIHBpcGVUaHJvdWdoIHNob3VsZCBicmFuZC1jaGVjayB0aGlzIGFuZCBub3QgYWxsb3cgJ251
bGwnIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIHBpcGVUaHJvdWdo
IHNob3VsZCBicmFuZC1jaGVjayByZWFkYWJsZSBhbmQgbm90IGFsbG93ICdudWxsJyBhc3NlcnRf
dGhyb3dzX2pzOiBwaXBlVGhyb3VnaCBzaG91bGQgYnJhbmQtY2hlY2sgcmVhZGFibGUgZnVuY3Rp
b24gIigpID0+IHJzLnBpcGVUaHJvdWdoKHsKKyAgICAgICAgZ2V0IHdyaXRhYmxlKCkgeworICAg
ICAgICAgIHdyaXRhYmxlR2V0dGVyQ2FsbGVkID0gdHJ1ZTsKKyAgICAgICAgICByZXR1cm4gbmV3
IFdyaXRhYmxlU3RyZWFtKCk7CisgICAgICAgIH0sCisgICAgICAgIHJlYWRhYmxlCisgICAgICB9
KSIgdGhyZXcgb2JqZWN0ICJSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3Jp
dGFibGVTdHJlYW0iICgiUmVmZXJlbmNlRXJyb3IiKSBleHBlY3RlZCBpbnN0YW5jZSBvZiBmdW5j
dGlvbiAiZnVuY3Rpb24gVHlwZUVycm9yKCkgeworICAgIFtuYXRpdmUgY29kZV0KK30iICgiVHlw
ZUVycm9yIikKK0ZBSUwgcGlwZVRocm91Z2ggc2hvdWxkIGJyYW5kLWNoZWNrIHRoaXMgYW5kIG5v
dCBhbGxvdyAndW5kZWZpbmVkJyBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQor
RkFJTCBwaXBlVGhyb3VnaCBzaG91bGQgYnJhbmQtY2hlY2sgcmVhZGFibGUgYW5kIG5vdCBhbGxv
dyAndW5kZWZpbmVkJyBhc3NlcnRfdGhyb3dzX2pzOiBwaXBlVGhyb3VnaCBzaG91bGQgYnJhbmQt
Y2hlY2sgcmVhZGFibGUgZnVuY3Rpb24gIigpID0+IHJzLnBpcGVUaHJvdWdoKHsKKyAgICAgICAg
Z2V0IHdyaXRhYmxlKCkgeworICAgICAgICAgIHdyaXRhYmxlR2V0dGVyQ2FsbGVkID0gdHJ1ZTsK
KyAgICAgICAgICByZXR1cm4gbmV3IFdyaXRhYmxlU3RyZWFtKCk7CisgICAgICAgIH0sCisgICAg
ICAgIHJlYWRhYmxlCisgICAgICB9KSIgdGhyZXcgb2JqZWN0ICJSZWZlcmVuY2VFcnJvcjogQ2Fu
J3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0iICgiUmVmZXJlbmNlRXJyb3IiKSBleHBl
Y3RlZCBpbnN0YW5jZSBvZiBmdW5jdGlvbiAiZnVuY3Rpb24gVHlwZUVycm9yKCkgeworICAgIFtu
YXRpdmUgY29kZV0KK30iICgiVHlwZUVycm9yIikKK0ZBSUwgcGlwZVRocm91Z2ggc2hvdWxkIGJy
YW5kLWNoZWNrIHRoaXMgYW5kIG5vdCBhbGxvdyAnMCcgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3Jp
dGFibGVTdHJlYW0KK0ZBSUwgcGlwZVRocm91Z2ggc2hvdWxkIGJyYW5kLWNoZWNrIHJlYWRhYmxl
IGFuZCBub3QgYWxsb3cgJzAnIGFzc2VydF90aHJvd3NfanM6IHBpcGVUaHJvdWdoIHNob3VsZCBi
cmFuZC1jaGVjayByZWFkYWJsZSBmdW5jdGlvbiAiKCkgPT4gcnMucGlwZVRocm91Z2goeworICAg
ICAgICBnZXQgd3JpdGFibGUoKSB7CisgICAgICAgICAgd3JpdGFibGVHZXR0ZXJDYWxsZWQgPSB0
cnVlOworICAgICAgICAgIHJldHVybiBuZXcgV3JpdGFibGVTdHJlYW0oKTsKKyAgICAgICAgfSwK
KyAgICAgICAgcmVhZGFibGUKKyAgICAgIH0pIiB0aHJldyBvYmplY3QgIlJlZmVyZW5jZUVycm9y
OiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbSIgKCJSZWZlcmVuY2VFcnJvciIp
IGV4cGVjdGVkIGluc3RhbmNlIG9mIGZ1bmN0aW9uICJmdW5jdGlvbiBUeXBlRXJyb3IoKSB7Cisg
ICAgW25hdGl2ZSBjb2RlXQorfSIgKCJUeXBlRXJyb3IiKQorRkFJTCBwaXBlVGhyb3VnaCBzaG91
bGQgYnJhbmQtY2hlY2sgdGhpcyBhbmQgbm90IGFsbG93ICdOYU4nIENhbid0IGZpbmQgdmFyaWFi
bGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIHBpcGVUaHJvdWdoIHNob3VsZCBicmFuZC1jaGVjayBy
ZWFkYWJsZSBhbmQgbm90IGFsbG93ICdOYU4nIGFzc2VydF90aHJvd3NfanM6IHBpcGVUaHJvdWdo
IHNob3VsZCBicmFuZC1jaGVjayByZWFkYWJsZSBmdW5jdGlvbiAiKCkgPT4gcnMucGlwZVRocm91
Z2goeworICAgICAgICBnZXQgd3JpdGFibGUoKSB7CisgICAgICAgICAgd3JpdGFibGVHZXR0ZXJD
YWxsZWQgPSB0cnVlOworICAgICAgICAgIHJldHVybiBuZXcgV3JpdGFibGVTdHJlYW0oKTsKKyAg
ICAgICAgfSwKKyAgICAgICAgcmVhZGFibGUKKyAgICAgIH0pIiB0aHJldyBvYmplY3QgIlJlZmVy
ZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbSIgKCJSZWZlcmVu
Y2VFcnJvciIpIGV4cGVjdGVkIGluc3RhbmNlIG9mIGZ1bmN0aW9uICJmdW5jdGlvbiBUeXBlRXJy
b3IoKSB7CisgICAgW25hdGl2ZSBjb2RlXQorfSIgKCJUeXBlRXJyb3IiKQorRkFJTCBwaXBlVGhy
b3VnaCBzaG91bGQgYnJhbmQtY2hlY2sgdGhpcyBhbmQgbm90IGFsbG93ICd0cnVlJyBDYW4ndCBm
aW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBwaXBlVGhyb3VnaCBzaG91bGQgYnJh
bmQtY2hlY2sgcmVhZGFibGUgYW5kIG5vdCBhbGxvdyAndHJ1ZScgYXNzZXJ0X3Rocm93c19qczog
cGlwZVRocm91Z2ggc2hvdWxkIGJyYW5kLWNoZWNrIHJlYWRhYmxlIGZ1bmN0aW9uICIoKSA9PiBy
cy5waXBlVGhyb3VnaCh7CisgICAgICAgIGdldCB3cml0YWJsZSgpIHsKKyAgICAgICAgICB3cml0
YWJsZUdldHRlckNhbGxlZCA9IHRydWU7CisgICAgICAgICAgcmV0dXJuIG5ldyBXcml0YWJsZVN0
cmVhbSgpOworICAgICAgICB9LAorICAgICAgICByZWFkYWJsZQorICAgICAgfSkiIHRocmV3IG9i
amVjdCAiUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFt
IiAoIlJlZmVyZW5jZUVycm9yIikgZXhwZWN0ZWQgaW5zdGFuY2Ugb2YgZnVuY3Rpb24gImZ1bmN0
aW9uIFR5cGVFcnJvcigpIHsKKyAgICBbbmF0aXZlIGNvZGVdCit9IiAoIlR5cGVFcnJvciIpCitG
QUlMIHBpcGVUaHJvdWdoIHNob3VsZCBicmFuZC1jaGVjayB0aGlzIGFuZCBub3QgYWxsb3cgJ1Jl
YWRhYmxlU3RyZWFtJyBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBw
aXBlVGhyb3VnaCBzaG91bGQgYnJhbmQtY2hlY2sgcmVhZGFibGUgYW5kIG5vdCBhbGxvdyAnUmVh
ZGFibGVTdHJlYW0nIGFzc2VydF90aHJvd3NfanM6IHBpcGVUaHJvdWdoIHNob3VsZCBicmFuZC1j
aGVjayByZWFkYWJsZSBmdW5jdGlvbiAiKCkgPT4gcnMucGlwZVRocm91Z2goeworICAgICAgICBn
ZXQgd3JpdGFibGUoKSB7CisgICAgICAgICAgd3JpdGFibGVHZXR0ZXJDYWxsZWQgPSB0cnVlOwor
ICAgICAgICAgIHJldHVybiBuZXcgV3JpdGFibGVTdHJlYW0oKTsKKyAgICAgICAgfSwKKyAgICAg
ICAgcmVhZGFibGUKKyAgICAgIH0pIiB0aHJldyBvYmplY3QgIlJlZmVyZW5jZUVycm9yOiBDYW4n
dCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbSIgKCJSZWZlcmVuY2VFcnJvciIpIGV4cGVj
dGVkIGluc3RhbmNlIG9mIGZ1bmN0aW9uICJmdW5jdGlvbiBUeXBlRXJyb3IoKSB7CisgICAgW25h
dGl2ZSBjb2RlXQorfSIgKCJUeXBlRXJyb3IiKQorRkFJTCBwaXBlVGhyb3VnaCBzaG91bGQgYnJh
bmQtY2hlY2sgdGhpcyBhbmQgbm90IGFsbG93ICdbb2JqZWN0IFJlYWRhYmxlU3RyZWFtXScgQ2Fu
J3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgcGlwZVRocm91Z2ggc2hvdWxk
IGJyYW5kLWNoZWNrIHJlYWRhYmxlIGFuZCBub3QgYWxsb3cgJ1tvYmplY3QgUmVhZGFibGVTdHJl
YW1dJyBhc3NlcnRfdGhyb3dzX2pzOiBwaXBlVGhyb3VnaCBzaG91bGQgYnJhbmQtY2hlY2sgcmVh
ZGFibGUgZnVuY3Rpb24gIigpID0+IHJzLnBpcGVUaHJvdWdoKHsKKyAgICAgICAgZ2V0IHdyaXRh
YmxlKCkgeworICAgICAgICAgIHdyaXRhYmxlR2V0dGVyQ2FsbGVkID0gdHJ1ZTsKKyAgICAgICAg
ICByZXR1cm4gbmV3IFdyaXRhYmxlU3RyZWFtKCk7CisgICAgICAgIH0sCisgICAgICAgIHJlYWRh
YmxlCisgICAgICB9KSIgdGhyZXcgb2JqZWN0ICJSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2
YXJpYWJsZTogV3JpdGFibGVTdHJlYW0iICgiUmVmZXJlbmNlRXJyb3IiKSBleHBlY3RlZCBpbnN0
YW5jZSBvZiBmdW5jdGlvbiAiZnVuY3Rpb24gVHlwZUVycm9yKCkgeworICAgIFtuYXRpdmUgY29k
ZV0KK30iICgiVHlwZUVycm9yIikKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9waXBlLXRocm91Z2guYW55Lndv
cmtlci5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
dHJlYW1zL3BpcGluZy9waXBlLXRocm91Z2guYW55Lndvcmtlci5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIz
ODI5MTM1MjhlNjkzYjNhNWQ1NmM2NjBhNDUwNjA5ODBiNTQ4YzMKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlw
aW5nL3BpcGUtdGhyb3VnaC5hbnkud29ya2VyLmh0bWwKQEAgLTAsMCArMSBAQAorPCEtLSBUaGlz
IGZpbGUgaXMgcmVxdWlyZWQgZm9yIFdlYktpdCB0ZXN0IGluZnJhc3RydWN0dXJlIHRvIHJ1biB0
aGUgdGVtcGxhdGVkIHRlc3QgLS0+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
L3BpcGluZy9waXBlLXRocm91Z2guZGVkaWNhdGVkd29ya2VyLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvcGlw
ZS10aHJvdWdoLmRlZGljYXRlZHdvcmtlci1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGI4N2JlMDRlZDBiODkxNzY1OWY4OWM0ZDc1NjUxOGY0NjYwM2I3OTUuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9waXBlLXRocm91
Z2guZGVkaWNhdGVkd29ya2VyLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDE1ICsw
LDAgQEAKLQotRkFJTCBQaXBpbmcgdGhyb3VnaCBhIGR1Y2stdHlwZWQgcGFzcy10aHJvdWdoIHRy
YW5zZm9ybSBzdHJlYW0gc2hvdWxkIHdvcmsgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVT
dHJlYW0KLUZBSUwgUGlwaW5nIHRocm91Z2ggYSB0cmFuc2Zvcm0gZXJyb3JlZCBvbiB0aGUgd3Jp
dGFibGUgZW5kIGRvZXMgbm90IGNhdXNlIGFuIHVuaGFuZGxlZCBwcm9taXNlIHJlamVjdGlvbiBD
YW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotUEFTUyBwaXBlVGhyb3VnaCBnZW5l
cmljYWxseSBjYWxscyBwaXBlVG8gd2l0aCB0aGUgYXBwcm9wcmlhdGUgYXJncyAKLUZBSUwgcGlw
ZVRocm91Z2ggY2FuIGhhbmRsZSBjYWxsaW5nIGEgcGlwZVRvIHRoYXQgcmV0dXJucyBhIG5vbi1w
cm9taXNlIG9iamVjdCBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBw
aXBlVGhyb3VnaCBjYW4gaGFuZGxlIGNhbGxpbmcgYSBwaXBlVG8gdGhhdCByZXR1cm5zIGEgbm9u
LXByb21pc2UgdGhlbmFibGUgb2JqZWN0IENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3Ry
ZWFtCi1GQUlMIHBpcGVUaHJvdWdoIHNob3VsZCBtYXJrIGEgcmVhbCBwcm9taXNlIGZyb20gYSBm
YWtlIHJlYWRhYmxlIGFzIGhhbmRsZWQgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJl
YW0KLUZBSUwgcGlwZVRocm91Z2ggc2hvdWxkIG5vdCBiZSBmb29sZWQgYnkgYW4gb2JqZWN0IHdo
b3NlIGluc3RhbmNlb2YgUHJvbWlzZSByZXR1cm5zIHRydWUgQ2FuJ3QgZmluZCB2YXJpYWJsZTog
V3JpdGFibGVTdHJlYW0KLVBBU1MgdW5kZWZpbmVkIHJlYWRhYmxlIG9yIHdyaXRhYmxlIGFyZ3Vt
ZW50cyBzaG91bGQgY2F1c2UgcGlwZVRocm91Z2ggdG8gdGhyb3cgCi1GQUlMIGludmFsaWQgYnV0
IG5vdCB1bmRlZmluZWQgYXJndW1lbnRzIHNob3VsZCBub3QgY2F1c2UgcGlwZVRocm91Z2ggdG8g
dGhyb3cgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLVBBU1MgcGlwZVRocm91
Z2ggc2hvdWxkIHRocm93IHdoZW4gaXRzIGZpcnN0IGFyZ3VtZW50IGlzIG5vdCBjb252ZXJ0aWJs
ZSB0byBhbiBvYmplY3QgCi1QQVNTIHBpcGVUaHJvdWdoIHNob3VsZCB0aHJvdyB3aGVuICJ0aGlz
IiBoYXMgbm8gcGlwZVRvIG1ldGhvZCAKLVBBU1MgcGlwZVRocm91Z2ggc2hvdWxkIHJldGhyb3cg
ZXJyb3JzIGZyb20gYWNjZXNzaW5nIHBpcGVUbywgcmVhZGFibGUsIG9yIHdyaXRhYmxlIAotUEFT
UyBwaXBlVGhyb3VnaCBzaG91bGQgd29yayB3aXRoIG5vIG9wdGlvbnMgYXJndW1lbnQgCi0KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy9waXBpbmcvcGlwZS10aHJvdWdoLmRlZGljYXRlZHdvcmtlci5odG1sIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9waXBlLXRo
cm91Z2guZGVkaWNhdGVkd29ya2VyLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDYxNGRiODBiZTkwYjUyYWU0NDcyYjNkM2NhODcwMDAzOGY4NDI4NWYuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9waXBlLXRocm91Z2guZGVkaWNhdGVk
d29ya2VyLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi08IURPQ1RZUEUgaHRt
bD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTx0aXRsZT5waXBlLXRocm91Z2guanMgZGVkaWNh
dGVkIHdvcmtlciB3cmFwcGVyIGZpbGU8L3RpdGxlPgotCi08c2NyaXB0IHNyYz0iL3Jlc291cmNl
cy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0
aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci0KLTxzY3JpcHQ+Ci0ndXNlIHN0cmljdCc7Ci1m
ZXRjaF90ZXN0c19mcm9tX3dvcmtlcihuZXcgV29ya2VyKCdwaXBlLXRocm91Z2guanMnKSk7Ci08
L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvcGlwZS10aHJvdWdoLmh0bWwgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL3BpcGUtdGhyb3Vn
aC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZGJmOTNhYzkwNTQyYjQ3NTgw
MWJkZTExOWE3YzI5MTRjZjU2YWM3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy9waXBpbmcvcGlwZS10aHJvdWdoLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMSAr
MCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTx0aXRsZT5w
aXBlLXRocm91Z2guanMgYnJvd3NlciBjb250ZXh0IHdyYXBwZXIgZmlsZTwvdGl0bGU+Ci0KLTxz
Y3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQg
c3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLQotPHNjcmlw
dCBzcmM9Ii4uL3Jlc291cmNlcy9ycy11dGlscy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0i
Li4vcmVzb3VyY2VzL3Rlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgotCi08c2NyaXB0IHNyYz0icGlw
ZS10aHJvdWdoLmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvcGlwZS10aHJvdWdoLmpzIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGlu
Zy9waXBlLXRocm91Z2guanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdiYTU2MDdh
ZTVkYmI1OWE4NDUwMDMzZjk2MjQxOTUwMDAxNDgyYmUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9waXBlLXRocm91Z2guanMKKysrIC9kZXYvbnVsbApA
QCAtMSwyNjEgKzAsMCBAQAotJ3VzZSBzdHJpY3QnOwotCi1pZiAoc2VsZi5pbXBvcnRTY3JpcHRz
KSB7Ci0gIHNlbGYuaW1wb3J0U2NyaXB0cygnL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcycpOwot
ICBzZWxmLmltcG9ydFNjcmlwdHMoJy4uL3Jlc291cmNlcy9ycy11dGlscy5qcycpOwotICBzZWxm
LmltcG9ydFNjcmlwdHMoJy4uL3Jlc291cmNlcy90ZXN0LXV0aWxzLmpzJyk7Ci19Ci0KLWZ1bmN0
aW9uIGR1Y2tUeXBlZFBhc3NUaHJvdWdoVHJhbnNmb3JtKCkgewotICBsZXQgZW5xdWV1ZUluUmVh
ZGFibGU7Ci0gIGxldCBjbG9zZVJlYWRhYmxlOwotCi0gIHJldHVybiB7Ci0gICAgd3JpdGFibGU6
IG5ldyBXcml0YWJsZVN0cmVhbSh7Ci0gICAgICB3cml0ZShjaHVuaykgewotICAgICAgICBlbnF1
ZXVlSW5SZWFkYWJsZShjaHVuayk7Ci0gICAgICB9LAotCi0gICAgICBjbG9zZSgpIHsKLSAgICAg
ICAgY2xvc2VSZWFkYWJsZSgpOwotICAgICAgfQotICAgIH0pLAotCi0gICAgcmVhZGFibGU6IG5l
dyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgICBzdGFydChjKSB7Ci0gICAgICAgIGVucXVldWVJblJl
YWRhYmxlID0gYy5lbnF1ZXVlLmJpbmQoYyk7Ci0gICAgICAgIGNsb3NlUmVhZGFibGUgPSBjLmNs
b3NlLmJpbmQoYyk7Ci0gICAgICB9Ci0gICAgfSkKLSAgfTsKLX0KLQotZnVuY3Rpb24gdW5pbnRl
cmVzdGluZ1JlYWRhYmxlV3JpdGFibGVQYWlyKCkgewotICByZXR1cm4geyB3cml0YWJsZTogbmV3
IFdyaXRhYmxlU3RyZWFtKCksIHJlYWRhYmxlOiBuZXcgUmVhZGFibGVTdHJlYW0oKSB9OwotfQot
Ci1wcm9taXNlX3Rlc3QoKCkgPT4gewotICBjb25zdCByZWFkYWJsZUVuZCA9IHNlcXVlbnRpYWxS
ZWFkYWJsZVN0cmVhbSg1KS5waXBlVGhyb3VnaChkdWNrVHlwZWRQYXNzVGhyb3VnaFRyYW5zZm9y
bSgpKTsKLQotICByZXR1cm4gcmVhZGFibGVTdHJlYW1Ub0FycmF5KHJlYWRhYmxlRW5kKS50aGVu
KGNodW5rcyA9PgotICAgIGFzc2VydF9hcnJheV9lcXVhbHMoY2h1bmtzLCBbMSwgMiwgMywgNCwg
NV0pLCAnY2h1bmtzIHNob3VsZCBtYXRjaCcpOwotfSwgJ1BpcGluZyB0aHJvdWdoIGEgZHVjay10
eXBlZCBwYXNzLXRocm91Z2ggdHJhbnNmb3JtIHN0cmVhbSBzaG91bGQgd29yaycpOwotCi1wcm9t
aXNlX3Rlc3QoKCkgPT4gewotICBjb25zdCB0cmFuc2Zvcm0gPSB7Ci0gICAgd3JpdGFibGU6IG5l
dyBXcml0YWJsZVN0cmVhbSh7Ci0gICAgICBzdGFydChjKSB7Ci0gICAgICAgIGMuZXJyb3IobmV3
IEVycm9yKCd0aGlzIHJlamVjdGlvbiBzaG91bGQgbm90IGJlIHJlcG9ydGVkIGFzIHVuaGFuZGxl
ZCcpKTsKLSAgICAgIH0KLSAgICB9KSwKLSAgICByZWFkYWJsZTogbmV3IFJlYWRhYmxlU3RyZWFt
KCkKLSAgfTsKLQotICBzZXF1ZW50aWFsUmVhZGFibGVTdHJlYW0oNSkucGlwZVRocm91Z2godHJh
bnNmb3JtKTsKLQotICAvLyBUaGUgdGVzdCBoYXJuZXNzIHNob3VsZCBjb21wbGFpbiBhYm91dCB1
bmhhbmRsZWQgcmVqZWN0aW9ucyBieSB0aGVuLgotICByZXR1cm4gZmx1c2hBc3luY0V2ZW50cygp
OwotCi19LCAnUGlwaW5nIHRocm91Z2ggYSB0cmFuc2Zvcm0gZXJyb3JlZCBvbiB0aGUgd3JpdGFi
bGUgZW5kIGRvZXMgbm90IGNhdXNlIGFuIHVuaGFuZGxlZCBwcm9taXNlIHJlamVjdGlvbicpOwot
Ci10ZXN0KCgpID0+IHsKLSAgbGV0IGNhbGxlZFdpdGhBcmdzOwotICBjb25zdCBkdW1teSA9IHsK
LSAgICBwaXBlVG8oLi4uYXJncykgewotICAgICAgY2FsbGVkV2l0aEFyZ3MgPSBhcmdzOwotCi0g
ICAgICAvLyBEb2VzIG5vdCByZXR1cm4gYW55dGhpbmcsIHRlc3RpbmcgdGhlIHNwZWMncyBndWFy
ZCBhZ2FpbnN0IHRyeWluZyB0byBtYXJrIFtbUHJvbWlzZUlzSGFuZGxlZF1dIG9uIHVuZGVmaW5l
ZC4KLSAgICB9Ci0gIH07Ci0KLSAgY29uc3QgZmFrZVdyaXRhYmxlID0geyBmYWtlOiAnd3JpdGFi
bGUnIH07Ci0gIGNvbnN0IGZha2VSZWFkYWJsZSA9IHsgZmFrZTogJ3JlYWRhYmxlJyB9OwotICBj
b25zdCBhcmcyID0geyBhcmc6ICdhcmcyJyB9OwotICBjb25zdCBhcmczID0geyBhcmc6ICdhcmcz
JyB9OwotICBjb25zdCByZXN1bHQgPQotICAgIFJlYWRhYmxlU3RyZWFtLnByb3RvdHlwZS5waXBl
VGhyb3VnaC5jYWxsKGR1bW15LCB7IHdyaXRhYmxlOiBmYWtlV3JpdGFibGUsIHJlYWRhYmxlOiBm
YWtlUmVhZGFibGUgfSwgYXJnMiwgYXJnMyk7Ci0KLSAgYXNzZXJ0X2FycmF5X2VxdWFscyhjYWxs
ZWRXaXRoQXJncywgW2Zha2VXcml0YWJsZSwgYXJnMl0sCi0gICAgJ1RoZSB0aGlzIHZhbHVlXCdz
IHBpcGVUbyBtZXRob2Qgc2hvdWxkIGJlIGNhbGxlZCB3aXRoIHRoZSBhcHByb3ByaWF0ZSBhcmd1
bWVudHMnKTsKLSAgYXNzZXJ0X2VxdWFscyhyZXN1bHQsIGZha2VSZWFkYWJsZSwgJ3JldHVybiB2
YWx1ZSBzaG91bGQgYmUgdGhlIHBhc3NlZCByZWFkYWJsZSBwcm9wZXJ0eScpOwotCi19LCAncGlw
ZVRocm91Z2ggZ2VuZXJpY2FsbHkgY2FsbHMgcGlwZVRvIHdpdGggdGhlIGFwcHJvcHJpYXRlIGFy
Z3MnKTsKLQotdGVzdCgoKSA9PiB7Ci0gIGNvbnN0IGR1bW15ID0gewotICAgIHBpcGVUbygpIHsK
LSAgICAgIHJldHVybiB7IG5vdDogJ2EgcHJvbWlzZScgfTsKLSAgICB9Ci0gIH07Ci0KLSAgUmVh
ZGFibGVTdHJlYW0ucHJvdG90eXBlLnBpcGVUaHJvdWdoLmNhbGwoZHVtbXksIHVuaW50ZXJlc3Rp
bmdSZWFkYWJsZVdyaXRhYmxlUGFpcigpKTsKLQotICAvLyBUZXN0IHBhc3NlcyBpZiB0aGlzIGRv
ZXNuJ3QgdGhyb3cgb3IgY3Jhc2guCi0KLX0sICdwaXBlVGhyb3VnaCBjYW4gaGFuZGxlIGNhbGxp
bmcgYSBwaXBlVG8gdGhhdCByZXR1cm5zIGEgbm9uLXByb21pc2Ugb2JqZWN0Jyk7Ci0KLXRlc3Qo
KCkgPT4gewotICBjb25zdCBkdW1teSA9IHsKLSAgICBwaXBlVG8oKSB7Ci0gICAgICByZXR1cm4g
ewotICAgICAgICB0aGVuKCkge30sCi0gICAgICAgIHRoaXM6ICdpcyBub3QgYSByZWFsIHByb21p
c2UnCi0gICAgICB9OwotICAgIH0KLSAgfTsKLQotICBSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUu
cGlwZVRocm91Z2guY2FsbChkdW1teSwgdW5pbnRlcmVzdGluZ1JlYWRhYmxlV3JpdGFibGVQYWly
KCkpOwotCi0gIC8vIFRlc3QgcGFzc2VzIGlmIHRoaXMgZG9lc24ndCB0aHJvdyBvciBjcmFzaC4K
LQotfSwgJ3BpcGVUaHJvdWdoIGNhbiBoYW5kbGUgY2FsbGluZyBhIHBpcGVUbyB0aGF0IHJldHVy
bnMgYSBub24tcHJvbWlzZSB0aGVuYWJsZSBvYmplY3QnKTsKLQotcHJvbWlzZV90ZXN0KCgpID0+
IHsKLSAgY29uc3QgZHVtbXkgPSB7Ci0gICAgcGlwZVRvKCkgewotICAgICAgcmV0dXJuIFByb21p
c2UucmVqZWN0KG5ldyBFcnJvcigndGhpcyByZWplY3Rpb24gc2hvdWxkIG5vdCBiZSByZXBvcnRl
ZCBhcyB1bmhhbmRsZWQnKSk7Ci0gICAgfQotICB9OwotCi0gIFJlYWRhYmxlU3RyZWFtLnByb3Rv
dHlwZS5waXBlVGhyb3VnaC5jYWxsKGR1bW15LCB1bmludGVyZXN0aW5nUmVhZGFibGVXcml0YWJs
ZVBhaXIoKSk7Ci0KLSAgLy8gVGhlIHRlc3QgaGFybmVzcyBzaG91bGQgY29tcGxhaW4gYWJvdXQg
dW5oYW5kbGVkIHJlamVjdGlvbnMgYnkgdGhlbi4KLSAgcmV0dXJuIGZsdXNoQXN5bmNFdmVudHMo
KTsKLQotfSwgJ3BpcGVUaHJvdWdoIHNob3VsZCBtYXJrIGEgcmVhbCBwcm9taXNlIGZyb20gYSBm
YWtlIHJlYWRhYmxlIGFzIGhhbmRsZWQnKTsKLQotdGVzdCgoKSA9PiB7Ci0gIGxldCB0aGVuQ2Fs
bGVkID0gZmFsc2U7Ci0gIGxldCBjYXRjaENhbGxlZCA9IGZhbHNlOwotICBjb25zdCBkdW1teSA9
IHsKLSAgICBwaXBlVG8oKSB7Ci0gICAgICBjb25zdCBmYWtlUHJvbWlzZSA9IE9iamVjdC5jcmVh
dGUoUHJvbWlzZS5wcm90b3R5cGUpOwotICAgICAgZmFrZVByb21pc2UudGhlbiA9ICgpID0+IHsK
LSAgICAgICAgdGhlbkNhbGxlZCA9IHRydWU7Ci0gICAgICB9OwotICAgICAgZmFrZVByb21pc2Uu
Y2F0Y2ggPSAoKSA9PiB7Ci0gICAgICAgIGNhdGNoQ2FsbGVkID0gdHJ1ZTsKLSAgICAgIH07Ci0g
ICAgICBhc3NlcnRfdHJ1ZShmYWtlUHJvbWlzZSBpbnN0YW5jZW9mIFByb21pc2UsICdmYWtlUHJv
bWlzZSBmb29scyBpbnN0YW5jZW9mJyk7Ci0gICAgICByZXR1cm4gZmFrZVByb21pc2U7Ci0gICAg
fQotICB9OwotCi0gIC8vIEFuIGluY29ycmVjdCBpbXBsZW1lbnRhdGlvbiB3aGljaCB1c2VzIGFu
IGludGVybmFsIG1ldGhvZCB0byBtYXJrIHRoZSBwcm9taXNlIGFzIGhhbmRsZWQgd2lsbCB0aHJv
dyBvciBjcmFzaCBoZXJlLgotICBSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUucGlwZVRocm91Z2gu
Y2FsbChkdW1teSwgdW5pbnRlcmVzdGluZ1JlYWRhYmxlV3JpdGFibGVQYWlyKCkpOwotCi0gIC8v
IEFuIGluY29ycmVjdCBpbXBsZW1lbnRhdGlvbiB0aGF0IHRyaWVzIHRvIG1hcmsgdGhlIHByb21p
c2UgYXMgaGFuZGxlZCBieSBjYWxsaW5nIC50aGVuKCkgb3IgLmNhdGNoKCkgb24gdGhlIG9iamVj
dAotICAvLyB3aWxsIGZhaWwgdGhlc2UgdGVzdHMuCi0gIGFzc2VydF9mYWxzZSh0aGVuQ2FsbGVk
LCAndGhlbiBzaG91bGQgbm90IGJlIGNhbGxlZCcpOwotICBhc3NlcnRfZmFsc2UoY2F0Y2hDYWxs
ZWQsICdjYXRjaCBzaG91bGQgbm90IGJlIGNhbGxlZCcpOwotfSwgJ3BpcGVUaHJvdWdoIHNob3Vs
ZCBub3QgYmUgZm9vbGVkIGJ5IGFuIG9iamVjdCB3aG9zZSBpbnN0YW5jZW9mIFByb21pc2UgcmV0
dXJucyB0cnVlJyk7Ci0KLXRlc3QoKCkgPT4gewotICBjb25zdCBwYWlycyA9IFsKLSAgICB7fSwK
LSAgICB7IHJlYWRhYmxlOiB1bmRlZmluZWQsIHdyaXRhYmxlOiB1bmRlZmluZWQgfSwKLSAgICB7
IHJlYWRhYmxlOiAncmVhZGFibGUnIH0sCi0gICAgeyByZWFkYWJsZTogJ3JlYWRhYmxlJywgd3Jp
dGFibGU6IHVuZGVmaW5lZCB9LAotICAgIHsgd3JpdGFibGU6ICd3cml0YWJsZScgfSwKLSAgICB7
IHJlYWRhYmxlOiB1bmRlZmluZWQsIHdyaXRhYmxlOiAnd3JpdGFibGUnIH0KLSAgXTsKLSAgZm9y
IChsZXQgaSA9IDA7IGkgPCBwYWlycy5sZW5ndGg7ICsraSkgewotICAgIGNvbnN0IHBhaXIgPSBw
YWlyc1tpXTsKLSAgICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSgpOwotICAgIGFzc2Vy
dF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBycy5waXBlVGhyb3VnaChwYWlyKSwKLSAg
ICAgICAgICAgICAgICAgIGBwaXBlVGhyb3VnaCBzaG91bGQgdGhyb3cgZm9yIGFyZ3VtZW50ICR7
SlNPTi5zdHJpbmdpZnkocGFpcil9IChpbmRleCAke2l9KTtgKTsKLSAgfQotfSwgJ3VuZGVmaW5l
ZCByZWFkYWJsZSBvciB3cml0YWJsZSBhcmd1bWVudHMgc2hvdWxkIGNhdXNlIHBpcGVUaHJvdWdo
IHRvIHRocm93Jyk7Ci0KLXRlc3QoKCkgPT4gewotICBjb25zdCBpbnZhbGlkQXJndW1lbnRzID0g
W251bGwsIDAsIE5hTiwgJycsIFtdLCB7fSwgZmFsc2UsICgpID0+IHt9XTsKLSAgZm9yIChjb25z
dCBhcmcgb2YgaW52YWxpZEFyZ3VtZW50cykgewotICAgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxl
U3RyZWFtKCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhhcmcsIHJzLnBpcGVUaHJvdWdoKHsgd3JpdGFi
bGU6IG5ldyBXcml0YWJsZVN0cmVhbSgpLCByZWFkYWJsZTogYXJnIH0pLAotICAgICAgICAgICAg
ICAgICAgJ3BpcGVUaHJvdWdoKCkgc2hvdWxkIG5vdCB0aHJvdyBmb3IgcmVhZGFibGU6ICcgKyBK
U09OLnN0cmluZ2lmeShhcmcpKTsKLSAgICBjb25zdCByczIgPSBuZXcgUmVhZGFibGVTdHJlYW0o
KTsKLSAgICBhc3NlcnRfZXF1YWxzKHJzMiwgcnMucGlwZVRocm91Z2goeyB3cml0YWJsZTogYXJn
LCByZWFkYWJsZTogcnMyIH0pLAotICAgICAgICAgICAgICAgICAgJ3BpcGVUaHJvdWdoKCkgc2hv
dWxkIG5vdCB0aHJvdyBmb3Igd3JpdGFibGU6ICcgKyBKU09OLnN0cmluZ2lmeShhcmcpKTsKLSAg
fQotfSwgJ2ludmFsaWQgYnV0IG5vdCB1bmRlZmluZWQgYXJndW1lbnRzIHNob3VsZCBub3QgY2F1
c2UgcGlwZVRocm91Z2ggdG8gdGhyb3cnKTsKLQotdGVzdCgoKSA9PiB7Ci0KLSAgY29uc3QgdGhp
c1ZhbHVlID0gewotICAgIHBpcGVUbygpIHsKLSAgICAgIGFzc2VydF91bnJlYWNoZWQoJ3BpcGVU
byBzaG91bGQgbm90IGJlIGNhbGxlZCcpOwotICAgIH0KLSAgfTsKLQotICBtZXRob2RUaHJvd3Mo
UmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLCAncGlwZVRocm91Z2gnLCB0aGlzVmFsdWUsIFt1bmRl
ZmluZWQsIHt9XSk7Ci0gIG1ldGhvZFRocm93cyhSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUsICdw
aXBlVGhyb3VnaCcsIHRoaXNWYWx1ZSwgW251bGwsIHt9XSk7Ci0KLX0sICdwaXBlVGhyb3VnaCBz
aG91bGQgdGhyb3cgd2hlbiBpdHMgZmlyc3QgYXJndW1lbnQgaXMgbm90IGNvbnZlcnRpYmxlIHRv
IGFuIG9iamVjdCcpOwotCi10ZXN0KCgpID0+IHsKLQotICBjb25zdCBhcmdzID0gW3sgcmVhZGFi
bGU6IHt9LCB3cml0YWJsZToge30gfSwge31dOwotCi0gIG1ldGhvZFRocm93cyhSZWFkYWJsZVN0
cmVhbS5wcm90b3R5cGUsICdwaXBlVGhyb3VnaCcsIHVuZGVmaW5lZCwgYXJncyk7Ci0gIG1ldGhv
ZFRocm93cyhSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUsICdwaXBlVGhyb3VnaCcsIG51bGwsIGFy
Z3MpOwotICBtZXRob2RUaHJvd3MoUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLCAncGlwZVRocm91
Z2gnLCAxLCBhcmdzKTsKLSAgbWV0aG9kVGhyb3dzKFJlYWRhYmxlU3RyZWFtLnByb3RvdHlwZSwg
J3BpcGVUaHJvdWdoJywgeyBwaXBlVG86ICd0ZXN0JyB9LCBhcmdzKTsKLQotfSwgJ3BpcGVUaHJv
dWdoIHNob3VsZCB0aHJvdyB3aGVuICJ0aGlzIiBoYXMgbm8gcGlwZVRvIG1ldGhvZCcpOwotCi10
ZXN0KCgpID0+IHsKLSAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoJ3BvdGF0bycpOwotCi0gIGNv
bnN0IHRocm93aW5nUGlwZVRvID0gewotICAgIGdldCBwaXBlVG8oKSB7Ci0gICAgICB0aHJvdyBl
cnJvcjsKLSAgICB9Ci0gIH07Ci0gIGFzc2VydF90aHJvd3MoZXJyb3IsCi0gICAgKCkgPT4gUmVh
ZGFibGVTdHJlYW0ucHJvdG90eXBlLnBpcGVUaHJvdWdoLmNhbGwodGhyb3dpbmdQaXBlVG8sIHsg
cmVhZGFibGU6IHsgfSwgd3JpdGFibGU6IHsgfSB9LCB7fSksCi0gICAgJ3BpcGVUaHJvdWdoIHNo
b3VsZCByZXRocm93IHRoZSBlcnJvciB0aHJvd24gYnkgcGlwZVRvJyk7Ci0KLSAgY29uc3QgdGhp
c1ZhbHVlID0gewotICAgIHBpcGVUbygpIHsKLSAgICAgIGFzc2VydF91bnJlYWNoZWQoJ3BpcGVU
byBzaG91bGQgbm90IGJlIGNhbGxlZCcpOwotICAgIH0KLSAgfTsKLQotICBjb25zdCB0aHJvd2lu
Z1dyaXRhYmxlID0gewotICAgIHJlYWRhYmxlOiB7fSwKLSAgICBnZXQgd3JpdGFibGUoKSB7Ci0g
ICAgICB0aHJvdyBlcnJvcjsKLSAgICB9Ci0gIH07Ci0gIGFzc2VydF90aHJvd3MoZXJyb3IsCi0g
ICAgKCkgPT4gUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLnBpcGVUaHJvdWdoLmNhbGwodGhpc1Zh
bHVlLCB0aHJvd2luZ1dyaXRhYmxlLCB7fSksCi0gICAgJ3BpcGVUaHJvdWdoIHNob3VsZCByZXRo
cm93IHRoZSBlcnJvciB0aHJvd24gYnkgdGhlIHdyaXRhYmxlIGdldHRlcicpOwotCi0gIGNvbnN0
IHRocm93aW5nUmVhZGFibGUgPSB7Ci0gICAgZ2V0IHJlYWRhYmxlKCkgewotICAgICAgdGhyb3cg
ZXJyb3I7Ci0gICAgfSwKLSAgICB3cml0YWJsZToge30KLSAgfTsKLSAgYXNzZXJ0X3Rocm93cyhl
cnJvciwKLSAgICAoKSA9PiBSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUucGlwZVRocm91Z2guY2Fs
bCh0aGlzVmFsdWUsIHRocm93aW5nUmVhZGFibGUsIHt9KSwKLSAgICAncGlwZVRocm91Z2ggc2hv
dWxkIHJldGhyb3cgdGhlIGVycm9yIHRocm93biBieSB0aGUgcmVhZGFibGUgZ2V0dGVyJyk7Ci0K
LX0sICdwaXBlVGhyb3VnaCBzaG91bGQgcmV0aHJvdyBlcnJvcnMgZnJvbSBhY2Nlc3NpbmcgcGlw
ZVRvLCByZWFkYWJsZSwgb3Igd3JpdGFibGUnKTsKLQotdGVzdCgoKSA9PiB7Ci0KLSAgbGV0IGNv
dW50ID0gMDsKLSAgY29uc3QgdGhpc1ZhbHVlID0gewotICAgIHBpcGVUbygpIHsKLSAgICAgICsr
Y291bnQ7Ci0gICAgfQotICB9OwotCi0gIFJlYWRhYmxlU3RyZWFtLnByb3RvdHlwZS5waXBlVGhy
b3VnaC5jYWxsKHRoaXNWYWx1ZSwgeyByZWFkYWJsZToge30sIHdyaXRhYmxlOiB7fSB9KTsKLQot
ICBhc3NlcnRfZXF1YWxzKGNvdW50LCAxLCAncGlwZVRvIHdhcyBjYWxsZWQgb25jZScpOwotCi19
LCAncGlwZVRocm91Z2ggc2hvdWxkIHdvcmsgd2l0aCBubyBvcHRpb25zIGFyZ3VtZW50Jyk7Ci0K
LWRvbmUoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvcGlwZS10aHJvdWdoLnNlcnZpY2V3b3JrZXIuaHR0cHMt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL3BpcGluZy9waXBlLXRocm91Z2guc2VydmljZXdvcmtlci5odHRwcy1leHBlY3Rl
ZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFhMTM0ZDU5NTA5Y2NjNTY2Mjk3
YjY0ZTA3ZjA2NGJkNzQzYjA4ODQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
dHJlYW1zL3BpcGluZy9waXBlLXRocm91Z2guc2VydmljZXdvcmtlci5odHRwcy1leHBlY3RlZC50
eHQKKysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCwwIEBACi0KLVBBU1MgU2VydmljZSB3b3JrZXIg
dGVzdCBzZXR1cCAKLUZBSUwgUGlwaW5nIHRocm91Z2ggYSBkdWNrLXR5cGVkIHBhc3MtdGhyb3Vn
aCB0cmFuc2Zvcm0gc3RyZWFtIHNob3VsZCB3b3JrIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRh
YmxlU3RyZWFtCi1GQUlMIFBpcGluZyB0aHJvdWdoIGEgdHJhbnNmb3JtIGVycm9yZWQgb24gdGhl
IHdyaXRhYmxlIGVuZCBkb2VzIG5vdCBjYXVzZSBhbiB1bmhhbmRsZWQgcHJvbWlzZSByZWplY3Rp
b24gQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLVBBU1MgcGlwZVRocm91Z2gg
Z2VuZXJpY2FsbHkgY2FsbHMgcGlwZVRvIHdpdGggdGhlIGFwcHJvcHJpYXRlIGFyZ3MgCi1GQUlM
IHBpcGVUaHJvdWdoIGNhbiBoYW5kbGUgY2FsbGluZyBhIHBpcGVUbyB0aGF0IHJldHVybnMgYSBu
b24tcHJvbWlzZSBvYmplY3QgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZB
SUwgcGlwZVRocm91Z2ggY2FuIGhhbmRsZSBjYWxsaW5nIGEgcGlwZVRvIHRoYXQgcmV0dXJucyBh
IG5vbi1wcm9taXNlIHRoZW5hYmxlIG9iamVjdCBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJs
ZVN0cmVhbQotRkFJTCBwaXBlVGhyb3VnaCBzaG91bGQgbWFyayBhIHJlYWwgcHJvbWlzZSBmcm9t
IGEgZmFrZSByZWFkYWJsZSBhcyBoYW5kbGVkIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxl
U3RyZWFtCi1GQUlMIHBpcGVUaHJvdWdoIHNob3VsZCBub3QgYmUgZm9vbGVkIGJ5IGFuIG9iamVj
dCB3aG9zZSBpbnN0YW5jZW9mIFByb21pc2UgcmV0dXJucyB0cnVlIENhbid0IGZpbmQgdmFyaWFi
bGU6IFdyaXRhYmxlU3RyZWFtCi1QQVNTIHVuZGVmaW5lZCByZWFkYWJsZSBvciB3cml0YWJsZSBh
cmd1bWVudHMgc2hvdWxkIGNhdXNlIHBpcGVUaHJvdWdoIHRvIHRocm93IAotRkFJTCBpbnZhbGlk
IGJ1dCBub3QgdW5kZWZpbmVkIGFyZ3VtZW50cyBzaG91bGQgbm90IGNhdXNlIHBpcGVUaHJvdWdo
IHRvIHRocm93IENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1QQVNTIHBpcGVU
aHJvdWdoIHNob3VsZCB0aHJvdyB3aGVuIGl0cyBmaXJzdCBhcmd1bWVudCBpcyBub3QgY29udmVy
dGlibGUgdG8gYW4gb2JqZWN0IAotUEFTUyBwaXBlVGhyb3VnaCBzaG91bGQgdGhyb3cgd2hlbiAi
dGhpcyIgaGFzIG5vIHBpcGVUbyBtZXRob2QgCi1QQVNTIHBpcGVUaHJvdWdoIHNob3VsZCByZXRo
cm93IGVycm9ycyBmcm9tIGFjY2Vzc2luZyBwaXBlVG8sIHJlYWRhYmxlLCBvciB3cml0YWJsZSAK
LVBBU1MgcGlwZVRocm91Z2ggc2hvdWxkIHdvcmsgd2l0aCBubyBvcHRpb25zIGFyZ3VtZW50IAot
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMvcGlwaW5nL3BpcGUtdGhyb3VnaC5zZXJ2aWNld29ya2VyLmh0dHBzLmh0bWwgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5n
L3BpcGUtdGhyb3VnaC5zZXJ2aWNld29ya2VyLmh0dHBzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDIxMjYzYTMwODNmMDRmMjYxNGJkOTZiY2VkY2RkMTRiMmNmNjEyZWUuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9waXBlLXRocm91
Z2guc2VydmljZXdvcmtlci5odHRwcy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBA
QAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08dGl0bGU+cGlwZS10
aHJvdWdoLmpzIHNlcnZpY2Ugd29ya2VyIHdyYXBwZXIgZmlsZTwvdGl0bGU+Ci0KLTxzY3JpcHQg
c3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIv
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIv
c2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL3Jlc291cmNlcy90ZXN0LWhlbHBlcnMuc3Vi
LmpzIj48L3NjcmlwdD4KLQotPHNjcmlwdD4KLSd1c2Ugc3RyaWN0JzsKLXNlcnZpY2Vfd29ya2Vy
X3Rlc3QoJ3BpcGUtdGhyb3VnaC5qcycsICdTZXJ2aWNlIHdvcmtlciB0ZXN0IHNldHVwJyk7Ci08
L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvcGlwZS10aHJvdWdoLnNoYXJlZHdvcmtlci1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvcGlwaW5nL3BpcGUtdGhyb3VnaC5zaGFyZWR3b3JrZXItZXhwZWN0ZWQudHh0CmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwOWQ1ZDI1MDlkNzg0N2U4Y2Q2ZmU2NjA2YWE2MGNkZDMz
YWE0NzRlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcv
cGlwZS10aHJvdWdoLnNoYXJlZHdvcmtlci1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAt
MSw1ICswLDAgQEAKLUNPTlNPTEUgTUVTU0FHRTogUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQg
dmFyaWFibGU6IFNoYXJlZFdvcmtlcgotCi1IYXJuZXNzIEVycm9yIChGQUlMKSwgbWVzc2FnZSA9
IFJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBTaGFyZWRXb3JrZXIKLQotCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMvcGlwaW5nL3BpcGUtdGhyb3VnaC5zaGFyZWR3b3JrZXIuaHRtbCBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvcGlwZS10aHJv
dWdoLnNoYXJlZHdvcmtlci5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MTYw
M2VmMGI3MDI2NzFiYWY5NzQ5MWM2Nzk3YmE2MDYzMzM4ZjBkLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvcGlwZS10aHJvdWdoLnNoYXJlZHdvcmtlci5o
dG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08bWV0
YSBjaGFyc2V0PSJ1dGYtOCI+Ci08dGl0bGU+cGlwZS10aHJvdWdoLmpzIHNoYXJlZCB3b3JrZXIg
d3JhcHBlciBmaWxlPC90aXRsZT4KLQotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5l
c3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBv
cnQuanMiPjwvc2NyaXB0PgotCi08c2NyaXB0PgotJ3VzZSBzdHJpY3QnOwotZmV0Y2hfdGVzdHNf
ZnJvbV93b3JrZXIobmV3IFNoYXJlZFdvcmtlcigncGlwZS10aHJvdWdoLmpzJykpOwotPC9zY3Jp
cHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3N0cmVhbXMvcGlwaW5nL3RoZW4taW50ZXJjZXB0aW9uLmFueS1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5n
L3RoZW4taW50ZXJjZXB0aW9uLmFueS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzhhNmNhYWQz
MjY5YjVmNTEyODhhYWMwZWU3ZDZmMWY4MzRkNDYyZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvdGhl
bi1pbnRlcmNlcHRpb24uYW55LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDcgQEAKK0NPTlNPTEUg
TUVTU0FHRTogVW5oYW5kbGVkIFByb21pc2UgUmVqZWN0aW9uOiBUeXBlRXJyb3I6IEF0dGVtcHRl
ZCB0byBhc3NpZ24gdG8gcmVhZG9ubHkgcHJvcGVydHkuCisKK0hhcm5lc3MgRXJyb3IgKEZBSUwp
LCBtZXNzYWdlID0gVW5oYW5kbGVkIHJlamVjdGlvbjogQXR0ZW1wdGVkIHRvIGFzc2lnbiB0byBy
ZWFkb25seSBwcm9wZXJ0eS4KKworVElNRU9VVCBwaXBpbmcgc2hvdWxkIG5vdCBiZSBvYnNlcnZh
YmxlIFRlc3QgdGltZWQgb3V0CitOT1RSVU4gdGVlIHNob3VsZCBub3QgYmUgb2JzZXJ2YWJsZSAK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL3BpcGluZy90aGVuLWludGVyY2VwdGlvbi5hbnkuaHRtbCBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvdGhlbi1pbnRl
cmNlcHRpb24uYW55Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjM4MjkxMzUyOGU2OTNiM2E1ZDU2YzY2MGE0
NTA2MDk4MGI1NDhjMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvdGhlbi1pbnRlcmNlcHRpb24uYW55
Lmh0bWwKQEAgLTAsMCArMSBAQAorPCEtLSBUaGlzIGZpbGUgaXMgcmVxdWlyZWQgZm9yIFdlYktp
dCB0ZXN0IGluZnJhc3RydWN0dXJlIHRvIHJ1biB0aGUgdGVtcGxhdGVkIHRlc3QgLS0+ClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy90aGVuLWludGVyY2VwdGlvbi5h
bnkuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvcGlwaW5nL3RoZW4taW50ZXJjZXB0aW9uLmFueS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NDhiYjVhZmZk
ODcwODAwNzdjMjcyOWQ5MTk0M2UyODNmM2UwYzhlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy90aGVu
LWludGVyY2VwdGlvbi5hbnkuanMKQEAgLTAsMCArMSw2MiBAQAorLy8gTUVUQTogZ2xvYmFsPXdp
bmRvdyx3b3JrZXIsanNzaGVsbAorLy8gTUVUQTogc2NyaXB0PS4uL3Jlc291cmNlcy90ZXN0LXV0
aWxzLmpzCisvLyBNRVRBOiBzY3JpcHQ9Li4vcmVzb3VyY2VzL3JlY29yZGluZy1zdHJlYW1zLmpz
CisndXNlIHN0cmljdCc7CisKK2Z1bmN0aW9uIGludGVyY2VwdFRoZW4oKSB7CisgIGNvbnN0IGlu
dGVyY2VwdGVkID0gW107CisgIGNvbnN0IGNhbGxDb3VudCA9IDA7CisgIE9iamVjdC5wcm90b3R5
cGUudGhlbiA9IGZ1bmN0aW9uKHJlc29sdmVyKSB7CisgICAgaWYgKCF0aGlzLmRvbmUpIHsKKyAg
ICAgIGludGVyY2VwdGVkLnB1c2godGhpcy52YWx1ZSk7CisgICAgfQorICAgIGNvbnN0IHJldHZh
bCA9IE9iamVjdC5jcmVhdGUobnVsbCk7CisgICAgcmV0dmFsLmRvbmUgPSArK2NhbGxDb3VudCA9
PT0gMzsKKyAgICByZXR2YWwudmFsdWUgPSBjYWxsQ291bnQ7CisgICAgcmVzb2x2ZXIocmV0dmFs
KTsKKyAgICBpZiAocmV0dmFsLmRvbmUpIHsKKyAgICAgIGRlbGV0ZSBPYmplY3QucHJvdG90eXBl
LnRoZW47CisgICAgfQorICB9CisgIHJldHVybiBpbnRlcmNlcHRlZDsKK30KKworcHJvbWlzZV90
ZXN0KGFzeW5jICgpID0+IHsKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAg
IHN0YXJ0KGNvbnRyb2xsZXIpIHsKKyAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYScpOworICAg
ICAgY29udHJvbGxlci5jbG9zZSgpOworICAgIH0KKyAgfSk7CisgIGNvbnN0IHdzID0gcmVjb3Jk
aW5nV3JpdGFibGVTdHJlYW0oKTsKKworICBjb25zdCBpbnRlcmNlcHRlZCA9IGludGVyY2VwdFRo
ZW4oKTsKKworICBhd2FpdCBycy5waXBlVG8od3MpOworICBkZWxldGUgT2JqZWN0LnByb3RvdHlw
ZS50aGVuOworCisKKyAgYXNzZXJ0X2FycmF5X2VxdWFscyhpbnRlcmNlcHRlZCwgW10sICdub3Ro
aW5nIHNob3VsZCBoYXZlIGJlZW4gaW50ZXJjZXB0ZWQnKTsKKyAgYXNzZXJ0X2FycmF5X2VxdWFs
cyh3cy5ldmVudHMsIFsnd3JpdGUnLCAnYScsICdjbG9zZSddLCAnd3JpdHRlbiBjaHVuayBzaG91
bGQgYmUgImEiJyk7Cit9LCAncGlwaW5nIHNob3VsZCBub3QgYmUgb2JzZXJ2YWJsZScpOworCitw
cm9taXNlX3Rlc3QoYXN5bmMgKCkgPT4geworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVh
bSh7CisgICAgc3RhcnQoY29udHJvbGxlcikgeworICAgICAgY29udHJvbGxlci5lbnF1ZXVlKCdh
Jyk7CisgICAgICBjb250cm9sbGVyLmNsb3NlKCk7CisgICAgfQorICB9KTsKKyAgY29uc3Qgd3Mg
PSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSgpOworCisgIGNvbnN0IFsgYnJhbmNoMSwgYnJhbmNo
MiBdID0gcnMudGVlKCk7CisKKyAgY29uc3QgaW50ZXJjZXB0ZWQgPSBpbnRlcmNlcHRUaGVuKCk7
CisKKyAgYXdhaXQgYnJhbmNoMS5waXBlVG8od3MpOworICBkZWxldGUgT2JqZWN0LnByb3RvdHlw
ZS50aGVuOworICBicmFuY2gyLmNhbmNlbCgpOworCisgIGFzc2VydF9hcnJheV9lcXVhbHMoaW50
ZXJjZXB0ZWQsIFtdLCAnbm90aGluZyBzaG91bGQgaGF2ZSBiZWVuIGludGVyY2VwdGVkJyk7Cisg
IGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ3dyaXRlJywgJ2EnLCAnY2xvc2UnXSwg
J3dyaXR0ZW4gY2h1bmsgc2hvdWxkIGJlICJhIicpOworfSwgJ3RlZSBzaG91bGQgbm90IGJlIG9i
c2VydmFibGUnKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvdGhlbi1pbnRlcmNlcHRpb24uYW55Lndvcmtlci1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMvcGlwaW5nL3RoZW4taW50ZXJjZXB0aW9uLmFueS53b3JrZXItZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjJmZmZmM2JiYzY5OWQ5YTg2YjM3NWZkMjlmYjRjYzBlMzNhYjUzNDYKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3N0cmVhbXMvcGlwaW5nL3RoZW4taW50ZXJjZXB0aW9uLmFueS53b3JrZXItZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsNCBAQAorCitGQUlMIHBpcGluZyBzaG91bGQgbm90IGJlIG9ic2VydmFi
bGUgcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAi
UmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtIgorRkFJ
TCB0ZWUgc2hvdWxkIG5vdCBiZSBvYnNlcnZhYmxlIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJl
amVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZh
cmlhYmxlOiBXcml0YWJsZVN0cmVhbSIKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy90aGVuLWludGVyY2VwdGlv
bi5hbnkud29ya2VyLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMvcGlwaW5nL3RoZW4taW50ZXJjZXB0aW9uLmFueS53b3JrZXIuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4yMzgyOTEzNTI4ZTY5M2IzYTVkNTZjNjYwYTQ1MDYwOTgwYjU0OGMzCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL3BpcGluZy90aGVuLWludGVyY2VwdGlvbi5hbnkud29ya2VyLmh0bWwKQEAgLTAs
MCArMSBAQAorPCEtLSBUaGlzIGZpbGUgaXMgcmVxdWlyZWQgZm9yIFdlYktpdCB0ZXN0IGluZnJh
c3RydWN0dXJlIHRvIHJ1biB0aGUgdGVtcGxhdGVkIHRlc3QgLS0+ClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy90aHJvd2luZy1vcHRpb25zLmFueS1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
cGlwaW5nL3Rocm93aW5nLW9wdGlvbnMuYW55LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNmM1
YzVhNzAyZmZkZmI1NzI3Yjc0NjNiNzlkYThkZjljOTk4OTIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGlu
Zy90aHJvd2luZy1vcHRpb25zLmFueS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyMCBAQAorCitI
YXJuZXNzIEVycm9yIChUSU1FT1VUKSwgbWVzc2FnZSA9IG51bGwKKworRkFJTCBwaXBlVG8gc2hv
dWxkIHN0b3AgYWZ0ZXIgZ2V0dGluZyBwcmV2ZW50QWJvcnQgdGhyb3dzIHByZXZlbnRBYm9ydAor
RkFJTCBwaXBlVGhyb3VnaCBzaG91bGQgc3RvcCBhZnRlciBnZXR0aW5nIHByZXZlbnRBYm9ydCB0
aHJvd3MgYXNzZXJ0X3Rocm93c19qczogcGlwZVRocm91Z2ggc2hvdWxkIHRocm93IGZ1bmN0aW9u
ICIoKSA9PiBuZXcgUmVhZGFibGVTdHJlYW0oKS5waXBlVGhyb3VnaChuZXcgVHJhbnNmb3JtU3Ry
ZWFtKCksIG9wdGlvbnMpIiB0aHJldyBvYmplY3QgIlJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5k
IHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0iICgiUmVmZXJlbmNlRXJyb3IiKSBleHBlY3RlZCBp
bnN0YW5jZSBvZiBmdW5jdGlvbiAiZnVuY3Rpb24gRXJyb3IoKSB7CisgICAgW25hdGl2ZSBjb2Rl
XQorfSIgKCJFcnJvciIpCitGQUlMIHBpcGVUbyBzaG91bGQgc3RvcCBhZnRlciBnZXR0aW5nIHBy
ZXZlbnRDYW5jZWwgdGhyb3dzIHByZXZlbnRDYW5jZWwKK0ZBSUwgcGlwZVRocm91Z2ggc2hvdWxk
IHN0b3AgYWZ0ZXIgZ2V0dGluZyBwcmV2ZW50Q2FuY2VsIHRocm93cyBhc3NlcnRfdGhyb3dzX2pz
OiBwaXBlVGhyb3VnaCBzaG91bGQgdGhyb3cgZnVuY3Rpb24gIigpID0+IG5ldyBSZWFkYWJsZVN0
cmVhbSgpLnBpcGVUaHJvdWdoKG5ldyBUcmFuc2Zvcm1TdHJlYW0oKSwgb3B0aW9ucykiIHRocmV3
IG9iamVjdCAiUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0
cmVhbSIgKCJSZWZlcmVuY2VFcnJvciIpIGV4cGVjdGVkIGluc3RhbmNlIG9mIGZ1bmN0aW9uICJm
dW5jdGlvbiBFcnJvcigpIHsKKyAgICBbbmF0aXZlIGNvZGVdCit9IiAoIkVycm9yIikKK0ZBSUwg
cGlwZVRvIHNob3VsZCBzdG9wIGFmdGVyIGdldHRpbmcgcHJldmVudENsb3NlIHRocm93cyBwcmV2
ZW50Q2xvc2UKK0ZBSUwgcGlwZVRocm91Z2ggc2hvdWxkIHN0b3AgYWZ0ZXIgZ2V0dGluZyBwcmV2
ZW50Q2xvc2UgdGhyb3dzIGFzc2VydF90aHJvd3NfanM6IHBpcGVUaHJvdWdoIHNob3VsZCB0aHJv
dyBmdW5jdGlvbiAiKCkgPT4gbmV3IFJlYWRhYmxlU3RyZWFtKCkucGlwZVRocm91Z2gobmV3IFRy
YW5zZm9ybVN0cmVhbSgpLCBvcHRpb25zKSIgdGhyZXcgb2JqZWN0ICJSZWZlcmVuY2VFcnJvcjog
Q2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtIiAoIlJlZmVyZW5jZUVycm9yIikg
ZXhwZWN0ZWQgaW5zdGFuY2Ugb2YgZnVuY3Rpb24gImZ1bmN0aW9uIEVycm9yKCkgeworICAgIFtu
YXRpdmUgY29kZV0KK30iICgiRXJyb3IiKQorVElNRU9VVCBwaXBlVG8gc2hvdWxkIHN0b3AgYWZ0
ZXIgZ2V0dGluZyBzaWduYWwgdGhyb3dzIFRlc3QgdGltZWQgb3V0CitGQUlMIHBpcGVUaHJvdWdo
IHNob3VsZCBzdG9wIGFmdGVyIGdldHRpbmcgc2lnbmFsIHRocm93cyBhc3NlcnRfdGhyb3dzX2pz
OiBwaXBlVGhyb3VnaCBzaG91bGQgdGhyb3cgZnVuY3Rpb24gIigpID0+IG5ldyBSZWFkYWJsZVN0
cmVhbSgpLnBpcGVUaHJvdWdoKG5ldyBUcmFuc2Zvcm1TdHJlYW0oKSwgb3B0aW9ucykiIHRocmV3
IG9iamVjdCAiUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0
cmVhbSIgKCJSZWZlcmVuY2VFcnJvciIpIGV4cGVjdGVkIGluc3RhbmNlIG9mIGZ1bmN0aW9uICJm
dW5jdGlvbiBFcnJvcigpIHsKKyAgICBbbmF0aXZlIGNvZGVdCit9IiAoIkVycm9yIikKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJl
YW1zL3BpcGluZy90aHJvd2luZy1vcHRpb25zLmFueS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy90aHJvd2luZy1vcHRpb25z
LmFueS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzODI5MTM1MjhlNjkzYjNhNWQ1NmM2NjBhNDUwNjA5ODBi
NTQ4YzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL3Rocm93aW5nLW9wdGlvbnMuYW55Lmh0bWwKQEAg
LTAsMCArMSBAQAorPCEtLSBUaGlzIGZpbGUgaXMgcmVxdWlyZWQgZm9yIFdlYktpdCB0ZXN0IGlu
ZnJhc3RydWN0dXJlIHRvIHJ1biB0aGUgdGVtcGxhdGVkIHRlc3QgLS0+ClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy90aHJvd2luZy1vcHRpb25zLmFueS5qcyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcv
dGhyb3dpbmctb3B0aW9ucy5hbnkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmMxY2YzMjhkYTYxZTYxYTg0Y2Fh
MDFhMzc0MzViZjlmYmM0NmI5YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvdGhyb3dpbmctb3B0aW9u
cy5hbnkuanMKQEAgLTAsMCArMSw2NSBAQAorLy8gTUVUQTogZ2xvYmFsPXdpbmRvdyx3b3JrZXIs
anNzaGVsbAorJ3VzZSBzdHJpY3QnOworCitjbGFzcyBUaHJvd2luZ09wdGlvbnMgeworICBjb25z
dHJ1Y3Rvcih3aGF0U2hvdWxkVGhyb3cpIHsKKyAgICB0aGlzLndoYXRTaG91bGRUaHJvdyA9IHdo
YXRTaG91bGRUaHJvdzsKKyAgICB0aGlzLnRvdWNoZWQgPSBbXTsKKyAgfQorCisgIGdldCBwcmV2
ZW50Q2xvc2UoKSB7CisgICAgdGhpcy5tYXliZVRocm93KCdwcmV2ZW50Q2xvc2UnKTsKKyAgICBy
ZXR1cm4gZmFsc2U7CisgIH0KKworICBnZXQgcHJldmVudEFib3J0KCkgeworICAgIHRoaXMubWF5
YmVUaHJvdygncHJldmVudEFib3J0Jyk7CisgICAgcmV0dXJuIGZhbHNlOworICB9CisKKyAgZ2V0
IHByZXZlbnRDYW5jZWwoKSB7CisgICAgdGhpcy5tYXliZVRocm93KCdwcmV2ZW50Q2FuY2VsJyk7
CisgICAgcmV0dXJuIGZhbHNlOworICB9CisKKyAgZ2V0IHNpZ25hbCgpIHsKKyAgICB0aGlzLm1h
eWJlVGhyb3coJ3NpZ25hbCcpOworICAgIHJldHVybiB1bmRlZmluZWQ7CisgIH0KKworICBtYXli
ZVRocm93KGZvcldoYXQpIHsKKyAgICB0aGlzLnRvdWNoZWQucHVzaChmb3JXaGF0KTsKKyAgICBp
ZiAodGhpcy53aGF0U2hvdWxkVGhyb3cgPT09IGZvcldoYXQpIHsKKyAgICAgIHRocm93IG5ldyBF
cnJvcih0aGlzLndoYXRTaG91bGRUaHJvdyk7CisgICAgfQorICB9Cit9CisKK2NvbnN0IGNoZWNr
T3JkZXIgPSBbJ3ByZXZlbnRBYm9ydCcsICdwcmV2ZW50Q2FuY2VsJywgJ3ByZXZlbnRDbG9zZScs
ICdzaWduYWwnXTsKKworZm9yIChsZXQgaSA9IDA7IGkgPCBjaGVja09yZGVyLmxlbmd0aDsgKytp
KSB7CisgIGNvbnN0IHdoYXRTaG91bGRUaHJvdyA9IGNoZWNrT3JkZXJbaV07CisgIGNvbnN0IHdo
YXRTaG91bGRCZVRvdWNoZWQgPSBjaGVja09yZGVyLnNsaWNlKDAsIGkgKyAxKTsKKworICBwcm9t
aXNlX3Rlc3QodCA9PiB7CisgICAgY29uc3Qgb3B0aW9ucyA9IG5ldyBUaHJvd2luZ09wdGlvbnMo
d2hhdFNob3VsZFRocm93KTsKKyAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2pzKAorICAgICAg
ICAgICAgICAgdCwgRXJyb3IsCisgICAgICAgICAgICAgICBuZXcgUmVhZGFibGVTdHJlYW0oKS5w
aXBlVG8obmV3IFdyaXRhYmxlU3RyZWFtKCksIG9wdGlvbnMpLAorICAgICAgICAgICAgICAgJ3Bp
cGVUbyBzaG91bGQgcmVqZWN0JykKKyAgICAgICAgLnRoZW4oKCkgPT4gYXNzZXJ0X2FycmF5X2Vx
dWFscygKKyAgICAgICAgICAgIG9wdGlvbnMudG91Y2hlZCwgd2hhdFNob3VsZEJlVG91Y2hlZCwK
KyAgICAgICAgICAgICdvcHRpb25zIHNob3VsZCBiZSB0b3VjaGVkIGluIHRoZSByaWdodCBvcmRl
cicpKTsKKyAgfSwgYHBpcGVUbyBzaG91bGQgc3RvcCBhZnRlciBnZXR0aW5nICR7d2hhdFNob3Vs
ZFRocm93fSB0aHJvd3NgKTsKKworICB0ZXN0KCgpID0+IHsKKyAgICBjb25zdCBvcHRpb25zID0g
bmV3IFRocm93aW5nT3B0aW9ucyh3aGF0U2hvdWxkVGhyb3cpOworICAgIGFzc2VydF90aHJvd3Nf
anMoCisgICAgICAgIEVycm9yLAorICAgICAgICAoKSA9PiBuZXcgUmVhZGFibGVTdHJlYW0oKS5w
aXBlVGhyb3VnaChuZXcgVHJhbnNmb3JtU3RyZWFtKCksIG9wdGlvbnMpLAorICAgICAgICAncGlw
ZVRocm91Z2ggc2hvdWxkIHRocm93Jyk7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscygKKyAgICAg
ICAgb3B0aW9ucy50b3VjaGVkLCB3aGF0U2hvdWxkQmVUb3VjaGVkLAorICAgICAgICAnb3B0aW9u
cyBzaG91bGQgYmUgdG91Y2hlZCBpbiB0aGUgcmlnaHQgb3JkZXInKTsKKyAgfSwgYHBpcGVUaHJv
dWdoIHNob3VsZCBzdG9wIGFmdGVyIGdldHRpbmcgJHt3aGF0U2hvdWxkVGhyb3d9IHRocm93c2Ap
OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL3BpcGluZy90aHJvd2luZy1vcHRpb25zLmFueS53b3JrZXItZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
L3BpcGluZy90aHJvd2luZy1vcHRpb25zLmFueS53b3JrZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmUwNTI5MGExNmZhYjkyY2Q1M2U3NjMyNjdkZmUyNTdjZjQ5MTRhZDQKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvcGlwaW5nL3Rocm93aW5nLW9wdGlvbnMuYW55Lndvcmtlci1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSwxOCBAQAorCitGQUlMIHBpcGVUbyBzaG91bGQgc3RvcCBhZnRlciBnZXR0aW5nIHByZXZl
bnRBYm9ydCB0aHJvd3MgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwg
cGlwZVRocm91Z2ggc2hvdWxkIHN0b3AgYWZ0ZXIgZ2V0dGluZyBwcmV2ZW50QWJvcnQgdGhyb3dz
IGFzc2VydF90aHJvd3NfanM6IHBpcGVUaHJvdWdoIHNob3VsZCB0aHJvdyBmdW5jdGlvbiAiKCkg
PT4gbmV3IFJlYWRhYmxlU3RyZWFtKCkucGlwZVRocm91Z2gobmV3IFRyYW5zZm9ybVN0cmVhbSgp
LCBvcHRpb25zKSIgdGhyZXcgb2JqZWN0ICJSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJp
YWJsZTogVHJhbnNmb3JtU3RyZWFtIiAoIlJlZmVyZW5jZUVycm9yIikgZXhwZWN0ZWQgaW5zdGFu
Y2Ugb2YgZnVuY3Rpb24gImZ1bmN0aW9uIEVycm9yKCkgeworICAgIFtuYXRpdmUgY29kZV0KK30i
ICgiRXJyb3IiKQorRkFJTCBwaXBlVG8gc2hvdWxkIHN0b3AgYWZ0ZXIgZ2V0dGluZyBwcmV2ZW50
Q2FuY2VsIHRocm93cyBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBw
aXBlVGhyb3VnaCBzaG91bGQgc3RvcCBhZnRlciBnZXR0aW5nIHByZXZlbnRDYW5jZWwgdGhyb3dz
IGFzc2VydF90aHJvd3NfanM6IHBpcGVUaHJvdWdoIHNob3VsZCB0aHJvdyBmdW5jdGlvbiAiKCkg
PT4gbmV3IFJlYWRhYmxlU3RyZWFtKCkucGlwZVRocm91Z2gobmV3IFRyYW5zZm9ybVN0cmVhbSgp
LCBvcHRpb25zKSIgdGhyZXcgb2JqZWN0ICJSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJp
YWJsZTogVHJhbnNmb3JtU3RyZWFtIiAoIlJlZmVyZW5jZUVycm9yIikgZXhwZWN0ZWQgaW5zdGFu
Y2Ugb2YgZnVuY3Rpb24gImZ1bmN0aW9uIEVycm9yKCkgeworICAgIFtuYXRpdmUgY29kZV0KK30i
ICgiRXJyb3IiKQorRkFJTCBwaXBlVG8gc2hvdWxkIHN0b3AgYWZ0ZXIgZ2V0dGluZyBwcmV2ZW50
Q2xvc2UgdGhyb3dzIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIHBp
cGVUaHJvdWdoIHNob3VsZCBzdG9wIGFmdGVyIGdldHRpbmcgcHJldmVudENsb3NlIHRocm93cyBh
c3NlcnRfdGhyb3dzX2pzOiBwaXBlVGhyb3VnaCBzaG91bGQgdGhyb3cgZnVuY3Rpb24gIigpID0+
IG5ldyBSZWFkYWJsZVN0cmVhbSgpLnBpcGVUaHJvdWdoKG5ldyBUcmFuc2Zvcm1TdHJlYW0oKSwg
b3B0aW9ucykiIHRocmV3IG9iamVjdCAiUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFi
bGU6IFRyYW5zZm9ybVN0cmVhbSIgKCJSZWZlcmVuY2VFcnJvciIpIGV4cGVjdGVkIGluc3RhbmNl
IG9mIGZ1bmN0aW9uICJmdW5jdGlvbiBFcnJvcigpIHsKKyAgICBbbmF0aXZlIGNvZGVdCit9IiAo
IkVycm9yIikKK0ZBSUwgcGlwZVRvIHNob3VsZCBzdG9wIGFmdGVyIGdldHRpbmcgc2lnbmFsIHRo
cm93cyBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBwaXBlVGhyb3Vn
aCBzaG91bGQgc3RvcCBhZnRlciBnZXR0aW5nIHNpZ25hbCB0aHJvd3MgYXNzZXJ0X3Rocm93c19q
czogcGlwZVRocm91Z2ggc2hvdWxkIHRocm93IGZ1bmN0aW9uICIoKSA9PiBuZXcgUmVhZGFibGVT
dHJlYW0oKS5waXBlVGhyb3VnaChuZXcgVHJhbnNmb3JtU3RyZWFtKCksIG9wdGlvbnMpIiB0aHJl
dyBvYmplY3QgIlJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1T
dHJlYW0iICgiUmVmZXJlbmNlRXJyb3IiKSBleHBlY3RlZCBpbnN0YW5jZSBvZiBmdW5jdGlvbiAi
ZnVuY3Rpb24gRXJyb3IoKSB7CisgICAgW25hdGl2ZSBjb2RlXQorfSIgKCJFcnJvciIpCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy9waXBpbmcvdGhyb3dpbmctb3B0aW9ucy5hbnkud29ya2VyLmh0bWwgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL3Rocm93aW5n
LW9wdGlvbnMuYW55Lndvcmtlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzODI5MTM1MjhlNjkzYjNhNWQ1
NmM2NjBhNDUwNjA5ODBiNTQ4YzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL3Rocm93aW5nLW9wdGlv
bnMuYW55Lndvcmtlci5odG1sCkBAIC0wLDAgKzEgQEAKKzwhLS0gVGhpcyBmaWxlIGlzIHJlcXVp
cmVkIGZvciBXZWJLaXQgdGVzdCBpbmZyYXN0cnVjdHVyZSB0byBydW4gdGhlIHRlbXBsYXRlZCB0
ZXN0IC0tPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvdHJhbnNm
b3JtLXN0cmVhbXMuYW55LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvdHJhbnNmb3JtLXN0cmVhbXMuYW55LWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zOWJmMTMyZjg5NTA4NWFmNGY5Njg2MTFmMjFmY2E0YTli
NDkyMTRhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy90cmFuc2Zvcm0tc3RyZWFtcy5hbnktZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorCitGQUlMIFBpcGluZyB0aHJvdWdoIGFuIGlkZW50aXR5
IHRyYW5zZm9ybSBzdHJlYW0gc2hvdWxkIGNsb3NlIHRoZSBkZXN0aW5hdGlvbiB3aGVuIHRoZSBz
b3VyY2UgY2xvc2VzIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvcGlwaW5nL3RyYW5zZm9ybS1zdHJlYW1zLmFueS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy90cmFuc2Zvcm0tc3RyZWFt
cy5hbnkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMzgyOTEzNTI4ZTY5M2IzYTVkNTZjNjYwYTQ1MDYwOTgw
YjU0OGMzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy90cmFuc2Zvcm0tc3RyZWFtcy5hbnkuaHRtbApA
QCAtMCwwICsxIEBACis8IS0tIFRoaXMgZmlsZSBpcyByZXF1aXJlZCBmb3IgV2ViS2l0IHRlc3Qg
aW5mcmFzdHJ1Y3R1cmUgdG8gcnVuIHRoZSB0ZW1wbGF0ZWQgdGVzdCAtLT4KXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL3RyYW5zZm9ybS1zdHJlYW1zLmFueS5qcyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBp
bmcvdHJhbnNmb3JtLXN0cmVhbXMuYW55LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEzNjhmZWNkNmYwMGQ2YTM4
Yzg2NWIwYjZjNTI0MTFlNzYzYThiYmIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL3RyYW5zZm9ybS1z
dHJlYW1zLmFueS5qcwpAQCAtMCwwICsxLDIyIEBACisvLyBNRVRBOiBnbG9iYWw9d2luZG93LHdv
cmtlcixqc3NoZWxsCisndXNlIHN0cmljdCc7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisgIGNv
bnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjLmVu
cXVldWUoJ2EnKTsKKyAgICAgIGMuZW5xdWV1ZSgnYicpOworICAgICAgYy5lbnF1ZXVlKCdjJyk7
CisgICAgICBjLmNsb3NlKCk7CisgICAgfQorICB9KTsKKworICBjb25zdCB0cyA9IG5ldyBUcmFu
c2Zvcm1TdHJlYW0oKTsKKworICBjb25zdCB3cyA9IG5ldyBXcml0YWJsZVN0cmVhbSgpOworCisg
IHJldHVybiBycy5waXBlVGhyb3VnaCh0cykucGlwZVRvKHdzKS50aGVuKCgpID0+IHsKKyAgICBj
b25zdCB3cml0ZXIgPSB3cy5nZXRXcml0ZXIoKTsKKyAgICByZXR1cm4gd3JpdGVyLmNsb3NlZDsK
KyAgfSk7Cit9LCAnUGlwaW5nIHRocm91Z2ggYW4gaWRlbnRpdHkgdHJhbnNmb3JtIHN0cmVhbSBz
aG91bGQgY2xvc2UgdGhlIGRlc3RpbmF0aW9uIHdoZW4gdGhlIHNvdXJjZSBjbG9zZXMnKTsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy9waXBpbmcvdHJhbnNmb3JtLXN0cmVhbXMuYW55Lndvcmtlci1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5n
L3RyYW5zZm9ybS1zdHJlYW1zLmFueS53b3JrZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM5
YmYxMzJmODk1MDg1YWY0Zjk2ODYxMWYyMWZjYTRhOWI0OTIxNGEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlw
aW5nL3RyYW5zZm9ybS1zdHJlYW1zLmFueS53b3JrZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MyBAQAorCitGQUlMIFBpcGluZyB0aHJvdWdoIGFuIGlkZW50aXR5IHRyYW5zZm9ybSBzdHJlYW0g
c2hvdWxkIGNsb3NlIHRoZSBkZXN0aW5hdGlvbiB3aGVuIHRoZSBzb3VyY2UgY2xvc2VzIENhbid0
IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL3RyYW5zZm9y
bS1zdHJlYW1zLmFueS53b3JrZXIuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvdHJhbnNmb3JtLXN0cmVhbXMuYW55Lndvcmtl
ci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjIzODI5MTM1MjhlNjkzYjNhNWQ1NmM2NjBhNDUwNjA5ODBiNTQ4
YzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL3RyYW5zZm9ybS1zdHJlYW1zLmFueS53b3JrZXIuaHRt
bApAQCAtMCwwICsxIEBACis8IS0tIFRoaXMgZmlsZSBpcyByZXF1aXJlZCBmb3IgV2ViS2l0IHRl
c3QgaW5mcmFzdHJ1Y3R1cmUgdG8gcnVuIHRoZSB0ZW1wbGF0ZWQgdGVzdCAtLT4KXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL3RyYW5zZm9ybS1zdHJlYW1zLmRlZGlj
YXRlZHdvcmtlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL3RyYW5zZm9ybS1zdHJlYW1zLmRlZGljYXRlZHdv
cmtlci1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM5YmYxMzJm
ODk1MDg1YWY0Zjk2ODYxMWYyMWZjYTRhOWI0OTIxNGEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy90cmFuc2Zvcm0tc3RyZWFtcy5kZWRpY2F0ZWR3b3Jr
ZXItZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi0KLUZBSUwgUGlw
aW5nIHRocm91Z2ggYW4gaWRlbnRpdHkgdHJhbnNmb3JtIHN0cmVhbSBzaG91bGQgY2xvc2UgdGhl
IGRlc3RpbmF0aW9uIHdoZW4gdGhlIHNvdXJjZSBjbG9zZXMgQ2FuJ3QgZmluZCB2YXJpYWJsZTog
VHJhbnNmb3JtU3RyZWFtCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvdHJhbnNmb3JtLXN0cmVhbXMuZGVkaWNh
dGVkd29ya2VyLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3N0cmVhbXMvcGlwaW5nL3RyYW5zZm9ybS1zdHJlYW1zLmRlZGljYXRlZHdvcmtlci5odG1s
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNGYxYmZlMmRmZDI0ZDhlZmEyMTQ5ZDMx
OGY5ZjgxMjllZGViNWZiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy9waXBpbmcvdHJhbnNmb3JtLXN0cmVhbXMuZGVkaWNhdGVkd29ya2VyLmh0bWwKKysrIC9kZXYv
bnVsbApAQCAtMSwxMSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9InV0
Zi04Ij4KLTx0aXRsZT50cmFuc2Zvcm0tc3RyZWFtcy5qcyBkZWRpY2F0ZWQgd29ya2VyIHdyYXBw
ZXIgZmlsZTwvdGl0bGU+Ci0KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpz
Ij48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0Lmpz
Ij48L3NjcmlwdD4KLQotPHNjcmlwdD4KLSd1c2Ugc3RyaWN0JzsKLWZldGNoX3Rlc3RzX2Zyb21f
d29ya2VyKG5ldyBXb3JrZXIoJ3RyYW5zZm9ybS1zdHJlYW1zLmpzJykpOwotPC9zY3JpcHQ+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMvcGlwaW5nL3RyYW5zZm9ybS1zdHJlYW1zLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL3RyYW5zZm9ybS1zdHJlYW1z
Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgyMTQ2MTk4YjdkYTVkYTA3Mzhl
ODljYmE4ZWQ0NzgzMjJiYjI3MTQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
dHJlYW1zL3BpcGluZy90cmFuc2Zvcm0tc3RyZWFtcy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEs
MTAgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08dGl0
bGU+dHJhbnNmb3JtLXN0cmVhbXMuanMgYnJvd3NlciBjb250ZXh0IHdyYXBwZXIgZmlsZTwvdGl0
bGU+Ci0KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4K
LTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4K
LQotCi0KLTxzY3JpcHQgc3JjPSJ0cmFuc2Zvcm0tc3RyZWFtcy5qcyI+PC9zY3JpcHQ+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvcGlwaW5nL3RyYW5zZm9ybS1zdHJlYW1zLmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy90cmFuc2Zvcm0tc3RyZWFtcy5qcwpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGY2ODA0YTIyMjdkN2EyYzA1ODY5Nzg1NDM3
YTA3ZTgzZWE5ZTQ4Ny4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
cGlwaW5nL3RyYW5zZm9ybS1zdHJlYW1zLmpzCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBA
QAotJ3VzZSBzdHJpY3QnOwotCi1pZiAoc2VsZi5pbXBvcnRTY3JpcHRzKSB7Ci0gIHNlbGYuaW1w
b3J0U2NyaXB0cygnL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcycpOwotfQotCi1wcm9taXNlX3Rl
c3QoKCkgPT4gewotICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQo
YykgewotICAgICAgYy5lbnF1ZXVlKCdhJyk7Ci0gICAgICBjLmVucXVldWUoJ2InKTsKLSAgICAg
IGMuZW5xdWV1ZSgnYycpOwotICAgICAgYy5jbG9zZSgpOwotICAgIH0KLSAgfSk7Ci0KLSAgY29u
c3QgdHMgPSBuZXcgVHJhbnNmb3JtU3RyZWFtKCk7Ci0KLSAgY29uc3Qgd3MgPSBuZXcgV3JpdGFi
bGVTdHJlYW0oKTsKLQotICByZXR1cm4gcnMucGlwZVRocm91Z2godHMpLnBpcGVUbyh3cykudGhl
bigoKSA9PiB7Ci0gICAgY29uc3Qgd3JpdGVyID0gd3MuZ2V0V3JpdGVyKCk7Ci0gICAgcmV0dXJu
IHdyaXRlci5jbG9zZWQ7Ci0gIH0pOwotfSwgJ1BpcGluZyB0aHJvdWdoIGFuIGlkZW50aXR5IHRy
YW5zZm9ybSBzdHJlYW0gc2hvdWxkIGNsb3NlIHRoZSBkZXN0aW5hdGlvbiB3aGVuIHRoZSBzb3Vy
Y2UgY2xvc2VzJyk7Ci0KLWRvbmUoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvdHJhbnNmb3JtLXN0cmVhbXMu
c2VydmljZXdvcmtlci5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL3RyYW5zZm9ybS1zdHJlYW1zLnNl
cnZpY2V3b3JrZXIuaHR0cHMtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwYWQxODMzOThlYzQwZDAwNjhmNzNkNzk5MjE4OGIxMGYxMzA1N2MzLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvdHJhbnNmb3JtLXN0cmVhbXMu
c2VydmljZXdvcmtlci5odHRwcy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw0ICsw
LDAgQEAKLQotUEFTUyBTZXJ2aWNlIHdvcmtlciB0ZXN0IHNldHVwIAotRkFJTCBQaXBpbmcgdGhy
b3VnaCBhbiBpZGVudGl0eSB0cmFuc2Zvcm0gc3RyZWFtIHNob3VsZCBjbG9zZSB0aGUgZGVzdGlu
YXRpb24gd2hlbiB0aGUgc291cmNlIGNsb3NlcyBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zv
cm1TdHJlYW0KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy90cmFuc2Zvcm0tc3RyZWFtcy5zZXJ2aWNld29ya2Vy
Lmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMvcGlwaW5nL3RyYW5zZm9ybS1zdHJlYW1zLnNlcnZpY2V3b3JrZXIuaHR0cHMuaHRt
bApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2Q4MDU4ZWY3MDk2YjFiZGViNTlmNjQy
ZDkwNGVmZTZiNmM5YjYyMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvcGlwaW5nL3RyYW5zZm9ybS1zdHJlYW1zLnNlcnZpY2V3b3JrZXIuaHR0cHMuaHRtbAorKysg
L2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNl
dD0idXRmLTgiPgotPHRpdGxlPnRyYW5zZm9ybS1zdHJlYW1zLmpzIHNlcnZpY2Ugd29ya2VyIHdy
YXBwZXIgZmlsZTwvdGl0bGU+Ci0KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0
LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29y
a2VyL3Jlc291cmNlcy90ZXN0LWhlbHBlcnMuc3ViLmpzIj48L3NjcmlwdD4KLQotPHNjcmlwdD4K
LSd1c2Ugc3RyaWN0JzsKLXNlcnZpY2Vfd29ya2VyX3Rlc3QoJ3RyYW5zZm9ybS1zdHJlYW1zLmpz
JywgJ1NlcnZpY2Ugd29ya2VyIHRlc3Qgc2V0dXAnKTsKLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGlu
Zy90cmFuc2Zvcm0tc3RyZWFtcy5zaGFyZWR3b3JrZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy90cmFuc2Zv
cm0tc3RyZWFtcy5zaGFyZWR3b3JrZXItZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwOWQ1ZDI1MDlkNzg0N2U4Y2Q2ZmU2NjA2YWE2MGNkZDMzYWE0NzRlLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvdHJhbnNmb3JtLXN0
cmVhbXMuc2hhcmVkd29ya2VyLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAs
MCBAQAotQ09OU09MRSBNRVNTQUdFOiBSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJs
ZTogU2hhcmVkV29ya2VyCi0KLUhhcm5lc3MgRXJyb3IgKEZBSUwpLCBtZXNzYWdlID0gUmVmZXJl
bmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IFNoYXJlZFdvcmtlcgotCi0KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9w
aXBpbmcvdHJhbnNmb3JtLXN0cmVhbXMuc2hhcmVkd29ya2VyLmh0bWwgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL3RyYW5zZm9ybS1z
dHJlYW1zLnNoYXJlZHdvcmtlci5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAz
ZjMxMTliMjQzYjkxNzdhMmVlYmVmODZhM2E1NGQyMGM1MmVlMGY0Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvdHJhbnNmb3JtLXN0cmVhbXMuc2hhcmVk
d29ya2VyLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi08IURPQ1RZUEUgaHRt
bD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTx0aXRsZT50cmFuc2Zvcm0tc3RyZWFtcy5qcyBz
aGFyZWQgd29ya2VyIHdyYXBwZXIgZmlsZTwvdGl0bGU+Ci0KLTxzY3JpcHQgc3JjPSIvcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rl
c3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLQotPHNjcmlwdD4KLSd1c2Ugc3RyaWN0JzsK
LWZldGNoX3Rlc3RzX2Zyb21fd29ya2VyKG5ldyBTaGFyZWRXb3JrZXIoJ3RyYW5zZm9ybS1zdHJl
YW1zLmpzJykpOwotPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL3czYy1pbXBvcnQubG9nIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy93
M2MtaW1wb3J0LmxvZwppbmRleCA1YzQwYTQzNzI0Njg5M2Q4NjAwYzUxN2U2YTA0OTAyZjUyOGE1
ZTdlLi5lYTkyNzUxOTI4NTI0ZTE4YTYxNTQxMmU2ODVlYTMyNzBkNWQ3MGZmIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlw
aW5nL3czYy1pbXBvcnQubG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvdzNjLWltcG9ydC5sb2cKQEAgLTEsNyArMSw3IEBA
CiBUaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0Mg
cmVwb3NpdG9yeS4KIERvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0
LgogSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0
dHBzOi8vZ2l0aHViLmNvbS93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzCisJaHR0cHM6Ly9naXRodWIu
Y29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKIAogVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMv
aW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKIApAQCAtMTQsNDggKzE0LDE1
IEBAIFByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgogTm9uZQogLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCiBMaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvY2xvc2UtcHJvcGFnYXRpb24tYmFja3dh
cmQuZGVkaWNhdGVkd29ya2VyLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Nsb3NlLXByb3BhZ2F0aW9uLWJhY2t3YXJkLmh0
bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
cGlwaW5nL2Nsb3NlLXByb3BhZ2F0aW9uLWJhY2t3YXJkLmpzCi0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9jbG9zZS1wcm9wYWdhdGlv
bi1iYWNrd2FyZC5zZXJ2aWNld29ya2VyLmh0dHBzLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Nsb3NlLXByb3BhZ2F0aW9u
LWJhY2t3YXJkLnNoYXJlZHdvcmtlci5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9jbG9zZS1wcm9wYWdhdGlvbi1mb3J3YXJk
LmRlZGljYXRlZHdvcmtlci5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9jbG9zZS1wcm9wYWdhdGlvbi1mb3J3YXJkLmh0bWwK
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlw
aW5nL2Nsb3NlLXByb3BhZ2F0aW9uLWZvcndhcmQuanMKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Nsb3NlLXByb3BhZ2F0aW9uLWZv
cndhcmQuc2VydmljZXdvcmtlci5odHRwcy5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9jbG9zZS1wcm9wYWdhdGlvbi1mb3J3
YXJkLnNoYXJlZHdvcmtlci5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9lcnJvci1wcm9wYWdhdGlvbi1iYWNrd2FyZC5kZWRp
Y2F0ZWR3b3JrZXIuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy9waXBpbmcvZXJyb3ItcHJvcGFnYXRpb24tYmFja3dhcmQuaHRtbAotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcv
ZXJyb3ItcHJvcGFnYXRpb24tYmFja3dhcmQuanMKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Vycm9yLXByb3BhZ2F0aW9uLWJhY2t3
YXJkLnNlcnZpY2V3b3JrZXIuaHR0cHMuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvZXJyb3ItcHJvcGFnYXRpb24tYmFja3dh
cmQuc2hhcmVkd29ya2VyLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Vycm9yLXByb3BhZ2F0aW9uLWZvcndhcmQuZGVkaWNh
dGVkd29ya2VyLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3N0cmVhbXMvcGlwaW5nL2Vycm9yLXByb3BhZ2F0aW9uLWZvcndhcmQuaHRtbAotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvZXJy
b3ItcHJvcGFnYXRpb24tZm9yd2FyZC5qcwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvZXJyb3ItcHJvcGFnYXRpb24tZm9yd2FyZC5z
ZXJ2aWNld29ya2VyLmh0dHBzLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Vycm9yLXByb3BhZ2F0aW9uLWZvcndhcmQuc2hh
cmVkd29ya2VyLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3N0cmVhbXMvcGlwaW5nL2Zsb3ctY29udHJvbC5kZWRpY2F0ZWR3b3JrZXIuaHRtbAotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcv
Zmxvdy1jb250cm9sLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Zsb3ctY29udHJvbC5qcwotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvZmxvdy1jb250cm9sLnNl
cnZpY2V3b3JrZXIuaHR0cHMuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvZmxvdy1jb250cm9sLnNoYXJlZHdvcmtlci5odG1s
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3Bp
cGluZy9nZW5lcmFsLmRlZGljYXRlZHdvcmtlci5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9nZW5lcmFsLmh0bWwKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2dl
bmVyYWwuanMKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMvcGlwaW5nL2dlbmVyYWwuc2VydmljZXdvcmtlci5odHRwcy5odG1sCi0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9nZW5lcmFs
LnNoYXJlZHdvcmtlci5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zdHJlYW1zL3BpcGluZy9tdWx0aXBsZS1wcm9wYWdhdGlvbi5kZWRpY2F0ZWR3b3Jr
ZXIuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy9waXBpbmcvbXVsdGlwbGUtcHJvcGFnYXRpb24uaHRtbAotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvbXVsdGlwbGUtcHJvcGFn
YXRpb24uanMKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMvcGlwaW5nL211bHRpcGxlLXByb3BhZ2F0aW9uLnNlcnZpY2V3b3JrZXIuaHR0cHMuaHRt
bAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9w
aXBpbmcvbXVsdGlwbGUtcHJvcGFnYXRpb24uc2hhcmVkd29ya2VyLmh0bWwKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL3BpcGUtdGhy
b3VnaC5kZWRpY2F0ZWR3b3JrZXIuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvcGlwZS10aHJvdWdoLmh0bWwKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL3BpcGUt
dGhyb3VnaC5qcwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy9waXBpbmcvcGlwZS10aHJvdWdoLnNlcnZpY2V3b3JrZXIuaHR0cHMuaHRtbAotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcv
cGlwZS10aHJvdWdoLnNoYXJlZHdvcmtlci5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy90cmFuc2Zvcm0tc3RyZWFtcy5kZWRp
Y2F0ZWR3b3JrZXIuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy9waXBpbmcvdHJhbnNmb3JtLXN0cmVhbXMuaHRtbAotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvdHJhbnNmb3Jt
LXN0cmVhbXMuanMKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMvcGlwaW5nL3RyYW5zZm9ybS1zdHJlYW1zLnNlcnZpY2V3b3JrZXIuaHR0cHMuaHRt
bAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9w
aXBpbmcvdHJhbnNmb3JtLXN0cmVhbXMuc2hhcmVkd29ya2VyLmh0bWwKKy9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Fib3J0LmFueS5q
cworL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9w
aXBpbmcvY2xvc2UtcHJvcGFnYXRpb24tYmFja3dhcmQuYW55LmpzCisvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9jbG9zZS1wcm9wYWdh
dGlvbi1mb3J3YXJkLmFueS5qcworL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvZXJyb3ItcHJvcGFnYXRpb24tYmFja3dhcmQuYW55Lmpz
CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3Bp
cGluZy9lcnJvci1wcm9wYWdhdGlvbi1mb3J3YXJkLmFueS5qcworL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvZmxvdy1jb250cm9sLmFu
eS5qcworL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy9waXBpbmcvZ2VuZXJhbC5hbnkuanMKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL211bHRpcGxlLXByb3BhZ2F0aW9uLmFueS5qcwor
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBp
bmcvcGlwZS10aHJvdWdoLmFueS5qcworL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvdGhlbi1pbnRlcmNlcHRpb24uYW55LmpzCisvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy90
aHJvd2luZy1vcHRpb25zLmFueS5qcworL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvdHJhbnNmb3JtLXN0cmVhbXMuYW55LmpzCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvcXVldWluZy1zdHJhdGVnaWVzLmFueS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcXVldWluZy1zdHJhdGVnaWVzLmFu
eS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTgzNzJhMzRhNjIzOTQxNDgyN2ZhZDkzODYzNThh
NWQyMDViMTA0ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9xdWV1aW5nLXN0cmF0ZWdpZXMuYW55LWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDE4IEBACisKK1BBU1MgQ291bnRRdWV1aW5nU3RyYXRlZ3k6IENhbiBj
b25zdHJ1Y3QgYSB3aXRoIGEgdmFsaWQgaGlnaCB3YXRlciBtYXJrIAorRkFJTCBDb3VudFF1ZXVp
bmdTdHJhdGVneTogQ29uc3RydWN0b3IgYmVoYXZlcyBhcyBleHBlY3RlZCB3aXRoIHN0cmFuZ2Ug
YXJndW1lbnRzIGFzc2VydF90aHJvd3NfanM6IGNvbnN0cnVjdGlvbiBmYWlscyB3aXRoIHRydWUg
ZnVuY3Rpb24gIigpID0+IG5ldyBRdWV1aW5nU3RyYXRlZ3kodHJ1ZSkiIGRpZCBub3QgdGhyb3cK
K0ZBSUwgQ291bnRRdWV1aW5nU3RyYXRlZ3k6IGhpZ2hXYXRlck1hcmsgY29uc3RydWN0b3IgdmFs
dWVzIGFyZSBjb252ZXJ0ZWQgcGVyIHRoZSB1bnJlc3RyaWN0ZWQgZG91YmxlIHJ1bGVzIGFzc2Vy
dF9lcXVhbHM6IGZhbHNlIGdldHMgc2V0IGNvcnJlY3RseSBleHBlY3RlZCAobnVtYmVyKSAwIGJ1
dCBnb3QgKGJvb2xlYW4pIGZhbHNlCitQQVNTIENvdW50UXVldWluZ1N0cmF0ZWd5OiBzaXplIGlz
IHRoZSBzYW1lIGZ1bmN0aW9uIGFjcm9zcyBhbGwgaW5zdGFuY2VzIAorUEFTUyBDb3VudFF1ZXVp
bmdTdHJhdGVneTogc2l6ZSBzaG91bGQgaGF2ZSB0aGUgcmlnaHQgbmFtZSAKK0ZBSUwgQ291bnRR
dWV1aW5nU3RyYXRlZ3k6IHN1YmNsYXNzaW5nIHNob3VsZCB3b3JrIGNvcnJlY3RseSBhc3NlcnRf
ZXF1YWxzOiBjb25zdHJ1Y3Rvci5uYW1lIHNob3VsZCBiZSBjb3JyZWN0IGV4cGVjdGVkICJTdWJD
bGFzcyIgYnV0IGdvdCAiQ291bnRRdWV1aW5nU3RyYXRlZ3kiCitQQVNTIEJ5dGVMZW5ndGhRdWV1
aW5nU3RyYXRlZ3k6IENhbiBjb25zdHJ1Y3QgYSB3aXRoIGEgdmFsaWQgaGlnaCB3YXRlciBtYXJr
IAorRkFJTCBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5OiBDb25zdHJ1Y3RvciBiZWhhdmVzIGFz
IGV4cGVjdGVkIHdpdGggc3RyYW5nZSBhcmd1bWVudHMgYXNzZXJ0X3Rocm93c19qczogY29uc3Ry
dWN0aW9uIGZhaWxzIHdpdGggdHJ1ZSBmdW5jdGlvbiAiKCkgPT4gbmV3IFF1ZXVpbmdTdHJhdGVn
eSh0cnVlKSIgZGlkIG5vdCB0aHJvdworRkFJTCBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5OiBo
aWdoV2F0ZXJNYXJrIGNvbnN0cnVjdG9yIHZhbHVlcyBhcmUgY29udmVydGVkIHBlciB0aGUgdW5y
ZXN0cmljdGVkIGRvdWJsZSBydWxlcyBhc3NlcnRfZXF1YWxzOiBmYWxzZSBnZXRzIHNldCBjb3Jy
ZWN0bHkgZXhwZWN0ZWQgKG51bWJlcikgMCBidXQgZ290IChib29sZWFuKSBmYWxzZQorUEFTUyBC
eXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5OiBzaXplIGlzIHRoZSBzYW1lIGZ1bmN0aW9uIGFjcm9z
cyBhbGwgaW5zdGFuY2VzIAorUEFTUyBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5OiBzaXplIHNo
b3VsZCBoYXZlIHRoZSByaWdodCBuYW1lIAorRkFJTCBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5
OiBzdWJjbGFzc2luZyBzaG91bGQgd29yayBjb3JyZWN0bHkgYXNzZXJ0X2VxdWFsczogY29uc3Ry
dWN0b3IubmFtZSBzaG91bGQgYmUgY29ycmVjdCBleHBlY3RlZCAiU3ViQ2xhc3MiIGJ1dCBnb3Qg
IkJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3kiCitQQVNTIENvdW50UXVldWluZ1N0cmF0ZWd5OiBz
aXplIHNob3VsZCBoYXZlIHRoZSByaWdodCBsZW5ndGggCitQQVNTIEJ5dGVMZW5ndGhRdWV1aW5n
U3RyYXRlZ3k6IHNpemUgc2hvdWxkIGhhdmUgdGhlIHJpZ2h0IGxlbmd0aCAKK1BBU1MgQ291bnRR
dWV1aW5nU3RyYXRlZ3k6IHNpemUgYmVoYXZlcyBhcyBleHBlY3RlZCB3aXRoIHN0cmFuZ2UgYXJn
dW1lbnRzIAorUEFTUyBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5OiBzaXplIGJlaGF2ZXMgYXMg
ZXhwZWN0ZWQgd2l0aCBzdHJhbmdlIGFyZ3VtZW50cyAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3F1ZXVpbmctc3RyYXRl
Z2llcy5hbnkuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy9xdWV1aW5nLXN0cmF0ZWdpZXMuYW55Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjM4Mjkx
MzUyOGU2OTNiM2E1ZDU2YzY2MGE0NTA2MDk4MGI1NDhjMwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9xdWV1aW5n
LXN0cmF0ZWdpZXMuYW55Lmh0bWwKQEAgLTAsMCArMSBAQAorPCEtLSBUaGlzIGZpbGUgaXMgcmVx
dWlyZWQgZm9yIFdlYktpdCB0ZXN0IGluZnJhc3RydWN0dXJlIHRvIHJ1biB0aGUgdGVtcGxhdGVk
IHRlc3QgLS0+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3F1ZXVpbmctc3Ry
YXRlZ2llcy5hbnkuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3N0cmVhbXMvcXVldWluZy1zdHJhdGVnaWVzLmFueS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODQ2ZWE2
M2UzNTQ1OWYzNTUyMzA0MjFiYjA0MmU2N2JmNTEwNTNjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3F1ZXVpbmct
c3RyYXRlZ2llcy5hbnkuanMKQEAgLTAsMCArMSwxMzUgQEAKKy8vIE1FVEE6IGdsb2JhbD13aW5k
b3csd29ya2VyLGpzc2hlbGwKKyd1c2Ugc3RyaWN0JzsKKworY29uc3QgaGlnaFdhdGVyTWFya0Nv
bnZlcnNpb25zID0gbmV3IE1hcChbCisgIFstSW5maW5pdHksIC1JbmZpbml0eV0sCisgIFstNSwg
LTVdLAorICBbZmFsc2UsIDBdLAorICBbdHJ1ZSwgMV0sCisgIFtOYU4sIE5hTl0sCisgIFsnZm9v
JywgTmFOXSwKKyAgWycwJywgMF0sCisgIFt7fSwgTmFOXSwKKyAgWygpID0+IHt9LCBOYU5dCitd
KTsKKworZm9yIChjb25zdCBRdWV1aW5nU3RyYXRlZ3kgb2YgW0NvdW50UXVldWluZ1N0cmF0ZWd5
LCBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5XSkgeworICB0ZXN0KCgpID0+IHsKKyAgICBuZXcg
UXVldWluZ1N0cmF0ZWd5KHsgaGlnaFdhdGVyTWFyazogNCB9KTsKKyAgfSwgYCR7UXVldWluZ1N0
cmF0ZWd5Lm5hbWV9OiBDYW4gY29uc3RydWN0IGEgd2l0aCBhIHZhbGlkIGhpZ2ggd2F0ZXIgbWFy
a2ApOworCisgIHRlc3QoKCkgPT4geworICAgIGNvbnN0IGhpZ2hXYXRlck1hcmsgPSAxOworICAg
IGNvbnN0IGhpZ2hXYXRlck1hcmtPYmplY3RHZXR0ZXIgPSB7CisgICAgICBnZXQgaGlnaFdhdGVy
TWFyaygpIHsgcmV0dXJuIGhpZ2hXYXRlck1hcms7IH0KKyAgICB9OworICAgIGNvbnN0IGVycm9y
ID0gbmV3IEVycm9yKCd3b3chJyk7CisgICAgY29uc3QgaGlnaFdhdGVyTWFya09iamVjdEdldHRl
clRocm93aW5nID0geworICAgICAgZ2V0IGhpZ2hXYXRlck1hcmsoKSB7IHRocm93IGVycm9yOyB9
CisgICAgfTsKKworICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiBuZXcgUXVl
dWluZ1N0cmF0ZWd5KCksICdjb25zdHJ1Y3Rpb24gZmFpbHMgd2l0aCB1bmRlZmluZWQnKTsKKyAg
ICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4gbmV3IFF1ZXVpbmdTdHJhdGVneShu
dWxsKSwgJ2NvbnN0cnVjdGlvbiBmYWlscyB3aXRoIG51bGwnKTsKKyAgICBhc3NlcnRfdGhyb3dz
X2pzKFR5cGVFcnJvciwgKCkgPT4gbmV3IFF1ZXVpbmdTdHJhdGVneSh0cnVlKSwgJ2NvbnN0cnVj
dGlvbiBmYWlscyB3aXRoIHRydWUnKTsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwg
KCkgPT4gbmV3IFF1ZXVpbmdTdHJhdGVneSg1KSwgJ2NvbnN0cnVjdGlvbiBmYWlscyB3aXRoIDUn
KTsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4gbmV3IFF1ZXVpbmdTdHJh
dGVneSh7fSksICdjb25zdHJ1Y3Rpb24gZmFpbHMgd2l0aCB7fScpOworICAgIGFzc2VydF90aHJv
d3NfZXhhY3RseShlcnJvciwgKCkgPT4gbmV3IFF1ZXVpbmdTdHJhdGVneShoaWdoV2F0ZXJNYXJr
T2JqZWN0R2V0dGVyVGhyb3dpbmcpLAorICAgICAgJ2NvbnN0cnVjdGlvbiBmYWlscyB3aXRoIGFu
IG9iamVjdCB3aXRoIGEgdGhyb3dpbmcgaGlnaFdhdGVyTWFyayBnZXR0ZXInKTsKKworICAgIGFz
c2VydF9lcXVhbHMoKG5ldyBRdWV1aW5nU3RyYXRlZ3koaGlnaFdhdGVyTWFya09iamVjdEdldHRl
cikpLmhpZ2hXYXRlck1hcmssIGhpZ2hXYXRlck1hcmspOworICB9LCBgJHtRdWV1aW5nU3RyYXRl
Z3kubmFtZX06IENvbnN0cnVjdG9yIGJlaGF2ZXMgYXMgZXhwZWN0ZWQgd2l0aCBzdHJhbmdlIGFy
Z3VtZW50c2ApOworCisgIHRlc3QoKCkgPT4geworICAgIGZvciAoY29uc3QgW2lucHV0LCBvdXRw
dXRdIG9mIGhpZ2hXYXRlck1hcmtDb252ZXJzaW9ucy5lbnRyaWVzKCkpIHsKKyAgICAgIGNvbnN0
IHN0cmF0ZWd5ID0gbmV3IFF1ZXVpbmdTdHJhdGVneSh7IGhpZ2hXYXRlck1hcms6IGlucHV0IH0p
OworICAgICAgYXNzZXJ0X2VxdWFscyhzdHJhdGVneS5oaWdoV2F0ZXJNYXJrLCBvdXRwdXQsIGAk
e2lucHV0fSBnZXRzIHNldCBjb3JyZWN0bHlgKTsKKyAgICB9CisgIH0sIGAke1F1ZXVpbmdTdHJh
dGVneS5uYW1lfTogaGlnaFdhdGVyTWFyayBjb25zdHJ1Y3RvciB2YWx1ZXMgYXJlIGNvbnZlcnRl
ZCBwZXIgdGhlIHVucmVzdHJpY3RlZCBkb3VibGUgcnVsZXNgKTsKKworICB0ZXN0KCgpID0+IHsK
KyAgICBjb25zdCBzaXplMSA9IChuZXcgUXVldWluZ1N0cmF0ZWd5KHsgaGlnaFdhdGVyTWFyazog
NSB9KSkuc2l6ZTsKKyAgICBjb25zdCBzaXplMiA9IChuZXcgUXVldWluZ1N0cmF0ZWd5KHsgaGln
aFdhdGVyTWFyazogMTAgfSkpLnNpemU7CisKKyAgICBhc3NlcnRfZXF1YWxzKHNpemUxLCBzaXpl
Mik7CisgIH0sIGAke1F1ZXVpbmdTdHJhdGVneS5uYW1lfTogc2l6ZSBpcyB0aGUgc2FtZSBmdW5j
dGlvbiBhY3Jvc3MgYWxsIGluc3RhbmNlc2ApOworCisgIHRlc3QoKCkgPT4geworICAgIGNvbnN0
IHNpemUgPSAobmV3IFF1ZXVpbmdTdHJhdGVneSh7IGhpZ2hXYXRlck1hcms6IDUgfSkpLnNpemU7
CisgICAgYXNzZXJ0X2VxdWFscyhzaXplLm5hbWUsICdzaXplJyk7CisgIH0sIGAke1F1ZXVpbmdT
dHJhdGVneS5uYW1lfTogc2l6ZSBzaG91bGQgaGF2ZSB0aGUgcmlnaHQgbmFtZWApOworCisgIHRl
c3QoKCkgPT4geworICAgIGNsYXNzIFN1YkNsYXNzIGV4dGVuZHMgUXVldWluZ1N0cmF0ZWd5IHsK
KyAgICAgIHNpemUoKSB7CisgICAgICAgIHJldHVybiAyOworICAgICAgfQorCisgICAgICBzdWJD
bGFzc01ldGhvZCgpIHsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICB9CisgICAgfQorCisg
ICAgY29uc3Qgc2MgPSBuZXcgU3ViQ2xhc3MoeyBoaWdoV2F0ZXJNYXJrOiA3NyB9KTsKKyAgICBh
c3NlcnRfZXF1YWxzKHNjLmNvbnN0cnVjdG9yLm5hbWUsICdTdWJDbGFzcycsICdjb25zdHJ1Y3Rv
ci5uYW1lIHNob3VsZCBiZSBjb3JyZWN0Jyk7CisgICAgYXNzZXJ0X2VxdWFscyhzYy5oaWdoV2F0
ZXJNYXJrLCA3NywgJ2hpZ2hXYXRlck1hcmsgc2hvdWxkIGNvbWUgZnJvbSB0aGUgcGFyZW50IGNs
YXNzJyk7CisgICAgYXNzZXJ0X2VxdWFscyhzYy5zaXplKCksIDIsICdzaXplKCkgb24gdGhlIHN1
YmNsYXNzIHNob3VsZCBvdmVycmlkZSB0aGUgcGFyZW50Jyk7CisgICAgYXNzZXJ0X3RydWUoc2Mu
c3ViQ2xhc3NNZXRob2QoKSwgJ3N1YkNsYXNzTWV0aG9kKCkgc2hvdWxkIHdvcmsnKTsKKyAgfSwg
YCR7UXVldWluZ1N0cmF0ZWd5Lm5hbWV9OiBzdWJjbGFzc2luZyBzaG91bGQgd29yayBjb3JyZWN0
bHlgKTsKK30KKwordGVzdCgoKSA9PiB7CisgIGNvbnN0IHNpemUgPSAobmV3IENvdW50UXVldWlu
Z1N0cmF0ZWd5KHsgaGlnaFdhdGVyTWFyazogNSB9KSkuc2l6ZTsKKyAgYXNzZXJ0X2VxdWFscyhz
aXplLmxlbmd0aCwgMCk7Cit9LCAnQ291bnRRdWV1aW5nU3RyYXRlZ3k6IHNpemUgc2hvdWxkIGhh
dmUgdGhlIHJpZ2h0IGxlbmd0aCcpOworCit0ZXN0KCgpID0+IHsKKyAgY29uc3Qgc2l6ZSA9IChu
ZXcgQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneSh7IGhpZ2hXYXRlck1hcms6IDUgfSkpLnNpemU7
CisgIGFzc2VydF9lcXVhbHMoc2l6ZS5sZW5ndGgsIDEpOworfSwgJ0J5dGVMZW5ndGhRdWV1aW5n
U3RyYXRlZ3k6IHNpemUgc2hvdWxkIGhhdmUgdGhlIHJpZ2h0IGxlbmd0aCcpOworCit0ZXN0KCgp
ID0+IHsKKyAgY29uc3Qgc2l6ZSA9IDEwMjQ7CisgIGNvbnN0IGNodW5rID0geyBieXRlTGVuZ3Ro
OiBzaXplIH07CisgIGNvbnN0IGNodW5rR2V0dGVyID0geworICAgIGdldCBieXRlTGVuZ3RoKCkg
eyByZXR1cm4gc2l6ZTsgfQorICB9OworICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcignd293IScp
OworICBjb25zdCBjaHVua0dldHRlclRocm93aW5nID0geworICAgIGdldCBieXRlTGVuZ3RoKCkg
eyB0aHJvdyBlcnJvcjsgfQorICB9OworCisgIGNvbnN0IHNpemVGdW5jdGlvbiA9IChuZXcgQ291
bnRRdWV1aW5nU3RyYXRlZ3koeyBoaWdoV2F0ZXJNYXJrOiA1IH0pKS5zaXplOworCisgIGFzc2Vy
dF9lcXVhbHMoc2l6ZUZ1bmN0aW9uKCksIDEsICdzaXplIHJldHVybnMgMSB3aXRoIHVuZGVmaW5l
ZCcpOworICBhc3NlcnRfZXF1YWxzKHNpemVGdW5jdGlvbihudWxsKSwgMSwgJ3NpemUgcmV0dXJu
cyAxIHdpdGggbnVsbCcpOworICBhc3NlcnRfZXF1YWxzKHNpemVGdW5jdGlvbigncG90YXRvJyks
IDEsICdzaXplIHJldHVybnMgMSB3aXRoIG5vbi1vYmplY3QgdHlwZScpOworICBhc3NlcnRfZXF1
YWxzKHNpemVGdW5jdGlvbih7fSksIDEsICdzaXplIHJldHVybnMgMSB3aXRoIGVtcHR5IG9iamVj
dCcpOworICBhc3NlcnRfZXF1YWxzKHNpemVGdW5jdGlvbihjaHVuayksIDEsICdzaXplIHJldHVy
bnMgMSB3aXRoIGEgY2h1bmsnKTsKKyAgYXNzZXJ0X2VxdWFscyhzaXplRnVuY3Rpb24oY2h1bmtH
ZXR0ZXIpLCAxLCAnc2l6ZSByZXR1cm5zIDEgd2l0aCBjaHVuayBnZXR0ZXInKTsKKyAgYXNzZXJ0
X2VxdWFscyhzaXplRnVuY3Rpb24oY2h1bmtHZXR0ZXJUaHJvd2luZyksIDEsCisgICAgJ3NpemUg
cmV0dXJucyAxIHdpdGggY2h1bmsgZ2V0dGVyIHRoYXQgdGhyb3dzJyk7Cit9LCAnQ291bnRRdWV1
aW5nU3RyYXRlZ3k6IHNpemUgYmVoYXZlcyBhcyBleHBlY3RlZCB3aXRoIHN0cmFuZ2UgYXJndW1l
bnRzJyk7CisKK3Rlc3QoKCkgPT4geworICBjb25zdCBzaXplID0gMTAyNDsKKyAgY29uc3QgY2h1
bmsgPSB7IGJ5dGVMZW5ndGg6IHNpemUgfTsKKyAgY29uc3QgY2h1bmtHZXR0ZXIgPSB7CisgICAg
Z2V0IGJ5dGVMZW5ndGgoKSB7IHJldHVybiBzaXplOyB9CisgIH07CisgIGNvbnN0IGVycm9yID0g
bmV3IEVycm9yKCd3b3chJyk7CisgIGNvbnN0IGNodW5rR2V0dGVyVGhyb3dpbmcgPSB7CisgICAg
Z2V0IGJ5dGVMZW5ndGgoKSB7IHRocm93IGVycm9yOyB9CisgIH07CisKKyAgY29uc3Qgc2l6ZUZ1
bmN0aW9uID0gKG5ldyBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5KHsgaGlnaFdhdGVyTWFyazog
NSB9KSkuc2l6ZTsKKworICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4gc2l6ZUZ1
bmN0aW9uKCksICdzaXplIGZhaWxzIHdpdGggdW5kZWZpbmVkJyk7CisgIGFzc2VydF90aHJvd3Nf
anMoVHlwZUVycm9yLCAoKSA9PiBzaXplRnVuY3Rpb24obnVsbCksICdzaXplIGZhaWxzIHdpdGgg
bnVsbCcpOworICBhc3NlcnRfZXF1YWxzKHNpemVGdW5jdGlvbigncG90YXRvJyksIHVuZGVmaW5l
ZCwgJ3NpemUgc3VjY2VlZHMgd2l0aCB1bmRlZmluZWQgd2l0aCBhIHJhbmRvbSBub24tb2JqZWN0
IHR5cGUnKTsKKyAgYXNzZXJ0X2VxdWFscyhzaXplRnVuY3Rpb24oe30pLCB1bmRlZmluZWQsICdz
aXplIHN1Y2NlZWRzIHdpdGggdW5kZWZpbmVkIHdpdGggYW4gb2JqZWN0IHdpdGhvdXQgaHdtIHBy
b3BlcnR5Jyk7CisgIGFzc2VydF9lcXVhbHMoc2l6ZUZ1bmN0aW9uKGNodW5rKSwgc2l6ZSwgJ3Np
emUgc3VjY2VlZHMgd2l0aCB0aGUgcmlnaHQgYW1vdW50IHdpdGggYW4gb2JqZWN0IHdpdGggYSBo
d20nKTsKKyAgYXNzZXJ0X2VxdWFscyhzaXplRnVuY3Rpb24oY2h1bmtHZXR0ZXIpLCBzaXplLAor
ICAgICdzaXplIHN1Y2NlZWRzIHdpdGggdGhlIHJpZ2h0IGFtb3VudCB3aXRoIGFuIG9iamVjdCB3
aXRoIGEgaHdtIGdldHRlcicpOworICBhc3NlcnRfdGhyb3dzX2V4YWN0bHkoZXJyb3IsICgpID0+
IHNpemVGdW5jdGlvbihjaHVua0dldHRlclRocm93aW5nKSwKKyAgICAnc2l6ZSBmYWlscyB3aXRo
IHRoZSBlcnJvciB0aHJvd24gYnkgdGhlIGdldHRlcicpOworfSwgJ0J5dGVMZW5ndGhRdWV1aW5n
U3RyYXRlZ3k6IHNpemUgYmVoYXZlcyBhcyBleHBlY3RlZCB3aXRoIHN0cmFuZ2UgYXJndW1lbnRz
Jyk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3N0cmVhbXMvcXVldWluZy1zdHJhdGVnaWVzLmFueS53b3JrZXItZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3F1ZXVp
bmctc3RyYXRlZ2llcy5hbnkud29ya2VyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lODM3MmEz
NGE2MjM5NDE0ODI3ZmFkOTM4NjM1OGE1ZDIwNWIxMDRmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3F1ZXVpbmct
c3RyYXRlZ2llcy5hbnkud29ya2VyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE4IEBACisKK1BB
U1MgQ291bnRRdWV1aW5nU3RyYXRlZ3k6IENhbiBjb25zdHJ1Y3QgYSB3aXRoIGEgdmFsaWQgaGln
aCB3YXRlciBtYXJrIAorRkFJTCBDb3VudFF1ZXVpbmdTdHJhdGVneTogQ29uc3RydWN0b3IgYmVo
YXZlcyBhcyBleHBlY3RlZCB3aXRoIHN0cmFuZ2UgYXJndW1lbnRzIGFzc2VydF90aHJvd3NfanM6
IGNvbnN0cnVjdGlvbiBmYWlscyB3aXRoIHRydWUgZnVuY3Rpb24gIigpID0+IG5ldyBRdWV1aW5n
U3RyYXRlZ3kodHJ1ZSkiIGRpZCBub3QgdGhyb3cKK0ZBSUwgQ291bnRRdWV1aW5nU3RyYXRlZ3k6
IGhpZ2hXYXRlck1hcmsgY29uc3RydWN0b3IgdmFsdWVzIGFyZSBjb252ZXJ0ZWQgcGVyIHRoZSB1
bnJlc3RyaWN0ZWQgZG91YmxlIHJ1bGVzIGFzc2VydF9lcXVhbHM6IGZhbHNlIGdldHMgc2V0IGNv
cnJlY3RseSBleHBlY3RlZCAobnVtYmVyKSAwIGJ1dCBnb3QgKGJvb2xlYW4pIGZhbHNlCitQQVNT
IENvdW50UXVldWluZ1N0cmF0ZWd5OiBzaXplIGlzIHRoZSBzYW1lIGZ1bmN0aW9uIGFjcm9zcyBh
bGwgaW5zdGFuY2VzIAorUEFTUyBDb3VudFF1ZXVpbmdTdHJhdGVneTogc2l6ZSBzaG91bGQgaGF2
ZSB0aGUgcmlnaHQgbmFtZSAKK0ZBSUwgQ291bnRRdWV1aW5nU3RyYXRlZ3k6IHN1YmNsYXNzaW5n
IHNob3VsZCB3b3JrIGNvcnJlY3RseSBhc3NlcnRfZXF1YWxzOiBjb25zdHJ1Y3Rvci5uYW1lIHNo
b3VsZCBiZSBjb3JyZWN0IGV4cGVjdGVkICJTdWJDbGFzcyIgYnV0IGdvdCAiQ291bnRRdWV1aW5n
U3RyYXRlZ3kiCitQQVNTIEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3k6IENhbiBjb25zdHJ1Y3Qg
YSB3aXRoIGEgdmFsaWQgaGlnaCB3YXRlciBtYXJrIAorRkFJTCBCeXRlTGVuZ3RoUXVldWluZ1N0
cmF0ZWd5OiBDb25zdHJ1Y3RvciBiZWhhdmVzIGFzIGV4cGVjdGVkIHdpdGggc3RyYW5nZSBhcmd1
bWVudHMgYXNzZXJ0X3Rocm93c19qczogY29uc3RydWN0aW9uIGZhaWxzIHdpdGggdHJ1ZSBmdW5j
dGlvbiAiKCkgPT4gbmV3IFF1ZXVpbmdTdHJhdGVneSh0cnVlKSIgZGlkIG5vdCB0aHJvdworRkFJ
TCBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5OiBoaWdoV2F0ZXJNYXJrIGNvbnN0cnVjdG9yIHZh
bHVlcyBhcmUgY29udmVydGVkIHBlciB0aGUgdW5yZXN0cmljdGVkIGRvdWJsZSBydWxlcyBhc3Nl
cnRfZXF1YWxzOiBmYWxzZSBnZXRzIHNldCBjb3JyZWN0bHkgZXhwZWN0ZWQgKG51bWJlcikgMCBi
dXQgZ290IChib29sZWFuKSBmYWxzZQorUEFTUyBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5OiBz
aXplIGlzIHRoZSBzYW1lIGZ1bmN0aW9uIGFjcm9zcyBhbGwgaW5zdGFuY2VzIAorUEFTUyBCeXRl
TGVuZ3RoUXVldWluZ1N0cmF0ZWd5OiBzaXplIHNob3VsZCBoYXZlIHRoZSByaWdodCBuYW1lIAor
RkFJTCBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5OiBzdWJjbGFzc2luZyBzaG91bGQgd29yayBj
b3JyZWN0bHkgYXNzZXJ0X2VxdWFsczogY29uc3RydWN0b3IubmFtZSBzaG91bGQgYmUgY29ycmVj
dCBleHBlY3RlZCAiU3ViQ2xhc3MiIGJ1dCBnb3QgIkJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3ki
CitQQVNTIENvdW50UXVldWluZ1N0cmF0ZWd5OiBzaXplIHNob3VsZCBoYXZlIHRoZSByaWdodCBs
ZW5ndGggCitQQVNTIEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3k6IHNpemUgc2hvdWxkIGhhdmUg
dGhlIHJpZ2h0IGxlbmd0aCAKK1BBU1MgQ291bnRRdWV1aW5nU3RyYXRlZ3k6IHNpemUgYmVoYXZl
cyBhcyBleHBlY3RlZCB3aXRoIHN0cmFuZ2UgYXJndW1lbnRzIAorUEFTUyBCeXRlTGVuZ3RoUXVl
dWluZ1N0cmF0ZWd5OiBzaXplIGJlaGF2ZXMgYXMgZXhwZWN0ZWQgd2l0aCBzdHJhbmdlIGFyZ3Vt
ZW50cyAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zdHJlYW1zL3F1ZXVpbmctc3RyYXRlZ2llcy5hbnkud29ya2VyLmh0bWwgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcXVldWluZy1z
dHJhdGVnaWVzLmFueS53b3JrZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMzgyOTEzNTI4ZTY5M2IzYTVk
NTZjNjYwYTQ1MDYwOTgwYjU0OGMzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3F1ZXVpbmctc3RyYXRlZ2llcy5h
bnkud29ya2VyLmh0bWwKQEAgLTAsMCArMSBAQAorPCEtLSBUaGlzIGZpbGUgaXMgcmVxdWlyZWQg
Zm9yIFdlYktpdCB0ZXN0IGluZnJhc3RydWN0dXJlIHRvIHJ1biB0aGUgdGVtcGxhdGVkIHRlc3Qg
LS0+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3Ry
ZWFtcy9iYWQtYnVmZmVycy1hbmQtdmlld3MuYW55LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0
cmVhbXMvYmFkLWJ1ZmZlcnMtYW5kLXZpZXdzLmFueS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZTRhZDdkOGQ5Yzg3MjFkNmE4ZThjZWVlNGI5YTdlMWQ2MDBmZTVjOAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9y
ZWFkYWJsZS1ieXRlLXN0cmVhbXMvYmFkLWJ1ZmZlcnMtYW5kLXZpZXdzLmFueS1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwzMCBAQAorCitIYXJuZXNzIEVycm9yIChUSU1FT1VUKSwgbWVzc2FnZSA9
IG51bGwKKworRkFJTCBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiByZWFkKClpbmcg
ZnJvbSBhIGNsb3NlZCBzdHJlYW0gc3RpbGwgdHJhbnNmZXJzIHRoZSBidWZmZXIgYXNzZXJ0X25v
dF9lcXVhbHM6IGEgZGlmZmVyZW50IEFycmF5QnVmZmVyIG11c3QgdW5kZXJsaWUgdGhlIHZhbHVl
IGdvdCBkaXNhbGxvd2VkIHZhbHVlIG9iamVjdCAiW29iamVjdCBBcnJheUJ1ZmZlcl0iCitGQUlM
IFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IHJlYWQoKWluZyBmcm9tIGEgc3RyZWFt
IHdpdGggcXVldWVkIGNodW5rcyBzdGlsbCB0cmFuc2ZlcnMgdGhlIGJ1ZmZlciBhc3NlcnRfbm90
X2VxdWFsczogYSBkaWZmZXJlbnQgQXJyYXlCdWZmZXIgbXVzdCB1bmRlcmxpZSB0aGUgdmFsdWUg
Z290IGRpc2FsbG93ZWQgdmFsdWUgb2JqZWN0ICJbb2JqZWN0IEFycmF5QnVmZmVyXSIKK0ZBSUwg
UmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogZW5xdWV1aW5nIGFuIGFscmVhZHktZGV0
YWNoZWQgYnVmZmVyIHRocm93cyBhc3NlcnRfdGhyb3dzX2pzOiBmdW5jdGlvbiAiKCkgPT4gYy5l
bnF1ZXVlKHZpZXcpIiBkaWQgbm90IHRocm93CitGQUlMIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0
ZSBzb3VyY2U6IGVucXVldWluZyBhIHplcm8tbGVuZ3RoIGJ1ZmZlciB0aHJvd3MgYXNzZXJ0X3Ro
cm93c19qczogZnVuY3Rpb24gIigpID0+IGMuZW5xdWV1ZSh2aWV3KSIgZGlkIG5vdCB0aHJvdwor
RkFJTCBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBlbnF1ZXVpbmcgYSB6ZXJvLWxl
bmd0aCB2aWV3IG9uIGEgbm9uLXplcm8tbGVuZ3RoIGJ1ZmZlciB0aHJvd3MgYXNzZXJ0X3Rocm93
c19qczogZnVuY3Rpb24gIigpID0+IGMuZW5xdWV1ZSh2aWV3KSIgZGlkIG5vdCB0aHJvdworVElN
RU9VVCBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiByZWFkaW5nIGludG8gYW4gYWxy
ZWFkeS1kZXRhY2hlZCBidWZmZXIgcmVqZWN0cyBUZXN0IHRpbWVkIG91dAorTk9UUlVOIFJlYWRh
YmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IHJlYWRpbmcgaW50byBhIHplcm8tbGVuZ3RoIGJ1
ZmZlciByZWplY3RzIAorTk9UUlVOIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IHJl
YWRpbmcgaW50byBhIHplcm8tbGVuZ3RoIHZpZXcgb24gYSBub24temVyby1sZW5ndGggYnVmZmVy
IHJlamVjdHMgCitGQUlMIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IHJlc3BvbmQo
KSB0aHJvd3MgaWYgdGhlIEJZT0IgcmVxdWVzdCdzIGJ1ZmZlciBoYXMgYmVlbiBkZXRhY2hlZCAo
aW4gdGhlIHJlYWRhYmxlIHN0YXRlKSBhc3NlcnRfdGhyb3dzX2pzOiByZXNwb25kKCkgbXVzdCB0
aHJvdyBpZiB0aGUgY29ycmVzcG9uZGluZyB2aWV3IGhhcyBiZWNvbWUgZGV0YWNoZWQgZnVuY3Rp
b24gIigpID0+IGMuYnlvYlJlcXVlc3QucmVzcG9uZCgxKSIgZGlkIG5vdCB0aHJvdworRkFJTCBS
ZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiByZXNwb25kKCkgdGhyb3dzIGlmIHRoZSBC
WU9CIHJlcXVlc3QncyBidWZmZXIgaGFzIGJlZW4gZGV0YWNoZWQgKGluIHRoZSBjbG9zZWQgc3Rh
dGUpIGFzc2VydF90aHJvd3NfanM6IHJlc3BvbmQoKSBtdXN0IHRocm93IGlmIHRoZSBjb3JyZXNw
b25kaW5nIHZpZXcgaGFzIGJlY29tZSBkZXRhY2hlZCBmdW5jdGlvbiAiKCkgPT4gYy5ieW9iUmVx
dWVzdC5yZXNwb25kKDApIiBkaWQgbm90IHRocm93CitGQUlMIFJlYWRhYmxlU3RyZWFtIHdpdGgg
Ynl0ZSBzb3VyY2U6IHJlc3BvbmRXaXRoTmV3VmlldygpIHRocm93cyBpZiB0aGUgc3VwcGxpZWQg
dmlldydzIGJ1ZmZlciBoYXMgYmVlbiBkZXRhY2hlZCAoaW4gdGhlIHJlYWRhYmxlIHN0YXRlKSBh
c3NlcnRfdGhyb3dzX2pzOiBmdW5jdGlvbiAiKCkgPT4gYy5ieW9iUmVxdWVzdC5yZXNwb25kV2l0
aE5ld1ZpZXcodmlldykiIGRpZCBub3QgdGhyb3cKK0ZBSUwgUmVhZGFibGVTdHJlYW0gd2l0aCBi
eXRlIHNvdXJjZTogcmVzcG9uZFdpdGhOZXdWaWV3KCkgdGhyb3dzIGlmIHRoZSBzdXBwbGllZCB2
aWV3J3MgYnVmZmVyIGlzIHplcm8tbGVuZ3RoIChpbiB0aGUgcmVhZGFibGUgc3RhdGUpIGFzc2Vy
dF90aHJvd3NfanM6IGZ1bmN0aW9uICIoKSA9PiBjLmJ5b2JSZXF1ZXN0LnJlc3BvbmRXaXRoTmV3
Vmlldyh2aWV3KSIgdGhyZXcgb2JqZWN0ICJSYW5nZUVycm9yOiBJbnZhbGlkIHZhbHVlIGZvciB2
aWV3LmJ5dGVMZW5ndGgiICgiUmFuZ2VFcnJvciIpIGV4cGVjdGVkIGluc3RhbmNlIG9mIGZ1bmN0
aW9uICJmdW5jdGlvbiBUeXBlRXJyb3IoKSB7CisgICAgW25hdGl2ZSBjb2RlXQorfSIgKCJUeXBl
RXJyb3IiKQorRkFJTCBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiByZXNwb25kV2l0
aE5ld1ZpZXcoKSB0aHJvd3MgaWYgdGhlIHN1cHBsaWVkIHZpZXcgaXMgemVyby1sZW5ndGggb24g
YSBub24temVyby1sZW5ndGggYnVmZmVyIChpbiB0aGUgcmVhZGFibGUgc3RhdGUpIGFzc2VydF90
aHJvd3NfanM6IGZ1bmN0aW9uICIoKSA9PiBjLmJ5b2JSZXF1ZXN0LnJlc3BvbmRXaXRoTmV3Vmll
dyh2aWV3KSIgdGhyZXcgb2JqZWN0ICJSYW5nZUVycm9yOiBJbnZhbGlkIHZhbHVlIGZvciB2aWV3
LmJ5dGVMZW5ndGgiICgiUmFuZ2VFcnJvciIpIGV4cGVjdGVkIGluc3RhbmNlIG9mIGZ1bmN0aW9u
ICJmdW5jdGlvbiBUeXBlRXJyb3IoKSB7CisgICAgW25hdGl2ZSBjb2RlXQorfSIgKCJUeXBlRXJy
b3IiKQorRkFJTCBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiByZXNwb25kV2l0aE5l
d1ZpZXcoKSB0aHJvd3MgaWYgdGhlIHN1cHBsaWVkIHZpZXcncyBidWZmZXIgaGFzIGJlZW4gZGV0
YWNoZWQgKGluIHRoZSBjbG9zZWQgc3RhdGUpIGFzc2VydF90aHJvd3NfanM6IGZ1bmN0aW9uICIo
KSA9PiBjLmJ5b2JSZXF1ZXN0LnJlc3BvbmRXaXRoTmV3Vmlldyh6ZXJvTGVuZ3RoVmlldykiIHRo
cmV3IG9iamVjdCAiUmFuZ2VFcnJvcjogSW52YWxpZCB2YWx1ZSBmb3Igdmlldy5ieXRlTGVuZ3Ro
IiAoIlJhbmdlRXJyb3IiKSBleHBlY3RlZCBpbnN0YW5jZSBvZiBmdW5jdGlvbiAiZnVuY3Rpb24g
VHlwZUVycm9yKCkgeworICAgIFtuYXRpdmUgY29kZV0KK30iICgiVHlwZUVycm9yIikKK0ZBSUwg
UmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogcmVzcG9uZFdpdGhOZXdWaWV3KCkgdGhy
b3dzIGlmIHRoZSBzdXBwbGllZCB2aWV3J3MgYnVmZmVyIGlzIHplcm8tbGVuZ3RoIChpbiB0aGUg
Y2xvc2VkIHN0YXRlKSBhc3NlcnRfdGhyb3dzX2pzOiBmdW5jdGlvbiAiKCkgPT4gYy5ieW9iUmVx
dWVzdC5yZXNwb25kV2l0aE5ld1ZpZXcodmlldykiIHRocmV3IG9iamVjdCAiUmFuZ2VFcnJvcjog
SW52YWxpZCB2YWx1ZSBmb3Igdmlldy5ieXRlTGVuZ3RoIiAoIlJhbmdlRXJyb3IiKSBleHBlY3Rl
ZCBpbnN0YW5jZSBvZiBmdW5jdGlvbiAiZnVuY3Rpb24gVHlwZUVycm9yKCkgeworICAgIFtuYXRp
dmUgY29kZV0KK30iICgiVHlwZUVycm9yIikKK0ZBSUwgUmVhZGFibGVTdHJlYW0gd2l0aCBieXRl
IHNvdXJjZTogcmVzcG9uZFdpdGhOZXdWaWV3KCkgdGhyb3dzIGlmIHRoZSBzdXBwbGllZCB2aWV3
IGlzIHplcm8tbGVuZ3RoIG9uIGEgbm9uLXplcm8tbGVuZ3RoIGJ1ZmZlciAoaW4gdGhlIGNsb3Nl
ZCBzdGF0ZSkgYXNzZXJ0X3Rocm93c19qczogZnVuY3Rpb24gIigpID0+IGMuYnlvYlJlcXVlc3Qu
cmVzcG9uZFdpdGhOZXdWaWV3KHZpZXcpIiB0aHJldyBvYmplY3QgIlJhbmdlRXJyb3I6IEludmFs
aWQgdmFsdWUgZm9yIHZpZXcuYnl0ZUxlbmd0aCIgKCJSYW5nZUVycm9yIikgZXhwZWN0ZWQgaW5z
dGFuY2Ugb2YgZnVuY3Rpb24gImZ1bmN0aW9uIFR5cGVFcnJvcigpIHsKKyAgICBbbmF0aXZlIGNv
ZGVdCit9IiAoIlR5cGVFcnJvciIpCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMvYmFk
LWJ1ZmZlcnMtYW5kLXZpZXdzLmFueS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFtcy9iYWQtYnVmZmVy
cy1hbmQtdmlld3MuYW55Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjM4MjkxMzUyOGU2OTNiM2E1ZDU2YzY2
MGE0NTA2MDk4MGI1NDhjMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMvYmFk
LWJ1ZmZlcnMtYW5kLXZpZXdzLmFueS5odG1sCkBAIC0wLDAgKzEgQEAKKzwhLS0gVGhpcyBmaWxl
IGlzIHJlcXVpcmVkIGZvciBXZWJLaXQgdGVzdCBpbmZyYXN0cnVjdHVyZSB0byBydW4gdGhlIHRl
bXBsYXRlZCB0ZXN0IC0tPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFk
YWJsZS1ieXRlLXN0cmVhbXMvYmFkLWJ1ZmZlcnMtYW5kLXZpZXdzLmFueS5qcyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRl
LXN0cmVhbXMvYmFkLWJ1ZmZlcnMtYW5kLXZpZXdzLmFueS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNzc3MjA4
ZGE0NGIyOWI4MjJiZjkzNDVkYmUyMGUzM2JiNTcwOGI5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxl
LWJ5dGUtc3RyZWFtcy9iYWQtYnVmZmVycy1hbmQtdmlld3MuYW55LmpzCkBAIC0wLDAgKzEsMjU4
IEBACisvLyBNRVRBOiBnbG9iYWw9d2luZG93LHdvcmtlcixqc3NoZWxsCisndXNlIHN0cmljdCc7
CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisgIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0
cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgYy5jbG9zZSgpOworICAgIH0sCisgICAgdHlw
ZTogJ2J5dGVzJworICB9KTsKKworICBjb25zdCByZWFkZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKHsg
bW9kZTogJ2J5b2InIH0pOworICBjb25zdCB2aWV3ID0gbmV3IFVpbnQ4QXJyYXkoWzEsIDIsIDNd
KTsKKyAgcmV0dXJuIHJlYWRlci5yZWFkKHZpZXcpLnRoZW4oKHsgdmFsdWUsIGRvbmUgfSkgPT4g
eworICAgIC8vIFNhbml0eSBjaGVja3MKKyAgICBhc3NlcnRfdHJ1ZSh2YWx1ZSBpbnN0YW5jZW9m
IFVpbnQ4QXJyYXksICdUaGUgdmFsdWUgcmVhZCBtdXN0IGJlIGEgVWludDhBcnJheScpOworICAg
IGFzc2VydF9ub3RfZXF1YWxzKHZhbHVlLCB2aWV3LCAnVGhlIHZhbHVlIHJlYWQgbXVzdCBub3Qg
YmUgdGhlICpzYW1lKiBVaW50OEFycmF5Jyk7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh2YWx1
ZSwgW10sICdUaGUgdmFsdWUgcmVhZCBtdXN0IGJlIGFuIGVtcHR5IFVpbnQ4QXJyYXksIHNpbmNl
IHRoZSBzdHJlYW0gaXMgY2xvc2VkJyk7CisgICAgYXNzZXJ0X3RydWUoZG9uZSwgJ2RvbmUgbXVz
dCBiZSB0cnVlLCBzaW5jZSB0aGUgc3RyZWFtIGlzIGNsb3NlZCcpOworCisgICAgLy8gVGhlIGlt
cG9ydGFudCBhc3NlcnRpb25zCisgICAgYXNzZXJ0X25vdF9lcXVhbHModmFsdWUuYnVmZmVyLCB2
aWV3LmJ1ZmZlciwgJ2EgZGlmZmVyZW50IEFycmF5QnVmZmVyIG11c3QgdW5kZXJsaWUgdGhlIHZh
bHVlJyk7CisgICAgYXNzZXJ0X2VxdWFscyh2aWV3LmJ1ZmZlci5ieXRlTGVuZ3RoLCAwLCAndGhl
IG9yaWdpbmFsIGJ1ZmZlciBtdXN0IGJlIGRldGFjaGVkJyk7CisgIH0pOworfSwgJ1JlYWRhYmxl
U3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IHJlYWQoKWluZyBmcm9tIGEgY2xvc2VkIHN0cmVhbSBz
dGlsbCB0cmFuc2ZlcnMgdGhlIGJ1ZmZlcicpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworICBj
b25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAg
IGMuZW5xdWV1ZShuZXcgVWludDhBcnJheShbMSwgMiwgM10pKTsKKyAgICB9LAorICAgIHR5cGU6
ICdieXRlcycKKyAgfSk7CisKKyAgY29uc3QgcmVhZGVyID0gc3RyZWFtLmdldFJlYWRlcih7IG1v
ZGU6ICdieW9iJyB9KTsKKyAgY29uc3QgdmlldyA9IG5ldyBVaW50OEFycmF5KFs0LCA1LCA2XSk7
CisgIHJldHVybiByZWFkZXIucmVhZCh2aWV3KS50aGVuKCh7IHZhbHVlLCBkb25lIH0pID0+IHsK
KyAgICAvLyBTYW5pdHkgY2hlY2tzCisgICAgYXNzZXJ0X3RydWUodmFsdWUgaW5zdGFuY2VvZiBV
aW50OEFycmF5LCAnVGhlIHZhbHVlIHJlYWQgbXVzdCBiZSBhIFVpbnQ4QXJyYXknKTsKKyAgICBh
c3NlcnRfbm90X2VxdWFscyh2YWx1ZSwgdmlldywgJ1RoZSB2YWx1ZSByZWFkIG11c3Qgbm90IGJl
IHRoZSAqc2FtZSogVWludDhBcnJheScpOworICAgIGFzc2VydF9hcnJheV9lcXVhbHModmFsdWUs
IFsxLCAyLCAzXSwgJ1RoZSB2YWx1ZSByZWFkIG11c3QgYmUgdGhlIGVucXVldWVkIFVpbnQ4QXJy
YXksIG5vdCB0aGUgb3JpZ2luYWwgdmFsdWVzJyk7CisgICAgYXNzZXJ0X2ZhbHNlKGRvbmUsICdk
b25lIG11c3QgYmUgZmFsc2UsIHNpbmNlIHRoZSBzdHJlYW0gaXMgbm90IGNsb3NlZCcpOworCisg
ICAgLy8gVGhlIGltcG9ydGFudCBhc3NlcnRpb25zCisgICAgYXNzZXJ0X25vdF9lcXVhbHModmFs
dWUuYnVmZmVyLCB2aWV3LmJ1ZmZlciwgJ2EgZGlmZmVyZW50IEFycmF5QnVmZmVyIG11c3QgdW5k
ZXJsaWUgdGhlIHZhbHVlJyk7CisgICAgYXNzZXJ0X2VxdWFscyh2aWV3LmJ1ZmZlci5ieXRlTGVu
Z3RoLCAwLCAndGhlIG9yaWdpbmFsIGJ1ZmZlciBtdXN0IGJlIGRldGFjaGVkJyk7CisgIH0pOwor
fSwgJ1JlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IHJlYWQoKWluZyBmcm9tIGEgc3Ry
ZWFtIHdpdGggcXVldWVkIGNodW5rcyBzdGlsbCB0cmFuc2ZlcnMgdGhlIGJ1ZmZlcicpOworCit0
ZXN0KCgpID0+IHsKKyAgbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAg
ICBjb25zdCB2aWV3ID0gbmV3IFVpbnQ4QXJyYXkoWzEsIDIsIDNdKTsKKyAgICAgIGMuZW5xdWV1
ZSh2aWV3KTsKKyAgICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiBjLmVucXVl
dWUodmlldykpOworICAgIH0sCisgICAgdHlwZTogJ2J5dGVzJworICB9KTsKK30sICdSZWFkYWJs
ZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBlbnF1ZXVpbmcgYW4gYWxyZWFkeS1kZXRhY2hlZCBi
dWZmZXIgdGhyb3dzJyk7CisKK3Rlc3QoKCkgPT4geworICBuZXcgUmVhZGFibGVTdHJlYW0oewor
ICAgIHN0YXJ0KGMpIHsKKyAgICAgIGNvbnN0IHZpZXcgPSBuZXcgVWludDhBcnJheShbXSk7Cisg
ICAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4gYy5lbnF1ZXVlKHZpZXcpKTsK
KyAgICB9LAorICAgIHR5cGU6ICdieXRlcycKKyAgfSk7Cit9LCAnUmVhZGFibGVTdHJlYW0gd2l0
aCBieXRlIHNvdXJjZTogZW5xdWV1aW5nIGEgemVyby1sZW5ndGggYnVmZmVyIHRocm93cycpOwor
Cit0ZXN0KCgpID0+IHsKKyAgbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7Cisg
ICAgICBjb25zdCB2aWV3ID0gbmV3IFVpbnQ4QXJyYXkobmV3IEFycmF5QnVmZmVyKDEwKSwgMCwg
MCk7CisgICAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4gYy5lbnF1ZXVlKHZp
ZXcpKTsKKyAgICB9LAorICAgIHR5cGU6ICdieXRlcycKKyAgfSk7Cit9LCAnUmVhZGFibGVTdHJl
YW0gd2l0aCBieXRlIHNvdXJjZTogZW5xdWV1aW5nIGEgemVyby1sZW5ndGggdmlldyBvbiBhIG5v
bi16ZXJvLWxlbmd0aCBidWZmZXIgdGhyb3dzJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAg
Y29uc3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAg
ICBjLmVucXVldWUobmV3IFVpbnQ4QXJyYXkoWzEsIDIsIDNdKSk7CisgICAgfSwKKyAgICB0eXBl
OiAnYnl0ZXMnCisgIH0pOworICBjb25zdCByZWFkZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKHsgbW9k
ZTogJ2J5b2InIH0pOworCisgIGNvbnN0IHZpZXcgPSBuZXcgVWludDhBcnJheShbNCwgNSwgNl0p
OworICByZXR1cm4gcmVhZGVyLnJlYWQodmlldykudGhlbigoKSA9PiB7CisgICAgLy8gdmlldyBp
cyBub3cgZGV0YWNoZWQKKyAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2pzKHQsIFR5cGVFcnJv
ciwgcmVhZGVyLnJlYWQodmlldykpOworICB9KTsKK30sICdSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5
dGUgc291cmNlOiByZWFkaW5nIGludG8gYW4gYWxyZWFkeS1kZXRhY2hlZCBidWZmZXIgcmVqZWN0
cycpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJs
ZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgYy5lbnF1ZXVlKG5ldyBVaW50OEFycmF5
KFsxLCAyLCAzXSkpOworICAgIH0sCisgICAgdHlwZTogJ2J5dGVzJworICB9KTsKKyAgY29uc3Qg
cmVhZGVyID0gc3RyZWFtLmdldFJlYWRlcih7IG1vZGU6ICdieW9iJyB9KTsKKworICBjb25zdCB2
aWV3ID0gbmV3IFVpbnQ4QXJyYXkoKTsKKyAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19qcyh0LCBU
eXBlRXJyb3IsIHJlYWRlci5yZWFkKHZpZXcpKTsKK30sICdSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5
dGUgc291cmNlOiByZWFkaW5nIGludG8gYSB6ZXJvLWxlbmd0aCBidWZmZXIgcmVqZWN0cycpOwor
Citwcm9taXNlX3Rlc3QodCA9PiB7CisgIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVh
bSh7CisgICAgc3RhcnQoYykgeworICAgICAgYy5lbnF1ZXVlKG5ldyBVaW50OEFycmF5KFsxLCAy
LCAzXSkpOworICAgIH0sCisgICAgdHlwZTogJ2J5dGVzJworICB9KTsKKyAgY29uc3QgcmVhZGVy
ID0gc3RyZWFtLmdldFJlYWRlcih7IG1vZGU6ICdieW9iJyB9KTsKKworICBjb25zdCB2aWV3ID0g
bmV3IFVpbnQ4QXJyYXkobmV3IEFycmF5QnVmZmVyKDEwKSwgMCwgMCk7CisgIHJldHVybiBwcm9t
aXNlX3JlamVjdHNfanModCwgVHlwZUVycm9yLCByZWFkZXIucmVhZCh2aWV3KSk7Cit9LCAnUmVh
ZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogcmVhZGluZyBpbnRvIGEgemVyby1sZW5ndGgg
dmlldyBvbiBhIG5vbi16ZXJvLWxlbmd0aCBidWZmZXIgcmVqZWN0cycpOworCithc3luY190ZXN0
KHQgPT4geworICBjb25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHB1bGw6
IHQuc3RlcF9mdW5jX2RvbmUoYyA9PiB7CisgICAgICAvLyBEZXRhY2ggaXQgYnkgcmVhZGluZyBp
bnRvIGl0CisgICAgICByZWFkZXIucmVhZChjLmJ5b2JSZXF1ZXN0LnZpZXcpOworCisgICAgICBh
c3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4gYy5ieW9iUmVxdWVzdC5yZXNwb25kKDEp
LAorICAgICAgICAncmVzcG9uZCgpIG11c3QgdGhyb3cgaWYgdGhlIGNvcnJlc3BvbmRpbmcgdmll
dyBoYXMgYmVjb21lIGRldGFjaGVkJyk7CisgICAgfSksCisgICAgdHlwZTogJ2J5dGVzJworICB9
KTsKKyAgY29uc3QgcmVhZGVyID0gc3RyZWFtLmdldFJlYWRlcih7IG1vZGU6ICdieW9iJyB9KTsK
KworICByZWFkZXIucmVhZChuZXcgVWludDhBcnJheShbNCwgNSwgNl0pKTsKK30sICdSZWFkYWJs
ZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiByZXNwb25kKCkgdGhyb3dzIGlmIHRoZSBCWU9CIHJl
cXVlc3RcJ3MgYnVmZmVyIGhhcyBiZWVuIGRldGFjaGVkIChpbiB0aGUgJyArCisgICAncmVhZGFi
bGUgc3RhdGUpJyk7CisKK2FzeW5jX3Rlc3QodCA9PiB7CisgIGNvbnN0IHN0cmVhbSA9IG5ldyBS
ZWFkYWJsZVN0cmVhbSh7CisgICAgcHVsbDogdC5zdGVwX2Z1bmNfZG9uZShjID0+IHsKKyAgICAg
IC8vIERldGFjaCBpdCBieSByZWFkaW5nIGludG8gaXQKKyAgICAgIHJlYWRlci5yZWFkKGMuYnlv
YlJlcXVlc3Qudmlldyk7CisKKyAgICAgIGMuY2xvc2UoKTsKKworICAgICAgYXNzZXJ0X3Rocm93
c19qcyhUeXBlRXJyb3IsICgpID0+IGMuYnlvYlJlcXVlc3QucmVzcG9uZCgwKSwKKyAgICAgICAg
J3Jlc3BvbmQoKSBtdXN0IHRocm93IGlmIHRoZSBjb3JyZXNwb25kaW5nIHZpZXcgaGFzIGJlY29t
ZSBkZXRhY2hlZCcpOworICAgIH0pLAorICAgIHR5cGU6ICdieXRlcycKKyAgfSk7CisgIGNvbnN0
IHJlYWRlciA9IHN0cmVhbS5nZXRSZWFkZXIoeyBtb2RlOiAnYnlvYicgfSk7CisKKyAgcmVhZGVy
LnJlYWQobmV3IFVpbnQ4QXJyYXkoWzQsIDUsIDZdKSk7Cit9LCAnUmVhZGFibGVTdHJlYW0gd2l0
aCBieXRlIHNvdXJjZTogcmVzcG9uZCgpIHRocm93cyBpZiB0aGUgQllPQiByZXF1ZXN0XCdzIGJ1
ZmZlciBoYXMgYmVlbiBkZXRhY2hlZCAoaW4gdGhlICcgKworICAgJ2Nsb3NlZCBzdGF0ZSknKTsK
KworYXN5bmNfdGVzdCh0ID0+IHsKKyAgY29uc3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFt
KHsKKyAgICBwdWxsOiB0LnN0ZXBfZnVuY19kb25lKGMgPT4geworICAgICAgLy8gRGV0YWNoIGl0
IGJ5IHJlYWRpbmcgaW50byBpdAorICAgICAgY29uc3QgdmlldyA9IG5ldyBVaW50OEFycmF5KFsx
LCAyLCAzXSk7CisgICAgICByZWFkZXIucmVhZCh2aWV3KTsKKworICAgICAgYXNzZXJ0X3Rocm93
c19qcyhUeXBlRXJyb3IsICgpID0+IGMuYnlvYlJlcXVlc3QucmVzcG9uZFdpdGhOZXdWaWV3KHZp
ZXcpKTsKKyAgICB9KSwKKyAgICB0eXBlOiAnYnl0ZXMnCisgIH0pOworICBjb25zdCByZWFkZXIg
PSBzdHJlYW0uZ2V0UmVhZGVyKHsgbW9kZTogJ2J5b2InIH0pOworCisgIHJlYWRlci5yZWFkKG5l
dyBVaW50OEFycmF5KFs0LCA1LCA2XSkpOworfSwgJ1JlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBz
b3VyY2U6IHJlc3BvbmRXaXRoTmV3VmlldygpIHRocm93cyBpZiB0aGUgc3VwcGxpZWQgdmlld1wn
cyBidWZmZXIgaGFzIGJlZW4gZGV0YWNoZWQgJyArCisgICAgJyhpbiB0aGUgcmVhZGFibGUgc3Rh
dGUpJyk7CisKK2FzeW5jX3Rlc3QodCA9PiB7CisgIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJs
ZVN0cmVhbSh7CisgICAgcHVsbDogdC5zdGVwX2Z1bmNfZG9uZShjID0+IHsKKyAgICAgIGNvbnN0
IHZpZXcgPSBuZXcgVWludDhBcnJheSgpOworCisgICAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVF
cnJvciwgKCkgPT4gYy5ieW9iUmVxdWVzdC5yZXNwb25kV2l0aE5ld1ZpZXcodmlldykpOworICAg
IH0pLAorICAgIHR5cGU6ICdieXRlcycKKyAgfSk7CisgIGNvbnN0IHJlYWRlciA9IHN0cmVhbS5n
ZXRSZWFkZXIoeyBtb2RlOiAnYnlvYicgfSk7CisKKyAgcmVhZGVyLnJlYWQobmV3IFVpbnQ4QXJy
YXkoWzQsIDUsIDZdKSk7Cit9LCAnUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogcmVz
cG9uZFdpdGhOZXdWaWV3KCkgdGhyb3dzIGlmIHRoZSBzdXBwbGllZCB2aWV3XCdzIGJ1ZmZlciBp
cyB6ZXJvLWxlbmd0aCAnICsKKyAgICAnKGluIHRoZSByZWFkYWJsZSBzdGF0ZSknKTsKKworYXN5
bmNfdGVzdCh0ID0+IHsKKyAgY29uc3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAg
ICBwdWxsOiB0LnN0ZXBfZnVuY19kb25lKGMgPT4geworICAgICAgY29uc3QgdmlldyA9IG5ldyBV
aW50OEFycmF5KG5ldyBBcnJheUJ1ZmZlcigxMCksIDAsIDApOworCisgICAgICBhc3NlcnRfdGhy
b3dzX2pzKFR5cGVFcnJvciwgKCkgPT4gYy5ieW9iUmVxdWVzdC5yZXNwb25kV2l0aE5ld1ZpZXco
dmlldykpOworICAgIH0pLAorICAgIHR5cGU6ICdieXRlcycKKyAgfSk7CisgIGNvbnN0IHJlYWRl
ciA9IHN0cmVhbS5nZXRSZWFkZXIoeyBtb2RlOiAnYnlvYicgfSk7CisKKyAgcmVhZGVyLnJlYWQo
bmV3IFVpbnQ4QXJyYXkoWzQsIDUsIDZdKSk7Cit9LCAnUmVhZGFibGVTdHJlYW0gd2l0aCBieXRl
IHNvdXJjZTogcmVzcG9uZFdpdGhOZXdWaWV3KCkgdGhyb3dzIGlmIHRoZSBzdXBwbGllZCB2aWV3
IGlzIHplcm8tbGVuZ3RoIG9uIGEgJyArCisgICAgJ25vbi16ZXJvLWxlbmd0aCBidWZmZXIgKGlu
IHRoZSByZWFkYWJsZSBzdGF0ZSknKTsKKworYXN5bmNfdGVzdCh0ID0+IHsKKyAgY29uc3Qgc3Ry
ZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBwdWxsOiB0LnN0ZXBfZnVuY19kb25lKGMg
PT4geworICAgICAgLy8gRGV0YWNoIGl0IGJ5IHJlYWRpbmcgaW50byBpdAorICAgICAgY29uc3Qg
dmlldyA9IG5ldyBVaW50OEFycmF5KFsxLCAyLCAzXSk7CisgICAgICByZWFkZXIucmVhZCh2aWV3
KTsKKworICAgICAgYy5jbG9zZSgpOworCisgICAgICBjb25zdCB6ZXJvTGVuZ3RoVmlldyA9IG5l
dyBVaW50OEFycmF5KHZpZXcuYnVmZmVyLCAwLCAwKTsKKyAgICAgIGFzc2VydF90aHJvd3NfanMo
VHlwZUVycm9yLCAoKSA9PiBjLmJ5b2JSZXF1ZXN0LnJlc3BvbmRXaXRoTmV3Vmlldyh6ZXJvTGVu
Z3RoVmlldykpOworICAgIH0pLAorICAgIHR5cGU6ICdieXRlcycKKyAgfSk7CisgIGNvbnN0IHJl
YWRlciA9IHN0cmVhbS5nZXRSZWFkZXIoeyBtb2RlOiAnYnlvYicgfSk7CisKKyAgcmVhZGVyLnJl
YWQobmV3IFVpbnQ4QXJyYXkoWzQsIDUsIDZdKSk7Cit9LCAnUmVhZGFibGVTdHJlYW0gd2l0aCBi
eXRlIHNvdXJjZTogcmVzcG9uZFdpdGhOZXdWaWV3KCkgdGhyb3dzIGlmIHRoZSBzdXBwbGllZCB2
aWV3XCdzIGJ1ZmZlciBoYXMgYmVlbiBkZXRhY2hlZCAnICsKKyAgICcoaW4gdGhlIGNsb3NlZCBz
dGF0ZSknKTsKKworYXN5bmNfdGVzdCh0ID0+IHsKKyAgY29uc3Qgc3RyZWFtID0gbmV3IFJlYWRh
YmxlU3RyZWFtKHsKKyAgICBwdWxsOiB0LnN0ZXBfZnVuY19kb25lKGMgPT4geworICAgICAgY29u
c3QgdmlldyA9IG5ldyBVaW50OEFycmF5KCk7CisKKyAgICAgIGMuY2xvc2UoKTsKKworICAgICAg
YXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IGMuYnlvYlJlcXVlc3QucmVzcG9uZFdp
dGhOZXdWaWV3KHZpZXcpKTsKKyAgICB9KSwKKyAgICB0eXBlOiAnYnl0ZXMnCisgIH0pOworICBj
b25zdCByZWFkZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKHsgbW9kZTogJ2J5b2InIH0pOworCisgIHJl
YWRlci5yZWFkKG5ldyBVaW50OEFycmF5KFs0LCA1LCA2XSkpOworfSwgJ1JlYWRhYmxlU3RyZWFt
IHdpdGggYnl0ZSBzb3VyY2U6IHJlc3BvbmRXaXRoTmV3VmlldygpIHRocm93cyBpZiB0aGUgc3Vw
cGxpZWQgdmlld1wncyBidWZmZXIgaXMgemVyby1sZW5ndGggJyArCisgICAnKGluIHRoZSBjbG9z
ZWQgc3RhdGUpJyk7CisKK2FzeW5jX3Rlc3QodCA9PiB7CisgIGNvbnN0IHN0cmVhbSA9IG5ldyBS
ZWFkYWJsZVN0cmVhbSh7CisgICAgcHVsbDogdC5zdGVwX2Z1bmNfZG9uZShjID0+IHsKKyAgICAg
IGNvbnN0IHZpZXcgPSBuZXcgVWludDhBcnJheShuZXcgQXJyYXlCdWZmZXIoMTApLCAwLCAwKTsK
KworICAgICAgYy5jbG9zZSgpOworCisgICAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwg
KCkgPT4gYy5ieW9iUmVxdWVzdC5yZXNwb25kV2l0aE5ld1ZpZXcodmlldykpOworICAgIH0pLAor
ICAgIHR5cGU6ICdieXRlcycKKyAgfSk7CisgIGNvbnN0IHJlYWRlciA9IHN0cmVhbS5nZXRSZWFk
ZXIoeyBtb2RlOiAnYnlvYicgfSk7CisKKyAgcmVhZGVyLnJlYWQobmV3IFVpbnQ4QXJyYXkoWzQs
IDUsIDZdKSk7Cit9LCAnUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogcmVzcG9uZFdp
dGhOZXdWaWV3KCkgdGhyb3dzIGlmIHRoZSBzdXBwbGllZCB2aWV3IGlzIHplcm8tbGVuZ3RoIG9u
IGEgJyArCisgICAgJ25vbi16ZXJvLWxlbmd0aCBidWZmZXIgKGluIHRoZSBjbG9zZWQgc3RhdGUp
Jyk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL2JhZC1idWZmZXJzLWFuZC12aWV3cy5h
bnkud29ya2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMvYmFkLWJ1ZmZlcnMtYW5k
LXZpZXdzLmFueS53b3JrZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU0YWQ3ZDhkOWM4NzIx
ZDZhOGU4Y2VlZTRiOWE3ZTFkNjAwZmU1YzgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1z
dHJlYW1zL2JhZC1idWZmZXJzLWFuZC12aWV3cy5hbnkud29ya2VyLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDMwIEBACisKK0hhcm5lc3MgRXJyb3IgKFRJTUVPVVQpLCBtZXNzYWdlID0gbnVsbAor
CitGQUlMIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IHJlYWQoKWluZyBmcm9tIGEg
Y2xvc2VkIHN0cmVhbSBzdGlsbCB0cmFuc2ZlcnMgdGhlIGJ1ZmZlciBhc3NlcnRfbm90X2VxdWFs
czogYSBkaWZmZXJlbnQgQXJyYXlCdWZmZXIgbXVzdCB1bmRlcmxpZSB0aGUgdmFsdWUgZ290IGRp
c2FsbG93ZWQgdmFsdWUgb2JqZWN0ICJbb2JqZWN0IEFycmF5QnVmZmVyXSIKK0ZBSUwgUmVhZGFi
bGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogcmVhZCgpaW5nIGZyb20gYSBzdHJlYW0gd2l0aCBx
dWV1ZWQgY2h1bmtzIHN0aWxsIHRyYW5zZmVycyB0aGUgYnVmZmVyIGFzc2VydF9ub3RfZXF1YWxz
OiBhIGRpZmZlcmVudCBBcnJheUJ1ZmZlciBtdXN0IHVuZGVybGllIHRoZSB2YWx1ZSBnb3QgZGlz
YWxsb3dlZCB2YWx1ZSBvYmplY3QgIltvYmplY3QgQXJyYXlCdWZmZXJdIgorRkFJTCBSZWFkYWJs
ZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBlbnF1ZXVpbmcgYW4gYWxyZWFkeS1kZXRhY2hlZCBi
dWZmZXIgdGhyb3dzIGFzc2VydF90aHJvd3NfanM6IGZ1bmN0aW9uICIoKSA9PiBjLmVucXVldWUo
dmlldykiIGRpZCBub3QgdGhyb3cKK0ZBSUwgUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJj
ZTogZW5xdWV1aW5nIGEgemVyby1sZW5ndGggYnVmZmVyIHRocm93cyBhc3NlcnRfdGhyb3dzX2pz
OiBmdW5jdGlvbiAiKCkgPT4gYy5lbnF1ZXVlKHZpZXcpIiBkaWQgbm90IHRocm93CitGQUlMIFJl
YWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IGVucXVldWluZyBhIHplcm8tbGVuZ3RoIHZp
ZXcgb24gYSBub24temVyby1sZW5ndGggYnVmZmVyIHRocm93cyBhc3NlcnRfdGhyb3dzX2pzOiBm
dW5jdGlvbiAiKCkgPT4gYy5lbnF1ZXVlKHZpZXcpIiBkaWQgbm90IHRocm93CitUSU1FT1VUIFJl
YWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IHJlYWRpbmcgaW50byBhbiBhbHJlYWR5LWRl
dGFjaGVkIGJ1ZmZlciByZWplY3RzIFRlc3QgdGltZWQgb3V0CitOT1RSVU4gUmVhZGFibGVTdHJl
YW0gd2l0aCBieXRlIHNvdXJjZTogcmVhZGluZyBpbnRvIGEgemVyby1sZW5ndGggYnVmZmVyIHJl
amVjdHMgCitOT1RSVU4gUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogcmVhZGluZyBp
bnRvIGEgemVyby1sZW5ndGggdmlldyBvbiBhIG5vbi16ZXJvLWxlbmd0aCBidWZmZXIgcmVqZWN0
cyAKK0ZBSUwgUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogcmVzcG9uZCgpIHRocm93
cyBpZiB0aGUgQllPQiByZXF1ZXN0J3MgYnVmZmVyIGhhcyBiZWVuIGRldGFjaGVkIChpbiB0aGUg
cmVhZGFibGUgc3RhdGUpIGFzc2VydF90aHJvd3NfanM6IHJlc3BvbmQoKSBtdXN0IHRocm93IGlm
IHRoZSBjb3JyZXNwb25kaW5nIHZpZXcgaGFzIGJlY29tZSBkZXRhY2hlZCBmdW5jdGlvbiAiKCkg
PT4gYy5ieW9iUmVxdWVzdC5yZXNwb25kKDEpIiBkaWQgbm90IHRocm93CitGQUlMIFJlYWRhYmxl
U3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IHJlc3BvbmQoKSB0aHJvd3MgaWYgdGhlIEJZT0IgcmVx
dWVzdCdzIGJ1ZmZlciBoYXMgYmVlbiBkZXRhY2hlZCAoaW4gdGhlIGNsb3NlZCBzdGF0ZSkgYXNz
ZXJ0X3Rocm93c19qczogcmVzcG9uZCgpIG11c3QgdGhyb3cgaWYgdGhlIGNvcnJlc3BvbmRpbmcg
dmlldyBoYXMgYmVjb21lIGRldGFjaGVkIGZ1bmN0aW9uICIoKSA9PiBjLmJ5b2JSZXF1ZXN0LnJl
c3BvbmQoMCkiIGRpZCBub3QgdGhyb3cKK0ZBSUwgUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNv
dXJjZTogcmVzcG9uZFdpdGhOZXdWaWV3KCkgdGhyb3dzIGlmIHRoZSBzdXBwbGllZCB2aWV3J3Mg
YnVmZmVyIGhhcyBiZWVuIGRldGFjaGVkIChpbiB0aGUgcmVhZGFibGUgc3RhdGUpIGFzc2VydF90
aHJvd3NfanM6IGZ1bmN0aW9uICIoKSA9PiBjLmJ5b2JSZXF1ZXN0LnJlc3BvbmRXaXRoTmV3Vmll
dyh2aWV3KSIgZGlkIG5vdCB0aHJvdworRkFJTCBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291
cmNlOiByZXNwb25kV2l0aE5ld1ZpZXcoKSB0aHJvd3MgaWYgdGhlIHN1cHBsaWVkIHZpZXcncyBi
dWZmZXIgaXMgemVyby1sZW5ndGggKGluIHRoZSByZWFkYWJsZSBzdGF0ZSkgYXNzZXJ0X3Rocm93
c19qczogZnVuY3Rpb24gIigpID0+IGMuYnlvYlJlcXVlc3QucmVzcG9uZFdpdGhOZXdWaWV3KHZp
ZXcpIiB0aHJldyBvYmplY3QgIlJhbmdlRXJyb3I6IEludmFsaWQgdmFsdWUgZm9yIHZpZXcuYnl0
ZUxlbmd0aCIgKCJSYW5nZUVycm9yIikgZXhwZWN0ZWQgaW5zdGFuY2Ugb2YgZnVuY3Rpb24gImZ1
bmN0aW9uIFR5cGVFcnJvcigpIHsKKyAgICBbbmF0aXZlIGNvZGVdCit9IiAoIlR5cGVFcnJvciIp
CitGQUlMIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IHJlc3BvbmRXaXRoTmV3Vmll
dygpIHRocm93cyBpZiB0aGUgc3VwcGxpZWQgdmlldyBpcyB6ZXJvLWxlbmd0aCBvbiBhIG5vbi16
ZXJvLWxlbmd0aCBidWZmZXIgKGluIHRoZSByZWFkYWJsZSBzdGF0ZSkgYXNzZXJ0X3Rocm93c19q
czogZnVuY3Rpb24gIigpID0+IGMuYnlvYlJlcXVlc3QucmVzcG9uZFdpdGhOZXdWaWV3KHZpZXcp
IiB0aHJldyBvYmplY3QgIlJhbmdlRXJyb3I6IEludmFsaWQgdmFsdWUgZm9yIHZpZXcuYnl0ZUxl
bmd0aCIgKCJSYW5nZUVycm9yIikgZXhwZWN0ZWQgaW5zdGFuY2Ugb2YgZnVuY3Rpb24gImZ1bmN0
aW9uIFR5cGVFcnJvcigpIHsKKyAgICBbbmF0aXZlIGNvZGVdCit9IiAoIlR5cGVFcnJvciIpCitG
QUlMIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IHJlc3BvbmRXaXRoTmV3Vmlldygp
IHRocm93cyBpZiB0aGUgc3VwcGxpZWQgdmlldydzIGJ1ZmZlciBoYXMgYmVlbiBkZXRhY2hlZCAo
aW4gdGhlIGNsb3NlZCBzdGF0ZSkgYXNzZXJ0X3Rocm93c19qczogZnVuY3Rpb24gIigpID0+IGMu
YnlvYlJlcXVlc3QucmVzcG9uZFdpdGhOZXdWaWV3KHplcm9MZW5ndGhWaWV3KSIgdGhyZXcgb2Jq
ZWN0ICJSYW5nZUVycm9yOiBJbnZhbGlkIHZhbHVlIGZvciB2aWV3LmJ5dGVMZW5ndGgiICgiUmFu
Z2VFcnJvciIpIGV4cGVjdGVkIGluc3RhbmNlIG9mIGZ1bmN0aW9uICJmdW5jdGlvbiBUeXBlRXJy
b3IoKSB7CisgICAgW25hdGl2ZSBjb2RlXQorfSIgKCJUeXBlRXJyb3IiKQorRkFJTCBSZWFkYWJs
ZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiByZXNwb25kV2l0aE5ld1ZpZXcoKSB0aHJvd3MgaWYg
dGhlIHN1cHBsaWVkIHZpZXcncyBidWZmZXIgaXMgemVyby1sZW5ndGggKGluIHRoZSBjbG9zZWQg
c3RhdGUpIGFzc2VydF90aHJvd3NfanM6IGZ1bmN0aW9uICIoKSA9PiBjLmJ5b2JSZXF1ZXN0LnJl
c3BvbmRXaXRoTmV3Vmlldyh2aWV3KSIgdGhyZXcgb2JqZWN0ICJSYW5nZUVycm9yOiBJbnZhbGlk
IHZhbHVlIGZvciB2aWV3LmJ5dGVMZW5ndGgiICgiUmFuZ2VFcnJvciIpIGV4cGVjdGVkIGluc3Rh
bmNlIG9mIGZ1bmN0aW9uICJmdW5jdGlvbiBUeXBlRXJyb3IoKSB7CisgICAgW25hdGl2ZSBjb2Rl
XQorfSIgKCJUeXBlRXJyb3IiKQorRkFJTCBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNl
OiByZXNwb25kV2l0aE5ld1ZpZXcoKSB0aHJvd3MgaWYgdGhlIHN1cHBsaWVkIHZpZXcgaXMgemVy
by1sZW5ndGggb24gYSBub24temVyby1sZW5ndGggYnVmZmVyIChpbiB0aGUgY2xvc2VkIHN0YXRl
KSBhc3NlcnRfdGhyb3dzX2pzOiBmdW5jdGlvbiAiKCkgPT4gYy5ieW9iUmVxdWVzdC5yZXNwb25k
V2l0aE5ld1ZpZXcodmlldykiIHRocmV3IG9iamVjdCAiUmFuZ2VFcnJvcjogSW52YWxpZCB2YWx1
ZSBmb3Igdmlldy5ieXRlTGVuZ3RoIiAoIlJhbmdlRXJyb3IiKSBleHBlY3RlZCBpbnN0YW5jZSBv
ZiBmdW5jdGlvbiAiZnVuY3Rpb24gVHlwZUVycm9yKCkgeworICAgIFtuYXRpdmUgY29kZV0KK30i
ICgiVHlwZUVycm9yIikKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFtcy9iYWQtYnVmZmVy
cy1hbmQtdmlld3MuYW55Lndvcmtlci5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFtcy9iYWQtYnVmZmVy
cy1hbmQtdmlld3MuYW55Lndvcmtlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzODI5MTM1MjhlNjkzYjNh
NWQ1NmM2NjBhNDUwNjA5ODBiNTQ4YzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJl
YW1zL2JhZC1idWZmZXJzLWFuZC12aWV3cy5hbnkud29ya2VyLmh0bWwKQEAgLTAsMCArMSBAQAor
PCEtLSBUaGlzIGZpbGUgaXMgcmVxdWlyZWQgZm9yIFdlYktpdCB0ZXN0IGluZnJhc3RydWN0dXJl
IHRvIHJ1biB0aGUgdGVtcGxhdGVkIHRlc3QgLS0+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFtcy9icmFuZC1jaGVja3MuZGVkaWNhdGVkd29y
a2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMvYnJhbmQtY2hlY2tzLmRlZGljYXRl
ZHdvcmtlci1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE2MDMy
MmZiOGRkMTE5OTM1NDJmMGUzMzdmNWIwMjZlODRjN2IxMDcuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFtcy9icmFuZC1jaGVja3Mu
ZGVkaWNhdGVkd29ya2VyLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAg
QEAKLQotUEFTUyBDYW4gZ2V0IHRoZSBSZWFkYWJsZVN0cmVhbUJZT0JSZWFkZXIgY29uc3RydWN0
b3IgaW5kaXJlY3RseSAKLVBBU1MgQ2FuIGdldCB0aGUgUmVhZGFibGVCeXRlU3RyZWFtQ29udHJv
bGxlciBjb25zdHJ1Y3RvciBpbmRpcmVjdGx5IAotUEFTUyBSZWFkYWJsZVN0cmVhbUJZT0JSZWFk
ZXIgZW5mb3JjZXMgYSBicmFuZCBjaGVjayBvbiBpdHMgYXJndW1lbnQgCi1QQVNTIFJlYWRhYmxl
U3RyZWFtQllPQlJlYWRlci5wcm90b3R5cGUuY2xvc2VkIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2sg
Ci1QQVNTIFJlYWRhYmxlU3RyZWFtQllPQlJlYWRlci5wcm90b3R5cGUuY2FuY2VsIGVuZm9yY2Vz
IGEgYnJhbmQgY2hlY2sgCi1QQVNTIFJlYWRhYmxlU3RyZWFtQllPQlJlYWRlci5wcm90b3R5cGUu
cmVhZCBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrIAotUEFTUyBSZWFkYWJsZVN0cmVhbUJZT0JSZWFk
ZXIucHJvdG90eXBlLnJlbGVhc2VMb2NrIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2sgCi1QQVNTIFJl
YWRhYmxlQnl0ZVN0cmVhbUNvbnRyb2xsZXIgZW5mb3JjZXMgYSBicmFuZCBjaGVjayBvbiBpdHMg
YXJndW1lbnRzIAotUEFTUyBSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyIGNhbid0IGJlIGdp
dmVuIGEgZnVsbHktY29uc3RydWN0ZWQgUmVhZGFibGVTdHJlYW0gCi1QQVNTIFJlYWRhYmxlQnl0
ZVN0cmVhbUNvbnRyb2xsZXIucHJvdG90eXBlLmJ5b2JSZXF1ZXN0IGVuZm9yY2VzIGEgYnJhbmQg
Y2hlY2sgCi1QQVNTIFJlYWRhYmxlQnl0ZVN0cmVhbUNvbnRyb2xsZXIucHJvdG90eXBlLmNsb3Nl
IGVuZm9yY2VzIGEgYnJhbmQgY2hlY2sgCi1QQVNTIFJlYWRhYmxlQnl0ZVN0cmVhbUNvbnRyb2xs
ZXIucHJvdG90eXBlLmVucXVldWUgZW5mb3JjZXMgYSBicmFuZCBjaGVjayAKLVBBU1MgUmVhZGFi
bGVCeXRlU3RyZWFtQ29udHJvbGxlci5wcm90b3R5cGUuZXJyb3IgZW5mb3JjZXMgYSBicmFuZCBj
aGVjayAKLVBBU1MgUmVhZGFibGVTdHJlYW1CWU9CUmVxdWVzdCBlbmZvcmNlcyBicmFuZCBjaGVj
a3MgCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMvYnJhbmQtY2hlY2tzLmRlZGljYXRl
ZHdvcmtlci5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFtcy9icmFuZC1jaGVja3MuZGVkaWNhdGVkd29y
a2VyLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJiM2YxMWE5MGUyODFiOTZh
YWI0Njk1ZDdjYWIwNGNjNDM2ZThmMDcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFtcy9icmFuZC1jaGVja3MuZGVkaWNhdGVkd29y
a2VyLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4K
LTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTx0aXRsZT5icmFuZC1jaGVja3MuanMgZGVkaWNhdGVk
IHdvcmtlciB3cmFwcGVyIGZpbGU8L3RpdGxlPgotCi08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90
ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFy
bmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci0KLTxzY3JpcHQ+Ci0ndXNlIHN0cmljdCc7Ci1mZXRj
aF90ZXN0c19mcm9tX3dvcmtlcihuZXcgV29ya2VyKCdicmFuZC1jaGVja3MuanMnKSk7Ci08L3Nj
cmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMvYnJhbmQtY2hlY2tzLmh0bWwgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFi
bGUtYnl0ZS1zdHJlYW1zL2JyYW5kLWNoZWNrcy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA5OGQyZTI4MWZmYWY2ZjBiNDA0NmIzMDI5NmIyZDA5ZmIxZjNkZTlmLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMv
YnJhbmQtY2hlY2tzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi08IURPQ1RZ
UEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTx0aXRsZT5icmFuZC1jaGVja3MuanMg
YnJvd3NlciBjb250ZXh0IHdyYXBwZXIgZmlsZTwvdGl0bGU+Ci0KLTxzY3JpcHQgc3JjPSIvcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLQotPHNjcmlwdCBzcmM9Ii4uL3Jlc291
cmNlcy90ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KLQotPHNjcmlwdCBzcmM9ImJyYW5kLWNoZWNr
cy5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL2JyYW5kLWNoZWNr
cy5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMvYnJhbmQtY2hlY2tzLmpzCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA3MDJjNjUzMDE2NWMyYjYzNjc2ZTYwMGNiZGZlNDgxOWJlNTQ3ZTY3Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0
cmVhbXMvYnJhbmQtY2hlY2tzLmpzCisrKyAvZGV2L251bGwKQEAgLTEsMTk0ICswLDAgQEAKLSd1
c2Ugc3RyaWN0JzsKLQotaWYgKHNlbGYuaW1wb3J0U2NyaXB0cykgewotICBzZWxmLmltcG9ydFNj
cmlwdHMoJy4uL3Jlc291cmNlcy90ZXN0LXV0aWxzLmpzJyk7Ci0gIHNlbGYuaW1wb3J0U2NyaXB0
cygnL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcycpOwotfQotCi1sZXQgUmVhZGFibGVTdHJlYW1C
WU9CUmVhZGVyOwotbGV0IFJlYWRhYmxlQnl0ZVN0cmVhbUNvbnRyb2xsZXI7Ci0KLXRlc3QoKCkg
PT4gewotCi0gIC8vIEl0J3Mgbm90IGV4cG9zZWQgZ2xvYmFsbHksIGJ1dCB3ZSB0ZXN0IGEgZmV3
IG9mIGl0cyBwcm9wZXJ0aWVzIGhlcmUuCi0gIFJlYWRhYmxlU3RyZWFtQllPQlJlYWRlciA9IHJl
YWxSU0JZT0JSZWFkZXIoKS5jb25zdHJ1Y3RvcjsKLQotICBhc3NlcnRfZXF1YWxzKFJlYWRhYmxl
U3RyZWFtQllPQlJlYWRlci5uYW1lLCAnUmVhZGFibGVTdHJlYW1CWU9CUmVhZGVyJywgJ1JlYWRh
YmxlU3RyZWFtQllPQlJlYWRlciBzaG91bGQgYmUgc2V0Jyk7Ci0KLX0sICdDYW4gZ2V0IHRoZSBS
ZWFkYWJsZVN0cmVhbUJZT0JSZWFkZXIgY29uc3RydWN0b3IgaW5kaXJlY3RseScpOwotCi10ZXN0
KCgpID0+IHsKLQotICAvLyBJdCdzIG5vdCBleHBvc2VkIGdsb2JhbGx5LCBidXQgd2UgdGVzdCBh
IGZldyBvZiBpdHMgcHJvcGVydGllcyBoZXJlLgotICBSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9s
bGVyID0gcmVhbFJCU0NvbnRyb2xsZXIoKS5jb25zdHJ1Y3RvcjsKLQotICBhc3NlcnRfZXF1YWxz
KFJlYWRhYmxlQnl0ZVN0cmVhbUNvbnRyb2xsZXIubmFtZSwgJ1JlYWRhYmxlQnl0ZVN0cmVhbUNv
bnRyb2xsZXInLAotICAgICAgICAgICAgICAgICdSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVy
IHNob3VsZCBiZSBzZXQnKTsKLQotfSwgJ0NhbiBnZXQgdGhlIFJlYWRhYmxlQnl0ZVN0cmVhbUNv
bnRyb2xsZXIgY29uc3RydWN0b3IgaW5kaXJlY3RseScpOwotCi1mdW5jdGlvbiBmYWtlUlMoKSB7
Ci0gIHJldHVybiBPYmplY3Quc2V0UHJvdG90eXBlT2YoewotICAgIGNhbmNlbCgpIHsgcmV0dXJu
IFByb21pc2UucmVzb2x2ZSgpOyB9LAotICAgIGdldFJlYWRlcigpIHsgcmV0dXJuIHJlYWxSU0JZ
T0JSZWFkZXIoKTsgfSwKLSAgICBwaXBlVGhyb3VnaChvYmopIHsgcmV0dXJuIG9iai5yZWFkYWJs
ZTsgfSwKLSAgICBwaXBlVG8oKSB7IHJldHVybiBQcm9taXNlLnJlc29sdmUoKTsgfSwKLSAgICB0
ZWUoKSB7IHJldHVybiBbcmVhbFJTKCksIHJlYWxSUygpXTsgfQotICB9LCBSZWFkYWJsZVN0cmVh
bS5wcm90b3R5cGUpOwotfQotCi1mdW5jdGlvbiByZWFsUlMoKSB7Ci0gIHJldHVybiBuZXcgUmVh
ZGFibGVTdHJlYW0oKTsKLX0KLQotZnVuY3Rpb24gZmFrZVJTQllPQlJlYWRlcigpIHsKLSAgcmV0
dXJuIE9iamVjdC5zZXRQcm90b3R5cGVPZih7Ci0gICAgZ2V0IGNsb3NlZCgpIHsgcmV0dXJuIFBy
b21pc2UucmVzb2x2ZSgpOyB9LAotICAgIGNhbmNlbCgpIHsgcmV0dXJuIFByb21pc2UucmVzb2x2
ZSgpOyB9LAotICAgIHJlYWQoKSB7IHJldHVybiBQcm9taXNlLnJlc29sdmUoeyB2YWx1ZTogdW5k
ZWZpbmVkLCBkb25lOiB0cnVlIH0pOyB9LAotICAgIHJlbGVhc2VMb2NrKCkgeyByZXR1cm47IH0K
LSAgfSwgUmVhZGFibGVTdHJlYW1CWU9CUmVhZGVyLnByb3RvdHlwZSk7Ci19Ci0KLWZ1bmN0aW9u
IHJlYWxSU0JZT0JSZWFkZXIoKSB7Ci0gIHJldHVybiBuZXcgUmVhZGFibGVTdHJlYW0oeyB0eXBl
OiAnYnl0ZXMnIH0pLmdldFJlYWRlcih7IG1vZGU6ICdieW9iJyB9KTsKLX0KLQotZnVuY3Rpb24g
ZmFrZVJCU0NvbnRyb2xsZXIoKSB7Ci0gIHJldHVybiBPYmplY3Quc2V0UHJvdG90eXBlT2Yoewot
ICAgIGNsb3NlKCkgeyB9LAotICAgIGVucXVldWUoKSB7IH0sCi0gICAgZXJyb3IoKSB7IH0KLSAg
fSwgUmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlci5wcm90b3R5cGUpOwotfQotCi1mdW5jdGlv
biByZWFsUkJTQ29udHJvbGxlcigpIHsKLSAgbGV0IGNvbnRyb2xsZXI7Ci0gIG5ldyBSZWFkYWJs
ZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgY29udHJvbGxlciA9IGM7Ci0gICAgfSwK
LSAgICB0eXBlOiAnYnl0ZXMnCi0gIH0pOwotICByZXR1cm4gY29udHJvbGxlcjsKLX0KLQotdGVz
dCgoKSA9PiB7Ci0KLSAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IG5ldyBS
ZWFkYWJsZVN0cmVhbUJZT0JSZWFkZXIoZmFrZVJTKCkpLCAnY29uc3RydWN0b3Igc2hvdWxkIHRo
cm93Jyk7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbUJZT0JSZWFkZXIgZW5mb3JjZXMgYSBicmFuZCBj
aGVjayBvbiBpdHMgYXJndW1lbnQnKTsKLQotcHJvbWlzZV90ZXN0KHQgPT4gewotCi0gIHJldHVy
biBnZXR0ZXJSZWplY3RzRm9yQWxsKHQsIFJlYWRhYmxlU3RyZWFtQllPQlJlYWRlci5wcm90b3R5
cGUsICdjbG9zZWQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZmFrZVJTQllPQlJl
YWRlcigpLCByZWFsUlMoKSwgcmVhbFJCU0NvbnRyb2xsZXIoKSwgdW5kZWZpbmVkLCBudWxsXSk7
Ci0KLX0sICdSZWFkYWJsZVN0cmVhbUJZT0JSZWFkZXIucHJvdG90eXBlLmNsb3NlZCBlbmZvcmNl
cyBhIGJyYW5kIGNoZWNrJyk7Ci0KLXByb21pc2VfdGVzdCh0ID0+IHsKLQotICByZXR1cm4gbWV0
aG9kUmVqZWN0c0ZvckFsbCh0LCBSZWFkYWJsZVN0cmVhbUJZT0JSZWFkZXIucHJvdG90eXBlLCAn
Y2FuY2VsJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zha2VSU0JZT0JSZWFkZXIo
KSwgcmVhbFJTKCksIHJlYWxSQlNDb250cm9sbGVyKCksIHVuZGVmaW5lZCwgbnVsbF0pOwotCi19
LCAnUmVhZGFibGVTdHJlYW1CWU9CUmVhZGVyLnByb3RvdHlwZS5jYW5jZWwgZW5mb3JjZXMgYSBi
cmFuZCBjaGVjaycpOwotCi1wcm9taXNlX3Rlc3QodCA9PiB7Ci0KLSAgcmV0dXJuIG1ldGhvZFJl
amVjdHNGb3JBbGwodCwgUmVhZGFibGVTdHJlYW1CWU9CUmVhZGVyLnByb3RvdHlwZSwgJ3JlYWQn
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZmFrZVJTQllPQlJlYWRlcigpLCByZWFs
UlMoKSwgcmVhbFJCU0NvbnRyb2xsZXIoKSwgdW5kZWZpbmVkLCBudWxsXSwgW25ldyBVaW50OEFy
cmF5KDEpXSk7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbUJZT0JSZWFkZXIucHJvdG90eXBlLnJlYWQg
ZW5mb3JjZXMgYSBicmFuZCBjaGVjaycpOwotCi10ZXN0KCgpID0+IHsKLQotICBtZXRob2RUaHJv
d3NGb3JBbGwoUmVhZGFibGVTdHJlYW1CWU9CUmVhZGVyLnByb3RvdHlwZSwgJ3JlbGVhc2VMb2Nr
JywKLSAgICAgICAgICAgICAgICAgICAgIFtmYWtlUlNCWU9CUmVhZGVyKCksIHJlYWxSUygpLCBy
ZWFsUkJTQ29udHJvbGxlcigpLCB1bmRlZmluZWQsIG51bGxdKTsKLQotfSwgJ1JlYWRhYmxlU3Ry
ZWFtQllPQlJlYWRlci5wcm90b3R5cGUucmVsZWFzZUxvY2sgZW5mb3JjZXMgYSBicmFuZCBjaGVj
aycpOwotCi10ZXN0KCgpID0+IHsKLQotICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwg
KCkgPT4gbmV3IFJlYWRhYmxlQnl0ZVN0cmVhbUNvbnRyb2xsZXIoZmFrZVJTKCkpLAotICAgICAg
ICAgICAgICAgICdDb25zdHJ1Y3RpbmcgYSBSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyIHNo
b3VsZCB0aHJvdycpOwotCi19LCAnUmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlciBlbmZvcmNl
cyBhIGJyYW5kIGNoZWNrIG9uIGl0cyBhcmd1bWVudHMnKTsKLQotdGVzdCgoKSA9PiB7Ci0KLSAg
YXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IG5ldyBSZWFkYWJsZUJ5dGVTdHJl
YW1Db250cm9sbGVyKHJlYWxSUygpKSwKLSAgICAgICAgICAgICAgICAnQ29uc3RydWN0aW5nIGEg
UmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlciBzaG91bGQgdGhyb3cnKTsKLQotfSwgJ1JlYWRh
YmxlQnl0ZVN0cmVhbUNvbnRyb2xsZXIgY2FuXCd0IGJlIGdpdmVuIGEgZnVsbHktY29uc3RydWN0
ZWQgUmVhZGFibGVTdHJlYW0nKTsKLQotdGVzdCgoKSA9PiB7Ci0KLSAgZ2V0dGVyVGhyb3dzRm9y
QWxsKFJlYWRhYmxlQnl0ZVN0cmVhbUNvbnRyb2xsZXIucHJvdG90eXBlLCAnYnlvYlJlcXVlc3Qn
LAotICAgICAgICAgICAgICAgICAgICAgW2Zha2VSQlNDb250cm9sbGVyKCksIHJlYWxSUygpLCBy
ZWFsUlNCWU9CUmVhZGVyKCksIHVuZGVmaW5lZCwgbnVsbF0pOwotCi19LCAnUmVhZGFibGVCeXRl
U3RyZWFtQ29udHJvbGxlci5wcm90b3R5cGUuYnlvYlJlcXVlc3QgZW5mb3JjZXMgYSBicmFuZCBj
aGVjaycpOwotCi10ZXN0KCgpID0+IHsKLQotICBtZXRob2RUaHJvd3NGb3JBbGwoUmVhZGFibGVC
eXRlU3RyZWFtQ29udHJvbGxlci5wcm90b3R5cGUsICdjbG9zZScsCi0gICAgICAgICAgICAgICAg
ICAgICBbZmFrZVJCU0NvbnRyb2xsZXIoKSwgcmVhbFJTKCksIHJlYWxSU0JZT0JSZWFkZXIoKSwg
dW5kZWZpbmVkLCBudWxsXSk7Ci0KLX0sICdSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyLnBy
b3RvdHlwZS5jbG9zZSBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrJyk7Ci0KLXRlc3QoKCkgPT4gewot
Ci0gIG1ldGhvZFRocm93c0ZvckFsbChSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyLnByb3Rv
dHlwZSwgJ2VucXVldWUnLAotICAgICAgICAgICAgICAgICAgICAgW2Zha2VSQlNDb250cm9sbGVy
KCksIHJlYWxSUygpLCByZWFsUlNCWU9CUmVhZGVyKCksIHVuZGVmaW5lZCwgbnVsbF0sIFtuZXcg
VWludDhBcnJheSgxKV0pOwotCi19LCAnUmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlci5wcm90
b3R5cGUuZW5xdWV1ZSBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrJyk7Ci0KLXRlc3QoKCkgPT4gewot
Ci0gIG1ldGhvZFRocm93c0ZvckFsbChSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyLnByb3Rv
dHlwZSwgJ2Vycm9yJywKLSAgICAgICAgICAgICAgICAgICAgIFtmYWtlUkJTQ29udHJvbGxlcigp
LCByZWFsUlMoKSwgcmVhbFJTQllPQlJlYWRlcigpLCB1bmRlZmluZWQsIG51bGxdKTsKLQotfSwg
J1JlYWRhYmxlQnl0ZVN0cmVhbUNvbnRyb2xsZXIucHJvdG90eXBlLmVycm9yIGVuZm9yY2VzIGEg
YnJhbmQgY2hlY2snKTsKLQotLy8gUmVhZGFibGVTdHJlYW1CWU9CUmVxdWVzdCBjYW4gb25seSBi
ZSBhY2Nlc3NlZCBhc3luY2hyb25vdXNseSwgc28gY3JhbSBldmVyeXRoaW5nIGludG8gb25lIHRl
c3QuCi1wcm9taXNlX3Rlc3QodCA9PiB7Ci0KLSAgbGV0IFJlYWRhYmxlU3RyZWFtQllPQlJlcXVl
c3Q7Ci0gIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBwdWxsKGNvbnRyb2xs
ZXIpIHsKLSAgICAgIHJldHVybiB0LnN0ZXAoKCkgPT4gewotICAgICAgICBjb25zdCBieW9iUmVx
dWVzdCA9IGNvbnRyb2xsZXIuYnlvYlJlcXVlc3Q7Ci0gICAgICAgIFJlYWRhYmxlU3RyZWFtQllP
QlJlcXVlc3QgPSBieW9iUmVxdWVzdC5jb25zdHJ1Y3RvcjsKLSAgICAgICAgYnJhbmRDaGVja3Mo
KTsKLSAgICAgICAgYnlvYlJlcXVlc3QucmVzcG9uZCgxKTsKLSAgICAgIH0pOwotICAgIH0sCi0g
ICAgdHlwZTogJ2J5dGVzJwotICB9KTsKLSAgY29uc3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKHsg
bW9kZTogJ2J5b2InIH0pOwotICByZXR1cm4gcmVhZGVyLnJlYWQobmV3IFVpbnQ4QXJyYXkoMSkp
OwotCi0gIGZ1bmN0aW9uIGZha2VSU0JZT0JSZXF1ZXN0KCkgewotICAgIHJldHVybiBPYmplY3Qu
c2V0UHJvdG90eXBlT2YoewotICAgICAgZ2V0IHZpZXcoKSB7fSwKLSAgICAgIHJlc3BvbmQoKSB7
fSwKLSAgICAgIHJlc3BvbmRXaXRoTmV3VmlldygpIHt9Ci0gICAgfSwgUmVhZGFibGVTdHJlYW1C
WU9CUmVxdWVzdC5wcm90b3R5cGUpOwotICB9Ci0KLSAgZnVuY3Rpb24gYnJhbmRDaGVja3MoKSB7
Ci0gICAgZm9yIChjb25zdCBiYWRDb250cm9sbGVyIG9mIFtmYWtlUkJTQ29udHJvbGxlcigpLCBy
ZWFsUlMoKSwgcmVhbFJTQllPQlJlYWRlcigpLCB1bmRlZmluZWQsIG51bGxdKSB7Ci0gICAgICBh
c3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gbmV3IFJlYWRhYmxlU3RyZWFtQllP
QlJlcXVlc3QoYmFkQ29udHJvbGxlciwgbmV3IFVpbnQ4QXJyYXkoMSkpLAotICAgICAgICAgICAg
ICAgICAgICAnUmVhZGFibGVTdHJlYW1CWU9CUmVxdWVzdCBjb25zdHJ1Y3RvciBtdXN0IHRocm93
IGZvciBhbiBpbnZhbGlkIGNvbnRyb2xsZXIgYXJndW1lbnQnKTsKLSAgICB9Ci0gICAgZ2V0dGVy
VGhyb3dzRm9yQWxsKFJlYWRhYmxlU3RyZWFtQllPQlJlcXVlc3QucHJvdG90eXBlLCAndmlldycs
Ci0gICAgICAgICAgICAgICAgICAgICAgIFtmYWtlUlNCWU9CUmVxdWVzdCgpLCByZWFsUlMoKSwg
cmVhbFJTQllPQlJlYWRlcigpLCByZWFsUkJTQ29udHJvbGxlcigpLCB1bmRlZmluZWQsIG51bGxd
KTsKLSAgICBtZXRob2RUaHJvd3NGb3JBbGwoUmVhZGFibGVTdHJlYW1CWU9CUmVxdWVzdC5wcm90
b3R5cGUsICdyZXNwb25kJywKLSAgICAgICAgICAgICAgICAgICAgICAgW2Zha2VSU0JZT0JSZXF1
ZXN0KCksIHJlYWxSUygpLCByZWFsUlNCWU9CUmVhZGVyKCksIHJlYWxSQlNDb250cm9sbGVyKCks
IHVuZGVmaW5lZCwgbnVsbF0sIFsxXSk7Ci0gICAgbWV0aG9kVGhyb3dzRm9yQWxsKFJlYWRhYmxl
U3RyZWFtQllPQlJlcXVlc3QucHJvdG90eXBlLCAncmVzcG9uZFdpdGhOZXdWaWV3JywKLSAgICAg
ICAgICAgICAgICAgICAgICAgW2Zha2VSU0JZT0JSZXF1ZXN0KCksIHJlYWxSUygpLCByZWFsUlNC
WU9CUmVhZGVyKCksIHJlYWxSQlNDb250cm9sbGVyKCksIHVuZGVmaW5lZCwgbnVsbF0sCi0gICAg
ICAgICAgICAgICAgICAgICAgIFtuZXcgVWludDhBcnJheSgxKV0pOwotICB9Ci0KLX0sICdSZWFk
YWJsZVN0cmVhbUJZT0JSZXF1ZXN0IGVuZm9yY2VzIGJyYW5kIGNoZWNrcycpOwotCi1kb25lKCk7
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL2JyYW5kLWNoZWNrcy5zZXJ2aWNld29ya2Vy
Lmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMvYnJhbmQtY2hlY2tzLnNlcnZp
Y2V3b3JrZXIuaHR0cHMtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAxMjA4YTJjMzQ3OGRhZDQ0YjFlMzRiZjI3YjE0NjkyZjg0NjliMjVkLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMvYnJhbmQt
Y2hlY2tzLnNlcnZpY2V3b3JrZXIuaHR0cHMtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAg
LTEsMTcgKzAsMCBAQAotCi1QQVNTIFNlcnZpY2Ugd29ya2VyIHRlc3Qgc2V0dXAgCi1QQVNTIENh
biBnZXQgdGhlIFJlYWRhYmxlU3RyZWFtQllPQlJlYWRlciBjb25zdHJ1Y3RvciBpbmRpcmVjdGx5
IAotUEFTUyBDYW4gZ2V0IHRoZSBSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyIGNvbnN0cnVj
dG9yIGluZGlyZWN0bHkgCi1QQVNTIFJlYWRhYmxlU3RyZWFtQllPQlJlYWRlciBlbmZvcmNlcyBh
IGJyYW5kIGNoZWNrIG9uIGl0cyBhcmd1bWVudCAKLVBBU1MgUmVhZGFibGVTdHJlYW1CWU9CUmVh
ZGVyLnByb3RvdHlwZS5jbG9zZWQgZW5mb3JjZXMgYSBicmFuZCBjaGVjayAKLVBBU1MgUmVhZGFi
bGVTdHJlYW1CWU9CUmVhZGVyLnByb3RvdHlwZS5jYW5jZWwgZW5mb3JjZXMgYSBicmFuZCBjaGVj
ayAKLVBBU1MgUmVhZGFibGVTdHJlYW1CWU9CUmVhZGVyLnByb3RvdHlwZS5yZWFkIGVuZm9yY2Vz
IGEgYnJhbmQgY2hlY2sgCi1QQVNTIFJlYWRhYmxlU3RyZWFtQllPQlJlYWRlci5wcm90b3R5cGUu
cmVsZWFzZUxvY2sgZW5mb3JjZXMgYSBicmFuZCBjaGVjayAKLVBBU1MgUmVhZGFibGVCeXRlU3Ry
ZWFtQ29udHJvbGxlciBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrIG9uIGl0cyBhcmd1bWVudHMgCi1Q
QVNTIFJlYWRhYmxlQnl0ZVN0cmVhbUNvbnRyb2xsZXIgY2FuJ3QgYmUgZ2l2ZW4gYSBmdWxseS1j
b25zdHJ1Y3RlZCBSZWFkYWJsZVN0cmVhbSAKLVBBU1MgUmVhZGFibGVCeXRlU3RyZWFtQ29udHJv
bGxlci5wcm90b3R5cGUuYnlvYlJlcXVlc3QgZW5mb3JjZXMgYSBicmFuZCBjaGVjayAKLVBBU1Mg
UmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlci5wcm90b3R5cGUuY2xvc2UgZW5mb3JjZXMgYSBi
cmFuZCBjaGVjayAKLVBBU1MgUmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlci5wcm90b3R5cGUu
ZW5xdWV1ZSBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrIAotUEFTUyBSZWFkYWJsZUJ5dGVTdHJlYW1D
b250cm9sbGVyLnByb3RvdHlwZS5lcnJvciBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrIAotUEFTUyBS
ZWFkYWJsZVN0cmVhbUJZT0JSZXF1ZXN0IGVuZm9yY2VzIGJyYW5kIGNoZWNrcyAKLQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
L3JlYWRhYmxlLWJ5dGUtc3RyZWFtcy9icmFuZC1jaGVja3Muc2VydmljZXdvcmtlci5odHRwcy5o
dG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
L3JlYWRhYmxlLWJ5dGUtc3RyZWFtcy9icmFuZC1jaGVja3Muc2VydmljZXdvcmtlci5odHRwcy5o
dG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNDM5Y2RiOTVlOTg5YjdlNzQyNzU2
MmNlNjI3YWQxN2M4MmNiOTc1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMvYnJhbmQtY2hlY2tzLnNlcnZpY2V3b3JrZXIuaHR0
cHMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgot
PG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHRpdGxlPmJyYW5kLWNoZWNrcy5qcyBzZXJ2aWNlIHdv
cmtlciB3cmFwcGVyIGZpbGU8L3RpdGxlPgotCi08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0
aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVz
c3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3NlcnZpY2Utd29ya2Vycy9zZXJ2
aWNlLXdvcmtlci9yZXNvdXJjZXMvdGVzdC1oZWxwZXJzLnN1Yi5qcyI+PC9zY3JpcHQ+Ci0KLTxz
Y3JpcHQ+Ci0ndXNlIHN0cmljdCc7Ci1zZXJ2aWNlX3dvcmtlcl90ZXN0KCdicmFuZC1jaGVja3Mu
anMnLCAnU2VydmljZSB3b3JrZXIgdGVzdCBzZXR1cCcpOwotPC9zY3JpcHQ+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVh
ZGFibGUtYnl0ZS1zdHJlYW1zL2JyYW5kLWNoZWNrcy5zaGFyZWR3b3JrZXItZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3Jl
YWRhYmxlLWJ5dGUtc3RyZWFtcy9icmFuZC1jaGVja3Muc2hhcmVkd29ya2VyLWV4cGVjdGVkLnR4
dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDlkNWQyNTA5ZDc4NDdlOGNkNmZlNjYw
NmFhNjBjZGQzM2FhNDc0ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL2JyYW5kLWNoZWNrcy5zaGFyZWR3b3JrZXItZXhwZWN0
ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1DT05TT0xFIE1FU1NBR0U6IFJl
ZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBTaGFyZWRXb3JrZXIKLQotSGFybmVz
cyBFcnJvciAoRkFJTCksIG1lc3NhZ2UgPSBSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJp
YWJsZTogU2hhcmVkV29ya2VyCi0KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFtcy9icmFu
ZC1jaGVja3Muc2hhcmVkd29ya2VyLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL2JyYW5kLWNoZWNr
cy5zaGFyZWR3b3JrZXIuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2ZmNzJl
Y2E0NjM0MWZkZDY2NjNlYzEzOWQ4NzFlMWI4MTM0NGIyMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL2JyYW5kLWNoZWNrcy5z
aGFyZWR3b3JrZXIuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLTwhRE9DVFlQ
RSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHRpdGxlPmJyYW5kLWNoZWNrcy5qcyBz
aGFyZWQgd29ya2VyIHdyYXBwZXIgZmlsZTwvdGl0bGU+Ci0KLTxzY3JpcHQgc3JjPSIvcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rl
c3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLQotPHNjcmlwdD4KLSd1c2Ugc3RyaWN0JzsK
LWZldGNoX3Rlc3RzX2Zyb21fd29ya2VyKG5ldyBTaGFyZWRXb3JrZXIoJ2JyYW5kLWNoZWNrcy5q
cycpKTsKLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFtcy9jb25zdHJ1Y3Qt
YnlvYi1yZXF1ZXN0LmFueS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL2NvbnN0cnVj
dC1ieW9iLXJlcXVlc3QuYW55LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMzExNTcxNWYwNzY4
OGFjYzVkMWZjOTgzMjYyM2E5YWM4Nzk2NTYyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLWJ5dGUt
c3RyZWFtcy9jb25zdHJ1Y3QtYnlvYi1yZXF1ZXN0LmFueS1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSw1IEBACitDT05TT0xFIE1FU1NBR0U6IFJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlh
YmxlOiBSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyCisKK0hhcm5lc3MgRXJyb3IgKEZBSUwp
LCBtZXNzYWdlID0gUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IFJlYWRhYmxl
Qnl0ZVN0cmVhbUNvbnRyb2xsZXIKKworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL2Nv
bnN0cnVjdC1ieW9iLXJlcXVlc3QuYW55Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL2NvbnN0cnVj
dC1ieW9iLXJlcXVlc3QuYW55Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjM4MjkxMzUyOGU2OTNiM2E1ZDU2
YzY2MGE0NTA2MDk4MGI1NDhjMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMv
Y29uc3RydWN0LWJ5b2ItcmVxdWVzdC5hbnkuaHRtbApAQCAtMCwwICsxIEBACis8IS0tIFRoaXMg
ZmlsZSBpcyByZXF1aXJlZCBmb3IgV2ViS2l0IHRlc3QgaW5mcmFzdHJ1Y3R1cmUgdG8gcnVuIHRo
ZSB0ZW1wbGF0ZWQgdGVzdCAtLT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
cmVhZGFibGUtYnl0ZS1zdHJlYW1zL2NvbnN0cnVjdC1ieW9iLXJlcXVlc3QuYW55LmpzIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxl
LWJ5dGUtc3RyZWFtcy9jb25zdHJ1Y3QtYnlvYi1yZXF1ZXN0LmFueS5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4x
Mzg2ZDg0NTk5YTRjZDNlN2IxOTdjOTgyZjhmOTljMzVmNTNkNWM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3Jl
YWRhYmxlLWJ5dGUtc3RyZWFtcy9jb25zdHJ1Y3QtYnlvYi1yZXF1ZXN0LmFueS5qcwpAQCAtMCww
ICsxLDUzIEBACisvLyBNRVRBOiBnbG9iYWw9d2luZG93LHdvcmtlcixqc3NoZWxsCisvLyBNRVRB
OiBzY3JpcHQ9Li4vcmVzb3VyY2VzL3JzLXV0aWxzLmpzCisndXNlIHN0cmljdCc7CisKKy8vIFBy
aW9yIHRvIHdoYXR3Zy9zdHJlYW0jODcwIGl0IHdhcyBwb3NzaWJsZSB0byBjb25zdHJ1Y3QgYSBS
ZWFkYWJsZVN0cmVhbUJZT0JSZXF1ZXN0IGRpcmVjdGx5LiBUaGlzIG1hZGUgaXQgcG9zc2libGUK
Ky8vIHRvIGNvbnN0cnVjdCByZXF1ZXN0cyB0aGF0IHdlcmUgb3V0LW9mLXN5bmMgd2l0aCB0aGUg
c3RhdGUgb2YgdGhlIFJlYWRhYmxlU3RyZWFtLiBUaGV5IGNvdWxkIHRoZW4gYmUgdXNlZCB0byBj
YWxsCisvLyBpbnRlcm5hbCBvcGVyYXRpb25zLCByZXN1bHRpbmcgaW4gYXNzZXJ0cyBvciBiYWQg
YmVoYXZpb3VyLiBUaGlzIGZpbGUgY29udGFpbnMgcmVncmVzc2lvbiB0ZXN0cyBmb3IgdGhlIGNo
YW5nZS4KKworZnVuY3Rpb24gZ2V0UmVhbEJ5dGVTdHJlYW1Db250cm9sbGVyKCkgeworICBsZXQg
Y29udHJvbGxlcjsKKyAgbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAg
ICBjb250cm9sbGVyID0gYzsKKyAgICB9LAorICAgIHR5cGU6ICdieXRlcycKKyAgfSk7CisgIHJl
dHVybiBjb250cm9sbGVyOworfQorCisvLyBDcmVhdGUgYW4gb2JqZWN0IHByZXRlbmRpbmcgdG8g
aGF2ZSBwcm90b3R5cGUgfHByb3RvdHlwZXwsIG9mIHR5cGUgfHR5cGV8LiB8dHlwZXwgaXMgb25l
IG9mICJ1bmRlZmluZWQiLCAibnVsbCIsCisvLyAiZmFrZSIsIG9yICJyZWFsIi4gInJlYWwiIHdp
bGwgY2FsbCB0aGUgcmVhbE9iamVjdENyZWF0b3IgZnVuY3Rpb24gdG8gZ2V0IGEgcmVhbCBpbnN0
YW5jZSBvZiB0aGUgb2JqZWN0LgorZnVuY3Rpb24gY3JlYXRlRHVtbXlPYmplY3QocHJvdG90eXBl
LCB0eXBlLCByZWFsT2JqZWN0Q3JlYXRvcikgeworICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNl
ICd1bmRlZmluZWQnOgorICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKKworICAgIGNhc2UgJ251bGwn
OgorICAgICAgcmV0dXJuIG51bGw7CisKKyAgICBjYXNlICdmYWtlJzoKKyAgICAgIHJldHVybiBP
YmplY3QuY3JlYXRlKHByb3RvdHlwZSk7CisKKyAgICBjYXNlICdyZWFsJzoKKyAgICAgIHJldHVy
biByZWFsT2JqZWN0Q3JlYXRvcigpOworICB9CisKKyAgdGhyb3cgbmV3IEVycm9yKCdub3QgcmVh
Y2hlZCcpOworfQorCitjb25zdCBkdW1teVR5cGVzID0gWyd1bmRlZmluZWQnLCAnbnVsbCcsICdm
YWtlJywgJ3JlYWwnXTsKKworZm9yIChjb25zdCBjb250cm9sbGVyVHlwZSBvZiBkdW1teVR5cGVz
KSB7CisgIGNvbnN0IGNvbnRyb2xsZXIgPSBjcmVhdGVEdW1teU9iamVjdChSZWFkYWJsZUJ5dGVT
dHJlYW1Db250cm9sbGVyLnByb3RvdHlwZSwgY29udHJvbGxlclR5cGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0UmVhbEJ5dGVTdHJlYW1Db250cm9sbGVyKTsK
KyAgZm9yIChjb25zdCB2aWV3VHlwZSBvZiBkdW1teVR5cGVzKSB7CisgICAgY29uc3QgdmlldyA9
IGNyZWF0ZUR1bW15T2JqZWN0KFVpbnQ4QXJyYXkucHJvdG90eXBlLCB2aWV3VHlwZSwgKCkgPT4g
bmV3IFVpbnQ4QXJyYXkoMTYpKTsKKyAgICB0ZXN0KCgpID0+IHsKKyAgICAgIGFzc2VydF90aHJv
d3NfanMoVHlwZUVycm9yLCAoKSA9PiBuZXcgUmVhZGFibGVTdHJlYW1CWU9CUmVxdWVzdChjb250
cm9sbGVyLCB2aWV3KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICdjb25zdHJ1Y3RvciBzaG91
bGQgdGhyb3cnKTsKKyAgICB9LCBgUmVhZGFibGVTdHJlYW1CWU9CUmVxdWVzdCBjb25zdHJ1Y3Rv
ciBzaG91bGQgdGhyb3cgd2hlbiBwYXNzZWQgYSAke2NvbnRyb2xsZXJUeXBlfSBgICsKKyAgICAg
ICAgYFJlYWRhYmxlQnl0ZVN0cmVhbUNvbnRyb2xsZXIgYW5kIGEgJHt2aWV3VHlwZX0gdmlld2Ap
OworICB9Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL2NvbnN0cnVjdC1ieW9iLXJl
cXVlc3QuYW55Lndvcmtlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL2NvbnN0cnVj
dC1ieW9iLXJlcXVlc3QuYW55Lndvcmtlci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTMxMTU3
MTVmMDc2ODhhY2M1ZDFmYzk4MzI2MjNhOWFjODc5NjU2MgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJs
ZS1ieXRlLXN0cmVhbXMvY29uc3RydWN0LWJ5b2ItcmVxdWVzdC5hbnkud29ya2VyLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDUgQEAKK0NPTlNPTEUgTUVTU0FHRTogUmVmZXJlbmNlRXJyb3I6IENh
bid0IGZpbmQgdmFyaWFibGU6IFJlYWRhYmxlQnl0ZVN0cmVhbUNvbnRyb2xsZXIKKworSGFybmVz
cyBFcnJvciAoRkFJTCksIG1lc3NhZ2UgPSBSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJp
YWJsZTogUmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlcgorCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1i
eXRlLXN0cmVhbXMvY29uc3RydWN0LWJ5b2ItcmVxdWVzdC5hbnkud29ya2VyLmh0bWwgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUt
Ynl0ZS1zdHJlYW1zL2NvbnN0cnVjdC1ieW9iLXJlcXVlc3QuYW55Lndvcmtlci5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjIzODI5MTM1MjhlNjkzYjNhNWQ1NmM2NjBhNDUwNjA5ODBiNTQ4YzMKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL2NvbnN0cnVjdC1ieW9iLXJlcXVlc3QuYW55Lndv
cmtlci5odG1sCkBAIC0wLDAgKzEgQEAKKzwhLS0gVGhpcyBmaWxlIGlzIHJlcXVpcmVkIGZvciBX
ZWJLaXQgdGVzdCBpbmZyYXN0cnVjdHVyZSB0byBydW4gdGhlIHRlbXBsYXRlZCB0ZXN0IC0tPgpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMv
ZGV0YWNoZWQtYnVmZmVycy5kZWRpY2F0ZWR3b3JrZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLWJ5dGUt
c3RyZWFtcy9kZXRhY2hlZC1idWZmZXJzLmRlZGljYXRlZHdvcmtlci1leHBlY3RlZC50eHQKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgyODExZmI3NDRhMWFjYjEzZTNkZTdjYjEwMjBl
OGNlNDczMDFjY2UuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3Jl
YWRhYmxlLWJ5dGUtc3RyZWFtcy9kZXRhY2hlZC1idWZmZXJzLmRlZGljYXRlZHdvcmtlci1leHBl
Y3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi0KLUhhcm5lc3MgRXJyb3Ig
KFRJTUVPVVQpLCBtZXNzYWdlID0gbnVsbAotCi1GQUlMIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0
ZSBzb3VyY2U6IHJlYWQoKWluZyBmcm9tIGEgY2xvc2VkIHN0cmVhbSBzdGlsbCB0cmFuc2ZlcnMg
dGhlIGJ1ZmZlciBhc3NlcnRfbm90X2VxdWFsczogYSBkaWZmZXJlbnQgQXJyYXlCdWZmZXIgbXVz
dCB1bmRlcmxpZSB0aGUgdmFsdWUgZ290IGRpc2FsbG93ZWQgdmFsdWUgb2JqZWN0ICJbb2JqZWN0
IEFycmF5QnVmZmVyXSIKLUZBSUwgUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogcmVh
ZCgpaW5nIGZyb20gYSBzdHJlYW0gd2l0aCBxdWV1ZWQgY2h1bmtzIHN0aWxsIHRyYW5zZmVycyB0
aGUgYnVmZmVyIGFzc2VydF9ub3RfZXF1YWxzOiBhIGRpZmZlcmVudCBBcnJheUJ1ZmZlciBtdXN0
IHVuZGVybGllIHRoZSB2YWx1ZSBnb3QgZGlzYWxsb3dlZCB2YWx1ZSBvYmplY3QgIltvYmplY3Qg
QXJyYXlCdWZmZXJdIgotRkFJTCBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBlbnF1
ZXVpbmcgYW4gYWxyZWFkeS1kZXRhY2hlZCBidWZmZXIgdGhyb3dzIGFzc2VydF90aHJvd3M6IGVu
cXVldWluZyBhbiBhbHJlYWR5LWRldGFjaGVkIGJ1ZmZlciBtdXN0IHRocm93IGZ1bmN0aW9uICIo
KSA9PiBjLmVucXVldWUodmlldykiIGRpZCBub3QgdGhyb3cKLVRJTUVPVVQgUmVhZGFibGVTdHJl
YW0gd2l0aCBieXRlIHNvdXJjZTogcmVhZGluZyBpbnRvIGFuIGFscmVhZHktZGV0YWNoZWQgYnVm
ZmVyIHJlamVjdHMgVGVzdCB0aW1lZCBvdXQKLUZBSUwgUmVhZGFibGVTdHJlYW0gd2l0aCBieXRl
IHNvdXJjZTogcmVzcG9uZCgpIHRocm93cyBpZiB0aGUgQllPQiByZXF1ZXN0J3MgYnVmZmVyIGhh
cyBiZWVuIGRldGFjaGVkIChpbiB0aGUgcmVhZGFibGUgc3RhdGUpIGFzc2VydF90aHJvd3M6IHJl
c3BvbmQoKSBtdXN0IHRocm93IGlmIHRoZSBjb3JyZXNwb25kaW5nIHZpZXcgaGFzIGJlY29tZSBk
ZXRhY2hlZCBmdW5jdGlvbiAiKCkgPT4gYy5ieW9iUmVxdWVzdC5yZXNwb25kKDEpIiBkaWQgbm90
IHRocm93Ci1GQUlMIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IHJlc3BvbmQoKSB0
aHJvd3MgaWYgdGhlIEJZT0IgcmVxdWVzdCdzIGJ1ZmZlciBoYXMgYmVlbiBkZXRhY2hlZCAoaW4g
dGhlIGNsb3NlZCBzdGF0ZSkgYXNzZXJ0X3Rocm93czogcmVzcG9uZCgpIG11c3QgdGhyb3cgaWYg
dGhlIGNvcnJlc3BvbmRpbmcgdmlldyBoYXMgYmVjb21lIGRldGFjaGVkIGZ1bmN0aW9uICIoKSA9
PiBjLmJ5b2JSZXF1ZXN0LnJlc3BvbmQoMCkiIGRpZCBub3QgdGhyb3cKLUZBSUwgUmVhZGFibGVT
dHJlYW0gd2l0aCBieXRlIHNvdXJjZTogcmVzcG9uZFdpdGhOZXdWaWV3KCkgdGhyb3dzIGlmIHRo
ZSBzdXBwbGllZCB2aWV3J3MgYnVmZmVyIGhhcyBiZWVuIGRldGFjaGVkIChpbiB0aGUgcmVhZGFi
bGUgc3RhdGUpIGFzc2VydF90aHJvd3M6IHJlc3BvbmRXaXRoTmV3VmlldygpIG11c3QgdGhyb3cg
aWYgcGFzc2VkIGEgZGV0YWNoZWQgdmlldyBmdW5jdGlvbiAiKCkgPT4gYy5ieW9iUmVxdWVzdC5y
ZXNwb25kV2l0aE5ld1ZpZXcodmlldykiIGRpZCBub3QgdGhyb3cKLUZBSUwgUmVhZGFibGVTdHJl
YW0gd2l0aCBieXRlIHNvdXJjZTogcmVzcG9uZFdpdGhOZXdWaWV3KCkgdGhyb3dzIGlmIHRoZSBz
dXBwbGllZCB2aWV3J3MgYnVmZmVyIGhhcyBiZWVuIGRldGFjaGVkIChpbiB0aGUgY2xvc2VkIHN0
YXRlKSBhc3NlcnRfdGhyb3dzOiByZXNwb25kV2l0aE5ld1ZpZXcoKSBtdXN0IHRocm93IGlmIHBh
c3NlZCBhICh6ZXJvLWxlbmd0aCkgdmlldyB3aG9zZSBidWZmZXIgaGFzIGJlZW4gZGV0YWNoZWQg
ZnVuY3Rpb24gIigpID0+IGMuYnlvYlJlcXVlc3QucmVzcG9uZFdpdGhOZXdWaWV3KHplcm9MZW5n
dGhWaWV3KSIgdGhyZXcgb2JqZWN0ICJSYW5nZUVycm9yOiBJbnZhbGlkIHZhbHVlIGZvciB2aWV3
LmJ5dGVMZW5ndGgiICgiUmFuZ2VFcnJvciIpIGV4cGVjdGVkIG9iamVjdCAiVHlwZUVycm9yIiAo
IlR5cGVFcnJvciIpCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMvZGV0YWNoZWQtYnVm
ZmVycy5kZWRpY2F0ZWR3b3JrZXIuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMvZGV0YWNoZWQtYnVm
ZmVycy5kZWRpY2F0ZWR3b3JrZXIuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ZDcyMTA4MWE1NjRkNTNmYWM0NDY3OTQ5Mjc4YjBmMWMwZDFjOTczMi4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL2RldGFjaGVk
LWJ1ZmZlcnMuZGVkaWNhdGVkd29ya2VyLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCww
IEBACi08IURPQ1RZUEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTx0aXRsZT5kZXRh
Y2hlZC1idWZmZXJzLmpzIGRlZGljYXRlZCB3b3JrZXIgd3JhcHBlciBmaWxlPC90aXRsZT4KLQot
PHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlw
dCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotCi08c2Ny
aXB0PgotJ3VzZSBzdHJpY3QnOwotZmV0Y2hfdGVzdHNfZnJvbV93b3JrZXIobmV3IFdvcmtlcign
ZGV0YWNoZWQtYnVmZmVycy5qcycpKTsKLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLWJ5dGUt
c3RyZWFtcy9kZXRhY2hlZC1idWZmZXJzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL2RldGFjaGVk
LWJ1ZmZlcnMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWNkYzI5YjdiMjBh
NjAyNmMzMjE0YTNjOGY2ODkyMWFmZmIxYTA1NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL2RldGFjaGVkLWJ1ZmZlcnMuaHRt
bAorKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEg
Y2hhcnNldD0idXRmLTgiPgotPHRpdGxlPmRldGFjaGVkLWJ1ZmZlcnMuanMgYnJvd3NlciBjb250
ZXh0IHdyYXBwZXIgZmlsZTwvdGl0bGU+Ci0KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
cmVwb3J0LmpzIj48L3NjcmlwdD4KLQotCi0KLTxzY3JpcHQgc3JjPSJkZXRhY2hlZC1idWZmZXJz
LmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMvZGV0YWNoZWQtYnVm
ZmVycy5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMvZGV0YWNoZWQtYnVmZmVycy5qcwpkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggYjFiNDdmMDE5NTkwODQ5ZDllNzEyNzZhOGY3NmExYjFhN2Qy
YmQ5ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUt
Ynl0ZS1zdHJlYW1zL2RldGFjaGVkLWJ1ZmZlcnMuanMKKysrIC9kZXYvbnVsbApAQCAtMSwxNTYg
KzAsMCBAQAotJ3VzZSBzdHJpY3QnOwotCi1pZiAoc2VsZi5pbXBvcnRTY3JpcHRzKSB7Ci0gIHNl
bGYuaW1wb3J0U2NyaXB0cygnL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcycpOwotfQotCi1wcm9t
aXNlX3Rlc3QoKCkgPT4gewotICBjb25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oewot
ICAgIHN0YXJ0KGMpIHsKLSAgICAgIGMuY2xvc2UoKTsKLSAgICB9LAotICAgIHR5cGU6ICdieXRl
cycKLSAgfSk7Ci0KLSAgY29uc3QgcmVhZGVyID0gc3RyZWFtLmdldFJlYWRlcih7IG1vZGU6ICdi
eW9iJyB9KTsKLSAgY29uc3QgdmlldyA9IG5ldyBVaW50OEFycmF5KFsxLCAyLCAzXSk7Ci0gIHJl
dHVybiByZWFkZXIucmVhZCh2aWV3KS50aGVuKCh7IHZhbHVlLCBkb25lIH0pID0+IHsKLSAgICAv
LyBTYW5pdHkgY2hlY2tzCi0gICAgYXNzZXJ0X3RydWUodmFsdWUgaW5zdGFuY2VvZiBVaW50OEFy
cmF5LCAnVGhlIHZhbHVlIHJlYWQgbXVzdCBiZSBhIFVpbnQ4QXJyYXknKTsKLSAgICBhc3NlcnRf
bm90X2VxdWFscyh2YWx1ZSwgdmlldywgJ1RoZSB2YWx1ZSByZWFkIG11c3Qgbm90IGJlIHRoZSAq
c2FtZSogVWludDhBcnJheScpOwotICAgIGFzc2VydF9hcnJheV9lcXVhbHModmFsdWUsIFtdLCAn
VGhlIHZhbHVlIHJlYWQgbXVzdCBiZSBhbiBlbXB0eSBVaW50OEFycmF5LCBzaW5jZSB0aGUgc3Ry
ZWFtIGlzIGNsb3NlZCcpOwotICAgIGFzc2VydF90cnVlKGRvbmUsICdkb25lIG11c3QgYmUgdHJ1
ZSwgc2luY2UgdGhlIHN0cmVhbSBpcyBjbG9zZWQnKTsKLQotICAgIC8vIFRoZSBpbXBvcnRhbnQg
YXNzZXJ0aW9ucwotICAgIGFzc2VydF9ub3RfZXF1YWxzKHZhbHVlLmJ1ZmZlciwgdmlldy5idWZm
ZXIsICdhIGRpZmZlcmVudCBBcnJheUJ1ZmZlciBtdXN0IHVuZGVybGllIHRoZSB2YWx1ZScpOwot
ICAgIGFzc2VydF9lcXVhbHModmlldy5idWZmZXIuYnl0ZUxlbmd0aCwgMCwgJ3RoZSBvcmlnaW5h
bCBidWZmZXIgbXVzdCBiZSBkZXRhY2hlZCcpOwotICB9KTsKLX0sICdSZWFkYWJsZVN0cmVhbSB3
aXRoIGJ5dGUgc291cmNlOiByZWFkKClpbmcgZnJvbSBhIGNsb3NlZCBzdHJlYW0gc3RpbGwgdHJh
bnNmZXJzIHRoZSBidWZmZXInKTsKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLSAgY29uc3Qgc3Ry
ZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0gICAgICBjLmVucXVl
dWUobmV3IFVpbnQ4QXJyYXkoWzEsIDIsIDNdKSk7Ci0gICAgfSwKLSAgICB0eXBlOiAnYnl0ZXMn
Ci0gIH0pOwotCi0gIGNvbnN0IHJlYWRlciA9IHN0cmVhbS5nZXRSZWFkZXIoeyBtb2RlOiAnYnlv
YicgfSk7Ci0gIGNvbnN0IHZpZXcgPSBuZXcgVWludDhBcnJheShbNCwgNSwgNl0pOwotICByZXR1
cm4gcmVhZGVyLnJlYWQodmlldykudGhlbigoeyB2YWx1ZSwgZG9uZSB9KSA9PiB7Ci0gICAgLy8g
U2FuaXR5IGNoZWNrcwotICAgIGFzc2VydF90cnVlKHZhbHVlIGluc3RhbmNlb2YgVWludDhBcnJh
eSwgJ1RoZSB2YWx1ZSByZWFkIG11c3QgYmUgYSBVaW50OEFycmF5Jyk7Ci0gICAgYXNzZXJ0X25v
dF9lcXVhbHModmFsdWUsIHZpZXcsICdUaGUgdmFsdWUgcmVhZCBtdXN0IG5vdCBiZSB0aGUgKnNh
bWUqIFVpbnQ4QXJyYXknKTsKLSAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHZhbHVlLCBbMSwgMiwg
M10sICdUaGUgdmFsdWUgcmVhZCBtdXN0IGJlIHRoZSBlbnF1ZXVlZCBVaW50OEFycmF5LCBub3Qg
dGhlIG9yaWdpbmFsIHZhbHVlcycpOwotICAgIGFzc2VydF9mYWxzZShkb25lLCAnZG9uZSBtdXN0
IGJlIGZhbHNlLCBzaW5jZSB0aGUgc3RyZWFtIGlzIG5vdCBjbG9zZWQnKTsKLQotICAgIC8vIFRo
ZSBpbXBvcnRhbnQgYXNzZXJ0aW9ucwotICAgIGFzc2VydF9ub3RfZXF1YWxzKHZhbHVlLmJ1ZmZl
ciwgdmlldy5idWZmZXIsICdhIGRpZmZlcmVudCBBcnJheUJ1ZmZlciBtdXN0IHVuZGVybGllIHRo
ZSB2YWx1ZScpOwotICAgIGFzc2VydF9lcXVhbHModmlldy5idWZmZXIuYnl0ZUxlbmd0aCwgMCwg
J3RoZSBvcmlnaW5hbCBidWZmZXIgbXVzdCBiZSBkZXRhY2hlZCcpOwotICB9KTsKLX0sICdSZWFk
YWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiByZWFkKClpbmcgZnJvbSBhIHN0cmVhbSB3aXRo
IHF1ZXVlZCBjaHVua3Mgc3RpbGwgdHJhbnNmZXJzIHRoZSBidWZmZXInKTsKLQotdGVzdCgoKSA9
PiB7Ci0gIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykg
ewotICAgICAgY29uc3QgdmlldyA9IG5ldyBVaW50OEFycmF5KFsxLCAyLCAzXSk7Ci0gICAgICBj
LmVucXVldWUodmlldyk7Ci0gICAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkg
PT4gYy5lbnF1ZXVlKHZpZXcpLCAnZW5xdWV1aW5nIGFuIGFscmVhZHktZGV0YWNoZWQgYnVmZmVy
IG11c3QgdGhyb3cnKTsKLSAgICB9LAotICAgIHR5cGU6ICdieXRlcycKLSAgfSk7Ci19LCAnUmVh
ZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogZW5xdWV1aW5nIGFuIGFscmVhZHktZGV0YWNo
ZWQgYnVmZmVyIHRocm93cycpOwotCi1wcm9taXNlX3Rlc3QodCA9PiB7Ci0gIGNvbnN0IHN0cmVh
bSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgYy5lbnF1ZXVl
KG5ldyBVaW50OEFycmF5KFsxLCAyLCAzXSkpOwotICAgIH0sCi0gICAgdHlwZTogJ2J5dGVzJwot
ICB9KTsKLSAgY29uc3QgcmVhZGVyID0gc3RyZWFtLmdldFJlYWRlcih7IG1vZGU6ICdieW9iJyB9
KTsKLQotICBjb25zdCB2aWV3ID0gbmV3IFVpbnQ4QXJyYXkoWzQsIDUsIDZdKTsKLSAgcmV0dXJu
IHJlYWRlci5yZWFkKHZpZXcpLnRoZW4oKCkgPT4gewotICAgIC8vIHZpZXcgaXMgbm93IGRldGFj
aGVkCi0gICAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0LCBuZXcgVHlwZUVycm9yKCksIHJlYWRl
ci5yZWFkKHZpZXcpLAotICAgICAgJ3JlYWQodmlldykgbXVzdCByZWplY3Qgd2hlbiBnaXZlbiBh
biBhbHJlYWR5LWRldGFjaGVkIGJ1ZmZlcicpOwotICB9KTsKLX0sICdSZWFkYWJsZVN0cmVhbSB3
aXRoIGJ5dGUgc291cmNlOiByZWFkaW5nIGludG8gYW4gYWxyZWFkeS1kZXRhY2hlZCBidWZmZXIg
cmVqZWN0cycpOwotCi1hc3luY190ZXN0KHQgPT4gewotICBjb25zdCBzdHJlYW0gPSBuZXcgUmVh
ZGFibGVTdHJlYW0oewotICAgIHB1bGw6IHQuc3RlcF9mdW5jX2RvbmUoYyA9PiB7Ci0gICAgICAv
LyBEZXRhY2ggaXQgYnkgcmVhZGluZyBpbnRvIGl0Ci0gICAgICByZWFkZXIucmVhZChjLmJ5b2JS
ZXF1ZXN0LnZpZXcpOwotCi0gICAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkg
PT4gYy5ieW9iUmVxdWVzdC5yZXNwb25kKDEpLAotICAgICAgICAncmVzcG9uZCgpIG11c3QgdGhy
b3cgaWYgdGhlIGNvcnJlc3BvbmRpbmcgdmlldyBoYXMgYmVjb21lIGRldGFjaGVkJyk7Ci0gICAg
fSksCi0gICAgdHlwZTogJ2J5dGVzJwotICB9KTsKLSAgY29uc3QgcmVhZGVyID0gc3RyZWFtLmdl
dFJlYWRlcih7IG1vZGU6ICdieW9iJyB9KTsKLQotICByZWFkZXIucmVhZChuZXcgVWludDhBcnJh
eShbNCwgNSwgNl0pKTsKLX0sICdSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiByZXNw
b25kKCkgdGhyb3dzIGlmIHRoZSBCWU9CIHJlcXVlc3RcJ3MgYnVmZmVyIGhhcyBiZWVuIGRldGFj
aGVkIChpbiB0aGUgJyArCi0gICAncmVhZGFibGUgc3RhdGUpJyk7Ci0KLWFzeW5jX3Rlc3QodCA9
PiB7Ci0gIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgcHVsbDogdC5z
dGVwX2Z1bmNfZG9uZShjID0+IHsKLSAgICAgIC8vIERldGFjaCBpdCBieSByZWFkaW5nIGludG8g
aXQKLSAgICAgIHJlYWRlci5yZWFkKGMuYnlvYlJlcXVlc3Qudmlldyk7Ci0KLSAgICAgIGMuY2xv
c2UoKTsKLQotICAgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IGMuYnlv
YlJlcXVlc3QucmVzcG9uZCgwKSwKLSAgICAgICAgJ3Jlc3BvbmQoKSBtdXN0IHRocm93IGlmIHRo
ZSBjb3JyZXNwb25kaW5nIHZpZXcgaGFzIGJlY29tZSBkZXRhY2hlZCcpOwotICAgIH0pLAotICAg
IHR5cGU6ICdieXRlcycKLSAgfSk7Ci0gIGNvbnN0IHJlYWRlciA9IHN0cmVhbS5nZXRSZWFkZXIo
eyBtb2RlOiAnYnlvYicgfSk7Ci0KLSAgcmVhZGVyLnJlYWQobmV3IFVpbnQ4QXJyYXkoWzQsIDUs
IDZdKSk7Ci19LCAnUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogcmVzcG9uZCgpIHRo
cm93cyBpZiB0aGUgQllPQiByZXF1ZXN0XCdzIGJ1ZmZlciBoYXMgYmVlbiBkZXRhY2hlZCAoaW4g
dGhlICcgKwotICAgJ2Nsb3NlZCBzdGF0ZSknKTsKLQotYXN5bmNfdGVzdCh0ID0+IHsKLSAgY29u
c3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBwdWxsOiB0LnN0ZXBfZnVuY19k
b25lKGMgPT4gewotICAgICAgLy8gRGV0YWNoIGl0IGJ5IHJlYWRpbmcgaW50byBpdAotICAgICAg
Y29uc3QgdmlldyA9IG5ldyBVaW50OEFycmF5KFsxLCAyLCAzXSk7Ci0gICAgICByZWFkZXIucmVh
ZCh2aWV3KTsKLQotICAgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IGMu
YnlvYlJlcXVlc3QucmVzcG9uZFdpdGhOZXdWaWV3KHZpZXcpLAotICAgICAgICAncmVzcG9uZFdp
dGhOZXdWaWV3KCkgbXVzdCB0aHJvdyBpZiBwYXNzZWQgYSBkZXRhY2hlZCB2aWV3Jyk7Ci0gICAg
fSksCi0gICAgdHlwZTogJ2J5dGVzJwotICB9KTsKLSAgY29uc3QgcmVhZGVyID0gc3RyZWFtLmdl
dFJlYWRlcih7IG1vZGU6ICdieW9iJyB9KTsKLQotICByZWFkZXIucmVhZChuZXcgVWludDhBcnJh
eShbNCwgNSwgNl0pKTsKLX0sICdSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiByZXNw
b25kV2l0aE5ld1ZpZXcoKSB0aHJvd3MgaWYgdGhlIHN1cHBsaWVkIHZpZXdcJ3MgYnVmZmVyIGhh
cyBiZWVuIGRldGFjaGVkICcgKwotICAgICcoaW4gdGhlIHJlYWRhYmxlIHN0YXRlKScpOwotCi1h
c3luY190ZXN0KHQgPT4gewotICBjb25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oewot
ICAgIHB1bGw6IHQuc3RlcF9mdW5jX2RvbmUoYyA9PiB7Ci0gICAgICAvLyBEZXRhY2ggaXQgYnkg
cmVhZGluZyBpbnRvIGl0Ci0gICAgICBjb25zdCB2aWV3ID0gbmV3IFVpbnQ4QXJyYXkoWzEsIDIs
IDNdKTsKLSAgICAgIHJlYWRlci5yZWFkKHZpZXcpOwotCi0gICAgICBjLmNsb3NlKCk7Ci0KLSAg
ICAgIGNvbnN0IHplcm9MZW5ndGhWaWV3ID0gbmV3IFVpbnQ4QXJyYXkodmlldy5idWZmZXIsIDAs
IDApOwotICAgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IGMuYnlvYlJl
cXVlc3QucmVzcG9uZFdpdGhOZXdWaWV3KHplcm9MZW5ndGhWaWV3KSwKLSAgICAgICAgJ3Jlc3Bv
bmRXaXRoTmV3VmlldygpIG11c3QgdGhyb3cgaWYgcGFzc2VkIGEgKHplcm8tbGVuZ3RoKSB2aWV3
IHdob3NlIGJ1ZmZlciBoYXMgYmVlbiBkZXRhY2hlZCcpOwotICAgIH0pLAotICAgIHR5cGU6ICdi
eXRlcycKLSAgfSk7Ci0gIGNvbnN0IHJlYWRlciA9IHN0cmVhbS5nZXRSZWFkZXIoeyBtb2RlOiAn
YnlvYicgfSk7Ci0KLSAgcmVhZGVyLnJlYWQobmV3IFVpbnQ4QXJyYXkoWzQsIDUsIDZdKSk7Ci19
LCAnUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogcmVzcG9uZFdpdGhOZXdWaWV3KCkg
dGhyb3dzIGlmIHRoZSBzdXBwbGllZCB2aWV3XCdzIGJ1ZmZlciBoYXMgYmVlbiBkZXRhY2hlZCAn
ICsKLSAgICcoaW4gdGhlIGNsb3NlZCBzdGF0ZSknKTsKLQotZG9uZSgpOwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRh
YmxlLWJ5dGUtc3RyZWFtcy9kZXRhY2hlZC1idWZmZXJzLnNlcnZpY2V3b3JrZXIuaHR0cHMtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
dHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFtcy9kZXRhY2hlZC1idWZmZXJzLnNlcnZpY2V3b3Jr
ZXIuaHR0cHMtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyODBl
MDU5ODQ1MTQ4MzlhZjA2MGE3ODMyMjNiNWE2Yjk2YzRmZDlkLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMvZGV0YWNoZWQtYnVm
ZmVycy5zZXJ2aWNld29ya2VyLmh0dHBzLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0x
LDEzICswLDAgQEAKLQotSGFybmVzcyBFcnJvciAoVElNRU9VVCksIG1lc3NhZ2UgPSBudWxsCi0K
LVRJTUVPVVQgU2VydmljZSB3b3JrZXIgdGVzdCBzZXR1cCBUZXN0IHRpbWVkIG91dAotRkFJTCBS
ZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiByZWFkKClpbmcgZnJvbSBhIGNsb3NlZCBz
dHJlYW0gc3RpbGwgdHJhbnNmZXJzIHRoZSBidWZmZXIgYXNzZXJ0X25vdF9lcXVhbHM6IGEgZGlm
ZmVyZW50IEFycmF5QnVmZmVyIG11c3QgdW5kZXJsaWUgdGhlIHZhbHVlIGdvdCBkaXNhbGxvd2Vk
IHZhbHVlIG9iamVjdCAiW29iamVjdCBBcnJheUJ1ZmZlcl0iCi1GQUlMIFJlYWRhYmxlU3RyZWFt
IHdpdGggYnl0ZSBzb3VyY2U6IHJlYWQoKWluZyBmcm9tIGEgc3RyZWFtIHdpdGggcXVldWVkIGNo
dW5rcyBzdGlsbCB0cmFuc2ZlcnMgdGhlIGJ1ZmZlciBhc3NlcnRfbm90X2VxdWFsczogYSBkaWZm
ZXJlbnQgQXJyYXlCdWZmZXIgbXVzdCB1bmRlcmxpZSB0aGUgdmFsdWUgZ290IGRpc2FsbG93ZWQg
dmFsdWUgb2JqZWN0ICJbb2JqZWN0IEFycmF5QnVmZmVyXSIKLUZBSUwgUmVhZGFibGVTdHJlYW0g
d2l0aCBieXRlIHNvdXJjZTogZW5xdWV1aW5nIGFuIGFscmVhZHktZGV0YWNoZWQgYnVmZmVyIHRo
cm93cyBhc3NlcnRfdGhyb3dzOiBlbnF1ZXVpbmcgYW4gYWxyZWFkeS1kZXRhY2hlZCBidWZmZXIg
bXVzdCB0aHJvdyBmdW5jdGlvbiAiKCkgPT4gYy5lbnF1ZXVlKHZpZXcpIiBkaWQgbm90IHRocm93
Ci1USU1FT1VUIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IHJlYWRpbmcgaW50byBh
biBhbHJlYWR5LWRldGFjaGVkIGJ1ZmZlciByZWplY3RzIFRlc3QgdGltZWQgb3V0Ci1GQUlMIFJl
YWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IHJlc3BvbmQoKSB0aHJvd3MgaWYgdGhlIEJZ
T0IgcmVxdWVzdCdzIGJ1ZmZlciBoYXMgYmVlbiBkZXRhY2hlZCAoaW4gdGhlIHJlYWRhYmxlIHN0
YXRlKSBhc3NlcnRfdGhyb3dzOiByZXNwb25kKCkgbXVzdCB0aHJvdyBpZiB0aGUgY29ycmVzcG9u
ZGluZyB2aWV3IGhhcyBiZWNvbWUgZGV0YWNoZWQgZnVuY3Rpb24gIigpID0+IGMuYnlvYlJlcXVl
c3QucmVzcG9uZCgxKSIgZGlkIG5vdCB0aHJvdwotRkFJTCBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5
dGUgc291cmNlOiByZXNwb25kKCkgdGhyb3dzIGlmIHRoZSBCWU9CIHJlcXVlc3QncyBidWZmZXIg
aGFzIGJlZW4gZGV0YWNoZWQgKGluIHRoZSBjbG9zZWQgc3RhdGUpIGFzc2VydF90aHJvd3M6IHJl
c3BvbmQoKSBtdXN0IHRocm93IGlmIHRoZSBjb3JyZXNwb25kaW5nIHZpZXcgaGFzIGJlY29tZSBk
ZXRhY2hlZCBmdW5jdGlvbiAiKCkgPT4gYy5ieW9iUmVxdWVzdC5yZXNwb25kKDApIiBkaWQgbm90
IHRocm93Ci1GQUlMIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IHJlc3BvbmRXaXRo
TmV3VmlldygpIHRocm93cyBpZiB0aGUgc3VwcGxpZWQgdmlldydzIGJ1ZmZlciBoYXMgYmVlbiBk
ZXRhY2hlZCAoaW4gdGhlIHJlYWRhYmxlIHN0YXRlKSBhc3NlcnRfdGhyb3dzOiByZXNwb25kV2l0
aE5ld1ZpZXcoKSBtdXN0IHRocm93IGlmIHBhc3NlZCBhIGRldGFjaGVkIHZpZXcgZnVuY3Rpb24g
IigpID0+IGMuYnlvYlJlcXVlc3QucmVzcG9uZFdpdGhOZXdWaWV3KHZpZXcpIiBkaWQgbm90IHRo
cm93Ci1GQUlMIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IHJlc3BvbmRXaXRoTmV3
VmlldygpIHRocm93cyBpZiB0aGUgc3VwcGxpZWQgdmlldydzIGJ1ZmZlciBoYXMgYmVlbiBkZXRh
Y2hlZCAoaW4gdGhlIGNsb3NlZCBzdGF0ZSkgYXNzZXJ0X3Rocm93czogcmVzcG9uZFdpdGhOZXdW
aWV3KCkgbXVzdCB0aHJvdyBpZiBwYXNzZWQgYSAoemVyby1sZW5ndGgpIHZpZXcgd2hvc2UgYnVm
ZmVyIGhhcyBiZWVuIGRldGFjaGVkIGZ1bmN0aW9uICIoKSA9PiBjLmJ5b2JSZXF1ZXN0LnJlc3Bv
bmRXaXRoTmV3Vmlldyh6ZXJvTGVuZ3RoVmlldykiIHRocmV3IG9iamVjdCAiUmFuZ2VFcnJvcjog
SW52YWxpZCB2YWx1ZSBmb3Igdmlldy5ieXRlTGVuZ3RoIiAoIlJhbmdlRXJyb3IiKSBleHBlY3Rl
ZCBvYmplY3QgIlR5cGVFcnJvciIgKCJUeXBlRXJyb3IiKQotCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0
ZS1zdHJlYW1zL2RldGFjaGVkLWJ1ZmZlcnMuc2VydmljZXdvcmtlci5odHRwcy5odG1sIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxl
LWJ5dGUtc3RyZWFtcy9kZXRhY2hlZC1idWZmZXJzLnNlcnZpY2V3b3JrZXIuaHR0cHMuaHRtbApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGI3ZDJjNTQ2MTY5MTRhYjY3NjlhYTVlNjM1
MWMwMmMyYTBmYjVkMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
cmVhZGFibGUtYnl0ZS1zdHJlYW1zL2RldGFjaGVkLWJ1ZmZlcnMuc2VydmljZXdvcmtlci5odHRw
cy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08
bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08dGl0bGU+ZGV0YWNoZWQtYnVmZmVycy5qcyBzZXJ2aWNl
IHdvcmtlciB3cmFwcGVyIGZpbGU8L3RpdGxlPgotCi08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90
ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFy
bmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3NlcnZpY2Utd29ya2Vycy9z
ZXJ2aWNlLXdvcmtlci9yZXNvdXJjZXMvdGVzdC1oZWxwZXJzLnN1Yi5qcyI+PC9zY3JpcHQ+Ci0K
LTxzY3JpcHQ+Ci0ndXNlIHN0cmljdCc7Ci1zZXJ2aWNlX3dvcmtlcl90ZXN0KCdkZXRhY2hlZC1i
dWZmZXJzLmpzJywgJ1NlcnZpY2Ugd29ya2VyIHRlc3Qgc2V0dXAnKTsKLTwvc2NyaXB0PgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJl
YW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFtcy9kZXRhY2hlZC1idWZmZXJzLnNoYXJlZHdvcmtlci1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL2RldGFjaGVkLWJ1ZmZlcnMuc2hhcmVkd29y
a2VyLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDlkNWQyNTA5
ZDc4NDdlOGNkNmZlNjYwNmFhNjBjZGQzM2FhNDc0ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL2RldGFjaGVkLWJ1ZmZlcnMu
c2hhcmVkd29ya2VyLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAot
Q09OU09MRSBNRVNTQUdFOiBSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogU2hh
cmVkV29ya2VyCi0KLUhhcm5lc3MgRXJyb3IgKEZBSUwpLCBtZXNzYWdlID0gUmVmZXJlbmNlRXJy
b3I6IENhbid0IGZpbmQgdmFyaWFibGU6IFNoYXJlZFdvcmtlcgotCi0KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJs
ZS1ieXRlLXN0cmVhbXMvZGV0YWNoZWQtYnVmZmVycy5zaGFyZWR3b3JrZXIuaHRtbCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1i
eXRlLXN0cmVhbXMvZGV0YWNoZWQtYnVmZmVycy5zaGFyZWR3b3JrZXIuaHRtbApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggZGFjNjkxN2Q1MDZjMDM3MGJjMDI1ZjdkYjhlNGZjYTI5MDk0
OTM0ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUt
Ynl0ZS1zdHJlYW1zL2RldGFjaGVkLWJ1ZmZlcnMuc2hhcmVkd29ya2VyLmh0bWwKKysrIC9kZXYv
bnVsbApAQCAtMSwxMSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9InV0
Zi04Ij4KLTx0aXRsZT5kZXRhY2hlZC1idWZmZXJzLmpzIHNoYXJlZCB3b3JrZXIgd3JhcHBlciBm
aWxlPC90aXRsZT4KLQotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwv
c2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwv
c2NyaXB0PgotCi08c2NyaXB0PgotJ3VzZSBzdHJpY3QnOwotZmV0Y2hfdGVzdHNfZnJvbV93b3Jr
ZXIobmV3IFNoYXJlZFdvcmtlcignZGV0YWNoZWQtYnVmZmVycy5qcycpKTsKLTwvc2NyaXB0Pgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
dHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFtcy9nZW5lcmFsLmFueS1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFi
bGUtYnl0ZS1zdHJlYW1zL2dlbmVyYWwuYW55LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40Mzli
MGE1NzkwZTE2MDU2ZWE3YmJmMmMyY2RjOTA4MDM2YmYyZmI5Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRh
YmxlLWJ5dGUtc3RyZWFtcy9nZW5lcmFsLmFueS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw4MyBA
QAorCitIYXJuZXNzIEVycm9yIChUSU1FT1VUKSwgbWVzc2FnZSA9IG51bGwKKworUEFTUyBnZXRS
ZWFkZXIoe21vZGU6ICJieW9iIn0pIHRocm93cyBvbiBub24tYnl0ZXMgc3RyZWFtcyAKK1BBU1Mg
UmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZSBjYW4gYmUgY29uc3RydWN0ZWQgd2l0aCBu
byBlcnJvcnMgCitQQVNTIGdldFJlYWRlcih7bW9kZX0pIG11c3QgcGVyZm9ybSBUb1N0cmluZygp
IAorUEFTUyBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBDb25zdHJ1Y3QgYW5kIGV4
cGVjdCBzdGFydCBhbmQgcHVsbCBiZWluZyBjYWxsZWQgCitQQVNTIFJlYWRhYmxlU3RyZWFtIHdp
dGggYnl0ZSBzb3VyY2U6IE5vIGF1dG9tYXRpYyBwdWxsIGNhbGwgaWYgc3RhcnQgZG9lc24ndCBm
aW5pc2ggCitQQVNTIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IENvbnN0cnVjdCB3
aXRoIGhpZ2hXYXRlck1hcmsgb2YgMCAKK1BBU1MgUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNv
dXJjZTogZGVzaXJlZFNpemUgd2hlbiBjbG9zZWQgCitQQVNTIFJlYWRhYmxlU3RyZWFtIHdpdGgg
Ynl0ZSBzb3VyY2U6IGRlc2lyZWRTaXplIHdoZW4gZXJyb3JlZCAKK1BBU1MgUmVhZGFibGVTdHJl
YW0gd2l0aCBieXRlIHNvdXJjZTogZ2V0UmVhZGVyKCksIHRoZW4gcmVsZWFzZUxvY2soKSAKK1BB
U1MgUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogZ2V0UmVhZGVyKCkgd2l0aCBtb2Rl
IHNldCB0byBieW9iLCB0aGVuIHJlbGVhc2VMb2NrKCkgCitQQVNTIFJlYWRhYmxlU3RyZWFtIHdp
dGggYnl0ZSBzb3VyY2U6IFRlc3QgdGhhdCBjbG9zaW5nIGEgc3RyZWFtIGRvZXMgbm90IHJlbGVh
c2UgYSByZWFkZXIgYXV0b21hdGljYWxseSAKK1BBU1MgUmVhZGFibGVTdHJlYW0gd2l0aCBieXRl
IHNvdXJjZTogVGVzdCB0aGF0IGNsb3NpbmcgYSBzdHJlYW0gZG9lcyBub3QgcmVsZWFzZSBhIEJZ
T0IgcmVhZGVyIGF1dG9tYXRpY2FsbHkgCitQQVNTIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBz
b3VyY2U6IFRlc3QgdGhhdCBlcnJvcmluZyBhIHN0cmVhbSBkb2VzIG5vdCByZWxlYXNlIGEgcmVh
ZGVyIGF1dG9tYXRpY2FsbHkgCitQQVNTIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6
IFRlc3QgdGhhdCBlcnJvcmluZyBhIHN0cmVhbSBkb2VzIG5vdCByZWxlYXNlIGEgQllPQiByZWFk
ZXIgYXV0b21hdGljYWxseSAKK1BBU1MgUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTog
cmVsZWFzZUxvY2soKSBvbiBSZWFkYWJsZVN0cmVhbVJlYWRlciB3aXRoIHBlbmRpbmcgcmVhZCgp
IG11c3QgdGhyb3cgCitQQVNTIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IEF1dG9t
YXRpYyBwdWxsKCkgYWZ0ZXIgc3RhcnQoKSAKK1BBU1MgUmVhZGFibGVTdHJlYW0gd2l0aCBieXRl
IHNvdXJjZTogQXV0b21hdGljIHB1bGwoKSBhZnRlciBzdGFydCgpIGFuZCByZWFkKCkgCitGQUlM
IFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IGF1dG9BbGxvY2F0ZUNodW5rU2l6ZSBh
c3NlcnRfZXF1YWxzOiBwdWxsKCkgbXVzdCBoYXZlIGJlZW4gaW52b2tlZCB0d2ljZSBleHBlY3Rl
ZCAyIGJ1dCBnb3QgMQorUEFTUyBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBNaXgg
b2YgYXV0byBhbGxvY2F0ZSBhbmQgQllPQiAKK1BBU1MgUmVhZGFibGVTdHJlYW0gd2l0aCBieXRl
IHNvdXJjZTogQXV0b21hdGljIHB1bGwoKSBhZnRlciBzdGFydCgpIGFuZCByZWFkKHZpZXcpIAor
UEFTUyBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBlbnF1ZXVlKCksIGdldFJlYWRl
cigpLCB0aGVuIHJlYWQoKSAKK1BBU1MgUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTog
UHVzaCBzb3VyY2UgdGhhdCBkb2Vzbid0IHVuZGVyc3RhbmQgcHVsbCBzaWduYWwgCitGQUlMIFJl
YWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IHB1bGwoKSBmdW5jdGlvbiBpcyBub3QgY2Fs
bGFibGUgYXNzZXJ0X3Rocm93c19qczogY29uc3RydWN0b3Igc2hvdWxkIHRocm93IGZ1bmN0aW9u
ICIoKSA9PiBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHB1bGw6ICdmb28nLAorICAgIHR5cGU6
ICdieXRlcycKKyAgfSkiIGRpZCBub3QgdGhyb3cKK1BBU1MgUmVhZGFibGVTdHJlYW0gd2l0aCBi
eXRlIHNvdXJjZTogZW5xdWV1ZSgpIHdpdGggVWludDE2QXJyYXksIGdldFJlYWRlcigpLCB0aGVu
IHJlYWQoKSAKK1BBU1MgUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogZW5xdWV1ZSgp
LCByZWFkKHZpZXcpIHBhcnRpYWxseSwgdGhlbiByZWFkKCkgCitQQVNTIFJlYWRhYmxlU3RyZWFt
IHdpdGggYnl0ZSBzb3VyY2U6IGdldFJlYWRlcigpLCBlbnF1ZXVlKCksIGNsb3NlKCksIHRoZW4g
cmVhZCgpIAorUEFTUyBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBlbnF1ZXVlKCks
IGNsb3NlKCksIGdldFJlYWRlcigpLCB0aGVuIHJlYWQoKSAKK0ZBSUwgUmVhZGFibGVTdHJlYW0g
d2l0aCBieXRlIHNvdXJjZTogUmVzcG9uZCB0byBwdWxsKCkgYnkgZW5xdWV1ZSgpIGFzc2VydF9l
cXVhbHM6IGJ5b2JSZXF1ZXN0IG11c3QgYmUgbnVsbCBleHBlY3RlZCAob2JqZWN0KSBudWxsIGJ1
dCBnb3QgKHVuZGVmaW5lZCkgdW5kZWZpbmVkCitGQUlMIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0
ZSBzb3VyY2U6IFJlc3BvbmQgdG8gcHVsbCgpIGJ5IGVucXVldWUoKSBhc3luY2hyb25vdXNseSBh
c3NlcnRfZXF1YWxzOiBieW9iUmVxdWVzdCBzaG91bGQgYmUgbnVsbCBleHBlY3RlZCAob2JqZWN0
KSBudWxsIGJ1dCBnb3QgKHVuZGVmaW5lZCkgdW5kZWZpbmVkCitUSU1FT1VUIFJlYWRhYmxlU3Ry
ZWFtIHdpdGggYnl0ZSBzb3VyY2U6IFJlc3BvbmQgdG8gbXVsdGlwbGUgcHVsbCgpIGJ5IHNlcGFy
YXRlIGVucXVldWUoKSBUZXN0IHRpbWVkIG91dAorTk9UUlVOIFJlYWRhYmxlU3RyZWFtIHdpdGgg
Ynl0ZSBzb3VyY2U6IHJlYWQodmlldyksIHRoZW4gcmVzcG9uZCgpIAorTk9UUlVOIFJlYWRhYmxl
U3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IHJlYWQodmlldyksIHRoZW4gcmVzcG9uZCgpIHdpdGgg
YSB0cmFuc2ZlcnJlZCBBcnJheUJ1ZmZlciAKK05PVFJVTiBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5
dGUgc291cmNlOiByZWFkKHZpZXcpLCB0aGVuIHJlc3BvbmQoKSB3aXRoIHRvbyBiaWcgdmFsdWUg
CitOT1RSVU4gUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogcmVzcG9uZCgzKSB0byBy
ZWFkKHZpZXcpIHdpdGggMiBlbGVtZW50IFVpbnQxNkFycmF5IGVucXVldWVzIHRoZSAxIGJ5dGUg
cmVtYWluZGVyIAorTk9UUlVOIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IGVucXVl
dWUoKSwgZ2V0UmVhZGVyKCksIHRoZW4gcmVhZCh2aWV3KSAKK05PVFJVTiBSZWFkYWJsZVN0cmVh
bSB3aXRoIGJ5dGUgc291cmNlOiBlbnF1ZXVlKCksIGdldFJlYWRlcigpLCB0aGVuIGNhbmNlbCgp
IChtb2RlID0gbm90IEJZT0IpIAorTk9UUlVOIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3Vy
Y2U6IGVucXVldWUoKSwgZ2V0UmVhZGVyKCksIHRoZW4gY2FuY2VsKCkgKG1vZGUgPSBCWU9CKSAK
K05PVFJVTiBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBnZXRSZWFkZXIoKSwgcmVh
ZCh2aWV3KSwgdGhlbiBjYW5jZWwoKSAKK05PVFJVTiBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUg
c291cmNlOiBjYW5jZWwoKSB3aXRoIHBhcnRpYWxseSBmaWxsZWQgcGVuZGluZyBwdWxsKCkgcmVx
dWVzdCAKK05PVFJVTiBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBlbnF1ZXVlKCks
IGdldFJlYWRlcigpLCB0aGVuIHJlYWQodmlldykgd2hlcmUgdmlldy5idWZmZXIgaXMgbm90IGZ1
bGx5IGNvdmVyZWQgYnkgdmlldyAKK05PVFJVTiBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291
cmNlOiBNdWx0aXBsZSBlbnF1ZXVlKCksIGdldFJlYWRlcigpLCB0aGVuIHJlYWQodmlldykgCitO
T1RSVU4gUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogZW5xdWV1ZSgpLCBnZXRSZWFk
ZXIoKSwgdGhlbiByZWFkKHZpZXcpIHdpdGggYSBiaWdnZXIgdmlldyAKK05PVFJVTiBSZWFkYWJs
ZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBlbnF1ZXVlKCksIGdldFJlYWRlcigpLCB0aGVuIHJl
YWQodmlldykgd2l0aCBzbWFsbGVyIHZpZXdzIAorTk9UUlVOIFJlYWRhYmxlU3RyZWFtIHdpdGgg
Ynl0ZSBzb3VyY2U6IGVucXVldWUoKSAxIGJ5dGUsIGdldFJlYWRlcigpLCB0aGVuIHJlYWQodmll
dykgd2l0aCBVaW50MTZBcnJheSAKK05PVFJVTiBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291
cmNlOiBlbnF1ZXVlKCkgMyBieXRlLCBnZXRSZWFkZXIoKSwgdGhlbiByZWFkKHZpZXcpIHdpdGgg
Mi1lbGVtZW50IFVpbnQxNkFycmF5IAorTk9UUlVOIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBz
b3VyY2U6IHJlYWQodmlldykgd2l0aCBVaW50MTZBcnJheSBvbiBjbG9zZSgpLWQgc3RyZWFtIHdp
dGggMSBieXRlIGVucXVldWUoKS1kIG11c3QgZmFpbCAKK05PVFJVTiBSZWFkYWJsZVN0cmVhbSB3
aXRoIGJ5dGUgc291cmNlOiBBIHN0cmVhbSBtdXN0IGJlIGVycm9yZWQgaWYgY2xvc2UoKS1kIGJl
Zm9yZSBmdWxmaWxsaW5nIHJlYWQodmlldykgd2l0aCBVaW50MTZBcnJheSAKK1BBU1MgUmVhZGFi
bGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogVGhyb3cgaWYgY2xvc2UoKS1lZCBtb3JlIHRoYW4g
b25jZSAKK1BBU1MgUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogVGhyb3cgb24gZW5x
dWV1ZSgpIGFmdGVyIGNsb3NlKCkgCitOT1RSVU4gUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNv
dXJjZTogcmVhZCh2aWV3KSwgdGhlbiByZXNwb25kKCkgYW5kIGNsb3NlKCkgaW4gcHVsbCgpIAor
Tk9UUlVOIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IHJlYWQodmlldykgd2l0aCBV
aW50MzJBcnJheSwgdGhlbiBmaWxsIGl0IGJ5IG11bHRpcGxlIHJlc3BvbmQoKSBjYWxscyAKK05P
VFJVTiBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiByZWFkKCkgdHdpY2UsIHRoZW4g
ZW5xdWV1ZSgpIHR3aWNlIAorTk9UUlVOIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6
IE11bHRpcGxlIHJlYWQodmlldyksIGNsb3NlKCkgYW5kIHJlc3BvbmQoKSAKK05PVFJVTiBSZWFk
YWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBNdWx0aXBsZSByZWFkKHZpZXcpLCBiaWcgZW5x
dWV1ZSgpIAorTk9UUlVOIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IE11bHRpcGxl
IHJlYWQodmlldykgYW5kIG11bHRpcGxlIGVucXVldWUoKSAKK05PVFJVTiBSZWFkYWJsZVN0cmVh
bSB3aXRoIGJ5dGUgc291cmNlOiByZWFkKHZpZXcpIHdpdGggcGFzc2luZyB1bmRlZmluZWQgYXMg
dmlldyBtdXN0IGZhaWwgCitOT1RSVU4gUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTog
cmVhZCh2aWV3KSB3aXRoIHBhc3NpbmcgYW4gZW1wdHkgb2JqZWN0IGFzIHZpZXcgbXVzdCBmYWls
IAorTk9UUlVOIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IEV2ZW4gcmVhZCh2aWV3
KSB3aXRoIHBhc3NpbmcgQXJyYXlCdWZmZXJWaWV3IGxpa2Ugb2JqZWN0IGFzIHZpZXcgbXVzdCBm
YWlsIAorTk9UUlVOIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IHJlYWQoKSBvbiBh
biBlcnJvcmVkIHN0cmVhbSAKK05PVFJVTiBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNl
OiByZWFkKCksIHRoZW4gZXJyb3IoKSAKK05PVFJVTiBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUg
c291cmNlOiByZWFkKHZpZXcpIG9uIGFuIGVycm9yZWQgc3RyZWFtIAorTk9UUlVOIFJlYWRhYmxl
U3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IHJlYWQodmlldyksIHRoZW4gZXJyb3IoKSAKK05PVFJV
TiBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBUaHJvd2luZyBpbiBwdWxsIGZ1bmN0
aW9uIG11c3QgZXJyb3IgdGhlIHN0cmVhbSAKK05PVFJVTiBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5
dGUgc291cmNlOiBUaHJvd2luZyBpbiBwdWxsIGluIHJlc3BvbnNlIHRvIHJlYWQoKSBtdXN0IGJl
IGlnbm9yZWQgaWYgdGhlIHN0cmVhbSBpcyBlcnJvcmVkIGluIGl0IAorTk9UUlVOIFJlYWRhYmxl
U3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IFRocm93aW5nIGluIHB1bGwgaW4gcmVzcG9uc2UgdG8g
cmVhZCh2aWV3KSBmdW5jdGlvbiBtdXN0IGVycm9yIHRoZSBzdHJlYW0gCitOT1RSVU4gUmVhZGFi
bGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogVGhyb3dpbmcgaW4gcHVsbCBpbiByZXNwb25zZSB0
byByZWFkKHZpZXcpIG11c3QgYmUgaWdub3JlZCBpZiB0aGUgc3RyZWFtIGlzIGVycm9yZWQgaW4g
aXQgCitOT1RSVU4gY2FsbGluZyByZXNwb25kKCkgdHdpY2Ugb24gdGhlIHNhbWUgYnlvYlJlcXVl
c3Qgc2hvdWxkIHRocm93IAorTk9UUlVOIGNhbGxpbmcgcmVzcG9uZFdpdGhOZXdWaWV3KCkgdHdp
Y2Ugb24gdGhlIHNhbWUgYnlvYlJlcXVlc3Qgc2hvdWxkIHRocm93IAorTk9UUlVOIGNhbGxpbmcg
cmVzcG9uZCgwKSB0d2ljZSBvbiB0aGUgc2FtZSBieW9iUmVxdWVzdCBzaG91bGQgdGhyb3cgZXZl
biB3aGVuIGNsb3NlZCAKK05PVFJVTiBwdWxsKCkgcmVzb2x2aW5nIHNob3VsZCBub3QgbWFrZSBy
ZWxlYXNlTG9jaygpIHBvc3NpYmxlIAorTk9UUlVOIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBz
b3VyY2U6IGRlZmF1bHQgcmVhZGVyICsgYXV0b0FsbG9jYXRlQ2h1bmtTaXplICsgYnlvYlJlcXVl
c3QgaW50ZXJhY3Rpb24gCitQQVNTIFJlYWRhYmxlU3RyZWFtQllPQlJlYWRlciBjYW4gYmUgY29u
c3RydWN0ZWQgZGlyZWN0bHkgCitQQVNTIFJlYWRhYmxlU3RyZWFtQllPQlJlYWRlciBjb25zdHJ1
Y3RvciByZXF1aXJlcyBhIFJlYWRhYmxlU3RyZWFtIGFyZ3VtZW50IAorUEFTUyBSZWFkYWJsZVN0
cmVhbUJZT0JSZWFkZXIgY29uc3RydWN0b3IgcmVxdWlyZXMgYW4gdW5sb2NrZWQgUmVhZGFibGVT
dHJlYW0gCitQQVNTIFJlYWRhYmxlU3RyZWFtQllPQlJlYWRlciBjb25zdHJ1Y3RvciByZXF1aXJl
cyBhIFJlYWRhYmxlU3RyZWFtIHdpdGggdHlwZSAiYnl0ZXMiIAorUEFTUyBSZWFkYWJsZVN0cmVh
bSBjb25zdHJ1Y3RvciBzaG91bGQgbm90IGFjY2VwdCBhIHN0cmF0ZWd5IHdpdGggYSBzaXplIGRl
ZmluZWQgaWYgdHlwZSBpcyAiYnl0ZXMiIAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1z
L2dlbmVyYWwuYW55Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL2dlbmVyYWwuYW55Lmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMjM4MjkxMzUyOGU2OTNiM2E1ZDU2YzY2MGE0NTA2MDk4MGI1NDhjMwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMvZ2VuZXJhbC5hbnkuaHRtbApAQCAtMCwwICsx
IEBACis8IS0tIFRoaXMgZmlsZSBpcyByZXF1aXJlZCBmb3IgV2ViS2l0IHRlc3QgaW5mcmFzdHJ1
Y3R1cmUgdG8gcnVuIHRoZSB0ZW1wbGF0ZWQgdGVzdCAtLT4KXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL2dlbmVyYWwuYW55LmpzIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxl
LWJ5dGUtc3RyZWFtcy9nZW5lcmFsLmFueS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMzg0ZGJjNWM3OTQ0YmM3
NWNlMmEwMTQ0NzZjNTM2N2QxNTdmZTdiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3Ry
ZWFtcy9nZW5lcmFsLmFueS5qcwpAQCAtMCwwICsxLDIxMDMgQEAKKy8vIE1FVEE6IGdsb2JhbD13
aW5kb3csd29ya2VyLGpzc2hlbGwKKy8vIE1FVEE6IHNjcmlwdD0uLi9yZXNvdXJjZXMvcnMtdXRp
bHMuanMKKy8vIE1FVEE6IHNjcmlwdD0uLi9yZXNvdXJjZXMvdGVzdC11dGlscy5qcworJ3VzZSBz
dHJpY3QnOworCitjb25zdCBlcnJvcjEgPSBuZXcgRXJyb3IoJ2Vycm9yMScpOworZXJyb3IxLm5h
bWUgPSAnZXJyb3IxJzsKKwordGVzdCgoKSA9PiB7CisgIGFzc2VydF90aHJvd3NfanMoVHlwZUVy
cm9yLCAoKSA9PiBuZXcgUmVhZGFibGVTdHJlYW0oKS5nZXRSZWFkZXIoeyBtb2RlOiAnYnlvYicg
fSkpOworfSwgJ2dldFJlYWRlcih7bW9kZTogImJ5b2IifSkgdGhyb3dzIG9uIG5vbi1ieXRlcyBz
dHJlYW1zJyk7CisKKwordGVzdCgoKSA9PiB7CisgIC8vIENvbnN0cnVjdGluZyBSZWFkYWJsZVN0
cmVhbSB3aXRoIGFuIGVtcHR5IHVuZGVybHlpbmcgYnl0ZSBzb3VyY2Ugb2JqZWN0IGFzIHBhcmFt
ZXRlciBzaG91bGRuJ3QgdGhyb3cuCisgIG5ldyBSZWFkYWJsZVN0cmVhbSh7IHR5cGU6ICdieXRl
cycgfSkuZ2V0UmVhZGVyKHsgbW9kZTogJ2J5b2InIH0pOworICAvLyBDb25zdHJ1Y3RvciBtdXN0
IHBlcmZvcm0gVG9TdHJpbmcodHlwZSkuCisgIG5ldyBSZWFkYWJsZVN0cmVhbSh7IHR5cGU6IHsg
dG9TdHJpbmcoKSB7cmV0dXJuICdieXRlcyc7fSB9IH0pCisgICAgLmdldFJlYWRlcih7IG1vZGU6
ICdieW9iJyB9KTsKKyAgbmV3IFJlYWRhYmxlU3RyZWFtKHsgdHlwZTogeyB0b1N0cmluZzogbnVs
bCwgdmFsdWVPZigpIHtyZXR1cm4gJ2J5dGVzJzt9IH0gfSkKKyAgICAuZ2V0UmVhZGVyKHsgbW9k
ZTogJ2J5b2InIH0pOworfSwgJ1JlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2UgY2FuIGJl
IGNvbnN0cnVjdGVkIHdpdGggbm8gZXJyb3JzJyk7CisKK3Rlc3QoKCkgPT4geworICBjb25zdCBS
ZWFkYWJsZVN0cmVhbUJZT0JSZWFkZXIgPSBuZXcgUmVhZGFibGVTdHJlYW0oeyB0eXBlOiAnYnl0
ZXMnIH0pLmdldFJlYWRlcih7IG1vZGU6ICdieW9iJyB9KS5jb25zdHJ1Y3RvcjsKKyAgY29uc3Qg
cnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeyB0eXBlOiAnYnl0ZXMnIH0pOworCisgIGxldCByZWFk
ZXIgPSBycy5nZXRSZWFkZXIoeyBtb2RlOiB7IHRvU3RyaW5nKCkgeyByZXR1cm4gJ2J5b2InOyB9
IH0gfSk7CisgIGFzc2VydF90cnVlKHJlYWRlciBpbnN0YW5jZW9mIFJlYWRhYmxlU3RyZWFtQllP
QlJlYWRlciwgJ211c3QgZ2l2ZSBhIEJZT0IgcmVhZGVyJyk7CisgIHJlYWRlci5yZWxlYXNlTG9j
aygpOworCisgIHJlYWRlciA9IHJzLmdldFJlYWRlcih7IG1vZGU6IHsgdG9TdHJpbmc6IG51bGws
IHZhbHVlT2YoKSB7cmV0dXJuICdieW9iJzt9IH0gfSk7CisgIGFzc2VydF90cnVlKHJlYWRlciBp
bnN0YW5jZW9mIFJlYWRhYmxlU3RyZWFtQllPQlJlYWRlciwgJ211c3QgZ2l2ZSBhIEJZT0IgcmVh
ZGVyJyk7CisgIHJlYWRlci5yZWxlYXNlTG9jaygpOworCisgIHJlYWRlciA9IHJzLmdldFJlYWRl
cih7IG1vZGU6ICdieW9iJywgbm90bW9kZTogJ2lnbm9yZWQnIH0pOworICBhc3NlcnRfdHJ1ZShy
ZWFkZXIgaW5zdGFuY2VvZiBSZWFkYWJsZVN0cmVhbUJZT0JSZWFkZXIsICdtdXN0IGdpdmUgYSBC
WU9CIHJlYWRlcicpOworfSwgJ2dldFJlYWRlcih7bW9kZX0pIG11c3QgcGVyZm9ybSBUb1N0cmlu
ZygpJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisgIGxldCBzdGFydENhbGxlZCA9IGZhbHNl
OworICBsZXQgc3RhcnRDYWxsZWRCZWZvcmVQdWxsID0gZmFsc2U7CisgIGxldCBkZXNpcmVkU2l6
ZTsKKyAgbGV0IGNvbnRyb2xsZXI7CisKKyAgbGV0IHJlc29sdmVUZXN0UHJvbWlzZTsKKyAgY29u
c3QgdGVzdFByb21pc2UgPSBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKKyAgICByZXNvbHZlVGVz
dFByb21pc2UgPSByZXNvbHZlOworICB9KTsKKworICBuZXcgUmVhZGFibGVTdHJlYW0oeworICAg
IHN0YXJ0KGMpIHsKKyAgICAgIGNvbnRyb2xsZXIgPSBjOworICAgICAgc3RhcnRDYWxsZWQgPSB0
cnVlOworICAgIH0sCisgICAgcHVsbCgpIHsKKyAgICAgIHN0YXJ0Q2FsbGVkQmVmb3JlUHVsbCA9
IHN0YXJ0Q2FsbGVkOworICAgICAgZGVzaXJlZFNpemUgPSBjb250cm9sbGVyLmRlc2lyZWRTaXpl
OworICAgICAgcmVzb2x2ZVRlc3RQcm9taXNlKCk7CisgICAgfSwKKyAgICB0eXBlOiAnYnl0ZXMn
CisgIH0sIHsKKyAgICBoaWdoV2F0ZXJNYXJrOiAyNTYKKyAgfSk7CisKKyAgcmV0dXJuIHRlc3RQ
cm9taXNlLnRoZW4oKCkgPT4geworICAgIGFzc2VydF90cnVlKHN0YXJ0Q2FsbGVkQmVmb3JlUHVs
bCwgJ3N0YXJ0IHNob3VsZCBiZSBjYWxsZWQgYmVmb3JlIHB1bGwnKTsKKyAgICBhc3NlcnRfZXF1
YWxzKGRlc2lyZWRTaXplLCAyNTYsICdkZXNpcmVkU2l6ZSBzaG91bGQgZXF1YWwgaGlnaFdhdGVy
TWFyaycpOworICB9KTsKKworfSwgJ1JlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IENv
bnN0cnVjdCBhbmQgZXhwZWN0IHN0YXJ0IGFuZCBwdWxsIGJlaW5nIGNhbGxlZCcpOworCitwcm9t
aXNlX3Rlc3QoKCkgPT4geworICBsZXQgcHVsbENvdW50ID0gMDsKKyAgbGV0IGNoZWNrZWROb1B1
bGwgPSBmYWxzZTsKKworICBsZXQgcmVzb2x2ZVRlc3RQcm9taXNlOworICBjb25zdCB0ZXN0UHJv
bWlzZSA9IG5ldyBQcm9taXNlKHJlc29sdmUgPT4geworICAgIHJlc29sdmVUZXN0UHJvbWlzZSA9
IHJlc29sdmU7CisgIH0pOworICBsZXQgcmVzb2x2ZVN0YXJ0UHJvbWlzZTsKKworICBuZXcgUmVh
ZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KCkgeworICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJl
c29sdmUgPT4geworICAgICAgICByZXNvbHZlU3RhcnRQcm9taXNlID0gcmVzb2x2ZTsKKyAgICAg
IH0pOworICAgIH0sCisgICAgcHVsbCgpIHsKKyAgICAgIGlmIChjaGVja2VkTm9QdWxsKSB7Cisg
ICAgICAgIHJlc29sdmVUZXN0UHJvbWlzZSgpOworICAgICAgfQorCisgICAgICArK3B1bGxDb3Vu
dDsKKyAgICB9LAorICAgIHR5cGU6ICdieXRlcycKKyAgfSwgeworICAgIGhpZ2hXYXRlck1hcms6
IDI1NgorICB9KTsKKworICBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHsKKyAgICBhc3Nl
cnRfZXF1YWxzKHB1bGxDb3VudCwgMCk7CisgICAgY2hlY2tlZE5vUHVsbCA9IHRydWU7CisgICAg
cmVzb2x2ZVN0YXJ0UHJvbWlzZSgpOworICB9KTsKKworICByZXR1cm4gdGVzdFByb21pc2U7CisK
K30sICdSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBObyBhdXRvbWF0aWMgcHVsbCBj
YWxsIGlmIHN0YXJ0IGRvZXNuXCd0IGZpbmlzaCcpOworCitwcm9taXNlX3Rlc3QodCA9PiB7Cisg
IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgcHVsbDogdC51bnJlYWNoZWRfZnVuYygncHVsbCgp
IHNob3VsZCBub3QgYmUgY2FsbGVkJyksCisgICAgdHlwZTogJ2J5dGVzJworICB9LCB7CisgICAg
aGlnaFdhdGVyTWFyazogMAorICB9KTsKKworICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7Cit9
LCAnUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogQ29uc3RydWN0IHdpdGggaGlnaFdh
dGVyTWFyayBvZiAwJyk7CisKK3Rlc3QoKCkgPT4geworICBuZXcgUmVhZGFibGVTdHJlYW0oewor
ICAgIHN0YXJ0KGMpIHsKKyAgICAgIGFzc2VydF9lcXVhbHMoYy5kZXNpcmVkU2l6ZSwgMTAsICdk
ZXNpcmVkU2l6ZSBtdXN0IHN0YXJ0IGF0IHRoZSBoaWdoV2F0ZXJNYXJrJyk7CisgICAgICBjLmNs
b3NlKCk7CisgICAgICBhc3NlcnRfZXF1YWxzKGMuZGVzaXJlZFNpemUsIDAsICdhZnRlciBjbG9z
aW5nLCBkZXNpcmVkU2l6ZSBtdXN0IGJlIDAnKTsKKyAgICB9LAorICAgIHR5cGU6ICdieXRlcycK
KyAgfSwgeworICAgIGhpZ2hXYXRlck1hcms6IDEwCisgIH0pOworfSwgJ1JlYWRhYmxlU3RyZWFt
IHdpdGggYnl0ZSBzb3VyY2U6IGRlc2lyZWRTaXplIHdoZW4gY2xvc2VkJyk7CisKK3Rlc3QoKCkg
PT4geworICBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGFzc2Vy
dF9lcXVhbHMoYy5kZXNpcmVkU2l6ZSwgMTAsICdkZXNpcmVkU2l6ZSBtdXN0IHN0YXJ0IGF0IHRo
ZSBoaWdoV2F0ZXJNYXJrJyk7CisgICAgICBjLmVycm9yKCk7CisgICAgICBhc3NlcnRfZXF1YWxz
KGMuZGVzaXJlZFNpemUsIG51bGwsICdhZnRlciBlcnJvcmluZywgZGVzaXJlZFNpemUgbXVzdCBi
ZSBudWxsJyk7CisgICAgfSwKKyAgICB0eXBlOiAnYnl0ZXMnCisgIH0sIHsKKyAgICBoaWdoV2F0
ZXJNYXJrOiAxMAorICB9KTsKK30sICdSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBk
ZXNpcmVkU2l6ZSB3aGVuIGVycm9yZWQnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBjb25z
dCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHR5cGU6ICdieXRlcycKKyAgfSk7
CisKKyAgY29uc3QgcmVhZGVyID0gc3RyZWFtLmdldFJlYWRlcigpOworICByZWFkZXIucmVsZWFz
ZUxvY2soKTsKKworICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2pzKHQsIFR5cGVFcnJvciwgcmVh
ZGVyLmNsb3NlZCwgJ2Nsb3NlZCBtdXN0IHJlamVjdCcpOworfSwgJ1JlYWRhYmxlU3RyZWFtIHdp
dGggYnl0ZSBzb3VyY2U6IGdldFJlYWRlcigpLCB0aGVuIHJlbGVhc2VMb2NrKCknKTsKKworcHJv
bWlzZV90ZXN0KHQgPT4geworICBjb25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oewor
ICAgIHR5cGU6ICdieXRlcycKKyAgfSk7CisKKyAgY29uc3QgcmVhZGVyID0gc3RyZWFtLmdldFJl
YWRlcih7IG1vZGU6ICdieW9iJyB9KTsKKyAgcmVhZGVyLnJlbGVhc2VMb2NrKCk7CisKKyAgcmV0
dXJuIHByb21pc2VfcmVqZWN0c19qcyh0LCBUeXBlRXJyb3IsIHJlYWRlci5jbG9zZWQsICdjbG9z
ZWQgbXVzdCByZWplY3QnKTsKK30sICdSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBn
ZXRSZWFkZXIoKSB3aXRoIG1vZGUgc2V0IHRvIGJ5b2IsIHRoZW4gcmVsZWFzZUxvY2soKScpOwor
Citwcm9taXNlX3Rlc3QodCA9PiB7CisgIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVh
bSh7CisgICAgc3RhcnQoYykgeworICAgICAgYy5jbG9zZSgpOworICAgIH0sCisgICAgcHVsbDog
dC51bnJlYWNoZWRfZnVuYygncHVsbCgpIHNob3VsZCBub3QgYmUgY2FsbGVkJyksCisgICAgdHlw
ZTogJ2J5dGVzJworICB9KTsKKworICBjb25zdCByZWFkZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKCk7
CisKKyAgcmV0dXJuIHJlYWRlci5jbG9zZWQudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X3Rocm93
c19qcyhUeXBlRXJyb3IsICgpID0+IHN0cmVhbS5nZXRSZWFkZXIoKSwgJ2dldFJlYWRlcigpIG11
c3QgdGhyb3cnKTsKKyAgfSk7Cit9LCAnUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTog
VGVzdCB0aGF0IGNsb3NpbmcgYSBzdHJlYW0gZG9lcyBub3QgcmVsZWFzZSBhIHJlYWRlciBhdXRv
bWF0aWNhbGx5Jyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgY29uc3Qgc3RyZWFtID0gbmV3
IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjLmNsb3NlKCk7CisgICAg
fSwKKyAgICBwdWxsOiB0LnVucmVhY2hlZF9mdW5jKCdwdWxsKCkgc2hvdWxkIG5vdCBiZSBjYWxs
ZWQnKSwKKyAgICB0eXBlOiAnYnl0ZXMnCisgIH0pOworCisgIGNvbnN0IHJlYWRlciA9IHN0cmVh
bS5nZXRSZWFkZXIoeyBtb2RlOiAnYnlvYicgfSk7CisKKyAgcmV0dXJuIHJlYWRlci5jbG9zZWQu
dGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IHN0cmVh
bS5nZXRSZWFkZXIoeyBtb2RlOiAnYnlvYicgfSksICdnZXRSZWFkZXIoKSBtdXN0IHRocm93Jyk7
CisgIH0pOworfSwgJ1JlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IFRlc3QgdGhhdCBj
bG9zaW5nIGEgc3RyZWFtIGRvZXMgbm90IHJlbGVhc2UgYSBCWU9CIHJlYWRlciBhdXRvbWF0aWNh
bGx5Jyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgY29uc3Qgc3RyZWFtID0gbmV3IFJlYWRh
YmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjLmVycm9yKGVycm9yMSk7CisgICAg
fSwKKyAgICBwdWxsOiB0LnVucmVhY2hlZF9mdW5jKCdwdWxsKCkgc2hvdWxkIG5vdCBiZSBjYWxs
ZWQnKSwKKyAgICB0eXBlOiAnYnl0ZXMnCisgIH0pOworCisgIGNvbnN0IHJlYWRlciA9IHN0cmVh
bS5nZXRSZWFkZXIoKTsKKworICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJy
b3IxLCByZWFkZXIuY2xvc2VkLCAnY2xvc2VkIG11c3QgcmVqZWN0JykudGhlbigoKSA9PiB7Cisg
ICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IHN0cmVhbS5nZXRSZWFkZXIoKSwg
J2dldFJlYWRlcigpIG11c3QgdGhyb3cnKTsKKyAgfSk7Cit9LCAnUmVhZGFibGVTdHJlYW0gd2l0
aCBieXRlIHNvdXJjZTogVGVzdCB0aGF0IGVycm9yaW5nIGEgc3RyZWFtIGRvZXMgbm90IHJlbGVh
c2UgYSByZWFkZXIgYXV0b21hdGljYWxseScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIGNv
bnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAg
Yy5lcnJvcihlcnJvcjEpOworICAgIH0sCisgICAgcHVsbDogdC51bnJlYWNoZWRfZnVuYygncHVs
bCgpIHNob3VsZCBub3QgYmUgY2FsbGVkJyksCisgICAgdHlwZTogJ2J5dGVzJworICB9KTsKKwor
ICBjb25zdCByZWFkZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKHsgbW9kZTogJ2J5b2InIH0pOworCisg
IHJldHVybiBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIHJlYWRlci5jbG9zZWQs
ICdjbG9zZWQgbXVzdCByZWplY3QnKS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfdGhyb3dzX2pz
KFR5cGVFcnJvciwgKCkgPT4gc3RyZWFtLmdldFJlYWRlcih7IG1vZGU6ICdieW9iJyB9KSwgJ2dl
dFJlYWRlcigpIG11c3QgdGhyb3cnKTsKKyAgfSk7Cit9LCAnUmVhZGFibGVTdHJlYW0gd2l0aCBi
eXRlIHNvdXJjZTogVGVzdCB0aGF0IGVycm9yaW5nIGEgc3RyZWFtIGRvZXMgbm90IHJlbGVhc2Ug
YSBCWU9CIHJlYWRlciBhdXRvbWF0aWNhbGx5Jyk7CisKK3Rlc3QoKCkgPT4geworICBjb25zdCBz
dHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHR5cGU6ICdieXRlcycKKyAgfSk7CisK
KyAgY29uc3QgcmVhZGVyID0gc3RyZWFtLmdldFJlYWRlcigpOworICByZWFkZXIucmVhZCgpOwor
ICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4gcmVhZGVyLnJlbGVhc2VMb2NrKCks
ICdyZWFkZXIucmVsZWFzZUxvY2soKSBtdXN0IHRocm93Jyk7Cit9LCAnUmVhZGFibGVTdHJlYW0g
d2l0aCBieXRlIHNvdXJjZTogcmVsZWFzZUxvY2soKSBvbiBSZWFkYWJsZVN0cmVhbVJlYWRlciB3
aXRoIHBlbmRpbmcgcmVhZCgpIG11c3QgdGhyb3cnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsK
KyAgbGV0IHB1bGxDb3VudCA9IDA7CisKKyAgY29uc3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxlU3Ry
ZWFtKHsKKyAgICBwdWxsKCkgeworICAgICAgKytwdWxsQ291bnQ7CisgICAgfSwKKyAgICB0eXBl
OiAnYnl0ZXMnCisgIH0sIHsKKyAgICBoaWdoV2F0ZXJNYXJrOiA4CisgIH0pOworCisgIHN0cmVh
bS5nZXRSZWFkZXIoKTsKKworICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMCwgJ05vIHB1bGwg
YXMgc3RhcnQoKSBqdXN0IGZpbmlzaGVkIGFuZCBpcyBub3QgeWV0IHJlZmxlY3RlZCB0byB0aGUg
c3RhdGUgb2YgdGhlIHN0cmVhbScpOworCisgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKS50aGVu
KCgpID0+IHsKKyAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMSwgJ3B1bGwgbXVzdCBiZSBp
bnZva2VkJyk7CisgIH0pOworfSwgJ1JlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IEF1
dG9tYXRpYyBwdWxsKCkgYWZ0ZXIgc3RhcnQoKScpOworCitwcm9taXNlX3Rlc3QoKCkgPT4gewor
ICBsZXQgcHVsbENvdW50ID0gMDsKKworICBjb25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJl
YW0oeworICAgIHB1bGwoKSB7CisgICAgICArK3B1bGxDb3VudDsKKyAgICB9LAorICAgIHR5cGU6
ICdieXRlcycKKyAgfSwgeworICAgIGhpZ2hXYXRlck1hcms6IDAKKyAgfSk7CisKKyAgY29uc3Qg
cmVhZGVyID0gc3RyZWFtLmdldFJlYWRlcigpOworICByZWFkZXIucmVhZCgpOworCisgIGFzc2Vy
dF9lcXVhbHMocHVsbENvdW50LCAwLCAnTm8gcHVsbCBhcyBzdGFydCgpIGp1c3QgZmluaXNoZWQg
YW5kIGlzIG5vdCB5ZXQgcmVmbGVjdGVkIHRvIHRoZSBzdGF0ZSBvZiB0aGUgc3RyZWFtJyk7CisK
KyAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9lcXVh
bHMocHVsbENvdW50LCAxLCAncHVsbCBtdXN0IGJlIGludm9rZWQnKTsKKyAgfSk7Cit9LCAnUmVh
ZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogQXV0b21hdGljIHB1bGwoKSBhZnRlciBzdGFy
dCgpIGFuZCByZWFkKCknKTsKKworLy8gVmlldyBidWZmZXJzIGFyZSBkZXRhY2hlZCBhZnRlciBw
dWxsKCkgcmV0dXJucywgc28gcmVjb3JkIHRoZSBpbmZvcm1hdGlvbiBhdCB0aGUgdGltZSB0aGF0
IHB1bGwoKSB3YXMgY2FsbGVkLgorZnVuY3Rpb24gZXh0cmFjdFZpZXdJbmZvKHZpZXcpIHsKKyAg
cmV0dXJuIHsKKyAgICBjb25zdHJ1Y3Rvcjogdmlldy5jb25zdHJ1Y3RvciwKKyAgICBidWZmZXJC
eXRlTGVuZ3RoOiB2aWV3LmJ1ZmZlci5ieXRlTGVuZ3RoLAorICAgIGJ5dGVPZmZzZXQ6IHZpZXcu
Ynl0ZU9mZnNldCwKKyAgICBieXRlTGVuZ3RoOiB2aWV3LmJ5dGVMZW5ndGgKKyAgfTsKK30KKwor
cHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgbGV0IHB1bGxDb3VudCA9IDA7CisgIGxldCBjb250cm9s
bGVyOworICBjb25zdCBieW9iUmVxdWVzdHMgPSBbXTsKKworICBjb25zdCBzdHJlYW0gPSBuZXcg
UmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGNvbnRyb2xsZXIgPSBjOwor
ICAgIH0sCisgICAgcHVsbCgpIHsKKyAgICAgIGNvbnN0IGJ5b2JSZXF1ZXN0ID0gY29udHJvbGxl
ci5ieW9iUmVxdWVzdDsKKyAgICAgIGNvbnN0IHZpZXcgPSBieW9iUmVxdWVzdC52aWV3OworICAg
ICAgYnlvYlJlcXVlc3RzW3B1bGxDb3VudF0gPSB7CisgICAgICAgIG5vbk51bGw6IGJ5b2JSZXF1
ZXN0ICE9PSBudWxsLAorICAgICAgICB2aWV3Tm9uTnVsbDogdmlldyAhPT0gbnVsbCwKKyAgICAg
ICAgdmlld0luZm86IGV4dHJhY3RWaWV3SW5mbyh2aWV3KQorICAgICAgfTsKKyAgICAgIGlmIChw
dWxsQ291bnQgPT09IDApIHsKKyAgICAgICAgdmlld1swXSA9IDB4MDE7CisgICAgICAgIGJ5b2JS
ZXF1ZXN0LnJlc3BvbmQoMSk7CisgICAgICB9IGVsc2UgaWYgKHB1bGxDb3VudCA9PT0gMSkgewor
ICAgICAgICB2aWV3WzBdID0gMHgwMjsKKyAgICAgICAgdmlld1sxXSA9IDB4MDM7CisgICAgICAg
IGJ5b2JSZXF1ZXN0LnJlc3BvbmQoMik7CisgICAgICB9CisKKyAgICAgICsrcHVsbENvdW50Owor
ICAgIH0sCisgICAgdHlwZTogJ2J5dGVzJywKKyAgICBhdXRvQWxsb2NhdGVDaHVua1NpemU6IDE2
CisgIH0sIHsKKyAgICBoaWdoV2F0ZXJNYXJrOiAwCisgIH0pOworCisgIGNvbnN0IHJlYWRlciA9
IHN0cmVhbS5nZXRSZWFkZXIoKTsKKyAgY29uc3QgcDAgPSByZWFkZXIucmVhZCgpOworICBjb25z
dCBwMSA9IHJlYWRlci5yZWFkKCk7CisKKyAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDAsICdO
byBwdWxsKCkgYXMgc3RhcnQoKSBqdXN0IGZpbmlzaGVkIGFuZCBpcyBub3QgeWV0IHJlZmxlY3Rl
ZCB0byB0aGUgc3RhdGUgb2YgdGhlIHN0cmVhbScpOworCisgIHJldHVybiBQcm9taXNlLnJlc29s
dmUoKS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMSwgJ3B1bGwo
KSBtdXN0IGhhdmUgYmVlbiBpbnZva2VkIG9uY2UnKTsKKyAgICBjb25zdCBieW9iUmVxdWVzdCA9
IGJ5b2JSZXF1ZXN0c1swXTsKKyAgICBhc3NlcnRfdHJ1ZShieW9iUmVxdWVzdC5ub25OdWxsLCAn
Zmlyc3QgYnlvYlJlcXVlc3QgbXVzdCBub3QgYmUgbnVsbCcpOworICAgIGFzc2VydF90cnVlKGJ5
b2JSZXF1ZXN0LnZpZXdOb25OdWxsLCAnZmlyc3QgYnlvYlJlcXVlc3QudmlldyBtdXN0IG5vdCBi
ZSBudWxsJyk7CisgICAgY29uc3Qgdmlld0luZm8gPSBieW9iUmVxdWVzdC52aWV3SW5mbzsKKyAg
ICBhc3NlcnRfZXF1YWxzKHZpZXdJbmZvLmNvbnN0cnVjdG9yLCBVaW50OEFycmF5LCAnZmlyc3Qg
dmlldy5jb25zdHJ1Y3RvciBzaG91bGQgYmUgVWludDhBcnJheScpOworICAgIGFzc2VydF9lcXVh
bHModmlld0luZm8uYnVmZmVyQnl0ZUxlbmd0aCwgMTYsICdmaXJzdCB2aWV3LmJ1ZmZlci5ieXRl
TGVuZ3RoIHNob3VsZCBiZSAxNicpOworICAgIGFzc2VydF9lcXVhbHModmlld0luZm8uYnl0ZU9m
ZnNldCwgMCwgJ2ZpcnN0IHZpZXcuYnl0ZU9mZnNldCBzaG91bGQgYmUgMCcpOworICAgIGFzc2Vy
dF9lcXVhbHModmlld0luZm8uYnl0ZUxlbmd0aCwgMTYsICdmaXJzdCB2aWV3LmJ5dGVMZW5ndGgg
c2hvdWxkIGJlIDE2Jyk7CisKKyAgICByZXR1cm4gcDA7CisgIH0pLnRoZW4ocmVzdWx0ID0+IHsK
KyAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMiwgJ3B1bGwoKSBtdXN0IGhhdmUgYmVlbiBp
bnZva2VkIHR3aWNlJyk7CisgICAgY29uc3QgdmFsdWUgPSByZXN1bHQudmFsdWU7CisgICAgYXNz
ZXJ0X25vdF9lcXVhbHModmFsdWUsIHVuZGVmaW5lZCwgJ2ZpcnN0IHJlYWQgc2hvdWxkIGhhdmUg
YSB2YWx1ZScpOworICAgIGFzc2VydF9lcXVhbHModmFsdWUuY29uc3RydWN0b3IsIFVpbnQ4QXJy
YXksICdmaXJzdCB2YWx1ZSBzaG91bGQgYmUgYSBVaW50OEFycmF5Jyk7CisgICAgYXNzZXJ0X2Vx
dWFscyh2YWx1ZS5idWZmZXIuYnl0ZUxlbmd0aCwgMTYsICdmaXJzdCB2YWx1ZS5idWZmZXIuYnl0
ZUxlbmd0aCBzaG91bGQgYmUgMTYnKTsKKyAgICBhc3NlcnRfZXF1YWxzKHZhbHVlLmJ5dGVPZmZz
ZXQsIDAsICdmaXJzdCB2YWx1ZS5ieXRlT2Zmc2V0IHNob3VsZCBiZSAwJyk7CisgICAgYXNzZXJ0
X2VxdWFscyh2YWx1ZS5ieXRlTGVuZ3RoLCAxLCAnZmlyc3QgdmFsdWUuYnl0ZUxlbmd0aCBzaG91
bGQgYmUgMScpOworICAgIGFzc2VydF9lcXVhbHModmFsdWVbMF0sIDB4MDEsICdmaXJzdCB2YWx1
ZVswXSBzaG91bGQgYmUgMHgwMScpOworICAgIGNvbnN0IGJ5b2JSZXF1ZXN0ID0gYnlvYlJlcXVl
c3RzWzFdOworICAgIGFzc2VydF90cnVlKGJ5b2JSZXF1ZXN0Lm5vbk51bGwsICdzZWNvbmQgYnlv
YlJlcXVlc3QgbXVzdCBub3QgYmUgbnVsbCcpOworICAgIGFzc2VydF90cnVlKGJ5b2JSZXF1ZXN0
LnZpZXdOb25OdWxsLCAnc2Vjb25kIGJ5b2JSZXF1ZXN0LnZpZXcgbXVzdCBub3QgYmUgbnVsbCcp
OworICAgIGNvbnN0IHZpZXdJbmZvID0gYnlvYlJlcXVlc3Qudmlld0luZm87CisgICAgYXNzZXJ0
X2VxdWFscyh2aWV3SW5mby5jb25zdHJ1Y3RvciwgVWludDhBcnJheSwgJ3NlY29uZCB2aWV3LmNv
bnN0cnVjdG9yIHNob3VsZCBiZSBVaW50OEFycmF5Jyk7CisgICAgYXNzZXJ0X2VxdWFscyh2aWV3
SW5mby5idWZmZXJCeXRlTGVuZ3RoLCAxNiwgJ3NlY29uZCB2aWV3LmJ1ZmZlci5ieXRlTGVuZ3Ro
IHNob3VsZCBiZSAxNicpOworICAgIGFzc2VydF9lcXVhbHModmlld0luZm8uYnl0ZU9mZnNldCwg
MCwgJ3NlY29uZCB2aWV3LmJ5dGVPZmZzZXQgc2hvdWxkIGJlIDAnKTsKKyAgICBhc3NlcnRfZXF1
YWxzKHZpZXdJbmZvLmJ5dGVMZW5ndGgsIDE2LCAnc2Vjb25kIHZpZXcuYnl0ZUxlbmd0aCBzaG91
bGQgYmUgMTYnKTsKKworICAgIHJldHVybiBwMTsKKyAgfSkudGhlbihyZXN1bHQgPT4geworICAg
IGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAyLCAncHVsbCgpIHNob3VsZCBvbmx5IGJlIGludm9r
ZWQgdHdpY2UnKTsKKyAgICBjb25zdCB2YWx1ZSA9IHJlc3VsdC52YWx1ZTsKKyAgICBhc3NlcnRf
bm90X2VxdWFscyh2YWx1ZSwgdW5kZWZpbmVkLCAnc2Vjb25kIHJlYWQgc2hvdWxkIGhhdmUgYSB2
YWx1ZScpOworICAgIGFzc2VydF9lcXVhbHModmFsdWUuY29uc3RydWN0b3IsIFVpbnQ4QXJyYXks
ICdzZWNvbmQgdmFsdWUgc2hvdWxkIGJlIGEgVWludDhBcnJheScpOworICAgIGFzc2VydF9lcXVh
bHModmFsdWUuYnVmZmVyLmJ5dGVMZW5ndGgsIDE2LCAnc2Vjb25kIHZhbHVlLmJ1ZmZlci5ieXRl
TGVuZ3RoIHNob3VsZCBiZSAxNicpOworICAgIGFzc2VydF9lcXVhbHModmFsdWUuYnl0ZU9mZnNl
dCwgMCwgJ3NlY29uZCB2YWx1ZS5ieXRlT2Zmc2V0IHNob3VsZCBiZSAwJyk7CisgICAgYXNzZXJ0
X2VxdWFscyh2YWx1ZS5ieXRlTGVuZ3RoLCAyLCAnc2Vjb25kIHZhbHVlLmJ5dGVMZW5ndGggc2hv
dWxkIGJlIDInKTsKKyAgICBhc3NlcnRfZXF1YWxzKHZhbHVlWzBdLCAweDAyLCAnc2Vjb25kIHZh
bHVlWzBdIHNob3VsZCBiZSAweDAyJyk7CisgICAgYXNzZXJ0X2VxdWFscyh2YWx1ZVsxXSwgMHgw
MywgJ3NlY29uZCB2YWx1ZVsxXSBzaG91bGQgYmUgMHgwMycpOworICB9KTsKK30sICdSZWFkYWJs
ZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBhdXRvQWxsb2NhdGVDaHVua1NpemUnKTsKKworcHJv
bWlzZV90ZXN0KCgpID0+IHsKKyAgbGV0IHB1bGxDb3VudCA9IDA7CisgIGxldCBjb250cm9sbGVy
OworICBjb25zdCBieW9iUmVxdWVzdHMgPSBbXTsKKworICBjb25zdCBzdHJlYW0gPSBuZXcgUmVh
ZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGNvbnRyb2xsZXIgPSBjOworICAg
IH0sCisgICAgcHVsbCgpIHsKKyAgICAgIGNvbnN0IGJ5b2JSZXF1ZXN0ID0gY29udHJvbGxlci5i
eW9iUmVxdWVzdDsKKyAgICAgIGNvbnN0IHZpZXcgPSBieW9iUmVxdWVzdC52aWV3OworICAgICAg
YnlvYlJlcXVlc3RzW3B1bGxDb3VudF0gPSB7CisgICAgICAgIG5vbk51bGw6IGJ5b2JSZXF1ZXN0
ICE9PSBudWxsLAorICAgICAgICB2aWV3Tm9uTnVsbDogdmlldyAhPT0gbnVsbCwKKyAgICAgICAg
dmlld0luZm86IGV4dHJhY3RWaWV3SW5mbyh2aWV3KQorICAgICAgfTsKKyAgICAgIGlmIChwdWxs
Q291bnQgPT09IDApIHsKKyAgICAgICAgdmlld1swXSA9IDB4MDE7CisgICAgICAgIGJ5b2JSZXF1
ZXN0LnJlc3BvbmQoMSk7CisgICAgICB9IGVsc2UgaWYgKHB1bGxDb3VudCA9PT0gMSkgeworICAg
ICAgICB2aWV3WzBdID0gMHgwMjsKKyAgICAgICAgdmlld1sxXSA9IDB4MDM7CisgICAgICAgIGJ5
b2JSZXF1ZXN0LnJlc3BvbmQoMik7CisgICAgICB9CisKKyAgICAgICsrcHVsbENvdW50OworICAg
IH0sCisgICAgdHlwZTogJ2J5dGVzJywKKyAgICBhdXRvQWxsb2NhdGVDaHVua1NpemU6IDE2Cisg
IH0sIHsKKyAgICBoaWdoV2F0ZXJNYXJrOiAwCisgIH0pOworCisgIGNvbnN0IHJlYWRlciA9IHN0
cmVhbS5nZXRSZWFkZXIoKTsKKyAgcmV0dXJuIHJlYWRlci5yZWFkKCkudGhlbihyZXN1bHQgPT4g
eworICAgIGNvbnN0IHZhbHVlID0gcmVzdWx0LnZhbHVlOworICAgIGFzc2VydF9ub3RfZXF1YWxz
KHZhbHVlLCB1bmRlZmluZWQsICdmaXJzdCByZWFkIHNob3VsZCBoYXZlIGEgdmFsdWUnKTsKKyAg
ICBhc3NlcnRfZXF1YWxzKHZhbHVlLmNvbnN0cnVjdG9yLCBVaW50OEFycmF5LCAnZmlyc3QgdmFs
dWUgc2hvdWxkIGJlIGEgVWludDhBcnJheScpOworICAgIGFzc2VydF9lcXVhbHModmFsdWUuYnVm
ZmVyLmJ5dGVMZW5ndGgsIDE2LCAnZmlyc3QgdmFsdWUuYnVmZmVyLmJ5dGVMZW5ndGggc2hvdWxk
IGJlIDE2Jyk7CisgICAgYXNzZXJ0X2VxdWFscyh2YWx1ZS5ieXRlT2Zmc2V0LCAwLCAnZmlyc3Qg
dmFsdWUuYnl0ZU9mZnNldCBzaG91bGQgYmUgMCcpOworICAgIGFzc2VydF9lcXVhbHModmFsdWUu
Ynl0ZUxlbmd0aCwgMSwgJ2ZpcnN0IHZhbHVlLmJ5dGVMZW5ndGggc2hvdWxkIGJlIDEnKTsKKyAg
ICBhc3NlcnRfZXF1YWxzKHZhbHVlWzBdLCAweDAxLCAnZmlyc3QgdmFsdWVbMF0gc2hvdWxkIGJl
IDB4MDEnKTsKKyAgICBjb25zdCBieW9iUmVxdWVzdCA9IGJ5b2JSZXF1ZXN0c1swXTsKKyAgICBh
c3NlcnRfdHJ1ZShieW9iUmVxdWVzdC5ub25OdWxsLCAnZmlyc3QgYnlvYlJlcXVlc3QgbXVzdCBu
b3QgYmUgbnVsbCcpOworICAgIGFzc2VydF90cnVlKGJ5b2JSZXF1ZXN0LnZpZXdOb25OdWxsLCAn
Zmlyc3QgYnlvYlJlcXVlc3QudmlldyBtdXN0IG5vdCBiZSBudWxsJyk7CisgICAgY29uc3Qgdmll
d0luZm8gPSBieW9iUmVxdWVzdC52aWV3SW5mbzsKKyAgICBhc3NlcnRfZXF1YWxzKHZpZXdJbmZv
LmNvbnN0cnVjdG9yLCBVaW50OEFycmF5LCAnZmlyc3Qgdmlldy5jb25zdHJ1Y3RvciBzaG91bGQg
YmUgVWludDhBcnJheScpOworICAgIGFzc2VydF9lcXVhbHModmlld0luZm8uYnVmZmVyQnl0ZUxl
bmd0aCwgMTYsICdmaXJzdCB2aWV3LmJ1ZmZlci5ieXRlTGVuZ3RoIHNob3VsZCBiZSAxNicpOwor
ICAgIGFzc2VydF9lcXVhbHModmlld0luZm8uYnl0ZU9mZnNldCwgMCwgJ2ZpcnN0IHZpZXcuYnl0
ZU9mZnNldCBzaG91bGQgYmUgMCcpOworICAgIGFzc2VydF9lcXVhbHModmlld0luZm8uYnl0ZUxl
bmd0aCwgMTYsICdmaXJzdCB2aWV3LmJ5dGVMZW5ndGggc2hvdWxkIGJlIDE2Jyk7CisKKyAgICBy
ZWFkZXIucmVsZWFzZUxvY2soKTsKKyAgICBjb25zdCBieW9iUmVhZGVyID0gc3RyZWFtLmdldFJl
YWRlcih7IG1vZGU6ICdieW9iJyB9KTsKKyAgICByZXR1cm4gYnlvYlJlYWRlci5yZWFkKG5ldyBV
aW50OEFycmF5KDMyKSk7CisgIH0pLnRoZW4ocmVzdWx0ID0+IHsKKyAgICBjb25zdCB2YWx1ZSA9
IHJlc3VsdC52YWx1ZTsKKyAgICBhc3NlcnRfbm90X2VxdWFscyh2YWx1ZSwgdW5kZWZpbmVkLCAn
c2Vjb25kIHJlYWQgc2hvdWxkIGhhdmUgYSB2YWx1ZScpOworICAgIGFzc2VydF9lcXVhbHModmFs
dWUuY29uc3RydWN0b3IsIFVpbnQ4QXJyYXksICdzZWNvbmQgdmFsdWUgc2hvdWxkIGJlIGEgVWlu
dDhBcnJheScpOworICAgIGFzc2VydF9lcXVhbHModmFsdWUuYnVmZmVyLmJ5dGVMZW5ndGgsIDMy
LCAnc2Vjb25kIHZhbHVlLmJ1ZmZlci5ieXRlTGVuZ3RoIHNob3VsZCBiZSAzMicpOworICAgIGFz
c2VydF9lcXVhbHModmFsdWUuYnl0ZU9mZnNldCwgMCwgJ3NlY29uZCB2YWx1ZS5ieXRlT2Zmc2V0
IHNob3VsZCBiZSAwJyk7CisgICAgYXNzZXJ0X2VxdWFscyh2YWx1ZS5ieXRlTGVuZ3RoLCAyLCAn
c2Vjb25kIHZhbHVlLmJ5dGVMZW5ndGggc2hvdWxkIGJlIDInKTsKKyAgICBhc3NlcnRfZXF1YWxz
KHZhbHVlWzBdLCAweDAyLCAnc2Vjb25kIHZhbHVlWzBdIHNob3VsZCBiZSAweDAyJyk7CisgICAg
YXNzZXJ0X2VxdWFscyh2YWx1ZVsxXSwgMHgwMywgJ3NlY29uZCB2YWx1ZVsxXSBzaG91bGQgYmUg
MHgwMycpOworICAgIGNvbnN0IGJ5b2JSZXF1ZXN0ID0gYnlvYlJlcXVlc3RzWzFdOworICAgIGFz
c2VydF90cnVlKGJ5b2JSZXF1ZXN0Lm5vbk51bGwsICdzZWNvbmQgYnlvYlJlcXVlc3QgbXVzdCBu
b3QgYmUgbnVsbCcpOworICAgIGFzc2VydF90cnVlKGJ5b2JSZXF1ZXN0LnZpZXdOb25OdWxsLCAn
c2Vjb25kIGJ5b2JSZXF1ZXN0LnZpZXcgbXVzdCBub3QgYmUgbnVsbCcpOworICAgIGNvbnN0IHZp
ZXdJbmZvID0gYnlvYlJlcXVlc3Qudmlld0luZm87CisgICAgYXNzZXJ0X2VxdWFscyh2aWV3SW5m
by5jb25zdHJ1Y3RvciwgVWludDhBcnJheSwgJ3NlY29uZCB2aWV3LmNvbnN0cnVjdG9yIHNob3Vs
ZCBiZSBVaW50OEFycmF5Jyk7CisgICAgYXNzZXJ0X2VxdWFscyh2aWV3SW5mby5idWZmZXJCeXRl
TGVuZ3RoLCAzMiwgJ3NlY29uZCB2aWV3LmJ1ZmZlci5ieXRlTGVuZ3RoIHNob3VsZCBiZSAzMicp
OworICAgIGFzc2VydF9lcXVhbHModmlld0luZm8uYnl0ZU9mZnNldCwgMCwgJ3NlY29uZCB2aWV3
LmJ5dGVPZmZzZXQgc2hvdWxkIGJlIDAnKTsKKyAgICBhc3NlcnRfZXF1YWxzKHZpZXdJbmZvLmJ5
dGVMZW5ndGgsIDMyLCAnc2Vjb25kIHZpZXcuYnl0ZUxlbmd0aCBzaG91bGQgYmUgMzInKTsKKyAg
ICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMiwgJ3B1bGxDb3VudCBzaG91bGQgYmUgMicpOwor
ICB9KTsKK30sICdSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBNaXggb2YgYXV0byBh
bGxvY2F0ZSBhbmQgQllPQicpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworICBsZXQgcHVsbENv
dW50ID0gMDsKKworICBjb25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHB1
bGwoKSB7CisgICAgICArK3B1bGxDb3VudDsKKyAgICB9LAorICAgIHR5cGU6ICdieXRlcycKKyAg
fSwgeworICAgIGhpZ2hXYXRlck1hcms6IDAKKyAgfSk7CisKKyAgY29uc3QgcmVhZGVyID0gc3Ry
ZWFtLmdldFJlYWRlcigpOworICByZWFkZXIucmVhZChuZXcgVWludDhBcnJheSg4KSk7CisKKyAg
YXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDAsICdObyBwdWxsIGFzIHN0YXJ0KCkganVzdCBmaW5p
c2hlZCBhbmQgaXMgbm90IHlldCByZWZsZWN0ZWQgdG8gdGhlIHN0YXRlIG9mIHRoZSBzdHJlYW0n
KTsKKworICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0
X2VxdWFscyhwdWxsQ291bnQsIDEsICdwdWxsIG11c3QgYmUgaW52b2tlZCcpOworICB9KTsKK30s
ICdSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBBdXRvbWF0aWMgcHVsbCgpIGFmdGVy
IHN0YXJ0KCkgYW5kIHJlYWQodmlldyknKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgbGV0
IHB1bGxDb3VudCA9IDA7CisKKyAgbGV0IGNvbnRyb2xsZXI7CisgIGxldCBkZXNpcmVkU2l6ZUlu
U3RhcnQ7CisgIGxldCBkZXNpcmVkU2l6ZUluUHVsbDsKKworICBjb25zdCBzdHJlYW0gPSBuZXcg
UmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGMuZW5xdWV1ZShuZXcgVWlu
dDhBcnJheSgxNikpOworICAgICAgZGVzaXJlZFNpemVJblN0YXJ0ID0gYy5kZXNpcmVkU2l6ZTsK
KyAgICAgIGNvbnRyb2xsZXIgPSBjOworICAgIH0sCisgICAgcHVsbCgpIHsKKyAgICAgICsrcHVs
bENvdW50OworCisgICAgICBpZiAocHVsbENvdW50ID09PSAxKSB7CisgICAgICAgIGRlc2lyZWRT
aXplSW5QdWxsID0gY29udHJvbGxlci5kZXNpcmVkU2l6ZTsKKyAgICAgIH0KKyAgICB9LAorICAg
IHR5cGU6ICdieXRlcycKKyAgfSwgeworICAgIGhpZ2hXYXRlck1hcms6IDgKKyAgfSk7CisKKyAg
cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9lcXVhbHMo
cHVsbENvdW50LCAwLCAnTm8gcHVsbCBhcyB0aGUgcXVldWUgd2FzIGZpbGxlZCBieSBzdGFydCgp
Jyk7CisgICAgYXNzZXJ0X2VxdWFscyhkZXNpcmVkU2l6ZUluU3RhcnQsIC04LCAnZGVzaXJlZFNp
emUgYWZ0ZXIgZW5xdWV1ZSgpIGluIHN0YXJ0KCknKTsKKworICAgIGNvbnN0IHJlYWRlciA9IHN0
cmVhbS5nZXRSZWFkZXIoKTsKKworICAgIGNvbnN0IHByb21pc2UgPSByZWFkZXIucmVhZCgpOwor
ICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAxLCAnVGhlIGZpcnN0IHB1bGwoKSBzaG91bGQg
YmUgbWFkZSBvbiByZWFkKCknKTsKKyAgICBhc3NlcnRfZXF1YWxzKGRlc2lyZWRTaXplSW5QdWxs
LCA4LCAnZGVzaXJlZFNpemUgaW4gcHVsbCgpJyk7CisKKyAgICByZXR1cm4gcHJvbWlzZS50aGVu
KHJlc3VsdCA9PiB7CisgICAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdC5kb25lLCBmYWxzZSwgJ3Jl
c3VsdC5kb25lJyk7CisKKyAgICAgIGNvbnN0IHZpZXcgPSByZXN1bHQudmFsdWU7CisgICAgICBh
c3NlcnRfZXF1YWxzKHZpZXcuY29uc3RydWN0b3IsIFVpbnQ4QXJyYXksICd2aWV3LmNvbnN0cnVj
dG9yJyk7CisgICAgICBhc3NlcnRfZXF1YWxzKHZpZXcuYnVmZmVyLmJ5dGVMZW5ndGgsIDE2LCAn
dmlldy5idWZmZXInKTsKKyAgICAgIGFzc2VydF9lcXVhbHModmlldy5ieXRlT2Zmc2V0LCAwLCAn
dmlldy5ieXRlT2Zmc2V0Jyk7CisgICAgICBhc3NlcnRfZXF1YWxzKHZpZXcuYnl0ZUxlbmd0aCwg
MTYsICd2aWV3LmJ5dGVMZW5ndGgnKTsKKyAgICB9KTsKKyAgfSk7Cit9LCAnUmVhZGFibGVTdHJl
YW0gd2l0aCBieXRlIHNvdXJjZTogZW5xdWV1ZSgpLCBnZXRSZWFkZXIoKSwgdGhlbiByZWFkKCkn
KTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgbGV0IGNvbnRyb2xsZXI7CisKKyAgY29uc3Qg
c3RyZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjb250
cm9sbGVyID0gYzsKKyAgICB9LAorICAgIHR5cGU6ICdieXRlcycKKyAgfSk7CisKKyAgY29uc3Qg
cmVhZGVyID0gc3RyZWFtLmdldFJlYWRlcigpOworCisgIGNvbnN0IHByb21pc2UgPSByZWFkZXIu
cmVhZCgpLnRoZW4ocmVzdWx0ID0+IHsKKyAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdC5kb25lLCBm
YWxzZSk7CisKKyAgICBjb25zdCB2aWV3ID0gcmVzdWx0LnZhbHVlOworICAgIGFzc2VydF9lcXVh
bHModmlldy5jb25zdHJ1Y3RvciwgVWludDhBcnJheSk7CisgICAgYXNzZXJ0X2VxdWFscyh2aWV3
LmJ1ZmZlci5ieXRlTGVuZ3RoLCAxKTsKKyAgICBhc3NlcnRfZXF1YWxzKHZpZXcuYnl0ZU9mZnNl
dCwgMCk7CisgICAgYXNzZXJ0X2VxdWFscyh2aWV3LmJ5dGVMZW5ndGgsIDEpOworICB9KTsKKwor
ICBjb250cm9sbGVyLmVucXVldWUobmV3IFVpbnQ4QXJyYXkoMSkpOworCisgIHJldHVybiBwcm9t
aXNlOworfSwgJ1JlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IFB1c2ggc291cmNlIHRo
YXQgZG9lc25cJ3QgdW5kZXJzdGFuZCBwdWxsIHNpZ25hbCcpOworCit0ZXN0KCgpID0+IHsKKyAg
YXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IG5ldyBSZWFkYWJsZVN0cmVhbSh7Cisg
ICAgcHVsbDogJ2ZvbycsCisgICAgdHlwZTogJ2J5dGVzJworICB9KSwgJ2NvbnN0cnVjdG9yIHNo
b3VsZCB0aHJvdycpOworfSwgJ1JlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IHB1bGwo
KSBmdW5jdGlvbiBpcyBub3QgY2FsbGFibGUnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAg
Y29uc3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAg
ICBjLmVucXVldWUobmV3IFVpbnQxNkFycmF5KDE2KSk7CisgICAgfSwKKyAgICB0eXBlOiAnYnl0
ZXMnCisgIH0pOworCisgIGNvbnN0IHJlYWRlciA9IHN0cmVhbS5nZXRSZWFkZXIoKTsKKworICBy
ZXR1cm4gcmVhZGVyLnJlYWQoKS50aGVuKHJlc3VsdCA9PiB7CisgICAgYXNzZXJ0X2VxdWFscyhy
ZXN1bHQuZG9uZSwgZmFsc2UpOworCisgICAgY29uc3QgdmlldyA9IHJlc3VsdC52YWx1ZTsKKyAg
ICBhc3NlcnRfZXF1YWxzKHZpZXcuY29uc3RydWN0b3IsIFVpbnQ4QXJyYXkpOworICAgIGFzc2Vy
dF9lcXVhbHModmlldy5idWZmZXIuYnl0ZUxlbmd0aCwgMzIpOworICAgIGFzc2VydF9lcXVhbHMo
dmlldy5ieXRlT2Zmc2V0LCAwKTsKKyAgICBhc3NlcnRfZXF1YWxzKHZpZXcuYnl0ZUxlbmd0aCwg
MzIpOworICB9KTsKK30sICdSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBlbnF1ZXVl
KCkgd2l0aCBVaW50MTZBcnJheSwgZ2V0UmVhZGVyKCksIHRoZW4gcmVhZCgpJyk7CisKK3Byb21p
c2VfdGVzdCh0ID0+IHsKKyAgY29uc3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAg
ICBzdGFydChjKSB7CisgICAgICBjb25zdCB2aWV3ID0gbmV3IFVpbnQ4QXJyYXkoMTYpOworICAg
ICAgdmlld1swXSA9IDB4MDE7CisgICAgICB2aWV3WzhdID0gMHgwMjsKKyAgICAgIGMuZW5xdWV1
ZSh2aWV3KTsKKyAgICB9LAorICAgIHB1bGw6IHQudW5yZWFjaGVkX2Z1bmMoJ3B1bGwoKSBzaG91
bGQgbm90IGJlIGNhbGxlZCcpLAorICAgIHR5cGU6ICdieXRlcycKKyAgfSk7CisKKyAgY29uc3Qg
YnlvYlJlYWRlciA9IHN0cmVhbS5nZXRSZWFkZXIoeyBtb2RlOiAnYnlvYicgfSk7CisKKyAgcmV0
dXJuIGJ5b2JSZWFkZXIucmVhZChuZXcgVWludDhBcnJheSg4KSkudGhlbihyZXN1bHQgPT4gewor
ICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LmRvbmUsIGZhbHNlLCAnZG9uZScpOworCisgICAgY29u
c3QgdmlldyA9IHJlc3VsdC52YWx1ZTsKKyAgICBhc3NlcnRfZXF1YWxzKHZpZXcuY29uc3RydWN0
b3IsIFVpbnQ4QXJyYXksICd2YWx1ZS5jb25zdHJ1Y3RvcicpOworICAgIGFzc2VydF9lcXVhbHMo
dmlldy5idWZmZXIuYnl0ZUxlbmd0aCwgOCwgJ3ZhbHVlLmJ1ZmZlci5ieXRlTGVuZ3RoJyk7Cisg
ICAgYXNzZXJ0X2VxdWFscyh2aWV3LmJ5dGVPZmZzZXQsIDAsICd2YWx1ZS5ieXRlT2Zmc2V0Jyk7
CisgICAgYXNzZXJ0X2VxdWFscyh2aWV3LmJ5dGVMZW5ndGgsIDgsICd2YWx1ZS5ieXRlTGVuZ3Ro
Jyk7CisgICAgYXNzZXJ0X2VxdWFscyh2aWV3WzBdLCAweDAxKTsKKworICAgIGJ5b2JSZWFkZXIu
cmVsZWFzZUxvY2soKTsKKworICAgIGNvbnN0IHJlYWRlciA9IHN0cmVhbS5nZXRSZWFkZXIoKTsK
KworICAgIHJldHVybiByZWFkZXIucmVhZCgpOworICB9KS50aGVuKHJlc3VsdCA9PiB7CisgICAg
YXNzZXJ0X2VxdWFscyhyZXN1bHQuZG9uZSwgZmFsc2UsICdkb25lJyk7CisKKyAgICBjb25zdCB2
aWV3ID0gcmVzdWx0LnZhbHVlOworICAgIGFzc2VydF9lcXVhbHModmlldy5jb25zdHJ1Y3Rvciwg
VWludDhBcnJheSwgJ3ZhbHVlLmNvbnN0cnVjdG9yJyk7CisgICAgYXNzZXJ0X2VxdWFscyh2aWV3
LmJ1ZmZlci5ieXRlTGVuZ3RoLCAxNiwgJ3ZhbHVlLmJ1ZmZlci5ieXRlTGVuZ3RoJyk7CisgICAg
YXNzZXJ0X2VxdWFscyh2aWV3LmJ5dGVPZmZzZXQsIDgsICd2YWx1ZS5ieXRlT2Zmc2V0Jyk7Cisg
ICAgYXNzZXJ0X2VxdWFscyh2aWV3LmJ5dGVMZW5ndGgsIDgsICd2YWx1ZS5ieXRlTGVuZ3RoJyk7
CisgICAgYXNzZXJ0X2VxdWFscyh2aWV3WzBdLCAweDAyKTsKKyAgfSk7Cit9LCAnUmVhZGFibGVT
dHJlYW0gd2l0aCBieXRlIHNvdXJjZTogZW5xdWV1ZSgpLCByZWFkKHZpZXcpIHBhcnRpYWxseSwg
dGhlbiByZWFkKCknKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBsZXQgY29udHJvbGxlcjsK
KworICBjb25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsK
KyAgICAgIGNvbnRyb2xsZXIgPSBjOworICAgIH0sCisgICAgcHVsbDogdC51bnJlYWNoZWRfZnVu
YygncHVsbCgpIHNob3VsZCBub3QgYmUgY2FsbGVkJyksCisgICAgdHlwZTogJ2J5dGVzJworICB9
KTsKKworICBjb25zdCByZWFkZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKCk7CisKKyAgY29udHJvbGxl
ci5lbnF1ZXVlKG5ldyBVaW50OEFycmF5KDE2KSk7CisgIGNvbnRyb2xsZXIuY2xvc2UoKTsKKwor
ICByZXR1cm4gcmVhZGVyLnJlYWQoKS50aGVuKHJlc3VsdCA9PiB7CisgICAgYXNzZXJ0X2VxdWFs
cyhyZXN1bHQuZG9uZSwgZmFsc2UsICdkb25lJyk7CisKKyAgICBjb25zdCB2aWV3ID0gcmVzdWx0
LnZhbHVlOworICAgIGFzc2VydF9lcXVhbHModmlldy5ieXRlT2Zmc2V0LCAwLCAnYnl0ZU9mZnNl
dCcpOworICAgIGFzc2VydF9lcXVhbHModmlldy5ieXRlTGVuZ3RoLCAxNiwgJ2J5dGVMZW5ndGgn
KTsKKworICAgIHJldHVybiByZWFkZXIucmVhZCgpOworICB9KS50aGVuKHJlc3VsdCA9PiB7Cisg
ICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQuZG9uZSwgdHJ1ZSwgJ2RvbmUnKTsKKyAgICBhc3NlcnRf
ZXF1YWxzKHJlc3VsdC52YWx1ZSwgdW5kZWZpbmVkLCAndmFsdWUnKTsKKyAgfSk7Cit9LCAnUmVh
ZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogZ2V0UmVhZGVyKCksIGVucXVldWUoKSwgY2xv
c2UoKSwgdGhlbiByZWFkKCknKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBjb25zdCBzdHJl
YW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGMuZW5xdWV1
ZShuZXcgVWludDhBcnJheSgxNikpOworICAgICAgYy5jbG9zZSgpOworICAgIH0sCisgICAgcHVs
bDogdC51bnJlYWNoZWRfZnVuYygncHVsbCgpIHNob3VsZCBub3QgYmUgY2FsbGVkJyksCisgICAg
dHlwZTogJ2J5dGVzJworICB9KTsKKworICBjb25zdCByZWFkZXIgPSBzdHJlYW0uZ2V0UmVhZGVy
KCk7CisKKyAgcmV0dXJuIHJlYWRlci5yZWFkKCkudGhlbihyZXN1bHQgPT4geworICAgIGFzc2Vy
dF9lcXVhbHMocmVzdWx0LmRvbmUsIGZhbHNlLCAnZG9uZScpOworCisgICAgY29uc3QgdmlldyA9
IHJlc3VsdC52YWx1ZTsKKyAgICBhc3NlcnRfZXF1YWxzKHZpZXcuYnl0ZU9mZnNldCwgMCwgJ2J5
dGVPZmZzZXQnKTsKKyAgICBhc3NlcnRfZXF1YWxzKHZpZXcuYnl0ZUxlbmd0aCwgMTYsICdieXRl
TGVuZ3RoJyk7CisKKyAgICByZXR1cm4gcmVhZGVyLnJlYWQoKTsKKyAgfSkudGhlbihyZXN1bHQg
PT4geworICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LmRvbmUsIHRydWUsICdkb25lJyk7CisgICAg
YXNzZXJ0X2VxdWFscyhyZXN1bHQudmFsdWUsIHVuZGVmaW5lZCwgJ3ZhbHVlJyk7CisgIH0pOwor
fSwgJ1JlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IGVucXVldWUoKSwgY2xvc2UoKSwg
Z2V0UmVhZGVyKCksIHRoZW4gcmVhZCgpJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisgIGxl
dCBjb250cm9sbGVyOworICBsZXQgYnlvYlJlcXVlc3Q7CisKKyAgY29uc3Qgc3RyZWFtID0gbmV3
IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjb250cm9sbGVyID0gYzsK
KyAgICB9LAorICAgIHB1bGwoKSB7CisgICAgICBjb250cm9sbGVyLmVucXVldWUobmV3IFVpbnQ4
QXJyYXkoMTYpKTsKKyAgICAgIGJ5b2JSZXF1ZXN0ID0gY29udHJvbGxlci5ieW9iUmVxdWVzdDsK
KyAgICB9LAorICAgIHR5cGU6ICdieXRlcycKKyAgfSk7CisKKyAgY29uc3QgcmVhZGVyID0gc3Ry
ZWFtLmdldFJlYWRlcigpOworCisgIHJldHVybiByZWFkZXIucmVhZCgpLnRoZW4ocmVzdWx0ID0+
IHsKKyAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdC5kb25lLCBmYWxzZSwgJ2RvbmUnKTsKKyAgICBh
c3NlcnRfZXF1YWxzKHJlc3VsdC52YWx1ZS5ieXRlTGVuZ3RoLCAxNiwgJ2J5dGVMZW5ndGgnKTsK
KyAgICBhc3NlcnRfZXF1YWxzKGJ5b2JSZXF1ZXN0LCBudWxsLCAnYnlvYlJlcXVlc3QgbXVzdCBi
ZSBudWxsJyk7CisgIH0pOworfSwgJ1JlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IFJl
c3BvbmQgdG8gcHVsbCgpIGJ5IGVucXVldWUoKScpOworCitwcm9taXNlX3Rlc3QoKCkgPT4gewor
ICBsZXQgcHVsbENvdW50ID0gMDsKKworICBsZXQgY29udHJvbGxlcjsKKyAgbGV0IGJ5b2JSZXF1
ZXN0OworICBjb25zdCBkZXNpcmVkU2l6ZXMgPSBbXTsKKworICBjb25zdCBzdHJlYW0gPSBuZXcg
UmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGNvbnRyb2xsZXIgPSBjOwor
ICAgIH0sCisgICAgcHVsbCgpIHsKKyAgICAgIGJ5b2JSZXF1ZXN0ID0gY29udHJvbGxlci5ieW9i
UmVxdWVzdDsKKyAgICAgIGRlc2lyZWRTaXplcy5wdXNoKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUp
OworICAgICAgY29udHJvbGxlci5lbnF1ZXVlKG5ldyBVaW50OEFycmF5KDEpKTsKKyAgICAgIGRl
c2lyZWRTaXplcy5wdXNoKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUpOworICAgICAgY29udHJvbGxl
ci5lbnF1ZXVlKG5ldyBVaW50OEFycmF5KDEpKTsKKyAgICAgIGRlc2lyZWRTaXplcy5wdXNoKGNv
bnRyb2xsZXIuZGVzaXJlZFNpemUpOworCisgICAgICArK3B1bGxDb3VudDsKKyAgICB9LAorICAg
IHR5cGU6ICdieXRlcycKKyAgfSwgeworICAgIGhpZ2hXYXRlck1hcms6IDAKKyAgfSk7CisKKyAg
Y29uc3QgcmVhZGVyID0gc3RyZWFtLmdldFJlYWRlcigpOworCisgIGNvbnN0IHAwID0gcmVhZGVy
LnJlYWQoKTsKKyAgY29uc3QgcDEgPSByZWFkZXIucmVhZCgpOworICBjb25zdCBwMiA9IHJlYWRl
ci5yZWFkKCk7CisKKyAgLy8gUmVzcG9uZCB0byB0aGUgZmlyc3QgcHVsbCBjYWxsLgorICBjb250
cm9sbGVyLmVucXVldWUobmV3IFVpbnQ4QXJyYXkoMSkpOworCisgIGFzc2VydF9lcXVhbHMocHVs
bENvdW50LCAwLCAncHVsbENvdW50IGFmdGVyIHRoZSBlbnF1ZXVlKCkgb3V0c2lkZSBwdWxsJyk7
CisKKyAgcmV0dXJuIFByb21pc2UuYWxsKFtwMCwgcDEsIHAyXSkudGhlbihyZXN1bHQgPT4gewor
ICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAxLCAncHVsbENvdW50IGFmdGVyIGNvbXBsZXRp
b24gb2YgYWxsIHJlYWQoKXMnKTsKKworICAgIGFzc2VydF9lcXVhbHMocmVzdWx0WzBdLmRvbmUs
IGZhbHNlLCAncmVzdWx0WzBdLmRvbmUnKTsKKyAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdFswXS52
YWx1ZS5ieXRlTGVuZ3RoLCAxLCAncmVzdWx0WzBdLnZhbHVlLmJ5dGVMZW5ndGgnKTsKKyAgICBh
c3NlcnRfZXF1YWxzKHJlc3VsdFsxXS5kb25lLCBmYWxzZSwgJ3Jlc3VsdFsxXS5kb25lJyk7Cisg
ICAgYXNzZXJ0X2VxdWFscyhyZXN1bHRbMV0udmFsdWUuYnl0ZUxlbmd0aCwgMSwgJ3Jlc3VsdFsx
XS52YWx1ZS5ieXRlTGVuZ3RoJyk7CisgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHRbMl0uZG9uZSwg
ZmFsc2UsICdyZXN1bHRbMl0uZG9uZScpOworICAgIGFzc2VydF9lcXVhbHMocmVzdWx0WzJdLnZh
bHVlLmJ5dGVMZW5ndGgsIDEsICdyZXN1bHRbMl0udmFsdWUuYnl0ZUxlbmd0aCcpOworICAgIGFz
c2VydF9lcXVhbHMoYnlvYlJlcXVlc3QsIG51bGwsICdieW9iUmVxdWVzdCBzaG91bGQgYmUgbnVs
bCcpOworICAgIGFzc2VydF9lcXVhbHMoZGVzaXJlZFNpemVzWzBdLCAwLCAnZGVzaXJlZFNpemUg
b24gcHVsbCBzaG91bGQgYmUgMCcpOworICAgIGFzc2VydF9lcXVhbHMoZGVzaXJlZFNpemVzWzFd
LCAwLCAnZGVzaXJlZFNpemUgYWZ0ZXIgMXN0IGVucXVldWUoKSBzaG91bGQgYmUgMCcpOworICAg
IGFzc2VydF9lcXVhbHMoZGVzaXJlZFNpemVzWzJdLCAwLCAnZGVzaXJlZFNpemUgYWZ0ZXIgMm5k
IGVucXVldWUoKSBzaG91bGQgYmUgMCcpOworICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAx
LCAncHVsbCgpIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBvbmNlJyk7CisgIH0pOworfSwgJ1JlYWRh
YmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IFJlc3BvbmQgdG8gcHVsbCgpIGJ5IGVucXVldWUo
KSBhc3luY2hyb25vdXNseScpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworICBsZXQgcHVsbENv
dW50ID0gMDsKKworICBsZXQgYnlvYlJlcXVlc3Q7CisgIGNvbnN0IGRlc2lyZWRTaXplcyA9IFtd
OworCisgIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgcHVsbChjKSB7
CisgICAgICBieW9iUmVxdWVzdCA9IGMuYnlvYlJlcXVlc3Q7CisgICAgICBkZXNpcmVkU2l6ZXMu
cHVzaChjLmRlc2lyZWRTaXplKTsKKworICAgICAgaWYgKHB1bGxDb3VudCA8IDMpIHsKKyAgICAg
ICAgYy5lbnF1ZXVlKG5ldyBVaW50OEFycmF5KDEpKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IGMuY2xvc2UoKTsKKyAgICAgIH0KKworICAgICAgKytwdWxsQ291bnQ7CisgICAgfSwKKyAgICB0
eXBlOiAnYnl0ZXMnCisgIH0sIHsKKyAgICBoaWdoV2F0ZXJNYXJrOiAyNTYKKyAgfSk7CisKKyAg
Y29uc3QgcmVhZGVyID0gc3RyZWFtLmdldFJlYWRlcigpOworCisgIGNvbnN0IHAwID0gcmVhZGVy
LnJlYWQoKTsKKyAgY29uc3QgcDEgPSByZWFkZXIucmVhZCgpOworICBjb25zdCBwMiA9IHJlYWRl
ci5yZWFkKCk7CisKKyAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDAsICdObyBwdWxsIGFzIHN0
YXJ0KCkganVzdCBmaW5pc2hlZCBhbmQgaXMgbm90IHlldCByZWZsZWN0ZWQgdG8gdGhlIHN0YXRl
IG9mIHRoZSBzdHJlYW0nKTsKKworICByZXR1cm4gUHJvbWlzZS5hbGwoW3AwLCBwMSwgcDJdKS50
aGVuKHJlc3VsdCA9PiB7CisgICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDQsICdwdWxsQ291
bnQgYWZ0ZXIgY29tcGxldGlvbiBvZiBhbGwgcmVhZCgpcycpOworCisgICAgYXNzZXJ0X2VxdWFs
cyhyZXN1bHRbMF0uZG9uZSwgZmFsc2UsICdyZXN1bHRbMF0uZG9uZScpOworICAgIGFzc2VydF9l
cXVhbHMocmVzdWx0WzBdLnZhbHVlLmJ5dGVMZW5ndGgsIDEsICdyZXN1bHRbMF0udmFsdWUuYnl0
ZUxlbmd0aCcpOworICAgIGFzc2VydF9lcXVhbHMocmVzdWx0WzFdLmRvbmUsIGZhbHNlLCAncmVz
dWx0WzFdLmRvbmUnKTsKKyAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdFsxXS52YWx1ZS5ieXRlTGVu
Z3RoLCAxLCAncmVzdWx0WzFdLnZhbHVlLmJ5dGVMZW5ndGgnKTsKKyAgICBhc3NlcnRfZXF1YWxz
KHJlc3VsdFsyXS5kb25lLCBmYWxzZSwgJ3Jlc3VsdFsyXS5kb25lJyk7CisgICAgYXNzZXJ0X2Vx
dWFscyhyZXN1bHRbMl0udmFsdWUuYnl0ZUxlbmd0aCwgMSwgJ3Jlc3VsdFsyXS52YWx1ZS5ieXRl
TGVuZ3RoJyk7CisgICAgYXNzZXJ0X2VxdWFscyhieW9iUmVxdWVzdCwgbnVsbCwgJ2J5b2JSZXF1
ZXN0IHNob3VsZCBiZSBudWxsJyk7CisgICAgYXNzZXJ0X2VxdWFscyhkZXNpcmVkU2l6ZXNbMF0s
IDI1NiwgJ2Rlc2lyZWRTaXplIG9uIHB1bGwgc2hvdWxkIGJlIDI1NicpOworICAgIGFzc2VydF9l
cXVhbHMoZGVzaXJlZFNpemVzWzFdLCAyNTYsICdkZXNpcmVkU2l6ZSBhZnRlciAxc3QgZW5xdWV1
ZSgpIHNob3VsZCBiZSAyNTYnKTsKKyAgICBhc3NlcnRfZXF1YWxzKGRlc2lyZWRTaXplc1syXSwg
MjU2LCAnZGVzaXJlZFNpemUgYWZ0ZXIgMm5kIGVucXVldWUoKSBzaG91bGQgYmUgMjU2Jyk7Cisg
ICAgYXNzZXJ0X2VxdWFscyhkZXNpcmVkU2l6ZXNbM10sIDI1NiwgJ2Rlc2lyZWRTaXplIGFmdGVy
IDNyZCBlbnF1ZXVlKCkgc2hvdWxkIGJlIDI1NicpOworICB9KTsKK30sICdSZWFkYWJsZVN0cmVh
bSB3aXRoIGJ5dGUgc291cmNlOiBSZXNwb25kIHRvIG11bHRpcGxlIHB1bGwoKSBieSBzZXBhcmF0
ZSBlbnF1ZXVlKCknKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgbGV0IGNvbnRyb2xsZXI7
CisKKyAgbGV0IHB1bGxDb3VudCA9IDA7CisgIGNvbnN0IGJ5b2JSZXF1ZXN0RGVmaW5lZCA9IFtd
OworCisgIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykg
eworICAgICAgY29udHJvbGxlciA9IGM7CisgICAgfSwKKyAgICBwdWxsKCkgeworICAgICAgYnlv
YlJlcXVlc3REZWZpbmVkLnB1c2goY29udHJvbGxlci5ieW9iUmVxdWVzdCAhPT0gbnVsbCk7CisK
KyAgICAgIGNvbnN0IHZpZXcgPSBjb250cm9sbGVyLmJ5b2JSZXF1ZXN0LnZpZXc7CisgICAgICB2
aWV3WzBdID0gMHgwMTsKKyAgICAgIGNvbnRyb2xsZXIuYnlvYlJlcXVlc3QucmVzcG9uZCgxKTsK
KworICAgICAgYnlvYlJlcXVlc3REZWZpbmVkLnB1c2goY29udHJvbGxlci5ieW9iUmVxdWVzdCAh
PT0gbnVsbCk7CisKKyAgICAgICsrcHVsbENvdW50OworICAgIH0sCisgICAgdHlwZTogJ2J5dGVz
JworICB9KTsKKworICBjb25zdCByZWFkZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKHsgbW9kZTogJ2J5
b2InIH0pOworCisgIHJldHVybiByZWFkZXIucmVhZChuZXcgVWludDhBcnJheSgxKSkudGhlbihy
ZXN1bHQgPT4geworICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LmRvbmUsIGZhbHNlLCAncmVzdWx0
LmRvbmUnKTsKKyAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdC52YWx1ZS5ieXRlTGVuZ3RoLCAxLCAn
cmVzdWx0LnZhbHVlLmJ5dGVMZW5ndGgnKTsKKyAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdC52YWx1
ZVswXSwgMHgwMSwgJ3Jlc3VsdC52YWx1ZVswXScpOworICAgIGFzc2VydF9lcXVhbHMocHVsbENv
dW50LCAxLCAncHVsbCgpIHNob3VsZCBiZSBjYWxsZWQgb25seSBvbmNlJyk7CisgICAgYXNzZXJ0
X3RydWUoYnlvYlJlcXVlc3REZWZpbmVkWzBdLCAnYnlvYlJlcXVlc3QgbXVzdCBub3QgYmUgbnVs
bCBiZWZvcmUgcmVzcG9uZCgpJyk7CisgICAgYXNzZXJ0X2ZhbHNlKGJ5b2JSZXF1ZXN0RGVmaW5l
ZFsxXSwgJ2J5b2JSZXF1ZXN0IG11c3QgYmUgbnVsbCBhZnRlciByZXNwb25kKCknKTsKKyAgfSk7
Cit9LCAnUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogcmVhZCh2aWV3KSwgdGhlbiBy
ZXNwb25kKCknKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgbGV0IGNvbnRyb2xsZXI7CisK
KyAgbGV0IHB1bGxDb3VudCA9IDA7CisgIGNvbnN0IGJ5b2JSZXF1ZXN0RGVmaW5lZCA9IFtdOwor
CisgIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgewor
ICAgICAgY29udHJvbGxlciA9IGM7CisgICAgfSwKKyAgICBwdWxsKCkgeworICAgICAgYnlvYlJl
cXVlc3REZWZpbmVkLnB1c2goY29udHJvbGxlci5ieW9iUmVxdWVzdCAhPT0gbnVsbCk7CisKKyAg
ICAgIC8vIEVtdWxhdGUgQXJyYXlCdWZmZXIgdHJhbnNmZXIgYnkganVzdCBjcmVhdGluZyBhIG5l
dyBBcnJheUJ1ZmZlciBhbmQgcGFzcyBpdC4gQnkgY2hlY2tpbmcgdGhlIHJlc3VsdCBvZgorICAg
ICAgLy8gcmVhZCh2aWV3KSwgd2UgdGVzdCB0aGF0IHRoZSByZXNwb25kKCkncyBidWZmZXIgYXJn
dW1lbnQgaXMgd29ya2luZyBjb3JyZWN0bHkuCisgICAgICAvLworICAgICAgLy8gQSByZWFsIGlt
cGxlbWVudGF0aW9uIG9mIHRoZSB1bmRlcmx5aW5nIGJ5dGUgc291cmNlIHdvdWxkIHRyYW5zZmVy
IGNvbnRyb2xsZXIuYnlvYlJlcXVlc3Qudmlldy5idWZmZXIgaW50bworICAgICAgLy8gYSBuZXcg
QXJyYXlCdWZmZXIsIHRoZW4gY29uc3RydWN0IGEgdmlldyBhcm91bmQgaXQgYW5kIHdyaXRlIHRv
IGl0LgorICAgICAgY29uc3QgdHJhbnNmZXJyZWRWaWV3ID0gbmV3IFVpbnQ4QXJyYXkoMSk7Cisg
ICAgICB0cmFuc2ZlcnJlZFZpZXdbMF0gPSAweDAxOworICAgICAgY29udHJvbGxlci5ieW9iUmVx
dWVzdC5yZXNwb25kV2l0aE5ld1ZpZXcodHJhbnNmZXJyZWRWaWV3KTsKKworICAgICAgYnlvYlJl
cXVlc3REZWZpbmVkLnB1c2goY29udHJvbGxlci5ieW9iUmVxdWVzdCAhPT0gbnVsbCk7CisKKyAg
ICAgICsrcHVsbENvdW50OworICAgIH0sCisgICAgdHlwZTogJ2J5dGVzJworICB9KTsKKworICBj
b25zdCByZWFkZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKHsgbW9kZTogJ2J5b2InIH0pOworCisgIHJl
dHVybiByZWFkZXIucmVhZChuZXcgVWludDhBcnJheSgxKSkudGhlbihyZXN1bHQgPT4geworICAg
IGFzc2VydF9lcXVhbHMocmVzdWx0LmRvbmUsIGZhbHNlLCAncmVzdWx0LmRvbmUnKTsKKyAgICBh
c3NlcnRfZXF1YWxzKHJlc3VsdC52YWx1ZS5ieXRlTGVuZ3RoLCAxLCAncmVzdWx0LnZhbHVlLmJ5
dGVMZW5ndGgnKTsKKyAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdC52YWx1ZVswXSwgMHgwMSwgJ3Jl
c3VsdC52YWx1ZVswXScpOworICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAxLCAncHVsbCgp
IHNob3VsZCBiZSBjYWxsZWQgb25seSBvbmNlJyk7CisgICAgYXNzZXJ0X3RydWUoYnlvYlJlcXVl
c3REZWZpbmVkWzBdLCAnYnlvYlJlcXVlc3QgbXVzdCBub3QgYmUgbnVsbCBiZWZvcmUgcmVzcG9u
ZCgpJyk7CisgICAgYXNzZXJ0X2ZhbHNlKGJ5b2JSZXF1ZXN0RGVmaW5lZFsxXSwgJ2J5b2JSZXF1
ZXN0IG11c3QgYmUgbnVsbCBhZnRlciByZXNwb25kKCknKTsKKyAgfSk7Cit9LCAnUmVhZGFibGVT
dHJlYW0gd2l0aCBieXRlIHNvdXJjZTogcmVhZCh2aWV3KSwgdGhlbiByZXNwb25kKCkgd2l0aCBh
IHRyYW5zZmVycmVkIEFycmF5QnVmZmVyJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisgIGxl
dCBjb250cm9sbGVyOworICBsZXQgYnlvYlJlcXVlc3RXYXNEZWZpbmVkOworICBsZXQgaW5jb3Jy
ZWN0UmVzcG9uZEV4Y2VwdGlvbjsKKworICBjb25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJl
YW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGNvbnRyb2xsZXIgPSBjOworICAgIH0sCisgICAg
cHVsbCgpIHsKKyAgICAgIGJ5b2JSZXF1ZXN0V2FzRGVmaW5lZCA9IGNvbnRyb2xsZXIuYnlvYlJl
cXVlc3QgIT09IG51bGw7CisKKyAgICAgIHRyeSB7CisgICAgICAgIGNvbnRyb2xsZXIuYnlvYlJl
cXVlc3QucmVzcG9uZCgyKTsKKyAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgaW5jb3JyZWN0
UmVzcG9uZEV4Y2VwdGlvbiA9IGU7CisgICAgICB9CisKKyAgICAgIGNvbnRyb2xsZXIuYnlvYlJl
cXVlc3QucmVzcG9uZCgxKTsKKyAgICB9LAorICAgIHR5cGU6ICdieXRlcycKKyAgfSk7CisKKyAg
Y29uc3QgcmVhZGVyID0gc3RyZWFtLmdldFJlYWRlcih7IG1vZGU6ICdieW9iJyB9KTsKKworICBy
ZXR1cm4gcmVhZGVyLnJlYWQobmV3IFVpbnQ4QXJyYXkoMSkpLnRoZW4oKCkgPT4geworICAgIGFz
c2VydF90cnVlKGJ5b2JSZXF1ZXN0V2FzRGVmaW5lZCwgJ2J5b2JSZXF1ZXN0IHNob3VsZCBiZSBu
b24tbnVsbCcpOworICAgIGFzc2VydF9ub3RfZXF1YWxzKGluY29ycmVjdFJlc3BvbmRFeGNlcHRp
b24sIHVuZGVmaW5lZCwgJ3Jlc3BvbmQoKSBtdXN0IHRocm93Jyk7CisgICAgYXNzZXJ0X2VxdWFs
cyhpbmNvcnJlY3RSZXNwb25kRXhjZXB0aW9uLm5hbWUsICdSYW5nZUVycm9yJywgJ3Jlc3BvbmQo
KSBtdXN0IHRocm93IGEgUmFuZ2VFcnJvcicpOworICB9KTsKK30sICdSZWFkYWJsZVN0cmVhbSB3
aXRoIGJ5dGUgc291cmNlOiByZWFkKHZpZXcpLCB0aGVuIHJlc3BvbmQoKSB3aXRoIHRvbyBiaWcg
dmFsdWUnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgbGV0IHB1bGxDb3VudCA9IDA7CisK
KyAgbGV0IGNvbnRyb2xsZXI7CisgIGxldCBieW9iUmVxdWVzdDsKKyAgbGV0IHZpZXdJbmZvOwor
CisgIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgewor
ICAgICAgY29udHJvbGxlciA9IGM7CisgICAgfSwKKyAgICBwdWxsKCkgeworICAgICAgKytwdWxs
Q291bnQ7CisKKyAgICAgIGJ5b2JSZXF1ZXN0ID0gY29udHJvbGxlci5ieW9iUmVxdWVzdDsKKyAg
ICAgIGNvbnN0IHZpZXcgPSBieW9iUmVxdWVzdC52aWV3OworICAgICAgdmlld0luZm8gPSBleHRy
YWN0Vmlld0luZm8odmlldyk7CisKKyAgICAgIHZpZXdbMF0gPSAweDAxOworICAgICAgdmlld1sx
XSA9IDB4MDI7CisgICAgICB2aWV3WzJdID0gMHgwMzsKKworICAgICAgY29udHJvbGxlci5ieW9i
UmVxdWVzdC5yZXNwb25kKDMpOworICAgIH0sCisgICAgdHlwZTogJ2J5dGVzJworICB9KTsKKwor
ICBjb25zdCByZWFkZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKHsgbW9kZTogJ2J5b2InIH0pOworCisg
IHJldHVybiByZWFkZXIucmVhZChuZXcgVWludDE2QXJyYXkoMikpLnRoZW4ocmVzdWx0ID0+IHsK
KyAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMSk7CisKKyAgICBhc3NlcnRfZXF1YWxzKHJl
c3VsdC5kb25lLCBmYWxzZSwgJ2RvbmUnKTsKKworICAgIGNvbnN0IHZpZXcgPSByZXN1bHQudmFs
dWU7CisgICAgYXNzZXJ0X2VxdWFscyh2aWV3LmJ5dGVPZmZzZXQsIDAsICdieXRlT2Zmc2V0Jyk7
CisgICAgYXNzZXJ0X2VxdWFscyh2aWV3LmJ5dGVMZW5ndGgsIDIsICdieXRlTGVuZ3RoJyk7CisK
KyAgICBhc3NlcnRfZXF1YWxzKHZpZXdbMF0sIDB4MDIwMSk7CisKKyAgICByZXR1cm4gcmVhZGVy
LnJlYWQobmV3IFVpbnQ4QXJyYXkoMSkpOworICB9KS50aGVuKHJlc3VsdCA9PiB7CisgICAgYXNz
ZXJ0X2VxdWFscyhwdWxsQ291bnQsIDEpOworICAgIGFzc2VydF9ub3RfZXF1YWxzKGJ5b2JSZXF1
ZXN0LCBudWxsLCAnYnlvYlJlcXVlc3QgbXVzdCBub3QgYmUgbnVsbCcpOworICAgIGFzc2VydF9l
cXVhbHModmlld0luZm8uY29uc3RydWN0b3IsIFVpbnQ4QXJyYXksICd2aWV3LmNvbnN0cnVjdG9y
IHNob3VsZCBiZSBVaW50OEFycmF5Jyk7CisgICAgYXNzZXJ0X2VxdWFscyh2aWV3SW5mby5idWZm
ZXJCeXRlTGVuZ3RoLCA0LCAndmlldy5idWZmZXIuYnl0ZUxlbmd0aCBzaG91bGQgYmUgNCcpOwor
ICAgIGFzc2VydF9lcXVhbHModmlld0luZm8uYnl0ZU9mZnNldCwgMCwgJ3ZpZXcuYnl0ZU9mZnNl
dCBzaG91bGQgYmUgMCcpOworICAgIGFzc2VydF9lcXVhbHModmlld0luZm8uYnl0ZUxlbmd0aCwg
NCwgJ3ZpZXcuYnl0ZUxlbmd0aCBzaG91bGQgYmUgNCcpOworCisgICAgYXNzZXJ0X2VxdWFscyhy
ZXN1bHQuZG9uZSwgZmFsc2UsICdkb25lJyk7CisKKyAgICBjb25zdCB2aWV3ID0gcmVzdWx0LnZh
bHVlOworICAgIGFzc2VydF9lcXVhbHModmlldy5ieXRlT2Zmc2V0LCAwLCAnYnl0ZU9mZnNldCcp
OworICAgIGFzc2VydF9lcXVhbHModmlldy5ieXRlTGVuZ3RoLCAxLCAnYnl0ZUxlbmd0aCcpOwor
CisgICAgYXNzZXJ0X2VxdWFscyh2aWV3WzBdLCAweDAzKTsKKyAgfSk7Cit9LCAnUmVhZGFibGVT
dHJlYW0gd2l0aCBieXRlIHNvdXJjZTogcmVzcG9uZCgzKSB0byByZWFkKHZpZXcpIHdpdGggMiBl
bGVtZW50IFVpbnQxNkFycmF5IGVucXVldWVzIHRoZSAxIGJ5dGUgJyArCisgICAncmVtYWluZGVy
Jyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgY29uc3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxl
U3RyZWFtKHsKKyAgICBzdGFydChjb250cm9sbGVyKSB7CisgICAgICBjb25zdCB2aWV3ID0gbmV3
IFVpbnQ4QXJyYXkoMTYpOworICAgICAgdmlld1sxNV0gPSAweDAxOworICAgICAgY29udHJvbGxl
ci5lbnF1ZXVlKHZpZXcpOworICAgIH0sCisgICAgcHVsbDogdC51bnJlYWNoZWRfZnVuYygncHVs
bCgpIHNob3VsZCBub3QgYmUgY2FsbGVkJyksCisgICAgdHlwZTogJ2J5dGVzJworICB9KTsKKwor
ICBjb25zdCByZWFkZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKHsgbW9kZTogJ2J5b2InIH0pOworCisg
IHJldHVybiByZWFkZXIucmVhZChuZXcgVWludDhBcnJheSgxNikpLnRoZW4ocmVzdWx0ID0+IHsK
KyAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdC5kb25lLCBmYWxzZSk7CisKKyAgICBjb25zdCB2aWV3
ID0gcmVzdWx0LnZhbHVlOworICAgIGFzc2VydF9lcXVhbHModmlldy5ieXRlT2Zmc2V0LCAwKTsK
KyAgICBhc3NlcnRfZXF1YWxzKHZpZXcuYnl0ZUxlbmd0aCwgMTYpOworICAgIGFzc2VydF9lcXVh
bHModmlld1sxNV0sIDB4MDEpOworICB9KTsKK30sICdSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUg
c291cmNlOiBlbnF1ZXVlKCksIGdldFJlYWRlcigpLCB0aGVuIHJlYWQodmlldyknKTsKKworcHJv
bWlzZV90ZXN0KHQgPT4geworICBsZXQgY2FuY2VsQ291bnQgPSAwOworICBsZXQgcmVhc29uOwor
CisgIGNvbnN0IHBhc3NlZFJlYXNvbiA9IG5ldyBUeXBlRXJyb3IoJ2ZvbycpOworCisgIGNvbnN0
IHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgYy5l
bnF1ZXVlKG5ldyBVaW50OEFycmF5KDE2KSk7CisgICAgfSwKKyAgICBwdWxsOiB0LnVucmVhY2hl
ZF9mdW5jKCdwdWxsKCkgc2hvdWxkIG5vdCBiZSBjYWxsZWQnKSwKKyAgICBjYW5jZWwocikgewor
ICAgICAgaWYgKGNhbmNlbENvdW50ID09PSAwKSB7CisgICAgICAgIHJlYXNvbiA9IHI7CisgICAg
ICB9CisKKyAgICAgICsrY2FuY2VsQ291bnQ7CisgICAgfSwKKyAgICB0eXBlOiAnYnl0ZXMnCisg
IH0pOworCisgIGNvbnN0IHJlYWRlciA9IHN0cmVhbS5nZXRSZWFkZXIoKTsKKworICByZXR1cm4g
cmVhZGVyLmNhbmNlbChwYXNzZWRSZWFzb24pLnRoZW4ocmVzdWx0ID0+IHsKKyAgICBhc3NlcnRf
ZXF1YWxzKHJlc3VsdCwgdW5kZWZpbmVkKTsKKyAgICBhc3NlcnRfZXF1YWxzKGNhbmNlbENvdW50
LCAxKTsKKyAgICBhc3NlcnRfZXF1YWxzKHJlYXNvbiwgcGFzc2VkUmVhc29uLCAncmVhc29uIHNo
b3VsZCBlcXVhbCB0aGUgcGFzc2VkIHJlYXNvbicpOworICB9KTsKK30sICdSZWFkYWJsZVN0cmVh
bSB3aXRoIGJ5dGUgc291cmNlOiBlbnF1ZXVlKCksIGdldFJlYWRlcigpLCB0aGVuIGNhbmNlbCgp
IChtb2RlID0gbm90IEJZT0IpJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgbGV0IGNhbmNl
bENvdW50ID0gMDsKKyAgbGV0IHJlYXNvbjsKKworICBjb25zdCBwYXNzZWRSZWFzb24gPSBuZXcg
VHlwZUVycm9yKCdmb28nKTsKKworICBjb25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0o
eworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGMuZW5xdWV1ZShuZXcgVWludDhBcnJheSgxNikpOwor
ICAgIH0sCisgICAgcHVsbDogdC51bnJlYWNoZWRfZnVuYygncHVsbCgpIHNob3VsZCBub3QgYmUg
Y2FsbGVkJyksCisgICAgY2FuY2VsKHIpIHsKKyAgICAgIGlmIChjYW5jZWxDb3VudCA9PT0gMCkg
eworICAgICAgICByZWFzb24gPSByOworICAgICAgfQorCisgICAgICArK2NhbmNlbENvdW50Owor
ICAgIH0sCisgICAgdHlwZTogJ2J5dGVzJworICB9KTsKKworICBjb25zdCByZWFkZXIgPSBzdHJl
YW0uZ2V0UmVhZGVyKHsgbW9kZTogJ2J5b2InIH0pOworCisgIHJldHVybiByZWFkZXIuY2FuY2Vs
KHBhc3NlZFJlYXNvbikudGhlbihyZXN1bHQgPT4geworICAgIGFzc2VydF9lcXVhbHMocmVzdWx0
LCB1bmRlZmluZWQpOworICAgIGFzc2VydF9lcXVhbHMoY2FuY2VsQ291bnQsIDEpOworICAgIGFz
c2VydF9lcXVhbHMocmVhc29uLCBwYXNzZWRSZWFzb24sICdyZWFzb24gc2hvdWxkIGVxdWFsIHRo
ZSBwYXNzZWQgcmVhc29uJyk7CisgIH0pOworfSwgJ1JlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBz
b3VyY2U6IGVucXVldWUoKSwgZ2V0UmVhZGVyKCksIHRoZW4gY2FuY2VsKCkgKG1vZGUgPSBCWU9C
KScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIGxldCBjYW5jZWxDb3VudCA9IDA7CisgIGxl
dCByZWFzb247CisKKyAgY29uc3QgcGFzc2VkUmVhc29uID0gbmV3IFR5cGVFcnJvcignZm9vJyk7
CisKKyAgbGV0IGNvbnRyb2xsZXI7CisKKyAgY29uc3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxlU3Ry
ZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjb250cm9sbGVyID0gYzsKKyAgICB9LAorICAg
IHB1bGw6IHQudW5yZWFjaGVkX2Z1bmMoJ3B1bGwoKSBzaG91bGQgbm90IGJlIGNhbGxlZCcpLAor
ICAgIGNhbmNlbChyKSB7CisgICAgICBpZiAoY2FuY2VsQ291bnQgPT09IDApIHsKKyAgICAgICAg
cmVhc29uID0gcjsKKyAgICAgICAgY29udHJvbGxlci5ieW9iUmVxdWVzdC5yZXNwb25kKDApOwor
ICAgICAgfQorCisgICAgICArK2NhbmNlbENvdW50OworCisgICAgICByZXR1cm4gJ2Jhcic7Cisg
ICAgfSwKKyAgICB0eXBlOiAnYnl0ZXMnCisgIH0pOworCisgIGNvbnN0IHJlYWRlciA9IHN0cmVh
bS5nZXRSZWFkZXIoeyBtb2RlOiAnYnlvYicgfSk7CisKKyAgY29uc3QgcmVhZFByb21pc2UgPSBy
ZWFkZXIucmVhZChuZXcgVWludDhBcnJheSgxKSkudGhlbihyZXN1bHQgPT4geworICAgIGFzc2Vy
dF9lcXVhbHMocmVzdWx0LmRvbmUsIHRydWUpOworICB9KTsKKworICBjb25zdCBjYW5jZWxQcm9t
aXNlID0gcmVhZGVyLmNhbmNlbChwYXNzZWRSZWFzb24pLnRoZW4ocmVzdWx0ID0+IHsKKyAgICBh
c3NlcnRfZXF1YWxzKHJlc3VsdCwgdW5kZWZpbmVkKTsKKyAgICBhc3NlcnRfZXF1YWxzKGNhbmNl
bENvdW50LCAxKTsKKyAgICBhc3NlcnRfZXF1YWxzKHJlYXNvbiwgcGFzc2VkUmVhc29uLCAncmVh
c29uIHNob3VsZCBlcXVhbCB0aGUgcGFzc2VkIHJlYXNvbicpOworICB9KTsKKworICByZXR1cm4g
UHJvbWlzZS5hbGwoW3JlYWRQcm9taXNlLCBjYW5jZWxQcm9taXNlXSk7Cit9LCAnUmVhZGFibGVT
dHJlYW0gd2l0aCBieXRlIHNvdXJjZTogZ2V0UmVhZGVyKCksIHJlYWQodmlldyksIHRoZW4gY2Fu
Y2VsKCknKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgbGV0IHB1bGxDb3VudCA9IDA7CisK
KyAgbGV0IGNvbnRyb2xsZXI7CisgIGxldCBieW9iUmVxdWVzdDsKKyAgY29uc3Qgdmlld0luZm9z
ID0gW107CisKKyAgY29uc3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFy
dChjKSB7CisgICAgICBjb250cm9sbGVyID0gYzsKKyAgICB9LAorICAgIHB1bGwoKSB7CisgICAg
ICBieW9iUmVxdWVzdCA9IGNvbnRyb2xsZXIuYnlvYlJlcXVlc3Q7CisKKyAgICAgIHZpZXdJbmZv
cy5wdXNoKGV4dHJhY3RWaWV3SW5mbyhjb250cm9sbGVyLmJ5b2JSZXF1ZXN0LnZpZXcpKTsKKyAg
ICAgIGNvbnRyb2xsZXIuZW5xdWV1ZShuZXcgVWludDhBcnJheSgxKSk7CisgICAgICB2aWV3SW5m
b3MucHVzaChleHRyYWN0Vmlld0luZm8oY29udHJvbGxlci5ieW9iUmVxdWVzdC52aWV3KSk7CisK
KyAgICAgICsrcHVsbENvdW50OworICAgIH0sCisgICAgdHlwZTogJ2J5dGVzJworICB9KTsKKwor
ICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X2VxdWFs
cyhwdWxsQ291bnQsIDAsICdObyBwdWxsKCkgYXMgbm8gcmVhZCh2aWV3KSB5ZXQnKTsKKworICAg
IGNvbnN0IHJlYWRlciA9IHN0cmVhbS5nZXRSZWFkZXIoeyBtb2RlOiAnYnlvYicgfSk7CisKKyAg
ICBjb25zdCBwcm9taXNlID0gcmVhZGVyLnJlYWQobmV3IFVpbnQxNkFycmF5KDEpKS50aGVuKHJl
c3VsdCA9PiB7CisgICAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdC5kb25lLCB0cnVlLCAncmVzdWx0
LmRvbmUnKTsKKyAgICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LnZhbHVlLmNvbnN0cnVjdG9yLCBV
aW50MTZBcnJheSwgJ3Jlc3VsdC52YWx1ZScpOworICAgIH0pOworCisgICAgYXNzZXJ0X2VxdWFs
cyhwdWxsQ291bnQsIDEsICcxIHB1bGwoKSBzaG91bGQgaGF2ZSBiZWVuIG1hZGUgaW4gcmVzcG9u
c2UgdG8gcGFydGlhbCBmaWxsIGJ5IGVucXVldWUoKScpOworICAgIGFzc2VydF9ub3RfZXF1YWxz
KGJ5b2JSZXF1ZXN0LCBudWxsLCAnYnlvYlJlcXVlc3Qgc2hvdWxkIG5vdCBiZSBudWxsJyk7Cisg
ICAgYXNzZXJ0X2VxdWFscyh2aWV3SW5mb3NbMF0uYnl0ZUxlbmd0aCwgMiwgJ2J5dGVMZW5ndGgg
YmVmb3JlIGVucXVldWUoKSBzaG91aWxkIGJlIDInKTsKKyAgICBhc3NlcnRfZXF1YWxzKHZpZXdJ
bmZvc1sxXS5ieXRlTGVuZ3RoLCAxLCAnYnl0ZUxlbmd0aCBhZnRlciBlbnF1ZXVlKCkgc2hvdWxk
IGJlIDEnKTsKKworCisgICAgcmVhZGVyLmNhbmNlbCgpOworCisgICAgLy8gVGVsbCB0aGF0IHRo
ZSBidWZmZXIgZ2l2ZW4gdmlhIHB1bGwoKSBpcyByZXR1cm5lZC4KKyAgICBjb250cm9sbGVyLmJ5
b2JSZXF1ZXN0LnJlc3BvbmQoMCk7CisKKyAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMSwg
J3B1bGwoKSBzaG91bGQgb25seSBiZSBjYWxsZWQgb25jZScpOworICAgIHJldHVybiBwcm9taXNl
OworICB9KTsKK30sICdSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBjYW5jZWwoKSB3
aXRoIHBhcnRpYWxseSBmaWxsZWQgcGVuZGluZyBwdWxsKCkgcmVxdWVzdCcpOworCitwcm9taXNl
X3Rlc3QoKCkgPT4geworICBsZXQgY29udHJvbGxlcjsKKyAgbGV0IHB1bGxDYWxsZWQgPSBmYWxz
ZTsKKworICBjb25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMp
IHsKKyAgICAgIGNvbnN0IHZpZXcgPSBuZXcgVWludDhBcnJheSg4KTsKKyAgICAgIHZpZXdbN10g
PSAweDAxOworICAgICAgYy5lbnF1ZXVlKHZpZXcpOworCisgICAgICBjb250cm9sbGVyID0gYzsK
KyAgICB9LAorICAgIHB1bGwoKSB7CisgICAgICBwdWxsQ2FsbGVkID0gdHJ1ZTsKKyAgICB9LAor
ICAgIHR5cGU6ICdieXRlcycKKyAgfSk7CisKKyAgY29uc3QgcmVhZGVyID0gc3RyZWFtLmdldFJl
YWRlcih7IG1vZGU6ICdieW9iJyB9KTsKKworICBjb25zdCBidWZmZXIgPSBuZXcgQXJyYXlCdWZm
ZXIoMTYpOworCisgIHJldHVybiByZWFkZXIucmVhZChuZXcgVWludDhBcnJheShidWZmZXIsIDgs
IDgpKS50aGVuKHJlc3VsdCA9PiB7CisgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQuZG9uZSwgZmFs
c2UpOworCisgICAgYXNzZXJ0X2ZhbHNlKHB1bGxDYWxsZWQsICdwdWxsKCkgbXVzdCBub3QgaGF2
ZSBiZWVuIGNhbGxlZCcpOworCisgICAgY29uc3QgdmlldyA9IHJlc3VsdC52YWx1ZTsKKyAgICBh
c3NlcnRfZXF1YWxzKHZpZXcuY29uc3RydWN0b3IsIFVpbnQ4QXJyYXkpOworICAgIGFzc2VydF9l
cXVhbHModmlldy5idWZmZXIuYnl0ZUxlbmd0aCwgMTYpOworICAgIGFzc2VydF9lcXVhbHModmll
dy5ieXRlT2Zmc2V0LCA4KTsKKyAgICBhc3NlcnRfZXF1YWxzKHZpZXcuYnl0ZUxlbmd0aCwgOCk7
CisgICAgYXNzZXJ0X2VxdWFscyh2aWV3WzddLCAweDAxKTsKKyAgfSk7Cit9LCAnUmVhZGFibGVT
dHJlYW0gd2l0aCBieXRlIHNvdXJjZTogZW5xdWV1ZSgpLCBnZXRSZWFkZXIoKSwgdGhlbiByZWFk
KHZpZXcpIHdoZXJlIHZpZXcuYnVmZmVyIGlzIG5vdCBmdWxseSAnICsKKyAgICdjb3ZlcmVkIGJ5
IHZpZXcnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgbGV0IGNvbnRyb2xsZXI7CisgIGxl
dCBwdWxsQ2FsbGVkID0gZmFsc2U7CisKKyAgY29uc3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxlU3Ry
ZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBsZXQgdmlldzsKKworICAgICAgdmlldyA9IG5l
dyBVaW50OEFycmF5KDE2KTsKKyAgICAgIHZpZXdbMTVdID0gMTIzOworICAgICAgYy5lbnF1ZXVl
KHZpZXcpOworCisgICAgICB2aWV3ID0gbmV3IFVpbnQ4QXJyYXkoOCk7CisgICAgICB2aWV3Wzdd
ID0gMTExOworICAgICAgYy5lbnF1ZXVlKHZpZXcpOworCisgICAgICBjb250cm9sbGVyID0gYzsK
KyAgICB9LAorICAgIHB1bGwoKSB7CisgICAgICBwdWxsQ2FsbGVkID0gdHJ1ZTsKKyAgICB9LAor
ICAgIHR5cGU6ICdieXRlcycKKyAgfSk7CisKKyAgY29uc3QgcmVhZGVyID0gc3RyZWFtLmdldFJl
YWRlcih7IG1vZGU6ICdieW9iJyB9KTsKKworICByZXR1cm4gcmVhZGVyLnJlYWQobmV3IFVpbnQ4
QXJyYXkoMjQpKS50aGVuKHJlc3VsdCA9PiB7CisgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQuZG9u
ZSwgZmFsc2UsICdkb25lJyk7CisKKyAgICBhc3NlcnRfZmFsc2UocHVsbENhbGxlZCwgJ3B1bGwo
KSBtdXN0IG5vdCBoYXZlIGJlZW4gY2FsbGVkJyk7CisKKyAgICBjb25zdCB2aWV3ID0gcmVzdWx0
LnZhbHVlOworICAgIGFzc2VydF9lcXVhbHModmlldy5ieXRlT2Zmc2V0LCAwLCAnYnl0ZU9mZnNl
dCcpOworICAgIGFzc2VydF9lcXVhbHModmlldy5ieXRlTGVuZ3RoLCAyNCwgJ2J5dGVMZW5ndGgn
KTsKKyAgICBhc3NlcnRfZXF1YWxzKHZpZXdbMTVdLCAxMjMsICdDb250ZW50cyBhcmUgc2V0IGZy
b20gdGhlIGZpcnN0IGNodW5rJyk7CisgICAgYXNzZXJ0X2VxdWFscyh2aWV3WzIzXSwgMTExLCAn
Q29udGVudHMgYXJlIHNldCBmcm9tIHRoZSBzZWNvbmQgY2h1bmsnKTsKKyAgfSk7Cit9LCAnUmVh
ZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogTXVsdGlwbGUgZW5xdWV1ZSgpLCBnZXRSZWFk
ZXIoKSwgdGhlbiByZWFkKHZpZXcpJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisgIGxldCBw
dWxsQ2FsbGVkID0gZmFsc2U7CisKKyAgY29uc3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFt
KHsKKyAgICBzdGFydChjKSB7CisgICAgICBjb25zdCB2aWV3ID0gbmV3IFVpbnQ4QXJyYXkoMTYp
OworICAgICAgdmlld1sxNV0gPSAweDAxOworICAgICAgYy5lbnF1ZXVlKHZpZXcpOworICAgIH0s
CisgICAgcHVsbCgpIHsKKyAgICAgIHB1bGxDYWxsZWQgPSB0cnVlOworICAgIH0sCisgICAgdHlw
ZTogJ2J5dGVzJworICB9KTsKKworICBjb25zdCByZWFkZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKHsg
bW9kZTogJ2J5b2InIH0pOworCisgIHJldHVybiByZWFkZXIucmVhZChuZXcgVWludDhBcnJheSgy
NCkpLnRoZW4ocmVzdWx0ID0+IHsKKyAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdC5kb25lLCBmYWxz
ZSk7CisKKyAgICBhc3NlcnRfZmFsc2UocHVsbENhbGxlZCwgJ3B1bGwoKSBtdXN0IG5vdCBoYXZl
IGJlZW4gY2FsbGVkJyk7CisKKyAgICBjb25zdCB2aWV3ID0gcmVzdWx0LnZhbHVlOworICAgIGFz
c2VydF9lcXVhbHModmlldy5ieXRlT2Zmc2V0LCAwKTsKKyAgICBhc3NlcnRfZXF1YWxzKHZpZXcu
Ynl0ZUxlbmd0aCwgMTYpOworICAgIGFzc2VydF9lcXVhbHModmlld1sxNV0sIDB4MDEpOworICB9
KTsKK30sICdSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBlbnF1ZXVlKCksIGdldFJl
YWRlcigpLCB0aGVuIHJlYWQodmlldykgd2l0aCBhIGJpZ2dlciB2aWV3Jyk7CisKK3Byb21pc2Vf
dGVzdCgoKSA9PiB7CisgIGxldCBwdWxsQ2FsbGVkID0gZmFsc2U7CisKKyAgY29uc3Qgc3RyZWFt
ID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjb25zdCB2aWV3
ID0gbmV3IFVpbnQ4QXJyYXkoMTYpOworICAgICAgdmlld1s3XSA9IDB4MDE7CisgICAgICB2aWV3
WzE1XSA9IDB4MDI7CisgICAgICBjLmVucXVldWUodmlldyk7CisgICAgfSwKKyAgICBwdWxsKCkg
eworICAgICAgcHVsbENhbGxlZCA9IHRydWU7CisgICAgfSwKKyAgICB0eXBlOiAnYnl0ZXMnCisg
IH0pOworCisgIGNvbnN0IHJlYWRlciA9IHN0cmVhbS5nZXRSZWFkZXIoeyBtb2RlOiAnYnlvYicg
fSk7CisKKyAgcmV0dXJuIHJlYWRlci5yZWFkKG5ldyBVaW50OEFycmF5KDgpKS50aGVuKHJlc3Vs
dCA9PiB7CisgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQuZG9uZSwgZmFsc2UsICdkb25lJyk7CisK
KyAgICBjb25zdCB2aWV3ID0gcmVzdWx0LnZhbHVlOworICAgIGFzc2VydF9lcXVhbHModmlldy5i
eXRlT2Zmc2V0LCAwKTsKKyAgICBhc3NlcnRfZXF1YWxzKHZpZXcuYnl0ZUxlbmd0aCwgOCk7Cisg
ICAgYXNzZXJ0X2VxdWFscyh2aWV3WzddLCAweDAxKTsKKworICAgIHJldHVybiByZWFkZXIucmVh
ZChuZXcgVWludDhBcnJheSg4KSk7CisgIH0pLnRoZW4ocmVzdWx0ID0+IHsKKyAgICBhc3NlcnRf
ZXF1YWxzKHJlc3VsdC5kb25lLCBmYWxzZSwgJ2RvbmUnKTsKKworICAgIGFzc2VydF9mYWxzZShw
dWxsQ2FsbGVkLCAncHVsbCgpIG11c3Qgbm90IGhhdmUgYmVlbiBjYWxsZWQnKTsKKworICAgIGNv
bnN0IHZpZXcgPSByZXN1bHQudmFsdWU7CisgICAgYXNzZXJ0X2VxdWFscyh2aWV3LmJ5dGVPZmZz
ZXQsIDApOworICAgIGFzc2VydF9lcXVhbHModmlldy5ieXRlTGVuZ3RoLCA4KTsKKyAgICBhc3Nl
cnRfZXF1YWxzKHZpZXdbN10sIDB4MDIpOworICB9KTsKK30sICdSZWFkYWJsZVN0cmVhbSB3aXRo
IGJ5dGUgc291cmNlOiBlbnF1ZXVlKCksIGdldFJlYWRlcigpLCB0aGVuIHJlYWQodmlldykgd2l0
aCBzbWFsbGVyIHZpZXdzJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisgIGxldCBjb250cm9s
bGVyOworICBsZXQgdmlld0luZm87CisKKyAgY29uc3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxlU3Ry
ZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjb25zdCB2aWV3ID0gbmV3IFVpbnQ4QXJyYXko
MSk7CisgICAgICB2aWV3WzBdID0gMHhmZjsKKyAgICAgIGMuZW5xdWV1ZSh2aWV3KTsKKworICAg
ICAgY29udHJvbGxlciA9IGM7CisgICAgfSwKKyAgICBwdWxsKCkgeworICAgICAgaWYgKGNvbnRy
b2xsZXIuYnlvYlJlcXVlc3QgPT09IG51bGwpIHsKKyAgICAgICAgcmV0dXJuOworICAgICAgfQor
CisgICAgICBjb25zdCB2aWV3ID0gY29udHJvbGxlci5ieW9iUmVxdWVzdC52aWV3OworICAgICAg
dmlld0luZm8gPSBleHRyYWN0Vmlld0luZm8odmlldyk7CisKKyAgICAgIHZpZXdbMF0gPSAweGFh
OworICAgICAgY29udHJvbGxlci5ieW9iUmVxdWVzdC5yZXNwb25kKDEpOworICAgIH0sCisgICAg
dHlwZTogJ2J5dGVzJworICB9KTsKKworICBjb25zdCByZWFkZXIgPSBzdHJlYW0uZ2V0UmVhZGVy
KHsgbW9kZTogJ2J5b2InIH0pOworCisgIHJldHVybiByZWFkZXIucmVhZChuZXcgVWludDE2QXJy
YXkoMSkpLnRoZW4ocmVzdWx0ID0+IHsKKyAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdC5kb25lLCBm
YWxzZSk7CisKKyAgICBjb25zdCB2aWV3ID0gcmVzdWx0LnZhbHVlOworICAgIGFzc2VydF9lcXVh
bHModmlldy5ieXRlT2Zmc2V0LCAwKTsKKyAgICBhc3NlcnRfZXF1YWxzKHZpZXcuYnl0ZUxlbmd0
aCwgMik7CisgICAgYXNzZXJ0X2VxdWFscyh2aWV3WzBdLCAweGFhZmYpOworCisgICAgYXNzZXJ0
X2VxdWFscyh2aWV3SW5mby5jb25zdHJ1Y3RvciwgVWludDhBcnJheSwgJ3ZpZXcuY29uc3RydWN0
b3Igc2hvdWxkIGJlIFVpbnQ4QXJyYXknKTsKKyAgICBhc3NlcnRfZXF1YWxzKHZpZXdJbmZvLmJ1
ZmZlckJ5dGVMZW5ndGgsIDIsICd2aWV3LmJ1ZmZlci5ieXRlTGVuZ3RoIHNob3VsZCBiZSAyJyk7
CisgICAgYXNzZXJ0X2VxdWFscyh2aWV3SW5mby5ieXRlT2Zmc2V0LCAxLCAndmlldy5ieXRlT2Zm
c2V0IHNob3VsZCBiZSAxJyk7CisgICAgYXNzZXJ0X2VxdWFscyh2aWV3SW5mby5ieXRlTGVuZ3Ro
LCAxLCAndmlldy5ieXRlTGVuZ3RoIHNob3VsZCBiZSAxJyk7CisgIH0pOworfSwgJ1JlYWRhYmxl
U3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IGVucXVldWUoKSAxIGJ5dGUsIGdldFJlYWRlcigpLCB0
aGVuIHJlYWQodmlldykgd2l0aCBVaW50MTZBcnJheScpOworCitwcm9taXNlX3Rlc3QoKCkgPT4g
eworICBsZXQgcHVsbENvdW50ID0gMDsKKworICBsZXQgY29udHJvbGxlcjsKKyAgbGV0IGJ5b2JS
ZXF1ZXN0OworICBsZXQgdmlld0luZm87CisgIGxldCBkZXNpcmVkU2l6ZTsKKworICBjb25zdCBz
dHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGNvbnN0
IHZpZXcgPSBuZXcgVWludDhBcnJheSgzKTsKKyAgICAgIHZpZXdbMF0gPSAweDAxOworICAgICAg
dmlld1syXSA9IDB4MDI7CisgICAgICBjLmVucXVldWUodmlldyk7CisKKyAgICAgIGNvbnRyb2xs
ZXIgPSBjOworICAgIH0sCisgICAgcHVsbCgpIHsKKyAgICAgIGJ5b2JSZXF1ZXN0ID0gY29udHJv
bGxlci5ieW9iUmVxdWVzdDsKKworICAgICAgY29uc3QgdmlldyA9IGNvbnRyb2xsZXIuYnlvYlJl
cXVlc3QudmlldzsKKworICAgICAgdmlld0luZm8gPSBleHRyYWN0Vmlld0luZm8odmlldyk7CisK
KyAgICAgIHZpZXdbMF0gPSAweDAzOworICAgICAgY29udHJvbGxlci5ieW9iUmVxdWVzdC5yZXNw
b25kKDEpOworCisgICAgICBkZXNpcmVkU2l6ZSA9IGNvbnRyb2xsZXIuZGVzaXJlZFNpemU7CisK
KyAgICAgICsrcHVsbENvdW50OworICAgIH0sCisgICAgdHlwZTogJ2J5dGVzJworICB9KTsKKwor
ICAvLyBXYWl0IGZvciBjb21wbGV0aW9uIG9mIHRoZSBzdGFydCBtZXRob2QgdG8gYmUgcmVmbGVj
dGVkLgorICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiB7CisgICAgY29uc3Qg
cmVhZGVyID0gc3RyZWFtLmdldFJlYWRlcih7IG1vZGU6ICdieW9iJyB9KTsKKworICAgIGNvbnN0
IHByb21pc2UgPSByZWFkZXIucmVhZChuZXcgVWludDE2QXJyYXkoMikpLnRoZW4ocmVzdWx0ID0+
IHsKKyAgICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LmRvbmUsIGZhbHNlLCAnZG9uZScpOworCisg
ICAgICBjb25zdCB2aWV3ID0gcmVzdWx0LnZhbHVlOworICAgICAgYXNzZXJ0X2VxdWFscyh2aWV3
LmNvbnN0cnVjdG9yLCBVaW50MTZBcnJheSwgJ2NvbnN0cnVjdG9yJyk7CisgICAgICBhc3NlcnRf
ZXF1YWxzKHZpZXcuYnVmZmVyLmJ5dGVMZW5ndGgsIDQsICdidWZmZXIuYnl0ZUxlbmd0aCcpOwor
ICAgICAgYXNzZXJ0X2VxdWFscyh2aWV3LmJ5dGVPZmZzZXQsIDAsICdieXRlT2Zmc2V0Jyk7Cisg
ICAgICBhc3NlcnRfZXF1YWxzKHZpZXcuYnl0ZUxlbmd0aCwgMiwgJ2J5dGVMZW5ndGgnKTsKKyAg
ICAgIGFzc2VydF9lcXVhbHModmlld1swXSwgMHgwMDAxLCAnQ29udGVudHMgYXJlIHNldCcpOwor
CisgICAgICBjb25zdCBwID0gcmVhZGVyLnJlYWQobmV3IFVpbnQxNkFycmF5KDEpKTsKKworICAg
ICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDEpOworCisgICAgICByZXR1cm4gcDsKKyAgICB9
KS50aGVuKHJlc3VsdCA9PiB7CisgICAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdC5kb25lLCBmYWxz
ZSwgJ2RvbmUnKTsKKworICAgICAgY29uc3QgdmlldyA9IHJlc3VsdC52YWx1ZTsKKyAgICAgIGFz
c2VydF9lcXVhbHModmlldy5idWZmZXIuYnl0ZUxlbmd0aCwgMiwgJ2J1ZmZlci5ieXRlTGVuZ3Ro
Jyk7CisgICAgICBhc3NlcnRfZXF1YWxzKHZpZXcuYnl0ZU9mZnNldCwgMCwgJ2J5dGVPZmZzZXQn
KTsKKyAgICAgIGFzc2VydF9lcXVhbHModmlldy5ieXRlTGVuZ3RoLCAyLCAnYnl0ZUxlbmd0aCcp
OworICAgICAgYXNzZXJ0X2VxdWFscyh2aWV3WzBdLCAweDAzMDIsICdDb250ZW50cyBhcmUgc2V0
Jyk7CisKKyAgICAgIGFzc2VydF9ub3RfZXF1YWxzKGJ5b2JSZXF1ZXN0LCBudWxsLCAnYnlvYlJl
cXVlc3QgbXVzdCBub3QgYmUgbnVsbCcpOworICAgICAgYXNzZXJ0X2VxdWFscyh2aWV3SW5mby5j
b25zdHJ1Y3RvciwgVWludDhBcnJheSwgJ3ZpZXcuY29uc3RydWN0b3Igc2hvdWxkIGJlIFVpbnQ4
QXJyYXknKTsKKyAgICAgIGFzc2VydF9lcXVhbHModmlld0luZm8uYnVmZmVyQnl0ZUxlbmd0aCwg
MiwgJ3ZpZXcuYnVmZmVyLmJ5dGVMZW5ndGggc2hvdWxkIGJlIDInKTsKKyAgICAgIGFzc2VydF9l
cXVhbHModmlld0luZm8uYnl0ZU9mZnNldCwgMSwgJ3ZpZXcuYnl0ZU9mZnNldCBzaG91bGQgYmUg
MScpOworICAgICAgYXNzZXJ0X2VxdWFscyh2aWV3SW5mby5ieXRlTGVuZ3RoLCAxLCAndmlldy5i
eXRlTGVuZ3RoIHNob3VsZCBiZSAxJyk7CisgICAgICBhc3NlcnRfZXF1YWxzKGRlc2lyZWRTaXpl
LCAwLCAnZGVzaXJlZFNpemUgc2hvdWxkIGJlIHplcm8nKTsKKyAgICB9KTsKKworICAgIGFzc2Vy
dF9lcXVhbHMocHVsbENvdW50LCAwKTsKKworICAgIHJldHVybiBwcm9taXNlOworICB9KTsKK30s
ICdSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBlbnF1ZXVlKCkgMyBieXRlLCBnZXRS
ZWFkZXIoKSwgdGhlbiByZWFkKHZpZXcpIHdpdGggMi1lbGVtZW50IFVpbnQxNkFycmF5Jyk7CisK
K3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgY29uc3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFt
KHsKKyAgICBzdGFydChjKSB7CisgICAgICBjb25zdCB2aWV3ID0gbmV3IFVpbnQ4QXJyYXkoMSk7
CisgICAgICB2aWV3WzBdID0gMHhmZjsKKyAgICAgIGMuZW5xdWV1ZSh2aWV3KTsKKyAgICAgIGMu
Y2xvc2UoKTsKKyAgICB9LAorICAgIHB1bGw6IHQudW5yZWFjaGVkX2Z1bmMoJ3B1bGwoKSBzaG91
bGQgbm90IGJlIGNhbGxlZCcpLAorICAgIHR5cGU6ICdieXRlcycKKyAgfSk7CisKKyAgY29uc3Qg
cmVhZGVyID0gc3RyZWFtLmdldFJlYWRlcih7IG1vZGU6ICdieW9iJyB9KTsKKworCisgIHJldHVy
biBwcm9taXNlX3JlamVjdHNfanModCwgVHlwZUVycm9yLCByZWFkZXIucmVhZChuZXcgVWludDE2
QXJyYXkoMSkpLCAncmVhZCh2aWV3KSBtdXN0IGZhaWwnKQorICAgICAgLnRoZW4oKCkgPT4gcHJv
bWlzZV9yZWplY3RzX2pzKHQsIFR5cGVFcnJvciwgcmVhZGVyLmNsb3NlZCwgJ3JlYWRlci5jbG9z
ZWQgc2hvdWxkIHJlamVjdCcpKTsKK30sICdSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNl
OiByZWFkKHZpZXcpIHdpdGggVWludDE2QXJyYXkgb24gY2xvc2UoKS1kIHN0cmVhbSB3aXRoIDEg
Ynl0ZSBlbnF1ZXVlKCktZCBtdXN0ICcgKworICAgJ2ZhaWwnKTsKKworcHJvbWlzZV90ZXN0KHQg
PT4geworICBsZXQgY29udHJvbGxlcjsKKworICBjb25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGVT
dHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGNvbnN0IHZpZXcgPSBuZXcgVWludDhBcnJh
eSgxKTsKKyAgICAgIHZpZXdbMF0gPSAweGZmOworICAgICAgYy5lbnF1ZXVlKHZpZXcpOworCisg
ICAgICBjb250cm9sbGVyID0gYzsKKyAgICB9LAorICAgIHB1bGw6IHQudW5yZWFjaGVkX2Z1bmMo
J3B1bGwoKSBzaG91bGQgbm90IGJlIGNhbGxlZCcpLAorICAgIHR5cGU6ICdieXRlcycKKyAgfSk7
CisKKyAgY29uc3QgcmVhZGVyID0gc3RyZWFtLmdldFJlYWRlcih7IG1vZGU6ICdieW9iJyB9KTsK
KworICBjb25zdCByZWFkUHJvbWlzZSA9IHJlYWRlci5yZWFkKG5ldyBVaW50MTZBcnJheSgxKSk7
CisKKyAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IGNvbnRyb2xsZXIuY2xvc2Uo
KSwgJ2NvbnRyb2xsZXIuY2xvc2UoKSBtdXN0IHRocm93Jyk7CisKKyAgcmV0dXJuIHByb21pc2Vf
cmVqZWN0c19qcyh0LCBUeXBlRXJyb3IsIHJlYWRQcm9taXNlLCAncmVhZCh2aWV3KSBtdXN0IGZh
aWwnKQorICAgICAgLnRoZW4oKCkgPT4gcHJvbWlzZV9yZWplY3RzX2pzKHQsIFR5cGVFcnJvciwg
cmVhZGVyLmNsb3NlZCwgJ3JlYWRlci5jbG9zZWQgbXVzdCByZWplY3QnKSk7Cit9LCAnUmVhZGFi
bGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogQSBzdHJlYW0gbXVzdCBiZSBlcnJvcmVkIGlmIGNs
b3NlKCktZCBiZWZvcmUgZnVsZmlsbGluZyByZWFkKHZpZXcpIHdpdGggJyArCisgICAnVWludDE2
QXJyYXknKTsKKwordGVzdCgoKSA9PiB7CisgIGxldCBjb250cm9sbGVyOworCisgIG5ldyBSZWFk
YWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgY29udHJvbGxlciA9IGM7CisgICAg
fSwKKyAgICB0eXBlOiAnYnl0ZXMnCisgIH0pOworCisgIC8vIEVucXVldWUgYSBjaHVuayBzbyB0
aGF0IHRoZSBzdHJlYW0gZG9lc24ndCBnZXQgY2xvc2VkLiBUaGlzIGlzIHRvIGNoZWNrIGR1cGxp
Y2F0ZSBjbG9zZSgpIGNhbGxzIGFyZSByZWplY3RlZAorICAvLyBldmVuIGlmIHRoZSBzdHJlYW0g
aGFzIG5vdCB5ZXQgZW50ZXJlZCB0aGUgY2xvc2VkIHN0YXRlLgorICBjb25zdCB2aWV3ID0gbmV3
IFVpbnQ4QXJyYXkoMSk7CisgIGNvbnRyb2xsZXIuZW5xdWV1ZSh2aWV3KTsKKyAgY29udHJvbGxl
ci5jbG9zZSgpOworCisgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiBjb250cm9s
bGVyLmNsb3NlKCksICdjb250cm9sbGVyLmNsb3NlKCkgbXVzdCB0aHJvdycpOworfSwgJ1JlYWRh
YmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IFRocm93IGlmIGNsb3NlKCktZWQgbW9yZSB0aGFu
IG9uY2UnKTsKKwordGVzdCgoKSA9PiB7CisgIGxldCBjb250cm9sbGVyOworCisgIG5ldyBSZWFk
YWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgY29udHJvbGxlciA9IGM7CisgICAg
fSwKKyAgICB0eXBlOiAnYnl0ZXMnCisgIH0pOworCisgIC8vIEVucXVldWUgYSBjaHVuayBzbyB0
aGF0IHRoZSBzdHJlYW0gZG9lc24ndCBnZXQgY2xvc2VkLiBUaGlzIGlzIHRvIGNoZWNrIGVucXVl
dWUoKSBhZnRlciBjbG9zZSgpIGlzICByZWplY3RlZAorICAvLyBldmVuIGlmIHRoZSBzdHJlYW0g
aGFzIG5vdCB5ZXQgZW50ZXJlZCB0aGUgY2xvc2VkIHN0YXRlLgorICBjb25zdCB2aWV3ID0gbmV3
IFVpbnQ4QXJyYXkoMSk7CisgIGNvbnRyb2xsZXIuZW5xdWV1ZSh2aWV3KTsKKyAgY29udHJvbGxl
ci5jbG9zZSgpOworCisgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiBjb250cm9s
bGVyLmVucXVldWUodmlldyksICdjb250cm9sbGVyLmNsb3NlKCkgbXVzdCB0aHJvdycpOworfSwg
J1JlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IFRocm93IG9uIGVucXVldWUoKSBhZnRl
ciBjbG9zZSgpJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisgIGxldCBjb250cm9sbGVyOwor
ICBsZXQgYnlvYlJlcXVlc3Q7CisgIGxldCB2aWV3SW5mbzsKKworICBjb25zdCBzdHJlYW0gPSBu
ZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGNvbnRyb2xsZXIgPSBj
OworICAgIH0sCisgICAgcHVsbCgpIHsKKyAgICAgIGJ5b2JSZXF1ZXN0ID0gY29udHJvbGxlci5i
eW9iUmVxdWVzdDsKKyAgICAgIGNvbnN0IHZpZXcgPSBjb250cm9sbGVyLmJ5b2JSZXF1ZXN0LnZp
ZXc7CisgICAgICB2aWV3SW5mbyA9IGV4dHJhY3RWaWV3SW5mbyh2aWV3KTsKKworICAgICAgdmll
d1sxNV0gPSAweDAxOworICAgICAgY29udHJvbGxlci5ieW9iUmVxdWVzdC5yZXNwb25kKDE2KTsK
KyAgICAgIGNvbnRyb2xsZXIuY2xvc2UoKTsKKyAgICB9LAorICAgIHR5cGU6ICdieXRlcycKKyAg
fSk7CisKKyAgY29uc3QgcmVhZGVyID0gc3RyZWFtLmdldFJlYWRlcih7IG1vZGU6ICdieW9iJyB9
KTsKKworICByZXR1cm4gcmVhZGVyLnJlYWQobmV3IFVpbnQ4QXJyYXkoMTYpKS50aGVuKHJlc3Vs
dCA9PiB7CisgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQuZG9uZSwgZmFsc2UpOworCisgICAgY29u
c3QgdmlldyA9IHJlc3VsdC52YWx1ZTsKKyAgICBhc3NlcnRfZXF1YWxzKHZpZXcuYnl0ZU9mZnNl
dCwgMCk7CisgICAgYXNzZXJ0X2VxdWFscyh2aWV3LmJ5dGVMZW5ndGgsIDE2KTsKKyAgICBhc3Nl
cnRfZXF1YWxzKHZpZXdbMTVdLCAweDAxKTsKKworICAgIHJldHVybiByZWFkZXIucmVhZChuZXcg
VWludDhBcnJheSgxNikpOworICB9KS50aGVuKHJlc3VsdCA9PiB7CisgICAgYXNzZXJ0X2VxdWFs
cyhyZXN1bHQuZG9uZSwgdHJ1ZSk7CisKKyAgICBjb25zdCB2aWV3ID0gcmVzdWx0LnZhbHVlOwor
ICAgIGFzc2VydF9lcXVhbHModmlldy5ieXRlT2Zmc2V0LCAwKTsKKyAgICBhc3NlcnRfZXF1YWxz
KHZpZXcuYnl0ZUxlbmd0aCwgMCk7CisKKyAgICBhc3NlcnRfbm90X2VxdWFscyhieW9iUmVxdWVz
dCwgbnVsbCwgJ2J5b2JSZXF1ZXN0IG11c3Qgbm90IGJlIG51bGwnKTsKKyAgICBhc3NlcnRfZXF1
YWxzKHZpZXdJbmZvLmNvbnN0cnVjdG9yLCBVaW50OEFycmF5LCAndmlldy5jb25zdHJ1Y3RvciBz
aG91bGQgYmUgVWludDhBcnJheScpOworICAgIGFzc2VydF9lcXVhbHModmlld0luZm8uYnVmZmVy
Qnl0ZUxlbmd0aCwgMTYsICd2aWV3LmJ1ZmZlci5ieXRlTGVuZ3RoIHNob3VsZCBiZSAxNicpOwor
ICAgIGFzc2VydF9lcXVhbHModmlld0luZm8uYnl0ZU9mZnNldCwgMCwgJ3ZpZXcuYnl0ZU9mZnNl
dCBzaG91bGQgYmUgMCcpOworICAgIGFzc2VydF9lcXVhbHModmlld0luZm8uYnl0ZUxlbmd0aCwg
MTYsICd2aWV3LmJ5dGVMZW5ndGggc2hvdWxkIGJlIDE2Jyk7CisgIH0pOworfSwgJ1JlYWRhYmxl
U3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IHJlYWQodmlldyksIHRoZW4gcmVzcG9uZCgpIGFuZCBj
bG9zZSgpIGluIHB1bGwoKScpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworICBsZXQgcHVsbENv
dW50ID0gMDsKKworICBsZXQgY29udHJvbGxlcjsKKyAgY29uc3Qgdmlld0luZm9zID0gW107CisK
KyAgY29uc3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7Cisg
ICAgICBjb250cm9sbGVyID0gYzsKKyAgICB9LAorICAgIHB1bGwoKSB7CisgICAgICBpZiAoY29u
dHJvbGxlci5ieW9iUmVxdWVzdCA9PT0gbnVsbCkgeworICAgICAgICByZXR1cm47CisgICAgICB9
CisKKyAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgNDsgKytpKSB7CisgICAgICAgIGNvbnN0IHZp
ZXcgPSBjb250cm9sbGVyLmJ5b2JSZXF1ZXN0LnZpZXc7CisgICAgICAgIHZpZXdJbmZvcy5wdXNo
KGV4dHJhY3RWaWV3SW5mbyh2aWV3KSk7CisKKyAgICAgICAgdmlld1swXSA9IDB4MDE7CisgICAg
ICAgIGNvbnRyb2xsZXIuYnlvYlJlcXVlc3QucmVzcG9uZCgxKTsKKyAgICAgIH0KKworICAgICAg
KytwdWxsQ291bnQ7CisgICAgfSwKKyAgICB0eXBlOiAnYnl0ZXMnCisgIH0pOworCisgIGNvbnN0
IHJlYWRlciA9IHN0cmVhbS5nZXRSZWFkZXIoeyBtb2RlOiAnYnlvYicgfSk7CisKKyAgcmV0dXJu
IHJlYWRlci5yZWFkKG5ldyBVaW50MzJBcnJheSgxKSkudGhlbihyZXN1bHQgPT4geworICAgIGFz
c2VydF9lcXVhbHMocmVzdWx0LmRvbmUsIGZhbHNlKTsKKworICAgIGNvbnN0IHZpZXcgPSByZXN1
bHQudmFsdWU7CisgICAgYXNzZXJ0X2VxdWFscyh2aWV3LmJ5dGVPZmZzZXQsIDApOworICAgIGFz
c2VydF9lcXVhbHModmlldy5ieXRlTGVuZ3RoLCA0KTsKKyAgICBhc3NlcnRfZXF1YWxzKHZpZXdb
MF0sIDB4MDEwMTAxMDEpOworCisgICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDEsICdwdWxs
KCkgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIG9uY2UnKTsKKworICAgIGZvciAobGV0IGkgPSAwOyBp
IDwgNDsgKytpKSB7CisgICAgICBhc3NlcnRfZXF1YWxzKHZpZXdJbmZvc1tpXS5jb25zdHJ1Y3Rv
ciwgVWludDhBcnJheSwgJ3ZpZXcuY29uc3RydWN0b3Igc2hvdWxkIGJlIFVpbnQ4QXJyYXknKTsK
KyAgICAgIGFzc2VydF9lcXVhbHModmlld0luZm9zW2ldLmJ1ZmZlckJ5dGVMZW5ndGgsIDQsICd2
aWV3LmJ1ZmZlci5ieXRlTGVuZ3RoIHNob3VsZCBiZSA0Jyk7CisKKyAgICAgIGFzc2VydF9lcXVh
bHModmlld0luZm9zW2ldLmJ5dGVPZmZzZXQsIGksICd2aWV3LmJ5dGVPZmZzZXQgc2hvdWxkIGJl
IGknKTsKKyAgICAgIGFzc2VydF9lcXVhbHModmlld0luZm9zW2ldLmJ5dGVMZW5ndGgsIDQgLSBp
LCAndmlldy5ieXRlTGVuZ3RoIHNob3VsZCBiZSA0IC0gaScpOworICAgIH0KKyAgfSk7Cit9LCAn
UmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogcmVhZCh2aWV3KSB3aXRoIFVpbnQzMkFy
cmF5LCB0aGVuIGZpbGwgaXQgYnkgbXVsdGlwbGUgcmVzcG9uZCgpIGNhbGxzJyk7CisKK3Byb21p
c2VfdGVzdCgoKSA9PiB7CisgIGxldCBwdWxsQ291bnQgPSAwOworCisgIGxldCBjb250cm9sbGVy
OworICBsZXQgYnlvYlJlcXVlc3Q7CisKKyAgY29uc3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxlU3Ry
ZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjb250cm9sbGVyID0gYzsKKyAgICB9LAorICAg
IHB1bGwoKSB7CisgICAgICBieW9iUmVxdWVzdCA9IGNvbnRyb2xsZXIuYnlvYlJlcXVlc3Q7CisK
KyAgICAgICsrcHVsbENvdW50OworICAgIH0sCisgICAgdHlwZTogJ2J5dGVzJworICB9KTsKKwor
ICBjb25zdCByZWFkZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKCk7CisKKyAgY29uc3QgcDAgPSByZWFk
ZXIucmVhZCgpLnRoZW4ocmVzdWx0ID0+IHsKKyAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwg
MSk7CisKKyAgICBjb250cm9sbGVyLmVucXVldWUobmV3IFVpbnQ4QXJyYXkoMikpOworCisgICAg
Ly8gU2luY2UgdGhlIHF1ZXVlIGhhcyBkYXRhIG5vIGxlc3MgdGhhbiBIV00sIG5vIG1vcmUgcHVs
bC4KKyAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMSk7CisKKyAgICBhc3NlcnRfZXF1YWxz
KHJlc3VsdC5kb25lLCBmYWxzZSk7CisKKyAgICBjb25zdCB2aWV3ID0gcmVzdWx0LnZhbHVlOwor
ICAgIGFzc2VydF9lcXVhbHModmlldy5jb25zdHJ1Y3RvciwgVWludDhBcnJheSk7CisgICAgYXNz
ZXJ0X2VxdWFscyh2aWV3LmJ1ZmZlci5ieXRlTGVuZ3RoLCAxKTsKKyAgICBhc3NlcnRfZXF1YWxz
KHZpZXcuYnl0ZU9mZnNldCwgMCk7CisgICAgYXNzZXJ0X2VxdWFscyh2aWV3LmJ5dGVMZW5ndGgs
IDEpOworICB9KTsKKworICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMCwgJ05vIHB1bGwgc2hv
dWxkIGhhdmUgYmVlbiBtYWRlIHNpbmNlIHRoZSBzdGFydFByb21pc2UgaGFzIG5vdCB5ZXQgYmVl
biBoYW5kbGVkJyk7CisKKyAgY29uc3QgcDEgPSByZWFkZXIucmVhZCgpLnRoZW4ocmVzdWx0ID0+
IHsKKyAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMSk7CisKKyAgICBhc3NlcnRfZXF1YWxz
KHJlc3VsdC5kb25lLCBmYWxzZSk7CisKKyAgICBjb25zdCB2aWV3ID0gcmVzdWx0LnZhbHVlOwor
ICAgIGFzc2VydF9lcXVhbHModmlldy5jb25zdHJ1Y3RvciwgVWludDhBcnJheSk7CisgICAgYXNz
ZXJ0X2VxdWFscyh2aWV3LmJ1ZmZlci5ieXRlTGVuZ3RoLCAyKTsKKyAgICBhc3NlcnRfZXF1YWxz
KHZpZXcuYnl0ZU9mZnNldCwgMCk7CisgICAgYXNzZXJ0X2VxdWFscyh2aWV3LmJ5dGVMZW5ndGgs
IDIpOworCisgICAgYXNzZXJ0X2VxdWFscyhieW9iUmVxdWVzdCwgbnVsbCwgJ2J5b2JSZXF1ZXN0
IG11c3QgYmUgbnVsbCcpOworICB9KTsKKworICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMCwg
J05vIHB1bGwgc2hvdWxkIGhhdmUgYmVlbiBtYWRlIHNpbmNlIHRoZSBzdGFydFByb21pc2UgaGFz
IG5vdCB5ZXQgYmVlbiBoYW5kbGVkJyk7CisKKyAgY29udHJvbGxlci5lbnF1ZXVlKG5ldyBVaW50
OEFycmF5KDEpKTsKKworICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMCwgJ05vIHB1bGwgc2hv
dWxkIGhhdmUgYmVlbiBtYWRlIHNpbmNlIHRoZSBzdGFydFByb21pc2UgaGFzIG5vdCB5ZXQgYmVl
biBoYW5kbGVkJyk7CisKKyAgcmV0dXJuIFByb21pc2UuYWxsKFtwMCwgcDFdKTsKK30sICdSZWFk
YWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiByZWFkKCkgdHdpY2UsIHRoZW4gZW5xdWV1ZSgp
IHR3aWNlJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgbGV0IGNvbnRyb2xsZXI7CisKKyAg
Y29uc3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAg
ICBjb250cm9sbGVyID0gYzsKKyAgICB9LAorICAgIHB1bGw6IHQudW5yZWFjaGVkX2Z1bmMoJ3B1
bGwoKSBzaG91bGQgbm90IGJlIGNhbGxlZCcpLAorICAgIHR5cGU6ICdieXRlcycKKyAgfSk7CisK
KyAgY29uc3QgcmVhZGVyID0gc3RyZWFtLmdldFJlYWRlcih7IG1vZGU6ICdieW9iJyB9KTsKKwor
ICBjb25zdCBwMCA9IHJlYWRlci5yZWFkKG5ldyBVaW50OEFycmF5KDE2KSkudGhlbihyZXN1bHQg
PT4geworICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LmRvbmUsIHRydWUsICcxc3QgcmVhZDogZG9u
ZScpOworCisgICAgY29uc3QgdmlldyA9IHJlc3VsdC52YWx1ZTsKKyAgICBhc3NlcnRfZXF1YWxz
KHZpZXcuYnVmZmVyLmJ5dGVMZW5ndGgsIDE2LCAnMXN0IHJlYWQ6IGJ1ZmZlci5ieXRlTGVuZ3Ro
Jyk7CisgICAgYXNzZXJ0X2VxdWFscyh2aWV3LmJ5dGVPZmZzZXQsIDAsICcxc3QgcmVhZDogYnl0
ZU9mZnNldCcpOworICAgIGFzc2VydF9lcXVhbHModmlldy5ieXRlTGVuZ3RoLCAwLCAnMXN0IHJl
YWQ6IGJ5dGVMZW5ndGgnKTsKKyAgfSk7CisKKyAgY29uc3QgcDEgPSByZWFkZXIucmVhZChuZXcg
VWludDhBcnJheSgzMikpLnRoZW4ocmVzdWx0ID0+IHsKKyAgICBhc3NlcnRfZXF1YWxzKHJlc3Vs
dC5kb25lLCB0cnVlLCAnMm5kIHJlYWQ6IGRvbmUnKTsKKworICAgIGNvbnN0IHZpZXcgPSByZXN1
bHQudmFsdWU7CisgICAgYXNzZXJ0X2VxdWFscyh2aWV3LmJ1ZmZlci5ieXRlTGVuZ3RoLCAzMiwg
JzJuZCByZWFkOiBidWZmZXIuYnl0ZUxlbmd0aCcpOworICAgIGFzc2VydF9lcXVhbHModmlldy5i
eXRlT2Zmc2V0LCAwLCAnMm5kIHJlYWQ6IGJ5dGVPZmZzZXQnKTsKKyAgICBhc3NlcnRfZXF1YWxz
KHZpZXcuYnl0ZUxlbmd0aCwgMCwgJzJuZCByZWFkOiBieXRlTGVuZ3RoJyk7CisgIH0pOworCisg
IGNvbnRyb2xsZXIuY2xvc2UoKTsKKyAgY29udHJvbGxlci5ieW9iUmVxdWVzdC5yZXNwb25kKDAp
OworCisgIHJldHVybiBQcm9taXNlLmFsbChbcDAsIHAxXSk7Cit9LCAnUmVhZGFibGVTdHJlYW0g
d2l0aCBieXRlIHNvdXJjZTogTXVsdGlwbGUgcmVhZCh2aWV3KSwgY2xvc2UoKSBhbmQgcmVzcG9u
ZCgpJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgbGV0IGNvbnRyb2xsZXI7CisKKyAgY29u
c3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBj
b250cm9sbGVyID0gYzsKKyAgICB9LAorICAgIHB1bGw6IHQudW5yZWFjaGVkX2Z1bmMoJ3B1bGwo
KSBzaG91bGQgbm90IGJlIGNhbGxlZCcpLAorICAgIHR5cGU6ICdieXRlcycKKyAgfSk7CisKKyAg
Y29uc3QgcmVhZGVyID0gc3RyZWFtLmdldFJlYWRlcih7IG1vZGU6ICdieW9iJyB9KTsKKworICBj
b25zdCBwMCA9IHJlYWRlci5yZWFkKG5ldyBVaW50OEFycmF5KDE2KSkudGhlbihyZXN1bHQgPT4g
eworICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LmRvbmUsIGZhbHNlLCAnMXN0IHJlYWQ6IGRvbmUn
KTsKKworICAgIGNvbnN0IHZpZXcgPSByZXN1bHQudmFsdWU7CisgICAgYXNzZXJ0X2VxdWFscyh2
aWV3LmJ1ZmZlci5ieXRlTGVuZ3RoLCAxNiwgJzFzdCByZWFkOiBidWZmZXIuYnl0ZUxlbmd0aCcp
OworICAgIGFzc2VydF9lcXVhbHModmlldy5ieXRlT2Zmc2V0LCAwLCAnMXN0IHJlYWQ6IGJ5dGVP
ZmZzZXQnKTsKKyAgICBhc3NlcnRfZXF1YWxzKHZpZXcuYnl0ZUxlbmd0aCwgMTYsICcxc3QgcmVh
ZDogYnl0ZUxlbmd0aCcpOworICB9KTsKKworICBjb25zdCBwMSA9IHJlYWRlci5yZWFkKG5ldyBV
aW50OEFycmF5KDE2KSkudGhlbihyZXN1bHQgPT4geworICAgIGFzc2VydF9lcXVhbHMocmVzdWx0
LmRvbmUsIGZhbHNlLCAnMm5kIHJlYWQ6IGRvbmUnKTsKKworICAgIGNvbnN0IHZpZXcgPSByZXN1
bHQudmFsdWU7CisgICAgYXNzZXJ0X2VxdWFscyh2aWV3LmJ1ZmZlci5ieXRlTGVuZ3RoLCAxNiwg
JzJuZCByZWFkOiBidWZmZXIuYnl0ZUxlbmd0aCcpOworICAgIGFzc2VydF9lcXVhbHModmlldy5i
eXRlT2Zmc2V0LCAwLCAnMm5kIHJlYWQ6IGJ5dGVPZmZzZXQnKTsKKyAgICBhc3NlcnRfZXF1YWxz
KHZpZXcuYnl0ZUxlbmd0aCwgOCwgJzJuZCByZWFkOiBieXRlTGVuZ3RoJyk7CisgIH0pOworCisg
IGNvbnRyb2xsZXIuZW5xdWV1ZShuZXcgVWludDhBcnJheSgyNCkpOworCisgIHJldHVybiBQcm9t
aXNlLmFsbChbcDAsIHAxXSk7Cit9LCAnUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTog
TXVsdGlwbGUgcmVhZCh2aWV3KSwgYmlnIGVucXVldWUoKScpOworCitwcm9taXNlX3Rlc3QodCA9
PiB7CisgIGxldCBjb250cm9sbGVyOworCisgIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0
cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgY29udHJvbGxlciA9IGM7CisgICAgfSwKKyAg
ICBwdWxsOiB0LnVucmVhY2hlZF9mdW5jKCdwdWxsKCkgc2hvdWxkIG5vdCBiZSBjYWxsZWQnKSwK
KyAgICB0eXBlOiAnYnl0ZXMnCisgIH0pOworCisgIGNvbnN0IHJlYWRlciA9IHN0cmVhbS5nZXRS
ZWFkZXIoeyBtb2RlOiAnYnlvYicgfSk7CisKKyAgbGV0IGJ5dGVzUmVhZCA9IDA7CisKKyAgZnVu
Y3Rpb24gcHVtcCgpIHsKKyAgICByZXR1cm4gcmVhZGVyLnJlYWQobmV3IFVpbnQ4QXJyYXkoNykp
LnRoZW4ocmVzdWx0ID0+IHsKKyAgICAgIGlmIChyZXN1bHQuZG9uZSkgeworICAgICAgICBhc3Nl
cnRfZXF1YWxzKGJ5dGVzUmVhZCwgMTAyNCk7CisgICAgICAgIHJldHVybiB1bmRlZmluZWQ7Cisg
ICAgICB9CisKKyAgICAgIGJ5dGVzUmVhZCArPSByZXN1bHQudmFsdWUuYnl0ZUxlbmd0aDsKKwor
ICAgICAgcmV0dXJuIHB1bXAoKTsKKyAgICB9KTsKKyAgfQorICBjb25zdCBwcm9taXNlID0gcHVt
cCgpOworCisgIGNvbnRyb2xsZXIuZW5xdWV1ZShuZXcgVWludDhBcnJheSg1MTIpKTsKKyAgY29u
dHJvbGxlci5lbnF1ZXVlKG5ldyBVaW50OEFycmF5KDUxMikpOworICBjb250cm9sbGVyLmNsb3Nl
KCk7CisKKyAgcmV0dXJuIHByb21pc2U7Cit9LCAnUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNv
dXJjZTogTXVsdGlwbGUgcmVhZCh2aWV3KSBhbmQgbXVsdGlwbGUgZW5xdWV1ZSgpJyk7CisKK3By
b21pc2VfdGVzdCh0ID0+IHsKKyAgbGV0IHB1bGxDYWxsZWQgPSBmYWxzZTsKKyAgY29uc3Qgc3Ry
ZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBwdWxsKGNvbnRyb2xsZXIpIHsKKyAgICAg
IHB1bGxDYWxsZWQgPSB0cnVlOworICAgIH0sCisgICAgdHlwZTogJ2J5dGVzJworICB9KTsKKwor
ICBjb25zdCByZWFkZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKHsgbW9kZTogJ2J5b2InIH0pOworCisg
IHJldHVybiBwcm9taXNlX3JlamVjdHNfanModCwgVHlwZUVycm9yLCByZWFkZXIucmVhZCgpLCAn
cmVhZCgpIG11c3QgZmFpbCcpCisgICAgICAudGhlbigoKSA9PiBhc3NlcnRfZmFsc2UocHVsbENh
bGxlZCwgJ3B1bGwoKSBtdXN0IG5vdCBoYXZlIGJlZW4gY2FsbGVkJykpOworfSwgJ1JlYWRhYmxl
U3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IHJlYWQodmlldykgd2l0aCBwYXNzaW5nIHVuZGVmaW5l
ZCBhcyB2aWV3IG11c3QgZmFpbCcpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIGNvbnN0IHN0
cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgdHlwZTogJ2J5dGVzJworICB9KTsKKwor
ICBjb25zdCByZWFkZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKHsgbW9kZTogJ2J5b2InIH0pOworCisg
IHJldHVybiBwcm9taXNlX3JlamVjdHNfanModCwgVHlwZUVycm9yLCByZWFkZXIucmVhZCh7fSks
ICdyZWFkKHZpZXcpIG11c3QgZmFpbCcpOworfSwgJ1JlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBz
b3VyY2U6IHJlYWQodmlldykgd2l0aCBwYXNzaW5nIGFuIGVtcHR5IG9iamVjdCBhcyB2aWV3IG11
c3QgZmFpbCcpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIGNvbnN0IHN0cmVhbSA9IG5ldyBS
ZWFkYWJsZVN0cmVhbSh7CisgICAgdHlwZTogJ2J5dGVzJworICB9KTsKKworICBjb25zdCByZWFk
ZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKHsgbW9kZTogJ2J5b2InIH0pOworCisgIHJldHVybiBwcm9t
aXNlX3JlamVjdHNfanModCwgVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIHJl
YWRlci5yZWFkKHsgYnVmZmVyOiBuZXcgQXJyYXlCdWZmZXIoMTApLCBieXRlT2Zmc2V0OiAwLCBi
eXRlTGVuZ3RoOiAxMCB9KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAncmVhZCh2aWV3KSBt
dXN0IGZhaWwnKTsKK30sICdSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBFdmVuIHJl
YWQodmlldykgd2l0aCBwYXNzaW5nIEFycmF5QnVmZmVyVmlldyBsaWtlIG9iamVjdCBhcyB2aWV3
IG11c3QgZmFpbCcpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIGNvbnN0IHN0cmVhbSA9IG5l
dyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgYy5lcnJvcihlcnJvcjEp
OworICAgIH0sCisgICAgcHVsbDogdC51bnJlYWNoZWRfZnVuYygncHVsbCgpIHNob3VsZCBub3Qg
YmUgY2FsbGVkJyksCisgICAgdHlwZTogJ2J5dGVzJworICB9KTsKKworICBjb25zdCByZWFkZXIg
PSBzdHJlYW0uZ2V0UmVhZGVyKCk7CisKKyAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19leGFjdGx5
KHQsIGVycm9yMSwgcmVhZGVyLnJlYWQoKSwgJ3JlYWQoKSBtdXN0IGZhaWwnKTsKK30sICdSZWFk
YWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiByZWFkKCkgb24gYW4gZXJyb3JlZCBzdHJlYW0n
KTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBsZXQgY29udHJvbGxlcjsKKworICBjb25zdCBz
dHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGNvbnRy
b2xsZXIgPSBjOworICAgIH0sCisgICAgdHlwZTogJ2J5dGVzJworICB9KTsKKworICBjb25zdCBy
ZWFkZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKCk7CisKKyAgY29uc3QgcHJvbWlzZSA9IHByb21pc2Vf
cmVqZWN0c19leGFjdGx5KHQsIGVycm9yMSwgcmVhZGVyLnJlYWQoKSwgJ3JlYWQoKSBtdXN0IGZh
aWwnKTsKKworICBjb250cm9sbGVyLmVycm9yKGVycm9yMSk7CisKKyAgcmV0dXJuIHByb21pc2U7
Cit9LCAnUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogcmVhZCgpLCB0aGVuIGVycm9y
KCknKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBjb25zdCBzdHJlYW0gPSBuZXcgUmVhZGFi
bGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGMuZXJyb3IoZXJyb3IxKTsKKyAgICB9
LAorICAgIHB1bGw6IHQudW5yZWFjaGVkX2Z1bmMoJ3B1bGwoKSBzaG91bGQgbm90IGJlIGNhbGxl
ZCcpLAorICAgIHR5cGU6ICdieXRlcycKKyAgfSk7CisKKyAgY29uc3QgcmVhZGVyID0gc3RyZWFt
LmdldFJlYWRlcih7IG1vZGU6ICdieW9iJyB9KTsKKworICByZXR1cm4gcHJvbWlzZV9yZWplY3Rz
X2V4YWN0bHkodCwgZXJyb3IxLCByZWFkZXIucmVhZChuZXcgVWludDhBcnJheSgxKSksICdyZWFk
KCkgbXVzdCBmYWlsJyk7Cit9LCAnUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogcmVh
ZCh2aWV3KSBvbiBhbiBlcnJvcmVkIHN0cmVhbScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7Cisg
IGxldCBjb250cm9sbGVyOworCisgIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7
CisgICAgc3RhcnQoYykgeworICAgICAgY29udHJvbGxlciA9IGM7CisgICAgfSwKKyAgICB0eXBl
OiAnYnl0ZXMnCisgIH0pOworCisgIGNvbnN0IHJlYWRlciA9IHN0cmVhbS5nZXRSZWFkZXIoeyBt
b2RlOiAnYnlvYicgfSk7CisKKyAgY29uc3QgcHJvbWlzZSA9IHByb21pc2VfcmVqZWN0c19leGFj
dGx5KHQsIGVycm9yMSwgcmVhZGVyLnJlYWQobmV3IFVpbnQ4QXJyYXkoMSkpLCAncmVhZCgpIG11
c3QgZmFpbCcpOworCisgIGNvbnRyb2xsZXIuZXJyb3IoZXJyb3IxKTsKKworICByZXR1cm4gcHJv
bWlzZTsKK30sICdSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiByZWFkKHZpZXcpLCB0
aGVuIGVycm9yKCknKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBsZXQgY29udHJvbGxlcjsK
KyAgbGV0IGJ5b2JSZXF1ZXN0OworCisgIGNvbnN0IHRlc3RFcnJvciA9IG5ldyBUeXBlRXJyb3Io
J2ZvbycpOworCisgIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3Rh
cnQoYykgeworICAgICAgY29udHJvbGxlciA9IGM7CisgICAgfSwKKyAgICBwdWxsKCkgeworICAg
ICAgYnlvYlJlcXVlc3QgPSBjb250cm9sbGVyLmJ5b2JSZXF1ZXN0OworICAgICAgdGhyb3cgdGVz
dEVycm9yOworICAgIH0sCisgICAgdHlwZTogJ2J5dGVzJworICB9KTsKKworICBjb25zdCByZWFk
ZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKCk7CisKKyAgY29uc3QgcHJvbWlzZSA9IHByb21pc2VfcmVq
ZWN0c19leGFjdGx5KHQsIHRlc3RFcnJvciwgcmVhZGVyLnJlYWQoKSwgJ3JlYWQoKSBtdXN0IGZh
aWwnKTsKKyAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIHRlc3RFcnJvciwgcHJv
bWlzZS50aGVuKCgpID0+IHJlYWRlci5jbG9zZWQpKQorICAgICAgLnRoZW4oKCkgPT4gYXNzZXJ0
X2VxdWFscyhieW9iUmVxdWVzdCwgbnVsbCwgJ2J5b2JSZXF1ZXN0IG11c3QgYmUgbnVsbCcpKTsK
K30sICdSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBUaHJvd2luZyBpbiBwdWxsIGZ1
bmN0aW9uIG11c3QgZXJyb3IgdGhlIHN0cmVhbScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7Cisg
IGxldCBieW9iUmVxdWVzdDsKKworICBjb25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0o
eworICAgIHB1bGwoY29udHJvbGxlcikgeworICAgICAgYnlvYlJlcXVlc3QgPSBjb250cm9sbGVy
LmJ5b2JSZXF1ZXN0OworICAgICAgY29udHJvbGxlci5lcnJvcihlcnJvcjEpOworICAgICAgdGhy
b3cgbmV3IFR5cGVFcnJvcignZm9vJyk7CisgICAgfSwKKyAgICB0eXBlOiAnYnl0ZXMnCisgIH0p
OworCisgIGNvbnN0IHJlYWRlciA9IHN0cmVhbS5nZXRSZWFkZXIoKTsKKworICByZXR1cm4gcHJv
bWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCByZWFkZXIucmVhZCgpLCAncmVhZCgpIG11
c3QgZmFpbCcpCisgICAgICAudGhlbigoKSA9PiBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBl
cnJvcjEsIHJlYWRlci5jbG9zZWQsICdjbG9zZWQgbXVzdCBmYWlsJykpCisgICAgICAudGhlbigo
KSA9PiBhc3NlcnRfZXF1YWxzKGJ5b2JSZXF1ZXN0LCBudWxsLCAnYnlvYlJlcXVlc3QgbXVzdCBi
ZSBudWxsJykpOworfSwgJ1JlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IFRocm93aW5n
IGluIHB1bGwgaW4gcmVzcG9uc2UgdG8gcmVhZCgpIG11c3QgYmUgaWdub3JlZCBpZiB0aGUgc3Ry
ZWFtIGlzICcgKworICAgJ2Vycm9yZWQgaW4gaXQnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4gewor
ICBsZXQgYnlvYlJlcXVlc3Q7CisKKyAgY29uc3QgdGVzdEVycm9yID0gbmV3IFR5cGVFcnJvcign
Zm9vJyk7CisKKyAgY29uc3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBwdWxs
KGNvbnRyb2xsZXIpIHsKKyAgICAgIGJ5b2JSZXF1ZXN0ID0gY29udHJvbGxlci5ieW9iUmVxdWVz
dDsKKyAgICAgIHRocm93IHRlc3RFcnJvcjsKKyAgICB9LAorICAgIHR5cGU6ICdieXRlcycKKyAg
fSk7CisKKyAgY29uc3QgcmVhZGVyID0gc3RyZWFtLmdldFJlYWRlcih7IG1vZGU6ICdieW9iJyB9
KTsKKworICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgdGVzdEVycm9yLCByZWFk
ZXIucmVhZChuZXcgVWludDhBcnJheSgxKSksICdyZWFkKHZpZXcpIG11c3QgZmFpbCcpCisgICAg
ICAudGhlbigoKSA9PiBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCB0ZXN0RXJyb3IsIHJlYWRl
ci5jbG9zZWQsICdyZWFkZXIuY2xvc2VkIG11c3QgcmVqZWN0JykpCisgICAgICAudGhlbigoKSA9
PiBhc3NlcnRfbm90X2VxdWFscyhieW9iUmVxdWVzdCwgbnVsbCwgJ2J5b2JSZXF1ZXN0IG11c3Qg
bm90IGJlIG51bGwnKSk7Cit9LCAnUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogVGhy
b3dpbmcgaW4gcHVsbCBpbiByZXNwb25zZSB0byByZWFkKHZpZXcpIGZ1bmN0aW9uIG11c3QgZXJy
b3IgdGhlIHN0cmVhbScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIGxldCBieW9iUmVxdWVz
dDsKKworICBjb25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHB1bGwoY29u
dHJvbGxlcikgeworICAgICAgYnlvYlJlcXVlc3QgPSBjb250cm9sbGVyLmJ5b2JSZXF1ZXN0Owor
ICAgICAgY29udHJvbGxlci5lcnJvcihlcnJvcjEpOworICAgICAgdGhyb3cgbmV3IFR5cGVFcnJv
cignZm9vJyk7CisgICAgfSwKKyAgICB0eXBlOiAnYnl0ZXMnCisgIH0pOworCisgIGNvbnN0IHJl
YWRlciA9IHN0cmVhbS5nZXRSZWFkZXIoeyBtb2RlOiAnYnlvYicgfSk7CisKKyAgcmV0dXJuIHBy
b21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMSwgcmVhZGVyLnJlYWQobmV3IFVpbnQ4QXJy
YXkoMSkpLCAncmVhZCh2aWV3KSBtdXN0IGZhaWwnKQorICAgICAgLnRoZW4oKCkgPT4gcHJvbWlz
ZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCByZWFkZXIuY2xvc2VkLCAnY2xvc2VkIG11c3Qg
ZmFpbCcpKQorICAgICAgLnRoZW4oKCkgPT4gYXNzZXJ0X25vdF9lcXVhbHMoYnlvYlJlcXVlc3Qs
IG51bGwsICdieW9iUmVxdWVzdCBtdXN0IG5vdCBiZSBudWxsJykpOworfSwgJ1JlYWRhYmxlU3Ry
ZWFtIHdpdGggYnl0ZSBzb3VyY2U6IFRocm93aW5nIGluIHB1bGwgaW4gcmVzcG9uc2UgdG8gcmVh
ZCh2aWV3KSBtdXN0IGJlIGlnbm9yZWQgaWYgdGhlIHN0cmVhbSBpcyAnICsKKyAgICdlcnJvcmVk
IGluIGl0Jyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisgIGxldCBieW9iUmVxdWVzdDsKKyAg
Y29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHB1bGwoY29udHJvbGxlcikgewor
ICAgICAgYnlvYlJlcXVlc3QgPSBjb250cm9sbGVyLmJ5b2JSZXF1ZXN0OworICAgICAgYnlvYlJl
cXVlc3QucmVzcG9uZCg0KTsKKyAgICB9LAorICAgIHR5cGU6ICdieXRlcycKKyAgfSk7CisgIGNv
bnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcih7IG1vZGU6ICdieW9iJyB9KTsKKyAgY29uc3Qgdmll
dyA9IG5ldyBVaW50OEFycmF5KDE2KTsKKyAgcmV0dXJuIHJlYWRlci5yZWFkKHZpZXcpLnRoZW4o
KCkgPT4geworICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiBieW9iUmVxdWVz
dC5yZXNwb25kKDQpLCAncmVzcG9uZCgpIHNob3VsZCB0aHJvdyBhIFR5cGVFcnJvcicpOworICB9
KTsKK30sICdjYWxsaW5nIHJlc3BvbmQoKSB0d2ljZSBvbiB0aGUgc2FtZSBieW9iUmVxdWVzdCBz
aG91bGQgdGhyb3cnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgbGV0IGJ5b2JSZXF1ZXN0
OworICBjb25zdCBuZXdWaWV3ID0gKCkgPT4gbmV3IFVpbnQ4QXJyYXkoMTYpOworICBjb25zdCBy
cyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgcHVsbChjb250cm9sbGVyKSB7CisgICAgICBi
eW9iUmVxdWVzdCA9IGNvbnRyb2xsZXIuYnlvYlJlcXVlc3Q7CisgICAgICBieW9iUmVxdWVzdC5y
ZXNwb25kV2l0aE5ld1ZpZXcobmV3VmlldygpKTsKKyAgICB9LAorICAgIHR5cGU6ICdieXRlcycK
KyAgfSk7CisgIGNvbnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcih7IG1vZGU6ICdieW9iJyB9KTsK
KyAgcmV0dXJuIHJlYWRlci5yZWFkKG5ld1ZpZXcoKSkudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0
X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IGJ5b2JSZXF1ZXN0LnJlc3BvbmRXaXRoTmV3Vmll
dyhuZXdWaWV3KCkpLAorICAgICAgICAgICAgICAgICAgICAgJ3Jlc3BvbmRXaXRoTmV3Vmlldygp
IHNob3VsZCB0aHJvdyBhIFR5cGVFcnJvcicpOworICB9KTsKK30sICdjYWxsaW5nIHJlc3BvbmRX
aXRoTmV3VmlldygpIHR3aWNlIG9uIHRoZSBzYW1lIGJ5b2JSZXF1ZXN0IHNob3VsZCB0aHJvdycp
OworCitwcm9taXNlX3Rlc3QoKCkgPT4geworICBsZXQgYnlvYlJlcXVlc3Q7CisgIGxldCByZXNv
bHZlUHVsbENhbGxlZFByb21pc2U7CisgIGNvbnN0IHB1bGxDYWxsZWRQcm9taXNlID0gbmV3IFBy
b21pc2UocmVzb2x2ZSA9PiB7CisgICAgcmVzb2x2ZVB1bGxDYWxsZWRQcm9taXNlID0gcmVzb2x2
ZTsKKyAgfSk7CisgIGxldCByZXNvbHZlUHVsbDsKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVT
dHJlYW0oeworICAgIHB1bGwoY29udHJvbGxlcikgeworICAgICAgYnlvYlJlcXVlc3QgPSBjb250
cm9sbGVyLmJ5b2JSZXF1ZXN0OworICAgICAgcmVzb2x2ZVB1bGxDYWxsZWRQcm9taXNlKCk7Cisg
ICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7CisgICAgICAgIHJlc29sdmVQdWxs
ID0gcmVzb2x2ZTsKKyAgICAgIH0pOworICAgIH0sCisgICAgdHlwZTogJ2J5dGVzJworICB9KTsK
KyAgY29uc3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKHsgbW9kZTogJ2J5b2InIH0pOworICBjb25z
dCByZWFkUHJvbWlzZSA9IHJlYWRlci5yZWFkKG5ldyBVaW50OEFycmF5KDE2KSk7CisgIHJldHVy
biBwdWxsQ2FsbGVkUHJvbWlzZS50aGVuKCgpID0+IHsKKyAgICBjb25zdCBjYW5jZWxQcm9taXNl
ID0gcmVhZGVyLmNhbmNlbCgnbWVoJyk7CisgICAgcmVzb2x2ZVB1bGwoKTsKKyAgICBieW9iUmVx
dWVzdC5yZXNwb25kKDApOworICAgIHJldHVybiBQcm9taXNlLmFsbChbcmVhZFByb21pc2UsIGNh
bmNlbFByb21pc2VdKS50aGVuKCgpID0+IHsKKyAgICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVy
cm9yLCAoKSA9PiBieW9iUmVxdWVzdC5yZXNwb25kKDApLCAncmVzcG9uZCgpIHNob3VsZCB0aHJv
dycpOworICAgIH0pOworICB9KTsKK30sICdjYWxsaW5nIHJlc3BvbmQoMCkgdHdpY2Ugb24gdGhl
IHNhbWUgYnlvYlJlcXVlc3Qgc2hvdWxkIHRocm93IGV2ZW4gd2hlbiBjbG9zZWQnKTsKKworcHJv
bWlzZV90ZXN0KCgpID0+IHsKKyAgbGV0IHJlc29sdmVQdWxsQ2FsbGVkUHJvbWlzZTsKKyAgY29u
c3QgcHVsbENhbGxlZFByb21pc2UgPSBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKKyAgICByZXNv
bHZlUHVsbENhbGxlZFByb21pc2UgPSByZXNvbHZlOworICB9KTsKKyAgbGV0IHJlc29sdmVQdWxs
OworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgcHVsbCgpIHsKKyAgICAg
IHJlc29sdmVQdWxsQ2FsbGVkUHJvbWlzZSgpOworICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJl
c29sdmUgPT4geworICAgICAgICByZXNvbHZlUHVsbCA9IHJlc29sdmU7CisgICAgICB9KTsKKyAg
ICB9LAorICAgIHR5cGU6ICdieXRlcycKKyAgfSk7CisgIGNvbnN0IHJlYWRlciA9IHJzLmdldFJl
YWRlcih7IG1vZGU6ICdieW9iJyB9KTsKKyAgcmVhZGVyLnJlYWQobmV3IFVpbnQ4QXJyYXkoMTYp
KTsKKyAgcmV0dXJuIHB1bGxDYWxsZWRQcm9taXNlLnRoZW4oKCkgPT4geworICAgIHJlc29sdmVQ
dWxsKCk7CisgICAgcmV0dXJuIGRlbGF5KDApLnRoZW4oKCkgPT4geworICAgICAgYXNzZXJ0X3Ro
cm93c19qcyhUeXBlRXJyb3IsICgpID0+IHJlYWRlci5yZWxlYXNlTG9jaygpLCAncmVsZWFzZUxv
Y2soKSBzaG91bGQgdGhyb3cnKTsKKyAgICB9KTsKKyAgfSk7Cit9LCAncHVsbCgpIHJlc29sdmlu
ZyBzaG91bGQgbm90IG1ha2UgcmVsZWFzZUxvY2soKSBwb3NzaWJsZScpOworCitwcm9taXNlX3Rl
c3QoKCkgPT4geworICAvLyBUZXN0cyBodHRwczovL2dpdGh1Yi5jb20vd2hhdHdnL3N0cmVhbXMv
aXNzdWVzLzY4NgorCisgIGxldCBjb250cm9sbGVyOworICBjb25zdCBycyA9IG5ldyBSZWFkYWJs
ZVN0cmVhbSh7CisgICAgYXV0b0FsbG9jYXRlQ2h1bmtTaXplOiAxMjgsCisgICAgc3RhcnQoYykg
eworICAgICAgY29udHJvbGxlciA9IGM7CisgICAgfSwKKyAgICB0eXBlOiAnYnl0ZXMnCisgIH0p
OworCisgIGNvbnN0IHJlYWRQcm9taXNlID0gcnMuZ2V0UmVhZGVyKCkucmVhZCgpOworCisgIGNv
bnN0IGJyID0gY29udHJvbGxlci5ieW9iUmVxdWVzdDsKKyAgY29udHJvbGxlci5jbG9zZSgpOwor
CisgIGJyLnJlc3BvbmQoMCk7CisKKyAgcmV0dXJuIHJlYWRQcm9taXNlOworfSwgJ1JlYWRhYmxl
U3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IGRlZmF1bHQgcmVhZGVyICsgYXV0b0FsbG9jYXRlQ2h1
bmtTaXplICsgYnlvYlJlcXVlc3QgaW50ZXJhY3Rpb24nKTsKKwordGVzdCgoKSA9PiB7CisgIGNv
bnN0IFJlYWRhYmxlU3RyZWFtQllPQlJlYWRlciA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7IHR5cGU6
ICdieXRlcycgfSkuZ2V0UmVhZGVyKHsgbW9kZTogJ2J5b2InIH0pLmNvbnN0cnVjdG9yOworICBj
b25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oeyB0eXBlOiAnYnl0ZXMnIH0pOworICBu
ZXcgUmVhZGFibGVTdHJlYW1CWU9CUmVhZGVyKHN0cmVhbSk7Cit9LCAnUmVhZGFibGVTdHJlYW1C
WU9CUmVhZGVyIGNhbiBiZSBjb25zdHJ1Y3RlZCBkaXJlY3RseScpOworCit0ZXN0KCgpID0+IHsK
KyAgY29uc3QgUmVhZGFibGVTdHJlYW1CWU9CUmVhZGVyID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsg
dHlwZTogJ2J5dGVzJyB9KS5nZXRSZWFkZXIoeyBtb2RlOiAnYnlvYicgfSkuY29uc3RydWN0b3I7
CisgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiBuZXcgUmVhZGFibGVTdHJlYW1C
WU9CUmVhZGVyKHt9KSwgJ2NvbnN0cnVjdG9yIG11c3QgdGhyb3cnKTsKK30sICdSZWFkYWJsZVN0
cmVhbUJZT0JSZWFkZXIgY29uc3RydWN0b3IgcmVxdWlyZXMgYSBSZWFkYWJsZVN0cmVhbSBhcmd1
bWVudCcpOworCit0ZXN0KCgpID0+IHsKKyAgY29uc3QgUmVhZGFibGVTdHJlYW1CWU9CUmVhZGVy
ID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsgdHlwZTogJ2J5dGVzJyB9KS5nZXRSZWFkZXIoeyBtb2Rl
OiAnYnlvYicgfSkuY29uc3RydWN0b3I7CisgIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0
cmVhbSh7IHR5cGU6ICdieXRlcycgfSk7CisgIHN0cmVhbS5nZXRSZWFkZXIoKTsKKyAgYXNzZXJ0
X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IG5ldyBSZWFkYWJsZVN0cmVhbUJZT0JSZWFkZXIo
c3RyZWFtKSwgJ2NvbnN0cnVjdG9yIG11c3QgdGhyb3cnKTsKK30sICdSZWFkYWJsZVN0cmVhbUJZ
T0JSZWFkZXIgY29uc3RydWN0b3IgcmVxdWlyZXMgYW4gdW5sb2NrZWQgUmVhZGFibGVTdHJlYW0n
KTsKKwordGVzdCgoKSA9PiB7CisgIGNvbnN0IFJlYWRhYmxlU3RyZWFtQllPQlJlYWRlciA9IG5l
dyBSZWFkYWJsZVN0cmVhbSh7IHR5cGU6ICdieXRlcycgfSkuZ2V0UmVhZGVyKHsgbW9kZTogJ2J5
b2InIH0pLmNvbnN0cnVjdG9yOworICBjb25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0o
KTsKKyAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IG5ldyBSZWFkYWJsZVN0cmVh
bUJZT0JSZWFkZXIoc3RyZWFtKSwgJ2NvbnN0cnVjdG9yIG11c3QgdGhyb3cnKTsKK30sICdSZWFk
YWJsZVN0cmVhbUJZT0JSZWFkZXIgY29uc3RydWN0b3IgcmVxdWlyZXMgYSBSZWFkYWJsZVN0cmVh
bSB3aXRoIHR5cGUgImJ5dGVzIicpOworCit0ZXN0KCgpID0+IHsKKyAgYXNzZXJ0X3Rocm93c19q
cyhSYW5nZUVycm9yLCAoKSA9PiBuZXcgUmVhZGFibGVTdHJlYW0oeyB0eXBlOiAnYnl0ZXMnIH0s
IHsKKyAgICBzaXplKCkgeworICAgICAgcmV0dXJuIDE7CisgICAgfQorICB9KSwgJ2NvbnN0cnVj
dG9yIHNob3VsZCB0aHJvdyBmb3Igc2l6ZSBmdW5jdGlvbicpOworCisgIGFzc2VydF90aHJvd3Nf
anMoUmFuZ2VFcnJvciwKKyAgICAgICAgICAgICAgICAgICAoKSA9PiBuZXcgUmVhZGFibGVTdHJl
YW0oeyB0eXBlOiAnYnl0ZXMnIH0sIG5ldyBDb3VudFF1ZXVpbmdTdHJhdGVneSh7IGhpZ2hXYXRl
ck1hcms6IDEgfSkpLAorICAgICAgICAgICAgICAgICAgICdjb25zdHJ1Y3RvciBzaG91bGQgdGhy
b3cgd2hlbiBzdHJhdGVneSBpcyBDb3VudFF1ZXVpbmdTdHJhdGVneScpOworCisgIGFzc2VydF90
aHJvd3NfanMoUmFuZ2VFcnJvciwKKyAgICAgICAgICAgICAgICAgICAoKSA9PiBuZXcgUmVhZGFi
bGVTdHJlYW0oeyB0eXBlOiAnYnl0ZXMnIH0sIG5ldyBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5
KHsgaGlnaFdhdGVyTWFyazogNTEyIH0pKSwKKyAgICAgICAgICAgICAgICAgICAnY29uc3RydWN0
b3Igc2hvdWxkIHRocm93IHdoZW4gc3RyYXRlZ3kgaXMgQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVn
eScpOworCisgIGNsYXNzIEhhc1NpemVNZXRob2QgeworICAgIHNpemUoKSB7fQorIH0KKworICBh
c3NlcnRfdGhyb3dzX2pzKFJhbmdlRXJyb3IsICgpID0+IG5ldyBSZWFkYWJsZVN0cmVhbSh7IHR5
cGU6ICdieXRlcycgfSwgbmV3IEhhc1NpemVNZXRob2QoKSksCisgICAgICAgICAgICAgICAgICAg
J2NvbnN0cnVjdG9yIHNob3VsZCB0aHJvdyB3aGVuIHNpemUgb24gdGhlIHByb3RvdHlwZSBjaGFp
bicpOworfSwgJ1JlYWRhYmxlU3RyZWFtIGNvbnN0cnVjdG9yIHNob3VsZCBub3QgYWNjZXB0IGEg
c3RyYXRlZ3kgd2l0aCBhIHNpemUgZGVmaW5lZCBpZiB0eXBlIGlzICJieXRlcyInKTsKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMvZ2VuZXJhbC5hbnkud29ya2VyLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFk
YWJsZS1ieXRlLXN0cmVhbXMvZ2VuZXJhbC5hbnkud29ya2VyLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40MzliMGE1NzkwZTE2MDU2ZWE3YmJmMmMyY2RjOTA4MDM2YmYyZmI5Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJl
YW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFtcy9nZW5lcmFsLmFueS53b3JrZXItZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsODMgQEAKKworSGFybmVzcyBFcnJvciAoVElNRU9VVCksIG1lc3NhZ2UgPSBu
dWxsCisKK1BBU1MgZ2V0UmVhZGVyKHttb2RlOiAiYnlvYiJ9KSB0aHJvd3Mgb24gbm9uLWJ5dGVz
IHN0cmVhbXMgCitQQVNTIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2UgY2FuIGJlIGNv
bnN0cnVjdGVkIHdpdGggbm8gZXJyb3JzIAorUEFTUyBnZXRSZWFkZXIoe21vZGV9KSBtdXN0IHBl
cmZvcm0gVG9TdHJpbmcoKSAKK1BBU1MgUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTog
Q29uc3RydWN0IGFuZCBleHBlY3Qgc3RhcnQgYW5kIHB1bGwgYmVpbmcgY2FsbGVkIAorUEFTUyBS
ZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBObyBhdXRvbWF0aWMgcHVsbCBjYWxsIGlm
IHN0YXJ0IGRvZXNuJ3QgZmluaXNoIAorUEFTUyBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291
cmNlOiBDb25zdHJ1Y3Qgd2l0aCBoaWdoV2F0ZXJNYXJrIG9mIDAgCitQQVNTIFJlYWRhYmxlU3Ry
ZWFtIHdpdGggYnl0ZSBzb3VyY2U6IGRlc2lyZWRTaXplIHdoZW4gY2xvc2VkIAorUEFTUyBSZWFk
YWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBkZXNpcmVkU2l6ZSB3aGVuIGVycm9yZWQgCitQ
QVNTIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IGdldFJlYWRlcigpLCB0aGVuIHJl
bGVhc2VMb2NrKCkgCitQQVNTIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IGdldFJl
YWRlcigpIHdpdGggbW9kZSBzZXQgdG8gYnlvYiwgdGhlbiByZWxlYXNlTG9jaygpIAorUEFTUyBS
ZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBUZXN0IHRoYXQgY2xvc2luZyBhIHN0cmVh
bSBkb2VzIG5vdCByZWxlYXNlIGEgcmVhZGVyIGF1dG9tYXRpY2FsbHkgCitQQVNTIFJlYWRhYmxl
U3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IFRlc3QgdGhhdCBjbG9zaW5nIGEgc3RyZWFtIGRvZXMg
bm90IHJlbGVhc2UgYSBCWU9CIHJlYWRlciBhdXRvbWF0aWNhbGx5IAorUEFTUyBSZWFkYWJsZVN0
cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBUZXN0IHRoYXQgZXJyb3JpbmcgYSBzdHJlYW0gZG9lcyBu
b3QgcmVsZWFzZSBhIHJlYWRlciBhdXRvbWF0aWNhbGx5IAorUEFTUyBSZWFkYWJsZVN0cmVhbSB3
aXRoIGJ5dGUgc291cmNlOiBUZXN0IHRoYXQgZXJyb3JpbmcgYSBzdHJlYW0gZG9lcyBub3QgcmVs
ZWFzZSBhIEJZT0IgcmVhZGVyIGF1dG9tYXRpY2FsbHkgCitQQVNTIFJlYWRhYmxlU3RyZWFtIHdp
dGggYnl0ZSBzb3VyY2U6IHJlbGVhc2VMb2NrKCkgb24gUmVhZGFibGVTdHJlYW1SZWFkZXIgd2l0
aCBwZW5kaW5nIHJlYWQoKSBtdXN0IHRocm93IAorUEFTUyBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5
dGUgc291cmNlOiBBdXRvbWF0aWMgcHVsbCgpIGFmdGVyIHN0YXJ0KCkgCitQQVNTIFJlYWRhYmxl
U3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IEF1dG9tYXRpYyBwdWxsKCkgYWZ0ZXIgc3RhcnQoKSBh
bmQgcmVhZCgpIAorRkFJTCBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBhdXRvQWxs
b2NhdGVDaHVua1NpemUgYXNzZXJ0X2VxdWFsczogcHVsbCgpIG11c3QgaGF2ZSBiZWVuIGludm9r
ZWQgdHdpY2UgZXhwZWN0ZWQgMiBidXQgZ290IDEKK1BBU1MgUmVhZGFibGVTdHJlYW0gd2l0aCBi
eXRlIHNvdXJjZTogTWl4IG9mIGF1dG8gYWxsb2NhdGUgYW5kIEJZT0IgCitQQVNTIFJlYWRhYmxl
U3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IEF1dG9tYXRpYyBwdWxsKCkgYWZ0ZXIgc3RhcnQoKSBh
bmQgcmVhZCh2aWV3KSAKK1BBU1MgUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogZW5x
dWV1ZSgpLCBnZXRSZWFkZXIoKSwgdGhlbiByZWFkKCkgCitQQVNTIFJlYWRhYmxlU3RyZWFtIHdp
dGggYnl0ZSBzb3VyY2U6IFB1c2ggc291cmNlIHRoYXQgZG9lc24ndCB1bmRlcnN0YW5kIHB1bGwg
c2lnbmFsIAorRkFJTCBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBwdWxsKCkgZnVu
Y3Rpb24gaXMgbm90IGNhbGxhYmxlIGFzc2VydF90aHJvd3NfanM6IGNvbnN0cnVjdG9yIHNob3Vs
ZCB0aHJvdyBmdW5jdGlvbiAiKCkgPT4gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBwdWxsOiAn
Zm9vJywKKyAgICB0eXBlOiAnYnl0ZXMnCisgIH0pIiBkaWQgbm90IHRocm93CitQQVNTIFJlYWRh
YmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IGVucXVldWUoKSB3aXRoIFVpbnQxNkFycmF5LCBn
ZXRSZWFkZXIoKSwgdGhlbiByZWFkKCkgCitQQVNTIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBz
b3VyY2U6IGVucXVldWUoKSwgcmVhZCh2aWV3KSBwYXJ0aWFsbHksIHRoZW4gcmVhZCgpIAorUEFT
UyBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBnZXRSZWFkZXIoKSwgZW5xdWV1ZSgp
LCBjbG9zZSgpLCB0aGVuIHJlYWQoKSAKK1BBU1MgUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNv
dXJjZTogZW5xdWV1ZSgpLCBjbG9zZSgpLCBnZXRSZWFkZXIoKSwgdGhlbiByZWFkKCkgCitGQUlM
IFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IFJlc3BvbmQgdG8gcHVsbCgpIGJ5IGVu
cXVldWUoKSBhc3NlcnRfZXF1YWxzOiBieW9iUmVxdWVzdCBtdXN0IGJlIG51bGwgZXhwZWN0ZWQg
KG9iamVjdCkgbnVsbCBidXQgZ290ICh1bmRlZmluZWQpIHVuZGVmaW5lZAorRkFJTCBSZWFkYWJs
ZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBSZXNwb25kIHRvIHB1bGwoKSBieSBlbnF1ZXVlKCkg
YXN5bmNocm9ub3VzbHkgYXNzZXJ0X2VxdWFsczogYnlvYlJlcXVlc3Qgc2hvdWxkIGJlIG51bGwg
ZXhwZWN0ZWQgKG9iamVjdCkgbnVsbCBidXQgZ290ICh1bmRlZmluZWQpIHVuZGVmaW5lZAorVElN
RU9VVCBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBSZXNwb25kIHRvIG11bHRpcGxl
IHB1bGwoKSBieSBzZXBhcmF0ZSBlbnF1ZXVlKCkgVGVzdCB0aW1lZCBvdXQKK05PVFJVTiBSZWFk
YWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiByZWFkKHZpZXcpLCB0aGVuIHJlc3BvbmQoKSAK
K05PVFJVTiBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiByZWFkKHZpZXcpLCB0aGVu
IHJlc3BvbmQoKSB3aXRoIGEgdHJhbnNmZXJyZWQgQXJyYXlCdWZmZXIgCitOT1RSVU4gUmVhZGFi
bGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogcmVhZCh2aWV3KSwgdGhlbiByZXNwb25kKCkgd2l0
aCB0b28gYmlnIHZhbHVlIAorTk9UUlVOIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6
IHJlc3BvbmQoMykgdG8gcmVhZCh2aWV3KSB3aXRoIDIgZWxlbWVudCBVaW50MTZBcnJheSBlbnF1
ZXVlcyB0aGUgMSBieXRlIHJlbWFpbmRlciAKK05PVFJVTiBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5
dGUgc291cmNlOiBlbnF1ZXVlKCksIGdldFJlYWRlcigpLCB0aGVuIHJlYWQodmlldykgCitOT1RS
VU4gUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogZW5xdWV1ZSgpLCBnZXRSZWFkZXIo
KSwgdGhlbiBjYW5jZWwoKSAobW9kZSA9IG5vdCBCWU9CKSAKK05PVFJVTiBSZWFkYWJsZVN0cmVh
bSB3aXRoIGJ5dGUgc291cmNlOiBlbnF1ZXVlKCksIGdldFJlYWRlcigpLCB0aGVuIGNhbmNlbCgp
IChtb2RlID0gQllPQikgCitOT1RSVU4gUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTog
Z2V0UmVhZGVyKCksIHJlYWQodmlldyksIHRoZW4gY2FuY2VsKCkgCitOT1RSVU4gUmVhZGFibGVT
dHJlYW0gd2l0aCBieXRlIHNvdXJjZTogY2FuY2VsKCkgd2l0aCBwYXJ0aWFsbHkgZmlsbGVkIHBl
bmRpbmcgcHVsbCgpIHJlcXVlc3QgCitOT1RSVU4gUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNv
dXJjZTogZW5xdWV1ZSgpLCBnZXRSZWFkZXIoKSwgdGhlbiByZWFkKHZpZXcpIHdoZXJlIHZpZXcu
YnVmZmVyIGlzIG5vdCBmdWxseSBjb3ZlcmVkIGJ5IHZpZXcgCitOT1RSVU4gUmVhZGFibGVTdHJl
YW0gd2l0aCBieXRlIHNvdXJjZTogTXVsdGlwbGUgZW5xdWV1ZSgpLCBnZXRSZWFkZXIoKSwgdGhl
biByZWFkKHZpZXcpIAorTk9UUlVOIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IGVu
cXVldWUoKSwgZ2V0UmVhZGVyKCksIHRoZW4gcmVhZCh2aWV3KSB3aXRoIGEgYmlnZ2VyIHZpZXcg
CitOT1RSVU4gUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogZW5xdWV1ZSgpLCBnZXRS
ZWFkZXIoKSwgdGhlbiByZWFkKHZpZXcpIHdpdGggc21hbGxlciB2aWV3cyAKK05PVFJVTiBSZWFk
YWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBlbnF1ZXVlKCkgMSBieXRlLCBnZXRSZWFkZXIo
KSwgdGhlbiByZWFkKHZpZXcpIHdpdGggVWludDE2QXJyYXkgCitOT1RSVU4gUmVhZGFibGVTdHJl
YW0gd2l0aCBieXRlIHNvdXJjZTogZW5xdWV1ZSgpIDMgYnl0ZSwgZ2V0UmVhZGVyKCksIHRoZW4g
cmVhZCh2aWV3KSB3aXRoIDItZWxlbWVudCBVaW50MTZBcnJheSAKK05PVFJVTiBSZWFkYWJsZVN0
cmVhbSB3aXRoIGJ5dGUgc291cmNlOiByZWFkKHZpZXcpIHdpdGggVWludDE2QXJyYXkgb24gY2xv
c2UoKS1kIHN0cmVhbSB3aXRoIDEgYnl0ZSBlbnF1ZXVlKCktZCBtdXN0IGZhaWwgCitOT1RSVU4g
UmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogQSBzdHJlYW0gbXVzdCBiZSBlcnJvcmVk
IGlmIGNsb3NlKCktZCBiZWZvcmUgZnVsZmlsbGluZyByZWFkKHZpZXcpIHdpdGggVWludDE2QXJy
YXkgCitQQVNTIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IFRocm93IGlmIGNsb3Nl
KCktZWQgbW9yZSB0aGFuIG9uY2UgCitQQVNTIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3Vy
Y2U6IFRocm93IG9uIGVucXVldWUoKSBhZnRlciBjbG9zZSgpIAorTk9UUlVOIFJlYWRhYmxlU3Ry
ZWFtIHdpdGggYnl0ZSBzb3VyY2U6IHJlYWQodmlldyksIHRoZW4gcmVzcG9uZCgpIGFuZCBjbG9z
ZSgpIGluIHB1bGwoKSAKK05PVFJVTiBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBy
ZWFkKHZpZXcpIHdpdGggVWludDMyQXJyYXksIHRoZW4gZmlsbCBpdCBieSBtdWx0aXBsZSByZXNw
b25kKCkgY2FsbHMgCitOT1RSVU4gUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogcmVh
ZCgpIHR3aWNlLCB0aGVuIGVucXVldWUoKSB0d2ljZSAKK05PVFJVTiBSZWFkYWJsZVN0cmVhbSB3
aXRoIGJ5dGUgc291cmNlOiBNdWx0aXBsZSByZWFkKHZpZXcpLCBjbG9zZSgpIGFuZCByZXNwb25k
KCkgCitOT1RSVU4gUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogTXVsdGlwbGUgcmVh
ZCh2aWV3KSwgYmlnIGVucXVldWUoKSAKK05PVFJVTiBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUg
c291cmNlOiBNdWx0aXBsZSByZWFkKHZpZXcpIGFuZCBtdWx0aXBsZSBlbnF1ZXVlKCkgCitOT1RS
VU4gUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogcmVhZCh2aWV3KSB3aXRoIHBhc3Np
bmcgdW5kZWZpbmVkIGFzIHZpZXcgbXVzdCBmYWlsIAorTk9UUlVOIFJlYWRhYmxlU3RyZWFtIHdp
dGggYnl0ZSBzb3VyY2U6IHJlYWQodmlldykgd2l0aCBwYXNzaW5nIGFuIGVtcHR5IG9iamVjdCBh
cyB2aWV3IG11c3QgZmFpbCAKK05PVFJVTiBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNl
OiBFdmVuIHJlYWQodmlldykgd2l0aCBwYXNzaW5nIEFycmF5QnVmZmVyVmlldyBsaWtlIG9iamVj
dCBhcyB2aWV3IG11c3QgZmFpbCAKK05PVFJVTiBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291
cmNlOiByZWFkKCkgb24gYW4gZXJyb3JlZCBzdHJlYW0gCitOT1RSVU4gUmVhZGFibGVTdHJlYW0g
d2l0aCBieXRlIHNvdXJjZTogcmVhZCgpLCB0aGVuIGVycm9yKCkgCitOT1RSVU4gUmVhZGFibGVT
dHJlYW0gd2l0aCBieXRlIHNvdXJjZTogcmVhZCh2aWV3KSBvbiBhbiBlcnJvcmVkIHN0cmVhbSAK
K05PVFJVTiBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiByZWFkKHZpZXcpLCB0aGVu
IGVycm9yKCkgCitOT1RSVU4gUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogVGhyb3dp
bmcgaW4gcHVsbCBmdW5jdGlvbiBtdXN0IGVycm9yIHRoZSBzdHJlYW0gCitOT1RSVU4gUmVhZGFi
bGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogVGhyb3dpbmcgaW4gcHVsbCBpbiByZXNwb25zZSB0
byByZWFkKCkgbXVzdCBiZSBpZ25vcmVkIGlmIHRoZSBzdHJlYW0gaXMgZXJyb3JlZCBpbiBpdCAK
K05PVFJVTiBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBUaHJvd2luZyBpbiBwdWxs
IGluIHJlc3BvbnNlIHRvIHJlYWQodmlldykgZnVuY3Rpb24gbXVzdCBlcnJvciB0aGUgc3RyZWFt
IAorTk9UUlVOIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IFRocm93aW5nIGluIHB1
bGwgaW4gcmVzcG9uc2UgdG8gcmVhZCh2aWV3KSBtdXN0IGJlIGlnbm9yZWQgaWYgdGhlIHN0cmVh
bSBpcyBlcnJvcmVkIGluIGl0IAorTk9UUlVOIGNhbGxpbmcgcmVzcG9uZCgpIHR3aWNlIG9uIHRo
ZSBzYW1lIGJ5b2JSZXF1ZXN0IHNob3VsZCB0aHJvdyAKK05PVFJVTiBjYWxsaW5nIHJlc3BvbmRX
aXRoTmV3VmlldygpIHR3aWNlIG9uIHRoZSBzYW1lIGJ5b2JSZXF1ZXN0IHNob3VsZCB0aHJvdyAK
K05PVFJVTiBjYWxsaW5nIHJlc3BvbmQoMCkgdHdpY2Ugb24gdGhlIHNhbWUgYnlvYlJlcXVlc3Qg
c2hvdWxkIHRocm93IGV2ZW4gd2hlbiBjbG9zZWQgCitOT1RSVU4gcHVsbCgpIHJlc29sdmluZyBz
aG91bGQgbm90IG1ha2UgcmVsZWFzZUxvY2soKSBwb3NzaWJsZSAKK05PVFJVTiBSZWFkYWJsZVN0
cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBkZWZhdWx0IHJlYWRlciArIGF1dG9BbGxvY2F0ZUNodW5r
U2l6ZSArIGJ5b2JSZXF1ZXN0IGludGVyYWN0aW9uIAorUEFTUyBSZWFkYWJsZVN0cmVhbUJZT0JS
ZWFkZXIgY2FuIGJlIGNvbnN0cnVjdGVkIGRpcmVjdGx5IAorUEFTUyBSZWFkYWJsZVN0cmVhbUJZ
T0JSZWFkZXIgY29uc3RydWN0b3IgcmVxdWlyZXMgYSBSZWFkYWJsZVN0cmVhbSBhcmd1bWVudCAK
K1BBU1MgUmVhZGFibGVTdHJlYW1CWU9CUmVhZGVyIGNvbnN0cnVjdG9yIHJlcXVpcmVzIGFuIHVu
bG9ja2VkIFJlYWRhYmxlU3RyZWFtIAorUEFTUyBSZWFkYWJsZVN0cmVhbUJZT0JSZWFkZXIgY29u
c3RydWN0b3IgcmVxdWlyZXMgYSBSZWFkYWJsZVN0cmVhbSB3aXRoIHR5cGUgImJ5dGVzIiAKK1BB
U1MgUmVhZGFibGVTdHJlYW0gY29uc3RydWN0b3Igc2hvdWxkIG5vdCBhY2NlcHQgYSBzdHJhdGVn
eSB3aXRoIGEgc2l6ZSBkZWZpbmVkIGlmIHR5cGUgaXMgImJ5dGVzIiAKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRh
YmxlLWJ5dGUtc3RyZWFtcy9nZW5lcmFsLmFueS53b3JrZXIuaHRtbCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVh
bXMvZ2VuZXJhbC5hbnkud29ya2VyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjM4MjkxMzUyOGU2OTNiM2E1
ZDU2YzY2MGE0NTA2MDk4MGI1NDhjMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVh
bXMvZ2VuZXJhbC5hbnkud29ya2VyLmh0bWwKQEAgLTAsMCArMSBAQAorPCEtLSBUaGlzIGZpbGUg
aXMgcmVxdWlyZWQgZm9yIFdlYktpdCB0ZXN0IGluZnJhc3RydWN0dXJlIHRvIHJ1biB0aGUgdGVt
cGxhdGVkIHRlc3QgLS0+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRh
YmxlLWJ5dGUtc3RyZWFtcy9nZW5lcmFsLmRlZGljYXRlZHdvcmtlci1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFi
bGUtYnl0ZS1zdHJlYW1zL2dlbmVyYWwuZGVkaWNhdGVkd29ya2VyLWV4cGVjdGVkLnR4dApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjM5OGM3MzExMmI3ZDcxOWFkY2I1Y2M3NDI4ZmI2
YmZmYjFlYmU0Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVh
ZGFibGUtYnl0ZS1zdHJlYW1zL2dlbmVyYWwuZGVkaWNhdGVkd29ya2VyLWV4cGVjdGVkLnR4dAor
KysgL2Rldi9udWxsCkBAIC0xLDg0ICswLDAgQEAKLQotSGFybmVzcyBFcnJvciAoVElNRU9VVCks
IG1lc3NhZ2UgPSBudWxsCi0KLVBBU1MgZ2V0UmVhZGVyKHttb2RlOiAiYnlvYiJ9KSB0aHJvd3Mg
b24gbm9uLWJ5dGVzIHN0cmVhbXMgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3Vy
Y2UgY2FuIGJlIGNvbnN0cnVjdGVkIHdpdGggbm8gZXJyb3JzIAotUEFTUyBnZXRSZWFkZXIoe21v
ZGV9KSBtdXN0IHBlcmZvcm0gVG9TdHJpbmcoKSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gd2l0aCBi
eXRlIHNvdXJjZTogQ29uc3RydWN0IGFuZCBleHBlY3Qgc3RhcnQgYW5kIHB1bGwgYmVpbmcgY2Fs
bGVkIAotUEFTUyBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBObyBhdXRvbWF0aWMg
cHVsbCBjYWxsIGlmIHN0YXJ0IGRvZXNuJ3QgZmluaXNoIAotUEFTUyBSZWFkYWJsZVN0cmVhbSB3
aXRoIGJ5dGUgc291cmNlOiBDb25zdHJ1Y3Qgd2l0aCBoaWdoV2F0ZXJNYXJrIG9mIDAgCi1QQVNT
IFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IGRlc2lyZWRTaXplIHdoZW4gY2xvc2Vk
IAotUEFTUyBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBkZXNpcmVkU2l6ZSB3aGVu
IGVycm9yZWQgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IGdldFJlYWRl
cigpLCB0aGVuIHJlbGVhc2VMb2NrKCkgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBz
b3VyY2U6IGdldFJlYWRlcigpIHdpdGggbW9kZSBzZXQgdG8gYnlvYiwgdGhlbiByZWxlYXNlTG9j
aygpIAotUEFTUyBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBUZXN0IHRoYXQgY2xv
c2luZyBhIHN0cmVhbSBkb2VzIG5vdCByZWxlYXNlIGEgcmVhZGVyIGF1dG9tYXRpY2FsbHkgCi1Q
QVNTIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IFRlc3QgdGhhdCBjbG9zaW5nIGEg
c3RyZWFtIGRvZXMgbm90IHJlbGVhc2UgYSBCWU9CIHJlYWRlciBhdXRvbWF0aWNhbGx5IAotUEFT
UyBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBUZXN0IHRoYXQgZXJyb3JpbmcgYSBz
dHJlYW0gZG9lcyBub3QgcmVsZWFzZSBhIHJlYWRlciBhdXRvbWF0aWNhbGx5IAotUEFTUyBSZWFk
YWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBUZXN0IHRoYXQgZXJyb3JpbmcgYSBzdHJlYW0g
ZG9lcyBub3QgcmVsZWFzZSBhIEJZT0IgcmVhZGVyIGF1dG9tYXRpY2FsbHkgCi1QQVNTIFJlYWRh
YmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IHJlbGVhc2VMb2NrKCkgb24gUmVhZGFibGVTdHJl
YW1SZWFkZXIgd2l0aCBwZW5kaW5nIHJlYWQoKSBtdXN0IHRocm93IAotUEFTUyBSZWFkYWJsZVN0
cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBBdXRvbWF0aWMgcHVsbCgpIGFmdGVyIHN0YXJ0KCkgCi1Q
QVNTIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IEF1dG9tYXRpYyBwdWxsKCkgYWZ0
ZXIgc3RhcnQoKSBhbmQgcmVhZCgpIAotRkFJTCBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291
cmNlOiBhdXRvQWxsb2NhdGVDaHVua1NpemUgYXNzZXJ0X2VxdWFsczogcHVsbCgpIG11c3QgaGF2
ZSBiZWVuIGludm9rZWQgdHdpY2UgZXhwZWN0ZWQgMiBidXQgZ290IDEKLVBBU1MgUmVhZGFibGVT
dHJlYW0gd2l0aCBieXRlIHNvdXJjZTogTWl4IG9mIGF1dG8gYWxsb2NhdGUgYW5kIEJZT0IgCi1Q
QVNTIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IEF1dG9tYXRpYyBwdWxsKCkgYWZ0
ZXIgc3RhcnQoKSBhbmQgcmVhZCh2aWV3KSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gd2l0aCBieXRl
IHNvdXJjZTogZW5xdWV1ZSgpLCBnZXRSZWFkZXIoKSwgdGhlbiByZWFkKCkgCi1QQVNTIFJlYWRh
YmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IFB1c2ggc291cmNlIHRoYXQgZG9lc24ndCB1bmRl
cnN0YW5kIHB1bGwgc2lnbmFsIAotRkFJTCBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNl
OiBwdWxsKCkgZnVuY3Rpb24gaXMgbm90IGNhbGxhYmxlIGFzc2VydF90aHJvd3M6IGNvbnN0cnVj
dG9yIHNob3VsZCB0aHJvdyBmdW5jdGlvbiAiKCkgPT4gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAg
ICBwdWxsOiAnZm9vJywKLSAgICB0eXBlOiAnYnl0ZXMnCi0gIH0pIiBkaWQgbm90IHRocm93Ci1Q
QVNTIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IGVucXVldWUoKSB3aXRoIFVpbnQx
NkFycmF5LCBnZXRSZWFkZXIoKSwgdGhlbiByZWFkKCkgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIHdp
dGggYnl0ZSBzb3VyY2U6IGVucXVldWUoKSwgcmVhZCh2aWV3KSBwYXJ0aWFsbHksIHRoZW4gcmVh
ZCgpIAotUEFTUyBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBnZXRSZWFkZXIoKSwg
ZW5xdWV1ZSgpLCBjbG9zZSgpLCB0aGVuIHJlYWQoKSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gd2l0
aCBieXRlIHNvdXJjZTogZW5xdWV1ZSgpLCBjbG9zZSgpLCBnZXRSZWFkZXIoKSwgdGhlbiByZWFk
KCkgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IFJlc3BvbmQgdG8gcHVs
bCgpIGJ5IGVucXVldWUoKSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTog
UmVzcG9uZCB0byBwdWxsKCkgYnkgZW5xdWV1ZSgpIGFzeW5jaHJvbm91c2x5IAotVElNRU9VVCBS
ZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBSZXNwb25kIHRvIG11bHRpcGxlIHB1bGwo
KSBieSBzZXBhcmF0ZSBlbnF1ZXVlKCkgVGVzdCB0aW1lZCBvdXQKLU5PVFJVTiBSZWFkYWJsZVN0
cmVhbSB3aXRoIGJ5dGUgc291cmNlOiByZWFkKHZpZXcpLCB0aGVuIHJlc3BvbmQoKSAKLU5PVFJV
TiBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiByZWFkKHZpZXcpLCB0aGVuIHJlc3Bv
bmQoKSB3aXRoIGEgdHJhbnNmZXJyZWQgQXJyYXlCdWZmZXIgCi1OT1RSVU4gUmVhZGFibGVTdHJl
YW0gd2l0aCBieXRlIHNvdXJjZTogcmVhZCh2aWV3KSwgdGhlbiByZXNwb25kKCkgd2l0aCB0b28g
YmlnIHZhbHVlIAotTk9UUlVOIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IHJlc3Bv
bmQoMykgdG8gcmVhZCh2aWV3KSB3aXRoIDIgZWxlbWVudCBVaW50MTZBcnJheSBlbnF1ZXVlcyB0
aGUgMSBieXRlIHJlbWFpbmRlciAKLU5PVFJVTiBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291
cmNlOiBlbnF1ZXVlKCksIGdldFJlYWRlcigpLCB0aGVuIHJlYWQodmlldykgCi1OT1RSVU4gUmVh
ZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogZW5xdWV1ZSgpLCBnZXRSZWFkZXIoKSwgdGhl
biBjYW5jZWwoKSAobW9kZSA9IG5vdCBCWU9CKSAKLU5PVFJVTiBSZWFkYWJsZVN0cmVhbSB3aXRo
IGJ5dGUgc291cmNlOiBlbnF1ZXVlKCksIGdldFJlYWRlcigpLCB0aGVuIGNhbmNlbCgpIChtb2Rl
ID0gQllPQikgCi1OT1RSVU4gUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogZ2V0UmVh
ZGVyKCksIHJlYWQodmlldyksIHRoZW4gY2FuY2VsKCkgCi1OT1RSVU4gUmVhZGFibGVTdHJlYW0g
d2l0aCBieXRlIHNvdXJjZTogY2FuY2VsKCkgd2l0aCBwYXJ0aWFsbHkgZmlsbGVkIHBlbmRpbmcg
cHVsbCgpIHJlcXVlc3QgCi1OT1RSVU4gUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTog
ZW5xdWV1ZSgpLCBnZXRSZWFkZXIoKSwgdGhlbiByZWFkKHZpZXcpIHdoZXJlIHZpZXcuYnVmZmVy
IGlzIG5vdCBmdWxseSBjb3ZlcmVkIGJ5IHZpZXcgCi1OT1RSVU4gUmVhZGFibGVTdHJlYW0gd2l0
aCBieXRlIHNvdXJjZTogTXVsdGlwbGUgZW5xdWV1ZSgpLCBnZXRSZWFkZXIoKSwgdGhlbiByZWFk
KHZpZXcpIAotTk9UUlVOIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IGVucXVldWUo
KSwgZ2V0UmVhZGVyKCksIHRoZW4gcmVhZCh2aWV3KSB3aXRoIGEgYmlnZ2VyIHZpZXcgCi1OT1RS
VU4gUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogZW5xdWV1ZSgpLCBnZXRSZWFkZXIo
KSwgdGhlbiByZWFkKHZpZXcpIHdpdGggYSBzbWFsbGVyIHZpZXdzIAotTk9UUlVOIFJlYWRhYmxl
U3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IGVucXVldWUoKSAxIGJ5dGUsIGdldFJlYWRlcigpLCB0
aGVuIHJlYWQodmlldykgd2l0aCBVaW50MTZBcnJheSAKLU5PVFJVTiBSZWFkYWJsZVN0cmVhbSB3
aXRoIGJ5dGUgc291cmNlOiBlbnF1ZXVlKCkgMyBieXRlLCBnZXRSZWFkZXIoKSwgdGhlbiByZWFk
KHZpZXcpIHdpdGggMi1lbGVtZW50IFVpbnQxNkFycmF5IAotTk9UUlVOIFJlYWRhYmxlU3RyZWFt
IHdpdGggYnl0ZSBzb3VyY2U6IHJlYWQodmlldykgd2l0aCBVaW50MTZBcnJheSBvbiBjbG9zZSgp
LWQgc3RyZWFtIHdpdGggMSBieXRlIGVucXVldWUoKS1kIG11c3QgZmFpbCAKLU5PVFJVTiBSZWFk
YWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBBIHN0cmVhbSBtdXN0IGJlIGVycm9yZWQgaWYg
Y2xvc2UoKS1kIGJlZm9yZSBmdWxmaWxsaW5nIHJlYWQodmlldykgd2l0aCBVaW50MTZBcnJheSAK
LVBBU1MgUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogVGhyb3cgaWYgY2xvc2UoKS1l
ZCBtb3JlIHRoYW4gb25jZSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTog
VGhyb3cgb24gZW5xdWV1ZSgpIGFmdGVyIGNsb3NlKCkgCi1OT1RSVU4gUmVhZGFibGVTdHJlYW0g
d2l0aCBieXRlIHNvdXJjZTogcmVhZCh2aWV3KSwgdGhlbiByZXNwb25kKCkgYW5kIGNsb3NlKCkg
aW4gcHVsbCgpIAotTk9UUlVOIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IHJlYWQo
dmlldykgd2l0aCBVaW50MzJBcnJheSwgdGhlbiBmaWxsIGl0IGJ5IG11bHRpcGxlIHJlc3BvbmQo
KSBjYWxscyAKLU5PVFJVTiBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiByZWFkKCkg
dHdpY2UsIHRoZW4gZW5xdWV1ZSgpIHR3aWNlIAotTk9UUlVOIFJlYWRhYmxlU3RyZWFtIHdpdGgg
Ynl0ZSBzb3VyY2U6IE11bHRpcGxlIHJlYWQodmlldyksIGNsb3NlKCkgYW5kIHJlc3BvbmQoKSAK
LU5PVFJVTiBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBNdWx0aXBsZSByZWFkKHZp
ZXcpLCBiaWcgZW5xdWV1ZSgpIAotTk9UUlVOIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3Vy
Y2U6IE11bHRpcGxlIHJlYWQodmlldykgYW5kIG11bHRpcGxlIGVucXVldWUoKSAKLU5PVFJVTiBS
ZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiByZWFkKHZpZXcpIHdpdGggcGFzc2luZyB1
bmRlZmluZWQgYXMgdmlldyBtdXN0IGZhaWwgCi1OT1RSVU4gUmVhZGFibGVTdHJlYW0gd2l0aCBi
eXRlIHNvdXJjZTogcmVhZCh2aWV3KSB3aXRoIHplcm8tbGVuZ3RoIHZpZXcgbXVzdCBmYWlsIAot
Tk9UUlVOIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IHJlYWQodmlldykgd2l0aCBw
YXNzaW5nIGFuIGVtcHR5IG9iamVjdCBhcyB2aWV3IG11c3QgZmFpbCAKLU5PVFJVTiBSZWFkYWJs
ZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBFdmVuIHJlYWQodmlldykgd2l0aCBwYXNzaW5nIEFy
cmF5QnVmZmVyVmlldyBsaWtlIG9iamVjdCBhcyB2aWV3IG11c3QgZmFpbCAKLU5PVFJVTiBSZWFk
YWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiByZWFkKCkgb24gYW4gZXJyb3JlZCBzdHJlYW0g
Ci1OT1RSVU4gUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogcmVhZCgpLCB0aGVuIGVy
cm9yKCkgCi1OT1RSVU4gUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogcmVhZCh2aWV3
KSBvbiBhbiBlcnJvcmVkIHN0cmVhbSAKLU5PVFJVTiBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUg
c291cmNlOiByZWFkKHZpZXcpLCB0aGVuIGVycm9yKCkgCi1OT1RSVU4gUmVhZGFibGVTdHJlYW0g
d2l0aCBieXRlIHNvdXJjZTogVGhyb3dpbmcgaW4gcHVsbCBmdW5jdGlvbiBtdXN0IGVycm9yIHRo
ZSBzdHJlYW0gCi1OT1RSVU4gUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogVGhyb3dp
bmcgaW4gcHVsbCBpbiByZXNwb25zZSB0byByZWFkKCkgbXVzdCBiZSBpZ25vcmVkIGlmIHRoZSBz
dHJlYW0gaXMgZXJyb3JlZCBpbiBpdCAKLU5PVFJVTiBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUg
c291cmNlOiBUaHJvd2luZyBpbiBwdWxsIGluIHJlc3BvbnNlIHRvIHJlYWQodmlldykgZnVuY3Rp
b24gbXVzdCBlcnJvciB0aGUgc3RyZWFtIAotTk9UUlVOIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0
ZSBzb3VyY2U6IFRocm93aW5nIGluIHB1bGwgaW4gcmVzcG9uc2UgdG8gcmVhZCh2aWV3KSBtdXN0
IGJlIGlnbm9yZWQgaWYgdGhlIHN0cmVhbSBpcyBlcnJvcmVkIGluIGl0IAotTk9UUlVOIGNhbGxp
bmcgcmVzcG9uZCgpIHR3aWNlIG9uIHRoZSBzYW1lIGJ5b2JSZXF1ZXN0IHNob3VsZCB0aHJvdyAK
LU5PVFJVTiBjYWxsaW5nIHJlc3BvbmRXaXRoTmV3VmlldygpIHR3aWNlIG9uIHRoZSBzYW1lIGJ5
b2JSZXF1ZXN0IHNob3VsZCB0aHJvdyAKLU5PVFJVTiBjYWxsaW5nIHJlc3BvbmQoMCkgdHdpY2Ug
b24gdGhlIHNhbWUgYnlvYlJlcXVlc3Qgc2hvdWxkIHRocm93IGV2ZW4gd2hlbiBjbG9zZWQgCi1O
T1RSVU4gcHVsbCgpIHJlc29sdmluZyBzaG91bGQgbm90IG1ha2UgcmVsZWFzZUxvY2soKSBwb3Nz
aWJsZSAKLU5PVFJVTiBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBkZWZhdWx0IHJl
YWRlciArIGF1dG9BbGxvY2F0ZUNodW5rU2l6ZSArIGJ5b2JSZXF1ZXN0IGludGVyYWN0aW9uIAot
UEFTUyBSZWFkYWJsZVN0cmVhbUJZT0JSZWFkZXIgY2FuIGJlIGNvbnN0cnVjdGVkIGRpcmVjdGx5
IAotUEFTUyBSZWFkYWJsZVN0cmVhbUJZT0JSZWFkZXIgY29uc3RydWN0b3IgcmVxdWlyZXMgYSBS
ZWFkYWJsZVN0cmVhbSBhcmd1bWVudCAKLVBBU1MgUmVhZGFibGVTdHJlYW1CWU9CUmVhZGVyIGNv
bnN0cnVjdG9yIHJlcXVpcmVzIGFuIHVubG9ja2VkIFJlYWRhYmxlU3RyZWFtIAotUEFTUyBSZWFk
YWJsZVN0cmVhbUJZT0JSZWFkZXIgY29uc3RydWN0b3IgcmVxdWlyZXMgYSBSZWFkYWJsZVN0cmVh
bSB3aXRoIHR5cGUgImJ5dGVzIiAKLVBBU1MgUmVhZGFibGVTdHJlYW0gY29uc3RydWN0b3Igc2hv
dWxkIG5vdCBhY2NlcHQgYSBzdHJhdGVneSB3aXRoIGEgc2l6ZSBkZWZpbmVkIGlmIHR5cGUgaXMg
ImJ5dGVzIiAKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFtcy9nZW5lcmFsLmRlZGljYXRl
ZHdvcmtlci5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFtcy9nZW5lcmFsLmRlZGljYXRlZHdvcmtlci5o
dG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NmU0ODAxMzllODkxNzJjY2NkMmEw
OGYxNDE3ZGQzMzk4ZjUzMjhhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMvZ2VuZXJhbC5kZWRpY2F0ZWR3b3JrZXIuaHRtbAor
KysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hh
cnNldD0idXRmLTgiPgotPHRpdGxlPmdlbmVyYWwuanMgZGVkaWNhdGVkIHdvcmtlciB3cmFwcGVy
IGZpbGU8L3RpdGxlPgotCi08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+
PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+
PC9zY3JpcHQ+Ci0KLTxzY3JpcHQ+Ci0ndXNlIHN0cmljdCc7Ci1mZXRjaF90ZXN0c19mcm9tX3dv
cmtlcihuZXcgV29ya2VyKCdnZW5lcmFsLmpzJykpOwotPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFi
bGUtYnl0ZS1zdHJlYW1zL2dlbmVyYWwuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMvZ2VuZXJhbC5o
dG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MTdmMzg2Mzg3MjI5Yjc1MWZlYzNl
MWMxOTdjNzAzYjFlODc3YmZiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMvZ2VuZXJhbC5odG1sCisrKyAvZGV2L251bGwKQEAg
LTEsMTEgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08
dGl0bGU+Z2VuZXJhbC5qcyBicm93c2VyIGNvbnRleHQgd3JhcHBlciBmaWxlPC90aXRsZT4KLQot
PHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlw
dCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotCi08c2Ny
aXB0IHNyYz0iLi4vcmVzb3VyY2VzL3JzLXV0aWxzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3Jj
PSIuLi9yZXNvdXJjZXMvdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Ci0KLTxzY3JpcHQgc3JjPSJn
ZW5lcmFsLmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMvZ2VuZXJh
bC5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMvZ2VuZXJhbC5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMzlkZDcwODBiYzdhMTFkYzNhNDM4NzIxMTdiYzFmOTQ3MDhmMjhlZC4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1z
L2dlbmVyYWwuanMKKysrIC9kZXYvbnVsbApAQCAtMSwyMTI2ICswLDAgQEAKLSd1c2Ugc3RyaWN0
JzsKLQotaWYgKHNlbGYuaW1wb3J0U2NyaXB0cykgewotICBzZWxmLmltcG9ydFNjcmlwdHMoJy4u
L3Jlc291cmNlcy9ycy11dGlscy5qcycpOwotICBzZWxmLmltcG9ydFNjcmlwdHMoJy4uL3Jlc291
cmNlcy90ZXN0LXV0aWxzLmpzJyk7Ci0gIHNlbGYuaW1wb3J0U2NyaXB0cygnL3Jlc291cmNlcy90
ZXN0aGFybmVzcy5qcycpOwotfQotCi1jb25zdCBlcnJvcjEgPSBuZXcgRXJyb3IoJ2Vycm9yMScp
OwotZXJyb3IxLm5hbWUgPSAnZXJyb3IxJzsKLQotdGVzdCgoKSA9PiB7Ci0gIGFzc2VydF90aHJv
d3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBuZXcgUmVhZGFibGVTdHJlYW0oKS5nZXRSZWFkZXIo
eyBtb2RlOiAnYnlvYicgfSkpOwotfSwgJ2dldFJlYWRlcih7bW9kZTogImJ5b2IifSkgdGhyb3dz
IG9uIG5vbi1ieXRlcyBzdHJlYW1zJyk7Ci0KLQotdGVzdCgoKSA9PiB7Ci0gIC8vIENvbnN0cnVj
dGluZyBSZWFkYWJsZVN0cmVhbSB3aXRoIGFuIGVtcHR5IHVuZGVybHlpbmcgYnl0ZSBzb3VyY2Ug
b2JqZWN0IGFzIHBhcmFtZXRlciBzaG91bGRuJ3QgdGhyb3cuCi0gIG5ldyBSZWFkYWJsZVN0cmVh
bSh7IHR5cGU6ICdieXRlcycgfSkuZ2V0UmVhZGVyKHsgbW9kZTogJ2J5b2InIH0pOwotICAvLyBD
b25zdHJ1Y3RvciBtdXN0IHBlcmZvcm0gVG9TdHJpbmcodHlwZSkuCi0gIG5ldyBSZWFkYWJsZVN0
cmVhbSh7IHR5cGU6IHsgdG9TdHJpbmcoKSB7cmV0dXJuICdieXRlcyc7fSB9IH0pCi0gICAgLmdl
dFJlYWRlcih7IG1vZGU6ICdieW9iJyB9KTsKLSAgbmV3IFJlYWRhYmxlU3RyZWFtKHsgdHlwZTog
eyB0b1N0cmluZzogbnVsbCwgdmFsdWVPZigpIHtyZXR1cm4gJ2J5dGVzJzt9IH0gfSkKLSAgICAu
Z2V0UmVhZGVyKHsgbW9kZTogJ2J5b2InIH0pOwotfSwgJ1JlYWRhYmxlU3RyZWFtIHdpdGggYnl0
ZSBzb3VyY2UgY2FuIGJlIGNvbnN0cnVjdGVkIHdpdGggbm8gZXJyb3JzJyk7Ci0KLXRlc3QoKCkg
PT4gewotICBjb25zdCBSZWFkYWJsZVN0cmVhbUJZT0JSZWFkZXIgPSBuZXcgUmVhZGFibGVTdHJl
YW0oeyB0eXBlOiAnYnl0ZXMnIH0pLmdldFJlYWRlcih7IG1vZGU6ICdieW9iJyB9KS5jb25zdHJ1
Y3RvcjsKLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeyB0eXBlOiAnYnl0ZXMnIH0p
OwotCi0gIGxldCByZWFkZXIgPSBycy5nZXRSZWFkZXIoeyBtb2RlOiB7IHRvU3RyaW5nKCkgeyBy
ZXR1cm4gJ2J5b2InOyB9IH0gfSk7Ci0gIGFzc2VydF90cnVlKHJlYWRlciBpbnN0YW5jZW9mIFJl
YWRhYmxlU3RyZWFtQllPQlJlYWRlciwgJ211c3QgZ2l2ZSBhIEJZT0IgcmVhZGVyJyk7Ci0gIHJl
YWRlci5yZWxlYXNlTG9jaygpOwotCi0gIHJlYWRlciA9IHJzLmdldFJlYWRlcih7IG1vZGU6IHsg
dG9TdHJpbmc6IG51bGwsIHZhbHVlT2YoKSB7cmV0dXJuICdieW9iJzt9IH0gfSk7Ci0gIGFzc2Vy
dF90cnVlKHJlYWRlciBpbnN0YW5jZW9mIFJlYWRhYmxlU3RyZWFtQllPQlJlYWRlciwgJ211c3Qg
Z2l2ZSBhIEJZT0IgcmVhZGVyJyk7Ci0gIHJlYWRlci5yZWxlYXNlTG9jaygpOwotCi0gIHJlYWRl
ciA9IHJzLmdldFJlYWRlcih7IG1vZGU6ICdieW9iJywgbm90bW9kZTogJ2lnbm9yZWQnIH0pOwot
ICBhc3NlcnRfdHJ1ZShyZWFkZXIgaW5zdGFuY2VvZiBSZWFkYWJsZVN0cmVhbUJZT0JSZWFkZXIs
ICdtdXN0IGdpdmUgYSBCWU9CIHJlYWRlcicpOwotfSwgJ2dldFJlYWRlcih7bW9kZX0pIG11c3Qg
cGVyZm9ybSBUb1N0cmluZygpJyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0gIGxldCBzdGFy
dENhbGxlZCA9IGZhbHNlOwotICBsZXQgc3RhcnRDYWxsZWRCZWZvcmVQdWxsID0gZmFsc2U7Ci0g
IGxldCBkZXNpcmVkU2l6ZTsKLSAgbGV0IGNvbnRyb2xsZXI7Ci0KLSAgbGV0IHJlc29sdmVUZXN0
UHJvbWlzZTsKLSAgY29uc3QgdGVzdFByb21pc2UgPSBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsK
LSAgICByZXNvbHZlVGVzdFByb21pc2UgPSByZXNvbHZlOwotICB9KTsKLQotICBuZXcgUmVhZGFi
bGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGNvbnRyb2xsZXIgPSBjOwotICAgICAg
c3RhcnRDYWxsZWQgPSB0cnVlOwotICAgIH0sCi0gICAgcHVsbCgpIHsKLSAgICAgIHN0YXJ0Q2Fs
bGVkQmVmb3JlUHVsbCA9IHN0YXJ0Q2FsbGVkOwotICAgICAgZGVzaXJlZFNpemUgPSBjb250cm9s
bGVyLmRlc2lyZWRTaXplOwotICAgICAgcmVzb2x2ZVRlc3RQcm9taXNlKCk7Ci0gICAgfSwKLSAg
ICB0eXBlOiAnYnl0ZXMnCi0gIH0sIHsKLSAgICBoaWdoV2F0ZXJNYXJrOiAyNTYKLSAgfSk7Ci0K
LSAgcmV0dXJuIHRlc3RQcm9taXNlLnRoZW4oKCkgPT4gewotICAgIGFzc2VydF90cnVlKHN0YXJ0
Q2FsbGVkQmVmb3JlUHVsbCwgJ3N0YXJ0IHNob3VsZCBiZSBjYWxsZWQgYmVmb3JlIHB1bGwnKTsK
LSAgICBhc3NlcnRfZXF1YWxzKGRlc2lyZWRTaXplLCAyNTYsICdkZXNpcmVkU2l6ZSBzaG91bGQg
ZXF1YWwgaGlnaFdhdGVyTWFyaycpOwotICB9KTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtIHdpdGgg
Ynl0ZSBzb3VyY2U6IENvbnN0cnVjdCBhbmQgZXhwZWN0IHN0YXJ0IGFuZCBwdWxsIGJlaW5nIGNh
bGxlZCcpOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotICBsZXQgcHVsbENvdW50ID0gMDsKLSAg
bGV0IGNoZWNrZWROb1B1bGwgPSBmYWxzZTsKLQotICBsZXQgcmVzb2x2ZVRlc3RQcm9taXNlOwot
ICBjb25zdCB0ZXN0UHJvbWlzZSA9IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gewotICAgIHJlc29s
dmVUZXN0UHJvbWlzZSA9IHJlc29sdmU7Ci0gIH0pOwotICBsZXQgcmVzb2x2ZVN0YXJ0UHJvbWlz
ZTsKLQotICBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KCkgewotICAgICAgcmV0dXJu
IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gewotICAgICAgICByZXNvbHZlU3RhcnRQcm9taXNlID0g
cmVzb2x2ZTsKLSAgICAgIH0pOwotICAgIH0sCi0gICAgcHVsbCgpIHsKLSAgICAgIGlmIChjaGVj
a2VkTm9QdWxsKSB7Ci0gICAgICAgIHJlc29sdmVUZXN0UHJvbWlzZSgpOwotICAgICAgfQotCi0g
ICAgICArK3B1bGxDb3VudDsKLSAgICB9LAotICAgIHR5cGU6ICdieXRlcycKLSAgfSwgewotICAg
IGhpZ2hXYXRlck1hcms6IDI1NgotICB9KTsKLQotICBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgp
ID0+IHsKLSAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMCk7Ci0gICAgY2hlY2tlZE5vUHVs
bCA9IHRydWU7Ci0gICAgcmVzb2x2ZVN0YXJ0UHJvbWlzZSgpOwotICB9KTsKLQotICByZXR1cm4g
dGVzdFByb21pc2U7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBObyBh
dXRvbWF0aWMgcHVsbCBjYWxsIGlmIHN0YXJ0IGRvZXNuXCd0IGZpbmlzaCcpOwotCi1wcm9taXNl
X3Rlc3QodCA9PiB7Ci0gIG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgcHVsbDogdC51bnJlYWNo
ZWRfZnVuYygncHVsbCgpIHNob3VsZCBub3QgYmUgY2FsbGVkJyksCi0gICAgdHlwZTogJ2J5dGVz
JwotICB9LCB7Ci0gICAgaGlnaFdhdGVyTWFyazogMAotICB9KTsKLQotICByZXR1cm4gUHJvbWlz
ZS5yZXNvbHZlKCk7Ci19LCAnUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogQ29uc3Ry
dWN0IHdpdGggaGlnaFdhdGVyTWFyayBvZiAwJyk7Ci0KLXRlc3QoKCkgPT4gewotICBuZXcgUmVh
ZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGFzc2VydF9lcXVhbHMoYy5kZXNp
cmVkU2l6ZSwgMTAsICdkZXNpcmVkU2l6ZSBtdXN0IHN0YXJ0IGF0IHRoZSBoaWdoV2F0ZXJNYXJr
Jyk7Ci0gICAgICBjLmNsb3NlKCk7Ci0gICAgICBhc3NlcnRfZXF1YWxzKGMuZGVzaXJlZFNpemUs
IDAsICdhZnRlciBjbG9zaW5nLCBkZXNpcmVkU2l6ZSBtdXN0IGJlIDAnKTsKLSAgICB9LAotICAg
IHR5cGU6ICdieXRlcycKLSAgfSwgewotICAgIGhpZ2hXYXRlck1hcms6IDEwCi0gIH0pOwotfSwg
J1JlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IGRlc2lyZWRTaXplIHdoZW4gY2xvc2Vk
Jyk7Ci0KLXRlc3QoKCkgPT4gewotICBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMp
IHsKLSAgICAgIGFzc2VydF9lcXVhbHMoYy5kZXNpcmVkU2l6ZSwgMTAsICdkZXNpcmVkU2l6ZSBt
dXN0IHN0YXJ0IGF0IHRoZSBoaWdoV2F0ZXJNYXJrJyk7Ci0gICAgICBjLmVycm9yKCk7Ci0gICAg
ICBhc3NlcnRfZXF1YWxzKGMuZGVzaXJlZFNpemUsIG51bGwsICdhZnRlciBlcnJvcmluZywgZGVz
aXJlZFNpemUgbXVzdCBiZSBudWxsJyk7Ci0gICAgfSwKLSAgICB0eXBlOiAnYnl0ZXMnCi0gIH0s
IHsKLSAgICBoaWdoV2F0ZXJNYXJrOiAxMAotICB9KTsKLX0sICdSZWFkYWJsZVN0cmVhbSB3aXRo
IGJ5dGUgc291cmNlOiBkZXNpcmVkU2l6ZSB3aGVuIGVycm9yZWQnKTsKLQotcHJvbWlzZV90ZXN0
KHQgPT4gewotICBjb25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHR5cGU6
ICdieXRlcycKLSAgfSk7Ci0KLSAgY29uc3QgcmVhZGVyID0gc3RyZWFtLmdldFJlYWRlcigpOwot
ICByZWFkZXIucmVsZWFzZUxvY2soKTsKLQotICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHQsIG5l
dyBUeXBlRXJyb3IoKSwgcmVhZGVyLmNsb3NlZCwgJ2Nsb3NlZCBtdXN0IHJlamVjdCcpOwotfSwg
J1JlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IGdldFJlYWRlcigpLCB0aGVuIHJlbGVh
c2VMb2NrKCknKTsKLQotcHJvbWlzZV90ZXN0KHQgPT4gewotICBjb25zdCBzdHJlYW0gPSBuZXcg
UmVhZGFibGVTdHJlYW0oewotICAgIHR5cGU6ICdieXRlcycKLSAgfSk7Ci0KLSAgY29uc3QgcmVh
ZGVyID0gc3RyZWFtLmdldFJlYWRlcih7IG1vZGU6ICdieW9iJyB9KTsKLSAgcmVhZGVyLnJlbGVh
c2VMb2NrKCk7Ci0KLSAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0LCBuZXcgVHlwZUVycm9yKCks
IHJlYWRlci5jbG9zZWQsICdjbG9zZWQgbXVzdCByZWplY3QnKTsKLX0sICdSZWFkYWJsZVN0cmVh
bSB3aXRoIGJ5dGUgc291cmNlOiBnZXRSZWFkZXIoKSB3aXRoIG1vZGUgc2V0IHRvIGJ5b2IsIHRo
ZW4gcmVsZWFzZUxvY2soKScpOwotCi1wcm9taXNlX3Rlc3QodCA9PiB7Ci0gIGNvbnN0IHN0cmVh
bSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgYy5jbG9zZSgp
OwotICAgIH0sCi0gICAgcHVsbDogdC51bnJlYWNoZWRfZnVuYygncHVsbCgpIHNob3VsZCBub3Qg
YmUgY2FsbGVkJyksCi0gICAgdHlwZTogJ2J5dGVzJwotICB9KTsKLQotICBjb25zdCByZWFkZXIg
PSBzdHJlYW0uZ2V0UmVhZGVyKCk7Ci0KLSAgcmV0dXJuIHJlYWRlci5jbG9zZWQudGhlbigoKSA9
PiB7Ci0gICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IHN0cmVhbS5nZXRS
ZWFkZXIoKSwgJ2dldFJlYWRlcigpIG11c3QgdGhyb3cnKTsKLSAgfSk7Ci19LCAnUmVhZGFibGVT
dHJlYW0gd2l0aCBieXRlIHNvdXJjZTogVGVzdCB0aGF0IGNsb3NpbmcgYSBzdHJlYW0gZG9lcyBu
b3QgcmVsZWFzZSBhIHJlYWRlciBhdXRvbWF0aWNhbGx5Jyk7Ci0KLXByb21pc2VfdGVzdCh0ID0+
IHsKLSAgY29uc3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7
Ci0gICAgICBjLmNsb3NlKCk7Ci0gICAgfSwKLSAgICBwdWxsOiB0LnVucmVhY2hlZF9mdW5jKCdw
dWxsKCkgc2hvdWxkIG5vdCBiZSBjYWxsZWQnKSwKLSAgICB0eXBlOiAnYnl0ZXMnCi0gIH0pOwot
Ci0gIGNvbnN0IHJlYWRlciA9IHN0cmVhbS5nZXRSZWFkZXIoeyBtb2RlOiAnYnlvYicgfSk7Ci0K
LSAgcmV0dXJuIHJlYWRlci5jbG9zZWQudGhlbigoKSA9PiB7Ci0gICAgYXNzZXJ0X3Rocm93cyhu
ZXcgVHlwZUVycm9yKCksICgpID0+IHN0cmVhbS5nZXRSZWFkZXIoeyBtb2RlOiAnYnlvYicgfSks
ICdnZXRSZWFkZXIoKSBtdXN0IHRocm93Jyk7Ci0gIH0pOwotfSwgJ1JlYWRhYmxlU3RyZWFtIHdp
dGggYnl0ZSBzb3VyY2U6IFRlc3QgdGhhdCBjbG9zaW5nIGEgc3RyZWFtIGRvZXMgbm90IHJlbGVh
c2UgYSBCWU9CIHJlYWRlciBhdXRvbWF0aWNhbGx5Jyk7Ci0KLXByb21pc2VfdGVzdCh0ID0+IHsK
LSAgY29uc3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0g
ICAgICBjLmVycm9yKGVycm9yMSk7Ci0gICAgfSwKLSAgICBwdWxsOiB0LnVucmVhY2hlZF9mdW5j
KCdwdWxsKCkgc2hvdWxkIG5vdCBiZSBjYWxsZWQnKSwKLSAgICB0eXBlOiAnYnl0ZXMnCi0gIH0p
OwotCi0gIGNvbnN0IHJlYWRlciA9IHN0cmVhbS5nZXRSZWFkZXIoKTsKLQotICByZXR1cm4gcHJv
bWlzZV9yZWplY3RzKHQsIGVycm9yMSwgcmVhZGVyLmNsb3NlZCwgJ2Nsb3NlZCBtdXN0IHJlamVj
dCcpLnRoZW4oKCkgPT4gewotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9
PiBzdHJlYW0uZ2V0UmVhZGVyKCksICdnZXRSZWFkZXIoKSBtdXN0IHRocm93Jyk7Ci0gIH0pOwot
fSwgJ1JlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IFRlc3QgdGhhdCBlcnJvcmluZyBh
IHN0cmVhbSBkb2VzIG5vdCByZWxlYXNlIGEgcmVhZGVyIGF1dG9tYXRpY2FsbHknKTsKLQotcHJv
bWlzZV90ZXN0KHQgPT4gewotICBjb25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oewot
ICAgIHN0YXJ0KGMpIHsKLSAgICAgIGMuZXJyb3IoZXJyb3IxKTsKLSAgICB9LAotICAgIHB1bGw6
IHQudW5yZWFjaGVkX2Z1bmMoJ3B1bGwoKSBzaG91bGQgbm90IGJlIGNhbGxlZCcpLAotICAgIHR5
cGU6ICdieXRlcycKLSAgfSk7Ci0KLSAgY29uc3QgcmVhZGVyID0gc3RyZWFtLmdldFJlYWRlcih7
IG1vZGU6ICdieW9iJyB9KTsKLQotICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHQsIGVycm9yMSwg
cmVhZGVyLmNsb3NlZCwgJ2Nsb3NlZCBtdXN0IHJlamVjdCcpLnRoZW4oKCkgPT4gewotICAgIGFz
c2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBzdHJlYW0uZ2V0UmVhZGVyKHsgbW9k
ZTogJ2J5b2InIH0pLCAnZ2V0UmVhZGVyKCkgbXVzdCB0aHJvdycpOwotICB9KTsKLX0sICdSZWFk
YWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBUZXN0IHRoYXQgZXJyb3JpbmcgYSBzdHJlYW0g
ZG9lcyBub3QgcmVsZWFzZSBhIEJZT0IgcmVhZGVyIGF1dG9tYXRpY2FsbHknKTsKLQotdGVzdCgo
KSA9PiB7Ci0gIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgdHlwZTog
J2J5dGVzJwotICB9KTsKLQotICBjb25zdCByZWFkZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKCk7Ci0g
IHJlYWRlci5yZWFkKCk7Ci0gIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBy
ZWFkZXIucmVsZWFzZUxvY2soKSwgJ3JlYWRlci5yZWxlYXNlTG9jaygpIG11c3QgdGhyb3cnKTsK
LX0sICdSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiByZWxlYXNlTG9jaygpIG9uIFJl
YWRhYmxlU3RyZWFtUmVhZGVyIHdpdGggcGVuZGluZyByZWFkKCkgbXVzdCB0aHJvdycpOwotCi1w
cm9taXNlX3Rlc3QoKCkgPT4gewotICBsZXQgcHVsbENvdW50ID0gMDsKLQotICBjb25zdCBzdHJl
YW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHB1bGwoKSB7Ci0gICAgICArK3B1bGxDb3Vu
dDsKLSAgICB9LAotICAgIHR5cGU6ICdieXRlcycKLSAgfSwgewotICAgIGhpZ2hXYXRlck1hcms6
IDgKLSAgfSk7Ci0KLSAgc3RyZWFtLmdldFJlYWRlcigpOwotCi0gIGFzc2VydF9lcXVhbHMocHVs
bENvdW50LCAwLCAnTm8gcHVsbCBhcyBzdGFydCgpIGp1c3QgZmluaXNoZWQgYW5kIGlzIG5vdCB5
ZXQgcmVmbGVjdGVkIHRvIHRoZSBzdGF0ZSBvZiB0aGUgc3RyZWFtJyk7Ci0KLSAgcmV0dXJuIFBy
b21pc2UucmVzb2x2ZSgpLnRoZW4oKCkgPT4gewotICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50
LCAxLCAncHVsbCBtdXN0IGJlIGludm9rZWQnKTsKLSAgfSk7Ci19LCAnUmVhZGFibGVTdHJlYW0g
d2l0aCBieXRlIHNvdXJjZTogQXV0b21hdGljIHB1bGwoKSBhZnRlciBzdGFydCgpJyk7Ci0KLXBy
b21pc2VfdGVzdCgoKSA9PiB7Ci0gIGxldCBwdWxsQ291bnQgPSAwOwotCi0gIGNvbnN0IHN0cmVh
bSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgcHVsbCgpIHsKLSAgICAgICsrcHVsbENvdW50
OwotICAgIH0sCi0gICAgdHlwZTogJ2J5dGVzJwotICB9LCB7Ci0gICAgaGlnaFdhdGVyTWFyazog
MAotICB9KTsKLQotICBjb25zdCByZWFkZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKCk7Ci0gIHJlYWRl
ci5yZWFkKCk7Ci0KLSAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDAsICdObyBwdWxsIGFzIHN0
YXJ0KCkganVzdCBmaW5pc2hlZCBhbmQgaXMgbm90IHlldCByZWZsZWN0ZWQgdG8gdGhlIHN0YXRl
IG9mIHRoZSBzdHJlYW0nKTsKLQotICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9
PiB7Ci0gICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDEsICdwdWxsIG11c3QgYmUgaW52b2tl
ZCcpOwotICB9KTsKLX0sICdSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBBdXRvbWF0
aWMgcHVsbCgpIGFmdGVyIHN0YXJ0KCkgYW5kIHJlYWQoKScpOwotCi0vLyBWaWV3IGJ1ZmZlcnMg
YXJlIGRldGFjaGVkIGFmdGVyIHB1bGwoKSByZXR1cm5zLCBzbyByZWNvcmQgdGhlIGluZm9ybWF0
aW9uIGF0IHRoZSB0aW1lIHRoYXQgcHVsbCgpIHdhcyBjYWxsZWQuCi1mdW5jdGlvbiBleHRyYWN0
Vmlld0luZm8odmlldykgewotICByZXR1cm4gewotICAgIGNvbnN0cnVjdG9yOiB2aWV3LmNvbnN0
cnVjdG9yLAotICAgIGJ1ZmZlckJ5dGVMZW5ndGg6IHZpZXcuYnVmZmVyLmJ5dGVMZW5ndGgsCi0g
ICAgYnl0ZU9mZnNldDogdmlldy5ieXRlT2Zmc2V0LAotICAgIGJ5dGVMZW5ndGg6IHZpZXcuYnl0
ZUxlbmd0aAotICB9OwotfQotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotICBsZXQgcHVsbENvdW50
ID0gMDsKLSAgbGV0IGNvbnRyb2xsZXI7Ci0gIGNvbnN0IGJ5b2JSZXF1ZXN0cyA9IFtdOwotCi0g
IGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAg
ICAgY29udHJvbGxlciA9IGM7Ci0gICAgfSwKLSAgICBwdWxsKCkgewotICAgICAgY29uc3QgYnlv
YlJlcXVlc3QgPSBjb250cm9sbGVyLmJ5b2JSZXF1ZXN0OwotICAgICAgY29uc3QgdmlldyA9IGJ5
b2JSZXF1ZXN0LnZpZXc7Ci0gICAgICBieW9iUmVxdWVzdHNbcHVsbENvdW50XSA9IHsKLSAgICAg
ICAgZGVmaW5lZDogYnlvYlJlcXVlc3QgIT09IHVuZGVmaW5lZCwKLSAgICAgICAgdmlld0RlZmlu
ZWQ6IHZpZXcgIT09IHVuZGVmaW5lZCwKLSAgICAgICAgdmlld0luZm86IGV4dHJhY3RWaWV3SW5m
byh2aWV3KQotICAgICAgfTsKLSAgICAgIGlmIChwdWxsQ291bnQgPT09IDApIHsKLSAgICAgICAg
dmlld1swXSA9IDB4MDE7Ci0gICAgICAgIGJ5b2JSZXF1ZXN0LnJlc3BvbmQoMSk7Ci0gICAgICB9
IGVsc2UgaWYgKHB1bGxDb3VudCA9PT0gMSkgewotICAgICAgICB2aWV3WzBdID0gMHgwMjsKLSAg
ICAgICAgdmlld1sxXSA9IDB4MDM7Ci0gICAgICAgIGJ5b2JSZXF1ZXN0LnJlc3BvbmQoMik7Ci0g
ICAgICB9Ci0KLSAgICAgICsrcHVsbENvdW50OwotICAgIH0sCi0gICAgdHlwZTogJ2J5dGVzJywK
LSAgICBhdXRvQWxsb2NhdGVDaHVua1NpemU6IDE2Ci0gIH0sIHsKLSAgICBoaWdoV2F0ZXJNYXJr
OiAwCi0gIH0pOwotCi0gIGNvbnN0IHJlYWRlciA9IHN0cmVhbS5nZXRSZWFkZXIoKTsKLSAgY29u
c3QgcDAgPSByZWFkZXIucmVhZCgpOwotICBjb25zdCBwMSA9IHJlYWRlci5yZWFkKCk7Ci0KLSAg
YXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDAsICdObyBwdWxsKCkgYXMgc3RhcnQoKSBqdXN0IGZp
bmlzaGVkIGFuZCBpcyBub3QgeWV0IHJlZmxlY3RlZCB0byB0aGUgc3RhdGUgb2YgdGhlIHN0cmVh
bScpOwotCi0gIHJldHVybiBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHsKLSAgICBhc3Nl
cnRfZXF1YWxzKHB1bGxDb3VudCwgMSwgJ3B1bGwoKSBtdXN0IGhhdmUgYmVlbiBpbnZva2VkIG9u
Y2UnKTsKLSAgICBjb25zdCBieW9iUmVxdWVzdCA9IGJ5b2JSZXF1ZXN0c1swXTsKLSAgICBhc3Nl
cnRfdHJ1ZShieW9iUmVxdWVzdC5kZWZpbmVkLCAnZmlyc3QgYnlvYlJlcXVlc3QgbXVzdCBub3Qg
YmUgdW5kZWZpbmVkJyk7Ci0gICAgYXNzZXJ0X3RydWUoYnlvYlJlcXVlc3Qudmlld0RlZmluZWQs
ICdmaXJzdCBieW9iUmVxdWVzdC52aWV3IG11c3Qgbm90IGJlIHVuZGVmaW5lZCcpOwotICAgIGNv
bnN0IHZpZXdJbmZvID0gYnlvYlJlcXVlc3Qudmlld0luZm87Ci0gICAgYXNzZXJ0X2VxdWFscyh2
aWV3SW5mby5jb25zdHJ1Y3RvciwgVWludDhBcnJheSwgJ2ZpcnN0IHZpZXcuY29uc3RydWN0b3Ig
c2hvdWxkIGJlIFVpbnQ4QXJyYXknKTsKLSAgICBhc3NlcnRfZXF1YWxzKHZpZXdJbmZvLmJ1ZmZl
ckJ5dGVMZW5ndGgsIDE2LCAnZmlyc3Qgdmlldy5idWZmZXIuYnl0ZUxlbmd0aCBzaG91bGQgYmUg
MTYnKTsKLSAgICBhc3NlcnRfZXF1YWxzKHZpZXdJbmZvLmJ5dGVPZmZzZXQsIDAsICdmaXJzdCB2
aWV3LmJ5dGVPZmZzZXQgc2hvdWxkIGJlIDAnKTsKLSAgICBhc3NlcnRfZXF1YWxzKHZpZXdJbmZv
LmJ5dGVMZW5ndGgsIDE2LCAnZmlyc3Qgdmlldy5ieXRlTGVuZ3RoIHNob3VsZCBiZSAxNicpOwot
Ci0gICAgcmV0dXJuIHAwOwotICB9KS50aGVuKHJlc3VsdCA9PiB7Ci0gICAgYXNzZXJ0X2VxdWFs
cyhwdWxsQ291bnQsIDIsICdwdWxsKCkgbXVzdCBoYXZlIGJlZW4gaW52b2tlZCB0d2ljZScpOwot
ICAgIGNvbnN0IHZhbHVlID0gcmVzdWx0LnZhbHVlOwotICAgIGFzc2VydF9ub3RfZXF1YWxzKHZh
bHVlLCB1bmRlZmluZWQsICdmaXJzdCByZWFkIHNob3VsZCBoYXZlIGEgdmFsdWUnKTsKLSAgICBh
c3NlcnRfZXF1YWxzKHZhbHVlLmNvbnN0cnVjdG9yLCBVaW50OEFycmF5LCAnZmlyc3QgdmFsdWUg
c2hvdWxkIGJlIGEgVWludDhBcnJheScpOwotICAgIGFzc2VydF9lcXVhbHModmFsdWUuYnVmZmVy
LmJ5dGVMZW5ndGgsIDE2LCAnZmlyc3QgdmFsdWUuYnVmZmVyLmJ5dGVMZW5ndGggc2hvdWxkIGJl
IDE2Jyk7Ci0gICAgYXNzZXJ0X2VxdWFscyh2YWx1ZS5ieXRlT2Zmc2V0LCAwLCAnZmlyc3QgdmFs
dWUuYnl0ZU9mZnNldCBzaG91bGQgYmUgMCcpOwotICAgIGFzc2VydF9lcXVhbHModmFsdWUuYnl0
ZUxlbmd0aCwgMSwgJ2ZpcnN0IHZhbHVlLmJ5dGVMZW5ndGggc2hvdWxkIGJlIDEnKTsKLSAgICBh
c3NlcnRfZXF1YWxzKHZhbHVlWzBdLCAweDAxLCAnZmlyc3QgdmFsdWVbMF0gc2hvdWxkIGJlIDB4
MDEnKTsKLSAgICBjb25zdCBieW9iUmVxdWVzdCA9IGJ5b2JSZXF1ZXN0c1sxXTsKLSAgICBhc3Nl
cnRfdHJ1ZShieW9iUmVxdWVzdC5kZWZpbmVkLCAnc2Vjb25kIGJ5b2JSZXF1ZXN0IG11c3Qgbm90
IGJlIHVuZGVmaW5lZCcpOwotICAgIGFzc2VydF90cnVlKGJ5b2JSZXF1ZXN0LnZpZXdEZWZpbmVk
LCAnc2Vjb25kIGJ5b2JSZXF1ZXN0LnZpZXcgbXVzdCBub3QgYmUgdW5kZWZpbmVkJyk7Ci0gICAg
Y29uc3Qgdmlld0luZm8gPSBieW9iUmVxdWVzdC52aWV3SW5mbzsKLSAgICBhc3NlcnRfZXF1YWxz
KHZpZXdJbmZvLmNvbnN0cnVjdG9yLCBVaW50OEFycmF5LCAnc2Vjb25kIHZpZXcuY29uc3RydWN0
b3Igc2hvdWxkIGJlIFVpbnQ4QXJyYXknKTsKLSAgICBhc3NlcnRfZXF1YWxzKHZpZXdJbmZvLmJ1
ZmZlckJ5dGVMZW5ndGgsIDE2LCAnc2Vjb25kIHZpZXcuYnVmZmVyLmJ5dGVMZW5ndGggc2hvdWxk
IGJlIDE2Jyk7Ci0gICAgYXNzZXJ0X2VxdWFscyh2aWV3SW5mby5ieXRlT2Zmc2V0LCAwLCAnc2Vj
b25kIHZpZXcuYnl0ZU9mZnNldCBzaG91bGQgYmUgMCcpOwotICAgIGFzc2VydF9lcXVhbHModmll
d0luZm8uYnl0ZUxlbmd0aCwgMTYsICdzZWNvbmQgdmlldy5ieXRlTGVuZ3RoIHNob3VsZCBiZSAx
NicpOwotCi0gICAgcmV0dXJuIHAxOwotICB9KS50aGVuKHJlc3VsdCA9PiB7Ci0gICAgYXNzZXJ0
X2VxdWFscyhwdWxsQ291bnQsIDIsICdwdWxsKCkgc2hvdWxkIG9ubHkgYmUgaW52b2tlZCB0d2lj
ZScpOwotICAgIGNvbnN0IHZhbHVlID0gcmVzdWx0LnZhbHVlOwotICAgIGFzc2VydF9ub3RfZXF1
YWxzKHZhbHVlLCB1bmRlZmluZWQsICdzZWNvbmQgcmVhZCBzaG91bGQgaGF2ZSBhIHZhbHVlJyk7
Ci0gICAgYXNzZXJ0X2VxdWFscyh2YWx1ZS5jb25zdHJ1Y3RvciwgVWludDhBcnJheSwgJ3NlY29u
ZCB2YWx1ZSBzaG91bGQgYmUgYSBVaW50OEFycmF5Jyk7Ci0gICAgYXNzZXJ0X2VxdWFscyh2YWx1
ZS5idWZmZXIuYnl0ZUxlbmd0aCwgMTYsICdzZWNvbmQgdmFsdWUuYnVmZmVyLmJ5dGVMZW5ndGgg
c2hvdWxkIGJlIDE2Jyk7Ci0gICAgYXNzZXJ0X2VxdWFscyh2YWx1ZS5ieXRlT2Zmc2V0LCAwLCAn
c2Vjb25kIHZhbHVlLmJ5dGVPZmZzZXQgc2hvdWxkIGJlIDAnKTsKLSAgICBhc3NlcnRfZXF1YWxz
KHZhbHVlLmJ5dGVMZW5ndGgsIDIsICdzZWNvbmQgdmFsdWUuYnl0ZUxlbmd0aCBzaG91bGQgYmUg
MicpOwotICAgIGFzc2VydF9lcXVhbHModmFsdWVbMF0sIDB4MDIsICdzZWNvbmQgdmFsdWVbMF0g
c2hvdWxkIGJlIDB4MDInKTsKLSAgICBhc3NlcnRfZXF1YWxzKHZhbHVlWzFdLCAweDAzLCAnc2Vj
b25kIHZhbHVlWzFdIHNob3VsZCBiZSAweDAzJyk7Ci0gIH0pOwotfSwgJ1JlYWRhYmxlU3RyZWFt
IHdpdGggYnl0ZSBzb3VyY2U6IGF1dG9BbGxvY2F0ZUNodW5rU2l6ZScpOwotCi1wcm9taXNlX3Rl
c3QoKCkgPT4gewotICBsZXQgcHVsbENvdW50ID0gMDsKLSAgbGV0IGNvbnRyb2xsZXI7Ci0gIGNv
bnN0IGJ5b2JSZXF1ZXN0cyA9IFtdOwotCi0gIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0
cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgY29udHJvbGxlciA9IGM7Ci0gICAgfSwKLSAg
ICBwdWxsKCkgewotICAgICAgY29uc3QgYnlvYlJlcXVlc3QgPSBjb250cm9sbGVyLmJ5b2JSZXF1
ZXN0OwotICAgICAgY29uc3QgdmlldyA9IGJ5b2JSZXF1ZXN0LnZpZXc7Ci0gICAgICBieW9iUmVx
dWVzdHNbcHVsbENvdW50XSA9IHsKLSAgICAgICAgZGVmaW5lZDogYnlvYlJlcXVlc3QgIT09IHVu
ZGVmaW5lZCwKLSAgICAgICAgdmlld0RlZmluZWQ6IHZpZXcgIT09IHVuZGVmaW5lZCwKLSAgICAg
ICAgdmlld0luZm86IGV4dHJhY3RWaWV3SW5mbyh2aWV3KQotICAgICAgfTsKLSAgICAgIGlmIChw
dWxsQ291bnQgPT09IDApIHsKLSAgICAgICAgdmlld1swXSA9IDB4MDE7Ci0gICAgICAgIGJ5b2JS
ZXF1ZXN0LnJlc3BvbmQoMSk7Ci0gICAgICB9IGVsc2UgaWYgKHB1bGxDb3VudCA9PT0gMSkgewot
ICAgICAgICB2aWV3WzBdID0gMHgwMjsKLSAgICAgICAgdmlld1sxXSA9IDB4MDM7Ci0gICAgICAg
IGJ5b2JSZXF1ZXN0LnJlc3BvbmQoMik7Ci0gICAgICB9Ci0KLSAgICAgICsrcHVsbENvdW50Owot
ICAgIH0sCi0gICAgdHlwZTogJ2J5dGVzJywKLSAgICBhdXRvQWxsb2NhdGVDaHVua1NpemU6IDE2
Ci0gIH0sIHsKLSAgICBoaWdoV2F0ZXJNYXJrOiAwCi0gIH0pOwotCi0gIGNvbnN0IHJlYWRlciA9
IHN0cmVhbS5nZXRSZWFkZXIoKTsKLSAgcmV0dXJuIHJlYWRlci5yZWFkKCkudGhlbihyZXN1bHQg
PT4gewotICAgIGNvbnN0IHZhbHVlID0gcmVzdWx0LnZhbHVlOwotICAgIGFzc2VydF9ub3RfZXF1
YWxzKHZhbHVlLCB1bmRlZmluZWQsICdmaXJzdCByZWFkIHNob3VsZCBoYXZlIGEgdmFsdWUnKTsK
LSAgICBhc3NlcnRfZXF1YWxzKHZhbHVlLmNvbnN0cnVjdG9yLCBVaW50OEFycmF5LCAnZmlyc3Qg
dmFsdWUgc2hvdWxkIGJlIGEgVWludDhBcnJheScpOwotICAgIGFzc2VydF9lcXVhbHModmFsdWUu
YnVmZmVyLmJ5dGVMZW5ndGgsIDE2LCAnZmlyc3QgdmFsdWUuYnVmZmVyLmJ5dGVMZW5ndGggc2hv
dWxkIGJlIDE2Jyk7Ci0gICAgYXNzZXJ0X2VxdWFscyh2YWx1ZS5ieXRlT2Zmc2V0LCAwLCAnZmly
c3QgdmFsdWUuYnl0ZU9mZnNldCBzaG91bGQgYmUgMCcpOwotICAgIGFzc2VydF9lcXVhbHModmFs
dWUuYnl0ZUxlbmd0aCwgMSwgJ2ZpcnN0IHZhbHVlLmJ5dGVMZW5ndGggc2hvdWxkIGJlIDEnKTsK
LSAgICBhc3NlcnRfZXF1YWxzKHZhbHVlWzBdLCAweDAxLCAnZmlyc3QgdmFsdWVbMF0gc2hvdWxk
IGJlIDB4MDEnKTsKLSAgICBjb25zdCBieW9iUmVxdWVzdCA9IGJ5b2JSZXF1ZXN0c1swXTsKLSAg
ICBhc3NlcnRfdHJ1ZShieW9iUmVxdWVzdC5kZWZpbmVkLCAnZmlyc3QgYnlvYlJlcXVlc3QgbXVz
dCBub3QgYmUgdW5kZWZpbmVkJyk7Ci0gICAgYXNzZXJ0X3RydWUoYnlvYlJlcXVlc3Qudmlld0Rl
ZmluZWQsICdmaXJzdCBieW9iUmVxdWVzdC52aWV3IG11c3Qgbm90IGJlIHVuZGVmaW5lZCcpOwot
ICAgIGNvbnN0IHZpZXdJbmZvID0gYnlvYlJlcXVlc3Qudmlld0luZm87Ci0gICAgYXNzZXJ0X2Vx
dWFscyh2aWV3SW5mby5jb25zdHJ1Y3RvciwgVWludDhBcnJheSwgJ2ZpcnN0IHZpZXcuY29uc3Ry
dWN0b3Igc2hvdWxkIGJlIFVpbnQ4QXJyYXknKTsKLSAgICBhc3NlcnRfZXF1YWxzKHZpZXdJbmZv
LmJ1ZmZlckJ5dGVMZW5ndGgsIDE2LCAnZmlyc3Qgdmlldy5idWZmZXIuYnl0ZUxlbmd0aCBzaG91
bGQgYmUgMTYnKTsKLSAgICBhc3NlcnRfZXF1YWxzKHZpZXdJbmZvLmJ5dGVPZmZzZXQsIDAsICdm
aXJzdCB2aWV3LmJ5dGVPZmZzZXQgc2hvdWxkIGJlIDAnKTsKLSAgICBhc3NlcnRfZXF1YWxzKHZp
ZXdJbmZvLmJ5dGVMZW5ndGgsIDE2LCAnZmlyc3Qgdmlldy5ieXRlTGVuZ3RoIHNob3VsZCBiZSAx
NicpOwotCi0gICAgcmVhZGVyLnJlbGVhc2VMb2NrKCk7Ci0gICAgY29uc3QgYnlvYlJlYWRlciA9
IHN0cmVhbS5nZXRSZWFkZXIoeyBtb2RlOiAnYnlvYicgfSk7Ci0gICAgcmV0dXJuIGJ5b2JSZWFk
ZXIucmVhZChuZXcgVWludDhBcnJheSgzMikpOwotICB9KS50aGVuKHJlc3VsdCA9PiB7Ci0gICAg
Y29uc3QgdmFsdWUgPSByZXN1bHQudmFsdWU7Ci0gICAgYXNzZXJ0X25vdF9lcXVhbHModmFsdWUs
IHVuZGVmaW5lZCwgJ3NlY29uZCByZWFkIHNob3VsZCBoYXZlIGEgdmFsdWUnKTsKLSAgICBhc3Nl
cnRfZXF1YWxzKHZhbHVlLmNvbnN0cnVjdG9yLCBVaW50OEFycmF5LCAnc2Vjb25kIHZhbHVlIHNo
b3VsZCBiZSBhIFVpbnQ4QXJyYXknKTsKLSAgICBhc3NlcnRfZXF1YWxzKHZhbHVlLmJ1ZmZlci5i
eXRlTGVuZ3RoLCAzMiwgJ3NlY29uZCB2YWx1ZS5idWZmZXIuYnl0ZUxlbmd0aCBzaG91bGQgYmUg
MzInKTsKLSAgICBhc3NlcnRfZXF1YWxzKHZhbHVlLmJ5dGVPZmZzZXQsIDAsICdzZWNvbmQgdmFs
dWUuYnl0ZU9mZnNldCBzaG91bGQgYmUgMCcpOwotICAgIGFzc2VydF9lcXVhbHModmFsdWUuYnl0
ZUxlbmd0aCwgMiwgJ3NlY29uZCB2YWx1ZS5ieXRlTGVuZ3RoIHNob3VsZCBiZSAyJyk7Ci0gICAg
YXNzZXJ0X2VxdWFscyh2YWx1ZVswXSwgMHgwMiwgJ3NlY29uZCB2YWx1ZVswXSBzaG91bGQgYmUg
MHgwMicpOwotICAgIGFzc2VydF9lcXVhbHModmFsdWVbMV0sIDB4MDMsICdzZWNvbmQgdmFsdWVb
MV0gc2hvdWxkIGJlIDB4MDMnKTsKLSAgICBjb25zdCBieW9iUmVxdWVzdCA9IGJ5b2JSZXF1ZXN0
c1sxXTsKLSAgICBhc3NlcnRfdHJ1ZShieW9iUmVxdWVzdC5kZWZpbmVkLCAnc2Vjb25kIGJ5b2JS
ZXF1ZXN0IG11c3Qgbm90IGJlIHVuZGVmaW5lZCcpOwotICAgIGFzc2VydF90cnVlKGJ5b2JSZXF1
ZXN0LnZpZXdEZWZpbmVkLCAnc2Vjb25kIGJ5b2JSZXF1ZXN0LnZpZXcgbXVzdCBub3QgYmUgdW5k
ZWZpbmVkJyk7Ci0gICAgY29uc3Qgdmlld0luZm8gPSBieW9iUmVxdWVzdC52aWV3SW5mbzsKLSAg
ICBhc3NlcnRfZXF1YWxzKHZpZXdJbmZvLmNvbnN0cnVjdG9yLCBVaW50OEFycmF5LCAnc2Vjb25k
IHZpZXcuY29uc3RydWN0b3Igc2hvdWxkIGJlIFVpbnQ4QXJyYXknKTsKLSAgICBhc3NlcnRfZXF1
YWxzKHZpZXdJbmZvLmJ1ZmZlckJ5dGVMZW5ndGgsIDMyLCAnc2Vjb25kIHZpZXcuYnVmZmVyLmJ5
dGVMZW5ndGggc2hvdWxkIGJlIDMyJyk7Ci0gICAgYXNzZXJ0X2VxdWFscyh2aWV3SW5mby5ieXRl
T2Zmc2V0LCAwLCAnc2Vjb25kIHZpZXcuYnl0ZU9mZnNldCBzaG91bGQgYmUgMCcpOwotICAgIGFz
c2VydF9lcXVhbHModmlld0luZm8uYnl0ZUxlbmd0aCwgMzIsICdzZWNvbmQgdmlldy5ieXRlTGVu
Z3RoIHNob3VsZCBiZSAzMicpOwotICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAyLCAncHVs
bENvdW50IHNob3VsZCBiZSAyJyk7Ci0gIH0pOwotfSwgJ1JlYWRhYmxlU3RyZWFtIHdpdGggYnl0
ZSBzb3VyY2U6IE1peCBvZiBhdXRvIGFsbG9jYXRlIGFuZCBCWU9CJyk7Ci0KLXByb21pc2VfdGVz
dCgoKSA9PiB7Ci0gIGxldCBwdWxsQ291bnQgPSAwOwotCi0gIGNvbnN0IHN0cmVhbSA9IG5ldyBS
ZWFkYWJsZVN0cmVhbSh7Ci0gICAgcHVsbCgpIHsKLSAgICAgICsrcHVsbENvdW50OwotICAgIH0s
Ci0gICAgdHlwZTogJ2J5dGVzJwotICB9LCB7Ci0gICAgaGlnaFdhdGVyTWFyazogMAotICB9KTsK
LQotICBjb25zdCByZWFkZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKCk7Ci0gIHJlYWRlci5yZWFkKG5l
dyBVaW50OEFycmF5KDgpKTsKLQotICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMCwgJ05vIHB1
bGwgYXMgc3RhcnQoKSBqdXN0IGZpbmlzaGVkIGFuZCBpcyBub3QgeWV0IHJlZmxlY3RlZCB0byB0
aGUgc3RhdGUgb2YgdGhlIHN0cmVhbScpOwotCi0gIHJldHVybiBQcm9taXNlLnJlc29sdmUoKS50
aGVuKCgpID0+IHsKLSAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMSwgJ3B1bGwgbXVzdCBi
ZSBpbnZva2VkJyk7Ci0gIH0pOwotfSwgJ1JlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6
IEF1dG9tYXRpYyBwdWxsKCkgYWZ0ZXIgc3RhcnQoKSBhbmQgcmVhZCh2aWV3KScpOwotCi1wcm9t
aXNlX3Rlc3QoKCkgPT4gewotICBsZXQgcHVsbENvdW50ID0gMDsKLQotICBsZXQgY29udHJvbGxl
cjsKLSAgbGV0IGRlc2lyZWRTaXplSW5TdGFydDsKLSAgbGV0IGRlc2lyZWRTaXplSW5QdWxsOwot
Ci0gIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewot
ICAgICAgYy5lbnF1ZXVlKG5ldyBVaW50OEFycmF5KDE2KSk7Ci0gICAgICBkZXNpcmVkU2l6ZUlu
U3RhcnQgPSBjLmRlc2lyZWRTaXplOwotICAgICAgY29udHJvbGxlciA9IGM7Ci0gICAgfSwKLSAg
ICBwdWxsKCkgewotICAgICAgKytwdWxsQ291bnQ7Ci0KLSAgICAgIGlmIChwdWxsQ291bnQgPT09
IDEpIHsKLSAgICAgICAgZGVzaXJlZFNpemVJblB1bGwgPSBjb250cm9sbGVyLmRlc2lyZWRTaXpl
OwotICAgICAgfQotICAgIH0sCi0gICAgdHlwZTogJ2J5dGVzJwotICB9LCB7Ci0gICAgaGlnaFdh
dGVyTWFyazogOAotICB9KTsKLQotICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9
PiB7Ci0gICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDAsICdObyBwdWxsIGFzIHRoZSBxdWV1
ZSB3YXMgZmlsbGVkIGJ5IHN0YXJ0KCknKTsKLSAgICBhc3NlcnRfZXF1YWxzKGRlc2lyZWRTaXpl
SW5TdGFydCwgLTgsICdkZXNpcmVkU2l6ZSBhZnRlciBlbnF1ZXVlKCkgaW4gc3RhcnQoKScpOwot
Ci0gICAgY29uc3QgcmVhZGVyID0gc3RyZWFtLmdldFJlYWRlcigpOwotCi0gICAgY29uc3QgcHJv
bWlzZSA9IHJlYWRlci5yZWFkKCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDEsICdU
aGUgZmlyc3QgcHVsbCgpIHNob3VsZCBiZSBtYWRlIG9uIHJlYWQoKScpOwotICAgIGFzc2VydF9l
cXVhbHMoZGVzaXJlZFNpemVJblB1bGwsIDgsICdkZXNpcmVkU2l6ZSBpbiBwdWxsKCknKTsKLQot
ICAgIHJldHVybiBwcm9taXNlLnRoZW4ocmVzdWx0ID0+IHsKLSAgICAgIGFzc2VydF9lcXVhbHMo
cmVzdWx0LmRvbmUsIGZhbHNlLCAncmVzdWx0LmRvbmUnKTsKLQotICAgICAgY29uc3QgdmlldyA9
IHJlc3VsdC52YWx1ZTsKLSAgICAgIGFzc2VydF9lcXVhbHModmlldy5jb25zdHJ1Y3RvciwgVWlu
dDhBcnJheSwgJ3ZpZXcuY29uc3RydWN0b3InKTsKLSAgICAgIGFzc2VydF9lcXVhbHModmlldy5i
dWZmZXIuYnl0ZUxlbmd0aCwgMTYsICd2aWV3LmJ1ZmZlcicpOwotICAgICAgYXNzZXJ0X2VxdWFs
cyh2aWV3LmJ5dGVPZmZzZXQsIDAsICd2aWV3LmJ5dGVPZmZzZXQnKTsKLSAgICAgIGFzc2VydF9l
cXVhbHModmlldy5ieXRlTGVuZ3RoLCAxNiwgJ3ZpZXcuYnl0ZUxlbmd0aCcpOwotICAgIH0pOwot
ICB9KTsKLX0sICdSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBlbnF1ZXVlKCksIGdl
dFJlYWRlcigpLCB0aGVuIHJlYWQoKScpOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotICBsZXQg
Y29udHJvbGxlcjsKLQotICBjb25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAg
IHN0YXJ0KGMpIHsKLSAgICAgIGNvbnRyb2xsZXIgPSBjOwotICAgIH0sCi0gICAgdHlwZTogJ2J5
dGVzJwotICB9KTsKLQotICBjb25zdCByZWFkZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKCk7Ci0KLSAg
Y29uc3QgcHJvbWlzZSA9IHJlYWRlci5yZWFkKCkudGhlbihyZXN1bHQgPT4gewotICAgIGFzc2Vy
dF9lcXVhbHMocmVzdWx0LmRvbmUsIGZhbHNlKTsKLQotICAgIGNvbnN0IHZpZXcgPSByZXN1bHQu
dmFsdWU7Ci0gICAgYXNzZXJ0X2VxdWFscyh2aWV3LmNvbnN0cnVjdG9yLCBVaW50OEFycmF5KTsK
LSAgICBhc3NlcnRfZXF1YWxzKHZpZXcuYnVmZmVyLmJ5dGVMZW5ndGgsIDEpOwotICAgIGFzc2Vy
dF9lcXVhbHModmlldy5ieXRlT2Zmc2V0LCAwKTsKLSAgICBhc3NlcnRfZXF1YWxzKHZpZXcuYnl0
ZUxlbmd0aCwgMSk7Ci0gIH0pOwotCi0gIGNvbnRyb2xsZXIuZW5xdWV1ZShuZXcgVWludDhBcnJh
eSgxKSk7Ci0KLSAgcmV0dXJuIHByb21pc2U7Ci19LCAnUmVhZGFibGVTdHJlYW0gd2l0aCBieXRl
IHNvdXJjZTogUHVzaCBzb3VyY2UgdGhhdCBkb2VzblwndCB1bmRlcnN0YW5kIHB1bGwgc2lnbmFs
Jyk7Ci0KLXRlc3QoKCkgPT4gewotICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkg
PT4gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBwdWxsOiAnZm9vJywKLSAgICB0eXBlOiAnYnl0
ZXMnCi0gIH0pLCAnY29uc3RydWN0b3Igc2hvdWxkIHRocm93Jyk7Ci19LCAnUmVhZGFibGVTdHJl
YW0gd2l0aCBieXRlIHNvdXJjZTogcHVsbCgpIGZ1bmN0aW9uIGlzIG5vdCBjYWxsYWJsZScpOwot
Ci1wcm9taXNlX3Rlc3QoKCkgPT4gewotICBjb25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJl
YW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGMuZW5xdWV1ZShuZXcgVWludDE2QXJyYXkoMTYp
KTsKLSAgICB9LAotICAgIHR5cGU6ICdieXRlcycKLSAgfSk7Ci0KLSAgY29uc3QgcmVhZGVyID0g
c3RyZWFtLmdldFJlYWRlcigpOwotCi0gIHJldHVybiByZWFkZXIucmVhZCgpLnRoZW4ocmVzdWx0
ID0+IHsKLSAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdC5kb25lLCBmYWxzZSk7Ci0KLSAgICBjb25z
dCB2aWV3ID0gcmVzdWx0LnZhbHVlOwotICAgIGFzc2VydF9lcXVhbHModmlldy5jb25zdHJ1Y3Rv
ciwgVWludDhBcnJheSk7Ci0gICAgYXNzZXJ0X2VxdWFscyh2aWV3LmJ1ZmZlci5ieXRlTGVuZ3Ro
LCAzMik7Ci0gICAgYXNzZXJ0X2VxdWFscyh2aWV3LmJ5dGVPZmZzZXQsIDApOwotICAgIGFzc2Vy
dF9lcXVhbHModmlldy5ieXRlTGVuZ3RoLCAzMik7Ci0gIH0pOwotfSwgJ1JlYWRhYmxlU3RyZWFt
IHdpdGggYnl0ZSBzb3VyY2U6IGVucXVldWUoKSB3aXRoIFVpbnQxNkFycmF5LCBnZXRSZWFkZXIo
KSwgdGhlbiByZWFkKCknKTsKLQotcHJvbWlzZV90ZXN0KHQgPT4gewotICBjb25zdCBzdHJlYW0g
PSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGNvbnN0IHZpZXcg
PSBuZXcgVWludDhBcnJheSgxNik7Ci0gICAgICB2aWV3WzBdID0gMHgwMTsKLSAgICAgIHZpZXdb
OF0gPSAweDAyOwotICAgICAgYy5lbnF1ZXVlKHZpZXcpOwotICAgIH0sCi0gICAgcHVsbDogdC51
bnJlYWNoZWRfZnVuYygncHVsbCgpIHNob3VsZCBub3QgYmUgY2FsbGVkJyksCi0gICAgdHlwZTog
J2J5dGVzJwotICB9KTsKLQotICBjb25zdCBieW9iUmVhZGVyID0gc3RyZWFtLmdldFJlYWRlcih7
IG1vZGU6ICdieW9iJyB9KTsKLQotICByZXR1cm4gYnlvYlJlYWRlci5yZWFkKG5ldyBVaW50OEFy
cmF5KDgpKS50aGVuKHJlc3VsdCA9PiB7Ci0gICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQuZG9uZSwg
ZmFsc2UsICdkb25lJyk7Ci0KLSAgICBjb25zdCB2aWV3ID0gcmVzdWx0LnZhbHVlOwotICAgIGFz
c2VydF9lcXVhbHModmlldy5jb25zdHJ1Y3RvciwgVWludDhBcnJheSwgJ3ZhbHVlLmNvbnN0cnVj
dG9yJyk7Ci0gICAgYXNzZXJ0X2VxdWFscyh2aWV3LmJ1ZmZlci5ieXRlTGVuZ3RoLCA4LCAndmFs
dWUuYnVmZmVyLmJ5dGVMZW5ndGgnKTsKLSAgICBhc3NlcnRfZXF1YWxzKHZpZXcuYnl0ZU9mZnNl
dCwgMCwgJ3ZhbHVlLmJ5dGVPZmZzZXQnKTsKLSAgICBhc3NlcnRfZXF1YWxzKHZpZXcuYnl0ZUxl
bmd0aCwgOCwgJ3ZhbHVlLmJ5dGVMZW5ndGgnKTsKLSAgICBhc3NlcnRfZXF1YWxzKHZpZXdbMF0s
IDB4MDEpOwotCi0gICAgYnlvYlJlYWRlci5yZWxlYXNlTG9jaygpOwotCi0gICAgY29uc3QgcmVh
ZGVyID0gc3RyZWFtLmdldFJlYWRlcigpOwotCi0gICAgcmV0dXJuIHJlYWRlci5yZWFkKCk7Ci0g
IH0pLnRoZW4ocmVzdWx0ID0+IHsKLSAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdC5kb25lLCBmYWxz
ZSwgJ2RvbmUnKTsKLQotICAgIGNvbnN0IHZpZXcgPSByZXN1bHQudmFsdWU7Ci0gICAgYXNzZXJ0
X2VxdWFscyh2aWV3LmNvbnN0cnVjdG9yLCBVaW50OEFycmF5LCAndmFsdWUuY29uc3RydWN0b3In
KTsKLSAgICBhc3NlcnRfZXF1YWxzKHZpZXcuYnVmZmVyLmJ5dGVMZW5ndGgsIDE2LCAndmFsdWUu
YnVmZmVyLmJ5dGVMZW5ndGgnKTsKLSAgICBhc3NlcnRfZXF1YWxzKHZpZXcuYnl0ZU9mZnNldCwg
OCwgJ3ZhbHVlLmJ5dGVPZmZzZXQnKTsKLSAgICBhc3NlcnRfZXF1YWxzKHZpZXcuYnl0ZUxlbmd0
aCwgOCwgJ3ZhbHVlLmJ5dGVMZW5ndGgnKTsKLSAgICBhc3NlcnRfZXF1YWxzKHZpZXdbMF0sIDB4
MDIpOwotICB9KTsKLX0sICdSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBlbnF1ZXVl
KCksIHJlYWQodmlldykgcGFydGlhbGx5LCB0aGVuIHJlYWQoKScpOwotCi1wcm9taXNlX3Rlc3Qo
dCA9PiB7Ci0gIGxldCBjb250cm9sbGVyOwotCi0gIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJs
ZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgY29udHJvbGxlciA9IGM7Ci0gICAgfSwK
LSAgICBwdWxsOiB0LnVucmVhY2hlZF9mdW5jKCdwdWxsKCkgc2hvdWxkIG5vdCBiZSBjYWxsZWQn
KSwKLSAgICB0eXBlOiAnYnl0ZXMnCi0gIH0pOwotCi0gIGNvbnN0IHJlYWRlciA9IHN0cmVhbS5n
ZXRSZWFkZXIoKTsKLQotICBjb250cm9sbGVyLmVucXVldWUobmV3IFVpbnQ4QXJyYXkoMTYpKTsK
LSAgY29udHJvbGxlci5jbG9zZSgpOwotCi0gIHJldHVybiByZWFkZXIucmVhZCgpLnRoZW4ocmVz
dWx0ID0+IHsKLSAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdC5kb25lLCBmYWxzZSwgJ2RvbmUnKTsK
LQotICAgIGNvbnN0IHZpZXcgPSByZXN1bHQudmFsdWU7Ci0gICAgYXNzZXJ0X2VxdWFscyh2aWV3
LmJ5dGVPZmZzZXQsIDAsICdieXRlT2Zmc2V0Jyk7Ci0gICAgYXNzZXJ0X2VxdWFscyh2aWV3LmJ5
dGVMZW5ndGgsIDE2LCAnYnl0ZUxlbmd0aCcpOwotCi0gICAgcmV0dXJuIHJlYWRlci5yZWFkKCk7
Ci0gIH0pLnRoZW4ocmVzdWx0ID0+IHsKLSAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdC5kb25lLCB0
cnVlLCAnZG9uZScpOwotICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LnZhbHVlLCB1bmRlZmluZWQs
ICd2YWx1ZScpOwotICB9KTsKLX0sICdSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBn
ZXRSZWFkZXIoKSwgZW5xdWV1ZSgpLCBjbG9zZSgpLCB0aGVuIHJlYWQoKScpOwotCi1wcm9taXNl
X3Rlc3QodCA9PiB7Ci0gIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAg
c3RhcnQoYykgewotICAgICAgYy5lbnF1ZXVlKG5ldyBVaW50OEFycmF5KDE2KSk7Ci0gICAgICBj
LmNsb3NlKCk7Ci0gICAgfSwKLSAgICBwdWxsOiB0LnVucmVhY2hlZF9mdW5jKCdwdWxsKCkgc2hv
dWxkIG5vdCBiZSBjYWxsZWQnKSwKLSAgICB0eXBlOiAnYnl0ZXMnCi0gIH0pOwotCi0gIGNvbnN0
IHJlYWRlciA9IHN0cmVhbS5nZXRSZWFkZXIoKTsKLQotICByZXR1cm4gcmVhZGVyLnJlYWQoKS50
aGVuKHJlc3VsdCA9PiB7Ci0gICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQuZG9uZSwgZmFsc2UsICdk
b25lJyk7Ci0KLSAgICBjb25zdCB2aWV3ID0gcmVzdWx0LnZhbHVlOwotICAgIGFzc2VydF9lcXVh
bHModmlldy5ieXRlT2Zmc2V0LCAwLCAnYnl0ZU9mZnNldCcpOwotICAgIGFzc2VydF9lcXVhbHMo
dmlldy5ieXRlTGVuZ3RoLCAxNiwgJ2J5dGVMZW5ndGgnKTsKLQotICAgIHJldHVybiByZWFkZXIu
cmVhZCgpOwotICB9KS50aGVuKHJlc3VsdCA9PiB7Ci0gICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQu
ZG9uZSwgdHJ1ZSwgJ2RvbmUnKTsKLSAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdC52YWx1ZSwgdW5k
ZWZpbmVkLCAndmFsdWUnKTsKLSAgfSk7Ci19LCAnUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNv
dXJjZTogZW5xdWV1ZSgpLCBjbG9zZSgpLCBnZXRSZWFkZXIoKSwgdGhlbiByZWFkKCknKTsKLQot
cHJvbWlzZV90ZXN0KCgpID0+IHsKLSAgbGV0IGNvbnRyb2xsZXI7Ci0gIGxldCBieW9iUmVxdWVz
dDsKLQotICBjb25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMp
IHsKLSAgICAgIGNvbnRyb2xsZXIgPSBjOwotICAgIH0sCi0gICAgcHVsbCgpIHsKLSAgICAgIGNv
bnRyb2xsZXIuZW5xdWV1ZShuZXcgVWludDhBcnJheSgxNikpOwotICAgICAgYnlvYlJlcXVlc3Qg
PSBjb250cm9sbGVyLmJ5b2JSZXF1ZXN0OwotICAgIH0sCi0gICAgdHlwZTogJ2J5dGVzJwotICB9
KTsKLQotICBjb25zdCByZWFkZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKCk7Ci0KLSAgcmV0dXJuIHJl
YWRlci5yZWFkKCkudGhlbihyZXN1bHQgPT4gewotICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LmRv
bmUsIGZhbHNlLCAnZG9uZScpOwotICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LnZhbHVlLmJ5dGVM
ZW5ndGgsIDE2LCAnYnl0ZUxlbmd0aCcpOwotICAgIGFzc2VydF9lcXVhbHMoYnlvYlJlcXVlc3Qs
IHVuZGVmaW5lZCwgJ2J5b2JSZXF1ZXN0IG11c3QgYmUgdW5kZWZpbmVkJyk7Ci0gIH0pOwotfSwg
J1JlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IFJlc3BvbmQgdG8gcHVsbCgpIGJ5IGVu
cXVldWUoKScpOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotICBsZXQgcHVsbENvdW50ID0gMDsK
LQotICBsZXQgY29udHJvbGxlcjsKLSAgbGV0IGJ5b2JSZXF1ZXN0OwotICBjb25zdCBkZXNpcmVk
U2l6ZXMgPSBbXTsKLQotICBjb25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAg
IHN0YXJ0KGMpIHsKLSAgICAgIGNvbnRyb2xsZXIgPSBjOwotICAgIH0sCi0gICAgcHVsbCgpIHsK
LSAgICAgIGJ5b2JSZXF1ZXN0ID0gY29udHJvbGxlci5ieW9iUmVxdWVzdDsKLSAgICAgIGRlc2ly
ZWRTaXplcy5wdXNoKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUpOwotICAgICAgY29udHJvbGxlci5l
bnF1ZXVlKG5ldyBVaW50OEFycmF5KDEpKTsKLSAgICAgIGRlc2lyZWRTaXplcy5wdXNoKGNvbnRy
b2xsZXIuZGVzaXJlZFNpemUpOwotICAgICAgY29udHJvbGxlci5lbnF1ZXVlKG5ldyBVaW50OEFy
cmF5KDEpKTsKLSAgICAgIGRlc2lyZWRTaXplcy5wdXNoKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUp
OwotCi0gICAgICArK3B1bGxDb3VudDsKLSAgICB9LAotICAgIHR5cGU6ICdieXRlcycKLSAgfSwg
ewotICAgIGhpZ2hXYXRlck1hcms6IDAKLSAgfSk7Ci0KLSAgY29uc3QgcmVhZGVyID0gc3RyZWFt
LmdldFJlYWRlcigpOwotCi0gIGNvbnN0IHAwID0gcmVhZGVyLnJlYWQoKTsKLSAgY29uc3QgcDEg
PSByZWFkZXIucmVhZCgpOwotICBjb25zdCBwMiA9IHJlYWRlci5yZWFkKCk7Ci0KLSAgLy8gUmVz
cG9uZCB0byB0aGUgZmlyc3QgcHVsbCBjYWxsLgotICBjb250cm9sbGVyLmVucXVldWUobmV3IFVp
bnQ4QXJyYXkoMSkpOwotCi0gIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAwLCAncHVsbENvdW50
IGFmdGVyIHRoZSBlbnF1ZXVlKCkgb3V0c2lkZSBwdWxsJyk7Ci0KLSAgcmV0dXJuIFByb21pc2Uu
YWxsKFtwMCwgcDEsIHAyXSkudGhlbihyZXN1bHQgPT4gewotICAgIGFzc2VydF9lcXVhbHMocHVs
bENvdW50LCAxLCAncHVsbENvdW50IGFmdGVyIGNvbXBsZXRpb24gb2YgYWxsIHJlYWQoKXMnKTsK
LQotICAgIGFzc2VydF9lcXVhbHMocmVzdWx0WzBdLmRvbmUsIGZhbHNlLCAncmVzdWx0WzBdLmRv
bmUnKTsKLSAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdFswXS52YWx1ZS5ieXRlTGVuZ3RoLCAxLCAn
cmVzdWx0WzBdLnZhbHVlLmJ5dGVMZW5ndGgnKTsKLSAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdFsx
XS5kb25lLCBmYWxzZSwgJ3Jlc3VsdFsxXS5kb25lJyk7Ci0gICAgYXNzZXJ0X2VxdWFscyhyZXN1
bHRbMV0udmFsdWUuYnl0ZUxlbmd0aCwgMSwgJ3Jlc3VsdFsxXS52YWx1ZS5ieXRlTGVuZ3RoJyk7
Ci0gICAgYXNzZXJ0X2VxdWFscyhyZXN1bHRbMl0uZG9uZSwgZmFsc2UsICdyZXN1bHRbMl0uZG9u
ZScpOwotICAgIGFzc2VydF9lcXVhbHMocmVzdWx0WzJdLnZhbHVlLmJ5dGVMZW5ndGgsIDEsICdy
ZXN1bHRbMl0udmFsdWUuYnl0ZUxlbmd0aCcpOwotICAgIGFzc2VydF9lcXVhbHMoYnlvYlJlcXVl
c3QsIHVuZGVmaW5lZCwgJ2J5b2JSZXF1ZXN0IHNob3VsZCBiZSB1bmRlZmluZWQnKTsKLSAgICBh
c3NlcnRfZXF1YWxzKGRlc2lyZWRTaXplc1swXSwgMCwgJ2Rlc2lyZWRTaXplIG9uIHB1bGwgc2hv
dWxkIGJlIDAnKTsKLSAgICBhc3NlcnRfZXF1YWxzKGRlc2lyZWRTaXplc1sxXSwgMCwgJ2Rlc2ly
ZWRTaXplIGFmdGVyIDFzdCBlbnF1ZXVlKCkgc2hvdWxkIGJlIDAnKTsKLSAgICBhc3NlcnRfZXF1
YWxzKGRlc2lyZWRTaXplc1syXSwgMCwgJ2Rlc2lyZWRTaXplIGFmdGVyIDJuZCBlbnF1ZXVlKCkg
c2hvdWxkIGJlIDAnKTsKLSAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMSwgJ3B1bGwoKSBz
aG91bGQgb25seSBiZSBjYWxsZWQgb25jZScpOwotICB9KTsKLX0sICdSZWFkYWJsZVN0cmVhbSB3
aXRoIGJ5dGUgc291cmNlOiBSZXNwb25kIHRvIHB1bGwoKSBieSBlbnF1ZXVlKCkgYXN5bmNocm9u
b3VzbHknKTsKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLSAgbGV0IHB1bGxDb3VudCA9IDA7Ci0K
LSAgbGV0IGJ5b2JSZXF1ZXN0OwotICBjb25zdCBkZXNpcmVkU2l6ZXMgPSBbXTsKLQotICBjb25z
dCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHB1bGwoYykgewotICAgICAgYnlv
YlJlcXVlc3QgPSBjLmJ5b2JSZXF1ZXN0OwotICAgICAgZGVzaXJlZFNpemVzLnB1c2goYy5kZXNp
cmVkU2l6ZSk7Ci0KLSAgICAgIGlmIChwdWxsQ291bnQgPCAzKSB7Ci0gICAgICAgIGMuZW5xdWV1
ZShuZXcgVWludDhBcnJheSgxKSk7Ci0gICAgICB9IGVsc2UgewotICAgICAgICBjLmNsb3NlKCk7
Ci0gICAgICB9Ci0KLSAgICAgICsrcHVsbENvdW50OwotICAgIH0sCi0gICAgdHlwZTogJ2J5dGVz
JwotICB9LCB7Ci0gICAgaGlnaFdhdGVyTWFyazogMjU2Ci0gIH0pOwotCi0gIGNvbnN0IHJlYWRl
ciA9IHN0cmVhbS5nZXRSZWFkZXIoKTsKLQotICBjb25zdCBwMCA9IHJlYWRlci5yZWFkKCk7Ci0g
IGNvbnN0IHAxID0gcmVhZGVyLnJlYWQoKTsKLSAgY29uc3QgcDIgPSByZWFkZXIucmVhZCgpOwot
Ci0gIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAwLCAnTm8gcHVsbCBhcyBzdGFydCgpIGp1c3Qg
ZmluaXNoZWQgYW5kIGlzIG5vdCB5ZXQgcmVmbGVjdGVkIHRvIHRoZSBzdGF0ZSBvZiB0aGUgc3Ry
ZWFtJyk7Ci0KLSAgcmV0dXJuIFByb21pc2UuYWxsKFtwMCwgcDEsIHAyXSkudGhlbihyZXN1bHQg
PT4gewotICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCA0LCAncHVsbENvdW50IGFmdGVyIGNv
bXBsZXRpb24gb2YgYWxsIHJlYWQoKXMnKTsKLQotICAgIGFzc2VydF9lcXVhbHMocmVzdWx0WzBd
LmRvbmUsIGZhbHNlLCAncmVzdWx0WzBdLmRvbmUnKTsKLSAgICBhc3NlcnRfZXF1YWxzKHJlc3Vs
dFswXS52YWx1ZS5ieXRlTGVuZ3RoLCAxLCAncmVzdWx0WzBdLnZhbHVlLmJ5dGVMZW5ndGgnKTsK
LSAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdFsxXS5kb25lLCBmYWxzZSwgJ3Jlc3VsdFsxXS5kb25l
Jyk7Ci0gICAgYXNzZXJ0X2VxdWFscyhyZXN1bHRbMV0udmFsdWUuYnl0ZUxlbmd0aCwgMSwgJ3Jl
c3VsdFsxXS52YWx1ZS5ieXRlTGVuZ3RoJyk7Ci0gICAgYXNzZXJ0X2VxdWFscyhyZXN1bHRbMl0u
ZG9uZSwgZmFsc2UsICdyZXN1bHRbMl0uZG9uZScpOwotICAgIGFzc2VydF9lcXVhbHMocmVzdWx0
WzJdLnZhbHVlLmJ5dGVMZW5ndGgsIDEsICdyZXN1bHRbMl0udmFsdWUuYnl0ZUxlbmd0aCcpOwot
ICAgIGFzc2VydF9lcXVhbHMoYnlvYlJlcXVlc3QsIHVuZGVmaW5lZCwgJ2J5b2JSZXF1ZXN0IHNo
b3VsZCBiZSB1bmRlZmluZWQnKTsKLSAgICBhc3NlcnRfZXF1YWxzKGRlc2lyZWRTaXplc1swXSwg
MjU2LCAnZGVzaXJlZFNpemUgb24gcHVsbCBzaG91bGQgYmUgMjU2Jyk7Ci0gICAgYXNzZXJ0X2Vx
dWFscyhkZXNpcmVkU2l6ZXNbMV0sIDI1NiwgJ2Rlc2lyZWRTaXplIGFmdGVyIDFzdCBlbnF1ZXVl
KCkgc2hvdWxkIGJlIDI1NicpOwotICAgIGFzc2VydF9lcXVhbHMoZGVzaXJlZFNpemVzWzJdLCAy
NTYsICdkZXNpcmVkU2l6ZSBhZnRlciAybmQgZW5xdWV1ZSgpIHNob3VsZCBiZSAyNTYnKTsKLSAg
ICBhc3NlcnRfZXF1YWxzKGRlc2lyZWRTaXplc1szXSwgMjU2LCAnZGVzaXJlZFNpemUgYWZ0ZXIg
M3JkIGVucXVldWUoKSBzaG91bGQgYmUgMjU2Jyk7Ci0gIH0pOwotfSwgJ1JlYWRhYmxlU3RyZWFt
IHdpdGggYnl0ZSBzb3VyY2U6IFJlc3BvbmQgdG8gbXVsdGlwbGUgcHVsbCgpIGJ5IHNlcGFyYXRl
IGVucXVldWUoKScpOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotICBsZXQgY29udHJvbGxlcjsK
LQotICBsZXQgcHVsbENvdW50ID0gMDsKLSAgY29uc3QgYnlvYlJlcXVlc3REZWZpbmVkID0gW107
Ci0KLSAgY29uc3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7
Ci0gICAgICBjb250cm9sbGVyID0gYzsKLSAgICB9LAotICAgIHB1bGwoKSB7Ci0gICAgICBieW9i
UmVxdWVzdERlZmluZWQucHVzaChjb250cm9sbGVyLmJ5b2JSZXF1ZXN0ICE9PSB1bmRlZmluZWQp
OwotCi0gICAgICBjb25zdCB2aWV3ID0gY29udHJvbGxlci5ieW9iUmVxdWVzdC52aWV3OwotICAg
ICAgdmlld1swXSA9IDB4MDE7Ci0gICAgICBjb250cm9sbGVyLmJ5b2JSZXF1ZXN0LnJlc3BvbmQo
MSk7Ci0KLSAgICAgIGJ5b2JSZXF1ZXN0RGVmaW5lZC5wdXNoKGNvbnRyb2xsZXIuYnlvYlJlcXVl
c3QgIT09IHVuZGVmaW5lZCk7Ci0KLSAgICAgICsrcHVsbENvdW50OwotICAgIH0sCi0gICAgdHlw
ZTogJ2J5dGVzJwotICB9KTsKLQotICBjb25zdCByZWFkZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKHsg
bW9kZTogJ2J5b2InIH0pOwotCi0gIHJldHVybiByZWFkZXIucmVhZChuZXcgVWludDhBcnJheSgx
KSkudGhlbihyZXN1bHQgPT4gewotICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LmRvbmUsIGZhbHNl
LCAncmVzdWx0LmRvbmUnKTsKLSAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdC52YWx1ZS5ieXRlTGVu
Z3RoLCAxLCAncmVzdWx0LnZhbHVlLmJ5dGVMZW5ndGgnKTsKLSAgICBhc3NlcnRfZXF1YWxzKHJl
c3VsdC52YWx1ZVswXSwgMHgwMSwgJ3Jlc3VsdC52YWx1ZVswXScpOwotICAgIGFzc2VydF9lcXVh
bHMocHVsbENvdW50LCAxLCAncHVsbCgpIHNob3VsZCBiZSBjYWxsZWQgb25seSBvbmNlJyk7Ci0g
ICAgYXNzZXJ0X3RydWUoYnlvYlJlcXVlc3REZWZpbmVkWzBdLCAnYnlvYlJlcXVlc3QgbXVzdCBu
b3QgYmUgdW5kZWZpbmVkIGJlZm9yZSByZXNwb25kKCknKTsKLSAgICBhc3NlcnRfZmFsc2UoYnlv
YlJlcXVlc3REZWZpbmVkWzFdLCAnYnlvYlJlcXVlc3QgbXVzdCBiZSB1bmRlZmluZWQgYWZ0ZXIg
cmVzcG9uZCgpJyk7Ci0gIH0pOwotfSwgJ1JlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6
IHJlYWQodmlldyksIHRoZW4gcmVzcG9uZCgpJyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0g
IGxldCBjb250cm9sbGVyOwotCi0gIGxldCBwdWxsQ291bnQgPSAwOwotICBjb25zdCBieW9iUmVx
dWVzdERlZmluZWQgPSBbXTsKLQotICBjb25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0o
ewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGNvbnRyb2xsZXIgPSBjOwotICAgIH0sCi0gICAgcHVs
bCgpIHsKLSAgICAgIGJ5b2JSZXF1ZXN0RGVmaW5lZC5wdXNoKGNvbnRyb2xsZXIuYnlvYlJlcXVl
c3QgIT09IHVuZGVmaW5lZCk7Ci0KLSAgICAgIC8vIEVtdWxhdGUgQXJyYXlCdWZmZXIgdHJhbnNm
ZXIgYnkganVzdCBjcmVhdGluZyBhIG5ldyBBcnJheUJ1ZmZlciBhbmQgcGFzcyBpdC4gQnkgY2hl
Y2tpbmcgdGhlIHJlc3VsdCBvZgotICAgICAgLy8gcmVhZCh2aWV3KSwgd2UgdGVzdCB0aGF0IHRo
ZSByZXNwb25kKCkncyBidWZmZXIgYXJndW1lbnQgaXMgd29ya2luZyBjb3JyZWN0bHkuCi0gICAg
ICAvLwotICAgICAgLy8gQSByZWFsIGltcGxlbWVudGF0aW9uIG9mIHRoZSB1bmRlcmx5aW5nIGJ5
dGUgc291cmNlIHdvdWxkIHRyYW5zZmVyIGNvbnRyb2xsZXIuYnlvYlJlcXVlc3Qudmlldy5idWZm
ZXIgaW50bwotICAgICAgLy8gYSBuZXcgQXJyYXlCdWZmZXIsIHRoZW4gY29uc3RydWN0IGEgdmll
dyBhcm91bmQgaXQgYW5kIHdyaXRlIHRvIGl0LgotICAgICAgY29uc3QgdHJhbnNmZXJyZWRWaWV3
ID0gbmV3IFVpbnQ4QXJyYXkoMSk7Ci0gICAgICB0cmFuc2ZlcnJlZFZpZXdbMF0gPSAweDAxOwot
ICAgICAgY29udHJvbGxlci5ieW9iUmVxdWVzdC5yZXNwb25kV2l0aE5ld1ZpZXcodHJhbnNmZXJy
ZWRWaWV3KTsKLQotICAgICAgYnlvYlJlcXVlc3REZWZpbmVkLnB1c2goY29udHJvbGxlci5ieW9i
UmVxdWVzdCAhPT0gdW5kZWZpbmVkKTsKLQotICAgICAgKytwdWxsQ291bnQ7Ci0gICAgfSwKLSAg
ICB0eXBlOiAnYnl0ZXMnCi0gIH0pOwotCi0gIGNvbnN0IHJlYWRlciA9IHN0cmVhbS5nZXRSZWFk
ZXIoeyBtb2RlOiAnYnlvYicgfSk7Ci0KLSAgcmV0dXJuIHJlYWRlci5yZWFkKG5ldyBVaW50OEFy
cmF5KDEpKS50aGVuKHJlc3VsdCA9PiB7Ci0gICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQuZG9uZSwg
ZmFsc2UsICdyZXN1bHQuZG9uZScpOwotICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LnZhbHVlLmJ5
dGVMZW5ndGgsIDEsICdyZXN1bHQudmFsdWUuYnl0ZUxlbmd0aCcpOwotICAgIGFzc2VydF9lcXVh
bHMocmVzdWx0LnZhbHVlWzBdLCAweDAxLCAncmVzdWx0LnZhbHVlWzBdJyk7Ci0gICAgYXNzZXJ0
X2VxdWFscyhwdWxsQ291bnQsIDEsICdwdWxsKCkgc2hvdWxkIGJlIGNhbGxlZCBvbmx5IG9uY2Un
KTsKLSAgICBhc3NlcnRfdHJ1ZShieW9iUmVxdWVzdERlZmluZWRbMF0sICdieW9iUmVxdWVzdCBt
dXN0IG5vdCBiZSB1bmRlZmluZWQgYmVmb3JlIHJlc3BvbmQoKScpOwotICAgIGFzc2VydF9mYWxz
ZShieW9iUmVxdWVzdERlZmluZWRbMV0sICdieW9iUmVxdWVzdCBtdXN0IGJlIHVuZGVmaW5lZCBh
ZnRlciByZXNwb25kKCknKTsKLSAgfSk7Ci19LCAnUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNv
dXJjZTogcmVhZCh2aWV3KSwgdGhlbiByZXNwb25kKCkgd2l0aCBhIHRyYW5zZmVycmVkIEFycmF5
QnVmZmVyJyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0gIGxldCBjb250cm9sbGVyOwotICBs
ZXQgYnlvYlJlcXVlc3RXYXNEZWZpbmVkOwotICBsZXQgaW5jb3JyZWN0UmVzcG9uZEV4Y2VwdGlv
bjsKLQotICBjb25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMp
IHsKLSAgICAgIGNvbnRyb2xsZXIgPSBjOwotICAgIH0sCi0gICAgcHVsbCgpIHsKLSAgICAgIGJ5
b2JSZXF1ZXN0V2FzRGVmaW5lZCA9IGNvbnRyb2xsZXIuYnlvYlJlcXVlc3QgIT09IHVuZGVmaW5l
ZDsKLQotICAgICAgdHJ5IHsKLSAgICAgICAgY29udHJvbGxlci5ieW9iUmVxdWVzdC5yZXNwb25k
KDIpOwotICAgICAgfSBjYXRjaCAoZSkgewotICAgICAgICBpbmNvcnJlY3RSZXNwb25kRXhjZXB0
aW9uID0gZTsKLSAgICAgIH0KLQotICAgICAgY29udHJvbGxlci5ieW9iUmVxdWVzdC5yZXNwb25k
KDEpOwotICAgIH0sCi0gICAgdHlwZTogJ2J5dGVzJwotICB9KTsKLQotICBjb25zdCByZWFkZXIg
PSBzdHJlYW0uZ2V0UmVhZGVyKHsgbW9kZTogJ2J5b2InIH0pOwotCi0gIHJldHVybiByZWFkZXIu
cmVhZChuZXcgVWludDhBcnJheSgxKSkudGhlbigoKSA9PiB7Ci0gICAgYXNzZXJ0X3RydWUoYnlv
YlJlcXVlc3RXYXNEZWZpbmVkLCAnYnlvYlJlcXVlc3Qgc2hvdWxkIGJlIGRlZmluZWQnKTsKLSAg
ICBhc3NlcnRfbm90X2VxdWFscyhpbmNvcnJlY3RSZXNwb25kRXhjZXB0aW9uLCB1bmRlZmluZWQs
ICdyZXNwb25kKCkgbXVzdCB0aHJvdycpOwotICAgIGFzc2VydF9lcXVhbHMoaW5jb3JyZWN0UmVz
cG9uZEV4Y2VwdGlvbi5uYW1lLCAnUmFuZ2VFcnJvcicsICdyZXNwb25kKCkgbXVzdCB0aHJvdyBh
IFJhbmdlRXJyb3InKTsKLSAgfSk7Ci19LCAnUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJj
ZTogcmVhZCh2aWV3KSwgdGhlbiByZXNwb25kKCkgd2l0aCB0b28gYmlnIHZhbHVlJyk7Ci0KLXBy
b21pc2VfdGVzdCgoKSA9PiB7Ci0gIGxldCBwdWxsQ291bnQgPSAwOwotCi0gIGxldCBjb250cm9s
bGVyOwotICBsZXQgYnlvYlJlcXVlc3Q7Ci0gIGxldCB2aWV3SW5mbzsKLQotICBjb25zdCBzdHJl
YW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGNvbnRyb2xs
ZXIgPSBjOwotICAgIH0sCi0gICAgcHVsbCgpIHsKLSAgICAgICsrcHVsbENvdW50OwotCi0gICAg
ICBieW9iUmVxdWVzdCA9IGNvbnRyb2xsZXIuYnlvYlJlcXVlc3Q7Ci0gICAgICBjb25zdCB2aWV3
ID0gYnlvYlJlcXVlc3QudmlldzsKLSAgICAgIHZpZXdJbmZvID0gZXh0cmFjdFZpZXdJbmZvKHZp
ZXcpOwotCi0gICAgICB2aWV3WzBdID0gMHgwMTsKLSAgICAgIHZpZXdbMV0gPSAweDAyOwotICAg
ICAgdmlld1syXSA9IDB4MDM7Ci0KLSAgICAgIGNvbnRyb2xsZXIuYnlvYlJlcXVlc3QucmVzcG9u
ZCgzKTsKLSAgICB9LAotICAgIHR5cGU6ICdieXRlcycKLSAgfSk7Ci0KLSAgY29uc3QgcmVhZGVy
ID0gc3RyZWFtLmdldFJlYWRlcih7IG1vZGU6ICdieW9iJyB9KTsKLQotICByZXR1cm4gcmVhZGVy
LnJlYWQobmV3IFVpbnQxNkFycmF5KDIpKS50aGVuKHJlc3VsdCA9PiB7Ci0gICAgYXNzZXJ0X2Vx
dWFscyhwdWxsQ291bnQsIDEpOwotCi0gICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQuZG9uZSwgZmFs
c2UsICdkb25lJyk7Ci0KLSAgICBjb25zdCB2aWV3ID0gcmVzdWx0LnZhbHVlOwotICAgIGFzc2Vy
dF9lcXVhbHModmlldy5ieXRlT2Zmc2V0LCAwLCAnYnl0ZU9mZnNldCcpOwotICAgIGFzc2VydF9l
cXVhbHModmlldy5ieXRlTGVuZ3RoLCAyLCAnYnl0ZUxlbmd0aCcpOwotCi0gICAgYXNzZXJ0X2Vx
dWFscyh2aWV3WzBdLCAweDAyMDEpOwotCi0gICAgcmV0dXJuIHJlYWRlci5yZWFkKG5ldyBVaW50
OEFycmF5KDEpKTsKLSAgfSkudGhlbihyZXN1bHQgPT4gewotICAgIGFzc2VydF9lcXVhbHMocHVs
bENvdW50LCAxKTsKLSAgICBhc3NlcnRfbm90X2VxdWFscyhieW9iUmVxdWVzdCwgdW5kZWZpbmVk
LCAnYnlvYlJlcXVlc3QgbXVzdCBub3QgYmUgdW5kZWZpbmVkJyk7Ci0gICAgYXNzZXJ0X2VxdWFs
cyh2aWV3SW5mby5jb25zdHJ1Y3RvciwgVWludDhBcnJheSwgJ3ZpZXcuY29uc3RydWN0b3Igc2hv
dWxkIGJlIFVpbnQ4QXJyYXknKTsKLSAgICBhc3NlcnRfZXF1YWxzKHZpZXdJbmZvLmJ1ZmZlckJ5
dGVMZW5ndGgsIDQsICd2aWV3LmJ1ZmZlci5ieXRlTGVuZ3RoIHNob3VsZCBiZSA0Jyk7Ci0gICAg
YXNzZXJ0X2VxdWFscyh2aWV3SW5mby5ieXRlT2Zmc2V0LCAwLCAndmlldy5ieXRlT2Zmc2V0IHNo
b3VsZCBiZSAwJyk7Ci0gICAgYXNzZXJ0X2VxdWFscyh2aWV3SW5mby5ieXRlTGVuZ3RoLCA0LCAn
dmlldy5ieXRlTGVuZ3RoIHNob3VsZCBiZSA0Jyk7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKHJlc3Vs
dC5kb25lLCBmYWxzZSwgJ2RvbmUnKTsKLQotICAgIGNvbnN0IHZpZXcgPSByZXN1bHQudmFsdWU7
Ci0gICAgYXNzZXJ0X2VxdWFscyh2aWV3LmJ5dGVPZmZzZXQsIDAsICdieXRlT2Zmc2V0Jyk7Ci0g
ICAgYXNzZXJ0X2VxdWFscyh2aWV3LmJ5dGVMZW5ndGgsIDEsICdieXRlTGVuZ3RoJyk7Ci0KLSAg
ICBhc3NlcnRfZXF1YWxzKHZpZXdbMF0sIDB4MDMpOwotICB9KTsKLX0sICdSZWFkYWJsZVN0cmVh
bSB3aXRoIGJ5dGUgc291cmNlOiByZXNwb25kKDMpIHRvIHJlYWQodmlldykgd2l0aCAyIGVsZW1l
bnQgVWludDE2QXJyYXkgZW5xdWV1ZXMgdGhlIDEgYnl0ZSAnICsKLSAgICdyZW1haW5kZXInKTsK
LQotcHJvbWlzZV90ZXN0KHQgPT4gewotICBjb25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJl
YW0oewotICAgIHN0YXJ0KGNvbnRyb2xsZXIpIHsKLSAgICAgIGNvbnN0IHZpZXcgPSBuZXcgVWlu
dDhBcnJheSgxNik7Ci0gICAgICB2aWV3WzE1XSA9IDB4MDE7Ci0gICAgICBjb250cm9sbGVyLmVu
cXVldWUodmlldyk7Ci0gICAgfSwKLSAgICBwdWxsOiB0LnVucmVhY2hlZF9mdW5jKCdwdWxsKCkg
c2hvdWxkIG5vdCBiZSBjYWxsZWQnKSwKLSAgICB0eXBlOiAnYnl0ZXMnCi0gIH0pOwotCi0gIGNv
bnN0IHJlYWRlciA9IHN0cmVhbS5nZXRSZWFkZXIoeyBtb2RlOiAnYnlvYicgfSk7Ci0KLSAgcmV0
dXJuIHJlYWRlci5yZWFkKG5ldyBVaW50OEFycmF5KDE2KSkudGhlbihyZXN1bHQgPT4gewotICAg
IGFzc2VydF9lcXVhbHMocmVzdWx0LmRvbmUsIGZhbHNlKTsKLQotICAgIGNvbnN0IHZpZXcgPSBy
ZXN1bHQudmFsdWU7Ci0gICAgYXNzZXJ0X2VxdWFscyh2aWV3LmJ5dGVPZmZzZXQsIDApOwotICAg
IGFzc2VydF9lcXVhbHModmlldy5ieXRlTGVuZ3RoLCAxNik7Ci0gICAgYXNzZXJ0X2VxdWFscyh2
aWV3WzE1XSwgMHgwMSk7Ci0gIH0pOwotfSwgJ1JlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3Vy
Y2U6IGVucXVldWUoKSwgZ2V0UmVhZGVyKCksIHRoZW4gcmVhZCh2aWV3KScpOwotCi1wcm9taXNl
X3Rlc3QodCA9PiB7Ci0gIGxldCBjYW5jZWxDb3VudCA9IDA7Ci0gIGxldCByZWFzb247Ci0KLSAg
Y29uc3QgcGFzc2VkUmVhc29uID0gbmV3IFR5cGVFcnJvcignZm9vJyk7Ci0KLSAgY29uc3Qgc3Ry
ZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0gICAgICBjLmVucXVl
dWUobmV3IFVpbnQ4QXJyYXkoMTYpKTsKLSAgICB9LAotICAgIHB1bGw6IHQudW5yZWFjaGVkX2Z1
bmMoJ3B1bGwoKSBzaG91bGQgbm90IGJlIGNhbGxlZCcpLAotICAgIGNhbmNlbChyKSB7Ci0gICAg
ICBpZiAoY2FuY2VsQ291bnQgPT09IDApIHsKLSAgICAgICAgcmVhc29uID0gcjsKLSAgICAgIH0K
LQotICAgICAgKytjYW5jZWxDb3VudDsKLSAgICB9LAotICAgIHR5cGU6ICdieXRlcycKLSAgfSk7
Ci0KLSAgY29uc3QgcmVhZGVyID0gc3RyZWFtLmdldFJlYWRlcigpOwotCi0gIHJldHVybiByZWFk
ZXIuY2FuY2VsKHBhc3NlZFJlYXNvbikudGhlbihyZXN1bHQgPT4gewotICAgIGFzc2VydF9lcXVh
bHMocmVzdWx0LCB1bmRlZmluZWQpOwotICAgIGFzc2VydF9lcXVhbHMoY2FuY2VsQ291bnQsIDEp
OwotICAgIGFzc2VydF9lcXVhbHMocmVhc29uLCBwYXNzZWRSZWFzb24sICdyZWFzb24gc2hvdWxk
IGVxdWFsIHRoZSBwYXNzZWQgcmVhc29uJyk7Ci0gIH0pOwotfSwgJ1JlYWRhYmxlU3RyZWFtIHdp
dGggYnl0ZSBzb3VyY2U6IGVucXVldWUoKSwgZ2V0UmVhZGVyKCksIHRoZW4gY2FuY2VsKCkgKG1v
ZGUgPSBub3QgQllPQiknKTsKLQotcHJvbWlzZV90ZXN0KHQgPT4gewotICBsZXQgY2FuY2VsQ291
bnQgPSAwOwotICBsZXQgcmVhc29uOwotCi0gIGNvbnN0IHBhc3NlZFJlYXNvbiA9IG5ldyBUeXBl
RXJyb3IoJ2ZvbycpOwotCi0gIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0g
ICAgc3RhcnQoYykgewotICAgICAgYy5lbnF1ZXVlKG5ldyBVaW50OEFycmF5KDE2KSk7Ci0gICAg
fSwKLSAgICBwdWxsOiB0LnVucmVhY2hlZF9mdW5jKCdwdWxsKCkgc2hvdWxkIG5vdCBiZSBjYWxs
ZWQnKSwKLSAgICBjYW5jZWwocikgewotICAgICAgaWYgKGNhbmNlbENvdW50ID09PSAwKSB7Ci0g
ICAgICAgIHJlYXNvbiA9IHI7Ci0gICAgICB9Ci0KLSAgICAgICsrY2FuY2VsQ291bnQ7Ci0gICAg
fSwKLSAgICB0eXBlOiAnYnl0ZXMnCi0gIH0pOwotCi0gIGNvbnN0IHJlYWRlciA9IHN0cmVhbS5n
ZXRSZWFkZXIoeyBtb2RlOiAnYnlvYicgfSk7Ci0KLSAgcmV0dXJuIHJlYWRlci5jYW5jZWwocGFz
c2VkUmVhc29uKS50aGVuKHJlc3VsdCA9PiB7Ci0gICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQsIHVu
ZGVmaW5lZCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhjYW5jZWxDb3VudCwgMSk7Ci0gICAgYXNzZXJ0
X2VxdWFscyhyZWFzb24sIHBhc3NlZFJlYXNvbiwgJ3JlYXNvbiBzaG91bGQgZXF1YWwgdGhlIHBh
c3NlZCByZWFzb24nKTsKLSAgfSk7Ci19LCAnUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJj
ZTogZW5xdWV1ZSgpLCBnZXRSZWFkZXIoKSwgdGhlbiBjYW5jZWwoKSAobW9kZSA9IEJZT0IpJyk7
Ci0KLXByb21pc2VfdGVzdCh0ID0+IHsKLSAgbGV0IGNhbmNlbENvdW50ID0gMDsKLSAgbGV0IHJl
YXNvbjsKLQotICBjb25zdCBwYXNzZWRSZWFzb24gPSBuZXcgVHlwZUVycm9yKCdmb28nKTsKLQot
ICBsZXQgY29udHJvbGxlcjsKLQotICBjb25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0o
ewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGNvbnRyb2xsZXIgPSBjOwotICAgIH0sCi0gICAgcHVs
bDogdC51bnJlYWNoZWRfZnVuYygncHVsbCgpIHNob3VsZCBub3QgYmUgY2FsbGVkJyksCi0gICAg
Y2FuY2VsKHIpIHsKLSAgICAgIGlmIChjYW5jZWxDb3VudCA9PT0gMCkgewotICAgICAgICByZWFz
b24gPSByOwotICAgICAgICBjb250cm9sbGVyLmJ5b2JSZXF1ZXN0LnJlc3BvbmQoMCk7Ci0gICAg
ICB9Ci0KLSAgICAgICsrY2FuY2VsQ291bnQ7Ci0KLSAgICAgIHJldHVybiAnYmFyJzsKLSAgICB9
LAotICAgIHR5cGU6ICdieXRlcycKLSAgfSk7Ci0KLSAgY29uc3QgcmVhZGVyID0gc3RyZWFtLmdl
dFJlYWRlcih7IG1vZGU6ICdieW9iJyB9KTsKLQotICBjb25zdCByZWFkUHJvbWlzZSA9IHJlYWRl
ci5yZWFkKG5ldyBVaW50OEFycmF5KDEpKS50aGVuKHJlc3VsdCA9PiB7Ci0gICAgYXNzZXJ0X2Vx
dWFscyhyZXN1bHQuZG9uZSwgdHJ1ZSk7Ci0gIH0pOwotCi0gIGNvbnN0IGNhbmNlbFByb21pc2Ug
PSByZWFkZXIuY2FuY2VsKHBhc3NlZFJlYXNvbikudGhlbihyZXN1bHQgPT4gewotICAgIGFzc2Vy
dF9lcXVhbHMocmVzdWx0LCB1bmRlZmluZWQpOwotICAgIGFzc2VydF9lcXVhbHMoY2FuY2VsQ291
bnQsIDEpOwotICAgIGFzc2VydF9lcXVhbHMocmVhc29uLCBwYXNzZWRSZWFzb24sICdyZWFzb24g
c2hvdWxkIGVxdWFsIHRoZSBwYXNzZWQgcmVhc29uJyk7Ci0gIH0pOwotCi0gIHJldHVybiBQcm9t
aXNlLmFsbChbcmVhZFByb21pc2UsIGNhbmNlbFByb21pc2VdKTsKLX0sICdSZWFkYWJsZVN0cmVh
bSB3aXRoIGJ5dGUgc291cmNlOiBnZXRSZWFkZXIoKSwgcmVhZCh2aWV3KSwgdGhlbiBjYW5jZWwo
KScpOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotICBsZXQgcHVsbENvdW50ID0gMDsKLQotICBs
ZXQgY29udHJvbGxlcjsKLSAgbGV0IGJ5b2JSZXF1ZXN0OwotICBjb25zdCB2aWV3SW5mb3MgPSBb
XTsKLQotICBjb25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMp
IHsKLSAgICAgIGNvbnRyb2xsZXIgPSBjOwotICAgIH0sCi0gICAgcHVsbCgpIHsKLSAgICAgIGJ5
b2JSZXF1ZXN0ID0gY29udHJvbGxlci5ieW9iUmVxdWVzdDsKLQotICAgICAgdmlld0luZm9zLnB1
c2goZXh0cmFjdFZpZXdJbmZvKGNvbnRyb2xsZXIuYnlvYlJlcXVlc3QudmlldykpOwotICAgICAg
Y29udHJvbGxlci5lbnF1ZXVlKG5ldyBVaW50OEFycmF5KDEpKTsKLSAgICAgIHZpZXdJbmZvcy5w
dXNoKGV4dHJhY3RWaWV3SW5mbyhjb250cm9sbGVyLmJ5b2JSZXF1ZXN0LnZpZXcpKTsKLQotICAg
ICAgKytwdWxsQ291bnQ7Ci0gICAgfSwKLSAgICB0eXBlOiAnYnl0ZXMnCi0gIH0pOwotCi0gIHJl
dHVybiBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHsKLSAgICBhc3NlcnRfZXF1YWxzKHB1
bGxDb3VudCwgMCwgJ05vIHB1bGwoKSBhcyBubyByZWFkKHZpZXcpIHlldCcpOwotCi0gICAgY29u
c3QgcmVhZGVyID0gc3RyZWFtLmdldFJlYWRlcih7IG1vZGU6ICdieW9iJyB9KTsKLQotICAgIGNv
bnN0IHByb21pc2UgPSByZWFkZXIucmVhZChuZXcgVWludDE2QXJyYXkoMSkpLnRoZW4ocmVzdWx0
ID0+IHsKLSAgICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LmRvbmUsIHRydWUsICdyZXN1bHQuZG9u
ZScpOwotICAgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQudmFsdWUuY29uc3RydWN0b3IsIFVpbnQx
NkFycmF5LCAncmVzdWx0LnZhbHVlJyk7Ci0gICAgfSk7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKHB1
bGxDb3VudCwgMSwgJzEgcHVsbCgpIHNob3VsZCBoYXZlIGJlZW4gbWFkZSBpbiByZXNwb25zZSB0
byBwYXJ0aWFsIGZpbGwgYnkgZW5xdWV1ZSgpJyk7Ci0gICAgYXNzZXJ0X25vdF9lcXVhbHMoYnlv
YlJlcXVlc3QsIHVuZGVmaW5lZCwgJ2J5b2JSZXF1ZXN0IHNob3VsZCBub3QgYmUgdW5kZWZpbmVk
Jyk7Ci0gICAgYXNzZXJ0X2VxdWFscyh2aWV3SW5mb3NbMF0uYnl0ZUxlbmd0aCwgMiwgJ2J5dGVM
ZW5ndGggYmVmb3JlIGVucXVldWUoKSBzaG91aWxkIGJlIDInKTsKLSAgICBhc3NlcnRfZXF1YWxz
KHZpZXdJbmZvc1sxXS5ieXRlTGVuZ3RoLCAxLCAnYnl0ZUxlbmd0aCBhZnRlciBlbnF1ZXVlKCkg
c2hvdWxkIGJlIDEnKTsKLQotCi0gICAgcmVhZGVyLmNhbmNlbCgpOwotCi0gICAgLy8gVGVsbCB0
aGF0IHRoZSBidWZmZXIgZ2l2ZW4gdmlhIHB1bGwoKSBpcyByZXR1cm5lZC4KLSAgICBjb250cm9s
bGVyLmJ5b2JSZXF1ZXN0LnJlc3BvbmQoMCk7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3Vu
dCwgMSwgJ3B1bGwoKSBzaG91bGQgb25seSBiZSBjYWxsZWQgb25jZScpOwotICAgIHJldHVybiBw
cm9taXNlOwotICB9KTsKLX0sICdSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBjYW5j
ZWwoKSB3aXRoIHBhcnRpYWxseSBmaWxsZWQgcGVuZGluZyBwdWxsKCkgcmVxdWVzdCcpOwotCi1w
cm9taXNlX3Rlc3QoKCkgPT4gewotICBsZXQgY29udHJvbGxlcjsKLSAgbGV0IGJ5b2JSZXF1ZXN0
OwotCi0gIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykg
ewotICAgICAgY29uc3QgdmlldyA9IG5ldyBVaW50OEFycmF5KDgpOwotICAgICAgdmlld1s3XSA9
IDB4MDE7Ci0gICAgICBjLmVucXVldWUodmlldyk7Ci0KLSAgICAgIGNvbnRyb2xsZXIgPSBjOwot
ICAgIH0sCi0gICAgcHVsbCgpIHsKLSAgICAgIGJ5b2JSZXF1ZXN0ID0gY29udHJvbGxlci5ieW9i
UmVxdWVzdDsKLSAgICB9LAotICAgIHR5cGU6ICdieXRlcycKLSAgfSk7Ci0KLSAgY29uc3QgcmVh
ZGVyID0gc3RyZWFtLmdldFJlYWRlcih7IG1vZGU6ICdieW9iJyB9KTsKLQotICBjb25zdCBidWZm
ZXIgPSBuZXcgQXJyYXlCdWZmZXIoMTYpOwotCi0gIHJldHVybiByZWFkZXIucmVhZChuZXcgVWlu
dDhBcnJheShidWZmZXIsIDgsIDgpKS50aGVuKHJlc3VsdCA9PiB7Ci0gICAgYXNzZXJ0X2VxdWFs
cyhyZXN1bHQuZG9uZSwgZmFsc2UpOwotCi0gICAgYXNzZXJ0X2VxdWFscyhieW9iUmVxdWVzdCwg
dW5kZWZpbmVkLCAnYnlvYlJlcXVlc3QgbXVzdCBiZSB1bmRlZmluZWQnKTsKLQotICAgIGNvbnN0
IHZpZXcgPSByZXN1bHQudmFsdWU7Ci0gICAgYXNzZXJ0X2VxdWFscyh2aWV3LmNvbnN0cnVjdG9y
LCBVaW50OEFycmF5KTsKLSAgICBhc3NlcnRfZXF1YWxzKHZpZXcuYnVmZmVyLmJ5dGVMZW5ndGgs
IDE2KTsKLSAgICBhc3NlcnRfZXF1YWxzKHZpZXcuYnl0ZU9mZnNldCwgOCk7Ci0gICAgYXNzZXJ0
X2VxdWFscyh2aWV3LmJ5dGVMZW5ndGgsIDgpOwotICAgIGFzc2VydF9lcXVhbHModmlld1s3XSwg
MHgwMSk7Ci0gIH0pOwotfSwgJ1JlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IGVucXVl
dWUoKSwgZ2V0UmVhZGVyKCksIHRoZW4gcmVhZCh2aWV3KSB3aGVyZSB2aWV3LmJ1ZmZlciBpcyBu
b3QgZnVsbHkgJyArCi0gICAnY292ZXJlZCBieSB2aWV3Jyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9
PiB7Ci0gIGxldCBjb250cm9sbGVyOwotICBsZXQgYnlvYlJlcXVlc3Q7Ci0KLSAgY29uc3Qgc3Ry
ZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0gICAgICBsZXQgdmll
dzsKLQotICAgICAgdmlldyA9IG5ldyBVaW50OEFycmF5KDE2KTsKLSAgICAgIHZpZXdbMTVdID0g
MTIzOwotICAgICAgYy5lbnF1ZXVlKHZpZXcpOwotCi0gICAgICB2aWV3ID0gbmV3IFVpbnQ4QXJy
YXkoOCk7Ci0gICAgICB2aWV3WzddID0gMTExOwotICAgICAgYy5lbnF1ZXVlKHZpZXcpOwotCi0g
ICAgICBjb250cm9sbGVyID0gYzsKLSAgICB9LAotICAgIHB1bGwoKSB7Ci0gICAgICBieW9iUmVx
dWVzdCA9IGNvbnRyb2xsZXIuYnlvYlJlcXVlc3Q7Ci0gICAgfSwKLSAgICB0eXBlOiAnYnl0ZXMn
Ci0gIH0pOwotCi0gIGNvbnN0IHJlYWRlciA9IHN0cmVhbS5nZXRSZWFkZXIoeyBtb2RlOiAnYnlv
YicgfSk7Ci0KLSAgcmV0dXJuIHJlYWRlci5yZWFkKG5ldyBVaW50OEFycmF5KDI0KSkudGhlbihy
ZXN1bHQgPT4gewotICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LmRvbmUsIGZhbHNlLCAnZG9uZScp
OwotCi0gICAgYXNzZXJ0X2VxdWFscyhieW9iUmVxdWVzdCwgdW5kZWZpbmVkLCAnYnlvYlJlcXVl
c3QgbXVzdCBiZSB1bmRlZmluZWQnKTsKLQotICAgIGNvbnN0IHZpZXcgPSByZXN1bHQudmFsdWU7
Ci0gICAgYXNzZXJ0X2VxdWFscyh2aWV3LmJ5dGVPZmZzZXQsIDAsICdieXRlT2Zmc2V0Jyk7Ci0g
ICAgYXNzZXJ0X2VxdWFscyh2aWV3LmJ5dGVMZW5ndGgsIDI0LCAnYnl0ZUxlbmd0aCcpOwotICAg
IGFzc2VydF9lcXVhbHModmlld1sxNV0sIDEyMywgJ0NvbnRlbnRzIGFyZSBzZXQgZnJvbSB0aGUg
Zmlyc3QgY2h1bmsnKTsKLSAgICBhc3NlcnRfZXF1YWxzKHZpZXdbMjNdLCAxMTEsICdDb250ZW50
cyBhcmUgc2V0IGZyb20gdGhlIHNlY29uZCBjaHVuaycpOwotICB9KTsKLX0sICdSZWFkYWJsZVN0
cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBNdWx0aXBsZSBlbnF1ZXVlKCksIGdldFJlYWRlcigpLCB0
aGVuIHJlYWQodmlldyknKTsKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLSAgbGV0IGJ5b2JSZXF1
ZXN0OwotCi0gIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQo
YykgewotICAgICAgY29uc3QgdmlldyA9IG5ldyBVaW50OEFycmF5KDE2KTsKLSAgICAgIHZpZXdb
MTVdID0gMHgwMTsKLSAgICAgIGMuZW5xdWV1ZSh2aWV3KTsKLSAgICB9LAotICAgIHB1bGwoY29u
dHJvbGxlcikgewotICAgICAgYnlvYlJlcXVlc3QgPSBjb250cm9sbGVyLmJ5b2JSZXF1ZXN0Owot
ICAgIH0sCi0gICAgdHlwZTogJ2J5dGVzJwotICB9KTsKLQotICBjb25zdCByZWFkZXIgPSBzdHJl
YW0uZ2V0UmVhZGVyKHsgbW9kZTogJ2J5b2InIH0pOwotCi0gIHJldHVybiByZWFkZXIucmVhZChu
ZXcgVWludDhBcnJheSgyNCkpLnRoZW4ocmVzdWx0ID0+IHsKLSAgICBhc3NlcnRfZXF1YWxzKHJl
c3VsdC5kb25lLCBmYWxzZSk7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGJ5b2JSZXF1ZXN0LCB1bmRl
ZmluZWQsICdieW9iUmVxdWVzdCBtdXN0IGJlIHVuZGVmaW5lZCcpOwotCi0gICAgY29uc3Qgdmll
dyA9IHJlc3VsdC52YWx1ZTsKLSAgICBhc3NlcnRfZXF1YWxzKHZpZXcuYnl0ZU9mZnNldCwgMCk7
Ci0gICAgYXNzZXJ0X2VxdWFscyh2aWV3LmJ5dGVMZW5ndGgsIDE2KTsKLSAgICBhc3NlcnRfZXF1
YWxzKHZpZXdbMTVdLCAweDAxKTsKLSAgfSk7Ci19LCAnUmVhZGFibGVTdHJlYW0gd2l0aCBieXRl
IHNvdXJjZTogZW5xdWV1ZSgpLCBnZXRSZWFkZXIoKSwgdGhlbiByZWFkKHZpZXcpIHdpdGggYSBi
aWdnZXIgdmlldycpOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotICBsZXQgYnlvYlJlcXVlc3Q7
Ci0KLSAgY29uc3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7
Ci0gICAgICBjb25zdCB2aWV3ID0gbmV3IFVpbnQ4QXJyYXkoMTYpOwotICAgICAgdmlld1s3XSA9
IDB4MDE7Ci0gICAgICB2aWV3WzE1XSA9IDB4MDI7Ci0gICAgICBjLmVucXVldWUodmlldyk7Ci0g
ICAgfSwKLSAgICBwdWxsKGNvbnRyb2xsZXIpIHsKLSAgICAgIGJ5b2JSZXF1ZXN0ID0gY29udHJv
bGxlci5ieW9iUmVxdWVzdDsKLSAgICB9LAotICAgIHR5cGU6ICdieXRlcycKLSAgfSk7Ci0KLSAg
Y29uc3QgcmVhZGVyID0gc3RyZWFtLmdldFJlYWRlcih7IG1vZGU6ICdieW9iJyB9KTsKLQotICBy
ZXR1cm4gcmVhZGVyLnJlYWQobmV3IFVpbnQ4QXJyYXkoOCkpLnRoZW4ocmVzdWx0ID0+IHsKLSAg
ICBhc3NlcnRfZXF1YWxzKHJlc3VsdC5kb25lLCBmYWxzZSwgJ2RvbmUnKTsKLQotICAgIGNvbnN0
IHZpZXcgPSByZXN1bHQudmFsdWU7Ci0gICAgYXNzZXJ0X2VxdWFscyh2aWV3LmJ5dGVPZmZzZXQs
IDApOwotICAgIGFzc2VydF9lcXVhbHModmlldy5ieXRlTGVuZ3RoLCA4KTsKLSAgICBhc3NlcnRf
ZXF1YWxzKHZpZXdbN10sIDB4MDEpOwotCi0gICAgcmV0dXJuIHJlYWRlci5yZWFkKG5ldyBVaW50
OEFycmF5KDgpKTsKLSAgfSkudGhlbihyZXN1bHQgPT4gewotICAgIGFzc2VydF9lcXVhbHMocmVz
dWx0LmRvbmUsIGZhbHNlLCAnZG9uZScpOwotCi0gICAgYXNzZXJ0X2VxdWFscyhieW9iUmVxdWVz
dCwgdW5kZWZpbmVkLCAnYnlvYlJlcXVlc3QgbXVzdCBiZSB1bmRlZmluZWQnKTsKLQotICAgIGNv
bnN0IHZpZXcgPSByZXN1bHQudmFsdWU7Ci0gICAgYXNzZXJ0X2VxdWFscyh2aWV3LmJ5dGVPZmZz
ZXQsIDApOwotICAgIGFzc2VydF9lcXVhbHModmlldy5ieXRlTGVuZ3RoLCA4KTsKLSAgICBhc3Nl
cnRfZXF1YWxzKHZpZXdbN10sIDB4MDIpOwotICB9KTsKLX0sICdSZWFkYWJsZVN0cmVhbSB3aXRo
IGJ5dGUgc291cmNlOiBlbnF1ZXVlKCksIGdldFJlYWRlcigpLCB0aGVuIHJlYWQodmlldykgd2l0
aCBhIHNtYWxsZXIgdmlld3MnKTsKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLSAgbGV0IGNvbnRy
b2xsZXI7Ci0gIGxldCB2aWV3SW5mbzsKLQotICBjb25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGVT
dHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGNvbnN0IHZpZXcgPSBuZXcgVWludDhBcnJh
eSgxKTsKLSAgICAgIHZpZXdbMF0gPSAweGZmOwotICAgICAgYy5lbnF1ZXVlKHZpZXcpOwotCi0g
ICAgICBjb250cm9sbGVyID0gYzsKLSAgICB9LAotICAgIHB1bGwoKSB7Ci0gICAgICBpZiAoY29u
dHJvbGxlci5ieW9iUmVxdWVzdCA9PT0gdW5kZWZpbmVkKSB7Ci0gICAgICAgIHJldHVybjsKLSAg
ICAgIH0KLQotICAgICAgY29uc3QgdmlldyA9IGNvbnRyb2xsZXIuYnlvYlJlcXVlc3QudmlldzsK
LSAgICAgIHZpZXdJbmZvID0gZXh0cmFjdFZpZXdJbmZvKHZpZXcpOwotCi0gICAgICB2aWV3WzBd
ID0gMHhhYTsKLSAgICAgIGNvbnRyb2xsZXIuYnlvYlJlcXVlc3QucmVzcG9uZCgxKTsKLSAgICB9
LAotICAgIHR5cGU6ICdieXRlcycKLSAgfSk7Ci0KLSAgY29uc3QgcmVhZGVyID0gc3RyZWFtLmdl
dFJlYWRlcih7IG1vZGU6ICdieW9iJyB9KTsKLQotICByZXR1cm4gcmVhZGVyLnJlYWQobmV3IFVp
bnQxNkFycmF5KDEpKS50aGVuKHJlc3VsdCA9PiB7Ci0gICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQu
ZG9uZSwgZmFsc2UpOwotCi0gICAgY29uc3QgdmlldyA9IHJlc3VsdC52YWx1ZTsKLSAgICBhc3Nl
cnRfZXF1YWxzKHZpZXcuYnl0ZU9mZnNldCwgMCk7Ci0gICAgYXNzZXJ0X2VxdWFscyh2aWV3LmJ5
dGVMZW5ndGgsIDIpOwotICAgIGFzc2VydF9lcXVhbHModmlld1swXSwgMHhhYWZmKTsKLQotICAg
IGFzc2VydF9lcXVhbHModmlld0luZm8uY29uc3RydWN0b3IsIFVpbnQ4QXJyYXksICd2aWV3LmNv
bnN0cnVjdG9yIHNob3VsZCBiZSBVaW50OEFycmF5Jyk7Ci0gICAgYXNzZXJ0X2VxdWFscyh2aWV3
SW5mby5idWZmZXJCeXRlTGVuZ3RoLCAyLCAndmlldy5idWZmZXIuYnl0ZUxlbmd0aCBzaG91bGQg
YmUgMicpOwotICAgIGFzc2VydF9lcXVhbHModmlld0luZm8uYnl0ZU9mZnNldCwgMSwgJ3ZpZXcu
Ynl0ZU9mZnNldCBzaG91bGQgYmUgMScpOwotICAgIGFzc2VydF9lcXVhbHModmlld0luZm8uYnl0
ZUxlbmd0aCwgMSwgJ3ZpZXcuYnl0ZUxlbmd0aCBzaG91bGQgYmUgMScpOwotICB9KTsKLX0sICdS
ZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBlbnF1ZXVlKCkgMSBieXRlLCBnZXRSZWFk
ZXIoKSwgdGhlbiByZWFkKHZpZXcpIHdpdGggVWludDE2QXJyYXknKTsKLQotcHJvbWlzZV90ZXN0
KCgpID0+IHsKLSAgbGV0IHB1bGxDb3VudCA9IDA7Ci0KLSAgbGV0IGNvbnRyb2xsZXI7Ci0gIGxl
dCBieW9iUmVxdWVzdDsKLSAgbGV0IHZpZXdJbmZvOwotICBsZXQgZGVzaXJlZFNpemU7Ci0KLSAg
Y29uc3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0gICAg
ICBjb25zdCB2aWV3ID0gbmV3IFVpbnQ4QXJyYXkoMyk7Ci0gICAgICB2aWV3WzBdID0gMHgwMTsK
LSAgICAgIHZpZXdbMl0gPSAweDAyOwotICAgICAgYy5lbnF1ZXVlKHZpZXcpOwotCi0gICAgICBj
b250cm9sbGVyID0gYzsKLSAgICB9LAotICAgIHB1bGwoKSB7Ci0gICAgICBieW9iUmVxdWVzdCA9
IGNvbnRyb2xsZXIuYnlvYlJlcXVlc3Q7Ci0KLSAgICAgIGNvbnN0IHZpZXcgPSBjb250cm9sbGVy
LmJ5b2JSZXF1ZXN0LnZpZXc7Ci0KLSAgICAgIHZpZXdJbmZvID0gZXh0cmFjdFZpZXdJbmZvKHZp
ZXcpOwotCi0gICAgICB2aWV3WzBdID0gMHgwMzsKLSAgICAgIGNvbnRyb2xsZXIuYnlvYlJlcXVl
c3QucmVzcG9uZCgxKTsKLQotICAgICAgZGVzaXJlZFNpemUgPSBjb250cm9sbGVyLmRlc2lyZWRT
aXplOwotCi0gICAgICArK3B1bGxDb3VudDsKLSAgICB9LAotICAgIHR5cGU6ICdieXRlcycKLSAg
fSk7Ci0KLSAgLy8gV2FpdCBmb3IgY29tcGxldGlvbiBvZiB0aGUgc3RhcnQgbWV0aG9kIHRvIGJl
IHJlZmxlY3RlZC4KLSAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCkgPT4gewotICAg
IGNvbnN0IHJlYWRlciA9IHN0cmVhbS5nZXRSZWFkZXIoeyBtb2RlOiAnYnlvYicgfSk7Ci0KLSAg
ICBjb25zdCBwcm9taXNlID0gcmVhZGVyLnJlYWQobmV3IFVpbnQxNkFycmF5KDIpKS50aGVuKHJl
c3VsdCA9PiB7Ci0gICAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdC5kb25lLCBmYWxzZSwgJ2RvbmUn
KTsKLQotICAgICAgY29uc3QgdmlldyA9IHJlc3VsdC52YWx1ZTsKLSAgICAgIGFzc2VydF9lcXVh
bHModmlldy5jb25zdHJ1Y3RvciwgVWludDE2QXJyYXksICdjb25zdHJ1Y3RvcicpOwotICAgICAg
YXNzZXJ0X2VxdWFscyh2aWV3LmJ1ZmZlci5ieXRlTGVuZ3RoLCA0LCAnYnVmZmVyLmJ5dGVMZW5n
dGgnKTsKLSAgICAgIGFzc2VydF9lcXVhbHModmlldy5ieXRlT2Zmc2V0LCAwLCAnYnl0ZU9mZnNl
dCcpOwotICAgICAgYXNzZXJ0X2VxdWFscyh2aWV3LmJ5dGVMZW5ndGgsIDIsICdieXRlTGVuZ3Ro
Jyk7Ci0gICAgICBhc3NlcnRfZXF1YWxzKHZpZXdbMF0sIDB4MDAwMSwgJ0NvbnRlbnRzIGFyZSBz
ZXQnKTsKLQotICAgICAgY29uc3QgcCA9IHJlYWRlci5yZWFkKG5ldyBVaW50MTZBcnJheSgxKSk7
Ci0KLSAgICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAxKTsKLQotICAgICAgcmV0dXJuIHA7
Ci0gICAgfSkudGhlbihyZXN1bHQgPT4gewotICAgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQuZG9u
ZSwgZmFsc2UsICdkb25lJyk7Ci0KLSAgICAgIGNvbnN0IHZpZXcgPSByZXN1bHQudmFsdWU7Ci0g
ICAgICBhc3NlcnRfZXF1YWxzKHZpZXcuYnVmZmVyLmJ5dGVMZW5ndGgsIDIsICdidWZmZXIuYnl0
ZUxlbmd0aCcpOwotICAgICAgYXNzZXJ0X2VxdWFscyh2aWV3LmJ5dGVPZmZzZXQsIDAsICdieXRl
T2Zmc2V0Jyk7Ci0gICAgICBhc3NlcnRfZXF1YWxzKHZpZXcuYnl0ZUxlbmd0aCwgMiwgJ2J5dGVM
ZW5ndGgnKTsKLSAgICAgIGFzc2VydF9lcXVhbHModmlld1swXSwgMHgwMzAyLCAnQ29udGVudHMg
YXJlIHNldCcpOwotCi0gICAgICBhc3NlcnRfbm90X2VxdWFscyhieW9iUmVxdWVzdCwgdW5kZWZp
bmVkLCAnYnlvYlJlcXVlc3QgbXVzdCBub3QgYmUgdW5kZWZpbmVkJyk7Ci0gICAgICBhc3NlcnRf
ZXF1YWxzKHZpZXdJbmZvLmNvbnN0cnVjdG9yLCBVaW50OEFycmF5LCAndmlldy5jb25zdHJ1Y3Rv
ciBzaG91bGQgYmUgVWludDhBcnJheScpOwotICAgICAgYXNzZXJ0X2VxdWFscyh2aWV3SW5mby5i
dWZmZXJCeXRlTGVuZ3RoLCAyLCAndmlldy5idWZmZXIuYnl0ZUxlbmd0aCBzaG91bGQgYmUgMicp
OwotICAgICAgYXNzZXJ0X2VxdWFscyh2aWV3SW5mby5ieXRlT2Zmc2V0LCAxLCAndmlldy5ieXRl
T2Zmc2V0IHNob3VsZCBiZSAxJyk7Ci0gICAgICBhc3NlcnRfZXF1YWxzKHZpZXdJbmZvLmJ5dGVM
ZW5ndGgsIDEsICd2aWV3LmJ5dGVMZW5ndGggc2hvdWxkIGJlIDEnKTsKLSAgICAgIGFzc2VydF9l
cXVhbHMoZGVzaXJlZFNpemUsIDAsICdkZXNpcmVkU2l6ZSBzaG91bGQgYmUgemVybycpOwotICAg
IH0pOwotCi0gICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDApOwotCi0gICAgcmV0dXJuIHBy
b21pc2U7Ci0gIH0pOwotfSwgJ1JlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IGVucXVl
dWUoKSAzIGJ5dGUsIGdldFJlYWRlcigpLCB0aGVuIHJlYWQodmlldykgd2l0aCAyLWVsZW1lbnQg
VWludDE2QXJyYXknKTsKLQotcHJvbWlzZV90ZXN0KHQgPT4gewotICBjb25zdCBzdHJlYW0gPSBu
ZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGNvbnN0IHZpZXcgPSBu
ZXcgVWludDhBcnJheSgxKTsKLSAgICAgIHZpZXdbMF0gPSAweGZmOwotICAgICAgYy5lbnF1ZXVl
KHZpZXcpOwotICAgICAgYy5jbG9zZSgpOwotICAgIH0sCi0gICAgcHVsbDogdC51bnJlYWNoZWRf
ZnVuYygncHVsbCgpIHNob3VsZCBub3QgYmUgY2FsbGVkJyksCi0gICAgdHlwZTogJ2J5dGVzJwot
ICB9KTsKLQotICBjb25zdCByZWFkZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKHsgbW9kZTogJ2J5b2In
IH0pOwotCi0KLSAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0LCBuZXcgVHlwZUVycm9yKCksIHJl
YWRlci5yZWFkKG5ldyBVaW50MTZBcnJheSgxKSksICdyZWFkKHZpZXcpIG11c3QgZmFpbCcpCi0g
ICAgICAudGhlbigoKSA9PiBwcm9taXNlX3JlamVjdHModCwgbmV3IFR5cGVFcnJvcigpLCByZWFk
ZXIuY2xvc2VkLCAncmVhZGVyLmNsb3NlZCBzaG91bGQgcmVqZWN0JykpOwotfSwgJ1JlYWRhYmxl
U3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IHJlYWQodmlldykgd2l0aCBVaW50MTZBcnJheSBvbiBj
bG9zZSgpLWQgc3RyZWFtIHdpdGggMSBieXRlIGVucXVldWUoKS1kIG11c3QgJyArCi0gICAnZmFp
bCcpOwotCi1wcm9taXNlX3Rlc3QodCA9PiB7Ci0gIGxldCBjb250cm9sbGVyOwotCi0gIGNvbnN0
IHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgY29u
c3QgdmlldyA9IG5ldyBVaW50OEFycmF5KDEpOwotICAgICAgdmlld1swXSA9IDB4ZmY7Ci0gICAg
ICBjLmVucXVldWUodmlldyk7Ci0KLSAgICAgIGNvbnRyb2xsZXIgPSBjOwotICAgIH0sCi0gICAg
cHVsbDogdC51bnJlYWNoZWRfZnVuYygncHVsbCgpIHNob3VsZCBub3QgYmUgY2FsbGVkJyksCi0g
ICAgdHlwZTogJ2J5dGVzJwotICB9KTsKLQotICBjb25zdCByZWFkZXIgPSBzdHJlYW0uZ2V0UmVh
ZGVyKHsgbW9kZTogJ2J5b2InIH0pOwotCi0gIGNvbnN0IHJlYWRQcm9taXNlID0gcmVhZGVyLnJl
YWQobmV3IFVpbnQxNkFycmF5KDEpKTsKLQotICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3Io
KSwgKCkgPT4gY29udHJvbGxlci5jbG9zZSgpLCAnY29udHJvbGxlci5jbG9zZSgpIG11c3QgdGhy
b3cnKTsKLQotICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHQsIG5ldyBUeXBlRXJyb3IoKSwgcmVh
ZFByb21pc2UsICdyZWFkKHZpZXcpIG11c3QgZmFpbCcpCi0gICAgICAudGhlbigoKSA9PiBwcm9t
aXNlX3JlamVjdHModCwgbmV3IFR5cGVFcnJvcigpLCByZWFkZXIuY2xvc2VkLCAncmVhZGVyLmNs
b3NlZCBtdXN0IHJlamVjdCcpKTsKLX0sICdSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNl
OiBBIHN0cmVhbSBtdXN0IGJlIGVycm9yZWQgaWYgY2xvc2UoKS1kIGJlZm9yZSBmdWxmaWxsaW5n
IHJlYWQodmlldykgd2l0aCAnICsKLSAgICdVaW50MTZBcnJheScpOwotCi10ZXN0KCgpID0+IHsK
LSAgbGV0IGNvbnRyb2xsZXI7Ci0KLSAgbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChj
KSB7Ci0gICAgICBjb250cm9sbGVyID0gYzsKLSAgICB9LAotICAgIHR5cGU6ICdieXRlcycKLSAg
fSk7Ci0KLSAgLy8gRW5xdWV1ZSBhIGNodW5rIHNvIHRoYXQgdGhlIHN0cmVhbSBkb2Vzbid0IGdl
dCBjbG9zZWQuIFRoaXMgaXMgdG8gY2hlY2sgZHVwbGljYXRlIGNsb3NlKCkgY2FsbHMgYXJlIHJl
amVjdGVkCi0gIC8vIGV2ZW4gaWYgdGhlIHN0cmVhbSBoYXMgbm90IHlldCBlbnRlcmVkIHRoZSBj
bG9zZWQgc3RhdGUuCi0gIGNvbnN0IHZpZXcgPSBuZXcgVWludDhBcnJheSgxKTsKLSAgY29udHJv
bGxlci5lbnF1ZXVlKHZpZXcpOwotICBjb250cm9sbGVyLmNsb3NlKCk7Ci0KLSAgYXNzZXJ0X3Ro
cm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IGNvbnRyb2xsZXIuY2xvc2UoKSwgJ2NvbnRyb2xs
ZXIuY2xvc2UoKSBtdXN0IHRocm93Jyk7Ci19LCAnUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNv
dXJjZTogVGhyb3cgaWYgY2xvc2UoKS1lZCBtb3JlIHRoYW4gb25jZScpOwotCi10ZXN0KCgpID0+
IHsKLSAgbGV0IGNvbnRyb2xsZXI7Ci0KLSAgbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFy
dChjKSB7Ci0gICAgICBjb250cm9sbGVyID0gYzsKLSAgICB9LAotICAgIHR5cGU6ICdieXRlcycK
LSAgfSk7Ci0KLSAgLy8gRW5xdWV1ZSBhIGNodW5rIHNvIHRoYXQgdGhlIHN0cmVhbSBkb2Vzbid0
IGdldCBjbG9zZWQuIFRoaXMgaXMgdG8gY2hlY2sgZW5xdWV1ZSgpIGFmdGVyIGNsb3NlKCkgaXMg
IHJlamVjdGVkCi0gIC8vIGV2ZW4gaWYgdGhlIHN0cmVhbSBoYXMgbm90IHlldCBlbnRlcmVkIHRo
ZSBjbG9zZWQgc3RhdGUuCi0gIGNvbnN0IHZpZXcgPSBuZXcgVWludDhBcnJheSgxKTsKLSAgY29u
dHJvbGxlci5lbnF1ZXVlKHZpZXcpOwotICBjb250cm9sbGVyLmNsb3NlKCk7Ci0KLSAgYXNzZXJ0
X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IGNvbnRyb2xsZXIuZW5xdWV1ZSh2aWV3KSwg
J2NvbnRyb2xsZXIuY2xvc2UoKSBtdXN0IHRocm93Jyk7Ci19LCAnUmVhZGFibGVTdHJlYW0gd2l0
aCBieXRlIHNvdXJjZTogVGhyb3cgb24gZW5xdWV1ZSgpIGFmdGVyIGNsb3NlKCknKTsKLQotcHJv
bWlzZV90ZXN0KCgpID0+IHsKLSAgbGV0IGNvbnRyb2xsZXI7Ci0gIGxldCBieW9iUmVxdWVzdDsK
LSAgbGV0IHZpZXdJbmZvOwotCi0gIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7
Ci0gICAgc3RhcnQoYykgewotICAgICAgY29udHJvbGxlciA9IGM7Ci0gICAgfSwKLSAgICBwdWxs
KCkgewotICAgICAgYnlvYlJlcXVlc3QgPSBjb250cm9sbGVyLmJ5b2JSZXF1ZXN0OwotICAgICAg
Y29uc3QgdmlldyA9IGNvbnRyb2xsZXIuYnlvYlJlcXVlc3QudmlldzsKLSAgICAgIHZpZXdJbmZv
ID0gZXh0cmFjdFZpZXdJbmZvKHZpZXcpOwotCi0gICAgICB2aWV3WzE1XSA9IDB4MDE7Ci0gICAg
ICBjb250cm9sbGVyLmJ5b2JSZXF1ZXN0LnJlc3BvbmQoMTYpOwotICAgICAgY29udHJvbGxlci5j
bG9zZSgpOwotICAgIH0sCi0gICAgdHlwZTogJ2J5dGVzJwotICB9KTsKLQotICBjb25zdCByZWFk
ZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKHsgbW9kZTogJ2J5b2InIH0pOwotCi0gIHJldHVybiByZWFk
ZXIucmVhZChuZXcgVWludDhBcnJheSgxNikpLnRoZW4ocmVzdWx0ID0+IHsKLSAgICBhc3NlcnRf
ZXF1YWxzKHJlc3VsdC5kb25lLCBmYWxzZSk7Ci0KLSAgICBjb25zdCB2aWV3ID0gcmVzdWx0LnZh
bHVlOwotICAgIGFzc2VydF9lcXVhbHModmlldy5ieXRlT2Zmc2V0LCAwKTsKLSAgICBhc3NlcnRf
ZXF1YWxzKHZpZXcuYnl0ZUxlbmd0aCwgMTYpOwotICAgIGFzc2VydF9lcXVhbHModmlld1sxNV0s
IDB4MDEpOwotCi0gICAgcmV0dXJuIHJlYWRlci5yZWFkKG5ldyBVaW50OEFycmF5KDE2KSk7Ci0g
IH0pLnRoZW4ocmVzdWx0ID0+IHsKLSAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdC5kb25lLCB0cnVl
KTsKLQotICAgIGNvbnN0IHZpZXcgPSByZXN1bHQudmFsdWU7Ci0gICAgYXNzZXJ0X2VxdWFscyh2
aWV3LmJ5dGVPZmZzZXQsIDApOwotICAgIGFzc2VydF9lcXVhbHModmlldy5ieXRlTGVuZ3RoLCAw
KTsKLQotICAgIGFzc2VydF9ub3RfZXF1YWxzKGJ5b2JSZXF1ZXN0LCB1bmRlZmluZWQsICdieW9i
UmVxdWVzdCBtdXN0IG5vdCBiZSB1bmRlZmluZWQnKTsKLSAgICBhc3NlcnRfZXF1YWxzKHZpZXdJ
bmZvLmNvbnN0cnVjdG9yLCBVaW50OEFycmF5LCAndmlldy5jb25zdHJ1Y3RvciBzaG91bGQgYmUg
VWludDhBcnJheScpOwotICAgIGFzc2VydF9lcXVhbHModmlld0luZm8uYnVmZmVyQnl0ZUxlbmd0
aCwgMTYsICd2aWV3LmJ1ZmZlci5ieXRlTGVuZ3RoIHNob3VsZCBiZSAxNicpOwotICAgIGFzc2Vy
dF9lcXVhbHModmlld0luZm8uYnl0ZU9mZnNldCwgMCwgJ3ZpZXcuYnl0ZU9mZnNldCBzaG91bGQg
YmUgMCcpOwotICAgIGFzc2VydF9lcXVhbHModmlld0luZm8uYnl0ZUxlbmd0aCwgMTYsICd2aWV3
LmJ5dGVMZW5ndGggc2hvdWxkIGJlIDE2Jyk7Ci0gIH0pOwotfSwgJ1JlYWRhYmxlU3RyZWFtIHdp
dGggYnl0ZSBzb3VyY2U6IHJlYWQodmlldyksIHRoZW4gcmVzcG9uZCgpIGFuZCBjbG9zZSgpIGlu
IHB1bGwoKScpOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotICBsZXQgcHVsbENvdW50ID0gMDsK
LQotICBsZXQgY29udHJvbGxlcjsKLSAgY29uc3Qgdmlld0luZm9zID0gW107Ci0KLSAgY29uc3Qg
c3RyZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0gICAgICBjb250
cm9sbGVyID0gYzsKLSAgICB9LAotICAgIHB1bGwoKSB7Ci0gICAgICBpZiAoY29udHJvbGxlci5i
eW9iUmVxdWVzdCA9PT0gdW5kZWZpbmVkKSB7Ci0gICAgICAgIHJldHVybjsKLSAgICAgIH0KLQot
ICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCA0OyArK2kpIHsKLSAgICAgICAgY29uc3QgdmlldyA9
IGNvbnRyb2xsZXIuYnlvYlJlcXVlc3QudmlldzsKLSAgICAgICAgdmlld0luZm9zLnB1c2goZXh0
cmFjdFZpZXdJbmZvKHZpZXcpKTsKLQotICAgICAgICB2aWV3WzBdID0gMHgwMTsKLSAgICAgICAg
Y29udHJvbGxlci5ieW9iUmVxdWVzdC5yZXNwb25kKDEpOwotICAgICAgfQotCi0gICAgICArK3B1
bGxDb3VudDsKLSAgICB9LAotICAgIHR5cGU6ICdieXRlcycKLSAgfSk7Ci0KLSAgY29uc3QgcmVh
ZGVyID0gc3RyZWFtLmdldFJlYWRlcih7IG1vZGU6ICdieW9iJyB9KTsKLQotICByZXR1cm4gcmVh
ZGVyLnJlYWQobmV3IFVpbnQzMkFycmF5KDEpKS50aGVuKHJlc3VsdCA9PiB7Ci0gICAgYXNzZXJ0
X2VxdWFscyhyZXN1bHQuZG9uZSwgZmFsc2UpOwotCi0gICAgY29uc3QgdmlldyA9IHJlc3VsdC52
YWx1ZTsKLSAgICBhc3NlcnRfZXF1YWxzKHZpZXcuYnl0ZU9mZnNldCwgMCk7Ci0gICAgYXNzZXJ0
X2VxdWFscyh2aWV3LmJ5dGVMZW5ndGgsIDQpOwotICAgIGFzc2VydF9lcXVhbHModmlld1swXSwg
MHgwMTAxMDEwMSk7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMSwgJ3B1bGwoKSBz
aG91bGQgb25seSBiZSBjYWxsZWQgb25jZScpOwotCi0gICAgZm9yIChsZXQgaSA9IDA7IGkgPCA0
OyArK2kpIHsKLSAgICAgIGFzc2VydF9lcXVhbHModmlld0luZm9zW2ldLmNvbnN0cnVjdG9yLCBV
aW50OEFycmF5LCAndmlldy5jb25zdHJ1Y3RvciBzaG91bGQgYmUgVWludDhBcnJheScpOwotICAg
ICAgYXNzZXJ0X2VxdWFscyh2aWV3SW5mb3NbaV0uYnVmZmVyQnl0ZUxlbmd0aCwgNCwgJ3ZpZXcu
YnVmZmVyLmJ5dGVMZW5ndGggc2hvdWxkIGJlIDQnKTsKLQotICAgICAgYXNzZXJ0X2VxdWFscyh2
aWV3SW5mb3NbaV0uYnl0ZU9mZnNldCwgaSwgJ3ZpZXcuYnl0ZU9mZnNldCBzaG91bGQgYmUgaScp
OwotICAgICAgYXNzZXJ0X2VxdWFscyh2aWV3SW5mb3NbaV0uYnl0ZUxlbmd0aCwgNCAtIGksICd2
aWV3LmJ5dGVMZW5ndGggc2hvdWxkIGJlIDQgLSBpJyk7Ci0gICAgfQotICB9KTsKLX0sICdSZWFk
YWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiByZWFkKHZpZXcpIHdpdGggVWludDMyQXJyYXks
IHRoZW4gZmlsbCBpdCBieSBtdWx0aXBsZSByZXNwb25kKCkgY2FsbHMnKTsKLQotcHJvbWlzZV90
ZXN0KCgpID0+IHsKLSAgbGV0IHB1bGxDb3VudCA9IDA7Ci0KLSAgbGV0IGNvbnRyb2xsZXI7Ci0g
IGxldCBieW9iUmVxdWVzdDsKLQotICBjb25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0o
ewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGNvbnRyb2xsZXIgPSBjOwotICAgIH0sCi0gICAgcHVs
bCgpIHsKLSAgICAgIGJ5b2JSZXF1ZXN0ID0gY29udHJvbGxlci5ieW9iUmVxdWVzdDsKLQotICAg
ICAgKytwdWxsQ291bnQ7Ci0gICAgfSwKLSAgICB0eXBlOiAnYnl0ZXMnCi0gIH0pOwotCi0gIGNv
bnN0IHJlYWRlciA9IHN0cmVhbS5nZXRSZWFkZXIoKTsKLQotICBjb25zdCBwMCA9IHJlYWRlci5y
ZWFkKCkudGhlbihyZXN1bHQgPT4gewotICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAxKTsK
LQotICAgIGNvbnRyb2xsZXIuZW5xdWV1ZShuZXcgVWludDhBcnJheSgyKSk7Ci0KLSAgICAvLyBT
aW5jZSB0aGUgcXVldWUgaGFzIGRhdGEgbm8gbGVzcyB0aGFuIEhXTSwgbm8gbW9yZSBwdWxsLgot
ICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAxKTsKLQotICAgIGFzc2VydF9lcXVhbHMocmVz
dWx0LmRvbmUsIGZhbHNlKTsKLQotICAgIGNvbnN0IHZpZXcgPSByZXN1bHQudmFsdWU7Ci0gICAg
YXNzZXJ0X2VxdWFscyh2aWV3LmNvbnN0cnVjdG9yLCBVaW50OEFycmF5KTsKLSAgICBhc3NlcnRf
ZXF1YWxzKHZpZXcuYnVmZmVyLmJ5dGVMZW5ndGgsIDEpOwotICAgIGFzc2VydF9lcXVhbHModmll
dy5ieXRlT2Zmc2V0LCAwKTsKLSAgICBhc3NlcnRfZXF1YWxzKHZpZXcuYnl0ZUxlbmd0aCwgMSk7
Ci0gIH0pOwotCi0gIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAwLCAnTm8gcHVsbCBzaG91bGQg
aGF2ZSBiZWVuIG1hZGUgc2luY2UgdGhlIHN0YXJ0UHJvbWlzZSBoYXMgbm90IHlldCBiZWVuIGhh
bmRsZWQnKTsKLQotICBjb25zdCBwMSA9IHJlYWRlci5yZWFkKCkudGhlbihyZXN1bHQgPT4gewot
ICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAxKTsKLQotICAgIGFzc2VydF9lcXVhbHMocmVz
dWx0LmRvbmUsIGZhbHNlKTsKLQotICAgIGNvbnN0IHZpZXcgPSByZXN1bHQudmFsdWU7Ci0gICAg
YXNzZXJ0X2VxdWFscyh2aWV3LmNvbnN0cnVjdG9yLCBVaW50OEFycmF5KTsKLSAgICBhc3NlcnRf
ZXF1YWxzKHZpZXcuYnVmZmVyLmJ5dGVMZW5ndGgsIDIpOwotICAgIGFzc2VydF9lcXVhbHModmll
dy5ieXRlT2Zmc2V0LCAwKTsKLSAgICBhc3NlcnRfZXF1YWxzKHZpZXcuYnl0ZUxlbmd0aCwgMik7
Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGJ5b2JSZXF1ZXN0LCB1bmRlZmluZWQsICdieW9iUmVxdWVz
dCBtdXN0IGJlIHVuZGVmaW5lZCcpOwotICB9KTsKLQotICBhc3NlcnRfZXF1YWxzKHB1bGxDb3Vu
dCwgMCwgJ05vIHB1bGwgc2hvdWxkIGhhdmUgYmVlbiBtYWRlIHNpbmNlIHRoZSBzdGFydFByb21p
c2UgaGFzIG5vdCB5ZXQgYmVlbiBoYW5kbGVkJyk7Ci0KLSAgY29udHJvbGxlci5lbnF1ZXVlKG5l
dyBVaW50OEFycmF5KDEpKTsKLQotICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMCwgJ05vIHB1
bGwgc2hvdWxkIGhhdmUgYmVlbiBtYWRlIHNpbmNlIHRoZSBzdGFydFByb21pc2UgaGFzIG5vdCB5
ZXQgYmVlbiBoYW5kbGVkJyk7Ci0KLSAgcmV0dXJuIFByb21pc2UuYWxsKFtwMCwgcDFdKTsKLX0s
ICdSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiByZWFkKCkgdHdpY2UsIHRoZW4gZW5x
dWV1ZSgpIHR3aWNlJyk7Ci0KLXByb21pc2VfdGVzdCh0ID0+IHsKLSAgbGV0IGNvbnRyb2xsZXI7
Ci0KLSAgY29uc3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7
Ci0gICAgICBjb250cm9sbGVyID0gYzsKLSAgICB9LAotICAgIHB1bGw6IHQudW5yZWFjaGVkX2Z1
bmMoJ3B1bGwoKSBzaG91bGQgbm90IGJlIGNhbGxlZCcpLAotICAgIHR5cGU6ICdieXRlcycKLSAg
fSk7Ci0KLSAgY29uc3QgcmVhZGVyID0gc3RyZWFtLmdldFJlYWRlcih7IG1vZGU6ICdieW9iJyB9
KTsKLQotICBjb25zdCBwMCA9IHJlYWRlci5yZWFkKG5ldyBVaW50OEFycmF5KDE2KSkudGhlbihy
ZXN1bHQgPT4gewotICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LmRvbmUsIHRydWUsICcxc3QgcmVh
ZDogZG9uZScpOwotCi0gICAgY29uc3QgdmlldyA9IHJlc3VsdC52YWx1ZTsKLSAgICBhc3NlcnRf
ZXF1YWxzKHZpZXcuYnVmZmVyLmJ5dGVMZW5ndGgsIDE2LCAnMXN0IHJlYWQ6IGJ1ZmZlci5ieXRl
TGVuZ3RoJyk7Ci0gICAgYXNzZXJ0X2VxdWFscyh2aWV3LmJ5dGVPZmZzZXQsIDAsICcxc3QgcmVh
ZDogYnl0ZU9mZnNldCcpOwotICAgIGFzc2VydF9lcXVhbHModmlldy5ieXRlTGVuZ3RoLCAwLCAn
MXN0IHJlYWQ6IGJ5dGVMZW5ndGgnKTsKLSAgfSk7Ci0KLSAgY29uc3QgcDEgPSByZWFkZXIucmVh
ZChuZXcgVWludDhBcnJheSgzMikpLnRoZW4ocmVzdWx0ID0+IHsKLSAgICBhc3NlcnRfZXF1YWxz
KHJlc3VsdC5kb25lLCB0cnVlLCAnMm5kIHJlYWQ6IGRvbmUnKTsKLQotICAgIGNvbnN0IHZpZXcg
PSByZXN1bHQudmFsdWU7Ci0gICAgYXNzZXJ0X2VxdWFscyh2aWV3LmJ1ZmZlci5ieXRlTGVuZ3Ro
LCAzMiwgJzJuZCByZWFkOiBidWZmZXIuYnl0ZUxlbmd0aCcpOwotICAgIGFzc2VydF9lcXVhbHMo
dmlldy5ieXRlT2Zmc2V0LCAwLCAnMm5kIHJlYWQ6IGJ5dGVPZmZzZXQnKTsKLSAgICBhc3NlcnRf
ZXF1YWxzKHZpZXcuYnl0ZUxlbmd0aCwgMCwgJzJuZCByZWFkOiBieXRlTGVuZ3RoJyk7Ci0gIH0p
OwotCi0gIGNvbnRyb2xsZXIuY2xvc2UoKTsKLSAgY29udHJvbGxlci5ieW9iUmVxdWVzdC5yZXNw
b25kKDApOwotCi0gIHJldHVybiBQcm9taXNlLmFsbChbcDAsIHAxXSk7Ci19LCAnUmVhZGFibGVT
dHJlYW0gd2l0aCBieXRlIHNvdXJjZTogTXVsdGlwbGUgcmVhZCh2aWV3KSwgY2xvc2UoKSBhbmQg
cmVzcG9uZCgpJyk7Ci0KLXByb21pc2VfdGVzdCh0ID0+IHsKLSAgbGV0IGNvbnRyb2xsZXI7Ci0K
LSAgY29uc3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0g
ICAgICBjb250cm9sbGVyID0gYzsKLSAgICB9LAotICAgIHB1bGw6IHQudW5yZWFjaGVkX2Z1bmMo
J3B1bGwoKSBzaG91bGQgbm90IGJlIGNhbGxlZCcpLAotICAgIHR5cGU6ICdieXRlcycKLSAgfSk7
Ci0KLSAgY29uc3QgcmVhZGVyID0gc3RyZWFtLmdldFJlYWRlcih7IG1vZGU6ICdieW9iJyB9KTsK
LQotICBjb25zdCBwMCA9IHJlYWRlci5yZWFkKG5ldyBVaW50OEFycmF5KDE2KSkudGhlbihyZXN1
bHQgPT4gewotICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LmRvbmUsIGZhbHNlLCAnMXN0IHJlYWQ6
IGRvbmUnKTsKLQotICAgIGNvbnN0IHZpZXcgPSByZXN1bHQudmFsdWU7Ci0gICAgYXNzZXJ0X2Vx
dWFscyh2aWV3LmJ1ZmZlci5ieXRlTGVuZ3RoLCAxNiwgJzFzdCByZWFkOiBidWZmZXIuYnl0ZUxl
bmd0aCcpOwotICAgIGFzc2VydF9lcXVhbHModmlldy5ieXRlT2Zmc2V0LCAwLCAnMXN0IHJlYWQ6
IGJ5dGVPZmZzZXQnKTsKLSAgICBhc3NlcnRfZXF1YWxzKHZpZXcuYnl0ZUxlbmd0aCwgMTYsICcx
c3QgcmVhZDogYnl0ZUxlbmd0aCcpOwotICB9KTsKLQotICBjb25zdCBwMSA9IHJlYWRlci5yZWFk
KG5ldyBVaW50OEFycmF5KDE2KSkudGhlbihyZXN1bHQgPT4gewotICAgIGFzc2VydF9lcXVhbHMo
cmVzdWx0LmRvbmUsIGZhbHNlLCAnMm5kIHJlYWQ6IGRvbmUnKTsKLQotICAgIGNvbnN0IHZpZXcg
PSByZXN1bHQudmFsdWU7Ci0gICAgYXNzZXJ0X2VxdWFscyh2aWV3LmJ1ZmZlci5ieXRlTGVuZ3Ro
LCAxNiwgJzJuZCByZWFkOiBidWZmZXIuYnl0ZUxlbmd0aCcpOwotICAgIGFzc2VydF9lcXVhbHMo
dmlldy5ieXRlT2Zmc2V0LCAwLCAnMm5kIHJlYWQ6IGJ5dGVPZmZzZXQnKTsKLSAgICBhc3NlcnRf
ZXF1YWxzKHZpZXcuYnl0ZUxlbmd0aCwgOCwgJzJuZCByZWFkOiBieXRlTGVuZ3RoJyk7Ci0gIH0p
OwotCi0gIGNvbnRyb2xsZXIuZW5xdWV1ZShuZXcgVWludDhBcnJheSgyNCkpOwotCi0gIHJldHVy
biBQcm9taXNlLmFsbChbcDAsIHAxXSk7Ci19LCAnUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNv
dXJjZTogTXVsdGlwbGUgcmVhZCh2aWV3KSwgYmlnIGVucXVldWUoKScpOwotCi1wcm9taXNlX3Rl
c3QodCA9PiB7Ci0gIGxldCBjb250cm9sbGVyOwotCi0gIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFk
YWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgY29udHJvbGxlciA9IGM7Ci0gICAg
fSwKLSAgICBwdWxsOiB0LnVucmVhY2hlZF9mdW5jKCdwdWxsKCkgc2hvdWxkIG5vdCBiZSBjYWxs
ZWQnKSwKLSAgICB0eXBlOiAnYnl0ZXMnCi0gIH0pOwotCi0gIGNvbnN0IHJlYWRlciA9IHN0cmVh
bS5nZXRSZWFkZXIoeyBtb2RlOiAnYnlvYicgfSk7Ci0KLSAgbGV0IGJ5dGVzUmVhZCA9IDA7Ci0K
LSAgZnVuY3Rpb24gcHVtcCgpIHsKLSAgICByZXR1cm4gcmVhZGVyLnJlYWQobmV3IFVpbnQ4QXJy
YXkoNykpLnRoZW4ocmVzdWx0ID0+IHsKLSAgICAgIGlmIChyZXN1bHQuZG9uZSkgewotICAgICAg
ICBhc3NlcnRfZXF1YWxzKGJ5dGVzUmVhZCwgMTAyNCk7Ci0gICAgICAgIHJldHVybiB1bmRlZmlu
ZWQ7Ci0gICAgICB9Ci0KLSAgICAgIGJ5dGVzUmVhZCArPSByZXN1bHQudmFsdWUuYnl0ZUxlbmd0
aDsKLQotICAgICAgcmV0dXJuIHB1bXAoKTsKLSAgICB9KTsKLSAgfQotICBjb25zdCBwcm9taXNl
ID0gcHVtcCgpOwotCi0gIGNvbnRyb2xsZXIuZW5xdWV1ZShuZXcgVWludDhBcnJheSg1MTIpKTsK
LSAgY29udHJvbGxlci5lbnF1ZXVlKG5ldyBVaW50OEFycmF5KDUxMikpOwotICBjb250cm9sbGVy
LmNsb3NlKCk7Ci0KLSAgcmV0dXJuIHByb21pc2U7Ci19LCAnUmVhZGFibGVTdHJlYW0gd2l0aCBi
eXRlIHNvdXJjZTogTXVsdGlwbGUgcmVhZCh2aWV3KSBhbmQgbXVsdGlwbGUgZW5xdWV1ZSgpJyk7
Ci0KLXByb21pc2VfdGVzdCh0ID0+IHsKLSAgbGV0IGJ5b2JSZXF1ZXN0OwotICBjb25zdCBzdHJl
YW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHB1bGwoY29udHJvbGxlcikgewotICAgICAg
YnlvYlJlcXVlc3QgPSBjb250cm9sbGVyLmJ5b2JSZXF1ZXN0OwotICAgIH0sCi0gICAgdHlwZTog
J2J5dGVzJwotICB9KTsKLQotICBjb25zdCByZWFkZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKHsgbW9k
ZTogJ2J5b2InIH0pOwotCi0gIHJldHVybiBwcm9taXNlX3JlamVjdHModCwgbmV3IFR5cGVFcnJv
cigpLCByZWFkZXIucmVhZCgpLCAncmVhZCgpIG11c3QgZmFpbCcpCi0gICAgICAudGhlbigoKSA9
PiBhc3NlcnRfZXF1YWxzKGJ5b2JSZXF1ZXN0LCB1bmRlZmluZWQsICdieW9iUmVxdWVzdCBtdXN0
IGJlIHVuZGVmaW5lZCcpKTsKLX0sICdSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBy
ZWFkKHZpZXcpIHdpdGggcGFzc2luZyB1bmRlZmluZWQgYXMgdmlldyBtdXN0IGZhaWwnKTsKLQot
cHJvbWlzZV90ZXN0KHQgPT4gewotICBsZXQgYnlvYlJlcXVlc3Q7Ci0gIGNvbnN0IHN0cmVhbSA9
IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgcHVsbChjb250cm9sbGVyKSB7Ci0gICAgICBieW9i
UmVxdWVzdCA9IGNvbnRyb2xsZXIuYnlvYlJlcXVlc3Q7Ci0gICAgfSwKLSAgICB0eXBlOiAnYnl0
ZXMnCi0gIH0pOwotCi0gIGNvbnN0IHJlYWRlciA9IHN0cmVhbS5nZXRSZWFkZXIoeyBtb2RlOiAn
YnlvYicgfSk7Ci0KLSAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0LCBuZXcgVHlwZUVycm9yKCks
IHJlYWRlci5yZWFkKG5ldyBVaW50OEFycmF5KDApKSwgJ3JlYWQodmlldykgbXVzdCBmYWlsJykK
LSAgICAgIC50aGVuKCgpID0+IGFzc2VydF9lcXVhbHMoYnlvYlJlcXVlc3QsIHVuZGVmaW5lZCwg
J2J5b2JSZXF1ZXN0IG11c3QgYmUgdW5kZWZpbmVkJykpOwotfSwgJ1JlYWRhYmxlU3RyZWFtIHdp
dGggYnl0ZSBzb3VyY2U6IHJlYWQodmlldykgd2l0aCB6ZXJvLWxlbmd0aCB2aWV3IG11c3QgZmFp
bCcpOwotCi1wcm9taXNlX3Rlc3QodCA9PiB7Ci0gIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJs
ZVN0cmVhbSh7Ci0gICAgdHlwZTogJ2J5dGVzJwotICB9KTsKLQotICBjb25zdCByZWFkZXIgPSBz
dHJlYW0uZ2V0UmVhZGVyKHsgbW9kZTogJ2J5b2InIH0pOwotCi0gIHJldHVybiBwcm9taXNlX3Jl
amVjdHModCwgbmV3IFR5cGVFcnJvcigpLCByZWFkZXIucmVhZCh7fSksICdyZWFkKHZpZXcpIG11
c3QgZmFpbCcpOwotfSwgJ1JlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IHJlYWQodmll
dykgd2l0aCBwYXNzaW5nIGFuIGVtcHR5IG9iamVjdCBhcyB2aWV3IG11c3QgZmFpbCcpOwotCi1w
cm9taXNlX3Rlc3QodCA9PiB7Ci0gIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7
Ci0gICAgdHlwZTogJ2J5dGVzJwotICB9KTsKLQotICBjb25zdCByZWFkZXIgPSBzdHJlYW0uZ2V0
UmVhZGVyKHsgbW9kZTogJ2J5b2InIH0pOwotCi0gIHJldHVybiBwcm9taXNlX3JlamVjdHModCwg
bmV3IFR5cGVFcnJvcigpLAotICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRlci5yZWFkKHsg
YnVmZmVyOiBuZXcgQXJyYXlCdWZmZXIoMTApLCBieXRlT2Zmc2V0OiAwLCBieXRlTGVuZ3RoOiAx
MCB9KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAncmVhZCh2aWV3KSBtdXN0IGZhaWwnKTsK
LX0sICdSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBFdmVuIHJlYWQodmlldykgd2l0
aCBwYXNzaW5nIEFycmF5QnVmZmVyVmlldyBsaWtlIG9iamVjdCBhcyB2aWV3IG11c3QgZmFpbCcp
OwotCi1wcm9taXNlX3Rlc3QodCA9PiB7Ci0gIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0
cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgYy5lcnJvcihlcnJvcjEpOwotICAgIH0sCi0g
ICAgcHVsbDogdC51bnJlYWNoZWRfZnVuYygncHVsbCgpIHNob3VsZCBub3QgYmUgY2FsbGVkJyks
Ci0gICAgdHlwZTogJ2J5dGVzJwotICB9KTsKLQotICBjb25zdCByZWFkZXIgPSBzdHJlYW0uZ2V0
UmVhZGVyKCk7Ci0KLSAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0LCBlcnJvcjEsIHJlYWRlci5y
ZWFkKCksICdyZWFkKCkgbXVzdCBmYWlsJyk7Ci19LCAnUmVhZGFibGVTdHJlYW0gd2l0aCBieXRl
IHNvdXJjZTogcmVhZCgpIG9uIGFuIGVycm9yZWQgc3RyZWFtJyk7Ci0KLXByb21pc2VfdGVzdCh0
ID0+IHsKLSAgbGV0IGNvbnRyb2xsZXI7Ci0KLSAgY29uc3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxl
U3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0gICAgICBjb250cm9sbGVyID0gYzsKLSAgICB9LAot
ICAgIHR5cGU6ICdieXRlcycKLSAgfSk7Ci0KLSAgY29uc3QgcmVhZGVyID0gc3RyZWFtLmdldFJl
YWRlcigpOwotCi0gIGNvbnN0IHByb21pc2UgPSBwcm9taXNlX3JlamVjdHModCwgZXJyb3IxLCBy
ZWFkZXIucmVhZCgpLCAncmVhZCgpIG11c3QgZmFpbCcpOwotCi0gIGNvbnRyb2xsZXIuZXJyb3Io
ZXJyb3IxKTsKLQotICByZXR1cm4gcHJvbWlzZTsKLX0sICdSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5
dGUgc291cmNlOiByZWFkKCksIHRoZW4gZXJyb3IoKScpOwotCi1wcm9taXNlX3Rlc3QodCA9PiB7
Ci0gIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewot
ICAgICAgYy5lcnJvcihlcnJvcjEpOwotICAgIH0sCi0gICAgcHVsbDogdC51bnJlYWNoZWRfZnVu
YygncHVsbCgpIHNob3VsZCBub3QgYmUgY2FsbGVkJyksCi0gICAgdHlwZTogJ2J5dGVzJwotICB9
KTsKLQotICBjb25zdCByZWFkZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKHsgbW9kZTogJ2J5b2InIH0p
OwotCi0gIHJldHVybiBwcm9taXNlX3JlamVjdHModCwgZXJyb3IxLCByZWFkZXIucmVhZChuZXcg
VWludDhBcnJheSgxKSksICdyZWFkKCkgbXVzdCBmYWlsJyk7Ci19LCAnUmVhZGFibGVTdHJlYW0g
d2l0aCBieXRlIHNvdXJjZTogcmVhZCh2aWV3KSBvbiBhbiBlcnJvcmVkIHN0cmVhbScpOwotCi1w
cm9taXNlX3Rlc3QodCA9PiB7Ci0gIGxldCBjb250cm9sbGVyOwotCi0gIGNvbnN0IHN0cmVhbSA9
IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgY29udHJvbGxlciA9
IGM7Ci0gICAgfSwKLSAgICB0eXBlOiAnYnl0ZXMnCi0gIH0pOwotCi0gIGNvbnN0IHJlYWRlciA9
IHN0cmVhbS5nZXRSZWFkZXIoeyBtb2RlOiAnYnlvYicgfSk7Ci0KLSAgY29uc3QgcHJvbWlzZSA9
IHByb21pc2VfcmVqZWN0cyh0LCBlcnJvcjEsIHJlYWRlci5yZWFkKG5ldyBVaW50OEFycmF5KDEp
KSwgJ3JlYWQoKSBtdXN0IGZhaWwnKTsKLQotICBjb250cm9sbGVyLmVycm9yKGVycm9yMSk7Ci0K
LSAgcmV0dXJuIHByb21pc2U7Ci19LCAnUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTog
cmVhZCh2aWV3KSwgdGhlbiBlcnJvcigpJyk7Ci0KLXByb21pc2VfdGVzdCh0ID0+IHsKLSAgbGV0
IGNvbnRyb2xsZXI7Ci0gIGxldCBieW9iUmVxdWVzdDsKLQotICBjb25zdCB0ZXN0RXJyb3IgPSBu
ZXcgVHlwZUVycm9yKCdmb28nKTsKLQotICBjb25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJl
YW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGNvbnRyb2xsZXIgPSBjOwotICAgIH0sCi0gICAg
cHVsbCgpIHsKLSAgICAgIGJ5b2JSZXF1ZXN0ID0gY29udHJvbGxlci5ieW9iUmVxdWVzdDsKLSAg
ICAgIHRocm93IHRlc3RFcnJvcjsKLSAgICB9LAotICAgIHR5cGU6ICdieXRlcycKLSAgfSk7Ci0K
LSAgY29uc3QgcmVhZGVyID0gc3RyZWFtLmdldFJlYWRlcigpOwotCi0gIGNvbnN0IHByb21pc2Ug
PSBwcm9taXNlX3JlamVjdHModCwgdGVzdEVycm9yLCByZWFkZXIucmVhZCgpLCAncmVhZCgpIG11
c3QgZmFpbCcpOwotICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHQsIHRlc3RFcnJvciwgcHJvbWlz
ZS50aGVuKCgpID0+IHJlYWRlci5jbG9zZWQpKQotICAgICAgLnRoZW4oKCkgPT4gYXNzZXJ0X2Vx
dWFscyhieW9iUmVxdWVzdCwgdW5kZWZpbmVkLCAnYnlvYlJlcXVlc3QgbXVzdCBiZSB1bmRlZmlu
ZWQnKSk7Ci19LCAnUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogVGhyb3dpbmcgaW4g
cHVsbCBmdW5jdGlvbiBtdXN0IGVycm9yIHRoZSBzdHJlYW0nKTsKLQotcHJvbWlzZV90ZXN0KHQg
PT4gewotICBsZXQgYnlvYlJlcXVlc3Q7Ci0KLSAgY29uc3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxl
U3RyZWFtKHsKLSAgICBwdWxsKGNvbnRyb2xsZXIpIHsKLSAgICAgIGJ5b2JSZXF1ZXN0ID0gY29u
dHJvbGxlci5ieW9iUmVxdWVzdDsKLSAgICAgIGNvbnRyb2xsZXIuZXJyb3IoZXJyb3IxKTsKLSAg
ICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2ZvbycpOwotICAgIH0sCi0gICAgdHlwZTogJ2J5dGVz
JwotICB9KTsKLQotICBjb25zdCByZWFkZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKCk7Ci0KLSAgcmV0
dXJuIHByb21pc2VfcmVqZWN0cyh0LCBlcnJvcjEsIHJlYWRlci5yZWFkKCksICdyZWFkKCkgbXVz
dCBmYWlsJykKLSAgICAgIC50aGVuKCgpID0+IHByb21pc2VfcmVqZWN0cyh0LCBlcnJvcjEsIHJl
YWRlci5jbG9zZWQsICdjbG9zZWQgbXVzdCBmYWlsJykpCi0gICAgICAudGhlbigoKSA9PiBhc3Nl
cnRfZXF1YWxzKGJ5b2JSZXF1ZXN0LCB1bmRlZmluZWQsICdieW9iUmVxdWVzdCBtdXN0IGJlIHVu
ZGVmaW5lZCcpKTsKLX0sICdSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBUaHJvd2lu
ZyBpbiBwdWxsIGluIHJlc3BvbnNlIHRvIHJlYWQoKSBtdXN0IGJlIGlnbm9yZWQgaWYgdGhlIHN0
cmVhbSBpcyAnICsKLSAgICdlcnJvcmVkIGluIGl0Jyk7Ci0KLXByb21pc2VfdGVzdCh0ID0+IHsK
LSAgbGV0IGJ5b2JSZXF1ZXN0OwotCi0gIGNvbnN0IHRlc3RFcnJvciA9IG5ldyBUeXBlRXJyb3Io
J2ZvbycpOwotCi0gIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgcHVs
bChjb250cm9sbGVyKSB7Ci0gICAgICBieW9iUmVxdWVzdCA9IGNvbnRyb2xsZXIuYnlvYlJlcXVl
c3Q7Ci0gICAgICB0aHJvdyB0ZXN0RXJyb3I7Ci0gICAgfSwKLSAgICB0eXBlOiAnYnl0ZXMnCi0g
IH0pOwotCi0gIGNvbnN0IHJlYWRlciA9IHN0cmVhbS5nZXRSZWFkZXIoeyBtb2RlOiAnYnlvYicg
fSk7Ci0KLSAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0LCB0ZXN0RXJyb3IsIHJlYWRlci5yZWFk
KG5ldyBVaW50OEFycmF5KDEpKSwgJ3JlYWQodmlldykgbXVzdCBmYWlsJykKLSAgICAgIC50aGVu
KCgpID0+IHByb21pc2VfcmVqZWN0cyh0LCB0ZXN0RXJyb3IsIHJlYWRlci5jbG9zZWQsICdyZWFk
ZXIuY2xvc2VkIG11c3QgcmVqZWN0JykpCi0gICAgICAudGhlbigoKSA9PiBhc3NlcnRfbm90X2Vx
dWFscyhieW9iUmVxdWVzdCwgdW5kZWZpbmVkLCAnYnlvYlJlcXVlc3QgbXVzdCBub3QgYmUgdW5k
ZWZpbmVkJykpOwotfSwgJ1JlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IFRocm93aW5n
IGluIHB1bGwgaW4gcmVzcG9uc2UgdG8gcmVhZCh2aWV3KSBmdW5jdGlvbiBtdXN0IGVycm9yIHRo
ZSBzdHJlYW0nKTsKLQotcHJvbWlzZV90ZXN0KHQgPT4gewotICBsZXQgYnlvYlJlcXVlc3Q7Ci0K
LSAgY29uc3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBwdWxsKGNvbnRyb2xs
ZXIpIHsKLSAgICAgIGJ5b2JSZXF1ZXN0ID0gY29udHJvbGxlci5ieW9iUmVxdWVzdDsKLSAgICAg
IGNvbnRyb2xsZXIuZXJyb3IoZXJyb3IxKTsKLSAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2Zv
bycpOwotICAgIH0sCi0gICAgdHlwZTogJ2J5dGVzJwotICB9KTsKLQotICBjb25zdCByZWFkZXIg
PSBzdHJlYW0uZ2V0UmVhZGVyKHsgbW9kZTogJ2J5b2InIH0pOwotCi0gIHJldHVybiBwcm9taXNl
X3JlamVjdHModCwgZXJyb3IxLCByZWFkZXIucmVhZChuZXcgVWludDhBcnJheSgxKSksICdyZWFk
KHZpZXcpIG11c3QgZmFpbCcpCi0gICAgICAudGhlbigoKSA9PiBwcm9taXNlX3JlamVjdHModCwg
ZXJyb3IxLCByZWFkZXIuY2xvc2VkLCAnY2xvc2VkIG11c3QgZmFpbCcpKQotICAgICAgLnRoZW4o
KCkgPT4gYXNzZXJ0X25vdF9lcXVhbHMoYnlvYlJlcXVlc3QsIHVuZGVmaW5lZCwgJ2J5b2JSZXF1
ZXN0IG11c3Qgbm90IGJlIHVuZGVmaW5lZCcpKTsKLX0sICdSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5
dGUgc291cmNlOiBUaHJvd2luZyBpbiBwdWxsIGluIHJlc3BvbnNlIHRvIHJlYWQodmlldykgbXVz
dCBiZSBpZ25vcmVkIGlmIHRoZSBzdHJlYW0gaXMgJyArCi0gICAnZXJyb3JlZCBpbiBpdCcpOwot
Ci1wcm9taXNlX3Rlc3QoKCkgPT4gewotICBsZXQgYnlvYlJlcXVlc3Q7Ci0gIGNvbnN0IHJzID0g
bmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBwdWxsKGNvbnRyb2xsZXIpIHsKLSAgICAgIGJ5b2JS
ZXF1ZXN0ID0gY29udHJvbGxlci5ieW9iUmVxdWVzdDsKLSAgICAgIGJ5b2JSZXF1ZXN0LnJlc3Bv
bmQoNCk7Ci0gICAgfSwKLSAgICB0eXBlOiAnYnl0ZXMnCi0gIH0pOwotICBjb25zdCByZWFkZXIg
PSBycy5nZXRSZWFkZXIoeyBtb2RlOiAnYnlvYicgfSk7Ci0gIGNvbnN0IHZpZXcgPSBuZXcgVWlu
dDhBcnJheSgxNik7Ci0gIHJldHVybiByZWFkZXIucmVhZCh2aWV3KS50aGVuKCgpID0+IHsKLSAg
ICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gYnlvYlJlcXVlc3QucmVzcG9u
ZCg0KSwgJ3Jlc3BvbmQoKSBzaG91bGQgdGhyb3cgYSBUeXBlRXJyb3InKTsKLSAgfSk7Ci19LCAn
Y2FsbGluZyByZXNwb25kKCkgdHdpY2Ugb24gdGhlIHNhbWUgYnlvYlJlcXVlc3Qgc2hvdWxkIHRo
cm93Jyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0gIGxldCBieW9iUmVxdWVzdDsKLSAgY29u
c3QgbmV3VmlldyA9ICgpID0+IG5ldyBVaW50OEFycmF5KDE2KTsKLSAgY29uc3QgcnMgPSBuZXcg
UmVhZGFibGVTdHJlYW0oewotICAgIHB1bGwoY29udHJvbGxlcikgewotICAgICAgYnlvYlJlcXVl
c3QgPSBjb250cm9sbGVyLmJ5b2JSZXF1ZXN0OwotICAgICAgYnlvYlJlcXVlc3QucmVzcG9uZFdp
dGhOZXdWaWV3KG5ld1ZpZXcoKSk7Ci0gICAgfSwKLSAgICB0eXBlOiAnYnl0ZXMnCi0gIH0pOwot
ICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFkZXIoeyBtb2RlOiAnYnlvYicgfSk7Ci0gIHJldHVy
biByZWFkZXIucmVhZChuZXdWaWV3KCkpLnRoZW4oKCkgPT4gewotICAgIGFzc2VydF90aHJvd3Mo
bmV3IFR5cGVFcnJvcigpLCAoKSA9PiBieW9iUmVxdWVzdC5yZXNwb25kV2l0aE5ld1ZpZXcobmV3
VmlldygpKSwKLSAgICAgICAgICAgICAgICAgICdyZXNwb25kV2l0aE5ld1ZpZXcoKSBzaG91bGQg
dGhyb3cgYSBUeXBlRXJyb3InKTsKLSAgfSk7Ci19LCAnY2FsbGluZyByZXNwb25kV2l0aE5ld1Zp
ZXcoKSB0d2ljZSBvbiB0aGUgc2FtZSBieW9iUmVxdWVzdCBzaG91bGQgdGhyb3cnKTsKLQotcHJv
bWlzZV90ZXN0KCgpID0+IHsKLSAgbGV0IGJ5b2JSZXF1ZXN0OwotICBsZXQgcmVzb2x2ZVB1bGxD
YWxsZWRQcm9taXNlOwotICBjb25zdCBwdWxsQ2FsbGVkUHJvbWlzZSA9IG5ldyBQcm9taXNlKHJl
c29sdmUgPT4gewotICAgIHJlc29sdmVQdWxsQ2FsbGVkUHJvbWlzZSA9IHJlc29sdmU7Ci0gIH0p
OwotICBsZXQgcmVzb2x2ZVB1bGw7Ci0gIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsK
LSAgICBwdWxsKGNvbnRyb2xsZXIpIHsKLSAgICAgIGJ5b2JSZXF1ZXN0ID0gY29udHJvbGxlci5i
eW9iUmVxdWVzdDsKLSAgICAgIHJlc29sdmVQdWxsQ2FsbGVkUHJvbWlzZSgpOwotICAgICAgcmV0
dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4gewotICAgICAgICByZXNvbHZlUHVsbCA9IHJlc29s
dmU7Ci0gICAgICB9KTsKLSAgICB9LAotICAgIHR5cGU6ICdieXRlcycKLSAgfSk7Ci0gIGNvbnN0
IHJlYWRlciA9IHJzLmdldFJlYWRlcih7IG1vZGU6ICdieW9iJyB9KTsKLSAgY29uc3QgcmVhZFBy
b21pc2UgPSByZWFkZXIucmVhZChuZXcgVWludDhBcnJheSgxNikpOwotICByZXR1cm4gcHVsbENh
bGxlZFByb21pc2UudGhlbigoKSA9PiB7Ci0gICAgY29uc3QgY2FuY2VsUHJvbWlzZSA9IHJlYWRl
ci5jYW5jZWwoJ21laCcpOwotICAgIHJlc29sdmVQdWxsKCk7Ci0gICAgYnlvYlJlcXVlc3QucmVz
cG9uZCgwKTsKLSAgICByZXR1cm4gUHJvbWlzZS5hbGwoW3JlYWRQcm9taXNlLCBjYW5jZWxQcm9t
aXNlXSkudGhlbigoKSA9PiB7Ci0gICAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwg
KCkgPT4gYnlvYlJlcXVlc3QucmVzcG9uZCgwKSwgJ3Jlc3BvbmQoKSBzaG91bGQgdGhyb3cnKTsK
LSAgICB9KTsKLSAgfSk7Ci19LCAnY2FsbGluZyByZXNwb25kKDApIHR3aWNlIG9uIHRoZSBzYW1l
IGJ5b2JSZXF1ZXN0IHNob3VsZCB0aHJvdyBldmVuIHdoZW4gY2xvc2VkJyk7Ci0KLXByb21pc2Vf
dGVzdCgoKSA9PiB7Ci0gIGxldCByZXNvbHZlUHVsbENhbGxlZFByb21pc2U7Ci0gIGNvbnN0IHB1
bGxDYWxsZWRQcm9taXNlID0gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7Ci0gICAgcmVzb2x2ZVB1
bGxDYWxsZWRQcm9taXNlID0gcmVzb2x2ZTsKLSAgfSk7Ci0gIGxldCByZXNvbHZlUHVsbDsKLSAg
Y29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHB1bGwoKSB7Ci0gICAgICByZXNv
bHZlUHVsbENhbGxlZFByb21pc2UoKTsKLSAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZl
ID0+IHsKLSAgICAgICAgcmVzb2x2ZVB1bGwgPSByZXNvbHZlOwotICAgICAgfSk7Ci0gICAgfSwK
LSAgICB0eXBlOiAnYnl0ZXMnCi0gIH0pOwotICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFkZXIo
eyBtb2RlOiAnYnlvYicgfSk7Ci0gIHJlYWRlci5yZWFkKG5ldyBVaW50OEFycmF5KDE2KSk7Ci0g
IHJldHVybiBwdWxsQ2FsbGVkUHJvbWlzZS50aGVuKCgpID0+IHsKLSAgICByZXNvbHZlUHVsbCgp
OwotICAgIHJldHVybiBkZWxheSgwKS50aGVuKCgpID0+IHsKLSAgICAgIGFzc2VydF90aHJvd3Mo
bmV3IFR5cGVFcnJvcigpLCAoKSA9PiByZWFkZXIucmVsZWFzZUxvY2soKSwgJ3JlbGVhc2VMb2Nr
KCkgc2hvdWxkIHRocm93Jyk7Ci0gICAgfSk7Ci0gIH0pOwotfSwgJ3B1bGwoKSByZXNvbHZpbmcg
c2hvdWxkIG5vdCBtYWtlIHJlbGVhc2VMb2NrKCkgcG9zc2libGUnKTsKLQotcHJvbWlzZV90ZXN0
KCgpID0+IHsKLSAgLy8gVGVzdHMgaHR0cHM6Ly9naXRodWIuY29tL3doYXR3Zy9zdHJlYW1zL2lz
c3Vlcy82ODYKLQotICBsZXQgY29udHJvbGxlcjsKLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVT
dHJlYW0oewotICAgIGF1dG9BbGxvY2F0ZUNodW5rU2l6ZTogMTI4LAotICAgIHN0YXJ0KGMpIHsK
LSAgICAgIGNvbnRyb2xsZXIgPSBjOwotICAgIH0sCi0gICAgdHlwZTogJ2J5dGVzJwotICB9KTsK
LQotICBjb25zdCByZWFkUHJvbWlzZSA9IHJzLmdldFJlYWRlcigpLnJlYWQoKTsKLQotICBjb25z
dCBiciA9IGNvbnRyb2xsZXIuYnlvYlJlcXVlc3Q7Ci0gIGNvbnRyb2xsZXIuY2xvc2UoKTsKLQot
ICBici5yZXNwb25kKDApOwotCi0gIHJldHVybiByZWFkUHJvbWlzZTsKLX0sICdSZWFkYWJsZVN0
cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBkZWZhdWx0IHJlYWRlciArIGF1dG9BbGxvY2F0ZUNodW5r
U2l6ZSArIGJ5b2JSZXF1ZXN0IGludGVyYWN0aW9uJyk7Ci0KLXRlc3QoKCkgPT4gewotICBjb25z
dCBSZWFkYWJsZVN0cmVhbUJZT0JSZWFkZXIgPSBuZXcgUmVhZGFibGVTdHJlYW0oeyB0eXBlOiAn
Ynl0ZXMnIH0pLmdldFJlYWRlcih7IG1vZGU6ICdieW9iJyB9KS5jb25zdHJ1Y3RvcjsKLSAgY29u
c3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsgdHlwZTogJ2J5dGVzJyB9KTsKLSAgbmV3
IFJlYWRhYmxlU3RyZWFtQllPQlJlYWRlcihzdHJlYW0pOwotfSwgJ1JlYWRhYmxlU3RyZWFtQllP
QlJlYWRlciBjYW4gYmUgY29uc3RydWN0ZWQgZGlyZWN0bHknKTsKLQotdGVzdCgoKSA9PiB7Ci0g
IGNvbnN0IFJlYWRhYmxlU3RyZWFtQllPQlJlYWRlciA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7IHR5
cGU6ICdieXRlcycgfSkuZ2V0UmVhZGVyKHsgbW9kZTogJ2J5b2InIH0pLmNvbnN0cnVjdG9yOwot
ICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gbmV3IFJlYWRhYmxlU3RyZWFt
QllPQlJlYWRlcih7fSksICdjb25zdHJ1Y3RvciBtdXN0IHRocm93Jyk7Ci19LCAnUmVhZGFibGVT
dHJlYW1CWU9CUmVhZGVyIGNvbnN0cnVjdG9yIHJlcXVpcmVzIGEgUmVhZGFibGVTdHJlYW0gYXJn
dW1lbnQnKTsKLQotdGVzdCgoKSA9PiB7Ci0gIGNvbnN0IFJlYWRhYmxlU3RyZWFtQllPQlJlYWRl
ciA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7IHR5cGU6ICdieXRlcycgfSkuZ2V0UmVhZGVyKHsgbW9k
ZTogJ2J5b2InIH0pLmNvbnN0cnVjdG9yOwotICBjb25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGVT
dHJlYW0oeyB0eXBlOiAnYnl0ZXMnIH0pOwotICBzdHJlYW0uZ2V0UmVhZGVyKCk7Ci0gIGFzc2Vy
dF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBuZXcgUmVhZGFibGVTdHJlYW1CWU9CUmVh
ZGVyKHN0cmVhbSksICdjb25zdHJ1Y3RvciBtdXN0IHRocm93Jyk7Ci19LCAnUmVhZGFibGVTdHJl
YW1CWU9CUmVhZGVyIGNvbnN0cnVjdG9yIHJlcXVpcmVzIGFuIHVubG9ja2VkIFJlYWRhYmxlU3Ry
ZWFtJyk7Ci0KLXRlc3QoKCkgPT4gewotICBjb25zdCBSZWFkYWJsZVN0cmVhbUJZT0JSZWFkZXIg
PSBuZXcgUmVhZGFibGVTdHJlYW0oeyB0eXBlOiAnYnl0ZXMnIH0pLmdldFJlYWRlcih7IG1vZGU6
ICdieW9iJyB9KS5jb25zdHJ1Y3RvcjsKLSAgY29uc3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxlU3Ry
ZWFtKCk7Ci0gIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBuZXcgUmVhZGFi
bGVTdHJlYW1CWU9CUmVhZGVyKHN0cmVhbSksICdjb25zdHJ1Y3RvciBtdXN0IHRocm93Jyk7Ci19
LCAnUmVhZGFibGVTdHJlYW1CWU9CUmVhZGVyIGNvbnN0cnVjdG9yIHJlcXVpcmVzIGEgUmVhZGFi
bGVTdHJlYW0gd2l0aCB0eXBlICJieXRlcyInKTsKLQotdGVzdCgoKSA9PiB7Ci0gIGFzc2VydF90
aHJvd3MobmV3IFJhbmdlRXJyb3IoKSwgKCkgPT4gbmV3IFJlYWRhYmxlU3RyZWFtKHsgdHlwZTog
J2J5dGVzJyB9LCB7Ci0gICAgc2l6ZSgpIHsKLSAgICAgIHJldHVybiAxOwotICAgIH0KLSAgfSks
ICdjb25zdHJ1Y3RvciBzaG91bGQgdGhyb3cgZm9yIHNpemUgZnVuY3Rpb24nKTsKLQotICBhc3Nl
cnRfdGhyb3dzKG5ldyBSYW5nZUVycm9yKCksICgpID0+IG5ldyBSZWFkYWJsZVN0cmVhbSh7IHR5
cGU6ICdieXRlcycgfSwgeyBzaXplOiBudWxsIH0pLAotICAgICAgICAgICAgICAgICdjb25zdHJ1
Y3RvciBzaG91bGQgdGhyb3cgZm9yIHNpemUgZGVmaW5lZCcpOwotCi0gIGFzc2VydF90aHJvd3Mo
bmV3IFJhbmdlRXJyb3IoKSwKLSAgICAgICAgICAgICAgICAoKSA9PiBuZXcgUmVhZGFibGVTdHJl
YW0oeyB0eXBlOiAnYnl0ZXMnIH0sIG5ldyBDb3VudFF1ZXVpbmdTdHJhdGVneSh7IGhpZ2hXYXRl
ck1hcms6IDEgfSkpLAotICAgICAgICAgICAgICAgICdjb25zdHJ1Y3RvciBzaG91bGQgdGhyb3cg
d2hlbiBzdHJhdGVneSBpcyBDb3VudFF1ZXVpbmdTdHJhdGVneScpOwotCi0gIGFzc2VydF90aHJv
d3MobmV3IFJhbmdlRXJyb3IoKSwKLSAgICAgICAgICAgICAgICAoKSA9PiBuZXcgUmVhZGFibGVT
dHJlYW0oeyB0eXBlOiAnYnl0ZXMnIH0sIG5ldyBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5KHsg
aGlnaFdhdGVyTWFyazogNTEyIH0pKSwKLSAgICAgICAgICAgICAgICAnY29uc3RydWN0b3Igc2hv
dWxkIHRocm93IHdoZW4gc3RyYXRlZ3kgaXMgQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneScpOwot
Ci0gIGNsYXNzIEhhc1NpemVNZXRob2QgewotICAgIHNpemUoKSB7fQotIH0KLQotICBhc3NlcnRf
dGhyb3dzKG5ldyBSYW5nZUVycm9yKCksICgpID0+IG5ldyBSZWFkYWJsZVN0cmVhbSh7IHR5cGU6
ICdieXRlcycgfSwgbmV3IEhhc1NpemVNZXRob2QoKSksCi0gICAgICAgICAgICAgICAgJ2NvbnN0
cnVjdG9yIHNob3VsZCB0aHJvdyB3aGVuIHNpemUgb24gdGhlIHByb3RvdHlwZSBjaGFpbicpOwot
fSwgJ1JlYWRhYmxlU3RyZWFtIGNvbnN0cnVjdG9yIHNob3VsZCBub3QgYWNjZXB0IGEgc3RyYXRl
Z3kgd2l0aCBhIHNpemUgZGVmaW5lZCBpZiB0eXBlIGlzICJieXRlcyInKTsKLQotZG9uZSgpOwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
dHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFtcy9nZW5lcmFsLnNlcnZpY2V3b3JrZXIuaHR0cHMt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFtcy9nZW5lcmFsLnNlcnZpY2V3b3JrZXIuaHR0
cHMtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYWFhNTdiOGY1
YjIwNDBmYmJhZmM1ZjRmZDcxZTM5MjhlZTUwNmY1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMvZ2VuZXJhbC5zZXJ2aWNld29y
a2VyLmh0dHBzLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDg1ICswLDAgQEAKLQot
SGFybmVzcyBFcnJvciAoVElNRU9VVCksIG1lc3NhZ2UgPSBudWxsCi0KLVRJTUVPVVQgU2Vydmlj
ZSB3b3JrZXIgdGVzdCBzZXR1cCBUZXN0IHRpbWVkIG91dAotUEFTUyBnZXRSZWFkZXIoe21vZGU6
ICJieW9iIn0pIHRocm93cyBvbiBub24tYnl0ZXMgc3RyZWFtcyAKLVBBU1MgUmVhZGFibGVTdHJl
YW0gd2l0aCBieXRlIHNvdXJjZSBjYW4gYmUgY29uc3RydWN0ZWQgd2l0aCBubyBlcnJvcnMgCi1Q
QVNTIGdldFJlYWRlcih7bW9kZX0pIG11c3QgcGVyZm9ybSBUb1N0cmluZygpIAotUEFTUyBSZWFk
YWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBDb25zdHJ1Y3QgYW5kIGV4cGVjdCBzdGFydCBh
bmQgcHVsbCBiZWluZyBjYWxsZWQgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3Vy
Y2U6IE5vIGF1dG9tYXRpYyBwdWxsIGNhbGwgaWYgc3RhcnQgZG9lc24ndCBmaW5pc2ggCi1QQVNT
IFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IENvbnN0cnVjdCB3aXRoIGhpZ2hXYXRl
ck1hcmsgb2YgMCAKLVBBU1MgUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogZGVzaXJl
ZFNpemUgd2hlbiBjbG9zZWQgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6
IGRlc2lyZWRTaXplIHdoZW4gZXJyb3JlZCAKLVBBU1MgUmVhZGFibGVTdHJlYW0gd2l0aCBieXRl
IHNvdXJjZTogZ2V0UmVhZGVyKCksIHRoZW4gcmVsZWFzZUxvY2soKSAKLVBBU1MgUmVhZGFibGVT
dHJlYW0gd2l0aCBieXRlIHNvdXJjZTogZ2V0UmVhZGVyKCkgd2l0aCBtb2RlIHNldCB0byBieW9i
LCB0aGVuIHJlbGVhc2VMb2NrKCkgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3Vy
Y2U6IFRlc3QgdGhhdCBjbG9zaW5nIGEgc3RyZWFtIGRvZXMgbm90IHJlbGVhc2UgYSByZWFkZXIg
YXV0b21hdGljYWxseSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogVGVz
dCB0aGF0IGNsb3NpbmcgYSBzdHJlYW0gZG9lcyBub3QgcmVsZWFzZSBhIEJZT0IgcmVhZGVyIGF1
dG9tYXRpY2FsbHkgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IFRlc3Qg
dGhhdCBlcnJvcmluZyBhIHN0cmVhbSBkb2VzIG5vdCByZWxlYXNlIGEgcmVhZGVyIGF1dG9tYXRp
Y2FsbHkgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IFRlc3QgdGhhdCBl
cnJvcmluZyBhIHN0cmVhbSBkb2VzIG5vdCByZWxlYXNlIGEgQllPQiByZWFkZXIgYXV0b21hdGlj
YWxseSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogcmVsZWFzZUxvY2so
KSBvbiBSZWFkYWJsZVN0cmVhbVJlYWRlciB3aXRoIHBlbmRpbmcgcmVhZCgpIG11c3QgdGhyb3cg
Ci1QQVNTIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IEF1dG9tYXRpYyBwdWxsKCkg
YWZ0ZXIgc3RhcnQoKSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogQXV0
b21hdGljIHB1bGwoKSBhZnRlciBzdGFydCgpIGFuZCByZWFkKCkgCi1GQUlMIFJlYWRhYmxlU3Ry
ZWFtIHdpdGggYnl0ZSBzb3VyY2U6IGF1dG9BbGxvY2F0ZUNodW5rU2l6ZSBhc3NlcnRfZXF1YWxz
OiBwdWxsKCkgbXVzdCBoYXZlIGJlZW4gaW52b2tlZCB0d2ljZSBleHBlY3RlZCAyIGJ1dCBnb3Qg
MQotUEFTUyBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBNaXggb2YgYXV0byBhbGxv
Y2F0ZSBhbmQgQllPQiAKLVBBU1MgUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogQXV0
b21hdGljIHB1bGwoKSBhZnRlciBzdGFydCgpIGFuZCByZWFkKHZpZXcpIAotUEFTUyBSZWFkYWJs
ZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBlbnF1ZXVlKCksIGdldFJlYWRlcigpLCB0aGVuIHJl
YWQoKSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogUHVzaCBzb3VyY2Ug
dGhhdCBkb2Vzbid0IHVuZGVyc3RhbmQgcHVsbCBzaWduYWwgCi1GQUlMIFJlYWRhYmxlU3RyZWFt
IHdpdGggYnl0ZSBzb3VyY2U6IHB1bGwoKSBmdW5jdGlvbiBpcyBub3QgY2FsbGFibGUgYXNzZXJ0
X3Rocm93czogY29uc3RydWN0b3Igc2hvdWxkIHRocm93IGZ1bmN0aW9uICIoKSA9PiBuZXcgUmVh
ZGFibGVTdHJlYW0oewotICAgIHB1bGw6ICdmb28nLAotICAgIHR5cGU6ICdieXRlcycKLSAgfSki
IGRpZCBub3QgdGhyb3cKLVBBU1MgUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogZW5x
dWV1ZSgpIHdpdGggVWludDE2QXJyYXksIGdldFJlYWRlcigpLCB0aGVuIHJlYWQoKSAKLVBBU1Mg
UmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogZW5xdWV1ZSgpLCByZWFkKHZpZXcpIHBh
cnRpYWxseSwgdGhlbiByZWFkKCkgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3Vy
Y2U6IGdldFJlYWRlcigpLCBlbnF1ZXVlKCksIGNsb3NlKCksIHRoZW4gcmVhZCgpIAotUEFTUyBS
ZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBlbnF1ZXVlKCksIGNsb3NlKCksIGdldFJl
YWRlcigpLCB0aGVuIHJlYWQoKSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJj
ZTogUmVzcG9uZCB0byBwdWxsKCkgYnkgZW5xdWV1ZSgpIAotUEFTUyBSZWFkYWJsZVN0cmVhbSB3
aXRoIGJ5dGUgc291cmNlOiBSZXNwb25kIHRvIHB1bGwoKSBieSBlbnF1ZXVlKCkgYXN5bmNocm9u
b3VzbHkgCi1USU1FT1VUIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IFJlc3BvbmQg
dG8gbXVsdGlwbGUgcHVsbCgpIGJ5IHNlcGFyYXRlIGVucXVldWUoKSBUZXN0IHRpbWVkIG91dAot
Tk9UUlVOIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IHJlYWQodmlldyksIHRoZW4g
cmVzcG9uZCgpIAotTk9UUlVOIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IHJlYWQo
dmlldyksIHRoZW4gcmVzcG9uZCgpIHdpdGggYSB0cmFuc2ZlcnJlZCBBcnJheUJ1ZmZlciAKLU5P
VFJVTiBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiByZWFkKHZpZXcpLCB0aGVuIHJl
c3BvbmQoKSB3aXRoIHRvbyBiaWcgdmFsdWUgCi1OT1RSVU4gUmVhZGFibGVTdHJlYW0gd2l0aCBi
eXRlIHNvdXJjZTogcmVzcG9uZCgzKSB0byByZWFkKHZpZXcpIHdpdGggMiBlbGVtZW50IFVpbnQx
NkFycmF5IGVucXVldWVzIHRoZSAxIGJ5dGUgcmVtYWluZGVyIAotTk9UUlVOIFJlYWRhYmxlU3Ry
ZWFtIHdpdGggYnl0ZSBzb3VyY2U6IGVucXVldWUoKSwgZ2V0UmVhZGVyKCksIHRoZW4gcmVhZCh2
aWV3KSAKLU5PVFJVTiBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBlbnF1ZXVlKCks
IGdldFJlYWRlcigpLCB0aGVuIGNhbmNlbCgpIChtb2RlID0gbm90IEJZT0IpIAotTk9UUlVOIFJl
YWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IGVucXVldWUoKSwgZ2V0UmVhZGVyKCksIHRo
ZW4gY2FuY2VsKCkgKG1vZGUgPSBCWU9CKSAKLU5PVFJVTiBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5
dGUgc291cmNlOiBnZXRSZWFkZXIoKSwgcmVhZCh2aWV3KSwgdGhlbiBjYW5jZWwoKSAKLU5PVFJV
TiBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBjYW5jZWwoKSB3aXRoIHBhcnRpYWxs
eSBmaWxsZWQgcGVuZGluZyBwdWxsKCkgcmVxdWVzdCAKLU5PVFJVTiBSZWFkYWJsZVN0cmVhbSB3
aXRoIGJ5dGUgc291cmNlOiBlbnF1ZXVlKCksIGdldFJlYWRlcigpLCB0aGVuIHJlYWQodmlldykg
d2hlcmUgdmlldy5idWZmZXIgaXMgbm90IGZ1bGx5IGNvdmVyZWQgYnkgdmlldyAKLU5PVFJVTiBS
ZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBNdWx0aXBsZSBlbnF1ZXVlKCksIGdldFJl
YWRlcigpLCB0aGVuIHJlYWQodmlldykgCi1OT1RSVU4gUmVhZGFibGVTdHJlYW0gd2l0aCBieXRl
IHNvdXJjZTogZW5xdWV1ZSgpLCBnZXRSZWFkZXIoKSwgdGhlbiByZWFkKHZpZXcpIHdpdGggYSBi
aWdnZXIgdmlldyAKLU5PVFJVTiBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBlbnF1
ZXVlKCksIGdldFJlYWRlcigpLCB0aGVuIHJlYWQodmlldykgd2l0aCBhIHNtYWxsZXIgdmlld3Mg
Ci1OT1RSVU4gUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogZW5xdWV1ZSgpIDEgYnl0
ZSwgZ2V0UmVhZGVyKCksIHRoZW4gcmVhZCh2aWV3KSB3aXRoIFVpbnQxNkFycmF5IAotTk9UUlVO
IFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IGVucXVldWUoKSAzIGJ5dGUsIGdldFJl
YWRlcigpLCB0aGVuIHJlYWQodmlldykgd2l0aCAyLWVsZW1lbnQgVWludDE2QXJyYXkgCi1OT1RS
VU4gUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogcmVhZCh2aWV3KSB3aXRoIFVpbnQx
NkFycmF5IG9uIGNsb3NlKCktZCBzdHJlYW0gd2l0aCAxIGJ5dGUgZW5xdWV1ZSgpLWQgbXVzdCBm
YWlsIAotTk9UUlVOIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IEEgc3RyZWFtIG11
c3QgYmUgZXJyb3JlZCBpZiBjbG9zZSgpLWQgYmVmb3JlIGZ1bGZpbGxpbmcgcmVhZCh2aWV3KSB3
aXRoIFVpbnQxNkFycmF5IAotUEFTUyBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBU
aHJvdyBpZiBjbG9zZSgpLWVkIG1vcmUgdGhhbiBvbmNlIAotUEFTUyBSZWFkYWJsZVN0cmVhbSB3
aXRoIGJ5dGUgc291cmNlOiBUaHJvdyBvbiBlbnF1ZXVlKCkgYWZ0ZXIgY2xvc2UoKSAKLU5PVFJV
TiBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiByZWFkKHZpZXcpLCB0aGVuIHJlc3Bv
bmQoKSBhbmQgY2xvc2UoKSBpbiBwdWxsKCkgCi1OT1RSVU4gUmVhZGFibGVTdHJlYW0gd2l0aCBi
eXRlIHNvdXJjZTogcmVhZCh2aWV3KSB3aXRoIFVpbnQzMkFycmF5LCB0aGVuIGZpbGwgaXQgYnkg
bXVsdGlwbGUgcmVzcG9uZCgpIGNhbGxzIAotTk9UUlVOIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0
ZSBzb3VyY2U6IHJlYWQoKSB0d2ljZSwgdGhlbiBlbnF1ZXVlKCkgdHdpY2UgCi1OT1RSVU4gUmVh
ZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogTXVsdGlwbGUgcmVhZCh2aWV3KSwgY2xvc2Uo
KSBhbmQgcmVzcG9uZCgpIAotTk9UUlVOIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6
IE11bHRpcGxlIHJlYWQodmlldyksIGJpZyBlbnF1ZXVlKCkgCi1OT1RSVU4gUmVhZGFibGVTdHJl
YW0gd2l0aCBieXRlIHNvdXJjZTogTXVsdGlwbGUgcmVhZCh2aWV3KSBhbmQgbXVsdGlwbGUgZW5x
dWV1ZSgpIAotTk9UUlVOIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IHJlYWQodmll
dykgd2l0aCBwYXNzaW5nIHVuZGVmaW5lZCBhcyB2aWV3IG11c3QgZmFpbCAKLU5PVFJVTiBSZWFk
YWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiByZWFkKHZpZXcpIHdpdGggemVyby1sZW5ndGgg
dmlldyBtdXN0IGZhaWwgCi1OT1RSVU4gUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTog
cmVhZCh2aWV3KSB3aXRoIHBhc3NpbmcgYW4gZW1wdHkgb2JqZWN0IGFzIHZpZXcgbXVzdCBmYWls
IAotTk9UUlVOIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IEV2ZW4gcmVhZCh2aWV3
KSB3aXRoIHBhc3NpbmcgQXJyYXlCdWZmZXJWaWV3IGxpa2Ugb2JqZWN0IGFzIHZpZXcgbXVzdCBm
YWlsIAotTk9UUlVOIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IHJlYWQoKSBvbiBh
biBlcnJvcmVkIHN0cmVhbSAKLU5PVFJVTiBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNl
OiByZWFkKCksIHRoZW4gZXJyb3IoKSAKLU5PVFJVTiBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUg
c291cmNlOiByZWFkKHZpZXcpIG9uIGFuIGVycm9yZWQgc3RyZWFtIAotTk9UUlVOIFJlYWRhYmxl
U3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IHJlYWQodmlldyksIHRoZW4gZXJyb3IoKSAKLU5PVFJV
TiBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBUaHJvd2luZyBpbiBwdWxsIGZ1bmN0
aW9uIG11c3QgZXJyb3IgdGhlIHN0cmVhbSAKLU5PVFJVTiBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5
dGUgc291cmNlOiBUaHJvd2luZyBpbiBwdWxsIGluIHJlc3BvbnNlIHRvIHJlYWQoKSBtdXN0IGJl
IGlnbm9yZWQgaWYgdGhlIHN0cmVhbSBpcyBlcnJvcmVkIGluIGl0IAotTk9UUlVOIFJlYWRhYmxl
U3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IFRocm93aW5nIGluIHB1bGwgaW4gcmVzcG9uc2UgdG8g
cmVhZCh2aWV3KSBmdW5jdGlvbiBtdXN0IGVycm9yIHRoZSBzdHJlYW0gCi1OT1RSVU4gUmVhZGFi
bGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogVGhyb3dpbmcgaW4gcHVsbCBpbiByZXNwb25zZSB0
byByZWFkKHZpZXcpIG11c3QgYmUgaWdub3JlZCBpZiB0aGUgc3RyZWFtIGlzIGVycm9yZWQgaW4g
aXQgCi1OT1RSVU4gY2FsbGluZyByZXNwb25kKCkgdHdpY2Ugb24gdGhlIHNhbWUgYnlvYlJlcXVl
c3Qgc2hvdWxkIHRocm93IAotTk9UUlVOIGNhbGxpbmcgcmVzcG9uZFdpdGhOZXdWaWV3KCkgdHdp
Y2Ugb24gdGhlIHNhbWUgYnlvYlJlcXVlc3Qgc2hvdWxkIHRocm93IAotTk9UUlVOIGNhbGxpbmcg
cmVzcG9uZCgwKSB0d2ljZSBvbiB0aGUgc2FtZSBieW9iUmVxdWVzdCBzaG91bGQgdGhyb3cgZXZl
biB3aGVuIGNsb3NlZCAKLU5PVFJVTiBwdWxsKCkgcmVzb2x2aW5nIHNob3VsZCBub3QgbWFrZSBy
ZWxlYXNlTG9jaygpIHBvc3NpYmxlIAotTk9UUlVOIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBz
b3VyY2U6IGRlZmF1bHQgcmVhZGVyICsgYXV0b0FsbG9jYXRlQ2h1bmtTaXplICsgYnlvYlJlcXVl
c3QgaW50ZXJhY3Rpb24gCi1QQVNTIFJlYWRhYmxlU3RyZWFtQllPQlJlYWRlciBjYW4gYmUgY29u
c3RydWN0ZWQgZGlyZWN0bHkgCi1QQVNTIFJlYWRhYmxlU3RyZWFtQllPQlJlYWRlciBjb25zdHJ1
Y3RvciByZXF1aXJlcyBhIFJlYWRhYmxlU3RyZWFtIGFyZ3VtZW50IAotUEFTUyBSZWFkYWJsZVN0
cmVhbUJZT0JSZWFkZXIgY29uc3RydWN0b3IgcmVxdWlyZXMgYW4gdW5sb2NrZWQgUmVhZGFibGVT
dHJlYW0gCi1QQVNTIFJlYWRhYmxlU3RyZWFtQllPQlJlYWRlciBjb25zdHJ1Y3RvciByZXF1aXJl
cyBhIFJlYWRhYmxlU3RyZWFtIHdpdGggdHlwZSAiYnl0ZXMiIAotUEFTUyBSZWFkYWJsZVN0cmVh
bSBjb25zdHJ1Y3RvciBzaG91bGQgbm90IGFjY2VwdCBhIHN0cmF0ZWd5IHdpdGggYSBzaXplIGRl
ZmluZWQgaWYgdHlwZSBpcyAiYnl0ZXMiIAotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1z
L2dlbmVyYWwuc2VydmljZXdvcmtlci5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFtcy9nZW5l
cmFsLnNlcnZpY2V3b3JrZXIuaHR0cHMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggZDFkZTdjMzQyYzAzZDY4NjFlNTNiZmI3MzVlZGI0MjQ5ZmRjZmM3Mi4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL2dlbmVy
YWwuc2VydmljZXdvcmtlci5odHRwcy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBA
QAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08dGl0bGU+Z2VuZXJh
bC5qcyBzZXJ2aWNlIHdvcmtlciB3cmFwcGVyIGZpbGU8L3RpdGxlPgotCi08c2NyaXB0IHNyYz0i
L3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3Jlc291
cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3NlcnZp
Y2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9yZXNvdXJjZXMvdGVzdC1oZWxwZXJzLnN1Yi5qcyI+
PC9zY3JpcHQ+Ci0KLTxzY3JpcHQ+Ci0ndXNlIHN0cmljdCc7Ci1zZXJ2aWNlX3dvcmtlcl90ZXN0
KCdnZW5lcmFsLmpzJywgJ1NlcnZpY2Ugd29ya2VyIHRlc3Qgc2V0dXAnKTsKLTwvc2NyaXB0Pgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
dHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFtcy9nZW5lcmFsLnNoYXJlZHdvcmtlci1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL2dlbmVyYWwuc2hhcmVkd29ya2VyLWV4cGVjdGVkLnR4
dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDlkNWQyNTA5ZDc4NDdlOGNkNmZlNjYw
NmFhNjBjZGQzM2FhNDc0ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL2dlbmVyYWwuc2hhcmVkd29ya2VyLWV4cGVjdGVkLnR4
dAorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotQ09OU09MRSBNRVNTQUdFOiBSZWZlcmVu
Y2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogU2hhcmVkV29ya2VyCi0KLUhhcm5lc3MgRXJy
b3IgKEZBSUwpLCBtZXNzYWdlID0gUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6
IFNoYXJlZFdvcmtlcgotCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMvZ2VuZXJhbC5z
aGFyZWR3b3JrZXIuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMvZ2VuZXJhbC5zaGFyZWR3b3JrZXIu
aHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGNlZWE4YWM4YjlmMDBjOWQwY2Nh
MzdiZjEzN2JlNDUzZTcxNDUxMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL2dlbmVyYWwuc2hhcmVkd29ya2VyLmh0bWwKKysr
IC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxtZXRhIGNoYXJz
ZXQ9InV0Zi04Ij4KLTx0aXRsZT5nZW5lcmFsLmpzIHNoYXJlZCB3b3JrZXIgd3JhcHBlciBmaWxl
PC90aXRsZT4KLQotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2Ny
aXB0PgotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2Ny
aXB0PgotCi08c2NyaXB0PgotJ3VzZSBzdHJpY3QnOwotZmV0Y2hfdGVzdHNfZnJvbV93b3JrZXIo
bmV3IFNoYXJlZFdvcmtlcignZ2VuZXJhbC5qcycpKTsKLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRh
YmxlLWJ5dGUtc3RyZWFtcy9wcm9wZXJ0aWVzLmRlZGljYXRlZHdvcmtlci1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVh
ZGFibGUtYnl0ZS1zdHJlYW1zL3Byb3BlcnRpZXMuZGVkaWNhdGVkd29ya2VyLWV4cGVjdGVkLnR4
dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOThlNTUxZWJjZGU5ZGMwMTY1MGUxZDk3
ZGMyZmNlNjVjNjRlY2JmMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL3Byb3BlcnRpZXMuZGVkaWNhdGVkd29ya2VyLWV4cGVj
dGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDcgKzAsMCBAQAotCi1QQVNTIENhbiBnZXQgdGhl
IFJlYWRhYmxlU3RyZWFtQllPQlJlYWRlciBjb25zdHJ1Y3RvciBpbmRpcmVjdGx5IAotUEFTUyBS
ZWFkYWJsZVN0cmVhbUJZT0JSZWFkZXIgY29uc3RydWN0b3Igc2hvdWxkIGdldCBhIFJlYWRhYmxl
U3RyZWFtIG9iamVjdCBhcyBhcmd1bWVudCAKLVBBU1MgUmVhZGFibGVTdHJlYW1CWU9CUmVhZGVy
IGluc3RhbmNlcyBzaG91bGQgaGF2ZSB0aGUgY29ycmVjdCBsaXN0IG9mIHByb3BlcnRpZXMgCi1G
QUlMIFJlYWRhYmxlU3RyZWFtQllPQlJlcXVlc3QgaW5zdGFuY2VzIHNob3VsZCBoYXZlIHRoZSBj
b3JyZWN0IGxpc3Qgb2YgcHJvcGVydGllcyBhc3NlcnRfZXF1YWxzOiBjb25zdHJ1Y3RvciBoYXMg
MCBwYXJhbWV0ZXJzIGV4cGVjdGVkIDAgYnV0IGdvdCAyCi1GQUlMIFJlYWRhYmxlQnl0ZVN0cmVh
bUNvbnRyb2xsZXIgaW5zdGFuY2VzIHNob3VsZCBoYXZlIHRoZSBjb3JyZWN0IGxpc3Qgb2YgcHJv
cGVydGllcyBhc3NlcnRfZXF1YWxzOiBjb25zdHJ1Y3RvciBoYXMgbm8gcGFyYW1ldGVycyBleHBl
Y3RlZCAwIGJ1dCBnb3QgMwotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL3Byb3BlcnRp
ZXMuZGVkaWNhdGVkd29ya2VyLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL3Byb3BlcnRpZXMuZGVk
aWNhdGVkd29ya2VyLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUwZDYzZWQw
ZWRiMmJhMDUyZGFhZjg5ZGYyM2M5MzIwZmM4MmM5ZGMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFtcy9wcm9wZXJ0aWVzLmRlZGlj
YXRlZHdvcmtlci5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotPCFET0NUWVBF
IGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08dGl0bGU+cHJvcGVydGllcy5qcyBkZWRp
Y2F0ZWQgd29ya2VyIHdyYXBwZXIgZmlsZTwvdGl0bGU+Ci0KLTxzY3JpcHQgc3JjPSIvcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rl
c3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLQotPHNjcmlwdD4KLSd1c2Ugc3RyaWN0JzsK
LWZldGNoX3Rlc3RzX2Zyb21fd29ya2VyKG5ldyBXb3JrZXIoJ3Byb3BlcnRpZXMuanMnKSk7Ci08
L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMvcHJvcGVydGllcy5odG1sIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRh
YmxlLWJ5dGUtc3RyZWFtcy9wcm9wZXJ0aWVzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDQxYWI2YjI4NTQyOWNjODA2NDAxYzgzOWIyMmY3MzNlOGJiOTRkYTAuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFtcy9w
cm9wZXJ0aWVzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi08IURPQ1RZUEUg
aHRtbD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTx0aXRsZT5wcm9wZXJ0aWVzLmpzIGJyb3dz
ZXIgY29udGV4dCB3cmFwcGVyIGZpbGU8L3RpdGxlPgotCi08c2NyaXB0IHNyYz0iL3Jlc291cmNl
cy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0
aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci0KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMv
cnMtdXRpbHMuanMiPjwvc2NyaXB0PgotCi08c2NyaXB0IHNyYz0icHJvcGVydGllcy5qcyI+PC9z
Y3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL3Byb3BlcnRpZXMuanMgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUt
Ynl0ZS1zdHJlYW1zL3Byb3BlcnRpZXMuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDk3NWZiYTcxMDliMDY0ZjRlZWE5MjQ3ZjZkYWYzNDNiYjNkMGE0MmUuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFtcy9wcm9wZXJ0
aWVzLmpzCisrKyAvZGV2L251bGwKQEAgLTEsMTQ3ICswLDAgQEAKLSd1c2Ugc3RyaWN0JzsKLQot
aWYgKHNlbGYuaW1wb3J0U2NyaXB0cykgewotICBzZWxmLmltcG9ydFNjcmlwdHMoJy4uL3Jlc291
cmNlcy9ycy11dGlscy5qcycpOwotICBzZWxmLmltcG9ydFNjcmlwdHMoJy9yZXNvdXJjZXMvdGVz
dGhhcm5lc3MuanMnKTsKLX0KLQotbGV0IFJlYWRhYmxlU3RyZWFtQllPQlJlYWRlcjsKLQotdGVz
dCgoKSA9PiB7Ci0KLSAgLy8gSXQncyBub3QgZXhwb3NlZCBnbG9iYWxseSwgYnV0IHdlIHRlc3Qg
YSBmZXcgb2YgaXRzIHByb3BlcnRpZXMgaGVyZS4KLSAgUmVhZGFibGVTdHJlYW1CWU9CUmVhZGVy
ID0gKG5ldyBSZWFkYWJsZVN0cmVhbSh7IHR5cGU6ICdieXRlcycgfSkpCi0gICAgICAuZ2V0UmVh
ZGVyKHsgbW9kZTogJ2J5b2InIH0pLmNvbnN0cnVjdG9yOwotCi19LCAnQ2FuIGdldCB0aGUgUmVh
ZGFibGVTdHJlYW1CWU9CUmVhZGVyIGNvbnN0cnVjdG9yIGluZGlyZWN0bHknKTsKLQotdGVzdCgo
KSA9PiB7Ci0KLSAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IG5ldyBSZWFk
YWJsZVN0cmVhbUJZT0JSZWFkZXIoJ3BvdGF0bycpKTsKLSAgYXNzZXJ0X3Rocm93cyhuZXcgVHlw
ZUVycm9yKCksICgpID0+IG5ldyBSZWFkYWJsZVN0cmVhbUJZT0JSZWFkZXIoe30pKTsKLSAgYXNz
ZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IG5ldyBSZWFkYWJsZVN0cmVhbUJZT0JS
ZWFkZXIoKSk7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbUJZT0JSZWFkZXIgY29uc3RydWN0b3Igc2hv
dWxkIGdldCBhIFJlYWRhYmxlU3RyZWFtIG9iamVjdCBhcyBhcmd1bWVudCcpOwotCi10ZXN0KCgp
ID0+IHsKLQotICBjb25zdCBtZXRob2RzID0gWydjYW5jZWwnLCAnY29uc3RydWN0b3InLCAncmVh
ZCcsICdyZWxlYXNlTG9jayddOwotICBjb25zdCBwcm9wZXJ0aWVzID0gbWV0aG9kcy5jb25jYXQo
WydjbG9zZWQnXSkuc29ydCgpOwotCi0gIGNvbnN0IHJzUmVhZGVyID0gbmV3IFJlYWRhYmxlU3Ry
ZWFtQllPQlJlYWRlcihuZXcgUmVhZGFibGVTdHJlYW0oeyB0eXBlOiAnYnl0ZXMnIH0pKTsKLSAg
Y29uc3QgcHJvdG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YocnNSZWFkZXIpOwotCi0gIGFzc2Vy
dF9hcnJheV9lcXVhbHMoT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMocHJvdG8pLnNvcnQoKSwg
cHJvcGVydGllcyk7Ci0KLSAgZm9yIChjb25zdCBtIG9mIG1ldGhvZHMpIHsKLSAgICBjb25zdCBw
cm9wRGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocHJvdG8sIG0pOwotICAg
IGFzc2VydF9lcXVhbHMocHJvcERlc2MuZW51bWVyYWJsZSwgZmFsc2UsICdtZXRob2Qgc2hvdWxk
IGJlIG5vbi1lbnVtZXJhYmxlJyk7Ci0gICAgYXNzZXJ0X2VxdWFscyhwcm9wRGVzYy5jb25maWd1
cmFibGUsIHRydWUsICdtZXRob2Qgc2hvdWxkIGJlIGNvbmZpZ3VyYWJsZScpOwotICAgIGFzc2Vy
dF9lcXVhbHMocHJvcERlc2Mud3JpdGFibGUsIHRydWUsICdtZXRob2Qgc2hvdWxkIGJlIHdyaXRh
YmxlJyk7Ci0gICAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgcnNSZWFkZXJbbV0sICdmdW5jdGlvbics
ICdzaG91bGQgaGF2ZSBiZSBhIG1ldGhvZCcpOwotICAgIGNvbnN0IGV4cGVjdGVkTmFtZSA9IG0g
PT09ICdjb25zdHJ1Y3RvcicgPyAnUmVhZGFibGVTdHJlYW1CWU9CUmVhZGVyJyA6IG07Ci0gICAg
YXNzZXJ0X2VxdWFscyhyc1JlYWRlclttXS5uYW1lLCBleHBlY3RlZE5hbWUsICdtZXRob2Qgc2hv
dWxkIGhhdmUgdGhlIGNvcnJlY3QgbmFtZScpOwotICB9Ci0KLSAgY29uc3QgY2xvc2VkUHJvcERl
c2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHByb3RvLCAnY2xvc2VkJyk7Ci0g
IGFzc2VydF9lcXVhbHMoY2xvc2VkUHJvcERlc2MuZW51bWVyYWJsZSwgZmFsc2UsICdjbG9zZWQg
c2hvdWxkIGJlIG5vbi1lbnVtZXJhYmxlJyk7Ci0gIGFzc2VydF9lcXVhbHMoY2xvc2VkUHJvcERl
c2MuY29uZmlndXJhYmxlLCB0cnVlLCAnY2xvc2VkIHNob3VsZCBiZSBjb25maWd1cmFibGUnKTsK
LSAgYXNzZXJ0X25vdF9lcXVhbHMoY2xvc2VkUHJvcERlc2MuZ2V0LCB1bmRlZmluZWQsICdjbG9z
ZWQgc2hvdWxkIGhhdmUgYSBnZXR0ZXInKTsKLSAgYXNzZXJ0X2VxdWFscyhjbG9zZWRQcm9wRGVz
Yy5zZXQsIHVuZGVmaW5lZCwgJ2Nsb3NlZCBzaG91bGQgbm90IGhhdmUgYSBzZXR0ZXInKTsKLQot
ICBhc3NlcnRfZXF1YWxzKHJzUmVhZGVyLmNhbmNlbC5sZW5ndGgsIDEsICdjYW5jZWwgaGFzIDEg
cGFyYW1ldGVyJyk7Ci0gIGFzc2VydF9ub3RfZXF1YWxzKHJzUmVhZGVyLmNsb3NlZCwgdW5kZWZp
bmVkLCAnaGFzIGEgbm9uLXVuZGVmaW5lZCBjbG9zZWQgcHJvcGVydHknKTsKLSAgYXNzZXJ0X2Vx
dWFscyh0eXBlb2YgcnNSZWFkZXIuY2xvc2VkLnRoZW4sICdmdW5jdGlvbicsICdjbG9zZWQgcHJv
cGVydHkgaXMgdGhlbmFibGUnKTsKLSAgYXNzZXJ0X2VxdWFscyhyc1JlYWRlci5jb25zdHJ1Y3Rv
ci5sZW5ndGgsIDEsICdjb25zdHJ1Y3RvciBoYXMgMSBwYXJhbWV0ZXInKTsKLSAgYXNzZXJ0X2Vx
dWFscyhyc1JlYWRlci5yZWFkLmxlbmd0aCwgMSwgJ3JlYWQgaGFzIDEgcGFyYW1ldGVyJyk7Ci0g
IGFzc2VydF9lcXVhbHMocnNSZWFkZXIucmVsZWFzZUxvY2subGVuZ3RoLCAwLCAncmVsZWFzZUxv
Y2sgaGFzIG5vIHBhcmFtZXRlcnMnKTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtQllPQlJlYWRlciBp
bnN0YW5jZXMgc2hvdWxkIGhhdmUgdGhlIGNvcnJlY3QgbGlzdCBvZiBwcm9wZXJ0aWVzJyk7Ci0K
LXByb21pc2VfdGVzdCh0ID0+IHsKLQotICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7
Ci0gICAgcHVsbChjb250cm9sbGVyKSB7Ci0gICAgICByZXR1cm4gdC5zdGVwKCgpID0+IHsKLSAg
ICAgICAgY29uc3QgYnlvYlJlcXVlc3QgPSBjb250cm9sbGVyLmJ5b2JSZXF1ZXN0OwotCi0gICAg
ICAgIGNvbnN0IG1ldGhvZHMgPSBbJ2NvbnN0cnVjdG9yJywgJ3Jlc3BvbmQnLCAncmVzcG9uZFdp
dGhOZXdWaWV3J107Ci0gICAgICAgIGNvbnN0IHByb3BlcnRpZXMgPSBtZXRob2RzLmNvbmNhdChb
J3ZpZXcnXSkuc29ydCgpOwotCi0gICAgICAgIGNvbnN0IHByb3RvID0gT2JqZWN0LmdldFByb3Rv
dHlwZU9mKGJ5b2JSZXF1ZXN0KTsKLQotICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKE9iamVj
dC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHByb3RvKS5zb3J0KCksIHByb3BlcnRpZXMpOwotCi0gICAg
ICAgIGZvciAoY29uc3QgbSBvZiBtZXRob2RzKSB7Ci0gICAgICAgICAgY29uc3QgcHJvcERlc2Mg
PSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHByb3RvLCBtKTsKLSAgICAgICAgICBh
c3NlcnRfZXF1YWxzKHByb3BEZXNjLmVudW1lcmFibGUsIGZhbHNlLCAnbWV0aG9kIHNob3VsZCBi
ZSBub24tZW51bWVyYWJsZScpOwotICAgICAgICAgIGFzc2VydF9lcXVhbHMocHJvcERlc2MuY29u
ZmlndXJhYmxlLCB0cnVlLCAnbWV0aG9kIHNob3VsZCBiZSBjb25maWd1cmFibGUnKTsKLSAgICAg
ICAgICBhc3NlcnRfZXF1YWxzKHByb3BEZXNjLndyaXRhYmxlLCB0cnVlLCAnbWV0aG9kIHNob3Vs
ZCBiZSB3cml0YWJsZScpOwotICAgICAgICAgIGFzc2VydF9lcXVhbHModHlwZW9mIGJ5b2JSZXF1
ZXN0W21dLCAnZnVuY3Rpb24nLCAnc2hvdWxkIGhhdmUgYSBtZXRob2QnKTsKLSAgICAgICAgICBj
b25zdCBleHBlY3RlZE5hbWUgPSBtID09PSAnY29uc3RydWN0b3InID8gJ1JlYWRhYmxlU3RyZWFt
QllPQlJlcXVlc3QnIDogbTsKLSAgICAgICAgICBhc3NlcnRfZXF1YWxzKGJ5b2JSZXF1ZXN0W21d
Lm5hbWUsIGV4cGVjdGVkTmFtZSwgJ21ldGhvZCBzaG91bGQgaGF2ZSB0aGUgY29ycmVjdCBuYW1l
Jyk7Ci0gICAgICAgIH0KLQotICAgICAgICBjb25zdCB2aWV3UHJvcERlc2MgPSBPYmplY3QuZ2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKHByb3RvLCAndmlldycpOwotICAgICAgICBhc3NlcnRfZXF1
YWxzKHZpZXdQcm9wRGVzYy5lbnVtZXJhYmxlLCBmYWxzZSwgJ3ZpZXcgc2hvdWxkIGJlIG5vbi1l
bnVtZXJhYmxlJyk7Ci0gICAgICAgIGFzc2VydF9lcXVhbHModmlld1Byb3BEZXNjLmNvbmZpZ3Vy
YWJsZSwgdHJ1ZSwgJ3ZpZXcgc2hvdWxkIGJlIGNvbmZpZ3VyYWJsZScpOwotICAgICAgICBhc3Nl
cnRfbm90X2VxdWFscyh2aWV3UHJvcERlc2MuZ2V0LCB1bmRlZmluZWQsICd2aWV3IHNob3VsZCBo
YXZlIGEgZ2V0dGVyJyk7Ci0gICAgICAgIGFzc2VydF9lcXVhbHModmlld1Byb3BEZXNjLnNldCwg
dW5kZWZpbmVkLCAndmlldyBzaG91bGQgbm90IGhhdmUgYSBzZXR0ZXInKTsKLSAgICAgICAgYXNz
ZXJ0X25vdF9lcXVhbHMoYnlvYlJlcXVlc3QudmlldywgdW5kZWZpbmVkLCAnaGFzIGEgbm9uLXVu
ZGVmaW5lZCB2aWV3IHByb3BlcnR5Jyk7Ci0gICAgICAgIGFzc2VydF9lcXVhbHMoYnlvYlJlcXVl
c3QuY29uc3RydWN0b3IubGVuZ3RoLCAwLCAnY29uc3RydWN0b3IgaGFzIDAgcGFyYW1ldGVycycp
OwotICAgICAgICBhc3NlcnRfZXF1YWxzKGJ5b2JSZXF1ZXN0LnJlc3BvbmQubGVuZ3RoLCAxLCAn
cmVzcG9uZCBoYXMgMSBwYXJhbWV0ZXInKTsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyhieW9iUmVx
dWVzdC5yZXNwb25kV2l0aE5ld1ZpZXcubGVuZ3RoLCAxLCAncmVsZWFzZUxvY2sgaGFzIDEgcGFy
YW1ldGVyJyk7Ci0KLSAgICAgICAgYnlvYlJlcXVlc3QucmVzcG9uZCgxKTsKLQotICAgICAgfSk7
Ci0gICAgfSwKLSAgICB0eXBlOiAnYnl0ZXMnIH0pOwotICBjb25zdCByZWFkZXIgPSBycy5nZXRS
ZWFkZXIoeyBtb2RlOiAnYnlvYicgfSk7Ci0gIHJldHVybiByZWFkZXIucmVhZChuZXcgVWludDhB
cnJheSgxKSk7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbUJZT0JSZXF1ZXN0IGluc3RhbmNlcyBzaG91
bGQgaGF2ZSB0aGUgY29ycmVjdCBsaXN0IG9mIHByb3BlcnRpZXMnKTsKLQotdGVzdCgoKSA9PiB7
Ci0KLSAgY29uc3QgbWV0aG9kcyA9IFsnY2xvc2UnLCAnY29uc3RydWN0b3InLCAnZW5xdWV1ZScs
ICdlcnJvciddOwotICBjb25zdCBhY2Nlc3NvcnMgPSBbJ2J5b2JSZXF1ZXN0JywgJ2Rlc2lyZWRT
aXplJ107Ci0gIGNvbnN0IHByb3BlcnRpZXMgPSBtZXRob2RzLmNvbmNhdChhY2Nlc3NvcnMpLnNv
cnQoKTsKLQotICBsZXQgY29udHJvbGxlcjsKLSAgbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBz
dGFydChjKSB7Ci0gICAgICBjb250cm9sbGVyID0gYzsKLSAgICB9LAotICAgIHR5cGU6ICdieXRl
cycKLSAgfSk7Ci0gIGNvbnN0IHByb3RvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKGNvbnRyb2xs
ZXIpOwotCi0gIGFzc2VydF9hcnJheV9lcXVhbHMoT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMo
cHJvdG8pLnNvcnQoKSwgcHJvcGVydGllcyk7Ci0KLSAgZm9yIChjb25zdCBtIG9mIG1ldGhvZHMp
IHsKLSAgICBjb25zdCBwcm9wRGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
cHJvdG8sIG0pOwotICAgIGFzc2VydF9lcXVhbHMocHJvcERlc2MuZW51bWVyYWJsZSwgZmFsc2Us
ICdtZXRob2Qgc2hvdWxkIGJlIG5vbi1lbnVtZXJhYmxlJyk7Ci0gICAgYXNzZXJ0X2VxdWFscyhw
cm9wRGVzYy5jb25maWd1cmFibGUsIHRydWUsICdtZXRob2Qgc2hvdWxkIGJlIGNvbmZpZ3VyYWJs
ZScpOwotICAgIGFzc2VydF9lcXVhbHMocHJvcERlc2Mud3JpdGFibGUsIHRydWUsICdtZXRob2Qg
c2hvdWxkIGJlIHdyaXRhYmxlJyk7Ci0gICAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgY29udHJvbGxl
clttXSwgJ2Z1bmN0aW9uJywgJ3Nob3VsZCBoYXZlIGJlIGEgbWV0aG9kJyk7Ci0gICAgY29uc3Qg
ZXhwZWN0ZWROYW1lID0gbSA9PT0gJ2NvbnN0cnVjdG9yJyA/ICdSZWFkYWJsZUJ5dGVTdHJlYW1D
b250cm9sbGVyJyA6IG07Ci0gICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyW21dLm5hbWUsIGV4
cGVjdGVkTmFtZSwgJ21ldGhvZCBzaG91bGQgaGF2ZSB0aGUgY29ycmVjdCBuYW1lJyk7Ci0gIH0K
LQotICBmb3IgKGNvbnN0IGEgb2YgYWNjZXNzb3JzKSB7Ci0gICAgY29uc3QgcHJvcERlc2MgPSBP
YmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHByb3RvLCBhKTsKLSAgICBhc3NlcnRfZXF1
YWxzKHByb3BEZXNjLmVudW1lcmFibGUsIGZhbHNlLCBgJHthfSBzaG91bGQgYmUgbm9uLWVudW1l
cmFibGVgKTsKLSAgICBhc3NlcnRfZXF1YWxzKHByb3BEZXNjLmNvbmZpZ3VyYWJsZSwgdHJ1ZSwg
YCR7YX0gc2hvdWxkIGJlIGNvbmZpZ3VyYWJsZWApOwotICAgIGFzc2VydF9ub3RfZXF1YWxzKHBy
b3BEZXNjLmdldCwgdW5kZWZpbmVkLCBgJHthfSBzaG91bGQgaGF2ZSBhIGdldHRlcmApOwotICAg
IGFzc2VydF9lcXVhbHMocHJvcERlc2Muc2V0LCB1bmRlZmluZWQsIGAke2F9IHNob3VsZCBub3Qg
aGF2ZSBhIHNldHRlcmApOwotICB9Ci0KLSAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmNsb3Nl
Lmxlbmd0aCwgMCwgJ2NhbmNlbCBoYXMgbm8gcGFyYW1ldGVycycpOwotICBhc3NlcnRfZXF1YWxz
KGNvbnRyb2xsZXIuY29uc3RydWN0b3IubGVuZ3RoLCAwLCAnY29uc3RydWN0b3IgaGFzIG5vIHBh
cmFtZXRlcnMnKTsKLSAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmVucXVldWUubGVuZ3RoLCAx
LCAnZW5xdWV1ZSBoYXMgMSBwYXJhbWV0ZXInKTsKLSAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVy
LmVycm9yLmxlbmd0aCwgMSwgJ3JlbGVhc2VMb2NrIGhhcyAxIHBhcmFtZXRlcicpOwotCi19LCAn
UmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlciBpbnN0YW5jZXMgc2hvdWxkIGhhdmUgdGhlIGNv
cnJlY3QgbGlzdCBvZiBwcm9wZXJ0aWVzJyk7Ci0KLWRvbmUoKTsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1i
eXRlLXN0cmVhbXMvcHJvcGVydGllcy5zZXJ2aWNld29ya2VyLmh0dHBzLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFk
YWJsZS1ieXRlLXN0cmVhbXMvcHJvcGVydGllcy5zZXJ2aWNld29ya2VyLmh0dHBzLWV4cGVjdGVk
LnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjViNzljYjIzZmJhOThlNjNlNTY3
MmYzNjg5YTA4NjQxMDU3Yzc5Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL3Byb3BlcnRpZXMuc2VydmljZXdvcmtlci5odHRw
cy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw4ICswLDAgQEAKLQotUEFTUyBTZXJ2
aWNlIHdvcmtlciB0ZXN0IHNldHVwIAotUEFTUyBDYW4gZ2V0IHRoZSBSZWFkYWJsZVN0cmVhbUJZ
T0JSZWFkZXIgY29uc3RydWN0b3IgaW5kaXJlY3RseSAKLVBBU1MgUmVhZGFibGVTdHJlYW1CWU9C
UmVhZGVyIGNvbnN0cnVjdG9yIHNob3VsZCBnZXQgYSBSZWFkYWJsZVN0cmVhbSBvYmplY3QgYXMg
YXJndW1lbnQgCi1QQVNTIFJlYWRhYmxlU3RyZWFtQllPQlJlYWRlciBpbnN0YW5jZXMgc2hvdWxk
IGhhdmUgdGhlIGNvcnJlY3QgbGlzdCBvZiBwcm9wZXJ0aWVzIAotRkFJTCBSZWFkYWJsZVN0cmVh
bUJZT0JSZXF1ZXN0IGluc3RhbmNlcyBzaG91bGQgaGF2ZSB0aGUgY29ycmVjdCBsaXN0IG9mIHBy
b3BlcnRpZXMgYXNzZXJ0X2VxdWFsczogY29uc3RydWN0b3IgaGFzIDAgcGFyYW1ldGVycyBleHBl
Y3RlZCAwIGJ1dCBnb3QgMgotRkFJTCBSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyIGluc3Rh
bmNlcyBzaG91bGQgaGF2ZSB0aGUgY29ycmVjdCBsaXN0IG9mIHByb3BlcnRpZXMgYXNzZXJ0X2Vx
dWFsczogY29uc3RydWN0b3IgaGFzIG5vIHBhcmFtZXRlcnMgZXhwZWN0ZWQgMCBidXQgZ290IDMK
LQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFtcy9wcm9wZXJ0aWVzLnNlcnZpY2V3b3JrZXIu
aHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMvcHJvcGVydGllcy5zZXJ2aWNld29ya2VyLmh0
dHBzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJhNWM1MTM1ZjJmN2ZjOTAz
YjY2YmNlODgzYzEwNjYxZDczZWJhMzMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFtcy9wcm9wZXJ0aWVzLnNlcnZpY2V3b3JrZXIu
aHR0cHMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLTwhRE9DVFlQRSBodG1s
PgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHRpdGxlPnByb3BlcnRpZXMuanMgc2VydmljZSB3
b3JrZXIgd3JhcHBlciBmaWxlPC90aXRsZT4KLQotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVz
dGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5l
c3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9zZXJ2aWNlLXdvcmtlcnMvc2Vy
dmljZS13b3JrZXIvcmVzb3VyY2VzL3Rlc3QtaGVscGVycy5zdWIuanMiPjwvc2NyaXB0PgotCi08
c2NyaXB0PgotJ3VzZSBzdHJpY3QnOwotc2VydmljZV93b3JrZXJfdGVzdCgncHJvcGVydGllcy5q
cycsICdTZXJ2aWNlIHdvcmtlciB0ZXN0IHNldHVwJyk7Ci08L3NjcmlwdD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFk
YWJsZS1ieXRlLXN0cmVhbXMvcHJvcGVydGllcy5zaGFyZWR3b3JrZXItZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRh
YmxlLWJ5dGUtc3RyZWFtcy9wcm9wZXJ0aWVzLnNoYXJlZHdvcmtlci1leHBlY3RlZC50eHQKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA5ZDVkMjUwOWQ3ODQ3ZThjZDZmZTY2MDZhYTYw
Y2RkMzNhYTQ3NGUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3Jl
YWRhYmxlLWJ5dGUtc3RyZWFtcy9wcm9wZXJ0aWVzLnNoYXJlZHdvcmtlci1leHBlY3RlZC50eHQK
KysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLUNPTlNPTEUgTUVTU0FHRTogUmVmZXJlbmNl
RXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IFNoYXJlZFdvcmtlcgotCi1IYXJuZXNzIEVycm9y
IChGQUlMKSwgbWVzc2FnZSA9IFJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBT
aGFyZWRXb3JrZXIKLQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL3Byb3BlcnRpZXMu
c2hhcmVkd29ya2VyLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL3Byb3BlcnRpZXMuc2hhcmVkd29y
a2VyLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQyZmIzZTVlYmMwYTAzMTIz
YzUzMzhiMDI1YmU2ZWY4NWU0YjI4NzMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFtcy9wcm9wZXJ0aWVzLnNoYXJlZHdvcmtlci5o
dG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08bWV0
YSBjaGFyc2V0PSJ1dGYtOCI+Ci08dGl0bGU+cHJvcGVydGllcy5qcyBzaGFyZWQgd29ya2VyIHdy
YXBwZXIgZmlsZTwvdGl0bGU+Ci0KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0
LmpzIj48L3NjcmlwdD4KLQotPHNjcmlwdD4KLSd1c2Ugc3RyaWN0JzsKLWZldGNoX3Rlc3RzX2Zy
b21fd29ya2VyKG5ldyBTaGFyZWRXb3JrZXIoJ3Byb3BlcnRpZXMuanMnKSk7Ci08L3NjcmlwdD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1z
dHJlYW1zL3czYy1pbXBvcnQubG9nCmluZGV4IDg5MzdiYmJiMjRjYmY5ODVjY2I1MTUwZGQxZTM0
MTlkZDNiMmEzODEuLjAxOTJmMTFiNjViYjgxNjUwNzljZjdhNDM1ZTBjZjY1OTIzODkxMGEgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMvdzNjLWltcG9ydC5sb2cKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLWJ5dGUt
c3RyZWFtcy93M2MtaW1wb3J0LmxvZwpAQCAtMSw3ICsxLDcgQEAKIFRoZSB0ZXN0cyBpbiB0aGlz
IGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgogRG8gTk9U
IG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCiBJbnN0ZWFkLCBjcmVhdGUg
YSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMKKwlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRl
c3RzL3dwdAogCiBUaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGlu
IFdlYktpdCB0byByZWltcG9ydAogCkBAIC0xNCwyMyArMTQsNiBAQCBQcm9wZXJ0eSB2YWx1ZXMg
cmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKIE5vbmUKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogTGlzdCBv
ZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL2JyYW5kLWNoZWNrcy5kZWRpY2F0ZWR3b3JrZXIu
aHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMvYnJhbmQtY2hlY2tzLmh0bWwKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJl
YW1zL2JyYW5kLWNoZWNrcy5qcwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMvYnJhbmQtY2hlY2tzLnNlcnZp
Y2V3b3JrZXIuaHR0cHMuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMvYnJhbmQtY2hlY2tzLnNoYXJl
ZHdvcmtlci5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFtcy9kZXRhY2hlZC1idWZmZXJzLmRlZGljYXRl
ZHdvcmtlci5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFtcy9kZXRhY2hlZC1idWZmZXJzLmh0bWwKLS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFi
bGUtYnl0ZS1zdHJlYW1zL2RldGFjaGVkLWJ1ZmZlcnMuanMKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL2Rl
dGFjaGVkLWJ1ZmZlcnMuc2VydmljZXdvcmtlci5odHRwcy5odG1sCi0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFt
cy9kZXRhY2hlZC1idWZmZXJzLnNoYXJlZHdvcmtlci5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFtcy9n
ZW5lcmFsLmRlZGljYXRlZHdvcmtlci5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFtcy9nZW5lcmFsLmh0
bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
cmVhZGFibGUtYnl0ZS1zdHJlYW1zL2dlbmVyYWwuanMKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL2dlbmVy
YWwuc2VydmljZXdvcmtlci5odHRwcy5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFtcy9nZW5lcmFsLnNo
YXJlZHdvcmtlci5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFtcy9wcm9wZXJ0aWVzLmRlZGljYXRlZHdv
cmtlci5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
dHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFtcy9wcm9wZXJ0aWVzLmh0bWwKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1z
dHJlYW1zL3Byb3BlcnRpZXMuanMKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL3Byb3BlcnRpZXMuc2Vydmlj
ZXdvcmtlci5odHRwcy5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFtcy9wcm9wZXJ0aWVzLnNoYXJlZHdv
cmtlci5odG1sCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
dHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFtcy9iYWQtYnVmZmVycy1hbmQtdmlld3MuYW55Lmpz
CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3Jl
YWRhYmxlLWJ5dGUtc3RyZWFtcy9jb25zdHJ1Y3QtYnlvYi1yZXF1ZXN0LmFueS5qcworL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1i
eXRlLXN0cmVhbXMvZ2VuZXJhbC5hbnkuanMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2FzeW5j
LWl0ZXJhdG9yLmFueS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9hc3luYy1pdGVyYXRvci5h
bnktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRlNTdlYWNlZTY0NDk3NTgyYTU0MDVjMzRjY2Jk
NWZjZGNiNTI0ZWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9hc3luYy1pdGVyYXRv
ci5hbnktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNDAgQEAKKworRkFJTCBBc3luYyBpdGVyYXRv
ciBpbnN0YW5jZXMgc2hvdWxkIGhhdmUgdGhlIGNvcnJlY3QgbGlzdCBvZiBwcm9wZXJ0aWVzIHMu
dmFsdWVzIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3MudmFsdWVzKCknLCAncy52YWx1ZXMnIGlz
IHVuZGVmaW5lZCkKK0ZBSUwgQXN5bmMtaXRlcmF0aW5nIGEgcHVzaCBzb3VyY2UgcHJvbWlzZV90
ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiVHlwZUVycm9yOiB1
bmRlZmluZWQgaXMgbm90IGEgZnVuY3Rpb24gKG5lYXIgJy4uLmNodW5rIG9mIHMuLi4nKSIKK0ZB
SUwgQXN5bmMtaXRlcmF0aW5nIGEgcHVsbCBzb3VyY2UgcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQg
cmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiVHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90
IGEgZnVuY3Rpb24gKG5lYXIgJy4uLmNodW5rIG9mIHMuLi4nKSIKK0ZBSUwgQXN5bmMtaXRlcmF0
aW5nIGEgcHVzaCBzb3VyY2Ugd2l0aCB1bmRlZmluZWQgdmFsdWVzIHByb21pc2VfdGVzdDogVW5o
YW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVFcnJvcjogdW5kZWZpbmVk
IGlzIG5vdCBhIGZ1bmN0aW9uIChuZWFyICcuLi5jaHVuayBvZiBzLi4uJykiCitGQUlMIEFzeW5j
LWl0ZXJhdGluZyBhIHB1bGwgc291cmNlIHdpdGggdW5kZWZpbmVkIHZhbHVlcyBwcm9taXNlX3Rl
c3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJUeXBlRXJyb3I6IHVu
ZGVmaW5lZCBpcyBub3QgYSBmdW5jdGlvbiAobmVhciAnLi4uY2h1bmsgb2Ygcy4uLicpIgorRkFJ
TCBBc3luYy1pdGVyYXRpbmcgYSBwdWxsIHNvdXJjZSBtYW51YWxseSBwcm9taXNlX3Rlc3Q6IFVu
aGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJUeXBlRXJyb3I6IHMudmFsdWVz
IGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3MudmFsdWVzKCknLCAncy52YWx1ZXMnIGlzIHVuZGVm
aW5lZCkiCitGQUlMIEFzeW5jLWl0ZXJhdGluZyBhbiBlcnJvcmVkIHN0cmVhbSB0aHJvd3MgYXNz
ZXJ0X2VxdWFsczogZXhwZWN0ZWQgKHN0cmluZykgImUiIGJ1dCBnb3QgKG9iamVjdCkgb2JqZWN0
ICJUeXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBub3QgYSBmdW5jdGlvbiAobmVhciAnLi4uY2h1bmsg
b2Ygcy4uLicpIgorRkFJTCBBc3luYy1pdGVyYXRpbmcgYSBjbG9zZWQgc3RyZWFtIG5ldmVyIGV4
ZWN1dGVzIHRoZSBsb29wIGJvZHksIGJ1dCB3b3JrcyBmaW5lIHByb21pc2VfdGVzdDogVW5oYW5k
bGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVFcnJvcjogdW5kZWZpbmVkIGlz
IG5vdCBhIGZ1bmN0aW9uIChuZWFyICcuLi5jaHVuayBvZiBzLi4uJykiCitGQUlMIEFzeW5jLWl0
ZXJhdGluZyBhbiBlbXB0eSBidXQgbm90IGNsb3NlZC9lcnJvcmVkIHN0cmVhbSBuZXZlciBleGVj
dXRlcyB0aGUgbG9vcCBib2R5IGFuZCBzdGFsbHMgdGhlIGFzeW5jIGZ1bmN0aW9uIHByb21pc2Vf
dGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVFcnJvcjog
dW5kZWZpbmVkIGlzIG5vdCBhIGZ1bmN0aW9uIChuZWFyICcuLi5jaHVuayBvZiBzLi4uJykiCitG
QUlMIEFzeW5jLWl0ZXJhdGluZyBhIHBhcnRpYWxseSBjb25zdW1lZCBzdHJlYW0gcHJvbWlzZV90
ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiVHlwZUVycm9yOiB1
bmRlZmluZWQgaXMgbm90IGEgZnVuY3Rpb24gKG5lYXIgJy4uLmNodW5rIG9mIHMuLi4nKSIKK0ZB
SUwgQ2FuY2VsbGF0aW9uIGJlaGF2aW9yIHdoZW4gdGhyb3dpbmcgaW5zaWRlIGxvb3AgYm9keTsg
cHJldmVudENhbmNlbCA9IGZhbHNlIGFzc2VydF9hcnJheV9lcXVhbHM6IGNhbmNlbCgpIHNob3Vs
ZCBiZSBjYWxsZWQgbGVuZ3RocyBkaWZmZXIsIGV4cGVjdGVkIGFycmF5IFsicHVsbCIsICJjYW5j
ZWwiLCB1bmRlZmluZWRdIGxlbmd0aCAzLCBnb3QgW10gbGVuZ3RoIDAKK0ZBSUwgQ2FuY2VsbGF0
aW9uIGJlaGF2aW9yIHdoZW4gdGhyb3dpbmcgaW5zaWRlIGxvb3AgYm9keTsgcHJldmVudENhbmNl
bCA9IHRydWUgYXNzZXJ0X2FycmF5X2VxdWFsczogY2FuY2VsKCkgc2hvdWxkIG5vdCBiZSBjYWxs
ZWQgbGVuZ3RocyBkaWZmZXIsIGV4cGVjdGVkIGFycmF5IFsicHVsbCJdIGxlbmd0aCAxLCBnb3Qg
W10gbGVuZ3RoIDAKK0ZBSUwgQ2FuY2VsbGF0aW9uIGJlaGF2aW9yIHdoZW4gYnJlYWtpbmcgaW5z
aWRlIGxvb3AgYm9keTsgcHJldmVudENhbmNlbCA9IGZhbHNlIGFzc2VydF9hcnJheV9lcXVhbHM6
IGNhbmNlbCgpIHNob3VsZCBiZSBjYWxsZWQgbGVuZ3RocyBkaWZmZXIsIGV4cGVjdGVkIGFycmF5
IFsicHVsbCIsICJjYW5jZWwiLCB1bmRlZmluZWRdIGxlbmd0aCAzLCBnb3QgW10gbGVuZ3RoIDAK
K0ZBSUwgQ2FuY2VsbGF0aW9uIGJlaGF2aW9yIHdoZW4gYnJlYWtpbmcgaW5zaWRlIGxvb3AgYm9k
eTsgcHJldmVudENhbmNlbCA9IHRydWUgYXNzZXJ0X2FycmF5X2VxdWFsczogY2FuY2VsKCkgc2hv
dWxkIG5vdCBiZSBjYWxsZWQgbGVuZ3RocyBkaWZmZXIsIGV4cGVjdGVkIGFycmF5IFsicHVsbCJd
IGxlbmd0aCAxLCBnb3QgW10gbGVuZ3RoIDAKK0ZBSUwgQ2FuY2VsbGF0aW9uIGJlaGF2aW9yIHdo
ZW4gcmV0dXJuaW5nIGluc2lkZSBsb29wIGJvZHk7IHByZXZlbnRDYW5jZWwgPSBmYWxzZSBhc3Nl
cnRfYXJyYXlfZXF1YWxzOiBjYW5jZWwoKSBzaG91bGQgYmUgY2FsbGVkIGxlbmd0aHMgZGlmZmVy
LCBleHBlY3RlZCBhcnJheSBbInB1bGwiLCAiY2FuY2VsIiwgdW5kZWZpbmVkXSBsZW5ndGggMywg
Z290IFtdIGxlbmd0aCAwCitGQUlMIENhbmNlbGxhdGlvbiBiZWhhdmlvciB3aGVuIHJldHVybmlu
ZyBpbnNpZGUgbG9vcCBib2R5OyBwcmV2ZW50Q2FuY2VsID0gdHJ1ZSBhc3NlcnRfYXJyYXlfZXF1
YWxzOiBjYW5jZWwoKSBzaG91bGQgbm90IGJlIGNhbGxlZCBsZW5ndGhzIGRpZmZlciwgZXhwZWN0
ZWQgYXJyYXkgWyJwdWxsIl0gbGVuZ3RoIDEsIGdvdCBbXSBsZW5ndGggMAorRkFJTCBDYW5jZWxs
YXRpb24gYmVoYXZpb3Igd2hlbiBtYW51YWxseSBjYWxsaW5nIHJldHVybigpOyBwcmV2ZW50Q2Fu
Y2VsID0gZmFsc2UgcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6
IG9iamVjdCAiVHlwZUVycm9yOiBzLnZhbHVlcyBpcyBub3QgYSBmdW5jdGlvbi4gKEluICdzLnZh
bHVlcyh7IHByZXZlbnRDYW5jZWwgfSknLCAncy52YWx1ZXMnIGlzIHVuZGVmaW5lZCkiCitGQUlM
IENhbmNlbGxhdGlvbiBiZWhhdmlvciB3aGVuIG1hbnVhbGx5IGNhbGxpbmcgcmV0dXJuKCk7IHBy
ZXZlbnRDYW5jZWwgPSB0cnVlIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRo
IHZhbHVlOiBvYmplY3QgIlR5cGVFcnJvcjogcy52YWx1ZXMgaXMgbm90IGEgZnVuY3Rpb24uIChJ
biAncy52YWx1ZXMoeyBwcmV2ZW50Q2FuY2VsIH0pJywgJ3MudmFsdWVzJyBpcyB1bmRlZmluZWQp
IgorRkFJTCBuZXh0KCkgcmVqZWN0cyBpZiB0aGUgc3RyZWFtIGVycm9ycyBwcm9taXNlX3Rlc3Q6
IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJUeXBlRXJyb3I6IHNbU3lt
Ym9sLmFzeW5jSXRlcmF0b3JdIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3NbU3ltYm9sLmFzeW5j
SXRlcmF0b3JdKCknLCAnc1tTeW1ib2wuYXN5bmNJdGVyYXRvcl0nIGlzIHVuZGVmaW5lZCkiCitG
QUlMIHJldHVybigpIGRvZXMgbm90IHJlamVjdHMgaWYgdGhlIHN0cmVhbSBoYXMgbm90IGVycm9y
ZWQgeWV0IHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmpl
Y3QgIlR5cGVFcnJvcjogc1tTeW1ib2wuYXN5bmNJdGVyYXRvcl0gaXMgbm90IGEgZnVuY3Rpb24u
IChJbiAnc1tTeW1ib2wuYXN5bmNJdGVyYXRvcl0oKScsICdzW1N5bWJvbC5hc3luY0l0ZXJhdG9y
XScgaXMgdW5kZWZpbmVkKSIKK0ZBSUwgcmV0dXJuKCkgcmVqZWN0cyBpZiB0aGUgc3RyZWFtIGhh
cyBlcnJvcmVkIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBv
YmplY3QgIlR5cGVFcnJvcjogc1tTeW1ib2wuYXN5bmNJdGVyYXRvcl0gaXMgbm90IGEgZnVuY3Rp
b24uIChJbiAnc1tTeW1ib2wuYXN5bmNJdGVyYXRvcl0oKScsICdzW1N5bWJvbC5hc3luY0l0ZXJh
dG9yXScgaXMgdW5kZWZpbmVkKSIKK0ZBSUwgbmV4dCgpIHRoYXQgc3VjY2VlZHM7IG5leHQoKSB0
aGF0IHJlcG9ydHMgYW4gZXJyb3I7IG5leHQoKSBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWpl
Y3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJUeXBlRXJyb3I6IHNbU3ltYm9sLmFzeW5jSXRlcmF0
b3JdIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3NbU3ltYm9sLmFzeW5jSXRlcmF0b3JdKCknLCAn
c1tTeW1ib2wuYXN5bmNJdGVyYXRvcl0nIGlzIHVuZGVmaW5lZCkiCitGQUlMIG5leHQoKSB0aGF0
IHN1Y2NlZWRzOyBuZXh0KCkgdGhhdCByZXBvcnRzIGFuIGVycm9yKCk7IG5leHQoKSBbbm8gYXdh
aXRpbmddIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmpl
Y3QgIlR5cGVFcnJvcjogc1tTeW1ib2wuYXN5bmNJdGVyYXRvcl0gaXMgbm90IGEgZnVuY3Rpb24u
IChJbiAnc1tTeW1ib2wuYXN5bmNJdGVyYXRvcl0oKScsICdzW1N5bWJvbC5hc3luY0l0ZXJhdG9y
XScgaXMgdW5kZWZpbmVkKSIKK0ZBSUwgbmV4dCgpIHRoYXQgc3VjY2VlZHM7IG5leHQoKSB0aGF0
IHJlcG9ydHMgYW4gZXJyb3IoKTsgcmV0dXJuKCkgcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVq
ZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiVHlwZUVycm9yOiBzW1N5bWJvbC5hc3luY0l0ZXJh
dG9yXSBpcyBub3QgYSBmdW5jdGlvbi4gKEluICdzW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSgpJywg
J3NbU3ltYm9sLmFzeW5jSXRlcmF0b3JdJyBpcyB1bmRlZmluZWQpIgorRkFJTCBuZXh0KCkgdGhh
dCBzdWNjZWVkczsgbmV4dCgpIHRoYXQgcmVwb3J0cyBhbiBlcnJvcigpOyByZXR1cm4oKSBbbm8g
YXdhaXRpbmddIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBv
YmplY3QgIlR5cGVFcnJvcjogc1tTeW1ib2wuYXN5bmNJdGVyYXRvcl0gaXMgbm90IGEgZnVuY3Rp
b24uIChJbiAnc1tTeW1ib2wuYXN5bmNJdGVyYXRvcl0oKScsICdzW1N5bWJvbC5hc3luY0l0ZXJh
dG9yXScgaXMgdW5kZWZpbmVkKSIKK0ZBSUwgbmV4dCgpIHRoYXQgc3VjY2VlZHM7IHJldHVybigp
IHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5
cGVFcnJvcjogc1tTeW1ib2wuYXN5bmNJdGVyYXRvcl0gaXMgbm90IGEgZnVuY3Rpb24uIChJbiAn
c1tTeW1ib2wuYXN5bmNJdGVyYXRvcl0oKScsICdzW1N5bWJvbC5hc3luY0l0ZXJhdG9yXScgaXMg
dW5kZWZpbmVkKSIKK0ZBSUwgbmV4dCgpIHRoYXQgc3VjY2VlZHM7IHJldHVybigpIFtubyBhd2Fp
dGluZ10gcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVj
dCAiVHlwZUVycm9yOiBzW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSBpcyBub3QgYSBmdW5jdGlvbi4g
KEluICdzW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSgpJywgJ3NbU3ltYm9sLmFzeW5jSXRlcmF0b3Jd
JyBpcyB1bmRlZmluZWQpIgorRkFJTCByZXR1cm4oKTsgbmV4dCgpIHByb21pc2VfdGVzdDogVW5o
YW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVFcnJvcjogcnMudmFsdWVz
IGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3JzLnZhbHVlcygpJywgJ3JzLnZhbHVlcycgaXMgdW5k
ZWZpbmVkKSIKK0ZBSUwgcmV0dXJuKCk7IG5leHQoKSBbbm8gYXdhaXRpbmddIHByb21pc2VfdGVz
dDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVFcnJvcjogcnMu
dmFsdWVzIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3JzLnZhbHVlcygpJywgJ3JzLnZhbHVlcycg
aXMgdW5kZWZpbmVkKSIKK0ZBSUwgcmV0dXJuKCk7IHJldHVybigpIHByb21pc2VfdGVzdDogVW5o
YW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVFcnJvcjogcnMudmFsdWVz
IGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3JzLnZhbHVlcygpJywgJ3JzLnZhbHVlcycgaXMgdW5k
ZWZpbmVkKSIKK0ZBSUwgcmV0dXJuKCk7IHJldHVybigpIFtubyBhd2FpdGluZ10gcHJvbWlzZV90
ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiVHlwZUVycm9yOiBy
cy52YWx1ZXMgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAncnMudmFsdWVzKCknLCAncnMudmFsdWVz
JyBpcyB1bmRlZmluZWQpIgorRkFJTCB2YWx1ZXMoKSB0aHJvd3MgaWYgdGhlcmUncyBhbHJlYWR5
IGEgbG9jayBzLnZhbHVlcyBpcyBub3QgYSBmdW5jdGlvbi4gKEluICdzLnZhbHVlcygpJywgJ3Mu
dmFsdWVzJyBpcyB1bmRlZmluZWQpCitGQUlMIEFjcXVpcmluZyBhIHJlYWRlciBhZnRlciBleGhh
dXN0aXZlbHkgYXN5bmMtaXRlcmF0aW5nIGEgc3RyZWFtIHByb21pc2VfdGVzdDogVW5oYW5kbGVk
IHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5v
dCBhIGZ1bmN0aW9uIChuZWFyICcuLi5jaHVuayBvZiBzLi4uJykiCitGQUlMIEFjcXVpcmluZyBh
IHJlYWRlciBhZnRlciByZXR1cm4oKWluZyBmcm9tIGEgc3RyZWFtIHRoYXQgZXJyb3JzIHByb21p
c2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVFcnJv
cjogc1tTeW1ib2wuYXN5bmNJdGVyYXRvcl0gaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnc1tTeW1i
b2wuYXN5bmNJdGVyYXRvcl0oeyBwcmV2ZW50Q2FuY2VsOiB0cnVlIH0pJywgJ3NbU3ltYm9sLmFz
eW5jSXRlcmF0b3JdJyBpcyB1bmRlZmluZWQpIgorRkFJTCBBY3F1aXJpbmcgYSByZWFkZXIgYWZ0
ZXIgcGFydGlhbGx5IGFzeW5jLWl0ZXJhdGluZyBhIHN0cmVhbSBwcm9taXNlX3Rlc3Q6IFVuaGFu
ZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJUeXBlRXJyb3I6IHVuZGVmaW5lZCBp
cyBub3QgYSBmdW5jdGlvbiAobmVhciAnLi4uY2h1bmsgb2Ygcy4uLicpIgorRkFJTCBBY3F1aXJp
bmcgYSByZWFkZXIgYW5kIHJlYWRpbmcgdGhlIHJlbWFpbmluZyBjaHVua3MgYWZ0ZXIgcGFydGlh
bGx5IGFzeW5jLWl0ZXJhdGluZyBhIHN0cmVhbSB3aXRoIHByZXZlbnRDYW5jZWwgPSB0cnVlIHBy
b21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVF
cnJvcjogcy52YWx1ZXMgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAncy52YWx1ZXMoe3ByZXZlbnRD
YW5jZWw6IHRydWV9KScsICdzLnZhbHVlcycgaXMgdW5kZWZpbmVkKSIKK0ZBSUwgcmV0dXJuKCkg
c2hvdWxkIHVubG9jayB0aGUgc3RyZWFtIHN5bmNocm9ub3VzbHkgd2hlbiBwcmV2ZW50Q2FuY2Vs
ID0gZmFsc2UgcnMudmFsdWVzIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3JzLnZhbHVlcyh7IHBy
ZXZlbnRDYW5jZWwgfSknLCAncnMudmFsdWVzJyBpcyB1bmRlZmluZWQpCitGQUlMIHJldHVybigp
IHNob3VsZCB1bmxvY2sgdGhlIHN0cmVhbSBzeW5jaHJvbm91c2x5IHdoZW4gcHJldmVudENhbmNl
bCA9IHRydWUgcnMudmFsdWVzIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3JzLnZhbHVlcyh7IHBy
ZXZlbnRDYW5jZWwgfSknLCAncnMudmFsdWVzJyBpcyB1bmRlZmluZWQpCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFk
YWJsZS1zdHJlYW1zL2FzeW5jLWl0ZXJhdG9yLmFueS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvYXN5bmMt
aXRlcmF0b3IuYW55Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjM4MjkxMzUyOGU2OTNiM2E1ZDU2YzY2MGE0
NTA2MDk4MGI1NDhjMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2FzeW5jLWl0ZXJh
dG9yLmFueS5odG1sCkBAIC0wLDAgKzEgQEAKKzwhLS0gVGhpcyBmaWxlIGlzIHJlcXVpcmVkIGZv
ciBXZWJLaXQgdGVzdCBpbmZyYXN0cnVjdHVyZSB0byBydW4gdGhlIHRlbXBsYXRlZCB0ZXN0IC0t
PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2Fz
eW5jLWl0ZXJhdG9yLmFueS5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2FzeW5jLWl0ZXJhdG9yLmFueS5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi43YzQ5ZmU5MzdkZTg3MjQ1ZDk4YzcwYjMzOTgwMTlkMzU4NmUxN2ZkCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvYXN5bmMtaXRlcmF0b3IuYW55LmpzCkBAIC0wLDAg
KzEsNjI3IEBACisvLyBNRVRBOiBnbG9iYWw9d2luZG93LHdvcmtlcixqc3NoZWxsCisvLyBNRVRB
OiBzY3JpcHQ9Li4vcmVzb3VyY2VzL3JzLXV0aWxzLmpzCisvLyBNRVRBOiBzY3JpcHQ9Li4vcmVz
b3VyY2VzL3Rlc3QtdXRpbHMuanMKKy8vIE1FVEE6IHNjcmlwdD0uLi9yZXNvdXJjZXMvcmVjb3Jk
aW5nLXN0cmVhbXMuanMKKyd1c2Ugc3RyaWN0JzsKKworY29uc3QgZXJyb3IxID0gbmV3IEVycm9y
KCdlcnJvcjEnKTsKKworZnVuY3Rpb24gYXNzZXJ0X2l0ZXJfcmVzdWx0KGl0ZXJSZXN1bHQsIHZh
bHVlLCBkb25lLCBtZXNzYWdlKSB7CisgIGNvbnN0IHByZWZpeCA9IG1lc3NhZ2UgPT09IHVuZGVm
aW5lZCA/ICcnIDogYCR7bWVzc2FnZX0gYDsKKyAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgaXRlclJl
c3VsdCwgJ29iamVjdCcsIGAke3ByZWZpeH10eXBlIGlzIG9iamVjdGApOworICBhc3NlcnRfZXF1
YWxzKE9iamVjdC5nZXRQcm90b3R5cGVPZihpdGVyUmVzdWx0KSwgT2JqZWN0LnByb3RvdHlwZSwg
YCR7cHJlZml4fVtbUHJvdG90eXBlXV1gKTsKKyAgYXNzZXJ0X2FycmF5X2VxdWFscyhPYmplY3Qu
Z2V0T3duUHJvcGVydHlOYW1lcyhpdGVyUmVzdWx0KS5zb3J0KCksIFsnZG9uZScsICd2YWx1ZSdd
LCBgJHtwcmVmaXh9cHJvcGVydHkgbmFtZXNgKTsKKyAgYXNzZXJ0X2VxdWFscyhpdGVyUmVzdWx0
LnZhbHVlLCB2YWx1ZSwgYCR7cHJlZml4fXZhbHVlYCk7CisgIGFzc2VydF9lcXVhbHMoaXRlclJl
c3VsdC5kb25lLCBkb25lLCBgJHtwcmVmaXh9ZG9uZWApOworfQorCit0ZXN0KCgpID0+IHsKKyAg
Y29uc3QgcyA9IG5ldyBSZWFkYWJsZVN0cmVhbSgpOworICBjb25zdCBpdCA9IHMudmFsdWVzKCk7
CisgIGNvbnN0IHByb3RvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKGl0KTsKKworICBjb25zdCBB
c3luY0l0ZXJhdG9yUHJvdG90eXBlID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKE9iamVjdC5nZXRQ
cm90b3R5cGVPZihhc3luYyBmdW5jdGlvbiogKCkge30pLnByb3RvdHlwZSk7CisgIGFzc2VydF9l
cXVhbHMoT2JqZWN0LmdldFByb3RvdHlwZU9mKHByb3RvKSwgQXN5bmNJdGVyYXRvclByb3RvdHlw
ZSwgJ3Byb3RvdHlwZSBzaG91bGQgZXh0ZW5kIEFzeW5jSXRlcmF0b3JQcm90b3R5cGUnKTsKKwor
ICBjb25zdCBtZXRob2RzID0gWyduZXh0JywgJ3JldHVybiddLnNvcnQoKTsKKyAgYXNzZXJ0X2Fy
cmF5X2VxdWFscyhPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhwcm90bykuc29ydCgpLCBtZXRo
b2RzLCAnc2hvdWxkIGhhdmUgYWxsIHRoZSBjb3JyZWN0IG1ldGhvZHMnKTsKKworICBmb3IgKGNv
bnN0IG0gb2YgbWV0aG9kcykgeworICAgIGNvbnN0IHByb3BEZXNjID0gT2JqZWN0LmdldE93blBy
b3BlcnR5RGVzY3JpcHRvcihwcm90bywgbSk7CisgICAgYXNzZXJ0X3RydWUocHJvcERlc2MuZW51
bWVyYWJsZSwgJ21ldGhvZCBzaG91bGQgYmUgZW51bWVyYWJsZScpOworICAgIGFzc2VydF90cnVl
KHByb3BEZXNjLmNvbmZpZ3VyYWJsZSwgJ21ldGhvZCBzaG91bGQgYmUgY29uZmlndXJhYmxlJyk7
CisgICAgYXNzZXJ0X3RydWUocHJvcERlc2Mud3JpdGFibGUsICdtZXRob2Qgc2hvdWxkIGJlIHdy
aXRhYmxlJyk7CisgICAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgaXRbbV0sICdmdW5jdGlvbicsICdt
ZXRob2Qgc2hvdWxkIGJlIGEgZnVuY3Rpb24nKTsKKyAgICBhc3NlcnRfZXF1YWxzKGl0W21dLm5h
bWUsIG0sICdtZXRob2Qgc2hvdWxkIGhhdmUgdGhlIGNvcnJlY3QgbmFtZScpOworICB9CisKKyAg
YXNzZXJ0X2VxdWFscyhpdC5uZXh0Lmxlbmd0aCwgMCwgJ25leHQgc2hvdWxkIGhhdmUgbm8gcGFy
YW1ldGVycycpOworICBhc3NlcnRfZXF1YWxzKGl0LnJldHVybi5sZW5ndGgsIDEsICdyZXR1cm4g
c2hvdWxkIGhhdmUgMSBwYXJhbWV0ZXInKTsKKyAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgaXQudGhy
b3csICd1bmRlZmluZWQnLCAndGhyb3cgc2hvdWxkIG5vdCBleGlzdCcpOworfSwgJ0FzeW5jIGl0
ZXJhdG9yIGluc3RhbmNlcyBzaG91bGQgaGF2ZSB0aGUgY29ycmVjdCBsaXN0IG9mIHByb3BlcnRp
ZXMnKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jICgpID0+IHsKKyAgY29uc3QgcyA9IG5ldyBSZWFk
YWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgYy5lbnF1ZXVlKDEpOworICAgICAg
Yy5lbnF1ZXVlKDIpOworICAgICAgYy5lbnF1ZXVlKDMpOworICAgICAgYy5jbG9zZSgpOworICAg
IH0KKyAgfSk7CisKKyAgY29uc3QgY2h1bmtzID0gW107CisgIGZvciBhd2FpdCAoY29uc3QgY2h1
bmsgb2YgcykgeworICAgIGNodW5rcy5wdXNoKGNodW5rKTsKKyAgfQorICBhc3NlcnRfYXJyYXlf
ZXF1YWxzKGNodW5rcywgWzEsIDIsIDNdKTsKK30sICdBc3luYy1pdGVyYXRpbmcgYSBwdXNoIHNv
dXJjZScpOworCitwcm9taXNlX3Rlc3QoYXN5bmMgKCkgPT4geworICBsZXQgaSA9IDE7CisgIGNv
bnN0IHMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHB1bGwoYykgeworICAgICAgYy5lbnF1
ZXVlKGkpOworICAgICAgaWYgKGkgPj0gMykgeworICAgICAgICBjLmNsb3NlKCk7CisgICAgICB9
CisgICAgICBpICs9IDE7CisgICAgfQorICB9KTsKKworICBjb25zdCBjaHVua3MgPSBbXTsKKyAg
Zm9yIGF3YWl0IChjb25zdCBjaHVuayBvZiBzKSB7CisgICAgY2h1bmtzLnB1c2goY2h1bmspOwor
ICB9CisgIGFzc2VydF9hcnJheV9lcXVhbHMoY2h1bmtzLCBbMSwgMiwgM10pOworfSwgJ0FzeW5j
LWl0ZXJhdGluZyBhIHB1bGwgc291cmNlJyk7CisKK3Byb21pc2VfdGVzdChhc3luYyAoKSA9PiB7
CisgIGNvbnN0IHMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAg
IGMuZW5xdWV1ZSh1bmRlZmluZWQpOworICAgICAgYy5lbnF1ZXVlKHVuZGVmaW5lZCk7CisgICAg
ICBjLmVucXVldWUodW5kZWZpbmVkKTsKKyAgICAgIGMuY2xvc2UoKTsKKyAgICB9CisgIH0pOwor
CisgIGNvbnN0IGNodW5rcyA9IFtdOworICBmb3IgYXdhaXQgKGNvbnN0IGNodW5rIG9mIHMpIHsK
KyAgICBjaHVua3MucHVzaChjaHVuayk7CisgIH0KKyAgYXNzZXJ0X2FycmF5X2VxdWFscyhjaHVu
a3MsIFt1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkXSk7Cit9LCAnQXN5bmMtaXRlcmF0
aW5nIGEgcHVzaCBzb3VyY2Ugd2l0aCB1bmRlZmluZWQgdmFsdWVzJyk7CisKK3Byb21pc2VfdGVz
dChhc3luYyAoKSA9PiB7CisgIGxldCBpID0gMTsKKyAgY29uc3QgcyA9IG5ldyBSZWFkYWJsZVN0
cmVhbSh7CisgICAgcHVsbChjKSB7CisgICAgICBjLmVucXVldWUodW5kZWZpbmVkKTsKKyAgICAg
IGlmIChpID49IDMpIHsKKyAgICAgICAgYy5jbG9zZSgpOworICAgICAgfQorICAgICAgaSArPSAx
OworICAgIH0KKyAgfSk7CisKKyAgY29uc3QgY2h1bmtzID0gW107CisgIGZvciBhd2FpdCAoY29u
c3QgY2h1bmsgb2YgcykgeworICAgIGNodW5rcy5wdXNoKGNodW5rKTsKKyAgfQorICBhc3NlcnRf
YXJyYXlfZXF1YWxzKGNodW5rcywgW3VuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWRdKTsK
K30sICdBc3luYy1pdGVyYXRpbmcgYSBwdWxsIHNvdXJjZSB3aXRoIHVuZGVmaW5lZCB2YWx1ZXMn
KTsKKworcHJvbWlzZV90ZXN0KGFzeW5jICgpID0+IHsKKyAgbGV0IGkgPSAxOworICBjb25zdCBz
ID0gcmVjb3JkaW5nUmVhZGFibGVTdHJlYW0oeworICAgIHB1bGwoYykgeworICAgICAgYy5lbnF1
ZXVlKGkpOworICAgICAgaWYgKGkgPj0gMykgeworICAgICAgICBjLmNsb3NlKCk7CisgICAgICB9
CisgICAgICBpICs9IDE7CisgICAgfSwKKyAgfSwgbmV3IENvdW50UXVldWluZ1N0cmF0ZWd5KHsg
aGlnaFdhdGVyTWFyazogMCB9KSk7CisKKyAgY29uc3QgaXQgPSBzLnZhbHVlcygpOworICBhc3Nl
cnRfYXJyYXlfZXF1YWxzKHMuZXZlbnRzLCBbXSk7CisKKyAgY29uc3QgcmVhZDEgPSBhd2FpdCBp
dC5uZXh0KCk7CisgIGFzc2VydF9pdGVyX3Jlc3VsdChyZWFkMSwgMSwgZmFsc2UpOworICBhc3Nl
cnRfYXJyYXlfZXF1YWxzKHMuZXZlbnRzLCBbJ3B1bGwnXSk7CisKKyAgY29uc3QgcmVhZDIgPSBh
d2FpdCBpdC5uZXh0KCk7CisgIGFzc2VydF9pdGVyX3Jlc3VsdChyZWFkMiwgMiwgZmFsc2UpOwor
ICBhc3NlcnRfYXJyYXlfZXF1YWxzKHMuZXZlbnRzLCBbJ3B1bGwnLCAncHVsbCddKTsKKworICBj
b25zdCByZWFkMyA9IGF3YWl0IGl0Lm5leHQoKTsKKyAgYXNzZXJ0X2l0ZXJfcmVzdWx0KHJlYWQz
LCAzLCBmYWxzZSk7CisgIGFzc2VydF9hcnJheV9lcXVhbHMocy5ldmVudHMsIFsncHVsbCcsICdw
dWxsJywgJ3B1bGwnXSk7CisKKyAgY29uc3QgcmVhZDQgPSBhd2FpdCBpdC5uZXh0KCk7CisgIGFz
c2VydF9pdGVyX3Jlc3VsdChyZWFkNCwgdW5kZWZpbmVkLCB0cnVlKTsKKyAgYXNzZXJ0X2FycmF5
X2VxdWFscyhzLmV2ZW50cywgWydwdWxsJywgJ3B1bGwnLCAncHVsbCddKTsKK30sICdBc3luYy1p
dGVyYXRpbmcgYSBwdWxsIHNvdXJjZSBtYW51YWxseScpOworCitwcm9taXNlX3Rlc3QoYXN5bmMg
KCkgPT4geworICBjb25zdCBzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7
CisgICAgICBjLmVycm9yKCdlJyk7CisgICAgfSwKKyAgfSk7CisKKyAgdHJ5IHsKKyAgICBmb3Ig
YXdhaXQgKGNvbnN0IGNodW5rIG9mIHMpIHt9CisgICAgYXNzZXJ0X3VucmVhY2hlZCgpOworICB9
IGNhdGNoIChlKSB7CisgICAgYXNzZXJ0X2VxdWFscyhlLCAnZScpOworICB9Cit9LCAnQXN5bmMt
aXRlcmF0aW5nIGFuIGVycm9yZWQgc3RyZWFtIHRocm93cycpOworCitwcm9taXNlX3Rlc3QoYXN5
bmMgKCkgPT4geworICBjb25zdCBzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChj
KSB7CisgICAgICBjLmNsb3NlKCk7CisgICAgfQorICB9KTsKKworICBmb3IgYXdhaXQgKGNvbnN0
IGNodW5rIG9mIHMpIHsKKyAgICBhc3NlcnRfdW5yZWFjaGVkKCk7CisgIH0KK30sICdBc3luYy1p
dGVyYXRpbmcgYSBjbG9zZWQgc3RyZWFtIG5ldmVyIGV4ZWN1dGVzIHRoZSBsb29wIGJvZHksIGJ1
dCB3b3JrcyBmaW5lJyk7CisKK3Byb21pc2VfdGVzdChhc3luYyAoKSA9PiB7CisgIGNvbnN0IHMg
PSBuZXcgUmVhZGFibGVTdHJlYW0oKTsKKworICBjb25zdCBsb29wID0gYXN5bmMgKCkgPT4gewor
ICAgIGZvciBhd2FpdCAoY29uc3QgY2h1bmsgb2YgcykgeworICAgICAgYXNzZXJ0X3VucmVhY2hl
ZCgpOworICAgIH0KKyAgICBhc3NlcnRfdW5yZWFjaGVkKCk7CisgIH07CisKKyAgYXdhaXQgUHJv
bWlzZS5yYWNlKFsKKyAgICBsb29wKCksCisgICAgZmx1c2hBc3luY0V2ZW50cygpCisgIF0pOwor
fSwgJ0FzeW5jLWl0ZXJhdGluZyBhbiBlbXB0eSBidXQgbm90IGNsb3NlZC9lcnJvcmVkIHN0cmVh
bSBuZXZlciBleGVjdXRlcyB0aGUgbG9vcCBib2R5IGFuZCBzdGFsbHMgdGhlIGFzeW5jIGZ1bmN0
aW9uJyk7CisKK3Byb21pc2VfdGVzdChhc3luYyAoKSA9PiB7CisgIGNvbnN0IHMgPSBuZXcgUmVh
ZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGMuZW5xdWV1ZSgxKTsKKyAgICAg
IGMuZW5xdWV1ZSgyKTsKKyAgICAgIGMuZW5xdWV1ZSgzKTsKKyAgICAgIGMuY2xvc2UoKTsKKyAg
ICB9LAorICB9KTsKKworICBjb25zdCByZWFkZXIgPSBzLmdldFJlYWRlcigpOworICBjb25zdCBy
ZWFkUmVzdWx0ID0gYXdhaXQgcmVhZGVyLnJlYWQoKTsKKyAgYXNzZXJ0X2l0ZXJfcmVzdWx0KHJl
YWRSZXN1bHQsIDEsIGZhbHNlKTsKKyAgcmVhZGVyLnJlbGVhc2VMb2NrKCk7CisKKyAgY29uc3Qg
Y2h1bmtzID0gW107CisgIGZvciBhd2FpdCAoY29uc3QgY2h1bmsgb2YgcykgeworICAgIGNodW5r
cy5wdXNoKGNodW5rKTsKKyAgfQorICBhc3NlcnRfYXJyYXlfZXF1YWxzKGNodW5rcywgWzIsIDNd
KTsKK30sICdBc3luYy1pdGVyYXRpbmcgYSBwYXJ0aWFsbHkgY29uc3VtZWQgc3RyZWFtJyk7CisK
K2ZvciAoY29uc3QgdHlwZSBvZiBbJ3Rocm93JywgJ2JyZWFrJywgJ3JldHVybiddKSB7CisgIGZv
ciAoY29uc3QgcHJldmVudENhbmNlbCBvZiBbZmFsc2UsIHRydWVdKSB7CisgICAgcHJvbWlzZV90
ZXN0KGFzeW5jICgpID0+IHsKKyAgICAgIGNvbnN0IHMgPSByZWNvcmRpbmdSZWFkYWJsZVN0cmVh
bSh7CisgICAgICAgIHN0YXJ0KGMpIHsKKyAgICAgICAgICBjLmVucXVldWUoMCk7CisgICAgICAg
IH0KKyAgICAgIH0pOworCisgICAgICAvLyB1c2UgYSBzZXBhcmF0ZSBmdW5jdGlvbiBmb3IgdGhl
IGxvb3AgYm9keSBzbyByZXR1cm4gZG9lcyBub3Qgc3RvcCB0aGUgdGVzdAorICAgICAgY29uc3Qg
bG9vcCA9IGFzeW5jICgpID0+IHsKKyAgICAgICAgZm9yIGF3YWl0IChjb25zdCBjIG9mIHMudmFs
dWVzKHsgcHJldmVudENhbmNlbCB9KSkgeworICAgICAgICAgIGlmICh0eXBlID09PSAndGhyb3cn
KSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoKTsKKyAgICAgICAgICB9IGVsc2UgaWYg
KHR5cGUgPT09ICdicmVhaycpIHsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIH0gZWxz
ZSBpZiAodHlwZSA9PT0gJ3JldHVybicpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICAgIH07CisKKyAgICAgIHRyeSB7CisgICAgICAgIGF3YWl0IGxv
b3AoKTsKKyAgICAgIH0gY2F0Y2ggKGUpIHt9CisKKyAgICAgIGlmIChwcmV2ZW50Q2FuY2VsKSB7
CisgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMocy5ldmVudHMsIFsncHVsbCddLCBgY2FuY2Vs
KCkgc2hvdWxkIG5vdCBiZSBjYWxsZWRgKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIGFzc2Vy
dF9hcnJheV9lcXVhbHMocy5ldmVudHMsIFsncHVsbCcsICdjYW5jZWwnLCB1bmRlZmluZWRdLCBg
Y2FuY2VsKCkgc2hvdWxkIGJlIGNhbGxlZGApOworICAgICAgfQorICAgIH0sIGBDYW5jZWxsYXRp
b24gYmVoYXZpb3Igd2hlbiAke3R5cGV9aW5nIGluc2lkZSBsb29wIGJvZHk7IHByZXZlbnRDYW5j
ZWwgPSAke3ByZXZlbnRDYW5jZWx9YCk7CisgIH0KK30KKworZm9yIChjb25zdCBwcmV2ZW50Q2Fu
Y2VsIG9mIFtmYWxzZSwgdHJ1ZV0pIHsKKyAgcHJvbWlzZV90ZXN0KGFzeW5jICgpID0+IHsKKyAg
ICBjb25zdCBzID0gcmVjb3JkaW5nUmVhZGFibGVTdHJlYW0oeworICAgICAgc3RhcnQoYykgewor
ICAgICAgICBjLmVucXVldWUoMCk7CisgICAgICB9CisgICAgfSk7CisKKyAgICBjb25zdCBpdCA9
IHMudmFsdWVzKHsgcHJldmVudENhbmNlbCB9KTsKKyAgICBhd2FpdCBpdC5yZXR1cm4oKTsKKwor
ICAgIGlmIChwcmV2ZW50Q2FuY2VsKSB7CisgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHMuZXZl
bnRzLCBbXSwgYGNhbmNlbCgpIHNob3VsZCBub3QgYmUgY2FsbGVkYCk7CisgICAgfSBlbHNlIHsK
KyAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMocy5ldmVudHMsIFsnY2FuY2VsJywgdW5kZWZpbmVk
XSwgYGNhbmNlbCgpIHNob3VsZCBiZSBjYWxsZWRgKTsKKyAgICB9CisgIH0sIGBDYW5jZWxsYXRp
b24gYmVoYXZpb3Igd2hlbiBtYW51YWxseSBjYWxsaW5nIHJldHVybigpOyBwcmV2ZW50Q2FuY2Vs
ID0gJHtwcmV2ZW50Q2FuY2VsfWApOworfQorCitwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7Cisg
IGxldCB0aW1lc1B1bGxlZCA9IDA7CisgIGNvbnN0IHMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewor
ICAgIHB1bGwoYykgeworICAgICAgaWYgKHRpbWVzUHVsbGVkID09PSAwKSB7CisgICAgICAgIGMu
ZW5xdWV1ZSgwKTsKKyAgICAgICAgKyt0aW1lc1B1bGxlZDsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIGMuZXJyb3IoZXJyb3IxKTsKKyAgICAgIH0KKyAgICB9CisgIH0pOworCisgIGNvbnN0IGl0
ID0gc1tTeW1ib2wuYXN5bmNJdGVyYXRvcl0oKTsKKworICBjb25zdCBpdGVyUmVzdWx0MSA9IGF3
YWl0IGl0Lm5leHQoKTsKKyAgYXNzZXJ0X2l0ZXJfcmVzdWx0KGl0ZXJSZXN1bHQxLCAwLCBmYWxz
ZSwgJzFzdCBuZXh0KCknKTsKKworICBhd2FpdCBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBl
cnJvcjEsIGl0Lm5leHQoKSwgJzJuZCBuZXh0KCknKTsKK30sICduZXh0KCkgcmVqZWN0cyBpZiB0
aGUgc3RyZWFtIGVycm9ycycpOworCitwcm9taXNlX3Rlc3QoYXN5bmMgKCkgPT4geworICBsZXQg
dGltZXNQdWxsZWQgPSAwOworICBjb25zdCBzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBw
dWxsKGMpIHsKKyAgICAgIGlmICh0aW1lc1B1bGxlZCA9PT0gMCkgeworICAgICAgICBjLmVucXVl
dWUoMCk7CisgICAgICAgICsrdGltZXNQdWxsZWQ7CisgICAgICB9IGVsc2UgeworICAgICAgICBj
LmVycm9yKGVycm9yMSk7CisgICAgICB9CisgICAgfQorICB9KTsKKworICBjb25zdCBpdCA9IHNb
U3ltYm9sLmFzeW5jSXRlcmF0b3JdKCk7CisKKyAgY29uc3QgaXRlclJlc3VsdCA9IGF3YWl0IGl0
LnJldHVybigncmV0dXJuIHZhbHVlJyk7CisgIGFzc2VydF9pdGVyX3Jlc3VsdChpdGVyUmVzdWx0
LCAncmV0dXJuIHZhbHVlJywgdHJ1ZSk7Cit9LCAncmV0dXJuKCkgZG9lcyBub3QgcmVqZWN0cyBp
ZiB0aGUgc3RyZWFtIGhhcyBub3QgZXJyb3JlZCB5ZXQnKTsKKworcHJvbWlzZV90ZXN0KGFzeW5j
IHQgPT4geworICBsZXQgdGltZXNQdWxsZWQgPSAwOworICBjb25zdCBzID0gbmV3IFJlYWRhYmxl
U3RyZWFtKHsKKyAgICBwdWxsKGMpIHsKKyAgICAgIC8vIERvIG5vdCBlcnJvciBpbiBzdGFydCgp
IGJlY2F1c2UgZG9pbmcgc28gd291bGQgcHJldmVudCBhY3F1aXJpbmcgYSByZWFkZXIvYXN5bmMg
aXRlcmF0b3IuCisgICAgICBjLmVycm9yKGVycm9yMSk7CisgICAgfQorICB9KTsKKworICBjb25z
dCBpdCA9IHNbU3ltYm9sLmFzeW5jSXRlcmF0b3JdKCk7CisKKyAgYXdhaXQgZmx1c2hBc3luY0V2
ZW50cygpOworICBhd2FpdCBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIGl0LnJl
dHVybigncmV0dXJuIHZhbHVlJykpOworfSwgJ3JldHVybigpIHJlamVjdHMgaWYgdGhlIHN0cmVh
bSBoYXMgZXJyb3JlZCcpOworCitwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CisgIGxldCB0aW1l
c1B1bGxlZCA9IDA7CisgIGNvbnN0IHMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHB1bGwo
YykgeworICAgICAgaWYgKHRpbWVzUHVsbGVkID09PSAwKSB7CisgICAgICAgIGMuZW5xdWV1ZSgw
KTsKKyAgICAgICAgKyt0aW1lc1B1bGxlZDsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIGMuZXJy
b3IoZXJyb3IxKTsKKyAgICAgIH0KKyAgICB9CisgIH0pOworCisgIGNvbnN0IGl0ID0gc1tTeW1i
b2wuYXN5bmNJdGVyYXRvcl0oKTsKKworICBjb25zdCBpdGVyUmVzdWx0MSA9IGF3YWl0IGl0Lm5l
eHQoKTsKKyAgYXNzZXJ0X2l0ZXJfcmVzdWx0KGl0ZXJSZXN1bHQxLCAwLCBmYWxzZSwgJzFzdCBu
ZXh0KCknKTsKKworICBhd2FpdCBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIGl0
Lm5leHQoKSwgJzJuZCBuZXh0KCknKTsKKworICBjb25zdCBpdGVyUmVzdWx0MyA9IGF3YWl0IGl0
Lm5leHQoKTsKKyAgYXNzZXJ0X2l0ZXJfcmVzdWx0KGl0ZXJSZXN1bHQzLCB1bmRlZmluZWQsIHRy
dWUsICczcmQgbmV4dCgpJyk7Cit9LCAnbmV4dCgpIHRoYXQgc3VjY2VlZHM7IG5leHQoKSB0aGF0
IHJlcG9ydHMgYW4gZXJyb3I7IG5leHQoKScpOworCitwcm9taXNlX3Rlc3QoYXN5bmMgKCkgPT4g
eworICBsZXQgdGltZXNQdWxsZWQgPSAwOworICBjb25zdCBzID0gbmV3IFJlYWRhYmxlU3RyZWFt
KHsKKyAgICBwdWxsKGMpIHsKKyAgICAgIGlmICh0aW1lc1B1bGxlZCA9PT0gMCkgeworICAgICAg
ICBjLmVucXVldWUoMCk7CisgICAgICAgICsrdGltZXNQdWxsZWQ7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBjLmVycm9yKGVycm9yMSk7CisgICAgICB9CisgICAgfQorICB9KTsKKworICBjb25z
dCBpdCA9IHNbU3ltYm9sLmFzeW5jSXRlcmF0b3JdKCk7CisKKyAgY29uc3QgaXRlclJlc3VsdHMg
PSBhd2FpdCBQcm9taXNlLmFsbFNldHRsZWQoW2l0Lm5leHQoKSwgaXQubmV4dCgpLCBpdC5uZXh0
KCldKTsKKworICBhc3NlcnRfZXF1YWxzKGl0ZXJSZXN1bHRzWzBdLnN0YXR1cywgJ2Z1bGZpbGxl
ZCcsICcxc3QgbmV4dCgpIHByb21pc2Ugc3RhdHVzJyk7CisgIGFzc2VydF9pdGVyX3Jlc3VsdChp
dGVyUmVzdWx0c1swXS52YWx1ZSwgMCwgZmFsc2UsICcxc3QgbmV4dCgpJyk7CisKKyAgYXNzZXJ0
X2VxdWFscyhpdGVyUmVzdWx0c1sxXS5zdGF0dXMsICdyZWplY3RlZCcsICcybmQgbmV4dCgpIHBy
b21pc2Ugc3RhdHVzJyk7CisgIGFzc2VydF9lcXVhbHMoaXRlclJlc3VsdHNbMV0ucmVhc29uLCBl
cnJvcjEsICcybmQgbmV4dCgpIHJlamVjdGlvbiByZWFzb24nKTsKKworICBhc3NlcnRfZXF1YWxz
KGl0ZXJSZXN1bHRzWzJdLnN0YXR1cywgJ2Z1bGZpbGxlZCcsICczcmQgbmV4dCgpIHByb21pc2Ug
c3RhdHVzJyk7CisgIGFzc2VydF9pdGVyX3Jlc3VsdChpdGVyUmVzdWx0c1syXS52YWx1ZSwgdW5k
ZWZpbmVkLCB0cnVlLCAnM3JkIG5leHQoKScpOworfSwgJ25leHQoKSB0aGF0IHN1Y2NlZWRzOyBu
ZXh0KCkgdGhhdCByZXBvcnRzIGFuIGVycm9yKCk7IG5leHQoKSBbbm8gYXdhaXRpbmddJyk7CisK
K3Byb21pc2VfdGVzdChhc3luYyB0ID0+IHsKKyAgbGV0IHRpbWVzUHVsbGVkID0gMDsKKyAgY29u
c3QgcyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgcHVsbChjKSB7CisgICAgICBpZiAodGlt
ZXNQdWxsZWQgPT09IDApIHsKKyAgICAgICAgYy5lbnF1ZXVlKDApOworICAgICAgICArK3RpbWVz
UHVsbGVkOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgYy5lcnJvcihlcnJvcjEpOworICAgICAg
fQorICAgIH0KKyAgfSk7CisKKyAgY29uc3QgaXQgPSBzW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSgp
OworCisgIGNvbnN0IGl0ZXJSZXN1bHQxID0gYXdhaXQgaXQubmV4dCgpOworICBhc3NlcnRfaXRl
cl9yZXN1bHQoaXRlclJlc3VsdDEsIDAsIGZhbHNlLCAnMXN0IG5leHQoKScpOworCisgIGF3YWl0
IHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMSwgaXQubmV4dCgpLCAnMm5kIG5leHQo
KScpOworCisgIGNvbnN0IGl0ZXJSZXN1bHQzID0gYXdhaXQgaXQucmV0dXJuKCdyZXR1cm4gdmFs
dWUnKTsKKyAgYXNzZXJ0X2l0ZXJfcmVzdWx0KGl0ZXJSZXN1bHQzLCAncmV0dXJuIHZhbHVlJywg
dHJ1ZSwgJ3JldHVybigpJyk7Cit9LCAnbmV4dCgpIHRoYXQgc3VjY2VlZHM7IG5leHQoKSB0aGF0
IHJlcG9ydHMgYW4gZXJyb3IoKTsgcmV0dXJuKCknKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jICgp
ID0+IHsKKyAgbGV0IHRpbWVzUHVsbGVkID0gMDsKKyAgY29uc3QgcyA9IG5ldyBSZWFkYWJsZVN0
cmVhbSh7CisgICAgcHVsbChjKSB7CisgICAgICBpZiAodGltZXNQdWxsZWQgPT09IDApIHsKKyAg
ICAgICAgYy5lbnF1ZXVlKDApOworICAgICAgICArK3RpbWVzUHVsbGVkOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgYy5lcnJvcihlcnJvcjEpOworICAgICAgfQorICAgIH0KKyAgfSk7CisKKyAg
Y29uc3QgaXQgPSBzW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSgpOworCisgIGNvbnN0IGl0ZXJSZXN1
bHRzID0gYXdhaXQgUHJvbWlzZS5hbGxTZXR0bGVkKFtpdC5uZXh0KCksIGl0Lm5leHQoKSwgaXQu
cmV0dXJuKCdyZXR1cm4gdmFsdWUnKV0pOworCisgIGFzc2VydF9lcXVhbHMoaXRlclJlc3VsdHNb
MF0uc3RhdHVzLCAnZnVsZmlsbGVkJywgJzFzdCBuZXh0KCkgcHJvbWlzZSBzdGF0dXMnKTsKKyAg
YXNzZXJ0X2l0ZXJfcmVzdWx0KGl0ZXJSZXN1bHRzWzBdLnZhbHVlLCAwLCBmYWxzZSwgJzFzdCBu
ZXh0KCknKTsKKworICBhc3NlcnRfZXF1YWxzKGl0ZXJSZXN1bHRzWzFdLnN0YXR1cywgJ3JlamVj
dGVkJywgJzJuZCBuZXh0KCkgcHJvbWlzZSBzdGF0dXMnKTsKKyAgYXNzZXJ0X2VxdWFscyhpdGVy
UmVzdWx0c1sxXS5yZWFzb24sIGVycm9yMSwgJzJuZCBuZXh0KCkgcmVqZWN0aW9uIHJlYXNvbicp
OworCisgIGFzc2VydF9lcXVhbHMoaXRlclJlc3VsdHNbMl0uc3RhdHVzLCAnZnVsZmlsbGVkJywg
J3JldHVybigpIHByb21pc2Ugc3RhdHVzJyk7CisgIGFzc2VydF9pdGVyX3Jlc3VsdChpdGVyUmVz
dWx0c1syXS52YWx1ZSwgJ3JldHVybiB2YWx1ZScsIHRydWUsICdyZXR1cm4oKScpOworfSwgJ25l
eHQoKSB0aGF0IHN1Y2NlZWRzOyBuZXh0KCkgdGhhdCByZXBvcnRzIGFuIGVycm9yKCk7IHJldHVy
bigpIFtubyBhd2FpdGluZ10nKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jICgpID0+IHsKKyAgbGV0
IHRpbWVzUHVsbGVkID0gMDsKKyAgY29uc3QgcyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAg
cHVsbChjKSB7CisgICAgICBjLmVucXVldWUodGltZXNQdWxsZWQpOworICAgICAgKyt0aW1lc1B1
bGxlZDsKKyAgICB9CisgIH0pOworICBjb25zdCBpdCA9IHNbU3ltYm9sLmFzeW5jSXRlcmF0b3Jd
KCk7CisKKyAgY29uc3QgaXRlclJlc3VsdDEgPSBhd2FpdCBpdC5uZXh0KCk7CisgIGFzc2VydF9p
dGVyX3Jlc3VsdChpdGVyUmVzdWx0MSwgMCwgZmFsc2UsICduZXh0KCknKTsKKworICBjb25zdCBp
dGVyUmVzdWx0MiA9IGF3YWl0IGl0LnJldHVybigncmV0dXJuIHZhbHVlJyk7CisgIGFzc2VydF9p
dGVyX3Jlc3VsdChpdGVyUmVzdWx0MiwgJ3JldHVybiB2YWx1ZScsIHRydWUsICdyZXR1cm4oKScp
OworCisgIGFzc2VydF9lcXVhbHModGltZXNQdWxsZWQsIDIpOworfSwgJ25leHQoKSB0aGF0IHN1
Y2NlZWRzOyByZXR1cm4oKScpOworCitwcm9taXNlX3Rlc3QoYXN5bmMgKCkgPT4geworICBsZXQg
dGltZXNQdWxsZWQgPSAwOworICBjb25zdCBzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBw
dWxsKGMpIHsKKyAgICAgIGMuZW5xdWV1ZSh0aW1lc1B1bGxlZCk7CisgICAgICArK3RpbWVzUHVs
bGVkOworICAgIH0KKyAgfSk7CisgIGNvbnN0IGl0ID0gc1tTeW1ib2wuYXN5bmNJdGVyYXRvcl0o
KTsKKworICBjb25zdCBpdGVyUmVzdWx0cyA9IGF3YWl0IFByb21pc2UuYWxsU2V0dGxlZChbaXQu
bmV4dCgpLCBpdC5yZXR1cm4oJ3JldHVybiB2YWx1ZScpXSk7CisKKyAgYXNzZXJ0X2VxdWFscyhp
dGVyUmVzdWx0c1swXS5zdGF0dXMsICdmdWxmaWxsZWQnLCAnbmV4dCgpIHByb21pc2Ugc3RhdHVz
Jyk7CisgIGFzc2VydF9pdGVyX3Jlc3VsdChpdGVyUmVzdWx0c1swXS52YWx1ZSwgMCwgZmFsc2Us
ICduZXh0KCknKTsKKworICBhc3NlcnRfZXF1YWxzKGl0ZXJSZXN1bHRzWzFdLnN0YXR1cywgJ2Z1
bGZpbGxlZCcsICdyZXR1cm4oKSBwcm9taXNlIHN0YXR1cycpOworICBhc3NlcnRfaXRlcl9yZXN1
bHQoaXRlclJlc3VsdHNbMV0udmFsdWUsICdyZXR1cm4gdmFsdWUnLCB0cnVlLCAncmV0dXJuKCkn
KTsKKworICBhc3NlcnRfZXF1YWxzKHRpbWVzUHVsbGVkLCAyKTsKK30sICduZXh0KCkgdGhhdCBz
dWNjZWVkczsgcmV0dXJuKCkgW25vIGF3YWl0aW5nXScpOworCitwcm9taXNlX3Rlc3QoYXN5bmMg
KCkgPT4geworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSgpOworICBjb25zdCBpdCA9
IHJzLnZhbHVlcygpOworCisgIGNvbnN0IGl0ZXJSZXN1bHQxID0gYXdhaXQgaXQucmV0dXJuKCdy
ZXR1cm4gdmFsdWUnKTsKKyAgYXNzZXJ0X2l0ZXJfcmVzdWx0KGl0ZXJSZXN1bHQxLCAncmV0dXJu
IHZhbHVlJywgdHJ1ZSwgJ3JldHVybigpJyk7CisKKyAgY29uc3QgaXRlclJlc3VsdDIgPSBhd2Fp
dCBpdC5uZXh0KCk7CisgIGFzc2VydF9pdGVyX3Jlc3VsdChpdGVyUmVzdWx0MiwgdW5kZWZpbmVk
LCB0cnVlLCAnbmV4dCgpJyk7Cit9LCAncmV0dXJuKCk7IG5leHQoKScpOworCitwcm9taXNlX3Rl
c3QoYXN5bmMgKCkgPT4geworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSgpOworICBj
b25zdCBpdCA9IHJzLnZhbHVlcygpOworCisgIGNvbnN0IGl0ZXJSZXN1bHRzID0gYXdhaXQgUHJv
bWlzZS5hbGxTZXR0bGVkKFtpdC5yZXR1cm4oJ3JldHVybiB2YWx1ZScpLCBpdC5uZXh0KCldKTsK
KworICBhc3NlcnRfZXF1YWxzKGl0ZXJSZXN1bHRzWzBdLnN0YXR1cywgJ2Z1bGZpbGxlZCcsICdy
ZXR1cm4oKSBwcm9taXNlIHN0YXR1cycpOworICBhc3NlcnRfaXRlcl9yZXN1bHQoaXRlclJlc3Vs
dHNbMF0udmFsdWUsICdyZXR1cm4gdmFsdWUnLCB0cnVlLCAncmV0dXJuKCknKTsKKworICBhc3Nl
cnRfZXF1YWxzKGl0ZXJSZXN1bHRzWzFdLnN0YXR1cywgJ2Z1bGZpbGxlZCcsICduZXh0KCkgcHJv
bWlzZSBzdGF0dXMnKTsKKyAgYXNzZXJ0X2l0ZXJfcmVzdWx0KGl0ZXJSZXN1bHRzWzFdLnZhbHVl
LCB1bmRlZmluZWQsIHRydWUsICduZXh0KCknKTsKK30sICdyZXR1cm4oKTsgbmV4dCgpIFtubyBh
d2FpdGluZ10nKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jICgpID0+IHsKKyAgY29uc3QgcnMgPSBu
ZXcgUmVhZGFibGVTdHJlYW0oKTsKKyAgY29uc3QgaXQgPSBycy52YWx1ZXMoKTsKKworICBjb25z
dCBpdGVyUmVzdWx0MSA9IGF3YWl0IGl0LnJldHVybigncmV0dXJuIHZhbHVlIDEnKTsKKyAgYXNz
ZXJ0X2l0ZXJfcmVzdWx0KGl0ZXJSZXN1bHQxLCAncmV0dXJuIHZhbHVlIDEnLCB0cnVlLCAnMXN0
IHJldHVybigpJyk7CisKKyAgY29uc3QgaXRlclJlc3VsdDIgPSBhd2FpdCBpdC5yZXR1cm4oJ3Jl
dHVybiB2YWx1ZSAyJyk7CisgIGFzc2VydF9pdGVyX3Jlc3VsdChpdGVyUmVzdWx0MiwgJ3JldHVy
biB2YWx1ZSAyJywgdHJ1ZSwgJzFzdCByZXR1cm4oKScpOworfSwgJ3JldHVybigpOyByZXR1cm4o
KScpOworCitwcm9taXNlX3Rlc3QoYXN5bmMgKCkgPT4geworICBjb25zdCBycyA9IG5ldyBSZWFk
YWJsZVN0cmVhbSgpOworICBjb25zdCBpdCA9IHJzLnZhbHVlcygpOworCisgIGNvbnN0IGl0ZXJS
ZXN1bHRzID0gYXdhaXQgUHJvbWlzZS5hbGxTZXR0bGVkKFtpdC5yZXR1cm4oJ3JldHVybiB2YWx1
ZSAxJyksIGl0LnJldHVybigncmV0dXJuIHZhbHVlIDInKV0pOworCisgIGFzc2VydF9lcXVhbHMo
aXRlclJlc3VsdHNbMF0uc3RhdHVzLCAnZnVsZmlsbGVkJywgJzFzdCByZXR1cm4oKSBwcm9taXNl
IHN0YXR1cycpOworICBhc3NlcnRfaXRlcl9yZXN1bHQoaXRlclJlc3VsdHNbMF0udmFsdWUsICdy
ZXR1cm4gdmFsdWUgMScsIHRydWUsICcxc3QgcmV0dXJuKCknKTsKKworICBhc3NlcnRfZXF1YWxz
KGl0ZXJSZXN1bHRzWzFdLnN0YXR1cywgJ2Z1bGZpbGxlZCcsICcybmQgcmV0dXJuKCkgcHJvbWlz
ZSBzdGF0dXMnKTsKKyAgYXNzZXJ0X2l0ZXJfcmVzdWx0KGl0ZXJSZXN1bHRzWzFdLnZhbHVlLCAn
cmV0dXJuIHZhbHVlIDInLCB0cnVlLCAnMXN0IHJldHVybigpJyk7Cit9LCAncmV0dXJuKCk7IHJl
dHVybigpIFtubyBhd2FpdGluZ10nKTsKKwordGVzdCgoKSA9PiB7CisgIGNvbnN0IHMgPSBuZXcg
UmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGMuZW5xdWV1ZSgwKTsKKyAg
ICAgIGMuY2xvc2UoKTsKKyAgICB9LAorICB9KTsKKyAgcy52YWx1ZXMoKTsKKyAgYXNzZXJ0X3Ro
cm93c19qcyhUeXBlRXJyb3IsICgpID0+IHMudmFsdWVzKCksICd2YWx1ZXMoKSBzaG91bGQgdGhy
b3cnKTsKK30sICd2YWx1ZXMoKSB0aHJvd3MgaWYgdGhlcmVcJ3MgYWxyZWFkeSBhIGxvY2snKTsK
KworcHJvbWlzZV90ZXN0KGFzeW5jICgpID0+IHsKKyAgY29uc3QgcyA9IG5ldyBSZWFkYWJsZVN0
cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgYy5lbnF1ZXVlKDEpOworICAgICAgYy5lbnF1
ZXVlKDIpOworICAgICAgYy5lbnF1ZXVlKDMpOworICAgICAgYy5jbG9zZSgpOworICAgIH0KKyAg
fSk7CisKKyAgY29uc3QgY2h1bmtzID0gW107CisgIGZvciBhd2FpdCAoY29uc3QgY2h1bmsgb2Yg
cykgeworICAgIGNodW5rcy5wdXNoKGNodW5rKTsKKyAgfQorICBhc3NlcnRfYXJyYXlfZXF1YWxz
KGNodW5rcywgWzEsIDIsIDNdKTsKKworICBjb25zdCByZWFkZXIgPSBzLmdldFJlYWRlcigpOwor
ICBhd2FpdCByZWFkZXIuY2xvc2VkOworfSwgJ0FjcXVpcmluZyBhIHJlYWRlciBhZnRlciBleGhh
dXN0aXZlbHkgYXN5bmMtaXRlcmF0aW5nIGEgc3RyZWFtJyk7CisKK3Byb21pc2VfdGVzdChhc3lu
YyB0ID0+IHsKKyAgbGV0IHRpbWVzUHVsbGVkID0gMDsKKyAgY29uc3QgcyA9IG5ldyBSZWFkYWJs
ZVN0cmVhbSh7CisgICAgcHVsbChjKSB7CisgICAgICBpZiAodGltZXNQdWxsZWQgPT09IDApIHsK
KyAgICAgICAgYy5lbnF1ZXVlKDApOworICAgICAgICArK3RpbWVzUHVsbGVkOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgYy5lcnJvcihlcnJvcjEpOworICAgICAgfQorICAgIH0KKyAgfSk7CisK
KyAgY29uc3QgaXQgPSBzW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSh7IHByZXZlbnRDYW5jZWw6IHRy
dWUgfSk7CisKKyAgY29uc3QgaXRlclJlc3VsdDEgPSBhd2FpdCBpdC5uZXh0KCk7CisgIGFzc2Vy
dF9pdGVyX3Jlc3VsdChpdGVyUmVzdWx0MSwgMCwgZmFsc2UsICcxc3QgbmV4dCgpJyk7CisKKyAg
YXdhaXQgcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCBpdC5uZXh0KCksICcybmQg
bmV4dCgpJyk7CisKKyAgY29uc3QgaXRlclJlc3VsdDIgPSBhd2FpdCBpdC5yZXR1cm4oJ3JldHVy
biB2YWx1ZScpOworICBhc3NlcnRfaXRlcl9yZXN1bHQoaXRlclJlc3VsdDIsICdyZXR1cm4gdmFs
dWUnLCB0cnVlLCAncmV0dXJuKCknKTsKKworICAvLyBpLmUuIGl0IHNob3VsZCBub3QgcmVqZWN0
IHdpdGggYSBnZW5lcmljICJ0aGlzIHN0cmVhbSBpcyBsb2NrZWQiIFR5cGVFcnJvci4KKyAgY29u
c3QgcmVhZGVyID0gcy5nZXRSZWFkZXIoKTsKKyAgYXdhaXQgcHJvbWlzZV9yZWplY3RzX2V4YWN0
bHkodCwgZXJyb3IxLCByZWFkZXIuY2xvc2VkLCAnY2xvc2VkIG9uIHRoZSBuZXcgcmVhZGVyIHNo
b3VsZCByZWplY3Qgd2l0aCB0aGUgZXJyb3InKTsKK30sICdBY3F1aXJpbmcgYSByZWFkZXIgYWZ0
ZXIgcmV0dXJuKClpbmcgZnJvbSBhIHN0cmVhbSB0aGF0IGVycm9ycycpOworCitwcm9taXNlX3Rl
c3QoYXN5bmMgKCkgPT4geworICBjb25zdCBzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBz
dGFydChjKSB7CisgICAgICBjLmVucXVldWUoMSk7CisgICAgICBjLmVucXVldWUoMik7CisgICAg
ICBjLmVucXVldWUoMyk7CisgICAgICBjLmNsb3NlKCk7CisgICAgfSwKKyAgfSk7CisKKyAgLy8g
cmVhZCB0aGUgZmlyc3QgdHdvIGNodW5rcywgdGhlbiBjYW5jZWwKKyAgY29uc3QgY2h1bmtzID0g
W107CisgIGZvciBhd2FpdCAoY29uc3QgY2h1bmsgb2YgcykgeworICAgIGNodW5rcy5wdXNoKGNo
dW5rKTsKKyAgICBpZiAoY2h1bmsgPj0gMikgeworICAgICAgYnJlYWs7CisgICAgfQorICB9Cisg
IGFzc2VydF9hcnJheV9lcXVhbHMoY2h1bmtzLCBbMSwgMl0pOworCisgIGNvbnN0IHJlYWRlciA9
IHMuZ2V0UmVhZGVyKCk7CisgIGF3YWl0IHJlYWRlci5jbG9zZWQ7Cit9LCAnQWNxdWlyaW5nIGEg
cmVhZGVyIGFmdGVyIHBhcnRpYWxseSBhc3luYy1pdGVyYXRpbmcgYSBzdHJlYW0nKTsKKworcHJv
bWlzZV90ZXN0KGFzeW5jICgpID0+IHsKKyAgY29uc3QgcyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7
CisgICAgc3RhcnQoYykgeworICAgICAgYy5lbnF1ZXVlKDEpOworICAgICAgYy5lbnF1ZXVlKDIp
OworICAgICAgYy5lbnF1ZXVlKDMpOworICAgICAgYy5jbG9zZSgpOworICAgIH0sCisgIH0pOwor
CisgIC8vIHJlYWQgdGhlIGZpcnN0IHR3byBjaHVua3MsIHRoZW4gcmVsZWFzZSBsb2NrCisgIGNv
bnN0IGNodW5rcyA9IFtdOworICBmb3IgYXdhaXQgKGNvbnN0IGNodW5rIG9mIHMudmFsdWVzKHtw
cmV2ZW50Q2FuY2VsOiB0cnVlfSkpIHsKKyAgICBjaHVua3MucHVzaChjaHVuayk7CisgICAgaWYg
KGNodW5rID49IDIpIHsKKyAgICAgIGJyZWFrOworICAgIH0KKyAgfQorICBhc3NlcnRfYXJyYXlf
ZXF1YWxzKGNodW5rcywgWzEsIDJdKTsKKworICBjb25zdCByZWFkZXIgPSBzLmdldFJlYWRlcigp
OworICBjb25zdCByZWFkUmVzdWx0ID0gYXdhaXQgcmVhZGVyLnJlYWQoKTsKKyAgYXNzZXJ0X2l0
ZXJfcmVzdWx0KHJlYWRSZXN1bHQsIDMsIGZhbHNlKTsKKyAgYXdhaXQgcmVhZGVyLmNsb3NlZDsK
K30sICdBY3F1aXJpbmcgYSByZWFkZXIgYW5kIHJlYWRpbmcgdGhlIHJlbWFpbmluZyBjaHVua3Mg
YWZ0ZXIgcGFydGlhbGx5IGFzeW5jLWl0ZXJhdGluZyBhIHN0cmVhbSB3aXRoIHByZXZlbnRDYW5j
ZWwgPSB0cnVlJyk7CisKK2ZvciAoY29uc3QgcHJldmVudENhbmNlbCBvZiBbZmFsc2UsIHRydWVd
KSB7CisgIHRlc3QoKCkgPT4geworICAgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKCk7
CisgICAgcnMudmFsdWVzKHsgcHJldmVudENhbmNlbCB9KS5yZXR1cm4oKTsKKyAgICAvLyBUaGUg
dGVzdCBwYXNzZXMgaWYgdGhpcyBsaW5lIGRvZXNuJ3QgdGhyb3cuCisgICAgcnMuZ2V0UmVhZGVy
KCk7CisgIH0sIGByZXR1cm4oKSBzaG91bGQgdW5sb2NrIHRoZSBzdHJlYW0gc3luY2hyb25vdXNs
eSB3aGVuIHByZXZlbnRDYW5jZWwgPSAke3ByZXZlbnRDYW5jZWx9YCk7Cit9CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVh
ZGFibGUtc3RyZWFtcy9hc3luYy1pdGVyYXRvci5hbnkud29ya2VyLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJs
ZS1zdHJlYW1zL2FzeW5jLWl0ZXJhdG9yLmFueS53b3JrZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmRlNTdlYWNlZTY0NDk3NTgyYTU0MDVjMzRjY2JkNWZjZGNiNTI0ZWQKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvcmVhZGFibGUtc3RyZWFtcy9hc3luYy1pdGVyYXRvci5hbnkud29ya2VyLWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDQwIEBACisKK0ZBSUwgQXN5bmMgaXRlcmF0b3IgaW5zdGFuY2VzIHNob3Vs
ZCBoYXZlIHRoZSBjb3JyZWN0IGxpc3Qgb2YgcHJvcGVydGllcyBzLnZhbHVlcyBpcyBub3QgYSBm
dW5jdGlvbi4gKEluICdzLnZhbHVlcygpJywgJ3MudmFsdWVzJyBpcyB1bmRlZmluZWQpCitGQUlM
IEFzeW5jLWl0ZXJhdGluZyBhIHB1c2ggc291cmNlIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJl
amVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBh
IGZ1bmN0aW9uIChuZWFyICcuLi5jaHVuayBvZiBzLi4uJykiCitGQUlMIEFzeW5jLWl0ZXJhdGlu
ZyBhIHB1bGwgc291cmNlIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZh
bHVlOiBvYmplY3QgIlR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhIGZ1bmN0aW9uIChuZWFy
ICcuLi5jaHVuayBvZiBzLi4uJykiCitGQUlMIEFzeW5jLWl0ZXJhdGluZyBhIHB1c2ggc291cmNl
IHdpdGggdW5kZWZpbmVkIHZhbHVlcyBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24g
d2l0aCB2YWx1ZTogb2JqZWN0ICJUeXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBub3QgYSBmdW5jdGlv
biAobmVhciAnLi4uY2h1bmsgb2Ygcy4uLicpIgorRkFJTCBBc3luYy1pdGVyYXRpbmcgYSBwdWxs
IHNvdXJjZSB3aXRoIHVuZGVmaW5lZCB2YWx1ZXMgcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVq
ZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiVHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90IGEg
ZnVuY3Rpb24gKG5lYXIgJy4uLmNodW5rIG9mIHMuLi4nKSIKK0ZBSUwgQXN5bmMtaXRlcmF0aW5n
IGEgcHVsbCBzb3VyY2UgbWFudWFsbHkgcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9u
IHdpdGggdmFsdWU6IG9iamVjdCAiVHlwZUVycm9yOiBzLnZhbHVlcyBpcyBub3QgYSBmdW5jdGlv
bi4gKEluICdzLnZhbHVlcygpJywgJ3MudmFsdWVzJyBpcyB1bmRlZmluZWQpIgorRkFJTCBBc3lu
Yy1pdGVyYXRpbmcgYW4gZXJyb3JlZCBzdHJlYW0gdGhyb3dzIGFzc2VydF9lcXVhbHM6IGV4cGVj
dGVkIChzdHJpbmcpICJlIiBidXQgZ290IChvYmplY3QpIG9iamVjdCAiVHlwZUVycm9yOiB1bmRl
ZmluZWQgaXMgbm90IGEgZnVuY3Rpb24gKG5lYXIgJy4uLmNodW5rIG9mIHMuLi4nKSIKK0ZBSUwg
QXN5bmMtaXRlcmF0aW5nIGEgY2xvc2VkIHN0cmVhbSBuZXZlciBleGVjdXRlcyB0aGUgbG9vcCBi
b2R5LCBidXQgd29ya3MgZmluZSBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0
aCB2YWx1ZTogb2JqZWN0ICJUeXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBub3QgYSBmdW5jdGlvbiAo
bmVhciAnLi4uY2h1bmsgb2Ygcy4uLicpIgorRkFJTCBBc3luYy1pdGVyYXRpbmcgYW4gZW1wdHkg
YnV0IG5vdCBjbG9zZWQvZXJyb3JlZCBzdHJlYW0gbmV2ZXIgZXhlY3V0ZXMgdGhlIGxvb3AgYm9k
eSBhbmQgc3RhbGxzIHRoZSBhc3luYyBmdW5jdGlvbiBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCBy
ZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJUeXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBub3Qg
YSBmdW5jdGlvbiAobmVhciAnLi4uY2h1bmsgb2Ygcy4uLicpIgorRkFJTCBBc3luYy1pdGVyYXRp
bmcgYSBwYXJ0aWFsbHkgY29uc3VtZWQgc3RyZWFtIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJl
amVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBh
IGZ1bmN0aW9uIChuZWFyICcuLi5jaHVuayBvZiBzLi4uJykiCitGQUlMIENhbmNlbGxhdGlvbiBi
ZWhhdmlvciB3aGVuIHRocm93aW5nIGluc2lkZSBsb29wIGJvZHk7IHByZXZlbnRDYW5jZWwgPSBm
YWxzZSBhc3NlcnRfYXJyYXlfZXF1YWxzOiBjYW5jZWwoKSBzaG91bGQgYmUgY2FsbGVkIGxlbmd0
aHMgZGlmZmVyLCBleHBlY3RlZCBhcnJheSBbInB1bGwiLCAiY2FuY2VsIiwgdW5kZWZpbmVkXSBs
ZW5ndGggMywgZ290IFtdIGxlbmd0aCAwCitGQUlMIENhbmNlbGxhdGlvbiBiZWhhdmlvciB3aGVu
IHRocm93aW5nIGluc2lkZSBsb29wIGJvZHk7IHByZXZlbnRDYW5jZWwgPSB0cnVlIGFzc2VydF9h
cnJheV9lcXVhbHM6IGNhbmNlbCgpIHNob3VsZCBub3QgYmUgY2FsbGVkIGxlbmd0aHMgZGlmZmVy
LCBleHBlY3RlZCBhcnJheSBbInB1bGwiXSBsZW5ndGggMSwgZ290IFtdIGxlbmd0aCAwCitGQUlM
IENhbmNlbGxhdGlvbiBiZWhhdmlvciB3aGVuIGJyZWFraW5nIGluc2lkZSBsb29wIGJvZHk7IHBy
ZXZlbnRDYW5jZWwgPSBmYWxzZSBhc3NlcnRfYXJyYXlfZXF1YWxzOiBjYW5jZWwoKSBzaG91bGQg
YmUgY2FsbGVkIGxlbmd0aHMgZGlmZmVyLCBleHBlY3RlZCBhcnJheSBbInB1bGwiLCAiY2FuY2Vs
IiwgdW5kZWZpbmVkXSBsZW5ndGggMywgZ290IFtdIGxlbmd0aCAwCitGQUlMIENhbmNlbGxhdGlv
biBiZWhhdmlvciB3aGVuIGJyZWFraW5nIGluc2lkZSBsb29wIGJvZHk7IHByZXZlbnRDYW5jZWwg
PSB0cnVlIGFzc2VydF9hcnJheV9lcXVhbHM6IGNhbmNlbCgpIHNob3VsZCBub3QgYmUgY2FsbGVk
IGxlbmd0aHMgZGlmZmVyLCBleHBlY3RlZCBhcnJheSBbInB1bGwiXSBsZW5ndGggMSwgZ290IFtd
IGxlbmd0aCAwCitGQUlMIENhbmNlbGxhdGlvbiBiZWhhdmlvciB3aGVuIHJldHVybmluZyBpbnNp
ZGUgbG9vcCBib2R5OyBwcmV2ZW50Q2FuY2VsID0gZmFsc2UgYXNzZXJ0X2FycmF5X2VxdWFsczog
Y2FuY2VsKCkgc2hvdWxkIGJlIGNhbGxlZCBsZW5ndGhzIGRpZmZlciwgZXhwZWN0ZWQgYXJyYXkg
WyJwdWxsIiwgImNhbmNlbCIsIHVuZGVmaW5lZF0gbGVuZ3RoIDMsIGdvdCBbXSBsZW5ndGggMAor
RkFJTCBDYW5jZWxsYXRpb24gYmVoYXZpb3Igd2hlbiByZXR1cm5pbmcgaW5zaWRlIGxvb3AgYm9k
eTsgcHJldmVudENhbmNlbCA9IHRydWUgYXNzZXJ0X2FycmF5X2VxdWFsczogY2FuY2VsKCkgc2hv
dWxkIG5vdCBiZSBjYWxsZWQgbGVuZ3RocyBkaWZmZXIsIGV4cGVjdGVkIGFycmF5IFsicHVsbCJd
IGxlbmd0aCAxLCBnb3QgW10gbGVuZ3RoIDAKK0ZBSUwgQ2FuY2VsbGF0aW9uIGJlaGF2aW9yIHdo
ZW4gbWFudWFsbHkgY2FsbGluZyByZXR1cm4oKTsgcHJldmVudENhbmNlbCA9IGZhbHNlIHByb21p
c2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVFcnJv
cjogcy52YWx1ZXMgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAncy52YWx1ZXMoeyBwcmV2ZW50Q2Fu
Y2VsIH0pJywgJ3MudmFsdWVzJyBpcyB1bmRlZmluZWQpIgorRkFJTCBDYW5jZWxsYXRpb24gYmVo
YXZpb3Igd2hlbiBtYW51YWxseSBjYWxsaW5nIHJldHVybigpOyBwcmV2ZW50Q2FuY2VsID0gdHJ1
ZSBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJU
eXBlRXJyb3I6IHMudmFsdWVzIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3MudmFsdWVzKHsgcHJl
dmVudENhbmNlbCB9KScsICdzLnZhbHVlcycgaXMgdW5kZWZpbmVkKSIKK0ZBSUwgbmV4dCgpIHJl
amVjdHMgaWYgdGhlIHN0cmVhbSBlcnJvcnMgcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0
aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiVHlwZUVycm9yOiBzW1N5bWJvbC5hc3luY0l0ZXJhdG9y
XSBpcyBub3QgYSBmdW5jdGlvbi4gKEluICdzW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSgpJywgJ3Nb
U3ltYm9sLmFzeW5jSXRlcmF0b3JdJyBpcyB1bmRlZmluZWQpIgorRkFJTCByZXR1cm4oKSBkb2Vz
IG5vdCByZWplY3RzIGlmIHRoZSBzdHJlYW0gaGFzIG5vdCBlcnJvcmVkIHlldCBwcm9taXNlX3Rl
c3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJUeXBlRXJyb3I6IHNb
U3ltYm9sLmFzeW5jSXRlcmF0b3JdIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3NbU3ltYm9sLmFz
eW5jSXRlcmF0b3JdKCknLCAnc1tTeW1ib2wuYXN5bmNJdGVyYXRvcl0nIGlzIHVuZGVmaW5lZCki
CitGQUlMIHJldHVybigpIHJlamVjdHMgaWYgdGhlIHN0cmVhbSBoYXMgZXJyb3JlZCBwcm9taXNl
X3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJUeXBlRXJyb3I6
IHNbU3ltYm9sLmFzeW5jSXRlcmF0b3JdIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3NbU3ltYm9s
LmFzeW5jSXRlcmF0b3JdKCknLCAnc1tTeW1ib2wuYXN5bmNJdGVyYXRvcl0nIGlzIHVuZGVmaW5l
ZCkiCitGQUlMIG5leHQoKSB0aGF0IHN1Y2NlZWRzOyBuZXh0KCkgdGhhdCByZXBvcnRzIGFuIGVy
cm9yOyBuZXh0KCkgcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6
IG9iamVjdCAiVHlwZUVycm9yOiBzW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSBpcyBub3QgYSBmdW5j
dGlvbi4gKEluICdzW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSgpJywgJ3NbU3ltYm9sLmFzeW5jSXRl
cmF0b3JdJyBpcyB1bmRlZmluZWQpIgorRkFJTCBuZXh0KCkgdGhhdCBzdWNjZWVkczsgbmV4dCgp
IHRoYXQgcmVwb3J0cyBhbiBlcnJvcigpOyBuZXh0KCkgW25vIGF3YWl0aW5nXSBwcm9taXNlX3Rl
c3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJUeXBlRXJyb3I6IHNb
U3ltYm9sLmFzeW5jSXRlcmF0b3JdIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3NbU3ltYm9sLmFz
eW5jSXRlcmF0b3JdKCknLCAnc1tTeW1ib2wuYXN5bmNJdGVyYXRvcl0nIGlzIHVuZGVmaW5lZCki
CitGQUlMIG5leHQoKSB0aGF0IHN1Y2NlZWRzOyBuZXh0KCkgdGhhdCByZXBvcnRzIGFuIGVycm9y
KCk7IHJldHVybigpIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVl
OiBvYmplY3QgIlR5cGVFcnJvcjogc1tTeW1ib2wuYXN5bmNJdGVyYXRvcl0gaXMgbm90IGEgZnVu
Y3Rpb24uIChJbiAnc1tTeW1ib2wuYXN5bmNJdGVyYXRvcl0oKScsICdzW1N5bWJvbC5hc3luY0l0
ZXJhdG9yXScgaXMgdW5kZWZpbmVkKSIKK0ZBSUwgbmV4dCgpIHRoYXQgc3VjY2VlZHM7IG5leHQo
KSB0aGF0IHJlcG9ydHMgYW4gZXJyb3IoKTsgcmV0dXJuKCkgW25vIGF3YWl0aW5nXSBwcm9taXNl
X3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJUeXBlRXJyb3I6
IHNbU3ltYm9sLmFzeW5jSXRlcmF0b3JdIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3NbU3ltYm9s
LmFzeW5jSXRlcmF0b3JdKCknLCAnc1tTeW1ib2wuYXN5bmNJdGVyYXRvcl0nIGlzIHVuZGVmaW5l
ZCkiCitGQUlMIG5leHQoKSB0aGF0IHN1Y2NlZWRzOyByZXR1cm4oKSBwcm9taXNlX3Rlc3Q6IFVu
aGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJUeXBlRXJyb3I6IHNbU3ltYm9s
LmFzeW5jSXRlcmF0b3JdIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3NbU3ltYm9sLmFzeW5jSXRl
cmF0b3JdKCknLCAnc1tTeW1ib2wuYXN5bmNJdGVyYXRvcl0nIGlzIHVuZGVmaW5lZCkiCitGQUlM
IG5leHQoKSB0aGF0IHN1Y2NlZWRzOyByZXR1cm4oKSBbbm8gYXdhaXRpbmddIHByb21pc2VfdGVz
dDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVFcnJvcjogc1tT
eW1ib2wuYXN5bmNJdGVyYXRvcl0gaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnc1tTeW1ib2wuYXN5
bmNJdGVyYXRvcl0oKScsICdzW1N5bWJvbC5hc3luY0l0ZXJhdG9yXScgaXMgdW5kZWZpbmVkKSIK
K0ZBSUwgcmV0dXJuKCk7IG5leHQoKSBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24g
d2l0aCB2YWx1ZTogb2JqZWN0ICJUeXBlRXJyb3I6IHJzLnZhbHVlcyBpcyBub3QgYSBmdW5jdGlv
bi4gKEluICdycy52YWx1ZXMoKScsICdycy52YWx1ZXMnIGlzIHVuZGVmaW5lZCkiCitGQUlMIHJl
dHVybigpOyBuZXh0KCkgW25vIGF3YWl0aW5nXSBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWpl
Y3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJUeXBlRXJyb3I6IHJzLnZhbHVlcyBpcyBub3QgYSBm
dW5jdGlvbi4gKEluICdycy52YWx1ZXMoKScsICdycy52YWx1ZXMnIGlzIHVuZGVmaW5lZCkiCitG
QUlMIHJldHVybigpOyByZXR1cm4oKSBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24g
d2l0aCB2YWx1ZTogb2JqZWN0ICJUeXBlRXJyb3I6IHJzLnZhbHVlcyBpcyBub3QgYSBmdW5jdGlv
bi4gKEluICdycy52YWx1ZXMoKScsICdycy52YWx1ZXMnIGlzIHVuZGVmaW5lZCkiCitGQUlMIHJl
dHVybigpOyByZXR1cm4oKSBbbm8gYXdhaXRpbmddIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJl
amVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVFcnJvcjogcnMudmFsdWVzIGlzIG5vdCBh
IGZ1bmN0aW9uLiAoSW4gJ3JzLnZhbHVlcygpJywgJ3JzLnZhbHVlcycgaXMgdW5kZWZpbmVkKSIK
K0ZBSUwgdmFsdWVzKCkgdGhyb3dzIGlmIHRoZXJlJ3MgYWxyZWFkeSBhIGxvY2sgcy52YWx1ZXMg
aXMgbm90IGEgZnVuY3Rpb24uIChJbiAncy52YWx1ZXMoKScsICdzLnZhbHVlcycgaXMgdW5kZWZp
bmVkKQorRkFJTCBBY3F1aXJpbmcgYSByZWFkZXIgYWZ0ZXIgZXhoYXVzdGl2ZWx5IGFzeW5jLWl0
ZXJhdGluZyBhIHN0cmVhbSBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2
YWx1ZTogb2JqZWN0ICJUeXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBub3QgYSBmdW5jdGlvbiAobmVh
ciAnLi4uY2h1bmsgb2Ygcy4uLicpIgorRkFJTCBBY3F1aXJpbmcgYSByZWFkZXIgYWZ0ZXIgcmV0
dXJuKClpbmcgZnJvbSBhIHN0cmVhbSB0aGF0IGVycm9ycyBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxl
ZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJUeXBlRXJyb3I6IHNbU3ltYm9sLmFzeW5j
SXRlcmF0b3JdIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3NbU3ltYm9sLmFzeW5jSXRlcmF0b3Jd
KHsgcHJldmVudENhbmNlbDogdHJ1ZSB9KScsICdzW1N5bWJvbC5hc3luY0l0ZXJhdG9yXScgaXMg
dW5kZWZpbmVkKSIKK0ZBSUwgQWNxdWlyaW5nIGEgcmVhZGVyIGFmdGVyIHBhcnRpYWxseSBhc3lu
Yy1pdGVyYXRpbmcgYSBzdHJlYW0gcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdp
dGggdmFsdWU6IG9iamVjdCAiVHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90IGEgZnVuY3Rpb24g
KG5lYXIgJy4uLmNodW5rIG9mIHMuLi4nKSIKK0ZBSUwgQWNxdWlyaW5nIGEgcmVhZGVyIGFuZCBy
ZWFkaW5nIHRoZSByZW1haW5pbmcgY2h1bmtzIGFmdGVyIHBhcnRpYWxseSBhc3luYy1pdGVyYXRp
bmcgYSBzdHJlYW0gd2l0aCBwcmV2ZW50Q2FuY2VsID0gdHJ1ZSBwcm9taXNlX3Rlc3Q6IFVuaGFu
ZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJUeXBlRXJyb3I6IHMudmFsdWVzIGlz
IG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3MudmFsdWVzKHtwcmV2ZW50Q2FuY2VsOiB0cnVlfSknLCAn
cy52YWx1ZXMnIGlzIHVuZGVmaW5lZCkiCitGQUlMIHJldHVybigpIHNob3VsZCB1bmxvY2sgdGhl
IHN0cmVhbSBzeW5jaHJvbm91c2x5IHdoZW4gcHJldmVudENhbmNlbCA9IGZhbHNlIHJzLnZhbHVl
cyBpcyBub3QgYSBmdW5jdGlvbi4gKEluICdycy52YWx1ZXMoeyBwcmV2ZW50Q2FuY2VsIH0pJywg
J3JzLnZhbHVlcycgaXMgdW5kZWZpbmVkKQorRkFJTCByZXR1cm4oKSBzaG91bGQgdW5sb2NrIHRo
ZSBzdHJlYW0gc3luY2hyb25vdXNseSB3aGVuIHByZXZlbnRDYW5jZWwgPSB0cnVlIHJzLnZhbHVl
cyBpcyBub3QgYSBmdW5jdGlvbi4gKEluICdycy52YWx1ZXMoeyBwcmV2ZW50Q2FuY2VsIH0pJywg
J3JzLnZhbHVlcycgaXMgdW5kZWZpbmVkKQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9hc3lu
Yy1pdGVyYXRvci5hbnkud29ya2VyLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9hc3luYy1pdGVyYXRvci5h
bnkud29ya2VyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjM4MjkxMzUyOGU2OTNiM2E1ZDU2YzY2MGE0NTA2
MDk4MGI1NDhjMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2FzeW5jLWl0ZXJhdG9y
LmFueS53b3JrZXIuaHRtbApAQCAtMCwwICsxIEBACis8IS0tIFRoaXMgZmlsZSBpcyByZXF1aXJl
ZCBmb3IgV2ViS2l0IHRlc3QgaW5mcmFzdHJ1Y3R1cmUgdG8gcnVuIHRoZSB0ZW1wbGF0ZWQgdGVz
dCAtLT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFt
cy9iYWQtc3RyYXRlZ2llcy5hbnktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvYmFkLXN0cmF0
ZWdpZXMuYW55LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44Yjk4MGU5ZjgxOWQ1YTU1OWE1ODU0
ZTY3NzQ5NzcyNTk0M2VlZDEzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvYmFkLXN0
cmF0ZWdpZXMuYW55LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDkgQEAKKworUEFTUyBSZWFkYWJs
ZSBzdHJlYW06IHRocm93aW5nIHN0cmF0ZWd5LnNpemUgZ2V0dGVyIAorUEFTUyBSZWFkYWJsZSBz
dHJlYW06IHN0cmF0ZWd5LnNpemUgZXJyb3JzIHRoZSBzdHJlYW0gYW5kIHRoZW4gdGhyb3dzIAor
UEFTUyBSZWFkYWJsZSBzdHJlYW06IHN0cmF0ZWd5LnNpemUgZXJyb3JzIHRoZSBzdHJlYW0gYW5k
IHRoZW4gcmV0dXJucyBJbmZpbml0eSAKK1BBU1MgUmVhZGFibGUgc3RyZWFtOiB0aHJvd2luZyBz
dHJhdGVneS5zaXplIG1ldGhvZCAKK1BBU1MgUmVhZGFibGUgc3RyZWFtOiB0aHJvd2luZyBzdHJh
dGVneS5oaWdoV2F0ZXJNYXJrIGdldHRlciAKK1BBU1MgUmVhZGFibGUgc3RyZWFtOiBpbnZhbGlk
IHN0cmF0ZWd5LmhpZ2hXYXRlck1hcmsgCitQQVNTIFJlYWRhYmxlIHN0cmVhbTogaW52YWxpZCBz
dHJhdGVneS5zaXplIHJldHVybiB2YWx1ZSAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvYmFk
LXN0cmF0ZWdpZXMuYW55Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9iYWQtc3RyYXRlZ2llcy5hbnkuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4yMzgyOTEzNTI4ZTY5M2IzYTVkNTZjNjYwYTQ1MDYwOTgwYjU0OGMzCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvYmFkLXN0cmF0ZWdpZXMuYW55Lmh0bWwKQEAg
LTAsMCArMSBAQAorPCEtLSBUaGlzIGZpbGUgaXMgcmVxdWlyZWQgZm9yIFdlYktpdCB0ZXN0IGlu
ZnJhc3RydWN0dXJlIHRvIHJ1biB0aGUgdGVtcGxhdGVkIHRlc3QgLS0+ClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvYmFkLXN0cmF0ZWdpZXMuYW55
LmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
L3JlYWRhYmxlLXN0cmVhbXMvYmFkLXN0cmF0ZWdpZXMuYW55LmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI3OTUz
NjBmYjdjN2JiOTc5YTY0OTU4ODRhZDBlMDIxOWExYTMxODMKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFi
bGUtc3RyZWFtcy9iYWQtc3RyYXRlZ2llcy5hbnkuanMKQEAgLTAsMCArMSwxNTkgQEAKKy8vIE1F
VEE6IGdsb2JhbD13aW5kb3csd29ya2VyLGpzc2hlbGwKKyd1c2Ugc3RyaWN0JzsKKwordGVzdCgo
KSA9PiB7CisKKyAgY29uc3QgdGhlRXJyb3IgPSBuZXcgRXJyb3IoJ2EgdW5pcXVlIHN0cmluZycp
OworCisgIGFzc2VydF90aHJvd3NfZXhhY3RseSh0aGVFcnJvciwgKCkgPT4geworICAgIG5ldyBS
ZWFkYWJsZVN0cmVhbSh7fSwgeworICAgICAgZ2V0IHNpemUoKSB7CisgICAgICAgIHRocm93IHRo
ZUVycm9yOworICAgICAgfSwKKyAgICAgIGhpZ2hXYXRlck1hcms6IDUKKyAgICB9KTsKKyAgfSwg
J2NvbnN0cnVjdGlvbiBzaG91bGQgcmUtdGhyb3cgdGhlIGVycm9yJyk7CisKK30sICdSZWFkYWJs
ZSBzdHJlYW06IHRocm93aW5nIHN0cmF0ZWd5LnNpemUgZ2V0dGVyJyk7CisKK3Byb21pc2VfdGVz
dCh0ID0+IHsKKworICBjb25zdCBjb250cm9sbGVyRXJyb3IgPSB7IG5hbWU6ICdjb250cm9sbGVy
IGVycm9yJyB9OworICBjb25zdCB0aHJvd25FcnJvciA9IHsgbmFtZTogJ3Rocm93biBlcnJvcicg
fTsKKworICBsZXQgY29udHJvbGxlcjsKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0o
CisgICAgeworICAgICAgc3RhcnQoYykgeworICAgICAgICBjb250cm9sbGVyID0gYzsKKyAgICAg
IH0KKyAgICB9LAorICAgIHsKKyAgICAgIHNpemUoKSB7CisgICAgICAgIGNvbnRyb2xsZXIuZXJy
b3IoY29udHJvbGxlckVycm9yKTsKKyAgICAgICAgdGhyb3cgdGhyb3duRXJyb3I7CisgICAgICB9
LAorICAgICAgaGlnaFdhdGVyTWFyazogNQorICAgIH0KKyAgKTsKKworICBhc3NlcnRfdGhyb3dz
X2V4YWN0bHkodGhyb3duRXJyb3IsICgpID0+IGNvbnRyb2xsZXIuZW5xdWV1ZSgnYScpLCAnZW5x
dWV1ZSBzaG91bGQgcmUtdGhyb3cgdGhlIGVycm9yJyk7CisKKyAgcmV0dXJuIHByb21pc2VfcmVq
ZWN0c19leGFjdGx5KHQsIGNvbnRyb2xsZXJFcnJvciwgcnMuZ2V0UmVhZGVyKCkuY2xvc2VkKTsK
KworfSwgJ1JlYWRhYmxlIHN0cmVhbTogc3RyYXRlZ3kuc2l6ZSBlcnJvcnMgdGhlIHN0cmVhbSBh
bmQgdGhlbiB0aHJvd3MnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworCisgIGNvbnN0IHRoZUVy
cm9yID0geyBuYW1lOiAnbXkgZXJyb3InIH07CisKKyAgbGV0IGNvbnRyb2xsZXI7CisgIGNvbnN0
IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKAorICAgIHsKKyAgICAgIHN0YXJ0KGMpIHsKKyAgICAg
ICAgY29udHJvbGxlciA9IGM7CisgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICBzaXplKCkg
eworICAgICAgICBjb250cm9sbGVyLmVycm9yKHRoZUVycm9yKTsKKyAgICAgICAgcmV0dXJuIElu
ZmluaXR5OworICAgICAgfSwKKyAgICAgIGhpZ2hXYXRlck1hcms6IDUKKyAgICB9CisgICk7CisK
KyAgYXNzZXJ0X3Rocm93c19qcyhSYW5nZUVycm9yLCAoKSA9PiBjb250cm9sbGVyLmVucXVldWUo
J2EnKSwgJ2VucXVldWUgc2hvdWxkIHRocm93IGEgUmFuZ2VFcnJvcicpOworCisgIHJldHVybiBw
cm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCB0aGVFcnJvciwgcnMuZ2V0UmVhZGVyKCkuY2xvc2Vk
LCAnY2xvc2VkIHNob3VsZCByZWplY3Qgd2l0aCB0aGUgZXJyb3InKTsKKworfSwgJ1JlYWRhYmxl
IHN0cmVhbTogc3RyYXRlZ3kuc2l6ZSBlcnJvcnMgdGhlIHN0cmVhbSBhbmQgdGhlbiByZXR1cm5z
IEluZmluaXR5Jyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisKKyAgY29uc3QgdGhlRXJyb3Ig
PSBuZXcgRXJyb3IoJ2EgdW5pcXVlIHN0cmluZycpOworICBjb25zdCBycyA9IG5ldyBSZWFkYWJs
ZVN0cmVhbSgKKyAgICB7CisgICAgICBzdGFydChjKSB7CisgICAgICAgIGFzc2VydF90aHJvd3Nf
ZXhhY3RseSh0aGVFcnJvciwgKCkgPT4gYy5lbnF1ZXVlKCdhJyksICdlbnF1ZXVlIHNob3VsZCB0
aHJvdyB0aGUgZXJyb3InKTsKKyAgICAgIH0KKyAgICB9LAorICAgIHsKKyAgICAgIHNpemUoKSB7
CisgICAgICAgIHRocm93IHRoZUVycm9yOworICAgICAgfSwKKyAgICAgIGhpZ2hXYXRlck1hcms6
IDUKKyAgICB9CisgICk7CisKKyAgcmV0dXJuIHJzLmdldFJlYWRlcigpLmNsb3NlZC5jYXRjaChl
ID0+IHsKKyAgICBhc3NlcnRfZXF1YWxzKGUsIHRoZUVycm9yLCAnY2xvc2VkIHNob3VsZCByZWpl
Y3Qgd2l0aCB0aGUgZXJyb3InKTsKKyAgfSk7CisKK30sICdSZWFkYWJsZSBzdHJlYW06IHRocm93
aW5nIHN0cmF0ZWd5LnNpemUgbWV0aG9kJyk7CisKK3Rlc3QoKCkgPT4geworCisgIGNvbnN0IHRo
ZUVycm9yID0gbmV3IEVycm9yKCdhIHVuaXF1ZSBzdHJpbmcnKTsKKworICBhc3NlcnRfdGhyb3dz
X2V4YWN0bHkodGhlRXJyb3IsICgpID0+IHsKKyAgICBuZXcgUmVhZGFibGVTdHJlYW0oe30sIHsK
KyAgICAgIHNpemUoKSB7CisgICAgICAgIHJldHVybiAxOworICAgICAgfSwKKyAgICAgIGdldCBo
aWdoV2F0ZXJNYXJrKCkgeworICAgICAgICB0aHJvdyB0aGVFcnJvcjsKKyAgICAgIH0KKyAgICB9
KTsKKyAgfSwgJ2NvbnN0cnVjdGlvbiBzaG91bGQgcmUtdGhyb3cgdGhlIGVycm9yJyk7CisKK30s
ICdSZWFkYWJsZSBzdHJlYW06IHRocm93aW5nIHN0cmF0ZWd5LmhpZ2hXYXRlck1hcmsgZ2V0dGVy
Jyk7CisKK3Rlc3QoKCkgPT4geworCisgIGZvciAoY29uc3QgaGlnaFdhdGVyTWFyayBvZiBbLTEs
IC1JbmZpbml0eSwgTmFOLCAnZm9vJywge31dKSB7CisgICAgYXNzZXJ0X3Rocm93c19qcyhSYW5n
ZUVycm9yLCAoKSA9PiB7CisgICAgICBuZXcgUmVhZGFibGVTdHJlYW0oe30sIHsKKyAgICAgICAg
c2l6ZSgpIHsKKyAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgfSwKKyAgICAgICAgaGlnaFdh
dGVyTWFyaworICAgICAgfSk7CisgICAgfSwgJ2NvbnN0cnVjdGlvbiBzaG91bGQgdGhyb3cgYSBS
YW5nZUVycm9yIGZvciAnICsgaGlnaFdhdGVyTWFyayk7CisgIH0KKworfSwgJ1JlYWRhYmxlIHN0
cmVhbTogaW52YWxpZCBzdHJhdGVneS5oaWdoV2F0ZXJNYXJrJyk7CisKK3Byb21pc2VfdGVzdCgo
KSA9PiB7CisKKyAgY29uc3QgcHJvbWlzZXMgPSBbXTsKKyAgZm9yIChjb25zdCBzaXplIG9mIFtO
YU4sIC1JbmZpbml0eSwgSW5maW5pdHksIC0xXSkgeworICAgIGxldCB0aGVFcnJvcjsKKyAgICBj
b25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSgKKyAgICAgIHsKKyAgICAgICAgc3RhcnQoYykg
eworICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICBjLmVucXVldWUoJ2hpJyk7CisgICAgICAg
ICAgICBhc3NlcnRfdW5yZWFjaGVkKCdlbnF1ZXVlIGRpZG5cJ3QgdGhyb3cnKTsKKyAgICAgICAg
ICB9IGNhdGNoIChlcnJvcikgeworICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhlcnJvci5uYW1l
LCAnUmFuZ2VFcnJvcicsICdlbnF1ZXVlIHNob3VsZCB0aHJvdyBhIFJhbmdlRXJyb3IgZm9yICcg
KyBzaXplKTsKKyAgICAgICAgICAgIHRoZUVycm9yID0gZXJyb3I7CisgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgICB9LAorICAgICAgeworICAgICAgICBzaXplKCkgeworICAgICAgICAgIHJl
dHVybiBzaXplOworICAgICAgICB9LAorICAgICAgICBoaWdoV2F0ZXJNYXJrOiA1CisgICAgICB9
CisgICAgKTsKKworICAgIHByb21pc2VzLnB1c2gocnMuZ2V0UmVhZGVyKCkuY2xvc2VkLmNhdGNo
KGUgPT4geworICAgICAgYXNzZXJ0X2VxdWFscyhlLCB0aGVFcnJvciwgJ2Nsb3NlZCBzaG91bGQg
cmVqZWN0IHdpdGggdGhlIGVycm9yIGZvciAnICsgc2l6ZSk7CisgICAgfSkpOworICB9CisKKyAg
cmV0dXJuIFByb21pc2UuYWxsKHByb21pc2VzKTsKKworfSwgJ1JlYWRhYmxlIHN0cmVhbTogaW52
YWxpZCBzdHJhdGVneS5zaXplIHJldHVybiB2YWx1ZScpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVh
bXMvYmFkLXN0cmF0ZWdpZXMuYW55Lndvcmtlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9i
YWQtc3RyYXRlZ2llcy5hbnkud29ya2VyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44Yjk4MGU5
ZjgxOWQ1YTU1OWE1ODU0ZTY3NzQ5NzcyNTk0M2VlZDEzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxl
LXN0cmVhbXMvYmFkLXN0cmF0ZWdpZXMuYW55Lndvcmtlci1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSw5IEBACisKK1BBU1MgUmVhZGFibGUgc3RyZWFtOiB0aHJvd2luZyBzdHJhdGVneS5zaXplIGdl
dHRlciAKK1BBU1MgUmVhZGFibGUgc3RyZWFtOiBzdHJhdGVneS5zaXplIGVycm9ycyB0aGUgc3Ry
ZWFtIGFuZCB0aGVuIHRocm93cyAKK1BBU1MgUmVhZGFibGUgc3RyZWFtOiBzdHJhdGVneS5zaXpl
IGVycm9ycyB0aGUgc3RyZWFtIGFuZCB0aGVuIHJldHVybnMgSW5maW5pdHkgCitQQVNTIFJlYWRh
YmxlIHN0cmVhbTogdGhyb3dpbmcgc3RyYXRlZ3kuc2l6ZSBtZXRob2QgCitQQVNTIFJlYWRhYmxl
IHN0cmVhbTogdGhyb3dpbmcgc3RyYXRlZ3kuaGlnaFdhdGVyTWFyayBnZXR0ZXIgCitQQVNTIFJl
YWRhYmxlIHN0cmVhbTogaW52YWxpZCBzdHJhdGVneS5oaWdoV2F0ZXJNYXJrIAorUEFTUyBSZWFk
YWJsZSBzdHJlYW06IGludmFsaWQgc3RyYXRlZ3kuc2l6ZSByZXR1cm4gdmFsdWUgCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy9yZWFkYWJsZS1zdHJlYW1zL2JhZC1zdHJhdGVnaWVzLmFueS53b3JrZXIuaHRtbCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1z
dHJlYW1zL2JhZC1zdHJhdGVnaWVzLmFueS53b3JrZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMzgyOTEz
NTI4ZTY5M2IzYTVkNTZjNjYwYTQ1MDYwOTgwYjU0OGMzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxl
LXN0cmVhbXMvYmFkLXN0cmF0ZWdpZXMuYW55Lndvcmtlci5odG1sCkBAIC0wLDAgKzEgQEAKKzwh
LS0gVGhpcyBmaWxlIGlzIHJlcXVpcmVkIGZvciBXZWJLaXQgdGVzdCBpbmZyYXN0cnVjdHVyZSB0
byBydW4gdGhlIHRlbXBsYXRlZCB0ZXN0IC0tPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2JhZC1zdHJhdGVnaWVzLmRlZGljYXRlZHdvcmtlci1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9iYWQtc3RyYXRlZ2llcy5kZWRpY2F0ZWR3b3JrZXIt
ZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4Yjk4MGU5ZjgxOWQ1
YTU1OWE1ODU0ZTY3NzQ5NzcyNTk0M2VlZDEzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2JhZC1zdHJhdGVnaWVzLmRlZGljYXRlZHdv
cmtlci1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw5ICswLDAgQEAKLQotUEFTUyBS
ZWFkYWJsZSBzdHJlYW06IHRocm93aW5nIHN0cmF0ZWd5LnNpemUgZ2V0dGVyIAotUEFTUyBSZWFk
YWJsZSBzdHJlYW06IHN0cmF0ZWd5LnNpemUgZXJyb3JzIHRoZSBzdHJlYW0gYW5kIHRoZW4gdGhy
b3dzIAotUEFTUyBSZWFkYWJsZSBzdHJlYW06IHN0cmF0ZWd5LnNpemUgZXJyb3JzIHRoZSBzdHJl
YW0gYW5kIHRoZW4gcmV0dXJucyBJbmZpbml0eSAKLVBBU1MgUmVhZGFibGUgc3RyZWFtOiB0aHJv
d2luZyBzdHJhdGVneS5zaXplIG1ldGhvZCAKLVBBU1MgUmVhZGFibGUgc3RyZWFtOiB0aHJvd2lu
ZyBzdHJhdGVneS5oaWdoV2F0ZXJNYXJrIGdldHRlciAKLVBBU1MgUmVhZGFibGUgc3RyZWFtOiBp
bnZhbGlkIHN0cmF0ZWd5LmhpZ2hXYXRlck1hcmsgCi1QQVNTIFJlYWRhYmxlIHN0cmVhbTogaW52
YWxpZCBzdHJhdGVneS5zaXplIHJldHVybiB2YWx1ZSAKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVh
bXMvYmFkLXN0cmF0ZWdpZXMuZGVkaWNhdGVkd29ya2VyLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9iYWQt
c3RyYXRlZ2llcy5kZWRpY2F0ZWR3b3JrZXIuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggZDUzNzY3ZjNkNmNkZThiODg0ZmE3YjFiZmE4NjY1MzAxNmYyZmJjZi4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9iYWQtc3Ry
YXRlZ2llcy5kZWRpY2F0ZWR3b3JrZXIuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAg
QEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHRpdGxlPmJhZC1z
dHJhdGVnaWVzLmpzIGRlZGljYXRlZCB3b3JrZXIgd3JhcHBlciBmaWxlPC90aXRsZT4KLQotPHNj
cmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBz
cmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotCi08c2NyaXB0
PgotJ3VzZSBzdHJpY3QnOwotZmV0Y2hfdGVzdHNfZnJvbV93b3JrZXIobmV3IFdvcmtlcignYmFk
LXN0cmF0ZWdpZXMuanMnKSk7Ci08L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2Jh
ZC1zdHJhdGVnaWVzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9iYWQtc3RyYXRlZ2llcy5odG1sCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NGNmYjgzYmJjOGZkMGE3NTk1ZjEzNWUyNTE5MjBm
ODU3Mjk5OWY5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFk
YWJsZS1zdHJlYW1zL2JhZC1zdHJhdGVnaWVzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMCAr
MCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTx0aXRsZT5i
YWQtc3RyYXRlZ2llcy5qcyBicm93c2VyIGNvbnRleHQgd3JhcHBlciBmaWxlPC90aXRsZT4KLQot
PHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlw
dCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotCi0KLQot
PHNjcmlwdCBzcmM9ImJhZC1zdHJhdGVnaWVzLmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJs
ZS1zdHJlYW1zL2JhZC1zdHJhdGVnaWVzLmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvYmFkLXN0cmF0ZWdpZXMu
anMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVhNTJkNjBkODQyYTZkNGRlYjMxYmM4
YzNlYjY2MzIwOWIxZTBlMmIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJl
YW1zL3JlYWRhYmxlLXN0cmVhbXMvYmFkLXN0cmF0ZWdpZXMuanMKKysrIC9kZXYvbnVsbApAQCAt
MSwxNjQgKzAsMCBAQAotJ3VzZSBzdHJpY3QnOwotCi1pZiAoc2VsZi5pbXBvcnRTY3JpcHRzKSB7
Ci0gIHNlbGYuaW1wb3J0U2NyaXB0cygnL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcycpOwotfQot
Ci10ZXN0KCgpID0+IHsKLQotICBjb25zdCB0aGVFcnJvciA9IG5ldyBFcnJvcignYSB1bmlxdWUg
c3RyaW5nJyk7Ci0KLSAgYXNzZXJ0X3Rocm93cyh0aGVFcnJvciwgKCkgPT4gewotICAgIG5ldyBS
ZWFkYWJsZVN0cmVhbSh7fSwgewotICAgICAgZ2V0IHNpemUoKSB7Ci0gICAgICAgIHRocm93IHRo
ZUVycm9yOwotICAgICAgfSwKLSAgICAgIGhpZ2hXYXRlck1hcms6IDUKLSAgICB9KTsKLSAgfSwg
J2NvbnN0cnVjdGlvbiBzaG91bGQgcmUtdGhyb3cgdGhlIGVycm9yJyk7Ci0KLX0sICdSZWFkYWJs
ZSBzdHJlYW06IHRocm93aW5nIHN0cmF0ZWd5LnNpemUgZ2V0dGVyJyk7Ci0KLXByb21pc2VfdGVz
dCh0ID0+IHsKLQotICBjb25zdCBjb250cm9sbGVyRXJyb3IgPSB7IG5hbWU6ICdjb250cm9sbGVy
IGVycm9yJyB9OwotICBjb25zdCB0aHJvd25FcnJvciA9IHsgbmFtZTogJ3Rocm93biBlcnJvcicg
fTsKLQotICBsZXQgY29udHJvbGxlcjsKLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0o
Ci0gICAgewotICAgICAgc3RhcnQoYykgewotICAgICAgICBjb250cm9sbGVyID0gYzsKLSAgICAg
IH0KLSAgICB9LAotICAgIHsKLSAgICAgIHNpemUoKSB7Ci0gICAgICAgIGNvbnRyb2xsZXIuZXJy
b3IoY29udHJvbGxlckVycm9yKTsKLSAgICAgICAgdGhyb3cgdGhyb3duRXJyb3I7Ci0gICAgICB9
LAotICAgICAgaGlnaFdhdGVyTWFyazogNQotICAgIH0KLSAgKTsKLQotICBhc3NlcnRfdGhyb3dz
KHRocm93bkVycm9yLCAoKSA9PiBjb250cm9sbGVyLmVucXVldWUoJ2EnKSwgJ2VucXVldWUgc2hv
dWxkIHJlLXRocm93IHRoZSBlcnJvcicpOwotCi0gIHJldHVybiBwcm9taXNlX3JlamVjdHModCwg
Y29udHJvbGxlckVycm9yLCBycy5nZXRSZWFkZXIoKS5jbG9zZWQpOwotCi19LCAnUmVhZGFibGUg
c3RyZWFtOiBzdHJhdGVneS5zaXplIGVycm9ycyB0aGUgc3RyZWFtIGFuZCB0aGVuIHRocm93cycp
OwotCi1wcm9taXNlX3Rlc3QodCA9PiB7Ci0KLSAgY29uc3QgdGhlRXJyb3IgPSB7IG5hbWU6ICdt
eSBlcnJvcicgfTsKLQotICBsZXQgY29udHJvbGxlcjsKLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFi
bGVTdHJlYW0oCi0gICAgewotICAgICAgc3RhcnQoYykgewotICAgICAgICBjb250cm9sbGVyID0g
YzsKLSAgICAgIH0KLSAgICB9LAotICAgIHsKLSAgICAgIHNpemUoKSB7Ci0gICAgICAgIGNvbnRy
b2xsZXIuZXJyb3IodGhlRXJyb3IpOwotICAgICAgICByZXR1cm4gSW5maW5pdHk7Ci0gICAgICB9
LAotICAgICAgaGlnaFdhdGVyTWFyazogNQotICAgIH0KLSAgKTsKLQotICBhc3NlcnRfdGhyb3dz
KG5ldyBSYW5nZUVycm9yKCksICgpID0+IGNvbnRyb2xsZXIuZW5xdWV1ZSgnYScpLCAnZW5xdWV1
ZSBzaG91bGQgdGhyb3cgYSBSYW5nZUVycm9yJyk7Ci0KLSAgcmV0dXJuIHByb21pc2VfcmVqZWN0
cyh0LCB0aGVFcnJvciwgcnMuZ2V0UmVhZGVyKCkuY2xvc2VkLCAnY2xvc2VkIHNob3VsZCByZWpl
Y3Qgd2l0aCB0aGUgZXJyb3InKTsKLQotfSwgJ1JlYWRhYmxlIHN0cmVhbTogc3RyYXRlZ3kuc2l6
ZSBlcnJvcnMgdGhlIHN0cmVhbSBhbmQgdGhlbiByZXR1cm5zIEluZmluaXR5Jyk7Ci0KLXByb21p
c2VfdGVzdCgoKSA9PiB7Ci0KLSAgY29uc3QgdGhlRXJyb3IgPSBuZXcgRXJyb3IoJ2EgdW5pcXVl
IHN0cmluZycpOwotICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSgKLSAgICB7Ci0gICAg
ICBzdGFydChjKSB7Ci0gICAgICAgIGFzc2VydF90aHJvd3ModGhlRXJyb3IsICgpID0+IGMuZW5x
dWV1ZSgnYScpLCAnZW5xdWV1ZSBzaG91bGQgdGhyb3cgdGhlIGVycm9yJyk7Ci0gICAgICB9Ci0g
ICAgfSwKLSAgICB7Ci0gICAgICBzaXplKCkgewotICAgICAgICB0aHJvdyB0aGVFcnJvcjsKLSAg
ICAgIH0sCi0gICAgICBoaWdoV2F0ZXJNYXJrOiA1Ci0gICAgfQotICApOwotCi0gIHJldHVybiBy
cy5nZXRSZWFkZXIoKS5jbG9zZWQuY2F0Y2goZSA9PiB7Ci0gICAgYXNzZXJ0X2VxdWFscyhlLCB0
aGVFcnJvciwgJ2Nsb3NlZCBzaG91bGQgcmVqZWN0IHdpdGggdGhlIGVycm9yJyk7Ci0gIH0pOwot
Ci19LCAnUmVhZGFibGUgc3RyZWFtOiB0aHJvd2luZyBzdHJhdGVneS5zaXplIG1ldGhvZCcpOwot
Ci10ZXN0KCgpID0+IHsKLQotICBjb25zdCB0aGVFcnJvciA9IG5ldyBFcnJvcignYSB1bmlxdWUg
c3RyaW5nJyk7Ci0KLSAgYXNzZXJ0X3Rocm93cyh0aGVFcnJvciwgKCkgPT4gewotICAgIG5ldyBS
ZWFkYWJsZVN0cmVhbSh7fSwgewotICAgICAgc2l6ZSgpIHsKLSAgICAgICAgcmV0dXJuIDE7Ci0g
ICAgICB9LAotICAgICAgZ2V0IGhpZ2hXYXRlck1hcmsoKSB7Ci0gICAgICAgIHRocm93IHRoZUVy
cm9yOwotICAgICAgfQotICAgIH0pOwotICB9LCAnY29uc3RydWN0aW9uIHNob3VsZCByZS10aHJv
dyB0aGUgZXJyb3InKTsKLQotfSwgJ1JlYWRhYmxlIHN0cmVhbTogdGhyb3dpbmcgc3RyYXRlZ3ku
aGlnaFdhdGVyTWFyayBnZXR0ZXInKTsKLQotdGVzdCgoKSA9PiB7Ci0KLSAgZm9yIChjb25zdCBo
aWdoV2F0ZXJNYXJrIG9mIFstMSwgLUluZmluaXR5LCBOYU4sICdmb28nLCB7fV0pIHsKLSAgICBh
c3NlcnRfdGhyb3dzKG5ldyBSYW5nZUVycm9yKCksICgpID0+IHsKLSAgICAgIG5ldyBSZWFkYWJs
ZVN0cmVhbSh7fSwgewotICAgICAgICBzaXplKCkgewotICAgICAgICAgIHJldHVybiAxOwotICAg
ICAgICB9LAotICAgICAgICBoaWdoV2F0ZXJNYXJrCi0gICAgICB9KTsKLSAgICB9LCAnY29uc3Ry
dWN0aW9uIHNob3VsZCB0aHJvdyBhIFJhbmdlRXJyb3IgZm9yICcgKyBoaWdoV2F0ZXJNYXJrKTsK
LSAgfQotCi19LCAnUmVhZGFibGUgc3RyZWFtOiBpbnZhbGlkIHN0cmF0ZWd5LmhpZ2hXYXRlck1h
cmsnKTsKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLQotICBjb25zdCBwcm9taXNlcyA9IFtdOwot
ICBmb3IgKGNvbnN0IHNpemUgb2YgW05hTiwgLUluZmluaXR5LCBJbmZpbml0eSwgLTFdKSB7Ci0g
ICAgbGV0IHRoZUVycm9yOwotICAgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKAotICAg
ICAgewotICAgICAgICBzdGFydChjKSB7Ci0gICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIGMu
ZW5xdWV1ZSgnaGknKTsKLSAgICAgICAgICAgIGFzc2VydF91bnJlYWNoZWQoJ2VucXVldWUgZGlk
blwndCB0aHJvdycpOwotICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7Ci0gICAgICAgICAgICBh
c3NlcnRfZXF1YWxzKGVycm9yLm5hbWUsICdSYW5nZUVycm9yJywgJ2VucXVldWUgc2hvdWxkIHRo
cm93IGEgUmFuZ2VFcnJvciBmb3IgJyArIHNpemUpOwotICAgICAgICAgICAgdGhlRXJyb3IgPSBl
cnJvcjsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgIH0sCi0gICAgICB7Ci0gICAgICAg
IHNpemUoKSB7Ci0gICAgICAgICAgcmV0dXJuIHNpemU7Ci0gICAgICAgIH0sCi0gICAgICAgIGhp
Z2hXYXRlck1hcms6IDUKLSAgICAgIH0KLSAgICApOwotCi0gICAgcHJvbWlzZXMucHVzaChycy5n
ZXRSZWFkZXIoKS5jbG9zZWQuY2F0Y2goZSA9PiB7Ci0gICAgICBhc3NlcnRfZXF1YWxzKGUsIHRo
ZUVycm9yLCAnY2xvc2VkIHNob3VsZCByZWplY3Qgd2l0aCB0aGUgZXJyb3IgZm9yICcgKyBzaXpl
KTsKLSAgICB9KSk7Ci0gIH0KLQotICByZXR1cm4gUHJvbWlzZS5hbGwocHJvbWlzZXMpOwotCi19
LCAnUmVhZGFibGUgc3RyZWFtOiBpbnZhbGlkIHN0cmF0ZWd5LnNpemUgcmV0dXJuIHZhbHVlJyk7
Ci0KLWRvbmUoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2JhZC1zdHJhdGVnaWVzLnNlcnZp
Y2V3b3JrZXIuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvYmFkLXN0cmF0ZWdpZXMu
c2VydmljZXdvcmtlci5odHRwcy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGIwMGIyYjE3OGQ4MWNjZTAzZTM5OWMyMTU5MmRmNjRlYzc4OTRiYzMuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvYmFkLXN0
cmF0ZWdpZXMuc2VydmljZXdvcmtlci5odHRwcy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApA
QCAtMSwxMCArMCwwIEBACi0KLVBBU1MgU2VydmljZSB3b3JrZXIgdGVzdCBzZXR1cCAKLVBBU1Mg
UmVhZGFibGUgc3RyZWFtOiB0aHJvd2luZyBzdHJhdGVneS5zaXplIGdldHRlciAKLVBBU1MgUmVh
ZGFibGUgc3RyZWFtOiBzdHJhdGVneS5zaXplIGVycm9ycyB0aGUgc3RyZWFtIGFuZCB0aGVuIHRo
cm93cyAKLVBBU1MgUmVhZGFibGUgc3RyZWFtOiBzdHJhdGVneS5zaXplIGVycm9ycyB0aGUgc3Ry
ZWFtIGFuZCB0aGVuIHJldHVybnMgSW5maW5pdHkgCi1QQVNTIFJlYWRhYmxlIHN0cmVhbTogdGhy
b3dpbmcgc3RyYXRlZ3kuc2l6ZSBtZXRob2QgCi1QQVNTIFJlYWRhYmxlIHN0cmVhbTogdGhyb3dp
bmcgc3RyYXRlZ3kuaGlnaFdhdGVyTWFyayBnZXR0ZXIgCi1QQVNTIFJlYWRhYmxlIHN0cmVhbTog
aW52YWxpZCBzdHJhdGVneS5oaWdoV2F0ZXJNYXJrIAotUEFTUyBSZWFkYWJsZSBzdHJlYW06IGlu
dmFsaWQgc3RyYXRlZ3kuc2l6ZSByZXR1cm4gdmFsdWUgCi0KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJl
YW1zL2JhZC1zdHJhdGVnaWVzLnNlcnZpY2V3b3JrZXIuaHR0cHMuaHRtbCBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1z
L2JhZC1zdHJhdGVnaWVzLnNlcnZpY2V3b3JrZXIuaHR0cHMuaHRtbApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggOWFhM2E0YWNkNDc5NzIwYzVjYWU1NzM5ZDIzZDI3MmE5NTc4NTBkMC4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFt
cy9iYWQtc3RyYXRlZ2llcy5zZXJ2aWNld29ya2VyLmh0dHBzLmh0bWwKKysrIC9kZXYvbnVsbApA
QCAtMSwxMiArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4K
LTx0aXRsZT5iYWQtc3RyYXRlZ2llcy5qcyBzZXJ2aWNlIHdvcmtlciB3cmFwcGVyIGZpbGU8L3Rp
dGxlPgotCi08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+
Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+
Ci08c2NyaXB0IHNyYz0iL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9yZXNvdXJjZXMv
dGVzdC1oZWxwZXJzLnN1Yi5qcyI+PC9zY3JpcHQ+Ci0KLTxzY3JpcHQ+Ci0ndXNlIHN0cmljdCc7
Ci1zZXJ2aWNlX3dvcmtlcl90ZXN0KCdiYWQtc3RyYXRlZ2llcy5qcycsICdTZXJ2aWNlIHdvcmtl
ciB0ZXN0IHNldHVwJyk7Ci08L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2JhZC1z
dHJhdGVnaWVzLnNoYXJlZHdvcmtlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9iYWQtc3Ry
YXRlZ2llcy5zaGFyZWR3b3JrZXItZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwOWQ1ZDI1MDlkNzg0N2U4Y2Q2ZmU2NjA2YWE2MGNkZDMzYWE0NzRlLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2JhZC1z
dHJhdGVnaWVzLnNoYXJlZHdvcmtlci1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw1
ICswLDAgQEAKLUNPTlNPTEUgTUVTU0FHRTogUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFy
aWFibGU6IFNoYXJlZFdvcmtlcgotCi1IYXJuZXNzIEVycm9yIChGQUlMKSwgbWVzc2FnZSA9IFJl
ZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBTaGFyZWRXb3JrZXIKLQotCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvcmVhZGFibGUtc3RyZWFtcy9iYWQtc3RyYXRlZ2llcy5zaGFyZWR3b3JrZXIuaHRtbCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJs
ZS1zdHJlYW1zL2JhZC1zdHJhdGVnaWVzLnNoYXJlZHdvcmtlci5odG1sCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA3ODY5NDc3NmUzZWU1ZjllMmU3MjI2NzM0ZmJjNDliZTcwMGViMjAy
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJl
YW1zL2JhZC1zdHJhdGVnaWVzLnNoYXJlZHdvcmtlci5odG1sCisrKyAvZGV2L251bGwKQEAgLTEs
MTEgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08dGl0
bGU+YmFkLXN0cmF0ZWdpZXMuanMgc2hhcmVkIHdvcmtlciB3cmFwcGVyIGZpbGU8L3RpdGxlPgot
Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2Ny
aXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci0KLTxz
Y3JpcHQ+Ci0ndXNlIHN0cmljdCc7Ci1mZXRjaF90ZXN0c19mcm9tX3dvcmtlcihuZXcgU2hhcmVk
V29ya2VyKCdiYWQtc3RyYXRlZ2llcy5qcycpKTsKLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxl
LXN0cmVhbXMvYmFkLXVuZGVybHlpbmctc291cmNlcy5hbnktZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0
cmVhbXMvYmFkLXVuZGVybHlpbmctc291cmNlcy5hbnktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmZmYWFhOGY0ZWRiMTY3MjE0MDBhNzk5M2E5YTlkOTAyNWJjMDUwZWMKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
cmVhZGFibGUtc3RyZWFtcy9iYWQtdW5kZXJseWluZy1zb3VyY2VzLmFueS1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwyNCBAQAorCitQQVNTIFVuZGVybHlpbmcgc291cmNlIHN0YXJ0OiB0aHJvd2lu
ZyBnZXR0ZXIgCitQQVNTIFVuZGVybHlpbmcgc291cmNlIHN0YXJ0OiB0aHJvd2luZyBtZXRob2Qg
CitQQVNTIFVuZGVybHlpbmcgc291cmNlOiB0aHJvd2luZyBwdWxsIGdldHRlciAoaW5pdGlhbCBw
dWxsKSAKK1BBU1MgVW5kZXJseWluZyBzb3VyY2U6IHRocm93aW5nIHB1bGwgbWV0aG9kIChpbml0
aWFsIHB1bGwpIAorUEFTUyBVbmRlcmx5aW5nIHNvdXJjZSBwdWxsOiB0aHJvd2luZyBnZXR0ZXIg
KHNlY29uZCBwdWxsIGRvZXMgbm90IHJlc3VsdCBpbiBhIHNlY29uZCBnZXQpIAorUEFTUyBVbmRl
cmx5aW5nIHNvdXJjZSBwdWxsOiB0aHJvd2luZyBtZXRob2QgKHNlY29uZCBwdWxsKSAKK1BBU1Mg
VW5kZXJseWluZyBzb3VyY2UgY2FuY2VsOiB0aHJvd2luZyBnZXR0ZXIgCitQQVNTIFVuZGVybHlp
bmcgc291cmNlIGNhbmNlbDogdGhyb3dpbmcgbWV0aG9kIAorUEFTUyBVbmRlcmx5aW5nIHNvdXJj
ZTogY2FsbGluZyBlbnF1ZXVlIG9uIGFuIGVtcHR5IGNhbmNlbGVkIHN0cmVhbSBzaG91bGQgdGhy
b3cgCitQQVNTIFVuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGVucXVldWUgb24gYSBub24tZW1w
dHkgY2FuY2VsZWQgc3RyZWFtIHNob3VsZCB0aHJvdyAKK1BBU1MgVW5kZXJseWluZyBzb3VyY2U6
IGNhbGxpbmcgZW5xdWV1ZSBvbiBhIGNsb3NlZCBzdHJlYW0gc2hvdWxkIHRocm93IAorUEFTUyBV
bmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBlbnF1ZXVlIG9uIGFuIGVycm9yZWQgc3RyZWFtIHNo
b3VsZCB0aHJvdyAKK1BBU1MgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgY2xvc2UgdHdpY2Ug
b24gYW4gZW1wdHkgc3RyZWFtIHNob3VsZCB0aHJvdyB0aGUgc2Vjb25kIHRpbWUgCitQQVNTIFVu
ZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGNsb3NlIHR3aWNlIG9uIGEgbm9uLWVtcHR5IHN0cmVh
bSBzaG91bGQgdGhyb3cgdGhlIHNlY29uZCB0aW1lIAorUEFTUyBVbmRlcmx5aW5nIHNvdXJjZTog
Y2FsbGluZyBjbG9zZSBvbiBhbiBlbXB0eSBjYW5jZWxlZCBzdHJlYW0gc2hvdWxkIHRocm93IAor
UEFTUyBVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBjbG9zZSBvbiBhIG5vbi1lbXB0eSBjYW5j
ZWxlZCBzdHJlYW0gc2hvdWxkIHRocm93IAorUEFTUyBVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGlu
ZyBjbG9zZSBhZnRlciBlcnJvciBzaG91bGQgdGhyb3cgCitQQVNTIFVuZGVybHlpbmcgc291cmNl
OiBjYWxsaW5nIGVycm9yIHR3aWNlIHNob3VsZCBub3QgdGhyb3cgCitQQVNTIFVuZGVybHlpbmcg
c291cmNlOiBjYWxsaW5nIGVycm9yIGFmdGVyIGNsb3NlIHNob3VsZCBub3QgdGhyb3cgCitQQVNT
IFVuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGVycm9yIGFuZCByZXR1cm5pbmcgYSByZWplY3Rl
ZCBwcm9taXNlIGZyb20gc3RhcnQgc2hvdWxkIGNhdXNlIHRoZSBzdHJlYW0gdG8gZXJyb3Igd2l0
aCB0aGUgZmlyc3QgZXJyb3IgCitQQVNTIFVuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGVycm9y
IGFuZCByZXR1cm5pbmcgYSByZWplY3RlZCBwcm9taXNlIGZyb20gcHVsbCBzaG91bGQgY2F1c2Ug
dGhlIHN0cmVhbSB0byBlcnJvciB3aXRoIHRoZSBmaXJzdCBlcnJvciAKK1BBU1MgcmVhZCBzaG91
bGQgbm90IGVycm9yIGlmIGl0IGRlcXVldWVzIGFuZCBwdWxsKCkgdGhyb3dzIAorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
cmVhZGFibGUtc3RyZWFtcy9iYWQtdW5kZXJseWluZy1zb3VyY2VzLmFueS5odG1sIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0
cmVhbXMvYmFkLXVuZGVybHlpbmctc291cmNlcy5hbnkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMzgyOTEz
NTI4ZTY5M2IzYTVkNTZjNjYwYTQ1MDYwOTgwYjU0OGMzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxl
LXN0cmVhbXMvYmFkLXVuZGVybHlpbmctc291cmNlcy5hbnkuaHRtbApAQCAtMCwwICsxIEBACis8
IS0tIFRoaXMgZmlsZSBpcyByZXF1aXJlZCBmb3IgV2ViS2l0IHRlc3QgaW5mcmFzdHJ1Y3R1cmUg
dG8gcnVuIHRoZSB0ZW1wbGF0ZWQgdGVzdCAtLT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9iYWQtdW5kZXJseWluZy1zb3VyY2VzLmFueS5qcyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFk
YWJsZS1zdHJlYW1zL2JhZC11bmRlcmx5aW5nLXNvdXJjZXMuYW55LmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZm
NTkxOTdhNDliMThiZGNjMDQ3ODM0Y2IxYjJjNDViZjc0Mzc5MGEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVh
ZGFibGUtc3RyZWFtcy9iYWQtdW5kZXJseWluZy1zb3VyY2VzLmFueS5qcwpAQCAtMCwwICsxLDQw
MCBAQAorLy8gTUVUQTogZ2xvYmFsPXdpbmRvdyx3b3JrZXIsanNzaGVsbAorJ3VzZSBzdHJpY3Qn
OworCisKK3Rlc3QoKCkgPT4geworCisgIGNvbnN0IHRoZUVycm9yID0gbmV3IEVycm9yKCdhIHVu
aXF1ZSBzdHJpbmcnKTsKKworICBhc3NlcnRfdGhyb3dzX2V4YWN0bHkodGhlRXJyb3IsICgpID0+
IHsKKyAgICBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgICAgZ2V0IHN0YXJ0KCkgeworICAgICAg
ICB0aHJvdyB0aGVFcnJvcjsKKyAgICAgIH0KKyAgICB9KTsKKyAgfSwgJ2NvbnN0cnVjdGluZyB0
aGUgc3RyZWFtIHNob3VsZCByZS10aHJvdyB0aGUgZXJyb3InKTsKKworfSwgJ1VuZGVybHlpbmcg
c291cmNlIHN0YXJ0OiB0aHJvd2luZyBnZXR0ZXInKTsKKworCit0ZXN0KCgpID0+IHsKKworICBj
b25zdCB0aGVFcnJvciA9IG5ldyBFcnJvcignYSB1bmlxdWUgc3RyaW5nJyk7CisKKyAgYXNzZXJ0
X3Rocm93c19leGFjdGx5KHRoZUVycm9yLCAoKSA9PiB7CisgICAgbmV3IFJlYWRhYmxlU3RyZWFt
KHsKKyAgICAgIHN0YXJ0KCkgeworICAgICAgICB0aHJvdyB0aGVFcnJvcjsKKyAgICAgIH0KKyAg
ICB9KTsKKyAgfSwgJ2NvbnN0cnVjdGluZyB0aGUgc3RyZWFtIHNob3VsZCByZS10aHJvdyB0aGUg
ZXJyb3InKTsKKworfSwgJ1VuZGVybHlpbmcgc291cmNlIHN0YXJ0OiB0aHJvd2luZyBtZXRob2Qn
KTsKKworCit0ZXN0KCgpID0+IHsKKworICBjb25zdCB0aGVFcnJvciA9IG5ldyBFcnJvcignYSB1
bmlxdWUgc3RyaW5nJyk7CisgIGFzc2VydF90aHJvd3NfZXhhY3RseSh0aGVFcnJvciwgKCkgPT4g
bmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBnZXQgcHVsbCgpIHsKKyAgICAgIHRocm93IHRoZUVy
cm9yOworICAgIH0KKyAgfSksICdjb25zdHJ1Y3RvciBzaG91bGQgdGhyb3cnKTsKKworfSwgJ1Vu
ZGVybHlpbmcgc291cmNlOiB0aHJvd2luZyBwdWxsIGdldHRlciAoaW5pdGlhbCBwdWxsKScpOwor
CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKworICBjb25zdCB0aGVFcnJvciA9IG5ldyBFcnJvcign
YSB1bmlxdWUgc3RyaW5nJyk7CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAg
ICBwdWxsKCkgeworICAgICAgdGhyb3cgdGhlRXJyb3I7CisgICAgfQorICB9KTsKKworICByZXR1
cm4gcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgdGhlRXJyb3IsIHJzLmdldFJlYWRlcigpLmNs
b3NlZCk7CisKK30sICdVbmRlcmx5aW5nIHNvdXJjZTogdGhyb3dpbmcgcHVsbCBtZXRob2QgKGlu
aXRpYWwgcHVsbCknKTsKKworCitwcm9taXNlX3Rlc3QodCA9PiB7CisKKyAgY29uc3QgdGhlRXJy
b3IgPSBuZXcgRXJyb3IoJ2EgdW5pcXVlIHN0cmluZycpOworCisgIGxldCBjb3VudGVyID0gMDsK
KyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIGdldCBwdWxsKCkgeworICAg
ICAgKytjb3VudGVyOworICAgICAgaWYgKGNvdW50ZXIgPT09IDEpIHsKKyAgICAgICAgcmV0dXJu
IGMgPT4gYy5lbnF1ZXVlKCdhJyk7CisgICAgICB9CisKKyAgICAgIHRocm93IHRoZUVycm9yOwor
ICAgIH0KKyAgfSk7CisgIGNvbnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcigpOworCisgIHJldHVy
biBQcm9taXNlLmFsbChbCisgICAgcmVhZGVyLnJlYWQoKS50aGVuKHIgPT4geworICAgICAgYXNz
ZXJ0X29iamVjdF9lcXVhbHMociwgeyB2YWx1ZTogJ2EnLCBkb25lOiBmYWxzZSB9LCAndGhlIGZp
cnN0IGNodW5rIHJlYWQgc2hvdWxkIGJlIGNvcnJlY3QnKTsKKyAgICB9KSwKKyAgICByZWFkZXIu
cmVhZCgpLnRoZW4ociA9PiB7CisgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyLCB7IHZhbHVl
OiAnYScsIGRvbmU6IGZhbHNlIH0sICd0aGUgc2Vjb25kIGNodW5rIHJlYWQgc2hvdWxkIGJlIGNv
cnJlY3QnKTsKKyAgICAgIGFzc2VydF9lcXVhbHMoY291bnRlciwgMSwgJ2NvdW50ZXIgc2hvdWxk
IGJlIDEnKTsKKyAgICB9KQorICBdKTsKKworfSwgJ1VuZGVybHlpbmcgc291cmNlIHB1bGw6IHRo
cm93aW5nIGdldHRlciAoc2Vjb25kIHB1bGwgZG9lcyBub3QgcmVzdWx0IGluIGEgc2Vjb25kIGdl
dCknKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworCisgIGNvbnN0IHRoZUVycm9yID0gbmV3IEVy
cm9yKCdhIHVuaXF1ZSBzdHJpbmcnKTsKKworICBsZXQgY291bnRlciA9IDA7CisgIGNvbnN0IHJz
ID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBwdWxsKGMpIHsKKyAgICAgICsrY291bnRlcjsK
KyAgICAgIGlmIChjb3VudGVyID09PSAxKSB7CisgICAgICAgIGMuZW5xdWV1ZSgnYScpOworICAg
ICAgICByZXR1cm47CisgICAgICB9CisKKyAgICAgIHRocm93IHRoZUVycm9yOworICAgIH0KKyAg
fSk7CisgIGNvbnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcigpOworCisgIHJldHVybiBQcm9taXNl
LmFsbChbCisgICAgcmVhZGVyLnJlYWQoKS50aGVuKHIgPT4geworICAgICAgYXNzZXJ0X29iamVj
dF9lcXVhbHMociwgeyB2YWx1ZTogJ2EnLCBkb25lOiBmYWxzZSB9LCAndGhlIGNodW5rIHJlYWQg
c2hvdWxkIGJlIGNvcnJlY3QnKTsKKyAgICB9KSwKKyAgICBwcm9taXNlX3JlamVjdHNfZXhhY3Rs
eSh0LCB0aGVFcnJvciwgcmVhZGVyLmNsb3NlZCkKKyAgXSk7CisKK30sICdVbmRlcmx5aW5nIHNv
dXJjZSBwdWxsOiB0aHJvd2luZyBtZXRob2QgKHNlY29uZCBwdWxsKScpOworCit0ZXN0KCgpID0+
IHsKKworICBjb25zdCB0aGVFcnJvciA9IG5ldyBFcnJvcignYSB1bmlxdWUgc3RyaW5nJyk7Cisg
IGFzc2VydF90aHJvd3NfZXhhY3RseSh0aGVFcnJvciwgKCkgPT4gbmV3IFJlYWRhYmxlU3RyZWFt
KHsKKyAgICBnZXQgY2FuY2VsKCkgeworICAgICAgdGhyb3cgdGhlRXJyb3I7CisgICAgfQorICB9
KSwgJ2NvbnN0cnVjdG9yIHNob3VsZCB0aHJvdycpOworCit9LCAnVW5kZXJseWluZyBzb3VyY2Ug
Y2FuY2VsOiB0aHJvd2luZyBnZXR0ZXInKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworCisgIGNv
bnN0IHRoZUVycm9yID0gbmV3IEVycm9yKCdhIHVuaXF1ZSBzdHJpbmcnKTsKKyAgY29uc3QgcnMg
PSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIGNhbmNlbCgpIHsKKyAgICAgIHRocm93IHRoZUVy
cm9yOworICAgIH0KKyAgfSk7CisKKyAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQs
IHRoZUVycm9yLCBycy5jYW5jZWwoKSk7CisKK30sICdVbmRlcmx5aW5nIHNvdXJjZSBjYW5jZWw6
IHRocm93aW5nIG1ldGhvZCcpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworCisgIGxldCBjb250
cm9sbGVyOworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykg
eworICAgICAgY29udHJvbGxlciA9IGM7CisgICAgfQorICB9KTsKKworICBycy5jYW5jZWwoKTsK
KyAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IGNvbnRyb2xsZXIuZW5xdWV1ZSgn
YScpLCAnQ2FsbGluZyBlbnF1ZXVlIGFmdGVyIGNhbmNlbGluZyBzaG91bGQgdGhyb3cnKTsKKwor
ICByZXR1cm4gcnMuZ2V0UmVhZGVyKCkuY2xvc2VkOworCit9LCAnVW5kZXJseWluZyBzb3VyY2U6
IGNhbGxpbmcgZW5xdWV1ZSBvbiBhbiBlbXB0eSBjYW5jZWxlZCBzdHJlYW0gc2hvdWxkIHRocm93
Jyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisKKyAgbGV0IGNvbnRyb2xsZXI7CisgIGNvbnN0
IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjLmVucXVl
dWUoJ2EnKTsKKyAgICAgIGMuZW5xdWV1ZSgnYicpOworICAgICAgY29udHJvbGxlciA9IGM7Cisg
ICAgfQorICB9KTsKKworICBycy5jYW5jZWwoKTsKKyAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJy
b3IsICgpID0+IGNvbnRyb2xsZXIuZW5xdWV1ZSgnYycpLCAnQ2FsbGluZyBlbnF1ZXVlIGFmdGVy
IGNhbmNlbGluZyBzaG91bGQgdGhyb3cnKTsKKworICByZXR1cm4gcnMuZ2V0UmVhZGVyKCkuY2xv
c2VkOworCit9LCAnVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgZW5xdWV1ZSBvbiBhIG5vbi1l
bXB0eSBjYW5jZWxlZCBzdHJlYW0gc2hvdWxkIHRocm93Jyk7CisKK3Byb21pc2VfdGVzdCgoKSA9
PiB7CisKKyAgcmV0dXJuIG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAg
ICAgYy5jbG9zZSgpOworICAgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IGMu
ZW5xdWV1ZSgnYScpLCAnY2FsbCB0byBlbnF1ZXVlIHNob3VsZCB0aHJvdyBhIFR5cGVFcnJvcicp
OworICAgIH0KKyAgfSkuZ2V0UmVhZGVyKCkuY2xvc2VkOworCit9LCAnVW5kZXJseWluZyBzb3Vy
Y2U6IGNhbGxpbmcgZW5xdWV1ZSBvbiBhIGNsb3NlZCBzdHJlYW0gc2hvdWxkIHRocm93Jyk7CisK
K3Byb21pc2VfdGVzdCh0ID0+IHsKKworICBjb25zdCB0aGVFcnJvciA9IG5ldyBFcnJvcignYm9v
Jyk7CisgIGNvbnN0IGNsb3NlZCA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykg
eworICAgICAgYy5lcnJvcih0aGVFcnJvcik7CisgICAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVF
cnJvciwgKCkgPT4gYy5lbnF1ZXVlKCdhJyksICdjYWxsIHRvIGVucXVldWUgc2hvdWxkIHRocm93
IHRoZSBlcnJvcicpOworICAgIH0KKyAgfSkuZ2V0UmVhZGVyKCkuY2xvc2VkOworCisgIHJldHVy
biBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCB0aGVFcnJvciwgY2xvc2VkKTsKKworfSwgJ1Vu
ZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGVucXVldWUgb24gYW4gZXJyb3JlZCBzdHJlYW0gc2hv
dWxkIHRocm93Jyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisKKyAgcmV0dXJuIG5ldyBSZWFk
YWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgYy5jbG9zZSgpOworICAgICAgYXNz
ZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IGMuY2xvc2UoKSwgJ3NlY29uZCBjYWxsIHRv
IGNsb3NlIHNob3VsZCB0aHJvdyBhIFR5cGVFcnJvcicpOworICAgIH0KKyAgfSkuZ2V0UmVhZGVy
KCkuY2xvc2VkOworCit9LCAnVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgY2xvc2UgdHdpY2Ug
b24gYW4gZW1wdHkgc3RyZWFtIHNob3VsZCB0aHJvdyB0aGUgc2Vjb25kIHRpbWUnKTsKKworcHJv
bWlzZV90ZXN0KCgpID0+IHsKKworICBsZXQgc3RhcnRDYWxsZWQgPSBmYWxzZTsKKyAgbGV0IHJl
YWRDYWxsZWQgPSBmYWxzZTsKKyAgY29uc3QgcmVhZGVyID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsK
KyAgICBzdGFydChjKSB7CisgICAgICBjLmVucXVldWUoJ2EnKTsKKyAgICAgIGMuY2xvc2UoKTsK
KyAgICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiBjLmNsb3NlKCksICdzZWNv
bmQgY2FsbCB0byBjbG9zZSBzaG91bGQgdGhyb3cgYSBUeXBlRXJyb3InKTsKKyAgICAgIHN0YXJ0
Q2FsbGVkID0gdHJ1ZTsKKyAgICB9CisgIH0pLmdldFJlYWRlcigpOworCisgIHJldHVybiBQcm9t
aXNlLmFsbChbCisgICAgcmVhZGVyLnJlYWQoKS50aGVuKHIgPT4geworICAgICAgYXNzZXJ0X29i
amVjdF9lcXVhbHMociwgeyB2YWx1ZTogJ2EnLCBkb25lOiBmYWxzZSB9LCAncmVhZCgpIHNob3Vs
ZCByZWFkIHRoZSBlbnF1ZXVlZCBjaHVuaycpOworICAgICAgcmVhZENhbGxlZCA9IHRydWU7Cisg
ICAgfSksCisgICAgcmVhZGVyLmNsb3NlZC50aGVuKCgpID0+IHsKKyAgICAgIGFzc2VydF90cnVl
KHN0YXJ0Q2FsbGVkKTsKKyAgICAgIGFzc2VydF90cnVlKHJlYWRDYWxsZWQpOworICAgIH0pCisg
IF0pOworCit9LCAnVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgY2xvc2UgdHdpY2Ugb24gYSBu
b24tZW1wdHkgc3RyZWFtIHNob3VsZCB0aHJvdyB0aGUgc2Vjb25kIHRpbWUnKTsKKworcHJvbWlz
ZV90ZXN0KCgpID0+IHsKKworICBsZXQgY29udHJvbGxlcjsKKyAgbGV0IHN0YXJ0Q2FsbGVkID0g
ZmFsc2U7CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7
CisgICAgICBjb250cm9sbGVyID0gYzsKKyAgICAgIHN0YXJ0Q2FsbGVkID0gdHJ1ZTsKKyAgICB9
CisgIH0pOworCisgIHJzLmNhbmNlbCgpOworICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwg
KCkgPT4gY29udHJvbGxlci5jbG9zZSgpLCAnQ2FsbGluZyBjbG9zZSBhZnRlciBjYW5jZWxpbmcg
c2hvdWxkIHRocm93Jyk7CisKKyAgcmV0dXJuIHJzLmdldFJlYWRlcigpLmNsb3NlZC50aGVuKCgp
ID0+IHsKKyAgICBhc3NlcnRfdHJ1ZShzdGFydENhbGxlZCk7CisgIH0pOworCit9LCAnVW5kZXJs
eWluZyBzb3VyY2U6IGNhbGxpbmcgY2xvc2Ugb24gYW4gZW1wdHkgY2FuY2VsZWQgc3RyZWFtIHNo
b3VsZCB0aHJvdycpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworCisgIGxldCBjb250cm9sbGVy
OworICBsZXQgc3RhcnRDYWxsZWQgPSBmYWxzZTsKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVT
dHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGNvbnRyb2xsZXIgPSBjOworICAgICAgYy5l
bnF1ZXVlKCdhJyk7CisgICAgICBzdGFydENhbGxlZCA9IHRydWU7CisgICAgfQorICB9KTsKKwor
ICBycy5jYW5jZWwoKTsKKyAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IGNvbnRy
b2xsZXIuY2xvc2UoKSwgJ0NhbGxpbmcgY2xvc2UgYWZ0ZXIgY2FuY2VsaW5nIHNob3VsZCB0aHJv
dycpOworCisgIHJldHVybiBycy5nZXRSZWFkZXIoKS5jbG9zZWQudGhlbigoKSA9PiB7CisgICAg
YXNzZXJ0X3RydWUoc3RhcnRDYWxsZWQpOworICB9KTsKKworfSwgJ1VuZGVybHlpbmcgc291cmNl
OiBjYWxsaW5nIGNsb3NlIG9uIGEgbm9uLWVtcHR5IGNhbmNlbGVkIHN0cmVhbSBzaG91bGQgdGhy
b3cnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKworICBjb25zdCB0aGVFcnJvciA9IG5ldyBF
cnJvcignYm9vJyk7CisgIGxldCBzdGFydENhbGxlZCA9IGZhbHNlOworCisgIGNvbnN0IGNsb3Nl
ZCA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgYy5lcnJvcih0
aGVFcnJvcik7CisgICAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4gYy5jbG9z
ZSgpLCAnY2FsbCB0byBjbG9zZSBzaG91bGQgdGhyb3cgYSBUeXBlRXJyb3InKTsKKyAgICAgIHN0
YXJ0Q2FsbGVkID0gdHJ1ZTsKKyAgICB9CisgIH0pLmdldFJlYWRlcigpLmNsb3NlZDsKKworICBy
ZXR1cm4gY2xvc2VkLmNhdGNoKGUgPT4geworICAgIGFzc2VydF90cnVlKHN0YXJ0Q2FsbGVkKTsK
KyAgICBhc3NlcnRfZXF1YWxzKGUsIHRoZUVycm9yLCAnY2xvc2VkIHNob3VsZCByZWplY3Qgd2l0
aCB0aGUgZXJyb3InKTsKKyAgfSk7CisKK30sICdVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBj
bG9zZSBhZnRlciBlcnJvciBzaG91bGQgdGhyb3cnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsK
KworICBjb25zdCB0aGVFcnJvciA9IG5ldyBFcnJvcignYm9vJyk7CisgIGxldCBzdGFydENhbGxl
ZCA9IGZhbHNlOworCisgIGNvbnN0IGNsb3NlZCA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAg
c3RhcnQoYykgeworICAgICAgYy5lcnJvcih0aGVFcnJvcik7CisgICAgICBjLmVycm9yKCk7Cisg
ICAgICBzdGFydENhbGxlZCA9IHRydWU7CisgICAgfQorICB9KS5nZXRSZWFkZXIoKS5jbG9zZWQ7
CisKKyAgcmV0dXJuIGNsb3NlZC5jYXRjaChlID0+IHsKKyAgICBhc3NlcnRfdHJ1ZShzdGFydENh
bGxlZCk7CisgICAgYXNzZXJ0X2VxdWFscyhlLCB0aGVFcnJvciwgJ2Nsb3NlZCBzaG91bGQgcmVq
ZWN0IHdpdGggdGhlIGVycm9yJyk7CisgIH0pOworCit9LCAnVW5kZXJseWluZyBzb3VyY2U6IGNh
bGxpbmcgZXJyb3IgdHdpY2Ugc2hvdWxkIG5vdCB0aHJvdycpOworCitwcm9taXNlX3Rlc3QoKCkg
PT4geworCisgIGxldCBzdGFydENhbGxlZCA9IGZhbHNlOworCisgIGNvbnN0IGNsb3NlZCA9IG5l
dyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgYy5jbG9zZSgpOworICAg
ICAgYy5lcnJvcigpOworICAgICAgc3RhcnRDYWxsZWQgPSB0cnVlOworICAgIH0KKyAgfSkuZ2V0
UmVhZGVyKCkuY2xvc2VkOworCisgIHJldHVybiBjbG9zZWQudGhlbigoKSA9PiBhc3NlcnRfdHJ1
ZShzdGFydENhbGxlZCkpOworCit9LCAnVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgZXJyb3Ig
YWZ0ZXIgY2xvc2Ugc2hvdWxkIG5vdCB0aHJvdycpOworCitwcm9taXNlX3Rlc3QoKCkgPT4gewor
CisgIGxldCBzdGFydENhbGxlZCA9IGZhbHNlOworICBjb25zdCBmaXJzdEVycm9yID0gbmV3IEVy
cm9yKCcxJyk7CisgIGNvbnN0IHNlY29uZEVycm9yID0gbmV3IEVycm9yKCcyJyk7CisKKyAgY29u
c3QgY2xvc2VkID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBj
LmVycm9yKGZpcnN0RXJyb3IpOworICAgICAgc3RhcnRDYWxsZWQgPSB0cnVlOworICAgICAgcmV0
dXJuIFByb21pc2UucmVqZWN0KHNlY29uZEVycm9yKTsKKyAgICB9CisgIH0pLmdldFJlYWRlcigp
LmNsb3NlZDsKKworICByZXR1cm4gY2xvc2VkLmNhdGNoKGUgPT4geworICAgIGFzc2VydF90cnVl
KHN0YXJ0Q2FsbGVkKTsKKyAgICBhc3NlcnRfZXF1YWxzKGUsIGZpcnN0RXJyb3IsICdjbG9zZWQg
c2hvdWxkIHJlamVjdCB3aXRoIHRoZSBmaXJzdCBlcnJvcicpOworICB9KTsKKworfSwgJ1VuZGVy
bHlpbmcgc291cmNlOiBjYWxsaW5nIGVycm9yIGFuZCByZXR1cm5pbmcgYSByZWplY3RlZCBwcm9t
aXNlIGZyb20gc3RhcnQgc2hvdWxkIGNhdXNlIHRoZSBzdHJlYW0gdG8gZXJyb3IgJyArCisgICAn
d2l0aCB0aGUgZmlyc3QgZXJyb3InKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKworICBsZXQg
c3RhcnRDYWxsZWQgPSBmYWxzZTsKKyAgY29uc3QgZmlyc3RFcnJvciA9IG5ldyBFcnJvcignMScp
OworICBjb25zdCBzZWNvbmRFcnJvciA9IG5ldyBFcnJvcignMicpOworCisgIGNvbnN0IGNsb3Nl
ZCA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgcHVsbChjKSB7CisgICAgICBjLmVycm9yKGZp
cnN0RXJyb3IpOworICAgICAgc3RhcnRDYWxsZWQgPSB0cnVlOworICAgICAgcmV0dXJuIFByb21p
c2UucmVqZWN0KHNlY29uZEVycm9yKTsKKyAgICB9CisgIH0pLmdldFJlYWRlcigpLmNsb3NlZDsK
KworICByZXR1cm4gY2xvc2VkLmNhdGNoKGUgPT4geworICAgIGFzc2VydF90cnVlKHN0YXJ0Q2Fs
bGVkKTsKKyAgICBhc3NlcnRfZXF1YWxzKGUsIGZpcnN0RXJyb3IsICdjbG9zZWQgc2hvdWxkIHJl
amVjdCB3aXRoIHRoZSBmaXJzdCBlcnJvcicpOworICB9KTsKKworfSwgJ1VuZGVybHlpbmcgc291
cmNlOiBjYWxsaW5nIGVycm9yIGFuZCByZXR1cm5pbmcgYSByZWplY3RlZCBwcm9taXNlIGZyb20g
cHVsbCBzaG91bGQgY2F1c2UgdGhlIHN0cmVhbSB0byBlcnJvciAnICsKKyAgICd3aXRoIHRoZSBm
aXJzdCBlcnJvcicpOworCitjb25zdCBlcnJvcjEgPSB7IG5hbWU6ICdlcnJvcjEnIH07CisKK3By
b21pc2VfdGVzdCh0ID0+IHsKKworICBsZXQgcHVsbFNob3VsZFRocm93ID0gZmFsc2U7CisgIGNv
bnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBwdWxsKGNvbnRyb2xsZXIpIHsKKyAg
ICAgIGlmIChwdWxsU2hvdWxkVGhyb3cpIHsKKyAgICAgICAgdGhyb3cgZXJyb3IxOworICAgICAg
fQorICAgICAgY29udHJvbGxlci5lbnF1ZXVlKDApOworICAgIH0KKyAgfSwgbmV3IENvdW50UXVl
dWluZ1N0cmF0ZWd5KHtoaWdoV2F0ZXJNYXJrOiAxfSkpOworICBjb25zdCByZWFkZXIgPSBycy5n
ZXRSZWFkZXIoKTsKKyAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCkgPT4geworICAg
IHB1bGxTaG91bGRUaHJvdyA9IHRydWU7CisgICAgcmV0dXJuIFByb21pc2UuYWxsKFsKKyAgICAg
IHJlYWRlci5yZWFkKCksCisgICAgICBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEs
IHJlYWRlci5jbG9zZWQsICcuY2xvc2VkIHByb21pc2Ugc2hvdWxkIHJlamVjdCcpCisgICAgXSk7
CisgIH0pOworCit9LCAncmVhZCBzaG91bGQgbm90IGVycm9yIGlmIGl0IGRlcXVldWVzIGFuZCBw
dWxsKCkgdGhyb3dzJyk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9iYWQtdW5kZXJseWluZy1z
b3VyY2VzLmFueS53b3JrZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvYmFkLXVuZGVybHlp
bmctc291cmNlcy5hbnkud29ya2VyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZmFhYThmNGVk
YjE2NzIxNDAwYTc5OTNhOWE5ZDkwMjViYzA1MGVjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0
cmVhbXMvYmFkLXVuZGVybHlpbmctc291cmNlcy5hbnkud29ya2VyLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDI0IEBACisKK1BBU1MgVW5kZXJseWluZyBzb3VyY2Ugc3RhcnQ6IHRocm93aW5nIGdl
dHRlciAKK1BBU1MgVW5kZXJseWluZyBzb3VyY2Ugc3RhcnQ6IHRocm93aW5nIG1ldGhvZCAKK1BB
U1MgVW5kZXJseWluZyBzb3VyY2U6IHRocm93aW5nIHB1bGwgZ2V0dGVyIChpbml0aWFsIHB1bGwp
IAorUEFTUyBVbmRlcmx5aW5nIHNvdXJjZTogdGhyb3dpbmcgcHVsbCBtZXRob2QgKGluaXRpYWwg
cHVsbCkgCitQQVNTIFVuZGVybHlpbmcgc291cmNlIHB1bGw6IHRocm93aW5nIGdldHRlciAoc2Vj
b25kIHB1bGwgZG9lcyBub3QgcmVzdWx0IGluIGEgc2Vjb25kIGdldCkgCitQQVNTIFVuZGVybHlp
bmcgc291cmNlIHB1bGw6IHRocm93aW5nIG1ldGhvZCAoc2Vjb25kIHB1bGwpIAorUEFTUyBVbmRl
cmx5aW5nIHNvdXJjZSBjYW5jZWw6IHRocm93aW5nIGdldHRlciAKK1BBU1MgVW5kZXJseWluZyBz
b3VyY2UgY2FuY2VsOiB0aHJvd2luZyBtZXRob2QgCitQQVNTIFVuZGVybHlpbmcgc291cmNlOiBj
YWxsaW5nIGVucXVldWUgb24gYW4gZW1wdHkgY2FuY2VsZWQgc3RyZWFtIHNob3VsZCB0aHJvdyAK
K1BBU1MgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgZW5xdWV1ZSBvbiBhIG5vbi1lbXB0eSBj
YW5jZWxlZCBzdHJlYW0gc2hvdWxkIHRocm93IAorUEFTUyBVbmRlcmx5aW5nIHNvdXJjZTogY2Fs
bGluZyBlbnF1ZXVlIG9uIGEgY2xvc2VkIHN0cmVhbSBzaG91bGQgdGhyb3cgCitQQVNTIFVuZGVy
bHlpbmcgc291cmNlOiBjYWxsaW5nIGVucXVldWUgb24gYW4gZXJyb3JlZCBzdHJlYW0gc2hvdWxk
IHRocm93IAorUEFTUyBVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBjbG9zZSB0d2ljZSBvbiBh
biBlbXB0eSBzdHJlYW0gc2hvdWxkIHRocm93IHRoZSBzZWNvbmQgdGltZSAKK1BBU1MgVW5kZXJs
eWluZyBzb3VyY2U6IGNhbGxpbmcgY2xvc2UgdHdpY2Ugb24gYSBub24tZW1wdHkgc3RyZWFtIHNo
b3VsZCB0aHJvdyB0aGUgc2Vjb25kIHRpbWUgCitQQVNTIFVuZGVybHlpbmcgc291cmNlOiBjYWxs
aW5nIGNsb3NlIG9uIGFuIGVtcHR5IGNhbmNlbGVkIHN0cmVhbSBzaG91bGQgdGhyb3cgCitQQVNT
IFVuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGNsb3NlIG9uIGEgbm9uLWVtcHR5IGNhbmNlbGVk
IHN0cmVhbSBzaG91bGQgdGhyb3cgCitQQVNTIFVuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGNs
b3NlIGFmdGVyIGVycm9yIHNob3VsZCB0aHJvdyAKK1BBU1MgVW5kZXJseWluZyBzb3VyY2U6IGNh
bGxpbmcgZXJyb3IgdHdpY2Ugc2hvdWxkIG5vdCB0aHJvdyAKK1BBU1MgVW5kZXJseWluZyBzb3Vy
Y2U6IGNhbGxpbmcgZXJyb3IgYWZ0ZXIgY2xvc2Ugc2hvdWxkIG5vdCB0aHJvdyAKK1BBU1MgVW5k
ZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgZXJyb3IgYW5kIHJldHVybmluZyBhIHJlamVjdGVkIHBy
b21pc2UgZnJvbSBzdGFydCBzaG91bGQgY2F1c2UgdGhlIHN0cmVhbSB0byBlcnJvciB3aXRoIHRo
ZSBmaXJzdCBlcnJvciAKK1BBU1MgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgZXJyb3IgYW5k
IHJldHVybmluZyBhIHJlamVjdGVkIHByb21pc2UgZnJvbSBwdWxsIHNob3VsZCBjYXVzZSB0aGUg
c3RyZWFtIHRvIGVycm9yIHdpdGggdGhlIGZpcnN0IGVycm9yIAorUEFTUyByZWFkIHNob3VsZCBu
b3QgZXJyb3IgaWYgaXQgZGVxdWV1ZXMgYW5kIHB1bGwoKSB0aHJvd3MgCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFk
YWJsZS1zdHJlYW1zL2JhZC11bmRlcmx5aW5nLXNvdXJjZXMuYW55Lndvcmtlci5odG1sIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxl
LXN0cmVhbXMvYmFkLXVuZGVybHlpbmctc291cmNlcy5hbnkud29ya2VyLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMjM4MjkxMzUyOGU2OTNiM2E1ZDU2YzY2MGE0NTA2MDk4MGI1NDhjMwotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy9yZWFkYWJsZS1zdHJlYW1zL2JhZC11bmRlcmx5aW5nLXNvdXJjZXMuYW55Lndvcmtlci5odG1s
CkBAIC0wLDAgKzEgQEAKKzwhLS0gVGhpcyBmaWxlIGlzIHJlcXVpcmVkIGZvciBXZWJLaXQgdGVz
dCBpbmZyYXN0cnVjdHVyZSB0byBydW4gdGhlIHRlbXBsYXRlZCB0ZXN0IC0tPgpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2JhZC11bmRlcmx5aW5n
LXNvdXJjZXMuZGVkaWNhdGVkd29ya2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2JhZC11
bmRlcmx5aW5nLXNvdXJjZXMuZGVkaWNhdGVkd29ya2VyLWV4cGVjdGVkLnR4dApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggZmZhYWE4ZjRlZGIxNjcyMTQwMGE3OTkzYTlhOWQ5MDI1YmMw
NTBlYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUt
c3RyZWFtcy9iYWQtdW5kZXJseWluZy1zb3VyY2VzLmRlZGljYXRlZHdvcmtlci1leHBlY3RlZC50
eHQKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi0KLVBBU1MgVW5kZXJseWluZyBzb3Vy
Y2Ugc3RhcnQ6IHRocm93aW5nIGdldHRlciAKLVBBU1MgVW5kZXJseWluZyBzb3VyY2Ugc3RhcnQ6
IHRocm93aW5nIG1ldGhvZCAKLVBBU1MgVW5kZXJseWluZyBzb3VyY2U6IHRocm93aW5nIHB1bGwg
Z2V0dGVyIChpbml0aWFsIHB1bGwpIAotUEFTUyBVbmRlcmx5aW5nIHNvdXJjZTogdGhyb3dpbmcg
cHVsbCBtZXRob2QgKGluaXRpYWwgcHVsbCkgCi1QQVNTIFVuZGVybHlpbmcgc291cmNlIHB1bGw6
IHRocm93aW5nIGdldHRlciAoc2Vjb25kIHB1bGwgZG9lcyBub3QgcmVzdWx0IGluIGEgc2Vjb25k
IGdldCkgCi1QQVNTIFVuZGVybHlpbmcgc291cmNlIHB1bGw6IHRocm93aW5nIG1ldGhvZCAoc2Vj
b25kIHB1bGwpIAotUEFTUyBVbmRlcmx5aW5nIHNvdXJjZSBjYW5jZWw6IHRocm93aW5nIGdldHRl
ciAKLVBBU1MgVW5kZXJseWluZyBzb3VyY2UgY2FuY2VsOiB0aHJvd2luZyBtZXRob2QgCi1QQVNT
IFVuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGVucXVldWUgb24gYW4gZW1wdHkgY2FuY2VsZWQg
c3RyZWFtIHNob3VsZCB0aHJvdyAKLVBBU1MgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgZW5x
dWV1ZSBvbiBhIG5vbi1lbXB0eSBjYW5jZWxlZCBzdHJlYW0gc2hvdWxkIHRocm93IAotUEFTUyBV
bmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBlbnF1ZXVlIG9uIGEgY2xvc2VkIHN0cmVhbSBzaG91
bGQgdGhyb3cgCi1QQVNTIFVuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGVucXVldWUgb24gYW4g
ZXJyb3JlZCBzdHJlYW0gc2hvdWxkIHRocm93IAotUEFTUyBVbmRlcmx5aW5nIHNvdXJjZTogY2Fs
bGluZyBjbG9zZSB0d2ljZSBvbiBhbiBlbXB0eSBzdHJlYW0gc2hvdWxkIHRocm93IHRoZSBzZWNv
bmQgdGltZSAKLVBBU1MgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgY2xvc2UgdHdpY2Ugb24g
YSBub24tZW1wdHkgc3RyZWFtIHNob3VsZCB0aHJvdyB0aGUgc2Vjb25kIHRpbWUgCi1QQVNTIFVu
ZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGNsb3NlIG9uIGFuIGVtcHR5IGNhbmNlbGVkIHN0cmVh
bSBzaG91bGQgdGhyb3cgCi1QQVNTIFVuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGNsb3NlIG9u
IGEgbm9uLWVtcHR5IGNhbmNlbGVkIHN0cmVhbSBzaG91bGQgdGhyb3cgCi1QQVNTIFVuZGVybHlp
bmcgc291cmNlOiBjYWxsaW5nIGNsb3NlIGFmdGVyIGVycm9yIHNob3VsZCB0aHJvdyAKLVBBU1Mg
VW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgZXJyb3IgdHdpY2Ugc2hvdWxkIG5vdCB0aHJvdyAK
LVBBU1MgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgZXJyb3IgYWZ0ZXIgY2xvc2Ugc2hvdWxk
IG5vdCB0aHJvdyAKLVBBU1MgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgZXJyb3IgYW5kIHJl
dHVybmluZyBhIHJlamVjdGVkIHByb21pc2UgZnJvbSBzdGFydCBzaG91bGQgY2F1c2UgdGhlIHN0
cmVhbSB0byBlcnJvciB3aXRoIHRoZSBmaXJzdCBlcnJvciAKLVBBU1MgVW5kZXJseWluZyBzb3Vy
Y2U6IGNhbGxpbmcgZXJyb3IgYW5kIHJldHVybmluZyBhIHJlamVjdGVkIHByb21pc2UgZnJvbSBw
dWxsIHNob3VsZCBjYXVzZSB0aGUgc3RyZWFtIHRvIGVycm9yIHdpdGggdGhlIGZpcnN0IGVycm9y
IAotUEFTUyByZWFkIHNob3VsZCBub3QgZXJyb3IgaWYgaXQgZGVxdWV1ZXMgYW5kIHB1bGwoKSB0
aHJvd3MgCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2JhZC11bmRlcmx5aW5nLXNvdXJjZXMu
ZGVkaWNhdGVkd29ya2VyLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9iYWQtdW5kZXJseWluZy1zb3VyY2Vz
LmRlZGljYXRlZHdvcmtlci5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxOTI5
MDA3ZGM2M2JjNWMzOWUzYTM3YmQ1YWFlYzJmYTc4ZDQyZDA0Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2JhZC11bmRlcmx5aW5nLXNv
dXJjZXMuZGVkaWNhdGVkd29ya2VyLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBA
Ci08IURPQ1RZUEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTx0aXRsZT5iYWQtdW5k
ZXJseWluZy1zb3VyY2VzLmpzIGRlZGljYXRlZCB3b3JrZXIgd3JhcHBlciBmaWxlPC90aXRsZT4K
LQotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNj
cmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotCi08
c2NyaXB0PgotJ3VzZSBzdHJpY3QnOwotZmV0Y2hfdGVzdHNfZnJvbV93b3JrZXIobmV3IFdvcmtl
cignYmFkLXVuZGVybHlpbmctc291cmNlcy5qcycpKTsKLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRh
YmxlLXN0cmVhbXMvYmFkLXVuZGVybHlpbmctc291cmNlcy5odG1sIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvYmFk
LXVuZGVybHlpbmctc291cmNlcy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAz
OTYwZTg4NmRjMDMwNWUyZGZkZmY5ZWVmY2QxOWU4ZTMzZTFkM2Q4Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2JhZC11bmRlcmx5aW5n
LXNvdXJjZXMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAKLTwhRE9DVFlQRSBo
dG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHRpdGxlPmJhZC11bmRlcmx5aW5nLXNvdXJj
ZXMuanMgYnJvd3NlciBjb250ZXh0IHdyYXBwZXIgZmlsZTwvdGl0bGU+Ci0KLTxzY3JpcHQgc3Jj
PSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLQotCi0KLTxzY3JpcHQgc3Jj
PSJiYWQtdW5kZXJseWluZy1zb3VyY2VzLmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1z
dHJlYW1zL2JhZC11bmRlcmx5aW5nLXNvdXJjZXMuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9iYWQtdW5kZXJs
eWluZy1zb3VyY2VzLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZmNlN2IxOTFi
MjJiMTMwOTFjYTI2MTg4ZWZhODY2NDViY2Y2M2ExLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2JhZC11bmRlcmx5aW5nLXNvdXJjZXMu
anMKKysrIC9kZXYvbnVsbApAQCAtMSw0MDUgKzAsMCBAQAotJ3VzZSBzdHJpY3QnOwotCi1pZiAo
c2VsZi5pbXBvcnRTY3JpcHRzKSB7Ci0gIHNlbGYuaW1wb3J0U2NyaXB0cygnL3Jlc291cmNlcy90
ZXN0aGFybmVzcy5qcycpOwotfQotCi0KLXRlc3QoKCkgPT4gewotCi0gIGNvbnN0IHRoZUVycm9y
ID0gbmV3IEVycm9yKCdhIHVuaXF1ZSBzdHJpbmcnKTsKLQotICBhc3NlcnRfdGhyb3dzKHRoZUVy
cm9yLCAoKSA9PiB7Ci0gICAgbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICAgIGdldCBzdGFydCgp
IHsKLSAgICAgICAgdGhyb3cgdGhlRXJyb3I7Ci0gICAgICB9Ci0gICAgfSk7Ci0gIH0sICdjb25z
dHJ1Y3RpbmcgdGhlIHN0cmVhbSBzaG91bGQgcmUtdGhyb3cgdGhlIGVycm9yJyk7Ci0KLX0sICdV
bmRlcmx5aW5nIHNvdXJjZSBzdGFydDogdGhyb3dpbmcgZ2V0dGVyJyk7Ci0KLQotdGVzdCgoKSA9
PiB7Ci0KLSAgY29uc3QgdGhlRXJyb3IgPSBuZXcgRXJyb3IoJ2EgdW5pcXVlIHN0cmluZycpOwot
Ci0gIGFzc2VydF90aHJvd3ModGhlRXJyb3IsICgpID0+IHsKLSAgICBuZXcgUmVhZGFibGVTdHJl
YW0oewotICAgICAgc3RhcnQoKSB7Ci0gICAgICAgIHRocm93IHRoZUVycm9yOwotICAgICAgfQot
ICAgIH0pOwotICB9LCAnY29uc3RydWN0aW5nIHRoZSBzdHJlYW0gc2hvdWxkIHJlLXRocm93IHRo
ZSBlcnJvcicpOwotCi19LCAnVW5kZXJseWluZyBzb3VyY2Ugc3RhcnQ6IHRocm93aW5nIG1ldGhv
ZCcpOwotCi0KLXRlc3QoKCkgPT4gewotCi0gIGNvbnN0IHRoZUVycm9yID0gbmV3IEVycm9yKCdh
IHVuaXF1ZSBzdHJpbmcnKTsKLSAgYXNzZXJ0X3Rocm93cyh0aGVFcnJvciwgKCkgPT4gbmV3IFJl
YWRhYmxlU3RyZWFtKHsKLSAgICBnZXQgcHVsbCgpIHsKLSAgICAgIHRocm93IHRoZUVycm9yOwot
ICAgIH0KLSAgfSksICdjb25zdHJ1Y3RvciBzaG91bGQgdGhyb3cnKTsKLQotfSwgJ1VuZGVybHlp
bmcgc291cmNlOiB0aHJvd2luZyBwdWxsIGdldHRlciAoaW5pdGlhbCBwdWxsKScpOwotCi0KLXBy
b21pc2VfdGVzdCh0ID0+IHsKLQotICBjb25zdCB0aGVFcnJvciA9IG5ldyBFcnJvcignYSB1bmlx
dWUgc3RyaW5nJyk7Ci0gIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBwdWxs
KCkgewotICAgICAgdGhyb3cgdGhlRXJyb3I7Ci0gICAgfQotICB9KTsKLQotICByZXR1cm4gcHJv
bWlzZV9yZWplY3RzKHQsIHRoZUVycm9yLCBycy5nZXRSZWFkZXIoKS5jbG9zZWQpOwotCi19LCAn
VW5kZXJseWluZyBzb3VyY2U6IHRocm93aW5nIHB1bGwgbWV0aG9kIChpbml0aWFsIHB1bGwpJyk7
Ci0KLQotcHJvbWlzZV90ZXN0KHQgPT4gewotCi0gIGNvbnN0IHRoZUVycm9yID0gbmV3IEVycm9y
KCdhIHVuaXF1ZSBzdHJpbmcnKTsKLQotICBsZXQgY291bnRlciA9IDA7Ci0gIGNvbnN0IHJzID0g
bmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBnZXQgcHVsbCgpIHsKLSAgICAgICsrY291bnRlcjsK
LSAgICAgIGlmIChjb3VudGVyID09PSAxKSB7Ci0gICAgICAgIHJldHVybiBjID0+IGMuZW5xdWV1
ZSgnYScpOwotICAgICAgfQotCi0gICAgICB0aHJvdyB0aGVFcnJvcjsKLSAgICB9Ci0gIH0pOwot
ICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKLQotICByZXR1cm4gUHJvbWlzZS5hbGwo
WwotICAgIHJlYWRlci5yZWFkKCkudGhlbihyID0+IHsKLSAgICAgIGFzc2VydF9vYmplY3RfZXF1
YWxzKHIsIHsgdmFsdWU6ICdhJywgZG9uZTogZmFsc2UgfSwgJ3RoZSBmaXJzdCBjaHVuayByZWFk
IHNob3VsZCBiZSBjb3JyZWN0Jyk7Ci0gICAgfSksCi0gICAgcmVhZGVyLnJlYWQoKS50aGVuKHIg
PT4gewotICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMociwgeyB2YWx1ZTogJ2EnLCBkb25lOiBm
YWxzZSB9LCAndGhlIHNlY29uZCBjaHVuayByZWFkIHNob3VsZCBiZSBjb3JyZWN0Jyk7Ci0gICAg
ICBhc3NlcnRfZXF1YWxzKGNvdW50ZXIsIDEsICdjb3VudGVyIHNob3VsZCBiZSAxJyk7Ci0gICAg
fSkKLSAgXSk7Ci0KLX0sICdVbmRlcmx5aW5nIHNvdXJjZSBwdWxsOiB0aHJvd2luZyBnZXR0ZXIg
KHNlY29uZCBwdWxsIGRvZXMgbm90IHJlc3VsdCBpbiBhIHNlY29uZCBnZXQpJyk7Ci0KLXByb21p
c2VfdGVzdCh0ID0+IHsKLQotICBjb25zdCB0aGVFcnJvciA9IG5ldyBFcnJvcignYSB1bmlxdWUg
c3RyaW5nJyk7Ci0KLSAgbGV0IGNvdW50ZXIgPSAwOwotICBjb25zdCBycyA9IG5ldyBSZWFkYWJs
ZVN0cmVhbSh7Ci0gICAgcHVsbChjKSB7Ci0gICAgICArK2NvdW50ZXI7Ci0gICAgICBpZiAoY291
bnRlciA9PT0gMSkgewotICAgICAgICBjLmVucXVldWUoJ2EnKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgICAgfQotCi0gICAgICB0aHJvdyB0aGVFcnJvcjsKLSAgICB9Ci0gIH0pOwotICBjb25zdCBy
ZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKLQotICByZXR1cm4gUHJvbWlzZS5hbGwoWwotICAgIHJl
YWRlci5yZWFkKCkudGhlbihyID0+IHsKLSAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHIsIHsg
dmFsdWU6ICdhJywgZG9uZTogZmFsc2UgfSwgJ3RoZSBjaHVuayByZWFkIHNob3VsZCBiZSBjb3Jy
ZWN0Jyk7Ci0gICAgfSksCi0gICAgcHJvbWlzZV9yZWplY3RzKHQsIHRoZUVycm9yLCByZWFkZXIu
Y2xvc2VkKQotICBdKTsKLQotfSwgJ1VuZGVybHlpbmcgc291cmNlIHB1bGw6IHRocm93aW5nIG1l
dGhvZCAoc2Vjb25kIHB1bGwpJyk7Ci0KLXRlc3QoKCkgPT4gewotCi0gIGNvbnN0IHRoZUVycm9y
ID0gbmV3IEVycm9yKCdhIHVuaXF1ZSBzdHJpbmcnKTsKLSAgYXNzZXJ0X3Rocm93cyh0aGVFcnJv
ciwgKCkgPT4gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBnZXQgY2FuY2VsKCkgewotICAgICAg
dGhyb3cgdGhlRXJyb3I7Ci0gICAgfQotICB9KSwgJ2NvbnN0cnVjdG9yIHNob3VsZCB0aHJvdycp
OwotCi19LCAnVW5kZXJseWluZyBzb3VyY2UgY2FuY2VsOiB0aHJvd2luZyBnZXR0ZXInKTsKLQot
cHJvbWlzZV90ZXN0KHQgPT4gewotCi0gIGNvbnN0IHRoZUVycm9yID0gbmV3IEVycm9yKCdhIHVu
aXF1ZSBzdHJpbmcnKTsKLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIGNh
bmNlbCgpIHsKLSAgICAgIHRocm93IHRoZUVycm9yOwotICAgIH0KLSAgfSk7Ci0KLSAgcmV0dXJu
IHByb21pc2VfcmVqZWN0cyh0LCB0aGVFcnJvciwgcnMuY2FuY2VsKCkpOwotCi19LCAnVW5kZXJs
eWluZyBzb3VyY2UgY2FuY2VsOiB0aHJvd2luZyBtZXRob2QnKTsKLQotcHJvbWlzZV90ZXN0KCgp
ID0+IHsKLQotICBsZXQgY29udHJvbGxlcjsKLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJl
YW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGNvbnRyb2xsZXIgPSBjOwotICAgIH0KLSAgfSk7
Ci0KLSAgcnMuY2FuY2VsKCk7Ci0gIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9
PiBjb250cm9sbGVyLmVucXVldWUoJ2EnKSwgJ0NhbGxpbmcgZW5xdWV1ZSBhZnRlciBjYW5jZWxp
bmcgc2hvdWxkIHRocm93Jyk7Ci0KLSAgcmV0dXJuIHJzLmdldFJlYWRlcigpLmNsb3NlZDsKLQot
fSwgJ1VuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGVucXVldWUgb24gYW4gZW1wdHkgY2FuY2Vs
ZWQgc3RyZWFtIHNob3VsZCB0aHJvdycpOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotCi0gIGxl
dCBjb250cm9sbGVyOwotICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3Rh
cnQoYykgewotICAgICAgYy5lbnF1ZXVlKCdhJyk7Ci0gICAgICBjLmVucXVldWUoJ2InKTsKLSAg
ICAgIGNvbnRyb2xsZXIgPSBjOwotICAgIH0KLSAgfSk7Ci0KLSAgcnMuY2FuY2VsKCk7Ci0gIGFz
c2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBjb250cm9sbGVyLmVucXVldWUoJ2Mn
KSwgJ0NhbGxpbmcgZW5xdWV1ZSBhZnRlciBjYW5jZWxpbmcgc2hvdWxkIHRocm93Jyk7Ci0KLSAg
cmV0dXJuIHJzLmdldFJlYWRlcigpLmNsb3NlZDsKLQotfSwgJ1VuZGVybHlpbmcgc291cmNlOiBj
YWxsaW5nIGVucXVldWUgb24gYSBub24tZW1wdHkgY2FuY2VsZWQgc3RyZWFtIHNob3VsZCB0aHJv
dycpOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotCi0gIHJldHVybiBuZXcgUmVhZGFibGVTdHJl
YW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGMuY2xvc2UoKTsKLSAgICAgIGFzc2VydF90aHJv
d3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBjLmVucXVldWUoJ2EnKSwgJ2NhbGwgdG8gZW5xdWV1
ZSBzaG91bGQgdGhyb3cgYSBUeXBlRXJyb3InKTsKLSAgICB9Ci0gIH0pLmdldFJlYWRlcigpLmNs
b3NlZDsKLQotfSwgJ1VuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGVucXVldWUgb24gYSBjbG9z
ZWQgc3RyZWFtIHNob3VsZCB0aHJvdycpOwotCi1wcm9taXNlX3Rlc3QodCA9PiB7Ci0KLSAgY29u
c3QgdGhlRXJyb3IgPSBuZXcgRXJyb3IoJ2JvbycpOwotICBjb25zdCBjbG9zZWQgPSBuZXcgUmVh
ZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGMuZXJyb3IodGhlRXJyb3IpOwot
ICAgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IGMuZW5xdWV1ZSgnYScp
LCAnY2FsbCB0byBlbnF1ZXVlIHNob3VsZCB0aHJvdyB0aGUgZXJyb3InKTsKLSAgICB9Ci0gIH0p
LmdldFJlYWRlcigpLmNsb3NlZDsKLQotICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHQsIHRoZUVy
cm9yLCBjbG9zZWQpOwotCi19LCAnVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgZW5xdWV1ZSBv
biBhbiBlcnJvcmVkIHN0cmVhbSBzaG91bGQgdGhyb3cnKTsKLQotcHJvbWlzZV90ZXN0KCgpID0+
IHsKLQotICByZXR1cm4gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0gICAg
ICBjLmNsb3NlKCk7Ci0gICAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4g
Yy5jbG9zZSgpLCAnc2Vjb25kIGNhbGwgdG8gY2xvc2Ugc2hvdWxkIHRocm93IGEgVHlwZUVycm9y
Jyk7Ci0gICAgfQotICB9KS5nZXRSZWFkZXIoKS5jbG9zZWQ7Ci0KLX0sICdVbmRlcmx5aW5nIHNv
dXJjZTogY2FsbGluZyBjbG9zZSB0d2ljZSBvbiBhbiBlbXB0eSBzdHJlYW0gc2hvdWxkIHRocm93
IHRoZSBzZWNvbmQgdGltZScpOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotCi0gIGxldCBzdGFy
dENhbGxlZCA9IGZhbHNlOwotICBsZXQgcmVhZENhbGxlZCA9IGZhbHNlOwotICBjb25zdCByZWFk
ZXIgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGMuZW5xdWV1
ZSgnYScpOwotICAgICAgYy5jbG9zZSgpOwotICAgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVy
cm9yKCksICgpID0+IGMuY2xvc2UoKSwgJ3NlY29uZCBjYWxsIHRvIGNsb3NlIHNob3VsZCB0aHJv
dyBhIFR5cGVFcnJvcicpOwotICAgICAgc3RhcnRDYWxsZWQgPSB0cnVlOwotICAgIH0KLSAgfSku
Z2V0UmVhZGVyKCk7Ci0KLSAgcmV0dXJuIFByb21pc2UuYWxsKFsKLSAgICByZWFkZXIucmVhZCgp
LnRoZW4ociA9PiB7Ci0gICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyLCB7IHZhbHVlOiAnYScs
IGRvbmU6IGZhbHNlIH0sICdyZWFkKCkgc2hvdWxkIHJlYWQgdGhlIGVucXVldWVkIGNodW5rJyk7
Ci0gICAgICByZWFkQ2FsbGVkID0gdHJ1ZTsKLSAgICB9KSwKLSAgICByZWFkZXIuY2xvc2VkLnRo
ZW4oKCkgPT4gewotICAgICAgYXNzZXJ0X3RydWUoc3RhcnRDYWxsZWQpOwotICAgICAgYXNzZXJ0
X3RydWUocmVhZENhbGxlZCk7Ci0gICAgfSkKLSAgXSk7Ci0KLX0sICdVbmRlcmx5aW5nIHNvdXJj
ZTogY2FsbGluZyBjbG9zZSB0d2ljZSBvbiBhIG5vbi1lbXB0eSBzdHJlYW0gc2hvdWxkIHRocm93
IHRoZSBzZWNvbmQgdGltZScpOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotCi0gIGxldCBjb250
cm9sbGVyOwotICBsZXQgc3RhcnRDYWxsZWQgPSBmYWxzZTsKLSAgY29uc3QgcnMgPSBuZXcgUmVh
ZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGNvbnRyb2xsZXIgPSBjOwotICAg
ICAgc3RhcnRDYWxsZWQgPSB0cnVlOwotICAgIH0KLSAgfSk7Ci0KLSAgcnMuY2FuY2VsKCk7Ci0g
IGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBjb250cm9sbGVyLmNsb3NlKCks
ICdDYWxsaW5nIGNsb3NlIGFmdGVyIGNhbmNlbGluZyBzaG91bGQgdGhyb3cnKTsKLQotICByZXR1
cm4gcnMuZ2V0UmVhZGVyKCkuY2xvc2VkLnRoZW4oKCkgPT4gewotICAgIGFzc2VydF90cnVlKHN0
YXJ0Q2FsbGVkKTsKLSAgfSk7Ci0KLX0sICdVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBjbG9z
ZSBvbiBhbiBlbXB0eSBjYW5jZWxlZCBzdHJlYW0gc2hvdWxkIHRocm93Jyk7Ci0KLXByb21pc2Vf
dGVzdCgoKSA9PiB7Ci0KLSAgbGV0IGNvbnRyb2xsZXI7Ci0gIGxldCBzdGFydENhbGxlZCA9IGZh
bHNlOwotICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewot
ICAgICAgY29udHJvbGxlciA9IGM7Ci0gICAgICBjLmVucXVldWUoJ2EnKTsKLSAgICAgIHN0YXJ0
Q2FsbGVkID0gdHJ1ZTsKLSAgICB9Ci0gIH0pOwotCi0gIHJzLmNhbmNlbCgpOwotICBhc3NlcnRf
dGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gY29udHJvbGxlci5jbG9zZSgpLCAnQ2FsbGlu
ZyBjbG9zZSBhZnRlciBjYW5jZWxpbmcgc2hvdWxkIHRocm93Jyk7Ci0KLSAgcmV0dXJuIHJzLmdl
dFJlYWRlcigpLmNsb3NlZC50aGVuKCgpID0+IHsKLSAgICBhc3NlcnRfdHJ1ZShzdGFydENhbGxl
ZCk7Ci0gIH0pOwotCi19LCAnVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgY2xvc2Ugb24gYSBu
b24tZW1wdHkgY2FuY2VsZWQgc3RyZWFtIHNob3VsZCB0aHJvdycpOwotCi1wcm9taXNlX3Rlc3Qo
KCkgPT4gewotCi0gIGNvbnN0IHRoZUVycm9yID0gbmV3IEVycm9yKCdib28nKTsKLSAgbGV0IHN0
YXJ0Q2FsbGVkID0gZmFsc2U7Ci0KLSAgY29uc3QgY2xvc2VkID0gbmV3IFJlYWRhYmxlU3RyZWFt
KHsKLSAgICBzdGFydChjKSB7Ci0gICAgICBjLmVycm9yKHRoZUVycm9yKTsKLSAgICAgIGFzc2Vy
dF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBjLmNsb3NlKCksICdjYWxsIHRvIGNsb3Nl
IHNob3VsZCB0aHJvdyBhIFR5cGVFcnJvcicpOwotICAgICAgc3RhcnRDYWxsZWQgPSB0cnVlOwot
ICAgIH0KLSAgfSkuZ2V0UmVhZGVyKCkuY2xvc2VkOwotCi0gIHJldHVybiBjbG9zZWQuY2F0Y2go
ZSA9PiB7Ci0gICAgYXNzZXJ0X3RydWUoc3RhcnRDYWxsZWQpOwotICAgIGFzc2VydF9lcXVhbHMo
ZSwgdGhlRXJyb3IsICdjbG9zZWQgc2hvdWxkIHJlamVjdCB3aXRoIHRoZSBlcnJvcicpOwotICB9
KTsKLQotfSwgJ1VuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGNsb3NlIGFmdGVyIGVycm9yIHNo
b3VsZCB0aHJvdycpOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotCi0gIGNvbnN0IHRoZUVycm9y
ID0gbmV3IEVycm9yKCdib28nKTsKLSAgbGV0IHN0YXJ0Q2FsbGVkID0gZmFsc2U7Ci0KLSAgY29u
c3QgY2xvc2VkID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0gICAgICBj
LmVycm9yKHRoZUVycm9yKTsKLSAgICAgIGMuZXJyb3IoKTsKLSAgICAgIHN0YXJ0Q2FsbGVkID0g
dHJ1ZTsKLSAgICB9Ci0gIH0pLmdldFJlYWRlcigpLmNsb3NlZDsKLQotICByZXR1cm4gY2xvc2Vk
LmNhdGNoKGUgPT4gewotICAgIGFzc2VydF90cnVlKHN0YXJ0Q2FsbGVkKTsKLSAgICBhc3NlcnRf
ZXF1YWxzKGUsIHRoZUVycm9yLCAnY2xvc2VkIHNob3VsZCByZWplY3Qgd2l0aCB0aGUgZXJyb3In
KTsKLSAgfSk7Ci0KLX0sICdVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBlcnJvciB0d2ljZSBz
aG91bGQgbm90IHRocm93Jyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgbGV0IHN0YXJ0
Q2FsbGVkID0gZmFsc2U7Ci0KLSAgY29uc3QgY2xvc2VkID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsK
LSAgICBzdGFydChjKSB7Ci0gICAgICBjLmNsb3NlKCk7Ci0gICAgICBjLmVycm9yKCk7Ci0gICAg
ICBzdGFydENhbGxlZCA9IHRydWU7Ci0gICAgfQotICB9KS5nZXRSZWFkZXIoKS5jbG9zZWQ7Ci0K
LSAgcmV0dXJuIGNsb3NlZC50aGVuKCgpID0+IGFzc2VydF90cnVlKHN0YXJ0Q2FsbGVkKSk7Ci0K
LX0sICdVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBlcnJvciBhZnRlciBjbG9zZSBzaG91bGQg
bm90IHRocm93Jyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgbGV0IHN0YXJ0Q2FsbGVk
ID0gZmFsc2U7Ci0gIGNvbnN0IGZpcnN0RXJyb3IgPSBuZXcgRXJyb3IoJzEnKTsKLSAgY29uc3Qg
c2Vjb25kRXJyb3IgPSBuZXcgRXJyb3IoJzInKTsKLQotICBjb25zdCBjbG9zZWQgPSBuZXcgUmVh
ZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGMuZXJyb3IoZmlyc3RFcnJvcik7
Ci0gICAgICBzdGFydENhbGxlZCA9IHRydWU7Ci0gICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3Qo
c2Vjb25kRXJyb3IpOwotICAgIH0KLSAgfSkuZ2V0UmVhZGVyKCkuY2xvc2VkOwotCi0gIHJldHVy
biBjbG9zZWQuY2F0Y2goZSA9PiB7Ci0gICAgYXNzZXJ0X3RydWUoc3RhcnRDYWxsZWQpOwotICAg
IGFzc2VydF9lcXVhbHMoZSwgZmlyc3RFcnJvciwgJ2Nsb3NlZCBzaG91bGQgcmVqZWN0IHdpdGgg
dGhlIGZpcnN0IGVycm9yJyk7Ci0gIH0pOwotCi19LCAnVW5kZXJseWluZyBzb3VyY2U6IGNhbGxp
bmcgZXJyb3IgYW5kIHJldHVybmluZyBhIHJlamVjdGVkIHByb21pc2UgZnJvbSBzdGFydCBzaG91
bGQgY2F1c2UgdGhlIHN0cmVhbSB0byBlcnJvciAnICsKLSAgICd3aXRoIHRoZSBmaXJzdCBlcnJv
cicpOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotCi0gIGxldCBzdGFydENhbGxlZCA9IGZhbHNl
OwotICBjb25zdCBmaXJzdEVycm9yID0gbmV3IEVycm9yKCcxJyk7Ci0gIGNvbnN0IHNlY29uZEVy
cm9yID0gbmV3IEVycm9yKCcyJyk7Ci0KLSAgY29uc3QgY2xvc2VkID0gbmV3IFJlYWRhYmxlU3Ry
ZWFtKHsKLSAgICBwdWxsKGMpIHsKLSAgICAgIGMuZXJyb3IoZmlyc3RFcnJvcik7Ci0gICAgICBz
dGFydENhbGxlZCA9IHRydWU7Ci0gICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3Qoc2Vjb25kRXJy
b3IpOwotICAgIH0KLSAgfSkuZ2V0UmVhZGVyKCkuY2xvc2VkOwotCi0gIHJldHVybiBjbG9zZWQu
Y2F0Y2goZSA9PiB7Ci0gICAgYXNzZXJ0X3RydWUoc3RhcnRDYWxsZWQpOwotICAgIGFzc2VydF9l
cXVhbHMoZSwgZmlyc3RFcnJvciwgJ2Nsb3NlZCBzaG91bGQgcmVqZWN0IHdpdGggdGhlIGZpcnN0
IGVycm9yJyk7Ci0gIH0pOwotCi19LCAnVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgZXJyb3Ig
YW5kIHJldHVybmluZyBhIHJlamVjdGVkIHByb21pc2UgZnJvbSBwdWxsIHNob3VsZCBjYXVzZSB0
aGUgc3RyZWFtIHRvIGVycm9yICcgKwotICAgJ3dpdGggdGhlIGZpcnN0IGVycm9yJyk7Ci0KLWNv
bnN0IGVycm9yMSA9IHsgbmFtZTogJ2Vycm9yMScgfTsKLQotcHJvbWlzZV90ZXN0KHQgPT4gewot
Ci0gIGxldCBwdWxsU2hvdWxkVGhyb3cgPSBmYWxzZTsKLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFi
bGVTdHJlYW0oewotICAgIHB1bGwoY29udHJvbGxlcikgewotICAgICAgaWYgKHB1bGxTaG91bGRU
aHJvdykgewotICAgICAgICB0aHJvdyBlcnJvcjE7Ci0gICAgICB9Ci0gICAgICBjb250cm9sbGVy
LmVucXVldWUoMCk7Ci0gICAgfQotICB9LCBuZXcgQ291bnRRdWV1aW5nU3RyYXRlZ3koe2hpZ2hX
YXRlck1hcms6IDF9KSk7Ci0gIGNvbnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcigpOwotICByZXR1
cm4gUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiB7Ci0gICAgcHVsbFNob3VsZFRocm93ID0g
dHJ1ZTsKLSAgICByZXR1cm4gUHJvbWlzZS5hbGwoWwotICAgICAgcmVhZGVyLnJlYWQoKSwKLSAg
ICAgIHByb21pc2VfcmVqZWN0cyh0LCBlcnJvcjEsIHJlYWRlci5jbG9zZWQsICcuY2xvc2VkIHBy
b21pc2Ugc2hvdWxkIHJlamVjdCcpCi0gICAgXSk7Ci0gIH0pOwotCi19LCAncmVhZCBzaG91bGQg
bm90IGVycm9yIGlmIGl0IGRlcXVldWVzIGFuZCBwdWxsKCkgdGhyb3dzJyk7Ci0KLWRvbmUoKTsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2JhZC11bmRlcmx5aW5nLXNvdXJjZXMuc2VydmljZXdv
cmtlci5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9iYWQtdW5kZXJseWluZy1zb3Vy
Y2VzLnNlcnZpY2V3b3JrZXIuaHR0cHMtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBmNmM2YTU0YWExOGVlOTYzODIxYWM0OTc2NjhmZjU2YjZiMDY2YzIzLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2Jh
ZC11bmRlcmx5aW5nLXNvdXJjZXMuc2VydmljZXdvcmtlci5odHRwcy1leHBlY3RlZC50eHQKKysr
IC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi0KLVBBU1MgU2VydmljZSB3b3JrZXIgdGVzdCBz
ZXR1cCAKLVBBU1MgVW5kZXJseWluZyBzb3VyY2Ugc3RhcnQ6IHRocm93aW5nIGdldHRlciAKLVBB
U1MgVW5kZXJseWluZyBzb3VyY2Ugc3RhcnQ6IHRocm93aW5nIG1ldGhvZCAKLVBBU1MgVW5kZXJs
eWluZyBzb3VyY2U6IHRocm93aW5nIHB1bGwgZ2V0dGVyIChpbml0aWFsIHB1bGwpIAotUEFTUyBV
bmRlcmx5aW5nIHNvdXJjZTogdGhyb3dpbmcgcHVsbCBtZXRob2QgKGluaXRpYWwgcHVsbCkgCi1Q
QVNTIFVuZGVybHlpbmcgc291cmNlIHB1bGw6IHRocm93aW5nIGdldHRlciAoc2Vjb25kIHB1bGwg
ZG9lcyBub3QgcmVzdWx0IGluIGEgc2Vjb25kIGdldCkgCi1QQVNTIFVuZGVybHlpbmcgc291cmNl
IHB1bGw6IHRocm93aW5nIG1ldGhvZCAoc2Vjb25kIHB1bGwpIAotUEFTUyBVbmRlcmx5aW5nIHNv
dXJjZSBjYW5jZWw6IHRocm93aW5nIGdldHRlciAKLVBBU1MgVW5kZXJseWluZyBzb3VyY2UgY2Fu
Y2VsOiB0aHJvd2luZyBtZXRob2QgCi1QQVNTIFVuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGVu
cXVldWUgb24gYW4gZW1wdHkgY2FuY2VsZWQgc3RyZWFtIHNob3VsZCB0aHJvdyAKLVBBU1MgVW5k
ZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgZW5xdWV1ZSBvbiBhIG5vbi1lbXB0eSBjYW5jZWxlZCBz
dHJlYW0gc2hvdWxkIHRocm93IAotUEFTUyBVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBlbnF1
ZXVlIG9uIGEgY2xvc2VkIHN0cmVhbSBzaG91bGQgdGhyb3cgCi1QQVNTIFVuZGVybHlpbmcgc291
cmNlOiBjYWxsaW5nIGVucXVldWUgb24gYW4gZXJyb3JlZCBzdHJlYW0gc2hvdWxkIHRocm93IAot
UEFTUyBVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBjbG9zZSB0d2ljZSBvbiBhbiBlbXB0eSBz
dHJlYW0gc2hvdWxkIHRocm93IHRoZSBzZWNvbmQgdGltZSAKLVBBU1MgVW5kZXJseWluZyBzb3Vy
Y2U6IGNhbGxpbmcgY2xvc2UgdHdpY2Ugb24gYSBub24tZW1wdHkgc3RyZWFtIHNob3VsZCB0aHJv
dyB0aGUgc2Vjb25kIHRpbWUgCi1QQVNTIFVuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGNsb3Nl
IG9uIGFuIGVtcHR5IGNhbmNlbGVkIHN0cmVhbSBzaG91bGQgdGhyb3cgCi1QQVNTIFVuZGVybHlp
bmcgc291cmNlOiBjYWxsaW5nIGNsb3NlIG9uIGEgbm9uLWVtcHR5IGNhbmNlbGVkIHN0cmVhbSBz
aG91bGQgdGhyb3cgCi1QQVNTIFVuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGNsb3NlIGFmdGVy
IGVycm9yIHNob3VsZCB0aHJvdyAKLVBBU1MgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgZXJy
b3IgdHdpY2Ugc2hvdWxkIG5vdCB0aHJvdyAKLVBBU1MgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxp
bmcgZXJyb3IgYWZ0ZXIgY2xvc2Ugc2hvdWxkIG5vdCB0aHJvdyAKLVBBU1MgVW5kZXJseWluZyBz
b3VyY2U6IGNhbGxpbmcgZXJyb3IgYW5kIHJldHVybmluZyBhIHJlamVjdGVkIHByb21pc2UgZnJv
bSBzdGFydCBzaG91bGQgY2F1c2UgdGhlIHN0cmVhbSB0byBlcnJvciB3aXRoIHRoZSBmaXJzdCBl
cnJvciAKLVBBU1MgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgZXJyb3IgYW5kIHJldHVybmlu
ZyBhIHJlamVjdGVkIHByb21pc2UgZnJvbSBwdWxsIHNob3VsZCBjYXVzZSB0aGUgc3RyZWFtIHRv
IGVycm9yIHdpdGggdGhlIGZpcnN0IGVycm9yIAotUEFTUyByZWFkIHNob3VsZCBub3QgZXJyb3Ig
aWYgaXQgZGVxdWV1ZXMgYW5kIHB1bGwoKSB0aHJvd3MgCi0KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJl
YW1zL2JhZC11bmRlcmx5aW5nLXNvdXJjZXMuc2VydmljZXdvcmtlci5odHRwcy5odG1sIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxl
LXN0cmVhbXMvYmFkLXVuZGVybHlpbmctc291cmNlcy5zZXJ2aWNld29ya2VyLmh0dHBzLmh0bWwK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBmZWRjYWI5NDUwODBkNGIxZjUwMmNmNzUy
ZmMzN2Q5MGY1OTdkYTIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
L3JlYWRhYmxlLXN0cmVhbXMvYmFkLXVuZGVybHlpbmctc291cmNlcy5zZXJ2aWNld29ya2VyLmh0
dHBzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4K
LTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTx0aXRsZT5iYWQtdW5kZXJseWluZy1zb3VyY2VzLmpz
IHNlcnZpY2Ugd29ya2VyIHdyYXBwZXIgZmlsZTwvdGl0bGU+Ci0KLTxzY3JpcHQgc3JjPSIvcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvc2VydmljZS13
b3JrZXJzL3NlcnZpY2Utd29ya2VyL3Jlc291cmNlcy90ZXN0LWhlbHBlcnMuc3ViLmpzIj48L3Nj
cmlwdD4KLQotPHNjcmlwdD4KLSd1c2Ugc3RyaWN0JzsKLXNlcnZpY2Vfd29ya2VyX3Rlc3QoJ2Jh
ZC11bmRlcmx5aW5nLXNvdXJjZXMuanMnLCAnU2VydmljZSB3b3JrZXIgdGVzdCBzZXR1cCcpOwot
PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9iYWQtdW5kZXJseWluZy1zb3VyY2Vz
LnNoYXJlZHdvcmtlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9iYWQtdW5kZXJseWluZy1z
b3VyY2VzLnNoYXJlZHdvcmtlci1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDA5ZDVkMjUwOWQ3ODQ3ZThjZDZmZTY2MDZhYTYwY2RkMzNhYTQ3NGUuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvYmFkLXVu
ZGVybHlpbmctc291cmNlcy5zaGFyZWR3b3JrZXItZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwK
QEAgLTEsNSArMCwwIEBACi1DT05TT0xFIE1FU1NBR0U6IFJlZmVyZW5jZUVycm9yOiBDYW4ndCBm
aW5kIHZhcmlhYmxlOiBTaGFyZWRXb3JrZXIKLQotSGFybmVzcyBFcnJvciAoRkFJTCksIG1lc3Nh
Z2UgPSBSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogU2hhcmVkV29ya2VyCi0K
LQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvYmFkLXVuZGVybHlpbmctc291cmNlcy5zaGFyZWR3
b3JrZXIuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2JhZC11bmRlcmx5aW5nLXNvdXJjZXMuc2hhcmVkd29y
a2VyLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI1ODZjNTVjNTRmODk2N2Jh
MDQ5ZmNkYTQ4YWY1MjVjZWY5NWZjMjAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvYmFkLXVuZGVybHlpbmctc291cmNlcy5zaGFyZWR3
b3JrZXIuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLTwhRE9DVFlQRSBodG1s
PgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHRpdGxlPmJhZC11bmRlcmx5aW5nLXNvdXJjZXMu
anMgc2hhcmVkIHdvcmtlciB3cmFwcGVyIGZpbGU8L3RpdGxlPgotCi08c2NyaXB0IHNyYz0iL3Jl
c291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNl
cy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci0KLTxzY3JpcHQ+Ci0ndXNlIHN0cmlj
dCc7Ci1mZXRjaF90ZXN0c19mcm9tX3dvcmtlcihuZXcgU2hhcmVkV29ya2VyKCdiYWQtdW5kZXJs
eWluZy1zb3VyY2VzLmpzJykpOwotPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9i
cmFuZC1jaGVja3MuZGVkaWNhdGVkd29ya2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2Jy
YW5kLWNoZWNrcy5kZWRpY2F0ZWR3b3JrZXItZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA3ZDdiNmVmOTkyYTgxNWY5MjkwYzdjMTY2ZDc3OWQ0YThlMGVlNWUxLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1z
L2JyYW5kLWNoZWNrcy5kZWRpY2F0ZWR3b3JrZXItZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwK
QEAgLTEsMTcgKzAsMCBAQAotCi1QQVNTIENhbiBnZXQgdGhlIFJlYWRhYmxlU3RyZWFtRGVmYXVs
dFJlYWRlciBjb25zdHJ1Y3RvciBpbmRpcmVjdGx5IAotUEFTUyBDYW4gZ2V0IHRoZSBSZWFkYWJs
ZVN0cmVhbURlZmF1bHRDb250cm9sbGVyIGNvbnN0cnVjdG9yIGluZGlyZWN0bHkgCi1QQVNTIFJl
YWRhYmxlU3RyZWFtLnByb3RvdHlwZS5jYW5jZWwgZW5mb3JjZXMgYSBicmFuZCBjaGVjayAKLVBB
U1MgUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLmdldFJlYWRlciBlbmZvcmNlcyBhIGJyYW5kIGNo
ZWNrIAotUEFTUyBSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUudGVlIGVuZm9yY2VzIGEgYnJhbmQg
Y2hlY2sgCi1QQVNTIFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlciBlbmZvcmNlcyBhIGJyYW5k
IGNoZWNrIG9uIGl0cyBhcmd1bWVudCAKLVBBU1MgUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVy
LnByb3RvdHlwZS5jbG9zZWQgZW5mb3JjZXMgYSBicmFuZCBjaGVjayAKLVBBU1MgUmVhZGFibGVT
dHJlYW1EZWZhdWx0UmVhZGVyLnByb3RvdHlwZS5jYW5jZWwgZW5mb3JjZXMgYSBicmFuZCBjaGVj
ayAKLVBBU1MgUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyLnByb3RvdHlwZS5yZWFkIGVuZm9y
Y2VzIGEgYnJhbmQgY2hlY2sgCi1QQVNTIFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlci5wcm90
b3R5cGUucmVsZWFzZUxvY2sgZW5mb3JjZXMgYSBicmFuZCBjaGVjayAKLVBBU1MgUmVhZGFibGVT
dHJlYW1EZWZhdWx0Q29udHJvbGxlciBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrIG9uIGl0cyBhcmd1
bWVudCAKLVBBU1MgUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlciBjYW4ndCBiZSBnaXZl
biBhIGZ1bGx5LWNvbnN0cnVjdGVkIFJlYWRhYmxlU3RyZWFtIAotUEFTUyBSZWFkYWJsZVN0cmVh
bURlZmF1bHRDb250cm9sbGVyLnByb3RvdHlwZS5jbG9zZSBlbmZvcmNlcyBhIGJyYW5kIGNoZWNr
IAotUEFTUyBSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLnByb3RvdHlwZS5lbnF1ZXVl
IGVuZm9yY2VzIGEgYnJhbmQgY2hlY2sgCi1QQVNTIFJlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRy
b2xsZXIucHJvdG90eXBlLmVycm9yIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2sgCi0KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9y
ZWFkYWJsZS1zdHJlYW1zL2JyYW5kLWNoZWNrcy5kZWRpY2F0ZWR3b3JrZXIuaHRtbCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1z
dHJlYW1zL2JyYW5kLWNoZWNrcy5kZWRpY2F0ZWR3b3JrZXIuaHRtbApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggYmIzZjExYTkwZTI4MWI5NmFhYjQ2OTVkN2NhYjA0Y2M0MzZlOGYwNy4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFt
cy9icmFuZC1jaGVja3MuZGVkaWNhdGVkd29ya2VyLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwx
MSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTx0aXRs
ZT5icmFuZC1jaGVja3MuanMgZGVkaWNhdGVkIHdvcmtlciB3cmFwcGVyIGZpbGU8L3RpdGxlPgot
Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2Ny
aXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci0KLTxz
Y3JpcHQ+Ci0ndXNlIHN0cmljdCc7Ci1mZXRjaF90ZXN0c19mcm9tX3dvcmtlcihuZXcgV29ya2Vy
KCdicmFuZC1jaGVja3MuanMnKSk7Ci08L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1z
L2JyYW5kLWNoZWNrcy5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvYnJhbmQtY2hlY2tzLmh0bWwKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk4ZDJlMjgxZmZhZjZmMGI0MDQ2YjMwMjk2YjJkMDlm
YjFmM2RlOWYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRh
YmxlLXN0cmVhbXMvYnJhbmQtY2hlY2tzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCww
IEBACi08IURPQ1RZUEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTx0aXRsZT5icmFu
ZC1jaGVja3MuanMgYnJvd3NlciBjb250ZXh0IHdyYXBwZXIgZmlsZTwvdGl0bGU+Ci0KLTxzY3Jp
cHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3Jj
PSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLQotPHNjcmlwdCBz
cmM9Ii4uL3Jlc291cmNlcy90ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KLQotPHNjcmlwdCBzcmM9
ImJyYW5kLWNoZWNrcy5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9icmFu
ZC1jaGVja3MuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9icmFuZC1jaGVja3MuanMKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDFiMzlkMWFkNjYxNmNjNjY0NWUwYzYyMDM5MTcwZTZlYmQ0Mjg2Nzku
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVh
bXMvYnJhbmQtY2hlY2tzLmpzCisrKyAvZGV2L251bGwKQEAgLTEsMTY0ICswLDAgQEAKLSd1c2Ug
c3RyaWN0JzsKLQotaWYgKHNlbGYuaW1wb3J0U2NyaXB0cykgewotICBzZWxmLmltcG9ydFNjcmlw
dHMoJy4uL3Jlc291cmNlcy90ZXN0LXV0aWxzLmpzJyk7Ci0gIHNlbGYuaW1wb3J0U2NyaXB0cygn
L3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcycpOwotfQotCi1sZXQgUmVhZGFibGVTdHJlYW1EZWZh
dWx0UmVhZGVyOwotbGV0IFJlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXI7Ci0KLXRlc3Qo
KCkgPT4gewotCi0gIC8vIEl0J3Mgbm90IGV4cG9zZWQgZ2xvYmFsbHksIGJ1dCB3ZSB0ZXN0IGEg
ZmV3IG9mIGl0cyBwcm9wZXJ0aWVzIGhlcmUuCi0gIFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRl
ciA9IChuZXcgUmVhZGFibGVTdHJlYW0oKSkuZ2V0UmVhZGVyKCkuY29uc3RydWN0b3I7Ci0KLX0s
ICdDYW4gZ2V0IHRoZSBSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIgY29uc3RydWN0b3IgaW5k
aXJlY3RseScpOwotCi10ZXN0KCgpID0+IHsKLQotICAvLyBJdCdzIG5vdCBleHBvc2VkIGdsb2Jh
bGx5LCBidXQgd2UgdGVzdCBhIGZldyBvZiBpdHMgcHJvcGVydGllcyBoZXJlLgotICBuZXcgUmVh
ZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIFJlYWRhYmxlU3RyZWFtRGVmYXVs
dENvbnRyb2xsZXIgPSBjLmNvbnN0cnVjdG9yOwotICAgIH0KLSAgfSk7Ci0KLX0sICdDYW4gZ2V0
IHRoZSBSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyIGNvbnN0cnVjdG9yIGluZGlyZWN0
bHknKTsKLQotZnVuY3Rpb24gZmFrZVJTKCkgewotICByZXR1cm4gT2JqZWN0LnNldFByb3RvdHlw
ZU9mKHsKLSAgICBjYW5jZWwoKSB7IHJldHVybiBQcm9taXNlLnJlc29sdmUoKTsgfSwKLSAgICBn
ZXRSZWFkZXIoKSB7IHJldHVybiBuZXcgUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyKG5ldyBS
ZWFkYWJsZVN0cmVhbSgpKTsgfSwKLSAgICBwaXBlVGhyb3VnaChvYmopIHsgcmV0dXJuIG9iai5y
ZWFkYWJsZTsgfSwKLSAgICBwaXBlVG8oKSB7IHJldHVybiBQcm9taXNlLnJlc29sdmUoKTsgfSwK
LSAgICB0ZWUoKSB7IHJldHVybiBbcmVhbFJTKCksIHJlYWxSUygpXTsgfQotICB9LCBSZWFkYWJs
ZVN0cmVhbS5wcm90b3R5cGUpOwotfQotCi1mdW5jdGlvbiByZWFsUlMoKSB7Ci0gIHJldHVybiBu
ZXcgUmVhZGFibGVTdHJlYW0oKTsKLX0KLQotZnVuY3Rpb24gZmFrZVJTRGVmYXVsdFJlYWRlcigp
IHsKLSAgcmV0dXJuIE9iamVjdC5zZXRQcm90b3R5cGVPZih7Ci0gICAgZ2V0IGNsb3NlZCgpIHsg
cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpOyB9LAotICAgIGNhbmNlbCgpIHsgcmV0dXJuIFByb21p
c2UucmVzb2x2ZSgpOyB9LAotICAgIHJlYWQoKSB7IHJldHVybiBQcm9taXNlLnJlc29sdmUoeyB2
YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0pOyB9LAotICAgIHJlbGVhc2VMb2NrKCkgeyBy
ZXR1cm47IH0KLSAgfSwgUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyLnByb3RvdHlwZSk7Ci19
Ci0KLWZ1bmN0aW9uIHJlYWxSU0RlZmF1bHRSZWFkZXIoKSB7Ci0gIHJldHVybiBuZXcgUmVhZGFi
bGVTdHJlYW0oKS5nZXRSZWFkZXIoKTsKLX0KLQotZnVuY3Rpb24gZmFrZVJTRGVmYXVsdENvbnRy
b2xsZXIoKSB7Ci0gIHJldHVybiBPYmplY3Quc2V0UHJvdG90eXBlT2YoewotICAgIGNsb3NlKCkg
eyB9LAotICAgIGVucXVldWUoKSB7IH0sCi0gICAgZXJyb3IoKSB7IH0KLSAgfSwgUmVhZGFibGVT
dHJlYW1EZWZhdWx0Q29udHJvbGxlci5wcm90b3R5cGUpOwotfQotCi1mdW5jdGlvbiByZWFsUlNE
ZWZhdWx0Q29udHJvbGxlcigpIHsKLSAgbGV0IGNvbnRyb2xsZXI7Ci0gIG5ldyBSZWFkYWJsZVN0
cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgY29udHJvbGxlciA9IGM7Ci0gICAgfQotICB9
KTsKLSAgcmV0dXJuIGNvbnRyb2xsZXI7Ci19Ci0KLXByb21pc2VfdGVzdCh0ID0+IHsKLQotICBy
ZXR1cm4gbWV0aG9kUmVqZWN0c0ZvckFsbCh0LCBSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUsICdj
YW5jZWwnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZmFrZVJTKCksIHJlYWxSU0Rl
ZmF1bHRSZWFkZXIoKSwgcmVhbFJTRGVmYXVsdENvbnRyb2xsZXIoKSwgdW5kZWZpbmVkLCBudWxs
XSk7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUuY2FuY2VsIGVuZm9yY2VzIGEgYnJh
bmQgY2hlY2snKTsKLQotdGVzdCgoKSA9PiB7Ci0KLSAgbWV0aG9kVGhyb3dzRm9yQWxsKFJlYWRh
YmxlU3RyZWFtLnByb3RvdHlwZSwgJ2dldFJlYWRlcicsCi0gICAgICAgICAgICAgICAgICAgICBb
ZmFrZVJTKCksIHJlYWxSU0RlZmF1bHRSZWFkZXIoKSwgcmVhbFJTRGVmYXVsdENvbnRyb2xsZXIo
KSwgdW5kZWZpbmVkLCBudWxsXSk7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUuZ2V0
UmVhZGVyIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2snKTsKLQotdGVzdCgoKSA9PiB7Ci0KLSAgbWV0
aG9kVGhyb3dzRm9yQWxsKFJlYWRhYmxlU3RyZWFtLnByb3RvdHlwZSwgJ3RlZScsIFtmYWtlUlMo
KSwgcmVhbFJTRGVmYXVsdFJlYWRlcigpLCByZWFsUlNEZWZhdWx0Q29udHJvbGxlcigpLCB1bmRl
ZmluZWQsIG51bGxdKTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtLnByb3RvdHlwZS50ZWUgZW5mb3Jj
ZXMgYSBicmFuZCBjaGVjaycpOwotCi10ZXN0KCgpID0+IHsKLQotICBhc3NlcnRfdGhyb3dzKG5l
dyBUeXBlRXJyb3IoKSwgKCkgPT4gbmV3IFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlcihmYWtl
UlMoKSksCi0gICAgICAgICAgICAgICAgJ0NvbnN0cnVjdGluZyBhIFJlYWRhYmxlU3RyZWFtRGVm
YXVsdFJlYWRlciBzaG91bGQgdGhyb3cnKTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtRGVmYXVsdFJl
YWRlciBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrIG9uIGl0cyBhcmd1bWVudCcpOwotCi1wcm9taXNl
X3Rlc3QodCA9PiB7Ci0KLSAgcmV0dXJuIGdldHRlclJlamVjdHNGb3JBbGwodCwgUmVhZGFibGVT
dHJlYW1EZWZhdWx0UmVhZGVyLnByb3RvdHlwZSwgJ2Nsb3NlZCcsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFtmYWtlUlNEZWZhdWx0UmVhZGVyKCksIHJlYWxSUygpLCByZWFsUlNEZWZh
dWx0Q29udHJvbGxlcigpLCB1bmRlZmluZWQsIG51bGxdKTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFt
RGVmYXVsdFJlYWRlci5wcm90b3R5cGUuY2xvc2VkIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2snKTsK
LQotcHJvbWlzZV90ZXN0KHQgPT4gewotCi0gIHJldHVybiBtZXRob2RSZWplY3RzRm9yQWxsKHQs
IFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlci5wcm90b3R5cGUsICdjYW5jZWwnLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBbZmFrZVJTRGVmYXVsdFJlYWRlcigpLCByZWFsUlMoKSwg
cmVhbFJTRGVmYXVsdENvbnRyb2xsZXIoKSwgdW5kZWZpbmVkLCBudWxsXSk7Ci0KLX0sICdSZWFk
YWJsZVN0cmVhbURlZmF1bHRSZWFkZXIucHJvdG90eXBlLmNhbmNlbCBlbmZvcmNlcyBhIGJyYW5k
IGNoZWNrJyk7Ci0KLXByb21pc2VfdGVzdCh0ID0+IHsKLQotICByZXR1cm4gbWV0aG9kUmVqZWN0
c0ZvckFsbCh0LCBSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIucHJvdG90eXBlLCAncmVhZCcs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmYWtlUlNEZWZhdWx0UmVhZGVyKCksIHJl
YWxSUygpLCByZWFsUlNEZWZhdWx0Q29udHJvbGxlcigpLCB1bmRlZmluZWQsIG51bGxdKTsKLQot
fSwgJ1JlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlci5wcm90b3R5cGUucmVhZCBlbmZvcmNlcyBh
IGJyYW5kIGNoZWNrJyk7Ci0KLXRlc3QoKCkgPT4gewotCi0gIG1ldGhvZFRocm93c0ZvckFsbChS
ZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIucHJvdG90eXBlLCAncmVsZWFzZUxvY2snLAotICAg
ICAgICAgICAgICAgICAgICAgW2Zha2VSU0RlZmF1bHRSZWFkZXIoKSwgcmVhbFJTKCksIHJlYWxS
U0RlZmF1bHRDb250cm9sbGVyKCksIHVuZGVmaW5lZCwgbnVsbF0pOwotCi19LCAnUmVhZGFibGVT
dHJlYW1EZWZhdWx0UmVhZGVyLnByb3RvdHlwZS5yZWxlYXNlTG9jayBlbmZvcmNlcyBhIGJyYW5k
IGNoZWNrJyk7Ci0KLXRlc3QoKCkgPT4gewotCi0gIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJv
cigpLCAoKSA9PiBuZXcgUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlcihmYWtlUlMoKSks
Ci0gICAgICAgICAgICAgICAgJ0NvbnN0cnVjdGluZyBhIFJlYWRhYmxlU3RyZWFtRGVmYXVsdENv
bnRyb2xsZXIgc2hvdWxkIHRocm93Jyk7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250
cm9sbGVyIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2sgb24gaXRzIGFyZ3VtZW50Jyk7Ci0KLXRlc3Qo
KCkgPT4gewotCi0gIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBuZXcgUmVh
ZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlcihyZWFsUlMoKSksCi0gICAgICAgICAgICAgICAg
J0NvbnN0cnVjdGluZyBhIFJlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIgc2hvdWxkIHRo
cm93Jyk7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyIGNhblwndCBiZSBn
aXZlbiBhIGZ1bGx5LWNvbnN0cnVjdGVkIFJlYWRhYmxlU3RyZWFtJyk7Ci0KLXRlc3QoKCkgPT4g
ewotCi0gIG1ldGhvZFRocm93c0ZvckFsbChSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVy
LnByb3RvdHlwZSwgJ2Nsb3NlJywKLSAgICAgICAgICAgICAgICAgICAgIFtmYWtlUlNEZWZhdWx0
Q29udHJvbGxlcigpLCByZWFsUlMoKSwgcmVhbFJTRGVmYXVsdFJlYWRlcigpLCB1bmRlZmluZWQs
IG51bGxdKTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIucHJvdG90eXBl
LmNsb3NlIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2snKTsKLQotdGVzdCgoKSA9PiB7Ci0KLSAgbWV0
aG9kVGhyb3dzRm9yQWxsKFJlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIucHJvdG90eXBl
LCAnZW5xdWV1ZScsCi0gICAgICAgICAgICAgICAgICAgICBbZmFrZVJTRGVmYXVsdENvbnRyb2xs
ZXIoKSwgcmVhbFJTKCksIHJlYWxSU0RlZmF1bHRSZWFkZXIoKSwgdW5kZWZpbmVkLCBudWxsXSk7
Ci0KLX0sICdSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLnByb3RvdHlwZS5lbnF1ZXVl
IGVuZm9yY2VzIGEgYnJhbmQgY2hlY2snKTsKLQotdGVzdCgoKSA9PiB7Ci0KLSAgbWV0aG9kVGhy
b3dzRm9yQWxsKFJlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIucHJvdG90eXBlLCAnZXJy
b3InLAotICAgICAgICAgICAgICAgICAgICAgW2Zha2VSU0RlZmF1bHRDb250cm9sbGVyKCksIHJl
YWxSUygpLCByZWFsUlNEZWZhdWx0UmVhZGVyKCksIHVuZGVmaW5lZCwgbnVsbF0pOwotCi19LCAn
UmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5wcm90b3R5cGUuZXJyb3IgZW5mb3JjZXMg
YSBicmFuZCBjaGVjaycpOwotCi1kb25lKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9icmFu
ZC1jaGVja3Muc2VydmljZXdvcmtlci5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9i
cmFuZC1jaGVja3Muc2VydmljZXdvcmtlci5odHRwcy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDM5YThlMTI4YzJmNjAxMDVhYTA2ODY3YzNjZWVjMzkxNTRkODIz
ZTYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0
cmVhbXMvYnJhbmQtY2hlY2tzLnNlcnZpY2V3b3JrZXIuaHR0cHMtZXhwZWN0ZWQudHh0CisrKyAv
ZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotCi1QQVNTIFNlcnZpY2Ugd29ya2VyIHRlc3Qgc2V0
dXAgCi1QQVNTIENhbiBnZXQgdGhlIFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlciBjb25zdHJ1
Y3RvciBpbmRpcmVjdGx5IAotUEFTUyBDYW4gZ2V0IHRoZSBSZWFkYWJsZVN0cmVhbURlZmF1bHRD
b250cm9sbGVyIGNvbnN0cnVjdG9yIGluZGlyZWN0bHkgCi1QQVNTIFJlYWRhYmxlU3RyZWFtLnBy
b3RvdHlwZS5jYW5jZWwgZW5mb3JjZXMgYSBicmFuZCBjaGVjayAKLVBBU1MgUmVhZGFibGVTdHJl
YW0ucHJvdG90eXBlLmdldFJlYWRlciBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrIAotUEFTUyBSZWFk
YWJsZVN0cmVhbS5wcm90b3R5cGUudGVlIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2sgCi1QQVNTIFJl
YWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlciBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrIG9uIGl0cyBh
cmd1bWVudCAKLVBBU1MgUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyLnByb3RvdHlwZS5jbG9z
ZWQgZW5mb3JjZXMgYSBicmFuZCBjaGVjayAKLVBBU1MgUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVh
ZGVyLnByb3RvdHlwZS5jYW5jZWwgZW5mb3JjZXMgYSBicmFuZCBjaGVjayAKLVBBU1MgUmVhZGFi
bGVTdHJlYW1EZWZhdWx0UmVhZGVyLnByb3RvdHlwZS5yZWFkIGVuZm9yY2VzIGEgYnJhbmQgY2hl
Y2sgCi1QQVNTIFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlci5wcm90b3R5cGUucmVsZWFzZUxv
Y2sgZW5mb3JjZXMgYSBicmFuZCBjaGVjayAKLVBBU1MgUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29u
dHJvbGxlciBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrIG9uIGl0cyBhcmd1bWVudCAKLVBBU1MgUmVh
ZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlciBjYW4ndCBiZSBnaXZlbiBhIGZ1bGx5LWNvbnN0
cnVjdGVkIFJlYWRhYmxlU3RyZWFtIAotUEFTUyBSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9s
bGVyLnByb3RvdHlwZS5jbG9zZSBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrIAotUEFTUyBSZWFkYWJs
ZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLnByb3RvdHlwZS5lbnF1ZXVlIGVuZm9yY2VzIGEgYnJh
bmQgY2hlY2sgCi1QQVNTIFJlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIucHJvdG90eXBl
LmVycm9yIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2sgCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1z
L2JyYW5kLWNoZWNrcy5zZXJ2aWNld29ya2VyLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9icmFu
ZC1jaGVja3Muc2VydmljZXdvcmtlci5odHRwcy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAyNDM5Y2RiOTVlOTg5YjdlNzQyNzU2MmNlNjI3YWQxN2M4MmNiOTc1Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2JyYW5k
LWNoZWNrcy5zZXJ2aWNld29ya2VyLmh0dHBzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMiAr
MCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTx0aXRsZT5i
cmFuZC1jaGVja3MuanMgc2VydmljZSB3b3JrZXIgd3JhcHBlciBmaWxlPC90aXRsZT4KLQotPHNj
cmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBz
cmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBz
cmM9Ii9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvcmVzb3VyY2VzL3Rlc3QtaGVscGVy
cy5zdWIuanMiPjwvc2NyaXB0PgotCi08c2NyaXB0PgotJ3VzZSBzdHJpY3QnOwotc2VydmljZV93
b3JrZXJfdGVzdCgnYnJhbmQtY2hlY2tzLmpzJywgJ1NlcnZpY2Ugd29ya2VyIHRlc3Qgc2V0dXAn
KTsKLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvYnJhbmQtY2hlY2tzLnNoYXJl
ZHdvcmtlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9icmFuZC1jaGVja3Muc2hhcmVkd29y
a2VyLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDlkNWQyNTA5
ZDc4NDdlOGNkNmZlNjYwNmFhNjBjZGQzM2FhNDc0ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9icmFuZC1jaGVja3Muc2hhcmVkd29y
a2VyLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotQ09OU09MRSBN
RVNTQUdFOiBSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogU2hhcmVkV29ya2Vy
Ci0KLUhhcm5lc3MgRXJyb3IgKEZBSUwpLCBtZXNzYWdlID0gUmVmZXJlbmNlRXJyb3I6IENhbid0
IGZpbmQgdmFyaWFibGU6IFNoYXJlZFdvcmtlcgotCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1z
L2JyYW5kLWNoZWNrcy5zaGFyZWR3b3JrZXIuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2JyYW5kLWNoZWNr
cy5zaGFyZWR3b3JrZXIuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2ZmNzJl
Y2E0NjM0MWZkZDY2NjNlYzEzOWQ4NzFlMWI4MTM0NGIyMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9icmFuZC1jaGVja3Muc2hhcmVk
d29ya2VyLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi08IURPQ1RZUEUgaHRt
bD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTx0aXRsZT5icmFuZC1jaGVja3MuanMgc2hhcmVk
IHdvcmtlciB3cmFwcGVyIGZpbGU8L3RpdGxlPgotCi08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90
ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFy
bmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci0KLTxzY3JpcHQ+Ci0ndXNlIHN0cmljdCc7Ci1mZXRj
aF90ZXN0c19mcm9tX3dvcmtlcihuZXcgU2hhcmVkV29ya2VyKCdicmFuZC1jaGVja3MuanMnKSk7
Ci08L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2NhbmNlbC5hbnktZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
L3JlYWRhYmxlLXN0cmVhbXMvY2FuY2VsLmFueS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODNl
YmQ5MTI4Yzk0OWJlMGU4ZGY1YmI0MWIyMWEzNjEyNzMwNzFiYgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFk
YWJsZS1zdHJlYW1zL2NhbmNlbC5hbnktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTIgQEAKKwor
UEFTUyBSZWFkYWJsZVN0cmVhbSBjYW5jZWxsYXRpb246IGludGVncmF0aW9uIHRlc3Qgb24gYW4g
aW5maW5pdGUgc3RyZWFtIGRlcml2ZWQgZnJvbSBhIHJhbmRvbSBwdXNoIHNvdXJjZSAKK1BBU1Mg
UmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiBjYW5jZWwocmVhc29uKSBzaG91bGQgcGFzcyB0
aHJvdWdoIHRoZSBnaXZlbiByZWFzb24gdG8gdGhlIHVuZGVybHlpbmcgc291cmNlIAorUEFTUyBS
ZWFkYWJsZVN0cmVhbSBjYW5jZWxsYXRpb246IGNhbmNlbCgpIG9uIGEgbG9ja2VkIHN0cmVhbSBz
aG91bGQgZmFpbCBhbmQgbm90IGNhbGwgdGhlIHVuZGVybHlpbmcgc291cmNlIGNhbmNlbCAKK1BB
U1MgUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiBzaG91bGQgZnVsZmlsbCBwcm9taXNlIHdo
ZW4gY2FuY2VsIGNhbGxiYWNrIHdlbnQgZmluZSAKK1BBU1MgUmVhZGFibGVTdHJlYW0gY2FuY2Vs
bGF0aW9uOiByZXR1cm5pbmcgYSB2YWx1ZSBmcm9tIHRoZSB1bmRlcmx5aW5nIHNvdXJjZSdzIGNh
bmNlbCBzaG91bGQgbm90IGFmZmVjdCB0aGUgZnVsZmlsbG1lbnQgdmFsdWUgb2YgdGhlIHByb21p
c2UgcmV0dXJuZWQgYnkgdGhlIHN0cmVhbSdzIGNhbmNlbCAKK1BBU1MgUmVhZGFibGVTdHJlYW0g
Y2FuY2VsbGF0aW9uOiBzaG91bGQgcmVqZWN0IHByb21pc2Ugd2hlbiBjYW5jZWwgY2FsbGJhY2sg
cmFpc2VzIGFuIGV4Y2VwdGlvbiAKK1BBU1MgUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiBp
ZiB0aGUgdW5kZXJseWluZyBzb3VyY2UncyBjYW5jZWwgbWV0aG9kIHJldHVybnMgYSBwcm9taXNl
LCB0aGUgcHJvbWlzZSByZXR1cm5lZCBieSB0aGUgc3RyZWFtJ3MgY2FuY2VsIHNob3VsZCBmdWxm
aWxsIHdoZW4gdGhhdCBvbmUgZG9lcyAoMSkgCitQQVNTIFJlYWRhYmxlU3RyZWFtIGNhbmNlbGxh
dGlvbjogaWYgdGhlIHVuZGVybHlpbmcgc291cmNlJ3MgY2FuY2VsIG1ldGhvZCByZXR1cm5zIGEg
cHJvbWlzZSwgdGhlIHByb21pc2UgcmV0dXJuZWQgYnkgdGhlIHN0cmVhbSdzIGNhbmNlbCBzaG91
bGQgZnVsZmlsbCB3aGVuIHRoYXQgb25lIGRvZXMgKDIpIAorUEFTUyBSZWFkYWJsZVN0cmVhbSBj
YW5jZWxsYXRpb246IGlmIHRoZSB1bmRlcmx5aW5nIHNvdXJjZSdzIGNhbmNlbCBtZXRob2QgcmV0
dXJucyBhIHByb21pc2UsIHRoZSBwcm9taXNlIHJldHVybmVkIGJ5IHRoZSBzdHJlYW0ncyBjYW5j
ZWwgc2hvdWxkIHJlamVjdCB3aGVuIHRoYXQgb25lIGRvZXMgCitQQVNTIFJlYWRhYmxlU3RyZWFt
IGNhbmNlbGxhdGlvbjogY2FuY2VsbGluZyBiZWZvcmUgc3RhcnQgZmluaXNoZXMgc2hvdWxkIHBy
ZXZlbnQgcHVsbCgpIGZyb20gYmVpbmcgY2FsbGVkIAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFt
cy9jYW5jZWwuYW55Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9jYW5jZWwuYW55Lmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMjM4MjkxMzUyOGU2OTNiM2E1ZDU2YzY2MGE0NTA2MDk4MGI1NDhjMwotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy9yZWFkYWJsZS1zdHJlYW1zL2NhbmNlbC5hbnkuaHRtbApAQCAtMCwwICsxIEBACis8IS0tIFRo
aXMgZmlsZSBpcyByZXF1aXJlZCBmb3IgV2ViS2l0IHRlc3QgaW5mcmFzdHJ1Y3R1cmUgdG8gcnVu
IHRoZSB0ZW1wbGF0ZWQgdGVzdCAtLT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvcmVhZGFibGUtc3RyZWFtcy9jYW5jZWwuYW55LmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvY2FuY2VsLmFu
eS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5jMzcyM2E0NjVjOTk4OGI3MDk1ZjIwYjQxOWJlMDg2ODZkZTk5ODdl
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvY2FuY2VsLmFueS5qcwpAQCAtMCwwICsx
LDIzNiBAQAorLy8gTUVUQTogZ2xvYmFsPXdpbmRvdyx3b3JrZXIsanNzaGVsbAorLy8gTUVUQTog
c2NyaXB0PS4uL3Jlc291cmNlcy90ZXN0LXV0aWxzLmpzCisvLyBNRVRBOiBzY3JpcHQ9Li4vcmVz
b3VyY2VzL3JzLXV0aWxzLmpzCisndXNlIHN0cmljdCc7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsK
KworICBjb25zdCByYW5kb21Tb3VyY2UgPSBuZXcgUmFuZG9tUHVzaFNvdXJjZSgpOworCisgIGxl
dCBjYW5jZWxsYXRpb25GaW5pc2hlZCA9IGZhbHNlOworICBjb25zdCBycyA9IG5ldyBSZWFkYWJs
ZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgcmFuZG9tU291cmNlLm9uZGF0YSA9IGMu
ZW5xdWV1ZS5iaW5kKGMpOworICAgICAgcmFuZG9tU291cmNlLm9uZW5kID0gYy5jbG9zZS5iaW5k
KGMpOworICAgICAgcmFuZG9tU291cmNlLm9uZXJyb3IgPSBjLmVycm9yLmJpbmQoYyk7CisgICAg
fSwKKworICAgIHB1bGwoKSB7CisgICAgICByYW5kb21Tb3VyY2UucmVhZFN0YXJ0KCk7CisgICAg
fSwKKworICAgIGNhbmNlbCgpIHsKKyAgICAgIHJhbmRvbVNvdXJjZS5yZWFkU3RvcCgpOworCisg
ICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7CisgICAgICAgIHQuc3RlcF90aW1l
b3V0KCgpID0+IHsKKyAgICAgICAgICBjYW5jZWxsYXRpb25GaW5pc2hlZCA9IHRydWU7CisgICAg
ICAgICAgcmVzb2x2ZSgpOworICAgICAgICB9LCAxKTsKKyAgICAgIH0pOworICAgIH0KKyAgfSk7
CisKKyAgY29uc3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7CisKKyAgLy8gV2UgY2FsbCBkZWxh
eSBtdWx0aXBsZSB0aW1lcyB0byBhdm9pZCBjYW5jZWxsaW5nIHRvbyBlYXJseSBmb3IgdGhlCisg
IC8vIHNvdXJjZSB0byBlbnF1ZXVlIGF0IGxlYXN0IG9uZSBjaHVuay4KKyAgY29uc3QgY2FuY2Vs
ID0gZGVsYXkoNSkudGhlbigoKSA9PiBkZWxheSg1KSkudGhlbigoKSA9PiBkZWxheSg1KSkudGhl
bigoKSA9PiB7CisgICAgY29uc3QgY2FuY2VsUHJvbWlzZSA9IHJlYWRlci5jYW5jZWwoKTsKKyAg
ICBhc3NlcnRfZmFsc2UoY2FuY2VsbGF0aW9uRmluaXNoZWQsICdjYW5jZWxsYXRpb24gaW4gc291
cmNlIHNob3VsZCBoYXBwZW4gbGF0ZXInKTsKKyAgICByZXR1cm4gY2FuY2VsUHJvbWlzZTsKKyAg
fSk7CisKKyAgcmV0dXJuIHJlYWRhYmxlU3RyZWFtVG9BcnJheShycywgcmVhZGVyKS50aGVuKGNo
dW5rcyA9PiB7CisgICAgYXNzZXJ0X2dyZWF0ZXJfdGhhbihjaHVua3MubGVuZ3RoLCAwLCAnYXQg
bGVhc3Qgb25lIGNodW5rIHNob3VsZCBiZSByZWFkJyk7CisgICAgZm9yIChsZXQgaSA9IDA7IGkg
PCBjaHVua3MubGVuZ3RoOyBpKyspIHsKKyAgICAgIGFzc2VydF9lcXVhbHMoY2h1bmtzW2ldLmxl
bmd0aCwgMTI4LCAnY2h1bmsgJyArIGkgKyAnIHNob3VsZCBoYXZlIDEyOCBieXRlcycpOworICAg
IH0KKyAgICByZXR1cm4gY2FuY2VsOworICB9KS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfdHJ1
ZShjYW5jZWxsYXRpb25GaW5pc2hlZCwgJ2l0IHJldHVybnMgYSBwcm9taXNlIHRoYXQgaXMgZnVs
ZmlsbGVkIHdoZW4gdGhlIGNhbmNlbGxhdGlvbiBmaW5pc2hlcycpOworICB9KTsKKworfSwgJ1Jl
YWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlvbjogaW50ZWdyYXRpb24gdGVzdCBvbiBhbiBpbmZpbml0
ZSBzdHJlYW0gZGVyaXZlZCBmcm9tIGEgcmFuZG9tIHB1c2ggc291cmNlJyk7CisKK3Rlc3QoKCkg
PT4geworCisgIGxldCByZWNvcmRlZFJlYXNvbjsKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVT
dHJlYW0oeworICAgIGNhbmNlbChyZWFzb24pIHsKKyAgICAgIHJlY29yZGVkUmVhc29uID0gcmVh
c29uOworICAgIH0KKyAgfSk7CisKKyAgY29uc3QgcGFzc2VkUmVhc29uID0gbmV3IEVycm9yKCdT
b3JyeSwgaXQganVzdCB3YXNuXCd0IG1lYW50IHRvIGJlLicpOworICBycy5jYW5jZWwocGFzc2Vk
UmVhc29uKTsKKworICBhc3NlcnRfZXF1YWxzKHJlY29yZGVkUmVhc29uLCBwYXNzZWRSZWFzb24s
CisgICAgJ3RoZSBlcnJvciBwYXNzZWQgdG8gdGhlIHVuZGVybHlpbmcgc291cmNlXCdzIGNhbmNl
bCBtZXRob2Qgc2hvdWxkIGVxdWFsIHRoZSBvbmUgcGFzc2VkIHRvIHRoZSBzdHJlYW1cJ3MgY2Fu
Y2VsJyk7CisKK30sICdSZWFkYWJsZVN0cmVhbSBjYW5jZWxsYXRpb246IGNhbmNlbChyZWFzb24p
IHNob3VsZCBwYXNzIHRocm91Z2ggdGhlIGdpdmVuIHJlYXNvbiB0byB0aGUgdW5kZXJseWluZyBz
b3VyY2UnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKworICBjb25zdCBycyA9IG5ldyBSZWFk
YWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgYy5lbnF1ZXVlKCdhJyk7CisgICAg
ICBjLmNsb3NlKCk7CisgICAgfSwKKyAgICBjYW5jZWwoKSB7CisgICAgICBhc3NlcnRfdW5yZWFj
aGVkKCd1bmRlcmx5aW5nIHNvdXJjZSBjYW5jZWwoKSBzaG91bGQgbm90IGhhdmUgYmVlbiBjYWxs
ZWQnKTsKKyAgICB9CisgIH0pOworCisgIGNvbnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcigpOwor
CisgIHJldHVybiBycy5jYW5jZWwoKS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfdW5yZWFjaGVk
KCdjYW5jZWwoKSBzaG91bGQgYmUgcmVqZWN0ZWQnKTsKKyAgfSwgZSA9PiB7CisgICAgYXNzZXJ0
X2VxdWFscyhlLm5hbWUsICdUeXBlRXJyb3InLCAnY2FuY2VsKCkgc2hvdWxkIGJlIHJlamVjdGVk
IHdpdGggYSBUeXBlRXJyb3InKTsKKyAgfSkudGhlbigoKSA9PiB7CisgICAgcmV0dXJuIHJlYWRl
ci5yZWFkKCk7CisgIH0pLnRoZW4ocmVzdWx0ID0+IHsKKyAgICBhc3NlcnRfb2JqZWN0X2VxdWFs
cyhyZXN1bHQsIHsgdmFsdWU6ICdhJywgZG9uZTogZmFsc2UgfSwgJ3JlYWQoKSBzaG91bGQgc3Rp
bGwgd29yayBhZnRlciB0aGUgYXR0ZW1wdGVkIGNhbmNlbCcpOworICAgIHJldHVybiByZWFkZXIu
Y2xvc2VkOworICB9KTsKKworfSwgJ1JlYWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlvbjogY2FuY2Vs
KCkgb24gYSBsb2NrZWQgc3RyZWFtIHNob3VsZCBmYWlsIGFuZCBub3QgY2FsbCB0aGUgdW5kZXJs
eWluZyBzb3VyY2UgY2FuY2VsJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisKKyAgbGV0IGNh
bmNlbFJlY2VpdmVkID0gZmFsc2U7CisgIGNvbnN0IGNhbmNlbFJlYXNvbiA9IG5ldyBFcnJvcign
SSBhbSB0aXJlZCBvZiB0aGlzIHN0cmVhbSwgSSBwcmVmZXIgdG8gY2FuY2VsIGl0Jyk7CisgIGNv
bnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBjYW5jZWwocmVhc29uKSB7CisgICAg
ICBjYW5jZWxSZWNlaXZlZCA9IHRydWU7CisgICAgICBhc3NlcnRfZXF1YWxzKHJlYXNvbiwgY2Fu
Y2VsUmVhc29uLCAnY2FuY2VsbGF0aW9uIHJlYXNvbiBnaXZlbiB0byB0aGUgdW5kZXJseWluZyBz
b3VyY2Ugc2hvdWxkIGJlIGVxdWFsIHRvIHRoZSBvbmUgcGFzc2VkJyk7CisgICAgfQorICB9KTsK
KworICByZXR1cm4gcnMuY2FuY2VsKGNhbmNlbFJlYXNvbikudGhlbigoKSA9PiB7CisgICAgYXNz
ZXJ0X3RydWUoY2FuY2VsUmVjZWl2ZWQpOworICB9KTsKKworfSwgJ1JlYWRhYmxlU3RyZWFtIGNh
bmNlbGxhdGlvbjogc2hvdWxkIGZ1bGZpbGwgcHJvbWlzZSB3aGVuIGNhbmNlbCBjYWxsYmFjayB3
ZW50IGZpbmUnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKworICBjb25zdCBycyA9IG5ldyBS
ZWFkYWJsZVN0cmVhbSh7CisgICAgY2FuY2VsKCkgeworICAgICAgcmV0dXJuICdIZWxsbyc7Cisg
ICAgfQorICB9KTsKKworICByZXR1cm4gcnMuY2FuY2VsKCkudGhlbih2ID0+IHsKKyAgICBhc3Nl
cnRfZXF1YWxzKHYsIHVuZGVmaW5lZCwgJ2NhbmNlbCgpIHJldHVybiB2YWx1ZSBzaG91bGQgYmUg
ZnVsZmlsbGVkIHdpdGggdW5kZWZpbmVkJyk7CisgIH0pOworCit9LCAnUmVhZGFibGVTdHJlYW0g
Y2FuY2VsbGF0aW9uOiByZXR1cm5pbmcgYSB2YWx1ZSBmcm9tIHRoZSB1bmRlcmx5aW5nIHNvdXJj
ZVwncyBjYW5jZWwgc2hvdWxkIG5vdCBhZmZlY3QgdGhlIGZ1bGZpbGxtZW50IHZhbHVlIG9mIHRo
ZSBwcm9taXNlIHJldHVybmVkIGJ5IHRoZSBzdHJlYW1cJ3MgY2FuY2VsJyk7CisKK3Byb21pc2Vf
dGVzdCgoKSA9PiB7CisKKyAgY29uc3QgdGhyb3duRXJyb3IgPSBuZXcgRXJyb3IoJ3Rlc3QnKTsK
KyAgbGV0IGNhbmNlbENhbGxlZCA9IGZhbHNlOworCisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxl
U3RyZWFtKHsKKyAgICBjYW5jZWwoKSB7CisgICAgICBjYW5jZWxDYWxsZWQgPSB0cnVlOworICAg
ICAgdGhyb3cgdGhyb3duRXJyb3I7CisgICAgfQorICB9KTsKKworICByZXR1cm4gcnMuY2FuY2Vs
KCd0ZXN0JykudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X3VucmVhY2hlZCgnY2FuY2VsIHNob3Vs
ZCByZWplY3QnKTsKKyAgfSwgZSA9PiB7CisgICAgYXNzZXJ0X3RydWUoY2FuY2VsQ2FsbGVkKTsK
KyAgICBhc3NlcnRfZXF1YWxzKGUsIHRocm93bkVycm9yKTsKKyAgfSk7CisKK30sICdSZWFkYWJs
ZVN0cmVhbSBjYW5jZWxsYXRpb246IHNob3VsZCByZWplY3QgcHJvbWlzZSB3aGVuIGNhbmNlbCBj
YWxsYmFjayByYWlzZXMgYW4gZXhjZXB0aW9uJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisK
KyAgY29uc3QgY2FuY2VsUmVhc29uID0gbmV3IEVycm9yKCd0ZXN0Jyk7CisKKyAgY29uc3QgcnMg
PSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIGNhbmNlbChlcnJvcikgeworICAgICAgYXNzZXJ0
X2VxdWFscyhlcnJvciwgY2FuY2VsUmVhc29uKTsKKyAgICAgIHJldHVybiBkZWxheSgxKTsKKyAg
ICB9CisgIH0pOworCisgIHJldHVybiBycy5jYW5jZWwoY2FuY2VsUmVhc29uKTsKKworfSwgJ1Jl
YWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlvbjogaWYgdGhlIHVuZGVybHlpbmcgc291cmNlXCdzIGNh
bmNlbCBtZXRob2QgcmV0dXJucyBhIHByb21pc2UsIHRoZSBwcm9taXNlIHJldHVybmVkIGJ5IHRo
ZSBzdHJlYW1cJ3MgY2FuY2VsIHNob3VsZCBmdWxmaWxsIHdoZW4gdGhhdCBvbmUgZG9lcyAoMSkn
KTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworCisgIGxldCByZXNvbHZlU291cmNlQ2FuY2VsUHJv
bWlzZTsKKyAgbGV0IHNvdXJjZUNhbmNlbFByb21pc2VIYXNGdWxmaWxsZWQgPSBmYWxzZTsKKwor
ICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgY2FuY2VsKCkgeworICAgICAg
Y29uc3Qgc291cmNlQ2FuY2VsUHJvbWlzZSA9IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gcmVzb2x2
ZVNvdXJjZUNhbmNlbFByb21pc2UgPSByZXNvbHZlKTsKKworICAgICAgc291cmNlQ2FuY2VsUHJv
bWlzZS50aGVuKCgpID0+IHsKKyAgICAgICAgc291cmNlQ2FuY2VsUHJvbWlzZUhhc0Z1bGZpbGxl
ZCA9IHRydWU7CisgICAgICB9KTsKKworICAgICAgcmV0dXJuIHNvdXJjZUNhbmNlbFByb21pc2U7
CisgICAgfQorICB9KTsKKworICB0LnN0ZXBfdGltZW91dCgoKSA9PiByZXNvbHZlU291cmNlQ2Fu
Y2VsUHJvbWlzZSgnSGVsbG8nKSwgMSk7CisKKyAgcmV0dXJuIHJzLmNhbmNlbCgpLnRoZW4odmFs
dWUgPT4geworICAgIGFzc2VydF90cnVlKHNvdXJjZUNhbmNlbFByb21pc2VIYXNGdWxmaWxsZWQs
ICdjYW5jZWwoKSByZXR1cm4gdmFsdWUgc2hvdWxkIGJlIGZ1bGZpbGxlZCBvbmx5IGFmdGVyIHRo
ZSBwcm9taXNlIHJldHVybmVkIGJ5IHRoZSB1bmRlcmx5aW5nIHNvdXJjZVwncyBjYW5jZWwnKTsK
KyAgICBhc3NlcnRfZXF1YWxzKHZhbHVlLCB1bmRlZmluZWQsICdjYW5jZWwoKSByZXR1cm4gdmFs
dWUgc2hvdWxkIGJlIGZ1bGZpbGxlZCB3aXRoIHVuZGVmaW5lZCcpOworICB9KTsKKworfSwgJ1Jl
YWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlvbjogaWYgdGhlIHVuZGVybHlpbmcgc291cmNlXCdzIGNh
bmNlbCBtZXRob2QgcmV0dXJucyBhIHByb21pc2UsIHRoZSBwcm9taXNlIHJldHVybmVkIGJ5IHRo
ZSBzdHJlYW1cJ3MgY2FuY2VsIHNob3VsZCBmdWxmaWxsIHdoZW4gdGhhdCBvbmUgZG9lcyAoMikn
KTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworCisgIGxldCByZWplY3RTb3VyY2VDYW5jZWxQcm9t
aXNlOworICBsZXQgc291cmNlQ2FuY2VsUHJvbWlzZUhhc1JlamVjdGVkID0gZmFsc2U7CisKKyAg
Y29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIGNhbmNlbCgpIHsKKyAgICAgIGNv
bnN0IHNvdXJjZUNhbmNlbFByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9
PiByZWplY3RTb3VyY2VDYW5jZWxQcm9taXNlID0gcmVqZWN0KTsKKworICAgICAgc291cmNlQ2Fu
Y2VsUHJvbWlzZS5jYXRjaCgoKSA9PiB7CisgICAgICAgIHNvdXJjZUNhbmNlbFByb21pc2VIYXNS
ZWplY3RlZCA9IHRydWU7CisgICAgICB9KTsKKworICAgICAgcmV0dXJuIHNvdXJjZUNhbmNlbFBy
b21pc2U7CisgICAgfQorICB9KTsKKworICBjb25zdCBlcnJvckluQ2FuY2VsID0gbmV3IEVycm9y
KCdTb3JyeSwgaXQganVzdCB3YXNuXCd0IG1lYW50IHRvIGJlLicpOworCisgIHQuc3RlcF90aW1l
b3V0KCgpID0+IHJlamVjdFNvdXJjZUNhbmNlbFByb21pc2UoZXJyb3JJbkNhbmNlbCksIDEpOwor
CisgIHJldHVybiBycy5jYW5jZWwoKS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfdW5yZWFjaGVk
KCdjYW5jZWwoKSByZXR1cm4gdmFsdWUgc2hvdWxkIGJlIHJlamVjdGVkJyk7CisgIH0sIHIgPT4g
eworICAgIGFzc2VydF90cnVlKHNvdXJjZUNhbmNlbFByb21pc2VIYXNSZWplY3RlZCwgJ2NhbmNl
bCgpIHJldHVybiB2YWx1ZSBzaG91bGQgYmUgcmVqZWN0ZWQgb25seSBhZnRlciB0aGUgcHJvbWlz
ZSByZXR1cm5lZCBieSB0aGUgdW5kZXJseWluZyBzb3VyY2VcJ3MgY2FuY2VsJyk7CisgICAgYXNz
ZXJ0X2VxdWFscyhyLCBlcnJvckluQ2FuY2VsLCAnY2FuY2VsKCkgcmV0dXJuIHZhbHVlIHNob3Vs
ZCBiZSByZWplY3RlZCB3aXRoIHRoZSB1bmRlcmx5aW5nIHNvdXJjZVwncyByZWplY3Rpb24gcmVh
c29uJyk7CisgIH0pOworCit9LCAnUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiBpZiB0aGUg
dW5kZXJseWluZyBzb3VyY2VcJ3MgY2FuY2VsIG1ldGhvZCByZXR1cm5zIGEgcHJvbWlzZSwgdGhl
IHByb21pc2UgcmV0dXJuZWQgYnkgdGhlIHN0cmVhbVwncyBjYW5jZWwgc2hvdWxkIHJlamVjdCB3
aGVuIHRoYXQgb25lIGRvZXMnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKworICBjb25zdCBy
cyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoKSB7CisgICAgICByZXR1cm4gbmV3
IFByb21pc2UoKCkgPT4ge30pOworICAgIH0sCisgICAgcHVsbCgpIHsKKyAgICAgIGFzc2VydF91
bnJlYWNoZWQoJ3B1bGwgc2hvdWxkIG5vdCBoYXZlIGJlZW4gY2FsbGVkJyk7CisgICAgfQorICB9
KTsKKworICByZXR1cm4gUHJvbWlzZS5hbGwoW3JzLmNhbmNlbCgpLCBycy5nZXRSZWFkZXIoKS5j
bG9zZWRdKTsKKworfSwgJ1JlYWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlvbjogY2FuY2VsbGluZyBi
ZWZvcmUgc3RhcnQgZmluaXNoZXMgc2hvdWxkIHByZXZlbnQgcHVsbCgpIGZyb20gYmVpbmcgY2Fs
bGVkJyk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9jYW5jZWwuYW55Lndvcmtlci1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvcmVhZGFibGUtc3RyZWFtcy9jYW5jZWwuYW55Lndvcmtlci1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uODNlYmQ5MTI4Yzk0OWJlMGU4ZGY1YmI0MWIyMWEzNjEyNzMwNzFiYgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2NhbmNlbC5hbnkud29ya2VyLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDEyIEBACisKK1BBU1MgUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiBpbnRlZ3Jh
dGlvbiB0ZXN0IG9uIGFuIGluZmluaXRlIHN0cmVhbSBkZXJpdmVkIGZyb20gYSByYW5kb20gcHVz
aCBzb3VyY2UgCitQQVNTIFJlYWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlvbjogY2FuY2VsKHJlYXNv
bikgc2hvdWxkIHBhc3MgdGhyb3VnaCB0aGUgZ2l2ZW4gcmVhc29uIHRvIHRoZSB1bmRlcmx5aW5n
IHNvdXJjZSAKK1BBU1MgUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiBjYW5jZWwoKSBvbiBh
IGxvY2tlZCBzdHJlYW0gc2hvdWxkIGZhaWwgYW5kIG5vdCBjYWxsIHRoZSB1bmRlcmx5aW5nIHNv
dXJjZSBjYW5jZWwgCitQQVNTIFJlYWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlvbjogc2hvdWxkIGZ1
bGZpbGwgcHJvbWlzZSB3aGVuIGNhbmNlbCBjYWxsYmFjayB3ZW50IGZpbmUgCitQQVNTIFJlYWRh
YmxlU3RyZWFtIGNhbmNlbGxhdGlvbjogcmV0dXJuaW5nIGEgdmFsdWUgZnJvbSB0aGUgdW5kZXJs
eWluZyBzb3VyY2UncyBjYW5jZWwgc2hvdWxkIG5vdCBhZmZlY3QgdGhlIGZ1bGZpbGxtZW50IHZh
bHVlIG9mIHRoZSBwcm9taXNlIHJldHVybmVkIGJ5IHRoZSBzdHJlYW0ncyBjYW5jZWwgCitQQVNT
IFJlYWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlvbjogc2hvdWxkIHJlamVjdCBwcm9taXNlIHdoZW4g
Y2FuY2VsIGNhbGxiYWNrIHJhaXNlcyBhbiBleGNlcHRpb24gCitQQVNTIFJlYWRhYmxlU3RyZWFt
IGNhbmNlbGxhdGlvbjogaWYgdGhlIHVuZGVybHlpbmcgc291cmNlJ3MgY2FuY2VsIG1ldGhvZCBy
ZXR1cm5zIGEgcHJvbWlzZSwgdGhlIHByb21pc2UgcmV0dXJuZWQgYnkgdGhlIHN0cmVhbSdzIGNh
bmNlbCBzaG91bGQgZnVsZmlsbCB3aGVuIHRoYXQgb25lIGRvZXMgKDEpIAorUEFTUyBSZWFkYWJs
ZVN0cmVhbSBjYW5jZWxsYXRpb246IGlmIHRoZSB1bmRlcmx5aW5nIHNvdXJjZSdzIGNhbmNlbCBt
ZXRob2QgcmV0dXJucyBhIHByb21pc2UsIHRoZSBwcm9taXNlIHJldHVybmVkIGJ5IHRoZSBzdHJl
YW0ncyBjYW5jZWwgc2hvdWxkIGZ1bGZpbGwgd2hlbiB0aGF0IG9uZSBkb2VzICgyKSAKK1BBU1Mg
UmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiBpZiB0aGUgdW5kZXJseWluZyBzb3VyY2UncyBj
YW5jZWwgbWV0aG9kIHJldHVybnMgYSBwcm9taXNlLCB0aGUgcHJvbWlzZSByZXR1cm5lZCBieSB0
aGUgc3RyZWFtJ3MgY2FuY2VsIHNob3VsZCByZWplY3Qgd2hlbiB0aGF0IG9uZSBkb2VzIAorUEFT
UyBSZWFkYWJsZVN0cmVhbSBjYW5jZWxsYXRpb246IGNhbmNlbGxpbmcgYmVmb3JlIHN0YXJ0IGZp
bmlzaGVzIHNob3VsZCBwcmV2ZW50IHB1bGwoKSBmcm9tIGJlaW5nIGNhbGxlZCAKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
L3JlYWRhYmxlLXN0cmVhbXMvY2FuY2VsLmFueS53b3JrZXIuaHRtbCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2Nh
bmNlbC5hbnkud29ya2VyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjM4MjkxMzUyOGU2OTNiM2E1ZDU2YzY2
MGE0NTA2MDk4MGI1NDhjMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2NhbmNlbC5h
bnkud29ya2VyLmh0bWwKQEAgLTAsMCArMSBAQAorPCEtLSBUaGlzIGZpbGUgaXMgcmVxdWlyZWQg
Zm9yIFdlYktpdCB0ZXN0IGluZnJhc3RydWN0dXJlIHRvIHJ1biB0aGUgdGVtcGxhdGVkIHRlc3Qg
LS0+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMv
Y2FuY2VsLmRlZGljYXRlZHdvcmtlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9jYW5jZWwu
ZGVkaWNhdGVkd29ya2VyLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggODNlYmQ5MTI4Yzk0OWJlMGU4ZGY1YmI0MWIyMWEzNjEyNzMwNzFiYi4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9jYW5jZWwuZGVk
aWNhdGVkd29ya2VyLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAK
LQotUEFTUyBSZWFkYWJsZVN0cmVhbSBjYW5jZWxsYXRpb246IGludGVncmF0aW9uIHRlc3Qgb24g
YW4gaW5maW5pdGUgc3RyZWFtIGRlcml2ZWQgZnJvbSBhIHJhbmRvbSBwdXNoIHNvdXJjZSAKLVBB
U1MgUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiBjYW5jZWwocmVhc29uKSBzaG91bGQgcGFz
cyB0aHJvdWdoIHRoZSBnaXZlbiByZWFzb24gdG8gdGhlIHVuZGVybHlpbmcgc291cmNlIAotUEFT
UyBSZWFkYWJsZVN0cmVhbSBjYW5jZWxsYXRpb246IGNhbmNlbCgpIG9uIGEgbG9ja2VkIHN0cmVh
bSBzaG91bGQgZmFpbCBhbmQgbm90IGNhbGwgdGhlIHVuZGVybHlpbmcgc291cmNlIGNhbmNlbCAK
LVBBU1MgUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiBzaG91bGQgZnVsZmlsbCBwcm9taXNl
IHdoZW4gY2FuY2VsIGNhbGxiYWNrIHdlbnQgZmluZSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gY2Fu
Y2VsbGF0aW9uOiByZXR1cm5pbmcgYSB2YWx1ZSBmcm9tIHRoZSB1bmRlcmx5aW5nIHNvdXJjZSdz
IGNhbmNlbCBzaG91bGQgbm90IGFmZmVjdCB0aGUgZnVsZmlsbG1lbnQgdmFsdWUgb2YgdGhlIHBy
b21pc2UgcmV0dXJuZWQgYnkgdGhlIHN0cmVhbSdzIGNhbmNlbCAKLVBBU1MgUmVhZGFibGVTdHJl
YW0gY2FuY2VsbGF0aW9uOiBzaG91bGQgcmVqZWN0IHByb21pc2Ugd2hlbiBjYW5jZWwgY2FsbGJh
Y2sgcmFpc2VzIGFuIGV4Y2VwdGlvbiAKLVBBU1MgUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9u
OiBpZiB0aGUgdW5kZXJseWluZyBzb3VyY2UncyBjYW5jZWwgbWV0aG9kIHJldHVybnMgYSBwcm9t
aXNlLCB0aGUgcHJvbWlzZSByZXR1cm5lZCBieSB0aGUgc3RyZWFtJ3MgY2FuY2VsIHNob3VsZCBm
dWxmaWxsIHdoZW4gdGhhdCBvbmUgZG9lcyAoMSkgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIGNhbmNl
bGxhdGlvbjogaWYgdGhlIHVuZGVybHlpbmcgc291cmNlJ3MgY2FuY2VsIG1ldGhvZCByZXR1cm5z
IGEgcHJvbWlzZSwgdGhlIHByb21pc2UgcmV0dXJuZWQgYnkgdGhlIHN0cmVhbSdzIGNhbmNlbCBz
aG91bGQgZnVsZmlsbCB3aGVuIHRoYXQgb25lIGRvZXMgKDIpIAotUEFTUyBSZWFkYWJsZVN0cmVh
bSBjYW5jZWxsYXRpb246IGlmIHRoZSB1bmRlcmx5aW5nIHNvdXJjZSdzIGNhbmNlbCBtZXRob2Qg
cmV0dXJucyBhIHByb21pc2UsIHRoZSBwcm9taXNlIHJldHVybmVkIGJ5IHRoZSBzdHJlYW0ncyBj
YW5jZWwgc2hvdWxkIHJlamVjdCB3aGVuIHRoYXQgb25lIGRvZXMgCi1QQVNTIFJlYWRhYmxlU3Ry
ZWFtIGNhbmNlbGxhdGlvbjogY2FuY2VsbGluZyBiZWZvcmUgc3RhcnQgZmluaXNoZXMgc2hvdWxk
IHByZXZlbnQgcHVsbCgpIGZyb20gYmVpbmcgY2FsbGVkIAotCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3Ry
ZWFtcy9jYW5jZWwuZGVkaWNhdGVkd29ya2VyLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9jYW5jZWwuZGVk
aWNhdGVkd29ya2VyLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIzZDBiNTM0
NWFiZWNiMmU0NmM4NWMzNmIzM2JiYWQyYjc5MjdmODIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvY2FuY2VsLmRlZGljYXRlZHdvcmtl
ci5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08
bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08dGl0bGU+Y2FuY2VsLmpzIGRlZGljYXRlZCB3b3JrZXIg
d3JhcHBlciBmaWxlPC90aXRsZT4KLQotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5l
c3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBv
cnQuanMiPjwvc2NyaXB0PgotCi08c2NyaXB0PgotJ3VzZSBzdHJpY3QnOwotZmV0Y2hfdGVzdHNf
ZnJvbV93b3JrZXIobmV3IFdvcmtlcignY2FuY2VsLmpzJykpOwotPC9zY3JpcHQ+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
cmVhZGFibGUtc3RyZWFtcy9jYW5jZWwuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2NhbmNlbC5odG1sCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNTBhNDllYWRkMmExODI2ODNkOTFmM2M1OTQ2
YTczYzYzYzg2ZWRjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9y
ZWFkYWJsZS1zdHJlYW1zL2NhbmNlbC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBA
QAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08dGl0bGU+Y2FuY2Vs
LmpzIGJyb3dzZXIgY29udGV4dCB3cmFwcGVyIGZpbGU8L3RpdGxlPgotCi08c2NyaXB0IHNyYz0i
L3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3Jlc291
cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci0KLTxzY3JpcHQgc3JjPSIuLi9y
ZXNvdXJjZXMvdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3Vy
Y2VzL3JzLXV0aWxzLmpzIj48L3NjcmlwdD4KLQotPHNjcmlwdCBzcmM9ImNhbmNlbC5qcyI+PC9z
Y3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9jYW5jZWwuanMgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9j
YW5jZWwuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY4ZjdlZWM3N2NjNDEyNGZj
NzAyY2I1MGQwNjVmMmVjN2ViMWQ2MGUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvY2FuY2VsLmpzCisrKyAvZGV2L251bGwKQEAgLTEs
MjQxICswLDAgQEAKLSd1c2Ugc3RyaWN0JzsKLQotaWYgKHNlbGYuaW1wb3J0U2NyaXB0cykgewot
ICBzZWxmLmltcG9ydFNjcmlwdHMoJy4uL3Jlc291cmNlcy90ZXN0LXV0aWxzLmpzJyk7Ci0gIHNl
bGYuaW1wb3J0U2NyaXB0cygnLi4vcmVzb3VyY2VzL3JzLXV0aWxzLmpzJyk7Ci0gIHNlbGYuaW1w
b3J0U2NyaXB0cygnL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcycpOwotfQotCi1wcm9taXNlX3Rl
c3QoKCkgPT4gewotCi0gIGNvbnN0IHJhbmRvbVNvdXJjZSA9IG5ldyBSYW5kb21QdXNoU291cmNl
KCk7Ci0KLSAgbGV0IGNhbmNlbGxhdGlvbkZpbmlzaGVkID0gZmFsc2U7Ci0gIGNvbnN0IHJzID0g
bmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0gICAgICByYW5kb21Tb3VyY2Uu
b25kYXRhID0gYy5lbnF1ZXVlLmJpbmQoYyk7Ci0gICAgICByYW5kb21Tb3VyY2Uub25lbmQgPSBj
LmNsb3NlLmJpbmQoYyk7Ci0gICAgICByYW5kb21Tb3VyY2Uub25lcnJvciA9IGMuZXJyb3IuYmlu
ZChjKTsKLSAgICB9LAotCi0gICAgcHVsbCgpIHsKLSAgICAgIHJhbmRvbVNvdXJjZS5yZWFkU3Rh
cnQoKTsKLSAgICB9LAotCi0gICAgY2FuY2VsKCkgewotICAgICAgcmFuZG9tU291cmNlLnJlYWRT
dG9wKCk7Ci0KLSAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKLSAgICAgICAg
c2V0VGltZW91dCgoKSA9PiB7Ci0gICAgICAgICAgY2FuY2VsbGF0aW9uRmluaXNoZWQgPSB0cnVl
OwotICAgICAgICAgIHJlc29sdmUoKTsKLSAgICAgICAgfSwgMSk7Ci0gICAgICB9KTsKLSAgICB9
Ci0gIH0pOwotCi0gIGNvbnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcigpOwotCi0gIC8vIFdlIGNh
bGwgZGVsYXkgbXVsdGlwbGUgdGltZXMgdG8gYXZvaWQgY2FuY2VsbGluZyB0b28gZWFybHkgZm9y
IHRoZQotICAvLyBzb3VyY2UgdG8gZW5xdWV1ZSBhdCBsZWFzdCBvbmUgY2h1bmsuCi0gIGNvbnN0
IGNhbmNlbCA9IGRlbGF5KDUpLnRoZW4oKCkgPT4gZGVsYXkoNSkpLnRoZW4oKCkgPT4gZGVsYXko
NSkpLnRoZW4oKCkgPT4gewotICAgIGNvbnN0IGNhbmNlbFByb21pc2UgPSByZWFkZXIuY2FuY2Vs
KCk7Ci0gICAgYXNzZXJ0X2ZhbHNlKGNhbmNlbGxhdGlvbkZpbmlzaGVkLCAnY2FuY2VsbGF0aW9u
IGluIHNvdXJjZSBzaG91bGQgaGFwcGVuIGxhdGVyJyk7Ci0gICAgcmV0dXJuIGNhbmNlbFByb21p
c2U7Ci0gIH0pOwotCi0gIHJldHVybiByZWFkYWJsZVN0cmVhbVRvQXJyYXkocnMsIHJlYWRlciku
dGhlbihjaHVua3MgPT4gewotICAgIGFzc2VydF9ncmVhdGVyX3RoYW4oY2h1bmtzLmxlbmd0aCwg
MCwgJ2F0IGxlYXN0IG9uZSBjaHVuayBzaG91bGQgYmUgcmVhZCcpOwotICAgIGZvciAobGV0IGkg
PSAwOyBpIDwgY2h1bmtzLmxlbmd0aDsgaSsrKSB7Ci0gICAgICBhc3NlcnRfZXF1YWxzKGNodW5r
c1tpXS5sZW5ndGgsIDEyOCwgJ2NodW5rICcgKyBpICsgJyBzaG91bGQgaGF2ZSAxMjggYnl0ZXMn
KTsKLSAgICB9Ci0gICAgcmV0dXJuIGNhbmNlbDsKLSAgfSkudGhlbigoKSA9PiB7Ci0gICAgYXNz
ZXJ0X3RydWUoY2FuY2VsbGF0aW9uRmluaXNoZWQsICdpdCByZXR1cm5zIGEgcHJvbWlzZSB0aGF0
IGlzIGZ1bGZpbGxlZCB3aGVuIHRoZSBjYW5jZWxsYXRpb24gZmluaXNoZXMnKTsKLSAgfSk7Ci0K
LX0sICdSZWFkYWJsZVN0cmVhbSBjYW5jZWxsYXRpb246IGludGVncmF0aW9uIHRlc3Qgb24gYW4g
aW5maW5pdGUgc3RyZWFtIGRlcml2ZWQgZnJvbSBhIHJhbmRvbSBwdXNoIHNvdXJjZScpOwotCi10
ZXN0KCgpID0+IHsKLQotICBsZXQgcmVjb3JkZWRSZWFzb247Ci0gIGNvbnN0IHJzID0gbmV3IFJl
YWRhYmxlU3RyZWFtKHsKLSAgICBjYW5jZWwocmVhc29uKSB7Ci0gICAgICByZWNvcmRlZFJlYXNv
biA9IHJlYXNvbjsKLSAgICB9Ci0gIH0pOwotCi0gIGNvbnN0IHBhc3NlZFJlYXNvbiA9IG5ldyBF
cnJvcignU29ycnksIGl0IGp1c3Qgd2FzblwndCBtZWFudCB0byBiZS4nKTsKLSAgcnMuY2FuY2Vs
KHBhc3NlZFJlYXNvbik7Ci0KLSAgYXNzZXJ0X2VxdWFscyhyZWNvcmRlZFJlYXNvbiwgcGFzc2Vk
UmVhc29uLAotICAgICd0aGUgZXJyb3IgcGFzc2VkIHRvIHRoZSB1bmRlcmx5aW5nIHNvdXJjZVwn
cyBjYW5jZWwgbWV0aG9kIHNob3VsZCBlcXVhbCB0aGUgb25lIHBhc3NlZCB0byB0aGUgc3RyZWFt
XCdzIGNhbmNlbCcpOwotCi19LCAnUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiBjYW5jZWwo
cmVhc29uKSBzaG91bGQgcGFzcyB0aHJvdWdoIHRoZSBnaXZlbiByZWFzb24gdG8gdGhlIHVuZGVy
bHlpbmcgc291cmNlJyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgY29uc3QgcnMgPSBu
ZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGMuZW5xdWV1ZSgnYScp
OwotICAgICAgYy5jbG9zZSgpOwotICAgIH0sCi0gICAgY2FuY2VsKCkgewotICAgICAgYXNzZXJ0
X3VucmVhY2hlZCgndW5kZXJseWluZyBzb3VyY2UgY2FuY2VsKCkgc2hvdWxkIG5vdCBoYXZlIGJl
ZW4gY2FsbGVkJyk7Ci0gICAgfQotICB9KTsKLQotICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFk
ZXIoKTsKLQotICByZXR1cm4gcnMuY2FuY2VsKCkudGhlbigoKSA9PiB7Ci0gICAgYXNzZXJ0X3Vu
cmVhY2hlZCgnY2FuY2VsKCkgc2hvdWxkIGJlIHJlamVjdGVkJyk7Ci0gIH0sIGUgPT4gewotICAg
IGFzc2VydF9lcXVhbHMoZS5uYW1lLCAnVHlwZUVycm9yJywgJ2NhbmNlbCgpIHNob3VsZCBiZSBy
ZWplY3RlZCB3aXRoIGEgVHlwZUVycm9yJyk7Ci0gIH0pLnRoZW4oKCkgPT4gewotICAgIHJldHVy
biByZWFkZXIucmVhZCgpOwotICB9KS50aGVuKHJlc3VsdCA9PiB7Ci0gICAgYXNzZXJ0X29iamVj
dF9lcXVhbHMocmVzdWx0LCB7IHZhbHVlOiAnYScsIGRvbmU6IGZhbHNlIH0sICdyZWFkKCkgc2hv
dWxkIHN0aWxsIHdvcmsgYWZ0ZXIgdGhlIGF0dGVtcHRlZCBjYW5jZWwnKTsKLSAgICByZXR1cm4g
cmVhZGVyLmNsb3NlZDsKLSAgfSk7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbSBjYW5jZWxsYXRpb246
IGNhbmNlbCgpIG9uIGEgbG9ja2VkIHN0cmVhbSBzaG91bGQgZmFpbCBhbmQgbm90IGNhbGwgdGhl
IHVuZGVybHlpbmcgc291cmNlIGNhbmNlbCcpOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotCi0g
IGxldCBjYW5jZWxSZWNlaXZlZCA9IGZhbHNlOwotICBjb25zdCBjYW5jZWxSZWFzb24gPSBuZXcg
RXJyb3IoJ0kgYW0gdGlyZWQgb2YgdGhpcyBzdHJlYW0sIEkgcHJlZmVyIHRvIGNhbmNlbCBpdCcp
OwotICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgY2FuY2VsKHJlYXNvbikg
ewotICAgICAgY2FuY2VsUmVjZWl2ZWQgPSB0cnVlOwotICAgICAgYXNzZXJ0X2VxdWFscyhyZWFz
b24sIGNhbmNlbFJlYXNvbiwgJ2NhbmNlbGxhdGlvbiByZWFzb24gZ2l2ZW4gdG8gdGhlIHVuZGVy
bHlpbmcgc291cmNlIHNob3VsZCBiZSBlcXVhbCB0byB0aGUgb25lIHBhc3NlZCcpOwotICAgIH0K
LSAgfSk7Ci0KLSAgcmV0dXJuIHJzLmNhbmNlbChjYW5jZWxSZWFzb24pLnRoZW4oKCkgPT4gewot
ICAgIGFzc2VydF90cnVlKGNhbmNlbFJlY2VpdmVkKTsKLSAgfSk7Ci0KLX0sICdSZWFkYWJsZVN0
cmVhbSBjYW5jZWxsYXRpb246IHNob3VsZCBmdWxmaWxsIHByb21pc2Ugd2hlbiBjYW5jZWwgY2Fs
bGJhY2sgd2VudCBmaW5lJyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgY29uc3QgcnMg
PSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIGNhbmNlbCgpIHsKLSAgICAgIHJldHVybiAnSGVs
bG8nOwotICAgIH0KLSAgfSk7Ci0KLSAgcmV0dXJuIHJzLmNhbmNlbCgpLnRoZW4odiA9PiB7Ci0g
ICAgYXNzZXJ0X2VxdWFscyh2LCB1bmRlZmluZWQsICdjYW5jZWwoKSByZXR1cm4gdmFsdWUgc2hv
dWxkIGJlIGZ1bGZpbGxlZCB3aXRoIHVuZGVmaW5lZCcpOwotICB9KTsKLQotfSwgJ1JlYWRhYmxl
U3RyZWFtIGNhbmNlbGxhdGlvbjogcmV0dXJuaW5nIGEgdmFsdWUgZnJvbSB0aGUgdW5kZXJseWlu
ZyBzb3VyY2VcJ3MgY2FuY2VsIHNob3VsZCBub3QgYWZmZWN0IHRoZSBmdWxmaWxsbWVudCB2YWx1
ZSBvZiB0aGUgcHJvbWlzZSByZXR1cm5lZCBieSB0aGUgc3RyZWFtXCdzIGNhbmNlbCcpOwotCi1w
cm9taXNlX3Rlc3QoKCkgPT4gewotCi0gIGNvbnN0IHRocm93bkVycm9yID0gbmV3IEVycm9yKCd0
ZXN0Jyk7Ci0gIGxldCBjYW5jZWxDYWxsZWQgPSBmYWxzZTsKLQotICBjb25zdCBycyA9IG5ldyBS
ZWFkYWJsZVN0cmVhbSh7Ci0gICAgY2FuY2VsKCkgewotICAgICAgY2FuY2VsQ2FsbGVkID0gdHJ1
ZTsKLSAgICAgIHRocm93IHRocm93bkVycm9yOwotICAgIH0KLSAgfSk7Ci0KLSAgcmV0dXJuIHJz
LmNhbmNlbCgndGVzdCcpLnRoZW4oKCkgPT4gewotICAgIGFzc2VydF91bnJlYWNoZWQoJ2NhbmNl
bCBzaG91bGQgcmVqZWN0Jyk7Ci0gIH0sIGUgPT4gewotICAgIGFzc2VydF90cnVlKGNhbmNlbENh
bGxlZCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhlLCB0aHJvd25FcnJvcik7Ci0gIH0pOwotCi19LCAn
UmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiBzaG91bGQgcmVqZWN0IHByb21pc2Ugd2hlbiBj
YW5jZWwgY2FsbGJhY2sgcmFpc2VzIGFuIGV4Y2VwdGlvbicpOwotCi1wcm9taXNlX3Rlc3QoKCkg
PT4gewotCi0gIGNvbnN0IGNhbmNlbFJlYXNvbiA9IG5ldyBFcnJvcigndGVzdCcpOwotCi0gIGNv
bnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBjYW5jZWwoZXJyb3IpIHsKLSAgICAg
IGFzc2VydF9lcXVhbHMoZXJyb3IsIGNhbmNlbFJlYXNvbik7Ci0gICAgICByZXR1cm4gZGVsYXko
MSk7Ci0gICAgfQotICB9KTsKLQotICByZXR1cm4gcnMuY2FuY2VsKGNhbmNlbFJlYXNvbik7Ci0K
LX0sICdSZWFkYWJsZVN0cmVhbSBjYW5jZWxsYXRpb246IGlmIHRoZSB1bmRlcmx5aW5nIHNvdXJj
ZVwncyBjYW5jZWwgbWV0aG9kIHJldHVybnMgYSBwcm9taXNlLCB0aGUgcHJvbWlzZSByZXR1cm5l
ZCBieSB0aGUgc3RyZWFtXCdzIGNhbmNlbCBzaG91bGQgZnVsZmlsbCB3aGVuIHRoYXQgb25lIGRv
ZXMgKDEpJyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgbGV0IHJlc29sdmVTb3VyY2VD
YW5jZWxQcm9taXNlOwotICBsZXQgc291cmNlQ2FuY2VsUHJvbWlzZUhhc0Z1bGZpbGxlZCA9IGZh
bHNlOwotCi0gIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBjYW5jZWwoKSB7
Ci0gICAgICBjb25zdCBzb3VyY2VDYW5jZWxQcm9taXNlID0gbmV3IFByb21pc2UocmVzb2x2ZSA9
PiByZXNvbHZlU291cmNlQ2FuY2VsUHJvbWlzZSA9IHJlc29sdmUpOwotCi0gICAgICBzb3VyY2VD
YW5jZWxQcm9taXNlLnRoZW4oKCkgPT4gewotICAgICAgICBzb3VyY2VDYW5jZWxQcm9taXNlSGFz
RnVsZmlsbGVkID0gdHJ1ZTsKLSAgICAgIH0pOwotCi0gICAgICByZXR1cm4gc291cmNlQ2FuY2Vs
UHJvbWlzZTsKLSAgICB9Ci0gIH0pOwotCi0gIHNldFRpbWVvdXQoKCkgPT4gcmVzb2x2ZVNvdXJj
ZUNhbmNlbFByb21pc2UoJ0hlbGxvJyksIDEpOwotCi0gIHJldHVybiBycy5jYW5jZWwoKS50aGVu
KHZhbHVlID0+IHsKLSAgICBhc3NlcnRfdHJ1ZShzb3VyY2VDYW5jZWxQcm9taXNlSGFzRnVsZmls
bGVkLCAnY2FuY2VsKCkgcmV0dXJuIHZhbHVlIHNob3VsZCBiZSBmdWxmaWxsZWQgb25seSBhZnRl
ciB0aGUgcHJvbWlzZSByZXR1cm5lZCBieSB0aGUgdW5kZXJseWluZyBzb3VyY2VcJ3MgY2FuY2Vs
Jyk7Ci0gICAgYXNzZXJ0X2VxdWFscyh2YWx1ZSwgdW5kZWZpbmVkLCAnY2FuY2VsKCkgcmV0dXJu
IHZhbHVlIHNob3VsZCBiZSBmdWxmaWxsZWQgd2l0aCB1bmRlZmluZWQnKTsKLSAgfSk7Ci0KLX0s
ICdSZWFkYWJsZVN0cmVhbSBjYW5jZWxsYXRpb246IGlmIHRoZSB1bmRlcmx5aW5nIHNvdXJjZVwn
cyBjYW5jZWwgbWV0aG9kIHJldHVybnMgYSBwcm9taXNlLCB0aGUgcHJvbWlzZSByZXR1cm5lZCBi
eSB0aGUgc3RyZWFtXCdzIGNhbmNlbCBzaG91bGQgZnVsZmlsbCB3aGVuIHRoYXQgb25lIGRvZXMg
KDIpJyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgbGV0IHJlamVjdFNvdXJjZUNhbmNl
bFByb21pc2U7Ci0gIGxldCBzb3VyY2VDYW5jZWxQcm9taXNlSGFzUmVqZWN0ZWQgPSBmYWxzZTsK
LQotICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgY2FuY2VsKCkgewotICAg
ICAgY29uc3Qgc291cmNlQ2FuY2VsUHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWpl
Y3QpID0+IHJlamVjdFNvdXJjZUNhbmNlbFByb21pc2UgPSByZWplY3QpOwotCi0gICAgICBzb3Vy
Y2VDYW5jZWxQcm9taXNlLmNhdGNoKCgpID0+IHsKLSAgICAgICAgc291cmNlQ2FuY2VsUHJvbWlz
ZUhhc1JlamVjdGVkID0gdHJ1ZTsKLSAgICAgIH0pOwotCi0gICAgICByZXR1cm4gc291cmNlQ2Fu
Y2VsUHJvbWlzZTsKLSAgICB9Ci0gIH0pOwotCi0gIGNvbnN0IGVycm9ySW5DYW5jZWwgPSBuZXcg
RXJyb3IoJ1NvcnJ5LCBpdCBqdXN0IHdhc25cJ3QgbWVhbnQgdG8gYmUuJyk7Ci0KLSAgc2V0VGlt
ZW91dCgoKSA9PiByZWplY3RTb3VyY2VDYW5jZWxQcm9taXNlKGVycm9ySW5DYW5jZWwpLCAxKTsK
LQotICByZXR1cm4gcnMuY2FuY2VsKCkudGhlbigoKSA9PiB7Ci0gICAgYXNzZXJ0X3VucmVhY2hl
ZCgnY2FuY2VsKCkgcmV0dXJuIHZhbHVlIHNob3VsZCBiZSByZWplY3RlZCcpOwotICB9LCByID0+
IHsKLSAgICBhc3NlcnRfdHJ1ZShzb3VyY2VDYW5jZWxQcm9taXNlSGFzUmVqZWN0ZWQsICdjYW5j
ZWwoKSByZXR1cm4gdmFsdWUgc2hvdWxkIGJlIHJlamVjdGVkIG9ubHkgYWZ0ZXIgdGhlIHByb21p
c2UgcmV0dXJuZWQgYnkgdGhlIHVuZGVybHlpbmcgc291cmNlXCdzIGNhbmNlbCcpOwotICAgIGFz
c2VydF9lcXVhbHMociwgZXJyb3JJbkNhbmNlbCwgJ2NhbmNlbCgpIHJldHVybiB2YWx1ZSBzaG91
bGQgYmUgcmVqZWN0ZWQgd2l0aCB0aGUgdW5kZXJseWluZyBzb3VyY2VcJ3MgcmVqZWN0aW9uIHJl
YXNvbicpOwotICB9KTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlvbjogaWYgdGhl
IHVuZGVybHlpbmcgc291cmNlXCdzIGNhbmNlbCBtZXRob2QgcmV0dXJucyBhIHByb21pc2UsIHRo
ZSBwcm9taXNlIHJldHVybmVkIGJ5IHRoZSBzdHJlYW1cJ3MgY2FuY2VsIHNob3VsZCByZWplY3Qg
d2hlbiB0aGF0IG9uZSBkb2VzJyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgY29uc3Qg
cnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KCkgewotICAgICAgcmV0dXJuIG5l
dyBQcm9taXNlKCgpID0+IHt9KTsKLSAgICB9LAotICAgIHB1bGwoKSB7Ci0gICAgICBhc3NlcnRf
dW5yZWFjaGVkKCdwdWxsIHNob3VsZCBub3QgaGF2ZSBiZWVuIGNhbGxlZCcpOwotICAgIH0KLSAg
fSk7Ci0KLSAgcmV0dXJuIFByb21pc2UuYWxsKFtycy5jYW5jZWwoKSwgcnMuZ2V0UmVhZGVyKCku
Y2xvc2VkXSk7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbSBjYW5jZWxsYXRpb246IGNhbmNlbGxpbmcg
YmVmb3JlIHN0YXJ0IGZpbmlzaGVzIHNob3VsZCBwcmV2ZW50IHB1bGwoKSBmcm9tIGJlaW5nIGNh
bGxlZCcpOwotCi1kb25lKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9jYW5jZWwuc2Vydmlj
ZXdvcmtlci5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9jYW5jZWwuc2VydmljZXdv
cmtlci5odHRwcy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU0
MTg3YzhhNWFkZjE4YTcxZWE0OTY2NzY2Yzk0YjI0YzBhNWNkNTkuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvY2FuY2VsLnNlcnZpY2V3
b3JrZXIuaHR0cHMtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAot
Ci1QQVNTIFNlcnZpY2Ugd29ya2VyIHRlc3Qgc2V0dXAgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIGNh
bmNlbGxhdGlvbjogaW50ZWdyYXRpb24gdGVzdCBvbiBhbiBpbmZpbml0ZSBzdHJlYW0gZGVyaXZl
ZCBmcm9tIGEgcmFuZG9tIHB1c2ggc291cmNlIAotUEFTUyBSZWFkYWJsZVN0cmVhbSBjYW5jZWxs
YXRpb246IGNhbmNlbChyZWFzb24pIHNob3VsZCBwYXNzIHRocm91Z2ggdGhlIGdpdmVuIHJlYXNv
biB0byB0aGUgdW5kZXJseWluZyBzb3VyY2UgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIGNhbmNlbGxh
dGlvbjogY2FuY2VsKCkgb24gYSBsb2NrZWQgc3RyZWFtIHNob3VsZCBmYWlsIGFuZCBub3QgY2Fs
bCB0aGUgdW5kZXJseWluZyBzb3VyY2UgY2FuY2VsIAotUEFTUyBSZWFkYWJsZVN0cmVhbSBjYW5j
ZWxsYXRpb246IHNob3VsZCBmdWxmaWxsIHByb21pc2Ugd2hlbiBjYW5jZWwgY2FsbGJhY2sgd2Vu
dCBmaW5lIAotUEFTUyBSZWFkYWJsZVN0cmVhbSBjYW5jZWxsYXRpb246IHJldHVybmluZyBhIHZh
bHVlIGZyb20gdGhlIHVuZGVybHlpbmcgc291cmNlJ3MgY2FuY2VsIHNob3VsZCBub3QgYWZmZWN0
IHRoZSBmdWxmaWxsbWVudCB2YWx1ZSBvZiB0aGUgcHJvbWlzZSByZXR1cm5lZCBieSB0aGUgc3Ry
ZWFtJ3MgY2FuY2VsIAotUEFTUyBSZWFkYWJsZVN0cmVhbSBjYW5jZWxsYXRpb246IHNob3VsZCBy
ZWplY3QgcHJvbWlzZSB3aGVuIGNhbmNlbCBjYWxsYmFjayByYWlzZXMgYW4gZXhjZXB0aW9uIAot
UEFTUyBSZWFkYWJsZVN0cmVhbSBjYW5jZWxsYXRpb246IGlmIHRoZSB1bmRlcmx5aW5nIHNvdXJj
ZSdzIGNhbmNlbCBtZXRob2QgcmV0dXJucyBhIHByb21pc2UsIHRoZSBwcm9taXNlIHJldHVybmVk
IGJ5IHRoZSBzdHJlYW0ncyBjYW5jZWwgc2hvdWxkIGZ1bGZpbGwgd2hlbiB0aGF0IG9uZSBkb2Vz
ICgxKSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiBpZiB0aGUgdW5kZXJseWlu
ZyBzb3VyY2UncyBjYW5jZWwgbWV0aG9kIHJldHVybnMgYSBwcm9taXNlLCB0aGUgcHJvbWlzZSBy
ZXR1cm5lZCBieSB0aGUgc3RyZWFtJ3MgY2FuY2VsIHNob3VsZCBmdWxmaWxsIHdoZW4gdGhhdCBv
bmUgZG9lcyAoMikgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlvbjogaWYgdGhlIHVu
ZGVybHlpbmcgc291cmNlJ3MgY2FuY2VsIG1ldGhvZCByZXR1cm5zIGEgcHJvbWlzZSwgdGhlIHBy
b21pc2UgcmV0dXJuZWQgYnkgdGhlIHN0cmVhbSdzIGNhbmNlbCBzaG91bGQgcmVqZWN0IHdoZW4g
dGhhdCBvbmUgZG9lcyAKLVBBU1MgUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiBjYW5jZWxs
aW5nIGJlZm9yZSBzdGFydCBmaW5pc2hlcyBzaG91bGQgcHJldmVudCBwdWxsKCkgZnJvbSBiZWlu
ZyBjYWxsZWQgCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2NhbmNlbC5zZXJ2aWNld29ya2Vy
Lmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9jYW5jZWwuc2VydmljZXdvcmtlci5odHRwcy5odG1s
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjN2ZjNDU5YTA1ZjZiMDMzYzg3MTgyYWUx
NmFjMzMyYzA5MDY4MDM2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy9yZWFkYWJsZS1zdHJlYW1zL2NhbmNlbC5zZXJ2aWNld29ya2VyLmh0dHBzLmh0bWwKKysrIC9k
ZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9
InV0Zi04Ij4KLTx0aXRsZT5jYW5jZWwuanMgc2VydmljZSB3b3JrZXIgd3JhcHBlciBmaWxlPC90
aXRsZT4KLQotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0
PgotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0
PgotPHNjcmlwdCBzcmM9Ii9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvcmVzb3VyY2Vz
L3Rlc3QtaGVscGVycy5zdWIuanMiPjwvc2NyaXB0PgotCi08c2NyaXB0PgotJ3VzZSBzdHJpY3Qn
Owotc2VydmljZV93b3JrZXJfdGVzdCgnY2FuY2VsLmpzJywgJ1NlcnZpY2Ugd29ya2VyIHRlc3Qg
c2V0dXAnKTsKLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvY2FuY2VsLnNoYXJl
ZHdvcmtlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9jYW5jZWwuc2hhcmVkd29ya2VyLWV4
cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDlkNWQyNTA5ZDc4NDdl
OGNkNmZlNjYwNmFhNjBjZGQzM2FhNDc0ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9jYW5jZWwuc2hhcmVkd29ya2VyLWV4cGVjdGVk
LnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotQ09OU09MRSBNRVNTQUdFOiBSZWZl
cmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogU2hhcmVkV29ya2VyCi0KLUhhcm5lc3Mg
RXJyb3IgKEZBSUwpLCBtZXNzYWdlID0gUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFi
bGU6IFNoYXJlZFdvcmtlcgotCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2NhbmNlbC5zaGFy
ZWR3b3JrZXIuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2NhbmNlbC5zaGFyZWR3b3JrZXIuaHRtbApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjllMmU4Yzk2OGIzZjUwZWU3N2U5ZDBhZGE5MDUw
ZDk5OTVhZDRiNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVh
ZGFibGUtc3RyZWFtcy9jYW5jZWwuc2hhcmVkd29ya2VyLmh0bWwKKysrIC9kZXYvbnVsbApAQCAt
MSwxMSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTx0
aXRsZT5jYW5jZWwuanMgc2hhcmVkIHdvcmtlciB3cmFwcGVyIGZpbGU8L3RpdGxlPgotCi08c2Ny
aXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNy
Yz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci0KLTxzY3JpcHQ+
Ci0ndXNlIHN0cmljdCc7Ci1mZXRjaF90ZXN0c19mcm9tX3dvcmtlcihuZXcgU2hhcmVkV29ya2Vy
KCdjYW5jZWwuanMnKSk7Ci08L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2NvbnN0
cnVjdG9yLmFueS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9jb25zdHJ1Y3Rvci5hbnktZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYzOGYyNTkzOGU3NzFjOTI0OGQ3ZGRkMjJlMDIyMWJkN2Q5
ZGNlMDYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9jb25zdHJ1Y3Rvci5hbnktZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorCitQQVNTIHVuZGVybHlpbmdTb3VyY2UgYXJndW1l
bnQgc2hvdWxkIGJlIGNvbnZlcnRlZCBhZnRlciBxdWV1aW5nU3RyYXRlZ3kgYXJndW1lbnQgCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2NvbnN0cnVjdG9yLmFueS5odG1sIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVh
bXMvY29uc3RydWN0b3IuYW55Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjM4MjkxMzUyOGU2OTNiM2E1ZDU2
YzY2MGE0NTA2MDk4MGI1NDhjMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2NvbnN0
cnVjdG9yLmFueS5odG1sCkBAIC0wLDAgKzEgQEAKKzwhLS0gVGhpcyBmaWxlIGlzIHJlcXVpcmVk
IGZvciBXZWJLaXQgdGVzdCBpbmZyYXN0cnVjdHVyZSB0byBydW4gdGhlIHRlbXBsYXRlZCB0ZXN0
IC0tPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1z
L2NvbnN0cnVjdG9yLmFueS5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2NvbnN0cnVjdG9yLmFueS5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5kY2ZkOWU5YzMzODYxZjdlY2Y4M2Q0ZTZmNWQ3ODc4MTBhYjg0NzVmCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
dHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvY29uc3RydWN0b3IuYW55LmpzCkBAIC0wLDAgKzEsMTcg
QEAKKy8vIE1FVEE6IGdsb2JhbD13aW5kb3csd29ya2VyLGpzc2hlbGwKKyd1c2Ugc3RyaWN0JzsK
KworY29uc3QgZXJyb3IxID0gbmV3IEVycm9yKCdlcnJvcjEnKTsKK2Vycm9yMS5uYW1lID0gJ2Vy
cm9yMSc7CisKK2NvbnN0IGVycm9yMiA9IG5ldyBFcnJvcignZXJyb3IyJyk7CitlcnJvcjIubmFt
ZSA9ICdlcnJvcjInOworCit0ZXN0KCgpID0+IHsKKyAgY29uc3QgdW5kZXJseWluZ1NvdXJjZSA9
IHsgZ2V0IHN0YXJ0KCkgeyB0aHJvdyBlcnJvcjE7IH0gfTsKKyAgY29uc3QgcXVldWluZ1N0cmF0
ZWd5ID0geyBoaWdoV2F0ZXJNYXJrOiAwLCBnZXQgc2l6ZSgpIHsgdGhyb3cgZXJyb3IyOyB9IH07
CisKKyAgLy8gdW5kZXJseWluZ1NvdXJjZSBpcyBjb252ZXJ0ZWQgaW4gcHJvc2UgaW4gdGhlIG1l
dGhvZCBib2R5LCB3aGVyZWFzIHF1ZXVpbmdTdHJhdGVneSBpcyBkb25lIGF0IHRoZSBJREwgbGF5
ZXIuCisgIC8vIFNvIHRoZSBxdWV1aW5nU3RyYXRlZ3kgZXhjZXB0aW9uIHNob3VsZCBiZSBlbmNv
dW50ZXJlZCBmaXJzdC4KKyAgYXNzZXJ0X3Rocm93c19leGFjdGx5KGVycm9yMiwgKCkgPT4gbmV3
IFJlYWRhYmxlU3RyZWFtKHVuZGVybHlpbmdTb3VyY2UsIHF1ZXVpbmdTdHJhdGVneSkpOworfSwg
J3VuZGVybHlpbmdTb3VyY2UgYXJndW1lbnQgc2hvdWxkIGJlIGNvbnZlcnRlZCBhZnRlciBxdWV1
aW5nU3RyYXRlZ3kgYXJndW1lbnQnKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2NvbnN0cnVj
dG9yLmFueS53b3JrZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvY29uc3RydWN0b3IuYW55
Lndvcmtlci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjM4ZjI1OTM4ZTc3MWM5MjQ4ZDdkZGQy
MmUwMjIxYmQ3ZDlkY2UwNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2NvbnN0cnVj
dG9yLmFueS53b3JrZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorCitQQVNTIHVuZGVy
bHlpbmdTb3VyY2UgYXJndW1lbnQgc2hvdWxkIGJlIGNvbnZlcnRlZCBhZnRlciBxdWV1aW5nU3Ry
YXRlZ3kgYXJndW1lbnQgCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2NvbnN0cnVjdG9yLmFu
eS53b3JrZXIuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2NvbnN0cnVjdG9yLmFueS53b3JrZXIuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4yMzgyOTEzNTI4ZTY5M2IzYTVkNTZjNjYwYTQ1MDYwOTgwYjU0OGMzCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvY29uc3RydWN0b3IuYW55Lndvcmtlci5odG1sCkBA
IC0wLDAgKzEgQEAKKzwhLS0gVGhpcyBmaWxlIGlzIHJlcXVpcmVkIGZvciBXZWJLaXQgdGVzdCBp
bmZyYXN0cnVjdHVyZSB0byBydW4gdGhlIHRlbXBsYXRlZCB0ZXN0IC0tPgpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2NvdW50LXF1ZXVpbmctc3Ry
YXRlZ3ktaW50ZWdyYXRpb24uYW55LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2NvdW50LXF1
ZXVpbmctc3RyYXRlZ3ktaW50ZWdyYXRpb24uYW55LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
MDYzM2NhMDdmZDE2ZDliMTdiNWE0NjI1NDMzMDY4YjkxNWEyMGRjCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3Jl
YWRhYmxlLXN0cmVhbXMvY291bnQtcXVldWluZy1zdHJhdGVneS1pbnRlZ3JhdGlvbi5hbnktZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsNiBAQAorCitQQVNTIENhbiBjb25zdHJ1Y3QgYSByZWFkYWJs
ZSBzdHJlYW0gd2l0aCBhIHZhbGlkIENvdW50UXVldWluZ1N0cmF0ZWd5IAorUEFTUyBDb3JyZWN0
bHkgZ292ZXJucyBhIFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlcidzIGRlc2lyZWRTaXplIHByb3Bl
cnR5IChIV00gPSAwKSAKK1BBU1MgQ29ycmVjdGx5IGdvdmVybnMgYSBSZWFkYWJsZVN0cmVhbUNv
bnRyb2xsZXIncyBkZXNpcmVkU2l6ZSBwcm9wZXJ0eSAoSFdNID0gMSkgCitQQVNTIENvcnJlY3Rs
eSBnb3Zlcm5zIGEgUmVhZGFibGVTdHJlYW1Db250cm9sbGVyJ3MgZGVzaXJlZFNpemUgcHJvcGVy
dHkgKEhXTSA9IDQpIAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9jb3VudC1xdWV1aW5nLXN0
cmF0ZWd5LWludGVncmF0aW9uLmFueS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvY291bnQtcXVldWluZy1z
dHJhdGVneS1pbnRlZ3JhdGlvbi5hbnkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMzgyOTEzNTI4ZTY5M2Iz
YTVkNTZjNjYwYTQ1MDYwOTgwYjU0OGMzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMv
Y291bnQtcXVldWluZy1zdHJhdGVneS1pbnRlZ3JhdGlvbi5hbnkuaHRtbApAQCAtMCwwICsxIEBA
Cis8IS0tIFRoaXMgZmlsZSBpcyByZXF1aXJlZCBmb3IgV2ViS2l0IHRlc3QgaW5mcmFzdHJ1Y3R1
cmUgdG8gcnVuIHRoZSB0ZW1wbGF0ZWQgdGVzdCAtLT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5LWludGVn
cmF0aW9uLmFueS5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3ktaW50ZWdy
YXRpb24uYW55LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc4YTI1MzE4YjJkZDVhZjk4NTc4NTRkY2Q4YWU2YTFm
ZjA4OWQyNjIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9jb3VudC1xdWV1aW5nLXN0
cmF0ZWd5LWludGVncmF0aW9uLmFueS5qcwpAQCAtMCwwICsxLDIwOCBAQAorLy8gTUVUQTogZ2xv
YmFsPXdpbmRvdyx3b3JrZXIsanNzaGVsbAorJ3VzZSBzdHJpY3QnOworCit0ZXN0KCgpID0+IHsK
KworICBuZXcgUmVhZGFibGVTdHJlYW0oe30sIG5ldyBDb3VudFF1ZXVpbmdTdHJhdGVneSh7IGhp
Z2hXYXRlck1hcms6IDQgfSkpOworCit9LCAnQ2FuIGNvbnN0cnVjdCBhIHJlYWRhYmxlIHN0cmVh
bSB3aXRoIGEgdmFsaWQgQ291bnRRdWV1aW5nU3RyYXRlZ3knKTsKKworcHJvbWlzZV90ZXN0KCgp
ID0+IHsKKworICBsZXQgY29udHJvbGxlcjsKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJl
YW0oCisgICAgeworICAgICAgc3RhcnQoYykgeworICAgICAgICBjb250cm9sbGVyID0gYzsKKyAg
ICAgIH0KKyAgICB9LAorICAgIG5ldyBDb3VudFF1ZXVpbmdTdHJhdGVneSh7IGhpZ2hXYXRlck1h
cms6IDAgfSkKKyAgKTsKKyAgY29uc3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7CisKKyAgYXNz
ZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAwLCAnMCByZWFkcywgMCBlbnF1ZXVl
czogZGVzaXJlZFNpemUgc2hvdWxkIGJlIDAnKTsKKyAgY29udHJvbGxlci5lbnF1ZXVlKCdhJyk7
CisgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgLTEsICcwIHJlYWRzLCAx
IGVucXVldWU6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAtMScpOworICBjb250cm9sbGVyLmVucXVl
dWUoJ2InKTsKKyAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAtMiwgJzAg
cmVhZHMsIDIgZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAtMicpOworICBjb250cm9s
bGVyLmVucXVldWUoJ2MnKTsKKyAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXpl
LCAtMywgJzAgcmVhZHMsIDMgZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAtMycpOwor
ICBjb250cm9sbGVyLmVucXVldWUoJ2QnKTsKKyAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRl
c2lyZWRTaXplLCAtNCwgJzAgcmVhZHMsIDQgZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBi
ZSAtNCcpOworCisgIHJldHVybiByZWFkZXIucmVhZCgpCisgICAgLnRoZW4ocmVzdWx0ID0+IHsK
KyAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdCwgeyB2YWx1ZTogJ2EnLCBkb25lOiBm
YWxzZSB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJzFzdCByZWFkIGdpdmVzIGJhY2sg
dGhlIDFzdCBjaHVuayBlbnF1ZXVlZCAocXVldWUgbm93IGNvbnRhaW5zIDMgY2h1bmtzKScpOwor
ICAgICAgcmV0dXJuIHJlYWRlci5yZWFkKCk7CisgICAgfSkKKyAgICAudGhlbihyZXN1bHQgPT4g
eworICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0LCB7IHZhbHVlOiAnYicsIGRvbmU6
IGZhbHNlIH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAnMm5kIHJlYWQgZ2l2ZXMgYmFj
ayB0aGUgMm5kIGNodW5rIGVucXVldWVkIChxdWV1ZSBub3cgY29udGFpbnMgMiBjaHVua3MpJyk7
CisgICAgICByZXR1cm4gcmVhZGVyLnJlYWQoKTsKKyAgICB9KQorICAgIC50aGVuKHJlc3VsdCA9
PiB7CisgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6ICdjJywgZG9u
ZTogZmFsc2UgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICczcmQgcmVhZCBnaXZlcyBi
YWNrIHRoZSAzcmQgY2h1bmsgZW5xdWV1ZWQgKHF1ZXVlIG5vdyBjb250YWlucyAxIGNodW5rKScp
OworCisgICAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIC0xLCAnMyBy
ZWFkcywgNCBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIC0xJyk7CisgICAgICBjb250
cm9sbGVyLmVucXVldWUoJ2UnKTsKKyAgICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNp
cmVkU2l6ZSwgLTIsICczIHJlYWRzLCA1IGVucXVldWVzOiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUg
LTInKTsKKworICAgICAgcmV0dXJuIHJlYWRlci5yZWFkKCk7CisgICAgfSkKKyAgICAudGhlbihy
ZXN1bHQgPT4geworICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0LCB7IHZhbHVlOiAn
ZCcsIGRvbmU6IGZhbHNlIH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAnNHRoIHJlYWQg
Z2l2ZXMgYmFjayB0aGUgNHRoIGNodW5rIGVucXVldWVkIChxdWV1ZSBub3cgY29udGFpbnMgMSBj
aHVua3MpJyk7CisgICAgICByZXR1cm4gcmVhZGVyLnJlYWQoKTsKKworICAgIH0pLnRoZW4ocmVz
dWx0ID0+IHsKKyAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdCwgeyB2YWx1ZTogJ2Un
LCBkb25lOiBmYWxzZSB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJzV0aCByZWFkIGdp
dmVzIGJhY2sgdGhlIDV0aCBjaHVuayBlbnF1ZXVlZCAocXVldWUgbm93IGNvbnRhaW5zIDAgY2h1
bmtzKScpOworCisgICAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDAs
ICc1IHJlYWRzLCA1IGVucXVldWVzOiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUgMCcpOworICAgICAg
Y29udHJvbGxlci5lbnF1ZXVlKCdmJyk7CisgICAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIu
ZGVzaXJlZFNpemUsIC0xLCAnNSByZWFkcywgNiBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxk
IGJlIC0xJyk7CisgICAgICBjb250cm9sbGVyLmVucXVldWUoJ2cnKTsKKyAgICAgIGFzc2VydF9l
cXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgLTIsICc1IHJlYWRzLCA3IGVucXVldWVzOiBk
ZXNpcmVkU2l6ZSBzaG91bGQgYmUgLTInKTsKKyAgICB9KTsKKworfSwgJ0NvcnJlY3RseSBnb3Zl
cm5zIGEgUmVhZGFibGVTdHJlYW1Db250cm9sbGVyXCdzIGRlc2lyZWRTaXplIHByb3BlcnR5IChI
V00gPSAwKScpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworCisgIGxldCBjb250cm9sbGVyOwor
ICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSgKKyAgICB7CisgICAgICBzdGFydChjKSB7
CisgICAgICAgIGNvbnRyb2xsZXIgPSBjOworICAgICAgfQorICAgIH0sCisgICAgbmV3IENvdW50
UXVldWluZ1N0cmF0ZWd5KHsgaGlnaFdhdGVyTWFyazogMSB9KQorICApOworICBjb25zdCByZWFk
ZXIgPSBycy5nZXRSZWFkZXIoKTsKKworICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJl
ZFNpemUsIDEsICcwIHJlYWRzLCAwIGVucXVldWVzOiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUgMScp
OworICBjb250cm9sbGVyLmVucXVldWUoJ2EnKTsKKyAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVy
LmRlc2lyZWRTaXplLCAwLCAnMCByZWFkcywgMSBlbnF1ZXVlOiBkZXNpcmVkU2l6ZSBzaG91bGQg
YmUgMCcpOworICBjb250cm9sbGVyLmVucXVldWUoJ2InKTsKKyAgYXNzZXJ0X2VxdWFscyhjb250
cm9sbGVyLmRlc2lyZWRTaXplLCAtMSwgJzAgcmVhZHMsIDIgZW5xdWV1ZXM6IGRlc2lyZWRTaXpl
IHNob3VsZCBiZSAtMScpOworICBjb250cm9sbGVyLmVucXVldWUoJ2MnKTsKKyAgYXNzZXJ0X2Vx
dWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAtMiwgJzAgcmVhZHMsIDMgZW5xdWV1ZXM6IGRl
c2lyZWRTaXplIHNob3VsZCBiZSAtMicpOworICBjb250cm9sbGVyLmVucXVldWUoJ2QnKTsKKyAg
YXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAtMywgJzAgcmVhZHMsIDQgZW5x
dWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAtMycpOworCisgIHJldHVybiByZWFkZXIucmVh
ZCgpCisgICAgLnRoZW4ocmVzdWx0ID0+IHsKKyAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJl
c3VsdCwgeyB2YWx1ZTogJ2EnLCBkb25lOiBmYWxzZSB9LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJzFzdCByZWFkIGdpdmVzIGJhY2sgdGhlIDFzdCBjaHVuayBlbnF1ZXVlZCAocXVldWUg
bm93IGNvbnRhaW5zIDMgY2h1bmtzKScpOworICAgICAgcmV0dXJuIHJlYWRlci5yZWFkKCk7Cisg
ICAgfSkKKyAgICAudGhlbihyZXN1bHQgPT4geworICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMo
cmVzdWx0LCB7IHZhbHVlOiAnYicsIGRvbmU6IGZhbHNlIH0sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnMm5kIHJlYWQgZ2l2ZXMgYmFjayB0aGUgMm5kIGNodW5rIGVucXVldWVkIChxdWV1
ZSBub3cgY29udGFpbnMgMiBjaHVua3MpJyk7CisgICAgICByZXR1cm4gcmVhZGVyLnJlYWQoKTsK
KyAgICB9KQorICAgIC50aGVuKHJlc3VsdCA9PiB7CisgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFs
cyhyZXN1bHQsIHsgdmFsdWU6ICdjJywgZG9uZTogZmFsc2UgfSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICczcmQgcmVhZCBnaXZlcyBiYWNrIHRoZSAzcmQgY2h1bmsgZW5xdWV1ZWQgKHF1
ZXVlIG5vdyBjb250YWlucyAxIGNodW5rKScpOworCisgICAgICBhc3NlcnRfZXF1YWxzKGNvbnRy
b2xsZXIuZGVzaXJlZFNpemUsIDAsICczIHJlYWRzLCA0IGVucXVldWVzOiBkZXNpcmVkU2l6ZSBz
aG91bGQgYmUgMCcpOworICAgICAgY29udHJvbGxlci5lbnF1ZXVlKCdlJyk7CisgICAgICBhc3Nl
cnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIC0xLCAnMyByZWFkcywgNSBlbnF1ZXVl
czogZGVzaXJlZFNpemUgc2hvdWxkIGJlIC0xJyk7CisKKyAgICAgIHJldHVybiByZWFkZXIucmVh
ZCgpOworICAgIH0pCisgICAgLnRoZW4ocmVzdWx0ID0+IHsKKyAgICAgIGFzc2VydF9vYmplY3Rf
ZXF1YWxzKHJlc3VsdCwgeyB2YWx1ZTogJ2QnLCBkb25lOiBmYWxzZSB9LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJzR0aCByZWFkIGdpdmVzIGJhY2sgdGhlIDR0aCBjaHVuayBlbnF1ZXVl
ZCAocXVldWUgbm93IGNvbnRhaW5zIDEgY2h1bmtzKScpOworICAgICAgcmV0dXJuIHJlYWRlci5y
ZWFkKCk7CisgICAgfSkKKyAgICAudGhlbihyZXN1bHQgPT4geworICAgICAgYXNzZXJ0X29iamVj
dF9lcXVhbHMocmVzdWx0LCB7IHZhbHVlOiAnZScsIGRvbmU6IGZhbHNlIH0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAnNXRoIHJlYWQgZ2l2ZXMgYmFjayB0aGUgNXRoIGNodW5rIGVucXVl
dWVkIChxdWV1ZSBub3cgY29udGFpbnMgMCBjaHVua3MpJyk7CisKKyAgICAgIGFzc2VydF9lcXVh
bHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMSwgJzUgcmVhZHMsIDUgZW5xdWV1ZXM6IGRlc2ly
ZWRTaXplIHNob3VsZCBiZSAxJyk7CisgICAgICBjb250cm9sbGVyLmVucXVldWUoJ2YnKTsKKyAg
ICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMCwgJzUgcmVhZHMsIDYg
ZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAwJyk7CisgICAgICBjb250cm9sbGVyLmVu
cXVldWUoJ2cnKTsKKyAgICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwg
LTEsICc1IHJlYWRzLCA3IGVucXVldWVzOiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUgLTEnKTsKKyAg
ICB9KTsKKworfSwgJ0NvcnJlY3RseSBnb3Zlcm5zIGEgUmVhZGFibGVTdHJlYW1Db250cm9sbGVy
XCdzIGRlc2lyZWRTaXplIHByb3BlcnR5IChIV00gPSAxKScpOworCitwcm9taXNlX3Rlc3QoKCkg
PT4geworCisgIGxldCBjb250cm9sbGVyOworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVh
bSgKKyAgICB7CisgICAgICBzdGFydChjKSB7CisgICAgICAgIGNvbnRyb2xsZXIgPSBjOworICAg
ICAgfQorICAgIH0sCisgICAgbmV3IENvdW50UXVldWluZ1N0cmF0ZWd5KHsgaGlnaFdhdGVyTWFy
azogNCB9KQorICApOworICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKKworICBhc3Nl
cnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDQsICcwIHJlYWRzLCAwIGVucXVldWVz
OiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUgNCcpOworICBjb250cm9sbGVyLmVucXVldWUoJ2EnKTsK
KyAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAzLCAnMCByZWFkcywgMSBl
bnF1ZXVlOiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUgMycpOworICBjb250cm9sbGVyLmVucXVldWUo
J2InKTsKKyAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAyLCAnMCByZWFk
cywgMiBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIDInKTsKKyAgY29udHJvbGxlci5l
bnF1ZXVlKCdjJyk7CisgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMSwg
JzAgcmVhZHMsIDMgZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAxJyk7CisgIGNvbnRy
b2xsZXIuZW5xdWV1ZSgnZCcpOworICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNp
emUsIDAsICcwIHJlYWRzLCA0IGVucXVldWVzOiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUgMCcpOwor
ICBjb250cm9sbGVyLmVucXVldWUoJ2UnKTsKKyAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRl
c2lyZWRTaXplLCAtMSwgJzAgcmVhZHMsIDUgZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBi
ZSAtMScpOworICBjb250cm9sbGVyLmVucXVldWUoJ2YnKTsKKyAgYXNzZXJ0X2VxdWFscyhjb250
cm9sbGVyLmRlc2lyZWRTaXplLCAtMiwgJzAgcmVhZHMsIDYgZW5xdWV1ZXM6IGRlc2lyZWRTaXpl
IHNob3VsZCBiZSAtMicpOworCisKKyAgcmV0dXJuIHJlYWRlci5yZWFkKCkKKyAgICAudGhlbihy
ZXN1bHQgPT4geworICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0LCB7IHZhbHVlOiAn
YScsIGRvbmU6IGZhbHNlIH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAnMXN0IHJlYWQg
Z2l2ZXMgYmFjayB0aGUgMXN0IGNodW5rIGVucXVldWVkIChxdWV1ZSBub3cgY29udGFpbnMgNSBj
aHVua3MpJyk7CisgICAgICByZXR1cm4gcmVhZGVyLnJlYWQoKTsKKyAgICB9KQorICAgIC50aGVu
KHJlc3VsdCA9PiB7CisgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6
ICdiJywgZG9uZTogZmFsc2UgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICcybmQgcmVh
ZCBnaXZlcyBiYWNrIHRoZSAybmQgY2h1bmsgZW5xdWV1ZWQgKHF1ZXVlIG5vdyBjb250YWlucyA0
IGNodW5rcyknKTsKKworICAgICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXpl
LCAwLCAnMiByZWFkcywgNiBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIDAnKTsKKyAg
ICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnZycpOworICAgICAgYXNzZXJ0X2VxdWFscyhjb250cm9s
bGVyLmRlc2lyZWRTaXplLCAtMSwgJzIgcmVhZHMsIDcgZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNo
b3VsZCBiZSAtMScpOworCisgICAgICByZXR1cm4gcmVhZGVyLnJlYWQoKTsKKyAgICB9KQorICAg
IC50aGVuKHJlc3VsdCA9PiB7CisgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQsIHsg
dmFsdWU6ICdjJywgZG9uZTogZmFsc2UgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICcz
cmQgcmVhZCBnaXZlcyBiYWNrIHRoZSAzcmQgY2h1bmsgZW5xdWV1ZWQgKHF1ZXVlIG5vdyBjb250
YWlucyA0IGNodW5rcyknKTsKKyAgICAgIHJldHVybiByZWFkZXIucmVhZCgpOworICAgIH0pCisg
ICAgLnRoZW4ocmVzdWx0ID0+IHsKKyAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdCwg
eyB2YWx1ZTogJ2QnLCBkb25lOiBmYWxzZSB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
JzR0aCByZWFkIGdpdmVzIGJhY2sgdGhlIDR0aCBjaHVuayBlbnF1ZXVlZCAocXVldWUgbm93IGNv
bnRhaW5zIDMgY2h1bmtzKScpOworICAgICAgcmV0dXJuIHJlYWRlci5yZWFkKCk7CisgICAgfSkK
KyAgICAudGhlbihyZXN1bHQgPT4geworICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0
LCB7IHZhbHVlOiAnZScsIGRvbmU6IGZhbHNlIH0sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnNXRoIHJlYWQgZ2l2ZXMgYmFjayB0aGUgNXRoIGNodW5rIGVucXVldWVkIChxdWV1ZSBub3cg
Y29udGFpbnMgMiBjaHVua3MpJyk7CisgICAgICByZXR1cm4gcmVhZGVyLnJlYWQoKTsKKyAgICB9
KQorICAgIC50aGVuKHJlc3VsdCA9PiB7CisgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1
bHQsIHsgdmFsdWU6ICdmJywgZG9uZTogZmFsc2UgfSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICc2dGggcmVhZCBnaXZlcyBiYWNrIHRoZSA2dGggY2h1bmsgZW5xdWV1ZWQgKHF1ZXVlIG5v
dyBjb250YWlucyAwIGNodW5rcyknKTsKKworICAgICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVy
LmRlc2lyZWRTaXplLCAzLCAnNiByZWFkcywgNyBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxk
IGJlIDMnKTsKKyAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnaCcpOworICAgICAgYXNzZXJ0X2Vx
dWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAyLCAnNiByZWFkcywgOCBlbnF1ZXVlczogZGVz
aXJlZFNpemUgc2hvdWxkIGJlIDInKTsKKyAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnaScpOwor
ICAgICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAxLCAnNiByZWFkcywg
OSBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIDEnKTsKKyAgICAgIGNvbnRyb2xsZXIu
ZW5xdWV1ZSgnaicpOworICAgICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXpl
LCAwLCAnNiByZWFkcywgMTAgZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAwJyk7Cisg
ICAgICBjb250cm9sbGVyLmVucXVldWUoJ2snKTsKKyAgICAgIGFzc2VydF9lcXVhbHMoY29udHJv
bGxlci5kZXNpcmVkU2l6ZSwgLTEsICc2IHJlYWRzLCAxMSBlbnF1ZXVlczogZGVzaXJlZFNpemUg
c2hvdWxkIGJlIC0xJyk7CisgICAgfSk7CisKK30sICdDb3JyZWN0bHkgZ292ZXJucyBhIFJlYWRh
YmxlU3RyZWFtQ29udHJvbGxlclwncyBkZXNpcmVkU2l6ZSBwcm9wZXJ0eSAoSFdNID0gNCknKTsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3ktaW50ZWdyYXRp
b24uYW55Lndvcmtlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9jb3VudC1xdWV1aW5nLXN0
cmF0ZWd5LWludGVncmF0aW9uLmFueS53b3JrZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYw
NjMzY2EwN2ZkMTZkOWIxN2I1YTQ2MjU0MzMwNjhiOTE1YTIwZGMKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVh
ZGFibGUtc3RyZWFtcy9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5LWludGVncmF0aW9uLmFueS53b3Jr
ZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNiBAQAorCitQQVNTIENhbiBjb25zdHJ1Y3QgYSBy
ZWFkYWJsZSBzdHJlYW0gd2l0aCBhIHZhbGlkIENvdW50UXVldWluZ1N0cmF0ZWd5IAorUEFTUyBD
b3JyZWN0bHkgZ292ZXJucyBhIFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlcidzIGRlc2lyZWRTaXpl
IHByb3BlcnR5IChIV00gPSAwKSAKK1BBU1MgQ29ycmVjdGx5IGdvdmVybnMgYSBSZWFkYWJsZVN0
cmVhbUNvbnRyb2xsZXIncyBkZXNpcmVkU2l6ZSBwcm9wZXJ0eSAoSFdNID0gMSkgCitQQVNTIENv
cnJlY3RseSBnb3Zlcm5zIGEgUmVhZGFibGVTdHJlYW1Db250cm9sbGVyJ3MgZGVzaXJlZFNpemUg
cHJvcGVydHkgKEhXTSA9IDQpIAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9jb3VudC1xdWV1
aW5nLXN0cmF0ZWd5LWludGVncmF0aW9uLmFueS53b3JrZXIuaHRtbCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2Nv
dW50LXF1ZXVpbmctc3RyYXRlZ3ktaW50ZWdyYXRpb24uYW55Lndvcmtlci5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjIzODI5MTM1MjhlNjkzYjNhNWQ1NmM2NjBhNDUwNjA5ODBiNTQ4YzMKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvcmVhZGFibGUtc3RyZWFtcy9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5LWludGVncmF0aW9uLmFu
eS53b3JrZXIuaHRtbApAQCAtMCwwICsxIEBACis8IS0tIFRoaXMgZmlsZSBpcyByZXF1aXJlZCBm
b3IgV2ViS2l0IHRlc3QgaW5mcmFzdHJ1Y3R1cmUgdG8gcnVuIHRoZSB0ZW1wbGF0ZWQgdGVzdCAt
LT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9j
b3VudC1xdWV1aW5nLXN0cmF0ZWd5LWludGVncmF0aW9uLmRlZGljYXRlZHdvcmtlci1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvcmVhZGFibGUtc3RyZWFtcy9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5LWludGVncmF0aW9uLmRl
ZGljYXRlZHdvcmtlci1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDYwNjMzY2EwN2ZkMTZkOWIxN2I1YTQ2MjU0MzMwNjhiOTE1YTIwZGMuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvY291bnQtcXVldWlu
Zy1zdHJhdGVneS1pbnRlZ3JhdGlvbi5kZWRpY2F0ZWR3b3JrZXItZXhwZWN0ZWQudHh0CisrKyAv
ZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi0KLVBBU1MgQ2FuIGNvbnN0cnVjdCBhIHJlYWRhYmxl
IHN0cmVhbSB3aXRoIGEgdmFsaWQgQ291bnRRdWV1aW5nU3RyYXRlZ3kgCi1QQVNTIENvcnJlY3Rs
eSBnb3Zlcm5zIGEgUmVhZGFibGVTdHJlYW1Db250cm9sbGVyJ3MgZGVzaXJlZFNpemUgcHJvcGVy
dHkgKEhXTSA9IDApIAotUEFTUyBDb3JyZWN0bHkgZ292ZXJucyBhIFJlYWRhYmxlU3RyZWFtQ29u
dHJvbGxlcidzIGRlc2lyZWRTaXplIHByb3BlcnR5IChIV00gPSAxKSAKLVBBU1MgQ29ycmVjdGx5
IGdvdmVybnMgYSBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIncyBkZXNpcmVkU2l6ZSBwcm9wZXJ0
eSAoSFdNID0gNCkgCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2NvdW50LXF1ZXVpbmctc3Ry
YXRlZ3ktaW50ZWdyYXRpb24uZGVkaWNhdGVkd29ya2VyLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9jb3Vu
dC1xdWV1aW5nLXN0cmF0ZWd5LWludGVncmF0aW9uLmRlZGljYXRlZHdvcmtlci5odG1sCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlOWJjYjIxYjAxZmJlYTAxMDhkYTIyYzllZmYyYTY0
NzU5MDZjNjYxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFk
YWJsZS1zdHJlYW1zL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3ktaW50ZWdyYXRpb24uZGVkaWNhdGVk
d29ya2VyLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi08IURPQ1RZUEUgaHRt
bD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTx0aXRsZT5jb3VudC1xdWV1aW5nLXN0cmF0ZWd5
LWludGVncmF0aW9uLmpzIGRlZGljYXRlZCB3b3JrZXIgd3JhcHBlciBmaWxlPC90aXRsZT4KLQot
PHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlw
dCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotCi08c2Ny
aXB0PgotJ3VzZSBzdHJpY3QnOwotZmV0Y2hfdGVzdHNfZnJvbV93b3JrZXIobmV3IFdvcmtlcign
Y291bnQtcXVldWluZy1zdHJhdGVneS1pbnRlZ3JhdGlvbi5qcycpKTsKLTwvc2NyaXB0PgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJl
YW1zL3JlYWRhYmxlLXN0cmVhbXMvY291bnQtcXVldWluZy1zdHJhdGVneS1pbnRlZ3JhdGlvbi5o
dG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
L3JlYWRhYmxlLXN0cmVhbXMvY291bnQtcXVldWluZy1zdHJhdGVneS1pbnRlZ3JhdGlvbi5odG1s
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4OWUyZDk5ZmM3Y2Y2OWIwNTY5YTk5YTNm
NTZiYWRmMGVhYWQ4ZTAxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy9yZWFkYWJsZS1zdHJlYW1zL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3ktaW50ZWdyYXRpb24uaHRt
bAorKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEg
Y2hhcnNldD0idXRmLTgiPgotPHRpdGxlPmNvdW50LXF1ZXVpbmctc3RyYXRlZ3ktaW50ZWdyYXRp
b24uanMgYnJvd3NlciBjb250ZXh0IHdyYXBwZXIgZmlsZTwvdGl0bGU+Ci0KLTxzY3JpcHQgc3Jj
PSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLQotCi0KLTxzY3JpcHQgc3Jj
PSJjb3VudC1xdWV1aW5nLXN0cmF0ZWd5LWludGVncmF0aW9uLmpzIj48L3NjcmlwdD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy9yZWFkYWJsZS1zdHJlYW1zL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3ktaW50ZWdyYXRpb24uanMg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVh
ZGFibGUtc3RyZWFtcy9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5LWludGVncmF0aW9uLmpzCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NWM4YjhjZjAwMjhiNDdmN2ExYjY4ODczYWM2YWFj
ODU4Mzk2ZWY1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFk
YWJsZS1zdHJlYW1zL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3ktaW50ZWdyYXRpb24uanMKKysrIC9k
ZXYvbnVsbApAQCAtMSwyMTMgKzAsMCBAQAotJ3VzZSBzdHJpY3QnOwotCi1pZiAoc2VsZi5pbXBv
cnRTY3JpcHRzKSB7Ci0gIHNlbGYuaW1wb3J0U2NyaXB0cygnL3Jlc291cmNlcy90ZXN0aGFybmVz
cy5qcycpOwotfQotCi10ZXN0KCgpID0+IHsKLQotICBuZXcgUmVhZGFibGVTdHJlYW0oe30sIG5l
dyBDb3VudFF1ZXVpbmdTdHJhdGVneSh7IGhpZ2hXYXRlck1hcms6IDQgfSkpOwotCi19LCAnQ2Fu
IGNvbnN0cnVjdCBhIHJlYWRhYmxlIHN0cmVhbSB3aXRoIGEgdmFsaWQgQ291bnRRdWV1aW5nU3Ry
YXRlZ3knKTsKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLQotICBsZXQgY29udHJvbGxlcjsKLSAg
Y29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oCi0gICAgewotICAgICAgc3RhcnQoYykgewot
ICAgICAgICBjb250cm9sbGVyID0gYzsKLSAgICAgIH0KLSAgICB9LAotICAgIG5ldyBDb3VudFF1
ZXVpbmdTdHJhdGVneSh7IGhpZ2hXYXRlck1hcms6IDAgfSkKLSAgKTsKLSAgY29uc3QgcmVhZGVy
ID0gcnMuZ2V0UmVhZGVyKCk7Ci0KLSAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRT
aXplLCAwLCAnMCByZWFkcywgMCBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIDAnKTsK
LSAgY29udHJvbGxlci5lbnF1ZXVlKCdhJyk7Ci0gIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5k
ZXNpcmVkU2l6ZSwgLTEsICcwIHJlYWRzLCAxIGVucXVldWU6IGRlc2lyZWRTaXplIHNob3VsZCBi
ZSAtMScpOwotICBjb250cm9sbGVyLmVucXVldWUoJ2InKTsKLSAgYXNzZXJ0X2VxdWFscyhjb250
cm9sbGVyLmRlc2lyZWRTaXplLCAtMiwgJzAgcmVhZHMsIDIgZW5xdWV1ZXM6IGRlc2lyZWRTaXpl
IHNob3VsZCBiZSAtMicpOwotICBjb250cm9sbGVyLmVucXVldWUoJ2MnKTsKLSAgYXNzZXJ0X2Vx
dWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAtMywgJzAgcmVhZHMsIDMgZW5xdWV1ZXM6IGRl
c2lyZWRTaXplIHNob3VsZCBiZSAtMycpOwotICBjb250cm9sbGVyLmVucXVldWUoJ2QnKTsKLSAg
YXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAtNCwgJzAgcmVhZHMsIDQgZW5x
dWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAtNCcpOwotCi0gIHJldHVybiByZWFkZXIucmVh
ZCgpCi0gICAgLnRoZW4ocmVzdWx0ID0+IHsKLSAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJl
c3VsdCwgeyB2YWx1ZTogJ2EnLCBkb25lOiBmYWxzZSB9LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJzFzdCByZWFkIGdpdmVzIGJhY2sgdGhlIDFzdCBjaHVuayBlbnF1ZXVlZCAocXVldWUg
bm93IGNvbnRhaW5zIDMgY2h1bmtzKScpOwotICAgICAgcmV0dXJuIHJlYWRlci5yZWFkKCk7Ci0g
ICAgfSkKLSAgICAudGhlbihyZXN1bHQgPT4gewotICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMo
cmVzdWx0LCB7IHZhbHVlOiAnYicsIGRvbmU6IGZhbHNlIH0sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAnMm5kIHJlYWQgZ2l2ZXMgYmFjayB0aGUgMm5kIGNodW5rIGVucXVldWVkIChxdWV1
ZSBub3cgY29udGFpbnMgMiBjaHVua3MpJyk7Ci0gICAgICByZXR1cm4gcmVhZGVyLnJlYWQoKTsK
LSAgICB9KQotICAgIC50aGVuKHJlc3VsdCA9PiB7Ci0gICAgICBhc3NlcnRfb2JqZWN0X2VxdWFs
cyhyZXN1bHQsIHsgdmFsdWU6ICdjJywgZG9uZTogZmFsc2UgfSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICczcmQgcmVhZCBnaXZlcyBiYWNrIHRoZSAzcmQgY2h1bmsgZW5xdWV1ZWQgKHF1
ZXVlIG5vdyBjb250YWlucyAxIGNodW5rKScpOwotCi0gICAgICBhc3NlcnRfZXF1YWxzKGNvbnRy
b2xsZXIuZGVzaXJlZFNpemUsIC0xLCAnMyByZWFkcywgNCBlbnF1ZXVlczogZGVzaXJlZFNpemUg
c2hvdWxkIGJlIC0xJyk7Ci0gICAgICBjb250cm9sbGVyLmVucXVldWUoJ2UnKTsKLSAgICAgIGFz
c2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgLTIsICczIHJlYWRzLCA1IGVucXVl
dWVzOiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUgLTInKTsKLQotICAgICAgcmV0dXJuIHJlYWRlci5y
ZWFkKCk7Ci0gICAgfSkKLSAgICAudGhlbihyZXN1bHQgPT4gewotICAgICAgYXNzZXJ0X29iamVj
dF9lcXVhbHMocmVzdWx0LCB7IHZhbHVlOiAnZCcsIGRvbmU6IGZhbHNlIH0sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAnNHRoIHJlYWQgZ2l2ZXMgYmFjayB0aGUgNHRoIGNodW5rIGVucXVl
dWVkIChxdWV1ZSBub3cgY29udGFpbnMgMSBjaHVua3MpJyk7Ci0gICAgICByZXR1cm4gcmVhZGVy
LnJlYWQoKTsKLQotICAgIH0pLnRoZW4ocmVzdWx0ID0+IHsKLSAgICAgIGFzc2VydF9vYmplY3Rf
ZXF1YWxzKHJlc3VsdCwgeyB2YWx1ZTogJ2UnLCBkb25lOiBmYWxzZSB9LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJzV0aCByZWFkIGdpdmVzIGJhY2sgdGhlIDV0aCBjaHVuayBlbnF1ZXVl
ZCAocXVldWUgbm93IGNvbnRhaW5zIDAgY2h1bmtzKScpOwotCi0gICAgICBhc3NlcnRfZXF1YWxz
KGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDAsICc1IHJlYWRzLCA1IGVucXVldWVzOiBkZXNpcmVk
U2l6ZSBzaG91bGQgYmUgMCcpOwotICAgICAgY29udHJvbGxlci5lbnF1ZXVlKCdmJyk7Ci0gICAg
ICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIC0xLCAnNSByZWFkcywgNiBl
bnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIC0xJyk7Ci0gICAgICBjb250cm9sbGVyLmVu
cXVldWUoJ2cnKTsKLSAgICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwg
LTIsICc1IHJlYWRzLCA3IGVucXVldWVzOiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUgLTInKTsKLSAg
ICB9KTsKLQotfSwgJ0NvcnJlY3RseSBnb3Zlcm5zIGEgUmVhZGFibGVTdHJlYW1Db250cm9sbGVy
XCdzIGRlc2lyZWRTaXplIHByb3BlcnR5IChIV00gPSAwKScpOwotCi1wcm9taXNlX3Rlc3QoKCkg
PT4gewotCi0gIGxldCBjb250cm9sbGVyOwotICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVh
bSgKLSAgICB7Ci0gICAgICBzdGFydChjKSB7Ci0gICAgICAgIGNvbnRyb2xsZXIgPSBjOwotICAg
ICAgfQotICAgIH0sCi0gICAgbmV3IENvdW50UXVldWluZ1N0cmF0ZWd5KHsgaGlnaFdhdGVyTWFy
azogMSB9KQotICApOwotICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKLQotICBhc3Nl
cnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDEsICcwIHJlYWRzLCAwIGVucXVldWVz
OiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUgMScpOwotICBjb250cm9sbGVyLmVucXVldWUoJ2EnKTsK
LSAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAwLCAnMCByZWFkcywgMSBl
bnF1ZXVlOiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUgMCcpOwotICBjb250cm9sbGVyLmVucXVldWUo
J2InKTsKLSAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAtMSwgJzAgcmVh
ZHMsIDIgZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAtMScpOwotICBjb250cm9sbGVy
LmVucXVldWUoJ2MnKTsKLSAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAt
MiwgJzAgcmVhZHMsIDMgZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAtMicpOwotICBj
b250cm9sbGVyLmVucXVldWUoJ2QnKTsKLSAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2ly
ZWRTaXplLCAtMywgJzAgcmVhZHMsIDQgZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAt
MycpOwotCi0gIHJldHVybiByZWFkZXIucmVhZCgpCi0gICAgLnRoZW4ocmVzdWx0ID0+IHsKLSAg
ICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdCwgeyB2YWx1ZTogJ2EnLCBkb25lOiBmYWxz
ZSB9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJzFzdCByZWFkIGdpdmVzIGJhY2sgdGhl
IDFzdCBjaHVuayBlbnF1ZXVlZCAocXVldWUgbm93IGNvbnRhaW5zIDMgY2h1bmtzKScpOwotICAg
ICAgcmV0dXJuIHJlYWRlci5yZWFkKCk7Ci0gICAgfSkKLSAgICAudGhlbihyZXN1bHQgPT4gewot
ICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0LCB7IHZhbHVlOiAnYicsIGRvbmU6IGZh
bHNlIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAnMm5kIHJlYWQgZ2l2ZXMgYmFjayB0
aGUgMm5kIGNodW5rIGVucXVldWVkIChxdWV1ZSBub3cgY29udGFpbnMgMiBjaHVua3MpJyk7Ci0g
ICAgICByZXR1cm4gcmVhZGVyLnJlYWQoKTsKLSAgICB9KQotICAgIC50aGVuKHJlc3VsdCA9PiB7
Ci0gICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6ICdjJywgZG9uZTog
ZmFsc2UgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICczcmQgcmVhZCBnaXZlcyBiYWNr
IHRoZSAzcmQgY2h1bmsgZW5xdWV1ZWQgKHF1ZXVlIG5vdyBjb250YWlucyAxIGNodW5rKScpOwot
Ci0gICAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDAsICczIHJlYWRz
LCA0IGVucXVldWVzOiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUgMCcpOwotICAgICAgY29udHJvbGxl
ci5lbnF1ZXVlKCdlJyk7Ci0gICAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNp
emUsIC0xLCAnMyByZWFkcywgNSBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIC0xJyk7
Ci0KLSAgICAgIHJldHVybiByZWFkZXIucmVhZCgpOwotICAgIH0pCi0gICAgLnRoZW4ocmVzdWx0
ID0+IHsKLSAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdCwgeyB2YWx1ZTogJ2QnLCBk
b25lOiBmYWxzZSB9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJzR0aCByZWFkIGdpdmVz
IGJhY2sgdGhlIDR0aCBjaHVuayBlbnF1ZXVlZCAocXVldWUgbm93IGNvbnRhaW5zIDEgY2h1bmtz
KScpOwotICAgICAgcmV0dXJuIHJlYWRlci5yZWFkKCk7Ci0gICAgfSkKLSAgICAudGhlbihyZXN1
bHQgPT4gewotICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0LCB7IHZhbHVlOiAnZScs
IGRvbmU6IGZhbHNlIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAnNXRoIHJlYWQgZ2l2
ZXMgYmFjayB0aGUgNXRoIGNodW5rIGVucXVldWVkIChxdWV1ZSBub3cgY29udGFpbnMgMCBjaHVu
a3MpJyk7Ci0KLSAgICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMSwg
JzUgcmVhZHMsIDUgZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAxJyk7Ci0gICAgICBj
b250cm9sbGVyLmVucXVldWUoJ2YnKTsKLSAgICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5k
ZXNpcmVkU2l6ZSwgMCwgJzUgcmVhZHMsIDYgZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBi
ZSAwJyk7Ci0gICAgICBjb250cm9sbGVyLmVucXVldWUoJ2cnKTsKLSAgICAgIGFzc2VydF9lcXVh
bHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgLTEsICc1IHJlYWRzLCA3IGVucXVldWVzOiBkZXNp
cmVkU2l6ZSBzaG91bGQgYmUgLTEnKTsKLSAgICB9KTsKLQotfSwgJ0NvcnJlY3RseSBnb3Zlcm5z
IGEgUmVhZGFibGVTdHJlYW1Db250cm9sbGVyXCdzIGRlc2lyZWRTaXplIHByb3BlcnR5IChIV00g
PSAxKScpOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotCi0gIGxldCBjb250cm9sbGVyOwotICBj
b25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSgKLSAgICB7Ci0gICAgICBzdGFydChjKSB7Ci0g
ICAgICAgIGNvbnRyb2xsZXIgPSBjOwotICAgICAgfQotICAgIH0sCi0gICAgbmV3IENvdW50UXVl
dWluZ1N0cmF0ZWd5KHsgaGlnaFdhdGVyTWFyazogNCB9KQotICApOwotICBjb25zdCByZWFkZXIg
PSBycy5nZXRSZWFkZXIoKTsKLQotICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNp
emUsIDQsICcwIHJlYWRzLCAwIGVucXVldWVzOiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUgNCcpOwot
ICBjb250cm9sbGVyLmVucXVldWUoJ2EnKTsKLSAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRl
c2lyZWRTaXplLCAzLCAnMCByZWFkcywgMSBlbnF1ZXVlOiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUg
MycpOwotICBjb250cm9sbGVyLmVucXVldWUoJ2InKTsKLSAgYXNzZXJ0X2VxdWFscyhjb250cm9s
bGVyLmRlc2lyZWRTaXplLCAyLCAnMCByZWFkcywgMiBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hv
dWxkIGJlIDInKTsKLSAgY29udHJvbGxlci5lbnF1ZXVlKCdjJyk7Ci0gIGFzc2VydF9lcXVhbHMo
Y29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMSwgJzAgcmVhZHMsIDMgZW5xdWV1ZXM6IGRlc2lyZWRT
aXplIHNob3VsZCBiZSAxJyk7Ci0gIGNvbnRyb2xsZXIuZW5xdWV1ZSgnZCcpOwotICBhc3NlcnRf
ZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDAsICcwIHJlYWRzLCA0IGVucXVldWVzOiBk
ZXNpcmVkU2l6ZSBzaG91bGQgYmUgMCcpOwotICBjb250cm9sbGVyLmVucXVldWUoJ2UnKTsKLSAg
YXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAtMSwgJzAgcmVhZHMsIDUgZW5x
dWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAtMScpOwotICBjb250cm9sbGVyLmVucXVldWUo
J2YnKTsKLSAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAtMiwgJzAgcmVh
ZHMsIDYgZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAtMicpOwotCi0KLSAgcmV0dXJu
IHJlYWRlci5yZWFkKCkKLSAgICAudGhlbihyZXN1bHQgPT4gewotICAgICAgYXNzZXJ0X29iamVj
dF9lcXVhbHMocmVzdWx0LCB7IHZhbHVlOiAnYScsIGRvbmU6IGZhbHNlIH0sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAnMXN0IHJlYWQgZ2l2ZXMgYmFjayB0aGUgMXN0IGNodW5rIGVucXVl
dWVkIChxdWV1ZSBub3cgY29udGFpbnMgNSBjaHVua3MpJyk7Ci0gICAgICByZXR1cm4gcmVhZGVy
LnJlYWQoKTsKLSAgICB9KQotICAgIC50aGVuKHJlc3VsdCA9PiB7Ci0gICAgICBhc3NlcnRfb2Jq
ZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6ICdiJywgZG9uZTogZmFsc2UgfSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICcybmQgcmVhZCBnaXZlcyBiYWNrIHRoZSAybmQgY2h1bmsgZW5x
dWV1ZWQgKHF1ZXVlIG5vdyBjb250YWlucyA0IGNodW5rcyknKTsKLQotICAgICAgYXNzZXJ0X2Vx
dWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAwLCAnMiByZWFkcywgNiBlbnF1ZXVlczogZGVz
aXJlZFNpemUgc2hvdWxkIGJlIDAnKTsKLSAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnZycpOwot
ICAgICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAtMSwgJzIgcmVhZHMs
IDcgZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAtMScpOwotCi0gICAgICByZXR1cm4g
cmVhZGVyLnJlYWQoKTsKLSAgICB9KQotICAgIC50aGVuKHJlc3VsdCA9PiB7Ci0gICAgICBhc3Nl
cnRfb2JqZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6ICdjJywgZG9uZTogZmFsc2UgfSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICczcmQgcmVhZCBnaXZlcyBiYWNrIHRoZSAzcmQgY2h1
bmsgZW5xdWV1ZWQgKHF1ZXVlIG5vdyBjb250YWlucyA0IGNodW5rcyknKTsKLSAgICAgIHJldHVy
biByZWFkZXIucmVhZCgpOwotICAgIH0pCi0gICAgLnRoZW4ocmVzdWx0ID0+IHsKLSAgICAgIGFz
c2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdCwgeyB2YWx1ZTogJ2QnLCBkb25lOiBmYWxzZSB9LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJzR0aCByZWFkIGdpdmVzIGJhY2sgdGhlIDR0aCBj
aHVuayBlbnF1ZXVlZCAocXVldWUgbm93IGNvbnRhaW5zIDMgY2h1bmtzKScpOwotICAgICAgcmV0
dXJuIHJlYWRlci5yZWFkKCk7Ci0gICAgfSkKLSAgICAudGhlbihyZXN1bHQgPT4gewotICAgICAg
YXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0LCB7IHZhbHVlOiAnZScsIGRvbmU6IGZhbHNlIH0s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAnNXRoIHJlYWQgZ2l2ZXMgYmFjayB0aGUgNXRo
IGNodW5rIGVucXVldWVkIChxdWV1ZSBub3cgY29udGFpbnMgMiBjaHVua3MpJyk7Ci0gICAgICBy
ZXR1cm4gcmVhZGVyLnJlYWQoKTsKLSAgICB9KQotICAgIC50aGVuKHJlc3VsdCA9PiB7Ci0gICAg
ICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6ICdmJywgZG9uZTogZmFsc2Ug
fSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICc2dGggcmVhZCBnaXZlcyBiYWNrIHRoZSA2
dGggY2h1bmsgZW5xdWV1ZWQgKHF1ZXVlIG5vdyBjb250YWlucyAwIGNodW5rcyknKTsKLQotICAg
ICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAzLCAnNiByZWFkcywgNyBl
bnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIDMnKTsKLSAgICAgIGNvbnRyb2xsZXIuZW5x
dWV1ZSgnaCcpOwotICAgICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAy
LCAnNiByZWFkcywgOCBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIDInKTsKLSAgICAg
IGNvbnRyb2xsZXIuZW5xdWV1ZSgnaScpOwotICAgICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVy
LmRlc2lyZWRTaXplLCAxLCAnNiByZWFkcywgOSBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxk
IGJlIDEnKTsKLSAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnaicpOwotICAgICAgYXNzZXJ0X2Vx
dWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAwLCAnNiByZWFkcywgMTAgZW5xdWV1ZXM6IGRl
c2lyZWRTaXplIHNob3VsZCBiZSAwJyk7Ci0gICAgICBjb250cm9sbGVyLmVucXVldWUoJ2snKTsK
LSAgICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgLTEsICc2IHJlYWRz
LCAxMSBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIC0xJyk7Ci0gICAgfSk7Ci0KLX0s
ICdDb3JyZWN0bHkgZ292ZXJucyBhIFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlclwncyBkZXNpcmVk
U2l6ZSBwcm9wZXJ0eSAoSFdNID0gNCknKTsKLQotZG9uZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0
cmVhbXMvY291bnQtcXVldWluZy1zdHJhdGVneS1pbnRlZ3JhdGlvbi5zZXJ2aWNld29ya2VyLmh0
dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3ktaW50
ZWdyYXRpb24uc2VydmljZXdvcmtlci5odHRwcy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGViZDgwNDQ3NzMwNDBjMjg3MzAxZDkwMTMwZDFmODIxNWJkMDU2NWUu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVh
bXMvY291bnQtcXVldWluZy1zdHJhdGVneS1pbnRlZ3JhdGlvbi5zZXJ2aWNld29ya2VyLmh0dHBz
LWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDcgKzAsMCBAQAotCi1QQVNTIFNlcnZp
Y2Ugd29ya2VyIHRlc3Qgc2V0dXAgCi1QQVNTIENhbiBjb25zdHJ1Y3QgYSByZWFkYWJsZSBzdHJl
YW0gd2l0aCBhIHZhbGlkIENvdW50UXVldWluZ1N0cmF0ZWd5IAotUEFTUyBDb3JyZWN0bHkgZ292
ZXJucyBhIFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlcidzIGRlc2lyZWRTaXplIHByb3BlcnR5IChI
V00gPSAwKSAKLVBBU1MgQ29ycmVjdGx5IGdvdmVybnMgYSBSZWFkYWJsZVN0cmVhbUNvbnRyb2xs
ZXIncyBkZXNpcmVkU2l6ZSBwcm9wZXJ0eSAoSFdNID0gMSkgCi1QQVNTIENvcnJlY3RseSBnb3Zl
cm5zIGEgUmVhZGFibGVTdHJlYW1Db250cm9sbGVyJ3MgZGVzaXJlZFNpemUgcHJvcGVydHkgKEhX
TSA9IDQpIAotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5
LWludGVncmF0aW9uLnNlcnZpY2V3b3JrZXIuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2NvdW50
LXF1ZXVpbmctc3RyYXRlZ3ktaW50ZWdyYXRpb24uc2VydmljZXdvcmtlci5odHRwcy5odG1sCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMjlhYzc2NWQ0Yjg1NzMwNzg1Y2JmMDEwYzUx
YzIxOGUxMmVkZGY0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9y
ZWFkYWJsZS1zdHJlYW1zL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3ktaW50ZWdyYXRpb24uc2Vydmlj
ZXdvcmtlci5odHRwcy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotPCFET0NU
WVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08dGl0bGU+Y291bnQtcXVldWluZy1z
dHJhdGVneS1pbnRlZ3JhdGlvbi5qcyBzZXJ2aWNlIHdvcmtlciB3cmFwcGVyIGZpbGU8L3RpdGxl
PgotCi08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08
c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08
c2NyaXB0IHNyYz0iL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9yZXNvdXJjZXMvdGVz
dC1oZWxwZXJzLnN1Yi5qcyI+PC9zY3JpcHQ+Ci0KLTxzY3JpcHQ+Ci0ndXNlIHN0cmljdCc7Ci1z
ZXJ2aWNlX3dvcmtlcl90ZXN0KCdjb3VudC1xdWV1aW5nLXN0cmF0ZWd5LWludGVncmF0aW9uLmpz
JywgJ1NlcnZpY2Ugd29ya2VyIHRlc3Qgc2V0dXAnKTsKLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRh
YmxlLXN0cmVhbXMvY291bnQtcXVldWluZy1zdHJhdGVneS1pbnRlZ3JhdGlvbi5zaGFyZWR3b3Jr
ZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvY291bnQtcXVldWluZy1zdHJhdGVneS1pbnRl
Z3JhdGlvbi5zaGFyZWR3b3JrZXItZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwOWQ1ZDI1MDlkNzg0N2U4Y2Q2ZmU2NjA2YWE2MGNkZDMzYWE0NzRlLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2NvdW50
LXF1ZXVpbmctc3RyYXRlZ3ktaW50ZWdyYXRpb24uc2hhcmVkd29ya2VyLWV4cGVjdGVkLnR4dAor
KysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotQ09OU09MRSBNRVNTQUdFOiBSZWZlcmVuY2VF
cnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogU2hhcmVkV29ya2VyCi0KLUhhcm5lc3MgRXJyb3Ig
KEZBSUwpLCBtZXNzYWdlID0gUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IFNo
YXJlZFdvcmtlcgotCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2NvdW50LXF1ZXVpbmctc3Ry
YXRlZ3ktaW50ZWdyYXRpb24uc2hhcmVkd29ya2VyLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9jb3VudC1x
dWV1aW5nLXN0cmF0ZWd5LWludGVncmF0aW9uLnNoYXJlZHdvcmtlci5odG1sCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA3YWE2ZjU0MGRjMDgzM2RmNzA5MDQ4ZjgxMTkyMTYxYzA3MDY4
NzAyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1z
dHJlYW1zL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3ktaW50ZWdyYXRpb24uc2hhcmVkd29ya2VyLmh0
bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxtZXRh
IGNoYXJzZXQ9InV0Zi04Ij4KLTx0aXRsZT5jb3VudC1xdWV1aW5nLXN0cmF0ZWd5LWludGVncmF0
aW9uLmpzIHNoYXJlZCB3b3JrZXIgd3JhcHBlciBmaWxlPC90aXRsZT4KLQotPHNjcmlwdCBzcmM9
Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9yZXNv
dXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotCi08c2NyaXB0PgotJ3VzZSBz
dHJpY3QnOwotZmV0Y2hfdGVzdHNfZnJvbV93b3JrZXIobmV3IFNoYXJlZFdvcmtlcignY291bnQt
cXVldWluZy1zdHJhdGVneS1pbnRlZ3JhdGlvbi5qcycpKTsKLTwvc2NyaXB0PgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3Jl
YWRhYmxlLXN0cmVhbXMvZGVmYXVsdC1yZWFkZXIuYW55LWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJl
YW1zL2RlZmF1bHQtcmVhZGVyLmFueS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTQ3ZTc1YWJi
OTY0MDZlOTg4N2ZjYjYxMTFlOTBmZGFjZDVmYzNmZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1z
dHJlYW1zL2RlZmF1bHQtcmVhZGVyLmFueS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzNCBAQAor
CitGQUlMIFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlciBjb25zdHJ1Y3RvciBzaG91bGQgZ2V0
IGEgUmVhZGFibGVTdHJlYW0gb2JqZWN0IGFzIGFyZ3VtZW50IGFzc2VydF90aHJvd3NfanM6IGZ1
bmN0aW9uICIoKSA9PiBuZXcgUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyKCdwb3RhdG8nKSIg
dGhyZXcgb2JqZWN0ICJSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogUmVhZGFi
bGVTdHJlYW1EZWZhdWx0UmVhZGVyIiAoIlJlZmVyZW5jZUVycm9yIikgZXhwZWN0ZWQgaW5zdGFu
Y2Ugb2YgZnVuY3Rpb24gImZ1bmN0aW9uIFR5cGVFcnJvcigpIHsKKyAgICBbbmF0aXZlIGNvZGVd
Cit9IiAoIlR5cGVFcnJvciIpCitGQUlMIFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlciBjbG9z
ZWQgc2hvdWxkIGFsd2F5cyByZXR1cm4gdGhlIHNhbWUgcHJvbWlzZSBvYmplY3QgQ2FuJ3QgZmlu
ZCB2YXJpYWJsZTogUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyCitGQUlMIENvbnN0cnVjdGlu
ZyBhIFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlciBkaXJlY3RseSBzaG91bGQgZmFpbCBpZiB0
aGUgc3RyZWFtIGlzIGFscmVhZHkgbG9ja2VkICh2aWEgZGlyZWN0IGNvbnN0cnVjdGlvbikgQ2Fu
J3QgZmluZCB2YXJpYWJsZTogUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyCitGQUlMIEdldHRp
bmcgYSBSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIgdmlhIGdldFJlYWRlciBzaG91bGQgZmFp
bCBpZiB0aGUgc3RyZWFtIGlzIGFscmVhZHkgbG9ja2VkICh2aWEgZGlyZWN0IGNvbnN0cnVjdGlv
bikgQ2FuJ3QgZmluZCB2YXJpYWJsZTogUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyCitGQUlM
IENvbnN0cnVjdGluZyBhIFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlciBkaXJlY3RseSBzaG91
bGQgZmFpbCBpZiB0aGUgc3RyZWFtIGlzIGFscmVhZHkgbG9ja2VkICh2aWEgZ2V0UmVhZGVyKSBh
c3NlcnRfdGhyb3dzX2pzOiBjb25zdHJ1Y3RpbmcgZGlyZWN0bHkgc2hvdWxkIGZhaWwgZnVuY3Rp
b24gIigpID0+IG5ldyBSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIocnMpIiB0aHJldyBvYmpl
Y3QgIlJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBSZWFkYWJsZVN0cmVhbURl
ZmF1bHRSZWFkZXIiICgiUmVmZXJlbmNlRXJyb3IiKSBleHBlY3RlZCBpbnN0YW5jZSBvZiBmdW5j
dGlvbiAiZnVuY3Rpb24gVHlwZUVycm9yKCkgeworICAgIFtuYXRpdmUgY29kZV0KK30iICgiVHlw
ZUVycm9yIikKK1BBU1MgR2V0dGluZyBhIFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlciB2aWEg
Z2V0UmVhZGVyIHNob3VsZCBmYWlsIGlmIHRoZSBzdHJlYW0gaXMgYWxyZWFkeSBsb2NrZWQgKHZp
YSBnZXRSZWFkZXIpIAorRkFJTCBDb25zdHJ1Y3RpbmcgYSBSZWFkYWJsZVN0cmVhbURlZmF1bHRS
ZWFkZXIgZGlyZWN0bHkgc2hvdWxkIGJlIE9LIGlmIHRoZSBzdHJlYW0gaXMgY2xvc2VkIENhbid0
IGZpbmQgdmFyaWFibGU6IFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlcgorRkFJTCBDb25zdHJ1
Y3RpbmcgYSBSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIgZGlyZWN0bHkgc2hvdWxkIGJlIE9L
IGlmIHRoZSBzdHJlYW0gaXMgZXJyb3JlZCBDYW4ndCBmaW5kIHZhcmlhYmxlOiBSZWFkYWJsZVN0
cmVhbURlZmF1bHRSZWFkZXIKK1BBU1MgUmVhZGluZyBmcm9tIGEgcmVhZGVyIGZvciBhbiBlbXB0
eSBzdHJlYW0gd2lsbCB3YWl0IHVudGlsIGEgY2h1bmsgaXMgYXZhaWxhYmxlIAorUEFTUyBjYW5j
ZWwoKSBvbiBhIHJlYWRlciBkb2VzIG5vdCByZWxlYXNlIHRoZSByZWFkZXIgCitQQVNTIGNsb3Nl
ZCBzaG91bGQgYmUgZnVsZmlsbGVkIGFmdGVyIHN0cmVhbSBpcyBjbG9zZWQgKC5jbG9zZWQgYWNj
ZXNzIGJlZm9yZSBhY3F1aXJpbmcpIAorUEFTUyBjbG9zZWQgc2hvdWxkIGJlIHJlamVjdGVkIGFm
dGVyIHJlYWRlciByZWxlYXNlcyBpdHMgbG9jayAobXVsdGlwbGUgc3RyZWFtIGxvY2tzKSAKK1BB
U1MgTXVsdGlwbGUgcmVhZGVycyBjYW4gYWNjZXNzIHRoZSBzdHJlYW0gaW4gc2VxdWVuY2UgCitQ
QVNTIENhbm5vdCB1c2UgYW4gYWxyZWFkeS1yZWxlYXNlZCByZWFkZXIgdG8gdW5sb2NrIGEgc3Ry
ZWFtIGFnYWluIAorUEFTUyBjYW5jZWwoKSBvbiBhIHJlbGVhc2VkIHJlYWRlciBpcyBhIG5vLW9w
IGFuZCBkb2VzIG5vdCBwYXNzIHRocm91Z2ggCitQQVNTIEdldHRpbmcgYSBzZWNvbmQgcmVhZGVy
IGFmdGVyIGVycm9yaW5nIHRoZSBzdHJlYW0gYW5kIHJlbGVhc2luZyB0aGUgcmVhZGVyIHNob3Vs
ZCBzdWNjZWVkIAorUEFTUyBSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIgY2xvc2VkIHByb21p
c2Ugc2hvdWxkIGJlIHJlamVjdGVkIHdpdGggdW5kZWZpbmVkIGlmIHRoYXQgaXMgdGhlIGVycm9y
IAorUEFTUyBSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXI6IGlmIHN0YXJ0IHJlamVjdHMgd2l0
aCBubyBwYXJhbWV0ZXIsIGl0IHNob3VsZCBlcnJvciB0aGUgc3RyZWFtIHdpdGggYW4gdW5kZWZp
bmVkIGVycm9yIAorUEFTUyBFcnJvcmluZyBhIFJlYWRhYmxlU3RyZWFtIGFmdGVyIGNoZWNraW5n
IGNsb3NlZCBzaG91bGQgcmVqZWN0IFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlciBjbG9zZWQg
cHJvbWlzZSAKK1BBU1MgRXJyb3JpbmcgYSBSZWFkYWJsZVN0cmVhbSBiZWZvcmUgY2hlY2tpbmcg
Y2xvc2VkIHNob3VsZCByZWplY3QgUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyIGNsb3NlZCBw
cm9taXNlIAorUEFTUyBSZWFkaW5nIHR3aWNlIG9uIGEgc3RyZWFtIHRoYXQgZ2V0cyBjbG9zZWQg
CitQQVNTIFJlYWRpbmcgdHdpY2Ugb24gYSBjbG9zZWQgc3RyZWFtIAorUEFTUyBSZWFkaW5nIHR3
aWNlIG9uIGFuIGVycm9yZWQgc3RyZWFtIAorUEFTUyBSZWFkaW5nIHR3aWNlIG9uIGEgc3RyZWFt
IHRoYXQgZ2V0cyBlcnJvcmVkIAorRkFJTCBnZXRSZWFkZXIoKSBzaG91bGQgY2FsbCBUb1N0cmlu
ZygpIG9uIG1vZGUgYXNzZXJ0X3Rocm93c19qczogZ2V0UmVhZGVyKCkgc2hvdWxkIHRocm93IGZ1
bmN0aW9uICIoKSA9PiBycy5nZXRSZWFkZXIoeyBtb2RlIH0pIiB0aHJldyBvYmplY3QgIlJhbmdl
RXJyb3I6IEludmFsaWQgbW9kZSBpcyBzcGVjaWZpZWQiICgiUmFuZ2VFcnJvciIpIGV4cGVjdGVk
IGluc3RhbmNlIG9mIGZ1bmN0aW9uICJmdW5jdGlvbiBUeXBlRXJyb3IoKSB7CisgICAgW25hdGl2
ZSBjb2RlXQorfSIgKCJUeXBlRXJyb3IiKQorUEFTUyBjb250cm9sbGVyLmNsb3NlKCkgc2hvdWxk
IGNsZWFyIHRoZSBsaXN0IG9mIHBlbmRpbmcgcmVhZCByZXF1ZXN0cyAKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRh
YmxlLXN0cmVhbXMvZGVmYXVsdC1yZWFkZXIuYW55Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9kZWZhdWx0
LXJlYWRlci5hbnkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMzgyOTEzNTI4ZTY5M2IzYTVkNTZjNjYwYTQ1
MDYwOTgwYjU0OGMzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZGVmYXVsdC1yZWFk
ZXIuYW55Lmh0bWwKQEAgLTAsMCArMSBAQAorPCEtLSBUaGlzIGZpbGUgaXMgcmVxdWlyZWQgZm9y
IFdlYktpdCB0ZXN0IGluZnJhc3RydWN0dXJlIHRvIHJ1biB0aGUgdGVtcGxhdGVkIHRlc3QgLS0+
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZGVm
YXVsdC1yZWFkZXIuYW55LmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZGVmYXVsdC1yZWFkZXIuYW55LmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmZjNTVlYmM1YjhmNjc4YjQ0NmNiNjA0NmZmMjU3ZjJiZTRkNjNkNTAKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9kZWZhdWx0LXJlYWRlci5hbnkuanMKQEAgLTAsMCAr
MSw0NjMgQEAKKy8vIE1FVEE6IGdsb2JhbD13aW5kb3csd29ya2VyLGpzc2hlbGwKKy8vIE1FVEE6
IHNjcmlwdD0uLi9yZXNvdXJjZXMvcnMtdXRpbHMuanMKKyd1c2Ugc3RyaWN0JzsKKwordGVzdCgo
KSA9PiB7CisKKyAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IG5ldyBSZWFkYWJs
ZVN0cmVhbURlZmF1bHRSZWFkZXIoJ3BvdGF0bycpKTsKKyAgYXNzZXJ0X3Rocm93c19qcyhUeXBl
RXJyb3IsICgpID0+IG5ldyBSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIoe30pKTsKKyAgYXNz
ZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IG5ldyBSZWFkYWJsZVN0cmVhbURlZmF1bHRS
ZWFkZXIoKSk7CisKK30sICdSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIgY29uc3RydWN0b3Ig
c2hvdWxkIGdldCBhIFJlYWRhYmxlU3RyZWFtIG9iamVjdCBhcyBhcmd1bWVudCcpOworCit0ZXN0
KCgpID0+IHsKKworICBjb25zdCByc1JlYWRlciA9IG5ldyBSZWFkYWJsZVN0cmVhbURlZmF1bHRS
ZWFkZXIobmV3IFJlYWRhYmxlU3RyZWFtKCkpOworICBhc3NlcnRfZXF1YWxzKHJzUmVhZGVyLmNs
b3NlZCwgcnNSZWFkZXIuY2xvc2VkLCAnY2xvc2VkIHNob3VsZCByZXR1cm4gdGhlIHNhbWUgcHJv
bWlzZScpOworCit9LCAnUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyIGNsb3NlZCBzaG91bGQg
YWx3YXlzIHJldHVybiB0aGUgc2FtZSBwcm9taXNlIG9iamVjdCcpOworCit0ZXN0KCgpID0+IHsK
KworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSgpOworICBuZXcgUmVhZGFibGVTdHJl
YW1EZWZhdWx0UmVhZGVyKHJzKTsgLy8gQ29uc3RydWN0aW5nIGRpcmVjdGx5IHRoZSBmaXJzdCB0
aW1lIHNob3VsZCBiZSBmaW5lLgorICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4g
bmV3IFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlcihycyksCisgICAgICAgICAgICAgICAgICAg
J2NvbnN0cnVjdGluZyBkaXJlY3RseSB0aGUgc2Vjb25kIHRpbWUgc2hvdWxkIGZhaWwnKTsKKwor
fSwgJ0NvbnN0cnVjdGluZyBhIFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlciBkaXJlY3RseSBz
aG91bGQgZmFpbCBpZiB0aGUgc3RyZWFtIGlzIGFscmVhZHkgbG9ja2VkICh2aWEgZGlyZWN0ICcg
KworICAgJ2NvbnN0cnVjdGlvbiknKTsKKwordGVzdCgoKSA9PiB7CisKKyAgY29uc3QgcnMgPSBu
ZXcgUmVhZGFibGVTdHJlYW0oKTsKKyAgbmV3IFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlcihy
cyk7IC8vIENvbnN0cnVjdGluZyBkaXJlY3RseSBzaG91bGQgYmUgZmluZS4KKyAgYXNzZXJ0X3Ro
cm93c19qcyhUeXBlRXJyb3IsICgpID0+IHJzLmdldFJlYWRlcigpLCAnZ2V0UmVhZGVyKCkgc2hv
dWxkIGZhaWwnKTsKKworfSwgJ0dldHRpbmcgYSBSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIg
dmlhIGdldFJlYWRlciBzaG91bGQgZmFpbCBpZiB0aGUgc3RyZWFtIGlzIGFscmVhZHkgbG9ja2Vk
ICh2aWEgZGlyZWN0ICcgKworICAgJ2NvbnN0cnVjdGlvbiknKTsKKwordGVzdCgoKSA9PiB7CisK
KyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oKTsKKyAgcnMuZ2V0UmVhZGVyKCk7IC8v
IGdldFJlYWRlcigpIHNob3VsZCBiZSBmaW5lLgorICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJv
ciwgKCkgPT4gbmV3IFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlcihycyksICdjb25zdHJ1Y3Rp
bmcgZGlyZWN0bHkgc2hvdWxkIGZhaWwnKTsKKworfSwgJ0NvbnN0cnVjdGluZyBhIFJlYWRhYmxl
U3RyZWFtRGVmYXVsdFJlYWRlciBkaXJlY3RseSBzaG91bGQgZmFpbCBpZiB0aGUgc3RyZWFtIGlz
IGFscmVhZHkgbG9ja2VkICh2aWEgZ2V0UmVhZGVyKScpOworCit0ZXN0KCgpID0+IHsKKworICBj
b25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSgpOworICBycy5nZXRSZWFkZXIoKTsgLy8gZ2V0
UmVhZGVyKCkgc2hvdWxkIGJlIGZpbmUuCisgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAo
KSA9PiBycy5nZXRSZWFkZXIoKSwgJ2dldFJlYWRlcigpIHNob3VsZCBmYWlsJyk7CisKK30sICdH
ZXR0aW5nIGEgUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyIHZpYSBnZXRSZWFkZXIgc2hvdWxk
IGZhaWwgaWYgdGhlIHN0cmVhbSBpcyBhbHJlYWR5IGxvY2tlZCAodmlhIGdldFJlYWRlciknKTsK
KwordGVzdCgoKSA9PiB7CisKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAg
IHN0YXJ0KGMpIHsKKyAgICAgIGMuY2xvc2UoKTsKKyAgICB9CisgIH0pOworCisgIG5ldyBSZWFk
YWJsZVN0cmVhbURlZmF1bHRSZWFkZXIocnMpOyAvLyBDb25zdHJ1Y3RpbmcgZGlyZWN0bHkgc2hv
dWxkIG5vdCB0aHJvdy4KKworfSwgJ0NvbnN0cnVjdGluZyBhIFJlYWRhYmxlU3RyZWFtRGVmYXVs
dFJlYWRlciBkaXJlY3RseSBzaG91bGQgYmUgT0sgaWYgdGhlIHN0cmVhbSBpcyBjbG9zZWQnKTsK
KwordGVzdCgoKSA9PiB7CisKKyAgY29uc3QgdGhlRXJyb3IgPSBuZXcgRXJyb3IoJ2RvblwndCBz
YXkgaSBkaWRuXCd0IHdhcm4geWEnKTsKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0o
eworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGMuZXJyb3IodGhlRXJyb3IpOworICAgIH0KKyAgfSk7
CisKKyAgbmV3IFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlcihycyk7IC8vIENvbnN0cnVjdGlu
ZyBkaXJlY3RseSBzaG91bGQgbm90IHRocm93LgorCit9LCAnQ29uc3RydWN0aW5nIGEgUmVhZGFi
bGVTdHJlYW1EZWZhdWx0UmVhZGVyIGRpcmVjdGx5IHNob3VsZCBiZSBPSyBpZiB0aGUgc3RyZWFt
IGlzIGVycm9yZWQnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKworICBsZXQgY29udHJvbGxl
cjsKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAg
ICAgIGNvbnRyb2xsZXIgPSBjOworICAgIH0KKyAgfSk7CisgIGNvbnN0IHJlYWRlciA9IHJzLmdl
dFJlYWRlcigpOworCisgIGNvbnN0IHByb21pc2UgPSByZWFkZXIucmVhZCgpLnRoZW4ocmVzdWx0
ID0+IHsKKyAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6ICdhJywgZG9u
ZTogZmFsc2UgfSwgJ3JlYWQoKSBzaG91bGQgZnVsZmlsbCB3aXRoIHRoZSBlbnF1ZXVlZCBjaHVu
aycpOworICB9KTsKKworICBjb250cm9sbGVyLmVucXVldWUoJ2EnKTsKKyAgcmV0dXJuIHByb21p
c2U7CisKK30sICdSZWFkaW5nIGZyb20gYSByZWFkZXIgZm9yIGFuIGVtcHR5IHN0cmVhbSB3aWxs
IHdhaXQgdW50aWwgYSBjaHVuayBpcyBhdmFpbGFibGUnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+
IHsKKworICBsZXQgY2FuY2VsQ2FsbGVkID0gZmFsc2U7CisgIGNvbnN0IHBhc3NlZFJlYXNvbiA9
IG5ldyBFcnJvcignaXQgd2FzblwndCB0aGUgcmlnaHQgdGltZSwgc29ycnknKTsKKyAgY29uc3Qg
cnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIGNhbmNlbChyZWFzb24pIHsKKyAgICAgIGFz
c2VydF90cnVlKHJzLmxvY2tlZCwgJ3RoZSBzdHJlYW0gc2hvdWxkIHN0aWxsIGJlIGxvY2tlZCcp
OworICAgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IHJzLmdldFJlYWRlcigp
LCAnc2hvdWxkIG5vdCBiZSBhYmxlIHRvIGdldCBhbm90aGVyIHJlYWRlcicpOworICAgICAgYXNz
ZXJ0X2VxdWFscyhyZWFzb24sIHBhc3NlZFJlYXNvbiwgJ3RoZSBjYW5jZWxsYXRpb24gcmVhc29u
IGlzIHBhc3NlZCB0aHJvdWdoIHRvIHRoZSB1bmRlcmx5aW5nIHNvdXJjZScpOworICAgICAgY2Fu
Y2VsQ2FsbGVkID0gdHJ1ZTsKKyAgICB9CisgIH0pOworCisgIGNvbnN0IHJlYWRlciA9IHJzLmdl
dFJlYWRlcigpOworICByZXR1cm4gcmVhZGVyLmNhbmNlbChwYXNzZWRSZWFzb24pLnRoZW4oKCkg
PT4gYXNzZXJ0X3RydWUoY2FuY2VsQ2FsbGVkKSk7CisKK30sICdjYW5jZWwoKSBvbiBhIHJlYWRl
ciBkb2VzIG5vdCByZWxlYXNlIHRoZSByZWFkZXInKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsK
KworICBsZXQgY29udHJvbGxlcjsKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewor
ICAgIHN0YXJ0KGMpIHsKKyAgICAgIGNvbnRyb2xsZXIgPSBjOworICAgIH0KKyAgfSk7CisKKyAg
Y29uc3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7CisgIGNvbnN0IHByb21pc2UgPSByZWFkZXIu
Y2xvc2VkOworCisgIGNvbnRyb2xsZXIuY2xvc2UoKTsKKyAgcmV0dXJuIHByb21pc2U7CisKK30s
ICdjbG9zZWQgc2hvdWxkIGJlIGZ1bGZpbGxlZCBhZnRlciBzdHJlYW0gaXMgY2xvc2VkICguY2xv
c2VkIGFjY2VzcyBiZWZvcmUgYWNxdWlyaW5nKScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisK
KyAgbGV0IGNvbnRyb2xsZXI7CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAg
ICBzdGFydChjKSB7CisgICAgICBjb250cm9sbGVyID0gYzsKKyAgICB9CisgIH0pOworCisgIGNv
bnN0IHJlYWRlcjEgPSBycy5nZXRSZWFkZXIoKTsKKworICByZWFkZXIxLnJlbGVhc2VMb2NrKCk7
CisKKyAgY29uc3QgcmVhZGVyMiA9IHJzLmdldFJlYWRlcigpOworICBjb250cm9sbGVyLmNsb3Nl
KCk7CisKKyAgcmV0dXJuIFByb21pc2UuYWxsKFsKKyAgICBwcm9taXNlX3JlamVjdHNfanModCwg
VHlwZUVycm9yLCByZWFkZXIxLmNsb3NlZCksCisgICAgcmVhZGVyMi5jbG9zZWQKKyAgXSk7CisK
K30sICdjbG9zZWQgc2hvdWxkIGJlIHJlamVjdGVkIGFmdGVyIHJlYWRlciByZWxlYXNlcyBpdHMg
bG9jayAobXVsdGlwbGUgc3RyZWFtIGxvY2tzKScpOworCitwcm9taXNlX3Rlc3QoKCkgPT4gewor
CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAg
ICBjLmVucXVldWUoJ2EnKTsKKyAgICAgIGMuZW5xdWV1ZSgnYicpOworICAgICAgYy5jbG9zZSgp
OworICAgIH0KKyAgfSk7CisKKyAgY29uc3QgcmVhZGVyMSA9IHJzLmdldFJlYWRlcigpOworICBj
b25zdCBwcm9taXNlMSA9IHJlYWRlcjEucmVhZCgpLnRoZW4ociA9PiB7CisgICAgYXNzZXJ0X29i
amVjdF9lcXVhbHMociwgeyB2YWx1ZTogJ2EnLCBkb25lOiBmYWxzZSB9LCAncmVhZGluZyB0aGUg
Zmlyc3QgY2h1bmsgZnJvbSByZWFkZXIxIHdvcmtzJyk7CisgIH0pOworICByZWFkZXIxLnJlbGVh
c2VMb2NrKCk7CisKKyAgY29uc3QgcmVhZGVyMiA9IHJzLmdldFJlYWRlcigpOworICBjb25zdCBw
cm9taXNlMiA9IHJlYWRlcjIucmVhZCgpLnRoZW4ociA9PiB7CisgICAgYXNzZXJ0X29iamVjdF9l
cXVhbHMociwgeyB2YWx1ZTogJ2InLCBkb25lOiBmYWxzZSB9LCAncmVhZGluZyB0aGUgc2Vjb25k
IGNodW5rIGZyb20gcmVhZGVyMiB3b3JrcycpOworICB9KTsKKyAgcmVhZGVyMi5yZWxlYXNlTG9j
aygpOworCisgIHJldHVybiBQcm9taXNlLmFsbChbcHJvbWlzZTEsIHByb21pc2UyXSk7CisKK30s
ICdNdWx0aXBsZSByZWFkZXJzIGNhbiBhY2Nlc3MgdGhlIHN0cmVhbSBpbiBzZXF1ZW5jZScpOwor
Citwcm9taXNlX3Rlc3QoKCkgPT4geworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7
CisgICAgc3RhcnQoYykgeworICAgICAgYy5lbnF1ZXVlKCdhJyk7CisgICAgfQorICB9KTsKKwor
ICBjb25zdCByZWFkZXIxID0gcnMuZ2V0UmVhZGVyKCk7CisgIHJlYWRlcjEucmVsZWFzZUxvY2so
KTsKKworICBjb25zdCByZWFkZXIyID0gcnMuZ2V0UmVhZGVyKCk7CisKKyAgLy8gU2hvdWxkIGJl
IGEgbm8tb3AKKyAgcmVhZGVyMS5yZWxlYXNlTG9jaygpOworCisgIHJldHVybiByZWFkZXIyLnJl
YWQoKS50aGVuKHJlc3VsdCA9PiB7CisgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0LCB7
IHZhbHVlOiAnYScsIGRvbmU6IGZhbHNlIH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3Jl
YWQoKSBzaG91bGQgc3RpbGwgd29yayBvbiByZWFkZXIyIGV2ZW4gYWZ0ZXIgcmVhZGVyMSBpcyBy
ZWxlYXNlZCcpOworICB9KTsKKworfSwgJ0Nhbm5vdCB1c2UgYW4gYWxyZWFkeS1yZWxlYXNlZCBy
ZWFkZXIgdG8gdW5sb2NrIGEgc3RyZWFtIGFnYWluJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsK
KworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAg
ICAgYy5lbnF1ZXVlKCdhJyk7CisgICAgfSwKKyAgICBjYW5jZWwoKSB7CisgICAgICBhc3NlcnRf
dW5yZWFjaGVkKCd1bmRlcmx5aW5nIHNvdXJjZSBjYW5jZWwgc2hvdWxkIG5vdCBiZSBjYWxsZWQn
KTsKKyAgICB9CisgIH0pOworCisgIGNvbnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcigpOworICBy
ZWFkZXIucmVsZWFzZUxvY2soKTsKKyAgY29uc3QgY2FuY2VsUHJvbWlzZSA9IHJlYWRlci5jYW5j
ZWwoKTsKKworICBjb25zdCByZWFkZXIyID0gcnMuZ2V0UmVhZGVyKCk7CisgIGNvbnN0IHJlYWRQ
cm9taXNlID0gcmVhZGVyMi5yZWFkKCkudGhlbihyID0+IHsKKyAgICBhc3NlcnRfb2JqZWN0X2Vx
dWFscyhyLCB7IHZhbHVlOiAnYScsIGRvbmU6IGZhbHNlIH0sICdhIG5ldyByZWFkZXIgc2hvdWxk
IGJlIGFibGUgdG8gcmVhZCBhIGNodW5rJyk7CisgIH0pOworCisgIHJldHVybiBQcm9taXNlLmFs
bChbCisgICAgcHJvbWlzZV9yZWplY3RzX2pzKHQsIFR5cGVFcnJvciwgY2FuY2VsUHJvbWlzZSks
CisgICAgcmVhZFByb21pc2UKKyAgXSk7CisKK30sICdjYW5jZWwoKSBvbiBhIHJlbGVhc2VkIHJl
YWRlciBpcyBhIG5vLW9wIGFuZCBkb2VzIG5vdCBwYXNzIHRocm91Z2gnKTsKKworcHJvbWlzZV90
ZXN0KHQgPT4geworCisgIGNvbnN0IHByb21pc2VBc3NlcnRzID0gW107CisKKyAgbGV0IGNvbnRy
b2xsZXI7CisgIGNvbnN0IHRoZUVycm9yID0geyBuYW1lOiAndW5pcXVlIGVycm9yJyB9OworICBj
b25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgY29u
dHJvbGxlciA9IGM7CisgICAgfQorICB9KTsKKworICBjb25zdCByZWFkZXIxID0gcnMuZ2V0UmVh
ZGVyKCk7CisKKyAgcHJvbWlzZUFzc2VydHMucHVzaCgKKyAgICBwcm9taXNlX3JlamVjdHNfZXhh
Y3RseSh0LCB0aGVFcnJvciwgcmVhZGVyMS5jbG9zZWQpLAorICAgIHByb21pc2VfcmVqZWN0c19l
eGFjdGx5KHQsIHRoZUVycm9yLCByZWFkZXIxLnJlYWQoKSkKKyAgKTsKKworICBhc3NlcnRfdGhy
b3dzX2pzKFR5cGVFcnJvciwgKCkgPT4gcnMuZ2V0UmVhZGVyKCksICd0cnlpbmcgdG8gZ2V0IGFu
b3RoZXIgcmVhZGVyIGJlZm9yZSBlcnJvcmluZyBzaG91bGQgdGhyb3cnKTsKKworICBjb250cm9s
bGVyLmVycm9yKHRoZUVycm9yKTsKKworICByZWFkZXIxLnJlbGVhc2VMb2NrKCk7CisKKyAgY29u
c3QgcmVhZGVyMiA9IHJzLmdldFJlYWRlcigpOworCisgIHByb21pc2VBc3NlcnRzLnB1c2goCisg
ICAgcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgdGhlRXJyb3IsIHJlYWRlcjIuY2xvc2VkKSwK
KyAgICBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCB0aGVFcnJvciwgcmVhZGVyMi5yZWFkKCkp
CisgICk7CisKKyAgcmV0dXJuIFByb21pc2UuYWxsKHByb21pc2VBc3NlcnRzKTsKKworfSwgJ0dl
dHRpbmcgYSBzZWNvbmQgcmVhZGVyIGFmdGVyIGVycm9yaW5nIHRoZSBzdHJlYW0gYW5kIHJlbGVh
c2luZyB0aGUgcmVhZGVyIHNob3VsZCBzdWNjZWVkJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsK
KworICBsZXQgY29udHJvbGxlcjsKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewor
ICAgIHN0YXJ0KGMpIHsKKyAgICAgIGNvbnRyb2xsZXIgPSBjOworICAgIH0KKyAgfSk7CisKKyAg
Y29uc3QgcHJvbWlzZSA9IHJzLmdldFJlYWRlcigpLmNsb3NlZC50aGVuKAorICAgIHQudW5yZWFj
aGVkX2Z1bmMoJ2Nsb3NlZCBwcm9taXNlIHNob3VsZCBub3QgYmUgZnVsZmlsbGVkIHdoZW4gc3Ry
ZWFtIGlzIGVycm9yZWQnKSwKKyAgICBlcnIgPT4geworICAgICAgYXNzZXJ0X2VxdWFscyhlcnIs
IHVuZGVmaW5lZCwgJ3Bhc3NlZCBlcnJvciBzaG91bGQgYmUgdW5kZWZpbmVkIGFzIGl0IHdhcycp
OworICAgIH0KKyAgKTsKKworICBjb250cm9sbGVyLmVycm9yKCk7CisgIHJldHVybiBwcm9taXNl
OworCit9LCAnUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyIGNsb3NlZCBwcm9taXNlIHNob3Vs
ZCBiZSByZWplY3RlZCB3aXRoIHVuZGVmaW5lZCBpZiB0aGF0IGlzIHRoZSBlcnJvcicpOworCisK
K3Byb21pc2VfdGVzdCh0ID0+IHsKKworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7
CisgICAgc3RhcnQoKSB7CisgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoKTsKKyAgICB9Cisg
IH0pOworCisgIHJldHVybiBycy5nZXRSZWFkZXIoKS5yZWFkKCkudGhlbigKKyAgICB0LnVucmVh
Y2hlZF9mdW5jKCdyZWFkIHByb21pc2Ugc2hvdWxkIG5vdCBiZSBmdWxmaWxsZWQgd2hlbiBzdHJl
YW0gaXMgZXJyb3JlZCcpLAorICAgIGVyciA9PiB7CisgICAgICBhc3NlcnRfZXF1YWxzKGVyciwg
dW5kZWZpbmVkLCAncGFzc2VkIGVycm9yIHNob3VsZCBiZSB1bmRlZmluZWQgYXMgaXQgd2FzJyk7
CisgICAgfQorICApOworCit9LCAnUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyOiBpZiBzdGFy
dCByZWplY3RzIHdpdGggbm8gcGFyYW1ldGVyLCBpdCBzaG91bGQgZXJyb3IgdGhlIHN0cmVhbSB3
aXRoIGFuIHVuZGVmaW5lZCAnICsKKyAgICAnZXJyb3InKTsKKworcHJvbWlzZV90ZXN0KHQgPT4g
eworCisgIGNvbnN0IHRoZUVycm9yID0geyBuYW1lOiAndW5pcXVlIHN0cmluZycgfTsKKyAgbGV0
IGNvbnRyb2xsZXI7CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFy
dChjKSB7CisgICAgICBjb250cm9sbGVyID0gYzsKKyAgICB9CisgIH0pOworCisgIGNvbnN0IHBy
b21pc2UgPSBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCB0aGVFcnJvciwgcnMuZ2V0UmVhZGVy
KCkuY2xvc2VkKTsKKworICBjb250cm9sbGVyLmVycm9yKHRoZUVycm9yKTsKKyAgcmV0dXJuIHBy
b21pc2U7CisKK30sICdFcnJvcmluZyBhIFJlYWRhYmxlU3RyZWFtIGFmdGVyIGNoZWNraW5nIGNs
b3NlZCBzaG91bGQgcmVqZWN0IFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlciBjbG9zZWQgcHJv
bWlzZScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisKKyAgY29uc3QgdGhlRXJyb3IgPSB7IG5h
bWU6ICd1bmlxdWUgc3RyaW5nJyB9OworICBsZXQgY29udHJvbGxlcjsKKyAgY29uc3QgcnMgPSBu
ZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGNvbnRyb2xsZXIgPSBj
OworICAgIH0KKyAgfSk7CisKKyAgY29udHJvbGxlci5lcnJvcih0aGVFcnJvcik7CisKKyAgLy8g
TGV0J3MgY2FsbCBnZXRSZWFkZXIgdHdpY2UgZm9yIGV4dHJhIHRlc3QgY292ZXJhZ2Ugb2YgdGhp
cyBjb2RlIHBhdGguCisgIHJzLmdldFJlYWRlcigpLnJlbGVhc2VMb2NrKCk7CisKKyAgcmV0dXJu
IHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIHRoZUVycm9yLCBycy5nZXRSZWFkZXIoKS5jbG9z
ZWQpOworCit9LCAnRXJyb3JpbmcgYSBSZWFkYWJsZVN0cmVhbSBiZWZvcmUgY2hlY2tpbmcgY2xv
c2VkIHNob3VsZCByZWplY3QgUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyIGNsb3NlZCBwcm9t
aXNlJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisKKyAgbGV0IGNvbnRyb2xsZXI7CisgIGNv
bnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjb250
cm9sbGVyID0gYzsKKyAgICB9CisgIH0pOworICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFkZXIo
KTsKKworICBjb25zdCBwcm9taXNlID0gUHJvbWlzZS5hbGwoWworICAgIHJlYWRlci5yZWFkKCku
dGhlbihyZXN1bHQgPT4geworICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0LCB7IHZh
bHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSwgJ3JlYWQoKSBzaG91bGQgZnVsZmlsbCB3aXRo
IGNsb3NlICgxKScpOworICAgIH0pLAorICAgIHJlYWRlci5yZWFkKCkudGhlbihyZXN1bHQgPT4g
eworICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0LCB7IHZhbHVlOiB1bmRlZmluZWQs
IGRvbmU6IHRydWUgfSwgJ3JlYWQoKSBzaG91bGQgZnVsZmlsbCB3aXRoIGNsb3NlICgyKScpOwor
ICAgIH0pLAorICAgIHJlYWRlci5jbG9zZWQKKyAgXSk7CisKKyAgY29udHJvbGxlci5jbG9zZSgp
OworICByZXR1cm4gcHJvbWlzZTsKKworfSwgJ1JlYWRpbmcgdHdpY2Ugb24gYSBzdHJlYW0gdGhh
dCBnZXRzIGNsb3NlZCcpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworCisgIGxldCBjb250cm9s
bGVyOworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgewor
ICAgICAgY29udHJvbGxlciA9IGM7CisgICAgfQorICB9KTsKKworICBjb250cm9sbGVyLmNsb3Nl
KCk7CisgIGNvbnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcigpOworCisgIHJldHVybiBQcm9taXNl
LmFsbChbCisgICAgcmVhZGVyLnJlYWQoKS50aGVuKHJlc3VsdCA9PiB7CisgICAgICBhc3NlcnRf
b2JqZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9LCAn
cmVhZCgpIHNob3VsZCBmdWxmaWxsIHdpdGggY2xvc2UgKDEpJyk7CisgICAgfSksCisgICAgcmVh
ZGVyLnJlYWQoKS50aGVuKHJlc3VsdCA9PiB7CisgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhy
ZXN1bHQsIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9LCAncmVhZCgpIHNob3VsZCBm
dWxmaWxsIHdpdGggY2xvc2UgKDIpJyk7CisgICAgfSksCisgICAgcmVhZGVyLmNsb3NlZAorICBd
KTsKKworfSwgJ1JlYWRpbmcgdHdpY2Ugb24gYSBjbG9zZWQgc3RyZWFtJyk7CisKK3Byb21pc2Vf
dGVzdCh0ID0+IHsKKworICBsZXQgY29udHJvbGxlcjsKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFi
bGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGNvbnRyb2xsZXIgPSBjOworICAgIH0K
KyAgfSk7CisKKyAgY29uc3QgbXlFcnJvciA9IHsgbmFtZTogJ21hc2hlZCBwb3RhdG9lcycgfTsK
KyAgY29udHJvbGxlci5lcnJvcihteUVycm9yKTsKKworICBjb25zdCByZWFkZXIgPSBycy5nZXRS
ZWFkZXIoKTsKKworICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAgIHByb21pc2VfcmVqZWN0c19l
eGFjdGx5KHQsIG15RXJyb3IsIHJlYWRlci5yZWFkKCkpLAorICAgIHByb21pc2VfcmVqZWN0c19l
eGFjdGx5KHQsIG15RXJyb3IsIHJlYWRlci5yZWFkKCkpLAorICAgIHByb21pc2VfcmVqZWN0c19l
eGFjdGx5KHQsIG15RXJyb3IsIHJlYWRlci5jbG9zZWQpCisgIF0pOworCit9LCAnUmVhZGluZyB0
d2ljZSBvbiBhbiBlcnJvcmVkIHN0cmVhbScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisKKyAg
bGV0IGNvbnRyb2xsZXI7CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBz
dGFydChjKSB7CisgICAgICBjb250cm9sbGVyID0gYzsKKyAgICB9CisgIH0pOworCisgIGNvbnN0
IG15RXJyb3IgPSB7IG5hbWU6ICdtYXNoZWQgcG90YXRvZXMnIH07CisgIGNvbnN0IHJlYWRlciA9
IHJzLmdldFJlYWRlcigpOworCisgIGNvbnN0IHByb21pc2UgPSBQcm9taXNlLmFsbChbCisgICAg
cHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgbXlFcnJvciwgcmVhZGVyLnJlYWQoKSksCisgICAg
cHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgbXlFcnJvciwgcmVhZGVyLnJlYWQoKSksCisgICAg
cHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgbXlFcnJvciwgcmVhZGVyLmNsb3NlZCkKKyAgXSk7
CisKKyAgY29udHJvbGxlci5lcnJvcihteUVycm9yKTsKKyAgcmV0dXJuIHByb21pc2U7CisKK30s
ICdSZWFkaW5nIHR3aWNlIG9uIGEgc3RyZWFtIHRoYXQgZ2V0cyBlcnJvcmVkJyk7CisKK3Rlc3Qo
KCkgPT4geworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSgpOworICBsZXQgdG9TdHJp
bmdDYWxsZWQgPSBmYWxzZTsKKyAgY29uc3QgbW9kZSA9IHsKKyAgICB0b1N0cmluZygpIHsKKyAg
ICAgIHRvU3RyaW5nQ2FsbGVkID0gdHJ1ZTsKKyAgICAgIHJldHVybiAnJzsKKyAgICB9CisgIH07
CisgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiBycy5nZXRSZWFkZXIoeyBtb2Rl
IH0pLCAnZ2V0UmVhZGVyKCkgc2hvdWxkIHRocm93Jyk7CisgIGFzc2VydF90cnVlKHRvU3RyaW5n
Q2FsbGVkLCAndG9TdHJpbmcoKSBzaG91bGQgYmUgY2FsbGVkJyk7Cit9LCAnZ2V0UmVhZGVyKCkg
c2hvdWxkIGNhbGwgVG9TdHJpbmcoKSBvbiBtb2RlJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7
CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBwdWxsKGNvbnRyb2xsZXIp
IHsKKyAgICAgIGNvbnRyb2xsZXIuY2xvc2UoKTsKKyAgICB9CisgIH0pOworCisgIGNvbnN0IHJl
YWRlciA9IHJzLmdldFJlYWRlcigpOworICByZXR1cm4gcmVhZGVyLnJlYWQoKS50aGVuKCgpID0+
IHsKKyAgICAvLyBUaGUgdGVzdCBwYXNzZXMgaWYgcmVsZWFzZUxvY2soKSBkb2VzIG5vdCB0aHJv
dy4KKyAgICByZWFkZXIucmVsZWFzZUxvY2soKTsKKyAgfSk7Cit9LCAnY29udHJvbGxlci5jbG9z
ZSgpIHNob3VsZCBjbGVhciB0aGUgbGlzdCBvZiBwZW5kaW5nIHJlYWQgcmVxdWVzdHMnKTsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2RlZmF1bHQtcmVhZGVyLmFueS53b3JrZXItZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
L3JlYWRhYmxlLXN0cmVhbXMvZGVmYXVsdC1yZWFkZXIuYW55Lndvcmtlci1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZTQ3ZTc1YWJiOTY0MDZlOTg4N2ZjYjYxMTFlOTBmZGFjZDVmYzNmZQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2RlZmF1bHQtcmVhZGVyLmFueS53b3JrZXItZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMzQgQEAKKworRkFJTCBSZWFkYWJsZVN0cmVhbURlZmF1bHRS
ZWFkZXIgY29uc3RydWN0b3Igc2hvdWxkIGdldCBhIFJlYWRhYmxlU3RyZWFtIG9iamVjdCBhcyBh
cmd1bWVudCBhc3NlcnRfdGhyb3dzX2pzOiBmdW5jdGlvbiAiKCkgPT4gbmV3IFJlYWRhYmxlU3Ry
ZWFtRGVmYXVsdFJlYWRlcigncG90YXRvJykiIHRocmV3IG9iamVjdCAiUmVmZXJlbmNlRXJyb3I6
IENhbid0IGZpbmQgdmFyaWFibGU6IFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlciIgKCJSZWZl
cmVuY2VFcnJvciIpIGV4cGVjdGVkIGluc3RhbmNlIG9mIGZ1bmN0aW9uICJmdW5jdGlvbiBUeXBl
RXJyb3IoKSB7CisgICAgW25hdGl2ZSBjb2RlXQorfSIgKCJUeXBlRXJyb3IiKQorRkFJTCBSZWFk
YWJsZVN0cmVhbURlZmF1bHRSZWFkZXIgY2xvc2VkIHNob3VsZCBhbHdheXMgcmV0dXJuIHRoZSBz
YW1lIHByb21pc2Ugb2JqZWN0IENhbid0IGZpbmQgdmFyaWFibGU6IFJlYWRhYmxlU3RyZWFtRGVm
YXVsdFJlYWRlcgorRkFJTCBDb25zdHJ1Y3RpbmcgYSBSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFk
ZXIgZGlyZWN0bHkgc2hvdWxkIGZhaWwgaWYgdGhlIHN0cmVhbSBpcyBhbHJlYWR5IGxvY2tlZCAo
dmlhIGRpcmVjdCBjb25zdHJ1Y3Rpb24pIENhbid0IGZpbmQgdmFyaWFibGU6IFJlYWRhYmxlU3Ry
ZWFtRGVmYXVsdFJlYWRlcgorRkFJTCBHZXR0aW5nIGEgUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVh
ZGVyIHZpYSBnZXRSZWFkZXIgc2hvdWxkIGZhaWwgaWYgdGhlIHN0cmVhbSBpcyBhbHJlYWR5IGxv
Y2tlZCAodmlhIGRpcmVjdCBjb25zdHJ1Y3Rpb24pIENhbid0IGZpbmQgdmFyaWFibGU6IFJlYWRh
YmxlU3RyZWFtRGVmYXVsdFJlYWRlcgorRkFJTCBDb25zdHJ1Y3RpbmcgYSBSZWFkYWJsZVN0cmVh
bURlZmF1bHRSZWFkZXIgZGlyZWN0bHkgc2hvdWxkIGZhaWwgaWYgdGhlIHN0cmVhbSBpcyBhbHJl
YWR5IGxvY2tlZCAodmlhIGdldFJlYWRlcikgYXNzZXJ0X3Rocm93c19qczogY29uc3RydWN0aW5n
IGRpcmVjdGx5IHNob3VsZCBmYWlsIGZ1bmN0aW9uICIoKSA9PiBuZXcgUmVhZGFibGVTdHJlYW1E
ZWZhdWx0UmVhZGVyKHJzKSIgdGhyZXcgb2JqZWN0ICJSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmlu
ZCB2YXJpYWJsZTogUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyIiAoIlJlZmVyZW5jZUVycm9y
IikgZXhwZWN0ZWQgaW5zdGFuY2Ugb2YgZnVuY3Rpb24gImZ1bmN0aW9uIFR5cGVFcnJvcigpIHsK
KyAgICBbbmF0aXZlIGNvZGVdCit9IiAoIlR5cGVFcnJvciIpCitQQVNTIEdldHRpbmcgYSBSZWFk
YWJsZVN0cmVhbURlZmF1bHRSZWFkZXIgdmlhIGdldFJlYWRlciBzaG91bGQgZmFpbCBpZiB0aGUg
c3RyZWFtIGlzIGFscmVhZHkgbG9ja2VkICh2aWEgZ2V0UmVhZGVyKSAKK0ZBSUwgQ29uc3RydWN0
aW5nIGEgUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyIGRpcmVjdGx5IHNob3VsZCBiZSBPSyBp
ZiB0aGUgc3RyZWFtIGlzIGNsb3NlZCBDYW4ndCBmaW5kIHZhcmlhYmxlOiBSZWFkYWJsZVN0cmVh
bURlZmF1bHRSZWFkZXIKK0ZBSUwgQ29uc3RydWN0aW5nIGEgUmVhZGFibGVTdHJlYW1EZWZhdWx0
UmVhZGVyIGRpcmVjdGx5IHNob3VsZCBiZSBPSyBpZiB0aGUgc3RyZWFtIGlzIGVycm9yZWQgQ2Fu
J3QgZmluZCB2YXJpYWJsZTogUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyCitQQVNTIFJlYWRp
bmcgZnJvbSBhIHJlYWRlciBmb3IgYW4gZW1wdHkgc3RyZWFtIHdpbGwgd2FpdCB1bnRpbCBhIGNo
dW5rIGlzIGF2YWlsYWJsZSAKK1BBU1MgY2FuY2VsKCkgb24gYSByZWFkZXIgZG9lcyBub3QgcmVs
ZWFzZSB0aGUgcmVhZGVyIAorUEFTUyBjbG9zZWQgc2hvdWxkIGJlIGZ1bGZpbGxlZCBhZnRlciBz
dHJlYW0gaXMgY2xvc2VkICguY2xvc2VkIGFjY2VzcyBiZWZvcmUgYWNxdWlyaW5nKSAKK1BBU1Mg
Y2xvc2VkIHNob3VsZCBiZSByZWplY3RlZCBhZnRlciByZWFkZXIgcmVsZWFzZXMgaXRzIGxvY2sg
KG11bHRpcGxlIHN0cmVhbSBsb2NrcykgCitQQVNTIE11bHRpcGxlIHJlYWRlcnMgY2FuIGFjY2Vz
cyB0aGUgc3RyZWFtIGluIHNlcXVlbmNlIAorUEFTUyBDYW5ub3QgdXNlIGFuIGFscmVhZHktcmVs
ZWFzZWQgcmVhZGVyIHRvIHVubG9jayBhIHN0cmVhbSBhZ2FpbiAKK1BBU1MgY2FuY2VsKCkgb24g
YSByZWxlYXNlZCByZWFkZXIgaXMgYSBuby1vcCBhbmQgZG9lcyBub3QgcGFzcyB0aHJvdWdoIAor
UEFTUyBHZXR0aW5nIGEgc2Vjb25kIHJlYWRlciBhZnRlciBlcnJvcmluZyB0aGUgc3RyZWFtIGFu
ZCByZWxlYXNpbmcgdGhlIHJlYWRlciBzaG91bGQgc3VjY2VlZCAKK1BBU1MgUmVhZGFibGVTdHJl
YW1EZWZhdWx0UmVhZGVyIGNsb3NlZCBwcm9taXNlIHNob3VsZCBiZSByZWplY3RlZCB3aXRoIHVu
ZGVmaW5lZCBpZiB0aGF0IGlzIHRoZSBlcnJvciAKK1BBU1MgUmVhZGFibGVTdHJlYW1EZWZhdWx0
UmVhZGVyOiBpZiBzdGFydCByZWplY3RzIHdpdGggbm8gcGFyYW1ldGVyLCBpdCBzaG91bGQgZXJy
b3IgdGhlIHN0cmVhbSB3aXRoIGFuIHVuZGVmaW5lZCBlcnJvciAKK1BBU1MgRXJyb3JpbmcgYSBS
ZWFkYWJsZVN0cmVhbSBhZnRlciBjaGVja2luZyBjbG9zZWQgc2hvdWxkIHJlamVjdCBSZWFkYWJs
ZVN0cmVhbURlZmF1bHRSZWFkZXIgY2xvc2VkIHByb21pc2UgCitQQVNTIEVycm9yaW5nIGEgUmVh
ZGFibGVTdHJlYW0gYmVmb3JlIGNoZWNraW5nIGNsb3NlZCBzaG91bGQgcmVqZWN0IFJlYWRhYmxl
U3RyZWFtRGVmYXVsdFJlYWRlciBjbG9zZWQgcHJvbWlzZSAKK1BBU1MgUmVhZGluZyB0d2ljZSBv
biBhIHN0cmVhbSB0aGF0IGdldHMgY2xvc2VkIAorUEFTUyBSZWFkaW5nIHR3aWNlIG9uIGEgY2xv
c2VkIHN0cmVhbSAKK1BBU1MgUmVhZGluZyB0d2ljZSBvbiBhbiBlcnJvcmVkIHN0cmVhbSAKK1BB
U1MgUmVhZGluZyB0d2ljZSBvbiBhIHN0cmVhbSB0aGF0IGdldHMgZXJyb3JlZCAKK0ZBSUwgZ2V0
UmVhZGVyKCkgc2hvdWxkIGNhbGwgVG9TdHJpbmcoKSBvbiBtb2RlIGFzc2VydF90aHJvd3NfanM6
IGdldFJlYWRlcigpIHNob3VsZCB0aHJvdyBmdW5jdGlvbiAiKCkgPT4gcnMuZ2V0UmVhZGVyKHsg
bW9kZSB9KSIgdGhyZXcgb2JqZWN0ICJSYW5nZUVycm9yOiBJbnZhbGlkIG1vZGUgaXMgc3BlY2lm
aWVkIiAoIlJhbmdlRXJyb3IiKSBleHBlY3RlZCBpbnN0YW5jZSBvZiBmdW5jdGlvbiAiZnVuY3Rp
b24gVHlwZUVycm9yKCkgeworICAgIFtuYXRpdmUgY29kZV0KK30iICgiVHlwZUVycm9yIikKK1BB
U1MgY29udHJvbGxlci5jbG9zZSgpIHNob3VsZCBjbGVhciB0aGUgbGlzdCBvZiBwZW5kaW5nIHJl
YWQgcmVxdWVzdHMgCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2RlZmF1bHQtcmVhZGVyLmFu
eS53b3JrZXIuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2RlZmF1bHQtcmVhZGVyLmFueS53b3JrZXIuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4yMzgyOTEzNTI4ZTY5M2IzYTVkNTZjNjYwYTQ1MDYwOTgwYjU0OGMzCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZGVmYXVsdC1yZWFkZXIuYW55Lndvcmtlci5o
dG1sCkBAIC0wLDAgKzEgQEAKKzwhLS0gVGhpcyBmaWxlIGlzIHJlcXVpcmVkIGZvciBXZWJLaXQg
dGVzdCBpbmZyYXN0cnVjdHVyZSB0byBydW4gdGhlIHRlbXBsYXRlZCB0ZXN0IC0tPgpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2RlZmF1bHQtcmVh
ZGVyLmRlZGljYXRlZHdvcmtlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9kZWZhdWx0LXJl
YWRlci5kZWRpY2F0ZWR3b3JrZXItZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA2MWZlMzE3MmFiZGE1OTNkZTUyODQ1MzRiMGY5YmUwNjM1OTMwMWNkLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2RlZmF1
bHQtcmVhZGVyLmRlZGljYXRlZHdvcmtlci1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAt
MSwyOSArMCwwIEBACi0KLVBBU1MgQ2FuIGdldCB0aGUgUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVh
ZGVyIGNvbnN0cnVjdG9yIGluZGlyZWN0bHkgCi1QQVNTIFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJl
YWRlciBjb25zdHJ1Y3RvciBzaG91bGQgZ2V0IGEgUmVhZGFibGVTdHJlYW0gb2JqZWN0IGFzIGFy
Z3VtZW50IAotUEFTUyBSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIgaW5zdGFuY2VzIHNob3Vs
ZCBoYXZlIHRoZSBjb3JyZWN0IGxpc3Qgb2YgcHJvcGVydGllcyAKLVBBU1MgUmVhZGFibGVTdHJl
YW1EZWZhdWx0UmVhZGVyIGNsb3NlZCBzaG91bGQgYWx3YXlzIHJldHVybiB0aGUgc2FtZSBwcm9t
aXNlIG9iamVjdCAKLVBBU1MgQ29uc3RydWN0aW5nIGEgUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVh
ZGVyIGRpcmVjdGx5IHNob3VsZCBmYWlsIGlmIHRoZSBzdHJlYW0gaXMgYWxyZWFkeSBsb2NrZWQg
KHZpYSBkaXJlY3QgY29uc3RydWN0aW9uKSAKLVBBU1MgR2V0dGluZyBhIFJlYWRhYmxlU3RyZWFt
RGVmYXVsdFJlYWRlciB2aWEgZ2V0UmVhZGVyIHNob3VsZCBmYWlsIGlmIHRoZSBzdHJlYW0gaXMg
YWxyZWFkeSBsb2NrZWQgKHZpYSBkaXJlY3QgY29uc3RydWN0aW9uKSAKLVBBU1MgQ29uc3RydWN0
aW5nIGEgUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyIGRpcmVjdGx5IHNob3VsZCBmYWlsIGlm
IHRoZSBzdHJlYW0gaXMgYWxyZWFkeSBsb2NrZWQgKHZpYSBnZXRSZWFkZXIpIAotUEFTUyBHZXR0
aW5nIGEgUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyIHZpYSBnZXRSZWFkZXIgc2hvdWxkIGZh
aWwgaWYgdGhlIHN0cmVhbSBpcyBhbHJlYWR5IGxvY2tlZCAodmlhIGdldFJlYWRlcikgCi1QQVNT
IENvbnN0cnVjdGluZyBhIFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlciBkaXJlY3RseSBzaG91
bGQgYmUgT0sgaWYgdGhlIHN0cmVhbSBpcyBjbG9zZWQgCi1QQVNTIENvbnN0cnVjdGluZyBhIFJl
YWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlciBkaXJlY3RseSBzaG91bGQgYmUgT0sgaWYgdGhlIHN0
cmVhbSBpcyBlcnJvcmVkIAotUEFTUyBSZWFkaW5nIGZyb20gYSByZWFkZXIgZm9yIGFuIGVtcHR5
IHN0cmVhbSB3aWxsIHdhaXQgdW50aWwgYSBjaHVuayBpcyBhdmFpbGFibGUgCi1QQVNTIGNhbmNl
bCgpIG9uIGEgcmVhZGVyIGRvZXMgbm90IHJlbGVhc2UgdGhlIHJlYWRlciAKLVBBU1MgY2xvc2Vk
IHNob3VsZCBiZSBmdWxmaWxsZWQgYWZ0ZXIgc3RyZWFtIGlzIGNsb3NlZCAoLmNsb3NlZCBhY2Nl
c3MgYmVmb3JlIGFjcXVpcmluZykgCi1QQVNTIGNsb3NlZCBzaG91bGQgYmUgcmVqZWN0ZWQgYWZ0
ZXIgcmVhZGVyIHJlbGVhc2VzIGl0cyBsb2NrIChtdWx0aXBsZSBzdHJlYW0gbG9ja3MpIAotUEFT
UyBNdWx0aXBsZSByZWFkZXJzIGNhbiBhY2Nlc3MgdGhlIHN0cmVhbSBpbiBzZXF1ZW5jZSAKLVBB
U1MgQ2Fubm90IHVzZSBhbiBhbHJlYWR5LXJlbGVhc2VkIHJlYWRlciB0byB1bmxvY2sgYSBzdHJl
YW0gYWdhaW4gCi1QQVNTIGNhbmNlbCgpIG9uIGEgcmVsZWFzZWQgcmVhZGVyIGlzIGEgbm8tb3Ag
YW5kIGRvZXMgbm90IHBhc3MgdGhyb3VnaCAKLVBBU1MgR2V0dGluZyBhIHNlY29uZCByZWFkZXIg
YWZ0ZXIgZXJyb3JpbmcgdGhlIHN0cmVhbSBhbmQgcmVsZWFzaW5nIHRoZSByZWFkZXIgc2hvdWxk
IHN1Y2NlZWQgCi1QQVNTIFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlciBjbG9zZWQgcHJvbWlz
ZSBzaG91bGQgYmUgcmVqZWN0ZWQgd2l0aCB1bmRlZmluZWQgaWYgdGhhdCBpcyB0aGUgZXJyb3Ig
Ci1QQVNTIFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlcjogaWYgc3RhcnQgcmVqZWN0cyB3aXRo
IG5vIHBhcmFtZXRlciwgaXQgc2hvdWxkIGVycm9yIHRoZSBzdHJlYW0gd2l0aCBhbiB1bmRlZmlu
ZWQgZXJyb3IgCi1QQVNTIEVycm9yaW5nIGEgUmVhZGFibGVTdHJlYW0gYWZ0ZXIgY2hlY2tpbmcg
Y2xvc2VkIHNob3VsZCByZWplY3QgUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyIGNsb3NlZCBw
cm9taXNlIAotUEFTUyBFcnJvcmluZyBhIFJlYWRhYmxlU3RyZWFtIGJlZm9yZSBjaGVja2luZyBj
bG9zZWQgc2hvdWxkIHJlamVjdCBSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIgY2xvc2VkIHBy
b21pc2UgCi1QQVNTIFJlYWRpbmcgdHdpY2Ugb24gYSBzdHJlYW0gdGhhdCBnZXRzIGNsb3NlZCAK
LVBBU1MgUmVhZGluZyB0d2ljZSBvbiBhIGNsb3NlZCBzdHJlYW0gCi1QQVNTIFJlYWRpbmcgdHdp
Y2Ugb24gYW4gZXJyb3JlZCBzdHJlYW0gCi1QQVNTIFJlYWRpbmcgdHdpY2Ugb24gYSBzdHJlYW0g
dGhhdCBnZXRzIGVycm9yZWQgCi1QQVNTIGdldFJlYWRlcigpIHNob3VsZCBjYWxsIFRvU3RyaW5n
KCkgb24gbW9kZSAKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZGVmYXVsdC1yZWFkZXIuZGVk
aWNhdGVkd29ya2VyLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9kZWZhdWx0LXJlYWRlci5kZWRpY2F0ZWR3
b3JrZXIuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGEwYjJkMDUxMWI2ZjJk
Y2M0MWQxMTI4MDY1NGRhNzc2NTFjYzM1Ny4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9kZWZhdWx0LXJlYWRlci5kZWRpY2F0ZWR3b3Jr
ZXIuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgot
PG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHRpdGxlPmRlZmF1bHQtcmVhZGVyLmpzIGRlZGljYXRl
ZCB3b3JrZXIgd3JhcHBlciBmaWxlPC90aXRsZT4KLQotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMv
dGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhh
cm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotCi08c2NyaXB0PgotJ3VzZSBzdHJpY3QnOwotZmV0
Y2hfdGVzdHNfZnJvbV93b3JrZXIobmV3IFdvcmtlcignZGVmYXVsdC1yZWFkZXIuanMnKSk7Ci08
L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2RlZmF1bHQtcmVhZGVyLmh0bWwgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFi
bGUtc3RyZWFtcy9kZWZhdWx0LXJlYWRlci5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDA5MmM5YWU2NThkZDgwMjVlMjNkMDUyODViMmRiZDlmOGY0OWQzLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2RlZmF1bHQt
cmVhZGVyLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi08IURPQ1RZUEUgaHRt
bD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTx0aXRsZT5kZWZhdWx0LXJlYWRlci5qcyBicm93
c2VyIGNvbnRleHQgd3JhcHBlciBmaWxlPC90aXRsZT4KLQotPHNjcmlwdCBzcmM9Ii9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVz
dGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotCi08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2Vz
L3JzLXV0aWxzLmpzIj48L3NjcmlwdD4KLQotPHNjcmlwdCBzcmM9ImRlZmF1bHQtcmVhZGVyLmpz
Ij48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2RlZmF1bHQtcmVhZGVyLmpzIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRh
YmxlLXN0cmVhbXMvZGVmYXVsdC1yZWFkZXIuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDliNjQ1ZTI0NzI1ODJmMTc1OTgxMzdiMjYyY2IwMjk0OGExNDA2NjEuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZGVmYXVsdC1y
ZWFkZXIuanMKKysrIC9kZXYvbnVsbApAQCAtMSw1MDEgKzAsMCBAQAotJ3VzZSBzdHJpY3QnOwot
Ci1pZiAoc2VsZi5pbXBvcnRTY3JpcHRzKSB7Ci0gIHNlbGYuaW1wb3J0U2NyaXB0cygnLi4vcmVz
b3VyY2VzL3JzLXV0aWxzLmpzJyk7Ci0gIHNlbGYuaW1wb3J0U2NyaXB0cygnL3Jlc291cmNlcy90
ZXN0aGFybmVzcy5qcycpOwotfQotCi1sZXQgUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyOwot
Ci10ZXN0KCgpID0+IHsKLQotICAvLyBJdCdzIG5vdCBleHBvc2VkIGdsb2JhbGx5LCBidXQgd2Ug
dGVzdCBhIGZldyBvZiBpdHMgcHJvcGVydGllcyBoZXJlLgotICBSZWFkYWJsZVN0cmVhbURlZmF1
bHRSZWFkZXIgPSAobmV3IFJlYWRhYmxlU3RyZWFtKCkpLmdldFJlYWRlcigpLmNvbnN0cnVjdG9y
OwotCi19LCAnQ2FuIGdldCB0aGUgUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyIGNvbnN0cnVj
dG9yIGluZGlyZWN0bHknKTsKLQotdGVzdCgoKSA9PiB7Ci0KLSAgYXNzZXJ0X3Rocm93cyhuZXcg
VHlwZUVycm9yKCksICgpID0+IG5ldyBSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIoJ3BvdGF0
bycpKTsKLSAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IG5ldyBSZWFkYWJs
ZVN0cmVhbURlZmF1bHRSZWFkZXIoe30pKTsKLSAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9y
KCksICgpID0+IG5ldyBSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIoKSk7Ci0KLX0sICdSZWFk
YWJsZVN0cmVhbURlZmF1bHRSZWFkZXIgY29uc3RydWN0b3Igc2hvdWxkIGdldCBhIFJlYWRhYmxl
U3RyZWFtIG9iamVjdCBhcyBhcmd1bWVudCcpOwotCi10ZXN0KCgpID0+IHsKLQotICBjb25zdCBt
ZXRob2RzID0gWydjYW5jZWwnLCAnY29uc3RydWN0b3InLCAncmVhZCcsICdyZWxlYXNlTG9jaydd
OwotICBjb25zdCBwcm9wZXJ0aWVzID0gbWV0aG9kcy5jb25jYXQoWydjbG9zZWQnXSkuc29ydCgp
OwotCi0gIGNvbnN0IHJzUmVhZGVyID0gbmV3IFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlcihu
ZXcgUmVhZGFibGVTdHJlYW0oKSk7Ci0gIGNvbnN0IHByb3RvID0gT2JqZWN0LmdldFByb3RvdHlw
ZU9mKHJzUmVhZGVyKTsKLQotICBhc3NlcnRfYXJyYXlfZXF1YWxzKE9iamVjdC5nZXRPd25Qcm9w
ZXJ0eU5hbWVzKHByb3RvKS5zb3J0KCksIHByb3BlcnRpZXMpOwotCi0gIGZvciAoY29uc3QgbSBv
ZiBtZXRob2RzKSB7Ci0gICAgY29uc3QgcHJvcERlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKHByb3RvLCBtKTsKLSAgICBhc3NlcnRfZXF1YWxzKHByb3BEZXNjLmVudW1lcmFi
bGUsIGZhbHNlLCAnbWV0aG9kIHNob3VsZCBiZSBub24tZW51bWVyYWJsZScpOwotICAgIGFzc2Vy
dF9lcXVhbHMocHJvcERlc2MuY29uZmlndXJhYmxlLCB0cnVlLCAnbWV0aG9kIHNob3VsZCBiZSBj
b25maWd1cmFibGUnKTsKLSAgICBhc3NlcnRfZXF1YWxzKHByb3BEZXNjLndyaXRhYmxlLCB0cnVl
LCAnbWV0aG9kIHNob3VsZCBiZSB3cml0YWJsZScpOwotICAgIGFzc2VydF9lcXVhbHModHlwZW9m
IHJzUmVhZGVyW21dLCAnZnVuY3Rpb24nLCAnc2hvdWxkIGhhdmUgYmUgYSBtZXRob2QnKTsKLSAg
ICBjb25zdCBleHBlY3RlZE5hbWUgPSBtID09PSAnY29uc3RydWN0b3InID8gJ1JlYWRhYmxlU3Ry
ZWFtRGVmYXVsdFJlYWRlcicgOiBtOwotICAgIGFzc2VydF9lcXVhbHMocnNSZWFkZXJbbV0ubmFt
ZSwgZXhwZWN0ZWROYW1lLCAnbWV0aG9kIHNob3VsZCBoYXZlIHRoZSBjb3JyZWN0IG5hbWUnKTsK
LSAgfQotCi0gIGNvbnN0IGNsb3NlZFByb3BEZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVz
Y3JpcHRvcihwcm90bywgJ2Nsb3NlZCcpOwotICBhc3NlcnRfZXF1YWxzKGNsb3NlZFByb3BEZXNj
LmVudW1lcmFibGUsIGZhbHNlLCAnY2xvc2VkIHNob3VsZCBiZSBub24tZW51bWVyYWJsZScpOwot
ICBhc3NlcnRfZXF1YWxzKGNsb3NlZFByb3BEZXNjLmNvbmZpZ3VyYWJsZSwgdHJ1ZSwgJ2Nsb3Nl
ZCBzaG91bGQgYmUgY29uZmlndXJhYmxlJyk7Ci0gIGFzc2VydF9ub3RfZXF1YWxzKGNsb3NlZFBy
b3BEZXNjLmdldCwgdW5kZWZpbmVkLCAnY2xvc2VkIHNob3VsZCBoYXZlIGEgZ2V0dGVyJyk7Ci0g
IGFzc2VydF9lcXVhbHMoY2xvc2VkUHJvcERlc2Muc2V0LCB1bmRlZmluZWQsICdjbG9zZWQgc2hv
dWxkIG5vdCBoYXZlIGEgc2V0dGVyJyk7Ci0KLSAgYXNzZXJ0X2VxdWFscyhyc1JlYWRlci5jYW5j
ZWwubGVuZ3RoLCAxLCAnY2FuY2VsIGhhcyAxIHBhcmFtZXRlcicpOwotICBhc3NlcnRfbm90X2Vx
dWFscyhyc1JlYWRlci5jbG9zZWQsIHVuZGVmaW5lZCwgJ2hhcyBhIG5vbi11bmRlZmluZWQgY2xv
c2VkIHByb3BlcnR5Jyk7Ci0gIGFzc2VydF9lcXVhbHModHlwZW9mIHJzUmVhZGVyLmNsb3NlZC50
aGVuLCAnZnVuY3Rpb24nLCAnY2xvc2VkIHByb3BlcnR5IGlzIHRoZW5hYmxlJyk7Ci0gIGFzc2Vy
dF9lcXVhbHModHlwZW9mIHJzUmVhZGVyLmNvbnN0cnVjdG9yLCAnZnVuY3Rpb24nLCAnaGFzIGEg
Y29uc3RydWN0b3IgbWV0aG9kJyk7Ci0gIGFzc2VydF9lcXVhbHMocnNSZWFkZXIuY29uc3RydWN0
b3IubGVuZ3RoLCAxLCAnY29uc3RydWN0b3IgaGFzIDEgcGFyYW1ldGVyJyk7Ci0gIGFzc2VydF9l
cXVhbHModHlwZW9mIHJzUmVhZGVyLnJlYWQsICdmdW5jdGlvbicsICdoYXMgYSBnZXRSZWFkZXIg
bWV0aG9kJyk7Ci0gIGFzc2VydF9lcXVhbHMocnNSZWFkZXIucmVhZC5sZW5ndGgsIDAsICdyZWFk
IGhhcyBubyBwYXJhbWV0ZXJzJyk7Ci0gIGFzc2VydF9lcXVhbHModHlwZW9mIHJzUmVhZGVyLnJl
bGVhc2VMb2NrLCAnZnVuY3Rpb24nLCAnaGFzIGEgcmVsZWFzZUxvY2sgbWV0aG9kJyk7Ci0gIGFz
c2VydF9lcXVhbHMocnNSZWFkZXIucmVsZWFzZUxvY2subGVuZ3RoLCAwLCAncmVsZWFzZUxvY2sg
aGFzIG5vIHBhcmFtZXRlcnMnKTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlciBp
bnN0YW5jZXMgc2hvdWxkIGhhdmUgdGhlIGNvcnJlY3QgbGlzdCBvZiBwcm9wZXJ0aWVzJyk7Ci0K
LXRlc3QoKCkgPT4gewotCi0gIGNvbnN0IHJzUmVhZGVyID0gbmV3IFJlYWRhYmxlU3RyZWFtRGVm
YXVsdFJlYWRlcihuZXcgUmVhZGFibGVTdHJlYW0oKSk7Ci0gIGFzc2VydF9lcXVhbHMocnNSZWFk
ZXIuY2xvc2VkLCByc1JlYWRlci5jbG9zZWQsICdjbG9zZWQgc2hvdWxkIHJldHVybiB0aGUgc2Ft
ZSBwcm9taXNlJyk7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIgY2xvc2VkIHNo
b3VsZCBhbHdheXMgcmV0dXJuIHRoZSBzYW1lIHByb21pc2Ugb2JqZWN0Jyk7Ci0KLXRlc3QoKCkg
PT4gewotCi0gIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKCk7Ci0gIG5ldyBSZWFkYWJs
ZVN0cmVhbURlZmF1bHRSZWFkZXIocnMpOyAvLyBDb25zdHJ1Y3RpbmcgZGlyZWN0bHkgdGhlIGZp
cnN0IHRpbWUgc2hvdWxkIGJlIGZpbmUuCi0gIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigp
LCAoKSA9PiBuZXcgUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyKHJzKSwKLSAgICAgICAgICAg
ICAgICAnY29uc3RydWN0aW5nIGRpcmVjdGx5IHRoZSBzZWNvbmQgdGltZSBzaG91bGQgZmFpbCcp
OwotCi19LCAnQ29uc3RydWN0aW5nIGEgUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyIGRpcmVj
dGx5IHNob3VsZCBmYWlsIGlmIHRoZSBzdHJlYW0gaXMgYWxyZWFkeSBsb2NrZWQgKHZpYSBkaXJl
Y3QgJyArCi0gICAnY29uc3RydWN0aW9uKScpOwotCi10ZXN0KCgpID0+IHsKLQotICBjb25zdCBy
cyA9IG5ldyBSZWFkYWJsZVN0cmVhbSgpOwotICBuZXcgUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVh
ZGVyKHJzKTsgLy8gQ29uc3RydWN0aW5nIGRpcmVjdGx5IHNob3VsZCBiZSBmaW5lLgotICBhc3Nl
cnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gcnMuZ2V0UmVhZGVyKCksICdnZXRSZWFk
ZXIoKSBzaG91bGQgZmFpbCcpOwotCi19LCAnR2V0dGluZyBhIFJlYWRhYmxlU3RyZWFtRGVmYXVs
dFJlYWRlciB2aWEgZ2V0UmVhZGVyIHNob3VsZCBmYWlsIGlmIHRoZSBzdHJlYW0gaXMgYWxyZWFk
eSBsb2NrZWQgKHZpYSBkaXJlY3QgJyArCi0gICAnY29uc3RydWN0aW9uKScpOwotCi10ZXN0KCgp
ID0+IHsKLQotICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSgpOwotICBycy5nZXRSZWFk
ZXIoKTsgLy8gZ2V0UmVhZGVyKCkgc2hvdWxkIGJlIGZpbmUuCi0gIGFzc2VydF90aHJvd3MobmV3
IFR5cGVFcnJvcigpLCAoKSA9PiBuZXcgUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyKHJzKSwg
J2NvbnN0cnVjdGluZyBkaXJlY3RseSBzaG91bGQgZmFpbCcpOwotCi19LCAnQ29uc3RydWN0aW5n
IGEgUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyIGRpcmVjdGx5IHNob3VsZCBmYWlsIGlmIHRo
ZSBzdHJlYW0gaXMgYWxyZWFkeSBsb2NrZWQgKHZpYSBnZXRSZWFkZXIpJyk7Ci0KLXRlc3QoKCkg
PT4gewotCi0gIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKCk7Ci0gIHJzLmdldFJlYWRl
cigpOyAvLyBnZXRSZWFkZXIoKSBzaG91bGQgYmUgZmluZS4KLSAgYXNzZXJ0X3Rocm93cyhuZXcg
VHlwZUVycm9yKCksICgpID0+IHJzLmdldFJlYWRlcigpLCAnZ2V0UmVhZGVyKCkgc2hvdWxkIGZh
aWwnKTsKLQotfSwgJ0dldHRpbmcgYSBSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIgdmlhIGdl
dFJlYWRlciBzaG91bGQgZmFpbCBpZiB0aGUgc3RyZWFtIGlzIGFscmVhZHkgbG9ja2VkICh2aWEg
Z2V0UmVhZGVyKScpOwotCi10ZXN0KCgpID0+IHsKLQotICBjb25zdCBycyA9IG5ldyBSZWFkYWJs
ZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgYy5jbG9zZSgpOwotICAgIH0KLSAgfSk7
Ci0KLSAgbmV3IFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlcihycyk7IC8vIENvbnN0cnVjdGlu
ZyBkaXJlY3RseSBzaG91bGQgbm90IHRocm93LgotCi19LCAnQ29uc3RydWN0aW5nIGEgUmVhZGFi
bGVTdHJlYW1EZWZhdWx0UmVhZGVyIGRpcmVjdGx5IHNob3VsZCBiZSBPSyBpZiB0aGUgc3RyZWFt
IGlzIGNsb3NlZCcpOwotCi10ZXN0KCgpID0+IHsKLQotICBjb25zdCB0aGVFcnJvciA9IG5ldyBF
cnJvcignZG9uXCd0IHNheSBpIGRpZG5cJ3Qgd2FybiB5YScpOwotICBjb25zdCBycyA9IG5ldyBS
ZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgYy5lcnJvcih0aGVFcnJvcik7
Ci0gICAgfQotICB9KTsKLQotICBuZXcgUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyKHJzKTsg
Ly8gQ29uc3RydWN0aW5nIGRpcmVjdGx5IHNob3VsZCBub3QgdGhyb3cuCi0KLX0sICdDb25zdHJ1
Y3RpbmcgYSBSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIgZGlyZWN0bHkgc2hvdWxkIGJlIE9L
IGlmIHRoZSBzdHJlYW0gaXMgZXJyb3JlZCcpOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotCi0g
IGxldCBjb250cm9sbGVyOwotICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAg
c3RhcnQoYykgewotICAgICAgY29udHJvbGxlciA9IGM7Ci0gICAgfQotICB9KTsKLSAgY29uc3Qg
cmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7Ci0KLSAgY29uc3QgcHJvbWlzZSA9IHJlYWRlci5yZWFk
KCkudGhlbihyZXN1bHQgPT4gewotICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdCwgeyB2
YWx1ZTogJ2EnLCBkb25lOiBmYWxzZSB9LCAncmVhZCgpIHNob3VsZCBmdWxmaWxsIHdpdGggdGhl
IGVucXVldWVkIGNodW5rJyk7Ci0gIH0pOwotCi0gIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYScpOwot
ICByZXR1cm4gcHJvbWlzZTsKLQotfSwgJ1JlYWRpbmcgZnJvbSBhIHJlYWRlciBmb3IgYW4gZW1w
dHkgc3RyZWFtIHdpbGwgd2FpdCB1bnRpbCBhIGNodW5rIGlzIGF2YWlsYWJsZScpOwotCi1wcm9t
aXNlX3Rlc3QoKCkgPT4gewotCi0gIGxldCBjYW5jZWxDYWxsZWQgPSBmYWxzZTsKLSAgY29uc3Qg
cGFzc2VkUmVhc29uID0gbmV3IEVycm9yKCdpdCB3YXNuXCd0IHRoZSByaWdodCB0aW1lLCBzb3Jy
eScpOwotICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgY2FuY2VsKHJlYXNv
bikgewotICAgICAgYXNzZXJ0X3RydWUocnMubG9ja2VkLCAndGhlIHN0cmVhbSBzaG91bGQgc3Rp
bGwgYmUgbG9ja2VkJyk7Ci0gICAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkg
PT4gcnMuZ2V0UmVhZGVyKCksICdzaG91bGQgbm90IGJlIGFibGUgdG8gZ2V0IGFub3RoZXIgcmVh
ZGVyJyk7Ci0gICAgICBhc3NlcnRfZXF1YWxzKHJlYXNvbiwgcGFzc2VkUmVhc29uLCAndGhlIGNh
bmNlbGxhdGlvbiByZWFzb24gaXMgcGFzc2VkIHRocm91Z2ggdG8gdGhlIHVuZGVybHlpbmcgc291
cmNlJyk7Ci0gICAgICBjYW5jZWxDYWxsZWQgPSB0cnVlOwotICAgIH0KLSAgfSk7Ci0KLSAgY29u
c3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7Ci0gIHJldHVybiByZWFkZXIuY2FuY2VsKHBhc3Nl
ZFJlYXNvbikudGhlbigoKSA9PiBhc3NlcnRfdHJ1ZShjYW5jZWxDYWxsZWQpKTsKLQotfSwgJ2Nh
bmNlbCgpIG9uIGEgcmVhZGVyIGRvZXMgbm90IHJlbGVhc2UgdGhlIHJlYWRlcicpOwotCi1wcm9t
aXNlX3Rlc3QoKCkgPT4gewotCi0gIGxldCBjb250cm9sbGVyOwotICBjb25zdCBycyA9IG5ldyBS
ZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgY29udHJvbGxlciA9IGM7Ci0g
ICAgfQotICB9KTsKLQotICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKLSAgY29uc3Qg
cHJvbWlzZSA9IHJlYWRlci5jbG9zZWQ7Ci0KLSAgY29udHJvbGxlci5jbG9zZSgpOwotICByZXR1
cm4gcHJvbWlzZTsKLQotfSwgJ2Nsb3NlZCBzaG91bGQgYmUgZnVsZmlsbGVkIGFmdGVyIHN0cmVh
bSBpcyBjbG9zZWQgKC5jbG9zZWQgYWNjZXNzIGJlZm9yZSBhY3F1aXJpbmcpJyk7Ci0KLXByb21p
c2VfdGVzdCh0ID0+IHsKLQotICBsZXQgY29udHJvbGxlcjsKLSAgY29uc3QgcnMgPSBuZXcgUmVh
ZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGNvbnRyb2xsZXIgPSBjOwotICAg
IH0KLSAgfSk7Ci0KLSAgY29uc3QgcmVhZGVyMSA9IHJzLmdldFJlYWRlcigpOwotCi0gIHJlYWRl
cjEucmVsZWFzZUxvY2soKTsKLQotICBjb25zdCByZWFkZXIyID0gcnMuZ2V0UmVhZGVyKCk7Ci0g
IGNvbnRyb2xsZXIuY2xvc2UoKTsKLQotICByZXR1cm4gUHJvbWlzZS5hbGwoWwotICAgIHByb21p
c2VfcmVqZWN0cyh0LCBuZXcgVHlwZUVycm9yKCksIHJlYWRlcjEuY2xvc2VkKSwKLSAgICByZWFk
ZXIyLmNsb3NlZAotICBdKTsKLQotfSwgJ2Nsb3NlZCBzaG91bGQgYmUgcmVqZWN0ZWQgYWZ0ZXIg
cmVhZGVyIHJlbGVhc2VzIGl0cyBsb2NrIChtdWx0aXBsZSBzdHJlYW0gbG9ja3MpJyk7Ci0KLXBy
b21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewot
ICAgIHN0YXJ0KGMpIHsKLSAgICAgIGMuZW5xdWV1ZSgnYScpOwotICAgICAgYy5lbnF1ZXVlKCdi
Jyk7Ci0gICAgICBjLmNsb3NlKCk7Ci0gICAgfQotICB9KTsKLQotICBjb25zdCByZWFkZXIxID0g
cnMuZ2V0UmVhZGVyKCk7Ci0gIGNvbnN0IHByb21pc2UxID0gcmVhZGVyMS5yZWFkKCkudGhlbihy
ID0+IHsKLSAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyLCB7IHZhbHVlOiAnYScsIGRvbmU6IGZh
bHNlIH0sICdyZWFkaW5nIHRoZSBmaXJzdCBjaHVuayBmcm9tIHJlYWRlcjEgd29ya3MnKTsKLSAg
fSk7Ci0gIHJlYWRlcjEucmVsZWFzZUxvY2soKTsKLQotICBjb25zdCByZWFkZXIyID0gcnMuZ2V0
UmVhZGVyKCk7Ci0gIGNvbnN0IHByb21pc2UyID0gcmVhZGVyMi5yZWFkKCkudGhlbihyID0+IHsK
LSAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyLCB7IHZhbHVlOiAnYicsIGRvbmU6IGZhbHNlIH0s
ICdyZWFkaW5nIHRoZSBzZWNvbmQgY2h1bmsgZnJvbSByZWFkZXIyIHdvcmtzJyk7Ci0gIH0pOwot
ICByZWFkZXIyLnJlbGVhc2VMb2NrKCk7Ci0KLSAgcmV0dXJuIFByb21pc2UuYWxsKFtwcm9taXNl
MSwgcHJvbWlzZTJdKTsKLQotfSwgJ011bHRpcGxlIHJlYWRlcnMgY2FuIGFjY2VzcyB0aGUgc3Ry
ZWFtIGluIHNlcXVlbmNlJyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0gIGNvbnN0IHJzID0g
bmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0gICAgICBjLmVucXVldWUoJ2En
KTsKLSAgICB9Ci0gIH0pOwotCi0gIGNvbnN0IHJlYWRlcjEgPSBycy5nZXRSZWFkZXIoKTsKLSAg
cmVhZGVyMS5yZWxlYXNlTG9jaygpOwotCi0gIGNvbnN0IHJlYWRlcjIgPSBycy5nZXRSZWFkZXIo
KTsKLQotICAvLyBTaG91bGQgYmUgYSBuby1vcAotICByZWFkZXIxLnJlbGVhc2VMb2NrKCk7Ci0K
LSAgcmV0dXJuIHJlYWRlcjIucmVhZCgpLnRoZW4ocmVzdWx0ID0+IHsKLSAgICBhc3NlcnRfb2Jq
ZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6ICdhJywgZG9uZTogZmFsc2UgfSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAncmVhZCgpIHNob3VsZCBzdGlsbCB3b3JrIG9uIHJlYWRlcjIgZXZl
biBhZnRlciByZWFkZXIxIGlzIHJlbGVhc2VkJyk7Ci0gIH0pOwotCi19LCAnQ2Fubm90IHVzZSBh
biBhbHJlYWR5LXJlbGVhc2VkIHJlYWRlciB0byB1bmxvY2sgYSBzdHJlYW0gYWdhaW4nKTsKLQot
cHJvbWlzZV90ZXN0KHQgPT4gewotCi0gIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsK
LSAgICBzdGFydChjKSB7Ci0gICAgICBjLmVucXVldWUoJ2EnKTsKLSAgICB9LAotICAgIGNhbmNl
bCgpIHsKLSAgICAgIGFzc2VydF91bnJlYWNoZWQoJ3VuZGVybHlpbmcgc291cmNlIGNhbmNlbCBz
aG91bGQgbm90IGJlIGNhbGxlZCcpOwotICAgIH0KLSAgfSk7Ci0KLSAgY29uc3QgcmVhZGVyID0g
cnMuZ2V0UmVhZGVyKCk7Ci0gIHJlYWRlci5yZWxlYXNlTG9jaygpOwotICBjb25zdCBjYW5jZWxQ
cm9taXNlID0gcmVhZGVyLmNhbmNlbCgpOwotCi0gIGNvbnN0IHJlYWRlcjIgPSBycy5nZXRSZWFk
ZXIoKTsKLSAgY29uc3QgcmVhZFByb21pc2UgPSByZWFkZXIyLnJlYWQoKS50aGVuKHIgPT4gewot
ICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHIsIHsgdmFsdWU6ICdhJywgZG9uZTogZmFsc2UgfSwg
J2EgbmV3IHJlYWRlciBzaG91bGQgYmUgYWJsZSB0byByZWFkIGEgY2h1bmsnKTsKLSAgfSk7Ci0K
LSAgcmV0dXJuIFByb21pc2UuYWxsKFsKLSAgICBwcm9taXNlX3JlamVjdHModCwgbmV3IFR5cGVF
cnJvcigpLCBjYW5jZWxQcm9taXNlKSwKLSAgICByZWFkUHJvbWlzZQotICBdKTsKLQotfSwgJ2Nh
bmNlbCgpIG9uIGEgcmVsZWFzZWQgcmVhZGVyIGlzIGEgbm8tb3AgYW5kIGRvZXMgbm90IHBhc3Mg
dGhyb3VnaCcpOwotCi1wcm9taXNlX3Rlc3QodCA9PiB7Ci0KLSAgY29uc3QgcHJvbWlzZUFzc2Vy
dHMgPSBbXTsKLQotICBsZXQgY29udHJvbGxlcjsKLSAgY29uc3QgdGhlRXJyb3IgPSB7IG5hbWU6
ICd1bmlxdWUgZXJyb3InIH07Ci0gIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAg
ICBzdGFydChjKSB7Ci0gICAgICBjb250cm9sbGVyID0gYzsKLSAgICB9Ci0gIH0pOwotCi0gIGNv
bnN0IHJlYWRlcjEgPSBycy5nZXRSZWFkZXIoKTsKLQotICBwcm9taXNlQXNzZXJ0cy5wdXNoKAot
ICAgIHByb21pc2VfcmVqZWN0cyh0LCB0aGVFcnJvciwgcmVhZGVyMS5jbG9zZWQpLAotICAgIHBy
b21pc2VfcmVqZWN0cyh0LCB0aGVFcnJvciwgcmVhZGVyMS5yZWFkKCkpCi0gICk7Ci0KLSAgYXNz
ZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IHJzLmdldFJlYWRlcigpLCAndHJ5aW5n
IHRvIGdldCBhbm90aGVyIHJlYWRlciBiZWZvcmUgZXJyb3Jpbmcgc2hvdWxkIHRocm93Jyk7Ci0K
LSAgY29udHJvbGxlci5lcnJvcih0aGVFcnJvcik7Ci0KLSAgcmVhZGVyMS5yZWxlYXNlTG9jaygp
OwotCi0gIGNvbnN0IHJlYWRlcjIgPSBycy5nZXRSZWFkZXIoKTsKLQotICBwcm9taXNlQXNzZXJ0
cy5wdXNoKAotICAgIHByb21pc2VfcmVqZWN0cyh0LCB0aGVFcnJvciwgcmVhZGVyMi5jbG9zZWQp
LAotICAgIHByb21pc2VfcmVqZWN0cyh0LCB0aGVFcnJvciwgcmVhZGVyMi5yZWFkKCkpCi0gICk7
Ci0KLSAgcmV0dXJuIFByb21pc2UuYWxsKHByb21pc2VBc3NlcnRzKTsKLQotfSwgJ0dldHRpbmcg
YSBzZWNvbmQgcmVhZGVyIGFmdGVyIGVycm9yaW5nIHRoZSBzdHJlYW0gYW5kIHJlbGVhc2luZyB0
aGUgcmVhZGVyIHNob3VsZCBzdWNjZWVkJyk7Ci0KLXByb21pc2VfdGVzdCh0ID0+IHsKLQotICBs
ZXQgY29udHJvbGxlcjsKLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0
YXJ0KGMpIHsKLSAgICAgIGNvbnRyb2xsZXIgPSBjOwotICAgIH0KLSAgfSk7Ci0KLSAgY29uc3Qg
cHJvbWlzZSA9IHJzLmdldFJlYWRlcigpLmNsb3NlZC50aGVuKAotICAgIHQudW5yZWFjaGVkX2Z1
bmMoJ2Nsb3NlZCBwcm9taXNlIHNob3VsZCBub3QgYmUgZnVsZmlsbGVkIHdoZW4gc3RyZWFtIGlz
IGVycm9yZWQnKSwKLSAgICBlcnIgPT4gewotICAgICAgYXNzZXJ0X2VxdWFscyhlcnIsIHVuZGVm
aW5lZCwgJ3Bhc3NlZCBlcnJvciBzaG91bGQgYmUgdW5kZWZpbmVkIGFzIGl0IHdhcycpOwotICAg
IH0KLSAgKTsKLQotICBjb250cm9sbGVyLmVycm9yKCk7Ci0gIHJldHVybiBwcm9taXNlOwotCi19
LCAnUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyIGNsb3NlZCBwcm9taXNlIHNob3VsZCBiZSBy
ZWplY3RlZCB3aXRoIHVuZGVmaW5lZCBpZiB0aGF0IGlzIHRoZSBlcnJvcicpOwotCi0KLXByb21p
c2VfdGVzdCh0ID0+IHsKLQotICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAg
c3RhcnQoKSB7Ci0gICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoKTsKLSAgICB9Ci0gIH0pOwot
Ci0gIHJldHVybiBycy5nZXRSZWFkZXIoKS5yZWFkKCkudGhlbigKLSAgICB0LnVucmVhY2hlZF9m
dW5jKCdyZWFkIHByb21pc2Ugc2hvdWxkIG5vdCBiZSBmdWxmaWxsZWQgd2hlbiBzdHJlYW0gaXMg
ZXJyb3JlZCcpLAotICAgIGVyciA9PiB7Ci0gICAgICBhc3NlcnRfZXF1YWxzKGVyciwgdW5kZWZp
bmVkLCAncGFzc2VkIGVycm9yIHNob3VsZCBiZSB1bmRlZmluZWQgYXMgaXQgd2FzJyk7Ci0gICAg
fQotICApOwotCi19LCAnUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyOiBpZiBzdGFydCByZWpl
Y3RzIHdpdGggbm8gcGFyYW1ldGVyLCBpdCBzaG91bGQgZXJyb3IgdGhlIHN0cmVhbSB3aXRoIGFu
IHVuZGVmaW5lZCAnICsKLSAgICAnZXJyb3InKTsKLQotcHJvbWlzZV90ZXN0KHQgPT4gewotCi0g
IGNvbnN0IHRoZUVycm9yID0geyBuYW1lOiAndW5pcXVlIHN0cmluZycgfTsKLSAgbGV0IGNvbnRy
b2xsZXI7Ci0gIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7
Ci0gICAgICBjb250cm9sbGVyID0gYzsKLSAgICB9Ci0gIH0pOwotCi0gIGNvbnN0IHByb21pc2Ug
PSBwcm9taXNlX3JlamVjdHModCwgdGhlRXJyb3IsIHJzLmdldFJlYWRlcigpLmNsb3NlZCk7Ci0K
LSAgY29udHJvbGxlci5lcnJvcih0aGVFcnJvcik7Ci0gIHJldHVybiBwcm9taXNlOwotCi19LCAn
RXJyb3JpbmcgYSBSZWFkYWJsZVN0cmVhbSBhZnRlciBjaGVja2luZyBjbG9zZWQgc2hvdWxkIHJl
amVjdCBSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIgY2xvc2VkIHByb21pc2UnKTsKLQotcHJv
bWlzZV90ZXN0KHQgPT4gewotCi0gIGNvbnN0IHRoZUVycm9yID0geyBuYW1lOiAndW5pcXVlIHN0
cmluZycgfTsKLSAgbGV0IGNvbnRyb2xsZXI7Ci0gIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3Ry
ZWFtKHsKLSAgICBzdGFydChjKSB7Ci0gICAgICBjb250cm9sbGVyID0gYzsKLSAgICB9Ci0gIH0p
OwotCi0gIGNvbnRyb2xsZXIuZXJyb3IodGhlRXJyb3IpOwotCi0gIC8vIExldCdzIGNhbGwgZ2V0
UmVhZGVyIHR3aWNlIGZvciBleHRyYSB0ZXN0IGNvdmVyYWdlIG9mIHRoaXMgY29kZSBwYXRoLgot
ICBycy5nZXRSZWFkZXIoKS5yZWxlYXNlTG9jaygpOwotCi0gIHJldHVybiBwcm9taXNlX3JlamVj
dHModCwgdGhlRXJyb3IsIHJzLmdldFJlYWRlcigpLmNsb3NlZCk7Ci0KLX0sICdFcnJvcmluZyBh
IFJlYWRhYmxlU3RyZWFtIGJlZm9yZSBjaGVja2luZyBjbG9zZWQgc2hvdWxkIHJlamVjdCBSZWFk
YWJsZVN0cmVhbURlZmF1bHRSZWFkZXIgY2xvc2VkIHByb21pc2UnKTsKLQotcHJvbWlzZV90ZXN0
KCgpID0+IHsKLQotICBsZXQgY29udHJvbGxlcjsKLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVT
dHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGNvbnRyb2xsZXIgPSBjOwotICAgIH0KLSAg
fSk7Ci0gIGNvbnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcigpOwotCi0gIGNvbnN0IHByb21pc2Ug
PSBQcm9taXNlLmFsbChbCi0gICAgcmVhZGVyLnJlYWQoKS50aGVuKHJlc3VsdCA9PiB7Ci0gICAg
ICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTog
dHJ1ZSB9LCAncmVhZCgpIHNob3VsZCBmdWxmaWxsIHdpdGggY2xvc2UgKDEpJyk7Ci0gICAgfSks
Ci0gICAgcmVhZGVyLnJlYWQoKS50aGVuKHJlc3VsdCA9PiB7Ci0gICAgICBhc3NlcnRfb2JqZWN0
X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9LCAncmVhZCgp
IHNob3VsZCBmdWxmaWxsIHdpdGggY2xvc2UgKDIpJyk7Ci0gICAgfSksCi0gICAgcmVhZGVyLmNs
b3NlZAotICBdKTsKLQotICBjb250cm9sbGVyLmNsb3NlKCk7Ci0gIHJldHVybiBwcm9taXNlOwot
Ci19LCAnUmVhZGluZyB0d2ljZSBvbiBhIHN0cmVhbSB0aGF0IGdldHMgY2xvc2VkJyk7Ci0KLXBy
b21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgbGV0IGNvbnRyb2xsZXI7Ci0gIGNvbnN0IHJzID0gbmV3
IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0gICAgICBjb250cm9sbGVyID0gYzsK
LSAgICB9Ci0gIH0pOwotCi0gIGNvbnRyb2xsZXIuY2xvc2UoKTsKLSAgY29uc3QgcmVhZGVyID0g
cnMuZ2V0UmVhZGVyKCk7Ci0KLSAgcmV0dXJuIFByb21pc2UuYWxsKFsKLSAgICByZWFkZXIucmVh
ZCgpLnRoZW4ocmVzdWx0ID0+IHsKLSAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdCwg
eyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0sICdyZWFkKCkgc2hvdWxkIGZ1bGZpbGwg
d2l0aCBjbG9zZSAoMSknKTsKLSAgICB9KSwKLSAgICByZWFkZXIucmVhZCgpLnRoZW4ocmVzdWx0
ID0+IHsKLSAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdCwgeyB2YWx1ZTogdW5kZWZp
bmVkLCBkb25lOiB0cnVlIH0sICdyZWFkKCkgc2hvdWxkIGZ1bGZpbGwgd2l0aCBjbG9zZSAoMikn
KTsKLSAgICB9KSwKLSAgICByZWFkZXIuY2xvc2VkCi0gIF0pOwotCi19LCAnUmVhZGluZyB0d2lj
ZSBvbiBhIGNsb3NlZCBzdHJlYW0nKTsKLQotcHJvbWlzZV90ZXN0KHQgPT4gewotCi0gIGxldCBj
b250cm9sbGVyOwotICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQo
YykgewotICAgICAgY29udHJvbGxlciA9IGM7Ci0gICAgfQotICB9KTsKLQotICBjb25zdCBteUVy
cm9yID0geyBuYW1lOiAnbWFzaGVkIHBvdGF0b2VzJyB9OwotICBjb250cm9sbGVyLmVycm9yKG15
RXJyb3IpOwotCi0gIGNvbnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcigpOwotCi0gIHJldHVybiBQ
cm9taXNlLmFsbChbCi0gICAgcHJvbWlzZV9yZWplY3RzKHQsIG15RXJyb3IsIHJlYWRlci5yZWFk
KCkpLAotICAgIHByb21pc2VfcmVqZWN0cyh0LCBteUVycm9yLCByZWFkZXIucmVhZCgpKSwKLSAg
ICBwcm9taXNlX3JlamVjdHModCwgbXlFcnJvciwgcmVhZGVyLmNsb3NlZCkKLSAgXSk7Ci0KLX0s
ICdSZWFkaW5nIHR3aWNlIG9uIGFuIGVycm9yZWQgc3RyZWFtJyk7Ci0KLXByb21pc2VfdGVzdCh0
ID0+IHsKLQotICBsZXQgY29udHJvbGxlcjsKLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJl
YW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGNvbnRyb2xsZXIgPSBjOwotICAgIH0KLSAgfSk7
Ci0KLSAgY29uc3QgbXlFcnJvciA9IHsgbmFtZTogJ21hc2hlZCBwb3RhdG9lcycgfTsKLSAgY29u
c3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7Ci0KLSAgY29uc3QgcHJvbWlzZSA9IFByb21pc2Uu
YWxsKFsKLSAgICBwcm9taXNlX3JlamVjdHModCwgbXlFcnJvciwgcmVhZGVyLnJlYWQoKSksCi0g
ICAgcHJvbWlzZV9yZWplY3RzKHQsIG15RXJyb3IsIHJlYWRlci5yZWFkKCkpLAotICAgIHByb21p
c2VfcmVqZWN0cyh0LCBteUVycm9yLCByZWFkZXIuY2xvc2VkKQotICBdKTsKLQotICBjb250cm9s
bGVyLmVycm9yKG15RXJyb3IpOwotICByZXR1cm4gcHJvbWlzZTsKLQotfSwgJ1JlYWRpbmcgdHdp
Y2Ugb24gYSBzdHJlYW0gdGhhdCBnZXRzIGVycm9yZWQnKTsKLQotdGVzdCgoKSA9PiB7Ci0gIGNv
bnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKCk7Ci0gIGxldCB0b1N0cmluZ0NhbGxlZCA9IGZh
bHNlOwotICBjb25zdCBtb2RlID0gewotICAgIHRvU3RyaW5nKCkgewotICAgICAgdG9TdHJpbmdD
YWxsZWQgPSB0cnVlOwotICAgICAgcmV0dXJuICcnOwotICAgIH0KLSAgfTsKLSAgYXNzZXJ0X3Ro
cm93cyhuZXcgUmFuZ2VFcnJvcigpLCAoKSA9PiBycy5nZXRSZWFkZXIoeyBtb2RlIH0pLCAnZ2V0
UmVhZGVyKCkgc2hvdWxkIHRocm93Jyk7Ci0gIGFzc2VydF90cnVlKHRvU3RyaW5nQ2FsbGVkLCAn
dG9TdHJpbmcoKSBzaG91bGQgYmUgY2FsbGVkJyk7Ci19LCAnZ2V0UmVhZGVyKCkgc2hvdWxkIGNh
bGwgVG9TdHJpbmcoKSBvbiBtb2RlJyk7Ci0KLWRvbmUoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJl
YW1zL2RlZmF1bHQtcmVhZGVyLnNlcnZpY2V3b3JrZXIuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxl
LXN0cmVhbXMvZGVmYXVsdC1yZWFkZXIuc2VydmljZXdvcmtlci5odHRwcy1leHBlY3RlZC50eHQK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNhMWVlZjQ0ZTdlYzgyZjU1NWMxN2M5OGFl
MzZlZjFlOTBkMzg1ZjMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
L3JlYWRhYmxlLXN0cmVhbXMvZGVmYXVsdC1yZWFkZXIuc2VydmljZXdvcmtlci5odHRwcy1leHBl
Y3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi0KLVBBU1MgU2VydmljZSB3
b3JrZXIgdGVzdCBzZXR1cCAKLVBBU1MgQ2FuIGdldCB0aGUgUmVhZGFibGVTdHJlYW1EZWZhdWx0
UmVhZGVyIGNvbnN0cnVjdG9yIGluZGlyZWN0bHkgCi1QQVNTIFJlYWRhYmxlU3RyZWFtRGVmYXVs
dFJlYWRlciBjb25zdHJ1Y3RvciBzaG91bGQgZ2V0IGEgUmVhZGFibGVTdHJlYW0gb2JqZWN0IGFz
IGFyZ3VtZW50IAotUEFTUyBSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIgaW5zdGFuY2VzIHNo
b3VsZCBoYXZlIHRoZSBjb3JyZWN0IGxpc3Qgb2YgcHJvcGVydGllcyAKLVBBU1MgUmVhZGFibGVT
dHJlYW1EZWZhdWx0UmVhZGVyIGNsb3NlZCBzaG91bGQgYWx3YXlzIHJldHVybiB0aGUgc2FtZSBw
cm9taXNlIG9iamVjdCAKLVBBU1MgQ29uc3RydWN0aW5nIGEgUmVhZGFibGVTdHJlYW1EZWZhdWx0
UmVhZGVyIGRpcmVjdGx5IHNob3VsZCBmYWlsIGlmIHRoZSBzdHJlYW0gaXMgYWxyZWFkeSBsb2Nr
ZWQgKHZpYSBkaXJlY3QgY29uc3RydWN0aW9uKSAKLVBBU1MgR2V0dGluZyBhIFJlYWRhYmxlU3Ry
ZWFtRGVmYXVsdFJlYWRlciB2aWEgZ2V0UmVhZGVyIHNob3VsZCBmYWlsIGlmIHRoZSBzdHJlYW0g
aXMgYWxyZWFkeSBsb2NrZWQgKHZpYSBkaXJlY3QgY29uc3RydWN0aW9uKSAKLVBBU1MgQ29uc3Ry
dWN0aW5nIGEgUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyIGRpcmVjdGx5IHNob3VsZCBmYWls
IGlmIHRoZSBzdHJlYW0gaXMgYWxyZWFkeSBsb2NrZWQgKHZpYSBnZXRSZWFkZXIpIAotUEFTUyBH
ZXR0aW5nIGEgUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyIHZpYSBnZXRSZWFkZXIgc2hvdWxk
IGZhaWwgaWYgdGhlIHN0cmVhbSBpcyBhbHJlYWR5IGxvY2tlZCAodmlhIGdldFJlYWRlcikgCi1Q
QVNTIENvbnN0cnVjdGluZyBhIFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlciBkaXJlY3RseSBz
aG91bGQgYmUgT0sgaWYgdGhlIHN0cmVhbSBpcyBjbG9zZWQgCi1QQVNTIENvbnN0cnVjdGluZyBh
IFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlciBkaXJlY3RseSBzaG91bGQgYmUgT0sgaWYgdGhl
IHN0cmVhbSBpcyBlcnJvcmVkIAotUEFTUyBSZWFkaW5nIGZyb20gYSByZWFkZXIgZm9yIGFuIGVt
cHR5IHN0cmVhbSB3aWxsIHdhaXQgdW50aWwgYSBjaHVuayBpcyBhdmFpbGFibGUgCi1QQVNTIGNh
bmNlbCgpIG9uIGEgcmVhZGVyIGRvZXMgbm90IHJlbGVhc2UgdGhlIHJlYWRlciAKLVBBU1MgY2xv
c2VkIHNob3VsZCBiZSBmdWxmaWxsZWQgYWZ0ZXIgc3RyZWFtIGlzIGNsb3NlZCAoLmNsb3NlZCBh
Y2Nlc3MgYmVmb3JlIGFjcXVpcmluZykgCi1QQVNTIGNsb3NlZCBzaG91bGQgYmUgcmVqZWN0ZWQg
YWZ0ZXIgcmVhZGVyIHJlbGVhc2VzIGl0cyBsb2NrIChtdWx0aXBsZSBzdHJlYW0gbG9ja3MpIAot
UEFTUyBNdWx0aXBsZSByZWFkZXJzIGNhbiBhY2Nlc3MgdGhlIHN0cmVhbSBpbiBzZXF1ZW5jZSAK
LVBBU1MgQ2Fubm90IHVzZSBhbiBhbHJlYWR5LXJlbGVhc2VkIHJlYWRlciB0byB1bmxvY2sgYSBz
dHJlYW0gYWdhaW4gCi1QQVNTIGNhbmNlbCgpIG9uIGEgcmVsZWFzZWQgcmVhZGVyIGlzIGEgbm8t
b3AgYW5kIGRvZXMgbm90IHBhc3MgdGhyb3VnaCAKLVBBU1MgR2V0dGluZyBhIHNlY29uZCByZWFk
ZXIgYWZ0ZXIgZXJyb3JpbmcgdGhlIHN0cmVhbSBhbmQgcmVsZWFzaW5nIHRoZSByZWFkZXIgc2hv
dWxkIHN1Y2NlZWQgCi1QQVNTIFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlciBjbG9zZWQgcHJv
bWlzZSBzaG91bGQgYmUgcmVqZWN0ZWQgd2l0aCB1bmRlZmluZWQgaWYgdGhhdCBpcyB0aGUgZXJy
b3IgCi1QQVNTIFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlcjogaWYgc3RhcnQgcmVqZWN0cyB3
aXRoIG5vIHBhcmFtZXRlciwgaXQgc2hvdWxkIGVycm9yIHRoZSBzdHJlYW0gd2l0aCBhbiB1bmRl
ZmluZWQgZXJyb3IgCi1QQVNTIEVycm9yaW5nIGEgUmVhZGFibGVTdHJlYW0gYWZ0ZXIgY2hlY2tp
bmcgY2xvc2VkIHNob3VsZCByZWplY3QgUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyIGNsb3Nl
ZCBwcm9taXNlIAotUEFTUyBFcnJvcmluZyBhIFJlYWRhYmxlU3RyZWFtIGJlZm9yZSBjaGVja2lu
ZyBjbG9zZWQgc2hvdWxkIHJlamVjdCBSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIgY2xvc2Vk
IHByb21pc2UgCi1QQVNTIFJlYWRpbmcgdHdpY2Ugb24gYSBzdHJlYW0gdGhhdCBnZXRzIGNsb3Nl
ZCAKLVBBU1MgUmVhZGluZyB0d2ljZSBvbiBhIGNsb3NlZCBzdHJlYW0gCi1QQVNTIFJlYWRpbmcg
dHdpY2Ugb24gYW4gZXJyb3JlZCBzdHJlYW0gCi1QQVNTIFJlYWRpbmcgdHdpY2Ugb24gYSBzdHJl
YW0gdGhhdCBnZXRzIGVycm9yZWQgCi1QQVNTIGdldFJlYWRlcigpIHNob3VsZCBjYWxsIFRvU3Ry
aW5nKCkgb24gbW9kZSAKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZGVmYXVsdC1yZWFkZXIu
c2VydmljZXdvcmtlci5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZGVmYXVsdC1yZWFkZXIuc2Vy
dmljZXdvcmtlci5odHRwcy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYjQx
ZmYyOWJmYzAwMDEyY2VlZmIwZTYzNWE5NWIyNGJhZTlkNzgzLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2RlZmF1bHQtcmVhZGVyLnNl
cnZpY2V3b3JrZXIuaHR0cHMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLTwh
RE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHRpdGxlPmRlZmF1bHQtcmVh
ZGVyLmpzIHNlcnZpY2Ugd29ya2VyIHdyYXBwZXIgZmlsZTwvdGl0bGU+Ci0KLTxzY3JpcHQgc3Jj
PSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvc2Vy
dmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL3Jlc291cmNlcy90ZXN0LWhlbHBlcnMuc3ViLmpz
Ij48L3NjcmlwdD4KLQotPHNjcmlwdD4KLSd1c2Ugc3RyaWN0JzsKLXNlcnZpY2Vfd29ya2VyX3Rl
c3QoJ2RlZmF1bHQtcmVhZGVyLmpzJywgJ1NlcnZpY2Ugd29ya2VyIHRlc3Qgc2V0dXAnKTsKLTwv
c2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZGVmYXVsdC1yZWFkZXIuc2hhcmVkd29y
a2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2RlZmF1bHQtcmVhZGVyLnNoYXJlZHdvcmtl
ci1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA5ZDVkMjUwOWQ3
ODQ3ZThjZDZmZTY2MDZhYTYwY2RkMzNhYTQ3NGUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZGVmYXVsdC1yZWFkZXIuc2hhcmVkd29y
a2VyLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotQ09OU09MRSBN
RVNTQUdFOiBSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogU2hhcmVkV29ya2Vy
Ci0KLUhhcm5lc3MgRXJyb3IgKEZBSUwpLCBtZXNzYWdlID0gUmVmZXJlbmNlRXJyb3I6IENhbid0
IGZpbmQgdmFyaWFibGU6IFNoYXJlZFdvcmtlcgotCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1z
L2RlZmF1bHQtcmVhZGVyLnNoYXJlZHdvcmtlci5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZGVmYXVsdC1y
ZWFkZXIuc2hhcmVkd29ya2VyLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk2
ZGUzYmEwZmYzNzFhZDQyMGRiMjc2ZTg4ZDNjNzE5NmRjOGNlYTMuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZGVmYXVsdC1yZWFkZXIu
c2hhcmVkd29ya2VyLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi08IURPQ1RZ
UEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTx0aXRsZT5kZWZhdWx0LXJlYWRlci5q
cyBzaGFyZWQgd29ya2VyIHdyYXBwZXIgZmlsZTwvdGl0bGU+Ci0KLTxzY3JpcHQgc3JjPSIvcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLQotPHNjcmlwdD4KLSd1c2Ugc3RyaWN0
JzsKLWZldGNoX3Rlc3RzX2Zyb21fd29ya2VyKG5ldyBTaGFyZWRXb3JrZXIoJ2RlZmF1bHQtcmVh
ZGVyLmpzJykpOwotPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9mbG9hdGluZy1w
b2ludC10b3RhbC1xdWV1ZS1zaXplLmFueS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9mbG9h
dGluZy1wb2ludC10b3RhbC1xdWV1ZS1zaXplLmFueS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YTdmMTk3ZTYwYzA5OGNkOTFiYzQ3ZjQ0Yjg4ZmVlODA2YTEwMjI3NAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9y
ZWFkYWJsZS1zdHJlYW1zL2Zsb2F0aW5nLXBvaW50LXRvdGFsLXF1ZXVlLXNpemUuYW55LWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDYgQEAKKworUEFTUyBGbG9hdGluZyBwb2ludCBhcml0aG1ldGlj
IG11c3QgbWFuaWZlc3QgbmVhciBOVU1CRVIuTUFYX1NBRkVfSU5URUdFUiAodG90YWwgZW5kcyB1
cCBwb3NpdGl2ZSkgCitQQVNTIEZsb2F0aW5nIHBvaW50IGFyaXRobWV0aWMgbXVzdCBtYW5pZmVz
dCBuZWFyIDAgKHRvdGFsIGVuZHMgdXAgcG9zaXRpdmUsIGJ1dCBjbGFtcGVkKSAKK1BBU1MgRmxv
YXRpbmcgcG9pbnQgYXJpdGhtZXRpYyBtdXN0IG1hbmlmZXN0IG5lYXIgMCAodG90YWwgZW5kcyB1
cCBwb3NpdGl2ZSwgYW5kIG5vdCBjbGFtcGVkKSAKK1BBU1MgRmxvYXRpbmcgcG9pbnQgYXJpdGht
ZXRpYyBtdXN0IG1hbmlmZXN0IG5lYXIgMCAodG90YWwgZW5kcyB1cCB6ZXJvKSAKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
L3JlYWRhYmxlLXN0cmVhbXMvZmxvYXRpbmctcG9pbnQtdG90YWwtcXVldWUtc2l6ZS5hbnkuaHRt
bCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9y
ZWFkYWJsZS1zdHJlYW1zL2Zsb2F0aW5nLXBvaW50LXRvdGFsLXF1ZXVlLXNpemUuYW55Lmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMjM4MjkxMzUyOGU2OTNiM2E1ZDU2YzY2MGE0NTA2MDk4MGI1NDhjMwotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2Zsb2F0aW5nLXBvaW50LXRvdGFsLXF1ZXVlLXNp
emUuYW55Lmh0bWwKQEAgLTAsMCArMSBAQAorPCEtLSBUaGlzIGZpbGUgaXMgcmVxdWlyZWQgZm9y
IFdlYktpdCB0ZXN0IGluZnJhc3RydWN0dXJlIHRvIHJ1biB0aGUgdGVtcGxhdGVkIHRlc3QgLS0+
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZmxv
YXRpbmctcG9pbnQtdG90YWwtcXVldWUtc2l6ZS5hbnkuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9mbG9hdGlu
Zy1wb2ludC10b3RhbC1xdWV1ZS1zaXplLmFueS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MDA0ODJhNDUwY2Fk
MjlmZTJiYzA1MTVlMjI1NDRlMzdjMGFlZDdmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVh
bXMvZmxvYXRpbmctcG9pbnQtdG90YWwtcXVldWUtc2l6ZS5hbnkuanMKQEAgLTAsMCArMSwxMTYg
QEAKKy8vIE1FVEE6IGdsb2JhbD13aW5kb3csd29ya2VyLGpzc2hlbGwKKyd1c2Ugc3RyaWN0JzsK
KworLy8gRHVlIHRvIHRoZSBsaW1pdGF0aW9ucyBvZiBmbG9hdGluZy1wb2ludCBwcmVjaXNpb24s
IHRoZSBjYWxjdWxhdGlvbiBvZiBkZXNpcmVkU2l6ZSBzb21ldGltZXMgZ2l2ZXMgZGlmZmVyZW50
IGFuc3dlcnMKKy8vIHRoYW4gYWRkaW5nIHVwIHRoZSBpdGVtcyBpbiB0aGUgcXVldWUgd291bGQu
IEl0IGlzIGltcG9ydGFudCB0aGF0IGltcGxlbWVudGF0aW9ucyBnaXZlIHRoZSBzYW1lIHJlc3Vs
dCBpbiB0aGVzZSBlZGdlCisvLyBjYXNlcyBzbyB0aGF0IGRldmVsb3BlcnMgZG8gbm90IGNvbWUg
dG8gZGVwZW5kIG9uIG5vbi1zdGFuZGFyZCBiZWhhdmlvdXIuIFNlZQorLy8gaHR0cHM6Ly9naXRo
dWIuY29tL3doYXR3Zy9zdHJlYW1zL2lzc3Vlcy81ODIgYW5kIGxpbmtlZCBpc3N1ZXMgZm9yIGZ1
cnRoZXIgZGlzY3Vzc2lvbi4KKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgY29uc3QgeyByZWFk
ZXIsIGNvbnRyb2xsZXIgfSA9IHNldHVwVGVzdFN0cmVhbSgpOworCisgIGNvbnRyb2xsZXIuZW5x
dWV1ZSgyKTsKKyAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAwIC0gMiwg
J2Rlc2lyZWRTaXplIG11c3QgYmUgLTIgYWZ0ZXIgZW5xdWV1ZWluZyBzdWNoIGEgY2h1bmsnKTsK
KworICBjb250cm9sbGVyLmVucXVldWUoTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIpOworICBhc3Nl
cnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDAgLSBOdW1iZXIuTUFYX1NBRkVfSU5U
RUdFUiAtIDIsCisgICAgJ2Rlc2lyZWRTaXplIG11c3QgYmUgY2FsY3VsYXRlZCB1c2luZyBkb3Vi
bGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IGFyaXRobWV0aWMgKGFkZGluZyBhIHNlY29uZCBj
aHVuayknKTsKKworICByZXR1cm4gcmVhZGVyLnJlYWQoKS50aGVuKCgpID0+IHsKKyAgICBhc3Nl
cnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDAgLSBOdW1iZXIuTUFYX1NBRkVfSU5U
RUdFUiAtIDIgKyAyLAorICAgICAgJ2Rlc2lyZWRTaXplIG11c3QgYmUgY2FsY3VsYXRlZCB1c2lu
ZyBkb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IGFyaXRobWV0aWMgKHN1YnRyYWN0aW5n
IGEgY2h1bmspJyk7CisKKyAgICByZXR1cm4gcmVhZGVyLnJlYWQoKTsKKyAgfSkudGhlbigoKSA9
PiB7CisgICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAwLCAnW1txdWV1
ZVRvdGFsU2l6ZV1dIG11c3QgY2xhbXAgdG8gMCBpZiBpdCBiZWNvbWVzIG5lZ2F0aXZlJyk7Cisg
IH0pOworfSwgJ0Zsb2F0aW5nIHBvaW50IGFyaXRobWV0aWMgbXVzdCBtYW5pZmVzdCBuZWFyIE5V
TUJFUi5NQVhfU0FGRV9JTlRFR0VSICh0b3RhbCBlbmRzIHVwIHBvc2l0aXZlKScpOworCitwcm9t
aXNlX3Rlc3QoKCkgPT4geworICBjb25zdCB7IHJlYWRlciwgY29udHJvbGxlciB9ID0gc2V0dXBU
ZXN0U3RyZWFtKCk7CisKKyAgY29udHJvbGxlci5lbnF1ZXVlKDFlLTE2KTsKKyAgYXNzZXJ0X2Vx
dWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAwIC0gMWUtMTYsICdkZXNpcmVkU2l6ZSBtdXN0
IGJlIC0xZTE2IGFmdGVyIGVucXVldWVpbmcgc3VjaCBhIGNodW5rJyk7CisKKyAgY29udHJvbGxl
ci5lbnF1ZXVlKDEpOworICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDAg
LSAxZS0xNiAtIDEsCisgICAgJ2Rlc2lyZWRTaXplIG11c3QgYmUgY2FsY3VsYXRlZCB1c2luZyBk
b3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IGFyaXRobWV0aWMgKGFkZGluZyBhIHNlY29u
ZCBjaHVuayknKTsKKworICByZXR1cm4gcmVhZGVyLnJlYWQoKS50aGVuKCgpID0+IHsKKyAgICBh
c3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDAgLSAxZS0xNiAtIDEgKyAxZS0x
NiwKKyAgICAgICdkZXNpcmVkU2l6ZSBtdXN0IGJlIGNhbGN1bGF0ZWQgdXNpbmcgZG91YmxlLXBy
ZWNpc2lvbiBmbG9hdGluZy1wb2ludCBhcml0aG1ldGljIChzdWJ0cmFjdGluZyBhIGNodW5rKScp
OworCisgICAgcmV0dXJuIHJlYWRlci5yZWFkKCk7CisgIH0pLnRoZW4oKCkgPT4geworICAgIGFz
c2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMCwgJ1tbcXVldWVUb3RhbFNpemVd
XSBtdXN0IGNsYW1wIHRvIDAgaWYgaXQgYmVjb21lcyBuZWdhdGl2ZScpOworICB9KTsKK30sICdG
bG9hdGluZyBwb2ludCBhcml0aG1ldGljIG11c3QgbWFuaWZlc3QgbmVhciAwICh0b3RhbCBlbmRz
IHVwIHBvc2l0aXZlLCBidXQgY2xhbXBlZCknKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAg
Y29uc3QgeyByZWFkZXIsIGNvbnRyb2xsZXIgfSA9IHNldHVwVGVzdFN0cmVhbSgpOworCisgIGNv
bnRyb2xsZXIuZW5xdWV1ZSgxZS0xNik7CisgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNp
cmVkU2l6ZSwgMCAtIDFlLTE2LCAnZGVzaXJlZFNpemUgbXVzdCBiZSAtMmUxNiBhZnRlciBlbnF1
ZXVlaW5nIHN1Y2ggYSBjaHVuaycpOworCisgIGNvbnRyb2xsZXIuZW5xdWV1ZSgxKTsKKyAgYXNz
ZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAwIC0gMWUtMTYgLSAxLAorICAgICdk
ZXNpcmVkU2l6ZSBtdXN0IGJlIGNhbGN1bGF0ZWQgdXNpbmcgZG91YmxlLXByZWNpc2lvbiBmbG9h
dGluZy1wb2ludCBhcml0aG1ldGljIChhZGRpbmcgYSBzZWNvbmQgY2h1bmspJyk7CisKKyAgY29u
dHJvbGxlci5lbnF1ZXVlKDJlLTE2KTsKKyAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2ly
ZWRTaXplLCAwIC0gMWUtMTYgLSAxIC0gMmUtMTYsCisgICAgJ2Rlc2lyZWRTaXplIG11c3QgYmUg
Y2FsY3VsYXRlZCB1c2luZyBkb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IGFyaXRobWV0
aWMgKGFkZGluZyBhIHRoaXJkIGNodW5rKScpOworCisgIHJldHVybiByZWFkZXIucmVhZCgpLnRo
ZW4oKCkgPT4geworICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMCAt
IDFlLTE2IC0gMSAtIDJlLTE2ICsgMWUtMTYsCisgICAgICAnZGVzaXJlZFNpemUgbXVzdCBiZSBj
YWxjdWxhdGVkIHVzaW5nIGRvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgYXJpdGhtZXRp
YyAoc3VidHJhY3RpbmcgYSBjaHVuayknKTsKKworICAgIHJldHVybiByZWFkZXIucmVhZCgpOwor
ICB9KS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNp
emUsIDAgLSAxZS0xNiAtIDEgLSAyZS0xNiArIDFlLTE2ICsgMSwKKyAgICAgICdkZXNpcmVkU2l6
ZSBtdXN0IGJlIGNhbGN1bGF0ZWQgdXNpbmcgZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZy1wb2lu
dCBhcml0aG1ldGljIChzdWJ0cmFjdGluZyBhIHNlY29uZCBjaHVuayknKTsKKworICAgIHJldHVy
biByZWFkZXIucmVhZCgpOworICB9KS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfZXF1YWxzKGNv
bnRyb2xsZXIuZGVzaXJlZFNpemUsIDAgLSAxZS0xNiAtIDEgLSAyZS0xNiArIDFlLTE2ICsgMSAr
IDJlLTE2LAorICAgICAgJ2Rlc2lyZWRTaXplIG11c3QgYmUgY2FsY3VsYXRlZCB1c2luZyBkb3Vi
bGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IGFyaXRobWV0aWMgKHN1YnRyYWN0aW5nIGEgdGhp
cmQgY2h1bmspJyk7CisgIH0pOworfSwgJ0Zsb2F0aW5nIHBvaW50IGFyaXRobWV0aWMgbXVzdCBt
YW5pZmVzdCBuZWFyIDAgKHRvdGFsIGVuZHMgdXAgcG9zaXRpdmUsIGFuZCBub3QgY2xhbXBlZCkn
KTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgY29uc3QgeyByZWFkZXIsIGNvbnRyb2xsZXIg
fSA9IHNldHVwVGVzdFN0cmVhbSgpOworCisgIGNvbnRyb2xsZXIuZW5xdWV1ZSgyZS0xNik7Cisg
IGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMCAtIDJlLTE2LCAnZGVzaXJl
ZFNpemUgbXVzdCBiZSAtMmUxNiBhZnRlciBlbnF1ZXVlaW5nIHN1Y2ggYSBjaHVuaycpOworCisg
IGNvbnRyb2xsZXIuZW5xdWV1ZSgxKTsKKyAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2ly
ZWRTaXplLCAwIC0gMmUtMTYgLSAxLAorICAgICdkZXNpcmVkU2l6ZSBtdXN0IGJlIGNhbGN1bGF0
ZWQgdXNpbmcgZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCBhcml0aG1ldGljIChhZGRp
bmcgYSBzZWNvbmQgY2h1bmspJyk7CisKKyAgcmV0dXJuIHJlYWRlci5yZWFkKCkudGhlbigoKSA9
PiB7CisgICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAwIC0gMmUtMTYg
LSAxICsgMmUtMTYsCisgICAgICAnZGVzaXJlZFNpemUgbXVzdCBiZSBjYWxjdWxhdGVkIHVzaW5n
IGRvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgYXJpdGhtZXRpYyAoc3VidHJhY3Rpbmcg
YSBjaHVuayknKTsKKworICAgIHJldHVybiByZWFkZXIucmVhZCgpOworICB9KS50aGVuKCgpID0+
IHsKKyAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDAsCisgICAgICAn
ZGVzaXJlZFNpemUgbXVzdCBiZSBjYWxjdWxhdGVkIHVzaW5nIGRvdWJsZS1wcmVjaXNpb24gZmxv
YXRpbmctcG9pbnQgYXJpdGhtZXRpYyAoc3VidHJhY3RpbmcgYSBzZWNvbmQgY2h1bmspJyk7Cisg
IH0pOworfSwgJ0Zsb2F0aW5nIHBvaW50IGFyaXRobWV0aWMgbXVzdCBtYW5pZmVzdCBuZWFyIDAg
KHRvdGFsIGVuZHMgdXAgemVybyknKTsKKworZnVuY3Rpb24gc2V0dXBUZXN0U3RyZWFtKCkgewor
ICBjb25zdCBzdHJhdGVneSA9IHsKKyAgICBzaXplKHgpIHsKKyAgICAgIHJldHVybiB4OworICAg
IH0sCisgICAgaGlnaFdhdGVyTWFyazogMAorICB9OworCisgIGxldCBjb250cm9sbGVyOworICBj
b25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgY29u
dHJvbGxlciA9IGM7CisgICAgfQorICB9LCBzdHJhdGVneSk7CisKKyAgcmV0dXJuIHsgcmVhZGVy
OiBycy5nZXRSZWFkZXIoKSwgY29udHJvbGxlciB9OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVh
bXMvZmxvYXRpbmctcG9pbnQtdG90YWwtcXVldWUtc2l6ZS5hbnkud29ya2VyLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9y
ZWFkYWJsZS1zdHJlYW1zL2Zsb2F0aW5nLXBvaW50LXRvdGFsLXF1ZXVlLXNpemUuYW55Lndvcmtl
ci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTdmMTk3ZTYwYzA5OGNkOTFiYzQ3ZjQ0Yjg4ZmVl
ODA2YTEwMjI3NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2Zsb2F0aW5nLXBvaW50
LXRvdGFsLXF1ZXVlLXNpemUuYW55Lndvcmtlci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw2IEBA
CisKK1BBU1MgRmxvYXRpbmcgcG9pbnQgYXJpdGhtZXRpYyBtdXN0IG1hbmlmZXN0IG5lYXIgTlVN
QkVSLk1BWF9TQUZFX0lOVEVHRVIgKHRvdGFsIGVuZHMgdXAgcG9zaXRpdmUpIAorUEFTUyBGbG9h
dGluZyBwb2ludCBhcml0aG1ldGljIG11c3QgbWFuaWZlc3QgbmVhciAwICh0b3RhbCBlbmRzIHVw
IHBvc2l0aXZlLCBidXQgY2xhbXBlZCkgCitQQVNTIEZsb2F0aW5nIHBvaW50IGFyaXRobWV0aWMg
bXVzdCBtYW5pZmVzdCBuZWFyIDAgKHRvdGFsIGVuZHMgdXAgcG9zaXRpdmUsIGFuZCBub3QgY2xh
bXBlZCkgCitQQVNTIEZsb2F0aW5nIHBvaW50IGFyaXRobWV0aWMgbXVzdCBtYW5pZmVzdCBuZWFy
IDAgKHRvdGFsIGVuZHMgdXAgemVybykgCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2Zsb2F0
aW5nLXBvaW50LXRvdGFsLXF1ZXVlLXNpemUuYW55Lndvcmtlci5odG1sIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMv
ZmxvYXRpbmctcG9pbnQtdG90YWwtcXVldWUtc2l6ZS5hbnkud29ya2VyLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMjM4MjkxMzUyOGU2OTNiM2E1ZDU2YzY2MGE0NTA2MDk4MGI1NDhjMwotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy9yZWFkYWJsZS1zdHJlYW1zL2Zsb2F0aW5nLXBvaW50LXRvdGFsLXF1ZXVlLXNpemUuYW55Lndv
cmtlci5odG1sCkBAIC0wLDAgKzEgQEAKKzwhLS0gVGhpcyBmaWxlIGlzIHJlcXVpcmVkIGZvciBX
ZWJLaXQgdGVzdCBpbmZyYXN0cnVjdHVyZSB0byBydW4gdGhlIHRlbXBsYXRlZCB0ZXN0IC0tPgpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2Zsb2F0
aW5nLXBvaW50LXRvdGFsLXF1ZXVlLXNpemUuZGVkaWNhdGVkd29ya2VyLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFk
YWJsZS1zdHJlYW1zL2Zsb2F0aW5nLXBvaW50LXRvdGFsLXF1ZXVlLXNpemUuZGVkaWNhdGVkd29y
a2VyLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTdmMTk3ZTYw
YzA5OGNkOTFiYzQ3ZjQ0Yjg4ZmVlODA2YTEwMjI3NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9mbG9hdGluZy1wb2ludC10b3RhbC1x
dWV1ZS1zaXplLmRlZGljYXRlZHdvcmtlci1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAt
MSw2ICswLDAgQEAKLQotUEFTUyBGbG9hdGluZyBwb2ludCBhcml0aG1ldGljIG11c3QgbWFuaWZl
c3QgbmVhciBOVU1CRVIuTUFYX1NBRkVfSU5URUdFUiAodG90YWwgZW5kcyB1cCBwb3NpdGl2ZSkg
Ci1QQVNTIEZsb2F0aW5nIHBvaW50IGFyaXRobWV0aWMgbXVzdCBtYW5pZmVzdCBuZWFyIDAgKHRv
dGFsIGVuZHMgdXAgcG9zaXRpdmUsIGJ1dCBjbGFtcGVkKSAKLVBBU1MgRmxvYXRpbmcgcG9pbnQg
YXJpdGhtZXRpYyBtdXN0IG1hbmlmZXN0IG5lYXIgMCAodG90YWwgZW5kcyB1cCBwb3NpdGl2ZSwg
YW5kIG5vdCBjbGFtcGVkKSAKLVBBU1MgRmxvYXRpbmcgcG9pbnQgYXJpdGhtZXRpYyBtdXN0IG1h
bmlmZXN0IG5lYXIgMCAodG90YWwgZW5kcyB1cCB6ZXJvKSAKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0
cmVhbXMvZmxvYXRpbmctcG9pbnQtdG90YWwtcXVldWUtc2l6ZS5kZWRpY2F0ZWR3b3JrZXIuaHRt
bCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9y
ZWFkYWJsZS1zdHJlYW1zL2Zsb2F0aW5nLXBvaW50LXRvdGFsLXF1ZXVlLXNpemUuZGVkaWNhdGVk
d29ya2VyLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYwOThiMzlhMzQ1NTNh
MjYyYWNmMzcyY2FlMGU5MmM2NGY1ZTZiOTkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZmxvYXRpbmctcG9pbnQtdG90YWwtcXVldWUt
c2l6ZS5kZWRpY2F0ZWR3b3JrZXIuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAK
LTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHRpdGxlPmZsb2F0aW5n
LXBvaW50LXRvdGFsLXF1ZXVlLXNpemUuanMgZGVkaWNhdGVkIHdvcmtlciB3cmFwcGVyIGZpbGU8
L3RpdGxlPgotCi08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3Jp
cHQ+Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3Jp
cHQ+Ci0KLTxzY3JpcHQ+Ci0ndXNlIHN0cmljdCc7Ci1mZXRjaF90ZXN0c19mcm9tX3dvcmtlcihu
ZXcgV29ya2VyKCdmbG9hdGluZy1wb2ludC10b3RhbC1xdWV1ZS1zaXplLmpzJykpOwotPC9zY3Jp
cHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9mbG9hdGluZy1wb2ludC10b3RhbC1xdWV1ZS1z
aXplLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9mbG9hdGluZy1wb2ludC10b3RhbC1xdWV1ZS1zaXplLmh0
bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIwZWE2Nzk3M2YyODkyNjE2NzU2YTA1
ZmI2M2EwOTZhMmJiZDcxOTAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJl
YW1zL3JlYWRhYmxlLXN0cmVhbXMvZmxvYXRpbmctcG9pbnQtdG90YWwtcXVldWUtc2l6ZS5odG1s
CisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBj
aGFyc2V0PSJ1dGYtOCI+Ci08dGl0bGU+ZmxvYXRpbmctcG9pbnQtdG90YWwtcXVldWUtc2l6ZS5q
cyBicm93c2VyIGNvbnRleHQgd3JhcHBlciBmaWxlPC90aXRsZT4KLQotPHNjcmlwdCBzcmM9Ii9y
ZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotCi0KLQotPHNjcmlwdCBzcmM9ImZs
b2F0aW5nLXBvaW50LXRvdGFsLXF1ZXVlLXNpemUuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRh
YmxlLXN0cmVhbXMvZmxvYXRpbmctcG9pbnQtdG90YWwtcXVldWUtc2l6ZS5qcyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJl
YW1zL2Zsb2F0aW5nLXBvaW50LXRvdGFsLXF1ZXVlLXNpemUuanMKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGY3Yzc2MjQ4YjBiMjA4NjJiYmJkYjM5ZWQ3Njk1MWI4ODg5NDU4NmMuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMv
ZmxvYXRpbmctcG9pbnQtdG90YWwtcXVldWUtc2l6ZS5qcworKysgL2Rldi9udWxsCkBAIC0xLDEy
MSArMCwwIEBACi0ndXNlIHN0cmljdCc7Ci0KLWlmIChzZWxmLmltcG9ydFNjcmlwdHMpIHsKLSAg
c2VsZi5pbXBvcnRTY3JpcHRzKCcvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzJyk7Ci19Ci0KLS8v
IER1ZSB0byB0aGUgbGltaXRhdGlvbnMgb2YgZmxvYXRpbmctcG9pbnQgcHJlY2lzaW9uLCB0aGUg
Y2FsY3VsYXRpb24gb2YgZGVzaXJlZFNpemUgc29tZXRpbWVzIGdpdmVzIGRpZmZlcmVudCBhbnN3
ZXJzCi0vLyB0aGFuIGFkZGluZyB1cCB0aGUgaXRlbXMgaW4gdGhlIHF1ZXVlIHdvdWxkLiBJdCBp
cyBpbXBvcnRhbnQgdGhhdCBpbXBsZW1lbnRhdGlvbnMgZ2l2ZSB0aGUgc2FtZSByZXN1bHQgaW4g
dGhlc2UgZWRnZQotLy8gY2FzZXMgc28gdGhhdCBkZXZlbG9wZXJzIGRvIG5vdCBjb21lIHRvIGRl
cGVuZCBvbiBub24tc3RhbmRhcmQgYmVoYXZpb3VyLiBTZWUKLS8vIGh0dHBzOi8vZ2l0aHViLmNv
bS93aGF0d2cvc3RyZWFtcy9pc3N1ZXMvNTgyIGFuZCBsaW5rZWQgaXNzdWVzIGZvciBmdXJ0aGVy
IGRpc2N1c3Npb24uCi0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0gIGNvbnN0IHsgcmVhZGVyLCBj
b250cm9sbGVyIH0gPSBzZXR1cFRlc3RTdHJlYW0oKTsKLQotICBjb250cm9sbGVyLmVucXVldWUo
Mik7Ci0gIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMCAtIDIsICdkZXNp
cmVkU2l6ZSBtdXN0IGJlIC0yIGFmdGVyIGVucXVldWVpbmcgc3VjaCBhIGNodW5rJyk7Ci0KLSAg
Y29udHJvbGxlci5lbnF1ZXVlKE51bWJlci5NQVhfU0FGRV9JTlRFR0VSKTsKLSAgYXNzZXJ0X2Vx
dWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAwIC0gTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIg
LSAyLAotICAgICdkZXNpcmVkU2l6ZSBtdXN0IGJlIGNhbGN1bGF0ZWQgdXNpbmcgZG91YmxlLXBy
ZWNpc2lvbiBmbG9hdGluZy1wb2ludCBhcml0aG1ldGljIChhZGRpbmcgYSBzZWNvbmQgY2h1bmsp
Jyk7Ci0KLSAgcmV0dXJuIHJlYWRlci5yZWFkKCkudGhlbigoKSA9PiB7Ci0gICAgYXNzZXJ0X2Vx
dWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAwIC0gTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIg
LSAyICsgMiwKLSAgICAgICdkZXNpcmVkU2l6ZSBtdXN0IGJlIGNhbGN1bGF0ZWQgdXNpbmcgZG91
YmxlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCBhcml0aG1ldGljIChzdWJ0cmFjdGluZyBhIGNo
dW5rKScpOwotCi0gICAgcmV0dXJuIHJlYWRlci5yZWFkKCk7Ci0gIH0pLnRoZW4oKCkgPT4gewot
ICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMCwgJ1tbcXVldWVUb3Rh
bFNpemVdXSBtdXN0IGNsYW1wIHRvIDAgaWYgaXQgYmVjb21lcyBuZWdhdGl2ZScpOwotICB9KTsK
LX0sICdGbG9hdGluZyBwb2ludCBhcml0aG1ldGljIG11c3QgbWFuaWZlc3QgbmVhciBOVU1CRVIu
TUFYX1NBRkVfSU5URUdFUiAodG90YWwgZW5kcyB1cCBwb3NpdGl2ZSknKTsKLQotcHJvbWlzZV90
ZXN0KCgpID0+IHsKLSAgY29uc3QgeyByZWFkZXIsIGNvbnRyb2xsZXIgfSA9IHNldHVwVGVzdFN0
cmVhbSgpOwotCi0gIGNvbnRyb2xsZXIuZW5xdWV1ZSgxZS0xNik7Ci0gIGFzc2VydF9lcXVhbHMo
Y29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMCAtIDFlLTE2LCAnZGVzaXJlZFNpemUgbXVzdCBiZSAt
MWUxNiBhZnRlciBlbnF1ZXVlaW5nIHN1Y2ggYSBjaHVuaycpOwotCi0gIGNvbnRyb2xsZXIuZW5x
dWV1ZSgxKTsKLSAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAwIC0gMWUt
MTYgLSAxLAotICAgICdkZXNpcmVkU2l6ZSBtdXN0IGJlIGNhbGN1bGF0ZWQgdXNpbmcgZG91Ymxl
LXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCBhcml0aG1ldGljIChhZGRpbmcgYSBzZWNvbmQgY2h1
bmspJyk7Ci0KLSAgcmV0dXJuIHJlYWRlci5yZWFkKCkudGhlbigoKSA9PiB7Ci0gICAgYXNzZXJ0
X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAwIC0gMWUtMTYgLSAxICsgMWUtMTYsCi0g
ICAgICAnZGVzaXJlZFNpemUgbXVzdCBiZSBjYWxjdWxhdGVkIHVzaW5nIGRvdWJsZS1wcmVjaXNp
b24gZmxvYXRpbmctcG9pbnQgYXJpdGhtZXRpYyAoc3VidHJhY3RpbmcgYSBjaHVuayknKTsKLQot
ICAgIHJldHVybiByZWFkZXIucmVhZCgpOwotICB9KS50aGVuKCgpID0+IHsKLSAgICBhc3NlcnRf
ZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDAsICdbW3F1ZXVlVG90YWxTaXplXV0gbXVz
dCBjbGFtcCB0byAwIGlmIGl0IGJlY29tZXMgbmVnYXRpdmUnKTsKLSAgfSk7Ci19LCAnRmxvYXRp
bmcgcG9pbnQgYXJpdGhtZXRpYyBtdXN0IG1hbmlmZXN0IG5lYXIgMCAodG90YWwgZW5kcyB1cCBw
b3NpdGl2ZSwgYnV0IGNsYW1wZWQpJyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0gIGNvbnN0
IHsgcmVhZGVyLCBjb250cm9sbGVyIH0gPSBzZXR1cFRlc3RTdHJlYW0oKTsKLQotICBjb250cm9s
bGVyLmVucXVldWUoMWUtMTYpOwotICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNp
emUsIDAgLSAxZS0xNiwgJ2Rlc2lyZWRTaXplIG11c3QgYmUgLTJlMTYgYWZ0ZXIgZW5xdWV1ZWlu
ZyBzdWNoIGEgY2h1bmsnKTsKLQotICBjb250cm9sbGVyLmVucXVldWUoMSk7Ci0gIGFzc2VydF9l
cXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMCAtIDFlLTE2IC0gMSwKLSAgICAnZGVzaXJl
ZFNpemUgbXVzdCBiZSBjYWxjdWxhdGVkIHVzaW5nIGRvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmct
cG9pbnQgYXJpdGhtZXRpYyAoYWRkaW5nIGEgc2Vjb25kIGNodW5rKScpOwotCi0gIGNvbnRyb2xs
ZXIuZW5xdWV1ZSgyZS0xNik7Ci0gIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6
ZSwgMCAtIDFlLTE2IC0gMSAtIDJlLTE2LAotICAgICdkZXNpcmVkU2l6ZSBtdXN0IGJlIGNhbGN1
bGF0ZWQgdXNpbmcgZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCBhcml0aG1ldGljIChh
ZGRpbmcgYSB0aGlyZCBjaHVuayknKTsKLQotICByZXR1cm4gcmVhZGVyLnJlYWQoKS50aGVuKCgp
ID0+IHsKLSAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDAgLSAxZS0x
NiAtIDEgLSAyZS0xNiArIDFlLTE2LAotICAgICAgJ2Rlc2lyZWRTaXplIG11c3QgYmUgY2FsY3Vs
YXRlZCB1c2luZyBkb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IGFyaXRobWV0aWMgKHN1
YnRyYWN0aW5nIGEgY2h1bmspJyk7Ci0KLSAgICByZXR1cm4gcmVhZGVyLnJlYWQoKTsKLSAgfSku
dGhlbigoKSA9PiB7Ci0gICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAw
IC0gMWUtMTYgLSAxIC0gMmUtMTYgKyAxZS0xNiArIDEsCi0gICAgICAnZGVzaXJlZFNpemUgbXVz
dCBiZSBjYWxjdWxhdGVkIHVzaW5nIGRvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgYXJp
dGhtZXRpYyAoc3VidHJhY3RpbmcgYSBzZWNvbmQgY2h1bmspJyk7Ci0KLSAgICByZXR1cm4gcmVh
ZGVyLnJlYWQoKTsKLSAgfSkudGhlbigoKSA9PiB7Ci0gICAgYXNzZXJ0X2VxdWFscyhjb250cm9s
bGVyLmRlc2lyZWRTaXplLCAwIC0gMWUtMTYgLSAxIC0gMmUtMTYgKyAxZS0xNiArIDEgKyAyZS0x
NiwKLSAgICAgICdkZXNpcmVkU2l6ZSBtdXN0IGJlIGNhbGN1bGF0ZWQgdXNpbmcgZG91YmxlLXBy
ZWNpc2lvbiBmbG9hdGluZy1wb2ludCBhcml0aG1ldGljIChzdWJ0cmFjdGluZyBhIHRoaXJkIGNo
dW5rKScpOwotICB9KTsKLX0sICdGbG9hdGluZyBwb2ludCBhcml0aG1ldGljIG11c3QgbWFuaWZl
c3QgbmVhciAwICh0b3RhbCBlbmRzIHVwIHBvc2l0aXZlLCBhbmQgbm90IGNsYW1wZWQpJyk7Ci0K
LXByb21pc2VfdGVzdCgoKSA9PiB7Ci0gIGNvbnN0IHsgcmVhZGVyLCBjb250cm9sbGVyIH0gPSBz
ZXR1cFRlc3RTdHJlYW0oKTsKLQotICBjb250cm9sbGVyLmVucXVldWUoMmUtMTYpOwotICBhc3Nl
cnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDAgLSAyZS0xNiwgJ2Rlc2lyZWRTaXpl
IG11c3QgYmUgLTJlMTYgYWZ0ZXIgZW5xdWV1ZWluZyBzdWNoIGEgY2h1bmsnKTsKLQotICBjb250
cm9sbGVyLmVucXVldWUoMSk7Ci0gIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6
ZSwgMCAtIDJlLTE2IC0gMSwKLSAgICAnZGVzaXJlZFNpemUgbXVzdCBiZSBjYWxjdWxhdGVkIHVz
aW5nIGRvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgYXJpdGhtZXRpYyAoYWRkaW5nIGEg
c2Vjb25kIGNodW5rKScpOwotCi0gIHJldHVybiByZWFkZXIucmVhZCgpLnRoZW4oKCkgPT4gewot
ICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMCAtIDJlLTE2IC0gMSAr
IDJlLTE2LAotICAgICAgJ2Rlc2lyZWRTaXplIG11c3QgYmUgY2FsY3VsYXRlZCB1c2luZyBkb3Vi
bGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IGFyaXRobWV0aWMgKHN1YnRyYWN0aW5nIGEgY2h1
bmspJyk7Ci0KLSAgICByZXR1cm4gcmVhZGVyLnJlYWQoKTsKLSAgfSkudGhlbigoKSA9PiB7Ci0g
ICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAwLAotICAgICAgJ2Rlc2ly
ZWRTaXplIG11c3QgYmUgY2FsY3VsYXRlZCB1c2luZyBkb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5n
LXBvaW50IGFyaXRobWV0aWMgKHN1YnRyYWN0aW5nIGEgc2Vjb25kIGNodW5rKScpOwotICB9KTsK
LX0sICdGbG9hdGluZyBwb2ludCBhcml0aG1ldGljIG11c3QgbWFuaWZlc3QgbmVhciAwICh0b3Rh
bCBlbmRzIHVwIHplcm8pJyk7Ci0KLWZ1bmN0aW9uIHNldHVwVGVzdFN0cmVhbSgpIHsKLSAgY29u
c3Qgc3RyYXRlZ3kgPSB7Ci0gICAgc2l6ZSh4KSB7Ci0gICAgICByZXR1cm4geDsKLSAgICB9LAot
ICAgIGhpZ2hXYXRlck1hcms6IDAKLSAgfTsKLQotICBsZXQgY29udHJvbGxlcjsKLSAgY29uc3Qg
cnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGNvbnRyb2xs
ZXIgPSBjOwotICAgIH0KLSAgfSwgc3RyYXRlZ3kpOwotCi0gIHJldHVybiB7IHJlYWRlcjogcnMu
Z2V0UmVhZGVyKCksIGNvbnRyb2xsZXIgfTsKLX0KLQotZG9uZSgpOwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxl
LXN0cmVhbXMvZmxvYXRpbmctcG9pbnQtdG90YWwtcXVldWUtc2l6ZS5zZXJ2aWNld29ya2VyLmh0
dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2Zsb2F0aW5nLXBvaW50LXRvdGFsLXF1ZXVl
LXNpemUuc2VydmljZXdvcmtlci5odHRwcy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDA4NDBlZWI0Zjg1NzlhZmZmYjIzODhkZDI1MThmMGFhOTEwZWFhYWMuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMv
ZmxvYXRpbmctcG9pbnQtdG90YWwtcXVldWUtc2l6ZS5zZXJ2aWNld29ya2VyLmh0dHBzLWV4cGVj
dGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDcgKzAsMCBAQAotCi1QQVNTIFNlcnZpY2Ugd29y
a2VyIHRlc3Qgc2V0dXAgCi1QQVNTIEZsb2F0aW5nIHBvaW50IGFyaXRobWV0aWMgbXVzdCBtYW5p
ZmVzdCBuZWFyIE5VTUJFUi5NQVhfU0FGRV9JTlRFR0VSICh0b3RhbCBlbmRzIHVwIHBvc2l0aXZl
KSAKLVBBU1MgRmxvYXRpbmcgcG9pbnQgYXJpdGhtZXRpYyBtdXN0IG1hbmlmZXN0IG5lYXIgMCAo
dG90YWwgZW5kcyB1cCBwb3NpdGl2ZSwgYnV0IGNsYW1wZWQpIAotUEFTUyBGbG9hdGluZyBwb2lu
dCBhcml0aG1ldGljIG11c3QgbWFuaWZlc3QgbmVhciAwICh0b3RhbCBlbmRzIHVwIHBvc2l0aXZl
LCBhbmQgbm90IGNsYW1wZWQpIAotUEFTUyBGbG9hdGluZyBwb2ludCBhcml0aG1ldGljIG11c3Qg
bWFuaWZlc3QgbmVhciAwICh0b3RhbCBlbmRzIHVwIHplcm8pIAotCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUt
c3RyZWFtcy9mbG9hdGluZy1wb2ludC10b3RhbC1xdWV1ZS1zaXplLnNlcnZpY2V3b3JrZXIuaHR0
cHMuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2Zsb2F0aW5nLXBvaW50LXRvdGFsLXF1ZXVlLXNpemUuc2Vy
dmljZXdvcmtlci5odHRwcy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZWI3
YzllNTNkZTQxNjBjZmJlMDY0ZjAyMmUyMjUwZGFiYzM3ZGQwLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2Zsb2F0aW5nLXBvaW50LXRv
dGFsLXF1ZXVlLXNpemUuc2VydmljZXdvcmtlci5odHRwcy5odG1sCisrKyAvZGV2L251bGwKQEAg
LTEsMTIgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08
dGl0bGU+ZmxvYXRpbmctcG9pbnQtdG90YWwtcXVldWUtc2l6ZS5qcyBzZXJ2aWNlIHdvcmtlciB3
cmFwcGVyIGZpbGU8L3RpdGxlPgotCi08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVz
cy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9y
dC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdv
cmtlci9yZXNvdXJjZXMvdGVzdC1oZWxwZXJzLnN1Yi5qcyI+PC9zY3JpcHQ+Ci0KLTxzY3JpcHQ+
Ci0ndXNlIHN0cmljdCc7Ci1zZXJ2aWNlX3dvcmtlcl90ZXN0KCdmbG9hdGluZy1wb2ludC10b3Rh
bC1xdWV1ZS1zaXplLmpzJywgJ1NlcnZpY2Ugd29ya2VyIHRlc3Qgc2V0dXAnKTsKLTwvc2NyaXB0
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZmxvYXRpbmctcG9pbnQtdG90YWwtcXVldWUtc2l6
ZS5zaGFyZWR3b3JrZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZmxvYXRpbmctcG9pbnQt
dG90YWwtcXVldWUtc2l6ZS5zaGFyZWR3b3JrZXItZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwOWQ1ZDI1MDlkNzg0N2U4Y2Q2ZmU2NjA2YWE2MGNkZDMzYWE0NzRl
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJl
YW1zL2Zsb2F0aW5nLXBvaW50LXRvdGFsLXF1ZXVlLXNpemUuc2hhcmVkd29ya2VyLWV4cGVjdGVk
LnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotQ09OU09MRSBNRVNTQUdFOiBSZWZl
cmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogU2hhcmVkV29ya2VyCi0KLUhhcm5lc3Mg
RXJyb3IgKEZBSUwpLCBtZXNzYWdlID0gUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFi
bGU6IFNoYXJlZFdvcmtlcgotCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2Zsb2F0aW5nLXBv
aW50LXRvdGFsLXF1ZXVlLXNpemUuc2hhcmVkd29ya2VyLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9mbG9h
dGluZy1wb2ludC10b3RhbC1xdWV1ZS1zaXplLnNoYXJlZHdvcmtlci5odG1sCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAxN2JlNzQ2MjIwZmRlODkwNGMxYTg0MmY3YjYyYTVmYTRiOTZi
ZDdlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1z
dHJlYW1zL2Zsb2F0aW5nLXBvaW50LXRvdGFsLXF1ZXVlLXNpemUuc2hhcmVkd29ya2VyLmh0bWwK
KysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxtZXRhIGNo
YXJzZXQ9InV0Zi04Ij4KLTx0aXRsZT5mbG9hdGluZy1wb2ludC10b3RhbC1xdWV1ZS1zaXplLmpz
IHNoYXJlZCB3b3JrZXIgd3JhcHBlciBmaWxlPC90aXRsZT4KLQotPHNjcmlwdCBzcmM9Ii9yZXNv
dXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMv
dGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotCi08c2NyaXB0PgotJ3VzZSBzdHJpY3Qn
OwotZmV0Y2hfdGVzdHNfZnJvbV93b3JrZXIobmV3IFNoYXJlZFdvcmtlcignZmxvYXRpbmctcG9p
bnQtdG90YWwtcXVldWUtc2l6ZS5qcycpKTsKLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0
cmVhbXMvZ2FyYmFnZS1jb2xsZWN0aW9uLmFueS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9n
YXJiYWdlLWNvbGxlY3Rpb24uYW55LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMTBmNTBhMGMx
Mzg1ZGI2MTA3ZDM0NmQ5NTUxZjBmNzEwZTZkNTJiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0
cmVhbXMvZ2FyYmFnZS1jb2xsZWN0aW9uLmFueS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw2IEBA
CisKK1BBU1MgUmVhZGFibGVTdHJlYW1Db250cm9sbGVyIG1ldGhvZHMgc2hvdWxkIGNvbnRpbnVl
IHdvcmtpbmcgcHJvcGVybHkgd2hlbiBzY3JpcHRzIGxvc2UgdGhlaXIgcmVmZXJlbmNlIHRvIHRo
ZSByZWFkYWJsZSBzdHJlYW0gCitQQVNTIFJlYWRhYmxlU3RyZWFtIGNsb3NlZCBwcm9taXNlIHNo
b3VsZCBmdWxmaWxsIGV2ZW4gaWYgdGhlIHN0cmVhbSBhbmQgcmVhZGVyIEpTIHJlZmVyZW5jZXMg
YXJlIGxvc3QgCitQQVNTIFJlYWRhYmxlU3RyZWFtIGNsb3NlZCBwcm9taXNlIHNob3VsZCByZWpl
Y3QgZXZlbiBpZiBzdHJlYW0gYW5kIHJlYWRlciBKUyByZWZlcmVuY2VzIGFyZSBsb3N0IAorUEFT
UyBHYXJiYWdlLWNvbGxlY3RpbmcgYSBSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIgc2hvdWxk
IG5vdCB1bmxvY2sgaXRzIHN0cmVhbSAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZ2FyYmFn
ZS1jb2xsZWN0aW9uLmFueS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZ2FyYmFnZS1jb2xsZWN0aW9uLmFu
eS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjIzODI5MTM1MjhlNjkzYjNhNWQ1NmM2NjBhNDUwNjA5ODBiNTQ4
YzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9nYXJiYWdlLWNvbGxlY3Rpb24uYW55
Lmh0bWwKQEAgLTAsMCArMSBAQAorPCEtLSBUaGlzIGZpbGUgaXMgcmVxdWlyZWQgZm9yIFdlYktp
dCB0ZXN0IGluZnJhc3RydWN0dXJlIHRvIHJ1biB0aGUgdGVtcGxhdGVkIHRlc3QgLS0+ClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZ2FyYmFnZS1j
b2xsZWN0aW9uLmFueS5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2dhcmJhZ2UtY29sbGVjdGlvbi5hbnkuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZGFkMGFkMTUzNWE1YmYxMDI0NWJmMjkyZDVmYTNiZTNlNGI4OWY1ZAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2dhcmJhZ2UtY29sbGVjdGlvbi5hbnkuanMKQEAg
LTAsMCArMSw3MCBAQAorLy8gTUVUQTogZ2xvYmFsPXdpbmRvdyx3b3JrZXIsanNzaGVsbAorLy8g
TUVUQTogc2NyaXB0PS4uL3Jlc291cmNlcy90ZXN0LXV0aWxzLmpzCisndXNlIHN0cmljdCc7CisK
K3Byb21pc2VfdGVzdCgoKSA9PiB7CisKKyAgbGV0IGNvbnRyb2xsZXI7CisgIG5ldyBSZWFkYWJs
ZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgY29udHJvbGxlciA9IGM7CisgICAgfQor
ICB9KTsKKworICBnYXJiYWdlQ29sbGVjdCgpOworCisgIHJldHVybiBkZWxheSg1MCkudGhlbigo
KSA9PiB7CisgICAgY29udHJvbGxlci5jbG9zZSgpOworICAgIGFzc2VydF90aHJvd3NfanMoVHlw
ZUVycm9yLCAoKSA9PiBjb250cm9sbGVyLmNsb3NlKCksICdjbG9zZSBzaG91bGQgdGhyb3cgYSBU
eXBlRXJyb3IgdGhlIHNlY29uZCB0aW1lJyk7CisgICAgY29udHJvbGxlci5lcnJvcigpOworICB9
KTsKKworfSwgJ1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlciBtZXRob2RzIHNob3VsZCBjb250aW51
ZSB3b3JraW5nIHByb3Blcmx5IHdoZW4gc2NyaXB0cyBsb3NlIHRoZWlyIHJlZmVyZW5jZSB0byB0
aGUgJyArCisgICAncmVhZGFibGUgc3RyZWFtJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisK
KyAgbGV0IGNvbnRyb2xsZXI7CisKKyAgY29uc3QgY2xvc2VkUHJvbWlzZSA9IG5ldyBSZWFkYWJs
ZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgY29udHJvbGxlciA9IGM7CisgICAgfQor
ICB9KS5nZXRSZWFkZXIoKS5jbG9zZWQ7CisKKyAgZ2FyYmFnZUNvbGxlY3QoKTsKKworICByZXR1
cm4gZGVsYXkoNTApLnRoZW4oKCkgPT4gY29udHJvbGxlci5jbG9zZSgpKS50aGVuKCgpID0+IGNs
b3NlZFByb21pc2UpOworCit9LCAnUmVhZGFibGVTdHJlYW0gY2xvc2VkIHByb21pc2Ugc2hvdWxk
IGZ1bGZpbGwgZXZlbiBpZiB0aGUgc3RyZWFtIGFuZCByZWFkZXIgSlMgcmVmZXJlbmNlcyBhcmUg
bG9zdCcpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisKKyAgY29uc3QgdGhlRXJyb3IgPSBuZXcg
RXJyb3IoJ2JvbycpOworICBsZXQgY29udHJvbGxlcjsKKworICBjb25zdCBjbG9zZWRQcm9taXNl
ID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjb250cm9sbGVy
ID0gYzsKKyAgICB9CisgIH0pLmdldFJlYWRlcigpLmNsb3NlZDsKKworICBnYXJiYWdlQ29sbGVj
dCgpOworCisgIHJldHVybiBkZWxheSg1MCkudGhlbigoKSA9PiBjb250cm9sbGVyLmVycm9yKHRo
ZUVycm9yKSkKKyAgICAgICAgICAgICAgICAgIC50aGVuKCgpID0+IHByb21pc2VfcmVqZWN0c19l
eGFjdGx5KHQsIHRoZUVycm9yLCBjbG9zZWRQcm9taXNlKSk7CisKK30sICdSZWFkYWJsZVN0cmVh
bSBjbG9zZWQgcHJvbWlzZSBzaG91bGQgcmVqZWN0IGV2ZW4gaWYgc3RyZWFtIGFuZCByZWFkZXIg
SlMgcmVmZXJlbmNlcyBhcmUgbG9zdCcpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworCisgIGNv
bnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHt9KTsKKworICBycy5nZXRSZWFkZXIoKTsKKwor
ICBnYXJiYWdlQ29sbGVjdCgpOworCisgIHJldHVybiBkZWxheSg1MCkudGhlbigoKSA9PiBhc3Nl
cnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4gcnMuZ2V0UmVhZGVyKCksCisgICAgJ29sZCBy
ZWFkZXIgc2hvdWxkIHN0aWxsIGJlIGxvY2tpbmcgdGhlIHN0cmVhbSBldmVuIGFmdGVyIGdhcmJh
Z2UgY29sbGVjdGlvbicpKTsKKworfSwgJ0dhcmJhZ2UtY29sbGVjdGluZyBhIFJlYWRhYmxlU3Ry
ZWFtRGVmYXVsdFJlYWRlciBzaG91bGQgbm90IHVubG9jayBpdHMgc3RyZWFtJyk7CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
cmVhZGFibGUtc3RyZWFtcy9nYXJiYWdlLWNvbGxlY3Rpb24uYW55Lndvcmtlci1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
cmVhZGFibGUtc3RyZWFtcy9nYXJiYWdlLWNvbGxlY3Rpb24uYW55Lndvcmtlci1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMDEwZjUwYTBjMTM4NWRiNjEwN2QzNDZkOTU1MWYwZjcxMGU2ZDUyYgot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2dhcmJhZ2UtY29sbGVjdGlvbi5hbnkud29y
a2VyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDYgQEAKKworUEFTUyBSZWFkYWJsZVN0cmVhbUNv
bnRyb2xsZXIgbWV0aG9kcyBzaG91bGQgY29udGludWUgd29ya2luZyBwcm9wZXJseSB3aGVuIHNj
cmlwdHMgbG9zZSB0aGVpciByZWZlcmVuY2UgdG8gdGhlIHJlYWRhYmxlIHN0cmVhbSAKK1BBU1Mg
UmVhZGFibGVTdHJlYW0gY2xvc2VkIHByb21pc2Ugc2hvdWxkIGZ1bGZpbGwgZXZlbiBpZiB0aGUg
c3RyZWFtIGFuZCByZWFkZXIgSlMgcmVmZXJlbmNlcyBhcmUgbG9zdCAKK1BBU1MgUmVhZGFibGVT
dHJlYW0gY2xvc2VkIHByb21pc2Ugc2hvdWxkIHJlamVjdCBldmVuIGlmIHN0cmVhbSBhbmQgcmVh
ZGVyIEpTIHJlZmVyZW5jZXMgYXJlIGxvc3QgCitQQVNTIEdhcmJhZ2UtY29sbGVjdGluZyBhIFJl
YWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlciBzaG91bGQgbm90IHVubG9jayBpdHMgc3RyZWFtIAor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9nYXJiYWdlLWNvbGxlY3Rpb24uYW55Lndvcmtlci5o
dG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
L3JlYWRhYmxlLXN0cmVhbXMvZ2FyYmFnZS1jb2xsZWN0aW9uLmFueS53b3JrZXIuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4yMzgyOTEzNTI4ZTY5M2IzYTVkNTZjNjYwYTQ1MDYwOTgwYjU0OGMzCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
dHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZ2FyYmFnZS1jb2xsZWN0aW9uLmFueS53b3JrZXIuaHRt
bApAQCAtMCwwICsxIEBACis8IS0tIFRoaXMgZmlsZSBpcyByZXF1aXJlZCBmb3IgV2ViS2l0IHRl
c3QgaW5mcmFzdHJ1Y3R1cmUgdG8gcnVuIHRoZSB0ZW1wbGF0ZWQgdGVzdCAtLT4KXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9nYXJiYWdlLWNvbGxl
Y3Rpb24uZGVkaWNhdGVkd29ya2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2dhcmJhZ2Ut
Y29sbGVjdGlvbi5kZWRpY2F0ZWR3b3JrZXItZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMTBmNTBhMGMxMzg1ZGI2MTA3ZDM0NmQ5NTUxZjBmNzEwZTZkNTJiLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1z
L2dhcmJhZ2UtY29sbGVjdGlvbi5kZWRpY2F0ZWR3b3JrZXItZXhwZWN0ZWQudHh0CisrKyAvZGV2
L251bGwKQEAgLTEsNiArMCwwIEBACi0KLVBBU1MgUmVhZGFibGVTdHJlYW1Db250cm9sbGVyIG1l
dGhvZHMgc2hvdWxkIGNvbnRpbnVlIHdvcmtpbmcgcHJvcGVybHkgd2hlbiBzY3JpcHRzIGxvc2Ug
dGhlaXIgcmVmZXJlbmNlIHRvIHRoZSByZWFkYWJsZSBzdHJlYW0gCi1QQVNTIFJlYWRhYmxlU3Ry
ZWFtIGNsb3NlZCBwcm9taXNlIHNob3VsZCBmdWxmaWxsIGV2ZW4gaWYgdGhlIHN0cmVhbSBhbmQg
cmVhZGVyIEpTIHJlZmVyZW5jZXMgYXJlIGxvc3QgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIGNsb3Nl
ZCBwcm9taXNlIHNob3VsZCByZWplY3QgZXZlbiBpZiBzdHJlYW0gYW5kIHJlYWRlciBKUyByZWZl
cmVuY2VzIGFyZSBsb3N0IAotUEFTUyBHYXJiYWdlLWNvbGxlY3RpbmcgYSBSZWFkYWJsZVN0cmVh
bURlZmF1bHRSZWFkZXIgc2hvdWxkIG5vdCB1bmxvY2sgaXRzIHN0cmVhbSAKLQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3Jl
YWRhYmxlLXN0cmVhbXMvZ2FyYmFnZS1jb2xsZWN0aW9uLmRlZGljYXRlZHdvcmtlci5odG1sIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRh
YmxlLXN0cmVhbXMvZ2FyYmFnZS1jb2xsZWN0aW9uLmRlZGljYXRlZHdvcmtlci5odG1sCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZmY5NzY4NzRmM2QwNWRjY2Y4MWU3ODEwOGYzNmQw
MTNhMGJmNjZhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFk
YWJsZS1zdHJlYW1zL2dhcmJhZ2UtY29sbGVjdGlvbi5kZWRpY2F0ZWR3b3JrZXIuaHRtbAorKysg
L2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNl
dD0idXRmLTgiPgotPHRpdGxlPmdhcmJhZ2UtY29sbGVjdGlvbi5qcyBkZWRpY2F0ZWQgd29ya2Vy
IHdyYXBwZXIgZmlsZTwvdGl0bGU+Ci0KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJu
ZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVw
b3J0LmpzIj48L3NjcmlwdD4KLQotPHNjcmlwdD4KLSd1c2Ugc3RyaWN0JzsKLWZldGNoX3Rlc3Rz
X2Zyb21fd29ya2VyKG5ldyBXb3JrZXIoJ2dhcmJhZ2UtY29sbGVjdGlvbi5qcycpKTsKLTwvc2Ny
aXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZ2FyYmFnZS1jb2xsZWN0aW9uLmh0bWwgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFi
bGUtc3RyZWFtcy9nYXJiYWdlLWNvbGxlY3Rpb24uaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggYjhiZGUxMGY2NWQ0YWIzZWY4OGRjODQzYTk5YzU5ZWRjNTkxY2FhMi4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9nYXJi
YWdlLWNvbGxlY3Rpb24uaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAKLTwhRE9D
VFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHRpdGxlPmdhcmJhZ2UtY29sbGVj
dGlvbi5qcyBicm93c2VyIGNvbnRleHQgd3JhcHBlciBmaWxlPC90aXRsZT4KLQotPHNjcmlwdCBz
cmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9y
ZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotCi08c2NyaXB0IHNyYz0i
Li4vcmVzb3VyY2VzL3Rlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgotCi08c2NyaXB0IHNyYz0iZ2Fy
YmFnZS1jb2xsZWN0aW9uLmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2dh
cmJhZ2UtY29sbGVjdGlvbi5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2dhcmJhZ2UtY29sbGVjdGlvbi5qcwpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmQxNjUyNmU1YTg1YjI1MjczMTVhY2IzYjZh
ZGQzMzhhMzc0YmRjZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
cmVhZGFibGUtc3RyZWFtcy9nYXJiYWdlLWNvbGxlY3Rpb24uanMKKysrIC9kZXYvbnVsbApAQCAt
MSw3NSArMCwwIEBACi0ndXNlIHN0cmljdCc7Ci0KLWlmIChzZWxmLmltcG9ydFNjcmlwdHMpIHsK
LSAgc2VsZi5pbXBvcnRTY3JpcHRzKCcuLi9yZXNvdXJjZXMvdGVzdC11dGlscy5qcycpOwotICBz
ZWxmLmltcG9ydFNjcmlwdHMoJy9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMnKTsKLX0KLQotcHJv
bWlzZV90ZXN0KCgpID0+IHsKLQotICBsZXQgY29udHJvbGxlcjsKLSAgbmV3IFJlYWRhYmxlU3Ry
ZWFtKHsKLSAgICBzdGFydChjKSB7Ci0gICAgICBjb250cm9sbGVyID0gYzsKLSAgICB9Ci0gIH0p
OwotCi0gIGdhcmJhZ2VDb2xsZWN0KCk7Ci0KLSAgcmV0dXJuIGRlbGF5KDUwKS50aGVuKCgpID0+
IHsKLSAgICBjb250cm9sbGVyLmNsb3NlKCk7Ci0gICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVy
cm9yKCksICgpID0+IGNvbnRyb2xsZXIuY2xvc2UoKSwgJ2Nsb3NlIHNob3VsZCB0aHJvdyBhIFR5
cGVFcnJvciB0aGUgc2Vjb25kIHRpbWUnKTsKLSAgICBjb250cm9sbGVyLmVycm9yKCk7Ci0gIH0p
OwotCi19LCAnUmVhZGFibGVTdHJlYW1Db250cm9sbGVyIG1ldGhvZHMgc2hvdWxkIGNvbnRpbnVl
IHdvcmtpbmcgcHJvcGVybHkgd2hlbiBzY3JpcHRzIGxvc2UgdGhlaXIgcmVmZXJlbmNlIHRvIHRo
ZSAnICsKLSAgICdyZWFkYWJsZSBzdHJlYW0nKTsKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLQot
ICBsZXQgY29udHJvbGxlcjsKLQotICBjb25zdCBjbG9zZWRQcm9taXNlID0gbmV3IFJlYWRhYmxl
U3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0gICAgICBjb250cm9sbGVyID0gYzsKLSAgICB9Ci0g
IH0pLmdldFJlYWRlcigpLmNsb3NlZDsKLQotICBnYXJiYWdlQ29sbGVjdCgpOwotCi0gIHJldHVy
biBkZWxheSg1MCkudGhlbigoKSA9PiBjb250cm9sbGVyLmNsb3NlKCkpLnRoZW4oKCkgPT4gY2xv
c2VkUHJvbWlzZSk7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbSBjbG9zZWQgcHJvbWlzZSBzaG91bGQg
ZnVsZmlsbCBldmVuIGlmIHRoZSBzdHJlYW0gYW5kIHJlYWRlciBKUyByZWZlcmVuY2VzIGFyZSBs
b3N0Jyk7Ci0KLXByb21pc2VfdGVzdCh0ID0+IHsKLQotICBjb25zdCB0aGVFcnJvciA9IG5ldyBF
cnJvcignYm9vJyk7Ci0gIGxldCBjb250cm9sbGVyOwotCi0gIGNvbnN0IGNsb3NlZFByb21pc2Ug
PSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGNvbnRyb2xsZXIg
PSBjOwotICAgIH0KLSAgfSkuZ2V0UmVhZGVyKCkuY2xvc2VkOwotCi0gIGdhcmJhZ2VDb2xsZWN0
KCk7Ci0KLSAgcmV0dXJuIGRlbGF5KDUwKS50aGVuKCgpID0+IGNvbnRyb2xsZXIuZXJyb3IodGhl
RXJyb3IpKQotICAgICAgICAgICAgICAgICAgLnRoZW4oKCkgPT4gcHJvbWlzZV9yZWplY3RzKHQs
IHRoZUVycm9yLCBjbG9zZWRQcm9taXNlKSk7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbSBjbG9zZWQg
cHJvbWlzZSBzaG91bGQgcmVqZWN0IGV2ZW4gaWYgc3RyZWFtIGFuZCByZWFkZXIgSlMgcmVmZXJl
bmNlcyBhcmUgbG9zdCcpOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotCi0gIGNvbnN0IHJzID0g
bmV3IFJlYWRhYmxlU3RyZWFtKHt9KTsKLQotICBycy5nZXRSZWFkZXIoKTsKLQotICBnYXJiYWdl
Q29sbGVjdCgpOwotCi0gIHJldHVybiBkZWxheSg1MCkudGhlbigoKSA9PiBhc3NlcnRfdGhyb3dz
KG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gcnMuZ2V0UmVhZGVyKCksCi0gICAgJ29sZCByZWFkZXIg
c2hvdWxkIHN0aWxsIGJlIGxvY2tpbmcgdGhlIHN0cmVhbSBldmVuIGFmdGVyIGdhcmJhZ2UgY29s
bGVjdGlvbicpKTsKLQotfSwgJ0dhcmJhZ2UtY29sbGVjdGluZyBhIFJlYWRhYmxlU3RyZWFtRGVm
YXVsdFJlYWRlciBzaG91bGQgbm90IHVubG9jayBpdHMgc3RyZWFtJyk7Ci0KLWRvbmUoKTsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2dhcmJhZ2UtY29sbGVjdGlvbi5zZXJ2aWNld29ya2VyLmh0
dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2dhcmJhZ2UtY29sbGVjdGlvbi5zZXJ2aWNl
d29ya2VyLmh0dHBzLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ZWZmYjliNTI4YjAzMmFhNmZhMDQ1MWIwODRlNjEwOTg4M2RlMDQ2ZS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9nYXJiYWdlLWNvbGxl
Y3Rpb24uc2VydmljZXdvcmtlci5odHRwcy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAt
MSw3ICswLDAgQEAKLQotUEFTUyBTZXJ2aWNlIHdvcmtlciB0ZXN0IHNldHVwIAotUEFTUyBSZWFk
YWJsZVN0cmVhbUNvbnRyb2xsZXIgbWV0aG9kcyBzaG91bGQgY29udGludWUgd29ya2luZyBwcm9w
ZXJseSB3aGVuIHNjcmlwdHMgbG9zZSB0aGVpciByZWZlcmVuY2UgdG8gdGhlIHJlYWRhYmxlIHN0
cmVhbSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gY2xvc2VkIHByb21pc2Ugc2hvdWxkIGZ1bGZpbGwg
ZXZlbiBpZiB0aGUgc3RyZWFtIGFuZCByZWFkZXIgSlMgcmVmZXJlbmNlcyBhcmUgbG9zdCAKLVBB
U1MgUmVhZGFibGVTdHJlYW0gY2xvc2VkIHByb21pc2Ugc2hvdWxkIHJlamVjdCBldmVuIGlmIHN0
cmVhbSBhbmQgcmVhZGVyIEpTIHJlZmVyZW5jZXMgYXJlIGxvc3QgCi1QQVNTIEdhcmJhZ2UtY29s
bGVjdGluZyBhIFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlciBzaG91bGQgbm90IHVubG9jayBp
dHMgc3RyZWFtIAotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9nYXJiYWdlLWNvbGxlY3Rpb24u
c2VydmljZXdvcmtlci5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZ2FyYmFnZS1jb2xsZWN0aW9u
LnNlcnZpY2V3b3JrZXIuaHR0cHMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ZmZmNzJlN2EzODcxM2VkOTg2NmZkNzc5YTM0MDI0OWNhYzJmNDJjZC4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9nYXJiYWdlLWNvbGxl
Y3Rpb24uc2VydmljZXdvcmtlci5odHRwcy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAs
MCBAQAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08dGl0bGU+Z2Fy
YmFnZS1jb2xsZWN0aW9uLmpzIHNlcnZpY2Ugd29ya2VyIHdyYXBwZXIgZmlsZTwvdGl0bGU+Ci0K
LTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3Jp
cHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3Jp
cHQgc3JjPSIvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL3Jlc291cmNlcy90ZXN0LWhl
bHBlcnMuc3ViLmpzIj48L3NjcmlwdD4KLQotPHNjcmlwdD4KLSd1c2Ugc3RyaWN0JzsKLXNlcnZp
Y2Vfd29ya2VyX3Rlc3QoJ2dhcmJhZ2UtY29sbGVjdGlvbi5qcycsICdTZXJ2aWNlIHdvcmtlciB0
ZXN0IHNldHVwJyk7Ci08L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2dhcmJhZ2Ut
Y29sbGVjdGlvbi5zaGFyZWR3b3JrZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZ2FyYmFn
ZS1jb2xsZWN0aW9uLnNoYXJlZHdvcmtlci1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDA5ZDVkMjUwOWQ3ODQ3ZThjZDZmZTY2MDZhYTYwY2RkMzNhYTQ3NGUuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMv
Z2FyYmFnZS1jb2xsZWN0aW9uLnNoYXJlZHdvcmtlci1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVs
bApAQCAtMSw1ICswLDAgQEAKLUNPTlNPTEUgTUVTU0FHRTogUmVmZXJlbmNlRXJyb3I6IENhbid0
IGZpbmQgdmFyaWFibGU6IFNoYXJlZFdvcmtlcgotCi1IYXJuZXNzIEVycm9yIChGQUlMKSwgbWVz
c2FnZSA9IFJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBTaGFyZWRXb3JrZXIK
LQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9nYXJiYWdlLWNvbGxlY3Rpb24uc2hhcmVkd29y
a2VyLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9nYXJiYWdlLWNvbGxlY3Rpb24uc2hhcmVkd29ya2VyLmh0
bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUxYmQzNmQ1ZGI1Njk4ZGM5ZWE2NDMx
MzA0MTM3NmViZmU1OGQyNjQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJl
YW1zL3JlYWRhYmxlLXN0cmVhbXMvZ2FyYmFnZS1jb2xsZWN0aW9uLnNoYXJlZHdvcmtlci5odG1s
CisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBj
aGFyc2V0PSJ1dGYtOCI+Ci08dGl0bGU+Z2FyYmFnZS1jb2xsZWN0aW9uLmpzIHNoYXJlZCB3b3Jr
ZXIgd3JhcHBlciBmaWxlPC90aXRsZT4KLQotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhh
cm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3Ny
ZXBvcnQuanMiPjwvc2NyaXB0PgotCi08c2NyaXB0PgotJ3VzZSBzdHJpY3QnOwotZmV0Y2hfdGVz
dHNfZnJvbV93b3JrZXIobmV3IFNoYXJlZFdvcmtlcignZ2FyYmFnZS1jb2xsZWN0aW9uLmpzJykp
OwotPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9nZW5lcmFsLmFueS1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvcmVhZGFibGUtc3RyZWFtcy9nZW5lcmFsLmFueS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MjM5Yjc5MWExMWViZGQxNzg2NzRjMjgyNjMyYTUzNGE0NTZhNDVlNgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9y
ZWFkYWJsZS1zdHJlYW1zL2dlbmVyYWwuYW55LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQ0IEBA
CisKK1BBU1MgUmVhZGFibGVTdHJlYW0gY2FuIGJlIGNvbnN0cnVjdGVkIHdpdGggbm8gZXJyb3Jz
IAorUEFTUyBSZWFkYWJsZVN0cmVhbSBjYW4ndCBiZSBjb25zdHJ1Y3RlZCB3aXRoIGdhcmJhZ2Ug
CitGQUlMIFJlYWRhYmxlU3RyZWFtIGNhbid0IGJlIGNvbnN0cnVjdGVkIHdpdGggYW4gaW52YWxp
ZCB0eXBlIGFzc2VydF90aHJvd3NfanM6IGNvbnN0cnVjdG9yIHNob3VsZCB0aHJvdyB3aGVuIHRo
ZSB0eXBlIGlzIG51bGwgZnVuY3Rpb24gIigpID0+IG5ldyBSZWFkYWJsZVN0cmVhbSh7IHR5cGU6
IG51bGwgfSkiIHRocmV3IG9iamVjdCAiUmFuZ2VFcnJvcjogSW52YWxpZCB0eXBlIGZvciB1bmRl
cmx5aW5nIHNvdXJjZSIgKCJSYW5nZUVycm9yIikgZXhwZWN0ZWQgaW5zdGFuY2Ugb2YgZnVuY3Rp
b24gImZ1bmN0aW9uIFR5cGVFcnJvcigpIHsKKyAgICBbbmF0aXZlIGNvZGVdCit9IiAoIlR5cGVF
cnJvciIpCitQQVNTIFJlYWRhYmxlU3RyZWFtIGNvbnN0cnVjdG9yIHNob3VsZCB0aHJvdyBmb3Ig
bm9uLWZ1bmN0aW9uIHN0YXJ0IGFyZ3VtZW50cyAKK0ZBSUwgUmVhZGFibGVTdHJlYW0gY29uc3Ry
dWN0b3Igd2lsbCBub3QgdG9sZXJhdGUgaW5pdGlhbCBnYXJiYWdlIGFzIGNhbmNlbCBhcmd1bWVu
dCBhc3NlcnRfdGhyb3dzX2pzOiBjb25zdHJ1Y3RvciBzaG91bGQgdGhyb3cgZnVuY3Rpb24gIigp
ID0+IG5ldyBSZWFkYWJsZVN0cmVhbSh7IGNhbmNlbDogJzInIH0pIiBkaWQgbm90IHRocm93CitG
QUlMIFJlYWRhYmxlU3RyZWFtIGNvbnN0cnVjdG9yIHdpbGwgbm90IHRvbGVyYXRlIGluaXRpYWwg
Z2FyYmFnZSBhcyBwdWxsIGFyZ3VtZW50IGFzc2VydF90aHJvd3NfanM6IGNvbnN0cnVjdG9yIHNo
b3VsZCB0aHJvdyBmdW5jdGlvbiAiKCkgPT4gbmV3IFJlYWRhYmxlU3RyZWFtKHsgcHVsbDogeyB9
IH0pIiBkaWQgbm90IHRocm93CitQQVNTIFJlYWRhYmxlU3RyZWFtIHN0YXJ0IHNob3VsZCBiZSBj
YWxsZWQgd2l0aCB0aGUgcHJvcGVyIHRoaXNBcmcgCitQQVNTIFJlYWRhYmxlU3RyZWFtIHN0YXJ0
IGNvbnRyb2xsZXIgcGFyYW1ldGVyIHNob3VsZCBiZSBleHRlbnNpYmxlIAorRkFJTCBkZWZhdWx0
IFJlYWRhYmxlU3RyZWFtIGdldFJlYWRlcigpIHNob3VsZCBvbmx5IGFjY2VwdCBtb2RlOnVuZGVm
aW5lZCBhc3NlcnRfdGhyb3dzX2pzOiBmdW5jdGlvbiAiKCkgPT4gKG5ldyBSZWFkYWJsZVN0cmVh
bSgpKS5nZXRSZWFkZXIoeyBtb2RlOiAncG90YXRvJyB9KSIgdGhyZXcgb2JqZWN0ICJSYW5nZUVy
cm9yOiBJbnZhbGlkIG1vZGUgaXMgc3BlY2lmaWVkIiAoIlJhbmdlRXJyb3IiKSBleHBlY3RlZCBp
bnN0YW5jZSBvZiBmdW5jdGlvbiAiZnVuY3Rpb24gVHlwZUVycm9yKCkgeworICAgIFtuYXRpdmUg
Y29kZV0KK30iICgiVHlwZUVycm9yIikKK1BBU1MgUmVhZGFibGVTdHJlYW0gc2hvdWxkIGJlIGFi
bGUgdG8gY2FsbCBzdGFydCBtZXRob2Qgd2l0aGluIHByb3RvdHlwZSBjaGFpbiBvZiBpdHMgc291
cmNlIAorUEFTUyBSZWFkYWJsZVN0cmVhbSBzdGFydCBzaG91bGQgYmUgYWJsZSB0byByZXR1cm4g
YSBwcm9taXNlIAorUEFTUyBSZWFkYWJsZVN0cmVhbSBzdGFydCBzaG91bGQgYmUgYWJsZSB0byBy
ZXR1cm4gYSBwcm9taXNlIGFuZCByZWplY3QgaXQgCitQQVNTIFJlYWRhYmxlU3RyZWFtIHNob3Vs
ZCBiZSBhYmxlIHRvIGVucXVldWUgZGlmZmVyZW50IG9iamVjdHMuIAorUEFTUyBSZWFkYWJsZVN0
cmVhbTogaWYgcHVsbCByZWplY3RzLCBpdCBzaG91bGQgZXJyb3IgdGhlIHN0cmVhbSAKK1BBU1Mg
UmVhZGFibGVTdHJlYW06IHNob3VsZCBvbmx5IGNhbGwgcHVsbCBvbmNlIHVwb24gc3RhcnRpbmcg
dGhlIHN0cmVhbSAKK1BBU1MgUmVhZGFibGVTdHJlYW06IHNob3VsZCBjYWxsIHB1bGwgd2hlbiB0
cnlpbmcgdG8gcmVhZCBmcm9tIGEgc3RhcnRlZCwgZW1wdHkgc3RyZWFtIAorUEFTUyBSZWFkYWJs
ZVN0cmVhbTogc2hvdWxkIG9ubHkgY2FsbCBwdWxsIG9uY2Ugb24gYSBub24tZW1wdHkgc3RyZWFt
IHJlYWQgZnJvbSBiZWZvcmUgc3RhcnQgZnVsZmlsbHMgCitQQVNTIFJlYWRhYmxlU3RyZWFtOiBz
aG91bGQgb25seSBjYWxsIHB1bGwgb25jZSBvbiBhIG5vbi1lbXB0eSBzdHJlYW0gcmVhZCBmcm9t
IGFmdGVyIHN0YXJ0IGZ1bGZpbGxzIAorUEFTUyBSZWFkYWJsZVN0cmVhbTogc2hvdWxkIGNhbGwg
cHVsbCBpbiByZWFjdGlvbiB0byByZWFkKClpbmcgdGhlIGxhc3QgY2h1bmssIGlmIG5vdCBkcmFp
bmluZyAKK1BBU1MgUmVhZGFibGVTdHJlYW06IHNob3VsZCBub3QgY2FsbCBwdWxsKCkgaW4gcmVh
Y3Rpb24gdG8gcmVhZCgpaW5nIHRoZSBsYXN0IGNodW5rLCBpZiBkcmFpbmluZyAKK1BBU1MgUmVh
ZGFibGVTdHJlYW06IHNob3VsZCBub3QgY2FsbCBwdWxsIHVudGlsIHRoZSBwcmV2aW91cyBwdWxs
IGNhbGwncyBwcm9taXNlIGZ1bGZpbGxzIAorUEFTUyBSZWFkYWJsZVN0cmVhbTogc2hvdWxkIHB1
bGwgYWZ0ZXIgc3RhcnQsIGFuZCBhZnRlciBldmVyeSByZWFkIAorUEFTUyBSZWFkYWJsZVN0cmVh
bTogc2hvdWxkIG5vdCBjYWxsIHB1bGwgYWZ0ZXIgc3RhcnQgaWYgdGhlIHN0cmVhbSBpcyBub3cg
Y2xvc2VkIAorUEFTUyBSZWFkYWJsZVN0cmVhbTogc2hvdWxkIGNhbGwgcHVsbCBhZnRlciBlbnF1
ZXVlaW5nIGZyb20gaW5zaWRlIHB1bGwgKHdpdGggbm8gcmVhZCByZXF1ZXN0cyksIGlmIHN0cmF0
ZWd5IGFsbG93cyAKK1BBU1MgUmVhZGFibGVTdHJlYW0gcHVsbCBzaG91bGQgYmUgYWJsZSB0byBj
bG9zZSBhIHN0cmVhbS4gCitQQVNTIFJlYWRhYmxlU3RyZWFtIHB1bGwgc2hvdWxkIGJlIGFibGUg
dG8gZXJyb3IgYSBzdHJlYW0uIAorUEFTUyBSZWFkYWJsZVN0cmVhbSBwdWxsIHNob3VsZCBiZSBh
YmxlIHRvIGVycm9yIGEgc3RyZWFtIGFuZCB0aHJvdy4gCitQQVNTIFJlYWRhYmxlU3RyZWFtOiBl
bnF1ZXVlIHNob3VsZCB0aHJvdyB3aGVuIHRoZSBzdHJlYW0gaXMgcmVhZGFibGUgYnV0IGRyYWlu
aW5nIAorUEFTUyBSZWFkYWJsZVN0cmVhbTogZW5xdWV1ZSBzaG91bGQgdGhyb3cgd2hlbiB0aGUg
c3RyZWFtIGlzIGNsb3NlZCAKK1BBU1MgUmVhZGFibGVTdHJlYW06IHNob3VsZCBjYWxsIHVuZGVy
bHlpbmcgc291cmNlIG1ldGhvZHMgYXMgbWV0aG9kcyAKK1BBU1MgUmVhZGFibGVTdHJlYW06IGRl
c2lyZWRTaXplIHdoZW4gY2xvc2VkIAorUEFTUyBSZWFkYWJsZVN0cmVhbTogZGVzaXJlZFNpemUg
d2hlbiBlcnJvcmVkIAorRkFJTCBTdWJjbGFzc2luZyBSZWFkYWJsZVN0cmVhbSBzaG91bGQgd29y
ayBhc3NlcnRfdHJ1ZTogU3ViY2xhc3Mgb2JqZWN0IHNob3VsZCBiZSBhbiBpbnN0YW5jZSBvZiBT
dWJjbGFzcyBleHBlY3RlZCB0cnVlIGdvdCBmYWxzZQorUEFTUyBSZWFkYWJsZVN0cmVhbSBzdHJh
dGVnaWVzOiB0aGUgZGVmYXVsdCBzdHJhdGVneSBzaG91bGQgZ2l2ZSBkZXNpcmVkU2l6ZSBvZiAx
IHRvIHN0YXJ0LCBkZWNyZWFzaW5nIGJ5IDEgcGVyIGVucXVldWUgCitQQVNTIFJlYWRhYmxlU3Ry
ZWFtIHN0cmF0ZWdpZXM6IHRoZSBkZWZhdWx0IHN0cmF0ZWd5IHNob3VsZCBjb250aW51ZSBnaXZp
bmcgZGVzaXJlZFNpemUgb2YgMSBpZiB0aGUgY2h1bmtzIGFyZSByZWFkIGltbWVkaWF0ZWx5IAor
UEFTUyBSZWFkYWJsZVN0cmVhbSBpbnRlZ3JhdGlvbiB0ZXN0OiBhZGFwdGluZyBhIHJhbmRvbSBw
dXNoIHNvdXJjZSAKK1BBU1MgUmVhZGFibGVTdHJlYW0gaW50ZWdyYXRpb24gdGVzdDogYWRhcHRp
bmcgYSBzeW5jIHB1bGwgc291cmNlIAorUEFTUyBSZWFkYWJsZVN0cmVhbSBpbnRlZ3JhdGlvbiB0
ZXN0OiBhZGFwdGluZyBhbiBhc3luYyBwdWxsIHNvdXJjZSAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0
cmVhbXMvZ2VuZXJhbC5hbnkuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2dlbmVyYWwuYW55Lmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMjM4MjkxMzUyOGU2OTNiM2E1ZDU2YzY2MGE0NTA2MDk4MGI1NDhjMwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2dlbmVyYWwuYW55Lmh0bWwKQEAgLTAsMCArMSBAQAor
PCEtLSBUaGlzIGZpbGUgaXMgcmVxdWlyZWQgZm9yIFdlYktpdCB0ZXN0IGluZnJhc3RydWN0dXJl
IHRvIHJ1biB0aGUgdGVtcGxhdGVkIHRlc3QgLS0+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZ2VuZXJhbC5hbnkuanMgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9n
ZW5lcmFsLmFueS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NmI3OTNmZTE2YzkzMmUyZmYyOWQ3YTcwYTBmOGIz
M2ViMGU2NmNhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZ2VuZXJhbC5hbnkuanMK
QEAgLTAsMCArMSw4NDAgQEAKKy8vIE1FVEE6IGdsb2JhbD13aW5kb3csd29ya2VyLGpzc2hlbGwK
Ky8vIE1FVEE6IHNjcmlwdD0uLi9yZXNvdXJjZXMvdGVzdC11dGlscy5qcworLy8gTUVUQTogc2Ny
aXB0PS4uL3Jlc291cmNlcy9ycy11dGlscy5qcworJ3VzZSBzdHJpY3QnOworCitjb25zdCBlcnJv
cjEgPSBuZXcgRXJyb3IoJ2Vycm9yMScpOworZXJyb3IxLm5hbWUgPSAnZXJyb3IxJzsKKwordGVz
dCgoKSA9PiB7CisKKyAgbmV3IFJlYWRhYmxlU3RyZWFtKCk7IC8vIFJlYWRhYmxlU3RyZWFtIGNv
bnN0cnVjdGVkIHdpdGggbm8gcGFyYW1ldGVycworICBuZXcgUmVhZGFibGVTdHJlYW0oeyB9KTsg
Ly8gUmVhZGFibGVTdHJlYW0gY29uc3RydWN0ZWQgd2l0aCBhbiBlbXB0eSBvYmplY3QgYXMgcGFy
YW1ldGVyCisgIG5ldyBSZWFkYWJsZVN0cmVhbSh7IHR5cGU6IHVuZGVmaW5lZCB9KTsgLy8gUmVh
ZGFibGVTdHJlYW0gY29uc3RydWN0ZWQgd2l0aCB1bmRlZmluZWQgdHlwZQorICBuZXcgUmVhZGFi
bGVTdHJlYW0odW5kZWZpbmVkKTsgLy8gUmVhZGFibGVTdHJlYW0gY29uc3RydWN0ZWQgd2l0aCB1
bmRlZmluZWQgYXMgcGFyYW1ldGVyCisKKyAgbGV0IHg7CisgIG5ldyBSZWFkYWJsZVN0cmVhbSh4
KTsgLy8gUmVhZGFibGVTdHJlYW0gY29uc3RydWN0ZWQgd2l0aCBhbiB1bmRlZmluZWQgdmFyaWFi
bGUgYXMgcGFyYW1ldGVyCisKK30sICdSZWFkYWJsZVN0cmVhbSBjYW4gYmUgY29uc3RydWN0ZWQg
d2l0aCBubyBlcnJvcnMnKTsKKwordGVzdCgoKSA9PiB7CisKKyAgYXNzZXJ0X3Rocm93c19qcyhU
eXBlRXJyb3IsICgpID0+IG5ldyBSZWFkYWJsZVN0cmVhbShudWxsKSwgJ2NvbnN0cnVjdG9yIHNo
b3VsZCB0aHJvdyB3aGVuIHRoZSBzb3VyY2UgaXMgbnVsbCcpOworCit9LCAnUmVhZGFibGVTdHJl
YW0gY2FuXCd0IGJlIGNvbnN0cnVjdGVkIHdpdGggZ2FyYmFnZScpOworCit0ZXN0KCgpID0+IHsK
KworICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4gbmV3IFJlYWRhYmxlU3RyZWFt
KHsgdHlwZTogbnVsbCB9KSwKKyAgICAnY29uc3RydWN0b3Igc2hvdWxkIHRocm93IHdoZW4gdGhl
IHR5cGUgaXMgbnVsbCcpOworICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4gbmV3
IFJlYWRhYmxlU3RyZWFtKHsgdHlwZTogJycgfSksCisgICAgJ2NvbnN0cnVjdG9yIHNob3VsZCB0
aHJvdyB3aGVuIHRoZSB0eXBlIGlzIGVtcHR5IHN0cmluZycpOworICBhc3NlcnRfdGhyb3dzX2pz
KFR5cGVFcnJvciwgKCkgPT4gbmV3IFJlYWRhYmxlU3RyZWFtKHsgdHlwZTogJ2FzZGYnIH0pLAor
ICAgICdjb25zdHJ1Y3RvciBzaG91bGQgdGhyb3cgd2hlbiB0aGUgdHlwZSBpcyBhc2RmJyk7Cisg
IGFzc2VydF90aHJvd3NfZXhhY3RseSgKKyAgICBlcnJvcjEsCisgICAgKCkgPT4gbmV3IFJlYWRh
YmxlU3RyZWFtKHsgdHlwZTogeyBnZXQgdG9TdHJpbmcoKSB7IHRocm93IGVycm9yMTsgfSB9IH0p
LAorICAgICdjb25zdHJ1Y3RvciBzaG91bGQgdGhyb3cgd2hlbiBUb1N0cmluZygpIHRocm93cycK
KyAgKTsKKyAgYXNzZXJ0X3Rocm93c19leGFjdGx5KAorICAgIGVycm9yMSwKKyAgICAoKSA9PiBu
ZXcgUmVhZGFibGVTdHJlYW0oeyB0eXBlOiB7IHRvU3RyaW5nKCkgeyB0aHJvdyBlcnJvcjE7IH0g
fSB9KSwKKyAgICAnY29uc3RydWN0b3Igc2hvdWxkIHRocm93IHdoZW4gVG9TdHJpbmcoKSB0aHJv
d3MnCisgICk7CisKK30sICdSZWFkYWJsZVN0cmVhbSBjYW5cJ3QgYmUgY29uc3RydWN0ZWQgd2l0
aCBhbiBpbnZhbGlkIHR5cGUnKTsKKwordGVzdCgoKSA9PiB7CisKKyAgYXNzZXJ0X3Rocm93c19q
cyhUeXBlRXJyb3IsICgpID0+IHsKKyAgICBuZXcgUmVhZGFibGVTdHJlYW0oeyBzdGFydDogJ3Bv
dGF0bycgfSk7CisgIH0sICdjb25zdHJ1Y3RvciBzaG91bGQgdGhyb3cgd2hlbiBzdGFydCBpcyBu
b3QgYSBmdW5jdGlvbicpOworCit9LCAnUmVhZGFibGVTdHJlYW0gY29uc3RydWN0b3Igc2hvdWxk
IHRocm93IGZvciBub24tZnVuY3Rpb24gc3RhcnQgYXJndW1lbnRzJyk7CisKK3Rlc3QoKCkgPT4g
eworCisgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiBuZXcgUmVhZGFibGVTdHJl
YW0oeyBjYW5jZWw6ICcyJyB9KSwgJ2NvbnN0cnVjdG9yIHNob3VsZCB0aHJvdycpOworCit9LCAn
UmVhZGFibGVTdHJlYW0gY29uc3RydWN0b3Igd2lsbCBub3QgdG9sZXJhdGUgaW5pdGlhbCBnYXJi
YWdlIGFzIGNhbmNlbCBhcmd1bWVudCcpOworCit0ZXN0KCgpID0+IHsKKworICBhc3NlcnRfdGhy
b3dzX2pzKFR5cGVFcnJvciwgKCkgPT4gbmV3IFJlYWRhYmxlU3RyZWFtKHsgcHVsbDogeyB9IH0p
LCAnY29uc3RydWN0b3Igc2hvdWxkIHRocm93Jyk7CisKK30sICdSZWFkYWJsZVN0cmVhbSBjb25z
dHJ1Y3RvciB3aWxsIG5vdCB0b2xlcmF0ZSBpbml0aWFsIGdhcmJhZ2UgYXMgcHVsbCBhcmd1bWVu
dCcpOworCit0ZXN0KCgpID0+IHsKKworICBsZXQgc3RhcnRDYWxsZWQgPSBmYWxzZTsKKworICBj
b25zdCBzb3VyY2UgPSB7CisgICAgc3RhcnQoKSB7CisgICAgICBhc3NlcnRfZXF1YWxzKHRoaXMs
IHNvdXJjZSwgJ3NvdXJjZSBpcyB0aGlzIGR1cmluZyBzdGFydCcpOworICAgICAgc3RhcnRDYWxs
ZWQgPSB0cnVlOworICAgIH0KKyAgfTsKKworICBuZXcgUmVhZGFibGVTdHJlYW0oc291cmNlKTsK
KyAgYXNzZXJ0X3RydWUoc3RhcnRDYWxsZWQpOworCit9LCAnUmVhZGFibGVTdHJlYW0gc3RhcnQg
c2hvdWxkIGJlIGNhbGxlZCB3aXRoIHRoZSBwcm9wZXIgdGhpc0FyZycpOworCit0ZXN0KCgpID0+
IHsKKworICBsZXQgc3RhcnRDYWxsZWQgPSBmYWxzZTsKKyAgY29uc3Qgc291cmNlID0geworICAg
IHN0YXJ0KGNvbnRyb2xsZXIpIHsKKyAgICAgIGNvbnN0IHByb3BlcnRpZXMgPSBbJ2Nsb3NlJywg
J2NvbnN0cnVjdG9yJywgJ2Rlc2lyZWRTaXplJywgJ2VucXVldWUnLCAnZXJyb3InXTsKKyAgICAg
IGFzc2VydF9hcnJheV9lcXVhbHMoT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoT2JqZWN0Lmdl
dFByb3RvdHlwZU9mKGNvbnRyb2xsZXIpKS5zb3J0KCksIHByb3BlcnRpZXMsCisgICAgICAgICdw
cm90b3R5cGUgc2hvdWxkIGhhdmUgdGhlIHJpZ2h0IHByb3BlcnRpZXMnKTsKKworICAgICAgY29u
dHJvbGxlci50ZXN0ID0gJyc7CisgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKE9iamVjdC5nZXRP
d25Qcm9wZXJ0eU5hbWVzKE9iamVjdC5nZXRQcm90b3R5cGVPZihjb250cm9sbGVyKSkuc29ydCgp
LCBwcm9wZXJ0aWVzLAorICAgICAgICAncHJvdG90eXBlIHNob3VsZCBzdGlsbCBoYXZlIHRoZSBy
aWdodCBwcm9wZXJ0aWVzJyk7CisgICAgICBhc3NlcnRfbm90X2VxdWFscyhPYmplY3QuZ2V0T3du
UHJvcGVydHlOYW1lcyhjb250cm9sbGVyKS5pbmRleE9mKCd0ZXN0JyksIC0xLAorICAgICAgICAn
InRlc3QiIHNob3VsZCBiZSBhIHByb3BlcnR5IG9mIHRoZSBjb250cm9sbGVyJyk7CisKKyAgICAg
IHN0YXJ0Q2FsbGVkID0gdHJ1ZTsKKyAgICB9CisgIH07CisKKyAgbmV3IFJlYWRhYmxlU3RyZWFt
KHNvdXJjZSk7CisgIGFzc2VydF90cnVlKHN0YXJ0Q2FsbGVkKTsKKworfSwgJ1JlYWRhYmxlU3Ry
ZWFtIHN0YXJ0IGNvbnRyb2xsZXIgcGFyYW1ldGVyIHNob3VsZCBiZSBleHRlbnNpYmxlJyk7CisK
K3Rlc3QoKCkgPT4geworICAobmV3IFJlYWRhYmxlU3RyZWFtKCkpLmdldFJlYWRlcih1bmRlZmlu
ZWQpOworICAobmV3IFJlYWRhYmxlU3RyZWFtKCkpLmdldFJlYWRlcih7fSk7CisgIChuZXcgUmVh
ZGFibGVTdHJlYW0oKSkuZ2V0UmVhZGVyKHsgbW9kZTogdW5kZWZpbmVkLCBub3Rtb2RlOiAnaWdu
b3JlZCcgfSk7CisgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiAobmV3IFJlYWRh
YmxlU3RyZWFtKCkpLmdldFJlYWRlcih7IG1vZGU6ICdwb3RhdG8nIH0pKTsKK30sICdkZWZhdWx0
IFJlYWRhYmxlU3RyZWFtIGdldFJlYWRlcigpIHNob3VsZCBvbmx5IGFjY2VwdCBtb2RlOnVuZGVm
aW5lZCcpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworCisgIGZ1bmN0aW9uIFNpbXBsZVN0cmVh
bVNvdXJjZSgpIHt9CisgIGxldCByZXNvbHZlOworICBjb25zdCBwcm9taXNlID0gbmV3IFByb21p
c2UociA9PiByZXNvbHZlID0gcik7CisgIFNpbXBsZVN0cmVhbVNvdXJjZS5wcm90b3R5cGUgPSB7
CisgICAgc3RhcnQ6IHJlc29sdmUKKyAgfTsKKworICBuZXcgUmVhZGFibGVTdHJlYW0obmV3IFNp
bXBsZVN0cmVhbVNvdXJjZSgpKTsKKyAgcmV0dXJuIHByb21pc2U7CisKK30sICdSZWFkYWJsZVN0
cmVhbSBzaG91bGQgYmUgYWJsZSB0byBjYWxsIHN0YXJ0IG1ldGhvZCB3aXRoaW4gcHJvdG90eXBl
IGNoYWluIG9mIGl0cyBzb3VyY2UnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKworICBjb25z
dCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgcmV0dXJu
IGRlbGF5KDUpLnRoZW4oKCkgPT4geworICAgICAgICBjLmVucXVldWUoJ2EnKTsKKyAgICAgICAg
Yy5jbG9zZSgpOworICAgICAgfSk7CisgICAgfQorICB9KTsKKworICBjb25zdCByZWFkZXIgPSBy
cy5nZXRSZWFkZXIoKTsKKyAgcmV0dXJuIHJlYWRlci5yZWFkKCkudGhlbihyID0+IHsKKyAgICBh
c3NlcnRfb2JqZWN0X2VxdWFscyhyLCB7IHZhbHVlOiAnYScsIGRvbmU6IGZhbHNlIH0sICd2YWx1
ZSByZWFkIHNob3VsZCBiZSB0aGUgb25lIGVucXVldWVkJyk7CisgICAgcmV0dXJuIHJlYWRlci5j
bG9zZWQ7CisgIH0pOworCit9LCAnUmVhZGFibGVTdHJlYW0gc3RhcnQgc2hvdWxkIGJlIGFibGUg
dG8gcmV0dXJuIGEgcHJvbWlzZScpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworCisgIGNvbnN0
IHRoZUVycm9yID0gbmV3IEVycm9yKCdyZWplY3RlZCEnKTsKKyAgY29uc3QgcnMgPSBuZXcgUmVh
ZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KCkgeworICAgICAgcmV0dXJuIGRlbGF5KDEpLnRoZW4o
KCkgPT4geworICAgICAgICB0aHJvdyB0aGVFcnJvcjsKKyAgICAgIH0pOworICAgIH0KKyAgfSk7
CisKKyAgcmV0dXJuIHJzLmdldFJlYWRlcigpLmNsb3NlZC50aGVuKCgpID0+IHsKKyAgICBhc3Nl
cnRfdW5yZWFjaGVkKCdjbG9zZWQgcHJvbWlzZSBzaG91bGQgYmUgcmVqZWN0ZWQnKTsKKyAgfSwg
ZSA9PiB7CisgICAgYXNzZXJ0X2VxdWFscyhlLCB0aGVFcnJvciwgJ3Byb21pc2Ugc2hvdWxkIGJl
IHJlamVjdGVkIHdpdGggdGhlIHNhbWUgZXJyb3InKTsKKyAgfSk7CisKK30sICdSZWFkYWJsZVN0
cmVhbSBzdGFydCBzaG91bGQgYmUgYWJsZSB0byByZXR1cm4gYSBwcm9taXNlIGFuZCByZWplY3Qg
aXQnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKworICBjb25zdCBvYmplY3RzID0gWworICAg
IHsgcG90YXRvOiAnR2l2ZSBtZSBtb3JlIScgfSwKKyAgICAndGVzdCcsCisgICAgMQorICBdOwor
CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAg
ICBmb3IgKGNvbnN0IG8gb2Ygb2JqZWN0cykgeworICAgICAgICBjLmVucXVldWUobyk7CisgICAg
ICB9CisgICAgICBjLmNsb3NlKCk7CisgICAgfQorICB9KTsKKworICBjb25zdCByZWFkZXIgPSBy
cy5nZXRSZWFkZXIoKTsKKworICByZXR1cm4gUHJvbWlzZS5hbGwoW3JlYWRlci5yZWFkKCksIHJl
YWRlci5yZWFkKCksIHJlYWRlci5yZWFkKCksIHJlYWRlci5jbG9zZWRdKS50aGVuKHIgPT4gewor
ICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJbMF0sIHsgdmFsdWU6IG9iamVjdHNbMF0sIGRvbmU6
IGZhbHNlIH0sICd2YWx1ZSByZWFkIHNob3VsZCBiZSB0aGUgb25lIGVucXVldWVkJyk7CisgICAg
YXNzZXJ0X29iamVjdF9lcXVhbHMoclsxXSwgeyB2YWx1ZTogb2JqZWN0c1sxXSwgZG9uZTogZmFs
c2UgfSwgJ3ZhbHVlIHJlYWQgc2hvdWxkIGJlIHRoZSBvbmUgZW5xdWV1ZWQnKTsKKyAgICBhc3Nl
cnRfb2JqZWN0X2VxdWFscyhyWzJdLCB7IHZhbHVlOiBvYmplY3RzWzJdLCBkb25lOiBmYWxzZSB9
LCAndmFsdWUgcmVhZCBzaG91bGQgYmUgdGhlIG9uZSBlbnF1ZXVlZCcpOworICB9KTsKKworfSwg
J1JlYWRhYmxlU3RyZWFtIHNob3VsZCBiZSBhYmxlIHRvIGVucXVldWUgZGlmZmVyZW50IG9iamVj
dHMuJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisKKyAgY29uc3QgZXJyb3IgPSBuZXcgRXJy
b3IoJ3B1bGwgZmFpbHVyZScpOworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Cisg
ICAgcHVsbCgpIHsKKyAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcik7CisgICAgfQor
ICB9KTsKKworICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKKworICBsZXQgY2xvc2Vk
ID0gZmFsc2U7CisgIGxldCByZWFkID0gZmFsc2U7CisKKyAgcmV0dXJuIFByb21pc2UuYWxsKFsK
KyAgICByZWFkZXIuY2xvc2VkLnRoZW4oKCkgPT4geworICAgICAgYXNzZXJ0X3VucmVhY2hlZCgn
Y2xvc2VkIHNob3VsZCBiZSByZWplY3RlZCcpOworICAgIH0sIGUgPT4geworICAgICAgY2xvc2Vk
ID0gdHJ1ZTsKKyAgICAgIGFzc2VydF90cnVlKHJlYWQpOworICAgICAgYXNzZXJ0X2VxdWFscyhl
LCBlcnJvciwgJ2Nsb3NlZCBzaG91bGQgYmUgcmVqZWN0ZWQgd2l0aCB0aGUgdGhyb3duIGVycm9y
Jyk7CisgICAgfSksCisgICAgcmVhZGVyLnJlYWQoKS50aGVuKCgpID0+IHsKKyAgICAgIGFzc2Vy
dF91bnJlYWNoZWQoJ3JlYWQoKSBzaG91bGQgYmUgcmVqZWN0ZWQnKTsKKyAgICB9LCBlID0+IHsK
KyAgICAgIHJlYWQgPSB0cnVlOworICAgICAgYXNzZXJ0X2ZhbHNlKGNsb3NlZCk7CisgICAgICBh
c3NlcnRfZXF1YWxzKGUsIGVycm9yLCAncmVhZCgpIHNob3VsZCBiZSByZWplY3RlZCB3aXRoIHRo
ZSB0aHJvd24gZXJyb3InKTsKKyAgICB9KQorICBdKTsKKworfSwgJ1JlYWRhYmxlU3RyZWFtOiBp
ZiBwdWxsIHJlamVjdHMsIGl0IHNob3VsZCBlcnJvciB0aGUgc3RyZWFtJyk7CisKK3Byb21pc2Vf
dGVzdCgoKSA9PiB7CisKKyAgbGV0IHB1bGxDb3VudCA9IDA7CisKKyAgbmV3IFJlYWRhYmxlU3Ry
ZWFtKHsKKyAgICBwdWxsKCkgeworICAgICAgcHVsbENvdW50Kys7CisgICAgfQorICB9KTsKKwor
ICByZXR1cm4gZmx1c2hBc3luY0V2ZW50cygpLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9lcXVh
bHMocHVsbENvdW50LCAxLCAncHVsbCBzaG91bGQgYmUgY2FsbGVkIG9uY2Ugc3RhcnQgZmluaXNo
ZXMnKTsKKyAgICByZXR1cm4gZGVsYXkoMTApOworICB9KS50aGVuKCgpID0+IHsKKyAgICBhc3Nl
cnRfZXF1YWxzKHB1bGxDb3VudCwgMSwgJ3B1bGwgc2hvdWxkIGJlIGNhbGxlZCBleGFjdGx5IG9u
Y2UnKTsKKyAgfSk7CisKK30sICdSZWFkYWJsZVN0cmVhbTogc2hvdWxkIG9ubHkgY2FsbCBwdWxs
IG9uY2UgdXBvbiBzdGFydGluZyB0aGUgc3RyZWFtJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7
CisKKyAgbGV0IHB1bGxDb3VudCA9IDA7CisKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJl
YW0oeworICAgIHB1bGwoYykgeworICAgICAgLy8gRG9uJ3QgZW5xdWV1ZSBpbW1lZGlhdGVseSBh
ZnRlciBzdGFydC4gV2Ugd2FudCB0aGUgc3RyZWFtIHRvIGJlIGVtcHR5IHdoZW4gd2UgY2FsbCAu
cmVhZCgpIG9uIGl0LgorICAgICAgaWYgKHB1bGxDb3VudCA+IDApIHsKKyAgICAgICAgYy5lbnF1
ZXVlKHB1bGxDb3VudCk7CisgICAgICB9CisgICAgICArK3B1bGxDb3VudDsKKyAgICB9CisgIH0p
OworCisgIHJldHVybiBmbHVzaEFzeW5jRXZlbnRzKCkudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0
X2VxdWFscyhwdWxsQ291bnQsIDEsICdwdWxsIHNob3VsZCBiZSBjYWxsZWQgb25jZSBzdGFydCBm
aW5pc2hlcycpOworICB9KS50aGVuKCgpID0+IHsKKyAgICBjb25zdCByZWFkZXIgPSBycy5nZXRS
ZWFkZXIoKTsKKyAgICBjb25zdCByZWFkID0gcmVhZGVyLnJlYWQoKTsKKyAgICBhc3NlcnRfZXF1
YWxzKHB1bGxDb3VudCwgMiwgJ3B1bGwgc2hvdWxkIGJlIGNhbGxlZCB3aGVuIHJlYWQgaXMgY2Fs
bGVkJyk7CisgICAgcmV0dXJuIHJlYWQ7CisgIH0pLnRoZW4ocmVzdWx0ID0+IHsKKyAgICBhc3Nl
cnRfZXF1YWxzKHB1bGxDb3VudCwgMywgJ3B1bGwgc2hvdWxkIGJlIGNhbGxlZCBhZ2FpbiBpbiBy
ZWFjdGlvbiB0byBjYWxsaW5nIHJlYWQnKTsKKyAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1
bHQsIHsgdmFsdWU6IDEsIGRvbmU6IGZhbHNlIH0sICd0aGUgcmVzdWx0IHJlYWQgc2hvdWxkIGJl
IHRoZSBvbmUgZW5xdWV1ZWQnKTsKKyAgfSk7CisKK30sICdSZWFkYWJsZVN0cmVhbTogc2hvdWxk
IGNhbGwgcHVsbCB3aGVuIHRyeWluZyB0byByZWFkIGZyb20gYSBzdGFydGVkLCBlbXB0eSBzdHJl
YW0nKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKworICBsZXQgcHVsbENvdW50ID0gMDsKKwor
ICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAg
Yy5lbnF1ZXVlKCdhJyk7CisgICAgfSwKKyAgICBwdWxsKCkgeworICAgICAgcHVsbENvdW50Kys7
CisgICAgfQorICB9KTsKKworICBjb25zdCByZWFkID0gcnMuZ2V0UmVhZGVyKCkucmVhZCgpOwor
ICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMCwgJ2NhbGxpbmcgcmVhZCgpIHNob3VsZCBub3Qg
Y2F1c2UgcHVsbCB0byBiZSBjYWxsZWQgeWV0Jyk7CisKKyAgcmV0dXJuIGZsdXNoQXN5bmNFdmVu
dHMoKS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMSwgJ3B1bGwg
c2hvdWxkIGJlIGNhbGxlZCBvbmNlIHN0YXJ0IGZpbmlzaGVzJyk7CisgICAgcmV0dXJuIHJlYWQ7
CisgIH0pLnRoZW4ociA9PiB7CisgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMociwgeyB2YWx1ZTog
J2EnLCBkb25lOiBmYWxzZSB9LCAnZmlyc3QgcmVhZCgpIHNob3VsZCByZXR1cm4gZmlyc3QgY2h1
bmsnKTsKKyAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMSwgJ3B1bGwgc2hvdWxkIG5vdCBo
YXZlIGJlZW4gY2FsbGVkIGFnYWluJyk7CisgICAgcmV0dXJuIGRlbGF5KDEwKTsKKyAgfSkudGhl
bigoKSA9PiB7CisgICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDEsICdwdWxsIHNob3VsZCBi
ZSBjYWxsZWQgZXhhY3RseSBvbmNlJyk7CisgIH0pOworCit9LCAnUmVhZGFibGVTdHJlYW06IHNo
b3VsZCBvbmx5IGNhbGwgcHVsbCBvbmNlIG9uIGEgbm9uLWVtcHR5IHN0cmVhbSByZWFkIGZyb20g
YmVmb3JlIHN0YXJ0IGZ1bGZpbGxzJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisKKyAgbGV0
IHB1bGxDb3VudCA9IDA7CisgIGNvbnN0IHN0YXJ0UHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZSgp
OworCisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7Cisg
ICAgICBjLmVucXVldWUoJ2EnKTsKKyAgICB9LAorICAgIHB1bGwoKSB7CisgICAgICBwdWxsQ291
bnQrKzsKKyAgICB9CisgIH0pOworCisgIHJldHVybiBmbHVzaEFzeW5jRXZlbnRzKCkudGhlbigo
KSA9PiB7CisgICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDAsICdwdWxsIHNob3VsZCBub3Qg
YmUgY2FsbGVkIG9uY2Ugc3RhcnQgZmluaXNoZXMsIHNpbmNlIHRoZSBxdWV1ZSBpcyBmdWxsJyk7
CisKKyAgICBjb25zdCByZWFkID0gcnMuZ2V0UmVhZGVyKCkucmVhZCgpOworICAgIGFzc2VydF9l
cXVhbHMocHVsbENvdW50LCAxLCAnY2FsbGluZyByZWFkKCkgc2hvdWxkIGNhdXNlIHB1bGwgdG8g
YmUgY2FsbGVkIGltbWVkaWF0ZWx5Jyk7CisgICAgcmV0dXJuIHJlYWQ7CisgIH0pLnRoZW4ociA9
PiB7CisgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMociwgeyB2YWx1ZTogJ2EnLCBkb25lOiBmYWxz
ZSB9LCAnZmlyc3QgcmVhZCgpIHNob3VsZCByZXR1cm4gZmlyc3QgY2h1bmsnKTsKKyAgICByZXR1
cm4gZGVsYXkoMTApOworICB9KS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfZXF1YWxzKHB1bGxD
b3VudCwgMSwgJ3B1bGwgc2hvdWxkIGJlIGNhbGxlZCBleGFjdGx5IG9uY2UnKTsKKyAgfSk7CisK
K30sICdSZWFkYWJsZVN0cmVhbTogc2hvdWxkIG9ubHkgY2FsbCBwdWxsIG9uY2Ugb24gYSBub24t
ZW1wdHkgc3RyZWFtIHJlYWQgZnJvbSBhZnRlciBzdGFydCBmdWxmaWxscycpOworCitwcm9taXNl
X3Rlc3QoKCkgPT4geworCisgIGxldCBwdWxsQ291bnQgPSAwOworICBsZXQgY29udHJvbGxlcjsK
KworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAg
ICAgY29udHJvbGxlciA9IGM7CisgICAgfSwKKyAgICBwdWxsKCkgeworICAgICAgKytwdWxsQ291
bnQ7CisgICAgfQorICB9KTsKKworICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKKyAg
cmV0dXJuIGZsdXNoQXN5bmNFdmVudHMoKS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfZXF1YWxz
KHB1bGxDb3VudCwgMSwgJ3B1bGwgc2hvdWxkIGhhdmUgYmVlbiBjYWxsZWQgb25jZSBieSB0aGUg
dGltZSB0aGUgc3RyZWFtIHN0YXJ0cycpOworCisgICAgY29udHJvbGxlci5lbnF1ZXVlKCdhJyk7
CisgICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDEsICdwdWxsIHNob3VsZCBub3QgaGF2ZSBi
ZWVuIGNhbGxlZCBhZ2FpbiBhZnRlciBlbnF1ZXVlJyk7CisKKyAgICByZXR1cm4gcmVhZGVyLnJl
YWQoKTsKKyAgfSkudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDIs
ICdwdWxsIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkIGFnYWluIGFmdGVyIHJlYWQnKTsKKworICAg
IHJldHVybiBkZWxheSgxMCk7CisgIH0pLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9lcXVhbHMo
cHVsbENvdW50LCAyLCAncHVsbCBzaG91bGQgYmUgY2FsbGVkIGV4YWN0bHkgdHdpY2UnKTsKKyAg
fSk7Cit9LCAnUmVhZGFibGVTdHJlYW06IHNob3VsZCBjYWxsIHB1bGwgaW4gcmVhY3Rpb24gdG8g
cmVhZCgpaW5nIHRoZSBsYXN0IGNodW5rLCBpZiBub3QgZHJhaW5pbmcnKTsKKworcHJvbWlzZV90
ZXN0KCgpID0+IHsKKworICBsZXQgcHVsbENvdW50ID0gMDsKKyAgbGV0IGNvbnRyb2xsZXI7CisK
KyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAg
IGNvbnRyb2xsZXIgPSBjOworICAgIH0sCisgICAgcHVsbCgpIHsKKyAgICAgICsrcHVsbENvdW50
OworICAgIH0KKyAgfSk7CisKKyAgY29uc3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7CisKKyAg
cmV0dXJuIGZsdXNoQXN5bmNFdmVudHMoKS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfZXF1YWxz
KHB1bGxDb3VudCwgMSwgJ3B1bGwgc2hvdWxkIGhhdmUgYmVlbiBjYWxsZWQgb25jZSBieSB0aGUg
dGltZSB0aGUgc3RyZWFtIHN0YXJ0cycpOworCisgICAgY29udHJvbGxlci5lbnF1ZXVlKCdhJyk7
CisgICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDEsICdwdWxsIHNob3VsZCBub3QgaGF2ZSBi
ZWVuIGNhbGxlZCBhZ2FpbiBhZnRlciBlbnF1ZXVlJyk7CisKKyAgICBjb250cm9sbGVyLmNsb3Nl
KCk7CisKKyAgICByZXR1cm4gcmVhZGVyLnJlYWQoKTsKKyAgfSkudGhlbigoKSA9PiB7CisgICAg
YXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDEsICdwdWxsIHNob3VsZCBub3QgaGF2ZSBiZWVuIGNh
bGxlZCBhIHNlY29uZCB0aW1lIGFmdGVyIHJlYWQnKTsKKworICAgIHJldHVybiBkZWxheSgxMCk7
CisgIH0pLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAxLCAncHVs
bCBzaG91bGQgYmUgY2FsbGVkIGV4YWN0bHkgb25jZScpOworICB9KTsKKworfSwgJ1JlYWRhYmxl
U3RyZWFtOiBzaG91bGQgbm90IGNhbGwgcHVsbCgpIGluIHJlYWN0aW9uIHRvIHJlYWQoKWluZyB0
aGUgbGFzdCBjaHVuaywgaWYgZHJhaW5pbmcnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKwor
ICBsZXQgcmVzb2x2ZTsKKyAgbGV0IHJldHVybmVkUHJvbWlzZTsKKyAgbGV0IHRpbWVzQ2FsbGVk
ID0gMDsKKworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgcHVsbChjKSB7
CisgICAgICBjLmVucXVldWUoKyt0aW1lc0NhbGxlZCk7CisgICAgICByZXR1cm5lZFByb21pc2Ug
PSBuZXcgUHJvbWlzZShyID0+IHJlc29sdmUgPSByKTsKKyAgICAgIHJldHVybiByZXR1cm5lZFBy
b21pc2U7CisgICAgfQorICB9KTsKKyAgY29uc3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7CisK
KyAgcmV0dXJuIHJlYWRlci5yZWFkKCkKKyAgLnRoZW4ocmVzdWx0MSA9PiB7CisgICAgYXNzZXJ0
X2VxdWFscyh0aW1lc0NhbGxlZCwgMSwKKyAgICAgICdwdWxsIHNob3VsZCBoYXZlIGJlZW4gY2Fs
bGVkIG9uY2UgYWZ0ZXIgc3RhcnQsIGJ1dCBub3QgeWV0IGhhdmUgYmVlbiBjYWxsZWQgYSBzZWNv
bmQgdGltZScpOworICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdDEsIHsgdmFsdWU6IDEs
IGRvbmU6IGZhbHNlIH0sICdyZWFkKCkgc2hvdWxkIGZ1bGZpbGwgd2l0aCB0aGUgZW5xdWV1ZWQg
dmFsdWUnKTsKKworICAgIHJldHVybiBkZWxheSgxMCk7CisgIH0pLnRoZW4oKCkgPT4geworICAg
IGFzc2VydF9lcXVhbHModGltZXNDYWxsZWQsIDEsICdhZnRlciAxMCBtcywgcHVsbCBzaG91bGQg
c3RpbGwgb25seSBoYXZlIGJlZW4gY2FsbGVkIG9uY2UnKTsKKworICAgIHJlc29sdmUoKTsKKyAg
ICByZXR1cm4gcmV0dXJuZWRQcm9taXNlOworICB9KS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRf
ZXF1YWxzKHRpbWVzQ2FsbGVkLCAyLAorICAgICAgJ2FmdGVyIHRoZSBwcm9taXNlIHJldHVybmVk
IGJ5IHB1bGwgaXMgZnVsZmlsbGVkLCBwdWxsIHNob3VsZCBiZSBjYWxsZWQgYSBzZWNvbmQgdGlt
ZScpOworICB9KTsKKworfSwgJ1JlYWRhYmxlU3RyZWFtOiBzaG91bGQgbm90IGNhbGwgcHVsbCB1
bnRpbCB0aGUgcHJldmlvdXMgcHVsbCBjYWxsXCdzIHByb21pc2UgZnVsZmlsbHMnKTsKKworcHJv
bWlzZV90ZXN0KCgpID0+IHsKKworICBsZXQgdGltZXNDYWxsZWQgPSAwOworCisgIGNvbnN0IHJz
ID0gbmV3IFJlYWRhYmxlU3RyZWFtKAorICAgIHsKKyAgICAgIHN0YXJ0KGMpIHsKKyAgICAgICAg
Yy5lbnF1ZXVlKCdhJyk7CisgICAgICAgIGMuZW5xdWV1ZSgnYicpOworICAgICAgICBjLmVucXVl
dWUoJ2MnKTsKKyAgICAgIH0sCisgICAgICBwdWxsKCkgeworICAgICAgICArK3RpbWVzQ2FsbGVk
OworICAgICAgfQorICAgIH0sCisgICAgeworICAgICAgc2l6ZSgpIHsKKyAgICAgICAgcmV0dXJu
IDE7CisgICAgICB9LAorICAgICAgaGlnaFdhdGVyTWFyazogSW5maW5pdHkKKyAgICB9CisgICk7
CisgIGNvbnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcigpOworCisgIHJldHVybiBmbHVzaEFzeW5j
RXZlbnRzKCkudGhlbigoKSA9PiB7CisgICAgcmV0dXJuIHJlYWRlci5yZWFkKCk7CisgIH0pLnRo
ZW4ocmVzdWx0MSA9PiB7CisgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0MSwgeyB2YWx1
ZTogJ2EnLCBkb25lOiBmYWxzZSB9LCAnZmlyc3QgY2h1bmsgc2hvdWxkIGJlIGFzIGV4cGVjdGVk
Jyk7CisKKyAgICByZXR1cm4gcmVhZGVyLnJlYWQoKTsKKyAgfSkudGhlbihyZXN1bHQyID0+IHsK
KyAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQyLCB7IHZhbHVlOiAnYicsIGRvbmU6IGZh
bHNlIH0sICdzZWNvbmQgY2h1bmsgc2hvdWxkIGJlIGFzIGV4cGVjdGVkJyk7CisKKyAgICByZXR1
cm4gcmVhZGVyLnJlYWQoKTsKKyAgfSkudGhlbihyZXN1bHQzID0+IHsKKyAgICBhc3NlcnRfb2Jq
ZWN0X2VxdWFscyhyZXN1bHQzLCB7IHZhbHVlOiAnYycsIGRvbmU6IGZhbHNlIH0sICd0aGlyZCBj
aHVuayBzaG91bGQgYmUgYXMgZXhwZWN0ZWQnKTsKKworICAgIHJldHVybiBkZWxheSgxMCk7Cisg
IH0pLnRoZW4oKCkgPT4geworICAgIC8vIE9uY2UgZm9yIGFmdGVyIHN0YXJ0LCBhbmQgb25jZSBm
b3IgZXZlcnkgcmVhZC4KKyAgICBhc3NlcnRfZXF1YWxzKHRpbWVzQ2FsbGVkLCA0LCAncHVsbCgp
IHNob3VsZCBiZSBjYWxsZWQgZXhhY3RseSBmb3VyIHRpbWVzJyk7CisgIH0pOworCit9LCAnUmVh
ZGFibGVTdHJlYW06IHNob3VsZCBwdWxsIGFmdGVyIHN0YXJ0LCBhbmQgYWZ0ZXIgZXZlcnkgcmVh
ZCcpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworCisgIGxldCB0aW1lc0NhbGxlZCA9IDA7Cisg
IGNvbnN0IHN0YXJ0UHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZSgpOworCisgIGNvbnN0IHJzID0g
bmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjLmVucXVldWUoJ2En
KTsKKyAgICAgIGMuY2xvc2UoKTsKKyAgICAgIHJldHVybiBzdGFydFByb21pc2U7CisgICAgfSwK
KyAgICBwdWxsKCkgeworICAgICAgKyt0aW1lc0NhbGxlZDsKKyAgICB9CisgIH0pOworCisgIGNv
bnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcigpOworICByZXR1cm4gc3RhcnRQcm9taXNlLnRoZW4o
KCkgPT4geworICAgIGFzc2VydF9lcXVhbHModGltZXNDYWxsZWQsIDAsICdhZnRlciBzdGFydCBm
aW5pc2hlcywgcHVsbCBzaG91bGQgbm90IGhhdmUgYmVlbiBjYWxsZWQnKTsKKworICAgIHJldHVy
biByZWFkZXIucmVhZCgpOworICB9KS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfZXF1YWxzKHRp
bWVzQ2FsbGVkLCAwLCAncmVhZGluZyBzaG91bGQgbm90IGhhdmUgdHJpZ2dlcmVkIGEgcHVsbCBj
YWxsJyk7CisKKyAgICByZXR1cm4gcmVhZGVyLmNsb3NlZDsKKyAgfSkudGhlbigoKSA9PiB7Cisg
ICAgYXNzZXJ0X2VxdWFscyh0aW1lc0NhbGxlZCwgMCwgJ3N0cmVhbSBzaG91bGQgaGF2ZSBjbG9z
ZWQgd2l0aCBzdGlsbCBubyBjYWxscyB0byBwdWxsJyk7CisgIH0pOworCit9LCAnUmVhZGFibGVT
dHJlYW06IHNob3VsZCBub3QgY2FsbCBwdWxsIGFmdGVyIHN0YXJ0IGlmIHRoZSBzdHJlYW0gaXMg
bm93IGNsb3NlZCcpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworCisgIGxldCB0aW1lc0NhbGxl
ZCA9IDA7CisgIGxldCByZXNvbHZlOworICBjb25zdCByZWFkeSA9IG5ldyBQcm9taXNlKHIgPT4g
cmVzb2x2ZSA9IHIpOworCisgIG5ldyBSZWFkYWJsZVN0cmVhbSgKKyAgICB7CisgICAgICBzdGFy
dCgpIHt9LAorICAgICAgcHVsbChjKSB7CisgICAgICAgIGMuZW5xdWV1ZSgrK3RpbWVzQ2FsbGVk
KTsKKworICAgICAgICBpZiAodGltZXNDYWxsZWQgPT09IDQpIHsKKyAgICAgICAgICByZXNvbHZl
KCk7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LAorICAgIHsKKyAgICAgIHNpemUoKSB7Cisg
ICAgICAgIHJldHVybiAxOworICAgICAgfSwKKyAgICAgIGhpZ2hXYXRlck1hcms6IDQKKyAgICB9
CisgICk7CisKKyAgcmV0dXJuIHJlYWR5LnRoZW4oKCkgPT4geworICAgIC8vIGFmdGVyIHN0YXJ0
OiBzaXplID0gMCwgcHVsbCgpCisgICAgLy8gYWZ0ZXIgZW5xdWV1ZSgxKTogc2l6ZSA9IDEsIHB1
bGwoKQorICAgIC8vIGFmdGVyIGVucXVldWUoMik6IHNpemUgPSAyLCBwdWxsKCkKKyAgICAvLyBh
ZnRlciBlbnF1ZXVlKDMpOiBzaXplID0gMywgcHVsbCgpCisgICAgLy8gYWZ0ZXIgZW5xdWV1ZSg0
KTogc2l6ZSA9IDQsIGRvIG5vdCBwdWxsCisgICAgYXNzZXJ0X2VxdWFscyh0aW1lc0NhbGxlZCwg
NCwgJ3B1bGwoKSBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCBmb3VyIHRpbWVzJyk7CisgIH0pOwor
Cit9LCAnUmVhZGFibGVTdHJlYW06IHNob3VsZCBjYWxsIHB1bGwgYWZ0ZXIgZW5xdWV1ZWluZyBm
cm9tIGluc2lkZSBwdWxsICh3aXRoIG5vIHJlYWQgcmVxdWVzdHMpLCBpZiBzdHJhdGVneSBhbGxv
d3MnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKworICBsZXQgcHVsbENhbGxlZCA9IGZhbHNl
OworCisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBwdWxsKGMpIHsKKyAg
ICAgIHB1bGxDYWxsZWQgPSB0cnVlOworICAgICAgYy5jbG9zZSgpOworICAgIH0KKyAgfSk7CisK
KyAgY29uc3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7CisgIHJldHVybiByZWFkZXIuY2xvc2Vk
LnRoZW4oKCkgPT4geworICAgIGFzc2VydF90cnVlKHB1bGxDYWxsZWQpOworICB9KTsKKworfSwg
J1JlYWRhYmxlU3RyZWFtIHB1bGwgc2hvdWxkIGJlIGFibGUgdG8gY2xvc2UgYSBzdHJlYW0uJyk7
CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKworICBjb25zdCBjb250cm9sbGVyRXJyb3IgPSB7IG5h
bWU6ICdjb250cm9sbGVyIGVycm9yJyB9OworCisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3Ry
ZWFtKHsKKyAgICBwdWxsKGMpIHsKKyAgICAgIGMuZXJyb3IoY29udHJvbGxlckVycm9yKTsKKyAg
ICB9CisgIH0pOworCisgIHJldHVybiBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBjb250cm9s
bGVyRXJyb3IsIHJzLmdldFJlYWRlcigpLmNsb3NlZCk7CisKK30sICdSZWFkYWJsZVN0cmVhbSBw
dWxsIHNob3VsZCBiZSBhYmxlIHRvIGVycm9yIGEgc3RyZWFtLicpOworCitwcm9taXNlX3Rlc3Qo
dCA9PiB7CisKKyAgY29uc3QgY29udHJvbGxlckVycm9yID0geyBuYW1lOiAnY29udHJvbGxlciBl
cnJvcicgfTsKKyAgY29uc3QgdGhyb3duRXJyb3IgPSB7IG5hbWU6ICd0aHJvd24gZXJyb3InIH07
CisKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHB1bGwoYykgeworICAg
ICAgYy5lcnJvcihjb250cm9sbGVyRXJyb3IpOworICAgICAgdGhyb3cgdGhyb3duRXJyb3I7Cisg
ICAgfQorICB9KTsKKworICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgY29udHJv
bGxlckVycm9yLCBycy5nZXRSZWFkZXIoKS5jbG9zZWQpOworCit9LCAnUmVhZGFibGVTdHJlYW0g
cHVsbCBzaG91bGQgYmUgYWJsZSB0byBlcnJvciBhIHN0cmVhbSBhbmQgdGhyb3cuJyk7CisKK3Rl
c3QoKCkgPT4geworCisgIGxldCBzdGFydENhbGxlZCA9IGZhbHNlOworCisgIG5ldyBSZWFkYWJs
ZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgYXNzZXJ0X2VxdWFscyhjLmVucXVldWUo
J2EnKSwgdW5kZWZpbmVkLCAndGhlIGZpcnN0IGVucXVldWUgc2hvdWxkIHJldHVybiB1bmRlZmlu
ZWQnKTsKKyAgICAgIGMuY2xvc2UoKTsKKworICAgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJy
b3IsICgpID0+IGMuZW5xdWV1ZSgnYicpLCAnZW5xdWV1ZSBhZnRlciBjbG9zZSBzaG91bGQgdGhy
b3cgYSBUeXBlRXJyb3InKTsKKyAgICAgIHN0YXJ0Q2FsbGVkID0gdHJ1ZTsKKyAgICB9CisgIH0p
OworCisgIGFzc2VydF90cnVlKHN0YXJ0Q2FsbGVkKTsKKworfSwgJ1JlYWRhYmxlU3RyZWFtOiBl
bnF1ZXVlIHNob3VsZCB0aHJvdyB3aGVuIHRoZSBzdHJlYW0gaXMgcmVhZGFibGUgYnV0IGRyYWlu
aW5nJyk7CisKK3Rlc3QoKCkgPT4geworCisgIGxldCBzdGFydENhbGxlZCA9IGZhbHNlOworCisg
IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgYy5jbG9zZSgpOwor
CisgICAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4gYy5lbnF1ZXVlKCdhJyks
ICdlbnF1ZXVlIGFmdGVyIGNsb3NlIHNob3VsZCB0aHJvdyBhIFR5cGVFcnJvcicpOworICAgICAg
c3RhcnRDYWxsZWQgPSB0cnVlOworICAgIH0KKyAgfSk7CisKKyAgYXNzZXJ0X3RydWUoc3RhcnRD
YWxsZWQpOworCit9LCAnUmVhZGFibGVTdHJlYW06IGVucXVldWUgc2hvdWxkIHRocm93IHdoZW4g
dGhlIHN0cmVhbSBpcyBjbG9zZWQnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKworICBsZXQg
c3RhcnRDYWxsZWQgPSAwOworICBsZXQgcHVsbENhbGxlZCA9IDA7CisgIGxldCBjYW5jZWxDYWxs
ZWQgPSAwOworCisgIC8qIGVzbGludC1kaXNhYmxlIG5vLXVzZS1iZWZvcmUtZGVmaW5lICovCisg
IGNsYXNzIFNvdXJjZSB7CisgICAgc3RhcnQoYykgeworICAgICAgc3RhcnRDYWxsZWQrKzsKKyAg
ICAgIGFzc2VydF9lcXVhbHModGhpcywgdGhlU291cmNlLCAnc3RhcnQoKSBzaG91bGQgYmUgY2Fs
bGVkIHdpdGggdGhlIGNvcnJlY3QgdGhpcycpOworICAgICAgYy5lbnF1ZXVlKCdhJyk7CisgICAg
fQorCisgICAgcHVsbCgpIHsKKyAgICAgIHB1bGxDYWxsZWQrKzsKKyAgICAgIGFzc2VydF9lcXVh
bHModGhpcywgdGhlU291cmNlLCAncHVsbCgpIHNob3VsZCBiZSBjYWxsZWQgd2l0aCB0aGUgY29y
cmVjdCB0aGlzJyk7CisgICAgfQorCisgICAgY2FuY2VsKCkgeworICAgICAgY2FuY2VsQ2FsbGVk
Kys7CisgICAgICBhc3NlcnRfZXF1YWxzKHRoaXMsIHRoZVNvdXJjZSwgJ2NhbmNlbCgpIHNob3Vs
ZCBiZSBjYWxsZWQgd2l0aCB0aGUgY29ycmVjdCB0aGlzJyk7CisgICAgfQorICB9CisgIC8qIGVz
bGludC1lbmFibGUgbm8tdXNlLWJlZm9yZS1kZWZpbmUgKi8KKworICBjb25zdCB0aGVTb3VyY2Ug
PSBuZXcgU291cmNlKCk7CisgIHRoZVNvdXJjZS5kZWJ1Z05hbWUgPSAndGhlIHNvdXJjZSBvYmpl
Y3QgcGFzc2VkIHRvIHRoZSBjb25zdHJ1Y3Rvcic7IC8vIG1ha2VzIHRlc3QgZmFpbHVyZXMgZWFz
aWVyIHRvIGRpYWdub3NlCisKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0odGhlU291
cmNlKTsKKyAgY29uc3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7CisKKyAgcmV0dXJuIHJlYWRl
ci5yZWFkKCkudGhlbigoKSA9PiB7CisgICAgcmVhZGVyLnJlbGVhc2VMb2NrKCk7CisgICAgcnMu
Y2FuY2VsKCk7CisgICAgYXNzZXJ0X2VxdWFscyhzdGFydENhbGxlZCwgMSk7CisgICAgYXNzZXJ0
X2VxdWFscyhwdWxsQ2FsbGVkLCAxKTsKKyAgICBhc3NlcnRfZXF1YWxzKGNhbmNlbENhbGxlZCwg
MSk7CisgICAgcmV0dXJuIHJzLmdldFJlYWRlcigpLmNsb3NlZDsKKyAgfSk7CisKK30sICdSZWFk
YWJsZVN0cmVhbTogc2hvdWxkIGNhbGwgdW5kZXJseWluZyBzb3VyY2UgbWV0aG9kcyBhcyBtZXRo
b2RzJyk7CisKK3Rlc3QoKCkgPT4geworICBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0
KGMpIHsKKyAgICAgIGFzc2VydF9lcXVhbHMoYy5kZXNpcmVkU2l6ZSwgMTAsICdkZXNpcmVkU2l6
ZSBtdXN0IHN0YXJ0IGF0IGhpZ2hXYXRlck1hcmsnKTsKKyAgICAgIGMuY2xvc2UoKTsKKyAgICAg
IGFzc2VydF9lcXVhbHMoYy5kZXNpcmVkU2l6ZSwgMCwgJ2FmdGVyIGNsb3NpbmcsIGRlc2lyZWRT
aXplIG11c3QgYmUgMCcpOworICAgIH0KKyAgfSwgeworICAgIGhpZ2hXYXRlck1hcms6IDEwCisg
IH0pOworfSwgJ1JlYWRhYmxlU3RyZWFtOiBkZXNpcmVkU2l6ZSB3aGVuIGNsb3NlZCcpOworCit0
ZXN0KCgpID0+IHsKKyAgbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAg
ICBhc3NlcnRfZXF1YWxzKGMuZGVzaXJlZFNpemUsIDEwLCAnZGVzaXJlZFNpemUgbXVzdCBzdGFy
dCBhdCBoaWdoV2F0ZXJNYXJrJyk7CisgICAgICBjLmVycm9yKCk7CisgICAgICBhc3NlcnRfZXF1
YWxzKGMuZGVzaXJlZFNpemUsIG51bGwsICdhZnRlciBlcnJvcmluZywgZGVzaXJlZFNpemUgbXVz
dCBiZSBudWxsJyk7CisgICAgfQorICB9LCB7CisgICAgaGlnaFdhdGVyTWFyazogMTAKKyAgfSk7
Cit9LCAnUmVhZGFibGVTdHJlYW06IGRlc2lyZWRTaXplIHdoZW4gZXJyb3JlZCcpOworCit0ZXN0
KCgpID0+IHsKKyAgY2xhc3MgU3ViY2xhc3MgZXh0ZW5kcyBSZWFkYWJsZVN0cmVhbSB7CisgICAg
ZXh0cmFGdW5jdGlvbigpIHsKKyAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgfQorICBhc3Nl
cnRfZXF1YWxzKAorICAgICAgT2JqZWN0LmdldFByb3RvdHlwZU9mKFN1YmNsYXNzLnByb3RvdHlw
ZSksIFJlYWRhYmxlU3RyZWFtLnByb3RvdHlwZSwKKyAgICAgICdTdWJjbGFzcy5wcm90b3R5cGVc
J3MgcHJvdG90eXBlIHNob3VsZCBiZSBSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUnKTsKKyAgYXNz
ZXJ0X2VxdWFscyhPYmplY3QuZ2V0UHJvdG90eXBlT2YoU3ViY2xhc3MpLCBSZWFkYWJsZVN0cmVh
bSwKKyAgICAgICAgICAgICAgICAnU3ViY2xhc3NcJ3MgcHJvdG90eXBlIHNob3VsZCBiZSBSZWFk
YWJsZVN0cmVhbScpOworICBjb25zdCBzdWIgPSBuZXcgU3ViY2xhc3MoKTsKKyAgYXNzZXJ0X3Ry
dWUoc3ViIGluc3RhbmNlb2YgUmVhZGFibGVTdHJlYW0sCisgICAgICAgICAgICAgICdTdWJjbGFz
cyBvYmplY3Qgc2hvdWxkIGJlIGFuIGluc3RhbmNlIG9mIFJlYWRhYmxlU3RyZWFtJyk7CisgIGFz
c2VydF90cnVlKHN1YiBpbnN0YW5jZW9mIFN1YmNsYXNzLAorICAgICAgICAgICAgICAnU3ViY2xh
c3Mgb2JqZWN0IHNob3VsZCBiZSBhbiBpbnN0YW5jZSBvZiBTdWJjbGFzcycpOworICBjb25zdCBs
b2NrZWRHZXR0ZXIgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKAorICAgICAgUmVh
ZGFibGVTdHJlYW0ucHJvdG90eXBlLCAnbG9ja2VkJykuZ2V0OworICBhc3NlcnRfZXF1YWxzKGxv
Y2tlZEdldHRlci5jYWxsKHN1YiksIHN1Yi5sb2NrZWQsCisgICAgICAgICAgICAgICAgJ1N1YmNs
YXNzIG9iamVjdCBzaG91bGQgcGFzcyBicmFuZCBjaGVjaycpOworICBhc3NlcnRfdHJ1ZShzdWIu
ZXh0cmFGdW5jdGlvbigpLAorICAgICAgICAgICAgICAnZXh0cmFGdW5jdGlvbigpIHNob3VsZCBi
ZSBwcmVzZW50IG9uIFN1YmNsYXNzIG9iamVjdCcpOworfSwgJ1N1YmNsYXNzaW5nIFJlYWRhYmxl
U3RyZWFtIHNob3VsZCB3b3JrJyk7CisKK3Rlc3QoKCkgPT4geworCisgIGxldCBzdGFydENhbGxl
ZCA9IGZhbHNlOworICBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAg
IGFzc2VydF9lcXVhbHMoYy5kZXNpcmVkU2l6ZSwgMSk7CisgICAgICBjLmVucXVldWUoJ2EnKTsK
KyAgICAgIGFzc2VydF9lcXVhbHMoYy5kZXNpcmVkU2l6ZSwgMCk7CisgICAgICBjLmVucXVldWUo
J2InKTsKKyAgICAgIGFzc2VydF9lcXVhbHMoYy5kZXNpcmVkU2l6ZSwgLTEpOworICAgICAgYy5l
bnF1ZXVlKCdjJyk7CisgICAgICBhc3NlcnRfZXF1YWxzKGMuZGVzaXJlZFNpemUsIC0yKTsKKyAg
ICAgIGMuZW5xdWV1ZSgnZCcpOworICAgICAgYXNzZXJ0X2VxdWFscyhjLmRlc2lyZWRTaXplLCAt
Myk7CisgICAgICBjLmVucXVldWUoJ2UnKTsKKyAgICAgIHN0YXJ0Q2FsbGVkID0gdHJ1ZTsKKyAg
ICB9CisgIH0pOworCisgIGFzc2VydF90cnVlKHN0YXJ0Q2FsbGVkKTsKKworfSwgJ1JlYWRhYmxl
U3RyZWFtIHN0cmF0ZWdpZXM6IHRoZSBkZWZhdWx0IHN0cmF0ZWd5IHNob3VsZCBnaXZlIGRlc2ly
ZWRTaXplIG9mIDEgdG8gc3RhcnQsIGRlY3JlYXNpbmcgYnkgMSBwZXIgZW5xdWV1ZScpOworCitw
cm9taXNlX3Rlc3QoKCkgPT4geworCisgIGxldCBjb250cm9sbGVyOworICBjb25zdCBycyA9IG5l
dyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgY29udHJvbGxlciA9IGM7
CisgICAgfQorICB9KTsKKyAgY29uc3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7CisKKyAgYXNz
ZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAxLCAnZGVzaXJlZFNpemUgc2hvdWxk
IHN0YXJ0IGF0IDEnKTsKKyAgY29udHJvbGxlci5lbnF1ZXVlKCdhJyk7CisgIGFzc2VydF9lcXVh
bHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMCwgJ2Rlc2lyZWRTaXplIHNob3VsZCBkZWNyZWFz
ZSB0byAwIGFmdGVyIGZpcnN0IGVucXVldWUnKTsKKworICByZXR1cm4gcmVhZGVyLnJlYWQoKS50
aGVuKHJlc3VsdDEgPT4geworICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdDEsIHsgdmFs
dWU6ICdhJywgZG9uZTogZmFsc2UgfSwgJ2ZpcnN0IGNodW5rIHJlYWQgc2hvdWxkIGJlIGNvcnJl
Y3QnKTsKKworICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMSwgJ2Rl
c2lyZWRTaXplIHNob3VsZCBnbyB1cCB0byAxIGFmdGVyIHRoZSBmaXJzdCByZWFkJyk7CisgICAg
Y29udHJvbGxlci5lbnF1ZXVlKCdiJyk7CisgICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRl
c2lyZWRTaXplLCAwLCAnZGVzaXJlZFNpemUgc2hvdWxkIGdvIGRvd24gdG8gMCBhZnRlciB0aGUg
c2Vjb25kIGVucXVldWUnKTsKKworICAgIHJldHVybiByZWFkZXIucmVhZCgpOworICB9KS50aGVu
KHJlc3VsdDIgPT4geworICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdDIsIHsgdmFsdWU6
ICdiJywgZG9uZTogZmFsc2UgfSwgJ3NlY29uZCBjaHVuayByZWFkIHNob3VsZCBiZSBjb3JyZWN0
Jyk7CisKKyAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDEsICdkZXNp
cmVkU2l6ZSBzaG91bGQgZ28gdXAgdG8gMSBhZnRlciB0aGUgc2Vjb25kIHJlYWQnKTsKKyAgICBj
b250cm9sbGVyLmVucXVldWUoJ2MnKTsKKyAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVz
aXJlZFNpemUsIDAsICdkZXNpcmVkU2l6ZSBzaG91bGQgZ28gZG93biB0byAwIGFmdGVyIHRoZSB0
aGlyZCBlbnF1ZXVlJyk7CisKKyAgICByZXR1cm4gcmVhZGVyLnJlYWQoKTsKKyAgfSkudGhlbihy
ZXN1bHQzID0+IHsKKyAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQzLCB7IHZhbHVlOiAn
YycsIGRvbmU6IGZhbHNlIH0sICd0aGlyZCBjaHVuayByZWFkIHNob3VsZCBiZSBjb3JyZWN0Jyk7
CisKKyAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDEsICdkZXNpcmVk
U2l6ZSBzaG91bGQgZ28gdXAgdG8gMSBhZnRlciB0aGUgdGhpcmQgcmVhZCcpOworICAgIGNvbnRy
b2xsZXIuZW5xdWV1ZSgnZCcpOworICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVk
U2l6ZSwgMCwgJ2Rlc2lyZWRTaXplIHNob3VsZCBnbyBkb3duIHRvIDAgYWZ0ZXIgdGhlIGZvdXJ0
aCBlbnF1ZXVlJyk7CisgIH0pOworCit9LCAnUmVhZGFibGVTdHJlYW0gc3RyYXRlZ2llczogdGhl
IGRlZmF1bHQgc3RyYXRlZ3kgc2hvdWxkIGNvbnRpbnVlIGdpdmluZyBkZXNpcmVkU2l6ZSBvZiAx
IGlmIHRoZSBjaHVua3MgYXJlIHJlYWQgaW1tZWRpYXRlbHknKTsKKworcHJvbWlzZV90ZXN0KHQg
PT4geworCisgIGNvbnN0IHJhbmRvbVNvdXJjZSA9IG5ldyBSYW5kb21QdXNoU291cmNlKDgpOwor
CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAg
ICBhc3NlcnRfZXF1YWxzKHR5cGVvZiBjLCAnb2JqZWN0JywgJ2Mgc2hvdWxkIGJlIGFuIG9iamVj
dCBpbiBzdGFydCcpOworICAgICAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgYy5lbnF1ZXVlLCAnZnVu
Y3Rpb24nLCAnZW5xdWV1ZSBzaG91bGQgYmUgYSBmdW5jdGlvbiBpbiBzdGFydCcpOworICAgICAg
YXNzZXJ0X2VxdWFscyh0eXBlb2YgYy5jbG9zZSwgJ2Z1bmN0aW9uJywgJ2Nsb3NlIHNob3VsZCBi
ZSBhIGZ1bmN0aW9uIGluIHN0YXJ0Jyk7CisgICAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiBjLmVy
cm9yLCAnZnVuY3Rpb24nLCAnZXJyb3Igc2hvdWxkIGJlIGEgZnVuY3Rpb24gaW4gc3RhcnQnKTsK
KworICAgICAgcmFuZG9tU291cmNlLm9uZGF0YSA9IHQuc3RlcF9mdW5jKGNodW5rID0+IHsKKyAg
ICAgICAgaWYgKCFjLmVucXVldWUoY2h1bmspIDw9IDApIHsKKyAgICAgICAgICByYW5kb21Tb3Vy
Y2UucmVhZFN0b3AoKTsKKyAgICAgICAgfQorICAgICAgfSk7CisKKyAgICAgIHJhbmRvbVNvdXJj
ZS5vbmVuZCA9IGMuY2xvc2UuYmluZChjKTsKKyAgICAgIHJhbmRvbVNvdXJjZS5vbmVycm9yID0g
Yy5lcnJvci5iaW5kKGMpOworICAgIH0sCisKKyAgICBwdWxsKGMpIHsKKyAgICAgIGFzc2VydF9l
cXVhbHModHlwZW9mIGMsICdvYmplY3QnLCAnYyBzaG91bGQgYmUgYW4gb2JqZWN0IGluIHB1bGwn
KTsKKyAgICAgIGFzc2VydF9lcXVhbHModHlwZW9mIGMuZW5xdWV1ZSwgJ2Z1bmN0aW9uJywgJ2Vu
cXVldWUgc2hvdWxkIGJlIGEgZnVuY3Rpb24gaW4gcHVsbCcpOworICAgICAgYXNzZXJ0X2VxdWFs
cyh0eXBlb2YgYy5jbG9zZSwgJ2Z1bmN0aW9uJywgJ2Nsb3NlIHNob3VsZCBiZSBhIGZ1bmN0aW9u
IGluIHB1bGwnKTsKKworICAgICAgcmFuZG9tU291cmNlLnJlYWRTdGFydCgpOworICAgIH0KKyAg
fSk7CisKKyAgcmV0dXJuIHJlYWRhYmxlU3RyZWFtVG9BcnJheShycykudGhlbihjaHVua3MgPT4g
eworICAgIGFzc2VydF9lcXVhbHMoY2h1bmtzLmxlbmd0aCwgOCwgJzggY2h1bmtzIHNob3VsZCBi
ZSByZWFkJyk7CisgICAgZm9yIChjb25zdCBjaHVuayBvZiBjaHVua3MpIHsKKyAgICAgIGFzc2Vy
dF9lcXVhbHMoY2h1bmsubGVuZ3RoLCAxMjgsICdjaHVuayBzaG91bGQgaGF2ZSAxMjggYnl0ZXMn
KTsKKyAgICB9CisgIH0pOworCit9LCAnUmVhZGFibGVTdHJlYW0gaW50ZWdyYXRpb24gdGVzdDog
YWRhcHRpbmcgYSByYW5kb20gcHVzaCBzb3VyY2UnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsK
KworICBjb25zdCBycyA9IHNlcXVlbnRpYWxSZWFkYWJsZVN0cmVhbSgxMCk7CisKKyAgcmV0dXJu
IHJlYWRhYmxlU3RyZWFtVG9BcnJheShycykudGhlbihjaHVua3MgPT4geworICAgIGFzc2VydF90
cnVlKHJzLnNvdXJjZS5jbG9zZWQsICdzb3VyY2Ugc2hvdWxkIGJlIGNsb3NlZCBhZnRlciBhbGwg
Y2h1bmtzIGFyZSByZWFkJyk7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhjaHVua3MsIFsxLCAy
LCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMF0sICd0aGUgZXhwZWN0ZWQgMTAgY2h1bmtzIHNob3Vs
ZCBiZSByZWFkJyk7CisgIH0pOworCit9LCAnUmVhZGFibGVTdHJlYW0gaW50ZWdyYXRpb24gdGVz
dDogYWRhcHRpbmcgYSBzeW5jIHB1bGwgc291cmNlJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7
CisKKyAgY29uc3QgcnMgPSBzZXF1ZW50aWFsUmVhZGFibGVTdHJlYW0oMTAsIHsgYXN5bmM6IHRy
dWUgfSk7CisKKyAgcmV0dXJuIHJlYWRhYmxlU3RyZWFtVG9BcnJheShycykudGhlbihjaHVua3Mg
PT4geworICAgIGFzc2VydF90cnVlKHJzLnNvdXJjZS5jbG9zZWQsICdzb3VyY2Ugc2hvdWxkIGJl
IGNsb3NlZCBhZnRlciBhbGwgY2h1bmtzIGFyZSByZWFkJyk7CisgICAgYXNzZXJ0X2FycmF5X2Vx
dWFscyhjaHVua3MsIFsxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMF0sICd0aGUgZXhwZWN0
ZWQgMTAgY2h1bmtzIHNob3VsZCBiZSByZWFkJyk7CisgIH0pOworCit9LCAnUmVhZGFibGVTdHJl
YW0gaW50ZWdyYXRpb24gdGVzdDogYWRhcHRpbmcgYW4gYXN5bmMgcHVsbCBzb3VyY2UnKTsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2dlbmVyYWwuYW55Lndvcmtlci1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFi
bGUtc3RyZWFtcy9nZW5lcmFsLmFueS53b3JrZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIz
OWI3OTFhMTFlYmRkMTc4Njc0YzI4MjYzMmE1MzRhNDU2YTQ1ZTYKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVh
ZGFibGUtc3RyZWFtcy9nZW5lcmFsLmFueS53b3JrZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
NDQgQEAKKworUEFTUyBSZWFkYWJsZVN0cmVhbSBjYW4gYmUgY29uc3RydWN0ZWQgd2l0aCBubyBl
cnJvcnMgCitQQVNTIFJlYWRhYmxlU3RyZWFtIGNhbid0IGJlIGNvbnN0cnVjdGVkIHdpdGggZ2Fy
YmFnZSAKK0ZBSUwgUmVhZGFibGVTdHJlYW0gY2FuJ3QgYmUgY29uc3RydWN0ZWQgd2l0aCBhbiBp
bnZhbGlkIHR5cGUgYXNzZXJ0X3Rocm93c19qczogY29uc3RydWN0b3Igc2hvdWxkIHRocm93IHdo
ZW4gdGhlIHR5cGUgaXMgbnVsbCBmdW5jdGlvbiAiKCkgPT4gbmV3IFJlYWRhYmxlU3RyZWFtKHsg
dHlwZTogbnVsbCB9KSIgdGhyZXcgb2JqZWN0ICJSYW5nZUVycm9yOiBJbnZhbGlkIHR5cGUgZm9y
IHVuZGVybHlpbmcgc291cmNlIiAoIlJhbmdlRXJyb3IiKSBleHBlY3RlZCBpbnN0YW5jZSBvZiBm
dW5jdGlvbiAiZnVuY3Rpb24gVHlwZUVycm9yKCkgeworICAgIFtuYXRpdmUgY29kZV0KK30iICgi
VHlwZUVycm9yIikKK1BBU1MgUmVhZGFibGVTdHJlYW0gY29uc3RydWN0b3Igc2hvdWxkIHRocm93
IGZvciBub24tZnVuY3Rpb24gc3RhcnQgYXJndW1lbnRzIAorRkFJTCBSZWFkYWJsZVN0cmVhbSBj
b25zdHJ1Y3RvciB3aWxsIG5vdCB0b2xlcmF0ZSBpbml0aWFsIGdhcmJhZ2UgYXMgY2FuY2VsIGFy
Z3VtZW50IGFzc2VydF90aHJvd3NfanM6IGNvbnN0cnVjdG9yIHNob3VsZCB0aHJvdyBmdW5jdGlv
biAiKCkgPT4gbmV3IFJlYWRhYmxlU3RyZWFtKHsgY2FuY2VsOiAnMicgfSkiIGRpZCBub3QgdGhy
b3cKK0ZBSUwgUmVhZGFibGVTdHJlYW0gY29uc3RydWN0b3Igd2lsbCBub3QgdG9sZXJhdGUgaW5p
dGlhbCBnYXJiYWdlIGFzIHB1bGwgYXJndW1lbnQgYXNzZXJ0X3Rocm93c19qczogY29uc3RydWN0
b3Igc2hvdWxkIHRocm93IGZ1bmN0aW9uICIoKSA9PiBuZXcgUmVhZGFibGVTdHJlYW0oeyBwdWxs
OiB7IH0gfSkiIGRpZCBub3QgdGhyb3cKK1BBU1MgUmVhZGFibGVTdHJlYW0gc3RhcnQgc2hvdWxk
IGJlIGNhbGxlZCB3aXRoIHRoZSBwcm9wZXIgdGhpc0FyZyAKK1BBU1MgUmVhZGFibGVTdHJlYW0g
c3RhcnQgY29udHJvbGxlciBwYXJhbWV0ZXIgc2hvdWxkIGJlIGV4dGVuc2libGUgCitGQUlMIGRl
ZmF1bHQgUmVhZGFibGVTdHJlYW0gZ2V0UmVhZGVyKCkgc2hvdWxkIG9ubHkgYWNjZXB0IG1vZGU6
dW5kZWZpbmVkIGFzc2VydF90aHJvd3NfanM6IGZ1bmN0aW9uICIoKSA9PiAobmV3IFJlYWRhYmxl
U3RyZWFtKCkpLmdldFJlYWRlcih7IG1vZGU6ICdwb3RhdG8nIH0pIiB0aHJldyBvYmplY3QgIlJh
bmdlRXJyb3I6IEludmFsaWQgbW9kZSBpcyBzcGVjaWZpZWQiICgiUmFuZ2VFcnJvciIpIGV4cGVj
dGVkIGluc3RhbmNlIG9mIGZ1bmN0aW9uICJmdW5jdGlvbiBUeXBlRXJyb3IoKSB7CisgICAgW25h
dGl2ZSBjb2RlXQorfSIgKCJUeXBlRXJyb3IiKQorUEFTUyBSZWFkYWJsZVN0cmVhbSBzaG91bGQg
YmUgYWJsZSB0byBjYWxsIHN0YXJ0IG1ldGhvZCB3aXRoaW4gcHJvdG90eXBlIGNoYWluIG9mIGl0
cyBzb3VyY2UgCitQQVNTIFJlYWRhYmxlU3RyZWFtIHN0YXJ0IHNob3VsZCBiZSBhYmxlIHRvIHJl
dHVybiBhIHByb21pc2UgCitQQVNTIFJlYWRhYmxlU3RyZWFtIHN0YXJ0IHNob3VsZCBiZSBhYmxl
IHRvIHJldHVybiBhIHByb21pc2UgYW5kIHJlamVjdCBpdCAKK1BBU1MgUmVhZGFibGVTdHJlYW0g
c2hvdWxkIGJlIGFibGUgdG8gZW5xdWV1ZSBkaWZmZXJlbnQgb2JqZWN0cy4gCitQQVNTIFJlYWRh
YmxlU3RyZWFtOiBpZiBwdWxsIHJlamVjdHMsIGl0IHNob3VsZCBlcnJvciB0aGUgc3RyZWFtIAor
UEFTUyBSZWFkYWJsZVN0cmVhbTogc2hvdWxkIG9ubHkgY2FsbCBwdWxsIG9uY2UgdXBvbiBzdGFy
dGluZyB0aGUgc3RyZWFtIAorUEFTUyBSZWFkYWJsZVN0cmVhbTogc2hvdWxkIGNhbGwgcHVsbCB3
aGVuIHRyeWluZyB0byByZWFkIGZyb20gYSBzdGFydGVkLCBlbXB0eSBzdHJlYW0gCitQQVNTIFJl
YWRhYmxlU3RyZWFtOiBzaG91bGQgb25seSBjYWxsIHB1bGwgb25jZSBvbiBhIG5vbi1lbXB0eSBz
dHJlYW0gcmVhZCBmcm9tIGJlZm9yZSBzdGFydCBmdWxmaWxscyAKK1BBU1MgUmVhZGFibGVTdHJl
YW06IHNob3VsZCBvbmx5IGNhbGwgcHVsbCBvbmNlIG9uIGEgbm9uLWVtcHR5IHN0cmVhbSByZWFk
IGZyb20gYWZ0ZXIgc3RhcnQgZnVsZmlsbHMgCitQQVNTIFJlYWRhYmxlU3RyZWFtOiBzaG91bGQg
Y2FsbCBwdWxsIGluIHJlYWN0aW9uIHRvIHJlYWQoKWluZyB0aGUgbGFzdCBjaHVuaywgaWYgbm90
IGRyYWluaW5nIAorUEFTUyBSZWFkYWJsZVN0cmVhbTogc2hvdWxkIG5vdCBjYWxsIHB1bGwoKSBp
biByZWFjdGlvbiB0byByZWFkKClpbmcgdGhlIGxhc3QgY2h1bmssIGlmIGRyYWluaW5nIAorUEFT
UyBSZWFkYWJsZVN0cmVhbTogc2hvdWxkIG5vdCBjYWxsIHB1bGwgdW50aWwgdGhlIHByZXZpb3Vz
IHB1bGwgY2FsbCdzIHByb21pc2UgZnVsZmlsbHMgCitQQVNTIFJlYWRhYmxlU3RyZWFtOiBzaG91
bGQgcHVsbCBhZnRlciBzdGFydCwgYW5kIGFmdGVyIGV2ZXJ5IHJlYWQgCitQQVNTIFJlYWRhYmxl
U3RyZWFtOiBzaG91bGQgbm90IGNhbGwgcHVsbCBhZnRlciBzdGFydCBpZiB0aGUgc3RyZWFtIGlz
IG5vdyBjbG9zZWQgCitQQVNTIFJlYWRhYmxlU3RyZWFtOiBzaG91bGQgY2FsbCBwdWxsIGFmdGVy
IGVucXVldWVpbmcgZnJvbSBpbnNpZGUgcHVsbCAod2l0aCBubyByZWFkIHJlcXVlc3RzKSwgaWYg
c3RyYXRlZ3kgYWxsb3dzIAorUEFTUyBSZWFkYWJsZVN0cmVhbSBwdWxsIHNob3VsZCBiZSBhYmxl
IHRvIGNsb3NlIGEgc3RyZWFtLiAKK1BBU1MgUmVhZGFibGVTdHJlYW0gcHVsbCBzaG91bGQgYmUg
YWJsZSB0byBlcnJvciBhIHN0cmVhbS4gCitQQVNTIFJlYWRhYmxlU3RyZWFtIHB1bGwgc2hvdWxk
IGJlIGFibGUgdG8gZXJyb3IgYSBzdHJlYW0gYW5kIHRocm93LiAKK1BBU1MgUmVhZGFibGVTdHJl
YW06IGVucXVldWUgc2hvdWxkIHRocm93IHdoZW4gdGhlIHN0cmVhbSBpcyByZWFkYWJsZSBidXQg
ZHJhaW5pbmcgCitQQVNTIFJlYWRhYmxlU3RyZWFtOiBlbnF1ZXVlIHNob3VsZCB0aHJvdyB3aGVu
IHRoZSBzdHJlYW0gaXMgY2xvc2VkIAorUEFTUyBSZWFkYWJsZVN0cmVhbTogc2hvdWxkIGNhbGwg
dW5kZXJseWluZyBzb3VyY2UgbWV0aG9kcyBhcyBtZXRob2RzIAorUEFTUyBSZWFkYWJsZVN0cmVh
bTogZGVzaXJlZFNpemUgd2hlbiBjbG9zZWQgCitQQVNTIFJlYWRhYmxlU3RyZWFtOiBkZXNpcmVk
U2l6ZSB3aGVuIGVycm9yZWQgCitGQUlMIFN1YmNsYXNzaW5nIFJlYWRhYmxlU3RyZWFtIHNob3Vs
ZCB3b3JrIGFzc2VydF90cnVlOiBTdWJjbGFzcyBvYmplY3Qgc2hvdWxkIGJlIGFuIGluc3RhbmNl
IG9mIFN1YmNsYXNzIGV4cGVjdGVkIHRydWUgZ290IGZhbHNlCitQQVNTIFJlYWRhYmxlU3RyZWFt
IHN0cmF0ZWdpZXM6IHRoZSBkZWZhdWx0IHN0cmF0ZWd5IHNob3VsZCBnaXZlIGRlc2lyZWRTaXpl
IG9mIDEgdG8gc3RhcnQsIGRlY3JlYXNpbmcgYnkgMSBwZXIgZW5xdWV1ZSAKK1BBU1MgUmVhZGFi
bGVTdHJlYW0gc3RyYXRlZ2llczogdGhlIGRlZmF1bHQgc3RyYXRlZ3kgc2hvdWxkIGNvbnRpbnVl
IGdpdmluZyBkZXNpcmVkU2l6ZSBvZiAxIGlmIHRoZSBjaHVua3MgYXJlIHJlYWQgaW1tZWRpYXRl
bHkgCitQQVNTIFJlYWRhYmxlU3RyZWFtIGludGVncmF0aW9uIHRlc3Q6IGFkYXB0aW5nIGEgcmFu
ZG9tIHB1c2ggc291cmNlIAorUEFTUyBSZWFkYWJsZVN0cmVhbSBpbnRlZ3JhdGlvbiB0ZXN0OiBh
ZGFwdGluZyBhIHN5bmMgcHVsbCBzb3VyY2UgCitQQVNTIFJlYWRhYmxlU3RyZWFtIGludGVncmF0
aW9uIHRlc3Q6IGFkYXB0aW5nIGFuIGFzeW5jIHB1bGwgc291cmNlIAorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFi
bGUtc3RyZWFtcy9nZW5lcmFsLmFueS53b3JrZXIuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2dlbmVyYWwu
YW55Lndvcmtlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzODI5MTM1MjhlNjkzYjNhNWQ1NmM2NjBhNDUw
NjA5ODBiNTQ4YzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9nZW5lcmFsLmFueS53
b3JrZXIuaHRtbApAQCAtMCwwICsxIEBACis8IS0tIFRoaXMgZmlsZSBpcyByZXF1aXJlZCBmb3Ig
V2ViS2l0IHRlc3QgaW5mcmFzdHJ1Y3R1cmUgdG8gcnVuIHRoZSB0ZW1wbGF0ZWQgdGVzdCAtLT4K
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9nZW5l
cmFsLmRlZGljYXRlZHdvcmtlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9nZW5lcmFsLmRl
ZGljYXRlZHdvcmtlci1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDQ0NTI2YWQ4YWZjZDVjNzRmMzBlZWJjODAxMWY4MGVhY2FlNWJlZGUuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZ2VuZXJhbC5kZWRp
Y2F0ZWR3b3JrZXItZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAot
Ci1QQVNTIFJlYWRhYmxlU3RyZWFtIGNhbiBiZSBjb25zdHJ1Y3RlZCB3aXRoIG5vIGVycm9ycyAK
LVBBU1MgUmVhZGFibGVTdHJlYW0gY2FuJ3QgYmUgY29uc3RydWN0ZWQgd2l0aCBnYXJiYWdlIAot
UEFTUyBSZWFkYWJsZVN0cmVhbSBjYW4ndCBiZSBjb25zdHJ1Y3RlZCB3aXRoIGFuIGludmFsaWQg
dHlwZSAKLUZBSUwgUmVhZGFibGVTdHJlYW0gaW5zdGFuY2VzIHNob3VsZCBoYXZlIHRoZSBjb3Jy
ZWN0IGxpc3Qgb2YgcHJvcGVydGllcyBhc3NlcnRfZXF1YWxzOiBnZXRSZWFkZXIgc2hvdWxkIGhh
dmUgbm8gcGFyYW1ldGVycyBleHBlY3RlZCAwIGJ1dCBnb3QgMQotUEFTUyBSZWFkYWJsZVN0cmVh
bSBjb25zdHJ1Y3RvciBzaG91bGQgdGhyb3cgZm9yIG5vbi1mdW5jdGlvbiBzdGFydCBhcmd1bWVu
dHMgCi1GQUlMIFJlYWRhYmxlU3RyZWFtIGNvbnN0cnVjdG9yIHdpbGwgbm90IHRvbGVyYXRlIGlu
aXRpYWwgZ2FyYmFnZSBhcyBjYW5jZWwgYXJndW1lbnQgYXNzZXJ0X3Rocm93czogY29uc3RydWN0
b3Igc2hvdWxkIHRocm93IGZ1bmN0aW9uICIoKSA9PiBuZXcgUmVhZGFibGVTdHJlYW0oeyBjYW5j
ZWw6ICcyJyB9KSIgZGlkIG5vdCB0aHJvdwotRkFJTCBSZWFkYWJsZVN0cmVhbSBjb25zdHJ1Y3Rv
ciB3aWxsIG5vdCB0b2xlcmF0ZSBpbml0aWFsIGdhcmJhZ2UgYXMgcHVsbCBhcmd1bWVudCBhc3Nl
cnRfdGhyb3dzOiBjb25zdHJ1Y3RvciBzaG91bGQgdGhyb3cgZnVuY3Rpb24gIigpID0+IG5ldyBS
ZWFkYWJsZVN0cmVhbSh7IHB1bGw6IHsgfSB9KSIgZGlkIG5vdCB0aHJvdwotRkFJTCBSZWFkYWJs
ZVN0cmVhbSBzdGFydCBzaG91bGQgYmUgY2FsbGVkIHdpdGggdGhlIHByb3BlciBwYXJhbWV0ZXJz
IGFzc2VydF9lcXVhbHM6IGNvbnN0cnVjdG9yIHNob3VsZCBoYXZlIG5vIHBhcmFtZXRlcnMgZXhw
ZWN0ZWQgMCBidXQgZ290IDQKLVBBU1MgUmVhZGFibGVTdHJlYW0gc3RhcnQgY29udHJvbGxlciBw
YXJhbWV0ZXIgc2hvdWxkIGJlIGV4dGVuc2libGUgCi1QQVNTIGRlZmF1bHQgUmVhZGFibGVTdHJl
YW0gZ2V0UmVhZGVyKCkgc2hvdWxkIG9ubHkgYWNjZXB0IG1vZGU6dW5kZWZpbmVkIAotUEFTUyBS
ZWFkYWJsZVN0cmVhbSBzaG91bGQgYmUgYWJsZSB0byBjYWxsIHN0YXJ0IG1ldGhvZCB3aXRoaW4g
cHJvdG90eXBlIGNoYWluIG9mIGl0cyBzb3VyY2UgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIHN0YXJ0
IHNob3VsZCBiZSBhYmxlIHRvIHJldHVybiBhIHByb21pc2UgCi1QQVNTIFJlYWRhYmxlU3RyZWFt
IHN0YXJ0IHNob3VsZCBiZSBhYmxlIHRvIHJldHVybiBhIHByb21pc2UgYW5kIHJlamVjdCBpdCAK
LVBBU1MgUmVhZGFibGVTdHJlYW0gc2hvdWxkIGJlIGFibGUgdG8gZW5xdWV1ZSBkaWZmZXJlbnQg
b2JqZWN0cy4gCi1QQVNTIFJlYWRhYmxlU3RyZWFtOiBpZiBwdWxsIHJlamVjdHMsIGl0IHNob3Vs
ZCBlcnJvciB0aGUgc3RyZWFtIAotUEFTUyBSZWFkYWJsZVN0cmVhbTogc2hvdWxkIG9ubHkgY2Fs
bCBwdWxsIG9uY2UgdXBvbiBzdGFydGluZyB0aGUgc3RyZWFtIAotUEFTUyBSZWFkYWJsZVN0cmVh
bTogc2hvdWxkIGNhbGwgcHVsbCB3aGVuIHRyeWluZyB0byByZWFkIGZyb20gYSBzdGFydGVkLCBl
bXB0eSBzdHJlYW0gCi1QQVNTIFJlYWRhYmxlU3RyZWFtOiBzaG91bGQgb25seSBjYWxsIHB1bGwg
b25jZSBvbiBhIG5vbi1lbXB0eSBzdHJlYW0gcmVhZCBmcm9tIGJlZm9yZSBzdGFydCBmdWxmaWxs
cyAKLVBBU1MgUmVhZGFibGVTdHJlYW06IHNob3VsZCBvbmx5IGNhbGwgcHVsbCBvbmNlIG9uIGEg
bm9uLWVtcHR5IHN0cmVhbSByZWFkIGZyb20gYWZ0ZXIgc3RhcnQgZnVsZmlsbHMgCi1QQVNTIFJl
YWRhYmxlU3RyZWFtOiBzaG91bGQgY2FsbCBwdWxsIGluIHJlYWN0aW9uIHRvIHJlYWQoKWluZyB0
aGUgbGFzdCBjaHVuaywgaWYgbm90IGRyYWluaW5nIAotUEFTUyBSZWFkYWJsZVN0cmVhbTogc2hv
dWxkIG5vdCBjYWxsIHB1bGwoKSBpbiByZWFjdGlvbiB0byByZWFkKClpbmcgdGhlIGxhc3QgY2h1
bmssIGlmIGRyYWluaW5nIAotUEFTUyBSZWFkYWJsZVN0cmVhbTogc2hvdWxkIG5vdCBjYWxsIHB1
bGwgdW50aWwgdGhlIHByZXZpb3VzIHB1bGwgY2FsbCdzIHByb21pc2UgZnVsZmlsbHMgCi1QQVNT
IFJlYWRhYmxlU3RyZWFtOiBzaG91bGQgcHVsbCBhZnRlciBzdGFydCwgYW5kIGFmdGVyIGV2ZXJ5
IHJlYWQgCi1QQVNTIFJlYWRhYmxlU3RyZWFtOiBzaG91bGQgbm90IGNhbGwgcHVsbCBhZnRlciBz
dGFydCBpZiB0aGUgc3RyZWFtIGlzIG5vdyBjbG9zZWQgCi1QQVNTIFJlYWRhYmxlU3RyZWFtOiBz
aG91bGQgY2FsbCBwdWxsIGFmdGVyIGVucXVldWVpbmcgZnJvbSBpbnNpZGUgcHVsbCAod2l0aCBu
byByZWFkIHJlcXVlc3RzKSwgaWYgc3RyYXRlZ3kgYWxsb3dzIAotUEFTUyBSZWFkYWJsZVN0cmVh
bSBwdWxsIHNob3VsZCBiZSBhYmxlIHRvIGNsb3NlIGEgc3RyZWFtLiAKLVBBU1MgUmVhZGFibGVT
dHJlYW0gcHVsbCBzaG91bGQgYmUgYWJsZSB0byBlcnJvciBhIHN0cmVhbS4gCi1QQVNTIFJlYWRh
YmxlU3RyZWFtIHB1bGwgc2hvdWxkIGJlIGFibGUgdG8gZXJyb3IgYSBzdHJlYW0gYW5kIHRocm93
LiAKLVBBU1MgUmVhZGFibGVTdHJlYW06IGVucXVldWUgc2hvdWxkIHRocm93IHdoZW4gdGhlIHN0
cmVhbSBpcyByZWFkYWJsZSBidXQgZHJhaW5pbmcgCi1QQVNTIFJlYWRhYmxlU3RyZWFtOiBlbnF1
ZXVlIHNob3VsZCB0aHJvdyB3aGVuIHRoZSBzdHJlYW0gaXMgY2xvc2VkIAotUEFTUyBSZWFkYWJs
ZVN0cmVhbTogc2hvdWxkIGNhbGwgdW5kZXJseWluZyBzb3VyY2UgbWV0aG9kcyBhcyBtZXRob2Rz
IAotUEFTUyBSZWFkYWJsZVN0cmVhbTogZGVzaXJlZFNpemUgd2hlbiBjbG9zZWQgCi1QQVNTIFJl
YWRhYmxlU3RyZWFtOiBkZXNpcmVkU2l6ZSB3aGVuIGVycm9yZWQgCi1QQVNTIFJlYWRhYmxlU3Ry
ZWFtIHN0cmF0ZWdpZXM6IHRoZSBkZWZhdWx0IHN0cmF0ZWd5IHNob3VsZCBnaXZlIGRlc2lyZWRT
aXplIG9mIDEgdG8gc3RhcnQsIGRlY3JlYXNpbmcgYnkgMSBwZXIgZW5xdWV1ZSAKLVBBU1MgUmVh
ZGFibGVTdHJlYW0gc3RyYXRlZ2llczogdGhlIGRlZmF1bHQgc3RyYXRlZ3kgc2hvdWxkIGNvbnRp
bnVlIGdpdmluZyBkZXNpcmVkU2l6ZSBvZiAxIGlmIHRoZSBjaHVua3MgYXJlIHJlYWQgaW1tZWRp
YXRlbHkgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIGludGVncmF0aW9uIHRlc3Q6IGFkYXB0aW5nIGEg
cmFuZG9tIHB1c2ggc291cmNlIAotUEFTUyBSZWFkYWJsZVN0cmVhbSBpbnRlZ3JhdGlvbiB0ZXN0
OiBhZGFwdGluZyBhIHN5bmMgcHVsbCBzb3VyY2UgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIGludGVn
cmF0aW9uIHRlc3Q6IGFkYXB0aW5nIGFuIGFzeW5jIHB1bGwgc291cmNlIAotCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVh
ZGFibGUtc3RyZWFtcy9nZW5lcmFsLmRlZGljYXRlZHdvcmtlci5odG1sIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMv
Z2VuZXJhbC5kZWRpY2F0ZWR3b3JrZXIuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggODZlNDgwMTM5ZTg5MTcyY2NjZDJhMDhmMTQxN2RkMzM5OGY1MzI4YS4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9nZW5lcmFsLmRl
ZGljYXRlZHdvcmtlci5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotPCFET0NU
WVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08dGl0bGU+Z2VuZXJhbC5qcyBkZWRp
Y2F0ZWQgd29ya2VyIHdyYXBwZXIgZmlsZTwvdGl0bGU+Ci0KLTxzY3JpcHQgc3JjPSIvcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rl
c3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLQotPHNjcmlwdD4KLSd1c2Ugc3RyaWN0JzsK
LWZldGNoX3Rlc3RzX2Zyb21fd29ya2VyKG5ldyBXb3JrZXIoJ2dlbmVyYWwuanMnKSk7Ci08L3Nj
cmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2dlbmVyYWwuaHRtbCBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1z
L2dlbmVyYWwuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTc1Y2QwMDlmZDE4
NGUzMDBkNzExMzk3YjAxNGJhMmFiZGU2N2Y4YS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9nZW5lcmFsLmh0bWwKKysrIC9kZXYvbnVs
bApAQCAtMSwxMSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04
Ij4KLTx0aXRsZT5nZW5lcmFsLmpzIGJyb3dzZXIgY29udGV4dCB3cmFwcGVyIGZpbGU8L3RpdGxl
PgotCi08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08
c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci0K
LTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Ci08c2Ny
aXB0IHNyYz0iLi4vcmVzb3VyY2VzL3JzLXV0aWxzLmpzIj48L3NjcmlwdD4KLQotPHNjcmlwdCBz
cmM9ImdlbmVyYWwuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZ2VuZXJh
bC5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy9yZWFkYWJsZS1zdHJlYW1zL2dlbmVyYWwuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDA1MzgyZDQ3ZjdlYjYxZGVhZTI0MGI2ZDk0NDFhOTk4ZTU4ZGQ1NGEuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZ2VuZXJhbC5q
cworKysgL2Rldi9udWxsCkBAIC0xLDkwMSArMCwwIEBACi0ndXNlIHN0cmljdCc7Ci0KLWlmIChz
ZWxmLmltcG9ydFNjcmlwdHMpIHsKLSAgc2VsZi5pbXBvcnRTY3JpcHRzKCcuLi9yZXNvdXJjZXMv
dGVzdC11dGlscy5qcycpOwotICBzZWxmLmltcG9ydFNjcmlwdHMoJy4uL3Jlc291cmNlcy9ycy11
dGlscy5qcycpOwotICBzZWxmLmltcG9ydFNjcmlwdHMoJy9yZXNvdXJjZXMvdGVzdGhhcm5lc3Mu
anMnKTsKLX0KLQotY29uc3QgZXJyb3IxID0gbmV3IEVycm9yKCdlcnJvcjEnKTsKLWVycm9yMS5u
YW1lID0gJ2Vycm9yMSc7Ci0KLXRlc3QoKCkgPT4gewotCi0gIG5ldyBSZWFkYWJsZVN0cmVhbSgp
OyAvLyBSZWFkYWJsZVN0cmVhbSBjb25zdHJ1Y3RlZCB3aXRoIG5vIHBhcmFtZXRlcnMKLSAgbmV3
IFJlYWRhYmxlU3RyZWFtKHsgfSk7IC8vIFJlYWRhYmxlU3RyZWFtIGNvbnN0cnVjdGVkIHdpdGgg
YW4gZW1wdHkgb2JqZWN0IGFzIHBhcmFtZXRlcgotICBuZXcgUmVhZGFibGVTdHJlYW0oeyB0eXBl
OiB1bmRlZmluZWQgfSk7IC8vIFJlYWRhYmxlU3RyZWFtIGNvbnN0cnVjdGVkIHdpdGggdW5kZWZp
bmVkIHR5cGUKLSAgbmV3IFJlYWRhYmxlU3RyZWFtKHVuZGVmaW5lZCk7IC8vIFJlYWRhYmxlU3Ry
ZWFtIGNvbnN0cnVjdGVkIHdpdGggdW5kZWZpbmVkIGFzIHBhcmFtZXRlcgotCi0gIGxldCB4Owot
ICBuZXcgUmVhZGFibGVTdHJlYW0oeCk7IC8vIFJlYWRhYmxlU3RyZWFtIGNvbnN0cnVjdGVkIHdp
dGggYW4gdW5kZWZpbmVkIHZhcmlhYmxlIGFzIHBhcmFtZXRlcgotCi19LCAnUmVhZGFibGVTdHJl
YW0gY2FuIGJlIGNvbnN0cnVjdGVkIHdpdGggbm8gZXJyb3JzJyk7Ci0KLXRlc3QoKCkgPT4gewot
Ci0gIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBuZXcgUmVhZGFibGVTdHJl
YW0obnVsbCksICdjb25zdHJ1Y3RvciBzaG91bGQgdGhyb3cgd2hlbiB0aGUgc291cmNlIGlzIG51
bGwnKTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtIGNhblwndCBiZSBjb25zdHJ1Y3RlZCB3aXRoIGdh
cmJhZ2UnKTsKLQotdGVzdCgoKSA9PiB7Ci0KLSAgYXNzZXJ0X3Rocm93cyhuZXcgUmFuZ2VFcnJv
cigpLCAoKSA9PiBuZXcgUmVhZGFibGVTdHJlYW0oeyB0eXBlOiBudWxsIH0pLAotICAgICdjb25z
dHJ1Y3RvciBzaG91bGQgdGhyb3cgd2hlbiB0aGUgdHlwZSBpcyBudWxsJyk7Ci0gIGFzc2VydF90
aHJvd3MobmV3IFJhbmdlRXJyb3IoKSwgKCkgPT4gbmV3IFJlYWRhYmxlU3RyZWFtKHsgdHlwZTog
JycgfSksCi0gICAgJ2NvbnN0cnVjdG9yIHNob3VsZCB0aHJvdyB3aGVuIHRoZSB0eXBlIGlzIGVt
cHR5IHN0cmluZycpOwotICBhc3NlcnRfdGhyb3dzKG5ldyBSYW5nZUVycm9yKCksICgpID0+IG5l
dyBSZWFkYWJsZVN0cmVhbSh7IHR5cGU6ICdhc2RmJyB9KSwKLSAgICAnY29uc3RydWN0b3Igc2hv
dWxkIHRocm93IHdoZW4gdGhlIHR5cGUgaXMgYXNkZicpOwotICBhc3NlcnRfdGhyb3dzKGVycm9y
MSwgKCkgPT4gbmV3IFJlYWRhYmxlU3RyZWFtKHsgdHlwZTogeyBnZXQgdG9TdHJpbmcoKSB7dGhy
b3cgZXJyb3IxO30gfSB9KSwgJ2NvbnN0cnVjdG9yIHNob3VsZCB0aHJvdyB3aGVuIFRvU3RyaW5n
KCkgdGhyb3dzJyk7Ci0gIGFzc2VydF90aHJvd3MoZXJyb3IxLCAoKSA9PiBuZXcgUmVhZGFibGVT
dHJlYW0oeyB0eXBlOiB7IHRvU3RyaW5nKCkge3Rocm93IGVycm9yMTt9IH0gfSksICdjb25zdHJ1
Y3RvciBzaG91bGQgdGhyb3cgd2hlbiBUb1N0cmluZygpIHRocm93cycpOwotCi19LCAnUmVhZGFi
bGVTdHJlYW0gY2FuXCd0IGJlIGNvbnN0cnVjdGVkIHdpdGggYW4gaW52YWxpZCB0eXBlJyk7Ci0K
LXRlc3QoKCkgPT4gewotCi0gIGNvbnN0IG1ldGhvZHMgPSBbJ2NhbmNlbCcsICdjb25zdHJ1Y3Rv
cicsICdnZXRSZWFkZXInLCAncGlwZVRocm91Z2gnLCAncGlwZVRvJywgJ3RlZSddOwotICBjb25z
dCBwcm9wZXJ0aWVzID0gbWV0aG9kcy5jb25jYXQoWydsb2NrZWQnXSkuc29ydCgpOwotCi0gIGNv
bnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKCk7Ci0gIGNvbnN0IHByb3RvID0gT2JqZWN0Lmdl
dFByb3RvdHlwZU9mKHJzKTsKLQotICBhc3NlcnRfYXJyYXlfZXF1YWxzKE9iamVjdC5nZXRPd25Q
cm9wZXJ0eU5hbWVzKHByb3RvKS5zb3J0KCksIHByb3BlcnRpZXMsICdzaG91bGQgaGF2ZSBhbGwg
dGhlIGNvcnJlY3QgbWV0aG9kcycpOwotCi0gIGZvciAoY29uc3QgbSBvZiBtZXRob2RzKSB7Ci0g
ICAgY29uc3QgcHJvcERlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHByb3Rv
LCBtKTsKLSAgICBhc3NlcnRfZmFsc2UocHJvcERlc2MuZW51bWVyYWJsZSwgJ21ldGhvZCBzaG91
bGQgYmUgbm9uLWVudW1lcmFibGUnKTsKLSAgICBhc3NlcnRfdHJ1ZShwcm9wRGVzYy5jb25maWd1
cmFibGUsICdtZXRob2Qgc2hvdWxkIGJlIGNvbmZpZ3VyYWJsZScpOwotICAgIGFzc2VydF90cnVl
KHByb3BEZXNjLndyaXRhYmxlLCAnbWV0aG9kIHNob3VsZCBiZSB3cml0YWJsZScpOwotICAgIGFz
c2VydF9lcXVhbHModHlwZW9mIHJzW21dLCAnZnVuY3Rpb24nLCAnbWV0aG9kIHNob3VsZCBiZSBh
IGZ1bmN0aW9uJyk7Ci0gICAgY29uc3QgZXhwZWN0ZWROYW1lID0gbSA9PT0gJ2NvbnN0cnVjdG9y
JyA/ICdSZWFkYWJsZVN0cmVhbScgOiBtOwotICAgIGFzc2VydF9lcXVhbHMocnNbbV0ubmFtZSwg
ZXhwZWN0ZWROYW1lLCAnbWV0aG9kIHNob3VsZCBoYXZlIHRoZSBjb3JyZWN0IG5hbWUnKTsKLSAg
fQotCi0gIGNvbnN0IGxvY2tlZFByb3BEZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3Jp
cHRvcihwcm90bywgJ2xvY2tlZCcpOwotICBhc3NlcnRfZmFsc2UobG9ja2VkUHJvcERlc2MuZW51
bWVyYWJsZSwgJ2xvY2tlZCBzaG91bGQgYmUgbm9uLWVudW1lcmFibGUnKTsKLSAgYXNzZXJ0X2Vx
dWFscyhsb2NrZWRQcm9wRGVzYy53cml0YWJsZSwgdW5kZWZpbmVkLCAnbG9ja2VkIHNob3VsZCBu
b3QgYmUgYSBkYXRhIHByb3BlcnR5Jyk7Ci0gIGFzc2VydF9lcXVhbHModHlwZW9mIGxvY2tlZFBy
b3BEZXNjLmdldCwgJ2Z1bmN0aW9uJywgJ2xvY2tlZCBzaG91bGQgaGF2ZSBhIGdldHRlcicpOwot
ICBhc3NlcnRfZXF1YWxzKGxvY2tlZFByb3BEZXNjLnNldCwgdW5kZWZpbmVkLCAnbG9ja2VkIHNo
b3VsZCBub3QgaGF2ZSBhIHNldHRlcicpOwotICBhc3NlcnRfdHJ1ZShsb2NrZWRQcm9wRGVzYy5j
b25maWd1cmFibGUsICdsb2NrZWQgc2hvdWxkIGJlIGNvbmZpZ3VyYWJsZScpOwotCi0gIGFzc2Vy
dF9lcXVhbHMocnMuY2FuY2VsLmxlbmd0aCwgMSwgJ2NhbmNlbCBzaG91bGQgaGF2ZSAxIHBhcmFt
ZXRlcicpOwotICBhc3NlcnRfZXF1YWxzKHJzLmNvbnN0cnVjdG9yLmxlbmd0aCwgMCwgJ2NvbnN0
cnVjdG9yIHNob3VsZCBoYXZlIG5vIHBhcmFtZXRlcnMnKTsKLSAgYXNzZXJ0X2VxdWFscyhycy5n
ZXRSZWFkZXIubGVuZ3RoLCAwLCAnZ2V0UmVhZGVyIHNob3VsZCBoYXZlIG5vIHBhcmFtZXRlcnMn
KTsKLSAgYXNzZXJ0X2VxdWFscyhycy5waXBlVGhyb3VnaC5sZW5ndGgsIDIsICdwaXBlVGhyb3Vn
aCBzaG91bGQgaGF2ZSAyIHBhcmFtZXRlcnMnKTsKLSAgYXNzZXJ0X2VxdWFscyhycy5waXBlVG8u
bGVuZ3RoLCAxLCAncGlwZVRvIHNob3VsZCBoYXZlIDEgcGFyYW1ldGVyJyk7Ci0gIGFzc2VydF9l
cXVhbHMocnMudGVlLmxlbmd0aCwgMCwgJ3RlZSBzaG91bGQgaGF2ZSBubyBwYXJhbWV0ZXJzJyk7
Ci0KLX0sICdSZWFkYWJsZVN0cmVhbSBpbnN0YW5jZXMgc2hvdWxkIGhhdmUgdGhlIGNvcnJlY3Qg
bGlzdCBvZiBwcm9wZXJ0aWVzJyk7Ci0KLXRlc3QoKCkgPT4gewotCi0gIGFzc2VydF90aHJvd3Mo
bmV3IFR5cGVFcnJvcigpLCAoKSA9PiB7Ci0gICAgbmV3IFJlYWRhYmxlU3RyZWFtKHsgc3RhcnQ6
ICdwb3RhdG8nIH0pOwotICB9LCAnY29uc3RydWN0b3Igc2hvdWxkIHRocm93IHdoZW4gc3RhcnQg
aXMgbm90IGEgZnVuY3Rpb24nKTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtIGNvbnN0cnVjdG9yIHNo
b3VsZCB0aHJvdyBmb3Igbm9uLWZ1bmN0aW9uIHN0YXJ0IGFyZ3VtZW50cycpOwotCi10ZXN0KCgp
ID0+IHsKLQotICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gbmV3IFJlYWRh
YmxlU3RyZWFtKHsgY2FuY2VsOiAnMicgfSksICdjb25zdHJ1Y3RvciBzaG91bGQgdGhyb3cnKTsK
LQotfSwgJ1JlYWRhYmxlU3RyZWFtIGNvbnN0cnVjdG9yIHdpbGwgbm90IHRvbGVyYXRlIGluaXRp
YWwgZ2FyYmFnZSBhcyBjYW5jZWwgYXJndW1lbnQnKTsKLQotdGVzdCgoKSA9PiB7Ci0KLSAgYXNz
ZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IG5ldyBSZWFkYWJsZVN0cmVhbSh7IHB1
bGw6IHsgfSB9KSwgJ2NvbnN0cnVjdG9yIHNob3VsZCB0aHJvdycpOwotCi19LCAnUmVhZGFibGVT
dHJlYW0gY29uc3RydWN0b3Igd2lsbCBub3QgdG9sZXJhdGUgaW5pdGlhbCBnYXJiYWdlIGFzIHB1
bGwgYXJndW1lbnQnKTsKLQotdGVzdCgoKSA9PiB7Ci0KLSAgbGV0IHN0YXJ0Q2FsbGVkID0gZmFs
c2U7Ci0KLSAgY29uc3Qgc291cmNlID0gewotICAgIHN0YXJ0KGNvbnRyb2xsZXIpIHsKLSAgICAg
IGFzc2VydF9lcXVhbHModGhpcywgc291cmNlLCAnc291cmNlIGlzIHRoaXMgZHVyaW5nIHN0YXJ0
Jyk7Ci0KLSAgICAgIGNvbnN0IG1ldGhvZHMgPSBbJ2Nsb3NlJywgJ2VucXVldWUnLCAnZXJyb3In
LCAnY29uc3RydWN0b3InXTsKLSAgICAgIGNvbnN0IHByb3BlcnRpZXMgPSBbJ2Rlc2lyZWRTaXpl
J10uY29uY2F0KG1ldGhvZHMpLnNvcnQoKTsKLSAgICAgIGNvbnN0IHByb3RvID0gT2JqZWN0Lmdl
dFByb3RvdHlwZU9mKGNvbnRyb2xsZXIpOwotCi0gICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKE9i
amVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHByb3RvKS5zb3J0KCksIHByb3BlcnRpZXMsCi0gICAg
ICAgICd0aGUgY29udHJvbGxlciBzaG91bGQgaGF2ZSB0aGUgcmlnaHQgcHJvcGVydGllcycpOwot
Ci0gICAgICBmb3IgKGNvbnN0IG0gb2YgbWV0aG9kcykgewotICAgICAgICBjb25zdCBwcm9wRGVz
YyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocHJvdG8sIG0pOwotICAgICAgICBh
c3NlcnRfZXF1YWxzKHR5cGVvZiBjb250cm9sbGVyW21dLCAnZnVuY3Rpb24nLCBgc2hvdWxkIGhh
dmUgYSAke219IG1ldGhvZGApOwotICAgICAgICBhc3NlcnRfZmFsc2UocHJvcERlc2MuZW51bWVy
YWJsZSwgbSArICcgc2hvdWxkIGJlIG5vbi1lbnVtZXJhYmxlJyk7Ci0gICAgICAgIGFzc2VydF90
cnVlKHByb3BEZXNjLmNvbmZpZ3VyYWJsZSwgbSArICcgc2hvdWxkIGJlIGNvbmZpZ3VyYWJsZScp
OwotICAgICAgICBhc3NlcnRfdHJ1ZShwcm9wRGVzYy53cml0YWJsZSwgbSArICcgc2hvdWxkIGJl
IHdyaXRhYmxlJyk7Ci0gICAgICAgIGNvbnN0IGV4cGVjdGVkTmFtZSA9IG0gPT09ICdjb25zdHJ1
Y3RvcicgPyAnUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlcicgOiBtOwotICAgICAgICBh
c3NlcnRfZXF1YWxzKGNvbnRyb2xsZXJbbV0ubmFtZSwgZXhwZWN0ZWROYW1lLCAnbWV0aG9kIHNo
b3VsZCBoYXZlIHRoZSBjb3JyZWN0IG5hbWUnKTsKLSAgICAgIH0KLQotICAgICAgY29uc3QgZGVz
aXJlZFNpemVQcm9wRGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocHJvdG8s
ICdkZXNpcmVkU2l6ZScpOwotICAgICAgYXNzZXJ0X2ZhbHNlKGRlc2lyZWRTaXplUHJvcERlc2Mu
ZW51bWVyYWJsZSwgJ2Rlc2lyZWRTaXplIHNob3VsZCBiZSBub24tZW51bWVyYWJsZScpOwotICAg
ICAgYXNzZXJ0X2VxdWFscyhkZXNpcmVkU2l6ZVByb3BEZXNjLndyaXRhYmxlLCB1bmRlZmluZWQs
ICdkZXNpcmVkU2l6ZSBzaG91bGQgbm90IGJlIGEgZGF0YSBwcm9wZXJ0eScpOwotICAgICAgYXNz
ZXJ0X2VxdWFscyh0eXBlb2YgZGVzaXJlZFNpemVQcm9wRGVzYy5nZXQsICdmdW5jdGlvbicsICdk
ZXNpcmVkU2l6ZSBzaG91bGQgaGF2ZSBhIGdldHRlcicpOwotICAgICAgYXNzZXJ0X2VxdWFscyhk
ZXNpcmVkU2l6ZVByb3BEZXNjLnNldCwgdW5kZWZpbmVkLCAnZGVzaXJlZFNpemUgc2hvdWxkIG5v
dCBoYXZlIGEgc2V0dGVyJyk7Ci0gICAgICBhc3NlcnRfdHJ1ZShkZXNpcmVkU2l6ZVByb3BEZXNj
LmNvbmZpZ3VyYWJsZSwgJ2Rlc2lyZWRTaXplIHNob3VsZCBiZSBjb25maWd1cmFibGUnKTsKLQot
ICAgICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmNsb3NlLmxlbmd0aCwgMCwgJ2Nsb3NlIHNo
b3VsZCBoYXZlIG5vIHBhcmFtZXRlcnMnKTsKLSAgICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxl
ci5jb25zdHJ1Y3Rvci5sZW5ndGgsIDAsICdjb25zdHJ1Y3RvciBzaG91bGQgaGF2ZSBubyBwYXJh
bWV0ZXJzJyk7Ci0gICAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZW5xdWV1ZS5sZW5ndGgs
IDEsICdlbnF1ZXVlIHNob3VsZCBoYXZlIDEgcGFyYW1ldGVyJyk7Ci0gICAgICBhc3NlcnRfZXF1
YWxzKGNvbnRyb2xsZXIuZXJyb3IubGVuZ3RoLCAxLCAnZXJyb3Igc2hvdWxkIGhhdmUgMSBwYXJh
bWV0ZXInKTsKLQotICAgICAgc3RhcnRDYWxsZWQgPSB0cnVlOwotICAgIH0KLSAgfTsKLQotICBu
ZXcgUmVhZGFibGVTdHJlYW0oc291cmNlKTsKLSAgYXNzZXJ0X3RydWUoc3RhcnRDYWxsZWQpOwot
Ci19LCAnUmVhZGFibGVTdHJlYW0gc3RhcnQgc2hvdWxkIGJlIGNhbGxlZCB3aXRoIHRoZSBwcm9w
ZXIgcGFyYW1ldGVycycpOwotCi10ZXN0KCgpID0+IHsKLQotICBsZXQgc3RhcnRDYWxsZWQgPSBm
YWxzZTsKLSAgY29uc3Qgc291cmNlID0gewotICAgIHN0YXJ0KGNvbnRyb2xsZXIpIHsKLSAgICAg
IGNvbnN0IHByb3BlcnRpZXMgPSBbJ2Nsb3NlJywgJ2NvbnN0cnVjdG9yJywgJ2Rlc2lyZWRTaXpl
JywgJ2VucXVldWUnLCAnZXJyb3InXTsKLSAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoT2JqZWN0
LmdldE93blByb3BlcnR5TmFtZXMoT2JqZWN0LmdldFByb3RvdHlwZU9mKGNvbnRyb2xsZXIpKS5z
b3J0KCksIHByb3BlcnRpZXMsCi0gICAgICAgICdwcm90b3R5cGUgc2hvdWxkIGhhdmUgdGhlIHJp
Z2h0IHByb3BlcnRpZXMnKTsKLQotICAgICAgY29udHJvbGxlci50ZXN0ID0gJyc7Ci0gICAgICBh
c3NlcnRfYXJyYXlfZXF1YWxzKE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKE9iamVjdC5nZXRQ
cm90b3R5cGVPZihjb250cm9sbGVyKSkuc29ydCgpLCBwcm9wZXJ0aWVzLAotICAgICAgICAncHJv
dG90eXBlIHNob3VsZCBzdGlsbCBoYXZlIHRoZSByaWdodCBwcm9wZXJ0aWVzJyk7Ci0gICAgICBh
c3NlcnRfbm90X2VxdWFscyhPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhjb250cm9sbGVyKS5p
bmRleE9mKCd0ZXN0JyksIC0xLAotICAgICAgICAnInRlc3QiIHNob3VsZCBiZSBhIHByb3BlcnR5
IG9mIHRoZSBjb250cm9sbGVyJyk7Ci0KLSAgICAgIHN0YXJ0Q2FsbGVkID0gdHJ1ZTsKLSAgICB9
Ci0gIH07Ci0KLSAgbmV3IFJlYWRhYmxlU3RyZWFtKHNvdXJjZSk7Ci0gIGFzc2VydF90cnVlKHN0
YXJ0Q2FsbGVkKTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtIHN0YXJ0IGNvbnRyb2xsZXIgcGFyYW1l
dGVyIHNob3VsZCBiZSBleHRlbnNpYmxlJyk7Ci0KLXRlc3QoKCkgPT4gewotICAobmV3IFJlYWRh
YmxlU3RyZWFtKCkpLmdldFJlYWRlcih1bmRlZmluZWQpOwotICAobmV3IFJlYWRhYmxlU3RyZWFt
KCkpLmdldFJlYWRlcih7fSk7Ci0gIChuZXcgUmVhZGFibGVTdHJlYW0oKSkuZ2V0UmVhZGVyKHsg
bW9kZTogdW5kZWZpbmVkLCBub3Rtb2RlOiAnaWdub3JlZCcgfSk7Ci0gIGFzc2VydF90aHJvd3Mo
bmV3IFJhbmdlRXJyb3IoKSwgKCkgPT4gKG5ldyBSZWFkYWJsZVN0cmVhbSgpKS5nZXRSZWFkZXIo
eyBtb2RlOiAncG90YXRvJyB9KSk7Ci19LCAnZGVmYXVsdCBSZWFkYWJsZVN0cmVhbSBnZXRSZWFk
ZXIoKSBzaG91bGQgb25seSBhY2NlcHQgbW9kZTp1bmRlZmluZWQnKTsKLQotcHJvbWlzZV90ZXN0
KCgpID0+IHsKLQotICBmdW5jdGlvbiBTaW1wbGVTdHJlYW1Tb3VyY2UoKSB7fQotICBsZXQgcmVz
b2x2ZTsKLSAgY29uc3QgcHJvbWlzZSA9IG5ldyBQcm9taXNlKHIgPT4gcmVzb2x2ZSA9IHIpOwot
ICBTaW1wbGVTdHJlYW1Tb3VyY2UucHJvdG90eXBlID0gewotICAgIHN0YXJ0OiByZXNvbHZlCi0g
IH07Ci0KLSAgbmV3IFJlYWRhYmxlU3RyZWFtKG5ldyBTaW1wbGVTdHJlYW1Tb3VyY2UoKSk7Ci0g
IHJldHVybiBwcm9taXNlOwotCi19LCAnUmVhZGFibGVTdHJlYW0gc2hvdWxkIGJlIGFibGUgdG8g
Y2FsbCBzdGFydCBtZXRob2Qgd2l0aGluIHByb3RvdHlwZSBjaGFpbiBvZiBpdHMgc291cmNlJyk7
Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJl
YW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIHJldHVybiBkZWxheSg1KS50aGVuKCgpID0+IHsK
LSAgICAgICAgYy5lbnF1ZXVlKCdhJyk7Ci0gICAgICAgIGMuY2xvc2UoKTsKLSAgICAgIH0pOwot
ICAgIH0KLSAgfSk7Ci0KLSAgY29uc3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7Ci0gIHJldHVy
biByZWFkZXIucmVhZCgpLnRoZW4ociA9PiB7Ci0gICAgYXNzZXJ0X29iamVjdF9lcXVhbHMociwg
eyB2YWx1ZTogJ2EnLCBkb25lOiBmYWxzZSB9LCAndmFsdWUgcmVhZCBzaG91bGQgYmUgdGhlIG9u
ZSBlbnF1ZXVlZCcpOwotICAgIHJldHVybiByZWFkZXIuY2xvc2VkOwotICB9KTsKLQotfSwgJ1Jl
YWRhYmxlU3RyZWFtIHN0YXJ0IHNob3VsZCBiZSBhYmxlIHRvIHJldHVybiBhIHByb21pc2UnKTsK
LQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLQotICBjb25zdCB0aGVFcnJvciA9IG5ldyBFcnJvcign
cmVqZWN0ZWQhJyk7Ci0gIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFy
dCgpIHsKLSAgICAgIHJldHVybiBkZWxheSgxKS50aGVuKCgpID0+IHsKLSAgICAgICAgdGhyb3cg
dGhlRXJyb3I7Ci0gICAgICB9KTsKLSAgICB9Ci0gIH0pOwotCi0gIHJldHVybiBycy5nZXRSZWFk
ZXIoKS5jbG9zZWQudGhlbigoKSA9PiB7Ci0gICAgYXNzZXJ0X3VucmVhY2hlZCgnY2xvc2VkIHBy
b21pc2Ugc2hvdWxkIGJlIHJlamVjdGVkJyk7Ci0gIH0sIGUgPT4gewotICAgIGFzc2VydF9lcXVh
bHMoZSwgdGhlRXJyb3IsICdwcm9taXNlIHNob3VsZCBiZSByZWplY3RlZCB3aXRoIHRoZSBzYW1l
IGVycm9yJyk7Ci0gIH0pOwotCi19LCAnUmVhZGFibGVTdHJlYW0gc3RhcnQgc2hvdWxkIGJlIGFi
bGUgdG8gcmV0dXJuIGEgcHJvbWlzZSBhbmQgcmVqZWN0IGl0Jyk7Ci0KLXByb21pc2VfdGVzdCgo
KSA9PiB7Ci0KLSAgY29uc3Qgb2JqZWN0cyA9IFsKLSAgICB7IHBvdGF0bzogJ0dpdmUgbWUgbW9y
ZSEnIH0sCi0gICAgJ3Rlc3QnLAotICAgIDEKLSAgXTsKLQotICBjb25zdCBycyA9IG5ldyBSZWFk
YWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgZm9yIChjb25zdCBvIG9mIG9iamVj
dHMpIHsKLSAgICAgICAgYy5lbnF1ZXVlKG8pOwotICAgICAgfQotICAgICAgYy5jbG9zZSgpOwot
ICAgIH0KLSAgfSk7Ci0KLSAgY29uc3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7Ci0KLSAgcmV0
dXJuIFByb21pc2UuYWxsKFtyZWFkZXIucmVhZCgpLCByZWFkZXIucmVhZCgpLCByZWFkZXIucmVh
ZCgpLCByZWFkZXIuY2xvc2VkXSkudGhlbihyID0+IHsKLSAgICBhc3NlcnRfb2JqZWN0X2VxdWFs
cyhyWzBdLCB7IHZhbHVlOiBvYmplY3RzWzBdLCBkb25lOiBmYWxzZSB9LCAndmFsdWUgcmVhZCBz
aG91bGQgYmUgdGhlIG9uZSBlbnF1ZXVlZCcpOwotICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJb
MV0sIHsgdmFsdWU6IG9iamVjdHNbMV0sIGRvbmU6IGZhbHNlIH0sICd2YWx1ZSByZWFkIHNob3Vs
ZCBiZSB0aGUgb25lIGVucXVldWVkJyk7Ci0gICAgYXNzZXJ0X29iamVjdF9lcXVhbHMoclsyXSwg
eyB2YWx1ZTogb2JqZWN0c1syXSwgZG9uZTogZmFsc2UgfSwgJ3ZhbHVlIHJlYWQgc2hvdWxkIGJl
IHRoZSBvbmUgZW5xdWV1ZWQnKTsKLSAgfSk7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbSBzaG91bGQg
YmUgYWJsZSB0byBlbnF1ZXVlIGRpZmZlcmVudCBvYmplY3RzLicpOwotCi1wcm9taXNlX3Rlc3Qo
KCkgPT4gewotCi0gIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKCdwdWxsIGZhaWx1cmUnKTsKLSAg
Y29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHB1bGwoKSB7Ci0gICAgICByZXR1
cm4gUHJvbWlzZS5yZWplY3QoZXJyb3IpOwotICAgIH0KLSAgfSk7Ci0KLSAgY29uc3QgcmVhZGVy
ID0gcnMuZ2V0UmVhZGVyKCk7Ci0KLSAgbGV0IGNsb3NlZCA9IGZhbHNlOwotICBsZXQgcmVhZCA9
IGZhbHNlOwotCi0gIHJldHVybiBQcm9taXNlLmFsbChbCi0gICAgcmVhZGVyLmNsb3NlZC50aGVu
KCgpID0+IHsKLSAgICAgIGFzc2VydF91bnJlYWNoZWQoJ2Nsb3NlZCBzaG91bGQgYmUgcmVqZWN0
ZWQnKTsKLSAgICB9LCBlID0+IHsKLSAgICAgIGNsb3NlZCA9IHRydWU7Ci0gICAgICBhc3NlcnRf
dHJ1ZShyZWFkKTsKLSAgICAgIGFzc2VydF9lcXVhbHMoZSwgZXJyb3IsICdjbG9zZWQgc2hvdWxk
IGJlIHJlamVjdGVkIHdpdGggdGhlIHRocm93biBlcnJvcicpOwotICAgIH0pLAotICAgIHJlYWRl
ci5yZWFkKCkudGhlbigoKSA9PiB7Ci0gICAgICBhc3NlcnRfdW5yZWFjaGVkKCdyZWFkKCkgc2hv
dWxkIGJlIHJlamVjdGVkJyk7Ci0gICAgfSwgZSA9PiB7Ci0gICAgICByZWFkID0gdHJ1ZTsKLSAg
ICAgIGFzc2VydF9mYWxzZShjbG9zZWQpOwotICAgICAgYXNzZXJ0X2VxdWFscyhlLCBlcnJvciwg
J3JlYWQoKSBzaG91bGQgYmUgcmVqZWN0ZWQgd2l0aCB0aGUgdGhyb3duIGVycm9yJyk7Ci0gICAg
fSkKLSAgXSk7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbTogaWYgcHVsbCByZWplY3RzLCBpdCBzaG91
bGQgZXJyb3IgdGhlIHN0cmVhbScpOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotCi0gIGxldCBw
dWxsQ291bnQgPSAwOwotICBjb25zdCBzdGFydFByb21pc2UgPSBQcm9taXNlLnJlc29sdmUoKTsK
LQotICBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KCkgewotICAgICAgcmV0dXJuIHN0
YXJ0UHJvbWlzZTsKLSAgICB9LAotICAgIHB1bGwoKSB7Ci0gICAgICBwdWxsQ291bnQrKzsKLSAg
ICB9Ci0gIH0pOwotCi0gIHJldHVybiBzdGFydFByb21pc2UudGhlbigoKSA9PiB7Ci0gICAgYXNz
ZXJ0X2VxdWFscyhwdWxsQ291bnQsIDEsICdwdWxsIHNob3VsZCBiZSBjYWxsZWQgb25jZSBzdGFy
dCBmaW5pc2hlcycpOwotICAgIHJldHVybiBkZWxheSgxMCk7Ci0gIH0pLnRoZW4oKCkgPT4gewot
ICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAxLCAncHVsbCBzaG91bGQgYmUgY2FsbGVkIGV4
YWN0bHkgb25jZScpOwotICB9KTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtOiBzaG91bGQgb25seSBj
YWxsIHB1bGwgb25jZSB1cG9uIHN0YXJ0aW5nIHRoZSBzdHJlYW0nKTsKLQotcHJvbWlzZV90ZXN0
KCgpID0+IHsKLQotICBsZXQgcHVsbENvdW50ID0gMDsKLSAgY29uc3Qgc3RhcnRQcm9taXNlID0g
UHJvbWlzZS5yZXNvbHZlKCk7Ci0KLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewot
ICAgIHN0YXJ0KCkgewotICAgICAgcmV0dXJuIHN0YXJ0UHJvbWlzZTsKLSAgICB9LAotICAgIHB1
bGwoYykgewotICAgICAgLy8gRG9uJ3QgZW5xdWV1ZSBpbW1lZGlhdGVseSBhZnRlciBzdGFydC4g
V2Ugd2FudCB0aGUgc3RyZWFtIHRvIGJlIGVtcHR5IHdoZW4gd2UgY2FsbCAucmVhZCgpIG9uIGl0
LgotICAgICAgaWYgKHB1bGxDb3VudCA+IDApIHsKLSAgICAgICAgYy5lbnF1ZXVlKHB1bGxDb3Vu
dCk7Ci0gICAgICB9Ci0gICAgICArK3B1bGxDb3VudDsKLSAgICB9Ci0gIH0pOwotCi0gIHJldHVy
biBzdGFydFByb21pc2UudGhlbigoKSA9PiB7Ci0gICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQs
IDEsICdwdWxsIHNob3VsZCBiZSBjYWxsZWQgb25jZSBzdGFydCBmaW5pc2hlcycpOwotICB9KS50
aGVuKCgpID0+IHsKLSAgICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKLSAgICBjb25z
dCByZWFkID0gcmVhZGVyLnJlYWQoKTsKLSAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMiwg
J3B1bGwgc2hvdWxkIGJlIGNhbGxlZCB3aGVuIHJlYWQgaXMgY2FsbGVkJyk7Ci0gICAgcmV0dXJu
IHJlYWQ7Ci0gIH0pLnRoZW4ocmVzdWx0ID0+IHsKLSAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3Vu
dCwgMywgJ3B1bGwgc2hvdWxkIGJlIGNhbGxlZCBhZ2FpbiBpbiByZWFjdGlvbiB0byBjYWxsaW5n
IHJlYWQnKTsKLSAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6IDEsIGRv
bmU6IGZhbHNlIH0sICd0aGUgcmVzdWx0IHJlYWQgc2hvdWxkIGJlIHRoZSBvbmUgZW5xdWV1ZWQn
KTsKLSAgfSk7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbTogc2hvdWxkIGNhbGwgcHVsbCB3aGVuIHRy
eWluZyB0byByZWFkIGZyb20gYSBzdGFydGVkLCBlbXB0eSBzdHJlYW0nKTsKLQotcHJvbWlzZV90
ZXN0KCgpID0+IHsKLQotICBsZXQgcHVsbENvdW50ID0gMDsKLSAgY29uc3Qgc3RhcnRQcm9taXNl
ID0gUHJvbWlzZS5yZXNvbHZlKCk7Ci0KLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0o
ewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGMuZW5xdWV1ZSgnYScpOwotICAgICAgcmV0dXJuIHN0
YXJ0UHJvbWlzZTsKLSAgICB9LAotICAgIHB1bGwoKSB7Ci0gICAgICBwdWxsQ291bnQrKzsKLSAg
ICB9Ci0gIH0pOwotCi0gIGNvbnN0IHJlYWQgPSBycy5nZXRSZWFkZXIoKS5yZWFkKCk7Ci0gIGFz
c2VydF9lcXVhbHMocHVsbENvdW50LCAwLCAnY2FsbGluZyByZWFkKCkgc2hvdWxkIG5vdCBjYXVz
ZSBwdWxsIHRvIGJlIGNhbGxlZCB5ZXQnKTsKLQotICByZXR1cm4gc3RhcnRQcm9taXNlLnRoZW4o
KCkgPT4gewotICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAxLCAncHVsbCBzaG91bGQgYmUg
Y2FsbGVkIG9uY2Ugc3RhcnQgZmluaXNoZXMnKTsKLSAgICByZXR1cm4gcmVhZDsKLSAgfSkudGhl
bihyID0+IHsKLSAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyLCB7IHZhbHVlOiAnYScsIGRvbmU6
IGZhbHNlIH0sICdmaXJzdCByZWFkKCkgc2hvdWxkIHJldHVybiBmaXJzdCBjaHVuaycpOwotICAg
IGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAxLCAncHVsbCBzaG91bGQgbm90IGhhdmUgYmVlbiBj
YWxsZWQgYWdhaW4nKTsKLSAgICByZXR1cm4gZGVsYXkoMTApOwotICB9KS50aGVuKCgpID0+IHsK
LSAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMSwgJ3B1bGwgc2hvdWxkIGJlIGNhbGxlZCBl
eGFjdGx5IG9uY2UnKTsKLSAgfSk7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbTogc2hvdWxkIG9ubHkg
Y2FsbCBwdWxsIG9uY2Ugb24gYSBub24tZW1wdHkgc3RyZWFtIHJlYWQgZnJvbSBiZWZvcmUgc3Rh
cnQgZnVsZmlsbHMnKTsKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLQotICBsZXQgcHVsbENvdW50
ID0gMDsKLSAgY29uc3Qgc3RhcnRQcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKCk7Ci0KLSAgY29u
c3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGMuZW5x
dWV1ZSgnYScpOwotICAgICAgcmV0dXJuIHN0YXJ0UHJvbWlzZTsKLSAgICB9LAotICAgIHB1bGwo
KSB7Ci0gICAgICBwdWxsQ291bnQrKzsKLSAgICB9Ci0gIH0pOwotCi0gIHJldHVybiBzdGFydFBy
b21pc2UudGhlbigoKSA9PiB7Ci0gICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDAsICdwdWxs
IHNob3VsZCBub3QgYmUgY2FsbGVkIG9uY2Ugc3RhcnQgZmluaXNoZXMsIHNpbmNlIHRoZSBxdWV1
ZSBpcyBmdWxsJyk7Ci0KLSAgICBjb25zdCByZWFkID0gcnMuZ2V0UmVhZGVyKCkucmVhZCgpOwot
ICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAxLCAnY2FsbGluZyByZWFkKCkgc2hvdWxkIGNh
dXNlIHB1bGwgdG8gYmUgY2FsbGVkIGltbWVkaWF0ZWx5Jyk7Ci0gICAgcmV0dXJuIHJlYWQ7Ci0g
IH0pLnRoZW4ociA9PiB7Ci0gICAgYXNzZXJ0X29iamVjdF9lcXVhbHMociwgeyB2YWx1ZTogJ2En
LCBkb25lOiBmYWxzZSB9LCAnZmlyc3QgcmVhZCgpIHNob3VsZCByZXR1cm4gZmlyc3QgY2h1bmsn
KTsKLSAgICByZXR1cm4gZGVsYXkoMTApOwotICB9KS50aGVuKCgpID0+IHsKLSAgICBhc3NlcnRf
ZXF1YWxzKHB1bGxDb3VudCwgMSwgJ3B1bGwgc2hvdWxkIGJlIGNhbGxlZCBleGFjdGx5IG9uY2Un
KTsKLSAgfSk7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbTogc2hvdWxkIG9ubHkgY2FsbCBwdWxsIG9u
Y2Ugb24gYSBub24tZW1wdHkgc3RyZWFtIHJlYWQgZnJvbSBhZnRlciBzdGFydCBmdWxmaWxscycp
OwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotCi0gIGxldCBwdWxsQ291bnQgPSAwOwotICBsZXQg
Y29udHJvbGxlcjsKLSAgY29uc3Qgc3RhcnRQcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKCk7Ci0K
LSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAg
IGNvbnRyb2xsZXIgPSBjOwotICAgICAgcmV0dXJuIHN0YXJ0UHJvbWlzZTsKLSAgICB9LAotICAg
IHB1bGwoKSB7Ci0gICAgICArK3B1bGxDb3VudDsKLSAgICB9Ci0gIH0pOwotCi0gIGNvbnN0IHJl
YWRlciA9IHJzLmdldFJlYWRlcigpOwotICByZXR1cm4gc3RhcnRQcm9taXNlLnRoZW4oKCkgPT4g
ewotICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAxLCAncHVsbCBzaG91bGQgaGF2ZSBiZWVu
IGNhbGxlZCBvbmNlIGJ5IHRoZSB0aW1lIHRoZSBzdHJlYW0gc3RhcnRzJyk7Ci0KLSAgICBjb250
cm9sbGVyLmVucXVldWUoJ2EnKTsKLSAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMSwgJ3B1
bGwgc2hvdWxkIG5vdCBoYXZlIGJlZW4gY2FsbGVkIGFnYWluIGFmdGVyIGVucXVldWUnKTsKLQot
ICAgIHJldHVybiByZWFkZXIucmVhZCgpOwotICB9KS50aGVuKCgpID0+IHsKLSAgICBhc3NlcnRf
ZXF1YWxzKHB1bGxDb3VudCwgMiwgJ3B1bGwgc2hvdWxkIGhhdmUgYmVlbiBjYWxsZWQgYWdhaW4g
YWZ0ZXIgcmVhZCcpOwotCi0gICAgcmV0dXJuIGRlbGF5KDEwKTsKLSAgfSkudGhlbigoKSA9PiB7
Ci0gICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDIsICdwdWxsIHNob3VsZCBiZSBjYWxsZWQg
ZXhhY3RseSB0d2ljZScpOwotICB9KTsKLX0sICdSZWFkYWJsZVN0cmVhbTogc2hvdWxkIGNhbGwg
cHVsbCBpbiByZWFjdGlvbiB0byByZWFkKClpbmcgdGhlIGxhc3QgY2h1bmssIGlmIG5vdCBkcmFp
bmluZycpOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotCi0gIGxldCBwdWxsQ291bnQgPSAwOwot
ICBsZXQgY29udHJvbGxlcjsKLSAgY29uc3Qgc3RhcnRQcm9taXNlID0gUHJvbWlzZS5yZXNvbHZl
KCk7Ci0KLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsK
LSAgICAgIGNvbnRyb2xsZXIgPSBjOwotICAgICAgcmV0dXJuIHN0YXJ0UHJvbWlzZTsKLSAgICB9
LAotICAgIHB1bGwoKSB7Ci0gICAgICArK3B1bGxDb3VudDsKLSAgICB9Ci0gIH0pOwotCi0gIGNv
bnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcigpOwotCi0gIHJldHVybiBzdGFydFByb21pc2UudGhl
bigoKSA9PiB7Ci0gICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDEsICdwdWxsIHNob3VsZCBo
YXZlIGJlZW4gY2FsbGVkIG9uY2UgYnkgdGhlIHRpbWUgdGhlIHN0cmVhbSBzdGFydHMnKTsKLQot
ICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYScpOwotICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50
LCAxLCAncHVsbCBzaG91bGQgbm90IGhhdmUgYmVlbiBjYWxsZWQgYWdhaW4gYWZ0ZXIgZW5xdWV1
ZScpOwotCi0gICAgY29udHJvbGxlci5jbG9zZSgpOwotCi0gICAgcmV0dXJuIHJlYWRlci5yZWFk
KCk7Ci0gIH0pLnRoZW4oKCkgPT4gewotICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAxLCAn
cHVsbCBzaG91bGQgbm90IGhhdmUgYmVlbiBjYWxsZWQgYSBzZWNvbmQgdGltZSBhZnRlciByZWFk
Jyk7Ci0KLSAgICByZXR1cm4gZGVsYXkoMTApOwotICB9KS50aGVuKCgpID0+IHsKLSAgICBhc3Nl
cnRfZXF1YWxzKHB1bGxDb3VudCwgMSwgJ3B1bGwgc2hvdWxkIGJlIGNhbGxlZCBleGFjdGx5IG9u
Y2UnKTsKLSAgfSk7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbTogc2hvdWxkIG5vdCBjYWxsIHB1bGwo
KSBpbiByZWFjdGlvbiB0byByZWFkKClpbmcgdGhlIGxhc3QgY2h1bmssIGlmIGRyYWluaW5nJyk7
Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgbGV0IHJlc29sdmU7Ci0gIGxldCByZXR1cm5l
ZFByb21pc2U7Ci0gIGxldCB0aW1lc0NhbGxlZCA9IDA7Ci0gIGNvbnN0IHN0YXJ0UHJvbWlzZSA9
IFByb21pc2UucmVzb2x2ZSgpOwotCi0gIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsK
LSAgICBzdGFydCgpIHsKLSAgICAgIHJldHVybiBzdGFydFByb21pc2U7Ci0gICAgfSwKLSAgICBw
dWxsKGMpIHsKLSAgICAgIGMuZW5xdWV1ZSgrK3RpbWVzQ2FsbGVkKTsKLSAgICAgIHJldHVybmVk
UHJvbWlzZSA9IG5ldyBQcm9taXNlKHIgPT4gcmVzb2x2ZSA9IHIpOwotICAgICAgcmV0dXJuIHJl
dHVybmVkUHJvbWlzZTsKLSAgICB9Ci0gIH0pOwotICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFk
ZXIoKTsKLQotICByZXR1cm4gc3RhcnRQcm9taXNlLnRoZW4oKCkgPT4gewotICAgIHJldHVybiBy
ZWFkZXIucmVhZCgpOwotICB9KS50aGVuKHJlc3VsdDEgPT4gewotICAgIGFzc2VydF9lcXVhbHMo
dGltZXNDYWxsZWQsIDEsCi0gICAgICAncHVsbCBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCBvbmNl
IGFmdGVyIHN0YXJ0LCBidXQgbm90IHlldCBoYXZlIGJlZW4gY2FsbGVkIGEgc2Vjb25kIHRpbWUn
KTsKLSAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQxLCB7IHZhbHVlOiAxLCBkb25lOiBm
YWxzZSB9LCAncmVhZCgpIHNob3VsZCBmdWxmaWxsIHdpdGggdGhlIGVucXVldWVkIHZhbHVlJyk7
Ci0KLSAgICByZXR1cm4gZGVsYXkoMTApOwotICB9KS50aGVuKCgpID0+IHsKLSAgICBhc3NlcnRf
ZXF1YWxzKHRpbWVzQ2FsbGVkLCAxLCAnYWZ0ZXIgMTAgbXMsIHB1bGwgc2hvdWxkIHN0aWxsIG9u
bHkgaGF2ZSBiZWVuIGNhbGxlZCBvbmNlJyk7Ci0KLSAgICByZXNvbHZlKCk7Ci0gICAgcmV0dXJu
IHJldHVybmVkUHJvbWlzZTsKLSAgfSkudGhlbigoKSA9PiB7Ci0gICAgYXNzZXJ0X2VxdWFscyh0
aW1lc0NhbGxlZCwgMiwKLSAgICAgICdhZnRlciB0aGUgcHJvbWlzZSByZXR1cm5lZCBieSBwdWxs
IGlzIGZ1bGZpbGxlZCwgcHVsbCBzaG91bGQgYmUgY2FsbGVkIGEgc2Vjb25kIHRpbWUnKTsKLSAg
fSk7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbTogc2hvdWxkIG5vdCBjYWxsIHB1bGwgdW50aWwgdGhl
IHByZXZpb3VzIHB1bGwgY2FsbFwncyBwcm9taXNlIGZ1bGZpbGxzJyk7Ci0KLXByb21pc2VfdGVz
dCgoKSA9PiB7Ci0KLSAgbGV0IHRpbWVzQ2FsbGVkID0gMDsKLSAgY29uc3Qgc3RhcnRQcm9taXNl
ID0gUHJvbWlzZS5yZXNvbHZlKCk7Ci0KLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0o
Ci0gICAgewotICAgICAgc3RhcnQoYykgewotICAgICAgICBjLmVucXVldWUoJ2EnKTsKLSAgICAg
ICAgYy5lbnF1ZXVlKCdiJyk7Ci0gICAgICAgIGMuZW5xdWV1ZSgnYycpOwotICAgICAgICByZXR1
cm4gc3RhcnRQcm9taXNlOwotICAgICAgfSwKLSAgICAgIHB1bGwoKSB7Ci0gICAgICAgICsrdGlt
ZXNDYWxsZWQ7Ci0gICAgICB9Ci0gICAgfSwKLSAgICB7Ci0gICAgICBzaXplKCkgewotICAgICAg
ICByZXR1cm4gMTsKLSAgICAgIH0sCi0gICAgICBoaWdoV2F0ZXJNYXJrOiBJbmZpbml0eQotICAg
IH0KLSAgKTsKLSAgY29uc3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7Ci0KLSAgcmV0dXJuIHN0
YXJ0UHJvbWlzZS50aGVuKCgpID0+IHsKLSAgICByZXR1cm4gcmVhZGVyLnJlYWQoKTsKLSAgfSku
dGhlbihyZXN1bHQxID0+IHsKLSAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQxLCB7IHZh
bHVlOiAnYScsIGRvbmU6IGZhbHNlIH0sICdmaXJzdCBjaHVuayBzaG91bGQgYmUgYXMgZXhwZWN0
ZWQnKTsKLQotICAgIHJldHVybiByZWFkZXIucmVhZCgpOwotICB9KS50aGVuKHJlc3VsdDIgPT4g
ewotICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdDIsIHsgdmFsdWU6ICdiJywgZG9uZTog
ZmFsc2UgfSwgJ3NlY29uZCBjaHVuayBzaG91bGQgYmUgYXMgZXhwZWN0ZWQnKTsKLQotICAgIHJl
dHVybiByZWFkZXIucmVhZCgpOwotICB9KS50aGVuKHJlc3VsdDMgPT4gewotICAgIGFzc2VydF9v
YmplY3RfZXF1YWxzKHJlc3VsdDMsIHsgdmFsdWU6ICdjJywgZG9uZTogZmFsc2UgfSwgJ3RoaXJk
IGNodW5rIHNob3VsZCBiZSBhcyBleHBlY3RlZCcpOwotCi0gICAgcmV0dXJuIGRlbGF5KDEwKTsK
LSAgfSkudGhlbigoKSA9PiB7Ci0gICAgLy8gT25jZSBmb3IgYWZ0ZXIgc3RhcnQsIGFuZCBvbmNl
IGZvciBldmVyeSByZWFkLgotICAgIGFzc2VydF9lcXVhbHModGltZXNDYWxsZWQsIDQsICdwdWxs
KCkgc2hvdWxkIGJlIGNhbGxlZCBleGFjdGx5IGZvdXIgdGltZXMnKTsKLSAgfSk7Ci0KLX0sICdS
ZWFkYWJsZVN0cmVhbTogc2hvdWxkIHB1bGwgYWZ0ZXIgc3RhcnQsIGFuZCBhZnRlciBldmVyeSBy
ZWFkJyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgbGV0IHRpbWVzQ2FsbGVkID0gMDsK
LSAgY29uc3Qgc3RhcnRQcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKCk7Ci0KLSAgY29uc3QgcnMg
PSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGMuZW5xdWV1ZSgn
YScpOwotICAgICAgYy5jbG9zZSgpOwotICAgICAgcmV0dXJuIHN0YXJ0UHJvbWlzZTsKLSAgICB9
LAotICAgIHB1bGwoKSB7Ci0gICAgICArK3RpbWVzQ2FsbGVkOwotICAgIH0KLSAgfSk7Ci0KLSAg
Y29uc3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7Ci0gIHJldHVybiBzdGFydFByb21pc2UudGhl
bigoKSA9PiB7Ci0gICAgYXNzZXJ0X2VxdWFscyh0aW1lc0NhbGxlZCwgMCwgJ2FmdGVyIHN0YXJ0
IGZpbmlzaGVzLCBwdWxsIHNob3VsZCBub3QgaGF2ZSBiZWVuIGNhbGxlZCcpOwotCi0gICAgcmV0
dXJuIHJlYWRlci5yZWFkKCk7Ci0gIH0pLnRoZW4oKCkgPT4gewotICAgIGFzc2VydF9lcXVhbHMo
dGltZXNDYWxsZWQsIDAsICdyZWFkaW5nIHNob3VsZCBub3QgaGF2ZSB0cmlnZ2VyZWQgYSBwdWxs
IGNhbGwnKTsKLQotICAgIHJldHVybiByZWFkZXIuY2xvc2VkOwotICB9KS50aGVuKCgpID0+IHsK
LSAgICBhc3NlcnRfZXF1YWxzKHRpbWVzQ2FsbGVkLCAwLCAnc3RyZWFtIHNob3VsZCBoYXZlIGNs
b3NlZCB3aXRoIHN0aWxsIG5vIGNhbGxzIHRvIHB1bGwnKTsKLSAgfSk7Ci0KLX0sICdSZWFkYWJs
ZVN0cmVhbTogc2hvdWxkIG5vdCBjYWxsIHB1bGwgYWZ0ZXIgc3RhcnQgaWYgdGhlIHN0cmVhbSBp
cyBub3cgY2xvc2VkJyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgbGV0IHRpbWVzQ2Fs
bGVkID0gMDsKLSAgbGV0IHJlc29sdmU7Ci0gIGNvbnN0IHJlYWR5ID0gbmV3IFByb21pc2UociA9
PiByZXNvbHZlID0gcik7Ci0KLSAgbmV3IFJlYWRhYmxlU3RyZWFtKAotICAgIHsKLSAgICAgIHN0
YXJ0KCkge30sCi0gICAgICBwdWxsKGMpIHsKLSAgICAgICAgYy5lbnF1ZXVlKCsrdGltZXNDYWxs
ZWQpOwotCi0gICAgICAgIGlmICh0aW1lc0NhbGxlZCA9PT0gNCkgewotICAgICAgICAgIHJlc29s
dmUoKTsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0sCi0gICAgewotICAgICAgc2l6ZSgpIHsK
LSAgICAgICAgcmV0dXJuIDE7Ci0gICAgICB9LAotICAgICAgaGlnaFdhdGVyTWFyazogNAotICAg
IH0KLSAgKTsKLQotICByZXR1cm4gcmVhZHkudGhlbigoKSA9PiB7Ci0gICAgLy8gYWZ0ZXIgc3Rh
cnQ6IHNpemUgPSAwLCBwdWxsKCkKLSAgICAvLyBhZnRlciBlbnF1ZXVlKDEpOiBzaXplID0gMSwg
cHVsbCgpCi0gICAgLy8gYWZ0ZXIgZW5xdWV1ZSgyKTogc2l6ZSA9IDIsIHB1bGwoKQotICAgIC8v
IGFmdGVyIGVucXVldWUoMyk6IHNpemUgPSAzLCBwdWxsKCkKLSAgICAvLyBhZnRlciBlbnF1ZXVl
KDQpOiBzaXplID0gNCwgZG8gbm90IHB1bGwKLSAgICBhc3NlcnRfZXF1YWxzKHRpbWVzQ2FsbGVk
LCA0LCAncHVsbCgpIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkIGZvdXIgdGltZXMnKTsKLSAgfSk7
Ci0KLX0sICdSZWFkYWJsZVN0cmVhbTogc2hvdWxkIGNhbGwgcHVsbCBhZnRlciBlbnF1ZXVlaW5n
IGZyb20gaW5zaWRlIHB1bGwgKHdpdGggbm8gcmVhZCByZXF1ZXN0cyksIGlmIHN0cmF0ZWd5IGFs
bG93cycpOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotCi0gIGxldCBwdWxsQ2FsbGVkID0gZmFs
c2U7Ci0KLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHB1bGwoYykgewot
ICAgICAgcHVsbENhbGxlZCA9IHRydWU7Ci0gICAgICBjLmNsb3NlKCk7Ci0gICAgfQotICB9KTsK
LQotICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKLSAgcmV0dXJuIHJlYWRlci5jbG9z
ZWQudGhlbigoKSA9PiB7Ci0gICAgYXNzZXJ0X3RydWUocHVsbENhbGxlZCk7Ci0gIH0pOwotCi19
LCAnUmVhZGFibGVTdHJlYW0gcHVsbCBzaG91bGQgYmUgYWJsZSB0byBjbG9zZSBhIHN0cmVhbS4n
KTsKLQotcHJvbWlzZV90ZXN0KHQgPT4gewotCi0gIGNvbnN0IGNvbnRyb2xsZXJFcnJvciA9IHsg
bmFtZTogJ2NvbnRyb2xsZXIgZXJyb3InIH07Ci0KLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVT
dHJlYW0oewotICAgIHB1bGwoYykgewotICAgICAgYy5lcnJvcihjb250cm9sbGVyRXJyb3IpOwot
ICAgIH0KLSAgfSk7Ci0KLSAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0LCBjb250cm9sbGVyRXJy
b3IsIHJzLmdldFJlYWRlcigpLmNsb3NlZCk7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbSBwdWxsIHNo
b3VsZCBiZSBhYmxlIHRvIGVycm9yIGEgc3RyZWFtLicpOwotCi1wcm9taXNlX3Rlc3QodCA9PiB7
Ci0KLSAgY29uc3QgY29udHJvbGxlckVycm9yID0geyBuYW1lOiAnY29udHJvbGxlciBlcnJvcicg
fTsKLSAgY29uc3QgdGhyb3duRXJyb3IgPSB7IG5hbWU6ICd0aHJvd24gZXJyb3InIH07Ci0KLSAg
Y29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHB1bGwoYykgewotICAgICAgYy5l
cnJvcihjb250cm9sbGVyRXJyb3IpOwotICAgICAgdGhyb3cgdGhyb3duRXJyb3I7Ci0gICAgfQot
ICB9KTsKLQotICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHQsIGNvbnRyb2xsZXJFcnJvciwgcnMu
Z2V0UmVhZGVyKCkuY2xvc2VkKTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtIHB1bGwgc2hvdWxkIGJl
IGFibGUgdG8gZXJyb3IgYSBzdHJlYW0gYW5kIHRocm93LicpOwotCi10ZXN0KCgpID0+IHsKLQot
ICBsZXQgc3RhcnRDYWxsZWQgPSBmYWxzZTsKLQotICBuZXcgUmVhZGFibGVTdHJlYW0oewotICAg
IHN0YXJ0KGMpIHsKLSAgICAgIGFzc2VydF9lcXVhbHMoYy5lbnF1ZXVlKCdhJyksIHVuZGVmaW5l
ZCwgJ3RoZSBmaXJzdCBlbnF1ZXVlIHNob3VsZCByZXR1cm4gdW5kZWZpbmVkJyk7Ci0gICAgICBj
LmNsb3NlKCk7Ci0KLSAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBj
LmVucXVldWUoJ2InKSwgJ2VucXVldWUgYWZ0ZXIgY2xvc2Ugc2hvdWxkIHRocm93IGEgVHlwZUVy
cm9yJyk7Ci0gICAgICBzdGFydENhbGxlZCA9IHRydWU7Ci0gICAgfQotICB9KTsKLQotICBhc3Nl
cnRfdHJ1ZShzdGFydENhbGxlZCk7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbTogZW5xdWV1ZSBzaG91
bGQgdGhyb3cgd2hlbiB0aGUgc3RyZWFtIGlzIHJlYWRhYmxlIGJ1dCBkcmFpbmluZycpOwotCi10
ZXN0KCgpID0+IHsKLQotICBsZXQgc3RhcnRDYWxsZWQgPSBmYWxzZTsKLQotICBuZXcgUmVhZGFi
bGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGMuY2xvc2UoKTsKLQotICAgICAgYXNz
ZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IGMuZW5xdWV1ZSgnYScpLCAnZW5xdWV1
ZSBhZnRlciBjbG9zZSBzaG91bGQgdGhyb3cgYSBUeXBlRXJyb3InKTsKLSAgICAgIHN0YXJ0Q2Fs
bGVkID0gdHJ1ZTsKLSAgICB9Ci0gIH0pOwotCi0gIGFzc2VydF90cnVlKHN0YXJ0Q2FsbGVkKTsK
LQotfSwgJ1JlYWRhYmxlU3RyZWFtOiBlbnF1ZXVlIHNob3VsZCB0aHJvdyB3aGVuIHRoZSBzdHJl
YW0gaXMgY2xvc2VkJyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgbGV0IHN0YXJ0Q2Fs
bGVkID0gMDsKLSAgbGV0IHB1bGxDYWxsZWQgPSAwOwotICBsZXQgY2FuY2VsQ2FsbGVkID0gMDsK
LQotICAvKiBlc2xpbnQtZGlzYWJsZSBuby11c2UtYmVmb3JlLWRlZmluZSAqLwotICBjbGFzcyBT
b3VyY2UgewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIHN0YXJ0Q2FsbGVkKys7Ci0gICAgICBhc3Nl
cnRfZXF1YWxzKHRoaXMsIHRoZVNvdXJjZSwgJ3N0YXJ0KCkgc2hvdWxkIGJlIGNhbGxlZCB3aXRo
IHRoZSBjb3JyZWN0IHRoaXMnKTsKLSAgICAgIGMuZW5xdWV1ZSgnYScpOwotICAgIH0KLQotICAg
IHB1bGwoKSB7Ci0gICAgICBwdWxsQ2FsbGVkKys7Ci0gICAgICBhc3NlcnRfZXF1YWxzKHRoaXMs
IHRoZVNvdXJjZSwgJ3B1bGwoKSBzaG91bGQgYmUgY2FsbGVkIHdpdGggdGhlIGNvcnJlY3QgdGhp
cycpOwotICAgIH0KLQotICAgIGNhbmNlbCgpIHsKLSAgICAgIGNhbmNlbENhbGxlZCsrOwotICAg
ICAgYXNzZXJ0X2VxdWFscyh0aGlzLCB0aGVTb3VyY2UsICdjYW5jZWwoKSBzaG91bGQgYmUgY2Fs
bGVkIHdpdGggdGhlIGNvcnJlY3QgdGhpcycpOwotICAgIH0KLSAgfQotICAvKiBlc2xpbnQtZW5h
YmxlIG5vLXVzZS1iZWZvcmUtZGVmaW5lICovCi0KLSAgY29uc3QgdGhlU291cmNlID0gbmV3IFNv
dXJjZSgpOwotICB0aGVTb3VyY2UuZGVidWdOYW1lID0gJ3RoZSBzb3VyY2Ugb2JqZWN0IHBhc3Nl
ZCB0byB0aGUgY29uc3RydWN0b3InOyAvLyBtYWtlcyB0ZXN0IGZhaWx1cmVzIGVhc2llciB0byBk
aWFnbm9zZQotCi0gIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHRoZVNvdXJjZSk7Ci0g
IGNvbnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcigpOwotCi0gIHJldHVybiByZWFkZXIucmVhZCgp
LnRoZW4oKCkgPT4gewotICAgIHJlYWRlci5yZWxlYXNlTG9jaygpOwotICAgIHJzLmNhbmNlbCgp
OwotICAgIGFzc2VydF9lcXVhbHMoc3RhcnRDYWxsZWQsIDEpOwotICAgIGFzc2VydF9lcXVhbHMo
cHVsbENhbGxlZCwgMSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhjYW5jZWxDYWxsZWQsIDEpOwotICAg
IHJldHVybiBycy5nZXRSZWFkZXIoKS5jbG9zZWQ7Ci0gIH0pOwotCi19LCAnUmVhZGFibGVTdHJl
YW06IHNob3VsZCBjYWxsIHVuZGVybHlpbmcgc291cmNlIG1ldGhvZHMgYXMgbWV0aG9kcycpOwot
Ci10ZXN0KCgpID0+IHsKLSAgbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0g
ICAgICBhc3NlcnRfZXF1YWxzKGMuZGVzaXJlZFNpemUsIDEwLCAnZGVzaXJlZFNpemUgbXVzdCBz
dGFydCBhdCBoaWdoV2F0ZXJNYXJrJyk7Ci0gICAgICBjLmNsb3NlKCk7Ci0gICAgICBhc3NlcnRf
ZXF1YWxzKGMuZGVzaXJlZFNpemUsIDAsICdhZnRlciBjbG9zaW5nLCBkZXNpcmVkU2l6ZSBtdXN0
IGJlIDAnKTsKLSAgICB9Ci0gIH0sIHsKLSAgICBoaWdoV2F0ZXJNYXJrOiAxMAotICB9KTsKLX0s
ICdSZWFkYWJsZVN0cmVhbTogZGVzaXJlZFNpemUgd2hlbiBjbG9zZWQnKTsKLQotdGVzdCgoKSA9
PiB7Ci0gIG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgYXNzZXJ0
X2VxdWFscyhjLmRlc2lyZWRTaXplLCAxMCwgJ2Rlc2lyZWRTaXplIG11c3Qgc3RhcnQgYXQgaGln
aFdhdGVyTWFyaycpOwotICAgICAgYy5lcnJvcigpOwotICAgICAgYXNzZXJ0X2VxdWFscyhjLmRl
c2lyZWRTaXplLCBudWxsLCAnYWZ0ZXIgZXJyb3JpbmcsIGRlc2lyZWRTaXplIG11c3QgYmUgbnVs
bCcpOwotICAgIH0KLSAgfSwgewotICAgIGhpZ2hXYXRlck1hcms6IDEwCi0gIH0pOwotfSwgJ1Jl
YWRhYmxlU3RyZWFtOiBkZXNpcmVkU2l6ZSB3aGVuIGVycm9yZWQnKTsKLQotdGVzdCgoKSA9PiB7
Ci0KLSAgbGV0IHN0YXJ0Q2FsbGVkID0gZmFsc2U7Ci0gIG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0g
ICAgc3RhcnQoYykgewotICAgICAgYXNzZXJ0X2VxdWFscyhjLmRlc2lyZWRTaXplLCAxKTsKLSAg
ICAgIGMuZW5xdWV1ZSgnYScpOwotICAgICAgYXNzZXJ0X2VxdWFscyhjLmRlc2lyZWRTaXplLCAw
KTsKLSAgICAgIGMuZW5xdWV1ZSgnYicpOwotICAgICAgYXNzZXJ0X2VxdWFscyhjLmRlc2lyZWRT
aXplLCAtMSk7Ci0gICAgICBjLmVucXVldWUoJ2MnKTsKLSAgICAgIGFzc2VydF9lcXVhbHMoYy5k
ZXNpcmVkU2l6ZSwgLTIpOwotICAgICAgYy5lbnF1ZXVlKCdkJyk7Ci0gICAgICBhc3NlcnRfZXF1
YWxzKGMuZGVzaXJlZFNpemUsIC0zKTsKLSAgICAgIGMuZW5xdWV1ZSgnZScpOwotICAgICAgc3Rh
cnRDYWxsZWQgPSB0cnVlOwotICAgIH0KLSAgfSk7Ci0KLSAgYXNzZXJ0X3RydWUoc3RhcnRDYWxs
ZWQpOwotCi19LCAnUmVhZGFibGVTdHJlYW0gc3RyYXRlZ2llczogdGhlIGRlZmF1bHQgc3RyYXRl
Z3kgc2hvdWxkIGdpdmUgZGVzaXJlZFNpemUgb2YgMSB0byBzdGFydCwgZGVjcmVhc2luZyBieSAx
IHBlciBlbnF1ZXVlJyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgbGV0IGNvbnRyb2xs
ZXI7Ci0gIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0g
ICAgICBjb250cm9sbGVyID0gYzsKLSAgICB9Ci0gIH0pOwotICBjb25zdCByZWFkZXIgPSBycy5n
ZXRSZWFkZXIoKTsKLQotICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDEs
ICdkZXNpcmVkU2l6ZSBzaG91bGQgc3RhcnQgYXQgMScpOwotICBjb250cm9sbGVyLmVucXVldWUo
J2EnKTsKLSAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAwLCAnZGVzaXJl
ZFNpemUgc2hvdWxkIGRlY3JlYXNlIHRvIDAgYWZ0ZXIgZmlyc3QgZW5xdWV1ZScpOwotCi0gIHJl
dHVybiByZWFkZXIucmVhZCgpLnRoZW4ocmVzdWx0MSA9PiB7Ci0gICAgYXNzZXJ0X29iamVjdF9l
cXVhbHMocmVzdWx0MSwgeyB2YWx1ZTogJ2EnLCBkb25lOiBmYWxzZSB9LCAnZmlyc3QgY2h1bmsg
cmVhZCBzaG91bGQgYmUgY29ycmVjdCcpOwotCi0gICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVy
LmRlc2lyZWRTaXplLCAxLCAnZGVzaXJlZFNpemUgc2hvdWxkIGdvIHVwIHRvIDEgYWZ0ZXIgdGhl
IGZpcnN0IHJlYWQnKTsKLSAgICBjb250cm9sbGVyLmVucXVldWUoJ2InKTsKLSAgICBhc3NlcnRf
ZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDAsICdkZXNpcmVkU2l6ZSBzaG91bGQgZ28g
ZG93biB0byAwIGFmdGVyIHRoZSBzZWNvbmQgZW5xdWV1ZScpOwotCi0gICAgcmV0dXJuIHJlYWRl
ci5yZWFkKCk7Ci0gIH0pLnRoZW4ocmVzdWx0MiA9PiB7Ci0gICAgYXNzZXJ0X29iamVjdF9lcXVh
bHMocmVzdWx0MiwgeyB2YWx1ZTogJ2InLCBkb25lOiBmYWxzZSB9LCAnc2Vjb25kIGNodW5rIHJl
YWQgc2hvdWxkIGJlIGNvcnJlY3QnKTsKLQotICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5k
ZXNpcmVkU2l6ZSwgMSwgJ2Rlc2lyZWRTaXplIHNob3VsZCBnbyB1cCB0byAxIGFmdGVyIHRoZSBz
ZWNvbmQgcmVhZCcpOwotICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYycpOwotICAgIGFzc2VydF9l
cXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMCwgJ2Rlc2lyZWRTaXplIHNob3VsZCBnbyBk
b3duIHRvIDAgYWZ0ZXIgdGhlIHRoaXJkIGVucXVldWUnKTsKLQotICAgIHJldHVybiByZWFkZXIu
cmVhZCgpOwotICB9KS50aGVuKHJlc3VsdDMgPT4gewotICAgIGFzc2VydF9vYmplY3RfZXF1YWxz
KHJlc3VsdDMsIHsgdmFsdWU6ICdjJywgZG9uZTogZmFsc2UgfSwgJ3RoaXJkIGNodW5rIHJlYWQg
c2hvdWxkIGJlIGNvcnJlY3QnKTsKLQotICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNp
cmVkU2l6ZSwgMSwgJ2Rlc2lyZWRTaXplIHNob3VsZCBnbyB1cCB0byAxIGFmdGVyIHRoZSB0aGly
ZCByZWFkJyk7Ci0gICAgY29udHJvbGxlci5lbnF1ZXVlKCdkJyk7Ci0gICAgYXNzZXJ0X2VxdWFs
cyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAwLCAnZGVzaXJlZFNpemUgc2hvdWxkIGdvIGRvd24g
dG8gMCBhZnRlciB0aGUgZm91cnRoIGVucXVldWUnKTsKLSAgfSk7Ci0KLX0sICdSZWFkYWJsZVN0
cmVhbSBzdHJhdGVnaWVzOiB0aGUgZGVmYXVsdCBzdHJhdGVneSBzaG91bGQgY29udGludWUgZ2l2
aW5nIGRlc2lyZWRTaXplIG9mIDEgaWYgdGhlIGNodW5rcyBhcmUgcmVhZCBpbW1lZGlhdGVseScp
OwotCi1wcm9taXNlX3Rlc3QodCA9PiB7Ci0KLSAgY29uc3QgcmFuZG9tU291cmNlID0gbmV3IFJh
bmRvbVB1c2hTb3VyY2UoOCk7Ci0KLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewot
ICAgIHN0YXJ0KGMpIHsKLSAgICAgIGFzc2VydF9lcXVhbHModHlwZW9mIGMsICdvYmplY3QnLCAn
YyBzaG91bGQgYmUgYW4gb2JqZWN0IGluIHN0YXJ0Jyk7Ci0gICAgICBhc3NlcnRfZXF1YWxzKHR5
cGVvZiBjLmVucXVldWUsICdmdW5jdGlvbicsICdlbnF1ZXVlIHNob3VsZCBiZSBhIGZ1bmN0aW9u
IGluIHN0YXJ0Jyk7Ci0gICAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiBjLmNsb3NlLCAnZnVuY3Rp
b24nLCAnY2xvc2Ugc2hvdWxkIGJlIGEgZnVuY3Rpb24gaW4gc3RhcnQnKTsKLSAgICAgIGFzc2Vy
dF9lcXVhbHModHlwZW9mIGMuZXJyb3IsICdmdW5jdGlvbicsICdlcnJvciBzaG91bGQgYmUgYSBm
dW5jdGlvbiBpbiBzdGFydCcpOwotCi0gICAgICByYW5kb21Tb3VyY2Uub25kYXRhID0gdC5zdGVw
X2Z1bmMoY2h1bmsgPT4gewotICAgICAgICBpZiAoIWMuZW5xdWV1ZShjaHVuaykgPD0gMCkgewot
ICAgICAgICAgIHJhbmRvbVNvdXJjZS5yZWFkU3RvcCgpOwotICAgICAgICB9Ci0gICAgICB9KTsK
LQotICAgICAgcmFuZG9tU291cmNlLm9uZW5kID0gYy5jbG9zZS5iaW5kKGMpOwotICAgICAgcmFu
ZG9tU291cmNlLm9uZXJyb3IgPSBjLmVycm9yLmJpbmQoYyk7Ci0gICAgfSwKLQotICAgIHB1bGwo
YykgewotICAgICAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgYywgJ29iamVjdCcsICdjIHNob3VsZCBi
ZSBhbiBvYmplY3QgaW4gcHVsbCcpOwotICAgICAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgYy5lbnF1
ZXVlLCAnZnVuY3Rpb24nLCAnZW5xdWV1ZSBzaG91bGQgYmUgYSBmdW5jdGlvbiBpbiBwdWxsJyk7
Ci0gICAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiBjLmNsb3NlLCAnZnVuY3Rpb24nLCAnY2xvc2Ug
c2hvdWxkIGJlIGEgZnVuY3Rpb24gaW4gcHVsbCcpOwotCi0gICAgICByYW5kb21Tb3VyY2UucmVh
ZFN0YXJ0KCk7Ci0gICAgfQotICB9KTsKLQotICByZXR1cm4gcmVhZGFibGVTdHJlYW1Ub0FycmF5
KHJzKS50aGVuKGNodW5rcyA9PiB7Ci0gICAgYXNzZXJ0X2VxdWFscyhjaHVua3MubGVuZ3RoLCA4
LCAnOCBjaHVua3Mgc2hvdWxkIGJlIHJlYWQnKTsKLSAgICBmb3IgKGNvbnN0IGNodW5rIG9mIGNo
dW5rcykgewotICAgICAgYXNzZXJ0X2VxdWFscyhjaHVuay5sZW5ndGgsIDEyOCwgJ2NodW5rIHNo
b3VsZCBoYXZlIDEyOCBieXRlcycpOwotICAgIH0KLSAgfSk7Ci0KLX0sICdSZWFkYWJsZVN0cmVh
bSBpbnRlZ3JhdGlvbiB0ZXN0OiBhZGFwdGluZyBhIHJhbmRvbSBwdXNoIHNvdXJjZScpOwotCi1w
cm9taXNlX3Rlc3QoKCkgPT4gewotCi0gIGNvbnN0IHJzID0gc2VxdWVudGlhbFJlYWRhYmxlU3Ry
ZWFtKDEwKTsKLQotICByZXR1cm4gcmVhZGFibGVTdHJlYW1Ub0FycmF5KHJzKS50aGVuKGNodW5r
cyA9PiB7Ci0gICAgYXNzZXJ0X3RydWUocnMuc291cmNlLmNsb3NlZCwgJ3NvdXJjZSBzaG91bGQg
YmUgY2xvc2VkIGFmdGVyIGFsbCBjaHVua3MgYXJlIHJlYWQnKTsKLSAgICBhc3NlcnRfYXJyYXlf
ZXF1YWxzKGNodW5rcywgWzEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwXSwgJ3RoZSBleHBl
Y3RlZCAxMCBjaHVua3Mgc2hvdWxkIGJlIHJlYWQnKTsKLSAgfSk7Ci0KLX0sICdSZWFkYWJsZVN0
cmVhbSBpbnRlZ3JhdGlvbiB0ZXN0OiBhZGFwdGluZyBhIHN5bmMgcHVsbCBzb3VyY2UnKTsKLQot
cHJvbWlzZV90ZXN0KCgpID0+IHsKLQotICBjb25zdCBycyA9IHNlcXVlbnRpYWxSZWFkYWJsZVN0
cmVhbSgxMCwgeyBhc3luYzogdHJ1ZSB9KTsKLQotICByZXR1cm4gcmVhZGFibGVTdHJlYW1Ub0Fy
cmF5KHJzKS50aGVuKGNodW5rcyA9PiB7Ci0gICAgYXNzZXJ0X3RydWUocnMuc291cmNlLmNsb3Nl
ZCwgJ3NvdXJjZSBzaG91bGQgYmUgY2xvc2VkIGFmdGVyIGFsbCBjaHVua3MgYXJlIHJlYWQnKTsK
LSAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGNodW5rcywgWzEsIDIsIDMsIDQsIDUsIDYsIDcsIDgs
IDksIDEwXSwgJ3RoZSBleHBlY3RlZCAxMCBjaHVua3Mgc2hvdWxkIGJlIHJlYWQnKTsKLSAgfSk7
Ci0KLX0sICdSZWFkYWJsZVN0cmVhbSBpbnRlZ3JhdGlvbiB0ZXN0OiBhZGFwdGluZyBhbiBhc3lu
YyBwdWxsIHNvdXJjZScpOwotCi1kb25lKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9nZW5l
cmFsLnNlcnZpY2V3b3JrZXIuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZ2VuZXJh
bC5zZXJ2aWNld29ya2VyLmh0dHBzLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggZTg3YjhhMWNjYzU5OWIwNzRlNjJmZTg2NGYwNjA2ZGM1NTYyMzBkYS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9nZW5l
cmFsLnNlcnZpY2V3b3JrZXIuaHR0cHMtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEs
NDEgKzAsMCBAQAotCi1QQVNTIFNlcnZpY2Ugd29ya2VyIHRlc3Qgc2V0dXAgCi1QQVNTIFJlYWRh
YmxlU3RyZWFtIGNhbiBiZSBjb25zdHJ1Y3RlZCB3aXRoIG5vIGVycm9ycyAKLVBBU1MgUmVhZGFi
bGVTdHJlYW0gY2FuJ3QgYmUgY29uc3RydWN0ZWQgd2l0aCBnYXJiYWdlIAotUEFTUyBSZWFkYWJs
ZVN0cmVhbSBjYW4ndCBiZSBjb25zdHJ1Y3RlZCB3aXRoIGFuIGludmFsaWQgdHlwZSAKLUZBSUwg
UmVhZGFibGVTdHJlYW0gaW5zdGFuY2VzIHNob3VsZCBoYXZlIHRoZSBjb3JyZWN0IGxpc3Qgb2Yg
cHJvcGVydGllcyBhc3NlcnRfZXF1YWxzOiBnZXRSZWFkZXIgc2hvdWxkIGhhdmUgbm8gcGFyYW1l
dGVycyBleHBlY3RlZCAwIGJ1dCBnb3QgMQotUEFTUyBSZWFkYWJsZVN0cmVhbSBjb25zdHJ1Y3Rv
ciBzaG91bGQgdGhyb3cgZm9yIG5vbi1mdW5jdGlvbiBzdGFydCBhcmd1bWVudHMgCi1GQUlMIFJl
YWRhYmxlU3RyZWFtIGNvbnN0cnVjdG9yIHdpbGwgbm90IHRvbGVyYXRlIGluaXRpYWwgZ2FyYmFn
ZSBhcyBjYW5jZWwgYXJndW1lbnQgYXNzZXJ0X3Rocm93czogY29uc3RydWN0b3Igc2hvdWxkIHRo
cm93IGZ1bmN0aW9uICIoKSA9PiBuZXcgUmVhZGFibGVTdHJlYW0oeyBjYW5jZWw6ICcyJyB9KSIg
ZGlkIG5vdCB0aHJvdwotRkFJTCBSZWFkYWJsZVN0cmVhbSBjb25zdHJ1Y3RvciB3aWxsIG5vdCB0
b2xlcmF0ZSBpbml0aWFsIGdhcmJhZ2UgYXMgcHVsbCBhcmd1bWVudCBhc3NlcnRfdGhyb3dzOiBj
b25zdHJ1Y3RvciBzaG91bGQgdGhyb3cgZnVuY3Rpb24gIigpID0+IG5ldyBSZWFkYWJsZVN0cmVh
bSh7IHB1bGw6IHsgfSB9KSIgZGlkIG5vdCB0aHJvdwotRkFJTCBSZWFkYWJsZVN0cmVhbSBzdGFy
dCBzaG91bGQgYmUgY2FsbGVkIHdpdGggdGhlIHByb3BlciBwYXJhbWV0ZXJzIGFzc2VydF9lcXVh
bHM6IGNvbnN0cnVjdG9yIHNob3VsZCBoYXZlIG5vIHBhcmFtZXRlcnMgZXhwZWN0ZWQgMCBidXQg
Z290IDQKLVBBU1MgUmVhZGFibGVTdHJlYW0gc3RhcnQgY29udHJvbGxlciBwYXJhbWV0ZXIgc2hv
dWxkIGJlIGV4dGVuc2libGUgCi1QQVNTIGRlZmF1bHQgUmVhZGFibGVTdHJlYW0gZ2V0UmVhZGVy
KCkgc2hvdWxkIG9ubHkgYWNjZXB0IG1vZGU6dW5kZWZpbmVkIAotUEFTUyBSZWFkYWJsZVN0cmVh
bSBzaG91bGQgYmUgYWJsZSB0byBjYWxsIHN0YXJ0IG1ldGhvZCB3aXRoaW4gcHJvdG90eXBlIGNo
YWluIG9mIGl0cyBzb3VyY2UgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIHN0YXJ0IHNob3VsZCBiZSBh
YmxlIHRvIHJldHVybiBhIHByb21pc2UgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIHN0YXJ0IHNob3Vs
ZCBiZSBhYmxlIHRvIHJldHVybiBhIHByb21pc2UgYW5kIHJlamVjdCBpdCAKLVBBU1MgUmVhZGFi
bGVTdHJlYW0gc2hvdWxkIGJlIGFibGUgdG8gZW5xdWV1ZSBkaWZmZXJlbnQgb2JqZWN0cy4gCi1Q
QVNTIFJlYWRhYmxlU3RyZWFtOiBpZiBwdWxsIHJlamVjdHMsIGl0IHNob3VsZCBlcnJvciB0aGUg
c3RyZWFtIAotUEFTUyBSZWFkYWJsZVN0cmVhbTogc2hvdWxkIG9ubHkgY2FsbCBwdWxsIG9uY2Ug
dXBvbiBzdGFydGluZyB0aGUgc3RyZWFtIAotUEFTUyBSZWFkYWJsZVN0cmVhbTogc2hvdWxkIGNh
bGwgcHVsbCB3aGVuIHRyeWluZyB0byByZWFkIGZyb20gYSBzdGFydGVkLCBlbXB0eSBzdHJlYW0g
Ci1QQVNTIFJlYWRhYmxlU3RyZWFtOiBzaG91bGQgb25seSBjYWxsIHB1bGwgb25jZSBvbiBhIG5v
bi1lbXB0eSBzdHJlYW0gcmVhZCBmcm9tIGJlZm9yZSBzdGFydCBmdWxmaWxscyAKLVBBU1MgUmVh
ZGFibGVTdHJlYW06IHNob3VsZCBvbmx5IGNhbGwgcHVsbCBvbmNlIG9uIGEgbm9uLWVtcHR5IHN0
cmVhbSByZWFkIGZyb20gYWZ0ZXIgc3RhcnQgZnVsZmlsbHMgCi1QQVNTIFJlYWRhYmxlU3RyZWFt
OiBzaG91bGQgY2FsbCBwdWxsIGluIHJlYWN0aW9uIHRvIHJlYWQoKWluZyB0aGUgbGFzdCBjaHVu
aywgaWYgbm90IGRyYWluaW5nIAotUEFTUyBSZWFkYWJsZVN0cmVhbTogc2hvdWxkIG5vdCBjYWxs
IHB1bGwoKSBpbiByZWFjdGlvbiB0byByZWFkKClpbmcgdGhlIGxhc3QgY2h1bmssIGlmIGRyYWlu
aW5nIAotUEFTUyBSZWFkYWJsZVN0cmVhbTogc2hvdWxkIG5vdCBjYWxsIHB1bGwgdW50aWwgdGhl
IHByZXZpb3VzIHB1bGwgY2FsbCdzIHByb21pc2UgZnVsZmlsbHMgCi1QQVNTIFJlYWRhYmxlU3Ry
ZWFtOiBzaG91bGQgcHVsbCBhZnRlciBzdGFydCwgYW5kIGFmdGVyIGV2ZXJ5IHJlYWQgCi1QQVNT
IFJlYWRhYmxlU3RyZWFtOiBzaG91bGQgbm90IGNhbGwgcHVsbCBhZnRlciBzdGFydCBpZiB0aGUg
c3RyZWFtIGlzIG5vdyBjbG9zZWQgCi1QQVNTIFJlYWRhYmxlU3RyZWFtOiBzaG91bGQgY2FsbCBw
dWxsIGFmdGVyIGVucXVldWVpbmcgZnJvbSBpbnNpZGUgcHVsbCAod2l0aCBubyByZWFkIHJlcXVl
c3RzKSwgaWYgc3RyYXRlZ3kgYWxsb3dzIAotUEFTUyBSZWFkYWJsZVN0cmVhbSBwdWxsIHNob3Vs
ZCBiZSBhYmxlIHRvIGNsb3NlIGEgc3RyZWFtLiAKLVBBU1MgUmVhZGFibGVTdHJlYW0gcHVsbCBz
aG91bGQgYmUgYWJsZSB0byBlcnJvciBhIHN0cmVhbS4gCi1QQVNTIFJlYWRhYmxlU3RyZWFtIHB1
bGwgc2hvdWxkIGJlIGFibGUgdG8gZXJyb3IgYSBzdHJlYW0gYW5kIHRocm93LiAKLVBBU1MgUmVh
ZGFibGVTdHJlYW06IGVucXVldWUgc2hvdWxkIHRocm93IHdoZW4gdGhlIHN0cmVhbSBpcyByZWFk
YWJsZSBidXQgZHJhaW5pbmcgCi1QQVNTIFJlYWRhYmxlU3RyZWFtOiBlbnF1ZXVlIHNob3VsZCB0
aHJvdyB3aGVuIHRoZSBzdHJlYW0gaXMgY2xvc2VkIAotUEFTUyBSZWFkYWJsZVN0cmVhbTogc2hv
dWxkIGNhbGwgdW5kZXJseWluZyBzb3VyY2UgbWV0aG9kcyBhcyBtZXRob2RzIAotUEFTUyBSZWFk
YWJsZVN0cmVhbTogZGVzaXJlZFNpemUgd2hlbiBjbG9zZWQgCi1QQVNTIFJlYWRhYmxlU3RyZWFt
OiBkZXNpcmVkU2l6ZSB3aGVuIGVycm9yZWQgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIHN0cmF0ZWdp
ZXM6IHRoZSBkZWZhdWx0IHN0cmF0ZWd5IHNob3VsZCBnaXZlIGRlc2lyZWRTaXplIG9mIDEgdG8g
c3RhcnQsIGRlY3JlYXNpbmcgYnkgMSBwZXIgZW5xdWV1ZSAKLVBBU1MgUmVhZGFibGVTdHJlYW0g
c3RyYXRlZ2llczogdGhlIGRlZmF1bHQgc3RyYXRlZ3kgc2hvdWxkIGNvbnRpbnVlIGdpdmluZyBk
ZXNpcmVkU2l6ZSBvZiAxIGlmIHRoZSBjaHVua3MgYXJlIHJlYWQgaW1tZWRpYXRlbHkgCi1QQVNT
IFJlYWRhYmxlU3RyZWFtIGludGVncmF0aW9uIHRlc3Q6IGFkYXB0aW5nIGEgcmFuZG9tIHB1c2gg
c291cmNlIAotUEFTUyBSZWFkYWJsZVN0cmVhbSBpbnRlZ3JhdGlvbiB0ZXN0OiBhZGFwdGluZyBh
IHN5bmMgcHVsbCBzb3VyY2UgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIGludGVncmF0aW9uIHRlc3Q6
IGFkYXB0aW5nIGFuIGFzeW5jIHB1bGwgc291cmNlIAotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFt
cy9nZW5lcmFsLnNlcnZpY2V3b3JrZXIuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2dlbmVyYWwu
c2VydmljZXdvcmtlci5odHRwcy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBk
MWRlN2MzNDJjMDNkNjg2MWU1M2JmYjczNWVkYjQyNDlmZGNmYzcyLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2dlbmVyYWwuc2Vydmlj
ZXdvcmtlci5odHRwcy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotPCFET0NU
WVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08dGl0bGU+Z2VuZXJhbC5qcyBzZXJ2
aWNlIHdvcmtlciB3cmFwcGVyIGZpbGU8L3RpdGxlPgotCi08c2NyaXB0IHNyYz0iL3Jlc291cmNl
cy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0
aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3NlcnZpY2Utd29ya2Vy
cy9zZXJ2aWNlLXdvcmtlci9yZXNvdXJjZXMvdGVzdC1oZWxwZXJzLnN1Yi5qcyI+PC9zY3JpcHQ+
Ci0KLTxzY3JpcHQ+Ci0ndXNlIHN0cmljdCc7Ci1zZXJ2aWNlX3dvcmtlcl90ZXN0KCdnZW5lcmFs
LmpzJywgJ1NlcnZpY2Ugd29ya2VyIHRlc3Qgc2V0dXAnKTsKLTwvc2NyaXB0PgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3Jl
YWRhYmxlLXN0cmVhbXMvZ2VuZXJhbC5zaGFyZWR3b3JrZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0
cmVhbXMvZ2VuZXJhbC5zaGFyZWR3b3JrZXItZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwOWQ1ZDI1MDlkNzg0N2U4Y2Q2ZmU2NjA2YWE2MGNkZDMzYWE0NzRlLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1z
L2dlbmVyYWwuc2hhcmVkd29ya2VyLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDUg
KzAsMCBAQAotQ09OU09MRSBNRVNTQUdFOiBSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJp
YWJsZTogU2hhcmVkV29ya2VyCi0KLUhhcm5lc3MgRXJyb3IgKEZBSUwpLCBtZXNzYWdlID0gUmVm
ZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IFNoYXJlZFdvcmtlcgotCi0KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy9yZWFkYWJsZS1zdHJlYW1zL2dlbmVyYWwuc2hhcmVkd29ya2VyLmh0bWwgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFt
cy9nZW5lcmFsLnNoYXJlZHdvcmtlci5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBkY2VlYThhYzhiOWYwMGM5ZDBjY2EzN2JmMTM3YmU0NTNlNzE0NTExLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2dlbmVyYWwuc2hh
cmVkd29ya2VyLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi08IURPQ1RZUEUg
aHRtbD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTx0aXRsZT5nZW5lcmFsLmpzIHNoYXJlZCB3
b3JrZXIgd3JhcHBlciBmaWxlPC90aXRsZT4KLQotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVz
dGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5l
c3NyZXBvcnQuanMiPjwvc2NyaXB0PgotCi08c2NyaXB0PgotJ3VzZSBzdHJpY3QnOwotZmV0Y2hf
dGVzdHNfZnJvbV93b3JrZXIobmV3IFNoYXJlZFdvcmtlcignZ2VuZXJhbC5qcycpKTsKLTwvc2Ny
aXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvcGF0Y2hlZC1nbG9iYWwuYW55LWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy9yZWFkYWJsZS1zdHJlYW1zL3BhdGNoZWQtZ2xvYmFsLmFueS1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZGYwNzU2MjBiYmU1MzRhZjAwYzhiMzAyM2VhM2M1ODMyOWRmZTEwZQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3BhdGNoZWQtZ2xvYmFsLmFueS1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSw3IEBACisKK1BBU1MgUmVhZGFibGVTdHJlYW0gdGVlKCkgc2hvdWxkIG5vdCB0b3Vj
aCBPYmplY3QucHJvdG90eXBlIHByb3BlcnRpZXMgCitQQVNTIFJlYWRhYmxlU3RyZWFtIHRlZSgp
IHNob3VsZCBub3QgY2FsbCB0aGUgZ2xvYmFsIFJlYWRhYmxlU3RyZWFtIAorRkFJTCBSZWFkYWJs
ZVN0cmVhbSBhc3luYyBpdGVyYXRvciBzaG91bGQgdXNlIHRoZSBvcmlnaW5hbCB2YWx1ZXMgb2Yg
Z2V0UmVhZGVyKCkgYW5kIFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlciBtZXRob2RzIHByb21p
c2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVFcnJv
cjogdW5kZWZpbmVkIGlzIG5vdCBhIGZ1bmN0aW9uIChuZWFyICcuLi5jaHVuayBvZiBycy4uLicp
IgorUEFTUyB0ZWUoKSBzaG91bGQgbm90IGNhbGwgUHJvbWlzZS5wcm90b3R5cGUudGhlbigpIAor
UEFTUyBwaXBlVG8oKSBzaG91bGQgbm90IGNhbGwgUHJvbWlzZS5wcm90b3R5cGUudGhlbigpIAor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9wYXRjaGVkLWdsb2JhbC5hbnkuaHRtbCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1z
dHJlYW1zL3BhdGNoZWQtZ2xvYmFsLmFueS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzODI5MTM1MjhlNjkz
YjNhNWQ1NmM2NjBhNDUwNjA5ODBiNTQ4YzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFt
cy9wYXRjaGVkLWdsb2JhbC5hbnkuaHRtbApAQCAtMCwwICsxIEBACis8IS0tIFRoaXMgZmlsZSBp
cyByZXF1aXJlZCBmb3IgV2ViS2l0IHRlc3QgaW5mcmFzdHJ1Y3R1cmUgdG8gcnVuIHRoZSB0ZW1w
bGF0ZWQgdGVzdCAtLT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFi
bGUtc3RyZWFtcy9wYXRjaGVkLWdsb2JhbC5hbnkuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9wYXRjaGVkLWds
b2JhbC5hbnkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTc2YTM5ZjY3NzdlMmI0OTcwZWFlYzc0Yjg4ZTZlZTdm
ODJkM2I3MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3BhdGNoZWQtZ2xvYmFsLmFu
eS5qcwpAQCAtMCwwICsxLDE0MiBAQAorLy8gTUVUQTogZ2xvYmFsPXdpbmRvdyx3b3JrZXIsanNz
aGVsbAorJ3VzZSBzdHJpY3QnOworCisvLyBUZXN0cyB3aGljaCBwYXRjaCB0aGUgZ2xvYmFsIGVu
dmlyb25tZW50IGFyZSBrZXB0IHNlcGFyYXRlIHRvIGF2b2lkCisvLyBpbnRlcmZlcmluZyB3aXRo
IG90aGVyIHRlc3RzLgorCitjb25zdCBSZWFkYWJsZVN0cmVhbV9wcm90b3R5cGVfbG9ja2VkX2dl
dCA9CisgICAgICBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKFJlYWRhYmxlU3RyZWFt
LnByb3RvdHlwZSwgJ2xvY2tlZCcpLmdldDsKKworLy8gVmVyaWZ5IHRoYXQgfHJzfCBwYXNzZXMg
dGhlIGJyYW5kIGNoZWNrIGFzIGEgcmVhZGFibGUgc3RyZWFtLgorZnVuY3Rpb24gaXNSZWFkYWJs
ZVN0cmVhbShycykgeworICB0cnkgeworICAgIFJlYWRhYmxlU3RyZWFtX3Byb3RvdHlwZV9sb2Nr
ZWRfZ2V0LmNhbGwocnMpOworICAgIHJldHVybiB0cnVlOworICB9IGNhdGNoIChlKSB7CisgICAg
cmV0dXJuIGZhbHNlOworICB9Cit9CisKK3Rlc3QodCA9PiB7CisgIGNvbnN0IHJzID0gbmV3IFJl
YWRhYmxlU3RyZWFtKCk7CisKKyAgY29uc3QgdHJhcHBlZFByb3BlcnRpZXMgPSBbJ2hpZ2hXYXRl
ck1hcmsnLCAnc2l6ZScsICdzdGFydCcsICd0eXBlJywgJ21vZGUnXTsKKyAgZm9yIChjb25zdCBw
cm9wZXJ0eSBvZiB0cmFwcGVkUHJvcGVydGllcykgeworICAgIC8vIGVzbGludC1kaXNhYmxlLW5l
eHQtbGluZSBuby1leHRlbmQtbmF0aXZlLCBhY2Nlc3Nvci1wYWlycworICAgIE9iamVjdC5kZWZp
bmVQcm9wZXJ0eShPYmplY3QucHJvdG90eXBlLCBwcm9wZXJ0eSwgeworICAgICAgZ2V0KCkgeyB0
aHJvdyBuZXcgRXJyb3IoYCR7cHJvcGVydHl9IGdldHRlciBjYWxsZWRgKTsgfSwKKyAgICAgIGNv
bmZpZ3VyYWJsZTogdHJ1ZQorICAgIH0pOworICB9CisgIHQuYWRkX2NsZWFudXAoKCkgPT4gewor
ICAgIGZvciAoY29uc3QgcHJvcGVydHkgb2YgdHJhcHBlZFByb3BlcnRpZXMpIHsKKyAgICAgIGRl
bGV0ZSBPYmplY3QucHJvdG90eXBlW3Byb3BlcnR5XTsKKyAgICB9CisgIH0pOworCisgIGNvbnN0
IFticmFuY2gxLCBicmFuY2gyXSA9IHJzLnRlZSgpOworICBhc3NlcnRfdHJ1ZShpc1JlYWRhYmxl
U3RyZWFtKGJyYW5jaDEpLCAnYnJhbmNoMSBzaG91bGQgYmUgYSBSZWFkYWJsZVN0cmVhbScpOwor
ICBhc3NlcnRfdHJ1ZShpc1JlYWRhYmxlU3RyZWFtKGJyYW5jaDIpLCAnYnJhbmNoMiBzaG91bGQg
YmUgYSBSZWFkYWJsZVN0cmVhbScpOworfSwgJ1JlYWRhYmxlU3RyZWFtIHRlZSgpIHNob3VsZCBu
b3QgdG91Y2ggT2JqZWN0LnByb3RvdHlwZSBwcm9wZXJ0aWVzJyk7CisKK3Rlc3QodCA9PiB7Cisg
IGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKCk7CisKKyAgY29uc3Qgb2xkUmVhZGFibGVT
dHJlYW0gPSBzZWxmLlJlYWRhYmxlU3RyZWFtOworCisgIHNlbGYuUmVhZGFibGVTdHJlYW0gPSBm
dW5jdGlvbigpIHsKKyAgICB0aHJvdyBuZXcgRXJyb3IoJ1JlYWRhYmxlU3RyZWFtIGNhbGxlZCBv
biBnbG9iYWwgb2JqZWN0Jyk7CisgIH07CisKKyAgdC5hZGRfY2xlYW51cCgoKSA9PiB7CisgICAg
c2VsZi5SZWFkYWJsZVN0cmVhbSA9IG9sZFJlYWRhYmxlU3RyZWFtOworICB9KTsKKworICBjb25z
dCBbYnJhbmNoMSwgYnJhbmNoMl0gPSBycy50ZWUoKTsKKworICBhc3NlcnRfdHJ1ZShpc1JlYWRh
YmxlU3RyZWFtKGJyYW5jaDEpLCAnYnJhbmNoMSBzaG91bGQgYmUgYSBSZWFkYWJsZVN0cmVhbScp
OworICBhc3NlcnRfdHJ1ZShpc1JlYWRhYmxlU3RyZWFtKGJyYW5jaDIpLCAnYnJhbmNoMiBzaG91
bGQgYmUgYSBSZWFkYWJsZVN0cmVhbScpOworfSwgJ1JlYWRhYmxlU3RyZWFtIHRlZSgpIHNob3Vs
ZCBub3QgY2FsbCB0aGUgZ2xvYmFsIFJlYWRhYmxlU3RyZWFtJyk7CisKK3Byb21pc2VfdGVzdChh
c3luYyB0ID0+IHsKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0
KGMpIHsKKyAgICAgIGMuZW5xdWV1ZSgxKTsKKyAgICAgIGMuZW5xdWV1ZSgyKTsKKyAgICAgIGMu
ZW5xdWV1ZSgzKTsKKyAgICAgIGMuY2xvc2UoKTsKKyAgICB9CisgIH0pOworCisgIGNvbnN0IG9s
ZFJlYWRhYmxlU3RyZWFtR2V0UmVhZGVyID0gUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLmdldFJl
YWRlcjsKKworICBjb25zdCBSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIgPSAobmV3IFJlYWRh
YmxlU3RyZWFtKCkpLmdldFJlYWRlcigpLmNvbnN0cnVjdG9yOworICBjb25zdCBvbGREZWZhdWx0
UmVhZGVyUmVhZCA9IFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlci5wcm90b3R5cGUucmVhZDsK
KyAgY29uc3Qgb2xkRGVmYXVsdFJlYWRlckNhbmNlbCA9IFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJl
YWRlci5wcm90b3R5cGUuY2FuY2VsOworICBjb25zdCBvbGREZWZhdWx0UmVhZGVyUmVsZWFzZUxv
Y2sgPSBSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIucHJvdG90eXBlLnJlbGVhc2VMb2NrOwor
CisgIHNlbGYuUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLmdldFJlYWRlciA9IGZ1bmN0aW9uKCkg
eworICAgIHRocm93IG5ldyBFcnJvcigncGF0Y2hlZCBnZXRSZWFkZXIoKSBjYWxsZWQnKTsKKyAg
fTsKKworICBSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIucHJvdG90eXBlLnJlYWQgPSBmdW5j
dGlvbigpIHsKKyAgICB0aHJvdyBuZXcgRXJyb3IoJ3BhdGNoZWQgcmVhZCgpIGNhbGxlZCcpOwor
ICB9OworICBSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIucHJvdG90eXBlLmNhbmNlbCA9IGZ1
bmN0aW9uKCkgeworICAgIHRocm93IG5ldyBFcnJvcigncGF0Y2hlZCBjYW5jZWwoKSBjYWxsZWQn
KTsKKyAgfTsKKyAgUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyLnByb3RvdHlwZS5yZWxlYXNl
TG9jayA9IGZ1bmN0aW9uKCkgeworICAgIHRocm93IG5ldyBFcnJvcigncGF0Y2hlZCByZWxlYXNl
TG9jaygpIGNhbGxlZCcpOworICB9OworCisgIHQuYWRkX2NsZWFudXAoKCkgPT4geworICAgIHNl
bGYuUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLmdldFJlYWRlciA9IG9sZFJlYWRhYmxlU3RyZWFt
R2V0UmVhZGVyOworCisgICAgUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyLnByb3RvdHlwZS5y
ZWFkID0gb2xkRGVmYXVsdFJlYWRlclJlYWQ7CisgICAgUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVh
ZGVyLnByb3RvdHlwZS5jYW5jZWwgPSBvbGREZWZhdWx0UmVhZGVyQ2FuY2VsOworICAgIFJlYWRh
YmxlU3RyZWFtRGVmYXVsdFJlYWRlci5wcm90b3R5cGUucmVsZWFzZUxvY2sgPSBvbGREZWZhdWx0
UmVhZGVyUmVsZWFzZUxvY2s7CisgIH0pOworCisgIC8vIHJlYWQgdGhlIGZpcnN0IGNodW5rLCB0
aGVuIGNhbmNlbAorICBmb3IgYXdhaXQgKGNvbnN0IGNodW5rIG9mIHJzKSB7CisgICAgYnJlYWs7
CisgIH0KKworICAvLyBzaG91bGQgYmUgYWJsZSB0byBhY3F1aXJlIGEgbmV3IHJlYWRlcgorICBj
b25zdCByZWFkZXIgPSBvbGRSZWFkYWJsZVN0cmVhbUdldFJlYWRlci5jYWxsKHJzKTsKKyAgLy8g
c3RyZWFtIHNob3VsZCBiZSBjYW5jZWxsZWQKKyAgYXdhaXQgcmVhZGVyLmNsb3NlZDsKK30sICdS
ZWFkYWJsZVN0cmVhbSBhc3luYyBpdGVyYXRvciBzaG91bGQgdXNlIHRoZSBvcmlnaW5hbCB2YWx1
ZXMgb2YgZ2V0UmVhZGVyKCkgYW5kIFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlciAnICsKKyAg
ICdtZXRob2RzJyk7CisKK3Rlc3QodCA9PiB7CisgIGNvbnN0IG9sZFByb21pc2VUaGVuID0gUHJv
bWlzZS5wcm90b3R5cGUudGhlbjsKKyAgUHJvbWlzZS5wcm90b3R5cGUudGhlbiA9ICgpID0+IHsK
KyAgICB0aHJvdyBuZXcgRXJyb3IoJ3BhdGNoZWQgdGhlbigpIGNhbGxlZCcpOworICB9OworICB0
LmFkZF9jbGVhbnVwKCgpID0+IHsKKyAgICBQcm9taXNlLnByb3RvdHlwZS50aGVuID0gb2xkUHJv
bWlzZVRoZW47CisgIH0pOworICBjb25zdCBbYnJhbmNoMSwgYnJhbmNoMl0gPSBuZXcgUmVhZGFi
bGVTdHJlYW0oKS50ZWUoKTsKKyAgYXNzZXJ0X3RydWUoaXNSZWFkYWJsZVN0cmVhbShicmFuY2gx
KSwgJ2JyYW5jaDEgc2hvdWxkIGJlIGEgUmVhZGFibGVTdHJlYW0nKTsKKyAgYXNzZXJ0X3RydWUo
aXNSZWFkYWJsZVN0cmVhbShicmFuY2gyKSwgJ2JyYW5jaDIgc2hvdWxkIGJlIGEgUmVhZGFibGVT
dHJlYW0nKTsKK30sICd0ZWUoKSBzaG91bGQgbm90IGNhbGwgUHJvbWlzZS5wcm90b3R5cGUudGhl
bigpJyk7CisKK3Rlc3QodCA9PiB7CisgIGNvbnN0IG9sZFByb21pc2VUaGVuID0gUHJvbWlzZS5w
cm90b3R5cGUudGhlbjsKKyAgUHJvbWlzZS5wcm90b3R5cGUudGhlbiA9ICgpID0+IHsKKyAgICB0
aHJvdyBuZXcgRXJyb3IoJ3BhdGNoZWQgdGhlbigpIGNhbGxlZCcpOworICB9OworICB0LmFkZF9j
bGVhbnVwKCgpID0+IHsKKyAgICBQcm9taXNlLnByb3RvdHlwZS50aGVuID0gb2xkUHJvbWlzZVRo
ZW47CisgIH0pOworICBsZXQgcmVhZGFibGVDb250cm9sbGVyOworICBjb25zdCBycyA9IG5ldyBS
ZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgcmVhZGFibGVDb250cm9sbGVy
ID0gYzsKKyAgICB9CisgIH0pOworICBjb25zdCB3cyA9IG5ldyBXcml0YWJsZVN0cmVhbSgpOwor
ICBycy5waXBlVG8od3MpOworICByZWFkYWJsZUNvbnRyb2xsZXIuY2xvc2UoKTsKK30sICdwaXBl
VG8oKSBzaG91bGQgbm90IGNhbGwgUHJvbWlzZS5wcm90b3R5cGUudGhlbigpJyk7CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
cmVhZGFibGUtc3RyZWFtcy9wYXRjaGVkLWdsb2JhbC5hbnkud29ya2VyLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFk
YWJsZS1zdHJlYW1zL3BhdGNoZWQtZ2xvYmFsLmFueS53b3JrZXItZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmJlYzhiMDcyZDJlMzM4NGM0ZjVmYTA3MDg1ZWE3Y2ZlOWRlZWE3Y2QKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9wYXRjaGVkLWdsb2JhbC5hbnkud29ya2VyLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDcgQEAKKworUEFTUyBSZWFkYWJsZVN0cmVhbSB0ZWUoKSBzaG91bGQg
bm90IHRvdWNoIE9iamVjdC5wcm90b3R5cGUgcHJvcGVydGllcyAKK1BBU1MgUmVhZGFibGVTdHJl
YW0gdGVlKCkgc2hvdWxkIG5vdCBjYWxsIHRoZSBnbG9iYWwgUmVhZGFibGVTdHJlYW0gCitGQUlM
IFJlYWRhYmxlU3RyZWFtIGFzeW5jIGl0ZXJhdG9yIHNob3VsZCB1c2UgdGhlIG9yaWdpbmFsIHZh
bHVlcyBvZiBnZXRSZWFkZXIoKSBhbmQgUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyIG1ldGhv
ZHMgcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAi
VHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90IGEgZnVuY3Rpb24gKG5lYXIgJy4uLmNodW5rIG9m
IHJzLi4uJykiCitQQVNTIHRlZSgpIHNob3VsZCBub3QgY2FsbCBQcm9taXNlLnByb3RvdHlwZS50
aGVuKCkgCitGQUlMIHBpcGVUbygpIHNob3VsZCBub3QgY2FsbCBQcm9taXNlLnByb3RvdHlwZS50
aGVuKCkgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRh
YmxlLXN0cmVhbXMvcGF0Y2hlZC1nbG9iYWwuYW55Lndvcmtlci5odG1sIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMv
cGF0Y2hlZC1nbG9iYWwuYW55Lndvcmtlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzODI5MTM1MjhlNjkz
YjNhNWQ1NmM2NjBhNDUwNjA5ODBiNTQ4YzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFt
cy9wYXRjaGVkLWdsb2JhbC5hbnkud29ya2VyLmh0bWwKQEAgLTAsMCArMSBAQAorPCEtLSBUaGlz
IGZpbGUgaXMgcmVxdWlyZWQgZm9yIFdlYktpdCB0ZXN0IGluZnJhc3RydWN0dXJlIHRvIHJ1biB0
aGUgdGVtcGxhdGVkIHRlc3QgLS0+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
L3JlYWRhYmxlLXN0cmVhbXMvcmVhZGFibGUtc3RyZWFtLXJlYWRlci1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFi
bGUtc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW0tcmVhZGVyLWV4cGVjdGVkLnR4dApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggZGI3ZWZhMWFlODU5MjEyNDUxMzhhNWFkOWUwZjdlMzYxYTAw
MWM0ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUt
c3RyZWFtcy9yZWFkYWJsZS1zdHJlYW0tcmVhZGVyLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxs
CkBAIC0xLDI4ICswLDAgQEAKLQotUEFTUyBDYW4gZ2V0IHRoZSBSZWFkYWJsZVN0cmVhbVJlYWRl
ciBjb25zdHJ1Y3RvciBpbmRpcmVjdGx5IAotUEFTUyBSZWFkYWJsZVN0cmVhbVJlYWRlciBjb25z
dHJ1Y3RvciBzaG91bGQgZ2V0IGEgUmVhZGFibGVTdHJlYW0gb2JqZWN0IGFzIGFyZ3VtZW50IAot
UEFTUyBSZWFkYWJsZVN0cmVhbVJlYWRlciBpbnN0YW5jZXMgc2hvdWxkIGhhdmUgdGhlIGNvcnJl
Y3QgbGlzdCBvZiBwcm9wZXJ0aWVzIAotUEFTUyBSZWFkYWJsZVN0cmVhbVJlYWRlciBjbG9zZWQg
c2hvdWxkIGFsd2F5cyByZXR1cm4gdGhlIHNhbWUgcHJvbWlzZSBvYmplY3QgCi1QQVNTIENvbnN0
cnVjdGluZyBhIFJlYWRhYmxlU3RyZWFtUmVhZGVyIGRpcmVjdGx5IHNob3VsZCBmYWlsIGlmIHRo
ZSBzdHJlYW0gaXMgYWxyZWFkeSBsb2NrZWQgKHZpYSBkaXJlY3QgY29uc3RydWN0aW9uKSAKLVBB
U1MgR2V0dGluZyBhIFJlYWRhYmxlU3RyZWFtUmVhZGVyIHZpYSBnZXRSZWFkZXIgc2hvdWxkIGZh
aWwgaWYgdGhlIHN0cmVhbSBpcyBhbHJlYWR5IGxvY2tlZCAodmlhIGRpcmVjdCBjb25zdHJ1Y3Rp
b24pIAotUEFTUyBDb25zdHJ1Y3RpbmcgYSBSZWFkYWJsZVN0cmVhbVJlYWRlciBkaXJlY3RseSBz
aG91bGQgZmFpbCBpZiB0aGUgc3RyZWFtIGlzIGFscmVhZHkgbG9ja2VkICh2aWEgZ2V0UmVhZGVy
KSAKLVBBU1MgR2V0dGluZyBhIFJlYWRhYmxlU3RyZWFtUmVhZGVyIHZpYSBnZXRSZWFkZXIgc2hv
dWxkIGZhaWwgaWYgdGhlIHN0cmVhbSBpcyBhbHJlYWR5IGxvY2tlZCAodmlhIGdldFJlYWRlcikg
Ci1QQVNTIENvbnN0cnVjdGluZyBhIFJlYWRhYmxlU3RyZWFtUmVhZGVyIGRpcmVjdGx5IHNob3Vs
ZCBiZSBPSyBpZiB0aGUgc3RyZWFtIGlzIGNsb3NlZCAKLVBBU1MgQ29uc3RydWN0aW5nIGEgUmVh
ZGFibGVTdHJlYW1SZWFkZXIgZGlyZWN0bHkgc2hvdWxkIGJlIE9LIGlmIHRoZSBzdHJlYW0gaXMg
ZXJyb3JlZCAKLVBBU1MgUmVhZGluZyBmcm9tIGEgcmVhZGVyIGZvciBhbiBlbXB0eSBzdHJlYW0g
d2lsbCB3YWl0IHVudGlsIGEgY2h1bmsgaXMgYXZhaWxhYmxlIAotUEFTUyBjYW5jZWwoKSBvbiBh
IHJlYWRlciBkb2VzIG5vdCByZWxlYXNlIHRoZSByZWFkZXIgCi1QQVNTIGNsb3NlZCBzaG91bGQg
YmUgZnVsZmlsbGVkIGFmdGVyIHN0cmVhbSBpcyBjbG9zZWQgKC5jbG9zZWQgYWNjZXNzIGJlZm9y
ZSBhY3F1aXJpbmcpIAotUEFTUyBjbG9zZWQgc2hvdWxkIGJlIHJlamVjdGVkIGFmdGVyIHJlYWRl
ciByZWxlYXNlcyBpdHMgbG9jayAobXVsdGlwbGUgc3RyZWFtIGxvY2tzKSAKLVBBU1MgTXVsdGlw
bGUgcmVhZGVycyBjYW4gYWNjZXNzIHRoZSBzdHJlYW0gaW4gc2VxdWVuY2UgCi1QQVNTIENhbm5v
dCB1c2UgYW4gYWxyZWFkeS1yZWxlYXNlZCByZWFkZXIgdG8gdW5sb2NrIGEgc3RyZWFtIGFnYWlu
IAotUEFTUyBjYW5jZWwoKSBvbiBhIHJlbGVhc2VkIHJlYWRlciBpcyBhIG5vLW9wIGFuZCBkb2Vz
IG5vdCBwYXNzIHRocm91Z2ggCi1QQVNTIEdldHRpbmcgYSBzZWNvbmQgcmVhZGVyIGFmdGVyIGVy
cm9yaW5nIHRoZSBzdHJlYW0gYW5kIHJlbGVhc2luZyB0aGUgcmVhZGVyIHNob3VsZCBzdWNjZWVk
IAotUEFTUyBSZWFkYWJsZVN0cmVhbVJlYWRlciBjbG9zZWQgcHJvbWlzZSBzaG91bGQgYmUgcmVq
ZWN0ZWQgd2l0aCB1bmRlZmluZWQgaWYgdGhhdCBpcyB0aGUgZXJyb3IgCi1QQVNTIFJlYWRhYmxl
U3RyZWFtUmVhZGVyOiBpZiBzdGFydCByZWplY3RzIHdpdGggbm8gcGFyYW1ldGVyLCBpdCBzaG91
bGQgZXJyb3IgdGhlIHN0cmVhbSB3aXRoIGFuIHVuZGVmaW5lZCBlcnJvciAKLVBBU1MgRXJyb3Jp
bmcgYSBSZWFkYWJsZVN0cmVhbSBhZnRlciBjaGVja2luZyBjbG9zZWQgc2hvdWxkIHJlamVjdCBS
ZWFkYWJsZVN0cmVhbVJlYWRlciBjbG9zZWQgcHJvbWlzZSAKLVBBU1MgRXJyb3JpbmcgYSBSZWFk
YWJsZVN0cmVhbSBiZWZvcmUgY2hlY2tpbmcgY2xvc2VkIHNob3VsZCByZWplY3QgUmVhZGFibGVT
dHJlYW1SZWFkZXIgY2xvc2VkIHByb21pc2UgCi1QQVNTIFJlYWRpbmcgdHdpY2Ugb24gYSBzdHJl
YW0gdGhhdCBnZXRzIGNsb3NlZCAKLVBBU1MgUmVhZGluZyB0d2ljZSBvbiBhIGNsb3NlZCBzdHJl
YW0gCi1QQVNTIFJlYWRpbmcgdHdpY2Ugb24gYW4gZXJyb3JlZCBzdHJlYW0gCi1QQVNTIFJlYWRp
bmcgdHdpY2Ugb24gYSBzdHJlYW0gdGhhdCBnZXRzIGVycm9yZWQgCi0KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJs
ZS1zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbS1yZWFkZXIuZGVkaWNhdGVkd29ya2VyLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy9yZWFkYWJsZS1zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbS1yZWFkZXIuZGVkaWNhdGVkd29ya2Vy
LWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGI3ZWZhMWFlODU5
MjEyNDUxMzhhNWFkOWUwZjdlMzYxYTAwMWM0ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW0tcmVhZGVyLmRl
ZGljYXRlZHdvcmtlci1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBA
Ci0KLVBBU1MgQ2FuIGdldCB0aGUgUmVhZGFibGVTdHJlYW1SZWFkZXIgY29uc3RydWN0b3IgaW5k
aXJlY3RseSAKLVBBU1MgUmVhZGFibGVTdHJlYW1SZWFkZXIgY29uc3RydWN0b3Igc2hvdWxkIGdl
dCBhIFJlYWRhYmxlU3RyZWFtIG9iamVjdCBhcyBhcmd1bWVudCAKLVBBU1MgUmVhZGFibGVTdHJl
YW1SZWFkZXIgaW5zdGFuY2VzIHNob3VsZCBoYXZlIHRoZSBjb3JyZWN0IGxpc3Qgb2YgcHJvcGVy
dGllcyAKLVBBU1MgUmVhZGFibGVTdHJlYW1SZWFkZXIgY2xvc2VkIHNob3VsZCBhbHdheXMgcmV0
dXJuIHRoZSBzYW1lIHByb21pc2Ugb2JqZWN0IAotUEFTUyBDb25zdHJ1Y3RpbmcgYSBSZWFkYWJs
ZVN0cmVhbVJlYWRlciBkaXJlY3RseSBzaG91bGQgZmFpbCBpZiB0aGUgc3RyZWFtIGlzIGFscmVh
ZHkgbG9ja2VkICh2aWEgZGlyZWN0IGNvbnN0cnVjdGlvbikgCi1QQVNTIEdldHRpbmcgYSBSZWFk
YWJsZVN0cmVhbVJlYWRlciB2aWEgZ2V0UmVhZGVyIHNob3VsZCBmYWlsIGlmIHRoZSBzdHJlYW0g
aXMgYWxyZWFkeSBsb2NrZWQgKHZpYSBkaXJlY3QgY29uc3RydWN0aW9uKSAKLVBBU1MgQ29uc3Ry
dWN0aW5nIGEgUmVhZGFibGVTdHJlYW1SZWFkZXIgZGlyZWN0bHkgc2hvdWxkIGZhaWwgaWYgdGhl
IHN0cmVhbSBpcyBhbHJlYWR5IGxvY2tlZCAodmlhIGdldFJlYWRlcikgCi1QQVNTIEdldHRpbmcg
YSBSZWFkYWJsZVN0cmVhbVJlYWRlciB2aWEgZ2V0UmVhZGVyIHNob3VsZCBmYWlsIGlmIHRoZSBz
dHJlYW0gaXMgYWxyZWFkeSBsb2NrZWQgKHZpYSBnZXRSZWFkZXIpIAotUEFTUyBDb25zdHJ1Y3Rp
bmcgYSBSZWFkYWJsZVN0cmVhbVJlYWRlciBkaXJlY3RseSBzaG91bGQgYmUgT0sgaWYgdGhlIHN0
cmVhbSBpcyBjbG9zZWQgCi1QQVNTIENvbnN0cnVjdGluZyBhIFJlYWRhYmxlU3RyZWFtUmVhZGVy
IGRpcmVjdGx5IHNob3VsZCBiZSBPSyBpZiB0aGUgc3RyZWFtIGlzIGVycm9yZWQgCi1QQVNTIFJl
YWRpbmcgZnJvbSBhIHJlYWRlciBmb3IgYW4gZW1wdHkgc3RyZWFtIHdpbGwgd2FpdCB1bnRpbCBh
IGNodW5rIGlzIGF2YWlsYWJsZSAKLVBBU1MgY2FuY2VsKCkgb24gYSByZWFkZXIgZG9lcyBub3Qg
cmVsZWFzZSB0aGUgcmVhZGVyIAotUEFTUyBjbG9zZWQgc2hvdWxkIGJlIGZ1bGZpbGxlZCBhZnRl
ciBzdHJlYW0gaXMgY2xvc2VkICguY2xvc2VkIGFjY2VzcyBiZWZvcmUgYWNxdWlyaW5nKSAKLVBB
U1MgY2xvc2VkIHNob3VsZCBiZSByZWplY3RlZCBhZnRlciByZWFkZXIgcmVsZWFzZXMgaXRzIGxv
Y2sgKG11bHRpcGxlIHN0cmVhbSBsb2NrcykgCi1QQVNTIE11bHRpcGxlIHJlYWRlcnMgY2FuIGFj
Y2VzcyB0aGUgc3RyZWFtIGluIHNlcXVlbmNlIAotUEFTUyBDYW5ub3QgdXNlIGFuIGFscmVhZHkt
cmVsZWFzZWQgcmVhZGVyIHRvIHVubG9jayBhIHN0cmVhbSBhZ2FpbiAKLVBBU1MgY2FuY2VsKCkg
b24gYSByZWxlYXNlZCByZWFkZXIgaXMgYSBuby1vcCBhbmQgZG9lcyBub3QgcGFzcyB0aHJvdWdo
IAotUEFTUyBHZXR0aW5nIGEgc2Vjb25kIHJlYWRlciBhZnRlciBlcnJvcmluZyB0aGUgc3RyZWFt
IGFuZCByZWxlYXNpbmcgdGhlIHJlYWRlciBzaG91bGQgc3VjY2VlZCAKLVBBU1MgUmVhZGFibGVT
dHJlYW1SZWFkZXIgY2xvc2VkIHByb21pc2Ugc2hvdWxkIGJlIHJlamVjdGVkIHdpdGggdW5kZWZp
bmVkIGlmIHRoYXQgaXMgdGhlIGVycm9yIAotUEFTUyBSZWFkYWJsZVN0cmVhbVJlYWRlcjogaWYg
c3RhcnQgcmVqZWN0cyB3aXRoIG5vIHBhcmFtZXRlciwgaXQgc2hvdWxkIGVycm9yIHRoZSBzdHJl
YW0gd2l0aCBhbiB1bmRlZmluZWQgZXJyb3IgCi1QQVNTIEVycm9yaW5nIGEgUmVhZGFibGVTdHJl
YW0gYWZ0ZXIgY2hlY2tpbmcgY2xvc2VkIHNob3VsZCByZWplY3QgUmVhZGFibGVTdHJlYW1SZWFk
ZXIgY2xvc2VkIHByb21pc2UgCi1QQVNTIEVycm9yaW5nIGEgUmVhZGFibGVTdHJlYW0gYmVmb3Jl
IGNoZWNraW5nIGNsb3NlZCBzaG91bGQgcmVqZWN0IFJlYWRhYmxlU3RyZWFtUmVhZGVyIGNsb3Nl
ZCBwcm9taXNlIAotUEFTUyBSZWFkaW5nIHR3aWNlIG9uIGEgc3RyZWFtIHRoYXQgZ2V0cyBjbG9z
ZWQgCi1QQVNTIFJlYWRpbmcgdHdpY2Ugb24gYSBjbG9zZWQgc3RyZWFtIAotUEFTUyBSZWFkaW5n
IHR3aWNlIG9uIGFuIGVycm9yZWQgc3RyZWFtIAotUEFTUyBSZWFkaW5nIHR3aWNlIG9uIGEgc3Ry
ZWFtIHRoYXQgZ2V0cyBlcnJvcmVkIAotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9yZWFkYWJs
ZS1zdHJlYW0tcmVhZGVyLmRlZGljYXRlZHdvcmtlci5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvcmVhZGFi
bGUtc3RyZWFtLXJlYWRlci5kZWRpY2F0ZWR3b3JrZXIuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZTI4MTg3NzFlNDU1ZTNmY2U3ODM5NWUzZWI2MDBhOWIzYTExZTJjNi4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9y
ZWFkYWJsZS1zdHJlYW0tcmVhZGVyLmRlZGljYXRlZHdvcmtlci5odG1sCisrKyAvZGV2L251bGwK
QEAgLTEsMTEgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+
Ci08dGl0bGU+cmVhZGFibGUtc3RyZWFtLXJlYWRlci5qcyBkZWRpY2F0ZWQgd29ya2VyIHdyYXBw
ZXIgZmlsZTwvdGl0bGU+Ci0KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpz
Ij48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0Lmpz
Ij48L3NjcmlwdD4KLQotPHNjcmlwdD4KLSd1c2Ugc3RyaWN0JzsKLWZldGNoX3Rlc3RzX2Zyb21f
d29ya2VyKG5ldyBXb3JrZXIoJ3JlYWRhYmxlLXN0cmVhbS1yZWFkZXIuanMnKSk7Ci08L3Njcmlw
dD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbS1yZWFkZXIuaHRtbCBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFk
YWJsZS1zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbS1yZWFkZXIuaHRtbApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggZGQ5YzVmM2ZhOGVmNGFiN2I4NTk2ZTBjOTUzMzdjNjJlZDRiZWJjNy4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFt
cy9yZWFkYWJsZS1zdHJlYW0tcmVhZGVyLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCww
IEBACi08IURPQ1RZUEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTx0aXRsZT5yZWFk
YWJsZS1zdHJlYW0tcmVhZGVyLmpzIGJyb3dzZXIgY29udGV4dCB3cmFwcGVyIGZpbGU8L3RpdGxl
PgotCi08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08
c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci0K
LTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvcnMtdXRpbHMuanMiPjwvc2NyaXB0PgotCi08c2Ny
aXB0IHNyYz0icmVhZGFibGUtc3RyZWFtLXJlYWRlci5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVh
ZGFibGUtc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW0tcmVhZGVyLmpzIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvcmVh
ZGFibGUtc3RyZWFtLXJlYWRlci5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWQ1
YmMxMzAwNGY4YTM1N2ZjNWU4MjUyMmYzYmQzMDlmMTMxMWI5YS4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW0t
cmVhZGVyLmpzCisrKyAvZGV2L251bGwKQEAgLTEsNDg1ICswLDAgQEAKLSd1c2Ugc3RyaWN0JzsK
LQotaWYgKHNlbGYuaW1wb3J0U2NyaXB0cykgewotICBzZWxmLmltcG9ydFNjcmlwdHMoJy4uL3Jl
c291cmNlcy9ycy11dGlscy5qcycpOwotICBzZWxmLmltcG9ydFNjcmlwdHMoJy9yZXNvdXJjZXMv
dGVzdGhhcm5lc3MuanMnKTsKLX0KLQotbGV0IFJlYWRhYmxlU3RyZWFtUmVhZGVyOwotCi10ZXN0
KCgpID0+IHsKLQotICAvLyBJdCdzIG5vdCBleHBvc2VkIGdsb2JhbGx5LCBidXQgd2UgdGVzdCBh
IGZldyBvZiBpdHMgcHJvcGVydGllcyBoZXJlLgotICBSZWFkYWJsZVN0cmVhbVJlYWRlciA9IChu
ZXcgUmVhZGFibGVTdHJlYW0oKSkuZ2V0UmVhZGVyKCkuY29uc3RydWN0b3I7Ci0KLX0sICdDYW4g
Z2V0IHRoZSBSZWFkYWJsZVN0cmVhbVJlYWRlciBjb25zdHJ1Y3RvciBpbmRpcmVjdGx5Jyk7Ci0K
LXRlc3QoKCkgPT4gewotCi0gIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBu
ZXcgUmVhZGFibGVTdHJlYW1SZWFkZXIoJ3BvdGF0bycpKTsKLSAgYXNzZXJ0X3Rocm93cyhuZXcg
VHlwZUVycm9yKCksICgpID0+IG5ldyBSZWFkYWJsZVN0cmVhbVJlYWRlcih7fSkpOwotICBhc3Nl
cnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gbmV3IFJlYWRhYmxlU3RyZWFtUmVhZGVy
KCkpOwotCi19LCAnUmVhZGFibGVTdHJlYW1SZWFkZXIgY29uc3RydWN0b3Igc2hvdWxkIGdldCBh
IFJlYWRhYmxlU3RyZWFtIG9iamVjdCBhcyBhcmd1bWVudCcpOwotCi10ZXN0KCgpID0+IHsKLQot
ICBjb25zdCBtZXRob2RzID0gWydjYW5jZWwnLCAnY29uc3RydWN0b3InLCAncmVhZCcsICdyZWxl
YXNlTG9jayddOwotICBjb25zdCBwcm9wZXJ0aWVzID0gbWV0aG9kcy5jb25jYXQoWydjbG9zZWQn
XSkuc29ydCgpOwotCi0gIGNvbnN0IHJzUmVhZGVyID0gbmV3IFJlYWRhYmxlU3RyZWFtUmVhZGVy
KG5ldyBSZWFkYWJsZVN0cmVhbSgpKTsKLSAgY29uc3QgcHJvdG8gPSBPYmplY3QuZ2V0UHJvdG90
eXBlT2YocnNSZWFkZXIpOwotCi0gIGFzc2VydF9hcnJheV9lcXVhbHMoT2JqZWN0LmdldE93blBy
b3BlcnR5TmFtZXMocHJvdG8pLnNvcnQoKSwgcHJvcGVydGllcyk7Ci0KLSAgZm9yIChjb25zdCBt
IG9mIG1ldGhvZHMpIHsKLSAgICBjb25zdCBwcm9wRGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3IocHJvdG8sIG0pOwotICAgIGFzc2VydF9lcXVhbHMocHJvcERlc2MuZW51bWVy
YWJsZSwgZmFsc2UsICdtZXRob2Qgc2hvdWxkIGJlIG5vbi1lbnVtZXJhYmxlJyk7Ci0gICAgYXNz
ZXJ0X2VxdWFscyhwcm9wRGVzYy5jb25maWd1cmFibGUsIHRydWUsICdtZXRob2Qgc2hvdWxkIGJl
IGNvbmZpZ3VyYWJsZScpOwotICAgIGFzc2VydF9lcXVhbHMocHJvcERlc2Mud3JpdGFibGUsIHRy
dWUsICdtZXRob2Qgc2hvdWxkIGJlIHdyaXRhYmxlJyk7Ci0gICAgYXNzZXJ0X2VxdWFscyh0eXBl
b2YgcnNSZWFkZXJbbV0sICdmdW5jdGlvbicsICdzaG91bGQgaGF2ZSBiZSBhIG1ldGhvZCcpOwot
ICB9Ci0KLSAgY29uc3QgY2xvc2VkUHJvcERlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKHByb3RvLCAnY2xvc2VkJyk7Ci0gIGFzc2VydF9lcXVhbHMoY2xvc2VkUHJvcERlc2Mu
ZW51bWVyYWJsZSwgZmFsc2UsICdjbG9zZWQgc2hvdWxkIGJlIG5vbi1lbnVtZXJhYmxlJyk7Ci0g
IGFzc2VydF9lcXVhbHMoY2xvc2VkUHJvcERlc2MuY29uZmlndXJhYmxlLCB0cnVlLCAnY2xvc2Vk
IHNob3VsZCBiZSBjb25maWd1cmFibGUnKTsKLSAgYXNzZXJ0X25vdF9lcXVhbHMoY2xvc2VkUHJv
cERlc2MuZ2V0LCB1bmRlZmluZWQsICdjbG9zZWQgc2hvdWxkIGhhdmUgYSBnZXR0ZXInKTsKLSAg
YXNzZXJ0X2VxdWFscyhjbG9zZWRQcm9wRGVzYy5zZXQsIHVuZGVmaW5lZCwgJ2Nsb3NlZCBzaG91
bGQgbm90IGhhdmUgYSBzZXR0ZXInKTsKLQotICBhc3NlcnRfZXF1YWxzKHJzUmVhZGVyLmNhbmNl
bC5sZW5ndGgsIDEsICdjYW5jZWwgaGFzIDEgcGFyYW1ldGVyJyk7Ci0gIGFzc2VydF9ub3RfZXF1
YWxzKHJzUmVhZGVyLmNsb3NlZCwgdW5kZWZpbmVkLCAnaGFzIGEgbm9uLXVuZGVmaW5lZCBjbG9z
ZWQgcHJvcGVydHknKTsKLSAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgcnNSZWFkZXIuY2xvc2VkLnRo
ZW4sICdmdW5jdGlvbicsICdjbG9zZWQgcHJvcGVydHkgaXMgdGhlbmFibGUnKTsKLSAgYXNzZXJ0
X2VxdWFscyh0eXBlb2YgcnNSZWFkZXIuY29uc3RydWN0b3IsICdmdW5jdGlvbicsICdoYXMgYSBj
b25zdHJ1Y3RvciBtZXRob2QnKTsKLSAgYXNzZXJ0X2VxdWFscyhyc1JlYWRlci5jb25zdHJ1Y3Rv
ci5sZW5ndGgsIDEsICdjb25zdHJ1Y3RvciBoYXMgMSBwYXJhbWV0ZXInKTsKLSAgYXNzZXJ0X2Vx
dWFscyh0eXBlb2YgcnNSZWFkZXIucmVhZCwgJ2Z1bmN0aW9uJywgJ2hhcyBhIGdldFJlYWRlciBt
ZXRob2QnKTsKLSAgYXNzZXJ0X2VxdWFscyhyc1JlYWRlci5yZWFkLmxlbmd0aCwgMCwgJ3JlYWQg
aGFzIG5vIHBhcmFtZXRlcnMnKTsKLSAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgcnNSZWFkZXIucmVs
ZWFzZUxvY2ssICdmdW5jdGlvbicsICdoYXMgYSByZWxlYXNlTG9jayBtZXRob2QnKTsKLSAgYXNz
ZXJ0X2VxdWFscyhyc1JlYWRlci5yZWxlYXNlTG9jay5sZW5ndGgsIDAsICdyZWxlYXNlTG9jayBo
YXMgbm8gcGFyYW1ldGVycycpOwotCi19LCAnUmVhZGFibGVTdHJlYW1SZWFkZXIgaW5zdGFuY2Vz
IHNob3VsZCBoYXZlIHRoZSBjb3JyZWN0IGxpc3Qgb2YgcHJvcGVydGllcycpOwotCi10ZXN0KCgp
ID0+IHsKLQotICBjb25zdCByc1JlYWRlciA9IG5ldyBSZWFkYWJsZVN0cmVhbVJlYWRlcihuZXcg
UmVhZGFibGVTdHJlYW0oKSk7Ci0gIGFzc2VydF9lcXVhbHMocnNSZWFkZXIuY2xvc2VkLCByc1Jl
YWRlci5jbG9zZWQsICdjbG9zZWQgc2hvdWxkIHJldHVybiB0aGUgc2FtZSBwcm9taXNlJyk7Ci0K
LX0sICdSZWFkYWJsZVN0cmVhbVJlYWRlciBjbG9zZWQgc2hvdWxkIGFsd2F5cyByZXR1cm4gdGhl
IHNhbWUgcHJvbWlzZSBvYmplY3QnKTsKLQotdGVzdCgoKSA9PiB7Ci0KLSAgY29uc3QgcnMgPSBu
ZXcgUmVhZGFibGVTdHJlYW0oKTsKLSAgbmV3IFJlYWRhYmxlU3RyZWFtUmVhZGVyKHJzKTsgLy8g
Q29uc3RydWN0aW5nIGRpcmVjdGx5IHRoZSBmaXJzdCB0aW1lIHNob3VsZCBiZSBmaW5lLgotICBh
c3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gbmV3IFJlYWRhYmxlU3RyZWFtUmVh
ZGVyKHJzKSwKLSAgICAgICAgICAgICAgICAnY29uc3RydWN0aW5nIGRpcmVjdGx5IHRoZSBzZWNv
bmQgdGltZSBzaG91bGQgZmFpbCcpOwotCi19LCAnQ29uc3RydWN0aW5nIGEgUmVhZGFibGVTdHJl
YW1SZWFkZXIgZGlyZWN0bHkgc2hvdWxkIGZhaWwgaWYgdGhlIHN0cmVhbSBpcyBhbHJlYWR5IGxv
Y2tlZCAodmlhIGRpcmVjdCAnICsKLSAgICdjb25zdHJ1Y3Rpb24pJyk7Ci0KLXRlc3QoKCkgPT4g
ewotCi0gIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKCk7Ci0gIG5ldyBSZWFkYWJsZVN0
cmVhbVJlYWRlcihycyk7IC8vIENvbnN0cnVjdGluZyBkaXJlY3RseSBzaG91bGQgYmUgZmluZS4K
LSAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IHJzLmdldFJlYWRlcigpLCAn
Z2V0UmVhZGVyKCkgc2hvdWxkIGZhaWwnKTsKLQotfSwgJ0dldHRpbmcgYSBSZWFkYWJsZVN0cmVh
bVJlYWRlciB2aWEgZ2V0UmVhZGVyIHNob3VsZCBmYWlsIGlmIHRoZSBzdHJlYW0gaXMgYWxyZWFk
eSBsb2NrZWQgKHZpYSBkaXJlY3QgJyArCi0gICAnY29uc3RydWN0aW9uKScpOwotCi10ZXN0KCgp
ID0+IHsKLQotICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSgpOwotICBycy5nZXRSZWFk
ZXIoKTsgLy8gZ2V0UmVhZGVyKCkgc2hvdWxkIGJlIGZpbmUuCi0gIGFzc2VydF90aHJvd3MobmV3
IFR5cGVFcnJvcigpLCAoKSA9PiBuZXcgUmVhZGFibGVTdHJlYW1SZWFkZXIocnMpLCAnY29uc3Ry
dWN0aW5nIGRpcmVjdGx5IHNob3VsZCBmYWlsJyk7Ci0KLX0sICdDb25zdHJ1Y3RpbmcgYSBSZWFk
YWJsZVN0cmVhbVJlYWRlciBkaXJlY3RseSBzaG91bGQgZmFpbCBpZiB0aGUgc3RyZWFtIGlzIGFs
cmVhZHkgbG9ja2VkICh2aWEgZ2V0UmVhZGVyKScpOwotCi10ZXN0KCgpID0+IHsKLQotICBjb25z
dCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSgpOwotICBycy5nZXRSZWFkZXIoKTsgLy8gZ2V0UmVh
ZGVyKCkgc2hvdWxkIGJlIGZpbmUuCi0gIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAo
KSA9PiBycy5nZXRSZWFkZXIoKSwgJ2dldFJlYWRlcigpIHNob3VsZCBmYWlsJyk7Ci0KLX0sICdH
ZXR0aW5nIGEgUmVhZGFibGVTdHJlYW1SZWFkZXIgdmlhIGdldFJlYWRlciBzaG91bGQgZmFpbCBp
ZiB0aGUgc3RyZWFtIGlzIGFscmVhZHkgbG9ja2VkICh2aWEgZ2V0UmVhZGVyKScpOwotCi10ZXN0
KCgpID0+IHsKLQotICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQo
YykgewotICAgICAgYy5jbG9zZSgpOwotICAgIH0KLSAgfSk7Ci0KLSAgbmV3IFJlYWRhYmxlU3Ry
ZWFtUmVhZGVyKHJzKTsgLy8gQ29uc3RydWN0aW5nIGRpcmVjdGx5IHNob3VsZCBub3QgdGhyb3cu
Ci0KLX0sICdDb25zdHJ1Y3RpbmcgYSBSZWFkYWJsZVN0cmVhbVJlYWRlciBkaXJlY3RseSBzaG91
bGQgYmUgT0sgaWYgdGhlIHN0cmVhbSBpcyBjbG9zZWQnKTsKLQotdGVzdCgoKSA9PiB7Ci0KLSAg
Y29uc3QgdGhlRXJyb3IgPSBuZXcgRXJyb3IoJ2RvblwndCBzYXkgaSBkaWRuXCd0IHdhcm4geWEn
KTsKLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAg
ICAgIGMuZXJyb3IodGhlRXJyb3IpOwotICAgIH0KLSAgfSk7Ci0KLSAgbmV3IFJlYWRhYmxlU3Ry
ZWFtUmVhZGVyKHJzKTsgLy8gQ29uc3RydWN0aW5nIGRpcmVjdGx5IHNob3VsZCBub3QgdGhyb3cu
Ci0KLX0sICdDb25zdHJ1Y3RpbmcgYSBSZWFkYWJsZVN0cmVhbVJlYWRlciBkaXJlY3RseSBzaG91
bGQgYmUgT0sgaWYgdGhlIHN0cmVhbSBpcyBlcnJvcmVkJyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9
PiB7Ci0KLSAgbGV0IGNvbnRyb2xsZXI7Ci0gIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFt
KHsKLSAgICBzdGFydChjKSB7Ci0gICAgICBjb250cm9sbGVyID0gYzsKLSAgICB9Ci0gIH0pOwot
ICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKLQotICBjb25zdCBwcm9taXNlID0gcmVh
ZGVyLnJlYWQoKS50aGVuKHJlc3VsdCA9PiB7Ci0gICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVz
dWx0LCB7IHZhbHVlOiAnYScsIGRvbmU6IGZhbHNlIH0sICdyZWFkKCkgc2hvdWxkIGZ1bGZpbGwg
d2l0aCB0aGUgZW5xdWV1ZWQgY2h1bmsnKTsKLSAgfSk7Ci0KLSAgY29udHJvbGxlci5lbnF1ZXVl
KCdhJyk7Ci0gIHJldHVybiBwcm9taXNlOwotCi19LCAnUmVhZGluZyBmcm9tIGEgcmVhZGVyIGZv
ciBhbiBlbXB0eSBzdHJlYW0gd2lsbCB3YWl0IHVudGlsIGEgY2h1bmsgaXMgYXZhaWxhYmxlJyk7
Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgbGV0IGNhbmNlbENhbGxlZCA9IGZhbHNlOwot
ICBjb25zdCBwYXNzZWRSZWFzb24gPSBuZXcgRXJyb3IoJ2l0IHdhc25cJ3QgdGhlIHJpZ2h0IHRp
bWUsIHNvcnJ5Jyk7Ci0gIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBjYW5j
ZWwocmVhc29uKSB7Ci0gICAgICBhc3NlcnRfdHJ1ZShycy5sb2NrZWQsICd0aGUgc3RyZWFtIHNo
b3VsZCBzdGlsbCBiZSBsb2NrZWQnKTsKLSAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJv
cigpLCAoKSA9PiBycy5nZXRSZWFkZXIoKSwgJ3Nob3VsZCBub3QgYmUgYWJsZSB0byBnZXQgYW5v
dGhlciByZWFkZXInKTsKLSAgICAgIGFzc2VydF9lcXVhbHMocmVhc29uLCBwYXNzZWRSZWFzb24s
ICd0aGUgY2FuY2VsbGF0aW9uIHJlYXNvbiBpcyBwYXNzZWQgdGhyb3VnaCB0byB0aGUgdW5kZXJs
eWluZyBzb3VyY2UnKTsKLSAgICAgIGNhbmNlbENhbGxlZCA9IHRydWU7Ci0gICAgfQotICB9KTsK
LQotICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKLSAgcmV0dXJuIHJlYWRlci5jYW5j
ZWwocGFzc2VkUmVhc29uKS50aGVuKCgpID0+IGFzc2VydF90cnVlKGNhbmNlbENhbGxlZCkpOwot
Ci19LCAnY2FuY2VsKCkgb24gYSByZWFkZXIgZG9lcyBub3QgcmVsZWFzZSB0aGUgcmVhZGVyJyk7
Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgbGV0IGNvbnRyb2xsZXI7Ci0gIGNvbnN0IHJz
ID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0gICAgICBjb250cm9sbGVy
ID0gYzsKLSAgICB9Ci0gIH0pOwotCi0gIGNvbnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcigpOwot
ICBjb25zdCBwcm9taXNlID0gcmVhZGVyLmNsb3NlZDsKLQotICBjb250cm9sbGVyLmNsb3NlKCk7
Ci0gIHJldHVybiBwcm9taXNlOwotCi19LCAnY2xvc2VkIHNob3VsZCBiZSBmdWxmaWxsZWQgYWZ0
ZXIgc3RyZWFtIGlzIGNsb3NlZCAoLmNsb3NlZCBhY2Nlc3MgYmVmb3JlIGFjcXVpcmluZyknKTsK
LQotcHJvbWlzZV90ZXN0KHQgPT4gewotCi0gIGxldCBjb250cm9sbGVyOwotICBjb25zdCBycyA9
IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgY29udHJvbGxlciA9
IGM7Ci0gICAgfQotICB9KTsKLQotICBjb25zdCByZWFkZXIxID0gcnMuZ2V0UmVhZGVyKCk7Ci0K
LSAgcmVhZGVyMS5yZWxlYXNlTG9jaygpOwotCi0gIGNvbnN0IHJlYWRlcjIgPSBycy5nZXRSZWFk
ZXIoKTsKLSAgY29udHJvbGxlci5jbG9zZSgpOwotCi0gIHJldHVybiBQcm9taXNlLmFsbChbCi0g
ICAgcHJvbWlzZV9yZWplY3RzKHQsIG5ldyBUeXBlRXJyb3IoKSwgcmVhZGVyMS5jbG9zZWQpLAot
ICAgIHJlYWRlcjIuY2xvc2VkCi0gIF0pOwotCi19LCAnY2xvc2VkIHNob3VsZCBiZSByZWplY3Rl
ZCBhZnRlciByZWFkZXIgcmVsZWFzZXMgaXRzIGxvY2sgKG11bHRpcGxlIHN0cmVhbSBsb2Nrcykn
KTsKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLQotICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0
cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgYy5lbnF1ZXVlKCdhJyk7Ci0gICAgICBjLmVu
cXVldWUoJ2InKTsKLSAgICAgIGMuY2xvc2UoKTsKLSAgICB9Ci0gIH0pOwotCi0gIGNvbnN0IHJl
YWRlcjEgPSBycy5nZXRSZWFkZXIoKTsKLSAgY29uc3QgcHJvbWlzZTEgPSByZWFkZXIxLnJlYWQo
KS50aGVuKHIgPT4gewotICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHIsIHsgdmFsdWU6ICdhJywg
ZG9uZTogZmFsc2UgfSwgJ3JlYWRpbmcgdGhlIGZpcnN0IGNodW5rIGZyb20gcmVhZGVyMSB3b3Jr
cycpOwotICB9KTsKLSAgcmVhZGVyMS5yZWxlYXNlTG9jaygpOwotCi0gIGNvbnN0IHJlYWRlcjIg
PSBycy5nZXRSZWFkZXIoKTsKLSAgY29uc3QgcHJvbWlzZTIgPSByZWFkZXIyLnJlYWQoKS50aGVu
KHIgPT4gewotICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHIsIHsgdmFsdWU6ICdiJywgZG9uZTog
ZmFsc2UgfSwgJ3JlYWRpbmcgdGhlIHNlY29uZCBjaHVuayBmcm9tIHJlYWRlcjIgd29ya3MnKTsK
LSAgfSk7Ci0gIHJlYWRlcjIucmVsZWFzZUxvY2soKTsKLQotICByZXR1cm4gUHJvbWlzZS5hbGwo
W3Byb21pc2UxLCBwcm9taXNlMl0pOwotCi19LCAnTXVsdGlwbGUgcmVhZGVycyBjYW4gYWNjZXNz
IHRoZSBzdHJlYW0gaW4gc2VxdWVuY2UnKTsKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLSAgY29u
c3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGMuZW5x
dWV1ZSgnYScpOwotICAgIH0KLSAgfSk7Ci0KLSAgY29uc3QgcmVhZGVyMSA9IHJzLmdldFJlYWRl
cigpOwotICByZWFkZXIxLnJlbGVhc2VMb2NrKCk7Ci0KLSAgY29uc3QgcmVhZGVyMiA9IHJzLmdl
dFJlYWRlcigpOwotCi0gIC8vIFNob3VsZCBiZSBhIG5vLW9wCi0gIHJlYWRlcjEucmVsZWFzZUxv
Y2soKTsKLQotICByZXR1cm4gcmVhZGVyMi5yZWFkKCkudGhlbihyZXN1bHQgPT4gewotICAgIGFz
c2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdCwgeyB2YWx1ZTogJ2EnLCBkb25lOiBmYWxzZSB9LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICdyZWFkKCkgc2hvdWxkIHN0aWxsIHdvcmsgb24gcmVh
ZGVyMiBldmVuIGFmdGVyIHJlYWRlcjEgaXMgcmVsZWFzZWQnKTsKLSAgfSk7Ci0KLX0sICdDYW5u
b3QgdXNlIGFuIGFscmVhZHktcmVsZWFzZWQgcmVhZGVyIHRvIHVubG9jayBhIHN0cmVhbSBhZ2Fp
bicpOwotCi1wcm9taXNlX3Rlc3QodCA9PiB7Ci0KLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVT
dHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGMuZW5xdWV1ZSgnYScpOwotICAgIH0sCi0g
ICAgY2FuY2VsKCkgewotICAgICAgYXNzZXJ0X3VucmVhY2hlZCgndW5kZXJseWluZyBzb3VyY2Ug
Y2FuY2VsIHNob3VsZCBub3QgYmUgY2FsbGVkJyk7Ci0gICAgfQotICB9KTsKLQotICBjb25zdCBy
ZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKLSAgcmVhZGVyLnJlbGVhc2VMb2NrKCk7Ci0gIGNvbnN0
IGNhbmNlbFByb21pc2UgPSByZWFkZXIuY2FuY2VsKCk7Ci0KLSAgY29uc3QgcmVhZGVyMiA9IHJz
LmdldFJlYWRlcigpOwotICBjb25zdCByZWFkUHJvbWlzZSA9IHJlYWRlcjIucmVhZCgpLnRoZW4o
ciA9PiB7Ci0gICAgYXNzZXJ0X29iamVjdF9lcXVhbHMociwgeyB2YWx1ZTogJ2EnLCBkb25lOiBm
YWxzZSB9LCAnYSBuZXcgcmVhZGVyIHNob3VsZCBiZSBhYmxlIHRvIHJlYWQgYSBjaHVuaycpOwot
ICB9KTsKLQotICByZXR1cm4gUHJvbWlzZS5hbGwoWwotICAgIHByb21pc2VfcmVqZWN0cyh0LCBu
ZXcgVHlwZUVycm9yKCksIGNhbmNlbFByb21pc2UpLAotICAgIHJlYWRQcm9taXNlCi0gIF0pOwot
Ci19LCAnY2FuY2VsKCkgb24gYSByZWxlYXNlZCByZWFkZXIgaXMgYSBuby1vcCBhbmQgZG9lcyBu
b3QgcGFzcyB0aHJvdWdoJyk7Ci0KLXByb21pc2VfdGVzdCh0ID0+IHsKLQotICBjb25zdCBwcm9t
aXNlQXNzZXJ0cyA9IFtdOwotCi0gIGxldCBjb250cm9sbGVyOwotICBjb25zdCB0aGVFcnJvciA9
IHsgbmFtZTogJ3VuaXF1ZSBlcnJvcicgfTsKLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJl
YW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGNvbnRyb2xsZXIgPSBjOwotICAgIH0KLSAgfSk7
Ci0KLSAgY29uc3QgcmVhZGVyMSA9IHJzLmdldFJlYWRlcigpOwotCi0gIHByb21pc2VBc3NlcnRz
LnB1c2goCi0gICAgcHJvbWlzZV9yZWplY3RzKHQsIHRoZUVycm9yLCByZWFkZXIxLmNsb3NlZCks
Ci0gICAgcHJvbWlzZV9yZWplY3RzKHQsIHRoZUVycm9yLCByZWFkZXIxLnJlYWQoKSkKLSAgKTsK
LQotICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gcnMuZ2V0UmVhZGVyKCks
ICd0cnlpbmcgdG8gZ2V0IGFub3RoZXIgcmVhZGVyIGJlZm9yZSBlcnJvcmluZyBzaG91bGQgdGhy
b3cnKTsKLQotICBjb250cm9sbGVyLmVycm9yKHRoZUVycm9yKTsKLQotICByZWFkZXIxLnJlbGVh
c2VMb2NrKCk7Ci0KLSAgY29uc3QgcmVhZGVyMiA9IHJzLmdldFJlYWRlcigpOwotCi0gIHByb21p
c2VBc3NlcnRzLnB1c2goCi0gICAgcHJvbWlzZV9yZWplY3RzKHQsIHRoZUVycm9yLCByZWFkZXIy
LmNsb3NlZCksCi0gICAgcHJvbWlzZV9yZWplY3RzKHQsIHRoZUVycm9yLCByZWFkZXIyLnJlYWQo
KSkKLSAgKTsKLQotICByZXR1cm4gUHJvbWlzZS5hbGwocHJvbWlzZUFzc2VydHMpOwotCi19LCAn
R2V0dGluZyBhIHNlY29uZCByZWFkZXIgYWZ0ZXIgZXJyb3JpbmcgdGhlIHN0cmVhbSBhbmQgcmVs
ZWFzaW5nIHRoZSByZWFkZXIgc2hvdWxkIHN1Y2NlZWQnKTsKLQotcHJvbWlzZV90ZXN0KHQgPT4g
ewotCi0gIGxldCBjb250cm9sbGVyOwotICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7
Ci0gICAgc3RhcnQoYykgewotICAgICAgY29udHJvbGxlciA9IGM7Ci0gICAgfQotICB9KTsKLQot
ICBjb25zdCBwcm9taXNlID0gcnMuZ2V0UmVhZGVyKCkuY2xvc2VkLnRoZW4oCi0gICAgdC51bnJl
YWNoZWRfZnVuYygnY2xvc2VkIHByb21pc2Ugc2hvdWxkIG5vdCBiZSBmdWxmaWxsZWQgd2hlbiBz
dHJlYW0gaXMgZXJyb3JlZCcpLAotICAgIGVyciA9PiB7Ci0gICAgICBhc3NlcnRfZXF1YWxzKGVy
ciwgdW5kZWZpbmVkLCAncGFzc2VkIGVycm9yIHNob3VsZCBiZSB1bmRlZmluZWQgYXMgaXQgd2Fz
Jyk7Ci0gICAgfQotICApOwotCi0gIGNvbnRyb2xsZXIuZXJyb3IoKTsKLSAgcmV0dXJuIHByb21p
c2U7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbVJlYWRlciBjbG9zZWQgcHJvbWlzZSBzaG91bGQgYmUg
cmVqZWN0ZWQgd2l0aCB1bmRlZmluZWQgaWYgdGhhdCBpcyB0aGUgZXJyb3InKTsKLQotCi1wcm9t
aXNlX3Rlc3QodCA9PiB7Ci0KLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAg
IHN0YXJ0KCkgewotICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7Ci0gICAgfQotICB9KTsK
LQotICByZXR1cm4gcnMuZ2V0UmVhZGVyKCkucmVhZCgpLnRoZW4oCi0gICAgdC51bnJlYWNoZWRf
ZnVuYygncmVhZCBwcm9taXNlIHNob3VsZCBub3QgYmUgZnVsZmlsbGVkIHdoZW4gc3RyZWFtIGlz
IGVycm9yZWQnKSwKLSAgICBlcnIgPT4gewotICAgICAgYXNzZXJ0X2VxdWFscyhlcnIsIHVuZGVm
aW5lZCwgJ3Bhc3NlZCBlcnJvciBzaG91bGQgYmUgdW5kZWZpbmVkIGFzIGl0IHdhcycpOwotICAg
IH0KLSAgKTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtUmVhZGVyOiBpZiBzdGFydCByZWplY3RzIHdp
dGggbm8gcGFyYW1ldGVyLCBpdCBzaG91bGQgZXJyb3IgdGhlIHN0cmVhbSB3aXRoIGFuIHVuZGVm
aW5lZCBlcnJvcicpOwotCi1wcm9taXNlX3Rlc3QodCA9PiB7Ci0KLSAgY29uc3QgdGhlRXJyb3Ig
PSB7IG5hbWU6ICd1bmlxdWUgc3RyaW5nJyB9OwotICBsZXQgY29udHJvbGxlcjsKLSAgY29uc3Qg
cnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGNvbnRyb2xs
ZXIgPSBjOwotICAgIH0KLSAgfSk7Ci0KLSAgY29uc3QgcHJvbWlzZSA9IHByb21pc2VfcmVqZWN0
cyh0LCB0aGVFcnJvciwgcnMuZ2V0UmVhZGVyKCkuY2xvc2VkKTsKLQotICBjb250cm9sbGVyLmVy
cm9yKHRoZUVycm9yKTsKLSAgcmV0dXJuIHByb21pc2U7Ci0KLX0sICdFcnJvcmluZyBhIFJlYWRh
YmxlU3RyZWFtIGFmdGVyIGNoZWNraW5nIGNsb3NlZCBzaG91bGQgcmVqZWN0IFJlYWRhYmxlU3Ry
ZWFtUmVhZGVyIGNsb3NlZCBwcm9taXNlJyk7Ci0KLXByb21pc2VfdGVzdCh0ID0+IHsKLQotICBj
b25zdCB0aGVFcnJvciA9IHsgbmFtZTogJ3VuaXF1ZSBzdHJpbmcnIH07Ci0gIGxldCBjb250cm9s
bGVyOwotICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewot
ICAgICAgY29udHJvbGxlciA9IGM7Ci0gICAgfQotICB9KTsKLQotICBjb250cm9sbGVyLmVycm9y
KHRoZUVycm9yKTsKLQotICAvLyBMZXQncyBjYWxsIGdldFJlYWRlciB0d2ljZSBmb3IgZXh0cmEg
dGVzdCBjb3ZlcmFnZSBvZiB0aGlzIGNvZGUgcGF0aC4KLSAgcnMuZ2V0UmVhZGVyKCkucmVsZWFz
ZUxvY2soKTsKLQotICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHQsIHRoZUVycm9yLCBycy5nZXRS
ZWFkZXIoKS5jbG9zZWQpOwotCi19LCAnRXJyb3JpbmcgYSBSZWFkYWJsZVN0cmVhbSBiZWZvcmUg
Y2hlY2tpbmcgY2xvc2VkIHNob3VsZCByZWplY3QgUmVhZGFibGVTdHJlYW1SZWFkZXIgY2xvc2Vk
IHByb21pc2UnKTsKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLQotICBsZXQgY29udHJvbGxlcjsK
LSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAg
IGNvbnRyb2xsZXIgPSBjOwotICAgIH0KLSAgfSk7Ci0gIGNvbnN0IHJlYWRlciA9IHJzLmdldFJl
YWRlcigpOwotCi0gIGNvbnN0IHByb21pc2UgPSBQcm9taXNlLmFsbChbCi0gICAgcmVhZGVyLnJl
YWQoKS50aGVuKHJlc3VsdCA9PiB7Ci0gICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQs
IHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9LCAncmVhZCgpIHNob3VsZCBmdWxmaWxs
IHdpdGggY2xvc2UgKDEpJyk7Ci0gICAgfSksCi0gICAgcmVhZGVyLnJlYWQoKS50aGVuKHJlc3Vs
dCA9PiB7Ci0gICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6IHVuZGVm
aW5lZCwgZG9uZTogdHJ1ZSB9LCAncmVhZCgpIHNob3VsZCBmdWxmaWxsIHdpdGggY2xvc2UgKDIp
Jyk7Ci0gICAgfSksCi0gICAgcmVhZGVyLmNsb3NlZAotICBdKTsKLQotICBjb250cm9sbGVyLmNs
b3NlKCk7Ci0gIHJldHVybiBwcm9taXNlOwotCi19LCAnUmVhZGluZyB0d2ljZSBvbiBhIHN0cmVh
bSB0aGF0IGdldHMgY2xvc2VkJyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgbGV0IGNv
bnRyb2xsZXI7Ci0gIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChj
KSB7Ci0gICAgICBjb250cm9sbGVyID0gYzsKLSAgICB9Ci0gIH0pOwotCi0gIGNvbnRyb2xsZXIu
Y2xvc2UoKTsKLSAgY29uc3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7Ci0KLSAgcmV0dXJuIFBy
b21pc2UuYWxsKFsKLSAgICByZWFkZXIucmVhZCgpLnRoZW4ocmVzdWx0ID0+IHsKLSAgICAgIGFz
c2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdCwgeyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVl
IH0sICdyZWFkKCkgc2hvdWxkIGZ1bGZpbGwgd2l0aCBjbG9zZSAoMSknKTsKLSAgICB9KSwKLSAg
ICByZWFkZXIucmVhZCgpLnRoZW4ocmVzdWx0ID0+IHsKLSAgICAgIGFzc2VydF9vYmplY3RfZXF1
YWxzKHJlc3VsdCwgeyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0sICdyZWFkKCkgc2hv
dWxkIGZ1bGZpbGwgd2l0aCBjbG9zZSAoMiknKTsKLSAgICB9KSwKLSAgICByZWFkZXIuY2xvc2Vk
Ci0gIF0pOwotCi19LCAnUmVhZGluZyB0d2ljZSBvbiBhIGNsb3NlZCBzdHJlYW0nKTsKLQotcHJv
bWlzZV90ZXN0KHQgPT4gewotCi0gIGxldCBjb250cm9sbGVyOwotICBjb25zdCBycyA9IG5ldyBS
ZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgY29udHJvbGxlciA9IGM7Ci0g
ICAgfQotICB9KTsKLQotICBjb25zdCBteUVycm9yID0geyBuYW1lOiAnbWFzaGVkIHBvdGF0b2Vz
JyB9OwotICBjb250cm9sbGVyLmVycm9yKG15RXJyb3IpOwotCi0gIGNvbnN0IHJlYWRlciA9IHJz
LmdldFJlYWRlcigpOwotCi0gIHJldHVybiBQcm9taXNlLmFsbChbCi0gICAgcHJvbWlzZV9yZWpl
Y3RzKHQsIG15RXJyb3IsIHJlYWRlci5yZWFkKCkpLAotICAgIHByb21pc2VfcmVqZWN0cyh0LCBt
eUVycm9yLCByZWFkZXIucmVhZCgpKSwKLSAgICBwcm9taXNlX3JlamVjdHModCwgbXlFcnJvciwg
cmVhZGVyLmNsb3NlZCkKLSAgXSk7Ci0KLX0sICdSZWFkaW5nIHR3aWNlIG9uIGFuIGVycm9yZWQg
c3RyZWFtJyk7Ci0KLXByb21pc2VfdGVzdCh0ID0+IHsKLQotICBsZXQgY29udHJvbGxlcjsKLSAg
Y29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGNv
bnRyb2xsZXIgPSBjOwotICAgIH0KLSAgfSk7Ci0KLSAgY29uc3QgbXlFcnJvciA9IHsgbmFtZTog
J21hc2hlZCBwb3RhdG9lcycgfTsKLSAgY29uc3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7Ci0K
LSAgY29uc3QgcHJvbWlzZSA9IFByb21pc2UuYWxsKFsKLSAgICBwcm9taXNlX3JlamVjdHModCwg
bXlFcnJvciwgcmVhZGVyLnJlYWQoKSksCi0gICAgcHJvbWlzZV9yZWplY3RzKHQsIG15RXJyb3Is
IHJlYWRlci5yZWFkKCkpLAotICAgIHByb21pc2VfcmVqZWN0cyh0LCBteUVycm9yLCByZWFkZXIu
Y2xvc2VkKQotICBdKTsKLQotICBjb250cm9sbGVyLmVycm9yKG15RXJyb3IpOwotICByZXR1cm4g
cHJvbWlzZTsKLQotfSwgJ1JlYWRpbmcgdHdpY2Ugb24gYSBzdHJlYW0gdGhhdCBnZXRzIGVycm9y
ZWQnKTsKLQotZG9uZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvcmVhZGFibGUtc3RyZWFt
LXJlYWRlci5zZXJ2aWNld29ya2VyLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3Jl
YWRhYmxlLXN0cmVhbS1yZWFkZXIuc2VydmljZXdvcmtlci5odHRwcy1leHBlY3RlZC50eHQKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRhMjQzNDhkZGFmNDgwYzI4OGFjOTcxZWYwMTcz
ODM1NjhhNDlmMDkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3Jl
YWRhYmxlLXN0cmVhbXMvcmVhZGFibGUtc3RyZWFtLXJlYWRlci5zZXJ2aWNld29ya2VyLmh0dHBz
LWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLQotUEFTUyBTZXJ2
aWNlIHdvcmtlciB0ZXN0IHNldHVwIAotUEFTUyBDYW4gZ2V0IHRoZSBSZWFkYWJsZVN0cmVhbVJl
YWRlciBjb25zdHJ1Y3RvciBpbmRpcmVjdGx5IAotUEFTUyBSZWFkYWJsZVN0cmVhbVJlYWRlciBj
b25zdHJ1Y3RvciBzaG91bGQgZ2V0IGEgUmVhZGFibGVTdHJlYW0gb2JqZWN0IGFzIGFyZ3VtZW50
IAotUEFTUyBSZWFkYWJsZVN0cmVhbVJlYWRlciBpbnN0YW5jZXMgc2hvdWxkIGhhdmUgdGhlIGNv
cnJlY3QgbGlzdCBvZiBwcm9wZXJ0aWVzIAotUEFTUyBSZWFkYWJsZVN0cmVhbVJlYWRlciBjbG9z
ZWQgc2hvdWxkIGFsd2F5cyByZXR1cm4gdGhlIHNhbWUgcHJvbWlzZSBvYmplY3QgCi1QQVNTIENv
bnN0cnVjdGluZyBhIFJlYWRhYmxlU3RyZWFtUmVhZGVyIGRpcmVjdGx5IHNob3VsZCBmYWlsIGlm
IHRoZSBzdHJlYW0gaXMgYWxyZWFkeSBsb2NrZWQgKHZpYSBkaXJlY3QgY29uc3RydWN0aW9uKSAK
LVBBU1MgR2V0dGluZyBhIFJlYWRhYmxlU3RyZWFtUmVhZGVyIHZpYSBnZXRSZWFkZXIgc2hvdWxk
IGZhaWwgaWYgdGhlIHN0cmVhbSBpcyBhbHJlYWR5IGxvY2tlZCAodmlhIGRpcmVjdCBjb25zdHJ1
Y3Rpb24pIAotUEFTUyBDb25zdHJ1Y3RpbmcgYSBSZWFkYWJsZVN0cmVhbVJlYWRlciBkaXJlY3Rs
eSBzaG91bGQgZmFpbCBpZiB0aGUgc3RyZWFtIGlzIGFscmVhZHkgbG9ja2VkICh2aWEgZ2V0UmVh
ZGVyKSAKLVBBU1MgR2V0dGluZyBhIFJlYWRhYmxlU3RyZWFtUmVhZGVyIHZpYSBnZXRSZWFkZXIg
c2hvdWxkIGZhaWwgaWYgdGhlIHN0cmVhbSBpcyBhbHJlYWR5IGxvY2tlZCAodmlhIGdldFJlYWRl
cikgCi1QQVNTIENvbnN0cnVjdGluZyBhIFJlYWRhYmxlU3RyZWFtUmVhZGVyIGRpcmVjdGx5IHNo
b3VsZCBiZSBPSyBpZiB0aGUgc3RyZWFtIGlzIGNsb3NlZCAKLVBBU1MgQ29uc3RydWN0aW5nIGEg
UmVhZGFibGVTdHJlYW1SZWFkZXIgZGlyZWN0bHkgc2hvdWxkIGJlIE9LIGlmIHRoZSBzdHJlYW0g
aXMgZXJyb3JlZCAKLVBBU1MgUmVhZGluZyBmcm9tIGEgcmVhZGVyIGZvciBhbiBlbXB0eSBzdHJl
YW0gd2lsbCB3YWl0IHVudGlsIGEgY2h1bmsgaXMgYXZhaWxhYmxlIAotUEFTUyBjYW5jZWwoKSBv
biBhIHJlYWRlciBkb2VzIG5vdCByZWxlYXNlIHRoZSByZWFkZXIgCi1QQVNTIGNsb3NlZCBzaG91
bGQgYmUgZnVsZmlsbGVkIGFmdGVyIHN0cmVhbSBpcyBjbG9zZWQgKC5jbG9zZWQgYWNjZXNzIGJl
Zm9yZSBhY3F1aXJpbmcpIAotUEFTUyBjbG9zZWQgc2hvdWxkIGJlIHJlamVjdGVkIGFmdGVyIHJl
YWRlciByZWxlYXNlcyBpdHMgbG9jayAobXVsdGlwbGUgc3RyZWFtIGxvY2tzKSAKLVBBU1MgTXVs
dGlwbGUgcmVhZGVycyBjYW4gYWNjZXNzIHRoZSBzdHJlYW0gaW4gc2VxdWVuY2UgCi1QQVNTIENh
bm5vdCB1c2UgYW4gYWxyZWFkeS1yZWxlYXNlZCByZWFkZXIgdG8gdW5sb2NrIGEgc3RyZWFtIGFn
YWluIAotUEFTUyBjYW5jZWwoKSBvbiBhIHJlbGVhc2VkIHJlYWRlciBpcyBhIG5vLW9wIGFuZCBk
b2VzIG5vdCBwYXNzIHRocm91Z2ggCi1QQVNTIEdldHRpbmcgYSBzZWNvbmQgcmVhZGVyIGFmdGVy
IGVycm9yaW5nIHRoZSBzdHJlYW0gYW5kIHJlbGVhc2luZyB0aGUgcmVhZGVyIHNob3VsZCBzdWNj
ZWVkIAotUEFTUyBSZWFkYWJsZVN0cmVhbVJlYWRlciBjbG9zZWQgcHJvbWlzZSBzaG91bGQgYmUg
cmVqZWN0ZWQgd2l0aCB1bmRlZmluZWQgaWYgdGhhdCBpcyB0aGUgZXJyb3IgCi1QQVNTIFJlYWRh
YmxlU3RyZWFtUmVhZGVyOiBpZiBzdGFydCByZWplY3RzIHdpdGggbm8gcGFyYW1ldGVyLCBpdCBz
aG91bGQgZXJyb3IgdGhlIHN0cmVhbSB3aXRoIGFuIHVuZGVmaW5lZCBlcnJvciAKLVBBU1MgRXJy
b3JpbmcgYSBSZWFkYWJsZVN0cmVhbSBhZnRlciBjaGVja2luZyBjbG9zZWQgc2hvdWxkIHJlamVj
dCBSZWFkYWJsZVN0cmVhbVJlYWRlciBjbG9zZWQgcHJvbWlzZSAKLVBBU1MgRXJyb3JpbmcgYSBS
ZWFkYWJsZVN0cmVhbSBiZWZvcmUgY2hlY2tpbmcgY2xvc2VkIHNob3VsZCByZWplY3QgUmVhZGFi
bGVTdHJlYW1SZWFkZXIgY2xvc2VkIHByb21pc2UgCi1QQVNTIFJlYWRpbmcgdHdpY2Ugb24gYSBz
dHJlYW0gdGhhdCBnZXRzIGNsb3NlZCAKLVBBU1MgUmVhZGluZyB0d2ljZSBvbiBhIGNsb3NlZCBz
dHJlYW0gCi1QQVNTIFJlYWRpbmcgdHdpY2Ugb24gYW4gZXJyb3JlZCBzdHJlYW0gCi1QQVNTIFJl
YWRpbmcgdHdpY2Ugb24gYSBzdHJlYW0gdGhhdCBnZXRzIGVycm9yZWQgCi0KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFk
YWJsZS1zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbS1yZWFkZXIuc2VydmljZXdvcmtlci5odHRwcy5o
dG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
L3JlYWRhYmxlLXN0cmVhbXMvcmVhZGFibGUtc3RyZWFtLXJlYWRlci5zZXJ2aWNld29ya2VyLmh0
dHBzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNjOGFmZTAzYTIxMzY0NWFl
MWZhMmZlNzI0ZDc3MDk5ZjUzODRmYmQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvcmVhZGFibGUtc3RyZWFtLXJlYWRlci5zZXJ2aWNl
d29ya2VyLmh0dHBzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi08IURPQ1RZ
UEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTx0aXRsZT5yZWFkYWJsZS1zdHJlYW0t
cmVhZGVyLmpzIHNlcnZpY2Ugd29ya2VyIHdyYXBwZXIgZmlsZTwvdGl0bGU+Ci0KLTxzY3JpcHQg
c3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIv
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIv
c2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL3Jlc291cmNlcy90ZXN0LWhlbHBlcnMuc3Vi
LmpzIj48L3NjcmlwdD4KLQotPHNjcmlwdD4KLSd1c2Ugc3RyaWN0JzsKLXNlcnZpY2Vfd29ya2Vy
X3Rlc3QoJ3JlYWRhYmxlLXN0cmVhbS1yZWFkZXIuanMnLCAnU2VydmljZSB3b3JrZXIgdGVzdCBz
ZXR1cCcpOwotPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9yZWFkYWJsZS1zdHJl
YW0tcmVhZGVyLnNoYXJlZHdvcmtlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9yZWFkYWJs
ZS1zdHJlYW0tcmVhZGVyLnNoYXJlZHdvcmtlci1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDA5ZDVkMjUwOWQ3ODQ3ZThjZDZmZTY2MDZhYTYwY2RkMzNhYTQ3NGUu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVh
bXMvcmVhZGFibGUtc3RyZWFtLXJlYWRlci5zaGFyZWR3b3JrZXItZXhwZWN0ZWQudHh0CisrKyAv
ZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1DT05TT0xFIE1FU1NBR0U6IFJlZmVyZW5jZUVycm9y
OiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBTaGFyZWRXb3JrZXIKLQotSGFybmVzcyBFcnJvciAoRkFJ
TCksIG1lc3NhZ2UgPSBSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogU2hhcmVk
V29ya2VyCi0KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvcmVhZGFibGUtc3RyZWFtLXJlYWRl
ci5zaGFyZWR3b3JrZXIuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbS1yZWFkZXIu
c2hhcmVkd29ya2VyLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI3N2U0ZWQy
MzgwZDg0MDc5MGE3OGYxY2RiZmI3NDJhNDQwNDRhMzguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvcmVhZGFibGUtc3RyZWFtLXJlYWRl
ci5zaGFyZWR3b3JrZXIuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLTwhRE9D
VFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHRpdGxlPnJlYWRhYmxlLXN0cmVh
bS1yZWFkZXIuanMgc2hhcmVkIHdvcmtlciB3cmFwcGVyIGZpbGU8L3RpdGxlPgotCi08c2NyaXB0
IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0i
L3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci0KLTxzY3JpcHQ+Ci0n
dXNlIHN0cmljdCc7Ci1mZXRjaF90ZXN0c19mcm9tX3dvcmtlcihuZXcgU2hhcmVkV29ya2VyKCdy
ZWFkYWJsZS1zdHJlYW0tcmVhZGVyLmpzJykpOwotPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUt
c3RyZWFtcy9yZWVudHJhbnQtc3RyYXRlZ2llcy5hbnktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVh
bXMvcmVlbnRyYW50LXN0cmF0ZWdpZXMuYW55LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xZmE0
MjIwYzY1MGIwMTA0OTFlNzg1NWUyNDU3NzhhZDNkYWE1MTI3Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRh
YmxlLXN0cmVhbXMvcmVlbnRyYW50LXN0cmF0ZWdpZXMuYW55LWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDEyIEBACisKK1BBU1MgZW5xdWV1ZSgpIGluc2lkZSBzaXplKCkgc2hvdWxkIHdvcmsgCitQ
QVNTIGNsb3NlKCkgaW5zaWRlIHNpemUoKSBzaG91bGQgbm90IGNyYXNoIAorUEFTUyBjbG9zZSBy
ZXF1ZXN0IGluc2lkZSBzaXplKCkgc2hvdWxkIHdvcmsgCitQQVNTIGVycm9yKCkgaW5zaWRlIHNp
emUoKSBzaG91bGQgd29yayAKK1BBU1MgZGVzaXJlZFNpemUgaW5zaWRlIHNpemUoKSBzaG91bGQg
d29yayAKK1BBU1MgY2FuY2VsKCkgaW5zaWRlIHNpemUoKSBzaG91bGQgd29yayAKK1BBU1MgcGlw
ZVRvKCkgaW5zaWRlIHNpemUoKSBzaG91bGQgYmVoYXZlIGFzIGV4cGVjdGVkIAorUEFTUyByZWFk
KCkgaW5zaWRlIG9mIHNpemUoKSBzaG91bGQgYmVoYXZlIGFzIGV4cGVjdGVkIAorUEFTUyBnZXRS
ZWFkZXIoKSBpbnNpZGUgc2l6ZSgpIHNob3VsZCB3b3JrIAorUEFTUyB0ZWUoKSBpbnNpZGUgc2l6
ZSgpIHNob3VsZCB3b3JrIAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9yZWVudHJhbnQtc3Ry
YXRlZ2llcy5hbnkuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3JlZW50cmFudC1zdHJhdGVnaWVzLmFueS5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjIzODI5MTM1MjhlNjkzYjNhNWQ1NmM2NjBhNDUwNjA5ODBiNTQ4YzMK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9yZWVudHJhbnQtc3RyYXRlZ2llcy5hbnku
aHRtbApAQCAtMCwwICsxIEBACis8IS0tIFRoaXMgZmlsZSBpcyByZXF1aXJlZCBmb3IgV2ViS2l0
IHRlc3QgaW5mcmFzdHJ1Y3R1cmUgdG8gcnVuIHRoZSB0ZW1wbGF0ZWQgdGVzdCAtLT4KXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9yZWVudHJhbnQt
c3RyYXRlZ2llcy5hbnkuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9yZWVudHJhbnQtc3RyYXRlZ2llcy5hbnku
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYTAyZDA4YjBhY2M1MGE0M2RiZTk4N2QyM2Q4Mzk0NDBhNTIxMjAzNgot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3JlZW50cmFudC1zdHJhdGVnaWVzLmFueS5q
cwpAQCAtMCwwICsxLDI2NCBAQAorLy8gTUVUQTogZ2xvYmFsPXdpbmRvdyx3b3JrZXIsanNzaGVs
bAorLy8gTUVUQTogc2NyaXB0PS4uL3Jlc291cmNlcy9yZWNvcmRpbmctc3RyZWFtcy5qcworLy8g
TUVUQTogc2NyaXB0PS4uL3Jlc291cmNlcy9ycy11dGlscy5qcworLy8gTUVUQTogc2NyaXB0PS4u
L3Jlc291cmNlcy90ZXN0LXV0aWxzLmpzCisndXNlIHN0cmljdCc7CisKKy8vIFRoZSBzaXplKCkg
ZnVuY3Rpb24gb2YgdGhlIHJlYWRhYmxlIHN0cmF0ZWd5IGNhbiByZS1lbnRyYW50bHkgY2FsbCBi
YWNrIGludG8gdGhlIFJlYWRhYmxlU3RyZWFtIGltcGxlbWVudGF0aW9uLiBUaGlzCisvLyBtYWtl
cyBpdCByaXNreSB0byBjYWNoZSBzdGF0ZSBhY3Jvc3MgdGhlIGNhbGwgdG8gUmVhZGFibGVTdHJl
YW1EZWZhdWx0Q29udHJvbGxlckVucXVldWUuIFRoZXNlIHRlc3RzIGF0dGVtcHQgdG8gY2F0Y2gK
Ky8vIHN1Y2ggZXJyb3JzLiBUaGV5IGFyZSBzZXBhcmF0ZWQgZnJvbSB0aGUgb3RoZXIgc3RyYXRl
Z3kgdGVzdHMgYmVjYXVzZSBubyByZWFsIHVzZXIgY29kZSBzaG91bGQgZXZlciBkbyBhbnl0aGlu
ZyBsaWtlCisvLyB0aGlzLgorCitjb25zdCBlcnJvcjEgPSBuZXcgRXJyb3IoJ2Vycm9yMScpOwor
ZXJyb3IxLm5hbWUgPSAnZXJyb3IxJzsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgbGV0IGNv
bnRyb2xsZXI7CisgIGxldCBjYWxscyA9IDA7CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3Ry
ZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjb250cm9sbGVyID0gYzsKKyAgICB9CisgIH0s
IHsKKyAgICBzaXplKCkgeworICAgICAgKytjYWxsczsKKyAgICAgIGlmIChjYWxscyA8IDIpIHsK
KyAgICAgICAgY29udHJvbGxlci5lbnF1ZXVlKCdiJyk7CisgICAgICB9CisgICAgICByZXR1cm4g
MTsKKyAgICB9CisgIH0pOworICBjb250cm9sbGVyLmVucXVldWUoJ2EnKTsKKyAgY29udHJvbGxl
ci5jbG9zZSgpOworICByZXR1cm4gcmVhZGFibGVTdHJlYW1Ub0FycmF5KHJzKQorICAgICAgLnRo
ZW4oYXJyYXkgPT4gYXNzZXJ0X2FycmF5X2VxdWFscyhhcnJheSwgWydiJywgJ2EnXSwgJ2FycmF5
IHNob3VsZCBjb250YWluIHR3byBjaHVua3MnKSk7Cit9LCAnZW5xdWV1ZSgpIGluc2lkZSBzaXpl
KCkgc2hvdWxkIHdvcmsnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgbGV0IGNvbnRyb2xs
ZXI7CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7Cisg
ICAgICBjb250cm9sbGVyID0gYzsKKyAgICB9CisgIH0sIHsKKyAgICBzaXplKCkgeworICAgICAg
Ly8gVGhlIHF1ZXVlIGlzIGVtcHR5LgorICAgICAgY29udHJvbGxlci5jbG9zZSgpOworICAgICAg
Ly8gVGhlIHN0YXRlIGhhcyBnb25lIGZyb20gInJlYWRhYmxlIiB0byAiY2xvc2VkIi4KKyAgICAg
IHJldHVybiAxOworICAgICAgLy8gVGhpcyBjaHVuayB3aWxsIGJlIGVucXVldWVkLCBidXQgd2ls
bCBiZSBpbXBvc3NpYmxlIHRvIHJlYWQgYmVjYXVzZSB0aGUgc3RhdGUgaXMgYWxyZWFkeSAiY2xv
c2VkIi4KKyAgICB9CisgIH0pOworICBjb250cm9sbGVyLmVucXVldWUoJ2EnKTsKKyAgcmV0dXJu
IHJlYWRhYmxlU3RyZWFtVG9BcnJheShycykKKyAgICAgIC50aGVuKGFycmF5ID0+IGFzc2VydF9h
cnJheV9lcXVhbHMoYXJyYXksIFtdLCAnYXJyYXkgc2hvdWxkIGNvbnRhaW4gbm8gY2h1bmtzJykp
OworICAvLyBUaGUgY2h1bmsgJ2EnIGlzIHN0aWxsIGluIHJzJ3MgcXVldWUuIEl0IGlzIGNsb3Nl
ZCBzbyAnYScgY2Fubm90IGJlIHJlYWQuCit9LCAnY2xvc2UoKSBpbnNpZGUgc2l6ZSgpIHNob3Vs
ZCBub3QgY3Jhc2gnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgbGV0IGNvbnRyb2xsZXI7
CisgIGxldCBjYWxscyA9IDA7CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAg
ICBzdGFydChjKSB7CisgICAgICBjb250cm9sbGVyID0gYzsKKyAgICB9CisgIH0sIHsKKyAgICBz
aXplKCkgeworICAgICAgKytjYWxsczsKKyAgICAgIGlmIChjYWxscyA9PT0gMikgeworICAgICAg
ICAvLyBUaGUgcXVldWUgY29udGFpbnMgb25lIGNodW5rLgorICAgICAgICBjb250cm9sbGVyLmNs
b3NlKCk7CisgICAgICAgIC8vIFRoZSBzdGF0ZSBpcyBzdGlsbCAicmVhZGFibGUiLCBidXQgY2xv
c2VSZXF1ZXN0IGlzIG5vdyB0cnVlLgorICAgICAgfQorICAgICAgcmV0dXJuIDE7CisgICAgfQor
ICB9KTsKKyAgY29udHJvbGxlci5lbnF1ZXVlKCdhJyk7CisgIGNvbnRyb2xsZXIuZW5xdWV1ZSgn
YicpOworICByZXR1cm4gcmVhZGFibGVTdHJlYW1Ub0FycmF5KHJzKQorICAgICAgLnRoZW4oYXJy
YXkgPT4gYXNzZXJ0X2FycmF5X2VxdWFscyhhcnJheSwgWydhJywgJ2InXSwgJ2FycmF5IHNob3Vs
ZCBjb250YWluIHR3byBjaHVua3MnKSk7Cit9LCAnY2xvc2UgcmVxdWVzdCBpbnNpZGUgc2l6ZSgp
IHNob3VsZCB3b3JrJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgbGV0IGNvbnRyb2xsZXI7
CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAg
ICBjb250cm9sbGVyID0gYzsKKyAgICB9CisgIH0sIHsKKyAgICBzaXplKCkgeworICAgICAgY29u
dHJvbGxlci5lcnJvcihlcnJvcjEpOworICAgICAgcmV0dXJuIDE7CisgICAgfQorICB9KTsKKyAg
Y29udHJvbGxlci5lbnF1ZXVlKCdhJyk7CisgIHJldHVybiBwcm9taXNlX3JlamVjdHNfZXhhY3Rs
eSh0LCBlcnJvcjEsIHJzLmdldFJlYWRlcigpLnJlYWQoKSwgJ3JlYWQoKSBzaG91bGQgcmVqZWN0
Jyk7Cit9LCAnZXJyb3IoKSBpbnNpZGUgc2l6ZSgpIHNob3VsZCB3b3JrJyk7CisKK3Byb21pc2Vf
dGVzdCgoKSA9PiB7CisgIGxldCBjb250cm9sbGVyOworICBjb25zdCBycyA9IG5ldyBSZWFkYWJs
ZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgY29udHJvbGxlciA9IGM7CisgICAgfQor
ICB9LCB7CisgICAgc2l6ZSgpIHsKKyAgICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNp
cmVkU2l6ZSwgMSwgJ2Rlc2lyZWRTaXplIHNob3VsZCBiZSAxJyk7CisgICAgICByZXR1cm4gMTsK
KyAgICB9LAorICAgIGhpZ2hXYXRlck1hcms6IDEKKyAgfSk7CisgIGNvbnRyb2xsZXIuZW5xdWV1
ZSgnYScpOworICBjb250cm9sbGVyLmNsb3NlKCk7CisgIHJldHVybiByZWFkYWJsZVN0cmVhbVRv
QXJyYXkocnMpCisgICAgICAudGhlbihhcnJheSA9PiBhc3NlcnRfYXJyYXlfZXF1YWxzKGFycmF5
LCBbJ2EnXSwgJ2FycmF5IHNob3VsZCBjb250YWluIG9uZSBjaHVuaycpKTsKK30sICdkZXNpcmVk
U2l6ZSBpbnNpZGUgc2l6ZSgpIHNob3VsZCB3b3JrJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsK
KyAgbGV0IGNhbmNlbFByb21pc2U7CisgIGxldCBjb250cm9sbGVyOworICBjb25zdCBycyA9IG5l
dyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgY29udHJvbGxlciA9IGM7
CisgICAgfSwKKyAgICBjYW5jZWw6IHQuc3RlcF9mdW5jKHJlYXNvbiA9PiB7CisgICAgICBhc3Nl
cnRfZXF1YWxzKHJlYXNvbiwgZXJyb3IxLCAncmVhc29uIHNob3VsZCBiZSBlcnJvcjEnKTsKKyAg
ICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiBjb250cm9sbGVyLmVucXVldWUo
KSwgJ2VucXVldWUoKSBzaG91bGQgdGhyb3cnKTsKKyAgICB9KQorICB9LCB7CisgICAgc2l6ZSgp
IHsKKyAgICAgIGNhbmNlbFByb21pc2UgPSBycy5jYW5jZWwoZXJyb3IxKTsKKyAgICAgIHJldHVy
biAxOworICAgIH0sCisgICAgaGlnaFdhdGVyTWFyazogSW5maW5pdHkKKyAgfSk7CisgIGNvbnRy
b2xsZXIuZW5xdWV1ZSgnYScpOworICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKKyAg
cmV0dXJuIFByb21pc2UuYWxsKFsKKyAgICByZWFkZXIuY2xvc2VkLAorICAgIGNhbmNlbFByb21p
c2UKKyAgXSk7Cit9LCAnY2FuY2VsKCkgaW5zaWRlIHNpemUoKSBzaG91bGQgd29yaycpOworCitw
cm9taXNlX3Rlc3QoKCkgPT4geworICBsZXQgY29udHJvbGxlcjsKKyAgbGV0IHBpcGVUb1Byb21p
c2U7CisgIGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0oKTsKKyAgY29uc3QgcnMg
PSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGNvbnRyb2xsZXIg
PSBjOworICAgIH0KKyAgfSwgeworICAgIHNpemUoKSB7CisgICAgICBpZiAoIXBpcGVUb1Byb21p
c2UpIHsKKyAgICAgICAgcGlwZVRvUHJvbWlzZSA9IHJzLnBpcGVUbyh3cyk7CisgICAgICB9Cisg
ICAgICByZXR1cm4gMTsKKyAgICB9LAorICAgIGhpZ2hXYXRlck1hcms6IDEKKyAgfSk7CisgIGNv
bnRyb2xsZXIuZW5xdWV1ZSgnYScpOworICBhc3NlcnRfbm90X2VxdWFscyhwaXBlVG9Qcm9taXNl
LCB1bmRlZmluZWQpOworCisgIC8vIFNvbWUgcGlwZVRvKCkgaW1wbGVtZW50YXRpb25zIG5lZWQg
YW4gYWRkaXRpb25hbCBjaHVuayBlbnF1ZXVlZCBpbiBvcmRlciBmb3IgdGhlIGZpcnN0IG9uZSB0
byBiZSBwcm9jZXNzZWQuIFNlZQorICAvLyBodHRwczovL2dpdGh1Yi5jb20vd2hhdHdnL3N0cmVh
bXMvaXNzdWVzLzc5NCBmb3IgYmFja2dyb3VuZC4KKyAgY29udHJvbGxlci5lbnF1ZXVlKCdhJyk7
CisKKyAgLy8gR2l2ZSBwaXBlVG8oKSBhIGNoYW5jZSB0byBwcm9jZXNzIHRoZSBxdWV1ZWQgY2h1
bmtzLgorICByZXR1cm4gZGVsYXkoMCkudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X2FycmF5X2Vx
dWFscyh3cy5ldmVudHMsIFsnd3JpdGUnLCAnYScsICd3cml0ZScsICdhJ10sICd3cyBzaG91bGQg
Y29udGFpbiB0d28gY2h1bmtzJyk7CisgICAgY29udHJvbGxlci5jbG9zZSgpOworICAgIHJldHVy
biBwaXBlVG9Qcm9taXNlOworICB9KS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfYXJyYXlfZXF1
YWxzKHdzLmV2ZW50cywgWyd3cml0ZScsICdhJywgJ3dyaXRlJywgJ2EnLCAnY2xvc2UnXSwgJ3Rh
cmdldCBzaG91bGQgaGF2ZSBiZWVuIGNsb3NlZCcpOworICB9KTsKK30sICdwaXBlVG8oKSBpbnNp
ZGUgc2l6ZSgpIHNob3VsZCBiZWhhdmUgYXMgZXhwZWN0ZWQnKTsKKworcHJvbWlzZV90ZXN0KCgp
ID0+IHsKKyAgbGV0IGNvbnRyb2xsZXI7CisgIGxldCByZWFkUHJvbWlzZTsKKyAgbGV0IGNhbGxz
ID0gMDsKKyAgbGV0IHJlYWRSZXNvbHZlZCA9IGZhbHNlOworICBsZXQgcmVhZGVyOworICBjb25z
dCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgY29udHJv
bGxlciA9IGM7CisgICAgfQorICB9LCB7CisgICAgc2l6ZSgpIHsKKyAgICAgIC8vIFRoaXMgaXMg
dHJpZ2dlcmVkIGJ5IGNvbnRyb2xsZXIuZW5xdWV1ZSgpLiBUaGUgcXVldWUgaXMgZW1wdHkgYW5k
IHRoZXJlIGFyZSBubyBwZW5kaW5nIHJlYWRzLiBUaGlzIHJlYWQgaXMKKyAgICAgIC8vIGFkZGVk
IHRvIHRoZSBsaXN0IG9mIHBlbmRpbmcgcmVhZHMuCisgICAgICByZWFkUHJvbWlzZSA9IHJlYWRl
ci5yZWFkKCk7CisgICAgICArK2NhbGxzOworICAgICAgcmV0dXJuIDE7CisgICAgfSwKKyAgICBo
aWdoV2F0ZXJNYXJrOiAwCisgIH0pOworICByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKKyAgY29u
dHJvbGxlci5lbnF1ZXVlKCdhJyk7CisgIHJlYWRQcm9taXNlLnRoZW4oKCkgPT4geworICAgIHJl
YWRSZXNvbHZlZCA9IHRydWU7CisgIH0pOworICByZXR1cm4gZmx1c2hBc3luY0V2ZW50cygpLnRo
ZW4oKCkgPT4geworICAgIGFzc2VydF9mYWxzZShyZWFkUmVzb2x2ZWQpOworICAgIGNvbnRyb2xs
ZXIuZW5xdWV1ZSgnYicpOworICAgIGFzc2VydF9lcXVhbHMoY2FsbHMsIDEsICdzaXplKCkgc2hv
dWxkIGhhdmUgYmVlbiBjYWxsZWQgb25jZScpOworICAgIHJldHVybiBkZWxheSgwKTsKKyAgfSku
dGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X3RydWUocmVhZFJlc29sdmVkKTsKKyAgICBhc3NlcnRf
ZXF1YWxzKGNhbGxzLCAxLCAnc2l6ZSgpIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBvbmNlJyk7Cisg
ICAgcmV0dXJuIHJlYWRQcm9taXNlOworICB9KS50aGVuKCh7IHZhbHVlLCBkb25lIH0pID0+IHsK
KyAgICBhc3NlcnRfZmFsc2UoZG9uZSwgJ2RvbmUgc2hvdWxkIGJlIGZhbHNlJyk7CisgICAgLy8g
U2VlIGh0dHBzOi8vZ2l0aHViLmNvbS93aGF0d2cvc3RyZWFtcy9pc3N1ZXMvNzk0IGZvciB3aHkg
dGhpcyBjaHVuayBpcyBub3QgJ2EnLgorICAgIGFzc2VydF9lcXVhbHModmFsdWUsICdiJywgJ2No
dW5rIHNob3VsZCBoYXZlIGJlZW4gcmVhZCcpOworICAgIGFzc2VydF9lcXVhbHMoY2FsbHMsIDEs
ICdjYWxscyBzaG91bGQgc3RpbGwgYmUgMScpOworICAgIHJldHVybiByZWFkZXIucmVhZCgpOwor
ICB9KS50aGVuKCh7IHZhbHVlLCBkb25lIH0pID0+IHsKKyAgICBhc3NlcnRfZmFsc2UoZG9uZSwg
J2RvbmUgc2hvdWxkIGJlIGZhbHNlIGFnYWluJyk7CisgICAgYXNzZXJ0X2VxdWFscyh2YWx1ZSwg
J2EnLCAnY2h1bmsgYSBzaG91bGQgY29tZSBhZnRlciBiJyk7CisgIH0pOworfSwgJ3JlYWQoKSBp
bnNpZGUgb2Ygc2l6ZSgpIHNob3VsZCBiZWhhdmUgYXMgZXhwZWN0ZWQnKTsKKworcHJvbWlzZV90
ZXN0KCgpID0+IHsKKyAgbGV0IGNvbnRyb2xsZXI7CisgIGxldCByZWFkZXI7CisgIGNvbnN0IHJz
ID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjb250cm9sbGVy
ID0gYzsKKyAgICB9CisgIH0sIHsKKyAgICBzaXplKCkgeworICAgICAgcmVhZGVyID0gcnMuZ2V0
UmVhZGVyKCk7CisgICAgICByZXR1cm4gMTsKKyAgICB9CisgIH0pOworICBjb250cm9sbGVyLmVu
cXVldWUoJ2EnKTsKKyAgcmV0dXJuIHJlYWRlci5yZWFkKCkudGhlbigoeyB2YWx1ZSwgZG9uZSB9
KSA9PiB7CisgICAgYXNzZXJ0X2ZhbHNlKGRvbmUsICdkb25lIHNob3VsZCBiZSBmYWxzZScpOwor
ICAgIGFzc2VydF9lcXVhbHModmFsdWUsICdhJywgJ3ZhbHVlIHNob3VsZCBiZSBhJyk7CisgIH0p
OworfSwgJ2dldFJlYWRlcigpIGluc2lkZSBzaXplKCkgc2hvdWxkIHdvcmsnKTsKKworcHJvbWlz
ZV90ZXN0KCgpID0+IHsKKyAgbGV0IGNvbnRyb2xsZXI7CisgIGxldCBicmFuY2gxOworICBsZXQg
YnJhbmNoMjsKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMp
IHsKKyAgICAgIGNvbnRyb2xsZXIgPSBjOworICAgIH0KKyAgfSwgeworICAgIHNpemUoKSB7Cisg
ICAgICBbYnJhbmNoMSwgYnJhbmNoMl0gPSBycy50ZWUoKTsKKyAgICAgIHJldHVybiAxOworICAg
IH0KKyAgfSk7CisgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYScpOworICBhc3NlcnRfdHJ1ZShycy5s
b2NrZWQsICdycyBzaG91bGQgYmUgbG9ja2VkJyk7CisgIGNvbnRyb2xsZXIuY2xvc2UoKTsKKyAg
cmV0dXJuIFByb21pc2UuYWxsKFsKKyAgICByZWFkYWJsZVN0cmVhbVRvQXJyYXkoYnJhbmNoMSku
dGhlbihhcnJheSA9PiBhc3NlcnRfYXJyYXlfZXF1YWxzKGFycmF5LCBbJ2EnXSwgJ2JyYW5jaDEg
c2hvdWxkIGhhdmUgb25lIGNodW5rJykpLAorICAgIHJlYWRhYmxlU3RyZWFtVG9BcnJheShicmFu
Y2gyKS50aGVuKGFycmF5ID0+IGFzc2VydF9hcnJheV9lcXVhbHMoYXJyYXksIFsnYSddLCAnYnJh
bmNoMiBzaG91bGQgaGF2ZSBvbmUgY2h1bmsnKSkKKyAgXSk7Cit9LCAndGVlKCkgaW5zaWRlIHNp
emUoKSBzaG91bGQgd29yaycpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvcmVlbnRyYW50LXN0
cmF0ZWdpZXMuYW55Lndvcmtlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9yZWVudHJhbnQt
c3RyYXRlZ2llcy5hbnkud29ya2VyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NjRlODFhNzg2
ZDBkOTc2ZGRkOTY5ZDc4ZGYyMzJjNDUwODk3NTdmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0
cmVhbXMvcmVlbnRyYW50LXN0cmF0ZWdpZXMuYW55Lndvcmtlci1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSwxMiBAQAorCitQQVNTIGVucXVldWUoKSBpbnNpZGUgc2l6ZSgpIHNob3VsZCB3b3JrIAor
UEFTUyBjbG9zZSgpIGluc2lkZSBzaXplKCkgc2hvdWxkIG5vdCBjcmFzaCAKK1BBU1MgY2xvc2Ug
cmVxdWVzdCBpbnNpZGUgc2l6ZSgpIHNob3VsZCB3b3JrIAorUEFTUyBlcnJvcigpIGluc2lkZSBz
aXplKCkgc2hvdWxkIHdvcmsgCitQQVNTIGRlc2lyZWRTaXplIGluc2lkZSBzaXplKCkgc2hvdWxk
IHdvcmsgCitQQVNTIGNhbmNlbCgpIGluc2lkZSBzaXplKCkgc2hvdWxkIHdvcmsgCitGQUlMIHBp
cGVUbygpIGluc2lkZSBzaXplKCkgc2hvdWxkIGJlaGF2ZSBhcyBleHBlY3RlZCBDYW4ndCBmaW5k
IHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorUEFTUyByZWFkKCkgaW5zaWRlIG9mIHNpemUoKSBz
aG91bGQgYmVoYXZlIGFzIGV4cGVjdGVkIAorUEFTUyBnZXRSZWFkZXIoKSBpbnNpZGUgc2l6ZSgp
IHNob3VsZCB3b3JrIAorUEFTUyB0ZWUoKSBpbnNpZGUgc2l6ZSgpIHNob3VsZCB3b3JrIAorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9yZWVudHJhbnQtc3RyYXRlZ2llcy5hbnkud29ya2VyLmh0
bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
cmVhZGFibGUtc3RyZWFtcy9yZWVudHJhbnQtc3RyYXRlZ2llcy5hbnkud29ya2VyLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMjM4MjkxMzUyOGU2OTNiM2E1ZDU2YzY2MGE0NTA2MDk4MGI1NDhjMwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3JlZW50cmFudC1zdHJhdGVnaWVzLmFueS53b3JrZXIu
aHRtbApAQCAtMCwwICsxIEBACis8IS0tIFRoaXMgZmlsZSBpcyByZXF1aXJlZCBmb3IgV2ViS2l0
IHRlc3QgaW5mcmFzdHJ1Y3R1cmUgdG8gcnVuIHRoZSB0ZW1wbGF0ZWQgdGVzdCAtLT4KXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy90ZWUuYW55LWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3RlZS5hbnktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjgzM2JlMzEwMzc4OTM5YTE4M2YzNGEyNmY3ZDhjNjYzYTNmOTY2OGUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
cmVhZGFibGUtc3RyZWFtcy90ZWUuYW55LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMwIEBACitD
T05TT0xFIE1FU1NBR0U6IFVuaGFuZGxlZCBQcm9taXNlIFJlamVjdGlvbjogW29iamVjdCBPYmpl
Y3RdCitDT05TT0xFIE1FU1NBR0U6IFVuaGFuZGxlZCBQcm9taXNlIFJlamVjdGlvbjogW29iamVj
dCBPYmplY3RdCitDT05TT0xFIE1FU1NBR0U6IFVuaGFuZGxlZCBQcm9taXNlIFJlamVjdGlvbjog
W29iamVjdCBPYmplY3RdCitDT05TT0xFIE1FU1NBR0U6IFVuaGFuZGxlZCBQcm9taXNlIFJlamVj
dGlvbjogW29iamVjdCBPYmplY3RdCitDT05TT0xFIE1FU1NBR0U6IFVuaGFuZGxlZCBQcm9taXNl
IFJlamVjdGlvbjogW29iamVjdCBPYmplY3RdCitDT05TT0xFIE1FU1NBR0U6IFVuaGFuZGxlZCBQ
cm9taXNlIFJlamVjdGlvbjogW29iamVjdCBPYmplY3RdCisKK0hhcm5lc3MgRXJyb3IgKEZBSUwp
LCBtZXNzYWdlID0gVW5oYW5kbGVkIHJlamVjdGlvbgorCitQQVNTIFJlYWRhYmxlU3RyZWFtIHRl
ZWluZzogcnMudGVlKCkgcmV0dXJucyBhbiBhcnJheSBvZiB0d28gUmVhZGFibGVTdHJlYW1zIAor
UEFTUyBSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IHNob3VsZCBiZSBhYmxlIHRvIHJlYWQgb25lIGJy
YW5jaCB0byB0aGUgZW5kIHdpdGhvdXQgYWZmZWN0aW5nIHRoZSBvdGhlciAKK1BBU1MgUmVhZGFi
bGVTdHJlYW0gdGVlaW5nOiB2YWx1ZXMgc2hvdWxkIGJlIGVxdWFsIGFjcm9zcyBlYWNoIGJyYW5j
aCAKK1BBU1MgUmVhZGFibGVTdHJlYW0gdGVlaW5nOiBlcnJvcnMgaW4gdGhlIHNvdXJjZSBzaG91
bGQgcHJvcGFnYXRlIHRvIGJvdGggYnJhbmNoZXMgCitQQVNTIFJlYWRhYmxlU3RyZWFtIHRlZWlu
ZzogY2FuY2VsaW5nIGJyYW5jaDEgc2hvdWxkIG5vdCBpbXBhY3QgYnJhbmNoMiAKK1BBU1MgUmVh
ZGFibGVTdHJlYW0gdGVlaW5nOiBjYW5jZWxpbmcgYnJhbmNoMiBzaG91bGQgbm90IGltcGFjdCBi
cmFuY2gxIAorUEFTUyBSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IGNhbmNlbGluZyBib3RoIGJyYW5j
aGVzIHNob3VsZCBhZ2dyZWdhdGUgdGhlIGNhbmNlbCByZWFzb25zIGludG8gYW4gYXJyYXkgCitQ
QVNTIFJlYWRhYmxlU3RyZWFtIHRlZWluZzogY2FuY2VsaW5nIGJvdGggYnJhbmNoZXMgaW4gcmV2
ZXJzZSBvcmRlciBzaG91bGQgYWdncmVnYXRlIHRoZSBjYW5jZWwgcmVhc29ucyBpbnRvIGFuIGFy
cmF5IAorUEFTUyBSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IGZhaWxpbmcgdG8gY2FuY2VsIHRoZSBv
cmlnaW5hbCBzdHJlYW0gc2hvdWxkIGNhdXNlIGNhbmNlbCgpIHRvIHJlamVjdCBvbiBicmFuY2hl
cyAKK1BBU1MgUmVhZGFibGVTdHJlYW0gdGVlaW5nOiBlcnJvcmluZyBhIHRlZWQgc3RyZWFtIHNo
b3VsZCBwcm9wZXJseSBoYW5kbGUgY2FuY2VsZWQgYnJhbmNoZXMgCitQQVNTIFJlYWRhYmxlU3Ry
ZWFtIHRlZWluZzogZXJyb3JpbmcgYSB0ZWVkIHN0cmVhbSBzaG91bGQgZXJyb3IgYm90aCBicmFu
Y2hlcyAKK1BBU1MgUmVhZGFibGVTdHJlYW0gdGVlaW5nOiBjbG9zaW5nIHRoZSBvcmlnaW5hbCBz
aG91bGQgaW1tZWRpYXRlbHkgY2xvc2UgdGhlIGJyYW5jaGVzIAorUEFTUyBSZWFkYWJsZVN0cmVh
bSB0ZWVpbmc6IGVycm9yaW5nIHRoZSBvcmlnaW5hbCBzaG91bGQgaW1tZWRpYXRlbHkgZXJyb3Ig
dGhlIGJyYW5jaGVzIAorUEFTUyBSZWFkYWJsZVN0cmVhbVRlZSBzaG91bGQgbm90IHVzZSBhIG1v
ZGlmaWVkIFJlYWRhYmxlU3RyZWFtIGNvbnN0cnVjdG9yIGZyb20gdGhlIGdsb2JhbCBvYmplY3Qg
CitGQUlMIFJlYWRhYmxlU3RyZWFtVGVlIHNob3VsZCBub3QgcHVsbCBtb3JlIGNodW5rcyB0aGFu
IGNhbiBmaXQgaW4gdGhlIGJyYW5jaCBxdWV1ZSBhc3NlcnRfYXJyYXlfZXF1YWxzOiBwdWxsIHNo
b3VsZCBvbmx5IGJlIGNhbGxlZCBvbmNlIGxlbmd0aHMgZGlmZmVyLCBleHBlY3RlZCBhcnJheSBb
InB1bGwiXSBsZW5ndGggMSwgZ290IFsicHVsbCIsICJwdWxsIl0gbGVuZ3RoIDIKK0ZBSUwgUmVh
ZGFibGVTdHJlYW1UZWUgc2hvdWxkIG9ubHkgcHVsbCBlbm91Z2ggdG8gZmlsbCB0aGUgZW1wdGll
c3QgcXVldWUgYXNzZXJ0X2FycmF5X2VxdWFsczogcHVsbCBzaG91bGQgYmUgY2FsbGVkIHR3aWNl
IGxlbmd0aHMgZGlmZmVyLCBleHBlY3RlZCBhcnJheSBbInB1bGwiLCAicHVsbCJdIGxlbmd0aCAy
LCBnb3QgWyJwdWxsIiwgInB1bGwiLCAicHVsbCIsICJwdWxsIl0gbGVuZ3RoIDQKK1BBU1MgUmVh
ZGFibGVTdHJlYW1UZWUgc2hvdWxkIG5vdCBwdWxsIHdoZW4gb3JpZ2luYWwgaXMgYWxyZWFkeSBl
cnJvcmVkIAorRkFJTCBSZWFkYWJsZVN0cmVhbVRlZSBzdG9wcyBwdWxsaW5nIHdoZW4gb3JpZ2lu
YWwgc3RyZWFtIGVycm9ycyB3aGlsZSBicmFuY2ggMSBpcyByZWFkaW5nIGFzc2VydF9hcnJheV9l
cXVhbHM6IHB1bGwgc2hvdWxkIGJlIGNhbGxlZCBvbmNlIGxlbmd0aHMgZGlmZmVyLCBleHBlY3Rl
ZCBhcnJheSBbInB1bGwiXSBsZW5ndGggMSwgZ290IFsicHVsbCIsICJwdWxsIl0gbGVuZ3RoIDIK
K0ZBSUwgUmVhZGFibGVTdHJlYW1UZWUgc3RvcHMgcHVsbGluZyB3aGVuIG9yaWdpbmFsIHN0cmVh
bSBlcnJvcnMgd2hpbGUgYnJhbmNoIDIgaXMgcmVhZGluZyBhc3NlcnRfYXJyYXlfZXF1YWxzOiBw
dWxsIHNob3VsZCBiZSBjYWxsZWQgb25jZSBsZW5ndGhzIGRpZmZlciwgZXhwZWN0ZWQgYXJyYXkg
WyJwdWxsIl0gbGVuZ3RoIDEsIGdvdCBbInB1bGwiLCAicHVsbCJdIGxlbmd0aCAyCitGQUlMIFJl
YWRhYmxlU3RyZWFtVGVlIHN0b3BzIHB1bGxpbmcgd2hlbiBvcmlnaW5hbCBzdHJlYW0gZXJyb3Jz
IHdoaWxlIGJvdGggYnJhbmNoZXMgYXJlIHJlYWRpbmcgYXNzZXJ0X2FycmF5X2VxdWFsczogcHVs
bCBzaG91bGQgYmUgY2FsbGVkIG9uY2UgbGVuZ3RocyBkaWZmZXIsIGV4cGVjdGVkIGFycmF5IFsi
cHVsbCJdIGxlbmd0aCAxLCBnb3QgWyJwdWxsIiwgInB1bGwiXSBsZW5ndGggMgorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
cmVhZGFibGUtc3RyZWFtcy90ZWUuYW55Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy90ZWUuYW55Lmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMjM4MjkxMzUyOGU2OTNiM2E1ZDU2YzY2MGE0NTA2MDk4MGI1NDhjMwotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3RlZS5hbnkuaHRtbApAQCAtMCwwICsxIEBACis8
IS0tIFRoaXMgZmlsZSBpcyByZXF1aXJlZCBmb3IgV2ViS2l0IHRlc3QgaW5mcmFzdHJ1Y3R1cmUg
dG8gcnVuIHRoZSB0ZW1wbGF0ZWQgdGVzdCAtLT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy90ZWUuYW55LmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvdGVlLmFu
eS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5iNmE5NTM2OGFhNWU2NGRmNmNhOWUxNWMwMzRhMWI0Mjg4ODgzNjIy
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvdGVlLmFueS5qcwpAQCAtMCwwICsxLDQ1
MSBAQAorLy8gTUVUQTogZ2xvYmFsPXdpbmRvdyx3b3JrZXIsanNzaGVsbAorLy8gTUVUQTogc2Ny
aXB0PS4uL3Jlc291cmNlcy9ycy11dGlscy5qcworLy8gTUVUQTogc2NyaXB0PS4uL3Jlc291cmNl
cy90ZXN0LXV0aWxzLmpzCisvLyBNRVRBOiBzY3JpcHQ9Li4vcmVzb3VyY2VzL3JlY29yZGluZy1z
dHJlYW1zLmpzCisndXNlIHN0cmljdCc7CisKK3Rlc3QoKCkgPT4geworCisgIGNvbnN0IHJzID0g
bmV3IFJlYWRhYmxlU3RyZWFtKCk7CisgIGNvbnN0IHJlc3VsdCA9IHJzLnRlZSgpOworCisgIGFz
c2VydF90cnVlKEFycmF5LmlzQXJyYXkocmVzdWx0KSwgJ3JldHVybiB2YWx1ZSBzaG91bGQgYmUg
YW4gYXJyYXknKTsKKyAgYXNzZXJ0X2VxdWFscyhyZXN1bHQubGVuZ3RoLCAyLCAnYXJyYXkgc2hv
dWxkIGhhdmUgbGVuZ3RoIDInKTsKKyAgYXNzZXJ0X2VxdWFscyhyZXN1bHRbMF0uY29uc3RydWN0
b3IsIFJlYWRhYmxlU3RyZWFtLCAnMHRoIGVsZW1lbnQgc2hvdWxkIGJlIGEgUmVhZGFibGVTdHJl
YW0nKTsKKyAgYXNzZXJ0X2VxdWFscyhyZXN1bHRbMV0uY29uc3RydWN0b3IsIFJlYWRhYmxlU3Ry
ZWFtLCAnMXN0IGVsZW1lbnQgc2hvdWxkIGJlIGEgUmVhZGFibGVTdHJlYW0nKTsKKworfSwgJ1Jl
YWRhYmxlU3RyZWFtIHRlZWluZzogcnMudGVlKCkgcmV0dXJucyBhbiBhcnJheSBvZiB0d28gUmVh
ZGFibGVTdHJlYW1zJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKworICBjb25zdCBycyA9IG5l
dyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgYy5lbnF1ZXVlKCdhJyk7
CisgICAgICBjLmVucXVldWUoJ2InKTsKKyAgICAgIGMuY2xvc2UoKTsKKyAgICB9CisgIH0pOwor
CisgIGNvbnN0IGJyYW5jaCA9IHJzLnRlZSgpOworICBjb25zdCBicmFuY2gxID0gYnJhbmNoWzBd
OworICBjb25zdCBicmFuY2gyID0gYnJhbmNoWzFdOworICBjb25zdCByZWFkZXIxID0gYnJhbmNo
MS5nZXRSZWFkZXIoKTsKKyAgY29uc3QgcmVhZGVyMiA9IGJyYW5jaDIuZ2V0UmVhZGVyKCk7CisK
KyAgcmVhZGVyMi5jbG9zZWQudGhlbih0LnVucmVhY2hlZF9mdW5jKCdicmFuY2gyIHNob3VsZCBu
b3QgYmUgY2xvc2VkJykpOworCisgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAgcmVhZGVyMS5j
bG9zZWQsCisgICAgcmVhZGVyMS5yZWFkKCkudGhlbihyID0+IHsKKyAgICAgIGFzc2VydF9vYmpl
Y3RfZXF1YWxzKHIsIHsgdmFsdWU6ICdhJywgZG9uZTogZmFsc2UgfSwgJ2ZpcnN0IGNodW5rIGZy
b20gYnJhbmNoMSBzaG91bGQgYmUgY29ycmVjdCcpOworICAgIH0pLAorICAgIHJlYWRlcjEucmVh
ZCgpLnRoZW4ociA9PiB7CisgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyLCB7IHZhbHVlOiAn
YicsIGRvbmU6IGZhbHNlIH0sICdzZWNvbmQgY2h1bmsgZnJvbSBicmFuY2gxIHNob3VsZCBiZSBj
b3JyZWN0Jyk7CisgICAgfSksCisgICAgcmVhZGVyMS5yZWFkKCkudGhlbihyID0+IHsKKyAgICAg
IGFzc2VydF9vYmplY3RfZXF1YWxzKHIsIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9
LCAndGhpcmQgcmVhZCgpIGZyb20gYnJhbmNoMSBzaG91bGQgYmUgZG9uZScpOworICAgIH0pLAor
ICAgIHJlYWRlcjIucmVhZCgpLnRoZW4ociA9PiB7CisgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFs
cyhyLCB7IHZhbHVlOiAnYScsIGRvbmU6IGZhbHNlIH0sICdmaXJzdCBjaHVuayBmcm9tIGJyYW5j
aDIgc2hvdWxkIGJlIGNvcnJlY3QnKTsKKyAgICB9KQorICBdKTsKKworfSwgJ1JlYWRhYmxlU3Ry
ZWFtIHRlZWluZzogc2hvdWxkIGJlIGFibGUgdG8gcmVhZCBvbmUgYnJhbmNoIHRvIHRoZSBlbmQg
d2l0aG91dCBhZmZlY3RpbmcgdGhlIG90aGVyJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisK
KyAgY29uc3QgdGhlT2JqZWN0ID0geyB0aGU6ICd0ZXN0IG9iamVjdCcgfTsKKyAgY29uc3QgcnMg
PSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGMuZW5xdWV1ZSh0
aGVPYmplY3QpOworICAgIH0KKyAgfSk7CisKKyAgY29uc3QgYnJhbmNoID0gcnMudGVlKCk7Cisg
IGNvbnN0IGJyYW5jaDEgPSBicmFuY2hbMF07CisgIGNvbnN0IGJyYW5jaDIgPSBicmFuY2hbMV07
CisgIGNvbnN0IHJlYWRlcjEgPSBicmFuY2gxLmdldFJlYWRlcigpOworICBjb25zdCByZWFkZXIy
ID0gYnJhbmNoMi5nZXRSZWFkZXIoKTsKKworICByZXR1cm4gUHJvbWlzZS5hbGwoW3JlYWRlcjEu
cmVhZCgpLCByZWFkZXIyLnJlYWQoKV0pLnRoZW4odmFsdWVzID0+IHsKKyAgICBhc3NlcnRfb2Jq
ZWN0X2VxdWFscyh2YWx1ZXNbMF0sIHZhbHVlc1sxXSwgJ3RoZSB2YWx1ZXMgc2hvdWxkIGJlIGVx
dWFsJyk7CisgIH0pOworCit9LCAnUmVhZGFibGVTdHJlYW0gdGVlaW5nOiB2YWx1ZXMgc2hvdWxk
IGJlIGVxdWFsIGFjcm9zcyBlYWNoIGJyYW5jaCcpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisK
KyAgY29uc3QgdGhlRXJyb3IgPSB7IG5hbWU6ICdib28hJyB9OworICBjb25zdCBycyA9IG5ldyBS
ZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgYy5lbnF1ZXVlKCdhJyk7Cisg
ICAgICBjLmVucXVldWUoJ2InKTsKKyAgICB9LAorICAgIHB1bGwoKSB7CisgICAgICB0aHJvdyB0
aGVFcnJvcjsKKyAgICB9CisgIH0pOworCisgIGNvbnN0IGJyYW5jaGVzID0gcnMudGVlKCk7Cisg
IGNvbnN0IHJlYWRlcjEgPSBicmFuY2hlc1swXS5nZXRSZWFkZXIoKTsKKyAgY29uc3QgcmVhZGVy
MiA9IGJyYW5jaGVzWzFdLmdldFJlYWRlcigpOworCisgIHJlYWRlcjEubGFiZWwgPSAncmVhZGVy
MSc7CisgIHJlYWRlcjIubGFiZWwgPSAncmVhZGVyMic7CisKKyAgcmV0dXJuIFByb21pc2UuYWxs
KFsKKyAgICBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCB0aGVFcnJvciwgcmVhZGVyMS5jbG9z
ZWQpLAorICAgIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIHRoZUVycm9yLCByZWFkZXIyLmNs
b3NlZCksCisgICAgcmVhZGVyMS5yZWFkKCkudGhlbihyID0+IHsKKyAgICAgIGFzc2VydF9vYmpl
Y3RfZXF1YWxzKHIsIHsgdmFsdWU6ICdhJywgZG9uZTogZmFsc2UgfSwgJ3Nob3VsZCBiZSBhYmxl
IHRvIHJlYWQgdGhlIGZpcnN0IGNodW5rIGluIGJyYW5jaDEnKTsKKyAgICB9KSwKKyAgICByZWFk
ZXIxLnJlYWQoKS50aGVuKHIgPT4geworICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMociwgeyB2
YWx1ZTogJ2InLCBkb25lOiBmYWxzZSB9LCAnc2hvdWxkIGJlIGFibGUgdG8gcmVhZCB0aGUgc2Vj
b25kIGNodW5rIGluIGJyYW5jaDEnKTsKKworICAgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19l
eGFjdGx5KHQsIHRoZUVycm9yLCByZWFkZXIyLnJlYWQoKSk7CisgICAgfSkKKyAgICAudGhlbigo
KSA9PiBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCB0aGVFcnJvciwgcmVhZGVyMS5yZWFkKCkp
KQorICBdKTsKKworfSwgJ1JlYWRhYmxlU3RyZWFtIHRlZWluZzogZXJyb3JzIGluIHRoZSBzb3Vy
Y2Ugc2hvdWxkIHByb3BhZ2F0ZSB0byBib3RoIGJyYW5jaGVzJyk7CisKK3Byb21pc2VfdGVzdCgo
KSA9PiB7CisKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMp
IHsKKyAgICAgIGMuZW5xdWV1ZSgnYScpOworICAgICAgYy5lbnF1ZXVlKCdiJyk7CisgICAgICBj
LmNsb3NlKCk7CisgICAgfQorICB9KTsKKworICBjb25zdCBicmFuY2hlcyA9IHJzLnRlZSgpOwor
ICBjb25zdCBicmFuY2gxID0gYnJhbmNoZXNbMF07CisgIGNvbnN0IGJyYW5jaDIgPSBicmFuY2hl
c1sxXTsKKyAgYnJhbmNoMS5jYW5jZWwoKTsKKworICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAg
IHJlYWRhYmxlU3RyZWFtVG9BcnJheShicmFuY2gxKS50aGVuKGNodW5rcyA9PiB7CisgICAgICBh
c3NlcnRfYXJyYXlfZXF1YWxzKGNodW5rcywgW10sICdicmFuY2gxIHNob3VsZCBoYXZlIG5vIGNo
dW5rcycpOworICAgIH0pLAorICAgIHJlYWRhYmxlU3RyZWFtVG9BcnJheShicmFuY2gyKS50aGVu
KGNodW5rcyA9PiB7CisgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGNodW5rcywgWydhJywgJ2In
XSwgJ2JyYW5jaDIgc2hvdWxkIGhhdmUgdHdvIGNodW5rcycpOworICAgIH0pCisgIF0pOworCit9
LCAnUmVhZGFibGVTdHJlYW0gdGVlaW5nOiBjYW5jZWxpbmcgYnJhbmNoMSBzaG91bGQgbm90IGlt
cGFjdCBicmFuY2gyJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisKKyAgY29uc3QgcnMgPSBu
ZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGMuZW5xdWV1ZSgnYScp
OworICAgICAgYy5lbnF1ZXVlKCdiJyk7CisgICAgICBjLmNsb3NlKCk7CisgICAgfQorICB9KTsK
KworICBjb25zdCBicmFuY2hlcyA9IHJzLnRlZSgpOworICBjb25zdCBicmFuY2gxID0gYnJhbmNo
ZXNbMF07CisgIGNvbnN0IGJyYW5jaDIgPSBicmFuY2hlc1sxXTsKKyAgYnJhbmNoMi5jYW5jZWwo
KTsKKworICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAgIHJlYWRhYmxlU3RyZWFtVG9BcnJheShi
cmFuY2gxKS50aGVuKGNodW5rcyA9PiB7CisgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGNodW5r
cywgWydhJywgJ2InXSwgJ2JyYW5jaDEgc2hvdWxkIGhhdmUgdHdvIGNodW5rcycpOworICAgIH0p
LAorICAgIHJlYWRhYmxlU3RyZWFtVG9BcnJheShicmFuY2gyKS50aGVuKGNodW5rcyA9PiB7Cisg
ICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGNodW5rcywgW10sICdicmFuY2gyIHNob3VsZCBoYXZl
IG5vIGNodW5rcycpOworICAgIH0pCisgIF0pOworCit9LCAnUmVhZGFibGVTdHJlYW0gdGVlaW5n
OiBjYW5jZWxpbmcgYnJhbmNoMiBzaG91bGQgbm90IGltcGFjdCBicmFuY2gxJyk7CisKK3Byb21p
c2VfdGVzdCgoKSA9PiB7CisKKyAgY29uc3QgcmVhc29uMSA9IG5ldyBFcnJvcignV2VcJ3JlIHdh
bnRlZCBtZW4uJyk7CisgIGNvbnN0IHJlYXNvbjIgPSBuZXcgRXJyb3IoJ0kgaGF2ZSB0aGUgZGVh
dGggc2VudGVuY2Ugb24gdHdlbHZlIHN5c3RlbXMuJyk7CisKKyAgbGV0IHJlc29sdmU7CisgIGNv
bnN0IHByb21pc2UgPSBuZXcgUHJvbWlzZShyID0+IHJlc29sdmUgPSByKTsKKyAgY29uc3QgcnMg
PSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIGNhbmNlbChyZWFzb24pIHsKKyAgICAgIGFzc2Vy
dF9hcnJheV9lcXVhbHMocmVhc29uLCBbcmVhc29uMSwgcmVhc29uMl0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICd0aGUgY2FuY2VsIHJlYXNvbiBzaG91bGQgYmUgYW4gYXJyYXkgY29udGFp
bmluZyB0aG9zZSBmcm9tIHRoZSBicmFuY2hlcycpOworICAgICAgcmVzb2x2ZSgpOworICAgIH0K
KyAgfSk7CisKKyAgY29uc3QgYnJhbmNoID0gcnMudGVlKCk7CisgIGNvbnN0IGJyYW5jaDEgPSBi
cmFuY2hbMF07CisgIGNvbnN0IGJyYW5jaDIgPSBicmFuY2hbMV07CisgIGJyYW5jaDEuY2FuY2Vs
KHJlYXNvbjEpOworICBicmFuY2gyLmNhbmNlbChyZWFzb24yKTsKKworICByZXR1cm4gcHJvbWlz
ZTsKKworfSwgJ1JlYWRhYmxlU3RyZWFtIHRlZWluZzogY2FuY2VsaW5nIGJvdGggYnJhbmNoZXMg
c2hvdWxkIGFnZ3JlZ2F0ZSB0aGUgY2FuY2VsIHJlYXNvbnMgaW50byBhbiBhcnJheScpOworCitw
cm9taXNlX3Rlc3QoKCkgPT4geworCisgIGNvbnN0IHJlYXNvbjEgPSBuZXcgRXJyb3IoJ1RoaXMg
bGl0dGxlIG9uZVwncyBub3Qgd29ydGggdGhlIGVmZm9ydC4nKTsKKyAgY29uc3QgcmVhc29uMiA9
IG5ldyBFcnJvcignQ29tZSwgbGV0IG1lIGdldCB5b3Ugc29tZXRoaW5nLicpOworCisgIGxldCBy
ZXNvbHZlOworICBjb25zdCBwcm9taXNlID0gbmV3IFByb21pc2UociA9PiByZXNvbHZlID0gcik7
CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBjYW5jZWwocmVhc29uKSB7
CisgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJlYXNvbiwgW3JlYXNvbjEsIHJlYXNvbjJdLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAndGhlIGNhbmNlbCByZWFzb24gc2hvdWxkIGJlIGFu
IGFycmF5IGNvbnRhaW5pbmcgdGhvc2UgZnJvbSB0aGUgYnJhbmNoZXMnKTsKKyAgICAgIHJlc29s
dmUoKTsKKyAgICB9CisgIH0pOworCisgIGNvbnN0IGJyYW5jaCA9IHJzLnRlZSgpOworICBjb25z
dCBicmFuY2gxID0gYnJhbmNoWzBdOworICBjb25zdCBicmFuY2gyID0gYnJhbmNoWzFdOworICBy
ZXR1cm4gUHJvbWlzZS5hbGwoWworICAgIGJyYW5jaDIuY2FuY2VsKHJlYXNvbjIpLAorICAgIGJy
YW5jaDEuY2FuY2VsKHJlYXNvbjEpLAorICAgIHByb21pc2UKKyAgXSk7CisKK30sICdSZWFkYWJs
ZVN0cmVhbSB0ZWVpbmc6IGNhbmNlbGluZyBib3RoIGJyYW5jaGVzIGluIHJldmVyc2Ugb3JkZXIg
c2hvdWxkIGFnZ3JlZ2F0ZSB0aGUgY2FuY2VsIHJlYXNvbnMgaW50byBhbiBhcnJheScpOworCitw
cm9taXNlX3Rlc3QodCA9PiB7CisKKyAgY29uc3QgdGhlRXJyb3IgPSB7IG5hbWU6ICdJXCdsbCBi
ZSBjYXJlZnVsLicgfTsKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIGNh
bmNlbCgpIHsKKyAgICAgIHRocm93IHRoZUVycm9yOworICAgIH0KKyAgfSk7CisKKyAgY29uc3Qg
YnJhbmNoID0gcnMudGVlKCk7CisgIGNvbnN0IGJyYW5jaDEgPSBicmFuY2hbMF07CisgIGNvbnN0
IGJyYW5jaDIgPSBicmFuY2hbMV07CisKKyAgcmV0dXJuIFByb21pc2UuYWxsKFsKKyAgICBwcm9t
aXNlX3JlamVjdHNfZXhhY3RseSh0LCB0aGVFcnJvciwgYnJhbmNoMS5jYW5jZWwoKSksCisgICAg
cHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgdGhlRXJyb3IsIGJyYW5jaDIuY2FuY2VsKCkpCisg
IF0pOworCit9LCAnUmVhZGFibGVTdHJlYW0gdGVlaW5nOiBmYWlsaW5nIHRvIGNhbmNlbCB0aGUg
b3JpZ2luYWwgc3RyZWFtIHNob3VsZCBjYXVzZSBjYW5jZWwoKSB0byByZWplY3Qgb24gYnJhbmNo
ZXMnKTsKKwordGVzdCgoKSA9PiB7CisKKyAgbGV0IGNvbnRyb2xsZXI7CisgIGNvbnN0IHN0cmVh
bSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7IHN0YXJ0KGMpIHsgY29udHJvbGxlciA9IGM7IH0gfSk7
CisgIGNvbnN0IFticmFuY2gxLCBicmFuY2gyXSA9IHN0cmVhbS50ZWUoKTsKKworICBjb250cm9s
bGVyLmVycm9yKCJlcnJvciIpOworCisgIGJyYW5jaDEuY2FuY2VsKCkuY2F0Y2goXz0+Xyk7Cisg
IGJyYW5jaDIuY2FuY2VsKCkuY2F0Y2goXz0+Xyk7CisKK30sICdSZWFkYWJsZVN0cmVhbSB0ZWVp
bmc6IGVycm9yaW5nIGEgdGVlZCBzdHJlYW0gc2hvdWxkIHByb3Blcmx5IGhhbmRsZSBjYW5jZWxl
ZCBicmFuY2hlcycpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisKKyAgbGV0IGNvbnRyb2xsZXI7
CisgIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7IHN0YXJ0KGMpIHsgY29udHJv
bGxlciA9IGM7IH0gfSk7CisgIGNvbnN0IFticmFuY2gxLCBicmFuY2gyXSA9IHN0cmVhbS50ZWUo
KTsKKworICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcigpOworICBlcnJvci5uYW1lID0gJ2Rpc3Rp
bmN0aXZlJzsKKworICAvLyBFbnN1cmUgbmVpdGhlciBicmFuY2ggaXMgd2FpdGluZyBpbiBSZWFk
YWJsZVN0cmVhbURlZmF1bHRSZWFkZXJSZWFkKCkuCisgIGNvbnRyb2xsZXIuZW5xdWV1ZSgpOwor
ICBjb250cm9sbGVyLmVucXVldWUoKTsKKworICByZXR1cm4gZGVsYXkoMCkudGhlbigoKSA9PiB7
CisgICAgLy8gVGhpcyBlcnJvciB3aWxsIGhhdmUgdG8gYmUgZGV0ZWN0ZWQgdmlhIFtbY2xvc2Vk
UHJvbWlzZV1dLgorICAgIGNvbnRyb2xsZXIuZXJyb3IoZXJyb3IpOworCisgICAgY29uc3QgcmVh
ZGVyMSA9IGJyYW5jaDEuZ2V0UmVhZGVyKCk7CisgICAgY29uc3QgcmVhZGVyMiA9IGJyYW5jaDIu
Z2V0UmVhZGVyKCk7CisKKyAgICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAgICAgcHJvbWlzZV9y
ZWplY3RzX2V4YWN0bHkodCwgZXJyb3IsIHJlYWRlcjEuY2xvc2VkLCAncmVhZGVyMS5jbG9zZWQg
c2hvdWxkIHJlamVjdCcpLAorICAgICAgcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3Is
IHJlYWRlcjIuY2xvc2VkLCAncmVhZGVyMi5jbG9zZWQgc2hvdWxkIHJlamVjdCcpCisgICAgXSk7
CisgIH0pOworCit9LCAnUmVhZGFibGVTdHJlYW0gdGVlaW5nOiBlcnJvcmluZyBhIHRlZWQgc3Ry
ZWFtIHNob3VsZCBlcnJvciBib3RoIGJyYW5jaGVzJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7
CisKKyAgbGV0IGNvbnRyb2xsZXI7CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsK
KyAgICBzdGFydChjKSB7CisgICAgICBjb250cm9sbGVyID0gYzsKKyAgICB9CisgIH0pOworCisg
IGNvbnN0IGJyYW5jaGVzID0gcnMudGVlKCk7CisgIGNvbnN0IHJlYWRlcjEgPSBicmFuY2hlc1sw
XS5nZXRSZWFkZXIoKTsKKyAgY29uc3QgcmVhZGVyMiA9IGJyYW5jaGVzWzFdLmdldFJlYWRlcigp
OworCisgIGNvbnN0IHByb21pc2UgPSBQcm9taXNlLmFsbChbcmVhZGVyMS5jbG9zZWQsIHJlYWRl
cjIuY2xvc2VkXSk7CisKKyAgY29udHJvbGxlci5jbG9zZSgpOworICByZXR1cm4gcHJvbWlzZTsK
KworfSwgJ1JlYWRhYmxlU3RyZWFtIHRlZWluZzogY2xvc2luZyB0aGUgb3JpZ2luYWwgc2hvdWxk
IGltbWVkaWF0ZWx5IGNsb3NlIHRoZSBicmFuY2hlcycpOworCitwcm9taXNlX3Rlc3QodCA9PiB7
CisKKyAgbGV0IGNvbnRyb2xsZXI7CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsK
KyAgICBzdGFydChjKSB7CisgICAgICBjb250cm9sbGVyID0gYzsKKyAgICB9CisgIH0pOworCisg
IGNvbnN0IGJyYW5jaGVzID0gcnMudGVlKCk7CisgIGNvbnN0IHJlYWRlcjEgPSBicmFuY2hlc1sw
XS5nZXRSZWFkZXIoKTsKKyAgY29uc3QgcmVhZGVyMiA9IGJyYW5jaGVzWzFdLmdldFJlYWRlcigp
OworCisgIGNvbnN0IHRoZUVycm9yID0geyBuYW1lOiAnYm9vIScgfTsKKyAgY29uc3QgcHJvbWlz
ZSA9IFByb21pc2UuYWxsKFsKKyAgICBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCB0aGVFcnJv
ciwgcmVhZGVyMS5jbG9zZWQpLAorICAgIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIHRoZUVy
cm9yLCByZWFkZXIyLmNsb3NlZCkKKyAgXSk7CisKKyAgY29udHJvbGxlci5lcnJvcih0aGVFcnJv
cik7CisgIHJldHVybiBwcm9taXNlOworCit9LCAnUmVhZGFibGVTdHJlYW0gdGVlaW5nOiBlcnJv
cmluZyB0aGUgb3JpZ2luYWwgc2hvdWxkIGltbWVkaWF0ZWx5IGVycm9yIHRoZSBicmFuY2hlcycp
OworCit0ZXN0KHQgPT4geworCisgIC8vIENvcHkgb3JpZ2luYWwgZ2xvYmFsLgorICBjb25zdCBv
bGRSZWFkYWJsZVN0cmVhbSA9IFJlYWRhYmxlU3RyZWFtOworICBjb25zdCBnZXRSZWFkZXIgPSBS
ZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUuZ2V0UmVhZGVyOworCisgIGNvbnN0IG9yaWdSUyA9IG5l
dyBSZWFkYWJsZVN0cmVhbSgpOworCisgIC8vIFJlcGxhY2UgdGhlIGdsb2JhbCBSZWFkYWJsZVN0
cmVhbSBjb25zdHJ1Y3RvciB3aXRoIG9uZSB0aGF0IGRvZXNuJ3Qgd29yay4KKyAgUmVhZGFibGVT
dHJlYW0gPSBmdW5jdGlvbigpIHsKKyAgICB0aHJvdyBuZXcgRXJyb3IoJ2dsb2JhbCBSZWFkYWJs
ZVN0cmVhbSBjb25zdHJ1Y3RvciBjYWxsZWQnKTsKKyAgfTsKKyAgdC5hZGRfY2xlYW51cCgoKSA9
PiB7CisgICAgUmVhZGFibGVTdHJlYW0gPSBvbGRSZWFkYWJsZVN0cmVhbTsKKyAgfSk7CisKKyAg
Ly8gVGhpcyB3aWxsIHByb2JhYmx5IGZhaWwgaWYgdGhlIGdsb2JhbCBSZWFkYWJsZVN0cmVhbSBj
b25zdHJ1Y3RvciB3YXMgdXNlZC4KKyAgY29uc3QgW3JzMSwgcnMyXSA9IG9yaWdSUy50ZWUoKTsK
KworICAvLyBUaGVzZSB3aWxsIGRlZmluaXRlbHkgZmFpbCBpZiB0aGUgZ2xvYmFsIFJlYWRhYmxl
U3RyZWFtIGNvbnN0cnVjdG9yIHdhcyB1c2VkLgorICBhc3NlcnRfbm90X2VxdWFscyhnZXRSZWFk
ZXIuY2FsbChyczEpLCB1bmRlZmluZWQsICdnZXRSZWFkZXIgc2hvdWxkIHdvcmsgb24gcnMxJyk7
CisgIGFzc2VydF9ub3RfZXF1YWxzKGdldFJlYWRlci5jYWxsKHJzMiksIHVuZGVmaW5lZCwgJ2dl
dFJlYWRlciBzaG91bGQgd29yayBvbiByczInKTsKKworfSwgJ1JlYWRhYmxlU3RyZWFtVGVlIHNo
b3VsZCBub3QgdXNlIGEgbW9kaWZpZWQgUmVhZGFibGVTdHJlYW0gY29uc3RydWN0b3IgZnJvbSB0
aGUgZ2xvYmFsIG9iamVjdCcpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisKKyAgY29uc3QgcnMg
PSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSh7fSwgeyBoaWdoV2F0ZXJNYXJrOiAwIH0pOworCisg
IC8vIENyZWF0ZSB0d28gYnJhbmNoZXMsIGVhY2ggd2l0aCBhIEhXTSBvZiAxLiBUaGlzIHNob3Vs
ZCByZXN1bHQgaW4gb25lCisgIC8vIGNodW5rIGJlaW5nIHB1bGxlZCwgbm90IHR3by4KKyAgcnMu
dGVlKCk7CisgIHJldHVybiBmbHVzaEFzeW5jRXZlbnRzKCkudGhlbigoKSA9PiB7CisgICAgYXNz
ZXJ0X2FycmF5X2VxdWFscyhycy5ldmVudHMsIFsncHVsbCddLCAncHVsbCBzaG91bGQgb25seSBi
ZSBjYWxsZWQgb25jZScpOworICB9KTsKKworfSwgJ1JlYWRhYmxlU3RyZWFtVGVlIHNob3VsZCBu
b3QgcHVsbCBtb3JlIGNodW5rcyB0aGFuIGNhbiBmaXQgaW4gdGhlIGJyYW5jaCBxdWV1ZScpOwor
Citwcm9taXNlX3Rlc3QodCA9PiB7CisKKyAgY29uc3QgcnMgPSByZWNvcmRpbmdSZWFkYWJsZVN0
cmVhbSh7CisgICAgcHVsbChjb250cm9sbGVyKSB7CisgICAgICBjb250cm9sbGVyLmVucXVldWUo
J2EnKTsKKyAgICB9CisgIH0sIHsgaGlnaFdhdGVyTWFyazogMCB9KTsKKworICBjb25zdCBbcmVh
ZGVyMSwgcmVhZGVyMl0gPSBycy50ZWUoKS5tYXAoYnJhbmNoID0+IGJyYW5jaC5nZXRSZWFkZXIo
KSk7CisgIHJldHVybiBQcm9taXNlLmFsbChbcmVhZGVyMS5yZWFkKCksIHJlYWRlcjIucmVhZCgp
XSkKKyAgICAgIC50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJzLmV2ZW50
cywgWydwdWxsJywgJ3B1bGwnXSwgJ3B1bGwgc2hvdWxkIGJlIGNhbGxlZCB0d2ljZScpOworICB9
KTsKKworfSwgJ1JlYWRhYmxlU3RyZWFtVGVlIHNob3VsZCBvbmx5IHB1bGwgZW5vdWdoIHRvIGZp
bGwgdGhlIGVtcHRpZXN0IHF1ZXVlJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKworICBjb25z
dCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKHt9LCB7IGhpZ2hXYXRlck1hcms6IDAgfSk7
CisgIGNvbnN0IHRoZUVycm9yID0geyBuYW1lOiAnYm9vIScgfTsKKworICBycy5jb250cm9sbGVy
LmVycm9yKHRoZUVycm9yKTsKKworICBjb25zdCBbcmVhZGVyMSwgcmVhZGVyMl0gPSBycy50ZWUo
KS5tYXAoYnJhbmNoID0+IGJyYW5jaC5nZXRSZWFkZXIoKSk7CisKKyAgcmV0dXJuIGZsdXNoQXN5
bmNFdmVudHMoKS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJzLmV2ZW50
cywgW10sICdwdWxsIHNob3VsZCBub3QgYmUgY2FsbGVkJyk7CisKKyAgICByZXR1cm4gUHJvbWlz
ZS5hbGwoWworICAgICAgcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgdGhlRXJyb3IsIHJlYWRl
cjEuY2xvc2VkKSwKKyAgICAgIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIHRoZUVycm9yLCBy
ZWFkZXIyLmNsb3NlZCkKKyAgICBdKTsKKyAgfSk7CisKK30sICdSZWFkYWJsZVN0cmVhbVRlZSBz
aG91bGQgbm90IHB1bGwgd2hlbiBvcmlnaW5hbCBpcyBhbHJlYWR5IGVycm9yZWQnKTsKKworZm9y
IChjb25zdCBicmFuY2ggb2YgWzEsIDJdKSB7CisgIHByb21pc2VfdGVzdCh0ID0+IHsKKworICAg
IGNvbnN0IHJzID0gcmVjb3JkaW5nUmVhZGFibGVTdHJlYW0oe30sIHsgaGlnaFdhdGVyTWFyazog
MCB9KTsKKyAgICBjb25zdCB0aGVFcnJvciA9IHsgbmFtZTogJ2JvbyEnIH07CisKKyAgICBjb25z
dCBbcmVhZGVyMSwgcmVhZGVyMl0gPSBycy50ZWUoKS5tYXAoYnJhbmNoID0+IGJyYW5jaC5nZXRS
ZWFkZXIoKSk7CisKKyAgICByZXR1cm4gZmx1c2hBc3luY0V2ZW50cygpLnRoZW4oKCkgPT4gewor
ICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhycy5ldmVudHMsIFsncHVsbCddLCAncHVsbCBzaG91
bGQgYmUgY2FsbGVkIG9uY2UnKTsKKworICAgICAgcnMuY29udHJvbGxlci5lbnF1ZXVlKCdhJyk7
CisKKyAgICAgIGNvbnN0IHJlYWRlciA9IChicmFuY2ggPT09IDEpID8gcmVhZGVyMSA6IHJlYWRl
cjI7CisgICAgICByZXR1cm4gcmVhZGVyLnJlYWQoKTsKKyAgICB9KS50aGVuKCgpID0+IGZsdXNo
QXN5bmNFdmVudHMoKSkudGhlbigoKSA9PiB7CisgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJz
LmV2ZW50cywgWydwdWxsJywgJ3B1bGwnXSwgJ3B1bGwgc2hvdWxkIGJlIGNhbGxlZCB0d2ljZScp
OworCisgICAgICBycy5jb250cm9sbGVyLmVycm9yKHRoZUVycm9yKTsKKworICAgICAgcmV0dXJu
IFByb21pc2UuYWxsKFsKKyAgICAgICAgcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgdGhlRXJy
b3IsIHJlYWRlcjEuY2xvc2VkKSwKKyAgICAgICAgcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwg
dGhlRXJyb3IsIHJlYWRlcjIuY2xvc2VkKQorICAgICAgXSk7CisgICAgfSkudGhlbigoKSA9PiBm
bHVzaEFzeW5jRXZlbnRzKCkpLnRoZW4oKCkgPT4geworICAgICAgYXNzZXJ0X2FycmF5X2VxdWFs
cyhycy5ldmVudHMsIFsncHVsbCcsICdwdWxsJ10sICdwdWxsIHNob3VsZCBiZSBjYWxsZWQgdHdp
Y2UnKTsKKyAgICB9KTsKKworICB9LCBgUmVhZGFibGVTdHJlYW1UZWUgc3RvcHMgcHVsbGluZyB3
aGVuIG9yaWdpbmFsIHN0cmVhbSBlcnJvcnMgd2hpbGUgYnJhbmNoICR7YnJhbmNofSBpcyByZWFk
aW5nYCk7Cit9CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKworICBjb25zdCBycyA9IHJlY29yZGlu
Z1JlYWRhYmxlU3RyZWFtKHt9LCB7IGhpZ2hXYXRlck1hcms6IDAgfSk7CisgIGNvbnN0IHRoZUVy
cm9yID0geyBuYW1lOiAnYm9vIScgfTsKKworICBjb25zdCBbcmVhZGVyMSwgcmVhZGVyMl0gPSBy
cy50ZWUoKS5tYXAoYnJhbmNoID0+IGJyYW5jaC5nZXRSZWFkZXIoKSk7CisKKyAgcmV0dXJuIGZs
dXNoQXN5bmNFdmVudHMoKS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJz
LmV2ZW50cywgWydwdWxsJ10sICdwdWxsIHNob3VsZCBiZSBjYWxsZWQgb25jZScpOworCisgICAg
cnMuY29udHJvbGxlci5lbnF1ZXVlKCdhJyk7CisKKyAgICByZXR1cm4gUHJvbWlzZS5hbGwoW3Jl
YWRlcjEucmVhZCgpLCByZWFkZXIyLnJlYWQoKV0pOworICB9KS50aGVuKCgpID0+IGZsdXNoQXN5
bmNFdmVudHMoKSkudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhycy5ldmVu
dHMsIFsncHVsbCcsICdwdWxsJ10sICdwdWxsIHNob3VsZCBiZSBjYWxsZWQgdHdpY2UnKTsKKwor
ICAgIHJzLmNvbnRyb2xsZXIuZXJyb3IodGhlRXJyb3IpOworCisgICAgcmV0dXJuIFByb21pc2Uu
YWxsKFsKKyAgICAgIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIHRoZUVycm9yLCByZWFkZXIx
LmNsb3NlZCksCisgICAgICBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCB0aGVFcnJvciwgcmVh
ZGVyMi5jbG9zZWQpCisgICAgXSk7CisgIH0pLnRoZW4oKCkgPT4gZmx1c2hBc3luY0V2ZW50cygp
KS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJzLmV2ZW50cywgWydwdWxs
JywgJ3B1bGwnXSwgJ3B1bGwgc2hvdWxkIGJlIGNhbGxlZCB0d2ljZScpOworICB9KTsKKworfSwg
J1JlYWRhYmxlU3RyZWFtVGVlIHN0b3BzIHB1bGxpbmcgd2hlbiBvcmlnaW5hbCBzdHJlYW0gZXJy
b3JzIHdoaWxlIGJvdGggYnJhbmNoZXMgYXJlIHJlYWRpbmcnKTsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1z
dHJlYW1zL3RlZS5hbnkud29ya2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3RlZS5hbnku
d29ya2VyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYzEzMTVhOGE0YWRkZTk3YWMzOWY4ZWQw
YjYxZmU2YTE4NGQzOWYzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvdGVlLmFueS53
b3JrZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjQgQEAKKworSGFybmVzcyBFcnJvciAoRkFJ
TCksIG1lc3NhZ2UgPSBVbmhhbmRsZWQgcmVqZWN0aW9uCisKK1BBU1MgUmVhZGFibGVTdHJlYW0g
dGVlaW5nOiBycy50ZWUoKSByZXR1cm5zIGFuIGFycmF5IG9mIHR3byBSZWFkYWJsZVN0cmVhbXMg
CitQQVNTIFJlYWRhYmxlU3RyZWFtIHRlZWluZzogc2hvdWxkIGJlIGFibGUgdG8gcmVhZCBvbmUg
YnJhbmNoIHRvIHRoZSBlbmQgd2l0aG91dCBhZmZlY3RpbmcgdGhlIG90aGVyIAorUEFTUyBSZWFk
YWJsZVN0cmVhbSB0ZWVpbmc6IHZhbHVlcyBzaG91bGQgYmUgZXF1YWwgYWNyb3NzIGVhY2ggYnJh
bmNoIAorUEFTUyBSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IGVycm9ycyBpbiB0aGUgc291cmNlIHNo
b3VsZCBwcm9wYWdhdGUgdG8gYm90aCBicmFuY2hlcyAKK1BBU1MgUmVhZGFibGVTdHJlYW0gdGVl
aW5nOiBjYW5jZWxpbmcgYnJhbmNoMSBzaG91bGQgbm90IGltcGFjdCBicmFuY2gyIAorUEFTUyBS
ZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IGNhbmNlbGluZyBicmFuY2gyIHNob3VsZCBub3QgaW1wYWN0
IGJyYW5jaDEgCitQQVNTIFJlYWRhYmxlU3RyZWFtIHRlZWluZzogY2FuY2VsaW5nIGJvdGggYnJh
bmNoZXMgc2hvdWxkIGFnZ3JlZ2F0ZSB0aGUgY2FuY2VsIHJlYXNvbnMgaW50byBhbiBhcnJheSAK
K1BBU1MgUmVhZGFibGVTdHJlYW0gdGVlaW5nOiBjYW5jZWxpbmcgYm90aCBicmFuY2hlcyBpbiBy
ZXZlcnNlIG9yZGVyIHNob3VsZCBhZ2dyZWdhdGUgdGhlIGNhbmNlbCByZWFzb25zIGludG8gYW4g
YXJyYXkgCitQQVNTIFJlYWRhYmxlU3RyZWFtIHRlZWluZzogZmFpbGluZyB0byBjYW5jZWwgdGhl
IG9yaWdpbmFsIHN0cmVhbSBzaG91bGQgY2F1c2UgY2FuY2VsKCkgdG8gcmVqZWN0IG9uIGJyYW5j
aGVzIAorUEFTUyBSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IGVycm9yaW5nIGEgdGVlZCBzdHJlYW0g
c2hvdWxkIHByb3Blcmx5IGhhbmRsZSBjYW5jZWxlZCBicmFuY2hlcyAKK1BBU1MgUmVhZGFibGVT
dHJlYW0gdGVlaW5nOiBlcnJvcmluZyBhIHRlZWQgc3RyZWFtIHNob3VsZCBlcnJvciBib3RoIGJy
YW5jaGVzIAorUEFTUyBSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IGNsb3NpbmcgdGhlIG9yaWdpbmFs
IHNob3VsZCBpbW1lZGlhdGVseSBjbG9zZSB0aGUgYnJhbmNoZXMgCitQQVNTIFJlYWRhYmxlU3Ry
ZWFtIHRlZWluZzogZXJyb3JpbmcgdGhlIG9yaWdpbmFsIHNob3VsZCBpbW1lZGlhdGVseSBlcnJv
ciB0aGUgYnJhbmNoZXMgCitQQVNTIFJlYWRhYmxlU3RyZWFtVGVlIHNob3VsZCBub3QgdXNlIGEg
bW9kaWZpZWQgUmVhZGFibGVTdHJlYW0gY29uc3RydWN0b3IgZnJvbSB0aGUgZ2xvYmFsIG9iamVj
dCAKK0ZBSUwgUmVhZGFibGVTdHJlYW1UZWUgc2hvdWxkIG5vdCBwdWxsIG1vcmUgY2h1bmtzIHRo
YW4gY2FuIGZpdCBpbiB0aGUgYnJhbmNoIHF1ZXVlIGFzc2VydF9hcnJheV9lcXVhbHM6IHB1bGwg
c2hvdWxkIG9ubHkgYmUgY2FsbGVkIG9uY2UgbGVuZ3RocyBkaWZmZXIsIGV4cGVjdGVkIGFycmF5
IFsicHVsbCJdIGxlbmd0aCAxLCBnb3QgWyJwdWxsIiwgInB1bGwiXSBsZW5ndGggMgorRkFJTCBS
ZWFkYWJsZVN0cmVhbVRlZSBzaG91bGQgb25seSBwdWxsIGVub3VnaCB0byBmaWxsIHRoZSBlbXB0
aWVzdCBxdWV1ZSBhc3NlcnRfYXJyYXlfZXF1YWxzOiBwdWxsIHNob3VsZCBiZSBjYWxsZWQgdHdp
Y2UgbGVuZ3RocyBkaWZmZXIsIGV4cGVjdGVkIGFycmF5IFsicHVsbCIsICJwdWxsIl0gbGVuZ3Ro
IDIsIGdvdCBbInB1bGwiLCAicHVsbCIsICJwdWxsIiwgInB1bGwiXSBsZW5ndGggNAorUEFTUyBS
ZWFkYWJsZVN0cmVhbVRlZSBzaG91bGQgbm90IHB1bGwgd2hlbiBvcmlnaW5hbCBpcyBhbHJlYWR5
IGVycm9yZWQgCitGQUlMIFJlYWRhYmxlU3RyZWFtVGVlIHN0b3BzIHB1bGxpbmcgd2hlbiBvcmln
aW5hbCBzdHJlYW0gZXJyb3JzIHdoaWxlIGJyYW5jaCAxIGlzIHJlYWRpbmcgYXNzZXJ0X2FycmF5
X2VxdWFsczogcHVsbCBzaG91bGQgYmUgY2FsbGVkIG9uY2UgbGVuZ3RocyBkaWZmZXIsIGV4cGVj
dGVkIGFycmF5IFsicHVsbCJdIGxlbmd0aCAxLCBnb3QgWyJwdWxsIiwgInB1bGwiXSBsZW5ndGgg
MgorRkFJTCBSZWFkYWJsZVN0cmVhbVRlZSBzdG9wcyBwdWxsaW5nIHdoZW4gb3JpZ2luYWwgc3Ry
ZWFtIGVycm9ycyB3aGlsZSBicmFuY2ggMiBpcyByZWFkaW5nIGFzc2VydF9hcnJheV9lcXVhbHM6
IHB1bGwgc2hvdWxkIGJlIGNhbGxlZCBvbmNlIGxlbmd0aHMgZGlmZmVyLCBleHBlY3RlZCBhcnJh
eSBbInB1bGwiXSBsZW5ndGggMSwgZ290IFsicHVsbCIsICJwdWxsIl0gbGVuZ3RoIDIKK0ZBSUwg
UmVhZGFibGVTdHJlYW1UZWUgc3RvcHMgcHVsbGluZyB3aGVuIG9yaWdpbmFsIHN0cmVhbSBlcnJv
cnMgd2hpbGUgYm90aCBicmFuY2hlcyBhcmUgcmVhZGluZyBhc3NlcnRfYXJyYXlfZXF1YWxzOiBw
dWxsIHNob3VsZCBiZSBjYWxsZWQgb25jZSBsZW5ndGhzIGRpZmZlciwgZXhwZWN0ZWQgYXJyYXkg
WyJwdWxsIl0gbGVuZ3RoIDEsIGdvdCBbInB1bGwiLCAicHVsbCJdIGxlbmd0aCAyCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy9yZWFkYWJsZS1zdHJlYW1zL3RlZS5hbnkud29ya2VyLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy90ZWUu
YW55Lndvcmtlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzODI5MTM1MjhlNjkzYjNhNWQ1NmM2NjBhNDUw
NjA5ODBiNTQ4YzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy90ZWUuYW55Lndvcmtl
ci5odG1sCkBAIC0wLDAgKzEgQEAKKzwhLS0gVGhpcyBmaWxlIGlzIHJlcXVpcmVkIGZvciBXZWJL
aXQgdGVzdCBpbmZyYXN0cnVjdHVyZSB0byBydW4gdGhlIHRlbXBsYXRlZCB0ZXN0IC0tPgpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3RlZS5kZWRp
Y2F0ZWR3b3JrZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvdGVlLmRlZGljYXRlZHdvcmtl
ci1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUwM2E1YzIxODNj
ODQ1NTI2ZDFiMGIyZjlhN2VhNDMzOTgxZDNkNWQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvdGVlLmRlZGljYXRlZHdvcmtlci1leHBl
Y3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwxNCArMCwwIEBACi0KLVBBU1MgUmVhZGFibGVT
dHJlYW0gdGVlaW5nOiBycy50ZWUoKSByZXR1cm5zIGFuIGFycmF5IG9mIHR3byBSZWFkYWJsZVN0
cmVhbXMgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIHRlZWluZzogc2hvdWxkIGJlIGFibGUgdG8gcmVh
ZCBvbmUgYnJhbmNoIHRvIHRoZSBlbmQgd2l0aG91dCBhZmZlY3RpbmcgdGhlIG90aGVyIAotUEFT
UyBSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IHZhbHVlcyBzaG91bGQgYmUgZXF1YWwgYWNyb3NzIGVh
Y2ggYnJhbmNoIAotUEFTUyBSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IGVycm9ycyBpbiB0aGUgc291
cmNlIHNob3VsZCBwcm9wYWdhdGUgdG8gYm90aCBicmFuY2hlcyAKLVBBU1MgUmVhZGFibGVTdHJl
YW0gdGVlaW5nOiBjYW5jZWxpbmcgYnJhbmNoMSBzaG91bGQgbm90IGltcGFjdCBicmFuY2gyIAot
UEFTUyBSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IGNhbmNlbGluZyBicmFuY2gyIHNob3VsZCBub3Qg
aW1wYWN0IGJyYW5jaDIgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIHRlZWluZzogY2FuY2VsaW5nIGJv
dGggYnJhbmNoZXMgc2hvdWxkIGFnZ3JlZ2F0ZSB0aGUgY2FuY2VsIHJlYXNvbnMgaW50byBhbiBh
cnJheSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gdGVlaW5nOiBmYWlsaW5nIHRvIGNhbmNlbCB0aGUg
b3JpZ2luYWwgc3RyZWFtIHNob3VsZCBjYXVzZSBjYW5jZWwoKSB0byByZWplY3Qgb24gYnJhbmNo
ZXMgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIHRlZWluZzogZXJyb3JpbmcgYSB0ZWVkIHN0cmVhbSBz
aG91bGQgcHJvcGVybHkgaGFuZGxlIGNhbmNlbGVkIGJyYW5jaGVzIAotUEFTUyBSZWFkYWJsZVN0
cmVhbSB0ZWVpbmc6IGNsb3NpbmcgdGhlIG9yaWdpbmFsIHNob3VsZCBpbW1lZGlhdGVseSBjbG9z
ZSB0aGUgYnJhbmNoZXMgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIHRlZWluZzogZXJyb3JpbmcgdGhl
IG9yaWdpbmFsIHNob3VsZCBpbW1lZGlhdGVseSBlcnJvciB0aGUgYnJhbmNoZXMgCi1QQVNTIFJl
YWRhYmxlU3RyZWFtVGVlIHNob3VsZCBub3QgdXNlIGEgbW9kaWZpZWQgUmVhZGFibGVTdHJlYW0g
Y29uc3RydWN0b3IgZnJvbSB0aGUgZ2xvYmFsIG9iamVjdCAKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0
cmVhbXMvdGVlLmRlZGljYXRlZHdvcmtlci5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvdGVlLmRlZGljYXRl
ZHdvcmtlci5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZjc5NDIyMTc0YjFk
NTZlYzM0ODFlNTMzM2NjNWIwNDdlMjI4M2I1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3RlZS5kZWRpY2F0ZWR3b3JrZXIuaHRtbAor
KysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hh
cnNldD0idXRmLTgiPgotPHRpdGxlPnRlZS5qcyBkZWRpY2F0ZWQgd29ya2VyIHdyYXBwZXIgZmls
ZTwvdGl0bGU+Ci0KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3Nj
cmlwdD4KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3Nj
cmlwdD4KLQotPHNjcmlwdD4KLSd1c2Ugc3RyaWN0JzsKLWZldGNoX3Rlc3RzX2Zyb21fd29ya2Vy
KG5ldyBXb3JrZXIoJ3RlZS5qcycpKTsKLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVh
bXMvdGVlLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy90ZWUuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggZmJmYWZiNzI4MTZkYTdmMWFhYTYxM2Q0NDA0YmIxY2RlZWY0YmU4OS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy90ZWUu
aHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1l
dGEgY2hhcnNldD0idXRmLTgiPgotPHRpdGxlPnRlZS5qcyBicm93c2VyIGNvbnRleHQgd3JhcHBl
ciBmaWxlPC90aXRsZT4KLQotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMi
Pjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMi
Pjwvc2NyaXB0PgotCi08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3JzLXV0aWxzLmpzIj48L3Nj
cmlwdD4KLQotPHNjcmlwdCBzcmM9InRlZS5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUt
c3RyZWFtcy90ZWUuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy90ZWUuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGRmNzY4NzdlZmY0YTE3OTNlZDBjMjIyMjU1ZjRkNTU3ODk3YmMxM2UuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvdGVl
LmpzCisrKyAvZGV2L251bGwKQEAgLTEsMjkzICswLDAgQEAKLSd1c2Ugc3RyaWN0JzsKLQotaWYg
KHNlbGYuaW1wb3J0U2NyaXB0cykgewotICBzZWxmLmltcG9ydFNjcmlwdHMoJy4uL3Jlc291cmNl
cy9ycy11dGlscy5qcycpOwotICBzZWxmLmltcG9ydFNjcmlwdHMoJy9yZXNvdXJjZXMvdGVzdGhh
cm5lc3MuanMnKTsKLX0KLQotdGVzdCgoKSA9PiB7Ci0KLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFi
bGVTdHJlYW0oKTsKLSAgY29uc3QgcmVzdWx0ID0gcnMudGVlKCk7Ci0KLSAgYXNzZXJ0X3RydWUo
QXJyYXkuaXNBcnJheShyZXN1bHQpLCAncmV0dXJuIHZhbHVlIHNob3VsZCBiZSBhbiBhcnJheScp
OwotICBhc3NlcnRfZXF1YWxzKHJlc3VsdC5sZW5ndGgsIDIsICdhcnJheSBzaG91bGQgaGF2ZSBs
ZW5ndGggMicpOwotICBhc3NlcnRfZXF1YWxzKHJlc3VsdFswXS5jb25zdHJ1Y3RvciwgUmVhZGFi
bGVTdHJlYW0sICcwdGggZWxlbWVudCBzaG91bGQgYmUgYSBSZWFkYWJsZVN0cmVhbScpOwotICBh
c3NlcnRfZXF1YWxzKHJlc3VsdFsxXS5jb25zdHJ1Y3RvciwgUmVhZGFibGVTdHJlYW0sICcxc3Qg
ZWxlbWVudCBzaG91bGQgYmUgYSBSZWFkYWJsZVN0cmVhbScpOwotCi19LCAnUmVhZGFibGVTdHJl
YW0gdGVlaW5nOiBycy50ZWUoKSByZXR1cm5zIGFuIGFycmF5IG9mIHR3byBSZWFkYWJsZVN0cmVh
bXMnKTsKLQotcHJvbWlzZV90ZXN0KHQgPT4gewotCi0gIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxl
U3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0gICAgICBjLmVucXVldWUoJ2EnKTsKLSAgICAgIGMu
ZW5xdWV1ZSgnYicpOwotICAgICAgYy5jbG9zZSgpOwotICAgIH0KLSAgfSk7Ci0KLSAgY29uc3Qg
YnJhbmNoID0gcnMudGVlKCk7Ci0gIGNvbnN0IGJyYW5jaDEgPSBicmFuY2hbMF07Ci0gIGNvbnN0
IGJyYW5jaDIgPSBicmFuY2hbMV07Ci0gIGNvbnN0IHJlYWRlcjEgPSBicmFuY2gxLmdldFJlYWRl
cigpOwotICBjb25zdCByZWFkZXIyID0gYnJhbmNoMi5nZXRSZWFkZXIoKTsKLQotICByZWFkZXIy
LmNsb3NlZC50aGVuKHQudW5yZWFjaGVkX2Z1bmMoJ2JyYW5jaDIgc2hvdWxkIG5vdCBiZSBjbG9z
ZWQnKSk7Ci0KLSAgcmV0dXJuIFByb21pc2UuYWxsKFsKLSAgICByZWFkZXIxLmNsb3NlZCwKLSAg
ICByZWFkZXIxLnJlYWQoKS50aGVuKHIgPT4gewotICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMo
ciwgeyB2YWx1ZTogJ2EnLCBkb25lOiBmYWxzZSB9LCAnZmlyc3QgY2h1bmsgZnJvbSBicmFuY2gx
IHNob3VsZCBiZSBjb3JyZWN0Jyk7Ci0gICAgfSksCi0gICAgcmVhZGVyMS5yZWFkKCkudGhlbihy
ID0+IHsKLSAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHIsIHsgdmFsdWU6ICdiJywgZG9uZTog
ZmFsc2UgfSwgJ3NlY29uZCBjaHVuayBmcm9tIGJyYW5jaDEgc2hvdWxkIGJlIGNvcnJlY3QnKTsK
LSAgICB9KSwKLSAgICByZWFkZXIxLnJlYWQoKS50aGVuKHIgPT4gewotICAgICAgYXNzZXJ0X29i
amVjdF9lcXVhbHMociwgeyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0sICd0aGlyZCBy
ZWFkKCkgZnJvbSBicmFuY2gxIHNob3VsZCBiZSBkb25lJyk7Ci0gICAgfSksCi0gICAgcmVhZGVy
Mi5yZWFkKCkudGhlbihyID0+IHsKLSAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHIsIHsgdmFs
dWU6ICdhJywgZG9uZTogZmFsc2UgfSwgJ2ZpcnN0IGNodW5rIGZyb20gYnJhbmNoMiBzaG91bGQg
YmUgY29ycmVjdCcpOwotICAgIH0pCi0gIF0pOwotCi19LCAnUmVhZGFibGVTdHJlYW0gdGVlaW5n
OiBzaG91bGQgYmUgYWJsZSB0byByZWFkIG9uZSBicmFuY2ggdG8gdGhlIGVuZCB3aXRob3V0IGFm
ZmVjdGluZyB0aGUgb3RoZXInKTsKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLQotICBjb25zdCB0
aGVPYmplY3QgPSB7IHRoZTogJ3Rlc3Qgb2JqZWN0JyB9OwotICBjb25zdCBycyA9IG5ldyBSZWFk
YWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgYy5lbnF1ZXVlKHRoZU9iamVjdCk7
Ci0gICAgfQotICB9KTsKLQotICBjb25zdCBicmFuY2ggPSBycy50ZWUoKTsKLSAgY29uc3QgYnJh
bmNoMSA9IGJyYW5jaFswXTsKLSAgY29uc3QgYnJhbmNoMiA9IGJyYW5jaFsxXTsKLSAgY29uc3Qg
cmVhZGVyMSA9IGJyYW5jaDEuZ2V0UmVhZGVyKCk7Ci0gIGNvbnN0IHJlYWRlcjIgPSBicmFuY2gy
LmdldFJlYWRlcigpOwotCi0gIHJldHVybiBQcm9taXNlLmFsbChbcmVhZGVyMS5yZWFkKCksIHJl
YWRlcjIucmVhZCgpXSkudGhlbih2YWx1ZXMgPT4gewotICAgIGFzc2VydF9vYmplY3RfZXF1YWxz
KHZhbHVlc1swXSwgdmFsdWVzWzFdLCAndGhlIHZhbHVlcyBzaG91bGQgYmUgZXF1YWwnKTsKLSAg
fSk7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IHZhbHVlcyBzaG91bGQgYmUgZXF1YWwg
YWNyb3NzIGVhY2ggYnJhbmNoJyk7Ci0KLXByb21pc2VfdGVzdCh0ID0+IHsKLQotICBjb25zdCB0
aGVFcnJvciA9IHsgbmFtZTogJ2JvbyEnIH07Ci0gIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3Ry
ZWFtKHsKLSAgICBzdGFydChjKSB7Ci0gICAgICBjLmVucXVldWUoJ2EnKTsKLSAgICAgIGMuZW5x
dWV1ZSgnYicpOwotICAgIH0sCi0gICAgcHVsbCgpIHsKLSAgICAgIHRocm93IHRoZUVycm9yOwot
ICAgIH0KLSAgfSk7Ci0KLSAgY29uc3QgYnJhbmNoZXMgPSBycy50ZWUoKTsKLSAgY29uc3QgcmVh
ZGVyMSA9IGJyYW5jaGVzWzBdLmdldFJlYWRlcigpOwotICBjb25zdCByZWFkZXIyID0gYnJhbmNo
ZXNbMV0uZ2V0UmVhZGVyKCk7Ci0KLSAgcmVhZGVyMS5sYWJlbCA9ICdyZWFkZXIxJzsKLSAgcmVh
ZGVyMi5sYWJlbCA9ICdyZWFkZXIyJzsKLQotICByZXR1cm4gUHJvbWlzZS5hbGwoWwotICAgIHBy
b21pc2VfcmVqZWN0cyh0LCB0aGVFcnJvciwgcmVhZGVyMS5jbG9zZWQpLAotICAgIHByb21pc2Vf
cmVqZWN0cyh0LCB0aGVFcnJvciwgcmVhZGVyMi5jbG9zZWQpLAotICAgIHJlYWRlcjEucmVhZCgp
LnRoZW4ociA9PiB7Ci0gICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyLCB7IHZhbHVlOiAnYScs
IGRvbmU6IGZhbHNlIH0sICdzaG91bGQgYmUgYWJsZSB0byByZWFkIHRoZSBmaXJzdCBjaHVuayBp
biBicmFuY2gxJyk7Ci0gICAgfSksCi0gICAgcmVhZGVyMS5yZWFkKCkudGhlbihyID0+IHsKLSAg
ICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHIsIHsgdmFsdWU6ICdiJywgZG9uZTogZmFsc2UgfSwg
J3Nob3VsZCBiZSBhYmxlIHRvIHJlYWQgdGhlIHNlY29uZCBjaHVuayBpbiBicmFuY2gxJyk7Ci0K
LSAgICAgIHJldHVybiBwcm9taXNlX3JlamVjdHModCwgdGhlRXJyb3IsIHJlYWRlcjIucmVhZCgp
KTsKLSAgICB9KQotICAgIC50aGVuKCgpID0+IHByb21pc2VfcmVqZWN0cyh0LCB0aGVFcnJvciwg
cmVhZGVyMS5yZWFkKCkpKQotICBdKTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtIHRlZWluZzogZXJy
b3JzIGluIHRoZSBzb3VyY2Ugc2hvdWxkIHByb3BhZ2F0ZSB0byBib3RoIGJyYW5jaGVzJyk7Ci0K
LXByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0o
ewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGMuZW5xdWV1ZSgnYScpOwotICAgICAgYy5lbnF1ZXVl
KCdiJyk7Ci0gICAgICBjLmNsb3NlKCk7Ci0gICAgfQotICB9KTsKLQotICBjb25zdCBicmFuY2hl
cyA9IHJzLnRlZSgpOwotICBjb25zdCBicmFuY2gxID0gYnJhbmNoZXNbMF07Ci0gIGNvbnN0IGJy
YW5jaDIgPSBicmFuY2hlc1sxXTsKLSAgYnJhbmNoMS5jYW5jZWwoKTsKLQotICByZXR1cm4gUHJv
bWlzZS5hbGwoWwotICAgIHJlYWRhYmxlU3RyZWFtVG9BcnJheShicmFuY2gxKS50aGVuKGNodW5r
cyA9PiB7Ci0gICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGNodW5rcywgW10sICdicmFuY2gxIHNo
b3VsZCBoYXZlIG5vIGNodW5rcycpOwotICAgIH0pLAotICAgIHJlYWRhYmxlU3RyZWFtVG9BcnJh
eShicmFuY2gyKS50aGVuKGNodW5rcyA9PiB7Ci0gICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGNo
dW5rcywgWydhJywgJ2InXSwgJ2JyYW5jaDIgc2hvdWxkIGhhdmUgdHdvIGNodW5rcycpOwotICAg
IH0pCi0gIF0pOwotCi19LCAnUmVhZGFibGVTdHJlYW0gdGVlaW5nOiBjYW5jZWxpbmcgYnJhbmNo
MSBzaG91bGQgbm90IGltcGFjdCBicmFuY2gyJyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0K
LSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAg
IGMuZW5xdWV1ZSgnYScpOwotICAgICAgYy5lbnF1ZXVlKCdiJyk7Ci0gICAgICBjLmNsb3NlKCk7
Ci0gICAgfQotICB9KTsKLQotICBjb25zdCBicmFuY2hlcyA9IHJzLnRlZSgpOwotICBjb25zdCBi
cmFuY2gxID0gYnJhbmNoZXNbMF07Ci0gIGNvbnN0IGJyYW5jaDIgPSBicmFuY2hlc1sxXTsKLSAg
YnJhbmNoMi5jYW5jZWwoKTsKLQotICByZXR1cm4gUHJvbWlzZS5hbGwoWwotICAgIHJlYWRhYmxl
U3RyZWFtVG9BcnJheShicmFuY2gxKS50aGVuKGNodW5rcyA9PiB7Ci0gICAgICBhc3NlcnRfYXJy
YXlfZXF1YWxzKGNodW5rcywgWydhJywgJ2InXSwgJ2JyYW5jaDEgc2hvdWxkIGhhdmUgdHdvIGNo
dW5rcycpOwotICAgIH0pLAotICAgIHJlYWRhYmxlU3RyZWFtVG9BcnJheShicmFuY2gyKS50aGVu
KGNodW5rcyA9PiB7Ci0gICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGNodW5rcywgW10sICdicmFu
Y2gyIHNob3VsZCBoYXZlIG5vIGNodW5rcycpOwotICAgIH0pCi0gIF0pOwotCi19LCAnUmVhZGFi
bGVTdHJlYW0gdGVlaW5nOiBjYW5jZWxpbmcgYnJhbmNoMiBzaG91bGQgbm90IGltcGFjdCBicmFu
Y2gyJyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgY29uc3QgcmVhc29uMSA9IG5ldyBF
cnJvcignV2VcJ3JlIHdhbnRlZCBtZW4uJyk7Ci0gIGNvbnN0IHJlYXNvbjIgPSBuZXcgRXJyb3Io
J0kgaGF2ZSB0aGUgZGVhdGggc2VudGVuY2Ugb24gdHdlbHZlIHN5c3RlbXMuJyk7Ci0KLSAgbGV0
IHJlc29sdmU7Ci0gIGNvbnN0IHByb21pc2UgPSBuZXcgUHJvbWlzZShyID0+IHJlc29sdmUgPSBy
KTsKLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIGNhbmNlbChyZWFzb24p
IHsKLSAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMocmVhc29uLCBbcmVhc29uMSwgcmVhc29uMl0s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICd0aGUgY2FuY2VsIHJlYXNvbiBzaG91bGQgYmUg
YW4gYXJyYXkgY29udGFpbmluZyB0aG9zZSBmcm9tIHRoZSBicmFuY2hlcycpOwotICAgICAgcmVz
b2x2ZSgpOwotICAgIH0KLSAgfSk7Ci0KLSAgY29uc3QgYnJhbmNoID0gcnMudGVlKCk7Ci0gIGNv
bnN0IGJyYW5jaDEgPSBicmFuY2hbMF07Ci0gIGNvbnN0IGJyYW5jaDIgPSBicmFuY2hbMV07Ci0g
IGJyYW5jaDEuY2FuY2VsKHJlYXNvbjEpOwotICBicmFuY2gyLmNhbmNlbChyZWFzb24yKTsKLQot
ICByZXR1cm4gcHJvbWlzZTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtIHRlZWluZzogY2FuY2VsaW5n
IGJvdGggYnJhbmNoZXMgc2hvdWxkIGFnZ3JlZ2F0ZSB0aGUgY2FuY2VsIHJlYXNvbnMgaW50byBh
biBhcnJheScpOwotCi1wcm9taXNlX3Rlc3QodCA9PiB7Ci0KLSAgY29uc3QgdGhlRXJyb3IgPSB7
IG5hbWU6ICdJXCdsbCBiZSBjYXJlZnVsLicgfTsKLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVT
dHJlYW0oewotICAgIGNhbmNlbCgpIHsKLSAgICAgIHRocm93IHRoZUVycm9yOwotICAgIH0KLSAg
fSk7Ci0KLSAgY29uc3QgYnJhbmNoID0gcnMudGVlKCk7Ci0gIGNvbnN0IGJyYW5jaDEgPSBicmFu
Y2hbMF07Ci0gIGNvbnN0IGJyYW5jaDIgPSBicmFuY2hbMV07Ci0KLSAgcmV0dXJuIFByb21pc2Uu
YWxsKFsKLSAgICBwcm9taXNlX3JlamVjdHModCwgdGhlRXJyb3IsIGJyYW5jaDEuY2FuY2VsKCkp
LAotICAgIHByb21pc2VfcmVqZWN0cyh0LCB0aGVFcnJvciwgYnJhbmNoMi5jYW5jZWwoKSkKLSAg
XSk7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IGZhaWxpbmcgdG8gY2FuY2VsIHRoZSBv
cmlnaW5hbCBzdHJlYW0gc2hvdWxkIGNhdXNlIGNhbmNlbCgpIHRvIHJlamVjdCBvbiBicmFuY2hl
cycpOwotCi10ZXN0KHQgPT4gewotCi0gIGxldCBjb250cm9sbGVyOwotICBjb25zdCBzdHJlYW0g
PSBuZXcgUmVhZGFibGVTdHJlYW0oeyBzdGFydChjKSB7IGNvbnRyb2xsZXIgPSBjOyB9IH0pOwot
ICBjb25zdCBbYnJhbmNoMSwgYnJhbmNoMl0gPSBzdHJlYW0udGVlKCk7Ci0KLSAgY29uc3QgcHJv
bWlzZSA9IGNvbnRyb2xsZXIuZXJyb3IoImVycm9yIik7Ci0KLSAgYnJhbmNoMS5jYW5jZWwoKS5j
YXRjaChfPT5fKTsKLSAgYnJhbmNoMi5jYW5jZWwoKS5jYXRjaChfPT5fKTsKLQotICByZXR1cm4g
cHJvbWlzZTsKLX0sICdSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IGVycm9yaW5nIGEgdGVlZCBzdHJl
YW0gc2hvdWxkIHByb3Blcmx5IGhhbmRsZSBjYW5jZWxlZCBicmFuY2hlcycpOwotCi1wcm9taXNl
X3Rlc3QoKCkgPT4gewotCi0gIGxldCBjb250cm9sbGVyOwotICBjb25zdCBycyA9IG5ldyBSZWFk
YWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgY29udHJvbGxlciA9IGM7Ci0gICAg
fQotICB9KTsKLQotICBjb25zdCBicmFuY2hlcyA9IHJzLnRlZSgpOwotICBjb25zdCByZWFkZXIx
ID0gYnJhbmNoZXNbMF0uZ2V0UmVhZGVyKCk7Ci0gIGNvbnN0IHJlYWRlcjIgPSBicmFuY2hlc1sx
XS5nZXRSZWFkZXIoKTsKLQotICBjb25zdCBwcm9taXNlID0gUHJvbWlzZS5hbGwoW3JlYWRlcjEu
Y2xvc2VkLCByZWFkZXIyLmNsb3NlZF0pOwotCi0gIGNvbnRyb2xsZXIuY2xvc2UoKTsKLSAgcmV0
dXJuIHByb21pc2U7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IGNsb3NpbmcgdGhlIG9y
aWdpbmFsIHNob3VsZCBpbW1lZGlhdGVseSBjbG9zZSB0aGUgYnJhbmNoZXMnKTsKLQotcHJvbWlz
ZV90ZXN0KHQgPT4gewotCi0gIGxldCBjb250cm9sbGVyOwotICBjb25zdCBycyA9IG5ldyBSZWFk
YWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgY29udHJvbGxlciA9IGM7Ci0gICAg
fQotICB9KTsKLQotICBjb25zdCBicmFuY2hlcyA9IHJzLnRlZSgpOwotICBjb25zdCByZWFkZXIx
ID0gYnJhbmNoZXNbMF0uZ2V0UmVhZGVyKCk7Ci0gIGNvbnN0IHJlYWRlcjIgPSBicmFuY2hlc1sx
XS5nZXRSZWFkZXIoKTsKLQotICBjb25zdCB0aGVFcnJvciA9IHsgbmFtZTogJ2JvbyEnIH07Ci0g
IGNvbnN0IHByb21pc2UgPSBQcm9taXNlLmFsbChbCi0gICAgcHJvbWlzZV9yZWplY3RzKHQsIHRo
ZUVycm9yLCByZWFkZXIxLmNsb3NlZCksCi0gICAgcHJvbWlzZV9yZWplY3RzKHQsIHRoZUVycm9y
LCByZWFkZXIyLmNsb3NlZCkKLSAgXSk7Ci0KLSAgY29udHJvbGxlci5lcnJvcih0aGVFcnJvcik7
Ci0gIHJldHVybiBwcm9taXNlOwotCi19LCAnUmVhZGFibGVTdHJlYW0gdGVlaW5nOiBlcnJvcmlu
ZyB0aGUgb3JpZ2luYWwgc2hvdWxkIGltbWVkaWF0ZWx5IGVycm9yIHRoZSBicmFuY2hlcycpOwot
Ci10ZXN0KHQgPT4gewotCi0gIC8vIENvcHkgb3JpZ2luYWwgZ2xvYmFsLgotICBjb25zdCBvbGRS
ZWFkYWJsZVN0cmVhbSA9IFJlYWRhYmxlU3RyZWFtOwotICBjb25zdCBnZXRSZWFkZXIgPSBSZWFk
YWJsZVN0cmVhbS5wcm90b3R5cGUuZ2V0UmVhZGVyOwotCi0gIGNvbnN0IG9yaWdSUyA9IG5ldyBS
ZWFkYWJsZVN0cmVhbSgpOwotCi0gIC8vIFJlcGxhY2UgdGhlIGdsb2JhbCBSZWFkYWJsZVN0cmVh
bSBjb25zdHJ1Y3RvciB3aXRoIG9uZSB0aGF0IGRvZXNuJ3Qgd29yay4KLSAgUmVhZGFibGVTdHJl
YW0gPSBmdW5jdGlvbigpIHsKLSAgICB0aHJvdyBuZXcgRXJyb3IoJ2dsb2JhbCBSZWFkYWJsZVN0
cmVhbSBjb25zdHJ1Y3RvciBjYWxsZWQnKTsKLSAgfTsKLSAgdC5hZGRfY2xlYW51cCgoKSA9PiB7
Ci0gICAgUmVhZGFibGVTdHJlYW0gPSBvbGRSZWFkYWJsZVN0cmVhbTsKLSAgfSk7Ci0KLSAgLy8g
VGhpcyB3aWxsIHByb2JhYmx5IGZhaWwgaWYgdGhlIGdsb2JhbCBSZWFkYWJsZVN0cmVhbSBjb25z
dHJ1Y3RvciB3YXMgdXNlZC4KLSAgY29uc3QgW3JzMSwgcnMyXSA9IG9yaWdSUy50ZWUoKTsKLQot
ICAvLyBUaGVzZSB3aWxsIGRlZmluaXRlbHkgZmFpbCBpZiB0aGUgZ2xvYmFsIFJlYWRhYmxlU3Ry
ZWFtIGNvbnN0cnVjdG9yIHdhcyB1c2VkLgotICBhc3NlcnRfbm90X2VxdWFscyhnZXRSZWFkZXIu
Y2FsbChyczEpLCB1bmRlZmluZWQsICdnZXRSZWFkZXIgc2hvdWxkIHdvcmsgb24gcnMxJyk7Ci0g
IGFzc2VydF9ub3RfZXF1YWxzKGdldFJlYWRlci5jYWxsKHJzMiksIHVuZGVmaW5lZCwgJ2dldFJl
YWRlciBzaG91bGQgd29yayBvbiByczInKTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtVGVlIHNob3Vs
ZCBub3QgdXNlIGEgbW9kaWZpZWQgUmVhZGFibGVTdHJlYW0gY29uc3RydWN0b3IgZnJvbSB0aGUg
Z2xvYmFsIG9iamVjdCcpOwotCi1kb25lKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy90ZWUu
c2VydmljZXdvcmtlci5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy90ZWUuc2Vydmlj
ZXdvcmtlci5odHRwcy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGFlNGU0OGEyYzA5YWYzMzM2MmM5ODk4MmQwZjE0NjM1YTI2NDcxNjMuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvdGVlLnNlcnZpY2V3
b3JrZXIuaHR0cHMtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAot
Ci1IYXJuZXNzIEVycm9yIChGQUlMKSwgbWVzc2FnZSA9IFVuaGFuZGxlZCByZWplY3Rpb24KLQot
UEFTUyBTZXJ2aWNlIHdvcmtlciB0ZXN0IHNldHVwIAotUEFTUyBSZWFkYWJsZVN0cmVhbSB0ZWVp
bmc6IHJzLnRlZSgpIHJldHVybnMgYW4gYXJyYXkgb2YgdHdvIFJlYWRhYmxlU3RyZWFtcyAKLVBB
U1MgUmVhZGFibGVTdHJlYW0gdGVlaW5nOiBzaG91bGQgYmUgYWJsZSB0byByZWFkIG9uZSBicmFu
Y2ggdG8gdGhlIGVuZCB3aXRob3V0IGFmZmVjdGluZyB0aGUgb3RoZXIgCi1QQVNTIFJlYWRhYmxl
U3RyZWFtIHRlZWluZzogdmFsdWVzIHNob3VsZCBiZSBlcXVhbCBhY3Jvc3MgZWFjaCBicmFuY2gg
Ci1QQVNTIFJlYWRhYmxlU3RyZWFtIHRlZWluZzogZXJyb3JzIGluIHRoZSBzb3VyY2Ugc2hvdWxk
IHByb3BhZ2F0ZSB0byBib3RoIGJyYW5jaGVzIAotUEFTUyBSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6
IGNhbmNlbGluZyBicmFuY2gxIHNob3VsZCBub3QgaW1wYWN0IGJyYW5jaDIgCi1QQVNTIFJlYWRh
YmxlU3RyZWFtIHRlZWluZzogY2FuY2VsaW5nIGJyYW5jaDIgc2hvdWxkIG5vdCBpbXBhY3QgYnJh
bmNoMiAKLVBBU1MgUmVhZGFibGVTdHJlYW0gdGVlaW5nOiBjYW5jZWxpbmcgYm90aCBicmFuY2hl
cyBzaG91bGQgYWdncmVnYXRlIHRoZSBjYW5jZWwgcmVhc29ucyBpbnRvIGFuIGFycmF5IAotUEFT
UyBSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IGZhaWxpbmcgdG8gY2FuY2VsIHRoZSBvcmlnaW5hbCBz
dHJlYW0gc2hvdWxkIGNhdXNlIGNhbmNlbCgpIHRvIHJlamVjdCBvbiBicmFuY2hlcyAKLVBBU1Mg
UmVhZGFibGVTdHJlYW0gdGVlaW5nOiBlcnJvcmluZyBhIHRlZWQgc3RyZWFtIHNob3VsZCBwcm9w
ZXJseSBoYW5kbGUgY2FuY2VsZWQgYnJhbmNoZXMgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIHRlZWlu
ZzogY2xvc2luZyB0aGUgb3JpZ2luYWwgc2hvdWxkIGltbWVkaWF0ZWx5IGNsb3NlIHRoZSBicmFu
Y2hlcyAKLVBBU1MgUmVhZGFibGVTdHJlYW0gdGVlaW5nOiBlcnJvcmluZyB0aGUgb3JpZ2luYWwg
c2hvdWxkIGltbWVkaWF0ZWx5IGVycm9yIHRoZSBicmFuY2hlcyAKLVBBU1MgUmVhZGFibGVTdHJl
YW1UZWUgc2hvdWxkIG5vdCB1c2UgYSBtb2RpZmllZCBSZWFkYWJsZVN0cmVhbSBjb25zdHJ1Y3Rv
ciBmcm9tIHRoZSBnbG9iYWwgb2JqZWN0IAotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy90ZWUu
c2VydmljZXdvcmtlci5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvdGVlLnNlcnZpY2V3b3JrZXIu
aHR0cHMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjIyZmJlZjU3YjgxYjkw
NzVkNWUyYjk5YTlkNDRhMTE2YzAzNzU5My4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy90ZWUuc2VydmljZXdvcmtlci5odHRwcy5odG1s
CisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBj
aGFyc2V0PSJ1dGYtOCI+Ci08dGl0bGU+dGVlLmpzIHNlcnZpY2Ugd29ya2VyIHdyYXBwZXIgZmls
ZTwvdGl0bGU+Ci0KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3Nj
cmlwdD4KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3Nj
cmlwdD4KLTxzY3JpcHQgc3JjPSIvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL3Jlc291
cmNlcy90ZXN0LWhlbHBlcnMuc3ViLmpzIj48L3NjcmlwdD4KLQotPHNjcmlwdD4KLSd1c2Ugc3Ry
aWN0JzsKLXNlcnZpY2Vfd29ya2VyX3Rlc3QoJ3RlZS5qcycsICdTZXJ2aWNlIHdvcmtlciB0ZXN0
IHNldHVwJyk7Ci08L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3RlZS5zaGFyZWR3
b3JrZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvdGVlLnNoYXJlZHdvcmtlci1leHBlY3Rl
ZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA5ZDVkMjUwOWQ3ODQ3ZThjZDZm
ZTY2MDZhYTYwY2RkMzNhYTQ3NGUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
dHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvdGVlLnNoYXJlZHdvcmtlci1leHBlY3RlZC50eHQKKysr
IC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLUNPTlNPTEUgTUVTU0FHRTogUmVmZXJlbmNlRXJy
b3I6IENhbid0IGZpbmQgdmFyaWFibGU6IFNoYXJlZFdvcmtlcgotCi1IYXJuZXNzIEVycm9yIChG
QUlMKSwgbWVzc2FnZSA9IFJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBTaGFy
ZWRXb3JrZXIKLQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy90ZWUuc2hhcmVkd29ya2VyLmh0
bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
cmVhZGFibGUtc3RyZWFtcy90ZWUuc2hhcmVkd29ya2VyLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDYzODBjOWQ0ZmEzMmI4ZjQ3NzRlM2M4YTY1NjY4OTc2ZGY5ZWFhNDguLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMv
dGVlLnNoYXJlZHdvcmtlci5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotPCFE
T0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08dGl0bGU+dGVlLmpzIHNoYXJl
ZCB3b3JrZXIgd3JhcHBlciBmaWxlPC90aXRsZT4KLQotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMv
dGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhh
cm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotCi08c2NyaXB0PgotJ3VzZSBzdHJpY3QnOwotZmV0
Y2hfdGVzdHNfZnJvbV93b3JrZXIobmV3IFNoYXJlZFdvcmtlcigndGVlLmpzJykpOwotPC9zY3Jp
cHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy90ZW1wbGF0ZWQuYW55LWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFk
YWJsZS1zdHJlYW1zL3RlbXBsYXRlZC5hbnktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk0NGRm
N2U5ODNhZDUzNTJkMTU5NzdiYjUwMmRlMjVkMzI0YWRhM2EKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFi
bGUtc3RyZWFtcy90ZW1wbGF0ZWQuYW55LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDkwIEBACisK
K1BBU1MgUnVubmluZyB0ZW1wbGF0ZWRSU0VtcHR5IHdpdGggUmVhZGFibGVTdHJlYW0gKGVtcHR5
KSAKK1BBU1MgUmVhZGFibGVTdHJlYW0gKGVtcHR5KTogaW5zdGFuY2VzIGhhdmUgdGhlIGNvcnJl
Y3QgbWV0aG9kcyBhbmQgcHJvcGVydGllcyAKK0ZBSUwgUmVhZGFibGVTdHJlYW0gKGVtcHR5KTog
Y2FsbGluZyBnZXRSZWFkZXIgd2l0aCBpbnZhbGlkIGFyZ3VtZW50cyBzaG91bGQgdGhyb3cgYXBw
cm9wcmlhdGUgZXJyb3JzIGFzc2VydF90aHJvd3NfanM6IGVtcHR5IHN0cmluZyBtb2RlIHNob3Vs
ZCB0aHJvdyBmdW5jdGlvbiAiKCkgPT4gcnMuZ2V0UmVhZGVyKHsgbW9kZTogJycgfSkiIHRocmV3
IG9iamVjdCAiUmFuZ2VFcnJvcjogSW52YWxpZCBtb2RlIGlzIHNwZWNpZmllZCIgKCJSYW5nZUVy
cm9yIikgZXhwZWN0ZWQgaW5zdGFuY2Ugb2YgZnVuY3Rpb24gImZ1bmN0aW9uIFR5cGVFcnJvcigp
IHsKKyAgICBbbmF0aXZlIGNvZGVdCit9IiAoIlR5cGVFcnJvciIpCitQQVNTIFJ1bm5pbmcgdGVt
cGxhdGVkUlNFbXB0eVJlYWRlciB3aXRoIFJlYWRhYmxlU3RyZWFtIChlbXB0eSkgcmVhZGVyIAor
UEFTUyBSZWFkYWJsZVN0cmVhbSAoZW1wdHkpIHJlYWRlcjogaW5zdGFuY2VzIGhhdmUgdGhlIGNv
cnJlY3QgbWV0aG9kcyBhbmQgcHJvcGVydGllcyAKK1BBU1MgUmVhZGFibGVTdHJlYW0gKGVtcHR5
KSByZWFkZXI6IGxvY2tlZCBzaG91bGQgYmUgdHJ1ZSAKK1BBU1MgUmVhZGFibGVTdHJlYW0gKGVt
cHR5KSByZWFkZXI6IHJlYWQoKSBzaG91bGQgbmV2ZXIgc2V0dGxlIAorUEFTUyBSZWFkYWJsZVN0
cmVhbSAoZW1wdHkpIHJlYWRlcjogdHdvIHJlYWQoKXMgc2hvdWxkIGJvdGggbmV2ZXIgc2V0dGxl
IAorUEFTUyBSZWFkYWJsZVN0cmVhbSAoZW1wdHkpIHJlYWRlcjogcmVhZCgpIHNob3VsZCByZXR1
cm4gZGlzdGluY3QgcHJvbWlzZXMgZWFjaCB0aW1lIAorUEFTUyBSZWFkYWJsZVN0cmVhbSAoZW1w
dHkpIHJlYWRlcjogZ2V0UmVhZGVyKCkgYWdhaW4gb24gdGhlIHN0cmVhbSBzaG91bGQgZmFpbCAK
K1BBU1MgUmVhZGFibGVTdHJlYW0gKGVtcHR5KSByZWFkZXI6IHJlbGVhc2luZyB0aGUgbG9jayB3
aXRoIHBlbmRpbmcgcmVhZCByZXF1ZXN0cyBzaG91bGQgdGhyb3cgYnV0IHRoZSByZWFkIHJlcXVl
c3RzIHNob3VsZCBzdGF5IHBlbmRpbmcgCitQQVNTIFJlYWRhYmxlU3RyZWFtIChlbXB0eSkgcmVh
ZGVyOiByZWxlYXNpbmcgdGhlIGxvY2sgc2hvdWxkIGNhdXNlIGZ1cnRoZXIgcmVhZCgpIGNhbGxz
IHRvIHJlamVjdCB3aXRoIGEgVHlwZUVycm9yIAorUEFTUyBSZWFkYWJsZVN0cmVhbSAoZW1wdHkp
IHJlYWRlcjogcmVsZWFzaW5nIHRoZSBsb2NrIHNob3VsZCBjYXVzZSBjbG9zZWQgY2FsbHMgdG8g
cmVqZWN0IHdpdGggYSBUeXBlRXJyb3IgCitQQVNTIFJlYWRhYmxlU3RyZWFtIChlbXB0eSkgcmVh
ZGVyOiByZWxlYXNpbmcgdGhlIGxvY2sgc2hvdWxkIGNhdXNlIGxvY2tlZCB0byBiZWNvbWUgZmFs
c2UgCitQQVNTIFJlYWRhYmxlU3RyZWFtIChlbXB0eSkgcmVhZGVyOiBjYW5jZWxpbmcgdmlhIHRo
ZSByZWFkZXIgc2hvdWxkIGNhdXNlIHRoZSByZWFkZXIgdG8gYWN0IGNsb3NlZCAKK1BBU1MgUmVh
ZGFibGVTdHJlYW0gKGVtcHR5KSByZWFkZXI6IGNhbmNlbGluZyB2aWEgdGhlIHN0cmVhbSBzaG91
bGQgZmFpbCAKK1BBU1MgUnVubmluZyB0ZW1wbGF0ZWRSU0Nsb3NlZCB3aXRoIFJlYWRhYmxlU3Ry
ZWFtIChjbG9zZWQgdmlhIGNhbGwgaW4gc3RhcnQpIAorUEFTUyBSZWFkYWJsZVN0cmVhbSAoY2xv
c2VkIHZpYSBjYWxsIGluIHN0YXJ0KTogY2FuY2VsKCkgc2hvdWxkIHJldHVybiBhIGRpc3RpbmN0
IGZ1bGZpbGxlZCBwcm9taXNlIGVhY2ggdGltZSAKK1BBU1MgUmVhZGFibGVTdHJlYW0gKGNsb3Nl
ZCB2aWEgY2FsbCBpbiBzdGFydCk6IGxvY2tlZCBzaG91bGQgYmUgZmFsc2UgCitQQVNTIFJlYWRh
YmxlU3RyZWFtIChjbG9zZWQgdmlhIGNhbGwgaW4gc3RhcnQpOiBnZXRSZWFkZXIoKSBzaG91bGQg
YmUgT0sgCitQQVNTIFJlYWRhYmxlU3RyZWFtIChjbG9zZWQgdmlhIGNhbGwgaW4gc3RhcnQpOiBz
aG91bGQgYmUgYWJsZSB0byBhY3F1aXJlIG11bHRpcGxlIHJlYWRlcnMgaWYgdGhleSBhcmUgcmVs
ZWFzZWQgaW4gc3VjY2Vzc2lvbiAKK1BBU1MgUmVhZGFibGVTdHJlYW0gKGNsb3NlZCB2aWEgY2Fs
bCBpbiBzdGFydCk6IHNob3VsZCBub3QgYmUgYWJsZSB0byBhY3F1aXJlIGEgc2Vjb25kIHJlYWRl
ciBpZiB3ZSBkb24ndCByZWxlYXNlIHRoZSBmaXJzdCBvbmUgCitQQVNTIFJ1bm5pbmcgdGVtcGxh
dGVkUlNDbG9zZWRSZWFkZXIgd2l0aCBSZWFkYWJsZVN0cmVhbSByZWFkZXIgKGNsb3NlZCBiZWZv
cmUgZ2V0dGluZyByZWFkZXIpIAorUEFTUyBSZWFkYWJsZVN0cmVhbSByZWFkZXIgKGNsb3NlZCBi
ZWZvcmUgZ2V0dGluZyByZWFkZXIpOiByZWFkKCkgc2hvdWxkIGZ1bGZpbGwgd2l0aCB7IHZhbHVl
OiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSAKK1BBU1MgUmVhZGFibGVTdHJlYW0gcmVhZGVyIChj
bG9zZWQgYmVmb3JlIGdldHRpbmcgcmVhZGVyKTogcmVhZCgpIG11bHRpcGxlIHRpbWVzIHNob3Vs
ZCBmdWxmaWxsIHdpdGggeyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0gCitQQVNTIFJl
YWRhYmxlU3RyZWFtIHJlYWRlciAoY2xvc2VkIGJlZm9yZSBnZXR0aW5nIHJlYWRlcik6IHJlYWQo
KSBzaG91bGQgd29yayB3aGVuIHVzZWQgd2l0aGluIGFub3RoZXIgcmVhZCgpIGZ1bGZpbGwgY2Fs
bGJhY2sgCitQQVNTIFJlYWRhYmxlU3RyZWFtIHJlYWRlciAoY2xvc2VkIGJlZm9yZSBnZXR0aW5n
IHJlYWRlcik6IGNsb3NlZCBzaG91bGQgZnVsZmlsbCB3aXRoIHVuZGVmaW5lZCAKK1BBU1MgUmVh
ZGFibGVTdHJlYW0gcmVhZGVyIChjbG9zZWQgYmVmb3JlIGdldHRpbmcgcmVhZGVyKTogcmVsZWFz
aW5nIHRoZSBsb2NrIHNob3VsZCBjYXVzZSBjbG9zZWQgdG8gcmVqZWN0IGFuZCBjaGFuZ2UgaWRl
bnRpdHkgCitQQVNTIFJlYWRhYmxlU3RyZWFtIHJlYWRlciAoY2xvc2VkIGJlZm9yZSBnZXR0aW5n
IHJlYWRlcik6IGNhbmNlbCgpIHNob3VsZCByZXR1cm4gYSBkaXN0aW5jdCBmdWxmaWxsZWQgcHJv
bWlzZSBlYWNoIHRpbWUgCitQQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNDbG9zZWRSZWFkZXIgd2l0
aCBSZWFkYWJsZVN0cmVhbSByZWFkZXIgKGNsb3NlZCBhZnRlciBnZXR0aW5nIHJlYWRlcikgCitQ
QVNTIFJlYWRhYmxlU3RyZWFtIHJlYWRlciAoY2xvc2VkIGFmdGVyIGdldHRpbmcgcmVhZGVyKTog
cmVhZCgpIHNob3VsZCBmdWxmaWxsIHdpdGggeyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVl
IH0gCitQQVNTIFJlYWRhYmxlU3RyZWFtIHJlYWRlciAoY2xvc2VkIGFmdGVyIGdldHRpbmcgcmVh
ZGVyKTogcmVhZCgpIG11bHRpcGxlIHRpbWVzIHNob3VsZCBmdWxmaWxsIHdpdGggeyB2YWx1ZTog
dW5kZWZpbmVkLCBkb25lOiB0cnVlIH0gCitQQVNTIFJlYWRhYmxlU3RyZWFtIHJlYWRlciAoY2xv
c2VkIGFmdGVyIGdldHRpbmcgcmVhZGVyKTogcmVhZCgpIHNob3VsZCB3b3JrIHdoZW4gdXNlZCB3
aXRoaW4gYW5vdGhlciByZWFkKCkgZnVsZmlsbCBjYWxsYmFjayAKK1BBU1MgUmVhZGFibGVTdHJl
YW0gcmVhZGVyIChjbG9zZWQgYWZ0ZXIgZ2V0dGluZyByZWFkZXIpOiBjbG9zZWQgc2hvdWxkIGZ1
bGZpbGwgd2l0aCB1bmRlZmluZWQgCitQQVNTIFJlYWRhYmxlU3RyZWFtIHJlYWRlciAoY2xvc2Vk
IGFmdGVyIGdldHRpbmcgcmVhZGVyKTogcmVsZWFzaW5nIHRoZSBsb2NrIHNob3VsZCBjYXVzZSBj
bG9zZWQgdG8gcmVqZWN0IGFuZCBjaGFuZ2UgaWRlbnRpdHkgCitQQVNTIFJlYWRhYmxlU3RyZWFt
IHJlYWRlciAoY2xvc2VkIGFmdGVyIGdldHRpbmcgcmVhZGVyKTogY2FuY2VsKCkgc2hvdWxkIHJl
dHVybiBhIGRpc3RpbmN0IGZ1bGZpbGxlZCBwcm9taXNlIGVhY2ggdGltZSAKK1BBU1MgUnVubmlu
ZyB0ZW1wbGF0ZWRSU0Nsb3NlZCB3aXRoIFJlYWRhYmxlU3RyZWFtIChjbG9zZWQgdmlhIGNhbmNl
bCkgCitQQVNTIFJlYWRhYmxlU3RyZWFtIChjbG9zZWQgdmlhIGNhbmNlbCk6IGNhbmNlbCgpIHNo
b3VsZCByZXR1cm4gYSBkaXN0aW5jdCBmdWxmaWxsZWQgcHJvbWlzZSBlYWNoIHRpbWUgCitQQVNT
IFJlYWRhYmxlU3RyZWFtIChjbG9zZWQgdmlhIGNhbmNlbCk6IGxvY2tlZCBzaG91bGQgYmUgZmFs
c2UgCitQQVNTIFJlYWRhYmxlU3RyZWFtIChjbG9zZWQgdmlhIGNhbmNlbCk6IGdldFJlYWRlcigp
IHNob3VsZCBiZSBPSyAKK1BBU1MgUmVhZGFibGVTdHJlYW0gKGNsb3NlZCB2aWEgY2FuY2VsKTog
c2hvdWxkIGJlIGFibGUgdG8gYWNxdWlyZSBtdWx0aXBsZSByZWFkZXJzIGlmIHRoZXkgYXJlIHJl
bGVhc2VkIGluIHN1Y2Nlc3Npb24gCitQQVNTIFJlYWRhYmxlU3RyZWFtIChjbG9zZWQgdmlhIGNh
bmNlbCk6IHNob3VsZCBub3QgYmUgYWJsZSB0byBhY3F1aXJlIGEgc2Vjb25kIHJlYWRlciBpZiB3
ZSBkb24ndCByZWxlYXNlIHRoZSBmaXJzdCBvbmUgCitQQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlND
bG9zZWRSZWFkZXIgd2l0aCBSZWFkYWJsZVN0cmVhbSByZWFkZXIgKGNsb3NlZCB2aWEgY2FuY2Vs
IGFmdGVyIGdldHRpbmcgcmVhZGVyKSAKK1BBU1MgUmVhZGFibGVTdHJlYW0gcmVhZGVyIChjbG9z
ZWQgdmlhIGNhbmNlbCBhZnRlciBnZXR0aW5nIHJlYWRlcik6IHJlYWQoKSBzaG91bGQgZnVsZmls
bCB3aXRoIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9IAorUEFTUyBSZWFkYWJsZVN0
cmVhbSByZWFkZXIgKGNsb3NlZCB2aWEgY2FuY2VsIGFmdGVyIGdldHRpbmcgcmVhZGVyKTogcmVh
ZCgpIG11bHRpcGxlIHRpbWVzIHNob3VsZCBmdWxmaWxsIHdpdGggeyB2YWx1ZTogdW5kZWZpbmVk
LCBkb25lOiB0cnVlIH0gCitQQVNTIFJlYWRhYmxlU3RyZWFtIHJlYWRlciAoY2xvc2VkIHZpYSBj
YW5jZWwgYWZ0ZXIgZ2V0dGluZyByZWFkZXIpOiByZWFkKCkgc2hvdWxkIHdvcmsgd2hlbiB1c2Vk
IHdpdGhpbiBhbm90aGVyIHJlYWQoKSBmdWxmaWxsIGNhbGxiYWNrIAorUEFTUyBSZWFkYWJsZVN0
cmVhbSByZWFkZXIgKGNsb3NlZCB2aWEgY2FuY2VsIGFmdGVyIGdldHRpbmcgcmVhZGVyKTogY2xv
c2VkIHNob3VsZCBmdWxmaWxsIHdpdGggdW5kZWZpbmVkIAorUEFTUyBSZWFkYWJsZVN0cmVhbSBy
ZWFkZXIgKGNsb3NlZCB2aWEgY2FuY2VsIGFmdGVyIGdldHRpbmcgcmVhZGVyKTogcmVsZWFzaW5n
IHRoZSBsb2NrIHNob3VsZCBjYXVzZSBjbG9zZWQgdG8gcmVqZWN0IGFuZCBjaGFuZ2UgaWRlbnRp
dHkgCitQQVNTIFJlYWRhYmxlU3RyZWFtIHJlYWRlciAoY2xvc2VkIHZpYSBjYW5jZWwgYWZ0ZXIg
Z2V0dGluZyByZWFkZXIpOiBjYW5jZWwoKSBzaG91bGQgcmV0dXJuIGEgZGlzdGluY3QgZnVsZmls
bGVkIHByb21pc2UgZWFjaCB0aW1lIAorUEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTRXJyb3JlZCB3
aXRoIFJlYWRhYmxlU3RyZWFtIChlcnJvcmVkIHZpYSBjYWxsIGluIHN0YXJ0KSAKK1BBU1MgUmVh
ZGFibGVTdHJlYW0gKGVycm9yZWQgdmlhIGNhbGwgaW4gc3RhcnQpOiBnZXRSZWFkZXIoKSBzaG91
bGQgcmV0dXJuIGEgcmVhZGVyIHRoYXQgYWN0cyBlcnJvcmVkIAorUEFTUyBSZWFkYWJsZVN0cmVh
bSAoZXJyb3JlZCB2aWEgY2FsbCBpbiBzdGFydCk6IHJlYWQoKSB0d2ljZSBzaG91bGQgZ2l2ZSB0
aGUgZXJyb3IgZWFjaCB0aW1lIAorUEFTUyBSZWFkYWJsZVN0cmVhbSAoZXJyb3JlZCB2aWEgY2Fs
bCBpbiBzdGFydCk6IGxvY2tlZCBzaG91bGQgYmUgZmFsc2UgCitQQVNTIFJ1bm5pbmcgdGVtcGxh
dGVkUlNFcnJvcmVkU3luY09ubHkgd2l0aCBSZWFkYWJsZVN0cmVhbSAoZXJyb3JlZCB2aWEgY2Fs
bCBpbiBzdGFydCkgCitQQVNTIFJlYWRhYmxlU3RyZWFtIChlcnJvcmVkIHZpYSBjYWxsIGluIHN0
YXJ0KTogc2hvdWxkIGJlIGFibGUgdG8gb2J0YWluIGEgc2Vjb25kIHJlYWRlciwgd2l0aCB0aGUg
Y29ycmVjdCBjbG9zZWQgcHJvbWlzZSAKK1BBU1MgUmVhZGFibGVTdHJlYW0gKGVycm9yZWQgdmlh
IGNhbGwgaW4gc3RhcnQpOiBzaG91bGQgbm90IGJlIGFibGUgdG8gb2J0YWluIGFkZGl0aW9uYWwg
cmVhZGVycyBpZiB3ZSBkb24ndCByZWxlYXNlIHRoZSBmaXJzdCBsb2NrIAorUEFTUyBSZWFkYWJs
ZVN0cmVhbSAoZXJyb3JlZCB2aWEgY2FsbCBpbiBzdGFydCk6IGNhbmNlbCgpIHNob3VsZCByZXR1
cm4gYSBkaXN0aW5jdCByZWplY3RlZCBwcm9taXNlIGVhY2ggdGltZSAKK1BBU1MgUmVhZGFibGVT
dHJlYW0gKGVycm9yZWQgdmlhIGNhbGwgaW4gc3RhcnQpOiByZWFkZXIgY2FuY2VsKCkgc2hvdWxk
IHJldHVybiBhIGRpc3RpbmN0IHJlamVjdGVkIHByb21pc2UgZWFjaCB0aW1lIAorUEFTUyBSdW5u
aW5nIHRlbXBsYXRlZFJTRXJyb3JlZCB3aXRoIFJlYWRhYmxlU3RyZWFtIChlcnJvcmVkIHZpYSBy
ZXR1cm5pbmcgYSByZWplY3RlZCBwcm9taXNlIGluIHN0YXJ0KSAKK1BBU1MgUmVhZGFibGVTdHJl
YW0gKGVycm9yZWQgdmlhIHJldHVybmluZyBhIHJlamVjdGVkIHByb21pc2UgaW4gc3RhcnQpOiBn
ZXRSZWFkZXIoKSBzaG91bGQgcmV0dXJuIGEgcmVhZGVyIHRoYXQgYWN0cyBlcnJvcmVkIAorUEFT
UyBSZWFkYWJsZVN0cmVhbSAoZXJyb3JlZCB2aWEgcmV0dXJuaW5nIGEgcmVqZWN0ZWQgcHJvbWlz
ZSBpbiBzdGFydCk6IHJlYWQoKSB0d2ljZSBzaG91bGQgZ2l2ZSB0aGUgZXJyb3IgZWFjaCB0aW1l
IAorUEFTUyBSZWFkYWJsZVN0cmVhbSAoZXJyb3JlZCB2aWEgcmV0dXJuaW5nIGEgcmVqZWN0ZWQg
cHJvbWlzZSBpbiBzdGFydCk6IGxvY2tlZCBzaG91bGQgYmUgZmFsc2UgCitQQVNTIFJ1bm5pbmcg
dGVtcGxhdGVkUlNFcnJvcmVkUmVhZGVyIHdpdGggUmVhZGFibGVTdHJlYW0gKGVycm9yZWQgdmlh
IHJldHVybmluZyBhIHJlamVjdGVkIHByb21pc2UgaW4gc3RhcnQpIHJlYWRlciAKK1BBU1MgUmVh
ZGFibGVTdHJlYW0gKGVycm9yZWQgdmlhIHJldHVybmluZyBhIHJlamVjdGVkIHByb21pc2UgaW4g
c3RhcnQpIHJlYWRlcjogY2xvc2VkIHNob3VsZCByZWplY3Qgd2l0aCB0aGUgZXJyb3IgCitQQVNT
IFJlYWRhYmxlU3RyZWFtIChlcnJvcmVkIHZpYSByZXR1cm5pbmcgYSByZWplY3RlZCBwcm9taXNl
IGluIHN0YXJ0KSByZWFkZXI6IHJlbGVhc2luZyB0aGUgbG9jayBzaG91bGQgY2F1c2UgY2xvc2Vk
IHRvIHJlamVjdCBhbmQgY2hhbmdlIGlkZW50aXR5IAorUEFTUyBSZWFkYWJsZVN0cmVhbSAoZXJy
b3JlZCB2aWEgcmV0dXJuaW5nIGEgcmVqZWN0ZWQgcHJvbWlzZSBpbiBzdGFydCkgcmVhZGVyOiBy
ZWFkKCkgc2hvdWxkIHJlamVjdCB3aXRoIHRoZSBlcnJvciAKK1BBU1MgUnVubmluZyB0ZW1wbGF0
ZWRSU0Vycm9yZWRSZWFkZXIgd2l0aCBSZWFkYWJsZVN0cmVhbSByZWFkZXIgKGVycm9yZWQgYmVm
b3JlIGdldHRpbmcgcmVhZGVyKSAKK1BBU1MgUmVhZGFibGVTdHJlYW0gcmVhZGVyIChlcnJvcmVk
IGJlZm9yZSBnZXR0aW5nIHJlYWRlcik6IGNsb3NlZCBzaG91bGQgcmVqZWN0IHdpdGggdGhlIGVy
cm9yIAorUEFTUyBSZWFkYWJsZVN0cmVhbSByZWFkZXIgKGVycm9yZWQgYmVmb3JlIGdldHRpbmcg
cmVhZGVyKTogcmVsZWFzaW5nIHRoZSBsb2NrIHNob3VsZCBjYXVzZSBjbG9zZWQgdG8gcmVqZWN0
IGFuZCBjaGFuZ2UgaWRlbnRpdHkgCitQQVNTIFJlYWRhYmxlU3RyZWFtIHJlYWRlciAoZXJyb3Jl
ZCBiZWZvcmUgZ2V0dGluZyByZWFkZXIpOiByZWFkKCkgc2hvdWxkIHJlamVjdCB3aXRoIHRoZSBl
cnJvciAKK1BBU1MgUnVubmluZyB0ZW1wbGF0ZWRSU0Vycm9yZWRSZWFkZXIgd2l0aCBSZWFkYWJs
ZVN0cmVhbSByZWFkZXIgKGVycm9yZWQgYWZ0ZXIgZ2V0dGluZyByZWFkZXIpIAorUEFTUyBSZWFk
YWJsZVN0cmVhbSByZWFkZXIgKGVycm9yZWQgYWZ0ZXIgZ2V0dGluZyByZWFkZXIpOiBjbG9zZWQg
c2hvdWxkIHJlamVjdCB3aXRoIHRoZSBlcnJvciAKK1BBU1MgUmVhZGFibGVTdHJlYW0gcmVhZGVy
IChlcnJvcmVkIGFmdGVyIGdldHRpbmcgcmVhZGVyKTogcmVsZWFzaW5nIHRoZSBsb2NrIHNob3Vs
ZCBjYXVzZSBjbG9zZWQgdG8gcmVqZWN0IGFuZCBjaGFuZ2UgaWRlbnRpdHkgCitQQVNTIFJlYWRh
YmxlU3RyZWFtIHJlYWRlciAoZXJyb3JlZCBhZnRlciBnZXR0aW5nIHJlYWRlcik6IHJlYWQoKSBz
aG91bGQgcmVqZWN0IHdpdGggdGhlIGVycm9yIAorUEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTVHdv
Q2h1bmtzT3BlblJlYWRlciB3aXRoIFJlYWRhYmxlU3RyZWFtICh0d28gY2h1bmtzIGVucXVldWVk
LCBzdGlsbCBvcGVuKSByZWFkZXIgCitQQVNTIFJlYWRhYmxlU3RyZWFtICh0d28gY2h1bmtzIGVu
cXVldWVkLCBzdGlsbCBvcGVuKSByZWFkZXI6IGNhbGxpbmcgcmVhZCgpIHR3aWNlIHdpdGhvdXQg
d2FpdGluZyB3aWxsIGV2ZW50dWFsbHkgZ2l2ZSBib3RoIGNodW5rcyAoc2VxdWVudGlhbCkgCitQ
QVNTIFJlYWRhYmxlU3RyZWFtICh0d28gY2h1bmtzIGVucXVldWVkLCBzdGlsbCBvcGVuKSByZWFk
ZXI6IGNhbGxpbmcgcmVhZCgpIHR3aWNlIHdpdGhvdXQgd2FpdGluZyB3aWxsIGV2ZW50dWFsbHkg
Z2l2ZSBib3RoIGNodW5rcyAobmVzdGVkKSAKK1BBU1MgUmVhZGFibGVTdHJlYW0gKHR3byBjaHVu
a3MgZW5xdWV1ZWQsIHN0aWxsIG9wZW4pIHJlYWRlcjogcmVhZCgpIHNob3VsZCByZXR1cm4gZGlz
dGluY3QgcHJvbWlzZXMgZWFjaCB0aW1lIAorUEFTUyBSZWFkYWJsZVN0cmVhbSAodHdvIGNodW5r
cyBlbnF1ZXVlZCwgc3RpbGwgb3BlbikgcmVhZGVyOiBjYW5jZWwoKSBhZnRlciBhIHJlYWQoKSBz
aG91bGQgc3RpbGwgZ2l2ZSB0aGF0IHNpbmdsZSByZWFkIHJlc3VsdCAKK1BBU1MgUnVubmluZyB0
ZW1wbGF0ZWRSU1R3b0NodW5rc0Nsb3NlZFJlYWRlciB3aXRoIFJlYWRhYmxlU3RyZWFtICh0d28g
Y2h1bmtzIGVucXVldWVkLCB0aGVuIGNsb3NlZCkgcmVhZGVyIAorUEFTUyBSZWFkYWJsZVN0cmVh
bSAodHdvIGNodW5rcyBlbnF1ZXVlZCwgdGhlbiBjbG9zZWQpIHJlYWRlcjogdGhpcmQgcmVhZCgp
LCB3aXRob3V0IHdhaXRpbmcsIHNob3VsZCBnaXZlIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTog
dHJ1ZSB9IChzZXF1ZW50aWFsKSAKK1BBU1MgUmVhZGFibGVTdHJlYW0gKHR3byBjaHVua3MgZW5x
dWV1ZWQsIHRoZW4gY2xvc2VkKSByZWFkZXI6IHRoaXJkIHJlYWQoKSwgd2l0aG91dCB3YWl0aW5n
LCBzaG91bGQgZ2l2ZSB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSAobmVzdGVkKSAK
K1BBU1MgUmVhZGFibGVTdHJlYW0gKHR3byBjaHVua3MgZW5xdWV1ZWQsIHRoZW4gY2xvc2VkKSBy
ZWFkZXI6IGRyYWluaW5nIHRoZSBzdHJlYW0gdmlhIHJlYWQoKSBzaG91bGQgY2F1c2UgdGhlIHJl
YWRlciBjbG9zZWQgcHJvbWlzZSB0byBmdWxmaWxsLCBidXQgbG9ja2VkIHN0YXlzIHRydWUgCitQ
QVNTIFJlYWRhYmxlU3RyZWFtICh0d28gY2h1bmtzIGVucXVldWVkLCB0aGVuIGNsb3NlZCkgcmVh
ZGVyOiByZWxlYXNpbmcgdGhlIGxvY2sgYWZ0ZXIgdGhlIHN0cmVhbSBpcyBjbG9zZWQgc2hvdWxk
IGNhdXNlIGxvY2tlZCB0byBiZWNvbWUgZmFsc2UgCitQQVNTIFJlYWRhYmxlU3RyZWFtICh0d28g
Y2h1bmtzIGVucXVldWVkLCB0aGVuIGNsb3NlZCkgcmVhZGVyOiByZWxlYXNpbmcgdGhlIGxvY2sg
c2hvdWxkIGNhdXNlIGZ1cnRoZXIgcmVhZCgpIGNhbGxzIHRvIHJlamVjdCB3aXRoIGEgVHlwZUVy
cm9yIAorUEFTUyBSZWFkYWJsZVN0cmVhbSAodHdvIGNodW5rcyBlbnF1ZXVlZCwgdGhlbiBjbG9z
ZWQpIHJlYWRlcjogcmVhZGVyJ3MgY2xvc2VkIHByb3BlcnR5IGFsd2F5cyByZXR1cm5zIHRoZSBz
YW1lIHByb21pc2UgCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3RlbXBsYXRlZC5hbnkuaHRt
bCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9y
ZWFkYWJsZS1zdHJlYW1zL3RlbXBsYXRlZC5hbnkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMzgyOTEzNTI4
ZTY5M2IzYTVkNTZjNjYwYTQ1MDYwOTgwYjU0OGMzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0
cmVhbXMvdGVtcGxhdGVkLmFueS5odG1sCkBAIC0wLDAgKzEgQEAKKzwhLS0gVGhpcyBmaWxlIGlz
IHJlcXVpcmVkIGZvciBXZWJLaXQgdGVzdCBpbmZyYXN0cnVjdHVyZSB0byBydW4gdGhlIHRlbXBs
YXRlZCB0ZXN0IC0tPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJs
ZS1zdHJlYW1zL3RlbXBsYXRlZC5hbnkuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy90ZW1wbGF0ZWQuYW55Lmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkNTI0ZTY5ZmVlMTllODJhNTYwN2MxMjM2ODk1NTg2NzQwMTdkMjAKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy90ZW1wbGF0ZWQuYW55LmpzCkBAIC0wLDAgKzEs
MTQzIEBACisvLyBNRVRBOiBnbG9iYWw9d2luZG93LHdvcmtlcixqc3NoZWxsCisvLyBNRVRBOiBz
Y3JpcHQ9Li4vcmVzb3VyY2VzL3Rlc3QtdXRpbHMuanMKKy8vIE1FVEE6IHNjcmlwdD0uLi9yZXNv
dXJjZXMvcnMtdGVzdC10ZW1wbGF0ZXMuanMKKyd1c2Ugc3RyaWN0JzsKKworLy8gUnVuIHRoZSBy
ZWFkYWJsZSBzdHJlYW0gdGVzdCB0ZW1wbGF0ZXMgYWdhaW5zdCByZWFkYWJsZSBzdHJlYW1zIGNy
ZWF0ZWQgZGlyZWN0bHkgdXNpbmcgdGhlIGNvbnN0cnVjdG9yCisKK2NvbnN0IHRoZUVycm9yID0g
eyBuYW1lOiAnYm9vIScgfTsKK2NvbnN0IGNodW5rcyA9IFsnYScsICdiJ107CisKK3RlbXBsYXRl
ZFJTRW1wdHkoJ1JlYWRhYmxlU3RyZWFtIChlbXB0eSknLCAoKSA9PiB7CisgIHJldHVybiBuZXcg
UmVhZGFibGVTdHJlYW0oKTsKK30pOworCit0ZW1wbGF0ZWRSU0VtcHR5UmVhZGVyKCdSZWFkYWJs
ZVN0cmVhbSAoZW1wdHkpIHJlYWRlcicsICgpID0+IHsKKyAgcmV0dXJuIHN0cmVhbUFuZERlZmF1
bHRSZWFkZXIobmV3IFJlYWRhYmxlU3RyZWFtKCkpOworfSk7CisKK3RlbXBsYXRlZFJTQ2xvc2Vk
KCdSZWFkYWJsZVN0cmVhbSAoY2xvc2VkIHZpYSBjYWxsIGluIHN0YXJ0KScsICgpID0+IHsKKyAg
cmV0dXJuIG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgYy5jbG9z
ZSgpOworICAgIH0KKyAgfSk7Cit9KTsKKwordGVtcGxhdGVkUlNDbG9zZWRSZWFkZXIoJ1JlYWRh
YmxlU3RyZWFtIHJlYWRlciAoY2xvc2VkIGJlZm9yZSBnZXR0aW5nIHJlYWRlciknLCAoKSA9PiB7
CisgIGxldCBjb250cm9sbGVyOworICBjb25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0o
eworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGNvbnRyb2xsZXIgPSBjOworICAgIH0KKyAgfSk7Cisg
IGNvbnRyb2xsZXIuY2xvc2UoKTsKKyAgY29uc3QgcmVzdWx0ID0gc3RyZWFtQW5kRGVmYXVsdFJl
YWRlcihzdHJlYW0pOworICByZXR1cm4gcmVzdWx0OworfSk7CisKK3RlbXBsYXRlZFJTQ2xvc2Vk
UmVhZGVyKCdSZWFkYWJsZVN0cmVhbSByZWFkZXIgKGNsb3NlZCBhZnRlciBnZXR0aW5nIHJlYWRl
ciknLCAoKSA9PiB7CisgIGxldCBjb250cm9sbGVyOworICBjb25zdCBzdHJlYW0gPSBuZXcgUmVh
ZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGNvbnRyb2xsZXIgPSBjOworICAg
IH0KKyAgfSk7CisgIGNvbnN0IHJlc3VsdCA9IHN0cmVhbUFuZERlZmF1bHRSZWFkZXIoc3RyZWFt
KTsKKyAgY29udHJvbGxlci5jbG9zZSgpOworICByZXR1cm4gcmVzdWx0OworfSk7CisKK3RlbXBs
YXRlZFJTQ2xvc2VkKCdSZWFkYWJsZVN0cmVhbSAoY2xvc2VkIHZpYSBjYW5jZWwpJywgKCkgPT4g
eworICBjb25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oKTsKKyAgc3RyZWFtLmNhbmNl
bCgpOworICByZXR1cm4gc3RyZWFtOworfSk7CisKK3RlbXBsYXRlZFJTQ2xvc2VkUmVhZGVyKCdS
ZWFkYWJsZVN0cmVhbSByZWFkZXIgKGNsb3NlZCB2aWEgY2FuY2VsIGFmdGVyIGdldHRpbmcgcmVh
ZGVyKScsICgpID0+IHsKKyAgY29uc3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKCk7Cisg
IGNvbnN0IHJlc3VsdCA9IHN0cmVhbUFuZERlZmF1bHRSZWFkZXIoc3RyZWFtKTsKKyAgcmVzdWx0
LnJlYWRlci5jYW5jZWwoKTsKKyAgcmV0dXJuIHJlc3VsdDsKK30pOworCit0ZW1wbGF0ZWRSU0Vy
cm9yZWQoJ1JlYWRhYmxlU3RyZWFtIChlcnJvcmVkIHZpYSBjYWxsIGluIHN0YXJ0KScsICgpID0+
IHsKKyAgcmV0dXJuIG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAg
Yy5lcnJvcih0aGVFcnJvcik7CisgICAgfQorICB9KTsKK30sIHRoZUVycm9yKTsKKwordGVtcGxh
dGVkUlNFcnJvcmVkU3luY09ubHkoJ1JlYWRhYmxlU3RyZWFtIChlcnJvcmVkIHZpYSBjYWxsIGlu
IHN0YXJ0KScsICgpID0+IHsKKyAgcmV0dXJuIG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3Rh
cnQoYykgeworICAgICAgYy5lcnJvcih0aGVFcnJvcik7CisgICAgfQorICB9KTsKK30sIHRoZUVy
cm9yKTsKKwordGVtcGxhdGVkUlNFcnJvcmVkKCdSZWFkYWJsZVN0cmVhbSAoZXJyb3JlZCB2aWEg
cmV0dXJuaW5nIGEgcmVqZWN0ZWQgcHJvbWlzZSBpbiBzdGFydCknLCAoKSA9PiB7CisgIHJldHVy
biBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KCkgeworICAgICAgcmV0dXJuIFByb21p
c2UucmVqZWN0KHRoZUVycm9yKTsKKyAgICB9CisgIH0pOworfSwgdGhlRXJyb3IpOworCit0ZW1w
bGF0ZWRSU0Vycm9yZWRSZWFkZXIoJ1JlYWRhYmxlU3RyZWFtIChlcnJvcmVkIHZpYSByZXR1cm5p
bmcgYSByZWplY3RlZCBwcm9taXNlIGluIHN0YXJ0KSByZWFkZXInLCAoKSA9PiB7CisgIHJldHVy
biBzdHJlYW1BbmREZWZhdWx0UmVhZGVyKG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQo
KSB7CisgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QodGhlRXJyb3IpOworICAgIH0KKyAgfSkp
OworfSwgdGhlRXJyb3IpOworCit0ZW1wbGF0ZWRSU0Vycm9yZWRSZWFkZXIoJ1JlYWRhYmxlU3Ry
ZWFtIHJlYWRlciAoZXJyb3JlZCBiZWZvcmUgZ2V0dGluZyByZWFkZXIpJywgKCkgPT4geworICBs
ZXQgY29udHJvbGxlcjsKKyAgY29uc3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAg
ICBzdGFydChjKSB7CisgICAgICBjb250cm9sbGVyID0gYzsKKyAgICB9CisgIH0pOworICBjb250
cm9sbGVyLmVycm9yKHRoZUVycm9yKTsKKyAgcmV0dXJuIHN0cmVhbUFuZERlZmF1bHRSZWFkZXIo
c3RyZWFtKTsKK30sIHRoZUVycm9yKTsKKwordGVtcGxhdGVkUlNFcnJvcmVkUmVhZGVyKCdSZWFk
YWJsZVN0cmVhbSByZWFkZXIgKGVycm9yZWQgYWZ0ZXIgZ2V0dGluZyByZWFkZXIpJywgKCkgPT4g
eworICBsZXQgY29udHJvbGxlcjsKKyAgY29uc3QgcmVzdWx0ID0gc3RyZWFtQW5kRGVmYXVsdFJl
YWRlcihuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGNvbnRyb2xs
ZXIgPSBjOworICAgIH0KKyAgfSkpOworICBjb250cm9sbGVyLmVycm9yKHRoZUVycm9yKTsKKyAg
cmV0dXJuIHJlc3VsdDsKK30sIHRoZUVycm9yKTsKKwordGVtcGxhdGVkUlNUd29DaHVua3NPcGVu
UmVhZGVyKCdSZWFkYWJsZVN0cmVhbSAodHdvIGNodW5rcyBlbnF1ZXVlZCwgc3RpbGwgb3Blbikg
cmVhZGVyJywgKCkgPT4geworICByZXR1cm4gc3RyZWFtQW5kRGVmYXVsdFJlYWRlcihuZXcgUmVh
ZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGMuZW5xdWV1ZShjaHVua3NbMF0p
OworICAgICAgYy5lbnF1ZXVlKGNodW5rc1sxXSk7CisgICAgfQorICB9KSk7Cit9LCBjaHVua3Mp
OworCit0ZW1wbGF0ZWRSU1R3b0NodW5rc0Nsb3NlZFJlYWRlcignUmVhZGFibGVTdHJlYW0gKHR3
byBjaHVua3MgZW5xdWV1ZWQsIHRoZW4gY2xvc2VkKSByZWFkZXInLCAoKSA9PiB7CisgIGxldCBk
b0Nsb3NlOworICBjb25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0
KGMpIHsKKyAgICAgIGMuZW5xdWV1ZShjaHVua3NbMF0pOworICAgICAgYy5lbnF1ZXVlKGNodW5r
c1sxXSk7CisgICAgICBkb0Nsb3NlID0gYy5jbG9zZS5iaW5kKGMpOworICAgIH0KKyAgfSk7Cisg
IGNvbnN0IHJlc3VsdCA9IHN0cmVhbUFuZERlZmF1bHRSZWFkZXIoc3RyZWFtKTsKKyAgZG9DbG9z
ZSgpOworICByZXR1cm4gcmVzdWx0OworfSwgY2h1bmtzKTsKKworZnVuY3Rpb24gc3RyZWFtQW5k
RGVmYXVsdFJlYWRlcihzdHJlYW0pIHsKKyAgcmV0dXJuIHsgc3RyZWFtLCByZWFkZXI6IHN0cmVh
bS5nZXRSZWFkZXIoKSB9OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvdGVtcGxhdGVkLmFu
eS53b3JrZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvdGVtcGxhdGVkLmFueS53b3JrZXIt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk0NGRmN2U5ODNhZDUzNTJkMTU5NzdiYjUwMmRlMjVk
MzI0YWRhM2EKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy90ZW1wbGF0ZWQuYW55Lndv
cmtlci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw5MCBAQAorCitQQVNTIFJ1bm5pbmcgdGVtcGxh
dGVkUlNFbXB0eSB3aXRoIFJlYWRhYmxlU3RyZWFtIChlbXB0eSkgCitQQVNTIFJlYWRhYmxlU3Ry
ZWFtIChlbXB0eSk6IGluc3RhbmNlcyBoYXZlIHRoZSBjb3JyZWN0IG1ldGhvZHMgYW5kIHByb3Bl
cnRpZXMgCitGQUlMIFJlYWRhYmxlU3RyZWFtIChlbXB0eSk6IGNhbGxpbmcgZ2V0UmVhZGVyIHdp
dGggaW52YWxpZCBhcmd1bWVudHMgc2hvdWxkIHRocm93IGFwcHJvcHJpYXRlIGVycm9ycyBhc3Nl
cnRfdGhyb3dzX2pzOiBlbXB0eSBzdHJpbmcgbW9kZSBzaG91bGQgdGhyb3cgZnVuY3Rpb24gIigp
ID0+IHJzLmdldFJlYWRlcih7IG1vZGU6ICcnIH0pIiB0aHJldyBvYmplY3QgIlJhbmdlRXJyb3I6
IEludmFsaWQgbW9kZSBpcyBzcGVjaWZpZWQiICgiUmFuZ2VFcnJvciIpIGV4cGVjdGVkIGluc3Rh
bmNlIG9mIGZ1bmN0aW9uICJmdW5jdGlvbiBUeXBlRXJyb3IoKSB7CisgICAgW25hdGl2ZSBjb2Rl
XQorfSIgKCJUeXBlRXJyb3IiKQorUEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTRW1wdHlSZWFkZXIg
d2l0aCBSZWFkYWJsZVN0cmVhbSAoZW1wdHkpIHJlYWRlciAKK1BBU1MgUmVhZGFibGVTdHJlYW0g
KGVtcHR5KSByZWFkZXI6IGluc3RhbmNlcyBoYXZlIHRoZSBjb3JyZWN0IG1ldGhvZHMgYW5kIHBy
b3BlcnRpZXMgCitQQVNTIFJlYWRhYmxlU3RyZWFtIChlbXB0eSkgcmVhZGVyOiBsb2NrZWQgc2hv
dWxkIGJlIHRydWUgCitQQVNTIFJlYWRhYmxlU3RyZWFtIChlbXB0eSkgcmVhZGVyOiByZWFkKCkg
c2hvdWxkIG5ldmVyIHNldHRsZSAKK1BBU1MgUmVhZGFibGVTdHJlYW0gKGVtcHR5KSByZWFkZXI6
IHR3byByZWFkKClzIHNob3VsZCBib3RoIG5ldmVyIHNldHRsZSAKK1BBU1MgUmVhZGFibGVTdHJl
YW0gKGVtcHR5KSByZWFkZXI6IHJlYWQoKSBzaG91bGQgcmV0dXJuIGRpc3RpbmN0IHByb21pc2Vz
IGVhY2ggdGltZSAKK1BBU1MgUmVhZGFibGVTdHJlYW0gKGVtcHR5KSByZWFkZXI6IGdldFJlYWRl
cigpIGFnYWluIG9uIHRoZSBzdHJlYW0gc2hvdWxkIGZhaWwgCitQQVNTIFJlYWRhYmxlU3RyZWFt
IChlbXB0eSkgcmVhZGVyOiByZWxlYXNpbmcgdGhlIGxvY2sgd2l0aCBwZW5kaW5nIHJlYWQgcmVx
dWVzdHMgc2hvdWxkIHRocm93IGJ1dCB0aGUgcmVhZCByZXF1ZXN0cyBzaG91bGQgc3RheSBwZW5k
aW5nIAorUEFTUyBSZWFkYWJsZVN0cmVhbSAoZW1wdHkpIHJlYWRlcjogcmVsZWFzaW5nIHRoZSBs
b2NrIHNob3VsZCBjYXVzZSBmdXJ0aGVyIHJlYWQoKSBjYWxscyB0byByZWplY3Qgd2l0aCBhIFR5
cGVFcnJvciAKK1BBU1MgUmVhZGFibGVTdHJlYW0gKGVtcHR5KSByZWFkZXI6IHJlbGVhc2luZyB0
aGUgbG9jayBzaG91bGQgY2F1c2UgY2xvc2VkIGNhbGxzIHRvIHJlamVjdCB3aXRoIGEgVHlwZUVy
cm9yIAorUEFTUyBSZWFkYWJsZVN0cmVhbSAoZW1wdHkpIHJlYWRlcjogcmVsZWFzaW5nIHRoZSBs
b2NrIHNob3VsZCBjYXVzZSBsb2NrZWQgdG8gYmVjb21lIGZhbHNlIAorUEFTUyBSZWFkYWJsZVN0
cmVhbSAoZW1wdHkpIHJlYWRlcjogY2FuY2VsaW5nIHZpYSB0aGUgcmVhZGVyIHNob3VsZCBjYXVz
ZSB0aGUgcmVhZGVyIHRvIGFjdCBjbG9zZWQgCitQQVNTIFJlYWRhYmxlU3RyZWFtIChlbXB0eSkg
cmVhZGVyOiBjYW5jZWxpbmcgdmlhIHRoZSBzdHJlYW0gc2hvdWxkIGZhaWwgCitQQVNTIFJ1bm5p
bmcgdGVtcGxhdGVkUlNDbG9zZWQgd2l0aCBSZWFkYWJsZVN0cmVhbSAoY2xvc2VkIHZpYSBjYWxs
IGluIHN0YXJ0KSAKK1BBU1MgUmVhZGFibGVTdHJlYW0gKGNsb3NlZCB2aWEgY2FsbCBpbiBzdGFy
dCk6IGNhbmNlbCgpIHNob3VsZCByZXR1cm4gYSBkaXN0aW5jdCBmdWxmaWxsZWQgcHJvbWlzZSBl
YWNoIHRpbWUgCitQQVNTIFJlYWRhYmxlU3RyZWFtIChjbG9zZWQgdmlhIGNhbGwgaW4gc3RhcnQp
OiBsb2NrZWQgc2hvdWxkIGJlIGZhbHNlIAorUEFTUyBSZWFkYWJsZVN0cmVhbSAoY2xvc2VkIHZp
YSBjYWxsIGluIHN0YXJ0KTogZ2V0UmVhZGVyKCkgc2hvdWxkIGJlIE9LIAorUEFTUyBSZWFkYWJs
ZVN0cmVhbSAoY2xvc2VkIHZpYSBjYWxsIGluIHN0YXJ0KTogc2hvdWxkIGJlIGFibGUgdG8gYWNx
dWlyZSBtdWx0aXBsZSByZWFkZXJzIGlmIHRoZXkgYXJlIHJlbGVhc2VkIGluIHN1Y2Nlc3Npb24g
CitQQVNTIFJlYWRhYmxlU3RyZWFtIChjbG9zZWQgdmlhIGNhbGwgaW4gc3RhcnQpOiBzaG91bGQg
bm90IGJlIGFibGUgdG8gYWNxdWlyZSBhIHNlY29uZCByZWFkZXIgaWYgd2UgZG9uJ3QgcmVsZWFz
ZSB0aGUgZmlyc3Qgb25lIAorUEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTQ2xvc2VkUmVhZGVyIHdp
dGggUmVhZGFibGVTdHJlYW0gcmVhZGVyIChjbG9zZWQgYmVmb3JlIGdldHRpbmcgcmVhZGVyKSAK
K1BBU1MgUmVhZGFibGVTdHJlYW0gcmVhZGVyIChjbG9zZWQgYmVmb3JlIGdldHRpbmcgcmVhZGVy
KTogcmVhZCgpIHNob3VsZCBmdWxmaWxsIHdpdGggeyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0
cnVlIH0gCitQQVNTIFJlYWRhYmxlU3RyZWFtIHJlYWRlciAoY2xvc2VkIGJlZm9yZSBnZXR0aW5n
IHJlYWRlcik6IHJlYWQoKSBtdWx0aXBsZSB0aW1lcyBzaG91bGQgZnVsZmlsbCB3aXRoIHsgdmFs
dWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9IAorUEFTUyBSZWFkYWJsZVN0cmVhbSByZWFkZXIg
KGNsb3NlZCBiZWZvcmUgZ2V0dGluZyByZWFkZXIpOiByZWFkKCkgc2hvdWxkIHdvcmsgd2hlbiB1
c2VkIHdpdGhpbiBhbm90aGVyIHJlYWQoKSBmdWxmaWxsIGNhbGxiYWNrIAorUEFTUyBSZWFkYWJs
ZVN0cmVhbSByZWFkZXIgKGNsb3NlZCBiZWZvcmUgZ2V0dGluZyByZWFkZXIpOiBjbG9zZWQgc2hv
dWxkIGZ1bGZpbGwgd2l0aCB1bmRlZmluZWQgCitQQVNTIFJlYWRhYmxlU3RyZWFtIHJlYWRlciAo
Y2xvc2VkIGJlZm9yZSBnZXR0aW5nIHJlYWRlcik6IHJlbGVhc2luZyB0aGUgbG9jayBzaG91bGQg
Y2F1c2UgY2xvc2VkIHRvIHJlamVjdCBhbmQgY2hhbmdlIGlkZW50aXR5IAorUEFTUyBSZWFkYWJs
ZVN0cmVhbSByZWFkZXIgKGNsb3NlZCBiZWZvcmUgZ2V0dGluZyByZWFkZXIpOiBjYW5jZWwoKSBz
aG91bGQgcmV0dXJuIGEgZGlzdGluY3QgZnVsZmlsbGVkIHByb21pc2UgZWFjaCB0aW1lIAorUEFT
UyBSdW5uaW5nIHRlbXBsYXRlZFJTQ2xvc2VkUmVhZGVyIHdpdGggUmVhZGFibGVTdHJlYW0gcmVh
ZGVyIChjbG9zZWQgYWZ0ZXIgZ2V0dGluZyByZWFkZXIpIAorUEFTUyBSZWFkYWJsZVN0cmVhbSBy
ZWFkZXIgKGNsb3NlZCBhZnRlciBnZXR0aW5nIHJlYWRlcik6IHJlYWQoKSBzaG91bGQgZnVsZmls
bCB3aXRoIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9IAorUEFTUyBSZWFkYWJsZVN0
cmVhbSByZWFkZXIgKGNsb3NlZCBhZnRlciBnZXR0aW5nIHJlYWRlcik6IHJlYWQoKSBtdWx0aXBs
ZSB0aW1lcyBzaG91bGQgZnVsZmlsbCB3aXRoIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1
ZSB9IAorUEFTUyBSZWFkYWJsZVN0cmVhbSByZWFkZXIgKGNsb3NlZCBhZnRlciBnZXR0aW5nIHJl
YWRlcik6IHJlYWQoKSBzaG91bGQgd29yayB3aGVuIHVzZWQgd2l0aGluIGFub3RoZXIgcmVhZCgp
IGZ1bGZpbGwgY2FsbGJhY2sgCitQQVNTIFJlYWRhYmxlU3RyZWFtIHJlYWRlciAoY2xvc2VkIGFm
dGVyIGdldHRpbmcgcmVhZGVyKTogY2xvc2VkIHNob3VsZCBmdWxmaWxsIHdpdGggdW5kZWZpbmVk
IAorUEFTUyBSZWFkYWJsZVN0cmVhbSByZWFkZXIgKGNsb3NlZCBhZnRlciBnZXR0aW5nIHJlYWRl
cik6IHJlbGVhc2luZyB0aGUgbG9jayBzaG91bGQgY2F1c2UgY2xvc2VkIHRvIHJlamVjdCBhbmQg
Y2hhbmdlIGlkZW50aXR5IAorUEFTUyBSZWFkYWJsZVN0cmVhbSByZWFkZXIgKGNsb3NlZCBhZnRl
ciBnZXR0aW5nIHJlYWRlcik6IGNhbmNlbCgpIHNob3VsZCByZXR1cm4gYSBkaXN0aW5jdCBmdWxm
aWxsZWQgcHJvbWlzZSBlYWNoIHRpbWUgCitQQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNDbG9zZWQg
d2l0aCBSZWFkYWJsZVN0cmVhbSAoY2xvc2VkIHZpYSBjYW5jZWwpIAorUEFTUyBSZWFkYWJsZVN0
cmVhbSAoY2xvc2VkIHZpYSBjYW5jZWwpOiBjYW5jZWwoKSBzaG91bGQgcmV0dXJuIGEgZGlzdGlu
Y3QgZnVsZmlsbGVkIHByb21pc2UgZWFjaCB0aW1lIAorUEFTUyBSZWFkYWJsZVN0cmVhbSAoY2xv
c2VkIHZpYSBjYW5jZWwpOiBsb2NrZWQgc2hvdWxkIGJlIGZhbHNlIAorUEFTUyBSZWFkYWJsZVN0
cmVhbSAoY2xvc2VkIHZpYSBjYW5jZWwpOiBnZXRSZWFkZXIoKSBzaG91bGQgYmUgT0sgCitQQVNT
IFJlYWRhYmxlU3RyZWFtIChjbG9zZWQgdmlhIGNhbmNlbCk6IHNob3VsZCBiZSBhYmxlIHRvIGFj
cXVpcmUgbXVsdGlwbGUgcmVhZGVycyBpZiB0aGV5IGFyZSByZWxlYXNlZCBpbiBzdWNjZXNzaW9u
IAorUEFTUyBSZWFkYWJsZVN0cmVhbSAoY2xvc2VkIHZpYSBjYW5jZWwpOiBzaG91bGQgbm90IGJl
IGFibGUgdG8gYWNxdWlyZSBhIHNlY29uZCByZWFkZXIgaWYgd2UgZG9uJ3QgcmVsZWFzZSB0aGUg
Zmlyc3Qgb25lIAorUEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTQ2xvc2VkUmVhZGVyIHdpdGggUmVh
ZGFibGVTdHJlYW0gcmVhZGVyIChjbG9zZWQgdmlhIGNhbmNlbCBhZnRlciBnZXR0aW5nIHJlYWRl
cikgCitQQVNTIFJlYWRhYmxlU3RyZWFtIHJlYWRlciAoY2xvc2VkIHZpYSBjYW5jZWwgYWZ0ZXIg
Z2V0dGluZyByZWFkZXIpOiByZWFkKCkgc2hvdWxkIGZ1bGZpbGwgd2l0aCB7IHZhbHVlOiB1bmRl
ZmluZWQsIGRvbmU6IHRydWUgfSAKK1BBU1MgUmVhZGFibGVTdHJlYW0gcmVhZGVyIChjbG9zZWQg
dmlhIGNhbmNlbCBhZnRlciBnZXR0aW5nIHJlYWRlcik6IHJlYWQoKSBtdWx0aXBsZSB0aW1lcyBz
aG91bGQgZnVsZmlsbCB3aXRoIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9IAorUEFT
UyBSZWFkYWJsZVN0cmVhbSByZWFkZXIgKGNsb3NlZCB2aWEgY2FuY2VsIGFmdGVyIGdldHRpbmcg
cmVhZGVyKTogcmVhZCgpIHNob3VsZCB3b3JrIHdoZW4gdXNlZCB3aXRoaW4gYW5vdGhlciByZWFk
KCkgZnVsZmlsbCBjYWxsYmFjayAKK1BBU1MgUmVhZGFibGVTdHJlYW0gcmVhZGVyIChjbG9zZWQg
dmlhIGNhbmNlbCBhZnRlciBnZXR0aW5nIHJlYWRlcik6IGNsb3NlZCBzaG91bGQgZnVsZmlsbCB3
aXRoIHVuZGVmaW5lZCAKK1BBU1MgUmVhZGFibGVTdHJlYW0gcmVhZGVyIChjbG9zZWQgdmlhIGNh
bmNlbCBhZnRlciBnZXR0aW5nIHJlYWRlcik6IHJlbGVhc2luZyB0aGUgbG9jayBzaG91bGQgY2F1
c2UgY2xvc2VkIHRvIHJlamVjdCBhbmQgY2hhbmdlIGlkZW50aXR5IAorUEFTUyBSZWFkYWJsZVN0
cmVhbSByZWFkZXIgKGNsb3NlZCB2aWEgY2FuY2VsIGFmdGVyIGdldHRpbmcgcmVhZGVyKTogY2Fu
Y2VsKCkgc2hvdWxkIHJldHVybiBhIGRpc3RpbmN0IGZ1bGZpbGxlZCBwcm9taXNlIGVhY2ggdGlt
ZSAKK1BBU1MgUnVubmluZyB0ZW1wbGF0ZWRSU0Vycm9yZWQgd2l0aCBSZWFkYWJsZVN0cmVhbSAo
ZXJyb3JlZCB2aWEgY2FsbCBpbiBzdGFydCkgCitQQVNTIFJlYWRhYmxlU3RyZWFtIChlcnJvcmVk
IHZpYSBjYWxsIGluIHN0YXJ0KTogZ2V0UmVhZGVyKCkgc2hvdWxkIHJldHVybiBhIHJlYWRlciB0
aGF0IGFjdHMgZXJyb3JlZCAKK1BBU1MgUmVhZGFibGVTdHJlYW0gKGVycm9yZWQgdmlhIGNhbGwg
aW4gc3RhcnQpOiByZWFkKCkgdHdpY2Ugc2hvdWxkIGdpdmUgdGhlIGVycm9yIGVhY2ggdGltZSAK
K1BBU1MgUmVhZGFibGVTdHJlYW0gKGVycm9yZWQgdmlhIGNhbGwgaW4gc3RhcnQpOiBsb2NrZWQg
c2hvdWxkIGJlIGZhbHNlIAorUEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTRXJyb3JlZFN5bmNPbmx5
IHdpdGggUmVhZGFibGVTdHJlYW0gKGVycm9yZWQgdmlhIGNhbGwgaW4gc3RhcnQpIAorUEFTUyBS
ZWFkYWJsZVN0cmVhbSAoZXJyb3JlZCB2aWEgY2FsbCBpbiBzdGFydCk6IHNob3VsZCBiZSBhYmxl
IHRvIG9idGFpbiBhIHNlY29uZCByZWFkZXIsIHdpdGggdGhlIGNvcnJlY3QgY2xvc2VkIHByb21p
c2UgCitQQVNTIFJlYWRhYmxlU3RyZWFtIChlcnJvcmVkIHZpYSBjYWxsIGluIHN0YXJ0KTogc2hv
dWxkIG5vdCBiZSBhYmxlIHRvIG9idGFpbiBhZGRpdGlvbmFsIHJlYWRlcnMgaWYgd2UgZG9uJ3Qg
cmVsZWFzZSB0aGUgZmlyc3QgbG9jayAKK1BBU1MgUmVhZGFibGVTdHJlYW0gKGVycm9yZWQgdmlh
IGNhbGwgaW4gc3RhcnQpOiBjYW5jZWwoKSBzaG91bGQgcmV0dXJuIGEgZGlzdGluY3QgcmVqZWN0
ZWQgcHJvbWlzZSBlYWNoIHRpbWUgCitQQVNTIFJlYWRhYmxlU3RyZWFtIChlcnJvcmVkIHZpYSBj
YWxsIGluIHN0YXJ0KTogcmVhZGVyIGNhbmNlbCgpIHNob3VsZCByZXR1cm4gYSBkaXN0aW5jdCBy
ZWplY3RlZCBwcm9taXNlIGVhY2ggdGltZSAKK1BBU1MgUnVubmluZyB0ZW1wbGF0ZWRSU0Vycm9y
ZWQgd2l0aCBSZWFkYWJsZVN0cmVhbSAoZXJyb3JlZCB2aWEgcmV0dXJuaW5nIGEgcmVqZWN0ZWQg
cHJvbWlzZSBpbiBzdGFydCkgCitQQVNTIFJlYWRhYmxlU3RyZWFtIChlcnJvcmVkIHZpYSByZXR1
cm5pbmcgYSByZWplY3RlZCBwcm9taXNlIGluIHN0YXJ0KTogZ2V0UmVhZGVyKCkgc2hvdWxkIHJl
dHVybiBhIHJlYWRlciB0aGF0IGFjdHMgZXJyb3JlZCAKK1BBU1MgUmVhZGFibGVTdHJlYW0gKGVy
cm9yZWQgdmlhIHJldHVybmluZyBhIHJlamVjdGVkIHByb21pc2UgaW4gc3RhcnQpOiByZWFkKCkg
dHdpY2Ugc2hvdWxkIGdpdmUgdGhlIGVycm9yIGVhY2ggdGltZSAKK1BBU1MgUmVhZGFibGVTdHJl
YW0gKGVycm9yZWQgdmlhIHJldHVybmluZyBhIHJlamVjdGVkIHByb21pc2UgaW4gc3RhcnQpOiBs
b2NrZWQgc2hvdWxkIGJlIGZhbHNlIAorUEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTRXJyb3JlZFJl
YWRlciB3aXRoIFJlYWRhYmxlU3RyZWFtIChlcnJvcmVkIHZpYSByZXR1cm5pbmcgYSByZWplY3Rl
ZCBwcm9taXNlIGluIHN0YXJ0KSByZWFkZXIgCitQQVNTIFJlYWRhYmxlU3RyZWFtIChlcnJvcmVk
IHZpYSByZXR1cm5pbmcgYSByZWplY3RlZCBwcm9taXNlIGluIHN0YXJ0KSByZWFkZXI6IGNsb3Nl
ZCBzaG91bGQgcmVqZWN0IHdpdGggdGhlIGVycm9yIAorUEFTUyBSZWFkYWJsZVN0cmVhbSAoZXJy
b3JlZCB2aWEgcmV0dXJuaW5nIGEgcmVqZWN0ZWQgcHJvbWlzZSBpbiBzdGFydCkgcmVhZGVyOiBy
ZWxlYXNpbmcgdGhlIGxvY2sgc2hvdWxkIGNhdXNlIGNsb3NlZCB0byByZWplY3QgYW5kIGNoYW5n
ZSBpZGVudGl0eSAKK1BBU1MgUmVhZGFibGVTdHJlYW0gKGVycm9yZWQgdmlhIHJldHVybmluZyBh
IHJlamVjdGVkIHByb21pc2UgaW4gc3RhcnQpIHJlYWRlcjogcmVhZCgpIHNob3VsZCByZWplY3Qg
d2l0aCB0aGUgZXJyb3IgCitQQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNFcnJvcmVkUmVhZGVyIHdp
dGggUmVhZGFibGVTdHJlYW0gcmVhZGVyIChlcnJvcmVkIGJlZm9yZSBnZXR0aW5nIHJlYWRlcikg
CitQQVNTIFJlYWRhYmxlU3RyZWFtIHJlYWRlciAoZXJyb3JlZCBiZWZvcmUgZ2V0dGluZyByZWFk
ZXIpOiBjbG9zZWQgc2hvdWxkIHJlamVjdCB3aXRoIHRoZSBlcnJvciAKK1BBU1MgUmVhZGFibGVT
dHJlYW0gcmVhZGVyIChlcnJvcmVkIGJlZm9yZSBnZXR0aW5nIHJlYWRlcik6IHJlbGVhc2luZyB0
aGUgbG9jayBzaG91bGQgY2F1c2UgY2xvc2VkIHRvIHJlamVjdCBhbmQgY2hhbmdlIGlkZW50aXR5
IAorUEFTUyBSZWFkYWJsZVN0cmVhbSByZWFkZXIgKGVycm9yZWQgYmVmb3JlIGdldHRpbmcgcmVh
ZGVyKTogcmVhZCgpIHNob3VsZCByZWplY3Qgd2l0aCB0aGUgZXJyb3IgCitQQVNTIFJ1bm5pbmcg
dGVtcGxhdGVkUlNFcnJvcmVkUmVhZGVyIHdpdGggUmVhZGFibGVTdHJlYW0gcmVhZGVyIChlcnJv
cmVkIGFmdGVyIGdldHRpbmcgcmVhZGVyKSAKK1BBU1MgUmVhZGFibGVTdHJlYW0gcmVhZGVyIChl
cnJvcmVkIGFmdGVyIGdldHRpbmcgcmVhZGVyKTogY2xvc2VkIHNob3VsZCByZWplY3Qgd2l0aCB0
aGUgZXJyb3IgCitQQVNTIFJlYWRhYmxlU3RyZWFtIHJlYWRlciAoZXJyb3JlZCBhZnRlciBnZXR0
aW5nIHJlYWRlcik6IHJlbGVhc2luZyB0aGUgbG9jayBzaG91bGQgY2F1c2UgY2xvc2VkIHRvIHJl
amVjdCBhbmQgY2hhbmdlIGlkZW50aXR5IAorUEFTUyBSZWFkYWJsZVN0cmVhbSByZWFkZXIgKGVy
cm9yZWQgYWZ0ZXIgZ2V0dGluZyByZWFkZXIpOiByZWFkKCkgc2hvdWxkIHJlamVjdCB3aXRoIHRo
ZSBlcnJvciAKK1BBU1MgUnVubmluZyB0ZW1wbGF0ZWRSU1R3b0NodW5rc09wZW5SZWFkZXIgd2l0
aCBSZWFkYWJsZVN0cmVhbSAodHdvIGNodW5rcyBlbnF1ZXVlZCwgc3RpbGwgb3BlbikgcmVhZGVy
IAorUEFTUyBSZWFkYWJsZVN0cmVhbSAodHdvIGNodW5rcyBlbnF1ZXVlZCwgc3RpbGwgb3Blbikg
cmVhZGVyOiBjYWxsaW5nIHJlYWQoKSB0d2ljZSB3aXRob3V0IHdhaXRpbmcgd2lsbCBldmVudHVh
bGx5IGdpdmUgYm90aCBjaHVua3MgKHNlcXVlbnRpYWwpIAorUEFTUyBSZWFkYWJsZVN0cmVhbSAo
dHdvIGNodW5rcyBlbnF1ZXVlZCwgc3RpbGwgb3BlbikgcmVhZGVyOiBjYWxsaW5nIHJlYWQoKSB0
d2ljZSB3aXRob3V0IHdhaXRpbmcgd2lsbCBldmVudHVhbGx5IGdpdmUgYm90aCBjaHVua3MgKG5l
c3RlZCkgCitQQVNTIFJlYWRhYmxlU3RyZWFtICh0d28gY2h1bmtzIGVucXVldWVkLCBzdGlsbCBv
cGVuKSByZWFkZXI6IHJlYWQoKSBzaG91bGQgcmV0dXJuIGRpc3RpbmN0IHByb21pc2VzIGVhY2gg
dGltZSAKK1BBU1MgUmVhZGFibGVTdHJlYW0gKHR3byBjaHVua3MgZW5xdWV1ZWQsIHN0aWxsIG9w
ZW4pIHJlYWRlcjogY2FuY2VsKCkgYWZ0ZXIgYSByZWFkKCkgc2hvdWxkIHN0aWxsIGdpdmUgdGhh
dCBzaW5nbGUgcmVhZCByZXN1bHQgCitQQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNUd29DaHVua3ND
bG9zZWRSZWFkZXIgd2l0aCBSZWFkYWJsZVN0cmVhbSAodHdvIGNodW5rcyBlbnF1ZXVlZCwgdGhl
biBjbG9zZWQpIHJlYWRlciAKK1BBU1MgUmVhZGFibGVTdHJlYW0gKHR3byBjaHVua3MgZW5xdWV1
ZWQsIHRoZW4gY2xvc2VkKSByZWFkZXI6IHRoaXJkIHJlYWQoKSwgd2l0aG91dCB3YWl0aW5nLCBz
aG91bGQgZ2l2ZSB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSAoc2VxdWVudGlhbCkg
CitQQVNTIFJlYWRhYmxlU3RyZWFtICh0d28gY2h1bmtzIGVucXVldWVkLCB0aGVuIGNsb3NlZCkg
cmVhZGVyOiB0aGlyZCByZWFkKCksIHdpdGhvdXQgd2FpdGluZywgc2hvdWxkIGdpdmUgeyB2YWx1
ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0gKG5lc3RlZCkgCitQQVNTIFJlYWRhYmxlU3RyZWFt
ICh0d28gY2h1bmtzIGVucXVldWVkLCB0aGVuIGNsb3NlZCkgcmVhZGVyOiBkcmFpbmluZyB0aGUg
c3RyZWFtIHZpYSByZWFkKCkgc2hvdWxkIGNhdXNlIHRoZSByZWFkZXIgY2xvc2VkIHByb21pc2Ug
dG8gZnVsZmlsbCwgYnV0IGxvY2tlZCBzdGF5cyB0cnVlIAorUEFTUyBSZWFkYWJsZVN0cmVhbSAo
dHdvIGNodW5rcyBlbnF1ZXVlZCwgdGhlbiBjbG9zZWQpIHJlYWRlcjogcmVsZWFzaW5nIHRoZSBs
b2NrIGFmdGVyIHRoZSBzdHJlYW0gaXMgY2xvc2VkIHNob3VsZCBjYXVzZSBsb2NrZWQgdG8gYmVj
b21lIGZhbHNlIAorUEFTUyBSZWFkYWJsZVN0cmVhbSAodHdvIGNodW5rcyBlbnF1ZXVlZCwgdGhl
biBjbG9zZWQpIHJlYWRlcjogcmVsZWFzaW5nIHRoZSBsb2NrIHNob3VsZCBjYXVzZSBmdXJ0aGVy
IHJlYWQoKSBjYWxscyB0byByZWplY3Qgd2l0aCBhIFR5cGVFcnJvciAKK1BBU1MgUmVhZGFibGVT
dHJlYW0gKHR3byBjaHVua3MgZW5xdWV1ZWQsIHRoZW4gY2xvc2VkKSByZWFkZXI6IHJlYWRlcidz
IGNsb3NlZCBwcm9wZXJ0eSBhbHdheXMgcmV0dXJucyB0aGUgc2FtZSBwcm9taXNlIAorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvcmVhZGFibGUtc3RyZWFtcy90ZW1wbGF0ZWQuYW55Lndvcmtlci5odG1sIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVh
bXMvdGVtcGxhdGVkLmFueS53b3JrZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMzgyOTEzNTI4ZTY5M2Iz
YTVkNTZjNjYwYTQ1MDYwOTgwYjU0OGMzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMv
dGVtcGxhdGVkLmFueS53b3JrZXIuaHRtbApAQCAtMCwwICsxIEBACis8IS0tIFRoaXMgZmlsZSBp
cyByZXF1aXJlZCBmb3IgV2ViS2l0IHRlc3QgaW5mcmFzdHJ1Y3R1cmUgdG8gcnVuIHRoZSB0ZW1w
bGF0ZWQgdGVzdCAtLT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFi
bGUtc3RyZWFtcy90ZW1wbGF0ZWQuZGVkaWNhdGVkd29ya2VyLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1z
dHJlYW1zL3RlbXBsYXRlZC5kZWRpY2F0ZWR3b3JrZXItZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA0M2Q3MDdmMDhiNWEwM2FlYzRiZmZmNWQ3Mjc4ZDVkMjBkZjM1
M2UwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1z
dHJlYW1zL3RlbXBsYXRlZC5kZWRpY2F0ZWR3b3JrZXItZXhwZWN0ZWQudHh0CisrKyAvZGV2L251
bGwKQEAgLTEsODggKzAsMCBAQAotCi1QQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNFbXB0eSB3aXRo
IFJlYWRhYmxlU3RyZWFtIChlbXB0eSkgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIChlbXB0eSk6IGlu
c3RhbmNlcyBoYXZlIHRoZSBjb3JyZWN0IG1ldGhvZHMgYW5kIHByb3BlcnRpZXMgCi1QQVNTIFJl
YWRhYmxlU3RyZWFtIChlbXB0eSk6IGNhbGxpbmcgZ2V0UmVhZGVyIHdpdGggaW52YWxpZCBhcmd1
bWVudHMgc2hvdWxkIHRocm93IGFwcHJvcHJpYXRlIGVycm9ycyAKLVBBU1MgUnVubmluZyB0ZW1w
bGF0ZWRSU0VtcHR5UmVhZGVyIHdpdGggUmVhZGFibGVTdHJlYW0gKGVtcHR5KSByZWFkZXIgCi1Q
QVNTIFJlYWRhYmxlU3RyZWFtIChlbXB0eSkgcmVhZGVyOiBpbnN0YW5jZXMgaGF2ZSB0aGUgY29y
cmVjdCBtZXRob2RzIGFuZCBwcm9wZXJ0aWVzIAotUEFTUyBSZWFkYWJsZVN0cmVhbSAoZW1wdHkp
IHJlYWRlcjogbG9ja2VkIHNob3VsZCBiZSB0cnVlIAotUEFTUyBSZWFkYWJsZVN0cmVhbSAoZW1w
dHkpIHJlYWRlcjogcmVhZCgpIHNob3VsZCBuZXZlciBzZXR0bGUgCi1QQVNTIFJlYWRhYmxlU3Ry
ZWFtIChlbXB0eSkgcmVhZGVyOiB0d28gcmVhZCgpcyBzaG91bGQgYm90aCBuZXZlciBzZXR0bGUg
Ci1QQVNTIFJlYWRhYmxlU3RyZWFtIChlbXB0eSkgcmVhZGVyOiByZWFkKCkgc2hvdWxkIHJldHVy
biBkaXN0aW5jdCBwcm9taXNlcyBlYWNoIHRpbWUgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIChlbXB0
eSkgcmVhZGVyOiBnZXRSZWFkZXIoKSBhZ2FpbiBvbiB0aGUgc3RyZWFtIHNob3VsZCBmYWlsIAot
UEFTUyBSZWFkYWJsZVN0cmVhbSAoZW1wdHkpIHJlYWRlcjogcmVsZWFzaW5nIHRoZSBsb2NrIHdp
dGggcGVuZGluZyByZWFkIHJlcXVlc3RzIHNob3VsZCB0aHJvdyBidXQgdGhlIHJlYWQgcmVxdWVz
dHMgc2hvdWxkIHN0YXkgcGVuZGluZyAKLVBBU1MgUmVhZGFibGVTdHJlYW0gKGVtcHR5KSByZWFk
ZXI6IHJlbGVhc2luZyB0aGUgbG9jayBzaG91bGQgY2F1c2UgZnVydGhlciByZWFkKCkgY2FsbHMg
dG8gcmVqZWN0IHdpdGggYSBUeXBlRXJyb3IgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIChlbXB0eSkg
cmVhZGVyOiByZWxlYXNpbmcgdGhlIGxvY2sgc2hvdWxkIGNhdXNlIGNsb3NlZCBjYWxscyB0byBy
ZWplY3Qgd2l0aCBhIFR5cGVFcnJvciAKLVBBU1MgUmVhZGFibGVTdHJlYW0gKGVtcHR5KSByZWFk
ZXI6IHJlbGVhc2luZyB0aGUgbG9jayBzaG91bGQgY2F1c2UgbG9ja2VkIHRvIGJlY29tZSBmYWxz
ZSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gKGVtcHR5KSByZWFkZXI6IGNhbmNlbGluZyB2aWEgdGhl
IHJlYWRlciBzaG91bGQgY2F1c2UgdGhlIHJlYWRlciB0byBhY3QgY2xvc2VkIAotUEFTUyBSZWFk
YWJsZVN0cmVhbSAoZW1wdHkpIHJlYWRlcjogY2FuY2VsaW5nIHZpYSB0aGUgc3RyZWFtIHNob3Vs
ZCBmYWlsIAotUEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTQ2xvc2VkIHdpdGggUmVhZGFibGVTdHJl
YW0gKGNsb3NlZCB2aWEgY2FsbCBpbiBzdGFydCkgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIChjbG9z
ZWQgdmlhIGNhbGwgaW4gc3RhcnQpOiBjYW5jZWwoKSBzaG91bGQgcmV0dXJuIGEgZGlzdGluY3Qg
ZnVsZmlsbGVkIHByb21pc2UgZWFjaCB0aW1lIAotUEFTUyBSZWFkYWJsZVN0cmVhbSAoY2xvc2Vk
IHZpYSBjYWxsIGluIHN0YXJ0KTogbG9ja2VkIHNob3VsZCBiZSBmYWxzZSAKLVBBU1MgUmVhZGFi
bGVTdHJlYW0gKGNsb3NlZCB2aWEgY2FsbCBpbiBzdGFydCk6IGdldFJlYWRlcigpIHNob3VsZCBi
ZSBPSyAKLVBBU1MgUmVhZGFibGVTdHJlYW0gKGNsb3NlZCB2aWEgY2FsbCBpbiBzdGFydCk6IHNo
b3VsZCBiZSBhYmxlIHRvIGFjcXVpcmUgbXVsdGlwbGUgcmVhZGVycyBpZiB0aGV5IGFyZSByZWxl
YXNlZCBpbiBzdWNjZXNzaW9uIAotUEFTUyBSZWFkYWJsZVN0cmVhbSAoY2xvc2VkIHZpYSBjYWxs
IGluIHN0YXJ0KTogc2hvdWxkIG5vdCBiZSBhYmxlIHRvIGFjcXVpcmUgYSBzZWNvbmQgcmVhZGVy
IGlmIHdlIGRvbid0IHJlbGVhc2UgdGhlIGZpcnN0IG9uZSAKLVBBU1MgUnVubmluZyB0ZW1wbGF0
ZWRSU0Nsb3NlZFJlYWRlciB3aXRoIFJlYWRhYmxlU3RyZWFtIHJlYWRlciAoY2xvc2VkIGJlZm9y
ZSBnZXR0aW5nIHJlYWRlcikgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIHJlYWRlciAoY2xvc2VkIGJl
Zm9yZSBnZXR0aW5nIHJlYWRlcik6IHJlYWQoKSBzaG91bGQgZnVsZmlsbCB3aXRoIHsgdmFsdWU6
IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9IAotUEFTUyBSZWFkYWJsZVN0cmVhbSByZWFkZXIgKGNs
b3NlZCBiZWZvcmUgZ2V0dGluZyByZWFkZXIpOiByZWFkKCkgbXVsdGlwbGUgdGltZXMgc2hvdWxk
IGZ1bGZpbGwgd2l0aCB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSAKLVBBU1MgUmVh
ZGFibGVTdHJlYW0gcmVhZGVyIChjbG9zZWQgYmVmb3JlIGdldHRpbmcgcmVhZGVyKTogcmVhZCgp
IHNob3VsZCB3b3JrIHdoZW4gdXNlZCB3aXRoaW4gYW5vdGhlciByZWFkKCkgZnVsZmlsbCBjYWxs
YmFjayAKLVBBU1MgUmVhZGFibGVTdHJlYW0gcmVhZGVyIChjbG9zZWQgYmVmb3JlIGdldHRpbmcg
cmVhZGVyKTogY2xvc2VkIHNob3VsZCBmdWxmaWxsIHdpdGggdW5kZWZpbmVkIAotUEFTUyBSZWFk
YWJsZVN0cmVhbSByZWFkZXIgKGNsb3NlZCBiZWZvcmUgZ2V0dGluZyByZWFkZXIpOiByZWxlYXNp
bmcgdGhlIGxvY2sgc2hvdWxkIGNhdXNlIGNsb3NlZCB0byByZWplY3QgYW5kIGNoYW5nZSBpZGVu
dGl0eSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gcmVhZGVyIChjbG9zZWQgYmVmb3JlIGdldHRpbmcg
cmVhZGVyKTogY2FuY2VsKCkgc2hvdWxkIHJldHVybiBhIGRpc3RpbmN0IGZ1bGZpbGxlZCBwcm9t
aXNlIGVhY2ggdGltZSAKLVBBU1MgUnVubmluZyB0ZW1wbGF0ZWRSU0Nsb3NlZFJlYWRlciB3aXRo
IFJlYWRhYmxlU3RyZWFtIHJlYWRlciAoY2xvc2VkIGFmdGVyIGdldHRpbmcgcmVhZGVyKSAKLVBB
U1MgUmVhZGFibGVTdHJlYW0gcmVhZGVyIChjbG9zZWQgYWZ0ZXIgZ2V0dGluZyByZWFkZXIpOiBy
ZWFkKCkgc2hvdWxkIGZ1bGZpbGwgd2l0aCB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUg
fSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gcmVhZGVyIChjbG9zZWQgYWZ0ZXIgZ2V0dGluZyByZWFk
ZXIpOiByZWFkKCkgbXVsdGlwbGUgdGltZXMgc2hvdWxkIGZ1bGZpbGwgd2l0aCB7IHZhbHVlOiB1
bmRlZmluZWQsIGRvbmU6IHRydWUgfSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gcmVhZGVyIChjbG9z
ZWQgYWZ0ZXIgZ2V0dGluZyByZWFkZXIpOiByZWFkKCkgc2hvdWxkIHdvcmsgd2hlbiB1c2VkIHdp
dGhpbiBhbm90aGVyIHJlYWQoKSBmdWxmaWxsIGNhbGxiYWNrIAotUEFTUyBSZWFkYWJsZVN0cmVh
bSByZWFkZXIgKGNsb3NlZCBhZnRlciBnZXR0aW5nIHJlYWRlcik6IGNsb3NlZCBzaG91bGQgZnVs
ZmlsbCB3aXRoIHVuZGVmaW5lZCAKLVBBU1MgUmVhZGFibGVTdHJlYW0gcmVhZGVyIChjbG9zZWQg
YWZ0ZXIgZ2V0dGluZyByZWFkZXIpOiByZWxlYXNpbmcgdGhlIGxvY2sgc2hvdWxkIGNhdXNlIGNs
b3NlZCB0byByZWplY3QgYW5kIGNoYW5nZSBpZGVudGl0eSAKLVBBU1MgUmVhZGFibGVTdHJlYW0g
cmVhZGVyIChjbG9zZWQgYWZ0ZXIgZ2V0dGluZyByZWFkZXIpOiBjYW5jZWwoKSBzaG91bGQgcmV0
dXJuIGEgZGlzdGluY3QgZnVsZmlsbGVkIHByb21pc2UgZWFjaCB0aW1lIAotUEFTUyBSdW5uaW5n
IHRlbXBsYXRlZFJTQ2xvc2VkIHdpdGggUmVhZGFibGVTdHJlYW0gKGNsb3NlZCB2aWEgY2FuY2Vs
KSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gKGNsb3NlZCB2aWEgY2FuY2VsKTogY2FuY2VsKCkgc2hv
dWxkIHJldHVybiBhIGRpc3RpbmN0IGZ1bGZpbGxlZCBwcm9taXNlIGVhY2ggdGltZSAKLVBBU1Mg
UmVhZGFibGVTdHJlYW0gKGNsb3NlZCB2aWEgY2FuY2VsKTogbG9ja2VkIHNob3VsZCBiZSBmYWxz
ZSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gKGNsb3NlZCB2aWEgY2FuY2VsKTogZ2V0UmVhZGVyKCkg
c2hvdWxkIGJlIE9LIAotUEFTUyBSZWFkYWJsZVN0cmVhbSAoY2xvc2VkIHZpYSBjYW5jZWwpOiBz
aG91bGQgYmUgYWJsZSB0byBhY3F1aXJlIG11bHRpcGxlIHJlYWRlcnMgaWYgdGhleSBhcmUgcmVs
ZWFzZWQgaW4gc3VjY2Vzc2lvbiAKLVBBU1MgUmVhZGFibGVTdHJlYW0gKGNsb3NlZCB2aWEgY2Fu
Y2VsKTogc2hvdWxkIG5vdCBiZSBhYmxlIHRvIGFjcXVpcmUgYSBzZWNvbmQgcmVhZGVyIGlmIHdl
IGRvbid0IHJlbGVhc2UgdGhlIGZpcnN0IG9uZSAKLVBBU1MgUnVubmluZyB0ZW1wbGF0ZWRSU0Ns
b3NlZFJlYWRlciB3aXRoIFJlYWRhYmxlU3RyZWFtIHJlYWRlciAoY2xvc2VkIHZpYSBjYW5jZWwg
YWZ0ZXIgZ2V0dGluZyByZWFkZXIpIAotUEFTUyBSZWFkYWJsZVN0cmVhbSByZWFkZXIgKGNsb3Nl
ZCB2aWEgY2FuY2VsIGFmdGVyIGdldHRpbmcgcmVhZGVyKTogcmVhZCgpIHNob3VsZCBmdWxmaWxs
IHdpdGggeyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0gCi1QQVNTIFJlYWRhYmxlU3Ry
ZWFtIHJlYWRlciAoY2xvc2VkIHZpYSBjYW5jZWwgYWZ0ZXIgZ2V0dGluZyByZWFkZXIpOiByZWFk
KCkgbXVsdGlwbGUgdGltZXMgc2hvdWxkIGZ1bGZpbGwgd2l0aCB7IHZhbHVlOiB1bmRlZmluZWQs
IGRvbmU6IHRydWUgfSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gcmVhZGVyIChjbG9zZWQgdmlhIGNh
bmNlbCBhZnRlciBnZXR0aW5nIHJlYWRlcik6IHJlYWQoKSBzaG91bGQgd29yayB3aGVuIHVzZWQg
d2l0aGluIGFub3RoZXIgcmVhZCgpIGZ1bGZpbGwgY2FsbGJhY2sgCi1QQVNTIFJlYWRhYmxlU3Ry
ZWFtIHJlYWRlciAoY2xvc2VkIHZpYSBjYW5jZWwgYWZ0ZXIgZ2V0dGluZyByZWFkZXIpOiBjbG9z
ZWQgc2hvdWxkIGZ1bGZpbGwgd2l0aCB1bmRlZmluZWQgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIHJl
YWRlciAoY2xvc2VkIHZpYSBjYW5jZWwgYWZ0ZXIgZ2V0dGluZyByZWFkZXIpOiByZWxlYXNpbmcg
dGhlIGxvY2sgc2hvdWxkIGNhdXNlIGNsb3NlZCB0byByZWplY3QgYW5kIGNoYW5nZSBpZGVudGl0
eSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gcmVhZGVyIChjbG9zZWQgdmlhIGNhbmNlbCBhZnRlciBn
ZXR0aW5nIHJlYWRlcik6IGNhbmNlbCgpIHNob3VsZCByZXR1cm4gYSBkaXN0aW5jdCBmdWxmaWxs
ZWQgcHJvbWlzZSBlYWNoIHRpbWUgCi1QQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNFcnJvcmVkIHdp
dGggUmVhZGFibGVTdHJlYW0gKGVycm9yZWQgdmlhIGNhbGwgaW4gc3RhcnQpIAotUEFTUyBSZWFk
YWJsZVN0cmVhbSAoZXJyb3JlZCB2aWEgY2FsbCBpbiBzdGFydCk6IGdldFJlYWRlcigpIHNob3Vs
ZCByZXR1cm4gYSByZWFkZXIgdGhhdCBhY3RzIGVycm9yZWQgCi1QQVNTIFJlYWRhYmxlU3RyZWFt
IChlcnJvcmVkIHZpYSBjYWxsIGluIHN0YXJ0KTogcmVhZCgpIHR3aWNlIHNob3VsZCBnaXZlIHRo
ZSBlcnJvciBlYWNoIHRpbWUgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIChlcnJvcmVkIHZpYSBjYWxs
IGluIHN0YXJ0KTogbG9ja2VkIHNob3VsZCBiZSBmYWxzZSAKLVBBU1MgUnVubmluZyB0ZW1wbGF0
ZWRSU0Vycm9yZWRTeW5jT25seSB3aXRoIFJlYWRhYmxlU3RyZWFtIChlcnJvcmVkIHZpYSBjYWxs
IGluIHN0YXJ0KSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gKGVycm9yZWQgdmlhIGNhbGwgaW4gc3Rh
cnQpOiBzaG91bGQgYmUgYWJsZSB0byBvYnRhaW4gYSBzZWNvbmQgcmVhZGVyLCB3aXRoIHRoZSBj
b3JyZWN0IGNsb3NlZCBwcm9taXNlIAotUEFTUyBSZWFkYWJsZVN0cmVhbSAoZXJyb3JlZCB2aWEg
Y2FsbCBpbiBzdGFydCk6IHNob3VsZCBub3QgYmUgYWJsZSB0byBvYnRhaW4gYWRkaXRpb25hbCBy
ZWFkZXJzIGlmIHdlIGRvbid0IHJlbGVhc2UgdGhlIGZpcnN0IGxvY2sgCi1QQVNTIFJlYWRhYmxl
U3RyZWFtIChlcnJvcmVkIHZpYSBjYWxsIGluIHN0YXJ0KTogY2FuY2VsKCkgc2hvdWxkIHJldHVy
biBhIGRpc3RpbmN0IHJlamVjdGVkIHByb21pc2UgZWFjaCB0aW1lIAotUEFTUyBSZWFkYWJsZVN0
cmVhbSAoZXJyb3JlZCB2aWEgY2FsbCBpbiBzdGFydCk6IHJlYWRlciBjYW5jZWwoKSBzaG91bGQg
cmV0dXJuIGEgZGlzdGluY3QgcmVqZWN0ZWQgcHJvbWlzZSBlYWNoIHRpbWUgCi1QQVNTIFJ1bm5p
bmcgdGVtcGxhdGVkUlNFcnJvcmVkIHdpdGggUmVhZGFibGVTdHJlYW0gKGVycm9yZWQgdmlhIHJl
dHVybmluZyBhIHJlamVjdGVkIHByb21pc2UgaW4gc3RhcnQpIAotUEFTUyBSZWFkYWJsZVN0cmVh
bSAoZXJyb3JlZCB2aWEgcmV0dXJuaW5nIGEgcmVqZWN0ZWQgcHJvbWlzZSBpbiBzdGFydCk6IGdl
dFJlYWRlcigpIHNob3VsZCByZXR1cm4gYSByZWFkZXIgdGhhdCBhY3RzIGVycm9yZWQgCi1QQVNT
IFJlYWRhYmxlU3RyZWFtIChlcnJvcmVkIHZpYSByZXR1cm5pbmcgYSByZWplY3RlZCBwcm9taXNl
IGluIHN0YXJ0KTogcmVhZCgpIHR3aWNlIHNob3VsZCBnaXZlIHRoZSBlcnJvciBlYWNoIHRpbWUg
Ci1QQVNTIFJlYWRhYmxlU3RyZWFtIChlcnJvcmVkIHZpYSByZXR1cm5pbmcgYSByZWplY3RlZCBw
cm9taXNlIGluIHN0YXJ0KTogbG9ja2VkIHNob3VsZCBiZSBmYWxzZSAKLVBBU1MgUnVubmluZyB0
ZW1wbGF0ZWRSU0Vycm9yZWRSZWFkZXIgd2l0aCBSZWFkYWJsZVN0cmVhbSAoZXJyb3JlZCB2aWEg
cmV0dXJuaW5nIGEgcmVqZWN0ZWQgcHJvbWlzZSBpbiBzdGFydCkgcmVhZGVyIAotUEFTUyBSZWFk
YWJsZVN0cmVhbSAoZXJyb3JlZCB2aWEgcmV0dXJuaW5nIGEgcmVqZWN0ZWQgcHJvbWlzZSBpbiBz
dGFydCkgcmVhZGVyOiBjbG9zZWQgc2hvdWxkIHJlamVjdCB3aXRoIHRoZSBlcnJvciAKLVBBU1Mg
UmVhZGFibGVTdHJlYW0gKGVycm9yZWQgdmlhIHJldHVybmluZyBhIHJlamVjdGVkIHByb21pc2Ug
aW4gc3RhcnQpIHJlYWRlcjogcmVsZWFzaW5nIHRoZSBsb2NrIHNob3VsZCBjYXVzZSBjbG9zZWQg
dG8gcmVqZWN0IGFuZCBjaGFuZ2UgaWRlbnRpdHkgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIChlcnJv
cmVkIHZpYSByZXR1cm5pbmcgYSByZWplY3RlZCBwcm9taXNlIGluIHN0YXJ0KSByZWFkZXI6IHJl
YWQoKSBzaG91bGQgcmVqZWN0IHdpdGggdGhlIGVycm9yIAotUEFTUyBSdW5uaW5nIHRlbXBsYXRl
ZFJTRXJyb3JlZFJlYWRlciB3aXRoIFJlYWRhYmxlU3RyZWFtIHJlYWRlciAoZXJyb3JlZCBiZWZv
cmUgZ2V0dGluZyByZWFkZXIpIAotUEFTUyBSZWFkYWJsZVN0cmVhbSByZWFkZXIgKGVycm9yZWQg
YmVmb3JlIGdldHRpbmcgcmVhZGVyKTogY2xvc2VkIHNob3VsZCByZWplY3Qgd2l0aCB0aGUgZXJy
b3IgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIHJlYWRlciAoZXJyb3JlZCBiZWZvcmUgZ2V0dGluZyBy
ZWFkZXIpOiByZWxlYXNpbmcgdGhlIGxvY2sgc2hvdWxkIGNhdXNlIGNsb3NlZCB0byByZWplY3Qg
YW5kIGNoYW5nZSBpZGVudGl0eSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gcmVhZGVyIChlcnJvcmVk
IGJlZm9yZSBnZXR0aW5nIHJlYWRlcik6IHJlYWQoKSBzaG91bGQgcmVqZWN0IHdpdGggdGhlIGVy
cm9yIAotUEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTRXJyb3JlZFJlYWRlciB3aXRoIFJlYWRhYmxl
U3RyZWFtIHJlYWRlciAoZXJyb3JlZCBhZnRlciBnZXR0aW5nIHJlYWRlcikgCi1QQVNTIFJlYWRh
YmxlU3RyZWFtIHJlYWRlciAoZXJyb3JlZCBhZnRlciBnZXR0aW5nIHJlYWRlcik6IGNsb3NlZCBz
aG91bGQgcmVqZWN0IHdpdGggdGhlIGVycm9yIAotUEFTUyBSZWFkYWJsZVN0cmVhbSByZWFkZXIg
KGVycm9yZWQgYWZ0ZXIgZ2V0dGluZyByZWFkZXIpOiByZWxlYXNpbmcgdGhlIGxvY2sgc2hvdWxk
IGNhdXNlIGNsb3NlZCB0byByZWplY3QgYW5kIGNoYW5nZSBpZGVudGl0eSAKLVBBU1MgUmVhZGFi
bGVTdHJlYW0gcmVhZGVyIChlcnJvcmVkIGFmdGVyIGdldHRpbmcgcmVhZGVyKTogcmVhZCgpIHNo
b3VsZCByZWplY3Qgd2l0aCB0aGUgZXJyb3IgCi1QQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNUd29D
aHVua3NPcGVuUmVhZGVyIHdpdGggUmVhZGFibGVTdHJlYW0gKHR3byBjaHVua3MgZW5xdWV1ZWQs
IHN0aWxsIG9wZW4pIHJlYWRlciAKLVBBU1MgUmVhZGFibGVTdHJlYW0gKHR3byBjaHVua3MgZW5x
dWV1ZWQsIHN0aWxsIG9wZW4pIHJlYWRlcjogY2FsbGluZyByZWFkKCkgdHdpY2Ugd2l0aG91dCB3
YWl0aW5nIHdpbGwgZXZlbnR1YWxseSBnaXZlIGJvdGggY2h1bmtzIChzZXF1ZW50aWFsKSAKLVBB
U1MgUmVhZGFibGVTdHJlYW0gKHR3byBjaHVua3MgZW5xdWV1ZWQsIHN0aWxsIG9wZW4pIHJlYWRl
cjogY2FsbGluZyByZWFkKCkgdHdpY2Ugd2l0aG91dCB3YWl0aW5nIHdpbGwgZXZlbnR1YWxseSBn
aXZlIGJvdGggY2h1bmtzIChuZXN0ZWQpIAotUEFTUyBSZWFkYWJsZVN0cmVhbSAodHdvIGNodW5r
cyBlbnF1ZXVlZCwgc3RpbGwgb3BlbikgcmVhZGVyOiByZWFkKCkgc2hvdWxkIHJldHVybiBkaXN0
aW5jdCBwcm9taXNlcyBlYWNoIHRpbWUgCi1QQVNTIFJlYWRhYmxlU3RyZWFtICh0d28gY2h1bmtz
IGVucXVldWVkLCBzdGlsbCBvcGVuKSByZWFkZXI6IGNhbmNlbCgpIGFmdGVyIGEgcmVhZCgpIHNo
b3VsZCBzdGlsbCBnaXZlIHRoYXQgc2luZ2xlIHJlYWQgcmVzdWx0IAotUEFTUyBSdW5uaW5nIHRl
bXBsYXRlZFJTVHdvQ2h1bmtzQ2xvc2VkUmVhZGVyIHdpdGggUmVhZGFibGVTdHJlYW0gKHR3byBj
aHVua3MgZW5xdWV1ZWQsIHRoZW4gY2xvc2VkKSByZWFkZXIgCi1QQVNTIFJlYWRhYmxlU3RyZWFt
ICh0d28gY2h1bmtzIGVucXVldWVkLCB0aGVuIGNsb3NlZCkgcmVhZGVyOiB0aGlyZCByZWFkKCks
IHdpdGhvdXQgd2FpdGluZywgc2hvdWxkIGdpdmUgeyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0
cnVlIH0gKHNlcXVlbnRpYWwpIAotUEFTUyBSZWFkYWJsZVN0cmVhbSAodHdvIGNodW5rcyBlbnF1
ZXVlZCwgdGhlbiBjbG9zZWQpIHJlYWRlcjogdGhpcmQgcmVhZCgpLCB3aXRob3V0IHdhaXRpbmcs
IHNob3VsZCBnaXZlIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9IChuZXN0ZWQpIAot
UEFTUyBSZWFkYWJsZVN0cmVhbSAodHdvIGNodW5rcyBlbnF1ZXVlZCwgdGhlbiBjbG9zZWQpIHJl
YWRlcjogZHJhaW5pbmcgdGhlIHN0cmVhbSB2aWEgcmVhZCgpIHNob3VsZCBjYXVzZSB0aGUgcmVh
ZGVyIGNsb3NlZCBwcm9taXNlIHRvIGZ1bGZpbGwsIGJ1dCBsb2NrZWQgc3RheXMgdHJ1ZSAKLVBB
U1MgUmVhZGFibGVTdHJlYW0gKHR3byBjaHVua3MgZW5xdWV1ZWQsIHRoZW4gY2xvc2VkKSByZWFk
ZXI6IHJlbGVhc2luZyB0aGUgbG9jayBhZnRlciB0aGUgc3RyZWFtIGlzIGNsb3NlZCBzaG91bGQg
Y2F1c2UgbG9ja2VkIHRvIGJlY29tZSBmYWxzZSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gKHR3byBj
aHVua3MgZW5xdWV1ZWQsIHRoZW4gY2xvc2VkKSByZWFkZXI6IHJlbGVhc2luZyB0aGUgbG9jayBz
aG91bGQgY2F1c2UgZnVydGhlciByZWFkKCkgY2FsbHMgdG8gcmVqZWN0IHdpdGggYSBUeXBlRXJy
b3IgCi1QQVNTIFJlYWRhYmxlU3RyZWFtICh0d28gY2h1bmtzIGVucXVldWVkLCB0aGVuIGNsb3Nl
ZCkgcmVhZGVyOiByZWFkZXIncyBjbG9zZWQgcHJvcGVydHkgYWx3YXlzIHJldHVybnMgdGhlIHNh
bWUgcHJvbWlzZSAKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvdGVtcGxhdGVkLmRlZGljYXRl
ZHdvcmtlci5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvdGVtcGxhdGVkLmRlZGljYXRlZHdvcmtlci5odG1s
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMzU0Yjk4ZGM2OTdjOTZkYTU2Zjg1ZGNi
OTA0NWQ2YjY1NDRkYWYyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy9yZWFkYWJsZS1zdHJlYW1zL3RlbXBsYXRlZC5kZWRpY2F0ZWR3b3JrZXIuaHRtbAorKysgL2Rl
di9udWxsCkBAIC0xLDExICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0i
dXRmLTgiPgotPHRpdGxlPnRlbXBsYXRlZC5qcyBkZWRpY2F0ZWQgd29ya2VyIHdyYXBwZXIgZmls
ZTwvdGl0bGU+Ci0KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3Nj
cmlwdD4KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3Nj
cmlwdD4KLQotPHNjcmlwdD4KLSd1c2Ugc3RyaWN0JzsKLWZldGNoX3Rlc3RzX2Zyb21fd29ya2Vy
KG5ldyBXb3JrZXIoJ3RlbXBsYXRlZC5qcycpKTsKLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxl
LXN0cmVhbXMvdGVtcGxhdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy90ZW1wbGF0ZWQuaHRtbApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjNiMTdmMmYzZGY4MmNjYTI3ODk0Y2Y3ZWU2ZDVl
MzJkNGQwMmM3Ny4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVh
ZGFibGUtc3RyZWFtcy90ZW1wbGF0ZWQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAg
QEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHRpdGxlPnRlbXBs
YXRlZC5qcyBicm93c2VyIGNvbnRleHQgd3JhcHBlciBmaWxlPC90aXRsZT4KLQotPHNjcmlwdCBz
cmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9y
ZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotCi08c2NyaXB0IHNyYz0i
Li4vcmVzb3VyY2VzL3Rlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL3Jl
c291cmNlcy9ycy10ZXN0LXRlbXBsYXRlcy5qcyI+PC9zY3JpcHQ+Ci0KLTxzY3JpcHQgc3JjPSJ0
ZW1wbGF0ZWQuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvdGVtcGxhdGVk
LmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
L3JlYWRhYmxlLXN0cmVhbXMvdGVtcGxhdGVkLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA2ZGIwNDI5OTk0ZDQ1M2RiZmNkMmU4MzQ3ZTZmYTdlZmRmMjBiYzRlLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3RlbXBsYXRl
ZC5qcworKysgL2Rldi9udWxsCkBAIC0xLDE0OCArMCwwIEBACi0ndXNlIHN0cmljdCc7Ci0KLWlm
IChzZWxmLmltcG9ydFNjcmlwdHMpIHsKLSAgc2VsZi5pbXBvcnRTY3JpcHRzKCcvcmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzLmpzJyk7Ci0gIHNlbGYuaW1wb3J0U2NyaXB0cygnLi4vcmVzb3VyY2VzL3Rl
c3QtdXRpbHMuanMnKTsKLSAgc2VsZi5pbXBvcnRTY3JpcHRzKCcuLi9yZXNvdXJjZXMvcnMtdGVz
dC10ZW1wbGF0ZXMuanMnKTsKLX0KLQotLy8gUnVuIHRoZSByZWFkYWJsZSBzdHJlYW0gdGVzdCB0
ZW1wbGF0ZXMgYWdhaW5zdCByZWFkYWJsZSBzdHJlYW1zIGNyZWF0ZWQgZGlyZWN0bHkgdXNpbmcg
dGhlIGNvbnN0cnVjdG9yCi0KLWNvbnN0IHRoZUVycm9yID0geyBuYW1lOiAnYm9vIScgfTsKLWNv
bnN0IGNodW5rcyA9IFsnYScsICdiJ107Ci0KLXRlbXBsYXRlZFJTRW1wdHkoJ1JlYWRhYmxlU3Ry
ZWFtIChlbXB0eSknLCAoKSA9PiB7Ci0gIHJldHVybiBuZXcgUmVhZGFibGVTdHJlYW0oKTsKLX0p
OwotCi10ZW1wbGF0ZWRSU0VtcHR5UmVhZGVyKCdSZWFkYWJsZVN0cmVhbSAoZW1wdHkpIHJlYWRl
cicsICgpID0+IHsKLSAgcmV0dXJuIHN0cmVhbUFuZERlZmF1bHRSZWFkZXIobmV3IFJlYWRhYmxl
U3RyZWFtKCkpOwotfSk7Ci0KLXRlbXBsYXRlZFJTQ2xvc2VkKCdSZWFkYWJsZVN0cmVhbSAoY2xv
c2VkIHZpYSBjYWxsIGluIHN0YXJ0KScsICgpID0+IHsKLSAgcmV0dXJuIG5ldyBSZWFkYWJsZVN0
cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgYy5jbG9zZSgpOwotICAgIH0KLSAgfSk7Ci19
KTsKLQotdGVtcGxhdGVkUlNDbG9zZWRSZWFkZXIoJ1JlYWRhYmxlU3RyZWFtIHJlYWRlciAoY2xv
c2VkIGJlZm9yZSBnZXR0aW5nIHJlYWRlciknLCAoKSA9PiB7Ci0gIGxldCBjb250cm9sbGVyOwot
ICBjb25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAg
ICAgIGNvbnRyb2xsZXIgPSBjOwotICAgIH0KLSAgfSk7Ci0gIGNvbnRyb2xsZXIuY2xvc2UoKTsK
LSAgY29uc3QgcmVzdWx0ID0gc3RyZWFtQW5kRGVmYXVsdFJlYWRlcihzdHJlYW0pOwotICByZXR1
cm4gcmVzdWx0OwotfSk7Ci0KLXRlbXBsYXRlZFJTQ2xvc2VkUmVhZGVyKCdSZWFkYWJsZVN0cmVh
bSByZWFkZXIgKGNsb3NlZCBhZnRlciBnZXR0aW5nIHJlYWRlciknLCAoKSA9PiB7Ci0gIGxldCBj
b250cm9sbGVyOwotICBjb25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0
YXJ0KGMpIHsKLSAgICAgIGNvbnRyb2xsZXIgPSBjOwotICAgIH0KLSAgfSk7Ci0gIGNvbnN0IHJl
c3VsdCA9IHN0cmVhbUFuZERlZmF1bHRSZWFkZXIoc3RyZWFtKTsKLSAgY29udHJvbGxlci5jbG9z
ZSgpOwotICByZXR1cm4gcmVzdWx0OwotfSk7Ci0KLXRlbXBsYXRlZFJTQ2xvc2VkKCdSZWFkYWJs
ZVN0cmVhbSAoY2xvc2VkIHZpYSBjYW5jZWwpJywgKCkgPT4gewotICBjb25zdCBzdHJlYW0gPSBu
ZXcgUmVhZGFibGVTdHJlYW0oKTsKLSAgc3RyZWFtLmNhbmNlbCgpOwotICByZXR1cm4gc3RyZWFt
OwotfSk7Ci0KLXRlbXBsYXRlZFJTQ2xvc2VkUmVhZGVyKCdSZWFkYWJsZVN0cmVhbSByZWFkZXIg
KGNsb3NlZCB2aWEgY2FuY2VsIGFmdGVyIGdldHRpbmcgcmVhZGVyKScsICgpID0+IHsKLSAgY29u
c3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKCk7Ci0gIGNvbnN0IHJlc3VsdCA9IHN0cmVh
bUFuZERlZmF1bHRSZWFkZXIoc3RyZWFtKTsKLSAgcmVzdWx0LnJlYWRlci5jYW5jZWwoKTsKLSAg
cmV0dXJuIHJlc3VsdDsKLX0pOwotCi10ZW1wbGF0ZWRSU0Vycm9yZWQoJ1JlYWRhYmxlU3RyZWFt
IChlcnJvcmVkIHZpYSBjYWxsIGluIHN0YXJ0KScsICgpID0+IHsKLSAgcmV0dXJuIG5ldyBSZWFk
YWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgYy5lcnJvcih0aGVFcnJvcik7Ci0g
ICAgfQotICB9KTsKLX0sIHRoZUVycm9yKTsKLQotdGVtcGxhdGVkUlNFcnJvcmVkU3luY09ubHko
J1JlYWRhYmxlU3RyZWFtIChlcnJvcmVkIHZpYSBjYWxsIGluIHN0YXJ0KScsICgpID0+IHsKLSAg
cmV0dXJuIG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgYy5lcnJv
cih0aGVFcnJvcik7Ci0gICAgfQotICB9KTsKLX0sIHRoZUVycm9yKTsKLQotdGVtcGxhdGVkUlNF
cnJvcmVkKCdSZWFkYWJsZVN0cmVhbSAoZXJyb3JlZCB2aWEgcmV0dXJuaW5nIGEgcmVqZWN0ZWQg
cHJvbWlzZSBpbiBzdGFydCknLCAoKSA9PiB7Ci0gIHJldHVybiBuZXcgUmVhZGFibGVTdHJlYW0o
ewotICAgIHN0YXJ0KCkgewotICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KHRoZUVycm9yKTsK
LSAgICB9Ci0gIH0pOwotfSwgdGhlRXJyb3IpOwotCi10ZW1wbGF0ZWRSU0Vycm9yZWRSZWFkZXIo
J1JlYWRhYmxlU3RyZWFtIChlcnJvcmVkIHZpYSByZXR1cm5pbmcgYSByZWplY3RlZCBwcm9taXNl
IGluIHN0YXJ0KSByZWFkZXInLCAoKSA9PiB7Ci0gIHJldHVybiBzdHJlYW1BbmREZWZhdWx0UmVh
ZGVyKG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoKSB7Ci0gICAgICByZXR1cm4gUHJv
bWlzZS5yZWplY3QodGhlRXJyb3IpOwotICAgIH0KLSAgfSkpOwotfSwgdGhlRXJyb3IpOwotCi10
ZW1wbGF0ZWRSU0Vycm9yZWRSZWFkZXIoJ1JlYWRhYmxlU3RyZWFtIHJlYWRlciAoZXJyb3JlZCBi
ZWZvcmUgZ2V0dGluZyByZWFkZXIpJywgKCkgPT4gewotICBsZXQgY29udHJvbGxlcjsKLSAgY29u
c3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0gICAgICBj
b250cm9sbGVyID0gYzsKLSAgICB9Ci0gIH0pOwotICBjb250cm9sbGVyLmVycm9yKHRoZUVycm9y
KTsKLSAgcmV0dXJuIHN0cmVhbUFuZERlZmF1bHRSZWFkZXIoc3RyZWFtKTsKLX0sIHRoZUVycm9y
KTsKLQotdGVtcGxhdGVkUlNFcnJvcmVkUmVhZGVyKCdSZWFkYWJsZVN0cmVhbSByZWFkZXIgKGVy
cm9yZWQgYWZ0ZXIgZ2V0dGluZyByZWFkZXIpJywgKCkgPT4gewotICBsZXQgY29udHJvbGxlcjsK
LSAgY29uc3QgcmVzdWx0ID0gc3RyZWFtQW5kRGVmYXVsdFJlYWRlcihuZXcgUmVhZGFibGVTdHJl
YW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGNvbnRyb2xsZXIgPSBjOwotICAgIH0KLSAgfSkp
OwotICBjb250cm9sbGVyLmVycm9yKHRoZUVycm9yKTsKLSAgcmV0dXJuIHJlc3VsdDsKLX0sIHRo
ZUVycm9yKTsKLQotdGVtcGxhdGVkUlNUd29DaHVua3NPcGVuUmVhZGVyKCdSZWFkYWJsZVN0cmVh
bSAodHdvIGNodW5rcyBlbnF1ZXVlZCwgc3RpbGwgb3BlbikgcmVhZGVyJywgKCkgPT4gewotICBy
ZXR1cm4gc3RyZWFtQW5kRGVmYXVsdFJlYWRlcihuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0
YXJ0KGMpIHsKLSAgICAgIGMuZW5xdWV1ZShjaHVua3NbMF0pOwotICAgICAgYy5lbnF1ZXVlKGNo
dW5rc1sxXSk7Ci0gICAgfQotICB9KSk7Ci19LCBjaHVua3MpOwotCi10ZW1wbGF0ZWRSU1R3b0No
dW5rc0Nsb3NlZFJlYWRlcignUmVhZGFibGVTdHJlYW0gKHR3byBjaHVua3MgZW5xdWV1ZWQsIHRo
ZW4gY2xvc2VkKSByZWFkZXInLCAoKSA9PiB7Ci0gIGxldCBkb0Nsb3NlOwotICBjb25zdCBzdHJl
YW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGMuZW5xdWV1
ZShjaHVua3NbMF0pOwotICAgICAgYy5lbnF1ZXVlKGNodW5rc1sxXSk7Ci0gICAgICBkb0Nsb3Nl
ID0gYy5jbG9zZS5iaW5kKGMpOwotICAgIH0KLSAgfSk7Ci0gIGNvbnN0IHJlc3VsdCA9IHN0cmVh
bUFuZERlZmF1bHRSZWFkZXIoc3RyZWFtKTsKLSAgZG9DbG9zZSgpOwotICByZXR1cm4gcmVzdWx0
OwotfSwgY2h1bmtzKTsKLQotZnVuY3Rpb24gc3RyZWFtQW5kRGVmYXVsdFJlYWRlcihzdHJlYW0p
IHsKLSAgcmV0dXJuIHsgc3RyZWFtLCByZWFkZXI6IHN0cmVhbS5nZXRSZWFkZXIoKSB9OwotfQot
Ci1kb25lKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy90ZW1wbGF0ZWQuc2VydmljZXdvcmtl
ci5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy90ZW1wbGF0ZWQuc2VydmljZXdvcmtl
ci5odHRwcy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQzN2Ew
M2FkZDY2N2VmOWY0ZTRmZGFmNGI4MTliYjk1ZjM0MDE1ZWQuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvdGVtcGxhdGVkLnNlcnZpY2V3
b3JrZXIuaHR0cHMtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsODkgKzAsMCBAQAot
Ci1QQVNTIFNlcnZpY2Ugd29ya2VyIHRlc3Qgc2V0dXAgCi1QQVNTIFJ1bm5pbmcgdGVtcGxhdGVk
UlNFbXB0eSB3aXRoIFJlYWRhYmxlU3RyZWFtIChlbXB0eSkgCi1QQVNTIFJlYWRhYmxlU3RyZWFt
IChlbXB0eSk6IGluc3RhbmNlcyBoYXZlIHRoZSBjb3JyZWN0IG1ldGhvZHMgYW5kIHByb3BlcnRp
ZXMgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIChlbXB0eSk6IGNhbGxpbmcgZ2V0UmVhZGVyIHdpdGgg
aW52YWxpZCBhcmd1bWVudHMgc2hvdWxkIHRocm93IGFwcHJvcHJpYXRlIGVycm9ycyAKLVBBU1Mg
UnVubmluZyB0ZW1wbGF0ZWRSU0VtcHR5UmVhZGVyIHdpdGggUmVhZGFibGVTdHJlYW0gKGVtcHR5
KSByZWFkZXIgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIChlbXB0eSkgcmVhZGVyOiBpbnN0YW5jZXMg
aGF2ZSB0aGUgY29ycmVjdCBtZXRob2RzIGFuZCBwcm9wZXJ0aWVzIAotUEFTUyBSZWFkYWJsZVN0
cmVhbSAoZW1wdHkpIHJlYWRlcjogbG9ja2VkIHNob3VsZCBiZSB0cnVlIAotUEFTUyBSZWFkYWJs
ZVN0cmVhbSAoZW1wdHkpIHJlYWRlcjogcmVhZCgpIHNob3VsZCBuZXZlciBzZXR0bGUgCi1QQVNT
IFJlYWRhYmxlU3RyZWFtIChlbXB0eSkgcmVhZGVyOiB0d28gcmVhZCgpcyBzaG91bGQgYm90aCBu
ZXZlciBzZXR0bGUgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIChlbXB0eSkgcmVhZGVyOiByZWFkKCkg
c2hvdWxkIHJldHVybiBkaXN0aW5jdCBwcm9taXNlcyBlYWNoIHRpbWUgCi1QQVNTIFJlYWRhYmxl
U3RyZWFtIChlbXB0eSkgcmVhZGVyOiBnZXRSZWFkZXIoKSBhZ2FpbiBvbiB0aGUgc3RyZWFtIHNo
b3VsZCBmYWlsIAotUEFTUyBSZWFkYWJsZVN0cmVhbSAoZW1wdHkpIHJlYWRlcjogcmVsZWFzaW5n
IHRoZSBsb2NrIHdpdGggcGVuZGluZyByZWFkIHJlcXVlc3RzIHNob3VsZCB0aHJvdyBidXQgdGhl
IHJlYWQgcmVxdWVzdHMgc2hvdWxkIHN0YXkgcGVuZGluZyAKLVBBU1MgUmVhZGFibGVTdHJlYW0g
KGVtcHR5KSByZWFkZXI6IHJlbGVhc2luZyB0aGUgbG9jayBzaG91bGQgY2F1c2UgZnVydGhlciBy
ZWFkKCkgY2FsbHMgdG8gcmVqZWN0IHdpdGggYSBUeXBlRXJyb3IgCi1QQVNTIFJlYWRhYmxlU3Ry
ZWFtIChlbXB0eSkgcmVhZGVyOiByZWxlYXNpbmcgdGhlIGxvY2sgc2hvdWxkIGNhdXNlIGNsb3Nl
ZCBjYWxscyB0byByZWplY3Qgd2l0aCBhIFR5cGVFcnJvciAKLVBBU1MgUmVhZGFibGVTdHJlYW0g
KGVtcHR5KSByZWFkZXI6IHJlbGVhc2luZyB0aGUgbG9jayBzaG91bGQgY2F1c2UgbG9ja2VkIHRv
IGJlY29tZSBmYWxzZSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gKGVtcHR5KSByZWFkZXI6IGNhbmNl
bGluZyB2aWEgdGhlIHJlYWRlciBzaG91bGQgY2F1c2UgdGhlIHJlYWRlciB0byBhY3QgY2xvc2Vk
IAotUEFTUyBSZWFkYWJsZVN0cmVhbSAoZW1wdHkpIHJlYWRlcjogY2FuY2VsaW5nIHZpYSB0aGUg
c3RyZWFtIHNob3VsZCBmYWlsIAotUEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTQ2xvc2VkIHdpdGgg
UmVhZGFibGVTdHJlYW0gKGNsb3NlZCB2aWEgY2FsbCBpbiBzdGFydCkgCi1QQVNTIFJlYWRhYmxl
U3RyZWFtIChjbG9zZWQgdmlhIGNhbGwgaW4gc3RhcnQpOiBjYW5jZWwoKSBzaG91bGQgcmV0dXJu
IGEgZGlzdGluY3QgZnVsZmlsbGVkIHByb21pc2UgZWFjaCB0aW1lIAotUEFTUyBSZWFkYWJsZVN0
cmVhbSAoY2xvc2VkIHZpYSBjYWxsIGluIHN0YXJ0KTogbG9ja2VkIHNob3VsZCBiZSBmYWxzZSAK
LVBBU1MgUmVhZGFibGVTdHJlYW0gKGNsb3NlZCB2aWEgY2FsbCBpbiBzdGFydCk6IGdldFJlYWRl
cigpIHNob3VsZCBiZSBPSyAKLVBBU1MgUmVhZGFibGVTdHJlYW0gKGNsb3NlZCB2aWEgY2FsbCBp
biBzdGFydCk6IHNob3VsZCBiZSBhYmxlIHRvIGFjcXVpcmUgbXVsdGlwbGUgcmVhZGVycyBpZiB0
aGV5IGFyZSByZWxlYXNlZCBpbiBzdWNjZXNzaW9uIAotUEFTUyBSZWFkYWJsZVN0cmVhbSAoY2xv
c2VkIHZpYSBjYWxsIGluIHN0YXJ0KTogc2hvdWxkIG5vdCBiZSBhYmxlIHRvIGFjcXVpcmUgYSBz
ZWNvbmQgcmVhZGVyIGlmIHdlIGRvbid0IHJlbGVhc2UgdGhlIGZpcnN0IG9uZSAKLVBBU1MgUnVu
bmluZyB0ZW1wbGF0ZWRSU0Nsb3NlZFJlYWRlciB3aXRoIFJlYWRhYmxlU3RyZWFtIHJlYWRlciAo
Y2xvc2VkIGJlZm9yZSBnZXR0aW5nIHJlYWRlcikgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIHJlYWRl
ciAoY2xvc2VkIGJlZm9yZSBnZXR0aW5nIHJlYWRlcik6IHJlYWQoKSBzaG91bGQgZnVsZmlsbCB3
aXRoIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9IAotUEFTUyBSZWFkYWJsZVN0cmVh
bSByZWFkZXIgKGNsb3NlZCBiZWZvcmUgZ2V0dGluZyByZWFkZXIpOiByZWFkKCkgbXVsdGlwbGUg
dGltZXMgc2hvdWxkIGZ1bGZpbGwgd2l0aCB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUg
fSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gcmVhZGVyIChjbG9zZWQgYmVmb3JlIGdldHRpbmcgcmVh
ZGVyKTogcmVhZCgpIHNob3VsZCB3b3JrIHdoZW4gdXNlZCB3aXRoaW4gYW5vdGhlciByZWFkKCkg
ZnVsZmlsbCBjYWxsYmFjayAKLVBBU1MgUmVhZGFibGVTdHJlYW0gcmVhZGVyIChjbG9zZWQgYmVm
b3JlIGdldHRpbmcgcmVhZGVyKTogY2xvc2VkIHNob3VsZCBmdWxmaWxsIHdpdGggdW5kZWZpbmVk
IAotUEFTUyBSZWFkYWJsZVN0cmVhbSByZWFkZXIgKGNsb3NlZCBiZWZvcmUgZ2V0dGluZyByZWFk
ZXIpOiByZWxlYXNpbmcgdGhlIGxvY2sgc2hvdWxkIGNhdXNlIGNsb3NlZCB0byByZWplY3QgYW5k
IGNoYW5nZSBpZGVudGl0eSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gcmVhZGVyIChjbG9zZWQgYmVm
b3JlIGdldHRpbmcgcmVhZGVyKTogY2FuY2VsKCkgc2hvdWxkIHJldHVybiBhIGRpc3RpbmN0IGZ1
bGZpbGxlZCBwcm9taXNlIGVhY2ggdGltZSAKLVBBU1MgUnVubmluZyB0ZW1wbGF0ZWRSU0Nsb3Nl
ZFJlYWRlciB3aXRoIFJlYWRhYmxlU3RyZWFtIHJlYWRlciAoY2xvc2VkIGFmdGVyIGdldHRpbmcg
cmVhZGVyKSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gcmVhZGVyIChjbG9zZWQgYWZ0ZXIgZ2V0dGlu
ZyByZWFkZXIpOiByZWFkKCkgc2hvdWxkIGZ1bGZpbGwgd2l0aCB7IHZhbHVlOiB1bmRlZmluZWQs
IGRvbmU6IHRydWUgfSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gcmVhZGVyIChjbG9zZWQgYWZ0ZXIg
Z2V0dGluZyByZWFkZXIpOiByZWFkKCkgbXVsdGlwbGUgdGltZXMgc2hvdWxkIGZ1bGZpbGwgd2l0
aCB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSAKLVBBU1MgUmVhZGFibGVTdHJlYW0g
cmVhZGVyIChjbG9zZWQgYWZ0ZXIgZ2V0dGluZyByZWFkZXIpOiByZWFkKCkgc2hvdWxkIHdvcmsg
d2hlbiB1c2VkIHdpdGhpbiBhbm90aGVyIHJlYWQoKSBmdWxmaWxsIGNhbGxiYWNrIAotUEFTUyBS
ZWFkYWJsZVN0cmVhbSByZWFkZXIgKGNsb3NlZCBhZnRlciBnZXR0aW5nIHJlYWRlcik6IGNsb3Nl
ZCBzaG91bGQgZnVsZmlsbCB3aXRoIHVuZGVmaW5lZCAKLVBBU1MgUmVhZGFibGVTdHJlYW0gcmVh
ZGVyIChjbG9zZWQgYWZ0ZXIgZ2V0dGluZyByZWFkZXIpOiByZWxlYXNpbmcgdGhlIGxvY2sgc2hv
dWxkIGNhdXNlIGNsb3NlZCB0byByZWplY3QgYW5kIGNoYW5nZSBpZGVudGl0eSAKLVBBU1MgUmVh
ZGFibGVTdHJlYW0gcmVhZGVyIChjbG9zZWQgYWZ0ZXIgZ2V0dGluZyByZWFkZXIpOiBjYW5jZWwo
KSBzaG91bGQgcmV0dXJuIGEgZGlzdGluY3QgZnVsZmlsbGVkIHByb21pc2UgZWFjaCB0aW1lIAot
UEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTQ2xvc2VkIHdpdGggUmVhZGFibGVTdHJlYW0gKGNsb3Nl
ZCB2aWEgY2FuY2VsKSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gKGNsb3NlZCB2aWEgY2FuY2VsKTog
Y2FuY2VsKCkgc2hvdWxkIHJldHVybiBhIGRpc3RpbmN0IGZ1bGZpbGxlZCBwcm9taXNlIGVhY2gg
dGltZSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gKGNsb3NlZCB2aWEgY2FuY2VsKTogbG9ja2VkIHNo
b3VsZCBiZSBmYWxzZSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gKGNsb3NlZCB2aWEgY2FuY2VsKTog
Z2V0UmVhZGVyKCkgc2hvdWxkIGJlIE9LIAotUEFTUyBSZWFkYWJsZVN0cmVhbSAoY2xvc2VkIHZp
YSBjYW5jZWwpOiBzaG91bGQgYmUgYWJsZSB0byBhY3F1aXJlIG11bHRpcGxlIHJlYWRlcnMgaWYg
dGhleSBhcmUgcmVsZWFzZWQgaW4gc3VjY2Vzc2lvbiAKLVBBU1MgUmVhZGFibGVTdHJlYW0gKGNs
b3NlZCB2aWEgY2FuY2VsKTogc2hvdWxkIG5vdCBiZSBhYmxlIHRvIGFjcXVpcmUgYSBzZWNvbmQg
cmVhZGVyIGlmIHdlIGRvbid0IHJlbGVhc2UgdGhlIGZpcnN0IG9uZSAKLVBBU1MgUnVubmluZyB0
ZW1wbGF0ZWRSU0Nsb3NlZFJlYWRlciB3aXRoIFJlYWRhYmxlU3RyZWFtIHJlYWRlciAoY2xvc2Vk
IHZpYSBjYW5jZWwgYWZ0ZXIgZ2V0dGluZyByZWFkZXIpIAotUEFTUyBSZWFkYWJsZVN0cmVhbSBy
ZWFkZXIgKGNsb3NlZCB2aWEgY2FuY2VsIGFmdGVyIGdldHRpbmcgcmVhZGVyKTogcmVhZCgpIHNo
b3VsZCBmdWxmaWxsIHdpdGggeyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0gCi1QQVNT
IFJlYWRhYmxlU3RyZWFtIHJlYWRlciAoY2xvc2VkIHZpYSBjYW5jZWwgYWZ0ZXIgZ2V0dGluZyBy
ZWFkZXIpOiByZWFkKCkgbXVsdGlwbGUgdGltZXMgc2hvdWxkIGZ1bGZpbGwgd2l0aCB7IHZhbHVl
OiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gcmVhZGVyIChj
bG9zZWQgdmlhIGNhbmNlbCBhZnRlciBnZXR0aW5nIHJlYWRlcik6IHJlYWQoKSBzaG91bGQgd29y
ayB3aGVuIHVzZWQgd2l0aGluIGFub3RoZXIgcmVhZCgpIGZ1bGZpbGwgY2FsbGJhY2sgCi1QQVNT
IFJlYWRhYmxlU3RyZWFtIHJlYWRlciAoY2xvc2VkIHZpYSBjYW5jZWwgYWZ0ZXIgZ2V0dGluZyBy
ZWFkZXIpOiBjbG9zZWQgc2hvdWxkIGZ1bGZpbGwgd2l0aCB1bmRlZmluZWQgCi1QQVNTIFJlYWRh
YmxlU3RyZWFtIHJlYWRlciAoY2xvc2VkIHZpYSBjYW5jZWwgYWZ0ZXIgZ2V0dGluZyByZWFkZXIp
OiByZWxlYXNpbmcgdGhlIGxvY2sgc2hvdWxkIGNhdXNlIGNsb3NlZCB0byByZWplY3QgYW5kIGNo
YW5nZSBpZGVudGl0eSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gcmVhZGVyIChjbG9zZWQgdmlhIGNh
bmNlbCBhZnRlciBnZXR0aW5nIHJlYWRlcik6IGNhbmNlbCgpIHNob3VsZCByZXR1cm4gYSBkaXN0
aW5jdCBmdWxmaWxsZWQgcHJvbWlzZSBlYWNoIHRpbWUgCi1QQVNTIFJ1bm5pbmcgdGVtcGxhdGVk
UlNFcnJvcmVkIHdpdGggUmVhZGFibGVTdHJlYW0gKGVycm9yZWQgdmlhIGNhbGwgaW4gc3RhcnQp
IAotUEFTUyBSZWFkYWJsZVN0cmVhbSAoZXJyb3JlZCB2aWEgY2FsbCBpbiBzdGFydCk6IGdldFJl
YWRlcigpIHNob3VsZCByZXR1cm4gYSByZWFkZXIgdGhhdCBhY3RzIGVycm9yZWQgCi1QQVNTIFJl
YWRhYmxlU3RyZWFtIChlcnJvcmVkIHZpYSBjYWxsIGluIHN0YXJ0KTogcmVhZCgpIHR3aWNlIHNo
b3VsZCBnaXZlIHRoZSBlcnJvciBlYWNoIHRpbWUgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIChlcnJv
cmVkIHZpYSBjYWxsIGluIHN0YXJ0KTogbG9ja2VkIHNob3VsZCBiZSBmYWxzZSAKLVBBU1MgUnVu
bmluZyB0ZW1wbGF0ZWRSU0Vycm9yZWRTeW5jT25seSB3aXRoIFJlYWRhYmxlU3RyZWFtIChlcnJv
cmVkIHZpYSBjYWxsIGluIHN0YXJ0KSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gKGVycm9yZWQgdmlh
IGNhbGwgaW4gc3RhcnQpOiBzaG91bGQgYmUgYWJsZSB0byBvYnRhaW4gYSBzZWNvbmQgcmVhZGVy
LCB3aXRoIHRoZSBjb3JyZWN0IGNsb3NlZCBwcm9taXNlIAotUEFTUyBSZWFkYWJsZVN0cmVhbSAo
ZXJyb3JlZCB2aWEgY2FsbCBpbiBzdGFydCk6IHNob3VsZCBub3QgYmUgYWJsZSB0byBvYnRhaW4g
YWRkaXRpb25hbCByZWFkZXJzIGlmIHdlIGRvbid0IHJlbGVhc2UgdGhlIGZpcnN0IGxvY2sgCi1Q
QVNTIFJlYWRhYmxlU3RyZWFtIChlcnJvcmVkIHZpYSBjYWxsIGluIHN0YXJ0KTogY2FuY2VsKCkg
c2hvdWxkIHJldHVybiBhIGRpc3RpbmN0IHJlamVjdGVkIHByb21pc2UgZWFjaCB0aW1lIAotUEFT
UyBSZWFkYWJsZVN0cmVhbSAoZXJyb3JlZCB2aWEgY2FsbCBpbiBzdGFydCk6IHJlYWRlciBjYW5j
ZWwoKSBzaG91bGQgcmV0dXJuIGEgZGlzdGluY3QgcmVqZWN0ZWQgcHJvbWlzZSBlYWNoIHRpbWUg
Ci1QQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNFcnJvcmVkIHdpdGggUmVhZGFibGVTdHJlYW0gKGVy
cm9yZWQgdmlhIHJldHVybmluZyBhIHJlamVjdGVkIHByb21pc2UgaW4gc3RhcnQpIAotUEFTUyBS
ZWFkYWJsZVN0cmVhbSAoZXJyb3JlZCB2aWEgcmV0dXJuaW5nIGEgcmVqZWN0ZWQgcHJvbWlzZSBp
biBzdGFydCk6IGdldFJlYWRlcigpIHNob3VsZCByZXR1cm4gYSByZWFkZXIgdGhhdCBhY3RzIGVy
cm9yZWQgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIChlcnJvcmVkIHZpYSByZXR1cm5pbmcgYSByZWpl
Y3RlZCBwcm9taXNlIGluIHN0YXJ0KTogcmVhZCgpIHR3aWNlIHNob3VsZCBnaXZlIHRoZSBlcnJv
ciBlYWNoIHRpbWUgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIChlcnJvcmVkIHZpYSByZXR1cm5pbmcg
YSByZWplY3RlZCBwcm9taXNlIGluIHN0YXJ0KTogbG9ja2VkIHNob3VsZCBiZSBmYWxzZSAKLVBB
U1MgUnVubmluZyB0ZW1wbGF0ZWRSU0Vycm9yZWRSZWFkZXIgd2l0aCBSZWFkYWJsZVN0cmVhbSAo
ZXJyb3JlZCB2aWEgcmV0dXJuaW5nIGEgcmVqZWN0ZWQgcHJvbWlzZSBpbiBzdGFydCkgcmVhZGVy
IAotUEFTUyBSZWFkYWJsZVN0cmVhbSAoZXJyb3JlZCB2aWEgcmV0dXJuaW5nIGEgcmVqZWN0ZWQg
cHJvbWlzZSBpbiBzdGFydCkgcmVhZGVyOiBjbG9zZWQgc2hvdWxkIHJlamVjdCB3aXRoIHRoZSBl
cnJvciAKLVBBU1MgUmVhZGFibGVTdHJlYW0gKGVycm9yZWQgdmlhIHJldHVybmluZyBhIHJlamVj
dGVkIHByb21pc2UgaW4gc3RhcnQpIHJlYWRlcjogcmVsZWFzaW5nIHRoZSBsb2NrIHNob3VsZCBj
YXVzZSBjbG9zZWQgdG8gcmVqZWN0IGFuZCBjaGFuZ2UgaWRlbnRpdHkgCi1QQVNTIFJlYWRhYmxl
U3RyZWFtIChlcnJvcmVkIHZpYSByZXR1cm5pbmcgYSByZWplY3RlZCBwcm9taXNlIGluIHN0YXJ0
KSByZWFkZXI6IHJlYWQoKSBzaG91bGQgcmVqZWN0IHdpdGggdGhlIGVycm9yIAotUEFTUyBSdW5u
aW5nIHRlbXBsYXRlZFJTRXJyb3JlZFJlYWRlciB3aXRoIFJlYWRhYmxlU3RyZWFtIHJlYWRlciAo
ZXJyb3JlZCBiZWZvcmUgZ2V0dGluZyByZWFkZXIpIAotUEFTUyBSZWFkYWJsZVN0cmVhbSByZWFk
ZXIgKGVycm9yZWQgYmVmb3JlIGdldHRpbmcgcmVhZGVyKTogY2xvc2VkIHNob3VsZCByZWplY3Qg
d2l0aCB0aGUgZXJyb3IgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIHJlYWRlciAoZXJyb3JlZCBiZWZv
cmUgZ2V0dGluZyByZWFkZXIpOiByZWxlYXNpbmcgdGhlIGxvY2sgc2hvdWxkIGNhdXNlIGNsb3Nl
ZCB0byByZWplY3QgYW5kIGNoYW5nZSBpZGVudGl0eSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gcmVh
ZGVyIChlcnJvcmVkIGJlZm9yZSBnZXR0aW5nIHJlYWRlcik6IHJlYWQoKSBzaG91bGQgcmVqZWN0
IHdpdGggdGhlIGVycm9yIAotUEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTRXJyb3JlZFJlYWRlciB3
aXRoIFJlYWRhYmxlU3RyZWFtIHJlYWRlciAoZXJyb3JlZCBhZnRlciBnZXR0aW5nIHJlYWRlcikg
Ci1QQVNTIFJlYWRhYmxlU3RyZWFtIHJlYWRlciAoZXJyb3JlZCBhZnRlciBnZXR0aW5nIHJlYWRl
cik6IGNsb3NlZCBzaG91bGQgcmVqZWN0IHdpdGggdGhlIGVycm9yIAotUEFTUyBSZWFkYWJsZVN0
cmVhbSByZWFkZXIgKGVycm9yZWQgYWZ0ZXIgZ2V0dGluZyByZWFkZXIpOiByZWxlYXNpbmcgdGhl
IGxvY2sgc2hvdWxkIGNhdXNlIGNsb3NlZCB0byByZWplY3QgYW5kIGNoYW5nZSBpZGVudGl0eSAK
LVBBU1MgUmVhZGFibGVTdHJlYW0gcmVhZGVyIChlcnJvcmVkIGFmdGVyIGdldHRpbmcgcmVhZGVy
KTogcmVhZCgpIHNob3VsZCByZWplY3Qgd2l0aCB0aGUgZXJyb3IgCi1QQVNTIFJ1bm5pbmcgdGVt
cGxhdGVkUlNUd29DaHVua3NPcGVuUmVhZGVyIHdpdGggUmVhZGFibGVTdHJlYW0gKHR3byBjaHVu
a3MgZW5xdWV1ZWQsIHN0aWxsIG9wZW4pIHJlYWRlciAKLVBBU1MgUmVhZGFibGVTdHJlYW0gKHR3
byBjaHVua3MgZW5xdWV1ZWQsIHN0aWxsIG9wZW4pIHJlYWRlcjogY2FsbGluZyByZWFkKCkgdHdp
Y2Ugd2l0aG91dCB3YWl0aW5nIHdpbGwgZXZlbnR1YWxseSBnaXZlIGJvdGggY2h1bmtzIChzZXF1
ZW50aWFsKSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gKHR3byBjaHVua3MgZW5xdWV1ZWQsIHN0aWxs
IG9wZW4pIHJlYWRlcjogY2FsbGluZyByZWFkKCkgdHdpY2Ugd2l0aG91dCB3YWl0aW5nIHdpbGwg
ZXZlbnR1YWxseSBnaXZlIGJvdGggY2h1bmtzIChuZXN0ZWQpIAotUEFTUyBSZWFkYWJsZVN0cmVh
bSAodHdvIGNodW5rcyBlbnF1ZXVlZCwgc3RpbGwgb3BlbikgcmVhZGVyOiByZWFkKCkgc2hvdWxk
IHJldHVybiBkaXN0aW5jdCBwcm9taXNlcyBlYWNoIHRpbWUgCi1QQVNTIFJlYWRhYmxlU3RyZWFt
ICh0d28gY2h1bmtzIGVucXVldWVkLCBzdGlsbCBvcGVuKSByZWFkZXI6IGNhbmNlbCgpIGFmdGVy
IGEgcmVhZCgpIHNob3VsZCBzdGlsbCBnaXZlIHRoYXQgc2luZ2xlIHJlYWQgcmVzdWx0IAotUEFT
UyBSdW5uaW5nIHRlbXBsYXRlZFJTVHdvQ2h1bmtzQ2xvc2VkUmVhZGVyIHdpdGggUmVhZGFibGVT
dHJlYW0gKHR3byBjaHVua3MgZW5xdWV1ZWQsIHRoZW4gY2xvc2VkKSByZWFkZXIgCi1QQVNTIFJl
YWRhYmxlU3RyZWFtICh0d28gY2h1bmtzIGVucXVldWVkLCB0aGVuIGNsb3NlZCkgcmVhZGVyOiB0
aGlyZCByZWFkKCksIHdpdGhvdXQgd2FpdGluZywgc2hvdWxkIGdpdmUgeyB2YWx1ZTogdW5kZWZp
bmVkLCBkb25lOiB0cnVlIH0gKHNlcXVlbnRpYWwpIAotUEFTUyBSZWFkYWJsZVN0cmVhbSAodHdv
IGNodW5rcyBlbnF1ZXVlZCwgdGhlbiBjbG9zZWQpIHJlYWRlcjogdGhpcmQgcmVhZCgpLCB3aXRo
b3V0IHdhaXRpbmcsIHNob3VsZCBnaXZlIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9
IChuZXN0ZWQpIAotUEFTUyBSZWFkYWJsZVN0cmVhbSAodHdvIGNodW5rcyBlbnF1ZXVlZCwgdGhl
biBjbG9zZWQpIHJlYWRlcjogZHJhaW5pbmcgdGhlIHN0cmVhbSB2aWEgcmVhZCgpIHNob3VsZCBj
YXVzZSB0aGUgcmVhZGVyIGNsb3NlZCBwcm9taXNlIHRvIGZ1bGZpbGwsIGJ1dCBsb2NrZWQgc3Rh
eXMgdHJ1ZSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gKHR3byBjaHVua3MgZW5xdWV1ZWQsIHRoZW4g
Y2xvc2VkKSByZWFkZXI6IHJlbGVhc2luZyB0aGUgbG9jayBhZnRlciB0aGUgc3RyZWFtIGlzIGNs
b3NlZCBzaG91bGQgY2F1c2UgbG9ja2VkIHRvIGJlY29tZSBmYWxzZSAKLVBBU1MgUmVhZGFibGVT
dHJlYW0gKHR3byBjaHVua3MgZW5xdWV1ZWQsIHRoZW4gY2xvc2VkKSByZWFkZXI6IHJlbGVhc2lu
ZyB0aGUgbG9jayBzaG91bGQgY2F1c2UgZnVydGhlciByZWFkKCkgY2FsbHMgdG8gcmVqZWN0IHdp
dGggYSBUeXBlRXJyb3IgCi1QQVNTIFJlYWRhYmxlU3RyZWFtICh0d28gY2h1bmtzIGVucXVldWVk
LCB0aGVuIGNsb3NlZCkgcmVhZGVyOiByZWFkZXIncyBjbG9zZWQgcHJvcGVydHkgYWx3YXlzIHJl
dHVybnMgdGhlIHNhbWUgcHJvbWlzZSAKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvdGVtcGxh
dGVkLnNlcnZpY2V3b3JrZXIuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3RlbXBsYXRlZC5zZXJ2
aWNld29ya2VyLmh0dHBzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAxYjA3
MTc1MTYwMjkzNGEyOTgyOWNmZmM5NTE4YTczYzMxMzAwNDYuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvdGVtcGxhdGVkLnNlcnZpY2V3
b3JrZXIuaHR0cHMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLTwhRE9DVFlQ
RSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHRpdGxlPnRlbXBsYXRlZC5qcyBzZXJ2
aWNlIHdvcmtlciB3cmFwcGVyIGZpbGU8L3RpdGxlPgotCi08c2NyaXB0IHNyYz0iL3Jlc291cmNl
cy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0
aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3NlcnZpY2Utd29ya2Vy
cy9zZXJ2aWNlLXdvcmtlci9yZXNvdXJjZXMvdGVzdC1oZWxwZXJzLnN1Yi5qcyI+PC9zY3JpcHQ+
Ci0KLTxzY3JpcHQ+Ci0ndXNlIHN0cmljdCc7Ci1zZXJ2aWNlX3dvcmtlcl90ZXN0KCd0ZW1wbGF0
ZWQuanMnLCAnU2VydmljZSB3b3JrZXIgdGVzdCBzZXR1cCcpOwotPC9zY3JpcHQ+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
cmVhZGFibGUtc3RyZWFtcy90ZW1wbGF0ZWQuc2hhcmVkd29ya2VyLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJs
ZS1zdHJlYW1zL3RlbXBsYXRlZC5zaGFyZWR3b3JrZXItZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwOWQ1ZDI1MDlkNzg0N2U4Y2Q2ZmU2NjA2YWE2MGNkZDMzYWE0
NzRlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1z
dHJlYW1zL3RlbXBsYXRlZC5zaGFyZWR3b3JrZXItZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwK
QEAgLTEsNSArMCwwIEBACi1DT05TT0xFIE1FU1NBR0U6IFJlZmVyZW5jZUVycm9yOiBDYW4ndCBm
aW5kIHZhcmlhYmxlOiBTaGFyZWRXb3JrZXIKLQotSGFybmVzcyBFcnJvciAoRkFJTCksIG1lc3Nh
Z2UgPSBSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogU2hhcmVkV29ya2VyCi0K
LQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvdGVtcGxhdGVkLnNoYXJlZHdvcmtlci5odG1sIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRh
YmxlLXN0cmVhbXMvdGVtcGxhdGVkLnNoYXJlZHdvcmtlci5odG1sCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBmZjYwZjE4NzhiY2YwMzZjN2ZmNzM0YjlhNGJkYjI3NzU4YmFjYzZiLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1z
L3RlbXBsYXRlZC5zaGFyZWR3b3JrZXIuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAg
QEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHRpdGxlPnRlbXBs
YXRlZC5qcyBzaGFyZWQgd29ya2VyIHdyYXBwZXIgZmlsZTwvdGl0bGU+Ci0KLTxzY3JpcHQgc3Jj
PSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLQotPHNjcmlwdD4KLSd1c2Ug
c3RyaWN0JzsKLWZldGNoX3Rlc3RzX2Zyb21fd29ya2VyKG5ldyBTaGFyZWRXb3JrZXIoJ3RlbXBs
YXRlZC5qcycpKTsKLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvdzNjLWltcG9y
dC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvcmVhZGFibGUtc3RyZWFtcy93M2MtaW1wb3J0LmxvZwppbmRleCAwNDM1MzRlNTBmNDU3M2Vh
YzFmMjhkNTU0NTVlOTk3MmViZWNlNmJhLi45YzcxYzQ3MDU4ZTM0MmJkZmNjOTZlOTc1N2IwMDRm
ZmRkNDQ0ZDEyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy93M2MtaW1wb3J0LmxvZworKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFi
bGUtc3RyZWFtcy93M2MtaW1wb3J0LmxvZwpAQCAtMSw3ICsxLDcgQEAKIFRoZSB0ZXN0cyBpbiB0
aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgogRG8g
Tk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCiBJbnN0ZWFkLCBjcmVh
dGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29t
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMKKwlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3Jt
LXRlc3RzL3dwdAogCiBUaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3Rz
IGluIFdlYktpdCB0byByZWltcG9ydAogCkBAIC0xNCw1OCArMTQsMTcgQEAgUHJvcGVydHkgdmFs
dWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6CiBOb25lCiAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIExp
c3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvYmFkLXN0cmF0ZWdpZXMuZGVkaWNhdGVkd29ya2Vy
Lmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvcmVhZGFibGUtc3RyZWFtcy9iYWQtc3RyYXRlZ2llcy5odG1sCi0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvYmFk
LXN0cmF0ZWdpZXMuanMKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9iYWQtc3RyYXRlZ2llcy5zZXJ2aWNld29ya2Vy
Lmh0dHBzLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9iYWQtc3RyYXRlZ2llcy5zaGFyZWR3b3JrZXIuaHRt
bAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9y
ZWFkYWJsZS1zdHJlYW1zL2JhZC11bmRlcmx5aW5nLXNvdXJjZXMuZGVkaWNhdGVkd29ya2VyLmh0
bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
cmVhZGFibGUtc3RyZWFtcy9iYWQtdW5kZXJseWluZy1zb3VyY2VzLmh0bWwKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFt
cy9iYWQtdW5kZXJseWluZy1zb3VyY2VzLmpzCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvYmFkLXVuZGVybHlpbmct
c291cmNlcy5zZXJ2aWNld29ya2VyLmh0dHBzLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9iYWQtdW5kZXJs
eWluZy1zb3VyY2VzLnNoYXJlZHdvcmtlci5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvYnJhbmQtY2hlY2tz
LmRlZGljYXRlZHdvcmtlci5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvYnJhbmQtY2hlY2tzLmh0bWwKLS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFi
bGUtc3RyZWFtcy9icmFuZC1jaGVja3MuanMKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9icmFuZC1jaGVja3Muc2Vy
dmljZXdvcmtlci5odHRwcy5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvYnJhbmQtY2hlY2tzLnNoYXJlZHdv
cmtlci5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
dHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvY2FuY2VsLmRlZGljYXRlZHdvcmtlci5odG1sCi0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxl
LXN0cmVhbXMvY2FuY2VsLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9jYW5jZWwuanMKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFt
cy9jYW5jZWwuc2VydmljZXdvcmtlci5odHRwcy5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvY2FuY2VsLnNo
YXJlZHdvcmtlci5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvY291bnQtcXVldWluZy1zdHJhdGVneS1pbnRl
Z3JhdGlvbi5kZWRpY2F0ZWR3b3JrZXIuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2NvdW50LXF1ZXVpbmct
c3RyYXRlZ3ktaW50ZWdyYXRpb24uaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2NvdW50LXF1ZXVpbmctc3Ry
YXRlZ3ktaW50ZWdyYXRpb24uanMKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5
LWludGVncmF0aW9uLnNlcnZpY2V3b3JrZXIuaHR0cHMuaHRtbAotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2NvdW50
LXF1ZXVpbmctc3RyYXRlZ3ktaW50ZWdyYXRpb24uc2hhcmVkd29ya2VyLmh0bWwKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3Ry
ZWFtcy9kZWZhdWx0LXJlYWRlci5kZWRpY2F0ZWR3b3JrZXIuaHRtbAotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2Rl
ZmF1bHQtcmVhZGVyLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9kZWZhdWx0LXJlYWRlci5qcwotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1z
dHJlYW1zL2RlZmF1bHQtcmVhZGVyLnNlcnZpY2V3b3JrZXIuaHR0cHMuaHRtbAotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJl
YW1zL2RlZmF1bHQtcmVhZGVyLnNoYXJlZHdvcmtlci5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZmxvYXRp
bmctcG9pbnQtdG90YWwtcXVldWUtc2l6ZS5kZWRpY2F0ZWR3b3JrZXIuaHRtbAotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJl
YW1zL2Zsb2F0aW5nLXBvaW50LXRvdGFsLXF1ZXVlLXNpemUuaHRtbAotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2Zs
b2F0aW5nLXBvaW50LXRvdGFsLXF1ZXVlLXNpemUuanMKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9mbG9hdGluZy1w
b2ludC10b3RhbC1xdWV1ZS1zaXplLnNlcnZpY2V3b3JrZXIuaHR0cHMuaHRtbAotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJl
YW1zL2Zsb2F0aW5nLXBvaW50LXRvdGFsLXF1ZXVlLXNpemUuc2hhcmVkd29ya2VyLmh0bWwKLS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFi
bGUtc3RyZWFtcy9nYXJiYWdlLWNvbGxlY3Rpb24uZGVkaWNhdGVkd29ya2VyLmh0bWwKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUt
c3RyZWFtcy9nYXJiYWdlLWNvbGxlY3Rpb24uaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2dhcmJhZ2UtY29s
bGVjdGlvbi5qcwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2dhcmJhZ2UtY29sbGVjdGlvbi5zZXJ2aWNld29ya2Vy
Lmh0dHBzLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9nYXJiYWdlLWNvbGxlY3Rpb24uc2hhcmVkd29ya2Vy
Lmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvcmVhZGFibGUtc3RyZWFtcy9nZW5lcmFsLmRlZGljYXRlZHdvcmtlci5odG1sCi0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0
cmVhbXMvZ2VuZXJhbC5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZ2VuZXJhbC5qcwotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1z
L2dlbmVyYWwuc2VydmljZXdvcmtlci5odHRwcy5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZ2VuZXJhbC5z
aGFyZWR3b3JrZXIuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3RlZS5kZWRpY2F0ZWR3b3JrZXIuaHRtbAot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFk
YWJsZS1zdHJlYW1zL3RlZS5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvdGVlLmpzCi0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMv
dGVlLnNlcnZpY2V3b3JrZXIuaHR0cHMuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3RlZS5zaGFyZWR3b3Jr
ZXIuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3RlbXBsYXRlZC5kZWRpY2F0ZWR3b3JrZXIuaHRtbAotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJs
ZS1zdHJlYW1zL3RlbXBsYXRlZC5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvdGVtcGxhdGVkLmpzCi0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxl
LXN0cmVhbXMvdGVtcGxhdGVkLnNlcnZpY2V3b3JrZXIuaHR0cHMuaHRtbAotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1z
L3RlbXBsYXRlZC5zaGFyZWR3b3JrZXIuaHRtbAorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2FzeW5jLWl0ZXJhdG9y
LmFueS5qcworL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2JhZC1zdHJhdGVnaWVzLmFueS5qcworL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1z
L2JhZC11bmRlcmx5aW5nLXNvdXJjZXMuYW55LmpzCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvY2FuY2VsLmFueS5q
cworL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9y
ZWFkYWJsZS1zdHJlYW1zL2NvbnN0cnVjdG9yLmFueS5qcworL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2NvdW50LXF1
ZXVpbmctc3RyYXRlZ3ktaW50ZWdyYXRpb24uYW55LmpzCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZGVmYXVsdC1y
ZWFkZXIuYW55LmpzCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZmxvYXRpbmctcG9pbnQtdG90YWwtcXVldWUtc2l6
ZS5hbnkuanMKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9nYXJiYWdlLWNvbGxlY3Rpb24uYW55LmpzCisvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0
cmVhbXMvZ2VuZXJhbC5hbnkuanMKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9wYXRjaGVkLWdsb2JhbC5hbnkuanMK
Ky9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVh
ZGFibGUtc3RyZWFtcy9yZWVudHJhbnQtc3RyYXRlZ2llcy5hbnkuanMKKy9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy90
ZWUuYW55LmpzCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
dHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvdGVtcGxhdGVkLmFueS5qcwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3Jlc291cmNl
cy9ycy10ZXN0LXRlbXBsYXRlcy5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy9yZXNvdXJjZXMvcnMtdGVzdC10ZW1wbGF0ZXMuanMKaW5kZXgg
ZWY2OGUwYWRlNjQ3YmFmNWRkZjAwMjYxNWU0ZTRlZmRiNWRiYWUwMi4uNzAwYmQ5YzNjYTlmOWU5
MmM4NjUxMmJmMzhmOTAzOTQ0YmU5YmRjZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3Jlc291cmNlcy9ycy10ZXN0LXRlbXBs
YXRlcy5qcworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMvcmVzb3VyY2VzL3JzLXRlc3QtdGVtcGxhdGVzLmpzCkBAIC0yMywxMCArMjMsMTMg
QEAgc2VsZi50ZW1wbGF0ZWRSU0VtcHR5ID0gKGxhYmVsLCBmYWN0b3J5KSA9PiB7CiAgIHRlc3Qo
KCkgPT4gewogICAgIGNvbnN0IHJzID0gZmFjdG9yeSgpOwogCi0gICAgYXNzZXJ0X3Rocm93cyhu
ZXcgUmFuZ2VFcnJvcigpLCAoKSA9PiBycy5nZXRSZWFkZXIoeyBtb2RlOiAnJyB9KSwgJ2VtcHR5
IHN0cmluZyBtb2RlIHNob3VsZCB0aHJvdycpOwotICAgIGFzc2VydF90aHJvd3MobmV3IFJhbmdl
RXJyb3IoKSwgKCkgPT4gcnMuZ2V0UmVhZGVyKHsgbW9kZTogbnVsbCB9KSwgJ251bGwgbW9kZSBz
aG91bGQgdGhyb3cnKTsKLSAgICBhc3NlcnRfdGhyb3dzKG5ldyBSYW5nZUVycm9yKCksICgpID0+
IHJzLmdldFJlYWRlcih7IG1vZGU6ICdhc2RmJyB9KSwgJ2FzZGYgbW9kZSBzaG91bGQgdGhyb3cn
KTsKLSAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gcnMuZ2V0UmVhZGVy
KG51bGwpLCAnbnVsbCBzaG91bGQgdGhyb3cnKTsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVF
cnJvciwgKCkgPT4gcnMuZ2V0UmVhZGVyKHsgbW9kZTogJycgfSksICdlbXB0eSBzdHJpbmcgbW9k
ZSBzaG91bGQgdGhyb3cnKTsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4g
cnMuZ2V0UmVhZGVyKHsgbW9kZTogbnVsbCB9KSwgJ251bGwgbW9kZSBzaG91bGQgdGhyb3cnKTsK
KyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4gcnMuZ2V0UmVhZGVyKHsgbW9k
ZTogJ2FzZGYnIH0pLCAnYXNkZiBtb2RlIHNob3VsZCB0aHJvdycpOworICAgIGFzc2VydF90aHJv
d3NfanMoVHlwZUVycm9yLCAoKSA9PiBycy5nZXRSZWFkZXIoNSksICc1IHNob3VsZCB0aHJvdycp
OworCisgICAgLy8gU2hvdWxkIG5vdCB0aHJvdworICAgIHJzLmdldFJlYWRlcihudWxsKTsKIAog
ICB9LCBsYWJlbCArICc6IGNhbGxpbmcgZ2V0UmVhZGVyIHdpdGggaW52YWxpZCBhcmd1bWVudHMg
c2hvdWxkIHRocm93IGFwcHJvcHJpYXRlIGVycm9ycycpOwogfTsKQEAgLTgzLDggKzg2LDggQEAg
c2VsZi50ZW1wbGF0ZWRSU0Nsb3NlZCA9IChsYWJlbCwgZmFjdG9yeSkgPT4gewogCiAgICAgcnMu
Z2V0UmVhZGVyKCk7CiAKLSAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4g
cnMuZ2V0UmVhZGVyKCksICdnZXR0aW5nIGEgc2Vjb25kIHJlYWRlciBzaG91bGQgdGhyb3cnKTsK
LSAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gcnMuZ2V0UmVhZGVyKCks
ICdnZXR0aW5nIGEgdGhpcmQgcmVhZGVyIHNob3VsZCB0aHJvdycpOworICAgIGFzc2VydF90aHJv
d3NfanMoVHlwZUVycm9yLCAoKSA9PiBycy5nZXRSZWFkZXIoKSwgJ2dldHRpbmcgYSBzZWNvbmQg
cmVhZGVyIHNob3VsZCB0aHJvdycpOworICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAo
KSA9PiBycy5nZXRSZWFkZXIoKSwgJ2dldHRpbmcgYSB0aGlyZCByZWFkZXIgc2hvdWxkIHRocm93
Jyk7CiAKICAgfSwgbGFiZWwgKyAnOiBzaG91bGQgbm90IGJlIGFibGUgdG8gYWNxdWlyZSBhIHNl
Y29uZCByZWFkZXIgaWYgd2UgZG9uXCd0IHJlbGVhc2UgdGhlIGZpcnN0IG9uZScpOwogfTsKQEAg
LTk4LDggKzEwMSw4IEBAIHNlbGYudGVtcGxhdGVkUlNFcnJvcmVkID0gKGxhYmVsLCBmYWN0b3J5
LCBlcnJvcikgPT4gewogICAgIGNvbnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcigpOwogCiAgICAg
cmV0dXJuIFByb21pc2UuYWxsKFsKLSAgICAgIHByb21pc2VfcmVqZWN0cyh0LCBlcnJvciwgcmVh
ZGVyLmNsb3NlZCksCi0gICAgICBwcm9taXNlX3JlamVjdHModCwgZXJyb3IsIHJlYWRlci5yZWFk
KCkpCisgICAgICBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvciwgcmVhZGVyLmNsb3Nl
ZCksCisgICAgICBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvciwgcmVhZGVyLnJlYWQo
KSkKICAgICBdKTsKIAogICB9LCBsYWJlbCArICc6IGdldFJlYWRlcigpIHNob3VsZCByZXR1cm4g
YSByZWFkZXIgdGhhdCBhY3RzIGVycm9yZWQnKTsKQEAgLTExMCw5ICsxMTMsOSBAQCBzZWxmLnRl
bXBsYXRlZFJTRXJyb3JlZCA9IChsYWJlbCwgZmFjdG9yeSwgZXJyb3IpID0+IHsKICAgICBjb25z
dCByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKIAogICAgIHJldHVybiBQcm9taXNlLmFsbChbCi0g
ICAgICBwcm9taXNlX3JlamVjdHModCwgZXJyb3IsIHJlYWRlci5yZWFkKCkpLAotICAgICAgcHJv
bWlzZV9yZWplY3RzKHQsIGVycm9yLCByZWFkZXIucmVhZCgpKSwKLSAgICAgIHByb21pc2VfcmVq
ZWN0cyh0LCBlcnJvciwgcmVhZGVyLmNsb3NlZCkKKyAgICAgIHByb21pc2VfcmVqZWN0c19leGFj
dGx5KHQsIGVycm9yLCByZWFkZXIucmVhZCgpKSwKKyAgICAgIHByb21pc2VfcmVqZWN0c19leGFj
dGx5KHQsIGVycm9yLCByZWFkZXIucmVhZCgpKSwKKyAgICAgIHByb21pc2VfcmVqZWN0c19leGFj
dGx5KHQsIGVycm9yLCByZWFkZXIuY2xvc2VkKQogICAgIF0pOwogCiAgIH0sIGxhYmVsICsgJzog
cmVhZCgpIHR3aWNlIHNob3VsZCBnaXZlIHRoZSBlcnJvciBlYWNoIHRpbWUnKTsKQEAgLTEzMyw3
ICsxMzYsNyBAQCBzZWxmLnRlbXBsYXRlZFJTRXJyb3JlZFN5bmNPbmx5ID0gKGxhYmVsLCBmYWN0
b3J5LCBlcnJvcikgPT4gewogICAgIHJzLmdldFJlYWRlcigpLnJlbGVhc2VMb2NrKCk7CiAgICAg
Y29uc3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7IC8vIENhbGxpbmcgZ2V0UmVhZGVyKCkgdHdp
Y2UgZG9lcyBub3QgdGhyb3cgKHRoZSBzdHJlYW0gaXMgbm90IGxvY2tlZCkuCiAKLSAgICByZXR1
cm4gcHJvbWlzZV9yZWplY3RzKHQsIGVycm9yLCByZWFkZXIuY2xvc2VkKTsKKyAgICByZXR1cm4g
cHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IsIHJlYWRlci5jbG9zZWQpOwogCiAgIH0s
IGxhYmVsICsgJzogc2hvdWxkIGJlIGFibGUgdG8gb2J0YWluIGEgc2Vjb25kIHJlYWRlciwgd2l0
aCB0aGUgY29ycmVjdCBjbG9zZWQgcHJvbWlzZScpOwogCkBAIC0xNDIsOCArMTQ1LDggQEAgc2Vs
Zi50ZW1wbGF0ZWRSU0Vycm9yZWRTeW5jT25seSA9IChsYWJlbCwgZmFjdG9yeSwgZXJyb3IpID0+
IHsKICAgICBjb25zdCBycyA9IGZhY3RvcnkoKTsKICAgICBycy5nZXRSZWFkZXIoKTsKIAotICAg
IGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBycy5nZXRSZWFkZXIoKSwgJ2dl
dHRpbmcgYSBzZWNvbmQgcmVhZGVyIHNob3VsZCB0aHJvdyBhIFR5cGVFcnJvcicpOwotICAgIGFz
c2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBycy5nZXRSZWFkZXIoKSwgJ2dldHRp
bmcgYSB0aGlyZCByZWFkZXIgc2hvdWxkIHRocm93IGEgVHlwZUVycm9yJyk7CisgICAgYXNzZXJ0
X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IHJzLmdldFJlYWRlcigpLCAnZ2V0dGluZyBhIHNl
Y29uZCByZWFkZXIgc2hvdWxkIHRocm93IGEgVHlwZUVycm9yJyk7CisgICAgYXNzZXJ0X3Rocm93
c19qcyhUeXBlRXJyb3IsICgpID0+IHJzLmdldFJlYWRlcigpLCAnZ2V0dGluZyBhIHRoaXJkIHJl
YWRlciBzaG91bGQgdGhyb3cgYSBUeXBlRXJyb3InKTsKIAogICB9LCBsYWJlbCArICc6IHNob3Vs
ZCBub3QgYmUgYWJsZSB0byBvYnRhaW4gYWRkaXRpb25hbCByZWFkZXJzIGlmIHdlIGRvblwndCBy
ZWxlYXNlIHRoZSBmaXJzdCBsb2NrJyk7CiAKQEAgLTE1Niw4ICsxNTksOCBAQCBzZWxmLnRlbXBs
YXRlZFJTRXJyb3JlZFN5bmNPbmx5ID0gKGxhYmVsLCBmYWN0b3J5LCBlcnJvcikgPT4gewogICAg
IGFzc2VydF9ub3RfZXF1YWxzKGNhbmNlbFByb21pc2UxLCBjYW5jZWxQcm9taXNlMiwgJ2NhbmNl
bCgpIGNhbGxzIHNob3VsZCByZXR1cm4gZGlzdGluY3QgcHJvbWlzZXMnKTsKIAogICAgIHJldHVy
biBQcm9taXNlLmFsbChbCi0gICAgICBwcm9taXNlX3JlamVjdHModCwgZXJyb3IsIGNhbmNlbFBy
b21pc2UxKSwKLSAgICAgIHByb21pc2VfcmVqZWN0cyh0LCBlcnJvciwgY2FuY2VsUHJvbWlzZTIp
CisgICAgICBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvciwgY2FuY2VsUHJvbWlzZTEp
LAorICAgICAgcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IsIGNhbmNlbFByb21pc2Uy
KQogICAgIF0pOwogCiAgIH0sIGxhYmVsICsgJzogY2FuY2VsKCkgc2hvdWxkIHJldHVybiBhIGRp
c3RpbmN0IHJlamVjdGVkIHByb21pc2UgZWFjaCB0aW1lJyk7CkBAIC0xNzIsOCArMTc1LDggQEAg
c2VsZi50ZW1wbGF0ZWRSU0Vycm9yZWRTeW5jT25seSA9IChsYWJlbCwgZmFjdG9yeSwgZXJyb3Ip
ID0+IHsKICAgICBhc3NlcnRfbm90X2VxdWFscyhjYW5jZWxQcm9taXNlMSwgY2FuY2VsUHJvbWlz
ZTIsICdjYW5jZWwoKSBjYWxscyBzaG91bGQgcmV0dXJuIGRpc3RpbmN0IHByb21pc2VzJyk7CiAK
ICAgICByZXR1cm4gUHJvbWlzZS5hbGwoWwotICAgICAgcHJvbWlzZV9yZWplY3RzKHQsIGVycm9y
LCBjYW5jZWxQcm9taXNlMSksCi0gICAgICBwcm9taXNlX3JlamVjdHModCwgZXJyb3IsIGNhbmNl
bFByb21pc2UyKQorICAgICAgcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IsIGNhbmNl
bFByb21pc2UxKSwKKyAgICAgIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yLCBjYW5j
ZWxQcm9taXNlMikKICAgICBdKTsKIAogICB9LCBsYWJlbCArICc6IHJlYWRlciBjYW5jZWwoKSBz
aG91bGQgcmV0dXJuIGEgZGlzdGluY3QgcmVqZWN0ZWQgcHJvbWlzZSBlYWNoIHRpbWUnKTsKQEAg
LTI0NCw3ICsyNDcsNyBAQCBzZWxmLnRlbXBsYXRlZFJTRW1wdHlSZWFkZXIgPSAobGFiZWwsIGZh
Y3RvcnkpID0+IHsKICAgdGVzdCgoKSA9PiB7CiAKICAgICBjb25zdCBzdHJlYW0gPSBmYWN0b3J5
KCkuc3RyZWFtOwotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBzdHJl
YW0uZ2V0UmVhZGVyKCksICdzdHJlYW0uZ2V0UmVhZGVyKCkgc2hvdWxkIHRocm93IGEgVHlwZUVy
cm9yJyk7CisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IHN0cmVhbS5nZXRS
ZWFkZXIoKSwgJ3N0cmVhbS5nZXRSZWFkZXIoKSBzaG91bGQgdGhyb3cgYSBUeXBlRXJyb3InKTsK
IAogICB9LCBsYWJlbCArICc6IGdldFJlYWRlcigpIGFnYWluIG9uIHRoZSBzdHJlYW0gc2hvdWxk
IGZhaWwnKTsKIApAQCAtMjY5LDcgKzI3Miw3IEBAIHNlbGYudGVtcGxhdGVkUlNFbXB0eVJlYWRl
ciA9IChsYWJlbCwgZmFjdG9yeSkgPT4gewogICAgICAgdC51bnJlYWNoZWRfZnVuYygnY2xvc2Vk
IHNob3VsZCBub3QgcmVqZWN0JykKICAgICApOwogCi0gICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlw
ZUVycm9yKCksICgpID0+IHJlYWRlci5yZWxlYXNlTG9jaygpLCAncmVsZWFzZUxvY2sgc2hvdWxk
IHRocm93IGEgVHlwZUVycm9yJyk7CisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgp
ID0+IHJlYWRlci5yZWxlYXNlTG9jaygpLCAncmVsZWFzZUxvY2sgc2hvdWxkIHRocm93IGEgVHlw
ZUVycm9yJyk7CiAKICAgICBhc3NlcnRfdHJ1ZShzdHJlYW0ubG9ja2VkLCAndGhlIHN0cmVhbSBz
aG91bGQgc3RpbGwgYmUgbG9ja2VkJyk7CiAKQEAgLTI4Myw4ICsyODYsOCBAQCBzZWxmLnRlbXBs
YXRlZFJTRW1wdHlSZWFkZXIgPSAobGFiZWwsIGZhY3RvcnkpID0+IHsKICAgICByZWFkZXIucmVs
ZWFzZUxvY2soKTsKIAogICAgIHJldHVybiBQcm9taXNlLmFsbChbCi0gICAgICBwcm9taXNlX3Jl
amVjdHModCwgbmV3IFR5cGVFcnJvcigpLCByZWFkZXIucmVhZCgpKSwKLSAgICAgIHByb21pc2Vf
cmVqZWN0cyh0LCBuZXcgVHlwZUVycm9yKCksIHJlYWRlci5yZWFkKCkpCisgICAgICBwcm9taXNl
X3JlamVjdHNfanModCwgVHlwZUVycm9yLCByZWFkZXIucmVhZCgpKSwKKyAgICAgIHByb21pc2Vf
cmVqZWN0c19qcyh0LCBUeXBlRXJyb3IsIHJlYWRlci5yZWFkKCkpCiAgICAgXSk7CiAKICAgfSwg
bGFiZWwgKyAnOiByZWxlYXNpbmcgdGhlIGxvY2sgc2hvdWxkIGNhdXNlIGZ1cnRoZXIgcmVhZCgp
IGNhbGxzIHRvIHJlamVjdCB3aXRoIGEgVHlwZUVycm9yJyk7CkBAIC0yOTksNyArMzAyLDcgQEAg
c2VsZi50ZW1wbGF0ZWRSU0VtcHR5UmVhZGVyID0gKGxhYmVsLCBmYWN0b3J5KSA9PiB7CiAKICAg
ICBhc3NlcnRfZXF1YWxzKGNsb3NlZEJlZm9yZSwgY2xvc2VkQWZ0ZXIsICd0aGUgY2xvc2VkIHBy
b21pc2Ugc2hvdWxkIG5vdCBjaGFuZ2UgaWRlbnRpdHknKTsKIAotICAgIHJldHVybiBwcm9taXNl
X3JlamVjdHModCwgbmV3IFR5cGVFcnJvcigpLCBjbG9zZWRCZWZvcmUpOworICAgIHJldHVybiBw
cm9taXNlX3JlamVjdHNfanModCwgVHlwZUVycm9yLCBjbG9zZWRCZWZvcmUpOwogCiAgIH0sIGxh
YmVsICsgJzogcmVsZWFzaW5nIHRoZSBsb2NrIHNob3VsZCBjYXVzZSBjbG9zZWQgY2FsbHMgdG8g
cmVqZWN0IHdpdGggYSBUeXBlRXJyb3InKTsKIApAQCAtMzI4LDcgKzMzMSw3IEBAIHNlbGYudGVt
cGxhdGVkUlNFbXB0eVJlYWRlciA9IChsYWJlbCwgZmFjdG9yeSkgPT4gewogICBwcm9taXNlX3Rl
c3QodCA9PiB7CiAKICAgICBjb25zdCBzdHJlYW0gPSBmYWN0b3J5KCkuc3RyZWFtOwotICAgIHJl
dHVybiBwcm9taXNlX3JlamVjdHModCwgbmV3IFR5cGVFcnJvcigpLCBzdHJlYW0uY2FuY2VsKCkp
OworICAgIHJldHVybiBwcm9taXNlX3JlamVjdHNfanModCwgVHlwZUVycm9yLCBzdHJlYW0uY2Fu
Y2VsKCkpOwogCiAgIH0sIGxhYmVsICsgJzogY2FuY2VsaW5nIHZpYSB0aGUgc3RyZWFtIHNob3Vs
ZCBmYWlsJyk7CiB9OwpAQCAtMzkxLDcgKzM5NCw3IEBAIHNlbGYudGVtcGxhdGVkUlNDbG9zZWRS
ZWFkZXIgPSAobGFiZWwsIGZhY3RvcnkpID0+IHsKIAogICAgIHJldHVybiBQcm9taXNlLmFsbChb
CiAgICAgICBjbG9zZWRCZWZvcmUudGhlbih2ID0+IGFzc2VydF9lcXVhbHModiwgdW5kZWZpbmVk
LCAncmVhZGVyLmNsb3NlZCBhY3F1aXJlZCBiZWZvcmUgcmVsZWFzZSBzaG91bGQgZnVsZmlsbCcp
KSwKLSAgICAgIHByb21pc2VfcmVqZWN0cyh0LCBuZXcgVHlwZUVycm9yKCksIGNsb3NlZEFmdGVy
KQorICAgICAgcHJvbWlzZV9yZWplY3RzX2pzKHQsIFR5cGVFcnJvciwgY2xvc2VkQWZ0ZXIpCiAg
ICAgXSk7CiAKICAgfSwgbGFiZWwgKyAnOiByZWxlYXNpbmcgdGhlIGxvY2sgc2hvdWxkIGNhdXNl
IGNsb3NlZCB0byByZWplY3QgYW5kIGNoYW5nZSBpZGVudGl0eScpOwpAQCAtNDIxLDcgKzQyNCw3
IEBAIHNlbGYudGVtcGxhdGVkUlNFcnJvcmVkUmVhZGVyID0gKGxhYmVsLCBmYWN0b3J5LCBlcnJv
cikgPT4gewogICBwcm9taXNlX3Rlc3QodCA9PiB7CiAKICAgICBjb25zdCByZWFkZXIgPSBmYWN0
b3J5KCkucmVhZGVyOwotICAgIHJldHVybiBwcm9taXNlX3JlamVjdHModCwgZXJyb3IsIHJlYWRl
ci5jbG9zZWQpOworICAgIHJldHVybiBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvciwg
cmVhZGVyLmNsb3NlZCk7CiAKICAgfSwgbGFiZWwgKyAnOiBjbG9zZWQgc2hvdWxkIHJlamVjdCB3
aXRoIHRoZSBlcnJvcicpOwogCkBAIC00MzAsMTMgKzQzMywxMyBAQCBzZWxmLnRlbXBsYXRlZFJT
RXJyb3JlZFJlYWRlciA9IChsYWJlbCwgZmFjdG9yeSwgZXJyb3IpID0+IHsKICAgICBjb25zdCBy
ZWFkZXIgPSBmYWN0b3J5KCkucmVhZGVyOwogICAgIGNvbnN0IGNsb3NlZEJlZm9yZSA9IHJlYWRl
ci5jbG9zZWQ7CiAKLSAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHQsIGVycm9yLCBjbG9zZWRC
ZWZvcmUpLnRoZW4oKCkgPT4geworICAgIHJldHVybiBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0
LCBlcnJvciwgY2xvc2VkQmVmb3JlKS50aGVuKCgpID0+IHsKICAgICAgIHJlYWRlci5yZWxlYXNl
TG9jaygpOwogCiAgICAgICBjb25zdCBjbG9zZWRBZnRlciA9IHJlYWRlci5jbG9zZWQ7CiAgICAg
ICBhc3NlcnRfbm90X2VxdWFscyhjbG9zZWRCZWZvcmUsIGNsb3NlZEFmdGVyLCAndGhlIGNsb3Nl
ZCBwcm9taXNlIHNob3VsZCBjaGFuZ2UgaWRlbnRpdHknKTsKIAotICAgICAgcmV0dXJuIHByb21p
c2VfcmVqZWN0cyh0LCBuZXcgVHlwZUVycm9yKCksIGNsb3NlZEFmdGVyKTsKKyAgICAgIHJldHVy
biBwcm9taXNlX3JlamVjdHNfanModCwgVHlwZUVycm9yLCBjbG9zZWRBZnRlcik7CiAgICAgfSk7
CiAKICAgfSwgbGFiZWwgKyAnOiByZWxlYXNpbmcgdGhlIGxvY2sgc2hvdWxkIGNhdXNlIGNsb3Nl
ZCB0byByZWplY3QgYW5kIGNoYW5nZSBpZGVudGl0eScpOwpAQCAtNDQ0LDcgKzQ0Nyw3IEBAIHNl
bGYudGVtcGxhdGVkUlNFcnJvcmVkUmVhZGVyID0gKGxhYmVsLCBmYWN0b3J5LCBlcnJvcikgPT4g
ewogICBwcm9taXNlX3Rlc3QodCA9PiB7CiAKICAgICBjb25zdCByZWFkZXIgPSBmYWN0b3J5KCku
cmVhZGVyOwotICAgIHJldHVybiBwcm9taXNlX3JlamVjdHModCwgZXJyb3IsIHJlYWRlci5yZWFk
KCkpOworICAgIHJldHVybiBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvciwgcmVhZGVy
LnJlYWQoKSk7CiAKICAgfSwgbGFiZWwgKyAnOiByZWFkKCkgc2hvdWxkIHJlamVjdCB3aXRoIHRo
ZSBlcnJvcicpOwogfTsKQEAgLTU5OSw5ICs2MDIsOSBAQCBzZWxmLnRlbXBsYXRlZFJTVHdvQ2h1
bmtzQ2xvc2VkUmVhZGVyID0gZnVuY3Rpb24gKGxhYmVsLCBmYWN0b3J5LCBjaHVua3MpIHsKICAg
ICByZWFkZXIucmVsZWFzZUxvY2soKTsKIAogICAgIHJldHVybiBQcm9taXNlLmFsbChbCi0gICAg
ICBwcm9taXNlX3JlamVjdHModCwgbmV3IFR5cGVFcnJvcigpLCByZWFkZXIucmVhZCgpKSwKLSAg
ICAgIHByb21pc2VfcmVqZWN0cyh0LCBuZXcgVHlwZUVycm9yKCksIHJlYWRlci5yZWFkKCkpLAot
ICAgICAgcHJvbWlzZV9yZWplY3RzKHQsIG5ldyBUeXBlRXJyb3IoKSwgcmVhZGVyLnJlYWQoKSkK
KyAgICAgIHByb21pc2VfcmVqZWN0c19qcyh0LCBUeXBlRXJyb3IsIHJlYWRlci5yZWFkKCkpLAor
ICAgICAgcHJvbWlzZV9yZWplY3RzX2pzKHQsIFR5cGVFcnJvciwgcmVhZGVyLnJlYWQoKSksCisg
ICAgICBwcm9taXNlX3JlamVjdHNfanModCwgVHlwZUVycm9yLCByZWFkZXIucmVhZCgpKQogICAg
IF0pOwogCiAgIH0sIGxhYmVsICsgJzogcmVsZWFzaW5nIHRoZSBsb2NrIHNob3VsZCBjYXVzZSBm
dXJ0aGVyIHJlYWQoKSBjYWxscyB0byByZWplY3Qgd2l0aCBhIFR5cGVFcnJvcicpOwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
L3Jlc291cmNlcy9ycy11dGlscy5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy9yZXNvdXJjZXMvcnMtdXRpbHMuanMKaW5kZXggMGYzMjIyZTIz
Y2FiN2EwYTZkNjE3NzExNmM5OWVkOTBkZjk1Nzk3Ny4uYTYyMDEyYzZmMWNhZTg3MzJlMGYxNGM5
YjIyNWY3NGE0NmM3YzdkOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3Jlc291cmNlcy9ycy11dGlscy5qcworKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVzb3VyY2Vz
L3JzLXV0aWxzLmpzCkBAIC0xMDYsNyArMTA2LDcgQEAKIAogICAgICAgdGhpcy5fZXhlYyA9IGYg
PT4gZigpOwogICAgICAgaWYgKGFzeW5jKSB7Ci0gICAgICAgIHRoaXMuX2V4ZWMgPSBmID0+IHNl
dFRpbWVvdXQoZiwgMCk7CisgICAgICAgIHRoaXMuX2V4ZWMgPSBmID0+IHN0ZXBfdGltZW91dChm
LCAwKTsKICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZXNvdXJjZXMvdGVzdC11dGlscy5qcyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZXNv
dXJjZXMvdGVzdC11dGlscy5qcwppbmRleCA4NzFhYjQ5ZmE4MWRiZjY3NGVmY2RhOTRkZTU3YmJh
OTM2ZjRmODdiLi4wNTkzOTgwZTEwNTViNTZiMzQyMThhMjFkOGY3Njg3MTI5YTg0ZDVhIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvcmVzb3VyY2VzL3Rlc3QtdXRpbHMuanMKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3Jlc291cmNlcy90ZXN0LXV0aWxzLmpzCkBAIC0z
LDcgKzMsNyBAQAogc2VsZi5nZXR0ZXJSZWplY3RzID0gKHQsIG9iaiwgZ2V0dGVyTmFtZSwgdGFy
Z2V0KSA9PiB7CiAgIGNvbnN0IGdldHRlciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3Iob2JqLCBnZXR0ZXJOYW1lKS5nZXQ7CiAKLSAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0LCBu
ZXcgVHlwZUVycm9yKCksIGdldHRlci5jYWxsKHRhcmdldCksIGdldHRlck5hbWUgKyAnIHNob3Vs
ZCByZWplY3Qgd2l0aCBhIFR5cGVFcnJvcicpOworICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2pz
KHQsIFR5cGVFcnJvciwgZ2V0dGVyLmNhbGwodGFyZ2V0KSwgZ2V0dGVyTmFtZSArICcgc2hvdWxk
IHJlamVjdCB3aXRoIGEgVHlwZUVycm9yJyk7CiB9OwogCiBzZWxmLmdldHRlclJlamVjdHNGb3JB
bGwgPSAodCwgb2JqLCBnZXR0ZXJOYW1lLCB0YXJnZXRzKSA9PiB7CkBAIC0xMyw3ICsxMyw3IEBA
IHNlbGYuZ2V0dGVyUmVqZWN0c0ZvckFsbCA9ICh0LCBvYmosIGdldHRlck5hbWUsIHRhcmdldHMp
ID0+IHsKIHNlbGYubWV0aG9kUmVqZWN0cyA9ICh0LCBvYmosIG1ldGhvZE5hbWUsIHRhcmdldCwg
YXJncykgPT4gewogICBjb25zdCBtZXRob2QgPSBvYmpbbWV0aG9kTmFtZV07CiAKLSAgcmV0dXJu
IHByb21pc2VfcmVqZWN0cyh0LCBuZXcgVHlwZUVycm9yKCksIG1ldGhvZC5hcHBseSh0YXJnZXQs
IGFyZ3MpLAorICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2pzKHQsIFR5cGVFcnJvciwgbWV0aG9k
LmFwcGx5KHRhcmdldCwgYXJncyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kTmFt
ZSArICcgc2hvdWxkIHJlamVjdCB3aXRoIGEgVHlwZUVycm9yJyk7CiB9OwogCkBAIC0yNCw3ICsy
NCw3IEBAIHNlbGYubWV0aG9kUmVqZWN0c0ZvckFsbCA9ICh0LCBvYmosIG1ldGhvZE5hbWUsIHRh
cmdldHMsIGFyZ3MpID0+IHsKIHNlbGYuZ2V0dGVyVGhyb3dzID0gKG9iaiwgZ2V0dGVyTmFtZSwg
dGFyZ2V0KSA9PiB7CiAgIGNvbnN0IGdldHRlciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3Iob2JqLCBnZXR0ZXJOYW1lKS5nZXQ7CiAKLSAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVy
cm9yKCksICgpID0+IGdldHRlci5jYWxsKHRhcmdldCksIGdldHRlck5hbWUgKyAnIHNob3VsZCB0
aHJvdyBhIFR5cGVFcnJvcicpOworICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4g
Z2V0dGVyLmNhbGwodGFyZ2V0KSwgZ2V0dGVyTmFtZSArICcgc2hvdWxkIHRocm93IGEgVHlwZUVy
cm9yJyk7CiB9OwogCiBzZWxmLmdldHRlclRocm93c0ZvckFsbCA9IChvYmosIGdldHRlck5hbWUs
IHRhcmdldHMpID0+IHsKQEAgLTM1LDcgKzM1LDcgQEAgc2VsZi5tZXRob2RUaHJvd3MgPSAob2Jq
LCBtZXRob2ROYW1lLCB0YXJnZXQsIGFyZ3MpID0+IHsKICAgY29uc3QgbWV0aG9kID0gb2JqW21l
dGhvZE5hbWVdOwogICBhc3NlcnRfZXF1YWxzKHR5cGVvZiBtZXRob2QsICdmdW5jdGlvbicsIG1l
dGhvZE5hbWUgKyAnIHNob3VsZCBleGlzdCcpOwogCi0gIGFzc2VydF90aHJvd3MobmV3IFR5cGVF
cnJvcigpLCAoKSA9PiBtZXRob2QuYXBwbHkodGFyZ2V0LCBhcmdzKSwgbWV0aG9kTmFtZSArICcg
c2hvdWxkIHRocm93IGEgVHlwZUVycm9yJyk7CisgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9y
LCAoKSA9PiBtZXRob2QuYXBwbHkodGFyZ2V0LCBhcmdzKSwgbWV0aG9kTmFtZSArICcgc2hvdWxk
IHRocm93IGEgVHlwZUVycm9yJyk7CiB9OwogCiBzZWxmLm1ldGhvZFRocm93c0ZvckFsbCA9IChv
YmosIG1ldGhvZE5hbWUsIHRhcmdldHMsIGFyZ3MpID0+IHsKQEAgLTQzLDEzICs0MywxNCBAQCBz
ZWxmLm1ldGhvZFRocm93c0ZvckFsbCA9IChvYmosIG1ldGhvZE5hbWUsIHRhcmdldHMsIGFyZ3Mp
ID0+IHsKIH07CiAKIHNlbGYuY29uc3RydWN0b3JUaHJvd3NGb3JBbGwgPSAoY29uc3RydWN0b3Is
IGZpcnN0QXJncykgPT4gewotICBmaXJzdEFyZ3MuZm9yRWFjaChmaXJzdEFyZyA9PiBhc3NlcnRf
dGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gbmV3IGNvbnN0cnVjdG9yKGZpcnN0QXJnKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29uc3RydWN0
b3Igc2hvdWxkIHRocm93IGEgVHlwZUVycm9yJykpOworICBmaXJzdEFyZ3MuZm9yRWFjaChmaXJz
dEFyZyA9PiBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4gbmV3IGNvbnN0cnVjdG9y
KGZpcnN0QXJnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAnY29uc3RydWN0b3Igc2hvdWxkIHRocm93IGEgVHlwZUVycm9yJykpOwogfTsKIAogc2Vs
Zi5nYXJiYWdlQ29sbGVjdCA9ICgpID0+IHsKICAgaWYgKHNlbGYuZ2MpIHsKICAgICAvLyBVc2Ug
LS1leHBvc2VfZ2MgZm9yIFY4IChhbmQgTm9kZS5qcykKKyAgICAvLyB0byBwYXNzIHRoaXMgZmxh
ZyBhdCBjaHJvbWUgbGF1bmNoIHVzZTogLS1qcy1mbGFncz0iLS1leHBvc2UtZ2MiCiAgICAgLy8g
RXhwb3NlZCBpbiBTcGlkZXJNb25rZXkgc2hlbGwgYXMgd2VsbAogICAgIHNlbGYuZ2MoKTsKICAg
fSBlbHNlIGlmIChzZWxmLkdDQ29udHJvbGxlcikgewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3Jlc291cmNlcy93M2MtaW1w
b3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy9yZXNvdXJjZXMvdzNjLWltcG9ydC5sb2cKaW5kZXggNzIyMjBkMTVlZGI3ZWI4ZDUyZDM2
NDA1NjI5MWYzZjg2NTlmNGMwNy4uMjAxOWI2Y2ZkZTQ5MmZkMDJkOTliYTAwNWVhMjUyNTAwZjQw
ZTNiZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL3Jlc291cmNlcy93M2MtaW1wb3J0LmxvZworKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVzb3VyY2VzL3czYy1pbXBv
cnQubG9nCkBAIC0xLDcgKzEsNyBAQAogVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUg
aW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCiBEbyBOT1QgbW9kaWZ5IHRoZXNlIHRl
c3RzIGRpcmVjdGx5IGluIFdlYktpdC4KIEluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBv
biB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cworCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0CiAKIFRoZW4g
cnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1w
b3J0CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy9iYWNrcHJlc3N1cmUuYW55LWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy90cmFuc2Zvcm0tc3RyZWFtcy9iYWNrcHJlc3N1cmUuYW55LWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5lYzA3YzdiOTcyODUxZGQ5YzdkMjY4ODVmMTU1ODI2OTc5YzVhOTcxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJl
YW1zL3RyYW5zZm9ybS1zdHJlYW1zL2JhY2twcmVzc3VyZS5hbnktZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMTYgQEAKKworRkFJTCBiYWNrcHJlc3N1cmUgYWxsb3dzIG5vIHRyYW5zZm9ybXMgd2l0
aCBhIGRlZmF1bHQgaWRlbnRpdHkgdHJhbnNmb3JtIGFuZCBubyByZWFkZXIgQ2FuJ3QgZmluZCB2
YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIGJhY2twcmVzc3VyZSBvbmx5IGFsbG93cyBv
bmUgdHJhbnNmb3JtKCkgd2l0aCBhIGlkZW50aXR5IHRyYW5zZm9ybSB3aXRoIGEgcmVhZGFibGUg
SFdNIG9mIDEgYW5kIG5vIHJlYWRlciBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJl
YW0KK0ZBSUwgdHJhbnNmb3JtKCkgc2hvdWxkIGtlZXAgYmVpbmcgY2FsbGVkIGFzIGxvbmcgYXMg
dGhlcmUgaXMgbm8gYmFja3ByZXNzdXJlIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0
cmVhbQorRkFJTCB3cml0ZXMgc2hvdWxkIHJlc29sdmUgYXMgc29vbiBhcyB0cmFuc2Zvcm0gY29t
cGxldGVzIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCBjYWxsaW5n
IHB1bGwoKSBiZWZvcmUgdGhlIGZpcnN0IHdyaXRlKCkgd2l0aCBiYWNrcHJlc3N1cmUgc2hvdWxk
IHdvcmsgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIHRyYW5zZm9y
bSgpIHNob3VsZCBiZSBhYmxlIHRvIHJlYWQgdGhlIGNodW5rIGl0IGp1c3QgZW5xdWV1ZWQgQ2Fu
J3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIGJsb2NraW5nIHRyYW5zZm9y
bSgpIHNob3VsZCBjYXVzZSBiYWNrcHJlc3N1cmUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNm
b3JtU3RyZWFtCitGQUlMIHdyaXRlci5jbG9zZWQgc2hvdWxkIHJlc29sdmUgYWZ0ZXIgcmVhZGFi
bGUgaXMgY2FuY2VsZWQgZHVyaW5nIHN0YXJ0IENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9y
bVN0cmVhbQorRkFJTCB3cml0ZXIuY2xvc2VkIHNob3VsZCByZXNvbHZlIGFmdGVyIHJlYWRhYmxl
IGlzIGNhbmNlbGVkIHdpdGggYmFja3ByZXNzdXJlIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5z
Zm9ybVN0cmVhbQorRkFJTCB3cml0ZXIuY2xvc2VkIHNob3VsZCByZXNvbHZlIGFmdGVyIHJlYWRh
YmxlIGlzIGNhbmNlbGVkIHdpdGggbm8gYmFja3ByZXNzdXJlIENhbid0IGZpbmQgdmFyaWFibGU6
IFRyYW5zZm9ybVN0cmVhbQorRkFJTCBjYW5jZWxsaW5nIHRoZSByZWFkYWJsZSBzaG91bGQgY2F1
c2UgYSBwZW5kaW5nIHdyaXRlIHRvIHJlc29sdmUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNm
b3JtU3RyZWFtCitGQUlMIGNhbmNlbGxpbmcgdGhlIHJlYWRhYmxlIHNpZGUgb2YgYSBUcmFuc2Zv
cm1TdHJlYW0gc2hvdWxkIGFib3J0IGFuIGVtcHR5IHBpcGUgQ2FuJ3QgZmluZCB2YXJpYWJsZTog
VHJhbnNmb3JtU3RyZWFtCitGQUlMIGNhbmNlbGxpbmcgdGhlIHJlYWRhYmxlIHNpZGUgb2YgYSBU
cmFuc2Zvcm1TdHJlYW0gc2hvdWxkIGFib3J0IGFuIGVtcHR5IHBpcGUgYWZ0ZXIgc3RhcnR1cCBD
YW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgY2FuY2VsbGluZyB0aGUg
cmVhZGFibGUgc2lkZSBvZiBhIFRyYW5zZm9ybVN0cmVhbSBzaG91bGQgYWJvcnQgYSBmdWxsIHBp
cGUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy90cmFuc2Zv
cm0tc3RyZWFtcy9iYWNrcHJlc3N1cmUuYW55Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvdHJhbnNmb3JtLXN0cmVhbXMvYmFja3ByZXNz
dXJlLmFueS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzODI5MTM1MjhlNjkzYjNhNWQ1NmM2NjBhNDUwNjA5
ODBiNTQ4YzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvdHJhbnNmb3JtLXN0cmVhbXMvYmFja3ByZXNzdXJlLmFu
eS5odG1sCkBAIC0wLDAgKzEgQEAKKzwhLS0gVGhpcyBmaWxlIGlzIHJlcXVpcmVkIGZvciBXZWJL
aXQgdGVzdCBpbmZyYXN0cnVjdHVyZSB0byBydW4gdGhlIHRlbXBsYXRlZCB0ZXN0IC0tPgpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy9iYWNrcHJl
c3N1cmUuYW55LmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1zL2JhY2twcmVzc3VyZS5hbnkuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNjRjOWQwOTMwZWQyZjI2YWY3NzVmYTBjYjRiYzU4ZWRhYzdmZmFjZQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy90cmFuc2Zvcm0tc3RyZWFtcy9iYWNrcHJlc3N1cmUuYW55LmpzCkBAIC0wLDAgKzEsMTk1IEBA
CisvLyBNRVRBOiBnbG9iYWw9d2luZG93LHdvcmtlcixqc3NoZWxsCisvLyBNRVRBOiBzY3JpcHQ9
Li4vcmVzb3VyY2VzL3JlY29yZGluZy1zdHJlYW1zLmpzCisvLyBNRVRBOiBzY3JpcHQ9Li4vcmVz
b3VyY2VzL3Rlc3QtdXRpbHMuanMKKyd1c2Ugc3RyaWN0JzsKKworY29uc3QgZXJyb3IxID0gbmV3
IEVycm9yKCdlcnJvcjEgbWVzc2FnZScpOworZXJyb3IxLm5hbWUgPSAnZXJyb3IxJzsKKworcHJv
bWlzZV90ZXN0KCgpID0+IHsKKyAgY29uc3QgdHMgPSByZWNvcmRpbmdUcmFuc2Zvcm1TdHJlYW0o
KTsKKyAgY29uc3Qgd3JpdGVyID0gdHMud3JpdGFibGUuZ2V0V3JpdGVyKCk7CisgIC8vIFRoaXMg
Y2FsbCBuZXZlciByZXNvbHZlcy4KKyAgd3JpdGVyLndyaXRlKCdhJyk7CisgIHJldHVybiBmbHVz
aEFzeW5jRXZlbnRzKCkudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh0cy5l
dmVudHMsIFtdLCAndHJhbnNmb3JtIHNob3VsZCBub3QgYmUgY2FsbGVkJyk7CisgIH0pOworfSwg
J2JhY2twcmVzc3VyZSBhbGxvd3Mgbm8gdHJhbnNmb3JtcyB3aXRoIGEgZGVmYXVsdCBpZGVudGl0
eSB0cmFuc2Zvcm0gYW5kIG5vIHJlYWRlcicpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworICBj
b25zdCB0cyA9IHJlY29yZGluZ1RyYW5zZm9ybVN0cmVhbSh7fSwgdW5kZWZpbmVkLCB7IGhpZ2hX
YXRlck1hcms6IDEgfSk7CisgIGNvbnN0IHdyaXRlciA9IHRzLndyaXRhYmxlLmdldFdyaXRlcigp
OworICAvLyBUaGlzIGNhbGwgdG8gd3JpdGUoKSByZXNvbHZlcyBhc3luY2hyb25vdXNseS4KKyAg
d3JpdGVyLndyaXRlKCdhJyk7CisgIC8vIFRoaXMgY2FsbCB0byB3cml0ZSgpIHdhaXRzIGZvciBi
YWNrcHJlc3N1cmUgdGhhdCBpcyBuZXZlciByZWxpZXZlZCBhbmQgbmV2ZXIgY2FsbHMgdHJhbnNm
b3JtKCkuCisgIHdyaXRlci53cml0ZSgnYicpOworICByZXR1cm4gZmx1c2hBc3luY0V2ZW50cygp
LnRoZW4oKCkgPT4geworICAgIGFzc2VydF9hcnJheV9lcXVhbHModHMuZXZlbnRzLCBbJ3RyYW5z
Zm9ybScsICdhJ10sICd0cmFuc2Zvcm0gc2hvdWxkIGJlIGNhbGxlZCBvbmNlJyk7CisgIH0pOwor
fSwgJ2JhY2twcmVzc3VyZSBvbmx5IGFsbG93cyBvbmUgdHJhbnNmb3JtKCkgd2l0aCBhIGlkZW50
aXR5IHRyYW5zZm9ybSB3aXRoIGEgcmVhZGFibGUgSFdNIG9mIDEgYW5kIG5vIHJlYWRlcicpOwor
Citwcm9taXNlX3Rlc3QoKCkgPT4geworICAvLyBXaXRob3V0IGEgdHJhbnNmb3JtKCkgaW1wbGVt
ZW50YXRpb24sIHJlY29yZGluZ1RyYW5zZm9ybVN0cmVhbSgpIG5ldmVyIGVucXVldWVzIGFueXRo
aW5nLgorICBjb25zdCB0cyA9IHJlY29yZGluZ1RyYW5zZm9ybVN0cmVhbSh7CisgICAgdHJhbnNm
b3JtKCkgeworICAgICAgLy8gRGlzY2FyZCBhbGwgY2h1bmtzLiBBcyBhIHJlc3VsdCwgdGhlIHJl
YWRhYmxlIHNpZGUgaXMgbmV2ZXIgZnVsbCBlbm91Z2ggdG8gZXhlcnQgYmFja3ByZXNzdXJlIGFu
ZCB0cmFuc2Zvcm0oKQorICAgICAgLy8ga2VlcHMgYmVpbmcgY2FsbGVkLgorICAgIH0KKyAgfSwg
dW5kZWZpbmVkLCB7IGhpZ2hXYXRlck1hcms6IDEgfSk7CisgIGNvbnN0IHdyaXRlciA9IHRzLndy
aXRhYmxlLmdldFdyaXRlcigpOworICBjb25zdCB3cml0ZVByb21pc2VzID0gW107CisgIGZvciAo
bGV0IGkgPSAwOyBpIDwgNDsgKytpKSB7CisgICAgd3JpdGVQcm9taXNlcy5wdXNoKHdyaXRlci53
cml0ZShpKSk7CisgIH0KKyAgcmV0dXJuIFByb21pc2UuYWxsKHdyaXRlUHJvbWlzZXMpLnRoZW4o
KCkgPT4geworICAgIGFzc2VydF9hcnJheV9lcXVhbHModHMuZXZlbnRzLCBbJ3RyYW5zZm9ybScs
IDAsICd0cmFuc2Zvcm0nLCAxLCAndHJhbnNmb3JtJywgMiwgJ3RyYW5zZm9ybScsIDNdLAorICAg
ICAgICAgICAgICAgICAgICAgICAgJ2FsbCA0IGV2ZW50cyBzaG91bGQgYmUgdHJhbnNmb3JtZWQn
KTsKKyAgfSk7Cit9LCAndHJhbnNmb3JtKCkgc2hvdWxkIGtlZXAgYmVpbmcgY2FsbGVkIGFzIGxv
bmcgYXMgdGhlcmUgaXMgbm8gYmFja3ByZXNzdXJlJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7
CisgIGNvbnN0IHRzID0gbmV3IFRyYW5zZm9ybVN0cmVhbSh7fSwgdW5kZWZpbmVkLCB7IGhpZ2hX
YXRlck1hcms6IDEgfSk7CisgIGNvbnN0IHdyaXRlciA9IHRzLndyaXRhYmxlLmdldFdyaXRlcigp
OworICBjb25zdCByZWFkZXIgPSB0cy5yZWFkYWJsZS5nZXRSZWFkZXIoKTsKKyAgY29uc3QgZXZl
bnRzID0gW107CisgIGNvbnN0IHdyaXRlclByb21pc2VzID0gWworICAgIHdyaXRlci53cml0ZSgn
YScpLnRoZW4oKCkgPT4gZXZlbnRzLnB1c2goJ2EnKSksCisgICAgd3JpdGVyLndyaXRlKCdiJyku
dGhlbigoKSA9PiBldmVudHMucHVzaCgnYicpKSwKKyAgICB3cml0ZXIuY2xvc2UoKS50aGVuKCgp
ID0+IGV2ZW50cy5wdXNoKCdjbG9zZWQnKSldOworICByZXR1cm4gZGVsYXkoMCkudGhlbigoKSA9
PiB7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhldmVudHMsIFsnYSddLCAndGhlIGZpcnN0IHdy
aXRlIHNob3VsZCBoYXZlIHJlc29sdmVkJyk7CisgICAgcmV0dXJuIHJlYWRlci5yZWFkKCk7Cisg
IH0pLnRoZW4oKHsgdmFsdWUsIGRvbmUgfSkgPT4geworICAgIGFzc2VydF9mYWxzZShkb25lLCAn
ZG9uZSBzaG91bGQgbm90IGJlIHRydWUnKTsKKyAgICBhc3NlcnRfZXF1YWxzKCdhJywgdmFsdWUs
ICd2YWx1ZSBzaG91bGQgYmUgImEiJyk7CisgICAgcmV0dXJuIGRlbGF5KDApOworICB9KS50aGVu
KCgpID0+IHsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGV2ZW50cywgWydhJywgJ2InLCAnY2xv
c2VkJ10sICdib3RoIHdyaXRlcyBhbmQgY2xvc2UoKSBzaG91bGQgaGF2ZSByZXNvbHZlZCcpOwor
ICAgIHJldHVybiByZWFkZXIucmVhZCgpOworICB9KS50aGVuKCh7IHZhbHVlLCBkb25lIH0pID0+
IHsKKyAgICBhc3NlcnRfZmFsc2UoZG9uZSwgJ2RvbmUgc2hvdWxkIHN0aWxsIG5vdCBiZSB0cnVl
Jyk7CisgICAgYXNzZXJ0X2VxdWFscygnYicsIHZhbHVlLCAndmFsdWUgc2hvdWxkIGJlICJiIicp
OworICAgIHJldHVybiByZWFkZXIucmVhZCgpOworICB9KS50aGVuKCh7IGRvbmUgfSkgPT4gewor
ICAgIGFzc2VydF90cnVlKGRvbmUsICdkb25lIHNob3VsZCBiZSB0cnVlJyk7CisgICAgcmV0dXJu
IHdyaXRlclByb21pc2VzOworICB9KTsKK30sICd3cml0ZXMgc2hvdWxkIHJlc29sdmUgYXMgc29v
biBhcyB0cmFuc2Zvcm0gY29tcGxldGVzJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisgIGNv
bnN0IHRzID0gbmV3IFRyYW5zZm9ybVN0cmVhbSh1bmRlZmluZWQsIHVuZGVmaW5lZCwgeyBoaWdo
V2F0ZXJNYXJrOiAwIH0pOworICBjb25zdCB3cml0ZXIgPSB0cy53cml0YWJsZS5nZXRXcml0ZXIo
KTsKKyAgY29uc3QgcmVhZGVyID0gdHMucmVhZGFibGUuZ2V0UmVhZGVyKCk7CisgIGNvbnN0IHJl
YWRQcm9taXNlID0gcmVhZGVyLnJlYWQoKTsKKyAgd3JpdGVyLndyaXRlKCdhJyk7CisgIHJldHVy
biByZWFkUHJvbWlzZS50aGVuKCh7IHZhbHVlLCBkb25lIH0pID0+IHsKKyAgICBhc3NlcnRfZmFs
c2UoZG9uZSwgJ25vdCBkb25lJyk7CisgICAgYXNzZXJ0X2VxdWFscyh2YWx1ZSwgJ2EnLCAndmFs
dWUgc2hvdWxkIGJlICJhIicpOworICB9KTsKK30sICdjYWxsaW5nIHB1bGwoKSBiZWZvcmUgdGhl
IGZpcnN0IHdyaXRlKCkgd2l0aCBiYWNrcHJlc3N1cmUgc2hvdWxkIHdvcmsnKTsKKworcHJvbWlz
ZV90ZXN0KCgpID0+IHsKKyAgbGV0IHJlYWRlcjsKKyAgY29uc3QgdHMgPSByZWNvcmRpbmdUcmFu
c2Zvcm1TdHJlYW0oeworICAgIHRyYW5zZm9ybShjaHVuaywgY29udHJvbGxlcikgeworICAgICAg
Y29udHJvbGxlci5lbnF1ZXVlKGNodW5rKTsKKyAgICAgIHJldHVybiByZWFkZXIucmVhZCgpOwor
ICAgIH0KKyAgfSwgdW5kZWZpbmVkLCB7IGhpZ2hXYXRlck1hcms6IDEgfSk7CisgIGNvbnN0IHdy
aXRlciA9IHRzLndyaXRhYmxlLmdldFdyaXRlcigpOworICByZWFkZXIgPSB0cy5yZWFkYWJsZS5n
ZXRSZWFkZXIoKTsKKyAgcmV0dXJuIHdyaXRlci53cml0ZSgnYScpOworfSwgJ3RyYW5zZm9ybSgp
IHNob3VsZCBiZSBhYmxlIHRvIHJlYWQgdGhlIGNodW5rIGl0IGp1c3QgZW5xdWV1ZWQnKTsKKwor
cHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgbGV0IHJlc29sdmVUcmFuc2Zvcm07CisgIGNvbnN0IHRy
YW5zZm9ybVByb21pc2UgPSBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKKyAgICByZXNvbHZlVHJh
bnNmb3JtID0gcmVzb2x2ZTsKKyAgfSk7CisgIGNvbnN0IHRzID0gcmVjb3JkaW5nVHJhbnNmb3Jt
U3RyZWFtKHsKKyAgICB0cmFuc2Zvcm0oKSB7CisgICAgICByZXR1cm4gdHJhbnNmb3JtUHJvbWlz
ZTsKKyAgICB9CisgIH0sIHVuZGVmaW5lZCwgbmV3IENvdW50UXVldWluZ1N0cmF0ZWd5KHsgaGln
aFdhdGVyTWFyazogSW5maW5pdHkgfSkpOworICBjb25zdCB3cml0ZXIgPSB0cy53cml0YWJsZS5n
ZXRXcml0ZXIoKTsKKyAgYXNzZXJ0X2VxdWFscyh3cml0ZXIuZGVzaXJlZFNpemUsIDEsICdkZXNp
cmVkU2l6ZSBzaG91bGQgYmUgMScpOworICByZXR1cm4gZGVsYXkoMCkudGhlbigoKSA9PiB7Cisg
ICAgd3JpdGVyLndyaXRlKCdhJyk7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh0cy5ldmVudHMs
IFsndHJhbnNmb3JtJywgJ2EnXSk7CisgICAgYXNzZXJ0X2VxdWFscyh3cml0ZXIuZGVzaXJlZFNp
emUsIDAsICdkZXNpcmVkU2l6ZSBzaG91bGQgYmUgMCcpOworICAgIHJldHVybiBmbHVzaEFzeW5j
RXZlbnRzKCk7CisgIH0pLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9lcXVhbHMod3JpdGVyLmRl
c2lyZWRTaXplLCAwLCAnZGVzaXJlZFNpemUgc2hvdWxkIHN0aWxsIGJlIDAnKTsKKyAgICByZXNv
bHZlVHJhbnNmb3JtKCk7CisgICAgcmV0dXJuIGRlbGF5KDApOworICB9KS50aGVuKCgpID0+IHsK
KyAgICBhc3NlcnRfZXF1YWxzKHdyaXRlci5kZXNpcmVkU2l6ZSwgMSwgJ2Rlc2lyZWRTaXplIHNo
b3VsZCBiZSAxJyk7CisgIH0pOworfSwgJ2Jsb2NraW5nIHRyYW5zZm9ybSgpIHNob3VsZCBjYXVz
ZSBiYWNrcHJlc3N1cmUnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBjb25zdCB0cyA9IG5l
dyBUcmFuc2Zvcm1TdHJlYW0oKTsKKyAgdHMucmVhZGFibGUuY2FuY2VsKGVycm9yMSk7CisgIHJl
dHVybiBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIHRzLndyaXRhYmxlLmdldFdy
aXRlcigpLmNsb3NlZCwgJ2Nsb3NlZCBzaG91bGQgcmVqZWN0Jyk7Cit9LCAnd3JpdGVyLmNsb3Nl
ZCBzaG91bGQgcmVzb2x2ZSBhZnRlciByZWFkYWJsZSBpcyBjYW5jZWxlZCBkdXJpbmcgc3RhcnQn
KTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBjb25zdCB0cyA9IG5ldyBUcmFuc2Zvcm1TdHJl
YW0oe30sIHVuZGVmaW5lZCwgeyBoaWdoV2F0ZXJNYXJrOiAwIH0pOworICByZXR1cm4gZGVsYXko
MCkudGhlbigoKSA9PiB7CisgICAgdHMucmVhZGFibGUuY2FuY2VsKGVycm9yMSk7CisgICAgcmV0
dXJuIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMSwgdHMud3JpdGFibGUuZ2V0V3Jp
dGVyKCkuY2xvc2VkLCAnY2xvc2VkIHNob3VsZCByZWplY3QnKTsKKyAgfSk7Cit9LCAnd3JpdGVy
LmNsb3NlZCBzaG91bGQgcmVzb2x2ZSBhZnRlciByZWFkYWJsZSBpcyBjYW5jZWxlZCB3aXRoIGJh
Y2twcmVzc3VyZScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIGNvbnN0IHRzID0gbmV3IFRy
YW5zZm9ybVN0cmVhbSh7fSwgdW5kZWZpbmVkLCB7IGhpZ2hXYXRlck1hcms6IDEgfSk7CisgIHJl
dHVybiBkZWxheSgwKS50aGVuKCgpID0+IHsKKyAgICB0cy5yZWFkYWJsZS5jYW5jZWwoZXJyb3Ix
KTsKKyAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCB0cy53cml0
YWJsZS5nZXRXcml0ZXIoKS5jbG9zZWQsICdjbG9zZWQgc2hvdWxkIHJlamVjdCcpOworICB9KTsK
K30sICd3cml0ZXIuY2xvc2VkIHNob3VsZCByZXNvbHZlIGFmdGVyIHJlYWRhYmxlIGlzIGNhbmNl
bGVkIHdpdGggbm8gYmFja3ByZXNzdXJlJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisgIGNv
bnN0IHRzID0gbmV3IFRyYW5zZm9ybVN0cmVhbSh7fSwgdW5kZWZpbmVkLCB7IGhpZ2hXYXRlck1h
cms6IDEgfSk7CisgIGNvbnN0IHdyaXRlciA9IHRzLndyaXRhYmxlLmdldFdyaXRlcigpOworICBy
ZXR1cm4gZGVsYXkoMCkudGhlbigoKSA9PiB7CisgICAgY29uc3Qgd3JpdGVQcm9taXNlID0gd3Jp
dGVyLndyaXRlKCdhJyk7CisgICAgdHMucmVhZGFibGUuY2FuY2VsKGVycm9yMSk7CisgICAgcmV0
dXJuIHdyaXRlUHJvbWlzZTsKKyAgfSk7Cit9LCAnY2FuY2VsbGluZyB0aGUgcmVhZGFibGUgc2hv
dWxkIGNhdXNlIGEgcGVuZGluZyB3cml0ZSB0byByZXNvbHZlJyk7CisKK3Byb21pc2VfdGVzdCh0
ID0+IHsKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oKTsKKyAgY29uc3QgdHMgPSBu
ZXcgVHJhbnNmb3JtU3RyZWFtKCk7CisgIGNvbnN0IHBpcGVQcm9taXNlID0gcnMucGlwZVRvKHRz
LndyaXRhYmxlKTsKKyAgdHMucmVhZGFibGUuY2FuY2VsKGVycm9yMSk7CisgIHJldHVybiBwcm9t
aXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIHBpcGVQcm9taXNlLCAncHJvbWlzZSByZXR1
cm5lZCBmcm9tIHBpcGVUbygpIHNob3VsZCBiZSByZWplY3RlZCcpOworfSwgJ2NhbmNlbGxpbmcg
dGhlIHJlYWRhYmxlIHNpZGUgb2YgYSBUcmFuc2Zvcm1TdHJlYW0gc2hvdWxkIGFib3J0IGFuIGVt
cHR5IHBpcGUnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBjb25zdCBycyA9IG5ldyBSZWFk
YWJsZVN0cmVhbSgpOworICBjb25zdCB0cyA9IG5ldyBUcmFuc2Zvcm1TdHJlYW0oKTsKKyAgY29u
c3QgcGlwZVByb21pc2UgPSBycy5waXBlVG8odHMud3JpdGFibGUpOworICByZXR1cm4gZGVsYXko
MCkudGhlbigoKSA9PiB7CisgICAgdHMucmVhZGFibGUuY2FuY2VsKGVycm9yMSk7CisgICAgcmV0
dXJuIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMSwgcGlwZVByb21pc2UsICdwcm9t
aXNlIHJldHVybmVkIGZyb20gcGlwZVRvKCkgc2hvdWxkIGJlIHJlamVjdGVkJyk7CisgIH0pOwor
fSwgJ2NhbmNlbGxpbmcgdGhlIHJlYWRhYmxlIHNpZGUgb2YgYSBUcmFuc2Zvcm1TdHJlYW0gc2hv
dWxkIGFib3J0IGFuIGVtcHR5IHBpcGUgYWZ0ZXIgc3RhcnR1cCcpOworCitwcm9taXNlX3Rlc3Qo
dCA9PiB7CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjb250
cm9sbGVyKSB7CisgICAgICBjb250cm9sbGVyLmVucXVldWUoJ2EnKTsKKyAgICAgIGNvbnRyb2xs
ZXIuZW5xdWV1ZSgnYicpOworICAgICAgY29udHJvbGxlci5lbnF1ZXVlKCdjJyk7CisgICAgfQor
ICB9KTsKKyAgY29uc3QgdHMgPSBuZXcgVHJhbnNmb3JtU3RyZWFtKCk7CisgIGNvbnN0IHBpcGVQ
cm9taXNlID0gcnMucGlwZVRvKHRzLndyaXRhYmxlKTsKKyAgLy8gQWxsb3cgZGF0YSB0byBmbG93
IGludG8gdGhlIHBpcGUuCisgIHJldHVybiBkZWxheSgwKS50aGVuKCgpID0+IHsKKyAgICB0cy5y
ZWFkYWJsZS5jYW5jZWwoZXJyb3IxKTsKKyAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2V4YWN0
bHkodCwgZXJyb3IxLCBwaXBlUHJvbWlzZSwgJ3Byb21pc2UgcmV0dXJuZWQgZnJvbSBwaXBlVG8o
KSBzaG91bGQgYmUgcmVqZWN0ZWQnKTsKKyAgfSk7Cit9LCAnY2FuY2VsbGluZyB0aGUgcmVhZGFi
bGUgc2lkZSBvZiBhIFRyYW5zZm9ybVN0cmVhbSBzaG91bGQgYWJvcnQgYSBmdWxsIHBpcGUnKTsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy9iYWNrcHJlc3N1cmUuYW55Lndvcmtlci1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvdHJhbnNmb3JtLXN0cmVhbXMvYmFja3ByZXNzdXJlLmFueS53b3JrZXItZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmVjMDdjN2I5NzI4NTFkZDljN2QyNjg4NWYxNTU4MjY5NzljNWE5NzEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3N0cmVhbXMvdHJhbnNmb3JtLXN0cmVhbXMvYmFja3ByZXNzdXJlLmFueS53b3JrZXItZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTYgQEAKKworRkFJTCBiYWNrcHJlc3N1cmUgYWxsb3dzIG5v
IHRyYW5zZm9ybXMgd2l0aCBhIGRlZmF1bHQgaWRlbnRpdHkgdHJhbnNmb3JtIGFuZCBubyByZWFk
ZXIgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIGJhY2twcmVzc3Vy
ZSBvbmx5IGFsbG93cyBvbmUgdHJhbnNmb3JtKCkgd2l0aCBhIGlkZW50aXR5IHRyYW5zZm9ybSB3
aXRoIGEgcmVhZGFibGUgSFdNIG9mIDEgYW5kIG5vIHJlYWRlciBDYW4ndCBmaW5kIHZhcmlhYmxl
OiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgdHJhbnNmb3JtKCkgc2hvdWxkIGtlZXAgYmVpbmcgY2Fs
bGVkIGFzIGxvbmcgYXMgdGhlcmUgaXMgbm8gYmFja3ByZXNzdXJlIENhbid0IGZpbmQgdmFyaWFi
bGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCB3cml0ZXMgc2hvdWxkIHJlc29sdmUgYXMgc29vbiBh
cyB0cmFuc2Zvcm0gY29tcGxldGVzIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVh
bQorRkFJTCBjYWxsaW5nIHB1bGwoKSBiZWZvcmUgdGhlIGZpcnN0IHdyaXRlKCkgd2l0aCBiYWNr
cHJlc3N1cmUgc2hvdWxkIHdvcmsgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFt
CitGQUlMIHRyYW5zZm9ybSgpIHNob3VsZCBiZSBhYmxlIHRvIHJlYWQgdGhlIGNodW5rIGl0IGp1
c3QgZW5xdWV1ZWQgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIGJs
b2NraW5nIHRyYW5zZm9ybSgpIHNob3VsZCBjYXVzZSBiYWNrcHJlc3N1cmUgQ2FuJ3QgZmluZCB2
YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIHdyaXRlci5jbG9zZWQgc2hvdWxkIHJlc29s
dmUgYWZ0ZXIgcmVhZGFibGUgaXMgY2FuY2VsZWQgZHVyaW5nIHN0YXJ0IENhbid0IGZpbmQgdmFy
aWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCB3cml0ZXIuY2xvc2VkIHNob3VsZCByZXNvbHZl
IGFmdGVyIHJlYWRhYmxlIGlzIGNhbmNlbGVkIHdpdGggYmFja3ByZXNzdXJlIENhbid0IGZpbmQg
dmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCB3cml0ZXIuY2xvc2VkIHNob3VsZCByZXNv
bHZlIGFmdGVyIHJlYWRhYmxlIGlzIGNhbmNlbGVkIHdpdGggbm8gYmFja3ByZXNzdXJlIENhbid0
IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCBjYW5jZWxsaW5nIHRoZSByZWFk
YWJsZSBzaG91bGQgY2F1c2UgYSBwZW5kaW5nIHdyaXRlIHRvIHJlc29sdmUgQ2FuJ3QgZmluZCB2
YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIGNhbmNlbGxpbmcgdGhlIHJlYWRhYmxlIHNp
ZGUgb2YgYSBUcmFuc2Zvcm1TdHJlYW0gc2hvdWxkIGFib3J0IGFuIGVtcHR5IHBpcGUgQ2FuJ3Qg
ZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIGNhbmNlbGxpbmcgdGhlIHJlYWRh
YmxlIHNpZGUgb2YgYSBUcmFuc2Zvcm1TdHJlYW0gc2hvdWxkIGFib3J0IGFuIGVtcHR5IHBpcGUg
YWZ0ZXIgc3RhcnR1cCBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwg
Y2FuY2VsbGluZyB0aGUgcmVhZGFibGUgc2lkZSBvZiBhIFRyYW5zZm9ybVN0cmVhbSBzaG91bGQg
YWJvcnQgYSBmdWxsIHBpcGUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy9iYWNrcHJlc3N1cmUuYW55Lndvcmtlci5odG1sIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5z
Zm9ybS1zdHJlYW1zL2JhY2twcmVzc3VyZS5hbnkud29ya2VyLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjM4
MjkxMzUyOGU2OTNiM2E1ZDU2YzY2MGE0NTA2MDk4MGI1NDhjMwotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy90cmFu
c2Zvcm0tc3RyZWFtcy9iYWNrcHJlc3N1cmUuYW55Lndvcmtlci5odG1sCkBAIC0wLDAgKzEgQEAK
KzwhLS0gVGhpcyBmaWxlIGlzIHJlcXVpcmVkIGZvciBXZWJLaXQgdGVzdCBpbmZyYXN0cnVjdHVy
ZSB0byBydW4gdGhlIHRlbXBsYXRlZCB0ZXN0IC0tPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy9lcnJvcnMuYW55LWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy90cmFuc2Zv
cm0tc3RyZWFtcy9lcnJvcnMuYW55LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZDNkNzhmM2Rh
M2I4N2E5YjZjODZlN2JkZDM5ZmFkMThiMDFhMDA1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1z
dHJlYW1zL2Vycm9ycy5hbnktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNDIgQEAKKworRkFJTCBU
cmFuc2Zvcm1TdHJlYW0gZXJyb3JzIHRocm93biBpbiB0cmFuc2Zvcm0gcHV0IHRoZSB3cml0YWJs
ZSBhbmQgcmVhZGFibGUgaW4gYW4gZXJyb3JlZCBzdGF0ZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBU
cmFuc2Zvcm1TdHJlYW0KK0ZBSUwgVHJhbnNmb3JtU3RyZWFtIGVycm9ycyB0aHJvd24gaW4gZmx1
c2ggcHV0IHRoZSB3cml0YWJsZSBhbmQgcmVhZGFibGUgaW4gYW4gZXJyb3JlZCBzdGF0ZSBDYW4n
dCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgZXJyb3JlZCBUcmFuc2Zvcm1T
dHJlYW0gc2hvdWxkIG5vdCBlbnF1ZXVlIG5ldyBjaHVua3MgQ2FuJ3QgZmluZCB2YXJpYWJsZTog
VHJhbnNmb3JtU3RyZWFtCitGQUlMIFRyYW5zZm9ybVN0cmVhbSB0cmFuc2Zvcm1lci5zdGFydCgp
IHJlamVjdGVkIHByb21pc2Ugc2hvdWxkIGVycm9yIHRoZSBzdHJlYW0gQ2FuJ3QgZmluZCB2YXJp
YWJsZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIHdoZW4gY29udHJvbGxlci5lcnJvciBpcyBmb2xs
b3dlZCBieSBhIHJlamVjdGlvbiwgdGhlIGVycm9yIHJlYXNvbiBzaG91bGQgY29tZSBmcm9tIGNv
bnRyb2xsZXIuZXJyb3IgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitGQUlM
IFRyYW5zZm9ybVN0cmVhbSBjb25zdHJ1Y3RvciBzaG91bGQgdGhyb3cgd2hlbiBzdGFydCBkb2Vz
IGFzc2VydF90aHJvd3NfanM6IGNvbnN0cnVjdG9yIHNob3VsZCB0aHJvdyBmdW5jdGlvbiAiKCkg
PT4gbmV3IFRyYW5zZm9ybVN0cmVhbSh7CisgICAgc3RhcnQoKSB7IHRocm93IG5ldyBVUklFcnJv
cignc3RhcnQgdGhyb3duIGVycm9yJyk7IH0sCisgICAgdHJhbnNmb3JtKCkge30KKyAgfSkiIHRo
cmV3IG9iamVjdCAiUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9y
bVN0cmVhbSIgKCJSZWZlcmVuY2VFcnJvciIpIGV4cGVjdGVkIGluc3RhbmNlIG9mIGZ1bmN0aW9u
ICJmdW5jdGlvbiBVUklFcnJvcigpIHsKKyAgICBbbmF0aXZlIGNvZGVdCit9IiAoIlVSSUVycm9y
IikKK0ZBSUwgd2hlbiBzdHJhdGVneS5zaXplIHRocm93cyBpbnNpZGUgc3RhcnQoKSwgdGhlIGNv
bnN0cnVjdG9yIHNob3VsZCB0aHJvdyB0aGUgc2FtZSBlcnJvciBhc3NlcnRfdGhyb3dzX2pzOiBj
b25zdHJ1Y3RvciBzaG91bGQgdGhyb3cgdGhlIHNhbWUgZXJyb3Igc3RyYXRlZ3kuc2l6ZSB0aHJv
d3MgZnVuY3Rpb24gIigpID0+IG5ldyBUcmFuc2Zvcm1TdHJlYW0oeworICAgIHN0YXJ0KGMpIHsK
KyAgICAgIGMuZW5xdWV1ZSgnYScpOworICAgIH0sCisgICAgdHJhbnNmb3JtKCkge30KKyAgfSwg
dW5kZWZpbmVkLCBzdHJhdGVneSkiIHRocmV3IG9iamVjdCAiUmVmZXJlbmNlRXJyb3I6IENhbid0
IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbSIgKCJSZWZlcmVuY2VFcnJvciIpIGV4cGVj
dGVkIGluc3RhbmNlIG9mIGZ1bmN0aW9uICJmdW5jdGlvbiBVUklFcnJvcigpIHsKKyAgICBbbmF0
aXZlIGNvZGVdCit9IiAoIlVSSUVycm9yIikKK0ZBSUwgd2hlbiBzdHJhdGVneS5zaXplIGNhbGxz
IGNvbnRyb2xsZXIuZXJyb3IoKSB0aGVuIHRocm93cywgdGhlIGNvbnN0cnVjdG9yIHNob3VsZCB0
aHJvdyB0aGUgZmlyc3QgZXJyb3IgYXNzZXJ0X3Rocm93c19qczogdGhlIGZpcnN0IGVycm9yIHNo
b3VsZCBiZSB0aHJvd24gZnVuY3Rpb24gIigpID0+IG5ldyBUcmFuc2Zvcm1TdHJlYW0oeworICAg
IHN0YXJ0KGMpIHsKKyAgICAgIGNvbnRyb2xsZXIgPSBjOworICAgICAgYy5lbnF1ZXVlKCdhJyk7
CisgICAgfSwKKyAgICB0cmFuc2Zvcm0oKSB7fQorICB9LCB1bmRlZmluZWQsIHN0cmF0ZWd5KSIg
dGhyZXcgb2JqZWN0ICJSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNm
b3JtU3RyZWFtIiAoIlJlZmVyZW5jZUVycm9yIikgZXhwZWN0ZWQgaW5zdGFuY2Ugb2YgZnVuY3Rp
b24gImZ1bmN0aW9uIFVSSUVycm9yKCkgeworICAgIFtuYXRpdmUgY29kZV0KK30iICgiVVJJRXJy
b3IiKQorRkFJTCBjYW5jZWxsaW5nIHRoZSByZWFkYWJsZSBzaWRlIHNob3VsZCBlcnJvciB0aGUg
d3JpdGFibGUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIGl0IHNo
b3VsZCBiZSBwb3NzaWJsZSB0byBlcnJvciB0aGUgcmVhZGFibGUgYmV0d2VlbiBjbG9zZSByZXF1
ZXN0ZWQgYW5kIGNvbXBsZXRlIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQor
RkFJTCBhbiBleGNlcHRpb24gZnJvbSB0cmFuc2Zvcm0oKSBzaG91bGQgZXJyb3IgdGhlIHN0cmVh
bSBpZiB0ZXJtaW5hdGUgaGFzIGJlZW4gcmVxdWVzdGVkIGJ1dCBub3QgY29tcGxldGVkIENhbid0
IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCBhYm9ydCBzaG91bGQgc2V0IHRo
ZSBjbG9zZSByZWFzb24gZm9yIHRoZSB3cml0YWJsZSB3aGVuIGl0IGhhcHBlbnMgYmVmb3JlIGNh
bmNlbCBkdXJpbmcgc3RhcnQsIGJ1dCBjYW5jZWwgc2hvdWxkIHN0aWxsIHN1Y2NlZWQgQ2FuJ3Qg
ZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIGFib3J0IHNob3VsZCBzZXQgdGhl
IGNsb3NlIHJlYXNvbiBmb3IgdGhlIHdyaXRhYmxlIHdoZW4gaXQgaGFwcGVucyBiZWZvcmUgY2Fu
Y2VsIGR1cmluZyB1bmRlcmx5aW5nIHNpbmsgd3JpdGUsIGJ1dCBjYW5jZWwgc2hvdWxkIHN0aWxs
IHN1Y2NlZWQgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIGNvbnRy
b2xsZXIuZXJyb3IoKSBzaG91bGQgZG8gbm90aGluZyB0aGUgc2Vjb25kIHRpbWUgaXQgaXMgY2Fs
bGVkIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCBjb250cm9sbGVy
LmVycm9yKCkgc2hvdWxkIGRvIG5vdGhpbmcgYWZ0ZXIgcmVhZGFibGUuY2FuY2VsKCkgQ2FuJ3Qg
ZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIGNvbnRyb2xsZXIuZXJyb3IoKSBz
aG91bGQgZG8gbm90aGluZyBhZnRlciB3cml0YWJsZS5hYm9ydCgpIGhhcyBjb21wbGV0ZWQgQ2Fu
J3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIGNvbnRyb2xsZXIuZXJyb3Io
KSBzaG91bGQgZG8gbm90aGluZyBhZnRlciBhIHRyYW5zZm9ybWVyIG1ldGhvZCBoYXMgdGhyb3du
IGFuIGV4Y2VwdGlvbiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwg
ZXJyb3JpbmcgZHVyaW5nIHdyaXRlIHdpdGggYmFja3ByZXNzdXJlIHNob3VsZCByZXN1bHQgaW4g
dGhlIHdyaXRlIGZhaWxpbmcgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitG
QUlMIGEgd3JpdGUoKSB0aGF0IHdhcyB3YWl0aW5nIGZvciBiYWNrcHJlc3N1cmUgc2hvdWxkIHJl
amVjdCBpZiB0aGUgd3JpdGFibGUgaXMgYWJvcnRlZCBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFu
c2Zvcm1TdHJlYW0KK0ZBSUwgdGhlIHJlYWRhYmxlIHNob3VsZCBiZSBlcnJvcmVkIHdpdGggdGhl
IHJlYXNvbiBwYXNzZWQgdG8gdGhlIHdyaXRhYmxlIGFib3J0KCkgbWV0aG9kIENhbid0IGZpbmQg
dmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvdHJhbnNmb3JtLXN0cmVhbXMvZXJy
b3JzLmFueS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1zL2Vycm9ycy5hbnkuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4y
MzgyOTEzNTI4ZTY5M2IzYTVkNTZjNjYwYTQ1MDYwOTgwYjU0OGMzCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3Ry
YW5zZm9ybS1zdHJlYW1zL2Vycm9ycy5hbnkuaHRtbApAQCAtMCwwICsxIEBACis8IS0tIFRoaXMg
ZmlsZSBpcyByZXF1aXJlZCBmb3IgV2ViS2l0IHRlc3QgaW5mcmFzdHJ1Y3R1cmUgdG8gcnVuIHRo
ZSB0ZW1wbGF0ZWQgdGVzdCAtLT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
dHJhbnNmb3JtLXN0cmVhbXMvZXJyb3JzLmFueS5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy9lcnJvcnMuYW55
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmJhMjZiMzJiNzVhNmE0MDdjOWE1ZmQzODE0MzY1ZGE1MWMzYTIxZTEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMvdHJhbnNmb3JtLXN0cmVhbXMvZXJyb3JzLmFueS5qcwpAQCAtMCwwICsx
LDM0MSBAQAorLy8gTUVUQTogZ2xvYmFsPXdpbmRvdyx3b3JrZXIsanNzaGVsbAorLy8gTUVUQTog
c2NyaXB0PS4uL3Jlc291cmNlcy90ZXN0LXV0aWxzLmpzCisndXNlIHN0cmljdCc7CisKK2NvbnN0
IHRocm93bkVycm9yID0gbmV3IEVycm9yKCdiYWQgdGhpbmdzIGFyZSBoYXBwZW5pbmchJyk7Cit0
aHJvd25FcnJvci5uYW1lID0gJ2Vycm9yMSc7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgY29u
c3QgdHMgPSBuZXcgVHJhbnNmb3JtU3RyZWFtKHsKKyAgICB0cmFuc2Zvcm0oKSB7CisgICAgICB0
aHJvdyB0aHJvd25FcnJvcjsKKyAgICB9CisgIH0pOworCisgIGNvbnN0IHJlYWRlciA9IHRzLnJl
YWRhYmxlLmdldFJlYWRlcigpOworCisgIGNvbnN0IHdyaXRlciA9IHRzLndyaXRhYmxlLmdldFdy
aXRlcigpOworCisgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAgcHJvbWlzZV9yZWplY3RzX2V4
YWN0bHkodCwgdGhyb3duRXJyb3IsIHdyaXRlci53cml0ZSgnYScpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICd3cml0YWJsZVwncyB3cml0ZSBzaG91bGQgcmVqZWN0IHdpdGggdGhlIHRo
cm93biBlcnJvcicpLAorICAgIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIHRocm93bkVycm9y
LCByZWFkZXIucmVhZCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZWFkYWJsZVwn
cyByZWFkIHNob3VsZCByZWplY3Qgd2l0aCB0aGUgdGhyb3duIGVycm9yJyksCisgICAgcHJvbWlz
ZV9yZWplY3RzX2V4YWN0bHkodCwgdGhyb3duRXJyb3IsIHJlYWRlci5jbG9zZWQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ3JlYWRhYmxlXCdzIGNsb3NlZCBzaG91bGQgYmUgcmVqZWN0
ZWQgd2l0aCB0aGUgdGhyb3duIGVycm9yJyksCisgICAgcHJvbWlzZV9yZWplY3RzX2V4YWN0bHko
dCwgdGhyb3duRXJyb3IsIHdyaXRlci5jbG9zZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJ3dyaXRhYmxlXCdzIGNsb3NlZCBzaG91bGQgYmUgcmVqZWN0ZWQgd2l0aCB0aGUgdGhyb3du
IGVycm9yJykKKyAgXSk7Cit9LCAnVHJhbnNmb3JtU3RyZWFtIGVycm9ycyB0aHJvd24gaW4gdHJh
bnNmb3JtIHB1dCB0aGUgd3JpdGFibGUgYW5kIHJlYWRhYmxlIGluIGFuIGVycm9yZWQgc3RhdGUn
KTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBjb25zdCB0cyA9IG5ldyBUcmFuc2Zvcm1TdHJl
YW0oeworICAgIHRyYW5zZm9ybSgpIHsKKyAgICB9LAorICAgIGZsdXNoKCkgeworICAgICAgdGhy
b3cgdGhyb3duRXJyb3I7CisgICAgfQorICB9KTsKKworICBjb25zdCByZWFkZXIgPSB0cy5yZWFk
YWJsZS5nZXRSZWFkZXIoKTsKKworICBjb25zdCB3cml0ZXIgPSB0cy53cml0YWJsZS5nZXRXcml0
ZXIoKTsKKworICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAgIHdyaXRlci53cml0ZSgnYScpLAor
ICAgIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIHRocm93bkVycm9yLCB3cml0ZXIuY2xvc2Uo
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnd3JpdGFibGVcJ3MgY2xvc2Ugc2hvdWxk
IHJlamVjdCB3aXRoIHRoZSB0aHJvd24gZXJyb3InKSwKKyAgICBwcm9taXNlX3JlamVjdHNfZXhh
Y3RseSh0LCB0aHJvd25FcnJvciwgcmVhZGVyLnJlYWQoKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAncmVhZGFibGVcJ3MgcmVhZCBzaG91bGQgcmVqZWN0IHdpdGggdGhlIHRocm93biBl
cnJvcicpLAorICAgIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIHRocm93bkVycm9yLCByZWFk
ZXIuY2xvc2VkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZWFkYWJsZVwncyBjbG9z
ZWQgc2hvdWxkIGJlIHJlamVjdGVkIHdpdGggdGhlIHRocm93biBlcnJvcicpLAorICAgIHByb21p
c2VfcmVqZWN0c19leGFjdGx5KHQsIHRocm93bkVycm9yLCB3cml0ZXIuY2xvc2VkLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICd3cml0YWJsZVwncyBjbG9zZWQgc2hvdWxkIGJlIHJlamVj
dGVkIHdpdGggdGhlIHRocm93biBlcnJvcicpCisgIF0pOworfSwgJ1RyYW5zZm9ybVN0cmVhbSBl
cnJvcnMgdGhyb3duIGluIGZsdXNoIHB1dCB0aGUgd3JpdGFibGUgYW5kIHJlYWRhYmxlIGluIGFu
IGVycm9yZWQgc3RhdGUnKTsKKwordGVzdCgoKSA9PiB7CisgIG5ldyBUcmFuc2Zvcm1TdHJlYW0o
eworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGMuZW5xdWV1ZSgnYScpOworICAgICAgYy5lcnJvcihu
ZXcgRXJyb3IoJ2dlbmVyaWMgZXJyb3InKSk7CisgICAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVF
cnJvciwgKCkgPT4gYy5lbnF1ZXVlKCdiJyksICdlbnF1ZXVlKCkgc2hvdWxkIHRocm93Jyk7Cisg
ICAgfQorICB9KTsKK30sICdlcnJvcmVkIFRyYW5zZm9ybVN0cmVhbSBzaG91bGQgbm90IGVucXVl
dWUgbmV3IGNodW5rcycpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIGNvbnN0IHRzID0gbmV3
IFRyYW5zZm9ybVN0cmVhbSh7CisgICAgc3RhcnQoKSB7CisgICAgICByZXR1cm4gZmx1c2hBc3lu
Y0V2ZW50cygpLnRoZW4oKCkgPT4geworICAgICAgICB0aHJvdyB0aHJvd25FcnJvcjsKKyAgICAg
IH0pOworICAgIH0sCisgICAgdHJhbnNmb3JtOiB0LnVucmVhY2hlZF9mdW5jKCd0cmFuc2Zvcm0g
c2hvdWxkIG5vdCBiZSBjYWxsZWQnKSwKKyAgICBmbHVzaDogdC51bnJlYWNoZWRfZnVuYygnZmx1
c2ggc2hvdWxkIG5vdCBiZSBjYWxsZWQnKQorICB9KTsKKworICBjb25zdCB3cml0ZXIgPSB0cy53
cml0YWJsZS5nZXRXcml0ZXIoKTsKKyAgY29uc3QgcmVhZGVyID0gdHMucmVhZGFibGUuZ2V0UmVh
ZGVyKCk7CisgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAgcHJvbWlzZV9yZWplY3RzX2V4YWN0
bHkodCwgdGhyb3duRXJyb3IsIHdyaXRlci53cml0ZSgnYScpLCAnd3JpdGVyIHNob3VsZCByZWpl
Y3Qgd2l0aCB0aHJvd25FcnJvcicpLAorICAgIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIHRo
cm93bkVycm9yLCB3cml0ZXIuY2xvc2UoKSwgJ2Nsb3NlKCkgc2hvdWxkIHJlamVjdCB3aXRoIHRo
cm93bkVycm9yJyksCisgICAgcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgdGhyb3duRXJyb3Is
IHJlYWRlci5yZWFkKCksICdyZWFkZXIgc2hvdWxkIHJlamVjdCB3aXRoIHRocm93bkVycm9yJykK
KyAgXSk7Cit9LCAnVHJhbnNmb3JtU3RyZWFtIHRyYW5zZm9ybWVyLnN0YXJ0KCkgcmVqZWN0ZWQg
cHJvbWlzZSBzaG91bGQgZXJyb3IgdGhlIHN0cmVhbScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7
CisgIGNvbnN0IGNvbnRyb2xsZXJFcnJvciA9IG5ldyBFcnJvcignc3RhcnQgZmFpbHVyZScpOwor
ICBjb250cm9sbGVyRXJyb3IubmFtZSA9ICdjb250cm9sbGVyRXJyb3InOworICBjb25zdCB0cyA9
IG5ldyBUcmFuc2Zvcm1TdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIHJldHVybiBmbHVz
aEFzeW5jRXZlbnRzKCkKKyAgICAgICAgLnRoZW4oKCkgPT4geworICAgICAgICAgIGMuZXJyb3Io
Y29udHJvbGxlckVycm9yKTsKKyAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2lnbm9yZWQgZXJy
b3InKTsKKyAgICAgICAgfSk7CisgICAgfSwKKyAgICB0cmFuc2Zvcm06IHQudW5yZWFjaGVkX2Z1
bmMoJ3RyYW5zZm9ybSBzaG91bGQgbmV2ZXIgYmUgY2FsbGVkIGlmIHN0YXJ0KCkgZmFpbHMnKSwK
KyAgICBmbHVzaDogdC51bnJlYWNoZWRfZnVuYygnZmx1c2ggc2hvdWxkIG5ldmVyIGJlIGNhbGxl
ZCBpZiBzdGFydCgpIGZhaWxzJykKKyAgfSk7CisKKyAgY29uc3Qgd3JpdGVyID0gdHMud3JpdGFi
bGUuZ2V0V3JpdGVyKCk7CisgIGNvbnN0IHJlYWRlciA9IHRzLnJlYWRhYmxlLmdldFJlYWRlcigp
OworICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAgIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQs
IGNvbnRyb2xsZXJFcnJvciwgd3JpdGVyLndyaXRlKCdhJyksICd3cml0ZXIgc2hvdWxkIHJlamVj
dCB3aXRoIGNvbnRyb2xsZXJFcnJvcicpLAorICAgIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQs
IGNvbnRyb2xsZXJFcnJvciwgd3JpdGVyLmNsb3NlKCksICdjbG9zZSBzaG91bGQgcmVqZWN0IHdp
dGggc2FtZSBlcnJvcicpLAorICAgIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGNvbnRyb2xs
ZXJFcnJvciwgcmVhZGVyLnJlYWQoKSwgJ3JlYWRlciBzaG91bGQgcmVqZWN0IHdpdGggc2FtZSBl
cnJvcicpCisgIF0pOworfSwgJ3doZW4gY29udHJvbGxlci5lcnJvciBpcyBmb2xsb3dlZCBieSBh
IHJlamVjdGlvbiwgdGhlIGVycm9yIHJlYXNvbiBzaG91bGQgY29tZSBmcm9tIGNvbnRyb2xsZXIu
ZXJyb3InKTsKKwordGVzdCgoKSA9PiB7CisgIGFzc2VydF90aHJvd3NfanMoVVJJRXJyb3IsICgp
ID0+IG5ldyBUcmFuc2Zvcm1TdHJlYW0oeworICAgIHN0YXJ0KCkgeyB0aHJvdyBuZXcgVVJJRXJy
b3IoJ3N0YXJ0IHRocm93biBlcnJvcicpOyB9LAorICAgIHRyYW5zZm9ybSgpIHt9CisgIH0pLCAn
Y29uc3RydWN0b3Igc2hvdWxkIHRocm93Jyk7Cit9LCAnVHJhbnNmb3JtU3RyZWFtIGNvbnN0cnVj
dG9yIHNob3VsZCB0aHJvdyB3aGVuIHN0YXJ0IGRvZXMnKTsKKwordGVzdCgoKSA9PiB7CisgIGNv
bnN0IHN0cmF0ZWd5ID0geworICAgIHNpemUoKSB7IHRocm93IG5ldyBVUklFcnJvcignc2l6ZSB0
aHJvd24gZXJyb3InKTsgfQorICB9OworCisgIGFzc2VydF90aHJvd3NfanMoVVJJRXJyb3IsICgp
ID0+IG5ldyBUcmFuc2Zvcm1TdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGMuZW5xdWV1
ZSgnYScpOworICAgIH0sCisgICAgdHJhbnNmb3JtKCkge30KKyAgfSwgdW5kZWZpbmVkLCBzdHJh
dGVneSksICdjb25zdHJ1Y3RvciBzaG91bGQgdGhyb3cgdGhlIHNhbWUgZXJyb3Igc3RyYXRlZ3ku
c2l6ZSB0aHJvd3MnKTsKK30sICd3aGVuIHN0cmF0ZWd5LnNpemUgdGhyb3dzIGluc2lkZSBzdGFy
dCgpLCB0aGUgY29uc3RydWN0b3Igc2hvdWxkIHRocm93IHRoZSBzYW1lIGVycm9yJyk7CisKK3Rl
c3QoKCkgPT4geworICBjb25zdCBjb250cm9sbGVyRXJyb3IgPSBuZXcgVVJJRXJyb3IoJ2NvbnRy
b2xsZXIuZXJyb3InKTsKKworICBsZXQgY29udHJvbGxlcjsKKyAgY29uc3Qgc3RyYXRlZ3kgPSB7
CisgICAgc2l6ZSgpIHsKKyAgICAgIGNvbnRyb2xsZXIuZXJyb3IoY29udHJvbGxlckVycm9yKTsK
KyAgICAgIHRocm93IG5ldyBFcnJvcigncmVkdW5kYW50IGVycm9yJyk7CisgICAgfQorICB9Owor
CisgIGFzc2VydF90aHJvd3NfanMoVVJJRXJyb3IsICgpID0+IG5ldyBUcmFuc2Zvcm1TdHJlYW0o
eworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGNvbnRyb2xsZXIgPSBjOworICAgICAgYy5lbnF1ZXVl
KCdhJyk7CisgICAgfSwKKyAgICB0cmFuc2Zvcm0oKSB7fQorICB9LCB1bmRlZmluZWQsIHN0cmF0
ZWd5KSwgJ3RoZSBmaXJzdCBlcnJvciBzaG91bGQgYmUgdGhyb3duJyk7Cit9LCAnd2hlbiBzdHJh
dGVneS5zaXplIGNhbGxzIGNvbnRyb2xsZXIuZXJyb3IoKSB0aGVuIHRocm93cywgdGhlIGNvbnN0
cnVjdG9yIHNob3VsZCB0aHJvdyB0aGUgZmlyc3QgZXJyb3InKTsKKworcHJvbWlzZV90ZXN0KHQg
PT4geworICBjb25zdCB0cyA9IG5ldyBUcmFuc2Zvcm1TdHJlYW0oKTsKKyAgY29uc3Qgd3JpdGVy
ID0gdHMud3JpdGFibGUuZ2V0V3JpdGVyKCk7CisgIGNvbnN0IGNsb3NlZFByb21pc2UgPSB3cml0
ZXIuY2xvc2VkOworICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAgIHRzLnJlYWRhYmxlLmNhbmNl
bCh0aHJvd25FcnJvciksCisgICAgcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgdGhyb3duRXJy
b3IsIGNsb3NlZFByb21pc2UsICdjbG9zZWQgc2hvdWxkIHRocm93IGEgVHlwZUVycm9yJykKKyAg
XSk7Cit9LCAnY2FuY2VsbGluZyB0aGUgcmVhZGFibGUgc2lkZSBzaG91bGQgZXJyb3IgdGhlIHdy
aXRhYmxlJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgbGV0IGNvbnRyb2xsZXI7CisgIGNv
bnN0IHRzID0gbmV3IFRyYW5zZm9ybVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgY29u
dHJvbGxlciA9IGM7CisgICAgfQorICB9KTsKKyAgY29uc3Qgd3JpdGVyID0gdHMud3JpdGFibGUu
Z2V0V3JpdGVyKCk7CisgIGNvbnN0IHJlYWRlciA9IHRzLnJlYWRhYmxlLmdldFJlYWRlcigpOwor
ICBjb25zdCB3cml0ZVByb21pc2UgPSB3cml0ZXIud3JpdGUoJ2EnKTsKKyAgY29uc3QgY2xvc2VQ
cm9taXNlID0gd3JpdGVyLmNsb3NlKCk7CisgIGNvbnRyb2xsZXIuZXJyb3IodGhyb3duRXJyb3Ip
OworICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAgIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQs
IHRocm93bkVycm9yLCByZWFkZXIuY2xvc2VkLCAncmVhZGVyLmNsb3NlZCBzaG91bGQgcmVqZWN0
JyksCisgICAgcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgdGhyb3duRXJyb3IsIHdyaXRlUHJv
bWlzZSwgJ3dyaXRlUHJvbWlzZSBzaG91bGQgcmVqZWN0JyksCisgICAgcHJvbWlzZV9yZWplY3Rz
X2V4YWN0bHkodCwgdGhyb3duRXJyb3IsIGNsb3NlUHJvbWlzZSwgJ2Nsb3NlUHJvbWlzZSBzaG91
bGQgcmVqZWN0JyldKTsKK30sICdpdCBzaG91bGQgYmUgcG9zc2libGUgdG8gZXJyb3IgdGhlIHJl
YWRhYmxlIGJldHdlZW4gY2xvc2UgcmVxdWVzdGVkIGFuZCBjb21wbGV0ZScpOworCitwcm9taXNl
X3Rlc3QodCA9PiB7CisgIGNvbnN0IHRzID0gbmV3IFRyYW5zZm9ybVN0cmVhbSh7CisgICAgdHJh
bnNmb3JtKGNodW5rLCBjb250cm9sbGVyKSB7CisgICAgICBjb250cm9sbGVyLmVucXVldWUoY2h1
bmspOworICAgICAgY29udHJvbGxlci50ZXJtaW5hdGUoKTsKKyAgICAgIHRocm93IHRocm93bkVy
cm9yOworICAgIH0KKyAgfSwgdW5kZWZpbmVkLCB7IGhpZ2hXYXRlck1hcms6IDEgfSk7CisgIGNv
bnN0IHdyaXRlUHJvbWlzZSA9IHRzLndyaXRhYmxlLmdldFdyaXRlcigpLndyaXRlKCdhJyk7Cisg
IGNvbnN0IGNsb3NlZFByb21pc2UgPSB0cy5yZWFkYWJsZS5nZXRSZWFkZXIoKS5jbG9zZWQ7Cisg
IHJldHVybiBQcm9taXNlLmFsbChbCisgICAgcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgdGhy
b3duRXJyb3IsIHdyaXRlUHJvbWlzZSwgJ3dyaXRlKCkgc2hvdWxkIHJlamVjdCcpLAorICAgIHBy
b21pc2VfcmVqZWN0c19leGFjdGx5KHQsIHRocm93bkVycm9yLCBjbG9zZWRQcm9taXNlLCAncmVh
ZGVyLmNsb3NlZCBzaG91bGQgcmVqZWN0JykKKyAgXSk7Cit9LCAnYW4gZXhjZXB0aW9uIGZyb20g
dHJhbnNmb3JtKCkgc2hvdWxkIGVycm9yIHRoZSBzdHJlYW0gaWYgdGVybWluYXRlIGhhcyBiZWVu
IHJlcXVlc3RlZCBidXQgbm90IGNvbXBsZXRlZCcpOworCitwcm9taXNlX3Rlc3QodCA9PiB7Cisg
IGNvbnN0IHRzID0gbmV3IFRyYW5zZm9ybVN0cmVhbSgpOworICBjb25zdCB3cml0ZXIgPSB0cy53
cml0YWJsZS5nZXRXcml0ZXIoKTsKKyAgLy8gVGhlIG1pY3JvdGFzayBmb2xsb3dpbmcgdHJhbnNm
b3JtZXIuc3RhcnQoKSBoYXNuJ3QgY29tcGxldGVkIHlldCwgc28gdGhlIGFib3J0IGlzIHF1ZXVl
ZCBhbmQgbm90IG5vdGlmaWVkIHRvIHRoZQorICAvLyBUcmFuc2Zvcm1TdHJlYW0geWV0LgorICBj
b25zdCBhYm9ydFByb21pc2UgPSB3cml0ZXIuYWJvcnQodGhyb3duRXJyb3IpOworICBjb25zdCBj
YW5jZWxQcm9taXNlID0gdHMucmVhZGFibGUuY2FuY2VsKG5ldyBFcnJvcignY2FuY2VsIHJlYXNv
bicpKTsKKyAgcmV0dXJuIFByb21pc2UuYWxsKFsKKyAgICBhYm9ydFByb21pc2UsCisgICAgY2Fu
Y2VsUHJvbWlzZSwKKyAgICBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCB0aHJvd25FcnJvciwg
d3JpdGVyLmNsb3NlZCwgJ3dyaXRlci5jbG9zZWQgc2hvdWxkIHJlamVjdCB3aXRoIHRocm93bkVy
cm9yJyldKTsKK30sICdhYm9ydCBzaG91bGQgc2V0IHRoZSBjbG9zZSByZWFzb24gZm9yIHRoZSB3
cml0YWJsZSB3aGVuIGl0IGhhcHBlbnMgYmVmb3JlIGNhbmNlbCBkdXJpbmcgc3RhcnQsIGJ1dCBj
YW5jZWwgc2hvdWxkICcgKworICAgICAgICAgICAgICdzdGlsbCBzdWNjZWVkJyk7CisKK3Byb21p
c2VfdGVzdCh0ID0+IHsKKyAgbGV0IHJlc29sdmVUcmFuc2Zvcm07CisgIGNvbnN0IHRyYW5zZm9y
bVByb21pc2UgPSBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKKyAgICByZXNvbHZlVHJhbnNmb3Jt
ID0gcmVzb2x2ZTsKKyAgfSk7CisgIGNvbnN0IHRzID0gbmV3IFRyYW5zZm9ybVN0cmVhbSh7Cisg
ICAgdHJhbnNmb3JtKCkgeworICAgICAgcmV0dXJuIHRyYW5zZm9ybVByb21pc2U7CisgICAgfQor
ICB9LCB1bmRlZmluZWQsIHsgaGlnaFdhdGVyTWFyazogMiB9KTsKKyAgY29uc3Qgd3JpdGVyID0g
dHMud3JpdGFibGUuZ2V0V3JpdGVyKCk7CisgIHJldHVybiBkZWxheSgwKS50aGVuKCgpID0+IHsK
KyAgICBjb25zdCB3cml0ZVByb21pc2UgPSB3cml0ZXIud3JpdGUoKTsKKyAgICBjb25zdCBhYm9y
dFByb21pc2UgPSB3cml0ZXIuYWJvcnQodGhyb3duRXJyb3IpOworICAgIGNvbnN0IGNhbmNlbFBy
b21pc2UgPSB0cy5yZWFkYWJsZS5jYW5jZWwobmV3IEVycm9yKCdjYW5jZWwgcmVhc29uJykpOwor
ICAgIHJlc29sdmVUcmFuc2Zvcm0oKTsKKyAgICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAgICAg
d3JpdGVQcm9taXNlLAorICAgICAgYWJvcnRQcm9taXNlLAorICAgICAgY2FuY2VsUHJvbWlzZSwK
KyAgICAgIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIHRocm93bkVycm9yLCB3cml0ZXIuY2xv
c2VkLCAnd3JpdGVyLmNsb3NlZCBzaG91bGQgcmVqZWN0IHdpdGggdGhyb3duRXJyb3InKV0pOwor
ICB9KTsKK30sICdhYm9ydCBzaG91bGQgc2V0IHRoZSBjbG9zZSByZWFzb24gZm9yIHRoZSB3cml0
YWJsZSB3aGVuIGl0IGhhcHBlbnMgYmVmb3JlIGNhbmNlbCBkdXJpbmcgdW5kZXJseWluZyBzaW5r
IHdyaXRlLCAnICsKKyAgICAgICAgICAgICAnYnV0IGNhbmNlbCBzaG91bGQgc3RpbGwgc3VjY2Vl
ZCcpOworCitjb25zdCBpZ25vcmVkRXJyb3IgPSBuZXcgRXJyb3IoJ2lnbm9yZWRFcnJvcicpOwor
aWdub3JlZEVycm9yLm5hbWUgPSAnaWdub3JlZEVycm9yJzsKKworcHJvbWlzZV90ZXN0KHQgPT4g
eworICBjb25zdCB0cyA9IG5ldyBUcmFuc2Zvcm1TdHJlYW0oeworICAgIHN0YXJ0KGNvbnRyb2xs
ZXIpIHsKKyAgICAgIGNvbnRyb2xsZXIuZXJyb3IodGhyb3duRXJyb3IpOworICAgICAgY29udHJv
bGxlci5lcnJvcihpZ25vcmVkRXJyb3IpOworICAgIH0KKyAgfSk7CisgIHJldHVybiBwcm9taXNl
X3JlamVjdHNfZXhhY3RseSh0LCB0aHJvd25FcnJvciwgdHMud3JpdGFibGUuYWJvcnQoKSwgJ2Fi
b3J0KCkgc2hvdWxkIHJlamVjdCB3aXRoIHRocm93bkVycm9yJyk7Cit9LCAnY29udHJvbGxlci5l
cnJvcigpIHNob3VsZCBkbyBub3RoaW5nIHRoZSBzZWNvbmQgdGltZSBpdCBpcyBjYWxsZWQnKTsK
KworcHJvbWlzZV90ZXN0KHQgPT4geworICBsZXQgY29udHJvbGxlcjsKKyAgY29uc3QgdHMgPSBu
ZXcgVHJhbnNmb3JtU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjb250cm9sbGVyID0g
YzsKKyAgICB9CisgIH0pOworICBjb25zdCBjYW5jZWxQcm9taXNlID0gdHMucmVhZGFibGUuY2Fu
Y2VsKHRocm93bkVycm9yKTsKKyAgY29udHJvbGxlci5lcnJvcihpZ25vcmVkRXJyb3IpOworICBy
ZXR1cm4gUHJvbWlzZS5hbGwoWworICAgIGNhbmNlbFByb21pc2UsCisgICAgcHJvbWlzZV9yZWpl
Y3RzX2V4YWN0bHkodCwgdGhyb3duRXJyb3IsIHRzLndyaXRhYmxlLmdldFdyaXRlcigpLmNsb3Nl
ZCwgJ2Nsb3NlZCBzaG91bGQgcmVqZWN0IHdpdGggdGhyb3duRXJyb3InKQorICBdKTsKK30sICdj
b250cm9sbGVyLmVycm9yKCkgc2hvdWxkIGRvIG5vdGhpbmcgYWZ0ZXIgcmVhZGFibGUuY2FuY2Vs
KCknKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBsZXQgY29udHJvbGxlcjsKKyAgY29uc3Qg
dHMgPSBuZXcgVHJhbnNmb3JtU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjb250cm9s
bGVyID0gYzsKKyAgICB9CisgIH0pOworICByZXR1cm4gdHMud3JpdGFibGUuYWJvcnQodGhyb3du
RXJyb3IpLnRoZW4oKCkgPT4geworICAgIGNvbnRyb2xsZXIuZXJyb3IoaWdub3JlZEVycm9yKTsK
KyAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgdGhyb3duRXJyb3IsIHRzLndy
aXRhYmxlLmdldFdyaXRlcigpLmNsb3NlZCwgJ2Nsb3NlZCBzaG91bGQgcmVqZWN0IHdpdGggdGhy
b3duRXJyb3InKTsKKyAgfSk7Cit9LCAnY29udHJvbGxlci5lcnJvcigpIHNob3VsZCBkbyBub3Ro
aW5nIGFmdGVyIHdyaXRhYmxlLmFib3J0KCkgaGFzIGNvbXBsZXRlZCcpOworCitwcm9taXNlX3Rl
c3QodCA9PiB7CisgIGxldCBjb250cm9sbGVyOworICBjb25zdCB0cyA9IG5ldyBUcmFuc2Zvcm1T
dHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGNvbnRyb2xsZXIgPSBjOworICAgIH0sCisg
ICAgdHJhbnNmb3JtKCkgeworICAgICAgdGhyb3cgdGhyb3duRXJyb3I7CisgICAgfQorICB9LCB1
bmRlZmluZWQsIHsgaGlnaFdhdGVyTWFyazogSW5maW5pdHkgfSk7CisgIGNvbnN0IHdyaXRlciA9
IHRzLndyaXRhYmxlLmdldFdyaXRlcigpOworICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2V4YWN0
bHkodCwgdGhyb3duRXJyb3IsIHdyaXRlci53cml0ZSgpLCAnd3JpdGUoKSBzaG91bGQgcmVqZWN0
JykudGhlbigoKSA9PiB7CisgICAgY29udHJvbGxlci5lcnJvcigpOworICAgIHJldHVybiBwcm9t
aXNlX3JlamVjdHNfZXhhY3RseSh0LCB0aHJvd25FcnJvciwgd3JpdGVyLmNsb3NlZCwgJ2Nsb3Nl
ZCBzaG91bGQgcmVqZWN0IHdpdGggdGhyb3duRXJyb3InKTsKKyAgfSk7Cit9LCAnY29udHJvbGxl
ci5lcnJvcigpIHNob3VsZCBkbyBub3RoaW5nIGFmdGVyIGEgdHJhbnNmb3JtZXIgbWV0aG9kIGhh
cyB0aHJvd24gYW4gZXhjZXB0aW9uJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgbGV0IGNv
bnRyb2xsZXI7CisgIGxldCBjYWxscyA9IDA7CisgIGNvbnN0IHRzID0gbmV3IFRyYW5zZm9ybVN0
cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgY29udHJvbGxlciA9IGM7CisgICAgfSwKKyAg
ICB0cmFuc2Zvcm0oKSB7CisgICAgICArK2NhbGxzOworICAgIH0KKyAgfSwgdW5kZWZpbmVkLCB7
IGhpZ2hXYXRlck1hcms6IDEgfSk7CisgIHJldHVybiBkZWxheSgwKS50aGVuKCgpID0+IHsKKyAg
ICAvLyBDcmVhdGUgYmFja3ByZXNzdXJlLgorICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYScpOwor
ICAgIGNvbnN0IHdyaXRlciA9IHRzLndyaXRhYmxlLmdldFdyaXRlcigpOworICAgIC8vIHRyYW5z
Zm9ybSgpIHdpbGwgbm90IGJlIGNhbGxlZCB1bnRpbCBiYWNrcHJlc3N1cmUgaXMgcmVsaWV2ZWQu
CisgICAgY29uc3Qgd3JpdGVQcm9taXNlID0gd3JpdGVyLndyaXRlKCdiJyk7CisgICAgYXNzZXJ0
X2VxdWFscyhjYWxscywgMCwgJ3RyYW5zZm9ybSgpIHNob3VsZCBub3QgaGF2ZSBiZWVuIGNhbGxl
ZCcpOworICAgIGNvbnRyb2xsZXIuZXJyb3IodGhyb3duRXJyb3IpOworICAgIC8vIE5vdyBiYWNr
cHJlc3N1cmUgaGFzIGJlZW4gcmVsaWV2ZWQgYW5kIHRoZSB3cml0ZSBjYW4gcHJvY2VlZC4KKyAg
ICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgdGhyb3duRXJyb3IsIHdyaXRlUHJv
bWlzZSwgJ3dyaXRlKCkgc2hvdWxkIHJlamVjdCcpLnRoZW4oKCkgPT4geworICAgICAgYXNzZXJ0
X2VxdWFscyhjYWxscywgMCwgJ3RyYW5zZm9ybSgpIHNob3VsZCBub3QgYmUgY2FsbGVkJyk7Cisg
ICAgfSk7CisgIH0pOworfSwgJ2Vycm9yaW5nIGR1cmluZyB3cml0ZSB3aXRoIGJhY2twcmVzc3Vy
ZSBzaG91bGQgcmVzdWx0IGluIHRoZSB3cml0ZSBmYWlsaW5nJyk7CisKK3Byb21pc2VfdGVzdCh0
ID0+IHsKKyAgY29uc3QgdHMgPSBuZXcgVHJhbnNmb3JtU3RyZWFtKHt9LCB1bmRlZmluZWQsIHsg
aGlnaFdhdGVyTWFyazogMCB9KTsKKyAgcmV0dXJuIGRlbGF5KDApLnRoZW4oKCkgPT4geworICAg
IGNvbnN0IHdyaXRlciA9IHRzLndyaXRhYmxlLmdldFdyaXRlcigpOworICAgIC8vIHdyaXRlIHNo
b3VsZCBzdGFydCBzeW5jaHJvbm91c2x5CisgICAgY29uc3Qgd3JpdGVQcm9taXNlID0gd3JpdGVy
LndyaXRlKDApOworICAgIC8vIFRoZSB1bmRlcmx5aW5nIHNpbmsncyBhYm9ydCgpIGlzIG5vdCBj
YWxsZWQgdW50aWwgdGhlIHdyaXRlKCkgY29tcGxldGVzLgorICAgIGNvbnN0IGFib3J0UHJvbWlz
ZSA9IHdyaXRlci5hYm9ydCh0aHJvd25FcnJvcik7CisgICAgLy8gUGVyZm9ybSBhIHJlYWQgdG8g
cmVsaWV2ZSBiYWNrcHJlc3N1cmUgYW5kIHBlcm1pdCB0aGUgd3JpdGUoKSB0byBjb21wbGV0ZS4K
KyAgICBjb25zdCByZWFkUHJvbWlzZSA9IHRzLnJlYWRhYmxlLmdldFJlYWRlcigpLnJlYWQoKTsK
KyAgICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAgICAgcHJvbWlzZV9yZWplY3RzX2V4YWN0bHko
dCwgdGhyb3duRXJyb3IsIHJlYWRQcm9taXNlLCAncmVhZCgpIHNob3VsZCByZWplY3QnKSwKKyAg
ICAgIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIHRocm93bkVycm9yLCB3cml0ZVByb21pc2Us
ICd3cml0ZSgpIHNob3VsZCByZWplY3QnKSwKKyAgICAgIGFib3J0UHJvbWlzZQorICAgIF0pOwor
ICB9KTsKK30sICdhIHdyaXRlKCkgdGhhdCB3YXMgd2FpdGluZyBmb3IgYmFja3ByZXNzdXJlIHNo
b3VsZCByZWplY3QgaWYgdGhlIHdyaXRhYmxlIGlzIGFib3J0ZWQnKTsKKworcHJvbWlzZV90ZXN0
KHQgPT4geworICBjb25zdCB0cyA9IG5ldyBUcmFuc2Zvcm1TdHJlYW0oKTsKKyAgdHMud3JpdGFi
bGUuYWJvcnQodGhyb3duRXJyb3IpOworICBjb25zdCByZWFkZXIgPSB0cy5yZWFkYWJsZS5nZXRS
ZWFkZXIoKTsKKyAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIHRocm93bkVycm9y
LCByZWFkZXIucmVhZCgpLCAncmVhZCgpIHNob3VsZCByZWplY3Qgd2l0aCB0aHJvd25FcnJvcicp
OworfSwgJ3RoZSByZWFkYWJsZSBzaG91bGQgYmUgZXJyb3JlZCB3aXRoIHRoZSByZWFzb24gcGFz
c2VkIHRvIHRoZSB3cml0YWJsZSBhYm9ydCgpIG1ldGhvZCcpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1z
dHJlYW1zL2Vycm9ycy5hbnkud29ya2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy9lcnJv
cnMuYW55Lndvcmtlci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmQzZDc4ZjNkYTNiODdhOWI2
Yzg2ZTdiZGQzOWZhZDE4YjAxYTAwNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy9l
cnJvcnMuYW55Lndvcmtlci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0MiBAQAorCitGQUlMIFRy
YW5zZm9ybVN0cmVhbSBlcnJvcnMgdGhyb3duIGluIHRyYW5zZm9ybSBwdXQgdGhlIHdyaXRhYmxl
IGFuZCByZWFkYWJsZSBpbiBhbiBlcnJvcmVkIHN0YXRlIENhbid0IGZpbmQgdmFyaWFibGU6IFRy
YW5zZm9ybVN0cmVhbQorRkFJTCBUcmFuc2Zvcm1TdHJlYW0gZXJyb3JzIHRocm93biBpbiBmbHVz
aCBwdXQgdGhlIHdyaXRhYmxlIGFuZCByZWFkYWJsZSBpbiBhbiBlcnJvcmVkIHN0YXRlIENhbid0
IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCBlcnJvcmVkIFRyYW5zZm9ybVN0
cmVhbSBzaG91bGQgbm90IGVucXVldWUgbmV3IGNodW5rcyBDYW4ndCBmaW5kIHZhcmlhYmxlOiBU
cmFuc2Zvcm1TdHJlYW0KK0ZBSUwgVHJhbnNmb3JtU3RyZWFtIHRyYW5zZm9ybWVyLnN0YXJ0KCkg
cmVqZWN0ZWQgcHJvbWlzZSBzaG91bGQgZXJyb3IgdGhlIHN0cmVhbSBDYW4ndCBmaW5kIHZhcmlh
YmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgd2hlbiBjb250cm9sbGVyLmVycm9yIGlzIGZvbGxv
d2VkIGJ5IGEgcmVqZWN0aW9uLCB0aGUgZXJyb3IgcmVhc29uIHNob3VsZCBjb21lIGZyb20gY29u
dHJvbGxlci5lcnJvciBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwg
VHJhbnNmb3JtU3RyZWFtIGNvbnN0cnVjdG9yIHNob3VsZCB0aHJvdyB3aGVuIHN0YXJ0IGRvZXMg
YXNzZXJ0X3Rocm93c19qczogY29uc3RydWN0b3Igc2hvdWxkIHRocm93IGZ1bmN0aW9uICIoKSA9
PiBuZXcgVHJhbnNmb3JtU3RyZWFtKHsKKyAgICBzdGFydCgpIHsgdGhyb3cgbmV3IFVSSUVycm9y
KCdzdGFydCB0aHJvd24gZXJyb3InKTsgfSwKKyAgICB0cmFuc2Zvcm0oKSB7fQorICB9KSIgdGhy
ZXcgb2JqZWN0ICJSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3Jt
U3RyZWFtIiAoIlJlZmVyZW5jZUVycm9yIikgZXhwZWN0ZWQgaW5zdGFuY2Ugb2YgZnVuY3Rpb24g
ImZ1bmN0aW9uIFVSSUVycm9yKCkgeworICAgIFtuYXRpdmUgY29kZV0KK30iICgiVVJJRXJyb3Ii
KQorRkFJTCB3aGVuIHN0cmF0ZWd5LnNpemUgdGhyb3dzIGluc2lkZSBzdGFydCgpLCB0aGUgY29u
c3RydWN0b3Igc2hvdWxkIHRocm93IHRoZSBzYW1lIGVycm9yIGFzc2VydF90aHJvd3NfanM6IGNv
bnN0cnVjdG9yIHNob3VsZCB0aHJvdyB0aGUgc2FtZSBlcnJvciBzdHJhdGVneS5zaXplIHRocm93
cyBmdW5jdGlvbiAiKCkgPT4gbmV3IFRyYW5zZm9ybVN0cmVhbSh7CisgICAgc3RhcnQoYykgewor
ICAgICAgYy5lbnF1ZXVlKCdhJyk7CisgICAgfSwKKyAgICB0cmFuc2Zvcm0oKSB7fQorICB9LCB1
bmRlZmluZWQsIHN0cmF0ZWd5KSIgdGhyZXcgb2JqZWN0ICJSZWZlcmVuY2VFcnJvcjogQ2FuJ3Qg
ZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtIiAoIlJlZmVyZW5jZUVycm9yIikgZXhwZWN0
ZWQgaW5zdGFuY2Ugb2YgZnVuY3Rpb24gImZ1bmN0aW9uIFVSSUVycm9yKCkgeworICAgIFtuYXRp
dmUgY29kZV0KK30iICgiVVJJRXJyb3IiKQorRkFJTCB3aGVuIHN0cmF0ZWd5LnNpemUgY2FsbHMg
Y29udHJvbGxlci5lcnJvcigpIHRoZW4gdGhyb3dzLCB0aGUgY29uc3RydWN0b3Igc2hvdWxkIHRo
cm93IHRoZSBmaXJzdCBlcnJvciBhc3NlcnRfdGhyb3dzX2pzOiB0aGUgZmlyc3QgZXJyb3Igc2hv
dWxkIGJlIHRocm93biBmdW5jdGlvbiAiKCkgPT4gbmV3IFRyYW5zZm9ybVN0cmVhbSh7CisgICAg
c3RhcnQoYykgeworICAgICAgY29udHJvbGxlciA9IGM7CisgICAgICBjLmVucXVldWUoJ2EnKTsK
KyAgICB9LAorICAgIHRyYW5zZm9ybSgpIHt9CisgIH0sIHVuZGVmaW5lZCwgc3RyYXRlZ3kpIiB0
aHJldyBvYmplY3QgIlJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zv
cm1TdHJlYW0iICgiUmVmZXJlbmNlRXJyb3IiKSBleHBlY3RlZCBpbnN0YW5jZSBvZiBmdW5jdGlv
biAiZnVuY3Rpb24gVVJJRXJyb3IoKSB7CisgICAgW25hdGl2ZSBjb2RlXQorfSIgKCJVUklFcnJv
ciIpCitGQUlMIGNhbmNlbGxpbmcgdGhlIHJlYWRhYmxlIHNpZGUgc2hvdWxkIGVycm9yIHRoZSB3
cml0YWJsZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgaXQgc2hv
dWxkIGJlIHBvc3NpYmxlIHRvIGVycm9yIHRoZSByZWFkYWJsZSBiZXR3ZWVuIGNsb3NlIHJlcXVl
c3RlZCBhbmQgY29tcGxldGUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitG
QUlMIGFuIGV4Y2VwdGlvbiBmcm9tIHRyYW5zZm9ybSgpIHNob3VsZCBlcnJvciB0aGUgc3RyZWFt
IGlmIHRlcm1pbmF0ZSBoYXMgYmVlbiByZXF1ZXN0ZWQgYnV0IG5vdCBjb21wbGV0ZWQgQ2FuJ3Qg
ZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIGFib3J0IHNob3VsZCBzZXQgdGhl
IGNsb3NlIHJlYXNvbiBmb3IgdGhlIHdyaXRhYmxlIHdoZW4gaXQgaGFwcGVucyBiZWZvcmUgY2Fu
Y2VsIGR1cmluZyBzdGFydCwgYnV0IGNhbmNlbCBzaG91bGQgc3RpbGwgc3VjY2VlZCBDYW4ndCBm
aW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgYWJvcnQgc2hvdWxkIHNldCB0aGUg
Y2xvc2UgcmVhc29uIGZvciB0aGUgd3JpdGFibGUgd2hlbiBpdCBoYXBwZW5zIGJlZm9yZSBjYW5j
ZWwgZHVyaW5nIHVuZGVybHlpbmcgc2luayB3cml0ZSwgYnV0IGNhbmNlbCBzaG91bGQgc3RpbGwg
c3VjY2VlZCBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgY29udHJv
bGxlci5lcnJvcigpIHNob3VsZCBkbyBub3RoaW5nIHRoZSBzZWNvbmQgdGltZSBpdCBpcyBjYWxs
ZWQgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIGNvbnRyb2xsZXIu
ZXJyb3IoKSBzaG91bGQgZG8gbm90aGluZyBhZnRlciByZWFkYWJsZS5jYW5jZWwoKSBDYW4ndCBm
aW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgY29udHJvbGxlci5lcnJvcigpIHNo
b3VsZCBkbyBub3RoaW5nIGFmdGVyIHdyaXRhYmxlLmFib3J0KCkgaGFzIGNvbXBsZXRlZCBDYW4n
dCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgY29udHJvbGxlci5lcnJvcigp
IHNob3VsZCBkbyBub3RoaW5nIGFmdGVyIGEgdHJhbnNmb3JtZXIgbWV0aG9kIGhhcyB0aHJvd24g
YW4gZXhjZXB0aW9uIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCBl
cnJvcmluZyBkdXJpbmcgd3JpdGUgd2l0aCBiYWNrcHJlc3N1cmUgc2hvdWxkIHJlc3VsdCBpbiB0
aGUgd3JpdGUgZmFpbGluZyBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZB
SUwgYSB3cml0ZSgpIHRoYXQgd2FzIHdhaXRpbmcgZm9yIGJhY2twcmVzc3VyZSBzaG91bGQgcmVq
ZWN0IGlmIHRoZSB3cml0YWJsZSBpcyBhYm9ydGVkIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5z
Zm9ybVN0cmVhbQorRkFJTCB0aGUgcmVhZGFibGUgc2hvdWxkIGJlIGVycm9yZWQgd2l0aCB0aGUg
cmVhc29uIHBhc3NlZCB0byB0aGUgd3JpdGFibGUgYWJvcnQoKSBtZXRob2QgQ2FuJ3QgZmluZCB2
YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy9lcnJv
cnMuYW55Lndvcmtlci5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1zL2Vycm9ycy5hbnkud29ya2VyLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMjM4MjkxMzUyOGU2OTNiM2E1ZDU2YzY2MGE0NTA2MDk4MGI1NDhjMwotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy9lcnJvcnMuYW55Lndvcmtlci5odG1sCkBAIC0w
LDAgKzEgQEAKKzwhLS0gVGhpcyBmaWxlIGlzIHJlcXVpcmVkIGZvciBXZWJLaXQgdGVzdCBpbmZy
YXN0cnVjdHVyZSB0byBydW4gdGhlIHRlbXBsYXRlZCB0ZXN0IC0tPgpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy9mbHVzaC5hbnktZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
L3RyYW5zZm9ybS1zdHJlYW1zL2ZsdXNoLmFueS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGRl
ZDgxYTE5NDQ1ZjdhYWIwMmJlNjQ0MTE5NmFlODgzM2M0NzUzYgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy90cmFu
c2Zvcm0tc3RyZWFtcy9mbHVzaC5hbnktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNyBAQAorCitG
QUlMIFRyYW5zZm9ybVN0cmVhbSBmbHVzaCBpcyBjYWxsZWQgaW1tZWRpYXRlbHkgd2hlbiB0aGUg
d3JpdGFibGUgaXMgY2xvc2VkLCBpZiBubyB3cml0ZXMgYXJlIHF1ZXVlZCBDYW4ndCBmaW5kIHZh
cmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgVHJhbnNmb3JtU3RyZWFtIGZsdXNoIGlzIGNh
bGxlZCBhZnRlciBhbGwgcXVldWVkIHdyaXRlcyBmaW5pc2gsIG9uY2UgdGhlIHdyaXRhYmxlIGlz
IGNsb3NlZCBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgVHJhbnNm
b3JtU3RyZWFtIGZsdXNoIGdldHMgYSBjaGFuY2UgdG8gZW5xdWV1ZSBtb3JlIGludG8gdGhlIHJl
YWRhYmxlIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCBUcmFuc2Zv
cm1TdHJlYW0gZmx1c2ggZ2V0cyBhIGNoYW5jZSB0byBlbnF1ZXVlIG1vcmUgaW50byB0aGUgcmVh
ZGFibGUsIGFuZCBjYW4gdGhlbiBhc3luYyBjbG9zZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFu
c2Zvcm1TdHJlYW0KK0ZBSUwgZXJyb3IoKSBkdXJpbmcgZmx1c2ggc2hvdWxkIGNhdXNlIHdyaXRl
ci5jbG9zZSgpIHRvIHJlamVjdCBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0K
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1zL2ZsdXNoLmFueS5odG1sIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1z
L2ZsdXNoLmFueS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzODI5MTM1MjhlNjkzYjNhNWQ1NmM2NjBhNDUw
NjA5ODBiNTQ4YzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvdHJhbnNmb3JtLXN0cmVhbXMvZmx1c2guYW55Lmh0
bWwKQEAgLTAsMCArMSBAQAorPCEtLSBUaGlzIGZpbGUgaXMgcmVxdWlyZWQgZm9yIFdlYktpdCB0
ZXN0IGluZnJhc3RydWN0dXJlIHRvIHJ1biB0aGUgdGVtcGxhdGVkIHRlc3QgLS0+ClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1zL2ZsdXNoLmFueS5q
cyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy90
cmFuc2Zvcm0tc3RyZWFtcy9mbHVzaC5hbnkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGM0MDUzMjk1N2IxNGJk
ZGIyNTU1MTMzZGJkMWIyZjQyNDg0NmQ4OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFt
cy9mbHVzaC5hbnkuanMKQEAgLTAsMCArMSwxMzEgQEAKKy8vIE1FVEE6IGdsb2JhbD13aW5kb3cs
d29ya2VyLGpzc2hlbGwKKy8vIE1FVEE6IHNjcmlwdD0uLi9yZXNvdXJjZXMvdGVzdC11dGlscy5q
cworJ3VzZSBzdHJpY3QnOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworICBsZXQgZmx1c2hDYWxs
ZWQgPSBmYWxzZTsKKyAgY29uc3QgdHMgPSBuZXcgVHJhbnNmb3JtU3RyZWFtKHsKKyAgICB0cmFu
c2Zvcm0oKSB7IH0sCisgICAgZmx1c2goKSB7CisgICAgICBmbHVzaENhbGxlZCA9IHRydWU7Cisg
ICAgfQorICB9KTsKKworICByZXR1cm4gdHMud3JpdGFibGUuZ2V0V3JpdGVyKCkuY2xvc2UoKS50
aGVuKCgpID0+IHsKKyAgICByZXR1cm4gYXNzZXJ0X3RydWUoZmx1c2hDYWxsZWQsICdjbG9zaW5n
IHRoZSB3cml0YWJsZSB0cmlnZ2VycyB0aGUgdHJhbnNmb3JtIGZsdXNoIGltbWVkaWF0ZWx5Jyk7
CisgIH0pOworfSwgJ1RyYW5zZm9ybVN0cmVhbSBmbHVzaCBpcyBjYWxsZWQgaW1tZWRpYXRlbHkg
d2hlbiB0aGUgd3JpdGFibGUgaXMgY2xvc2VkLCBpZiBubyB3cml0ZXMgYXJlIHF1ZXVlZCcpOwor
Citwcm9taXNlX3Rlc3QoKCkgPT4geworICBsZXQgZmx1c2hDYWxsZWQgPSBmYWxzZTsKKyAgbGV0
IHJlc29sdmVUcmFuc2Zvcm07CisgIGNvbnN0IHRzID0gbmV3IFRyYW5zZm9ybVN0cmVhbSh7Cisg
ICAgdHJhbnNmb3JtKCkgeworICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4gewor
ICAgICAgICByZXNvbHZlVHJhbnNmb3JtID0gcmVzb2x2ZTsKKyAgICAgIH0pOworICAgIH0sCisg
ICAgZmx1c2goKSB7CisgICAgICBmbHVzaENhbGxlZCA9IHRydWU7CisgICAgICByZXR1cm4gbmV3
IFByb21pc2UoKCkgPT4ge30pOyAvLyBuZXZlciByZXNvbHZlcworICAgIH0KKyAgfSwgdW5kZWZp
bmVkLCB7IGhpZ2hXYXRlck1hcms6IDEgfSk7CisKKyAgY29uc3Qgd3JpdGVyID0gdHMud3JpdGFi
bGUuZ2V0V3JpdGVyKCk7CisgIHdyaXRlci53cml0ZSgnYScpOworICB3cml0ZXIuY2xvc2UoKTsK
KyAgYXNzZXJ0X2ZhbHNlKGZsdXNoQ2FsbGVkLCAnY2xvc2luZyB0aGUgd3JpdGFibGUgZG9lcyBu
b3QgaW1tZWRpYXRlbHkgY2FsbCBmbHVzaCBpZiB3cml0ZXMgYXJlIG5vdCBmaW5pc2hlZCcpOwor
CisgIGxldCByc0Nsb3NlZCA9IGZhbHNlOworICB0cy5yZWFkYWJsZS5nZXRSZWFkZXIoKS5jbG9z
ZWQudGhlbigoKSA9PiB7CisgICAgcnNDbG9zZWQgPSB0cnVlOworICB9KTsKKworICByZXR1cm4g
ZGVsYXkoMCkudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X2ZhbHNlKGZsdXNoQ2FsbGVkLCAnY2xv
c2luZyB0aGUgd3JpdGFibGUgZG9lcyBub3QgYXN5bmNocm9ub3VzbHkgY2FsbCBmbHVzaCBpZiB3
cml0ZXMgYXJlIG5vdCBmaW5pc2hlZCcpOworICAgIHJlc29sdmVUcmFuc2Zvcm0oKTsKKyAgICBy
ZXR1cm4gZGVsYXkoMCk7CisgIH0pLnRoZW4oKCkgPT4geworICAgIGFzc2VydF90cnVlKGZsdXNo
Q2FsbGVkLCAnZmx1c2ggaXMgZXZlbnR1YWxseSBjYWxsZWQnKTsKKyAgICBhc3NlcnRfZmFsc2Uo
cnNDbG9zZWQsICdpZiBmbHVzaFByb21pc2UgZG9lcyBub3QgcmVzb2x2ZSwgdGhlIHJlYWRhYmxl
IGRvZXMgbm90IGJlY29tZSBjbG9zZWQnKTsKKyAgfSk7Cit9LCAnVHJhbnNmb3JtU3RyZWFtIGZs
dXNoIGlzIGNhbGxlZCBhZnRlciBhbGwgcXVldWVkIHdyaXRlcyBmaW5pc2gsIG9uY2UgdGhlIHdy
aXRhYmxlIGlzIGNsb3NlZCcpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworICBsZXQgYzsKKyAg
Y29uc3QgdHMgPSBuZXcgVHJhbnNmb3JtU3RyZWFtKHsKKyAgICBzdGFydChjb250cm9sbGVyKSB7
CisgICAgICBjID0gY29udHJvbGxlcjsKKyAgICB9LAorICAgIHRyYW5zZm9ybSgpIHsKKyAgICB9
LAorICAgIGZsdXNoKCkgeworICAgICAgYy5lbnF1ZXVlKCd4Jyk7CisgICAgICBjLmVucXVldWUo
J3knKTsKKyAgICB9CisgIH0pOworCisgIGNvbnN0IHJlYWRlciA9IHRzLnJlYWRhYmxlLmdldFJl
YWRlcigpOworCisgIGNvbnN0IHdyaXRlciA9IHRzLndyaXRhYmxlLmdldFdyaXRlcigpOworICB3
cml0ZXIud3JpdGUoJ2EnKTsKKyAgd3JpdGVyLmNsb3NlKCk7CisgIHJldHVybiByZWFkZXIucmVh
ZCgpLnRoZW4ocmVzdWx0MSA9PiB7CisgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQxLnZhbHVlLCAn
eCcsICd0aGUgZmlyc3QgY2h1bmsgcmVhZCBpcyB0aGUgZmlyc3Qgb25lIGVucXVldWVkIGluIGZs
dXNoJyk7CisgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQxLmRvbmUsIGZhbHNlLCAndGhlIGZpcnN0
IGNodW5rIHJlYWQgaXMgdGhlIGZpcnN0IG9uZSBlbnF1ZXVlZCBpbiBmbHVzaCcpOworCisgICAg
cmV0dXJuIHJlYWRlci5yZWFkKCkudGhlbihyZXN1bHQyID0+IHsKKyAgICAgIGFzc2VydF9lcXVh
bHMocmVzdWx0Mi52YWx1ZSwgJ3knLCAndGhlIHNlY29uZCBjaHVuayByZWFkIGlzIHRoZSBzZWNv
bmQgb25lIGVucXVldWVkIGluIGZsdXNoJyk7CisgICAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdDIu
ZG9uZSwgZmFsc2UsICd0aGUgc2Vjb25kIGNodW5rIHJlYWQgaXMgdGhlIHNlY29uZCBvbmUgZW5x
dWV1ZWQgaW4gZmx1c2gnKTsKKyAgICB9KTsKKyAgfSk7Cit9LCAnVHJhbnNmb3JtU3RyZWFtIGZs
dXNoIGdldHMgYSBjaGFuY2UgdG8gZW5xdWV1ZSBtb3JlIGludG8gdGhlIHJlYWRhYmxlJyk7CisK
K3Byb21pc2VfdGVzdCgoKSA9PiB7CisgIGxldCBjOworICBjb25zdCB0cyA9IG5ldyBUcmFuc2Zv
cm1TdHJlYW0oeworICAgIHN0YXJ0KGNvbnRyb2xsZXIpIHsKKyAgICAgIGMgPSBjb250cm9sbGVy
OworICAgIH0sCisgICAgdHJhbnNmb3JtKCkgeworICAgIH0sCisgICAgZmx1c2goKSB7CisgICAg
ICBjLmVucXVldWUoJ3gnKTsKKyAgICAgIGMuZW5xdWV1ZSgneScpOworICAgICAgcmV0dXJuIGRl
bGF5KDApOworICAgIH0KKyAgfSk7CisKKyAgY29uc3QgcmVhZGVyID0gdHMucmVhZGFibGUuZ2V0
UmVhZGVyKCk7CisKKyAgY29uc3Qgd3JpdGVyID0gdHMud3JpdGFibGUuZ2V0V3JpdGVyKCk7Cisg
IHdyaXRlci53cml0ZSgnYScpOworICB3cml0ZXIuY2xvc2UoKTsKKworICByZXR1cm4gUHJvbWlz
ZS5hbGwoWworICAgIHJlYWRlci5yZWFkKCkudGhlbihyZXN1bHQxID0+IHsKKyAgICAgIGFzc2Vy
dF9lcXVhbHMocmVzdWx0MS52YWx1ZSwgJ3gnLCAndGhlIGZpcnN0IGNodW5rIHJlYWQgaXMgdGhl
IGZpcnN0IG9uZSBlbnF1ZXVlZCBpbiBmbHVzaCcpOworICAgICAgYXNzZXJ0X2VxdWFscyhyZXN1
bHQxLmRvbmUsIGZhbHNlLCAndGhlIGZpcnN0IGNodW5rIHJlYWQgaXMgdGhlIGZpcnN0IG9uZSBl
bnF1ZXVlZCBpbiBmbHVzaCcpOworCisgICAgICByZXR1cm4gcmVhZGVyLnJlYWQoKS50aGVuKHJl
c3VsdDIgPT4geworICAgICAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdDIudmFsdWUsICd5JywgJ3Ro
ZSBzZWNvbmQgY2h1bmsgcmVhZCBpcyB0aGUgc2Vjb25kIG9uZSBlbnF1ZXVlZCBpbiBmbHVzaCcp
OworICAgICAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdDIuZG9uZSwgZmFsc2UsICd0aGUgc2Vjb25k
IGNodW5rIHJlYWQgaXMgdGhlIHNlY29uZCBvbmUgZW5xdWV1ZWQgaW4gZmx1c2gnKTsKKyAgICAg
IH0pOworICAgIH0pLAorICAgIHJlYWRlci5jbG9zZWQudGhlbigoKSA9PiB7CisgICAgICBhc3Nl
cnRfdHJ1ZSh0cnVlLCAncmVhZGFibGUgcmVhZGVyIGJlY29tZXMgY2xvc2VkJyk7CisgICAgfSkK
KyAgXSk7Cit9LCAnVHJhbnNmb3JtU3RyZWFtIGZsdXNoIGdldHMgYSBjaGFuY2UgdG8gZW5xdWV1
ZSBtb3JlIGludG8gdGhlIHJlYWRhYmxlLCBhbmQgY2FuIHRoZW4gYXN5bmMgY2xvc2UnKTsKKwor
Y29uc3QgZXJyb3IxID0gbmV3IEVycm9yKCdlcnJvcjEnKTsKK2Vycm9yMS5uYW1lID0gJ2Vycm9y
MSc7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgY29uc3QgdHMgPSBuZXcgVHJhbnNmb3JtU3Ry
ZWFtKHsKKyAgICBmbHVzaChjb250cm9sbGVyKSB7CisgICAgICBjb250cm9sbGVyLmVycm9yKGVy
cm9yMSk7CisgICAgfQorICB9KTsKKyAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQs
IGVycm9yMSwgdHMud3JpdGFibGUuZ2V0V3JpdGVyKCkuY2xvc2UoKSwgJ2Nsb3NlKCkgc2hvdWxk
IHJlamVjdCcpOworfSwgJ2Vycm9yKCkgZHVyaW5nIGZsdXNoIHNob3VsZCBjYXVzZSB3cml0ZXIu
Y2xvc2UoKSB0byByZWplY3QnKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy9mbHVzaC5hbnku
d29ya2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy9mbHVzaC5hbnkud29ya2VyLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi44ZGVkODFhMTk0NDVmN2FhYjAyYmU2NDQxMTk2YWU4ODMzYzQ3
NTNiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1zL2ZsdXNoLmFueS53b3JrZXItZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsNyBAQAorCitGQUlMIFRyYW5zZm9ybVN0cmVhbSBmbHVzaCBp
cyBjYWxsZWQgaW1tZWRpYXRlbHkgd2hlbiB0aGUgd3JpdGFibGUgaXMgY2xvc2VkLCBpZiBubyB3
cml0ZXMgYXJlIHF1ZXVlZCBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZB
SUwgVHJhbnNmb3JtU3RyZWFtIGZsdXNoIGlzIGNhbGxlZCBhZnRlciBhbGwgcXVldWVkIHdyaXRl
cyBmaW5pc2gsIG9uY2UgdGhlIHdyaXRhYmxlIGlzIGNsb3NlZCBDYW4ndCBmaW5kIHZhcmlhYmxl
OiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgVHJhbnNmb3JtU3RyZWFtIGZsdXNoIGdldHMgYSBjaGFu
Y2UgdG8gZW5xdWV1ZSBtb3JlIGludG8gdGhlIHJlYWRhYmxlIENhbid0IGZpbmQgdmFyaWFibGU6
IFRyYW5zZm9ybVN0cmVhbQorRkFJTCBUcmFuc2Zvcm1TdHJlYW0gZmx1c2ggZ2V0cyBhIGNoYW5j
ZSB0byBlbnF1ZXVlIG1vcmUgaW50byB0aGUgcmVhZGFibGUsIGFuZCBjYW4gdGhlbiBhc3luYyBj
bG9zZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgZXJyb3IoKSBk
dXJpbmcgZmx1c2ggc2hvdWxkIGNhdXNlIHdyaXRlci5jbG9zZSgpIHRvIHJlamVjdCBDYW4ndCBm
aW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1z
L2ZsdXNoLmFueS53b3JrZXIuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy9mbHVzaC5hbnkud29ya2VyLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMjM4MjkxMzUyOGU2OTNiM2E1ZDU2YzY2MGE0NTA2MDk4MGI1NDhjMwot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy9mbHVzaC5hbnkud29ya2VyLmh0bWwKQEAg
LTAsMCArMSBAQAorPCEtLSBUaGlzIGZpbGUgaXMgcmVxdWlyZWQgZm9yIFdlYktpdCB0ZXN0IGlu
ZnJhc3RydWN0dXJlIHRvIHJ1biB0aGUgdGVtcGxhdGVkIHRlc3QgLS0+ClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1zL2dlbmVyYWwuYW55LWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy9nZW5lcmFsLmFueS1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZGRhMzQ0OWNiZGUzNzliZTYxNjA1Nzk1NDk3YzFiMTU4YjgxYWE1MQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy90cmFuc2Zvcm0tc3RyZWFtcy9nZW5lcmFsLmFueS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwz
MSBAQAorCitGQUlMIFRyYW5zZm9ybVN0cmVhbSBjYW4gYmUgY29uc3RydWN0ZWQgd2l0aCBhIHRy
YW5zZm9ybSBmdW5jdGlvbiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZB
SUwgVHJhbnNmb3JtU3RyZWFtIGNhbiBiZSBjb25zdHJ1Y3RlZCB3aXRoIG5vIHRyYW5zZm9ybSBm
dW5jdGlvbiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgVHJhbnNm
b3JtU3RyZWFtIHdyaXRhYmxlIHN0YXJ0cyBpbiB0aGUgd3JpdGFibGUgc3RhdGUgQ2FuJ3QgZmlu
ZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIElkZW50aXR5IFRyYW5zZm9ybVN0cmVh
bTogY2FuIHJlYWQgZnJvbSByZWFkYWJsZSB3aGF0IGlzIHB1dCBpbnRvIHdyaXRhYmxlIENhbid0
IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCBVcHBlcmNhc2VyIHN5bmMgVHJh
bnNmb3JtU3RyZWFtOiBjYW4gcmVhZCBmcm9tIHJlYWRhYmxlIHRyYW5zZm9ybWVkIHZlcnNpb24g
b2Ygd2hhdCBpcyBwdXQgaW50byB3cml0YWJsZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zv
cm1TdHJlYW0KK0ZBSUwgVXBwZXJjYXNlci1kb3VibGVyIHN5bmMgVHJhbnNmb3JtU3RyZWFtOiBj
YW4gcmVhZCBib3RoIGNodW5rcyBwdXQgaW50byB0aGUgcmVhZGFibGUgQ2FuJ3QgZmluZCB2YXJp
YWJsZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIFVwcGVyY2FzZXIgYXN5bmMgVHJhbnNmb3JtU3Ry
ZWFtOiBjYW4gcmVhZCBmcm9tIHJlYWRhYmxlIHRyYW5zZm9ybWVkIHZlcnNpb24gb2Ygd2hhdCBp
cyBwdXQgaW50byB3cml0YWJsZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0K
K0ZBSUwgVXBwZXJjYXNlci1kb3VibGVyIGFzeW5jIFRyYW5zZm9ybVN0cmVhbTogY2FuIHJlYWQg
Ym90aCBjaHVua3MgcHV0IGludG8gdGhlIHJlYWRhYmxlIENhbid0IGZpbmQgdmFyaWFibGU6IFRy
YW5zZm9ybVN0cmVhbQorRkFJTCBUcmFuc2Zvcm1TdHJlYW06IGJ5IGRlZmF1bHQsIGNsb3Npbmcg
dGhlIHdyaXRhYmxlIGNsb3NlcyB0aGUgcmVhZGFibGUgKHdoZW4gdGhlcmUgYXJlIG5vIHF1ZXVl
ZCB3cml0ZXMpIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCBUcmFu
c2Zvcm1TdHJlYW06IGJ5IGRlZmF1bHQsIGNsb3NpbmcgdGhlIHdyaXRhYmxlIHdhaXRzIGZvciB0
cmFuc2Zvcm1zIHRvIGZpbmlzaCBiZWZvcmUgY2xvc2luZyBib3RoIENhbid0IGZpbmQgdmFyaWFi
bGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCBUcmFuc2Zvcm1TdHJlYW06IGJ5IGRlZmF1bHQsIGNs
b3NpbmcgdGhlIHdyaXRhYmxlIGNsb3NlcyB0aGUgcmVhZGFibGUgYWZ0ZXIgc3luYyBlbnF1ZXVl
cyBhbmQgYXN5bmMgZG9uZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZB
SUwgVHJhbnNmb3JtU3RyZWFtOiBieSBkZWZhdWx0LCBjbG9zaW5nIHRoZSB3cml0YWJsZSBjbG9z
ZXMgdGhlIHJlYWRhYmxlIGFmdGVyIGFzeW5jIGVucXVldWVzIGFuZCBhc3luYyBkb25lIENhbid0
IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCBUcmFuc2Zvcm0gc3RyZWFtIHNo
b3VsZCBjYWxsIHRyYW5zZm9ybWVyIG1ldGhvZHMgYXMgbWV0aG9kcyBDYW4ndCBmaW5kIHZhcmlh
YmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgbWV0aG9kcyBzaG91bGQgbm90IG5vdCBoYXZlIC5h
cHBseSgpIG9yIC5jYWxsKCkgY2FsbGVkIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0
cmVhbQorRkFJTCBUcmFuc2Zvcm1TdHJlYW0gc3RhcnQsIHRyYW5zZm9ybSwgYW5kIGZsdXNoIHNo
b3VsZCBiZSBzdHJpY3RseSBvcmRlcmVkIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0
cmVhbQorRkFJTCBpdCBzaG91bGQgYmUgcG9zc2libGUgdG8gY2FsbCB0cmFuc2Zvcm0oKSBzeW5j
aHJvbm91c2x5IENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCBjbG9z
aW5nIHRoZSB3cml0YWJsZSBzaG91bGQgY2xvc2UgdGhlIHJlYWRhYmxlIHdoZW4gdGhlcmUgYXJl
IG5vIHF1ZXVlZCBjaHVua3MsIGV2ZW4gd2l0aCBiYWNrcHJlc3N1cmUgQ2FuJ3QgZmluZCB2YXJp
YWJsZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIGVucXVldWUoKSBzaG91bGQgdGhyb3cgYWZ0ZXIg
Y29udHJvbGxlci50ZXJtaW5hdGUoKSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJl
YW0KK0ZBSUwgZW5xdWV1ZSgpIHNob3VsZCB0aHJvdyBhZnRlciByZWFkYWJsZS5jYW5jZWwoKSBD
YW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgY29udHJvbGxlci50ZXJt
aW5hdGUoKSBzaG91bGQgZG8gbm90aGluZyB0aGUgc2Vjb25kIHRpbWUgaXQgaXMgY2FsbGVkIENh
bid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCB0ZXJtaW5hdGUoKSBzaG91
bGQgZG8gbm90aGluZyBhZnRlciByZWFkYWJsZS5jYW5jZWwoKSBDYW4ndCBmaW5kIHZhcmlhYmxl
OiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgc3RhcnQoKSBzaG91bGQgbm90IGJlIGNhbGxlZCB0d2lj
ZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgc3BlY2lmeWluZyBh
IGRlZmluZWQgcmVhZGFibGVUeXBlIHNob3VsZCB0aHJvdyBhc3NlcnRfdGhyb3dzX2pzOiBjb25z
dHJ1Y3RvciBzaG91bGQgdGhyb3cgZnVuY3Rpb24gIigpID0+IG5ldyBUcmFuc2Zvcm1TdHJlYW0o
eyByZWFkYWJsZVR5cGU6ICdieXRlcycgfSkiIHRocmV3IG9iamVjdCAiUmVmZXJlbmNlRXJyb3I6
IENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbSIgKCJSZWZlcmVuY2VFcnJvciIp
IGV4cGVjdGVkIGluc3RhbmNlIG9mIGZ1bmN0aW9uICJmdW5jdGlvbiBSYW5nZUVycm9yKCkgewor
ICAgIFtuYXRpdmUgY29kZV0KK30iICgiUmFuZ2VFcnJvciIpCitGQUlMIHNwZWNpZnlpbmcgYSBk
ZWZpbmVkIHdyaXRhYmxlVHlwZSBzaG91bGQgdGhyb3cgYXNzZXJ0X3Rocm93c19qczogY29uc3Ry
dWN0b3Igc2hvdWxkIHRocm93IGZ1bmN0aW9uICIoKSA9PiBuZXcgVHJhbnNmb3JtU3RyZWFtKHsg
d3JpdGFibGVUeXBlOiAnYnl0ZXMnIH0pIiB0aHJldyBvYmplY3QgIlJlZmVyZW5jZUVycm9yOiBD
YW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0iICgiUmVmZXJlbmNlRXJyb3IiKSBl
eHBlY3RlZCBpbnN0YW5jZSBvZiBmdW5jdGlvbiAiZnVuY3Rpb24gUmFuZ2VFcnJvcigpIHsKKyAg
ICBbbmF0aXZlIGNvZGVdCit9IiAoIlJhbmdlRXJyb3IiKQorRkFJTCBTdWJjbGFzc2luZyBUcmFu
c2Zvcm1TdHJlYW0gc2hvdWxkIHdvcmsgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3Ry
ZWFtCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy9nZW5lcmFsLmFueS5odG1sIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1z
dHJlYW1zL2dlbmVyYWwuYW55Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjM4MjkxMzUyOGU2OTNiM2E1ZDU2
YzY2MGE0NTA2MDk4MGI1NDhjMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy9nZW5l
cmFsLmFueS5odG1sCkBAIC0wLDAgKzEgQEAKKzwhLS0gVGhpcyBmaWxlIGlzIHJlcXVpcmVkIGZv
ciBXZWJLaXQgdGVzdCBpbmZyYXN0cnVjdHVyZSB0byBydW4gdGhlIHRlbXBsYXRlZCB0ZXN0IC0t
PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy9n
ZW5lcmFsLmFueS5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy9nZW5lcmFsLmFueS5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5k
NGYyYTFkNWEyOWNmNmRhMWEzNjA4YzMyNmY1OGM3OGQwNTgwMDk0Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3Ry
YW5zZm9ybS1zdHJlYW1zL2dlbmVyYWwuYW55LmpzCkBAIC0wLDAgKzEsNDM3IEBACisvLyBNRVRB
OiBnbG9iYWw9d2luZG93LHdvcmtlcixqc3NoZWxsCisvLyBNRVRBOiBzY3JpcHQ9Li4vcmVzb3Vy
Y2VzL3Rlc3QtdXRpbHMuanMKKy8vIE1FVEE6IHNjcmlwdD0uLi9yZXNvdXJjZXMvcnMtdXRpbHMu
anMKKyd1c2Ugc3RyaWN0JzsKKwordGVzdCgoKSA9PiB7CisgIG5ldyBUcmFuc2Zvcm1TdHJlYW0o
eyB0cmFuc2Zvcm0oKSB7IH0gfSk7Cit9LCAnVHJhbnNmb3JtU3RyZWFtIGNhbiBiZSBjb25zdHJ1
Y3RlZCB3aXRoIGEgdHJhbnNmb3JtIGZ1bmN0aW9uJyk7CisKK3Rlc3QoKCkgPT4geworICBuZXcg
VHJhbnNmb3JtU3RyZWFtKCk7CisgIG5ldyBUcmFuc2Zvcm1TdHJlYW0oe30pOworfSwgJ1RyYW5z
Zm9ybVN0cmVhbSBjYW4gYmUgY29uc3RydWN0ZWQgd2l0aCBubyB0cmFuc2Zvcm0gZnVuY3Rpb24n
KTsKKwordGVzdCgoKSA9PiB7CisgIGNvbnN0IHRzID0gbmV3IFRyYW5zZm9ybVN0cmVhbSh7IHRy
YW5zZm9ybSgpIHsgfSB9KTsKKworICBjb25zdCB3cml0ZXIgPSB0cy53cml0YWJsZS5nZXRXcml0
ZXIoKTsKKyAgYXNzZXJ0X2VxdWFscyh3cml0ZXIuZGVzaXJlZFNpemUsIDEsICd3cml0ZXIuZGVz
aXJlZFNpemUgc2hvdWxkIGJlIDEnKTsKK30sICdUcmFuc2Zvcm1TdHJlYW0gd3JpdGFibGUgc3Rh
cnRzIGluIHRoZSB3cml0YWJsZSBzdGF0ZScpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworICBj
b25zdCB0cyA9IG5ldyBUcmFuc2Zvcm1TdHJlYW0oKTsKKworICBjb25zdCB3cml0ZXIgPSB0cy53
cml0YWJsZS5nZXRXcml0ZXIoKTsKKyAgd3JpdGVyLndyaXRlKCdhJyk7CisgIGFzc2VydF9lcXVh
bHMod3JpdGVyLmRlc2lyZWRTaXplLCAwLCAnd3JpdGVyLmRlc2lyZWRTaXplIHNob3VsZCBiZSAw
IGFmdGVyIHdyaXRlKCknKTsKKworICByZXR1cm4gdHMucmVhZGFibGUuZ2V0UmVhZGVyKCkucmVh
ZCgpLnRoZW4ocmVzdWx0ID0+IHsKKyAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdC52YWx1ZSwgJ2En
LAorICAgICAgJ3Jlc3VsdCBmcm9tIHJlYWRpbmcgdGhlIHJlYWRhYmxlIGlzIHRoZSBzYW1lIGFz
IHdhcyB3cml0dGVuIHRvIHdyaXRhYmxlJyk7CisgICAgYXNzZXJ0X2ZhbHNlKHJlc3VsdC5kb25l
LCAnc3RyZWFtIHNob3VsZCBub3QgYmUgZG9uZScpOworCisgICAgcmV0dXJuIGRlbGF5KDApLnRo
ZW4oKCkgPT4gYXNzZXJ0X2VxdWFscyh3cml0ZXIuZGVzaXJlZFNpemUsIDEsICdkZXNpcmVkU2l6
ZSBzaG91bGQgYmUgMSBhZ2FpbicpKTsKKyAgfSk7Cit9LCAnSWRlbnRpdHkgVHJhbnNmb3JtU3Ry
ZWFtOiBjYW4gcmVhZCBmcm9tIHJlYWRhYmxlIHdoYXQgaXMgcHV0IGludG8gd3JpdGFibGUnKTsK
KworcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgbGV0IGM7CisgIGNvbnN0IHRzID0gbmV3IFRyYW5z
Zm9ybVN0cmVhbSh7CisgICAgc3RhcnQoY29udHJvbGxlcikgeworICAgICAgYyA9IGNvbnRyb2xs
ZXI7CisgICAgfSwKKyAgICB0cmFuc2Zvcm0oY2h1bmspIHsKKyAgICAgIGMuZW5xdWV1ZShjaHVu
ay50b1VwcGVyQ2FzZSgpKTsKKyAgICB9CisgIH0pOworCisgIGNvbnN0IHdyaXRlciA9IHRzLndy
aXRhYmxlLmdldFdyaXRlcigpOworICB3cml0ZXIud3JpdGUoJ2EnKTsKKworICByZXR1cm4gdHMu
cmVhZGFibGUuZ2V0UmVhZGVyKCkucmVhZCgpLnRoZW4ocmVzdWx0ID0+IHsKKyAgICBhc3NlcnRf
ZXF1YWxzKHJlc3VsdC52YWx1ZSwgJ0EnLAorICAgICAgJ3Jlc3VsdCBmcm9tIHJlYWRpbmcgdGhl
IHJlYWRhYmxlIGlzIHRoZSB0cmFuc2Zvcm1hdGlvbiBvZiB3aGF0IHdhcyB3cml0dGVuIHRvIHdy
aXRhYmxlJyk7CisgICAgYXNzZXJ0X2ZhbHNlKHJlc3VsdC5kb25lLCAnc3RyZWFtIHNob3VsZCBu
b3QgYmUgZG9uZScpOworICB9KTsKK30sICdVcHBlcmNhc2VyIHN5bmMgVHJhbnNmb3JtU3RyZWFt
OiBjYW4gcmVhZCBmcm9tIHJlYWRhYmxlIHRyYW5zZm9ybWVkIHZlcnNpb24gb2Ygd2hhdCBpcyBw
dXQgaW50byB3cml0YWJsZScpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworICBsZXQgYzsKKyAg
Y29uc3QgdHMgPSBuZXcgVHJhbnNmb3JtU3RyZWFtKHsKKyAgICBzdGFydChjb250cm9sbGVyKSB7
CisgICAgICBjID0gY29udHJvbGxlcjsKKyAgICB9LAorICAgIHRyYW5zZm9ybShjaHVuaykgewor
ICAgICAgYy5lbnF1ZXVlKGNodW5rLnRvVXBwZXJDYXNlKCkpOworICAgICAgYy5lbnF1ZXVlKGNo
dW5rLnRvVXBwZXJDYXNlKCkpOworICAgIH0KKyAgfSk7CisKKyAgY29uc3Qgd3JpdGVyID0gdHMu
d3JpdGFibGUuZ2V0V3JpdGVyKCk7CisgIHdyaXRlci53cml0ZSgnYScpOworCisgIGNvbnN0IHJl
YWRlciA9IHRzLnJlYWRhYmxlLmdldFJlYWRlcigpOworCisgIHJldHVybiByZWFkZXIucmVhZCgp
LnRoZW4ocmVzdWx0MSA9PiB7CisgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQxLnZhbHVlLCAnQScs
CisgICAgICAndGhlIGZpcnN0IGNodW5rIHJlYWQgaXMgdGhlIHRyYW5zZm9ybWF0aW9uIG9mIHRo
ZSBzaW5nbGUgY2h1bmsgd3JpdHRlbicpOworICAgIGFzc2VydF9mYWxzZShyZXN1bHQxLmRvbmUs
ICdzdHJlYW0gc2hvdWxkIG5vdCBiZSBkb25lJyk7CisKKyAgICByZXR1cm4gcmVhZGVyLnJlYWQo
KS50aGVuKHJlc3VsdDIgPT4geworICAgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQyLnZhbHVlLCAn
QScsCisgICAgICAgICd0aGUgc2Vjb25kIGNodW5rIHJlYWQgaXMgYWxzbyB0aGUgdHJhbnNmb3Jt
YXRpb24gb2YgdGhlIHNpbmdsZSBjaHVuayB3cml0dGVuJyk7CisgICAgICBhc3NlcnRfZmFsc2Uo
cmVzdWx0Mi5kb25lLCAnc3RyZWFtIHNob3VsZCBub3QgYmUgZG9uZScpOworICAgIH0pOworICB9
KTsKK30sICdVcHBlcmNhc2VyLWRvdWJsZXIgc3luYyBUcmFuc2Zvcm1TdHJlYW06IGNhbiByZWFk
IGJvdGggY2h1bmtzIHB1dCBpbnRvIHRoZSByZWFkYWJsZScpOworCitwcm9taXNlX3Rlc3QoKCkg
PT4geworICBsZXQgYzsKKyAgY29uc3QgdHMgPSBuZXcgVHJhbnNmb3JtU3RyZWFtKHsKKyAgICBz
dGFydChjb250cm9sbGVyKSB7CisgICAgICBjID0gY29udHJvbGxlcjsKKyAgICB9LAorICAgIHRy
YW5zZm9ybShjaHVuaykgeworICAgICAgcmV0dXJuIGRlbGF5KDApLnRoZW4oKCkgPT4gYy5lbnF1
ZXVlKGNodW5rLnRvVXBwZXJDYXNlKCkpKTsKKyAgICB9CisgIH0pOworCisgIGNvbnN0IHdyaXRl
ciA9IHRzLndyaXRhYmxlLmdldFdyaXRlcigpOworICB3cml0ZXIud3JpdGUoJ2EnKTsKKworICBy
ZXR1cm4gdHMucmVhZGFibGUuZ2V0UmVhZGVyKCkucmVhZCgpLnRoZW4ocmVzdWx0ID0+IHsKKyAg
ICBhc3NlcnRfZXF1YWxzKHJlc3VsdC52YWx1ZSwgJ0EnLAorICAgICAgJ3Jlc3VsdCBmcm9tIHJl
YWRpbmcgdGhlIHJlYWRhYmxlIGlzIHRoZSB0cmFuc2Zvcm1hdGlvbiBvZiB3aGF0IHdhcyB3cml0
dGVuIHRvIHdyaXRhYmxlJyk7CisgICAgYXNzZXJ0X2ZhbHNlKHJlc3VsdC5kb25lLCAnc3RyZWFt
IHNob3VsZCBub3QgYmUgZG9uZScpOworICB9KTsKK30sICdVcHBlcmNhc2VyIGFzeW5jIFRyYW5z
Zm9ybVN0cmVhbTogY2FuIHJlYWQgZnJvbSByZWFkYWJsZSB0cmFuc2Zvcm1lZCB2ZXJzaW9uIG9m
IHdoYXQgaXMgcHV0IGludG8gd3JpdGFibGUnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAg
bGV0IGRvU2Vjb25kRW5xdWV1ZTsKKyAgbGV0IHJldHVybkZyb21UcmFuc2Zvcm07CisgIGNvbnN0
IHRzID0gbmV3IFRyYW5zZm9ybVN0cmVhbSh7CisgICAgdHJhbnNmb3JtKGNodW5rLCBjb250cm9s
bGVyKSB7CisgICAgICBkZWxheSgwKS50aGVuKCgpID0+IGNvbnRyb2xsZXIuZW5xdWV1ZShjaHVu
ay50b1VwcGVyQ2FzZSgpKSk7CisgICAgICBkb1NlY29uZEVucXVldWUgPSAoKSA9PiBjb250cm9s
bGVyLmVucXVldWUoY2h1bmsudG9VcHBlckNhc2UoKSk7CisgICAgICByZXR1cm4gbmV3IFByb21p
c2UocmVzb2x2ZSA9PiB7CisgICAgICAgIHJldHVybkZyb21UcmFuc2Zvcm0gPSByZXNvbHZlOwor
ICAgICAgfSk7CisgICAgfQorICB9KTsKKworICBjb25zdCByZWFkZXIgPSB0cy5yZWFkYWJsZS5n
ZXRSZWFkZXIoKTsKKworICBjb25zdCB3cml0ZXIgPSB0cy53cml0YWJsZS5nZXRXcml0ZXIoKTsK
KyAgd3JpdGVyLndyaXRlKCdhJyk7CisKKyAgcmV0dXJuIHJlYWRlci5yZWFkKCkudGhlbihyZXN1
bHQxID0+IHsKKyAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdDEudmFsdWUsICdBJywKKyAgICAgICd0
aGUgZmlyc3QgY2h1bmsgcmVhZCBpcyB0aGUgdHJhbnNmb3JtYXRpb24gb2YgdGhlIHNpbmdsZSBj
aHVuayB3cml0dGVuJyk7CisgICAgYXNzZXJ0X2ZhbHNlKHJlc3VsdDEuZG9uZSwgJ3N0cmVhbSBz
aG91bGQgbm90IGJlIGRvbmUnKTsKKyAgICBkb1NlY29uZEVucXVldWUoKTsKKworICAgIHJldHVy
biByZWFkZXIucmVhZCgpLnRoZW4ocmVzdWx0MiA9PiB7CisgICAgICBhc3NlcnRfZXF1YWxzKHJl
c3VsdDIudmFsdWUsICdBJywKKyAgICAgICAgJ3RoZSBzZWNvbmQgY2h1bmsgcmVhZCBpcyBhbHNv
IHRoZSB0cmFuc2Zvcm1hdGlvbiBvZiB0aGUgc2luZ2xlIGNodW5rIHdyaXR0ZW4nKTsKKyAgICAg
IGFzc2VydF9mYWxzZShyZXN1bHQyLmRvbmUsICdzdHJlYW0gc2hvdWxkIG5vdCBiZSBkb25lJyk7
CisgICAgICByZXR1cm5Gcm9tVHJhbnNmb3JtKCk7CisgICAgfSk7CisgIH0pOworfSwgJ1VwcGVy
Y2FzZXItZG91YmxlciBhc3luYyBUcmFuc2Zvcm1TdHJlYW06IGNhbiByZWFkIGJvdGggY2h1bmtz
IHB1dCBpbnRvIHRoZSByZWFkYWJsZScpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworICBjb25z
dCB0cyA9IG5ldyBUcmFuc2Zvcm1TdHJlYW0oeyB0cmFuc2Zvcm0oKSB7IH0gfSk7CisKKyAgY29u
c3Qgd3JpdGVyID0gdHMud3JpdGFibGUuZ2V0V3JpdGVyKCk7CisgIHdyaXRlci5jbG9zZSgpOwor
CisgIHJldHVybiBQcm9taXNlLmFsbChbd3JpdGVyLmNsb3NlZCwgdHMucmVhZGFibGUuZ2V0UmVh
ZGVyKCkuY2xvc2VkXSk7Cit9LCAnVHJhbnNmb3JtU3RyZWFtOiBieSBkZWZhdWx0LCBjbG9zaW5n
IHRoZSB3cml0YWJsZSBjbG9zZXMgdGhlIHJlYWRhYmxlICh3aGVuIHRoZXJlIGFyZSBubyBxdWV1
ZWQgd3JpdGVzKScpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworICBsZXQgdHJhbnNmb3JtUmVz
b2x2ZTsKKyAgY29uc3QgdHJhbnNmb3JtUHJvbWlzZSA9IG5ldyBQcm9taXNlKHJlc29sdmUgPT4g
eworICAgIHRyYW5zZm9ybVJlc29sdmUgPSByZXNvbHZlOworICB9KTsKKyAgY29uc3QgdHMgPSBu
ZXcgVHJhbnNmb3JtU3RyZWFtKHsKKyAgICB0cmFuc2Zvcm0oKSB7CisgICAgICByZXR1cm4gdHJh
bnNmb3JtUHJvbWlzZTsKKyAgICB9CisgIH0sIHVuZGVmaW5lZCwgeyBoaWdoV2F0ZXJNYXJrOiAx
IH0pOworCisgIGNvbnN0IHdyaXRlciA9IHRzLndyaXRhYmxlLmdldFdyaXRlcigpOworICB3cml0
ZXIud3JpdGUoJ2EnKTsKKyAgd3JpdGVyLmNsb3NlKCk7CisKKyAgbGV0IHJzQ2xvc2VkID0gZmFs
c2U7CisgIHRzLnJlYWRhYmxlLmdldFJlYWRlcigpLmNsb3NlZC50aGVuKCgpID0+IHsKKyAgICBy
c0Nsb3NlZCA9IHRydWU7CisgIH0pOworCisgIHJldHVybiBkZWxheSgwKS50aGVuKCgpID0+IHsK
KyAgICBhc3NlcnRfZXF1YWxzKHJzQ2xvc2VkLCBmYWxzZSwgJ3JlYWRhYmxlIGlzIG5vdCBjbG9z
ZWQgYWZ0ZXIgYSB0aWNrJyk7CisgICAgdHJhbnNmb3JtUmVzb2x2ZSgpOworCisgICAgcmV0dXJu
IHdyaXRlci5jbG9zZWQudGhlbigoKSA9PiB7CisgICAgICAvLyBUT0RPOiBJcyB0aGlzIGV4cGVj
dGF0aW9uIGNvcnJlY3Q/CisgICAgICBhc3NlcnRfZXF1YWxzKHJzQ2xvc2VkLCB0cnVlLCAncmVh
ZGFibGUgaXMgY2xvc2VkIGF0IHRoYXQgcG9pbnQnKTsKKyAgICB9KTsKKyAgfSk7Cit9LCAnVHJh
bnNmb3JtU3RyZWFtOiBieSBkZWZhdWx0LCBjbG9zaW5nIHRoZSB3cml0YWJsZSB3YWl0cyBmb3Ig
dHJhbnNmb3JtcyB0byBmaW5pc2ggYmVmb3JlIGNsb3NpbmcgYm90aCcpOworCitwcm9taXNlX3Rl
c3QoKCkgPT4geworICBsZXQgYzsKKyAgY29uc3QgdHMgPSBuZXcgVHJhbnNmb3JtU3RyZWFtKHsK
KyAgICBzdGFydChjb250cm9sbGVyKSB7CisgICAgICBjID0gY29udHJvbGxlcjsKKyAgICB9LAor
ICAgIHRyYW5zZm9ybSgpIHsKKyAgICAgIGMuZW5xdWV1ZSgneCcpOworICAgICAgYy5lbnF1ZXVl
KCd5Jyk7CisgICAgICByZXR1cm4gZGVsYXkoMCk7CisgICAgfQorICB9KTsKKworICBjb25zdCB3
cml0ZXIgPSB0cy53cml0YWJsZS5nZXRXcml0ZXIoKTsKKyAgd3JpdGVyLndyaXRlKCdhJyk7Cisg
IHdyaXRlci5jbG9zZSgpOworCisgIGNvbnN0IHJlYWRhYmxlQ2h1bmtzID0gcmVhZGFibGVTdHJl
YW1Ub0FycmF5KHRzLnJlYWRhYmxlKTsKKworICByZXR1cm4gd3JpdGVyLmNsb3NlZC50aGVuKCgp
ID0+IHsKKyAgICByZXR1cm4gcmVhZGFibGVDaHVua3MudGhlbihjaHVua3MgPT4geworICAgICAg
YXNzZXJ0X2FycmF5X2VxdWFscyhjaHVua3MsIFsneCcsICd5J10sICdib3RoIGVucXVldWVkIGNo
dW5rcyBjYW4gYmUgcmVhZCBmcm9tIHRoZSByZWFkYWJsZScpOworICAgIH0pOworICB9KTsKK30s
ICdUcmFuc2Zvcm1TdHJlYW06IGJ5IGRlZmF1bHQsIGNsb3NpbmcgdGhlIHdyaXRhYmxlIGNsb3Nl
cyB0aGUgcmVhZGFibGUgYWZ0ZXIgc3luYyBlbnF1ZXVlcyBhbmQgYXN5bmMgZG9uZScpOworCitw
cm9taXNlX3Rlc3QoKCkgPT4geworICBsZXQgYzsKKyAgY29uc3QgdHMgPSBuZXcgVHJhbnNmb3Jt
U3RyZWFtKHsKKyAgICBzdGFydChjb250cm9sbGVyKSB7CisgICAgICBjID0gY29udHJvbGxlcjsK
KyAgICB9LAorICAgIHRyYW5zZm9ybSgpIHsKKyAgICAgIHJldHVybiBkZWxheSgwKQorICAgICAg
ICAgIC50aGVuKCgpID0+IGMuZW5xdWV1ZSgneCcpKQorICAgICAgICAgIC50aGVuKCgpID0+IGMu
ZW5xdWV1ZSgneScpKQorICAgICAgICAgIC50aGVuKCgpID0+IGRlbGF5KDApKTsKKyAgICB9Cisg
IH0pOworCisgIGNvbnN0IHdyaXRlciA9IHRzLndyaXRhYmxlLmdldFdyaXRlcigpOworICB3cml0
ZXIud3JpdGUoJ2EnKTsKKyAgd3JpdGVyLmNsb3NlKCk7CisKKyAgY29uc3QgcmVhZGFibGVDaHVu
a3MgPSByZWFkYWJsZVN0cmVhbVRvQXJyYXkodHMucmVhZGFibGUpOworCisgIHJldHVybiB3cml0
ZXIuY2xvc2VkLnRoZW4oKCkgPT4geworICAgIHJldHVybiByZWFkYWJsZUNodW5rcy50aGVuKGNo
dW5rcyA9PiB7CisgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGNodW5rcywgWyd4JywgJ3knXSwg
J2JvdGggZW5xdWV1ZWQgY2h1bmtzIGNhbiBiZSByZWFkIGZyb20gdGhlIHJlYWRhYmxlJyk7Cisg
ICAgfSk7CisgIH0pOworfSwgJ1RyYW5zZm9ybVN0cmVhbTogYnkgZGVmYXVsdCwgY2xvc2luZyB0
aGUgd3JpdGFibGUgY2xvc2VzIHRoZSByZWFkYWJsZSBhZnRlciBhc3luYyBlbnF1ZXVlcyBhbmQg
YXN5bmMgZG9uZScpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworICBsZXQgYzsKKyAgY29uc3Qg
dHMgPSBuZXcgVHJhbnNmb3JtU3RyZWFtKHsKKyAgICBzdWZmaXg6ICctc3VmZml4JywKKworICAg
IHN0YXJ0KGNvbnRyb2xsZXIpIHsKKyAgICAgIGMgPSBjb250cm9sbGVyOworICAgICAgYy5lbnF1
ZXVlKCdzdGFydCcgKyB0aGlzLnN1ZmZpeCk7CisgICAgfSwKKworICAgIHRyYW5zZm9ybShjaHVu
aykgeworICAgICAgYy5lbnF1ZXVlKGNodW5rICsgdGhpcy5zdWZmaXgpOworICAgIH0sCisKKyAg
ICBmbHVzaCgpIHsKKyAgICAgIGMuZW5xdWV1ZSgnZmx1c2hlZCcgKyB0aGlzLnN1ZmZpeCk7Cisg
ICAgfQorICB9KTsKKworICBjb25zdCB3cml0ZXIgPSB0cy53cml0YWJsZS5nZXRXcml0ZXIoKTsK
KyAgd3JpdGVyLndyaXRlKCdhJyk7CisgIHdyaXRlci5jbG9zZSgpOworCisgIGNvbnN0IHJlYWRh
YmxlQ2h1bmtzID0gcmVhZGFibGVTdHJlYW1Ub0FycmF5KHRzLnJlYWRhYmxlKTsKKworICByZXR1
cm4gd3JpdGVyLmNsb3NlZC50aGVuKCgpID0+IHsKKyAgICByZXR1cm4gcmVhZGFibGVDaHVua3Mu
dGhlbihjaHVua3MgPT4geworICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhjaHVua3MsIFsnc3Rh
cnQtc3VmZml4JywgJ2Etc3VmZml4JywgJ2ZsdXNoZWQtc3VmZml4J10sICdhbGwgZW5xdWV1ZWQg
Y2h1bmtzIGhhdmUgc3VmZml4ZXMnKTsKKyAgICB9KTsKKyAgfSk7Cit9LCAnVHJhbnNmb3JtIHN0
cmVhbSBzaG91bGQgY2FsbCB0cmFuc2Zvcm1lciBtZXRob2RzIGFzIG1ldGhvZHMnKTsKKworcHJv
bWlzZV90ZXN0KCgpID0+IHsKKyAgZnVuY3Rpb24gZnVuY3Rpb25XaXRoT3ZlcmxvYWRzKCkge30K
KyAgZnVuY3Rpb25XaXRoT3ZlcmxvYWRzLmFwcGx5ID0gKCkgPT4gYXNzZXJ0X3VucmVhY2hlZCgn
YXBwbHkoKSBzaG91bGQgbm90IGJlIGNhbGxlZCcpOworICBmdW5jdGlvbldpdGhPdmVybG9hZHMu
Y2FsbCA9ICgpID0+IGFzc2VydF91bnJlYWNoZWQoJ2NhbGwoKSBzaG91bGQgbm90IGJlIGNhbGxl
ZCcpOworICBjb25zdCB0cyA9IG5ldyBUcmFuc2Zvcm1TdHJlYW0oeworICAgIHN0YXJ0OiBmdW5j
dGlvbldpdGhPdmVybG9hZHMsCisgICAgdHJhbnNmb3JtOiBmdW5jdGlvbldpdGhPdmVybG9hZHMs
CisgICAgZmx1c2g6IGZ1bmN0aW9uV2l0aE92ZXJsb2FkcworICB9KTsKKyAgY29uc3Qgd3JpdGVy
ID0gdHMud3JpdGFibGUuZ2V0V3JpdGVyKCk7CisgIHdyaXRlci53cml0ZSgnYScpOworICB3cml0
ZXIuY2xvc2UoKTsKKworICByZXR1cm4gcmVhZGFibGVTdHJlYW1Ub0FycmF5KHRzLnJlYWRhYmxl
KTsKK30sICdtZXRob2RzIHNob3VsZCBub3Qgbm90IGhhdmUgLmFwcGx5KCkgb3IgLmNhbGwoKSBj
YWxsZWQnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBsZXQgc3RhcnRDYWxsZWQgPSBmYWxz
ZTsKKyAgbGV0IHN0YXJ0RG9uZSA9IGZhbHNlOworICBsZXQgdHJhbnNmb3JtRG9uZSA9IGZhbHNl
OworICBsZXQgZmx1c2hEb25lID0gZmFsc2U7CisgIGNvbnN0IHRzID0gbmV3IFRyYW5zZm9ybVN0
cmVhbSh7CisgICAgc3RhcnQoKSB7CisgICAgICBzdGFydENhbGxlZCA9IHRydWU7CisgICAgICBy
ZXR1cm4gZmx1c2hBc3luY0V2ZW50cygpLnRoZW4oKCkgPT4geworICAgICAgICBzdGFydERvbmUg
PSB0cnVlOworICAgICAgfSk7CisgICAgfSwKKyAgICB0cmFuc2Zvcm0oKSB7CisgICAgICByZXR1
cm4gdC5zdGVwKCgpID0+IHsKKyAgICAgICAgYXNzZXJ0X3RydWUoc3RhcnREb25lLCAndHJhbnNm
b3JtKCkgc2hvdWxkIG5vdCBiZSBjYWxsZWQgdW50aWwgdGhlIHByb21pc2UgcmV0dXJuZWQgZnJv
bSBzdGFydCgpIGhhcyByZXNvbHZlZCcpOworICAgICAgICByZXR1cm4gZmx1c2hBc3luY0V2ZW50
cygpLnRoZW4oKCkgPT4geworICAgICAgICAgIHRyYW5zZm9ybURvbmUgPSB0cnVlOworICAgICAg
ICB9KTsKKyAgICAgIH0pOworICAgIH0sCisgICAgZmx1c2goKSB7CisgICAgICByZXR1cm4gdC5z
dGVwKCgpID0+IHsKKyAgICAgICAgYXNzZXJ0X3RydWUodHJhbnNmb3JtRG9uZSwKKyAgICAgICAg
ICAgICAgICAgICAgJ2ZsdXNoKCkgc2hvdWxkIG5vdCBiZSBjYWxsZWQgdW50aWwgdGhlIHByb21p
c2UgcmV0dXJuZWQgZnJvbSB0cmFuc2Zvcm0oKSBoYXMgcmVzb2x2ZWQnKTsKKyAgICAgICAgcmV0
dXJuIGZsdXNoQXN5bmNFdmVudHMoKS50aGVuKCgpID0+IHsKKyAgICAgICAgICBmbHVzaERvbmUg
PSB0cnVlOworICAgICAgICB9KTsKKyAgICAgIH0pOworICAgIH0KKyAgfSwgdW5kZWZpbmVkLCB7
IGhpZ2hXYXRlck1hcms6IDEgfSk7CisKKyAgYXNzZXJ0X3RydWUoc3RhcnRDYWxsZWQsICdzdGFy
dCgpIHNob3VsZCBiZSBjYWxsZWQgc3luY2hyb25vdXNseScpOworCisgIGNvbnN0IHdyaXRlciA9
IHRzLndyaXRhYmxlLmdldFdyaXRlcigpOworICBjb25zdCB3cml0ZVByb21pc2UgPSB3cml0ZXIu
d3JpdGUoJ2EnKTsKKyAgcmV0dXJuIHdyaXRlci5jbG9zZSgpLnRoZW4oKCkgPT4geworICAgIGFz
c2VydF90cnVlKGZsdXNoRG9uZSwgJ3Byb21pc2UgcmV0dXJuZWQgZnJvbSBmbHVzaCgpIHNob3Vs
ZCBoYXZlIHJlc29sdmVkJyk7CisgICAgcmV0dXJuIHdyaXRlUHJvbWlzZTsKKyAgfSk7Cit9LCAn
VHJhbnNmb3JtU3RyZWFtIHN0YXJ0LCB0cmFuc2Zvcm0sIGFuZCBmbHVzaCBzaG91bGQgYmUgc3Ry
aWN0bHkgb3JkZXJlZCcpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworICBsZXQgdHJhbnNmb3Jt
Q2FsbGVkID0gZmFsc2U7CisgIGNvbnN0IHRzID0gbmV3IFRyYW5zZm9ybVN0cmVhbSh7CisgICAg
dHJhbnNmb3JtKCkgeworICAgICAgdHJhbnNmb3JtQ2FsbGVkID0gdHJ1ZTsKKyAgICB9CisgIH0s
IHVuZGVmaW5lZCwgeyBoaWdoV2F0ZXJNYXJrOiBJbmZpbml0eSB9KTsKKyAgLy8gdHJhbnNmb3Jt
KCkgaXMgb25seSBjYWxsZWQgc3luY2hyb25vdXNseSB3aGVuIHRoZXJlIGlzIG5vIGJhY2twcmVz
c3VyZSBhbmQgYWxsIG1pY3JvdGFza3MgaGF2ZSBydW4uCisgIHJldHVybiBkZWxheSgwKS50aGVu
KCgpID0+IHsKKyAgICBjb25zdCB3cml0ZVByb21pc2UgPSB0cy53cml0YWJsZS5nZXRXcml0ZXIo
KS53cml0ZSgpOworICAgIGFzc2VydF90cnVlKHRyYW5zZm9ybUNhbGxlZCwgJ3RyYW5zZm9ybSgp
IHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkJyk7CisgICAgcmV0dXJuIHdyaXRlUHJvbWlzZTsKKyAg
fSk7Cit9LCAnaXQgc2hvdWxkIGJlIHBvc3NpYmxlIHRvIGNhbGwgdHJhbnNmb3JtKCkgc3luY2hy
b25vdXNseScpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworICBjb25zdCB0cyA9IG5ldyBUcmFu
c2Zvcm1TdHJlYW0oe30sIHVuZGVmaW5lZCwgeyBoaWdoV2F0ZXJNYXJrOiAwIH0pOworCisgIGNv
bnN0IHdyaXRlciA9IHRzLndyaXRhYmxlLmdldFdyaXRlcigpOworICB3cml0ZXIuY2xvc2UoKTsK
KworICByZXR1cm4gUHJvbWlzZS5hbGwoW3dyaXRlci5jbG9zZWQsIHRzLnJlYWRhYmxlLmdldFJl
YWRlcigpLmNsb3NlZF0pOworfSwgJ2Nsb3NpbmcgdGhlIHdyaXRhYmxlIHNob3VsZCBjbG9zZSB0
aGUgcmVhZGFibGUgd2hlbiB0aGVyZSBhcmUgbm8gcXVldWVkIGNodW5rcywgZXZlbiB3aXRoIGJh
Y2twcmVzc3VyZScpOworCit0ZXN0KCgpID0+IHsKKyAgbmV3IFRyYW5zZm9ybVN0cmVhbSh7Cisg
ICAgc3RhcnQoY29udHJvbGxlcikgeworICAgICAgY29udHJvbGxlci50ZXJtaW5hdGUoKTsKKyAg
ICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiBjb250cm9sbGVyLmVucXVldWUo
KSwgJ2VucXVldWUgc2hvdWxkIHRocm93Jyk7CisgICAgfQorICB9KTsKK30sICdlbnF1ZXVlKCkg
c2hvdWxkIHRocm93IGFmdGVyIGNvbnRyb2xsZXIudGVybWluYXRlKCknKTsKKworcHJvbWlzZV90
ZXN0KCgpID0+IHsKKyAgbGV0IGNvbnRyb2xsZXI7CisgIGNvbnN0IHRzID0gbmV3IFRyYW5zZm9y
bVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgY29udHJvbGxlciA9IGM7CisgICAgfQor
ICB9KTsKKyAgY29uc3QgY2FuY2VsUHJvbWlzZSA9IHRzLnJlYWRhYmxlLmNhbmNlbCgpOworICBh
c3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4gY29udHJvbGxlci5lbnF1ZXVlKCksICdl
bnF1ZXVlIHNob3VsZCB0aHJvdycpOworICByZXR1cm4gY2FuY2VsUHJvbWlzZTsKK30sICdlbnF1
ZXVlKCkgc2hvdWxkIHRocm93IGFmdGVyIHJlYWRhYmxlLmNhbmNlbCgpJyk7CisKK3Rlc3QoKCkg
PT4geworICBuZXcgVHJhbnNmb3JtU3RyZWFtKHsKKyAgICBzdGFydChjb250cm9sbGVyKSB7Cisg
ICAgICBjb250cm9sbGVyLnRlcm1pbmF0ZSgpOworICAgICAgY29udHJvbGxlci50ZXJtaW5hdGUo
KTsKKyAgICB9CisgIH0pOworfSwgJ2NvbnRyb2xsZXIudGVybWluYXRlKCkgc2hvdWxkIGRvIG5v
dGhpbmcgdGhlIHNlY29uZCB0aW1lIGl0IGlzIGNhbGxlZCcpOworCitwcm9taXNlX3Rlc3QodCA9
PiB7CisgIGxldCBjb250cm9sbGVyOworICBjb25zdCB0cyA9IG5ldyBUcmFuc2Zvcm1TdHJlYW0o
eworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGNvbnRyb2xsZXIgPSBjOworICAgIH0KKyAgfSk7Cisg
IGNvbnN0IGNhbmNlbFJlYXNvbiA9IHsgbmFtZTogJ2NhbmNlbFJlYXNvbicgfTsKKyAgY29uc3Qg
Y2FuY2VsUHJvbWlzZSA9IHRzLnJlYWRhYmxlLmNhbmNlbChjYW5jZWxSZWFzb24pOworICBjb250
cm9sbGVyLnRlcm1pbmF0ZSgpOworICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAgIGNhbmNlbFBy
b21pc2UsCisgICAgcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgY2FuY2VsUmVhc29uLCB0cy53
cml0YWJsZS5nZXRXcml0ZXIoKS5jbG9zZWQsICdjbG9zZWQgc2hvdWxkIHJlamVjdCB3aXRoIGNh
bmNlbFJlYXNvbicpCisgIF0pOworfSwgJ3Rlcm1pbmF0ZSgpIHNob3VsZCBkbyBub3RoaW5nIGFm
dGVyIHJlYWRhYmxlLmNhbmNlbCgpJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisgIGxldCBj
YWxscyA9IDA7CisgIG5ldyBUcmFuc2Zvcm1TdHJlYW0oeworICAgIHN0YXJ0KCkgeworICAgICAg
KytjYWxsczsKKyAgICB9CisgIH0pOworICByZXR1cm4gZmx1c2hBc3luY0V2ZW50cygpLnRoZW4o
KCkgPT4geworICAgIGFzc2VydF9lcXVhbHMoY2FsbHMsIDEsICdzdGFydCgpIHNob3VsZCBoYXZl
IGJlZW4gY2FsbGVkIGV4YWN0bHkgb25jZScpOworICB9KTsKK30sICdzdGFydCgpIHNob3VsZCBu
b3QgYmUgY2FsbGVkIHR3aWNlJyk7CisKK3Rlc3QoKCkgPT4geworICBhc3NlcnRfdGhyb3dzX2pz
KFJhbmdlRXJyb3IsICgpID0+IG5ldyBUcmFuc2Zvcm1TdHJlYW0oeyByZWFkYWJsZVR5cGU6ICdi
eXRlcycgfSksICdjb25zdHJ1Y3RvciBzaG91bGQgdGhyb3cnKTsKK30sICdzcGVjaWZ5aW5nIGEg
ZGVmaW5lZCByZWFkYWJsZVR5cGUgc2hvdWxkIHRocm93Jyk7CisKK3Rlc3QoKCkgPT4geworICBh
c3NlcnRfdGhyb3dzX2pzKFJhbmdlRXJyb3IsICgpID0+IG5ldyBUcmFuc2Zvcm1TdHJlYW0oeyB3
cml0YWJsZVR5cGU6ICdieXRlcycgfSksICdjb25zdHJ1Y3RvciBzaG91bGQgdGhyb3cnKTsKK30s
ICdzcGVjaWZ5aW5nIGEgZGVmaW5lZCB3cml0YWJsZVR5cGUgc2hvdWxkIHRocm93Jyk7CisKK3Rl
c3QoKCkgPT4geworICBjbGFzcyBTdWJjbGFzcyBleHRlbmRzIFRyYW5zZm9ybVN0cmVhbSB7Cisg
ICAgZXh0cmFGdW5jdGlvbigpIHsKKyAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgfQorICBh
c3NlcnRfZXF1YWxzKAorICAgICAgT2JqZWN0LmdldFByb3RvdHlwZU9mKFN1YmNsYXNzLnByb3Rv
dHlwZSksIFRyYW5zZm9ybVN0cmVhbS5wcm90b3R5cGUsCisgICAgICAnU3ViY2xhc3MucHJvdG90
eXBlXCdzIHByb3RvdHlwZSBzaG91bGQgYmUgVHJhbnNmb3JtU3RyZWFtLnByb3RvdHlwZScpOwor
ICBhc3NlcnRfZXF1YWxzKE9iamVjdC5nZXRQcm90b3R5cGVPZihTdWJjbGFzcyksIFRyYW5zZm9y
bVN0cmVhbSwKKyAgICAgICAgICAgICAgICAnU3ViY2xhc3NcJ3MgcHJvdG90eXBlIHNob3VsZCBi
ZSBUcmFuc2Zvcm1TdHJlYW0nKTsKKyAgY29uc3Qgc3ViID0gbmV3IFN1YmNsYXNzKCk7CisgIGFz
c2VydF90cnVlKHN1YiBpbnN0YW5jZW9mIFRyYW5zZm9ybVN0cmVhbSwKKyAgICAgICAgICAgICAg
J1N1YmNsYXNzIG9iamVjdCBzaG91bGQgYmUgYW4gaW5zdGFuY2Ugb2YgVHJhbnNmb3JtU3RyZWFt
Jyk7CisgIGFzc2VydF90cnVlKHN1YiBpbnN0YW5jZW9mIFN1YmNsYXNzLAorICAgICAgICAgICAg
ICAnU3ViY2xhc3Mgb2JqZWN0IHNob3VsZCBiZSBhbiBpbnN0YW5jZSBvZiBTdWJjbGFzcycpOwor
ICBjb25zdCByZWFkYWJsZUdldHRlciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
CisgICAgICBUcmFuc2Zvcm1TdHJlYW0ucHJvdG90eXBlLCAncmVhZGFibGUnKS5nZXQ7CisgIGFz
c2VydF9lcXVhbHMocmVhZGFibGVHZXR0ZXIuY2FsbChzdWIpLCBzdWIucmVhZGFibGUsCisgICAg
ICAgICAgICAgICAgJ1N1YmNsYXNzIG9iamVjdCBzaG91bGQgcGFzcyBicmFuZCBjaGVjaycpOwor
ICBhc3NlcnRfdHJ1ZShzdWIuZXh0cmFGdW5jdGlvbigpLAorICAgICAgICAgICAgICAnZXh0cmFG
dW5jdGlvbigpIHNob3VsZCBiZSBwcmVzZW50IG9uIFN1YmNsYXNzIG9iamVjdCcpOworfSwgJ1N1
YmNsYXNzaW5nIFRyYW5zZm9ybVN0cmVhbSBzaG91bGQgd29yaycpOwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9y
bS1zdHJlYW1zL2dlbmVyYWwuYW55Lndvcmtlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvdHJhbnNmb3JtLXN0cmVhbXMv
Z2VuZXJhbC5hbnkud29ya2VyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZGEzNDQ5Y2JkZTM3
OWJlNjE2MDU3OTU0OTdjMWIxNThiODFhYTUxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJl
YW1zL2dlbmVyYWwuYW55Lndvcmtlci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzMSBAQAorCitG
QUlMIFRyYW5zZm9ybVN0cmVhbSBjYW4gYmUgY29uc3RydWN0ZWQgd2l0aCBhIHRyYW5zZm9ybSBm
dW5jdGlvbiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgVHJhbnNm
b3JtU3RyZWFtIGNhbiBiZSBjb25zdHJ1Y3RlZCB3aXRoIG5vIHRyYW5zZm9ybSBmdW5jdGlvbiBD
YW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgVHJhbnNmb3JtU3RyZWFt
IHdyaXRhYmxlIHN0YXJ0cyBpbiB0aGUgd3JpdGFibGUgc3RhdGUgQ2FuJ3QgZmluZCB2YXJpYWJs
ZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIElkZW50aXR5IFRyYW5zZm9ybVN0cmVhbTogY2FuIHJl
YWQgZnJvbSByZWFkYWJsZSB3aGF0IGlzIHB1dCBpbnRvIHdyaXRhYmxlIENhbid0IGZpbmQgdmFy
aWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCBVcHBlcmNhc2VyIHN5bmMgVHJhbnNmb3JtU3Ry
ZWFtOiBjYW4gcmVhZCBmcm9tIHJlYWRhYmxlIHRyYW5zZm9ybWVkIHZlcnNpb24gb2Ygd2hhdCBp
cyBwdXQgaW50byB3cml0YWJsZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0K
K0ZBSUwgVXBwZXJjYXNlci1kb3VibGVyIHN5bmMgVHJhbnNmb3JtU3RyZWFtOiBjYW4gcmVhZCBi
b3RoIGNodW5rcyBwdXQgaW50byB0aGUgcmVhZGFibGUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJh
bnNmb3JtU3RyZWFtCitGQUlMIFVwcGVyY2FzZXIgYXN5bmMgVHJhbnNmb3JtU3RyZWFtOiBjYW4g
cmVhZCBmcm9tIHJlYWRhYmxlIHRyYW5zZm9ybWVkIHZlcnNpb24gb2Ygd2hhdCBpcyBwdXQgaW50
byB3cml0YWJsZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgVXBw
ZXJjYXNlci1kb3VibGVyIGFzeW5jIFRyYW5zZm9ybVN0cmVhbTogY2FuIHJlYWQgYm90aCBjaHVu
a3MgcHV0IGludG8gdGhlIHJlYWRhYmxlIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0
cmVhbQorRkFJTCBUcmFuc2Zvcm1TdHJlYW06IGJ5IGRlZmF1bHQsIGNsb3NpbmcgdGhlIHdyaXRh
YmxlIGNsb3NlcyB0aGUgcmVhZGFibGUgKHdoZW4gdGhlcmUgYXJlIG5vIHF1ZXVlZCB3cml0ZXMp
IENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCBUcmFuc2Zvcm1TdHJl
YW06IGJ5IGRlZmF1bHQsIGNsb3NpbmcgdGhlIHdyaXRhYmxlIHdhaXRzIGZvciB0cmFuc2Zvcm1z
IHRvIGZpbmlzaCBiZWZvcmUgY2xvc2luZyBib3RoIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5z
Zm9ybVN0cmVhbQorRkFJTCBUcmFuc2Zvcm1TdHJlYW06IGJ5IGRlZmF1bHQsIGNsb3NpbmcgdGhl
IHdyaXRhYmxlIGNsb3NlcyB0aGUgcmVhZGFibGUgYWZ0ZXIgc3luYyBlbnF1ZXVlcyBhbmQgYXN5
bmMgZG9uZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgVHJhbnNm
b3JtU3RyZWFtOiBieSBkZWZhdWx0LCBjbG9zaW5nIHRoZSB3cml0YWJsZSBjbG9zZXMgdGhlIHJl
YWRhYmxlIGFmdGVyIGFzeW5jIGVucXVldWVzIGFuZCBhc3luYyBkb25lIENhbid0IGZpbmQgdmFy
aWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCBUcmFuc2Zvcm0gc3RyZWFtIHNob3VsZCBjYWxs
IHRyYW5zZm9ybWVyIG1ldGhvZHMgYXMgbWV0aG9kcyBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFu
c2Zvcm1TdHJlYW0KK0ZBSUwgbWV0aG9kcyBzaG91bGQgbm90IG5vdCBoYXZlIC5hcHBseSgpIG9y
IC5jYWxsKCkgY2FsbGVkIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJ
TCBUcmFuc2Zvcm1TdHJlYW0gc3RhcnQsIHRyYW5zZm9ybSwgYW5kIGZsdXNoIHNob3VsZCBiZSBz
dHJpY3RseSBvcmRlcmVkIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJ
TCBpdCBzaG91bGQgYmUgcG9zc2libGUgdG8gY2FsbCB0cmFuc2Zvcm0oKSBzeW5jaHJvbm91c2x5
IENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCBjbG9zaW5nIHRoZSB3
cml0YWJsZSBzaG91bGQgY2xvc2UgdGhlIHJlYWRhYmxlIHdoZW4gdGhlcmUgYXJlIG5vIHF1ZXVl
ZCBjaHVua3MsIGV2ZW4gd2l0aCBiYWNrcHJlc3N1cmUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJh
bnNmb3JtU3RyZWFtCitGQUlMIGVucXVldWUoKSBzaG91bGQgdGhyb3cgYWZ0ZXIgY29udHJvbGxl
ci50ZXJtaW5hdGUoKSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwg
ZW5xdWV1ZSgpIHNob3VsZCB0aHJvdyBhZnRlciByZWFkYWJsZS5jYW5jZWwoKSBDYW4ndCBmaW5k
IHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgY29udHJvbGxlci50ZXJtaW5hdGUoKSBz
aG91bGQgZG8gbm90aGluZyB0aGUgc2Vjb25kIHRpbWUgaXQgaXMgY2FsbGVkIENhbid0IGZpbmQg
dmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCB0ZXJtaW5hdGUoKSBzaG91bGQgZG8gbm90
aGluZyBhZnRlciByZWFkYWJsZS5jYW5jZWwoKSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zv
cm1TdHJlYW0KK0ZBSUwgc3RhcnQoKSBzaG91bGQgbm90IGJlIGNhbGxlZCB0d2ljZSBDYW4ndCBm
aW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgc3BlY2lmeWluZyBhIGRlZmluZWQg
cmVhZGFibGVUeXBlIHNob3VsZCB0aHJvdyBhc3NlcnRfdGhyb3dzX2pzOiBjb25zdHJ1Y3RvciBz
aG91bGQgdGhyb3cgZnVuY3Rpb24gIigpID0+IG5ldyBUcmFuc2Zvcm1TdHJlYW0oeyByZWFkYWJs
ZVR5cGU6ICdieXRlcycgfSkiIHRocmV3IG9iamVjdCAiUmVmZXJlbmNlRXJyb3I6IENhbid0IGZp
bmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbSIgKCJSZWZlcmVuY2VFcnJvciIpIGV4cGVjdGVk
IGluc3RhbmNlIG9mIGZ1bmN0aW9uICJmdW5jdGlvbiBSYW5nZUVycm9yKCkgeworICAgIFtuYXRp
dmUgY29kZV0KK30iICgiUmFuZ2VFcnJvciIpCitGQUlMIHNwZWNpZnlpbmcgYSBkZWZpbmVkIHdy
aXRhYmxlVHlwZSBzaG91bGQgdGhyb3cgYXNzZXJ0X3Rocm93c19qczogY29uc3RydWN0b3Igc2hv
dWxkIHRocm93IGZ1bmN0aW9uICIoKSA9PiBuZXcgVHJhbnNmb3JtU3RyZWFtKHsgd3JpdGFibGVU
eXBlOiAnYnl0ZXMnIH0pIiB0aHJldyBvYmplY3QgIlJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5k
IHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0iICgiUmVmZXJlbmNlRXJyb3IiKSBleHBlY3RlZCBp
bnN0YW5jZSBvZiBmdW5jdGlvbiAiZnVuY3Rpb24gUmFuZ2VFcnJvcigpIHsKKyAgICBbbmF0aXZl
IGNvZGVdCit9IiAoIlJhbmdlRXJyb3IiKQorRkFJTCBTdWJjbGFzc2luZyBUcmFuc2Zvcm1TdHJl
YW0gc2hvdWxkIHdvcmsgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy9nZW5lcmFsLmFueS53b3JrZXIuaHRtbCBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy90cmFuc2Zvcm0tc3Ry
ZWFtcy9nZW5lcmFsLmFueS53b3JrZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMzgyOTEzNTI4ZTY5M2Iz
YTVkNTZjNjYwYTQ1MDYwOTgwYjU0OGMzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1z
L2dlbmVyYWwuYW55Lndvcmtlci5odG1sCkBAIC0wLDAgKzEgQEAKKzwhLS0gVGhpcyBmaWxlIGlz
IHJlcXVpcmVkIGZvciBXZWJLaXQgdGVzdCBpbmZyYXN0cnVjdHVyZSB0byBydW4gdGhlIHRlbXBs
YXRlZCB0ZXN0IC0tPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy90cmFuc2Zv
cm0tc3RyZWFtcy9saXBmdXp6LmFueS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvdHJhbnNmb3JtLXN0cmVhbXMvbGlwZnV6
ei5hbnktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQwNjBhNzExYWI1NDdkYmQzMzBhN2ZiNWQz
YTc4ODU3NDc5ODMwM2IKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvdHJhbnNmb3JtLXN0cmVhbXMvbGlwZnV6ei5h
bnktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjIgQEAKKworRkFJTCB0ZXN0aW5nICIiIChsZW5n
dGggMSkgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIHRlc3Rpbmcg
IiIgKGxlbmd0aCAwKSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwg
dGVzdGluZyAie3tpbjF9fSIgKGxlbmd0aCAxKSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zv
cm1TdHJlYW0KK0ZBSUwgdGVzdGluZyAient7aW4xfX0iIChsZW5ndGggMSkgQ2FuJ3QgZmluZCB2
YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIHRlc3RpbmcgInt7aW4xfX1xIiAobGVuZ3Ro
IDEpIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCB0ZXN0aW5nICJ7
e2luMX19e3tpbjF9IiAobGVuZ3RoIDEpIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0
cmVhbQorRkFJTCB0ZXN0aW5nICJ7e2luMX19e3tpbjF9LH0iIChsZW5ndGggMikgQ2FuJ3QgZmlu
ZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIHRlc3RpbmcgInt7aW4xLH19IiAobGVu
Z3RoIDIpIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCB0ZXN0aW5n
ICJ7eyxpbjF9fSIgKGxlbmd0aCAyKSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJl
YW0KK0ZBSUwgdGVzdGluZyAieyx7aW4xfX0iIChsZW5ndGggMikgQ2FuJ3QgZmluZCB2YXJpYWJs
ZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIHRlc3RpbmcgInt7LGluMX0iIChsZW5ndGggMikgQ2Fu
J3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIHRlc3RpbmcgInsiIChsZW5n
dGggMSkgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIHRlc3Rpbmcg
InssIiAobGVuZ3RoIDIpIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJ
TCB0ZXN0aW5nICJ7LHssaSxuLDEsfSx9IiAobGVuZ3RoIDcpIENhbid0IGZpbmQgdmFyaWFibGU6
IFRyYW5zZm9ybVN0cmVhbQorRkFJTCB0ZXN0aW5nICJ7e2luMX19e3tpbjJ9fXt7aW4xfX0iIChs
ZW5ndGggMSkgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIHRlc3Rp
bmcgInt7d3Jvbmd9fSIgKGxlbmd0aCAxKSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1T
dHJlYW0KK0ZBSUwgdGVzdGluZyAie3t3cm9uLGd9fSIgKGxlbmd0aCAyKSBDYW4ndCBmaW5kIHZh
cmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgdGVzdGluZyAie3txdWluZX19IiAobGVuZ3Ro
IDEpIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCB0ZXN0aW5nICJ7
e2JvZ3VzUGFydGlhbH19IiAobGVuZ3RoIDEpIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9y
bVN0cmVhbQorRkFJTCB0ZXN0aW5nICJ7e2JvZ3VzUGFydGlhbH19fSIgKGxlbmd0aCAxKSBDYW4n
dCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJl
YW1zL2xpcGZ1enouYW55Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMvdHJhbnNmb3JtLXN0cmVhbXMvbGlwZnV6ei5hbnkuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4yMzgyOTEzNTI4ZTY5M2IzYTVkNTZjNjYwYTQ1MDYwOTgwYjU0OGMzCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
dHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1zL2xpcGZ1enouYW55Lmh0bWwKQEAgLTAsMCArMSBAQAor
PCEtLSBUaGlzIGZpbGUgaXMgcmVxdWlyZWQgZm9yIFdlYktpdCB0ZXN0IGluZnJhc3RydWN0dXJl
IHRvIHJ1biB0aGUgdGVtcGxhdGVkIHRlc3QgLS0+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1zL2xpcGZ1enouYW55LmpzIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1z
L2xpcGZ1enouYW55LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM4YzM4MDNjNmRmYjRiMWQyNTljZWQwNjI3NTJl
YTcwNDg4NzJlYzkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvdHJhbnNmb3JtLXN0cmVhbXMvbGlwZnV6ei5hbnku
anMKQEAgLTAsMCArMSwxNjMgQEAKKy8vIE1FVEE6IGdsb2JhbD13aW5kb3csd29ya2VyLGpzc2hl
bGwKKyd1c2Ugc3RyaWN0JzsKKworY2xhc3MgTGlwRnV6elRyYW5zZm9ybWVyIHsKKyAgY29uc3Ry
dWN0b3Ioc3Vic3RpdHV0aW9ucykgeworICAgIHRoaXMuc3Vic3RpdHV0aW9ucyA9IHN1YnN0aXR1
dGlvbnM7CisgICAgdGhpcy5wYXJ0aWFsQ2h1bmsgPSAnJzsKKyAgICB0aGlzLmxhc3RJbmRleCA9
IHVuZGVmaW5lZDsKKyAgfQorCisgIHRyYW5zZm9ybShjaHVuaywgY29udHJvbGxlcikgeworICAg
IGNodW5rID0gdGhpcy5wYXJ0aWFsQ2h1bmsgKyBjaHVuazsKKyAgICB0aGlzLnBhcnRpYWxDaHVu
ayA9ICcnOworICAgIC8vIGxhc3RJbmRleCBpcyB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IGNoYXJh
Y3RlciBhZnRlciB0aGUgbGFzdCBzdWJzdGl0dXRpb24uCisgICAgdGhpcy5sYXN0SW5kZXggPSAw
OworICAgIGNodW5rID0gY2h1bmsucmVwbGFjZSgvXHtceyhbYS16QS1aMC05Xy1dKylcfVx9L2cs
IHRoaXMucmVwbGFjZVRhZy5iaW5kKHRoaXMpKTsKKyAgICAvLyBSZWd1bGFyIGV4cHJlc3Npb24g
Zm9yIGFuIGluY29tcGxldGUgdGVtcGxhdGUgYXQgdGhlIGVuZCBvZiBhIHN0cmluZy4KKyAgICBj
b25zdCBwYXJ0aWFsQXRFbmRSZWdleHAgPSAvXHsoXHsoW2EtekEtWjAtOV8tXSsoXH0pPyk/KT8k
L2c7CisgICAgLy8gQXZvaWQgbG9va2luZyBhdCBhbnkgY2hhcmFjdGVycyB0aGF0IGhhdmUgYWxy
ZWFkeSBiZWVuIHN1YnN0aXR1dGVkLgorICAgIHBhcnRpYWxBdEVuZFJlZ2V4cC5sYXN0SW5kZXgg
PSB0aGlzLmxhc3RJbmRleDsKKyAgICB0aGlzLmxhc3RJbmRleCA9IHVuZGVmaW5lZDsKKyAgICBj
b25zdCBtYXRjaCA9IHBhcnRpYWxBdEVuZFJlZ2V4cC5leGVjKGNodW5rKTsKKyAgICBpZiAobWF0
Y2gpIHsKKyAgICAgIHRoaXMucGFydGlhbENodW5rID0gY2h1bmsuc3Vic3RyaW5nKG1hdGNoLmlu
ZGV4KTsKKyAgICAgIGNodW5rID0gY2h1bmsuc3Vic3RyaW5nKDAsIG1hdGNoLmluZGV4KTsKKyAg
ICB9CisgICAgY29udHJvbGxlci5lbnF1ZXVlKGNodW5rKTsKKyAgfQorCisgIGZsdXNoKGNvbnRy
b2xsZXIpIHsKKyAgICBpZiAodGhpcy5wYXJ0aWFsQ2h1bmsubGVuZ3RoID4gMCkgeworICAgICAg
Y29udHJvbGxlci5lbnF1ZXVlKHRoaXMucGFydGlhbENodW5rKTsKKyAgICB9CisgIH0KKworICBy
ZXBsYWNlVGFnKG1hdGNoLCBwMSwgb2Zmc2V0KSB7CisgICAgbGV0IHJlcGxhY2VtZW50ID0gdGhp
cy5zdWJzdGl0dXRpb25zW3AxXTsKKyAgICBpZiAocmVwbGFjZW1lbnQgPT09IHVuZGVmaW5lZCkg
eworICAgICAgcmVwbGFjZW1lbnQgPSAnJzsKKyAgICB9CisgICAgdGhpcy5sYXN0SW5kZXggPSBv
ZmZzZXQgKyByZXBsYWNlbWVudC5sZW5ndGg7CisgICAgcmV0dXJuIHJlcGxhY2VtZW50OworICB9
Cit9CisKK2NvbnN0IHN1YnN0aXR1dGlvbnMgPSB7CisgIGluMTogJ291dDEnLAorICBpbjI6ICdv
dXQyJywKKyAgcXVpbmU6ICd7e3F1aW5lfX0nLAorICBib2d1c1BhcnRpYWw6ICd7e2luY29tcGxl
dGVSZXN1bHR9JworfTsKKworY29uc3QgY2FzZXMgPSBbCisgIHsKKyAgICBpbnB1dDogWycnXSwK
KyAgICBvdXRwdXQ6IFsnJ10KKyAgfSwKKyAgeworICAgIGlucHV0OiBbXSwKKyAgICBvdXRwdXQ6
IFtdCisgIH0sCisgIHsKKyAgICBpbnB1dDogWyd7e2luMX19J10sCisgICAgb3V0cHV0OiBbJ291
dDEnXQorICB9LAorICB7CisgICAgaW5wdXQ6IFsnent7aW4xfX0nXSwKKyAgICBvdXRwdXQ6IFsn
em91dDEnXQorICB9LAorICB7CisgICAgaW5wdXQ6IFsne3tpbjF9fXEnXSwKKyAgICBvdXRwdXQ6
IFsnb3V0MXEnXQorICB9LAorICB7CisgICAgaW5wdXQ6IFsne3tpbjF9fXt7aW4xfSddLAorICAg
IG91dHB1dDogWydvdXQxJywgJ3t7aW4xfSddCisgIH0sCisgIHsKKyAgICBpbnB1dDogWyd7e2lu
MX19e3tpbjF9JywgJ30nXSwKKyAgICBvdXRwdXQ6IFsnb3V0MScsICdvdXQxJ10KKyAgfSwKKyAg
eworICAgIGlucHV0OiBbJ3t7aW4xJywgJ319J10sCisgICAgb3V0cHV0OiBbJycsICdvdXQxJ10K
KyAgfSwKKyAgeworICAgIGlucHV0OiBbJ3t7JywgJ2luMX19J10sCisgICAgb3V0cHV0OiBbJycs
ICdvdXQxJ10KKyAgfSwKKyAgeworICAgIGlucHV0OiBbJ3snLCAne2luMX19J10sCisgICAgb3V0
cHV0OiBbJycsICdvdXQxJ10KKyAgfSwKKyAgeworICAgIGlucHV0OiBbJ3t7JywgJ2luMX0nXSwK
KyAgICBvdXRwdXQ6IFsnJywgJycsICd7e2luMX0nXQorICB9LAorICB7CisgICAgaW5wdXQ6IFsn
eyddLAorICAgIG91dHB1dDogWycnLCAneyddCisgIH0sCisgIHsKKyAgICBpbnB1dDogWyd7Jywg
JyddLAorICAgIG91dHB1dDogWycnLCAnJywgJ3snXQorICB9LAorICB7CisgICAgaW5wdXQ6IFsn
eycsICd7JywgJ2knLCAnbicsICcxJywgJ30nLCAnfSddLAorICAgIG91dHB1dDogWycnLCAnJywg
JycsICcnLCAnJywgJycsICdvdXQxJ10KKyAgfSwKKyAgeworICAgIGlucHV0OiBbJ3t7aW4xfX17
e2luMn19e3tpbjF9fSddLAorICAgIG91dHB1dDogWydvdXQxb3V0Mm91dDEnXQorICB9LAorICB7
CisgICAgaW5wdXQ6IFsne3t3cm9uZ319J10sCisgICAgb3V0cHV0OiBbJyddCisgIH0sCisgIHsK
KyAgICBpbnB1dDogWyd7e3dyb24nLCAnZ319J10sCisgICAgb3V0cHV0OiBbJycsICcnXQorICB9
LAorICB7CisgICAgaW5wdXQ6IFsne3txdWluZX19J10sCisgICAgb3V0cHV0OiBbJ3t7cXVpbmV9
fSddCisgIH0sCisgIHsKKyAgICBpbnB1dDogWyd7e2JvZ3VzUGFydGlhbH19J10sCisgICAgb3V0
cHV0OiBbJ3t7aW5jb21wbGV0ZVJlc3VsdH0nXQorICB9LAorICB7CisgICAgaW5wdXQ6IFsne3ti
b2d1c1BhcnRpYWx9fX0nXSwKKyAgICBvdXRwdXQ6IFsne3tpbmNvbXBsZXRlUmVzdWx0fX0nXQor
ICB9CitdOworCitmb3IgKGNvbnN0IHRlc3RDYXNlIG9mIGNhc2VzKSB7CisgIGNvbnN0IGlucHV0
Q2h1bmtzID0gdGVzdENhc2UuaW5wdXQ7CisgIGNvbnN0IG91dHB1dENodW5rcyA9IHRlc3RDYXNl
Lm91dHB1dDsKKyAgcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgICBjb25zdCBsZnQgPSBuZXcgVHJh
bnNmb3JtU3RyZWFtKG5ldyBMaXBGdXp6VHJhbnNmb3JtZXIoc3Vic3RpdHV0aW9ucykpOworICAg
IGNvbnN0IHdyaXRlciA9IGxmdC53cml0YWJsZS5nZXRXcml0ZXIoKTsKKyAgICBjb25zdCBwcm9t
aXNlcyA9IFtdOworICAgIGZvciAoY29uc3QgaW5wdXRDaHVuayBvZiBpbnB1dENodW5rcykgewor
ICAgICAgcHJvbWlzZXMucHVzaCh3cml0ZXIud3JpdGUoaW5wdXRDaHVuaykpOworICAgIH0KKyAg
ICBwcm9taXNlcy5wdXNoKHdyaXRlci5jbG9zZSgpKTsKKyAgICBjb25zdCByZWFkZXIgPSBsZnQu
cmVhZGFibGUuZ2V0UmVhZGVyKCk7CisgICAgbGV0IHJlYWRlckNoYWluID0gUHJvbWlzZS5yZXNv
bHZlKCk7CisgICAgZm9yIChjb25zdCBvdXRwdXRDaHVuayBvZiBvdXRwdXRDaHVua3MpIHsKKyAg
ICAgIHJlYWRlckNoYWluID0gcmVhZGVyQ2hhaW4udGhlbigoKSA9PiB7CisgICAgICAgIHJldHVy
biByZWFkZXIucmVhZCgpLnRoZW4oKHsgdmFsdWUsIGRvbmUgfSkgPT4geworICAgICAgICAgIGFz
c2VydF9mYWxzZShkb25lLCBgZG9uZSBzaG91bGQgYmUgZmFsc2Ugd2hlbiByZWFkaW5nICR7b3V0
cHV0Q2h1bmt9YCk7CisgICAgICAgICAgYXNzZXJ0X2VxdWFscyh2YWx1ZSwgb3V0cHV0Q2h1bmss
IGB2YWx1ZSBzaG91bGQgbWF0Y2ggb3V0cHV0Q2h1bmtgKTsKKyAgICAgICAgfSk7CisgICAgICB9
KTsKKyAgICB9CisgICAgcmVhZGVyQ2hhaW4gPSByZWFkZXJDaGFpbi50aGVuKCgpID0+IHsKKyAg
ICAgIHJldHVybiByZWFkZXIucmVhZCgpLnRoZW4oKHsgZG9uZSB9KSA9PiBhc3NlcnRfdHJ1ZShk
b25lLCBgZG9uZSBzaG91bGQgYmUgdHJ1ZWApKTsKKyAgICB9KTsKKyAgICBwcm9taXNlcy5wdXNo
KHJlYWRlckNoYWluKTsKKyAgICByZXR1cm4gUHJvbWlzZS5hbGwocHJvbWlzZXMpOworICB9LCBg
dGVzdGluZyAiJHtpbnB1dENodW5rc30iIChsZW5ndGggJHtpbnB1dENodW5rcy5sZW5ndGh9KWAp
OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1zL2xpcGZ1enouYW55Lndvcmtlci1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvdHJhbnNmb3JtLXN0cmVhbXMvbGlwZnV6ei5hbnkud29ya2VyLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5kMDYwYTcxMWFiNTQ3ZGJkMzMwYTdmYjVkM2E3ODg1NzQ3OTgzMDNiCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
dHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1zL2xpcGZ1enouYW55Lndvcmtlci1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwyMiBAQAorCitGQUlMIHRlc3RpbmcgIiIgKGxlbmd0aCAxKSBDYW4ndCBmaW5k
IHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgdGVzdGluZyAiIiAobGVuZ3RoIDApIENh
bid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCB0ZXN0aW5nICJ7e2luMX19
IiAobGVuZ3RoIDEpIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCB0
ZXN0aW5nICJ6e3tpbjF9fSIgKGxlbmd0aCAxKSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zv
cm1TdHJlYW0KK0ZBSUwgdGVzdGluZyAie3tpbjF9fXEiIChsZW5ndGggMSkgQ2FuJ3QgZmluZCB2
YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIHRlc3RpbmcgInt7aW4xfX17e2luMX0iIChs
ZW5ndGggMSkgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIHRlc3Rp
bmcgInt7aW4xfX17e2luMX0sfSIgKGxlbmd0aCAyKSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFu
c2Zvcm1TdHJlYW0KK0ZBSUwgdGVzdGluZyAie3tpbjEsfX0iIChsZW5ndGggMikgQ2FuJ3QgZmlu
ZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIHRlc3RpbmcgInt7LGluMX19IiAobGVu
Z3RoIDIpIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCB0ZXN0aW5n
ICJ7LHtpbjF9fSIgKGxlbmd0aCAyKSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJl
YW0KK0ZBSUwgdGVzdGluZyAie3ssaW4xfSIgKGxlbmd0aCAyKSBDYW4ndCBmaW5kIHZhcmlhYmxl
OiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgdGVzdGluZyAieyIgKGxlbmd0aCAxKSBDYW4ndCBmaW5k
IHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgdGVzdGluZyAieywiIChsZW5ndGggMikg
Q2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIHRlc3RpbmcgInsseyxp
LG4sMSx9LH0iIChsZW5ndGggNykgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFt
CitGQUlMIHRlc3RpbmcgInt7aW4xfX17e2luMn19e3tpbjF9fSIgKGxlbmd0aCAxKSBDYW4ndCBm
aW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgdGVzdGluZyAie3t3cm9uZ319IiAo
bGVuZ3RoIDEpIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCB0ZXN0
aW5nICJ7e3dyb24sZ319IiAobGVuZ3RoIDIpIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9y
bVN0cmVhbQorRkFJTCB0ZXN0aW5nICJ7e3F1aW5lfX0iIChsZW5ndGggMSkgQ2FuJ3QgZmluZCB2
YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIHRlc3RpbmcgInt7Ym9ndXNQYXJ0aWFsfX0i
IChsZW5ndGggMSkgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIHRl
c3RpbmcgInt7Ym9ndXNQYXJ0aWFsfX19IiAobGVuZ3RoIDEpIENhbid0IGZpbmQgdmFyaWFibGU6
IFRyYW5zZm9ybVN0cmVhbQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvdHJhbnNmb3JtLXN0cmVhbXMvbGlwZnV6ei5hbnku
d29ya2VyLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMvdHJhbnNmb3JtLXN0cmVhbXMvbGlwZnV6ei5hbnkud29ya2VyLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMjM4MjkxMzUyOGU2OTNiM2E1ZDU2YzY2MGE0NTA2MDk4MGI1NDhjMwotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy9saXBmdXp6LmFueS53b3JrZXIuaHRtbApAQCAtMCwwICsx
IEBACis8IS0tIFRoaXMgZmlsZSBpcyByZXF1aXJlZCBmb3IgV2ViS2l0IHRlc3QgaW5mcmFzdHJ1
Y3R1cmUgdG8gcnVuIHRoZSB0ZW1wbGF0ZWQgdGVzdCAtLT4KXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMvdHJhbnNmb3JtLXN0cmVhbXMvcGF0Y2hlZC1nbG9iYWwuYW55LWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy9wYXRjaGVkLWdsb2JhbC5hbnktZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjhlNmRkNzVlNGJkNmJhODhhNjMyYjdiMzU0YmM3NDdkMjY5NGM0MzEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMvdHJhbnNmb3JtLXN0cmVhbXMvcGF0Y2hlZC1nbG9iYWwuYW55LWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDQgQEAKKworRkFJTCBUcmFuc2Zvcm1TdHJlYW0gY29uc3RydWN0b3Igc2hv
dWxkIG5vdCBjYWxsIHNldHRlcnMgZm9yIGhpZ2hXYXRlck1hcmsgb3Igc2l6ZSBDYW4ndCBmaW5k
IHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgVHJhbnNmb3JtU3RyZWFtIHNob3VsZCB1
c2UgdGhlIG9yaWdpbmFsIHZhbHVlIG9mIFJlYWRhYmxlU3RyZWFtIGFuZCBXcml0YWJsZVN0cmVh
bSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9y
bS1zdHJlYW1zL3BhdGNoZWQtZ2xvYmFsLmFueS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1zL3BhdGNoZWQt
Z2xvYmFsLmFueS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzODI5MTM1MjhlNjkzYjNhNWQ1NmM2NjBhNDUw
NjA5ODBiNTQ4YzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvdHJhbnNmb3JtLXN0cmVhbXMvcGF0Y2hlZC1nbG9i
YWwuYW55Lmh0bWwKQEAgLTAsMCArMSBAQAorPCEtLSBUaGlzIGZpbGUgaXMgcmVxdWlyZWQgZm9y
IFdlYktpdCB0ZXN0IGluZnJhc3RydWN0dXJlIHRvIHJ1biB0aGUgdGVtcGxhdGVkIHRlc3QgLS0+
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1zL3Bh
dGNoZWQtZ2xvYmFsLmFueS5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy9wYXRjaGVkLWdsb2JhbC5hbnkuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYmYzNTNiYzI0MWZmYWIxMmM1NTg5MTI4NTE5NDA3ODViY2RmNjJmMgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy9wYXRjaGVkLWdsb2JhbC5hbnkuanMKQEAgLTAs
MCArMSw0NSBAQAorLy8gTUVUQTogZ2xvYmFsPXdpbmRvdyx3b3JrZXIsanNzaGVsbAorJ3VzZSBz
dHJpY3QnOworCisvLyBUZXN0cyB3aGljaCBwYXRjaCB0aGUgZ2xvYmFsIGVudmlyb25tZW50IGFy
ZSBrZXB0IHNlcGFyYXRlIHRvIGF2b2lkIGludGVyZmVyaW5nIHdpdGggb3RoZXIgdGVzdHMuCisK
Ky8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1leHRlbmQtbmF0aXZlLCBhY2Nlc3Nvci1w
YWlycworT2JqZWN0LmRlZmluZVByb3BlcnR5KE9iamVjdC5wcm90b3R5cGUsICdoaWdoV2F0ZXJN
YXJrJywgeworICBzZXQoKSB7IHRocm93IG5ldyBFcnJvcignaGlnaFdhdGVyTWFyayBzZXR0ZXIg
Y2FsbGVkJyk7IH0KK30pOworCisvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tZXh0ZW5k
LW5hdGl2ZSwgYWNjZXNzb3ItcGFpcnMKK09iamVjdC5kZWZpbmVQcm9wZXJ0eShPYmplY3QucHJv
dG90eXBlLCAnc2l6ZScsIHsKKyAgc2V0KCkgeyB0aHJvdyBuZXcgRXJyb3IoJ3NpemUgc2V0dGVy
IGNhbGxlZCcpOyB9Cit9KTsKKwordGVzdCgoKSA9PiB7CisgIGFzc2VydF9ub3RfZXF1YWxzKG5l
dyBUcmFuc2Zvcm1TdHJlYW0oKSwgbnVsbCwgJ2NvbnN0cnVjdG9yIHNob3VsZCB3b3JrJyk7Cit9
LCAnVHJhbnNmb3JtU3RyZWFtIGNvbnN0cnVjdG9yIHNob3VsZCBub3QgY2FsbCBzZXR0ZXJzIGZv
ciBoaWdoV2F0ZXJNYXJrIG9yIHNpemUnKTsKKwordGVzdCh0ID0+IHsKKyAgY29uc3Qgb2xkUmVh
ZGFibGVTdHJlYW0gPSBSZWFkYWJsZVN0cmVhbTsKKyAgY29uc3Qgb2xkV3JpdGFibGVTdHJlYW0g
PSBXcml0YWJsZVN0cmVhbTsKKyAgY29uc3QgZ2V0UmVhZGVyID0gUmVhZGFibGVTdHJlYW0ucHJv
dG90eXBlLmdldFJlYWRlcjsKKyAgY29uc3QgZ2V0V3JpdGVyID0gV3JpdGFibGVTdHJlYW0ucHJv
dG90eXBlLmdldFdyaXRlcjsKKworICAvLyBSZXBsYWNlIFJlYWRhYmxlU3RyZWFtIGFuZCBXcml0
YWJsZVN0cmVhbSB3aXRoIGJyb2tlbiB2ZXJzaW9ucy4KKyAgUmVhZGFibGVTdHJlYW0gPSBmdW5j
dGlvbiAoKSB7CisgICAgdGhyb3cgbmV3IEVycm9yKCdDYWxsZWQgdGhlIGdsb2JhbCBSZWFkYWJs
ZVN0cmVhbSBjb25zdHJ1Y3RvcicpOworICB9OworICBXcml0YWJsZVN0cmVhbSA9IGZ1bmN0aW9u
ICgpIHsKKyAgICB0aHJvdyBuZXcgRXJyb3IoJ0NhbGxlZCB0aGUgZ2xvYmFsIFdyaXRhYmxlU3Ry
ZWFtIGNvbnN0cnVjdG9yJyk7CisgIH07CisgIHQuYWRkX2NsZWFudXAoKCkgPT4geworICAgIFJl
YWRhYmxlU3RyZWFtID0gb2xkUmVhZGFibGVTdHJlYW07CisgICAgV3JpdGFibGVTdHJlYW0gPSBv
bGRXcml0YWJsZVN0cmVhbTsKKyAgfSk7CisKKyAgY29uc3QgdHMgPSBuZXcgVHJhbnNmb3JtU3Ry
ZWFtKCk7CisKKyAgLy8gSnVzdCB0byBiZSBzdXJlLCBlbnN1cmUgdGhlIHJlYWRhYmxlIGFuZCB3
cml0YWJsZSBwYXNzIGJyYW5kIGNoZWNrcy4KKyAgYXNzZXJ0X25vdF9lcXVhbHMoZ2V0UmVhZGVy
LmNhbGwodHMucmVhZGFibGUpLCB1bmRlZmluZWQsCisgICAgICAgICAgICAgICAgICAgICdnZXRS
ZWFkZXIgc2hvdWxkIHdvcmsgd2hlbiBjYWxsZWQgb24gdHMucmVhZGFibGUnKTsKKyAgYXNzZXJ0
X25vdF9lcXVhbHMoZ2V0V3JpdGVyLmNhbGwodHMud3JpdGFibGUpLCB1bmRlZmluZWQsCisgICAg
ICAgICAgICAgICAgICAgICdnZXRXcml0ZXIgc2hvdWxkIHdvcmsgd2hlbiBjYWxsZWQgb24gdHMu
d3JpdGFibGUnKTsKK30sICdUcmFuc2Zvcm1TdHJlYW0gc2hvdWxkIHVzZSB0aGUgb3JpZ2luYWwg
dmFsdWUgb2YgUmVhZGFibGVTdHJlYW0gYW5kIFdyaXRhYmxlU3RyZWFtJyk7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvdHJh
bnNmb3JtLXN0cmVhbXMvcGF0Y2hlZC1nbG9iYWwuYW55Lndvcmtlci1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvdHJhbnNm
b3JtLXN0cmVhbXMvcGF0Y2hlZC1nbG9iYWwuYW55Lndvcmtlci1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNDU5NjgxYTg0YWQ5YzZkYzE4N2Y5MmFlZmNmM2M5NjkzZTQyZGIzNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy9wYXRjaGVkLWdsb2JhbC5hbnkud29ya2VyLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDQgQEAKKworRkFJTCBUcmFuc2Zvcm1TdHJlYW0gY29uc3RydWN0b3Ig
c2hvdWxkIG5vdCBjYWxsIHNldHRlcnMgZm9yIGhpZ2hXYXRlck1hcmsgb3Igc2l6ZSBDYW4ndCBm
aW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgVHJhbnNmb3JtU3RyZWFtIHNob3Vs
ZCB1c2UgdGhlIG9yaWdpbmFsIHZhbHVlIG9mIFJlYWRhYmxlU3RyZWFtIGFuZCBXcml0YWJsZVN0
cmVhbSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvdHJhbnNm
b3JtLXN0cmVhbXMvcGF0Y2hlZC1nbG9iYWwuYW55Lndvcmtlci5odG1sIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1z
L3BhdGNoZWQtZ2xvYmFsLmFueS53b3JrZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMzgyOTEzNTI4ZTY5
M2IzYTVkNTZjNjYwYTQ1MDYwOTgwYjU0OGMzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJl
YW1zL3BhdGNoZWQtZ2xvYmFsLmFueS53b3JrZXIuaHRtbApAQCAtMCwwICsxIEBACis8IS0tIFRo
aXMgZmlsZSBpcyByZXF1aXJlZCBmb3IgV2ViS2l0IHRlc3QgaW5mcmFzdHJ1Y3R1cmUgdG8gcnVu
IHRoZSB0ZW1wbGF0ZWQgdGVzdCAtLT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvdHJhbnNmb3JtLXN0cmVhbXMvcHJvcGVydGllcy5hbnktZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1z
dHJlYW1zL3Byb3BlcnRpZXMuYW55LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MmM2NDBiMDhk
N2I1YjA5MGM1OGRkYzI2ODkzMDY3OTc4YWVlYzE3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1z
dHJlYW1zL3Byb3BlcnRpZXMuYW55LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDggQEAKKworRkFJ
TCB0cmFuc2Zvcm1lciBtZXRob2Qgc3RhcnQgc2hvdWxkIGJlIGNhbGxlZCB3aXRoIHRoZSByaWdo
dCBudW1iZXIgb2YgYXJndW1lbnRzIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVh
bQorRkFJTCB0cmFuc2Zvcm1lciBtZXRob2Qgc3RhcnQgc2hvdWxkIGJlIGNhbGxlZCBldmVuIHdo
ZW4gaXQncyBsb2NhdGVkIG9uIHRoZSBwcm90b3R5cGUgY2hhaW4gQ2FuJ3QgZmluZCB2YXJpYWJs
ZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIHRyYW5zZm9ybWVyIG1ldGhvZCB0cmFuc2Zvcm0gc2hv
dWxkIGJlIGNhbGxlZCB3aXRoIHRoZSByaWdodCBudW1iZXIgb2YgYXJndW1lbnRzIENhbid0IGZp
bmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCB0cmFuc2Zvcm1lciBtZXRob2QgdHJh
bnNmb3JtIHNob3VsZCBiZSBjYWxsZWQgZXZlbiB3aGVuIGl0J3MgbG9jYXRlZCBvbiB0aGUgcHJv
dG90eXBlIGNoYWluIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCB0
cmFuc2Zvcm1lciBtZXRob2QgZmx1c2ggc2hvdWxkIGJlIGNhbGxlZCB3aXRoIHRoZSByaWdodCBu
dW1iZXIgb2YgYXJndW1lbnRzIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQor
RkFJTCB0cmFuc2Zvcm1lciBtZXRob2QgZmx1c2ggc2hvdWxkIGJlIGNhbGxlZCBldmVuIHdoZW4g
aXQncyBsb2NhdGVkIG9uIHRoZSBwcm90b3R5cGUgY2hhaW4gQ2FuJ3QgZmluZCB2YXJpYWJsZTog
VHJhbnNmb3JtU3RyZWFtCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy9wcm9wZXJ0aWVzLmFu
eS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJl
YW1zL3RyYW5zZm9ybS1zdHJlYW1zL3Byb3BlcnRpZXMuYW55Lmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjM4
MjkxMzUyOGU2OTNiM2E1ZDU2YzY2MGE0NTA2MDk4MGI1NDhjMwotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy90cmFu
c2Zvcm0tc3RyZWFtcy9wcm9wZXJ0aWVzLmFueS5odG1sCkBAIC0wLDAgKzEgQEAKKzwhLS0gVGhp
cyBmaWxlIGlzIHJlcXVpcmVkIGZvciBXZWJLaXQgdGVzdCBpbmZyYXN0cnVjdHVyZSB0byBydW4g
dGhlIHRlbXBsYXRlZCB0ZXN0IC0tPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy90cmFuc2Zvcm0tc3RyZWFtcy9wcm9wZXJ0aWVzLmFueS5qcyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy9wcm9w
ZXJ0aWVzLmFueS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMmFjNDgyZTBkZTIyMzQ2NTgyYzgzYjIzN2EwNmMx
MzE5NTc4ZjhjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1zL3Byb3BlcnRpZXMuYW55
LmpzCkBAIC0wLDAgKzEsNDkgQEAKKy8vIE1FVEE6IGdsb2JhbD13aW5kb3csd29ya2VyLGpzc2hl
bGwKKyd1c2Ugc3RyaWN0JzsKKworY29uc3QgdHJhbnNmb3JtZXJNZXRob2RzID0geworICBzdGFy
dDogeworICAgIGxlbmd0aDogMSwKKyAgICB0cmlnZ2VyOiAoKSA9PiBQcm9taXNlLnJlc29sdmUo
KQorICB9LAorICB0cmFuc2Zvcm06IHsKKyAgICBsZW5ndGg6IDIsCisgICAgdHJpZ2dlcjogdHMg
PT4gdHMud3JpdGFibGUuZ2V0V3JpdGVyKCkud3JpdGUoKQorICB9LAorICBmbHVzaDogeworICAg
IGxlbmd0aDogMSwKKyAgICB0cmlnZ2VyOiB0cyA9PiB0cy53cml0YWJsZS5nZXRXcml0ZXIoKS5j
bG9zZSgpCisgIH0KK307CisKK2ZvciAoY29uc3QgbWV0aG9kIGluIHRyYW5zZm9ybWVyTWV0aG9k
cykgeworICBjb25zdCB7IGxlbmd0aCwgdHJpZ2dlciB9ID0gdHJhbnNmb3JtZXJNZXRob2RzW21l
dGhvZF07CisKKyAgLy8gU29tZSBzZW1hbnRpYyB0ZXN0cyBvZiBob3cgdHJhbnNmb3JtZXIgbWV0
aG9kcyBhcmUgY2FsbGVkIGNhbiBiZSBmb3VuZCBpbiBnZW5lcmFsLmpzLCBhcyB3ZWxsIGFzIGlu
IHRoZSB0ZXN0IGZpbGVzCisgIC8vIHNwZWNpZmljIHRvIGVhY2ggbWV0aG9kLgorICBwcm9taXNl
X3Rlc3QoKCkgPT4geworICAgIGxldCBhcmdDb3VudDsKKyAgICBjb25zdCB0cyA9IG5ldyBUcmFu
c2Zvcm1TdHJlYW0oeworICAgICAgW21ldGhvZF0oLi4uYXJncykgeworICAgICAgICBhcmdDb3Vu
dCA9IGFyZ3MubGVuZ3RoOworICAgICAgfQorICAgIH0sIHVuZGVmaW5lZCwgeyBoaWdoV2F0ZXJN
YXJrOiBJbmZpbml0eSB9KTsKKyAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRyaWdnZXIodHMp
KS50aGVuKCgpID0+IHsKKyAgICAgIGFzc2VydF9lcXVhbHMoYXJnQ291bnQsIGxlbmd0aCwgYCR7
bWV0aG9kfSBzaG91bGQgYmUgY2FsbGVkIHdpdGggJHtsZW5ndGh9IGFyZ3VtZW50c2ApOworICAg
IH0pOworICB9LCBgdHJhbnNmb3JtZXIgbWV0aG9kICR7bWV0aG9kfSBzaG91bGQgYmUgY2FsbGVk
IHdpdGggdGhlIHJpZ2h0IG51bWJlciBvZiBhcmd1bWVudHNgKTsKKworICBwcm9taXNlX3Rlc3Qo
KCkgPT4geworICAgIGxldCBtZXRob2RXYXNDYWxsZWQgPSBmYWxzZTsKKyAgICBmdW5jdGlvbiBU
cmFuc2Zvcm1lcigpIHt9CisgICAgVHJhbnNmb3JtZXIucHJvdG90eXBlID0geworICAgICAgW21l
dGhvZF0oKSB7CisgICAgICAgIG1ldGhvZFdhc0NhbGxlZCA9IHRydWU7CisgICAgICB9CisgICAg
fTsKKyAgICBjb25zdCB0cyA9IG5ldyBUcmFuc2Zvcm1TdHJlYW0obmV3IFRyYW5zZm9ybWVyKCks
IHVuZGVmaW5lZCwgeyBoaWdoV2F0ZXJNYXJrOiBJbmZpbml0eSB9KTsKKyAgICByZXR1cm4gUHJv
bWlzZS5yZXNvbHZlKHRyaWdnZXIodHMpKS50aGVuKCgpID0+IHsKKyAgICAgIGFzc2VydF90cnVl
KG1ldGhvZFdhc0NhbGxlZCwgYCR7bWV0aG9kfSBzaG91bGQgYmUgY2FsbGVkYCk7CisgICAgfSk7
CisgIH0sIGB0cmFuc2Zvcm1lciBtZXRob2QgJHttZXRob2R9IHNob3VsZCBiZSBjYWxsZWQgZXZl
biB3aGVuIGl0J3MgbG9jYXRlZCBvbiB0aGUgcHJvdG90eXBlIGNoYWluYCk7Cit9CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
dHJhbnNmb3JtLXN0cmVhbXMvcHJvcGVydGllcy5hbnkud29ya2VyLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy90cmFuc2Zv
cm0tc3RyZWFtcy9wcm9wZXJ0aWVzLmFueS53b3JrZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjkyYzY0MGIwOGQ3YjViMDkwYzU4ZGRjMjY4OTMwNjc5NzhhZWVjMTcKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
dHJhbnNmb3JtLXN0cmVhbXMvcHJvcGVydGllcy5hbnkud29ya2VyLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDggQEAKKworRkFJTCB0cmFuc2Zvcm1lciBtZXRob2Qgc3RhcnQgc2hvdWxkIGJlIGNh
bGxlZCB3aXRoIHRoZSByaWdodCBudW1iZXIgb2YgYXJndW1lbnRzIENhbid0IGZpbmQgdmFyaWFi
bGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCB0cmFuc2Zvcm1lciBtZXRob2Qgc3RhcnQgc2hvdWxk
IGJlIGNhbGxlZCBldmVuIHdoZW4gaXQncyBsb2NhdGVkIG9uIHRoZSBwcm90b3R5cGUgY2hhaW4g
Q2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIHRyYW5zZm9ybWVyIG1l
dGhvZCB0cmFuc2Zvcm0gc2hvdWxkIGJlIGNhbGxlZCB3aXRoIHRoZSByaWdodCBudW1iZXIgb2Yg
YXJndW1lbnRzIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCB0cmFu
c2Zvcm1lciBtZXRob2QgdHJhbnNmb3JtIHNob3VsZCBiZSBjYWxsZWQgZXZlbiB3aGVuIGl0J3Mg
bG9jYXRlZCBvbiB0aGUgcHJvdG90eXBlIGNoYWluIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5z
Zm9ybVN0cmVhbQorRkFJTCB0cmFuc2Zvcm1lciBtZXRob2QgZmx1c2ggc2hvdWxkIGJlIGNhbGxl
ZCB3aXRoIHRoZSByaWdodCBudW1iZXIgb2YgYXJndW1lbnRzIENhbid0IGZpbmQgdmFyaWFibGU6
IFRyYW5zZm9ybVN0cmVhbQorRkFJTCB0cmFuc2Zvcm1lciBtZXRob2QgZmx1c2ggc2hvdWxkIGJl
IGNhbGxlZCBldmVuIHdoZW4gaXQncyBsb2NhdGVkIG9uIHRoZSBwcm90b3R5cGUgY2hhaW4gQ2Fu
J3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy90cmFuc2Zvcm0tc3Ry
ZWFtcy9wcm9wZXJ0aWVzLmFueS53b3JrZXIuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy9wcm9wZXJ0aWVz
LmFueS53b3JrZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMzgyOTEzNTI4ZTY5M2IzYTVkNTZjNjYwYTQ1
MDYwOTgwYjU0OGMzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1zL3Byb3BlcnRpZXMu
YW55Lndvcmtlci5odG1sCkBAIC0wLDAgKzEgQEAKKzwhLS0gVGhpcyBmaWxlIGlzIHJlcXVpcmVk
IGZvciBXZWJLaXQgdGVzdCBpbmZyYXN0cnVjdHVyZSB0byBydW4gdGhlIHRlbXBsYXRlZCB0ZXN0
IC0tPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFt
cy9yZWVudHJhbnQtc3RyYXRlZ2llcy5hbnktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1zL3Jl
ZW50cmFudC1zdHJhdGVnaWVzLmFueS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmI1OTMxN2E3
NjE3NThmMDE4NjgzYmYyOTZkNGViNjU1MWUzODQ4MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy90cmFuc2Zvcm0t
c3RyZWFtcy9yZWVudHJhbnQtc3RyYXRlZ2llcy5hbnktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MTMgQEAKKworRkFJTCBlbnF1ZXVlKCkgaW5zaWRlIHNpemUoKSBzaG91bGQgd29yayBDYW4ndCBm
aW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgdGVybWluYXRlKCkgaW5zaWRlIHNp
emUoKSBzaG91bGQgd29yayBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZB
SUwgZXJyb3IoKSBpbnNpZGUgc2l6ZSgpIHNob3VsZCB3b3JrIENhbid0IGZpbmQgdmFyaWFibGU6
IFRyYW5zZm9ybVN0cmVhbQorRkFJTCBkZXNpcmVkU2l6ZSBpbnNpZGUgc2l6ZSgpIHNob3VsZCB3
b3JrIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCByZWFkYWJsZSBj
YW5jZWwoKSBpbnNpZGUgc2l6ZSgpIHNob3VsZCB3b3JrIENhbid0IGZpbmQgdmFyaWFibGU6IFRy
YW5zZm9ybVN0cmVhbQorRkFJTCBwaXBlVG8oKSBpbnNpZGUgc2l6ZSgpIHNob3VsZCB3b3JrIENh
bid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCByZWFkKCkgaW5zaWRlIG9m
IHNpemUoKSBzaG91bGQgd29yayBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0K
K0ZBSUwgd3JpdGVyLndyaXRlKCkgaW5zaWRlIHNpemUoKSBzaG91bGQgd29yayBDYW4ndCBmaW5k
IHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgc3luY2hyb25vdXMgd3JpdGVyLndyaXRl
KCkgaW5zaWRlIHNpemUoKSBzaG91bGQgd29yayBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zv
cm1TdHJlYW0KK0ZBSUwgd3JpdGVyLmNsb3NlKCkgaW5zaWRlIHNpemUoKSBzaG91bGQgd29yayBD
YW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgd3JpdGVyLmFib3J0KCkg
aW5zaWRlIHNpemUoKSBzaG91bGQgd29yayBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1T
dHJlYW0KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1zL3JlZW50cmFudC1zdHJhdGVnaWVzLmFu
eS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJl
YW1zL3RyYW5zZm9ybS1zdHJlYW1zL3JlZW50cmFudC1zdHJhdGVnaWVzLmFueS5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjIzODI5MTM1MjhlNjkzYjNhNWQ1NmM2NjBhNDUwNjA5ODBiNTQ4YzMKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMvdHJhbnNmb3JtLXN0cmVhbXMvcmVlbnRyYW50LXN0cmF0ZWdpZXMuYW55Lmh0bWwKQEAg
LTAsMCArMSBAQAorPCEtLSBUaGlzIGZpbGUgaXMgcmVxdWlyZWQgZm9yIFdlYktpdCB0ZXN0IGlu
ZnJhc3RydWN0dXJlIHRvIHJ1biB0aGUgdGVtcGxhdGVkIHRlc3QgLS0+ClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1zL3JlZW50cmFudC1zdHJhdGVn
aWVzLmFueS5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy9yZWVudHJhbnQtc3RyYXRlZ2llcy5hbnkuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMzFlNTM5NDlmM2MyNmUxZjYyZGI3OGJkNjQyNzk2ODg5ZDJiNzA2ZAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy9yZWVudHJhbnQtc3RyYXRlZ2llcy5hbnkuanMKQEAg
LTAsMCArMSwzMTkgQEAKKy8vIE1FVEE6IGdsb2JhbD13aW5kb3csd29ya2VyLGpzc2hlbGwKKy8v
IE1FVEE6IHNjcmlwdD0uLi9yZXNvdXJjZXMvcmVjb3JkaW5nLXN0cmVhbXMuanMKKy8vIE1FVEE6
IHNjcmlwdD0uLi9yZXNvdXJjZXMvcnMtdXRpbHMuanMKKy8vIE1FVEE6IHNjcmlwdD0uLi9yZXNv
dXJjZXMvdGVzdC11dGlscy5qcworJ3VzZSBzdHJpY3QnOworCisvLyBUaGUgc2l6ZSgpIGZ1bmN0
aW9uIG9mIHJlYWRhYmxlU3RyYXRlZ3kgY2FuIHJlLWVudHJhbnRseSBjYWxsIGJhY2sgaW50byB0
aGUgVHJhbnNmb3JtU3RyZWFtIGltcGxlbWVudGF0aW9uLiBUaGlzCisvLyBtYWtlcyBpdCByaXNr
eSB0byBjYWNoZSBzdGF0ZSBhY3Jvc3MgdGhlIGNhbGwgdG8gUmVhZGFibGVTdHJlYW1EZWZhdWx0
Q29udHJvbGxlckVucXVldWUuIFRoZXNlIHRlc3RzIGF0dGVtcHQgdG8gY2F0Y2gKKy8vIHN1Y2gg
ZXJyb3JzLiBUaGV5IGFyZSBzZXBhcmF0ZWQgZnJvbSB0aGUgb3RoZXIgc3RyYXRlZ3kgdGVzdHMg
YmVjYXVzZSBubyByZWFsIHVzZXIgY29kZSBzaG91bGQgZXZlciBkbyBhbnl0aGluZyBsaWtlCisv
LyB0aGlzLgorLy8KKy8vIFRoZXJlIGlzIG5vIHN1Y2ggaXNzdWUgd2l0aCB3cml0YWJsZVN0cmF0
ZWd5IHNpemUoKSBiZWNhdXNlIGl0IGlzIG5ldmVyIGNhbGxlZCBmcm9tIHdpdGhpbiBUcmFuc2Zv
cm1TdHJlYW0KKy8vIGFsZ29yaXRobXMuCisKK2NvbnN0IGVycm9yMSA9IG5ldyBFcnJvcignZXJy
b3IxJyk7CitlcnJvcjEubmFtZSA9ICdlcnJvcjEnOworCitwcm9taXNlX3Rlc3QoKCkgPT4gewor
ICBsZXQgY29udHJvbGxlcjsKKyAgbGV0IGNhbGxzID0gMDsKKyAgY29uc3QgdHMgPSBuZXcgVHJh
bnNmb3JtU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjb250cm9sbGVyID0gYzsKKyAg
ICB9CisgIH0sIHVuZGVmaW5lZCwgeworICAgIHNpemUoKSB7CisgICAgICArK2NhbGxzOworICAg
ICAgaWYgKGNhbGxzIDwgMikgeworICAgICAgICBjb250cm9sbGVyLmVucXVldWUoJ2InKTsKKyAg
ICAgIH0KKyAgICAgIHJldHVybiAxOworICAgIH0sCisgICAgaGlnaFdhdGVyTWFyazogSW5maW5p
dHkKKyAgfSk7CisgIGNvbnN0IHdyaXRlciA9IHRzLndyaXRhYmxlLmdldFdyaXRlcigpOworICBy
ZXR1cm4gUHJvbWlzZS5hbGwoW3dyaXRlci53cml0ZSgnYScpLCB3cml0ZXIuY2xvc2UoKV0pCisg
ICAgICAudGhlbigoKSA9PiByZWFkYWJsZVN0cmVhbVRvQXJyYXkodHMucmVhZGFibGUpKQorICAg
ICAgLnRoZW4oYXJyYXkgPT4gYXNzZXJ0X2FycmF5X2VxdWFscyhhcnJheSwgWydiJywgJ2EnXSwg
J2FycmF5IHNob3VsZCBjb250YWluIHR3byBjaHVua3MnKSk7Cit9LCAnZW5xdWV1ZSgpIGluc2lk
ZSBzaXplKCkgc2hvdWxkIHdvcmsnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgbGV0IGNv
bnRyb2xsZXI7CisgIGNvbnN0IHRzID0gbmV3IFRyYW5zZm9ybVN0cmVhbSh7CisgICAgc3RhcnQo
YykgeworICAgICAgY29udHJvbGxlciA9IGM7CisgICAgfQorICB9LCB1bmRlZmluZWQsIHsKKyAg
ICBzaXplKCkgeworICAgICAgLy8gVGhlIHJlYWRhYmxlIHF1ZXVlIGlzIGVtcHR5LgorICAgICAg
Y29udHJvbGxlci50ZXJtaW5hdGUoKTsKKyAgICAgIC8vIFRoZSByZWFkYWJsZSBzdGF0ZSBoYXMg
Z29uZSBmcm9tICJyZWFkYWJsZSIgdG8gImNsb3NlZCIuCisgICAgICByZXR1cm4gMTsKKyAgICAg
IC8vIFRoaXMgY2h1bmsgd2lsbCBiZSBlbnF1ZXVlZCwgYnV0IHdpbGwgYmUgaW1wb3NzaWJsZSB0
byByZWFkIGJlY2F1c2UgdGhlIHN0YXRlIGlzIGFscmVhZHkgImNsb3NlZCIuCisgICAgfSwKKyAg
ICBoaWdoV2F0ZXJNYXJrOiBJbmZpbml0eQorICB9KTsKKyAgY29uc3Qgd3JpdGVyID0gdHMud3Jp
dGFibGUuZ2V0V3JpdGVyKCk7CisgIHJldHVybiB3cml0ZXIud3JpdGUoJ2EnKQorICAgICAgLnRo
ZW4oKCkgPT4gcmVhZGFibGVTdHJlYW1Ub0FycmF5KHRzLnJlYWRhYmxlKSkKKyAgICAgIC50aGVu
KGFycmF5ID0+IGFzc2VydF9hcnJheV9lcXVhbHMoYXJyYXksIFtdLCAnYXJyYXkgc2hvdWxkIGNv
bnRhaW4gbm8gY2h1bmtzJykpOworICAvLyBUaGUgY2h1bmsgJ2EnIGlzIHN0aWxsIGluIHJlYWRh
YmxlJ3MgcXVldWUuIHJlYWRhYmxlIGlzIGNsb3NlZCBzbyAnYScgY2Fubm90IGJlIHJlYWQuIHdy
aXRhYmxlJ3MgcXVldWUgaXMgZW1wdHkgYW5kCisgIC8vIGl0IGlzIHN0aWxsIHdyaXRhYmxlLgor
fSwgJ3Rlcm1pbmF0ZSgpIGluc2lkZSBzaXplKCkgc2hvdWxkIHdvcmsnKTsKKworcHJvbWlzZV90
ZXN0KHQgPT4geworICBsZXQgY29udHJvbGxlcjsKKyAgY29uc3QgdHMgPSBuZXcgVHJhbnNmb3Jt
U3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjb250cm9sbGVyID0gYzsKKyAgICB9Cisg
IH0sIHVuZGVmaW5lZCwgeworICAgIHNpemUoKSB7CisgICAgICBjb250cm9sbGVyLmVycm9yKGVy
cm9yMSk7CisgICAgICByZXR1cm4gMTsKKyAgICB9LAorICAgIGhpZ2hXYXRlck1hcms6IEluZmlu
aXR5CisgIH0pOworICBjb25zdCB3cml0ZXIgPSB0cy53cml0YWJsZS5nZXRXcml0ZXIoKTsKKyAg
cmV0dXJuIHdyaXRlci53cml0ZSgnYScpCisgICAgICAudGhlbigoKSA9PiBwcm9taXNlX3JlamVj
dHNfZXhhY3RseSh0LCBlcnJvcjEsIHRzLnJlYWRhYmxlLmdldFJlYWRlcigpLnJlYWQoKSwgJ3Jl
YWQoKSBzaG91bGQgcmVqZWN0JykpOworfSwgJ2Vycm9yKCkgaW5zaWRlIHNpemUoKSBzaG91bGQg
d29yaycpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworICBsZXQgY29udHJvbGxlcjsKKyAgY29u
c3QgdHMgPSBuZXcgVHJhbnNmb3JtU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjb250
cm9sbGVyID0gYzsKKyAgICB9CisgIH0sIHVuZGVmaW5lZCwgeworICAgIHNpemUoKSB7CisgICAg
ICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDEsICdkZXNpcmVkU2l6ZSBz
aG91bGQgYmUgMScpOworICAgICAgcmV0dXJuIDE7CisgICAgfSwKKyAgICBoaWdoV2F0ZXJNYXJr
OiAxCisgIH0pOworICBjb25zdCB3cml0ZXIgPSB0cy53cml0YWJsZS5nZXRXcml0ZXIoKTsKKyAg
cmV0dXJuIFByb21pc2UuYWxsKFt3cml0ZXIud3JpdGUoJ2EnKSwgd3JpdGVyLmNsb3NlKCldKQor
ICAgICAgLnRoZW4oKCkgPT4gcmVhZGFibGVTdHJlYW1Ub0FycmF5KHRzLnJlYWRhYmxlKSkKKyAg
ICAgIC50aGVuKGFycmF5ID0+IGFzc2VydF9hcnJheV9lcXVhbHMoYXJyYXksIFsnYSddLCAnYXJy
YXkgc2hvdWxkIGNvbnRhaW4gb25lIGNodW5rJykpOworfSwgJ2Rlc2lyZWRTaXplIGluc2lkZSBz
aXplKCkgc2hvdWxkIHdvcmsnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBsZXQgY2FuY2Vs
UHJvbWlzZTsKKyAgY29uc3QgdHMgPSBuZXcgVHJhbnNmb3JtU3RyZWFtKHt9LCB1bmRlZmluZWQs
IHsKKyAgICBzaXplKCkgeworICAgICAgY2FuY2VsUHJvbWlzZSA9IHRzLnJlYWRhYmxlLmNhbmNl
bChlcnJvcjEpOworICAgICAgcmV0dXJuIDE7CisgICAgfSwKKyAgICBoaWdoV2F0ZXJNYXJrOiBJ
bmZpbml0eQorICB9KTsKKyAgY29uc3Qgd3JpdGVyID0gdHMud3JpdGFibGUuZ2V0V3JpdGVyKCk7
CisgIHJldHVybiB3cml0ZXIud3JpdGUoJ2EnKQorICAgICAgLnRoZW4oKCkgPT4geworICAgICAg
ICBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIHdyaXRlci5jbG9zZWQsICd3cml0
ZXIuY2xvc2VkIHNob3VsZCByZWplY3QnKTsKKyAgICAgICAgcmV0dXJuIGNhbmNlbFByb21pc2U7
CisgICAgICB9KTsKK30sICdyZWFkYWJsZSBjYW5jZWwoKSBpbnNpZGUgc2l6ZSgpIHNob3VsZCB3
b3JrJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisgIGxldCBjb250cm9sbGVyOworICBsZXQg
cGlwZVRvUHJvbWlzZTsKKyAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSgpOwor
ICBjb25zdCB0cyA9IG5ldyBUcmFuc2Zvcm1TdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAg
IGNvbnRyb2xsZXIgPSBjOworICAgIH0KKyAgfSwgdW5kZWZpbmVkLCB7CisgICAgc2l6ZSgpIHsK
KyAgICAgIGlmICghcGlwZVRvUHJvbWlzZSkgeworICAgICAgICBwaXBlVG9Qcm9taXNlID0gdHMu
cmVhZGFibGUucGlwZVRvKHdzKTsKKyAgICAgIH0KKyAgICAgIHJldHVybiAxOworICAgIH0sCisg
ICAgaGlnaFdhdGVyTWFyazogMQorICB9KTsKKyAgLy8gQWxsb3cgcHJvbWlzZSByZXR1cm5lZCBi
eSBzdGFydCgpIHRvIHJlc29sdmUgc28gdGhhdCBlbnF1ZXVlKCkgd2lsbCBoYXBwZW4gc3luY2hy
b25vdXNseS4KKyAgcmV0dXJuIGRlbGF5KDApLnRoZW4oKCkgPT4geworICAgIGNvbnRyb2xsZXIu
ZW5xdWV1ZSgnYScpOworICAgIGFzc2VydF9ub3RfZXF1YWxzKHBpcGVUb1Byb21pc2UsIHVuZGVm
aW5lZCk7CisKKyAgICAvLyBTb21lIHBpcGVUbygpIGltcGxlbWVudGF0aW9ucyBuZWVkIGFuIGFk
ZGl0aW9uYWwgY2h1bmsgZW5xdWV1ZWQgaW4gb3JkZXIgZm9yIHRoZSBmaXJzdCBvbmUgdG8gYmUg
cHJvY2Vzc2VkLiBTZWUKKyAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vd2hhdHdnL3N0cmVhbXMv
aXNzdWVzLzc5NCBmb3IgYmFja2dyb3VuZC4KKyAgICBjb250cm9sbGVyLmVucXVldWUoJ2EnKTsK
KworICAgIC8vIEdpdmUgcGlwZVRvKCkgYSBjaGFuY2UgdG8gcHJvY2VzcyB0aGUgcXVldWVkIGNo
dW5rcy4KKyAgICByZXR1cm4gZGVsYXkoMCk7CisgIH0pLnRoZW4oKCkgPT4geworICAgIGFzc2Vy
dF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ3dyaXRlJywgJ2EnLCAnd3JpdGUnLCAnYSddLCAn
d3Mgc2hvdWxkIGNvbnRhaW4gdHdvIGNodW5rcycpOworICAgIGNvbnRyb2xsZXIudGVybWluYXRl
KCk7CisgICAgcmV0dXJuIHBpcGVUb1Byb21pc2U7CisgIH0pLnRoZW4oKCkgPT4geworICAgIGFz
c2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ3dyaXRlJywgJ2EnLCAnd3JpdGUnLCAnYScs
ICdjbG9zZSddLCAndGFyZ2V0IHNob3VsZCBoYXZlIGJlZW4gY2xvc2VkJyk7CisgIH0pOworfSwg
J3BpcGVUbygpIGluc2lkZSBzaXplKCkgc2hvdWxkIHdvcmsnKTsKKworcHJvbWlzZV90ZXN0KCgp
ID0+IHsKKyAgbGV0IGNvbnRyb2xsZXI7CisgIGxldCByZWFkUHJvbWlzZTsKKyAgbGV0IGNhbGxz
ID0gMDsKKyAgbGV0IHJlYWRlcjsKKyAgY29uc3QgdHMgPSBuZXcgVHJhbnNmb3JtU3RyZWFtKHsK
KyAgICBzdGFydChjKSB7CisgICAgICBjb250cm9sbGVyID0gYzsKKyAgICB9CisgIH0sIHVuZGVm
aW5lZCwgeworICAgIHNpemUoKSB7CisgICAgICAvLyBUaGlzIGlzIHRyaWdnZXJlZCBieSBjb250
cm9sbGVyLmVucXVldWUoKS4gVGhlIHF1ZXVlIGlzIGVtcHR5IGFuZCB0aGVyZSBhcmUgbm8gcGVu
ZGluZyByZWFkcy4gcHVsbCgpIGlzIGNhbGxlZAorICAgICAgLy8gc3luY2hyb25vdXNseSwgYWxs
b3dpbmcgdHJhbnNmb3JtKCkgdG8gcHJvY2VlZCBhc3luY2hyb25vdXNseS4gVGhpcyByZXN1bHRz
IGluIGEgc2Vjb25kIGNhbGwgdG8gZW5xdWV1ZSgpLAorICAgICAgLy8gd2hpY2ggcmVzb2x2ZXMg
dGhpcyBwZW5kaW5nIHJlYWQoKSB3aXRob3V0IGNhbGxpbmcgc2l6ZSgpIGFnYWluLgorICAgICAg
cmVhZFByb21pc2UgPSByZWFkZXIucmVhZCgpOworICAgICAgKytjYWxsczsKKyAgICAgIHJldHVy
biAxOworICAgIH0sCisgICAgaGlnaFdhdGVyTWFyazogMAorICB9KTsKKyAgcmVhZGVyID0gdHMu
cmVhZGFibGUuZ2V0UmVhZGVyKCk7CisgIGNvbnN0IHdyaXRlciA9IHRzLndyaXRhYmxlLmdldFdy
aXRlcigpOworICBsZXQgd3JpdGVSZXNvbHZlZCA9IGZhbHNlOworICBjb25zdCB3cml0ZVByb21p
c2UgPSB3cml0ZXIud3JpdGUoJ2InKS50aGVuKCgpID0+IHsKKyAgICB3cml0ZVJlc29sdmVkID0g
dHJ1ZTsKKyAgfSk7CisgIHJldHVybiBmbHVzaEFzeW5jRXZlbnRzKCkudGhlbigoKSA9PiB7Cisg
ICAgYXNzZXJ0X2ZhbHNlKHdyaXRlUmVzb2x2ZWQpOworICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgn
YScpOworICAgIGFzc2VydF9lcXVhbHMoY2FsbHMsIDEsICdzaXplKCkgc2hvdWxkIGhhdmUgYmVl
biBjYWxsZWQgb25jZScpOworICAgIHJldHVybiBkZWxheSgwKTsKKyAgfSkudGhlbigoKSA9PiB7
CisgICAgYXNzZXJ0X3RydWUod3JpdGVSZXNvbHZlZCk7CisgICAgYXNzZXJ0X2VxdWFscyhjYWxs
cywgMSwgJ3NpemUoKSBzaG91bGQgb25seSBiZSBjYWxsZWQgb25jZScpOworICAgIHJldHVybiBy
ZWFkUHJvbWlzZTsKKyAgfSkudGhlbigoeyB2YWx1ZSwgZG9uZSB9KSA9PiB7CisgICAgYXNzZXJ0
X2ZhbHNlKGRvbmUsICdkb25lIHNob3VsZCBiZSBmYWxzZScpOworICAgIC8vIFNlZSBodHRwczov
L2dpdGh1Yi5jb20vd2hhdHdnL3N0cmVhbXMvaXNzdWVzLzc5NCBmb3Igd2h5IHRoaXMgY2h1bmsg
aXMgbm90ICdhJy4KKyAgICBhc3NlcnRfZXF1YWxzKHZhbHVlLCAnYicsICdjaHVuayBzaG91bGQg
aGF2ZSBiZWVuIHJlYWQnKTsKKyAgICBhc3NlcnRfZXF1YWxzKGNhbGxzLCAxLCAnY2FsbHMgc2hv
dWxkIHN0aWxsIGJlIDEnKTsKKyAgICByZXR1cm4gd3JpdGVQcm9taXNlOworICB9KTsKK30sICdy
ZWFkKCkgaW5zaWRlIG9mIHNpemUoKSBzaG91bGQgd29yaycpOworCitwcm9taXNlX3Rlc3QoKCkg
PT4geworICBsZXQgd3JpdGVyOworICBsZXQgd3JpdGVQcm9taXNlMTsKKyAgbGV0IGNhbGxzID0g
MDsKKyAgY29uc3QgdHMgPSBuZXcgVHJhbnNmb3JtU3RyZWFtKHt9LCB1bmRlZmluZWQsIHsKKyAg
ICBzaXplKCkgeworICAgICAgKytjYWxsczsKKyAgICAgIGlmIChjYWxscyA8IDIpIHsKKyAgICAg
ICAgd3JpdGVQcm9taXNlMSA9IHdyaXRlci53cml0ZSgnYScpOworICAgICAgfQorICAgICAgcmV0
dXJuIDE7CisgICAgfSwKKyAgICBoaWdoV2F0ZXJNYXJrOiBJbmZpbml0eQorICB9KTsKKyAgd3Jp
dGVyID0gdHMud3JpdGFibGUuZ2V0V3JpdGVyKCk7CisgIC8vIEdpdmUgcHVsbCgpIGEgY2hhbmNl
IHRvIGJlIGNhbGxlZC4KKyAgcmV0dXJuIGRlbGF5KDApLnRoZW4oKCkgPT4geworICAgIC8vIFRo
aXMgd3JpdGUgcmVzdWx0cyBpbiBhIHN5bmNocm9ub3VzIGNhbGwgdG8gdHJhbnNmb3JtKCksIGVu
cXVldWUoKSwgYW5kIHNpemUoKS4KKyAgICBjb25zdCB3cml0ZVByb21pc2UyID0gd3JpdGVyLndy
aXRlKCdiJyk7CisgICAgYXNzZXJ0X2VxdWFscyhjYWxscywgMSwgJ3NpemUoKSBzaG91bGQgaGF2
ZSBiZWVuIGNhbGxlZCBvbmNlJyk7CisgICAgcmV0dXJuIFByb21pc2UuYWxsKFt3cml0ZVByb21p
c2UxLCB3cml0ZVByb21pc2UyLCB3cml0ZXIuY2xvc2UoKV0pOworICB9KS50aGVuKCgpID0+IHsK
KyAgICBhc3NlcnRfZXF1YWxzKGNhbGxzLCAyLCAnc2l6ZSgpIHNob3VsZCBoYXZlIGJlZW4gY2Fs
bGVkIHR3aWNlJyk7CisgICAgcmV0dXJuIHJlYWRhYmxlU3RyZWFtVG9BcnJheSh0cy5yZWFkYWJs
ZSk7CisgIH0pLnRoZW4oYXJyYXkgPT4geworICAgIGFzc2VydF9hcnJheV9lcXVhbHMoYXJyYXks
IFsnYicsICdhJ10sICdib3RoIGNodW5rcyBzaG91bGQgaGF2ZSBiZWVuIGVucXVldWVkJyk7Cisg
ICAgYXNzZXJ0X2VxdWFscyhjYWxscywgMiwgJ2NhbGxzIHNob3VsZCBzdGlsbCBiZSAyJyk7Cisg
IH0pOworfSwgJ3dyaXRlci53cml0ZSgpIGluc2lkZSBzaXplKCkgc2hvdWxkIHdvcmsnKTsKKwor
cHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgbGV0IGNvbnRyb2xsZXI7CisgIGxldCB3cml0ZXI7Cisg
IGxldCB3cml0ZVByb21pc2U7CisgIGxldCBjYWxscyA9IDA7CisgIGNvbnN0IHRzID0gbmV3IFRy
YW5zZm9ybVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgY29udHJvbGxlciA9IGM7Cisg
ICAgfQorICB9LCB1bmRlZmluZWQsIHsKKyAgICBzaXplKCkgeworICAgICAgKytjYWxsczsKKyAg
ICAgIGlmIChjYWxscyA8IDIpIHsKKyAgICAgICAgd3JpdGVQcm9taXNlID0gd3JpdGVyLndyaXRl
KCdhJyk7CisgICAgICB9CisgICAgICByZXR1cm4gMTsKKyAgICB9LAorICAgIGhpZ2hXYXRlck1h
cms6IEluZmluaXR5CisgIH0pOworICB3cml0ZXIgPSB0cy53cml0YWJsZS5nZXRXcml0ZXIoKTsK
KyAgLy8gR2l2ZSBwdWxsKCkgYSBjaGFuY2UgdG8gYmUgY2FsbGVkLgorICByZXR1cm4gZGVsYXko
MCkudGhlbigoKSA9PiB7CisgICAgLy8gVGhpcyBlbnF1ZXVlIHJlc3VsdHMgaW4gc3luY2hyb25v
dXMgY2FsbHMgdG8gc2l6ZSgpLCB3cml0ZSgpLCB0cmFuc2Zvcm0oKSBhbmQgZW5xdWV1ZSgpLgor
ICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYicpOworICAgIGFzc2VydF9lcXVhbHMoY2FsbHMsIDIs
ICdzaXplKCkgc2hvdWxkIGhhdmUgYmVlbiBjYWxsZWQgdHdpY2UnKTsKKyAgICByZXR1cm4gUHJv
bWlzZS5hbGwoW3dyaXRlUHJvbWlzZSwgd3JpdGVyLmNsb3NlKCldKTsKKyAgfSkudGhlbigoKSA9
PiB7CisgICAgcmV0dXJuIHJlYWRhYmxlU3RyZWFtVG9BcnJheSh0cy5yZWFkYWJsZSk7CisgIH0p
LnRoZW4oYXJyYXkgPT4geworICAgIC8vIEJlY2F1c2Ugb25lIGNhbGwgdG8gZW5xdWV1ZSgpIGlz
IG5lc3RlZCBpbnNpZGUgdGhlIG90aGVyLCB0aGV5IGZpbmlzaCBpbiB0aGUgb3Bwb3NpdGUgb3Jk
ZXIgdGhhdCB0aGV5IHdlcmUKKyAgICAvLyBjYWxsZWQsIHNvIHRoZSBjaHVua3MgZW5kIHVwIHJl
dmVyc2Ugb3JkZXIuCisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhhcnJheSwgWydhJywgJ2InXSwg
J2JvdGggY2h1bmtzIHNob3VsZCBoYXZlIGJlZW4gZW5xdWV1ZWQnKTsKKyAgICBhc3NlcnRfZXF1
YWxzKGNhbGxzLCAyLCAnY2FsbHMgc2hvdWxkIHN0aWxsIGJlIDInKTsKKyAgfSk7Cit9LCAnc3lu
Y2hyb25vdXMgd3JpdGVyLndyaXRlKCkgaW5zaWRlIHNpemUoKSBzaG91bGQgd29yaycpOworCitw
cm9taXNlX3Rlc3QoKCkgPT4geworICBsZXQgd3JpdGVyOworICBsZXQgY2xvc2VQcm9taXNlOwor
ICBsZXQgY29udHJvbGxlcjsKKyAgY29uc3QgdHMgPSBuZXcgVHJhbnNmb3JtU3RyZWFtKHsKKyAg
ICBzdGFydChjKSB7CisgICAgICBjb250cm9sbGVyID0gYzsKKyAgICB9CisgIH0sIHVuZGVmaW5l
ZCwgeworICAgIHNpemUoKSB7CisgICAgICBjbG9zZVByb21pc2UgPSB3cml0ZXIuY2xvc2UoKTsK
KyAgICAgIHJldHVybiAxOworICAgIH0sCisgICAgaGlnaFdhdGVyTWFyazogMQorICB9KTsKKyAg
d3JpdGVyID0gdHMud3JpdGFibGUuZ2V0V3JpdGVyKCk7CisgIGNvbnN0IHJlYWRlciA9IHRzLnJl
YWRhYmxlLmdldFJlYWRlcigpOworICAvLyBXYWl0IGZvciB0aGUgcHJvbWlzZSByZXR1cm5lZCBi
eSBzdGFydCgpIHRvIGJlIHJlc29sdmVkIHNvIHRoYXQgdGhlIGNhbGwgdG8gY2xvc2UoKSB3aWxs
IHJlc3VsdCBpbiBhIHN5bmNocm9ub3VzCisgIC8vIGNhbGwgdG8gVHJhbnNmb3JtU3RyZWFtRGVm
YXVsdFNpbmsuCisgIHJldHVybiBkZWxheSgwKS50aGVuKCgpID0+IHsKKyAgICBjb250cm9sbGVy
LmVucXVldWUoJ2EnKTsKKyAgICByZXR1cm4gcmVhZGVyLnJlYWQoKTsKKyAgfSkudGhlbigoeyB2
YWx1ZSwgZG9uZSB9KSA9PiB7CisgICAgYXNzZXJ0X2ZhbHNlKGRvbmUsICdkb25lIHNob3VsZCBi
ZSBmYWxzZScpOworICAgIGFzc2VydF9lcXVhbHModmFsdWUsICdhJywgJ3ZhbHVlIHNob3VsZCBi
ZSBjb3JyZWN0Jyk7CisgICAgcmV0dXJuIHJlYWRlci5yZWFkKCk7CisgIH0pLnRoZW4oKHsgZG9u
ZSB9KSA9PiB7CisgICAgYXNzZXJ0X3RydWUoZG9uZSwgJ2RvbmUgc2hvdWxkIGJlIHRydWUnKTsK
KyAgICByZXR1cm4gY2xvc2VQcm9taXNlOworICB9KTsKK30sICd3cml0ZXIuY2xvc2UoKSBpbnNp
ZGUgc2l6ZSgpIHNob3VsZCB3b3JrJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgbGV0IGFi
b3J0UHJvbWlzZTsKKyAgbGV0IGNvbnRyb2xsZXI7CisgIGNvbnN0IHRzID0gbmV3IFRyYW5zZm9y
bVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgY29udHJvbGxlciA9IGM7CisgICAgfQor
ICB9LCB1bmRlZmluZWQsIHsKKyAgICBzaXplKCkgeworICAgICAgYWJvcnRQcm9taXNlID0gdHMu
d3JpdGFibGUuYWJvcnQoZXJyb3IxKTsKKyAgICAgIHJldHVybiAxOworICAgIH0sCisgICAgaGln
aFdhdGVyTWFyazogMQorICB9KTsKKyAgY29uc3QgcmVhZGVyID0gdHMucmVhZGFibGUuZ2V0UmVh
ZGVyKCk7CisgIC8vIFdhaXQgZm9yIHRoZSBwcm9taXNlIHJldHVybmVkIGJ5IHN0YXJ0KCkgdG8g
YmUgcmVzb2x2ZWQgc28gdGhhdCB0aGUgY2FsbCB0byBhYm9ydCgpIHdpbGwgcmVzdWx0IGluIGEg
c3luY2hyb25vdXMKKyAgLy8gY2FsbCB0byBUcmFuc2Zvcm1TdHJlYW1EZWZhdWx0U2luay4KKyAg
cmV0dXJuIGRlbGF5KDApLnRoZW4oKCkgPT4geworICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYScp
OworICAgIHJldHVybiBQcm9taXNlLmFsbChbcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJy
b3IxLCByZWFkZXIucmVhZCgpLCAncmVhZCgpIHNob3VsZCByZWplY3QnKSwgYWJvcnRQcm9taXNl
XSk7CisgIH0pOworfSwgJ3dyaXRlci5hYm9ydCgpIGluc2lkZSBzaXplKCkgc2hvdWxkIHdvcmsn
KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy9yZWVudHJhbnQtc3RyYXRlZ2llcy5hbnkud29y
a2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy9yZWVudHJhbnQtc3RyYXRlZ2llcy5hbnku
d29ya2VyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MmI3MWU0MmMyMzZkMDFlMWU2NGIzZjQy
OGE4MWZiNTZmNTZlMDVkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1zL3JlZW50cmFu
dC1zdHJhdGVnaWVzLmFueS53b3JrZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTMgQEAKKwor
RkFJTCBlbnF1ZXVlKCkgaW5zaWRlIHNpemUoKSBzaG91bGQgd29yayBDYW4ndCBmaW5kIHZhcmlh
YmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgdGVybWluYXRlKCkgaW5zaWRlIHNpemUoKSBzaG91
bGQgd29yayBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgZXJyb3Io
KSBpbnNpZGUgc2l6ZSgpIHNob3VsZCB3b3JrIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9y
bVN0cmVhbQorRkFJTCBkZXNpcmVkU2l6ZSBpbnNpZGUgc2l6ZSgpIHNob3VsZCB3b3JrIENhbid0
IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCByZWFkYWJsZSBjYW5jZWwoKSBp
bnNpZGUgc2l6ZSgpIHNob3VsZCB3b3JrIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0
cmVhbQorRkFJTCBwaXBlVG8oKSBpbnNpZGUgc2l6ZSgpIHNob3VsZCB3b3JrIENhbid0IGZpbmQg
dmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIHJlYWQoKSBpbnNpZGUgb2Ygc2l6ZSgpIHNo
b3VsZCB3b3JrIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCB3cml0
ZXIud3JpdGUoKSBpbnNpZGUgc2l6ZSgpIHNob3VsZCB3b3JrIENhbid0IGZpbmQgdmFyaWFibGU6
IFRyYW5zZm9ybVN0cmVhbQorRkFJTCBzeW5jaHJvbm91cyB3cml0ZXIud3JpdGUoKSBpbnNpZGUg
c2l6ZSgpIHNob3VsZCB3b3JrIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQor
RkFJTCB3cml0ZXIuY2xvc2UoKSBpbnNpZGUgc2l6ZSgpIHNob3VsZCB3b3JrIENhbid0IGZpbmQg
dmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCB3cml0ZXIuYWJvcnQoKSBpbnNpZGUgc2l6
ZSgpIHNob3VsZCB3b3JrIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMvdHJhbnNmb3JtLXN0cmVhbXMvcmVlbnRyYW50LXN0cmF0ZWdpZXMuYW55Lndvcmtlci5o
dG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
L3RyYW5zZm9ybS1zdHJlYW1zL3JlZW50cmFudC1zdHJhdGVnaWVzLmFueS53b3JrZXIuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4yMzgyOTEzNTI4ZTY5M2IzYTVkNTZjNjYwYTQ1MDYwOTgwYjU0OGMzCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1zL3JlZW50cmFudC1zdHJhdGVnaWVzLmFueS53b3Jr
ZXIuaHRtbApAQCAtMCwwICsxIEBACis8IS0tIFRoaXMgZmlsZSBpcyByZXF1aXJlZCBmb3IgV2Vi
S2l0IHRlc3QgaW5mcmFzdHJ1Y3R1cmUgdG8gcnVuIHRoZSB0ZW1wbGF0ZWQgdGVzdCAtLT4KXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvdHJhbnNmb3JtLXN0cmVhbXMvc3RyYXRl
Z2llcy5hbnktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1zL3N0cmF0ZWdpZXMuYW55LWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi43M2NhMDc2MDhjM2VhMjAyNDY3MzVjNmY5MmEwMGZmY2E2OTVj
YmZmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1zL3N0cmF0ZWdpZXMuYW55LWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDE0IEBACisKK0ZBSUwgd3JpdGFibGVTdHJhdGVneSBoaWdoV2F0
ZXJNYXJrIHNob3VsZCB3b3JrIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQor
RkFJTCByZWFkYWJsZVN0cmF0ZWd5IGhpZ2hXYXRlck1hcmsgc2hvdWxkIHdvcmsgQ2FuJ3QgZmlu
ZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIHdyaXRhYmxlIHNob3VsZCBoYXZlIHRo
ZSBjb3JyZWN0IHNpemUoKSBmdW5jdGlvbiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1T
dHJlYW0KK0ZBSUwgZGVmYXVsdCB3cml0YWJsZSBzdHJhdGVneSBzaG91bGQgYmUgZXF1aXZhbGVu
dCB0byB7IGhpZ2hXYXRlck1hcms6IDEgfSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1T
dHJlYW0KK0ZBSUwgZGVmYXVsdCByZWFkYWJsZSBzdHJhdGVneSBzaG91bGQgYmUgZXF1aXZhbGVu
dCB0byB7IGhpZ2hXYXRlck1hcms6IDAgfSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1T
dHJlYW0KK0ZBSUwgYSBSYW5nZUVycm9yIHNob3VsZCBiZSB0aHJvd24gZm9yIGFuIGludmFsaWQg
aGlnaFdhdGVyTWFyayBhc3NlcnRfdGhyb3dzX2pzOiBzaG91bGQgdGhyb3cgUmFuZ2VFcnJvciBm
b3IgbmVnYXRpdmUgd3JpdGFibGVIaWdoV2F0ZXJNYXJrIGZ1bmN0aW9uICIoKSA9PiBuZXcgVHJh
bnNmb3JtU3RyZWFtKHVuZGVmaW5lZCwgeyBoaWdoV2F0ZXJNYXJrOiAtMSB9KSIgdGhyZXcgb2Jq
ZWN0ICJSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFt
IiAoIlJlZmVyZW5jZUVycm9yIikgZXhwZWN0ZWQgaW5zdGFuY2Ugb2YgZnVuY3Rpb24gImZ1bmN0
aW9uIFJhbmdlRXJyb3IoKSB7CisgICAgW25hdGl2ZSBjb2RlXQorfSIgKCJSYW5nZUVycm9yIikK
K0ZBSUwgd3JpdGFibGVTdHJhdGVneSBoaWdoV2F0ZXJNYXJrIHNob3VsZCBiZSBjb252ZXJ0ZWQg
dG8gYSBudW1iZXIgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIHJl
YWRhYmxlU3RyYXRlZ3kgaGlnaFdhdGVyTWFyayBzaG91bGQgYmUgY29udmVydGVkIHRvIGEgbnVt
YmVyIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCBhIGJhZCByZWFk
YWJsZVN0cmF0ZWd5IHNpemUgZnVuY3Rpb24gc2hvdWxkIGNhdXNlIHdyaXRlci53cml0ZSgpIHRv
IHJlamVjdCBvbiBhbiBpZGVudGl0eSB0cmFuc2Zvcm0gQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJh
bnNmb3JtU3RyZWFtCitGQUlMIGEgYmFkIHJlYWRhYmxlU3RyYXRlZ3kgc2l6ZSBmdW5jdGlvbiBz
aG91bGQgZXJyb3IgdGhlIHN0cmVhbSBvbiBlbnF1ZXVlIGV2ZW4gd2hlbiB0cmFuc2Zvcm1lci50
cmFuc2Zvcm0oKSBjYXRjaGVzIHRoZSBleGNlcHRpb24gQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJh
bnNmb3JtU3RyZWFtCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy9zdHJhdGVnaWVzLmFueS5o
dG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
L3RyYW5zZm9ybS1zdHJlYW1zL3N0cmF0ZWdpZXMuYW55Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjM4Mjkx
MzUyOGU2OTNiM2E1ZDU2YzY2MGE0NTA2MDk4MGI1NDhjMwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy90cmFuc2Zv
cm0tc3RyZWFtcy9zdHJhdGVnaWVzLmFueS5odG1sCkBAIC0wLDAgKzEgQEAKKzwhLS0gVGhpcyBm
aWxlIGlzIHJlcXVpcmVkIGZvciBXZWJLaXQgdGVzdCBpbmZyYXN0cnVjdHVyZSB0byBydW4gdGhl
IHRlbXBsYXRlZCB0ZXN0IC0tPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy90
cmFuc2Zvcm0tc3RyZWFtcy9zdHJhdGVnaWVzLmFueS5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy9zdHJhdGVn
aWVzLmFueS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNDY1ZDMxYWIwOTczNmQ2ZTk4ZjI4MDE2YjE5ZTJlMTRk
NTFkYTBlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1zL3N0cmF0ZWdpZXMuYW55Lmpz
CkBAIC0wLDAgKzEsMTUwIEBACisvLyBNRVRBOiBnbG9iYWw9d2luZG93LHdvcmtlcixqc3NoZWxs
CisvLyBNRVRBOiBzY3JpcHQ9Li4vcmVzb3VyY2VzL3JlY29yZGluZy1zdHJlYW1zLmpzCisvLyBN
RVRBOiBzY3JpcHQ9Li4vcmVzb3VyY2VzL3Rlc3QtdXRpbHMuanMKKyd1c2Ugc3RyaWN0JzsKKwor
Ly8gSGVyZSB3ZSBqdXN0IHRlc3QgdGhhdCB0aGUgc3RyYXRlZ2llcyBhcmUgY29ycmVjdGx5IHBh
c3NlZCB0byB0aGUgcmVhZGFibGUgYW5kIHdyaXRhYmxlIHNpZGVzLiBXZSBhc3N1bWUgdGhhdAor
Ly8gUmVhZGFibGVTdHJlYW0gYW5kIFdyaXRhYmxlU3RyZWFtIHdpbGwgY29ycmVjdGx5IGFwcGx5
IHRoZSBzdHJhdGVnaWVzIHdoZW4gdGhleSBhcmUgYmVpbmcgdXNlZCBieSBhIFRyYW5zZm9ybVN0
cmVhbQorLy8gYW5kIHNvIGl0IGlzbid0IG5lY2Vzc2FyeSB0byByZXBlYXQgdGhlaXIgdGVzdHMg
aGVyZS4KKwordGVzdCgoKSA9PiB7CisgIGNvbnN0IHRzID0gbmV3IFRyYW5zZm9ybVN0cmVhbSh7
fSwgeyBoaWdoV2F0ZXJNYXJrOiAxNyB9KTsKKyAgYXNzZXJ0X2VxdWFscyh0cy53cml0YWJsZS5n
ZXRXcml0ZXIoKS5kZXNpcmVkU2l6ZSwgMTcsICdkZXNpcmVkU2l6ZSBzaG91bGQgYmUgMTcnKTsK
K30sICd3cml0YWJsZVN0cmF0ZWd5IGhpZ2hXYXRlck1hcmsgc2hvdWxkIHdvcmsnKTsKKworcHJv
bWlzZV90ZXN0KCgpID0+IHsKKyAgY29uc3QgdHMgPSByZWNvcmRpbmdUcmFuc2Zvcm1TdHJlYW0o
e30sIHVuZGVmaW5lZCwgeyBoaWdoV2F0ZXJNYXJrOiA5IH0pOworICBjb25zdCB3cml0ZXIgPSB0
cy53cml0YWJsZS5nZXRXcml0ZXIoKTsKKyAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDsgKytpKSB7
CisgICAgd3JpdGVyLndyaXRlKGkpOworICB9CisgIHJldHVybiBkZWxheSgwKS50aGVuKCgpID0+
IHsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHRzLmV2ZW50cywgWworICAgICAgJ3RyYW5zZm9y
bScsIDAsICd0cmFuc2Zvcm0nLCAxLCAndHJhbnNmb3JtJywgMiwgJ3RyYW5zZm9ybScsIDMsICd0
cmFuc2Zvcm0nLCA0LAorICAgICAgJ3RyYW5zZm9ybScsIDUsICd0cmFuc2Zvcm0nLCA2LCAndHJh
bnNmb3JtJywgNywgJ3RyYW5zZm9ybScsIDhdLAorICAgICAgICAgICAgICAgICAgICAgICAgJ3Ry
YW5zZm9ybSgpIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkIDkgdGltZXMnKTsKKyAgfSk7Cit9LCAn
cmVhZGFibGVTdHJhdGVneSBoaWdoV2F0ZXJNYXJrIHNob3VsZCB3b3JrJyk7CisKK3Byb21pc2Vf
dGVzdCh0ID0+IHsKKyAgbGV0IHdyaXRhYmxlU2l6ZUNhbGxlZCA9IGZhbHNlOworICBsZXQgcmVh
ZGFibGVTaXplQ2FsbGVkID0gZmFsc2U7CisgIGxldCB0cmFuc2Zvcm1DYWxsZWQgPSBmYWxzZTsK
KyAgY29uc3QgdHMgPSBuZXcgVHJhbnNmb3JtU3RyZWFtKAorICAgIHsKKyAgICAgIHRyYW5zZm9y
bShjaHVuaywgY29udHJvbGxlcikgeworICAgICAgICB0LnN0ZXAoKCkgPT4geworICAgICAgICAg
IHRyYW5zZm9ybUNhbGxlZCA9IHRydWU7CisgICAgICAgICAgYXNzZXJ0X3RydWUod3JpdGFibGVT
aXplQ2FsbGVkLCAnd3JpdGFibGVTdHJhdGVneS5zaXplKCkgc2hvdWxkIGhhdmUgYmVlbiBjYWxs
ZWQnKTsKKyAgICAgICAgICBhc3NlcnRfZmFsc2UocmVhZGFibGVTaXplQ2FsbGVkLCAncmVhZGFi
bGVTdHJhdGVneS5zaXplKCkgc2hvdWxkIG5vdCBoYXZlIGJlZW4gY2FsbGVkJyk7CisgICAgICAg
ICAgY29udHJvbGxlci5lbnF1ZXVlKGNodW5rKTsKKyAgICAgICAgICBhc3NlcnRfdHJ1ZShyZWFk
YWJsZVNpemVDYWxsZWQsICdyZWFkYWJsZVN0cmF0ZWd5LnNpemUoKSBzaG91bGQgaGF2ZSBiZWVu
IGNhbGxlZCcpOworICAgICAgICB9KTsKKyAgICAgIH0KKyAgICB9LAorICAgIHsKKyAgICAgIHNp
emUoKSB7CisgICAgICAgIHdyaXRhYmxlU2l6ZUNhbGxlZCA9IHRydWU7CisgICAgICAgIHJldHVy
biAxOworICAgICAgfQorICAgIH0sCisgICAgeworICAgICAgc2l6ZSgpIHsKKyAgICAgICAgcmVh
ZGFibGVTaXplQ2FsbGVkID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgICB9LAorICAg
ICAgaGlnaFdhdGVyTWFyazogSW5maW5pdHkKKyAgICB9KTsKKyAgcmV0dXJuIHRzLndyaXRhYmxl
LmdldFdyaXRlcigpLndyaXRlKCkudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X3RydWUodHJhbnNm
b3JtQ2FsbGVkLCAndHJhbnNmb3JtKCkgc2hvdWxkIGJlIGNhbGxlZCcpOworICB9KTsKK30sICd3
cml0YWJsZSBzaG91bGQgaGF2ZSB0aGUgY29ycmVjdCBzaXplKCkgZnVuY3Rpb24nKTsKKwordGVz
dCgoKSA9PiB7CisgIGNvbnN0IHRzID0gbmV3IFRyYW5zZm9ybVN0cmVhbSgpOworICBjb25zdCB3
cml0ZXIgPSB0cy53cml0YWJsZS5nZXRXcml0ZXIoKTsKKyAgYXNzZXJ0X2VxdWFscyh3cml0ZXIu
ZGVzaXJlZFNpemUsIDEsICdkZWZhdWx0IHdyaXRhYmxlIEhXTSBpcyAxJyk7CisgIHdyaXRlci53
cml0ZSh1bmRlZmluZWQpOworICBhc3NlcnRfZXF1YWxzKHdyaXRlci5kZXNpcmVkU2l6ZSwgMCwg
J2RlZmF1bHQgY2h1bmsgc2l6ZSBpcyAxJyk7Cit9LCAnZGVmYXVsdCB3cml0YWJsZSBzdHJhdGVn
eSBzaG91bGQgYmUgZXF1aXZhbGVudCB0byB7IGhpZ2hXYXRlck1hcms6IDEgfScpOworCitwcm9t
aXNlX3Rlc3QodCA9PiB7CisgIGNvbnN0IHRzID0gbmV3IFRyYW5zZm9ybVN0cmVhbSh7CisgICAg
dHJhbnNmb3JtKGNodW5rLCBjb250cm9sbGVyKSB7CisgICAgICByZXR1cm4gdC5zdGVwKCgpID0+
IHsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAwLCAnZGVz
aXJlZFNpemUgc2hvdWxkIGJlIDAnKTsKKyAgICAgICAgY29udHJvbGxlci5lbnF1ZXVlKHVuZGVm
aW5lZCk7CisgICAgICAgIC8vIFRoZSBmaXJzdCBjaHVuayBlbnF1ZXVlZCBpcyBjb25zdW1lZCBi
eSB0aGUgcGVuZGluZyByZWFkKCkuCisgICAgICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5k
ZXNpcmVkU2l6ZSwgMCwgJ2Rlc2lyZWRTaXplIHNob3VsZCBzdGlsbCBiZSAwJyk7CisgICAgICAg
IGNvbnRyb2xsZXIuZW5xdWV1ZSh1bmRlZmluZWQpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGNv
bnRyb2xsZXIuZGVzaXJlZFNpemUsIC0xLCAnZGVzaXJlZFNpemUgc2hvdWxkIGJlIC0xJyk7Cisg
ICAgICB9KTsKKyAgICB9CisgIH0pOworICBjb25zdCB3cml0ZVByb21pc2UgPSB0cy53cml0YWJs
ZS5nZXRXcml0ZXIoKS53cml0ZSgpOworICByZXR1cm4gdHMucmVhZGFibGUuZ2V0UmVhZGVyKCku
cmVhZCgpLnRoZW4oKCkgPT4gd3JpdGVQcm9taXNlKTsKK30sICdkZWZhdWx0IHJlYWRhYmxlIHN0
cmF0ZWd5IHNob3VsZCBiZSBlcXVpdmFsZW50IHRvIHsgaGlnaFdhdGVyTWFyazogMCB9Jyk7CisK
K3Rlc3QoKCkgPT4geworICBhc3NlcnRfdGhyb3dzX2pzKFJhbmdlRXJyb3IsICgpID0+IG5ldyBU
cmFuc2Zvcm1TdHJlYW0odW5kZWZpbmVkLCB7IGhpZ2hXYXRlck1hcms6IC0xIH0pLAorICAgICAg
ICAgICAgICAgICAgICdzaG91bGQgdGhyb3cgUmFuZ2VFcnJvciBmb3IgbmVnYXRpdmUgd3JpdGFi
bGVIaWdoV2F0ZXJNYXJrJyk7CisgIGFzc2VydF90aHJvd3NfanMoUmFuZ2VFcnJvciwgKCkgPT4g
bmV3IFRyYW5zZm9ybVN0cmVhbSh1bmRlZmluZWQsIHVuZGVmaW5lZCwgeyBoaWdoV2F0ZXJNYXJr
OiAtMSB9KSwKKyAgICAgICAgICAgICAgICAgICAnc2hvdWxkIHRocm93IFJhbmdlRXJyb3IgZm9y
IG5lZ2F0aXZlIHJlYWRhYmxlSGlnaFdhdGVyTWFyaycpOworICBhc3NlcnRfdGhyb3dzX2pzKFJh
bmdlRXJyb3IsICgpID0+IG5ldyBUcmFuc2Zvcm1TdHJlYW0odW5kZWZpbmVkLCB7IGhpZ2hXYXRl
ck1hcms6IE5hTiB9KSwKKyAgICAgICAgICAgICAgICAgICAnc2hvdWxkIHRocm93IFJhbmdlRXJy
b3IgZm9yIE5hTiB3cml0YWJsZUhpZ2hXYXRlck1hcmsnKTsKKyAgYXNzZXJ0X3Rocm93c19qcyhS
YW5nZUVycm9yLCAoKSA9PiBuZXcgVHJhbnNmb3JtU3RyZWFtKHVuZGVmaW5lZCwgdW5kZWZpbmVk
LCB7IGhpZ2hXYXRlck1hcms6IE5hTiB9KSwKKyAgICAgICAgICAgICAgICAgICAnc2hvdWxkIHRo
cm93IFJhbmdlRXJyb3IgZm9yIE5hTiByZWFkYWJsZUhpZ2hXYXRlck1hcmsnKTsKK30sICdhIFJh
bmdlRXJyb3Igc2hvdWxkIGJlIHRocm93biBmb3IgYW4gaW52YWxpZCBoaWdoV2F0ZXJNYXJrJyk7
CisKK2NvbnN0IG9iamVjdFRoYXRDb252ZXJ0c1RvNDIgPSB7CisgIHRvU3RyaW5nKCkgeworICAg
IHJldHVybiAnNDInOworICB9Cit9OworCit0ZXN0KCgpID0+IHsKKyAgY29uc3QgdHMgPSBuZXcg
VHJhbnNmb3JtU3RyZWFtKHVuZGVmaW5lZCwgeyBoaWdoV2F0ZXJNYXJrOiBvYmplY3RUaGF0Q29u
dmVydHNUbzQyIH0pOworICBjb25zdCB3cml0ZXIgPSB0cy53cml0YWJsZS5nZXRXcml0ZXIoKTsK
KyAgYXNzZXJ0X2VxdWFscyh3cml0ZXIuZGVzaXJlZFNpemUsIDQyLCAnd3JpdGFibGUgSFdNIGlz
IDQyJyk7Cit9LCAnd3JpdGFibGVTdHJhdGVneSBoaWdoV2F0ZXJNYXJrIHNob3VsZCBiZSBjb252
ZXJ0ZWQgdG8gYSBudW1iZXInKTsKKwordGVzdCgoKSA9PiB7CisgIGNvbnN0IHRzID0gbmV3IFRy
YW5zZm9ybVN0cmVhbSh7CisgICAgc3RhcnQoY29udHJvbGxlcikgeworICAgICAgYXNzZXJ0X2Vx
dWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCA0MiwgJ2Rlc2lyZWRTaXplIHNob3VsZCBiZSA0
MicpOworICAgIH0KKyAgfSwgdW5kZWZpbmVkLCB7IGhpZ2hXYXRlck1hcms6IG9iamVjdFRoYXRD
b252ZXJ0c1RvNDIgfSk7Cit9LCAncmVhZGFibGVTdHJhdGVneSBoaWdoV2F0ZXJNYXJrIHNob3Vs
ZCBiZSBjb252ZXJ0ZWQgdG8gYSBudW1iZXInKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBj
b25zdCB0cyA9IG5ldyBUcmFuc2Zvcm1TdHJlYW0odW5kZWZpbmVkLCB1bmRlZmluZWQsIHsKKyAg
ICBzaXplKCkgeyByZXR1cm4gTmFOOyB9LAorICAgIGhpZ2hXYXRlck1hcms6IDEKKyAgfSk7Cisg
IGNvbnN0IHdyaXRlciA9IHRzLndyaXRhYmxlLmdldFdyaXRlcigpOworICByZXR1cm4gcHJvbWlz
ZV9yZWplY3RzX2pzKHQsIFJhbmdlRXJyb3IsIHdyaXRlci53cml0ZSgpLCAnd3JpdGUgc2hvdWxk
IHJlamVjdCcpOworfSwgJ2EgYmFkIHJlYWRhYmxlU3RyYXRlZ3kgc2l6ZSBmdW5jdGlvbiBzaG91
bGQgY2F1c2Ugd3JpdGVyLndyaXRlKCkgdG8gcmVqZWN0IG9uIGFuIGlkZW50aXR5IHRyYW5zZm9y
bScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIGNvbnN0IHRzID0gbmV3IFRyYW5zZm9ybVN0
cmVhbSh7CisgICAgdHJhbnNmb3JtKGNodW5rLCBjb250cm9sbGVyKSB7CisgICAgICAvLyBUaGlz
IGFzc2VydCBoYXMgdGhlIGltcG9ydGFudCBzaWRlLWVmZmVjdCBvZiBjYXRjaGluZyB0aGUgZXJy
b3IsIHNvIHRyYW5zZm9ybSgpIGRvZXMgbm90IHRocm93LgorICAgICAgYXNzZXJ0X3Rocm93c19q
cyhSYW5nZUVycm9yLCAoKSA9PiBjb250cm9sbGVyLmVucXVldWUoY2h1bmspLCAnZW5xdWV1ZSBz
aG91bGQgdGhyb3cnKTsKKyAgICB9CisgIH0sIHVuZGVmaW5lZCwgeworICAgIHNpemUoKSB7Cisg
ICAgICByZXR1cm4gLTE7CisgICAgfSwKKyAgICBoaWdoV2F0ZXJNYXJrOiAxCisgIH0pOworCisg
IGNvbnN0IHdyaXRlciA9IHRzLndyaXRhYmxlLmdldFdyaXRlcigpOworICByZXR1cm4gd3JpdGVy
LndyaXRlKCkudGhlbigoKSA9PiB7CisgICAgcmV0dXJuIFByb21pc2UuYWxsKFsKKyAgICAgIHBy
b21pc2VfcmVqZWN0c19qcyh0LCBSYW5nZUVycm9yLCB3cml0ZXIucmVhZHksICdyZWFkeSBzaG91
bGQgcmVqZWN0JyksCisgICAgICBwcm9taXNlX3JlamVjdHNfanModCwgUmFuZ2VFcnJvciwgd3Jp
dGVyLmNsb3NlZCwgJ2Nsb3NlZCBzaG91bGQgcmVqZWN0JyksCisgICAgICBwcm9taXNlX3JlamVj
dHNfanModCwgUmFuZ2VFcnJvciwgdHMucmVhZGFibGUuZ2V0UmVhZGVyKCkuY2xvc2VkLCAncmVh
ZGFibGUgY2xvc2VkIHNob3VsZCByZWplY3QnKQorICAgIF0pOworICB9KTsKK30sICdhIGJhZCBy
ZWFkYWJsZVN0cmF0ZWd5IHNpemUgZnVuY3Rpb24gc2hvdWxkIGVycm9yIHRoZSBzdHJlYW0gb24g
ZW5xdWV1ZSBldmVuIHdoZW4gdHJhbnNmb3JtZXIudHJhbnNmb3JtKCkgJyArCisgICAnY2F0Y2hl
cyB0aGUgZXhjZXB0aW9uJyk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvdHJhbnNmb3JtLXN0cmVhbXMvc3RyYXRlZ2llcy5h
bnkud29ya2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy9zdHJhdGVnaWVzLmFueS53b3Jr
ZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjczY2EwNzYwOGMzZWEyMDI0NjczNWM2ZjkyYTAw
ZmZjYTY5NWNiZmYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvdHJhbnNmb3JtLXN0cmVhbXMvc3RyYXRlZ2llcy5h
bnkud29ya2VyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACisKK0ZBSUwgd3JpdGFibGVT
dHJhdGVneSBoaWdoV2F0ZXJNYXJrIHNob3VsZCB3b3JrIENhbid0IGZpbmQgdmFyaWFibGU6IFRy
YW5zZm9ybVN0cmVhbQorRkFJTCByZWFkYWJsZVN0cmF0ZWd5IGhpZ2hXYXRlck1hcmsgc2hvdWxk
IHdvcmsgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIHdyaXRhYmxl
IHNob3VsZCBoYXZlIHRoZSBjb3JyZWN0IHNpemUoKSBmdW5jdGlvbiBDYW4ndCBmaW5kIHZhcmlh
YmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgZGVmYXVsdCB3cml0YWJsZSBzdHJhdGVneSBzaG91
bGQgYmUgZXF1aXZhbGVudCB0byB7IGhpZ2hXYXRlck1hcms6IDEgfSBDYW4ndCBmaW5kIHZhcmlh
YmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgZGVmYXVsdCByZWFkYWJsZSBzdHJhdGVneSBzaG91
bGQgYmUgZXF1aXZhbGVudCB0byB7IGhpZ2hXYXRlck1hcms6IDAgfSBDYW4ndCBmaW5kIHZhcmlh
YmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgYSBSYW5nZUVycm9yIHNob3VsZCBiZSB0aHJvd24g
Zm9yIGFuIGludmFsaWQgaGlnaFdhdGVyTWFyayBhc3NlcnRfdGhyb3dzX2pzOiBzaG91bGQgdGhy
b3cgUmFuZ2VFcnJvciBmb3IgbmVnYXRpdmUgd3JpdGFibGVIaWdoV2F0ZXJNYXJrIGZ1bmN0aW9u
ICIoKSA9PiBuZXcgVHJhbnNmb3JtU3RyZWFtKHVuZGVmaW5lZCwgeyBoaWdoV2F0ZXJNYXJrOiAt
MSB9KSIgdGhyZXcgb2JqZWN0ICJSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTog
VHJhbnNmb3JtU3RyZWFtIiAoIlJlZmVyZW5jZUVycm9yIikgZXhwZWN0ZWQgaW5zdGFuY2Ugb2Yg
ZnVuY3Rpb24gImZ1bmN0aW9uIFJhbmdlRXJyb3IoKSB7CisgICAgW25hdGl2ZSBjb2RlXQorfSIg
KCJSYW5nZUVycm9yIikKK0ZBSUwgd3JpdGFibGVTdHJhdGVneSBoaWdoV2F0ZXJNYXJrIHNob3Vs
ZCBiZSBjb252ZXJ0ZWQgdG8gYSBudW1iZXIgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3Jt
U3RyZWFtCitGQUlMIHJlYWRhYmxlU3RyYXRlZ3kgaGlnaFdhdGVyTWFyayBzaG91bGQgYmUgY29u
dmVydGVkIHRvIGEgbnVtYmVyIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQor
RkFJTCBhIGJhZCByZWFkYWJsZVN0cmF0ZWd5IHNpemUgZnVuY3Rpb24gc2hvdWxkIGNhdXNlIHdy
aXRlci53cml0ZSgpIHRvIHJlamVjdCBvbiBhbiBpZGVudGl0eSB0cmFuc2Zvcm0gQ2FuJ3QgZmlu
ZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIGEgYmFkIHJlYWRhYmxlU3RyYXRlZ3kg
c2l6ZSBmdW5jdGlvbiBzaG91bGQgZXJyb3IgdGhlIHN0cmVhbSBvbiBlbnF1ZXVlIGV2ZW4gd2hl
biB0cmFuc2Zvcm1lci50cmFuc2Zvcm0oKSBjYXRjaGVzIHRoZSBleGNlcHRpb24gQ2FuJ3QgZmlu
ZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy9z
dHJhdGVnaWVzLmFueS53b3JrZXIuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy9zdHJhdGVnaWVzLmFueS53
b3JrZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMzgyOTEzNTI4ZTY5M2IzYTVkNTZjNjYwYTQ1MDYwOTgw
YjU0OGMzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1zL3N0cmF0ZWdpZXMuYW55Lndv
cmtlci5odG1sCkBAIC0wLDAgKzEgQEAKKzwhLS0gVGhpcyBmaWxlIGlzIHJlcXVpcmVkIGZvciBX
ZWJLaXQgdGVzdCBpbmZyYXN0cnVjdHVyZSB0byBydW4gdGhlIHRlbXBsYXRlZCB0ZXN0IC0tPgpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy90ZXJt
aW5hdGUuYW55LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy90ZXJtaW5hdGUuYW55LWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi41YjhhNWJhOTYzZDJlOTk1OTE5NjBiNDNhY2Q2NWIxZWEzZDlh
ZDEwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1zL3Rlcm1pbmF0ZS5hbnktZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsOCBAQAorCitGQUlMIGNvbnRyb2xsZXIudGVybWluYXRlKCkgc2hv
dWxkIGVycm9yIHBpcGVUbygpIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQor
RkFJTCBjb250cm9sbGVyLnRlcm1pbmF0ZSgpIHNob3VsZCBwcmV2ZW50IHJlbWFpbmluZyBjaHVu
a3MgZnJvbSBiZWluZyBwcm9jZXNzZWQgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3Ry
ZWFtCitGQUlMIGNvbnRyb2xsZXIuZW5xdWV1ZSgpIHNob3VsZCB0aHJvdyBhZnRlciBjb250cm9s
bGVyLnRlcm1pbmF0ZSgpIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJ
TCBjb250cm9sbGVyLmVycm9yKCkgYWZ0ZXIgY29udHJvbGxlci50ZXJtaW5hdGUoKSB3aXRoIHF1
ZXVlZCBjaHVuayBzaG91bGQgZXJyb3IgdGhlIHJlYWRhYmxlIENhbid0IGZpbmQgdmFyaWFibGU6
IFRyYW5zZm9ybVN0cmVhbQorRkFJTCBjb250cm9sbGVyLmVycm9yKCkgYWZ0ZXIgY29udHJvbGxl
ci50ZXJtaW5hdGUoKSB3aXRob3V0IHF1ZXVlZCBjaHVuayBzaG91bGQgZG8gbm90aGluZyBDYW4n
dCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgY29udHJvbGxlci50ZXJtaW5h
dGUoKSBpbnNpZGUgZmx1c2goKSBzaG91bGQgbm90IHByZXZlbnQgd3JpdGVyLmNsb3NlKCkgZnJv
bSBzdWNjZWVkaW5nIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvdHJhbnNmb3JtLXN0cmVhbXMvdGVybWluYXRlLmFueS5odG1sIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1zL3Rl
cm1pbmF0ZS5hbnkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMzgyOTEzNTI4ZTY5M2IzYTVkNTZjNjYwYTQ1
MDYwOTgwYjU0OGMzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1zL3Rlcm1pbmF0ZS5h
bnkuaHRtbApAQCAtMCwwICsxIEBACis8IS0tIFRoaXMgZmlsZSBpcyByZXF1aXJlZCBmb3IgV2Vi
S2l0IHRlc3QgaW5mcmFzdHJ1Y3R1cmUgdG8gcnVuIHRoZSB0ZW1wbGF0ZWQgdGVzdCAtLT4KXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvdHJhbnNmb3JtLXN0cmVhbXMvdGVybWlu
YXRlLmFueS5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy90ZXJtaW5hdGUuYW55LmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhj
YjEwNjc5MzQ4YjUwMTVhZDc1ZmIxYTc0ZDRiNmY0YTcyNDBiMTEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvdHJh
bnNmb3JtLXN0cmVhbXMvdGVybWluYXRlLmFueS5qcwpAQCAtMCwwICsxLDEwMCBAQAorLy8gTUVU
QTogZ2xvYmFsPXdpbmRvdyx3b3JrZXIsanNzaGVsbAorLy8gTUVUQTogc2NyaXB0PS4uL3Jlc291
cmNlcy9yZWNvcmRpbmctc3RyZWFtcy5qcworLy8gTUVUQTogc2NyaXB0PS4uL3Jlc291cmNlcy90
ZXN0LXV0aWxzLmpzCisndXNlIHN0cmljdCc7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgY29u
c3QgdHMgPSByZWNvcmRpbmdUcmFuc2Zvcm1TdHJlYW0oe30sIHVuZGVmaW5lZCwgeyBoaWdoV2F0
ZXJNYXJrOiAwIH0pOworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3Rh
cnQoY29udHJvbGxlcikgeworICAgICAgY29udHJvbGxlci5lbnF1ZXVlKDApOworICAgIH0KKyAg
fSk7CisgIGxldCBwaXBlVG9SZWplY3RlZCA9IGZhbHNlOworICBjb25zdCBwaXBlVG9Qcm9taXNl
ID0gcHJvbWlzZV9yZWplY3RzX2pzKHQsIFR5cGVFcnJvciwgcnMucGlwZVRvKHRzLndyaXRhYmxl
KSwgJ3BpcGVUbyBzaG91bGQgcmVqZWN0JykudGhlbigoKSA9PiB7CisgICAgcGlwZVRvUmVqZWN0
ZWQgPSB0cnVlOworICB9KTsKKyAgcmV0dXJuIGRlbGF5KDApLnRoZW4oKCkgPT4geworICAgIGFz
c2VydF9hcnJheV9lcXVhbHModHMuZXZlbnRzLCBbXSwgJ3RyYW5zZm9ybSgpIHNob3VsZCBoYXZl
IHNlZW4gbm8gY2h1bmtzJyk7CisgICAgYXNzZXJ0X2ZhbHNlKHBpcGVUb1JlamVjdGVkLCAncGlw
ZVRvKCkgc2hvdWxkIG5vdCBoYXZlIHJlamVjdGVkIHlldCcpOworICAgIHRzLmNvbnRyb2xsZXIu
dGVybWluYXRlKCk7CisgICAgcmV0dXJuIHBpcGVUb1Byb21pc2U7CisgIH0pLnRoZW4oKCkgPT4g
eworICAgIGFzc2VydF9hcnJheV9lcXVhbHModHMuZXZlbnRzLCBbXSwgJ3RyYW5zZm9ybSgpIHNo
b3VsZCBzdGlsbCBoYXZlIHNlZW4gbm8gY2h1bmtzJyk7CisgICAgYXNzZXJ0X3RydWUocGlwZVRv
UmVqZWN0ZWQsICdwaXBlVG9SZWplY3RlZCBtdXN0IGJlIHRydWUnKTsKKyAgfSk7Cit9LCAnY29u
dHJvbGxlci50ZXJtaW5hdGUoKSBzaG91bGQgZXJyb3IgcGlwZVRvKCknKTsKKworcHJvbWlzZV90
ZXN0KHQgPT4geworICBjb25zdCB0cyA9IHJlY29yZGluZ1RyYW5zZm9ybVN0cmVhbSh7fSwgdW5k
ZWZpbmVkLCB7IGhpZ2hXYXRlck1hcms6IDEgfSk7CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxl
U3RyZWFtKHsKKyAgICBzdGFydChjb250cm9sbGVyKSB7CisgICAgICBjb250cm9sbGVyLmVucXVl
dWUoMCk7CisgICAgICBjb250cm9sbGVyLmVucXVldWUoMSk7CisgICAgfQorICB9KTsKKyAgY29u
c3QgcGlwZVRvUHJvbWlzZSA9IHJzLnBpcGVUbyh0cy53cml0YWJsZSk7CisgIHJldHVybiBkZWxh
eSgwKS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHRzLmV2ZW50cywgWyd0
cmFuc2Zvcm0nLCAwXSwgJ3RyYW5zZm9ybSgpIHNob3VsZCBoYXZlIHNlZW4gb25lIGNodW5rJyk7
CisgICAgdHMuY29udHJvbGxlci50ZXJtaW5hdGUoKTsKKyAgICByZXR1cm4gcHJvbWlzZV9yZWpl
Y3RzX2pzKHQsIFR5cGVFcnJvciwgcGlwZVRvUHJvbWlzZSwgJ3BpcGVUbygpIHNob3VsZCByZWpl
Y3QnKTsKKyAgfSkudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh0cy5ldmVu
dHMsIFsndHJhbnNmb3JtJywgMF0sICd0cmFuc2Zvcm0oKSBzaG91bGQgc3RpbGwgaGF2ZSBzZWVu
IG9ubHkgb25lIGNodW5rJyk7CisgIH0pOworfSwgJ2NvbnRyb2xsZXIudGVybWluYXRlKCkgc2hv
dWxkIHByZXZlbnQgcmVtYWluaW5nIGNodW5rcyBmcm9tIGJlaW5nIHByb2Nlc3NlZCcpOworCit0
ZXN0KCgpID0+IHsKKyAgbmV3IFRyYW5zZm9ybVN0cmVhbSh7CisgICAgc3RhcnQoY29udHJvbGxl
cikgeworICAgICAgY29udHJvbGxlci5lbnF1ZXVlKDApOworICAgICAgY29udHJvbGxlci50ZXJt
aW5hdGUoKTsKKyAgICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiBjb250cm9s
bGVyLmVucXVldWUoMSksICdlbnF1ZXVlIHNob3VsZCB0aHJvdycpOworICAgIH0KKyAgfSk7Cit9
LCAnY29udHJvbGxlci5lbnF1ZXVlKCkgc2hvdWxkIHRocm93IGFmdGVyIGNvbnRyb2xsZXIudGVy
bWluYXRlKCknKTsKKworY29uc3QgZXJyb3IxID0gbmV3IEVycm9yKCdlcnJvcjEnKTsKK2Vycm9y
MS5uYW1lID0gJ2Vycm9yMSc7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgY29uc3QgdHMgPSBu
ZXcgVHJhbnNmb3JtU3RyZWFtKHsKKyAgICBzdGFydChjb250cm9sbGVyKSB7CisgICAgICBjb250
cm9sbGVyLmVucXVldWUoMCk7CisgICAgICBjb250cm9sbGVyLnRlcm1pbmF0ZSgpOworICAgICAg
Y29udHJvbGxlci5lcnJvcihlcnJvcjEpOworICAgIH0KKyAgfSk7CisgIHJldHVybiBQcm9taXNl
LmFsbChbCisgICAgcHJvbWlzZV9yZWplY3RzX2pzKHQsIFR5cGVFcnJvciwgdHMud3JpdGFibGUu
YWJvcnQoKSwgJ2Fib3J0KCkgc2hvdWxkIHJlamVjdCB3aXRoIGEgVHlwZUVycm9yJyksCisgICAg
cHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCB0cy5yZWFkYWJsZS5jYW5jZWwoKSwg
J2NhbmNlbCgpIHNob3VsZCByZWplY3Qgd2l0aCBlcnJvcjEnKSwKKyAgICBwcm9taXNlX3JlamVj
dHNfZXhhY3RseSh0LCBlcnJvcjEsIHRzLnJlYWRhYmxlLmdldFJlYWRlcigpLmNsb3NlZCwgJ2Ns
b3NlZCBzaG91bGQgcmVqZWN0IHdpdGggZXJyb3IxJykKKyAgXSk7Cit9LCAnY29udHJvbGxlci5l
cnJvcigpIGFmdGVyIGNvbnRyb2xsZXIudGVybWluYXRlKCkgd2l0aCBxdWV1ZWQgY2h1bmsgc2hv
dWxkIGVycm9yIHRoZSByZWFkYWJsZScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIGNvbnN0
IHRzID0gbmV3IFRyYW5zZm9ybVN0cmVhbSh7CisgICAgc3RhcnQoY29udHJvbGxlcikgeworICAg
ICAgY29udHJvbGxlci50ZXJtaW5hdGUoKTsKKyAgICAgIGNvbnRyb2xsZXIuZXJyb3IoZXJyb3Ix
KTsKKyAgICB9CisgIH0pOworICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAgIHByb21pc2VfcmVq
ZWN0c19qcyh0LCBUeXBlRXJyb3IsIHRzLndyaXRhYmxlLmFib3J0KCksICdhYm9ydCgpIHNob3Vs
ZCByZWplY3Qgd2l0aCBhIFR5cGVFcnJvcicpLAorICAgIHRzLnJlYWRhYmxlLmNhbmNlbCgpLAor
ICAgIHRzLnJlYWRhYmxlLmdldFJlYWRlcigpLmNsb3NlZAorICBdKTsKK30sICdjb250cm9sbGVy
LmVycm9yKCkgYWZ0ZXIgY29udHJvbGxlci50ZXJtaW5hdGUoKSB3aXRob3V0IHF1ZXVlZCBjaHVu
ayBzaG91bGQgZG8gbm90aGluZycpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworICBjb25zdCB0
cyA9IG5ldyBUcmFuc2Zvcm1TdHJlYW0oeworICAgIGZsdXNoKGNvbnRyb2xsZXIpIHsKKyAgICAg
IGNvbnRyb2xsZXIudGVybWluYXRlKCk7CisgICAgfQorICB9KTsKKyAgY29uc3Qgd3JpdGVyID0g
dHMud3JpdGFibGUuZ2V0V3JpdGVyKCk7CisgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAgd3Jp
dGVyLmNsb3NlKCksCisgICAgd3JpdGVyLmNsb3NlZCwKKyAgICB0cy5yZWFkYWJsZS5nZXRSZWFk
ZXIoKS5jbG9zZWQKKyAgXSk7Cit9LCAnY29udHJvbGxlci50ZXJtaW5hdGUoKSBpbnNpZGUgZmx1
c2goKSBzaG91bGQgbm90IHByZXZlbnQgd3JpdGVyLmNsb3NlKCkgZnJvbSBzdWNjZWVkaW5nJyk7
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMvdHJhbnNmb3JtLXN0cmVhbXMvdGVybWluYXRlLmFueS53b3JrZXItZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
L3RyYW5zZm9ybS1zdHJlYW1zL3Rlcm1pbmF0ZS5hbnkud29ya2VyLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi41YjhhNWJhOTYzZDJlOTk1OTE5NjBiNDNhY2Q2NWIxZWEzZDlhZDEwCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
dHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1zL3Rlcm1pbmF0ZS5hbnkud29ya2VyLWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDggQEAKKworRkFJTCBjb250cm9sbGVyLnRlcm1pbmF0ZSgpIHNob3VsZCBl
cnJvciBwaXBlVG8oKSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwg
Y29udHJvbGxlci50ZXJtaW5hdGUoKSBzaG91bGQgcHJldmVudCByZW1haW5pbmcgY2h1bmtzIGZy
b20gYmVpbmcgcHJvY2Vzc2VkIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQor
RkFJTCBjb250cm9sbGVyLmVucXVldWUoKSBzaG91bGQgdGhyb3cgYWZ0ZXIgY29udHJvbGxlci50
ZXJtaW5hdGUoKSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgY29u
dHJvbGxlci5lcnJvcigpIGFmdGVyIGNvbnRyb2xsZXIudGVybWluYXRlKCkgd2l0aCBxdWV1ZWQg
Y2h1bmsgc2hvdWxkIGVycm9yIHRoZSByZWFkYWJsZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFu
c2Zvcm1TdHJlYW0KK0ZBSUwgY29udHJvbGxlci5lcnJvcigpIGFmdGVyIGNvbnRyb2xsZXIudGVy
bWluYXRlKCkgd2l0aG91dCBxdWV1ZWQgY2h1bmsgc2hvdWxkIGRvIG5vdGhpbmcgQ2FuJ3QgZmlu
ZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIGNvbnRyb2xsZXIudGVybWluYXRlKCkg
aW5zaWRlIGZsdXNoKCkgc2hvdWxkIG5vdCBwcmV2ZW50IHdyaXRlci5jbG9zZSgpIGZyb20gc3Vj
Y2VlZGluZyBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3Ry
YW5zZm9ybS1zdHJlYW1zL3Rlcm1pbmF0ZS5hbnkud29ya2VyLmh0bWwgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvdHJhbnNmb3JtLXN0cmVhbXMv
dGVybWluYXRlLmFueS53b3JrZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMzgyOTEzNTI4ZTY5M2IzYTVk
NTZjNjYwYTQ1MDYwOTgwYjU0OGMzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1zL3Rl
cm1pbmF0ZS5hbnkud29ya2VyLmh0bWwKQEAgLTAsMCArMSBAQAorPCEtLSBUaGlzIGZpbGUgaXMg
cmVxdWlyZWQgZm9yIFdlYktpdCB0ZXN0IGluZnJhc3RydWN0dXJlIHRvIHJ1biB0aGUgdGVtcGxh
dGVkIHRlc3QgLS0+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9y
bS1zdHJlYW1zL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1zL3czYy1pbXBvcnQubG9nCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjg0M2MwNWUwZGMxMTZiNjgyMDhmY2VjNjNmMWZhMTBiNWJiZDVmZGQKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMvdHJhbnNmb3JtLXN0cmVhbXMvdzNjLWltcG9ydC5sb2cKQEAgLTAsMCArMSwyNiBA
QAorVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzND
IHJlcG9zaXRvcnkuCitEbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktp
dC4KK0luc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKKwlo
dHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAorCitUaGVuIHJ1biB0aGUg
VG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAorCitE
byBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorUHJv
cGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgorTm9uZQorUHJvcGVydHkgdmFsdWVz
IHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6CitOb25lCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xpc3Qg
b2YgZmlsZXM6CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
dHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1zL2JhY2twcmVzc3VyZS5hbnkuanMKKy9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvdHJhbnNmb3JtLXN0cmVh
bXMvZXJyb3JzLmFueS5qcworL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy9mbHVzaC5hbnkuanMKKy9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvdHJhbnNmb3JtLXN0cmVh
bXMvZ2VuZXJhbC5hbnkuanMKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMvdHJhbnNmb3JtLXN0cmVhbXMvbGlwZnV6ei5hbnkuanMKKy9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvdHJhbnNmb3JtLXN0
cmVhbXMvcGF0Y2hlZC1nbG9iYWwuYW55LmpzCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1zL3Byb3BlcnRpZXMuYW55
LmpzCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
L3RyYW5zZm9ybS1zdHJlYW1zL3JlZW50cmFudC1zdHJhdGVnaWVzLmFueS5qcworL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy90cmFuc2Zvcm0tc3Ry
ZWFtcy9zdHJhdGVnaWVzLmFueS5qcworL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy90ZXJtaW5hdGUuYW55LmpzCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMvdzNjLWltcG9ydC5sb2cKaW5kZXggYmQzNWVhODg4ZTAyOWI4NmFl
YTFlNGRmZTQyMDRmZWI2YmYyYWEzZS4uMmUyM2UxOGNlOGU3ZTUyYzRhMjE5NGMzOTVmNWY1YmE4
ZDQ5YWMxZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zdHJlYW1zL3czYy1pbXBvcnQubG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93M2MtaW1wb3J0LmxvZwpAQCAtMSw3ICsx
LDcgQEAKIFRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhl
IFczQyByZXBvc2l0b3J5LgogRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBX
ZWJLaXQuCiBJbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6
Ci0JaHR0cHM6Ly9naXRodWIuY29tL3czYy93ZWItcGxhdGZvcm0tdGVzdHMKKwlodHRwczovL2dp
dGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAogCiBUaGVuIHJ1biB0aGUgVG9vbHMvU2Ny
aXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAogCkBAIC0xNCwxNiAr
MTQsNyBAQCBQcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKIE5vbmUK
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQogTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvT1dORVJTCisvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL01FVEEueW1sCiAvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL1JFQURNRS5tZAotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9ieXRlLWxlbmd0
aC1xdWV1aW5nLXN0cmF0ZWd5LmRlZGljYXRlZHdvcmtlci5odG1sCi0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL2J5dGUtbGVuZ3RoLXF1ZXVpbmct
c3RyYXRlZ3kuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy9ieXRlLWxlbmd0aC1xdWV1aW5nLXN0cmF0ZWd5LmpzCi0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL2J5dGUtbGVuZ3RoLXF1ZXVp
bmctc3RyYXRlZ3kuc2VydmljZXdvcmtlci5odHRwcy5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL2J5dGUtbGVuZ3RoLXF1ZXVpbmctc3Ry
YXRlZ3kuc2hhcmVkd29ya2VyLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMvY291bnQtcXVldWluZy1zdHJhdGVneS5kZWRpY2F0ZWR3b3Jr
ZXIuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5Lmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvY291bnQtcXVldWluZy1zdHJhdGVneS5qcwot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9jb3Vu
dC1xdWV1aW5nLXN0cmF0ZWd5LnNlcnZpY2V3b3JrZXIuaHR0cHMuaHRtbAotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9jb3VudC1xdWV1aW5nLXN0
cmF0ZWd5LnNoYXJlZHdvcmtlci5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zdHJlYW1zL2dlbmVyYXRlLXRlc3Qtd3JhcHBlcnMuanMKKy9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvaWRsaGFybmVzcy5h
bnkuanMKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvcXVldWluZy1zdHJhdGVnaWVzLmFueS5qcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvYWJv
cnRpbmcuYW55LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL2Fib3J0aW5nLmFueS1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZmE1Y2U1MDMzM2Q3ZGMwMjRiNDc0ODAxY2Q0OGViMzcxNGMzODMy
NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL2Fib3J0aW5nLmFueS1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSw3MCBAQAorQ09OU09MRSBNRVNTQUdFOiBVbmhhbmRsZWQgUHJvbWlzZSBS
ZWplY3Rpb246IHVuZGVmaW5lZAorQ09OU09MRSBNRVNTQUdFOiBVbmhhbmRsZWQgUHJvbWlzZSBS
ZWplY3Rpb246IGRvbmUKK0NPTlNPTEUgTUVTU0FHRTogVW5oYW5kbGVkIFByb21pc2UgUmVqZWN0
aW9uOiBkb25lCitDT05TT0xFIE1FU1NBR0U6IFVuaGFuZGxlZCBQcm9taXNlIFJlamVjdGlvbjog
ZG9uZQorQ09OU09MRSBNRVNTQUdFOiBVbmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rpb246IGVycm9y
MjogZXJyb3IyCitDT05TT0xFIE1FU1NBR0U6IFVuaGFuZGxlZCBQcm9taXNlIFJlamVjdGlvbjog
dW5kZWZpbmVkCitDT05TT0xFIE1FU1NBR0U6IFVuaGFuZGxlZCBQcm9taXNlIFJlamVjdGlvbjog
dW5kZWZpbmVkCitDT05TT0xFIE1FU1NBR0U6IFVuaGFuZGxlZCBQcm9taXNlIFJlamVjdGlvbjog
dW5kZWZpbmVkCitDT05TT0xFIE1FU1NBR0U6IFVuaGFuZGxlZCBQcm9taXNlIFJlamVjdGlvbjog
dW5kZWZpbmVkCitDT05TT0xFIE1FU1NBR0U6IFVuaGFuZGxlZCBQcm9taXNlIFJlamVjdGlvbjog
dW5kZWZpbmVkCitDT05TT0xFIE1FU1NBR0U6IFVuaGFuZGxlZCBQcm9taXNlIFJlamVjdGlvbjog
c3RyaW5nIGFyZ3VtZW50CisKK0hhcm5lc3MgRXJyb3IgKEZBSUwpLCBtZXNzYWdlID0gVW5oYW5k
bGVkIHJlamVjdGlvbgorCitGQUlMIEFib3J0aW5nIGEgV3JpdGFibGVTdHJlYW0gYmVmb3JlIGl0
IHN0YXJ0cyBzaG91bGQgY2F1c2UgdGhlIHdyaXRlcidzIHVuc2V0dGxlZCByZWFkeSBwcm9taXNl
IHRvIHJlamVjdCB3cy5nZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3Jp
dGVyKCknLCAnd3MuZ2V0V3JpdGVyJyBpcyB1bmRlZmluZWQpCitGQUlMIEFib3J0aW5nIGEgV3Jp
dGFibGVTdHJlYW0gc2hvdWxkIGNhdXNlIHRoZSB3cml0ZXIncyBmdWxmaWxsZWQgcmVhZHkgcHJv
bWlzZSB0byByZXNldCB0byBhIHJlamVjdGVkIG9uZSB3cy5nZXRXcml0ZXIgaXMgbm90IGEgZnVu
Y3Rpb24uIChJbiAnd3MuZ2V0V3JpdGVyKCknLCAnd3MuZ2V0V3JpdGVyJyBpcyB1bmRlZmluZWQp
CitGQUlMIGFib3J0KCkgb24gYSByZWxlYXNlZCB3cml0ZXIgcmVqZWN0cyB3cy5nZXRXcml0ZXIg
aXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3JpdGVyKCknLCAnd3MuZ2V0V3JpdGVyJyBp
cyB1bmRlZmluZWQpCitGQUlMIEFib3J0aW5nIGEgV3JpdGFibGVTdHJlYW0gaW1tZWRpYXRlbHkg
cHJldmVudHMgZnV0dXJlIHdyaXRlcyBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24g
d2l0aCB2YWx1ZTogb2JqZWN0ICJUeXBlRXJyb3I6IHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5j
dGlvbi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCki
CitGQUlMIEFib3J0aW5nIGEgV3JpdGFibGVTdHJlYW0gcHJldmVudHMgZnVydGhlciB3cml0ZXMg
YWZ0ZXIgYW55IHRoYXQgYXJlIGluIHByb2dyZXNzIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJl
amVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVFcnJvcjogd3MuZ2V0V3JpdGVyIGlzIG5v
dCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicgaXMgdW5k
ZWZpbmVkKSIKK0ZBSUwgRnVsZmlsbG1lbnQgdmFsdWUgb2Ygd3JpdGVyLmFib3J0KCkgY2FsbCBt
dXN0IGJlIHVuZGVmaW5lZCBldmVuIGlmIHRoZSB1bmRlcmx5aW5nIHNpbmsgcmV0dXJucyBhIG5v
bi11bmRlZmluZWQgdmFsdWUgd3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dz
LmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicgaXMgdW5kZWZpbmVkKQorRkFJTCBXcml0YWJs
ZVN0cmVhbSBpZiBzaW5rJ3MgYWJvcnQgdGhyb3dzLCB0aGUgcHJvbWlzZSByZXR1cm5lZCBieSB3
cml0ZXIuYWJvcnQoKSByZWplY3RzIHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKElu
ICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkKK0ZBSUwgV3Jp
dGFibGVTdHJlYW0gaWYgc2luaydzIGFib3J0IHRocm93cywgdGhlIHByb21pc2UgcmV0dXJuZWQg
YnkgbXVsdGlwbGUgd3JpdGVyLmFib3J0KClzIGlzIHRoZSBzYW1lIGFuZCByZWplY3RzIHdzLmdl
dFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRX
cml0ZXInIGlzIHVuZGVmaW5lZCkKK1BBU1MgV3JpdGFibGVTdHJlYW0gaWYgc2luaydzIGFib3J0
IHRocm93cywgdGhlIHByb21pc2UgcmV0dXJuZWQgYnkgd3MuYWJvcnQoKSByZWplY3RzIAorRkFJ
TCBXcml0YWJsZVN0cmVhbSBpZiBzaW5rJ3MgYWJvcnQgdGhyb3dzLCBmb3IgYW4gYWJvcnQgcGVy
Zm9ybWVkIGR1cmluZyBhIHdyaXRlLCB0aGUgcHJvbWlzZSByZXR1cm5lZCBieSB3cy5hYm9ydCgp
IHJlamVjdHMgd3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRl
cigpJywgJ3dzLmdldFdyaXRlcicgaXMgdW5kZWZpbmVkKQorRkFJTCBBYm9ydGluZyBhIFdyaXRh
YmxlU3RyZWFtIHBhc3NlcyB0aHJvdWdoIHRoZSBnaXZlbiByZWFzb24gd3MuZ2V0V3JpdGVyIGlz
IG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicgaXMg
dW5kZWZpbmVkKQorRkFJTCBBYm9ydGluZyBhIFdyaXRhYmxlU3RyZWFtIHB1dHMgaXQgaW4gYW4g
ZXJyb3JlZCBzdGF0ZSB3aXRoIHRoZSBlcnJvciBwYXNzZWQgdG8gYWJvcnQoKSB3cy5nZXRXcml0
ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3JpdGVyKCknLCAnd3MuZ2V0V3JpdGVy
JyBpcyB1bmRlZmluZWQpCitGQUlMIEFib3J0aW5nIGEgV3JpdGFibGVTdHJlYW0gY2F1c2VzIGFu
eSBvdXRzdGFuZGluZyB3cml0ZSgpIHByb21pc2VzIHRvIGJlIHJlamVjdGVkIHdpdGggdGhlIHJl
YXNvbiBzdXBwbGllZCB3cy5nZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0
V3JpdGVyKCknLCAnd3MuZ2V0V3JpdGVyJyBpcyB1bmRlZmluZWQpCitGQUlMIENsb3NpbmcgYnV0
IHRoZW4gaW1tZWRpYXRlbHkgYWJvcnRpbmcgYSBXcml0YWJsZVN0cmVhbSBjYXVzZXMgdGhlIHN0
cmVhbSB0byBlcnJvciB3cy5nZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0
V3JpdGVyKCknLCAnd3MuZ2V0V3JpdGVyJyBpcyB1bmRlZmluZWQpCitGQUlMIENsb3NpbmcgYSBX
cml0YWJsZVN0cmVhbSBhbmQgYWJvcnRpbmcgaXQgd2hpbGUgaXQgY2xvc2VzIGNhdXNlcyB0aGUg
c3RyZWFtIHRvIGlnbm9yZSB0aGUgYWJvcnQgYXR0ZW1wdCB3cy5nZXRXcml0ZXIgaXMgbm90IGEg
ZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3JpdGVyKCknLCAnd3MuZ2V0V3JpdGVyJyBpcyB1bmRlZmlu
ZWQpCitGQUlMIEFib3J0aW5nIGEgV3JpdGFibGVTdHJlYW0gYWZ0ZXIgaXQgaXMgY2xvc2VkIGlz
IGEgbm8tb3Agd3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRl
cigpJywgJ3dzLmdldFdyaXRlcicgaXMgdW5kZWZpbmVkKQorRkFJTCBXcml0YWJsZVN0cmVhbSBz
aG91bGQgTk9UIGNhbGwgdW5kZXJseWluZyBzaW5rJ3MgY2xvc2UgaWYgbm8gYWJvcnQgaXMgc3Vw
cGxpZWQgKGhpc3RvcmljYWwpIHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3
cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkKK0ZBSUwgcmV0dXJu
aW5nIGEgdGhlbmFibGUgZnJvbSBhYm9ydCgpIHNob3VsZCB3b3JrIHdzLmdldFdyaXRlciBpcyBu
b3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVu
ZGVmaW5lZCkKK0ZBSUwgLmNsb3NlZCBzaG91bGQgbm90IHJlc29sdmUgYmVmb3JlIGZ1bGZpbGxl
ZCB3cml0ZSgpIHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0
ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkKK0ZBSUwgLmNsb3NlZCBzaG91bGQg
bm90IHJlc29sdmUgYmVmb3JlIHJlamVjdGVkIHdyaXRlKCk7IHdyaXRlKCkgZXJyb3Igc2hvdWxk
IG5vdCBvdmVyd3JpdGUgYWJvcnQoKSBlcnJvciB3cy5nZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rp
b24uIChJbiAnd3MuZ2V0V3JpdGVyKCknLCAnd3MuZ2V0V3JpdGVyJyBpcyB1bmRlZmluZWQpCitG
QUlMIHdyaXRlcyBzaG91bGQgYmUgc2F0aXNmaWVkIGluIG9yZGVyIHdoZW4gYWJvcnRpbmcgd3Mu
Z2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdl
dFdyaXRlcicgaXMgdW5kZWZpbmVkKQorRkFJTCB3cml0ZXMgc2hvdWxkIGJlIHNhdGlzZmllZCBp
biBvcmRlciBhZnRlciByZWplY3RlZCB3cml0ZSB3aGVuIGFib3J0aW5nIHdzLmdldFdyaXRlciBp
cyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlz
IHVuZGVmaW5lZCkKK0ZBSUwgY2xvc2UoKSBzaG91bGQgcmVqZWN0IHdpdGggYWJvcnQgcmVhc29u
IHdoeSBhYm9ydCgpIGlzIGZpcnN0IGVycm9yIHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlv
bi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkKK0ZB
SUwgdW5kZXJseWluZyBhYm9ydCgpIHNob3VsZCBub3QgYmUgY2FsbGVkIHVudGlsIHVuZGVybHlp
bmcgd3JpdGUoKSBjb21wbGV0ZXMgd3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4g
J3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicgaXMgdW5kZWZpbmVkKQorRkFJTCB1bmRl
cmx5aW5nIGFib3J0KCkgc2hvdWxkIG5vdCBiZSBjYWxsZWQgaWYgdW5kZXJseWluZyBjbG9zZSgp
IGhhcyBzdGFydGVkIHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRX
cml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkKK0ZBSUwgaWYgdW5kZXJseWlu
ZyBjbG9zZSgpIGhhcyBzdGFydGVkIGFuZCB0aGVuIHJlamVjdHMsIHRoZSBhYm9ydCgpIGFuZCBj
bG9zZSgpIHByb21pc2VzIHNob3VsZCByZWplY3Qgd2l0aCB0aGUgdW5kZXJseWluZyBjbG9zZSBy
ZWplY3Rpb24gcmVhc29uIHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5n
ZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkKK0ZBSUwgYW4gYWJvcnQo
KSB0aGF0IGhhcHBlbnMgZHVyaW5nIGEgd3JpdGUoKSBzaG91bGQgdHJpZ2dlciB0aGUgdW5kZXJs
eWluZyBhYm9ydCgpIGV2ZW4gd2l0aCBhIGNsb3NlKCkgcXVldWVkIHdzLmdldFdyaXRlciBpcyBu
b3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVu
ZGVmaW5lZCkKK0ZBSUwgaWYgYSB3cml0ZXIgaXMgY3JlYXRlZCBmb3IgYSBzdHJlYW0gd2l0aCBh
IHBlbmRpbmcgYWJvcnQsIGl0cyByZWFkeSBzaG91bGQgYmUgcmVqZWN0ZWQgd2l0aCB0aGUgYWJv
cnQgZXJyb3Igd3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRl
cigpJywgJ3dzLmdldFdyaXRlcicgaXMgdW5kZWZpbmVkKQorRkFJTCB3cml0ZXIgY2xvc2UoKSBw
cm9taXNlIHNob3VsZCByZXNvbHZlIGJlZm9yZSBhYm9ydCgpIHByb21pc2Ugd3MuZ2V0V3JpdGVy
IGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicg
aXMgdW5kZWZpbmVkKQorRkFJTCB3cml0ZXIucmVhZHkgc2hvdWxkIHJlamVjdCBvbiBjb250cm9s
bGVyIGVycm9yIHdpdGhvdXQgd2FpdGluZyBmb3IgdW5kZXJseWluZyB3cml0ZSB3cy5nZXRXcml0
ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3JpdGVyKCknLCAnd3MuZ2V0V3JpdGVy
JyBpcyB1bmRlZmluZWQpCitGQUlMIHdyaXRlci5hYm9ydCgpIHdoaWxlIHRoZXJlIGlzIGFuIGlu
LWZsaWdodCB3cml0ZSwgYW5kIHRoZW4gZmluaXNoIHRoZSB3cml0ZSB3aXRoIHJlamVjdGlvbiB3
cy5nZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3JpdGVyKCknLCAnd3Mu
Z2V0V3JpdGVyJyBpcyB1bmRlZmluZWQpCitGQUlMIHdyaXRlci5hYm9ydCgpLCBjb250cm9sbGVy
LmVycm9yKCkgd2hpbGUgdGhlcmUgaXMgYW4gaW4tZmxpZ2h0IHdyaXRlLCBhbmQgdGhlbiBmaW5p
c2ggdGhlIHdyaXRlIHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRX
cml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkKK0ZBSUwgd3JpdGVyLmFib3J0
KCksIGNvbnRyb2xsZXIuZXJyb3IoKSB3aGlsZSB0aGVyZSBpcyBhbiBpbi1mbGlnaHQgY2xvc2Us
IGFuZCB0aGVuIGZpbmlzaCB0aGUgY2xvc2Ugd3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9u
LiAoSW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicgaXMgdW5kZWZpbmVkKQorRkFJ
TCBjb250cm9sbGVyLmVycm9yKCksIHdyaXRlci5hYm9ydCgpIHdoaWxlIHRoZXJlIGlzIGFuIGlu
LWZsaWdodCB3cml0ZSwgYW5kIHRoZW4gZmluaXNoIHRoZSB3cml0ZSB3cy5nZXRXcml0ZXIgaXMg
bm90IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3JpdGVyKCknLCAnd3MuZ2V0V3JpdGVyJyBpcyB1
bmRlZmluZWQpCitGQUlMIGNvbnRyb2xsZXIuZXJyb3IoKSwgd3JpdGVyLmFib3J0KCkgd2hpbGUg
dGhlcmUgaXMgYW4gaW4tZmxpZ2h0IGNsb3NlLCBhbmQgdGhlbiBmaW5pc2ggdGhlIGNsb3NlIHdz
LmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5n
ZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkKK0ZBSUwgcmVsZWFzZUxvY2soKSB3aGlsZSBhYm9ydGlu
ZyBzaG91bGQgcmVqZWN0IHRoZSBvcmlnaW5hbCBjbG9zZWQgcHJvbWlzZSB3cy5nZXRXcml0ZXIg
aXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3JpdGVyKCknLCAnd3MuZ2V0V3JpdGVyJyBp
cyB1bmRlZmluZWQpCitGQUlMIHJlbGVhc2VMb2NrKCkgZHVyaW5nIGRlbGF5ZWQgYXN5bmMgYWJv
cnQoKSBzaG91bGQgcmVqZWN0IHRoZSB3cml0ZXIuY2xvc2VkIHByb21pc2Ugd3MuZ2V0V3JpdGVy
IGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicg
aXMgdW5kZWZpbmVkKQorRkFJTCBzaW5rIGFib3J0KCkgc2hvdWxkIG5vdCBiZSBjYWxsZWQgdW50
aWwgc2luayBzdGFydCgpIGlzIGRvbmUgYXNzZXJ0X2FycmF5X2VxdWFsczogYWJvcnQoKSBzaG91
bGQgbm90IGJlIGNhbGxlZCBkdXJpbmcgc3RhcnQoKSBsZW5ndGhzIGRpZmZlciwgZXhwZWN0ZWQg
YXJyYXkgW10gbGVuZ3RoIDAsIGdvdCBbImFib3J0IiwgImRvbmUiXSBsZW5ndGggMgorRkFJTCBp
ZiBzdGFydCBhdHRlbXB0cyB0byBlcnJvciB0aGUgY29udHJvbGxlciBhZnRlciBhYm9ydCgpIGhh
cyBiZWVuIGNhbGxlZCwgdGhlbiBpdCBzaG91bGQgbG9zZSBjb250cm9sbGVyLmVycm9yIGlzIG5v
dCBhIGZ1bmN0aW9uLiAoSW4gJ2NvbnRyb2xsZXIuZXJyb3IoZXJyb3IxKScsICdjb250cm9sbGVy
LmVycm9yJyBpcyB1bmRlZmluZWQpCitQQVNTIHN0cmVhbSBhYm9ydCgpIHByb21pc2Ugc2hvdWxk
IHN0aWxsIHJlc29sdmUgaWYgc2luayBzdGFydCgpIHJlamVjdHMgCitGQUlMIHdyaXRlciBhYm9y
dCgpIGR1cmluZyBzaW5rIHN0YXJ0KCkgc2hvdWxkIHJlcGxhY2UgdGhlIHdyaXRlci5yZWFkeSBw
cm9taXNlIHN5bmNocm9ub3VzbHkgd3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4g
J3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicgaXMgdW5kZWZpbmVkKQorRkFJTCBwcm9t
aXNlcyByZXR1cm5lZCBmcm9tIG90aGVyIHdyaXRlciBtZXRob2RzIHNob3VsZCBiZSByZWplY3Rl
ZCB3aGVuIHdyaXRlciBhYm9ydCgpIGhhcHBlbnMgZHVyaW5nIHNpbmsgc3RhcnQoKSB3cy5nZXRX
cml0ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3JpdGVyKCknLCAnd3MuZ2V0V3Jp
dGVyJyBpcyB1bmRlZmluZWQpCitGQUlMIGFib3J0KCkgc2hvdWxkIHN1Y2NlZWQgZGVzcGl0ZSBy
ZWplY3Rpb24gZnJvbSB3cml0ZSB3cy5nZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAn
d3MuZ2V0V3JpdGVyKCknLCAnd3MuZ2V0V3JpdGVyJyBpcyB1bmRlZmluZWQpCitGQUlMIGFib3J0
KCkgc2hvdWxkIGJlIHJlamVjdGVkIHdpdGggdGhlIHJlamVjdGlvbiByZXR1cm5lZCBmcm9tIGNs
b3NlKCkgd3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigp
JywgJ3dzLmdldFdyaXRlcicgaXMgdW5kZWZpbmVkKQorRkFJTCBhIHJlamVjdGluZyBzaW5rLndy
aXRlKCkgc2hvdWxkIG5vdCBwcmV2ZW50IHNpbmsuYWJvcnQoKSBmcm9tIGJlaW5nIGNhbGxlZCB3
cy5nZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3JpdGVyKCknLCAnd3Mu
Z2V0V3JpdGVyJyBpcyB1bmRlZmluZWQpCitQQVNTIHdoZW4gc3RhcnQgZXJyb3JzIGFmdGVyIHN0
cmVhbSBhYm9ydCgpLCB1bmRlcmx5aW5nIHNpbmsgYWJvcnQoKSBzaG91bGQgYmUgY2FsbGVkIGFu
eXdheSAKK0ZBSUwgd2hlbiBjYWxsaW5nIGFib3J0KCkgdHdpY2Ugb24gdGhlIHNhbWUgc3RyZWFt
LCBib3RoIHNob3VsZCBnaXZlIHRoZSBzYW1lIHByb21pc2UgdGhhdCBmdWxmaWxscyB3aXRoIHVu
ZGVmaW5lZCBhc3NlcnRfZXF1YWxzOiB0aGUgcHJvbWlzZXMgbXVzdCBiZSB0aGUgc2FtZSBleHBl
Y3RlZCBvYmplY3QgIltvYmplY3QgUHJvbWlzZV0iIGJ1dCBnb3Qgb2JqZWN0ICJbb2JqZWN0IFBy
b21pc2VdIgorRkFJTCB3aGVuIGNhbGxpbmcgYWJvcnQoKSB0d2ljZSBvbiB0aGUgc2FtZSBzdHJl
YW0sIGJ1dCBzZXF1ZW50aWFsbHkgc28gc28gdGhlcmUncyBubyBwZW5kaW5nIGFib3J0IHRoZSBz
ZWNvbmQgdGltZSwgYm90aCBzaG91bGQgZnVsZmlsbCB3aXRoIHVuZGVmaW5lZCBwcm9taXNlX3Rl
c3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogdW5kZWZpbmVkCitGQUlMIGNhbGxp
bmcgYWJvcnQoKSBvbiBhbiBlcnJvcmVkIHN0cmVhbSBzaG91bGQgZnVsZmlsbCB3aXRoIHVuZGVm
aW5lZCBjLmVycm9yIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ2MuZXJyb3IoZXJyb3IxKScsICdj
LmVycm9yJyBpcyB1bmRlZmluZWQpCitGQUlMIHNpbmsgYWJvcnQoKSBzaG91bGQgbm90IGJlIGNh
bGxlZCBpZiBzdHJlYW0gd2FzIGVycm9yaW5nIGR1ZSB0byBjb250cm9sbGVyLmVycm9yKCkgYmVm
b3JlIGFib3J0KCkgd2FzIGNhbGxlZCB3cy5nZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJ
biAnd3MuZ2V0V3JpdGVyKCknLCAnd3MuZ2V0V3JpdGVyJyBpcyB1bmRlZmluZWQpCitGQUlMIHNp
bmsgYWJvcnQoKSBzaG91bGQgbm90IGJlIGNhbGxlZCBpZiBzdHJlYW0gd2FzIGVycm9yaW5nIGR1
ZSB0byBiYWQgc3RyYXRlZ3kgYmVmb3JlIGFib3J0KCkgd2FzIGNhbGxlZCB3cy5nZXRXcml0ZXIg
aXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3JpdGVyKCknLCAnd3MuZ2V0V3JpdGVyJyBp
cyB1bmRlZmluZWQpCitGQUlMIGFib3J0IHdpdGggbm8gYXJndW1lbnRzIHNob3VsZCBzZXQgdGhl
IHN0b3JlZCBlcnJvciB0byB1bmRlZmluZWQgcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0
aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiVHlwZUVycm9yOiB3cy5nZXRXcml0ZXIgaXMgbm90IGEg
ZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3JpdGVyKCknLCAnd3MuZ2V0V3JpdGVyJyBpcyB1bmRlZmlu
ZWQpIgorRkFJTCBhYm9ydCB3aXRoIGFuIHVuZGVmaW5lZCBhcmd1bWVudCBzaG91bGQgc2V0IHRo
ZSBzdG9yZWQgZXJyb3IgdG8gdW5kZWZpbmVkIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVj
dGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVFcnJvcjogd3MuZ2V0V3JpdGVyIGlzIG5vdCBh
IGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicgaXMgdW5kZWZp
bmVkKSIKK0ZBSUwgYWJvcnQgd2l0aCBhIHN0cmluZyBhcmd1bWVudCBzaG91bGQgc2V0IHRoZSBz
dG9yZWQgZXJyb3IgdG8gdGhhdCBhcmd1bWVudCBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWpl
Y3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJUeXBlRXJyb3I6IHdzLmdldFdyaXRlciBpcyBub3Qg
YSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVm
aW5lZCkiCitGQUlMIGFib3J0IG9uIGEgbG9ja2VkIHN0cmVhbSBzaG91bGQgcmVqZWN0IHdzLmdl
dFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRX
cml0ZXInIGlzIHVuZGVmaW5lZCkKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvYWJvcnRpbmcu
YW55Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9hYm9ydGluZy5hbnkuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMzgy
OTEzNTI4ZTY5M2IzYTVkNTZjNjYwYTQ1MDYwOTgwYjU0OGMzCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRh
YmxlLXN0cmVhbXMvYWJvcnRpbmcuYW55Lmh0bWwKQEAgLTAsMCArMSBAQAorPCEtLSBUaGlzIGZp
bGUgaXMgcmVxdWlyZWQgZm9yIFdlYktpdCB0ZXN0IGluZnJhc3RydWN0dXJlIHRvIHJ1biB0aGUg
dGVtcGxhdGVkIHRlc3QgLS0+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dy
aXRhYmxlLXN0cmVhbXMvYWJvcnRpbmcuYW55LmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvYWJvcnRpbmcuYW55
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjVjMDUzYmFiOTE1NzAwNzRlNDA1NWUxODBkNThiNTA2ZTFkYjdmY2QK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9hYm9ydGluZy5hbnkuanMKQEAgLTAsMCAr
MSwxMzc4IEBACisvLyBNRVRBOiBnbG9iYWw9d2luZG93LHdvcmtlcixqc3NoZWxsCisvLyBNRVRB
OiBzY3JpcHQ9Li4vcmVzb3VyY2VzL3Rlc3QtdXRpbHMuanMKKy8vIE1FVEE6IHNjcmlwdD0uLi9y
ZXNvdXJjZXMvcmVjb3JkaW5nLXN0cmVhbXMuanMKKyd1c2Ugc3RyaWN0JzsKKworY29uc3QgZXJy
b3IxID0gbmV3IEVycm9yKCdlcnJvcjEnKTsKK2Vycm9yMS5uYW1lID0gJ2Vycm9yMSc7CisKK2Nv
bnN0IGVycm9yMiA9IG5ldyBFcnJvcignZXJyb3IyJyk7CitlcnJvcjIubmFtZSA9ICdlcnJvcjIn
OworCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIGNvbnN0IHdzID0gbmV3IFdyaXRhYmxlU3RyZWFt
KHsKKyAgICB3cml0ZTogdC51bnJlYWNoZWRfZnVuYygnd3JpdGUoKSBzaG91bGQgbm90IGJlIGNh
bGxlZCcpCisgIH0pOworCisgIGNvbnN0IHdyaXRlciA9IHdzLmdldFdyaXRlcigpOworICBjb25z
dCB3cml0ZVByb21pc2UgPSB3cml0ZXIud3JpdGUoJ2EnKTsKKworICBjb25zdCByZWFkeVByb21p
c2UgPSB3cml0ZXIucmVhZHk7CisKKyAgd3JpdGVyLmFib3J0KGVycm9yMSk7CisKKyAgYXNzZXJ0
X2VxdWFscyh3cml0ZXIucmVhZHksIHJlYWR5UHJvbWlzZSwgJ3RoZSByZWFkeSBwcm9taXNlIHBy
b3BlcnR5IHNob3VsZCBub3QgY2hhbmdlJyk7CisKKyAgcmV0dXJuIFByb21pc2UuYWxsKFsKKyAg
ICBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIHJlYWR5UHJvbWlzZSwgJ3RoZSBy
ZWFkeSBwcm9taXNlIHNob3VsZCByZWplY3Qgd2l0aCBlcnJvcjEnKSwKKyAgICBwcm9taXNlX3Jl
amVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIHdyaXRlUHJvbWlzZSwgJ3RoZSB3cml0ZSgpIHByb21p
c2Ugc2hvdWxkIHJlamVjdCB3aXRoIGVycm9yMScpCisgIF0pOworfSwgJ0Fib3J0aW5nIGEgV3Jp
dGFibGVTdHJlYW0gYmVmb3JlIGl0IHN0YXJ0cyBzaG91bGQgY2F1c2UgdGhlIHdyaXRlclwncyB1
bnNldHRsZWQgcmVhZHkgcHJvbWlzZSB0byByZWplY3QnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4g
eworICBjb25zdCB3cyA9IG5ldyBXcml0YWJsZVN0cmVhbSgpOworCisgIGNvbnN0IHdyaXRlciA9
IHdzLmdldFdyaXRlcigpOworICB3cml0ZXIud3JpdGUoJ2EnKTsKKworICBjb25zdCByZWFkeVBy
b21pc2UgPSB3cml0ZXIucmVhZHk7CisKKyAgcmV0dXJuIHJlYWR5UHJvbWlzZS50aGVuKCgpID0+
IHsKKyAgICB3cml0ZXIuYWJvcnQoZXJyb3IxKTsKKworICAgIGFzc2VydF9ub3RfZXF1YWxzKHdy
aXRlci5yZWFkeSwgcmVhZHlQcm9taXNlLCAndGhlIHJlYWR5IHByb21pc2UgcHJvcGVydHkgc2hv
dWxkIGNoYW5nZScpOworICAgIHJldHVybiBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJv
cjEsIHdyaXRlci5yZWFkeSwgJ3RoZSByZWFkeSBwcm9taXNlIHNob3VsZCByZWplY3Qgd2l0aCBl
cnJvcjEnKTsKKyAgfSk7Cit9LCAnQWJvcnRpbmcgYSBXcml0YWJsZVN0cmVhbSBzaG91bGQgY2F1
c2UgdGhlIHdyaXRlclwncyBmdWxmaWxsZWQgcmVhZHkgcHJvbWlzZSB0byByZXNldCB0byBhIHJl
amVjdGVkIG9uZScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIGNvbnN0IHdzID0gbmV3IFdy
aXRhYmxlU3RyZWFtKCk7CisgIGNvbnN0IHdyaXRlciA9IHdzLmdldFdyaXRlcigpOworCisgIHdy
aXRlci5yZWxlYXNlTG9jaygpOworCisgIHJldHVybiBwcm9taXNlX3JlamVjdHNfanModCwgVHlw
ZUVycm9yLCB3cml0ZXIuYWJvcnQoKSwgJ2Fib3J0KCkgc2hvdWxkIHJlamVjdCB3aXRoIGEgVHlw
ZUVycm9yJyk7Cit9LCAnYWJvcnQoKSBvbiBhIHJlbGVhc2VkIHdyaXRlciByZWplY3RzJyk7CisK
K3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVh
bSgpOworCisgIHJldHVybiBkZWxheSgwKQorICAgIC50aGVuKCgpID0+IHsKKyAgICAgIGNvbnN0
IHdyaXRlciA9IHdzLmdldFdyaXRlcigpOworCisgICAgICBjb25zdCBhYm9ydFByb21pc2UgPSB3
cml0ZXIuYWJvcnQoZXJyb3IxKTsKKworICAgICAgcmV0dXJuIFByb21pc2UuYWxsKFsKKyAgICAg
ICAgcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCB3cml0ZXIud3JpdGUoMSksICd3
cml0ZSgxKSBtdXN0IHJlamVjdCB3aXRoIGVycm9yMScpLAorICAgICAgICBwcm9taXNlX3JlamVj
dHNfZXhhY3RseSh0LCBlcnJvcjEsIHdyaXRlci53cml0ZSgyKSwgJ3dyaXRlKDIpIG11c3QgcmVq
ZWN0IHdpdGggZXJyb3IxJyksCisgICAgICAgIGFib3J0UHJvbWlzZQorICAgICAgXSk7CisgICAg
fSkKKyAgICAudGhlbigoKSA9PiB7CisgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50
cywgWydhYm9ydCcsIGVycm9yMV0pOworICAgIH0pOworfSwgJ0Fib3J0aW5nIGEgV3JpdGFibGVT
dHJlYW0gaW1tZWRpYXRlbHkgcHJldmVudHMgZnV0dXJlIHdyaXRlcycpOworCitwcm9taXNlX3Rl
c3QodCA9PiB7CisgIGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0oKTsKKyAgY29u
c3QgcmVzdWx0cyA9IFtdOworCisgIHJldHVybiBkZWxheSgwKQorICAgIC50aGVuKCgpID0+IHsK
KyAgICAgIGNvbnN0IHdyaXRlciA9IHdzLmdldFdyaXRlcigpOworCisgICAgICByZXN1bHRzLnB1
c2goCisgICAgICAgIHdyaXRlci53cml0ZSgxKSwKKyAgICAgICAgcHJvbWlzZV9yZWplY3RzX2V4
YWN0bHkodCwgZXJyb3IxLCB3cml0ZXIud3JpdGUoMiksICd3cml0ZSgyKSBtdXN0IHJlamVjdCB3
aXRoIGVycm9yMScpLAorICAgICAgICBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEs
IHdyaXRlci53cml0ZSgzKSwgJ3dyaXRlKDMpIG11c3QgcmVqZWN0IHdpdGggZXJyb3IxJykKKyAg
ICAgICk7CisKKyAgICAgIGNvbnN0IGFib3J0UHJvbWlzZSA9IHdyaXRlci5hYm9ydChlcnJvcjEp
OworCisgICAgICByZXN1bHRzLnB1c2goCisgICAgICAgIHByb21pc2VfcmVqZWN0c19leGFjdGx5
KHQsIGVycm9yMSwgd3JpdGVyLndyaXRlKDQpLCAnd3JpdGUoNCkgbXVzdCByZWplY3Qgd2l0aCBl
cnJvcjEnKSwKKyAgICAgICAgcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCB3cml0
ZXIud3JpdGUoNSksICd3cml0ZSg1KSBtdXN0IHJlamVjdCB3aXRoIGVycm9yMScpCisgICAgICAp
OworCisgICAgICByZXR1cm4gYWJvcnRQcm9taXNlOworICAgIH0pLnRoZW4oKCkgPT4geworICAg
ICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsnd3JpdGUnLCAxLCAnYWJvcnQnLCBl
cnJvcjFdKTsKKworICAgICAgcmV0dXJuIFByb21pc2UuYWxsKHJlc3VsdHMpOworICAgIH0pOwor
fSwgJ0Fib3J0aW5nIGEgV3JpdGFibGVTdHJlYW0gcHJldmVudHMgZnVydGhlciB3cml0ZXMgYWZ0
ZXIgYW55IHRoYXQgYXJlIGluIHByb2dyZXNzJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7Cisg
IGNvbnN0IHdzID0gbmV3IFdyaXRhYmxlU3RyZWFtKHsKKyAgICBhYm9ydCgpIHsKKyAgICAgIHJl
dHVybiAnSGVsbG8nOworICAgIH0KKyAgfSk7CisgIGNvbnN0IHdyaXRlciA9IHdzLmdldFdyaXRl
cigpOworCisgIHJldHVybiB3cml0ZXIuYWJvcnQoJ2EnKS50aGVuKHZhbHVlID0+IHsKKyAgICBh
c3NlcnRfZXF1YWxzKHZhbHVlLCB1bmRlZmluZWQsICdmdWxmaWxsbWVudCB2YWx1ZSBtdXN0IGJl
IHVuZGVmaW5lZCcpOworICB9KTsKK30sICdGdWxmaWxsbWVudCB2YWx1ZSBvZiB3cml0ZXIuYWJv
cnQoKSBjYWxsIG11c3QgYmUgdW5kZWZpbmVkIGV2ZW4gaWYgdGhlIHVuZGVybHlpbmcgc2luayBy
ZXR1cm5zIGEgbm9uLXVuZGVmaW5lZCAnICsKKyAgICd2YWx1ZScpOworCitwcm9taXNlX3Rlc3Qo
dCA9PiB7CisgIGNvbnN0IHdzID0gbmV3IFdyaXRhYmxlU3RyZWFtKHsKKyAgICBhYm9ydCgpIHsK
KyAgICAgIHRocm93IGVycm9yMTsKKyAgICB9CisgIH0pOworICBjb25zdCB3cml0ZXIgPSB3cy5n
ZXRXcml0ZXIoKTsKKworICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3Ix
LCB3cml0ZXIuYWJvcnQodW5kZWZpbmVkKSwKKyAgICAncmVqZWN0aW9uIHJlYXNvbiBvZiBhYm9y
dFByb21pc2UgbXVzdCBiZSB0aGUgZXJyb3IgdGhyb3duIGJ5IGFib3J0Jyk7Cit9LCAnV3JpdGFi
bGVTdHJlYW0gaWYgc2lua1wncyBhYm9ydCB0aHJvd3MsIHRoZSBwcm9taXNlIHJldHVybmVkIGJ5
IHdyaXRlci5hYm9ydCgpIHJlamVjdHMnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBjb25z
dCB3cyA9IG5ldyBXcml0YWJsZVN0cmVhbSh7CisgICAgYWJvcnQoKSB7CisgICAgICB0aHJvdyBl
cnJvcjE7CisgICAgfQorICB9KTsKKyAgY29uc3Qgd3JpdGVyID0gd3MuZ2V0V3JpdGVyKCk7CisK
KyAgY29uc3QgYWJvcnRQcm9taXNlMSA9IHdyaXRlci5hYm9ydCh1bmRlZmluZWQpOworICBjb25z
dCBhYm9ydFByb21pc2UyID0gd3JpdGVyLmFib3J0KHVuZGVmaW5lZCk7CisKKyAgYXNzZXJ0X2Vx
dWFscyhhYm9ydFByb21pc2UxLCBhYm9ydFByb21pc2UyLCAndGhlIHByb21pc2VzIG11c3QgYmUg
dGhlIHNhbWUnKTsKKworICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3Ix
LCBhYm9ydFByb21pc2UxLCAncHJvbWlzZSBtdXN0IGhhdmUgbWF0Y2hpbmcgcmVqZWN0aW9uJyk7
Cit9LCAnV3JpdGFibGVTdHJlYW0gaWYgc2lua1wncyBhYm9ydCB0aHJvd3MsIHRoZSBwcm9taXNl
IHJldHVybmVkIGJ5IG11bHRpcGxlIHdyaXRlci5hYm9ydCgpcyBpcyB0aGUgc2FtZSBhbmQgcmVq
ZWN0cycpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIGNvbnN0IHdzID0gbmV3IFdyaXRhYmxl
U3RyZWFtKHsKKyAgICBhYm9ydCgpIHsKKyAgICAgIHRocm93IGVycm9yMTsKKyAgICB9CisgIH0p
OworCisgIHJldHVybiBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIHdzLmFib3J0
KHVuZGVmaW5lZCksCisgICAgJ3JlamVjdGlvbiByZWFzb24gb2YgYWJvcnRQcm9taXNlIG11c3Qg
YmUgdGhlIGVycm9yIHRocm93biBieSBhYm9ydCcpOworfSwgJ1dyaXRhYmxlU3RyZWFtIGlmIHNp
bmtcJ3MgYWJvcnQgdGhyb3dzLCB0aGUgcHJvbWlzZSByZXR1cm5lZCBieSB3cy5hYm9ydCgpIHJl
amVjdHMnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBsZXQgcmVzb2x2ZVdyaXRlUHJvbWlz
ZTsKKyAgY29uc3Qgd3MgPSBuZXcgV3JpdGFibGVTdHJlYW0oeworICAgIHdyaXRlKCkgeworICAg
ICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4geworICAgICAgICByZXNvbHZlV3JpdGVQ
cm9taXNlID0gcmVzb2x2ZTsKKyAgICAgIH0pOworICAgIH0sCisgICAgYWJvcnQoKSB7CisgICAg
ICB0aHJvdyBlcnJvcjE7CisgICAgfQorICB9KTsKKworICBjb25zdCB3cml0ZXIgPSB3cy5nZXRX
cml0ZXIoKTsKKworICB3cml0ZXIud3JpdGUoKS5jYXRjaCgoKSA9PiB7fSk7CisgIHJldHVybiBm
bHVzaEFzeW5jRXZlbnRzKCkudGhlbigoKSA9PiB7CisgICAgY29uc3QgYWJvcnRQcm9taXNlID0g
d3JpdGVyLmFib3J0KHVuZGVmaW5lZCk7CisKKyAgICByZXNvbHZlV3JpdGVQcm9taXNlKCk7Cisg
ICAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMSwgYWJvcnRQcm9taXNl
LAorICAgICAgJ3JlamVjdGlvbiByZWFzb24gb2YgYWJvcnRQcm9taXNlIG11c3QgYmUgdGhlIGVy
cm9yIHRocm93biBieSBhYm9ydCcpOworICB9KTsKK30sICdXcml0YWJsZVN0cmVhbSBpZiBzaW5r
XCdzIGFib3J0IHRocm93cywgZm9yIGFuIGFib3J0IHBlcmZvcm1lZCBkdXJpbmcgYSB3cml0ZSwg
dGhlIHByb21pc2UgcmV0dXJuZWQgYnkgJyArCisgICAnd3MuYWJvcnQoKSByZWplY3RzJyk7CisK
K3Byb21pc2VfdGVzdCgoKSA9PiB7CisgIGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJl
YW0oKTsKKyAgY29uc3Qgd3JpdGVyID0gd3MuZ2V0V3JpdGVyKCk7CisKKyAgcmV0dXJuIHdyaXRl
ci5hYm9ydChlcnJvcjEpLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3Mu
ZXZlbnRzLCBbJ2Fib3J0JywgZXJyb3IxXSk7CisgIH0pOworfSwgJ0Fib3J0aW5nIGEgV3JpdGFi
bGVTdHJlYW0gcGFzc2VzIHRocm91Z2ggdGhlIGdpdmVuIHJlYXNvbicpOworCitwcm9taXNlX3Rl
c3QodCA9PiB7CisgIGNvbnN0IHdzID0gbmV3IFdyaXRhYmxlU3RyZWFtKCk7CisgIGNvbnN0IHdy
aXRlciA9IHdzLmdldFdyaXRlcigpOworCisgIGNvbnN0IGFib3J0UHJvbWlzZSA9IHdyaXRlci5h
Ym9ydChlcnJvcjEpOworCisgIGNvbnN0IGV2ZW50cyA9IFtdOworICB3cml0ZXIucmVhZHkuY2F0
Y2goKCkgPT4geworICAgIGV2ZW50cy5wdXNoKCdyZWFkeScpOworICB9KTsKKyAgd3JpdGVyLmNs
b3NlZC5jYXRjaCgoKSA9PiB7CisgICAgZXZlbnRzLnB1c2goJ2Nsb3NlZCcpOworICB9KTsKKwor
ICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAgIGFib3J0UHJvbWlzZSwKKyAgICBwcm9taXNlX3Jl
amVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIHdyaXRlci53cml0ZSgpLCAnd3JpdGluZyBzaG91bGQg
cmVqZWN0IHdpdGggZXJyb3IxJyksCisgICAgcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJy
b3IxLCB3cml0ZXIuY2xvc2UoKSwgJ2Nsb3Npbmcgc2hvdWxkIHJlamVjdCB3aXRoIGVycm9yMScp
LAorICAgIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMSwgd3JpdGVyLnJlYWR5LCAn
cmVhZHkgc2hvdWxkIHJlamVjdCB3aXRoIGVycm9yMScpLAorICAgIHByb21pc2VfcmVqZWN0c19l
eGFjdGx5KHQsIGVycm9yMSwgd3JpdGVyLmNsb3NlZCwgJ2Nsb3NlZCBzaG91bGQgcmVqZWN0IHdp
dGggZXJyb3IxJykKKyAgXSkudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhb
J3JlYWR5JywgJ2Nsb3NlZCddLCBldmVudHMsICdyZWFkeSBzaG91bGQgcmVqZWN0IGJlZm9yZSBj
bG9zZWQnKTsKKyAgfSk7Cit9LCAnQWJvcnRpbmcgYSBXcml0YWJsZVN0cmVhbSBwdXRzIGl0IGlu
IGFuIGVycm9yZWQgc3RhdGUgd2l0aCB0aGUgZXJyb3IgcGFzc2VkIHRvIGFib3J0KCknKTsKKwor
cHJvbWlzZV90ZXN0KHQgPT4geworICBjb25zdCB3cyA9IG5ldyBXcml0YWJsZVN0cmVhbSgpOwor
ICBjb25zdCB3cml0ZXIgPSB3cy5nZXRXcml0ZXIoKTsKKworICBjb25zdCB3cml0ZVByb21pc2Ug
PSBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIHdyaXRlci53cml0ZSgnYScpLAor
ICAgICd3cml0aW5nIHNob3VsZCByZWplY3Qgd2l0aCBlcnJvcjEnKTsKKworICB3cml0ZXIuYWJv
cnQoZXJyb3IxKTsKKworICByZXR1cm4gd3JpdGVQcm9taXNlOworfSwgJ0Fib3J0aW5nIGEgV3Jp
dGFibGVTdHJlYW0gY2F1c2VzIGFueSBvdXRzdGFuZGluZyB3cml0ZSgpIHByb21pc2VzIHRvIGJl
IHJlamVjdGVkIHdpdGggdGhlIHJlYXNvbiBzdXBwbGllZCcpOworCitwcm9taXNlX3Rlc3QodCA9
PiB7CisgIGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0oKTsKKyAgY29uc3Qgd3Jp
dGVyID0gd3MuZ2V0V3JpdGVyKCk7CisKKyAgY29uc3QgY2xvc2VQcm9taXNlID0gd3JpdGVyLmNs
b3NlKCk7CisgIGNvbnN0IGFib3J0UHJvbWlzZSA9IHdyaXRlci5hYm9ydChlcnJvcjEpOworCisg
IHJldHVybiBQcm9taXNlLmFsbChbCisgICAgcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJy
b3IxLCB3cml0ZXIuY2xvc2VkLCAnY2xvc2VkIHNob3VsZCByZWplY3Qgd2l0aCBlcnJvcjEnKSwK
KyAgICBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIGNsb3NlUHJvbWlzZSwgJ2Ns
b3NlKCkgc2hvdWxkIHJlamVjdCB3aXRoIGVycm9yMScpLAorICAgIGFib3J0UHJvbWlzZQorICBd
KS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWydhYm9y
dCcsIGVycm9yMV0pOworICB9KTsKK30sICdDbG9zaW5nIGJ1dCB0aGVuIGltbWVkaWF0ZWx5IGFi
b3J0aW5nIGEgV3JpdGFibGVTdHJlYW0gY2F1c2VzIHRoZSBzdHJlYW0gdG8gZXJyb3InKTsKKwor
cHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgbGV0IHJlc29sdmVDbG9zZTsKKyAgY29uc3Qgd3MgPSBu
ZXcgV3JpdGFibGVTdHJlYW0oeworICAgIGNsb3NlKCkgeworICAgICAgcmV0dXJuIG5ldyBQcm9t
aXNlKHJlc29sdmUgPT4geworICAgICAgICByZXNvbHZlQ2xvc2UgPSByZXNvbHZlOworICAgICAg
fSk7CisgICAgfQorICB9KTsKKyAgY29uc3Qgd3JpdGVyID0gd3MuZ2V0V3JpdGVyKCk7CisKKyAg
Y29uc3QgY2xvc2VQcm9taXNlID0gd3JpdGVyLmNsb3NlKCk7CisKKyAgcmV0dXJuIGRlbGF5KDAp
LnRoZW4oKCkgPT4geworICAgIGNvbnN0IGFib3J0UHJvbWlzZSA9IHdyaXRlci5hYm9ydChlcnJv
cjEpOworICAgIHJlc29sdmVDbG9zZSgpOworICAgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAg
ICB3cml0ZXIuY2xvc2VkLAorICAgICAgYWJvcnRQcm9taXNlLAorICAgICAgY2xvc2VQcm9taXNl
CisgICAgXSk7CisgIH0pOworfSwgJ0Nsb3NpbmcgYSBXcml0YWJsZVN0cmVhbSBhbmQgYWJvcnRp
bmcgaXQgd2hpbGUgaXQgY2xvc2VzIGNhdXNlcyB0aGUgc3RyZWFtIHRvIGlnbm9yZSB0aGUgYWJv
cnQgYXR0ZW1wdCcpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworICBjb25zdCB3cyA9IG5ldyBX
cml0YWJsZVN0cmVhbSgpOworICBjb25zdCB3cml0ZXIgPSB3cy5nZXRXcml0ZXIoKTsKKworICB3
cml0ZXIuY2xvc2UoKTsKKworICByZXR1cm4gZGVsYXkoMCkudGhlbigoKSA9PiB3cml0ZXIuYWJv
cnQoKSk7Cit9LCAnQWJvcnRpbmcgYSBXcml0YWJsZVN0cmVhbSBhZnRlciBpdCBpcyBjbG9zZWQg
aXMgYSBuby1vcCcpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIC8vIFRlc3RpbmcgdGhhdCBw
ZXIgaHR0cHM6Ly9naXRodWIuY29tL3doYXR3Zy9zdHJlYW1zL2lzc3Vlcy82MjAjaXNzdWVjb21t
ZW50LTI2MzQ4Mzk1MyB0aGUgZmFsbGJhY2sgdG8gY2xvc2Ugd2FzCisgIC8vIHJlbW92ZWQuCisK
KyAgLy8gQ2Fubm90IHVzZSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSBzaW5jZSBpdCBhbHdheXMg
aGFzIGFuIGFib3J0CisgIGxldCBjbG9zZUNhbGxlZCA9IGZhbHNlOworICBjb25zdCB3cyA9IG5l
dyBXcml0YWJsZVN0cmVhbSh7CisgICAgY2xvc2UoKSB7CisgICAgICBjbG9zZUNhbGxlZCA9IHRy
dWU7CisgICAgfQorICB9KTsKKworICBjb25zdCB3cml0ZXIgPSB3cy5nZXRXcml0ZXIoKTsKKwor
ICB3cml0ZXIuYWJvcnQoZXJyb3IxKTsKKworICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2V4YWN0
bHkodCwgZXJyb3IxLCB3cml0ZXIuY2xvc2VkLCAnY2xvc2VkIHNob3VsZCByZWplY3Qgd2l0aCBl
cnJvcjEnKS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfZmFsc2UoY2xvc2VDYWxsZWQsICdjbG9z
ZSBtdXN0IG5vdCBoYXZlIGJlZW4gY2FsbGVkJyk7CisgIH0pOworfSwgJ1dyaXRhYmxlU3RyZWFt
IHNob3VsZCBOT1QgY2FsbCB1bmRlcmx5aW5nIHNpbmtcJ3MgY2xvc2UgaWYgbm8gYWJvcnQgaXMg
c3VwcGxpZWQgKGhpc3RvcmljYWwpJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisgIGxldCB0
aGVuQ2FsbGVkID0gZmFsc2U7CisgIGNvbnN0IHdzID0gbmV3IFdyaXRhYmxlU3RyZWFtKHsKKyAg
ICBhYm9ydCgpIHsKKyAgICAgIHJldHVybiB7CisgICAgICAgIHRoZW4ob25GdWxmaWxsZWQpIHsK
KyAgICAgICAgICB0aGVuQ2FsbGVkID0gdHJ1ZTsKKyAgICAgICAgICBvbkZ1bGZpbGxlZCgpOwor
ICAgICAgICB9CisgICAgICB9OworICAgIH0KKyAgfSk7CisgIGNvbnN0IHdyaXRlciA9IHdzLmdl
dFdyaXRlcigpOworICByZXR1cm4gd3JpdGVyLmFib3J0KCkudGhlbigoKSA9PiBhc3NlcnRfdHJ1
ZSh0aGVuQ2FsbGVkLCAndGhlbigpIHNob3VsZCBiZSBjYWxsZWQnKSk7Cit9LCAncmV0dXJuaW5n
IGEgdGhlbmFibGUgZnJvbSBhYm9ydCgpIHNob3VsZCB3b3JrJyk7CisKK3Byb21pc2VfdGVzdCh0
ID0+IHsKKyAgY29uc3Qgd3MgPSBuZXcgV3JpdGFibGVTdHJlYW0oeworICAgIHdyaXRlKCkgewor
ICAgICAgcmV0dXJuIGZsdXNoQXN5bmNFdmVudHMoKTsKKyAgICB9CisgIH0pOworICBjb25zdCB3
cml0ZXIgPSB3cy5nZXRXcml0ZXIoKTsKKyAgcmV0dXJuIHdyaXRlci5yZWFkeS50aGVuKCgpID0+
IHsKKyAgICBjb25zdCB3cml0ZVByb21pc2UgPSB3cml0ZXIud3JpdGUoJ2EnKTsKKyAgICB3cml0
ZXIuYWJvcnQoZXJyb3IxKTsKKyAgICBsZXQgY2xvc2VkUmVqZWN0ZWQgPSBmYWxzZTsKKyAgICBy
ZXR1cm4gUHJvbWlzZS5hbGwoWworICAgICAgd3JpdGVQcm9taXNlLnRoZW4oKCkgPT4gYXNzZXJ0
X2ZhbHNlKGNsb3NlZFJlamVjdGVkLCAnLmNsb3NlZCBzaG91bGQgbm90IHJlc29sdmUgYmVmb3Jl
IHdyaXRlKCknKSksCisgICAgICBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIHdy
aXRlci5jbG9zZWQsICcuY2xvc2VkIHNob3VsZCByZWplY3QnKS50aGVuKCgpID0+IHsKKyAgICAg
ICAgY2xvc2VkUmVqZWN0ZWQgPSB0cnVlOworICAgICAgfSkKKyAgICBdKTsKKyAgfSk7Cit9LCAn
LmNsb3NlZCBzaG91bGQgbm90IHJlc29sdmUgYmVmb3JlIGZ1bGZpbGxlZCB3cml0ZSgpJyk7CisK
K3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgY29uc3Qgd3MgPSBuZXcgV3JpdGFibGVTdHJlYW0oewor
ICAgIHdyaXRlKCkgeworICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yMSk7CisgICAg
fQorICB9KTsKKyAgY29uc3Qgd3JpdGVyID0gd3MuZ2V0V3JpdGVyKCk7CisgIHJldHVybiB3cml0
ZXIucmVhZHkudGhlbigoKSA9PiB7CisgICAgY29uc3Qgd3JpdGVQcm9taXNlID0gd3JpdGVyLndy
aXRlKCdhJyk7CisgICAgY29uc3QgYWJvcnRQcm9taXNlID0gd3JpdGVyLmFib3J0KGVycm9yMik7
CisgICAgbGV0IGNsb3NlZFJlamVjdGVkID0gZmFsc2U7CisgICAgcmV0dXJuIFByb21pc2UuYWxs
KFsKKyAgICAgIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMSwgd3JpdGVQcm9taXNl
LCAnd3JpdGUoKSBzaG91bGQgcmVqZWN0JykKKyAgICAgICAgICAudGhlbigoKSA9PiBhc3NlcnRf
ZmFsc2UoY2xvc2VkUmVqZWN0ZWQsICcuY2xvc2VkIHNob3VsZCBub3QgcmVzb2x2ZSBiZWZvcmUg
d3JpdGUoKScpKSwKKyAgICAgIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMiwgd3Jp
dGVyLmNsb3NlZCwgJy5jbG9zZWQgc2hvdWxkIHJlamVjdCcpCisgICAgICAgICAgLnRoZW4oKCkg
PT4geworICAgICAgICAgICAgY2xvc2VkUmVqZWN0ZWQgPSB0cnVlOworICAgICAgICAgIH0pLAor
ICAgICAgYWJvcnRQcm9taXNlCisgICAgXSk7CisgIH0pOworfSwgJy5jbG9zZWQgc2hvdWxkIG5v
dCByZXNvbHZlIGJlZm9yZSByZWplY3RlZCB3cml0ZSgpOyB3cml0ZSgpIGVycm9yIHNob3VsZCBu
b3Qgb3ZlcndyaXRlIGFib3J0KCkgZXJyb3InKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBj
b25zdCB3cyA9IG5ldyBXcml0YWJsZVN0cmVhbSh7CisgICAgd3JpdGUoKSB7CisgICAgICByZXR1
cm4gZmx1c2hBc3luY0V2ZW50cygpOworICAgIH0KKyAgfSwgbmV3IENvdW50UXVldWluZ1N0cmF0
ZWd5KHsgaGlnaFdhdGVyTWFyazogNCB9KSk7CisgIGNvbnN0IHdyaXRlciA9IHdzLmdldFdyaXRl
cigpOworICByZXR1cm4gd3JpdGVyLnJlYWR5LnRoZW4oKCkgPT4geworICAgIGNvbnN0IHNldHRs
ZW1lbnRPcmRlciA9IFtdOworICAgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAgICB3cml0ZXIu
d3JpdGUoJzEnKS50aGVuKCgpID0+IHNldHRsZW1lbnRPcmRlci5wdXNoKDEpKSwKKyAgICAgIHBy
b21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMSwgd3JpdGVyLndyaXRlKCcyJyksICdmaXJz
dCBxdWV1ZWQgd3JpdGUgc2hvdWxkIGJlIHJlamVjdGVkJykKKyAgICAgICAgICAudGhlbigoKSA9
PiBzZXR0bGVtZW50T3JkZXIucHVzaCgyKSksCisgICAgICBwcm9taXNlX3JlamVjdHNfZXhhY3Rs
eSh0LCBlcnJvcjEsIHdyaXRlci53cml0ZSgnMycpLCAnc2Vjb25kIHF1ZXVlZCB3cml0ZSBzaG91
bGQgYmUgcmVqZWN0ZWQnKQorICAgICAgICAgIC50aGVuKCgpID0+IHNldHRsZW1lbnRPcmRlci5w
dXNoKDMpKSwKKyAgICAgIHdyaXRlci5hYm9ydChlcnJvcjEpCisgICAgXSkudGhlbigoKSA9PiBh
c3NlcnRfYXJyYXlfZXF1YWxzKFsxLCAyLCAzXSwgc2V0dGxlbWVudE9yZGVyLCAnd3JpdGVzIHNo
b3VsZCBiZSBzYXRpc2ZpZWQgaW4gb3JkZXInKSk7CisgIH0pOworfSwgJ3dyaXRlcyBzaG91bGQg
YmUgc2F0aXNmaWVkIGluIG9yZGVyIHdoZW4gYWJvcnRpbmcnKTsKKworcHJvbWlzZV90ZXN0KHQg
PT4geworICBjb25zdCB3cyA9IG5ldyBXcml0YWJsZVN0cmVhbSh7CisgICAgd3JpdGUoKSB7Cisg
ICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyb3IxKTsKKyAgICB9CisgIH0sIG5ldyBDb3Vu
dFF1ZXVpbmdTdHJhdGVneSh7IGhpZ2hXYXRlck1hcms6IDQgfSkpOworICBjb25zdCB3cml0ZXIg
PSB3cy5nZXRXcml0ZXIoKTsKKyAgcmV0dXJuIHdyaXRlci5yZWFkeS50aGVuKCgpID0+IHsKKyAg
ICBjb25zdCBzZXR0bGVtZW50T3JkZXIgPSBbXTsKKyAgICByZXR1cm4gUHJvbWlzZS5hbGwoWwor
ICAgICAgcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCB3cml0ZXIud3JpdGUoJzEn
KSwgJ2luLWZsaWdodCB3cml0ZSBzaG91bGQgYmUgcmVqZWN0ZWQnKQorICAgICAgICAgIC50aGVu
KCgpID0+IHNldHRsZW1lbnRPcmRlci5wdXNoKDEpKSwKKyAgICAgIHByb21pc2VfcmVqZWN0c19l
eGFjdGx5KHQsIGVycm9yMiwgd3JpdGVyLndyaXRlKCcyJyksICdmaXJzdCBxdWV1ZWQgd3JpdGUg
c2hvdWxkIGJlIHJlamVjdGVkJykKKyAgICAgICAgICAudGhlbigoKSA9PiBzZXR0bGVtZW50T3Jk
ZXIucHVzaCgyKSksCisgICAgICBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjIsIHdy
aXRlci53cml0ZSgnMycpLCAnc2Vjb25kIHF1ZXVlZCB3cml0ZSBzaG91bGQgYmUgcmVqZWN0ZWQn
KQorICAgICAgICAgIC50aGVuKCgpID0+IHNldHRsZW1lbnRPcmRlci5wdXNoKDMpKSwKKyAgICAg
IHdyaXRlci5hYm9ydChlcnJvcjIpCisgICAgXSkudGhlbigoKSA9PiBhc3NlcnRfYXJyYXlfZXF1
YWxzKFsxLCAyLCAzXSwgc2V0dGxlbWVudE9yZGVyLCAnd3JpdGVzIHNob3VsZCBiZSBzYXRpc2Zp
ZWQgaW4gb3JkZXInKSk7CisgIH0pOworfSwgJ3dyaXRlcyBzaG91bGQgYmUgc2F0aXNmaWVkIGlu
IG9yZGVyIGFmdGVyIHJlamVjdGVkIHdyaXRlIHdoZW4gYWJvcnRpbmcnKTsKKworcHJvbWlzZV90
ZXN0KHQgPT4geworICBjb25zdCB3cyA9IG5ldyBXcml0YWJsZVN0cmVhbSh7CisgICAgd3JpdGUo
KSB7CisgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyb3IxKTsKKyAgICB9CisgIH0pOwor
ICBjb25zdCB3cml0ZXIgPSB3cy5nZXRXcml0ZXIoKTsKKyAgcmV0dXJuIHdyaXRlci5yZWFkeS50
aGVuKCgpID0+IHsKKyAgICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAgICAgcHJvbWlzZV9yZWpl
Y3RzX2V4YWN0bHkodCwgZXJyb3IxLCB3cml0ZXIud3JpdGUoJ2EnKSwgJ3dyaXRlci53cml0ZSgp
IHNob3VsZCByZWplY3Qgd2l0aCBlcnJvciBmcm9tIHVuZGVybHlpbmcgd3JpdGUoKScpLAorICAg
ICAgcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IyLCB3cml0ZXIuY2xvc2UoKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICd3cml0ZXIuY2xvc2UoKSBzaG91bGQgcmVqZWN0
IHdpdGggZXJyb3IgZnJvbSB1bmRlcmx5aW5nIHdyaXRlKCknKSwKKyAgICAgIHdyaXRlci5hYm9y
dChlcnJvcjIpCisgICAgXSk7CisgIH0pOworfSwgJ2Nsb3NlKCkgc2hvdWxkIHJlamVjdCB3aXRo
IGFib3J0IHJlYXNvbiB3aHkgYWJvcnQoKSBpcyBmaXJzdCBlcnJvcicpOworCitwcm9taXNlX3Rl
c3QoKCkgPT4geworICBsZXQgcmVzb2x2ZVdyaXRlOworICBjb25zdCB3cyA9IHJlY29yZGluZ1dy
aXRhYmxlU3RyZWFtKHsKKyAgICB3cml0ZSgpIHsKKyAgICAgIHJldHVybiBuZXcgUHJvbWlzZShy
ZXNvbHZlID0+IHsKKyAgICAgICAgcmVzb2x2ZVdyaXRlID0gcmVzb2x2ZTsKKyAgICAgIH0pOwor
ICAgIH0KKyAgfSk7CisKKyAgY29uc3Qgd3JpdGVyID0gd3MuZ2V0V3JpdGVyKCk7CisgIHJldHVy
biB3cml0ZXIucmVhZHkudGhlbigoKSA9PiB7CisgICAgd3JpdGVyLndyaXRlKCdhJyk7CisgICAg
Y29uc3QgYWJvcnRQcm9taXNlID0gd3JpdGVyLmFib3J0KCdiJyk7CisgICAgcmV0dXJuIGZsdXNo
QXN5bmNFdmVudHMoKS50aGVuKCgpID0+IHsKKyAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3Mu
ZXZlbnRzLCBbJ3dyaXRlJywgJ2EnXSwgJ2Fib3J0IHNob3VsZCBub3QgYmUgY2FsbGVkIHdoaWxl
IHdyaXRlIGlzIGluLWZsaWdodCcpOworICAgICAgcmVzb2x2ZVdyaXRlKCk7CisgICAgICByZXR1
cm4gYWJvcnRQcm9taXNlLnRoZW4oKCkgPT4geworICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxz
KHdzLmV2ZW50cywgWyd3cml0ZScsICdhJywgJ2Fib3J0JywgJ2InXSwgJ2Fib3J0IHNob3VsZCBi
ZSBjYWxsZWQgYWZ0ZXIgdGhlIHdyaXRlIGZpbmlzaGVzJyk7CisgICAgICB9KTsKKyAgICB9KTsK
KyAgfSk7Cit9LCAndW5kZXJseWluZyBhYm9ydCgpIHNob3VsZCBub3QgYmUgY2FsbGVkIHVudGls
IHVuZGVybHlpbmcgd3JpdGUoKSBjb21wbGV0ZXMnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsK
KyAgbGV0IHJlc29sdmVDbG9zZTsKKyAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVh
bSh7CisgICAgY2xvc2UoKSB7CisgICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7
CisgICAgICAgIHJlc29sdmVDbG9zZSA9IHJlc29sdmU7CisgICAgICB9KTsKKyAgICB9CisgIH0p
OworCisgIGNvbnN0IHdyaXRlciA9IHdzLmdldFdyaXRlcigpOworICByZXR1cm4gd3JpdGVyLnJl
YWR5LnRoZW4oKCkgPT4geworICAgIHdyaXRlci5jbG9zZSgpOworICAgIGNvbnN0IGFib3J0UHJv
bWlzZSA9IHdyaXRlci5hYm9ydCgpOworICAgIHJldHVybiBmbHVzaEFzeW5jRXZlbnRzKCkudGhl
bigoKSA9PiB7CisgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWydjbG9zZSdd
LCAnYWJvcnQgc2hvdWxkIG5vdCBiZSBjYWxsZWQgd2hpbGUgY2xvc2UgaXMgaW4tZmxpZ2h0Jyk7
CisgICAgICByZXNvbHZlQ2xvc2UoKTsKKyAgICAgIHJldHVybiBhYm9ydFByb21pc2UudGhlbigo
KSA9PiB7CisgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ2Nsb3NlJ10s
ICdhYm9ydCBzaG91bGQgbm90IGJlIGNhbGxlZCcpOworICAgICAgfSk7CisgICAgfSk7CisgIH0p
OworfSwgJ3VuZGVybHlpbmcgYWJvcnQoKSBzaG91bGQgbm90IGJlIGNhbGxlZCBpZiB1bmRlcmx5
aW5nIGNsb3NlKCkgaGFzIHN0YXJ0ZWQnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBsZXQg
cmVqZWN0Q2xvc2U7CisgIGxldCBhYm9ydENhbGxlZCA9IGZhbHNlOworICBjb25zdCB3cyA9IG5l
dyBXcml0YWJsZVN0cmVhbSh7CisgICAgY2xvc2UoKSB7CisgICAgICByZXR1cm4gbmV3IFByb21p
c2UoKHJlc29sdmUsIHJlamVjdCkgPT4geworICAgICAgICByZWplY3RDbG9zZSA9IHJlamVjdDsK
KyAgICAgIH0pOworICAgIH0sCisgICAgYWJvcnQoKSB7CisgICAgICBhYm9ydENhbGxlZCA9IHRy
dWU7CisgICAgfQorICB9KTsKKworICBjb25zdCB3cml0ZXIgPSB3cy5nZXRXcml0ZXIoKTsKKyAg
cmV0dXJuIHdyaXRlci5yZWFkeS50aGVuKCgpID0+IHsKKyAgICBjb25zdCBjbG9zZVByb21pc2Ug
PSB3cml0ZXIuY2xvc2UoKTsKKyAgICBjb25zdCBhYm9ydFByb21pc2UgPSB3cml0ZXIuYWJvcnQo
KTsKKyAgICByZXR1cm4gZmx1c2hBc3luY0V2ZW50cygpLnRoZW4oKCkgPT4geworICAgICAgYXNz
ZXJ0X2ZhbHNlKGFib3J0Q2FsbGVkLCAndW5kZXJseWluZyBhYm9ydCBzaG91bGQgbm90IGJlIGNh
bGxlZCB3aGlsZSBjbG9zZSBpcyBpbi1mbGlnaHQnKTsKKyAgICAgIHJlamVjdENsb3NlKGVycm9y
MSk7CisgICAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCBhYm9y
dFByb21pc2UsICdhYm9ydCBzaG91bGQgcmVqZWN0IHdpdGggdGhlIHNhbWUgcmVhc29uJykudGhl
bigoKSA9PiB7CisgICAgICAgIHJldHVybiBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJv
cjEsIGNsb3NlUHJvbWlzZSwgJ2Nsb3NlIHNob3VsZCByZWplY3Qgd2l0aCB0aGUgc2FtZSByZWFz
b24nKTsKKyAgICAgIH0pLnRoZW4oKCkgPT4geworICAgICAgICBhc3NlcnRfZmFsc2UoYWJvcnRD
YWxsZWQsICd1bmRlcmx5aW5nIGFib3J0IHNob3VsZCBub3QgYmUgY2FsbGVkIGFmdGVyIGNsb3Nl
IGNvbXBsZXRlcycpOworICAgICAgfSk7CisgICAgfSk7CisgIH0pOworfSwgJ2lmIHVuZGVybHlp
bmcgY2xvc2UoKSBoYXMgc3RhcnRlZCBhbmQgdGhlbiByZWplY3RzLCB0aGUgYWJvcnQoKSBhbmQg
Y2xvc2UoKSBwcm9taXNlcyBzaG91bGQgcmVqZWN0IHdpdGggdGhlICcgKworICAgJ3VuZGVybHlp
bmcgY2xvc2UgcmVqZWN0aW9uIHJlYXNvbicpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIGxl
dCByZXNvbHZlV3JpdGU7CisgIGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0oewor
ICAgIHdyaXRlKCkgeworICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4geworICAg
ICAgICByZXNvbHZlV3JpdGUgPSByZXNvbHZlOworICAgICAgfSk7CisgICAgfQorICB9KTsKKwor
ICBjb25zdCB3cml0ZXIgPSB3cy5nZXRXcml0ZXIoKTsKKyAgcmV0dXJuIHdyaXRlci5yZWFkeS50
aGVuKCgpID0+IHsKKyAgICB3cml0ZXIud3JpdGUoJ2EnKTsKKyAgICBjb25zdCBjbG9zZVByb21p
c2UgPSB3cml0ZXIuY2xvc2UoKTsKKyAgICBjb25zdCBhYm9ydFByb21pc2UgPSB3cml0ZXIuYWJv
cnQoZXJyb3IxKTsKKworICAgIHJldHVybiBmbHVzaEFzeW5jRXZlbnRzKCkudGhlbigoKSA9PiB7
CisgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWyd3cml0ZScsICdhJ10sICdh
Ym9ydCBzaG91bGQgbm90IGJlIGNhbGxlZCB3aGlsZSB3cml0ZSBpcyBpbi1mbGlnaHQnKTsKKyAg
ICAgIHJlc29sdmVXcml0ZSgpOworICAgICAgcmV0dXJuIGFib3J0UHJvbWlzZS50aGVuKCgpID0+
IHsKKyAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsnd3JpdGUnLCAnYScs
ICdhYm9ydCcsIGVycm9yMV0sICdhYm9ydCBzaG91bGQgYmUgY2FsbGVkIGFmdGVyIHdyaXRlIGNv
bXBsZXRlcycpOworICAgICAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJy
b3IxLCBjbG9zZVByb21pc2UsICdwcm9taXNlIHJldHVybmVkIGJ5IGNsb3NlKCkgc2hvdWxkIGJl
IHJlamVjdGVkJyk7CisgICAgICB9KTsKKyAgICB9KTsKKyAgfSk7Cit9LCAnYW4gYWJvcnQoKSB0
aGF0IGhhcHBlbnMgZHVyaW5nIGEgd3JpdGUoKSBzaG91bGQgdHJpZ2dlciB0aGUgdW5kZXJseWlu
ZyBhYm9ydCgpIGV2ZW4gd2l0aCBhIGNsb3NlKCkgcXVldWVkJyk7CisKK3Byb21pc2VfdGVzdCh0
ID0+IHsKKyAgY29uc3Qgd3MgPSBuZXcgV3JpdGFibGVTdHJlYW0oeworICAgIHdyaXRlKCkgewor
ICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKCgpID0+IHt9KTsKKyAgICB9CisgIH0pOworCisgIGNv
bnN0IHdyaXRlciA9IHdzLmdldFdyaXRlcigpOworICByZXR1cm4gd3JpdGVyLnJlYWR5LnRoZW4o
KCkgPT4geworICAgIHdyaXRlci53cml0ZSgnYScpOworICAgIHdyaXRlci5hYm9ydChlcnJvcjEp
OworICAgIHdyaXRlci5yZWxlYXNlTG9jaygpOworICAgIGNvbnN0IHdyaXRlcjIgPSB3cy5nZXRX
cml0ZXIoKTsKKyAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCB3
cml0ZXIyLnJlYWR5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmVhZHkg
b2YgdGhlIHNlY29uZCB3cml0ZXIgc2hvdWxkIGJlIHJlamVjdGVkIHdpdGggZXJyb3IxJyk7Cisg
IH0pOworfSwgJ2lmIGEgd3JpdGVyIGlzIGNyZWF0ZWQgZm9yIGEgc3RyZWFtIHdpdGggYSBwZW5k
aW5nIGFib3J0LCBpdHMgcmVhZHkgc2hvdWxkIGJlIHJlamVjdGVkIHdpdGggdGhlIGFib3J0IGVy
cm9yJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisgIGNvbnN0IHdzID0gbmV3IFdyaXRhYmxl
U3RyZWFtKCk7CisgIGNvbnN0IHdyaXRlciA9IHdzLmdldFdyaXRlcigpOworICByZXR1cm4gd3Jp
dGVyLnJlYWR5LnRoZW4oKCkgPT4geworICAgIGNvbnN0IGNsb3NlUHJvbWlzZSA9IHdyaXRlci5j
bG9zZSgpOworICAgIGNvbnN0IGFib3J0UHJvbWlzZSA9IHdyaXRlci5hYm9ydCgpOworICAgIGNv
bnN0IGV2ZW50cyA9IFtdOworICAgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAgICBjbG9zZVBy
b21pc2UudGhlbigoKSA9PiB7IGV2ZW50cy5wdXNoKCdjbG9zZScpOyB9KSwKKyAgICAgIGFib3J0
UHJvbWlzZS50aGVuKCgpID0+IHsgZXZlbnRzLnB1c2goJ2Fib3J0Jyk7IH0pCisgICAgXSkudGhl
bigoKSA9PiB7CisgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGV2ZW50cywgWydjbG9zZScsICdh
Ym9ydCddKTsKKyAgICB9KTsKKyAgfSk7Cit9LCAnd3JpdGVyIGNsb3NlKCkgcHJvbWlzZSBzaG91
bGQgcmVzb2x2ZSBiZWZvcmUgYWJvcnQoKSBwcm9taXNlJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+
IHsKKyAgY29uc3Qgd3MgPSBuZXcgV3JpdGFibGVTdHJlYW0oeworICAgIHdyaXRlKGNodW5rLCBj
b250cm9sbGVyKSB7CisgICAgICBjb250cm9sbGVyLmVycm9yKGVycm9yMSk7CisgICAgICByZXR1
cm4gbmV3IFByb21pc2UoKCkgPT4ge30pOworICAgIH0KKyAgfSk7CisgIGNvbnN0IHdyaXRlciA9
IHdzLmdldFdyaXRlcigpOworICByZXR1cm4gd3JpdGVyLnJlYWR5LnRoZW4oKCkgPT4geworICAg
IHdyaXRlci53cml0ZSgnYScpOworICAgIHJldHVybiBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0
LCBlcnJvcjEsIHdyaXRlci5yZWFkeSwgJ3dyaXRlci5yZWFkeSBzaG91bGQgcmVqZWN0Jyk7Cisg
IH0pOworfSwgJ3dyaXRlci5yZWFkeSBzaG91bGQgcmVqZWN0IG9uIGNvbnRyb2xsZXIgZXJyb3Ig
d2l0aG91dCB3YWl0aW5nIGZvciB1bmRlcmx5aW5nIHdyaXRlJyk7CisKK3Byb21pc2VfdGVzdCh0
ID0+IHsKKyAgbGV0IHJlamVjdFdyaXRlOworICBjb25zdCB3cyA9IG5ldyBXcml0YWJsZVN0cmVh
bSh7CisgICAgd3JpdGUoKSB7CisgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJl
amVjdCkgPT4geworICAgICAgICByZWplY3RXcml0ZSA9IHJlamVjdDsKKyAgICAgIH0pOworICAg
IH0KKyAgfSk7CisKKyAgbGV0IHdyaXRlUHJvbWlzZTsKKyAgbGV0IGFib3J0UHJvbWlzZTsKKwor
ICBjb25zdCBldmVudHMgPSBbXTsKKworICBjb25zdCB3cml0ZXIgPSB3cy5nZXRXcml0ZXIoKTsK
KworICB3cml0ZXIuY2xvc2VkLmNhdGNoKCgpID0+IHsKKyAgICBldmVudHMucHVzaCgnY2xvc2Vk
Jyk7CisgIH0pOworCisgIC8vIFdhaXQgZm9yIHdzIHRvIHN0YXJ0CisgIHJldHVybiBmbHVzaEFz
eW5jRXZlbnRzKCkudGhlbigoKSA9PiB7CisgICAgd3JpdGVQcm9taXNlID0gd3JpdGVyLndyaXRl
KCdhJyk7CisgICAgd3JpdGVQcm9taXNlLmNhdGNoKCgpID0+IHsKKyAgICAgIGV2ZW50cy5wdXNo
KCd3cml0ZVByb21pc2UnKTsKKyAgICB9KTsKKworICAgIGFib3J0UHJvbWlzZSA9IHdyaXRlci5h
Ym9ydChlcnJvcjEpOworICAgIGFib3J0UHJvbWlzZS50aGVuKCgpID0+IHsKKyAgICAgIGV2ZW50
cy5wdXNoKCdhYm9ydFByb21pc2UnKTsKKyAgICB9KTsKKworICAgIGNvbnN0IHdyaXRlUHJvbWlz
ZTIgPSB3cml0ZXIud3JpdGUoJ2EnKTsKKworICAgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAg
ICBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIHdyaXRlUHJvbWlzZTIsICd3cml0
ZVByb21pc2UyIG11c3QgcmVqZWN0IHdpdGggdGhlIGVycm9yIGZyb20gYWJvcnQnKSwKKyAgICAg
IHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMSwgd3JpdGVyLnJlYWR5LCAnd3JpdGVy
LnJlYWR5IG11c3QgcmVqZWN0IHdpdGggdGhlIGVycm9yIGZyb20gYWJvcnQnKSwKKyAgICAgIGZs
dXNoQXN5bmNFdmVudHMoKQorICAgIF0pOworICB9KS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRf
YXJyYXlfZXF1YWxzKGV2ZW50cywgW10sICd3cml0ZVByb21pc2UsIGFib3J0UHJvbWlzZSBhbmQg
d3JpdGVyLmNsb3NlZCBtdXN0IG5vdCBiZSByZWplY3RlZCB5ZXQnKTsKKworICAgIHJlamVjdFdy
aXRlKGVycm9yMik7CisKKyAgICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAgICAgcHJvbWlzZV9y
ZWplY3RzX2V4YWN0bHkodCwgZXJyb3IyLCB3cml0ZVByb21pc2UsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnd3JpdGVQcm9taXNlIG11c3QgcmVqZWN0IHdpdGggdGhlIGVycm9yIHJl
dHVybmVkIGZyb20gdGhlIHNpbmtcJ3Mgd3JpdGUgbWV0aG9kJyksCisgICAgICBhYm9ydFByb21p
c2UsCisgICAgICBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIHdyaXRlci5jbG9z
ZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnd3JpdGVyLmNsb3NlZCBtdXN0IHJl
amVjdCB3aXRoIHRoZSBlcnJvciBmcm9tIGFib3J0JyksCisgICAgICBmbHVzaEFzeW5jRXZlbnRz
KCkKKyAgICBdKTsKKyAgfSkudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhl
dmVudHMsIFsnd3JpdGVQcm9taXNlJywgJ2Fib3J0UHJvbWlzZScsICdjbG9zZWQnXSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICd3cml0ZVByb21pc2UsIGFib3J0UHJvbWlzZSBhbmQgd3JpdGVy
LmNsb3NlZCBtdXN0IHNldHRsZScpOworCisgICAgY29uc3Qgd3JpdGVQcm9taXNlMyA9IHdyaXRl
ci53cml0ZSgnYScpOworCisgICAgcmV0dXJuIFByb21pc2UuYWxsKFsKKyAgICAgIHByb21pc2Vf
cmVqZWN0c19leGFjdGx5KHQsIGVycm9yMSwgd3JpdGVQcm9taXNlMywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICd3cml0ZVByb21pc2UzIG11c3QgcmVqZWN0IHdpdGggdGhlIGVycm9y
IGZyb20gYWJvcnQnKSwKKyAgICAgIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMSwg
d3JpdGVyLnJlYWR5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3dyaXRlci5yZWFk
eSBtdXN0IGJlIHN0aWxsIHJlamVjdGVkIHdpdGggdGhlIGVycm9yIGluZGljYXRpbmcgYWJvcnQn
KQorICAgIF0pOworICB9KS50aGVuKCgpID0+IHsKKyAgICB3cml0ZXIucmVsZWFzZUxvY2soKTsK
KworICAgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAgICBwcm9taXNlX3JlamVjdHNfanModCwg
VHlwZUVycm9yLCB3cml0ZXIucmVhZHksCisgICAgICAgICAgICAgICAgICAgICAgJ3dyaXRlci5y
ZWFkeSBtdXN0IGJlIHJlamVjdGVkIHdpdGggYW4gZXJyb3IgaW5kaWNhdGluZyByZWxlYXNlJyks
CisgICAgICBwcm9taXNlX3JlamVjdHNfanModCwgVHlwZUVycm9yLCB3cml0ZXIuY2xvc2VkLAor
ICAgICAgICAgICAgICAgICAgICAgICd3cml0ZXIuY2xvc2VkIG11c3QgYmUgcmVqZWN0ZWQgd2l0
aCBhbiBlcnJvciBpbmRpY2F0aW5nIHJlbGVhc2UnKQorICAgIF0pOworICB9KTsKK30sICd3cml0
ZXIuYWJvcnQoKSB3aGlsZSB0aGVyZSBpcyBhbiBpbi1mbGlnaHQgd3JpdGUsIGFuZCB0aGVuIGZp
bmlzaCB0aGUgd3JpdGUgd2l0aCByZWplY3Rpb24nKTsKKworcHJvbWlzZV90ZXN0KHQgPT4gewor
ICBsZXQgcmVzb2x2ZVdyaXRlOworICBsZXQgY29udHJvbGxlcjsKKyAgY29uc3Qgd3MgPSBuZXcg
V3JpdGFibGVTdHJlYW0oeworICAgIHdyaXRlKGNodW5rLCBjKSB7CisgICAgICBjb250cm9sbGVy
ID0gYzsKKyAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKKyAgICAgICAgcmVz
b2x2ZVdyaXRlID0gcmVzb2x2ZTsKKyAgICAgIH0pOworICAgIH0KKyAgfSk7CisKKyAgbGV0IHdy
aXRlUHJvbWlzZTsKKyAgbGV0IGFib3J0UHJvbWlzZTsKKworICBjb25zdCBldmVudHMgPSBbXTsK
KworICBjb25zdCB3cml0ZXIgPSB3cy5nZXRXcml0ZXIoKTsKKworICB3cml0ZXIuY2xvc2VkLmNh
dGNoKCgpID0+IHsKKyAgICBldmVudHMucHVzaCgnY2xvc2VkJyk7CisgIH0pOworCisgIC8vIFdh
aXQgZm9yIHdzIHRvIHN0YXJ0CisgIHJldHVybiBmbHVzaEFzeW5jRXZlbnRzKCkudGhlbigoKSA9
PiB7CisgICAgd3JpdGVQcm9taXNlID0gd3JpdGVyLndyaXRlKCdhJyk7CisgICAgd3JpdGVQcm9t
aXNlLnRoZW4oKCkgPT4geworICAgICAgZXZlbnRzLnB1c2goJ3dyaXRlUHJvbWlzZScpOworICAg
IH0pOworCisgICAgYWJvcnRQcm9taXNlID0gd3JpdGVyLmFib3J0KGVycm9yMSk7CisgICAgYWJv
cnRQcm9taXNlLnRoZW4oKCkgPT4geworICAgICAgZXZlbnRzLnB1c2goJ2Fib3J0UHJvbWlzZScp
OworICAgIH0pOworCisgICAgY29uc3Qgd3JpdGVQcm9taXNlMiA9IHdyaXRlci53cml0ZSgnYScp
OworCisgICAgcmV0dXJuIFByb21pc2UuYWxsKFsKKyAgICAgIHByb21pc2VfcmVqZWN0c19leGFj
dGx5KHQsIGVycm9yMSwgd3JpdGVQcm9taXNlMiwgJ3dyaXRlUHJvbWlzZTIgbXVzdCByZWplY3Qg
d2l0aCB0aGUgZXJyb3IgZnJvbSBhYm9ydCcpLAorICAgICAgcHJvbWlzZV9yZWplY3RzX2V4YWN0
bHkodCwgZXJyb3IxLCB3cml0ZXIucmVhZHksICd3cml0ZXIucmVhZHkgbXVzdCByZWplY3Qgd2l0
aCB0aGUgZXJyb3IgZnJvbSBhYm9ydCcpLAorICAgICAgZmx1c2hBc3luY0V2ZW50cygpCisgICAg
XSk7CisgIH0pLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9hcnJheV9lcXVhbHMoZXZlbnRzLCBb
XSwgJ3dyaXRlUHJvbWlzZSwgYWJvcnRQcm9taXNlIGFuZCB3cml0ZXIuY2xvc2VkIG11c3Qgbm90
IGJlIGZ1bGZpbGxlZC9yZWplY3RlZCB5ZXQnKTsKKworICAgIC8vIFRoaXMgZXJyb3IgaXMgdG9v
IGxhdGUgdG8gY2hhbmdlIGFueXRoaW5nLiBhYm9ydCgpIGhhcyBhbHJlYWR5IGNoYW5nZWQgdGhl
IHN0cmVhbSBzdGF0ZSB0byAnZXJyb3JpbmcnLgorICAgIGNvbnRyb2xsZXIuZXJyb3IoZXJyb3Iy
KTsKKworICAgIGNvbnN0IHdyaXRlUHJvbWlzZTMgPSB3cml0ZXIud3JpdGUoJ2EnKTsKKworICAg
IHJldHVybiBQcm9taXNlLmFsbChbCisgICAgICBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBl
cnJvcjEsIHdyaXRlUHJvbWlzZTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnd3Jp
dGVQcm9taXNlMyBtdXN0IHJlamVjdCB3aXRoIHRoZSBlcnJvciBmcm9tIGFib3J0JyksCisgICAg
ICBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIHdyaXRlci5yZWFkeSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICd3cml0ZXIucmVhZHkgbXVzdCBiZSBzdGlsbCByZWpl
Y3RlZCB3aXRoIHRoZSBlcnJvciBpbmRpY2F0aW5nIGFib3J0JyksCisgICAgICBmbHVzaEFzeW5j
RXZlbnRzKCkKKyAgICBdKTsKKyAgfSkudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X2FycmF5X2Vx
dWFscygKKyAgICAgICAgZXZlbnRzLCBbXSwKKyAgICAgICAgJ3dyaXRlUHJvbWlzZSwgYWJvcnRQ
cm9taXNlIGFuZCB3cml0ZXIuY2xvc2VkIG11c3Qgbm90IGJlIGZ1bGZpbGxlZC9yZWplY3RlZCB5
ZXQgZXZlbiBhZnRlciAnICsKKyAgICAgICAgICAgICdjb250cm9sbGVyLmVycm9yKCkgY2FsbCcp
OworCisgICAgcmVzb2x2ZVdyaXRlKCk7CisKKyAgICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAg
ICAgd3JpdGVQcm9taXNlLAorICAgICAgYWJvcnRQcm9taXNlLAorICAgICAgcHJvbWlzZV9yZWpl
Y3RzX2V4YWN0bHkodCwgZXJyb3IxLCB3cml0ZXIuY2xvc2VkLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ3dyaXRlci5jbG9zZWQgbXVzdCByZWplY3Qgd2l0aCB0aGUgZXJyb3IgZnJv
bSBhYm9ydCcpLAorICAgICAgZmx1c2hBc3luY0V2ZW50cygpCisgICAgXSk7CisgIH0pLnRoZW4o
KCkgPT4geworICAgIGFzc2VydF9hcnJheV9lcXVhbHMoZXZlbnRzLCBbJ3dyaXRlUHJvbWlzZScs
ICdhYm9ydFByb21pc2UnLCAnY2xvc2VkJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAnd3Jp
dGVQcm9taXNlLCBhYm9ydFByb21pc2UgYW5kIHdyaXRlci5jbG9zZWQgbXVzdCBzZXR0bGUnKTsK
KworICAgIGNvbnN0IHdyaXRlUHJvbWlzZTQgPSB3cml0ZXIud3JpdGUoJ2EnKTsKKworICAgIHJl
dHVybiBQcm9taXNlLmFsbChbCisgICAgICB3cml0ZVByb21pc2UsCisgICAgICBwcm9taXNlX3Jl
amVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIHdyaXRlUHJvbWlzZTQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnd3JpdGVQcm9taXNlNCBtdXN0IHJlamVjdCB3aXRoIHRoZSBlcnJvciBm
cm9tIGFib3J0JyksCisgICAgICBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIHdy
aXRlci5yZWFkeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd3cml0ZXIucmVhZHkg
bXVzdCBiZSBzdGlsbCByZWplY3RlZCB3aXRoIHRoZSBlcnJvciBpbmRpY2F0aW5nIGFib3J0JykK
KyAgICBdKTsKKyAgfSkudGhlbigoKSA9PiB7CisgICAgd3JpdGVyLnJlbGVhc2VMb2NrKCk7CisK
KyAgICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAgICAgcHJvbWlzZV9yZWplY3RzX2pzKHQsIFR5
cGVFcnJvciwgd3JpdGVyLnJlYWR5LAorICAgICAgICAgICAgICAgICAgICAgICd3cml0ZXIucmVh
ZHkgbXVzdCBiZSByZWplY3RlZCB3aXRoIGFuIGVycm9yIGluZGljYXRpbmcgcmVsZWFzZScpLAor
ICAgICAgcHJvbWlzZV9yZWplY3RzX2pzKHQsIFR5cGVFcnJvciwgd3JpdGVyLmNsb3NlZCwKKyAg
ICAgICAgICAgICAgICAgICAgICAnd3JpdGVyLmNsb3NlZCBtdXN0IGJlIHJlamVjdGVkIHdpdGgg
YW4gZXJyb3IgaW5kaWNhdGluZyByZWxlYXNlJykKKyAgICBdKTsKKyAgfSk7Cit9LCAnd3JpdGVy
LmFib3J0KCksIGNvbnRyb2xsZXIuZXJyb3IoKSB3aGlsZSB0aGVyZSBpcyBhbiBpbi1mbGlnaHQg
d3JpdGUsIGFuZCB0aGVuIGZpbmlzaCB0aGUgd3JpdGUnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4g
eworICBsZXQgcmVzb2x2ZUNsb3NlOworICBsZXQgY29udHJvbGxlcjsKKyAgY29uc3Qgd3MgPSBu
ZXcgV3JpdGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGNvbnRyb2xsZXIgPSBj
OworICAgIH0sCisgICAgY2xvc2UoKSB7CisgICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2
ZSA9PiB7CisgICAgICAgIHJlc29sdmVDbG9zZSA9IHJlc29sdmU7CisgICAgICB9KTsKKyAgICB9
CisgIH0pOworCisgIGxldCBjbG9zZVByb21pc2U7CisgIGxldCBhYm9ydFByb21pc2U7CisKKyAg
Y29uc3QgZXZlbnRzID0gW107CisKKyAgY29uc3Qgd3JpdGVyID0gd3MuZ2V0V3JpdGVyKCk7CisK
KyAgd3JpdGVyLmNsb3NlZC50aGVuKCgpID0+IHsKKyAgICBldmVudHMucHVzaCgnY2xvc2VkJyk7
CisgIH0pOworCisgIC8vIFdhaXQgZm9yIHdzIHRvIHN0YXJ0CisgIHJldHVybiBmbHVzaEFzeW5j
RXZlbnRzKCkudGhlbigoKSA9PiB7CisgICAgY2xvc2VQcm9taXNlID0gd3JpdGVyLmNsb3NlKCk7
CisgICAgY2xvc2VQcm9taXNlLnRoZW4oKCkgPT4geworICAgICAgZXZlbnRzLnB1c2goJ2Nsb3Nl
UHJvbWlzZScpOworICAgIH0pOworCisgICAgYWJvcnRQcm9taXNlID0gd3JpdGVyLmFib3J0KGVy
cm9yMSk7CisgICAgYWJvcnRQcm9taXNlLnRoZW4oKCkgPT4geworICAgICAgZXZlbnRzLnB1c2go
J2Fib3J0UHJvbWlzZScpOworICAgIH0pOworCisgICAgcmV0dXJuIFByb21pc2UuYWxsKFsKKyAg
ICAgIHByb21pc2VfcmVqZWN0c19qcyh0LCBUeXBlRXJyb3IsIHdyaXRlci5jbG9zZSgpLAorICAg
ICAgICAnd3JpdGVyLmNsb3NlKCkgbXVzdCByZWplY3Qgd2l0aCBhbiBlcnJvciBpbmRpY2F0aW5n
IGFscmVhZHkgY2xvc2luZycpLAorICAgICAgcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJy
b3IxLCB3cml0ZXIucmVhZHksICd3cml0ZXIucmVhZHkgbXVzdCByZWplY3Qgd2l0aCB0aGUgZXJy
b3IgZnJvbSBhYm9ydCcpLAorICAgICAgZmx1c2hBc3luY0V2ZW50cygpCisgICAgXSk7CisgIH0p
LnRoZW4oKCkgPT4geworICAgIGFzc2VydF9hcnJheV9lcXVhbHMoZXZlbnRzLCBbXSwgJ2Nsb3Nl
UHJvbWlzZSwgYWJvcnRQcm9taXNlIGFuZCB3cml0ZXIuY2xvc2VkIG11c3Qgbm90IGJlIGZ1bGZp
bGxlZC9yZWplY3RlZCB5ZXQnKTsKKworICAgIGNvbnRyb2xsZXIuZXJyb3IoZXJyb3IyKTsKKwor
ICAgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAgICBwcm9taXNlX3JlamVjdHNfanModCwgVHlw
ZUVycm9yLCB3cml0ZXIuY2xvc2UoKSwKKyAgICAgICAgJ3dyaXRlci5jbG9zZSgpIG11c3QgcmVq
ZWN0IHdpdGggYW4gZXJyb3IgaW5kaWNhdGluZyBhbHJlYWR5IGNsb3NpbmcnKSwKKyAgICAgIHBy
b21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMSwgd3JpdGVyLnJlYWR5LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ3dyaXRlci5yZWFkeSBtdXN0IGJlIHN0aWxsIHJlamVjdGVk
IHdpdGggdGhlIGVycm9yIGluZGljYXRpbmcgYWJvcnQnKSwKKyAgICAgIGZsdXNoQXN5bmNFdmVu
dHMoKQorICAgIF0pOworICB9KS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxz
KAorICAgICAgICBldmVudHMsIFtdLAorICAgICAgICAnY2xvc2VQcm9taXNlLCBhYm9ydFByb21p
c2UgYW5kIHdyaXRlci5jbG9zZWQgbXVzdCBub3QgYmUgZnVsZmlsbGVkL3JlamVjdGVkIHlldCBl
dmVuIGFmdGVyICcgKworICAgICAgICAgICAgJ2NvbnRyb2xsZXIuZXJyb3IoKSBjYWxsJyk7CisK
KyAgICByZXNvbHZlQ2xvc2UoKTsKKworICAgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAgICBj
bG9zZVByb21pc2UsCisgICAgICBhYm9ydFByb21pc2UsCisgICAgICB3cml0ZXIuY2xvc2VkLAor
ICAgICAgZmx1c2hBc3luY0V2ZW50cygpCisgICAgXSk7CisgIH0pLnRoZW4oKCkgPT4geworICAg
IGFzc2VydF9hcnJheV9lcXVhbHMoZXZlbnRzLCBbJ2Nsb3NlUHJvbWlzZScsICdhYm9ydFByb21p
c2UnLCAnY2xvc2VkJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAnY2xvc2VkUHJvbWlzZSwg
YWJvcnRQcm9taXNlIGFuZCB3cml0ZXIuY2xvc2VkIG11c3QgZnVsZmlsbCcpOworCisgICAgcmV0
dXJuIFByb21pc2UuYWxsKFsKKyAgICAgIHByb21pc2VfcmVqZWN0c19qcyh0LCBUeXBlRXJyb3Is
IHdyaXRlci5jbG9zZSgpLAorICAgICAgICAnd3JpdGVyLmNsb3NlKCkgbXVzdCByZWplY3Qgd2l0
aCBhbiBlcnJvciBpbmRpY2F0aW5nIGFscmVhZHkgY2xvc2luZycpLAorICAgICAgcHJvbWlzZV9y
ZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCB3cml0ZXIucmVhZHksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnd3JpdGVyLnJlYWR5IG11c3QgYmUgc3RpbGwgcmVqZWN0ZWQgd2l0aCB0
aGUgZXJyb3IgaW5kaWNhdGluZyBhYm9ydCcpCisgICAgXSk7CisgIH0pLnRoZW4oKCkgPT4gewor
ICAgIHdyaXRlci5yZWxlYXNlTG9jaygpOworCisgICAgcmV0dXJuIFByb21pc2UuYWxsKFsKKyAg
ICAgIHByb21pc2VfcmVqZWN0c19qcyh0LCBUeXBlRXJyb3IsIHdyaXRlci5jbG9zZSgpLAorICAg
ICAgICAnd3JpdGVyLmNsb3NlKCkgbXVzdCByZWplY3Qgd2l0aCBhbiBlcnJvciBpbmRpY2F0aW5n
IHJlbGVhc2UnKSwKKyAgICAgIHByb21pc2VfcmVqZWN0c19qcyh0LCBUeXBlRXJyb3IsIHdyaXRl
ci5yZWFkeSwKKyAgICAgICAgICAgICAgICAgICAgICAnd3JpdGVyLnJlYWR5IG11c3QgYmUgcmVq
ZWN0ZWQgd2l0aCBhbiBlcnJvciBpbmRpY2F0aW5nIHJlbGVhc2UnKSwKKyAgICAgIHByb21pc2Vf
cmVqZWN0c19qcyh0LCBUeXBlRXJyb3IsIHdyaXRlci5jbG9zZWQsCisgICAgICAgICAgICAgICAg
ICAgICAgJ3dyaXRlci5jbG9zZWQgbXVzdCBiZSByZWplY3RlZCB3aXRoIGFuIGVycm9yIGluZGlj
YXRpbmcgcmVsZWFzZScpCisgICAgXSk7CisgIH0pOworfSwgJ3dyaXRlci5hYm9ydCgpLCBjb250
cm9sbGVyLmVycm9yKCkgd2hpbGUgdGhlcmUgaXMgYW4gaW4tZmxpZ2h0IGNsb3NlLCBhbmQgdGhl
biBmaW5pc2ggdGhlIGNsb3NlJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgbGV0IHJlc29s
dmVXcml0ZTsKKyAgbGV0IGNvbnRyb2xsZXI7CisgIGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFi
bGVTdHJlYW0oeworICAgIHdyaXRlKGNodW5rLCBjKSB7CisgICAgICBjb250cm9sbGVyID0gYzsK
KyAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKKyAgICAgICAgcmVzb2x2ZVdy
aXRlID0gcmVzb2x2ZTsKKyAgICAgIH0pOworICAgIH0KKyAgfSk7CisKKyAgbGV0IHdyaXRlUHJv
bWlzZTsKKyAgbGV0IGFib3J0UHJvbWlzZTsKKworICBjb25zdCBldmVudHMgPSBbXTsKKworICBj
b25zdCB3cml0ZXIgPSB3cy5nZXRXcml0ZXIoKTsKKworICB3cml0ZXIuY2xvc2VkLmNhdGNoKCgp
ID0+IHsKKyAgICBldmVudHMucHVzaCgnY2xvc2VkJyk7CisgIH0pOworCisgIC8vIFdhaXQgZm9y
IHdzIHRvIHN0YXJ0CisgIHJldHVybiBmbHVzaEFzeW5jRXZlbnRzKCkudGhlbigoKSA9PiB7Cisg
ICAgd3JpdGVQcm9taXNlID0gd3JpdGVyLndyaXRlKCdhJyk7CisgICAgd3JpdGVQcm9taXNlLnRo
ZW4oKCkgPT4geworICAgICAgZXZlbnRzLnB1c2goJ3dyaXRlUHJvbWlzZScpOworICAgIH0pOwor
CisgICAgY29udHJvbGxlci5lcnJvcihlcnJvcjIpOworCisgICAgY29uc3Qgd3JpdGVQcm9taXNl
MiA9IHdyaXRlci53cml0ZSgnYScpOworCisgICAgcmV0dXJuIFByb21pc2UuYWxsKFsKKyAgICAg
IHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMiwgd3JpdGVQcm9taXNlMiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICd3cml0ZVByb21pc2UyIG11c3QgcmVqZWN0IHdpdGgg
dGhlIGVycm9yIHBhc3NlZCB0byB0aGUgY29udHJvbGxlclwncyBlcnJvciBtZXRob2QnKSwKKyAg
ICAgIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMiwgd3JpdGVyLnJlYWR5LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3dyaXRlci5yZWFkeSBtdXN0IHJlamVjdCB3aXRo
IHRoZSBlcnJvciBwYXNzZWQgdG8gdGhlIGNvbnRyb2xsZXJcJ3MgZXJyb3IgbWV0aG9kJyksCisg
ICAgICBmbHVzaEFzeW5jRXZlbnRzKCkKKyAgICBdKTsKKyAgfSkudGhlbigoKSA9PiB7CisgICAg
YXNzZXJ0X2FycmF5X2VxdWFscyhldmVudHMsIFtdLCAnd3JpdGVQcm9taXNlIGFuZCB3cml0ZXIu
Y2xvc2VkIG11c3Qgbm90IGJlIGZ1bGZpbGxlZC9yZWplY3RlZCB5ZXQnKTsKKworICAgIGFib3J0
UHJvbWlzZSA9IHdyaXRlci5hYm9ydChlcnJvcjEpOworICAgIGFib3J0UHJvbWlzZS5jYXRjaCgo
KSA9PiB7CisgICAgICBldmVudHMucHVzaCgnYWJvcnRQcm9taXNlJyk7CisgICAgfSk7CisKKyAg
ICBjb25zdCB3cml0ZVByb21pc2UzID0gd3JpdGVyLndyaXRlKCdhJyk7CisKKyAgICByZXR1cm4g
UHJvbWlzZS5hbGwoWworICAgICAgcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IyLCB3
cml0ZVByb21pc2UzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3dyaXRlUHJvbWlz
ZTMgbXVzdCByZWplY3Qgd2l0aCB0aGUgZXJyb3IgcGFzc2VkIHRvIHRoZSBjb250cm9sbGVyXCdz
IGVycm9yIG1ldGhvZCcpLAorICAgICAgZmx1c2hBc3luY0V2ZW50cygpCisgICAgXSk7CisgIH0p
LnRoZW4oKCkgPT4geworICAgIGFzc2VydF9hcnJheV9lcXVhbHMoCisgICAgICAgIGV2ZW50cywg
W10sCisgICAgICAgICd3cml0ZVByb21pc2UgYW5kIHdyaXRlci5jbG9zZWQgbXVzdCBub3QgYmUg
ZnVsZmlsbGVkL3JlamVjdGVkIHlldCBldmVuIGFmdGVyIHdyaXRlci5hYm9ydCgpJyk7CisKKyAg
ICByZXNvbHZlV3JpdGUoKTsKKworICAgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAgICBwcm9t
aXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjIsIGFib3J0UHJvbWlzZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICdhYm9ydCgpIG11c3QgcmVqZWN0IHdpdGggdGhlIGVycm9yIHBh
c3NlZCB0byB0aGUgY29udHJvbGxlclwncyBlcnJvciBtZXRob2QnKSwKKyAgICAgIHByb21pc2Vf
cmVqZWN0c19leGFjdGx5KHQsIGVycm9yMiwgd3JpdGVyLmNsb3NlZCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICd3cml0ZXIuY2xvc2VkIG11c3QgcmVqZWN0IHdpdGggdGhlIGVycm9y
IHBhc3NlZCB0byB0aGUgY29udHJvbGxlclwncyBlcnJvciBtZXRob2QnKSwKKyAgICAgIGZsdXNo
QXN5bmNFdmVudHMoKQorICAgIF0pOworICB9KS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfYXJy
YXlfZXF1YWxzKGV2ZW50cywgWyd3cml0ZVByb21pc2UnLCAnYWJvcnRQcm9taXNlJywgJ2Nsb3Nl
ZCddLAorICAgICAgICAgICAgICAgICAgICAgICAgJ3dyaXRlUHJvbWlzZSwgYWJvcnRQcm9taXNl
IGFuZCB3cml0ZXIuY2xvc2VkIG11c3QgZnVsZmlsbC9yZWplY3QnKTsKKyAgICBhc3NlcnRfYXJy
YXlfZXF1YWxzKHdzLmV2ZW50cywgWyd3cml0ZScsICdhJ10sICdzaW5rIGFib3J0KCkgc2hvdWxk
IG5vdCBiZSBjYWxsZWQnKTsKKworICAgIGNvbnN0IHdyaXRlUHJvbWlzZTQgPSB3cml0ZXIud3Jp
dGUoJ2EnKTsKKworICAgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAgICB3cml0ZVByb21pc2Us
CisgICAgICBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjIsIHdyaXRlUHJvbWlzZTQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnd3JpdGVQcm9taXNlNCBtdXN0IHJlamVj
dCB3aXRoIHRoZSBlcnJvciBwYXNzZWQgdG8gdGhlIGNvbnRyb2xsZXJcJ3MgZXJyb3IgbWV0aG9k
JyksCisgICAgICBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjIsIHdyaXRlci5yZWFk
eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd3cml0ZXIucmVhZHkgbXVzdCBiZSBz
dGlsbCByZWplY3RlZCB3aXRoIHRoZSBlcnJvciBwYXNzZWQgdG8gdGhlIGNvbnRyb2xsZXJcJ3Mg
ZXJyb3IgbWV0aG9kJykKKyAgICBdKTsKKyAgfSkudGhlbigoKSA9PiB7CisgICAgd3JpdGVyLnJl
bGVhc2VMb2NrKCk7CisKKyAgICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAgICAgcHJvbWlzZV9y
ZWplY3RzX2pzKHQsIFR5cGVFcnJvciwgd3JpdGVyLnJlYWR5LAorICAgICAgICAgICAgICAgICAg
ICAgICd3cml0ZXIucmVhZHkgbXVzdCBiZSByZWplY3RlZCB3aXRoIGFuIGVycm9yIGluZGljYXRp
bmcgcmVsZWFzZScpLAorICAgICAgcHJvbWlzZV9yZWplY3RzX2pzKHQsIFR5cGVFcnJvciwgd3Jp
dGVyLmNsb3NlZCwKKyAgICAgICAgICAgICAgICAgICAgICAnd3JpdGVyLmNsb3NlZCBtdXN0IGJl
IHJlamVjdGVkIHdpdGggYW4gZXJyb3IgaW5kaWNhdGluZyByZWxlYXNlJykKKyAgICBdKTsKKyAg
fSk7Cit9LCAnY29udHJvbGxlci5lcnJvcigpLCB3cml0ZXIuYWJvcnQoKSB3aGlsZSB0aGVyZSBp
cyBhbiBpbi1mbGlnaHQgd3JpdGUsIGFuZCB0aGVuIGZpbmlzaCB0aGUgd3JpdGUnKTsKKworcHJv
bWlzZV90ZXN0KHQgPT4geworICBsZXQgcmVzb2x2ZUNsb3NlOworICBsZXQgY29udHJvbGxlcjsK
KyAgY29uc3Qgd3MgPSBuZXcgV3JpdGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAg
IGNvbnRyb2xsZXIgPSBjOworICAgIH0sCisgICAgY2xvc2UoKSB7CisgICAgICByZXR1cm4gbmV3
IFByb21pc2UocmVzb2x2ZSA9PiB7CisgICAgICAgIHJlc29sdmVDbG9zZSA9IHJlc29sdmU7Cisg
ICAgICB9KTsKKyAgICB9CisgIH0pOworCisgIGxldCBjbG9zZVByb21pc2U7CisgIGxldCBhYm9y
dFByb21pc2U7CisKKyAgY29uc3QgZXZlbnRzID0gW107CisKKyAgY29uc3Qgd3JpdGVyID0gd3Mu
Z2V0V3JpdGVyKCk7CisKKyAgd3JpdGVyLmNsb3NlZC50aGVuKCgpID0+IHsKKyAgICBldmVudHMu
cHVzaCgnY2xvc2VkJyk7CisgIH0pOworCisgIC8vIFdhaXQgZm9yIHdzIHRvIHN0YXJ0CisgIHJl
dHVybiBmbHVzaEFzeW5jRXZlbnRzKCkudGhlbigoKSA9PiB7CisgICAgY2xvc2VQcm9taXNlID0g
d3JpdGVyLmNsb3NlKCk7CisgICAgY2xvc2VQcm9taXNlLnRoZW4oKCkgPT4geworICAgICAgZXZl
bnRzLnB1c2goJ2Nsb3NlUHJvbWlzZScpOworICAgIH0pOworCisgICAgY29udHJvbGxlci5lcnJv
cihlcnJvcjIpOworCisgICAgcmV0dXJuIGZsdXNoQXN5bmNFdmVudHMoKTsKKyAgfSkudGhlbigo
KSA9PiB7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhldmVudHMsIFtdLCAnY2xvc2VQcm9taXNl
IG11c3Qgbm90IGJlIGZ1bGZpbGxlZC9yZWplY3RlZCB5ZXQnKTsKKworICAgIGFib3J0UHJvbWlz
ZSA9IHdyaXRlci5hYm9ydChlcnJvcjEpOworICAgIGFib3J0UHJvbWlzZS50aGVuKCgpID0+IHsK
KyAgICAgIGV2ZW50cy5wdXNoKCdhYm9ydFByb21pc2UnKTsKKyAgICB9KTsKKworICAgIHJldHVy
biBQcm9taXNlLmFsbChbCisgICAgICBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjIs
IHdyaXRlci5yZWFkeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd3cml0ZXIucmVh
ZHkgbXVzdCByZWplY3Qgd2l0aCB0aGUgZXJyb3IgcGFzc2VkIHRvIHRoZSBjb250cm9sbGVyXCdz
IGVycm9yIG1ldGhvZCcpLAorICAgICAgZmx1c2hBc3luY0V2ZW50cygpCisgICAgXSk7CisgIH0p
LnRoZW4oKCkgPT4geworICAgIGFzc2VydF9hcnJheV9lcXVhbHMoCisgICAgICAgIGV2ZW50cywg
W10sCisgICAgICAgICdjbG9zZVByb21pc2UgYW5kIHdyaXRlci5jbG9zZWQgbXVzdCBub3QgYmUg
ZnVsZmlsbGVkL3JlamVjdGVkIHlldCBldmVuIGFmdGVyIHdyaXRlci5hYm9ydCgpJyk7CisKKyAg
ICByZXNvbHZlQ2xvc2UoKTsKKworICAgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAgICBjbG9z
ZVByb21pc2UsCisgICAgICBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjIsIHdyaXRl
ci5yZWFkeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd3cml0ZXIucmVhZHkgbXVz
dCBiZSBzdGlsbCByZWplY3RlZCB3aXRoIHRoZSBlcnJvciBwYXNzZWQgdG8gdGhlIGNvbnRyb2xs
ZXJcJ3MgZXJyb3IgbWV0aG9kJyksCisgICAgICB3cml0ZXIuY2xvc2VkLAorICAgICAgZmx1c2hB
c3luY0V2ZW50cygpCisgICAgXSk7CisgIH0pLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9hcnJh
eV9lcXVhbHMoZXZlbnRzLCBbJ2Nsb3NlUHJvbWlzZScsICdhYm9ydFByb21pc2UnLCAnY2xvc2Vk
J10sCisgICAgICAgICAgICAgICAgICAgICAgICAnYWJvcnRQcm9taXNlLCBjbG9zZVByb21pc2Ug
YW5kIHdyaXRlci5jbG9zZWQgbXVzdCBmdWxmaWxsL3JlamVjdCcpOworICB9KS50aGVuKCgpID0+
IHsKKyAgICB3cml0ZXIucmVsZWFzZUxvY2soKTsKKworICAgIHJldHVybiBQcm9taXNlLmFsbChb
CisgICAgICBwcm9taXNlX3JlamVjdHNfanModCwgVHlwZUVycm9yLCB3cml0ZXIucmVhZHksCisg
ICAgICAgICAgICAgICAgICAgICAgJ3dyaXRlci5yZWFkeSBtdXN0IGJlIHJlamVjdGVkIHdpdGgg
YW4gZXJyb3IgaW5kaWNhdGluZyByZWxlYXNlJyksCisgICAgICBwcm9taXNlX3JlamVjdHNfanMo
dCwgVHlwZUVycm9yLCB3cml0ZXIuY2xvc2VkLAorICAgICAgICAgICAgICAgICAgICAgICd3cml0
ZXIuY2xvc2VkIG11c3QgYmUgcmVqZWN0ZWQgd2l0aCBhbiBlcnJvciBpbmRpY2F0aW5nIHJlbGVh
c2UnKQorICAgIF0pOworICB9KTsKK30sICdjb250cm9sbGVyLmVycm9yKCksIHdyaXRlci5hYm9y
dCgpIHdoaWxlIHRoZXJlIGlzIGFuIGluLWZsaWdodCBjbG9zZSwgYW5kIHRoZW4gZmluaXNoIHRo
ZSBjbG9zZScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIGxldCByZXNvbHZlV3JpdGU7Cisg
IGNvbnN0IHdzID0gbmV3IFdyaXRhYmxlU3RyZWFtKHsKKyAgICB3cml0ZSgpIHsKKyAgICAgIHJl
dHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKKyAgICAgICAgcmVzb2x2ZVdyaXRlID0gcmVz
b2x2ZTsKKyAgICAgIH0pOworICAgIH0KKyAgfSk7CisgIGNvbnN0IHdyaXRlciA9IHdzLmdldFdy
aXRlcigpOworICByZXR1cm4gd3JpdGVyLnJlYWR5LnRoZW4oKCkgPT4geworICAgIGNvbnN0IHdy
aXRlUHJvbWlzZSA9IHdyaXRlci53cml0ZSgnYScpOworICAgIGNvbnN0IGNsb3NlZCA9IHdyaXRl
ci5jbG9zZWQ7CisgICAgY29uc3QgYWJvcnRQcm9taXNlID0gd3JpdGVyLmFib3J0KCk7CisgICAg
d3JpdGVyLnJlbGVhc2VMb2NrKCk7CisgICAgcmVzb2x2ZVdyaXRlKCk7CisgICAgcmV0dXJuIFBy
b21pc2UuYWxsKFsKKyAgICAgIHdyaXRlUHJvbWlzZSwKKyAgICAgIGFib3J0UHJvbWlzZSwKKyAg
ICAgIHByb21pc2VfcmVqZWN0c19qcyh0LCBUeXBlRXJyb3IsIGNsb3NlZCwgJ2Nsb3NlZCBzaG91
bGQgcmVqZWN0JyldKTsKKyAgfSk7Cit9LCAncmVsZWFzZUxvY2soKSB3aGlsZSBhYm9ydGluZyBz
aG91bGQgcmVqZWN0IHRoZSBvcmlnaW5hbCBjbG9zZWQgcHJvbWlzZScpOworCisvLyBUT0RPKHJp
Y2VhKTogQ29uc2lkZXIgcmVtb3ZpbmcgdGhpcyB0ZXN0IGlmIGl0IGlzIG5vIGxvbmdlciB1c2Vm
dWwuCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIGxldCByZXNvbHZlV3JpdGU7CisgIGxldCByZXNv
bHZlQWJvcnQ7CisgIGxldCByZXNvbHZlQWJvcnRTdGFydGVkOworICBjb25zdCBhYm9ydFN0YXJ0
ZWQgPSBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKKyAgICByZXNvbHZlQWJvcnRTdGFydGVkID0g
cmVzb2x2ZTsKKyAgfSk7CisgIGNvbnN0IHdzID0gbmV3IFdyaXRhYmxlU3RyZWFtKHsKKyAgICB3
cml0ZSgpIHsKKyAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKKyAgICAgICAg
cmVzb2x2ZVdyaXRlID0gcmVzb2x2ZTsKKyAgICAgIH0pOworICAgIH0sCisgICAgYWJvcnQoKSB7
CisgICAgICByZXNvbHZlQWJvcnRTdGFydGVkKCk7CisgICAgICByZXR1cm4gbmV3IFByb21pc2Uo
cmVzb2x2ZSA9PiB7CisgICAgICAgIHJlc29sdmVBYm9ydCA9IHJlc29sdmU7CisgICAgICB9KTsK
KyAgICB9CisgIH0pOworICBjb25zdCB3cml0ZXIgPSB3cy5nZXRXcml0ZXIoKTsKKyAgcmV0dXJu
IHdyaXRlci5yZWFkeS50aGVuKCgpID0+IHsKKyAgICBjb25zdCB3cml0ZVByb21pc2UgPSB3cml0
ZXIud3JpdGUoJ2EnKTsKKyAgICBjb25zdCBjbG9zZWQgPSB3cml0ZXIuY2xvc2VkOworICAgIGNv
bnN0IGFib3J0UHJvbWlzZSA9IHdyaXRlci5hYm9ydCgpOworICAgIHJlc29sdmVXcml0ZSgpOwor
ICAgIHJldHVybiBhYm9ydFN0YXJ0ZWQudGhlbigoKSA9PiB7CisgICAgICB3cml0ZXIucmVsZWFz
ZUxvY2soKTsKKyAgICAgIGFzc2VydF9lcXVhbHMod3JpdGVyLmNsb3NlZCwgY2xvc2VkLCAnY2xv
c2VkIHByb21pc2Ugc2hvdWxkIG5vdCBoYXZlIGNoYW5nZWQnKTsKKyAgICAgIHJlc29sdmVBYm9y
dCgpOworICAgICAgcmV0dXJuIFByb21pc2UuYWxsKFsKKyAgICAgICAgd3JpdGVQcm9taXNlLAor
ICAgICAgICBhYm9ydFByb21pc2UsCisgICAgICAgIHByb21pc2VfcmVqZWN0c19qcyh0LCBUeXBl
RXJyb3IsIGNsb3NlZCwgJ2Nsb3NlZCBzaG91bGQgcmVqZWN0JyldKTsKKyAgICB9KTsKKyAgfSk7
Cit9LCAncmVsZWFzZUxvY2soKSBkdXJpbmcgZGVsYXllZCBhc3luYyBhYm9ydCgpIHNob3VsZCBy
ZWplY3QgdGhlIHdyaXRlci5jbG9zZWQgcHJvbWlzZScpOworCitwcm9taXNlX3Rlc3QoKCkgPT4g
eworICBsZXQgcmVzb2x2ZVN0YXJ0OworICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3Ry
ZWFtKHsKKyAgICBzdGFydCgpIHsKKyAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+
IHsKKyAgICAgICAgcmVzb2x2ZVN0YXJ0ID0gcmVzb2x2ZTsKKyAgICAgIH0pOworICAgIH0KKyAg
fSk7CisgIGNvbnN0IGFib3J0UHJvbWlzZSA9IHdzLmFib3J0KCdkb25lJyk7CisgIHJldHVybiBm
bHVzaEFzeW5jRXZlbnRzKCkudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3
cy5ldmVudHMsIFtdLCAnYWJvcnQoKSBzaG91bGQgbm90IGJlIGNhbGxlZCBkdXJpbmcgc3RhcnQo
KScpOworICAgIHJlc29sdmVTdGFydCgpOworICAgIHJldHVybiBhYm9ydFByb21pc2UudGhlbigo
KSA9PiB7CisgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWydhYm9ydCcsICdk
b25lJ10sICdhYm9ydCgpIHNob3VsZCBiZSBjYWxsZWQgYWZ0ZXIgc3RhcnQoKSBpcyBkb25lJyk7
CisgICAgfSk7CisgIH0pOworfSwgJ3NpbmsgYWJvcnQoKSBzaG91bGQgbm90IGJlIGNhbGxlZCB1
bnRpbCBzaW5rIHN0YXJ0KCkgaXMgZG9uZScpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworICBs
ZXQgcmVzb2x2ZVN0YXJ0OworICBsZXQgY29udHJvbGxlcjsKKyAgY29uc3Qgd3MgPSByZWNvcmRp
bmdXcml0YWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgY29udHJvbGxlciA9IGM7
CisgICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7CisgICAgICAgIHJlc29sdmVT
dGFydCA9IHJlc29sdmU7CisgICAgICB9KTsKKyAgICB9CisgIH0pOworICBjb25zdCBhYm9ydFBy
b21pc2UgPSB3cy5hYm9ydCgnZG9uZScpOworICBjb250cm9sbGVyLmVycm9yKGVycm9yMSk7Cisg
IHJlc29sdmVTdGFydCgpOworICByZXR1cm4gYWJvcnRQcm9taXNlLnRoZW4oKCkgPT4KKyAgICAg
IGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ2Fib3J0JywgJ2RvbmUnXSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ2Fib3J0KCkgc2hvdWxkIHN0aWxsIGJlIGNhbGxlZCBpZiBz
dGFydCgpIGVycm9ycyB0aGUgY29udHJvbGxlcicpKTsKK30sICdpZiBzdGFydCBhdHRlbXB0cyB0
byBlcnJvciB0aGUgY29udHJvbGxlciBhZnRlciBhYm9ydCgpIGhhcyBiZWVuIGNhbGxlZCwgdGhl
biBpdCBzaG91bGQgbG9zZScpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworICBjb25zdCB3cyA9
IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKHsKKyAgICBzdGFydCgpIHsKKyAgICAgIHJldHVybiBQ
cm9taXNlLnJlamVjdChlcnJvcjEpOworICAgIH0KKyAgfSk7CisgIHJldHVybiB3cy5hYm9ydCgn
ZG9uZScpLnRoZW4oKCkgPT4KKyAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBb
J2Fib3J0JywgJ2RvbmUnXSwgJ2Fib3J0KCkgc2hvdWxkIHN0aWxsIGJlIGNhbGxlZCBpZiBzdGFy
dCgpIHJlamVjdHMnKSk7Cit9LCAnc3RyZWFtIGFib3J0KCkgcHJvbWlzZSBzaG91bGQgc3RpbGwg
cmVzb2x2ZSBpZiBzaW5rIHN0YXJ0KCkgcmVqZWN0cycpOworCitwcm9taXNlX3Rlc3QodCA9PiB7
CisgIGNvbnN0IHdzID0gbmV3IFdyaXRhYmxlU3RyZWFtKCk7CisgIGNvbnN0IHdyaXRlciA9IHdz
LmdldFdyaXRlcigpOworICBjb25zdCB3cml0ZXJSZWFkeTEgPSB3cml0ZXIucmVhZHk7CisgIHdy
aXRlci5hYm9ydChlcnJvcjEpOworICBjb25zdCB3cml0ZXJSZWFkeTIgPSB3cml0ZXIucmVhZHk7
CisgIGFzc2VydF9ub3RfZXF1YWxzKHdyaXRlclJlYWR5MSwgd3JpdGVyUmVhZHkyLCAnYWJvcnQo
KSBzaG91bGQgcmVwbGFjZSB0aGUgcmVhZHkgcHJvbWlzZSB3aXRoIGEgcmVqZWN0ZWQgb25lJyk7
CisgIHJldHVybiBQcm9taXNlLmFsbChbd3JpdGVyUmVhZHkxLAorICAgICAgICAgICAgICAgICAg
ICAgIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMSwgd3JpdGVyUmVhZHkyLCAnd3Jp
dGVyUmVhZHkyIHNob3VsZCByZWplY3QnKV0pOworfSwgJ3dyaXRlciBhYm9ydCgpIGR1cmluZyBz
aW5rIHN0YXJ0KCkgc2hvdWxkIHJlcGxhY2UgdGhlIHdyaXRlci5yZWFkeSBwcm9taXNlIHN5bmNo
cm9ub3VzbHknKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBjb25zdCBldmVudHMgPSBbXTsK
KyAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSgpOworICBjb25zdCB3cml0ZXIg
PSB3cy5nZXRXcml0ZXIoKTsKKyAgY29uc3Qgd3JpdGVQcm9taXNlMSA9IHdyaXRlci53cml0ZSgx
KTsKKyAgY29uc3QgYWJvcnRQcm9taXNlID0gd3JpdGVyLmFib3J0KGVycm9yMSk7CisgIGNvbnN0
IHdyaXRlUHJvbWlzZTIgPSB3cml0ZXIud3JpdGUoMik7CisgIGNvbnN0IGNsb3NlUHJvbWlzZSA9
IHdyaXRlci5jbG9zZSgpOworICB3cml0ZVByb21pc2UxLmNhdGNoKCgpID0+IGV2ZW50cy5wdXNo
KCd3cml0ZTEnKSk7CisgIGFib3J0UHJvbWlzZS50aGVuKCgpID0+IGV2ZW50cy5wdXNoKCdhYm9y
dCcpKTsKKyAgd3JpdGVQcm9taXNlMi5jYXRjaCgoKSA9PiBldmVudHMucHVzaCgnd3JpdGUyJykp
OworICBjbG9zZVByb21pc2UuY2F0Y2goKCkgPT4gZXZlbnRzLnB1c2goJ2Nsb3NlJykpOworICBy
ZXR1cm4gUHJvbWlzZS5hbGwoWworICAgIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9y
MSwgd3JpdGVQcm9taXNlMSwgJ2ZpcnN0IHdyaXRlKCkgc2hvdWxkIHJlamVjdCcpLAorICAgIGFi
b3J0UHJvbWlzZSwKKyAgICBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIHdyaXRl
UHJvbWlzZTIsICdzZWNvbmQgd3JpdGUoKSBzaG91bGQgcmVqZWN0JyksCisgICAgcHJvbWlzZV9y
ZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCBjbG9zZVByb21pc2UsICdjbG9zZSgpIHNob3VsZCBy
ZWplY3QnKQorICBdKQorICAudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhl
dmVudHMsIFsnd3JpdGUyJywgJ3dyaXRlMScsICdhYm9ydCcsICdjbG9zZSddLAorICAgICAgICAg
ICAgICAgICAgICAgICAgJ3Byb21pc2VzIHNob3VsZCByZXNvbHZlIGluIHRoZSBzdGFuZGFyZCBv
cmRlcicpOworICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ2Fib3J0JywgZXJy
b3IxXSwgJ3VuZGVybHlpbmcgc2luayB3cml0ZSgpIHNob3VsZCBub3QgYmUgY2FsbGVkJyk7Cisg
IH0pOworfSwgJ3Byb21pc2VzIHJldHVybmVkIGZyb20gb3RoZXIgd3JpdGVyIG1ldGhvZHMgc2hv
dWxkIGJlIHJlamVjdGVkIHdoZW4gd3JpdGVyIGFib3J0KCkgaGFwcGVucyBkdXJpbmcgc2luayBz
dGFydCgpJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgbGV0IHdyaXRlUmVqZWN0OworICBs
ZXQgY29udHJvbGxlcjsKKyAgY29uc3Qgd3MgPSBuZXcgV3JpdGFibGVTdHJlYW0oeworICAgIHdy
aXRlKGNodW5rLCBjKSB7CisgICAgICBjb250cm9sbGVyID0gYzsKKyAgICAgIHJldHVybiBuZXcg
UHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CisgICAgICAgIHdyaXRlUmVqZWN0ID0gcmVq
ZWN0OworICAgICAgfSk7CisgICAgfQorICB9KTsKKyAgY29uc3Qgd3JpdGVyID0gd3MuZ2V0V3Jp
dGVyKCk7CisgIHJldHVybiB3cml0ZXIucmVhZHkudGhlbigoKSA9PiB7CisgICAgY29uc3Qgd3Jp
dGVQcm9taXNlID0gd3JpdGVyLndyaXRlKCdhJyk7CisgICAgY29uc3QgYWJvcnRQcm9taXNlID0g
d3JpdGVyLmFib3J0KCk7CisgICAgY29udHJvbGxlci5lcnJvcihlcnJvcjEpOworICAgIHdyaXRl
UmVqZWN0KGVycm9yMik7CisgICAgcmV0dXJuIFByb21pc2UuYWxsKFsKKyAgICAgIHByb21pc2Vf
cmVqZWN0c19leGFjdGx5KHQsIGVycm9yMiwgd3JpdGVQcm9taXNlLCAnd3JpdGUoKSBzaG91bGQg
cmVqZWN0IHdpdGggZXJyb3IyJyksCisgICAgICBhYm9ydFByb21pc2UKKyAgICBdKTsKKyAgfSk7
Cit9LCAnYWJvcnQoKSBzaG91bGQgc3VjY2VlZCBkZXNwaXRlIHJlamVjdGlvbiBmcm9tIHdyaXRl
Jyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgbGV0IGNsb3NlUmVqZWN0OworICBsZXQgY29u
dHJvbGxlcjsKKyAgY29uc3Qgd3MgPSBuZXcgV3JpdGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMp
IHsKKyAgICAgIGNvbnRyb2xsZXIgPSBjOworICAgIH0sCisgICAgY2xvc2UoKSB7CisgICAgICBy
ZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4geworICAgICAgICBjbG9zZVJl
amVjdCA9IHJlamVjdDsKKyAgICAgIH0pOworICAgIH0KKyAgfSk7CisgIGNvbnN0IHdyaXRlciA9
IHdzLmdldFdyaXRlcigpOworICByZXR1cm4gd3JpdGVyLnJlYWR5LnRoZW4oKCkgPT4geworICAg
IGNvbnN0IGNsb3NlUHJvbWlzZSA9IHdyaXRlci5jbG9zZSgpOworICAgIGNvbnN0IGFib3J0UHJv
bWlzZSA9IHdyaXRlci5hYm9ydCgpOworICAgIGNvbnRyb2xsZXIuZXJyb3IoZXJyb3IxKTsKKyAg
ICBjbG9zZVJlamVjdChlcnJvcjIpOworICAgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAgICBw
cm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjIsIGNsb3NlUHJvbWlzZSwgJ2Nsb3NlKCkg
c2hvdWxkIHJlamVjdCB3aXRoIGVycm9yMicpLAorICAgICAgcHJvbWlzZV9yZWplY3RzX2V4YWN0
bHkodCwgZXJyb3IyLCBhYm9ydFByb21pc2UsICdhYm9ydCgpIHNob3VsZCByZWplY3Qgd2l0aCBl
cnJvcjInKQorICAgIF0pOworICB9KTsKK30sICdhYm9ydCgpIHNob3VsZCBiZSByZWplY3RlZCB3
aXRoIHRoZSByZWplY3Rpb24gcmV0dXJuZWQgZnJvbSBjbG9zZSgpJyk7CisKK3Byb21pc2VfdGVz
dCh0ID0+IHsKKyAgbGV0IHJlamVjdFdyaXRlOworICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRh
YmxlU3RyZWFtKHsKKyAgICB3cml0ZSgpIHsKKyAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVz
b2x2ZSwgcmVqZWN0KSA9PiB7CisgICAgICAgIHJlamVjdFdyaXRlID0gcmVqZWN0OworICAgICAg
fSk7CisgICAgfQorICB9KTsKKyAgY29uc3Qgd3JpdGVyID0gd3MuZ2V0V3JpdGVyKCk7CisgIHJl
dHVybiB3cml0ZXIucmVhZHkudGhlbigoKSA9PiB7CisgICAgY29uc3Qgd3JpdGVQcm9taXNlID0g
d3JpdGVyLndyaXRlKCcxJyk7CisgICAgY29uc3QgYWJvcnRQcm9taXNlID0gd3JpdGVyLmFib3J0
KGVycm9yMik7CisgICAgcmVqZWN0V3JpdGUoZXJyb3IxKTsKKyAgICByZXR1cm4gUHJvbWlzZS5h
bGwoWworICAgICAgcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCB3cml0ZVByb21p
c2UsICd3cml0ZSBzaG91bGQgcmVqZWN0JyksCisgICAgICBhYm9ydFByb21pc2UsCisgICAgICBw
cm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjIsIHdyaXRlci5jbG9zZWQsICdjbG9zZWQg
c2hvdWxkIHJlamVjdCB3aXRoIGVycm9yMicpCisgICAgXSk7CisgIH0pLnRoZW4oKCkgPT4gewor
ICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ3dyaXRlJywgJzEnLCAnYWJvcnQn
LCBlcnJvcjJdLCAnYWJvcnQgc2luayBtZXRob2Qgc2hvdWxkIGJlIGNhbGxlZCcpOworICB9KTsK
K30sICdhIHJlamVjdGluZyBzaW5rLndyaXRlKCkgc2hvdWxkIG5vdCBwcmV2ZW50IHNpbmsuYWJv
cnQoKSBmcm9tIGJlaW5nIGNhbGxlZCcpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworICBjb25z
dCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKHsKKyAgICBzdGFydCgpIHsKKyAgICAgIHJl
dHVybiBQcm9taXNlLnJlamVjdChlcnJvcjEpOworICAgIH0KKyAgfSk7CisgIHJldHVybiB3cy5h
Ym9ydChlcnJvcjIpCisgICAgICAudGhlbigoKSA9PiB7CisgICAgICAgIGFzc2VydF9hcnJheV9l
cXVhbHMod3MuZXZlbnRzLCBbJ2Fib3J0JywgZXJyb3IyXSk7CisgICAgICB9KTsKK30sICd3aGVu
IHN0YXJ0IGVycm9ycyBhZnRlciBzdHJlYW0gYWJvcnQoKSwgdW5kZXJseWluZyBzaW5rIGFib3J0
KCkgc2hvdWxkIGJlIGNhbGxlZCBhbnl3YXknKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAg
Y29uc3Qgd3MgPSBuZXcgV3JpdGFibGVTdHJlYW0oKTsKKyAgY29uc3QgYWJvcnRQcm9taXNlMSA9
IHdzLmFib3J0KCk7CisgIGNvbnN0IGFib3J0UHJvbWlzZTIgPSB3cy5hYm9ydCgpOworICBhc3Nl
cnRfZXF1YWxzKGFib3J0UHJvbWlzZTEsIGFib3J0UHJvbWlzZTIsICd0aGUgcHJvbWlzZXMgbXVz
dCBiZSB0aGUgc2FtZScpOworCisgIHJldHVybiBhYm9ydFByb21pc2UxLnRoZW4oCisgICAgICB2
ID0+IGFzc2VydF9lcXVhbHModiwgdW5kZWZpbmVkLCAnYWJvcnQoKSBzaG91bGQgZnVsZmlsbCB3
aXRoIHVuZGVmaW5lZCcpKTsKK30sICd3aGVuIGNhbGxpbmcgYWJvcnQoKSB0d2ljZSBvbiB0aGUg
c2FtZSBzdHJlYW0sIGJvdGggc2hvdWxkIGdpdmUgdGhlIHNhbWUgcHJvbWlzZSB0aGF0IGZ1bGZp
bGxzIHdpdGggdW5kZWZpbmVkJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisgIGNvbnN0IHdz
ID0gbmV3IFdyaXRhYmxlU3RyZWFtKCk7CisgIGNvbnN0IGFib3J0UHJvbWlzZTEgPSB3cy5hYm9y
dCgpOworCisgIHJldHVybiBhYm9ydFByb21pc2UxLnRoZW4odjEgPT4geworICAgIGFzc2VydF9l
cXVhbHModjEsIHVuZGVmaW5lZCwgJ2ZpcnN0IGFib3J0KCkgc2hvdWxkIGZ1bGZpbGwgd2l0aCB1
bmRlZmluZWQnKTsKKworICAgIGNvbnN0IGFib3J0UHJvbWlzZTIgPSB3cy5hYm9ydCgpOworICAg
IGFzc2VydF9ub3RfZXF1YWxzKGFib3J0UHJvbWlzZTIsIGFib3J0UHJvbWlzZTEsICdiZWNhdXNl
IHdlIHdhaXRlZCwgdGhlIHNlY29uZCBwcm9taXNlIHNob3VsZCBiZSBhIG5ldyBwcm9taXNlJyk7
CisKKyAgICByZXR1cm4gYWJvcnRQcm9taXNlMi50aGVuKHYyID0+IHsKKyAgICAgIGFzc2VydF9l
cXVhbHModjIsIHVuZGVmaW5lZCwgJ3NlY29uZCBhYm9ydCgpIHNob3VsZCBmdWxmaWxsIHdpdGgg
dW5kZWZpbmVkJyk7CisgICAgfSk7CisgIH0pOworfSwgJ3doZW4gY2FsbGluZyBhYm9ydCgpIHR3
aWNlIG9uIHRoZSBzYW1lIHN0cmVhbSwgYnV0IHNlcXVlbnRpYWxseSBzbyBzbyB0aGVyZVwncyBu
byBwZW5kaW5nIGFib3J0IHRoZSBzZWNvbmQgdGltZSwgJyArCisgICAnYm90aCBzaG91bGQgZnVs
ZmlsbCB3aXRoIHVuZGVmaW5lZCcpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIGNvbnN0IHdz
ID0gbmV3IFdyaXRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjLmVycm9yKGVy
cm9yMSk7CisgICAgfQorICB9KTsKKworICBjb25zdCB3cml0ZXIgPSB3cy5nZXRXcml0ZXIoKTsK
KworICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCB3cml0ZXIuY2xv
c2VkLCAnd3JpdGVyLmNsb3NlZCBzaG91bGQgcmVqZWN0JykudGhlbigoKSA9PiB7CisgICAgcmV0
dXJuIHdyaXRlci5hYm9ydCgpLnRoZW4oCisgICAgICB2ID0+IGFzc2VydF9lcXVhbHModiwgdW5k
ZWZpbmVkLCAnYWJvcnQoKSBzaG91bGQgZnVsZmlsbCB3aXRoIHVuZGVmaW5lZCcpKTsKKyAgfSk7
Cit9LCAnY2FsbGluZyBhYm9ydCgpIG9uIGFuIGVycm9yZWQgc3RyZWFtIHNob3VsZCBmdWxmaWxs
IHdpdGggdW5kZWZpbmVkJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgbGV0IGNvbnRyb2xs
ZXI7CisgIGxldCByZXNvbHZlV3JpdGU7CisgIGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVT
dHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGNvbnRyb2xsZXIgPSBjOworICAgIH0sCisg
ICAgd3JpdGUoKSB7CisgICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7CisgICAg
ICAgIHJlc29sdmVXcml0ZSA9IHJlc29sdmU7CisgICAgICB9KTsKKyAgICB9CisgIH0pOworICBj
b25zdCB3cml0ZXIgPSB3cy5nZXRXcml0ZXIoKTsKKyAgcmV0dXJuIHdyaXRlci5yZWFkeS50aGVu
KCgpID0+IHsKKyAgICBjb25zdCB3cml0ZVByb21pc2UgPSB3cml0ZXIud3JpdGUoJ2NodW5rJyk7
CisgICAgY29udHJvbGxlci5lcnJvcihlcnJvcjEpOworICAgIGNvbnN0IGFib3J0UHJvbWlzZSA9
IHdyaXRlci5hYm9ydChlcnJvcjIpOworICAgIHJlc29sdmVXcml0ZSgpOworICAgIHJldHVybiBQ
cm9taXNlLmFsbChbCisgICAgICB3cml0ZVByb21pc2UsCisgICAgICBwcm9taXNlX3JlamVjdHNf
ZXhhY3RseSh0LCBlcnJvcjEsIGFib3J0UHJvbWlzZSwgJ2Fib3J0KCkgc2hvdWxkIHJlamVjdCcp
CisgICAgXSkudGhlbigoKSA9PiB7CisgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50
cywgWyd3cml0ZScsICdjaHVuayddLCAnc2luayBhYm9ydCgpIHNob3VsZCBub3QgYmUgY2FsbGVk
Jyk7CisgICAgfSk7CisgIH0pOworfSwgJ3NpbmsgYWJvcnQoKSBzaG91bGQgbm90IGJlIGNhbGxl
ZCBpZiBzdHJlYW0gd2FzIGVycm9yaW5nIGR1ZSB0byBjb250cm9sbGVyLmVycm9yKCkgYmVmb3Jl
IGFib3J0KCkgd2FzIGNhbGxlZCcpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIGxldCByZXNv
bHZlV3JpdGU7CisgIGxldCBzaXplID0gMTsKKyAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJs
ZVN0cmVhbSh7CisgICAgd3JpdGUoKSB7CisgICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2
ZSA9PiB7CisgICAgICAgIHJlc29sdmVXcml0ZSA9IHJlc29sdmU7CisgICAgICB9KTsKKyAgICB9
CisgIH0sIHsKKyAgICBzaXplKCkgeworICAgICAgcmV0dXJuIHNpemU7CisgICAgfSwKKyAgICBo
aWdoV2F0ZXJNYXJrOiAxCisgIH0pOworICBjb25zdCB3cml0ZXIgPSB3cy5nZXRXcml0ZXIoKTsK
KyAgcmV0dXJuIHdyaXRlci5yZWFkeS50aGVuKCgpID0+IHsKKyAgICBjb25zdCB3cml0ZVByb21p
c2UxID0gd3JpdGVyLndyaXRlKCdjaHVuazEnKTsKKyAgICBzaXplID0gTmFOOworICAgIGNvbnN0
IHdyaXRlUHJvbWlzZTIgPSB3cml0ZXIud3JpdGUoJ2NodW5rMicpOworICAgIGNvbnN0IGFib3J0
UHJvbWlzZSA9IHdyaXRlci5hYm9ydChlcnJvcjIpOworICAgIHJlc29sdmVXcml0ZSgpOworICAg
IHJldHVybiBQcm9taXNlLmFsbChbCisgICAgICB3cml0ZVByb21pc2UxLAorICAgICAgcHJvbWlz
ZV9yZWplY3RzX2pzKHQsIFJhbmdlRXJyb3IsIHdyaXRlUHJvbWlzZTIsICdzZWNvbmQgd3JpdGUo
KSBzaG91bGQgcmVqZWN0JyksCisgICAgICBwcm9taXNlX3JlamVjdHNfanModCwgUmFuZ2VFcnJv
ciwgYWJvcnRQcm9taXNlLCAnYWJvcnQoKSBzaG91bGQgcmVqZWN0JykKKyAgICBdKS50aGVuKCgp
ID0+IHsKKyAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ3dyaXRlJywgJ2No
dW5rMSddLCAnc2luayBhYm9ydCgpIHNob3VsZCBub3QgYmUgY2FsbGVkJyk7CisgICAgfSk7Cisg
IH0pOworfSwgJ3NpbmsgYWJvcnQoKSBzaG91bGQgbm90IGJlIGNhbGxlZCBpZiBzdHJlYW0gd2Fz
IGVycm9yaW5nIGR1ZSB0byBiYWQgc3RyYXRlZ3kgYmVmb3JlIGFib3J0KCkgd2FzIGNhbGxlZCcp
OworCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIGNvbnN0IHdzID0gbmV3IFdyaXRhYmxlU3RyZWFt
KCk7CisgIHJldHVybiB3cy5hYm9ydCgpLnRoZW4oKCkgPT4geworICAgIGNvbnN0IHdyaXRlciA9
IHdzLmdldFdyaXRlcigpOworICAgIHJldHVybiB3cml0ZXIuY2xvc2VkLnRoZW4odC51bnJlYWNo
ZWRfZnVuYygnY2xvc2VkIHByb21pc2Ugc2hvdWxkIG5vdCBmdWxmaWxsJyksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBlID0+IGFzc2VydF9lcXVhbHMoZSwgdW5kZWZpbmVkLCAnZSBz
aG91bGQgYmUgdW5kZWZpbmVkJykpOworICB9KTsKK30sICdhYm9ydCB3aXRoIG5vIGFyZ3VtZW50
cyBzaG91bGQgc2V0IHRoZSBzdG9yZWQgZXJyb3IgdG8gdW5kZWZpbmVkJyk7CisKK3Byb21pc2Vf
dGVzdCh0ID0+IHsKKyAgY29uc3Qgd3MgPSBuZXcgV3JpdGFibGVTdHJlYW0oKTsKKyAgcmV0dXJu
IHdzLmFib3J0KHVuZGVmaW5lZCkudGhlbigoKSA9PiB7CisgICAgY29uc3Qgd3JpdGVyID0gd3Mu
Z2V0V3JpdGVyKCk7CisgICAgcmV0dXJuIHdyaXRlci5jbG9zZWQudGhlbih0LnVucmVhY2hlZF9m
dW5jKCdjbG9zZWQgcHJvbWlzZSBzaG91bGQgbm90IGZ1bGZpbGwnKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGUgPT4gYXNzZXJ0X2VxdWFscyhlLCB1bmRlZmluZWQsICdlIHNob3Vs
ZCBiZSB1bmRlZmluZWQnKSk7CisgIH0pOworfSwgJ2Fib3J0IHdpdGggYW4gdW5kZWZpbmVkIGFy
Z3VtZW50IHNob3VsZCBzZXQgdGhlIHN0b3JlZCBlcnJvciB0byB1bmRlZmluZWQnKTsKKworcHJv
bWlzZV90ZXN0KHQgPT4geworICBjb25zdCB3cyA9IG5ldyBXcml0YWJsZVN0cmVhbSgpOworICBy
ZXR1cm4gd3MuYWJvcnQoJ3N0cmluZyBhcmd1bWVudCcpLnRoZW4oKCkgPT4geworICAgIGNvbnN0
IHdyaXRlciA9IHdzLmdldFdyaXRlcigpOworICAgIHJldHVybiB3cml0ZXIuY2xvc2VkLnRoZW4o
dC51bnJlYWNoZWRfZnVuYygnY2xvc2VkIHByb21pc2Ugc2hvdWxkIG5vdCBmdWxmaWxsJyksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlID0+IGFzc2VydF9lcXVhbHMoZSwgJ3N0cmlu
ZyBhcmd1bWVudCcsICdlIHNob3VsZCBiZSBcJ3N0cmluZyBhcmd1bWVudFwnJykpOworICB9KTsK
K30sICdhYm9ydCB3aXRoIGEgc3RyaW5nIGFyZ3VtZW50IHNob3VsZCBzZXQgdGhlIHN0b3JlZCBl
cnJvciB0byB0aGF0IGFyZ3VtZW50Jyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgY29uc3Qg
d3MgPSBuZXcgV3JpdGFibGVTdHJlYW0oKTsKKyAgY29uc3Qgd3JpdGVyID0gd3MuZ2V0V3JpdGVy
KCk7CisgIHJldHVybiBwcm9taXNlX3JlamVjdHNfanModCwgVHlwZUVycm9yLCB3cy5hYm9ydCgp
LCAnYWJvcnQgc2hvdWxkIHJlamVjdCcpCisgICAgLnRoZW4oKCkgPT4gd3JpdGVyLnJlYWR5KTsK
K30sICdhYm9ydCBvbiBhIGxvY2tlZCBzdHJlYW0gc2hvdWxkIHJlamVjdCcpOwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dy
aXRhYmxlLXN0cmVhbXMvYWJvcnRpbmcuYW55Lndvcmtlci1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3Ry
ZWFtcy9hYm9ydGluZy5hbnkud29ya2VyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNjQyYmRj
MGE5ZjY2NTJkM2NkMzg4MzQxY2M3NDFiYWVhZDUzMWFlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxl
LXN0cmVhbXMvYWJvcnRpbmcuYW55Lndvcmtlci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1NyBA
QAorCitGQUlMIEFib3J0aW5nIGEgV3JpdGFibGVTdHJlYW0gYmVmb3JlIGl0IHN0YXJ0cyBzaG91
bGQgY2F1c2UgdGhlIHdyaXRlcidzIHVuc2V0dGxlZCByZWFkeSBwcm9taXNlIHRvIHJlamVjdCBD
YW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBBYm9ydGluZyBhIFdyaXRh
YmxlU3RyZWFtIHNob3VsZCBjYXVzZSB0aGUgd3JpdGVyJ3MgZnVsZmlsbGVkIHJlYWR5IHByb21p
c2UgdG8gcmVzZXQgdG8gYSByZWplY3RlZCBvbmUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFi
bGVTdHJlYW0KK0ZBSUwgYWJvcnQoKSBvbiBhIHJlbGVhc2VkIHdyaXRlciByZWplY3RzIENhbid0
IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIEFib3J0aW5nIGEgV3JpdGFibGVT
dHJlYW0gaW1tZWRpYXRlbHkgcHJldmVudHMgZnV0dXJlIHdyaXRlcyBDYW4ndCBmaW5kIHZhcmlh
YmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBBYm9ydGluZyBhIFdyaXRhYmxlU3RyZWFtIHByZXZl
bnRzIGZ1cnRoZXIgd3JpdGVzIGFmdGVyIGFueSB0aGF0IGFyZSBpbiBwcm9ncmVzcyBDYW4ndCBm
aW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBGdWxmaWxsbWVudCB2YWx1ZSBvZiB3
cml0ZXIuYWJvcnQoKSBjYWxsIG11c3QgYmUgdW5kZWZpbmVkIGV2ZW4gaWYgdGhlIHVuZGVybHlp
bmcgc2luayByZXR1cm5zIGEgbm9uLXVuZGVmaW5lZCB2YWx1ZSBDYW4ndCBmaW5kIHZhcmlhYmxl
OiBXcml0YWJsZVN0cmVhbQorRkFJTCBXcml0YWJsZVN0cmVhbSBpZiBzaW5rJ3MgYWJvcnQgdGhy
b3dzLCB0aGUgcHJvbWlzZSByZXR1cm5lZCBieSB3cml0ZXIuYWJvcnQoKSByZWplY3RzIENhbid0
IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIFdyaXRhYmxlU3RyZWFtIGlmIHNp
bmsncyBhYm9ydCB0aHJvd3MsIHRoZSBwcm9taXNlIHJldHVybmVkIGJ5IG11bHRpcGxlIHdyaXRl
ci5hYm9ydCgpcyBpcyB0aGUgc2FtZSBhbmQgcmVqZWN0cyBDYW4ndCBmaW5kIHZhcmlhYmxlOiBX
cml0YWJsZVN0cmVhbQorRkFJTCBXcml0YWJsZVN0cmVhbSBpZiBzaW5rJ3MgYWJvcnQgdGhyb3dz
LCB0aGUgcHJvbWlzZSByZXR1cm5lZCBieSB3cy5hYm9ydCgpIHJlamVjdHMgQ2FuJ3QgZmluZCB2
YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgV3JpdGFibGVTdHJlYW0gaWYgc2luaydzIGFi
b3J0IHRocm93cywgZm9yIGFuIGFib3J0IHBlcmZvcm1lZCBkdXJpbmcgYSB3cml0ZSwgdGhlIHBy
b21pc2UgcmV0dXJuZWQgYnkgd3MuYWJvcnQoKSByZWplY3RzIENhbid0IGZpbmQgdmFyaWFibGU6
IFdyaXRhYmxlU3RyZWFtCitGQUlMIEFib3J0aW5nIGEgV3JpdGFibGVTdHJlYW0gcGFzc2VzIHRo
cm91Z2ggdGhlIGdpdmVuIHJlYXNvbiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVh
bQorRkFJTCBBYm9ydGluZyBhIFdyaXRhYmxlU3RyZWFtIHB1dHMgaXQgaW4gYW4gZXJyb3JlZCBz
dGF0ZSB3aXRoIHRoZSBlcnJvciBwYXNzZWQgdG8gYWJvcnQoKSBDYW4ndCBmaW5kIHZhcmlhYmxl
OiBXcml0YWJsZVN0cmVhbQorRkFJTCBBYm9ydGluZyBhIFdyaXRhYmxlU3RyZWFtIGNhdXNlcyBh
bnkgb3V0c3RhbmRpbmcgd3JpdGUoKSBwcm9taXNlcyB0byBiZSByZWplY3RlZCB3aXRoIHRoZSBy
ZWFzb24gc3VwcGxpZWQgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwg
Q2xvc2luZyBidXQgdGhlbiBpbW1lZGlhdGVseSBhYm9ydGluZyBhIFdyaXRhYmxlU3RyZWFtIGNh
dXNlcyB0aGUgc3RyZWFtIHRvIGVycm9yIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3Ry
ZWFtCitGQUlMIENsb3NpbmcgYSBXcml0YWJsZVN0cmVhbSBhbmQgYWJvcnRpbmcgaXQgd2hpbGUg
aXQgY2xvc2VzIGNhdXNlcyB0aGUgc3RyZWFtIHRvIGlnbm9yZSB0aGUgYWJvcnQgYXR0ZW1wdCBD
YW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBBYm9ydGluZyBhIFdyaXRh
YmxlU3RyZWFtIGFmdGVyIGl0IGlzIGNsb3NlZCBpcyBhIG5vLW9wIENhbid0IGZpbmQgdmFyaWFi
bGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIFdyaXRhYmxlU3RyZWFtIHNob3VsZCBOT1QgY2FsbCB1
bmRlcmx5aW5nIHNpbmsncyBjbG9zZSBpZiBubyBhYm9ydCBpcyBzdXBwbGllZCAoaGlzdG9yaWNh
bCkgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgcmV0dXJuaW5nIGEg
dGhlbmFibGUgZnJvbSBhYm9ydCgpIHNob3VsZCB3b3JrIENhbid0IGZpbmQgdmFyaWFibGU6IFdy
aXRhYmxlU3RyZWFtCitGQUlMIC5jbG9zZWQgc2hvdWxkIG5vdCByZXNvbHZlIGJlZm9yZSBmdWxm
aWxsZWQgd3JpdGUoKSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCAu
Y2xvc2VkIHNob3VsZCBub3QgcmVzb2x2ZSBiZWZvcmUgcmVqZWN0ZWQgd3JpdGUoKTsgd3JpdGUo
KSBlcnJvciBzaG91bGQgbm90IG92ZXJ3cml0ZSBhYm9ydCgpIGVycm9yIENhbid0IGZpbmQgdmFy
aWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIHdyaXRlcyBzaG91bGQgYmUgc2F0aXNmaWVkIGlu
IG9yZGVyIHdoZW4gYWJvcnRpbmcgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0K
K0ZBSUwgd3JpdGVzIHNob3VsZCBiZSBzYXRpc2ZpZWQgaW4gb3JkZXIgYWZ0ZXIgcmVqZWN0ZWQg
d3JpdGUgd2hlbiBhYm9ydGluZyBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQor
RkFJTCBjbG9zZSgpIHNob3VsZCByZWplY3Qgd2l0aCBhYm9ydCByZWFzb24gd2h5IGFib3J0KCkg
aXMgZmlyc3QgZXJyb3IgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwg
dW5kZXJseWluZyBhYm9ydCgpIHNob3VsZCBub3QgYmUgY2FsbGVkIHVudGlsIHVuZGVybHlpbmcg
d3JpdGUoKSBjb21wbGV0ZXMgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZB
SUwgdW5kZXJseWluZyBhYm9ydCgpIHNob3VsZCBub3QgYmUgY2FsbGVkIGlmIHVuZGVybHlpbmcg
Y2xvc2UoKSBoYXMgc3RhcnRlZCBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQor
RkFJTCBpZiB1bmRlcmx5aW5nIGNsb3NlKCkgaGFzIHN0YXJ0ZWQgYW5kIHRoZW4gcmVqZWN0cywg
dGhlIGFib3J0KCkgYW5kIGNsb3NlKCkgcHJvbWlzZXMgc2hvdWxkIHJlamVjdCB3aXRoIHRoZSB1
bmRlcmx5aW5nIGNsb3NlIHJlamVjdGlvbiByZWFzb24gQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3Jp
dGFibGVTdHJlYW0KK0ZBSUwgYW4gYWJvcnQoKSB0aGF0IGhhcHBlbnMgZHVyaW5nIGEgd3JpdGUo
KSBzaG91bGQgdHJpZ2dlciB0aGUgdW5kZXJseWluZyBhYm9ydCgpIGV2ZW4gd2l0aCBhIGNsb3Nl
KCkgcXVldWVkIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIGlmIGEg
d3JpdGVyIGlzIGNyZWF0ZWQgZm9yIGEgc3RyZWFtIHdpdGggYSBwZW5kaW5nIGFib3J0LCBpdHMg
cmVhZHkgc2hvdWxkIGJlIHJlamVjdGVkIHdpdGggdGhlIGFib3J0IGVycm9yIENhbid0IGZpbmQg
dmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIHdyaXRlciBjbG9zZSgpIHByb21pc2Ugc2hv
dWxkIHJlc29sdmUgYmVmb3JlIGFib3J0KCkgcHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBX
cml0YWJsZVN0cmVhbQorRkFJTCB3cml0ZXIucmVhZHkgc2hvdWxkIHJlamVjdCBvbiBjb250cm9s
bGVyIGVycm9yIHdpdGhvdXQgd2FpdGluZyBmb3IgdW5kZXJseWluZyB3cml0ZSBDYW4ndCBmaW5k
IHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCB3cml0ZXIuYWJvcnQoKSB3aGlsZSB0aGVy
ZSBpcyBhbiBpbi1mbGlnaHQgd3JpdGUsIGFuZCB0aGVuIGZpbmlzaCB0aGUgd3JpdGUgd2l0aCBy
ZWplY3Rpb24gQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgd3JpdGVy
LmFib3J0KCksIGNvbnRyb2xsZXIuZXJyb3IoKSB3aGlsZSB0aGVyZSBpcyBhbiBpbi1mbGlnaHQg
d3JpdGUsIGFuZCB0aGVuIGZpbmlzaCB0aGUgd3JpdGUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3Jp
dGFibGVTdHJlYW0KK0ZBSUwgd3JpdGVyLmFib3J0KCksIGNvbnRyb2xsZXIuZXJyb3IoKSB3aGls
ZSB0aGVyZSBpcyBhbiBpbi1mbGlnaHQgY2xvc2UsIGFuZCB0aGVuIGZpbmlzaCB0aGUgY2xvc2Ug
Q2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgY29udHJvbGxlci5lcnJv
cigpLCB3cml0ZXIuYWJvcnQoKSB3aGlsZSB0aGVyZSBpcyBhbiBpbi1mbGlnaHQgd3JpdGUsIGFu
ZCB0aGVuIGZpbmlzaCB0aGUgd3JpdGUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJl
YW0KK0ZBSUwgY29udHJvbGxlci5lcnJvcigpLCB3cml0ZXIuYWJvcnQoKSB3aGlsZSB0aGVyZSBp
cyBhbiBpbi1mbGlnaHQgY2xvc2UsIGFuZCB0aGVuIGZpbmlzaCB0aGUgY2xvc2UgQ2FuJ3QgZmlu
ZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgcmVsZWFzZUxvY2soKSB3aGlsZSBhYm9y
dGluZyBzaG91bGQgcmVqZWN0IHRoZSBvcmlnaW5hbCBjbG9zZWQgcHJvbWlzZSBDYW4ndCBmaW5k
IHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCByZWxlYXNlTG9jaygpIGR1cmluZyBkZWxh
eWVkIGFzeW5jIGFib3J0KCkgc2hvdWxkIHJlamVjdCB0aGUgd3JpdGVyLmNsb3NlZCBwcm9taXNl
IENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIHNpbmsgYWJvcnQoKSBz
aG91bGQgbm90IGJlIGNhbGxlZCB1bnRpbCBzaW5rIHN0YXJ0KCkgaXMgZG9uZSBDYW4ndCBmaW5k
IHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBpZiBzdGFydCBhdHRlbXB0cyB0byBlcnJv
ciB0aGUgY29udHJvbGxlciBhZnRlciBhYm9ydCgpIGhhcyBiZWVuIGNhbGxlZCwgdGhlbiBpdCBz
aG91bGQgbG9zZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBzdHJl
YW0gYWJvcnQoKSBwcm9taXNlIHNob3VsZCBzdGlsbCByZXNvbHZlIGlmIHNpbmsgc3RhcnQoKSBy
ZWplY3RzIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIHdyaXRlciBh
Ym9ydCgpIGR1cmluZyBzaW5rIHN0YXJ0KCkgc2hvdWxkIHJlcGxhY2UgdGhlIHdyaXRlci5yZWFk
eSBwcm9taXNlIHN5bmNocm9ub3VzbHkgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJl
YW0KK0ZBSUwgcHJvbWlzZXMgcmV0dXJuZWQgZnJvbSBvdGhlciB3cml0ZXIgbWV0aG9kcyBzaG91
bGQgYmUgcmVqZWN0ZWQgd2hlbiB3cml0ZXIgYWJvcnQoKSBoYXBwZW5zIGR1cmluZyBzaW5rIHN0
YXJ0KCkgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgYWJvcnQoKSBz
aG91bGQgc3VjY2VlZCBkZXNwaXRlIHJlamVjdGlvbiBmcm9tIHdyaXRlIENhbid0IGZpbmQgdmFy
aWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIGFib3J0KCkgc2hvdWxkIGJlIHJlamVjdGVkIHdp
dGggdGhlIHJlamVjdGlvbiByZXR1cm5lZCBmcm9tIGNsb3NlKCkgQ2FuJ3QgZmluZCB2YXJpYWJs
ZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgYSByZWplY3Rpbmcgc2luay53cml0ZSgpIHNob3VsZCBu
b3QgcHJldmVudCBzaW5rLmFib3J0KCkgZnJvbSBiZWluZyBjYWxsZWQgQ2FuJ3QgZmluZCB2YXJp
YWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgd2hlbiBzdGFydCBlcnJvcnMgYWZ0ZXIgc3RyZWFt
IGFib3J0KCksIHVuZGVybHlpbmcgc2luayBhYm9ydCgpIHNob3VsZCBiZSBjYWxsZWQgYW55d2F5
IENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIHdoZW4gY2FsbGluZyBh
Ym9ydCgpIHR3aWNlIG9uIHRoZSBzYW1lIHN0cmVhbSwgYm90aCBzaG91bGQgZ2l2ZSB0aGUgc2Ft
ZSBwcm9taXNlIHRoYXQgZnVsZmlsbHMgd2l0aCB1bmRlZmluZWQgQ2FuJ3QgZmluZCB2YXJpYWJs
ZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgd2hlbiBjYWxsaW5nIGFib3J0KCkgdHdpY2Ugb24gdGhl
IHNhbWUgc3RyZWFtLCBidXQgc2VxdWVudGlhbGx5IHNvIHNvIHRoZXJlJ3Mgbm8gcGVuZGluZyBh
Ym9ydCB0aGUgc2Vjb25kIHRpbWUsIGJvdGggc2hvdWxkIGZ1bGZpbGwgd2l0aCB1bmRlZmluZWQg
Q2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgY2FsbGluZyBhYm9ydCgp
IG9uIGFuIGVycm9yZWQgc3RyZWFtIHNob3VsZCBmdWxmaWxsIHdpdGggdW5kZWZpbmVkIENhbid0
IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIHNpbmsgYWJvcnQoKSBzaG91bGQg
bm90IGJlIGNhbGxlZCBpZiBzdHJlYW0gd2FzIGVycm9yaW5nIGR1ZSB0byBjb250cm9sbGVyLmVy
cm9yKCkgYmVmb3JlIGFib3J0KCkgd2FzIGNhbGxlZCBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0
YWJsZVN0cmVhbQorRkFJTCBzaW5rIGFib3J0KCkgc2hvdWxkIG5vdCBiZSBjYWxsZWQgaWYgc3Ry
ZWFtIHdhcyBlcnJvcmluZyBkdWUgdG8gYmFkIHN0cmF0ZWd5IGJlZm9yZSBhYm9ydCgpIHdhcyBj
YWxsZWQgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgYWJvcnQgd2l0
aCBubyBhcmd1bWVudHMgc2hvdWxkIHNldCB0aGUgc3RvcmVkIGVycm9yIHRvIHVuZGVmaW5lZCBD
YW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBhYm9ydCB3aXRoIGFuIHVu
ZGVmaW5lZCBhcmd1bWVudCBzaG91bGQgc2V0IHRoZSBzdG9yZWQgZXJyb3IgdG8gdW5kZWZpbmVk
IENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIGFib3J0IHdpdGggYSBz
dHJpbmcgYXJndW1lbnQgc2hvdWxkIHNldCB0aGUgc3RvcmVkIGVycm9yIHRvIHRoYXQgYXJndW1l
bnQgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgYWJvcnQgb24gYSBs
b2NrZWQgc3RyZWFtIHNob3VsZCByZWplY3QgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVT
dHJlYW0KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvYWJvcnRpbmcuYW55Lndvcmtlci5odG1s
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dy
aXRhYmxlLXN0cmVhbXMvYWJvcnRpbmcuYW55Lndvcmtlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzODI5
MTM1MjhlNjkzYjNhNWQ1NmM2NjBhNDUwNjA5ODBiNTQ4YzMKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFi
bGUtc3RyZWFtcy9hYm9ydGluZy5hbnkud29ya2VyLmh0bWwKQEAgLTAsMCArMSBAQAorPCEtLSBU
aGlzIGZpbGUgaXMgcmVxdWlyZWQgZm9yIFdlYktpdCB0ZXN0IGluZnJhc3RydWN0dXJlIHRvIHJ1
biB0aGUgdGVtcGxhdGVkIHRlc3QgLS0+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJl
YW1zL3dyaXRhYmxlLXN0cmVhbXMvYmFkLXN0cmF0ZWdpZXMuYW55LWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJs
ZS1zdHJlYW1zL2JhZC1zdHJhdGVnaWVzLmFueS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDgx
YjgwYmExNTFhNTU3NTgzZTk4MDQzM2RkZDAwMmM1OTM1MWVlMgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0
YWJsZS1zdHJlYW1zL2JhZC1zdHJhdGVnaWVzLmFueS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw5
IEBACisKK1BBU1MgV3JpdGFibGUgc3RyZWFtOiB0aHJvd2luZyBzdHJhdGVneS5zaXplIGdldHRl
ciAKK1BBU1MgcmVqZWN0IGFueSBub24tZnVuY3Rpb24gdmFsdWUgZm9yIHN0cmF0ZWd5LnNpemUg
CitQQVNTIFdyaXRhYmxlIHN0cmVhbTogdGhyb3dpbmcgc3RyYXRlZ3kuaGlnaFdhdGVyTWFyayBn
ZXR0ZXIgCitQQVNTIFdyaXRhYmxlIHN0cmVhbTogaW52YWxpZCBzdHJhdGVneS5oaWdoV2F0ZXJN
YXJrIAorRkFJTCBXcml0YWJsZSBzdHJlYW06IHRocm93aW5nIHN0cmF0ZWd5LnNpemUgbWV0aG9k
IHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3
cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkKK0ZBSUwgV3JpdGFibGUgc3RyZWFtOiBpbnZhbGlk
IHN0cmF0ZWd5LnNpemUgcmV0dXJuIHZhbHVlIHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlv
bi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkKK1BB
U1MgV3JpdGFibGUgc3RyZWFtOiBpbnZhbGlkIHNpemUgYmVhdHMgaW52YWxpZCBoaWdoV2F0ZXJN
YXJrIAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9iYWQtc3RyYXRlZ2llcy5hbnkuaHRtbCBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0
YWJsZS1zdHJlYW1zL2JhZC1zdHJhdGVnaWVzLmFueS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzODI5MTM1
MjhlNjkzYjNhNWQ1NmM2NjBhNDUwNjA5ODBiNTQ4YzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUt
c3RyZWFtcy9iYWQtc3RyYXRlZ2llcy5hbnkuaHRtbApAQCAtMCwwICsxIEBACis8IS0tIFRoaXMg
ZmlsZSBpcyByZXF1aXJlZCBmb3IgV2ViS2l0IHRlc3QgaW5mcmFzdHJ1Y3R1cmUgdG8gcnVuIHRo
ZSB0ZW1wbGF0ZWQgdGVzdCAtLT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
d3JpdGFibGUtc3RyZWFtcy9iYWQtc3RyYXRlZ2llcy5hbnkuanMgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9iYWQt
c3RyYXRlZ2llcy5hbnkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjE4MGJhZTU3YzA1ODVmZDkxMGYwY2M3ZGZm
N2NlNDIzMjEyZjk2YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL2JhZC1zdHJhdGVn
aWVzLmFueS5qcwpAQCAtMCwwICsxLDk1IEBACisvLyBNRVRBOiBnbG9iYWw9d2luZG93LHdvcmtl
cixqc3NoZWxsCisndXNlIHN0cmljdCc7CisKK2NvbnN0IGVycm9yMSA9IG5ldyBFcnJvcignYSB1
bmlxdWUgc3RyaW5nJyk7CitlcnJvcjEubmFtZSA9ICdlcnJvcjEnOworCit0ZXN0KCgpID0+IHsK
KyAgYXNzZXJ0X3Rocm93c19leGFjdGx5KGVycm9yMSwgKCkgPT4geworICAgIG5ldyBXcml0YWJs
ZVN0cmVhbSh7fSwgeworICAgICAgZ2V0IHNpemUoKSB7CisgICAgICAgIHRocm93IGVycm9yMTsK
KyAgICAgIH0sCisgICAgICBoaWdoV2F0ZXJNYXJrOiA1CisgICAgfSk7CisgIH0sICdjb25zdHJ1
Y3Rpb24gc2hvdWxkIHJlLXRocm93IHRoZSBlcnJvcicpOworfSwgJ1dyaXRhYmxlIHN0cmVhbTog
dGhyb3dpbmcgc3RyYXRlZ3kuc2l6ZSBnZXR0ZXInKTsKKwordGVzdCgoKSA9PiB7CisgIGFzc2Vy
dF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiB7CisgICAgbmV3IFdyaXRhYmxlU3RyZWFtKHt9
LCB7IHNpemU6ICdhIHN0cmluZycgfSk7CisgIH0pOworfSwgJ3JlamVjdCBhbnkgbm9uLWZ1bmN0
aW9uIHZhbHVlIGZvciBzdHJhdGVneS5zaXplJyk7CisKK3Rlc3QoKCkgPT4geworICBhc3NlcnRf
dGhyb3dzX2V4YWN0bHkoZXJyb3IxLCAoKSA9PiB7CisgICAgbmV3IFdyaXRhYmxlU3RyZWFtKHt9
LCB7CisgICAgICBzaXplKCkgeworICAgICAgICByZXR1cm4gMTsKKyAgICAgIH0sCisgICAgICBn
ZXQgaGlnaFdhdGVyTWFyaygpIHsKKyAgICAgICAgdGhyb3cgZXJyb3IxOworICAgICAgfQorICAg
IH0pOworICB9LCAnY29uc3RydWN0aW9uIHNob3VsZCByZS10aHJvdyB0aGUgZXJyb3InKTsKK30s
ICdXcml0YWJsZSBzdHJlYW06IHRocm93aW5nIHN0cmF0ZWd5LmhpZ2hXYXRlck1hcmsgZ2V0dGVy
Jyk7CisKK3Rlc3QoKCkgPT4geworCisgIGZvciAoY29uc3QgaGlnaFdhdGVyTWFyayBvZiBbLTEs
IC1JbmZpbml0eSwgTmFOLCAnZm9vJywge31dKSB7CisgICAgYXNzZXJ0X3Rocm93c19qcyhSYW5n
ZUVycm9yLCAoKSA9PiB7CisgICAgICBuZXcgV3JpdGFibGVTdHJlYW0oe30sIHsKKyAgICAgICAg
c2l6ZSgpIHsKKyAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgfSwKKyAgICAgICAgaGlnaFdh
dGVyTWFyaworICAgICAgfSk7CisgICAgfSwgYGNvbnN0cnVjdGlvbiBzaG91bGQgdGhyb3cgYSBS
YW5nZUVycm9yIGZvciAke2hpZ2hXYXRlck1hcmt9YCk7CisgIH0KK30sICdXcml0YWJsZSBzdHJl
YW06IGludmFsaWQgc3RyYXRlZ3kuaGlnaFdhdGVyTWFyaycpOworCitwcm9taXNlX3Rlc3QodCA9
PiB7CisgIGNvbnN0IHdzID0gbmV3IFdyaXRhYmxlU3RyZWFtKHt9LCB7CisgICAgc2l6ZSgpIHsK
KyAgICAgIHRocm93IGVycm9yMTsKKyAgICB9LAorICAgIGhpZ2hXYXRlck1hcms6IDUKKyAgfSk7
CisKKyAgY29uc3Qgd3JpdGVyID0gd3MuZ2V0V3JpdGVyKCk7CisKKyAgY29uc3QgcDEgPSBwcm9t
aXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIHdyaXRlci53cml0ZSgnYScpLCAnd3JpdGUg
c2hvdWxkIHJlamVjdCB3aXRoIHRoZSB0aHJvd24gZXJyb3InKTsKKworICBjb25zdCBwMiA9IHBy
b21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMSwgd3JpdGVyLmNsb3NlZCwgJ2Nsb3NlZCBz
aG91bGQgcmVqZWN0IHdpdGggdGhlIHRocm93biBlcnJvcicpOworCisgIHJldHVybiBQcm9taXNl
LmFsbChbcDEsIHAyXSk7Cit9LCAnV3JpdGFibGUgc3RyZWFtOiB0aHJvd2luZyBzdHJhdGVneS5z
aXplIG1ldGhvZCcpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworICBjb25zdCBzaXplcyA9IFtO
YU4sIC1JbmZpbml0eSwgSW5maW5pdHksIC0xXTsKKyAgcmV0dXJuIFByb21pc2UuYWxsKHNpemVz
Lm1hcChzaXplID0+IHsKKyAgICBjb25zdCB3cyA9IG5ldyBXcml0YWJsZVN0cmVhbSh7fSwgewor
ICAgICAgc2l6ZSgpIHsKKyAgICAgICAgcmV0dXJuIHNpemU7CisgICAgICB9LAorICAgICAgaGln
aFdhdGVyTWFyazogNQorICAgIH0pOworCisgICAgY29uc3Qgd3JpdGVyID0gd3MuZ2V0V3JpdGVy
KCk7CisKKyAgICByZXR1cm4gd3JpdGVyLndyaXRlKCdhJykudGhlbigoKSA9PiBhc3NlcnRfdW5y
ZWFjaGVkKCd3cml0ZSBtdXN0IHJlamVjdCcpLCB3cml0ZUUgPT4geworICAgICAgYXNzZXJ0X2Vx
dWFscyh3cml0ZUUubmFtZSwgJ1JhbmdlRXJyb3InLCBgd3JpdGUgbXVzdCByZWplY3Qgd2l0aCBh
IFJhbmdlRXJyb3IgZm9yICR7c2l6ZX1gKTsKKworICAgICAgcmV0dXJuIHdyaXRlci5jbG9zZWQu
dGhlbigoKSA9PiBhc3NlcnRfdW5yZWFjaGVkKCd3cml0ZSBtdXN0IHJlamVjdCcpLCBjbG9zZWRF
ID0+IHsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhjbG9zZWRFLCB3cml0ZUUsIGBjbG9zZWQgc2hv
dWxkIHJlamVjdCB3aXRoIHRoZSBzYW1lIGVycm9yIGFzIHdyaXRlYCk7CisgICAgICB9KTsKKyAg
ICB9KTsKKyAgfSkpOworfSwgJ1dyaXRhYmxlIHN0cmVhbTogaW52YWxpZCBzdHJhdGVneS5zaXpl
IHJldHVybiB2YWx1ZScpOworCit0ZXN0KCgpID0+IHsKKyAgYXNzZXJ0X3Rocm93c19qcyhUeXBl
RXJyb3IsICgpID0+IG5ldyBXcml0YWJsZVN0cmVhbSh1bmRlZmluZWQsIHsKKyAgICBzaXplOiAn
bm90IGEgZnVuY3Rpb24nLAorICAgIGhpZ2hXYXRlck1hcms6IE5hTgorICB9KSwgJ1dyaXRhYmxl
U3RyZWFtIGNvbnN0cnVjdG9yIHNob3VsZCB0aHJvdyBhIFR5cGVFcnJvcicpOworfSwgJ1dyaXRh
YmxlIHN0cmVhbTogaW52YWxpZCBzaXplIGJlYXRzIGludmFsaWQgaGlnaFdhdGVyTWFyaycpOwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
dHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvYmFkLXN0cmF0ZWdpZXMuYW55Lndvcmtlci1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvd3JpdGFibGUtc3RyZWFtcy9iYWQtc3RyYXRlZ2llcy5hbnkud29ya2VyLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5jZWQ1M2ZhOWY5ZmYyYWQ5YjM0NmZjMzlkYjNlYjRhMjM4ZGJlMjg1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvYmFkLXN0cmF0ZWdpZXMuYW55Lndvcmtlci1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSw0MyBAQAorCitGQUlMIFdyaXRhYmxlIHN0cmVhbTogdGhy
b3dpbmcgc3RyYXRlZ3kuc2l6ZSBnZXR0ZXIgYXNzZXJ0X3Rocm93c19leGFjdGx5OiBjb25zdHJ1
Y3Rpb24gc2hvdWxkIHJlLXRocm93IHRoZSBlcnJvciBmdW5jdGlvbiAiKCkgPT4geworICAgIG5l
dyBXcml0YWJsZVN0cmVhbSh7fSwgeworICAgICAgZ2V0IHNpemUoKSB7CisgICAgICAgIHRocm93
IGVycm9yMTsKKyAgICAgIH0sCisgICAgICBoaWdoV2F0ZXJNYXJrOiA1CisgICAgfSk7CisgIH0i
IHRocmV3IG9iamVjdCAiUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRh
YmxlU3RyZWFtIiBidXQgd2UgZXhwZWN0ZWQgaXQgdG8gdGhyb3cgb2JqZWN0ICJlcnJvcjE6IGEg
dW5pcXVlIHN0cmluZyIKK0ZBSUwgcmVqZWN0IGFueSBub24tZnVuY3Rpb24gdmFsdWUgZm9yIHN0
cmF0ZWd5LnNpemUgYXNzZXJ0X3Rocm93c19qczogZnVuY3Rpb24gIigpID0+IHsKKyAgICBuZXcg
V3JpdGFibGVTdHJlYW0oe30sIHsgc2l6ZTogJ2Egc3RyaW5nJyB9KTsKKyAgfSIgdGhyZXcgb2Jq
ZWN0ICJSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0i
ICgiUmVmZXJlbmNlRXJyb3IiKSBleHBlY3RlZCBpbnN0YW5jZSBvZiBmdW5jdGlvbiAiZnVuY3Rp
b24gVHlwZUVycm9yKCkgeworICAgIFtuYXRpdmUgY29kZV0KK30iICgiVHlwZUVycm9yIikKK0ZB
SUwgV3JpdGFibGUgc3RyZWFtOiB0aHJvd2luZyBzdHJhdGVneS5oaWdoV2F0ZXJNYXJrIGdldHRl
ciBhc3NlcnRfdGhyb3dzX2V4YWN0bHk6IGNvbnN0cnVjdGlvbiBzaG91bGQgcmUtdGhyb3cgdGhl
IGVycm9yIGZ1bmN0aW9uICIoKSA9PiB7CisgICAgbmV3IFdyaXRhYmxlU3RyZWFtKHt9LCB7Cisg
ICAgICBzaXplKCkgeworICAgICAgICByZXR1cm4gMTsKKyAgICAgIH0sCisgICAgICBnZXQgaGln
aFdhdGVyTWFyaygpIHsKKyAgICAgICAgdGhyb3cgZXJyb3IxOworICAgICAgfQorICAgIH0pOwor
ICB9IiB0aHJldyBvYmplY3QgIlJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBX
cml0YWJsZVN0cmVhbSIgYnV0IHdlIGV4cGVjdGVkIGl0IHRvIHRocm93IG9iamVjdCAiZXJyb3Ix
OiBhIHVuaXF1ZSBzdHJpbmciCitGQUlMIFdyaXRhYmxlIHN0cmVhbTogaW52YWxpZCBzdHJhdGVn
eS5oaWdoV2F0ZXJNYXJrIGFzc2VydF90aHJvd3NfanM6IGNvbnN0cnVjdGlvbiBzaG91bGQgdGhy
b3cgYSBSYW5nZUVycm9yIGZvciAtMSBmdW5jdGlvbiAiKCkgPT4geworICAgICAgbmV3IFdyaXRh
YmxlU3RyZWFtKHt9LCB7CisgICAgICAgIHNpemUoKSB7CisgICAgICAgICAgcmV0dXJuIDE7Cisg
ICAgICAgIH0sCisgICAgICAgIGhpZ2hXYXRlck1hcmsKKyAgICAgIH0pOworICAgIH0iIHRocmV3
IG9iamVjdCAiUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3Ry
ZWFtIiAoIlJlZmVyZW5jZUVycm9yIikgZXhwZWN0ZWQgaW5zdGFuY2Ugb2YgZnVuY3Rpb24gImZ1
bmN0aW9uIFJhbmdlRXJyb3IoKSB7CisgICAgW25hdGl2ZSBjb2RlXQorfSIgKCJSYW5nZUVycm9y
IikKK0ZBSUwgV3JpdGFibGUgc3RyZWFtOiB0aHJvd2luZyBzdHJhdGVneS5zaXplIG1ldGhvZCBD
YW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBXcml0YWJsZSBzdHJlYW06
IGludmFsaWQgc3RyYXRlZ3kuc2l6ZSByZXR1cm4gdmFsdWUgQ2FuJ3QgZmluZCB2YXJpYWJsZTog
V3JpdGFibGVTdHJlYW0KK0ZBSUwgV3JpdGFibGUgc3RyZWFtOiBpbnZhbGlkIHNpemUgYmVhdHMg
aW52YWxpZCBoaWdoV2F0ZXJNYXJrIGFzc2VydF90aHJvd3NfanM6IFdyaXRhYmxlU3RyZWFtIGNv
bnN0cnVjdG9yIHNob3VsZCB0aHJvdyBhIFR5cGVFcnJvciBmdW5jdGlvbiAiKCkgPT4gbmV3IFdy
aXRhYmxlU3RyZWFtKHVuZGVmaW5lZCwgeworICAgIHNpemU6ICdub3QgYSBmdW5jdGlvbicsCisg
ICAgaGlnaFdhdGVyTWFyazogTmFOCisgIH0pIiB0aHJldyBvYmplY3QgIlJlZmVyZW5jZUVycm9y
OiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbSIgKCJSZWZlcmVuY2VFcnJvciIp
IGV4cGVjdGVkIGluc3RhbmNlIG9mIGZ1bmN0aW9uICJmdW5jdGlvbiBUeXBlRXJyb3IoKSB7Cisg
ICAgW25hdGl2ZSBjb2RlXQorfSIgKCJUeXBlRXJyb3IiKQorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3Ry
ZWFtcy9iYWQtc3RyYXRlZ2llcy5hbnkud29ya2VyLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9iYWQtc3Ry
YXRlZ2llcy5hbnkud29ya2VyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjM4MjkxMzUyOGU2OTNiM2E1ZDU2
YzY2MGE0NTA2MDk4MGI1NDhjMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL2JhZC1z
dHJhdGVnaWVzLmFueS53b3JrZXIuaHRtbApAQCAtMCwwICsxIEBACis8IS0tIFRoaXMgZmlsZSBp
cyByZXF1aXJlZCBmb3IgV2ViS2l0IHRlc3QgaW5mcmFzdHJ1Y3R1cmUgdG8gcnVuIHRoZSB0ZW1w
bGF0ZWQgdGVzdCAtLT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFi
bGUtc3RyZWFtcy9iYWQtdW5kZXJseWluZy1zaW5rcy5hbnktZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0
cmVhbXMvYmFkLXVuZGVybHlpbmctc2lua3MuYW55LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
NDZmNzUwZGQ0NDdiZDQ1NTQyNGFkYjk3NmM4OTZhYjMyMGQ5NjU3Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dy
aXRhYmxlLXN0cmVhbXMvYmFkLXVuZGVybHlpbmctc2lua3MuYW55LWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDI3IEBACisKK1BBU1Mgc3RhcnQ6IGVycm9ycyBpbiBzdGFydCBjYXVzZSBXcml0YWJs
ZVN0cmVhbSBjb25zdHJ1Y3RvciB0byB0aHJvdyAKK0ZBSUwgY2xvc2U6IHRocm93aW5nIG1ldGhv
ZCBzaG91bGQgY2F1c2Ugd3JpdGVyIGNsb3NlKCkgYW5kIHJlYWR5IHRvIHJlamVjdCB3cy5nZXRX
cml0ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3JpdGVyKCknLCAnd3MuZ2V0V3Jp
dGVyJyBpcyB1bmRlZmluZWQpCitGQUlMIGNsb3NlOiByZXR1cm5pbmcgYSByZWplY3RlZCBwcm9t
aXNlIHNob3VsZCBjYXVzZSB3cml0ZXIgY2xvc2UoKSBhbmQgcmVhZHkgdG8gcmVqZWN0IHdzLmdl
dFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRX
cml0ZXInIGlzIHVuZGVmaW5lZCkKK0ZBSUwgY2xvc2U6IHRocm93aW5nIGdldHRlciBzaG91bGQg
Y2F1c2UgY29uc3RydWN0b3IgdG8gdGhyb3cgYXNzZXJ0X3Rocm93c19leGFjdGx5OiBjb25zdHJ1
Y3RvciBzaG91bGQgdGhyb3cgZnVuY3Rpb24gIigpID0+IG5ldyBXcml0YWJsZVN0cmVhbSh7Cisg
ICAgZ2V0IGNsb3NlKCkgeworICAgICAgdGhyb3cgZXJyb3IxOworICAgIH0KKyAgfSkiIGRpZCBu
b3QgdGhyb3cKK0ZBSUwgd3JpdGU6IHRocm93aW5nIGdldHRlciBzaG91bGQgY2F1c2Ugd3JpdGUo
KSBhbmQgY2xvc2VkIHRvIHJlamVjdCBhc3NlcnRfdGhyb3dzX2V4YWN0bHk6IGNvbnN0cnVjdG9y
IHNob3VsZCB0aHJvdyBmdW5jdGlvbiAiKCkgPT4gbmV3IFdyaXRhYmxlU3RyZWFtKHsKKyAgICBn
ZXQgd3JpdGUoKSB7CisgICAgICB0aHJvdyBlcnJvcjE7CisgICAgfQorICB9KSIgZGlkIG5vdCB0
aHJvdworRkFJTCB3cml0ZTogdGhyb3dpbmcgbWV0aG9kIHNob3VsZCBjYXVzZSB3cml0ZSgpIGFu
ZCBjbG9zZWQgdG8gcmVqZWN0IHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3
cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkKK0ZBSUwgd3JpdGU6
IHJldHVybmluZyBhIHByb21pc2UgdGhhdCBiZWNvbWVzIHJlamVjdGVkIGFmdGVyIHRoZSB3cml0
ZXIgd3JpdGUoKSBzaG91bGQgY2F1c2Ugd3JpdGVyIHdyaXRlKCkgYW5kIHJlYWR5IHRvIHJlamVj
dCBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJU
eXBlRXJyb3I6IHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0
ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkiCitGQUlMIHdyaXRlOiByZXR1cm5p
bmcgYSByZWplY3RlZCBwcm9taXNlIChzZWNvbmQgd3JpdGUpIHNob3VsZCBjYXVzZSB3cml0ZXIg
d3JpdGUoKSBhbmQgcmVhZHkgdG8gcmVqZWN0IHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlv
bi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkKK0ZB
SUwgYWJvcnQ6IG5vbi1mdW5jdGlvbiBhYm9ydCBtZXRob2Qgd2l0aCAuYXBwbHkgYXNzZXJ0X3Ro
cm93c19qczogY29uc3RydWN0b3Igc2hvdWxkIHRocm93IGZ1bmN0aW9uICIoKSA9PiBuZXcgV3Jp
dGFibGVTdHJlYW0oeworICAgIGFib3J0OiB7IGFwcGx5KCkge30gfQorICB9KSIgZGlkIG5vdCB0
aHJvdworRkFJTCBhYm9ydDogdGhyb3dpbmcgZ2V0dGVyIHNob3VsZCBjYXVzZSBhYm9ydCgpIGFu
ZCBjbG9zZWQgdG8gcmVqZWN0IGFzc2VydF90aHJvd3NfZXhhY3RseTogY29uc3RydWN0b3Igc2hv
dWxkIHRocm93IGZ1bmN0aW9uICIoKSA9PiBuZXcgV3JpdGFibGVTdHJlYW0oeworICAgIGdldCBh
Ym9ydCgpIHsKKyAgICAgIHRocm93IGVycm9yMTsKKyAgICB9CisgIH0pIiBkaWQgbm90IHRocm93
CitGQUlMIGFib3J0OiB0aHJvd2luZyBtZXRob2Qgc2hvdWxkIGNhdXNlIGFib3J0KCkgYW5kIGNs
b3NlZCB0byByZWplY3Qgd3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdl
dFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicgaXMgdW5kZWZpbmVkKQorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFi
bGUtc3RyZWFtcy9iYWQtdW5kZXJseWluZy1zaW5rcy5hbnkuaHRtbCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL2Jh
ZC11bmRlcmx5aW5nLXNpbmtzLmFueS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzODI5MTM1MjhlNjkzYjNh
NWQ1NmM2NjBhNDUwNjA5ODBiNTQ4YzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9i
YWQtdW5kZXJseWluZy1zaW5rcy5hbnkuaHRtbApAQCAtMCwwICsxIEBACis8IS0tIFRoaXMgZmls
ZSBpcyByZXF1aXJlZCBmb3IgV2ViS2l0IHRlc3QgaW5mcmFzdHJ1Y3R1cmUgdG8gcnVuIHRoZSB0
ZW1wbGF0ZWQgdGVzdCAtLT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3Jp
dGFibGUtc3RyZWFtcy9iYWQtdW5kZXJseWluZy1zaW5rcy5hbnkuanMgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9i
YWQtdW5kZXJseWluZy1zaW5rcy5hbnkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2YwNGUwMWIwYzBjNGRhYTBi
MTkzZTQ2ZmVlNjU4M2MwZWQ3Y2JhMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL2Jh
ZC11bmRlcmx5aW5nLXNpbmtzLmFueS5qcwpAQCAtMCwwICsxLDE4NiBAQAorLy8gTUVUQTogZ2xv
YmFsPXdpbmRvdyx3b3JrZXIsanNzaGVsbAorLy8gTUVUQTogc2NyaXB0PS4uL3Jlc291cmNlcy90
ZXN0LXV0aWxzLmpzCisvLyBNRVRBOiBzY3JpcHQ9Li4vcmVzb3VyY2VzL3JlY29yZGluZy1zdHJl
YW1zLmpzCisndXNlIHN0cmljdCc7CisKK2NvbnN0IGVycm9yMSA9IG5ldyBFcnJvcignZXJyb3Ix
Jyk7CitlcnJvcjEubmFtZSA9ICdlcnJvcjEnOworCit0ZXN0KCgpID0+IHsKKyAgYXNzZXJ0X3Ro
cm93c19leGFjdGx5KGVycm9yMSwgKCkgPT4geworICAgIG5ldyBXcml0YWJsZVN0cmVhbSh7Cisg
ICAgICBnZXQgc3RhcnQoKSB7CisgICAgICAgIHRocm93IGVycm9yMTsKKyAgICAgIH0KKyAgICB9
KTsKKyAgfSwgJ2NvbnN0cnVjdG9yIHNob3VsZCB0aHJvdyBzYW1lIGVycm9yIGFzIHRocm93aW5n
IHN0YXJ0IGdldHRlcicpOworCisgIGFzc2VydF90aHJvd3NfZXhhY3RseShlcnJvcjEsICgpID0+
IHsKKyAgICBuZXcgV3JpdGFibGVTdHJlYW0oeworICAgICAgc3RhcnQoKSB7CisgICAgICAgIHRo
cm93IGVycm9yMTsKKyAgICAgIH0KKyAgICB9KTsKKyAgfSwgJ2NvbnN0cnVjdG9yIHNob3VsZCB0
aHJvdyBzYW1lIGVycm9yIGFzIHRocm93aW5nIHN0YXJ0IG1ldGhvZCcpOworCisgIGFzc2VydF90
aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiB7CisgICAgbmV3IFdyaXRhYmxlU3RyZWFtKHsKKyAg
ICAgIHN0YXJ0OiAnbm90IGEgZnVuY3Rpb24gb3IgdW5kZWZpbmVkJworICAgIH0pOworICB9LCAn
Y29uc3RydWN0b3Igc2hvdWxkIHRocm93IFR5cGVFcnJvciB3aGVuIHBhc3NlZCBhIG5vbi1mdW5j
dGlvbiBzdGFydCBwcm9wZXJ0eScpOworCisgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAo
KSA9PiB7CisgICAgbmV3IFdyaXRhYmxlU3RyZWFtKHsKKyAgICAgIHN0YXJ0OiB7IGFwcGx5KCkg
e30gfQorICAgIH0pOworICB9LCAnY29uc3RydWN0b3Igc2hvdWxkIHRocm93IFR5cGVFcnJvciB3
aGVuIHBhc3NlZCBhIG5vbi1mdW5jdGlvbiBzdGFydCBwcm9wZXJ0eSB3aXRoIGFuIC5hcHBseSBt
ZXRob2QnKTsKK30sICdzdGFydDogZXJyb3JzIGluIHN0YXJ0IGNhdXNlIFdyaXRhYmxlU3RyZWFt
IGNvbnN0cnVjdG9yIHRvIHRocm93Jyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKworICBjb25z
dCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKHsKKyAgICBjbG9zZSgpIHsKKyAgICAgIHRo
cm93IGVycm9yMTsKKyAgICB9CisgIH0pOworCisgIGNvbnN0IHdyaXRlciA9IHdzLmdldFdyaXRl
cigpOworCisgIHJldHVybiBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIHdyaXRl
ci5jbG9zZSgpLCAnY2xvc2UoKSBwcm9taXNlIG11c3QgcmVqZWN0IHdpdGggdGhlIHRocm93biBl
cnJvcicpCisgIC50aGVuKCgpID0+IHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMSwg
d3JpdGVyLnJlYWR5LCAncmVhZHkgcHJvbWlzZSBtdXN0IHJlamVjdCB3aXRoIHRoZSB0aHJvd24g
ZXJyb3InKSkKKyAgLnRoZW4oKCkgPT4gcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3Ix
LCB3cml0ZXIuY2xvc2VkLCAnY2xvc2VkIHByb21pc2UgbXVzdCByZWplY3Qgd2l0aCB0aGUgdGhy
b3duIGVycm9yJykpCisgIC50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdz
LmV2ZW50cywgWydjbG9zZSddKTsKKyAgfSk7CisKK30sICdjbG9zZTogdGhyb3dpbmcgbWV0aG9k
IHNob3VsZCBjYXVzZSB3cml0ZXIgY2xvc2UoKSBhbmQgcmVhZHkgdG8gcmVqZWN0Jyk7CisKK3By
b21pc2VfdGVzdCh0ID0+IHsKKworICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFt
KHsKKyAgICBjbG9zZSgpIHsKKyAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcjEpOwor
ICAgIH0KKyAgfSk7CisKKyAgY29uc3Qgd3JpdGVyID0gd3MuZ2V0V3JpdGVyKCk7CisKKyAgcmV0
dXJuIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMSwgd3JpdGVyLmNsb3NlKCksICdj
bG9zZSgpIHByb21pc2UgbXVzdCByZWplY3Qgd2l0aCB0aGUgc2FtZSBlcnJvcicpCisgIC50aGVu
KCgpID0+IHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMSwgd3JpdGVyLnJlYWR5LCAn
cmVhZHkgcHJvbWlzZSBtdXN0IHJlamVjdCB3aXRoIHRoZSBzYW1lIGVycm9yJykpCisgIC50aGVu
KCgpID0+IGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ2Nsb3NlJ10pKTsKKworfSwg
J2Nsb3NlOiByZXR1cm5pbmcgYSByZWplY3RlZCBwcm9taXNlIHNob3VsZCBjYXVzZSB3cml0ZXIg
Y2xvc2UoKSBhbmQgcmVhZHkgdG8gcmVqZWN0Jyk7CisKK3Rlc3QoKCkgPT4geworICBhc3NlcnRf
dGhyb3dzX2V4YWN0bHkoZXJyb3IxLCAoKSA9PiBuZXcgV3JpdGFibGVTdHJlYW0oeworICAgIGdl
dCBjbG9zZSgpIHsKKyAgICAgIHRocm93IGVycm9yMTsKKyAgICB9CisgIH0pLCAnY29uc3RydWN0
b3Igc2hvdWxkIHRocm93Jyk7Cit9LCAnY2xvc2U6IHRocm93aW5nIGdldHRlciBzaG91bGQgY2F1
c2UgY29uc3RydWN0b3IgdG8gdGhyb3cnKTsKKwordGVzdCgoKSA9PiB7CisgIGFzc2VydF90aHJv
d3NfZXhhY3RseShlcnJvcjEsICgpID0+IG5ldyBXcml0YWJsZVN0cmVhbSh7CisgICAgZ2V0IHdy
aXRlKCkgeworICAgICAgdGhyb3cgZXJyb3IxOworICAgIH0KKyAgfSksICdjb25zdHJ1Y3RvciBz
aG91bGQgdGhyb3cnKTsKK30sICd3cml0ZTogdGhyb3dpbmcgZ2V0dGVyIHNob3VsZCBjYXVzZSB3
cml0ZSgpIGFuZCBjbG9zZWQgdG8gcmVqZWN0Jyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAg
Y29uc3Qgd3MgPSBuZXcgV3JpdGFibGVTdHJlYW0oeworICAgIHdyaXRlKCkgeworICAgICAgdGhy
b3cgZXJyb3IxOworICAgIH0KKyAgfSk7CisKKyAgY29uc3Qgd3JpdGVyID0gd3MuZ2V0V3JpdGVy
KCk7CisKKyAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMSwgd3JpdGVy
LndyaXRlKCdhJyksICd3cml0ZSBzaG91bGQgcmVqZWN0IHdpdGggdGhlIHRocm93biBlcnJvcicp
CisgIC50aGVuKCgpID0+IHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMSwgd3JpdGVy
LmNsb3NlZCwgJ2Nsb3NlZCBzaG91bGQgcmVqZWN0IHdpdGggdGhlIHRocm93biBlcnJvcicpKTsK
K30sICd3cml0ZTogdGhyb3dpbmcgbWV0aG9kIHNob3VsZCBjYXVzZSB3cml0ZSgpIGFuZCBjbG9z
ZWQgdG8gcmVqZWN0Jyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKworICBsZXQgcmVqZWN0U2lu
a1dyaXRlUHJvbWlzZTsKKyAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSh7Cisg
ICAgd3JpdGUoKSB7CisgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHIsIHJlamVjdCkgPT4gewor
ICAgICAgICByZWplY3RTaW5rV3JpdGVQcm9taXNlID0gcmVqZWN0OworICAgICAgfSk7CisgICAg
fQorICB9KTsKKworICByZXR1cm4gZmx1c2hBc3luY0V2ZW50cygpLnRoZW4oKCkgPT4geworICAg
IGNvbnN0IHdyaXRlciA9IHdzLmdldFdyaXRlcigpOworICAgIGNvbnN0IHdyaXRlUHJvbWlzZSA9
IHdyaXRlci53cml0ZSgnYScpOworICAgIHJlamVjdFNpbmtXcml0ZVByb21pc2UoZXJyb3IxKTsK
KworICAgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAgICBwcm9taXNlX3JlamVjdHNfZXhhY3Rs
eSh0LCBlcnJvcjEsIHdyaXRlUHJvbWlzZSwgJ3dyaXRlciB3cml0ZSBtdXN0IHJlamVjdCB3aXRo
IHRoZSBzYW1lIGVycm9yJyksCisgICAgICBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJv
cjEsIHdyaXRlci5yZWFkeSwgJ3JlYWR5IHByb21pc2UgbXVzdCByZWplY3Qgd2l0aCB0aGUgc2Ft
ZSBlcnJvcicpCisgICAgXSk7CisgIH0pCisgIC50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfYXJy
YXlfZXF1YWxzKHdzLmV2ZW50cywgWyd3cml0ZScsICdhJ10pOworICB9KTsKKworfSwgJ3dyaXRl
OiByZXR1cm5pbmcgYSBwcm9taXNlIHRoYXQgYmVjb21lcyByZWplY3RlZCBhZnRlciB0aGUgd3Jp
dGVyIHdyaXRlKCkgc2hvdWxkIGNhdXNlIHdyaXRlciB3cml0ZSgpIGFuZCByZWFkeSAnICsKKyAg
ICd0byByZWplY3QnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworCisgIGNvbnN0IHdzID0gcmVj
b3JkaW5nV3JpdGFibGVTdHJlYW0oeworICAgIHdyaXRlKCkgeworICAgICAgaWYgKHdzLmV2ZW50
cy5sZW5ndGggPT09IDIpIHsKKyAgICAgICAgcmV0dXJuIGRlbGF5KDApOworICAgICAgfQorCisg
ICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyb3IxKTsKKyAgICB9CisgIH0pOworCisgIGNv
bnN0IHdyaXRlciA9IHdzLmdldFdyaXRlcigpOworCisgIC8vIERvIG5vdCB3YWl0IGZvciB0aGlz
OyB3ZSB3YW50IHRvIHRlc3QgdGhlIHJlYWR5IHByb21pc2Ugd2hlbiB0aGUgc3RyZWFtIGlzICJm
dWxsIiAoZGVzaXJlZFNpemUgPSAwKSwgYnV0IGlmIHdlIHdhaXQKKyAgLy8gdGhlbiB0aGUgc3Ry
ZWFtIHdpbGwgdHJhbnNpdGlvbiBiYWNrIHRvICJlbXB0eSIgKGRlc2lyZWRTaXplID0gMSkKKyAg
d3JpdGVyLndyaXRlKCdhJyk7CisgIGNvbnN0IHJlYWR5UHJvbWlzZSA9IHdyaXRlci5yZWFkeTsK
KworICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCB3cml0ZXIud3Jp
dGUoJ2InKSwgJ3NlY29uZCB3cml0ZSBtdXN0IHJlamVjdCB3aXRoIHRoZSBzYW1lIGVycm9yJyku
dGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X2VxdWFscyh3cml0ZXIucmVhZHksIHJlYWR5UHJvbWlz
ZSwKKyAgICAgICd0aGUgcmVhZHkgcHJvbWlzZSBtdXN0IG5vdCBjaGFuZ2UsIHNpbmNlIHRoZSBx
dWV1ZSB3YXMgZnVsbCBhZnRlciB0aGUgZmlyc3Qgd3JpdGUsIHNvIHRoZSBwZW5kaW5nIG9uZSBz
aW1wbHkgJyArCisgICAgICAndHJhbnNpdGlvbmVkJyk7CisgICAgcmV0dXJuIHByb21pc2VfcmVq
ZWN0c19leGFjdGx5KHQsIGVycm9yMSwgd3JpdGVyLnJlYWR5LCAncmVhZHkgcHJvbWlzZSBtdXN0
IHJlamVjdCB3aXRoIHRoZSBzYW1lIGVycm9yJyk7CisgIH0pCisgIC50aGVuKCgpID0+IGFzc2Vy
dF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ3dyaXRlJywgJ2EnLCAnd3JpdGUnLCAnYiddKSk7
CisKK30sICd3cml0ZTogcmV0dXJuaW5nIGEgcmVqZWN0ZWQgcHJvbWlzZSAoc2Vjb25kIHdyaXRl
KSBzaG91bGQgY2F1c2Ugd3JpdGVyIHdyaXRlKCkgYW5kIHJlYWR5IHRvIHJlamVjdCcpOworCit0
ZXN0KCgpID0+IHsKKyAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IG5ldyBXcml0
YWJsZVN0cmVhbSh7CisgICAgYWJvcnQ6IHsgYXBwbHkoKSB7fSB9CisgIH0pLCAnY29uc3RydWN0
b3Igc2hvdWxkIHRocm93Jyk7Cit9LCAnYWJvcnQ6IG5vbi1mdW5jdGlvbiBhYm9ydCBtZXRob2Qg
d2l0aCAuYXBwbHknKTsKKwordGVzdCgoKSA9PiB7CisgIGFzc2VydF90aHJvd3NfZXhhY3RseShl
cnJvcjEsICgpID0+IG5ldyBXcml0YWJsZVN0cmVhbSh7CisgICAgZ2V0IGFib3J0KCkgeworICAg
ICAgdGhyb3cgZXJyb3IxOworICAgIH0KKyAgfSksICdjb25zdHJ1Y3RvciBzaG91bGQgdGhyb3cn
KTsKK30sICdhYm9ydDogdGhyb3dpbmcgZ2V0dGVyIHNob3VsZCBjYXVzZSBhYm9ydCgpIGFuZCBj
bG9zZWQgdG8gcmVqZWN0Jyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgY29uc3QgYWJvcnRS
ZWFzb24gPSBuZXcgRXJyb3IoJ2RpZmZlcmVudCBzdHJpbmcnKTsKKyAgY29uc3Qgd3MgPSBuZXcg
V3JpdGFibGVTdHJlYW0oeworICAgIGFib3J0KCkgeworICAgICAgdGhyb3cgZXJyb3IxOworICAg
IH0KKyAgfSk7CisKKyAgY29uc3Qgd3JpdGVyID0gd3MuZ2V0V3JpdGVyKCk7CisKKyAgcmV0dXJu
IHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMSwgd3JpdGVyLmFib3J0KGFib3J0UmVh
c29uKSwgJ2Fib3J0IHNob3VsZCByZWplY3Qgd2l0aCB0aGUgdGhyb3duIGVycm9yJykKKyAgLnRo
ZW4oKCkgPT4gcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgYWJvcnRSZWFzb24sIHdyaXRlci5j
bG9zZWQsICdjbG9zZWQgc2hvdWxkIHJlamVjdCB3aXRoIGFib3J0UmVhc29uJykpOworfSwgJ2Fi
b3J0OiB0aHJvd2luZyBtZXRob2Qgc2hvdWxkIGNhdXNlIGFib3J0KCkgYW5kIGNsb3NlZCB0byBy
ZWplY3QnKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL2JhZC11bmRlcmx5aW5nLXNpbmtzLmFu
eS53b3JrZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvYmFkLXVuZGVybHlpbmctc2lua3Mu
YW55Lndvcmtlci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjMyNzcyMzVjMzcxZmNkYzFmNzc4
NWUwNDc4Y2ZmMzE3ZmZjODEzNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL2JhZC11
bmRlcmx5aW5nLXNpbmtzLmFueS53b3JrZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMzUgQEAK
KworRkFJTCBzdGFydDogZXJyb3JzIGluIHN0YXJ0IGNhdXNlIFdyaXRhYmxlU3RyZWFtIGNvbnN0
cnVjdG9yIHRvIHRocm93IGFzc2VydF90aHJvd3NfZXhhY3RseTogY29uc3RydWN0b3Igc2hvdWxk
IHRocm93IHNhbWUgZXJyb3IgYXMgdGhyb3dpbmcgc3RhcnQgZ2V0dGVyIGZ1bmN0aW9uICIoKSA9
PiB7CisgICAgbmV3IFdyaXRhYmxlU3RyZWFtKHsKKyAgICAgIGdldCBzdGFydCgpIHsKKyAgICAg
ICAgdGhyb3cgZXJyb3IxOworICAgICAgfQorICAgIH0pOworICB9IiB0aHJldyBvYmplY3QgIlJl
ZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbSIgYnV0IHdl
IGV4cGVjdGVkIGl0IHRvIHRocm93IG9iamVjdCAiZXJyb3IxOiBlcnJvcjEiCitGQUlMIGNsb3Nl
OiB0aHJvd2luZyBtZXRob2Qgc2hvdWxkIGNhdXNlIHdyaXRlciBjbG9zZSgpIGFuZCByZWFkeSB0
byByZWplY3QgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgY2xvc2U6
IHJldHVybmluZyBhIHJlamVjdGVkIHByb21pc2Ugc2hvdWxkIGNhdXNlIHdyaXRlciBjbG9zZSgp
IGFuZCByZWFkeSB0byByZWplY3QgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0K
K0ZBSUwgY2xvc2U6IHRocm93aW5nIGdldHRlciBzaG91bGQgY2F1c2UgY29uc3RydWN0b3IgdG8g
dGhyb3cgYXNzZXJ0X3Rocm93c19leGFjdGx5OiBjb25zdHJ1Y3RvciBzaG91bGQgdGhyb3cgZnVu
Y3Rpb24gIigpID0+IG5ldyBXcml0YWJsZVN0cmVhbSh7CisgICAgZ2V0IGNsb3NlKCkgeworICAg
ICAgdGhyb3cgZXJyb3IxOworICAgIH0KKyAgfSkiIHRocmV3IG9iamVjdCAiUmVmZXJlbmNlRXJy
b3I6IENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtIiBidXQgd2UgZXhwZWN0ZWQg
aXQgdG8gdGhyb3cgb2JqZWN0ICJlcnJvcjE6IGVycm9yMSIKK0ZBSUwgd3JpdGU6IHRocm93aW5n
IGdldHRlciBzaG91bGQgY2F1c2Ugd3JpdGUoKSBhbmQgY2xvc2VkIHRvIHJlamVjdCBhc3NlcnRf
dGhyb3dzX2V4YWN0bHk6IGNvbnN0cnVjdG9yIHNob3VsZCB0aHJvdyBmdW5jdGlvbiAiKCkgPT4g
bmV3IFdyaXRhYmxlU3RyZWFtKHsKKyAgICBnZXQgd3JpdGUoKSB7CisgICAgICB0aHJvdyBlcnJv
cjE7CisgICAgfQorICB9KSIgdGhyZXcgb2JqZWN0ICJSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmlu
ZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0iIGJ1dCB3ZSBleHBlY3RlZCBpdCB0byB0aHJvdyBv
YmplY3QgImVycm9yMTogZXJyb3IxIgorRkFJTCB3cml0ZTogdGhyb3dpbmcgbWV0aG9kIHNob3Vs
ZCBjYXVzZSB3cml0ZSgpIGFuZCBjbG9zZWQgdG8gcmVqZWN0IENhbid0IGZpbmQgdmFyaWFibGU6
IFdyaXRhYmxlU3RyZWFtCitGQUlMIHdyaXRlOiByZXR1cm5pbmcgYSBwcm9taXNlIHRoYXQgYmVj
b21lcyByZWplY3RlZCBhZnRlciB0aGUgd3JpdGVyIHdyaXRlKCkgc2hvdWxkIGNhdXNlIHdyaXRl
ciB3cml0ZSgpIGFuZCByZWFkeSB0byByZWplY3QgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFi
bGVTdHJlYW0KK0ZBSUwgd3JpdGU6IHJldHVybmluZyBhIHJlamVjdGVkIHByb21pc2UgKHNlY29u
ZCB3cml0ZSkgc2hvdWxkIGNhdXNlIHdyaXRlciB3cml0ZSgpIGFuZCByZWFkeSB0byByZWplY3Qg
Q2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgYWJvcnQ6IG5vbi1mdW5j
dGlvbiBhYm9ydCBtZXRob2Qgd2l0aCAuYXBwbHkgYXNzZXJ0X3Rocm93c19qczogY29uc3RydWN0
b3Igc2hvdWxkIHRocm93IGZ1bmN0aW9uICIoKSA9PiBuZXcgV3JpdGFibGVTdHJlYW0oeworICAg
IGFib3J0OiB7IGFwcGx5KCkge30gfQorICB9KSIgdGhyZXcgb2JqZWN0ICJSZWZlcmVuY2VFcnJv
cjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0iICgiUmVmZXJlbmNlRXJyb3Ii
KSBleHBlY3RlZCBpbnN0YW5jZSBvZiBmdW5jdGlvbiAiZnVuY3Rpb24gVHlwZUVycm9yKCkgewor
ICAgIFtuYXRpdmUgY29kZV0KK30iICgiVHlwZUVycm9yIikKK0ZBSUwgYWJvcnQ6IHRocm93aW5n
IGdldHRlciBzaG91bGQgY2F1c2UgYWJvcnQoKSBhbmQgY2xvc2VkIHRvIHJlamVjdCBhc3NlcnRf
dGhyb3dzX2V4YWN0bHk6IGNvbnN0cnVjdG9yIHNob3VsZCB0aHJvdyBmdW5jdGlvbiAiKCkgPT4g
bmV3IFdyaXRhYmxlU3RyZWFtKHsKKyAgICBnZXQgYWJvcnQoKSB7CisgICAgICB0aHJvdyBlcnJv
cjE7CisgICAgfQorICB9KSIgdGhyZXcgb2JqZWN0ICJSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmlu
ZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0iIGJ1dCB3ZSBleHBlY3RlZCBpdCB0byB0aHJvdyBv
YmplY3QgImVycm9yMTogZXJyb3IxIgorRkFJTCBhYm9ydDogdGhyb3dpbmcgbWV0aG9kIHNob3Vs
ZCBjYXVzZSBhYm9ydCgpIGFuZCBjbG9zZWQgdG8gcmVqZWN0IENhbid0IGZpbmQgdmFyaWFibGU6
IFdyaXRhYmxlU3RyZWFtCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL2JhZC11bmRlcmx5aW5n
LXNpbmtzLmFueS53b3JrZXIuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL2JhZC11bmRlcmx5aW5nLXNpbmtz
LmFueS53b3JrZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMzgyOTEzNTI4ZTY5M2IzYTVkNTZjNjYwYTQ1
MDYwOTgwYjU0OGMzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvYmFkLXVuZGVybHlp
bmctc2lua3MuYW55Lndvcmtlci5odG1sCkBAIC0wLDAgKzEgQEAKKzwhLS0gVGhpcyBmaWxlIGlz
IHJlcXVpcmVkIGZvciBXZWJLaXQgdGVzdCBpbmZyYXN0cnVjdHVyZSB0byBydW4gdGhlIHRlbXBs
YXRlZCB0ZXN0IC0tPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJs
ZS1zdHJlYW1zL2J5dGUtbGVuZ3RoLXF1ZXVpbmctc3RyYXRlZ3kuYW55LWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0
YWJsZS1zdHJlYW1zL2J5dGUtbGVuZ3RoLXF1ZXVpbmctc3RyYXRlZ3kuYW55LWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5kMzJkYmQ5MzQ1NTZkYzQzZDM4OWFjMTI5OWViYTY4NjUwMmE0YTRiCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvYnl0ZS1sZW5ndGgtcXVldWluZy1zdHJhdGVn
eS5hbnktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorCitGQUlMIENsb3NpbmcgYSB3cml0
YWJsZSBzdHJlYW0gd2l0aCBpbi1mbGlnaHQgd3JpdGVzIGJlbG93IHRoZSBoaWdoIHdhdGVyIG1h
cmsgZGVsYXlzIHRoZSBjbG9zZSBjYWxsIHByb3Blcmx5IHdzLmdldFdyaXRlciBpcyBub3QgYSBm
dW5jdGlvbi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5l
ZCkKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvYnl0ZS1sZW5ndGgtcXVldWluZy1zdHJhdGVn
eS5hbnkuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL2J5dGUtbGVuZ3RoLXF1ZXVpbmctc3RyYXRlZ3kuYW55
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMjM4MjkxMzUyOGU2OTNiM2E1ZDU2YzY2MGE0NTA2MDk4MGI1NDhj
MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL2J5dGUtbGVuZ3RoLXF1ZXVpbmctc3Ry
YXRlZ3kuYW55Lmh0bWwKQEAgLTAsMCArMSBAQAorPCEtLSBUaGlzIGZpbGUgaXMgcmVxdWlyZWQg
Zm9yIFdlYktpdCB0ZXN0IGluZnJhc3RydWN0dXJlIHRvIHJ1biB0aGUgdGVtcGxhdGVkIHRlc3Qg
LS0+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMv
Ynl0ZS1sZW5ndGgtcXVldWluZy1zdHJhdGVneS5hbnkuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9ieXRlLWxl
bmd0aC1xdWV1aW5nLXN0cmF0ZWd5LmFueS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YTYxZGQ3Y2M2OTc4N2Vh
YmU5Y2ZmMmQ4ZTUwMGM2OTRmNGJlZWU3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMv
Ynl0ZS1sZW5ndGgtcXVldWluZy1zdHJhdGVneS5hbnkuanMKQEAgLTAsMCArMSwyOCBAQAorLy8g
TUVUQTogZ2xvYmFsPXdpbmRvdyx3b3JrZXIsanNzaGVsbAorJ3VzZSBzdHJpY3QnOworCitwcm9t
aXNlX3Rlc3QodCA9PiB7CisgIGxldCBpc0RvbmUgPSBmYWxzZTsKKyAgY29uc3Qgd3MgPSBuZXcg
V3JpdGFibGVTdHJlYW0oCisgICAgeworICAgICAgd3JpdGUoKSB7CisgICAgICAgIHJldHVybiBu
ZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKKyAgICAgICAgICB0LnN0ZXBfdGltZW91dCgoKSA9PiB7
CisgICAgICAgICAgICBpc0RvbmUgPSB0cnVlOworICAgICAgICAgICAgcmVzb2x2ZSgpOworICAg
ICAgICAgIH0sIDIwMCk7CisgICAgICAgIH0pOworICAgICAgfSwKKworICAgICAgY2xvc2UoKSB7
CisgICAgICAgIGFzc2VydF90cnVlKGlzRG9uZSwgJ2Nsb3NlIGlzIG9ubHkgY2FsbGVkIG9uY2Ug
dGhlIHByb21pc2UgaGFzIGJlZW4gcmVzb2x2ZWQnKTsKKyAgICAgIH0KKyAgICB9LAorICAgIG5l
dyBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5KHsgaGlnaFdhdGVyTWFyazogMTAyNCAqIDE2IH0p
CisgICk7CisKKyAgY29uc3Qgd3JpdGVyID0gd3MuZ2V0V3JpdGVyKCk7CisgIHdyaXRlci53cml0
ZSh7IGJ5dGVMZW5ndGg6IDEwMjQgfSk7CisKKyAgcmV0dXJuIHdyaXRlci5jbG9zZSgpOworfSwg
J0Nsb3NpbmcgYSB3cml0YWJsZSBzdHJlYW0gd2l0aCBpbi1mbGlnaHQgd3JpdGVzIGJlbG93IHRo
ZSBoaWdoIHdhdGVyIG1hcmsgZGVsYXlzIHRoZSBjbG9zZSBjYWxsIHByb3Blcmx5Jyk7CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvd3JpdGFibGUtc3RyZWFtcy9ieXRlLWxlbmd0aC1xdWV1aW5nLXN0cmF0ZWd5LmFueS53b3Jr
ZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvYnl0ZS1sZW5ndGgtcXVldWluZy1zdHJhdGVn
eS5hbnkud29ya2VyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45Zjc1NDFkNGQ4NGM5MWQ0ZTUx
Yzg5NjVkNGZkNjNlYTlmYWQ2NTY4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvYnl0
ZS1sZW5ndGgtcXVldWluZy1zdHJhdGVneS5hbnkud29ya2VyLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDMgQEAKKworRkFJTCBDbG9zaW5nIGEgd3JpdGFibGUgc3RyZWFtIHdpdGggaW4tZmxpZ2h0
IHdyaXRlcyBiZWxvdyB0aGUgaGlnaCB3YXRlciBtYXJrIGRlbGF5cyB0aGUgY2xvc2UgY2FsbCBw
cm9wZXJseSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3Jp
dGFibGUtc3RyZWFtcy9ieXRlLWxlbmd0aC1xdWV1aW5nLXN0cmF0ZWd5LmFueS53b3JrZXIuaHRt
bCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93
cml0YWJsZS1zdHJlYW1zL2J5dGUtbGVuZ3RoLXF1ZXVpbmctc3RyYXRlZ3kuYW55Lndvcmtlci5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjIzODI5MTM1MjhlNjkzYjNhNWQ1NmM2NjBhNDUwNjA5ODBiNTQ4YzMK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9ieXRlLWxlbmd0aC1xdWV1aW5nLXN0cmF0
ZWd5LmFueS53b3JrZXIuaHRtbApAQCAtMCwwICsxIEBACis8IS0tIFRoaXMgZmlsZSBpcyByZXF1
aXJlZCBmb3IgV2ViS2l0IHRlc3QgaW5mcmFzdHJ1Y3R1cmUgdG8gcnVuIHRoZSB0ZW1wbGF0ZWQg
dGVzdCAtLT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3Ry
ZWFtcy9jbG9zZS5hbnktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvY2xvc2UuYW55LWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5jZjE1NDUyN2JlZWNjNDUxMzk0ZDRjZThjNmVkODU0ZjA1NmM0
MTc2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvY2xvc2UuYW55LWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDI3IEBACisKK0ZBSUwgZnVsZmlsbG1lbnQgdmFsdWUgb2Ygd3JpdGVyLmNs
b3NlKCkgY2FsbCBtdXN0IGJlIHVuZGVmaW5lZCBldmVuIGlmIHRoZSB1bmRlcmx5aW5nIHNpbmsg
cmV0dXJucyBhIG5vbi11bmRlZmluZWQgdmFsdWUgd3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0
aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicgaXMgdW5kZWZpbmVkKQor
RkFJTCB3aGVuIHNpbmsgY2FsbHMgZXJyb3IgYXN5bmNocm9ub3VzbHkgd2hpbGUgc2luayBjbG9z
ZSBpcyBpbi1mbGlnaHQsIHRoZSBzdHJlYW0gc2hvdWxkIG5vdCBiZWNvbWUgZXJyb3JlZCB3cy5n
ZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3JpdGVyKCknLCAnd3MuZ2V0
V3JpdGVyJyBpcyB1bmRlZmluZWQpCitGQUlMIHdoZW4gc2luayBjYWxscyBlcnJvciBzeW5jaHJv
bm91c2x5IHdoaWxlIGNsb3NpbmcsIHRoZSBzdHJlYW0gc2hvdWxkIG5vdCBiZWNvbWUgZXJyb3Jl
ZCB3cy5nZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3JpdGVyKCknLCAn
d3MuZ2V0V3JpdGVyJyBpcyB1bmRlZmluZWQpCitGQUlMIHdoZW4gdGhlIHNpbmsgdGhyb3dzIGR1
cmluZyBjbG9zZSwgYW5kIHRoZSBjbG9zZSBpcyByZXF1ZXN0ZWQgd2hpbGUgYSB3cml0ZSBpcyBz
dGlsbCBpbi1mbGlnaHQsIHRoZSBzdHJlYW0gc2hvdWxkIGJlY29tZSBlcnJvcmVkIGR1cmluZyB0
aGUgY2xvc2Ugd3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRl
cigpJywgJ3dzLmdldFdyaXRlcicgaXMgdW5kZWZpbmVkKQorRkFJTCByZWxlYXNlTG9jayBvbiBh
IHN0cmVhbSB3aXRoIGEgcGVuZGluZyB3cml0ZSBpbiB3aGljaCB0aGUgc3RyZWFtIGhhcyBiZWVu
IGVycm9yZWQgd3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRl
cigpJywgJ3dzLmdldFdyaXRlcicgaXMgdW5kZWZpbmVkKQorRkFJTCByZWxlYXNlTG9jayBvbiBh
IHN0cmVhbSB3aXRoIGEgcGVuZGluZyBjbG9zZSBpbiB3aGljaCBjb250cm9sbGVyLmVycm9yKCkg
d2FzIGNhbGxlZCB3cy5nZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3Jp
dGVyKCknLCAnd3MuZ2V0V3JpdGVyJyBpcyB1bmRlZmluZWQpCitGQUlMIHdoZW4gY2xvc2UgaXMg
Y2FsbGVkIG9uIGEgV3JpdGFibGVTdHJlYW0gaW4gd3JpdGFibGUgc3RhdGUsIHJlYWR5IHNob3Vs
ZCByZXR1cm4gYSBmdWxmaWxsZWQgcHJvbWlzZSB3cy5nZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rp
b24uIChJbiAnd3MuZ2V0V3JpdGVyKCknLCAnd3MuZ2V0V3JpdGVyJyBpcyB1bmRlZmluZWQpCitG
QUlMIHdoZW4gY2xvc2UgaXMgY2FsbGVkIG9uIGEgV3JpdGFibGVTdHJlYW0gaW4gd2FpdGluZyBz
dGF0ZSwgcmVhZHkgcHJvbWlzZSBzaG91bGQgYmUgZnVsZmlsbGVkIHdzLmdldFdyaXRlciBpcyBu
b3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVu
ZGVmaW5lZCkKK0ZBSUwgd2hlbiBjbG9zZSBpcyBjYWxsZWQgb24gYSBXcml0YWJsZVN0cmVhbSBp
biB3YWl0aW5nIHN0YXRlLCByZWFkeSBzaG91bGQgYmUgZnVsZmlsbGVkIGltbWVkaWF0ZWx5IGV2
ZW4gaWYgY2xvc2UgdGFrZXMgYSBsb25nIHRpbWUgd3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0
aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicgaXMgdW5kZWZpbmVkKQor
RkFJTCByZXR1cm5pbmcgYSB0aGVuYWJsZSBmcm9tIGNsb3NlKCkgc2hvdWxkIHdvcmsgd3MuZ2V0
V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdy
aXRlcicgaXMgdW5kZWZpbmVkKQorRkFJTCByZWxlYXNlTG9jaygpIHNob3VsZCBub3QgY2hhbmdl
IHRoZSByZXN1bHQgb2Ygc3luYyBjbG9zZSgpIHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlv
bi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkKK0ZB
SUwgcmVsZWFzZUxvY2soKSBzaG91bGQgbm90IGNoYW5nZSB0aGUgcmVzdWx0IG9mIGFzeW5jIGNs
b3NlKCkgd3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigp
JywgJ3dzLmdldFdyaXRlcicgaXMgdW5kZWZpbmVkKQorRkFJTCBjbG9zZSgpIHNob3VsZCBzZXQg
c3RhdGUgdG8gQ0xPU0VEIGV2ZW4gaWYgd3JpdGVyIGhhcyBkZXRhY2hlZCB3cy5nZXRXcml0ZXIg
aXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3JpdGVyKCknLCAnd3MuZ2V0V3JpdGVyJyBp
cyB1bmRlZmluZWQpCitGQUlMIHRoZSBwcm9taXNlIHJldHVybmVkIGJ5IGFzeW5jIGFib3J0IGR1
cmluZyBjbG9zZSBzaG91bGQgcmVzb2x2ZSB3cy5nZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rpb24u
IChJbiAnd3MuZ2V0V3JpdGVyKCknLCAnd3MuZ2V0V3JpdGVyJyBpcyB1bmRlZmluZWQpCitGQUlM
IHByb21pc2VzIG11c3QgZnVsZmlsbC9yZWplY3QgaW4gdGhlIGV4cGVjdGVkIG9yZGVyIG9uIGNs
b3N1cmUgd3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigp
JywgJ3dzLmdldFdyaXRlcicgaXMgdW5kZWZpbmVkKQorRkFJTCBwcm9taXNlcyBtdXN0IGZ1bGZp
bGwvcmVqZWN0IGluIHRoZSBleHBlY3RlZCBvcmRlciBvbiBhYm9ydGVkIGNsb3N1cmUgcHJvbWlz
ZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiVHlwZUVycm9y
OiB3cy5nZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3JpdGVyKCknLCAn
d3MuZ2V0V3JpdGVyJyBpcyB1bmRlZmluZWQpIgorRkFJTCBwcm9taXNlcyBtdXN0IGZ1bGZpbGwv
cmVqZWN0IGluIHRoZSBleHBlY3RlZCBvcmRlciBvbiBhYm9ydGVkIGFuZCBlcnJvcmVkIGNsb3N1
cmUgcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAi
VHlwZUVycm9yOiB3cy5nZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3Jp
dGVyKCknLCAnd3MuZ2V0V3JpdGVyJyBpcyB1bmRlZmluZWQpIgorRkFJTCBjbG9zZSgpIHNob3Vs
ZCBub3QgcmVqZWN0IHVudGlsIG5vIHNpbmsgbWV0aG9kcyBhcmUgaW4gZmxpZ2h0IHdzLmdldFdy
aXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0
ZXInIGlzIHVuZGVmaW5lZCkKK0ZBSUwgcmVhZHkgcHJvbWlzZSBzaG91bGQgYmUgaW5pdGlhbGlz
ZWQgYXMgZnVsZmlsbGVkIGZvciBhIHdyaXRlciBvbiBhIGNsb3NlZCBzdHJlYW0gd3MuZ2V0V3Jp
dGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRl
cicgaXMgdW5kZWZpbmVkKQorRkFJTCBjbG9zZSgpIG9uIGEgd3JpdGFibGUgc3RyZWFtIHNob3Vs
ZCB3b3JrIHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0ZXIo
KScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkKK0ZBSUwgY2xvc2UoKSBvbiBhIGxvY2tl
ZCBzdHJlYW0gc2hvdWxkIHJlamVjdCB3cy5nZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJ
biAnd3MuZ2V0V3JpdGVyKCknLCAnd3MuZ2V0V3JpdGVyJyBpcyB1bmRlZmluZWQpCitGQUlMIGNs
b3NlKCkgb24gYW4gZXJyb3Jpbmcgc3RyZWFtIHNob3VsZCByZWplY3QgY29udHJvbGxlci5lcnJv
ciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICdjb250cm9sbGVyLmVycm9yKGVycm9yMSknLCAnY29u
dHJvbGxlci5lcnJvcicgaXMgdW5kZWZpbmVkKQorRkFJTCBjbG9zZSgpIG9uIGFuIGVycm9yZWQg
c3RyZWFtIHNob3VsZCByZWplY3QgY29udHJvbGxlci5lcnJvciBpcyBub3QgYSBmdW5jdGlvbi4g
KEluICdjb250cm9sbGVyLmVycm9yKGVycm9yMSknLCAnY29udHJvbGxlci5lcnJvcicgaXMgdW5k
ZWZpbmVkKQorRkFJTCBjbG9zZSgpIG9uIGFuIGNsb3NlZCBzdHJlYW0gc2hvdWxkIHJlamVjdCB3
cy5nZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3JpdGVyKCknLCAnd3Mu
Z2V0V3JpdGVyJyBpcyB1bmRlZmluZWQpCitGQUlMIGNsb3NlKCkgb24gYSBzdHJlYW0gd2l0aCBh
IHBlbmRpbmcgY2xvc2Ugc2hvdWxkIHJlamVjdCB3cy5nZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rp
b24uIChJbiAnd3MuZ2V0V3JpdGVyKCknLCAnd3MuZ2V0V3JpdGVyJyBpcyB1bmRlZmluZWQpCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL2Nsb3NlLmFueS5odG1sIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvY2xv
c2UuYW55Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjM4MjkxMzUyOGU2OTNiM2E1ZDU2YzY2MGE0NTA2MDk4
MGI1NDhjMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL2Nsb3NlLmFueS5odG1sCkBA
IC0wLDAgKzEgQEAKKzwhLS0gVGhpcyBmaWxlIGlzIHJlcXVpcmVkIGZvciBXZWJLaXQgdGVzdCBp
bmZyYXN0cnVjdHVyZSB0byBydW4gdGhlIHRlbXBsYXRlZCB0ZXN0IC0tPgpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL2Nsb3NlLmFueS5qcyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJs
ZS1zdHJlYW1zL2Nsb3NlLmFueS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZjk5N2VkODRjZGNhYzA2NDQ5ZmQx
NmRlMThmNWFkM2U3MTZlOGVhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvY2xvc2Uu
YW55LmpzCkBAIC0wLDAgKzEsNDcwIEBACisvLyBNRVRBOiBnbG9iYWw9d2luZG93LHdvcmtlcixq
c3NoZWxsCisvLyBNRVRBOiBzY3JpcHQ9Li4vcmVzb3VyY2VzL3Rlc3QtdXRpbHMuanMKKy8vIE1F
VEE6IHNjcmlwdD0uLi9yZXNvdXJjZXMvcmVjb3JkaW5nLXN0cmVhbXMuanMKKyd1c2Ugc3RyaWN0
JzsKKworY29uc3QgZXJyb3IxID0gbmV3IEVycm9yKCdlcnJvcjEnKTsKK2Vycm9yMS5uYW1lID0g
J2Vycm9yMSc7CisKK2NvbnN0IGVycm9yMiA9IG5ldyBFcnJvcignZXJyb3IyJyk7CitlcnJvcjIu
bmFtZSA9ICdlcnJvcjInOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworICBjb25zdCB3cyA9IG5l
dyBXcml0YWJsZVN0cmVhbSh7CisgICAgY2xvc2UoKSB7CisgICAgICByZXR1cm4gJ0hlbGxvJzsK
KyAgICB9CisgIH0pOworCisgIGNvbnN0IHdyaXRlciA9IHdzLmdldFdyaXRlcigpOworCisgIGNv
bnN0IGNsb3NlUHJvbWlzZSA9IHdyaXRlci5jbG9zZSgpOworICByZXR1cm4gY2xvc2VQcm9taXNl
LnRoZW4odmFsdWUgPT4gYXNzZXJ0X2VxdWFscyh2YWx1ZSwgdW5kZWZpbmVkLCAnZnVsZmlsbG1l
bnQgdmFsdWUgbXVzdCBiZSB1bmRlZmluZWQnKSk7Cit9LCAnZnVsZmlsbG1lbnQgdmFsdWUgb2Yg
d3JpdGVyLmNsb3NlKCkgY2FsbCBtdXN0IGJlIHVuZGVmaW5lZCBldmVuIGlmIHRoZSB1bmRlcmx5
aW5nIHNpbmsgcmV0dXJucyBhIG5vbi11bmRlZmluZWQgJyArCisgICAgJ3ZhbHVlJyk7CisKK3By
b21pc2VfdGVzdCgoKSA9PiB7CisgIGxldCBjb250cm9sbGVyOworICBsZXQgcmVzb2x2ZUNsb3Nl
OworICBjb25zdCB3cyA9IG5ldyBXcml0YWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAg
ICAgY29udHJvbGxlciA9IGM7CisgICAgfSwKKyAgICBjbG9zZSgpIHsKKyAgICAgIHJldHVybiBu
ZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKKyAgICAgICAgcmVzb2x2ZUNsb3NlID0gcmVzb2x2ZTsK
KyAgICAgIH0pOworICAgIH0KKyAgfSk7CisKKyAgY29uc3Qgd3JpdGVyID0gd3MuZ2V0V3JpdGVy
KCk7CisKKyAgY29uc3QgY2xvc2VQcm9taXNlID0gd3JpdGVyLmNsb3NlKCk7CisgIHJldHVybiBm
bHVzaEFzeW5jRXZlbnRzKCkudGhlbigoKSA9PiB7CisgICAgY29udHJvbGxlci5lcnJvcihlcnJv
cjEpOworICAgIHJldHVybiBmbHVzaEFzeW5jRXZlbnRzKCk7CisgIH0pLnRoZW4oKCkgPT4gewor
ICAgIHJlc29sdmVDbG9zZSgpOworICAgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAgICBjbG9z
ZVByb21pc2UsCisgICAgICB3cml0ZXIuY2xvc2VkLAorICAgICAgZmx1c2hBc3luY0V2ZW50cygp
LnRoZW4oKCkgPT4gd3JpdGVyLmNsb3NlZCldKTsKKyAgfSk7Cit9LCAnd2hlbiBzaW5rIGNhbGxz
IGVycm9yIGFzeW5jaHJvbm91c2x5IHdoaWxlIHNpbmsgY2xvc2UgaXMgaW4tZmxpZ2h0LCB0aGUg
c3RyZWFtIHNob3VsZCBub3QgYmVjb21lIGVycm9yZWQnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+
IHsKKyAgbGV0IGNvbnRyb2xsZXI7CisgIGNvbnN0IHBhc3NlZEVycm9yID0gbmV3IEVycm9yKCdl
cnJvciBtZScpOworICBjb25zdCB3cyA9IG5ldyBXcml0YWJsZVN0cmVhbSh7CisgICAgc3RhcnQo
YykgeworICAgICAgY29udHJvbGxlciA9IGM7CisgICAgfSwKKyAgICBjbG9zZSgpIHsKKyAgICAg
IGNvbnRyb2xsZXIuZXJyb3IocGFzc2VkRXJyb3IpOworICAgIH0KKyAgfSk7CisKKyAgY29uc3Qg
d3JpdGVyID0gd3MuZ2V0V3JpdGVyKCk7CisKKyAgcmV0dXJuIHdyaXRlci5jbG9zZSgpLnRoZW4o
KCkgPT4gd3JpdGVyLmNsb3NlZCk7Cit9LCAnd2hlbiBzaW5rIGNhbGxzIGVycm9yIHN5bmNocm9u
b3VzbHkgd2hpbGUgY2xvc2luZywgdGhlIHN0cmVhbSBzaG91bGQgbm90IGJlY29tZSBlcnJvcmVk
Jyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgY29uc3Qgd3MgPSBuZXcgV3JpdGFibGVTdHJl
YW0oeworICAgIGNsb3NlKCkgeworICAgICAgdGhyb3cgZXJyb3IxOworICAgIH0KKyAgfSk7CisK
KyAgY29uc3Qgd3JpdGVyID0gd3MuZ2V0V3JpdGVyKCk7CisKKyAgcmV0dXJuIFByb21pc2UuYWxs
KFsKKyAgICB3cml0ZXIud3JpdGUoJ3knKSwKKyAgICBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0
LCBlcnJvcjEsIHdyaXRlci5jbG9zZSgpLCAnY2xvc2UoKSBtdXN0IHJlamVjdCB3aXRoIHRoZSBl
cnJvcicpLAorICAgIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMSwgd3JpdGVyLmNs
b3NlZCwgJ2Nsb3NlZCBtdXN0IHJlamVjdCB3aXRoIHRoZSBlcnJvcicpCisgIF0pOworfSwgJ3do
ZW4gdGhlIHNpbmsgdGhyb3dzIGR1cmluZyBjbG9zZSwgYW5kIHRoZSBjbG9zZSBpcyByZXF1ZXN0
ZWQgd2hpbGUgYSB3cml0ZSBpcyBzdGlsbCBpbi1mbGlnaHQsIHRoZSBzdHJlYW0gc2hvdWxkICcg
KworICAgJ2JlY29tZSBlcnJvcmVkIGR1cmluZyB0aGUgY2xvc2UnKTsKKworcHJvbWlzZV90ZXN0
KCgpID0+IHsKKyAgY29uc3Qgd3MgPSBuZXcgV3JpdGFibGVTdHJlYW0oeworICAgIHdyaXRlKGNo
dW5rLCBjb250cm9sbGVyKSB7CisgICAgICBjb250cm9sbGVyLmVycm9yKGVycm9yMSk7CisgICAg
ICByZXR1cm4gbmV3IFByb21pc2UoKCkgPT4ge30pOworICAgIH0KKyAgfSk7CisKKyAgY29uc3Qg
d3JpdGVyID0gd3MuZ2V0V3JpdGVyKCk7CisgIHdyaXRlci53cml0ZSgnYScpOworCisgIHJldHVy
biBkZWxheSgwKS50aGVuKCgpID0+IHsKKyAgICB3cml0ZXIucmVsZWFzZUxvY2soKTsKKyAgfSk7
Cit9LCAncmVsZWFzZUxvY2sgb24gYSBzdHJlYW0gd2l0aCBhIHBlbmRpbmcgd3JpdGUgaW4gd2hp
Y2ggdGhlIHN0cmVhbSBoYXMgYmVlbiBlcnJvcmVkJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7
CisgIGxldCBjb250cm9sbGVyOworICBjb25zdCB3cyA9IG5ldyBXcml0YWJsZVN0cmVhbSh7Cisg
ICAgc3RhcnQoYykgeworICAgICAgY29udHJvbGxlciA9IGM7CisgICAgfSwKKyAgICBjbG9zZSgp
IHsKKyAgICAgIGNvbnRyb2xsZXIuZXJyb3IoZXJyb3IxKTsKKyAgICAgIHJldHVybiBuZXcgUHJv
bWlzZSgoKSA9PiB7fSk7CisgICAgfQorICB9KTsKKworICBjb25zdCB3cml0ZXIgPSB3cy5nZXRX
cml0ZXIoKTsKKyAgd3JpdGVyLmNsb3NlKCk7CisKKyAgcmV0dXJuIGRlbGF5KDApLnRoZW4oKCkg
PT4geworICAgIHdyaXRlci5yZWxlYXNlTG9jaygpOworICB9KTsKK30sICdyZWxlYXNlTG9jayBv
biBhIHN0cmVhbSB3aXRoIGEgcGVuZGluZyBjbG9zZSBpbiB3aGljaCBjb250cm9sbGVyLmVycm9y
KCkgd2FzIGNhbGxlZCcpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworICBjb25zdCB3cyA9IHJl
Y29yZGluZ1dyaXRhYmxlU3RyZWFtKCk7CisKKyAgY29uc3Qgd3JpdGVyID0gd3MuZ2V0V3JpdGVy
KCk7CisKKyAgcmV0dXJuIHdyaXRlci5yZWFkeS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfZXF1
YWxzKHdyaXRlci5kZXNpcmVkU2l6ZSwgMSwgJ2Rlc2lyZWRTaXplIHNob3VsZCBiZSAxJyk7CisK
KyAgICB3cml0ZXIuY2xvc2UoKTsKKyAgICBhc3NlcnRfZXF1YWxzKHdyaXRlci5kZXNpcmVkU2l6
ZSwgMSwgJ2Rlc2lyZWRTaXplIHNob3VsZCBiZSBzdGlsbCAxJyk7CisKKyAgICByZXR1cm4gd3Jp
dGVyLnJlYWR5LnRoZW4odiA9PiB7CisgICAgICBhc3NlcnRfZXF1YWxzKHYsIHVuZGVmaW5lZCwg
J3JlYWR5IHByb21pc2Ugc2hvdWxkIGJlIGZ1bGZpbGxlZCB3aXRoIHVuZGVmaW5lZCcpOworICAg
ICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsnY2xvc2UnXSwgJ3dyaXRlIGFuZCBh
Ym9ydCBzaG91bGQgbm90IGJlIGNhbGxlZCcpOworICAgIH0pOworICB9KTsKK30sICd3aGVuIGNs
b3NlIGlzIGNhbGxlZCBvbiBhIFdyaXRhYmxlU3RyZWFtIGluIHdyaXRhYmxlIHN0YXRlLCByZWFk
eSBzaG91bGQgcmV0dXJuIGEgZnVsZmlsbGVkIHByb21pc2UnKTsKKworcHJvbWlzZV90ZXN0KCgp
ID0+IHsKKyAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSh7CisgICAgd3JpdGUo
KSB7CisgICAgICByZXR1cm4gbmV3IFByb21pc2UoKCkgPT4ge30pOworICAgIH0KKyAgfSk7CisK
KyAgY29uc3Qgd3JpdGVyID0gd3MuZ2V0V3JpdGVyKCk7CisKKyAgcmV0dXJuIHdyaXRlci5yZWFk
eS50aGVuKCgpID0+IHsKKyAgICB3cml0ZXIud3JpdGUoJ2EnKTsKKworICAgIGFzc2VydF9lcXVh
bHMod3JpdGVyLmRlc2lyZWRTaXplLCAwLCAnZGVzaXJlZFNpemUgc2hvdWxkIGJlIDAnKTsKKwor
ICAgIGxldCBjYWxsZWRDbG9zZSA9IGZhbHNlOworICAgIHJldHVybiBQcm9taXNlLmFsbChbCisg
ICAgICB3cml0ZXIucmVhZHkudGhlbih2ID0+IHsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyh2LCB1
bmRlZmluZWQsICdyZWFkeSBwcm9taXNlIHNob3VsZCBiZSBmdWxmaWxsZWQgd2l0aCB1bmRlZmlu
ZWQnKTsKKyAgICAgICAgYXNzZXJ0X3RydWUoY2FsbGVkQ2xvc2UsICdyZWFkeSBzaG91bGQgbm90
IGJlIGZ1bGZpbGxlZCBiZWZvcmUgd3JpdGVyLmNsb3NlKCkgaXMgY2FsbGVkJyk7CisgICAgICAg
IGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ3dyaXRlJywgJ2EnXSwgJ3NpbmsgYWJv
cnQoKSBzaG91bGQgbm90IGJlIGNhbGxlZCcpOworICAgICAgfSksCisgICAgICBmbHVzaEFzeW5j
RXZlbnRzKCkudGhlbigoKSA9PiB7CisgICAgICAgIHdyaXRlci5jbG9zZSgpOworICAgICAgICBj
YWxsZWRDbG9zZSA9IHRydWU7CisgICAgICB9KQorICAgIF0pOworICB9KTsKK30sICd3aGVuIGNs
b3NlIGlzIGNhbGxlZCBvbiBhIFdyaXRhYmxlU3RyZWFtIGluIHdhaXRpbmcgc3RhdGUsIHJlYWR5
IHByb21pc2Ugc2hvdWxkIGJlIGZ1bGZpbGxlZCcpOworCitwcm9taXNlX3Rlc3QoKCkgPT4gewor
ICBsZXQgYXN5bmNDbG9zZUZpbmlzaGVkID0gZmFsc2U7CisgIGNvbnN0IHdzID0gcmVjb3JkaW5n
V3JpdGFibGVTdHJlYW0oeworICAgIGNsb3NlKCkgeworICAgICAgcmV0dXJuIGZsdXNoQXN5bmNF
dmVudHMoKS50aGVuKCgpID0+IHsKKyAgICAgICAgYXN5bmNDbG9zZUZpbmlzaGVkID0gdHJ1ZTsK
KyAgICAgIH0pOworICAgIH0KKyAgfSk7CisKKyAgY29uc3Qgd3JpdGVyID0gd3MuZ2V0V3JpdGVy
KCk7CisgIHJldHVybiB3cml0ZXIucmVhZHkudGhlbigoKSA9PiB7CisgICAgd3JpdGVyLndyaXRl
KCdhJyk7CisKKyAgICB3cml0ZXIuY2xvc2UoKTsKKworICAgIHJldHVybiB3cml0ZXIucmVhZHku
dGhlbih2ID0+IHsKKyAgICAgIGFzc2VydF9mYWxzZShhc3luY0Nsb3NlRmluaXNoZWQsICdyZWFk
eSBwcm9taXNlIHNob3VsZCBiZSBmdWxmaWxsZWQgYmVmb3JlIGFzeW5jIGNsb3NlIGNvbXBsZXRl
cycpOworICAgICAgYXNzZXJ0X2VxdWFscyh2LCB1bmRlZmluZWQsICdyZWFkeSBwcm9taXNlIHNo
b3VsZCBiZSBmdWxmaWxsZWQgd2l0aCB1bmRlZmluZWQnKTsKKyAgICAgIGFzc2VydF9hcnJheV9l
cXVhbHMod3MuZXZlbnRzLCBbJ3dyaXRlJywgJ2EnLCAnY2xvc2UnXSwgJ3NpbmsgYWJvcnQoKSBz
aG91bGQgbm90IGJlIGNhbGxlZCcpOworICAgIH0pOworICB9KTsKK30sICd3aGVuIGNsb3NlIGlz
IGNhbGxlZCBvbiBhIFdyaXRhYmxlU3RyZWFtIGluIHdhaXRpbmcgc3RhdGUsIHJlYWR5IHNob3Vs
ZCBiZSBmdWxmaWxsZWQgaW1tZWRpYXRlbHkgZXZlbiBpZiBjbG9zZSAnICsKKyAgICAndGFrZXMg
YSBsb25nIHRpbWUnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBjb25zdCByZWplY3Rpb24g
PSB7IG5hbWU6ICdsZXR0ZXInIH07CisgIGNvbnN0IHdzID0gbmV3IFdyaXRhYmxlU3RyZWFtKHsK
KyAgICBjbG9zZSgpIHsKKyAgICAgIHJldHVybiB7CisgICAgICAgIHRoZW4ob25GdWxmaWxsZWQs
IG9uUmVqZWN0ZWQpIHsgb25SZWplY3RlZChyZWplY3Rpb24pOyB9CisgICAgICB9OworICAgIH0K
KyAgfSk7CisgIHJldHVybiBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCByZWplY3Rpb24sIHdz
LmdldFdyaXRlcigpLmNsb3NlKCksICdjbG9zZSgpIHNob3VsZCByZXR1cm4gYSByZWplY3Rpb24n
KTsKK30sICdyZXR1cm5pbmcgYSB0aGVuYWJsZSBmcm9tIGNsb3NlKCkgc2hvdWxkIHdvcmsnKTsK
KworcHJvbWlzZV90ZXN0KHQgPT4geworICBjb25zdCB3cyA9IG5ldyBXcml0YWJsZVN0cmVhbSgp
OworICBjb25zdCB3cml0ZXIgPSB3cy5nZXRXcml0ZXIoKTsKKyAgcmV0dXJuIHdyaXRlci5yZWFk
eS50aGVuKCgpID0+IHsKKyAgICBjb25zdCBjbG9zZVByb21pc2UgPSB3cml0ZXIuY2xvc2UoKTsK
KyAgICBjb25zdCBjbG9zZWRQcm9taXNlID0gd3JpdGVyLmNsb3NlZDsKKyAgICB3cml0ZXIucmVs
ZWFzZUxvY2soKTsKKyAgICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAgICAgY2xvc2VQcm9taXNl
LAorICAgICAgcHJvbWlzZV9yZWplY3RzX2pzKHQsIFR5cGVFcnJvciwgY2xvc2VkUHJvbWlzZSwg
Jy5jbG9zZWQgcHJvbWlzZSBzaG91bGQgYmUgcmVqZWN0ZWQnKQorICAgIF0pOworICB9KTsKK30s
ICdyZWxlYXNlTG9jaygpIHNob3VsZCBub3QgY2hhbmdlIHRoZSByZXN1bHQgb2Ygc3luYyBjbG9z
ZSgpJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgY29uc3Qgd3MgPSBuZXcgV3JpdGFibGVT
dHJlYW0oeworICAgIGNsb3NlKCkgeworICAgICAgcmV0dXJuIGZsdXNoQXN5bmNFdmVudHMoKTsK
KyAgICB9CisgIH0pOworICBjb25zdCB3cml0ZXIgPSB3cy5nZXRXcml0ZXIoKTsKKyAgcmV0dXJu
IHdyaXRlci5yZWFkeS50aGVuKCgpID0+IHsKKyAgICBjb25zdCBjbG9zZVByb21pc2UgPSB3cml0
ZXIuY2xvc2UoKTsKKyAgICBjb25zdCBjbG9zZWRQcm9taXNlID0gd3JpdGVyLmNsb3NlZDsKKyAg
ICB3cml0ZXIucmVsZWFzZUxvY2soKTsKKyAgICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAgICAg
Y2xvc2VQcm9taXNlLAorICAgICAgcHJvbWlzZV9yZWplY3RzX2pzKHQsIFR5cGVFcnJvciwgY2xv
c2VkUHJvbWlzZSwgJy5jbG9zZWQgcHJvbWlzZSBzaG91bGQgYmUgcmVqZWN0ZWQnKQorICAgIF0p
OworICB9KTsKK30sICdyZWxlYXNlTG9jaygpIHNob3VsZCBub3QgY2hhbmdlIHRoZSByZXN1bHQg
b2YgYXN5bmMgY2xvc2UoKScpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworICBsZXQgcmVzb2x2
ZUNsb3NlOworICBjb25zdCB3cyA9IG5ldyBXcml0YWJsZVN0cmVhbSh7CisgICAgY2xvc2UoKSB7
CisgICAgICBjb25zdCBwcm9taXNlID0gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7CisgICAgICAg
IHJlc29sdmVDbG9zZSA9IHJlc29sdmU7CisgICAgICB9KTsKKyAgICAgIHJldHVybiBwcm9taXNl
OworICAgIH0KKyAgfSk7CisgIGNvbnN0IHdyaXRlciA9IHdzLmdldFdyaXRlcigpOworICBjb25z
dCBjbG9zZVByb21pc2UgPSB3cml0ZXIuY2xvc2UoKTsKKyAgd3JpdGVyLnJlbGVhc2VMb2NrKCk7
CisgIHJldHVybiBkZWxheSgwKS50aGVuKCgpID0+IHsKKyAgICByZXNvbHZlQ2xvc2UoKTsKKyAg
ICByZXR1cm4gY2xvc2VQcm9taXNlLnRoZW4oKCkgPT4geworICAgICAgYXNzZXJ0X2VxdWFscyh3
cy5nZXRXcml0ZXIoKS5kZXNpcmVkU2l6ZSwgMCwgJ2Rlc2lyZWRTaXplIHNob3VsZCBiZSAwJyk7
CisgICAgfSk7CisgIH0pOworfSwgJ2Nsb3NlKCkgc2hvdWxkIHNldCBzdGF0ZSB0byBDTE9TRUQg
ZXZlbiBpZiB3cml0ZXIgaGFzIGRldGFjaGVkJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7Cisg
IGxldCByZXNvbHZlQ2xvc2U7CisgIGNvbnN0IHdzID0gbmV3IFdyaXRhYmxlU3RyZWFtKHsKKyAg
ICBjbG9zZSgpIHsKKyAgICAgIGNvbnN0IHByb21pc2UgPSBuZXcgUHJvbWlzZShyZXNvbHZlID0+
IHsKKyAgICAgICAgcmVzb2x2ZUNsb3NlID0gcmVzb2x2ZTsKKyAgICAgIH0pOworICAgICAgcmV0
dXJuIHByb21pc2U7CisgICAgfQorICB9KTsKKyAgY29uc3Qgd3JpdGVyID0gd3MuZ2V0V3JpdGVy
KCk7CisgIHdyaXRlci5jbG9zZSgpOworICB3cml0ZXIucmVsZWFzZUxvY2soKTsKKyAgcmV0dXJu
IGRlbGF5KDApLnRoZW4oKCkgPT4geworICAgIGNvbnN0IGFib3J0aW5nV3JpdGVyID0gd3MuZ2V0
V3JpdGVyKCk7CisgICAgY29uc3QgYWJvcnRQcm9taXNlID0gYWJvcnRpbmdXcml0ZXIuYWJvcnQo
KTsKKyAgICBhYm9ydGluZ1dyaXRlci5yZWxlYXNlTG9jaygpOworICAgIHJlc29sdmVDbG9zZSgp
OworICAgIHJldHVybiBhYm9ydFByb21pc2U7CisgIH0pOworfSwgJ3RoZSBwcm9taXNlIHJldHVy
bmVkIGJ5IGFzeW5jIGFib3J0IGR1cmluZyBjbG9zZSBzaG91bGQgcmVzb2x2ZScpOworCisvLyBU
aG91Z2ggdGhlIG9yZGVyIGluIHdoaWNoIHRoZSBwcm9taXNlcyBhcmUgZnVsZmlsbGVkIG9yIHJl
amVjdGVkIGlzIGFyYml0cmFyeSwgd2UncmUgY2hlY2tpbmcgaXQgZm9yCisvLyBpbnRlcm9wZXJh
YmlsaXR5LiBXZSBjYW4gY2hhbmdlIHRoZSBvcmRlciBhcyBsb25nIGFzIHdlIGZpbGUgYnVncyBv
biBhbGwgaW1wbGVtZW50ZXJzIHRvIHVwZGF0ZSB0byB0aGUgbGF0ZXN0IHRlc3RzCisvLyB0byBr
ZWVwIHRoZW0gaW50ZXJvcGVyYWJsZS4KKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgY29uc3Qg
d3MgPSBuZXcgV3JpdGFibGVTdHJlYW0oe30pOworCisgIGNvbnN0IHdyaXRlciA9IHdzLmdldFdy
aXRlcigpOworCisgIGNvbnN0IGNsb3NlUHJvbWlzZSA9IHdyaXRlci5jbG9zZSgpOworCisgIGNv
bnN0IGV2ZW50cyA9IFtdOworICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAgIGNsb3NlUHJvbWlz
ZS50aGVuKCgpID0+IHsKKyAgICAgIGV2ZW50cy5wdXNoKCdjbG9zZVByb21pc2UnKTsKKyAgICB9
KSwKKyAgICB3cml0ZXIuY2xvc2VkLnRoZW4oKCkgPT4geworICAgICAgZXZlbnRzLnB1c2goJ2Ns
b3NlZCcpOworICAgIH0pCisgIF0pLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9hcnJheV9lcXVh
bHMoZXZlbnRzLCBbJ2Nsb3NlUHJvbWlzZScsICdjbG9zZWQnXSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICdwcm9taXNlcyBtdXN0IGZ1bGZpbGwvcmVqZWN0IGluIHRoZSBleHBlY3RlZCBvcmRl
cicpOworICB9KTsKK30sICdwcm9taXNlcyBtdXN0IGZ1bGZpbGwvcmVqZWN0IGluIHRoZSBleHBl
Y3RlZCBvcmRlciBvbiBjbG9zdXJlJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisgIGNvbnN0
IHdzID0gbmV3IFdyaXRhYmxlU3RyZWFtKHt9KTsKKworICAvLyBXYWl0IHVudGlsIHRoZSBXcml0
YWJsZVN0cmVhbSBzdGFydHMgc28gdGhhdCB0aGUgY2xvc2UoKSBjYWxsIGdldHMgcHJvY2Vzc2Vk
LiBPdGhlcndpc2UsIGFib3J0KCkgd2lsbCBiZQorICAvLyBwcm9jZXNzZWQgd2l0aG91dCB3YWl0
aW5nIGZvciBjb21wbGV0aW9uIG9mIHRoZSBjbG9zZSgpLgorICByZXR1cm4gZGVsYXkoMCkudGhl
bigoKSA9PiB7CisgICAgY29uc3Qgd3JpdGVyID0gd3MuZ2V0V3JpdGVyKCk7CisKKyAgICBjb25z
dCBjbG9zZVByb21pc2UgPSB3cml0ZXIuY2xvc2UoKTsKKyAgICBjb25zdCBhYm9ydFByb21pc2Ug
PSB3cml0ZXIuYWJvcnQoZXJyb3IxKTsKKworICAgIGNvbnN0IGV2ZW50cyA9IFtdOworICAgIHJl
dHVybiBQcm9taXNlLmFsbChbCisgICAgICBjbG9zZVByb21pc2UudGhlbigoKSA9PiB7CisgICAg
ICAgIGV2ZW50cy5wdXNoKCdjbG9zZVByb21pc2UnKTsKKyAgICAgIH0pLAorICAgICAgYWJvcnRQ
cm9taXNlLnRoZW4oKCkgPT4geworICAgICAgICBldmVudHMucHVzaCgnYWJvcnRQcm9taXNlJyk7
CisgICAgICB9KSwKKyAgICAgIHdyaXRlci5jbG9zZWQudGhlbigoKSA9PiB7CisgICAgICAgIGV2
ZW50cy5wdXNoKCdjbG9zZWQnKTsKKyAgICAgIH0pCisgICAgXSkudGhlbigoKSA9PiB7CisgICAg
ICBhc3NlcnRfYXJyYXlfZXF1YWxzKGV2ZW50cywgWydjbG9zZVByb21pc2UnLCAnYWJvcnRQcm9t
aXNlJywgJ2Nsb3NlZCddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAncHJvbWlzZXMgbXVz
dCBmdWxmaWxsL3JlamVjdCBpbiB0aGUgZXhwZWN0ZWQgb3JkZXInKTsKKyAgICB9KTsKKyAgfSk7
Cit9LCAncHJvbWlzZXMgbXVzdCBmdWxmaWxsL3JlamVjdCBpbiB0aGUgZXhwZWN0ZWQgb3JkZXIg
b24gYWJvcnRlZCBjbG9zdXJlJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgY29uc3Qgd3Mg
PSBuZXcgV3JpdGFibGVTdHJlYW0oeworICAgIGNsb3NlKCkgeworICAgICAgcmV0dXJuIFByb21p
c2UucmVqZWN0KGVycm9yMSk7CisgICAgfQorICB9KTsKKworICAvLyBXYWl0IHVudGlsIHRoZSBX
cml0YWJsZVN0cmVhbSBzdGFydHMgc28gdGhhdCB0aGUgY2xvc2UoKSBjYWxsIGdldHMgcHJvY2Vz
c2VkLgorICByZXR1cm4gZGVsYXkoMCkudGhlbigoKSA9PiB7CisgICAgY29uc3Qgd3JpdGVyID0g
d3MuZ2V0V3JpdGVyKCk7CisKKyAgICBjb25zdCBjbG9zZVByb21pc2UgPSB3cml0ZXIuY2xvc2Uo
KTsKKyAgICBjb25zdCBhYm9ydFByb21pc2UgPSB3cml0ZXIuYWJvcnQoZXJyb3IyKTsKKworICAg
IGNvbnN0IGV2ZW50cyA9IFtdOworICAgIGNsb3NlUHJvbWlzZS5jYXRjaCgoKSA9PiBldmVudHMu
cHVzaCgnY2xvc2VQcm9taXNlJykpOworICAgIGFib3J0UHJvbWlzZS5jYXRjaCgoKSA9PiBldmVu
dHMucHVzaCgnYWJvcnRQcm9taXNlJykpOworICAgIHdyaXRlci5jbG9zZWQuY2F0Y2goKCkgPT4g
ZXZlbnRzLnB1c2goJ2Nsb3NlZCcpKTsKKyAgICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAgICAg
cHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCBjbG9zZVByb21pc2UsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICdjbG9zZVByb21pc2UgbXVzdCByZWplY3Qgd2l0aCB0aGUg
ZXJyb3IgcmV0dXJuZWQgZnJvbSB0aGUgc2lua1wncyBjbG9zZSBtZXRob2QnKSwKKyAgICAgIHBy
b21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMSwgYWJvcnRQcm9taXNlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnYWJvcnRQcm9taXNlIG11c3QgcmVqZWN0IHdpdGggdGhlIGVy
cm9yIHJldHVybmVkIGZyb20gdGhlIHNpbmtcJ3MgY2xvc2UgbWV0aG9kJyksCisgICAgICBwcm9t
aXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjIsIHdyaXRlci5jbG9zZWQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnd3JpdGVyLmNsb3NlZCBtdXN0IHJlamVjdCB3aXRoIGVycm9y
MicpCisgICAgXSkudGhlbigoKSA9PiB7CisgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGV2ZW50
cywgWydjbG9zZVByb21pc2UnLCAnYWJvcnRQcm9taXNlJywgJ2Nsb3NlZCddLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAncHJvbWlzZXMgbXVzdCBmdWxmaWxsL3JlamVjdCBpbiB0aGUgZXhw
ZWN0ZWQgb3JkZXInKTsKKyAgICB9KTsKKyAgfSk7Cit9LCAncHJvbWlzZXMgbXVzdCBmdWxmaWxs
L3JlamVjdCBpbiB0aGUgZXhwZWN0ZWQgb3JkZXIgb24gYWJvcnRlZCBhbmQgZXJyb3JlZCBjbG9z
dXJlJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgbGV0IHJlc29sdmVXcml0ZTsKKyAgbGV0
IGNvbnRyb2xsZXI7CisgIGNvbnN0IHdzID0gbmV3IFdyaXRhYmxlU3RyZWFtKHsKKyAgICB3cml0
ZShjaHVuaywgYykgeworICAgICAgY29udHJvbGxlciA9IGM7CisgICAgICByZXR1cm4gbmV3IFBy
b21pc2UocmVzb2x2ZSA9PiB7CisgICAgICAgIHJlc29sdmVXcml0ZSA9IHJlc29sdmU7CisgICAg
ICB9KTsKKyAgICB9CisgIH0pOworICBjb25zdCB3cml0ZXIgPSB3cy5nZXRXcml0ZXIoKTsKKyAg
cmV0dXJuIHdyaXRlci5yZWFkeS50aGVuKCgpID0+IHsKKyAgICBjb25zdCB3cml0ZVByb21pc2Ug
PSB3cml0ZXIud3JpdGUoJ2MnKTsKKyAgICBjb250cm9sbGVyLmVycm9yKGVycm9yMSk7CisgICAg
Y29uc3QgY2xvc2VQcm9taXNlID0gd3JpdGVyLmNsb3NlKCk7CisgICAgbGV0IGNsb3NlUmVqZWN0
ZWQgPSBmYWxzZTsKKyAgICBjbG9zZVByb21pc2UuY2F0Y2goKCkgPT4geworICAgICAgY2xvc2VS
ZWplY3RlZCA9IHRydWU7CisgICAgfSk7CisgICAgcmV0dXJuIGZsdXNoQXN5bmNFdmVudHMoKS50
aGVuKCgpID0+IHsKKyAgICAgIGFzc2VydF9mYWxzZShjbG9zZVJlamVjdGVkKTsKKyAgICAgIHJl
c29sdmVXcml0ZSgpOworICAgICAgcmV0dXJuIFByb21pc2UuYWxsKFsKKyAgICAgICAgd3JpdGVQ
cm9taXNlLAorICAgICAgICBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIGNsb3Nl
UHJvbWlzZSwgJ2Nsb3NlKCkgc2hvdWxkIHJlamVjdCcpCisgICAgICBdKS50aGVuKCgpID0+IHsK
KyAgICAgICAgYXNzZXJ0X3RydWUoY2xvc2VSZWplY3RlZCk7CisgICAgICB9KTsKKyAgICB9KTsK
KyAgfSk7Cit9LCAnY2xvc2UoKSBzaG91bGQgbm90IHJlamVjdCB1bnRpbCBubyBzaW5rIG1ldGhv
ZHMgYXJlIGluIGZsaWdodCcpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworICBjb25zdCB3cyA9
IG5ldyBXcml0YWJsZVN0cmVhbSgpOworICBjb25zdCB3cml0ZXIxID0gd3MuZ2V0V3JpdGVyKCk7
CisgIHJldHVybiB3cml0ZXIxLmNsb3NlKCkudGhlbigoKSA9PiB7CisgICAgd3JpdGVyMS5yZWxl
YXNlTG9jaygpOworICAgIGNvbnN0IHdyaXRlcjIgPSB3cy5nZXRXcml0ZXIoKTsKKyAgICBjb25z
dCByZWFkeSA9IHdyaXRlcjIucmVhZHk7CisgICAgYXNzZXJ0X2VxdWFscyhyZWFkeS5jb25zdHJ1
Y3RvciwgUHJvbWlzZSk7CisgICAgcmV0dXJuIHJlYWR5OworICB9KTsKK30sICdyZWFkeSBwcm9t
aXNlIHNob3VsZCBiZSBpbml0aWFsaXNlZCBhcyBmdWxmaWxsZWQgZm9yIGEgd3JpdGVyIG9uIGEg
Y2xvc2VkIHN0cmVhbScpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworICBjb25zdCB3cyA9IG5l
dyBXcml0YWJsZVN0cmVhbSgpOworICB3cy5jbG9zZSgpOworICBjb25zdCB3cml0ZXIgPSB3cy5n
ZXRXcml0ZXIoKTsKKyAgcmV0dXJuIHdyaXRlci5jbG9zZWQ7Cit9LCAnY2xvc2UoKSBvbiBhIHdy
aXRhYmxlIHN0cmVhbSBzaG91bGQgd29yaycpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIGNv
bnN0IHdzID0gbmV3IFdyaXRhYmxlU3RyZWFtKCk7CisgIHdzLmdldFdyaXRlcigpOworICByZXR1
cm4gcHJvbWlzZV9yZWplY3RzX2pzKHQsIFR5cGVFcnJvciwgd3MuY2xvc2UoKSwgJ2Nsb3NlIHNo
b3VsZCByZWplY3QnKTsKK30sICdjbG9zZSgpIG9uIGEgbG9ja2VkIHN0cmVhbSBzaG91bGQgcmVq
ZWN0Jyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgY29uc3Qgd3MgPSBuZXcgV3JpdGFibGVT
dHJlYW0oeworICAgIHN0YXJ0KGNvbnRyb2xsZXIpIHsKKyAgICAgIGNvbnRyb2xsZXIuZXJyb3Io
ZXJyb3IxKTsKKyAgICB9CisgIH0pOworICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2V4YWN0bHko
dCwgZXJyb3IxLCB3cy5jbG9zZSgpLCAnY2xvc2Ugc2hvdWxkIHJlamVjdCB3aXRoIGVycm9yMScp
OworfSwgJ2Nsb3NlKCkgb24gYW4gZXJyb3Jpbmcgc3RyZWFtIHNob3VsZCByZWplY3QnKTsKKwor
cHJvbWlzZV90ZXN0KHQgPT4geworICBjb25zdCB3cyA9IG5ldyBXcml0YWJsZVN0cmVhbSh7Cisg
ICAgc3RhcnQoY29udHJvbGxlcikgeworICAgICAgY29udHJvbGxlci5lcnJvcihlcnJvcjEpOwor
ICAgIH0KKyAgfSk7CisgIGNvbnN0IHdyaXRlciA9IHdzLmdldFdyaXRlcigpOworICByZXR1cm4g
cHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCB3cml0ZXIuY2xvc2VkLCAnY2xvc2Vk
IHNob3VsZCByZWplY3Qgd2l0aCB0aGUgZXJyb3InKS50aGVuKCgpID0+IHsKKyAgICB3cml0ZXIu
cmVsZWFzZUxvY2soKTsKKyAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2pzKHQsIFR5cGVFcnJv
ciwgd3MuY2xvc2UoKSwgJ2Nsb3NlIHNob3VsZCByZWplY3QnKTsKKyAgfSk7Cit9LCAnY2xvc2Uo
KSBvbiBhbiBlcnJvcmVkIHN0cmVhbSBzaG91bGQgcmVqZWN0Jyk7CisKK3Byb21pc2VfdGVzdCh0
ID0+IHsKKyAgY29uc3Qgd3MgPSBuZXcgV3JpdGFibGVTdHJlYW0oKTsKKyAgY29uc3Qgd3JpdGVy
ID0gd3MuZ2V0V3JpdGVyKCk7CisgIHJldHVybiB3cml0ZXIuY2xvc2UoKS50aGVuKCgpID0+IHsK
KyAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2pzKHQsIFR5cGVFcnJvciwgd3MuY2xvc2UoKSwg
J2Nsb3NlIHNob3VsZCByZWplY3QnKTsKKyAgfSk7Cit9LCAnY2xvc2UoKSBvbiBhbiBjbG9zZWQg
c3RyZWFtIHNob3VsZCByZWplY3QnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBjb25zdCB3
cyA9IG5ldyBXcml0YWJsZVN0cmVhbSh7CisgICAgY2xvc2UoKSB7CisgICAgICByZXR1cm4gbmV3
IFByb21pc2UoKCkgPT4ge30pOworICAgIH0KKyAgfSk7CisKKyAgY29uc3Qgd3JpdGVyID0gd3Mu
Z2V0V3JpdGVyKCk7CisgIHdyaXRlci5jbG9zZSgpOworICB3cml0ZXIucmVsZWFzZUxvY2soKTsK
KworICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2pzKHQsIFR5cGVFcnJvciwgd3MuY2xvc2UoKSwg
J2Nsb3NlIHNob3VsZCByZWplY3QnKTsKK30sICdjbG9zZSgpIG9uIGEgc3RyZWFtIHdpdGggYSBw
ZW5kaW5nIGNsb3NlIHNob3VsZCByZWplY3QnKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL2Ns
b3NlLmFueS53b3JrZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvY2xvc2UuYW55Lndvcmtl
ci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWQ0M2ZhZWNkZTU4ZjA2ZjFiODhkNGYyZDlkYWYw
MDk2ODU2MzExNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL2Nsb3NlLmFueS53b3Jr
ZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjcgQEAKKworRkFJTCBmdWxmaWxsbWVudCB2YWx1
ZSBvZiB3cml0ZXIuY2xvc2UoKSBjYWxsIG11c3QgYmUgdW5kZWZpbmVkIGV2ZW4gaWYgdGhlIHVu
ZGVybHlpbmcgc2luayByZXR1cm5zIGEgbm9uLXVuZGVmaW5lZCB2YWx1ZSBDYW4ndCBmaW5kIHZh
cmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCB3aGVuIHNpbmsgY2FsbHMgZXJyb3IgYXN5bmNo
cm9ub3VzbHkgd2hpbGUgc2luayBjbG9zZSBpcyBpbi1mbGlnaHQsIHRoZSBzdHJlYW0gc2hvdWxk
IG5vdCBiZWNvbWUgZXJyb3JlZCBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQor
RkFJTCB3aGVuIHNpbmsgY2FsbHMgZXJyb3Igc3luY2hyb25vdXNseSB3aGlsZSBjbG9zaW5nLCB0
aGUgc3RyZWFtIHNob3VsZCBub3QgYmVjb21lIGVycm9yZWQgQ2FuJ3QgZmluZCB2YXJpYWJsZTog
V3JpdGFibGVTdHJlYW0KK0ZBSUwgd2hlbiB0aGUgc2luayB0aHJvd3MgZHVyaW5nIGNsb3NlLCBh
bmQgdGhlIGNsb3NlIGlzIHJlcXVlc3RlZCB3aGlsZSBhIHdyaXRlIGlzIHN0aWxsIGluLWZsaWdo
dCwgdGhlIHN0cmVhbSBzaG91bGQgYmVjb21lIGVycm9yZWQgZHVyaW5nIHRoZSBjbG9zZSBDYW4n
dCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCByZWxlYXNlTG9jayBvbiBhIHN0
cmVhbSB3aXRoIGEgcGVuZGluZyB3cml0ZSBpbiB3aGljaCB0aGUgc3RyZWFtIGhhcyBiZWVuIGVy
cm9yZWQgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgcmVsZWFzZUxv
Y2sgb24gYSBzdHJlYW0gd2l0aCBhIHBlbmRpbmcgY2xvc2UgaW4gd2hpY2ggY29udHJvbGxlci5l
cnJvcigpIHdhcyBjYWxsZWQgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZB
SUwgd2hlbiBjbG9zZSBpcyBjYWxsZWQgb24gYSBXcml0YWJsZVN0cmVhbSBpbiB3cml0YWJsZSBz
dGF0ZSwgcmVhZHkgc2hvdWxkIHJldHVybiBhIGZ1bGZpbGxlZCBwcm9taXNlIENhbid0IGZpbmQg
dmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIHdoZW4gY2xvc2UgaXMgY2FsbGVkIG9uIGEg
V3JpdGFibGVTdHJlYW0gaW4gd2FpdGluZyBzdGF0ZSwgcmVhZHkgcHJvbWlzZSBzaG91bGQgYmUg
ZnVsZmlsbGVkIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIHdoZW4g
Y2xvc2UgaXMgY2FsbGVkIG9uIGEgV3JpdGFibGVTdHJlYW0gaW4gd2FpdGluZyBzdGF0ZSwgcmVh
ZHkgc2hvdWxkIGJlIGZ1bGZpbGxlZCBpbW1lZGlhdGVseSBldmVuIGlmIGNsb3NlIHRha2VzIGEg
bG9uZyB0aW1lIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIHJldHVy
bmluZyBhIHRoZW5hYmxlIGZyb20gY2xvc2UoKSBzaG91bGQgd29yayBDYW4ndCBmaW5kIHZhcmlh
YmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCByZWxlYXNlTG9jaygpIHNob3VsZCBub3QgY2hhbmdl
IHRoZSByZXN1bHQgb2Ygc3luYyBjbG9zZSgpIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxl
U3RyZWFtCitGQUlMIHJlbGVhc2VMb2NrKCkgc2hvdWxkIG5vdCBjaGFuZ2UgdGhlIHJlc3VsdCBv
ZiBhc3luYyBjbG9zZSgpIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlM
IGNsb3NlKCkgc2hvdWxkIHNldCBzdGF0ZSB0byBDTE9TRUQgZXZlbiBpZiB3cml0ZXIgaGFzIGRl
dGFjaGVkIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIHRoZSBwcm9t
aXNlIHJldHVybmVkIGJ5IGFzeW5jIGFib3J0IGR1cmluZyBjbG9zZSBzaG91bGQgcmVzb2x2ZSBD
YW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBwcm9taXNlcyBtdXN0IGZ1
bGZpbGwvcmVqZWN0IGluIHRoZSBleHBlY3RlZCBvcmRlciBvbiBjbG9zdXJlIENhbid0IGZpbmQg
dmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIHByb21pc2VzIG11c3QgZnVsZmlsbC9yZWpl
Y3QgaW4gdGhlIGV4cGVjdGVkIG9yZGVyIG9uIGFib3J0ZWQgY2xvc3VyZSBDYW4ndCBmaW5kIHZh
cmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBwcm9taXNlcyBtdXN0IGZ1bGZpbGwvcmVqZWN0
IGluIHRoZSBleHBlY3RlZCBvcmRlciBvbiBhYm9ydGVkIGFuZCBlcnJvcmVkIGNsb3N1cmUgQ2Fu
J3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgY2xvc2UoKSBzaG91bGQgbm90
IHJlamVjdCB1bnRpbCBubyBzaW5rIG1ldGhvZHMgYXJlIGluIGZsaWdodCBDYW4ndCBmaW5kIHZh
cmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCByZWFkeSBwcm9taXNlIHNob3VsZCBiZSBpbml0
aWFsaXNlZCBhcyBmdWxmaWxsZWQgZm9yIGEgd3JpdGVyIG9uIGEgY2xvc2VkIHN0cmVhbSBDYW4n
dCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBjbG9zZSgpIG9uIGEgd3JpdGFi
bGUgc3RyZWFtIHNob3VsZCB3b3JrIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFt
CitGQUlMIGNsb3NlKCkgb24gYSBsb2NrZWQgc3RyZWFtIHNob3VsZCByZWplY3QgQ2FuJ3QgZmlu
ZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgY2xvc2UoKSBvbiBhbiBlcnJvcmluZyBz
dHJlYW0gc2hvdWxkIHJlamVjdCBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQor
RkFJTCBjbG9zZSgpIG9uIGFuIGVycm9yZWQgc3RyZWFtIHNob3VsZCByZWplY3QgQ2FuJ3QgZmlu
ZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgY2xvc2UoKSBvbiBhbiBjbG9zZWQgc3Ry
ZWFtIHNob3VsZCByZWplY3QgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZB
SUwgY2xvc2UoKSBvbiBhIHN0cmVhbSB3aXRoIGEgcGVuZGluZyBjbG9zZSBzaG91bGQgcmVqZWN0
IENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1z
dHJlYW1zL2Nsb3NlLmFueS53b3JrZXIuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL2Nsb3NlLmFueS53b3Jr
ZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4yMzgyOTEzNTI4ZTY5M2IzYTVkNTZjNjYwYTQ1MDYwOTgwYjU0
OGMzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvY2xvc2UuYW55Lndvcmtlci5odG1s
CkBAIC0wLDAgKzEgQEAKKzwhLS0gVGhpcyBmaWxlIGlzIHJlcXVpcmVkIGZvciBXZWJLaXQgdGVz
dCBpbmZyYXN0cnVjdHVyZSB0byBydW4gdGhlIHRlbXBsYXRlZCB0ZXN0IC0tPgpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL2NvbnN0cnVjdG9yLmFu
eS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9jb25zdHJ1Y3Rvci5hbnktZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjE5NTY5MzQ5MDRiYTE4NGI0ZjIzOWVmN2NjMjMxM2U0NWU3MTZmNmUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9jb25zdHJ1Y3Rvci5hbnktZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsMTggQEAKKworRkFJTCBjb250cm9sbGVyIGFyZ3VtZW50IHNob3VsZCBiZSBw
YXNzZWQgdG8gc3RhcnQgbWV0aG9kIGNvbnRyb2xsZXIuZXJyb3IgaXMgbm90IGEgZnVuY3Rpb24u
IChJbiAnY29udHJvbGxlci5lcnJvcihlcnJvcjEpJywgJ2NvbnRyb2xsZXIuZXJyb3InIGlzIHVu
ZGVmaW5lZCkKK0ZBSUwgY29udHJvbGxlciBhcmd1bWVudCBzaG91bGQgYmUgcGFzc2VkIHRvIHdy
aXRlIG1ldGhvZCB3cy5nZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3Jp
dGVyKCknLCAnd3MuZ2V0V3JpdGVyJyBpcyB1bmRlZmluZWQpCitGQUlMIGNvbnRyb2xsZXIgYXJn
dW1lbnQgc2hvdWxkIG5vdCBiZSBwYXNzZWQgdG8gY2xvc2UgbWV0aG9kIHdzLmdldFdyaXRlciBp
cyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlz
IHVuZGVmaW5lZCkKK0ZBSUwgaGlnaFdhdGVyTWFyayBzaG91bGQgYmUgcmVmbGVjdGVkIHRvIGRl
c2lyZWRTaXplIHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0
ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkKK0ZBSUwgV3JpdGFibGVTdHJlYW0g
c2hvdWxkIGJlIHdyaXRhYmxlIGFuZCByZWFkeSBzaG91bGQgZnVsZmlsbCBpbW1lZGlhdGVseSBp
ZiB0aGUgc3RyYXRlZ3kgZG9lcyBub3QgYXBwbHkgYmFja3ByZXNzdXJlIHdzLmdldFdyaXRlciBp
cyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlz
IHVuZGVmaW5lZCkKK1BBU1MgV3JpdGFibGVTdHJlYW0gc2hvdWxkIGJlIGNvbnN0cnVjdGlibGUg
d2l0aCBubyBhcmd1bWVudHMgCitQQVNTIHVuZGVybHlpbmdTaW5rIGFyZ3VtZW50IHNob3VsZCBi
ZSBjb252ZXJ0ZWQgYWZ0ZXIgcXVldWluZ1N0cmF0ZWd5IGFyZ3VtZW50IAorRkFJTCBXcml0YWJs
ZVN0cmVhbSBpbnN0YW5jZXMgc2hvdWxkIGhhdmUgc3RhbmRhcmQgbWV0aG9kcyBhbmQgcHJvcGVy
dGllcyB3cy5nZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3JpdGVyKCkn
LCAnd3MuZ2V0V3JpdGVyJyBpcyB1bmRlZmluZWQpCitGQUlMIFdyaXRhYmxlU3RyZWFtRGVmYXVs
dENvbnRyb2xsZXIgY29uc3RydWN0b3Igc2hvdWxkIHRocm93IGFzc2VydF90aHJvd3NfanM6IGNv
bnN0cnVjdG9yIHNob3VsZCB0aHJvdyBhIFR5cGVFcnJvciBleGNlcHRpb24gZnVuY3Rpb24gIigp
ID0+IG5ldyBXcml0YWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyKHt9KSIgdGhyZXcgb2JqZWN0
ICJTeW50YXhFcnJvcjogVW5leHBlY3RlZCBpZGVudGlmaWVyICdPYmplY3QnLiBFeHBlY3RlZCBl
aXRoZXIgYSBjbG9zaW5nICddJyBvciBhICcsJyBmb2xsb3dpbmcgYW4gYXJyYXkgZWxlbWVudC4i
ICgiU3ludGF4RXJyb3IiKSBleHBlY3RlZCBpbnN0YW5jZSBvZiBmdW5jdGlvbiAiZnVuY3Rpb24g
VHlwZUVycm9yKCkgeworICAgIFtuYXRpdmUgY29kZV0KK30iICgiVHlwZUVycm9yIikKK0ZBSUwg
V3JpdGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlciBjb25zdHJ1Y3RvciBzaG91bGQgdGhyb3cg
d2hlbiBwYXNzZWQgYW4gaW5pdGlhbGlzZWQgV3JpdGFibGVTdHJlYW0gYXNzZXJ0X3Rocm93c19q
czogY29uc3RydWN0b3Igc2hvdWxkIHRocm93IGEgVHlwZUVycm9yIGV4Y2VwdGlvbiBmdW5jdGlv
biAiKCkgPT4gbmV3IFdyaXRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIoc3RyZWFtKSIgdGhy
ZXcgb2JqZWN0ICJTeW50YXhFcnJvcjogVW5leHBlY3RlZCBpZGVudGlmaWVyICdXcml0YWJsZVN0
cmVhbScuIEV4cGVjdGVkIGVpdGhlciBhIGNsb3NpbmcgJ10nIG9yIGEgJywnIGZvbGxvd2luZyBh
biBhcnJheSBlbGVtZW50LiIgKCJTeW50YXhFcnJvciIpIGV4cGVjdGVkIGluc3RhbmNlIG9mIGZ1
bmN0aW9uICJmdW5jdGlvbiBUeXBlRXJyb3IoKSB7CisgICAgW25hdGl2ZSBjb2RlXQorfSIgKCJU
eXBlRXJyb3IiKQorRkFJTCBXcml0YWJsZVN0cmVhbURlZmF1bHRXcml0ZXIgc2hvdWxkIHRocm93
IHVubGVzcyBwYXNzZWQgYSBXcml0YWJsZVN0cmVhbSBzdHJlYW0uZ2V0V3JpdGVyIGlzIG5vdCBh
IGZ1bmN0aW9uLiAoSW4gJ3N0cmVhbS5nZXRXcml0ZXIoKScsICdzdHJlYW0uZ2V0V3JpdGVyJyBp
cyB1bmRlZmluZWQpCitGQUlMIFdyaXRhYmxlU3RyZWFtRGVmYXVsdFdyaXRlciBjb25zdHJ1Y3Rv
ciBzaG91bGQgdGhyb3cgd2hlbiBzdHJlYW0gYXJndW1lbnQgaXMgbG9ja2VkIHN0cmVhbS5nZXRX
cml0ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnc3RyZWFtLmdldFdyaXRlcigpJywgJ3N0cmVh
bS5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvY29u
c3RydWN0b3IuYW55Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9jb25zdHJ1Y3Rvci5hbnkuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4yMzgyOTEzNTI4ZTY5M2IzYTVkNTZjNjYwYTQ1MDYwOTgwYjU0OGMzCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
dHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvY29uc3RydWN0b3IuYW55Lmh0bWwKQEAgLTAsMCArMSBA
QAorPCEtLSBUaGlzIGZpbGUgaXMgcmVxdWlyZWQgZm9yIFdlYktpdCB0ZXN0IGluZnJhc3RydWN0
dXJlIHRvIHJ1biB0aGUgdGVtcGxhdGVkIHRlc3QgLS0+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvY29uc3RydWN0b3IuYW55LmpzIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0
cmVhbXMvY29uc3RydWN0b3IuYW55LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc1ZWVkMmE5OTNmZTVlMDk2ZDZl
MDkyMjA5YTA4Yjk3YjBjNDBhYzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9jb25z
dHJ1Y3Rvci5hbnkuanMKQEAgLTAsMCArMSwxNTUgQEAKKy8vIE1FVEE6IGdsb2JhbD13aW5kb3cs
d29ya2VyLGpzc2hlbGwKKyd1c2Ugc3RyaWN0JzsKKworY29uc3QgZXJyb3IxID0gbmV3IEVycm9y
KCdlcnJvcjEnKTsKK2Vycm9yMS5uYW1lID0gJ2Vycm9yMSc7CisKK2NvbnN0IGVycm9yMiA9IG5l
dyBFcnJvcignZXJyb3IyJyk7CitlcnJvcjIubmFtZSA9ICdlcnJvcjInOworCitwcm9taXNlX3Rl
c3QoKCkgPT4geworICBsZXQgY29udHJvbGxlcjsKKyAgY29uc3Qgd3MgPSBuZXcgV3JpdGFibGVT
dHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGNvbnRyb2xsZXIgPSBjOworICAgIH0KKyAg
fSk7CisKKyAgLy8gTm93IGVycm9yIHRoZSBzdHJlYW0gYWZ0ZXIgaXRzIGNvbnN0cnVjdGlvbi4K
KyAgY29udHJvbGxlci5lcnJvcihlcnJvcjEpOworCisgIGNvbnN0IHdyaXRlciA9IHdzLmdldFdy
aXRlcigpOworCisgIGFzc2VydF9lcXVhbHMod3JpdGVyLmRlc2lyZWRTaXplLCBudWxsLCAnZGVz
aXJlZFNpemUgc2hvdWxkIGJlIG51bGwnKTsKKyAgcmV0dXJuIHdyaXRlci5jbG9zZWQuY2F0Y2go
ciA9PiB7CisgICAgYXNzZXJ0X2VxdWFscyhyLCBlcnJvcjEsICd3cyBzaG91bGQgYmUgZXJyb3Jl
ZCBieSB0aGUgcGFzc2VkIGVycm9yJyk7CisgIH0pOworfSwgJ2NvbnRyb2xsZXIgYXJndW1lbnQg
c2hvdWxkIGJlIHBhc3NlZCB0byBzdGFydCBtZXRob2QnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4g
eworICBjb25zdCB3cyA9IG5ldyBXcml0YWJsZVN0cmVhbSh7CisgICAgd3JpdGUoY2h1bmssIGNv
bnRyb2xsZXIpIHsKKyAgICAgIGNvbnRyb2xsZXIuZXJyb3IoZXJyb3IxKTsKKyAgICB9CisgIH0p
OworCisgIGNvbnN0IHdyaXRlciA9IHdzLmdldFdyaXRlcigpOworCisgIHJldHVybiBQcm9taXNl
LmFsbChbCisgICAgd3JpdGVyLndyaXRlKCdhJyksCisgICAgcHJvbWlzZV9yZWplY3RzX2V4YWN0
bHkodCwgZXJyb3IxLCB3cml0ZXIuY2xvc2VkLCAnY29udHJvbGxlci5lcnJvcigpIGluIHdyaXRl
KCkgc2hvdWxkIGVycm9yIHRoZSBzdHJlYW0nKQorICBdKTsKK30sICdjb250cm9sbGVyIGFyZ3Vt
ZW50IHNob3VsZCBiZSBwYXNzZWQgdG8gd3JpdGUgbWV0aG9kJyk7CisKKy8vIE9sZGVyIHZlcnNp
b25zIG9mIHRoZSBzdGFuZGFyZCBoYWQgdGhlIGNvbnRyb2xsZXIgYXJndW1lbnQgcGFzc2VkIHRv
IGNsb3NlKCkuIEl0IHdhc24ndCB1c2VmdWwsIGFuZCBzbyBoYXMgYmVlbgorLy8gcmVtb3ZlZC4g
VGhpcyB0ZXN0IHJlbWFpbnMgdG8gaWRlbnRpZnkgaW1wbGVtZW50YXRpb25zIHRoYXQgaGF2ZW4n
dCBiZWVuIHVwZGF0ZWQuCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIGNvbnN0IHdzID0gbmV3IFdy
aXRhYmxlU3RyZWFtKHsKKyAgICBjbG9zZSguLi5hcmdzKSB7CisgICAgICB0LnN0ZXAoKCkgPT4g
eworICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGFyZ3MsIFtdLCAnbm8gYXJndW1lbnRzIHNo
b3VsZCBiZSBwYXNzZWQgdG8gY2xvc2UnKTsKKyAgICAgIH0pOworICAgIH0KKyAgfSk7CisKKyAg
cmV0dXJuIHdzLmdldFdyaXRlcigpLmNsb3NlKCk7Cit9LCAnY29udHJvbGxlciBhcmd1bWVudCBz
aG91bGQgbm90IGJlIHBhc3NlZCB0byBjbG9zZSBtZXRob2QnKTsKKworcHJvbWlzZV90ZXN0KCgp
ID0+IHsKKyAgY29uc3Qgd3MgPSBuZXcgV3JpdGFibGVTdHJlYW0oe30sIHsKKyAgICBoaWdoV2F0
ZXJNYXJrOiAxMDAwLAorICAgIHNpemUoKSB7IHJldHVybiAxOyB9CisgIH0pOworCisgIGNvbnN0
IHdyaXRlciA9IHdzLmdldFdyaXRlcigpOworCisgIGFzc2VydF9lcXVhbHMod3JpdGVyLmRlc2ly
ZWRTaXplLCAxMDAwLCAnZGVzaXJlZFNpemUgc2hvdWxkIGJlIDEwMDAnKTsKKyAgcmV0dXJuIHdy
aXRlci5yZWFkeS50aGVuKHYgPT4geworICAgIGFzc2VydF9lcXVhbHModiwgdW5kZWZpbmVkLCAn
cmVhZHkgcHJvbWlzZSBzaG91bGQgZnVsZmlsbCB3aXRoIHVuZGVmaW5lZCcpOworICB9KTsKK30s
ICdoaWdoV2F0ZXJNYXJrIHNob3VsZCBiZSByZWZsZWN0ZWQgdG8gZGVzaXJlZFNpemUnKTsKKwor
cHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgY29uc3Qgd3MgPSBuZXcgV3JpdGFibGVTdHJlYW0oe30s
IHsKKyAgICBoaWdoV2F0ZXJNYXJrOiBJbmZpbml0eSwKKyAgICBzaXplKCkgeyByZXR1cm4gMDsg
fQorICB9KTsKKworICBjb25zdCB3cml0ZXIgPSB3cy5nZXRXcml0ZXIoKTsKKworICBhc3NlcnRf
ZXF1YWxzKHdyaXRlci5kZXNpcmVkU2l6ZSwgSW5maW5pdHksICdkZXNpcmVkU2l6ZSBzaG91bGQg
YmUgSW5maW5pdHknKTsKKworICByZXR1cm4gd3JpdGVyLnJlYWR5OworfSwgJ1dyaXRhYmxlU3Ry
ZWFtIHNob3VsZCBiZSB3cml0YWJsZSBhbmQgcmVhZHkgc2hvdWxkIGZ1bGZpbGwgaW1tZWRpYXRl
bHkgaWYgdGhlIHN0cmF0ZWd5IGRvZXMgbm90IGFwcGx5ICcgKworICAgICdiYWNrcHJlc3N1cmUn
KTsKKwordGVzdCgoKSA9PiB7CisgIG5ldyBXcml0YWJsZVN0cmVhbSgpOworfSwgJ1dyaXRhYmxl
U3RyZWFtIHNob3VsZCBiZSBjb25zdHJ1Y3RpYmxlIHdpdGggbm8gYXJndW1lbnRzJyk7CisKK3Rl
c3QoKCkgPT4geworICBjb25zdCB1bmRlcmx5aW5nU2luayA9IHsgZ2V0IHN0YXJ0KCkgeyB0aHJv
dyBlcnJvcjE7IH0gfTsKKyAgY29uc3QgcXVldWluZ1N0cmF0ZWd5ID0geyBoaWdoV2F0ZXJNYXJr
OiAwLCBnZXQgc2l6ZSgpIHsgdGhyb3cgZXJyb3IyOyB9IH07CisKKyAgLy8gdW5kZXJseWluZ1Np
bmsgaXMgY29udmVydGVkIGluIHByb3NlIGluIHRoZSBtZXRob2QgYm9keSwgd2hlcmVhcyBxdWV1
aW5nU3RyYXRlZ3kgaXMgZG9uZSBhdCB0aGUgSURMIGxheWVyLgorICAvLyBTbyB0aGUgcXVldWlu
Z1N0cmF0ZWd5IGV4Y2VwdGlvbiBzaG91bGQgYmUgZW5jb3VudGVyZWQgZmlyc3QuCisgIGFzc2Vy
dF90aHJvd3NfZXhhY3RseShlcnJvcjIsICgpID0+IG5ldyBXcml0YWJsZVN0cmVhbSh1bmRlcmx5
aW5nU2luaywgcXVldWluZ1N0cmF0ZWd5KSk7Cit9LCAndW5kZXJseWluZ1NpbmsgYXJndW1lbnQg
c2hvdWxkIGJlIGNvbnZlcnRlZCBhZnRlciBxdWV1aW5nU3RyYXRlZ3kgYXJndW1lbnQnKTsKKwor
dGVzdCgoKSA9PiB7CisgIGNvbnN0IHdzID0gbmV3IFdyaXRhYmxlU3RyZWFtKHt9KTsKKworICBj
b25zdCB3cml0ZXIgPSB3cy5nZXRXcml0ZXIoKTsKKworICBhc3NlcnRfZXF1YWxzKHR5cGVvZiB3
cml0ZXIud3JpdGUsICdmdW5jdGlvbicsICd3cml0ZXIgc2hvdWxkIGhhdmUgYSB3cml0ZSBtZXRo
b2QnKTsKKyAgYXNzZXJ0X2VxdWFscyh0eXBlb2Ygd3JpdGVyLmFib3J0LCAnZnVuY3Rpb24nLCAn
d3JpdGVyIHNob3VsZCBoYXZlIGFuIGFib3J0IG1ldGhvZCcpOworICBhc3NlcnRfZXF1YWxzKHR5
cGVvZiB3cml0ZXIuY2xvc2UsICdmdW5jdGlvbicsICd3cml0ZXIgc2hvdWxkIGhhdmUgYSBjbG9z
ZSBtZXRob2QnKTsKKworICBhc3NlcnRfZXF1YWxzKHdyaXRlci5kZXNpcmVkU2l6ZSwgMSwgJ2Rl
c2lyZWRTaXplIHNob3VsZCBzdGFydCBhdCAxJyk7CisKKyAgYXNzZXJ0X25vdF9lcXVhbHModHlw
ZW9mIHdyaXRlci5yZWFkeSwgJ3VuZGVmaW5lZCcsICd3cml0ZXIgc2hvdWxkIGhhdmUgYSByZWFk
eSBwcm9wZXJ0eScpOworICBhc3NlcnRfZXF1YWxzKHR5cGVvZiB3cml0ZXIucmVhZHkudGhlbiwg
J2Z1bmN0aW9uJywgJ3JlYWR5IHByb3BlcnR5IHNob3VsZCBiZSB0aGVuYWJsZScpOworICBhc3Nl
cnRfbm90X2VxdWFscyh0eXBlb2Ygd3JpdGVyLmNsb3NlZCwgJ3VuZGVmaW5lZCcsICd3cml0ZXIg
c2hvdWxkIGhhdmUgYSBjbG9zZWQgcHJvcGVydHknKTsKKyAgYXNzZXJ0X2VxdWFscyh0eXBlb2Yg
d3JpdGVyLmNsb3NlZC50aGVuLCAnZnVuY3Rpb24nLCAnY2xvc2VkIHByb3BlcnR5IHNob3VsZCBi
ZSB0aGVuYWJsZScpOworfSwgJ1dyaXRhYmxlU3RyZWFtIGluc3RhbmNlcyBzaG91bGQgaGF2ZSBz
dGFuZGFyZCBtZXRob2RzIGFuZCBwcm9wZXJ0aWVzJyk7CisKK3Rlc3QoKCkgPT4geworICBsZXQg
V3JpdGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlcjsKKyAgbmV3IFdyaXRhYmxlU3RyZWFtKHsK
KyAgICBzdGFydChjKSB7CisgICAgICBXcml0YWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyID0g
Yy5jb25zdHJ1Y3RvcjsKKyAgICB9CisgIH0pOworCisgIGFzc2VydF90aHJvd3NfanMoVHlwZUVy
cm9yLCAoKSA9PiBuZXcgV3JpdGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlcih7fSksCisgICAg
ICAgICAgICAgICAgICAgJ2NvbnN0cnVjdG9yIHNob3VsZCB0aHJvdyBhIFR5cGVFcnJvciBleGNl
cHRpb24nKTsKK30sICdXcml0YWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyIGNvbnN0cnVjdG9y
IHNob3VsZCB0aHJvdycpOworCit0ZXN0KCgpID0+IHsKKyAgbGV0IFdyaXRhYmxlU3RyZWFtRGVm
YXVsdENvbnRyb2xsZXI7CisgIGNvbnN0IHN0cmVhbSA9IG5ldyBXcml0YWJsZVN0cmVhbSh7Cisg
ICAgc3RhcnQoYykgeworICAgICAgV3JpdGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlciA9IGMu
Y29uc3RydWN0b3I7CisgICAgfQorICB9KTsKKworICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJv
ciwgKCkgPT4gbmV3IFdyaXRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIoc3RyZWFtKSwKKyAg
ICAgICAgICAgICAgICAgICAnY29uc3RydWN0b3Igc2hvdWxkIHRocm93IGEgVHlwZUVycm9yIGV4
Y2VwdGlvbicpOworfSwgJ1dyaXRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIgY29uc3RydWN0
b3Igc2hvdWxkIHRocm93IHdoZW4gcGFzc2VkIGFuIGluaXRpYWxpc2VkIFdyaXRhYmxlU3RyZWFt
Jyk7CisKK3Rlc3QoKCkgPT4geworICBjb25zdCBzdHJlYW0gPSBuZXcgV3JpdGFibGVTdHJlYW0o
KTsKKyAgY29uc3Qgd3JpdGVyID0gc3RyZWFtLmdldFdyaXRlcigpOworICBjb25zdCBXcml0YWJs
ZVN0cmVhbURlZmF1bHRXcml0ZXIgPSB3cml0ZXIuY29uc3RydWN0b3I7CisgIHdyaXRlci5yZWxl
YXNlTG9jaygpOworICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4gbmV3IFdyaXRh
YmxlU3RyZWFtRGVmYXVsdFdyaXRlcih7fSksCisgICAgICAgICAgICAgICAgICAgJ2NvbnN0cnVj
dG9yIHNob3VsZCB0aHJvdyBhIFR5cGVFcnJvciBleGNlcHRpb24nKTsKK30sICdXcml0YWJsZVN0
cmVhbURlZmF1bHRXcml0ZXIgc2hvdWxkIHRocm93IHVubGVzcyBwYXNzZWQgYSBXcml0YWJsZVN0
cmVhbScpOworCit0ZXN0KCgpID0+IHsKKyAgY29uc3Qgc3RyZWFtID0gbmV3IFdyaXRhYmxlU3Ry
ZWFtKCk7CisgIGNvbnN0IHdyaXRlciA9IHN0cmVhbS5nZXRXcml0ZXIoKTsKKyAgY29uc3QgV3Jp
dGFibGVTdHJlYW1EZWZhdWx0V3JpdGVyID0gd3JpdGVyLmNvbnN0cnVjdG9yOworICBhc3NlcnRf
dGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4gbmV3IFdyaXRhYmxlU3RyZWFtRGVmYXVsdFdyaXRl
cihzdHJlYW0pLAorICAgICAgICAgICAgICAgICAgICdjb25zdHJ1Y3RvciBzaG91bGQgdGhyb3cg
YSBUeXBlRXJyb3IgZXhjZXB0aW9uJyk7Cit9LCAnV3JpdGFibGVTdHJlYW1EZWZhdWx0V3JpdGVy
IGNvbnN0cnVjdG9yIHNob3VsZCB0aHJvdyB3aGVuIHN0cmVhbSBhcmd1bWVudCBpcyBsb2NrZWQn
KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL2NvbnN0cnVjdG9yLmFueS53b3JrZXItZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJl
YW1zL3dyaXRhYmxlLXN0cmVhbXMvY29uc3RydWN0b3IuYW55Lndvcmtlci1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYjUwNzJlZjdjODFjMjMzY2E5OGQ4YjJlZTJlODkyN2ZlOGYwZjk1MgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL2NvbnN0cnVjdG9yLmFueS53b3JrZXItZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKKworRkFJTCBjb250cm9sbGVyIGFyZ3VtZW50IHNob3Vs
ZCBiZSBwYXNzZWQgdG8gc3RhcnQgbWV0aG9kIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxl
U3RyZWFtCitGQUlMIGNvbnRyb2xsZXIgYXJndW1lbnQgc2hvdWxkIGJlIHBhc3NlZCB0byB3cml0
ZSBtZXRob2QgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgY29udHJv
bGxlciBhcmd1bWVudCBzaG91bGQgbm90IGJlIHBhc3NlZCB0byBjbG9zZSBtZXRob2QgQ2FuJ3Qg
ZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgaGlnaFdhdGVyTWFyayBzaG91bGQg
YmUgcmVmbGVjdGVkIHRvIGRlc2lyZWRTaXplIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxl
U3RyZWFtCitGQUlMIFdyaXRhYmxlU3RyZWFtIHNob3VsZCBiZSB3cml0YWJsZSBhbmQgcmVhZHkg
c2hvdWxkIGZ1bGZpbGwgaW1tZWRpYXRlbHkgaWYgdGhlIHN0cmF0ZWd5IGRvZXMgbm90IGFwcGx5
IGJhY2twcmVzc3VyZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBX
cml0YWJsZVN0cmVhbSBzaG91bGQgYmUgY29uc3RydWN0aWJsZSB3aXRoIG5vIGFyZ3VtZW50cyBD
YW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCB1bmRlcmx5aW5nU2luayBh
cmd1bWVudCBzaG91bGQgYmUgY29udmVydGVkIGFmdGVyIHF1ZXVpbmdTdHJhdGVneSBhcmd1bWVu
dCBhc3NlcnRfdGhyb3dzX2V4YWN0bHk6IGZ1bmN0aW9uICIoKSA9PiBuZXcgV3JpdGFibGVTdHJl
YW0odW5kZXJseWluZ1NpbmssIHF1ZXVpbmdTdHJhdGVneSkiIHRocmV3IG9iamVjdCAiUmVmZXJl
bmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtIiBidXQgd2UgZXhw
ZWN0ZWQgaXQgdG8gdGhyb3cgb2JqZWN0ICJlcnJvcjI6IGVycm9yMiIKK0ZBSUwgV3JpdGFibGVT
dHJlYW0gaW5zdGFuY2VzIHNob3VsZCBoYXZlIHN0YW5kYXJkIG1ldGhvZHMgYW5kIHByb3BlcnRp
ZXMgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgV3JpdGFibGVTdHJl
YW1EZWZhdWx0Q29udHJvbGxlciBjb25zdHJ1Y3RvciBzaG91bGQgdGhyb3cgQ2FuJ3QgZmluZCB2
YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgV3JpdGFibGVTdHJlYW1EZWZhdWx0Q29udHJv
bGxlciBjb25zdHJ1Y3RvciBzaG91bGQgdGhyb3cgd2hlbiBwYXNzZWQgYW4gaW5pdGlhbGlzZWQg
V3JpdGFibGVTdHJlYW0gQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwg
V3JpdGFibGVTdHJlYW1EZWZhdWx0V3JpdGVyIHNob3VsZCB0aHJvdyB1bmxlc3MgcGFzc2VkIGEg
V3JpdGFibGVTdHJlYW0gQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwg
V3JpdGFibGVTdHJlYW1EZWZhdWx0V3JpdGVyIGNvbnN0cnVjdG9yIHNob3VsZCB0aHJvdyB3aGVu
IHN0cmVhbSBhcmd1bWVudCBpcyBsb2NrZWQgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVT
dHJlYW0KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvY29uc3RydWN0b3IuYW55Lndvcmtlci5o
dG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
L3dyaXRhYmxlLXN0cmVhbXMvY29uc3RydWN0b3IuYW55Lndvcmtlci5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjIzODI5MTM1MjhlNjkzYjNhNWQ1NmM2NjBhNDUwNjA5ODBiNTQ4YzMKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
d3JpdGFibGUtc3RyZWFtcy9jb25zdHJ1Y3Rvci5hbnkud29ya2VyLmh0bWwKQEAgLTAsMCArMSBA
QAorPCEtLSBUaGlzIGZpbGUgaXMgcmVxdWlyZWQgZm9yIFdlYktpdCB0ZXN0IGluZnJhc3RydWN0
dXJlIHRvIHJ1biB0aGUgdGVtcGxhdGVkIHRlc3QgLS0+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvY291bnQtcXVldWluZy1zdHJhdGVneS5hbnkt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvY291bnQtcXVldWluZy1zdHJhdGVneS5hbnktZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJiZjhkMzU3YzViNWZlZWQwZDlkNzMzNzcyNDVlYWMzNzdh
YTQyZTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9jb3VudC1xdWV1aW5nLXN0cmF0
ZWd5LmFueS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1IEBACisKK1BBU1MgQ2FuIGNvbnN0cnVj
dCBhIHdyaXRhYmxlIHN0cmVhbSB3aXRoIGEgdmFsaWQgQ291bnRRdWV1aW5nU3RyYXRlZ3kgCitG
QUlMIENvcnJlY3RseSBnb3Zlcm5zIHRoZSB2YWx1ZSBvZiBhIFdyaXRhYmxlU3RyZWFtJ3Mgc3Rh
dGUgcHJvcGVydHkgKEhXTSA9IDApIHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKElu
ICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkKK0ZBSUwgQ29y
cmVjdGx5IGdvdmVybnMgdGhlIHZhbHVlIG9mIGEgV3JpdGFibGVTdHJlYW0ncyBzdGF0ZSBwcm9w
ZXJ0eSAoSFdNID0gNCkgd3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdl
dFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicgaXMgdW5kZWZpbmVkKQorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFi
bGUtc3RyZWFtcy9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5LmFueS5odG1sIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMv
Y291bnQtcXVldWluZy1zdHJhdGVneS5hbnkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMzgyOTEzNTI4ZTY5
M2IzYTVkNTZjNjYwYTQ1MDYwOTgwYjU0OGMzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVh
bXMvY291bnQtcXVldWluZy1zdHJhdGVneS5hbnkuaHRtbApAQCAtMCwwICsxIEBACis8IS0tIFRo
aXMgZmlsZSBpcyByZXF1aXJlZCBmb3IgV2ViS2l0IHRlc3QgaW5mcmFzdHJ1Y3R1cmUgdG8gcnVu
IHRoZSB0ZW1wbGF0ZWQgdGVzdCAtLT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvd3JpdGFibGUtc3RyZWFtcy9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5LmFueS5qcyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1z
dHJlYW1zL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3kuYW55LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMwZWRiM2Vi
MzE1YzYyODFmZWU2YzhmNGE5MGRjZDk1YmJhNDg3ZmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUt
c3RyZWFtcy9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5LmFueS5qcwpAQCAtMCwwICsxLDEyNCBAQAor
Ly8gTUVUQTogZ2xvYmFsPXdpbmRvdyx3b3JrZXIsanNzaGVsbAorJ3VzZSBzdHJpY3QnOworCit0
ZXN0KCgpID0+IHsKKyAgbmV3IFdyaXRhYmxlU3RyZWFtKHt9LCBuZXcgQ291bnRRdWV1aW5nU3Ry
YXRlZ3koeyBoaWdoV2F0ZXJNYXJrOiA0IH0pKTsKK30sICdDYW4gY29uc3RydWN0IGEgd3JpdGFi
bGUgc3RyZWFtIHdpdGggYSB2YWxpZCBDb3VudFF1ZXVpbmdTdHJhdGVneScpOworCitwcm9taXNl
X3Rlc3QoKCkgPT4geworICBjb25zdCBkb25lcyA9IE9iamVjdC5jcmVhdGUobnVsbCk7CisKKyAg
Y29uc3Qgd3MgPSBuZXcgV3JpdGFibGVTdHJlYW0oCisgICAgeworICAgICAgd3JpdGUoY2h1bmsp
IHsKKyAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4geworICAgICAgICAgIGRv
bmVzW2NodW5rXSA9IHJlc29sdmU7CisgICAgICAgIH0pOworICAgICAgfQorICAgIH0sCisgICAg
bmV3IENvdW50UXVldWluZ1N0cmF0ZWd5KHsgaGlnaFdhdGVyTWFyazogMCB9KQorICApOworCisg
IGNvbnN0IHdyaXRlciA9IHdzLmdldFdyaXRlcigpOworICBsZXQgd3JpdGVQcm9taXNlQjsKKyAg
bGV0IHdyaXRlUHJvbWlzZUM7CisKKyAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCkg
PT4geworICAgIGFzc2VydF9lcXVhbHMod3JpdGVyLmRlc2lyZWRTaXplLCAwLCAnZGVzaXJlZFNp
emUgc2hvdWxkIGJlIGluaXRpYWxseSAwJyk7CisKKyAgICBjb25zdCB3cml0ZVByb21pc2VBID0g
d3JpdGVyLndyaXRlKCdhJyk7CisgICAgYXNzZXJ0X2VxdWFscyh3cml0ZXIuZGVzaXJlZFNpemUs
IC0xLCAnZGVzaXJlZFNpemUgc2hvdWxkIGJlIC0xIGFmdGVyIDFzdCB3cml0ZSgpJyk7CisKKyAg
ICB3cml0ZVByb21pc2VCID0gd3JpdGVyLndyaXRlKCdiJyk7CisgICAgYXNzZXJ0X2VxdWFscyh3
cml0ZXIuZGVzaXJlZFNpemUsIC0yLCAnZGVzaXJlZFNpemUgc2hvdWxkIGJlIC0yIGFmdGVyIDJu
ZCB3cml0ZSgpJyk7CisKKyAgICBkb25lcy5hKCk7CisgICAgcmV0dXJuIHdyaXRlUHJvbWlzZUE7
CisgIH0pLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9lcXVhbHMod3JpdGVyLmRlc2lyZWRTaXpl
LCAtMSwgJ2Rlc2lyZWRTaXplIHNob3VsZCBiZSAtMSBhZnRlciBjb21wbGV0aW5nIDFzdCB3cml0
ZSgpJyk7CisKKyAgICBkb25lcy5iKCk7CisgICAgcmV0dXJuIHdyaXRlUHJvbWlzZUI7CisgIH0p
LnRoZW4oKCkgPT4geworICAgIGFzc2VydF9lcXVhbHMod3JpdGVyLmRlc2lyZWRTaXplLCAwLCAn
ZGVzaXJlZFNpemUgc2hvdWxkIGJlIDAgYWZ0ZXIgY29tcGxldGluZyAybmQgd3JpdGUoKScpOwor
CisgICAgd3JpdGVQcm9taXNlQyA9IHdyaXRlci53cml0ZSgnYycpOworICAgIGFzc2VydF9lcXVh
bHMod3JpdGVyLmRlc2lyZWRTaXplLCAtMSwgJ2Rlc2lyZWRTaXplIHNob3VsZCBiZSAtMSBhZnRl
ciAzcmQgd3JpdGUoKScpOworCisgICAgZG9uZXMuYygpOworICAgIHJldHVybiB3cml0ZVByb21p
c2VDOworICB9KS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfZXF1YWxzKHdyaXRlci5kZXNpcmVk
U2l6ZSwgMCwgJ2Rlc2lyZWRTaXplIHNob3VsZCBiZSAwIGFmdGVyIGNvbXBsZXRpbmcgM3JkIHdy
aXRlKCknKTsKKyAgfSk7Cit9LCAnQ29ycmVjdGx5IGdvdmVybnMgdGhlIHZhbHVlIG9mIGEgV3Jp
dGFibGVTdHJlYW1cJ3Mgc3RhdGUgcHJvcGVydHkgKEhXTSA9IDApJyk7CisKK3Byb21pc2VfdGVz
dCgoKSA9PiB7CisgIGNvbnN0IGRvbmVzID0gT2JqZWN0LmNyZWF0ZShudWxsKTsKKworICBjb25z
dCB3cyA9IG5ldyBXcml0YWJsZVN0cmVhbSgKKyAgICB7CisgICAgICB3cml0ZShjaHVuaykgewor
ICAgICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7CisgICAgICAgICAgZG9uZXNb
Y2h1bmtdID0gcmVzb2x2ZTsKKyAgICAgICAgfSk7CisgICAgICB9CisgICAgfSwKKyAgICBuZXcg
Q291bnRRdWV1aW5nU3RyYXRlZ3koeyBoaWdoV2F0ZXJNYXJrOiA0IH0pCisgICk7CisKKyAgY29u
c3Qgd3JpdGVyID0gd3MuZ2V0V3JpdGVyKCk7CisgIGxldCB3cml0ZVByb21pc2VCOworICBsZXQg
d3JpdGVQcm9taXNlQzsKKyAgbGV0IHdyaXRlUHJvbWlzZUQ7CisKKyAgcmV0dXJuIFByb21pc2Uu
cmVzb2x2ZSgpLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9lcXVhbHMod3JpdGVyLmRlc2lyZWRT
aXplLCA0LCAnZGVzaXJlZFNpemUgc2hvdWxkIGJlIGluaXRpYWxseSA0Jyk7CisKKyAgICBjb25z
dCB3cml0ZVByb21pc2VBID0gd3JpdGVyLndyaXRlKCdhJyk7CisgICAgYXNzZXJ0X2VxdWFscyh3
cml0ZXIuZGVzaXJlZFNpemUsIDMsICdkZXNpcmVkU2l6ZSBzaG91bGQgYmUgMyBhZnRlciAxc3Qg
d3JpdGUoKScpOworCisgICAgd3JpdGVQcm9taXNlQiA9IHdyaXRlci53cml0ZSgnYicpOworICAg
IGFzc2VydF9lcXVhbHMod3JpdGVyLmRlc2lyZWRTaXplLCAyLCAnZGVzaXJlZFNpemUgc2hvdWxk
IGJlIDIgYWZ0ZXIgMm5kIHdyaXRlKCknKTsKKworICAgIHdyaXRlUHJvbWlzZUMgPSB3cml0ZXIu
d3JpdGUoJ2MnKTsKKyAgICBhc3NlcnRfZXF1YWxzKHdyaXRlci5kZXNpcmVkU2l6ZSwgMSwgJ2Rl
c2lyZWRTaXplIHNob3VsZCBiZSAxIGFmdGVyIDNyZCB3cml0ZSgpJyk7CisKKyAgICB3cml0ZVBy
b21pc2VEID0gd3JpdGVyLndyaXRlKCdkJyk7CisgICAgYXNzZXJ0X2VxdWFscyh3cml0ZXIuZGVz
aXJlZFNpemUsIDAsICdkZXNpcmVkU2l6ZSBzaG91bGQgYmUgMCBhZnRlciA0dGggd3JpdGUoKScp
OworCisgICAgd3JpdGVyLndyaXRlKCdlJyk7CisgICAgYXNzZXJ0X2VxdWFscyh3cml0ZXIuZGVz
aXJlZFNpemUsIC0xLCAnZGVzaXJlZFNpemUgc2hvdWxkIGJlIC0xIGFmdGVyIDV0aCB3cml0ZSgp
Jyk7CisKKyAgICB3cml0ZXIud3JpdGUoJ2YnKTsKKyAgICBhc3NlcnRfZXF1YWxzKHdyaXRlci5k
ZXNpcmVkU2l6ZSwgLTIsICdkZXNpcmVkU2l6ZSBzaG91bGQgYmUgLTIgYWZ0ZXIgNnRoIHdyaXRl
KCknKTsKKworICAgIHdyaXRlci53cml0ZSgnZycpOworICAgIGFzc2VydF9lcXVhbHMod3JpdGVy
LmRlc2lyZWRTaXplLCAtMywgJ2Rlc2lyZWRTaXplIHNob3VsZCBiZSAtMyBhZnRlciA3dGggd3Jp
dGUoKScpOworCisgICAgZG9uZXMuYSgpOworICAgIHJldHVybiB3cml0ZVByb21pc2VBOworICB9
KS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfZXF1YWxzKHdyaXRlci5kZXNpcmVkU2l6ZSwgLTIs
ICdkZXNpcmVkU2l6ZSBzaG91bGQgYmUgLTIgYWZ0ZXIgY29tcGxldGluZyAxc3Qgd3JpdGUoKScp
OworCisgICAgZG9uZXMuYigpOworICAgIHJldHVybiB3cml0ZVByb21pc2VCOworICB9KS50aGVu
KCgpID0+IHsKKyAgICBhc3NlcnRfZXF1YWxzKHdyaXRlci5kZXNpcmVkU2l6ZSwgLTEsICdkZXNp
cmVkU2l6ZSBzaG91bGQgYmUgLTEgYWZ0ZXIgY29tcGxldGluZyAybmQgd3JpdGUoKScpOworCisg
ICAgZG9uZXMuYygpOworICAgIHJldHVybiB3cml0ZVByb21pc2VDOworICB9KS50aGVuKCgpID0+
IHsKKyAgICBhc3NlcnRfZXF1YWxzKHdyaXRlci5kZXNpcmVkU2l6ZSwgMCwgJ2Rlc2lyZWRTaXpl
IHNob3VsZCBiZSAwIGFmdGVyIGNvbXBsZXRpbmcgM3JkIHdyaXRlKCknKTsKKworICAgIHdyaXRl
ci53cml0ZSgnaCcpOworICAgIGFzc2VydF9lcXVhbHMod3JpdGVyLmRlc2lyZWRTaXplLCAtMSwg
J2Rlc2lyZWRTaXplIHNob3VsZCBiZSAtMSBhZnRlciA4dGggd3JpdGUoKScpOworCisgICAgZG9u
ZXMuZCgpOworICAgIHJldHVybiB3cml0ZVByb21pc2VEOworICB9KS50aGVuKCgpID0+IHsKKyAg
ICBhc3NlcnRfZXF1YWxzKHdyaXRlci5kZXNpcmVkU2l6ZSwgMCwgJ2Rlc2lyZWRTaXplIHNob3Vs
ZCBiZSAwIGFmdGVyIGNvbXBsZXRpbmcgNHRoIHdyaXRlKCknKTsKKworICAgIHdyaXRlci53cml0
ZSgnaScpOworICAgIGFzc2VydF9lcXVhbHMod3JpdGVyLmRlc2lyZWRTaXplLCAtMSwgJ2Rlc2ly
ZWRTaXplIHNob3VsZCBiZSAtMSBhZnRlciA5dGggd3JpdGUoKScpOworICB9KTsKK30sICdDb3Jy
ZWN0bHkgZ292ZXJucyB0aGUgdmFsdWUgb2YgYSBXcml0YWJsZVN0cmVhbVwncyBzdGF0ZSBwcm9w
ZXJ0eSAoSFdNID0gNCknKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL2NvdW50LXF1ZXVpbmct
c3RyYXRlZ3kuYW55Lndvcmtlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9jb3VudC1xdWV1
aW5nLXN0cmF0ZWd5LmFueS53b3JrZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ4NDJiYjE0
Y2I1ZWJiNTQ4ZTRiYTEyOWEzZDMzOTY2OWYwYTU0NDEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUt
c3RyZWFtcy9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5LmFueS53b3JrZXItZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsNSBAQAorCitGQUlMIENhbiBjb25zdHJ1Y3QgYSB3cml0YWJsZSBzdHJlYW0gd2l0
aCBhIHZhbGlkIENvdW50UXVldWluZ1N0cmF0ZWd5IENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRh
YmxlU3RyZWFtCitGQUlMIENvcnJlY3RseSBnb3Zlcm5zIHRoZSB2YWx1ZSBvZiBhIFdyaXRhYmxl
U3RyZWFtJ3Mgc3RhdGUgcHJvcGVydHkgKEhXTSA9IDApIENhbid0IGZpbmQgdmFyaWFibGU6IFdy
aXRhYmxlU3RyZWFtCitGQUlMIENvcnJlY3RseSBnb3Zlcm5zIHRoZSB2YWx1ZSBvZiBhIFdyaXRh
YmxlU3RyZWFtJ3Mgc3RhdGUgcHJvcGVydHkgKEhXTSA9IDQpIENhbid0IGZpbmQgdmFyaWFibGU6
IFdyaXRhYmxlU3RyZWFtCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL2NvdW50LXF1ZXVpbmct
c3RyYXRlZ3kuYW55Lndvcmtlci5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvY291bnQtcXVldWluZy1zdHJh
dGVneS5hbnkud29ya2VyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjM4MjkxMzUyOGU2OTNiM2E1ZDU2YzY2
MGE0NTA2MDk4MGI1NDhjMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL2NvdW50LXF1
ZXVpbmctc3RyYXRlZ3kuYW55Lndvcmtlci5odG1sCkBAIC0wLDAgKzEgQEAKKzwhLS0gVGhpcyBm
aWxlIGlzIHJlcXVpcmVkIGZvciBXZWJLaXQgdGVzdCBpbmZyYXN0cnVjdHVyZSB0byBydW4gdGhl
IHRlbXBsYXRlZCB0ZXN0IC0tPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93
cml0YWJsZS1zdHJlYW1zL2Vycm9yLmFueS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9lcnJv
ci5hbnktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBhZjg2ZmE1OWJiODc3ZjJmYjZiZTQ2NTI4
NzkyNmVmOTY4ODdhZGUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9lcnJvci5hbnkt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNyBAQAorCitGQUlMIGNvbnRyb2xsZXIuZXJyb3IoKSBz
aG91bGQgZXJyb3IgdGhlIHN0cmVhbSBjb250cm9sbGVyLmVycm9yIGlzIG5vdCBhIGZ1bmN0aW9u
LiAoSW4gJ2NvbnRyb2xsZXIuZXJyb3IoZXJyb3IxKScsICdjb250cm9sbGVyLmVycm9yJyBpcyB1
bmRlZmluZWQpCitGQUlMIGNvbnRyb2xsZXIuZXJyb3IoKSBvbiBlcnJvcmluZyBzdHJlYW0gc2hv
dWxkIG5vdCB0aHJvdyBjb250cm9sbGVyLmVycm9yIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ2Nv
bnRyb2xsZXIuZXJyb3IoZXJyb3IxKScsICdjb250cm9sbGVyLmVycm9yJyBpcyB1bmRlZmluZWQp
CitGQUlMIHN1cnBsdXMgY2FsbHMgdG8gY29udHJvbGxlci5lcnJvcigpIHNob3VsZCBiZSBhIG5v
LW9wIGNvbnRyb2xsZXIuZXJyb3IgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnY29udHJvbGxlci5l
cnJvcihlcnJvcjEpJywgJ2NvbnRyb2xsZXIuZXJyb3InIGlzIHVuZGVmaW5lZCkKK0ZBSUwgY29u
dHJvbGxlci5lcnJvcigpIG9uIGVycm9yZWQgc3RyZWFtIHNob3VsZCBub3QgdGhyb3cgcHJvbWlz
ZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiVHlwZUVycm9y
OiBjb250cm9sbGVyLmVycm9yIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ2NvbnRyb2xsZXIuZXJy
b3IoZXJyb3IxKScsICdjb250cm9sbGVyLmVycm9yJyBpcyB1bmRlZmluZWQpIgorRkFJTCBjb250
cm9sbGVyLmVycm9yKCkgb24gY2xvc2VkIHN0cmVhbSBzaG91bGQgbm90IHRocm93IHdzLmdldFdy
aXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0
ZXInIGlzIHVuZGVmaW5lZCkKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvZXJyb3IuYW55Lmh0
bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
d3JpdGFibGUtc3RyZWFtcy9lcnJvci5hbnkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMzgyOTEzNTI4ZTY5
M2IzYTVkNTZjNjYwYTQ1MDYwOTgwYjU0OGMzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVh
bXMvZXJyb3IuYW55Lmh0bWwKQEAgLTAsMCArMSBAQAorPCEtLSBUaGlzIGZpbGUgaXMgcmVxdWly
ZWQgZm9yIFdlYktpdCB0ZXN0IGluZnJhc3RydWN0dXJlIHRvIHJ1biB0aGUgdGVtcGxhdGVkIHRl
c3QgLS0+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVh
bXMvZXJyb3IuYW55LmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvZXJyb3IuYW55LmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJl
OTg2ZmNjYzZlYWM2NTE3MjJhYjQyZTBjMDNmZjdmMzg2ZmNmYTgKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3Jp
dGFibGUtc3RyZWFtcy9lcnJvci5hbnkuanMKQEAgLTAsMCArMSw2NCBAQAorLy8gTUVUQTogZ2xv
YmFsPXdpbmRvdyx3b3JrZXIsanNzaGVsbAorJ3VzZSBzdHJpY3QnOworCitjb25zdCBlcnJvcjEg
PSBuZXcgRXJyb3IoJ2Vycm9yMScpOworZXJyb3IxLm5hbWUgPSAnZXJyb3IxJzsKKworY29uc3Qg
ZXJyb3IyID0gbmV3IEVycm9yKCdlcnJvcjInKTsKK2Vycm9yMi5uYW1lID0gJ2Vycm9yMic7CisK
K3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgY29uc3Qgd3MgPSBuZXcgV3JpdGFibGVTdHJlYW0oewor
ICAgIHN0YXJ0KGNvbnRyb2xsZXIpIHsKKyAgICAgIGNvbnRyb2xsZXIuZXJyb3IoZXJyb3IxKTsK
KyAgICB9CisgIH0pOworICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3Ix
LCB3cy5nZXRXcml0ZXIoKS5jbG9zZWQsICdzdHJlYW0gc2hvdWxkIGJlIGVycm9yZWQnKTsKK30s
ICdjb250cm9sbGVyLmVycm9yKCkgc2hvdWxkIGVycm9yIHRoZSBzdHJlYW0nKTsKKwordGVzdCgo
KSA9PiB7CisgIGxldCBjb250cm9sbGVyOworICBjb25zdCB3cyA9IG5ldyBXcml0YWJsZVN0cmVh
bSh7CisgICAgc3RhcnQoYykgeworICAgICAgY29udHJvbGxlciA9IGM7CisgICAgfQorICB9KTsK
KyAgd3MuYWJvcnQoKTsKKyAgY29udHJvbGxlci5lcnJvcihlcnJvcjEpOworfSwgJ2NvbnRyb2xs
ZXIuZXJyb3IoKSBvbiBlcnJvcmluZyBzdHJlYW0gc2hvdWxkIG5vdCB0aHJvdycpOworCitwcm9t
aXNlX3Rlc3QodCA9PiB7CisgIGxldCBjb250cm9sbGVyOworICBjb25zdCB3cyA9IG5ldyBXcml0
YWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgY29udHJvbGxlciA9IGM7CisgICAg
fQorICB9KTsKKyAgY29udHJvbGxlci5lcnJvcihlcnJvcjEpOworICBjb250cm9sbGVyLmVycm9y
KGVycm9yMik7CisgIHJldHVybiBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIHdz
LmdldFdyaXRlcigpLmNsb3NlZCwgJ2ZpcnN0IGNvbnRyb2xsZXIuZXJyb3IoKSBzaG91bGQgd2lu
Jyk7Cit9LCAnc3VycGx1cyBjYWxscyB0byBjb250cm9sbGVyLmVycm9yKCkgc2hvdWxkIGJlIGEg
bm8tb3AnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgbGV0IGNvbnRyb2xsZXI7CisgIGNv
bnN0IHdzID0gbmV3IFdyaXRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjb250
cm9sbGVyID0gYzsKKyAgICB9CisgIH0pOworICByZXR1cm4gd3MuYWJvcnQoKS50aGVuKCgpID0+
IHsKKyAgICBjb250cm9sbGVyLmVycm9yKGVycm9yMSk7CisgIH0pOworfSwgJ2NvbnRyb2xsZXIu
ZXJyb3IoKSBvbiBlcnJvcmVkIHN0cmVhbSBzaG91bGQgbm90IHRocm93Jyk7CisKK3Byb21pc2Vf
dGVzdCgoKSA9PiB7CisgIGxldCBjb250cm9sbGVyOworICBjb25zdCB3cyA9IG5ldyBXcml0YWJs
ZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgY29udHJvbGxlciA9IGM7CisgICAgfQor
ICB9KTsKKyAgcmV0dXJuIHdzLmdldFdyaXRlcigpLmNsb3NlKCkudGhlbigoKSA9PiB7CisgICAg
Y29udHJvbGxlci5lcnJvcihlcnJvcjEpOworICB9KTsKK30sICdjb250cm9sbGVyLmVycm9yKCkg
b24gY2xvc2VkIHN0cmVhbSBzaG91bGQgbm90IHRocm93Jyk7CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3Ry
ZWFtcy9lcnJvci5hbnkud29ya2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL2Vycm9yLmFu
eS53b3JrZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdjNzk3NTk2NDM5OWZlMzNmNzg2ZWQ0
Y2E2ZDk4Njc3MjA2ZjU1YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9lcnJvci5h
bnkud29ya2VyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDcgQEAKKworRkFJTCBjb250cm9sbGVy
LmVycm9yKCkgc2hvdWxkIGVycm9yIHRoZSBzdHJlYW0gQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3Jp
dGFibGVTdHJlYW0KK0ZBSUwgY29udHJvbGxlci5lcnJvcigpIG9uIGVycm9yaW5nIHN0cmVhbSBz
aG91bGQgbm90IHRocm93IENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlM
IHN1cnBsdXMgY2FsbHMgdG8gY29udHJvbGxlci5lcnJvcigpIHNob3VsZCBiZSBhIG5vLW9wIENh
bid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIGNvbnRyb2xsZXIuZXJyb3Io
KSBvbiBlcnJvcmVkIHN0cmVhbSBzaG91bGQgbm90IHRocm93IENhbid0IGZpbmQgdmFyaWFibGU6
IFdyaXRhYmxlU3RyZWFtCitGQUlMIGNvbnRyb2xsZXIuZXJyb3IoKSBvbiBjbG9zZWQgc3RyZWFt
IHNob3VsZCBub3QgdGhyb3cgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
dHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvZXJyb3IuYW55Lndvcmtlci5odG1sIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVh
bXMvZXJyb3IuYW55Lndvcmtlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzODI5MTM1MjhlNjkzYjNhNWQ1
NmM2NjBhNDUwNjA5ODBiNTQ4YzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9lcnJv
ci5hbnkud29ya2VyLmh0bWwKQEAgLTAsMCArMSBAQAorPCEtLSBUaGlzIGZpbGUgaXMgcmVxdWly
ZWQgZm9yIFdlYktpdCB0ZXN0IGluZnJhc3RydWN0dXJlIHRvIHJ1biB0aGUgdGVtcGxhdGVkIHRl
c3QgLS0+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVh
bXMvZmxvYXRpbmctcG9pbnQtdG90YWwtcXVldWUtc2l6ZS5hbnktZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxl
LXN0cmVhbXMvZmxvYXRpbmctcG9pbnQtdG90YWwtcXVldWUtc2l6ZS5hbnktZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjk4MzM4NDAwM2FlNjAyYTY1MzIyYzkyZDkxYjJhYTY4NWVjMTc3ZTUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9mbG9hdGluZy1wb2ludC10b3RhbC1xdWV1ZS1z
aXplLmFueS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw2IEBACisKK0ZBSUwgRmxvYXRpbmcgcG9p
bnQgYXJpdGhtZXRpYyBtdXN0IG1hbmlmZXN0IG5lYXIgTlVNQkVSLk1BWF9TQUZFX0lOVEVHRVIg
KHRvdGFsIGVuZHMgdXAgcG9zaXRpdmUpIHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4g
KEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkKK0ZBSUwg
RmxvYXRpbmcgcG9pbnQgYXJpdGhtZXRpYyBtdXN0IG1hbmlmZXN0IG5lYXIgMCAodG90YWwgZW5k
cyB1cCBwb3NpdGl2ZSwgYnV0IGNsYW1wZWQpIHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlv
bi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkKK0ZB
SUwgRmxvYXRpbmcgcG9pbnQgYXJpdGhtZXRpYyBtdXN0IG1hbmlmZXN0IG5lYXIgMCAodG90YWwg
ZW5kcyB1cCBwb3NpdGl2ZSwgYW5kIG5vdCBjbGFtcGVkKSB3cy5nZXRXcml0ZXIgaXMgbm90IGEg
ZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3JpdGVyKCknLCAnd3MuZ2V0V3JpdGVyJyBpcyB1bmRlZmlu
ZWQpCitGQUlMIEZsb2F0aW5nIHBvaW50IGFyaXRobWV0aWMgbXVzdCBtYW5pZmVzdCBuZWFyIDAg
KHRvdGFsIGVuZHMgdXAgemVybykgd3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4g
J3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicgaXMgdW5kZWZpbmVkKQorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
d3JpdGFibGUtc3RyZWFtcy9mbG9hdGluZy1wb2ludC10b3RhbC1xdWV1ZS1zaXplLmFueS5odG1s
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dy
aXRhYmxlLXN0cmVhbXMvZmxvYXRpbmctcG9pbnQtdG90YWwtcXVldWUtc2l6ZS5hbnkuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4yMzgyOTEzNTI4ZTY5M2IzYTVkNTZjNjYwYTQ1MDYwOTgwYjU0OGMzCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvZmxvYXRpbmctcG9pbnQtdG90YWwtcXVldWUtc2l6
ZS5hbnkuaHRtbApAQCAtMCwwICsxIEBACis8IS0tIFRoaXMgZmlsZSBpcyByZXF1aXJlZCBmb3Ig
V2ViS2l0IHRlc3QgaW5mcmFzdHJ1Y3R1cmUgdG8gcnVuIHRoZSB0ZW1wbGF0ZWQgdGVzdCAtLT4K
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9mbG9h
dGluZy1wb2ludC10b3RhbC1xdWV1ZS1zaXplLmFueS5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL2Zsb2F0aW5n
LXBvaW50LXRvdGFsLXF1ZXVlLXNpemUuYW55LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhlNzdiYTBiYjMxMTg1
YzVlMGI3YmU2OTI0NmUxYzkxOWM3YmFlNmYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFt
cy9mbG9hdGluZy1wb2ludC10b3RhbC1xdWV1ZS1zaXplLmFueS5qcwpAQCAtMCwwICsxLDg3IEBA
CisvLyBNRVRBOiBnbG9iYWw9d2luZG93LHdvcmtlcixqc3NoZWxsCisndXNlIHN0cmljdCc7CisK
Ky8vIER1ZSB0byB0aGUgbGltaXRhdGlvbnMgb2YgZmxvYXRpbmctcG9pbnQgcHJlY2lzaW9uLCB0
aGUgY2FsY3VsYXRpb24gb2YgZGVzaXJlZFNpemUgc29tZXRpbWVzIGdpdmVzIGRpZmZlcmVudCBh
bnN3ZXJzCisvLyB0aGFuIGFkZGluZyB1cCB0aGUgaXRlbXMgaW4gdGhlIHF1ZXVlIHdvdWxkLiBJ
dCBpcyBpbXBvcnRhbnQgdGhhdCBpbXBsZW1lbnRhdGlvbnMgZ2l2ZSB0aGUgc2FtZSByZXN1bHQg
aW4gdGhlc2UgZWRnZQorLy8gY2FzZXMgc28gdGhhdCBkZXZlbG9wZXJzIGRvIG5vdCBjb21lIHRv
IGRlcGVuZCBvbiBub24tc3RhbmRhcmQgYmVoYXZpb3VyLiBTZWUKKy8vIGh0dHBzOi8vZ2l0aHVi
LmNvbS93aGF0d2cvc3RyZWFtcy9pc3N1ZXMvNTgyIGFuZCBsaW5rZWQgaXNzdWVzIGZvciBmdXJ0
aGVyIGRpc2N1c3Npb24uCisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisgIGNvbnN0IHdyaXRlciA9
IHNldHVwVGVzdFN0cmVhbSgpOworCisgIGNvbnN0IHdyaXRlUHJvbWlzZXMgPSBbCisgICAgd3Jp
dGVyLndyaXRlKDIpLAorICAgIHdyaXRlci53cml0ZShOdW1iZXIuTUFYX1NBRkVfSU5URUdFUikK
KyAgXTsKKworICBhc3NlcnRfZXF1YWxzKHdyaXRlci5kZXNpcmVkU2l6ZSwgMCAtIDIgLSBOdW1i
ZXIuTUFYX1NBRkVfSU5URUdFUiwKKyAgICAnZGVzaXJlZFNpemUgbXVzdCBiZSBjYWxjdWxhdGVk
IHVzaW5nIGRvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgYXJpdGhtZXRpYyAoYWZ0ZXIg
d3JpdGluZyB0d28gY2h1bmtzKScpOworCisgIHJldHVybiBQcm9taXNlLmFsbCh3cml0ZVByb21p
c2VzKS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfZXF1YWxzKHdyaXRlci5kZXNpcmVkU2l6ZSwg
MCwgJ1tbcXVldWVUb3RhbFNpemVdXSBtdXN0IGNsYW1wIHRvIDAgaWYgaXQgYmVjb21lcyBuZWdh
dGl2ZScpOworICB9KTsKK30sICdGbG9hdGluZyBwb2ludCBhcml0aG1ldGljIG11c3QgbWFuaWZl
c3QgbmVhciBOVU1CRVIuTUFYX1NBRkVfSU5URUdFUiAodG90YWwgZW5kcyB1cCBwb3NpdGl2ZSkn
KTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgY29uc3Qgd3JpdGVyID0gc2V0dXBUZXN0U3Ry
ZWFtKCk7CisKKyAgY29uc3Qgd3JpdGVQcm9taXNlcyA9IFsKKyAgICB3cml0ZXIud3JpdGUoMWUt
MTYpLAorICAgIHdyaXRlci53cml0ZSgxKQorICBdOworCisgIGFzc2VydF9lcXVhbHMod3JpdGVy
LmRlc2lyZWRTaXplLCAwIC0gMWUtMTYgLSAxLAorICAgICdkZXNpcmVkU2l6ZSBtdXN0IGJlIGNh
bGN1bGF0ZWQgdXNpbmcgZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCBhcml0aG1ldGlj
IChhZnRlciB3cml0aW5nIHR3byBjaHVua3MpJyk7CisKKyAgcmV0dXJuIFByb21pc2UuYWxsKHdy
aXRlUHJvbWlzZXMpLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9lcXVhbHMod3JpdGVyLmRlc2ly
ZWRTaXplLCAwLCAnW1txdWV1ZVRvdGFsU2l6ZV1dIG11c3QgY2xhbXAgdG8gMCBpZiBpdCBiZWNv
bWVzIG5lZ2F0aXZlJyk7CisgIH0pOworfSwgJ0Zsb2F0aW5nIHBvaW50IGFyaXRobWV0aWMgbXVz
dCBtYW5pZmVzdCBuZWFyIDAgKHRvdGFsIGVuZHMgdXAgcG9zaXRpdmUsIGJ1dCBjbGFtcGVkKScp
OworCitwcm9taXNlX3Rlc3QoKCkgPT4geworICBjb25zdCB3cml0ZXIgPSBzZXR1cFRlc3RTdHJl
YW0oKTsKKworICBjb25zdCB3cml0ZVByb21pc2VzID0gWworICAgIHdyaXRlci53cml0ZSgxZS0x
NiksCisgICAgd3JpdGVyLndyaXRlKDEpLAorICAgIHdyaXRlci53cml0ZSgyZS0xNikKKyAgXTsK
KworICBhc3NlcnRfZXF1YWxzKHdyaXRlci5kZXNpcmVkU2l6ZSwgMCAtIDFlLTE2IC0gMSAtIDJl
LTE2LAorICAgICdkZXNpcmVkU2l6ZSBtdXN0IGJlIGNhbGN1bGF0ZWQgdXNpbmcgZG91YmxlLXBy
ZWNpc2lvbiBmbG9hdGluZy1wb2ludCBhcml0aG1ldGljIChhZnRlciB3cml0aW5nIHRocmVlIGNo
dW5rcyknKTsKKworICByZXR1cm4gUHJvbWlzZS5hbGwod3JpdGVQcm9taXNlcykudGhlbigoKSA9
PiB7CisgICAgYXNzZXJ0X2VxdWFscyh3cml0ZXIuZGVzaXJlZFNpemUsIDAgLSAxZS0xNiAtIDEg
LSAyZS0xNiArIDFlLTE2ICsgMSArIDJlLTE2LAorICAgICAgJ2Rlc2lyZWRTaXplIG11c3QgYmUg
Y2FsY3VsYXRlZCB1c2luZyBmbG9hdGluZy1wb2ludCBhcml0aG1ldGljIChhZnRlciB0aGUgdGhy
ZWUgY2h1bmtzIGhhdmUgZmluaXNoZWQgd3JpdGluZyknKTsKKyAgfSk7Cit9LCAnRmxvYXRpbmcg
cG9pbnQgYXJpdGhtZXRpYyBtdXN0IG1hbmlmZXN0IG5lYXIgMCAodG90YWwgZW5kcyB1cCBwb3Np
dGl2ZSwgYW5kIG5vdCBjbGFtcGVkKScpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworICBjb25z
dCB3cml0ZXIgPSBzZXR1cFRlc3RTdHJlYW0oKTsKKworICBjb25zdCB3cml0ZVByb21pc2VzID0g
WworICAgIHdyaXRlci53cml0ZSgyZS0xNiksCisgICAgd3JpdGVyLndyaXRlKDEpCisgIF07CisK
KyAgYXNzZXJ0X2VxdWFscyh3cml0ZXIuZGVzaXJlZFNpemUsIDAgLSAyZS0xNiAtIDEsCisgICAg
J2Rlc2lyZWRTaXplIG11c3QgYmUgY2FsY3VsYXRlZCB1c2luZyBkb3VibGUtcHJlY2lzaW9uIGZs
b2F0aW5nLXBvaW50IGFyaXRobWV0aWMgKGFmdGVyIHdyaXRpbmcgdHdvIGNodW5rcyknKTsKKwor
ICByZXR1cm4gUHJvbWlzZS5hbGwod3JpdGVQcm9taXNlcykudGhlbigoKSA9PiB7CisgICAgYXNz
ZXJ0X2VxdWFscyh3cml0ZXIuZGVzaXJlZFNpemUsIDAgLSAyZS0xNiAtIDEgKyAyZS0xNiArIDEs
CisgICAgICAnZGVzaXJlZFNpemUgbXVzdCBiZSBjYWxjdWxhdGVkIHVzaW5nIGZsb2F0aW5nLXBv
aW50IGFyaXRobWV0aWMgKGFmdGVyIHRoZSB0d28gY2h1bmtzIGhhdmUgZmluaXNoZWQgd3JpdGlu
ZyknKTsKKyAgfSk7Cit9LCAnRmxvYXRpbmcgcG9pbnQgYXJpdGhtZXRpYyBtdXN0IG1hbmlmZXN0
IG5lYXIgMCAodG90YWwgZW5kcyB1cCB6ZXJvKScpOworCitmdW5jdGlvbiBzZXR1cFRlc3RTdHJl
YW0oKSB7CisgIGNvbnN0IHN0cmF0ZWd5ID0geworICAgIHNpemUoeCkgeworICAgICAgcmV0dXJu
IHg7CisgICAgfSwKKyAgICBoaWdoV2F0ZXJNYXJrOiAwCisgIH07CisKKyAgY29uc3Qgd3MgPSBu
ZXcgV3JpdGFibGVTdHJlYW0oe30sIHN0cmF0ZWd5KTsKKworICByZXR1cm4gd3MuZ2V0V3JpdGVy
KCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9mbG9hdGluZy1wb2ludC10b3RhbC1xdWV1
ZS1zaXplLmFueS53b3JrZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvZmxvYXRpbmctcG9p
bnQtdG90YWwtcXVldWUtc2l6ZS5hbnkud29ya2VyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43
ZWQzNDZlMDNiYWY0OWVlOTUwNzlhMzQ3MzUyODIzMDE2OTE1OGMxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dy
aXRhYmxlLXN0cmVhbXMvZmxvYXRpbmctcG9pbnQtdG90YWwtcXVldWUtc2l6ZS5hbnkud29ya2Vy
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDYgQEAKKworRkFJTCBGbG9hdGluZyBwb2ludCBhcml0
aG1ldGljIG11c3QgbWFuaWZlc3QgbmVhciBOVU1CRVIuTUFYX1NBRkVfSU5URUdFUiAodG90YWwg
ZW5kcyB1cCBwb3NpdGl2ZSkgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZB
SUwgRmxvYXRpbmcgcG9pbnQgYXJpdGhtZXRpYyBtdXN0IG1hbmlmZXN0IG5lYXIgMCAodG90YWwg
ZW5kcyB1cCBwb3NpdGl2ZSwgYnV0IGNsYW1wZWQpIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRh
YmxlU3RyZWFtCitGQUlMIEZsb2F0aW5nIHBvaW50IGFyaXRobWV0aWMgbXVzdCBtYW5pZmVzdCBu
ZWFyIDAgKHRvdGFsIGVuZHMgdXAgcG9zaXRpdmUsIGFuZCBub3QgY2xhbXBlZCkgQ2FuJ3QgZmlu
ZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgRmxvYXRpbmcgcG9pbnQgYXJpdGhtZXRp
YyBtdXN0IG1hbmlmZXN0IG5lYXIgMCAodG90YWwgZW5kcyB1cCB6ZXJvKSBDYW4ndCBmaW5kIHZh
cmlhYmxlOiBXcml0YWJsZVN0cmVhbQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9mbG9hdGlu
Zy1wb2ludC10b3RhbC1xdWV1ZS1zaXplLmFueS53b3JrZXIuaHRtbCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL2Zs
b2F0aW5nLXBvaW50LXRvdGFsLXF1ZXVlLXNpemUuYW55Lndvcmtlci5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjIzODI5MTM1MjhlNjkzYjNhNWQ1NmM2NjBhNDUwNjA5ODBiNTQ4YzMKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
d3JpdGFibGUtc3RyZWFtcy9mbG9hdGluZy1wb2ludC10b3RhbC1xdWV1ZS1zaXplLmFueS53b3Jr
ZXIuaHRtbApAQCAtMCwwICsxIEBACis8IS0tIFRoaXMgZmlsZSBpcyByZXF1aXJlZCBmb3IgV2Vi
S2l0IHRlc3QgaW5mcmFzdHJ1Y3R1cmUgdG8gcnVuIHRoZSB0ZW1wbGF0ZWQgdGVzdCAtLT4KXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9nZW5lcmFs
LmFueS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9nZW5lcmFsLmFueS1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYmFlZjQ0MWM0MTE0MmRmZTYyMTlhMjcxYzMxNzNhMmQzMzA3MTlmOAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL2dlbmVyYWwuYW55LWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDE4IEBACisKK0ZBSUwgZGVzaXJlZFNpemUgb24gYSByZWxlYXNlZCB3cml0ZXIgd3Mu
Z2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdl
dFdyaXRlcicgaXMgdW5kZWZpbmVkKQorRkFJTCBkZXNpcmVkU2l6ZSBpbml0aWFsIHZhbHVlIHdz
LmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5n
ZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkKK0ZBSUwgZGVzaXJlZFNpemUgb24gYSB3cml0ZXIgZm9y
IGEgY2xvc2VkIHN0cmVhbSB3cy5nZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3Mu
Z2V0V3JpdGVyKCknLCAnd3MuZ2V0V3JpdGVyJyBpcyB1bmRlZmluZWQpCitGQUlMIGRlc2lyZWRT
aXplIG9uIGEgd3JpdGVyIGZvciBhbiBlcnJvcmVkIHN0cmVhbSBjLmVycm9yIGlzIG5vdCBhIGZ1
bmN0aW9uLiAoSW4gJ2MuZXJyb3IoKScsICdjLmVycm9yJyBpcyB1bmRlZmluZWQpCitGQUlMIHdz
LmdldFdyaXRlcigpIG9uIGEgY2xvc2luZyBXcml0YWJsZVN0cmVhbSB3cy5nZXRXcml0ZXIgaXMg
bm90IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3JpdGVyKCknLCAnd3MuZ2V0V3JpdGVyJyBpcyB1
bmRlZmluZWQpCitGQUlMIHdzLmdldFdyaXRlcigpIG9uIGEgY2xvc2VkIFdyaXRhYmxlU3RyZWFt
IHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3
cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkKK0ZBSUwgd3MuZ2V0V3JpdGVyKCkgb24gYW4gYWJv
cnRlZCBXcml0YWJsZVN0cmVhbSB3cy5nZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAn
d3MuZ2V0V3JpdGVyKCknLCAnd3MuZ2V0V3JpdGVyJyBpcyB1bmRlZmluZWQpCitGQUlMIHdzLmdl
dFdyaXRlcigpIG9uIGFuIGVycm9yZWQgV3JpdGFibGVTdHJlYW0gYy5lcnJvciBpcyBub3QgYSBm
dW5jdGlvbi4gKEluICdjLmVycm9yKCknLCAnYy5lcnJvcicgaXMgdW5kZWZpbmVkKQorRkFJTCBj
bG9zZWQgYW5kIHJlYWR5IG9uIGEgcmVsZWFzZWQgd3JpdGVyIHdzLmdldFdyaXRlciBpcyBub3Qg
YSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVm
aW5lZCkKK0ZBSUwgV3JpdGFibGVTdHJlYW0gc2hvdWxkIGNhbGwgdW5kZXJseWluZyBzaW5rIG1l
dGhvZHMgYXMgbWV0aG9kcyB3cy5nZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3Mu
Z2V0V3JpdGVyKCknLCAnd3MuZ2V0V3JpdGVyJyBpcyB1bmRlZmluZWQpCitGQUlMIG1ldGhvZHMg
c2hvdWxkIG5vdCBub3QgaGF2ZSAuYXBwbHkoKSBvciAuY2FsbCgpIGNhbGxlZCB3czEuZ2V0V3Jp
dGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dzMS5nZXRXcml0ZXIoKScsICd3czEuZ2V0V3Jp
dGVyJyBpcyB1bmRlZmluZWQpCitGQUlMIFdyaXRhYmxlU3RyZWFtJ3Mgc3RyYXRlZ3kuc2l6ZSBz
aG91bGQgbm90IGJlIGNhbGxlZCBhcyBhIG1ldGhvZCBoaWdoV2F0ZXJNYXJrIHZhbHVlIGlzIG5l
Z2F0aXZlIG9yIG5vdCBhIG51bWJlcgorRkFJTCByZWR1bmRhbnQgcmVsZWFzZUxvY2soKSBpcyBu
by1vcCB3cy5nZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3JpdGVyKCkn
LCAnd3MuZ2V0V3JpdGVyJyBpcyB1bmRlZmluZWQpCitGQUlMIHJlYWR5IHByb21pc2Ugc2hvdWxk
IGZpcmUgYmVmb3JlIGNsb3NlZCBvbiByZWxlYXNlTG9jayB3cy5nZXRXcml0ZXIgaXMgbm90IGEg
ZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3JpdGVyKCknLCAnd3MuZ2V0V3JpdGVyJyBpcyB1bmRlZmlu
ZWQpCitGQUlMIFN1YmNsYXNzaW5nIFdyaXRhYmxlU3RyZWFtIHNob3VsZCB3b3JrIGFzc2VydF90
cnVlOiBTdWJjbGFzcyBvYmplY3Qgc2hvdWxkIGJlIGFuIGluc3RhbmNlIG9mIFN1YmNsYXNzIGV4
cGVjdGVkIHRydWUgZ290IGZhbHNlCitGQUlMIHRoZSBsb2NrZWQgZ2V0dGVyIHNob3VsZCByZXR1
cm4gdHJ1ZSBpZiB0aGUgc3RyZWFtIGhhcyBhIHdyaXRlciBhc3NlcnRfZmFsc2U6IHN0cmVhbSBz
aG91bGQgbm90IGJlIGxvY2tlZCBleHBlY3RlZCBmYWxzZSBnb3QgdW5kZWZpbmVkCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy93cml0YWJsZS1zdHJlYW1zL2dlbmVyYWwuYW55Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9nZW5lcmFs
LmFueS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzODI5MTM1MjhlNjkzYjNhNWQ1NmM2NjBhNDUwNjA5ODBi
NTQ4YzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9nZW5lcmFsLmFueS5odG1sCkBA
IC0wLDAgKzEgQEAKKzwhLS0gVGhpcyBmaWxlIGlzIHJlcXVpcmVkIGZvciBXZWJLaXQgdGVzdCBp
bmZyYXN0cnVjdHVyZSB0byBydW4gdGhlIHRlbXBsYXRlZCB0ZXN0IC0tPgpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL2dlbmVyYWwuYW55LmpzIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRh
YmxlLXN0cmVhbXMvZ2VuZXJhbC5hbnkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmRkMTBiMjlhYTBlYmM1YmY3
MGY1NTJiNDlhZmM5Yzg5OWMyNTgyOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL2dl
bmVyYWwuYW55LmpzCkBAIC0wLDAgKzEsMjc3IEBACisvLyBNRVRBOiBnbG9iYWw9d2luZG93LHdv
cmtlcixqc3NoZWxsCisndXNlIHN0cmljdCc7CisKK3Rlc3QoKCkgPT4geworICBjb25zdCB3cyA9
IG5ldyBXcml0YWJsZVN0cmVhbSh7fSk7CisgIGNvbnN0IHdyaXRlciA9IHdzLmdldFdyaXRlcigp
OworICB3cml0ZXIucmVsZWFzZUxvY2soKTsKKworICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJv
ciwgKCkgPT4gd3JpdGVyLmRlc2lyZWRTaXplLCAnZGVzaXJlZFNpemUgc2hvdWxkIHRocm93IGEg
VHlwZUVycm9yJyk7Cit9LCAnZGVzaXJlZFNpemUgb24gYSByZWxlYXNlZCB3cml0ZXInKTsKKwor
dGVzdCgoKSA9PiB7CisgIGNvbnN0IHdzID0gbmV3IFdyaXRhYmxlU3RyZWFtKHt9KTsKKworICBj
b25zdCB3cml0ZXIgPSB3cy5nZXRXcml0ZXIoKTsKKworICBhc3NlcnRfZXF1YWxzKHdyaXRlci5k
ZXNpcmVkU2l6ZSwgMSwgJ2Rlc2lyZWRTaXplIHNob3VsZCBiZSAxJyk7Cit9LCAnZGVzaXJlZFNp
emUgaW5pdGlhbCB2YWx1ZScpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworICBjb25zdCB3cyA9
IG5ldyBXcml0YWJsZVN0cmVhbSh7fSk7CisKKyAgY29uc3Qgd3JpdGVyID0gd3MuZ2V0V3JpdGVy
KCk7CisKKyAgd3JpdGVyLmNsb3NlKCk7CisKKyAgcmV0dXJuIHdyaXRlci5jbG9zZWQudGhlbigo
KSA9PiB7CisgICAgYXNzZXJ0X2VxdWFscyh3cml0ZXIuZGVzaXJlZFNpemUsIDAsICdkZXNpcmVk
U2l6ZSBzaG91bGQgYmUgMCcpOworICB9KTsKK30sICdkZXNpcmVkU2l6ZSBvbiBhIHdyaXRlciBm
b3IgYSBjbG9zZWQgc3RyZWFtJyk7CisKK3Rlc3QoKCkgPT4geworICBjb25zdCB3cyA9IG5ldyBX
cml0YWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgYy5lcnJvcigpOworICAgIH0K
KyAgfSk7CisKKyAgY29uc3Qgd3JpdGVyID0gd3MuZ2V0V3JpdGVyKCk7CisgIGFzc2VydF9lcXVh
bHMod3JpdGVyLmRlc2lyZWRTaXplLCBudWxsLCAnZGVzaXJlZFNpemUgc2hvdWxkIGJlIG51bGwn
KTsKK30sICdkZXNpcmVkU2l6ZSBvbiBhIHdyaXRlciBmb3IgYW4gZXJyb3JlZCBzdHJlYW0nKTsK
KwordGVzdCgoKSA9PiB7CisgIGNvbnN0IHdzID0gbmV3IFdyaXRhYmxlU3RyZWFtKHt9KTsKKwor
ICBjb25zdCB3cml0ZXIgPSB3cy5nZXRXcml0ZXIoKTsKKyAgd3JpdGVyLmNsb3NlKCk7CisgIHdy
aXRlci5yZWxlYXNlTG9jaygpOworCisgIHdzLmdldFdyaXRlcigpOworfSwgJ3dzLmdldFdyaXRl
cigpIG9uIGEgY2xvc2luZyBXcml0YWJsZVN0cmVhbScpOworCitwcm9taXNlX3Rlc3QoKCkgPT4g
eworICBjb25zdCB3cyA9IG5ldyBXcml0YWJsZVN0cmVhbSh7fSk7CisKKyAgY29uc3Qgd3JpdGVy
ID0gd3MuZ2V0V3JpdGVyKCk7CisgIHJldHVybiB3cml0ZXIuY2xvc2UoKS50aGVuKCgpID0+IHsK
KyAgICB3cml0ZXIucmVsZWFzZUxvY2soKTsKKworICAgIHdzLmdldFdyaXRlcigpOworICB9KTsK
K30sICd3cy5nZXRXcml0ZXIoKSBvbiBhIGNsb3NlZCBXcml0YWJsZVN0cmVhbScpOworCit0ZXN0
KCgpID0+IHsKKyAgY29uc3Qgd3MgPSBuZXcgV3JpdGFibGVTdHJlYW0oe30pOworCisgIGNvbnN0
IHdyaXRlciA9IHdzLmdldFdyaXRlcigpOworICB3cml0ZXIuYWJvcnQoKTsKKyAgd3JpdGVyLnJl
bGVhc2VMb2NrKCk7CisKKyAgd3MuZ2V0V3JpdGVyKCk7Cit9LCAnd3MuZ2V0V3JpdGVyKCkgb24g
YW4gYWJvcnRlZCBXcml0YWJsZVN0cmVhbScpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworICBj
b25zdCB3cyA9IG5ldyBXcml0YWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgYy5l
cnJvcigpOworICAgIH0KKyAgfSk7CisKKyAgY29uc3Qgd3JpdGVyID0gd3MuZ2V0V3JpdGVyKCk7
CisgIHJldHVybiB3cml0ZXIuY2xvc2VkLnRoZW4oCisgICAgdiA9PiBhc3NlcnRfdW5yZWFjaGVk
KCd3cml0ZXIuY2xvc2VkIGZ1bGZpbGxlZCB1bmV4cGVjdGVkbHkgd2l0aDogJyArIHYpLAorICAg
ICgpID0+IHsKKyAgICAgIHdyaXRlci5yZWxlYXNlTG9jaygpOworCisgICAgICB3cy5nZXRXcml0
ZXIoKTsKKyAgICB9CisgICk7Cit9LCAnd3MuZ2V0V3JpdGVyKCkgb24gYW4gZXJyb3JlZCBXcml0
YWJsZVN0cmVhbScpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworICBjb25zdCB3cyA9IG5ldyBX
cml0YWJsZVN0cmVhbSh7fSk7CisKKyAgY29uc3Qgd3JpdGVyID0gd3MuZ2V0V3JpdGVyKCk7Cisg
IHdyaXRlci5yZWxlYXNlTG9jaygpOworCisgIHJldHVybiB3cml0ZXIuY2xvc2VkLnRoZW4oCisg
ICAgdiA9PiBhc3NlcnRfdW5yZWFjaGVkKCd3cml0ZXIuY2xvc2VkIGZ1bGZpbGxlZCB1bmV4cGVj
dGVkbHkgd2l0aDogJyArIHYpLAorICAgIGNsb3NlZFJlamVjdGlvbiA9PiB7CisgICAgICBhc3Nl
cnRfZXF1YWxzKGNsb3NlZFJlamVjdGlvbi5uYW1lLCAnVHlwZUVycm9yJywgJ2Nsb3NlZCBwcm9t
aXNlIHNob3VsZCByZWplY3Qgd2l0aCBhIFR5cGVFcnJvcicpOworICAgICAgcmV0dXJuIHdyaXRl
ci5yZWFkeS50aGVuKAorICAgICAgICB2ID0+IGFzc2VydF91bnJlYWNoZWQoJ3dyaXRlci5yZWFk
eSBmdWxmaWxsZWQgdW5leHBlY3RlZGx5IHdpdGg6ICcgKyB2KSwKKyAgICAgICAgcmVhZHlSZWpl
Y3Rpb24gPT4gYXNzZXJ0X2VxdWFscyhyZWFkeVJlamVjdGlvbiwgY2xvc2VkUmVqZWN0aW9uLAor
ICAgICAgICAgICdyZWFkeSBwcm9taXNlIHNob3VsZCByZWplY3Qgd2l0aCB0aGUgc2FtZSBlcnJv
cicpCisgICAgICApOworICAgIH0KKyAgKTsKK30sICdjbG9zZWQgYW5kIHJlYWR5IG9uIGEgcmVs
ZWFzZWQgd3JpdGVyJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgbGV0IHRoaXNPYmplY3Qg
PSBudWxsOworICAvLyBDYWxscyB0byBTaW5rIG1ldGhvZHMgYWZ0ZXIgdGhlIGZpcnN0IGFyZSBp
bXBsaWNpdGx5IGlnbm9yZWQuIE9ubHkgdGhlIGZpcnN0IHZhbHVlIHRoYXQgaXMgcGFzc2VkIHRv
IHRoZSByZXNvbHZlcgorICAvLyBpcyB1c2VkLgorICBjbGFzcyBTaW5rIHsKKyAgICBzdGFydCgp
IHsKKyAgICAgIC8vIENhbGxlZCB0d2ljZQorICAgICAgdC5zdGVwKCgpID0+IHsKKyAgICAgICAg
YXNzZXJ0X2VxdWFscyh0aGlzLCB0aGlzT2JqZWN0LCAnc3RhcnQgc2hvdWxkIGJlIGNhbGxlZCBh
cyBhIG1ldGhvZCcpOworICAgICAgfSk7CisgICAgfQorCisgICAgd3JpdGUoKSB7CisgICAgICB0
LnN0ZXAoKCkgPT4geworICAgICAgICBhc3NlcnRfZXF1YWxzKHRoaXMsIHRoaXNPYmplY3QsICd3
cml0ZSBzaG91bGQgYmUgY2FsbGVkIGFzIGEgbWV0aG9kJyk7CisgICAgICB9KTsKKyAgICB9CisK
KyAgICBjbG9zZSgpIHsKKyAgICAgIHQuc3RlcCgoKSA9PiB7CisgICAgICAgIGFzc2VydF9lcXVh
bHModGhpcywgdGhpc09iamVjdCwgJ2Nsb3NlIHNob3VsZCBiZSBjYWxsZWQgYXMgYSBtZXRob2Qn
KTsKKyAgICAgIH0pOworICAgIH0KKworICAgIGFib3J0KCkgeworICAgICAgdC5zdGVwKCgpID0+
IHsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyh0aGlzLCB0aGlzT2JqZWN0LCAnYWJvcnQgc2hvdWxk
IGJlIGNhbGxlZCBhcyBhIG1ldGhvZCcpOworICAgICAgfSk7CisgICAgfQorICB9CisKKyAgY29u
c3QgdGhlU2luayA9IG5ldyBTaW5rKCk7CisgIHRoaXNPYmplY3QgPSB0aGVTaW5rOworICBjb25z
dCB3cyA9IG5ldyBXcml0YWJsZVN0cmVhbSh0aGVTaW5rKTsKKworICBjb25zdCB3cml0ZXIgPSB3
cy5nZXRXcml0ZXIoKTsKKworICB3cml0ZXIud3JpdGUoJ2EnKTsKKyAgY29uc3QgY2xvc2VQcm9t
aXNlID0gd3JpdGVyLmNsb3NlKCk7CisKKyAgY29uc3Qgd3MyID0gbmV3IFdyaXRhYmxlU3RyZWFt
KHRoZVNpbmspOworICBjb25zdCB3cml0ZXIyID0gd3MyLmdldFdyaXRlcigpOworICBjb25zdCBh
Ym9ydFByb21pc2UgPSB3cml0ZXIyLmFib3J0KCk7CisKKyAgcmV0dXJuIFByb21pc2UuYWxsKFsK
KyAgICBjbG9zZVByb21pc2UsCisgICAgYWJvcnRQcm9taXNlCisgIF0pOworfSwgJ1dyaXRhYmxl
U3RyZWFtIHNob3VsZCBjYWxsIHVuZGVybHlpbmcgc2luayBtZXRob2RzIGFzIG1ldGhvZHMnKTsK
KworcHJvbWlzZV90ZXN0KHQgPT4geworICBmdW5jdGlvbiBmdW5jdGlvbldpdGhPdmVybG9hZHMo
KSB7fQorICBmdW5jdGlvbldpdGhPdmVybG9hZHMuYXBwbHkgPSB0LnVucmVhY2hlZF9mdW5jKCdh
cHBseSgpIHNob3VsZCBub3QgYmUgY2FsbGVkJyk7CisgIGZ1bmN0aW9uV2l0aE92ZXJsb2Fkcy5j
YWxsID0gdC51bnJlYWNoZWRfZnVuYygnY2FsbCgpIHNob3VsZCBub3QgYmUgY2FsbGVkJyk7Cisg
IGNvbnN0IHVuZGVybHlpbmdTaW5rID0geworICAgIHN0YXJ0OiBmdW5jdGlvbldpdGhPdmVybG9h
ZHMsCisgICAgd3JpdGU6IGZ1bmN0aW9uV2l0aE92ZXJsb2FkcywKKyAgICBjbG9zZTogZnVuY3Rp
b25XaXRoT3ZlcmxvYWRzLAorICAgIGFib3J0OiBmdW5jdGlvbldpdGhPdmVybG9hZHMKKyAgfTsK
KyAgLy8gVGVzdCBzdGFydCgpLCB3cml0ZSgpLCBjbG9zZSgpLgorICBjb25zdCB3czEgPSBuZXcg
V3JpdGFibGVTdHJlYW0odW5kZXJseWluZ1NpbmspOworICBjb25zdCB3cml0ZXIxID0gd3MxLmdl
dFdyaXRlcigpOworICB3cml0ZXIxLndyaXRlKCdhJyk7CisgIHdyaXRlcjEuY2xvc2UoKTsKKwor
ICAvLyBUZXN0IGFib3J0KCkuCisgIGNvbnN0IGFib3J0RXJyb3IgPSBuZXcgRXJyb3IoKTsKKyAg
YWJvcnRFcnJvci5uYW1lID0gJ2Fib3J0IGVycm9yJzsKKworICBjb25zdCB3czIgPSBuZXcgV3Jp
dGFibGVTdHJlYW0odW5kZXJseWluZ1NpbmspOworICBjb25zdCB3cml0ZXIyID0gd3MyLmdldFdy
aXRlcigpOworICB3cml0ZXIyLmFib3J0KGFib3J0RXJyb3IpOworCisgIC8vIFRlc3QgYWJvcnQo
KSB3aXRoIGEgY2xvc2UgdW5kZXJseWluZyBzaW5rIG1ldGhvZCBwcmVzZW50LiAoSGlzdG9yaWNh
bDsgc2VlCisgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS93aGF0d2cvc3RyZWFtcy9pc3N1ZXMvNjIw
I2lzc3VlY29tbWVudC0yNjM0ODM5NTMgZm9yIHdoYXQgdXNlZCB0byBiZQorICAvLyB0ZXN0ZWQg
aGVyZS4gQnV0IG1vcmUgY292ZXJhZ2UgY2FuJ3QgaHVydC4pCisgIGNvbnN0IHdzMyA9IG5ldyBX
cml0YWJsZVN0cmVhbSh7CisgICAgc3RhcnQ6IGZ1bmN0aW9uV2l0aE92ZXJsb2FkcywKKyAgICB3
cml0ZTogZnVuY3Rpb25XaXRoT3ZlcmxvYWRzLAorICAgIGNsb3NlOiBmdW5jdGlvbldpdGhPdmVy
bG9hZHMKKyAgfSk7CisgIGNvbnN0IHdyaXRlcjMgPSB3czMuZ2V0V3JpdGVyKCk7CisgIHdyaXRl
cjMuYWJvcnQoYWJvcnRFcnJvcik7CisKKyAgcmV0dXJuIHdyaXRlcjEuY2xvc2VkCisgICAgICAu
dGhlbigoKSA9PiBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBhYm9ydEVycm9yLCB3cml0ZXIy
LmNsb3NlZCwgJ3dyaXRlcjIuY2xvc2VkIHNob3VsZCBiZSByZWplY3RlZCcpKQorICAgICAgLnRo
ZW4oKCkgPT4gcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgYWJvcnRFcnJvciwgd3JpdGVyMy5j
bG9zZWQsICd3cml0ZXIzLmNsb3NlZCBzaG91bGQgYmUgcmVqZWN0ZWQnKSk7Cit9LCAnbWV0aG9k
cyBzaG91bGQgbm90IG5vdCBoYXZlIC5hcHBseSgpIG9yIC5jYWxsKCkgY2FsbGVkJyk7CisKK3By
b21pc2VfdGVzdCgoKSA9PiB7CisgIGNvbnN0IHN0cmF0ZWd5ID0geworICAgIHNpemUoKSB7Cisg
ICAgICBpZiAodGhpcyAhPT0gdW5kZWZpbmVkKSB7CisgICAgICAgIHRocm93IG5ldyBFcnJvcign
c2l6ZSBjYWxsZWQgYXMgYSBtZXRob2QnKTsKKyAgICAgIH0KKyAgICAgIHJldHVybiAxOworICAg
IH0KKyAgfTsKKworICBjb25zdCB3cyA9IG5ldyBXcml0YWJsZVN0cmVhbSh7fSwgc3RyYXRlZ3kp
OworICBjb25zdCB3cml0ZXIgPSB3cy5nZXRXcml0ZXIoKTsKKyAgcmV0dXJuIHdyaXRlci53cml0
ZSgnYScpOworfSwgJ1dyaXRhYmxlU3RyZWFtXCdzIHN0cmF0ZWd5LnNpemUgc2hvdWxkIG5vdCBi
ZSBjYWxsZWQgYXMgYSBtZXRob2QnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgY29uc3Qg
d3MgPSBuZXcgV3JpdGFibGVTdHJlYW0oKTsKKyAgY29uc3Qgd3JpdGVyMSA9IHdzLmdldFdyaXRl
cigpOworICBhc3NlcnRfZXF1YWxzKHVuZGVmaW5lZCwgd3JpdGVyMS5yZWxlYXNlTG9jaygpLCAn
cmVsZWFzZUxvY2soKSBzaG91bGQgcmV0dXJuIHVuZGVmaW5lZCcpOworICBjb25zdCB3cml0ZXIy
ID0gd3MuZ2V0V3JpdGVyKCk7CisgIGFzc2VydF9lcXVhbHModW5kZWZpbmVkLCB3cml0ZXIxLnJl
bGVhc2VMb2NrKCksICduby1vcCByZWxlYXNlTG9jaygpIHNob3VsZCByZXR1cm4gdW5kZWZpbmVk
Jyk7CisgIC8vIENhbGxpbmcgcmVsZWFzZUxvY2soKSBvbiB3cml0ZXIxIHNob3VsZCBub3QgaW50
ZXJmZXJlIHdpdGggd3JpdGVyMi4gSWYgaXQgZGlkLCB0aGVuIHRoZSByZWFkeSBwcm9taXNlIHdv
dWxkIGJlCisgIC8vIHJlamVjdGVkLgorICByZXR1cm4gd3JpdGVyMi5yZWFkeTsKK30sICdyZWR1
bmRhbnQgcmVsZWFzZUxvY2soKSBpcyBuby1vcCcpOworCitwcm9taXNlX3Rlc3QoKCkgPT4gewor
ICBjb25zdCBldmVudHMgPSBbXTsKKyAgY29uc3Qgd3MgPSBuZXcgV3JpdGFibGVTdHJlYW0oKTsK
KyAgY29uc3Qgd3JpdGVyID0gd3MuZ2V0V3JpdGVyKCk7CisgIHJldHVybiB3cml0ZXIucmVhZHku
dGhlbigoKSA9PiB7CisgICAgLy8gRm9yY2UgdGhlIHJlYWR5IHByb21pc2UgYmFjayB0byBhIHBl
bmRpbmcgc3RhdGUuCisgICAgY29uc3Qgd3JpdGVyUHJvbWlzZSA9IHdyaXRlci53cml0ZSgnZHVt
bXknKTsKKyAgICBjb25zdCByZWFkeVByb21pc2UgPSB3cml0ZXIucmVhZHkuY2F0Y2goKCkgPT4g
ZXZlbnRzLnB1c2goJ3JlYWR5JykpOworICAgIGNvbnN0IGNsb3NlZFByb21pc2UgPSB3cml0ZXIu
Y2xvc2VkLmNhdGNoKCgpID0+IGV2ZW50cy5wdXNoKCdjbG9zZWQnKSk7CisgICAgd3JpdGVyLnJl
bGVhc2VMb2NrKCk7CisgICAgcmV0dXJuIFByb21pc2UuYWxsKFtyZWFkeVByb21pc2UsIGNsb3Nl
ZFByb21pc2VdKS50aGVuKCgpID0+IHsKKyAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoZXZlbnRz
LCBbJ3JlYWR5JywgJ2Nsb3NlZCddLCAncmVhZHkgcHJvbWlzZSBzaG91bGQgZmlyZSBiZWZvcmUg
Y2xvc2VkIHByb21pc2UnKTsKKyAgICAgIC8vIFN0b3AgdGhlIHdyaXRlciBwcm9taXNlIGhhbmdp
bmcgYXJvdW5kIGFmdGVyIHRoZSB0ZXN0IGhhcyBmaW5pc2hlZC4KKyAgICAgIHJldHVybiBQcm9t
aXNlLmFsbChbCisgICAgICAgIHdyaXRlclByb21pc2UsCisgICAgICAgIHdzLmFib3J0KCkKKyAg
ICAgIF0pOworICAgIH0pOworICB9KTsKK30sICdyZWFkeSBwcm9taXNlIHNob3VsZCBmaXJlIGJl
Zm9yZSBjbG9zZWQgb24gcmVsZWFzZUxvY2snKTsKKwordGVzdCgoKSA9PiB7CisgIGNsYXNzIFN1
YmNsYXNzIGV4dGVuZHMgV3JpdGFibGVTdHJlYW0geworICAgIGV4dHJhRnVuY3Rpb24oKSB7Cisg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgIH0KKyAgYXNzZXJ0X2VxdWFscygKKyAgICAgIE9i
amVjdC5nZXRQcm90b3R5cGVPZihTdWJjbGFzcy5wcm90b3R5cGUpLCBXcml0YWJsZVN0cmVhbS5w
cm90b3R5cGUsCisgICAgICAnU3ViY2xhc3MucHJvdG90eXBlXCdzIHByb3RvdHlwZSBzaG91bGQg
YmUgV3JpdGFibGVTdHJlYW0ucHJvdG90eXBlJyk7CisgIGFzc2VydF9lcXVhbHMoT2JqZWN0Lmdl
dFByb3RvdHlwZU9mKFN1YmNsYXNzKSwgV3JpdGFibGVTdHJlYW0sCisgICAgICAgICAgICAgICAg
J1N1YmNsYXNzXCdzIHByb3RvdHlwZSBzaG91bGQgYmUgV3JpdGFibGVTdHJlYW0nKTsKKyAgY29u
c3Qgc3ViID0gbmV3IFN1YmNsYXNzKCk7CisgIGFzc2VydF90cnVlKHN1YiBpbnN0YW5jZW9mIFdy
aXRhYmxlU3RyZWFtLAorICAgICAgICAgICAgICAnU3ViY2xhc3Mgb2JqZWN0IHNob3VsZCBiZSBh
biBpbnN0YW5jZSBvZiBXcml0YWJsZVN0cmVhbScpOworICBhc3NlcnRfdHJ1ZShzdWIgaW5zdGFu
Y2VvZiBTdWJjbGFzcywKKyAgICAgICAgICAgICAgJ1N1YmNsYXNzIG9iamVjdCBzaG91bGQgYmUg
YW4gaW5zdGFuY2Ugb2YgU3ViY2xhc3MnKTsKKyAgY29uc3QgbG9ja2VkR2V0dGVyID0gT2JqZWN0
LmdldE93blByb3BlcnR5RGVzY3JpcHRvcigKKyAgICAgIFdyaXRhYmxlU3RyZWFtLnByb3RvdHlw
ZSwgJ2xvY2tlZCcpLmdldDsKKyAgYXNzZXJ0X2VxdWFscyhsb2NrZWRHZXR0ZXIuY2FsbChzdWIp
LCBzdWIubG9ja2VkLAorICAgICAgICAgICAgICAgICdTdWJjbGFzcyBvYmplY3Qgc2hvdWxkIHBh
c3MgYnJhbmQgY2hlY2snKTsKKyAgYXNzZXJ0X3RydWUoc3ViLmV4dHJhRnVuY3Rpb24oKSwKKyAg
ICAgICAgICAgICAgJ2V4dHJhRnVuY3Rpb24oKSBzaG91bGQgYmUgcHJlc2VudCBvbiBTdWJjbGFz
cyBvYmplY3QnKTsKK30sICdTdWJjbGFzc2luZyBXcml0YWJsZVN0cmVhbSBzaG91bGQgd29yaycp
OworCit0ZXN0KCgpID0+IHsKKyAgY29uc3Qgd3MgPSBuZXcgV3JpdGFibGVTdHJlYW0oKTsKKyAg
YXNzZXJ0X2ZhbHNlKHdzLmxvY2tlZCwgJ3N0cmVhbSBzaG91bGQgbm90IGJlIGxvY2tlZCcpOwor
ICB3cy5nZXRXcml0ZXIoKTsKKyAgYXNzZXJ0X3RydWUod3MubG9ja2VkLCAnc3RyZWFtIHNob3Vs
ZCBiZSBsb2NrZWQnKTsKK30sICd0aGUgbG9ja2VkIGdldHRlciBzaG91bGQgcmV0dXJuIHRydWUg
aWYgdGhlIHN0cmVhbSBoYXMgYSB3cml0ZXInKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL2dl
bmVyYWwuYW55Lndvcmtlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9nZW5lcmFsLmFueS53
b3JrZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZlYWI1YmNiZWYwMDRmMzA2M2NkMzAyYzky
YTlhNzIxZGVkZmJkNWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9nZW5lcmFsLmFu
eS53b3JrZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTggQEAKKworRkFJTCBkZXNpcmVkU2l6
ZSBvbiBhIHJlbGVhc2VkIHdyaXRlciBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVh
bQorRkFJTCBkZXNpcmVkU2l6ZSBpbml0aWFsIHZhbHVlIENhbid0IGZpbmQgdmFyaWFibGU6IFdy
aXRhYmxlU3RyZWFtCitGQUlMIGRlc2lyZWRTaXplIG9uIGEgd3JpdGVyIGZvciBhIGNsb3NlZCBz
dHJlYW0gQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgZGVzaXJlZFNp
emUgb24gYSB3cml0ZXIgZm9yIGFuIGVycm9yZWQgc3RyZWFtIENhbid0IGZpbmQgdmFyaWFibGU6
IFdyaXRhYmxlU3RyZWFtCitGQUlMIHdzLmdldFdyaXRlcigpIG9uIGEgY2xvc2luZyBXcml0YWJs
ZVN0cmVhbSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCB3cy5nZXRX
cml0ZXIoKSBvbiBhIGNsb3NlZCBXcml0YWJsZVN0cmVhbSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBX
cml0YWJsZVN0cmVhbQorRkFJTCB3cy5nZXRXcml0ZXIoKSBvbiBhbiBhYm9ydGVkIFdyaXRhYmxl
U3RyZWFtIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIHdzLmdldFdy
aXRlcigpIG9uIGFuIGVycm9yZWQgV3JpdGFibGVTdHJlYW0gQ2FuJ3QgZmluZCB2YXJpYWJsZTog
V3JpdGFibGVTdHJlYW0KK0ZBSUwgY2xvc2VkIGFuZCByZWFkeSBvbiBhIHJlbGVhc2VkIHdyaXRl
ciBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBXcml0YWJsZVN0cmVh
bSBzaG91bGQgY2FsbCB1bmRlcmx5aW5nIHNpbmsgbWV0aG9kcyBhcyBtZXRob2RzIENhbid0IGZp
bmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIG1ldGhvZHMgc2hvdWxkIG5vdCBub3Qg
aGF2ZSAuYXBwbHkoKSBvciAuY2FsbCgpIGNhbGxlZCBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0
YWJsZVN0cmVhbQorRkFJTCBXcml0YWJsZVN0cmVhbSdzIHN0cmF0ZWd5LnNpemUgc2hvdWxkIG5v
dCBiZSBjYWxsZWQgYXMgYSBtZXRob2QgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJl
YW0KK0ZBSUwgcmVkdW5kYW50IHJlbGVhc2VMb2NrKCkgaXMgbm8tb3AgQ2FuJ3QgZmluZCB2YXJp
YWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgcmVhZHkgcHJvbWlzZSBzaG91bGQgZmlyZSBiZWZv
cmUgY2xvc2VkIG9uIHJlbGVhc2VMb2NrIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3Ry
ZWFtCitGQUlMIFN1YmNsYXNzaW5nIFdyaXRhYmxlU3RyZWFtIHNob3VsZCB3b3JrIENhbid0IGZp
bmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIHRoZSBsb2NrZWQgZ2V0dGVyIHNob3Vs
ZCByZXR1cm4gdHJ1ZSBpZiB0aGUgc3RyZWFtIGhhcyBhIHdyaXRlciBDYW4ndCBmaW5kIHZhcmlh
YmxlOiBXcml0YWJsZVN0cmVhbQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9nZW5lcmFsLmFu
eS53b3JrZXIuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL2dlbmVyYWwuYW55Lndvcmtlci5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjIzODI5MTM1MjhlNjkzYjNhNWQ1NmM2NjBhNDUwNjA5ODBiNTQ4YzMKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9nZW5lcmFsLmFueS53b3JrZXIuaHRtbApAQCAtMCwwICsx
IEBACis8IS0tIFRoaXMgZmlsZSBpcyByZXF1aXJlZCBmb3IgV2ViS2l0IHRlc3QgaW5mcmFzdHJ1
Y3R1cmUgdG8gcnVuIHRoZSB0ZW1wbGF0ZWQgdGVzdCAtLT4KXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9wcm9wZXJ0aWVzLmFueS1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
d3JpdGFibGUtc3RyZWFtcy9wcm9wZXJ0aWVzLmFueS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NzI1NDQ4OWM4N2YyZGZhYmIyMmVjOGEwMWUyYWQ5ZWYwNTI0MjM3MgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93
cml0YWJsZS1zdHJlYW1zL3Byb3BlcnRpZXMuYW55LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEw
IEBACisKK0ZBSUwgc2luayBtZXRob2Qgc3RhcnQgc2hvdWxkIGJlIGNhbGxlZCB3aXRoIHRoZSBy
aWdodCBudW1iZXIgb2YgYXJndW1lbnRzIHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4g
KEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkKK0ZBSUwg
c2luayBtZXRob2Qgc3RhcnQgc2hvdWxkIGJlIGNhbGxlZCBldmVuIHdoZW4gaXQncyBsb2NhdGVk
IG9uIHRoZSBwcm90b3R5cGUgY2hhaW4gd3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAo
SW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicgaXMgdW5kZWZpbmVkKQorRkFJTCBz
aW5rIG1ldGhvZCB3cml0ZSBzaG91bGQgYmUgY2FsbGVkIHdpdGggdGhlIHJpZ2h0IG51bWJlciBv
ZiBhcmd1bWVudHMgd3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdy
aXRlcigpJywgJ3dzLmdldFdyaXRlcicgaXMgdW5kZWZpbmVkKQorRkFJTCBzaW5rIG1ldGhvZCB3
cml0ZSBzaG91bGQgYmUgY2FsbGVkIGV2ZW4gd2hlbiBpdCdzIGxvY2F0ZWQgb24gdGhlIHByb3Rv
dHlwZSBjaGFpbiB3cy5nZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3Jp
dGVyKCknLCAnd3MuZ2V0V3JpdGVyJyBpcyB1bmRlZmluZWQpCitGQUlMIHNpbmsgbWV0aG9kIGNs
b3NlIHNob3VsZCBiZSBjYWxsZWQgd2l0aCB0aGUgcmlnaHQgbnVtYmVyIG9mIGFyZ3VtZW50cyB3
cy5nZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3JpdGVyKCknLCAnd3Mu
Z2V0V3JpdGVyJyBpcyB1bmRlZmluZWQpCitGQUlMIHNpbmsgbWV0aG9kIGNsb3NlIHNob3VsZCBi
ZSBjYWxsZWQgZXZlbiB3aGVuIGl0J3MgbG9jYXRlZCBvbiB0aGUgcHJvdG90eXBlIGNoYWluIHdz
LmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5n
ZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkKK0ZBSUwgc2luayBtZXRob2QgYWJvcnQgc2hvdWxkIGJl
IGNhbGxlZCB3aXRoIHRoZSByaWdodCBudW1iZXIgb2YgYXJndW1lbnRzIHdzLmdldFdyaXRlciBp
cyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlz
IHVuZGVmaW5lZCkKK0ZBSUwgc2luayBtZXRob2QgYWJvcnQgc2hvdWxkIGJlIGNhbGxlZCBldmVu
IHdoZW4gaXQncyBsb2NhdGVkIG9uIHRoZSBwcm90b3R5cGUgY2hhaW4gd3MuZ2V0V3JpdGVyIGlz
IG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicgaXMg
dW5kZWZpbmVkKQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9wcm9wZXJ0aWVzLmFueS5odG1s
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dy
aXRhYmxlLXN0cmVhbXMvcHJvcGVydGllcy5hbnkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMzgyOTEzNTI4
ZTY5M2IzYTVkNTZjNjYwYTQ1MDYwOTgwYjU0OGMzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0
cmVhbXMvcHJvcGVydGllcy5hbnkuaHRtbApAQCAtMCwwICsxIEBACis8IS0tIFRoaXMgZmlsZSBp
cyByZXF1aXJlZCBmb3IgV2ViS2l0IHRlc3QgaW5mcmFzdHJ1Y3R1cmUgdG8gcnVuIHRoZSB0ZW1w
bGF0ZWQgdGVzdCAtLT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFi
bGUtc3RyZWFtcy9wcm9wZXJ0aWVzLmFueS5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL3Byb3BlcnRpZXMuYW55
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjBmN2Y4NzZkOGI2ZmM0Yjk3ZGM4MDEwY2U1N2RlYTQxZDFlNGI1OTMK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9wcm9wZXJ0aWVzLmFueS5qcwpAQCAtMCww
ICsxLDUzIEBACisvLyBNRVRBOiBnbG9iYWw9d2luZG93LHdvcmtlcixqc3NoZWxsCisndXNlIHN0
cmljdCc7CisKK2NvbnN0IHNpbmtNZXRob2RzID0geworICBzdGFydDogeworICAgIGxlbmd0aDog
MSwKKyAgICB0cmlnZ2VyOiAoKSA9PiBQcm9taXNlLnJlc29sdmUoKQorICB9LAorICB3cml0ZTog
eworICAgIGxlbmd0aDogMiwKKyAgICB0cmlnZ2VyOiB3cml0ZXIgPT4gd3JpdGVyLndyaXRlKCkK
KyAgfSwKKyAgY2xvc2U6IHsKKyAgICBsZW5ndGg6IDAsCisgICAgdHJpZ2dlcjogd3JpdGVyID0+
IHdyaXRlci5jbG9zZSgpCisgIH0sCisgIGFib3J0OiB7CisgICAgbGVuZ3RoOiAxLAorICAgIHRy
aWdnZXI6IHdyaXRlciA9PiB3cml0ZXIuYWJvcnQoKQorICB9Cit9OworCitmb3IgKGNvbnN0IG1l
dGhvZCBpbiBzaW5rTWV0aG9kcykgeworICBjb25zdCB7IGxlbmd0aCwgdHJpZ2dlciB9ID0gc2lu
a01ldGhvZHNbbWV0aG9kXTsKKworICAvLyBTb21lIHNlbWFudGljIHRlc3RzIG9mIGhvdyBzaW5r
IG1ldGhvZHMgYXJlIGNhbGxlZCBjYW4gYmUgZm91bmQgaW4gZ2VuZXJhbC5qcywgYXMgd2VsbCBh
cyBpbiB0aGUgdGVzdCBmaWxlcworICAvLyBzcGVjaWZpYyB0byBlYWNoIG1ldGhvZC4KKyAgcHJv
bWlzZV90ZXN0KCgpID0+IHsKKyAgICBsZXQgYXJnQ291bnQ7CisgICAgY29uc3Qgd3MgPSBuZXcg
V3JpdGFibGVTdHJlYW0oeworICAgICAgW21ldGhvZF0oLi4uYXJncykgeworICAgICAgICBhcmdD
b3VudCA9IGFyZ3MubGVuZ3RoOworICAgICAgfQorICAgIH0pOworICAgIHJldHVybiBQcm9taXNl
LnJlc29sdmUodHJpZ2dlcih3cy5nZXRXcml0ZXIoKSkpLnRoZW4oKCkgPT4geworICAgICAgYXNz
ZXJ0X2VxdWFscyhhcmdDb3VudCwgbGVuZ3RoLCBgJHttZXRob2R9IHNob3VsZCBiZSBjYWxsZWQg
d2l0aCAke2xlbmd0aH0gYXJndW1lbnRzYCk7CisgICAgfSk7CisgIH0sIGBzaW5rIG1ldGhvZCAk
e21ldGhvZH0gc2hvdWxkIGJlIGNhbGxlZCB3aXRoIHRoZSByaWdodCBudW1iZXIgb2YgYXJndW1l
bnRzYCk7CisKKyAgcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgICBsZXQgbWV0aG9kV2FzQ2FsbGVk
ID0gZmFsc2U7CisgICAgZnVuY3Rpb24gU2luaygpIHt9CisgICAgU2luay5wcm90b3R5cGUgPSB7
CisgICAgICBbbWV0aG9kXSgpIHsKKyAgICAgICAgbWV0aG9kV2FzQ2FsbGVkID0gdHJ1ZTsKKyAg
ICAgIH0KKyAgICB9OworICAgIGNvbnN0IHdzID0gbmV3IFdyaXRhYmxlU3RyZWFtKG5ldyBTaW5r
KCkpOworICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodHJpZ2dlcih3cy5nZXRXcml0ZXIoKSkp
LnRoZW4oKCkgPT4geworICAgICAgYXNzZXJ0X3RydWUobWV0aG9kV2FzQ2FsbGVkLCBgJHttZXRo
b2R9IHNob3VsZCBiZSBjYWxsZWRgKTsKKyAgICB9KTsKKyAgfSwgYHNpbmsgbWV0aG9kICR7bWV0
aG9kfSBzaG91bGQgYmUgY2FsbGVkIGV2ZW4gd2hlbiBpdCdzIGxvY2F0ZWQgb24gdGhlIHByb3Rv
dHlwZSBjaGFpbmApOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvcHJvcGVydGllcy5hbnku
d29ya2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL3Byb3BlcnRpZXMuYW55Lndvcmtlci1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzQ0M2E1OTkwNjkxMDQ5ODgwZmZjODI0YzZmZTI2NWIz
Y2JiMGQ3NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL3Byb3BlcnRpZXMuYW55Lndv
cmtlci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorCitGQUlMIHNpbmsgbWV0aG9kIHN0
YXJ0IHNob3VsZCBiZSBjYWxsZWQgd2l0aCB0aGUgcmlnaHQgbnVtYmVyIG9mIGFyZ3VtZW50cyBD
YW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBzaW5rIG1ldGhvZCBzdGFy
dCBzaG91bGQgYmUgY2FsbGVkIGV2ZW4gd2hlbiBpdCdzIGxvY2F0ZWQgb24gdGhlIHByb3RvdHlw
ZSBjaGFpbiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBzaW5rIG1l
dGhvZCB3cml0ZSBzaG91bGQgYmUgY2FsbGVkIHdpdGggdGhlIHJpZ2h0IG51bWJlciBvZiBhcmd1
bWVudHMgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgc2luayBtZXRo
b2Qgd3JpdGUgc2hvdWxkIGJlIGNhbGxlZCBldmVuIHdoZW4gaXQncyBsb2NhdGVkIG9uIHRoZSBw
cm90b3R5cGUgY2hhaW4gQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwg
c2luayBtZXRob2QgY2xvc2Ugc2hvdWxkIGJlIGNhbGxlZCB3aXRoIHRoZSByaWdodCBudW1iZXIg
b2YgYXJndW1lbnRzIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIHNp
bmsgbWV0aG9kIGNsb3NlIHNob3VsZCBiZSBjYWxsZWQgZXZlbiB3aGVuIGl0J3MgbG9jYXRlZCBv
biB0aGUgcHJvdG90eXBlIGNoYWluIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFt
CitGQUlMIHNpbmsgbWV0aG9kIGFib3J0IHNob3VsZCBiZSBjYWxsZWQgd2l0aCB0aGUgcmlnaHQg
bnVtYmVyIG9mIGFyZ3VtZW50cyBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQor
RkFJTCBzaW5rIG1ldGhvZCBhYm9ydCBzaG91bGQgYmUgY2FsbGVkIGV2ZW4gd2hlbiBpdCdzIGxv
Y2F0ZWQgb24gdGhlIHByb3RvdHlwZSBjaGFpbiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJs
ZVN0cmVhbQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9wcm9wZXJ0aWVzLmFueS53b3JrZXIu
aHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy93cml0YWJsZS1zdHJlYW1zL3Byb3BlcnRpZXMuYW55Lndvcmtlci5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjIzODI5MTM1MjhlNjkzYjNhNWQ1NmM2NjBhNDUwNjA5ODBiNTQ4YzMKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
d3JpdGFibGUtc3RyZWFtcy9wcm9wZXJ0aWVzLmFueS53b3JrZXIuaHRtbApAQCAtMCwwICsxIEBA
Cis8IS0tIFRoaXMgZmlsZSBpcyByZXF1aXJlZCBmb3IgV2ViS2l0IHRlc3QgaW5mcmFzdHJ1Y3R1
cmUgdG8gcnVuIHRoZSB0ZW1wbGF0ZWQgdGVzdCAtLT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9yZWVudHJhbnQtc3RyYXRlZ3kuYW55LWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy93cml0YWJsZS1zdHJlYW1zL3JlZW50cmFudC1zdHJhdGVneS5hbnktZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjczMWZhMmM5ZjY1MjA1NzQ2Yzc2NjY3Zjk4NDRkZjUwOTI0YjM5ZWQKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9yZWVudHJhbnQtc3RyYXRlZ3kuYW55LWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDkgQEAKKworRkFJTCB3cml0ZXMgc2hvdWxkIGJlIHdyaXR0ZW4g
aW4gdGhlIHN0YW5kYXJkIG9yZGVyIGhpZ2hXYXRlck1hcmsgdmFsdWUgaXMgbmVnYXRpdmUgb3Ig
bm90IGEgbnVtYmVyCitGQUlMIHdyaXRlci53cml0ZSgpIHByb21pc2VzIHNob3VsZCByZXNvbHZl
IGluIHRoZSBzdGFuZGFyZCBvcmRlciBoaWdoV2F0ZXJNYXJrIHZhbHVlIGlzIG5lZ2F0aXZlIG9y
IG5vdCBhIG51bWJlcgorRkFJTCBjb250cm9sbGVyLmVycm9yKCkgc2hvdWxkIHdvcmsgd2hlbiBj
YWxsZWQgZnJvbSB3aXRoaW4gc3RyYXRlZ3kuc2l6ZSgpIGhpZ2hXYXRlck1hcmsgdmFsdWUgaXMg
bmVnYXRpdmUgb3Igbm90IGEgbnVtYmVyCitGQUlMIGNsb3NlKCkgc2hvdWxkIHdvcmsgd2hlbiBj
YWxsZWQgZnJvbSB3aXRoaW4gc3RyYXRlZ3kuc2l6ZSgpIGhpZ2hXYXRlck1hcmsgdmFsdWUgaXMg
bmVnYXRpdmUgb3Igbm90IGEgbnVtYmVyCitGQUlMIGFib3J0KCkgc2hvdWxkIHdvcmsgd2hlbiBj
YWxsZWQgZnJvbSB3aXRoaW4gc3RyYXRlZ3kuc2l6ZSgpIGhpZ2hXYXRlck1hcmsgdmFsdWUgaXMg
bmVnYXRpdmUgb3Igbm90IGEgbnVtYmVyCitGQUlMIHJlbGVhc2VMb2NrKCkgc2hvdWxkIGFib3J0
IHRoZSB3cml0ZSgpIHdoZW4gY2FsbGVkIHdpdGhpbiBzdHJhdGVneS5zaXplKCkgaGlnaFdhdGVy
TWFyayB2YWx1ZSBpcyBuZWdhdGl2ZSBvciBub3QgYSBudW1iZXIKK0ZBSUwgb3JpZ2luYWwgcmVh
ZGVyIHNob3VsZCBlcnJvciB3aGVuIG5ldyByZWFkZXIgaXMgY3JlYXRlZCB3aXRoaW4gc3RyYXRl
Z3kuc2l6ZSgpIGhpZ2hXYXRlck1hcmsgdmFsdWUgaXMgbmVnYXRpdmUgb3Igbm90IGEgbnVtYmVy
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL3JlZW50cmFudC1zdHJhdGVneS5hbnkuaHRtbCBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0
YWJsZS1zdHJlYW1zL3JlZW50cmFudC1zdHJhdGVneS5hbnkuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMzgy
OTEzNTI4ZTY5M2IzYTVkNTZjNjYwYTQ1MDYwOTgwYjU0OGMzCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRh
YmxlLXN0cmVhbXMvcmVlbnRyYW50LXN0cmF0ZWd5LmFueS5odG1sCkBAIC0wLDAgKzEgQEAKKzwh
LS0gVGhpcyBmaWxlIGlzIHJlcXVpcmVkIGZvciBXZWJLaXQgdGVzdCBpbmZyYXN0cnVjdHVyZSB0
byBydW4gdGhlIHRlbXBsYXRlZCB0ZXN0IC0tPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL3JlZW50cmFudC1zdHJhdGVneS5hbnkuanMgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUt
c3RyZWFtcy9yZWVudHJhbnQtc3RyYXRlZ3kuYW55LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFmZGU0MTNiNDI1
MmQxNWEwZjY4M2JlZDY5NDFjMjM0ODE2MWY1ZjIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3Ry
ZWFtcy9yZWVudHJhbnQtc3RyYXRlZ3kuYW55LmpzCkBAIC0wLDAgKzEsMTc0IEBACisvLyBNRVRB
OiBnbG9iYWw9d2luZG93LHdvcmtlcixqc3NoZWxsCisvLyBNRVRBOiBzY3JpcHQ9Li4vcmVzb3Vy
Y2VzL3Rlc3QtdXRpbHMuanMKKy8vIE1FVEE6IHNjcmlwdD0uLi9yZXNvdXJjZXMvcmVjb3JkaW5n
LXN0cmVhbXMuanMKKyd1c2Ugc3RyaWN0JzsKKworLy8gVGhlc2UgdGVzdHMgZXhlcmNpc2UgdGhl
IHBhdGhvbG9naWNhbCBjYXNlIG9mIGNhbGxpbmcgV3JpdGFibGVTdHJlYW0qIG1ldGhvZHMgZnJv
bSB3aXRoaW4gdGhlIHN0cmF0ZWd5LnNpemUoKQorLy8gY2FsbGJhY2suIFRoaXMgaXMgbm90IHNv
bWV0aGluZyBhbnkgcmVhbCBjb2RlIHNob3VsZCBldmVyIGRvLiBGYWlsdXJlcyBoZXJlIGluZGlj
YXRlIHN1YnRsZSBkZXZpYXRpb25zIGZyb20gdGhlCisvLyBzdGFuZGFyZCB0aGF0IG1heSBhZmZl
Y3QgcmVhbCwgbm9uLXBhdGhvbG9naWNhbCBjb2RlLgorCitjb25zdCBlcnJvcjEgPSB7IG5hbWU6
ICdlcnJvcjEnIH07CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisgIGxldCB3cml0ZXI7CisgIGNv
bnN0IHN0cmF0ZWd5ID0geworICAgIHNpemUoY2h1bmspIHsKKyAgICAgIGlmIChjaHVuayA+IDAp
IHsKKyAgICAgICAgd3JpdGVyLndyaXRlKGNodW5rIC0gMSk7CisgICAgICB9CisgICAgICByZXR1
cm4gY2h1bms7CisgICAgfQorICB9OworCisgIGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVT
dHJlYW0oe30sIHN0cmF0ZWd5KTsKKyAgd3JpdGVyID0gd3MuZ2V0V3JpdGVyKCk7CisgIHJldHVy
biB3cml0ZXIud3JpdGUoMikKKyAgICAgIC50aGVuKCgpID0+IHsKKyAgICAgICAgYXNzZXJ0X2Fy
cmF5X2VxdWFscyh3cy5ldmVudHMsIFsnd3JpdGUnLCAwLCAnd3JpdGUnLCAxLCAnd3JpdGUnLCAy
XSwgJ3dyaXRlcyBzaG91bGQgYXBwZWFyIGluIG9yZGVyJyk7CisgICAgICB9KTsKK30sICd3cml0
ZXMgc2hvdWxkIGJlIHdyaXR0ZW4gaW4gdGhlIHN0YW5kYXJkIG9yZGVyJyk7CisKK3Byb21pc2Vf
dGVzdCgoKSA9PiB7CisgIGxldCB3cml0ZXI7CisgIGNvbnN0IGV2ZW50cyA9IFtdOworICBjb25z
dCBzdHJhdGVneSA9IHsKKyAgICBzaXplKGNodW5rKSB7CisgICAgICBldmVudHMucHVzaCgnc2l6
ZScsIGNodW5rKTsKKyAgICAgIGlmIChjaHVuayA+IDApIHsKKyAgICAgICAgd3JpdGVyLndyaXRl
KGNodW5rIC0gMSkKKyAgICAgICAgICAgIC50aGVuKCgpID0+IGV2ZW50cy5wdXNoKCd3cml0ZXIu
d3JpdGUgZG9uZScsIGNodW5rIC0gMSkpOworICAgICAgfQorICAgICAgcmV0dXJuIGNodW5rOwor
ICAgIH0KKyAgfTsKKyAgY29uc3Qgd3MgPSBuZXcgV3JpdGFibGVTdHJlYW0oeworICAgIHdyaXRl
KGNodW5rKSB7CisgICAgICBldmVudHMucHVzaCgnc2luay53cml0ZScsIGNodW5rKTsKKyAgICB9
CisgIH0sIHN0cmF0ZWd5KTsKKyAgd3JpdGVyID0gd3MuZ2V0V3JpdGVyKCk7CisgIHJldHVybiB3
cml0ZXIud3JpdGUoMikKKyAgICAgIC50aGVuKCgpID0+IGV2ZW50cy5wdXNoKCd3cml0ZXIud3Jp
dGUgZG9uZScsIDIpKQorICAgICAgLnRoZW4oKCkgPT4gZmx1c2hBc3luY0V2ZW50cygpKQorICAg
ICAgLnRoZW4oKCkgPT4geworICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGV2ZW50cywgWydz
aXplJywgMiwgJ3NpemUnLCAxLCAnc2l6ZScsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ3Npbmsud3JpdGUnLCAwLCAnc2luay53cml0ZScsIDEsICd3cml0ZXIud3Jp
dGUgZG9uZScsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Npbmsu
d3JpdGUnLCAyLCAnd3JpdGVyLndyaXRlIGRvbmUnLCAxLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICd3cml0ZXIud3JpdGUgZG9uZScsIDJdLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICdldmVudHMgc2hvdWxkIGhhcHBlbiBpbiBzdGFuZGFyZCBvcmRlcicpOwor
ICAgICAgfSk7Cit9LCAnd3JpdGVyLndyaXRlKCkgcHJvbWlzZXMgc2hvdWxkIHJlc29sdmUgaW4g
dGhlIHN0YW5kYXJkIG9yZGVyJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgbGV0IGNvbnRy
b2xsZXI7CisgIGNvbnN0IHN0cmF0ZWd5ID0geworICAgIHNpemUoKSB7CisgICAgICBjb250cm9s
bGVyLmVycm9yKGVycm9yMSk7CisgICAgICByZXR1cm4gMTsKKyAgICB9CisgIH07CisgIGNvbnN0
IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGNv
bnRyb2xsZXIgPSBjOworICAgIH0KKyAgfSwgc3RyYXRlZ3kpOworICBjb25zdCByZXNvbHZlZCA9
IFtdOworICBjb25zdCB3cml0ZXIgPSB3cy5nZXRXcml0ZXIoKTsKKyAgY29uc3QgcmVhZHlQcm9t
aXNlMSA9IHdyaXRlci5yZWFkeS50aGVuKCgpID0+IHJlc29sdmVkLnB1c2goJ3JlYWR5MScpKTsK
KyAgY29uc3Qgd3JpdGVQcm9taXNlID0gcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3Ix
LCB3cml0ZXIud3JpdGUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ3dyaXRlKCkgc2hvdWxkIHJlamVjdCB3aXRoIHRoZSBlcnJvcicpCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudGhlbigoKSA9PiBy
ZXNvbHZlZC5wdXNoKCd3cml0ZScpKTsKKyAgY29uc3QgcmVhZHlQcm9taXNlMiA9IHByb21pc2Vf
cmVqZWN0c19leGFjdGx5KHQsIGVycm9yMSwgd3JpdGVyLnJlYWR5LCAncmVhZHkgc2hvdWxkIHJl
amVjdCB3aXRoIGVycm9yMScpCisgICAgICAudGhlbigoKSA9PiByZXNvbHZlZC5wdXNoKCdyZWFk
eTInKSk7CisgIGNvbnN0IGNsb3NlZFByb21pc2UgPSBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0
LCBlcnJvcjEsIHdyaXRlci5jbG9zZWQsICdjbG9zZWQgc2hvdWxkIHJlamVjdCB3aXRoIGVycm9y
MScpCisgICAgICAudGhlbigoKSA9PiByZXNvbHZlZC5wdXNoKCdjbG9zZWQnKSk7CisgIHJldHVy
biBQcm9taXNlLmFsbChbcmVhZHlQcm9taXNlMSwgd3JpdGVQcm9taXNlLCByZWFkeVByb21pc2Uy
LCBjbG9zZWRQcm9taXNlXSkKKyAgICAgIC50aGVuKCgpID0+IHsKKyAgICAgICAgYXNzZXJ0X2Fy
cmF5X2VxdWFscyhyZXNvbHZlZCwgWydyZWFkeTEnLCAnd3JpdGUnLCAncmVhZHkyJywgJ2Nsb3Nl
ZCddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwcm9taXNlcyBzaG91bGQgcmVzb2x2
ZSBpbiBzdGFuZGFyZCBvcmRlcicpOworICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2
ZW50cywgW10sICd1bmRlcmx5aW5nIHNpbmsgd3JpdGUgc2hvdWxkIG5vdCBiZSBjYWxsZWQnKTsK
KyAgICAgIH0pOworfSwgJ2NvbnRyb2xsZXIuZXJyb3IoKSBzaG91bGQgd29yayB3aGVuIGNhbGxl
ZCBmcm9tIHdpdGhpbiBzdHJhdGVneS5zaXplKCknKTsKKworcHJvbWlzZV90ZXN0KHQgPT4gewor
ICBsZXQgd3JpdGVyOworICBjb25zdCBzdHJhdGVneSA9IHsKKyAgICBzaXplKCkgeworICAgICAg
d3JpdGVyLmNsb3NlKCk7CisgICAgICByZXR1cm4gMTsKKyAgICB9CisgIH07CisKKyAgY29uc3Qg
d3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSh7fSwgc3RyYXRlZ3kpOworICB3cml0ZXIgPSB3
cy5nZXRXcml0ZXIoKTsKKyAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19qcyh0LCBUeXBlRXJyb3Is
IHdyaXRlci53cml0ZSgnYScpLCAnd3JpdGUoKSBwcm9taXNlIHNob3VsZCByZWplY3QnKQorICAg
ICAgLnRoZW4oKCkgPT4geworICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywg
WydjbG9zZSddLCAnc2luay53cml0ZSgpIHNob3VsZCBub3QgYmUgY2FsbGVkJyk7CisgICAgICB9
KTsKK30sICdjbG9zZSgpIHNob3VsZCB3b3JrIHdoZW4gY2FsbGVkIGZyb20gd2l0aGluIHN0cmF0
ZWd5LnNpemUoKScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIGxldCB3cml0ZXI7CisgIGNv
bnN0IHN0cmF0ZWd5ID0geworICAgIHNpemUoKSB7CisgICAgICB3cml0ZXIuYWJvcnQoZXJyb3Ix
KTsKKyAgICAgIHJldHVybiAxOworICAgIH0KKyAgfTsKKworICBjb25zdCB3cyA9IHJlY29yZGlu
Z1dyaXRhYmxlU3RyZWFtKHt9LCBzdHJhdGVneSk7CisgIHdyaXRlciA9IHdzLmdldFdyaXRlcigp
OworICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCB3cml0ZXIud3Jp
dGUoJ2EnKSwgJ3dyaXRlKCkgcHJvbWlzZSBzaG91bGQgcmVqZWN0JykKKyAgICAgIC50aGVuKCgp
ID0+IHsKKyAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsnYWJvcnQnLCBl
cnJvcjFdLCAnc2luay53cml0ZSgpIHNob3VsZCBub3QgYmUgY2FsbGVkJyk7CisgICAgICB9KTsK
K30sICdhYm9ydCgpIHNob3VsZCB3b3JrIHdoZW4gY2FsbGVkIGZyb20gd2l0aGluIHN0cmF0ZWd5
LnNpemUoKScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIGxldCB3cml0ZXI7CisgIGNvbnN0
IHN0cmF0ZWd5ID0geworICAgIHNpemUoKSB7CisgICAgICB3cml0ZXIucmVsZWFzZUxvY2soKTsK
KyAgICAgIHJldHVybiAxOworICAgIH0KKyAgfTsKKworICBjb25zdCB3cyA9IHJlY29yZGluZ1dy
aXRhYmxlU3RyZWFtKHt9LCBzdHJhdGVneSk7CisgIHdyaXRlciA9IHdzLmdldFdyaXRlcigpOwor
ICBjb25zdCB3cml0ZVByb21pc2UgPSBwcm9taXNlX3JlamVjdHNfanModCwgVHlwZUVycm9yLCB3
cml0ZXIud3JpdGUoJ2EnKSwgJ3dyaXRlKCkgcHJvbWlzZSBzaG91bGQgcmVqZWN0Jyk7CisgIGNv
bnN0IHJlYWR5UHJvbWlzZSA9IHByb21pc2VfcmVqZWN0c19qcyh0LCBUeXBlRXJyb3IsIHdyaXRl
ci5yZWFkeSwgJ3JlYWR5IHByb21pc2Ugc2hvdWxkIHJlamVjdCcpOworICBjb25zdCBjbG9zZWRQ
cm9taXNlID0gcHJvbWlzZV9yZWplY3RzX2pzKHQsIFR5cGVFcnJvciwgd3JpdGVyLmNsb3NlZCwg
J2Nsb3NlZCBwcm9taXNlIHNob3VsZCByZWplY3QnKTsKKyAgcmV0dXJuIFByb21pc2UuYWxsKFt3
cml0ZVByb21pc2UsIHJlYWR5UHJvbWlzZSwgY2xvc2VkUHJvbWlzZV0pCisgICAgICAudGhlbigo
KSA9PiB7CisgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbXSwgJ3Npbmsu
d3JpdGUoKSBzaG91bGQgbm90IGJlIGNhbGxlZCcpOworICAgICAgfSk7Cit9LCAncmVsZWFzZUxv
Y2soKSBzaG91bGQgYWJvcnQgdGhlIHdyaXRlKCkgd2hlbiBjYWxsZWQgd2l0aGluIHN0cmF0ZWd5
LnNpemUoKScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIGxldCB3cml0ZXIxOworICBsZXQg
d3M7CisgIGxldCB3cml0ZVByb21pc2UyOworICBsZXQgY2xvc2VQcm9taXNlOworICBsZXQgY2xv
c2VkUHJvbWlzZTI7CisgIGNvbnN0IHN0cmF0ZWd5ID0geworICAgIHNpemUoY2h1bmspIHsKKyAg
ICAgIGlmIChjaHVuayA+IDApIHsKKyAgICAgICAgd3JpdGVyMS5yZWxlYXNlTG9jaygpOworICAg
ICAgICBjb25zdCB3cml0ZXIyID0gd3MuZ2V0V3JpdGVyKCk7CisgICAgICAgIHdyaXRlUHJvbWlz
ZTIgPSB3cml0ZXIyLndyaXRlKDApOworICAgICAgICBjbG9zZVByb21pc2UgPSB3cml0ZXIyLmNs
b3NlKCk7CisgICAgICAgIGNsb3NlZFByb21pc2UyID0gd3JpdGVyMi5jbG9zZWQ7CisgICAgICB9
CisgICAgICByZXR1cm4gMTsKKyAgICB9CisgIH07CisgIHdzID0gcmVjb3JkaW5nV3JpdGFibGVT
dHJlYW0oe30sIHN0cmF0ZWd5KTsKKyAgd3JpdGVyMSA9IHdzLmdldFdyaXRlcigpOworICBjb25z
dCB3cml0ZVByb21pc2UxID0gcHJvbWlzZV9yZWplY3RzX2pzKHQsIFR5cGVFcnJvciwgd3JpdGVy
MS53cml0ZSgxKSwgJ3dyaXRlKCkgcHJvbWlzZSBzaG91bGQgcmVqZWN0Jyk7CisgIGNvbnN0IHJl
YWR5UHJvbWlzZSA9IHByb21pc2VfcmVqZWN0c19qcyh0LCBUeXBlRXJyb3IsIHdyaXRlcjEucmVh
ZHksICdyZWFkeSBwcm9taXNlIHNob3VsZCByZWplY3QnKTsKKyAgY29uc3QgY2xvc2VkUHJvbWlz
ZTEgPSBwcm9taXNlX3JlamVjdHNfanModCwgVHlwZUVycm9yLCB3cml0ZXIxLmNsb3NlZCwgJ2Ns
b3NlZCBwcm9taXNlIHNob3VsZCByZWplY3QnKTsKKyAgcmV0dXJuIFByb21pc2UuYWxsKFt3cml0
ZVByb21pc2UxLCByZWFkeVByb21pc2UsIGNsb3NlZFByb21pc2UxLCB3cml0ZVByb21pc2UyLCBj
bG9zZVByb21pc2UsIGNsb3NlZFByb21pc2UyXSkKKyAgICAgIC50aGVuKCgpID0+IHsKKyAgICAg
ICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsnd3JpdGUnLCAwLCAnY2xvc2UnXSwg
J3Npbmsud3JpdGUoKSBzaG91bGQgb25seSBiZSBjYWxsZWQgb25jZScpOworICAgICAgfSk7Cit9
LCAnb3JpZ2luYWwgcmVhZGVyIHNob3VsZCBlcnJvciB3aGVuIG5ldyByZWFkZXIgaXMgY3JlYXRl
ZCB3aXRoaW4gc3RyYXRlZ3kuc2l6ZSgpJyk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9yZWVu
dHJhbnQtc3RyYXRlZ3kuYW55Lndvcmtlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9yZWVu
dHJhbnQtc3RyYXRlZ3kuYW55Lndvcmtlci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGJjMDk3
NGE2M2ViNTkzNTdlNWZhYTE1ZWM1NDc5NGJlZGQyNmEzNwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJs
ZS1zdHJlYW1zL3JlZW50cmFudC1zdHJhdGVneS5hbnkud29ya2VyLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDkgQEAKKworRkFJTCB3cml0ZXMgc2hvdWxkIGJlIHdyaXR0ZW4gaW4gdGhlIHN0YW5k
YXJkIG9yZGVyIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIHdyaXRl
ci53cml0ZSgpIHByb21pc2VzIHNob3VsZCByZXNvbHZlIGluIHRoZSBzdGFuZGFyZCBvcmRlciBD
YW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBjb250cm9sbGVyLmVycm9y
KCkgc2hvdWxkIHdvcmsgd2hlbiBjYWxsZWQgZnJvbSB3aXRoaW4gc3RyYXRlZ3kuc2l6ZSgpIENh
bid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIGNsb3NlKCkgc2hvdWxkIHdv
cmsgd2hlbiBjYWxsZWQgZnJvbSB3aXRoaW4gc3RyYXRlZ3kuc2l6ZSgpIENhbid0IGZpbmQgdmFy
aWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIGFib3J0KCkgc2hvdWxkIHdvcmsgd2hlbiBjYWxs
ZWQgZnJvbSB3aXRoaW4gc3RyYXRlZ3kuc2l6ZSgpIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRh
YmxlU3RyZWFtCitGQUlMIHJlbGVhc2VMb2NrKCkgc2hvdWxkIGFib3J0IHRoZSB3cml0ZSgpIHdo
ZW4gY2FsbGVkIHdpdGhpbiBzdHJhdGVneS5zaXplKCkgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3Jp
dGFibGVTdHJlYW0KK0ZBSUwgb3JpZ2luYWwgcmVhZGVyIHNob3VsZCBlcnJvciB3aGVuIG5ldyBy
ZWFkZXIgaXMgY3JlYXRlZCB3aXRoaW4gc3RyYXRlZ3kuc2l6ZSgpIENhbid0IGZpbmQgdmFyaWFi
bGU6IFdyaXRhYmxlU3RyZWFtCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL3JlZW50cmFudC1z
dHJhdGVneS5hbnkud29ya2VyLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9yZWVudHJhbnQtc3RyYXRlZ3ku
YW55Lndvcmtlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzODI5MTM1MjhlNjkzYjNhNWQ1NmM2NjBhNDUw
NjA5ODBiNTQ4YzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9yZWVudHJhbnQtc3Ry
YXRlZ3kuYW55Lndvcmtlci5odG1sCkBAIC0wLDAgKzEgQEAKKzwhLS0gVGhpcyBmaWxlIGlzIHJl
cXVpcmVkIGZvciBXZWJLaXQgdGVzdCBpbmZyYXN0cnVjdHVyZSB0byBydW4gdGhlIHRlbXBsYXRl
ZCB0ZXN0IC0tPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1z
dHJlYW1zL3N0YXJ0LmFueS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9zdGFydC5hbnktZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJkMTQxMmNiMjU4Yzc5NGE0MDVmYzJhNmRmMzFkNzM0NjRm
ODExZmMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9zdGFydC5hbnktZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMTUgQEAKK0NPTlNPTEUgTUVTU0FHRTogVW5oYW5kbGVkIFByb21pc2Ug
UmVqZWN0aW9uOiB1bmRlZmluZWQKK0NPTlNPTEUgTUVTU0FHRTogVW5oYW5kbGVkIFByb21pc2Ug
UmVqZWN0aW9uOiBbb2JqZWN0IE9iamVjdF0KK0NPTlNPTEUgTUVTU0FHRTogVW5oYW5kbGVkIFBy
b21pc2UgUmVqZWN0aW9uOiB1bmRlZmluZWQKKworSGFybmVzcyBFcnJvciAoRkFJTCksIG1lc3Nh
Z2UgPSBVbmhhbmRsZWQgcmVqZWN0aW9uCisKK0ZBSUwgdW5kZXJseWluZyBzaW5rJ3Mgd3JpdGUg
c2hvdWxkIG5vdCBiZSBjYWxsZWQgdW50aWwgc3RhcnQgZmluaXNoZXMgd3MuZ2V0V3JpdGVyIGlz
IG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicgaXMg
dW5kZWZpbmVkKQorRkFJTCB1bmRlcmx5aW5nIHNpbmsncyBjbG9zZSBzaG91bGQgbm90IGJlIGNh
bGxlZCB1bnRpbCBzdGFydCBmaW5pc2hlcyB3cy5nZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rpb24u
IChJbiAnd3MuZ2V0V3JpdGVyKCknLCAnd3MuZ2V0V3JpdGVyJyBpcyB1bmRlZmluZWQpCitQQVNT
IHVuZGVybHlpbmcgc2luaydzIHdyaXRlIG9yIGNsb3NlIHNob3VsZCBub3QgYmUgY2FsbGVkIGlm
IHN0YXJ0IHRocm93cyAKK1BBU1MgdW5kZXJseWluZyBzaW5rJ3Mgd3JpdGUgb3IgY2xvc2Ugc2hv
dWxkIG5vdCBiZSBpbnZva2VkIGlmIHRoZSBwcm9taXNlIHJldHVybmVkIGJ5IHN0YXJ0IGlzIHJl
amVjdGVkIAorRkFJTCByZXR1cm5pbmcgYSB0aGVuYWJsZSBmcm9tIHN0YXJ0KCkgc2hvdWxkIHdv
cmsgd3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywg
J3dzLmdldFdyaXRlcicgaXMgdW5kZWZpbmVkKQorRkFJTCBjb250cm9sbGVyLmVycm9yKCkgZHVy
aW5nIHN0YXJ0IHNob3VsZCBjYXVzZSB3cml0ZXMgdG8gZmFpbCBjb250cm9sbGVyLmVycm9yIGlz
IG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ2NvbnRyb2xsZXIuZXJyb3IoZXJyb3IxKScsICdjb250cm9s
bGVyLmVycm9yJyBpcyB1bmRlZmluZWQpCitGQUlMIGNvbnRyb2xsZXIuZXJyb3IoKSBkdXJpbmcg
YXN5bmMgc3RhcnQgc2hvdWxkIGNhdXNlIGV4aXN0aW5nIHdyaXRlcyB0byBmYWlsIHdzLmdldFdy
aXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0
ZXInIGlzIHVuZGVmaW5lZCkKK0ZBSUwgd2hlbiBzdGFydCgpIHJlamVjdHMsIHdyaXRlciBwcm9t
aXNlcyBzaG91bGQgcmVqZWN0IGluIHN0YW5kYXJkIG9yZGVyIHdzLmdldFdyaXRlciBpcyBub3Qg
YSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVm
aW5lZCkKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvc3RhcnQuYW55Lmh0bWwgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3Ry
ZWFtcy9zdGFydC5hbnkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMzgyOTEzNTI4ZTY5M2IzYTVkNTZjNjYw
YTQ1MDYwOTgwYjU0OGMzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvc3RhcnQuYW55
Lmh0bWwKQEAgLTAsMCArMSBAQAorPCEtLSBUaGlzIGZpbGUgaXMgcmVxdWlyZWQgZm9yIFdlYktp
dCB0ZXN0IGluZnJhc3RydWN0dXJlIHRvIHJ1biB0aGUgdGVtcGxhdGVkIHRlc3QgLS0+ClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvc3RhcnQuYW55
LmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
L3dyaXRhYmxlLXN0cmVhbXMvc3RhcnQuYW55LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAyYjVmMmEzODc2MjVh
MzY1NDg2MWNhZGQwZGFlM2NhZWYxMTdjYjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFt
cy9zdGFydC5hbnkuanMKQEAgLTAsMCArMSwxNjMgQEAKKy8vIE1FVEE6IGdsb2JhbD13aW5kb3cs
d29ya2VyLGpzc2hlbGwKKy8vIE1FVEE6IHNjcmlwdD0uLi9yZXNvdXJjZXMvdGVzdC11dGlscy5q
cworLy8gTUVUQTogc2NyaXB0PS4uL3Jlc291cmNlcy9yZWNvcmRpbmctc3RyZWFtcy5qcworJ3Vz
ZSBzdHJpY3QnOworCitjb25zdCBlcnJvcjEgPSB7IG5hbWU6ICdlcnJvcjEnIH07CisKK3Byb21p
c2VfdGVzdCgoKSA9PiB7CisgIGxldCByZXNvbHZlU3RhcnRQcm9taXNlOworICBjb25zdCB3cyA9
IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKHsKKyAgICBzdGFydCgpIHsKKyAgICAgIHJldHVybiBu
ZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKKyAgICAgICAgcmVzb2x2ZVN0YXJ0UHJvbWlzZSA9IHJl
c29sdmU7CisgICAgICB9KTsKKyAgICB9CisgIH0pOworCisgIGNvbnN0IHdyaXRlciA9IHdzLmdl
dFdyaXRlcigpOworCisgIGFzc2VydF9lcXVhbHMod3JpdGVyLmRlc2lyZWRTaXplLCAxLCAnZGVz
aXJlZFNpemUgc2hvdWxkIGJlIDEnKTsKKyAgd3JpdGVyLndyaXRlKCdhJyk7CisgIGFzc2VydF9l
cXVhbHMod3JpdGVyLmRlc2lyZWRTaXplLCAwLCAnZGVzaXJlZFNpemUgc2hvdWxkIGJlIDAgYWZ0
ZXIgd3JpdGVyLndyaXRlKCknKTsKKworICAvLyBXYWl0IGFuZCB2ZXJpZnkgdGhhdCB3cml0ZSBp
c24ndCBjYWxsZWQuCisgIHJldHVybiBmbHVzaEFzeW5jRXZlbnRzKCkKKyAgICAgIC50aGVuKCgp
ID0+IHsKKyAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFtdLCAnd3JpdGUg
c2hvdWxkIG5vdCBiZSBjYWxsZWQgdW50aWwgc3RhcnQgcHJvbWlzZSByZXNvbHZlcycpOworICAg
ICAgICByZXNvbHZlU3RhcnRQcm9taXNlKCk7CisgICAgICAgIHJldHVybiB3cml0ZXIucmVhZHk7
CisgICAgICB9KQorICAgICAgLnRoZW4oKCkgPT4gYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVu
dHMsIFsnd3JpdGUnLCAnYSddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnd3JpdGUgc2hvdWxkIG5vdCBiZSBjYWxsZWQgdW50aWwgc3RhcnQgcHJvbWlzZSByZXNvbHZl
cycpKTsKK30sICd1bmRlcmx5aW5nIHNpbmtcJ3Mgd3JpdGUgc2hvdWxkIG5vdCBiZSBjYWxsZWQg
dW50aWwgc3RhcnQgZmluaXNoZXMnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgbGV0IHJl
c29sdmVTdGFydFByb21pc2U7CisgIGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0o
eworICAgIHN0YXJ0KCkgeworICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4gewor
ICAgICAgICByZXNvbHZlU3RhcnRQcm9taXNlID0gcmVzb2x2ZTsKKyAgICAgIH0pOworICAgIH0K
KyAgfSk7CisKKyAgY29uc3Qgd3JpdGVyID0gd3MuZ2V0V3JpdGVyKCk7CisKKyAgd3JpdGVyLmNs
b3NlKCk7CisgIGFzc2VydF9lcXVhbHMod3JpdGVyLmRlc2lyZWRTaXplLCAxLCAnZGVzaXJlZFNp
emUgc2hvdWxkIGJlIDEnKTsKKworICAvLyBXYWl0IGFuZCB2ZXJpZnkgdGhhdCB3cml0ZSBpc24n
dCBjYWxsZWQuCisgIHJldHVybiBmbHVzaEFzeW5jRXZlbnRzKCkudGhlbigoKSA9PiB7CisgICAg
YXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFtdLCAnY2xvc2Ugc2hvdWxkIG5vdCBiZSBj
YWxsZWQgdW50aWwgc3RhcnQgcHJvbWlzZSByZXNvbHZlcycpOworICAgIHJlc29sdmVTdGFydFBy
b21pc2UoKTsKKyAgICByZXR1cm4gd3JpdGVyLmNsb3NlZDsKKyAgfSk7Cit9LCAndW5kZXJseWlu
ZyBzaW5rXCdzIGNsb3NlIHNob3VsZCBub3QgYmUgY2FsbGVkIHVudGlsIHN0YXJ0IGZpbmlzaGVz
Jyk7CisKK3Rlc3QoKCkgPT4geworICBjb25zdCBwYXNzZWRFcnJvciA9IG5ldyBFcnJvcignaG9y
cmlibGUgdGhpbmdzJyk7CisKKyAgbGV0IHdyaXRlQ2FsbGVkID0gZmFsc2U7CisgIGxldCBjbG9z
ZUNhbGxlZCA9IGZhbHNlOworICBhc3NlcnRfdGhyb3dzX2V4YWN0bHkocGFzc2VkRXJyb3IsICgp
ID0+IHsKKyAgICAvLyByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSBjYW5ub3QgYmUgdXNlZCBoZXJl
IGJlY2F1c2UgdGhlIGV4Y2VwdGlvbiBpbiB0aGUKKyAgICAvLyBjb25zdHJ1Y3RvciBwcmV2ZW50
cyBhc3NpZ25pbmcgdGhlIG9iamVjdCB0byBhIHZhcmlhYmxlLgorICAgIG5ldyBXcml0YWJsZVN0
cmVhbSh7CisgICAgICBzdGFydCgpIHsKKyAgICAgICAgdGhyb3cgcGFzc2VkRXJyb3I7CisgICAg
ICB9LAorICAgICAgd3JpdGUoKSB7CisgICAgICAgIHdyaXRlQ2FsbGVkID0gdHJ1ZTsKKyAgICAg
IH0sCisgICAgICBjbG9zZSgpIHsKKyAgICAgICAgY2xvc2VDYWxsZWQgPSB0cnVlOworICAgICAg
fQorICAgIH0pOworICB9LCAnY29uc3RydWN0b3Igc2hvdWxkIHRocm93IHBhc3NlZEVycm9yJyk7
CisgIGFzc2VydF9mYWxzZSh3cml0ZUNhbGxlZCwgJ3dyaXRlIHNob3VsZCBub3QgYmUgY2FsbGVk
Jyk7CisgIGFzc2VydF9mYWxzZShjbG9zZUNhbGxlZCwgJ2Nsb3NlIHNob3VsZCBub3QgYmUgY2Fs
bGVkJyk7Cit9LCAndW5kZXJseWluZyBzaW5rXCdzIHdyaXRlIG9yIGNsb3NlIHNob3VsZCBub3Qg
YmUgY2FsbGVkIGlmIHN0YXJ0IHRocm93cycpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworICBj
b25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKHsKKyAgICBzdGFydCgpIHsKKyAgICAg
IHJldHVybiBQcm9taXNlLnJlamVjdCgpOworICAgIH0KKyAgfSk7CisKKyAgLy8gV2FpdCBhbmQg
dmVyaWZ5IHRoYXQgd3JpdGUgb3IgY2xvc2UgYXJlbid0IGNhbGxlZC4KKyAgcmV0dXJuIGZsdXNo
QXN5bmNFdmVudHMoKQorICAgICAgLnRoZW4oKCkgPT4gYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5l
dmVudHMsIFtdLCAnd3JpdGUgYW5kIGNsb3NlIHNob3VsZCBub3QgYmUgY2FsbGVkJykpOworfSwg
J3VuZGVybHlpbmcgc2lua1wncyB3cml0ZSBvciBjbG9zZSBzaG91bGQgbm90IGJlIGludm9rZWQg
aWYgdGhlIHByb21pc2UgcmV0dXJuZWQgYnkgc3RhcnQgaXMgcmVqZWN0ZWQnKTsKKworcHJvbWlz
ZV90ZXN0KHQgPT4geworICBjb25zdCB3cyA9IG5ldyBXcml0YWJsZVN0cmVhbSh7CisgICAgc3Rh
cnQoKSB7CisgICAgICByZXR1cm4geworICAgICAgICB0aGVuKG9uRnVsZmlsbGVkLCBvblJlamVj
dGVkKSB7IG9uUmVqZWN0ZWQoZXJyb3IxKTsgfQorICAgICAgfTsKKyAgICB9CisgIH0pOworICBy
ZXR1cm4gcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCB3cy5nZXRXcml0ZXIoKS5j
bG9zZWQsICdjbG9zZWQgcHJvbWlzZSBzaG91bGQgYmUgcmVqZWN0ZWQnKTsKK30sICdyZXR1cm5p
bmcgYSB0aGVuYWJsZSBmcm9tIHN0YXJ0KCkgc2hvdWxkIHdvcmsnKTsKKworcHJvbWlzZV90ZXN0
KHQgPT4geworICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKHsKKyAgICBzdGFy
dChjb250cm9sbGVyKSB7CisgICAgICBjb250cm9sbGVyLmVycm9yKGVycm9yMSk7CisgICAgfQor
ICB9KTsKKyAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMSwgd3MuZ2V0
V3JpdGVyKCkud3JpdGUoJ2EnKSwgJ3dyaXRlKCkgc2hvdWxkIHJlamVjdCB3aXRoIHRoZSBlcnJv
cicpCisgICAgICAudGhlbigoKSA9PiB7CisgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3Mu
ZXZlbnRzLCBbXSwgJ3Npbmsgd3JpdGUoKSBzaG91bGQgbm90IGhhdmUgYmVlbiBjYWxsZWQnKTsK
KyAgICAgIH0pOworfSwgJ2NvbnRyb2xsZXIuZXJyb3IoKSBkdXJpbmcgc3RhcnQgc2hvdWxkIGNh
dXNlIHdyaXRlcyB0byBmYWlsJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgbGV0IGNvbnRy
b2xsZXI7CisgIGxldCByZXNvbHZlU3RhcnQ7CisgIGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFi
bGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGNvbnRyb2xsZXIgPSBjOworICAgICAg
cmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4geworICAgICAgICByZXNvbHZlU3RhcnQgPSBy
ZXNvbHZlOworICAgICAgfSk7CisgICAgfQorICB9KTsKKyAgY29uc3Qgd3JpdGVyID0gd3MuZ2V0
V3JpdGVyKCk7CisgIGNvbnN0IHdyaXRlUHJvbWlzZSA9IHdyaXRlci53cml0ZSgnYScpOworICBj
b25zdCBjbG9zZVByb21pc2UgPSB3cml0ZXIuY2xvc2UoKTsKKyAgY29udHJvbGxlci5lcnJvcihl
cnJvcjEpOworICByZXNvbHZlU3RhcnQoKTsKKyAgcmV0dXJuIFByb21pc2UuYWxsKFsKKyAgICBw
cm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIHdyaXRlUHJvbWlzZSwgJ3dyaXRlKCkg
c2hvdWxkIGZhaWwnKSwKKyAgICBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIGNs
b3NlUHJvbWlzZSwgJ2Nsb3NlKCkgc2hvdWxkIGZhaWwnKQorICBdKS50aGVuKCgpID0+IHsKKyAg
ICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgW10sICdzaW5rIHdyaXRlKCkgYW5kIGNs
b3NlKCkgc2hvdWxkIG5vdCBoYXZlIGJlZW4gY2FsbGVkJyk7CisgIH0pOworfSwgJ2NvbnRyb2xs
ZXIuZXJyb3IoKSBkdXJpbmcgYXN5bmMgc3RhcnQgc2hvdWxkIGNhdXNlIGV4aXN0aW5nIHdyaXRl
cyB0byBmYWlsJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgY29uc3QgZXZlbnRzID0gW107
CisgIGNvbnN0IHByb21pc2VzID0gW107CisgIGZ1bmN0aW9uIGNhdGNoQW5kUmVjb3JkKHByb21p
c2UsIG5hbWUpIHsKKyAgICBwcm9taXNlcy5wdXNoKHByb21pc2UudGhlbih0LnVucmVhY2hlZF9m
dW5jKGBwcm9taXNlICR7bmFtZX0gc2hvdWxkIG5vdCByZXNvbHZlYCksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKCkgPT4geworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZXZlbnRzLnB1c2gobmFtZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkp
OworICB9CisgIGNvbnN0IHdzID0gbmV3IFdyaXRhYmxlU3RyZWFtKHsKKyAgICBzdGFydCgpIHsK
KyAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCgpOworICAgIH0KKyAgfSwgeyBoaWdoV2F0ZXJN
YXJrOiAwIH0pOworICBjb25zdCB3cml0ZXIgPSB3cy5nZXRXcml0ZXIoKTsKKyAgY2F0Y2hBbmRS
ZWNvcmQod3JpdGVyLnJlYWR5LCAncmVhZHknKTsKKyAgY2F0Y2hBbmRSZWNvcmQod3JpdGVyLmNs
b3NlZCwgJ2Nsb3NlZCcpOworICBjYXRjaEFuZFJlY29yZCh3cml0ZXIud3JpdGUoKSwgJ3dyaXRl
Jyk7CisgIHJldHVybiBQcm9taXNlLmFsbChwcm9taXNlcykKKyAgICAgIC50aGVuKCgpID0+IHsK
KyAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhldmVudHMsIFsncmVhZHknLCAnd3JpdGUnLCAn
Y2xvc2VkJ10sICdwcm9taXNlcyBzaG91bGQgcmVqZWN0IGluIHN0YW5kYXJkIG9yZGVyJyk7Cisg
ICAgICB9KTsKK30sICd3aGVuIHN0YXJ0KCkgcmVqZWN0cywgd3JpdGVyIHByb21pc2VzIHNob3Vs
ZCByZWplY3QgaW4gc3RhbmRhcmQgb3JkZXInKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL3N0
YXJ0LmFueS53b3JrZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvc3RhcnQuYW55Lndvcmtl
ci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzJiODNmODEyYTZkNjE0OGQ4ODFlMTUyZTQyN2Fh
OTE2YTk0MmVlMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL3N0YXJ0LmFueS53b3Jr
ZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjQgQEAKKworRkFJTCB1bmRlcmx5aW5nIHNpbmsn
cyB3cml0ZSBzaG91bGQgbm90IGJlIGNhbGxlZCB1bnRpbCBzdGFydCBmaW5pc2hlcyBDYW4ndCBm
aW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCB1bmRlcmx5aW5nIHNpbmsncyBjbG9z
ZSBzaG91bGQgbm90IGJlIGNhbGxlZCB1bnRpbCBzdGFydCBmaW5pc2hlcyBDYW4ndCBmaW5kIHZh
cmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCB1bmRlcmx5aW5nIHNpbmsncyB3cml0ZSBvciBj
bG9zZSBzaG91bGQgbm90IGJlIGNhbGxlZCBpZiBzdGFydCB0aHJvd3MgYXNzZXJ0X3Rocm93c19l
eGFjdGx5OiBjb25zdHJ1Y3RvciBzaG91bGQgdGhyb3cgcGFzc2VkRXJyb3IgZnVuY3Rpb24gIigp
ID0+IHsKKyAgICAvLyByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSBjYW5ub3QgYmUgdXNlZCBoZXJl
IGJlY2F1c2UgdGhlIGV4Y2VwdGlvbiBpbiB0aGUKKyAgICAvLyBjb25zdHJ1Y3RvciBwcmV2ZW50
cyBhc3NpZ25pbmcgdGhlIG9iamVjdCB0byBhIHZhcmlhYmxlLgorICAgIG5ldyBXcml0YWJsZVN0
cmVhbSh7CisgICAgICBzdGFydCgpIHsKKyAgICAgICAgdGhyb3cgcGFzc2VkRXJyb3I7CisgICAg
ICB9LAorICAgICAgd3JpdGUoKSB7CisgICAgICAgIHdyaXRlQ2FsbGVkID0gdHJ1ZTsKKyAgICAg
IH0sCisgICAgICBjbG9zZSgpIHsKKyAgICAgICAgY2xvc2VDYWxsZWQgPSB0cnVlOworICAgICAg
fQorICAgIH0pOworICB9IiB0aHJldyBvYmplY3QgIlJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5k
IHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbSIgYnV0IHdlIGV4cGVjdGVkIGl0IHRvIHRocm93IG9i
amVjdCAiRXJyb3I6IGhvcnJpYmxlIHRoaW5ncyIKK0ZBSUwgdW5kZXJseWluZyBzaW5rJ3Mgd3Jp
dGUgb3IgY2xvc2Ugc2hvdWxkIG5vdCBiZSBpbnZva2VkIGlmIHRoZSBwcm9taXNlIHJldHVybmVk
IGJ5IHN0YXJ0IGlzIHJlamVjdGVkIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFt
CitGQUlMIHJldHVybmluZyBhIHRoZW5hYmxlIGZyb20gc3RhcnQoKSBzaG91bGQgd29yayBDYW4n
dCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBjb250cm9sbGVyLmVycm9yKCkg
ZHVyaW5nIHN0YXJ0IHNob3VsZCBjYXVzZSB3cml0ZXMgdG8gZmFpbCBDYW4ndCBmaW5kIHZhcmlh
YmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBjb250cm9sbGVyLmVycm9yKCkgZHVyaW5nIGFzeW5j
IHN0YXJ0IHNob3VsZCBjYXVzZSBleGlzdGluZyB3cml0ZXMgdG8gZmFpbCBDYW4ndCBmaW5kIHZh
cmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCB3aGVuIHN0YXJ0KCkgcmVqZWN0cywgd3JpdGVy
IHByb21pc2VzIHNob3VsZCByZWplY3QgaW4gc3RhbmRhcmQgb3JkZXIgQ2FuJ3QgZmluZCB2YXJp
YWJsZTogV3JpdGFibGVTdHJlYW0KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvc3RhcnQuYW55
Lndvcmtlci5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvc3RhcnQuYW55Lndvcmtlci5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjIzODI5MTM1MjhlNjkzYjNhNWQ1NmM2NjBhNDUwNjA5ODBiNTQ4YzMKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvd3JpdGFibGUtc3RyZWFtcy9zdGFydC5hbnkud29ya2VyLmh0bWwKQEAgLTAsMCArMSBAQAor
PCEtLSBUaGlzIGZpbGUgaXMgcmVxdWlyZWQgZm9yIFdlYktpdCB0ZXN0IGluZnJhc3RydWN0dXJl
IHRvIHJ1biB0aGUgdGVtcGxhdGVkIHRlc3QgLS0+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy93
M2MtaW1wb3J0LmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZTE4NTFjNmVjMzRmOWFhZGU1ZTMzMjIxYWJjMDk2
ZTMxOGUwZWQ0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvdzNjLWltcG9ydC5sb2cK
QEAgLTAsMCArMSwzMCBAQAorVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0
ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCitEbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRp
cmVjdGx5IGluIFdlYktpdC4KK0luc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUg
V1BUIGdpdGh1YjoKKwlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAor
CitUaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0
byByZWltcG9ydAorCitEbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCisKKy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgorTm9uZQor
UHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6CitOb25lCistLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KK0xpc3Qgb2YgZmlsZXM6CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvYWJvcnRpbmcuYW55LmpzCisv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRh
YmxlLXN0cmVhbXMvYmFkLXN0cmF0ZWdpZXMuYW55LmpzCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvYmFkLXVuZGVy
bHlpbmctc2lua3MuYW55LmpzCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvYnl0ZS1sZW5ndGgtcXVldWluZy1zdHJh
dGVneS5hbnkuanMKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9jbG9zZS5hbnkuanMKKy9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9jb25z
dHJ1Y3Rvci5hbnkuanMKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5LmFueS5q
cworL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93
cml0YWJsZS1zdHJlYW1zL2Vycm9yLmFueS5qcworL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL2Zsb2F0aW5nLXBvaW50
LXRvdGFsLXF1ZXVlLXNpemUuYW55LmpzCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvZ2VuZXJhbC5hbnkuanMKKy9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFi
bGUtc3RyZWFtcy9wcm9wZXJ0aWVzLmFueS5qcworL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL3JlZW50cmFudC1zdHJh
dGVneS5hbnkuanMKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9zdGFydC5hbnkuanMKKy9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy93cml0
ZS5hbnkuanMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL3dyaXRlLmFueS1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3Jp
dGFibGUtc3RyZWFtcy93cml0ZS5hbnktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVmNWUxMTRj
ZGEzOTliNWYyOWU3MjUxODg5NDU2N2ExMjkyNTI2NTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUt
c3RyZWFtcy93cml0ZS5hbnktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTUgQEAKKworRkFJTCBX
cml0YWJsZVN0cmVhbSBzaG91bGQgY29tcGxldGUgYXN5bmNocm9ub3VzIHdyaXRlcyBiZWZvcmUg
Y2xvc2UgcmVzb2x2ZXMgd3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdl
dFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicgaXMgdW5kZWZpbmVkKQorRkFJTCBXcml0YWJsZVN0
cmVhbSBzaG91bGQgY29tcGxldGUgc3luY2hyb25vdXMgd3JpdGVzIGJlZm9yZSBjbG9zZSByZXNv
bHZlcyB3cy5nZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3JpdGVyKCkn
LCAnd3MuZ2V0V3JpdGVyJyBpcyB1bmRlZmluZWQpCitGQUlMIGZ1bGZpbGxtZW50IHZhbHVlIG9m
IHdzLndyaXRlKCkgY2FsbCBzaG91bGQgYmUgdW5kZWZpbmVkIGV2ZW4gaWYgdGhlIHVuZGVybHlp
bmcgc2luayByZXR1cm5zIGEgbm9uLXVuZGVmaW5lZCB2YWx1ZSB3cy5nZXRXcml0ZXIgaXMgbm90
IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3JpdGVyKCknLCAnd3MuZ2V0V3JpdGVyJyBpcyB1bmRl
ZmluZWQpCitGQUlMIFdyaXRhYmxlU3RyZWFtIHNob3VsZCB0cmFuc2l0aW9uIHRvIHdhaXRpbmcg
dW50aWwgd3JpdGUgaXMgYWNrbm93bGVkZ2VkIHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlv
bi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkKK0ZB
SUwgd2hlbiB3cml0ZSByZXR1cm5zIGEgcmVqZWN0ZWQgcHJvbWlzZSwgcXVldWVkIHdyaXRlcyBh
bmQgY2xvc2Ugc2hvdWxkIGJlIGNsZWFyZWQgd3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9u
LiAoSW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicgaXMgdW5kZWZpbmVkKQorRkFJ
TCB3aGVuIHNpbmsncyB3cml0ZSB0aHJvd3MgYW4gZXJyb3IsIHRoZSBzdHJlYW0gc2hvdWxkIGJl
Y29tZSBlcnJvcmVkIGFuZCB0aGUgcHJvbWlzZSBzaG91bGQgcmVqZWN0IHdzLmdldFdyaXRlciBp
cyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlz
IHVuZGVmaW5lZCkKK0ZBSUwgd3JpdGVyLndyaXRlKCksIHJlYWR5IGFuZCBjbG9zZWQgcmVqZWN0
IHdpdGggdGhlIGVycm9yIHBhc3NlZCB0byBjb250cm9sbGVyLmVycm9yKCkgbWFkZSBiZWZvcmUg
c2luay53cml0ZSByZWplY3Rpb24gd3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4g
J3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicgaXMgdW5kZWZpbmVkKQorRkFJTCBhIGxh
cmdlIHF1ZXVlIG9mIHdyaXRlcyBzaG91bGQgYmUgcHJvY2Vzc2VkIGNvbXBsZXRlbHkgd3MuZ2V0
V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdy
aXRlcicgaXMgdW5kZWZpbmVkKQorRkFJTCBXcml0YWJsZVN0cmVhbURlZmF1bHRXcml0ZXIgc2hv
dWxkIHdvcmsgd2hlbiBtYW51YWxseSBjb25zdHJ1Y3RlZCBzdHJlYW0uZ2V0V3JpdGVyIGlzIG5v
dCBhIGZ1bmN0aW9uLiAoSW4gJ3N0cmVhbS5nZXRXcml0ZXIoKScsICdzdHJlYW0uZ2V0V3JpdGVy
JyBpcyB1bmRlZmluZWQpCitGQUlMIHJldHVybmluZyBhIHRoZW5hYmxlIGZyb20gd3JpdGUoKSBz
aG91bGQgd29yayB3cy5nZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3Jp
dGVyKCknLCAnd3MuZ2V0V3JpdGVyJyBpcyB1bmRlZmluZWQpCitGQUlMIGZhaWxpbmcgRGVmYXVs
dFdyaXRlciBjb25zdHJ1Y3RvciBzaG91bGQgbm90IHJlbGVhc2UgYW4gZXhpc3Rpbmcgd3JpdGVy
IHN0cmVhbS5nZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnc3RyZWFtLmdldFdyaXRl
cigpJywgJ3N0cmVhbS5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkKK0ZBSUwgd3JpdGUoKSBvbiBh
IHN0cmVhbSB3aXRoIEhXTSAwIHNob3VsZCBub3QgY2F1c2UgdGhlIHJlYWR5IFByb21pc2UgdG8g
cmVzb2x2ZSB3cy5nZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3JpdGVy
KCknLCAnd3MuZ2V0V3JpdGVyJyBpcyB1bmRlZmluZWQpCitGQUlMIHdyaXRpbmcgdG8gYSByZWxl
YXNlZCB3cml0ZXIgc2hvdWxkIHJlamVjdCB0aGUgcmV0dXJuZWQgcHJvbWlzZSB3cy5nZXRXcml0
ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3JpdGVyKCknLCAnd3MuZ2V0V3JpdGVy
JyBpcyB1bmRlZmluZWQpCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL3dyaXRlLmFueS5odG1s
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dy
aXRhYmxlLXN0cmVhbXMvd3JpdGUuYW55Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjM4MjkxMzUyOGU2OTNi
M2E1ZDU2YzY2MGE0NTA2MDk4MGI1NDhjMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1z
L3dyaXRlLmFueS5odG1sCkBAIC0wLDAgKzEgQEAKKzwhLS0gVGhpcyBmaWxlIGlzIHJlcXVpcmVk
IGZvciBXZWJLaXQgdGVzdCBpbmZyYXN0cnVjdHVyZSB0byBydW4gdGhlIHRlbXBsYXRlZCB0ZXN0
IC0tPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1z
L3dyaXRlLmFueS5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL3dyaXRlLmFueS5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lM2Rl
ZmE4MzQ4MjBkNDBkNzlhM2I3Mjg5NDA3NWY1YmI0ZWEwZGVhCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRh
YmxlLXN0cmVhbXMvd3JpdGUuYW55LmpzCkBAIC0wLDAgKzEsMjg0IEBACisvLyBNRVRBOiBnbG9i
YWw9d2luZG93LHdvcmtlcixqc3NoZWxsCisvLyBNRVRBOiBzY3JpcHQ9Li4vcmVzb3VyY2VzL3Rl
c3QtdXRpbHMuanMKKy8vIE1FVEE6IHNjcmlwdD0uLi9yZXNvdXJjZXMvcmVjb3JkaW5nLXN0cmVh
bXMuanMKKyd1c2Ugc3RyaWN0JzsKKworY29uc3QgZXJyb3IxID0gbmV3IEVycm9yKCdlcnJvcjEn
KTsKK2Vycm9yMS5uYW1lID0gJ2Vycm9yMSc7CisKK2NvbnN0IGVycm9yMiA9IG5ldyBFcnJvcign
ZXJyb3IyJyk7CitlcnJvcjIubmFtZSA9ICdlcnJvcjInOworCitmdW5jdGlvbiB3cml0ZUFycmF5
VG9TdHJlYW0oYXJyYXksIHdyaXRhYmxlU3RyZWFtV3JpdGVyKSB7CisgIGFycmF5LmZvckVhY2go
Y2h1bmsgPT4gd3JpdGFibGVTdHJlYW1Xcml0ZXIud3JpdGUoY2h1bmspKTsKKyAgcmV0dXJuIHdy
aXRhYmxlU3RyZWFtV3JpdGVyLmNsb3NlKCk7Cit9CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7Cisg
IGxldCBzdG9yYWdlOworICBjb25zdCB3cyA9IG5ldyBXcml0YWJsZVN0cmVhbSh7CisgICAgc3Rh
cnQoKSB7CisgICAgICBzdG9yYWdlID0gW107CisgICAgfSwKKworICAgIHdyaXRlKGNodW5rKSB7
CisgICAgICByZXR1cm4gZGVsYXkoMCkudGhlbigoKSA9PiBzdG9yYWdlLnB1c2goY2h1bmspKTsK
KyAgICB9LAorCisgICAgY2xvc2UoKSB7CisgICAgICByZXR1cm4gZGVsYXkoMCk7CisgICAgfQor
ICB9KTsKKworICBjb25zdCB3cml0ZXIgPSB3cy5nZXRXcml0ZXIoKTsKKworICBjb25zdCBpbnB1
dCA9IFsxLCAyLCAzLCA0LCA1XTsKKyAgcmV0dXJuIHdyaXRlQXJyYXlUb1N0cmVhbShpbnB1dCwg
d3JpdGVyKQorICAgICAgLnRoZW4oKCkgPT4gYXNzZXJ0X2FycmF5X2VxdWFscyhzdG9yYWdlLCBp
bnB1dCwgJ2NvcnJlY3QgZGF0YSBzaG91bGQgYmUgcmVsYXllZCB0byB1bmRlcmx5aW5nIHNpbmsn
KSk7Cit9LCAnV3JpdGFibGVTdHJlYW0gc2hvdWxkIGNvbXBsZXRlIGFzeW5jaHJvbm91cyB3cml0
ZXMgYmVmb3JlIGNsb3NlIHJlc29sdmVzJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisgIGNv
bnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0oKTsKKworICBjb25zdCB3cml0ZXIgPSB3
cy5nZXRXcml0ZXIoKTsKKworICBjb25zdCBpbnB1dCA9IFsxLCAyLCAzLCA0LCA1XTsKKyAgcmV0
dXJuIHdyaXRlQXJyYXlUb1N0cmVhbShpbnB1dCwgd3JpdGVyKQorICAgICAgLnRoZW4oKCkgPT4g
YXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsnd3JpdGUnLCAxLCAnd3JpdGUnLCAyLCAn
d3JpdGUnLCAzLCAnd3JpdGUnLCA0LCAnd3JpdGUnLCA1LCAnY2xvc2UnXSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvcnJlY3QgZGF0YSBzaG91bGQgYmUgcmVsYXll
ZCB0byB1bmRlcmx5aW5nIHNpbmsnKSk7Cit9LCAnV3JpdGFibGVTdHJlYW0gc2hvdWxkIGNvbXBs
ZXRlIHN5bmNocm9ub3VzIHdyaXRlcyBiZWZvcmUgY2xvc2UgcmVzb2x2ZXMnKTsKKworcHJvbWlz
ZV90ZXN0KCgpID0+IHsKKyAgY29uc3Qgd3MgPSBuZXcgV3JpdGFibGVTdHJlYW0oeworICAgIHdy
aXRlKCkgeworICAgICAgcmV0dXJuICdIZWxsbyc7CisgICAgfQorICB9KTsKKworICBjb25zdCB3
cml0ZXIgPSB3cy5nZXRXcml0ZXIoKTsKKworICBjb25zdCB3cml0ZVByb21pc2UgPSB3cml0ZXIu
d3JpdGUoJ2EnKTsKKyAgcmV0dXJuIHdyaXRlUHJvbWlzZQorICAgICAgLnRoZW4odmFsdWUgPT4g
YXNzZXJ0X2VxdWFscyh2YWx1ZSwgdW5kZWZpbmVkLCAnZnVsZmlsbG1lbnQgdmFsdWUgbXVzdCBi
ZSB1bmRlZmluZWQnKSk7Cit9LCAnZnVsZmlsbG1lbnQgdmFsdWUgb2Ygd3Mud3JpdGUoKSBjYWxs
IHNob3VsZCBiZSB1bmRlZmluZWQgZXZlbiBpZiB0aGUgdW5kZXJseWluZyBzaW5rIHJldHVybnMg
YSBub24tdW5kZWZpbmVkICcgKworICAgICd2YWx1ZScpOworCitwcm9taXNlX3Rlc3QoKCkgPT4g
eworICBsZXQgcmVzb2x2ZVNpbmtXcml0ZVByb21pc2U7CisgIGNvbnN0IHdzID0gbmV3IFdyaXRh
YmxlU3RyZWFtKHsKKyAgICB3cml0ZSgpIHsKKyAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNv
bHZlID0+IHsKKyAgICAgICAgcmVzb2x2ZVNpbmtXcml0ZVByb21pc2UgPSByZXNvbHZlOworICAg
ICAgfSk7CisgICAgfQorICB9KTsKKworICBjb25zdCB3cml0ZXIgPSB3cy5nZXRXcml0ZXIoKTsK
KworICBhc3NlcnRfZXF1YWxzKHdyaXRlci5kZXNpcmVkU2l6ZSwgMSwgJ2Rlc2lyZWRTaXplIHNo
b3VsZCBiZSAxJyk7CisKKyAgcmV0dXJuIHdyaXRlci5yZWFkeS50aGVuKCgpID0+IHsKKyAgICBj
b25zdCB3cml0ZVByb21pc2UgPSB3cml0ZXIud3JpdGUoJ2EnKTsKKyAgICBsZXQgd3JpdGVQcm9t
aXNlUmVzb2x2ZWQgPSBmYWxzZTsKKyAgICBhc3NlcnRfbm90X2VxdWFscyhyZXNvbHZlU2lua1dy
aXRlUHJvbWlzZSwgdW5kZWZpbmVkLCAncmVzb2x2ZVNpbmtXcml0ZVByb21pc2Ugc2hvdWxkIG5v
dCBiZSB1bmRlZmluZWQnKTsKKworICAgIGFzc2VydF9lcXVhbHMod3JpdGVyLmRlc2lyZWRTaXpl
LCAwLCAnZGVzaXJlZFNpemUgc2hvdWxkIGJlIDAgYWZ0ZXIgd3JpdGVyLndyaXRlKCknKTsKKwor
ICAgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAgICB3cml0ZVByb21pc2UudGhlbih2YWx1ZSA9
PiB7CisgICAgICAgIHdyaXRlUHJvbWlzZVJlc29sdmVkID0gdHJ1ZTsKKyAgICAgICAgYXNzZXJ0
X2VxdWFscyhyZXNvbHZlU2lua1dyaXRlUHJvbWlzZSwgdW5kZWZpbmVkLCAnc2lua1dyaXRlUHJv
bWlzZSBzaG91bGQgYmUgZnVsZmlsbGVkIGJlZm9yZSB3cml0ZVByb21pc2UnKTsKKworICAgICAg
ICBhc3NlcnRfZXF1YWxzKHZhbHVlLCB1bmRlZmluZWQsICd3cml0ZVByb21pc2Ugc2hvdWxkIGJl
IGZ1bGZpbGxlZCB3aXRoIHVuZGVmaW5lZCcpOworICAgICAgfSksCisgICAgICB3cml0ZXIucmVh
ZHkudGhlbih2YWx1ZSA9PiB7CisgICAgICAgIGFzc2VydF9lcXVhbHMocmVzb2x2ZVNpbmtXcml0
ZVByb21pc2UsIHVuZGVmaW5lZCwgJ3NpbmtXcml0ZVByb21pc2Ugc2hvdWxkIGJlIGZ1bGZpbGxl
ZCBiZWZvcmUgd3JpdGVyLnJlYWR5Jyk7CisgICAgICAgIGFzc2VydF90cnVlKHdyaXRlUHJvbWlz
ZVJlc29sdmVkLCAnd3JpdGVQcm9taXNlIHNob3VsZCBiZSBmdWxmaWxsZWQgYmVmb3JlIHdyaXRl
ci5yZWFkeScpOworCisgICAgICAgIGFzc2VydF9lcXVhbHMod3JpdGVyLmRlc2lyZWRTaXplLCAx
LCAnZGVzaXJlZFNpemUgc2hvdWxkIGJlIDEgYWdhaW4nKTsKKworICAgICAgICBhc3NlcnRfZXF1
YWxzKHZhbHVlLCB1bmRlZmluZWQsICd3cml0ZVByb21pc2Ugc2hvdWxkIGJlIGZ1bGZpbGxlZCB3
aXRoIHVuZGVmaW5lZCcpOworICAgICAgfSksCisgICAgICBmbHVzaEFzeW5jRXZlbnRzKCkudGhl
bigoKSA9PiB7CisgICAgICAgIHJlc29sdmVTaW5rV3JpdGVQcm9taXNlKCk7CisgICAgICAgIHJl
c29sdmVTaW5rV3JpdGVQcm9taXNlID0gdW5kZWZpbmVkOworICAgICAgfSkKKyAgICBdKTsKKyAg
fSk7Cit9LCAnV3JpdGFibGVTdHJlYW0gc2hvdWxkIHRyYW5zaXRpb24gdG8gd2FpdGluZyB1bnRp
bCB3cml0ZSBpcyBhY2tub3dsZWRnZWQnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBsZXQg
c2lua1dyaXRlUHJvbWlzZVJlamVjdG9ycyA9IFtdOworICBjb25zdCB3cyA9IG5ldyBXcml0YWJs
ZVN0cmVhbSh7CisgICAgd3JpdGUoKSB7CisgICAgICBjb25zdCBzaW5rV3JpdGVQcm9taXNlID0g
bmV3IFByb21pc2UoKHIsIHJlamVjdCkgPT4gc2lua1dyaXRlUHJvbWlzZVJlamVjdG9ycy5wdXNo
KHJlamVjdCkpOworICAgICAgcmV0dXJuIHNpbmtXcml0ZVByb21pc2U7CisgICAgfQorICB9KTsK
KworICBjb25zdCB3cml0ZXIgPSB3cy5nZXRXcml0ZXIoKTsKKworICBhc3NlcnRfZXF1YWxzKHdy
aXRlci5kZXNpcmVkU2l6ZSwgMSwgJ2Rlc2lyZWRTaXplIHNob3VsZCBiZSAxJyk7CisKKyAgcmV0
dXJuIHdyaXRlci5yZWFkeS50aGVuKCgpID0+IHsKKyAgICBjb25zdCB3cml0ZVByb21pc2UgPSB3
cml0ZXIud3JpdGUoJ2EnKTsKKyAgICBhc3NlcnRfZXF1YWxzKHNpbmtXcml0ZVByb21pc2VSZWpl
Y3RvcnMubGVuZ3RoLCAxLCAndGhlcmUgc2hvdWxkIGJlIDEgcmVqZWN0b3InKTsKKyAgICBhc3Nl
cnRfZXF1YWxzKHdyaXRlci5kZXNpcmVkU2l6ZSwgMCwgJ2Rlc2lyZWRTaXplIHNob3VsZCBiZSAw
Jyk7CisKKyAgICBjb25zdCB3cml0ZVByb21pc2UyID0gd3JpdGVyLndyaXRlKCdiJyk7CisgICAg
YXNzZXJ0X2VxdWFscyhzaW5rV3JpdGVQcm9taXNlUmVqZWN0b3JzLmxlbmd0aCwgMSwgJ3RoZXJl
IHNob3VsZCBiZSBzdGlsbCAxIHJlamVjdG9yJyk7CisgICAgYXNzZXJ0X2VxdWFscyh3cml0ZXIu
ZGVzaXJlZFNpemUsIC0xLCAnZGVzaXJlZFNpemUgc2hvdWxkIGJlIC0xJyk7CisKKyAgICBjb25z
dCBjbG9zZWRQcm9taXNlID0gd3JpdGVyLmNsb3NlKCk7CisKKyAgICBhc3NlcnRfZXF1YWxzKHdy
aXRlci5kZXNpcmVkU2l6ZSwgLTEsICdkZXNpcmVkU2l6ZSBzaG91bGQgc3RpbGwgYmUgLTEnKTsK
KworICAgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAgICBwcm9taXNlX3JlamVjdHNfZXhhY3Rs
eSh0LCBlcnJvcjEsIGNsb3NlZFByb21pc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnY2xvc2VkUHJvbWlzZSBzaG91bGQgcmVqZWN0IHdpdGggdGhlIGVycm9yIHJldHVybmVkIGZy
b20gdGhlIHNpbmtcJ3Mgd3JpdGUgbWV0aG9kJykKKyAgICAgICAgICAudGhlbigoKSA9PiBhc3Nl
cnRfZXF1YWxzKHNpbmtXcml0ZVByb21pc2VSZWplY3RvcnMubGVuZ3RoLCAwLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NpbmtXcml0ZVByb21pc2Ugc2hvdWxkIHJlamVj
dCBiZWZvcmUgY2xvc2VkUHJvbWlzZScpKSwKKyAgICAgIHByb21pc2VfcmVqZWN0c19leGFjdGx5
KHQsIGVycm9yMSwgd3JpdGVQcm9taXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
J3dyaXRlUHJvbWlzZSBzaG91bGQgcmVqZWN0IHdpdGggdGhlIGVycm9yIHJldHVybmVkIGZyb20g
dGhlIHNpbmtcJ3Mgd3JpdGUgbWV0aG9kJykKKyAgICAgICAgICAudGhlbigoKSA9PiBhc3NlcnRf
ZXF1YWxzKHNpbmtXcml0ZVByb21pc2VSZWplY3RvcnMubGVuZ3RoLCAwLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ3NpbmtXcml0ZVByb21pc2Ugc2hvdWxkIHJlamVjdCBi
ZWZvcmUgd3JpdGVQcm9taXNlJykpLAorICAgICAgcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwg
ZXJyb3IxLCB3cml0ZVByb21pc2UyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3dy
aXRlUHJvbWlzZTIgc2hvdWxkIHJlamVjdCB3aXRoIHRoZSBlcnJvciByZXR1cm5lZCBmcm9tIHRo
ZSBzaW5rXCdzIHdyaXRlIG1ldGhvZCcpCisgICAgICAgICAgLnRoZW4oKCkgPT4gYXNzZXJ0X2Vx
dWFscyhzaW5rV3JpdGVQcm9taXNlUmVqZWN0b3JzLmxlbmd0aCwgMCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICdzaW5rV3JpdGVQcm9taXNlIHNob3VsZCByZWplY3QgYmVm
b3JlIHdyaXRlUHJvbWlzZTInKSksCisgICAgICBmbHVzaEFzeW5jRXZlbnRzKCkudGhlbigoKSA9
PiB7CisgICAgICAgIHNpbmtXcml0ZVByb21pc2VSZWplY3RvcnNbMF0oZXJyb3IxKTsKKyAgICAg
ICAgc2lua1dyaXRlUHJvbWlzZVJlamVjdG9ycyA9IFtdOworICAgICAgfSkKKyAgICBdKTsKKyAg
fSk7Cit9LCAnd2hlbiB3cml0ZSByZXR1cm5zIGEgcmVqZWN0ZWQgcHJvbWlzZSwgcXVldWVkIHdy
aXRlcyBhbmQgY2xvc2Ugc2hvdWxkIGJlIGNsZWFyZWQnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4g
eworICBjb25zdCB3cyA9IG5ldyBXcml0YWJsZVN0cmVhbSh7CisgICAgd3JpdGUoKSB7CisgICAg
ICB0aHJvdyBlcnJvcjE7CisgICAgfQorICB9KTsKKworICBjb25zdCB3cml0ZXIgPSB3cy5nZXRX
cml0ZXIoKTsKKworICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCB3
cml0ZXIud3JpdGUoJ2EnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd3cml0
ZSgpIHNob3VsZCByZWplY3Qgd2l0aCB0aGUgZXJyb3IgcmV0dXJuZWQgZnJvbSB0aGUgc2lua1wn
cyB3cml0ZSBtZXRob2QnKQorICAgICAgLnRoZW4oKCkgPT4gcHJvbWlzZV9yZWplY3RzX2pzKHQs
IFR5cGVFcnJvciwgd3JpdGVyLmNsb3NlKCksICdjbG9zZSgpIHNob3VsZCBiZSByZWplY3RlZCcp
KTsKK30sICd3aGVuIHNpbmtcJ3Mgd3JpdGUgdGhyb3dzIGFuIGVycm9yLCB0aGUgc3RyZWFtIHNo
b3VsZCBiZWNvbWUgZXJyb3JlZCBhbmQgdGhlIHByb21pc2Ugc2hvdWxkIHJlamVjdCcpOworCitw
cm9taXNlX3Rlc3QodCA9PiB7CisgIGNvbnN0IHdzID0gbmV3IFdyaXRhYmxlU3RyZWFtKHsKKyAg
ICB3cml0ZShjaHVuaywgY29udHJvbGxlcikgeworICAgICAgY29udHJvbGxlci5lcnJvcihlcnJv
cjEpOworICAgICAgdGhyb3cgZXJyb3IyOworICAgIH0KKyAgfSk7CisKKyAgY29uc3Qgd3JpdGVy
ID0gd3MuZ2V0V3JpdGVyKCk7CisKKyAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQs
IGVycm9yMiwgd3JpdGVyLndyaXRlKCdhJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAnd3JpdGUoKSBzaG91bGQgcmVqZWN0IHdpdGggdGhlIGVycm9yIHJldHVybmVkIGZyb20g
dGhlIHNpbmtcJ3Mgd3JpdGUgbWV0aG9kICcpCisgIC50aGVuKCgpID0+IHsKKyAgICByZXR1cm4g
UHJvbWlzZS5hbGwoWworICAgICAgcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCB3
cml0ZXIucmVhZHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnd3JpdGVyLnJlYWR5
IG11c3QgcmVqZWN0IHdpdGggdGhlIGVycm9yIHBhc3NlZCB0byB0aGUgY29udHJvbGxlcicpLAor
ICAgICAgcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCB3cml0ZXIuY2xvc2VkLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3dyaXRlci5jbG9zZWQgbXVzdCByZWplY3Qg
d2l0aCB0aGUgZXJyb3IgcGFzc2VkIHRvIHRoZSBjb250cm9sbGVyJykKKyAgICBdKTsKKyAgfSk7
Cit9LCAnd3JpdGVyLndyaXRlKCksIHJlYWR5IGFuZCBjbG9zZWQgcmVqZWN0IHdpdGggdGhlIGVy
cm9yIHBhc3NlZCB0byBjb250cm9sbGVyLmVycm9yKCkgbWFkZSBiZWZvcmUgc2luay53cml0ZScg
KworICAgICcgcmVqZWN0aW9uJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisgIGNvbnN0IG51
bWJlck9mV3JpdGVzID0gMTAwMDsKKworICBsZXQgcmVzb2x2ZUZpcnN0V3JpdGVQcm9taXNlOwor
ICBsZXQgd3JpdGVDb3VudCA9IDA7CisgIGNvbnN0IHdzID0gbmV3IFdyaXRhYmxlU3RyZWFtKHsK
KyAgICB3cml0ZSgpIHsKKyAgICAgICsrd3JpdGVDb3VudDsKKyAgICAgIGlmICghcmVzb2x2ZUZp
cnN0V3JpdGVQcm9taXNlKSB7CisgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+
IHsKKyAgICAgICAgICByZXNvbHZlRmlyc3RXcml0ZVByb21pc2UgPSByZXNvbHZlOworICAgICAg
ICB9KTsKKyAgICAgIH0KKyAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTsKKyAgICB9Cisg
IH0pOworCisgIGNvbnN0IHdyaXRlciA9IHdzLmdldFdyaXRlcigpOworICByZXR1cm4gd3JpdGVy
LnJlYWR5LnRoZW4oKCkgPT4geworICAgIGZvciAobGV0IGkgPSAxOyBpIDwgbnVtYmVyT2ZXcml0
ZXM7ICsraSkgeworICAgICAgd3JpdGVyLndyaXRlKCdhJyk7CisgICAgfQorICAgIGNvbnN0IHdy
aXRlUHJvbWlzZSA9IHdyaXRlci53cml0ZSgnYScpOworCisgICAgYXNzZXJ0X2VxdWFscyh3cml0
ZUNvdW50LCAxLCAnc2hvdWxkIGhhdmUgY2FsbGVkIHNpbmtcJ3Mgd3JpdGUgb25jZScpOworCisg
ICAgcmVzb2x2ZUZpcnN0V3JpdGVQcm9taXNlKCk7CisKKyAgICByZXR1cm4gd3JpdGVQcm9taXNl
CisgICAgICAgIC50aGVuKCgpID0+CisgICAgICAgIGFzc2VydF9lcXVhbHMod3JpdGVDb3VudCwg
bnVtYmVyT2ZXcml0ZXMsIGBzaG91bGQgaGF2ZSBjYWxsZWQgc2luaydzIHdyaXRlICR7bnVtYmVy
T2ZXcml0ZXN9IHRpbWVzYCkpOworICB9KTsKK30sICdhIGxhcmdlIHF1ZXVlIG9mIHdyaXRlcyBz
aG91bGQgYmUgcHJvY2Vzc2VkIGNvbXBsZXRlbHknKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsK
KyAgY29uc3Qgc3RyZWFtID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0oKTsKKyAgY29uc3QgdyA9
IHN0cmVhbS5nZXRXcml0ZXIoKTsKKyAgY29uc3QgV3JpdGFibGVTdHJlYW1EZWZhdWx0V3JpdGVy
ID0gdy5jb25zdHJ1Y3RvcjsKKyAgdy5yZWxlYXNlTG9jaygpOworICBjb25zdCB3cml0ZXIgPSBu
ZXcgV3JpdGFibGVTdHJlYW1EZWZhdWx0V3JpdGVyKHN0cmVhbSk7CisgIHJldHVybiB3cml0ZXIu
cmVhZHkudGhlbigoKSA9PiB7CisgICAgd3JpdGVyLndyaXRlKCdhJyk7CisgICAgYXNzZXJ0X2Fy
cmF5X2VxdWFscyhzdHJlYW0uZXZlbnRzLCBbJ3dyaXRlJywgJ2EnXSwgJ3dyaXRlKCkgc2hvdWxk
IGJlIHBhc3NlZCB0byBzaW5rJyk7CisgIH0pOworfSwgJ1dyaXRhYmxlU3RyZWFtRGVmYXVsdFdy
aXRlciBzaG91bGQgd29yayB3aGVuIG1hbnVhbGx5IGNvbnN0cnVjdGVkJyk7CisKK3Byb21pc2Vf
dGVzdCgoKSA9PiB7CisgIGxldCB0aGVuQ2FsbGVkID0gZmFsc2U7CisgIGNvbnN0IHdzID0gbmV3
IFdyaXRhYmxlU3RyZWFtKHsKKyAgICB3cml0ZSgpIHsKKyAgICAgIHJldHVybiB7CisgICAgICAg
IHRoZW4ob25GdWxmaWxsZWQpIHsKKyAgICAgICAgICB0aGVuQ2FsbGVkID0gdHJ1ZTsKKyAgICAg
ICAgICBvbkZ1bGZpbGxlZCgpOworICAgICAgICB9CisgICAgICB9OworICAgIH0KKyAgfSk7Cisg
IHJldHVybiB3cy5nZXRXcml0ZXIoKS53cml0ZSgnYScpLnRoZW4oKCkgPT4gYXNzZXJ0X3RydWUo
dGhlbkNhbGxlZCwgJ3RoZW5DYWxsZWQgc2hvdWxkIGJlIHRydWUnKSk7Cit9LCAncmV0dXJuaW5n
IGEgdGhlbmFibGUgZnJvbSB3cml0ZSgpIHNob3VsZCB3b3JrJyk7CisKK3Byb21pc2VfdGVzdCgo
KSA9PiB7CisgIGNvbnN0IHN0cmVhbSA9IG5ldyBXcml0YWJsZVN0cmVhbSgpOworICBjb25zdCB3
cml0ZXIgPSBzdHJlYW0uZ2V0V3JpdGVyKCk7CisgIGNvbnN0IFdyaXRhYmxlU3RyZWFtRGVmYXVs
dFdyaXRlciA9IHdyaXRlci5jb25zdHJ1Y3RvcjsKKyAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJy
b3IsICgpID0+IG5ldyBXcml0YWJsZVN0cmVhbURlZmF1bHRXcml0ZXIoc3RyZWFtKSwKKyAgICAg
ICAgICAgICAgICAgICAnc2hvdWxkIG5vdCBiZSBhYmxlIHRvIGNvbnN0cnVjdCBvbiBsb2NrZWQg
c3RyZWFtJyk7CisgIC8vIElmIHN0cmVhbS5bW3dyaXRlcl1dIG5vIGxvbmdlciBwb2ludHMgdG8g
fHdyaXRlcnwgdGhlbiB0aGUgY2xvc2VkIFByb21pc2UKKyAgLy8gd29uJ3Qgd29yayBwcm9wZXJs
eS4KKyAgcmV0dXJuIFByb21pc2UuYWxsKFt3cml0ZXIuY2xvc2UoKSwgd3JpdGVyLmNsb3NlZF0p
OworfSwgJ2ZhaWxpbmcgRGVmYXVsdFdyaXRlciBjb25zdHJ1Y3RvciBzaG91bGQgbm90IHJlbGVh
c2UgYW4gZXhpc3Rpbmcgd3JpdGVyJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgY29uc3Qg
d3MgPSBuZXcgV3JpdGFibGVTdHJlYW0oeworICAgIHN0YXJ0KCkgeworICAgICAgcmV0dXJuIFBy
b21pc2UucmVqZWN0KGVycm9yMSk7CisgICAgfQorICB9LCB7IGhpZ2hXYXRlck1hcms6IDAgfSk7
CisgIGNvbnN0IHdyaXRlciA9IHdzLmdldFdyaXRlcigpOworICByZXR1cm4gUHJvbWlzZS5hbGwo
WworICAgIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMSwgd3JpdGVyLnJlYWR5LCAn
cmVhZHkgc2hvdWxkIGJlIHJlamVjdGVkJyksCisgICAgcHJvbWlzZV9yZWplY3RzX2V4YWN0bHko
dCwgZXJyb3IxLCB3cml0ZXIud3JpdGUoKSwgJ3dyaXRlKCkgc2hvdWxkIGJlIHJlamVjdGVkJykK
KyAgXSk7Cit9LCAnd3JpdGUoKSBvbiBhIHN0cmVhbSB3aXRoIEhXTSAwIHNob3VsZCBub3QgY2F1
c2UgdGhlIHJlYWR5IFByb21pc2UgdG8gcmVzb2x2ZScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7
CisgIGNvbnN0IHdzID0gbmV3IFdyaXRhYmxlU3RyZWFtKCk7CisgIGNvbnN0IHdyaXRlciA9IHdz
LmdldFdyaXRlcigpOworICB3cml0ZXIucmVsZWFzZUxvY2soKTsKKyAgcmV0dXJuIHByb21pc2Vf
cmVqZWN0c19qcyh0LCBUeXBlRXJyb3IsIHdyaXRlci53cml0ZSgpLCAnd3JpdGUgc2hvdWxkIHJl
amVjdCcpOworfSwgJ3dyaXRpbmcgdG8gYSByZWxlYXNlZCB3cml0ZXIgc2hvdWxkIHJlamVjdCB0
aGUgcmV0dXJuZWQgcHJvbWlzZScpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvd3JpdGUuYW55
Lndvcmtlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy93cml0ZS5hbnkud29ya2VyLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi45ZDMwMDcyNDFlYzMyMWVmYTQ4MGY3YmQ2ZWFjYjVjNTcwYTA4
MDJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvd3JpdGUuYW55Lndvcmtlci1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwxNSBAQAorCitGQUlMIFdyaXRhYmxlU3RyZWFtIHNob3VsZCBj
b21wbGV0ZSBhc3luY2hyb25vdXMgd3JpdGVzIGJlZm9yZSBjbG9zZSByZXNvbHZlcyBDYW4ndCBm
aW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBXcml0YWJsZVN0cmVhbSBzaG91bGQg
Y29tcGxldGUgc3luY2hyb25vdXMgd3JpdGVzIGJlZm9yZSBjbG9zZSByZXNvbHZlcyBDYW4ndCBm
aW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBmdWxmaWxsbWVudCB2YWx1ZSBvZiB3
cy53cml0ZSgpIGNhbGwgc2hvdWxkIGJlIHVuZGVmaW5lZCBldmVuIGlmIHRoZSB1bmRlcmx5aW5n
IHNpbmsgcmV0dXJucyBhIG5vbi11bmRlZmluZWQgdmFsdWUgQ2FuJ3QgZmluZCB2YXJpYWJsZTog
V3JpdGFibGVTdHJlYW0KK0ZBSUwgV3JpdGFibGVTdHJlYW0gc2hvdWxkIHRyYW5zaXRpb24gdG8g
d2FpdGluZyB1bnRpbCB3cml0ZSBpcyBhY2tub3dsZWRnZWQgQ2FuJ3QgZmluZCB2YXJpYWJsZTog
V3JpdGFibGVTdHJlYW0KK0ZBSUwgd2hlbiB3cml0ZSByZXR1cm5zIGEgcmVqZWN0ZWQgcHJvbWlz
ZSwgcXVldWVkIHdyaXRlcyBhbmQgY2xvc2Ugc2hvdWxkIGJlIGNsZWFyZWQgQ2FuJ3QgZmluZCB2
YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgd2hlbiBzaW5rJ3Mgd3JpdGUgdGhyb3dzIGFu
IGVycm9yLCB0aGUgc3RyZWFtIHNob3VsZCBiZWNvbWUgZXJyb3JlZCBhbmQgdGhlIHByb21pc2Ug
c2hvdWxkIHJlamVjdCBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCB3
cml0ZXIud3JpdGUoKSwgcmVhZHkgYW5kIGNsb3NlZCByZWplY3Qgd2l0aCB0aGUgZXJyb3IgcGFz
c2VkIHRvIGNvbnRyb2xsZXIuZXJyb3IoKSBtYWRlIGJlZm9yZSBzaW5rLndyaXRlIHJlamVjdGlv
biBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBhIGxhcmdlIHF1ZXVl
IG9mIHdyaXRlcyBzaG91bGQgYmUgcHJvY2Vzc2VkIGNvbXBsZXRlbHkgQ2FuJ3QgZmluZCB2YXJp
YWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgV3JpdGFibGVTdHJlYW1EZWZhdWx0V3JpdGVyIHNo
b3VsZCB3b3JrIHdoZW4gbWFudWFsbHkgY29uc3RydWN0ZWQgQ2FuJ3QgZmluZCB2YXJpYWJsZTog
V3JpdGFibGVTdHJlYW0KK0ZBSUwgcmV0dXJuaW5nIGEgdGhlbmFibGUgZnJvbSB3cml0ZSgpIHNo
b3VsZCB3b3JrIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIGZhaWxp
bmcgRGVmYXVsdFdyaXRlciBjb25zdHJ1Y3RvciBzaG91bGQgbm90IHJlbGVhc2UgYW4gZXhpc3Rp
bmcgd3JpdGVyIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIHdyaXRl
KCkgb24gYSBzdHJlYW0gd2l0aCBIV00gMCBzaG91bGQgbm90IGNhdXNlIHRoZSByZWFkeSBQcm9t
aXNlIHRvIHJlc29sdmUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwg
d3JpdGluZyB0byBhIHJlbGVhc2VkIHdyaXRlciBzaG91bGQgcmVqZWN0IHRoZSByZXR1cm5lZCBw
cm9taXNlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0
YWJsZS1zdHJlYW1zL3dyaXRlLmFueS53b3JrZXIuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL3dyaXRlLmFu
eS53b3JrZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMzgyOTEzNTI4ZTY5M2IzYTVkNTZjNjYwYTQ1MDYw
OTgwYjU0OGMzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvd3JpdGUuYW55Lndvcmtl
ci5odG1sCkBAIC0wLDAgKzEgQEAKKzwhLS0gVGhpcyBmaWxlIGlzIHJlcXVpcmVkIGZvciBXZWJL
aXQgdGVzdCBpbmZyYXN0cnVjdHVyZSB0byBydW4gdGhlIHRlbXBsYXRlZCB0ZXN0IC0tPgpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2d0ay9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBl
Y3RhdGlvbnMKaW5kZXggZWEyYTNlMjE5NmFhYzA3Mjk2YmRiMWZiZDZhODlmNGY1MTgzNmYwMS4u
ZTIxNzVkMDAyY2FmODA1OGRkYWI2ZTJjZGZlN2U5MjcwM2E3MTM3ZiAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTE2MDgsNyArMTYwOCw2IEBAIHdlYmtp
dC5vcmcvYi8xODY2MzggZWRpdGluZy9leGVjQ29tbWFuZC9wcmludC5odG1sIFsgQ3Jhc2ggXQog
d2Via2l0Lm9yZy9iLzE4NjYzOCBlZGl0aW5nL3NlbGVjdGlvbi9zZWxlY3QtYmlkaS1ydW4uaHRt
bCBbIFRpbWVvdXQgUGFzcyBdCiB3ZWJraXQub3JnL2IvMTg2NjM4IGZhc3QvbWVkaWEvcHJpbnQt
cmVzdG9yZXMtcHJldmlvdXMtbWVkaWF0eXBlLmh0bWwgWyBDcmFzaCBdCiB3ZWJraXQub3JnL2Iv
MTg2NjM4IGZhc3Qvc2VsZWN0b3JzL3VucXVhbGlmaWVkLWhvdmVyLXN0cmljdC5odG1sIFsgRmFp
bHVyZSBdCi13ZWJraXQub3JnL2IvMTg2NjM4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy9waXBpbmcvZXJyb3ItcHJvcGFnYXRpb24tZm9yd2FyZC5odG1sIFsgRmFpbHVy
ZSBdCiB3ZWJraXQub3JnL2IvMTg2NjM4IG1lZGlhL3ZpZGVvLXJlbW90ZS1jb250cm9sLXBsYXlw
YXVzZS5odG1sIFsgRmFpbHVyZSBUaW1lb3V0IFBhc3MgXQogd2Via2l0Lm9yZy9iLzE4NjYzOCBw
cmludGluZy9wcmludC1jbG9zZS1jcmFzaC5odG1sIFsgQ3Jhc2ggXQogd2Via2l0Lm9yZy9iLzE3
Nzk0MCB3ZWJraXQub3JnL2IvMTg2NjM4IHdvcmtlcnMvd2FzbS1oYXNoc2V0LW1hbnkuaHRtbCBb
IENyYXNoIFRpbWVvdXQgUGFzcyBdCkBAIC0zMzA3LDcgKzMzMDYsNiBAQCB3ZWJraXQub3JnL2Iv
MTg0NTA0IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL3JlcXVlc3Qv
cmVxdWVzdC1rZQogd2Via2l0Lm9yZy9iLzE4MDY0NSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2h0bWwvc2VtYW50aWNzL2Zvcm1zL3RoZS1pbnB1dC1lbGVtZW50L3R5cGUtY2hhbmdl
LXN0YXRlLmh0bWwgWyBGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9iLzE4NDc3NiBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2Zvcm1zL3RleHRmaWVsZHNlbGVj
dGlvbi9zZWxlY3Rpb24tbm90LWFwcGxpY2F0aW9uLmh0bWwgWyBGYWlsdXJlIF0KLXdlYmtpdC5v
cmcvYi8xODQ3NzYgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRh
YmxlLWJ5dGUtc3RyZWFtcy9nZW5lcmFsLmh0bWwgWyBGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9i
LzE4NTI1NCBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L29ubG9hZGVuZC1ldmVudC1hZnRlci1l
cnJvci5odG1sIFsgRmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMTg1MjU0IGh0dHAvdGVzdHMveG1s
aHR0cHJlcXVlc3QvcmVzcG9uc2UtYWNjZXNzLW9uLWVycm9yLmh0bWwgWyBGYWlsdXJlIF0KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy13azIvVGVzdEV4cGVjdGF0aW9ucyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy13azIvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBjZDYx
Mjk2NmJlZDk3ZmYzZmM4MzBkNGNjYTdkOTFkZmU0MzE5NTcwLi41OTM2YjNmZjI0YTBiNDRkYTY4
OGIxMDI5ZDhmODQyOTJlZGNhYjc1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9p
b3Mtd2syL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXdr
Mi9UZXN0RXhwZWN0YXRpb25zCkBAIC0xMTY1LDggKzExNjUsNiBAQCB3ZWJraXQub3JnL2IvMTcx
ODMwIFsgRGVidWcgXSBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dvcmtlcnMvY2xv
c2UuaHRtbAogCiB3ZWJraXQub3JnL2IvMTY5NjM3IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMveGhyL3RpbWVvdXQtbXVsdGlwbGUtZmV0Y2hlcy5odG1sIFsgUGFzcyBGYWlsdXJlIF0K
IAotd2Via2l0Lm9yZy9iLzE3MTg4NiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL2dlbmVyYWwuaHRtbCBbIFBhc3MgRmFpbHVyZSBd
Ci0KIHdlYmtpdC5vcmcvYi8xNzE5NTcgZmFzdC9hbmltYXRpb24vcmVxdWVzdC1hbmltYXRpb24t
ZnJhbWUtdGltZS11bml0Lmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCiB3ZWJraXQub3JnL2IvMTcy
NDU0IGh0dHAvdGVzdHMvbmF2aWdhdGlvbi9zdGF0aXN0aWNzLmh0bWwgWyBQYXNzIEZhaWx1cmUg
XQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnMg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA3OTk4Yjk3
YTg5NTA2MWExNWY5Y2QxMmRhODA2YzVmN2RmMmJlOWNiLi42M2Y2ZDMxNDhiMjZmZTE1MzdlNmRm
NmVmODhmMjEzZGM3Y2Q5NGI1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mv
VGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvVGVzdEV4cGVj
dGF0aW9ucwpAQCAtMzA3OSw4ICszMDc5LDYgQEAgd2Via2l0Lm9yZy9iLzE4ODU3OCBzdmcvY3Vz
dG9tL3Njcm9sbGluZy1lbWJlZGRlZC1zdmctZmlsZS1pbWFnZS1yZXBhaW50LXByb2JsZW0KIAog
d2Via2l0Lm9yZy9iLzEyODMxMiBtZWRpYS92aWRlby1sb2FkLXByZWxvYWQtbWV0YWRhdGEuaHRt
bCBbIFBhc3MgRmFpbHVyZSBdCiAKLXdlYmtpdC5vcmcvYi8xODgwNzAgaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9lcnJvci1wcm9wYWdhdGlvbi1iYWNrd2Fy
ZC5odG1sIFsgUGFzcyBGYWlsdXJlIF0KLQogd2Via2l0Lm9yZy9iLzE4OTcyNiBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9mZXRj
aC1taXhlZC1jb250ZW50LXRvLWluc2NvcGUuaHR0cHMuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiB3
ZWJraXQub3JnL2IvMTg5NzI2IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2Vydmlj
ZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL2ZldGNoLW1peGVkLWNvbnRlbnQtdG8tb3V0c2NvcGUu
aHR0cHMuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKQEAgLTM0NzMsNCArMzQ3MSw0IEBAIHdlYmtp
dC5vcmcvYi8yMTI1NjUgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9lbmNvZGluZy9z
aW5nbGUtYnl0ZS1kZWNvZGVyCiAKIGZhc3QvdGV4dC90ZXh0LXN0eWxlcy8tYXBwbGUtc3lzdGVt
IFsgUGFzcyBdCiAKLXdlYmtpdC5vcmcvYi8yMTQxNTUgWyBEZWJ1ZyBdIGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRkZXItcG9saWN5L2Jsb2Iu
aHR0cHMuaHRtbCBbIFBhc3MgRmFpbHVyZSBdClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQor
d2Via2l0Lm9yZy9iLzIxNDE1NSBbIERlYnVnIF0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvYmxvYi5odHRwcy5odG1sIFsg
UGFzcyBGYWlsdXJlIF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEv
VGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVj
dGF0aW9ucwppbmRleCBkNGM2N2FmYzliNjdjNGE3MzI5MmMwNTM5YjNjZjY5ZWRlMzc5ZjAwLi5h
ZmQyNTlhYTdlNGI0OWRhMjM0YTcyNjUwOTQzN2Y2MDI2MDRjY2IwIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zCkBAIC0zMjMsNyArMzIzLDYgQEAg
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRl
ci1wb2xpY3kvcmVxdWlyZS1jb3JwLXMKIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
aHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRkZXItcG9saWN5L3NlcnZpY2Utd29ya2VyLWNhY2hlLXN0
b3JhZ2UuaHR0cHMuaHRtbCBbIFNraXAgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zZXJ2ZXItdGltaW5nL3NlcnZpY2Vfd29ya2VyX2lkbC5odG1sIFsgU2tpcCBdCiBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2VycyBbIFNraXAgXQotaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFtcy9k
ZXRhY2hlZC1idWZmZXJzLnNlcnZpY2V3b3JrZXIuaHR0cHMuaHRtbCBbIFNraXAgXQogaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9pbmZyYXN0cnVjdHVyZS9zZXJ2ZXIvY29udGV4dC5h
bnkuc2VydmljZXdvcmtlci5odG1sIFsgU2tpcCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2luZnJhc3RydWN0dXJlL3NlcnZlci9zZWN1cmUtY29udGV4dC5odHRwcy5hbnkuc2Vy
dmljZXdvcmtlci5odG1sIFsgU2tpcCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L0luZGV4ZWREQi9rZXktZ2VuZXJhdG9ycy9yZWFkaW5nLWF1dG9pbmNyZW1lbnQtaW5kZXhlcy1j
dXJzb3JzLmFueS5zZXJ2aWNld29ya2VyLmh0bWwgWyBTa2lwIF0KQEAgLTY1OSw4ICs2NTgsNiBA
QCB3ZWJraXQub3JnL2IvMTc0MTgwIHN2Zy9hbmltYXRpb25zL3NtaWwtbGVhay1lbGVtZW50cy5z
dmcgWyBQYXNzIEZhaWx1cmUgXQogCiB3ZWJraXQub3JnL2IvMTc1ODY3IHN2Zy9hbmltYXRpb25z
L3NtaWwtbGVhay1keW5hbWljYWxseS1hZGRlZC1lbGVtZW50LWluc3RhbmNlcy5zdmcgWyBQYXNz
IEZhaWx1cmUgXQogCi13ZWJraXQub3JnL2IvMTc2OTIwIGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvZXJyb3ItcHJvcGFnYXRpb24tZm9yd2FyZC5kZWRpY2F0
ZWR3b3JrZXIuaHRtbCBbIFBhc3MgVGltZW91dCBdCi0KIHdlYmtpdC5vcmcvYi8xNzU4ODYgc3Zn
L2FuaW1hdGlvbnMvc21pbC1sZWFrLWVsZW1lbnQtaW5zdGFuY2VzLnN2ZyBbIFBhc3MgRmFpbHVy
ZSBdCiAKICMgPHJkYXI6Ly9wcm9ibGVtLzI5MjAxNjk4PiBEdW1wUmVuZGVyVHJlZSBjcmFzaGVk
IGluIGNvbS5hcHBsZS5Db3JlR3JhcGhpY3M6IENHRGF0YVByb3ZpZGVyQ29weURhdGEgKyAzNzcK
QEAgLTc2OCw4ICs3NjUsNiBAQCB3ZWJraXQub3JnL2IvMTg5MDg3IHN2Zy9hbmltYXRpb25zL2Fu
aW1hdGUtZW5kLWF0dHJpYnV0ZS1udW1lcmljLXByZWNpc2lvbi5odG1sCiAKIHdlYmtpdC5vcmcv
Yi8xODk1OTQgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWFuaW1hdGlv
bnMvcGVuZGluZy1zdHlsZS1jaGFuZ2VzLTAwMS5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAotd2Vi
a2l0Lm9yZy9iLzE4ODA3MCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
cGlwaW5nL2Vycm9yLXByb3BhZ2F0aW9uLWJhY2t3YXJkLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQot
CiAjIFRlc3RzIGZvciBzbW9vdGggc2Nyb2xsIGJlaGF2aW9yIGRvIG5vdCBhbGwgd29yayBhbmQg
dGhleSBhcmUgc2xvdywgc28gbGV0J3MganVzdCBza2lwIHRoZW0uCiB3ZWJraXQub3JnL2IvMTkx
MzU3IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzc29tLXZpZXcvc2Nyb2xs
LWJlaGF2aW9yLW1haW4tZnJhbWUtcm9vdC5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMTkx
MzU3IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzc29tLXZpZXcvc2Nyb2xs
LWJlaGF2aW9yLW1haW4tZnJhbWUtd2luZG93Lmh0bWwgWyBTa2lwIF0KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBhZDk2OTUyM2Q1ZGY3MjA4
OTdkNTM1NmI5OTM0YzY0NTkzOTdjYWVhLi5iYzg1N2E1NGQ3NGJjMTA2YjZjYzEyNzc4OGNiMDNm
YWRkNmNkMDk1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RF
eHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0
YXRpb25zCkBAIC01OTQsOCArNTk0LDYgQEAgd2Via2l0Lm9yZy9iLzE2ODIzNSBbIERlYnVnIF0g
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy90ZXgKIAogd2Vi
a2l0Lm9yZy9iLzE2ODA4NSB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9sYXRjaGVkLXRvLWRlbGV0
ZWQtbm9kZS5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAotd2Via2l0Lm9yZy9iLzE2ODMzNiBbIERl
YnVnIF0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0
cmVhbXMvZ2FyYmFnZS1jb2xsZWN0aW9uLmh0bWwgWyBQYXNzIFRpbWVvdXQgXQotCiAjIFNraXBw
ZWQgYmVjYXVzZSBNYWMgZG9lc24ndCBoYXZlIGEga2V5IHRvIHNob3cgdGhlIGNvbnRleHQgbWVu
dQogZmFzdC9ldmVudHMvY29udGV4dC1hY3RpdmF0ZWQtYnkta2V5LWV2ZW50Lmh0bWwgWyBTa2lw
IF0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlv
bnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA5NGE2
YjIzY2VmYWMyYmRjNTk3NWE3OTMyOTkyYmQzODBmYWM0Y2VlLi4yMTVjYjAzMmNmNTZlOGMwODU4
YjRmMDg3ZWU1OTQxYmIyZDEyMWE4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4
cGVjdGF0aW9ucwpAQCAtMTI3MSw4ICsxMjcxLDYgQEAgd2Via2l0Lm9yZy9iLzE3MTQ2NSBtZWRp
YS90cmFjay90cmFjay1pbi1iYW5kLXN0eWxlLmh0bWwgWyBQYXNzIFRpbWVvdXQgXQogCiB3ZWJr
aXQub3JnL2IvMTcxNzYwIGltcG9ydGVkL3czYy9pMThuL2JpZGkvYmlkaS1wbGFpbnRleHQtMDEx
Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIAotd2Via2l0Lm9yZy9iLzE3MTg4NiBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL2dl
bmVyYWwuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCi0KICMgVGhlc2UgdGVzdHMgYXJlIGlPUy1zcGVj
aWZpYwogbWVkaWEvbW9kZXJuLW1lZGlhLWNvbnRyb2xzL2F1ZGlvL2F1ZGlvLWNvbnRyb2xzLXN0
eWxlcy5odG1sIFsgU2tpcCBdCiBtZWRpYS9tb2Rlcm4tbWVkaWEtY29udHJvbHMvaW9zLWlubGlu
ZS1tZWRpYS1jb250cm9scyBbIFNraXAgXQpAQCAtMTkwMCw0ICsxODk4LDQgQEAgd2Via2l0Lm9y
Zy9iLzIxMjU2NSBbIENhdGFsaW5hIE1vamF2ZSBdIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvZW5jb2RpbmcKIAogZmFzdC90ZXh0L3RleHQtc3R5bGVzLy1hcHBsZS1zeXN0ZW0gWyBQ
YXNzIF0KIAotd2Via2l0Lm9yZy9iLzIxNDE1NSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2h0bWwvY3Jvc3Mtb3JpZ2luLWVtYmVkZGVyLXBvbGljeS9ibG9iLmh0dHBzLmh0bWwgWyBQ
YXNzIEZhaWx1cmUgXQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK3dlYmtpdC5vcmcvYi8y
MTQxNTUgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1l
bWJlZGRlci1wb2xpY3kvYmxvYi5odHRwcy5odG1sIFsgUGFzcyBGYWlsdXJlIF0KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dwZS9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vd3BlL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggMmMxYTFiMTA4MzVlMWRhMzA4
YmM0NTBlZGFmOTIyZTEwMmZkNDBiYy4uMzU5MmIzZTQyODgxYWZhYTU1NGExY2Y3ZGUwNDBlMWVl
MDc3YzZjNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd3BlL1Rlc3RFeHBlY3Rh
dGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd3BlL1Rlc3RFeHBlY3RhdGlvbnMKQEAg
LTk0NSw3ICs5NDUsNiBAQCB3ZWJraXQub3JnL2IvMTI5NzU4IGpzL2RvbS9jcmVhdGUtbG90cy1v
Zi13b3JrZXJzLmh0bWwgWyBUaW1lb3V0IFBhc3MgXQogCiB3ZWJraXQub3JnL2IvMTc3NTMwIGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMveGhyL3NldHJlcXVlc3RoZWFkZXItaGVhZGVy
LWFsbG93ZWQuaHRtIFsgUGFzcyBGYWlsdXJlIF0KIAotd2Via2l0Lm9yZy9iLzE3NTQxOSBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1z
L2RldGFjaGVkLWJ1ZmZlcnMuc2VydmljZXdvcmtlci5odHRwcy5odG1sIFsgUGFzcyBGYWlsdXJl
IF0KIHdlYmtpdC5vcmcvYi8xNzU0MTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9m
ZXRjaC9hcGkvYWJvcnQvc2VydmljZXdvcmtlci1pbnRlcmNlcHRlZC5odHRwcy5odG1sIFsgRmFp
bHVyZSBQYXNzIF0KIHdlYmtpdC5vcmcvYi8xNzU0MTkgaHR0cC93cHQvc2VydmljZS13b3JrZXJz
L3NlcnZpY2Utd29ya2VyLW5ldHdvcmtwcm9jZXNzLWNyYXNoLmh0bWwgWyBQYXNzIEZhaWx1cmUg
VGltZW91dCBdCiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404043</attachid>
            <date>2020-07-10 21:25:11 -0700</date>
            <delta_ts>2020-07-10 21:49:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214207-20200710212509.patch</filename>
            <type>text/plain</type>
            <size>1507898</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY0MjU5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2MvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwpp
bmRleCA4NjI1NTk2MDMwZmFkNjhkMzhkNmJkZjNmN2RmZTdkYjM4YWQ1MmFlLi41YmNkMGJiOTlj
M2ZlOGMzODRkYmI0MjgwMzg5MmJiOWVlMDcxNjljIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2MvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMC0wNy0xMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpA
YXBwbGUuY29tPgorCisgICAgICAgIFJlc3luYyB3ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcyBm
cm9tIHVwc3RyZWFtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMTQyMDcKKworICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgorCisgICAgICAg
IFJlc3luYyB3ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcyBmcm9tIHVwc3RyZWFtIDg1OTUyN2Ez
NTEzMDI5ZDIuCisKKyAgICAgICAgKiByZXNvdXJjZXMvaW1wb3J0LWV4cGVjdGF0aW9ucy5qc29u
OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLyo6IFVwZGF0ZWQuCisKIDIw
MjAtMDctMTAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXN5
bmMgd2ViLXBsYXRmb3JtLXRlc3RzL25vdGlmaWNhdGlvbnMgZnJvbSB1cHN0cmVhbQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL1Rlc3RFeHBl
Y3RhdGlvbnMKaW5kZXggOWU2OWFiZGI3YmIyN2Q0YjE3YjUzMDYxOGZkY2UwYjBmNGZkYTQ4Mi4u
MWM1Yjk4ZTcxMmM4YjhiYzY5YjAxOTExNjJlYTVlODkwMTNmMjBjZCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRp
b25zCkBAIC0zMzksNiArMzM5LDkgQEAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9o
dG1sL2Jyb3dzZXJzL2hpc3RvcnkvdGhlLWxvY2F0aW9uLWludGVyZmFjZS9sb2MKIGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC9pbWFnZWJpdG1hcC9j
cmVhdGVJbWFnZUJpdG1hcC1pbnZhbGlkLWFyZ3MuaHRtbCBbIER1bXBKU0NvbnNvbGVMb2dJblN0
ZEVyciBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3BheW1lbnQtcmVxdWVzdC9w
YXltZW50LXJlcXVlc3QtaGFzZW5yb2xsZWRpbnN0cnVtZW50LW1ldGhvZC50ZW50YXRpdmUuaHR0
cHMuaHRtbCBbIEZhaWx1cmUgUGFzcyBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3BheW1lbnQtcmVxdWVzdC9wYXltZW50LXJlcXVlc3QtY2FubWFrZXBheW1lbnQtbWV0aG9kLmh0
dHBzLmh0bWwgWyBEdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIgXQoraW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvcGF0Y2hlZC1nbG9iYWwuYW55
Lmh0bWwgWyBEdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvd3JpdGUuYW55Lmh0bWwgWyBEdW1w
SlNDb25zb2xlTG9nSW5TdGRFcnIgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
dHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvZXJyb3IuYW55Lmh0bWwgWyBEdW1wSlNDb25zb2xlTG9n
SW5TdGRFcnIgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL1dvcmtl
ckdsb2JhbFNjb3BlX0Vycm9yRXZlbnRfbGluZW5vLmh0bSBbIER1bXBKU0NvbnNvbGVMb2dJblN0
ZEVyciBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYmF1ZGlvL3RoZS1hdWRp
by1hcGkvdGhlLWF1ZGlvbm9kZS1pbnRlcmZhY2UvYXVkaW9ub2RlLWRpc2Nvbm5lY3QtYXVkaW9w
YXJhbS5odG1sIFsgRHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIF0KIGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUtcGFubmVybm9kZS1pbnRl
cmZhY2UvcGFubmVyLWF1dG9tYXRpb24tYmFzaWMuaHRtbCBbIER1bXBKU0NvbnNvbGVMb2dJblN0
ZEVyciBdCkBAIC0xMjIwLDE0ICsxMjIzLDYgQEAgaHR0cC90ZXN0cy9sb2FkaW5nL3RleHQtY29u
dGVudC10eXBlLXdpdGgtYmluYXJ5LWV4dGVuc2lvbi5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIHdl
YmtpdC5vcmcvYi8xNzEwOTQgc3RyZWFtcy9icmFuZC1jaGVja3MuaHRtbCBbIFBhc3MgRmFpbHVy
ZSBdCiB3ZWJraXQub3JnL2IvMTcxMDk0IHN0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9u
L2Fic3RyYWN0LW9wcy5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAotIyB0ZWUuaHRtbCBpcyBmbGFr
eSB3aXRoIHVuaGFuZGxlZCBwcm9taXNlIHJlamVjdGlvbnMKLWltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3RlZS5odG1sIFsgRHVtcEpTQ29u
c29sZUxvZ0luU3RkRXJyIF0KLSMgVGltZW91dCB0ZXN0cy4KLWltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMvZ2VuZXJhbC5zZXJ2aWNl
d29ya2VyLmh0dHBzLmh0bWwgWyBTa2lwIF0KLWltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMvZGV0YWNoZWQtYnVmZmVycy5zZXJ2aWNl
d29ya2VyLmh0dHBzLmh0bWwgWyBTa2lwIF0KLQotd2Via2l0Lm9yZy9iLzE4NjE2MSBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Vycm9yLXByb3BhZ2F0aW9u
LWZvcndhcmQuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCi0KICMgV1BUIHRlc3RzIHRoYXQgZmFpbCBh
ZnRlciBkb2luZyBmdWxsIHRlc3QgcmVwb3NpdG9yeSByZWltcG9ydCBhbmQgbmVlZCBmdXJ0aGVy
IGludmVzdGlnYXRpb24KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93
c2Vycy93aW5kb3dzL25lc3RlZC1icm93c2luZy1jb250ZXh0cy9mcmFtZUVsZW1lbnQuc3ViLmh0
bWwgWyBQYXNzIEZhaWx1cmUgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1s
L2Jyb3dzZXJzL3dpbmRvd3MvdGFyZ2V0aW5nLWNyb3NzLW9yaWdpbi1uZXN0ZWQtYnJvd3Npbmct
Y29udGV4dHMuc3ViLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3Jlc291cmNlcy9pbXBvcnQtZXhwZWN0YXRpb25zLmpzb24gYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2MvcmVzb3VyY2VzL2ltcG9ydC1leHBlY3RhdGlvbnMuanNvbgpp
bmRleCA1NDVjYWQwZTQ4MzAyNDFjNjNiZTllYzcyNjlhMTdkOWM1MTMwNjIxLi40N2M3OGIzOTgw
YWMxNDk1ZDI2YWUxMjI0MGEwZDJkNGNhMzQ5MzE5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2MvcmVzb3VyY2VzL2ltcG9ydC1leHBlY3RhdGlvbnMuanNvbgorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2MvcmVzb3VyY2VzL2ltcG9ydC1leHBlY3RhdGlvbnMuanNvbgpA
QCAtMzcxLDYgKzM3MSw3IEBACiAgICAgIndlYi1wbGF0Zm9ybS10ZXN0cy9zcGVlY2gtYXBpIjog
InNraXAiLCAKICAgICAid2ViLXBsYXRmb3JtLXRlc3RzL3N0YXRpY3JhbmdlIjogInNraXAiLCAK
ICAgICAid2ViLXBsYXRmb3JtLXRlc3RzL3N0b3JhZ2UiOiAic2tpcCIsIAorICAgICJ3ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcyI6ICJpbXBvcnQiLCAKICAgICAid2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcyI6ICJza2lwIiwgCiAgICAgIndlYi1wbGF0Zm9ybS10
ZXN0cy9zdWJyZXNvdXJjZS1pbnRlZ3JpdHkiOiAiaW1wb3J0IiwgCiAgICAgIndlYi1wbGF0Zm9y
bS10ZXN0cy9zdmciOiAiaW1wb3J0IiwgCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvTUVUQS55bWwgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvTUVUQS55bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMTI1OWE1NWNiNWE5OWUzYmEzYTEzZDgxZDAyZGQ3OGQ2OTdkZGFiZgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy9NRVRBLnltbApAQCAtMCwwICsxLDcgQEAKK3NwZWM6IGh0dHBzOi8vc3RyZWFtcy5zcGVjLndo
YXR3Zy5vcmcvCitzdWdnZXN0ZWRfcmV2aWV3ZXJzOgorICAtIGRvbWVuaWMKKyAgLSB5dXRha2Fo
aXJhbm8KKyAgLSB5b3Vlbm5mCisgIC0gd2FuZGVydmlldworICAtIHJpY2VhCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvT1dO
RVJTIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
L09XTkVSUwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzkzNDcxYjQ2NzA2OGZiNjdi
ZThmY2RkOTRmMGM5YWRjMWEzYWM2Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMvT1dORVJTCisrKyAvZGV2L251bGwKQEAgLTEsNyArMCwwIEBACi1AZG9tZW5pYwot
QHR5b3NoaW5vCi1AeXV0YWthaGlyYW5vCi1AeW91ZW5uZgotQGNhbHZhcmlzCi1Ad2FuZGVydmll
dwotQHJpY2VhCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMvUkVBRE1FLm1kIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL1JFQURNRS5tZAppbmRleCA4ODY4YTg1OGU1ZjQ5YWU0
NTdjN2QxZGUwNzhhMWY2OTdjYzY3NjI2Li5mZDk2NGNmN2U1Yjc1ZGI0MDhlMGI1ODEzY2I5NDE3
MjE4NmY1YzI2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMvUkVBRE1FLm1kCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9SRUFETUUubWQKQEAgLTEsMTQgKzEsMyBAQAog
IyBTdHJlYW1zIFRlc3RzCiAKIFRoZSB3b3JrIG9uIHRoZSBzdHJlYW1zIHRlc3RzIGlzIGNsb3Nl
bHkgdHJhY2tlZCBieSB0aGUgc3BlY2lmaWNhdGlvbiBhdXRob3JzLCB3aG8gbWFpbnRhaW4gYSBy
ZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gaW50ZW5kZWQgdG8gbWF0Y2ggdGhlIHNwZWMgbGluZS1i
eS1saW5lIHdoaWxlIHBhc3NpbmcgYWxsIG9mIHRoZXNlIHRlc3RzLiBTZWUgW3RoZSB3aGF0d2cv
c3RyZWFtcyByZXBvc2l0b3J5IGZvciBkZXRhaWxzXShodHRwczovL2dpdGh1Yi5jb20vd2hhdHdn
L3N0cmVhbXMvdHJlZS9tYXN0ZXIvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uKS4gU29tZSB0ZXN0
cyBtYXkgYmUgaW4gdGhhdCByZXBvc2l0b3J5IHdoaWxlIHRoZSBzcGVjIHNlY3Rpb25zIHRoZXkg
dGVzdCBhcmUgc3RpbGwgdW5kZXJnb2luZyBoZWF2eSBjaHVybi4KLQotIyMgR2VuZXJhdGluZyB3
cmFwcGVyIGZpbGVzCi0KLUJlY2F1c2UgdGhlIHN0cmVhbXMgZmVhdHVyZSBpcyBzdXBwb3NlZCB0
byB3b3JrIGluIGFsbCBnbG9iYWwgY29udGV4dHMsIGVhY2ggdGVzdCBpcyB3cml0dGVuIGFzIGEg
YC5qc2AgZmlsZSwgYW5kIHRoZW4gZm91ciBgLmh0bWxgIGZpbGVzIGFyZSBnZW5lcmF0ZWQgYXJv
dW5kIGl0LiBTbyBmb3IgZXhhbXBsZSwgZm9yIGBjb3VudC1xdWV1ZWluZy1zdHJhdGVneS5qc2As
IHdlIGhhdmUgdGhlIHdyYXBwZXIgZmlsZXM6Ci0KLS0gYGNvdW50LXF1ZXVlaW5nLXN0cmF0ZWd5
Lmh0dHBzLmh0bWxgCi0tIGBjb3VudC1xdWV1ZWluZy1zdHJhdGVneS5kZWRpY2F0ZWR3b3JrZXIu
aHRtbGAKLS0gYGNvdW50LXF1ZXVlaW5nLXN0cmF0ZWd5LXNoYXJlZHdvcmtlci5odG1sYAotLSBg
Y291bnQtcXVldWVpbmctc3RyYXRlZ3ktc2VydmljZXdvcmtlci5odG1sYAotCi1UaGVzZSBhcmUg
Z2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkgYnkgdGhlIE5vZGUuanMgc2NyaXB0IGluIGBnZW5lcmF0
ZS10ZXN0LXdyYXBwZXJzLmpzYC4gU2VlIGl0IGZvciBkZXRhaWxzLCBhbmQgcGxlYXNlIHJlbWVt
YmVyIHRvIHVzZSBpdCB3aGVuZXZlciBhZGRpbmcgbmV3IHRlc3RzLgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL2J5dGUtbGVu
Z3RoLXF1ZXVpbmctc3RyYXRlZ3kuZGVkaWNhdGVkd29ya2VyLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9ieXRlLWxlbmd0
aC1xdWV1aW5nLXN0cmF0ZWd5LmRlZGljYXRlZHdvcmtlci1leHBlY3RlZC50eHQKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE3MTQyODE2MWMyZGMwNzYyYmYwYzZlZmQzMjI5ZWEwZGY4
NDdlODMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL2J5dGUtbGVu
Z3RoLXF1ZXVpbmctc3RyYXRlZ3kuZGVkaWNhdGVkd29ya2VyLWV4cGVjdGVkLnR4dAorKysgL2Rl
di9udWxsCkBAIC0xLDEwICswLDAgQEAKLQotUEFTUyBDYW4gY29uc3RydWN0IGEgQnl0ZUxlbmd0
aFF1ZXVpbmdTdHJhdGVneSB3aXRoIGEgdmFsaWQgaGlnaCB3YXRlciBtYXJrIAotUEFTUyBDYW4g
Y29uc3RydWN0IGEgQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneSB3aXRoIGFueSB2YWx1ZSBhcyBp
dHMgaGlnaCB3YXRlciBtYXJrIAotUEFTUyBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5IGNvbnN0
cnVjdG9yIGJlaGF2ZXMgYXMgZXhwZWN0ZWQgd2l0aCBzdHJhbmdlIGFyZ3VtZW50cyAKLVBBU1Mg
Qnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneSBzaXplIGJlaGF2ZXMgYXMgZXhwZWN0ZWQgd2l0aCBz
dHJhbmdlIGFyZ3VtZW50cyAKLVBBU1MgQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneS5wcm90b3R5
cGUuc2l6ZSBzaG91bGQgd29yayBnZW5lcmljYWxseSBvbiBpdHMgdGhpcyBhbmQgaXRzIGFyZ3Vt
ZW50cyAKLVBBU1MgQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneSBpbnN0YW5jZXMgaGF2ZSB0aGUg
Y29ycmVjdCBwcm9wZXJ0aWVzIAotUEFTUyBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5J3MgaGln
aFdhdGVyTWFyayBwcm9wZXJ0eSBjYW4gYmUgc2V0IHRvIGFueXRoaW5nIAotUEFTUyBCeXRlTGVu
Z3RoUXVldWluZ1N0cmF0ZWd5Lm5hbWUgaXMgY29ycmVjdCAKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL2J5dGUtbGVuZ3Ro
LXF1ZXVpbmctc3RyYXRlZ3kuZGVkaWNhdGVkd29ya2VyLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvYnl0ZS1sZW5ndGgtcXVldWluZy1z
dHJhdGVneS5kZWRpY2F0ZWR3b3JrZXIuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggYWU4ZTdmNzI5ZjQ1MTY5Nzc1ZDA5M2MwNjdlYjY2YTE4ZDk3Y2IwZC4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvYnl0ZS1sZW5ndGgtcXVldWluZy1zdHJhdGVn
eS5kZWRpY2F0ZWR3b3JrZXIuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLTwh
RE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHRpdGxlPmJ5dGUtbGVuZ3Ro
LXF1ZXVpbmctc3RyYXRlZ3kuanMgZGVkaWNhdGVkIHdvcmtlciB3cmFwcGVyIGZpbGU8L3RpdGxl
PgotCi08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08
c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci0K
LTxzY3JpcHQ+Ci0ndXNlIHN0cmljdCc7Ci1mZXRjaF90ZXN0c19mcm9tX3dvcmtlcihuZXcgV29y
a2VyKCdieXRlLWxlbmd0aC1xdWV1aW5nLXN0cmF0ZWd5LmpzJykpOwotPC9zY3JpcHQ+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvYnl0ZS1sZW5ndGgtcXVldWluZy1zdHJhdGVneS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL2J5dGUtbGVuZ3RoLXF1ZXVpbmctc3Ry
YXRlZ3kuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTFlYWEzYmZhNGQ3YjFi
ZmUwY2RkNjg5M2M4NTMxMzI5Y2M2MGM4ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3N0cmVhbXMvYnl0ZS1sZW5ndGgtcXVldWluZy1zdHJhdGVneS5odG1sCisrKyAvZGV2L251
bGwKQEAgLTEsMTAgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYt
OCI+Ci08dGl0bGU+Ynl0ZS1sZW5ndGgtcXVldWluZy1zdHJhdGVneS5qcyBicm93c2VyIGNvbnRl
eHQgd3JhcHBlciBmaWxlPC90aXRsZT4KLQotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhh
cm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3Ny
ZXBvcnQuanMiPjwvc2NyaXB0PgotCi0KLQotPHNjcmlwdCBzcmM9ImJ5dGUtbGVuZ3RoLXF1ZXVp
bmctc3RyYXRlZ3kuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL2J5dGUtbGVuZ3RoLXF1ZXVpbmctc3Ry
YXRlZ3kuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMvYnl0ZS1sZW5ndGgtcXVldWluZy1zdHJhdGVneS5qcwpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZTk2ZTY4ZWU0MDZhNTY2ODhlMDQ2MWZmZDBmNTEzMTEwOWY3MDdjZi4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvYnl0ZS1sZW5ndGgtcXVldWlu
Zy1zdHJhdGVneS5qcworKysgL2Rldi9udWxsCkBAIC0xLDExNCArMCwwIEBACi0ndXNlIHN0cmlj
dCc7Ci0KLWlmIChzZWxmLmltcG9ydFNjcmlwdHMpIHsKLSAgc2VsZi5pbXBvcnRTY3JpcHRzKCcv
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzJyk7Ci19Ci0KLXRlc3QoKCkgPT4gewotCi0gIG5ldyBC
eXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5KHsgaGlnaFdhdGVyTWFyazogNCB9KTsKLQotfSwgJ0Nh
biBjb25zdHJ1Y3QgYSBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5IHdpdGggYSB2YWxpZCBoaWdo
IHdhdGVyIG1hcmsnKTsKLQotdGVzdCgoKSA9PiB7Ci0KLSAgZm9yIChjb25zdCBoaWdoV2F0ZXJN
YXJrIG9mIFstSW5maW5pdHksIE5hTiwgJ2ZvbycsIHt9LCAoKSA9PiB7fV0pIHsKLSAgICBjb25z
dCBzdHJhdGVneSA9IG5ldyBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5KHsgaGlnaFdhdGVyTWFy
ayB9KTsKLSAgICBhc3NlcnRfZXF1YWxzKHN0cmF0ZWd5LmhpZ2hXYXRlck1hcmssIGhpZ2hXYXRl
ck1hcmssIGAke2hpZ2hXYXRlck1hcmt9IGdldHMgc2V0IGNvcnJlY3RseWApOwotICB9Ci0KLX0s
ICdDYW4gY29uc3RydWN0IGEgQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneSB3aXRoIGFueSB2YWx1
ZSBhcyBpdHMgaGlnaCB3YXRlciBtYXJrJyk7Ci0KLXRlc3QoKCkgPT4gewotCi0gIGNvbnN0IGhp
Z2hXYXRlck1hcmsgPSAxOwotICBjb25zdCBoaWdoV2F0ZXJNYXJrT2JqZWN0R2V0dGVyID0gewot
ICAgIGdldCBoaWdoV2F0ZXJNYXJrKCkgeyByZXR1cm4gaGlnaFdhdGVyTWFyazsgfQotICB9Owot
ICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcignd293IScpOwotICBjb25zdCBoaWdoV2F0ZXJNYXJr
T2JqZWN0R2V0dGVyVGhyb3dpbmcgPSB7Ci0gICAgZ2V0IGhpZ2hXYXRlck1hcmsoKSB7IHRocm93
IGVycm9yOyB9Ci0gIH07Ci0KLSAgYXNzZXJ0X3Rocm93cyh7IG5hbWU6ICdUeXBlRXJyb3InIH0s
ICgpID0+IG5ldyBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5KCksICdjb25zdHJ1Y3Rpb24gZmFp
bHMgd2l0aCB1bmRlZmluZWQnKTsKLSAgYXNzZXJ0X3Rocm93cyh7IG5hbWU6ICdUeXBlRXJyb3In
IH0sICgpID0+IG5ldyBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5KG51bGwpLCAnY29uc3RydWN0
aW9uIGZhaWxzIHdpdGggbnVsbCcpOwotICBhc3NlcnRfdGhyb3dzKHsgbmFtZTogJ0Vycm9yJyB9
LCAoKSA9PiBuZXcgQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneShoaWdoV2F0ZXJNYXJrT2JqZWN0
R2V0dGVyVGhyb3dpbmcpLAotICAgICdjb25zdHJ1Y3Rpb24gZmFpbHMgd2l0aCBhbiBvYmplY3Qg
d2l0aCBhIHRocm93aW5nIGhpZ2hXYXRlck1hcmsgZ2V0dGVyJyk7Ci0KLSAgLy8gU2hvdWxkIG5v
dCBmYWlsOgotICBuZXcgQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneSgncG90YXRvJyk7Ci0gIG5l
dyBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5KHt9KTsKLSAgbmV3IEJ5dGVMZW5ndGhRdWV1aW5n
U3RyYXRlZ3koaGlnaFdhdGVyTWFya09iamVjdEdldHRlcik7Ci0KLX0sICdCeXRlTGVuZ3RoUXVl
dWluZ1N0cmF0ZWd5IGNvbnN0cnVjdG9yIGJlaGF2ZXMgYXMgZXhwZWN0ZWQgd2l0aCBzdHJhbmdl
IGFyZ3VtZW50cycpOwotCi10ZXN0KCgpID0+IHsKLQotICBjb25zdCBzaXplID0gMTAyNDsKLSAg
Y29uc3QgY2h1bmsgPSB7IGJ5dGVMZW5ndGg6IHNpemUgfTsKLSAgY29uc3QgY2h1bmtHZXR0ZXIg
PSB7Ci0gICAgZ2V0IGJ5dGVMZW5ndGgoKSB7IHJldHVybiBzaXplOyB9Ci0gIH07Ci0gIGNvbnN0
IGVycm9yID0gbmV3IEVycm9yKCd3b3chJyk7Ci0gIGNvbnN0IGNodW5rR2V0dGVyVGhyb3dpbmcg
PSB7Ci0gICAgZ2V0IGJ5dGVMZW5ndGgoKSB7IHRocm93IGVycm9yOyB9Ci0gIH07Ci0gIGFzc2Vy
dF90aHJvd3MoeyBuYW1lOiAnVHlwZUVycm9yJyB9LCAoKSA9PiBCeXRlTGVuZ3RoUXVldWluZ1N0
cmF0ZWd5LnByb3RvdHlwZS5zaXplKCksICdzaXplIGZhaWxzIHdpdGggdW5kZWZpbmVkJyk7Ci0g
IGFzc2VydF90aHJvd3MoeyBuYW1lOiAnVHlwZUVycm9yJyB9LCAoKSA9PiBCeXRlTGVuZ3RoUXVl
dWluZ1N0cmF0ZWd5LnByb3RvdHlwZS5zaXplKG51bGwpLCAnc2l6ZSBmYWlscyB3aXRoIG51bGwn
KTsKLSAgYXNzZXJ0X2VxdWFscyhCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5LnByb3RvdHlwZS5z
aXplKCdwb3RhdG8nKSwgdW5kZWZpbmVkLAotICAgICdzaXplIHN1Y2NlZWRzIHdpdGggdW5kZWZp
bmVkIHdpdGggYSByYW5kb20gbm9uLW9iamVjdCB0eXBlJyk7Ci0gIGFzc2VydF9lcXVhbHMoQnl0
ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneS5wcm90b3R5cGUuc2l6ZSh7fSksIHVuZGVmaW5lZCwKLSAg
ICAnc2l6ZSBzdWNjZWVkcyB3aXRoIHVuZGVmaW5lZCB3aXRoIGFuIG9iamVjdCB3aXRob3V0IGh3
bSBwcm9wZXJ0eScpOwotICBhc3NlcnRfZXF1YWxzKEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3ku
cHJvdG90eXBlLnNpemUoY2h1bmspLCBzaXplLAotICAgICdzaXplIHN1Y2NlZWRzIHdpdGggdGhl
IHJpZ2h0IGFtb3VudCB3aXRoIGFuIG9iamVjdCB3aXRoIGEgaHdtJyk7Ci0gIGFzc2VydF9lcXVh
bHMoQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneS5wcm90b3R5cGUuc2l6ZShjaHVua0dldHRlciks
IHNpemUsCi0gICAgJ3NpemUgc3VjY2VlZHMgd2l0aCB0aGUgcmlnaHQgYW1vdW50IHdpdGggYW4g
b2JqZWN0IHdpdGggYSBod20gZ2V0dGVyJyk7Ci0gIGFzc2VydF90aHJvd3MoeyBuYW1lOiAnRXJy
b3InIH0sICgpID0+IEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3kucHJvdG90eXBlLnNpemUoY2h1
bmtHZXR0ZXJUaHJvd2luZyksCi0gICAgJ3NpemUgZmFpbHMgd2l0aCB0aGUgZXJyb3IgdGhyb3du
IGJ5IHRoZSBnZXR0ZXInKTsKLQotfSwgJ0J5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3kgc2l6ZSBi
ZWhhdmVzIGFzIGV4cGVjdGVkIHdpdGggc3RyYW5nZSBhcmd1bWVudHMnKTsKLQotdGVzdCgoKSA9
PiB7Ci0KLSAgY29uc3QgdGhpc1ZhbHVlID0gbnVsbDsKLSAgY29uc3QgcmV0dXJuVmFsdWUgPSB7
ICdyZXR1cm5lZCBmcm9tJzogJ2J5dGVMZW5ndGggZ2V0dGVyJyB9OwotICBjb25zdCBjaHVuayA9
IHsKLSAgICBnZXQgYnl0ZUxlbmd0aCgpIHsgcmV0dXJuIHJldHVyblZhbHVlOyB9Ci0gIH07Ci0K
LSAgYXNzZXJ0X2VxdWFscyhCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5LnByb3RvdHlwZS5zaXpl
LmNhbGwodGhpc1ZhbHVlLCBjaHVuayksIHJldHVyblZhbHVlKTsKLQotfSwgJ0J5dGVMZW5ndGhR
dWV1aW5nU3RyYXRlZ3kucHJvdG90eXBlLnNpemUgc2hvdWxkIHdvcmsgZ2VuZXJpY2FsbHkgb24g
aXRzIHRoaXMgYW5kIGl0cyBhcmd1bWVudHMnKTsKLQotdGVzdCgoKSA9PiB7Ci0KLSAgY29uc3Qg
c3RyYXRlZ3kgPSBuZXcgQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneSh7IGhpZ2hXYXRlck1hcms6
IDQgfSk7Ci0KLSAgYXNzZXJ0X29iamVjdF9lcXVhbHMoT2JqZWN0LmdldE93blByb3BlcnR5RGVz
Y3JpcHRvcihzdHJhdGVneSwgJ2hpZ2hXYXRlck1hcmsnKSwKLSAgICB7IHZhbHVlOiA0LCB3cml0
YWJsZTogdHJ1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0sCi0gICAg
J2hpZ2hXYXRlck1hcmsgcHJvcGVydHkgc2hvdWxkIGJlIGEgZGF0YSBwcm9wZXJ0eSB3aXRoIHRo
ZSB2YWx1ZSBwYXNzZWQgdGhlIGNvbnN0cnVjdG9yJyk7Ci0gIGFzc2VydF9lcXVhbHModHlwZW9m
IHN0cmF0ZWd5LnNpemUsICdmdW5jdGlvbicpOwotCi19LCAnQnl0ZUxlbmd0aFF1ZXVpbmdTdHJh
dGVneSBpbnN0YW5jZXMgaGF2ZSB0aGUgY29ycmVjdCBwcm9wZXJ0aWVzJyk7Ci0KLXRlc3QoKCkg
PT4gewotCi0gIGNvbnN0IHN0cmF0ZWd5ID0gbmV3IEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3ko
eyBoaWdoV2F0ZXJNYXJrOiA0IH0pOwotICBhc3NlcnRfZXF1YWxzKHN0cmF0ZWd5LmhpZ2hXYXRl
ck1hcmssIDQpOwotCi0gIHN0cmF0ZWd5LmhpZ2hXYXRlck1hcmsgPSAxMDsKLSAgYXNzZXJ0X2Vx
dWFscyhzdHJhdGVneS5oaWdoV2F0ZXJNYXJrLCAxMCk7Ci0KLSAgc3RyYXRlZ3kuaGlnaFdhdGVy
TWFyayA9ICdiYW5hbmEnOwotICBhc3NlcnRfZXF1YWxzKHN0cmF0ZWd5LmhpZ2hXYXRlck1hcmss
ICdiYW5hbmEnKTsKLQotfSwgJ0J5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3lcJ3MgaGlnaFdhdGVy
TWFyayBwcm9wZXJ0eSBjYW4gYmUgc2V0IHRvIGFueXRoaW5nJyk7Ci0KLXRlc3QoKCkgPT4gewot
Ci0gIGFzc2VydF9lcXVhbHMoQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneS5uYW1lLCAnQnl0ZUxl
bmd0aFF1ZXVpbmdTdHJhdGVneScsCi0gICAgICAgICAgICAgICAgJ0J5dGVMZW5ndGhRdWV1aW5n
U3RyYXRlZ3kubmFtZSBtdXN0IGJlICJCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5IicpOwotCi19
LCAnQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneS5uYW1lIGlzIGNvcnJlY3QnKTsKLQotZG9uZSgp
OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL2J5dGUtbGVuZ3RoLXF1ZXVpbmctc3RyYXRlZ3kuc2VydmljZXdvcmtlci5odHRw
cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3N0cmVhbXMvYnl0ZS1sZW5ndGgtcXVldWluZy1zdHJhdGVneS5zZXJ2aWNld29ya2VyLmh0
dHBzLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTczOWZiYmIy
Yjk2ZTM1YjMwZjlhYTk5ZDNkMjc5NmEyZDZiNmE3Ny4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMvYnl0ZS1sZW5ndGgtcXVldWluZy1zdHJhdGVneS5zZXJ2aWNld29y
a2VyLmh0dHBzLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLQot
UEFTUyBTZXJ2aWNlIHdvcmtlciB0ZXN0IHNldHVwIAotUEFTUyBDYW4gY29uc3RydWN0IGEgQnl0
ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneSB3aXRoIGEgdmFsaWQgaGlnaCB3YXRlciBtYXJrIAotUEFT
UyBDYW4gY29uc3RydWN0IGEgQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneSB3aXRoIGFueSB2YWx1
ZSBhcyBpdHMgaGlnaCB3YXRlciBtYXJrIAotUEFTUyBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5
IGNvbnN0cnVjdG9yIGJlaGF2ZXMgYXMgZXhwZWN0ZWQgd2l0aCBzdHJhbmdlIGFyZ3VtZW50cyAK
LVBBU1MgQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneSBzaXplIGJlaGF2ZXMgYXMgZXhwZWN0ZWQg
d2l0aCBzdHJhbmdlIGFyZ3VtZW50cyAKLVBBU1MgQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneS5w
cm90b3R5cGUuc2l6ZSBzaG91bGQgd29yayBnZW5lcmljYWxseSBvbiBpdHMgdGhpcyBhbmQgaXRz
IGFyZ3VtZW50cyAKLVBBU1MgQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneSBpbnN0YW5jZXMgaGF2
ZSB0aGUgY29ycmVjdCBwcm9wZXJ0aWVzIAotUEFTUyBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5
J3MgaGlnaFdhdGVyTWFyayBwcm9wZXJ0eSBjYW4gYmUgc2V0IHRvIGFueXRoaW5nIAotUEFTUyBC
eXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5Lm5hbWUgaXMgY29ycmVjdCAKLQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL2J5dGUt
bGVuZ3RoLXF1ZXVpbmctc3RyYXRlZ3kuc2VydmljZXdvcmtlci5odHRwcy5odG1sIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL2J5dGUtbGVuZ3Ro
LXF1ZXVpbmctc3RyYXRlZ3kuc2VydmljZXdvcmtlci5odHRwcy5odG1sCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAxMmFjODU2ZDI4MjVhMDMwYmY2NDIyN2RkNGYzMjlhZjEzNGE1NjU5
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9ieXRlLWxlbmd0aC1x
dWV1aW5nLXN0cmF0ZWd5LnNlcnZpY2V3b3JrZXIuaHR0cHMuaHRtbAorKysgL2Rldi9udWxsCkBA
IC0xLDEyICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgot
PHRpdGxlPmJ5dGUtbGVuZ3RoLXF1ZXVpbmctc3RyYXRlZ3kuanMgc2VydmljZSB3b3JrZXIgd3Jh
cHBlciBmaWxlPC90aXRsZT4KLQotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3Mu
anMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQu
anMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3Jr
ZXIvcmVzb3VyY2VzL3Rlc3QtaGVscGVycy5zdWIuanMiPjwvc2NyaXB0PgotCi08c2NyaXB0Pgot
J3VzZSBzdHJpY3QnOwotc2VydmljZV93b3JrZXJfdGVzdCgnYnl0ZS1sZW5ndGgtcXVldWluZy1z
dHJhdGVneS5qcycsICdTZXJ2aWNlIHdvcmtlciB0ZXN0IHNldHVwJyk7Ci08L3NjcmlwdD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy9ieXRlLWxlbmd0aC1xdWV1aW5nLXN0cmF0ZWd5LnNoYXJlZHdvcmtlci1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
Ynl0ZS1sZW5ndGgtcXVldWluZy1zdHJhdGVneS5zaGFyZWR3b3JrZXItZXhwZWN0ZWQudHh0CmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwOWQ1ZDI1MDlkNzg0N2U4Y2Q2ZmU2NjA2YWE2
MGNkZDMzYWE0NzRlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9i
eXRlLWxlbmd0aC1xdWV1aW5nLXN0cmF0ZWd5LnNoYXJlZHdvcmtlci1leHBlY3RlZC50eHQKKysr
IC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLUNPTlNPTEUgTUVTU0FHRTogUmVmZXJlbmNlRXJy
b3I6IENhbid0IGZpbmQgdmFyaWFibGU6IFNoYXJlZFdvcmtlcgotCi1IYXJuZXNzIEVycm9yIChG
QUlMKSwgbWVzc2FnZSA9IFJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBTaGFy
ZWRXb3JrZXIKLQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMvYnl0ZS1sZW5ndGgtcXVldWluZy1zdHJhdGVneS5zaGFyZWR3
b3JrZXIuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy9ieXRlLWxlbmd0aC1xdWV1aW5nLXN0cmF0ZWd5LnNoYXJlZHdvcmtlci5odG1sCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NjU4NzhlM2U2YTY1ZWI3NWVmMjZlMDViMzY1
OWY2ZDVjNTFiYmRkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9i
eXRlLWxlbmd0aC1xdWV1aW5nLXN0cmF0ZWd5LnNoYXJlZHdvcmtlci5odG1sCisrKyAvZGV2L251
bGwKQEAgLTEsMTEgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYt
OCI+Ci08dGl0bGU+Ynl0ZS1sZW5ndGgtcXVldWluZy1zdHJhdGVneS5qcyBzaGFyZWQgd29ya2Vy
IHdyYXBwZXIgZmlsZTwvdGl0bGU+Ci0KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJu
ZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVw
b3J0LmpzIj48L3NjcmlwdD4KLQotPHNjcmlwdD4KLSd1c2Ugc3RyaWN0JzsKLWZldGNoX3Rlc3Rz
X2Zyb21fd29ya2VyKG5ldyBTaGFyZWRXb3JrZXIoJ2J5dGUtbGVuZ3RoLXF1ZXVpbmctc3RyYXRl
Z3kuanMnKSk7Ci08L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5LmRlZGlj
YXRlZHdvcmtlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMvY291bnQtcXVldWluZy1zdHJhdGVneS5kZWRpY2F0ZWR3b3Jr
ZXItZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZGJkMzExYThk
YWYxMDBmNGZjYjYzMzA0YWFiMzU5ZTdmN2ExZDZkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5LmRlZGljYXRlZHdvcmtlci1l
eHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi0KLVBBU1MgQ2FuIGNv
bnN0cnVjdCBhIENvdW50UXVldWluZ1N0cmF0ZWd5IHdpdGggYSB2YWxpZCBoaWdoIHdhdGVyIG1h
cmsgCi1QQVNTIENhbiBjb25zdHJ1Y3QgYSBDb3VudFF1ZXVpbmdTdHJhdGVneSB3aXRoIGFueSB2
YWx1ZSBhcyBpdHMgaGlnaCB3YXRlciBtYXJrIAotUEFTUyBDb3VudFF1ZXVpbmdTdHJhdGVneSBj
b25zdHJ1Y3RvciBiZWhhdmVzIGFzIGV4cGVjdGVkIHdpdGggc3RyYW5nZSBhcmd1bWVudHMgCi1Q
QVNTIENvdW50UXVldWluZ1N0cmF0ZWd5LnByb3RvdHlwZS5zaXplIHNob3VsZCB3b3JrIGdlbmVy
aWNhbGx5IG9uIGl0cyB0aGlzIGFuZCBpdHMgYXJndW1lbnRzIAotUEFTUyBDb3VudFF1ZXVpbmdT
dHJhdGVneSBzaXplIGJlaGF2ZXMgYXMgZXhwZWN0ZWQgd2l0aCBzdHJhbmdlIGFyZ3VtZW50cyAK
LVBBU1MgQ291bnRRdWV1aW5nU3RyYXRlZ3kgaW5zdGFuY2VzIGhhdmUgdGhlIGNvcnJlY3QgcHJv
cGVydGllcyAKLVBBU1MgQ291bnRRdWV1aW5nU3RyYXRlZ3kncyBoaWdoV2F0ZXJNYXJrIHByb3Bl
cnR5IGNhbiBiZSBzZXQgdG8gYW55dGhpbmcgCi1QQVNTIENvdW50UXVldWluZ1N0cmF0ZWd5Lm5h
bWUgaXMgY29ycmVjdCAKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3kuZGVkaWNhdGVk
d29ya2VyLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMvY291bnQtcXVldWluZy1zdHJhdGVneS5kZWRpY2F0ZWR3b3JrZXIuaHRtbApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDAxMzZlYmRlYTNiYzE0NzRjMjk0OGM3NzVkZDhi
NWVhYWIwN2YyOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvY291
bnQtcXVldWluZy1zdHJhdGVneS5kZWRpY2F0ZWR3b3JrZXIuaHRtbAorKysgL2Rldi9udWxsCkBA
IC0xLDExICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgot
PHRpdGxlPmNvdW50LXF1ZXVpbmctc3RyYXRlZ3kuanMgZGVkaWNhdGVkIHdvcmtlciB3cmFwcGVy
IGZpbGU8L3RpdGxlPgotCi08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+
PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+
PC9zY3JpcHQ+Ci0KLTxzY3JpcHQ+Ci0ndXNlIHN0cmljdCc7Ci1mZXRjaF90ZXN0c19mcm9tX3dv
cmtlcihuZXcgV29ya2VyKCdjb3VudC1xdWV1aW5nLXN0cmF0ZWd5LmpzJykpOwotPC9zY3JpcHQ+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMvY291bnQtcXVldWluZy1zdHJhdGVneS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3ku
aHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWJiZWQzOTRiM2YwOWFiYzY3OTFh
NTg5NjMwZmExNzc4ZTU3MDc2NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMvY291bnQtcXVldWluZy1zdHJhdGVneS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTAg
KzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08dGl0bGU+
Y291bnQtcXVldWluZy1zdHJhdGVneS5qcyBicm93c2VyIGNvbnRleHQgd3JhcHBlciBmaWxlPC90
aXRsZT4KLQotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0
PgotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0
PgotCi0KLQotPHNjcmlwdCBzcmM9ImNvdW50LXF1ZXVpbmctc3RyYXRlZ3kuanMiPjwvc2NyaXB0
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3kuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvY291bnQtcXVldWluZy1zdHJhdGVneS5q
cwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGRhOGViNjc5ZGVmMzE3Y2E3YTI0OTdk
ZTY3MjQwZTRjZTdlZmQ4Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvY291bnQtcXVldWluZy1zdHJhdGVneS5qcworKysgL2Rldi9udWxsCkBAIC0xLDExMyArMCww
IEBACi0ndXNlIHN0cmljdCc7Ci0KLWlmIChzZWxmLmltcG9ydFNjcmlwdHMpIHsKLSAgc2VsZi5p
bXBvcnRTY3JpcHRzKCcvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzJyk7Ci19Ci0KLXRlc3QoKCkg
PT4gewotCi0gIG5ldyBDb3VudFF1ZXVpbmdTdHJhdGVneSh7IGhpZ2hXYXRlck1hcms6IDQgfSk7
Ci0KLX0sICdDYW4gY29uc3RydWN0IGEgQ291bnRRdWV1aW5nU3RyYXRlZ3kgd2l0aCBhIHZhbGlk
IGhpZ2ggd2F0ZXIgbWFyaycpOwotCi10ZXN0KCgpID0+IHsKLQotICBmb3IgKGNvbnN0IGhpZ2hX
YXRlck1hcmsgb2YgWy1JbmZpbml0eSwgTmFOLCAnZm9vJywge30sICgpID0+IHt9XSkgewotICAg
IGNvbnN0IHN0cmF0ZWd5ID0gbmV3IENvdW50UXVldWluZ1N0cmF0ZWd5KHsgaGlnaFdhdGVyTWFy
ayB9KTsKLSAgICBhc3NlcnRfZXF1YWxzKHN0cmF0ZWd5LmhpZ2hXYXRlck1hcmssIGhpZ2hXYXRl
ck1hcmssIGAke2hpZ2hXYXRlck1hcmt9IGdldHMgc2V0IGNvcnJlY3RseWApOwotICB9Ci0KLX0s
ICdDYW4gY29uc3RydWN0IGEgQ291bnRRdWV1aW5nU3RyYXRlZ3kgd2l0aCBhbnkgdmFsdWUgYXMg
aXRzIGhpZ2ggd2F0ZXIgbWFyaycpOwotCi10ZXN0KCgpID0+IHsKLQotICBjb25zdCBoaWdoV2F0
ZXJNYXJrID0gMTsKLSAgY29uc3QgaGlnaFdhdGVyTWFya09iamVjdEdldHRlciA9IHsKLSAgICBn
ZXQgaGlnaFdhdGVyTWFyaygpIHsgcmV0dXJuIGhpZ2hXYXRlck1hcms7IH0KLSAgfTsKLSAgY29u
c3QgZXJyb3IgPSBuZXcgRXJyb3IoJ3dvdyEnKTsKLSAgY29uc3QgaGlnaFdhdGVyTWFya09iamVj
dEdldHRlclRocm93aW5nID0gewotICAgIGdldCBoaWdoV2F0ZXJNYXJrKCkgeyB0aHJvdyBlcnJv
cjsgfQotICB9OwotCi0gIGFzc2VydF90aHJvd3MoeyBuYW1lOiAnVHlwZUVycm9yJyB9LCAoKSA9
PiBuZXcgQ291bnRRdWV1aW5nU3RyYXRlZ3koKSwgJ2NvbnN0cnVjdGlvbiBmYWlscyB3aXRoIHVu
ZGVmaW5lZCcpOwotICBhc3NlcnRfdGhyb3dzKHsgbmFtZTogJ1R5cGVFcnJvcicgfSwgKCkgPT4g
bmV3IENvdW50UXVldWluZ1N0cmF0ZWd5KG51bGwpLCAnY29uc3RydWN0aW9uIGZhaWxzIHdpdGgg
bnVsbCcpOwotICBhc3NlcnRfdGhyb3dzKHsgbmFtZTogJ0Vycm9yJyB9LCAoKSA9PiBuZXcgQ291
bnRRdWV1aW5nU3RyYXRlZ3koaGlnaFdhdGVyTWFya09iamVjdEdldHRlclRocm93aW5nKSwKLSAg
ICAnY29uc3RydWN0aW9uIGZhaWxzIHdpdGggYW4gb2JqZWN0IHdpdGggYSB0aHJvd2luZyBoaWdo
V2F0ZXJNYXJrIGdldHRlcicpOwotCi0gIC8vIFNob3VsZCBub3QgZmFpbDoKLSAgbmV3IENvdW50
UXVldWluZ1N0cmF0ZWd5KCdwb3RhdG8nKTsKLSAgbmV3IENvdW50UXVldWluZ1N0cmF0ZWd5KHt9
KTsKLSAgbmV3IENvdW50UXVldWluZ1N0cmF0ZWd5KGhpZ2hXYXRlck1hcmtPYmplY3RHZXR0ZXIp
OwotCi19LCAnQ291bnRRdWV1aW5nU3RyYXRlZ3kgY29uc3RydWN0b3IgYmVoYXZlcyBhcyBleHBl
Y3RlZCB3aXRoIHN0cmFuZ2UgYXJndW1lbnRzJyk7Ci0KLQotdGVzdCgoKSA9PiB7Ci0KLSAgY29u
c3QgdGhpc1ZhbHVlID0gbnVsbDsKLSAgY29uc3QgY2h1bmsgPSB7Ci0gICAgZ2V0IGJ5dGVMZW5n
dGgoKSB7Ci0gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdzaG91bGRuXCd0IGJlIGNhbGxlZCcp
OwotICAgIH0KLSAgfTsKLQotICBhc3NlcnRfZXF1YWxzKENvdW50UXVldWluZ1N0cmF0ZWd5LnBy
b3RvdHlwZS5zaXplLmNhbGwodGhpc1ZhbHVlLCBjaHVuayksIDEpOwotCi19LCAnQ291bnRRdWV1
aW5nU3RyYXRlZ3kucHJvdG90eXBlLnNpemUgc2hvdWxkIHdvcmsgZ2VuZXJpY2FsbHkgb24gaXRz
IHRoaXMgYW5kIGl0cyBhcmd1bWVudHMnKTsKLQotdGVzdCgoKSA9PiB7Ci0KLSAgY29uc3Qgc2l6
ZSA9IDEwMjQ7Ci0gIGNvbnN0IGNodW5rID0geyBieXRlTGVuZ3RoOiBzaXplIH07Ci0gIGNvbnN0
IGNodW5rR2V0dGVyID0gewotICAgIGdldCBieXRlTGVuZ3RoKCkgeyByZXR1cm4gc2l6ZTsgfQot
ICB9OwotICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcignd293IScpOwotICBjb25zdCBjaHVua0dl
dHRlclRocm93aW5nID0gewotICAgIGdldCBieXRlTGVuZ3RoKCkgeyB0aHJvdyBlcnJvcjsgfQot
ICB9OwotCi0gIGFzc2VydF9lcXVhbHMoQ291bnRRdWV1aW5nU3RyYXRlZ3kucHJvdG90eXBlLnNp
emUoKSwgMSwgJ3NpemUgcmV0dXJucyAxIHdpdGggdW5kZWZpbmVkJyk7Ci0gIGFzc2VydF9lcXVh
bHMoQ291bnRRdWV1aW5nU3RyYXRlZ3kucHJvdG90eXBlLnNpemUobnVsbCksIDEsICdzaXplIHJl
dHVybnMgMSB3aXRoIG51bGwnKTsKLSAgYXNzZXJ0X2VxdWFscyhDb3VudFF1ZXVpbmdTdHJhdGVn
eS5wcm90b3R5cGUuc2l6ZSgncG90YXRvJyksIDEsICdzaXplIHJldHVybnMgMSB3aXRoIG5vbi1v
YmplY3QgdHlwZScpOwotICBhc3NlcnRfZXF1YWxzKENvdW50UXVldWluZ1N0cmF0ZWd5LnByb3Rv
dHlwZS5zaXplKHt9KSwgMSwgJ3NpemUgcmV0dXJucyAxIHdpdGggZW1wdHkgb2JqZWN0Jyk7Ci0g
IGFzc2VydF9lcXVhbHMoQ291bnRRdWV1aW5nU3RyYXRlZ3kucHJvdG90eXBlLnNpemUoY2h1bmsp
LCAxLCAnc2l6ZSByZXR1cm5zIDEgd2l0aCBhIGNodW5rJyk7Ci0gIGFzc2VydF9lcXVhbHMoQ291
bnRRdWV1aW5nU3RyYXRlZ3kucHJvdG90eXBlLnNpemUoY2h1bmtHZXR0ZXIpLCAxLCAnc2l6ZSBy
ZXR1cm5zIDEgd2l0aCBjaHVuayBnZXR0ZXInKTsKLSAgYXNzZXJ0X2VxdWFscyhDb3VudFF1ZXVp
bmdTdHJhdGVneS5wcm90b3R5cGUuc2l6ZShjaHVua0dldHRlclRocm93aW5nKSwgMSwKLSAgICAn
c2l6ZSByZXR1cm5zIDEgd2l0aCBjaHVuayBnZXR0ZXIgdGhhdCB0aHJvd3MnKTsKLQotfSwgJ0Nv
dW50UXVldWluZ1N0cmF0ZWd5IHNpemUgYmVoYXZlcyBhcyBleHBlY3RlZCB3aXRoIHN0cmFuZ2Ug
YXJndW1lbnRzJyk7Ci0KLXRlc3QoKCkgPT4gewotCi0gIGNvbnN0IHN0cmF0ZWd5ID0gbmV3IENv
dW50UXVldWluZ1N0cmF0ZWd5KHsgaGlnaFdhdGVyTWFyazogNCB9KTsKLQotICBhc3NlcnRfb2Jq
ZWN0X2VxdWFscyhPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHN0cmF0ZWd5LCAnaGln
aFdhdGVyTWFyaycpLAotICAgIHsgdmFsdWU6IDQsIHdyaXRhYmxlOiB0cnVlLCBlbnVtZXJhYmxl
OiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUgfSwKLSAgICAnaGlnaFdhdGVyTWFyayBwcm9wZXJ0
eSBzaG91bGQgYmUgYSBkYXRhIHByb3BlcnR5IHdpdGggdGhlIHZhbHVlIHBhc3NlZCB0aGUgY29u
c3RydWN0b3InKTsKLSAgYXNzZXJ0X2VxdWFscyh0eXBlb2Ygc3RyYXRlZ3kuc2l6ZSwgJ2Z1bmN0
aW9uJyk7Ci0KLX0sICdDb3VudFF1ZXVpbmdTdHJhdGVneSBpbnN0YW5jZXMgaGF2ZSB0aGUgY29y
cmVjdCBwcm9wZXJ0aWVzJyk7Ci0KLXRlc3QoKCkgPT4gewotCi0gIGNvbnN0IHN0cmF0ZWd5ID0g
bmV3IENvdW50UXVldWluZ1N0cmF0ZWd5KHsgaGlnaFdhdGVyTWFyazogNCB9KTsKLSAgYXNzZXJ0
X2VxdWFscyhzdHJhdGVneS5oaWdoV2F0ZXJNYXJrLCA0KTsKLQotICBzdHJhdGVneS5oaWdoV2F0
ZXJNYXJrID0gMTA7Ci0gIGFzc2VydF9lcXVhbHMoc3RyYXRlZ3kuaGlnaFdhdGVyTWFyaywgMTAp
OwotCi0gIHN0cmF0ZWd5LmhpZ2hXYXRlck1hcmsgPSAnYmFuYW5hJzsKLSAgYXNzZXJ0X2VxdWFs
cyhzdHJhdGVneS5oaWdoV2F0ZXJNYXJrLCAnYmFuYW5hJyk7Ci0KLX0sICdDb3VudFF1ZXVpbmdT
dHJhdGVneVwncyBoaWdoV2F0ZXJNYXJrIHByb3BlcnR5IGNhbiBiZSBzZXQgdG8gYW55dGhpbmcn
KTsKLQotdGVzdCgoKSA9PiB7Ci0KLSAgYXNzZXJ0X2VxdWFscyhDb3VudFF1ZXVpbmdTdHJhdGVn
eS5uYW1lLCAnQ291bnRRdWV1aW5nU3RyYXRlZ3knLAotICAgICAgICAgICAgICAgICdDb3VudFF1
ZXVpbmdTdHJhdGVneS5uYW1lIG11c3QgYmUgIkNvdW50UXVldWluZ1N0cmF0ZWd5IicpOwotCi19
LCAnQ291bnRRdWV1aW5nU3RyYXRlZ3kubmFtZSBpcyBjb3JyZWN0Jyk7Ci0KLWRvbmUoKTsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5LnNlcnZpY2V3b3JrZXIuaHR0cHMtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
L2NvdW50LXF1ZXVpbmctc3RyYXRlZ3kuc2VydmljZXdvcmtlci5odHRwcy1leHBlY3RlZC50eHQK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ2NWExMzNmZTRmZjk3ZDg0MjVmOTlkZGRj
MDk2NWEwN2NmY2ZiNzcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
L2NvdW50LXF1ZXVpbmctc3RyYXRlZ3kuc2VydmljZXdvcmtlci5odHRwcy1leHBlY3RlZC50eHQK
KysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi0KLVBBU1MgU2VydmljZSB3b3JrZXIgdGVz
dCBzZXR1cCAKLVBBU1MgQ2FuIGNvbnN0cnVjdCBhIENvdW50UXVldWluZ1N0cmF0ZWd5IHdpdGgg
YSB2YWxpZCBoaWdoIHdhdGVyIG1hcmsgCi1QQVNTIENhbiBjb25zdHJ1Y3QgYSBDb3VudFF1ZXVp
bmdTdHJhdGVneSB3aXRoIGFueSB2YWx1ZSBhcyBpdHMgaGlnaCB3YXRlciBtYXJrIAotUEFTUyBD
b3VudFF1ZXVpbmdTdHJhdGVneSBjb25zdHJ1Y3RvciBiZWhhdmVzIGFzIGV4cGVjdGVkIHdpdGgg
c3RyYW5nZSBhcmd1bWVudHMgCi1QQVNTIENvdW50UXVldWluZ1N0cmF0ZWd5LnByb3RvdHlwZS5z
aXplIHNob3VsZCB3b3JrIGdlbmVyaWNhbGx5IG9uIGl0cyB0aGlzIGFuZCBpdHMgYXJndW1lbnRz
IAotUEFTUyBDb3VudFF1ZXVpbmdTdHJhdGVneSBzaXplIGJlaGF2ZXMgYXMgZXhwZWN0ZWQgd2l0
aCBzdHJhbmdlIGFyZ3VtZW50cyAKLVBBU1MgQ291bnRRdWV1aW5nU3RyYXRlZ3kgaW5zdGFuY2Vz
IGhhdmUgdGhlIGNvcnJlY3QgcHJvcGVydGllcyAKLVBBU1MgQ291bnRRdWV1aW5nU3RyYXRlZ3kn
cyBoaWdoV2F0ZXJNYXJrIHByb3BlcnR5IGNhbiBiZSBzZXQgdG8gYW55dGhpbmcgCi1QQVNTIENv
dW50UXVldWluZ1N0cmF0ZWd5Lm5hbWUgaXMgY29ycmVjdCAKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL2NvdW50LXF1ZXVp
bmctc3RyYXRlZ3kuc2VydmljZXdvcmtlci5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3ku
c2VydmljZXdvcmtlci5odHRwcy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2
MTNhZTBlOTc0ODQyNGUzZDFiNmRiMGNiN2ZhNzEwN2QxMmZjYTgzLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5LnNlcnZpY2V3
b3JrZXIuaHR0cHMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLTwhRE9DVFlQ
RSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHRpdGxlPmNvdW50LXF1ZXVpbmctc3Ry
YXRlZ3kuanMgc2VydmljZSB3b3JrZXIgd3JhcHBlciBmaWxlPC90aXRsZT4KLQotPHNjcmlwdCBz
cmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9y
ZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9z
ZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvcmVzb3VyY2VzL3Rlc3QtaGVscGVycy5zdWIu
anMiPjwvc2NyaXB0PgotCi08c2NyaXB0PgotJ3VzZSBzdHJpY3QnOwotc2VydmljZV93b3JrZXJf
dGVzdCgnY291bnQtcXVldWluZy1zdHJhdGVneS5qcycsICdTZXJ2aWNlIHdvcmtlciB0ZXN0IHNl
dHVwJyk7Ci08L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5LnNoYXJlZHdv
cmtlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMvY291bnQtcXVldWluZy1zdHJhdGVneS5zaGFyZWR3b3JrZXItZXhwZWN0
ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwOWQ1ZDI1MDlkNzg0N2U4Y2Q2
ZmU2NjA2YWE2MGNkZDMzYWE0NzRlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5LnNoYXJlZHdvcmtlci1leHBlY3RlZC50eHQK
KysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLUNPTlNPTEUgTUVTU0FHRTogUmVmZXJlbmNl
RXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IFNoYXJlZFdvcmtlcgotCi1IYXJuZXNzIEVycm9y
IChGQUlMKSwgbWVzc2FnZSA9IFJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBT
aGFyZWRXb3JrZXIKLQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvY291bnQtcXVldWluZy1zdHJhdGVneS5zaGFyZWR3b3Jr
ZXIuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5LnNoYXJlZHdvcmtlci5odG1sCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA2ZDQzNjEyYThlYmQ3NjE4Mjg0NDUxNjcyZDgzOGY1NWZjNzlk
YTE4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9jb3VudC1xdWV1
aW5nLXN0cmF0ZWd5LnNoYXJlZHdvcmtlci5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAs
MCBAQAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08dGl0bGU+Y291
bnQtcXVldWluZy1zdHJhdGVneS5qcyBzaGFyZWQgd29ya2VyIHdyYXBwZXIgZmlsZTwvdGl0bGU+
Ci0KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxz
Y3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLQot
PHNjcmlwdD4KLSd1c2Ugc3RyaWN0JzsKLWZldGNoX3Rlc3RzX2Zyb21fd29ya2VyKG5ldyBTaGFy
ZWRXb3JrZXIoJ2NvdW50LXF1ZXVpbmctc3RyYXRlZ3kuanMnKSk7Ci08L3NjcmlwdD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy9nZW5lcmF0ZS10ZXN0LXdyYXBwZXJzLmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL2dlbmVyYXRlLXRlc3Qtd3JhcHBlcnMuanMKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRhNDA2ZmU3NWMyZWUzN2I2ODliM2E3YzhhM2ZhN2Yx
ZWQxODIzMGIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL2dlbmVy
YXRlLXRlc3Qtd3JhcHBlcnMuanMKKysrIC9kZXYvbnVsbApAQCAtMSw5OSArMCwwIEBACi0idXNl
IHN0cmljdCI7Ci0vLyBVc2FnZTogYG5vZGUgZ2VuZXJhdGUtdGVzdC13cmFwcGVycy5qcyBqcy1m
aWxlbmFtZTEuanMgW2pzLWZpbGVuYW1lMi5qcyAuLi5dYCB3aWxsIGdlbmVyYXRlOgotLy8gLSBq
cy1maWxlbmFtZTEuaHRtbAotLy8gLSBqcy1maWxlbmFtZTEuc2hhcmVkd29ya2VyLmh0bWwKLS8v
IC0ganMtZmlsZW5hbWUxLmRlZGljYXRlZHdvcmtlci5odG1sCi0vLyAtIGpzLWZpbGVuYW1lMS5z
ZXJ2aWNld29ya2VyLmh0dHBzLmh0bWwKLS8vIChmb3IgZWFjaCBwYXNzZWQgZmlsZW5hbWUpCi0v
LwotLy8gSXQgd2lsbCB0dXJuIGFueSBpbXBvcnRTY3JpcHRzIGluc2lkZSB0aGUgLmpzIGZpbGUg
aW50byA8c2NyaXB0PnMgaW4gdGhlIGJyb3dzZXIgY29udGV4dCB3cmFwcGVyLgotLy8KLS8vIFRo
aXMgY291bGQgYmVjb21lIG9ic29sZXRlIGlmIGh0dHBzOi8vZ2l0aHViLmNvbS93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2lzc3Vlcy80MjEwIGdldHMgZml4ZWQsCi0vLyBhbGxvd2luZyAuYW55Lmpz
IHRvIHdvcmsgd2l0aCBhbGwgZm91ciBjb250ZXh0cy4KLQotY29uc3QgZnMgPSByZXF1aXJlKCJm
cyIpOwotY29uc3QgcGF0aCA9IHJlcXVpcmUoInBhdGgiKTsKLQotZm9yIChjb25zdCBhcmcgb2Yg
cHJvY2Vzcy5hcmd2LnNsaWNlKDIpKSB7Ci0gICAgZ2VuZXJhdGVXcmFwcGVyKGFyZyk7Ci19Ci0K
LWZ1bmN0aW9uIGdlbmVyYXRlV3JhcHBlcihqc0ZpbGVuYW1lKSB7Ci0gICAgY29uc3QgaW1wb3J0
ZWRTY3JpcHRGaWxlbmFtZXMgPSBmaW5kSW1wb3J0ZWRTY3JpcHRGaWxlbmFtZXMoanNGaWxlbmFt
ZSk7Ci0gICAgY29uc3QgaW1wb3J0ZWRTY3JpcHRUYWdzID0gaW1wb3J0ZWRTY3JpcHRGaWxlbmFt
ZXMKLSAgICAgICAgLm1hcChmaWxlbmFtZSA9PiBgPHNjcmlwdCBzcmM9IiR7ZmlsZW5hbWV9Ij48
L3NjcmlwdD5gKQotICAgICAgICAuam9pbignXG4nKTsKLQotICAgIGNvbnN0IGJhc2VuYW1lID0g
cGF0aC5iYXNlbmFtZShqc0ZpbGVuYW1lKTsKLSAgICBjb25zdCBub0V4dGVuc2lvbiA9IHBhdGgu
YmFzZW5hbWUoanNGaWxlbmFtZSwgJy5qcycpOwotCi0gICAgY29uc3Qgb3V0cHV0cyA9IHsKLSAg
ICAgICAgJy5odG1sJzogYDwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgot
PHRpdGxlPiR7YmFzZW5hbWV9IGJyb3dzZXIgY29udGV4dCB3cmFwcGVyIGZpbGU8L3RpdGxlPgot
Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2Ny
aXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci0KLSR7
aW1wb3J0ZWRTY3JpcHRUYWdzfQotCi08c2NyaXB0IHNyYz0iJHtiYXNlbmFtZX0iPjwvc2NyaXB0
PgotYCwKLSAgICAgICAgJy5kZWRpY2F0ZWR3b3JrZXIuaHRtbCc6IGA8IURPQ1RZUEUgaHRtbD4K
LTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTx0aXRsZT4ke2Jhc2VuYW1lfSBkZWRpY2F0ZWQgd29y
a2VyIHdyYXBwZXIgZmlsZTwvdGl0bGU+Ci0KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
cmVwb3J0LmpzIj48L3NjcmlwdD4KLQotPHNjcmlwdD4KLSd1c2Ugc3RyaWN0JzsKLWZldGNoX3Rl
c3RzX2Zyb21fd29ya2VyKG5ldyBXb3JrZXIoJyR7YmFzZW5hbWV9JykpOwotPC9zY3JpcHQ+Ci1g
LAotICAgICAgICAnLnNoYXJlZHdvcmtlci5odG1sJzogYDwhRE9DVFlQRSBodG1sPgotPG1ldGEg
Y2hhcnNldD0idXRmLTgiPgotPHRpdGxlPiR7YmFzZW5hbWV9IHNoYXJlZCB3b3JrZXIgd3JhcHBl
ciBmaWxlPC90aXRsZT4KLQotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMi
Pjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMi
Pjwvc2NyaXB0PgotCi08c2NyaXB0PgotJ3VzZSBzdHJpY3QnOwotZmV0Y2hfdGVzdHNfZnJvbV93
b3JrZXIobmV3IFNoYXJlZFdvcmtlcignJHtiYXNlbmFtZX0nKSk7Ci08L3NjcmlwdD4KLWAsCi0g
ICAgICAgICcuc2VydmljZXdvcmtlci5odHRwcy5odG1sJzogYDwhRE9DVFlQRSBodG1sPgotPG1l
dGEgY2hhcnNldD0idXRmLTgiPgotPHRpdGxlPiR7YmFzZW5hbWV9IHNlcnZpY2Ugd29ya2VyIHdy
YXBwZXIgZmlsZTwvdGl0bGU+Ci0KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0
LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29y
a2VyL3Jlc291cmNlcy90ZXN0LWhlbHBlcnMuc3ViLmpzIj48L3NjcmlwdD4KLQotPHNjcmlwdD4K
LSd1c2Ugc3RyaWN0JzsKLXNlcnZpY2Vfd29ya2VyX3Rlc3QoJyR7YmFzZW5hbWV9JywgJ1NlcnZp
Y2Ugd29ya2VyIHRlc3Qgc2V0dXAnKTsKLTwvc2NyaXB0PgotYAotICAgIH07Ci0KLSAgICBmb3Ig
KGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhvdXRwdXRzKSkgewotICAgICAg
ICBjb25zdCBkZXN0RmlsZW5hbWUgPSBwYXRoLnJlc29sdmUocGF0aC5kaXJuYW1lKGpzRmlsZW5h
bWUpLCBgJHtub0V4dGVuc2lvbn0ke2tleX1gKTsKLSAgICAgICAgZnMud3JpdGVGaWxlU3luYyhk
ZXN0RmlsZW5hbWUsIHZhbHVlLCB7IGVuY29kaW5nOiAndXRmLTgnIH0pOwotICAgIH0KLX0KLQot
ZnVuY3Rpb24gZmluZEltcG9ydGVkU2NyaXB0RmlsZW5hbWVzKGlucHV0RmlsZW5hbWUpIHsKLSAg
ICBjb25zdCBzY3JpcHRDb250ZW50cyA9IGZzLnJlYWRGaWxlU3luYyhpbnB1dEZpbGVuYW1lLCB7
IGVuY29kaW5nOiAndXRmLTgnIH0pOwotCi0gICAgY29uc3QgcmVnRXhwID0gL3NlbGZcLmltcG9y
dFNjcmlwdHNcKCcoW14nXSspJ1wpOy9nOwotCi0gICAgbGV0IHJlc3VsdCA9IFtdOwotICAgIGxl
dCBtYXRjaDsKLSAgICB3aGlsZSAobWF0Y2ggPSByZWdFeHAuZXhlYyhzY3JpcHRDb250ZW50cykp
IHsKLSAgICAgICAgcmVzdWx0LnB1c2gobWF0Y2hbMV0pOwotICAgIH0KLQotICAgIHJldHVybiBy
ZXN1bHQuZmlsdGVyKHggPT4geCAhPT0gJy9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMnKTsKLX0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy9pZGxoYXJuZXNzLmFueS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvaWRsaGFybmVzcy5hbnktZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjNhZDZhNjg2NTg0ZGExMmE2MzMzZTg3NzE0ZWM3MjBlZjRkYTE2ZjUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMvaWRsaGFybmVzcy5hbnktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBA
QAorCitGQUlMIGlkbF90ZXN0IHNldHVwIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlv
biB3aXRoIHZhbHVlOiBvYmplY3QgIkVycm9yIGZldGNoaW5nIC9pbnRlcmZhY2VzL3N0cmVhbXMu
aWRsLiIKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zdHJlYW1zL2lkbGhhcm5lc3MuYW55Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvaWRsaGFybmVzcy5hbnkuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4yMzgyOTEzNTI4ZTY5M2IzYTVkNTZjNjYwYTQ1MDYwOTgwYjU0OGMzCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
dHJlYW1zL2lkbGhhcm5lc3MuYW55Lmh0bWwKQEAgLTAsMCArMSBAQAorPCEtLSBUaGlzIGZpbGUg
aXMgcmVxdWlyZWQgZm9yIFdlYktpdCB0ZXN0IGluZnJhc3RydWN0dXJlIHRvIHJ1biB0aGUgdGVt
cGxhdGVkIHRlc3QgLS0+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL2lkbGhh
cm5lc3MuYW55LmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL2lkbGhhcm5lc3MuYW55LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQyYTE3ZGE1OGM1YWUzOTAy
MzRlZTM5NDMwM2FhMmZlNmE3MmViZGQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvaWRsaGFybmVzcy5hbnkuanMK
QEAgLTAsMCArMSw3OSBAQAorLy8gTUVUQTogZ2xvYmFsPXdpbmRvdyx3b3JrZXIKKy8vIE1FVEE6
IHNjcmlwdD0vcmVzb3VyY2VzL1dlYklETFBhcnNlci5qcworLy8gTUVUQTogc2NyaXB0PS9yZXNv
dXJjZXMvaWRsaGFybmVzcy5qcworLy8gTUVUQTogdGltZW91dD1sb25nCisKK2lkbF90ZXN0KAor
ICBbJ3N0cmVhbXMnXSwKKyAgWydkb20nXSwgLy8gZm9yIEFib3J0U2lnbmFsCisgIGFzeW5jIGlk
bF9hcnJheSA9PiB7CisgICAgLy8gRW1wdHkgdHJ5L2NhdGNoZXMgZW5zdXJlIHRoYXQgaWYgc29t
ZXRoaW5nIGlzbid0IGltcGxlbWVudGVkIChlLmcuLCByZWFkYWJsZSBieXRlIHN0cmVhbXMsIG9y
IHdyaXRhYmxlIHN0cmVhbXMpCisgICAgLy8gdGhlIGhhcm5lc3Mgc3RpbGwgc2V0cyB0aGluZ3Mg
dXAgY29ycmVjdGx5LiBOb3RlIHRoYXQgdGhlIGNvcnJlc3BvbmRpbmcgaW50ZXJmYWNlIHRlc3Rz
IHdpbGwgc3RpbGwgZmFpbC4KKworICAgIHRyeSB7CisgICAgICBuZXcgUmVhZGFibGVTdHJlYW0o
eworICAgICAgICBzdGFydChjKSB7CisgICAgICAgICAgc2VsZi5yZWFkYWJsZVN0cmVhbURlZmF1
bHRDb250cm9sbGVyID0gYzsKKyAgICAgICAgfQorICAgICAgfSk7CisgICAgfSBjYXRjaCB7fQor
CisgICAgdHJ5IHsKKyAgICAgIG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgICAgIHN0YXJ0KGMp
IHsKKyAgICAgICAgICBzZWxmLnJlYWRhYmxlQnl0ZVN0cmVhbUNvbnRyb2xsZXIgPSBjOworICAg
ICAgICB9LAorICAgICAgICB0eXBlOiAnYnl0ZXMnCisgICAgICB9KTsKKyAgICB9IGNhdGNoIHt9
CisKKyAgICB0cnkgeworICAgICAgbGV0IHJlc29sdmVQdWxsQ2FsbGVkUHJvbWlzZTsKKyAgICAg
IGNvbnN0IHB1bGxDYWxsZWRQcm9taXNlID0gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7CisgICAg
ICAgIHJlc29sdmVQdWxsQ2FsbGVkUHJvbWlzZSA9IHJlc29sdmU7CisgICAgICB9KTsKKyAgICAg
IGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgICAgIHB1bGwoYykgewor
ICAgICAgICAgIHNlbGYucmVhZGFibGVTdHJlYW1CeW9iUmVxdWVzdCA9IGMuYnlvYlJlcXVlc3Q7
CisgICAgICAgICAgcmVzb2x2ZVB1bGxDYWxsZWRQcm9taXNlKCk7CisgICAgICAgIH0sCisgICAg
ICAgIHR5cGU6ICdieXRlcycKKyAgICAgIH0pOworICAgICAgY29uc3QgcmVhZGVyID0gc3RyZWFt
LmdldFJlYWRlcih7IG1vZGU6ICdieW9iJyB9KTsKKyAgICAgIHJlYWRlci5yZWFkKG5ldyBVaW50
OEFycmF5KDEpKTsKKyAgICAgIGF3YWl0IHB1bGxDYWxsZWRQcm9taXNlOworICAgIH0gY2F0Y2gg
e30KKworICAgIHRyeSB7CisgICAgICBuZXcgV3JpdGFibGVTdHJlYW0oeworICAgICAgICBzdGFy
dChjKSB7CisgICAgICAgICAgc2VsZi53cml0YWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyID0g
YzsKKyAgICAgICAgfQorICAgICAgfSk7CisgICAgfSBjYXRjaCB7fQorCisgICAgdHJ5IHsKKyAg
ICAgIG5ldyBUcmFuc2Zvcm1TdHJlYW0oeworICAgICAgICBzdGFydChjKSB7CisgICAgICAgICAg
c2VsZi50cmFuc2Zvcm1TdHJlYW1EZWZhdWx0Q29udHJvbGxlciA9IGM7CisgICAgICAgIH0KKyAg
ICAgIH0pOworICAgIH0gY2F0Y2gge30KKworICAgIGlkbF9hcnJheS5hZGRfb2JqZWN0cyh7Cisg
ICAgICBSZWFkYWJsZVN0cmVhbTogWyJuZXcgUmVhZGFibGVTdHJlYW0oKSJdLAorICAgICAgUmVh
ZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyOiBbIihuZXcgUmVhZGFibGVTdHJlYW0oKSkuZ2V0UmVh
ZGVyKCkiXSwKKyAgICAgIFJlYWRhYmxlU3RyZWFtQllPQlJlYWRlcjogWyIobmV3IFJlYWRhYmxl
U3RyZWFtKHsgdHlwZTogJ2J5dGVzJyB9KSkuZ2V0UmVhZGVyKHsgbW9kZTogJ2J5b2InIH0pIl0s
CisgICAgICBSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyOiBbInNlbGYucmVhZGFibGVT
dHJlYW1EZWZhdWx0Q29udHJvbGxlciJdLAorICAgICAgUmVhZGFibGVCeXRlU3RyZWFtQ29udHJv
bGxlcjogWyJzZWxmLnJlYWRhYmxlQnl0ZVN0cmVhbUNvbnRyb2xsZXIiXSwKKyAgICAgIFJlYWRh
YmxlU3RyZWFtQllPQlJlcXVlc3Q6IFsic2VsZi5yZWFkYWJsZVN0cmVhbUJ5b2JSZXF1ZXN0Il0s
CisgICAgICBXcml0YWJsZVN0cmVhbTogWyJuZXcgV3JpdGFibGVTdHJlYW0oKSJdLAorICAgICAg
V3JpdGFibGVTdHJlYW1EZWZhdWx0V3JpdGVyOiBbIihuZXcgV3JpdGFibGVTdHJlYW0oKSkuZ2V0
V3JpdGVyKCkiXSwKKyAgICAgIFdyaXRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXI6IFsic2Vs
Zi53cml0YWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyIl0sCisgICAgICBUcmFuc2Zvcm1TdHJl
YW06IFsibmV3IFRyYW5zZm9ybVN0cmVhbSgpIl0sCisgICAgICBUcmFuc2Zvcm1TdHJlYW1EZWZh
dWx0Q29udHJvbGxlcjogWyJzZWxmLnRyYW5zZm9ybVN0cmVhbURlZmF1bHRDb250cm9sbGVyIl0s
CisgICAgICBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5OiBbIm5ldyBCeXRlTGVuZ3RoUXVldWlu
Z1N0cmF0ZWd5KHsgaGlnaFdhdGVyTWFyazogNSB9KSJdLAorICAgICAgQ291bnRRdWV1aW5nU3Ry
YXRlZ3k6IFsibmV3IENvdW50UXVldWluZ1N0cmF0ZWd5KHsgaGlnaFdhdGVyTWFyazogNSB9KSJd
CisgICAgfSk7CisgIH0KKyk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvaWRsaGFybmVzcy5hbnkud29ya2VyLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy9pZGxoYXJuZXNzLmFueS53b3JrZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNhZDZhNjg2
NTg0ZGExMmE2MzMzZTg3NzE0ZWM3MjBlZjRkYTE2ZjUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvaWRsaGFybmVz
cy5hbnkud29ya2VyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKKworRkFJTCBpZGxfdGVz
dCBzZXR1cCBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2Jq
ZWN0ICJFcnJvciBmZXRjaGluZyAvaW50ZXJmYWNlcy9zdHJlYW1zLmlkbC4iCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9p
ZGxoYXJuZXNzLmFueS53b3JrZXIuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9pZGxoYXJuZXNzLmFueS53b3JrZXIuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4yMzgyOTEzNTI4ZTY5M2IzYTVkNTZjNjYwYTQ1MDYwOTgwYjU0OGMzCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJl
YW1zL2lkbGhhcm5lc3MuYW55Lndvcmtlci5odG1sCkBAIC0wLDAgKzEgQEAKKzwhLS0gVGhpcyBm
aWxlIGlzIHJlcXVpcmVkIGZvciBXZWJLaXQgdGVzdCBpbmZyYXN0cnVjdHVyZSB0byBydW4gdGhl
IHRlbXBsYXRlZCB0ZXN0IC0tPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9w
aXBpbmcvYWJvcnQuYW55LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvYWJvcnQuYW55LWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5iZGZmMjM1MDY2MjdjNzU1MDc5ZTk2NDVjZDllOTVjODJmMTQ3ZGY3Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL3BpcGluZy9hYm9ydC5hbnktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNTggQEAK
K0NPTlNPTEUgTUVTU0FHRTogVW5oYW5kbGVkIFByb21pc2UgUmVqZWN0aW9uOiBmYWlsZWQgdG8g
YWJvcnQKK0NPTlNPTEUgTUVTU0FHRTogVW5oYW5kbGVkIFByb21pc2UgUmVqZWN0aW9uOiBUeXBl
RXJyb3I6IGNhbmNlbCgpIGNhbGxlZCBvbiBhIHJlYWRlciBvd25lZCBieSBubyByZWFkYWJsZSBz
dHJlYW0KK0NPTlNPTEUgTUVTU0FHRTogVW5oYW5kbGVkIFByb21pc2UgUmVqZWN0aW9uOiBmYWls
ZWQgdG8gYWJvcnQKK0NPTlNPTEUgTUVTU0FHRTogVW5oYW5kbGVkIFByb21pc2UgUmVqZWN0aW9u
OiBUeXBlRXJyb3I6IGNhbmNlbCgpIGNhbGxlZCBvbiBhIHJlYWRlciBvd25lZCBieSBubyByZWFk
YWJsZSBzdHJlYW0KK0NPTlNPTEUgTUVTU0FHRTogVW5oYW5kbGVkIFByb21pc2UgUmVqZWN0aW9u
OiBmYWlsZWQgdG8gYWJvcnQKK0NPTlNPTEUgTUVTU0FHRTogVW5oYW5kbGVkIFByb21pc2UgUmVq
ZWN0aW9uOiBUeXBlRXJyb3I6IGNhbmNlbCgpIGNhbGxlZCBvbiBhIHJlYWRlciBvd25lZCBieSBu
byByZWFkYWJsZSBzdHJlYW0KK0NPTlNPTEUgTUVTU0FHRTogVW5oYW5kbGVkIFByb21pc2UgUmVq
ZWN0aW9uOiBmYWlsZWQgdG8gYWJvcnQKK0NPTlNPTEUgTUVTU0FHRTogVW5oYW5kbGVkIFByb21p
c2UgUmVqZWN0aW9uOiBUeXBlRXJyb3I6IGNhbmNlbCgpIGNhbGxlZCBvbiBhIHJlYWRlciBvd25l
ZCBieSBubyByZWFkYWJsZSBzdHJlYW0KK0NPTlNPTEUgTUVTU0FHRTogVW5oYW5kbGVkIFByb21p
c2UgUmVqZWN0aW9uOiBmYWlsZWQgdG8gYWJvcnQKK0NPTlNPTEUgTUVTU0FHRTogVW5oYW5kbGVk
IFByb21pc2UgUmVqZWN0aW9uOiBUeXBlRXJyb3I6IGNhbmNlbCgpIGNhbGxlZCBvbiBhIHJlYWRl
ciBvd25lZCBieSBubyByZWFkYWJsZSBzdHJlYW0KK0NPTlNPTEUgTUVTU0FHRTogVW5oYW5kbGVk
IFByb21pc2UgUmVqZWN0aW9uOiBmYWlsZWQgdG8gYWJvcnQKK0NPTlNPTEUgTUVTU0FHRTogVW5o
YW5kbGVkIFByb21pc2UgUmVqZWN0aW9uOiBUeXBlRXJyb3I6IGNhbmNlbCgpIGNhbGxlZCBvbiBh
IHJlYWRlciBvd25lZCBieSBubyByZWFkYWJsZSBzdHJlYW0KK0NPTlNPTEUgTUVTU0FHRTogVW5o
YW5kbGVkIFByb21pc2UgUmVqZWN0aW9uOiBmYWlsZWQgdG8gYWJvcnQKK0NPTlNPTEUgTUVTU0FH
RTogVW5oYW5kbGVkIFByb21pc2UgUmVqZWN0aW9uOiBUeXBlRXJyb3I6IGNhbmNlbCgpIGNhbGxl
ZCBvbiBhIHJlYWRlciBvd25lZCBieSBubyByZWFkYWJsZSBzdHJlYW0KK0NPTlNPTEUgTUVTU0FH
RTogVW5oYW5kbGVkIFByb21pc2UgUmVqZWN0aW9uOiBmYWlsZWQgdG8gYWJvcnQKK0NPTlNPTEUg
TUVTU0FHRTogVW5oYW5kbGVkIFByb21pc2UgUmVqZWN0aW9uOiBmYWlsZWQgdG8gYWJvcnQKK0NP
TlNPTEUgTUVTU0FHRTogVW5oYW5kbGVkIFByb21pc2UgUmVqZWN0aW9uOiBmYWlsZWQgdG8gYWJv
cnQKK0NPTlNPTEUgTUVTU0FHRTogVW5oYW5kbGVkIFByb21pc2UgUmVqZWN0aW9uOiBmYWlsZWQg
dG8gYWJvcnQKK0NPTlNPTEUgTUVTU0FHRTogVW5oYW5kbGVkIFByb21pc2UgUmVqZWN0aW9uOiBm
YWlsZWQgdG8gYWJvcnQKK0NPTlNPTEUgTUVTU0FHRTogVW5oYW5kbGVkIFByb21pc2UgUmVqZWN0
aW9uOiBUeXBlRXJyb3I6IGNhbmNlbCgpIGNhbGxlZCBvbiBhIHJlYWRlciBvd25lZCBieSBubyBy
ZWFkYWJsZSBzdHJlYW0KK0NPTlNPTEUgTUVTU0FHRTogVW5oYW5kbGVkIFByb21pc2UgUmVqZWN0
aW9uOiBmYWlsZWQgdG8gYWJvcnQKK0NPTlNPTEUgTUVTU0FHRTogVW5oYW5kbGVkIFByb21pc2Ug
UmVqZWN0aW9uOiBUeXBlRXJyb3I6IGNhbmNlbCgpIGNhbGxlZCBvbiBhIHJlYWRlciBvd25lZCBi
eSBubyByZWFkYWJsZSBzdHJlYW0KK0NPTlNPTEUgTUVTU0FHRTogVW5oYW5kbGVkIFByb21pc2Ug
UmVqZWN0aW9uOiBlcnJvcjE6IGVycm9yMQorQ09OU09MRSBNRVNTQUdFOiBVbmhhbmRsZWQgUHJv
bWlzZSBSZWplY3Rpb246IGZhaWxlZCB0byBhYm9ydAorQ09OU09MRSBNRVNTQUdFOiBVbmhhbmRs
ZWQgUHJvbWlzZSBSZWplY3Rpb246IFR5cGVFcnJvcjogY2FuY2VsKCkgY2FsbGVkIG9uIGEgcmVh
ZGVyIG93bmVkIGJ5IG5vIHJlYWRhYmxlIHN0cmVhbQorQ09OU09MRSBNRVNTQUdFOiBVbmhhbmRs
ZWQgUHJvbWlzZSBSZWplY3Rpb246IGVycm9yMjogZXJyb3IyCitDT05TT0xFIE1FU1NBR0U6IFVu
aGFuZGxlZCBQcm9taXNlIFJlamVjdGlvbjogVHlwZUVycm9yOiBjYW5jZWwoKSBjYWxsZWQgb24g
YSByZWFkZXIgb3duZWQgYnkgbm8gcmVhZGFibGUgc3RyZWFtCitDT05TT0xFIE1FU1NBR0U6IFVu
aGFuZGxlZCBQcm9taXNlIFJlamVjdGlvbjogZXJyb3IxOiBlcnJvcjEKK0NPTlNPTEUgTUVTU0FH
RTogVW5oYW5kbGVkIFByb21pc2UgUmVqZWN0aW9uOiBlcnJvcjE6IGVycm9yMQorQ09OU09MRSBN
RVNTQUdFOiBVbmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rpb246IGVycm9yMTogZXJyb3IxCitDT05T
T0xFIE1FU1NBR0U6IFVuaGFuZGxlZCBQcm9taXNlIFJlamVjdGlvbjogZXJyb3IxOiBlcnJvcjEK
KworSGFybmVzcyBFcnJvciAoRkFJTCksIG1lc3NhZ2UgPSBVbmhhbmRsZWQgcmVqZWN0aW9uOiBl
cnJvcjEKKworRkFJTCBhIHNpZ25hbCBhcmd1bWVudCAnbnVsbCcgc2hvdWxkIGNhdXNlIHBpcGVU
bygpIHRvIHJlamVjdCBwcm9taXNlX3JlamVjdHNfanM6IHBpcGVUbyBzaG91bGQgcmVqZWN0IGZ1
bmN0aW9uICJmdW5jdGlvbiAoKSB7IHRocm93IGUgfSIgdGhyZXcgImZhaWxlZCB0byBhYm9ydCIg
d2l0aCB0eXBlICJzdHJpbmciLCBub3QgYW4gb2JqZWN0CitGQUlMIGEgc2lnbmFsIGFyZ3VtZW50
ICdBYm9ydFNpZ25hbCcgc2hvdWxkIGNhdXNlIHBpcGVUbygpIHRvIHJlamVjdCBwcm9taXNlX3Jl
amVjdHNfanM6IHBpcGVUbyBzaG91bGQgcmVqZWN0IGZ1bmN0aW9uICJmdW5jdGlvbiAoKSB7IHRo
cm93IGUgfSIgdGhyZXcgImZhaWxlZCB0byBhYm9ydCIgd2l0aCB0eXBlICJzdHJpbmciLCBub3Qg
YW4gb2JqZWN0CitGQUlMIGEgc2lnbmFsIGFyZ3VtZW50ICd0cnVlJyBzaG91bGQgY2F1c2UgcGlw
ZVRvKCkgdG8gcmVqZWN0IHByb21pc2VfcmVqZWN0c19qczogcGlwZVRvIHNob3VsZCByZWplY3Qg
ZnVuY3Rpb24gImZ1bmN0aW9uICgpIHsgdGhyb3cgZSB9IiB0aHJldyAiZmFpbGVkIHRvIGFib3J0
IiB3aXRoIHR5cGUgInN0cmluZyIsIG5vdCBhbiBvYmplY3QKK0ZBSUwgYSBzaWduYWwgYXJndW1l
bnQgJy0xJyBzaG91bGQgY2F1c2UgcGlwZVRvKCkgdG8gcmVqZWN0IHByb21pc2VfcmVqZWN0c19q
czogcGlwZVRvIHNob3VsZCByZWplY3QgZnVuY3Rpb24gImZ1bmN0aW9uICgpIHsgdGhyb3cgZSB9
IiB0aHJldyAiZmFpbGVkIHRvIGFib3J0IiB3aXRoIHR5cGUgInN0cmluZyIsIG5vdCBhbiBvYmpl
Y3QKK0ZBSUwgYSBzaWduYWwgYXJndW1lbnQgJ1tvYmplY3QgQWJvcnRTaWduYWxdJyBzaG91bGQg
Y2F1c2UgcGlwZVRvKCkgdG8gcmVqZWN0IHByb21pc2VfcmVqZWN0c19qczogcGlwZVRvIHNob3Vs
ZCByZWplY3QgZnVuY3Rpb24gImZ1bmN0aW9uICgpIHsgdGhyb3cgZSB9IiB0aHJldyAiZmFpbGVk
IHRvIGFib3J0IiB3aXRoIHR5cGUgInN0cmluZyIsIG5vdCBhbiBvYmplY3QKK0ZBSUwgYW4gYWJv
cnRlZCBzaWduYWwgc2hvdWxkIGNhdXNlIHRoZSB3cml0YWJsZSBzdHJlYW0gdG8gcmVqZWN0IHdp
dGggYW4gQWJvcnRFcnJvciBwcm9taXNlX3JlamVjdHNfZG9tOiBwaXBlVG8gc2hvdWxkIHJlamVj
dCBmdW5jdGlvbiAiZnVuY3Rpb24gKCkgeyB0aHJvdyBlIH0iIHRocmV3ICJmYWlsZWQgdG8gYWJv
cnQiIHdpdGggdHlwZSAic3RyaW5nIiwgbm90IGFuIG9iamVjdAorRkFJTCBhbGwgdGhlIEFib3J0
RXJyb3Igb2JqZWN0cyBzaG91bGQgYmUgdGhlIHNhbWUgb2JqZWN0IHByb21pc2VfdGVzdDogVW5o
YW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVFcnJvcjogd3MuZ2V0V3Jp
dGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRl
cicgaXMgdW5kZWZpbmVkKSIKK0ZBSUwgcHJldmVudENhbmNlbCBzaG91bGQgcHJldmVudCBjYW5j
ZWxpbmcgdGhlIHJlYWRhYmxlIHByb21pc2VfcmVqZWN0c19kb206IHBpcGVUbyBzaG91bGQgcmVq
ZWN0IGZ1bmN0aW9uICJmdW5jdGlvbiAoKSB7IHRocm93IGUgfSIgdGhyZXcgImZhaWxlZCB0byBh
Ym9ydCIgd2l0aCB0eXBlICJzdHJpbmciLCBub3QgYW4gb2JqZWN0CitGQUlMIHByZXZlbnRBYm9y
dCBzaG91bGQgcHJldmVudCBhYm9ydGluZyB0aGUgcmVhZGFibGUgcHJvbWlzZV9yZWplY3RzX2Rv
bTogcGlwZVRvIHNob3VsZCByZWplY3QgZnVuY3Rpb24gImZ1bmN0aW9uICgpIHsgdGhyb3cgZSB9
IiB0aHJldyAiZmFpbGVkIHRvIGFib3J0IiB3aXRoIHR5cGUgInN0cmluZyIsIG5vdCBhbiBvYmpl
Y3QKK0ZBSUwgcHJldmVudENhbmNlbCBhbmQgcHJldmVudEFib3J0IHNob3VsZCBwcmV2ZW50IGNh
bmNlbGluZyB0aGUgcmVhZGFibGUgYW5kIGFib3J0aW5nIHRoZSByZWFkYWJsZSBwcm9taXNlX3Jl
amVjdHNfZG9tOiBwaXBlVG8gc2hvdWxkIHJlamVjdCBmdW5jdGlvbiAiZnVuY3Rpb24gKCkgeyB0
aHJvdyBlIH0iIHRocmV3ICJmYWlsZWQgdG8gYWJvcnQiIHdpdGggdHlwZSAic3RyaW5nIiwgbm90
IGFuIG9iamVjdAorRkFJTCBhYm9ydCBzaG91bGQgcHJldmVudCBmdXJ0aGVyIHJlYWRzIGFzc2Vy
dF91bnJlYWNoZWQ6IFNob3VsZCBoYXZlIHJlamVjdGVkOiBwaXBlVG8gc2hvdWxkIHJlamVjdCBS
ZWFjaGVkIHVucmVhY2hhYmxlIGNvZGUKK0ZBSUwgYWxsIHBlbmRpbmcgd3JpdGVzIHNob3VsZCBj
b21wbGV0ZSBvbiBhYm9ydCBhc3NlcnRfdW5yZWFjaGVkOiBTaG91bGQgaGF2ZSByZWplY3RlZDog
cGlwZVRvIHNob3VsZCByZWplY3QgUmVhY2hlZCB1bnJlYWNoYWJsZSBjb2RlCitGQUlMIGEgcmVq
ZWN0aW9uIGZyb20gdW5kZXJseWluZ1NvdXJjZS5jYW5jZWwoKSBzaG91bGQgYmUgcmV0dXJuZWQg
YnkgcGlwZVRvKCkgcHJvbWlzZV9yZWplY3RzX2V4YWN0bHk6IHBpcGVUbyBzaG91bGQgcmVqZWN0
IGZ1bmN0aW9uICJmdW5jdGlvbiAoKSB7IHRocm93IGUgfSIgdGhyZXcgImZhaWxlZCB0byBhYm9y
dCIgYnV0IHdlIGV4cGVjdGVkIGl0IHRvIHRocm93IG9iamVjdCAiZXJyb3IxOiBlcnJvcjEiCitG
QUlMIGEgcmVqZWN0aW9uIGZyb20gdW5kZXJseWluZ1NpbmsuYWJvcnQoKSBzaG91bGQgYmUgcmV0
dXJuZWQgYnkgcGlwZVRvKCkgcHJvbWlzZV9yZWplY3RzX2V4YWN0bHk6IHBpcGVUbyBzaG91bGQg
cmVqZWN0IGZ1bmN0aW9uICJmdW5jdGlvbiAoKSB7IHRocm93IGUgfSIgdGhyZXcgImZhaWxlZCB0
byBhYm9ydCIgYnV0IHdlIGV4cGVjdGVkIGl0IHRvIHRocm93IG9iamVjdCAiZXJyb3IxOiBlcnJv
cjEiCitGQUlMIGEgcmVqZWN0aW9uIGZyb20gdW5kZXJseWluZ1NpbmsuYWJvcnQoKSBzaG91bGQg
YmUgcHJlZmVycmVkIHRvIG9uZSBmcm9tIHVuZGVybHlpbmdTb3VyY2UuY2FuY2VsKCkgcHJvbWlz
ZV9yZWplY3RzX2V4YWN0bHk6IHBpcGVUbyBzaG91bGQgcmVqZWN0IGZ1bmN0aW9uICJmdW5jdGlv
biAoKSB7IHRocm93IGUgfSIgdGhyZXcgImZhaWxlZCB0byBhYm9ydCIgYnV0IHdlIGV4cGVjdGVk
IGl0IHRvIHRocm93IG9iamVjdCAiZXJyb3IyOiBlcnJvcjIiCitGQUlMIGFib3J0IHNpZ25hbCB0
YWtlcyBwcmlvcml0eSBvdmVyIGNsb3NlZCByZWFkYWJsZSBhc3NlcnRfdW5yZWFjaGVkOiBTaG91
bGQgaGF2ZSByZWplY3RlZDogcGlwZVRvIHNob3VsZCByZWplY3QgUmVhY2hlZCB1bnJlYWNoYWJs
ZSBjb2RlCitGQUlMIGFib3J0IHNpZ25hbCB0YWtlcyBwcmlvcml0eSBvdmVyIGVycm9yZWQgcmVh
ZGFibGUgcHJvbWlzZV9yZWplY3RzX2RvbTogcGlwZVRvIHNob3VsZCByZWplY3QgZnVuY3Rpb24g
ImZ1bmN0aW9uICgpIHsgdGhyb3cgZSB9IiB0aHJldyBvYmplY3QgImVycm9yMTogZXJyb3IxIiB0
aGF0IGlzIG5vdCBhIERPTUV4Y2VwdGlvbiBBYm9ydEVycm9yOiBwcm9wZXJ0eSAiY29kZSIgaXMg
ZXF1YWwgdG8gdW5kZWZpbmVkLCBleHBlY3RlZCAyMAorRkFJTCBhYm9ydCBzaWduYWwgdGFrZXMg
cHJpb3JpdHkgb3ZlciBjbG9zZWQgd3JpdGFibGUgd3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0
aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicgaXMgdW5kZWZpbmVkKQor
RkFJTCBhYm9ydCBzaWduYWwgdGFrZXMgcHJpb3JpdHkgb3ZlciBlcnJvcmVkIHdyaXRhYmxlIGNv
bnRyb2xsZXIuZXJyb3IgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnY29udHJvbGxlci5lcnJvcihl
cnJvcjEpJywgJ2NvbnRyb2xsZXIuZXJyb3InIGlzIHVuZGVmaW5lZCkKK0ZBSUwgYWJvcnQgc2hv
dWxkIGRvIG5vdGhpbmcgYWZ0ZXIgdGhlIHJlYWRhYmxlIGlzIGNsb3NlZCBwcm9taXNlX3Rlc3Q6
IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJUeXBlRXJyb3I6IHdzLmdl
dFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRX
cml0ZXInIGlzIHVuZGVmaW5lZCkiCitGQUlMIGFib3J0IHNob3VsZCBkbyBub3RoaW5nIGFmdGVy
IHRoZSByZWFkYWJsZSBpcyBlcnJvcmVkIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlv
biB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVFcnJvcjogd3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1
bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicgaXMgdW5kZWZpbmVk
KSIKK0ZBSUwgYWJvcnQgc2hvdWxkIGRvIG5vdGhpbmcgYWZ0ZXIgdGhlIHJlYWRhYmxlIGlzIGVy
cm9yZWQsIGV2ZW4gd2l0aCBwZW5kaW5nIHdyaXRlcyBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCBy
ZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJUeXBlRXJyb3I6IHdzLmdldFdyaXRlciBpcyBu
b3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVu
ZGVmaW5lZCkiCitGQUlMIGFib3J0IHNob3VsZCBkbyBub3RoaW5nIGFmdGVyIHRoZSB3cml0YWJs
ZSBpcyBlcnJvcmVkIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVl
OiBvYmplY3QgIlR5cGVFcnJvcjogd3JpdGVDb250cm9sbGVyLmVycm9yIGlzIG5vdCBhIGZ1bmN0
aW9uLiAoSW4gJ3dyaXRlQ29udHJvbGxlci5lcnJvcihlcnJvcjEpJywgJ3dyaXRlQ29udHJvbGxl
ci5lcnJvcicgaXMgdW5kZWZpbmVkKSIKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9hYm9ydC5hbnkuaHRtbCBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBp
bmcvYWJvcnQuYW55Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjM4MjkxMzUyOGU2OTNiM2E1ZDU2YzY2MGE0
NTA2MDk4MGI1NDhjMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvYWJvcnQuYW55Lmh0bWwKQEAgLTAs
MCArMSBAQAorPCEtLSBUaGlzIGZpbGUgaXMgcmVxdWlyZWQgZm9yIFdlYktpdCB0ZXN0IGluZnJh
c3RydWN0dXJlIHRvIHJ1biB0aGUgdGVtcGxhdGVkIHRlc3QgLS0+ClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9hYm9ydC5hbnkuanMgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Fib3J0LmFueS5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4zZmUwMjlkZTk1YTFiODkyMWUzOGI0ZjcyNTViZTNjNTZkMDA3ZTQ1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL3BpcGluZy9hYm9ydC5hbnkuanMKQEAgLTAsMCArMSwzNzUgQEAKKy8vIE1FVEE6
IGdsb2JhbD13aW5kb3csd29ya2VyLGpzc2hlbGwKKy8vIE1FVEE6IHNjcmlwdD0uLi9yZXNvdXJj
ZXMvcmVjb3JkaW5nLXN0cmVhbXMuanMKKy8vIE1FVEE6IHNjcmlwdD0uLi9yZXNvdXJjZXMvdGVz
dC11dGlscy5qcworJ3VzZSBzdHJpY3QnOworCisvLyBUZXN0cyBmb3IgdGhlIHVzZSBvZiBwaXBl
VG8gd2l0aCBBYm9ydFNpZ25hbC4KKy8vIFRoZXJlIGlzIHNvbWUgZXh0cmEgY29tcGxleGl0eSB0
byBhdm9pZCB0aW1lb3V0cyBpbiBlbnZpcm9ubWVudHMgd2hlcmUgYWJvcnQgaXMgbm90IGltcGxl
bWVudGVkLgorCitjb25zdCBlcnJvcjEgPSBuZXcgRXJyb3IoJ2Vycm9yMScpOworZXJyb3IxLm5h
bWUgPSAnZXJyb3IxJzsKK2NvbnN0IGVycm9yMiA9IG5ldyBFcnJvcignZXJyb3IyJyk7CitlcnJv
cjIubmFtZSA9ICdlcnJvcjInOworCitjb25zdCBlcnJvck9uUHVsbCA9IHsKKyAgcHVsbChjb250
cm9sbGVyKSB7CisgICAgLy8gVGhpcyB3aWxsIGNhdXNlIHRoZSB0ZXN0IHRvIGVycm9yIGlmIHBp
cGVUbyBhYm9ydCBpcyBub3QgaW1wbGVtZW50ZWQuCisgICAgY29udHJvbGxlci5lcnJvcignZmFp
bGVkIHRvIGFib3J0Jyk7CisgIH0KK307CisKKy8vIFRvIHN0b3AgcHVsbCgpIGJlaW5nIGNhbGxl
ZCBpbW1lZGlhdGVseSB3aGVuIHRoZSBzdHJlYW0gaXMgY3JlYXRlZCwgd2UgbmVlZCB0byBzZXQg
aGlnaFdhdGVyTWFyayB0byAwLgorY29uc3QgaHdtMCA9IHsgaGlnaFdhdGVyTWFyazogMCB9Owor
Citmb3IgKGNvbnN0IGludmFsaWRTaWduYWwgb2YgW251bGwsICdBYm9ydFNpZ25hbCcsIHRydWUs
IC0xLCBPYmplY3QuY3JlYXRlKEFib3J0U2lnbmFsLnByb3RvdHlwZSldKSB7CisgIHByb21pc2Vf
dGVzdCh0ID0+IHsKKyAgICBjb25zdCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKGVycm9y
T25QdWxsLCBod20wKTsKKyAgICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKCk7
CisgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19qcyh0LCBUeXBlRXJyb3IsIHJzLnBpcGVUbyh3
cywgeyBzaWduYWw6IGludmFsaWRTaWduYWwgfSksICdwaXBlVG8gc2hvdWxkIHJlamVjdCcpCisg
ICAgICAgIC50aGVuKCgpID0+IHsKKyAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJzLmV2ZW50cy5s
ZW5ndGgsIDAsICdubyBSZWFkYWJsZVN0cmVhbSBtZXRob2RzIHNob3VsZCBoYXZlIGJlZW4gY2Fs
bGVkJyk7CisgICAgICAgICAgYXNzZXJ0X2VxdWFscyh3cy5ldmVudHMubGVuZ3RoLCAwLCAnbm8g
V3JpdGFibGVTdHJlYW0gbWV0aG9kcyBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCcpOworICAgICAg
ICB9KTsKKyAgfSwgYGEgc2lnbmFsIGFyZ3VtZW50ICcke2ludmFsaWRTaWduYWx9JyBzaG91bGQg
Y2F1c2UgcGlwZVRvKCkgdG8gcmVqZWN0YCk7Cit9CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAg
Y29uc3QgcnMgPSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbShlcnJvck9uUHVsbCwgaHdtMCk7Cisg
IGNvbnN0IHdzID0gbmV3IFdyaXRhYmxlU3RyZWFtKCk7CisgIGNvbnN0IGFib3J0Q29udHJvbGxl
ciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTsKKyAgY29uc3Qgc2lnbmFsID0gYWJvcnRDb250cm9s
bGVyLnNpZ25hbDsKKyAgYWJvcnRDb250cm9sbGVyLmFib3J0KCk7CisgIHJldHVybiBwcm9taXNl
X3JlamVjdHNfZG9tKHQsICdBYm9ydEVycm9yJywgcnMucGlwZVRvKHdzLCB7IHNpZ25hbCB9KSwg
J3BpcGVUbyBzaG91bGQgcmVqZWN0JykKKyAgICAgIC50aGVuKCgpID0+IFByb21pc2UuYWxsKFsK
KyAgICAgICAgcnMuZ2V0UmVhZGVyKCkuY2xvc2VkLAorICAgICAgICBwcm9taXNlX3JlamVjdHNf
ZG9tKHQsICdBYm9ydEVycm9yJywgd3MuZ2V0V3JpdGVyKCkuY2xvc2VkLCAnd3JpdGVyLmNsb3Nl
ZCBzaG91bGQgcmVqZWN0JykKKyAgICAgIF0pKQorICAgICAgLnRoZW4oKCkgPT4geworICAgICAg
ICBhc3NlcnRfZXF1YWxzKHJzLmV2ZW50cy5sZW5ndGgsIDIsICdjYW5jZWwgc2hvdWxkIGhhdmUg
YmVlbiBjYWxsZWQnKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhycy5ldmVudHNbMF0sICdjYW5j
ZWwnLCAnZmlyc3QgZXZlbnQgc2hvdWxkIGJlIGNhbmNlbCcpOworICAgICAgICBhc3NlcnRfZXF1
YWxzKHJzLmV2ZW50c1sxXS5uYW1lLCAnQWJvcnRFcnJvcicsICd0aGUgYXJndW1lbnQgdG8gY2Fu
Y2VsIHNob3VsZCBiZSBhbiBBYm9ydEVycm9yJyk7CisgICAgICAgIGFzc2VydF9lcXVhbHMocnMu
ZXZlbnRzWzFdLmNvbnN0cnVjdG9yLm5hbWUsICdET01FeGNlcHRpb24nLAorICAgICAgICAgICAg
ICAgICAgICAgICd0aGUgYXJndW1lbnQgdG8gY2FuY2VsIHNob3VsZCBiZSBhIERPTUV4Y2VwdGlv
bicpOworICAgICAgfSk7Cit9LCAnYW4gYWJvcnRlZCBzaWduYWwgc2hvdWxkIGNhdXNlIHRoZSB3
cml0YWJsZSBzdHJlYW0gdG8gcmVqZWN0IHdpdGggYW4gQWJvcnRFcnJvcicpOworCitwcm9taXNl
X3Rlc3QoKCkgPT4geworICBsZXQgZXJyb3I7CisgIGNvbnN0IHJzID0gcmVjb3JkaW5nUmVhZGFi
bGVTdHJlYW0oZXJyb3JPblB1bGwsIGh3bTApOworICBjb25zdCB3cyA9IG5ldyBXcml0YWJsZVN0
cmVhbSgpOworICBjb25zdCBhYm9ydENvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7
CisgIGNvbnN0IHNpZ25hbCA9IGFib3J0Q29udHJvbGxlci5zaWduYWw7CisgIGFib3J0Q29udHJv
bGxlci5hYm9ydCgpOworICByZXR1cm4gcnMucGlwZVRvKHdzLCB7IHNpZ25hbCB9KQorICAgICAg
LmNhdGNoKGUgPT4geworICAgICAgICBlcnJvciA9IGU7CisgICAgICB9KQorICAgICAgLnRoZW4o
KCkgPT4gUHJvbWlzZS5hbGwoWworICAgICAgICBycy5nZXRSZWFkZXIoKS5jbG9zZWQsCisgICAg
ICAgIHdzLmdldFdyaXRlcigpLmNsb3NlZC5jYXRjaChlID0+IHsKKyAgICAgICAgICBhc3NlcnRf
ZXF1YWxzKGUsIGVycm9yLCAndGhlIHdyaXRhYmxlIHNob3VsZCBiZSBlcnJvcmVkIHdpdGggdGhl
IHNhbWUgb2JqZWN0Jyk7CisgICAgICAgIH0pCisgICAgICBdKSkKKyAgLnRoZW4oKCkgPT4gewor
ICAgIGFzc2VydF9lcXVhbHMocnMuZXZlbnRzLmxlbmd0aCwgMiwgJ2NhbmNlbCBzaG91bGQgaGF2
ZSBiZWVuIGNhbGxlZCcpOworICAgIGFzc2VydF9lcXVhbHMocnMuZXZlbnRzWzBdLCAnY2FuY2Vs
JywgJ2ZpcnN0IGV2ZW50IHNob3VsZCBiZSBjYW5jZWwnKTsKKyAgICBhc3NlcnRfZXF1YWxzKHJz
LmV2ZW50c1sxXSwgZXJyb3IsICd0aGUgcmVhZGFibGUgc2hvdWxkIGJlIGNhbmNlbGVkIHdpdGgg
dGhlIHNhbWUgb2JqZWN0Jyk7CisgIH0pOworfSwgJ2FsbCB0aGUgQWJvcnRFcnJvciBvYmplY3Rz
IHNob3VsZCBiZSB0aGUgc2FtZSBvYmplY3QnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBj
b25zdCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKGVycm9yT25QdWxsLCBod20wKTsKKyAg
Y29uc3Qgd3MgPSBuZXcgV3JpdGFibGVTdHJlYW0oKTsKKyAgY29uc3QgYWJvcnRDb250cm9sbGVy
ID0gbmV3IEFib3J0Q29udHJvbGxlcigpOworICBjb25zdCBzaWduYWwgPSBhYm9ydENvbnRyb2xs
ZXIuc2lnbmFsOworICBhYm9ydENvbnRyb2xsZXIuYWJvcnQoKTsKKyAgcmV0dXJuIHByb21pc2Vf
cmVqZWN0c19kb20odCwgJ0Fib3J0RXJyb3InLCBycy5waXBlVG8od3MsIHsgc2lnbmFsLCBwcmV2
ZW50Q2FuY2VsOiB0cnVlIH0pLCAncGlwZVRvIHNob3VsZCByZWplY3QnKQorICAgICAgLnRoZW4o
KCkgPT4gYXNzZXJ0X2VxdWFscyhycy5ldmVudHMubGVuZ3RoLCAwLCAnY2FuY2VsIHNob3VsZCBu
b3QgYmUgY2FsbGVkJykpOworfSwgJ3ByZXZlbnRDYW5jZWwgc2hvdWxkIHByZXZlbnQgY2FuY2Vs
aW5nIHRoZSByZWFkYWJsZScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIGNvbnN0IHJzID0g
bmV3IFJlYWRhYmxlU3RyZWFtKGVycm9yT25QdWxsLCBod20wKTsKKyAgY29uc3Qgd3MgPSByZWNv
cmRpbmdXcml0YWJsZVN0cmVhbSgpOworICBjb25zdCBhYm9ydENvbnRyb2xsZXIgPSBuZXcgQWJv
cnRDb250cm9sbGVyKCk7CisgIGNvbnN0IHNpZ25hbCA9IGFib3J0Q29udHJvbGxlci5zaWduYWw7
CisgIGFib3J0Q29udHJvbGxlci5hYm9ydCgpOworICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2Rv
bSh0LCAnQWJvcnRFcnJvcicsIHJzLnBpcGVUbyh3cywgeyBzaWduYWwsIHByZXZlbnRBYm9ydDog
dHJ1ZSB9KSwgJ3BpcGVUbyBzaG91bGQgcmVqZWN0JykKKyAgICAgIC50aGVuKCgpID0+IHsKKyAg
ICAgICAgYXNzZXJ0X2VxdWFscyh3cy5ldmVudHMubGVuZ3RoLCAwLCAnd3JpdGFibGUgc2hvdWxk
IG5vdCBoYXZlIGJlZW4gYWJvcnRlZCcpOworICAgICAgICByZXR1cm4gd3MuZ2V0V3JpdGVyKCku
cmVhZHk7CisgICAgICB9KTsKK30sICdwcmV2ZW50QWJvcnQgc2hvdWxkIHByZXZlbnQgYWJvcnRp
bmcgdGhlIHJlYWRhYmxlJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgY29uc3QgcnMgPSBy
ZWNvcmRpbmdSZWFkYWJsZVN0cmVhbShlcnJvck9uUHVsbCwgaHdtMCk7CisgIGNvbnN0IHdzID0g
cmVjb3JkaW5nV3JpdGFibGVTdHJlYW0oKTsKKyAgY29uc3QgYWJvcnRDb250cm9sbGVyID0gbmV3
IEFib3J0Q29udHJvbGxlcigpOworICBjb25zdCBzaWduYWwgPSBhYm9ydENvbnRyb2xsZXIuc2ln
bmFsOworICBhYm9ydENvbnRyb2xsZXIuYWJvcnQoKTsKKyAgcmV0dXJuIHByb21pc2VfcmVqZWN0
c19kb20odCwgJ0Fib3J0RXJyb3InLCBycy5waXBlVG8od3MsIHsgc2lnbmFsLCBwcmV2ZW50Q2Fu
Y2VsOiB0cnVlLCBwcmV2ZW50QWJvcnQ6IHRydWUgfSksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgJ3BpcGVUbyBzaG91bGQgcmVqZWN0JykKKyAgICAudGhlbigoKSA9PiB7CisgICAgICBhc3Nl
cnRfZXF1YWxzKHJzLmV2ZW50cy5sZW5ndGgsIDAsICdjYW5jZWwgc2hvdWxkIG5vdCBiZSBjYWxs
ZWQnKTsKKyAgICAgIGFzc2VydF9lcXVhbHMod3MuZXZlbnRzLmxlbmd0aCwgMCwgJ3dyaXRhYmxl
IHNob3VsZCBub3QgaGF2ZSBiZWVuIGFib3J0ZWQnKTsKKyAgICAgIHJldHVybiB3cy5nZXRXcml0
ZXIoKS5yZWFkeTsKKyAgICB9KTsKK30sICdwcmV2ZW50Q2FuY2VsIGFuZCBwcmV2ZW50QWJvcnQg
c2hvdWxkIHByZXZlbnQgY2FuY2VsaW5nIHRoZSByZWFkYWJsZSBhbmQgYWJvcnRpbmcgdGhlIHJl
YWRhYmxlJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFi
bGVTdHJlYW0oeworICAgIHN0YXJ0KGNvbnRyb2xsZXIpIHsKKyAgICAgIGNvbnRyb2xsZXIuZW5x
dWV1ZSgnYScpOworICAgICAgY29udHJvbGxlci5lbnF1ZXVlKCdiJyk7CisgICAgICBjb250cm9s
bGVyLmNsb3NlKCk7CisgICAgfQorICB9KTsKKyAgY29uc3QgYWJvcnRDb250cm9sbGVyID0gbmV3
IEFib3J0Q29udHJvbGxlcigpOworICBjb25zdCBzaWduYWwgPSBhYm9ydENvbnRyb2xsZXIuc2ln
bmFsOworICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKHsKKyAgICB3cml0ZSgp
IHsKKyAgICAgIGFib3J0Q29udHJvbGxlci5hYm9ydCgpOworICAgIH0KKyAgfSk7CisgIHJldHVy
biBwcm9taXNlX3JlamVjdHNfZG9tKHQsICdBYm9ydEVycm9yJywgcnMucGlwZVRvKHdzLCB7IHNp
Z25hbCB9KSwgJ3BpcGVUbyBzaG91bGQgcmVqZWN0JykKKyAgICAgIC50aGVuKCgpID0+IHsKKyAg
ICAgICAgYXNzZXJ0X2VxdWFscyh3cy5ldmVudHMubGVuZ3RoLCA0LCAnb25seSBjaHVuayAiYSIg
c2hvdWxkIGhhdmUgYmVlbiB3cml0dGVuJyk7CisgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMo
d3MuZXZlbnRzLnNsaWNlKDAsIDMpLCBbJ3dyaXRlJywgJ2EnLCAnYWJvcnQnXSwgJ2V2ZW50cyBz
aG91bGQgbWF0Y2gnKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyh3cy5ldmVudHNbM10ubmFtZSwg
J0Fib3J0RXJyb3InLCAnYWJvcnQgcmVhc29uIHNob3VsZCBiZSBhbiBBYm9ydEVycm9yJyk7Cisg
ICAgICB9KTsKK30sICdhYm9ydCBzaG91bGQgcHJldmVudCBmdXJ0aGVyIHJlYWRzJyk7CisKK3By
b21pc2VfdGVzdCh0ID0+IHsKKyAgbGV0IHJlYWRDb250cm9sbGVyOworICBjb25zdCBycyA9IG5l
dyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgcmVhZENvbnRyb2xsZXIg
PSBjOworICAgICAgYy5lbnF1ZXVlKCdhJyk7CisgICAgICBjLmVucXVldWUoJ2InKTsKKyAgICB9
CisgIH0pOworICBjb25zdCBhYm9ydENvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7
CisgIGNvbnN0IHNpZ25hbCA9IGFib3J0Q29udHJvbGxlci5zaWduYWw7CisgIGxldCByZXNvbHZl
V3JpdGU7CisgIGNvbnN0IHdyaXRlUHJvbWlzZSA9IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gewor
ICAgIHJlc29sdmVXcml0ZSA9IHJlc29sdmU7CisgIH0pOworICBjb25zdCB3cyA9IHJlY29yZGlu
Z1dyaXRhYmxlU3RyZWFtKHsKKyAgICB3cml0ZSgpIHsKKyAgICAgIHJldHVybiB3cml0ZVByb21p
c2U7CisgICAgfQorICB9LCBuZXcgQ291bnRRdWV1aW5nU3RyYXRlZ3koeyBoaWdoV2F0ZXJNYXJr
OiBJbmZpbml0eSB9KSk7CisgIGNvbnN0IHBpcGVUb1Byb21pc2UgPSBycy5waXBlVG8od3MsIHsg
c2lnbmFsIH0pOworICByZXR1cm4gZGVsYXkoMCkudGhlbigoKSA9PiB7CisgICAgYWJvcnRDb250
cm9sbGVyLmFib3J0KCk7CisgICAgcmVhZENvbnRyb2xsZXIuY2xvc2UoKTsgLy8gTWFrZSBzdXJl
IHRoZSB0ZXN0IHRlcm1pbmF0ZXMgd2hlbiBzaWduYWwgaXMgbm90IGltcGxlbWVudGVkLgorICAg
IHJlc29sdmVXcml0ZSgpOworICAgIHJldHVybiBwcm9taXNlX3JlamVjdHNfZG9tKHQsICdBYm9y
dEVycm9yJywgcGlwZVRvUHJvbWlzZSwgJ3BpcGVUbyBzaG91bGQgcmVqZWN0Jyk7CisgIH0pLnRo
ZW4oKCkgPT4geworICAgIGFzc2VydF9lcXVhbHMod3MuZXZlbnRzLmxlbmd0aCwgNiwgJ2NodW5r
cyAiYSIgYW5kICJiIiBzaG91bGQgaGF2ZSBiZWVuIHdyaXR0ZW4nKTsKKyAgICBhc3NlcnRfYXJy
YXlfZXF1YWxzKHdzLmV2ZW50cy5zbGljZSgwLCA1KSwgWyd3cml0ZScsICdhJywgJ3dyaXRlJywg
J2InLCAnYWJvcnQnXSwgJ2V2ZW50cyBzaG91bGQgbWF0Y2gnKTsKKyAgICBhc3NlcnRfZXF1YWxz
KHdzLmV2ZW50c1s1XS5uYW1lLCAnQWJvcnRFcnJvcicsICdhYm9ydCByZWFzb24gc2hvdWxkIGJl
IGFuIEFib3J0RXJyb3InKTsKKyAgfSk7Cit9LCAnYWxsIHBlbmRpbmcgd3JpdGVzIHNob3VsZCBj
b21wbGV0ZSBvbiBhYm9ydCcpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIGNvbnN0IHJzID0g
bmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBwdWxsKGNvbnRyb2xsZXIpIHsKKyAgICAgIGNvbnRy
b2xsZXIuZXJyb3IoJ2ZhaWxlZCB0byBhYm9ydCcpOworICAgIH0sCisgICAgY2FuY2VsKCkgewor
ICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yMSk7CisgICAgfQorICB9LCBod20wKTsK
KyAgY29uc3Qgd3MgPSBuZXcgV3JpdGFibGVTdHJlYW0oKTsKKyAgY29uc3QgYWJvcnRDb250cm9s
bGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpOworICBjb25zdCBzaWduYWwgPSBhYm9ydENvbnRy
b2xsZXIuc2lnbmFsOworICBhYm9ydENvbnRyb2xsZXIuYWJvcnQoKTsKKyAgcmV0dXJuIHByb21p
c2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMSwgcnMucGlwZVRvKHdzLCB7IHNpZ25hbCB9KSwg
J3BpcGVUbyBzaG91bGQgcmVqZWN0Jyk7Cit9LCAnYSByZWplY3Rpb24gZnJvbSB1bmRlcmx5aW5n
U291cmNlLmNhbmNlbCgpIHNob3VsZCBiZSByZXR1cm5lZCBieSBwaXBlVG8oKScpOworCitwcm9t
aXNlX3Rlc3QodCA9PiB7CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKGVycm9yT25Q
dWxsLCBod20wKTsKKyAgY29uc3Qgd3MgPSBuZXcgV3JpdGFibGVTdHJlYW0oeworICAgIGFib3J0
KCkgeworICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yMSk7CisgICAgfQorICB9KTsK
KyAgY29uc3QgYWJvcnRDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpOworICBjb25z
dCBzaWduYWwgPSBhYm9ydENvbnRyb2xsZXIuc2lnbmFsOworICBhYm9ydENvbnRyb2xsZXIuYWJv
cnQoKTsKKyAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMSwgcnMucGlw
ZVRvKHdzLCB7IHNpZ25hbCB9KSwgJ3BpcGVUbyBzaG91bGQgcmVqZWN0Jyk7Cit9LCAnYSByZWpl
Y3Rpb24gZnJvbSB1bmRlcmx5aW5nU2luay5hYm9ydCgpIHNob3VsZCBiZSByZXR1cm5lZCBieSBw
aXBlVG8oKScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIGNvbnN0IGV2ZW50cyA9IFtdOwor
ICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgcHVsbChjb250cm9sbGVyKSB7
CisgICAgICBjb250cm9sbGVyLmVycm9yKCdmYWlsZWQgdG8gYWJvcnQnKTsKKyAgICB9LAorICAg
IGNhbmNlbCgpIHsKKyAgICAgIGV2ZW50cy5wdXNoKCdjYW5jZWwnKTsKKyAgICAgIHJldHVybiBQ
cm9taXNlLnJlamVjdChlcnJvcjEpOworICAgIH0KKyAgfSwgaHdtMCk7CisgIGNvbnN0IHdzID0g
bmV3IFdyaXRhYmxlU3RyZWFtKHsKKyAgICBhYm9ydCgpIHsKKyAgICAgIGV2ZW50cy5wdXNoKCdh
Ym9ydCcpOworICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yMik7CisgICAgfQorICB9
KTsKKyAgY29uc3QgYWJvcnRDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpOworICBj
b25zdCBzaWduYWwgPSBhYm9ydENvbnRyb2xsZXIuc2lnbmFsOworICBhYm9ydENvbnRyb2xsZXIu
YWJvcnQoKTsKKyAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMiwgcnMu
cGlwZVRvKHdzLCB7IHNpZ25hbCB9KSwgJ3BpcGVUbyBzaG91bGQgcmVqZWN0JykKKyAgICAgIC50
aGVuKCgpID0+IGFzc2VydF9hcnJheV9lcXVhbHMoZXZlbnRzLCBbJ2Fib3J0JywgJ2NhbmNlbCdd
LCAnYWJvcnQoKSBzaG91bGQgYmUgY2FsbGVkIGJlZm9yZSBjYW5jZWwoKScpKTsKK30sICdhIHJl
amVjdGlvbiBmcm9tIHVuZGVybHlpbmdTaW5rLmFib3J0KCkgc2hvdWxkIGJlIHByZWZlcnJlZCB0
byBvbmUgZnJvbSB1bmRlcmx5aW5nU291cmNlLmNhbmNlbCgpJyk7CisKK3Byb21pc2VfdGVzdCh0
ID0+IHsKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGNvbnRy
b2xsZXIpIHsKKyAgICAgIGNvbnRyb2xsZXIuY2xvc2UoKTsKKyAgICB9CisgIH0pOworICBjb25z
dCB3cyA9IG5ldyBXcml0YWJsZVN0cmVhbSgpOworICBjb25zdCBhYm9ydENvbnRyb2xsZXIgPSBu
ZXcgQWJvcnRDb250cm9sbGVyKCk7CisgIGNvbnN0IHNpZ25hbCA9IGFib3J0Q29udHJvbGxlci5z
aWduYWw7CisgIGFib3J0Q29udHJvbGxlci5hYm9ydCgpOworICByZXR1cm4gcHJvbWlzZV9yZWpl
Y3RzX2RvbSh0LCAnQWJvcnRFcnJvcicsIHJzLnBpcGVUbyh3cywgeyBzaWduYWwgfSksICdwaXBl
VG8gc2hvdWxkIHJlamVjdCcpOworfSwgJ2Fib3J0IHNpZ25hbCB0YWtlcyBwcmlvcml0eSBvdmVy
IGNsb3NlZCByZWFkYWJsZScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIGNvbnN0IHJzID0g
bmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjb250cm9sbGVyKSB7CisgICAgICBjb250
cm9sbGVyLmVycm9yKGVycm9yMSk7CisgICAgfQorICB9KTsKKyAgY29uc3Qgd3MgPSBuZXcgV3Jp
dGFibGVTdHJlYW0oKTsKKyAgY29uc3QgYWJvcnRDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJv
bGxlcigpOworICBjb25zdCBzaWduYWwgPSBhYm9ydENvbnRyb2xsZXIuc2lnbmFsOworICBhYm9y
dENvbnRyb2xsZXIuYWJvcnQoKTsKKyAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19kb20odCwgJ0Fi
b3J0RXJyb3InLCBycy5waXBlVG8od3MsIHsgc2lnbmFsIH0pLCAncGlwZVRvIHNob3VsZCByZWpl
Y3QnKTsKK30sICdhYm9ydCBzaWduYWwgdGFrZXMgcHJpb3JpdHkgb3ZlciBlcnJvcmVkIHJlYWRh
YmxlJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVT
dHJlYW0oeworICAgIHB1bGwoY29udHJvbGxlcikgeworICAgICAgY29udHJvbGxlci5lcnJvcign
ZmFpbGVkIHRvIGFib3J0Jyk7CisgICAgfQorICB9LCBod20wKTsKKyAgY29uc3Qgd3MgPSBuZXcg
V3JpdGFibGVTdHJlYW0oKTsKKyAgY29uc3QgYWJvcnRDb250cm9sbGVyID0gbmV3IEFib3J0Q29u
dHJvbGxlcigpOworICBjb25zdCBzaWduYWwgPSBhYm9ydENvbnRyb2xsZXIuc2lnbmFsOworICBh
Ym9ydENvbnRyb2xsZXIuYWJvcnQoKTsKKyAgY29uc3Qgd3JpdGVyID0gd3MuZ2V0V3JpdGVyKCk7
CisgIHJldHVybiB3cml0ZXIuY2xvc2UoKS50aGVuKCgpID0+IHsKKyAgICB3cml0ZXIucmVsZWFz
ZUxvY2soKTsKKyAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2RvbSh0LCAnQWJvcnRFcnJvcics
IHJzLnBpcGVUbyh3cywgeyBzaWduYWwgfSksICdwaXBlVG8gc2hvdWxkIHJlamVjdCcpOworICB9
KTsKK30sICdhYm9ydCBzaWduYWwgdGFrZXMgcHJpb3JpdHkgb3ZlciBjbG9zZWQgd3JpdGFibGUn
KTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVh
bSh7CisgICAgcHVsbChjb250cm9sbGVyKSB7CisgICAgICBjb250cm9sbGVyLmVycm9yKCdmYWls
ZWQgdG8gYWJvcnQnKTsKKyAgICB9CisgIH0sIGh3bTApOworICBjb25zdCB3cyA9IG5ldyBXcml0
YWJsZVN0cmVhbSh7CisgICAgc3RhcnQoY29udHJvbGxlcikgeworICAgICAgY29udHJvbGxlci5l
cnJvcihlcnJvcjEpOworICAgIH0KKyAgfSk7CisgIGNvbnN0IGFib3J0Q29udHJvbGxlciA9IG5l
dyBBYm9ydENvbnRyb2xsZXIoKTsKKyAgY29uc3Qgc2lnbmFsID0gYWJvcnRDb250cm9sbGVyLnNp
Z25hbDsKKyAgYWJvcnRDb250cm9sbGVyLmFib3J0KCk7CisgIHJldHVybiBwcm9taXNlX3JlamVj
dHNfZG9tKHQsICdBYm9ydEVycm9yJywgcnMucGlwZVRvKHdzLCB7IHNpZ25hbCB9KSwgJ3BpcGVU
byBzaG91bGQgcmVqZWN0Jyk7Cit9LCAnYWJvcnQgc2lnbmFsIHRha2VzIHByaW9yaXR5IG92ZXIg
ZXJyb3JlZCB3cml0YWJsZScpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworICBsZXQgcmVhZENv
bnRyb2xsZXI7CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChj
KSB7CisgICAgICByZWFkQ29udHJvbGxlciA9IGM7CisgICAgfQorICB9KTsKKyAgY29uc3Qgd3Mg
PSBuZXcgV3JpdGFibGVTdHJlYW0oKTsKKyAgY29uc3QgYWJvcnRDb250cm9sbGVyID0gbmV3IEFi
b3J0Q29udHJvbGxlcigpOworICBjb25zdCBzaWduYWwgPSBhYm9ydENvbnRyb2xsZXIuc2lnbmFs
OworICBjb25zdCBwaXBlVG9Qcm9taXNlID0gcnMucGlwZVRvKHdzLCB7IHNpZ25hbCwgcHJldmVu
dENsb3NlOiB0cnVlIH0pOworICByZWFkQ29udHJvbGxlci5jbG9zZSgpOworICByZXR1cm4gUHJv
bWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiB7CisgICAgYWJvcnRDb250cm9sbGVyLmFib3J0KCk7
CisgICAgcmV0dXJuIHBpcGVUb1Byb21pc2U7CisgIH0pLnRoZW4oKCkgPT4gd3MuZ2V0V3JpdGVy
KCkud3JpdGUoJ3RoaXMgc2hvdWxkIHN1Y2NlZWQnKSk7Cit9LCAnYWJvcnQgc2hvdWxkIGRvIG5v
dGhpbmcgYWZ0ZXIgdGhlIHJlYWRhYmxlIGlzIGNsb3NlZCcpOworCitwcm9taXNlX3Rlc3QodCA9
PiB7CisgIGxldCByZWFkQ29udHJvbGxlcjsKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJl
YW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIHJlYWRDb250cm9sbGVyID0gYzsKKyAgICB9Cisg
IH0pOworICBjb25zdCB3cyA9IG5ldyBXcml0YWJsZVN0cmVhbSgpOworICBjb25zdCBhYm9ydENv
bnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7CisgIGNvbnN0IHNpZ25hbCA9IGFib3J0
Q29udHJvbGxlci5zaWduYWw7CisgIGNvbnN0IHBpcGVUb1Byb21pc2UgPSBycy5waXBlVG8od3Ms
IHsgc2lnbmFsLCBwcmV2ZW50QWJvcnQ6IHRydWUgfSk7CisgIHJlYWRDb250cm9sbGVyLmVycm9y
KGVycm9yMSk7CisgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHsKKyAgICBh
Ym9ydENvbnRyb2xsZXIuYWJvcnQoKTsKKyAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2V4YWN0
bHkodCwgZXJyb3IxLCBwaXBlVG9Qcm9taXNlLCAncGlwZVRvIHNob3VsZCByZWplY3QnKTsKKyAg
fSkudGhlbigoKSA9PiB3cy5nZXRXcml0ZXIoKS53cml0ZSgndGhpcyBzaG91bGQgc3VjY2VlZCcp
KTsKK30sICdhYm9ydCBzaG91bGQgZG8gbm90aGluZyBhZnRlciB0aGUgcmVhZGFibGUgaXMgZXJy
b3JlZCcpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIGxldCByZWFkQ29udHJvbGxlcjsKKyAg
Y29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIHJl
YWRDb250cm9sbGVyID0gYzsKKyAgICB9CisgIH0pOworICBsZXQgcmVzb2x2ZVdyaXRlOworICBj
b25zdCB3cml0ZVByb21pc2UgPSBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKKyAgICByZXNvbHZl
V3JpdGUgPSByZXNvbHZlOworICB9KTsKKyAgY29uc3Qgd3MgPSBuZXcgV3JpdGFibGVTdHJlYW0o
eworICAgIHdyaXRlKCkgeworICAgICAgcmVhZENvbnRyb2xsZXIuZXJyb3IoZXJyb3IxKTsKKyAg
ICAgIHJldHVybiB3cml0ZVByb21pc2U7CisgICAgfQorICB9KTsKKyAgY29uc3QgYWJvcnRDb250
cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpOworICBjb25zdCBzaWduYWwgPSBhYm9ydENv
bnRyb2xsZXIuc2lnbmFsOworICBjb25zdCBwaXBlVG9Qcm9taXNlID0gcnMucGlwZVRvKHdzLCB7
IHNpZ25hbCwgcHJldmVudEFib3J0OiB0cnVlIH0pOworICByZWFkQ29udHJvbGxlci5lbnF1ZXVl
KCdhJyk7CisgIHJldHVybiBkZWxheSgwKS50aGVuKCgpID0+IHsKKyAgICBhYm9ydENvbnRyb2xs
ZXIuYWJvcnQoKTsKKyAgICByZXNvbHZlV3JpdGUoKTsKKyAgICByZXR1cm4gcHJvbWlzZV9yZWpl
Y3RzX2V4YWN0bHkodCwgZXJyb3IxLCBwaXBlVG9Qcm9taXNlLCAncGlwZVRvIHNob3VsZCByZWpl
Y3QnKTsKKyAgfSkudGhlbigoKSA9PiB3cy5nZXRXcml0ZXIoKS53cml0ZSgndGhpcyBzaG91bGQg
c3VjY2VlZCcpKTsKK30sICdhYm9ydCBzaG91bGQgZG8gbm90aGluZyBhZnRlciB0aGUgcmVhZGFi
bGUgaXMgZXJyb3JlZCwgZXZlbiB3aXRoIHBlbmRpbmcgd3JpdGVzJyk7CisKK3Byb21pc2VfdGVz
dCh0ID0+IHsKKyAgY29uc3QgcnMgPSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSh7CisgICAgcHVs
bChjb250cm9sbGVyKSB7CisgICAgICByZXR1cm4gZGVsYXkoMCkudGhlbigoKSA9PiBjb250cm9s
bGVyLmNsb3NlKCkpOworICAgIH0KKyAgfSk7CisgIGxldCB3cml0ZUNvbnRyb2xsZXI7CisgIGNv
bnN0IHdzID0gbmV3IFdyaXRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICB3cml0
ZUNvbnRyb2xsZXIgPSBjOworICAgIH0KKyAgfSk7CisgIGNvbnN0IGFib3J0Q29udHJvbGxlciA9
IG5ldyBBYm9ydENvbnRyb2xsZXIoKTsKKyAgY29uc3Qgc2lnbmFsID0gYWJvcnRDb250cm9sbGVy
LnNpZ25hbDsKKyAgY29uc3QgcGlwZVRvUHJvbWlzZSA9IHJzLnBpcGVUbyh3cywgeyBzaWduYWws
IHByZXZlbnRDYW5jZWw6IHRydWUgfSk7CisgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKS50aGVu
KCgpID0+IHsKKyAgICB3cml0ZUNvbnRyb2xsZXIuZXJyb3IoZXJyb3IxKTsKKyAgICByZXR1cm4g
UHJvbWlzZS5yZXNvbHZlKCk7CisgIH0pLnRoZW4oKCkgPT4geworICAgIGFib3J0Q29udHJvbGxl
ci5hYm9ydCgpOworICAgIHJldHVybiBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEs
IHBpcGVUb1Byb21pc2UsICdwaXBlVG8gc2hvdWxkIHJlamVjdCcpOworICB9KS50aGVuKCgpID0+
IHsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJzLmV2ZW50cywgWydwdWxsJ10sICdjYW5jZWwg
c2hvdWxkIG5vdCBoYXZlIGJlZW4gY2FsbGVkJyk7CisgIH0pOworfSwgJ2Fib3J0IHNob3VsZCBk
byBub3RoaW5nIGFmdGVyIHRoZSB3cml0YWJsZSBpcyBlcnJvcmVkJyk7CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5n
L2Fib3J0LmFueS53b3JrZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9hYm9ydC5hbnkud29ya2VyLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42NWY3NmJlMTc4MWY2MjYxZjE2NzQ5OGVhMWYyNTBlNDQ1OGM3
MzE2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9hYm9ydC5hbnkud29ya2VyLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDI1IEBACisKK0ZBSUwgYSBzaWduYWwgYXJndW1lbnQgJ251bGwnIHNob3VsZCBj
YXVzZSBwaXBlVG8oKSB0byByZWplY3QgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJl
YW0KK0ZBSUwgYSBzaWduYWwgYXJndW1lbnQgJ0Fib3J0U2lnbmFsJyBzaG91bGQgY2F1c2UgcGlw
ZVRvKCkgdG8gcmVqZWN0IENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlM
IGEgc2lnbmFsIGFyZ3VtZW50ICd0cnVlJyBzaG91bGQgY2F1c2UgcGlwZVRvKCkgdG8gcmVqZWN0
IENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIGEgc2lnbmFsIGFyZ3Vt
ZW50ICctMScgc2hvdWxkIGNhdXNlIHBpcGVUbygpIHRvIHJlamVjdCBDYW4ndCBmaW5kIHZhcmlh
YmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBhIHNpZ25hbCBhcmd1bWVudCAnW29iamVjdCBBYm9y
dFNpZ25hbF0nIHNob3VsZCBjYXVzZSBwaXBlVG8oKSB0byByZWplY3QgQ2FuJ3QgZmluZCB2YXJp
YWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgYW4gYWJvcnRlZCBzaWduYWwgc2hvdWxkIGNhdXNl
IHRoZSB3cml0YWJsZSBzdHJlYW0gdG8gcmVqZWN0IHdpdGggYW4gQWJvcnRFcnJvciBDYW4ndCBm
aW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBhbGwgdGhlIEFib3J0RXJyb3Igb2Jq
ZWN0cyBzaG91bGQgYmUgdGhlIHNhbWUgb2JqZWN0IENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRh
YmxlU3RyZWFtCitGQUlMIHByZXZlbnRDYW5jZWwgc2hvdWxkIHByZXZlbnQgY2FuY2VsaW5nIHRo
ZSByZWFkYWJsZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBwcmV2
ZW50QWJvcnQgc2hvdWxkIHByZXZlbnQgYWJvcnRpbmcgdGhlIHJlYWRhYmxlIENhbid0IGZpbmQg
dmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIHByZXZlbnRDYW5jZWwgYW5kIHByZXZlbnRB
Ym9ydCBzaG91bGQgcHJldmVudCBjYW5jZWxpbmcgdGhlIHJlYWRhYmxlIGFuZCBhYm9ydGluZyB0
aGUgcmVhZGFibGUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgYWJv
cnQgc2hvdWxkIHByZXZlbnQgZnVydGhlciByZWFkcyBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0
YWJsZVN0cmVhbQorRkFJTCBhbGwgcGVuZGluZyB3cml0ZXMgc2hvdWxkIGNvbXBsZXRlIG9uIGFi
b3J0IENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIGEgcmVqZWN0aW9u
IGZyb20gdW5kZXJseWluZ1NvdXJjZS5jYW5jZWwoKSBzaG91bGQgYmUgcmV0dXJuZWQgYnkgcGlw
ZVRvKCkgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgYSByZWplY3Rp
b24gZnJvbSB1bmRlcmx5aW5nU2luay5hYm9ydCgpIHNob3VsZCBiZSByZXR1cm5lZCBieSBwaXBl
VG8oKSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBhIHJlamVjdGlv
biBmcm9tIHVuZGVybHlpbmdTaW5rLmFib3J0KCkgc2hvdWxkIGJlIHByZWZlcnJlZCB0byBvbmUg
ZnJvbSB1bmRlcmx5aW5nU291cmNlLmNhbmNlbCgpIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRh
YmxlU3RyZWFtCitGQUlMIGFib3J0IHNpZ25hbCB0YWtlcyBwcmlvcml0eSBvdmVyIGNsb3NlZCBy
ZWFkYWJsZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBhYm9ydCBz
aWduYWwgdGFrZXMgcHJpb3JpdHkgb3ZlciBlcnJvcmVkIHJlYWRhYmxlIENhbid0IGZpbmQgdmFy
aWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIGFib3J0IHNpZ25hbCB0YWtlcyBwcmlvcml0eSBv
dmVyIGNsb3NlZCB3cml0YWJsZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQor
RkFJTCBhYm9ydCBzaWduYWwgdGFrZXMgcHJpb3JpdHkgb3ZlciBlcnJvcmVkIHdyaXRhYmxlIENh
bid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIGFib3J0IHNob3VsZCBkbyBu
b3RoaW5nIGFmdGVyIHRoZSByZWFkYWJsZSBpcyBjbG9zZWQgQ2FuJ3QgZmluZCB2YXJpYWJsZTog
V3JpdGFibGVTdHJlYW0KK0ZBSUwgYWJvcnQgc2hvdWxkIGRvIG5vdGhpbmcgYWZ0ZXIgdGhlIHJl
YWRhYmxlIGlzIGVycm9yZWQgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZB
SUwgYWJvcnQgc2hvdWxkIGRvIG5vdGhpbmcgYWZ0ZXIgdGhlIHJlYWRhYmxlIGlzIGVycm9yZWQs
IGV2ZW4gd2l0aCBwZW5kaW5nIHdyaXRlcyBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0
cmVhbQorRkFJTCBhYm9ydCBzaG91bGQgZG8gbm90aGluZyBhZnRlciB0aGUgd3JpdGFibGUgaXMg
ZXJyb3JlZCBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlw
aW5nL2Fib3J0LmFueS53b3JrZXIuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvYWJvcnQuYW55Lndvcmtlci5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjIzODI5MTM1MjhlNjkzYjNhNWQ1NmM2NjBhNDUwNjA5ODBiNTQ4YzMKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMvcGlwaW5nL2Fib3J0LmFueS53b3JrZXIuaHRtbApAQCAtMCwwICsxIEBACis8IS0tIFRo
aXMgZmlsZSBpcyByZXF1aXJlZCBmb3IgV2ViS2l0IHRlc3QgaW5mcmFzdHJ1Y3R1cmUgdG8gcnVu
IHRoZSB0ZW1wbGF0ZWQgdGVzdCAtLT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvcGlwaW5nL2Nsb3NlLXByb3BhZ2F0aW9uLWJhY2t3YXJkLmFueS1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5n
L2Nsb3NlLXByb3BhZ2F0aW9uLWJhY2t3YXJkLmFueS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmFhOWNiNDA3YTg3NTk2ZjNkMWEzZjE4YzNjYmIxN2VhOTA5YTc4MgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9w
aXBpbmcvY2xvc2UtcHJvcGFnYXRpb24tYmFja3dhcmQuYW55LWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDE4IEBACisKK0ZBSUwgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IHN0
YXJ0cyBjbG9zZWQ7IHByZXZlbnRDYW5jZWwgb21pdHRlZDsgZnVsZmlsbGVkIGNhbmNlbCBwcm9t
aXNlIHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0ZXIoKScs
ICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkKK0ZBSUwgQ2xvc2luZyBtdXN0IGJlIHByb3Bh
Z2F0ZWQgYmFja3dhcmQ6IHN0YXJ0cyBjbG9zZWQ7IHByZXZlbnRDYW5jZWwgb21pdHRlZDsgcmVq
ZWN0ZWQgY2FuY2VsIHByb21pc2Ugd3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4g
J3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicgaXMgdW5kZWZpbmVkKQorRkFJTCBDbG9z
aW5nIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogc3RhcnRzIGNsb3NlZDsgcHJldmVudENh
bmNlbCA9IHVuZGVmaW5lZCAoZmFsc3kpOyBmdWxmaWxsZWQgY2FuY2VsIHByb21pc2Ugd3MuZ2V0
V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdy
aXRlcicgaXMgdW5kZWZpbmVkKQorRkFJTCBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNr
d2FyZDogc3RhcnRzIGNsb3NlZDsgcHJldmVudENhbmNlbCA9IG51bGwgKGZhbHN5KTsgZnVsZmls
bGVkIGNhbmNlbCBwcm9taXNlIHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3
cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkKK0ZBSUwgQ2xvc2lu
ZyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IHN0YXJ0cyBjbG9zZWQ7IHByZXZlbnRDYW5j
ZWwgPSBmYWxzZSAoZmFsc3kpOyBmdWxmaWxsZWQgY2FuY2VsIHByb21pc2Ugd3MuZ2V0V3JpdGVy
IGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicg
aXMgdW5kZWZpbmVkKQorRkFJTCBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDog
c3RhcnRzIGNsb3NlZDsgcHJldmVudENhbmNlbCA9IDAgKGZhbHN5KTsgZnVsZmlsbGVkIGNhbmNl
bCBwcm9taXNlIHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0
ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkKK0ZBSUwgQ2xvc2luZyBtdXN0IGJl
IHByb3BhZ2F0ZWQgYmFja3dhcmQ6IHN0YXJ0cyBjbG9zZWQ7IHByZXZlbnRDYW5jZWwgPSAtMCAo
ZmFsc3kpOyBmdWxmaWxsZWQgY2FuY2VsIHByb21pc2Ugd3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1
bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicgaXMgdW5kZWZpbmVk
KQorRkFJTCBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogc3RhcnRzIGNsb3Nl
ZDsgcHJldmVudENhbmNlbCA9IE5hTiAoZmFsc3kpOyBmdWxmaWxsZWQgY2FuY2VsIHByb21pc2Ug
d3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywgJ3dz
LmdldFdyaXRlcicgaXMgdW5kZWZpbmVkKQorRkFJTCBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRl
ZCBiYWNrd2FyZDogc3RhcnRzIGNsb3NlZDsgcHJldmVudENhbmNlbCA9ICAoZmFsc3kpOyBmdWxm
aWxsZWQgY2FuY2VsIHByb21pc2Ugd3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4g
J3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicgaXMgdW5kZWZpbmVkKQorRkFJTCBDbG9z
aW5nIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogc3RhcnRzIGNsb3NlZDsgcHJldmVudENh
bmNlbCA9IHRydWUgKHRydXRoeSkgd3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4g
J3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicgaXMgdW5kZWZpbmVkKQorRkFJTCBDbG9z
aW5nIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogc3RhcnRzIGNsb3NlZDsgcHJldmVudENh
bmNlbCA9IGEgKHRydXRoeSkgd3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dz
LmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicgaXMgdW5kZWZpbmVkKQorRkFJTCBDbG9zaW5n
IG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogc3RhcnRzIGNsb3NlZDsgcHJldmVudENhbmNl
bCA9IDEgKHRydXRoeSkgd3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdl
dFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicgaXMgdW5kZWZpbmVkKQorRkFJTCBDbG9zaW5nIG11
c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogc3RhcnRzIGNsb3NlZDsgcHJldmVudENhbmNlbCA9
IFN5bWJvbCgpICh0cnV0aHkpIHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3
cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkKK0ZBSUwgQ2xvc2lu
ZyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IHN0YXJ0cyBjbG9zZWQ7IHByZXZlbnRDYW5j
ZWwgPSBbb2JqZWN0IE9iamVjdF0gKHRydXRoeSkgd3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0
aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicgaXMgdW5kZWZpbmVkKQor
RkFJTCBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogc3RhcnRzIGNsb3NlZDsg
cHJldmVudENhbmNlbCA9IHRydWUsIHByZXZlbnRBYm9ydCA9IHRydWUgd3MuZ2V0V3JpdGVyIGlz
IG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicgaXMg
dW5kZWZpbmVkKQorRkFJTCBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogc3Rh
cnRzIGNsb3NlZDsgcHJldmVudENhbmNlbCA9IHRydWUsIHByZXZlbnRBYm9ydCA9IHRydWUsIHBy
ZXZlbnRDbG9zZSA9IHRydWUgd3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dz
LmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicgaXMgdW5kZWZpbmVkKQorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlw
aW5nL2Nsb3NlLXByb3BhZ2F0aW9uLWJhY2t3YXJkLmFueS5odG1sIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9jbG9zZS1wcm9wYWdh
dGlvbi1iYWNrd2FyZC5hbnkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMzgyOTEzNTI4ZTY5M2IzYTVkNTZj
NjYwYTQ1MDYwOTgwYjU0OGMzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9jbG9zZS1wcm9wYWdhdGlv
bi1iYWNrd2FyZC5hbnkuaHRtbApAQCAtMCwwICsxIEBACis8IS0tIFRoaXMgZmlsZSBpcyByZXF1
aXJlZCBmb3IgV2ViS2l0IHRlc3QgaW5mcmFzdHJ1Y3R1cmUgdG8gcnVuIHRoZSB0ZW1wbGF0ZWQg
dGVzdCAtLT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Nsb3Nl
LXByb3BhZ2F0aW9uLWJhY2t3YXJkLmFueS5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvY2xvc2UtcHJvcGFnYXRpb24tYmFja3dh
cmQuYW55LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJkMWU5Y2I5MjY1N2IxNDAyY2MwNmNjN2YxNTkzNDI5YWQ5
NjIzMGMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Nsb3NlLXByb3BhZ2F0aW9uLWJhY2t3YXJkLmFu
eS5qcwpAQCAtMCwwICsxLDE1MyBAQAorLy8gTUVUQTogZ2xvYmFsPXdpbmRvdyx3b3JrZXIsanNz
aGVsbAorLy8gTUVUQTogc2NyaXB0PS4uL3Jlc291cmNlcy9yZWNvcmRpbmctc3RyZWFtcy5qcwor
J3VzZSBzdHJpY3QnOworCitjb25zdCBlcnJvcjEgPSBuZXcgRXJyb3IoJ2Vycm9yMSEnKTsKK2Vy
cm9yMS5uYW1lID0gJ2Vycm9yMSc7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisKKyAgY29uc3Qg
cnMgPSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSgpOworCisgIGNvbnN0IHdzID0gcmVjb3JkaW5n
V3JpdGFibGVTdHJlYW0oKTsKKyAgY29uc3Qgd3JpdGVyID0gd3MuZ2V0V3JpdGVyKCk7CisgIHdy
aXRlci5jbG9zZSgpOworICB3cml0ZXIucmVsZWFzZUxvY2soKTsKKworICByZXR1cm4gcnMucGlw
ZVRvKHdzKS50aGVuKAorICAgICgpID0+IGFzc2VydF91bnJlYWNoZWQoJ3RoZSBwcm9taXNlIG11
c3Qgbm90IGZ1bGZpbGwnKSwKKyAgICBlcnIgPT4geworICAgICAgYXNzZXJ0X2VxdWFscyhlcnIu
bmFtZSwgJ1R5cGVFcnJvcicsICd0aGUgcHJvbWlzZSBtdXN0IHJlamVjdCB3aXRoIGEgVHlwZUVy
cm9yJyk7CisKKyAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMocnMuZXZlbnRzV2l0aG91dFB1bGxz
LCBbJ2NhbmNlbCcsIGVycl0pOworICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMs
IFsnY2xvc2UnXSk7CisKKyAgICAgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAgICAgIHJzLmdl
dFJlYWRlcigpLmNsb3NlZCwKKyAgICAgICAgd3MuZ2V0V3JpdGVyKCkuY2xvc2VkCisgICAgICBd
KTsKKyAgICB9CisgICk7CisKK30sICdDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2Fy
ZDogc3RhcnRzIGNsb3NlZDsgcHJldmVudENhbmNlbCBvbWl0dGVkOyBmdWxmaWxsZWQgY2FuY2Vs
IHByb21pc2UnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworCisgIC8vIE91ciByZWNvcmRpbmcg
c3RyZWFtcyBkbyBub3QgZGVhbCB3ZWxsIHdpdGggZXJyb3JzIGdlbmVyYXRlZCBieSB0aGUgc3lz
dGVtLCBzbyBnaXZlIHRoZW0gc29tZSBoZWxwCisgIGxldCByZWNvcmRlZEVycm9yOworICBjb25z
dCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKHsKKyAgICBjYW5jZWwoY2FuY2VsRXJyKSB7
CisgICAgICByZWNvcmRlZEVycm9yID0gY2FuY2VsRXJyOworICAgICAgdGhyb3cgZXJyb3IxOwor
ICAgIH0KKyAgfSk7CisKKyAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSgpOwor
ICBjb25zdCB3cml0ZXIgPSB3cy5nZXRXcml0ZXIoKTsKKyAgd3JpdGVyLmNsb3NlKCk7CisgIHdy
aXRlci5yZWxlYXNlTG9jaygpOworCisgIHJldHVybiBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0
LCBlcnJvcjEsIHJzLnBpcGVUbyh3cyksICdwaXBlVG8gbXVzdCByZWplY3Qgd2l0aCB0aGUgc2Ft
ZSBlcnJvcicpLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9lcXVhbHMocmVjb3JkZWRFcnJvci5u
YW1lLCAnVHlwZUVycm9yJywgJ3RoZSBjYW5jZWwgcmVhc29uIG11c3QgYmUgYSBUeXBlRXJyb3In
KTsKKworICAgIGFzc2VydF9hcnJheV9lcXVhbHMocnMuZXZlbnRzV2l0aG91dFB1bGxzLCBbJ2Nh
bmNlbCcsIHJlY29yZGVkRXJyb3JdKTsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50
cywgWydjbG9zZSddKTsKKworICAgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAgICBycy5nZXRS
ZWFkZXIoKS5jbG9zZWQsCisgICAgICB3cy5nZXRXcml0ZXIoKS5jbG9zZWQKKyAgICBdKTsKKyAg
fSk7CisKK30sICdDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogc3RhcnRzIGNs
b3NlZDsgcHJldmVudENhbmNlbCBvbWl0dGVkOyByZWplY3RlZCBjYW5jZWwgcHJvbWlzZScpOwor
Citmb3IgKGNvbnN0IGZhbHN5IG9mIFt1bmRlZmluZWQsIG51bGwsIGZhbHNlLCArMCwgLTAsIE5h
TiwgJyddKSB7CisgIGNvbnN0IHN0cmluZ1ZlcnNpb24gPSBPYmplY3QuaXMoZmFsc3ksIC0wKSA/
ICctMCcgOiBTdHJpbmcoZmFsc3kpOworCisgIHByb21pc2VfdGVzdCgoKSA9PiB7CisKKyAgICBj
b25zdCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKCk7CisKKyAgICBjb25zdCB3cyA9IHJl
Y29yZGluZ1dyaXRhYmxlU3RyZWFtKCk7CisgICAgY29uc3Qgd3JpdGVyID0gd3MuZ2V0V3JpdGVy
KCk7CisgICAgd3JpdGVyLmNsb3NlKCk7CisgICAgd3JpdGVyLnJlbGVhc2VMb2NrKCk7CisKKyAg
ICByZXR1cm4gcnMucGlwZVRvKHdzLCB7IHByZXZlbnRDYW5jZWw6IGZhbHN5IH0pLnRoZW4oCisg
ICAgICAoKSA9PiBhc3NlcnRfdW5yZWFjaGVkKCd0aGUgcHJvbWlzZSBtdXN0IG5vdCBmdWxmaWxs
JyksCisgICAgICBlcnIgPT4geworICAgICAgICBhc3NlcnRfZXF1YWxzKGVyci5uYW1lLCAnVHlw
ZUVycm9yJywgJ3RoZSBwcm9taXNlIG11c3QgcmVqZWN0IHdpdGggYSBUeXBlRXJyb3InKTsKKwor
ICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJzLmV2ZW50c1dpdGhvdXRQdWxscywgWydjYW5j
ZWwnLCBlcnJdKTsKKyAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsnY2xv
c2UnXSk7CisKKyAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKFsKKyAgICAgICAgICBycy5nZXRS
ZWFkZXIoKS5jbG9zZWQsCisgICAgICAgICAgd3MuZ2V0V3JpdGVyKCkuY2xvc2VkCisgICAgICAg
IF0pOworICAgICAgfQorICAgICk7CisKKyAgfSwgYENsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVk
IGJhY2t3YXJkOiBzdGFydHMgY2xvc2VkOyBwcmV2ZW50Q2FuY2VsID0gJHtzdHJpbmdWZXJzaW9u
fSAoZmFsc3kpOyBmdWxmaWxsZWQgY2FuY2VsIGAgKworICAgICBgcHJvbWlzZWApOworfQorCitm
b3IgKGNvbnN0IHRydXRoeSBvZiBbdHJ1ZSwgJ2EnLCAxLCBTeW1ib2woKSwgeyB9XSkgeworICBw
cm9taXNlX3Rlc3QodCA9PiB7CisKKyAgICBjb25zdCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3Ry
ZWFtKCk7CisKKyAgICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKCk7CisgICAg
Y29uc3Qgd3JpdGVyID0gd3MuZ2V0V3JpdGVyKCk7CisgICAgd3JpdGVyLmNsb3NlKCk7CisgICAg
d3JpdGVyLnJlbGVhc2VMb2NrKCk7CisKKyAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2pzKHQs
IFR5cGVFcnJvciwgcnMucGlwZVRvKHdzLCB7IHByZXZlbnRDYW5jZWw6IHRydXRoeSB9KSkudGhl
bigoKSA9PiB7CisgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJzLmV2ZW50c1dpdGhvdXRQdWxs
cywgW10pOworICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsnY2xvc2UnXSk7
CisKKyAgICAgIHJldHVybiB3cy5nZXRXcml0ZXIoKS5jbG9zZWQ7CisgICAgfSk7CisKKyAgfSwg
YENsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBzdGFydHMgY2xvc2VkOyBwcmV2
ZW50Q2FuY2VsID0gJHtTdHJpbmcodHJ1dGh5KX0gKHRydXRoeSlgKTsKK30KKworcHJvbWlzZV90
ZXN0KHQgPT4geworCisgIGNvbnN0IHJzID0gcmVjb3JkaW5nUmVhZGFibGVTdHJlYW0oKTsKKwor
ICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKCk7CisgIGNvbnN0IHdyaXRlciA9
IHdzLmdldFdyaXRlcigpOworICB3cml0ZXIuY2xvc2UoKTsKKyAgd3JpdGVyLnJlbGVhc2VMb2Nr
KCk7CisKKyAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19qcyh0LCBUeXBlRXJyb3IsIHJzLnBpcGVU
byh3cywgeyBwcmV2ZW50Q2FuY2VsOiB0cnVlLCBwcmV2ZW50QWJvcnQ6IHRydWUgfSkpCisgICAg
LnRoZW4oKCkgPT4geworICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhycy5ldmVudHNXaXRob3V0
UHVsbHMsIFtdKTsKKyAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ2Nsb3Nl
J10pOworCisgICAgICByZXR1cm4gd3MuZ2V0V3JpdGVyKCkuY2xvc2VkOworICAgIH0pOworCit9
LCAnQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IHN0YXJ0cyBjbG9zZWQ7IHBy
ZXZlbnRDYW5jZWwgPSB0cnVlLCBwcmV2ZW50QWJvcnQgPSB0cnVlJyk7CisKK3Byb21pc2VfdGVz
dCh0ID0+IHsKKworICBjb25zdCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKCk7CisKKyAg
Y29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSgpOworICBjb25zdCB3cml0ZXIgPSB3
cy5nZXRXcml0ZXIoKTsKKyAgd3JpdGVyLmNsb3NlKCk7CisgIHdyaXRlci5yZWxlYXNlTG9jaygp
OworCisgIHJldHVybiBwcm9taXNlX3JlamVjdHNfanModCwgVHlwZUVycm9yLAorICAgICAgICAg
ICAgICAgICAgICAgICAgIHJzLnBpcGVUbyh3cywgeyBwcmV2ZW50Q2FuY2VsOiB0cnVlLCBwcmV2
ZW50QWJvcnQ6IHRydWUsIHByZXZlbnRDbG9zZTogdHJ1ZSB9KSkKKyAgLnRoZW4oKCkgPT4gewor
ICAgIGFzc2VydF9hcnJheV9lcXVhbHMocnMuZXZlbnRzV2l0aG91dFB1bGxzLCBbXSk7CisgICAg
YXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsnY2xvc2UnXSk7CisKKyAgICByZXR1cm4g
d3MuZ2V0V3JpdGVyKCkuY2xvc2VkOworICB9KTsKKworfSwgJ0Nsb3NpbmcgbXVzdCBiZSBwcm9w
YWdhdGVkIGJhY2t3YXJkOiBzdGFydHMgY2xvc2VkOyBwcmV2ZW50Q2FuY2VsID0gdHJ1ZSwgcHJl
dmVudEFib3J0ID0gdHJ1ZSwgcHJldmVudENsb3NlICcgKworICAgJz0gdHJ1ZScpOwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
L3BpcGluZy9jbG9zZS1wcm9wYWdhdGlvbi1iYWNrd2FyZC5hbnkud29ya2VyLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9w
aXBpbmcvY2xvc2UtcHJvcGFnYXRpb24tYmFja3dhcmQuYW55Lndvcmtlci1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMDAwODFiYTFiZmNiYjM5OWI4ZDM2ZTUxMDhmNTRlYjk4ZTdkOTA1ZgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy9waXBpbmcvY2xvc2UtcHJvcGFnYXRpb24tYmFja3dhcmQuYW55Lndvcmtlci1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwxOCBAQAorCitGQUlMIENsb3NpbmcgbXVzdCBiZSBwcm9w
YWdhdGVkIGJhY2t3YXJkOiBzdGFydHMgY2xvc2VkOyBwcmV2ZW50Q2FuY2VsIG9taXR0ZWQ7IGZ1
bGZpbGxlZCBjYW5jZWwgcHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVh
bQorRkFJTCBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogc3RhcnRzIGNsb3Nl
ZDsgcHJldmVudENhbmNlbCBvbWl0dGVkOyByZWplY3RlZCBjYW5jZWwgcHJvbWlzZSBDYW4ndCBm
aW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBDbG9zaW5nIG11c3QgYmUgcHJvcGFn
YXRlZCBiYWNrd2FyZDogc3RhcnRzIGNsb3NlZDsgcHJldmVudENhbmNlbCA9IHVuZGVmaW5lZCAo
ZmFsc3kpOyBmdWxmaWxsZWQgY2FuY2VsIHByb21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3Jp
dGFibGVTdHJlYW0KK0ZBSUwgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IHN0
YXJ0cyBjbG9zZWQ7IHByZXZlbnRDYW5jZWwgPSBudWxsIChmYWxzeSk7IGZ1bGZpbGxlZCBjYW5j
ZWwgcHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBDbG9z
aW5nIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogc3RhcnRzIGNsb3NlZDsgcHJldmVudENh
bmNlbCA9IGZhbHNlIChmYWxzeSk7IGZ1bGZpbGxlZCBjYW5jZWwgcHJvbWlzZSBDYW4ndCBmaW5k
IHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRl
ZCBiYWNrd2FyZDogc3RhcnRzIGNsb3NlZDsgcHJldmVudENhbmNlbCA9IDAgKGZhbHN5KTsgZnVs
ZmlsbGVkIGNhbmNlbCBwcm9taXNlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFt
CitGQUlMIENsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBzdGFydHMgY2xvc2Vk
OyBwcmV2ZW50Q2FuY2VsID0gLTAgKGZhbHN5KTsgZnVsZmlsbGVkIGNhbmNlbCBwcm9taXNlIENh
bid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIENsb3NpbmcgbXVzdCBiZSBw
cm9wYWdhdGVkIGJhY2t3YXJkOiBzdGFydHMgY2xvc2VkOyBwcmV2ZW50Q2FuY2VsID0gTmFOIChm
YWxzeSk7IGZ1bGZpbGxlZCBjYW5jZWwgcHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0
YWJsZVN0cmVhbQorRkFJTCBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogc3Rh
cnRzIGNsb3NlZDsgcHJldmVudENhbmNlbCA9ICAoZmFsc3kpOyBmdWxmaWxsZWQgY2FuY2VsIHBy
b21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgQ2xvc2luZyBt
dXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IHN0YXJ0cyBjbG9zZWQ7IHByZXZlbnRDYW5jZWwg
PSB0cnVlICh0cnV0aHkpIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlM
IENsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBzdGFydHMgY2xvc2VkOyBwcmV2
ZW50Q2FuY2VsID0gYSAodHJ1dGh5KSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVh
bQorRkFJTCBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogc3RhcnRzIGNsb3Nl
ZDsgcHJldmVudENhbmNlbCA9IDEgKHRydXRoeSkgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFi
bGVTdHJlYW0KK0ZBSUwgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IHN0YXJ0
cyBjbG9zZWQ7IHByZXZlbnRDYW5jZWwgPSBTeW1ib2woKSAodHJ1dGh5KSBDYW4ndCBmaW5kIHZh
cmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBi
YWNrd2FyZDogc3RhcnRzIGNsb3NlZDsgcHJldmVudENhbmNlbCA9IFtvYmplY3QgT2JqZWN0XSAo
dHJ1dGh5KSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBDbG9zaW5n
IG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogc3RhcnRzIGNsb3NlZDsgcHJldmVudENhbmNl
bCA9IHRydWUsIHByZXZlbnRBYm9ydCA9IHRydWUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFi
bGVTdHJlYW0KK0ZBSUwgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IHN0YXJ0
cyBjbG9zZWQ7IHByZXZlbnRDYW5jZWwgPSB0cnVlLCBwcmV2ZW50QWJvcnQgPSB0cnVlLCBwcmV2
ZW50Q2xvc2UgPSB0cnVlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy9waXBpbmcvY2xvc2UtcHJvcGFnYXRpb24tYmFja3dhcmQuYW55Lndvcmtlci5odG1sIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGlu
Zy9jbG9zZS1wcm9wYWdhdGlvbi1iYWNrd2FyZC5hbnkud29ya2VyLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MjM4MjkxMzUyOGU2OTNiM2E1ZDU2YzY2MGE0NTA2MDk4MGI1NDhjMwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9w
aXBpbmcvY2xvc2UtcHJvcGFnYXRpb24tYmFja3dhcmQuYW55Lndvcmtlci5odG1sCkBAIC0wLDAg
KzEgQEAKKzwhLS0gVGhpcyBmaWxlIGlzIHJlcXVpcmVkIGZvciBXZWJLaXQgdGVzdCBpbmZyYXN0
cnVjdHVyZSB0byBydW4gdGhlIHRlbXBsYXRlZCB0ZXN0IC0tPgpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvY2xvc2UtcHJvcGFnYXRpb24tYmFja3dhcmQuZGVkaWNh
dGVkd29ya2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvY2xvc2UtcHJvcGFnYXRpb24tYmFja3dhcmQuZGVk
aWNhdGVkd29ya2VyLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwODFiYTFiZmNiYjM5OWI4ZDM2ZTUxMDhmNTRlYjk4ZTdkOTA1Zi4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Nsb3NlLXByb3BhZ2F0aW9uLWJhY2t3
YXJkLmRlZGljYXRlZHdvcmtlci1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwxOCAr
MCwwIEBACi0KLUZBSUwgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IHN0YXJ0
cyBjbG9zZWQ7IHByZXZlbnRDYW5jZWwgb21pdHRlZDsgZnVsZmlsbGVkIGNhbmNlbCBwcm9taXNl
IENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIENsb3NpbmcgbXVzdCBi
ZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBzdGFydHMgY2xvc2VkOyBwcmV2ZW50Q2FuY2VsIG9taXR0
ZWQ7IHJlamVjdGVkIGNhbmNlbCBwcm9taXNlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxl
U3RyZWFtCi1GQUlMIENsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBzdGFydHMg
Y2xvc2VkOyBwcmV2ZW50Q2FuY2VsID0gdW5kZWZpbmVkIChmYWxzeSk7IGZ1bGZpbGxlZCBjYW5j
ZWwgcHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBDbG9z
aW5nIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogc3RhcnRzIGNsb3NlZDsgcHJldmVudENh
bmNlbCA9IG51bGwgKGZhbHN5KTsgZnVsZmlsbGVkIGNhbmNlbCBwcm9taXNlIENhbid0IGZpbmQg
dmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIENsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVk
IGJhY2t3YXJkOiBzdGFydHMgY2xvc2VkOyBwcmV2ZW50Q2FuY2VsID0gZmFsc2UgKGZhbHN5KTsg
ZnVsZmlsbGVkIGNhbmNlbCBwcm9taXNlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3Ry
ZWFtCi1GQUlMIENsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBzdGFydHMgY2xv
c2VkOyBwcmV2ZW50Q2FuY2VsID0gMCAoZmFsc3kpOyBmdWxmaWxsZWQgY2FuY2VsIHByb21pc2Ug
Q2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgQ2xvc2luZyBtdXN0IGJl
IHByb3BhZ2F0ZWQgYmFja3dhcmQ6IHN0YXJ0cyBjbG9zZWQ7IHByZXZlbnRDYW5jZWwgPSAtMCAo
ZmFsc3kpOyBmdWxmaWxsZWQgY2FuY2VsIHByb21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3Jp
dGFibGVTdHJlYW0KLUZBSUwgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IHN0
YXJ0cyBjbG9zZWQ7IHByZXZlbnRDYW5jZWwgPSBOYU4gKGZhbHN5KTsgZnVsZmlsbGVkIGNhbmNl
bCBwcm9taXNlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIENsb3Np
bmcgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBzdGFydHMgY2xvc2VkOyBwcmV2ZW50Q2Fu
Y2VsID0gIChmYWxzeSk7IGZ1bGZpbGxlZCBjYW5jZWwgcHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlh
YmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNr
d2FyZDogc3RhcnRzIGNsb3NlZDsgcHJldmVudENhbmNlbCA9IHRydWUgKHRydXRoeSkgQ2FuJ3Qg
ZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgQ2xvc2luZyBtdXN0IGJlIHByb3Bh
Z2F0ZWQgYmFja3dhcmQ6IHN0YXJ0cyBjbG9zZWQ7IHByZXZlbnRDYW5jZWwgPSBhICh0cnV0aHkp
IENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIENsb3NpbmcgbXVzdCBi
ZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBzdGFydHMgY2xvc2VkOyBwcmV2ZW50Q2FuY2VsID0gMSAo
dHJ1dGh5KSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBDbG9zaW5n
IG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogc3RhcnRzIGNsb3NlZDsgcHJldmVudENhbmNl
bCA9IFN5bWJvbCgpICh0cnV0aHkpIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFt
Ci1GQUlMIENsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBzdGFydHMgY2xvc2Vk
OyBwcmV2ZW50Q2FuY2VsID0gW29iamVjdCBPYmplY3RdICh0cnV0aHkpIENhbid0IGZpbmQgdmFy
aWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIENsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGJh
Y2t3YXJkOiBzdGFydHMgY2xvc2VkOyBwcmV2ZW50Q2FuY2VsID0gdHJ1ZSwgcHJldmVudEFib3J0
ID0gdHJ1ZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBDbG9zaW5n
IG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogc3RhcnRzIGNsb3NlZDsgcHJldmVudENhbmNl
bCA9IHRydWUsIHByZXZlbnRBYm9ydCA9IHRydWUsIHByZXZlbnRDbG9zZSA9IHRydWUgQ2FuJ3Qg
ZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9jbG9zZS1wcm9w
YWdhdGlvbi1iYWNrd2FyZC5kZWRpY2F0ZWR3b3JrZXIuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvY2xvc2UtcHJvcGFnYXRp
b24tYmFja3dhcmQuZGVkaWNhdGVkd29ya2VyLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDA3ZjM4NzViMmIwMjg1NDExYTcwMDlmYjg3OTQ3OTg5ZWFiNGMyNTAuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9jbG9zZS1wcm9wYWdhdGlv
bi1iYWNrd2FyZC5kZWRpY2F0ZWR3b3JrZXIuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDExICsw
LDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHRpdGxlPmNs
b3NlLXByb3BhZ2F0aW9uLWJhY2t3YXJkLmpzIGRlZGljYXRlZCB3b3JrZXIgd3JhcHBlciBmaWxl
PC90aXRsZT4KLQotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2Ny
aXB0PgotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2Ny
aXB0PgotCi08c2NyaXB0PgotJ3VzZSBzdHJpY3QnOwotZmV0Y2hfdGVzdHNfZnJvbV93b3JrZXIo
bmV3IFdvcmtlcignY2xvc2UtcHJvcGFnYXRpb24tYmFja3dhcmQuanMnKSk7Ci08L3NjcmlwdD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy9waXBpbmcvY2xvc2UtcHJvcGFnYXRpb24tYmFja3dhcmQuaHRtbCBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvY2xvc2Ut
cHJvcGFnYXRpb24tYmFja3dhcmQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MjUyMzlhMzNiMTVhYjhlNjNkMTljMzg0ZWQ5N2Q2NTU3OWRkZGVjMS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Nsb3NlLXByb3BhZ2F0aW9uLWJhY2t3
YXJkLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4K
LTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTx0aXRsZT5jbG9zZS1wcm9wYWdhdGlvbi1iYWNrd2Fy
ZC5qcyBicm93c2VyIGNvbnRleHQgd3JhcHBlciBmaWxlPC90aXRsZT4KLQotPHNjcmlwdCBzcmM9
Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9yZXNv
dXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotCi08c2NyaXB0IHNyYz0iLi4v
cmVzb3VyY2VzL3JlY29yZGluZy1zdHJlYW1zLmpzIj48L3NjcmlwdD4KLQotPHNjcmlwdCBzcmM9
ImNsb3NlLXByb3BhZ2F0aW9uLWJhY2t3YXJkLmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcv
Y2xvc2UtcHJvcGFnYXRpb24tYmFja3dhcmQuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Nsb3NlLXByb3BhZ2F0aW9uLWJhY2t3
YXJkLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMTIwN2U5OTY3MmJhNzJmZjQ1
NGJiMDNiM2Q3YTgxYjA2MmVjMzNkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy9waXBpbmcvY2xvc2UtcHJvcGFnYXRpb24tYmFja3dhcmQuanMKKysrIC9kZXYvbnVs
bApAQCAtMSwxNTggKzAsMCBAQAotJ3VzZSBzdHJpY3QnOwotCi1pZiAoc2VsZi5pbXBvcnRTY3Jp
cHRzKSB7Ci0gIHNlbGYuaW1wb3J0U2NyaXB0cygnL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcycp
OwotICBzZWxmLmltcG9ydFNjcmlwdHMoJy4uL3Jlc291cmNlcy9yZWNvcmRpbmctc3RyZWFtcy5q
cycpOwotfQotCi1jb25zdCBlcnJvcjEgPSBuZXcgRXJyb3IoJ2Vycm9yMSEnKTsKLWVycm9yMS5u
YW1lID0gJ2Vycm9yMSc7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgY29uc3QgcnMgPSBy
ZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSgpOwotCi0gIGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFi
bGVTdHJlYW0oKTsKLSAgY29uc3Qgd3JpdGVyID0gd3MuZ2V0V3JpdGVyKCk7Ci0gIHdyaXRlci5j
bG9zZSgpOwotICB3cml0ZXIucmVsZWFzZUxvY2soKTsKLQotICByZXR1cm4gcnMucGlwZVRvKHdz
KS50aGVuKAotICAgICgpID0+IGFzc2VydF91bnJlYWNoZWQoJ3RoZSBwcm9taXNlIG11c3Qgbm90
IGZ1bGZpbGwnKSwKLSAgICBlcnIgPT4gewotICAgICAgYXNzZXJ0X2VxdWFscyhlcnIubmFtZSwg
J1R5cGVFcnJvcicsICd0aGUgcHJvbWlzZSBtdXN0IHJlamVjdCB3aXRoIGEgVHlwZUVycm9yJyk7
Ci0KLSAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMocnMuZXZlbnRzV2l0aG91dFB1bGxzLCBbJ2Nh
bmNlbCcsIGVycl0pOwotICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsnY2xv
c2UnXSk7Ci0KLSAgICAgIHJldHVybiBQcm9taXNlLmFsbChbCi0gICAgICAgIHJzLmdldFJlYWRl
cigpLmNsb3NlZCwKLSAgICAgICAgd3MuZ2V0V3JpdGVyKCkuY2xvc2VkCi0gICAgICBdKTsKLSAg
ICB9Ci0gICk7Ci0KLX0sICdDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogc3Rh
cnRzIGNsb3NlZDsgcHJldmVudENhbmNlbCBvbWl0dGVkOyBmdWxmaWxsZWQgY2FuY2VsIHByb21p
c2UnKTsKLQotcHJvbWlzZV90ZXN0KHQgPT4gewotCi0gIC8vIE91ciByZWNvcmRpbmcgc3RyZWFt
cyBkbyBub3QgZGVhbCB3ZWxsIHdpdGggZXJyb3JzIGdlbmVyYXRlZCBieSB0aGUgc3lzdGVtLCBz
byBnaXZlIHRoZW0gc29tZSBoZWxwCi0gIGxldCByZWNvcmRlZEVycm9yOwotICBjb25zdCBycyA9
IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKHsKLSAgICBjYW5jZWwoY2FuY2VsRXJyKSB7Ci0gICAg
ICByZWNvcmRlZEVycm9yID0gY2FuY2VsRXJyOwotICAgICAgdGhyb3cgZXJyb3IxOwotICAgIH0K
LSAgfSk7Ci0KLSAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSgpOwotICBjb25z
dCB3cml0ZXIgPSB3cy5nZXRXcml0ZXIoKTsKLSAgd3JpdGVyLmNsb3NlKCk7Ci0gIHdyaXRlci5y
ZWxlYXNlTG9jaygpOwotCi0gIHJldHVybiBwcm9taXNlX3JlamVjdHModCwgZXJyb3IxLCBycy5w
aXBlVG8od3MpLCAncGlwZVRvIG11c3QgcmVqZWN0IHdpdGggdGhlIHNhbWUgZXJyb3InKS50aGVu
KCgpID0+IHsKLSAgICBhc3NlcnRfZXF1YWxzKHJlY29yZGVkRXJyb3IubmFtZSwgJ1R5cGVFcnJv
cicsICd0aGUgY2FuY2VsIHJlYXNvbiBtdXN0IGJlIGEgVHlwZUVycm9yJyk7Ci0KLSAgICBhc3Nl
cnRfYXJyYXlfZXF1YWxzKHJzLmV2ZW50c1dpdGhvdXRQdWxscywgWydjYW5jZWwnLCByZWNvcmRl
ZEVycm9yXSk7Ci0gICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsnY2xvc2UnXSk7
Ci0KLSAgICByZXR1cm4gUHJvbWlzZS5hbGwoWwotICAgICAgcnMuZ2V0UmVhZGVyKCkuY2xvc2Vk
LAotICAgICAgd3MuZ2V0V3JpdGVyKCkuY2xvc2VkCi0gICAgXSk7Ci0gIH0pOwotCi19LCAnQ2xv
c2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IHN0YXJ0cyBjbG9zZWQ7IHByZXZlbnRD
YW5jZWwgb21pdHRlZDsgcmVqZWN0ZWQgY2FuY2VsIHByb21pc2UnKTsKLQotZm9yIChjb25zdCBm
YWxzeSBvZiBbdW5kZWZpbmVkLCBudWxsLCBmYWxzZSwgKzAsIC0wLCBOYU4sICcnXSkgewotICBj
b25zdCBzdHJpbmdWZXJzaW9uID0gT2JqZWN0LmlzKGZhbHN5LCAtMCkgPyAnLTAnIDogU3RyaW5n
KGZhbHN5KTsKLQotICBwcm9taXNlX3Rlc3QoKCkgPT4gewotCi0gICAgY29uc3QgcnMgPSByZWNv
cmRpbmdSZWFkYWJsZVN0cmVhbSgpOwotCi0gICAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJs
ZVN0cmVhbSgpOwotICAgIGNvbnN0IHdyaXRlciA9IHdzLmdldFdyaXRlcigpOwotICAgIHdyaXRl
ci5jbG9zZSgpOwotICAgIHdyaXRlci5yZWxlYXNlTG9jaygpOwotCi0gICAgcmV0dXJuIHJzLnBp
cGVUbyh3cywgeyBwcmV2ZW50Q2FuY2VsOiBmYWxzeSB9KS50aGVuKAotICAgICAgKCkgPT4gYXNz
ZXJ0X3VucmVhY2hlZCgndGhlIHByb21pc2UgbXVzdCBub3QgZnVsZmlsbCcpLAotICAgICAgZXJy
ID0+IHsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyhlcnIubmFtZSwgJ1R5cGVFcnJvcicsICd0aGUg
cHJvbWlzZSBtdXN0IHJlamVjdCB3aXRoIGEgVHlwZUVycm9yJyk7Ci0KLSAgICAgICAgYXNzZXJ0
X2FycmF5X2VxdWFscyhycy5ldmVudHNXaXRob3V0UHVsbHMsIFsnY2FuY2VsJywgZXJyXSk7Ci0g
ICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ2Nsb3NlJ10pOwotCi0gICAg
ICAgIHJldHVybiBQcm9taXNlLmFsbChbCi0gICAgICAgICAgcnMuZ2V0UmVhZGVyKCkuY2xvc2Vk
LAotICAgICAgICAgIHdzLmdldFdyaXRlcigpLmNsb3NlZAotICAgICAgICBdKTsKLSAgICAgIH0K
LSAgICApOwotCi0gIH0sIGBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogc3Rh
cnRzIGNsb3NlZDsgcHJldmVudENhbmNlbCA9ICR7c3RyaW5nVmVyc2lvbn0gKGZhbHN5KTsgZnVs
ZmlsbGVkIGNhbmNlbCBgICsKLSAgICAgYHByb21pc2VgKTsKLX0KLQotZm9yIChjb25zdCB0cnV0
aHkgb2YgW3RydWUsICdhJywgMSwgU3ltYm9sKCksIHsgfV0pIHsKLSAgcHJvbWlzZV90ZXN0KHQg
PT4gewotCi0gICAgY29uc3QgcnMgPSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSgpOwotCi0gICAg
Y29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSgpOwotICAgIGNvbnN0IHdyaXRlciA9
IHdzLmdldFdyaXRlcigpOwotICAgIHdyaXRlci5jbG9zZSgpOwotICAgIHdyaXRlci5yZWxlYXNl
TG9jaygpOwotCi0gICAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0LCBuZXcgVHlwZUVycm9yKCks
IHJzLnBpcGVUbyh3cywgeyBwcmV2ZW50Q2FuY2VsOiB0cnV0aHkgfSkpLnRoZW4oKCkgPT4gewot
ICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhycy5ldmVudHNXaXRob3V0UHVsbHMsIFtdKTsKLSAg
ICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ2Nsb3NlJ10pOwotCi0gICAgICBy
ZXR1cm4gd3MuZ2V0V3JpdGVyKCkuY2xvc2VkOwotICAgIH0pOwotCi0gIH0sIGBDbG9zaW5nIG11
c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogc3RhcnRzIGNsb3NlZDsgcHJldmVudENhbmNlbCA9
ICR7U3RyaW5nKHRydXRoeSl9ICh0cnV0aHkpYCk7Ci19Ci0KLXByb21pc2VfdGVzdCh0ID0+IHsK
LQotICBjb25zdCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKCk7Ci0KLSAgY29uc3Qgd3Mg
PSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSgpOwotICBjb25zdCB3cml0ZXIgPSB3cy5nZXRXcml0
ZXIoKTsKLSAgd3JpdGVyLmNsb3NlKCk7Ci0gIHdyaXRlci5yZWxlYXNlTG9jaygpOwotCi0gIHJl
dHVybiBwcm9taXNlX3JlamVjdHModCwgbmV3IFR5cGVFcnJvcigpLCBycy5waXBlVG8od3MsIHsg
cHJldmVudENhbmNlbDogdHJ1ZSwgcHJldmVudEFib3J0OiB0cnVlIH0pKQotICAgIC50aGVuKCgp
ID0+IHsKLSAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMocnMuZXZlbnRzV2l0aG91dFB1bGxzLCBb
XSk7Ci0gICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWydjbG9zZSddKTsKLQot
ICAgICAgcmV0dXJuIHdzLmdldFdyaXRlcigpLmNsb3NlZDsKLSAgICB9KTsKLQotfSwgJ0Nsb3Np
bmcgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBzdGFydHMgY2xvc2VkOyBwcmV2ZW50Q2Fu
Y2VsID0gdHJ1ZSwgcHJldmVudEFib3J0ID0gdHJ1ZScpOwotCi1wcm9taXNlX3Rlc3QodCA9PiB7
Ci0KLSAgY29uc3QgcnMgPSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSgpOwotCi0gIGNvbnN0IHdz
ID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0oKTsKLSAgY29uc3Qgd3JpdGVyID0gd3MuZ2V0V3Jp
dGVyKCk7Ci0gIHdyaXRlci5jbG9zZSgpOwotICB3cml0ZXIucmVsZWFzZUxvY2soKTsKLQotICBy
ZXR1cm4gcHJvbWlzZV9yZWplY3RzKHQsIG5ldyBUeXBlRXJyb3IoKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICBycy5waXBlVG8od3MsIHsgcHJldmVudENhbmNlbDogdHJ1ZSwgcHJldmVudEFi
b3J0OiB0cnVlLCBwcmV2ZW50Q2xvc2U6IHRydWUgfSkpCi0gIC50aGVuKCgpID0+IHsKLSAgICBh
c3NlcnRfYXJyYXlfZXF1YWxzKHJzLmV2ZW50c1dpdGhvdXRQdWxscywgW10pOwotICAgIGFzc2Vy
dF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ2Nsb3NlJ10pOwotCi0gICAgcmV0dXJuIHdzLmdl
dFdyaXRlcigpLmNsb3NlZDsKLSAgfSk7Ci0KLX0sICdDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRl
ZCBiYWNrd2FyZDogc3RhcnRzIGNsb3NlZDsgcHJldmVudENhbmNlbCA9IHRydWUsIHByZXZlbnRB
Ym9ydCA9IHRydWUsIHByZXZlbnRDbG9zZSAnICsKLSAgICc9IHRydWUnKTsKLQotZG9uZSgpOwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
dHJlYW1zL3BpcGluZy9jbG9zZS1wcm9wYWdhdGlvbi1iYWNrd2FyZC5zZXJ2aWNld29ya2VyLmh0
dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy9waXBpbmcvY2xvc2UtcHJvcGFnYXRpb24tYmFja3dhcmQuc2VydmljZXdv
cmtlci5odHRwcy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU2
ZmVjZWZiNWNlOWM5OWQ5NzM0OGYzZGY2NzcyMDllNDNlYzQ1NDQuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9jbG9zZS1wcm9wYWdhdGlvbi1iYWNrd2Fy
ZC5zZXJ2aWNld29ya2VyLmh0dHBzLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDE5
ICswLDAgQEAKLQotUEFTUyBTZXJ2aWNlIHdvcmtlciB0ZXN0IHNldHVwIAotRkFJTCBDbG9zaW5n
IG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogc3RhcnRzIGNsb3NlZDsgcHJldmVudENhbmNl
bCBvbWl0dGVkOyBmdWxmaWxsZWQgY2FuY2VsIHByb21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTog
V3JpdGFibGVTdHJlYW0KLUZBSUwgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6
IHN0YXJ0cyBjbG9zZWQ7IHByZXZlbnRDYW5jZWwgb21pdHRlZDsgcmVqZWN0ZWQgY2FuY2VsIHBy
b21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgQ2xvc2luZyBt
dXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IHN0YXJ0cyBjbG9zZWQ7IHByZXZlbnRDYW5jZWwg
PSB1bmRlZmluZWQgKGZhbHN5KTsgZnVsZmlsbGVkIGNhbmNlbCBwcm9taXNlIENhbid0IGZpbmQg
dmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIENsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVk
IGJhY2t3YXJkOiBzdGFydHMgY2xvc2VkOyBwcmV2ZW50Q2FuY2VsID0gbnVsbCAoZmFsc3kpOyBm
dWxmaWxsZWQgY2FuY2VsIHByb21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJl
YW0KLUZBSUwgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IHN0YXJ0cyBjbG9z
ZWQ7IHByZXZlbnRDYW5jZWwgPSBmYWxzZSAoZmFsc3kpOyBmdWxmaWxsZWQgY2FuY2VsIHByb21p
c2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgQ2xvc2luZyBtdXN0
IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IHN0YXJ0cyBjbG9zZWQ7IHByZXZlbnRDYW5jZWwgPSAw
IChmYWxzeSk7IGZ1bGZpbGxlZCBjYW5jZWwgcHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBX
cml0YWJsZVN0cmVhbQotRkFJTCBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDog
c3RhcnRzIGNsb3NlZDsgcHJldmVudENhbmNlbCA9IC0wIChmYWxzeSk7IGZ1bGZpbGxlZCBjYW5j
ZWwgcHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBDbG9z
aW5nIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogc3RhcnRzIGNsb3NlZDsgcHJldmVudENh
bmNlbCA9IE5hTiAoZmFsc3kpOyBmdWxmaWxsZWQgY2FuY2VsIHByb21pc2UgQ2FuJ3QgZmluZCB2
YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQg
YmFja3dhcmQ6IHN0YXJ0cyBjbG9zZWQ7IHByZXZlbnRDYW5jZWwgPSAgKGZhbHN5KTsgZnVsZmls
bGVkIGNhbmNlbCBwcm9taXNlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1G
QUlMIENsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBzdGFydHMgY2xvc2VkOyBw
cmV2ZW50Q2FuY2VsID0gdHJ1ZSAodHJ1dGh5KSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJs
ZVN0cmVhbQotRkFJTCBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogc3RhcnRz
IGNsb3NlZDsgcHJldmVudENhbmNlbCA9IGEgKHRydXRoeSkgQ2FuJ3QgZmluZCB2YXJpYWJsZTog
V3JpdGFibGVTdHJlYW0KLUZBSUwgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6
IHN0YXJ0cyBjbG9zZWQ7IHByZXZlbnRDYW5jZWwgPSAxICh0cnV0aHkpIENhbid0IGZpbmQgdmFy
aWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIENsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGJh
Y2t3YXJkOiBzdGFydHMgY2xvc2VkOyBwcmV2ZW50Q2FuY2VsID0gU3ltYm9sKCkgKHRydXRoeSkg
Q2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgQ2xvc2luZyBtdXN0IGJl
IHByb3BhZ2F0ZWQgYmFja3dhcmQ6IHN0YXJ0cyBjbG9zZWQ7IHByZXZlbnRDYW5jZWwgPSBbb2Jq
ZWN0IE9iamVjdF0gKHRydXRoeSkgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0K
LUZBSUwgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IHN0YXJ0cyBjbG9zZWQ7
IHByZXZlbnRDYW5jZWwgPSB0cnVlLCBwcmV2ZW50QWJvcnQgPSB0cnVlIENhbid0IGZpbmQgdmFy
aWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIENsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGJh
Y2t3YXJkOiBzdGFydHMgY2xvc2VkOyBwcmV2ZW50Q2FuY2VsID0gdHJ1ZSwgcHJldmVudEFib3J0
ID0gdHJ1ZSwgcHJldmVudENsb3NlID0gdHJ1ZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJs
ZVN0cmVhbQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Nsb3NlLXByb3BhZ2F0aW9uLWJhY2t3YXJkLnNlcnZp
Y2V3b3JrZXIuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvY2xvc2UtcHJvcGFnYXRpb24tYmFja3dhcmQuc2Vydmlj
ZXdvcmtlci5odHRwcy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NmIzMDQw
NmU5ODE1MzU5ZmI2M2Q5NzRkOTBkMGVmYWUyNWZlNzUxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvY2xvc2UtcHJvcGFnYXRpb24tYmFja3dhcmQuc2Vy
dmljZXdvcmtlci5odHRwcy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotPCFE
T0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08dGl0bGU+Y2xvc2UtcHJvcGFn
YXRpb24tYmFja3dhcmQuanMgc2VydmljZSB3b3JrZXIgd3JhcHBlciBmaWxlPC90aXRsZT4KLQot
PHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlw
dCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlw
dCBzcmM9Ii9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvcmVzb3VyY2VzL3Rlc3QtaGVs
cGVycy5zdWIuanMiPjwvc2NyaXB0PgotCi08c2NyaXB0PgotJ3VzZSBzdHJpY3QnOwotc2Vydmlj
ZV93b3JrZXJfdGVzdCgnY2xvc2UtcHJvcGFnYXRpb24tYmFja3dhcmQuanMnLCAnU2VydmljZSB3
b3JrZXIgdGVzdCBzZXR1cCcpOwotPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Nsb3NlLXByb3Bh
Z2F0aW9uLWJhY2t3YXJkLnNoYXJlZHdvcmtlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Nsb3NlLXByb3Bh
Z2F0aW9uLWJhY2t3YXJkLnNoYXJlZHdvcmtlci1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDA5ZDVkMjUwOWQ3ODQ3ZThjZDZmZTY2MDZhYTYwY2RkMzNhYTQ3NGUu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9jbG9zZS1w
cm9wYWdhdGlvbi1iYWNrd2FyZC5zaGFyZWR3b3JrZXItZXhwZWN0ZWQudHh0CisrKyAvZGV2L251
bGwKQEAgLTEsNSArMCwwIEBACi1DT05TT0xFIE1FU1NBR0U6IFJlZmVyZW5jZUVycm9yOiBDYW4n
dCBmaW5kIHZhcmlhYmxlOiBTaGFyZWRXb3JrZXIKLQotSGFybmVzcyBFcnJvciAoRkFJTCksIG1l
c3NhZ2UgPSBSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogU2hhcmVkV29ya2Vy
Ci0KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL3BpcGluZy9jbG9zZS1wcm9wYWdhdGlvbi1iYWNrd2FyZC5zaGFyZWR3b3Jr
ZXIuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy9waXBpbmcvY2xvc2UtcHJvcGFnYXRpb24tYmFja3dhcmQuc2hhcmVkd29ya2VyLmh0bWwK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVkMTliNzY4ODg0NzhkNDI3YmE3OTBhZTNl
MGZjMmZjYjRkZTE5YjMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
L3BpcGluZy9jbG9zZS1wcm9wYWdhdGlvbi1iYWNrd2FyZC5zaGFyZWR3b3JrZXIuaHRtbAorKysg
L2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNl
dD0idXRmLTgiPgotPHRpdGxlPmNsb3NlLXByb3BhZ2F0aW9uLWJhY2t3YXJkLmpzIHNoYXJlZCB3
b3JrZXIgd3JhcHBlciBmaWxlPC90aXRsZT4KLQotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVz
dGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5l
c3NyZXBvcnQuanMiPjwvc2NyaXB0PgotCi08c2NyaXB0PgotJ3VzZSBzdHJpY3QnOwotZmV0Y2hf
dGVzdHNfZnJvbV93b3JrZXIobmV3IFNoYXJlZFdvcmtlcignY2xvc2UtcHJvcGFnYXRpb24tYmFj
a3dhcmQuanMnKSk7Ci08L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvY2xvc2UtcHJvcGFnYXRpb24t
Zm9yd2FyZC5hbnktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9jbG9zZS1wcm9wYWdhdGlvbi1mb3J3YXJkLmFu
eS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWRmMDkxNDU1ODA1ZmU4ZDg2MWZiNTg0ZWNhNDIy
MzBjZDVkOTU1NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvY2xvc2UtcHJvcGFnYXRpb24tZm9yd2Fy
ZC5hbnktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNDEgQEAKK0NPTlNPTEUgTUVTU0FHRTogVW5o
YW5kbGVkIFByb21pc2UgUmVqZWN0aW9uOiBUeXBlRXJyb3I6IGNhbmNlbCgpIGNhbGxlZCBvbiBh
IHJlYWRlciBvd25lZCBieSBubyByZWFkYWJsZSBzdHJlYW0KK0NPTlNPTEUgTUVTU0FHRTogVW5o
YW5kbGVkIFByb21pc2UgUmVqZWN0aW9uOiBUeXBlRXJyb3I6IGNhbmNlbCgpIGNhbGxlZCBvbiBh
IHJlYWRlciBvd25lZCBieSBubyByZWFkYWJsZSBzdHJlYW0KK0NPTlNPTEUgTUVTU0FHRTogVW5o
YW5kbGVkIFByb21pc2UgUmVqZWN0aW9uOiBUeXBlRXJyb3I6IGNhbmNlbCgpIGNhbGxlZCBvbiBh
IHJlYWRlciBvd25lZCBieSBubyByZWFkYWJsZSBzdHJlYW0KK0NPTlNPTEUgTUVTU0FHRTogVW5o
YW5kbGVkIFByb21pc2UgUmVqZWN0aW9uOiBUeXBlRXJyb3I6IGNhbmNlbCgpIGNhbGxlZCBvbiBh
IHJlYWRlciBvd25lZCBieSBubyByZWFkYWJsZSBzdHJlYW0KK0NPTlNPTEUgTUVTU0FHRTogVW5o
YW5kbGVkIFByb21pc2UgUmVqZWN0aW9uOiBlcnJvcjE6IGVycm9yMSEKK0NPTlNPTEUgTUVTU0FH
RTogVW5oYW5kbGVkIFByb21pc2UgUmVqZWN0aW9uOiBlcnJvcjE6IGVycm9yMSEKK0NPTlNPTEUg
TUVTU0FHRTogVW5oYW5kbGVkIFByb21pc2UgUmVqZWN0aW9uOiBUeXBlRXJyb3I6IGNhbmNlbCgp
IGNhbGxlZCBvbiBhIHJlYWRlciBvd25lZCBieSBubyByZWFkYWJsZSBzdHJlYW0KKworSGFybmVz
cyBFcnJvciAoRkFJTCksIG1lc3NhZ2UgPSBVbmhhbmRsZWQgcmVqZWN0aW9uOiBjYW5jZWwoKSBj
YWxsZWQgb24gYSByZWFkZXIgb3duZWQgYnkgbm8gcmVhZGFibGUgc3RyZWFtCisKK0ZBSUwgQ2xv
c2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc3RhcnRzIGNsb3NlZDsgcHJldmVudENs
b3NlIG9taXR0ZWQ7IGZ1bGZpbGxlZCBjbG9zZSBwcm9taXNlIHByb21pc2VfdGVzdDogVW5oYW5k
bGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVFcnJvcjogd3MuZ2V0V3JpdGVy
IGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicg
aXMgdW5kZWZpbmVkKSIKK0ZBSUwgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDog
c3RhcnRzIGNsb3NlZDsgcHJldmVudENsb3NlIG9taXR0ZWQ7IHJlamVjdGVkIGNsb3NlIHByb21p
c2UgcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAi
VHlwZUVycm9yOiB3cy5nZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3Jp
dGVyKCknLCAnd3MuZ2V0V3JpdGVyJyBpcyB1bmRlZmluZWQpIgorRkFJTCBDbG9zaW5nIG11c3Qg
YmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBzdGFydHMgY2xvc2VkOyBwcmV2ZW50Q2xvc2UgPSB1bmRl
ZmluZWQgKGZhbHN5KTsgZnVsZmlsbGVkIGNsb3NlIHByb21pc2UgcHJvbWlzZV90ZXN0OiBVbmhh
bmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiVHlwZUVycm9yOiB3cy5nZXRXcml0
ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3JpdGVyKCknLCAnd3MuZ2V0V3JpdGVy
JyBpcyB1bmRlZmluZWQpIgorRkFJTCBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJk
OiBzdGFydHMgY2xvc2VkOyBwcmV2ZW50Q2xvc2UgPSBudWxsIChmYWxzeSk7IGZ1bGZpbGxlZCBj
bG9zZSBwcm9taXNlIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVl
OiBvYmplY3QgIlR5cGVFcnJvcjogd3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4g
J3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicgaXMgdW5kZWZpbmVkKSIKK0ZBSUwgQ2xv
c2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc3RhcnRzIGNsb3NlZDsgcHJldmVudENs
b3NlID0gZmFsc2UgKGZhbHN5KTsgZnVsZmlsbGVkIGNsb3NlIHByb21pc2UgcHJvbWlzZV90ZXN0
OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiVHlwZUVycm9yOiB3cy5n
ZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3JpdGVyKCknLCAnd3MuZ2V0
V3JpdGVyJyBpcyB1bmRlZmluZWQpIgorRkFJTCBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBm
b3J3YXJkOiBzdGFydHMgY2xvc2VkOyBwcmV2ZW50Q2xvc2UgPSAwIChmYWxzeSk7IGZ1bGZpbGxl
ZCBjbG9zZSBwcm9taXNlIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZh
bHVlOiBvYmplY3QgIlR5cGVFcnJvcjogd3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAo
SW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicgaXMgdW5kZWZpbmVkKSIKK0ZBSUwg
Q2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc3RhcnRzIGNsb3NlZDsgcHJldmVu
dENsb3NlID0gLTAgKGZhbHN5KTsgZnVsZmlsbGVkIGNsb3NlIHByb21pc2UgcHJvbWlzZV90ZXN0
OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiVHlwZUVycm9yOiB3cy5n
ZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3JpdGVyKCknLCAnd3MuZ2V0
V3JpdGVyJyBpcyB1bmRlZmluZWQpIgorRkFJTCBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBm
b3J3YXJkOiBzdGFydHMgY2xvc2VkOyBwcmV2ZW50Q2xvc2UgPSBOYU4gKGZhbHN5KTsgZnVsZmls
bGVkIGNsb3NlIHByb21pc2UgcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGgg
dmFsdWU6IG9iamVjdCAiVHlwZUVycm9yOiB3cy5nZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rpb24u
IChJbiAnd3MuZ2V0V3JpdGVyKCknLCAnd3MuZ2V0V3JpdGVyJyBpcyB1bmRlZmluZWQpIgorRkFJ
TCBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBzdGFydHMgY2xvc2VkOyBwcmV2
ZW50Q2xvc2UgPSAgKGZhbHN5KTsgZnVsZmlsbGVkIGNsb3NlIHByb21pc2UgcHJvbWlzZV90ZXN0
OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiVHlwZUVycm9yOiB3cy5n
ZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3JpdGVyKCknLCAnd3MuZ2V0
V3JpdGVyJyBpcyB1bmRlZmluZWQpIgorUEFTUyBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBm
b3J3YXJkOiBzdGFydHMgY2xvc2VkOyBwcmV2ZW50Q2xvc2UgPSB0cnVlICh0cnV0aHkpIAorUEFT
UyBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBzdGFydHMgY2xvc2VkOyBwcmV2
ZW50Q2xvc2UgPSBhICh0cnV0aHkpIAorUEFTUyBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBm
b3J3YXJkOiBzdGFydHMgY2xvc2VkOyBwcmV2ZW50Q2xvc2UgPSAxICh0cnV0aHkpIAorUEFTUyBD
bG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBzdGFydHMgY2xvc2VkOyBwcmV2ZW50
Q2xvc2UgPSBTeW1ib2woKSAodHJ1dGh5KSAKK1BBU1MgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0
ZWQgZm9yd2FyZDogc3RhcnRzIGNsb3NlZDsgcHJldmVudENsb3NlID0gW29iamVjdCBPYmplY3Rd
ICh0cnV0aHkpIAorUEFTUyBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBzdGFy
dHMgY2xvc2VkOyBwcmV2ZW50Q2xvc2UgPSB0cnVlLCBwcmV2ZW50QWJvcnQgPSB0cnVlIAorUEFT
UyBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBzdGFydHMgY2xvc2VkOyBwcmV2
ZW50Q2xvc2UgPSB0cnVlLCBwcmV2ZW50QWJvcnQgPSB0cnVlLCBwcmV2ZW50Q2FuY2VsID0gdHJ1
ZSAKK0ZBSUwgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogYmVjb21lcyBjbG9z
ZWQgYXN5bmNocm9ub3VzbHk7IHByZXZlbnRDbG9zZSBvbWl0dGVkOyBmdWxmaWxsZWQgY2xvc2Ug
cHJvbWlzZSBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2Jq
ZWN0ICJUeXBlRXJyb3I6IHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5n
ZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkiCitGQUlMIENsb3Npbmcg
bXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IGJlY29tZXMgY2xvc2VkIGFzeW5jaHJvbm91c2x5
OyBwcmV2ZW50Q2xvc2Ugb21pdHRlZDsgcmVqZWN0ZWQgY2xvc2UgcHJvbWlzZSBwcm9taXNlX3Rl
c3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJUeXBlRXJyb3I6IHdz
LmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5n
ZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkiCitQQVNTIENsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVk
IGZvcndhcmQ6IGJlY29tZXMgY2xvc2VkIGFzeW5jaHJvbm91c2x5OyBwcmV2ZW50Q2xvc2UgPSB0
cnVlIAorRkFJTCBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBiZWNvbWVzIGNs
b3NlZCBhc3luY2hyb25vdXNseTsgZGVzdCBuZXZlciBkZXNpcmVzIGNodW5rczsgcHJldmVudENs
b3NlIG9taXR0ZWQ7IGZ1bGZpbGxlZCBjbG9zZSBwcm9taXNlIHByb21pc2VfdGVzdDogVW5oYW5k
bGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVFcnJvcjogd3MuZ2V0V3JpdGVy
IGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicg
aXMgdW5kZWZpbmVkKSIKK0ZBSUwgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDog
YmVjb21lcyBjbG9zZWQgYXN5bmNocm9ub3VzbHk7IGRlc3QgbmV2ZXIgZGVzaXJlcyBjaHVua3M7
IHByZXZlbnRDbG9zZSBvbWl0dGVkOyByZWplY3RlZCBjbG9zZSBwcm9taXNlIHByb21pc2VfdGVz
dDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVFcnJvcjogd3Mu
Z2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdl
dFdyaXRlcicgaXMgdW5kZWZpbmVkKSIKK1BBU1MgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQg
Zm9yd2FyZDogYmVjb21lcyBjbG9zZWQgYXN5bmNocm9ub3VzbHk7IGRlc3QgbmV2ZXIgZGVzaXJl
cyBjaHVua3M7IHByZXZlbnRDbG9zZSA9IHRydWUgCitGQUlMIENsb3NpbmcgbXVzdCBiZSBwcm9w
YWdhdGVkIGZvcndhcmQ6IGJlY29tZXMgY2xvc2VkIGFmdGVyIG9uZSBjaHVuazsgcHJldmVudENs
b3NlIG9taXR0ZWQ7IGZ1bGZpbGxlZCBjbG9zZSBwcm9taXNlIHByb21pc2VfdGVzdDogVW5oYW5k
bGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVFcnJvcjogd3MuZ2V0V3JpdGVy
IGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicg
aXMgdW5kZWZpbmVkKSIKK0ZBSUwgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDog
YmVjb21lcyBjbG9zZWQgYWZ0ZXIgb25lIGNodW5rOyBwcmV2ZW50Q2xvc2Ugb21pdHRlZDsgcmVq
ZWN0ZWQgY2xvc2UgcHJvbWlzZSBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0
aCB2YWx1ZTogb2JqZWN0ICJUeXBlRXJyb3I6IHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlv
bi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkiCitQ
QVNTIENsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IGJlY29tZXMgY2xvc2VkIGFm
dGVyIG9uZSBjaHVuazsgcHJldmVudENsb3NlID0gdHJ1ZSAKK1BBU1MgQ2xvc2luZyBtdXN0IGJl
IHByb3BhZ2F0ZWQgZm9yd2FyZDogc2h1dGRvd24gbXVzdCBub3Qgb2NjdXIgdW50aWwgdGhlIGZp
bmFsIHdyaXRlIGNvbXBsZXRlcyAKK1BBU1MgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9y
d2FyZDogc2h1dGRvd24gbXVzdCBub3Qgb2NjdXIgdW50aWwgdGhlIGZpbmFsIHdyaXRlIGNvbXBs
ZXRlczsgcHJldmVudENsb3NlID0gdHJ1ZSAKK1BBU1MgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0
ZWQgZm9yd2FyZDogc2h1dGRvd24gbXVzdCBub3Qgb2NjdXIgdW50aWwgdGhlIGZpbmFsIHdyaXRl
IGNvbXBsZXRlczsgYmVjb21lcyBjbG9zZWQgYWZ0ZXIgZmlyc3Qgd3JpdGUgCitQQVNTIENsb3Np
bmcgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHNodXRkb3duIG11c3Qgbm90IG9jY3VyIHVu
dGlsIHRoZSBmaW5hbCB3cml0ZSBjb21wbGV0ZXM7IGJlY29tZXMgY2xvc2VkIGFmdGVyIGZpcnN0
IHdyaXRlOyBwcmV2ZW50Q2xvc2UgPSB0cnVlIAorRkFJTCBDbG9zaW5nIG11c3QgYmUgcHJvcGFn
YXRlZCBmb3J3YXJkOiBlcnJvcmluZyB0aGUgd3JpdGFibGUgd2hpbGUgZmx1c2hpbmcgcGVuZGlu
ZyB3cml0ZXMgc2hvdWxkIGVycm9yIHBpcGVUbyBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWpl
Y3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJUeXBlRXJyb3I6IHdzLmdldFdyaXRlciBpcyBub3Qg
YSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVm
aW5lZCkiCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvY2xvc2UtcHJvcGFnYXRpb24tZm9yd2FyZC5hbnkuaHRt
bCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9w
aXBpbmcvY2xvc2UtcHJvcGFnYXRpb24tZm9yd2FyZC5hbnkuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMzgy
OTEzNTI4ZTY5M2IzYTVkNTZjNjYwYTQ1MDYwOTgwYjU0OGMzCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGlu
Zy9jbG9zZS1wcm9wYWdhdGlvbi1mb3J3YXJkLmFueS5odG1sCkBAIC0wLDAgKzEgQEAKKzwhLS0g
VGhpcyBmaWxlIGlzIHJlcXVpcmVkIGZvciBXZWJLaXQgdGVzdCBpbmZyYXN0cnVjdHVyZSB0byBy
dW4gdGhlIHRlbXBsYXRlZCB0ZXN0IC0tPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy9waXBpbmcvY2xvc2UtcHJvcGFnYXRpb24tZm9yd2FyZC5hbnkuanMgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Nsb3NlLXBy
b3BhZ2F0aW9uLWZvcndhcmQuYW55LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZjMzI4MmVlYTc0YjQwZjM5NTM5
NWI0MDcwOTBlZjA1MGIxYmQzNDkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Nsb3NlLXByb3BhZ2F0
aW9uLWZvcndhcmQuYW55LmpzCkBAIC0wLDAgKzEsNTg5IEBACisvLyBNRVRBOiBnbG9iYWw9d2lu
ZG93LHdvcmtlcixqc3NoZWxsCisvLyBNRVRBOiBzY3JpcHQ9Li4vcmVzb3VyY2VzL3Rlc3QtdXRp
bHMuanMKKy8vIE1FVEE6IHNjcmlwdD0uLi9yZXNvdXJjZXMvcmVjb3JkaW5nLXN0cmVhbXMuanMK
Kyd1c2Ugc3RyaWN0JzsKKworY29uc3QgZXJyb3IxID0gbmV3IEVycm9yKCdlcnJvcjEhJyk7Citl
cnJvcjEubmFtZSA9ICdlcnJvcjEnOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworCisgIGNvbnN0
IHJzID0gcmVjb3JkaW5nUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGNvbnRyb2xsZXIpIHsK
KyAgICAgIGNvbnRyb2xsZXIuY2xvc2UoKTsKKyAgICB9CisgIH0pOworCisgIGNvbnN0IHdzID0g
cmVjb3JkaW5nV3JpdGFibGVTdHJlYW0oKTsKKworICByZXR1cm4gcnMucGlwZVRvKHdzKS50aGVu
KHZhbHVlID0+IHsKKyAgICBhc3NlcnRfZXF1YWxzKHZhbHVlLCB1bmRlZmluZWQsICd0aGUgcHJv
bWlzZSBtdXN0IGZ1bGZpbGwgd2l0aCB1bmRlZmluZWQnKTsKKyAgfSkKKyAgLnRoZW4oKCkgPT4g
eworICAgIGFzc2VydF9hcnJheV9lcXVhbHMocnMuZXZlbnRzLCBbXSk7CisgICAgYXNzZXJ0X2Fy
cmF5X2VxdWFscyh3cy5ldmVudHMsIFsnY2xvc2UnXSk7CisKKyAgICByZXR1cm4gUHJvbWlzZS5h
bGwoWworICAgICAgcnMuZ2V0UmVhZGVyKCkuY2xvc2VkLAorICAgICAgd3MuZ2V0V3JpdGVyKCku
Y2xvc2VkCisgICAgXSk7CisgIH0pOworCit9LCAnQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQg
Zm9yd2FyZDogc3RhcnRzIGNsb3NlZDsgcHJldmVudENsb3NlIG9taXR0ZWQ7IGZ1bGZpbGxlZCBj
bG9zZSBwcm9taXNlJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKworICBjb25zdCBycyA9IHJl
Y29yZGluZ1JlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjb250cm9sbGVyKSB7CisgICAgICBj
b250cm9sbGVyLmNsb3NlKCk7CisgICAgfQorICB9KTsKKworICBjb25zdCB3cyA9IHJlY29yZGlu
Z1dyaXRhYmxlU3RyZWFtKHsKKyAgICBjbG9zZSgpIHsKKyAgICAgIHRocm93IGVycm9yMTsKKyAg
ICB9CisgIH0pOworCisgIHJldHVybiBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEs
IHJzLnBpcGVUbyh3cyksICdwaXBlVG8gbXVzdCByZWplY3Qgd2l0aCB0aGUgc2FtZSBlcnJvcicp
LnRoZW4oKCkgPT4geworICAgIGFzc2VydF9hcnJheV9lcXVhbHMocnMuZXZlbnRzLCBbXSk7Cisg
ICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsnY2xvc2UnXSk7CisKKyAgICByZXR1
cm4gUHJvbWlzZS5hbGwoWworICAgICAgcnMuZ2V0UmVhZGVyKCkuY2xvc2VkLAorICAgICAgcHJv
bWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCB3cy5nZXRXcml0ZXIoKS5jbG9zZWQpCisg
ICAgXSk7CisgIH0pOworCit9LCAnQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDog
c3RhcnRzIGNsb3NlZDsgcHJldmVudENsb3NlIG9taXR0ZWQ7IHJlamVjdGVkIGNsb3NlIHByb21p
c2UnKTsKKworZm9yIChjb25zdCBmYWxzeSBvZiBbdW5kZWZpbmVkLCBudWxsLCBmYWxzZSwgKzAs
IC0wLCBOYU4sICcnXSkgeworICBjb25zdCBzdHJpbmdWZXJzaW9uID0gT2JqZWN0LmlzKGZhbHN5
LCAtMCkgPyAnLTAnIDogU3RyaW5nKGZhbHN5KTsKKworICBwcm9taXNlX3Rlc3QoKCkgPT4gewor
CisgICAgY29uc3QgcnMgPSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSh7CisgICAgICBzdGFydChj
b250cm9sbGVyKSB7CisgICAgICAgIGNvbnRyb2xsZXIuY2xvc2UoKTsKKyAgICAgIH0KKyAgICB9
KTsKKworICAgIGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0oKTsKKworICAgIHJl
dHVybiBycy5waXBlVG8od3MsIHsgcHJldmVudENsb3NlOiBmYWxzeSB9KS50aGVuKHZhbHVlID0+
IHsKKyAgICAgIGFzc2VydF9lcXVhbHModmFsdWUsIHVuZGVmaW5lZCwgJ3RoZSBwcm9taXNlIG11
c3QgZnVsZmlsbCB3aXRoIHVuZGVmaW5lZCcpOworICAgIH0pCisgICAgLnRoZW4oKCkgPT4gewor
ICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhycy5ldmVudHMsIFtdKTsKKyAgICAgIGFzc2VydF9h
cnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ2Nsb3NlJ10pOworCisgICAgICByZXR1cm4gUHJvbWlz
ZS5hbGwoWworICAgICAgICBycy5nZXRSZWFkZXIoKS5jbG9zZWQsCisgICAgICAgIHdzLmdldFdy
aXRlcigpLmNsb3NlZAorICAgICAgXSk7CisgICAgfSk7CisKKyAgfSwgYENsb3NpbmcgbXVzdCBi
ZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHN0YXJ0cyBjbG9zZWQ7IHByZXZlbnRDbG9zZSA9ICR7c3Ry
aW5nVmVyc2lvbn0gKGZhbHN5KTsgZnVsZmlsbGVkIGNsb3NlIGAgKworICAgICBgcHJvbWlzZWAp
OworfQorCitmb3IgKGNvbnN0IHRydXRoeSBvZiBbdHJ1ZSwgJ2EnLCAxLCBTeW1ib2woKSwgeyB9
XSkgeworICBwcm9taXNlX3Rlc3QoKCkgPT4geworCisgICAgY29uc3QgcnMgPSByZWNvcmRpbmdS
ZWFkYWJsZVN0cmVhbSh7CisgICAgICBzdGFydChjb250cm9sbGVyKSB7CisgICAgICAgIGNvbnRy
b2xsZXIuY2xvc2UoKTsKKyAgICAgIH0KKyAgICB9KTsKKworICAgIGNvbnN0IHdzID0gcmVjb3Jk
aW5nV3JpdGFibGVTdHJlYW0oKTsKKworICAgIHJldHVybiBycy5waXBlVG8od3MsIHsgcHJldmVu
dENsb3NlOiB0cnV0aHkgfSkudGhlbih2YWx1ZSA9PiB7CisgICAgICBhc3NlcnRfZXF1YWxzKHZh
bHVlLCB1bmRlZmluZWQsICd0aGUgcHJvbWlzZSBtdXN0IGZ1bGZpbGwgd2l0aCB1bmRlZmluZWQn
KTsKKyAgICB9KQorICAgIC50aGVuKCgpID0+IHsKKyAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMo
cnMuZXZlbnRzLCBbXSk7CisgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgW10p
OworCisgICAgICByZXR1cm4gcnMuZ2V0UmVhZGVyKCkuY2xvc2VkOworICAgIH0pOworCisgIH0s
IGBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBzdGFydHMgY2xvc2VkOyBwcmV2
ZW50Q2xvc2UgPSAke1N0cmluZyh0cnV0aHkpfSAodHJ1dGh5KWApOworfQorCitwcm9taXNlX3Rl
c3QoKCkgPT4geworCisgIGNvbnN0IHJzID0gcmVjb3JkaW5nUmVhZGFibGVTdHJlYW0oeworICAg
IHN0YXJ0KGNvbnRyb2xsZXIpIHsKKyAgICAgIGNvbnRyb2xsZXIuY2xvc2UoKTsKKyAgICB9Cisg
IH0pOworCisgIGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0oKTsKKworICByZXR1
cm4gcnMucGlwZVRvKHdzLCB7IHByZXZlbnRDbG9zZTogdHJ1ZSwgcHJldmVudEFib3J0OiB0cnVl
IH0pLnRoZW4odmFsdWUgPT4geworICAgIGFzc2VydF9lcXVhbHModmFsdWUsIHVuZGVmaW5lZCwg
J3RoZSBwcm9taXNlIG11c3QgZnVsZmlsbCB3aXRoIHVuZGVmaW5lZCcpOworICB9KQorICAudGhl
bigoKSA9PiB7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhycy5ldmVudHMsIFtdKTsKKyAgICBh
c3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgW10pOworCisgICAgcmV0dXJuIHJzLmdldFJl
YWRlcigpLmNsb3NlZDsKKyAgfSk7CisKK30sICdDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBm
b3J3YXJkOiBzdGFydHMgY2xvc2VkOyBwcmV2ZW50Q2xvc2UgPSB0cnVlLCBwcmV2ZW50QWJvcnQg
PSB0cnVlJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisKKyAgY29uc3QgcnMgPSByZWNvcmRp
bmdSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoY29udHJvbGxlcikgeworICAgICAgY29udHJv
bGxlci5jbG9zZSgpOworICAgIH0KKyAgfSk7CisKKyAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0
YWJsZVN0cmVhbSgpOworCisgIHJldHVybiBycy5waXBlVG8od3MsIHsgcHJldmVudENsb3NlOiB0
cnVlLCBwcmV2ZW50QWJvcnQ6IHRydWUsIHByZXZlbnRDYW5jZWw6IHRydWUgfSkudGhlbih2YWx1
ZSA9PiB7CisgICAgYXNzZXJ0X2VxdWFscyh2YWx1ZSwgdW5kZWZpbmVkLCAndGhlIHByb21pc2Ug
bXVzdCBmdWxmaWxsIHdpdGggdW5kZWZpbmVkJyk7CisgIH0pCisgIC50aGVuKCgpID0+IHsKKyAg
ICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJzLmV2ZW50cywgW10pOworICAgIGFzc2VydF9hcnJheV9l
cXVhbHMod3MuZXZlbnRzLCBbXSk7CisKKyAgICByZXR1cm4gcnMuZ2V0UmVhZGVyKCkuY2xvc2Vk
OworICB9KTsKKworfSwgJ0Nsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHN0YXJ0
cyBjbG9zZWQ7IHByZXZlbnRDbG9zZSA9IHRydWUsIHByZXZlbnRBYm9ydCA9IHRydWUsIHByZXZl
bnRDYW5jZWwgPSB0cnVlJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKworICBjb25zdCBycyA9
IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKCk7CisKKyAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0
YWJsZVN0cmVhbSgpOworCisgIGNvbnN0IHBpcGVQcm9taXNlID0gcnMucGlwZVRvKHdzKTsKKwor
ICB0LnN0ZXBfdGltZW91dCgoKSA9PiBycy5jb250cm9sbGVyLmNsb3NlKCkpOworCisgIHJldHVy
biBwaXBlUHJvbWlzZS50aGVuKHZhbHVlID0+IHsKKyAgICBhc3NlcnRfZXF1YWxzKHZhbHVlLCB1
bmRlZmluZWQsICd0aGUgcHJvbWlzZSBtdXN0IGZ1bGZpbGwgd2l0aCB1bmRlZmluZWQnKTsKKyAg
fSkKKyAgLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9hcnJheV9lcXVhbHMocnMuZXZlbnRzV2l0
aG91dFB1bGxzLCBbXSk7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsnY2xv
c2UnXSk7CisKKyAgICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAgICAgcnMuZ2V0UmVhZGVyKCku
Y2xvc2VkLAorICAgICAgd3MuZ2V0V3JpdGVyKCkuY2xvc2VkCisgICAgXSk7CisgIH0pOworCit9
LCAnQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogYmVjb21lcyBjbG9zZWQgYXN5
bmNocm9ub3VzbHk7IHByZXZlbnRDbG9zZSBvbWl0dGVkOyBmdWxmaWxsZWQgY2xvc2UgcHJvbWlz
ZScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisKKyAgY29uc3QgcnMgPSByZWNvcmRpbmdSZWFk
YWJsZVN0cmVhbSgpOworCisgIGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0oewor
ICAgIGNsb3NlKCkgeworICAgICAgdGhyb3cgZXJyb3IxOworICAgIH0KKyAgfSk7CisKKyAgY29u
c3QgcGlwZVByb21pc2UgPSBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIHJzLnBp
cGVUbyh3cyksICdwaXBlVG8gbXVzdCByZWplY3Qgd2l0aCB0aGUgc2FtZSBlcnJvcicpOworCisg
IHQuc3RlcF90aW1lb3V0KCgpID0+IHJzLmNvbnRyb2xsZXIuY2xvc2UoKSk7CisKKyAgcmV0dXJu
IHBpcGVQcm9taXNlLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9hcnJheV9lcXVhbHMocnMuZXZl
bnRzV2l0aG91dFB1bGxzLCBbXSk7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMs
IFsnY2xvc2UnXSk7CisKKyAgICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAgICAgcnMuZ2V0UmVh
ZGVyKCkuY2xvc2VkLAorICAgICAgcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCB3
cy5nZXRXcml0ZXIoKS5jbG9zZWQpCisgICAgXSk7CisgIH0pOworCit9LCAnQ2xvc2luZyBtdXN0
IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogYmVjb21lcyBjbG9zZWQgYXN5bmNocm9ub3VzbHk7IHBy
ZXZlbnRDbG9zZSBvbWl0dGVkOyByZWplY3RlZCBjbG9zZSBwcm9taXNlJyk7CisKK3Byb21pc2Vf
dGVzdCh0ID0+IHsKKworICBjb25zdCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKCk7CisK
KyAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSgpOworCisgIGNvbnN0IHBpcGVQ
cm9taXNlID0gcnMucGlwZVRvKHdzLCB7IHByZXZlbnRDbG9zZTogdHJ1ZSB9KTsKKworICB0LnN0
ZXBfdGltZW91dCgoKSA9PiBycy5jb250cm9sbGVyLmNsb3NlKCkpOworCisgIHJldHVybiBwaXBl
UHJvbWlzZS50aGVuKHZhbHVlID0+IHsKKyAgICBhc3NlcnRfZXF1YWxzKHZhbHVlLCB1bmRlZmlu
ZWQsICd0aGUgcHJvbWlzZSBtdXN0IGZ1bGZpbGwgd2l0aCB1bmRlZmluZWQnKTsKKyAgfSkKKyAg
LnRoZW4oKCkgPT4geworICAgIGFzc2VydF9hcnJheV9lcXVhbHMocnMuZXZlbnRzV2l0aG91dFB1
bGxzLCBbXSk7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFtdKTsKKworICAg
IHJldHVybiBycy5nZXRSZWFkZXIoKS5jbG9zZWQ7CisgIH0pOworCit9LCAnQ2xvc2luZyBtdXN0
IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogYmVjb21lcyBjbG9zZWQgYXN5bmNocm9ub3VzbHk7IHBy
ZXZlbnRDbG9zZSA9IHRydWUnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworCisgIGNvbnN0IHJz
ID0gcmVjb3JkaW5nUmVhZGFibGVTdHJlYW0oKTsKKworICBjb25zdCB3cyA9IHJlY29yZGluZ1dy
aXRhYmxlU3RyZWFtKHVuZGVmaW5lZCwgbmV3IENvdW50UXVldWluZ1N0cmF0ZWd5KHsgaGlnaFdh
dGVyTWFyazogMCB9KSk7CisKKyAgY29uc3QgcGlwZVByb21pc2UgPSBycy5waXBlVG8od3MpOwor
CisgIHQuc3RlcF90aW1lb3V0KCgpID0+IHJzLmNvbnRyb2xsZXIuY2xvc2UoKSk7CisKKyAgcmV0
dXJuIHBpcGVQcm9taXNlLnRoZW4odmFsdWUgPT4geworICAgIGFzc2VydF9lcXVhbHModmFsdWUs
IHVuZGVmaW5lZCwgJ3RoZSBwcm9taXNlIG11c3QgZnVsZmlsbCB3aXRoIHVuZGVmaW5lZCcpOwor
ICB9KQorICAudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhycy5ldmVudHNX
aXRob3V0UHVsbHMsIFtdKTsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWydj
bG9zZSddKTsKKworICAgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAgICBycy5nZXRSZWFkZXIo
KS5jbG9zZWQsCisgICAgICB3cy5nZXRXcml0ZXIoKS5jbG9zZWQKKyAgICBdKTsKKyAgfSk7CisK
K30sICdDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBiZWNvbWVzIGNsb3NlZCBh
c3luY2hyb25vdXNseTsgZGVzdCBuZXZlciBkZXNpcmVzIGNodW5rczsgJyArCisgICAncHJldmVu
dENsb3NlIG9taXR0ZWQ7IGZ1bGZpbGxlZCBjbG9zZSBwcm9taXNlJyk7CisKK3Byb21pc2VfdGVz
dCh0ID0+IHsKKworICBjb25zdCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKCk7CisKKyAg
Y29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSh7CisgICAgY2xvc2UoKSB7CisgICAg
ICB0aHJvdyBlcnJvcjE7CisgICAgfQorICB9LCBuZXcgQ291bnRRdWV1aW5nU3RyYXRlZ3koeyBo
aWdoV2F0ZXJNYXJrOiAwIH0pKTsKKworICBjb25zdCBwaXBlUHJvbWlzZSA9IHByb21pc2VfcmVq
ZWN0c19leGFjdGx5KHQsIGVycm9yMSwgcnMucGlwZVRvKHdzKSwgJ3BpcGVUbyBtdXN0IHJlamVj
dCB3aXRoIHRoZSBzYW1lIGVycm9yJyk7CisKKyAgdC5zdGVwX3RpbWVvdXQoKCkgPT4gcnMuY29u
dHJvbGxlci5jbG9zZSgpKTsKKworICByZXR1cm4gcGlwZVByb21pc2UudGhlbigoKSA9PiB7Cisg
ICAgYXNzZXJ0X2FycmF5X2VxdWFscyhycy5ldmVudHNXaXRob3V0UHVsbHMsIFtdKTsKKyAgICBh
c3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWydjbG9zZSddKTsKKworICAgIHJldHVybiBQ
cm9taXNlLmFsbChbCisgICAgICBycy5nZXRSZWFkZXIoKS5jbG9zZWQsCisgICAgICBwcm9taXNl
X3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIHdzLmdldFdyaXRlcigpLmNsb3NlZCkKKyAgICBd
KTsKKyAgfSk7CisKK30sICdDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBiZWNv
bWVzIGNsb3NlZCBhc3luY2hyb25vdXNseTsgZGVzdCBuZXZlciBkZXNpcmVzIGNodW5rczsgJyAr
CisgICAncHJldmVudENsb3NlIG9taXR0ZWQ7IHJlamVjdGVkIGNsb3NlIHByb21pc2UnKTsKKwor
cHJvbWlzZV90ZXN0KHQgPT4geworCisgIGNvbnN0IHJzID0gcmVjb3JkaW5nUmVhZGFibGVTdHJl
YW0oKTsKKworICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKHVuZGVmaW5lZCwg
bmV3IENvdW50UXVldWluZ1N0cmF0ZWd5KHsgaGlnaFdhdGVyTWFyazogMCB9KSk7CisKKyAgY29u
c3QgcGlwZVByb21pc2UgPSBycy5waXBlVG8od3MsIHsgcHJldmVudENsb3NlOiB0cnVlIH0pOwor
CisgIHQuc3RlcF90aW1lb3V0KCgpID0+IHJzLmNvbnRyb2xsZXIuY2xvc2UoKSk7CisKKyAgcmV0
dXJuIHBpcGVQcm9taXNlLnRoZW4odmFsdWUgPT4geworICAgIGFzc2VydF9lcXVhbHModmFsdWUs
IHVuZGVmaW5lZCwgJ3RoZSBwcm9taXNlIG11c3QgZnVsZmlsbCB3aXRoIHVuZGVmaW5lZCcpOwor
ICB9KQorICAudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhycy5ldmVudHNX
aXRob3V0UHVsbHMsIFtdKTsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgW10p
OworCisgICAgcmV0dXJuIHJzLmdldFJlYWRlcigpLmNsb3NlZDsKKyAgfSk7CisKK30sICdDbG9z
aW5nIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBiZWNvbWVzIGNsb3NlZCBhc3luY2hyb25v
dXNseTsgZGVzdCBuZXZlciBkZXNpcmVzIGNodW5rczsgJyArCisgICAncHJldmVudENsb3NlID0g
dHJ1ZScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisKKyAgY29uc3QgcnMgPSByZWNvcmRpbmdS
ZWFkYWJsZVN0cmVhbSgpOworCisgIGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0o
KTsKKworICBjb25zdCBwaXBlUHJvbWlzZSA9IHJzLnBpcGVUbyh3cyk7CisKKyAgdC5zdGVwX3Rp
bWVvdXQoKCkgPT4geworICAgIHJzLmNvbnRyb2xsZXIuZW5xdWV1ZSgnSGVsbG8nKTsKKyAgICB0
LnN0ZXBfdGltZW91dCgoKSA9PiBycy5jb250cm9sbGVyLmNsb3NlKCkpOworICB9LCAxMCk7CisK
KyAgcmV0dXJuIHBpcGVQcm9taXNlLnRoZW4odmFsdWUgPT4geworICAgIGFzc2VydF9lcXVhbHMo
dmFsdWUsIHVuZGVmaW5lZCwgJ3RoZSBwcm9taXNlIG11c3QgZnVsZmlsbCB3aXRoIHVuZGVmaW5l
ZCcpOworICB9KQorICAudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhycy5l
dmVudHNXaXRob3V0UHVsbHMsIFtdKTsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50
cywgWyd3cml0ZScsICdIZWxsbycsICdjbG9zZSddKTsKKworICAgIHJldHVybiBQcm9taXNlLmFs
bChbCisgICAgICBycy5nZXRSZWFkZXIoKS5jbG9zZWQsCisgICAgICB3cy5nZXRXcml0ZXIoKS5j
bG9zZWQKKyAgICBdKTsKKyAgfSk7CisKK30sICdDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBm
b3J3YXJkOiBiZWNvbWVzIGNsb3NlZCBhZnRlciBvbmUgY2h1bms7IHByZXZlbnRDbG9zZSBvbWl0
dGVkOyBmdWxmaWxsZWQgY2xvc2UgcHJvbWlzZScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisK
KyAgY29uc3QgcnMgPSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSgpOworCisgIGNvbnN0IHdzID0g
cmVjb3JkaW5nV3JpdGFibGVTdHJlYW0oeworICAgIGNsb3NlKCkgeworICAgICAgdGhyb3cgZXJy
b3IxOworICAgIH0KKyAgfSk7CisKKyAgY29uc3QgcGlwZVByb21pc2UgPSBwcm9taXNlX3JlamVj
dHNfZXhhY3RseSh0LCBlcnJvcjEsIHJzLnBpcGVUbyh3cyksICdwaXBlVG8gbXVzdCByZWplY3Qg
d2l0aCB0aGUgc2FtZSBlcnJvcicpOworCisgIHQuc3RlcF90aW1lb3V0KCgpID0+IHsKKyAgICBy
cy5jb250cm9sbGVyLmVucXVldWUoJ0hlbGxvJyk7CisgICAgdC5zdGVwX3RpbWVvdXQoKCkgPT4g
cnMuY29udHJvbGxlci5jbG9zZSgpKTsKKyAgfSwgMTApOworCisgIHJldHVybiBwaXBlUHJvbWlz
ZS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJzLmV2ZW50c1dpdGhvdXRQ
dWxscywgW10pOworICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ3dyaXRlJywg
J0hlbGxvJywgJ2Nsb3NlJ10pOworCisgICAgcmV0dXJuIFByb21pc2UuYWxsKFsKKyAgICAgIHJz
LmdldFJlYWRlcigpLmNsb3NlZCwKKyAgICAgIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVy
cm9yMSwgd3MuZ2V0V3JpdGVyKCkuY2xvc2VkKQorICAgIF0pOworICB9KTsKKworfSwgJ0Nsb3Np
bmcgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IGJlY29tZXMgY2xvc2VkIGFmdGVyIG9uZSBj
aHVuazsgcHJldmVudENsb3NlIG9taXR0ZWQ7IHJlamVjdGVkIGNsb3NlIHByb21pc2UnKTsKKwor
cHJvbWlzZV90ZXN0KHQgPT4geworCisgIGNvbnN0IHJzID0gcmVjb3JkaW5nUmVhZGFibGVTdHJl
YW0oKTsKKworICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKCk7CisKKyAgY29u
c3QgcGlwZVByb21pc2UgPSBycy5waXBlVG8od3MsIHsgcHJldmVudENsb3NlOiB0cnVlIH0pOwor
CisgIHQuc3RlcF90aW1lb3V0KCgpID0+IHsKKyAgICBycy5jb250cm9sbGVyLmVucXVldWUoJ0hl
bGxvJyk7CisgICAgdC5zdGVwX3RpbWVvdXQoKCkgPT4gcnMuY29udHJvbGxlci5jbG9zZSgpKTsK
KyAgfSwgMTApOworCisgIHJldHVybiBwaXBlUHJvbWlzZS50aGVuKHZhbHVlID0+IHsKKyAgICBh
c3NlcnRfZXF1YWxzKHZhbHVlLCB1bmRlZmluZWQsICd0aGUgcHJvbWlzZSBtdXN0IGZ1bGZpbGwg
d2l0aCB1bmRlZmluZWQnKTsKKyAgfSkKKyAgLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9hcnJh
eV9lcXVhbHMocnMuZXZlbnRzV2l0aG91dFB1bGxzLCBbXSk7CisgICAgYXNzZXJ0X2FycmF5X2Vx
dWFscyh3cy5ldmVudHMsIFsnd3JpdGUnLCAnSGVsbG8nXSk7CisKKyAgICByZXR1cm4gcnMuZ2V0
UmVhZGVyKCkuY2xvc2VkOworICB9KTsKKworfSwgJ0Nsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVk
IGZvcndhcmQ6IGJlY29tZXMgY2xvc2VkIGFmdGVyIG9uZSBjaHVuazsgcHJldmVudENsb3NlID0g
dHJ1ZScpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworCisgIGNvbnN0IHJzID0gcmVjb3JkaW5n
UmVhZGFibGVTdHJlYW0oKTsKKworICBsZXQgcmVzb2x2ZVdyaXRlUHJvbWlzZTsKKyAgY29uc3Qg
d3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSh7CisgICAgd3JpdGUoKSB7CisgICAgICByZXR1
cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7CisgICAgICAgIHJlc29sdmVXcml0ZVByb21pc2Ug
PSByZXNvbHZlOworICAgICAgfSk7CisgICAgfQorICB9KTsKKworICBsZXQgcGlwZUNvbXBsZXRl
ID0gZmFsc2U7CisgIGNvbnN0IHBpcGVQcm9taXNlID0gcnMucGlwZVRvKHdzKS50aGVuKCgpID0+
IHsKKyAgICBwaXBlQ29tcGxldGUgPSB0cnVlOworICB9KTsKKworICBycy5jb250cm9sbGVyLmVu
cXVldWUoJ2EnKTsKKyAgcnMuY29udHJvbGxlci5jbG9zZSgpOworCisgIC8vIEZsdXNoIGFzeW5j
IGV2ZW50cyBhbmQgdmVyaWZ5IHRoYXQgbm8gc2h1dGRvd24gb2NjdXJzLgorICByZXR1cm4gZmx1
c2hBc3luY0V2ZW50cygpLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3Mu
ZXZlbnRzLCBbJ3dyaXRlJywgJ2EnXSk7IC8vIG5vICdjbG9zZScKKyAgICBhc3NlcnRfZXF1YWxz
KHBpcGVDb21wbGV0ZSwgZmFsc2UsICd0aGUgcGlwZSBtdXN0IG5vdCBiZSBjb21wbGV0ZScpOwor
CisgICAgcmVzb2x2ZVdyaXRlUHJvbWlzZSgpOworCisgICAgcmV0dXJuIHBpcGVQcm9taXNlLnRo
ZW4oKCkgPT4geworICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsnd3JpdGUn
LCAnYScsICdjbG9zZSddKTsKKyAgICB9KTsKKyAgfSk7CisKK30sICdDbG9zaW5nIG11c3QgYmUg
cHJvcGFnYXRlZCBmb3J3YXJkOiBzaHV0ZG93biBtdXN0IG5vdCBvY2N1ciB1bnRpbCB0aGUgZmlu
YWwgd3JpdGUgY29tcGxldGVzJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisKKyAgY29uc3Qg
cnMgPSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSgpOworCisgIGxldCByZXNvbHZlV3JpdGVQcm9t
aXNlOworICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKHsKKyAgICB3cml0ZSgp
IHsKKyAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKKyAgICAgICAgcmVzb2x2
ZVdyaXRlUHJvbWlzZSA9IHJlc29sdmU7CisgICAgICB9KTsKKyAgICB9CisgIH0pOworCisgIGxl
dCBwaXBlQ29tcGxldGUgPSBmYWxzZTsKKyAgY29uc3QgcGlwZVByb21pc2UgPSBycy5waXBlVG8o
d3MsIHsgcHJldmVudENsb3NlOiB0cnVlIH0pLnRoZW4oKCkgPT4geworICAgIHBpcGVDb21wbGV0
ZSA9IHRydWU7CisgIH0pOworCisgIHJzLmNvbnRyb2xsZXIuZW5xdWV1ZSgnYScpOworICBycy5j
b250cm9sbGVyLmNsb3NlKCk7CisKKyAgLy8gRmx1c2ggYXN5bmMgZXZlbnRzIGFuZCB2ZXJpZnkg
dGhhdCBubyBzaHV0ZG93biBvY2N1cnMuCisgIHJldHVybiBmbHVzaEFzeW5jRXZlbnRzKCkudGhl
bigoKSA9PiB7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsnd3JpdGUnLCAn
YSddLAorICAgICAgJ3RoZSBjaHVuayBtdXN0IGhhdmUgYmVlbiB3cml0dGVuLCBidXQgY2xvc2Ug
bXVzdCBub3QgaGF2ZSBoYXBwZW5lZCcpOworICAgIGFzc2VydF9lcXVhbHMocGlwZUNvbXBsZXRl
LCBmYWxzZSwgJ3RoZSBwaXBlIG11c3Qgbm90IGJlIGNvbXBsZXRlJyk7CisKKyAgICByZXNvbHZl
V3JpdGVQcm9taXNlKCk7CisKKyAgICByZXR1cm4gcGlwZVByb21pc2U7CisgIH0pLnRoZW4oKCkg
PT4gZmx1c2hBc3luY0V2ZW50cygpKS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfYXJyYXlfZXF1
YWxzKHdzLmV2ZW50cywgWyd3cml0ZScsICdhJ10sCisgICAgICAndGhlIGNodW5rIG11c3QgaGF2
ZSBiZWVuIHdyaXR0ZW4sIGJ1dCBjbG9zZSBtdXN0IG5vdCBoYXZlIGhhcHBlbmVkJyk7CisgIH0p
OworCit9LCAnQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc2h1dGRvd24gbXVz
dCBub3Qgb2NjdXIgdW50aWwgdGhlIGZpbmFsIHdyaXRlIGNvbXBsZXRlczsgcHJldmVudENsb3Nl
ID0gdHJ1ZScpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworCisgIGNvbnN0IHJzID0gcmVjb3Jk
aW5nUmVhZGFibGVTdHJlYW0oKTsKKworICBsZXQgcmVzb2x2ZVdyaXRlQ2FsbGVkOworICBjb25z
dCB3cml0ZUNhbGxlZFByb21pc2UgPSBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKKyAgICByZXNv
bHZlV3JpdGVDYWxsZWQgPSByZXNvbHZlOworICB9KTsKKworICBsZXQgcmVzb2x2ZVdyaXRlUHJv
bWlzZTsKKyAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSh7CisgICAgd3JpdGUo
KSB7CisgICAgICByZXNvbHZlV3JpdGVDYWxsZWQoKTsKKworICAgICAgcmV0dXJuIG5ldyBQcm9t
aXNlKHJlc29sdmUgPT4geworICAgICAgICByZXNvbHZlV3JpdGVQcm9taXNlID0gcmVzb2x2ZTsK
KyAgICAgIH0pOworICAgIH0KKyAgfSwgbmV3IENvdW50UXVldWluZ1N0cmF0ZWd5KHsgaGlnaFdh
dGVyTWFyazogMiB9KSk7CisKKyAgbGV0IHBpcGVDb21wbGV0ZSA9IGZhbHNlOworICBjb25zdCBw
aXBlUHJvbWlzZSA9IHJzLnBpcGVUbyh3cykudGhlbigoKSA9PiB7CisgICAgcGlwZUNvbXBsZXRl
ID0gdHJ1ZTsKKyAgfSk7CisKKyAgcnMuY29udHJvbGxlci5lbnF1ZXVlKCdhJyk7CisgIHJzLmNv
bnRyb2xsZXIuZW5xdWV1ZSgnYicpOworCisgIHJldHVybiB3cml0ZUNhbGxlZFByb21pc2UudGhl
bigoKSA9PiBmbHVzaEFzeW5jRXZlbnRzKCkpLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9hcnJh
eV9lcXVhbHMod3MuZXZlbnRzLCBbJ3dyaXRlJywgJ2EnXSwKKyAgICAgICd0aGUgZmlyc3QgY2h1
bmsgbXVzdCBoYXZlIGJlZW4gd3JpdHRlbiwgYnV0IGNsb3NlIG11c3Qgbm90IGhhdmUgaGFwcGVu
ZWQgeWV0Jyk7CisgICAgYXNzZXJ0X2ZhbHNlKHBpcGVDb21wbGV0ZSwgJ3RoZSBwaXBlIHNob3Vs
ZCBub3QgY29tcGxldGUgd2hpbGUgdGhlIGZpcnN0IHdyaXRlIGlzIHBlbmRpbmcnKTsKKworICAg
IHJzLmNvbnRyb2xsZXIuY2xvc2UoKTsKKyAgICByZXNvbHZlV3JpdGVQcm9taXNlKCk7CisgIH0p
LnRoZW4oKCkgPT4gZmx1c2hBc3luY0V2ZW50cygpKS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRf
YXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWyd3cml0ZScsICdhJywgJ3dyaXRlJywgJ2InXSwKKyAg
ICAgICd0aGUgc2Vjb25kIGNodW5rIG11c3QgaGF2ZSBiZWVuIHdyaXR0ZW4sIGJ1dCBjbG9zZSBt
dXN0IG5vdCBoYXZlIGhhcHBlbmVkIHlldCcpOworICAgIGFzc2VydF9mYWxzZShwaXBlQ29tcGxl
dGUsICd0aGUgcGlwZSBzaG91bGQgbm90IGNvbXBsZXRlIHdoaWxlIHRoZSBzZWNvbmQgd3JpdGUg
aXMgcGVuZGluZycpOworCisgICAgcmVzb2x2ZVdyaXRlUHJvbWlzZSgpOworICAgIHJldHVybiBw
aXBlUHJvbWlzZTsKKyAgfSkudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3
cy5ldmVudHMsIFsnd3JpdGUnLCAnYScsICd3cml0ZScsICdiJywgJ2Nsb3NlJ10sCisgICAgICAn
YWxsIGNodW5rcyBtdXN0IGhhdmUgYmVlbiB3cml0dGVuIGFuZCBjbG9zZSBtdXN0IGhhdmUgaGFw
cGVuZWQnKTsKKyAgfSk7CisKK30sICdDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJk
OiBzaHV0ZG93biBtdXN0IG5vdCBvY2N1ciB1bnRpbCB0aGUgZmluYWwgd3JpdGUgY29tcGxldGVz
OyBiZWNvbWVzIGNsb3NlZCBhZnRlciBmaXJzdCB3cml0ZScpOworCitwcm9taXNlX3Rlc3QoKCkg
PT4geworCisgIGNvbnN0IHJzID0gcmVjb3JkaW5nUmVhZGFibGVTdHJlYW0oKTsKKworICBsZXQg
cmVzb2x2ZVdyaXRlQ2FsbGVkOworICBjb25zdCB3cml0ZUNhbGxlZFByb21pc2UgPSBuZXcgUHJv
bWlzZShyZXNvbHZlID0+IHsKKyAgICByZXNvbHZlV3JpdGVDYWxsZWQgPSByZXNvbHZlOworICB9
KTsKKworICBsZXQgcmVzb2x2ZVdyaXRlUHJvbWlzZTsKKyAgY29uc3Qgd3MgPSByZWNvcmRpbmdX
cml0YWJsZVN0cmVhbSh7CisgICAgd3JpdGUoKSB7CisgICAgICByZXNvbHZlV3JpdGVDYWxsZWQo
KTsKKworICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4geworICAgICAgICByZXNv
bHZlV3JpdGVQcm9taXNlID0gcmVzb2x2ZTsKKyAgICAgIH0pOworICAgIH0KKyAgfSwgbmV3IENv
dW50UXVldWluZ1N0cmF0ZWd5KHsgaGlnaFdhdGVyTWFyazogMiB9KSk7CisKKyAgbGV0IHBpcGVD
b21wbGV0ZSA9IGZhbHNlOworICBjb25zdCBwaXBlUHJvbWlzZSA9IHJzLnBpcGVUbyh3cywgeyBw
cmV2ZW50Q2xvc2U6IHRydWUgfSkudGhlbigoKSA9PiB7CisgICAgcGlwZUNvbXBsZXRlID0gdHJ1
ZTsKKyAgfSk7CisKKyAgcnMuY29udHJvbGxlci5lbnF1ZXVlKCdhJyk7CisgIHJzLmNvbnRyb2xs
ZXIuZW5xdWV1ZSgnYicpOworCisgIHJldHVybiB3cml0ZUNhbGxlZFByb21pc2UudGhlbigoKSA9
PiBmbHVzaEFzeW5jRXZlbnRzKCkpLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9hcnJheV9lcXVh
bHMod3MuZXZlbnRzLCBbJ3dyaXRlJywgJ2EnXSwKKyAgICAgICd0aGUgZmlyc3QgY2h1bmsgbXVz
dCBoYXZlIGJlZW4gd3JpdHRlbiwgYnV0IGNsb3NlIG11c3Qgbm90IGhhdmUgaGFwcGVuZWQnKTsK
KyAgICBhc3NlcnRfZmFsc2UocGlwZUNvbXBsZXRlLCAndGhlIHBpcGUgc2hvdWxkIG5vdCBjb21w
bGV0ZSB3aGlsZSB0aGUgZmlyc3Qgd3JpdGUgaXMgcGVuZGluZycpOworCisgICAgcnMuY29udHJv
bGxlci5jbG9zZSgpOworICAgIHJlc29sdmVXcml0ZVByb21pc2UoKTsKKyAgfSkudGhlbigoKSA9
PiBmbHVzaEFzeW5jRXZlbnRzKCkpLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9hcnJheV9lcXVh
bHMod3MuZXZlbnRzLCBbJ3dyaXRlJywgJ2EnLCAnd3JpdGUnLCAnYiddLAorICAgICAgJ3RoZSBz
ZWNvbmQgY2h1bmsgbXVzdCBoYXZlIGJlZW4gd3JpdHRlbiwgYnV0IGNsb3NlIG11c3Qgbm90IGhh
dmUgaGFwcGVuZWQnKTsKKyAgICBhc3NlcnRfZmFsc2UocGlwZUNvbXBsZXRlLCAndGhlIHBpcGUg
c2hvdWxkIG5vdCBjb21wbGV0ZSB3aGlsZSB0aGUgc2Vjb25kIHdyaXRlIGlzIHBlbmRpbmcnKTsK
KworICAgIHJlc29sdmVXcml0ZVByb21pc2UoKTsKKyAgICByZXR1cm4gcGlwZVByb21pc2U7Cisg
IH0pLnRoZW4oKCkgPT4gZmx1c2hBc3luY0V2ZW50cygpKS50aGVuKCgpID0+IHsKKyAgICBhc3Nl
cnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWyd3cml0ZScsICdhJywgJ3dyaXRlJywgJ2InXSwK
KyAgICAgICdhbGwgY2h1bmtzIG11c3QgaGF2ZSBiZWVuIHdyaXR0ZW4sIGJ1dCBjbG9zZSBtdXN0
IG5vdCBoYXZlIGhhcHBlbmVkJyk7CisgIH0pOworCit9LCAnQ2xvc2luZyBtdXN0IGJlIHByb3Bh
Z2F0ZWQgZm9yd2FyZDogc2h1dGRvd24gbXVzdCBub3Qgb2NjdXIgdW50aWwgdGhlIGZpbmFsIHdy
aXRlIGNvbXBsZXRlczsgYmVjb21lcyBjbG9zZWQgYWZ0ZXIgZmlyc3Qgd3JpdGU7IHByZXZlbnRD
bG9zZSA9IHRydWUnKTsKKworCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIGNvbnN0IHJzID0gcmVj
b3JkaW5nUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGMuZW5xdWV1ZSgn
YScpOworICAgICAgYy5lbnF1ZXVlKCdiJyk7CisgICAgICBjLmNsb3NlKCk7CisgICAgfQorICB9
KTsKKyAgbGV0IHJlamVjdFdyaXRlUHJvbWlzZTsKKyAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0
YWJsZVN0cmVhbSh7CisgICAgd3JpdGUoKSB7CisgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJl
c29sdmUsIHJlamVjdCkgPT4geworICAgICAgICByZWplY3RXcml0ZVByb21pc2UgPSByZWplY3Q7
CisgICAgICB9KTsKKyAgICB9CisgIH0sIHsgaGlnaFdhdGVyTWFyazogMyB9KTsKKyAgY29uc3Qg
cGlwZVRvUHJvbWlzZSA9IHJzLnBpcGVUbyh3cyk7CisgIHJldHVybiBkZWxheSgwKS50aGVuKCgp
ID0+IHsKKyAgICByZWplY3RXcml0ZVByb21pc2UoZXJyb3IxKTsKKyAgICByZXR1cm4gcHJvbWlz
ZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCBwaXBlVG9Qcm9taXNlLCAncGlwZVRvIHNob3Vs
ZCByZWplY3QnKTsKKyAgfSkudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhy
cy5ldmVudHMsIFtdKTsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWyd3cml0
ZScsICdhJ10pOworCisgICAgcmV0dXJuIFByb21pc2UuYWxsKFsKKyAgICAgIHJzLmdldFJlYWRl
cigpLmNsb3NlZCwKKyAgICAgIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMSwgd3Mu
Z2V0V3JpdGVyKCkuY2xvc2VkLCAnd3Mgc2hvdWxkIGJlIGVycm9yZWQnKQorICAgIF0pOworICB9
KTsKK30sICdDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBlcnJvcmluZyB0aGUg
d3JpdGFibGUgd2hpbGUgZmx1c2hpbmcgcGVuZGluZyB3cml0ZXMgc2hvdWxkIGVycm9yIHBpcGVU
bycpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL3BpcGluZy9jbG9zZS1wcm9wYWdhdGlvbi1mb3J3YXJkLmFueS53b3JrZXIt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL3BpcGluZy9jbG9zZS1wcm9wYWdhdGlvbi1mb3J3YXJkLmFueS53b3JrZXItZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc1NzgxOGUyZjhiYjhhMTBlMzM2NWJmODUzNjIxNDQwMzgy
NTcxMzkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Nsb3NlLXByb3BhZ2F0aW9uLWZvcndhcmQuYW55
Lndvcmtlci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzMiBAQAorCitGQUlMIENsb3NpbmcgbXVz
dCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHN0YXJ0cyBjbG9zZWQ7IHByZXZlbnRDbG9zZSBvbWl0
dGVkOyBmdWxmaWxsZWQgY2xvc2UgcHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJs
ZVN0cmVhbQorRkFJTCBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBzdGFydHMg
Y2xvc2VkOyBwcmV2ZW50Q2xvc2Ugb21pdHRlZDsgcmVqZWN0ZWQgY2xvc2UgcHJvbWlzZSBDYW4n
dCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBDbG9zaW5nIG11c3QgYmUgcHJv
cGFnYXRlZCBmb3J3YXJkOiBzdGFydHMgY2xvc2VkOyBwcmV2ZW50Q2xvc2UgPSB1bmRlZmluZWQg
KGZhbHN5KTsgZnVsZmlsbGVkIGNsb3NlIHByb21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3Jp
dGFibGVTdHJlYW0KK0ZBSUwgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc3Rh
cnRzIGNsb3NlZDsgcHJldmVudENsb3NlID0gbnVsbCAoZmFsc3kpOyBmdWxmaWxsZWQgY2xvc2Ug
cHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBDbG9zaW5n
IG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBzdGFydHMgY2xvc2VkOyBwcmV2ZW50Q2xvc2Ug
PSBmYWxzZSAoZmFsc3kpOyBmdWxmaWxsZWQgY2xvc2UgcHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlh
YmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3
YXJkOiBzdGFydHMgY2xvc2VkOyBwcmV2ZW50Q2xvc2UgPSAwIChmYWxzeSk7IGZ1bGZpbGxlZCBj
bG9zZSBwcm9taXNlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIENs
b3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHN0YXJ0cyBjbG9zZWQ7IHByZXZlbnRD
bG9zZSA9IC0wIChmYWxzeSk7IGZ1bGZpbGxlZCBjbG9zZSBwcm9taXNlIENhbid0IGZpbmQgdmFy
aWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIENsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGZv
cndhcmQ6IHN0YXJ0cyBjbG9zZWQ7IHByZXZlbnRDbG9zZSA9IE5hTiAoZmFsc3kpOyBmdWxmaWxs
ZWQgY2xvc2UgcHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJ
TCBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBzdGFydHMgY2xvc2VkOyBwcmV2
ZW50Q2xvc2UgPSAgKGZhbHN5KTsgZnVsZmlsbGVkIGNsb3NlIHByb21pc2UgQ2FuJ3QgZmluZCB2
YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQg
Zm9yd2FyZDogc3RhcnRzIGNsb3NlZDsgcHJldmVudENsb3NlID0gdHJ1ZSAodHJ1dGh5KSBDYW4n
dCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBDbG9zaW5nIG11c3QgYmUgcHJv
cGFnYXRlZCBmb3J3YXJkOiBzdGFydHMgY2xvc2VkOyBwcmV2ZW50Q2xvc2UgPSBhICh0cnV0aHkp
IENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIENsb3NpbmcgbXVzdCBi
ZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHN0YXJ0cyBjbG9zZWQ7IHByZXZlbnRDbG9zZSA9IDEgKHRy
dXRoeSkgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgQ2xvc2luZyBt
dXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc3RhcnRzIGNsb3NlZDsgcHJldmVudENsb3NlID0g
U3ltYm9sKCkgKHRydXRoeSkgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZB
SUwgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc3RhcnRzIGNsb3NlZDsgcHJl
dmVudENsb3NlID0gW29iamVjdCBPYmplY3RdICh0cnV0aHkpIENhbid0IGZpbmQgdmFyaWFibGU6
IFdyaXRhYmxlU3RyZWFtCitGQUlMIENsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6
IHN0YXJ0cyBjbG9zZWQ7IHByZXZlbnRDbG9zZSA9IHRydWUsIHByZXZlbnRBYm9ydCA9IHRydWUg
Q2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgQ2xvc2luZyBtdXN0IGJl
IHByb3BhZ2F0ZWQgZm9yd2FyZDogc3RhcnRzIGNsb3NlZDsgcHJldmVudENsb3NlID0gdHJ1ZSwg
cHJldmVudEFib3J0ID0gdHJ1ZSwgcHJldmVudENhbmNlbCA9IHRydWUgQ2FuJ3QgZmluZCB2YXJp
YWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9y
d2FyZDogYmVjb21lcyBjbG9zZWQgYXN5bmNocm9ub3VzbHk7IHByZXZlbnRDbG9zZSBvbWl0dGVk
OyBmdWxmaWxsZWQgY2xvc2UgcHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0
cmVhbQorRkFJTCBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBiZWNvbWVzIGNs
b3NlZCBhc3luY2hyb25vdXNseTsgcHJldmVudENsb3NlIG9taXR0ZWQ7IHJlamVjdGVkIGNsb3Nl
IHByb21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgQ2xvc2lu
ZyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogYmVjb21lcyBjbG9zZWQgYXN5bmNocm9ub3Vz
bHk7IHByZXZlbnRDbG9zZSA9IHRydWUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJl
YW0KK0ZBSUwgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogYmVjb21lcyBjbG9z
ZWQgYXN5bmNocm9ub3VzbHk7IGRlc3QgbmV2ZXIgZGVzaXJlcyBjaHVua3M7IHByZXZlbnRDbG9z
ZSBvbWl0dGVkOyBmdWxmaWxsZWQgY2xvc2UgcHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBX
cml0YWJsZVN0cmVhbQorRkFJTCBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBi
ZWNvbWVzIGNsb3NlZCBhc3luY2hyb25vdXNseTsgZGVzdCBuZXZlciBkZXNpcmVzIGNodW5rczsg
cHJldmVudENsb3NlIG9taXR0ZWQ7IHJlamVjdGVkIGNsb3NlIHByb21pc2UgQ2FuJ3QgZmluZCB2
YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQg
Zm9yd2FyZDogYmVjb21lcyBjbG9zZWQgYXN5bmNocm9ub3VzbHk7IGRlc3QgbmV2ZXIgZGVzaXJl
cyBjaHVua3M7IHByZXZlbnRDbG9zZSA9IHRydWUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFi
bGVTdHJlYW0KK0ZBSUwgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogYmVjb21l
cyBjbG9zZWQgYWZ0ZXIgb25lIGNodW5rOyBwcmV2ZW50Q2xvc2Ugb21pdHRlZDsgZnVsZmlsbGVk
IGNsb3NlIHByb21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwg
Q2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogYmVjb21lcyBjbG9zZWQgYWZ0ZXIg
b25lIGNodW5rOyBwcmV2ZW50Q2xvc2Ugb21pdHRlZDsgcmVqZWN0ZWQgY2xvc2UgcHJvbWlzZSBD
YW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBDbG9zaW5nIG11c3QgYmUg
cHJvcGFnYXRlZCBmb3J3YXJkOiBiZWNvbWVzIGNsb3NlZCBhZnRlciBvbmUgY2h1bms7IHByZXZl
bnRDbG9zZSA9IHRydWUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwg
Q2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc2h1dGRvd24gbXVzdCBub3Qgb2Nj
dXIgdW50aWwgdGhlIGZpbmFsIHdyaXRlIGNvbXBsZXRlcyBDYW4ndCBmaW5kIHZhcmlhYmxlOiBX
cml0YWJsZVN0cmVhbQorRkFJTCBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBz
aHV0ZG93biBtdXN0IG5vdCBvY2N1ciB1bnRpbCB0aGUgZmluYWwgd3JpdGUgY29tcGxldGVzOyBw
cmV2ZW50Q2xvc2UgPSB0cnVlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitG
QUlMIENsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHNodXRkb3duIG11c3Qgbm90
IG9jY3VyIHVudGlsIHRoZSBmaW5hbCB3cml0ZSBjb21wbGV0ZXM7IGJlY29tZXMgY2xvc2VkIGFm
dGVyIGZpcnN0IHdyaXRlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlM
IENsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHNodXRkb3duIG11c3Qgbm90IG9j
Y3VyIHVudGlsIHRoZSBmaW5hbCB3cml0ZSBjb21wbGV0ZXM7IGJlY29tZXMgY2xvc2VkIGFmdGVy
IGZpcnN0IHdyaXRlOyBwcmV2ZW50Q2xvc2UgPSB0cnVlIENhbid0IGZpbmQgdmFyaWFibGU6IFdy
aXRhYmxlU3RyZWFtCitGQUlMIENsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IGVy
cm9yaW5nIHRoZSB3cml0YWJsZSB3aGlsZSBmbHVzaGluZyBwZW5kaW5nIHdyaXRlcyBzaG91bGQg
ZXJyb3IgcGlwZVRvIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy9waXBpbmcvY2xvc2UtcHJvcGFnYXRpb24tZm9yd2FyZC5hbnkud29ya2VyLmh0bWwgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Ns
b3NlLXByb3BhZ2F0aW9uLWZvcndhcmQuYW55Lndvcmtlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzODI5
MTM1MjhlNjkzYjNhNWQ1NmM2NjBhNDUwNjA5ODBiNTQ4YzMKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5n
L2Nsb3NlLXByb3BhZ2F0aW9uLWZvcndhcmQuYW55Lndvcmtlci5odG1sCkBAIC0wLDAgKzEgQEAK
KzwhLS0gVGhpcyBmaWxlIGlzIHJlcXVpcmVkIGZvciBXZWJLaXQgdGVzdCBpbmZyYXN0cnVjdHVy
ZSB0byBydW4gdGhlIHRlbXBsYXRlZCB0ZXN0IC0tPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy9waXBpbmcvY2xvc2UtcHJvcGFnYXRpb24tZm9yd2FyZC5kZWRpY2F0ZWR3b3Jr
ZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL3BpcGluZy9jbG9zZS1wcm9wYWdhdGlvbi1mb3J3YXJkLmRlZGljYXRlZHdv
cmtlci1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg2Yzg1ZTM2
OTI1NjJlMTYyM2E4ZmNiMzVhNGMyMjRjZmU1YjJhYjcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9jbG9zZS1wcm9wYWdhdGlvbi1mb3J3YXJkLmRlZGlj
YXRlZHdvcmtlci1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi0K
LUZBSUwgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc3RhcnRzIGNsb3NlZDsg
cHJldmVudENsb3NlIG9taXR0ZWQ7IGZ1bGZpbGxlZCBjbG9zZSBwcm9taXNlIENhbid0IGZpbmQg
dmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIENsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVk
IGZvcndhcmQ6IHN0YXJ0cyBjbG9zZWQ7IHByZXZlbnRDbG9zZSBvbWl0dGVkOyByZWplY3RlZCBj
bG9zZSBwcm9taXNlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIENs
b3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHN0YXJ0cyBjbG9zZWQ7IHByZXZlbnRD
bG9zZSA9IHVuZGVmaW5lZCAoZmFsc3kpOyBmdWxmaWxsZWQgY2xvc2UgcHJvbWlzZSBDYW4ndCBm
aW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBDbG9zaW5nIG11c3QgYmUgcHJvcGFn
YXRlZCBmb3J3YXJkOiBzdGFydHMgY2xvc2VkOyBwcmV2ZW50Q2xvc2UgPSBudWxsIChmYWxzeSk7
IGZ1bGZpbGxlZCBjbG9zZSBwcm9taXNlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3Ry
ZWFtCi1GQUlMIENsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHN0YXJ0cyBjbG9z
ZWQ7IHByZXZlbnRDbG9zZSA9IGZhbHNlIChmYWxzeSk7IGZ1bGZpbGxlZCBjbG9zZSBwcm9taXNl
IENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIENsb3NpbmcgbXVzdCBi
ZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHN0YXJ0cyBjbG9zZWQ7IHByZXZlbnRDbG9zZSA9IDAgKGZh
bHN5KTsgZnVsZmlsbGVkIGNsb3NlIHByb21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFi
bGVTdHJlYW0KLUZBSUwgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc3RhcnRz
IGNsb3NlZDsgcHJldmVudENsb3NlID0gLTAgKGZhbHN5KTsgZnVsZmlsbGVkIGNsb3NlIHByb21p
c2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgQ2xvc2luZyBtdXN0
IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc3RhcnRzIGNsb3NlZDsgcHJldmVudENsb3NlID0gTmFO
IChmYWxzeSk7IGZ1bGZpbGxlZCBjbG9zZSBwcm9taXNlIENhbid0IGZpbmQgdmFyaWFibGU6IFdy
aXRhYmxlU3RyZWFtCi1GQUlMIENsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHN0
YXJ0cyBjbG9zZWQ7IHByZXZlbnRDbG9zZSA9ICAoZmFsc3kpOyBmdWxmaWxsZWQgY2xvc2UgcHJv
bWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBDbG9zaW5nIG11
c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBzdGFydHMgY2xvc2VkOyBwcmV2ZW50Q2xvc2UgPSB0
cnVlICh0cnV0aHkpIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIENs
b3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHN0YXJ0cyBjbG9zZWQ7IHByZXZlbnRD
bG9zZSA9IGEgKHRydXRoeSkgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZB
SUwgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc3RhcnRzIGNsb3NlZDsgcHJl
dmVudENsb3NlID0gMSAodHJ1dGh5KSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVh
bQotRkFJTCBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBzdGFydHMgY2xvc2Vk
OyBwcmV2ZW50Q2xvc2UgPSBTeW1ib2woKSAodHJ1dGh5KSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBX
cml0YWJsZVN0cmVhbQotRkFJTCBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBz
dGFydHMgY2xvc2VkOyBwcmV2ZW50Q2xvc2UgPSBbb2JqZWN0IE9iamVjdF0gKHRydXRoeSkgQ2Fu
J3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgQ2xvc2luZyBtdXN0IGJlIHBy
b3BhZ2F0ZWQgZm9yd2FyZDogc3RhcnRzIGNsb3NlZDsgcHJldmVudENsb3NlID0gdHJ1ZSwgcHJl
dmVudEFib3J0ID0gdHJ1ZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJ
TCBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBzdGFydHMgY2xvc2VkOyBwcmV2
ZW50Q2xvc2UgPSB0cnVlLCBwcmV2ZW50QWJvcnQgPSB0cnVlLCBwcmV2ZW50Q2FuY2VsID0gdHJ1
ZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBDbG9zaW5nIG11c3Qg
YmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBiZWNvbWVzIGNsb3NlZCBhc3luY2hyb25vdXNseTsgcHJl
dmVudENsb3NlIG9taXR0ZWQ7IGZ1bGZpbGxlZCBjbG9zZSBwcm9taXNlIENhbid0IGZpbmQgdmFy
aWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIENsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGZv
cndhcmQ6IGJlY29tZXMgY2xvc2VkIGFzeW5jaHJvbm91c2x5OyBwcmV2ZW50Q2xvc2Ugb21pdHRl
ZDsgcmVqZWN0ZWQgY2xvc2UgcHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0
cmVhbQotRkFJTCBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBiZWNvbWVzIGNs
b3NlZCBhc3luY2hyb25vdXNseTsgcHJldmVudENsb3NlID0gdHJ1ZSBDYW4ndCBmaW5kIHZhcmlh
YmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3
YXJkOiBiZWNvbWVzIGNsb3NlZCBhc3luY2hyb25vdXNseTsgZGVzdCBuZXZlciBkZXNpcmVzIGNo
dW5rczsgcHJldmVudENsb3NlIG9taXR0ZWQ7IGZ1bGZpbGxlZCBjbG9zZSBwcm9taXNlIENhbid0
IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIENsb3NpbmcgbXVzdCBiZSBwcm9w
YWdhdGVkIGZvcndhcmQ6IGJlY29tZXMgY2xvc2VkIGFzeW5jaHJvbm91c2x5OyBkZXN0IG5ldmVy
IGRlc2lyZXMgY2h1bmtzOyBwcmV2ZW50Q2xvc2Ugb21pdHRlZDsgcmVqZWN0ZWQgY2xvc2UgcHJv
bWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBDbG9zaW5nIG11
c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBiZWNvbWVzIGNsb3NlZCBhc3luY2hyb25vdXNseTsg
ZGVzdCBuZXZlciBkZXNpcmVzIGNodW5rczsgcHJldmVudENsb3NlID0gdHJ1ZSBDYW4ndCBmaW5k
IHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRl
ZCBmb3J3YXJkOiBiZWNvbWVzIGNsb3NlZCBhZnRlciBvbmUgY2h1bms7IHByZXZlbnRDbG9zZSBv
bWl0dGVkOyBmdWxmaWxsZWQgY2xvc2UgcHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0
YWJsZVN0cmVhbQotRkFJTCBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBiZWNv
bWVzIGNsb3NlZCBhZnRlciBvbmUgY2h1bms7IHByZXZlbnRDbG9zZSBvbWl0dGVkOyByZWplY3Rl
ZCBjbG9zZSBwcm9taXNlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlM
IENsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IGJlY29tZXMgY2xvc2VkIGFmdGVy
IG9uZSBjaHVuazsgcHJldmVudENsb3NlID0gdHJ1ZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0
YWJsZVN0cmVhbQotRkFJTCBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBzaHV0
ZG93biBtdXN0IG5vdCBvY2N1ciB1bnRpbCB0aGUgZmluYWwgd3JpdGUgY29tcGxldGVzIENhbid0
IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIENsb3NpbmcgbXVzdCBiZSBwcm9w
YWdhdGVkIGZvcndhcmQ6IHNodXRkb3duIG11c3Qgbm90IG9jY3VyIHVudGlsIHRoZSBmaW5hbCB3
cml0ZSBjb21wbGV0ZXM7IHByZXZlbnRDbG9zZSA9IHRydWUgQ2FuJ3QgZmluZCB2YXJpYWJsZTog
V3JpdGFibGVTdHJlYW0KLUZBSUwgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDog
c2h1dGRvd24gbXVzdCBub3Qgb2NjdXIgdW50aWwgdGhlIGZpbmFsIHdyaXRlIGNvbXBsZXRlczsg
YmVjb21lcyBjbG9zZWQgYWZ0ZXIgZmlyc3Qgd3JpdGUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3Jp
dGFibGVTdHJlYW0KLUZBSUwgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc2h1
dGRvd24gbXVzdCBub3Qgb2NjdXIgdW50aWwgdGhlIGZpbmFsIHdyaXRlIGNvbXBsZXRlczsgYmVj
b21lcyBjbG9zZWQgYWZ0ZXIgZmlyc3Qgd3JpdGU7IHByZXZlbnRDbG9zZSA9IHRydWUgQ2FuJ3Qg
ZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9jbG9zZS1wcm9w
YWdhdGlvbi1mb3J3YXJkLmRlZGljYXRlZHdvcmtlci5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9jbG9zZS1wcm9wYWdhdGlv
bi1mb3J3YXJkLmRlZGljYXRlZHdvcmtlci5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAxYzAxNmZmZThlZmNhOWZiZTI5ODE3MDVhODBlYjIxODgzY2JjNDc1Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvY2xvc2UtcHJvcGFnYXRpb24t
Zm9yd2FyZC5kZWRpY2F0ZWR3b3JrZXIuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAg
QEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHRpdGxlPmNsb3Nl
LXByb3BhZ2F0aW9uLWZvcndhcmQuanMgZGVkaWNhdGVkIHdvcmtlciB3cmFwcGVyIGZpbGU8L3Rp
dGxlPgotCi08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+
Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+
Ci0KLTxzY3JpcHQ+Ci0ndXNlIHN0cmljdCc7Ci1mZXRjaF90ZXN0c19mcm9tX3dvcmtlcihuZXcg
V29ya2VyKCdjbG9zZS1wcm9wYWdhdGlvbi1mb3J3YXJkLmpzJykpOwotPC9zY3JpcHQ+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvcGlwaW5nL2Nsb3NlLXByb3BhZ2F0aW9uLWZvcndhcmQuaHRtbCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvY2xvc2UtcHJvcGFn
YXRpb24tZm9yd2FyZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZjkwZmE3
YzJmNTMzZjBjZjc0NmQ0YjhmNjhjNmM5MjI0YzY5MzlhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvY2xvc2UtcHJvcGFnYXRpb24tZm9yd2FyZC5odG1s
CisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBj
aGFyc2V0PSJ1dGYtOCI+Ci08dGl0bGU+Y2xvc2UtcHJvcGFnYXRpb24tZm9yd2FyZC5qcyBicm93
c2VyIGNvbnRleHQgd3JhcHBlciBmaWxlPC90aXRsZT4KLQotPHNjcmlwdCBzcmM9Ii9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVz
dGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotCi08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2Vz
L3Rlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9yZWNv
cmRpbmctc3RyZWFtcy5qcyI+PC9zY3JpcHQ+Ci0KLTxzY3JpcHQgc3JjPSJjbG9zZS1wcm9wYWdh
dGlvbi1mb3J3YXJkLmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvY2xvc2UtcHJvcGFnYXRp
b24tZm9yd2FyZC5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy9waXBpbmcvY2xvc2UtcHJvcGFnYXRpb24tZm9yd2FyZC5qcwpkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMGYwYjdiYjFhMzUyZDJkMTRhZjgxNGUzOWI2MDRkMTUzZTZl
MGZmYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Ns
b3NlLXByb3BhZ2F0aW9uLWZvcndhcmQuanMKKysrIC9kZXYvbnVsbApAQCAtMSw1NjIgKzAsMCBA
QAotJ3VzZSBzdHJpY3QnOwotCi1pZiAoc2VsZi5pbXBvcnRTY3JpcHRzKSB7Ci0gIHNlbGYuaW1w
b3J0U2NyaXB0cygnL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcycpOwotICBzZWxmLmltcG9ydFNj
cmlwdHMoJy4uL3Jlc291cmNlcy90ZXN0LXV0aWxzLmpzJyk7Ci0gIHNlbGYuaW1wb3J0U2NyaXB0
cygnLi4vcmVzb3VyY2VzL3JlY29yZGluZy1zdHJlYW1zLmpzJyk7Ci19Ci0KLWNvbnN0IGVycm9y
MSA9IG5ldyBFcnJvcignZXJyb3IxIScpOwotZXJyb3IxLm5hbWUgPSAnZXJyb3IxJzsKLQotcHJv
bWlzZV90ZXN0KCgpID0+IHsKLQotICBjb25zdCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFt
KHsKLSAgICBzdGFydChjb250cm9sbGVyKSB7Ci0gICAgICBjb250cm9sbGVyLmNsb3NlKCk7Ci0g
ICAgfQotICB9KTsKLQotICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKCk7Ci0K
LSAgcmV0dXJuIHJzLnBpcGVUbyh3cykudGhlbih2YWx1ZSA9PiB7Ci0gICAgYXNzZXJ0X2VxdWFs
cyh2YWx1ZSwgdW5kZWZpbmVkLCAndGhlIHByb21pc2UgbXVzdCBmdWxmaWxsIHdpdGggdW5kZWZp
bmVkJyk7Ci0gIH0pCi0gIC50aGVuKCgpID0+IHsKLSAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJz
LmV2ZW50cywgW10pOwotICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ2Nsb3Nl
J10pOwotCi0gICAgcmV0dXJuIFByb21pc2UuYWxsKFsKLSAgICAgIHJzLmdldFJlYWRlcigpLmNs
b3NlZCwKLSAgICAgIHdzLmdldFdyaXRlcigpLmNsb3NlZAotICAgIF0pOwotICB9KTsKLQotfSwg
J0Nsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHN0YXJ0cyBjbG9zZWQ7IHByZXZl
bnRDbG9zZSBvbWl0dGVkOyBmdWxmaWxsZWQgY2xvc2UgcHJvbWlzZScpOwotCi1wcm9taXNlX3Rl
c3QodCA9PiB7Ci0KLSAgY29uc3QgcnMgPSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSh7Ci0gICAg
c3RhcnQoY29udHJvbGxlcikgewotICAgICAgY29udHJvbGxlci5jbG9zZSgpOwotICAgIH0KLSAg
fSk7Ci0KLSAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSh7Ci0gICAgY2xvc2Uo
KSB7Ci0gICAgICB0aHJvdyBlcnJvcjE7Ci0gICAgfQotICB9KTsKLQotICByZXR1cm4gcHJvbWlz
ZV9yZWplY3RzKHQsIGVycm9yMSwgcnMucGlwZVRvKHdzKSwgJ3BpcGVUbyBtdXN0IHJlamVjdCB3
aXRoIHRoZSBzYW1lIGVycm9yJykudGhlbigoKSA9PiB7Ci0gICAgYXNzZXJ0X2FycmF5X2VxdWFs
cyhycy5ldmVudHMsIFtdKTsKLSAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWydj
bG9zZSddKTsKLQotICAgIHJldHVybiBQcm9taXNlLmFsbChbCi0gICAgICBycy5nZXRSZWFkZXIo
KS5jbG9zZWQsCi0gICAgICBwcm9taXNlX3JlamVjdHModCwgZXJyb3IxLCB3cy5nZXRXcml0ZXIo
KS5jbG9zZWQpCi0gICAgXSk7Ci0gIH0pOwotCi19LCAnQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0
ZWQgZm9yd2FyZDogc3RhcnRzIGNsb3NlZDsgcHJldmVudENsb3NlIG9taXR0ZWQ7IHJlamVjdGVk
IGNsb3NlIHByb21pc2UnKTsKLQotZm9yIChjb25zdCBmYWxzeSBvZiBbdW5kZWZpbmVkLCBudWxs
LCBmYWxzZSwgKzAsIC0wLCBOYU4sICcnXSkgewotICBjb25zdCBzdHJpbmdWZXJzaW9uID0gT2Jq
ZWN0LmlzKGZhbHN5LCAtMCkgPyAnLTAnIDogU3RyaW5nKGZhbHN5KTsKLQotICBwcm9taXNlX3Rl
c3QoKCkgPT4gewotCi0gICAgY29uc3QgcnMgPSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSh7Ci0g
ICAgICBzdGFydChjb250cm9sbGVyKSB7Ci0gICAgICAgIGNvbnRyb2xsZXIuY2xvc2UoKTsKLSAg
ICAgIH0KLSAgICB9KTsKLQotICAgIGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0o
KTsKLQotICAgIHJldHVybiBycy5waXBlVG8od3MsIHsgcHJldmVudENsb3NlOiBmYWxzeSB9KS50
aGVuKHZhbHVlID0+IHsKLSAgICAgIGFzc2VydF9lcXVhbHModmFsdWUsIHVuZGVmaW5lZCwgJ3Ro
ZSBwcm9taXNlIG11c3QgZnVsZmlsbCB3aXRoIHVuZGVmaW5lZCcpOwotICAgIH0pCi0gICAgLnRo
ZW4oKCkgPT4gewotICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhycy5ldmVudHMsIFtdKTsKLSAg
ICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ2Nsb3NlJ10pOwotCi0gICAgICBy
ZXR1cm4gUHJvbWlzZS5hbGwoWwotICAgICAgICBycy5nZXRSZWFkZXIoKS5jbG9zZWQsCi0gICAg
ICAgIHdzLmdldFdyaXRlcigpLmNsb3NlZAotICAgICAgXSk7Ci0gICAgfSk7Ci0KLSAgfSwgYENs
b3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHN0YXJ0cyBjbG9zZWQ7IHByZXZlbnRD
bG9zZSA9ICR7c3RyaW5nVmVyc2lvbn0gKGZhbHN5KTsgZnVsZmlsbGVkIGNsb3NlIGAgKwotICAg
ICBgcHJvbWlzZWApOwotfQotCi1mb3IgKGNvbnN0IHRydXRoeSBvZiBbdHJ1ZSwgJ2EnLCAxLCBT
eW1ib2woKSwgeyB9XSkgewotICBwcm9taXNlX3Rlc3QoKCkgPT4gewotCi0gICAgY29uc3QgcnMg
PSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSh7Ci0gICAgICBzdGFydChjb250cm9sbGVyKSB7Ci0g
ICAgICAgIGNvbnRyb2xsZXIuY2xvc2UoKTsKLSAgICAgIH0KLSAgICB9KTsKLQotICAgIGNvbnN0
IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0oKTsKLQotICAgIHJldHVybiBycy5waXBlVG8o
d3MsIHsgcHJldmVudENsb3NlOiB0cnV0aHkgfSkudGhlbih2YWx1ZSA9PiB7Ci0gICAgICBhc3Nl
cnRfZXF1YWxzKHZhbHVlLCB1bmRlZmluZWQsICd0aGUgcHJvbWlzZSBtdXN0IGZ1bGZpbGwgd2l0
aCB1bmRlZmluZWQnKTsKLSAgICB9KQotICAgIC50aGVuKCgpID0+IHsKLSAgICAgIGFzc2VydF9h
cnJheV9lcXVhbHMocnMuZXZlbnRzLCBbXSk7Ci0gICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdz
LmV2ZW50cywgW10pOwotCi0gICAgICByZXR1cm4gcnMuZ2V0UmVhZGVyKCkuY2xvc2VkOwotICAg
IH0pOwotCi0gIH0sIGBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBzdGFydHMg
Y2xvc2VkOyBwcmV2ZW50Q2xvc2UgPSAke1N0cmluZyh0cnV0aHkpfSAodHJ1dGh5KWApOwotfQot
Ci1wcm9taXNlX3Rlc3QoKCkgPT4gewotCi0gIGNvbnN0IHJzID0gcmVjb3JkaW5nUmVhZGFibGVT
dHJlYW0oewotICAgIHN0YXJ0KGNvbnRyb2xsZXIpIHsKLSAgICAgIGNvbnRyb2xsZXIuY2xvc2Uo
KTsKLSAgICB9Ci0gIH0pOwotCi0gIGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0o
KTsKLQotICByZXR1cm4gcnMucGlwZVRvKHdzLCB7IHByZXZlbnRDbG9zZTogdHJ1ZSwgcHJldmVu
dEFib3J0OiB0cnVlIH0pLnRoZW4odmFsdWUgPT4gewotICAgIGFzc2VydF9lcXVhbHModmFsdWUs
IHVuZGVmaW5lZCwgJ3RoZSBwcm9taXNlIG11c3QgZnVsZmlsbCB3aXRoIHVuZGVmaW5lZCcpOwot
ICB9KQotICAudGhlbigoKSA9PiB7Ci0gICAgYXNzZXJ0X2FycmF5X2VxdWFscyhycy5ldmVudHMs
IFtdKTsKLSAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgW10pOwotCi0gICAgcmV0
dXJuIHJzLmdldFJlYWRlcigpLmNsb3NlZDsKLSAgfSk7Ci0KLX0sICdDbG9zaW5nIG11c3QgYmUg
cHJvcGFnYXRlZCBmb3J3YXJkOiBzdGFydHMgY2xvc2VkOyBwcmV2ZW50Q2xvc2UgPSB0cnVlLCBw
cmV2ZW50QWJvcnQgPSB0cnVlJyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgY29uc3Qg
cnMgPSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoY29udHJvbGxlcikgewot
ICAgICAgY29udHJvbGxlci5jbG9zZSgpOwotICAgIH0KLSAgfSk7Ci0KLSAgY29uc3Qgd3MgPSBy
ZWNvcmRpbmdXcml0YWJsZVN0cmVhbSgpOwotCi0gIHJldHVybiBycy5waXBlVG8od3MsIHsgcHJl
dmVudENsb3NlOiB0cnVlLCBwcmV2ZW50QWJvcnQ6IHRydWUsIHByZXZlbnRDYW5jZWw6IHRydWUg
fSkudGhlbih2YWx1ZSA9PiB7Ci0gICAgYXNzZXJ0X2VxdWFscyh2YWx1ZSwgdW5kZWZpbmVkLCAn
dGhlIHByb21pc2UgbXVzdCBmdWxmaWxsIHdpdGggdW5kZWZpbmVkJyk7Ci0gIH0pCi0gIC50aGVu
KCgpID0+IHsKLSAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJzLmV2ZW50cywgW10pOwotICAgIGFz
c2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbXSk7Ci0KLSAgICByZXR1cm4gcnMuZ2V0UmVh
ZGVyKCkuY2xvc2VkOwotICB9KTsKLQotfSwgJ0Nsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGZv
cndhcmQ6IHN0YXJ0cyBjbG9zZWQ7IHByZXZlbnRDbG9zZSA9IHRydWUsIHByZXZlbnRBYm9ydCA9
IHRydWUsIHByZXZlbnRDYW5jZWwgPSB0cnVlJyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0K
LSAgY29uc3QgcnMgPSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSgpOwotCi0gIGNvbnN0IHdzID0g
cmVjb3JkaW5nV3JpdGFibGVTdHJlYW0oKTsKLQotICBjb25zdCBwaXBlUHJvbWlzZSA9IHJzLnBp
cGVUbyh3cyk7Ci0KLSAgc2V0VGltZW91dCgoKSA9PiBycy5jb250cm9sbGVyLmNsb3NlKCkpOwot
Ci0gIHJldHVybiBwaXBlUHJvbWlzZS50aGVuKHZhbHVlID0+IHsKLSAgICBhc3NlcnRfZXF1YWxz
KHZhbHVlLCB1bmRlZmluZWQsICd0aGUgcHJvbWlzZSBtdXN0IGZ1bGZpbGwgd2l0aCB1bmRlZmlu
ZWQnKTsKLSAgfSkKLSAgLnRoZW4oKCkgPT4gewotICAgIGFzc2VydF9hcnJheV9lcXVhbHMocnMu
ZXZlbnRzV2l0aG91dFB1bGxzLCBbXSk7Ci0gICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVu
dHMsIFsnY2xvc2UnXSk7Ci0KLSAgICByZXR1cm4gUHJvbWlzZS5hbGwoWwotICAgICAgcnMuZ2V0
UmVhZGVyKCkuY2xvc2VkLAotICAgICAgd3MuZ2V0V3JpdGVyKCkuY2xvc2VkCi0gICAgXSk7Ci0g
IH0pOwotCi19LCAnQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogYmVjb21lcyBj
bG9zZWQgYXN5bmNocm9ub3VzbHk7IHByZXZlbnRDbG9zZSBvbWl0dGVkOyBmdWxmaWxsZWQgY2xv
c2UgcHJvbWlzZScpOwotCi1wcm9taXNlX3Rlc3QodCA9PiB7Ci0KLSAgY29uc3QgcnMgPSByZWNv
cmRpbmdSZWFkYWJsZVN0cmVhbSgpOwotCi0gIGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVT
dHJlYW0oewotICAgIGNsb3NlKCkgewotICAgICAgdGhyb3cgZXJyb3IxOwotICAgIH0KLSAgfSk7
Ci0KLSAgY29uc3QgcGlwZVByb21pc2UgPSBwcm9taXNlX3JlamVjdHModCwgZXJyb3IxLCBycy5w
aXBlVG8od3MpLCAncGlwZVRvIG11c3QgcmVqZWN0IHdpdGggdGhlIHNhbWUgZXJyb3InKTsKLQot
ICBzZXRUaW1lb3V0KCgpID0+IHJzLmNvbnRyb2xsZXIuY2xvc2UoKSk7Ci0KLSAgcmV0dXJuIHBp
cGVQcm9taXNlLnRoZW4oKCkgPT4gewotICAgIGFzc2VydF9hcnJheV9lcXVhbHMocnMuZXZlbnRz
V2l0aG91dFB1bGxzLCBbXSk7Ci0gICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsn
Y2xvc2UnXSk7Ci0KLSAgICByZXR1cm4gUHJvbWlzZS5hbGwoWwotICAgICAgcnMuZ2V0UmVhZGVy
KCkuY2xvc2VkLAotICAgICAgcHJvbWlzZV9yZWplY3RzKHQsIGVycm9yMSwgd3MuZ2V0V3JpdGVy
KCkuY2xvc2VkKQotICAgIF0pOwotICB9KTsKLQotfSwgJ0Nsb3NpbmcgbXVzdCBiZSBwcm9wYWdh
dGVkIGZvcndhcmQ6IGJlY29tZXMgY2xvc2VkIGFzeW5jaHJvbm91c2x5OyBwcmV2ZW50Q2xvc2Ug
b21pdHRlZDsgcmVqZWN0ZWQgY2xvc2UgcHJvbWlzZScpOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4g
ewotCi0gIGNvbnN0IHJzID0gcmVjb3JkaW5nUmVhZGFibGVTdHJlYW0oKTsKLQotICBjb25zdCB3
cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKCk7Ci0KLSAgY29uc3QgcGlwZVByb21pc2UgPSBy
cy5waXBlVG8od3MsIHsgcHJldmVudENsb3NlOiB0cnVlIH0pOwotCi0gIHNldFRpbWVvdXQoKCkg
PT4gcnMuY29udHJvbGxlci5jbG9zZSgpKTsKLQotICByZXR1cm4gcGlwZVByb21pc2UudGhlbih2
YWx1ZSA9PiB7Ci0gICAgYXNzZXJ0X2VxdWFscyh2YWx1ZSwgdW5kZWZpbmVkLCAndGhlIHByb21p
c2UgbXVzdCBmdWxmaWxsIHdpdGggdW5kZWZpbmVkJyk7Ci0gIH0pCi0gIC50aGVuKCgpID0+IHsK
LSAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJzLmV2ZW50c1dpdGhvdXRQdWxscywgW10pOwotICAg
IGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbXSk7Ci0KLSAgICByZXR1cm4gcnMuZ2V0
UmVhZGVyKCkuY2xvc2VkOwotICB9KTsKLQotfSwgJ0Nsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVk
IGZvcndhcmQ6IGJlY29tZXMgY2xvc2VkIGFzeW5jaHJvbm91c2x5OyBwcmV2ZW50Q2xvc2UgPSB0
cnVlJyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgY29uc3QgcnMgPSByZWNvcmRpbmdS
ZWFkYWJsZVN0cmVhbSgpOwotCi0gIGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0o
dW5kZWZpbmVkLCBuZXcgQ291bnRRdWV1aW5nU3RyYXRlZ3koeyBoaWdoV2F0ZXJNYXJrOiAwIH0p
KTsKLQotICBjb25zdCBwaXBlUHJvbWlzZSA9IHJzLnBpcGVUbyh3cyk7Ci0KLSAgc2V0VGltZW91
dCgoKSA9PiBycy5jb250cm9sbGVyLmNsb3NlKCkpOwotCi0gIHJldHVybiBwaXBlUHJvbWlzZS50
aGVuKHZhbHVlID0+IHsKLSAgICBhc3NlcnRfZXF1YWxzKHZhbHVlLCB1bmRlZmluZWQsICd0aGUg
cHJvbWlzZSBtdXN0IGZ1bGZpbGwgd2l0aCB1bmRlZmluZWQnKTsKLSAgfSkKLSAgLnRoZW4oKCkg
PT4gewotICAgIGFzc2VydF9hcnJheV9lcXVhbHMocnMuZXZlbnRzV2l0aG91dFB1bGxzLCBbXSk7
Ci0gICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsnY2xvc2UnXSk7Ci0KLSAgICBy
ZXR1cm4gUHJvbWlzZS5hbGwoWwotICAgICAgcnMuZ2V0UmVhZGVyKCkuY2xvc2VkLAotICAgICAg
d3MuZ2V0V3JpdGVyKCkuY2xvc2VkCi0gICAgXSk7Ci0gIH0pOwotCi19LCAnQ2xvc2luZyBtdXN0
IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogYmVjb21lcyBjbG9zZWQgYXN5bmNocm9ub3VzbHk7IGRl
c3QgbmV2ZXIgZGVzaXJlcyBjaHVua3M7ICcgKwotICAgJ3ByZXZlbnRDbG9zZSBvbWl0dGVkOyBm
dWxmaWxsZWQgY2xvc2UgcHJvbWlzZScpOwotCi1wcm9taXNlX3Rlc3QodCA9PiB7Ci0KLSAgY29u
c3QgcnMgPSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSgpOwotCi0gIGNvbnN0IHdzID0gcmVjb3Jk
aW5nV3JpdGFibGVTdHJlYW0oewotICAgIGNsb3NlKCkgewotICAgICAgdGhyb3cgZXJyb3IxOwot
ICAgIH0KLSAgfSwgbmV3IENvdW50UXVldWluZ1N0cmF0ZWd5KHsgaGlnaFdhdGVyTWFyazogMCB9
KSk7Ci0KLSAgY29uc3QgcGlwZVByb21pc2UgPSBwcm9taXNlX3JlamVjdHModCwgZXJyb3IxLCBy
cy5waXBlVG8od3MpLCAncGlwZVRvIG11c3QgcmVqZWN0IHdpdGggdGhlIHNhbWUgZXJyb3InKTsK
LQotICBzZXRUaW1lb3V0KCgpID0+IHJzLmNvbnRyb2xsZXIuY2xvc2UoKSk7Ci0KLSAgcmV0dXJu
IHBpcGVQcm9taXNlLnRoZW4oKCkgPT4gewotICAgIGFzc2VydF9hcnJheV9lcXVhbHMocnMuZXZl
bnRzV2l0aG91dFB1bGxzLCBbXSk7Ci0gICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMs
IFsnY2xvc2UnXSk7Ci0KLSAgICByZXR1cm4gUHJvbWlzZS5hbGwoWwotICAgICAgcnMuZ2V0UmVh
ZGVyKCkuY2xvc2VkLAotICAgICAgcHJvbWlzZV9yZWplY3RzKHQsIGVycm9yMSwgd3MuZ2V0V3Jp
dGVyKCkuY2xvc2VkKQotICAgIF0pOwotICB9KTsKLQotfSwgJ0Nsb3NpbmcgbXVzdCBiZSBwcm9w
YWdhdGVkIGZvcndhcmQ6IGJlY29tZXMgY2xvc2VkIGFzeW5jaHJvbm91c2x5OyBkZXN0IG5ldmVy
IGRlc2lyZXMgY2h1bmtzOyAnICsKLSAgICdwcmV2ZW50Q2xvc2Ugb21pdHRlZDsgcmVqZWN0ZWQg
Y2xvc2UgcHJvbWlzZScpOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotCi0gIGNvbnN0IHJzID0g
cmVjb3JkaW5nUmVhZGFibGVTdHJlYW0oKTsKLQotICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRh
YmxlU3RyZWFtKHVuZGVmaW5lZCwgbmV3IENvdW50UXVldWluZ1N0cmF0ZWd5KHsgaGlnaFdhdGVy
TWFyazogMCB9KSk7Ci0KLSAgY29uc3QgcGlwZVByb21pc2UgPSBycy5waXBlVG8od3MsIHsgcHJl
dmVudENsb3NlOiB0cnVlIH0pOwotCi0gIHNldFRpbWVvdXQoKCkgPT4gcnMuY29udHJvbGxlci5j
bG9zZSgpKTsKLQotICByZXR1cm4gcGlwZVByb21pc2UudGhlbih2YWx1ZSA9PiB7Ci0gICAgYXNz
ZXJ0X2VxdWFscyh2YWx1ZSwgdW5kZWZpbmVkLCAndGhlIHByb21pc2UgbXVzdCBmdWxmaWxsIHdp
dGggdW5kZWZpbmVkJyk7Ci0gIH0pCi0gIC50aGVuKCgpID0+IHsKLSAgICBhc3NlcnRfYXJyYXlf
ZXF1YWxzKHJzLmV2ZW50c1dpdGhvdXRQdWxscywgW10pOwotICAgIGFzc2VydF9hcnJheV9lcXVh
bHMod3MuZXZlbnRzLCBbXSk7Ci0KLSAgICByZXR1cm4gcnMuZ2V0UmVhZGVyKCkuY2xvc2VkOwot
ICB9KTsKLQotfSwgJ0Nsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IGJlY29tZXMg
Y2xvc2VkIGFzeW5jaHJvbm91c2x5OyBkZXN0IG5ldmVyIGRlc2lyZXMgY2h1bmtzOyAnICsKLSAg
ICdwcmV2ZW50Q2xvc2UgPSB0cnVlJyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgY29u
c3QgcnMgPSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSgpOwotCi0gIGNvbnN0IHdzID0gcmVjb3Jk
aW5nV3JpdGFibGVTdHJlYW0oKTsKLQotICBjb25zdCBwaXBlUHJvbWlzZSA9IHJzLnBpcGVUbyh3
cyk7Ci0KLSAgc2V0VGltZW91dCgoKSA9PiB7Ci0gICAgcnMuY29udHJvbGxlci5lbnF1ZXVlKCdI
ZWxsbycpOwotICAgIHNldFRpbWVvdXQoKCkgPT4gcnMuY29udHJvbGxlci5jbG9zZSgpKTsKLSAg
fSwgMTApOwotCi0gIHJldHVybiBwaXBlUHJvbWlzZS50aGVuKHZhbHVlID0+IHsKLSAgICBhc3Nl
cnRfZXF1YWxzKHZhbHVlLCB1bmRlZmluZWQsICd0aGUgcHJvbWlzZSBtdXN0IGZ1bGZpbGwgd2l0
aCB1bmRlZmluZWQnKTsKLSAgfSkKLSAgLnRoZW4oKCkgPT4gewotICAgIGFzc2VydF9hcnJheV9l
cXVhbHMocnMuZXZlbnRzV2l0aG91dFB1bGxzLCBbXSk7Ci0gICAgYXNzZXJ0X2FycmF5X2VxdWFs
cyh3cy5ldmVudHMsIFsnd3JpdGUnLCAnSGVsbG8nLCAnY2xvc2UnXSk7Ci0KLSAgICByZXR1cm4g
UHJvbWlzZS5hbGwoWwotICAgICAgcnMuZ2V0UmVhZGVyKCkuY2xvc2VkLAotICAgICAgd3MuZ2V0
V3JpdGVyKCkuY2xvc2VkCi0gICAgXSk7Ci0gIH0pOwotCi19LCAnQ2xvc2luZyBtdXN0IGJlIHBy
b3BhZ2F0ZWQgZm9yd2FyZDogYmVjb21lcyBjbG9zZWQgYWZ0ZXIgb25lIGNodW5rOyBwcmV2ZW50
Q2xvc2Ugb21pdHRlZDsgZnVsZmlsbGVkIGNsb3NlIHByb21pc2UnKTsKLQotcHJvbWlzZV90ZXN0
KHQgPT4gewotCi0gIGNvbnN0IHJzID0gcmVjb3JkaW5nUmVhZGFibGVTdHJlYW0oKTsKLQotICBj
b25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKHsKLSAgICBjbG9zZSgpIHsKLSAgICAg
IHRocm93IGVycm9yMTsKLSAgICB9Ci0gIH0pOwotCi0gIGNvbnN0IHBpcGVQcm9taXNlID0gcHJv
bWlzZV9yZWplY3RzKHQsIGVycm9yMSwgcnMucGlwZVRvKHdzKSwgJ3BpcGVUbyBtdXN0IHJlamVj
dCB3aXRoIHRoZSBzYW1lIGVycm9yJyk7Ci0KLSAgc2V0VGltZW91dCgoKSA9PiB7Ci0gICAgcnMu
Y29udHJvbGxlci5lbnF1ZXVlKCdIZWxsbycpOwotICAgIHNldFRpbWVvdXQoKCkgPT4gcnMuY29u
dHJvbGxlci5jbG9zZSgpKTsKLSAgfSwgMTApOwotCi0gIHJldHVybiBwaXBlUHJvbWlzZS50aGVu
KCgpID0+IHsKLSAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJzLmV2ZW50c1dpdGhvdXRQdWxscywg
W10pOwotICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ3dyaXRlJywgJ0hlbGxv
JywgJ2Nsb3NlJ10pOwotCi0gICAgcmV0dXJuIFByb21pc2UuYWxsKFsKLSAgICAgIHJzLmdldFJl
YWRlcigpLmNsb3NlZCwKLSAgICAgIHByb21pc2VfcmVqZWN0cyh0LCBlcnJvcjEsIHdzLmdldFdy
aXRlcigpLmNsb3NlZCkKLSAgICBdKTsKLSAgfSk7Ci0KLX0sICdDbG9zaW5nIG11c3QgYmUgcHJv
cGFnYXRlZCBmb3J3YXJkOiBiZWNvbWVzIGNsb3NlZCBhZnRlciBvbmUgY2h1bms7IHByZXZlbnRD
bG9zZSBvbWl0dGVkOyByZWplY3RlZCBjbG9zZSBwcm9taXNlJyk7Ci0KLXByb21pc2VfdGVzdCgo
KSA9PiB7Ci0KLSAgY29uc3QgcnMgPSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSgpOwotCi0gIGNv
bnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0oKTsKLQotICBjb25zdCBwaXBlUHJvbWlz
ZSA9IHJzLnBpcGVUbyh3cywgeyBwcmV2ZW50Q2xvc2U6IHRydWUgfSk7Ci0KLSAgc2V0VGltZW91
dCgoKSA9PiB7Ci0gICAgcnMuY29udHJvbGxlci5lbnF1ZXVlKCdIZWxsbycpOwotICAgIHNldFRp
bWVvdXQoKCkgPT4gcnMuY29udHJvbGxlci5jbG9zZSgpKTsKLSAgfSwgMTApOwotCi0gIHJldHVy
biBwaXBlUHJvbWlzZS50aGVuKHZhbHVlID0+IHsKLSAgICBhc3NlcnRfZXF1YWxzKHZhbHVlLCB1
bmRlZmluZWQsICd0aGUgcHJvbWlzZSBtdXN0IGZ1bGZpbGwgd2l0aCB1bmRlZmluZWQnKTsKLSAg
fSkKLSAgLnRoZW4oKCkgPT4gewotICAgIGFzc2VydF9hcnJheV9lcXVhbHMocnMuZXZlbnRzV2l0
aG91dFB1bGxzLCBbXSk7Ci0gICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsnd3Jp
dGUnLCAnSGVsbG8nXSk7Ci0KLSAgICByZXR1cm4gcnMuZ2V0UmVhZGVyKCkuY2xvc2VkOwotICB9
KTsKLQotfSwgJ0Nsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IGJlY29tZXMgY2xv
c2VkIGFmdGVyIG9uZSBjaHVuazsgcHJldmVudENsb3NlID0gdHJ1ZScpOwotCi1wcm9taXNlX3Rl
c3QoKCkgPT4gewotCi0gIGNvbnN0IHJzID0gcmVjb3JkaW5nUmVhZGFibGVTdHJlYW0oKTsKLQot
ICBsZXQgcmVzb2x2ZVdyaXRlUHJvbWlzZTsKLSAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJs
ZVN0cmVhbSh7Ci0gICAgd3JpdGUoKSB7Ci0gICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2
ZSA9PiB7Ci0gICAgICAgIHJlc29sdmVXcml0ZVByb21pc2UgPSByZXNvbHZlOwotICAgICAgfSk7
Ci0gICAgfQotICB9KTsKLQotICBsZXQgcGlwZUNvbXBsZXRlID0gZmFsc2U7Ci0gIGNvbnN0IHBp
cGVQcm9taXNlID0gcnMucGlwZVRvKHdzKS50aGVuKCgpID0+IHsKLSAgICBwaXBlQ29tcGxldGUg
PSB0cnVlOwotICB9KTsKLQotICBycy5jb250cm9sbGVyLmVucXVldWUoJ2EnKTsKLSAgcnMuY29u
dHJvbGxlci5jbG9zZSgpOwotCi0gIC8vIEZsdXNoIGFzeW5jIGV2ZW50cyBhbmQgdmVyaWZ5IHRo
YXQgbm8gc2h1dGRvd24gb2NjdXJzLgotICByZXR1cm4gZmx1c2hBc3luY0V2ZW50cygpLnRoZW4o
KCkgPT4gewotICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ3dyaXRlJywgJ2En
XSk7IC8vIG5vICdjbG9zZScKLSAgICBhc3NlcnRfZXF1YWxzKHBpcGVDb21wbGV0ZSwgZmFsc2Us
ICd0aGUgcGlwZSBtdXN0IG5vdCBiZSBjb21wbGV0ZScpOwotCi0gICAgcmVzb2x2ZVdyaXRlUHJv
bWlzZSgpOwotCi0gICAgcmV0dXJuIHBpcGVQcm9taXNlLnRoZW4oKCkgPT4gewotICAgICAgYXNz
ZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsnd3JpdGUnLCAnYScsICdjbG9zZSddKTsKLSAg
ICB9KTsKLSAgfSk7Ci0KLX0sICdDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBz
aHV0ZG93biBtdXN0IG5vdCBvY2N1ciB1bnRpbCB0aGUgZmluYWwgd3JpdGUgY29tcGxldGVzJyk7
Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgY29uc3QgcnMgPSByZWNvcmRpbmdSZWFkYWJs
ZVN0cmVhbSgpOwotCi0gIGxldCByZXNvbHZlV3JpdGVQcm9taXNlOwotICBjb25zdCB3cyA9IHJl
Y29yZGluZ1dyaXRhYmxlU3RyZWFtKHsKLSAgICB3cml0ZSgpIHsKLSAgICAgIHJldHVybiBuZXcg
UHJvbWlzZShyZXNvbHZlID0+IHsKLSAgICAgICAgcmVzb2x2ZVdyaXRlUHJvbWlzZSA9IHJlc29s
dmU7Ci0gICAgICB9KTsKLSAgICB9Ci0gIH0pOwotCi0gIGxldCBwaXBlQ29tcGxldGUgPSBmYWxz
ZTsKLSAgY29uc3QgcGlwZVByb21pc2UgPSBycy5waXBlVG8od3MsIHsgcHJldmVudENsb3NlOiB0
cnVlIH0pLnRoZW4oKCkgPT4gewotICAgIHBpcGVDb21wbGV0ZSA9IHRydWU7Ci0gIH0pOwotCi0g
IHJzLmNvbnRyb2xsZXIuZW5xdWV1ZSgnYScpOwotICBycy5jb250cm9sbGVyLmNsb3NlKCk7Ci0K
LSAgLy8gRmx1c2ggYXN5bmMgZXZlbnRzIGFuZCB2ZXJpZnkgdGhhdCBubyBzaHV0ZG93biBvY2N1
cnMuCi0gIHJldHVybiBmbHVzaEFzeW5jRXZlbnRzKCkudGhlbigoKSA9PiB7Ci0gICAgYXNzZXJ0
X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsnd3JpdGUnLCAnYSddLAotICAgICAgJ3RoZSBjaHVu
ayBtdXN0IGhhdmUgYmVlbiB3cml0dGVuLCBidXQgY2xvc2UgbXVzdCBub3QgaGF2ZSBoYXBwZW5l
ZCcpOwotICAgIGFzc2VydF9lcXVhbHMocGlwZUNvbXBsZXRlLCBmYWxzZSwgJ3RoZSBwaXBlIG11
c3Qgbm90IGJlIGNvbXBsZXRlJyk7Ci0KLSAgICByZXNvbHZlV3JpdGVQcm9taXNlKCk7Ci0KLSAg
ICByZXR1cm4gcGlwZVByb21pc2U7Ci0gIH0pLnRoZW4oKCkgPT4gZmx1c2hBc3luY0V2ZW50cygp
KS50aGVuKCgpID0+IHsKLSAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWyd3cml0
ZScsICdhJ10sCi0gICAgICAndGhlIGNodW5rIG11c3QgaGF2ZSBiZWVuIHdyaXR0ZW4sIGJ1dCBj
bG9zZSBtdXN0IG5vdCBoYXZlIGhhcHBlbmVkJyk7Ci0gIH0pOwotCi19LCAnQ2xvc2luZyBtdXN0
IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc2h1dGRvd24gbXVzdCBub3Qgb2NjdXIgdW50aWwgdGhl
IGZpbmFsIHdyaXRlIGNvbXBsZXRlczsgcHJldmVudENsb3NlID0gdHJ1ZScpOwotCi1wcm9taXNl
X3Rlc3QoKCkgPT4gewotCi0gIGNvbnN0IHJzID0gcmVjb3JkaW5nUmVhZGFibGVTdHJlYW0oKTsK
LQotICBsZXQgcmVzb2x2ZVdyaXRlQ2FsbGVkOwotICBjb25zdCB3cml0ZUNhbGxlZFByb21pc2Ug
PSBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKLSAgICByZXNvbHZlV3JpdGVDYWxsZWQgPSByZXNv
bHZlOwotICB9KTsKLQotICBsZXQgcmVzb2x2ZVdyaXRlUHJvbWlzZTsKLSAgY29uc3Qgd3MgPSBy
ZWNvcmRpbmdXcml0YWJsZVN0cmVhbSh7Ci0gICAgd3JpdGUoKSB7Ci0gICAgICByZXNvbHZlV3Jp
dGVDYWxsZWQoKTsKLQotICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4gewotICAg
ICAgICByZXNvbHZlV3JpdGVQcm9taXNlID0gcmVzb2x2ZTsKLSAgICAgIH0pOwotICAgIH0KLSAg
fSwgbmV3IENvdW50UXVldWluZ1N0cmF0ZWd5KHsgaGlnaFdhdGVyTWFyazogMiB9KSk7Ci0KLSAg
bGV0IHBpcGVDb21wbGV0ZSA9IGZhbHNlOwotICBjb25zdCBwaXBlUHJvbWlzZSA9IHJzLnBpcGVU
byh3cykudGhlbigoKSA9PiB7Ci0gICAgcGlwZUNvbXBsZXRlID0gdHJ1ZTsKLSAgfSk7Ci0KLSAg
cnMuY29udHJvbGxlci5lbnF1ZXVlKCdhJyk7Ci0gIHJzLmNvbnRyb2xsZXIuZW5xdWV1ZSgnYicp
OwotCi0gIHJldHVybiB3cml0ZUNhbGxlZFByb21pc2UudGhlbigoKSA9PiBmbHVzaEFzeW5jRXZl
bnRzKCkpLnRoZW4oKCkgPT4gewotICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBb
J3dyaXRlJywgJ2EnXSwKLSAgICAgICd0aGUgZmlyc3QgY2h1bmsgbXVzdCBoYXZlIGJlZW4gd3Jp
dHRlbiwgYnV0IGNsb3NlIG11c3Qgbm90IGhhdmUgaGFwcGVuZWQgeWV0Jyk7Ci0gICAgYXNzZXJ0
X2ZhbHNlKHBpcGVDb21wbGV0ZSwgJ3RoZSBwaXBlIHNob3VsZCBub3QgY29tcGxldGUgd2hpbGUg
dGhlIGZpcnN0IHdyaXRlIGlzIHBlbmRpbmcnKTsKLQotICAgIHJzLmNvbnRyb2xsZXIuY2xvc2Uo
KTsKLSAgICByZXNvbHZlV3JpdGVQcm9taXNlKCk7Ci0gIH0pLnRoZW4oKCkgPT4gZmx1c2hBc3lu
Y0V2ZW50cygpKS50aGVuKCgpID0+IHsKLSAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50
cywgWyd3cml0ZScsICdhJywgJ3dyaXRlJywgJ2InXSwKLSAgICAgICd0aGUgc2Vjb25kIGNodW5r
IG11c3QgaGF2ZSBiZWVuIHdyaXR0ZW4sIGJ1dCBjbG9zZSBtdXN0IG5vdCBoYXZlIGhhcHBlbmVk
IHlldCcpOwotICAgIGFzc2VydF9mYWxzZShwaXBlQ29tcGxldGUsICd0aGUgcGlwZSBzaG91bGQg
bm90IGNvbXBsZXRlIHdoaWxlIHRoZSBzZWNvbmQgd3JpdGUgaXMgcGVuZGluZycpOwotCi0gICAg
cmVzb2x2ZVdyaXRlUHJvbWlzZSgpOwotICAgIHJldHVybiBwaXBlUHJvbWlzZTsKLSAgfSkudGhl
bigoKSA9PiB7Ci0gICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsnd3JpdGUnLCAn
YScsICd3cml0ZScsICdiJywgJ2Nsb3NlJ10sCi0gICAgICAnYWxsIGNodW5rcyBtdXN0IGhhdmUg
YmVlbiB3cml0dGVuIGFuZCBjbG9zZSBtdXN0IGhhdmUgaGFwcGVuZWQnKTsKLSAgfSk7Ci0KLX0s
ICdDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBzaHV0ZG93biBtdXN0IG5vdCBv
Y2N1ciB1bnRpbCB0aGUgZmluYWwgd3JpdGUgY29tcGxldGVzOyBiZWNvbWVzIGNsb3NlZCBhZnRl
ciBmaXJzdCB3cml0ZScpOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotCi0gIGNvbnN0IHJzID0g
cmVjb3JkaW5nUmVhZGFibGVTdHJlYW0oKTsKLQotICBsZXQgcmVzb2x2ZVdyaXRlQ2FsbGVkOwot
ICBjb25zdCB3cml0ZUNhbGxlZFByb21pc2UgPSBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKLSAg
ICByZXNvbHZlV3JpdGVDYWxsZWQgPSByZXNvbHZlOwotICB9KTsKLQotICBsZXQgcmVzb2x2ZVdy
aXRlUHJvbWlzZTsKLSAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSh7Ci0gICAg
d3JpdGUoKSB7Ci0gICAgICByZXNvbHZlV3JpdGVDYWxsZWQoKTsKLQotICAgICAgcmV0dXJuIG5l
dyBQcm9taXNlKHJlc29sdmUgPT4gewotICAgICAgICByZXNvbHZlV3JpdGVQcm9taXNlID0gcmVz
b2x2ZTsKLSAgICAgIH0pOwotICAgIH0KLSAgfSwgbmV3IENvdW50UXVldWluZ1N0cmF0ZWd5KHsg
aGlnaFdhdGVyTWFyazogMiB9KSk7Ci0KLSAgbGV0IHBpcGVDb21wbGV0ZSA9IGZhbHNlOwotICBj
b25zdCBwaXBlUHJvbWlzZSA9IHJzLnBpcGVUbyh3cywgeyBwcmV2ZW50Q2xvc2U6IHRydWUgfSku
dGhlbigoKSA9PiB7Ci0gICAgcGlwZUNvbXBsZXRlID0gdHJ1ZTsKLSAgfSk7Ci0KLSAgcnMuY29u
dHJvbGxlci5lbnF1ZXVlKCdhJyk7Ci0gIHJzLmNvbnRyb2xsZXIuZW5xdWV1ZSgnYicpOwotCi0g
IHJldHVybiB3cml0ZUNhbGxlZFByb21pc2UudGhlbigoKSA9PiBmbHVzaEFzeW5jRXZlbnRzKCkp
LnRoZW4oKCkgPT4gewotICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ3dyaXRl
JywgJ2EnXSwKLSAgICAgICd0aGUgZmlyc3QgY2h1bmsgbXVzdCBoYXZlIGJlZW4gd3JpdHRlbiwg
YnV0IGNsb3NlIG11c3Qgbm90IGhhdmUgaGFwcGVuZWQnKTsKLSAgICBhc3NlcnRfZmFsc2UocGlw
ZUNvbXBsZXRlLCAndGhlIHBpcGUgc2hvdWxkIG5vdCBjb21wbGV0ZSB3aGlsZSB0aGUgZmlyc3Qg
d3JpdGUgaXMgcGVuZGluZycpOwotCi0gICAgcnMuY29udHJvbGxlci5jbG9zZSgpOwotICAgIHJl
c29sdmVXcml0ZVByb21pc2UoKTsKLSAgfSkudGhlbigoKSA9PiBmbHVzaEFzeW5jRXZlbnRzKCkp
LnRoZW4oKCkgPT4gewotICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ3dyaXRl
JywgJ2EnLCAnd3JpdGUnLCAnYiddLAotICAgICAgJ3RoZSBzZWNvbmQgY2h1bmsgbXVzdCBoYXZl
IGJlZW4gd3JpdHRlbiwgYnV0IGNsb3NlIG11c3Qgbm90IGhhdmUgaGFwcGVuZWQnKTsKLSAgICBh
c3NlcnRfZmFsc2UocGlwZUNvbXBsZXRlLCAndGhlIHBpcGUgc2hvdWxkIG5vdCBjb21wbGV0ZSB3
aGlsZSB0aGUgc2Vjb25kIHdyaXRlIGlzIHBlbmRpbmcnKTsKLQotICAgIHJlc29sdmVXcml0ZVBy
b21pc2UoKTsKLSAgICByZXR1cm4gcGlwZVByb21pc2U7Ci0gIH0pLnRoZW4oKCkgPT4gZmx1c2hB
c3luY0V2ZW50cygpKS50aGVuKCgpID0+IHsKLSAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2
ZW50cywgWyd3cml0ZScsICdhJywgJ3dyaXRlJywgJ2InXSwKLSAgICAgICdhbGwgY2h1bmtzIG11
c3QgaGF2ZSBiZWVuIHdyaXR0ZW4sIGJ1dCBjbG9zZSBtdXN0IG5vdCBoYXZlIGhhcHBlbmVkJyk7
Ci0gIH0pOwotCi19LCAnQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc2h1dGRv
d24gbXVzdCBub3Qgb2NjdXIgdW50aWwgdGhlIGZpbmFsIHdyaXRlIGNvbXBsZXRlczsgYmVjb21l
cyBjbG9zZWQgYWZ0ZXIgZmlyc3Qgd3JpdGU7IHByZXZlbnRDbG9zZSA9IHRydWUnKTsKLQotZG9u
ZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL3BpcGluZy9jbG9zZS1wcm9wYWdhdGlvbi1mb3J3YXJkLnNlcnZpY2V3b3Jr
ZXIuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9jbG9zZS1wcm9wYWdhdGlvbi1mb3J3YXJkLnNlcnZp
Y2V3b3JrZXIuaHR0cHMtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBjYTM3ZWZhZWNjNDU0MTFmMDRiZWFmYzU4MGRhMmM3NDJkNGViMWI1Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvY2xvc2UtcHJvcGFnYXRpb24tZm9y
d2FyZC5zZXJ2aWNld29ya2VyLmh0dHBzLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0x
LDMyICswLDAgQEAKLQotUEFTUyBTZXJ2aWNlIHdvcmtlciB0ZXN0IHNldHVwIAotRkFJTCBDbG9z
aW5nIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBzdGFydHMgY2xvc2VkOyBwcmV2ZW50Q2xv
c2Ugb21pdHRlZDsgZnVsZmlsbGVkIGNsb3NlIHByb21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTog
V3JpdGFibGVTdHJlYW0KLUZBSUwgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDog
c3RhcnRzIGNsb3NlZDsgcHJldmVudENsb3NlIG9taXR0ZWQ7IHJlamVjdGVkIGNsb3NlIHByb21p
c2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgQ2xvc2luZyBtdXN0
IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc3RhcnRzIGNsb3NlZDsgcHJldmVudENsb3NlID0gdW5k
ZWZpbmVkIChmYWxzeSk7IGZ1bGZpbGxlZCBjbG9zZSBwcm9taXNlIENhbid0IGZpbmQgdmFyaWFi
bGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIENsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndh
cmQ6IHN0YXJ0cyBjbG9zZWQ7IHByZXZlbnRDbG9zZSA9IG51bGwgKGZhbHN5KTsgZnVsZmlsbGVk
IGNsb3NlIHByb21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwg
Q2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc3RhcnRzIGNsb3NlZDsgcHJldmVu
dENsb3NlID0gZmFsc2UgKGZhbHN5KTsgZnVsZmlsbGVkIGNsb3NlIHByb21pc2UgQ2FuJ3QgZmlu
ZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0
ZWQgZm9yd2FyZDogc3RhcnRzIGNsb3NlZDsgcHJldmVudENsb3NlID0gMCAoZmFsc3kpOyBmdWxm
aWxsZWQgY2xvc2UgcHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQot
RkFJTCBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBzdGFydHMgY2xvc2VkOyBw
cmV2ZW50Q2xvc2UgPSAtMCAoZmFsc3kpOyBmdWxmaWxsZWQgY2xvc2UgcHJvbWlzZSBDYW4ndCBm
aW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBDbG9zaW5nIG11c3QgYmUgcHJvcGFn
YXRlZCBmb3J3YXJkOiBzdGFydHMgY2xvc2VkOyBwcmV2ZW50Q2xvc2UgPSBOYU4gKGZhbHN5KTsg
ZnVsZmlsbGVkIGNsb3NlIHByb21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJl
YW0KLUZBSUwgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc3RhcnRzIGNsb3Nl
ZDsgcHJldmVudENsb3NlID0gIChmYWxzeSk7IGZ1bGZpbGxlZCBjbG9zZSBwcm9taXNlIENhbid0
IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIENsb3NpbmcgbXVzdCBiZSBwcm9w
YWdhdGVkIGZvcndhcmQ6IHN0YXJ0cyBjbG9zZWQ7IHByZXZlbnRDbG9zZSA9IHRydWUgKHRydXRo
eSkgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgQ2xvc2luZyBtdXN0
IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc3RhcnRzIGNsb3NlZDsgcHJldmVudENsb3NlID0gYSAo
dHJ1dGh5KSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBDbG9zaW5n
IG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBzdGFydHMgY2xvc2VkOyBwcmV2ZW50Q2xvc2Ug
PSAxICh0cnV0aHkpIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIENs
b3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHN0YXJ0cyBjbG9zZWQ7IHByZXZlbnRD
bG9zZSA9IFN5bWJvbCgpICh0cnV0aHkpIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3Ry
ZWFtCi1GQUlMIENsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHN0YXJ0cyBjbG9z
ZWQ7IHByZXZlbnRDbG9zZSA9IFtvYmplY3QgT2JqZWN0XSAodHJ1dGh5KSBDYW4ndCBmaW5kIHZh
cmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBm
b3J3YXJkOiBzdGFydHMgY2xvc2VkOyBwcmV2ZW50Q2xvc2UgPSB0cnVlLCBwcmV2ZW50QWJvcnQg
PSB0cnVlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIENsb3Npbmcg
bXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHN0YXJ0cyBjbG9zZWQ7IHByZXZlbnRDbG9zZSA9
IHRydWUsIHByZXZlbnRBYm9ydCA9IHRydWUsIHByZXZlbnRDYW5jZWwgPSB0cnVlIENhbid0IGZp
bmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIENsb3NpbmcgbXVzdCBiZSBwcm9wYWdh
dGVkIGZvcndhcmQ6IGJlY29tZXMgY2xvc2VkIGFzeW5jaHJvbm91c2x5OyBwcmV2ZW50Q2xvc2Ug
b21pdHRlZDsgZnVsZmlsbGVkIGNsb3NlIHByb21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3Jp
dGFibGVTdHJlYW0KLUZBSUwgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogYmVj
b21lcyBjbG9zZWQgYXN5bmNocm9ub3VzbHk7IHByZXZlbnRDbG9zZSBvbWl0dGVkOyByZWplY3Rl
ZCBjbG9zZSBwcm9taXNlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlM
IENsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IGJlY29tZXMgY2xvc2VkIGFzeW5j
aHJvbm91c2x5OyBwcmV2ZW50Q2xvc2UgPSB0cnVlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRh
YmxlU3RyZWFtCi1GQUlMIENsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IGJlY29t
ZXMgY2xvc2VkIGFzeW5jaHJvbm91c2x5OyBkZXN0IG5ldmVyIGRlc2lyZXMgY2h1bmtzOyBwcmV2
ZW50Q2xvc2Ugb21pdHRlZDsgZnVsZmlsbGVkIGNsb3NlIHByb21pc2UgQ2FuJ3QgZmluZCB2YXJp
YWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9y
d2FyZDogYmVjb21lcyBjbG9zZWQgYXN5bmNocm9ub3VzbHk7IGRlc3QgbmV2ZXIgZGVzaXJlcyBj
aHVua3M7IHByZXZlbnRDbG9zZSBvbWl0dGVkOyByZWplY3RlZCBjbG9zZSBwcm9taXNlIENhbid0
IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIENsb3NpbmcgbXVzdCBiZSBwcm9w
YWdhdGVkIGZvcndhcmQ6IGJlY29tZXMgY2xvc2VkIGFzeW5jaHJvbm91c2x5OyBkZXN0IG5ldmVy
IGRlc2lyZXMgY2h1bmtzOyBwcmV2ZW50Q2xvc2UgPSB0cnVlIENhbid0IGZpbmQgdmFyaWFibGU6
IFdyaXRhYmxlU3RyZWFtCi1GQUlMIENsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6
IGJlY29tZXMgY2xvc2VkIGFmdGVyIG9uZSBjaHVuazsgcHJldmVudENsb3NlIG9taXR0ZWQ7IGZ1
bGZpbGxlZCBjbG9zZSBwcm9taXNlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFt
Ci1GQUlMIENsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IGJlY29tZXMgY2xvc2Vk
IGFmdGVyIG9uZSBjaHVuazsgcHJldmVudENsb3NlIG9taXR0ZWQ7IHJlamVjdGVkIGNsb3NlIHBy
b21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgQ2xvc2luZyBt
dXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogYmVjb21lcyBjbG9zZWQgYWZ0ZXIgb25lIGNodW5r
OyBwcmV2ZW50Q2xvc2UgPSB0cnVlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFt
Ci1GQUlMIENsb3NpbmcgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHNodXRkb3duIG11c3Qg
bm90IG9jY3VyIHVudGlsIHRoZSBmaW5hbCB3cml0ZSBjb21wbGV0ZXMgQ2FuJ3QgZmluZCB2YXJp
YWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgQ2xvc2luZyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9y
d2FyZDogc2h1dGRvd24gbXVzdCBub3Qgb2NjdXIgdW50aWwgdGhlIGZpbmFsIHdyaXRlIGNvbXBs
ZXRlczsgcHJldmVudENsb3NlID0gdHJ1ZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0
cmVhbQotRkFJTCBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBzaHV0ZG93biBt
dXN0IG5vdCBvY2N1ciB1bnRpbCB0aGUgZmluYWwgd3JpdGUgY29tcGxldGVzOyBiZWNvbWVzIGNs
b3NlZCBhZnRlciBmaXJzdCB3cml0ZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVh
bQotRkFJTCBDbG9zaW5nIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBzaHV0ZG93biBtdXN0
IG5vdCBvY2N1ciB1bnRpbCB0aGUgZmluYWwgd3JpdGUgY29tcGxldGVzOyBiZWNvbWVzIGNsb3Nl
ZCBhZnRlciBmaXJzdCB3cml0ZTsgcHJldmVudENsb3NlID0gdHJ1ZSBDYW4ndCBmaW5kIHZhcmlh
YmxlOiBXcml0YWJsZVN0cmVhbQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Nsb3NlLXByb3BhZ2F0aW9uLWZv
cndhcmQuc2VydmljZXdvcmtlci5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9jbG9zZS1wcm9wYWdhdGlvbi1mb3J3
YXJkLnNlcnZpY2V3b3JrZXIuaHR0cHMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggZWNmZDQ3NDA5NzU3YTFkZTBjNDY1MmIwNzA3MzdjNjJjOWY0MjYxYS4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Nsb3NlLXByb3BhZ2F0aW9uLWZv
cndhcmQuc2VydmljZXdvcmtlci5odHRwcy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAs
MCBAQAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08dGl0bGU+Y2xv
c2UtcHJvcGFnYXRpb24tZm9yd2FyZC5qcyBzZXJ2aWNlIHdvcmtlciB3cmFwcGVyIGZpbGU8L3Rp
dGxlPgotCi08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+
Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+
Ci08c2NyaXB0IHNyYz0iL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9yZXNvdXJjZXMv
dGVzdC1oZWxwZXJzLnN1Yi5qcyI+PC9zY3JpcHQ+Ci0KLTxzY3JpcHQ+Ci0ndXNlIHN0cmljdCc7
Ci1zZXJ2aWNlX3dvcmtlcl90ZXN0KCdjbG9zZS1wcm9wYWdhdGlvbi1mb3J3YXJkLmpzJywgJ1Nl
cnZpY2Ugd29ya2VyIHRlc3Qgc2V0dXAnKTsKLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9jbG9z
ZS1wcm9wYWdhdGlvbi1mb3J3YXJkLnNoYXJlZHdvcmtlci1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Nsb3Nl
LXByb3BhZ2F0aW9uLWZvcndhcmQuc2hhcmVkd29ya2VyLWV4cGVjdGVkLnR4dApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDlkNWQyNTA5ZDc4NDdlOGNkNmZlNjYwNmFhNjBjZGQzM2Fh
NDc0ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Ns
b3NlLXByb3BhZ2F0aW9uLWZvcndhcmQuc2hhcmVkd29ya2VyLWV4cGVjdGVkLnR4dAorKysgL2Rl
di9udWxsCkBAIC0xLDUgKzAsMCBAQAotQ09OU09MRSBNRVNTQUdFOiBSZWZlcmVuY2VFcnJvcjog
Q2FuJ3QgZmluZCB2YXJpYWJsZTogU2hhcmVkV29ya2VyCi0KLUhhcm5lc3MgRXJyb3IgKEZBSUwp
LCBtZXNzYWdlID0gUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IFNoYXJlZFdv
cmtlcgotCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvY2xvc2UtcHJvcGFnYXRpb24tZm9yd2FyZC5zaGFyZWR3
b3JrZXIuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy9waXBpbmcvY2xvc2UtcHJvcGFnYXRpb24tZm9yd2FyZC5zaGFyZWR3b3JrZXIuaHRt
bApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWY5ZTk4NTcyYTc4MWQzYzE3NmY0Yzk5
NzU1OTNkMDExNGEzY2Q5ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvcGlwaW5nL2Nsb3NlLXByb3BhZ2F0aW9uLWZvcndhcmQuc2hhcmVkd29ya2VyLmh0bWwKKysr
IC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxtZXRhIGNoYXJz
ZXQ9InV0Zi04Ij4KLTx0aXRsZT5jbG9zZS1wcm9wYWdhdGlvbi1mb3J3YXJkLmpzIHNoYXJlZCB3
b3JrZXIgd3JhcHBlciBmaWxlPC90aXRsZT4KLQotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVz
dGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5l
c3NyZXBvcnQuanMiPjwvc2NyaXB0PgotCi08c2NyaXB0PgotJ3VzZSBzdHJpY3QnOwotZmV0Y2hf
dGVzdHNfZnJvbV93b3JrZXIobmV3IFNoYXJlZFdvcmtlcignY2xvc2UtcHJvcGFnYXRpb24tZm9y
d2FyZC5qcycpKTsKLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9lcnJvci1wcm9wYWdhdGlvbi1i
YWNrd2FyZC5hbnktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9lcnJvci1wcm9wYWdhdGlvbi1iYWNrd2FyZC5h
bnktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI0NjcyZGNiYmQ5M2E2ODM2NmM2OTU2ZGZmYzgx
ZWZkOTNhZmZjMWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Vycm9yLXByb3BhZ2F0aW9uLWJhY2t3
YXJkLmFueS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0MSBAQAorQ09OU09MRSBNRVNTQUdFOiBV
bmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rpb246IGVycm9yMjogZXJyb3IyIQorQ09OU09MRSBNRVNT
QUdFOiBVbmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rpb246IGVycm9yMTogZXJyb3IxIQorCitIYXJu
ZXNzIEVycm9yIChGQUlMKSwgbWVzc2FnZSA9IFVuaGFuZGxlZCByZWplY3Rpb246IGVycm9yMSEK
KworUEFTUyBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBzdGFydHMgZXJyb3Jl
ZDsgcHJldmVudENhbmNlbCBvbWl0dGVkOyBmdWxmaWxsZWQgY2FuY2VsIHByb21pc2UgCitGQUlM
IEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGJlY29tZXMgZXJyb3JlZCBiZWZv
cmUgcGlwaW5nIGR1ZSB0byB3cml0ZTsgcHJldmVudENhbmNlbCBvbWl0dGVkOyBmdWxmaWxsZWQg
Y2FuY2VsIHByb21pc2Ugd3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdl
dFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicgaXMgdW5kZWZpbmVkKQorRkFJTCBFcnJvcnMgbXVz
dCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVycm9yZWQgYmVmb3JlIHBpcGluZyBk
dWUgdG8gd3JpdGU7IHByZXZlbnRDYW5jZWwgb21pdHRlZDsgcmVqZWN0ZWQgY2FuY2VsIHByb21p
c2Ugd3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywg
J3dzLmdldFdyaXRlcicgaXMgdW5kZWZpbmVkKQorRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdh
dGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVycm9yZWQgYmVmb3JlIHBpcGluZyBkdWUgdG8gd3JpdGU7
IHByZXZlbnRDYW5jZWwgPSB1bmRlZmluZWQgKGZhbHN5KTsgZnVsZmlsbGVkIGNhbmNlbCBwcm9t
aXNlIHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0ZXIoKScs
ICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkKK0ZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFn
YXRlZCBiYWNrd2FyZDogYmVjb21lcyBlcnJvcmVkIGJlZm9yZSBwaXBpbmcgZHVlIHRvIHdyaXRl
OyBwcmV2ZW50Q2FuY2VsID0gbnVsbCAoZmFsc3kpOyBmdWxmaWxsZWQgY2FuY2VsIHByb21pc2Ug
d3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywgJ3dz
LmdldFdyaXRlcicgaXMgdW5kZWZpbmVkKQorRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVk
IGJhY2t3YXJkOiBiZWNvbWVzIGVycm9yZWQgYmVmb3JlIHBpcGluZyBkdWUgdG8gd3JpdGU7IHBy
ZXZlbnRDYW5jZWwgPSBmYWxzZSAoZmFsc3kpOyBmdWxmaWxsZWQgY2FuY2VsIHByb21pc2Ugd3Mu
Z2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdl
dFdyaXRlcicgaXMgdW5kZWZpbmVkKQorRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJh
Y2t3YXJkOiBiZWNvbWVzIGVycm9yZWQgYmVmb3JlIHBpcGluZyBkdWUgdG8gd3JpdGU7IHByZXZl
bnRDYW5jZWwgPSAwIChmYWxzeSk7IGZ1bGZpbGxlZCBjYW5jZWwgcHJvbWlzZSB3cy5nZXRXcml0
ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3JpdGVyKCknLCAnd3MuZ2V0V3JpdGVy
JyBpcyB1bmRlZmluZWQpCitGQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6
IGJlY29tZXMgZXJyb3JlZCBiZWZvcmUgcGlwaW5nIGR1ZSB0byB3cml0ZTsgcHJldmVudENhbmNl
bCA9IC0wIChmYWxzeSk7IGZ1bGZpbGxlZCBjYW5jZWwgcHJvbWlzZSB3cy5nZXRXcml0ZXIgaXMg
bm90IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3JpdGVyKCknLCAnd3MuZ2V0V3JpdGVyJyBpcyB1
bmRlZmluZWQpCitGQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGJlY29t
ZXMgZXJyb3JlZCBiZWZvcmUgcGlwaW5nIGR1ZSB0byB3cml0ZTsgcHJldmVudENhbmNlbCA9IE5h
TiAoZmFsc3kpOyBmdWxmaWxsZWQgY2FuY2VsIHByb21pc2Ugd3MuZ2V0V3JpdGVyIGlzIG5vdCBh
IGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicgaXMgdW5kZWZp
bmVkKQorRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVy
cm9yZWQgYmVmb3JlIHBpcGluZyBkdWUgdG8gd3JpdGU7IHByZXZlbnRDYW5jZWwgPSAgKGZhbHN5
KTsgZnVsZmlsbGVkIGNhbmNlbCBwcm9taXNlIHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlv
bi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkKK0ZB
SUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogYmVjb21lcyBlcnJvcmVkIGJl
Zm9yZSBwaXBpbmcgZHVlIHRvIHdyaXRlOyBwcmV2ZW50Q2FuY2VsID0gdHJ1ZSAodHJ1dGh5KSB3
cy5nZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3JpdGVyKCknLCAnd3Mu
Z2V0V3JpdGVyJyBpcyB1bmRlZmluZWQpCitGQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQg
YmFja3dhcmQ6IGJlY29tZXMgZXJyb3JlZCBiZWZvcmUgcGlwaW5nIGR1ZSB0byB3cml0ZTsgcHJl
dmVudENhbmNlbCA9IGEgKHRydXRoeSkgd3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAo
SW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicgaXMgdW5kZWZpbmVkKQorRkFJTCBF
cnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVycm9yZWQgYmVmb3Jl
IHBpcGluZyBkdWUgdG8gd3JpdGU7IHByZXZlbnRDYW5jZWwgPSAxICh0cnV0aHkpIHdzLmdldFdy
aXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0
ZXInIGlzIHVuZGVmaW5lZCkKK0ZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2Fy
ZDogYmVjb21lcyBlcnJvcmVkIGJlZm9yZSBwaXBpbmcgZHVlIHRvIHdyaXRlOyBwcmV2ZW50Q2Fu
Y2VsID0gU3ltYm9sKCkgKHRydXRoeSkgd3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAo
SW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicgaXMgdW5kZWZpbmVkKQorRkFJTCBF
cnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVycm9yZWQgYmVmb3Jl
IHBpcGluZyBkdWUgdG8gd3JpdGU7IHByZXZlbnRDYW5jZWwgPSBbb2JqZWN0IE9iamVjdF0gKHRy
dXRoeSkgd3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigp
JywgJ3dzLmdldFdyaXRlcicgaXMgdW5kZWZpbmVkKQorRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9w
YWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVycm9yZWQgYmVmb3JlIHBpcGluZyBkdWUgdG8gd3Jp
dGUsIHByZXZlbnRDYW5jZWwgPSB0cnVlOyBwcmV2ZW50QWJvcnQgPSB0cnVlIHdzLmdldFdyaXRl
ciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXIn
IGlzIHVuZGVmaW5lZCkKK0ZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDog
YmVjb21lcyBlcnJvcmVkIGJlZm9yZSBwaXBpbmcgZHVlIHRvIHdyaXRlOyBwcmV2ZW50Q2FuY2Vs
ID0gdHJ1ZSwgcHJldmVudEFib3J0ID0gdHJ1ZSwgcHJldmVudENsb3NlID0gdHJ1ZSB3cy5nZXRX
cml0ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3JpdGVyKCknLCAnd3MuZ2V0V3Jp
dGVyJyBpcyB1bmRlZmluZWQpCitQQVNTIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dh
cmQ6IGJlY29tZXMgZXJyb3JlZCBkdXJpbmcgcGlwaW5nIGR1ZSB0byB3cml0ZTsgcHJldmVudENh
bmNlbCBvbWl0dGVkOyBmdWxmaWxsZWQgY2FuY2VsIHByb21pc2UgCitGQUlMIEVycm9ycyBtdXN0
IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGJlY29tZXMgZXJyb3JlZCBkdXJpbmcgcGlwaW5nIGR1
ZSB0byB3cml0ZTsgcHJldmVudENhbmNlbCBvbWl0dGVkOyByZWplY3RlZCBjYW5jZWwgcHJvbWlz
ZSBwcm9taXNlX3JlamVjdHNfZXhhY3RseTogcGlwZVRvIG11c3QgcmVqZWN0IHdpdGggdGhlIGNh
bmNlbCBlcnJvciBmdW5jdGlvbiAiZnVuY3Rpb24gKCkgeyB0aHJvdyBlIH0iIHRocmV3IG9iamVj
dCAiZXJyb3IxOiBlcnJvcjEhIiBidXQgd2UgZXhwZWN0ZWQgaXQgdG8gdGhyb3cgb2JqZWN0ICJl
cnJvcjI6IGVycm9yMiEiCitUSU1FT1VUIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dh
cmQ6IGJlY29tZXMgZXJyb3JlZCBkdXJpbmcgcGlwaW5nIGR1ZSB0byB3cml0ZTsgcHJldmVudENh
bmNlbCA9IHRydWUgVGVzdCB0aW1lZCBvdXQKK05PVFJVTiBFcnJvcnMgbXVzdCBiZSBwcm9wYWdh
dGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVycm9yZWQgZHVyaW5nIHBpcGluZyBkdWUgdG8gd3JpdGUs
IGJ1dCBhc3luYzsgcHJldmVudENhbmNlbCA9IGZhbHNlOyBmdWxmaWxsZWQgY2FuY2VsIHByb21p
c2UgCitOT1RSVU4gRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogYmVjb21lcyBl
cnJvcmVkIGR1cmluZyBwaXBpbmcgZHVlIHRvIHdyaXRlLCBidXQgYXN5bmM7IHByZXZlbnRDYW5j
ZWwgPSBmYWxzZTsgcmVqZWN0ZWQgY2FuY2VsIHByb21pc2UgCitOT1RSVU4gRXJyb3JzIG11c3Qg
YmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogYmVjb21lcyBlcnJvcmVkIGR1cmluZyBwaXBpbmcgZHVl
IHRvIHdyaXRlLCBidXQgYXN5bmM7IHByZXZlbnRDYW5jZWwgPSB0cnVlIAorTk9UUlVOIEVycm9y
cyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGJlY29tZXMgZXJyb3JlZCBhZnRlciBwaXBp
bmc7IHByZXZlbnRDYW5jZWwgb21pdHRlZDsgZnVsZmlsbGVkIGNhbmNlbCBwcm9taXNlIAorTk9U
UlVOIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGJlY29tZXMgZXJyb3JlZCBh
ZnRlciBwaXBpbmc7IHByZXZlbnRDYW5jZWwgb21pdHRlZDsgcmVqZWN0ZWQgY2FuY2VsIHByb21p
c2UgCitOT1RSVU4gRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogYmVjb21lcyBl
cnJvcmVkIGFmdGVyIHBpcGluZzsgcHJldmVudENhbmNlbCA9IHRydWUgCitOT1RSVU4gRXJyb3Jz
IG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogYmVjb21lcyBlcnJvcmVkIGFmdGVyIHBpcGlu
ZyBkdWUgdG8gbGFzdCB3cml0ZTsgc291cmNlIGlzIGNsb3NlZDsgcHJldmVudENhbmNlbCBvbWl0
dGVkIChidXQgY2FuY2VsIGlzIG5ldmVyIGNhbGxlZCkgCitOT1RSVU4gRXJyb3JzIG11c3QgYmUg
cHJvcGFnYXRlZCBiYWNrd2FyZDogYmVjb21lcyBlcnJvcmVkIGFmdGVyIHBpcGluZyBkdWUgdG8g
bGFzdCB3cml0ZTsgc291cmNlIGlzIGNsb3NlZDsgcHJldmVudENhbmNlbCA9IHRydWUgCitOT1RS
VU4gRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogYmVjb21lcyBlcnJvcmVkIGFm
dGVyIHBpcGluZzsgZGVzdCBuZXZlciBkZXNpcmVzIGNodW5rczsgcHJldmVudENhbmNlbCA9IGZh
bHNlOyBmdWxmaWxsZWQgY2FuY2VsIHByb21pc2UgCitOT1RSVU4gRXJyb3JzIG11c3QgYmUgcHJv
cGFnYXRlZCBiYWNrd2FyZDogYmVjb21lcyBlcnJvcmVkIGFmdGVyIHBpcGluZzsgZGVzdCBuZXZl
ciBkZXNpcmVzIGNodW5rczsgcHJldmVudENhbmNlbCA9IGZhbHNlOyByZWplY3RlZCBjYW5jZWwg
cHJvbWlzZSAKK05PVFJVTiBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBiZWNv
bWVzIGVycm9yZWQgYWZ0ZXIgcGlwaW5nOyBkZXN0IG5ldmVyIGRlc2lyZXMgY2h1bmtzOyBwcmV2
ZW50Q2FuY2VsID0gdHJ1ZSAKK05PVFJVTiBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3
YXJkOiBiZWNvbWVzIGVycm9yZWQgYmVmb3JlIHBpcGluZyB2aWEgYWJvcnQ7IHByZXZlbnRDYW5j
ZWwgb21pdHRlZDsgZnVsZmlsbGVkIGNhbmNlbCBwcm9taXNlIAorTk9UUlVOIEVycm9ycyBtdXN0
IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGJlY29tZXMgZXJyb3JlZCBiZWZvcmUgcGlwaW5nIHZp
YSBhYm9ydDsgcHJldmVudENhbmNlbCBvbWl0dGVkOyByZWplY3RlZCBjYW5jZWwgcHJvbWlzZSAK
K05PVFJVTiBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVycm9y
ZWQgYmVmb3JlIHBpcGluZyB2aWEgYWJvcnQ7IHByZXZlbnRDYW5jZWwgPSB0cnVlIAorTk9UUlVO
IEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGVycm9yaW5nIHZpYSB0aGUgY29u
dHJvbGxlciBlcnJvcnMgb25jZSBwZW5kaW5nIHdyaXRlIGNvbXBsZXRlcyAKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3Bp
cGluZy9lcnJvci1wcm9wYWdhdGlvbi1iYWNrd2FyZC5hbnkuaHRtbCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvZXJyb3ItcHJvcGFn
YXRpb24tYmFja3dhcmQuYW55Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjM4MjkxMzUyOGU2OTNiM2E1ZDU2
YzY2MGE0NTA2MDk4MGI1NDhjMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvZXJyb3ItcHJvcGFnYXRp
b24tYmFja3dhcmQuYW55Lmh0bWwKQEAgLTAsMCArMSBAQAorPCEtLSBUaGlzIGZpbGUgaXMgcmVx
dWlyZWQgZm9yIFdlYktpdCB0ZXN0IGluZnJhc3RydWN0dXJlIHRvIHJ1biB0aGUgdGVtcGxhdGVk
IHRlc3QgLS0+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9lcnJv
ci1wcm9wYWdhdGlvbi1iYWNrd2FyZC5hbnkuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Vycm9yLXByb3BhZ2F0aW9uLWJhY2t3
YXJkLmFueS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZGMyMDMwNjZlM2Q3ZTY4NDFhZjI3MWNhYjIwOTlhZDM1
MWQ4NTU5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9lcnJvci1wcm9wYWdhdGlvbi1iYWNrd2FyZC5h
bnkuanMKQEAgLTAsMCArMSw2MzAgQEAKKy8vIE1FVEE6IGdsb2JhbD13aW5kb3csd29ya2VyLGpz
c2hlbGwKKy8vIE1FVEE6IHNjcmlwdD0uLi9yZXNvdXJjZXMvdGVzdC11dGlscy5qcworLy8gTUVU
QTogc2NyaXB0PS4uL3Jlc291cmNlcy9yZWNvcmRpbmctc3RyZWFtcy5qcworJ3VzZSBzdHJpY3Qn
OworCitjb25zdCBlcnJvcjEgPSBuZXcgRXJyb3IoJ2Vycm9yMSEnKTsKK2Vycm9yMS5uYW1lID0g
J2Vycm9yMSc7CisKK2NvbnN0IGVycm9yMiA9IG5ldyBFcnJvcignZXJyb3IyIScpOworZXJyb3Iy
Lm5hbWUgPSAnZXJyb3IyJzsKKworcHJvbWlzZV90ZXN0KHQgPT4geworCisgIGNvbnN0IHJzID0g
cmVjb3JkaW5nUmVhZGFibGVTdHJlYW0oKTsKKworICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRh
YmxlU3RyZWFtKHsKKyAgICBzdGFydCgpIHsKKyAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChl
cnJvcjEpOworICAgIH0KKyAgfSk7CisKKyAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19leGFjdGx5
KHQsIGVycm9yMSwgcnMucGlwZVRvKHdzKSwgJ3BpcGVUbyBtdXN0IHJlamVjdCB3aXRoIHRoZSBz
YW1lIGVycm9yJykKKyAgICAudGhlbigoKSA9PiB7CisgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxz
KHJzLmV2ZW50c1dpdGhvdXRQdWxscywgWydjYW5jZWwnLCBlcnJvcjFdKTsKKyAgICAgIGFzc2Vy
dF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbXSk7CisgICAgfSk7CisKK30sICdFcnJvcnMgbXVz
dCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBzdGFydHMgZXJyb3JlZDsgcHJldmVudENhbmNlbCBv
bWl0dGVkOyBmdWxmaWxsZWQgY2FuY2VsIHByb21pc2UnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4g
eworCisgIGNvbnN0IHJzID0gcmVjb3JkaW5nUmVhZGFibGVTdHJlYW0oKTsKKworICBjb25zdCB3
cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKHsKKyAgICB3cml0ZSgpIHsKKyAgICAgIHJldHVy
biBQcm9taXNlLnJlamVjdChlcnJvcjEpOworICAgIH0KKyAgfSk7CisKKyAgY29uc3Qgd3JpdGVy
ID0gd3MuZ2V0V3JpdGVyKCk7CisKKyAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQs
IGVycm9yMSwgd3JpdGVyLndyaXRlKCdIZWxsbycpLCAnd3JpdGVyLndyaXRlKCkgbXVzdCByZWpl
Y3Qgd2l0aCB0aGUgd3JpdGUgZXJyb3InKQorICAgIC50aGVuKCgpID0+IHByb21pc2VfcmVqZWN0
c19leGFjdGx5KHQsIGVycm9yMSwgd3JpdGVyLmNsb3NlZCwgJ3dyaXRlci5jbG9zZWQgbXVzdCBy
ZWplY3Qgd2l0aCB0aGUgd3JpdGUgZXJyb3InKSkKKyAgICAudGhlbigoKSA9PiB7CisgICAgICB3
cml0ZXIucmVsZWFzZUxvY2soKTsKKworICAgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19leGFj
dGx5KHQsIGVycm9yMSwgcnMucGlwZVRvKHdzKSwgJ3BpcGVUbyBtdXN0IHJlamVjdCB3aXRoIHRo
ZSB3cml0ZSBlcnJvcicpCisgICAgICAgIC50aGVuKCgpID0+IHsKKyAgICAgICAgICBhc3NlcnRf
YXJyYXlfZXF1YWxzKHJzLmV2ZW50c1dpdGhvdXRQdWxscywgWydjYW5jZWwnLCBlcnJvcjFdKTsK
KyAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWyd3cml0ZScsICdIZWxs
byddKTsKKyAgICAgICAgfSk7CisgICAgfSk7CisKK30sICdFcnJvcnMgbXVzdCBiZSBwcm9wYWdh
dGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVycm9yZWQgYmVmb3JlIHBpcGluZyBkdWUgdG8gd3JpdGU7
IHByZXZlbnRDYW5jZWwgb21pdHRlZDsgJyArCisgICAnZnVsZmlsbGVkIGNhbmNlbCBwcm9taXNl
Jyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKworICBjb25zdCBycyA9IHJlY29yZGluZ1JlYWRh
YmxlU3RyZWFtKHsKKyAgICBjYW5jZWwoKSB7CisgICAgICB0aHJvdyBlcnJvcjI7CisgICAgfQor
ICB9KTsKKworICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKHsKKyAgICB3cml0
ZSgpIHsKKyAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcjEpOworICAgIH0KKyAgfSk7
CisKKyAgY29uc3Qgd3JpdGVyID0gd3MuZ2V0V3JpdGVyKCk7CisKKyAgcmV0dXJuIHByb21pc2Vf
cmVqZWN0c19leGFjdGx5KHQsIGVycm9yMSwgd3JpdGVyLndyaXRlKCdIZWxsbycpLCAnd3JpdGVy
LndyaXRlKCkgbXVzdCByZWplY3Qgd2l0aCB0aGUgd3JpdGUgZXJyb3InKQorICAgIC50aGVuKCgp
ID0+IHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMSwgd3JpdGVyLmNsb3NlZCwgJ3dy
aXRlci5jbG9zZWQgbXVzdCByZWplY3Qgd2l0aCB0aGUgd3JpdGUgZXJyb3InKSkKKyAgICAudGhl
bigoKSA9PiB7CisgICAgICB3cml0ZXIucmVsZWFzZUxvY2soKTsKKworICAgICAgcmV0dXJuIHBy
b21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMiwgcnMucGlwZVRvKHdzKSwgJ3BpcGVUbyBt
dXN0IHJlamVjdCB3aXRoIHRoZSBjYW5jZWwgZXJyb3InKQorICAgICAgICAudGhlbigoKSA9PiB7
CisgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhycy5ldmVudHNXaXRob3V0UHVsbHMsIFsn
Y2FuY2VsJywgZXJyb3IxXSk7CisgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVu
dHMsIFsnd3JpdGUnLCAnSGVsbG8nXSk7CisgICAgICAgIH0pOworICAgIH0pOworCit9LCAnRXJy
b3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogYmVjb21lcyBlcnJvcmVkIGJlZm9yZSBw
aXBpbmcgZHVlIHRvIHdyaXRlOyBwcmV2ZW50Q2FuY2VsIG9taXR0ZWQ7IHJlamVjdGVkICcgKwor
ICAgJ2NhbmNlbCBwcm9taXNlJyk7CisKK2ZvciAoY29uc3QgZmFsc3kgb2YgW3VuZGVmaW5lZCwg
bnVsbCwgZmFsc2UsICswLCAtMCwgTmFOLCAnJ10pIHsKKyAgY29uc3Qgc3RyaW5nVmVyc2lvbiA9
IE9iamVjdC5pcyhmYWxzeSwgLTApID8gJy0wJyA6IFN0cmluZyhmYWxzeSk7CisKKyAgcHJvbWlz
ZV90ZXN0KHQgPT4geworCisgICAgY29uc3QgcnMgPSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSgp
OworCisgICAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSh7CisgICAgICB3cml0
ZSgpIHsKKyAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yMSk7CisgICAgICB9Cisg
ICAgfSk7CisKKyAgICBjb25zdCB3cml0ZXIgPSB3cy5nZXRXcml0ZXIoKTsKKworICAgIHJldHVy
biBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIHdyaXRlci53cml0ZSgnSGVsbG8n
KSwgJ3dyaXRlci53cml0ZSgpIG11c3QgcmVqZWN0IHdpdGggdGhlIHdyaXRlIGVycm9yJykKKyAg
ICAgIC50aGVuKCgpID0+IHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMSwgd3JpdGVy
LmNsb3NlZCwgJ3dyaXRlci5jbG9zZWQgbXVzdCByZWplY3Qgd2l0aCB0aGUgd3JpdGUgZXJyb3In
KSkKKyAgICAgIC50aGVuKCgpID0+IHsKKyAgICAgICAgd3JpdGVyLnJlbGVhc2VMb2NrKCk7CisK
KyAgICAgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMSwgcnMucGlw
ZVRvKHdzLCB7IHByZXZlbnRDYW5jZWw6IGZhbHN5IH0pLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICdwaXBlVG8gbXVzdCByZWplY3Qgd2l0aCB0aGUgd3JpdGUgZXJyb3InKQorICAg
ICAgICAgIC50aGVuKCgpID0+IHsKKyAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMocnMu
ZXZlbnRzV2l0aG91dFB1bGxzLCBbJ2NhbmNlbCcsIGVycm9yMV0pOworICAgICAgICAgICAgYXNz
ZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsnd3JpdGUnLCAnSGVsbG8nXSk7CisgICAgICAg
ICAgfSk7CisgICAgICB9KTsKKworICB9LCBgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNr
d2FyZDogYmVjb21lcyBlcnJvcmVkIGJlZm9yZSBwaXBpbmcgZHVlIHRvIHdyaXRlOyBwcmV2ZW50
Q2FuY2VsID0gYCArCisgICAgIGAke3N0cmluZ1ZlcnNpb259IChmYWxzeSk7IGZ1bGZpbGxlZCBj
YW5jZWwgcHJvbWlzZWApOworfQorCitmb3IgKGNvbnN0IHRydXRoeSBvZiBbdHJ1ZSwgJ2EnLCAx
LCBTeW1ib2woKSwgeyB9XSkgeworICBwcm9taXNlX3Rlc3QodCA9PiB7CisKKyAgICBjb25zdCBy
cyA9IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKCk7CisKKyAgICBjb25zdCB3cyA9IHJlY29yZGlu
Z1dyaXRhYmxlU3RyZWFtKHsKKyAgICAgIHdyaXRlKCkgeworICAgICAgICByZXR1cm4gUHJvbWlz
ZS5yZWplY3QoZXJyb3IxKTsKKyAgICAgIH0KKyAgICB9KTsKKworICAgIGNvbnN0IHdyaXRlciA9
IHdzLmdldFdyaXRlcigpOworCisgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQs
IGVycm9yMSwgd3JpdGVyLndyaXRlKCdIZWxsbycpLCAnd3JpdGVyLndyaXRlKCkgbXVzdCByZWpl
Y3Qgd2l0aCB0aGUgd3JpdGUgZXJyb3InKQorICAgICAgLnRoZW4oKCkgPT4gcHJvbWlzZV9yZWpl
Y3RzX2V4YWN0bHkodCwgZXJyb3IxLCB3cml0ZXIuY2xvc2VkLCAnd3JpdGVyLmNsb3NlZCBtdXN0
IHJlamVjdCB3aXRoIHRoZSB3cml0ZSBlcnJvcicpKQorICAgICAgLnRoZW4oKCkgPT4geworICAg
ICAgICB3cml0ZXIucmVsZWFzZUxvY2soKTsKKworICAgICAgICByZXR1cm4gcHJvbWlzZV9yZWpl
Y3RzX2V4YWN0bHkodCwgZXJyb3IxLCBycy5waXBlVG8od3MsIHsgcHJldmVudENhbmNlbDogdHJ1
dGh5IH0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwaXBlVG8gbXVzdCByZWpl
Y3Qgd2l0aCB0aGUgd3JpdGUgZXJyb3InKQorICAgICAgICAgIC50aGVuKCgpID0+IHsKKyAgICAg
ICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMocnMuZXZlbnRzV2l0aG91dFB1bGxzLCBbXSk7Cisg
ICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWyd3cml0ZScsICdIZWxs
byddKTsKKyAgICAgICAgICB9KTsKKyAgICAgIH0pOworCisgIH0sIGBFcnJvcnMgbXVzdCBiZSBw
cm9wYWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVycm9yZWQgYmVmb3JlIHBpcGluZyBkdWUgdG8g
d3JpdGU7IHByZXZlbnRDYW5jZWwgPSBgICsKKyAgICAgYCR7U3RyaW5nKHRydXRoeSl9ICh0cnV0
aHkpYCk7Cit9CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKworICBjb25zdCBycyA9IHJlY29yZGlu
Z1JlYWRhYmxlU3RyZWFtKCk7CisKKyAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVh
bSh7CisgICAgd3JpdGUoKSB7CisgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyb3IxKTsK
KyAgICB9CisgIH0pOworCisgIGNvbnN0IHdyaXRlciA9IHdzLmdldFdyaXRlcigpOworCisgIHJl
dHVybiBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIHdyaXRlci53cml0ZSgnSGVs
bG8nKSwgJ3dyaXRlci53cml0ZSgpIG11c3QgcmVqZWN0IHdpdGggdGhlIHdyaXRlIGVycm9yJykK
KyAgICAudGhlbigoKSA9PiBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIHdyaXRl
ci5jbG9zZWQsICd3cml0ZXIuY2xvc2VkIG11c3QgcmVqZWN0IHdpdGggdGhlIHdyaXRlIGVycm9y
JykpCisgICAgLnRoZW4oKCkgPT4geworICAgICAgd3JpdGVyLnJlbGVhc2VMb2NrKCk7CisKKyAg
ICAgIHJldHVybiBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIHJzLnBpcGVUbyh3
cywgeyBwcmV2ZW50Q2FuY2VsOiB0cnVlLCBwcmV2ZW50QWJvcnQ6IHRydWUgfSksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICdwaXBlVG8gbXVzdCByZWplY3Qgd2l0aCB0aGUgd3JpdGUg
ZXJyb3InKQorICAgICAgICAudGhlbigoKSA9PiB7CisgICAgICAgICAgYXNzZXJ0X2FycmF5X2Vx
dWFscyhycy5ldmVudHNXaXRob3V0UHVsbHMsIFtdKTsKKyAgICAgICAgICBhc3NlcnRfYXJyYXlf
ZXF1YWxzKHdzLmV2ZW50cywgWyd3cml0ZScsICdIZWxsbyddKTsKKyAgICAgICAgfSk7CisgICAg
fSk7CisKK30sICdFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVy
cm9yZWQgYmVmb3JlIHBpcGluZyBkdWUgdG8gd3JpdGUsIHByZXZlbnRDYW5jZWwgPSB0cnVlOyAn
ICsKKyAgICdwcmV2ZW50QWJvcnQgPSB0cnVlJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKwor
ICBjb25zdCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKCk7CisKKyAgY29uc3Qgd3MgPSBy
ZWNvcmRpbmdXcml0YWJsZVN0cmVhbSh7CisgICAgd3JpdGUoKSB7CisgICAgICByZXR1cm4gUHJv
bWlzZS5yZWplY3QoZXJyb3IxKTsKKyAgICB9CisgIH0pOworCisgIGNvbnN0IHdyaXRlciA9IHdz
LmdldFdyaXRlcigpOworCisgIHJldHVybiBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJv
cjEsIHdyaXRlci53cml0ZSgnSGVsbG8nKSwgJ3dyaXRlci53cml0ZSgpIG11c3QgcmVqZWN0IHdp
dGggdGhlIHdyaXRlIGVycm9yJykKKyAgICAudGhlbigoKSA9PiBwcm9taXNlX3JlamVjdHNfZXhh
Y3RseSh0LCBlcnJvcjEsIHdyaXRlci5jbG9zZWQsICd3cml0ZXIuY2xvc2VkIG11c3QgcmVqZWN0
IHdpdGggdGhlIHdyaXRlIGVycm9yJykpCisgICAgLnRoZW4oKCkgPT4geworICAgICAgd3JpdGVy
LnJlbGVhc2VMb2NrKCk7CisKKyAgICAgIHJldHVybiBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0
LCBlcnJvcjEsIHJzLnBpcGVUbyh3cywgeyBwcmV2ZW50Q2FuY2VsOiB0cnVlLCBwcmV2ZW50QWJv
cnQ6IHRydWUsIHByZXZlbnRDbG9zZTogdHJ1ZSB9KSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ3BpcGVUbyBtdXN0IHJlamVjdCB3aXRoIHRoZSB3cml0ZSBlcnJvcicpCisgICAgICAg
IC50aGVuKCgpID0+IHsKKyAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJzLmV2ZW50c1dp
dGhvdXRQdWxscywgW10pOworICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRz
LCBbJ3dyaXRlJywgJ0hlbGxvJ10pOworICAgICAgICB9KTsKKyAgICB9KTsKKworfSwgJ0Vycm9y
cyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGJlY29tZXMgZXJyb3JlZCBiZWZvcmUgcGlw
aW5nIGR1ZSB0byB3cml0ZTsgcHJldmVudENhbmNlbCA9IHRydWUsICcgKworICAgJ3ByZXZlbnRB
Ym9ydCA9IHRydWUsIHByZXZlbnRDbG9zZSA9IHRydWUnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4g
eworCisgIGNvbnN0IHJzID0gcmVjb3JkaW5nUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGNv
bnRyb2xsZXIpIHsKKyAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnSGVsbG8nKTsKKyAgICB9Cisg
IH0pOworCisgIGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0oeworICAgIHdyaXRl
KCkgeworICAgICAgdGhyb3cgZXJyb3IxOworICAgIH0KKyAgfSk7CisKKyAgcmV0dXJuIHByb21p
c2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMSwgcnMucGlwZVRvKHdzKSwgJ3BpcGVUbyBtdXN0
IHJlamVjdCB3aXRoIHRoZSBzYW1lIGVycm9yJykudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X2Fy
cmF5X2VxdWFscyhycy5ldmVudHNXaXRob3V0UHVsbHMsIFsnY2FuY2VsJywgZXJyb3IxXSk7Cisg
ICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsnd3JpdGUnLCAnSGVsbG8nXSk7Cisg
IH0pOworCit9LCAnRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogYmVjb21lcyBl
cnJvcmVkIGR1cmluZyBwaXBpbmcgZHVlIHRvIHdyaXRlOyBwcmV2ZW50Q2FuY2VsIG9taXR0ZWQ7
IGZ1bGZpbGxlZCAnICsKKyAgICdjYW5jZWwgcHJvbWlzZScpOworCitwcm9taXNlX3Rlc3QodCA9
PiB7CisKKyAgY29uc3QgcnMgPSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQo
Y29udHJvbGxlcikgeworICAgICAgY29udHJvbGxlci5lbnF1ZXVlKCdIZWxsbycpOworICAgIH0s
CisgICAgY2FuY2VsKCkgeworICAgICAgdGhyb3cgZXJyb3IyOworICAgIH0KKyAgfSk7CisKKyAg
Y29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSh7CisgICAgd3JpdGUoKSB7CisgICAg
ICB0aHJvdyBlcnJvcjE7CisgICAgfQorICB9KTsKKworICByZXR1cm4gcHJvbWlzZV9yZWplY3Rz
X2V4YWN0bHkodCwgZXJyb3IyLCBycy5waXBlVG8od3MpLCAncGlwZVRvIG11c3QgcmVqZWN0IHdp
dGggdGhlIGNhbmNlbCBlcnJvcicpLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9hcnJheV9lcXVh
bHMocnMuZXZlbnRzV2l0aG91dFB1bGxzLCBbJ2NhbmNlbCcsIGVycm9yMV0pOworICAgIGFzc2Vy
dF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ3dyaXRlJywgJ0hlbGxvJ10pOworICB9KTsKKwor
fSwgJ0Vycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGJlY29tZXMgZXJyb3JlZCBk
dXJpbmcgcGlwaW5nIGR1ZSB0byB3cml0ZTsgcHJldmVudENhbmNlbCBvbWl0dGVkOyByZWplY3Rl
ZCAnICsKKyAgICdjYW5jZWwgcHJvbWlzZScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisKKyAg
Y29uc3QgcnMgPSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoY29udHJvbGxl
cikgeworICAgICAgY29udHJvbGxlci5lbnF1ZXVlKCdIZWxsbycpOworICAgIH0KKyAgfSk7CisK
KyAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSh7CisgICAgd3JpdGUoKSB7Cisg
ICAgICB0aHJvdyBlcnJvcjE7CisgICAgfQorICB9KTsKKworICByZXR1cm4gcHJvbWlzZV9yZWpl
Y3RzX2V4YWN0bHkodCwgZXJyb3IxLCBycy5waXBlVG8od3MsIHsgcHJldmVudENhbmNlbDogdHJ1
ZSB9KSwgJ3BpcGVUbyBtdXN0IHJlamVjdCB3aXRoIHRoZSBzYW1lIGVycm9yJykKKyAgLnRoZW4o
KCkgPT4geworICAgIGFzc2VydF9hcnJheV9lcXVhbHMocnMuZXZlbnRzV2l0aG91dFB1bGxzLCBb
XSk7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsnd3JpdGUnLCAnSGVsbG8n
XSk7CisgIH0pOworCit9LCAnRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogYmVj
b21lcyBlcnJvcmVkIGR1cmluZyBwaXBpbmcgZHVlIHRvIHdyaXRlOyBwcmV2ZW50Q2FuY2VsID0g
dHJ1ZScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisKKyAgY29uc3QgcnMgPSByZWNvcmRpbmdS
ZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoY29udHJvbGxlcikgeworICAgICAgY29udHJvbGxl
ci5lbnF1ZXVlKCdhJyk7CisgICAgICBjb250cm9sbGVyLmVucXVldWUoJ2InKTsKKyAgICAgIGNv
bnRyb2xsZXIuZW5xdWV1ZSgnYycpOworICAgIH0KKyAgfSk7CisKKyAgY29uc3Qgd3MgPSByZWNv
cmRpbmdXcml0YWJsZVN0cmVhbSh7CisgICAgd3JpdGUoKSB7CisgICAgICBpZiAod3MuZXZlbnRz
Lmxlbmd0aCA+IDIpIHsKKyAgICAgICAgcmV0dXJuIGRlbGF5KDApLnRoZW4oKCkgPT4geworICAg
ICAgICAgIHRocm93IGVycm9yMTsKKyAgICAgICAgfSk7CisgICAgICB9CisgICAgICByZXR1cm4g
dW5kZWZpbmVkOworICAgIH0KKyAgfSk7CisKKyAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19leGFj
dGx5KHQsIGVycm9yMSwgcnMucGlwZVRvKHdzKSwgJ3BpcGVUbyBtdXN0IHJlamVjdCB3aXRoIHRo
ZSBzYW1lIGVycm9yJykudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhycy5l
dmVudHNXaXRob3V0UHVsbHMsIFsnY2FuY2VsJywgZXJyb3IxXSk7CisgICAgYXNzZXJ0X2FycmF5
X2VxdWFscyh3cy5ldmVudHMsIFsnd3JpdGUnLCAnYScsICd3cml0ZScsICdiJ10pOworICB9KTsK
KworfSwgJ0Vycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGJlY29tZXMgZXJyb3Jl
ZCBkdXJpbmcgcGlwaW5nIGR1ZSB0byB3cml0ZSwgYnV0IGFzeW5jOyBwcmV2ZW50Q2FuY2VsID0g
JyArCisgICAnZmFsc2U7IGZ1bGZpbGxlZCBjYW5jZWwgcHJvbWlzZScpOworCitwcm9taXNlX3Rl
c3QodCA9PiB7CisKKyAgY29uc3QgcnMgPSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSh7CisgICAg
c3RhcnQoY29udHJvbGxlcikgeworICAgICAgY29udHJvbGxlci5lbnF1ZXVlKCdhJyk7CisgICAg
ICBjb250cm9sbGVyLmVucXVldWUoJ2InKTsKKyAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYycp
OworICAgIH0sCisgICAgY2FuY2VsKCkgeworICAgICAgdGhyb3cgZXJyb3IyOworICAgIH0KKyAg
fSk7CisKKyAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSh7CisgICAgd3JpdGUo
KSB7CisgICAgICBpZiAod3MuZXZlbnRzLmxlbmd0aCA+IDIpIHsKKyAgICAgICAgcmV0dXJuIGRl
bGF5KDApLnRoZW4oKCkgPT4geworICAgICAgICAgIHRocm93IGVycm9yMTsKKyAgICAgICAgfSk7
CisgICAgICB9CisgICAgICByZXR1cm4gdW5kZWZpbmVkOworICAgIH0KKyAgfSk7CisKKyAgcmV0
dXJuIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMiwgcnMucGlwZVRvKHdzKSwgJ3Bp
cGVUbyBtdXN0IHJlamVjdCB3aXRoIHRoZSBjYW5jZWwgZXJyb3InKS50aGVuKCgpID0+IHsKKyAg
ICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJzLmV2ZW50c1dpdGhvdXRQdWxscywgWydjYW5jZWwnLCBl
cnJvcjFdKTsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWyd3cml0ZScsICdh
JywgJ3dyaXRlJywgJ2InXSk7CisgIH0pOworCit9LCAnRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRl
ZCBiYWNrd2FyZDogYmVjb21lcyBlcnJvcmVkIGR1cmluZyBwaXBpbmcgZHVlIHRvIHdyaXRlLCBi
dXQgYXN5bmM7IHByZXZlbnRDYW5jZWwgPSAnICsKKyAgICdmYWxzZTsgcmVqZWN0ZWQgY2FuY2Vs
IHByb21pc2UnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworCisgIGNvbnN0IHJzID0gcmVjb3Jk
aW5nUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGNvbnRyb2xsZXIpIHsKKyAgICAgIGNvbnRy
b2xsZXIuZW5xdWV1ZSgnYScpOworICAgICAgY29udHJvbGxlci5lbnF1ZXVlKCdiJyk7CisgICAg
ICBjb250cm9sbGVyLmVucXVldWUoJ2MnKTsKKyAgICB9CisgIH0pOworCisgIGNvbnN0IHdzID0g
cmVjb3JkaW5nV3JpdGFibGVTdHJlYW0oeworICAgIHdyaXRlKCkgeworICAgICAgaWYgKHdzLmV2
ZW50cy5sZW5ndGggPiAyKSB7CisgICAgICAgIHJldHVybiBkZWxheSgwKS50aGVuKCgpID0+IHsK
KyAgICAgICAgICB0aHJvdyBlcnJvcjE7CisgICAgICAgIH0pOworICAgICAgfQorICAgICAgcmV0
dXJuIHVuZGVmaW5lZDsKKyAgICB9CisgIH0pOworCisgIHJldHVybiBwcm9taXNlX3JlamVjdHNf
ZXhhY3RseSh0LCBlcnJvcjEsIHJzLnBpcGVUbyh3cywgeyBwcmV2ZW50Q2FuY2VsOiB0cnVlIH0p
LCAncGlwZVRvIG11c3QgcmVqZWN0IHdpdGggdGhlIHNhbWUgZXJyb3InKQorICAudGhlbigoKSA9
PiB7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhycy5ldmVudHNXaXRob3V0UHVsbHMsIFtdKTsK
KyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWyd3cml0ZScsICdhJywgJ3dyaXRl
JywgJ2InXSk7CisgIH0pOworCit9LCAnRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2Fy
ZDogYmVjb21lcyBlcnJvcmVkIGR1cmluZyBwaXBpbmcgZHVlIHRvIHdyaXRlLCBidXQgYXN5bmM7
IHByZXZlbnRDYW5jZWwgPSB0cnVlJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKworICBjb25z
dCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKCk7CisKKyAgY29uc3Qgd3MgPSByZWNvcmRp
bmdXcml0YWJsZVN0cmVhbSgpOworCisgIGNvbnN0IHBpcGVQcm9taXNlID0gcHJvbWlzZV9yZWpl
Y3RzX2V4YWN0bHkodCwgZXJyb3IxLCBycy5waXBlVG8od3MpLCAncGlwZVRvIG11c3QgcmVqZWN0
IHdpdGggdGhlIHNhbWUgZXJyb3InKTsKKworICB0LnN0ZXBfdGltZW91dCgoKSA9PiB3cy5jb250
cm9sbGVyLmVycm9yKGVycm9yMSksIDEwKTsKKworICByZXR1cm4gcGlwZVByb21pc2UudGhlbigo
KSA9PiB7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhycy5ldmVudHNXaXRob3V0UHVsbHMsIFsn
Y2FuY2VsJywgZXJyb3IxXSk7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFtd
KTsKKyAgfSk7CisKK30sICdFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBiZWNv
bWVzIGVycm9yZWQgYWZ0ZXIgcGlwaW5nOyBwcmV2ZW50Q2FuY2VsIG9taXR0ZWQ7IGZ1bGZpbGxl
ZCBjYW5jZWwgcHJvbWlzZScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisKKyAgY29uc3QgcnMg
PSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSh7CisgICAgY2FuY2VsKCkgeworICAgICAgdGhyb3cg
ZXJyb3IyOworICAgIH0KKyAgfSk7CisKKyAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0
cmVhbSgpOworCisgIGNvbnN0IHBpcGVQcm9taXNlID0gcHJvbWlzZV9yZWplY3RzX2V4YWN0bHko
dCwgZXJyb3IyLCBycy5waXBlVG8od3MpLCAncGlwZVRvIG11c3QgcmVqZWN0IHdpdGggdGhlIGNh
bmNlbCBlcnJvcicpOworCisgIHQuc3RlcF90aW1lb3V0KCgpID0+IHdzLmNvbnRyb2xsZXIuZXJy
b3IoZXJyb3IxKSwgMTApOworCisgIHJldHVybiBwaXBlUHJvbWlzZS50aGVuKCgpID0+IHsKKyAg
ICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJzLmV2ZW50c1dpdGhvdXRQdWxscywgWydjYW5jZWwnLCBl
cnJvcjFdKTsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgW10pOworICB9KTsK
KworfSwgJ0Vycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGJlY29tZXMgZXJyb3Jl
ZCBhZnRlciBwaXBpbmc7IHByZXZlbnRDYW5jZWwgb21pdHRlZDsgcmVqZWN0ZWQgY2FuY2VsIHBy
b21pc2UnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworCisgIGNvbnN0IHJzID0gcmVjb3JkaW5n
UmVhZGFibGVTdHJlYW0oKTsKKworICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFt
KCk7CisKKyAgY29uc3QgcGlwZVByb21pc2UgPSBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBl
cnJvcjEsIHJzLnBpcGVUbyh3cywgeyBwcmV2ZW50Q2FuY2VsOiB0cnVlIH0pLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwaXBlVG8gbXVzdCByZWplY3Qg
d2l0aCB0aGUgc2FtZSBlcnJvcicpOworCisgIHQuc3RlcF90aW1lb3V0KCgpID0+IHdzLmNvbnRy
b2xsZXIuZXJyb3IoZXJyb3IxKSwgMTApOworCisgIHJldHVybiBwaXBlUHJvbWlzZS50aGVuKCgp
ID0+IHsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJzLmV2ZW50c1dpdGhvdXRQdWxscywgW10p
OworICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbXSk7CisgIH0pOworCit9LCAn
RXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogYmVjb21lcyBlcnJvcmVkIGFmdGVy
IHBpcGluZzsgcHJldmVudENhbmNlbCA9IHRydWUnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4gewor
CisgIGNvbnN0IHJzID0gcmVjb3JkaW5nUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGNvbnRy
b2xsZXIpIHsKKyAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYScpOworICAgICAgY29udHJvbGxl
ci5lbnF1ZXVlKCdiJyk7CisgICAgICBjb250cm9sbGVyLmVucXVldWUoJ2MnKTsKKyAgICAgIGNv
bnRyb2xsZXIuY2xvc2UoKTsKKyAgICB9CisgIH0pOworCisgIGNvbnN0IHdzID0gcmVjb3JkaW5n
V3JpdGFibGVTdHJlYW0oeworICAgIHdyaXRlKGNodW5rKSB7CisgICAgICBpZiAoY2h1bmsgPT09
ICdjJykgeworICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyb3IxKTsKKyAgICAgIH0K
KyAgICAgIHJldHVybiB1bmRlZmluZWQ7CisgICAgfQorICB9KTsKKworICByZXR1cm4gcHJvbWlz
ZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCBycy5waXBlVG8od3MpLCAncGlwZVRvIG11c3Qg
cmVqZWN0IHdpdGggdGhlIHNhbWUgZXJyb3InKS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfYXJy
YXlfZXF1YWxzKHJzLmV2ZW50c1dpdGhvdXRQdWxscywgW10pOworICAgIGFzc2VydF9hcnJheV9l
cXVhbHMod3MuZXZlbnRzLCBbJ3dyaXRlJywgJ2EnLCAnd3JpdGUnLCAnYicsICd3cml0ZScsICdj
J10pOworICB9KTsKKworfSwgJ0Vycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGJl
Y29tZXMgZXJyb3JlZCBhZnRlciBwaXBpbmcgZHVlIHRvIGxhc3Qgd3JpdGU7IHNvdXJjZSBpcyBj
bG9zZWQ7ICcgKworICAgJ3ByZXZlbnRDYW5jZWwgb21pdHRlZCAoYnV0IGNhbmNlbCBpcyBuZXZl
ciBjYWxsZWQpJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKworICBjb25zdCBycyA9IHJlY29y
ZGluZ1JlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjb250cm9sbGVyKSB7CisgICAgICBjb250
cm9sbGVyLmVucXVldWUoJ2EnKTsKKyAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYicpOworICAg
ICAgY29udHJvbGxlci5lbnF1ZXVlKCdjJyk7CisgICAgICBjb250cm9sbGVyLmNsb3NlKCk7Cisg
ICAgfQorICB9KTsKKworICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKHsKKyAg
ICB3cml0ZShjaHVuaykgeworICAgICAgaWYgKGNodW5rID09PSAnYycpIHsKKyAgICAgICAgcmV0
dXJuIFByb21pc2UucmVqZWN0KGVycm9yMSk7CisgICAgICB9CisgICAgICByZXR1cm4gdW5kZWZp
bmVkOworICAgIH0KKyAgfSk7CisKKyAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQs
IGVycm9yMSwgcnMucGlwZVRvKHdzLCB7IHByZXZlbnRDYW5jZWw6IHRydWUgfSksICdwaXBlVG8g
bXVzdCByZWplY3Qgd2l0aCB0aGUgc2FtZSBlcnJvcicpCisgICAgLnRoZW4oKCkgPT4geworICAg
ICAgYXNzZXJ0X2FycmF5X2VxdWFscyhycy5ldmVudHNXaXRob3V0UHVsbHMsIFtdKTsKKyAgICAg
IGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ3dyaXRlJywgJ2EnLCAnd3JpdGUnLCAn
YicsICd3cml0ZScsICdjJ10pOworICAgIH0pOworCit9LCAnRXJyb3JzIG11c3QgYmUgcHJvcGFn
YXRlZCBiYWNrd2FyZDogYmVjb21lcyBlcnJvcmVkIGFmdGVyIHBpcGluZyBkdWUgdG8gbGFzdCB3
cml0ZTsgc291cmNlIGlzIGNsb3NlZDsgJyArCisgICAncHJldmVudENhbmNlbCA9IHRydWUnKTsK
KworcHJvbWlzZV90ZXN0KHQgPT4geworCisgIGNvbnN0IHJzID0gcmVjb3JkaW5nUmVhZGFibGVT
dHJlYW0oKTsKKworICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKHVuZGVmaW5l
ZCwgbmV3IENvdW50UXVldWluZ1N0cmF0ZWd5KHsgaGlnaFdhdGVyTWFyazogMCB9KSk7CisKKyAg
Y29uc3QgcGlwZVByb21pc2UgPSBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIHJz
LnBpcGVUbyh3cyksICdwaXBlVG8gbXVzdCByZWplY3Qgd2l0aCB0aGUgc2FtZSBlcnJvcicpOwor
CisgIHQuc3RlcF90aW1lb3V0KCgpID0+IHdzLmNvbnRyb2xsZXIuZXJyb3IoZXJyb3IxKSwgMTAp
OworCisgIHJldHVybiBwaXBlUHJvbWlzZS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfYXJyYXlf
ZXF1YWxzKHJzLmV2ZW50c1dpdGhvdXRQdWxscywgWydjYW5jZWwnLCBlcnJvcjFdKTsKKyAgICBh
c3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgW10pOworICB9KTsKKworfSwgJ0Vycm9ycyBt
dXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGJlY29tZXMgZXJyb3JlZCBhZnRlciBwaXBpbmc7
IGRlc3QgbmV2ZXIgZGVzaXJlcyBjaHVua3M7IHByZXZlbnRDYW5jZWwgPSAnICsKKyAgICdmYWxz
ZTsgZnVsZmlsbGVkIGNhbmNlbCBwcm9taXNlJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKwor
ICBjb25zdCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKHsKKyAgICBjYW5jZWwoKSB7Cisg
ICAgICB0aHJvdyBlcnJvcjI7CisgICAgfQorICB9KTsKKworICBjb25zdCB3cyA9IHJlY29yZGlu
Z1dyaXRhYmxlU3RyZWFtKHVuZGVmaW5lZCwgbmV3IENvdW50UXVldWluZ1N0cmF0ZWd5KHsgaGln
aFdhdGVyTWFyazogMCB9KSk7CisKKyAgY29uc3QgcGlwZVByb21pc2UgPSBwcm9taXNlX3JlamVj
dHNfZXhhY3RseSh0LCBlcnJvcjIsIHJzLnBpcGVUbyh3cyksICdwaXBlVG8gbXVzdCByZWplY3Qg
d2l0aCB0aGUgY2FuY2VsIGVycm9yJyk7CisKKyAgdC5zdGVwX3RpbWVvdXQoKCkgPT4gd3MuY29u
dHJvbGxlci5lcnJvcihlcnJvcjEpLCAxMCk7CisKKyAgcmV0dXJuIHBpcGVQcm9taXNlLnRoZW4o
KCkgPT4geworICAgIGFzc2VydF9hcnJheV9lcXVhbHMocnMuZXZlbnRzV2l0aG91dFB1bGxzLCBb
J2NhbmNlbCcsIGVycm9yMV0pOworICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBb
XSk7CisgIH0pOworCit9LCAnRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogYmVj
b21lcyBlcnJvcmVkIGFmdGVyIHBpcGluZzsgZGVzdCBuZXZlciBkZXNpcmVzIGNodW5rczsgcHJl
dmVudENhbmNlbCA9ICcgKworICAgJ2ZhbHNlOyByZWplY3RlZCBjYW5jZWwgcHJvbWlzZScpOwor
Citwcm9taXNlX3Rlc3QodCA9PiB7CisKKyAgY29uc3QgcnMgPSByZWNvcmRpbmdSZWFkYWJsZVN0
cmVhbSgpOworCisgIGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0odW5kZWZpbmVk
LCBuZXcgQ291bnRRdWV1aW5nU3RyYXRlZ3koeyBoaWdoV2F0ZXJNYXJrOiAwIH0pKTsKKworICBj
b25zdCBwaXBlUHJvbWlzZSA9IHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMSwgcnMu
cGlwZVRvKHdzLCB7IHByZXZlbnRDYW5jZWw6IHRydWUgfSksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BpcGVUbyBtdXN0IHJlamVjdCB3aXRoIHRoZSBz
YW1lIGVycm9yJyk7CisKKyAgdC5zdGVwX3RpbWVvdXQoKCkgPT4gd3MuY29udHJvbGxlci5lcnJv
cihlcnJvcjEpLCAxMCk7CisKKyAgcmV0dXJuIHBpcGVQcm9taXNlLnRoZW4oKCkgPT4geworICAg
IGFzc2VydF9hcnJheV9lcXVhbHMocnMuZXZlbnRzV2l0aG91dFB1bGxzLCBbXSk7CisgICAgYXNz
ZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFtdKTsKKyAgfSk7CisKK30sICdFcnJvcnMgbXVz
dCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVycm9yZWQgYWZ0ZXIgcGlwaW5nOyBk
ZXN0IG5ldmVyIGRlc2lyZXMgY2h1bmtzOyBwcmV2ZW50Q2FuY2VsID0gJyArCisgICAndHJ1ZScp
OworCitwcm9taXNlX3Rlc3QoKCkgPT4geworCisgIGNvbnN0IHJzID0gcmVjb3JkaW5nUmVhZGFi
bGVTdHJlYW0oKTsKKworICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKCk7CisK
KyAgd3MuYWJvcnQoZXJyb3IxKTsKKworICByZXR1cm4gcnMucGlwZVRvKHdzKS50aGVuKAorICAg
ICgpID0+IGFzc2VydF91bnJlYWNoZWQoJ3RoZSBwcm9taXNlIG11c3Qgbm90IGZ1bGZpbGwnKSwK
KyAgICBlcnIgPT4geworICAgICAgYXNzZXJ0X2VxdWFscyhlcnIsIGVycm9yMSwgJ3RoZSBwcm9t
aXNlIG11c3QgcmVqZWN0IHdpdGggZXJyb3IxJyk7CisKKyAgICAgIGFzc2VydF9hcnJheV9lcXVh
bHMocnMuZXZlbnRzV2l0aG91dFB1bGxzLCBbJ2NhbmNlbCcsIGVycl0pOworICAgICAgYXNzZXJ0
X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsnYWJvcnQnLCBlcnJvcjFdKTsKKyAgICB9CisgICk7
CisKK30sICdFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVycm9y
ZWQgYmVmb3JlIHBpcGluZyB2aWEgYWJvcnQ7IHByZXZlbnRDYW5jZWwgb21pdHRlZDsgZnVsZmls
bGVkICcgKworICAgJ2NhbmNlbCBwcm9taXNlJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKwor
ICBjb25zdCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKHsKKyAgICBjYW5jZWwoKSB7Cisg
ICAgICB0aHJvdyBlcnJvcjI7CisgICAgfQorICB9KTsKKworICBjb25zdCB3cyA9IHJlY29yZGlu
Z1dyaXRhYmxlU3RyZWFtKCk7CisKKyAgd3MuYWJvcnQoZXJyb3IxKTsKKworICByZXR1cm4gcHJv
bWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IyLCBycy5waXBlVG8od3MpLCAncGlwZVRvIG11
c3QgcmVqZWN0IHdpdGggdGhlIGNhbmNlbCBlcnJvcicpCisgICAgLnRoZW4oKCkgPT4geworICAg
ICAgcmV0dXJuIHdzLmdldFdyaXRlcigpLmNsb3NlZC50aGVuKAorICAgICAgICAoKSA9PiBhc3Nl
cnRfdW5yZWFjaGVkKCd0aGUgcHJvbWlzZSBtdXN0IG5vdCBmdWxmaWxsJyksCisgICAgICAgIGVy
ciA9PiB7CisgICAgICAgICAgYXNzZXJ0X2VxdWFscyhlcnIsIGVycm9yMSwgJ3RoZSBwcm9taXNl
IG11c3QgcmVqZWN0IHdpdGggZXJyb3IxJyk7CisKKyAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1
YWxzKHJzLmV2ZW50c1dpdGhvdXRQdWxscywgWydjYW5jZWwnLCBlcnJdKTsKKyAgICAgICAgICBh
c3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWydhYm9ydCcsIGVycm9yMV0pOworICAgICAg
ICB9CisgICAgICApOworICAgIH0pOworCit9LCAnRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBi
YWNrd2FyZDogYmVjb21lcyBlcnJvcmVkIGJlZm9yZSBwaXBpbmcgdmlhIGFib3J0OyBwcmV2ZW50
Q2FuY2VsIG9taXR0ZWQ7IHJlamVjdGVkICcgKworICAgJ2NhbmNlbCBwcm9taXNlJyk7CisKK3By
b21pc2VfdGVzdCh0ID0+IHsKKworICBjb25zdCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFt
KCk7CisKKyAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSgpOworCisgIHdzLmFi
b3J0KGVycm9yMSk7CisKKyAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9y
MSwgcnMucGlwZVRvKHdzLCB7IHByZXZlbnRDYW5jZWw6IHRydWUgfSkpLnRoZW4oKCkgPT4gewor
ICAgIGFzc2VydF9hcnJheV9lcXVhbHMocnMuZXZlbnRzV2l0aG91dFB1bGxzLCBbXSk7CisgICAg
YXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsnYWJvcnQnLCBlcnJvcjFdKTsKKyAgfSk7
CisKK30sICdFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVycm9y
ZWQgYmVmb3JlIHBpcGluZyB2aWEgYWJvcnQ7IHByZXZlbnRDYW5jZWwgPSB0cnVlJyk7CisKK3By
b21pc2VfdGVzdCh0ID0+IHsKKworICBjb25zdCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFt
KCk7CisKKyAgbGV0IHJlc29sdmVXcml0ZUNhbGxlZDsKKyAgY29uc3Qgd3JpdGVDYWxsZWRQcm9t
aXNlID0gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7CisgICAgcmVzb2x2ZVdyaXRlQ2FsbGVkID0g
cmVzb2x2ZTsKKyAgfSk7CisKKyAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSh7
CisgICAgd3JpdGUoKSB7CisgICAgICByZXNvbHZlV3JpdGVDYWxsZWQoKTsKKyAgICAgIHJldHVy
biBmbHVzaEFzeW5jRXZlbnRzKCk7CisgICAgfQorICB9KTsKKworICBjb25zdCBwaXBlUHJvbWlz
ZSA9IHJzLnBpcGVUbyh3cyk7CisKKyAgcnMuY29udHJvbGxlci5lbnF1ZXVlKCdhJyk7CisKKyAg
cmV0dXJuIHdyaXRlQ2FsbGVkUHJvbWlzZS50aGVuKCgpID0+IHsKKyAgICB3cy5jb250cm9sbGVy
LmVycm9yKGVycm9yMSk7CisKKyAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwg
ZXJyb3IxLCBwaXBlUHJvbWlzZSk7CisgIH0pLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9hcnJh
eV9lcXVhbHMocnMuZXZlbnRzV2l0aG91dFB1bGxzLCBbJ2NhbmNlbCcsIGVycm9yMV0pOworICAg
IGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ3dyaXRlJywgJ2EnXSk7CisgIH0pOwor
Cit9LCAnRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogZXJyb3JpbmcgdmlhIHRo
ZSBjb250cm9sbGVyIGVycm9ycyBvbmNlIHBlbmRpbmcgd3JpdGUgY29tcGxldGVzJyk7CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvcGlwaW5nL2Vycm9yLXByb3BhZ2F0aW9uLWJhY2t3YXJkLmFueS53b3JrZXItZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
L3BpcGluZy9lcnJvci1wcm9wYWdhdGlvbi1iYWNrd2FyZC5hbnkud29ya2VyLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5lNTE5ZDEwYjczZmMxNmM1NjRlNjA2NjFhOTE5ZDRkN2IyMmIyZjhjCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL3BpcGluZy9lcnJvci1wcm9wYWdhdGlvbi1iYWNrd2FyZC5hbnkud29ya2Vy
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDM3IEBACisKK0ZBSUwgRXJyb3JzIG11c3QgYmUgcHJv
cGFnYXRlZCBiYWNrd2FyZDogc3RhcnRzIGVycm9yZWQ7IHByZXZlbnRDYW5jZWwgb21pdHRlZDsg
ZnVsZmlsbGVkIGNhbmNlbCBwcm9taXNlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3Ry
ZWFtCitGQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGJlY29tZXMgZXJy
b3JlZCBiZWZvcmUgcGlwaW5nIGR1ZSB0byB3cml0ZTsgcHJldmVudENhbmNlbCBvbWl0dGVkOyBm
dWxmaWxsZWQgY2FuY2VsIHByb21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJl
YW0KK0ZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogYmVjb21lcyBlcnJv
cmVkIGJlZm9yZSBwaXBpbmcgZHVlIHRvIHdyaXRlOyBwcmV2ZW50Q2FuY2VsIG9taXR0ZWQ7IHJl
amVjdGVkIGNhbmNlbCBwcm9taXNlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFt
CitGQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGJlY29tZXMgZXJyb3Jl
ZCBiZWZvcmUgcGlwaW5nIGR1ZSB0byB3cml0ZTsgcHJldmVudENhbmNlbCA9IHVuZGVmaW5lZCAo
ZmFsc3kpOyBmdWxmaWxsZWQgY2FuY2VsIHByb21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3Jp
dGFibGVTdHJlYW0KK0ZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogYmVj
b21lcyBlcnJvcmVkIGJlZm9yZSBwaXBpbmcgZHVlIHRvIHdyaXRlOyBwcmV2ZW50Q2FuY2VsID0g
bnVsbCAoZmFsc3kpOyBmdWxmaWxsZWQgY2FuY2VsIHByb21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJs
ZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2Fy
ZDogYmVjb21lcyBlcnJvcmVkIGJlZm9yZSBwaXBpbmcgZHVlIHRvIHdyaXRlOyBwcmV2ZW50Q2Fu
Y2VsID0gZmFsc2UgKGZhbHN5KTsgZnVsZmlsbGVkIGNhbmNlbCBwcm9taXNlIENhbid0IGZpbmQg
dmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQg
YmFja3dhcmQ6IGJlY29tZXMgZXJyb3JlZCBiZWZvcmUgcGlwaW5nIGR1ZSB0byB3cml0ZTsgcHJl
dmVudENhbmNlbCA9IDAgKGZhbHN5KTsgZnVsZmlsbGVkIGNhbmNlbCBwcm9taXNlIENhbid0IGZp
bmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0
ZWQgYmFja3dhcmQ6IGJlY29tZXMgZXJyb3JlZCBiZWZvcmUgcGlwaW5nIGR1ZSB0byB3cml0ZTsg
cHJldmVudENhbmNlbCA9IC0wIChmYWxzeSk7IGZ1bGZpbGxlZCBjYW5jZWwgcHJvbWlzZSBDYW4n
dCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9w
YWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVycm9yZWQgYmVmb3JlIHBpcGluZyBkdWUgdG8gd3Jp
dGU7IHByZXZlbnRDYW5jZWwgPSBOYU4gKGZhbHN5KTsgZnVsZmlsbGVkIGNhbmNlbCBwcm9taXNl
IENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIEVycm9ycyBtdXN0IGJl
IHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGJlY29tZXMgZXJyb3JlZCBiZWZvcmUgcGlwaW5nIGR1ZSB0
byB3cml0ZTsgcHJldmVudENhbmNlbCA9ICAoZmFsc3kpOyBmdWxmaWxsZWQgY2FuY2VsIHByb21p
c2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgRXJyb3JzIG11c3Qg
YmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogYmVjb21lcyBlcnJvcmVkIGJlZm9yZSBwaXBpbmcgZHVl
IHRvIHdyaXRlOyBwcmV2ZW50Q2FuY2VsID0gdHJ1ZSAodHJ1dGh5KSBDYW4ndCBmaW5kIHZhcmlh
YmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3
YXJkOiBiZWNvbWVzIGVycm9yZWQgYmVmb3JlIHBpcGluZyBkdWUgdG8gd3JpdGU7IHByZXZlbnRD
YW5jZWwgPSBhICh0cnV0aHkpIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitG
QUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGJlY29tZXMgZXJyb3JlZCBi
ZWZvcmUgcGlwaW5nIGR1ZSB0byB3cml0ZTsgcHJldmVudENhbmNlbCA9IDEgKHRydXRoeSkgQ2Fu
J3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgRXJyb3JzIG11c3QgYmUgcHJv
cGFnYXRlZCBiYWNrd2FyZDogYmVjb21lcyBlcnJvcmVkIGJlZm9yZSBwaXBpbmcgZHVlIHRvIHdy
aXRlOyBwcmV2ZW50Q2FuY2VsID0gU3ltYm9sKCkgKHRydXRoeSkgQ2FuJ3QgZmluZCB2YXJpYWJs
ZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2Fy
ZDogYmVjb21lcyBlcnJvcmVkIGJlZm9yZSBwaXBpbmcgZHVlIHRvIHdyaXRlOyBwcmV2ZW50Q2Fu
Y2VsID0gW29iamVjdCBPYmplY3RdICh0cnV0aHkpIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRh
YmxlU3RyZWFtCitGQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGJlY29t
ZXMgZXJyb3JlZCBiZWZvcmUgcGlwaW5nIGR1ZSB0byB3cml0ZSwgcHJldmVudENhbmNlbCA9IHRy
dWU7IHByZXZlbnRBYm9ydCA9IHRydWUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJl
YW0KK0ZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogYmVjb21lcyBlcnJv
cmVkIGJlZm9yZSBwaXBpbmcgZHVlIHRvIHdyaXRlOyBwcmV2ZW50Q2FuY2VsID0gdHJ1ZSwgcHJl
dmVudEFib3J0ID0gdHJ1ZSwgcHJldmVudENsb3NlID0gdHJ1ZSBDYW4ndCBmaW5kIHZhcmlhYmxl
OiBXcml0YWJsZVN0cmVhbQorRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJk
OiBiZWNvbWVzIGVycm9yZWQgZHVyaW5nIHBpcGluZyBkdWUgdG8gd3JpdGU7IHByZXZlbnRDYW5j
ZWwgb21pdHRlZDsgZnVsZmlsbGVkIGNhbmNlbCBwcm9taXNlIENhbid0IGZpbmQgdmFyaWFibGU6
IFdyaXRhYmxlU3RyZWFtCitGQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6
IGJlY29tZXMgZXJyb3JlZCBkdXJpbmcgcGlwaW5nIGR1ZSB0byB3cml0ZTsgcHJldmVudENhbmNl
bCBvbWl0dGVkOyByZWplY3RlZCBjYW5jZWwgcHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBX
cml0YWJsZVN0cmVhbQorRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBi
ZWNvbWVzIGVycm9yZWQgZHVyaW5nIHBpcGluZyBkdWUgdG8gd3JpdGU7IHByZXZlbnRDYW5jZWwg
PSB0cnVlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIEVycm9ycyBt
dXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGJlY29tZXMgZXJyb3JlZCBkdXJpbmcgcGlwaW5n
IGR1ZSB0byB3cml0ZSwgYnV0IGFzeW5jOyBwcmV2ZW50Q2FuY2VsID0gZmFsc2U7IGZ1bGZpbGxl
ZCBjYW5jZWwgcHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJ
TCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVycm9yZWQgZHVy
aW5nIHBpcGluZyBkdWUgdG8gd3JpdGUsIGJ1dCBhc3luYzsgcHJldmVudENhbmNlbCA9IGZhbHNl
OyByZWplY3RlZCBjYW5jZWwgcHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0
cmVhbQorRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVy
cm9yZWQgZHVyaW5nIHBpcGluZyBkdWUgdG8gd3JpdGUsIGJ1dCBhc3luYzsgcHJldmVudENhbmNl
bCA9IHRydWUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgRXJyb3Jz
IG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogYmVjb21lcyBlcnJvcmVkIGFmdGVyIHBpcGlu
ZzsgcHJldmVudENhbmNlbCBvbWl0dGVkOyBmdWxmaWxsZWQgY2FuY2VsIHByb21pc2UgQ2FuJ3Qg
ZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFn
YXRlZCBiYWNrd2FyZDogYmVjb21lcyBlcnJvcmVkIGFmdGVyIHBpcGluZzsgcHJldmVudENhbmNl
bCBvbWl0dGVkOyByZWplY3RlZCBjYW5jZWwgcHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBX
cml0YWJsZVN0cmVhbQorRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBi
ZWNvbWVzIGVycm9yZWQgYWZ0ZXIgcGlwaW5nOyBwcmV2ZW50Q2FuY2VsID0gdHJ1ZSBDYW4ndCBm
aW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdh
dGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVycm9yZWQgYWZ0ZXIgcGlwaW5nIGR1ZSB0byBsYXN0IHdy
aXRlOyBzb3VyY2UgaXMgY2xvc2VkOyBwcmV2ZW50Q2FuY2VsIG9taXR0ZWQgKGJ1dCBjYW5jZWwg
aXMgbmV2ZXIgY2FsbGVkKSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJ
TCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVycm9yZWQgYWZ0
ZXIgcGlwaW5nIGR1ZSB0byBsYXN0IHdyaXRlOyBzb3VyY2UgaXMgY2xvc2VkOyBwcmV2ZW50Q2Fu
Y2VsID0gdHJ1ZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBFcnJv
cnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVycm9yZWQgYWZ0ZXIgcGlw
aW5nOyBkZXN0IG5ldmVyIGRlc2lyZXMgY2h1bmtzOyBwcmV2ZW50Q2FuY2VsID0gZmFsc2U7IGZ1
bGZpbGxlZCBjYW5jZWwgcHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVh
bQorRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVycm9y
ZWQgYWZ0ZXIgcGlwaW5nOyBkZXN0IG5ldmVyIGRlc2lyZXMgY2h1bmtzOyBwcmV2ZW50Q2FuY2Vs
ID0gZmFsc2U7IHJlamVjdGVkIGNhbmNlbCBwcm9taXNlIENhbid0IGZpbmQgdmFyaWFibGU6IFdy
aXRhYmxlU3RyZWFtCitGQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGJl
Y29tZXMgZXJyb3JlZCBhZnRlciBwaXBpbmc7IGRlc3QgbmV2ZXIgZGVzaXJlcyBjaHVua3M7IHBy
ZXZlbnRDYW5jZWwgPSB0cnVlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitG
QUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGJlY29tZXMgZXJyb3JlZCBi
ZWZvcmUgcGlwaW5nIHZpYSBhYm9ydDsgcHJldmVudENhbmNlbCBvbWl0dGVkOyBmdWxmaWxsZWQg
Y2FuY2VsIHByb21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwg
RXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogYmVjb21lcyBlcnJvcmVkIGJlZm9y
ZSBwaXBpbmcgdmlhIGFib3J0OyBwcmV2ZW50Q2FuY2VsIG9taXR0ZWQ7IHJlamVjdGVkIGNhbmNl
bCBwcm9taXNlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIEVycm9y
cyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGJlY29tZXMgZXJyb3JlZCBiZWZvcmUgcGlw
aW5nIHZpYSBhYm9ydDsgcHJldmVudENhbmNlbCA9IHRydWUgQ2FuJ3QgZmluZCB2YXJpYWJsZTog
V3JpdGFibGVTdHJlYW0KK0ZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDog
ZXJyb3JpbmcgdmlhIHRoZSBjb250cm9sbGVyIGVycm9ycyBvbmNlIHBlbmRpbmcgd3JpdGUgY29t
cGxldGVzIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBp
bmcvZXJyb3ItcHJvcGFnYXRpb24tYmFja3dhcmQuYW55Lndvcmtlci5odG1sIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9lcnJvci1w
cm9wYWdhdGlvbi1iYWNrd2FyZC5hbnkud29ya2VyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjM4MjkxMzUy
OGU2OTNiM2E1ZDU2YzY2MGE0NTA2MDk4MGI1NDhjMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvZXJy
b3ItcHJvcGFnYXRpb24tYmFja3dhcmQuYW55Lndvcmtlci5odG1sCkBAIC0wLDAgKzEgQEAKKzwh
LS0gVGhpcyBmaWxlIGlzIHJlcXVpcmVkIGZvciBXZWJLaXQgdGVzdCBpbmZyYXN0cnVjdHVyZSB0
byBydW4gdGhlIHRlbXBsYXRlZCB0ZXN0IC0tPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy9waXBpbmcvZXJyb3ItcHJvcGFnYXRpb24tYmFja3dhcmQuZGVkaWNhdGVkd29ya2Vy
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy9waXBpbmcvZXJyb3ItcHJvcGFnYXRpb24tYmFja3dhcmQuZGVkaWNhdGVkd29y
a2VyLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTUxOWQxMGI3
M2ZjMTZjNTY0ZTYwNjYxYTkxOWQ0ZDdiMjJiMmY4Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Vycm9yLXByb3BhZ2F0aW9uLWJhY2t3YXJkLmRlZGlj
YXRlZHdvcmtlci1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi0K
LUZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogc3RhcnRzIGVycm9yZWQ7
IHByZXZlbnRDYW5jZWwgb21pdHRlZDsgZnVsZmlsbGVkIGNhbmNlbCBwcm9taXNlIENhbid0IGZp
bmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0
ZWQgYmFja3dhcmQ6IGJlY29tZXMgZXJyb3JlZCBiZWZvcmUgcGlwaW5nIGR1ZSB0byB3cml0ZTsg
cHJldmVudENhbmNlbCBvbWl0dGVkOyBmdWxmaWxsZWQgY2FuY2VsIHByb21pc2UgQ2FuJ3QgZmlu
ZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRl
ZCBiYWNrd2FyZDogYmVjb21lcyBlcnJvcmVkIGJlZm9yZSBwaXBpbmcgZHVlIHRvIHdyaXRlOyBw
cmV2ZW50Q2FuY2VsIG9taXR0ZWQ7IHJlamVjdGVkIGNhbmNlbCBwcm9taXNlIENhbid0IGZpbmQg
dmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQg
YmFja3dhcmQ6IGJlY29tZXMgZXJyb3JlZCBiZWZvcmUgcGlwaW5nIGR1ZSB0byB3cml0ZTsgcHJl
dmVudENhbmNlbCA9IHVuZGVmaW5lZCAoZmFsc3kpOyBmdWxmaWxsZWQgY2FuY2VsIHByb21pc2Ug
Q2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgRXJyb3JzIG11c3QgYmUg
cHJvcGFnYXRlZCBiYWNrd2FyZDogYmVjb21lcyBlcnJvcmVkIGJlZm9yZSBwaXBpbmcgZHVlIHRv
IHdyaXRlOyBwcmV2ZW50Q2FuY2VsID0gbnVsbCAoZmFsc3kpOyBmdWxmaWxsZWQgY2FuY2VsIHBy
b21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgRXJyb3JzIG11
c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogYmVjb21lcyBlcnJvcmVkIGJlZm9yZSBwaXBpbmcg
ZHVlIHRvIHdyaXRlOyBwcmV2ZW50Q2FuY2VsID0gZmFsc2UgKGZhbHN5KTsgZnVsZmlsbGVkIGNh
bmNlbCBwcm9taXNlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIEVy
cm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGJlY29tZXMgZXJyb3JlZCBiZWZvcmUg
cGlwaW5nIGR1ZSB0byB3cml0ZTsgcHJldmVudENhbmNlbCA9IDAgKGZhbHN5KTsgZnVsZmlsbGVk
IGNhbmNlbCBwcm9taXNlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlM
IEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGJlY29tZXMgZXJyb3JlZCBiZWZv
cmUgcGlwaW5nIGR1ZSB0byB3cml0ZTsgcHJldmVudENhbmNlbCA9IC0wIChmYWxzeSk7IGZ1bGZp
bGxlZCBjYW5jZWwgcHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQot
RkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVycm9yZWQg
YmVmb3JlIHBpcGluZyBkdWUgdG8gd3JpdGU7IHByZXZlbnRDYW5jZWwgPSBOYU4gKGZhbHN5KTsg
ZnVsZmlsbGVkIGNhbmNlbCBwcm9taXNlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3Ry
ZWFtCi1GQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGJlY29tZXMgZXJy
b3JlZCBiZWZvcmUgcGlwaW5nIGR1ZSB0byB3cml0ZTsgcHJldmVudENhbmNlbCA9ICAoZmFsc3kp
OyBmdWxmaWxsZWQgY2FuY2VsIHByb21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVT
dHJlYW0KLUZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogYmVjb21lcyBl
cnJvcmVkIGJlZm9yZSBwaXBpbmcgZHVlIHRvIHdyaXRlOyBwcmV2ZW50Q2FuY2VsID0gdHJ1ZSAo
dHJ1dGh5KSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBFcnJvcnMg
bXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVycm9yZWQgYmVmb3JlIHBpcGlu
ZyBkdWUgdG8gd3JpdGU7IHByZXZlbnRDYW5jZWwgPSBhICh0cnV0aHkpIENhbid0IGZpbmQgdmFy
aWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFj
a3dhcmQ6IGJlY29tZXMgZXJyb3JlZCBiZWZvcmUgcGlwaW5nIGR1ZSB0byB3cml0ZTsgcHJldmVu
dENhbmNlbCA9IDEgKHRydXRoeSkgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0K
LUZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogYmVjb21lcyBlcnJvcmVk
IGJlZm9yZSBwaXBpbmcgZHVlIHRvIHdyaXRlOyBwcmV2ZW50Q2FuY2VsID0gU3ltYm9sKCkgKHRy
dXRoeSkgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgRXJyb3JzIG11
c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogYmVjb21lcyBlcnJvcmVkIGJlZm9yZSBwaXBpbmcg
ZHVlIHRvIHdyaXRlOyBwcmV2ZW50Q2FuY2VsID0gW29iamVjdCBPYmplY3RdICh0cnV0aHkpIENh
bid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIEVycm9ycyBtdXN0IGJlIHBy
b3BhZ2F0ZWQgYmFja3dhcmQ6IGJlY29tZXMgZXJyb3JlZCBiZWZvcmUgcGlwaW5nIGR1ZSB0byB3
cml0ZSwgcHJldmVudENhbmNlbCA9IHRydWU7IHByZXZlbnRBYm9ydCA9IHRydWUgQ2FuJ3QgZmlu
ZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRl
ZCBiYWNrd2FyZDogYmVjb21lcyBlcnJvcmVkIGJlZm9yZSBwaXBpbmcgZHVlIHRvIHdyaXRlOyBw
cmV2ZW50Q2FuY2VsID0gdHJ1ZSwgcHJldmVudEFib3J0ID0gdHJ1ZSwgcHJldmVudENsb3NlID0g
dHJ1ZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBFcnJvcnMgbXVz
dCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVycm9yZWQgZHVyaW5nIHBpcGluZyBk
dWUgdG8gd3JpdGU7IHByZXZlbnRDYW5jZWwgb21pdHRlZDsgZnVsZmlsbGVkIGNhbmNlbCBwcm9t
aXNlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIEVycm9ycyBtdXN0
IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGJlY29tZXMgZXJyb3JlZCBkdXJpbmcgcGlwaW5nIGR1
ZSB0byB3cml0ZTsgcHJldmVudENhbmNlbCBvbWl0dGVkOyByZWplY3RlZCBjYW5jZWwgcHJvbWlz
ZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBFcnJvcnMgbXVzdCBi
ZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVycm9yZWQgZHVyaW5nIHBpcGluZyBkdWUg
dG8gd3JpdGU7IHByZXZlbnRDYW5jZWwgPSB0cnVlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRh
YmxlU3RyZWFtCi1GQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGJlY29t
ZXMgZXJyb3JlZCBkdXJpbmcgcGlwaW5nIGR1ZSB0byB3cml0ZSwgYnV0IGFzeW5jOyBwcmV2ZW50
Q2FuY2VsID0gZmFsc2U7IGZ1bGZpbGxlZCBjYW5jZWwgcHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlh
YmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3
YXJkOiBiZWNvbWVzIGVycm9yZWQgZHVyaW5nIHBpcGluZyBkdWUgdG8gd3JpdGUsIGJ1dCBhc3lu
YzsgcHJldmVudENhbmNlbCA9IGZhbHNlOyByZWplY3RlZCBjYW5jZWwgcHJvbWlzZSBDYW4ndCBm
aW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdh
dGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVycm9yZWQgZHVyaW5nIHBpcGluZyBkdWUgdG8gd3JpdGUs
IGJ1dCBhc3luYzsgcHJldmVudENhbmNlbCA9IHRydWUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3Jp
dGFibGVTdHJlYW0KLUZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogYmVj
b21lcyBlcnJvcmVkIGFmdGVyIHBpcGluZzsgcHJldmVudENhbmNlbCBvbWl0dGVkOyBmdWxmaWxs
ZWQgY2FuY2VsIHByb21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZB
SUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogYmVjb21lcyBlcnJvcmVkIGFm
dGVyIHBpcGluZzsgcHJldmVudENhbmNlbCBvbWl0dGVkOyByZWplY3RlZCBjYW5jZWwgcHJvbWlz
ZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBFcnJvcnMgbXVzdCBi
ZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVycm9yZWQgYWZ0ZXIgcGlwaW5nOyBwcmV2
ZW50Q2FuY2VsID0gdHJ1ZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJ
TCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVycm9yZWQgYWZ0
ZXIgcGlwaW5nIGR1ZSB0byBsYXN0IHdyaXRlOyBzb3VyY2UgaXMgY2xvc2VkOyBwcmV2ZW50Q2Fu
Y2VsIG9taXR0ZWQgKGJ1dCBjYW5jZWwgaXMgbmV2ZXIgY2FsbGVkKSBDYW4ndCBmaW5kIHZhcmlh
YmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3
YXJkOiBiZWNvbWVzIGVycm9yZWQgYWZ0ZXIgcGlwaW5nIGR1ZSB0byBsYXN0IHdyaXRlOyBzb3Vy
Y2UgaXMgY2xvc2VkOyBwcmV2ZW50Q2FuY2VsID0gdHJ1ZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBX
cml0YWJsZVN0cmVhbQotRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBi
ZWNvbWVzIGVycm9yZWQgYWZ0ZXIgcGlwaW5nOyBkZXN0IG5ldmVyIGRlc2lyZXMgY2h1bmtzOyBw
cmV2ZW50Q2FuY2VsID0gZmFsc2U7IGZ1bGZpbGxlZCBjYW5jZWwgcHJvbWlzZSBDYW4ndCBmaW5k
IHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVk
IGJhY2t3YXJkOiBiZWNvbWVzIGVycm9yZWQgYWZ0ZXIgcGlwaW5nOyBkZXN0IG5ldmVyIGRlc2ly
ZXMgY2h1bmtzOyBwcmV2ZW50Q2FuY2VsID0gZmFsc2U7IHJlamVjdGVkIGNhbmNlbCBwcm9taXNl
IENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIEVycm9ycyBtdXN0IGJl
IHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGJlY29tZXMgZXJyb3JlZCBhZnRlciBwaXBpbmc7IGRlc3Qg
bmV2ZXIgZGVzaXJlcyBjaHVua3M7IHByZXZlbnRDYW5jZWwgPSB0cnVlIENhbid0IGZpbmQgdmFy
aWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFj
a3dhcmQ6IGJlY29tZXMgZXJyb3JlZCBiZWZvcmUgcGlwaW5nIHZpYSBhYm9ydDsgcHJldmVudENh
bmNlbCBvbWl0dGVkOyBmdWxmaWxsZWQgY2FuY2VsIHByb21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJs
ZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2Fy
ZDogYmVjb21lcyBlcnJvcmVkIGJlZm9yZSBwaXBpbmcgdmlhIGFib3J0OyBwcmV2ZW50Q2FuY2Vs
IG9taXR0ZWQ7IHJlamVjdGVkIGNhbmNlbCBwcm9taXNlIENhbid0IGZpbmQgdmFyaWFibGU6IFdy
aXRhYmxlU3RyZWFtCi1GQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGJl
Y29tZXMgZXJyb3JlZCBiZWZvcmUgcGlwaW5nIHZpYSBhYm9ydDsgcHJldmVudENhbmNlbCA9IHRy
dWUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgRXJyb3JzIG11c3Qg
YmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogZXJyb3JpbmcgdmlhIHRoZSBjb250cm9sbGVyIGVycm9y
cyBvbmNlIHBlbmRpbmcgd3JpdGUgY29tcGxldGVzIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRh
YmxlU3RyZWFtCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvZXJyb3ItcHJvcGFnYXRpb24tYmFja3dhcmQuZGVk
aWNhdGVkd29ya2VyLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Vycm9yLXByb3BhZ2F0aW9uLWJhY2t3YXJkLmRlZGljYXRl
ZHdvcmtlci5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NmUyZjRlY2QyZDFl
NjBhNWY5NjllNTQ2ZGQyMTFhMWRlOTRlNGI3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy9waXBpbmcvZXJyb3ItcHJvcGFnYXRpb24tYmFja3dhcmQuZGVkaWNhdGVk
d29ya2VyLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi08IURPQ1RZUEUgaHRt
bD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTx0aXRsZT5lcnJvci1wcm9wYWdhdGlvbi1iYWNr
d2FyZC5qcyBkZWRpY2F0ZWQgd29ya2VyIHdyYXBwZXIgZmlsZTwvdGl0bGU+Ci0KLTxzY3JpcHQg
c3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIv
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLQotPHNjcmlwdD4KLSd1
c2Ugc3RyaWN0JzsKLWZldGNoX3Rlc3RzX2Zyb21fd29ya2VyKG5ldyBXb3JrZXIoJ2Vycm9yLXBy
b3BhZ2F0aW9uLWJhY2t3YXJkLmpzJykpOwotPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Vycm9y
LXByb3BhZ2F0aW9uLWJhY2t3YXJkLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Vycm9yLXByb3BhZ2F0aW9uLWJhY2t3YXJk
Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRkNDg3Njg2NWNjNTVkODE0MDI5
MzBhODk1M2IxNDJhYTI4NWM4YWQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
dHJlYW1zL3BpcGluZy9lcnJvci1wcm9wYWdhdGlvbi1iYWNrd2FyZC5odG1sCisrKyAvZGV2L251
bGwKQEAgLTEsMTEgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYt
OCI+Ci08dGl0bGU+ZXJyb3ItcHJvcGFnYXRpb24tYmFja3dhcmQuanMgYnJvd3NlciBjb250ZXh0
IHdyYXBwZXIgZmlsZTwvdGl0bGU+Ci0KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJu
ZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVw
b3J0LmpzIj48L3NjcmlwdD4KLQotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0LXV0aWxz
LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvcmVjb3JkaW5nLXN0cmVh
bXMuanMiPjwvc2NyaXB0PgotCi08c2NyaXB0IHNyYz0iZXJyb3ItcHJvcGFnYXRpb24tYmFja3dh
cmQuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9lcnJvci1wcm9wYWdhdGlvbi1iYWNrd2Fy
ZC5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy9waXBpbmcvZXJyb3ItcHJvcGFnYXRpb24tYmFja3dhcmQuanMKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGRkYTU3NzRlMWM5YWU2OWM1MjIyYzJmYTM4YWMxY2ZiNmE2ZTdmZDQuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9lcnJvci1wcm9w
YWdhdGlvbi1iYWNrd2FyZC5qcworKysgL2Rldi9udWxsCkBAIC0xLDYzNSArMCwwIEBACi0ndXNl
IHN0cmljdCc7Ci0KLWlmIChzZWxmLmltcG9ydFNjcmlwdHMpIHsKLSAgc2VsZi5pbXBvcnRTY3Jp
cHRzKCcvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzJyk7Ci0gIHNlbGYuaW1wb3J0U2NyaXB0cygn
Li4vcmVzb3VyY2VzL3Rlc3QtdXRpbHMuanMnKTsKLSAgc2VsZi5pbXBvcnRTY3JpcHRzKCcuLi9y
ZXNvdXJjZXMvcmVjb3JkaW5nLXN0cmVhbXMuanMnKTsKLX0KLQotY29uc3QgZXJyb3IxID0gbmV3
IEVycm9yKCdlcnJvcjEhJyk7Ci1lcnJvcjEubmFtZSA9ICdlcnJvcjEnOwotCi1jb25zdCBlcnJv
cjIgPSBuZXcgRXJyb3IoJ2Vycm9yMiEnKTsKLWVycm9yMi5uYW1lID0gJ2Vycm9yMic7Ci0KLXBy
b21pc2VfdGVzdCh0ID0+IHsKLQotICBjb25zdCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFt
KCk7Ci0KLSAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQo
KSB7Ci0gICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyb3IxKTsKLSAgICB9Ci0gIH0pOwot
Ci0gIHJldHVybiBwcm9taXNlX3JlamVjdHModCwgZXJyb3IxLCBycy5waXBlVG8od3MpLCAncGlw
ZVRvIG11c3QgcmVqZWN0IHdpdGggdGhlIHNhbWUgZXJyb3InKQotICAgIC50aGVuKCgpID0+IHsK
LSAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMocnMuZXZlbnRzV2l0aG91dFB1bGxzLCBbJ2NhbmNl
bCcsIGVycm9yMV0pOwotICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFtdKTsK
LSAgICB9KTsKLQotfSwgJ0Vycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IHN0YXJ0
cyBlcnJvcmVkOyBwcmV2ZW50Q2FuY2VsIG9taXR0ZWQ7IGZ1bGZpbGxlZCBjYW5jZWwgcHJvbWlz
ZScpOwotCi1wcm9taXNlX3Rlc3QodCA9PiB7Ci0KLSAgY29uc3QgcnMgPSByZWNvcmRpbmdSZWFk
YWJsZVN0cmVhbSgpOwotCi0gIGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0oewot
ICAgIHdyaXRlKCkgewotICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yMSk7Ci0gICAg
fQotICB9KTsKLQotICBjb25zdCB3cml0ZXIgPSB3cy5nZXRXcml0ZXIoKTsKLQotICByZXR1cm4g
cHJvbWlzZV9yZWplY3RzKHQsIGVycm9yMSwgd3JpdGVyLndyaXRlKCdIZWxsbycpLCAnd3JpdGVy
LndyaXRlKCkgbXVzdCByZWplY3Qgd2l0aCB0aGUgd3JpdGUgZXJyb3InKQotICAgIC50aGVuKCgp
ID0+IHByb21pc2VfcmVqZWN0cyh0LCBlcnJvcjEsIHdyaXRlci5jbG9zZWQsICd3cml0ZXIuY2xv
c2VkIG11c3QgcmVqZWN0IHdpdGggdGhlIHdyaXRlIGVycm9yJykpCi0gICAgLnRoZW4oKCkgPT4g
ewotICAgICAgd3JpdGVyLnJlbGVhc2VMb2NrKCk7Ci0KLSAgICAgIHJldHVybiBwcm9taXNlX3Jl
amVjdHModCwgZXJyb3IxLCBycy5waXBlVG8od3MpLCAncGlwZVRvIG11c3QgcmVqZWN0IHdpdGgg
dGhlIHdyaXRlIGVycm9yJykKLSAgICAgICAgLnRoZW4oKCkgPT4gewotICAgICAgICAgIGFzc2Vy
dF9hcnJheV9lcXVhbHMocnMuZXZlbnRzV2l0aG91dFB1bGxzLCBbJ2NhbmNlbCcsIGVycm9yMV0p
OwotICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ3dyaXRlJywgJ0hl
bGxvJ10pOwotICAgICAgICB9KTsKLSAgICB9KTsKLQotfSwgJ0Vycm9ycyBtdXN0IGJlIHByb3Bh
Z2F0ZWQgYmFja3dhcmQ6IGJlY29tZXMgZXJyb3JlZCBiZWZvcmUgcGlwaW5nIGR1ZSB0byB3cml0
ZTsgcHJldmVudENhbmNlbCBvbWl0dGVkOyAnICsKLSAgICdmdWxmaWxsZWQgY2FuY2VsIHByb21p
c2UnKTsKLQotcHJvbWlzZV90ZXN0KHQgPT4gewotCi0gIGNvbnN0IHJzID0gcmVjb3JkaW5nUmVh
ZGFibGVTdHJlYW0oewotICAgIGNhbmNlbCgpIHsKLSAgICAgIHRocm93IGVycm9yMjsKLSAgICB9
Ci0gIH0pOwotCi0gIGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0oewotICAgIHdy
aXRlKCkgewotICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yMSk7Ci0gICAgfQotICB9
KTsKLQotICBjb25zdCB3cml0ZXIgPSB3cy5nZXRXcml0ZXIoKTsKLQotICByZXR1cm4gcHJvbWlz
ZV9yZWplY3RzKHQsIGVycm9yMSwgd3JpdGVyLndyaXRlKCdIZWxsbycpLCAnd3JpdGVyLndyaXRl
KCkgbXVzdCByZWplY3Qgd2l0aCB0aGUgd3JpdGUgZXJyb3InKQotICAgIC50aGVuKCgpID0+IHBy
b21pc2VfcmVqZWN0cyh0LCBlcnJvcjEsIHdyaXRlci5jbG9zZWQsICd3cml0ZXIuY2xvc2VkIG11
c3QgcmVqZWN0IHdpdGggdGhlIHdyaXRlIGVycm9yJykpCi0gICAgLnRoZW4oKCkgPT4gewotICAg
ICAgd3JpdGVyLnJlbGVhc2VMb2NrKCk7Ci0KLSAgICAgIHJldHVybiBwcm9taXNlX3JlamVjdHMo
dCwgZXJyb3IyLCBycy5waXBlVG8od3MpLCAncGlwZVRvIG11c3QgcmVqZWN0IHdpdGggdGhlIGNh
bmNlbCBlcnJvcicpCi0gICAgICAgIC50aGVuKCgpID0+IHsKLSAgICAgICAgICBhc3NlcnRfYXJy
YXlfZXF1YWxzKHJzLmV2ZW50c1dpdGhvdXRQdWxscywgWydjYW5jZWwnLCBlcnJvcjFdKTsKLSAg
ICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWyd3cml0ZScsICdIZWxsbydd
KTsKLSAgICAgICAgfSk7Ci0gICAgfSk7Ci0KLX0sICdFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVk
IGJhY2t3YXJkOiBiZWNvbWVzIGVycm9yZWQgYmVmb3JlIHBpcGluZyBkdWUgdG8gd3JpdGU7IHBy
ZXZlbnRDYW5jZWwgb21pdHRlZDsgcmVqZWN0ZWQgJyArCi0gICAnY2FuY2VsIHByb21pc2UnKTsK
LQotZm9yIChjb25zdCBmYWxzeSBvZiBbdW5kZWZpbmVkLCBudWxsLCBmYWxzZSwgKzAsIC0wLCBO
YU4sICcnXSkgewotICBjb25zdCBzdHJpbmdWZXJzaW9uID0gT2JqZWN0LmlzKGZhbHN5LCAtMCkg
PyAnLTAnIDogU3RyaW5nKGZhbHN5KTsKLQotICBwcm9taXNlX3Rlc3QodCA9PiB7Ci0KLSAgICBj
b25zdCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKCk7Ci0KLSAgICBjb25zdCB3cyA9IHJl
Y29yZGluZ1dyaXRhYmxlU3RyZWFtKHsKLSAgICAgIHdyaXRlKCkgewotICAgICAgICByZXR1cm4g
UHJvbWlzZS5yZWplY3QoZXJyb3IxKTsKLSAgICAgIH0KLSAgICB9KTsKLQotICAgIGNvbnN0IHdy
aXRlciA9IHdzLmdldFdyaXRlcigpOwotCi0gICAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0LCBl
cnJvcjEsIHdyaXRlci53cml0ZSgnSGVsbG8nKSwgJ3dyaXRlci53cml0ZSgpIG11c3QgcmVqZWN0
IHdpdGggdGhlIHdyaXRlIGVycm9yJykKLSAgICAgIC50aGVuKCgpID0+IHByb21pc2VfcmVqZWN0
cyh0LCBlcnJvcjEsIHdyaXRlci5jbG9zZWQsICd3cml0ZXIuY2xvc2VkIG11c3QgcmVqZWN0IHdp
dGggdGhlIHdyaXRlIGVycm9yJykpCi0gICAgICAudGhlbigoKSA9PiB7Ci0gICAgICAgIHdyaXRl
ci5yZWxlYXNlTG9jaygpOwotCi0gICAgICAgIHJldHVybiBwcm9taXNlX3JlamVjdHModCwgZXJy
b3IxLCBycy5waXBlVG8od3MsIHsgcHJldmVudENhbmNlbDogZmFsc3kgfSksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ3BpcGVUbyBtdXN0IHJlamVjdCB3aXRoIHRoZSB3cml0ZSBl
cnJvcicpCi0gICAgICAgICAgLnRoZW4oKCkgPT4gewotICAgICAgICAgICAgYXNzZXJ0X2FycmF5
X2VxdWFscyhycy5ldmVudHNXaXRob3V0UHVsbHMsIFsnY2FuY2VsJywgZXJyb3IxXSk7Ci0gICAg
ICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWyd3cml0ZScsICdIZWxsbydd
KTsKLSAgICAgICAgICB9KTsKLSAgICAgIH0pOwotCi0gIH0sIGBFcnJvcnMgbXVzdCBiZSBwcm9w
YWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVycm9yZWQgYmVmb3JlIHBpcGluZyBkdWUgdG8gd3Jp
dGU7IHByZXZlbnRDYW5jZWwgPSBgICsKLSAgICAgYCR7c3RyaW5nVmVyc2lvbn0gKGZhbHN5KTsg
ZnVsZmlsbGVkIGNhbmNlbCBwcm9taXNlYCk7Ci19Ci0KLWZvciAoY29uc3QgdHJ1dGh5IG9mIFt0
cnVlLCAnYScsIDEsIFN5bWJvbCgpLCB7IH1dKSB7Ci0gIHByb21pc2VfdGVzdCh0ID0+IHsKLQot
ICAgIGNvbnN0IHJzID0gcmVjb3JkaW5nUmVhZGFibGVTdHJlYW0oKTsKLQotICAgIGNvbnN0IHdz
ID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0oewotICAgICAgd3JpdGUoKSB7Ci0gICAgICAgIHJl
dHVybiBQcm9taXNlLnJlamVjdChlcnJvcjEpOwotICAgICAgfQotICAgIH0pOwotCi0gICAgY29u
c3Qgd3JpdGVyID0gd3MuZ2V0V3JpdGVyKCk7Ci0KLSAgICByZXR1cm4gcHJvbWlzZV9yZWplY3Rz
KHQsIGVycm9yMSwgd3JpdGVyLndyaXRlKCdIZWxsbycpLCAnd3JpdGVyLndyaXRlKCkgbXVzdCBy
ZWplY3Qgd2l0aCB0aGUgd3JpdGUgZXJyb3InKQotICAgICAgLnRoZW4oKCkgPT4gcHJvbWlzZV9y
ZWplY3RzKHQsIGVycm9yMSwgd3JpdGVyLmNsb3NlZCwgJ3dyaXRlci5jbG9zZWQgbXVzdCByZWpl
Y3Qgd2l0aCB0aGUgd3JpdGUgZXJyb3InKSkKLSAgICAgIC50aGVuKCgpID0+IHsKLSAgICAgICAg
d3JpdGVyLnJlbGVhc2VMb2NrKCk7Ci0KLSAgICAgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0
LCBlcnJvcjEsIHJzLnBpcGVUbyh3cywgeyBwcmV2ZW50Q2FuY2VsOiB0cnV0aHkgfSksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BpcGVUbyBtdXN0IHJlamVjdCB3aXRoIHRoZSB3
cml0ZSBlcnJvcicpCi0gICAgICAgICAgLnRoZW4oKCkgPT4gewotICAgICAgICAgICAgYXNzZXJ0
X2FycmF5X2VxdWFscyhycy5ldmVudHNXaXRob3V0UHVsbHMsIFtdKTsKLSAgICAgICAgICAgIGFz
c2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ3dyaXRlJywgJ0hlbGxvJ10pOwotICAgICAg
ICAgIH0pOwotICAgICAgfSk7Ci0KLSAgfSwgYEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFj
a3dhcmQ6IGJlY29tZXMgZXJyb3JlZCBiZWZvcmUgcGlwaW5nIGR1ZSB0byB3cml0ZTsgcHJldmVu
dENhbmNlbCA9IGAgKwotICAgICBgJHtTdHJpbmcodHJ1dGh5KX0gKHRydXRoeSlgKTsKLX0KLQot
cHJvbWlzZV90ZXN0KHQgPT4gewotCi0gIGNvbnN0IHJzID0gcmVjb3JkaW5nUmVhZGFibGVTdHJl
YW0oKTsKLQotICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKHsKLSAgICB3cml0
ZSgpIHsKLSAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcjEpOwotICAgIH0KLSAgfSk7
Ci0KLSAgY29uc3Qgd3JpdGVyID0gd3MuZ2V0V3JpdGVyKCk7Ci0KLSAgcmV0dXJuIHByb21pc2Vf
cmVqZWN0cyh0LCBlcnJvcjEsIHdyaXRlci53cml0ZSgnSGVsbG8nKSwgJ3dyaXRlci53cml0ZSgp
IG11c3QgcmVqZWN0IHdpdGggdGhlIHdyaXRlIGVycm9yJykKLSAgICAudGhlbigoKSA9PiBwcm9t
aXNlX3JlamVjdHModCwgZXJyb3IxLCB3cml0ZXIuY2xvc2VkLCAnd3JpdGVyLmNsb3NlZCBtdXN0
IHJlamVjdCB3aXRoIHRoZSB3cml0ZSBlcnJvcicpKQotICAgIC50aGVuKCgpID0+IHsKLSAgICAg
IHdyaXRlci5yZWxlYXNlTG9jaygpOwotCi0gICAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHQs
IGVycm9yMSwgcnMucGlwZVRvKHdzLCB7IHByZXZlbnRDYW5jZWw6IHRydWUsIHByZXZlbnRBYm9y
dDogdHJ1ZSB9KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BpcGVUbyBtdXN0IHJl
amVjdCB3aXRoIHRoZSB3cml0ZSBlcnJvcicpCi0gICAgICAgIC50aGVuKCgpID0+IHsKLSAgICAg
ICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJzLmV2ZW50c1dpdGhvdXRQdWxscywgW10pOwotICAg
ICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ3dyaXRlJywgJ0hlbGxvJ10p
OwotICAgICAgICB9KTsKLSAgICB9KTsKLQotfSwgJ0Vycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQg
YmFja3dhcmQ6IGJlY29tZXMgZXJyb3JlZCBiZWZvcmUgcGlwaW5nIGR1ZSB0byB3cml0ZSwgcHJl
dmVudENhbmNlbCA9IHRydWU7ICcgKwotICAgJ3ByZXZlbnRBYm9ydCA9IHRydWUnKTsKLQotcHJv
bWlzZV90ZXN0KHQgPT4gewotCi0gIGNvbnN0IHJzID0gcmVjb3JkaW5nUmVhZGFibGVTdHJlYW0o
KTsKLQotICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKHsKLSAgICB3cml0ZSgp
IHsKLSAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcjEpOwotICAgIH0KLSAgfSk7Ci0K
LSAgY29uc3Qgd3JpdGVyID0gd3MuZ2V0V3JpdGVyKCk7Ci0KLSAgcmV0dXJuIHByb21pc2VfcmVq
ZWN0cyh0LCBlcnJvcjEsIHdyaXRlci53cml0ZSgnSGVsbG8nKSwgJ3dyaXRlci53cml0ZSgpIG11
c3QgcmVqZWN0IHdpdGggdGhlIHdyaXRlIGVycm9yJykKLSAgICAudGhlbigoKSA9PiBwcm9taXNl
X3JlamVjdHModCwgZXJyb3IxLCB3cml0ZXIuY2xvc2VkLCAnd3JpdGVyLmNsb3NlZCBtdXN0IHJl
amVjdCB3aXRoIHRoZSB3cml0ZSBlcnJvcicpKQotICAgIC50aGVuKCgpID0+IHsKLSAgICAgIHdy
aXRlci5yZWxlYXNlTG9jaygpOwotCi0gICAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHQsIGVy
cm9yMSwgcnMucGlwZVRvKHdzLCB7IHByZXZlbnRDYW5jZWw6IHRydWUsIHByZXZlbnRBYm9ydDog
dHJ1ZSwgcHJldmVudENsb3NlOiB0cnVlIH0pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAncGlwZVRvIG11c3QgcmVqZWN0IHdpdGggdGhlIHdyaXRlIGVycm9yJykKLSAgICAgICAgLnRo
ZW4oKCkgPT4gewotICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMocnMuZXZlbnRzV2l0aG91
dFB1bGxzLCBbXSk7Ci0gICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsn
d3JpdGUnLCAnSGVsbG8nXSk7Ci0gICAgICAgIH0pOwotICAgIH0pOwotCi19LCAnRXJyb3JzIG11
c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogYmVjb21lcyBlcnJvcmVkIGJlZm9yZSBwaXBpbmcg
ZHVlIHRvIHdyaXRlOyBwcmV2ZW50Q2FuY2VsID0gdHJ1ZSwgJyArCi0gICAncHJldmVudEFib3J0
ID0gdHJ1ZSwgcHJldmVudENsb3NlID0gdHJ1ZScpOwotCi1wcm9taXNlX3Rlc3QodCA9PiB7Ci0K
LSAgY29uc3QgcnMgPSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoY29udHJv
bGxlcikgewotICAgICAgY29udHJvbGxlci5lbnF1ZXVlKCdIZWxsbycpOwotICAgIH0KLSAgfSk7
Ci0KLSAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSh7Ci0gICAgd3JpdGUoKSB7
Ci0gICAgICB0aHJvdyBlcnJvcjE7Ci0gICAgfQotICB9KTsKLQotICByZXR1cm4gcHJvbWlzZV9y
ZWplY3RzKHQsIGVycm9yMSwgcnMucGlwZVRvKHdzKSwgJ3BpcGVUbyBtdXN0IHJlamVjdCB3aXRo
IHRoZSBzYW1lIGVycm9yJykudGhlbigoKSA9PiB7Ci0gICAgYXNzZXJ0X2FycmF5X2VxdWFscyhy
cy5ldmVudHNXaXRob3V0UHVsbHMsIFsnY2FuY2VsJywgZXJyb3IxXSk7Ci0gICAgYXNzZXJ0X2Fy
cmF5X2VxdWFscyh3cy5ldmVudHMsIFsnd3JpdGUnLCAnSGVsbG8nXSk7Ci0gIH0pOwotCi19LCAn
RXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogYmVjb21lcyBlcnJvcmVkIGR1cmlu
ZyBwaXBpbmcgZHVlIHRvIHdyaXRlOyBwcmV2ZW50Q2FuY2VsIG9taXR0ZWQ7IGZ1bGZpbGxlZCAn
ICsKLSAgICdjYW5jZWwgcHJvbWlzZScpOwotCi1wcm9taXNlX3Rlc3QodCA9PiB7Ci0KLSAgY29u
c3QgcnMgPSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoY29udHJvbGxlcikg
ewotICAgICAgY29udHJvbGxlci5lbnF1ZXVlKCdIZWxsbycpOwotICAgIH0sCi0gICAgY2FuY2Vs
KCkgewotICAgICAgdGhyb3cgZXJyb3IyOwotICAgIH0KLSAgfSk7Ci0KLSAgY29uc3Qgd3MgPSBy
ZWNvcmRpbmdXcml0YWJsZVN0cmVhbSh7Ci0gICAgd3JpdGUoKSB7Ci0gICAgICB0aHJvdyBlcnJv
cjE7Ci0gICAgfQotICB9KTsKLQotICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHQsIGVycm9yMiwg
cnMucGlwZVRvKHdzKSwgJ3BpcGVUbyBtdXN0IHJlamVjdCB3aXRoIHRoZSBjYW5jZWwgZXJyb3In
KS50aGVuKCgpID0+IHsKLSAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJzLmV2ZW50c1dpdGhvdXRQ
dWxscywgWydjYW5jZWwnLCBlcnJvcjFdKTsKLSAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2
ZW50cywgWyd3cml0ZScsICdIZWxsbyddKTsKLSAgfSk7Ci0KLX0sICdFcnJvcnMgbXVzdCBiZSBw
cm9wYWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVycm9yZWQgZHVyaW5nIHBpcGluZyBkdWUgdG8g
d3JpdGU7IHByZXZlbnRDYW5jZWwgb21pdHRlZDsgcmVqZWN0ZWQgJyArCi0gICAnY2FuY2VsIHBy
b21pc2UnKTsKLQotcHJvbWlzZV90ZXN0KHQgPT4gewotCi0gIGNvbnN0IHJzID0gcmVjb3JkaW5n
UmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGNvbnRyb2xsZXIpIHsKLSAgICAgIGNvbnRyb2xs
ZXIuZW5xdWV1ZSgnSGVsbG8nKTsKLSAgICB9Ci0gIH0pOwotCi0gIGNvbnN0IHdzID0gcmVjb3Jk
aW5nV3JpdGFibGVTdHJlYW0oewotICAgIHdyaXRlKCkgewotICAgICAgdGhyb3cgZXJyb3IxOwot
ICAgIH0KLSAgfSk7Ci0KLSAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0LCBlcnJvcjEsIHJzLnBp
cGVUbyh3cywgeyBwcmV2ZW50Q2FuY2VsOiB0cnVlIH0pLCAncGlwZVRvIG11c3QgcmVqZWN0IHdp
dGggdGhlIHNhbWUgZXJyb3InKQotICAudGhlbigoKSA9PiB7Ci0gICAgYXNzZXJ0X2FycmF5X2Vx
dWFscyhycy5ldmVudHNXaXRob3V0UHVsbHMsIFtdKTsKLSAgICBhc3NlcnRfYXJyYXlfZXF1YWxz
KHdzLmV2ZW50cywgWyd3cml0ZScsICdIZWxsbyddKTsKLSAgfSk7Ci0KLX0sICdFcnJvcnMgbXVz
dCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVycm9yZWQgZHVyaW5nIHBpcGluZyBk
dWUgdG8gd3JpdGU7IHByZXZlbnRDYW5jZWwgPSB0cnVlJyk7Ci0KLXByb21pc2VfdGVzdCh0ID0+
IHsKLQotICBjb25zdCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChj
b250cm9sbGVyKSB7Ci0gICAgICBjb250cm9sbGVyLmVucXVldWUoJ2EnKTsKLSAgICAgIGNvbnRy
b2xsZXIuZW5xdWV1ZSgnYicpOwotICAgICAgY29udHJvbGxlci5lbnF1ZXVlKCdjJyk7Ci0gICAg
fQotICB9KTsKLQotICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKHsKLSAgICB3
cml0ZSgpIHsKLSAgICAgIGlmICh3cy5ldmVudHMubGVuZ3RoID4gMikgewotICAgICAgICByZXR1
cm4gZGVsYXkoMCkudGhlbigoKSA9PiB7Ci0gICAgICAgICAgdGhyb3cgZXJyb3IxOwotICAgICAg
ICB9KTsKLSAgICAgIH0KLSAgICAgIHJldHVybiB1bmRlZmluZWQ7Ci0gICAgfQotICB9KTsKLQot
ICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHQsIGVycm9yMSwgcnMucGlwZVRvKHdzKSwgJ3BpcGVU
byBtdXN0IHJlamVjdCB3aXRoIHRoZSBzYW1lIGVycm9yJykudGhlbigoKSA9PiB7Ci0gICAgYXNz
ZXJ0X2FycmF5X2VxdWFscyhycy5ldmVudHNXaXRob3V0UHVsbHMsIFsnY2FuY2VsJywgZXJyb3Ix
XSk7Ci0gICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsnd3JpdGUnLCAnYScsICd3
cml0ZScsICdiJ10pOwotICB9KTsKLQotfSwgJ0Vycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFj
a3dhcmQ6IGJlY29tZXMgZXJyb3JlZCBkdXJpbmcgcGlwaW5nIGR1ZSB0byB3cml0ZSwgYnV0IGFz
eW5jOyBwcmV2ZW50Q2FuY2VsID0gJyArCi0gICAnZmFsc2U7IGZ1bGZpbGxlZCBjYW5jZWwgcHJv
bWlzZScpOwotCi1wcm9taXNlX3Rlc3QodCA9PiB7Ci0KLSAgY29uc3QgcnMgPSByZWNvcmRpbmdS
ZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoY29udHJvbGxlcikgewotICAgICAgY29udHJvbGxl
ci5lbnF1ZXVlKCdhJyk7Ci0gICAgICBjb250cm9sbGVyLmVucXVldWUoJ2InKTsKLSAgICAgIGNv
bnRyb2xsZXIuZW5xdWV1ZSgnYycpOwotICAgIH0sCi0gICAgY2FuY2VsKCkgewotICAgICAgdGhy
b3cgZXJyb3IyOwotICAgIH0KLSAgfSk7Ci0KLSAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJs
ZVN0cmVhbSh7Ci0gICAgd3JpdGUoKSB7Ci0gICAgICBpZiAod3MuZXZlbnRzLmxlbmd0aCA+IDIp
IHsKLSAgICAgICAgcmV0dXJuIGRlbGF5KDApLnRoZW4oKCkgPT4gewotICAgICAgICAgIHRocm93
IGVycm9yMTsKLSAgICAgICAgfSk7Ci0gICAgICB9Ci0gICAgICByZXR1cm4gdW5kZWZpbmVkOwot
ICAgIH0KLSAgfSk7Ci0KLSAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0LCBlcnJvcjIsIHJzLnBp
cGVUbyh3cyksICdwaXBlVG8gbXVzdCByZWplY3Qgd2l0aCB0aGUgY2FuY2VsIGVycm9yJykudGhl
bigoKSA9PiB7Ci0gICAgYXNzZXJ0X2FycmF5X2VxdWFscyhycy5ldmVudHNXaXRob3V0UHVsbHMs
IFsnY2FuY2VsJywgZXJyb3IxXSk7Ci0gICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMs
IFsnd3JpdGUnLCAnYScsICd3cml0ZScsICdiJ10pOwotICB9KTsKLQotfSwgJ0Vycm9ycyBtdXN0
IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGJlY29tZXMgZXJyb3JlZCBkdXJpbmcgcGlwaW5nIGR1
ZSB0byB3cml0ZSwgYnV0IGFzeW5jOyBwcmV2ZW50Q2FuY2VsID0gJyArCi0gICAnZmFsc2U7IHJl
amVjdGVkIGNhbmNlbCBwcm9taXNlJyk7Ci0KLXByb21pc2VfdGVzdCh0ID0+IHsKLQotICBjb25z
dCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjb250cm9sbGVyKSB7
Ci0gICAgICBjb250cm9sbGVyLmVucXVldWUoJ2EnKTsKLSAgICAgIGNvbnRyb2xsZXIuZW5xdWV1
ZSgnYicpOwotICAgICAgY29udHJvbGxlci5lbnF1ZXVlKCdjJyk7Ci0gICAgfQotICB9KTsKLQot
ICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKHsKLSAgICB3cml0ZSgpIHsKLSAg
ICAgIGlmICh3cy5ldmVudHMubGVuZ3RoID4gMikgewotICAgICAgICByZXR1cm4gZGVsYXkoMCku
dGhlbigoKSA9PiB7Ci0gICAgICAgICAgdGhyb3cgZXJyb3IxOwotICAgICAgICB9KTsKLSAgICAg
IH0KLSAgICAgIHJldHVybiB1bmRlZmluZWQ7Ci0gICAgfQotICB9KTsKLQotICByZXR1cm4gcHJv
bWlzZV9yZWplY3RzKHQsIGVycm9yMSwgcnMucGlwZVRvKHdzLCB7IHByZXZlbnRDYW5jZWw6IHRy
dWUgfSksICdwaXBlVG8gbXVzdCByZWplY3Qgd2l0aCB0aGUgc2FtZSBlcnJvcicpCi0gIC50aGVu
KCgpID0+IHsKLSAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJzLmV2ZW50c1dpdGhvdXRQdWxscywg
W10pOwotICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ3dyaXRlJywgJ2EnLCAn
d3JpdGUnLCAnYiddKTsKLSAgfSk7Ci0KLX0sICdFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJh
Y2t3YXJkOiBiZWNvbWVzIGVycm9yZWQgZHVyaW5nIHBpcGluZyBkdWUgdG8gd3JpdGUsIGJ1dCBh
c3luYzsgcHJldmVudENhbmNlbCA9IHRydWUnKTsKLQotcHJvbWlzZV90ZXN0KHQgPT4gewotCi0g
IGNvbnN0IHJzID0gcmVjb3JkaW5nUmVhZGFibGVTdHJlYW0oKTsKLQotICBjb25zdCB3cyA9IHJl
Y29yZGluZ1dyaXRhYmxlU3RyZWFtKCk7Ci0KLSAgY29uc3QgcGlwZVByb21pc2UgPSBwcm9taXNl
X3JlamVjdHModCwgZXJyb3IxLCBycy5waXBlVG8od3MpLCAncGlwZVRvIG11c3QgcmVqZWN0IHdp
dGggdGhlIHNhbWUgZXJyb3InKTsKLQotICBzZXRUaW1lb3V0KCgpID0+IHdzLmNvbnRyb2xsZXIu
ZXJyb3IoZXJyb3IxKSwgMTApOwotCi0gIHJldHVybiBwaXBlUHJvbWlzZS50aGVuKCgpID0+IHsK
LSAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJzLmV2ZW50c1dpdGhvdXRQdWxscywgWydjYW5jZWwn
LCBlcnJvcjFdKTsKLSAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgW10pOwotICB9
KTsKLQotfSwgJ0Vycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGJlY29tZXMgZXJy
b3JlZCBhZnRlciBwaXBpbmc7IHByZXZlbnRDYW5jZWwgb21pdHRlZDsgZnVsZmlsbGVkIGNhbmNl
bCBwcm9taXNlJyk7Ci0KLXByb21pc2VfdGVzdCh0ID0+IHsKLQotICBjb25zdCBycyA9IHJlY29y
ZGluZ1JlYWRhYmxlU3RyZWFtKHsKLSAgICBjYW5jZWwoKSB7Ci0gICAgICB0aHJvdyBlcnJvcjI7
Ci0gICAgfQotICB9KTsKLQotICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKCk7
Ci0KLSAgY29uc3QgcGlwZVByb21pc2UgPSBwcm9taXNlX3JlamVjdHModCwgZXJyb3IyLCBycy5w
aXBlVG8od3MpLCAncGlwZVRvIG11c3QgcmVqZWN0IHdpdGggdGhlIGNhbmNlbCBlcnJvcicpOwot
Ci0gIHNldFRpbWVvdXQoKCkgPT4gd3MuY29udHJvbGxlci5lcnJvcihlcnJvcjEpLCAxMCk7Ci0K
LSAgcmV0dXJuIHBpcGVQcm9taXNlLnRoZW4oKCkgPT4gewotICAgIGFzc2VydF9hcnJheV9lcXVh
bHMocnMuZXZlbnRzV2l0aG91dFB1bGxzLCBbJ2NhbmNlbCcsIGVycm9yMV0pOwotICAgIGFzc2Vy
dF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbXSk7Ci0gIH0pOwotCi19LCAnRXJyb3JzIG11c3Qg
YmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogYmVjb21lcyBlcnJvcmVkIGFmdGVyIHBpcGluZzsgcHJl
dmVudENhbmNlbCBvbWl0dGVkOyByZWplY3RlZCBjYW5jZWwgcHJvbWlzZScpOwotCi1wcm9taXNl
X3Rlc3QodCA9PiB7Ci0KLSAgY29uc3QgcnMgPSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSgpOwot
Ci0gIGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0oKTsKLQotICBjb25zdCBwaXBl
UHJvbWlzZSA9IHByb21pc2VfcmVqZWN0cyh0LCBlcnJvcjEsIHJzLnBpcGVUbyh3cywgeyBwcmV2
ZW50Q2FuY2VsOiB0cnVlIH0pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAncGlwZVRvIG11c3QgcmVqZWN0IHdpdGggdGhlIHNhbWUgZXJyb3InKTsKLQotICBzZXRUaW1l
b3V0KCgpID0+IHdzLmNvbnRyb2xsZXIuZXJyb3IoZXJyb3IxKSwgMTApOwotCi0gIHJldHVybiBw
aXBlUHJvbWlzZS50aGVuKCgpID0+IHsKLSAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJzLmV2ZW50
c1dpdGhvdXRQdWxscywgW10pOwotICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBb
XSk7Ci0gIH0pOwotCi19LCAnRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogYmVj
b21lcyBlcnJvcmVkIGFmdGVyIHBpcGluZzsgcHJldmVudENhbmNlbCA9IHRydWUnKTsKLQotcHJv
bWlzZV90ZXN0KHQgPT4gewotCi0gIGNvbnN0IHJzID0gcmVjb3JkaW5nUmVhZGFibGVTdHJlYW0o
ewotICAgIHN0YXJ0KGNvbnRyb2xsZXIpIHsKLSAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYScp
OwotICAgICAgY29udHJvbGxlci5lbnF1ZXVlKCdiJyk7Ci0gICAgICBjb250cm9sbGVyLmVucXVl
dWUoJ2MnKTsKLSAgICAgIGNvbnRyb2xsZXIuY2xvc2UoKTsKLSAgICB9Ci0gIH0pOwotCi0gIGNv
bnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0oewotICAgIHdyaXRlKGNodW5rKSB7Ci0g
ICAgICBpZiAoY2h1bmsgPT09ICdjJykgewotICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3Qo
ZXJyb3IxKTsKLSAgICAgIH0KLSAgICAgIHJldHVybiB1bmRlZmluZWQ7Ci0gICAgfQotICB9KTsK
LQotICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHQsIGVycm9yMSwgcnMucGlwZVRvKHdzKSwgJ3Bp
cGVUbyBtdXN0IHJlamVjdCB3aXRoIHRoZSBzYW1lIGVycm9yJykudGhlbigoKSA9PiB7Ci0gICAg
YXNzZXJ0X2FycmF5X2VxdWFscyhycy5ldmVudHNXaXRob3V0UHVsbHMsIFtdKTsKLSAgICBhc3Nl
cnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWyd3cml0ZScsICdhJywgJ3dyaXRlJywgJ2InLCAn
d3JpdGUnLCAnYyddKTsKLSAgfSk7Ci0KLX0sICdFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJh
Y2t3YXJkOiBiZWNvbWVzIGVycm9yZWQgYWZ0ZXIgcGlwaW5nIGR1ZSB0byBsYXN0IHdyaXRlOyBz
b3VyY2UgaXMgY2xvc2VkOyAnICsKLSAgICdwcmV2ZW50Q2FuY2VsIG9taXR0ZWQgKGJ1dCBjYW5j
ZWwgaXMgbmV2ZXIgY2FsbGVkKScpOwotCi1wcm9taXNlX3Rlc3QodCA9PiB7Ci0KLSAgY29uc3Qg
cnMgPSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoY29udHJvbGxlcikgewot
ICAgICAgY29udHJvbGxlci5lbnF1ZXVlKCdhJyk7Ci0gICAgICBjb250cm9sbGVyLmVucXVldWUo
J2InKTsKLSAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYycpOwotICAgICAgY29udHJvbGxlci5j
bG9zZSgpOwotICAgIH0KLSAgfSk7Ci0KLSAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0
cmVhbSh7Ci0gICAgd3JpdGUoY2h1bmspIHsKLSAgICAgIGlmIChjaHVuayA9PT0gJ2MnKSB7Ci0g
ICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcjEpOwotICAgICAgfQotICAgICAgcmV0
dXJuIHVuZGVmaW5lZDsKLSAgICB9Ci0gIH0pOwotCi0gIHJldHVybiBwcm9taXNlX3JlamVjdHMo
dCwgZXJyb3IxLCBycy5waXBlVG8od3MsIHsgcHJldmVudENhbmNlbDogdHJ1ZSB9KSwgJ3BpcGVU
byBtdXN0IHJlamVjdCB3aXRoIHRoZSBzYW1lIGVycm9yJykKLSAgICAudGhlbigoKSA9PiB7Ci0g
ICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJzLmV2ZW50c1dpdGhvdXRQdWxscywgW10pOwotICAg
ICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsnd3JpdGUnLCAnYScsICd3cml0ZScs
ICdiJywgJ3dyaXRlJywgJ2MnXSk7Ci0gICAgfSk7Ci0KLX0sICdFcnJvcnMgbXVzdCBiZSBwcm9w
YWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVycm9yZWQgYWZ0ZXIgcGlwaW5nIGR1ZSB0byBsYXN0
IHdyaXRlOyBzb3VyY2UgaXMgY2xvc2VkOyAnICsKLSAgICdwcmV2ZW50Q2FuY2VsID0gdHJ1ZScp
OwotCi1wcm9taXNlX3Rlc3QodCA9PiB7Ci0KLSAgY29uc3QgcnMgPSByZWNvcmRpbmdSZWFkYWJs
ZVN0cmVhbSgpOwotCi0gIGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0odW5kZWZp
bmVkLCBuZXcgQ291bnRRdWV1aW5nU3RyYXRlZ3koeyBoaWdoV2F0ZXJNYXJrOiAwIH0pKTsKLQot
ICBjb25zdCBwaXBlUHJvbWlzZSA9IHByb21pc2VfcmVqZWN0cyh0LCBlcnJvcjEsIHJzLnBpcGVU
byh3cyksICdwaXBlVG8gbXVzdCByZWplY3Qgd2l0aCB0aGUgc2FtZSBlcnJvcicpOwotCi0gIHNl
dFRpbWVvdXQoKCkgPT4gd3MuY29udHJvbGxlci5lcnJvcihlcnJvcjEpLCAxMCk7Ci0KLSAgcmV0
dXJuIHBpcGVQcm9taXNlLnRoZW4oKCkgPT4gewotICAgIGFzc2VydF9hcnJheV9lcXVhbHMocnMu
ZXZlbnRzV2l0aG91dFB1bGxzLCBbJ2NhbmNlbCcsIGVycm9yMV0pOwotICAgIGFzc2VydF9hcnJh
eV9lcXVhbHMod3MuZXZlbnRzLCBbXSk7Ci0gIH0pOwotCi19LCAnRXJyb3JzIG11c3QgYmUgcHJv
cGFnYXRlZCBiYWNrd2FyZDogYmVjb21lcyBlcnJvcmVkIGFmdGVyIHBpcGluZzsgZGVzdCBuZXZl
ciBkZXNpcmVzIGNodW5rczsgcHJldmVudENhbmNlbCA9ICcgKwotICAgJ2ZhbHNlOyBmdWxmaWxs
ZWQgY2FuY2VsIHByb21pc2UnKTsKLQotcHJvbWlzZV90ZXN0KHQgPT4gewotCi0gIGNvbnN0IHJz
ID0gcmVjb3JkaW5nUmVhZGFibGVTdHJlYW0oewotICAgIGNhbmNlbCgpIHsKLSAgICAgIHRocm93
IGVycm9yMjsKLSAgICB9Ci0gIH0pOwotCi0gIGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVT
dHJlYW0odW5kZWZpbmVkLCBuZXcgQ291bnRRdWV1aW5nU3RyYXRlZ3koeyBoaWdoV2F0ZXJNYXJr
OiAwIH0pKTsKLQotICBjb25zdCBwaXBlUHJvbWlzZSA9IHByb21pc2VfcmVqZWN0cyh0LCBlcnJv
cjIsIHJzLnBpcGVUbyh3cyksICdwaXBlVG8gbXVzdCByZWplY3Qgd2l0aCB0aGUgY2FuY2VsIGVy
cm9yJyk7Ci0KLSAgc2V0VGltZW91dCgoKSA9PiB3cy5jb250cm9sbGVyLmVycm9yKGVycm9yMSks
IDEwKTsKLQotICByZXR1cm4gcGlwZVByb21pc2UudGhlbigoKSA9PiB7Ci0gICAgYXNzZXJ0X2Fy
cmF5X2VxdWFscyhycy5ldmVudHNXaXRob3V0UHVsbHMsIFsnY2FuY2VsJywgZXJyb3IxXSk7Ci0g
ICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFtdKTsKLSAgfSk7Ci0KLX0sICdFcnJv
cnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVycm9yZWQgYWZ0ZXIgcGlw
aW5nOyBkZXN0IG5ldmVyIGRlc2lyZXMgY2h1bmtzOyBwcmV2ZW50Q2FuY2VsID0gJyArCi0gICAn
ZmFsc2U7IHJlamVjdGVkIGNhbmNlbCBwcm9taXNlJyk7Ci0KLXByb21pc2VfdGVzdCh0ID0+IHsK
LQotICBjb25zdCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKCk7Ci0KLSAgY29uc3Qgd3Mg
PSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSh1bmRlZmluZWQsIG5ldyBDb3VudFF1ZXVpbmdTdHJh
dGVneSh7IGhpZ2hXYXRlck1hcms6IDAgfSkpOwotCi0gIGNvbnN0IHBpcGVQcm9taXNlID0gcHJv
bWlzZV9yZWplY3RzKHQsIGVycm9yMSwgcnMucGlwZVRvKHdzLCB7IHByZXZlbnRDYW5jZWw6IHRy
dWUgfSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwaXBlVG8gbXVz
dCByZWplY3Qgd2l0aCB0aGUgc2FtZSBlcnJvcicpOwotCi0gIHNldFRpbWVvdXQoKCkgPT4gd3Mu
Y29udHJvbGxlci5lcnJvcihlcnJvcjEpLCAxMCk7Ci0KLSAgcmV0dXJuIHBpcGVQcm9taXNlLnRo
ZW4oKCkgPT4gewotICAgIGFzc2VydF9hcnJheV9lcXVhbHMocnMuZXZlbnRzV2l0aG91dFB1bGxz
LCBbXSk7Ci0gICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFtdKTsKLSAgfSk7Ci0K
LX0sICdFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVycm9yZWQg
YWZ0ZXIgcGlwaW5nOyBkZXN0IG5ldmVyIGRlc2lyZXMgY2h1bmtzOyBwcmV2ZW50Q2FuY2VsID0g
JyArCi0gICAndHJ1ZScpOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotCi0gIGNvbnN0IHJzID0g
cmVjb3JkaW5nUmVhZGFibGVTdHJlYW0oKTsKLQotICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRh
YmxlU3RyZWFtKCk7Ci0KLSAgd3MuYWJvcnQoZXJyb3IxKTsKLQotICByZXR1cm4gcnMucGlwZVRv
KHdzKS50aGVuKAotICAgICgpID0+IGFzc2VydF91bnJlYWNoZWQoJ3RoZSBwcm9taXNlIG11c3Qg
bm90IGZ1bGZpbGwnKSwKLSAgICBlcnIgPT4gewotICAgICAgYXNzZXJ0X2VxdWFscyhlcnIsIGVy
cm9yMSwgJ3RoZSBwcm9taXNlIG11c3QgcmVqZWN0IHdpdGggZXJyb3IxJyk7Ci0KLSAgICAgIGFz
c2VydF9hcnJheV9lcXVhbHMocnMuZXZlbnRzV2l0aG91dFB1bGxzLCBbJ2NhbmNlbCcsIGVycl0p
OwotICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsnYWJvcnQnLCBlcnJvcjFd
KTsKLSAgICB9Ci0gICk7Ci0KLX0sICdFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJk
OiBiZWNvbWVzIGVycm9yZWQgYmVmb3JlIHBpcGluZyB2aWEgYWJvcnQ7IHByZXZlbnRDYW5jZWwg
b21pdHRlZDsgZnVsZmlsbGVkICcgKwotICAgJ2NhbmNlbCBwcm9taXNlJyk7Ci0KLXByb21pc2Vf
dGVzdCh0ID0+IHsKLQotICBjb25zdCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKHsKLSAg
ICBjYW5jZWwoKSB7Ci0gICAgICB0aHJvdyBlcnJvcjI7Ci0gICAgfQotICB9KTsKLQotICBjb25z
dCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKCk7Ci0KLSAgd3MuYWJvcnQoZXJyb3IxKTsK
LQotICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHQsIGVycm9yMiwgcnMucGlwZVRvKHdzKSwgJ3Bp
cGVUbyBtdXN0IHJlamVjdCB3aXRoIHRoZSBjYW5jZWwgZXJyb3InKQotICAgIC50aGVuKCgpID0+
IHsKLSAgICAgIHJldHVybiB3cy5nZXRXcml0ZXIoKS5jbG9zZWQudGhlbigKLSAgICAgICAgKCkg
PT4gYXNzZXJ0X3VucmVhY2hlZCgndGhlIHByb21pc2UgbXVzdCBub3QgZnVsZmlsbCcpLAotICAg
ICAgICBlcnIgPT4gewotICAgICAgICAgIGFzc2VydF9lcXVhbHMoZXJyLCBlcnJvcjEsICd0aGUg
cHJvbWlzZSBtdXN0IHJlamVjdCB3aXRoIGVycm9yMScpOwotCi0gICAgICAgICAgYXNzZXJ0X2Fy
cmF5X2VxdWFscyhycy5ldmVudHNXaXRob3V0UHVsbHMsIFsnY2FuY2VsJywgZXJyXSk7Ci0gICAg
ICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsnYWJvcnQnLCBlcnJvcjFdKTsK
LSAgICAgICAgfQotICAgICAgKTsKLSAgICB9KTsKLQotfSwgJ0Vycm9ycyBtdXN0IGJlIHByb3Bh
Z2F0ZWQgYmFja3dhcmQ6IGJlY29tZXMgZXJyb3JlZCBiZWZvcmUgcGlwaW5nIHZpYSBhYm9ydDsg
cHJldmVudENhbmNlbCBvbWl0dGVkOyByZWplY3RlZCAnICsKLSAgICdjYW5jZWwgcHJvbWlzZScp
OwotCi1wcm9taXNlX3Rlc3QodCA9PiB7Ci0KLSAgY29uc3QgcnMgPSByZWNvcmRpbmdSZWFkYWJs
ZVN0cmVhbSgpOwotCi0gIGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0oKTsKLQot
ICB3cy5hYm9ydChlcnJvcjEpOwotCi0gIHJldHVybiBwcm9taXNlX3JlamVjdHModCwgZXJyb3Ix
LCBycy5waXBlVG8od3MsIHsgcHJldmVudENhbmNlbDogdHJ1ZSB9KSkudGhlbigoKSA9PiB7Ci0g
ICAgYXNzZXJ0X2FycmF5X2VxdWFscyhycy5ldmVudHNXaXRob3V0UHVsbHMsIFtdKTsKLSAgICBh
c3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWydhYm9ydCcsIGVycm9yMV0pOwotICB9KTsK
LQotfSwgJ0Vycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGJlY29tZXMgZXJyb3Jl
ZCBiZWZvcmUgcGlwaW5nIHZpYSBhYm9ydDsgcHJldmVudENhbmNlbCA9IHRydWUnKTsKLQotcHJv
bWlzZV90ZXN0KHQgPT4gewotCi0gIGNvbnN0IHJzID0gcmVjb3JkaW5nUmVhZGFibGVTdHJlYW0o
KTsKLQotICBsZXQgcmVzb2x2ZVdyaXRlQ2FsbGVkOwotICBjb25zdCB3cml0ZUNhbGxlZFByb21p
c2UgPSBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKLSAgICByZXNvbHZlV3JpdGVDYWxsZWQgPSBy
ZXNvbHZlOwotICB9KTsKLQotICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKHsK
LSAgICB3cml0ZSgpIHsKLSAgICAgIHJlc29sdmVXcml0ZUNhbGxlZCgpOwotICAgICAgcmV0dXJu
IGZsdXNoQXN5bmNFdmVudHMoKTsKLSAgICB9Ci0gIH0pOwotCi0gIGNvbnN0IHBpcGVQcm9taXNl
ID0gcnMucGlwZVRvKHdzKTsKLQotICBycy5jb250cm9sbGVyLmVucXVldWUoJ2EnKTsKLQotICBy
ZXR1cm4gd3JpdGVDYWxsZWRQcm9taXNlLnRoZW4oKCkgPT4gewotICAgIHdzLmNvbnRyb2xsZXIu
ZXJyb3IoZXJyb3IxKTsKLQotICAgIHJldHVybiBwcm9taXNlX3JlamVjdHModCwgZXJyb3IxLCBw
aXBlUHJvbWlzZSk7Ci0gIH0pLnRoZW4oKCkgPT4gewotICAgIGFzc2VydF9hcnJheV9lcXVhbHMo
cnMuZXZlbnRzV2l0aG91dFB1bGxzLCBbJ2NhbmNlbCcsIGVycm9yMV0pOwotICAgIGFzc2VydF9h
cnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ3dyaXRlJywgJ2EnXSk7Ci0gIH0pOwotCi19LCAnRXJy
b3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogZXJyb3JpbmcgdmlhIHRoZSBjb250cm9s
bGVyIGVycm9ycyBvbmNlIHBlbmRpbmcgd3JpdGUgY29tcGxldGVzJyk7Ci0KLWRvbmUoKTsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy9waXBpbmcvZXJyb3ItcHJvcGFnYXRpb24tYmFja3dhcmQuc2VydmljZXdvcmtlci5odHRw
cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3N0cmVhbXMvcGlwaW5nL2Vycm9yLXByb3BhZ2F0aW9uLWJhY2t3YXJkLnNlcnZpY2V3b3Jr
ZXIuaHR0cHMtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNDk5
OGEwZmQ3YTBhZWRiMDM0NzAyYjg1OTI0NTcyYjFmZWFkYWVmLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvZXJyb3ItcHJvcGFnYXRpb24tYmFja3dhcmQu
c2VydmljZXdvcmtlci5odHRwcy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwzOCAr
MCwwIEBACi0KLVBBU1MgU2VydmljZSB3b3JrZXIgdGVzdCBzZXR1cCAKLUZBSUwgRXJyb3JzIG11
c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogc3RhcnRzIGVycm9yZWQ7IHByZXZlbnRDYW5jZWwg
b21pdHRlZDsgZnVsZmlsbGVkIGNhbmNlbCBwcm9taXNlIENhbid0IGZpbmQgdmFyaWFibGU6IFdy
aXRhYmxlU3RyZWFtCi1GQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGJl
Y29tZXMgZXJyb3JlZCBiZWZvcmUgcGlwaW5nIGR1ZSB0byB3cml0ZTsgcHJldmVudENhbmNlbCBv
bWl0dGVkOyBmdWxmaWxsZWQgY2FuY2VsIHByb21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3Jp
dGFibGVTdHJlYW0KLUZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogYmVj
b21lcyBlcnJvcmVkIGJlZm9yZSBwaXBpbmcgZHVlIHRvIHdyaXRlOyBwcmV2ZW50Q2FuY2VsIG9t
aXR0ZWQ7IHJlamVjdGVkIGNhbmNlbCBwcm9taXNlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRh
YmxlU3RyZWFtCi1GQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGJlY29t
ZXMgZXJyb3JlZCBiZWZvcmUgcGlwaW5nIGR1ZSB0byB3cml0ZTsgcHJldmVudENhbmNlbCA9IHVu
ZGVmaW5lZCAoZmFsc3kpOyBmdWxmaWxsZWQgY2FuY2VsIHByb21pc2UgQ2FuJ3QgZmluZCB2YXJp
YWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNr
d2FyZDogYmVjb21lcyBlcnJvcmVkIGJlZm9yZSBwaXBpbmcgZHVlIHRvIHdyaXRlOyBwcmV2ZW50
Q2FuY2VsID0gbnVsbCAoZmFsc3kpOyBmdWxmaWxsZWQgY2FuY2VsIHByb21pc2UgQ2FuJ3QgZmlu
ZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRl
ZCBiYWNrd2FyZDogYmVjb21lcyBlcnJvcmVkIGJlZm9yZSBwaXBpbmcgZHVlIHRvIHdyaXRlOyBw
cmV2ZW50Q2FuY2VsID0gZmFsc2UgKGZhbHN5KTsgZnVsZmlsbGVkIGNhbmNlbCBwcm9taXNlIENh
bid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIEVycm9ycyBtdXN0IGJlIHBy
b3BhZ2F0ZWQgYmFja3dhcmQ6IGJlY29tZXMgZXJyb3JlZCBiZWZvcmUgcGlwaW5nIGR1ZSB0byB3
cml0ZTsgcHJldmVudENhbmNlbCA9IDAgKGZhbHN5KTsgZnVsZmlsbGVkIGNhbmNlbCBwcm9taXNl
IENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIEVycm9ycyBtdXN0IGJl
IHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGJlY29tZXMgZXJyb3JlZCBiZWZvcmUgcGlwaW5nIGR1ZSB0
byB3cml0ZTsgcHJldmVudENhbmNlbCA9IC0wIChmYWxzeSk7IGZ1bGZpbGxlZCBjYW5jZWwgcHJv
bWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBFcnJvcnMgbXVz
dCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVycm9yZWQgYmVmb3JlIHBpcGluZyBk
dWUgdG8gd3JpdGU7IHByZXZlbnRDYW5jZWwgPSBOYU4gKGZhbHN5KTsgZnVsZmlsbGVkIGNhbmNl
bCBwcm9taXNlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIEVycm9y
cyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGJlY29tZXMgZXJyb3JlZCBiZWZvcmUgcGlw
aW5nIGR1ZSB0byB3cml0ZTsgcHJldmVudENhbmNlbCA9ICAoZmFsc3kpOyBmdWxmaWxsZWQgY2Fu
Y2VsIHByb21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgRXJy
b3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogYmVjb21lcyBlcnJvcmVkIGJlZm9yZSBw
aXBpbmcgZHVlIHRvIHdyaXRlOyBwcmV2ZW50Q2FuY2VsID0gdHJ1ZSAodHJ1dGh5KSBDYW4ndCBm
aW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdh
dGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVycm9yZWQgYmVmb3JlIHBpcGluZyBkdWUgdG8gd3JpdGU7
IHByZXZlbnRDYW5jZWwgPSBhICh0cnV0aHkpIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxl
U3RyZWFtCi1GQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGJlY29tZXMg
ZXJyb3JlZCBiZWZvcmUgcGlwaW5nIGR1ZSB0byB3cml0ZTsgcHJldmVudENhbmNlbCA9IDEgKHRy
dXRoeSkgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgRXJyb3JzIG11
c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogYmVjb21lcyBlcnJvcmVkIGJlZm9yZSBwaXBpbmcg
ZHVlIHRvIHdyaXRlOyBwcmV2ZW50Q2FuY2VsID0gU3ltYm9sKCkgKHRydXRoeSkgQ2FuJ3QgZmlu
ZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRl
ZCBiYWNrd2FyZDogYmVjb21lcyBlcnJvcmVkIGJlZm9yZSBwaXBpbmcgZHVlIHRvIHdyaXRlOyBw
cmV2ZW50Q2FuY2VsID0gW29iamVjdCBPYmplY3RdICh0cnV0aHkpIENhbid0IGZpbmQgdmFyaWFi
bGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dh
cmQ6IGJlY29tZXMgZXJyb3JlZCBiZWZvcmUgcGlwaW5nIGR1ZSB0byB3cml0ZSwgcHJldmVudENh
bmNlbCA9IHRydWU7IHByZXZlbnRBYm9ydCA9IHRydWUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3Jp
dGFibGVTdHJlYW0KLUZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogYmVj
b21lcyBlcnJvcmVkIGJlZm9yZSBwaXBpbmcgZHVlIHRvIHdyaXRlOyBwcmV2ZW50Q2FuY2VsID0g
dHJ1ZSwgcHJldmVudEFib3J0ID0gdHJ1ZSwgcHJldmVudENsb3NlID0gdHJ1ZSBDYW4ndCBmaW5k
IHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVk
IGJhY2t3YXJkOiBiZWNvbWVzIGVycm9yZWQgZHVyaW5nIHBpcGluZyBkdWUgdG8gd3JpdGU7IHBy
ZXZlbnRDYW5jZWwgb21pdHRlZDsgZnVsZmlsbGVkIGNhbmNlbCBwcm9taXNlIENhbid0IGZpbmQg
dmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQg
YmFja3dhcmQ6IGJlY29tZXMgZXJyb3JlZCBkdXJpbmcgcGlwaW5nIGR1ZSB0byB3cml0ZTsgcHJl
dmVudENhbmNlbCBvbWl0dGVkOyByZWplY3RlZCBjYW5jZWwgcHJvbWlzZSBDYW4ndCBmaW5kIHZh
cmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJh
Y2t3YXJkOiBiZWNvbWVzIGVycm9yZWQgZHVyaW5nIHBpcGluZyBkdWUgdG8gd3JpdGU7IHByZXZl
bnRDYW5jZWwgPSB0cnVlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlM
IEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGJlY29tZXMgZXJyb3JlZCBkdXJp
bmcgcGlwaW5nIGR1ZSB0byB3cml0ZSwgYnV0IGFzeW5jOyBwcmV2ZW50Q2FuY2VsID0gZmFsc2U7
IGZ1bGZpbGxlZCBjYW5jZWwgcHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0
cmVhbQotRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVy
cm9yZWQgZHVyaW5nIHBpcGluZyBkdWUgdG8gd3JpdGUsIGJ1dCBhc3luYzsgcHJldmVudENhbmNl
bCA9IGZhbHNlOyByZWplY3RlZCBjYW5jZWwgcHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBX
cml0YWJsZVN0cmVhbQotRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBi
ZWNvbWVzIGVycm9yZWQgZHVyaW5nIHBpcGluZyBkdWUgdG8gd3JpdGUsIGJ1dCBhc3luYzsgcHJl
dmVudENhbmNlbCA9IHRydWUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZB
SUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogYmVjb21lcyBlcnJvcmVkIGFm
dGVyIHBpcGluZzsgcHJldmVudENhbmNlbCBvbWl0dGVkOyBmdWxmaWxsZWQgY2FuY2VsIHByb21p
c2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgRXJyb3JzIG11c3Qg
YmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogYmVjb21lcyBlcnJvcmVkIGFmdGVyIHBpcGluZzsgcHJl
dmVudENhbmNlbCBvbWl0dGVkOyByZWplY3RlZCBjYW5jZWwgcHJvbWlzZSBDYW4ndCBmaW5kIHZh
cmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJh
Y2t3YXJkOiBiZWNvbWVzIGVycm9yZWQgYWZ0ZXIgcGlwaW5nOyBwcmV2ZW50Q2FuY2VsID0gdHJ1
ZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBFcnJvcnMgbXVzdCBi
ZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVycm9yZWQgYWZ0ZXIgcGlwaW5nIGR1ZSB0
byBsYXN0IHdyaXRlOyBzb3VyY2UgaXMgY2xvc2VkOyBwcmV2ZW50Q2FuY2VsIG9taXR0ZWQgKGJ1
dCBjYW5jZWwgaXMgbmV2ZXIgY2FsbGVkKSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0
cmVhbQotRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVy
cm9yZWQgYWZ0ZXIgcGlwaW5nIGR1ZSB0byBsYXN0IHdyaXRlOyBzb3VyY2UgaXMgY2xvc2VkOyBw
cmV2ZW50Q2FuY2VsID0gdHJ1ZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQot
RkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBiZWNvbWVzIGVycm9yZWQg
YWZ0ZXIgcGlwaW5nOyBkZXN0IG5ldmVyIGRlc2lyZXMgY2h1bmtzOyBwcmV2ZW50Q2FuY2VsID0g
ZmFsc2U7IGZ1bGZpbGxlZCBjYW5jZWwgcHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0
YWJsZVN0cmVhbQotRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGJhY2t3YXJkOiBiZWNv
bWVzIGVycm9yZWQgYWZ0ZXIgcGlwaW5nOyBkZXN0IG5ldmVyIGRlc2lyZXMgY2h1bmtzOyBwcmV2
ZW50Q2FuY2VsID0gZmFsc2U7IHJlamVjdGVkIGNhbmNlbCBwcm9taXNlIENhbid0IGZpbmQgdmFy
aWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFj
a3dhcmQ6IGJlY29tZXMgZXJyb3JlZCBhZnRlciBwaXBpbmc7IGRlc3QgbmV2ZXIgZGVzaXJlcyBj
aHVua3M7IHByZXZlbnRDYW5jZWwgPSB0cnVlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxl
U3RyZWFtCi1GQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGJlY29tZXMg
ZXJyb3JlZCBiZWZvcmUgcGlwaW5nIHZpYSBhYm9ydDsgcHJldmVudENhbmNlbCBvbWl0dGVkOyBm
dWxmaWxsZWQgY2FuY2VsIHByb21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJl
YW0KLUZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrd2FyZDogYmVjb21lcyBlcnJv
cmVkIGJlZm9yZSBwaXBpbmcgdmlhIGFib3J0OyBwcmV2ZW50Q2FuY2VsIG9taXR0ZWQ7IHJlamVj
dGVkIGNhbmNlbCBwcm9taXNlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1G
QUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgYmFja3dhcmQ6IGJlY29tZXMgZXJyb3JlZCBi
ZWZvcmUgcGlwaW5nIHZpYSBhYm9ydDsgcHJldmVudENhbmNlbCA9IHRydWUgQ2FuJ3QgZmluZCB2
YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBi
YWNrd2FyZDogZXJyb3JpbmcgdmlhIHRoZSBjb250cm9sbGVyIGVycm9ycyBvbmNlIHBlbmRpbmcg
d3JpdGUgY29tcGxldGVzIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi0KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy9waXBpbmcvZXJyb3ItcHJvcGFnYXRpb24tYmFja3dhcmQuc2VydmljZXdvcmtlci5odHRw
cy5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJl
YW1zL3BpcGluZy9lcnJvci1wcm9wYWdhdGlvbi1iYWNrd2FyZC5zZXJ2aWNld29ya2VyLmh0dHBz
Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZjZDA0YmExZDM1ZjM3NjY0M2Y4
NGQ4Y2FkODdlNDVmZmY0ZDA0ZWQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
dHJlYW1zL3BpcGluZy9lcnJvci1wcm9wYWdhdGlvbi1iYWNrd2FyZC5zZXJ2aWNld29ya2VyLmh0
dHBzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4K
LTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTx0aXRsZT5lcnJvci1wcm9wYWdhdGlvbi1iYWNrd2Fy
ZC5qcyBzZXJ2aWNlIHdvcmtlciB3cmFwcGVyIGZpbGU8L3RpdGxlPgotCi08c2NyaXB0IHNyYz0i
L3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3Jlc291
cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3NlcnZp
Y2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9yZXNvdXJjZXMvdGVzdC1oZWxwZXJzLnN1Yi5qcyI+
PC9zY3JpcHQ+Ci0KLTxzY3JpcHQ+Ci0ndXNlIHN0cmljdCc7Ci1zZXJ2aWNlX3dvcmtlcl90ZXN0
KCdlcnJvci1wcm9wYWdhdGlvbi1iYWNrd2FyZC5qcycsICdTZXJ2aWNlIHdvcmtlciB0ZXN0IHNl
dHVwJyk7Ci08L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvZXJyb3ItcHJvcGFnYXRpb24tYmFja3dh
cmQuc2hhcmVkd29ya2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvZXJyb3ItcHJvcGFnYXRpb24tYmFja3dh
cmQuc2hhcmVkd29ya2VyLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDlkNWQyNTA5ZDc4NDdlOGNkNmZlNjYwNmFhNjBjZGQzM2FhNDc0ZS4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Vycm9yLXByb3BhZ2F0aW9uLWJh
Y2t3YXJkLnNoYXJlZHdvcmtlci1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw1ICsw
LDAgQEAKLUNPTlNPTEUgTUVTU0FHRTogUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFi
bGU6IFNoYXJlZFdvcmtlcgotCi1IYXJuZXNzIEVycm9yIChGQUlMKSwgbWVzc2FnZSA9IFJlZmVy
ZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBTaGFyZWRXb3JrZXIKLQotCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
cGlwaW5nL2Vycm9yLXByb3BhZ2F0aW9uLWJhY2t3YXJkLnNoYXJlZHdvcmtlci5odG1sIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9l
cnJvci1wcm9wYWdhdGlvbi1iYWNrd2FyZC5zaGFyZWR3b3JrZXIuaHRtbApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggN2VhNjI2MjdkYzFhYWIwMjRlNWViMzlhNTU2Y2FjOGI4NzgzM2Mw
My4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Vycm9y
LXByb3BhZ2F0aW9uLWJhY2t3YXJkLnNoYXJlZHdvcmtlci5odG1sCisrKyAvZGV2L251bGwKQEAg
LTEsMTEgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08
dGl0bGU+ZXJyb3ItcHJvcGFnYXRpb24tYmFja3dhcmQuanMgc2hhcmVkIHdvcmtlciB3cmFwcGVy
IGZpbGU8L3RpdGxlPgotCi08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+
PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+
PC9zY3JpcHQ+Ci0KLTxzY3JpcHQ+Ci0ndXNlIHN0cmljdCc7Ci1mZXRjaF90ZXN0c19mcm9tX3dv
cmtlcihuZXcgU2hhcmVkV29ya2VyKCdlcnJvci1wcm9wYWdhdGlvbi1iYWNrd2FyZC5qcycpKTsK
LTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9lcnJvci1wcm9wYWdhdGlvbi1mb3J3YXJkLmFueS1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMvcGlwaW5nL2Vycm9yLXByb3BhZ2F0aW9uLWZvcndhcmQuYW55LWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4wYTUxZDRmNmJjNjZiMjZiNjk5MGYzMDM5YjhlZmI5ZGYyMzEzOWEyCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL3BpcGluZy9lcnJvci1wcm9wYWdhdGlvbi1mb3J3YXJkLmFueS1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSw5NSBAQAorQ09OU09MRSBNRVNTQUdFOiBVbmhhbmRsZWQgUHJvbWlz
ZSBSZWplY3Rpb246IGVycm9yMTogZXJyb3IxIQorQ09OU09MRSBNRVNTQUdFOiBVbmhhbmRsZWQg
UHJvbWlzZSBSZWplY3Rpb246IFR5cGVFcnJvcjogY2FuY2VsKCkgY2FsbGVkIG9uIGEgcmVhZGVy
IG93bmVkIGJ5IG5vIHJlYWRhYmxlIHN0cmVhbQorQ09OU09MRSBNRVNTQUdFOiBVbmhhbmRsZWQg
UHJvbWlzZSBSZWplY3Rpb246IGVycm9yMTogZXJyb3IxIQorQ09OU09MRSBNRVNTQUdFOiBVbmhh
bmRsZWQgUHJvbWlzZSBSZWplY3Rpb246IFR5cGVFcnJvcjogY2FuY2VsKCkgY2FsbGVkIG9uIGEg
cmVhZGVyIG93bmVkIGJ5IG5vIHJlYWRhYmxlIHN0cmVhbQorQ09OU09MRSBNRVNTQUdFOiBVbmhh
bmRsZWQgUHJvbWlzZSBSZWplY3Rpb246IGVycm9yMjogZXJyb3IyIQorQ09OU09MRSBNRVNTQUdF
OiBVbmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rpb246IGVycm9yMTogZXJyb3IxIQorQ09OU09MRSBN
RVNTQUdFOiBVbmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rpb246IFR5cGVFcnJvcjogY2FuY2VsKCkg
Y2FsbGVkIG9uIGEgcmVhZGVyIG93bmVkIGJ5IG5vIHJlYWRhYmxlIHN0cmVhbQorQ09OU09MRSBN
RVNTQUdFOiBVbmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rpb246IGVycm9yMTogZXJyb3IxIQorQ09O
U09MRSBNRVNTQUdFOiBVbmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rpb246IFR5cGVFcnJvcjogY2Fu
Y2VsKCkgY2FsbGVkIG9uIGEgcmVhZGVyIG93bmVkIGJ5IG5vIHJlYWRhYmxlIHN0cmVhbQorQ09O
U09MRSBNRVNTQUdFOiBVbmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rpb246IGVycm9yMTogZXJyb3Ix
IQorQ09OU09MRSBNRVNTQUdFOiBVbmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rpb246IFR5cGVFcnJv
cjogY2FuY2VsKCkgY2FsbGVkIG9uIGEgcmVhZGVyIG93bmVkIGJ5IG5vIHJlYWRhYmxlIHN0cmVh
bQorQ09OU09MRSBNRVNTQUdFOiBVbmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rpb246IGVycm9yMTog
ZXJyb3IxIQorQ09OU09MRSBNRVNTQUdFOiBVbmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rpb246IFR5
cGVFcnJvcjogY2FuY2VsKCkgY2FsbGVkIG9uIGEgcmVhZGVyIG93bmVkIGJ5IG5vIHJlYWRhYmxl
IHN0cmVhbQorQ09OU09MRSBNRVNTQUdFOiBVbmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rpb246IGVy
cm9yMTogZXJyb3IxIQorQ09OU09MRSBNRVNTQUdFOiBVbmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rp
b246IFR5cGVFcnJvcjogY2FuY2VsKCkgY2FsbGVkIG9uIGEgcmVhZGVyIG93bmVkIGJ5IG5vIHJl
YWRhYmxlIHN0cmVhbQorQ09OU09MRSBNRVNTQUdFOiBVbmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rp
b246IGVycm9yMTogZXJyb3IxIQorQ09OU09MRSBNRVNTQUdFOiBVbmhhbmRsZWQgUHJvbWlzZSBS
ZWplY3Rpb246IFR5cGVFcnJvcjogY2FuY2VsKCkgY2FsbGVkIG9uIGEgcmVhZGVyIG93bmVkIGJ5
IG5vIHJlYWRhYmxlIHN0cmVhbQorQ09OU09MRSBNRVNTQUdFOiBVbmhhbmRsZWQgUHJvbWlzZSBS
ZWplY3Rpb246IGVycm9yMTogZXJyb3IxIQorQ09OU09MRSBNRVNTQUdFOiBVbmhhbmRsZWQgUHJv
bWlzZSBSZWplY3Rpb246IFR5cGVFcnJvcjogY2FuY2VsKCkgY2FsbGVkIG9uIGEgcmVhZGVyIG93
bmVkIGJ5IG5vIHJlYWRhYmxlIHN0cmVhbQorQ09OU09MRSBNRVNTQUdFOiBVbmhhbmRsZWQgUHJv
bWlzZSBSZWplY3Rpb246IGVycm9yMTogZXJyb3IxIQorQ09OU09MRSBNRVNTQUdFOiBVbmhhbmRs
ZWQgUHJvbWlzZSBSZWplY3Rpb246IGVycm9yMTogZXJyb3IxIQorQ09OU09MRSBNRVNTQUdFOiBV
bmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rpb246IGVycm9yMTogZXJyb3IxIQorQ09OU09MRSBNRVNT
QUdFOiBVbmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rpb246IGVycm9yMTogZXJyb3IxIQorQ09OU09M
RSBNRVNTQUdFOiBVbmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rpb246IGVycm9yMTogZXJyb3IxIQor
Q09OU09MRSBNRVNTQUdFOiBVbmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rpb246IGVycm9yMTogZXJy
b3IxIQorQ09OU09MRSBNRVNTQUdFOiBVbmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rpb246IGVycm9y
MTogZXJyb3IxIQorQ09OU09MRSBNRVNTQUdFOiBVbmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rpb246
IGVycm9yMTogZXJyb3IxIQorQ09OU09MRSBNRVNTQUdFOiBVbmhhbmRsZWQgUHJvbWlzZSBSZWpl
Y3Rpb246IFR5cGVFcnJvcjogY2FuY2VsKCkgY2FsbGVkIG9uIGEgcmVhZGVyIG93bmVkIGJ5IG5v
IHJlYWRhYmxlIHN0cmVhbQorQ09OU09MRSBNRVNTQUdFOiBVbmhhbmRsZWQgUHJvbWlzZSBSZWpl
Y3Rpb246IGVycm9yMTogZXJyb3IxIQorQ09OU09MRSBNRVNTQUdFOiBVbmhhbmRsZWQgUHJvbWlz
ZSBSZWplY3Rpb246IFR5cGVFcnJvcjogY2FuY2VsKCkgY2FsbGVkIG9uIGEgcmVhZGVyIG93bmVk
IGJ5IG5vIHJlYWRhYmxlIHN0cmVhbQorQ09OU09MRSBNRVNTQUdFOiBVbmhhbmRsZWQgUHJvbWlz
ZSBSZWplY3Rpb246IGVycm9yMjogZXJyb3IyIQorQ09OU09MRSBNRVNTQUdFOiBVbmhhbmRsZWQg
UHJvbWlzZSBSZWplY3Rpb246IGVycm9yMTogZXJyb3IxIQorQ09OU09MRSBNRVNTQUdFOiBVbmhh
bmRsZWQgUHJvbWlzZSBSZWplY3Rpb246IGVycm9yMTogZXJyb3IxIQorQ09OU09MRSBNRVNTQUdF
OiBVbmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rpb246IFR5cGVFcnJvcjogY2FuY2VsKCkgY2FsbGVk
IG9uIGEgcmVhZGVyIG93bmVkIGJ5IG5vIHJlYWRhYmxlIHN0cmVhbQorQ09OU09MRSBNRVNTQUdF
OiBVbmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rpb246IGVycm9yMTogZXJyb3IxIQorQ09OU09MRSBN
RVNTQUdFOiBVbmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rpb246IFR5cGVFcnJvcjogY2FuY2VsKCkg
Y2FsbGVkIG9uIGEgcmVhZGVyIG93bmVkIGJ5IG5vIHJlYWRhYmxlIHN0cmVhbQorQ09OU09MRSBN
RVNTQUdFOiBVbmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rpb246IGVycm9yMjogZXJyb3IyIQorQ09O
U09MRSBNRVNTQUdFOiBVbmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rpb246IGVycm9yMTogZXJyb3Ix
IQorQ09OU09MRSBNRVNTQUdFOiBVbmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rpb246IGVycm9yMTog
ZXJyb3IxIQorQ09OU09MRSBNRVNTQUdFOiBVbmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rpb246IFR5
cGVFcnJvcjogY2FuY2VsKCkgY2FsbGVkIG9uIGEgcmVhZGVyIG93bmVkIGJ5IG5vIHJlYWRhYmxl
IHN0cmVhbQorQ09OU09MRSBNRVNTQUdFOiBVbmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rpb246IGVy
cm9yMTogZXJyb3IxIQorQ09OU09MRSBNRVNTQUdFOiBVbmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rp
b246IFR5cGVFcnJvcjogY2FuY2VsKCkgY2FsbGVkIG9uIGEgcmVhZGVyIG93bmVkIGJ5IG5vIHJl
YWRhYmxlIHN0cmVhbQorQ09OU09MRSBNRVNTQUdFOiBVbmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rp
b246IGVycm9yMjogZXJyb3IyIQorQ09OU09MRSBNRVNTQUdFOiBVbmhhbmRsZWQgUHJvbWlzZSBS
ZWplY3Rpb246IGVycm9yMTogZXJyb3IxIQorQ09OU09MRSBNRVNTQUdFOiBVbmhhbmRsZWQgUHJv
bWlzZSBSZWplY3Rpb246IGVycm9yMTogZXJyb3IxIQorQ09OU09MRSBNRVNTQUdFOiBVbmhhbmRs
ZWQgUHJvbWlzZSBSZWplY3Rpb246IFR5cGVFcnJvcjogY2FuY2VsKCkgY2FsbGVkIG9uIGEgcmVh
ZGVyIG93bmVkIGJ5IG5vIHJlYWRhYmxlIHN0cmVhbQorQ09OU09MRSBNRVNTQUdFOiBVbmhhbmRs
ZWQgUHJvbWlzZSBSZWplY3Rpb246IGVycm9yMTogZXJyb3IxIQorQ09OU09MRSBNRVNTQUdFOiBV
bmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rpb246IFR5cGVFcnJvcjogY2FuY2VsKCkgY2FsbGVkIG9u
IGEgcmVhZGVyIG93bmVkIGJ5IG5vIHJlYWRhYmxlIHN0cmVhbQorQ09OU09MRSBNRVNTQUdFOiBV
bmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rpb246IGVycm9yMjogZXJyb3IyIQorQ09OU09MRSBNRVNT
QUdFOiBVbmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rpb246IGVycm9yMTogZXJyb3IxIQorQ09OU09M
RSBNRVNTQUdFOiBVbmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rpb246IGVycm9yMTogZXJyb3IxIQor
Q09OU09MRSBNRVNTQUdFOiBVbmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rpb246IGVycm9yMTogZXJy
b3IxIQorQ09OU09MRSBNRVNTQUdFOiBVbmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rpb246IFR5cGVF
cnJvcjogY2FuY2VsKCkgY2FsbGVkIG9uIGEgcmVhZGVyIG93bmVkIGJ5IG5vIHJlYWRhYmxlIHN0
cmVhbQorQ09OU09MRSBNRVNTQUdFOiBVbmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rpb246IGVycm9y
MTogZXJyb3IxIQorQ09OU09MRSBNRVNTQUdFOiBVbmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rpb246
IGVycm9yMTogZXJyb3IxIQorQ09OU09MRSBNRVNTQUdFOiBVbmhhbmRsZWQgUHJvbWlzZSBSZWpl
Y3Rpb246IGVycm9yMTogZXJyb3IxIQorQ09OU09MRSBNRVNTQUdFOiBVbmhhbmRsZWQgUHJvbWlz
ZSBSZWplY3Rpb246IGVycm9yMTogZXJyb3IxIQorQ09OU09MRSBNRVNTQUdFOiBVbmhhbmRsZWQg
UHJvbWlzZSBSZWplY3Rpb246IFR5cGVFcnJvcjogY2FuY2VsKCkgY2FsbGVkIG9uIGEgcmVhZGVy
IG93bmVkIGJ5IG5vIHJlYWRhYmxlIHN0cmVhbQorQ09OU09MRSBNRVNTQUdFOiBVbmhhbmRsZWQg
UHJvbWlzZSBSZWplY3Rpb246IGVycm9yMTogZXJyb3IxIQorCitIYXJuZXNzIEVycm9yIChGQUlM
KSwgbWVzc2FnZSA9IFVuaGFuZGxlZCByZWplY3Rpb246IGVycm9yMSEKKworUEFTUyBFcnJvcnMg
bXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHN0YXJ0cyBlcnJvcmVkOyBwcmV2ZW50QWJvcnQg
PSBmYWxzZTsgZnVsZmlsbGVkIGFib3J0IHByb21pc2UgCitGQUlMIEVycm9ycyBtdXN0IGJlIHBy
b3BhZ2F0ZWQgZm9yd2FyZDogc3RhcnRzIGVycm9yZWQ7IHByZXZlbnRBYm9ydCA9IGZhbHNlOyBy
ZWplY3RlZCBhYm9ydCBwcm9taXNlIHByb21pc2VfcmVqZWN0c19leGFjdGx5OiBwaXBlVG8gbXVz
dCByZWplY3Qgd2l0aCB0aGUgYWJvcnQgZXJyb3IgZnVuY3Rpb24gImZ1bmN0aW9uICgpIHsgdGhy
b3cgZSB9IiB0aHJldyBvYmplY3QgImVycm9yMTogZXJyb3IxISIgYnV0IHdlIGV4cGVjdGVkIGl0
IHRvIHRocm93IG9iamVjdCAiZXJyb3IyOiBlcnJvcjIhIgorUEFTUyBFcnJvcnMgbXVzdCBiZSBw
cm9wYWdhdGVkIGZvcndhcmQ6IHN0YXJ0cyBlcnJvcmVkOyBwcmV2ZW50QWJvcnQgPSB1bmRlZmlu
ZWQgKGZhbHN5KTsgZnVsZmlsbGVkIGFib3J0IHByb21pc2UgCitQQVNTIEVycm9ycyBtdXN0IGJl
IHByb3BhZ2F0ZWQgZm9yd2FyZDogc3RhcnRzIGVycm9yZWQ7IHByZXZlbnRBYm9ydCA9IG51bGwg
KGZhbHN5KTsgZnVsZmlsbGVkIGFib3J0IHByb21pc2UgCitQQVNTIEVycm9ycyBtdXN0IGJlIHBy
b3BhZ2F0ZWQgZm9yd2FyZDogc3RhcnRzIGVycm9yZWQ7IHByZXZlbnRBYm9ydCA9IGZhbHNlIChm
YWxzeSk7IGZ1bGZpbGxlZCBhYm9ydCBwcm9taXNlIAorUEFTUyBFcnJvcnMgbXVzdCBiZSBwcm9w
YWdhdGVkIGZvcndhcmQ6IHN0YXJ0cyBlcnJvcmVkOyBwcmV2ZW50QWJvcnQgPSAwIChmYWxzeSk7
IGZ1bGZpbGxlZCBhYm9ydCBwcm9taXNlIAorUEFTUyBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVk
IGZvcndhcmQ6IHN0YXJ0cyBlcnJvcmVkOyBwcmV2ZW50QWJvcnQgPSAtMCAoZmFsc3kpOyBmdWxm
aWxsZWQgYWJvcnQgcHJvbWlzZSAKK1BBU1MgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3
YXJkOiBzdGFydHMgZXJyb3JlZDsgcHJldmVudEFib3J0ID0gTmFOIChmYWxzeSk7IGZ1bGZpbGxl
ZCBhYm9ydCBwcm9taXNlIAorUEFTUyBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6
IHN0YXJ0cyBlcnJvcmVkOyBwcmV2ZW50QWJvcnQgPSAgKGZhbHN5KTsgZnVsZmlsbGVkIGFib3J0
IHByb21pc2UgCitQQVNTIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc3RhcnRz
IGVycm9yZWQ7IHByZXZlbnRBYm9ydCA9IHRydWUgKHRydXRoeSkgCitQQVNTIEVycm9ycyBtdXN0
IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc3RhcnRzIGVycm9yZWQ7IHByZXZlbnRBYm9ydCA9IGEg
KHRydXRoeSkgCitQQVNTIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc3RhcnRz
IGVycm9yZWQ7IHByZXZlbnRBYm9ydCA9IDEgKHRydXRoeSkgCitQQVNTIEVycm9ycyBtdXN0IGJl
IHByb3BhZ2F0ZWQgZm9yd2FyZDogc3RhcnRzIGVycm9yZWQ7IHByZXZlbnRBYm9ydCA9IFN5bWJv
bCgpICh0cnV0aHkpIAorUEFTUyBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHN0
YXJ0cyBlcnJvcmVkOyBwcmV2ZW50QWJvcnQgPSBbb2JqZWN0IE9iamVjdF0gKHRydXRoeSkgCitQ
QVNTIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc3RhcnRzIGVycm9yZWQ7IHBy
ZXZlbnRBYm9ydCA9IHRydWUsIHByZXZlbnRDYW5jZWwgPSB0cnVlIAorUEFTUyBFcnJvcnMgbXVz
dCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHN0YXJ0cyBlcnJvcmVkOyBwcmV2ZW50QWJvcnQgPSB0
cnVlLCBwcmV2ZW50Q2FuY2VsID0gdHJ1ZSwgcHJldmVudENsb3NlID0gdHJ1ZSAKK1BBU1MgRXJy
b3JzIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBiZWNvbWVzIGVycm9yZWQgd2hpbGUgZW1w
dHk7IHByZXZlbnRBYm9ydCA9IGZhbHNlOyBmdWxmaWxsZWQgYWJvcnQgcHJvbWlzZSAKK0ZBSUwg
RXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBiZWNvbWVzIGVycm9yZWQgd2hpbGUg
ZW1wdHk7IHByZXZlbnRBYm9ydCA9IGZhbHNlOyByZWplY3RlZCBhYm9ydCBwcm9taXNlIHByb21p
c2VfcmVqZWN0c19leGFjdGx5OiBwaXBlVG8gbXVzdCByZWplY3Qgd2l0aCB0aGUgYWJvcnQgZXJy
b3IgZnVuY3Rpb24gImZ1bmN0aW9uICgpIHsgdGhyb3cgZSB9IiB0aHJldyBvYmplY3QgImVycm9y
MTogZXJyb3IxISIgYnV0IHdlIGV4cGVjdGVkIGl0IHRvIHRocm93IG9iamVjdCAiZXJyb3IyOiBl
cnJvcjIhIgorUEFTUyBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IGJlY29tZXMg
ZXJyb3JlZCB3aGlsZSBlbXB0eTsgcHJldmVudEFib3J0ID0gdHJ1ZSAKK1BBU1MgRXJyb3JzIG11
c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBiZWNvbWVzIGVycm9yZWQgd2hpbGUgZW1wdHk7IGRl
c3QgbmV2ZXIgZGVzaXJlcyBjaHVua3M7IHByZXZlbnRBYm9ydCA9IGZhbHNlOyBmdWxmaWxsZWQg
YWJvcnQgcHJvbWlzZSAKK0ZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBi
ZWNvbWVzIGVycm9yZWQgd2hpbGUgZW1wdHk7IGRlc3QgbmV2ZXIgZGVzaXJlcyBjaHVua3M7IHBy
ZXZlbnRBYm9ydCA9IGZhbHNlOyByZWplY3RlZCBhYm9ydCBwcm9taXNlIHByb21pc2VfcmVqZWN0
c19leGFjdGx5OiBwaXBlVG8gbXVzdCByZWplY3Qgd2l0aCB0aGUgYWJvcnQgZXJyb3IgZnVuY3Rp
b24gImZ1bmN0aW9uICgpIHsgdGhyb3cgZSB9IiB0aHJldyBvYmplY3QgImVycm9yMTogZXJyb3Ix
ISIgYnV0IHdlIGV4cGVjdGVkIGl0IHRvIHRocm93IG9iamVjdCAiZXJyb3IyOiBlcnJvcjIhIgor
UEFTUyBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IGJlY29tZXMgZXJyb3JlZCB3
aGlsZSBlbXB0eTsgZGVzdCBuZXZlciBkZXNpcmVzIGNodW5rczsgcHJldmVudEFib3J0ID0gdHJ1
ZSAKK1BBU1MgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBiZWNvbWVzIGVycm9y
ZWQgYWZ0ZXIgb25lIGNodW5rOyBwcmV2ZW50QWJvcnQgPSBmYWxzZTsgZnVsZmlsbGVkIGFib3J0
IHByb21pc2UgCitGQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogYmVjb21l
cyBlcnJvcmVkIGFmdGVyIG9uZSBjaHVuazsgcHJldmVudEFib3J0ID0gZmFsc2U7IHJlamVjdGVk
IGFib3J0IHByb21pc2UgcHJvbWlzZV9yZWplY3RzX2V4YWN0bHk6IHBpcGVUbyBtdXN0IHJlamVj
dCB3aXRoIHRoZSBhYm9ydCBlcnJvciBmdW5jdGlvbiAiZnVuY3Rpb24gKCkgeyB0aHJvdyBlIH0i
IHRocmV3IG9iamVjdCAiZXJyb3IxOiBlcnJvcjEhIiBidXQgd2UgZXhwZWN0ZWQgaXQgdG8gdGhy
b3cgb2JqZWN0ICJlcnJvcjI6IGVycm9yMiEiCitQQVNTIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0
ZWQgZm9yd2FyZDogYmVjb21lcyBlcnJvcmVkIGFmdGVyIG9uZSBjaHVuazsgcHJldmVudEFib3J0
ID0gdHJ1ZSAKK0ZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBiZWNvbWVz
IGVycm9yZWQgYWZ0ZXIgb25lIGNodW5rOyBkZXN0IG5ldmVyIGRlc2lyZXMgY2h1bmtzOyBwcmV2
ZW50QWJvcnQgPSBmYWxzZTsgZnVsZmlsbGVkIGFib3J0IHByb21pc2UgYXNzZXJ0X2FycmF5X2Vx
dWFsczogbGVuZ3RocyBkaWZmZXIsIGV4cGVjdGVkIGFycmF5IFsiYWJvcnQiLCBvYmplY3QgImVy
cm9yMTogZXJyb3IxISJdIGxlbmd0aCAyLCBnb3QgWyJ3cml0ZSIsICJIZWxsbyIsICJhYm9ydCIs
IG9iamVjdCAiZXJyb3IxOiBlcnJvcjEhIl0gbGVuZ3RoIDQKK0ZBSUwgRXJyb3JzIG11c3QgYmUg
cHJvcGFnYXRlZCBmb3J3YXJkOiBiZWNvbWVzIGVycm9yZWQgYWZ0ZXIgb25lIGNodW5rOyBkZXN0
IG5ldmVyIGRlc2lyZXMgY2h1bmtzOyBwcmV2ZW50QWJvcnQgPSBmYWxzZTsgcmVqZWN0ZWQgYWJv
cnQgcHJvbWlzZSBwcm9taXNlX3JlamVjdHNfZXhhY3RseTogcGlwZVRvIG11c3QgcmVqZWN0IHdp
dGggdGhlIGFib3J0IGVycm9yIGZ1bmN0aW9uICJmdW5jdGlvbiAoKSB7IHRocm93IGUgfSIgdGhy
ZXcgb2JqZWN0ICJlcnJvcjE6IGVycm9yMSEiIGJ1dCB3ZSBleHBlY3RlZCBpdCB0byB0aHJvdyBv
YmplY3QgImVycm9yMjogZXJyb3IyISIKK0ZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBm
b3J3YXJkOiBiZWNvbWVzIGVycm9yZWQgYWZ0ZXIgb25lIGNodW5rOyBkZXN0IG5ldmVyIGRlc2ly
ZXMgY2h1bmtzOyBwcmV2ZW50QWJvcnQgPSB0cnVlIGFzc2VydF9hcnJheV9lcXVhbHM6IGxlbmd0
aHMgZGlmZmVyLCBleHBlY3RlZCBhcnJheSBbXSBsZW5ndGggMCwgZ290IFsid3JpdGUiLCAiSGVs
bG8iXSBsZW5ndGggMgorRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHNo
dXRkb3duIG11c3Qgbm90IG9jY3VyIHVudGlsIHRoZSBmaW5hbCB3cml0ZSBjb21wbGV0ZXMgYXNz
ZXJ0X2FycmF5X2VxdWFsczogbGVuZ3RocyBkaWZmZXIsIGV4cGVjdGVkIGFycmF5IFsid3JpdGUi
LCAiYSJdIGxlbmd0aCAyLCBnb3QgWyJ3cml0ZSIsICJhIiwgImFib3J0Iiwgb2JqZWN0ICJlcnJv
cjE6IGVycm9yMSEiXSBsZW5ndGggNAorRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGZv
cndhcmQ6IHNodXRkb3duIG11c3Qgbm90IG9jY3VyIHVudGlsIHRoZSBmaW5hbCB3cml0ZSBjb21w
bGV0ZXM7IHByZXZlbnRBYm9ydCA9IHRydWUgYXNzZXJ0X2VxdWFsczogdGhlIHBpcGUgbXVzdCBu
b3QgYmUgY29tcGxldGUgZXhwZWN0ZWQgZmFsc2UgYnV0IGdvdCB0cnVlCitGQUlMIEVycm9ycyBt
dXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc2h1dGRvd24gbXVzdCBub3Qgb2NjdXIgdW50aWwg
dGhlIGZpbmFsIHdyaXRlIGNvbXBsZXRlczsgYmVjb21lcyBlcnJvcmVkIGFmdGVyIGZpcnN0IHdy
aXRlIGFzc2VydF9hcnJheV9lcXVhbHM6IHRoZSBzZWNvbmQgY2h1bmsgbXVzdCBoYXZlIGJlZW4g
d3JpdHRlbiwgYnV0IGFib3J0IG11c3Qgbm90IGhhdmUgaGFwcGVuZWQgeWV0IGV4cGVjdGVkIHBy
b3BlcnR5IDIgdG8gYmUgIndyaXRlIiBidXQgZ290ICJhYm9ydCIgKGV4cGVjdGVkIGFycmF5IFsi
d3JpdGUiLCAiYSIsICJ3cml0ZSIsICJiIl0gZ290IFsid3JpdGUiLCAiYSIsICJhYm9ydCIsIG9i
amVjdCAiZXJyb3IxOiBlcnJvcjEhIl0pCitGQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQg
Zm9yd2FyZDogc2h1dGRvd24gbXVzdCBub3Qgb2NjdXIgdW50aWwgdGhlIGZpbmFsIHdyaXRlIGNv
bXBsZXRlczsgYmVjb21lcyBlcnJvcmVkIGFmdGVyIGZpcnN0IHdyaXRlOyBwcmV2ZW50QWJvcnQg
PSB0cnVlIGFzc2VydF9mYWxzZTogdGhlIHBpcGUgc2hvdWxkIG5vdCBjb21wbGV0ZSB3aGlsZSB0
aGUgc2Vjb25kIHdyaXRlIGlzIHBlbmRpbmcgZXhwZWN0ZWQgZmFsc2UgZ290IHRydWUKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJl
YW1zL3BpcGluZy9lcnJvci1wcm9wYWdhdGlvbi1mb3J3YXJkLmFueS5odG1sIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9lcnJvci1w
cm9wYWdhdGlvbi1mb3J3YXJkLmFueS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzODI5MTM1MjhlNjkzYjNh
NWQ1NmM2NjBhNDUwNjA5ODBiNTQ4YzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Vycm9yLXByb3Bh
Z2F0aW9uLWZvcndhcmQuYW55Lmh0bWwKQEAgLTAsMCArMSBAQAorPCEtLSBUaGlzIGZpbGUgaXMg
cmVxdWlyZWQgZm9yIFdlYktpdCB0ZXN0IGluZnJhc3RydWN0dXJlIHRvIHJ1biB0aGUgdGVtcGxh
dGVkIHRlc3QgLS0+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9l
cnJvci1wcm9wYWdhdGlvbi1mb3J3YXJkLmFueS5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvZXJyb3ItcHJvcGFnYXRpb24tZm9y
d2FyZC5hbnkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjM1ZWM2NjVlZWMyMmZjMzQ3MzcyZGI3MmUyODczYzcw
MjgyMTUxYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvZXJyb3ItcHJvcGFnYXRpb24tZm9yd2FyZC5h
bnkuanMKQEAgLTAsMCArMSw1NjkgQEAKKy8vIE1FVEE6IGdsb2JhbD13aW5kb3csd29ya2VyLGpz
c2hlbGwKKy8vIE1FVEE6IHNjcmlwdD0uLi9yZXNvdXJjZXMvdGVzdC11dGlscy5qcworLy8gTUVU
QTogc2NyaXB0PS4uL3Jlc291cmNlcy9yZWNvcmRpbmctc3RyZWFtcy5qcworJ3VzZSBzdHJpY3Qn
OworCitjb25zdCBlcnJvcjEgPSBuZXcgRXJyb3IoJ2Vycm9yMSEnKTsKK2Vycm9yMS5uYW1lID0g
J2Vycm9yMSc7CisKK2NvbnN0IGVycm9yMiA9IG5ldyBFcnJvcignZXJyb3IyIScpOworZXJyb3Iy
Lm5hbWUgPSAnZXJyb3IyJzsKKworcHJvbWlzZV90ZXN0KHQgPT4geworCisgIGNvbnN0IHJzID0g
cmVjb3JkaW5nUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KCkgeworICAgICAgcmV0dXJuIFBy
b21pc2UucmVqZWN0KGVycm9yMSk7CisgICAgfQorICB9KTsKKworICBjb25zdCB3cyA9IHJlY29y
ZGluZ1dyaXRhYmxlU3RyZWFtKCk7CisKKyAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19leGFjdGx5
KHQsIGVycm9yMSwgcnMucGlwZVRvKHdzKSwgJ3BpcGVUbyBtdXN0IHJlamVjdCB3aXRoIHRoZSBz
YW1lIGVycm9yJykKKyAgICAudGhlbigoKSA9PiB7CisgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxz
KHJzLmV2ZW50cywgW10pOworICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsn
YWJvcnQnLCBlcnJvcjFdKTsKKyAgICB9KTsKKworfSwgJ0Vycm9ycyBtdXN0IGJlIHByb3BhZ2F0
ZWQgZm9yd2FyZDogc3RhcnRzIGVycm9yZWQ7IHByZXZlbnRBYm9ydCA9IGZhbHNlOyBmdWxmaWxs
ZWQgYWJvcnQgcHJvbWlzZScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisKKyAgY29uc3QgcnMg
PSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoKSB7CisgICAgICByZXR1cm4g
UHJvbWlzZS5yZWplY3QoZXJyb3IxKTsKKyAgICB9CisgIH0pOworCisgIGNvbnN0IHdzID0gcmVj
b3JkaW5nV3JpdGFibGVTdHJlYW0oeworICAgIGFib3J0KCkgeworICAgICAgdGhyb3cgZXJyb3Iy
OworICAgIH0KKyAgfSk7CisKKyAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVy
cm9yMiwgcnMucGlwZVRvKHdzKSwgJ3BpcGVUbyBtdXN0IHJlamVjdCB3aXRoIHRoZSBhYm9ydCBl
cnJvcicpCisgICAgLnRoZW4oKCkgPT4geworICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhycy5l
dmVudHMsIFtdKTsKKyAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ2Fib3J0
JywgZXJyb3IxXSk7CisgICAgfSk7CisKK30sICdFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGZv
cndhcmQ6IHN0YXJ0cyBlcnJvcmVkOyBwcmV2ZW50QWJvcnQgPSBmYWxzZTsgcmVqZWN0ZWQgYWJv
cnQgcHJvbWlzZScpOworCitmb3IgKGNvbnN0IGZhbHN5IG9mIFt1bmRlZmluZWQsIG51bGwsIGZh
bHNlLCArMCwgLTAsIE5hTiwgJyddKSB7CisgIGNvbnN0IHN0cmluZ1ZlcnNpb24gPSBPYmplY3Qu
aXMoZmFsc3ksIC0wKSA/ICctMCcgOiBTdHJpbmcoZmFsc3kpOworCisgIHByb21pc2VfdGVzdCh0
ID0+IHsKKworICAgIGNvbnN0IHJzID0gcmVjb3JkaW5nUmVhZGFibGVTdHJlYW0oeworICAgICAg
c3RhcnQoKSB7CisgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcjEpOworICAgICAg
fQorICAgIH0pOworCisgICAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSgpOwor
CisgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMSwgcnMucGlwZVRv
KHdzLCB7IHByZXZlbnRBYm9ydDogZmFsc3kgfSksICdwaXBlVG8gbXVzdCByZWplY3Qgd2l0aCB0
aGUgc2FtZSBlcnJvcicpCisgICAgICAudGhlbigoKSA9PiB7CisgICAgICAgIGFzc2VydF9hcnJh
eV9lcXVhbHMocnMuZXZlbnRzLCBbXSk7CisgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3Mu
ZXZlbnRzLCBbJ2Fib3J0JywgZXJyb3IxXSk7CisgICAgICB9KTsKKworICB9LCBgRXJyb3JzIG11
c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBzdGFydHMgZXJyb3JlZDsgcHJldmVudEFib3J0ID0g
JHtzdHJpbmdWZXJzaW9ufSAoZmFsc3kpOyBmdWxmaWxsZWQgYWJvcnQgYCArCisgICAgIGBwcm9t
aXNlYCk7Cit9CisKK2ZvciAoY29uc3QgdHJ1dGh5IG9mIFt0cnVlLCAnYScsIDEsIFN5bWJvbCgp
LCB7IH1dKSB7CisgIHByb21pc2VfdGVzdCh0ID0+IHsKKworICAgIGNvbnN0IHJzID0gcmVjb3Jk
aW5nUmVhZGFibGVTdHJlYW0oeworICAgICAgc3RhcnQoKSB7CisgICAgICAgIHJldHVybiBQcm9t
aXNlLnJlamVjdChlcnJvcjEpOworICAgICAgfQorICAgIH0pOworCisgICAgY29uc3Qgd3MgPSBy
ZWNvcmRpbmdXcml0YWJsZVN0cmVhbSgpOworCisgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19l
eGFjdGx5KHQsIGVycm9yMSwgcnMucGlwZVRvKHdzLCB7IHByZXZlbnRBYm9ydDogdHJ1dGh5IH0p
LAorICAgICAgJ3BpcGVUbyBtdXN0IHJlamVjdCB3aXRoIHRoZSBzYW1lIGVycm9yJykKKyAgICAg
IC50aGVuKCgpID0+IHsKKyAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhycy5ldmVudHMsIFtd
KTsKKyAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFtdKTsKKyAgICAgIH0p
OworCisgIH0sIGBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHN0YXJ0cyBlcnJv
cmVkOyBwcmV2ZW50QWJvcnQgPSAke1N0cmluZyh0cnV0aHkpfSAodHJ1dGh5KWApOworfQorCisK
K3Byb21pc2VfdGVzdCh0ID0+IHsKKworICBjb25zdCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3Ry
ZWFtKHsKKyAgICBzdGFydCgpIHsKKyAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcjEp
OworICAgIH0KKyAgfSk7CisKKyAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSgp
OworCisgIHJldHVybiBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIHJzLnBpcGVU
byh3cywgeyBwcmV2ZW50QWJvcnQ6IHRydWUsIHByZXZlbnRDYW5jZWw6IHRydWUgfSksCisgICAg
J3BpcGVUbyBtdXN0IHJlamVjdCB3aXRoIHRoZSBzYW1lIGVycm9yJykKKyAgICAudGhlbigoKSA9
PiB7CisgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJzLmV2ZW50cywgW10pOworICAgICAgYXNz
ZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFtdKTsKKyAgICB9KTsKKworfSwgJ0Vycm9ycyBt
dXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc3RhcnRzIGVycm9yZWQ7IHByZXZlbnRBYm9ydCA9
IHRydWUsIHByZXZlbnRDYW5jZWwgPSB0cnVlJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKwor
ICBjb25zdCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydCgpIHsKKyAg
ICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcjEpOworICAgIH0KKyAgfSk7CisKKyAgY29u
c3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSgpOworCisgIHJldHVybiBwcm9taXNlX3Jl
amVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIHJzLnBpcGVUbyh3cywgeyBwcmV2ZW50QWJvcnQ6IHRy
dWUsIHByZXZlbnRDYW5jZWw6IHRydWUsIHByZXZlbnRDbG9zZTogdHJ1ZSB9KSwKKyAgICAncGlw
ZVRvIG11c3QgcmVqZWN0IHdpdGggdGhlIHNhbWUgZXJyb3InKQorICAgIC50aGVuKCgpID0+IHsK
KyAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMocnMuZXZlbnRzLCBbXSk7CisgICAgICBhc3NlcnRf
YXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgW10pOworICAgIH0pOworCit9LCAnRXJyb3JzIG11c3Qg
YmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBzdGFydHMgZXJyb3JlZDsgcHJldmVudEFib3J0ID0gdHJ1
ZSwgcHJldmVudENhbmNlbCA9IHRydWUsIHByZXZlbnRDbG9zZSA9IHRydWUnKTsKKworcHJvbWlz
ZV90ZXN0KHQgPT4geworCisgIGNvbnN0IHJzID0gcmVjb3JkaW5nUmVhZGFibGVTdHJlYW0oKTsK
KworICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKCk7CisKKyAgY29uc3QgcGlw
ZVByb21pc2UgPSBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIHJzLnBpcGVUbyh3
cyksICdwaXBlVG8gbXVzdCByZWplY3Qgd2l0aCB0aGUgc2FtZSBlcnJvcicpOworCisgIHQuc3Rl
cF90aW1lb3V0KCgpID0+IHJzLmNvbnRyb2xsZXIuZXJyb3IoZXJyb3IxKSwgMTApOworCisgIHJl
dHVybiBwaXBlUHJvbWlzZS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJz
LmV2ZW50c1dpdGhvdXRQdWxscywgW10pOworICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZl
bnRzLCBbJ2Fib3J0JywgZXJyb3IxXSk7CisgIH0pOworCit9LCAnRXJyb3JzIG11c3QgYmUgcHJv
cGFnYXRlZCBmb3J3YXJkOiBiZWNvbWVzIGVycm9yZWQgd2hpbGUgZW1wdHk7IHByZXZlbnRBYm9y
dCA9IGZhbHNlOyBmdWxmaWxsZWQgYWJvcnQgcHJvbWlzZScpOworCitwcm9taXNlX3Rlc3QodCA9
PiB7CisKKyAgY29uc3QgcnMgPSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSgpOworCisgIGNvbnN0
IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0oeworICAgIGFib3J0KCkgeworICAgICAgdGhy
b3cgZXJyb3IyOworICAgIH0KKyAgfSk7CisKKyAgY29uc3QgcGlwZVByb21pc2UgPSBwcm9taXNl
X3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjIsIHJzLnBpcGVUbyh3cyksICdwaXBlVG8gbXVzdCBy
ZWplY3Qgd2l0aCB0aGUgYWJvcnQgZXJyb3InKTsKKworICB0LnN0ZXBfdGltZW91dCgoKSA9PiBy
cy5jb250cm9sbGVyLmVycm9yKGVycm9yMSksIDEwKTsKKworICByZXR1cm4gcGlwZVByb21pc2Uu
dGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhycy5ldmVudHNXaXRob3V0UHVs
bHMsIFtdKTsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWydhYm9ydCcsIGVy
cm9yMV0pOworICB9KTsKKworfSwgJ0Vycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDog
YmVjb21lcyBlcnJvcmVkIHdoaWxlIGVtcHR5OyBwcmV2ZW50QWJvcnQgPSBmYWxzZTsgcmVqZWN0
ZWQgYWJvcnQgcHJvbWlzZScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisKKyAgY29uc3QgcnMg
PSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSgpOworCisgIGNvbnN0IHdzID0gcmVjb3JkaW5nV3Jp
dGFibGVTdHJlYW0oKTsKKworICBjb25zdCBwaXBlUHJvbWlzZSA9IHByb21pc2VfcmVqZWN0c19l
eGFjdGx5KHQsIGVycm9yMSwgcnMucGlwZVRvKHdzLCB7IHByZXZlbnRBYm9ydDogdHJ1ZSB9KSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGlwZVRvIG11
c3QgcmVqZWN0IHdpdGggdGhlIHNhbWUgZXJyb3InKTsKKworICB0LnN0ZXBfdGltZW91dCgoKSA9
PiBycy5jb250cm9sbGVyLmVycm9yKGVycm9yMSksIDEwKTsKKworICByZXR1cm4gcGlwZVByb21p
c2UudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhycy5ldmVudHNXaXRob3V0
UHVsbHMsIFtdKTsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgW10pOworICB9
KTsKKworfSwgJ0Vycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogYmVjb21lcyBlcnJv
cmVkIHdoaWxlIGVtcHR5OyBwcmV2ZW50QWJvcnQgPSB0cnVlJyk7CisKK3Byb21pc2VfdGVzdCh0
ID0+IHsKKworICBjb25zdCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKCk7CisKKyAgY29u
c3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSh1bmRlZmluZWQsIG5ldyBDb3VudFF1ZXVp
bmdTdHJhdGVneSh7IGhpZ2hXYXRlck1hcms6IDAgfSkpOworCisgIGNvbnN0IHBpcGVQcm9taXNl
ID0gcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCBycy5waXBlVG8od3MpLCAncGlw
ZVRvIG11c3QgcmVqZWN0IHdpdGggdGhlIHNhbWUgZXJyb3InKTsKKworICB0LnN0ZXBfdGltZW91
dCgoKSA9PiBycy5jb250cm9sbGVyLmVycm9yKGVycm9yMSksIDEwKTsKKworICByZXR1cm4gcGlw
ZVByb21pc2UudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhycy5ldmVudHNX
aXRob3V0UHVsbHMsIFtdKTsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWydh
Ym9ydCcsIGVycm9yMV0pOworICB9KTsKKworfSwgJ0Vycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQg
Zm9yd2FyZDogYmVjb21lcyBlcnJvcmVkIHdoaWxlIGVtcHR5OyBkZXN0IG5ldmVyIGRlc2lyZXMg
Y2h1bmtzOyAnICsKKyAgICdwcmV2ZW50QWJvcnQgPSBmYWxzZTsgZnVsZmlsbGVkIGFib3J0IHBy
b21pc2UnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworCisgIGNvbnN0IHJzID0gcmVjb3JkaW5n
UmVhZGFibGVTdHJlYW0oKTsKKworICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFt
KHsKKyAgICBhYm9ydCgpIHsKKyAgICAgIHRocm93IGVycm9yMjsKKyAgICB9CisgIH0sIG5ldyBD
b3VudFF1ZXVpbmdTdHJhdGVneSh7IGhpZ2hXYXRlck1hcms6IDAgfSkpOworCisgIGNvbnN0IHBp
cGVQcm9taXNlID0gcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IyLCBycy5waXBlVG8o
d3MpLCAncGlwZVRvIG11c3QgcmVqZWN0IHdpdGggdGhlIGFib3J0IGVycm9yJyk7CisKKyAgdC5z
dGVwX3RpbWVvdXQoKCkgPT4gcnMuY29udHJvbGxlci5lcnJvcihlcnJvcjEpLCAxMCk7CisKKyAg
cmV0dXJuIHBpcGVQcm9taXNlLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9hcnJheV9lcXVhbHMo
cnMuZXZlbnRzV2l0aG91dFB1bGxzLCBbXSk7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5l
dmVudHMsIFsnYWJvcnQnLCBlcnJvcjFdKTsKKyAgfSk7CisKK30sICdFcnJvcnMgbXVzdCBiZSBw
cm9wYWdhdGVkIGZvcndhcmQ6IGJlY29tZXMgZXJyb3JlZCB3aGlsZSBlbXB0eTsgZGVzdCBuZXZl
ciBkZXNpcmVzIGNodW5rczsgJyArCisgICAncHJldmVudEFib3J0ID0gZmFsc2U7IHJlamVjdGVk
IGFib3J0IHByb21pc2UnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworCisgIGNvbnN0IHJzID0g
cmVjb3JkaW5nUmVhZGFibGVTdHJlYW0oKTsKKworICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRh
YmxlU3RyZWFtKHVuZGVmaW5lZCwgbmV3IENvdW50UXVldWluZ1N0cmF0ZWd5KHsgaGlnaFdhdGVy
TWFyazogMCB9KSk7CisKKyAgY29uc3QgcGlwZVByb21pc2UgPSBwcm9taXNlX3JlamVjdHNfZXhh
Y3RseSh0LCBlcnJvcjEsIHJzLnBpcGVUbyh3cywgeyBwcmV2ZW50QWJvcnQ6IHRydWUgfSksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BpcGVUbyBtdXN0
IHJlamVjdCB3aXRoIHRoZSBzYW1lIGVycm9yJyk7CisKKyAgdC5zdGVwX3RpbWVvdXQoKCkgPT4g
cnMuY29udHJvbGxlci5lcnJvcihlcnJvcjEpLCAxMCk7CisKKyAgcmV0dXJuIHBpcGVQcm9taXNl
LnRoZW4oKCkgPT4geworICAgIGFzc2VydF9hcnJheV9lcXVhbHMocnMuZXZlbnRzV2l0aG91dFB1
bGxzLCBbXSk7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFtdKTsKKyAgfSk7
CisKK30sICdFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IGJlY29tZXMgZXJyb3Jl
ZCB3aGlsZSBlbXB0eTsgZGVzdCBuZXZlciBkZXNpcmVzIGNodW5rczsgJyArCisgICAncHJldmVu
dEFib3J0ID0gdHJ1ZScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisKKyAgY29uc3QgcnMgPSBy
ZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSgpOworCisgIGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFi
bGVTdHJlYW0oKTsKKworICBjb25zdCBwaXBlUHJvbWlzZSA9IHByb21pc2VfcmVqZWN0c19leGFj
dGx5KHQsIGVycm9yMSwgcnMucGlwZVRvKHdzKSwgJ3BpcGVUbyBtdXN0IHJlamVjdCB3aXRoIHRo
ZSBzYW1lIGVycm9yJyk7CisKKyAgdC5zdGVwX3RpbWVvdXQoKCkgPT4geworICAgIHJzLmNvbnRy
b2xsZXIuZW5xdWV1ZSgnSGVsbG8nKTsKKyAgICB0LnN0ZXBfdGltZW91dCgoKSA9PiBycy5jb250
cm9sbGVyLmVycm9yKGVycm9yMSksIDEwKTsKKyAgfSwgMTApOworCisgIHJldHVybiBwaXBlUHJv
bWlzZS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJzLmV2ZW50c1dpdGhv
dXRQdWxscywgW10pOworICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ3dyaXRl
JywgJ0hlbGxvJywgJ2Fib3J0JywgZXJyb3IxXSk7CisgIH0pOworCit9LCAnRXJyb3JzIG11c3Qg
YmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBiZWNvbWVzIGVycm9yZWQgYWZ0ZXIgb25lIGNodW5rOyBw
cmV2ZW50QWJvcnQgPSBmYWxzZTsgZnVsZmlsbGVkIGFib3J0IHByb21pc2UnKTsKKworcHJvbWlz
ZV90ZXN0KHQgPT4geworCisgIGNvbnN0IHJzID0gcmVjb3JkaW5nUmVhZGFibGVTdHJlYW0oKTsK
KworICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKHsKKyAgICBhYm9ydCgpIHsK
KyAgICAgIHRocm93IGVycm9yMjsKKyAgICB9CisgIH0pOworCisgIGNvbnN0IHBpcGVQcm9taXNl
ID0gcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IyLCBycy5waXBlVG8od3MpLCAncGlw
ZVRvIG11c3QgcmVqZWN0IHdpdGggdGhlIGFib3J0IGVycm9yJyk7CisKKyAgdC5zdGVwX3RpbWVv
dXQoKCkgPT4geworICAgIHJzLmNvbnRyb2xsZXIuZW5xdWV1ZSgnSGVsbG8nKTsKKyAgICB0LnN0
ZXBfdGltZW91dCgoKSA9PiBycy5jb250cm9sbGVyLmVycm9yKGVycm9yMSksIDEwKTsKKyAgfSwg
MTApOworCisgIHJldHVybiBwaXBlUHJvbWlzZS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfYXJy
YXlfZXF1YWxzKHJzLmV2ZW50c1dpdGhvdXRQdWxscywgW10pOworICAgIGFzc2VydF9hcnJheV9l
cXVhbHMod3MuZXZlbnRzLCBbJ3dyaXRlJywgJ0hlbGxvJywgJ2Fib3J0JywgZXJyb3IxXSk7Cisg
IH0pOworCit9LCAnRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBiZWNvbWVzIGVy
cm9yZWQgYWZ0ZXIgb25lIGNodW5rOyBwcmV2ZW50QWJvcnQgPSBmYWxzZTsgcmVqZWN0ZWQgYWJv
cnQgcHJvbWlzZScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisKKyAgY29uc3QgcnMgPSByZWNv
cmRpbmdSZWFkYWJsZVN0cmVhbSgpOworCisgIGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVT
dHJlYW0oKTsKKworICBjb25zdCBwaXBlUHJvbWlzZSA9IHByb21pc2VfcmVqZWN0c19leGFjdGx5
KHQsIGVycm9yMSwgcnMucGlwZVRvKHdzLCB7IHByZXZlbnRBYm9ydDogdHJ1ZSB9KSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGlwZVRvIG11c3QgcmVq
ZWN0IHdpdGggdGhlIHNhbWUgZXJyb3InKTsKKworICB0LnN0ZXBfdGltZW91dCgoKSA9PiB7Cisg
ICAgcnMuY29udHJvbGxlci5lbnF1ZXVlKCdIZWxsbycpOworICAgIHQuc3RlcF90aW1lb3V0KCgp
ID0+IHJzLmNvbnRyb2xsZXIuZXJyb3IoZXJyb3IxKSwgMTApOworICB9LCAxMCk7CisKKyAgcmV0
dXJuIHBpcGVQcm9taXNlLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9hcnJheV9lcXVhbHMocnMu
ZXZlbnRzV2l0aG91dFB1bGxzLCBbXSk7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVu
dHMsIFsnd3JpdGUnLCAnSGVsbG8nXSk7CisgIH0pOworCit9LCAnRXJyb3JzIG11c3QgYmUgcHJv
cGFnYXRlZCBmb3J3YXJkOiBiZWNvbWVzIGVycm9yZWQgYWZ0ZXIgb25lIGNodW5rOyBwcmV2ZW50
QWJvcnQgPSB0cnVlJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKworICBjb25zdCBycyA9IHJl
Y29yZGluZ1JlYWRhYmxlU3RyZWFtKCk7CisKKyAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJs
ZVN0cmVhbSh1bmRlZmluZWQsIG5ldyBDb3VudFF1ZXVpbmdTdHJhdGVneSh7IGhpZ2hXYXRlck1h
cms6IDAgfSkpOworCisgIGNvbnN0IHBpcGVQcm9taXNlID0gcHJvbWlzZV9yZWplY3RzX2V4YWN0
bHkodCwgZXJyb3IxLCBycy5waXBlVG8od3MpLCAncGlwZVRvIG11c3QgcmVqZWN0IHdpdGggdGhl
IHNhbWUgZXJyb3InKTsKKworICB0LnN0ZXBfdGltZW91dCgoKSA9PiB7CisgICAgcnMuY29udHJv
bGxlci5lbnF1ZXVlKCdIZWxsbycpOworICAgIHQuc3RlcF90aW1lb3V0KCgpID0+IHJzLmNvbnRy
b2xsZXIuZXJyb3IoZXJyb3IxKSwgMTApOworICB9LCAxMCk7CisKKyAgcmV0dXJuIHBpcGVQcm9t
aXNlLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9hcnJheV9lcXVhbHMocnMuZXZlbnRzV2l0aG91
dFB1bGxzLCBbXSk7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsnYWJvcnQn
LCBlcnJvcjFdKTsKKyAgfSk7CisKK30sICdFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndh
cmQ6IGJlY29tZXMgZXJyb3JlZCBhZnRlciBvbmUgY2h1bms7IGRlc3QgbmV2ZXIgZGVzaXJlcyBj
aHVua3M7ICcgKworICAgJ3ByZXZlbnRBYm9ydCA9IGZhbHNlOyBmdWxmaWxsZWQgYWJvcnQgcHJv
bWlzZScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisKKyAgY29uc3QgcnMgPSByZWNvcmRpbmdS
ZWFkYWJsZVN0cmVhbSgpOworCisgIGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0o
eworICAgIGFib3J0KCkgeworICAgICAgdGhyb3cgZXJyb3IyOworICAgIH0KKyAgfSwgbmV3IENv
dW50UXVldWluZ1N0cmF0ZWd5KHsgaGlnaFdhdGVyTWFyazogMCB9KSk7CisKKyAgY29uc3QgcGlw
ZVByb21pc2UgPSBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjIsIHJzLnBpcGVUbyh3
cyksICdwaXBlVG8gbXVzdCByZWplY3Qgd2l0aCB0aGUgYWJvcnQgZXJyb3InKTsKKworICB0LnN0
ZXBfdGltZW91dCgoKSA9PiB7CisgICAgcnMuY29udHJvbGxlci5lbnF1ZXVlKCdIZWxsbycpOwor
ICAgIHQuc3RlcF90aW1lb3V0KCgpID0+IHJzLmNvbnRyb2xsZXIuZXJyb3IoZXJyb3IxKSwgMTAp
OworICB9LCAxMCk7CisKKyAgcmV0dXJuIHBpcGVQcm9taXNlLnRoZW4oKCkgPT4geworICAgIGFz
c2VydF9hcnJheV9lcXVhbHMocnMuZXZlbnRzV2l0aG91dFB1bGxzLCBbXSk7CisgICAgYXNzZXJ0
X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsnYWJvcnQnLCBlcnJvcjFdKTsKKyAgfSk7CisKK30s
ICdFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IGJlY29tZXMgZXJyb3JlZCBhZnRl
ciBvbmUgY2h1bms7IGRlc3QgbmV2ZXIgZGVzaXJlcyBjaHVua3M7ICcgKworICAgJ3ByZXZlbnRB
Ym9ydCA9IGZhbHNlOyByZWplY3RlZCBhYm9ydCBwcm9taXNlJyk7CisKK3Byb21pc2VfdGVzdCh0
ID0+IHsKKworICBjb25zdCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKCk7CisKKyAgY29u
c3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSh1bmRlZmluZWQsIG5ldyBDb3VudFF1ZXVp
bmdTdHJhdGVneSh7IGhpZ2hXYXRlck1hcms6IDAgfSkpOworCisgIGNvbnN0IHBpcGVQcm9taXNl
ID0gcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCBycy5waXBlVG8od3MsIHsgcHJl
dmVudEFib3J0OiB0cnVlIH0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICdwaXBlVG8gbXVzdCByZWplY3Qgd2l0aCB0aGUgc2FtZSBlcnJvcicpOworCisg
IHQuc3RlcF90aW1lb3V0KCgpID0+IHsKKyAgICBycy5jb250cm9sbGVyLmVucXVldWUoJ0hlbGxv
Jyk7CisgICAgdC5zdGVwX3RpbWVvdXQoKCkgPT4gcnMuY29udHJvbGxlci5lcnJvcihlcnJvcjEp
LCAxMCk7CisgIH0sIDEwKTsKKworICByZXR1cm4gcGlwZVByb21pc2UudGhlbigoKSA9PiB7Cisg
ICAgYXNzZXJ0X2FycmF5X2VxdWFscyhycy5ldmVudHNXaXRob3V0UHVsbHMsIFtdKTsKKyAgICBh
c3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgW10pOworICB9KTsKKworfSwgJ0Vycm9ycyBt
dXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogYmVjb21lcyBlcnJvcmVkIGFmdGVyIG9uZSBjaHVu
azsgZGVzdCBuZXZlciBkZXNpcmVzIGNodW5rczsgJyArCisgICAncHJldmVudEFib3J0ID0gdHJ1
ZScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisKKyAgY29uc3QgcnMgPSByZWNvcmRpbmdSZWFk
YWJsZVN0cmVhbSgpOworCisgIGxldCByZXNvbHZlV3JpdGVDYWxsZWQ7CisgIGNvbnN0IHdyaXRl
Q2FsbGVkUHJvbWlzZSA9IG5ldyBQcm9taXNlKHJlc29sdmUgPT4geworICAgIHJlc29sdmVXcml0
ZUNhbGxlZCA9IHJlc29sdmU7CisgIH0pOworCisgIGxldCByZXNvbHZlV3JpdGVQcm9taXNlOwor
ICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKHsKKyAgICB3cml0ZSgpIHsKKyAg
ICAgIHJlc29sdmVXcml0ZUNhbGxlZCgpOworCisgICAgICByZXR1cm4gbmV3IFByb21pc2UocmVz
b2x2ZSA9PiB7CisgICAgICAgIHJlc29sdmVXcml0ZVByb21pc2UgPSByZXNvbHZlOworICAgICAg
fSk7CisgICAgfQorICB9KTsKKworICBsZXQgcGlwZUNvbXBsZXRlID0gZmFsc2U7CisgIGNvbnN0
IHBpcGVQcm9taXNlID0gcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCBycy5waXBl
VG8od3MpKS50aGVuKCgpID0+IHsKKyAgICBwaXBlQ29tcGxldGUgPSB0cnVlOworICB9KTsKKwor
ICBycy5jb250cm9sbGVyLmVucXVldWUoJ2EnKTsKKworICByZXR1cm4gd3JpdGVDYWxsZWRQcm9t
aXNlLnRoZW4oKCkgPT4geworICAgIHJzLmNvbnRyb2xsZXIuZXJyb3IoZXJyb3IxKTsKKworICAg
IC8vIEZsdXNoIGFzeW5jIGV2ZW50cyBhbmQgdmVyaWZ5IHRoYXQgbm8gc2h1dGRvd24gb2NjdXJz
LgorICAgIHJldHVybiBmbHVzaEFzeW5jRXZlbnRzKCk7CisgIH0pLnRoZW4oKCkgPT4geworICAg
IGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ3dyaXRlJywgJ2EnXSk7IC8vIG5vICdh
Ym9ydCcKKyAgICBhc3NlcnRfZXF1YWxzKHBpcGVDb21wbGV0ZSwgZmFsc2UsICd0aGUgcGlwZSBt
dXN0IG5vdCBiZSBjb21wbGV0ZScpOworCisgICAgcmVzb2x2ZVdyaXRlUHJvbWlzZSgpOworCisg
ICAgcmV0dXJuIHBpcGVQcm9taXNlLnRoZW4oKCkgPT4geworICAgICAgYXNzZXJ0X2FycmF5X2Vx
dWFscyh3cy5ldmVudHMsIFsnd3JpdGUnLCAnYScsICdhYm9ydCcsIGVycm9yMV0pOworICAgIH0p
OworICB9KTsKKworfSwgJ0Vycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc2h1dGRv
d24gbXVzdCBub3Qgb2NjdXIgdW50aWwgdGhlIGZpbmFsIHdyaXRlIGNvbXBsZXRlcycpOworCitw
cm9taXNlX3Rlc3QodCA9PiB7CisKKyAgY29uc3QgcnMgPSByZWNvcmRpbmdSZWFkYWJsZVN0cmVh
bSgpOworCisgIGxldCByZXNvbHZlV3JpdGVDYWxsZWQ7CisgIGNvbnN0IHdyaXRlQ2FsbGVkUHJv
bWlzZSA9IG5ldyBQcm9taXNlKHJlc29sdmUgPT4geworICAgIHJlc29sdmVXcml0ZUNhbGxlZCA9
IHJlc29sdmU7CisgIH0pOworCisgIGxldCByZXNvbHZlV3JpdGVQcm9taXNlOworICBjb25zdCB3
cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKHsKKyAgICB3cml0ZSgpIHsKKyAgICAgIHJlc29s
dmVXcml0ZUNhbGxlZCgpOworCisgICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7
CisgICAgICAgIHJlc29sdmVXcml0ZVByb21pc2UgPSByZXNvbHZlOworICAgICAgfSk7CisgICAg
fQorICB9KTsKKworICBsZXQgcGlwZUNvbXBsZXRlID0gZmFsc2U7CisgIGNvbnN0IHBpcGVQcm9t
aXNlID0gcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCBycy5waXBlVG8od3MsIHsg
cHJldmVudEFib3J0OiB0cnVlIH0pKS50aGVuKCgpID0+IHsKKyAgICBwaXBlQ29tcGxldGUgPSB0
cnVlOworICB9KTsKKworICBycy5jb250cm9sbGVyLmVucXVldWUoJ2EnKTsKKworICByZXR1cm4g
d3JpdGVDYWxsZWRQcm9taXNlLnRoZW4oKCkgPT4geworICAgIHJzLmNvbnRyb2xsZXIuZXJyb3Io
ZXJyb3IxKTsKKworICAgIC8vIEZsdXNoIGFzeW5jIGV2ZW50cyBhbmQgdmVyaWZ5IHRoYXQgbm8g
c2h1dGRvd24gb2NjdXJzLgorICAgIHJldHVybiBmbHVzaEFzeW5jRXZlbnRzKCk7CisgIH0pLnRo
ZW4oKCkgPT4geworICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ3dyaXRlJywg
J2EnXSk7IC8vIG5vICdhYm9ydCcKKyAgICBhc3NlcnRfZXF1YWxzKHBpcGVDb21wbGV0ZSwgZmFs
c2UsICd0aGUgcGlwZSBtdXN0IG5vdCBiZSBjb21wbGV0ZScpOworCisgICAgcmVzb2x2ZVdyaXRl
UHJvbWlzZSgpOworICAgIHJldHVybiBwaXBlUHJvbWlzZTsKKyAgfSkudGhlbigoKSA9PiBmbHVz
aEFzeW5jRXZlbnRzKCkpLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3Mu
ZXZlbnRzLCBbJ3dyaXRlJywgJ2EnXSk7IC8vIG5vICdhYm9ydCcKKyAgfSk7CisKK30sICdFcnJv
cnMgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHNodXRkb3duIG11c3Qgbm90IG9jY3VyIHVu
dGlsIHRoZSBmaW5hbCB3cml0ZSBjb21wbGV0ZXM7IHByZXZlbnRBYm9ydCA9IHRydWUnKTsKKwor
cHJvbWlzZV90ZXN0KHQgPT4geworCisgIGNvbnN0IHJzID0gcmVjb3JkaW5nUmVhZGFibGVTdHJl
YW0oKTsKKworICBsZXQgcmVzb2x2ZVdyaXRlQ2FsbGVkOworICBjb25zdCB3cml0ZUNhbGxlZFBy
b21pc2UgPSBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKKyAgICByZXNvbHZlV3JpdGVDYWxsZWQg
PSByZXNvbHZlOworICB9KTsKKworICBsZXQgcmVzb2x2ZVdyaXRlUHJvbWlzZTsKKyAgY29uc3Qg
d3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSh7CisgICAgd3JpdGUoKSB7CisgICAgICByZXNv
bHZlV3JpdGVDYWxsZWQoKTsKKworICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4g
eworICAgICAgICByZXNvbHZlV3JpdGVQcm9taXNlID0gcmVzb2x2ZTsKKyAgICAgIH0pOworICAg
IH0KKyAgfSwgbmV3IENvdW50UXVldWluZ1N0cmF0ZWd5KHsgaGlnaFdhdGVyTWFyazogMiB9KSk7
CisKKyAgbGV0IHBpcGVDb21wbGV0ZSA9IGZhbHNlOworICBjb25zdCBwaXBlUHJvbWlzZSA9IHBy
b21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMSwgcnMucGlwZVRvKHdzKSkudGhlbigoKSA9
PiB7CisgICAgcGlwZUNvbXBsZXRlID0gdHJ1ZTsKKyAgfSk7CisKKyAgcnMuY29udHJvbGxlci5l
bnF1ZXVlKCdhJyk7CisgIHJzLmNvbnRyb2xsZXIuZW5xdWV1ZSgnYicpOworCisgIHJldHVybiB3
cml0ZUNhbGxlZFByb21pc2UudGhlbigoKSA9PiBmbHVzaEFzeW5jRXZlbnRzKCkpLnRoZW4oKCkg
PT4geworICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ3dyaXRlJywgJ2EnXSwK
KyAgICAgICd0aGUgZmlyc3QgY2h1bmsgbXVzdCBoYXZlIGJlZW4gd3JpdHRlbiwgYnV0IGFib3J0
IG11c3Qgbm90IGhhdmUgaGFwcGVuZWQgeWV0Jyk7CisgICAgYXNzZXJ0X2ZhbHNlKHBpcGVDb21w
bGV0ZSwgJ3RoZSBwaXBlIHNob3VsZCBub3QgY29tcGxldGUgd2hpbGUgdGhlIGZpcnN0IHdyaXRl
IGlzIHBlbmRpbmcnKTsKKworICAgIHJzLmNvbnRyb2xsZXIuZXJyb3IoZXJyb3IxKTsKKyAgICBy
ZXNvbHZlV3JpdGVQcm9taXNlKCk7CisgICAgcmV0dXJuIGZsdXNoQXN5bmNFdmVudHMoKTsKKyAg
fSkudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsnd3Jp
dGUnLCAnYScsICd3cml0ZScsICdiJ10sCisgICAgICAndGhlIHNlY29uZCBjaHVuayBtdXN0IGhh
dmUgYmVlbiB3cml0dGVuLCBidXQgYWJvcnQgbXVzdCBub3QgaGF2ZSBoYXBwZW5lZCB5ZXQnKTsK
KyAgICBhc3NlcnRfZmFsc2UocGlwZUNvbXBsZXRlLCAndGhlIHBpcGUgc2hvdWxkIG5vdCBjb21w
bGV0ZSB3aGlsZSB0aGUgc2Vjb25kIHdyaXRlIGlzIHBlbmRpbmcnKTsKKworICAgIHJlc29sdmVX
cml0ZVByb21pc2UoKTsKKyAgICByZXR1cm4gcGlwZVByb21pc2U7CisgIH0pLnRoZW4oKCkgPT4g
eworICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ3dyaXRlJywgJ2EnLCAnd3Jp
dGUnLCAnYicsICdhYm9ydCcsIGVycm9yMV0sCisgICAgICAnYWxsIGNodW5rcyBtdXN0IGhhdmUg
YmVlbiB3cml0dGVuIGFuZCBhYm9ydCBtdXN0IGhhdmUgaGFwcGVuZWQnKTsKKyAgfSk7CisKK30s
ICdFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHNodXRkb3duIG11c3Qgbm90IG9j
Y3VyIHVudGlsIHRoZSBmaW5hbCB3cml0ZSBjb21wbGV0ZXM7IGJlY29tZXMgZXJyb3JlZCBhZnRl
ciBmaXJzdCB3cml0ZScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisKKyAgY29uc3QgcnMgPSBy
ZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSgpOworCisgIGxldCByZXNvbHZlV3JpdGVDYWxsZWQ7Cisg
IGNvbnN0IHdyaXRlQ2FsbGVkUHJvbWlzZSA9IG5ldyBQcm9taXNlKHJlc29sdmUgPT4geworICAg
IHJlc29sdmVXcml0ZUNhbGxlZCA9IHJlc29sdmU7CisgIH0pOworCisgIGxldCByZXNvbHZlV3Jp
dGVQcm9taXNlOworICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKHsKKyAgICB3
cml0ZSgpIHsKKyAgICAgIHJlc29sdmVXcml0ZUNhbGxlZCgpOworCisgICAgICByZXR1cm4gbmV3
IFByb21pc2UocmVzb2x2ZSA9PiB7CisgICAgICAgIHJlc29sdmVXcml0ZVByb21pc2UgPSByZXNv
bHZlOworICAgICAgfSk7CisgICAgfQorICB9LCBuZXcgQ291bnRRdWV1aW5nU3RyYXRlZ3koeyBo
aWdoV2F0ZXJNYXJrOiAyIH0pKTsKKworICBsZXQgcGlwZUNvbXBsZXRlID0gZmFsc2U7CisgIGNv
bnN0IHBpcGVQcm9taXNlID0gcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCBycy5w
aXBlVG8od3MsIHsgcHJldmVudEFib3J0OiB0cnVlIH0pKS50aGVuKCgpID0+IHsKKyAgICBwaXBl
Q29tcGxldGUgPSB0cnVlOworICB9KTsKKworICBycy5jb250cm9sbGVyLmVucXVldWUoJ2EnKTsK
KyAgcnMuY29udHJvbGxlci5lbnF1ZXVlKCdiJyk7CisKKyAgcmV0dXJuIHdyaXRlQ2FsbGVkUHJv
bWlzZS50aGVuKCgpID0+IGZsdXNoQXN5bmNFdmVudHMoKSkudGhlbigoKSA9PiB7CisgICAgYXNz
ZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsnd3JpdGUnLCAnYSddLAorICAgICAgJ3RoZSBm
aXJzdCBjaHVuayBtdXN0IGhhdmUgYmVlbiB3cml0dGVuLCBidXQgYWJvcnQgbXVzdCBub3QgaGF2
ZSBoYXBwZW5lZCcpOworICAgIGFzc2VydF9mYWxzZShwaXBlQ29tcGxldGUsICd0aGUgcGlwZSBz
aG91bGQgbm90IGNvbXBsZXRlIHdoaWxlIHRoZSBmaXJzdCB3cml0ZSBpcyBwZW5kaW5nJyk7CisK
KyAgICBycy5jb250cm9sbGVyLmVycm9yKGVycm9yMSk7CisgICAgcmVzb2x2ZVdyaXRlUHJvbWlz
ZSgpOworICB9KS50aGVuKCgpID0+IGZsdXNoQXN5bmNFdmVudHMoKSkudGhlbigoKSA9PiB7Cisg
ICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsnd3JpdGUnLCAnYScsICd3cml0ZScs
ICdiJ10sCisgICAgICAndGhlIHNlY29uZCBjaHVuayBtdXN0IGhhdmUgYmVlbiB3cml0dGVuLCBi
dXQgYWJvcnQgbXVzdCBub3QgaGF2ZSBoYXBwZW5lZCcpOworICAgIGFzc2VydF9mYWxzZShwaXBl
Q29tcGxldGUsICd0aGUgcGlwZSBzaG91bGQgbm90IGNvbXBsZXRlIHdoaWxlIHRoZSBzZWNvbmQg
d3JpdGUgaXMgcGVuZGluZycpOworCisgICAgcmVzb2x2ZVdyaXRlUHJvbWlzZSgpOworICAgIHJl
dHVybiBwaXBlUHJvbWlzZTsKKyAgfSkudGhlbigoKSA9PiBmbHVzaEFzeW5jRXZlbnRzKCkpLnRo
ZW4oKCkgPT4geworICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ3dyaXRlJywg
J2EnLCAnd3JpdGUnLCAnYiddLAorICAgICAgJ2FsbCBjaHVua3MgbXVzdCBoYXZlIGJlZW4gd3Jp
dHRlbiwgYnV0IGFib3J0IG11c3Qgbm90IGhhdmUgaGFwcGVuZWQnKTsKKyAgfSk7CisKK30sICdF
cnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHNodXRkb3duIG11c3Qgbm90IG9jY3Vy
IHVudGlsIHRoZSBmaW5hbCB3cml0ZSBjb21wbGV0ZXM7IGJlY29tZXMgZXJyb3JlZCBhZnRlciBm
aXJzdCB3cml0ZTsgcHJldmVudEFib3J0ID0gdHJ1ZScpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9lcnJvci1w
cm9wYWdhdGlvbi1mb3J3YXJkLmFueS53b3JrZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9lcnJvci1wcm9w
YWdhdGlvbi1mb3J3YXJkLmFueS53b3JrZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNjZWVl
MjdkMGI4YjM1NGZmOWQ4ZTI5YTQwOWY2ZjI5MGQwNmFhMGEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5n
L2Vycm9yLXByb3BhZ2F0aW9uLWZvcndhcmQuYW55Lndvcmtlci1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSwzNCBAQAorCitGQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc3Rh
cnRzIGVycm9yZWQ7IHByZXZlbnRBYm9ydCA9IGZhbHNlOyBmdWxmaWxsZWQgYWJvcnQgcHJvbWlz
ZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBFcnJvcnMgbXVzdCBi
ZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHN0YXJ0cyBlcnJvcmVkOyBwcmV2ZW50QWJvcnQgPSBmYWxz
ZTsgcmVqZWN0ZWQgYWJvcnQgcHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0
cmVhbQorRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHN0YXJ0cyBlcnJv
cmVkOyBwcmV2ZW50QWJvcnQgPSB1bmRlZmluZWQgKGZhbHN5KTsgZnVsZmlsbGVkIGFib3J0IHBy
b21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgRXJyb3JzIG11
c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBzdGFydHMgZXJyb3JlZDsgcHJldmVudEFib3J0ID0g
bnVsbCAoZmFsc3kpOyBmdWxmaWxsZWQgYWJvcnQgcHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxl
OiBXcml0YWJsZVN0cmVhbQorRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6
IHN0YXJ0cyBlcnJvcmVkOyBwcmV2ZW50QWJvcnQgPSBmYWxzZSAoZmFsc3kpOyBmdWxmaWxsZWQg
YWJvcnQgcHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBF
cnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHN0YXJ0cyBlcnJvcmVkOyBwcmV2ZW50
QWJvcnQgPSAwIChmYWxzeSk7IGZ1bGZpbGxlZCBhYm9ydCBwcm9taXNlIENhbid0IGZpbmQgdmFy
aWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9y
d2FyZDogc3RhcnRzIGVycm9yZWQ7IHByZXZlbnRBYm9ydCA9IC0wIChmYWxzeSk7IGZ1bGZpbGxl
ZCBhYm9ydCBwcm9taXNlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlM
IEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc3RhcnRzIGVycm9yZWQ7IHByZXZl
bnRBYm9ydCA9IE5hTiAoZmFsc3kpOyBmdWxmaWxsZWQgYWJvcnQgcHJvbWlzZSBDYW4ndCBmaW5k
IHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVk
IGZvcndhcmQ6IHN0YXJ0cyBlcnJvcmVkOyBwcmV2ZW50QWJvcnQgPSAgKGZhbHN5KTsgZnVsZmls
bGVkIGFib3J0IHByb21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZB
SUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBzdGFydHMgZXJyb3JlZDsgcHJl
dmVudEFib3J0ID0gdHJ1ZSAodHJ1dGh5KSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0
cmVhbQorRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHN0YXJ0cyBlcnJv
cmVkOyBwcmV2ZW50QWJvcnQgPSBhICh0cnV0aHkpIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRh
YmxlU3RyZWFtCitGQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc3RhcnRz
IGVycm9yZWQ7IHByZXZlbnRBYm9ydCA9IDEgKHRydXRoeSkgQ2FuJ3QgZmluZCB2YXJpYWJsZTog
V3JpdGFibGVTdHJlYW0KK0ZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBz
dGFydHMgZXJyb3JlZDsgcHJldmVudEFib3J0ID0gU3ltYm9sKCkgKHRydXRoeSkgQ2FuJ3QgZmlu
ZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRl
ZCBmb3J3YXJkOiBzdGFydHMgZXJyb3JlZDsgcHJldmVudEFib3J0ID0gW29iamVjdCBPYmplY3Rd
ICh0cnV0aHkpIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIEVycm9y
cyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc3RhcnRzIGVycm9yZWQ7IHByZXZlbnRBYm9y
dCA9IHRydWUsIHByZXZlbnRDYW5jZWwgPSB0cnVlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRh
YmxlU3RyZWFtCitGQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc3RhcnRz
IGVycm9yZWQ7IHByZXZlbnRBYm9ydCA9IHRydWUsIHByZXZlbnRDYW5jZWwgPSB0cnVlLCBwcmV2
ZW50Q2xvc2UgPSB0cnVlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlM
IEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogYmVjb21lcyBlcnJvcmVkIHdoaWxl
IGVtcHR5OyBwcmV2ZW50QWJvcnQgPSBmYWxzZTsgZnVsZmlsbGVkIGFib3J0IHByb21pc2UgQ2Fu
J3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgRXJyb3JzIG11c3QgYmUgcHJv
cGFnYXRlZCBmb3J3YXJkOiBiZWNvbWVzIGVycm9yZWQgd2hpbGUgZW1wdHk7IHByZXZlbnRBYm9y
dCA9IGZhbHNlOyByZWplY3RlZCBhYm9ydCBwcm9taXNlIENhbid0IGZpbmQgdmFyaWFibGU6IFdy
aXRhYmxlU3RyZWFtCitGQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogYmVj
b21lcyBlcnJvcmVkIHdoaWxlIGVtcHR5OyBwcmV2ZW50QWJvcnQgPSB0cnVlIENhbid0IGZpbmQg
dmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQg
Zm9yd2FyZDogYmVjb21lcyBlcnJvcmVkIHdoaWxlIGVtcHR5OyBkZXN0IG5ldmVyIGRlc2lyZXMg
Y2h1bmtzOyBwcmV2ZW50QWJvcnQgPSBmYWxzZTsgZnVsZmlsbGVkIGFib3J0IHByb21pc2UgQ2Fu
J3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgRXJyb3JzIG11c3QgYmUgcHJv
cGFnYXRlZCBmb3J3YXJkOiBiZWNvbWVzIGVycm9yZWQgd2hpbGUgZW1wdHk7IGRlc3QgbmV2ZXIg
ZGVzaXJlcyBjaHVua3M7IHByZXZlbnRBYm9ydCA9IGZhbHNlOyByZWplY3RlZCBhYm9ydCBwcm9t
aXNlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIEVycm9ycyBtdXN0
IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogYmVjb21lcyBlcnJvcmVkIHdoaWxlIGVtcHR5OyBkZXN0
IG5ldmVyIGRlc2lyZXMgY2h1bmtzOyBwcmV2ZW50QWJvcnQgPSB0cnVlIENhbid0IGZpbmQgdmFy
aWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9y
d2FyZDogYmVjb21lcyBlcnJvcmVkIGFmdGVyIG9uZSBjaHVuazsgcHJldmVudEFib3J0ID0gZmFs
c2U7IGZ1bGZpbGxlZCBhYm9ydCBwcm9taXNlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxl
U3RyZWFtCitGQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogYmVjb21lcyBl
cnJvcmVkIGFmdGVyIG9uZSBjaHVuazsgcHJldmVudEFib3J0ID0gZmFsc2U7IHJlamVjdGVkIGFi
b3J0IHByb21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgRXJy
b3JzIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBiZWNvbWVzIGVycm9yZWQgYWZ0ZXIgb25l
IGNodW5rOyBwcmV2ZW50QWJvcnQgPSB0cnVlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxl
U3RyZWFtCitGQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogYmVjb21lcyBl
cnJvcmVkIGFmdGVyIG9uZSBjaHVuazsgZGVzdCBuZXZlciBkZXNpcmVzIGNodW5rczsgcHJldmVu
dEFib3J0ID0gZmFsc2U7IGZ1bGZpbGxlZCBhYm9ydCBwcm9taXNlIENhbid0IGZpbmQgdmFyaWFi
bGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2Fy
ZDogYmVjb21lcyBlcnJvcmVkIGFmdGVyIG9uZSBjaHVuazsgZGVzdCBuZXZlciBkZXNpcmVzIGNo
dW5rczsgcHJldmVudEFib3J0ID0gZmFsc2U7IHJlamVjdGVkIGFib3J0IHByb21pc2UgQ2FuJ3Qg
ZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFn
YXRlZCBmb3J3YXJkOiBiZWNvbWVzIGVycm9yZWQgYWZ0ZXIgb25lIGNodW5rOyBkZXN0IG5ldmVy
IGRlc2lyZXMgY2h1bmtzOyBwcmV2ZW50QWJvcnQgPSB0cnVlIENhbid0IGZpbmQgdmFyaWFibGU6
IFdyaXRhYmxlU3RyZWFtCitGQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDog
c2h1dGRvd24gbXVzdCBub3Qgb2NjdXIgdW50aWwgdGhlIGZpbmFsIHdyaXRlIGNvbXBsZXRlcyBD
YW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBFcnJvcnMgbXVzdCBiZSBw
cm9wYWdhdGVkIGZvcndhcmQ6IHNodXRkb3duIG11c3Qgbm90IG9jY3VyIHVudGlsIHRoZSBmaW5h
bCB3cml0ZSBjb21wbGV0ZXM7IHByZXZlbnRBYm9ydCA9IHRydWUgQ2FuJ3QgZmluZCB2YXJpYWJs
ZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJk
OiBzaHV0ZG93biBtdXN0IG5vdCBvY2N1ciB1bnRpbCB0aGUgZmluYWwgd3JpdGUgY29tcGxldGVz
OyBiZWNvbWVzIGVycm9yZWQgYWZ0ZXIgZmlyc3Qgd3JpdGUgQ2FuJ3QgZmluZCB2YXJpYWJsZTog
V3JpdGFibGVTdHJlYW0KK0ZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBz
aHV0ZG93biBtdXN0IG5vdCBvY2N1ciB1bnRpbCB0aGUgZmluYWwgd3JpdGUgY29tcGxldGVzOyBi
ZWNvbWVzIGVycm9yZWQgYWZ0ZXIgZmlyc3Qgd3JpdGU7IHByZXZlbnRBYm9ydCA9IHRydWUgQ2Fu
J3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9lcnJvci1w
cm9wYWdhdGlvbi1mb3J3YXJkLmFueS53b3JrZXIuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvZXJyb3ItcHJvcGFnYXRpb24t
Zm9yd2FyZC5hbnkud29ya2VyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjM4MjkxMzUyOGU2OTNiM2E1ZDU2
YzY2MGE0NTA2MDk4MGI1NDhjMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvZXJyb3ItcHJvcGFnYXRp
b24tZm9yd2FyZC5hbnkud29ya2VyLmh0bWwKQEAgLTAsMCArMSBAQAorPCEtLSBUaGlzIGZpbGUg
aXMgcmVxdWlyZWQgZm9yIFdlYktpdCB0ZXN0IGluZnJhc3RydWN0dXJlIHRvIHJ1biB0aGUgdGVt
cGxhdGVkIHRlc3QgLS0+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGlu
Zy9lcnJvci1wcm9wYWdhdGlvbi1mb3J3YXJkLmRlZGljYXRlZHdvcmtlci1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlw
aW5nL2Vycm9yLXByb3BhZ2F0aW9uLWZvcndhcmQuZGVkaWNhdGVkd29ya2VyLWV4cGVjdGVkLnR4
dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2NlZWUyN2QwYjhiMzU0ZmY5ZDhlMjlh
NDA5ZjZmMjkwZDA2YWEwYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvcGlwaW5nL2Vycm9yLXByb3BhZ2F0aW9uLWZvcndhcmQuZGVkaWNhdGVkd29ya2VyLWV4cGVj
dGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLQotRkFJTCBFcnJvcnMgbXVz
dCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHN0YXJ0cyBlcnJvcmVkOyBwcmV2ZW50QWJvcnQgPSBm
YWxzZTsgZnVsZmlsbGVkIGFib3J0IHByb21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFi
bGVTdHJlYW0KLUZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBzdGFydHMg
ZXJyb3JlZDsgcHJldmVudEFib3J0ID0gZmFsc2U7IHJlamVjdGVkIGFib3J0IHByb21pc2UgQ2Fu
J3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgRXJyb3JzIG11c3QgYmUgcHJv
cGFnYXRlZCBmb3J3YXJkOiBzdGFydHMgZXJyb3JlZDsgcHJldmVudEFib3J0ID0gdW5kZWZpbmVk
IChmYWxzeSk7IGZ1bGZpbGxlZCBhYm9ydCBwcm9taXNlIENhbid0IGZpbmQgdmFyaWFibGU6IFdy
aXRhYmxlU3RyZWFtCi1GQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc3Rh
cnRzIGVycm9yZWQ7IHByZXZlbnRBYm9ydCA9IG51bGwgKGZhbHN5KTsgZnVsZmlsbGVkIGFib3J0
IHByb21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgRXJyb3Jz
IG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBzdGFydHMgZXJyb3JlZDsgcHJldmVudEFib3J0
ID0gZmFsc2UgKGZhbHN5KTsgZnVsZmlsbGVkIGFib3J0IHByb21pc2UgQ2FuJ3QgZmluZCB2YXJp
YWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3
YXJkOiBzdGFydHMgZXJyb3JlZDsgcHJldmVudEFib3J0ID0gMCAoZmFsc3kpOyBmdWxmaWxsZWQg
YWJvcnQgcHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBF
cnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHN0YXJ0cyBlcnJvcmVkOyBwcmV2ZW50
QWJvcnQgPSAtMCAoZmFsc3kpOyBmdWxmaWxsZWQgYWJvcnQgcHJvbWlzZSBDYW4ndCBmaW5kIHZh
cmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGZv
cndhcmQ6IHN0YXJ0cyBlcnJvcmVkOyBwcmV2ZW50QWJvcnQgPSBOYU4gKGZhbHN5KTsgZnVsZmls
bGVkIGFib3J0IHByb21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZB
SUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBzdGFydHMgZXJyb3JlZDsgcHJl
dmVudEFib3J0ID0gIChmYWxzeSk7IGZ1bGZpbGxlZCBhYm9ydCBwcm9taXNlIENhbid0IGZpbmQg
dmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQg
Zm9yd2FyZDogc3RhcnRzIGVycm9yZWQ7IHByZXZlbnRBYm9ydCA9IHRydWUgKHRydXRoeSkgQ2Fu
J3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgRXJyb3JzIG11c3QgYmUgcHJv
cGFnYXRlZCBmb3J3YXJkOiBzdGFydHMgZXJyb3JlZDsgcHJldmVudEFib3J0ID0gYSAodHJ1dGh5
KSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBFcnJvcnMgbXVzdCBi
ZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHN0YXJ0cyBlcnJvcmVkOyBwcmV2ZW50QWJvcnQgPSAxICh0
cnV0aHkpIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIEVycm9ycyBt
dXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc3RhcnRzIGVycm9yZWQ7IHByZXZlbnRBYm9ydCA9
IFN5bWJvbCgpICh0cnV0aHkpIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1G
QUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc3RhcnRzIGVycm9yZWQ7IHBy
ZXZlbnRBYm9ydCA9IFtvYmplY3QgT2JqZWN0XSAodHJ1dGh5KSBDYW4ndCBmaW5kIHZhcmlhYmxl
OiBXcml0YWJsZVN0cmVhbQotRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6
IHN0YXJ0cyBlcnJvcmVkOyBwcmV2ZW50QWJvcnQgPSB0cnVlLCBwcmV2ZW50Q2FuY2VsID0gdHJ1
ZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBFcnJvcnMgbXVzdCBi
ZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHN0YXJ0cyBlcnJvcmVkOyBwcmV2ZW50QWJvcnQgPSB0cnVl
LCBwcmV2ZW50Q2FuY2VsID0gdHJ1ZSwgcHJldmVudENsb3NlID0gdHJ1ZSBDYW4ndCBmaW5kIHZh
cmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGZv
cndhcmQ6IGJlY29tZXMgZXJyb3JlZCB3aGlsZSBlbXB0eTsgcHJldmVudEFib3J0ID0gZmFsc2U7
IGZ1bGZpbGxlZCBhYm9ydCBwcm9taXNlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3Ry
ZWFtCi1GQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogYmVjb21lcyBlcnJv
cmVkIHdoaWxlIGVtcHR5OyBwcmV2ZW50QWJvcnQgPSBmYWxzZTsgcmVqZWN0ZWQgYWJvcnQgcHJv
bWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBFcnJvcnMgbXVz
dCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IGJlY29tZXMgZXJyb3JlZCB3aGlsZSBlbXB0eTsgcHJl
dmVudEFib3J0ID0gdHJ1ZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJ
TCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IGJlY29tZXMgZXJyb3JlZCB3aGls
ZSBlbXB0eTsgZGVzdCBuZXZlciBkZXNpcmVzIGNodW5rczsgcHJldmVudEFib3J0ID0gZmFsc2U7
IGZ1bGZpbGxlZCBhYm9ydCBwcm9taXNlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3Ry
ZWFtCi1GQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogYmVjb21lcyBlcnJv
cmVkIHdoaWxlIGVtcHR5OyBkZXN0IG5ldmVyIGRlc2lyZXMgY2h1bmtzOyBwcmV2ZW50QWJvcnQg
PSBmYWxzZTsgcmVqZWN0ZWQgYWJvcnQgcHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0
YWJsZVN0cmVhbQotRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IGJlY29t
ZXMgZXJyb3JlZCB3aGlsZSBlbXB0eTsgZGVzdCBuZXZlciBkZXNpcmVzIGNodW5rczsgcHJldmVu
dEFib3J0ID0gdHJ1ZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBF
cnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IGJlY29tZXMgZXJyb3JlZCBhZnRlciBv
bmUgY2h1bms7IHByZXZlbnRBYm9ydCA9IGZhbHNlOyBmdWxmaWxsZWQgYWJvcnQgcHJvbWlzZSBD
YW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBFcnJvcnMgbXVzdCBiZSBw
cm9wYWdhdGVkIGZvcndhcmQ6IGJlY29tZXMgZXJyb3JlZCBhZnRlciBvbmUgY2h1bms7IHByZXZl
bnRBYm9ydCA9IGZhbHNlOyByZWplY3RlZCBhYm9ydCBwcm9taXNlIENhbid0IGZpbmQgdmFyaWFi
bGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2Fy
ZDogYmVjb21lcyBlcnJvcmVkIGFmdGVyIG9uZSBjaHVuazsgcHJldmVudEFib3J0ID0gdHJ1ZSBD
YW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBFcnJvcnMgbXVzdCBiZSBw
cm9wYWdhdGVkIGZvcndhcmQ6IGJlY29tZXMgZXJyb3JlZCBhZnRlciBvbmUgY2h1bms7IGRlc3Qg
bmV2ZXIgZGVzaXJlcyBjaHVua3M7IHByZXZlbnRBYm9ydCA9IGZhbHNlOyBmdWxmaWxsZWQgYWJv
cnQgcHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBFcnJv
cnMgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IGJlY29tZXMgZXJyb3JlZCBhZnRlciBvbmUg
Y2h1bms7IGRlc3QgbmV2ZXIgZGVzaXJlcyBjaHVua3M7IHByZXZlbnRBYm9ydCA9IGZhbHNlOyBy
ZWplY3RlZCBhYm9ydCBwcm9taXNlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFt
Ci1GQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogYmVjb21lcyBlcnJvcmVk
IGFmdGVyIG9uZSBjaHVuazsgZGVzdCBuZXZlciBkZXNpcmVzIGNodW5rczsgcHJldmVudEFib3J0
ID0gdHJ1ZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBFcnJvcnMg
bXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHNodXRkb3duIG11c3Qgbm90IG9jY3VyIHVudGls
IHRoZSBmaW5hbCB3cml0ZSBjb21wbGV0ZXMgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVT
dHJlYW0KLUZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBzaHV0ZG93biBt
dXN0IG5vdCBvY2N1ciB1bnRpbCB0aGUgZmluYWwgd3JpdGUgY29tcGxldGVzOyBwcmV2ZW50QWJv
cnQgPSB0cnVlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIEVycm9y
cyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc2h1dGRvd24gbXVzdCBub3Qgb2NjdXIgdW50
aWwgdGhlIGZpbmFsIHdyaXRlIGNvbXBsZXRlczsgYmVjb21lcyBlcnJvcmVkIGFmdGVyIGZpcnN0
IHdyaXRlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIEVycm9ycyBt
dXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc2h1dGRvd24gbXVzdCBub3Qgb2NjdXIgdW50aWwg
dGhlIGZpbmFsIHdyaXRlIGNvbXBsZXRlczsgYmVjb21lcyBlcnJvcmVkIGFmdGVyIGZpcnN0IHdy
aXRlOyBwcmV2ZW50QWJvcnQgPSB0cnVlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3Ry
ZWFtCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy9waXBpbmcvZXJyb3ItcHJvcGFnYXRpb24tZm9yd2FyZC5kZWRpY2F0ZWR3
b3JrZXIuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy9waXBpbmcvZXJyb3ItcHJvcGFnYXRpb24tZm9yd2FyZC5kZWRpY2F0ZWR3b3JrZXIu
aHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDA5NDY4MDQxZTkzNWU3NzQ4Yzcw
YmQ5YzA5YjBmNjFiOWI2NWE0Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMvcGlwaW5nL2Vycm9yLXByb3BhZ2F0aW9uLWZvcndhcmQuZGVkaWNhdGVkd29ya2VyLmh0
bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxtZXRh
IGNoYXJzZXQ9InV0Zi04Ij4KLTx0aXRsZT5lcnJvci1wcm9wYWdhdGlvbi1mb3J3YXJkLmpzIGRl
ZGljYXRlZCB3b3JrZXIgd3JhcHBlciBmaWxlPC90aXRsZT4KLQotPHNjcmlwdCBzcmM9Ii9yZXNv
dXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMv
dGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotCi08c2NyaXB0PgotJ3VzZSBzdHJpY3Qn
OwotZmV0Y2hfdGVzdHNfZnJvbV93b3JrZXIobmV3IFdvcmtlcignZXJyb3ItcHJvcGFnYXRpb24t
Zm9yd2FyZC5qcycpKTsKLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9lcnJvci1wcm9wYWdhdGlv
bi1mb3J3YXJkLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3N0cmVhbXMvcGlwaW5nL2Vycm9yLXByb3BhZ2F0aW9uLWZvcndhcmQuaHRtbApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTk4YzU0NzI2MzEyOWYyNjE2M2VkNGM0MjkzYzViMzdm
NGRjNDEzNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5n
L2Vycm9yLXByb3BhZ2F0aW9uLWZvcndhcmQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDExICsw
LDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHRpdGxlPmVy
cm9yLXByb3BhZ2F0aW9uLWZvcndhcmQuanMgYnJvd3NlciBjb250ZXh0IHdyYXBwZXIgZmlsZTwv
dGl0bGU+Ci0KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3Njcmlw
dD4KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3Njcmlw
dD4KLQotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4K
LTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvcmVjb3JkaW5nLXN0cmVhbXMuanMiPjwvc2NyaXB0
PgotCi08c2NyaXB0IHNyYz0iZXJyb3ItcHJvcGFnYXRpb24tZm9yd2FyZC5qcyI+PC9zY3JpcHQ+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMvcGlwaW5nL2Vycm9yLXByb3BhZ2F0aW9uLWZvcndhcmQuanMgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Vycm9yLXBy
b3BhZ2F0aW9uLWZvcndhcmQuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk4M2I5
MmI5YzNmOGM3MDY3NWE2ZjlhNDU0OWFmNjBhOTQzOWU1NjYuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9lcnJvci1wcm9wYWdhdGlvbi1mb3J3YXJkLmpz
CisrKyAvZGV2L251bGwKQEAgLTEsNTc0ICswLDAgQEAKLSd1c2Ugc3RyaWN0JzsKLQotaWYgKHNl
bGYuaW1wb3J0U2NyaXB0cykgewotICBzZWxmLmltcG9ydFNjcmlwdHMoJy9yZXNvdXJjZXMvdGVz
dGhhcm5lc3MuanMnKTsKLSAgc2VsZi5pbXBvcnRTY3JpcHRzKCcuLi9yZXNvdXJjZXMvdGVzdC11
dGlscy5qcycpOwotICBzZWxmLmltcG9ydFNjcmlwdHMoJy4uL3Jlc291cmNlcy9yZWNvcmRpbmct
c3RyZWFtcy5qcycpOwotfQotCi1jb25zdCBlcnJvcjEgPSBuZXcgRXJyb3IoJ2Vycm9yMSEnKTsK
LWVycm9yMS5uYW1lID0gJ2Vycm9yMSc7Ci0KLWNvbnN0IGVycm9yMiA9IG5ldyBFcnJvcignZXJy
b3IyIScpOwotZXJyb3IyLm5hbWUgPSAnZXJyb3IyJzsKLQotcHJvbWlzZV90ZXN0KHQgPT4gewot
Ci0gIGNvbnN0IHJzID0gcmVjb3JkaW5nUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KCkgewot
ICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yMSk7Ci0gICAgfQotICB9KTsKLQotICBj
b25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKCk7Ci0KLSAgcmV0dXJuIHByb21pc2Vf
cmVqZWN0cyh0LCBlcnJvcjEsIHJzLnBpcGVUbyh3cyksICdwaXBlVG8gbXVzdCByZWplY3Qgd2l0
aCB0aGUgc2FtZSBlcnJvcicpCi0gICAgLnRoZW4oKCkgPT4gewotICAgICAgYXNzZXJ0X2FycmF5
X2VxdWFscyhycy5ldmVudHMsIFtdKTsKLSAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZl
bnRzLCBbJ2Fib3J0JywgZXJyb3IxXSk7Ci0gICAgfSk7Ci0KLX0sICdFcnJvcnMgbXVzdCBiZSBw
cm9wYWdhdGVkIGZvcndhcmQ6IHN0YXJ0cyBlcnJvcmVkOyBwcmV2ZW50QWJvcnQgPSBmYWxzZTsg
ZnVsZmlsbGVkIGFib3J0IHByb21pc2UnKTsKLQotcHJvbWlzZV90ZXN0KHQgPT4gewotCi0gIGNv
bnN0IHJzID0gcmVjb3JkaW5nUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KCkgewotICAgICAg
cmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yMSk7Ci0gICAgfQotICB9KTsKLQotICBjb25zdCB3
cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKHsKLSAgICBhYm9ydCgpIHsKLSAgICAgIHRocm93
IGVycm9yMjsKLSAgICB9Ci0gIH0pOwotCi0gIHJldHVybiBwcm9taXNlX3JlamVjdHModCwgZXJy
b3IyLCBycy5waXBlVG8od3MpLCAncGlwZVRvIG11c3QgcmVqZWN0IHdpdGggdGhlIGFib3J0IGVy
cm9yJykKLSAgICAudGhlbigoKSA9PiB7Ci0gICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJzLmV2
ZW50cywgW10pOwotICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsnYWJvcnQn
LCBlcnJvcjFdKTsKLSAgICB9KTsKLQotfSwgJ0Vycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9y
d2FyZDogc3RhcnRzIGVycm9yZWQ7IHByZXZlbnRBYm9ydCA9IGZhbHNlOyByZWplY3RlZCBhYm9y
dCBwcm9taXNlJyk7Ci0KLWZvciAoY29uc3QgZmFsc3kgb2YgW3VuZGVmaW5lZCwgbnVsbCwgZmFs
c2UsICswLCAtMCwgTmFOLCAnJ10pIHsKLSAgY29uc3Qgc3RyaW5nVmVyc2lvbiA9IE9iamVjdC5p
cyhmYWxzeSwgLTApID8gJy0wJyA6IFN0cmluZyhmYWxzeSk7Ci0KLSAgcHJvbWlzZV90ZXN0KHQg
PT4gewotCi0gICAgY29uc3QgcnMgPSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSh7Ci0gICAgICBz
dGFydCgpIHsKLSAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yMSk7Ci0gICAgICB9
Ci0gICAgfSk7Ci0KLSAgICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKCk7Ci0K
LSAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHQsIGVycm9yMSwgcnMucGlwZVRvKHdzLCB7IHBy
ZXZlbnRBYm9ydDogZmFsc3kgfSksICdwaXBlVG8gbXVzdCByZWplY3Qgd2l0aCB0aGUgc2FtZSBl
cnJvcicpCi0gICAgICAudGhlbigoKSA9PiB7Ci0gICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMo
cnMuZXZlbnRzLCBbXSk7Ci0gICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBb
J2Fib3J0JywgZXJyb3IxXSk7Ci0gICAgICB9KTsKLQotICB9LCBgRXJyb3JzIG11c3QgYmUgcHJv
cGFnYXRlZCBmb3J3YXJkOiBzdGFydHMgZXJyb3JlZDsgcHJldmVudEFib3J0ID0gJHtzdHJpbmdW
ZXJzaW9ufSAoZmFsc3kpOyBmdWxmaWxsZWQgYWJvcnQgYCArCi0gICAgIGBwcm9taXNlYCk7Ci19
Ci0KLWZvciAoY29uc3QgdHJ1dGh5IG9mIFt0cnVlLCAnYScsIDEsIFN5bWJvbCgpLCB7IH1dKSB7
Ci0gIHByb21pc2VfdGVzdCh0ID0+IHsKLQotICAgIGNvbnN0IHJzID0gcmVjb3JkaW5nUmVhZGFi
bGVTdHJlYW0oewotICAgICAgc3RhcnQoKSB7Ci0gICAgICAgIHJldHVybiBQcm9taXNlLnJlamVj
dChlcnJvcjEpOwotICAgICAgfQotICAgIH0pOwotCi0gICAgY29uc3Qgd3MgPSByZWNvcmRpbmdX
cml0YWJsZVN0cmVhbSgpOwotCi0gICAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0LCBlcnJvcjEs
IHJzLnBpcGVUbyh3cywgeyBwcmV2ZW50QWJvcnQ6IHRydXRoeSB9KSwKLSAgICAgICdwaXBlVG8g
bXVzdCByZWplY3Qgd2l0aCB0aGUgc2FtZSBlcnJvcicpCi0gICAgICAudGhlbigoKSA9PiB7Ci0g
ICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMocnMuZXZlbnRzLCBbXSk7Ci0gICAgICAgIGFzc2Vy
dF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbXSk7Ci0gICAgICB9KTsKLQotICB9LCBgRXJyb3Jz
IG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBzdGFydHMgZXJyb3JlZDsgcHJldmVudEFib3J0
ID0gJHtTdHJpbmcodHJ1dGh5KX0gKHRydXRoeSlgKTsKLX0KLQotCi1wcm9taXNlX3Rlc3QodCA9
PiB7Ci0KLSAgY29uc3QgcnMgPSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQo
KSB7Ci0gICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyb3IxKTsKLSAgICB9Ci0gIH0pOwot
Ci0gIGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0oKTsKLQotICByZXR1cm4gcHJv
bWlzZV9yZWplY3RzKHQsIGVycm9yMSwgcnMucGlwZVRvKHdzLCB7IHByZXZlbnRBYm9ydDogdHJ1
ZSwgcHJldmVudENhbmNlbDogdHJ1ZSB9KSwKLSAgICAncGlwZVRvIG11c3QgcmVqZWN0IHdpdGgg
dGhlIHNhbWUgZXJyb3InKQotICAgIC50aGVuKCgpID0+IHsKLSAgICAgIGFzc2VydF9hcnJheV9l
cXVhbHMocnMuZXZlbnRzLCBbXSk7Ci0gICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50
cywgW10pOwotICAgIH0pOwotCi19LCAnRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJk
OiBzdGFydHMgZXJyb3JlZDsgcHJldmVudEFib3J0ID0gdHJ1ZSwgcHJldmVudENhbmNlbCA9IHRy
dWUnKTsKLQotcHJvbWlzZV90ZXN0KHQgPT4gewotCi0gIGNvbnN0IHJzID0gcmVjb3JkaW5nUmVh
ZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KCkgewotICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0
KGVycm9yMSk7Ci0gICAgfQotICB9KTsKLQotICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxl
U3RyZWFtKCk7Ci0KLSAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0LCBlcnJvcjEsIHJzLnBpcGVU
byh3cywgeyBwcmV2ZW50QWJvcnQ6IHRydWUsIHByZXZlbnRDYW5jZWw6IHRydWUsIHByZXZlbnRD
bG9zZTogdHJ1ZSB9KSwKLSAgICAncGlwZVRvIG11c3QgcmVqZWN0IHdpdGggdGhlIHNhbWUgZXJy
b3InKQotICAgIC50aGVuKCgpID0+IHsKLSAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMocnMuZXZl
bnRzLCBbXSk7Ci0gICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgW10pOwotICAg
IH0pOwotCi19LCAnRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBzdGFydHMgZXJy
b3JlZDsgcHJldmVudEFib3J0ID0gdHJ1ZSwgcHJldmVudENhbmNlbCA9IHRydWUsIHByZXZlbnRD
bG9zZSA9IHRydWUnKTsKLQotcHJvbWlzZV90ZXN0KHQgPT4gewotCi0gIGNvbnN0IHJzID0gcmVj
b3JkaW5nUmVhZGFibGVTdHJlYW0oKTsKLQotICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxl
U3RyZWFtKCk7Ci0KLSAgY29uc3QgcGlwZVByb21pc2UgPSBwcm9taXNlX3JlamVjdHModCwgZXJy
b3IxLCBycy5waXBlVG8od3MpLCAncGlwZVRvIG11c3QgcmVqZWN0IHdpdGggdGhlIHNhbWUgZXJy
b3InKTsKLQotICBzZXRUaW1lb3V0KCgpID0+IHJzLmNvbnRyb2xsZXIuZXJyb3IoZXJyb3IxKSwg
MTApOwotCi0gIHJldHVybiBwaXBlUHJvbWlzZS50aGVuKCgpID0+IHsKLSAgICBhc3NlcnRfYXJy
YXlfZXF1YWxzKHJzLmV2ZW50c1dpdGhvdXRQdWxscywgW10pOwotICAgIGFzc2VydF9hcnJheV9l
cXVhbHMod3MuZXZlbnRzLCBbJ2Fib3J0JywgZXJyb3IxXSk7Ci0gIH0pOwotCi19LCAnRXJyb3Jz
IG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBiZWNvbWVzIGVycm9yZWQgd2hpbGUgZW1wdHk7
IHByZXZlbnRBYm9ydCA9IGZhbHNlOyBmdWxmaWxsZWQgYWJvcnQgcHJvbWlzZScpOwotCi1wcm9t
aXNlX3Rlc3QodCA9PiB7Ci0KLSAgY29uc3QgcnMgPSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSgp
OwotCi0gIGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0oewotICAgIGFib3J0KCkg
ewotICAgICAgdGhyb3cgZXJyb3IyOwotICAgIH0KLSAgfSk7Ci0KLSAgY29uc3QgcGlwZVByb21p
c2UgPSBwcm9taXNlX3JlamVjdHModCwgZXJyb3IyLCBycy5waXBlVG8od3MpLCAncGlwZVRvIG11
c3QgcmVqZWN0IHdpdGggdGhlIGFib3J0IGVycm9yJyk7Ci0KLSAgc2V0VGltZW91dCgoKSA9PiBy
cy5jb250cm9sbGVyLmVycm9yKGVycm9yMSksIDEwKTsKLQotICByZXR1cm4gcGlwZVByb21pc2Uu
dGhlbigoKSA9PiB7Ci0gICAgYXNzZXJ0X2FycmF5X2VxdWFscyhycy5ldmVudHNXaXRob3V0UHVs
bHMsIFtdKTsKLSAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWydhYm9ydCcsIGVy
cm9yMV0pOwotICB9KTsKLQotfSwgJ0Vycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDog
YmVjb21lcyBlcnJvcmVkIHdoaWxlIGVtcHR5OyBwcmV2ZW50QWJvcnQgPSBmYWxzZTsgcmVqZWN0
ZWQgYWJvcnQgcHJvbWlzZScpOwotCi1wcm9taXNlX3Rlc3QodCA9PiB7Ci0KLSAgY29uc3QgcnMg
PSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSgpOwotCi0gIGNvbnN0IHdzID0gcmVjb3JkaW5nV3Jp
dGFibGVTdHJlYW0oKTsKLQotICBjb25zdCBwaXBlUHJvbWlzZSA9IHByb21pc2VfcmVqZWN0cyh0
LCBlcnJvcjEsIHJzLnBpcGVUbyh3cywgeyBwcmV2ZW50QWJvcnQ6IHRydWUgfSksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwaXBlVG8gbXVzdCByZWplY3Qgd2l0aCB0
aGUgc2FtZSBlcnJvcicpOwotCi0gIHNldFRpbWVvdXQoKCkgPT4gcnMuY29udHJvbGxlci5lcnJv
cihlcnJvcjEpLCAxMCk7Ci0KLSAgcmV0dXJuIHBpcGVQcm9taXNlLnRoZW4oKCkgPT4gewotICAg
IGFzc2VydF9hcnJheV9lcXVhbHMocnMuZXZlbnRzV2l0aG91dFB1bGxzLCBbXSk7Ci0gICAgYXNz
ZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFtdKTsKLSAgfSk7Ci0KLX0sICdFcnJvcnMgbXVz
dCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IGJlY29tZXMgZXJyb3JlZCB3aGlsZSBlbXB0eTsgcHJl
dmVudEFib3J0ID0gdHJ1ZScpOwotCi1wcm9taXNlX3Rlc3QodCA9PiB7Ci0KLSAgY29uc3QgcnMg
PSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSgpOwotCi0gIGNvbnN0IHdzID0gcmVjb3JkaW5nV3Jp
dGFibGVTdHJlYW0odW5kZWZpbmVkLCBuZXcgQ291bnRRdWV1aW5nU3RyYXRlZ3koeyBoaWdoV2F0
ZXJNYXJrOiAwIH0pKTsKLQotICBjb25zdCBwaXBlUHJvbWlzZSA9IHByb21pc2VfcmVqZWN0cyh0
LCBlcnJvcjEsIHJzLnBpcGVUbyh3cyksICdwaXBlVG8gbXVzdCByZWplY3Qgd2l0aCB0aGUgc2Ft
ZSBlcnJvcicpOwotCi0gIHNldFRpbWVvdXQoKCkgPT4gcnMuY29udHJvbGxlci5lcnJvcihlcnJv
cjEpLCAxMCk7Ci0KLSAgcmV0dXJuIHBpcGVQcm9taXNlLnRoZW4oKCkgPT4gewotICAgIGFzc2Vy
dF9hcnJheV9lcXVhbHMocnMuZXZlbnRzV2l0aG91dFB1bGxzLCBbXSk7Ci0gICAgYXNzZXJ0X2Fy
cmF5X2VxdWFscyh3cy5ldmVudHMsIFsnYWJvcnQnLCBlcnJvcjFdKTsKLSAgfSk7Ci0KLX0sICdF
cnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IGJlY29tZXMgZXJyb3JlZCB3aGlsZSBl
bXB0eTsgZGVzdCBuZXZlciBkZXNpcmVzIGNodW5rczsgJyArCi0gICAncHJldmVudEFib3J0ID0g
ZmFsc2U7IGZ1bGZpbGxlZCBhYm9ydCBwcm9taXNlJyk7Ci0KLXByb21pc2VfdGVzdCh0ID0+IHsK
LQotICBjb25zdCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKCk7Ci0KLSAgY29uc3Qgd3Mg
PSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSh7Ci0gICAgYWJvcnQoKSB7Ci0gICAgICB0aHJvdyBl
cnJvcjI7Ci0gICAgfQotICB9LCBuZXcgQ291bnRRdWV1aW5nU3RyYXRlZ3koeyBoaWdoV2F0ZXJN
YXJrOiAwIH0pKTsKLQotICBjb25zdCBwaXBlUHJvbWlzZSA9IHByb21pc2VfcmVqZWN0cyh0LCBl
cnJvcjIsIHJzLnBpcGVUbyh3cyksICdwaXBlVG8gbXVzdCByZWplY3Qgd2l0aCB0aGUgYWJvcnQg
ZXJyb3InKTsKLQotICBzZXRUaW1lb3V0KCgpID0+IHJzLmNvbnRyb2xsZXIuZXJyb3IoZXJyb3Ix
KSwgMTApOwotCi0gIHJldHVybiBwaXBlUHJvbWlzZS50aGVuKCgpID0+IHsKLSAgICBhc3NlcnRf
YXJyYXlfZXF1YWxzKHJzLmV2ZW50c1dpdGhvdXRQdWxscywgW10pOwotICAgIGFzc2VydF9hcnJh
eV9lcXVhbHMod3MuZXZlbnRzLCBbJ2Fib3J0JywgZXJyb3IxXSk7Ci0gIH0pOwotCi19LCAnRXJy
b3JzIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBiZWNvbWVzIGVycm9yZWQgd2hpbGUgZW1w
dHk7IGRlc3QgbmV2ZXIgZGVzaXJlcyBjaHVua3M7ICcgKwotICAgJ3ByZXZlbnRBYm9ydCA9IGZh
bHNlOyByZWplY3RlZCBhYm9ydCBwcm9taXNlJyk7Ci0KLXByb21pc2VfdGVzdCh0ID0+IHsKLQot
ICBjb25zdCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKCk7Ci0KLSAgY29uc3Qgd3MgPSBy
ZWNvcmRpbmdXcml0YWJsZVN0cmVhbSh1bmRlZmluZWQsIG5ldyBDb3VudFF1ZXVpbmdTdHJhdGVn
eSh7IGhpZ2hXYXRlck1hcms6IDAgfSkpOwotCi0gIGNvbnN0IHBpcGVQcm9taXNlID0gcHJvbWlz
ZV9yZWplY3RzKHQsIGVycm9yMSwgcnMucGlwZVRvKHdzLCB7IHByZXZlbnRBYm9ydDogdHJ1ZSB9
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BpcGVUbyBtdXN0IHJl
amVjdCB3aXRoIHRoZSBzYW1lIGVycm9yJyk7Ci0KLSAgc2V0VGltZW91dCgoKSA9PiBycy5jb250
cm9sbGVyLmVycm9yKGVycm9yMSksIDEwKTsKLQotICByZXR1cm4gcGlwZVByb21pc2UudGhlbigo
KSA9PiB7Ci0gICAgYXNzZXJ0X2FycmF5X2VxdWFscyhycy5ldmVudHNXaXRob3V0UHVsbHMsIFtd
KTsKLSAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgW10pOwotICB9KTsKLQotfSwg
J0Vycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogYmVjb21lcyBlcnJvcmVkIHdoaWxl
IGVtcHR5OyBkZXN0IG5ldmVyIGRlc2lyZXMgY2h1bmtzOyAnICsKLSAgICdwcmV2ZW50QWJvcnQg
PSB0cnVlJyk7Ci0KLXByb21pc2VfdGVzdCh0ID0+IHsKLQotICBjb25zdCBycyA9IHJlY29yZGlu
Z1JlYWRhYmxlU3RyZWFtKCk7Ci0KLSAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVh
bSgpOwotCi0gIGNvbnN0IHBpcGVQcm9taXNlID0gcHJvbWlzZV9yZWplY3RzKHQsIGVycm9yMSwg
cnMucGlwZVRvKHdzKSwgJ3BpcGVUbyBtdXN0IHJlamVjdCB3aXRoIHRoZSBzYW1lIGVycm9yJyk7
Ci0KLSAgc2V0VGltZW91dCgoKSA9PiB7Ci0gICAgcnMuY29udHJvbGxlci5lbnF1ZXVlKCdIZWxs
bycpOwotICAgIHNldFRpbWVvdXQoKCkgPT4gcnMuY29udHJvbGxlci5lcnJvcihlcnJvcjEpLCAx
MCk7Ci0gIH0sIDEwKTsKLQotICByZXR1cm4gcGlwZVByb21pc2UudGhlbigoKSA9PiB7Ci0gICAg
YXNzZXJ0X2FycmF5X2VxdWFscyhycy5ldmVudHNXaXRob3V0UHVsbHMsIFtdKTsKLSAgICBhc3Nl
cnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWyd3cml0ZScsICdIZWxsbycsICdhYm9ydCcsIGVy
cm9yMV0pOwotICB9KTsKLQotfSwgJ0Vycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDog
YmVjb21lcyBlcnJvcmVkIGFmdGVyIG9uZSBjaHVuazsgcHJldmVudEFib3J0ID0gZmFsc2U7IGZ1
bGZpbGxlZCBhYm9ydCBwcm9taXNlJyk7Ci0KLXByb21pc2VfdGVzdCh0ID0+IHsKLQotICBjb25z
dCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKCk7Ci0KLSAgY29uc3Qgd3MgPSByZWNvcmRp
bmdXcml0YWJsZVN0cmVhbSh7Ci0gICAgYWJvcnQoKSB7Ci0gICAgICB0aHJvdyBlcnJvcjI7Ci0g
ICAgfQotICB9KTsKLQotICBjb25zdCBwaXBlUHJvbWlzZSA9IHByb21pc2VfcmVqZWN0cyh0LCBl
cnJvcjIsIHJzLnBpcGVUbyh3cyksICdwaXBlVG8gbXVzdCByZWplY3Qgd2l0aCB0aGUgYWJvcnQg
ZXJyb3InKTsKLQotICBzZXRUaW1lb3V0KCgpID0+IHsKLSAgICBycy5jb250cm9sbGVyLmVucXVl
dWUoJ0hlbGxvJyk7Ci0gICAgc2V0VGltZW91dCgoKSA9PiBycy5jb250cm9sbGVyLmVycm9yKGVy
cm9yMSksIDEwKTsKLSAgfSwgMTApOwotCi0gIHJldHVybiBwaXBlUHJvbWlzZS50aGVuKCgpID0+
IHsKLSAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJzLmV2ZW50c1dpdGhvdXRQdWxscywgW10pOwot
ICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ3dyaXRlJywgJ0hlbGxvJywgJ2Fi
b3J0JywgZXJyb3IxXSk7Ci0gIH0pOwotCi19LCAnRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBm
b3J3YXJkOiBiZWNvbWVzIGVycm9yZWQgYWZ0ZXIgb25lIGNodW5rOyBwcmV2ZW50QWJvcnQgPSBm
YWxzZTsgcmVqZWN0ZWQgYWJvcnQgcHJvbWlzZScpOwotCi1wcm9taXNlX3Rlc3QodCA9PiB7Ci0K
LSAgY29uc3QgcnMgPSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSgpOwotCi0gIGNvbnN0IHdzID0g
cmVjb3JkaW5nV3JpdGFibGVTdHJlYW0oKTsKLQotICBjb25zdCBwaXBlUHJvbWlzZSA9IHByb21p
c2VfcmVqZWN0cyh0LCBlcnJvcjEsIHJzLnBpcGVUbyh3cywgeyBwcmV2ZW50QWJvcnQ6IHRydWUg
fSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwaXBlVG8gbXVzdCBy
ZWplY3Qgd2l0aCB0aGUgc2FtZSBlcnJvcicpOwotCi0gIHNldFRpbWVvdXQoKCkgPT4gewotICAg
IHJzLmNvbnRyb2xsZXIuZW5xdWV1ZSgnSGVsbG8nKTsKLSAgICBzZXRUaW1lb3V0KCgpID0+IHJz
LmNvbnRyb2xsZXIuZXJyb3IoZXJyb3IxKSwgMTApOwotICB9LCAxMCk7Ci0KLSAgcmV0dXJuIHBp
cGVQcm9taXNlLnRoZW4oKCkgPT4gewotICAgIGFzc2VydF9hcnJheV9lcXVhbHMocnMuZXZlbnRz
V2l0aG91dFB1bGxzLCBbXSk7Ci0gICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsn
d3JpdGUnLCAnSGVsbG8nXSk7Ci0gIH0pOwotCi19LCAnRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRl
ZCBmb3J3YXJkOiBiZWNvbWVzIGVycm9yZWQgYWZ0ZXIgb25lIGNodW5rOyBwcmV2ZW50QWJvcnQg
PSB0cnVlJyk7Ci0KLXByb21pc2VfdGVzdCh0ID0+IHsKLQotICBjb25zdCBycyA9IHJlY29yZGlu
Z1JlYWRhYmxlU3RyZWFtKCk7Ci0KLSAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVh
bSh1bmRlZmluZWQsIG5ldyBDb3VudFF1ZXVpbmdTdHJhdGVneSh7IGhpZ2hXYXRlck1hcms6IDAg
fSkpOwotCi0gIGNvbnN0IHBpcGVQcm9taXNlID0gcHJvbWlzZV9yZWplY3RzKHQsIGVycm9yMSwg
cnMucGlwZVRvKHdzKSwgJ3BpcGVUbyBtdXN0IHJlamVjdCB3aXRoIHRoZSBzYW1lIGVycm9yJyk7
Ci0KLSAgc2V0VGltZW91dCgoKSA9PiB7Ci0gICAgcnMuY29udHJvbGxlci5lbnF1ZXVlKCdIZWxs
bycpOwotICAgIHNldFRpbWVvdXQoKCkgPT4gcnMuY29udHJvbGxlci5lcnJvcihlcnJvcjEpLCAx
MCk7Ci0gIH0sIDEwKTsKLQotICByZXR1cm4gcGlwZVByb21pc2UudGhlbigoKSA9PiB7Ci0gICAg
YXNzZXJ0X2FycmF5X2VxdWFscyhycy5ldmVudHNXaXRob3V0UHVsbHMsIFtdKTsKLSAgICBhc3Nl
cnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWydhYm9ydCcsIGVycm9yMV0pOwotICB9KTsKLQot
fSwgJ0Vycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogYmVjb21lcyBlcnJvcmVkIGFm
dGVyIG9uZSBjaHVuazsgZGVzdCBuZXZlciBkZXNpcmVzIGNodW5rczsgJyArCi0gICAncHJldmVu
dEFib3J0ID0gZmFsc2U7IGZ1bGZpbGxlZCBhYm9ydCBwcm9taXNlJyk7Ci0KLXByb21pc2VfdGVz
dCh0ID0+IHsKLQotICBjb25zdCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKCk7Ci0KLSAg
Y29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSh7Ci0gICAgYWJvcnQoKSB7Ci0gICAg
ICB0aHJvdyBlcnJvcjI7Ci0gICAgfQotICB9LCBuZXcgQ291bnRRdWV1aW5nU3RyYXRlZ3koeyBo
aWdoV2F0ZXJNYXJrOiAwIH0pKTsKLQotICBjb25zdCBwaXBlUHJvbWlzZSA9IHByb21pc2VfcmVq
ZWN0cyh0LCBlcnJvcjIsIHJzLnBpcGVUbyh3cyksICdwaXBlVG8gbXVzdCByZWplY3Qgd2l0aCB0
aGUgYWJvcnQgZXJyb3InKTsKLQotICBzZXRUaW1lb3V0KCgpID0+IHsKLSAgICBycy5jb250cm9s
bGVyLmVucXVldWUoJ0hlbGxvJyk7Ci0gICAgc2V0VGltZW91dCgoKSA9PiBycy5jb250cm9sbGVy
LmVycm9yKGVycm9yMSksIDEwKTsKLSAgfSwgMTApOwotCi0gIHJldHVybiBwaXBlUHJvbWlzZS50
aGVuKCgpID0+IHsKLSAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJzLmV2ZW50c1dpdGhvdXRQdWxs
cywgW10pOwotICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ2Fib3J0JywgZXJy
b3IxXSk7Ci0gIH0pOwotCi19LCAnRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBi
ZWNvbWVzIGVycm9yZWQgYWZ0ZXIgb25lIGNodW5rOyBkZXN0IG5ldmVyIGRlc2lyZXMgY2h1bmtz
OyAnICsKLSAgICdwcmV2ZW50QWJvcnQgPSBmYWxzZTsgcmVqZWN0ZWQgYWJvcnQgcHJvbWlzZScp
OwotCi1wcm9taXNlX3Rlc3QodCA9PiB7Ci0KLSAgY29uc3QgcnMgPSByZWNvcmRpbmdSZWFkYWJs
ZVN0cmVhbSgpOwotCi0gIGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0odW5kZWZp
bmVkLCBuZXcgQ291bnRRdWV1aW5nU3RyYXRlZ3koeyBoaWdoV2F0ZXJNYXJrOiAwIH0pKTsKLQot
ICBjb25zdCBwaXBlUHJvbWlzZSA9IHByb21pc2VfcmVqZWN0cyh0LCBlcnJvcjEsIHJzLnBpcGVU
byh3cywgeyBwcmV2ZW50QWJvcnQ6IHRydWUgfSksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICdwaXBlVG8gbXVzdCByZWplY3Qgd2l0aCB0aGUgc2FtZSBlcnJvcicpOwot
Ci0gIHNldFRpbWVvdXQoKCkgPT4gewotICAgIHJzLmNvbnRyb2xsZXIuZW5xdWV1ZSgnSGVsbG8n
KTsKLSAgICBzZXRUaW1lb3V0KCgpID0+IHJzLmNvbnRyb2xsZXIuZXJyb3IoZXJyb3IxKSwgMTAp
OwotICB9LCAxMCk7Ci0KLSAgcmV0dXJuIHBpcGVQcm9taXNlLnRoZW4oKCkgPT4gewotICAgIGFz
c2VydF9hcnJheV9lcXVhbHMocnMuZXZlbnRzV2l0aG91dFB1bGxzLCBbXSk7Ci0gICAgYXNzZXJ0
X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFtdKTsKLSAgfSk7Ci0KLX0sICdFcnJvcnMgbXVzdCBi
ZSBwcm9wYWdhdGVkIGZvcndhcmQ6IGJlY29tZXMgZXJyb3JlZCBhZnRlciBvbmUgY2h1bms7IGRl
c3QgbmV2ZXIgZGVzaXJlcyBjaHVua3M7ICcgKwotICAgJ3ByZXZlbnRBYm9ydCA9IHRydWUnKTsK
LQotcHJvbWlzZV90ZXN0KHQgPT4gewotCi0gIGNvbnN0IHJzID0gcmVjb3JkaW5nUmVhZGFibGVT
dHJlYW0oKTsKLQotICBsZXQgcmVzb2x2ZVdyaXRlQ2FsbGVkOwotICBjb25zdCB3cml0ZUNhbGxl
ZFByb21pc2UgPSBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKLSAgICByZXNvbHZlV3JpdGVDYWxs
ZWQgPSByZXNvbHZlOwotICB9KTsKLQotICBsZXQgcmVzb2x2ZVdyaXRlUHJvbWlzZTsKLSAgY29u
c3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSh7Ci0gICAgd3JpdGUoKSB7Ci0gICAgICBy
ZXNvbHZlV3JpdGVDYWxsZWQoKTsKLQotICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUg
PT4gewotICAgICAgICByZXNvbHZlV3JpdGVQcm9taXNlID0gcmVzb2x2ZTsKLSAgICAgIH0pOwot
ICAgIH0KLSAgfSk7Ci0KLSAgbGV0IHBpcGVDb21wbGV0ZSA9IGZhbHNlOwotICBjb25zdCBwaXBl
UHJvbWlzZSA9IHByb21pc2VfcmVqZWN0cyh0LCBlcnJvcjEsIHJzLnBpcGVUbyh3cykpLnRoZW4o
KCkgPT4gewotICAgIHBpcGVDb21wbGV0ZSA9IHRydWU7Ci0gIH0pOwotCi0gIHJzLmNvbnRyb2xs
ZXIuZW5xdWV1ZSgnYScpOwotCi0gIHJldHVybiB3cml0ZUNhbGxlZFByb21pc2UudGhlbigoKSA9
PiB7Ci0gICAgcnMuY29udHJvbGxlci5lcnJvcihlcnJvcjEpOwotCi0gICAgLy8gRmx1c2ggYXN5
bmMgZXZlbnRzIGFuZCB2ZXJpZnkgdGhhdCBubyBzaHV0ZG93biBvY2N1cnMuCi0gICAgcmV0dXJu
IGZsdXNoQXN5bmNFdmVudHMoKTsKLSAgfSkudGhlbigoKSA9PiB7Ci0gICAgYXNzZXJ0X2FycmF5
X2VxdWFscyh3cy5ldmVudHMsIFsnd3JpdGUnLCAnYSddKTsgLy8gbm8gJ2Fib3J0JwotICAgIGFz
c2VydF9lcXVhbHMocGlwZUNvbXBsZXRlLCBmYWxzZSwgJ3RoZSBwaXBlIG11c3Qgbm90IGJlIGNv
bXBsZXRlJyk7Ci0KLSAgICByZXNvbHZlV3JpdGVQcm9taXNlKCk7Ci0KLSAgICByZXR1cm4gcGlw
ZVByb21pc2UudGhlbigoKSA9PiB7Ci0gICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50
cywgWyd3cml0ZScsICdhJywgJ2Fib3J0JywgZXJyb3IxXSk7Ci0gICAgfSk7Ci0gIH0pOwotCi19
LCAnRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBzaHV0ZG93biBtdXN0IG5vdCBv
Y2N1ciB1bnRpbCB0aGUgZmluYWwgd3JpdGUgY29tcGxldGVzJyk7Ci0KLXByb21pc2VfdGVzdCh0
ID0+IHsKLQotICBjb25zdCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKCk7Ci0KLSAgbGV0
IHJlc29sdmVXcml0ZUNhbGxlZDsKLSAgY29uc3Qgd3JpdGVDYWxsZWRQcm9taXNlID0gbmV3IFBy
b21pc2UocmVzb2x2ZSA9PiB7Ci0gICAgcmVzb2x2ZVdyaXRlQ2FsbGVkID0gcmVzb2x2ZTsKLSAg
fSk7Ci0KLSAgbGV0IHJlc29sdmVXcml0ZVByb21pc2U7Ci0gIGNvbnN0IHdzID0gcmVjb3JkaW5n
V3JpdGFibGVTdHJlYW0oewotICAgIHdyaXRlKCkgewotICAgICAgcmVzb2x2ZVdyaXRlQ2FsbGVk
KCk7Ci0KLSAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKLSAgICAgICAgcmVz
b2x2ZVdyaXRlUHJvbWlzZSA9IHJlc29sdmU7Ci0gICAgICB9KTsKLSAgICB9Ci0gIH0pOwotCi0g
IGxldCBwaXBlQ29tcGxldGUgPSBmYWxzZTsKLSAgY29uc3QgcGlwZVByb21pc2UgPSBwcm9taXNl
X3JlamVjdHModCwgZXJyb3IxLCBycy5waXBlVG8od3MsIHsgcHJldmVudEFib3J0OiB0cnVlIH0p
KS50aGVuKCgpID0+IHsKLSAgICBwaXBlQ29tcGxldGUgPSB0cnVlOwotICB9KTsKLQotICBycy5j
b250cm9sbGVyLmVucXVldWUoJ2EnKTsKLQotICByZXR1cm4gd3JpdGVDYWxsZWRQcm9taXNlLnRo
ZW4oKCkgPT4gewotICAgIHJzLmNvbnRyb2xsZXIuZXJyb3IoZXJyb3IxKTsKLQotICAgIC8vIEZs
dXNoIGFzeW5jIGV2ZW50cyBhbmQgdmVyaWZ5IHRoYXQgbm8gc2h1dGRvd24gb2NjdXJzLgotICAg
IHJldHVybiBmbHVzaEFzeW5jRXZlbnRzKCk7Ci0gIH0pLnRoZW4oKCkgPT4gewotICAgIGFzc2Vy
dF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ3dyaXRlJywgJ2EnXSk7IC8vIG5vICdhYm9ydCcK
LSAgICBhc3NlcnRfZXF1YWxzKHBpcGVDb21wbGV0ZSwgZmFsc2UsICd0aGUgcGlwZSBtdXN0IG5v
dCBiZSBjb21wbGV0ZScpOwotCi0gICAgcmVzb2x2ZVdyaXRlUHJvbWlzZSgpOwotICAgIHJldHVy
biBwaXBlUHJvbWlzZTsKLSAgfSkudGhlbigoKSA9PiBmbHVzaEFzeW5jRXZlbnRzKCkpLnRoZW4o
KCkgPT4gewotICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ3dyaXRlJywgJ2En
XSk7IC8vIG5vICdhYm9ydCcKLSAgfSk7Ci0KLX0sICdFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVk
IGZvcndhcmQ6IHNodXRkb3duIG11c3Qgbm90IG9jY3VyIHVudGlsIHRoZSBmaW5hbCB3cml0ZSBj
b21wbGV0ZXM7IHByZXZlbnRBYm9ydCA9IHRydWUnKTsKLQotcHJvbWlzZV90ZXN0KHQgPT4gewot
Ci0gIGNvbnN0IHJzID0gcmVjb3JkaW5nUmVhZGFibGVTdHJlYW0oKTsKLQotICBsZXQgcmVzb2x2
ZVdyaXRlQ2FsbGVkOwotICBjb25zdCB3cml0ZUNhbGxlZFByb21pc2UgPSBuZXcgUHJvbWlzZShy
ZXNvbHZlID0+IHsKLSAgICByZXNvbHZlV3JpdGVDYWxsZWQgPSByZXNvbHZlOwotICB9KTsKLQot
ICBsZXQgcmVzb2x2ZVdyaXRlUHJvbWlzZTsKLSAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJs
ZVN0cmVhbSh7Ci0gICAgd3JpdGUoKSB7Ci0gICAgICByZXNvbHZlV3JpdGVDYWxsZWQoKTsKLQot
ICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4gewotICAgICAgICByZXNvbHZlV3Jp
dGVQcm9taXNlID0gcmVzb2x2ZTsKLSAgICAgIH0pOwotICAgIH0KLSAgfSwgbmV3IENvdW50UXVl
dWluZ1N0cmF0ZWd5KHsgaGlnaFdhdGVyTWFyazogMiB9KSk7Ci0KLSAgbGV0IHBpcGVDb21wbGV0
ZSA9IGZhbHNlOwotICBjb25zdCBwaXBlUHJvbWlzZSA9IHByb21pc2VfcmVqZWN0cyh0LCBlcnJv
cjEsIHJzLnBpcGVUbyh3cykpLnRoZW4oKCkgPT4gewotICAgIHBpcGVDb21wbGV0ZSA9IHRydWU7
Ci0gIH0pOwotCi0gIHJzLmNvbnRyb2xsZXIuZW5xdWV1ZSgnYScpOwotICBycy5jb250cm9sbGVy
LmVucXVldWUoJ2InKTsKLQotICByZXR1cm4gd3JpdGVDYWxsZWRQcm9taXNlLnRoZW4oKCkgPT4g
Zmx1c2hBc3luY0V2ZW50cygpKS50aGVuKCgpID0+IHsKLSAgICBhc3NlcnRfYXJyYXlfZXF1YWxz
KHdzLmV2ZW50cywgWyd3cml0ZScsICdhJ10sCi0gICAgICAndGhlIGZpcnN0IGNodW5rIG11c3Qg
aGF2ZSBiZWVuIHdyaXR0ZW4sIGJ1dCBhYm9ydCBtdXN0IG5vdCBoYXZlIGhhcHBlbmVkIHlldCcp
OwotICAgIGFzc2VydF9mYWxzZShwaXBlQ29tcGxldGUsICd0aGUgcGlwZSBzaG91bGQgbm90IGNv
bXBsZXRlIHdoaWxlIHRoZSBmaXJzdCB3cml0ZSBpcyBwZW5kaW5nJyk7Ci0KLSAgICBycy5jb250
cm9sbGVyLmVycm9yKGVycm9yMSk7Ci0gICAgcmVzb2x2ZVdyaXRlUHJvbWlzZSgpOwotICAgIHJl
dHVybiBmbHVzaEFzeW5jRXZlbnRzKCk7Ci0gIH0pLnRoZW4oKCkgPT4gewotICAgIGFzc2VydF9h
cnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ3dyaXRlJywgJ2EnLCAnd3JpdGUnLCAnYiddLAotICAg
ICAgJ3RoZSBzZWNvbmQgY2h1bmsgbXVzdCBoYXZlIGJlZW4gd3JpdHRlbiwgYnV0IGFib3J0IG11
c3Qgbm90IGhhdmUgaGFwcGVuZWQgeWV0Jyk7Ci0gICAgYXNzZXJ0X2ZhbHNlKHBpcGVDb21wbGV0
ZSwgJ3RoZSBwaXBlIHNob3VsZCBub3QgY29tcGxldGUgd2hpbGUgdGhlIHNlY29uZCB3cml0ZSBp
cyBwZW5kaW5nJyk7Ci0KLSAgICByZXNvbHZlV3JpdGVQcm9taXNlKCk7Ci0gICAgcmV0dXJuIHBp
cGVQcm9taXNlOwotICB9KS50aGVuKCgpID0+IHsKLSAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdz
LmV2ZW50cywgWyd3cml0ZScsICdhJywgJ3dyaXRlJywgJ2InLCAnYWJvcnQnLCBlcnJvcjFdLAot
ICAgICAgJ2FsbCBjaHVua3MgbXVzdCBoYXZlIGJlZW4gd3JpdHRlbiBhbmQgYWJvcnQgbXVzdCBo
YXZlIGhhcHBlbmVkJyk7Ci0gIH0pOwotCi19LCAnRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBm
b3J3YXJkOiBzaHV0ZG93biBtdXN0IG5vdCBvY2N1ciB1bnRpbCB0aGUgZmluYWwgd3JpdGUgY29t
cGxldGVzOyBiZWNvbWVzIGVycm9yZWQgYWZ0ZXIgZmlyc3Qgd3JpdGUnKTsKLQotcHJvbWlzZV90
ZXN0KHQgPT4gewotCi0gIGNvbnN0IHJzID0gcmVjb3JkaW5nUmVhZGFibGVTdHJlYW0oKTsKLQot
ICBsZXQgcmVzb2x2ZVdyaXRlQ2FsbGVkOwotICBjb25zdCB3cml0ZUNhbGxlZFByb21pc2UgPSBu
ZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKLSAgICByZXNvbHZlV3JpdGVDYWxsZWQgPSByZXNvbHZl
OwotICB9KTsKLQotICBsZXQgcmVzb2x2ZVdyaXRlUHJvbWlzZTsKLSAgY29uc3Qgd3MgPSByZWNv
cmRpbmdXcml0YWJsZVN0cmVhbSh7Ci0gICAgd3JpdGUoKSB7Ci0gICAgICByZXNvbHZlV3JpdGVD
YWxsZWQoKTsKLQotICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4gewotICAgICAg
ICByZXNvbHZlV3JpdGVQcm9taXNlID0gcmVzb2x2ZTsKLSAgICAgIH0pOwotICAgIH0KLSAgfSwg
bmV3IENvdW50UXVldWluZ1N0cmF0ZWd5KHsgaGlnaFdhdGVyTWFyazogMiB9KSk7Ci0KLSAgbGV0
IHBpcGVDb21wbGV0ZSA9IGZhbHNlOwotICBjb25zdCBwaXBlUHJvbWlzZSA9IHByb21pc2VfcmVq
ZWN0cyh0LCBlcnJvcjEsIHJzLnBpcGVUbyh3cywgeyBwcmV2ZW50QWJvcnQ6IHRydWUgfSkpLnRo
ZW4oKCkgPT4gewotICAgIHBpcGVDb21wbGV0ZSA9IHRydWU7Ci0gIH0pOwotCi0gIHJzLmNvbnRy
b2xsZXIuZW5xdWV1ZSgnYScpOwotICBycy5jb250cm9sbGVyLmVucXVldWUoJ2InKTsKLQotICBy
ZXR1cm4gd3JpdGVDYWxsZWRQcm9taXNlLnRoZW4oKCkgPT4gZmx1c2hBc3luY0V2ZW50cygpKS50
aGVuKCgpID0+IHsKLSAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWyd3cml0ZScs
ICdhJ10sCi0gICAgICAndGhlIGZpcnN0IGNodW5rIG11c3QgaGF2ZSBiZWVuIHdyaXR0ZW4sIGJ1
dCBhYm9ydCBtdXN0IG5vdCBoYXZlIGhhcHBlbmVkJyk7Ci0gICAgYXNzZXJ0X2ZhbHNlKHBpcGVD
b21wbGV0ZSwgJ3RoZSBwaXBlIHNob3VsZCBub3QgY29tcGxldGUgd2hpbGUgdGhlIGZpcnN0IHdy
aXRlIGlzIHBlbmRpbmcnKTsKLQotICAgIHJzLmNvbnRyb2xsZXIuZXJyb3IoZXJyb3IxKTsKLSAg
ICByZXNvbHZlV3JpdGVQcm9taXNlKCk7Ci0gIH0pLnRoZW4oKCkgPT4gZmx1c2hBc3luY0V2ZW50
cygpKS50aGVuKCgpID0+IHsKLSAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWyd3
cml0ZScsICdhJywgJ3dyaXRlJywgJ2InXSwKLSAgICAgICd0aGUgc2Vjb25kIGNodW5rIG11c3Qg
aGF2ZSBiZWVuIHdyaXR0ZW4sIGJ1dCBhYm9ydCBtdXN0IG5vdCBoYXZlIGhhcHBlbmVkJyk7Ci0g
ICAgYXNzZXJ0X2ZhbHNlKHBpcGVDb21wbGV0ZSwgJ3RoZSBwaXBlIHNob3VsZCBub3QgY29tcGxl
dGUgd2hpbGUgdGhlIHNlY29uZCB3cml0ZSBpcyBwZW5kaW5nJyk7Ci0KLSAgICByZXNvbHZlV3Jp
dGVQcm9taXNlKCk7Ci0gICAgcmV0dXJuIHBpcGVQcm9taXNlOwotICB9KS50aGVuKCgpID0+IGZs
dXNoQXN5bmNFdmVudHMoKSkudGhlbigoKSA9PiB7Ci0gICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3
cy5ldmVudHMsIFsnd3JpdGUnLCAnYScsICd3cml0ZScsICdiJ10sCi0gICAgICAnYWxsIGNodW5r
cyBtdXN0IGhhdmUgYmVlbiB3cml0dGVuLCBidXQgYWJvcnQgbXVzdCBub3QgaGF2ZSBoYXBwZW5l
ZCcpOwotICB9KTsKLQotfSwgJ0Vycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc2h1
dGRvd24gbXVzdCBub3Qgb2NjdXIgdW50aWwgdGhlIGZpbmFsIHdyaXRlIGNvbXBsZXRlczsgYmVj
b21lcyBlcnJvcmVkIGFmdGVyIGZpcnN0IHdyaXRlOyBwcmV2ZW50QWJvcnQgPSB0cnVlJyk7Ci0K
LWRvbmUoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvZXJyb3ItcHJvcGFnYXRpb24tZm9yd2FyZC5zZXJ2aWNl
d29ya2VyLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvZXJyb3ItcHJvcGFnYXRpb24tZm9yd2FyZC5z
ZXJ2aWNld29ya2VyLmh0dHBzLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggY2JmZWZjNjQ1ZGFjMTE2OGU2ZWU2MjIwMzAzODkwOTc5YzhmZGJiZS4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Vycm9yLXByb3BhZ2F0aW9u
LWZvcndhcmQuc2VydmljZXdvcmtlci5odHRwcy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApA
QCAtMSwzNSArMCwwIEBACi0KLVBBU1MgU2VydmljZSB3b3JrZXIgdGVzdCBzZXR1cCAKLUZBSUwg
RXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBzdGFydHMgZXJyb3JlZDsgcHJldmVu
dEFib3J0ID0gZmFsc2U7IGZ1bGZpbGxlZCBhYm9ydCBwcm9taXNlIENhbid0IGZpbmQgdmFyaWFi
bGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2Fy
ZDogc3RhcnRzIGVycm9yZWQ7IHByZXZlbnRBYm9ydCA9IGZhbHNlOyByZWplY3RlZCBhYm9ydCBw
cm9taXNlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIEVycm9ycyBt
dXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc3RhcnRzIGVycm9yZWQ7IHByZXZlbnRBYm9ydCA9
IHVuZGVmaW5lZCAoZmFsc3kpOyBmdWxmaWxsZWQgYWJvcnQgcHJvbWlzZSBDYW4ndCBmaW5kIHZh
cmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGZv
cndhcmQ6IHN0YXJ0cyBlcnJvcmVkOyBwcmV2ZW50QWJvcnQgPSBudWxsIChmYWxzeSk7IGZ1bGZp
bGxlZCBhYm9ydCBwcm9taXNlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1G
QUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc3RhcnRzIGVycm9yZWQ7IHBy
ZXZlbnRBYm9ydCA9IGZhbHNlIChmYWxzeSk7IGZ1bGZpbGxlZCBhYm9ydCBwcm9taXNlIENhbid0
IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIEVycm9ycyBtdXN0IGJlIHByb3Bh
Z2F0ZWQgZm9yd2FyZDogc3RhcnRzIGVycm9yZWQ7IHByZXZlbnRBYm9ydCA9IDAgKGZhbHN5KTsg
ZnVsZmlsbGVkIGFib3J0IHByb21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJl
YW0KLUZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBzdGFydHMgZXJyb3Jl
ZDsgcHJldmVudEFib3J0ID0gLTAgKGZhbHN5KTsgZnVsZmlsbGVkIGFib3J0IHByb21pc2UgQ2Fu
J3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgRXJyb3JzIG11c3QgYmUgcHJv
cGFnYXRlZCBmb3J3YXJkOiBzdGFydHMgZXJyb3JlZDsgcHJldmVudEFib3J0ID0gTmFOIChmYWxz
eSk7IGZ1bGZpbGxlZCBhYm9ydCBwcm9taXNlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxl
U3RyZWFtCi1GQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc3RhcnRzIGVy
cm9yZWQ7IHByZXZlbnRBYm9ydCA9ICAoZmFsc3kpOyBmdWxmaWxsZWQgYWJvcnQgcHJvbWlzZSBD
YW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBFcnJvcnMgbXVzdCBiZSBw
cm9wYWdhdGVkIGZvcndhcmQ6IHN0YXJ0cyBlcnJvcmVkOyBwcmV2ZW50QWJvcnQgPSB0cnVlICh0
cnV0aHkpIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIEVycm9ycyBt
dXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDogc3RhcnRzIGVycm9yZWQ7IHByZXZlbnRBYm9ydCA9
IGEgKHRydXRoeSkgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgRXJy
b3JzIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBzdGFydHMgZXJyb3JlZDsgcHJldmVudEFi
b3J0ID0gMSAodHJ1dGh5KSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJ
TCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHN0YXJ0cyBlcnJvcmVkOyBwcmV2
ZW50QWJvcnQgPSBTeW1ib2woKSAodHJ1dGh5KSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJs
ZVN0cmVhbQotRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHN0YXJ0cyBl
cnJvcmVkOyBwcmV2ZW50QWJvcnQgPSBbb2JqZWN0IE9iamVjdF0gKHRydXRoeSkgQ2FuJ3QgZmlu
ZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRl
ZCBmb3J3YXJkOiBzdGFydHMgZXJyb3JlZDsgcHJldmVudEFib3J0ID0gdHJ1ZSwgcHJldmVudENh
bmNlbCA9IHRydWUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgRXJy
b3JzIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBzdGFydHMgZXJyb3JlZDsgcHJldmVudEFi
b3J0ID0gdHJ1ZSwgcHJldmVudENhbmNlbCA9IHRydWUsIHByZXZlbnRDbG9zZSA9IHRydWUgQ2Fu
J3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgRXJyb3JzIG11c3QgYmUgcHJv
cGFnYXRlZCBmb3J3YXJkOiBiZWNvbWVzIGVycm9yZWQgd2hpbGUgZW1wdHk7IHByZXZlbnRBYm9y
dCA9IGZhbHNlOyBmdWxmaWxsZWQgYWJvcnQgcHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBX
cml0YWJsZVN0cmVhbQotRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IGJl
Y29tZXMgZXJyb3JlZCB3aGlsZSBlbXB0eTsgcHJldmVudEFib3J0ID0gZmFsc2U7IHJlamVjdGVk
IGFib3J0IHByb21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwg
RXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBiZWNvbWVzIGVycm9yZWQgd2hpbGUg
ZW1wdHk7IHByZXZlbnRBYm9ydCA9IHRydWUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVT
dHJlYW0KLUZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBiZWNvbWVzIGVy
cm9yZWQgd2hpbGUgZW1wdHk7IGRlc3QgbmV2ZXIgZGVzaXJlcyBjaHVua3M7IHByZXZlbnRBYm9y
dCA9IGZhbHNlOyBmdWxmaWxsZWQgYWJvcnQgcHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBX
cml0YWJsZVN0cmVhbQotRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IGJl
Y29tZXMgZXJyb3JlZCB3aGlsZSBlbXB0eTsgZGVzdCBuZXZlciBkZXNpcmVzIGNodW5rczsgcHJl
dmVudEFib3J0ID0gZmFsc2U7IHJlamVjdGVkIGFib3J0IHByb21pc2UgQ2FuJ3QgZmluZCB2YXJp
YWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3
YXJkOiBiZWNvbWVzIGVycm9yZWQgd2hpbGUgZW1wdHk7IGRlc3QgbmV2ZXIgZGVzaXJlcyBjaHVu
a3M7IHByZXZlbnRBYm9ydCA9IHRydWUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJl
YW0KLUZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBiZWNvbWVzIGVycm9y
ZWQgYWZ0ZXIgb25lIGNodW5rOyBwcmV2ZW50QWJvcnQgPSBmYWxzZTsgZnVsZmlsbGVkIGFib3J0
IHByb21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgRXJyb3Jz
IG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBiZWNvbWVzIGVycm9yZWQgYWZ0ZXIgb25lIGNo
dW5rOyBwcmV2ZW50QWJvcnQgPSBmYWxzZTsgcmVqZWN0ZWQgYWJvcnQgcHJvbWlzZSBDYW4ndCBm
aW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdh
dGVkIGZvcndhcmQ6IGJlY29tZXMgZXJyb3JlZCBhZnRlciBvbmUgY2h1bms7IHByZXZlbnRBYm9y
dCA9IHRydWUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgRXJyb3Jz
IG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBiZWNvbWVzIGVycm9yZWQgYWZ0ZXIgb25lIGNo
dW5rOyBkZXN0IG5ldmVyIGRlc2lyZXMgY2h1bmtzOyBwcmV2ZW50QWJvcnQgPSBmYWxzZTsgZnVs
ZmlsbGVkIGFib3J0IHByb21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0K
LUZBSUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBiZWNvbWVzIGVycm9yZWQg
YWZ0ZXIgb25lIGNodW5rOyBkZXN0IG5ldmVyIGRlc2lyZXMgY2h1bmtzOyBwcmV2ZW50QWJvcnQg
PSBmYWxzZTsgcmVqZWN0ZWQgYWJvcnQgcHJvbWlzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0
YWJsZVN0cmVhbQotRkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IGJlY29t
ZXMgZXJyb3JlZCBhZnRlciBvbmUgY2h1bms7IGRlc3QgbmV2ZXIgZGVzaXJlcyBjaHVua3M7IHBy
ZXZlbnRBYm9ydCA9IHRydWUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZB
SUwgRXJyb3JzIG11c3QgYmUgcHJvcGFnYXRlZCBmb3J3YXJkOiBzaHV0ZG93biBtdXN0IG5vdCBv
Y2N1ciB1bnRpbCB0aGUgZmluYWwgd3JpdGUgY29tcGxldGVzIENhbid0IGZpbmQgdmFyaWFibGU6
IFdyaXRhYmxlU3RyZWFtCi1GQUlMIEVycm9ycyBtdXN0IGJlIHByb3BhZ2F0ZWQgZm9yd2FyZDog
c2h1dGRvd24gbXVzdCBub3Qgb2NjdXIgdW50aWwgdGhlIGZpbmFsIHdyaXRlIGNvbXBsZXRlczsg
cHJldmVudEFib3J0ID0gdHJ1ZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQot
RkFJTCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHNodXRkb3duIG11c3Qgbm90
IG9jY3VyIHVudGlsIHRoZSBmaW5hbCB3cml0ZSBjb21wbGV0ZXM7IGJlY29tZXMgZXJyb3JlZCBh
ZnRlciBmaXJzdCB3cml0ZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJ
TCBFcnJvcnMgbXVzdCBiZSBwcm9wYWdhdGVkIGZvcndhcmQ6IHNodXRkb3duIG11c3Qgbm90IG9j
Y3VyIHVudGlsIHRoZSBmaW5hbCB3cml0ZSBjb21wbGV0ZXM7IGJlY29tZXMgZXJyb3JlZCBhZnRl
ciBmaXJzdCB3cml0ZTsgcHJldmVudEFib3J0ID0gdHJ1ZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBX
cml0YWJsZVN0cmVhbQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Vycm9yLXByb3BhZ2F0aW9uLWZvcndhcmQu
c2VydmljZXdvcmtlci5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9lcnJvci1wcm9wYWdhdGlvbi1mb3J3YXJkLnNl
cnZpY2V3b3JrZXIuaHR0cHMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTQ1
ZjIwYjcxNmIzY2MwNGQ2YWY0M2NmYTI3MmY3MWUzZTFjMDEyOS4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Vycm9yLXByb3BhZ2F0aW9uLWZvcndhcmQu
c2VydmljZXdvcmtlci5odHRwcy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAot
PCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08dGl0bGU+ZXJyb3ItcHJv
cGFnYXRpb24tZm9yd2FyZC5qcyBzZXJ2aWNlIHdvcmtlciB3cmFwcGVyIGZpbGU8L3RpdGxlPgot
Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2Ny
aXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2Ny
aXB0IHNyYz0iL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9yZXNvdXJjZXMvdGVzdC1o
ZWxwZXJzLnN1Yi5qcyI+PC9zY3JpcHQ+Ci0KLTxzY3JpcHQ+Ci0ndXNlIHN0cmljdCc7Ci1zZXJ2
aWNlX3dvcmtlcl90ZXN0KCdlcnJvci1wcm9wYWdhdGlvbi1mb3J3YXJkLmpzJywgJ1NlcnZpY2Ug
d29ya2VyIHRlc3Qgc2V0dXAnKTsKLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9lcnJvci1wcm9w
YWdhdGlvbi1mb3J3YXJkLnNoYXJlZHdvcmtlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Vycm9yLXByb3Bh
Z2F0aW9uLWZvcndhcmQuc2hhcmVkd29ya2VyLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDlkNWQyNTA5ZDc4NDdlOGNkNmZlNjYwNmFhNjBjZGQzM2FhNDc0ZS4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Vycm9yLXBy
b3BhZ2F0aW9uLWZvcndhcmQuc2hhcmVkd29ya2VyLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxs
CkBAIC0xLDUgKzAsMCBAQAotQ09OU09MRSBNRVNTQUdFOiBSZWZlcmVuY2VFcnJvcjogQ2FuJ3Qg
ZmluZCB2YXJpYWJsZTogU2hhcmVkV29ya2VyCi0KLUhhcm5lc3MgRXJyb3IgKEZBSUwpLCBtZXNz
YWdlID0gUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IFNoYXJlZFdvcmtlcgot
Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy9waXBpbmcvZXJyb3ItcHJvcGFnYXRpb24tZm9yd2FyZC5zaGFyZWR3b3JrZXIu
aHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy9waXBpbmcvZXJyb3ItcHJvcGFnYXRpb24tZm9yd2FyZC5zaGFyZWR3b3JrZXIuaHRtbApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTNkMDJjMDNmMzQ2NTdkOTQzNjk4MzJhYTFjM2Vm
M2E5ZGYwZjI5MS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlw
aW5nL2Vycm9yLXByb3BhZ2F0aW9uLWZvcndhcmQuc2hhcmVkd29ya2VyLmh0bWwKKysrIC9kZXYv
bnVsbApAQCAtMSwxMSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9InV0
Zi04Ij4KLTx0aXRsZT5lcnJvci1wcm9wYWdhdGlvbi1mb3J3YXJkLmpzIHNoYXJlZCB3b3JrZXIg
d3JhcHBlciBmaWxlPC90aXRsZT4KLQotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5l
c3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBv
cnQuanMiPjwvc2NyaXB0PgotCi08c2NyaXB0PgotJ3VzZSBzdHJpY3QnOwotZmV0Y2hfdGVzdHNf
ZnJvbV93b3JrZXIobmV3IFNoYXJlZFdvcmtlcignZXJyb3ItcHJvcGFnYXRpb24tZm9yd2FyZC5q
cycpKTsKLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9mbG93LWNvbnRyb2wuYW55LWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy9waXBpbmcvZmxvdy1jb250cm9sLmFueS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmNlNWMy
MzBkZTM5NmE3OGNjYzJlOTJmNGI1NDAyMGY2NjUyNDk4MAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcv
Zmxvdy1jb250cm9sLmFueS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw3IEBACisKK0ZBSUwgUGlw
aW5nIGZyb20gYSBub24tZW1wdHkgUmVhZGFibGVTdHJlYW0gaW50byBhIFdyaXRhYmxlU3RyZWFt
IHRoYXQgZG9lcyBub3QgZGVzaXJlIGNodW5rcyBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWpl
Y3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJUeXBlRXJyb3I6IHdzLmNvbnRyb2xsZXIuZXJyb3Ig
aXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3MuY29udHJvbGxlci5lcnJvcihlcnJvcjEpJywgJ3dz
LmNvbnRyb2xsZXIuZXJyb3InIGlzIHVuZGVmaW5lZCkiCitGQUlMIFBpcGluZyBmcm9tIGEgbm9u
LWVtcHR5IFJlYWRhYmxlU3RyZWFtIGludG8gYSBXcml0YWJsZVN0cmVhbSB0aGF0IGRvZXMgbm90
IGRlc2lyZSBjaHVua3MsIGJ1dCB0aGVuIGRvZXMgd3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0
aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicgaXMgdW5kZWZpbmVkKQor
RkFJTCBQaXBpbmcgZnJvbSBhbiBlbXB0eSBSZWFkYWJsZVN0cmVhbSBpbnRvIGEgV3JpdGFibGVT
dHJlYW0gdGhhdCBkb2VzIG5vdCBkZXNpcmUgY2h1bmtzLCBidXQgdGhlbiB0aGUgcmVhZGFibGUg
c3RyZWFtIGJlY29tZXMgbm9uLWVtcHR5IGFuZCB0aGUgd3JpdGFibGUgc3RyZWFtIHN0YXJ0cyBk
ZXNpcmluZyBjaHVua3Mgd3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdl
dFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicgaXMgdW5kZWZpbmVkKQorRkFJTCBQaXBpbmcgZnJv
bSBhIFJlYWRhYmxlU3RyZWFtIHRvIGEgV3JpdGFibGVTdHJlYW0gdGhhdCBkZXNpcmVzIG1vcmUg
Y2h1bmtzIGJlZm9yZSBmaW5pc2hpbmcgd2l0aCBwcmV2aW91cyBvbmVzIHdzLmdldFdyaXRlciBp
cyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlz
IHVuZGVmaW5lZCkKK0ZBSUwgUGlwaW5nIHRvIGEgV3JpdGFibGVTdHJlYW0gdGhhdCBkb2VzIG5v
dCBjb25zdW1lIHRoZSB3cml0ZXMgZmFzdCBlbm91Z2ggZXhlcnRzIGJhY2twcmVzc3VyZSBvbiB0
aGUgUmVhZGFibGVTdHJlYW0gYXNzZXJ0X2FycmF5X2VxdWFsczogYXQgc3RlcCA0LCB0aGUgZGVz
aXJlZFNpemUgYXQgdGhlIGxhc3QgZW5xdWV1ZSAoc3RlcCAzKSBtdXN0IGhhdmUgYmVlbiAwIGV4
cGVjdGVkIHByb3BlcnR5IDEgdG8gYmUgMCBidXQgZ290IDEgKGV4cGVjdGVkIGFycmF5IFsxLCAw
XSBnb3QgWzEsIDFdKQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Zsb3ctY29udHJvbC5hbnkuaHRtbCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcv
Zmxvdy1jb250cm9sLmFueS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzODI5MTM1MjhlNjkzYjNhNWQ1NmM2
NjBhNDUwNjA5ODBiNTQ4YzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Zsb3ctY29udHJvbC5hbnku
aHRtbApAQCAtMCwwICsxIEBACis8IS0tIFRoaXMgZmlsZSBpcyByZXF1aXJlZCBmb3IgV2ViS2l0
IHRlc3QgaW5mcmFzdHJ1Y3R1cmUgdG8gcnVuIHRoZSB0ZW1wbGF0ZWQgdGVzdCAtLT4KXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Zsb3ctY29udHJvbC5hbnkuanMg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlw
aW5nL2Zsb3ctY29udHJvbC5hbnkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGI4M2MwMTFmNGE3MThkZGRkZWY4
ODZjMjU1ODhjODhiMDA3ZTQzOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvZmxvdy1jb250cm9sLmFu
eS5qcwpAQCAtMCwwICsxLDI5NyBAQAorLy8gTUVUQTogZ2xvYmFsPXdpbmRvdyx3b3JrZXIsanNz
aGVsbAorLy8gTUVUQTogc2NyaXB0PS4uL3Jlc291cmNlcy90ZXN0LXV0aWxzLmpzCisvLyBNRVRB
OiBzY3JpcHQ9Li4vcmVzb3VyY2VzL3JzLXV0aWxzLmpzCisvLyBNRVRBOiBzY3JpcHQ9Li4vcmVz
b3VyY2VzL3JlY29yZGluZy1zdHJlYW1zLmpzCisndXNlIHN0cmljdCc7CisKK2NvbnN0IGVycm9y
MSA9IG5ldyBFcnJvcignZXJyb3IxIScpOworZXJyb3IxLm5hbWUgPSAnZXJyb3IxJzsKKworcHJv
bWlzZV90ZXN0KHQgPT4geworCisgIGNvbnN0IHJzID0gcmVjb3JkaW5nUmVhZGFibGVTdHJlYW0o
eworICAgIHN0YXJ0KGNvbnRyb2xsZXIpIHsKKyAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYScp
OworICAgICAgY29udHJvbGxlci5lbnF1ZXVlKCdiJyk7CisgICAgICBjb250cm9sbGVyLmNsb3Nl
KCk7CisgICAgfQorICB9KTsKKworICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFt
KHVuZGVmaW5lZCwgbmV3IENvdW50UXVldWluZ1N0cmF0ZWd5KHsgaGlnaFdhdGVyTWFyazogMCB9
KSk7CisKKyAgY29uc3QgcGlwZVByb21pc2UgPSBycy5waXBlVG8od3MsIHsgcHJldmVudENhbmNl
bDogdHJ1ZSB9KTsKKworICAvLyBXYWl0IGFuZCBtYWtlIHN1cmUgaXQgZG9lc24ndCBkbyBhbnkg
cmVhZGluZy4KKyAgcmV0dXJuIGZsdXNoQXN5bmNFdmVudHMoKS50aGVuKCgpID0+IHsKKyAgICB3
cy5jb250cm9sbGVyLmVycm9yKGVycm9yMSk7CisgIH0pCisgIC50aGVuKCgpID0+IHByb21pc2Vf
cmVqZWN0c19leGFjdGx5KHQsIGVycm9yMSwgcGlwZVByb21pc2UsICdwaXBlVG8gbXVzdCByZWpl
Y3Qgd2l0aCB0aGUgc2FtZSBlcnJvcicpKQorICAudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X2Fy
cmF5X2VxdWFscyhycy5ldmVudHNXaXRob3V0UHVsbHMsIFtdKTsKKyAgICBhc3NlcnRfYXJyYXlf
ZXF1YWxzKHdzLmV2ZW50cywgW10pOworICB9KQorICAudGhlbigoKSA9PiByZWFkYWJsZVN0cmVh
bVRvQXJyYXkocnMpKQorICAudGhlbihjaHVua3NOb3RQcmV2aW91c2x5UmVhZCA9PiB7CisgICAg
YXNzZXJ0X2FycmF5X2VxdWFscyhjaHVua3NOb3RQcmV2aW91c2x5UmVhZCwgWydhJywgJ2InXSk7
CisgIH0pOworCit9LCAnUGlwaW5nIGZyb20gYSBub24tZW1wdHkgUmVhZGFibGVTdHJlYW0gaW50
byBhIFdyaXRhYmxlU3RyZWFtIHRoYXQgZG9lcyBub3QgZGVzaXJlIGNodW5rcycpOworCitwcm9t
aXNlX3Rlc3QoKCkgPT4geworCisgIGNvbnN0IHJzID0gcmVjb3JkaW5nUmVhZGFibGVTdHJlYW0o
eworICAgIHN0YXJ0KGNvbnRyb2xsZXIpIHsKKyAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYicp
OworICAgICAgY29udHJvbGxlci5jbG9zZSgpOworICAgIH0KKyAgfSk7CisKKyAgbGV0IHJlc29s
dmVXcml0ZVByb21pc2U7CisgIGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0oewor
ICAgIHdyaXRlKCkgeworICAgICAgaWYgKCFyZXNvbHZlV3JpdGVQcm9taXNlKSB7CisgICAgICAg
IC8vIGZpcnN0IHdyaXRlCisgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsK
KyAgICAgICAgICByZXNvbHZlV3JpdGVQcm9taXNlID0gcmVzb2x2ZTsKKyAgICAgICAgfSk7Cisg
ICAgICB9CisgICAgICByZXR1cm4gdW5kZWZpbmVkOworICAgIH0KKyAgfSk7CisKKyAgY29uc3Qg
d3JpdGVyID0gd3MuZ2V0V3JpdGVyKCk7CisgIGNvbnN0IGZpcnN0V3JpdGVQcm9taXNlID0gd3Jp
dGVyLndyaXRlKCdhJyk7CisgIGFzc2VydF9lcXVhbHMod3JpdGVyLmRlc2lyZWRTaXplLCAwLCAn
YWZ0ZXIgd3JpdGluZyB0aGUgd3JpdGVyXCdzIGRlc2lyZWRTaXplIG11c3QgYmUgMCcpOworICB3
cml0ZXIucmVsZWFzZUxvY2soKTsKKworICAvLyBmaXJzdFdyaXRlUHJvbWlzZSB3b24ndCBzZXR0
bGUgdW50aWwgd2UgY2FsbCByZXNvbHZlV3JpdGVQcm9taXNlLgorCisgIGNvbnN0IHBpcGVQcm9t
aXNlID0gcnMucGlwZVRvKHdzKTsKKworICByZXR1cm4gZmx1c2hBc3luY0V2ZW50cygpLnRoZW4o
KCkgPT4gcmVzb2x2ZVdyaXRlUHJvbWlzZSgpKQorICAgIC50aGVuKCgpID0+IFByb21pc2UuYWxs
KFtmaXJzdFdyaXRlUHJvbWlzZSwgcGlwZVByb21pc2VdKSkKKyAgICAudGhlbigoKSA9PiB7Cisg
ICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJzLmV2ZW50c1dpdGhvdXRQdWxscywgW10pOworICAg
ICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsnd3JpdGUnLCAnYScsICd3cml0ZScs
ICdiJywgJ2Nsb3NlJ10pOworICAgIH0pOworCit9LCAnUGlwaW5nIGZyb20gYSBub24tZW1wdHkg
UmVhZGFibGVTdHJlYW0gaW50byBhIFdyaXRhYmxlU3RyZWFtIHRoYXQgZG9lcyBub3QgZGVzaXJl
IGNodW5rcywgYnV0IHRoZW4gZG9lcycpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworCisgIGNv
bnN0IHJzID0gcmVjb3JkaW5nUmVhZGFibGVTdHJlYW0oKTsKKworICBsZXQgcmVzb2x2ZVdyaXRl
UHJvbWlzZTsKKyAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSh7CisgICAgd3Jp
dGUoKSB7CisgICAgICBpZiAoIXJlc29sdmVXcml0ZVByb21pc2UpIHsKKyAgICAgICAgLy8gZmly
c3Qgd3JpdGUKKyAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4geworICAgICAg
ICAgIHJlc29sdmVXcml0ZVByb21pc2UgPSByZXNvbHZlOworICAgICAgICB9KTsKKyAgICAgIH0K
KyAgICAgIHJldHVybiB1bmRlZmluZWQ7CisgICAgfQorICB9KTsKKworICBjb25zdCB3cml0ZXIg
PSB3cy5nZXRXcml0ZXIoKTsKKyAgd3JpdGVyLndyaXRlKCdhJyk7CisKKyAgcmV0dXJuIGZsdXNo
QXN5bmNFdmVudHMoKS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2
ZW50cywgWyd3cml0ZScsICdhJ10pOworICAgIGFzc2VydF9lcXVhbHMod3JpdGVyLmRlc2lyZWRT
aXplLCAwLCAnYWZ0ZXIgd3JpdGluZyB0aGUgd3JpdGVyXCdzIGRlc2lyZWRTaXplIG11c3QgYmUg
MCcpOworICAgIHdyaXRlci5yZWxlYXNlTG9jaygpOworCisgICAgY29uc3QgcGlwZVByb21pc2Ug
PSBycy5waXBlVG8od3MpOworCisgICAgcnMuY29udHJvbGxlci5lbnF1ZXVlKCdiJyk7CisgICAg
cmVzb2x2ZVdyaXRlUHJvbWlzZSgpOworICAgIHJzLmNvbnRyb2xsZXIuY2xvc2UoKTsKKworICAg
IHJldHVybiBwaXBlUHJvbWlzZS50aGVuKCgpID0+IHsKKyAgICAgIGFzc2VydF9hcnJheV9lcXVh
bHMocnMuZXZlbnRzV2l0aG91dFB1bGxzLCBbXSk7CisgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxz
KHdzLmV2ZW50cywgWyd3cml0ZScsICdhJywgJ3dyaXRlJywgJ2InLCAnY2xvc2UnXSk7CisgICAg
fSk7CisgIH0pOworCit9LCAnUGlwaW5nIGZyb20gYW4gZW1wdHkgUmVhZGFibGVTdHJlYW0gaW50
byBhIFdyaXRhYmxlU3RyZWFtIHRoYXQgZG9lcyBub3QgZGVzaXJlIGNodW5rcywgYnV0IHRoZW4g
dGhlIHJlYWRhYmxlICcgKworICAgJ3N0cmVhbSBiZWNvbWVzIG5vbi1lbXB0eSBhbmQgdGhlIHdy
aXRhYmxlIHN0cmVhbSBzdGFydHMgZGVzaXJpbmcgY2h1bmtzJyk7CisKK3Byb21pc2VfdGVzdCgo
KSA9PiB7CisgIGNvbnN0IHVucmVhZENodW5rcyA9IFsnYicsICdjJywgJ2QnXTsKKworICBjb25z
dCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKHsKKyAgICBwdWxsKGNvbnRyb2xsZXIpIHsK
KyAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSh1bnJlYWRDaHVua3Muc2hpZnQoKSk7CisgICAgICBp
ZiAodW5yZWFkQ2h1bmtzLmxlbmd0aCA9PT0gMCkgeworICAgICAgICBjb250cm9sbGVyLmNsb3Nl
KCk7CisgICAgICB9CisgICAgfQorICB9LCBuZXcgQ291bnRRdWV1aW5nU3RyYXRlZ3koeyBoaWdo
V2F0ZXJNYXJrOiAwIH0pKTsKKworICBsZXQgcmVzb2x2ZVdyaXRlUHJvbWlzZTsKKyAgY29uc3Qg
d3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSh7CisgICAgd3JpdGUoKSB7CisgICAgICBpZiAo
IXJlc29sdmVXcml0ZVByb21pc2UpIHsKKyAgICAgICAgLy8gZmlyc3Qgd3JpdGUKKyAgICAgICAg
cmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4geworICAgICAgICAgIHJlc29sdmVXcml0ZVBy
b21pc2UgPSByZXNvbHZlOworICAgICAgICB9KTsKKyAgICAgIH0KKyAgICAgIHJldHVybiB1bmRl
ZmluZWQ7CisgICAgfQorICB9LCBuZXcgQ291bnRRdWV1aW5nU3RyYXRlZ3koeyBoaWdoV2F0ZXJN
YXJrOiAzIH0pKTsKKworICBjb25zdCB3cml0ZXIgPSB3cy5nZXRXcml0ZXIoKTsKKyAgY29uc3Qg
Zmlyc3RXcml0ZVByb21pc2UgPSB3cml0ZXIud3JpdGUoJ2EnKTsKKyAgYXNzZXJ0X2VxdWFscyh3
cml0ZXIuZGVzaXJlZFNpemUsIDIsICdhZnRlciB3cml0aW5nIHRoZSB3cml0ZXJcJ3MgZGVzaXJl
ZFNpemUgbXVzdCBiZSAyJyk7CisgIHdyaXRlci5yZWxlYXNlTG9jaygpOworCisgIC8vIGZpcnN0
V3JpdGVQcm9taXNlIHdvbid0IHNldHRsZSB1bnRpbCB3ZSBjYWxsIHJlc29sdmVXcml0ZVByb21p
c2UuCisKKyAgY29uc3QgcGlwZVByb21pc2UgPSBycy5waXBlVG8od3MpOworCisgIHJldHVybiBm
bHVzaEFzeW5jRXZlbnRzKCkudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3
cy5ldmVudHMsIFsnd3JpdGUnLCAnYSddKTsKKyAgICBhc3NlcnRfZXF1YWxzKHVucmVhZENodW5r
cy5sZW5ndGgsIDEsICdjaHVua3Mgc2hvdWxkIGNvbnRpbnVlIHRvIGJlIGVucXVldWVkIHVudGls
IHRoZSBIV00gaXMgcmVhY2hlZCcpOworICB9KS50aGVuKCgpID0+IHJlc29sdmVXcml0ZVByb21p
c2UoKSkKKyAgICAudGhlbigoKSA9PiBQcm9taXNlLmFsbChbZmlyc3RXcml0ZVByb21pc2UsIHBp
cGVQcm9taXNlXSkpCisgICAgLnRoZW4oKCkgPT4geworICAgICAgYXNzZXJ0X2FycmF5X2VxdWFs
cyhycy5ldmVudHMsIFsncHVsbCcsICdwdWxsJywgJ3B1bGwnXSk7CisgICAgICBhc3NlcnRfYXJy
YXlfZXF1YWxzKHdzLmV2ZW50cywgWyd3cml0ZScsICdhJywgJ3dyaXRlJywgJ2InLCd3cml0ZScs
ICdjJywnd3JpdGUnLCAnZCcsICdjbG9zZSddKTsKKyAgICB9KTsKKworfSwgJ1BpcGluZyBmcm9t
IGEgUmVhZGFibGVTdHJlYW0gdG8gYSBXcml0YWJsZVN0cmVhbSB0aGF0IGRlc2lyZXMgbW9yZSBj
aHVua3MgYmVmb3JlIGZpbmlzaGluZyB3aXRoIHByZXZpb3VzIG9uZXMnKTsKKworY2xhc3MgU3Rl
cFRyYWNrZXIgeworICBjb25zdHJ1Y3RvcigpIHsKKyAgICB0aGlzLndhaXRlcnMgPSBbXTsKKyAg
ICB0aGlzLndha2VycyA9IFtdOworICB9CisKKyAgLy8gUmV0dXJucyBwcm9taXNlIHdoaWNoIHJl
c29sdmVzIHdoZW4gc3RlcCBgbmAgaXMgcmVhY2hlZC4gQWxzbyBzY2hlZHVsZXMgc3RlcCBuICsg
MSB0byBoYXBwZW4gc2hvcnRseSBhZnRlciB0aGUKKyAgLy8gcHJvbWlzZSBpcyByZXNvbHZlZC4K
KyAgd2FpdFRoZW5BZHZhbmNlKG4pIHsKKyAgICBpZiAodGhpcy53YWl0ZXJzW25dID09PSB1bmRl
ZmluZWQpIHsKKyAgICAgIHRoaXMud2FpdGVyc1tuXSA9IG5ldyBQcm9taXNlKHJlc29sdmUgPT4g
eworICAgICAgICB0aGlzLndha2Vyc1tuXSA9IHJlc29sdmU7CisgICAgICB9KTsKKyAgICAgIHRo
aXMud2FpdGVyc1tuXQorICAgICAgICAgIC50aGVuKCgpID0+IGZsdXNoQXN5bmNFdmVudHMoKSkK
KyAgICAgICAgICAudGhlbigoKSA9PiB7CisgICAgICAgICAgICBpZiAodGhpcy53YWtlcnNbbiAr
IDFdICE9PSB1bmRlZmluZWQpIHsKKyAgICAgICAgICAgICAgdGhpcy53YWtlcnNbbiArIDFdKCk7
CisgICAgICAgICAgICB9CisgICAgICAgICAgfSk7CisgICAgfQorICAgIGlmIChuID09IDApIHsK
KyAgICAgIHRoaXMud2FrZXJzWzBdKCk7CisgICAgfQorICAgIHJldHVybiB0aGlzLndhaXRlcnNb
bl07CisgIH0KK30KKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgY29uc3Qgc3RlcHMgPSBuZXcg
U3RlcFRyYWNrZXIoKTsKKyAgY29uc3QgZGVzaXJlZFNpemVzID0gW107CisgIGNvbnN0IHJzID0g
cmVjb3JkaW5nUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGNvbnRyb2xsZXIpIHsKKyAgICAg
IHN0ZXBzLndhaXRUaGVuQWR2YW5jZSgxKS50aGVuKCgpID0+IGVucXVldWUoJ2EnKSk7CisgICAg
ICBzdGVwcy53YWl0VGhlbkFkdmFuY2UoMykudGhlbigoKSA9PiBlbnF1ZXVlKCdiJykpOworICAg
ICAgc3RlcHMud2FpdFRoZW5BZHZhbmNlKDUpLnRoZW4oKCkgPT4gZW5xdWV1ZSgnYycpKTsKKyAg
ICAgIHN0ZXBzLndhaXRUaGVuQWR2YW5jZSg3KS50aGVuKCgpID0+IGVucXVldWUoJ2QnKSk7Cisg
ICAgICBzdGVwcy53YWl0VGhlbkFkdmFuY2UoMTEpLnRoZW4oKCkgPT4gY29udHJvbGxlci5jbG9z
ZSgpKTsKKworICAgICAgZnVuY3Rpb24gZW5xdWV1ZShjaHVuaykgeworICAgICAgICBjb250cm9s
bGVyLmVucXVldWUoY2h1bmspOworICAgICAgICBkZXNpcmVkU2l6ZXMucHVzaChjb250cm9sbGVy
LmRlc2lyZWRTaXplKTsKKyAgICAgIH0KKyAgICB9CisgIH0pOworCisgIGNvbnN0IGNodW5rc0Zp
bmlzaGVkV3JpdGluZyA9IFtdOworICBjb25zdCB3cml0YWJsZVN0YXJ0UHJvbWlzZSA9IFByb21p
c2UucmVzb2x2ZSgpOworICBsZXQgd3JpdGVDYWxsZWQgPSBmYWxzZTsKKyAgY29uc3Qgd3MgPSBy
ZWNvcmRpbmdXcml0YWJsZVN0cmVhbSh7CisgICAgc3RhcnQoKSB7CisgICAgICByZXR1cm4gd3Jp
dGFibGVTdGFydFByb21pc2U7CisgICAgfSwKKyAgICB3cml0ZShjaHVuaykgeworICAgICAgY29u
c3Qgd2FpdEZvclN0ZXAgPSB3cml0ZUNhbGxlZCA/IDEyIDogOTsKKyAgICAgIHdyaXRlQ2FsbGVk
ID0gdHJ1ZTsKKyAgICAgIHJldHVybiBzdGVwcy53YWl0VGhlbkFkdmFuY2Uod2FpdEZvclN0ZXAp
LnRoZW4oKCkgPT4geworICAgICAgICBjaHVua3NGaW5pc2hlZFdyaXRpbmcucHVzaChjaHVuayk7
CisgICAgICB9KTsKKyAgICB9CisgIH0pOworCisgIHJldHVybiB3cml0YWJsZVN0YXJ0UHJvbWlz
ZS50aGVuKCgpID0+IHsKKyAgICBjb25zdCBwaXBlUHJvbWlzZSA9IHJzLnBpcGVUbyh3cyk7Cisg
ICAgc3RlcHMud2FpdFRoZW5BZHZhbmNlKDApOworCisgICAgcmV0dXJuIFByb21pc2UuYWxsKFsK
KyAgICAgIHN0ZXBzLndhaXRUaGVuQWR2YW5jZSgyKS50aGVuKCgpID0+IHsKKyAgICAgICAgYXNz
ZXJ0X2FycmF5X2VxdWFscyhjaHVua3NGaW5pc2hlZFdyaXRpbmcsIFtdLCAnYXQgc3RlcCAyLCB6
ZXJvIGNodW5rcyBtdXN0IGhhdmUgZmluaXNoZWQgd3JpdGluZycpOworICAgICAgICBhc3NlcnRf
YXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWyd3cml0ZScsICdhJ10sICdhdCBzdGVwIDIsIG9uZSBj
aHVuayBtdXN0IGhhdmUgYmVlbiB3cml0dGVuJyk7CisKKyAgICAgICAgLy8gV2hlbiAnYScgKHRo
ZSB2ZXJ5IGZpcnN0IGNodW5rKSB3YXMgZW5xdWV1ZWQsIGl0IHdhcyBpbW1lZGlhdGVseSB1c2Vk
IHRvIGZ1bGZpbGwgdGhlIG91dHN0YW5kaW5nIHJlYWQgcmVxdWVzdAorICAgICAgICAvLyBwcm9t
aXNlLCBsZWF2aW5nIHRoZSBxdWV1ZSBlbXB0eS4KKyAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFs
cyhkZXNpcmVkU2l6ZXMsIFsxXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXQgc3Rl
cCAyLCB0aGUgZGVzaXJlZFNpemUgYXQgdGhlIGxhc3QgZW5xdWV1ZSAoc3RlcCAxKSBtdXN0IGhh
dmUgYmVlbiAxJyk7CisgICAgICAgIGFzc2VydF9lcXVhbHMocnMuY29udHJvbGxlci5kZXNpcmVk
U2l6ZSwgMSwgJ2F0IHN0ZXAgMiwgdGhlIGN1cnJlbnQgZGVzaXJlZFNpemUgbXVzdCBiZSAxJyk7
CisgICAgICB9KSwKKworICAgICAgc3RlcHMud2FpdFRoZW5BZHZhbmNlKDQpLnRoZW4oKCkgPT4g
eworICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGNodW5rc0ZpbmlzaGVkV3JpdGluZywgW10s
ICdhdCBzdGVwIDQsIHplcm8gY2h1bmtzIG11c3QgaGF2ZSBmaW5pc2hlZCB3cml0aW5nJyk7Cisg
ICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ3dyaXRlJywgJ2EnXSwgJ2F0
IHN0ZXAgNCwgb25lIGNodW5rIG11c3QgaGF2ZSBiZWVuIHdyaXR0ZW4nKTsKKworICAgICAgICAv
LyBXaGVuICdiJyB3YXMgZW5xdWV1ZWQgYXQgc3RlcCAzLCB0aGUgcXVldWUgd2FzIGFsc28gZW1w
dHksIHNpbmNlIGltbWVkaWF0ZWx5IGFmdGVyIGVucXVldWluZyAnYScgYXQKKyAgICAgICAgLy8g
c3RlcCAxLCBpdCB3YXMgZGVxdWV1ZWQgaW4gb3JkZXIgdG8gZnVsZmlsbCB0aGUgcmVhZCgpIGNh
bGwgdGhhdCB3YXMgbWFkZSBhdCBzdGVwIDAuIFRodXMgdGhlIHF1ZXVlCisgICAgICAgIC8vIGhh
ZCBzaXplIDEgKHRodXMgZGVzaXJlZFNpemUgb2YgMCkuCisgICAgICAgIGFzc2VydF9hcnJheV9l
cXVhbHMoZGVzaXJlZFNpemVzLCBbMSwgMF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
J2F0IHN0ZXAgNCwgdGhlIGRlc2lyZWRTaXplIGF0IHRoZSBsYXN0IGVucXVldWUgKHN0ZXAgMykg
bXVzdCBoYXZlIGJlZW4gMCcpOworICAgICAgICBhc3NlcnRfZXF1YWxzKHJzLmNvbnRyb2xsZXIu
ZGVzaXJlZFNpemUsIDAsICdhdCBzdGVwIDQsIHRoZSBjdXJyZW50IGRlc2lyZWRTaXplIG11c3Qg
YmUgMCcpOworICAgICAgfSksCisKKyAgICAgIHN0ZXBzLndhaXRUaGVuQWR2YW5jZSg2KS50aGVu
KCgpID0+IHsKKyAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhjaHVua3NGaW5pc2hlZFdyaXRp
bmcsIFtdLCAnYXQgc3RlcCA2LCB6ZXJvIGNodW5rcyBtdXN0IGhhdmUgZmluaXNoZWQgd3JpdGlu
ZycpOworICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWyd3cml0ZScsICdh
J10sICdhdCBzdGVwIDYsIG9uZSBjaHVuayBtdXN0IGhhdmUgYmVlbiB3cml0dGVuJyk7CisKKyAg
ICAgICAgLy8gV2hlbiAnYycgd2FzIGVucXVldWVkIGF0IHN0ZXAgNSwgdGhlIHF1ZXVlIHdhcyBu
b3QgZW1wdHk7IGl0IGhhZCAnYicgaW4gaXQsIHNpbmNlICdiJyB3aWxsIG5vdCBiZSByZWFkIHVu
dGlsCisgICAgICAgIC8vIHRoZSBmaXJzdCB3cml0ZSBjb21wbGV0ZXMgYXQgc3RlcCA5LiBUaHVz
LCB0aGUgcXVldWUgc2l6ZSBpcyAyIGFmdGVyIGVucXVldWluZyAnYycsIGdpdmluZyBhIGRlc2ly
ZWRTaXplIG9mCisgICAgICAgIC8vIC0xLgorICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGRl
c2lyZWRTaXplcywgWzEsIDAsIC0xXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXQg
c3RlcCA2LCB0aGUgZGVzaXJlZFNpemUgYXQgdGhlIGxhc3QgZW5xdWV1ZSAoc3RlcCA1KSBtdXN0
IGhhdmUgYmVlbiAtMScpOworICAgICAgICBhc3NlcnRfZXF1YWxzKHJzLmNvbnRyb2xsZXIuZGVz
aXJlZFNpemUsIC0xLCAnYXQgc3RlcCA2LCB0aGUgY3VycmVudCBkZXNpcmVkU2l6ZSBtdXN0IGJl
IC0xJyk7CisgICAgICB9KSwKKworICAgICAgc3RlcHMud2FpdFRoZW5BZHZhbmNlKDgpLnRoZW4o
KCkgPT4geworICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGNodW5rc0ZpbmlzaGVkV3JpdGlu
ZywgW10sICdhdCBzdGVwIDgsIHplcm8gY2h1bmtzIG11c3QgaGF2ZSBmaW5pc2hlZCB3cml0aW5n
Jyk7CisgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ3dyaXRlJywgJ2En
XSwgJ2F0IHN0ZXAgOCwgb25lIGNodW5rIG11c3QgaGF2ZSBiZWVuIHdyaXR0ZW4nKTsKKworICAg
ICAgICAvLyBXaGVuICdkJyB3YXMgZW5xdWV1ZWQgYXQgc3RlcCA3LCB0aGUgc2l0dWF0aW9uIGlz
IHRoZSBzYW1lIGFzIGJlZm9yZSwgbGVhZGluZyB0byBhIHF1ZXVlIGNvbnRhaW5pbmcgJ2InLCAn
YycsCisgICAgICAgIC8vIGFuZCAnZCcuCisgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoZGVz
aXJlZFNpemVzLCBbMSwgMCwgLTEsIC0yXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
YXQgc3RlcCA4LCB0aGUgZGVzaXJlZFNpemUgYXQgdGhlIGxhc3QgZW5xdWV1ZSAoc3RlcCA3KSBt
dXN0IGhhdmUgYmVlbiAtMicpOworICAgICAgICBhc3NlcnRfZXF1YWxzKHJzLmNvbnRyb2xsZXIu
ZGVzaXJlZFNpemUsIC0yLCAnYXQgc3RlcCA4LCB0aGUgY3VycmVudCBkZXNpcmVkU2l6ZSBtdXN0
IGJlIC0yJyk7CisgICAgICB9KSwKKworICAgICAgc3RlcHMud2FpdFRoZW5BZHZhbmNlKDEwKS50
aGVuKCgpID0+IHsKKyAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhjaHVua3NGaW5pc2hlZFdy
aXRpbmcsIFsnYSddLCAnYXQgc3RlcCAxMCwgb25lIGNodW5rIG11c3QgaGF2ZSBmaW5pc2hlZCB3
cml0aW5nJyk7CisgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ3dyaXRl
JywgJ2EnLCAnd3JpdGUnLCAnYiddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhdCBz
dGVwIDEwLCB0d28gY2h1bmtzIG11c3QgaGF2ZSBiZWVuIHdyaXR0ZW4nKTsKKworICAgICAgICBh
c3NlcnRfZXF1YWxzKHJzLmNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIC0xLCAnYXQgc3RlcCAxMCwg
dGhlIGN1cnJlbnQgZGVzaXJlZFNpemUgbXVzdCBiZSAtMScpOworICAgICAgfSksCisKKyAgICAg
IHBpcGVQcm9taXNlLnRoZW4oKCkgPT4geworICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGRl
c2lyZWRTaXplcywgWzEsIDAsIC0xLCAtMl0sICdiYWNrcHJlc3N1cmUgbXVzdCBoYXZlIGJlZW4g
ZXhlcnRlZCBhdCB0aGUgc291cmNlJyk7CisgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoY2h1
bmtzRmluaXNoZWRXcml0aW5nLCBbJ2EnLCAnYicsICdjJywgJ2QnXSwgJ2FsbCBjaHVua3MgZmlu
aXNoZWQgd3JpdGluZycpOworCisgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMocnMuZXZlbnRz
V2l0aG91dFB1bGxzLCBbXSwgJ25vdGhpbmcgdW5leHBlY3RlZCBzaG91bGQgaGFwcGVuIHRvIHRo
ZSBSZWFkYWJsZVN0cmVhbScpOworICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50
cywgWyd3cml0ZScsICdhJywgJ3dyaXRlJywgJ2InLCAnd3JpdGUnLCAnYycsICd3cml0ZScsICdk
JywgJ2Nsb3NlJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FsbCBjaHVua3Mgd2Vy
ZSB3cml0dGVuIChhbmQgdGhlIFdyaXRhYmxlU3RyZWFtIGNsb3NlZCknKTsKKyAgICAgIH0pCisg
ICAgXSk7CisgIH0pOworfSwgJ1BpcGluZyB0byBhIFdyaXRhYmxlU3RyZWFtIHRoYXQgZG9lcyBu
b3QgY29uc3VtZSB0aGUgd3JpdGVzIGZhc3QgZW5vdWdoIGV4ZXJ0cyBiYWNrcHJlc3N1cmUgb24g
dGhlIFJlYWRhYmxlU3RyZWFtJyk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Zsb3ctY29udHJvbC5hbnkud29y
a2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy9waXBpbmcvZmxvdy1jb250cm9sLmFueS53b3JrZXItZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjc0ZDJlMTdkMDdjNjAwMjE1ZDFhMGJkODYzYWMxYjRlMThiOTdhNDcKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3N0cmVhbXMvcGlwaW5nL2Zsb3ctY29udHJvbC5hbnkud29ya2VyLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDcgQEAKKworRkFJTCBQaXBpbmcgZnJvbSBhIG5vbi1lbXB0eSBSZWFkYWJsZVN0
cmVhbSBpbnRvIGEgV3JpdGFibGVTdHJlYW0gdGhhdCBkb2VzIG5vdCBkZXNpcmUgY2h1bmtzIENh
bid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIFBpcGluZyBmcm9tIGEgbm9u
LWVtcHR5IFJlYWRhYmxlU3RyZWFtIGludG8gYSBXcml0YWJsZVN0cmVhbSB0aGF0IGRvZXMgbm90
IGRlc2lyZSBjaHVua3MsIGJ1dCB0aGVuIGRvZXMgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFi
bGVTdHJlYW0KK0ZBSUwgUGlwaW5nIGZyb20gYW4gZW1wdHkgUmVhZGFibGVTdHJlYW0gaW50byBh
IFdyaXRhYmxlU3RyZWFtIHRoYXQgZG9lcyBub3QgZGVzaXJlIGNodW5rcywgYnV0IHRoZW4gdGhl
IHJlYWRhYmxlIHN0cmVhbSBiZWNvbWVzIG5vbi1lbXB0eSBhbmQgdGhlIHdyaXRhYmxlIHN0cmVh
bSBzdGFydHMgZGVzaXJpbmcgY2h1bmtzIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3Ry
ZWFtCitGQUlMIFBpcGluZyBmcm9tIGEgUmVhZGFibGVTdHJlYW0gdG8gYSBXcml0YWJsZVN0cmVh
bSB0aGF0IGRlc2lyZXMgbW9yZSBjaHVua3MgYmVmb3JlIGZpbmlzaGluZyB3aXRoIHByZXZpb3Vz
IG9uZXMgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgUGlwaW5nIHRv
IGEgV3JpdGFibGVTdHJlYW0gdGhhdCBkb2VzIG5vdCBjb25zdW1lIHRoZSB3cml0ZXMgZmFzdCBl
bm91Z2ggZXhlcnRzIGJhY2twcmVzc3VyZSBvbiB0aGUgUmVhZGFibGVTdHJlYW0gQ2FuJ3QgZmlu
ZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9mbG93LWNvbnRyb2wu
YW55Lndvcmtlci5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL3BpcGluZy9mbG93LWNvbnRyb2wuYW55Lndvcmtlci5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjIzODI5MTM1MjhlNjkzYjNhNWQ1NmM2NjBhNDUwNjA5ODBiNTQ4YzMKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvcGlwaW5nL2Zsb3ctY29udHJvbC5hbnkud29ya2VyLmh0bWwKQEAgLTAsMCArMSBAQAorPCEt
LSBUaGlzIGZpbGUgaXMgcmVxdWlyZWQgZm9yIFdlYktpdCB0ZXN0IGluZnJhc3RydWN0dXJlIHRv
IHJ1biB0aGUgdGVtcGxhdGVkIHRlc3QgLS0+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
dHJlYW1zL3BpcGluZy9mbG93LWNvbnRyb2wuZGVkaWNhdGVkd29ya2VyLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBp
bmcvZmxvdy1jb250cm9sLmRlZGljYXRlZHdvcmtlci1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDc0ZDJlMTdkMDdjNjAwMjE1ZDFhMGJkODYzYWMxYjRlMThiOTdh
NDcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9mbG93
LWNvbnRyb2wuZGVkaWNhdGVkd29ya2VyLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0x
LDcgKzAsMCBAQAotCi1GQUlMIFBpcGluZyBmcm9tIGEgbm9uLWVtcHR5IFJlYWRhYmxlU3RyZWFt
IGludG8gYSBXcml0YWJsZVN0cmVhbSB0aGF0IGRvZXMgbm90IGRlc2lyZSBjaHVua3MgQ2FuJ3Qg
ZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgUGlwaW5nIGZyb20gYSBub24tZW1w
dHkgUmVhZGFibGVTdHJlYW0gaW50byBhIFdyaXRhYmxlU3RyZWFtIHRoYXQgZG9lcyBub3QgZGVz
aXJlIGNodW5rcywgYnV0IHRoZW4gZG9lcyBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0
cmVhbQotRkFJTCBQaXBpbmcgZnJvbSBhbiBlbXB0eSBSZWFkYWJsZVN0cmVhbSBpbnRvIGEgV3Jp
dGFibGVTdHJlYW0gdGhhdCBkb2VzIG5vdCBkZXNpcmUgY2h1bmtzLCBidXQgdGhlbiB0aGUgcmVh
ZGFibGUgc3RyZWFtIGJlY29tZXMgbm9uLWVtcHR5IGFuZCB0aGUgd3JpdGFibGUgc3RyZWFtIHN0
YXJ0cyBkZXNpcmluZyBjaHVua3MgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0K
LUZBSUwgUGlwaW5nIGZyb20gYSBSZWFkYWJsZVN0cmVhbSB0byBhIFdyaXRhYmxlU3RyZWFtIHRo
YXQgZGVzaXJlcyBtb3JlIGNodW5rcyBiZWZvcmUgZmluaXNoaW5nIHdpdGggcHJldmlvdXMgb25l
cyBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBQaXBpbmcgdG8gYSBX
cml0YWJsZVN0cmVhbSB0aGF0IGRvZXMgbm90IGNvbnN1bWUgdGhlIHdyaXRlcyBmYXN0IGVub3Vn
aCBleGVydHMgYmFja3ByZXNzdXJlIG9uIHRoZSBSZWFkYWJsZVN0cmVhbSBDYW4ndCBmaW5kIHZh
cmlhYmxlOiBXcml0YWJsZVN0cmVhbQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Zsb3ctY29udHJvbC5kZWRp
Y2F0ZWR3b3JrZXIuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy9waXBpbmcvZmxvdy1jb250cm9sLmRlZGljYXRlZHdvcmtlci5odG1sCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NzAzMTgzYzExNzJiNjIzNjk3YzYwODI3ODRm
OGUwZWI0MjYxODk0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9w
aXBpbmcvZmxvdy1jb250cm9sLmRlZGljYXRlZHdvcmtlci5odG1sCisrKyAvZGV2L251bGwKQEAg
LTEsMTEgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08
dGl0bGU+Zmxvdy1jb250cm9sLmpzIGRlZGljYXRlZCB3b3JrZXIgd3JhcHBlciBmaWxlPC90aXRs
ZT4KLQotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0Pgot
PHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0Pgot
Ci08c2NyaXB0PgotJ3VzZSBzdHJpY3QnOwotZmV0Y2hfdGVzdHNfZnJvbV93b3JrZXIobmV3IFdv
cmtlcignZmxvdy1jb250cm9sLmpzJykpOwotPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Zsb3ct
Y29udHJvbC5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL3BpcGluZy9mbG93LWNvbnRyb2wuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMjE5ZTUwMTE4NzA4ODdlYjllOGEyYmNkY2M0YTIzZjRjZjQxZTgyNi4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Zsb3ctY29udHJvbC5o
dG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08bWV0
YSBjaGFyc2V0PSJ1dGYtOCI+Ci08dGl0bGU+Zmxvdy1jb250cm9sLmpzIGJyb3dzZXIgY29udGV4
dCB3cmFwcGVyIGZpbGU8L3RpdGxlPgotCi08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFy
bmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3Jl
cG9ydC5qcyI+PC9zY3JpcHQ+Ci0KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdC11dGls
cy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3JzLXV0aWxzLmpzIj48
L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvcmVjb3JkaW5nLXN0cmVhbXMuanMi
Pjwvc2NyaXB0PgotCi08c2NyaXB0IHNyYz0iZmxvdy1jb250cm9sLmpzIj48L3NjcmlwdD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy9waXBpbmcvZmxvdy1jb250cm9sLmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9mbG93LWNvbnRyb2wuanMKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA0YzU2ZWM0MGQwYjQ0NmFhNzMzYjA5ZWE1MGQyY2NjYzA1
MDRhNDIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9m
bG93LWNvbnRyb2wuanMKKysrIC9kZXYvbnVsbApAQCAtMSwzMDYgKzAsMCBAQAotJ3VzZSBzdHJp
Y3QnOwotCi1pZiAoc2VsZi5pbXBvcnRTY3JpcHRzKSB7Ci0gIHNlbGYuaW1wb3J0U2NyaXB0cygn
L3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcycpOwotICBzZWxmLmltcG9ydFNjcmlwdHMoJy4uL3Jl
c291cmNlcy90ZXN0LXV0aWxzLmpzJyk7Ci0gIHNlbGYuaW1wb3J0U2NyaXB0cygnLi4vcmVzb3Vy
Y2VzL3JzLXV0aWxzLmpzJyk7Ci0gIHNlbGYuaW1wb3J0U2NyaXB0cygnLi4vcmVzb3VyY2VzL3Jl
Y29yZGluZy1zdHJlYW1zLmpzJyk7Ci19Ci0KLWNvbnN0IGVycm9yMSA9IG5ldyBFcnJvcignZXJy
b3IxIScpOwotZXJyb3IxLm5hbWUgPSAnZXJyb3IxJzsKLQotcHJvbWlzZV90ZXN0KHQgPT4gewot
Ci0gIGNvbnN0IHJzID0gcmVjb3JkaW5nUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGNvbnRy
b2xsZXIpIHsKLSAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYScpOwotICAgICAgY29udHJvbGxl
ci5lbnF1ZXVlKCdiJyk7Ci0gICAgICBjb250cm9sbGVyLmNsb3NlKCk7Ci0gICAgfQotICB9KTsK
LQotICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKHVuZGVmaW5lZCwgbmV3IENv
dW50UXVldWluZ1N0cmF0ZWd5KHsgaGlnaFdhdGVyTWFyazogMCB9KSk7Ci0KLSAgY29uc3QgcGlw
ZVByb21pc2UgPSBycy5waXBlVG8od3MsIHsgcHJldmVudENhbmNlbDogdHJ1ZSB9KTsKLQotICAv
LyBXYWl0IGFuZCBtYWtlIHN1cmUgaXQgZG9lc24ndCBkbyBhbnkgcmVhZGluZy4KLSAgcmV0dXJu
IGZsdXNoQXN5bmNFdmVudHMoKS50aGVuKCgpID0+IHsKLSAgICB3cy5jb250cm9sbGVyLmVycm9y
KGVycm9yMSk7Ci0gIH0pCi0gIC50aGVuKCgpID0+IHByb21pc2VfcmVqZWN0cyh0LCBlcnJvcjEs
IHBpcGVQcm9taXNlLCAncGlwZVRvIG11c3QgcmVqZWN0IHdpdGggdGhlIHNhbWUgZXJyb3InKSkK
LSAgLnRoZW4oKCkgPT4gewotICAgIGFzc2VydF9hcnJheV9lcXVhbHMocnMuZXZlbnRzV2l0aG91
dFB1bGxzLCBbXSk7Ci0gICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFtdKTsKLSAg
fSkKLSAgLnRoZW4oKCkgPT4gcmVhZGFibGVTdHJlYW1Ub0FycmF5KHJzKSkKLSAgLnRoZW4oY2h1
bmtzTm90UHJldmlvdXNseVJlYWQgPT4gewotICAgIGFzc2VydF9hcnJheV9lcXVhbHMoY2h1bmtz
Tm90UHJldmlvdXNseVJlYWQsIFsnYScsICdiJ10pOwotICB9KTsKLQotfSwgJ1BpcGluZyBmcm9t
IGEgbm9uLWVtcHR5IFJlYWRhYmxlU3RyZWFtIGludG8gYSBXcml0YWJsZVN0cmVhbSB0aGF0IGRv
ZXMgbm90IGRlc2lyZSBjaHVua3MnKTsKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLQotICBjb25z
dCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjb250cm9sbGVyKSB7
Ci0gICAgICBjb250cm9sbGVyLmVucXVldWUoJ2InKTsKLSAgICAgIGNvbnRyb2xsZXIuY2xvc2Uo
KTsKLSAgICB9Ci0gIH0pOwotCi0gIGxldCByZXNvbHZlV3JpdGVQcm9taXNlOwotICBjb25zdCB3
cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKHsKLSAgICB3cml0ZSgpIHsKLSAgICAgIGlmICgh
cmVzb2x2ZVdyaXRlUHJvbWlzZSkgewotICAgICAgICAvLyBmaXJzdCB3cml0ZQotICAgICAgICBy
ZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7Ci0gICAgICAgICAgcmVzb2x2ZVdyaXRlUHJv
bWlzZSA9IHJlc29sdmU7Ci0gICAgICAgIH0pOwotICAgICAgfQotICAgICAgcmV0dXJuIHVuZGVm
aW5lZDsKLSAgICB9Ci0gIH0pOwotCi0gIGNvbnN0IHdyaXRlciA9IHdzLmdldFdyaXRlcigpOwot
ICBjb25zdCBmaXJzdFdyaXRlUHJvbWlzZSA9IHdyaXRlci53cml0ZSgnYScpOwotICBhc3NlcnRf
ZXF1YWxzKHdyaXRlci5kZXNpcmVkU2l6ZSwgMCwgJ2FmdGVyIHdyaXRpbmcgdGhlIHdyaXRlclwn
cyBkZXNpcmVkU2l6ZSBtdXN0IGJlIDAnKTsKLSAgd3JpdGVyLnJlbGVhc2VMb2NrKCk7Ci0KLSAg
Ly8gZmlyc3RXcml0ZVByb21pc2Ugd29uJ3Qgc2V0dGxlIHVudGlsIHdlIGNhbGwgcmVzb2x2ZVdy
aXRlUHJvbWlzZS4KLQotICBjb25zdCBwaXBlUHJvbWlzZSA9IHJzLnBpcGVUbyh3cyk7Ci0KLSAg
cmV0dXJuIGZsdXNoQXN5bmNFdmVudHMoKS50aGVuKCgpID0+IHJlc29sdmVXcml0ZVByb21pc2Uo
KSkKLSAgICAudGhlbigoKSA9PiBQcm9taXNlLmFsbChbZmlyc3RXcml0ZVByb21pc2UsIHBpcGVQ
cm9taXNlXSkpCi0gICAgLnRoZW4oKCkgPT4gewotICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhy
cy5ldmVudHNXaXRob3V0UHVsbHMsIFtdKTsKLSAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3Mu
ZXZlbnRzLCBbJ3dyaXRlJywgJ2EnLCAnd3JpdGUnLCAnYicsICdjbG9zZSddKTsKLSAgICB9KTsK
LQotfSwgJ1BpcGluZyBmcm9tIGEgbm9uLWVtcHR5IFJlYWRhYmxlU3RyZWFtIGludG8gYSBXcml0
YWJsZVN0cmVhbSB0aGF0IGRvZXMgbm90IGRlc2lyZSBjaHVua3MsIGJ1dCB0aGVuIGRvZXMnKTsK
LQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLQotICBjb25zdCBycyA9IHJlY29yZGluZ1JlYWRhYmxl
U3RyZWFtKCk7Ci0KLSAgY29uc3Qgc3RhcnRQcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKCk7Ci0g
IGxldCByZXNvbHZlV3JpdGVQcm9taXNlOwotICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxl
U3RyZWFtKHsKLSAgICBzdGFydCgpIHsKLSAgICAgIHJldHVybiBzdGFydFByb21pc2U7Ci0gICAg
fSwKLSAgICB3cml0ZSgpIHsKLSAgICAgIGlmICghcmVzb2x2ZVdyaXRlUHJvbWlzZSkgewotICAg
ICAgICAvLyBmaXJzdCB3cml0ZQotICAgICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9
PiB7Ci0gICAgICAgICAgcmVzb2x2ZVdyaXRlUHJvbWlzZSA9IHJlc29sdmU7Ci0gICAgICAgIH0p
OwotICAgICAgfQotICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKLSAgICB9Ci0gIH0pOwotCi0gIGNv
bnN0IHdyaXRlciA9IHdzLmdldFdyaXRlcigpOwotICB3cml0ZXIud3JpdGUoJ2EnKTsKLQotICBy
ZXR1cm4gc3RhcnRQcm9taXNlLnRoZW4oKCkgPT4gewotICAgIGFzc2VydF9hcnJheV9lcXVhbHMo
d3MuZXZlbnRzLCBbJ3dyaXRlJywgJ2EnXSk7Ci0gICAgYXNzZXJ0X2VxdWFscyh3cml0ZXIuZGVz
aXJlZFNpemUsIDAsICdhZnRlciB3cml0aW5nIHRoZSB3cml0ZXJcJ3MgZGVzaXJlZFNpemUgbXVz
dCBiZSAwJyk7Ci0gICAgd3JpdGVyLnJlbGVhc2VMb2NrKCk7Ci0KLSAgICBjb25zdCBwaXBlUHJv
bWlzZSA9IHJzLnBpcGVUbyh3cyk7Ci0KLSAgICBycy5jb250cm9sbGVyLmVucXVldWUoJ2InKTsK
LSAgICByZXNvbHZlV3JpdGVQcm9taXNlKCk7Ci0gICAgcnMuY29udHJvbGxlci5jbG9zZSgpOwot
Ci0gICAgcmV0dXJuIHBpcGVQcm9taXNlLnRoZW4oKCkgPT4gewotICAgICAgYXNzZXJ0X2FycmF5
X2VxdWFscyhycy5ldmVudHNXaXRob3V0UHVsbHMsIFtdKTsKLSAgICAgIGFzc2VydF9hcnJheV9l
cXVhbHMod3MuZXZlbnRzLCBbJ3dyaXRlJywgJ2EnLCAnd3JpdGUnLCAnYicsICdjbG9zZSddKTsK
LSAgICB9KTsKLSAgfSk7Ci0KLX0sICdQaXBpbmcgZnJvbSBhbiBlbXB0eSBSZWFkYWJsZVN0cmVh
bSBpbnRvIGEgV3JpdGFibGVTdHJlYW0gdGhhdCBkb2VzIG5vdCBkZXNpcmUgY2h1bmtzLCBidXQg
dGhlbiB0aGUgcmVhZGFibGUgJyArCi0gICAnc3RyZWFtIGJlY29tZXMgbm9uLWVtcHR5IGFuZCB0
aGUgd3JpdGFibGUgc3RyZWFtIHN0YXJ0cyBkZXNpcmluZyBjaHVua3MnKTsKLQotcHJvbWlzZV90
ZXN0KCgpID0+IHsKLSAgY29uc3QgdW5yZWFkQ2h1bmtzID0gWydiJywgJ2MnLCAnZCddOwotCi0g
IGNvbnN0IHJzID0gcmVjb3JkaW5nUmVhZGFibGVTdHJlYW0oewotICAgIHB1bGwoY29udHJvbGxl
cikgewotICAgICAgY29udHJvbGxlci5lbnF1ZXVlKHVucmVhZENodW5rcy5zaGlmdCgpKTsKLSAg
ICAgIGlmICh1bnJlYWRDaHVua3MubGVuZ3RoID09PSAwKSB7Ci0gICAgICAgIGNvbnRyb2xsZXIu
Y2xvc2UoKTsKLSAgICAgIH0KLSAgICB9Ci0gIH0sIG5ldyBDb3VudFF1ZXVpbmdTdHJhdGVneSh7
IGhpZ2hXYXRlck1hcms6IDAgfSkpOwotCi0gIGxldCByZXNvbHZlV3JpdGVQcm9taXNlOwotICBj
b25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKHsKLSAgICB3cml0ZSgpIHsKLSAgICAg
IGlmICghcmVzb2x2ZVdyaXRlUHJvbWlzZSkgewotICAgICAgICAvLyBmaXJzdCB3cml0ZQotICAg
ICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7Ci0gICAgICAgICAgcmVzb2x2ZVdy
aXRlUHJvbWlzZSA9IHJlc29sdmU7Ci0gICAgICAgIH0pOwotICAgICAgfQotICAgICAgcmV0dXJu
IHVuZGVmaW5lZDsKLSAgICB9Ci0gIH0sIG5ldyBDb3VudFF1ZXVpbmdTdHJhdGVneSh7IGhpZ2hX
YXRlck1hcms6IDMgfSkpOwotCi0gIGNvbnN0IHdyaXRlciA9IHdzLmdldFdyaXRlcigpOwotICBj
b25zdCBmaXJzdFdyaXRlUHJvbWlzZSA9IHdyaXRlci53cml0ZSgnYScpOwotICBhc3NlcnRfZXF1
YWxzKHdyaXRlci5kZXNpcmVkU2l6ZSwgMiwgJ2FmdGVyIHdyaXRpbmcgdGhlIHdyaXRlclwncyBk
ZXNpcmVkU2l6ZSBtdXN0IGJlIDInKTsKLSAgd3JpdGVyLnJlbGVhc2VMb2NrKCk7Ci0KLSAgLy8g
Zmlyc3RXcml0ZVByb21pc2Ugd29uJ3Qgc2V0dGxlIHVudGlsIHdlIGNhbGwgcmVzb2x2ZVdyaXRl
UHJvbWlzZS4KLQotICBjb25zdCBwaXBlUHJvbWlzZSA9IHJzLnBpcGVUbyh3cyk7Ci0KLSAgcmV0
dXJuIGZsdXNoQXN5bmNFdmVudHMoKS50aGVuKCgpID0+IHsKLSAgICBhc3NlcnRfYXJyYXlfZXF1
YWxzKHdzLmV2ZW50cywgWyd3cml0ZScsICdhJ10pOwotICAgIGFzc2VydF9lcXVhbHModW5yZWFk
Q2h1bmtzLmxlbmd0aCwgMSwgJ2NodW5rcyBzaG91bGQgY29udGludWUgdG8gYmUgZW5xdWV1ZWQg
dW50aWwgdGhlIEhXTSBpcyByZWFjaGVkJyk7Ci0gIH0pLnRoZW4oKCkgPT4gcmVzb2x2ZVdyaXRl
UHJvbWlzZSgpKQotICAgIC50aGVuKCgpID0+IFByb21pc2UuYWxsKFtmaXJzdFdyaXRlUHJvbWlz
ZSwgcGlwZVByb21pc2VdKSkKLSAgICAudGhlbigoKSA9PiB7Ci0gICAgICBhc3NlcnRfYXJyYXlf
ZXF1YWxzKHJzLmV2ZW50cywgWydwdWxsJywgJ3B1bGwnLCAncHVsbCddKTsKLSAgICAgIGFzc2Vy
dF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ3dyaXRlJywgJ2EnLCAnd3JpdGUnLCAnYicsJ3dy
aXRlJywgJ2MnLCd3cml0ZScsICdkJywgJ2Nsb3NlJ10pOwotICAgIH0pOwotCi19LCAnUGlwaW5n
IGZyb20gYSBSZWFkYWJsZVN0cmVhbSB0byBhIFdyaXRhYmxlU3RyZWFtIHRoYXQgZGVzaXJlcyBt
b3JlIGNodW5rcyBiZWZvcmUgZmluaXNoaW5nIHdpdGggcHJldmlvdXMgb25lcycpOwotCi1jbGFz
cyBTdGVwVHJhY2tlciB7Ci0gIGNvbnN0cnVjdG9yKCkgewotICAgIHRoaXMud2FpdGVycyA9IFtd
OwotICAgIHRoaXMud2FrZXJzID0gW107Ci0gIH0KLQotICAvLyBSZXR1cm5zIHByb21pc2Ugd2hp
Y2ggcmVzb2x2ZXMgd2hlbiBzdGVwIGBuYCBpcyByZWFjaGVkLiBBbHNvIHNjaGVkdWxlcyBzdGVw
IG4gKyAxIHRvIGhhcHBlbiBzaG9ydGx5IGFmdGVyIHRoZQotICAvLyBwcm9taXNlIGlzIHJlc29s
dmVkLgotICB3YWl0VGhlbkFkdmFuY2UobikgewotICAgIGlmICh0aGlzLndhaXRlcnNbbl0gPT09
IHVuZGVmaW5lZCkgewotICAgICAgdGhpcy53YWl0ZXJzW25dID0gbmV3IFByb21pc2UocmVzb2x2
ZSA9PiB7Ci0gICAgICAgIHRoaXMud2FrZXJzW25dID0gcmVzb2x2ZTsKLSAgICAgIH0pOwotICAg
ICAgdGhpcy53YWl0ZXJzW25dCi0gICAgICAgICAgLnRoZW4oKCkgPT4gZmx1c2hBc3luY0V2ZW50
cygpKQotICAgICAgICAgIC50aGVuKCgpID0+IHsKLSAgICAgICAgICAgIGlmICh0aGlzLndha2Vy
c1tuICsgMV0gIT09IHVuZGVmaW5lZCkgewotICAgICAgICAgICAgICB0aGlzLndha2Vyc1tuICsg
MV0oKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9KTsKLSAgICB9Ci0gICAgaWYgKG4gPT0g
MCkgewotICAgICAgdGhpcy53YWtlcnNbMF0oKTsKLSAgICB9Ci0gICAgcmV0dXJuIHRoaXMud2Fp
dGVyc1tuXTsKLSAgfQotfQotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotICBjb25zdCBzdGVwcyA9
IG5ldyBTdGVwVHJhY2tlcigpOwotICBjb25zdCBkZXNpcmVkU2l6ZXMgPSBbXTsKLSAgY29uc3Qg
cnMgPSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoY29udHJvbGxlcikgewot
ICAgICAgc3RlcHMud2FpdFRoZW5BZHZhbmNlKDEpLnRoZW4oKCkgPT4gZW5xdWV1ZSgnYScpKTsK
LSAgICAgIHN0ZXBzLndhaXRUaGVuQWR2YW5jZSgzKS50aGVuKCgpID0+IGVucXVldWUoJ2InKSk7
Ci0gICAgICBzdGVwcy53YWl0VGhlbkFkdmFuY2UoNSkudGhlbigoKSA9PiBlbnF1ZXVlKCdjJykp
OwotICAgICAgc3RlcHMud2FpdFRoZW5BZHZhbmNlKDcpLnRoZW4oKCkgPT4gZW5xdWV1ZSgnZCcp
KTsKLSAgICAgIHN0ZXBzLndhaXRUaGVuQWR2YW5jZSgxMSkudGhlbigoKSA9PiBjb250cm9sbGVy
LmNsb3NlKCkpOwotCi0gICAgICBmdW5jdGlvbiBlbnF1ZXVlKGNodW5rKSB7Ci0gICAgICAgIGNv
bnRyb2xsZXIuZW5xdWV1ZShjaHVuayk7Ci0gICAgICAgIGRlc2lyZWRTaXplcy5wdXNoKGNvbnRy
b2xsZXIuZGVzaXJlZFNpemUpOwotICAgICAgfQotICAgIH0KLSAgfSk7Ci0KLSAgY29uc3QgY2h1
bmtzRmluaXNoZWRXcml0aW5nID0gW107Ci0gIGNvbnN0IHdyaXRhYmxlU3RhcnRQcm9taXNlID0g
UHJvbWlzZS5yZXNvbHZlKCk7Ci0gIGxldCB3cml0ZUNhbGxlZCA9IGZhbHNlOwotICBjb25zdCB3
cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKHsKLSAgICBzdGFydCgpIHsKLSAgICAgIHJldHVy
biB3cml0YWJsZVN0YXJ0UHJvbWlzZTsKLSAgICB9LAotICAgIHdyaXRlKGNodW5rKSB7Ci0gICAg
ICBjb25zdCB3YWl0Rm9yU3RlcCA9IHdyaXRlQ2FsbGVkID8gMTIgOiA5OwotICAgICAgd3JpdGVD
YWxsZWQgPSB0cnVlOwotICAgICAgcmV0dXJuIHN0ZXBzLndhaXRUaGVuQWR2YW5jZSh3YWl0Rm9y
U3RlcCkudGhlbigoKSA9PiB7Ci0gICAgICAgIGNodW5rc0ZpbmlzaGVkV3JpdGluZy5wdXNoKGNo
dW5rKTsKLSAgICAgIH0pOwotICAgIH0KLSAgfSk7Ci0KLSAgcmV0dXJuIHdyaXRhYmxlU3RhcnRQ
cm9taXNlLnRoZW4oKCkgPT4gewotICAgIGNvbnN0IHBpcGVQcm9taXNlID0gcnMucGlwZVRvKHdz
KTsKLSAgICBzdGVwcy53YWl0VGhlbkFkdmFuY2UoMCk7Ci0KLSAgICByZXR1cm4gUHJvbWlzZS5h
bGwoWwotICAgICAgc3RlcHMud2FpdFRoZW5BZHZhbmNlKDIpLnRoZW4oKCkgPT4gewotICAgICAg
ICBhc3NlcnRfYXJyYXlfZXF1YWxzKGNodW5rc0ZpbmlzaGVkV3JpdGluZywgW10sICdhdCBzdGVw
IDIsIHplcm8gY2h1bmtzIG11c3QgaGF2ZSBmaW5pc2hlZCB3cml0aW5nJyk7Ci0gICAgICAgIGFz
c2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ3dyaXRlJywgJ2EnXSwgJ2F0IHN0ZXAgMiwg
b25lIGNodW5rIG11c3QgaGF2ZSBiZWVuIHdyaXR0ZW4nKTsKLQotICAgICAgICAvLyBXaGVuICdh
JyAodGhlIHZlcnkgZmlyc3QgY2h1bmspIHdhcyBlbnF1ZXVlZCwgaXQgd2FzIGltbWVkaWF0ZWx5
IHVzZWQgdG8gZnVsZmlsbCB0aGUgb3V0c3RhbmRpbmcgcmVhZCByZXF1ZXN0Ci0gICAgICAgIC8v
IHByb21pc2UsIGxlYXZpbmcgdGhlIHF1ZXVlIGVtcHR5LgotICAgICAgICBhc3NlcnRfYXJyYXlf
ZXF1YWxzKGRlc2lyZWRTaXplcywgWzFdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdh
dCBzdGVwIDIsIHRoZSBkZXNpcmVkU2l6ZSBhdCB0aGUgbGFzdCBlbnF1ZXVlIChzdGVwIDEpIG11
c3QgaGF2ZSBiZWVuIDEnKTsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyhycy5jb250cm9sbGVyLmRl
c2lyZWRTaXplLCAxLCAnYXQgc3RlcCAyLCB0aGUgY3VycmVudCBkZXNpcmVkU2l6ZSBtdXN0IGJl
IDEnKTsKLSAgICAgIH0pLAotCi0gICAgICBzdGVwcy53YWl0VGhlbkFkdmFuY2UoNCkudGhlbigo
KSA9PiB7Ci0gICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoY2h1bmtzRmluaXNoZWRXcml0aW5n
LCBbXSwgJ2F0IHN0ZXAgNCwgemVybyBjaHVua3MgbXVzdCBoYXZlIGZpbmlzaGVkIHdyaXRpbmcn
KTsKLSAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsnd3JpdGUnLCAnYSdd
LCAnYXQgc3RlcCA0LCBvbmUgY2h1bmsgbXVzdCBoYXZlIGJlZW4gd3JpdHRlbicpOwotCi0gICAg
ICAgIC8vIFdoZW4gJ2InIHdhcyBlbnF1ZXVlZCBhdCBzdGVwIDMsIHRoZSBxdWV1ZSB3YXMgYWxz
byBlbXB0eSwgc2luY2UgaW1tZWRpYXRlbHkgYWZ0ZXIgZW5xdWV1aW5nICdhJyBhdAotICAgICAg
ICAvLyBzdGVwIDEsIGl0IHdhcyBkZXF1ZXVlZCBpbiBvcmRlciB0byBmdWxmaWxsIHRoZSByZWFk
KCkgY2FsbCB0aGF0IHdhcyBtYWRlIGF0IHN0ZXAgMC4gVGh1cyB0aGUgcXVldWUKLSAgICAgICAg
Ly8gaGFkIHNpemUgMSAodGh1cyBkZXNpcmVkU2l6ZSBvZiAwKS4KLSAgICAgICAgYXNzZXJ0X2Fy
cmF5X2VxdWFscyhkZXNpcmVkU2l6ZXMsIFsxLCAwXSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAnYXQgc3RlcCA0LCB0aGUgZGVzaXJlZFNpemUgYXQgdGhlIGxhc3QgZW5xdWV1ZSAoc3Rl
cCAzKSBtdXN0IGhhdmUgYmVlbiAwJyk7Ci0gICAgICAgIGFzc2VydF9lcXVhbHMocnMuY29udHJv
bGxlci5kZXNpcmVkU2l6ZSwgMCwgJ2F0IHN0ZXAgNCwgdGhlIGN1cnJlbnQgZGVzaXJlZFNpemUg
bXVzdCBiZSAwJyk7Ci0gICAgICB9KSwKLQotICAgICAgc3RlcHMud2FpdFRoZW5BZHZhbmNlKDYp
LnRoZW4oKCkgPT4gewotICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGNodW5rc0ZpbmlzaGVk
V3JpdGluZywgW10sICdhdCBzdGVwIDYsIHplcm8gY2h1bmtzIG11c3QgaGF2ZSBmaW5pc2hlZCB3
cml0aW5nJyk7Ci0gICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ3dyaXRl
JywgJ2EnXSwgJ2F0IHN0ZXAgNiwgb25lIGNodW5rIG11c3QgaGF2ZSBiZWVuIHdyaXR0ZW4nKTsK
LQotICAgICAgICAvLyBXaGVuICdjJyB3YXMgZW5xdWV1ZWQgYXQgc3RlcCA1LCB0aGUgcXVldWUg
d2FzIG5vdCBlbXB0eTsgaXQgaGFkICdiJyBpbiBpdCwgc2luY2UgJ2InIHdpbGwgbm90IGJlIHJl
YWQgdW50aWwKLSAgICAgICAgLy8gdGhlIGZpcnN0IHdyaXRlIGNvbXBsZXRlcyBhdCBzdGVwIDku
IFRodXMsIHRoZSBxdWV1ZSBzaXplIGlzIDIgYWZ0ZXIgZW5xdWV1aW5nICdjJywgZ2l2aW5nIGEg
ZGVzaXJlZFNpemUgb2YKLSAgICAgICAgLy8gLTEuCi0gICAgICAgIGFzc2VydF9hcnJheV9lcXVh
bHMoZGVzaXJlZFNpemVzLCBbMSwgMCwgLTFdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICdhdCBzdGVwIDYsIHRoZSBkZXNpcmVkU2l6ZSBhdCB0aGUgbGFzdCBlbnF1ZXVlIChzdGVwIDUp
IG11c3QgaGF2ZSBiZWVuIC0xJyk7Ci0gICAgICAgIGFzc2VydF9lcXVhbHMocnMuY29udHJvbGxl
ci5kZXNpcmVkU2l6ZSwgLTEsICdhdCBzdGVwIDYsIHRoZSBjdXJyZW50IGRlc2lyZWRTaXplIG11
c3QgYmUgLTEnKTsKLSAgICAgIH0pLAotCi0gICAgICBzdGVwcy53YWl0VGhlbkFkdmFuY2UoOCku
dGhlbigoKSA9PiB7Ci0gICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoY2h1bmtzRmluaXNoZWRX
cml0aW5nLCBbXSwgJ2F0IHN0ZXAgOCwgemVybyBjaHVua3MgbXVzdCBoYXZlIGZpbmlzaGVkIHdy
aXRpbmcnKTsKLSAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsnd3JpdGUn
LCAnYSddLCAnYXQgc3RlcCA4LCBvbmUgY2h1bmsgbXVzdCBoYXZlIGJlZW4gd3JpdHRlbicpOwot
Ci0gICAgICAgIC8vIFdoZW4gJ2QnIHdhcyBlbnF1ZXVlZCBhdCBzdGVwIDcsIHRoZSBzaXR1YXRp
b24gaXMgdGhlIHNhbWUgYXMgYmVmb3JlLCBsZWFkaW5nIHRvIGEgcXVldWUgY29udGFpbmluZyAn
YicsICdjJywKLSAgICAgICAgLy8gYW5kICdkJy4KLSAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFs
cyhkZXNpcmVkU2l6ZXMsIFsxLCAwLCAtMSwgLTJdLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICdhdCBzdGVwIDgsIHRoZSBkZXNpcmVkU2l6ZSBhdCB0aGUgbGFzdCBlbnF1ZXVlIChzdGVw
IDcpIG11c3QgaGF2ZSBiZWVuIC0yJyk7Ci0gICAgICAgIGFzc2VydF9lcXVhbHMocnMuY29udHJv
bGxlci5kZXNpcmVkU2l6ZSwgLTIsICdhdCBzdGVwIDgsIHRoZSBjdXJyZW50IGRlc2lyZWRTaXpl
IG11c3QgYmUgLTInKTsKLSAgICAgIH0pLAotCi0gICAgICBzdGVwcy53YWl0VGhlbkFkdmFuY2Uo
MTApLnRoZW4oKCkgPT4gewotICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGNodW5rc0Zpbmlz
aGVkV3JpdGluZywgWydhJ10sICdhdCBzdGVwIDEwLCBvbmUgY2h1bmsgbXVzdCBoYXZlIGZpbmlz
aGVkIHdyaXRpbmcnKTsKLSAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsn
d3JpdGUnLCAnYScsICd3cml0ZScsICdiJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
J2F0IHN0ZXAgMTAsIHR3byBjaHVua3MgbXVzdCBoYXZlIGJlZW4gd3JpdHRlbicpOwotCi0gICAg
ICAgIGFzc2VydF9lcXVhbHMocnMuY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgLTEsICdhdCBzdGVw
IDEwLCB0aGUgY3VycmVudCBkZXNpcmVkU2l6ZSBtdXN0IGJlIC0xJyk7Ci0gICAgICB9KSwKLQot
ICAgICAgcGlwZVByb21pc2UudGhlbigoKSA9PiB7Ci0gICAgICAgIGFzc2VydF9hcnJheV9lcXVh
bHMoZGVzaXJlZFNpemVzLCBbMSwgMCwgLTEsIC0yXSwgJ2JhY2twcmVzc3VyZSBtdXN0IGhhdmUg
YmVlbiBleGVydGVkIGF0IHRoZSBzb3VyY2UnKTsKLSAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFs
cyhjaHVua3NGaW5pc2hlZFdyaXRpbmcsIFsnYScsICdiJywgJ2MnLCAnZCddLCAnYWxsIGNodW5r
cyBmaW5pc2hlZCB3cml0aW5nJyk7Ci0KLSAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhycy5l
dmVudHNXaXRob3V0UHVsbHMsIFtdLCAnbm90aGluZyB1bmV4cGVjdGVkIHNob3VsZCBoYXBwZW4g
dG8gdGhlIFJlYWRhYmxlU3RyZWFtJyk7Ci0gICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3Mu
ZXZlbnRzLCBbJ3dyaXRlJywgJ2EnLCAnd3JpdGUnLCAnYicsICd3cml0ZScsICdjJywgJ3dyaXRl
JywgJ2QnLCAnY2xvc2UnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYWxsIGNodW5r
cyB3ZXJlIHdyaXR0ZW4gKGFuZCB0aGUgV3JpdGFibGVTdHJlYW0gY2xvc2VkKScpOwotICAgICAg
fSkKLSAgICBdKTsKLSAgfSk7Ci19LCAnUGlwaW5nIHRvIGEgV3JpdGFibGVTdHJlYW0gdGhhdCBk
b2VzIG5vdCBjb25zdW1lIHRoZSB3cml0ZXMgZmFzdCBlbm91Z2ggZXhlcnRzIGJhY2twcmVzc3Vy
ZSBvbiB0aGUgUmVhZGFibGVTdHJlYW0nKTsKLQotZG9uZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9mbG93
LWNvbnRyb2wuc2VydmljZXdvcmtlci5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Zsb3ctY29udHJv
bC5zZXJ2aWNld29ya2VyLmh0dHBzLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggNzRkYmE5MDhkOGEwNzhhMjZkYzNhOGFjZjNhZjRlM2Q0YzhiOTQzZC4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Zsb3ctY29udHJvbC5z
ZXJ2aWNld29ya2VyLmh0dHBzLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDggKzAs
MCBAQAotCi1QQVNTIFNlcnZpY2Ugd29ya2VyIHRlc3Qgc2V0dXAgCi1GQUlMIFBpcGluZyBmcm9t
IGEgbm9uLWVtcHR5IFJlYWRhYmxlU3RyZWFtIGludG8gYSBXcml0YWJsZVN0cmVhbSB0aGF0IGRv
ZXMgbm90IGRlc2lyZSBjaHVua3MgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0K
LUZBSUwgUGlwaW5nIGZyb20gYSBub24tZW1wdHkgUmVhZGFibGVTdHJlYW0gaW50byBhIFdyaXRh
YmxlU3RyZWFtIHRoYXQgZG9lcyBub3QgZGVzaXJlIGNodW5rcywgYnV0IHRoZW4gZG9lcyBDYW4n
dCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBQaXBpbmcgZnJvbSBhbiBlbXB0
eSBSZWFkYWJsZVN0cmVhbSBpbnRvIGEgV3JpdGFibGVTdHJlYW0gdGhhdCBkb2VzIG5vdCBkZXNp
cmUgY2h1bmtzLCBidXQgdGhlbiB0aGUgcmVhZGFibGUgc3RyZWFtIGJlY29tZXMgbm9uLWVtcHR5
IGFuZCB0aGUgd3JpdGFibGUgc3RyZWFtIHN0YXJ0cyBkZXNpcmluZyBjaHVua3MgQ2FuJ3QgZmlu
ZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgUGlwaW5nIGZyb20gYSBSZWFkYWJsZVN0
cmVhbSB0byBhIFdyaXRhYmxlU3RyZWFtIHRoYXQgZGVzaXJlcyBtb3JlIGNodW5rcyBiZWZvcmUg
ZmluaXNoaW5nIHdpdGggcHJldmlvdXMgb25lcyBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJs
ZVN0cmVhbQotRkFJTCBQaXBpbmcgdG8gYSBXcml0YWJsZVN0cmVhbSB0aGF0IGRvZXMgbm90IGNv
bnN1bWUgdGhlIHdyaXRlcyBmYXN0IGVub3VnaCBleGVydHMgYmFja3ByZXNzdXJlIG9uIHRoZSBS
ZWFkYWJsZVN0cmVhbSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvcGlwaW5nL2Zsb3ctY29udHJvbC5zZXJ2aWNld29ya2VyLmh0dHBzLmh0bWwgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Zsb3ct
Y29udHJvbC5zZXJ2aWNld29ya2VyLmh0dHBzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDdmYTAxZDVjMGQzYjBjYjI1YjMxOGY4NzA0ZWJmN2MwZjNmZDkwOTEuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9mbG93LWNvbnRyb2wuc2Vy
dmljZXdvcmtlci5odHRwcy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotPCFE
T0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08dGl0bGU+Zmxvdy1jb250cm9s
LmpzIHNlcnZpY2Ugd29ya2VyIHdyYXBwZXIgZmlsZTwvdGl0bGU+Ci0KLTxzY3JpcHQgc3JjPSIv
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvc2Vydmlj
ZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL3Jlc291cmNlcy90ZXN0LWhlbHBlcnMuc3ViLmpzIj48
L3NjcmlwdD4KLQotPHNjcmlwdD4KLSd1c2Ugc3RyaWN0JzsKLXNlcnZpY2Vfd29ya2VyX3Rlc3Qo
J2Zsb3ctY29udHJvbC5qcycsICdTZXJ2aWNlIHdvcmtlciB0ZXN0IHNldHVwJyk7Ci08L3Njcmlw
dD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy9waXBpbmcvZmxvdy1jb250cm9sLnNoYXJlZHdvcmtlci1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlw
aW5nL2Zsb3ctY29udHJvbC5zaGFyZWR3b3JrZXItZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwOWQ1ZDI1MDlkNzg0N2U4Y2Q2ZmU2NjA2YWE2MGNkZDMzYWE0NzRl
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvZmxvdy1j
b250cm9sLnNoYXJlZHdvcmtlci1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw1ICsw
LDAgQEAKLUNPTlNPTEUgTUVTU0FHRTogUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFi
bGU6IFNoYXJlZFdvcmtlcgotCi1IYXJuZXNzIEVycm9yIChGQUlMKSwgbWVzc2FnZSA9IFJlZmVy
ZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBTaGFyZWRXb3JrZXIKLQotCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
cGlwaW5nL2Zsb3ctY29udHJvbC5zaGFyZWR3b3JrZXIuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvZmxvdy1jb250cm9sLnNo
YXJlZHdvcmtlci5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYjg0Y2VmYjk5
N2M1YTk3OTE1NWIyMGUxZTI2ZjllMWMyZDJmN2EwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvZmxvdy1jb250cm9sLnNoYXJlZHdvcmtlci5odG1sCisr
KyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFy
c2V0PSJ1dGYtOCI+Ci08dGl0bGU+Zmxvdy1jb250cm9sLmpzIHNoYXJlZCB3b3JrZXIgd3JhcHBl
ciBmaWxlPC90aXRsZT4KLQotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMi
Pjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMi
Pjwvc2NyaXB0PgotCi08c2NyaXB0PgotJ3VzZSBzdHJpY3QnOwotZmV0Y2hfdGVzdHNfZnJvbV93
b3JrZXIobmV3IFNoYXJlZFdvcmtlcignZmxvdy1jb250cm9sLmpzJykpOwotPC9zY3JpcHQ+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMvcGlwaW5nL2dlbmVyYWwuYW55LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvZ2VuZXJhbC5hbnktZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIyMjI5ZDViM2I4ODI4MGU5ZWMwYmZkNzA3N2EwOGU2MWUz
YWU3OTIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2dlbmVyYWwuYW55LWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDI0IEBACitDT05TT0xFIE1FU1NBR0U6IFVuaGFuZGxlZCBQcm9taXNlIFJlamVjdGlv
bjogVHlwZUVycm9yOiBUaGUgV3JpdGFibGVTdHJlYW0ucmVhZHkgZ2V0dGVyIGNhbiBvbmx5IGJl
IHVzZWQgb24gaW5zdGFuY2VzIG9mIFdyaXRhYmxlU3RyZWFtCitDT05TT0xFIE1FU1NBR0U6IFVu
aGFuZGxlZCBQcm9taXNlIFJlamVjdGlvbjogdW5kZWZpbmVkCitDT05TT0xFIE1FU1NBR0U6IFVu
aGFuZGxlZCBQcm9taXNlIFJlamVjdGlvbjogdW5kZWZpbmVkCitDT05TT0xFIE1FU1NBR0U6IFVu
aGFuZGxlZCBQcm9taXNlIFJlamVjdGlvbjogVHlwZUVycm9yOiBjYW5jZWwoKSBjYWxsZWQgb24g
YSByZWFkZXIgb3duZWQgYnkgbm8gcmVhZGFibGUgc3RyZWFtCitDT05TT0xFIE1FU1NBR0U6IFVu
aGFuZGxlZCBQcm9taXNlIFJlamVjdGlvbjogdW5kZWZpbmVkCitDT05TT0xFIE1FU1NBR0U6IFVu
aGFuZGxlZCBQcm9taXNlIFJlamVjdGlvbjogdW5kZWZpbmVkCitDT05TT0xFIE1FU1NBR0U6IFVu
aGFuZGxlZCBQcm9taXNlIFJlamVjdGlvbjogdW5kZWZpbmVkCisKK0hhcm5lc3MgRXJyb3IgKEZB
SUwpLCBtZXNzYWdlID0gVW5oYW5kbGVkIHJlamVjdGlvbjogVGhlIFdyaXRhYmxlU3RyZWFtLnJl
YWR5IGdldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiBXcml0YWJsZVN0cmVh
bQorCitGQUlMIFBpcGluZyBtdXN0IGxvY2sgYm90aCB0aGUgUmVhZGFibGVTdHJlYW0gYW5kIFdy
aXRhYmxlU3RyZWFtIGFzc2VydF9mYWxzZTogc2FuaXR5IGNoZWNrOiB0aGUgV3JpdGFibGVTdHJl
YW0gbXVzdCBub3Qgc3RhcnQgbG9ja2VkIGV4cGVjdGVkIGZhbHNlIGdvdCB1bmRlZmluZWQKK0ZB
SUwgUGlwaW5nIGZpbmlzaGluZyBtdXN0IHVubG9jayBib3RoIHRoZSBSZWFkYWJsZVN0cmVhbSBh
bmQgV3JpdGFibGVTdHJlYW0gYXNzZXJ0X2ZhbHNlOiB0aGUgV3JpdGFibGVTdHJlYW0gbXVzdCBi
ZWNvbWUgdW5sb2NrZWQgZXhwZWN0ZWQgZmFsc2UgZ290IHVuZGVmaW5lZAorRkFJTCBwaXBlVG8g
bXVzdCBjaGVjayB0aGUgYnJhbmQgb2YgaXRzIFJlYWRhYmxlU3RyZWFtIHRoaXMgdmFsdWUgQ2Fu
IG9ubHkgY2FsbCBSZWFkYWJsZVN0cmVhbS5nZXRSZWFkZXIgb24gaW5zdGFuY2VzIG9mIFJlYWRh
YmxlU3RyZWFtCitQQVNTIHBpcGVUbyBtdXN0IGNoZWNrIHRoZSBicmFuZCBvZiBpdHMgV3JpdGFi
bGVTdHJlYW0gYXJndW1lbnQgCitGQUlMIHBpcGVUbyBtdXN0IGZhaWwgaWYgdGhlIFJlYWRhYmxl
U3RyZWFtIGlzIGxvY2tlZCwgYW5kIG5vdCBsb2NrIHRoZSBXcml0YWJsZVN0cmVhbSBhc3NlcnRf
ZmFsc2U6IHNhbml0eSBjaGVjazogdGhlIFdyaXRhYmxlU3RyZWFtIGRvZXMgbm90IHN0YXJ0IGxv
Y2tlZCBleHBlY3RlZCBmYWxzZSBnb3QgdW5kZWZpbmVkCitGQUlMIHBpcGVUbyBtdXN0IGZhaWwg
aWYgdGhlIFdyaXRhYmxlU3RyZWFtIGlzIGxvY2tlZCwgYW5kIG5vdCBsb2NrIHRoZSBSZWFkYWJs
ZVN0cmVhbSB3cy5nZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3JpdGVy
KCknLCAnd3MuZ2V0V3JpdGVyJyBpcyB1bmRlZmluZWQpCitGQUlMIFBpcGluZyBmcm9tIGEgUmVh
ZGFibGVTdHJlYW0gZnJvbSB3aGljaCBsb3RzIG9mIGNodW5rcyBhcmUgc3luY2hyb25vdXNseSBy
ZWFkYWJsZSBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2Jq
ZWN0ICJUeXBlRXJyb3I6IHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5n
ZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkiCitQQVNTIFBpcGluZyBm
cm9tIGEgUmVhZGFibGVTdHJlYW0gZm9yIHdoaWNoIGEgY2h1bmsgYmVjb21lcyBhc3luY2hyb25v
dXNseSByZWFkYWJsZSBhZnRlciB0aGUgcGlwZVRvIAorUEFTUyBhbiB1bmRlZmluZWQgcmVqZWN0
aW9uIGZyb20gcHVsbCBzaG91bGQgY2F1c2UgcGlwZVRvKCkgdG8gcmVqZWN0IHdoZW4gcHJldmVu
dEFib3J0IGlzIHRydWUgCitQQVNTIGFuIHVuZGVmaW5lZCByZWplY3Rpb24gZnJvbSBwdWxsIHNo
b3VsZCBjYXVzZSBwaXBlVG8oKSB0byByZWplY3Qgd2hlbiBwcmV2ZW50QWJvcnQgaXMgZmFsc2Ug
CitQQVNTIGFuIHVuZGVmaW5lZCByZWplY3Rpb24gZnJvbSB3cml0ZSBzaG91bGQgY2F1c2UgcGlw
ZVRvKCkgdG8gcmVqZWN0IHdoZW4gcHJldmVudENhbmNlbCBpcyB0cnVlIAorUEFTUyBhbiB1bmRl
ZmluZWQgcmVqZWN0aW9uIGZyb20gd3JpdGUgc2hvdWxkIGNhdXNlIHBpcGVUbygpIHRvIHJlamVj
dCB3aGVuIHByZXZlbnRDYW5jZWwgaXMgZmFsc2UgCitGQUlMIHBpcGVUbygpIHNob3VsZCByZWpl
Y3QgaWYgYW4gb3B0aW9uIGdldHRlciBncmFicyBhIHdyaXRlciB3cy5nZXRXcml0ZXIgaXMgbm90
IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3JpdGVyKCknLCAnd3MuZ2V0V3JpdGVyJyBpcyB1bmRl
ZmluZWQpCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvZ2VuZXJhbC5hbnkuaHRtbCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvZ2VuZXJhbC5hbnku
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4yMzgyOTEzNTI4ZTY5M2IzYTVkNTZjNjYwYTQ1MDYwOTgwYjU0OGMz
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zdHJlYW1zL3BpcGluZy9nZW5lcmFsLmFueS5odG1sCkBAIC0wLDAgKzEgQEAKKzwh
LS0gVGhpcyBmaWxlIGlzIHJlcXVpcmVkIGZvciBXZWJLaXQgdGVzdCBpbmZyYXN0cnVjdHVyZSB0
byBydW4gdGhlIHRlbXBsYXRlZCB0ZXN0IC0tPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy9waXBpbmcvZ2VuZXJhbC5hbnkuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2dlbmVyYWwuYW55LmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmJkMTg5NzNiNDEzMTVkMWJkYmYzZjI0MmQ2YzA5ZjgyMWM4NjdmM2YKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvcGlwaW5nL2dlbmVyYWwuYW55LmpzCkBAIC0wLDAgKzEsMjAwIEBACisvLyBNRVRBOiBnbG9i
YWw9d2luZG93LHdvcmtlcixqc3NoZWxsCisvLyBNRVRBOiBzY3JpcHQ9Li4vcmVzb3VyY2VzL3Rl
c3QtdXRpbHMuanMKKy8vIE1FVEE6IHNjcmlwdD0uLi9yZXNvdXJjZXMvcmVjb3JkaW5nLXN0cmVh
bXMuanMKKyd1c2Ugc3RyaWN0JzsKKwordGVzdCgoKSA9PiB7CisKKyAgY29uc3QgcnMgPSBuZXcg
UmVhZGFibGVTdHJlYW0oKTsKKyAgY29uc3Qgd3MgPSBuZXcgV3JpdGFibGVTdHJlYW0oKTsKKwor
ICBhc3NlcnRfZmFsc2UocnMubG9ja2VkLCAnc2FuaXR5IGNoZWNrOiB0aGUgUmVhZGFibGVTdHJl
YW0gbXVzdCBub3Qgc3RhcnQgbG9ja2VkJyk7CisgIGFzc2VydF9mYWxzZSh3cy5sb2NrZWQsICdz
YW5pdHkgY2hlY2s6IHRoZSBXcml0YWJsZVN0cmVhbSBtdXN0IG5vdCBzdGFydCBsb2NrZWQnKTsK
KworICBycy5waXBlVG8od3MpOworCisgIGFzc2VydF90cnVlKHJzLmxvY2tlZCwgJ3RoZSBSZWFk
YWJsZVN0cmVhbSBtdXN0IGJlY29tZSBsb2NrZWQnKTsKKyAgYXNzZXJ0X3RydWUod3MubG9ja2Vk
LCAndGhlIFdyaXRhYmxlU3RyZWFtIG11c3QgYmVjb21lIGxvY2tlZCcpOworCit9LCAnUGlwaW5n
IG11c3QgbG9jayBib3RoIHRoZSBSZWFkYWJsZVN0cmVhbSBhbmQgV3JpdGFibGVTdHJlYW0nKTsK
KworcHJvbWlzZV90ZXN0KCgpID0+IHsKKworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVh
bSh7CisgICAgc3RhcnQoY29udHJvbGxlcikgeworICAgICAgY29udHJvbGxlci5jbG9zZSgpOwor
ICAgIH0KKyAgfSk7CisgIGNvbnN0IHdzID0gbmV3IFdyaXRhYmxlU3RyZWFtKCk7CisKKyAgcmV0
dXJuIHJzLnBpcGVUbyh3cykudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X2ZhbHNlKHJzLmxvY2tl
ZCwgJ3RoZSBSZWFkYWJsZVN0cmVhbSBtdXN0IGJlY29tZSB1bmxvY2tlZCcpOworICAgIGFzc2Vy
dF9mYWxzZSh3cy5sb2NrZWQsICd0aGUgV3JpdGFibGVTdHJlYW0gbXVzdCBiZWNvbWUgdW5sb2Nr
ZWQnKTsKKyAgfSk7CisKK30sICdQaXBpbmcgZmluaXNoaW5nIG11c3QgdW5sb2NrIGJvdGggdGhl
IFJlYWRhYmxlU3RyZWFtIGFuZCBXcml0YWJsZVN0cmVhbScpOworCitwcm9taXNlX3Rlc3QodCA9
PiB7CisKKyAgY29uc3QgZmFrZVJTID0gT2JqZWN0LmNyZWF0ZShSZWFkYWJsZVN0cmVhbS5wcm90
b3R5cGUpOworICBjb25zdCB3cyA9IG5ldyBXcml0YWJsZVN0cmVhbSgpOworCisgIHJldHVybiBt
ZXRob2RSZWplY3RzKHQsIFJlYWRhYmxlU3RyZWFtLnByb3RvdHlwZSwgJ3BpcGVUbycsIGZha2VS
UywgW3dzXSk7CisKK30sICdwaXBlVG8gbXVzdCBjaGVjayB0aGUgYnJhbmQgb2YgaXRzIFJlYWRh
YmxlU3RyZWFtIHRoaXMgdmFsdWUnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworCisgIGNvbnN0
IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKCk7CisgIGNvbnN0IGZha2VXUyA9IE9iamVjdC5jcmVh
dGUoV3JpdGFibGVTdHJlYW0ucHJvdG90eXBlKTsKKworICByZXR1cm4gbWV0aG9kUmVqZWN0cyh0
LCBSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUsICdwaXBlVG8nLCBycywgW2Zha2VXU10pOworCit9
LCAncGlwZVRvIG11c3QgY2hlY2sgdGhlIGJyYW5kIG9mIGl0cyBXcml0YWJsZVN0cmVhbSBhcmd1
bWVudCcpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFi
bGVTdHJlYW0oKTsKKyAgY29uc3Qgd3MgPSBuZXcgV3JpdGFibGVTdHJlYW0oKTsKKworICBycy5n
ZXRSZWFkZXIoKTsKKworICBhc3NlcnRfdHJ1ZShycy5sb2NrZWQsICdzYW5pdHkgY2hlY2s6IHRo
ZSBSZWFkYWJsZVN0cmVhbSBzdGFydHMgbG9ja2VkJyk7CisgIGFzc2VydF9mYWxzZSh3cy5sb2Nr
ZWQsICdzYW5pdHkgY2hlY2s6IHRoZSBXcml0YWJsZVN0cmVhbSBkb2VzIG5vdCBzdGFydCBsb2Nr
ZWQnKTsKKworICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2pzKHQsIFR5cGVFcnJvciwgcnMucGlw
ZVRvKHdzKSkudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X2ZhbHNlKHdzLmxvY2tlZCwgJ3RoZSBX
cml0YWJsZVN0cmVhbSBtdXN0IHN0aWxsIGJlIHVubG9ja2VkJyk7CisgIH0pOworCit9LCAncGlw
ZVRvIG11c3QgZmFpbCBpZiB0aGUgUmVhZGFibGVTdHJlYW0gaXMgbG9ja2VkLCBhbmQgbm90IGxv
Y2sgdGhlIFdyaXRhYmxlU3RyZWFtJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKworICBjb25z
dCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSgpOworICBjb25zdCB3cyA9IG5ldyBXcml0YWJsZVN0
cmVhbSgpOworCisgIHdzLmdldFdyaXRlcigpOworCisgIGFzc2VydF9mYWxzZShycy5sb2NrZWQs
ICdzYW5pdHkgY2hlY2s6IHRoZSBSZWFkYWJsZVN0cmVhbSBkb2VzIG5vdCBzdGFydCBsb2NrZWQn
KTsKKyAgYXNzZXJ0X3RydWUod3MubG9ja2VkLCAnc2FuaXR5IGNoZWNrOiB0aGUgV3JpdGFibGVT
dHJlYW0gc3RhcnRzIGxvY2tlZCcpOworCisgIHJldHVybiBwcm9taXNlX3JlamVjdHNfanModCwg
VHlwZUVycm9yLCBycy5waXBlVG8od3MpKS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfZmFsc2Uo
cnMubG9ja2VkLCAndGhlIFJlYWRhYmxlU3RyZWFtIG11c3Qgc3RpbGwgYmUgdW5sb2NrZWQnKTsK
KyAgfSk7CisKK30sICdwaXBlVG8gbXVzdCBmYWlsIGlmIHRoZSBXcml0YWJsZVN0cmVhbSBpcyBs
b2NrZWQsIGFuZCBub3QgbG9jayB0aGUgUmVhZGFibGVTdHJlYW0nKTsKKworcHJvbWlzZV90ZXN0
KCgpID0+IHsKKworICBjb25zdCBDSFVOS1MgPSAxMDsKKworICBjb25zdCBycyA9IG5ldyBSZWFk
YWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBD
SFVOS1M7ICsraSkgeworICAgICAgICBjLmVucXVldWUoaSk7CisgICAgICB9CisgICAgICBjLmNs
b3NlKCk7CisgICAgfQorICB9KTsKKworICBjb25zdCB3cml0dGVuID0gW107CisgIGNvbnN0IHdz
ID0gbmV3IFdyaXRhYmxlU3RyZWFtKHsKKyAgICB3cml0ZShjaHVuaykgeworICAgICAgd3JpdHRl
bi5wdXNoKGNodW5rKTsKKyAgICB9LAorICAgIGNsb3NlKCkgeworICAgICAgd3JpdHRlbi5wdXNo
KCdjbG9zZWQnKTsKKyAgICB9CisgIH0sIG5ldyBDb3VudFF1ZXVpbmdTdHJhdGVneSh7IGhpZ2hX
YXRlck1hcms6IENIVU5LUyB9KSk7CisKKyAgcmV0dXJuIHJzLnBpcGVUbyh3cykudGhlbigoKSA9
PiB7CisgICAgY29uc3QgdGFyZ2V0VmFsdWVzID0gW107CisgICAgZm9yIChsZXQgaSA9IDA7IGkg
PCBDSFVOS1M7ICsraSkgeworICAgICAgdGFyZ2V0VmFsdWVzLnB1c2goaSk7CisgICAgfQorICAg
IHRhcmdldFZhbHVlcy5wdXNoKCdjbG9zZWQnKTsKKworICAgIGFzc2VydF9hcnJheV9lcXVhbHMo
d3JpdHRlbiwgdGFyZ2V0VmFsdWVzLCAndGhlIGNvcnJlY3QgdmFsdWVzIG11c3QgYmUgd3JpdHRl
bicpOworCisgICAgLy8gRW5zdXJlIGJvdGggcmVhZGFibGUgYW5kIHdyaXRhYmxlIGFyZSBjbG9z
ZWQgYnkgdGhlIHRpbWUgdGhlIHBpcGUgZmluaXNoZXMuCisgICAgcmV0dXJuIFByb21pc2UuYWxs
KFsKKyAgICAgIHJzLmdldFJlYWRlcigpLmNsb3NlZCwKKyAgICAgIHdzLmdldFdyaXRlcigpLmNs
b3NlZAorICAgIF0pOworICB9KTsKKworICAvLyBOT1RFOiBubyByZXF1aXJlbWVudCBvbiAqd2hl
biogdGhlIHBpcGUgZmluaXNoZXM7IHRoYXQgaXMgbGVmdCB0byBpbXBsZW1lbnRhdGlvbnMuCisK
K30sICdQaXBpbmcgZnJvbSBhIFJlYWRhYmxlU3RyZWFtIGZyb20gd2hpY2ggbG90cyBvZiBjaHVu
a3MgYXJlIHN5bmNocm9ub3VzbHkgcmVhZGFibGUnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4gewor
CisgIGxldCBjb250cm9sbGVyOworICBjb25zdCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFt
KHsKKyAgICBzdGFydChjKSB7CisgICAgICBjb250cm9sbGVyID0gYzsKKyAgICB9CisgIH0pOwor
CisgIGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0oKTsKKworICBjb25zdCBwaXBl
UHJvbWlzZSA9IHJzLnBpcGVUbyh3cykudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X2FycmF5X2Vx
dWFscyh3cy5ldmVudHMsIFsnd3JpdGUnLCAnSGVsbG8nLCAnY2xvc2UnXSk7CisgIH0pOworCisg
IHQuc3RlcF90aW1lb3V0KCgpID0+IHsKKyAgICBjb250cm9sbGVyLmVucXVldWUoJ0hlbGxvJyk7
CisgICAgdC5zdGVwX3RpbWVvdXQoKCkgPT4gY29udHJvbGxlci5jbG9zZSgpLCAxMCk7CisgIH0s
IDEwKTsKKworICByZXR1cm4gcGlwZVByb21pc2U7CisKK30sICdQaXBpbmcgZnJvbSBhIFJlYWRh
YmxlU3RyZWFtIGZvciB3aGljaCBhIGNodW5rIGJlY29tZXMgYXN5bmNocm9ub3VzbHkgcmVhZGFi
bGUgYWZ0ZXIgdGhlIHBpcGVUbycpOworCitmb3IgKGNvbnN0IHByZXZlbnRBYm9ydCBvZiBbdHJ1
ZSwgZmFsc2VdKSB7CisgIHByb21pc2VfdGVzdCgoKSA9PiB7CisKKyAgICBjb25zdCBycyA9IG5l
dyBSZWFkYWJsZVN0cmVhbSh7CisgICAgICBwdWxsKCkgeworICAgICAgICByZXR1cm4gUHJvbWlz
ZS5yZWplY3QodW5kZWZpbmVkKTsKKyAgICAgIH0KKyAgICB9KTsKKworICAgIHJldHVybiBycy5w
aXBlVG8obmV3IFdyaXRhYmxlU3RyZWFtKCksIHsgcHJldmVudEFib3J0IH0pLnRoZW4oCisgICAg
ICAgICgpID0+IGFzc2VydF91bnJlYWNoZWQoJ3BpcGVUbyBwcm9taXNlIHNob3VsZCBiZSByZWpl
Y3RlZCcpLAorICAgICAgICB2YWx1ZSA9PiBhc3NlcnRfZXF1YWxzKHZhbHVlLCB1bmRlZmluZWQs
ICdyZWplY3Rpb24gdmFsdWUgc2hvdWxkIGJlIHVuZGVmaW5lZCcpKTsKKworICB9LCBgYW4gdW5k
ZWZpbmVkIHJlamVjdGlvbiBmcm9tIHB1bGwgc2hvdWxkIGNhdXNlIHBpcGVUbygpIHRvIHJlamVj
dCB3aGVuIHByZXZlbnRBYm9ydCBpcyAke3ByZXZlbnRBYm9ydH1gKTsKK30KKworZm9yIChjb25z
dCBwcmV2ZW50Q2FuY2VsIG9mIFt0cnVlLCBmYWxzZV0pIHsKKyAgcHJvbWlzZV90ZXN0KCgpID0+
IHsKKworICAgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICAgIHB1bGwoY29u
dHJvbGxlcikgeworICAgICAgICBjb250cm9sbGVyLmVucXVldWUoMCk7CisgICAgICB9CisgICAg
fSk7CisKKyAgICBjb25zdCB3cyA9IG5ldyBXcml0YWJsZVN0cmVhbSh7CisgICAgICB3cml0ZSgp
IHsKKyAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KHVuZGVmaW5lZCk7CisgICAgICB9Cisg
ICAgfSk7CisKKyAgICByZXR1cm4gcnMucGlwZVRvKHdzLCB7IHByZXZlbnRDYW5jZWwgfSkudGhl
bigKKyAgICAgICAgICgpID0+IGFzc2VydF91bnJlYWNoZWQoJ3BpcGVUbyBwcm9taXNlIHNob3Vs
ZCBiZSByZWplY3RlZCcpLAorICAgICAgICB2YWx1ZSA9PiBhc3NlcnRfZXF1YWxzKHZhbHVlLCB1
bmRlZmluZWQsICdyZWplY3Rpb24gdmFsdWUgc2hvdWxkIGJlIHVuZGVmaW5lZCcpKTsKKworICB9
LCBgYW4gdW5kZWZpbmVkIHJlamVjdGlvbiBmcm9tIHdyaXRlIHNob3VsZCBjYXVzZSBwaXBlVG8o
KSB0byByZWplY3Qgd2hlbiBwcmV2ZW50Q2FuY2VsIGlzICR7cHJldmVudENhbmNlbH1gKTsKK30K
KworcHJvbWlzZV90ZXN0KHQgPT4geworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSgp
OworICBjb25zdCB3cyA9IG5ldyBXcml0YWJsZVN0cmVhbSgpOworICByZXR1cm4gcHJvbWlzZV9y
ZWplY3RzX2pzKHQsIFR5cGVFcnJvciwgcnMucGlwZVRvKHdzLCB7CisgICAgZ2V0IHByZXZlbnRB
Ym9ydCgpIHsKKyAgICAgIHdzLmdldFdyaXRlcigpOworICAgIH0KKyAgfSksICdwaXBlVG8gc2hv
dWxkIHJlamVjdCcpOworfSwgJ3BpcGVUbygpIHNob3VsZCByZWplY3QgaWYgYW4gb3B0aW9uIGdl
dHRlciBncmFicyBhIHdyaXRlcicpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9nZW5lcmFsLmFueS53b3JrZXIt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL3BpcGluZy9nZW5lcmFsLmFueS53b3JrZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmVlMzkwYmJmNGQ1YmJjZjY0ZjE2YzNkZTcyYjBkODQ5NjgyZWM3NmEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvcGlwaW5nL2dlbmVyYWwuYW55Lndvcmtlci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNSBA
QAorCitGQUlMIFBpcGluZyBtdXN0IGxvY2sgYm90aCB0aGUgUmVhZGFibGVTdHJlYW0gYW5kIFdy
aXRhYmxlU3RyZWFtIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIFBp
cGluZyBmaW5pc2hpbmcgbXVzdCB1bmxvY2sgYm90aCB0aGUgUmVhZGFibGVTdHJlYW0gYW5kIFdy
aXRhYmxlU3RyZWFtIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIHBp
cGVUbyBtdXN0IGNoZWNrIHRoZSBicmFuZCBvZiBpdHMgUmVhZGFibGVTdHJlYW0gdGhpcyB2YWx1
ZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBwaXBlVG8gbXVzdCBj
aGVjayB0aGUgYnJhbmQgb2YgaXRzIFdyaXRhYmxlU3RyZWFtIGFyZ3VtZW50IENhbid0IGZpbmQg
dmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIHBpcGVUbyBtdXN0IGZhaWwgaWYgdGhlIFJl
YWRhYmxlU3RyZWFtIGlzIGxvY2tlZCwgYW5kIG5vdCBsb2NrIHRoZSBXcml0YWJsZVN0cmVhbSBD
YW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBwaXBlVG8gbXVzdCBmYWls
IGlmIHRoZSBXcml0YWJsZVN0cmVhbSBpcyBsb2NrZWQsIGFuZCBub3QgbG9jayB0aGUgUmVhZGFi
bGVTdHJlYW0gQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgUGlwaW5n
IGZyb20gYSBSZWFkYWJsZVN0cmVhbSBmcm9tIHdoaWNoIGxvdHMgb2YgY2h1bmtzIGFyZSBzeW5j
aHJvbm91c2x5IHJlYWRhYmxlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitG
QUlMIFBpcGluZyBmcm9tIGEgUmVhZGFibGVTdHJlYW0gZm9yIHdoaWNoIGEgY2h1bmsgYmVjb21l
cyBhc3luY2hyb25vdXNseSByZWFkYWJsZSBhZnRlciB0aGUgcGlwZVRvIENhbid0IGZpbmQgdmFy
aWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIGFuIHVuZGVmaW5lZCByZWplY3Rpb24gZnJvbSBw
dWxsIHNob3VsZCBjYXVzZSBwaXBlVG8oKSB0byByZWplY3Qgd2hlbiBwcmV2ZW50QWJvcnQgaXMg
dHJ1ZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBhbiB1bmRlZmlu
ZWQgcmVqZWN0aW9uIGZyb20gcHVsbCBzaG91bGQgY2F1c2UgcGlwZVRvKCkgdG8gcmVqZWN0IHdo
ZW4gcHJldmVudEFib3J0IGlzIGZhbHNlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3Ry
ZWFtCitGQUlMIGFuIHVuZGVmaW5lZCByZWplY3Rpb24gZnJvbSB3cml0ZSBzaG91bGQgY2F1c2Ug
cGlwZVRvKCkgdG8gcmVqZWN0IHdoZW4gcHJldmVudENhbmNlbCBpcyB0cnVlIENhbid0IGZpbmQg
dmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIGFuIHVuZGVmaW5lZCByZWplY3Rpb24gZnJv
bSB3cml0ZSBzaG91bGQgY2F1c2UgcGlwZVRvKCkgdG8gcmVqZWN0IHdoZW4gcHJldmVudENhbmNl
bCBpcyBmYWxzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBwaXBl
VG8oKSBzaG91bGQgcmVqZWN0IGlmIGFuIG9wdGlvbiBnZXR0ZXIgZ3JhYnMgYSB3cml0ZXIgQ2Fu
J3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9nZW5lcmFs
LmFueS53b3JrZXIuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy9waXBpbmcvZ2VuZXJhbC5hbnkud29ya2VyLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MjM4MjkxMzUyOGU2OTNiM2E1ZDU2YzY2MGE0NTA2MDk4MGI1NDhjMwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9w
aXBpbmcvZ2VuZXJhbC5hbnkud29ya2VyLmh0bWwKQEAgLTAsMCArMSBAQAorPCEtLSBUaGlzIGZp
bGUgaXMgcmVxdWlyZWQgZm9yIFdlYktpdCB0ZXN0IGluZnJhc3RydWN0dXJlIHRvIHJ1biB0aGUg
dGVtcGxhdGVkIHRlc3QgLS0+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3Bp
cGluZy9nZW5lcmFsLmRlZGljYXRlZHdvcmtlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2dlbmVyYWwuZGVk
aWNhdGVkd29ya2VyLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ZTVkZTQ4OWU2MGQ5NzA3NWRjNWQ5YjhiMGIxZDQ2NDE4MTE4MjViZC4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2dlbmVyYWwuZGVkaWNhdGVkd29ya2Vy
LWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDE0ICswLDAgQEAKLQotRkFJTCBQaXBp
bmcgbXVzdCBsb2NrIGJvdGggdGhlIFJlYWRhYmxlU3RyZWFtIGFuZCBXcml0YWJsZVN0cmVhbSBD
YW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBQaXBpbmcgZmluaXNoaW5n
IG11c3QgdW5sb2NrIGJvdGggdGhlIFJlYWRhYmxlU3RyZWFtIGFuZCBXcml0YWJsZVN0cmVhbSBD
YW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBwaXBlVG8gbXVzdCBjaGVj
ayB0aGUgYnJhbmQgb2YgaXRzIFJlYWRhYmxlU3RyZWFtIHRoaXMgdmFsdWUgQ2FuJ3QgZmluZCB2
YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgcGlwZVRvIG11c3QgY2hlY2sgdGhlIGJyYW5k
IG9mIGl0cyBXcml0YWJsZVN0cmVhbSBhcmd1bWVudCBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0
YWJsZVN0cmVhbQotRkFJTCBwaXBlVG8gbXVzdCBmYWlsIGlmIHRoZSBSZWFkYWJsZVN0cmVhbSBp
cyBsb2NrZWQsIGFuZCBub3QgbG9jayB0aGUgV3JpdGFibGVTdHJlYW0gQ2FuJ3QgZmluZCB2YXJp
YWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgcGlwZVRvIG11c3QgZmFpbCBpZiB0aGUgV3JpdGFi
bGVTdHJlYW0gaXMgbG9ja2VkLCBhbmQgbm90IGxvY2sgdGhlIFJlYWRhYmxlU3RyZWFtIENhbid0
IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIFBpcGluZyBmcm9tIGEgUmVhZGFi
bGVTdHJlYW0gZnJvbSB3aGljaCBsb3RzIG9mIGNodW5rcyBhcmUgc3luY2hyb25vdXNseSByZWFk
YWJsZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBQaXBpbmcgZnJv
bSBhIFJlYWRhYmxlU3RyZWFtIGZvciB3aGljaCBhIGNodW5rIGJlY29tZXMgYXN5bmNocm9ub3Vz
bHkgcmVhZGFibGUgYWZ0ZXIgdGhlIHBpcGVUbyBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJs
ZVN0cmVhbQotRkFJTCBhbiB1bmRlZmluZWQgcmVqZWN0aW9uIGZyb20gcHVsbCBzaG91bGQgY2F1
c2UgcGlwZVRvKCkgdG8gcmVqZWN0IHdoZW4gcHJldmVudEFib3J0IGlzIHRydWUgQ2FuJ3QgZmlu
ZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgYW4gdW5kZWZpbmVkIHJlamVjdGlvbiBm
cm9tIHB1bGwgc2hvdWxkIGNhdXNlIHBpcGVUbygpIHRvIHJlamVjdCB3aGVuIHByZXZlbnRBYm9y
dCBpcyBmYWxzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBhbiB1
bmRlZmluZWQgcmVqZWN0aW9uIGZyb20gd3JpdGUgc2hvdWxkIGNhdXNlIHBpcGVUbygpIHRvIHJl
amVjdCB3aGVuIHByZXZlbnRDYW5jZWwgaXMgdHJ1ZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0
YWJsZVN0cmVhbQotRkFJTCBhbiB1bmRlZmluZWQgcmVqZWN0aW9uIGZyb20gd3JpdGUgc2hvdWxk
IGNhdXNlIHBpcGVUbygpIHRvIHJlamVjdCB3aGVuIHByZXZlbnRDYW5jZWwgaXMgZmFsc2UgQ2Fu
J3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9nZW5lcmFs
LmRlZGljYXRlZHdvcmtlci5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9nZW5lcmFsLmRlZGljYXRlZHdvcmtlci5odG1sCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NmU0ODAxMzllODkxNzJjY2NkMmEwOGYxNDE3
ZGQzMzk4ZjUzMjhhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9w
aXBpbmcvZ2VuZXJhbC5kZWRpY2F0ZWR3b3JrZXIuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEx
ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHRpdGxl
PmdlbmVyYWwuanMgZGVkaWNhdGVkIHdvcmtlciB3cmFwcGVyIGZpbGU8L3RpdGxlPgotCi08c2Ny
aXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNy
Yz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci0KLTxzY3JpcHQ+
Ci0ndXNlIHN0cmljdCc7Ci1mZXRjaF90ZXN0c19mcm9tX3dvcmtlcihuZXcgV29ya2VyKCdnZW5l
cmFsLmpzJykpOwotPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2dlbmVyYWwuaHRtbCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvZ2Vu
ZXJhbC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNDkzOGEyMTZjMjI0ZjA1
YjEyMGZiZWJkOWJmN2NkYTgzYWRjNWI2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy9waXBpbmcvZ2VuZXJhbC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAs
MCBAQAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08dGl0bGU+Z2Vu
ZXJhbC5qcyBicm93c2VyIGNvbnRleHQgd3JhcHBlciBmaWxlPC90aXRsZT4KLQotPHNjcmlwdCBz
cmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9y
ZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotCi08c2NyaXB0IHNyYz0i
Li4vcmVzb3VyY2VzL3Rlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL3Jl
c291cmNlcy9yZWNvcmRpbmctc3RyZWFtcy5qcyI+PC9zY3JpcHQ+Ci0KLTxzY3JpcHQgc3JjPSJn
ZW5lcmFsLmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvZ2VuZXJhbC5qcyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvZ2VuZXJh
bC5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmJjNmU5YmU1OGJkODY3NDAzYjg4
NThmNDEyYTFiMGZkY2VmM2JmNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMvcGlwaW5nL2dlbmVyYWwuanMKKysrIC9kZXYvbnVsbApAQCAtMSwxOTUgKzAsMCBAQAot
J3VzZSBzdHJpY3QnOwotCi1pZiAoc2VsZi5pbXBvcnRTY3JpcHRzKSB7Ci0gIHNlbGYuaW1wb3J0
U2NyaXB0cygnL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcycpOwotICBzZWxmLmltcG9ydFNjcmlw
dHMoJy4uL3Jlc291cmNlcy90ZXN0LXV0aWxzLmpzJyk7Ci0gIHNlbGYuaW1wb3J0U2NyaXB0cygn
Li4vcmVzb3VyY2VzL3JlY29yZGluZy1zdHJlYW1zLmpzJyk7Ci19Ci0KLXRlc3QoKCkgPT4gewot
Ci0gIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKCk7Ci0gIGNvbnN0IHdzID0gbmV3IFdy
aXRhYmxlU3RyZWFtKCk7Ci0KLSAgYXNzZXJ0X2ZhbHNlKHJzLmxvY2tlZCwgJ3Nhbml0eSBjaGVj
azogdGhlIFJlYWRhYmxlU3RyZWFtIG11c3Qgbm90IHN0YXJ0IGxvY2tlZCcpOwotICBhc3NlcnRf
ZmFsc2Uod3MubG9ja2VkLCAnc2FuaXR5IGNoZWNrOiB0aGUgV3JpdGFibGVTdHJlYW0gbXVzdCBu
b3Qgc3RhcnQgbG9ja2VkJyk7Ci0KLSAgcnMucGlwZVRvKHdzKTsKLQotICBhc3NlcnRfdHJ1ZShy
cy5sb2NrZWQsICd0aGUgUmVhZGFibGVTdHJlYW0gbXVzdCBiZWNvbWUgbG9ja2VkJyk7Ci0gIGFz
c2VydF90cnVlKHdzLmxvY2tlZCwgJ3RoZSBXcml0YWJsZVN0cmVhbSBtdXN0IGJlY29tZSBsb2Nr
ZWQnKTsKLQotfSwgJ1BpcGluZyBtdXN0IGxvY2sgYm90aCB0aGUgUmVhZGFibGVTdHJlYW0gYW5k
IFdyaXRhYmxlU3RyZWFtJyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgY29uc3QgcnMg
PSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGNvbnRyb2xsZXIpIHsKLSAgICAgIGNv
bnRyb2xsZXIuY2xvc2UoKTsKLSAgICB9Ci0gIH0pOwotICBjb25zdCB3cyA9IG5ldyBXcml0YWJs
ZVN0cmVhbSgpOwotCi0gIHJldHVybiBycy5waXBlVG8od3MpLnRoZW4oKCkgPT4gewotICAgIGFz
c2VydF9mYWxzZShycy5sb2NrZWQsICd0aGUgUmVhZGFibGVTdHJlYW0gbXVzdCBiZWNvbWUgdW5s
b2NrZWQnKTsKLSAgICBhc3NlcnRfZmFsc2Uod3MubG9ja2VkLCAndGhlIFdyaXRhYmxlU3RyZWFt
IG11c3QgYmVjb21lIHVubG9ja2VkJyk7Ci0gIH0pOwotCi19LCAnUGlwaW5nIGZpbmlzaGluZyBt
dXN0IHVubG9jayBib3RoIHRoZSBSZWFkYWJsZVN0cmVhbSBhbmQgV3JpdGFibGVTdHJlYW0nKTsK
LQotcHJvbWlzZV90ZXN0KHQgPT4gewotCi0gIGNvbnN0IGZha2VSUyA9IE9iamVjdC5jcmVhdGUo
UmVhZGFibGVTdHJlYW0ucHJvdG90eXBlKTsKLSAgY29uc3Qgd3MgPSBuZXcgV3JpdGFibGVTdHJl
YW0oKTsKLQotICByZXR1cm4gbWV0aG9kUmVqZWN0cyh0LCBSZWFkYWJsZVN0cmVhbS5wcm90b3R5
cGUsICdwaXBlVG8nLCBmYWtlUlMsIFt3c10pOwotCi19LCAncGlwZVRvIG11c3QgY2hlY2sgdGhl
IGJyYW5kIG9mIGl0cyBSZWFkYWJsZVN0cmVhbSB0aGlzIHZhbHVlJyk7Ci0KLXByb21pc2VfdGVz
dCh0ID0+IHsKLQotICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSgpOwotICBjb25zdCBm
YWtlV1MgPSBPYmplY3QuY3JlYXRlKFdyaXRhYmxlU3RyZWFtLnByb3RvdHlwZSk7Ci0KLSAgcmV0
dXJuIG1ldGhvZFJlamVjdHModCwgUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLCAncGlwZVRvJywg
cnMsIFtmYWtlV1NdKTsKLQotfSwgJ3BpcGVUbyBtdXN0IGNoZWNrIHRoZSBicmFuZCBvZiBpdHMg
V3JpdGFibGVTdHJlYW0gYXJndW1lbnQnKTsKLQotcHJvbWlzZV90ZXN0KHQgPT4gewotCi0gIGNv
bnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKCk7Ci0gIGNvbnN0IHdzID0gbmV3IFdyaXRhYmxl
U3RyZWFtKCk7Ci0KLSAgcnMuZ2V0UmVhZGVyKCk7Ci0KLSAgYXNzZXJ0X3RydWUocnMubG9ja2Vk
LCAnc2FuaXR5IGNoZWNrOiB0aGUgUmVhZGFibGVTdHJlYW0gc3RhcnRzIGxvY2tlZCcpOwotICBh
c3NlcnRfZmFsc2Uod3MubG9ja2VkLCAnc2FuaXR5IGNoZWNrOiB0aGUgV3JpdGFibGVTdHJlYW0g
ZG9lcyBub3Qgc3RhcnQgbG9ja2VkJyk7Ci0KLSAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0LCBu
ZXcgVHlwZUVycm9yKCksIHJzLnBpcGVUbyh3cykpLnRoZW4oKCkgPT4gewotICAgIGFzc2VydF9m
YWxzZSh3cy5sb2NrZWQsICd0aGUgV3JpdGFibGVTdHJlYW0gbXVzdCBzdGlsbCBiZSB1bmxvY2tl
ZCcpOwotICB9KTsKLQotfSwgJ3BpcGVUbyBtdXN0IGZhaWwgaWYgdGhlIFJlYWRhYmxlU3RyZWFt
IGlzIGxvY2tlZCwgYW5kIG5vdCBsb2NrIHRoZSBXcml0YWJsZVN0cmVhbScpOwotCi1wcm9taXNl
X3Rlc3QodCA9PiB7Ci0KLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oKTsKLSAgY29u
c3Qgd3MgPSBuZXcgV3JpdGFibGVTdHJlYW0oKTsKLQotICB3cy5nZXRXcml0ZXIoKTsKLQotICBh
c3NlcnRfZmFsc2UocnMubG9ja2VkLCAnc2FuaXR5IGNoZWNrOiB0aGUgUmVhZGFibGVTdHJlYW0g
ZG9lcyBub3Qgc3RhcnQgbG9ja2VkJyk7Ci0gIGFzc2VydF90cnVlKHdzLmxvY2tlZCwgJ3Nhbml0
eSBjaGVjazogdGhlIFdyaXRhYmxlU3RyZWFtIHN0YXJ0cyBsb2NrZWQnKTsKLQotICByZXR1cm4g
cHJvbWlzZV9yZWplY3RzKHQsIG5ldyBUeXBlRXJyb3IoKSwgcnMucGlwZVRvKHdzKSkudGhlbigo
KSA9PiB7Ci0gICAgYXNzZXJ0X2ZhbHNlKHJzLmxvY2tlZCwgJ3RoZSBSZWFkYWJsZVN0cmVhbSBt
dXN0IHN0aWxsIGJlIHVubG9ja2VkJyk7Ci0gIH0pOwotCi19LCAncGlwZVRvIG11c3QgZmFpbCBp
ZiB0aGUgV3JpdGFibGVTdHJlYW0gaXMgbG9ja2VkLCBhbmQgbm90IGxvY2sgdGhlIFJlYWRhYmxl
U3RyZWFtJyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgY29uc3QgQ0hVTktTID0gMTA7
Ci0KLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAg
ICAgIGZvciAobGV0IGkgPSAwOyBpIDwgQ0hVTktTOyArK2kpIHsKLSAgICAgICAgYy5lbnF1ZXVl
KGkpOwotICAgICAgfQotICAgICAgYy5jbG9zZSgpOwotICAgIH0KLSAgfSk7Ci0KLSAgY29uc3Qg
d3JpdHRlbiA9IFtdOwotICBjb25zdCB3cyA9IG5ldyBXcml0YWJsZVN0cmVhbSh7Ci0gICAgd3Jp
dGUoY2h1bmspIHsKLSAgICAgIHdyaXR0ZW4ucHVzaChjaHVuayk7Ci0gICAgfSwKLSAgICBjbG9z
ZSgpIHsKLSAgICAgIHdyaXR0ZW4ucHVzaCgnY2xvc2VkJyk7Ci0gICAgfQotICB9LCBuZXcgQ291
bnRRdWV1aW5nU3RyYXRlZ3koeyBoaWdoV2F0ZXJNYXJrOiBDSFVOS1MgfSkpOwotCi0gIHJldHVy
biBycy5waXBlVG8od3MpLnRoZW4oKCkgPT4gewotICAgIGNvbnN0IHRhcmdldFZhbHVlcyA9IFtd
OwotICAgIGZvciAobGV0IGkgPSAwOyBpIDwgQ0hVTktTOyArK2kpIHsKLSAgICAgIHRhcmdldFZh
bHVlcy5wdXNoKGkpOwotICAgIH0KLSAgICB0YXJnZXRWYWx1ZXMucHVzaCgnY2xvc2VkJyk7Ci0K
LSAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdyaXR0ZW4sIHRhcmdldFZhbHVlcywgJ3RoZSBjb3Jy
ZWN0IHZhbHVlcyBtdXN0IGJlIHdyaXR0ZW4nKTsKLQotICAgIC8vIEVuc3VyZSBib3RoIHJlYWRh
YmxlIGFuZCB3cml0YWJsZSBhcmUgY2xvc2VkIGJ5IHRoZSB0aW1lIHRoZSBwaXBlIGZpbmlzaGVz
LgotICAgIHJldHVybiBQcm9taXNlLmFsbChbCi0gICAgICBycy5nZXRSZWFkZXIoKS5jbG9zZWQs
Ci0gICAgICB3cy5nZXRXcml0ZXIoKS5jbG9zZWQKLSAgICBdKTsKLSAgfSk7Ci0KLSAgLy8gTk9U
RTogbm8gcmVxdWlyZW1lbnQgb24gKndoZW4qIHRoZSBwaXBlIGZpbmlzaGVzOyB0aGF0IGlzIGxl
ZnQgdG8gaW1wbGVtZW50YXRpb25zLgotCi19LCAnUGlwaW5nIGZyb20gYSBSZWFkYWJsZVN0cmVh
bSBmcm9tIHdoaWNoIGxvdHMgb2YgY2h1bmtzIGFyZSBzeW5jaHJvbm91c2x5IHJlYWRhYmxlJyk7
Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgbGV0IGNvbnRyb2xsZXI7Ci0gIGNvbnN0IHJz
ID0gcmVjb3JkaW5nUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGNvbnRy
b2xsZXIgPSBjOwotICAgIH0KLSAgfSk7Ci0KLSAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJs
ZVN0cmVhbSgpOwotCi0gIGNvbnN0IHBpcGVQcm9taXNlID0gcnMucGlwZVRvKHdzKS50aGVuKCgp
ID0+IHsKLSAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWyd3cml0ZScsICdIZWxs
bycsICdjbG9zZSddKTsKLSAgfSk7Ci0KLSAgc2V0VGltZW91dCgoKSA9PiB7Ci0gICAgY29udHJv
bGxlci5lbnF1ZXVlKCdIZWxsbycpOwotICAgIHNldFRpbWVvdXQoKCkgPT4gY29udHJvbGxlci5j
bG9zZSgpLCAxMCk7Ci0gIH0sIDEwKTsKLQotICByZXR1cm4gcGlwZVByb21pc2U7Ci0KLX0sICdQ
aXBpbmcgZnJvbSBhIFJlYWRhYmxlU3RyZWFtIGZvciB3aGljaCBhIGNodW5rIGJlY29tZXMgYXN5
bmNocm9ub3VzbHkgcmVhZGFibGUgYWZ0ZXIgdGhlIHBpcGVUbycpOwotCi1mb3IgKGNvbnN0IHBy
ZXZlbnRBYm9ydCBvZiBbdHJ1ZSwgZmFsc2VdKSB7Ci0gIHByb21pc2VfdGVzdCgoKSA9PiB7Ci0K
LSAgICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgICBwdWxsKCkgewotICAg
ICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QodW5kZWZpbmVkKTsKLSAgICAgIH0KLSAgICB9KTsK
LQotICAgIHJldHVybiBycy5waXBlVG8obmV3IFdyaXRhYmxlU3RyZWFtKCksIHsgcHJldmVudEFi
b3J0IH0pLnRoZW4oCi0gICAgICAgICgpID0+IGFzc2VydF91bnJlYWNoZWQoJ3BpcGVUbyBwcm9t
aXNlIHNob3VsZCBiZSByZWplY3RlZCcpLAotICAgICAgICB2YWx1ZSA9PiBhc3NlcnRfZXF1YWxz
KHZhbHVlLCB1bmRlZmluZWQsICdyZWplY3Rpb24gdmFsdWUgc2hvdWxkIGJlIHVuZGVmaW5lZCcp
KTsKLQotICB9LCBgYW4gdW5kZWZpbmVkIHJlamVjdGlvbiBmcm9tIHB1bGwgc2hvdWxkIGNhdXNl
IHBpcGVUbygpIHRvIHJlamVjdCB3aGVuIHByZXZlbnRBYm9ydCBpcyAke3ByZXZlbnRBYm9ydH1g
KTsKLX0KLQotZm9yIChjb25zdCBwcmV2ZW50Q2FuY2VsIG9mIFt0cnVlLCBmYWxzZV0pIHsKLSAg
cHJvbWlzZV90ZXN0KCgpID0+IHsKLQotICAgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFt
KHsKLSAgICAgIHB1bGwoY29udHJvbGxlcikgewotICAgICAgICBjb250cm9sbGVyLmVucXVldWUo
MCk7Ci0gICAgICB9Ci0gICAgfSk7Ci0KLSAgICBjb25zdCB3cyA9IG5ldyBXcml0YWJsZVN0cmVh
bSh7Ci0gICAgICB3cml0ZSgpIHsKLSAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KHVuZGVm
aW5lZCk7Ci0gICAgICB9Ci0gICAgfSk7Ci0KLSAgICByZXR1cm4gcnMucGlwZVRvKHdzLCB7IHBy
ZXZlbnRDYW5jZWwgfSkudGhlbigKLSAgICAgICAgICgpID0+IGFzc2VydF91bnJlYWNoZWQoJ3Bp
cGVUbyBwcm9taXNlIHNob3VsZCBiZSByZWplY3RlZCcpLAotICAgICAgICB2YWx1ZSA9PiBhc3Nl
cnRfZXF1YWxzKHZhbHVlLCB1bmRlZmluZWQsICdyZWplY3Rpb24gdmFsdWUgc2hvdWxkIGJlIHVu
ZGVmaW5lZCcpKTsKLQotICB9LCBgYW4gdW5kZWZpbmVkIHJlamVjdGlvbiBmcm9tIHdyaXRlIHNo
b3VsZCBjYXVzZSBwaXBlVG8oKSB0byByZWplY3Qgd2hlbiBwcmV2ZW50Q2FuY2VsIGlzICR7cHJl
dmVudENhbmNlbH1gKTsKLX0KLQotZG9uZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9nZW5lcmFsLnNlcnZp
Y2V3b3JrZXIuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9nZW5lcmFsLnNlcnZpY2V3b3JrZXIuaHR0
cHMtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZjA0YTg3Mzdm
MzMxNDRjOTMzMzUyZmMxYzdlYTkzZTA3NWEzOTE1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvZ2VuZXJhbC5zZXJ2aWNld29ya2VyLmh0dHBzLWV4cGVj
dGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLQotUEFTUyBTZXJ2aWNlIHdv
cmtlciB0ZXN0IHNldHVwIAotRkFJTCBQaXBpbmcgbXVzdCBsb2NrIGJvdGggdGhlIFJlYWRhYmxl
U3RyZWFtIGFuZCBXcml0YWJsZVN0cmVhbSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0
cmVhbQotRkFJTCBQaXBpbmcgZmluaXNoaW5nIG11c3QgdW5sb2NrIGJvdGggdGhlIFJlYWRhYmxl
U3RyZWFtIGFuZCBXcml0YWJsZVN0cmVhbSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0
cmVhbQotRkFJTCBwaXBlVG8gbXVzdCBjaGVjayB0aGUgYnJhbmQgb2YgaXRzIFJlYWRhYmxlU3Ry
ZWFtIHRoaXMgdmFsdWUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwg
cGlwZVRvIG11c3QgY2hlY2sgdGhlIGJyYW5kIG9mIGl0cyBXcml0YWJsZVN0cmVhbSBhcmd1bWVu
dCBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBwaXBlVG8gbXVzdCBm
YWlsIGlmIHRoZSBSZWFkYWJsZVN0cmVhbSBpcyBsb2NrZWQsIGFuZCBub3QgbG9jayB0aGUgV3Jp
dGFibGVTdHJlYW0gQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgcGlw
ZVRvIG11c3QgZmFpbCBpZiB0aGUgV3JpdGFibGVTdHJlYW0gaXMgbG9ja2VkLCBhbmQgbm90IGxv
Y2sgdGhlIFJlYWRhYmxlU3RyZWFtIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFt
Ci1GQUlMIFBpcGluZyBmcm9tIGEgUmVhZGFibGVTdHJlYW0gZnJvbSB3aGljaCBsb3RzIG9mIGNo
dW5rcyBhcmUgc3luY2hyb25vdXNseSByZWFkYWJsZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0
YWJsZVN0cmVhbQotRkFJTCBQaXBpbmcgZnJvbSBhIFJlYWRhYmxlU3RyZWFtIGZvciB3aGljaCBh
IGNodW5rIGJlY29tZXMgYXN5bmNocm9ub3VzbHkgcmVhZGFibGUgYWZ0ZXIgdGhlIHBpcGVUbyBD
YW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBhbiB1bmRlZmluZWQgcmVq
ZWN0aW9uIGZyb20gcHVsbCBzaG91bGQgY2F1c2UgcGlwZVRvKCkgdG8gcmVqZWN0IHdoZW4gcHJl
dmVudEFib3J0IGlzIHRydWUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZB
SUwgYW4gdW5kZWZpbmVkIHJlamVjdGlvbiBmcm9tIHB1bGwgc2hvdWxkIGNhdXNlIHBpcGVUbygp
IHRvIHJlamVjdCB3aGVuIHByZXZlbnRBYm9ydCBpcyBmYWxzZSBDYW4ndCBmaW5kIHZhcmlhYmxl
OiBXcml0YWJsZVN0cmVhbQotRkFJTCBhbiB1bmRlZmluZWQgcmVqZWN0aW9uIGZyb20gd3JpdGUg
c2hvdWxkIGNhdXNlIHBpcGVUbygpIHRvIHJlamVjdCB3aGVuIHByZXZlbnRDYW5jZWwgaXMgdHJ1
ZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBhbiB1bmRlZmluZWQg
cmVqZWN0aW9uIGZyb20gd3JpdGUgc2hvdWxkIGNhdXNlIHBpcGVUbygpIHRvIHJlamVjdCB3aGVu
IHByZXZlbnRDYW5jZWwgaXMgZmFsc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJl
YW0KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL3BpcGluZy9nZW5lcmFsLnNlcnZpY2V3b3JrZXIuaHR0cHMuaHRtbCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcv
Z2VuZXJhbC5zZXJ2aWNld29ya2VyLmh0dHBzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGQxZGU3YzM0MmMwM2Q2ODYxZTUzYmZiNzM1ZWRiNDI0OWZkY2ZjNzIuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9nZW5lcmFsLnNlcnZpY2V3
b3JrZXIuaHR0cHMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLTwhRE9DVFlQ
RSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHRpdGxlPmdlbmVyYWwuanMgc2Vydmlj
ZSB3b3JrZXIgd3JhcHBlciBmaWxlPC90aXRsZT4KLQotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMv
dGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhh
cm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9zZXJ2aWNlLXdvcmtlcnMv
c2VydmljZS13b3JrZXIvcmVzb3VyY2VzL3Rlc3QtaGVscGVycy5zdWIuanMiPjwvc2NyaXB0Pgot
Ci08c2NyaXB0PgotJ3VzZSBzdHJpY3QnOwotc2VydmljZV93b3JrZXJfdGVzdCgnZ2VuZXJhbC5q
cycsICdTZXJ2aWNlIHdvcmtlciB0ZXN0IHNldHVwJyk7Ci08L3NjcmlwdD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBp
bmcvZ2VuZXJhbC5zaGFyZWR3b3JrZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9nZW5lcmFsLnNoYXJlZHdv
cmtlci1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA5ZDVkMjUw
OWQ3ODQ3ZThjZDZmZTY2MDZhYTYwY2RkMzNhYTQ3NGUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9nZW5lcmFsLnNoYXJlZHdvcmtlci1leHBlY3RlZC50
eHQKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLUNPTlNPTEUgTUVTU0FHRTogUmVmZXJl
bmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IFNoYXJlZFdvcmtlcgotCi1IYXJuZXNzIEVy
cm9yIChGQUlMKSwgbWVzc2FnZSA9IFJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxl
OiBTaGFyZWRXb3JrZXIKLQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2dlbmVyYWwuc2hhcmVkd29ya2VyLmh0
bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
cGlwaW5nL2dlbmVyYWwuc2hhcmVkd29ya2VyLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGRjZWVhOGFjOGI5ZjAwYzlkMGNjYTM3YmYxMzdiZTQ1M2U3MTQ1MTEuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9nZW5lcmFsLnNoYXJlZHdv
cmtlci5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+
Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08dGl0bGU+Z2VuZXJhbC5qcyBzaGFyZWQgd29ya2Vy
IHdyYXBwZXIgZmlsZTwvdGl0bGU+Ci0KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJu
ZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVw
b3J0LmpzIj48L3NjcmlwdD4KLQotPHNjcmlwdD4KLSd1c2Ugc3RyaWN0JzsKLWZldGNoX3Rlc3Rz
X2Zyb21fd29ya2VyKG5ldyBTaGFyZWRXb3JrZXIoJ2dlbmVyYWwuanMnKSk7Ci08L3NjcmlwdD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy9waXBpbmcvbXVsdGlwbGUtcHJvcGFnYXRpb24uYW55LWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcv
bXVsdGlwbGUtcHJvcGFnYXRpb24uYW55LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMWUyZGUy
MzcyNmI0MzlmYmE0MDQxMTQ3NDliZmYxNGE4MmRkNWFmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9t
dWx0aXBsZS1wcm9wYWdhdGlvbi5hbnktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTEgQEAKKwor
RkFJTCBQaXBpbmcgZnJvbSBhbiBlcnJvcmVkIHJlYWRhYmxlIHN0cmVhbSB0byBhbiBlcnJvcmlu
ZyB3cml0YWJsZSBzdHJlYW0gYy5lcnJvciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICdjLmVycm9y
KGVycm9yMiknLCAnYy5lcnJvcicgaXMgdW5kZWZpbmVkKQorRkFJTCBQaXBpbmcgZnJvbSBhbiBl
cnJvcmVkIHJlYWRhYmxlIHN0cmVhbSB0byBhbiBlcnJvcmVkIHdyaXRhYmxlIHN0cmVhbSBwcm9t
aXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJUeXBlRXJy
b3I6IGMuZXJyb3IgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnYy5lcnJvcihlcnJvcjIpJywgJ2Mu
ZXJyb3InIGlzIHVuZGVmaW5lZCkiCitGQUlMIFBpcGluZyBmcm9tIGFuIGVycm9yZWQgcmVhZGFi
bGUgc3RyZWFtIHRvIGFuIGVycm9yaW5nIHdyaXRhYmxlIHN0cmVhbTsgcHJldmVudEFib3J0ID0g
dHJ1ZSBjLmVycm9yIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ2MuZXJyb3IoZXJyb3IyKScsICdj
LmVycm9yJyBpcyB1bmRlZmluZWQpCitGQUlMIFBpcGluZyBmcm9tIGFuIGVycm9yZWQgcmVhZGFi
bGUgc3RyZWFtIHRvIGFuIGVycm9yZWQgd3JpdGFibGUgc3RyZWFtOyBwcmV2ZW50QWJvcnQgPSB0
cnVlIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3Qg
IlR5cGVFcnJvcjogYy5lcnJvciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICdjLmVycm9yKGVycm9y
MiknLCAnYy5lcnJvcicgaXMgdW5kZWZpbmVkKSIKK0ZBSUwgUGlwaW5nIGZyb20gYW4gZXJyb3Jl
ZCByZWFkYWJsZSBzdHJlYW0gdG8gYSBjbG9zaW5nIHdyaXRhYmxlIHN0cmVhbSB3cy5nZXRXcml0
ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3JpdGVyKCknLCAnd3MuZ2V0V3JpdGVy
JyBpcyB1bmRlZmluZWQpCitGQUlMIFBpcGluZyBmcm9tIGFuIGVycm9yZWQgcmVhZGFibGUgc3Ry
ZWFtIHRvIGEgY2xvc2VkIHdyaXRhYmxlIHN0cmVhbSB3cy5nZXRXcml0ZXIgaXMgbm90IGEgZnVu
Y3Rpb24uIChJbiAnd3MuZ2V0V3JpdGVyKCknLCAnd3MuZ2V0V3JpdGVyJyBpcyB1bmRlZmluZWQp
CitGQUlMIFBpcGluZyBmcm9tIGEgY2xvc2VkIHJlYWRhYmxlIHN0cmVhbSB0byBhbiBlcnJvcmlu
ZyB3cml0YWJsZSBzdHJlYW0gYy5lcnJvciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICdjLmVycm9y
KGVycm9yMSknLCAnYy5lcnJvcicgaXMgdW5kZWZpbmVkKQorRkFJTCBQaXBpbmcgZnJvbSBhIGNs
b3NlZCByZWFkYWJsZSBzdHJlYW0gdG8gYW4gZXJyb3JlZCB3cml0YWJsZSBzdHJlYW0gcHJvbWlz
ZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiVHlwZUVycm9y
OiBjLmVycm9yIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ2MuZXJyb3IoZXJyb3IyKScsICdjLmVy
cm9yJyBpcyB1bmRlZmluZWQpIgorRkFJTCBQaXBpbmcgZnJvbSBhIGNsb3NlZCByZWFkYWJsZSBz
dHJlYW0gdG8gYSBjbG9zZWQgd3JpdGFibGUgc3RyZWFtIHdzLmdldFdyaXRlciBpcyBub3QgYSBm
dW5jdGlvbi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5l
ZCkKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL3BpcGluZy9tdWx0aXBsZS1wcm9wYWdhdGlvbi5hbnkuaHRtbCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvbXVs
dGlwbGUtcHJvcGFnYXRpb24uYW55Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjM4MjkxMzUyOGU2OTNiM2E1
ZDU2YzY2MGE0NTA2MDk4MGI1NDhjMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvbXVsdGlwbGUtcHJv
cGFnYXRpb24uYW55Lmh0bWwKQEAgLTAsMCArMSBAQAorPCEtLSBUaGlzIGZpbGUgaXMgcmVxdWly
ZWQgZm9yIFdlYktpdCB0ZXN0IGluZnJhc3RydWN0dXJlIHRvIHJ1biB0aGUgdGVtcGxhdGVkIHRl
c3QgLS0+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9tdWx0aXBs
ZS1wcm9wYWdhdGlvbi5hbnkuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL211bHRpcGxlLXByb3BhZ2F0aW9uLmFueS5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5jOWE0ODZmM2Y5YWMyZmU1OTUzNTZiYjE0ZGVhNWE2Njc5NmUzYWFmCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
dHJlYW1zL3BpcGluZy9tdWx0aXBsZS1wcm9wYWdhdGlvbi5hbnkuanMKQEAgLTAsMCArMSwyMjcg
QEAKKy8vIE1FVEE6IGdsb2JhbD13aW5kb3csd29ya2VyLGpzc2hlbGwKKy8vIE1FVEE6IHNjcmlw
dD0uLi9yZXNvdXJjZXMvdGVzdC11dGlscy5qcworLy8gTUVUQTogc2NyaXB0PS4uL3Jlc291cmNl
cy9yZWNvcmRpbmctc3RyZWFtcy5qcworJ3VzZSBzdHJpY3QnOworCitjb25zdCBlcnJvcjEgPSBu
ZXcgRXJyb3IoJ2Vycm9yMSEnKTsKK2Vycm9yMS5uYW1lID0gJ2Vycm9yMSc7CisKK2NvbnN0IGVy
cm9yMiA9IG5ldyBFcnJvcignZXJyb3IyIScpOworZXJyb3IyLm5hbWUgPSAnZXJyb3IyJzsKKwor
ZnVuY3Rpb24gY3JlYXRlRXJyb3JlZFdyaXRhYmxlU3RyZWFtKHQpIHsKKyAgcmV0dXJuIFByb21p
c2UucmVzb2x2ZSgpLnRoZW4oKCkgPT4geworICAgIGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFi
bGVTdHJlYW0oeworICAgICAgc3RhcnQoYykgeworICAgICAgICBjLmVycm9yKGVycm9yMik7Cisg
ICAgICB9CisgICAgfSk7CisKKyAgICBjb25zdCB3cml0ZXIgPSB3cy5nZXRXcml0ZXIoKTsKKyAg
ICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IyLCB3cml0ZXIuY2xvc2Vk
LCAndGhlIHdyaXRhYmxlIHN0cmVhbSBtdXN0IGJlIGVycm9yZWQgd2l0aCBlcnJvcjInKQorICAg
ICAgICAudGhlbigoKSA9PiB7CisgICAgICAgICAgd3JpdGVyLnJlbGVhc2VMb2NrKCk7CisgICAg
ICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFtdKTsKKyAgICAgICAgICByZXR1
cm4gd3M7CisgICAgICAgIH0pOworICB9KTsKK30KKworcHJvbWlzZV90ZXN0KHQgPT4geworICBj
b25zdCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAg
ICBjLmVycm9yKGVycm9yMSk7CisgICAgfQorICB9KTsKKyAgY29uc3Qgd3MgPSByZWNvcmRpbmdX
cml0YWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgYy5lcnJvcihlcnJvcjIpOwor
ICAgIH0KKyAgfSk7CisKKyAgLy8gVHJ5aW5nIHRvIGFib3J0IGEgc3RyZWFtIHRoYXQgaXMgZXJy
b3Jpbmcgd2lsbCBnaXZlIHRoZSB3cml0YWJsZSdzIGVycm9yCisgIHJldHVybiBwcm9taXNlX3Jl
amVjdHNfZXhhY3RseSh0LCBlcnJvcjIsIHJzLnBpcGVUbyh3cyksICdwaXBlVG8gbXVzdCByZWpl
Y3Qgd2l0aCB0aGUgd3JpdGFibGUgc3RyZWFtXCdzIGVycm9yJykudGhlbigoKSA9PiB7CisgICAg
YXNzZXJ0X2FycmF5X2VxdWFscyhycy5ldmVudHMsIFtdKTsKKyAgICBhc3NlcnRfYXJyYXlfZXF1
YWxzKHdzLmV2ZW50cywgW10pOworCisgICAgcmV0dXJuIFByb21pc2UuYWxsKFsKKyAgICAgIHBy
b21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMSwgcnMuZ2V0UmVhZGVyKCkuY2xvc2VkLCAn
dGhlIHJlYWRhYmxlIHN0cmVhbSBtdXN0IGJlIGVycm9yZWQgd2l0aCBlcnJvcjEnKSwKKyAgICAg
IHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMiwgd3MuZ2V0V3JpdGVyKCkuY2xvc2Vk
LCAndGhlIHdyaXRhYmxlIHN0cmVhbSBtdXN0IGJlIGVycm9yZWQgd2l0aCBlcnJvcjInKQorICAg
IF0pOworICB9KTsKKworfSwgJ1BpcGluZyBmcm9tIGFuIGVycm9yZWQgcmVhZGFibGUgc3RyZWFt
IHRvIGFuIGVycm9yaW5nIHdyaXRhYmxlIHN0cmVhbScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7
CisgIGNvbnN0IHJzID0gcmVjb3JkaW5nUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsK
KyAgICAgIGMuZXJyb3IoZXJyb3IxKTsKKyAgICB9CisgIH0pOworCisgIHJldHVybiBjcmVhdGVF
cnJvcmVkV3JpdGFibGVTdHJlYW0odCkKKyAgICAgIC50aGVuKHdzID0+IHByb21pc2VfcmVqZWN0
c19leGFjdGx5KHQsIGVycm9yMSwgcnMucGlwZVRvKHdzKSwgJ3BpcGVUbyBtdXN0IHJlamVjdCB3
aXRoIHRoZSByZWFkYWJsZSBzdHJlYW1cJ3MgZXJyb3InKSkKKyAgICAgIC50aGVuKCgpID0+IHsK
KyAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhycy5ldmVudHMsIFtdKTsKKworICAgICAgICBy
ZXR1cm4gcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCBycy5nZXRSZWFkZXIoKS5j
bG9zZWQsICd0aGUgcmVhZGFibGUgc3RyZWFtIG11c3QgYmUgZXJyb3JlZCB3aXRoIGVycm9yMScp
OworICAgICAgfSk7Cit9LCAnUGlwaW5nIGZyb20gYW4gZXJyb3JlZCByZWFkYWJsZSBzdHJlYW0g
dG8gYW4gZXJyb3JlZCB3cml0YWJsZSBzdHJlYW0nKTsKKworcHJvbWlzZV90ZXN0KHQgPT4gewor
ICBjb25zdCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7Cisg
ICAgICBjLmVycm9yKGVycm9yMSk7CisgICAgfQorICB9KTsKKyAgY29uc3Qgd3MgPSByZWNvcmRp
bmdXcml0YWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgYy5lcnJvcihlcnJvcjIp
OworICAgIH0KKyAgfSk7CisKKyAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVy
cm9yMSwgcnMucGlwZVRvKHdzLCB7IHByZXZlbnRBYm9ydDogdHJ1ZSB9KSwKKyAgICAncGlwZVRv
IG11c3QgcmVqZWN0IHdpdGggdGhlIHJlYWRhYmxlIHN0cmVhbVwncyBlcnJvcicpCisgIC50aGVu
KCgpID0+IHsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJzLmV2ZW50cywgW10pOworICAgIGFz
c2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbXSk7CisKKyAgICByZXR1cm4gUHJvbWlzZS5h
bGwoWworICAgICAgcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCBycy5nZXRSZWFk
ZXIoKS5jbG9zZWQsICd0aGUgcmVhZGFibGUgc3RyZWFtIG11c3QgYmUgZXJyb3JlZCB3aXRoIGVy
cm9yMScpLAorICAgICAgcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IyLCB3cy5nZXRX
cml0ZXIoKS5jbG9zZWQsICd0aGUgd3JpdGFibGUgc3RyZWFtIG11c3QgYmUgZXJyb3JlZCB3aXRo
IGVycm9yMicpCisgICAgXSk7CisgIH0pOworCit9LCAnUGlwaW5nIGZyb20gYW4gZXJyb3JlZCBy
ZWFkYWJsZSBzdHJlYW0gdG8gYW4gZXJyb3Jpbmcgd3JpdGFibGUgc3RyZWFtOyBwcmV2ZW50QWJv
cnQgPSB0cnVlJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgY29uc3QgcnMgPSByZWNvcmRp
bmdSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgYy5lcnJvcihlcnJvcjEp
OworICAgIH0KKyAgfSk7CisgIHJldHVybiBjcmVhdGVFcnJvcmVkV3JpdGFibGVTdHJlYW0odCkK
KyAgLnRoZW4od3MgPT4gcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCBycy5waXBl
VG8od3MsIHsgcHJldmVudEFib3J0OiB0cnVlIH0pLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAncGlwZVRvIG11c3QgcmVqZWN0IHdpdGggdGhlIHJlYWRhYmxlIHN0cmVh
bVwncyBlcnJvcicpKQorICAudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhy
cy5ldmVudHMsIFtdKTsKKworICAgIHJldHVybiBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBl
cnJvcjEsIHJzLmdldFJlYWRlcigpLmNsb3NlZCwgJ3RoZSByZWFkYWJsZSBzdHJlYW0gbXVzdCBi
ZSBlcnJvcmVkIHdpdGggZXJyb3IxJyk7CisgIH0pOworCit9LCAnUGlwaW5nIGZyb20gYW4gZXJy
b3JlZCByZWFkYWJsZSBzdHJlYW0gdG8gYW4gZXJyb3JlZCB3cml0YWJsZSBzdHJlYW07IHByZXZl
bnRBYm9ydCA9IHRydWUnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBjb25zdCBycyA9IHJl
Y29yZGluZ1JlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjLmVycm9yKGVy
cm9yMSk7CisgICAgfQorICB9KTsKKyAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVh
bSgpOworICBjb25zdCB3cml0ZXIgPSB3cy5nZXRXcml0ZXIoKTsKKyAgY29uc3QgY2xvc2VQcm9t
aXNlID0gd3JpdGVyLmNsb3NlKCk7CisgIHdyaXRlci5yZWxlYXNlTG9jaygpOworCisgIHJldHVy
biBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIHJzLnBpcGVUbyh3cyksICdwaXBl
VG8gbXVzdCByZWplY3Qgd2l0aCB0aGUgcmVhZGFibGUgc3RyZWFtXCdzIGVycm9yJykudGhlbigo
KSA9PiB7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhycy5ldmVudHMsIFtdKTsKKyAgICBhc3Nl
cnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWydhYm9ydCcsIGVycm9yMV0pOworCisgICAgcmV0
dXJuIFByb21pc2UuYWxsKFsKKyAgICAgIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9y
MSwgcnMuZ2V0UmVhZGVyKCkuY2xvc2VkLCAndGhlIHJlYWRhYmxlIHN0cmVhbSBtdXN0IGJlIGVy
cm9yZWQgd2l0aCBlcnJvcjEnKSwKKyAgICAgIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVy
cm9yMSwgd3MuZ2V0V3JpdGVyKCkuY2xvc2VkLAorICAgICAgICAnY2xvc2VkIG11c3QgcmVqZWN0
IHdpdGggZXJyb3IxJyksCisgICAgICBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEs
IGNsb3NlUHJvbWlzZSwKKyAgICAgICAgJ2Nsb3NlKCkgbXVzdCByZWplY3Qgd2l0aCBlcnJvcjEn
KQorICAgIF0pOworICB9KTsKKworfSwgJ1BpcGluZyBmcm9tIGFuIGVycm9yZWQgcmVhZGFibGUg
c3RyZWFtIHRvIGEgY2xvc2luZyB3cml0YWJsZSBzdHJlYW0nKTsKKworcHJvbWlzZV90ZXN0KHQg
PT4geworICBjb25zdCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChj
KSB7CisgICAgICBjLmVycm9yKGVycm9yMSk7CisgICAgfQorICB9KTsKKyAgY29uc3Qgd3MgPSBy
ZWNvcmRpbmdXcml0YWJsZVN0cmVhbSgpOworICBjb25zdCB3cml0ZXIgPSB3cy5nZXRXcml0ZXIo
KTsKKyAgY29uc3QgY2xvc2VQcm9taXNlID0gd3JpdGVyLmNsb3NlKCk7CisgIHdyaXRlci5yZWxl
YXNlTG9jaygpOworCisgIHJldHVybiBmbHVzaEFzeW5jRXZlbnRzKCkudGhlbigoKSA9PiB7Cisg
ICAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMSwgcnMucGlwZVRvKHdz
KSwgJ3BpcGVUbyBtdXN0IHJlamVjdCB3aXRoIHRoZSByZWFkYWJsZSBzdHJlYW1cJ3MgZXJyb3In
KS50aGVuKCgpID0+IHsKKyAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMocnMuZXZlbnRzLCBbXSk7
CisgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWydjbG9zZSddKTsKKworICAg
ICAgcmV0dXJuIFByb21pc2UuYWxsKFsKKyAgICAgICAgcHJvbWlzZV9yZWplY3RzX2V4YWN0bHko
dCwgZXJyb3IxLCBycy5nZXRSZWFkZXIoKS5jbG9zZWQsICd0aGUgcmVhZGFibGUgc3RyZWFtIG11
c3QgYmUgZXJyb3JlZCB3aXRoIGVycm9yMScpLAorICAgICAgICB3cy5nZXRXcml0ZXIoKS5jbG9z
ZWQsCisgICAgICAgIGNsb3NlUHJvbWlzZQorICAgICAgXSk7CisgICAgfSk7CisgIH0pOworCit9
LCAnUGlwaW5nIGZyb20gYW4gZXJyb3JlZCByZWFkYWJsZSBzdHJlYW0gdG8gYSBjbG9zZWQgd3Jp
dGFibGUgc3RyZWFtJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgY29uc3QgcnMgPSByZWNv
cmRpbmdSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgYy5jbG9zZSgpOwor
ICAgIH0KKyAgfSk7CisgIGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0oeworICAg
IHN0YXJ0KGMpIHsKKyAgICAgIGMuZXJyb3IoZXJyb3IxKTsKKyAgICB9CisgIH0pOworCisgIHJl
dHVybiBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIHJzLnBpcGVUbyh3cyksICdw
aXBlVG8gbXVzdCByZWplY3Qgd2l0aCB0aGUgd3JpdGFibGUgc3RyZWFtXCdzIGVycm9yJykudGhl
bigoKSA9PiB7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhycy5ldmVudHMsIFtdKTsKKyAgICBh
c3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgW10pOworCisgICAgcmV0dXJuIFByb21pc2Uu
YWxsKFsKKyAgICAgIHJzLmdldFJlYWRlcigpLmNsb3NlZCwKKyAgICAgIHByb21pc2VfcmVqZWN0
c19leGFjdGx5KHQsIGVycm9yMSwgd3MuZ2V0V3JpdGVyKCkuY2xvc2VkLCAndGhlIHdyaXRhYmxl
IHN0cmVhbSBtdXN0IGJlIGVycm9yZWQgd2l0aCBlcnJvcjEnKQorICAgIF0pOworICB9KTsKKwor
fSwgJ1BpcGluZyBmcm9tIGEgY2xvc2VkIHJlYWRhYmxlIHN0cmVhbSB0byBhbiBlcnJvcmluZyB3
cml0YWJsZSBzdHJlYW0nKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBjb25zdCBycyA9IHJl
Y29yZGluZ1JlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjLmNsb3NlKCk7
CisgICAgfQorICB9KTsKKyAgcmV0dXJuIGNyZWF0ZUVycm9yZWRXcml0YWJsZVN0cmVhbSh0KQor
ICAudGhlbih3cyA9PiBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjIsIHJzLnBpcGVU
byh3cyksICdwaXBlVG8gbXVzdCByZWplY3Qgd2l0aCB0aGUgd3JpdGFibGUgc3RyZWFtXCdzIGVy
cm9yJykpCisgIC50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJzLmV2ZW50
cywgW10pOworCisgICAgcmV0dXJuIHJzLmdldFJlYWRlcigpLmNsb3NlZDsKKyAgfSk7CisKK30s
ICdQaXBpbmcgZnJvbSBhIGNsb3NlZCByZWFkYWJsZSBzdHJlYW0gdG8gYW4gZXJyb3JlZCB3cml0
YWJsZSBzdHJlYW0nKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgY29uc3QgcnMgPSByZWNv
cmRpbmdSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgYy5jbG9zZSgpOwor
ICAgIH0KKyAgfSk7CisgIGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0oKTsKKyAg
Y29uc3Qgd3JpdGVyID0gd3MuZ2V0V3JpdGVyKCk7CisgIHdyaXRlci5jbG9zZSgpOworICB3cml0
ZXIucmVsZWFzZUxvY2soKTsKKworICByZXR1cm4gcnMucGlwZVRvKHdzKS50aGVuKCgpID0+IHsK
KyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJzLmV2ZW50cywgW10pOworICAgIGFzc2VydF9hcnJh
eV9lcXVhbHMod3MuZXZlbnRzLCBbJ2Nsb3NlJ10pOworCisgICAgcmV0dXJuIFByb21pc2UuYWxs
KFsKKyAgICAgIHJzLmdldFJlYWRlcigpLmNsb3NlZCwKKyAgICAgIHdzLmdldFdyaXRlcigpLmNs
b3NlZAorICAgIF0pOworICB9KTsKKworfSwgJ1BpcGluZyBmcm9tIGEgY2xvc2VkIHJlYWRhYmxl
IHN0cmVhbSB0byBhIGNsb3NlZCB3cml0YWJsZSBzdHJlYW0nKTsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvbXVs
dGlwbGUtcHJvcGFnYXRpb24uYW55Lndvcmtlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL211bHRpcGxlLXBy
b3BhZ2F0aW9uLmFueS53b3JrZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI3ODMzZjJlMzJi
NjJhNjE1NTQ2NmZhMDgyNWZlMTQ0YTMxNjJiY2UKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL211bHRp
cGxlLXByb3BhZ2F0aW9uLmFueS53b3JrZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTEgQEAK
KworRkFJTCBQaXBpbmcgZnJvbSBhbiBlcnJvcmVkIHJlYWRhYmxlIHN0cmVhbSB0byBhbiBlcnJv
cmluZyB3cml0YWJsZSBzdHJlYW0gQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0K
K0ZBSUwgUGlwaW5nIGZyb20gYW4gZXJyb3JlZCByZWFkYWJsZSBzdHJlYW0gdG8gYW4gZXJyb3Jl
ZCB3cml0YWJsZSBzdHJlYW0gcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGgg
dmFsdWU6IG9iamVjdCAiUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRh
YmxlU3RyZWFtIgorRkFJTCBQaXBpbmcgZnJvbSBhbiBlcnJvcmVkIHJlYWRhYmxlIHN0cmVhbSB0
byBhbiBlcnJvcmluZyB3cml0YWJsZSBzdHJlYW07IHByZXZlbnRBYm9ydCA9IHRydWUgQ2FuJ3Qg
ZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgUGlwaW5nIGZyb20gYW4gZXJyb3Jl
ZCByZWFkYWJsZSBzdHJlYW0gdG8gYW4gZXJyb3JlZCB3cml0YWJsZSBzdHJlYW07IHByZXZlbnRB
Ym9ydCA9IHRydWUgcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6
IG9iamVjdCAiUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3Ry
ZWFtIgorRkFJTCBQaXBpbmcgZnJvbSBhbiBlcnJvcmVkIHJlYWRhYmxlIHN0cmVhbSB0byBhIGNs
b3Npbmcgd3JpdGFibGUgc3RyZWFtIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFt
CitGQUlMIFBpcGluZyBmcm9tIGFuIGVycm9yZWQgcmVhZGFibGUgc3RyZWFtIHRvIGEgY2xvc2Vk
IHdyaXRhYmxlIHN0cmVhbSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJ
TCBQaXBpbmcgZnJvbSBhIGNsb3NlZCByZWFkYWJsZSBzdHJlYW0gdG8gYW4gZXJyb3Jpbmcgd3Jp
dGFibGUgc3RyZWFtIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIFBp
cGluZyBmcm9tIGEgY2xvc2VkIHJlYWRhYmxlIHN0cmVhbSB0byBhbiBlcnJvcmVkIHdyaXRhYmxl
IHN0cmVhbSBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2Jq
ZWN0ICJSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0i
CitGQUlMIFBpcGluZyBmcm9tIGEgY2xvc2VkIHJlYWRhYmxlIHN0cmVhbSB0byBhIGNsb3NlZCB3
cml0YWJsZSBzdHJlYW0gQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJl
YW1zL3BpcGluZy9tdWx0aXBsZS1wcm9wYWdhdGlvbi5hbnkud29ya2VyLmh0bWwgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL211bHRp
cGxlLXByb3BhZ2F0aW9uLmFueS53b3JrZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMzgyOTEzNTI4ZTY5
M2IzYTVkNTZjNjYwYTQ1MDYwOTgwYjU0OGMzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9tdWx0aXBs
ZS1wcm9wYWdhdGlvbi5hbnkud29ya2VyLmh0bWwKQEAgLTAsMCArMSBAQAorPCEtLSBUaGlzIGZp
bGUgaXMgcmVxdWlyZWQgZm9yIFdlYktpdCB0ZXN0IGluZnJhc3RydWN0dXJlIHRvIHJ1biB0aGUg
dGVtcGxhdGVkIHRlc3QgLS0+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3Bp
cGluZy9tdWx0aXBsZS1wcm9wYWdhdGlvbi5kZWRpY2F0ZWR3b3JrZXItZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGlu
Zy9tdWx0aXBsZS1wcm9wYWdhdGlvbi5kZWRpY2F0ZWR3b3JrZXItZXhwZWN0ZWQudHh0CmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwOTQ4ODUzMzU1YWIyNzAxYzE0MjIzYTE5MTI1YmRm
YzRiOGE4MjlhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBp
bmcvbXVsdGlwbGUtcHJvcGFnYXRpb24uZGVkaWNhdGVkd29ya2VyLWV4cGVjdGVkLnR4dAorKysg
L2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotCi1GQUlMIFBpcGluZyBmcm9tIGFuIGVycm9yZWQg
cmVhZGFibGUgc3RyZWFtIHRvIGFuIGVycm9yZWQgd3JpdGFibGUgc3RyZWFtIENhbid0IGZpbmQg
dmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIFBpcGluZyBmcm9tIGFuIGVycm9yZWQgcmVh
ZGFibGUgc3RyZWFtIHRvIGFuIGVycm9yZWQgd3JpdGFibGUgc3RyZWFtOyBwcmV2ZW50QWJvcnQg
PSB0cnVlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIFBpcGluZyBm
cm9tIGFuIGVycm9yZWQgcmVhZGFibGUgc3RyZWFtIHRvIGEgY2xvc2luZyB3cml0YWJsZSBzdHJl
YW0gQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgUGlwaW5nIGZyb20g
YW4gZXJyb3JlZCByZWFkYWJsZSBzdHJlYW0gdG8gYSBjbG9zZWQgd3JpdGFibGUgc3RyZWFtIENh
bid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIFBpcGluZyBmcm9tIGEgY2xv
c2VkIHJlYWRhYmxlIHN0cmVhbSB0byBhbiBlcnJvcmVkIHdyaXRhYmxlIHN0cmVhbSBDYW4ndCBm
aW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBQaXBpbmcgZnJvbSBhIGNsb3NlZCBy
ZWFkYWJsZSBzdHJlYW0gdG8gYSBjbG9zZWQgd3JpdGFibGUgc3RyZWFtIENhbid0IGZpbmQgdmFy
aWFibGU6IFdyaXRhYmxlU3RyZWFtCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvbXVsdGlwbGUtcHJvcGFnYXRp
b24uZGVkaWNhdGVkd29ya2VyLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL211bHRpcGxlLXByb3BhZ2F0aW9uLmRlZGljYXRl
ZHdvcmtlci5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNzFjZTE1ZjVkMjQ4
NjU2Yjk1ODQ5MGZjZDBmN2JmODY3ZTlkYjEwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy9waXBpbmcvbXVsdGlwbGUtcHJvcGFnYXRpb24uZGVkaWNhdGVkd29ya2Vy
Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxt
ZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTx0aXRsZT5tdWx0aXBsZS1wcm9wYWdhdGlvbi5qcyBkZWRp
Y2F0ZWQgd29ya2VyIHdyYXBwZXIgZmlsZTwvdGl0bGU+Ci0KLTxzY3JpcHQgc3JjPSIvcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rl
c3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLQotPHNjcmlwdD4KLSd1c2Ugc3RyaWN0JzsK
LWZldGNoX3Rlc3RzX2Zyb21fd29ya2VyKG5ldyBXb3JrZXIoJ211bHRpcGxlLXByb3BhZ2F0aW9u
LmpzJykpOwotPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL211bHRpcGxlLXByb3BhZ2F0aW9uLmh0
bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
cGlwaW5nL211bHRpcGxlLXByb3BhZ2F0aW9uLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDkyZTNmZjA0Yzc0ZDFiYTU4NTA5MWRiMjhjZjlkNzExNzNiYjdmZjguLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9tdWx0aXBsZS1wcm9wYWdh
dGlvbi5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+
Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08dGl0bGU+bXVsdGlwbGUtcHJvcGFnYXRpb24uanMg
YnJvd3NlciBjb250ZXh0IHdyYXBwZXIgZmlsZTwvdGl0bGU+Ci0KLTxzY3JpcHQgc3JjPSIvcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLQotPHNjcmlwdCBzcmM9Ii4uL3Jlc291
cmNlcy90ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMv
cmVjb3JkaW5nLXN0cmVhbXMuanMiPjwvc2NyaXB0PgotCi08c2NyaXB0IHNyYz0ibXVsdGlwbGUt
cHJvcGFnYXRpb24uanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9tdWx0aXBsZS1wcm9wYWdh
dGlvbi5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy9waXBpbmcvbXVsdGlwbGUtcHJvcGFnYXRpb24uanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDRlZGM3YzE4MGUxMTc3NzljN2RlZDFmOTBlZWVkMjM2ZWY4MmMwYWUuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9tdWx0aXBsZS1wcm9w
YWdhdGlvbi5qcworKysgL2Rldi9udWxsCkBAIC0xLDE2NSArMCwwIEBACi0ndXNlIHN0cmljdCc7
Ci0KLWlmIChzZWxmLmltcG9ydFNjcmlwdHMpIHsKLSAgc2VsZi5pbXBvcnRTY3JpcHRzKCcvcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzLmpzJyk7Ci0gIHNlbGYuaW1wb3J0U2NyaXB0cygnLi4vcmVzb3Vy
Y2VzL3Rlc3QtdXRpbHMuanMnKTsKLSAgc2VsZi5pbXBvcnRTY3JpcHRzKCcuLi9yZXNvdXJjZXMv
cmVjb3JkaW5nLXN0cmVhbXMuanMnKTsKLX0KLQotY29uc3QgZXJyb3IxID0gbmV3IEVycm9yKCdl
cnJvcjEhJyk7Ci1lcnJvcjEubmFtZSA9ICdlcnJvcjEnOwotCi1jb25zdCBlcnJvcjIgPSBuZXcg
RXJyb3IoJ2Vycm9yMiEnKTsKLWVycm9yMi5uYW1lID0gJ2Vycm9yMic7Ci0KLXByb21pc2VfdGVz
dCh0ID0+IHsKLSAgY29uc3QgcnMgPSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3Rh
cnQoYykgewotICAgICAgYy5lcnJvcihlcnJvcjEpOwotICAgIH0KLSAgfSk7Ci0gIGNvbnN0IHdz
ID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGMuZXJy
b3IoZXJyb3IyKTsKLSAgICB9Ci0gIH0pOwotCi0gIC8vIFRyeWluZyB0byBhYm9ydCBhIHN0cmVh
bSB0aGF0IHdhcyBlcnJvcmVkIHdpbGwgZ2l2ZSB0aGF0IGVycm9yIGJhY2sKLSAgcmV0dXJuIHBy
b21pc2VfcmVqZWN0cyh0LCBlcnJvcjIsIHJzLnBpcGVUbyh3cyksICdwaXBlVG8gbXVzdCByZWpl
Y3Qgd2l0aCB0aGUgd3JpdGFibGUgc3RyZWFtXCdzIGVycm9yJykudGhlbigoKSA9PiB7Ci0gICAg
YXNzZXJ0X2FycmF5X2VxdWFscyhycy5ldmVudHMsIFtdKTsKLSAgICBhc3NlcnRfYXJyYXlfZXF1
YWxzKHdzLmV2ZW50cywgW10pOwotCi0gICAgcmV0dXJuIFByb21pc2UuYWxsKFsKLSAgICAgIHBy
b21pc2VfcmVqZWN0cyh0LCBlcnJvcjEsIHJzLmdldFJlYWRlcigpLmNsb3NlZCwgJ3RoZSByZWFk
YWJsZSBzdHJlYW0gbXVzdCBiZSBlcnJvcmVkIHdpdGggZXJyb3IxJyksCi0gICAgICBwcm9taXNl
X3JlamVjdHModCwgZXJyb3IyLCB3cy5nZXRXcml0ZXIoKS5jbG9zZWQsICd0aGUgd3JpdGFibGUg
c3RyZWFtIG11c3QgYmUgZXJyb3JlZCB3aXRoIGVycm9yMicpCi0gICAgXSk7Ci0gIH0pOwotCi19
LCAnUGlwaW5nIGZyb20gYW4gZXJyb3JlZCByZWFkYWJsZSBzdHJlYW0gdG8gYW4gZXJyb3JlZCB3
cml0YWJsZSBzdHJlYW0nKTsKLQotcHJvbWlzZV90ZXN0KHQgPT4gewotICBjb25zdCBycyA9IHJl
Y29yZGluZ1JlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0gICAgICBjLmVycm9yKGVy
cm9yMSk7Ci0gICAgfQotICB9KTsKLSAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVh
bSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgYy5lcnJvcihlcnJvcjIpOwotICAgIH0KLSAgfSk7
Ci0KLSAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0LCBlcnJvcjEsIHJzLnBpcGVUbyh3cywgeyBw
cmV2ZW50QWJvcnQ6IHRydWUgfSksCi0gICAgJ3BpcGVUbyBtdXN0IHJlamVjdCB3aXRoIHRoZSBy
ZWFkYWJsZSBzdHJlYW1cJ3MgZXJyb3InKQotICAudGhlbigoKSA9PiB7Ci0gICAgYXNzZXJ0X2Fy
cmF5X2VxdWFscyhycy5ldmVudHMsIFtdKTsKLSAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2
ZW50cywgW10pOwotCi0gICAgcmV0dXJuIFByb21pc2UuYWxsKFsKLSAgICAgIHByb21pc2VfcmVq
ZWN0cyh0LCBlcnJvcjEsIHJzLmdldFJlYWRlcigpLmNsb3NlZCwgJ3RoZSByZWFkYWJsZSBzdHJl
YW0gbXVzdCBiZSBlcnJvcmVkIHdpdGggZXJyb3IxJyksCi0gICAgICBwcm9taXNlX3JlamVjdHMo
dCwgZXJyb3IyLCB3cy5nZXRXcml0ZXIoKS5jbG9zZWQsICd0aGUgd3JpdGFibGUgc3RyZWFtIG11
c3QgYmUgZXJyb3JlZCB3aXRoIGVycm9yMicpCi0gICAgXSk7Ci0gIH0pOwotCi19LCAnUGlwaW5n
IGZyb20gYW4gZXJyb3JlZCByZWFkYWJsZSBzdHJlYW0gdG8gYW4gZXJyb3JlZCB3cml0YWJsZSBz
dHJlYW07IHByZXZlbnRBYm9ydCA9IHRydWUnKTsKLQotcHJvbWlzZV90ZXN0KHQgPT4gewotICBj
b25zdCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0gICAg
ICBjLmVycm9yKGVycm9yMSk7Ci0gICAgfQotICB9KTsKLSAgY29uc3Qgd3MgPSByZWNvcmRpbmdX
cml0YWJsZVN0cmVhbSgpOwotICBjb25zdCB3cml0ZXIgPSB3cy5nZXRXcml0ZXIoKTsKLSAgY29u
c3QgY2xvc2VQcm9taXNlID0gd3JpdGVyLmNsb3NlKCk7Ci0gIHdyaXRlci5yZWxlYXNlTG9jaygp
OwotCi0gIHJldHVybiBwcm9taXNlX3JlamVjdHModCwgZXJyb3IxLCBycy5waXBlVG8od3MpLCAn
cGlwZVRvIG11c3QgcmVqZWN0IHdpdGggdGhlIHJlYWRhYmxlIHN0cmVhbVwncyBlcnJvcicpLnRo
ZW4oKCkgPT4gewotICAgIGFzc2VydF9hcnJheV9lcXVhbHMocnMuZXZlbnRzLCBbXSk7Ci0gICAg
YXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsnYWJvcnQnLCBlcnJvcjFdKTsKLQotICAg
IHJldHVybiBQcm9taXNlLmFsbChbCi0gICAgICBwcm9taXNlX3JlamVjdHModCwgZXJyb3IxLCBy
cy5nZXRSZWFkZXIoKS5jbG9zZWQsICd0aGUgcmVhZGFibGUgc3RyZWFtIG11c3QgYmUgZXJyb3Jl
ZCB3aXRoIGVycm9yMScpLAotICAgICAgcHJvbWlzZV9yZWplY3RzKHQsIGVycm9yMSwgd3MuZ2V0
V3JpdGVyKCkuY2xvc2VkLAotICAgICAgICAnY2xvc2VkIG11c3QgcmVqZWN0IHdpdGggZXJyb3Ix
JyksCi0gICAgICBwcm9taXNlX3JlamVjdHModCwgZXJyb3IxLCBjbG9zZVByb21pc2UsCi0gICAg
ICAgICdjbG9zZSgpIG11c3QgcmVqZWN0IHdpdGggZXJyb3IxJykKLSAgICBdKTsKLSAgfSk7Ci0K
LX0sICdQaXBpbmcgZnJvbSBhbiBlcnJvcmVkIHJlYWRhYmxlIHN0cmVhbSB0byBhIGNsb3Npbmcg
d3JpdGFibGUgc3RyZWFtJyk7Ci0KLXByb21pc2VfdGVzdCh0ID0+IHsKLSAgY29uc3QgcnMgPSBy
ZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgYy5lcnJvcihl
cnJvcjEpOwotICAgIH0KLSAgfSk7Ci0gIGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJl
YW0oKTsKLSAgY29uc3Qgd3JpdGVyID0gd3MuZ2V0V3JpdGVyKCk7Ci0gIGNvbnN0IGNsb3NlUHJv
bWlzZSA9IHdyaXRlci5jbG9zZSgpOwotICB3cml0ZXIucmVsZWFzZUxvY2soKTsKLQotICByZXR1
cm4gZmx1c2hBc3luY0V2ZW50cygpLnRoZW4oKCkgPT4gewotICAgIHJldHVybiBwcm9taXNlX3Jl
amVjdHModCwgZXJyb3IxLCBycy5waXBlVG8od3MpLCAncGlwZVRvIG11c3QgcmVqZWN0IHdpdGgg
dGhlIHJlYWRhYmxlIHN0cmVhbVwncyBlcnJvcicpLnRoZW4oKCkgPT4gewotICAgICAgYXNzZXJ0
X2FycmF5X2VxdWFscyhycy5ldmVudHMsIFtdKTsKLSAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMo
d3MuZXZlbnRzLCBbJ2Nsb3NlJ10pOwotCi0gICAgICByZXR1cm4gUHJvbWlzZS5hbGwoWwotICAg
ICAgICBwcm9taXNlX3JlamVjdHModCwgZXJyb3IxLCBycy5nZXRSZWFkZXIoKS5jbG9zZWQsICd0
aGUgcmVhZGFibGUgc3RyZWFtIG11c3QgYmUgZXJyb3JlZCB3aXRoIGVycm9yMScpLAotICAgICAg
ICB3cy5nZXRXcml0ZXIoKS5jbG9zZWQsCi0gICAgICAgIGNsb3NlUHJvbWlzZQotICAgICAgXSk7
Ci0gICAgfSk7Ci0gIH0pOwotCi19LCAnUGlwaW5nIGZyb20gYW4gZXJyb3JlZCByZWFkYWJsZSBz
dHJlYW0gdG8gYSBjbG9zZWQgd3JpdGFibGUgc3RyZWFtJyk7Ci0KLXByb21pc2VfdGVzdCh0ID0+
IHsKLSAgY29uc3QgcnMgPSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykg
ewotICAgICAgYy5jbG9zZSgpOwotICAgIH0KLSAgfSk7Ci0gIGNvbnN0IHdzID0gcmVjb3JkaW5n
V3JpdGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGMuZXJyb3IoZXJyb3IxKTsK
LSAgICB9Ci0gIH0pOwotCi0gIHJldHVybiBwcm9taXNlX3JlamVjdHModCwgZXJyb3IxLCBycy5w
aXBlVG8od3MpLCAncGlwZVRvIG11c3QgcmVqZWN0IHdpdGggdGhlIHdyaXRhYmxlIHN0cmVhbVwn
cyBlcnJvcicpLnRoZW4oKCkgPT4gewotICAgIGFzc2VydF9hcnJheV9lcXVhbHMocnMuZXZlbnRz
LCBbXSk7Ci0gICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFtdKTsKLQotICAgIHJl
dHVybiBQcm9taXNlLmFsbChbCi0gICAgICBycy5nZXRSZWFkZXIoKS5jbG9zZWQsCi0gICAgICBw
cm9taXNlX3JlamVjdHModCwgZXJyb3IxLCB3cy5nZXRXcml0ZXIoKS5jbG9zZWQsICd0aGUgd3Jp
dGFibGUgc3RyZWFtIG11c3QgYmUgZXJyb3JlZCB3aXRoIGVycm9yMScpCi0gICAgXSk7Ci0gIH0p
OwotCi19LCAnUGlwaW5nIGZyb20gYSBjbG9zZWQgcmVhZGFibGUgc3RyZWFtIHRvIGFuIGVycm9y
ZWQgd3JpdGFibGUgc3RyZWFtJyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0gIGNvbnN0IHJz
ID0gcmVjb3JkaW5nUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGMuY2xv
c2UoKTsKLSAgICB9Ci0gIH0pOwotICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFt
KCk7Ci0gIGNvbnN0IHdyaXRlciA9IHdzLmdldFdyaXRlcigpOwotICB3cml0ZXIuY2xvc2UoKTsK
LSAgd3JpdGVyLnJlbGVhc2VMb2NrKCk7Ci0KLSAgcmV0dXJuIHJzLnBpcGVUbyh3cykudGhlbigo
KSA9PiB7Ci0gICAgYXNzZXJ0X2FycmF5X2VxdWFscyhycy5ldmVudHMsIFtdKTsKLSAgICBhc3Nl
cnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWydjbG9zZSddKTsKLQotICAgIHJldHVybiBQcm9t
aXNlLmFsbChbCi0gICAgICBycy5nZXRSZWFkZXIoKS5jbG9zZWQsCi0gICAgICB3cy5nZXRXcml0
ZXIoKS5jbG9zZWQKLSAgICBdKTsKLSAgfSk7Ci0KLX0sICdQaXBpbmcgZnJvbSBhIGNsb3NlZCBy
ZWFkYWJsZSBzdHJlYW0gdG8gYSBjbG9zZWQgd3JpdGFibGUgc3RyZWFtJyk7Ci0KLWRvbmUoKTsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy9waXBpbmcvbXVsdGlwbGUtcHJvcGFnYXRpb24uc2VydmljZXdvcmtlci5odHRwcy1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMvcGlwaW5nL211bHRpcGxlLXByb3BhZ2F0aW9uLnNlcnZpY2V3b3JrZXIuaHR0cHMt
ZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMTA1MDNlZmI2NzM0
NGVlNWRlNDU1MGQ2Y2Y5MDU3Zjc0NTMxNWFhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy9waXBpbmcvbXVsdGlwbGUtcHJvcGFnYXRpb24uc2VydmljZXdvcmtlci5o
dHRwcy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw5ICswLDAgQEAKLQotUEFTUyBT
ZXJ2aWNlIHdvcmtlciB0ZXN0IHNldHVwIAotRkFJTCBQaXBpbmcgZnJvbSBhbiBlcnJvcmVkIHJl
YWRhYmxlIHN0cmVhbSB0byBhbiBlcnJvcmVkIHdyaXRhYmxlIHN0cmVhbSBDYW4ndCBmaW5kIHZh
cmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBQaXBpbmcgZnJvbSBhbiBlcnJvcmVkIHJlYWRh
YmxlIHN0cmVhbSB0byBhbiBlcnJvcmVkIHdyaXRhYmxlIHN0cmVhbTsgcHJldmVudEFib3J0ID0g
dHJ1ZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBQaXBpbmcgZnJv
bSBhbiBlcnJvcmVkIHJlYWRhYmxlIHN0cmVhbSB0byBhIGNsb3Npbmcgd3JpdGFibGUgc3RyZWFt
IENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1GQUlMIFBpcGluZyBmcm9tIGFu
IGVycm9yZWQgcmVhZGFibGUgc3RyZWFtIHRvIGEgY2xvc2VkIHdyaXRhYmxlIHN0cmVhbSBDYW4n
dCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotRkFJTCBQaXBpbmcgZnJvbSBhIGNsb3Nl
ZCByZWFkYWJsZSBzdHJlYW0gdG8gYW4gZXJyb3JlZCB3cml0YWJsZSBzdHJlYW0gQ2FuJ3QgZmlu
ZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgUGlwaW5nIGZyb20gYSBjbG9zZWQgcmVh
ZGFibGUgc3RyZWFtIHRvIGEgY2xvc2VkIHdyaXRhYmxlIHN0cmVhbSBDYW4ndCBmaW5kIHZhcmlh
YmxlOiBXcml0YWJsZVN0cmVhbQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL211bHRpcGxlLXByb3BhZ2F0aW9u
LnNlcnZpY2V3b3JrZXIuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvbXVsdGlwbGUtcHJvcGFnYXRpb24uc2Vydmlj
ZXdvcmtlci5odHRwcy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2M2Y3YjAw
YjQwZmJkODc3Y2VkN2ExNjRiYmJjMTNmZDE0NTcyMmM3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvbXVsdGlwbGUtcHJvcGFnYXRpb24uc2VydmljZXdv
cmtlci5odHRwcy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotPCFET0NUWVBF
IGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08dGl0bGU+bXVsdGlwbGUtcHJvcGFnYXRp
b24uanMgc2VydmljZSB3b3JrZXIgd3JhcHBlciBmaWxlPC90aXRsZT4KLQotPHNjcmlwdCBzcmM9
Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9yZXNv
dXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9zZXJ2
aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvcmVzb3VyY2VzL3Rlc3QtaGVscGVycy5zdWIuanMi
Pjwvc2NyaXB0PgotCi08c2NyaXB0PgotJ3VzZSBzdHJpY3QnOwotc2VydmljZV93b3JrZXJfdGVz
dCgnbXVsdGlwbGUtcHJvcGFnYXRpb24uanMnLCAnU2VydmljZSB3b3JrZXIgdGVzdCBzZXR1cCcp
OwotPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL211bHRpcGxlLXByb3BhZ2F0aW9uLnNoYXJlZHdv
cmtlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMvcGlwaW5nL211bHRpcGxlLXByb3BhZ2F0aW9uLnNoYXJlZHdvcmtlci1l
eHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA5ZDVkMjUwOWQ3ODQ3
ZThjZDZmZTY2MDZhYTYwY2RkMzNhYTQ3NGUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL3BpcGluZy9tdWx0aXBsZS1wcm9wYWdhdGlvbi5zaGFyZWR3b3JrZXItZXhw
ZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1DT05TT0xFIE1FU1NBR0U6
IFJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBTaGFyZWRXb3JrZXIKLQotSGFy
bmVzcyBFcnJvciAoRkFJTCksIG1lc3NhZ2UgPSBSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2
YXJpYWJsZTogU2hhcmVkV29ya2VyCi0KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9tdWx0aXBsZS1wcm9wYWdh
dGlvbi5zaGFyZWR3b3JrZXIuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvbXVsdGlwbGUtcHJvcGFnYXRpb24uc2hhcmVkd29y
a2VyLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYzOTZjNjQ1Y2Q1NDI2NTJm
NWY4Mzg4NWMyODgxN2YyMWVlMWRmZGUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL3BpcGluZy9tdWx0aXBsZS1wcm9wYWdhdGlvbi5zaGFyZWR3b3JrZXIuaHRtbAor
KysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hh
cnNldD0idXRmLTgiPgotPHRpdGxlPm11bHRpcGxlLXByb3BhZ2F0aW9uLmpzIHNoYXJlZCB3b3Jr
ZXIgd3JhcHBlciBmaWxlPC90aXRsZT4KLQotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhh
cm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3Ny
ZXBvcnQuanMiPjwvc2NyaXB0PgotCi08c2NyaXB0PgotJ3VzZSBzdHJpY3QnOwotZmV0Y2hfdGVz
dHNfZnJvbV93b3JrZXIobmV3IFNoYXJlZFdvcmtlcignbXVsdGlwbGUtcHJvcGFnYXRpb24uanMn
KSk7Ci08L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvcGlwZS10aHJvdWdoLmFueS1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
cGlwaW5nL3BpcGUtdGhyb3VnaC5hbnktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI5YjM0YzFm
NmU4NzAxMDhkNTQ4ZDcyODFmZmNlMjU0MmRjZDFlZmMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL3Bp
cGUtdGhyb3VnaC5hbnktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOTQgQEAKK0NPTlNPTEUgTUVT
U0FHRTogVW5oYW5kbGVkIFByb21pc2UgUmVqZWN0aW9uOiBUeXBlRXJyb3I6IFRoZSBXcml0YWJs
ZVN0cmVhbS5yZWFkeSBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgV3Jp
dGFibGVTdHJlYW0KK0NPTlNPTEUgTUVTU0FHRTogVW5oYW5kbGVkIFByb21pc2UgUmVqZWN0aW9u
OiB1bmRlZmluZWQKKworSGFybmVzcyBFcnJvciAoRkFJTCksIG1lc3NhZ2UgPSBVbmhhbmRsZWQg
cmVqZWN0aW9uCisKK1BBU1MgUGlwaW5nIHRocm91Z2ggYSBkdWNrLXR5cGVkIHBhc3MtdGhyb3Vn
aCB0cmFuc2Zvcm0gc3RyZWFtIHNob3VsZCB3b3JrIAorRkFJTCBQaXBpbmcgdGhyb3VnaCBhIHRy
YW5zZm9ybSBlcnJvcmVkIG9uIHRoZSB3cml0YWJsZSBlbmQgZG9lcyBub3QgY2F1c2UgYW4gdW5o
YW5kbGVkIHByb21pc2UgcmVqZWN0aW9uIGMuZXJyb3IgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAn
Yy5lcnJvcihuZXcgRXJyb3IoJ3RoaXMgcmVqZWN0aW9uIHNob3VsZCBub3QgYmUgcmVwb3J0ZWQg
YXMgdW5oYW5kbGVkJykpJywgJ2MuZXJyb3InIGlzIHVuZGVmaW5lZCkKK1BBU1MgcGlwZVRocm91
Z2ggc2hvdWxkIG5vdCBjYWxsIHBpcGVUbyBvbiB0aGlzIAorRkFJTCBwaXBlVGhyb3VnaCBzaG91
bGQgbm90IGNhbGwgcGlwZVRvIG9uIHRoZSBSZWFkYWJsZVN0cmVhbSBwcm90b3R5cGUgYXNzZXJ0
X2ZhbHNlOiB0aGUgbW9ua2V5LXBhdGNoZWQgcGlwZVRvIHNob3VsZCBub3QgaGF2ZSBiZWVuIGNh
bGxlZCBleHBlY3RlZCBmYWxzZSBnb3QgdHJ1ZQorUEFTUyBwaXBlVGhyb3VnaCBzaG91bGQgYnJh
bmQtY2hlY2sgdGhpcyBhbmQgbm90IGFsbG93ICdudWxsJyAKK0ZBSUwgcGlwZVRocm91Z2ggc2hv
dWxkIGJyYW5kLWNoZWNrIHJlYWRhYmxlIGFuZCBub3QgYWxsb3cgJ251bGwnIGFzc2VydF90aHJv
d3NfanM6IHBpcGVUaHJvdWdoIHNob3VsZCBicmFuZC1jaGVjayByZWFkYWJsZSBmdW5jdGlvbiAi
KCkgPT4gcnMucGlwZVRocm91Z2goeworICAgICAgICBnZXQgd3JpdGFibGUoKSB7CisgICAgICAg
ICAgd3JpdGFibGVHZXR0ZXJDYWxsZWQgPSB0cnVlOworICAgICAgICAgIHJldHVybiBuZXcgV3Jp
dGFibGVTdHJlYW0oKTsKKyAgICAgICAgfSwKKyAgICAgICAgcmVhZGFibGUKKyAgICAgIH0pIiBk
aWQgbm90IHRocm93CitQQVNTIHBpcGVUaHJvdWdoIHNob3VsZCBicmFuZC1jaGVjayB0aGlzIGFu
ZCBub3QgYWxsb3cgJ3VuZGVmaW5lZCcgCitGQUlMIHBpcGVUaHJvdWdoIHNob3VsZCBicmFuZC1j
aGVjayByZWFkYWJsZSBhbmQgbm90IGFsbG93ICd1bmRlZmluZWQnIGFzc2VydF90aHJvd3NfanM6
IHBpcGVUaHJvdWdoIHNob3VsZCBicmFuZC1jaGVjayByZWFkYWJsZSBmdW5jdGlvbiAiKCkgPT4g
cnMucGlwZVRocm91Z2goeworICAgICAgICBnZXQgd3JpdGFibGUoKSB7CisgICAgICAgICAgd3Jp
dGFibGVHZXR0ZXJDYWxsZWQgPSB0cnVlOworICAgICAgICAgIHJldHVybiBuZXcgV3JpdGFibGVT
dHJlYW0oKTsKKyAgICAgICAgfSwKKyAgICAgICAgcmVhZGFibGUKKyAgICAgIH0pIiBkaWQgbm90
IHRocm93CitQQVNTIHBpcGVUaHJvdWdoIHNob3VsZCBicmFuZC1jaGVjayB0aGlzIGFuZCBub3Qg
YWxsb3cgJzAnIAorRkFJTCBwaXBlVGhyb3VnaCBzaG91bGQgYnJhbmQtY2hlY2sgcmVhZGFibGUg
YW5kIG5vdCBhbGxvdyAnMCcgYXNzZXJ0X3Rocm93c19qczogcGlwZVRocm91Z2ggc2hvdWxkIGJy
YW5kLWNoZWNrIHJlYWRhYmxlIGZ1bmN0aW9uICIoKSA9PiBycy5waXBlVGhyb3VnaCh7CisgICAg
ICAgIGdldCB3cml0YWJsZSgpIHsKKyAgICAgICAgICB3cml0YWJsZUdldHRlckNhbGxlZCA9IHRy
dWU7CisgICAgICAgICAgcmV0dXJuIG5ldyBXcml0YWJsZVN0cmVhbSgpOworICAgICAgICB9LAor
ICAgICAgICByZWFkYWJsZQorICAgICAgfSkiIGRpZCBub3QgdGhyb3cKK1BBU1MgcGlwZVRocm91
Z2ggc2hvdWxkIGJyYW5kLWNoZWNrIHRoaXMgYW5kIG5vdCBhbGxvdyAnTmFOJyAKK0ZBSUwgcGlw
ZVRocm91Z2ggc2hvdWxkIGJyYW5kLWNoZWNrIHJlYWRhYmxlIGFuZCBub3QgYWxsb3cgJ05hTicg
YXNzZXJ0X3Rocm93c19qczogcGlwZVRocm91Z2ggc2hvdWxkIGJyYW5kLWNoZWNrIHJlYWRhYmxl
IGZ1bmN0aW9uICIoKSA9PiBycy5waXBlVGhyb3VnaCh7CisgICAgICAgIGdldCB3cml0YWJsZSgp
IHsKKyAgICAgICAgICB3cml0YWJsZUdldHRlckNhbGxlZCA9IHRydWU7CisgICAgICAgICAgcmV0
dXJuIG5ldyBXcml0YWJsZVN0cmVhbSgpOworICAgICAgICB9LAorICAgICAgICByZWFkYWJsZQor
ICAgICAgfSkiIGRpZCBub3QgdGhyb3cKK1BBU1MgcGlwZVRocm91Z2ggc2hvdWxkIGJyYW5kLWNo
ZWNrIHRoaXMgYW5kIG5vdCBhbGxvdyAndHJ1ZScgCitGQUlMIHBpcGVUaHJvdWdoIHNob3VsZCBi
cmFuZC1jaGVjayByZWFkYWJsZSBhbmQgbm90IGFsbG93ICd0cnVlJyBhc3NlcnRfdGhyb3dzX2pz
OiBwaXBlVGhyb3VnaCBzaG91bGQgYnJhbmQtY2hlY2sgcmVhZGFibGUgZnVuY3Rpb24gIigpID0+
IHJzLnBpcGVUaHJvdWdoKHsKKyAgICAgICAgZ2V0IHdyaXRhYmxlKCkgeworICAgICAgICAgIHdy
aXRhYmxlR2V0dGVyQ2FsbGVkID0gdHJ1ZTsKKyAgICAgICAgICByZXR1cm4gbmV3IFdyaXRhYmxl
U3RyZWFtKCk7CisgICAgICAgIH0sCisgICAgICAgIHJlYWRhYmxlCisgICAgICB9KSIgZGlkIG5v
dCB0aHJvdworUEFTUyBwaXBlVGhyb3VnaCBzaG91bGQgYnJhbmQtY2hlY2sgdGhpcyBhbmQgbm90
IGFsbG93ICdSZWFkYWJsZVN0cmVhbScgCitGQUlMIHBpcGVUaHJvdWdoIHNob3VsZCBicmFuZC1j
aGVjayByZWFkYWJsZSBhbmQgbm90IGFsbG93ICdSZWFkYWJsZVN0cmVhbScgYXNzZXJ0X3Rocm93
c19qczogcGlwZVRocm91Z2ggc2hvdWxkIGJyYW5kLWNoZWNrIHJlYWRhYmxlIGZ1bmN0aW9uICIo
KSA9PiBycy5waXBlVGhyb3VnaCh7CisgICAgICAgIGdldCB3cml0YWJsZSgpIHsKKyAgICAgICAg
ICB3cml0YWJsZUdldHRlckNhbGxlZCA9IHRydWU7CisgICAgICAgICAgcmV0dXJuIG5ldyBXcml0
YWJsZVN0cmVhbSgpOworICAgICAgICB9LAorICAgICAgICByZWFkYWJsZQorICAgICAgfSkiIGRp
ZCBub3QgdGhyb3cKK1BBU1MgcGlwZVRocm91Z2ggc2hvdWxkIGJyYW5kLWNoZWNrIHRoaXMgYW5k
IG5vdCBhbGxvdyAnW29iamVjdCBSZWFkYWJsZVN0cmVhbV0nIAorRkFJTCBwaXBlVGhyb3VnaCBz
aG91bGQgYnJhbmQtY2hlY2sgcmVhZGFibGUgYW5kIG5vdCBhbGxvdyAnW29iamVjdCBSZWFkYWJs
ZVN0cmVhbV0nIGFzc2VydF90aHJvd3NfanM6IHBpcGVUaHJvdWdoIHNob3VsZCBicmFuZC1jaGVj
ayByZWFkYWJsZSBmdW5jdGlvbiAiKCkgPT4gcnMucGlwZVRocm91Z2goeworICAgICAgICBnZXQg
d3JpdGFibGUoKSB7CisgICAgICAgICAgd3JpdGFibGVHZXR0ZXJDYWxsZWQgPSB0cnVlOworICAg
ICAgICAgIHJldHVybiBuZXcgV3JpdGFibGVTdHJlYW0oKTsKKyAgICAgICAgfSwKKyAgICAgICAg
cmVhZGFibGUKKyAgICAgIH0pIiBkaWQgbm90IHRocm93CitQQVNTIHBpcGVUaHJvdWdoIHNob3Vs
ZCBicmFuZC1jaGVjayB3cml0YWJsZSBhbmQgbm90IGFsbG93ICdudWxsJyAKK1BBU1MgcGlwZVRo
cm91Z2ggc2hvdWxkIGJyYW5kLWNoZWNrIHdyaXRhYmxlIGFuZCBub3QgYWxsb3cgJ3VuZGVmaW5l
ZCcgCitQQVNTIHBpcGVUaHJvdWdoIHNob3VsZCBicmFuZC1jaGVjayB3cml0YWJsZSBhbmQgbm90
IGFsbG93ICcwJyAKK1BBU1MgcGlwZVRocm91Z2ggc2hvdWxkIGJyYW5kLWNoZWNrIHdyaXRhYmxl
IGFuZCBub3QgYWxsb3cgJ05hTicgCitQQVNTIHBpcGVUaHJvdWdoIHNob3VsZCBicmFuZC1jaGVj
ayB3cml0YWJsZSBhbmQgbm90IGFsbG93ICd0cnVlJyAKK1BBU1MgcGlwZVRocm91Z2ggc2hvdWxk
IGJyYW5kLWNoZWNrIHdyaXRhYmxlIGFuZCBub3QgYWxsb3cgJ1dyaXRhYmxlU3RyZWFtJyAKK0ZB
SUwgcGlwZVRocm91Z2ggc2hvdWxkIGJyYW5kLWNoZWNrIHdyaXRhYmxlIGFuZCBub3QgYWxsb3cg
J1tvYmplY3QgV3JpdGFibGVTdHJlYW1dJyBhc3NlcnRfdGhyb3dzX2pzOiBwaXBlVGhyb3VnaCBz
aG91bGQgYnJhbmQtY2hlY2sgd3JpdGFibGUgZnVuY3Rpb24gIigpID0+IHJzLnBpcGVUaHJvdWdo
KHsKKyAgICAgIGdldCByZWFkYWJsZSgpIHsKKyAgICAgICAgcmVhZGFibGVHZXR0ZXJDYWxsZWQg
PSB0cnVlOworICAgICAgICByZXR1cm4gbmV3IFJlYWRhYmxlU3RyZWFtKCk7CisgICAgICB9LAor
ICAgICAgd3JpdGFibGUKKyAgICB9KSIgZGlkIG5vdCB0aHJvdworUEFTUyBwaXBlVGhyb3VnaCBz
aG91bGQgcmV0aHJvdyBlcnJvcnMgZnJvbSBhY2Nlc3NpbmcgcmVhZGFibGUgb3Igd3JpdGFibGUg
CitGQUlMIGludmFsaWQgdmFsdWVzIG9mIHNpZ25hbCBzaG91bGQgdGhyb3c7IHNwZWNpZmljYWxs
eSAnbnVsbCcgYXNzZXJ0X3Rocm93c19qczogcGlwZVRocm91Z2ggc2hvdWxkIHRocm93IGZ1bmN0
aW9uICIoKSA9PiBycy5waXBlVGhyb3VnaCh1bmludGVyZXN0aW5nUmVhZGFibGVXcml0YWJsZVBh
aXIoKSwgeyBzaWduYWwgfSkiIGRpZCBub3QgdGhyb3cKK0ZBSUwgaW52YWxpZCB2YWx1ZXMgb2Yg
c2lnbmFsIHNob3VsZCB0aHJvdzsgc3BlY2lmaWNhbGx5ICcwJyBhc3NlcnRfdGhyb3dzX2pzOiBw
aXBlVGhyb3VnaCBzaG91bGQgdGhyb3cgZnVuY3Rpb24gIigpID0+IHJzLnBpcGVUaHJvdWdoKHVu
aW50ZXJlc3RpbmdSZWFkYWJsZVdyaXRhYmxlUGFpcigpLCB7IHNpZ25hbCB9KSIgZGlkIG5vdCB0
aHJvdworRkFJTCBpbnZhbGlkIHZhbHVlcyBvZiBzaWduYWwgc2hvdWxkIHRocm93OyBzcGVjaWZp
Y2FsbHkgJ05hTicgYXNzZXJ0X3Rocm93c19qczogcGlwZVRocm91Z2ggc2hvdWxkIHRocm93IGZ1
bmN0aW9uICIoKSA9PiBycy5waXBlVGhyb3VnaCh1bmludGVyZXN0aW5nUmVhZGFibGVXcml0YWJs
ZVBhaXIoKSwgeyBzaWduYWwgfSkiIGRpZCBub3QgdGhyb3cKK0ZBSUwgaW52YWxpZCB2YWx1ZXMg
b2Ygc2lnbmFsIHNob3VsZCB0aHJvdzsgc3BlY2lmaWNhbGx5ICd0cnVlJyBhc3NlcnRfdGhyb3dz
X2pzOiBwaXBlVGhyb3VnaCBzaG91bGQgdGhyb3cgZnVuY3Rpb24gIigpID0+IHJzLnBpcGVUaHJv
dWdoKHVuaW50ZXJlc3RpbmdSZWFkYWJsZVdyaXRhYmxlUGFpcigpLCB7IHNpZ25hbCB9KSIgZGlk
IG5vdCB0aHJvdworRkFJTCBpbnZhbGlkIHZhbHVlcyBvZiBzaWduYWwgc2hvdWxkIHRocm93OyBz
cGVjaWZpY2FsbHkgJ0Fib3J0U2lnbmFsJyBhc3NlcnRfdGhyb3dzX2pzOiBwaXBlVGhyb3VnaCBz
aG91bGQgdGhyb3cgZnVuY3Rpb24gIigpID0+IHJzLnBpcGVUaHJvdWdoKHVuaW50ZXJlc3RpbmdS
ZWFkYWJsZVdyaXRhYmxlUGFpcigpLCB7IHNpZ25hbCB9KSIgZGlkIG5vdCB0aHJvdworRkFJTCBp
bnZhbGlkIHZhbHVlcyBvZiBzaWduYWwgc2hvdWxkIHRocm93OyBzcGVjaWZpY2FsbHkgJ1tvYmpl
Y3QgQWJvcnRTaWduYWxdJyBhc3NlcnRfdGhyb3dzX2pzOiBwaXBlVGhyb3VnaCBzaG91bGQgdGhy
b3cgZnVuY3Rpb24gIigpID0+IHJzLnBpcGVUaHJvdWdoKHVuaW50ZXJlc3RpbmdSZWFkYWJsZVdy
aXRhYmxlUGFpcigpLCB7IHNpZ25hbCB9KSIgZGlkIG5vdCB0aHJvdworUEFTUyBwaXBlVGhyb3Vn
aCBzaG91bGQgYWNjZXB0IGEgcmVhbCBBYm9ydFNpZ25hbCAKK1BBU1MgcGlwZVRocm91Z2ggc2hv
dWxkIHRocm93IGlmIHRoaXMgaXMgbG9ja2VkIAorRkFJTCBwaXBlVGhyb3VnaCBzaG91bGQgdGhy
b3cgaWYgd3JpdGFibGUgaXMgbG9ja2VkIHdyaXRhYmxlLmdldFdyaXRlciBpcyBub3QgYSBmdW5j
dGlvbi4gKEluICd3cml0YWJsZS5nZXRXcml0ZXIoKScsICd3cml0YWJsZS5nZXRXcml0ZXInIGlz
IHVuZGVmaW5lZCkKK1BBU1MgcGlwZVRocm91Z2ggc2hvdWxkIG5vdCBjYXJlIGlmIHJlYWRhYmxl
IGlzIGxvY2tlZCAKK0ZBSUwgcHJldmVudENhbmNlbCBzaG91bGQgd29yayBjb250cm9sbGVyLmVy
cm9yIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ2NvbnRyb2xsZXIuZXJyb3IoKScsICdjb250cm9s
bGVyLmVycm9yJyBpcyB1bmRlZmluZWQpCitQQVNTIHByZXZlbnRDbG9zZSBzaG91bGQgd29yayAK
K1BBU1MgcHJldmVudEFib3J0IHNob3VsZCB3b3JrIAorUEFTUyBwaXBlVGhyb3VnaCgpIHNob3Vs
ZCB0aHJvdyBpZiBhbiBvcHRpb24gZ2V0dGVyIGdyYWJzIGEgd3JpdGVyIAorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlw
aW5nL3BpcGUtdGhyb3VnaC5hbnkuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvcGlwZS10aHJvdWdoLmFueS5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjIzODI5MTM1MjhlNjkzYjNhNWQ1NmM2NjBhNDUwNjA5ODBiNTQ4YzMKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMvcGlwaW5nL3BpcGUtdGhyb3VnaC5hbnkuaHRtbApAQCAtMCwwICsxIEBACis8IS0tIFRo
aXMgZmlsZSBpcyByZXF1aXJlZCBmb3IgV2ViS2l0IHRlc3QgaW5mcmFzdHJ1Y3R1cmUgdG8gcnVu
IHRoZSB0ZW1wbGF0ZWQgdGVzdCAtLT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvcGlwaW5nL3BpcGUtdGhyb3VnaC5hbnkuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL3BpcGUtdGhyb3VnaC5hbnkuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMzVkYmI0NTZiM2UyYzZkMDJhMThhOTUwNWJjMjEzOGE1NzQ3NDg4NwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy9waXBpbmcvcGlwZS10aHJvdWdoLmFueS5qcwpAQCAtMCwwICsxLDI2OCBAQAorLy8g
TUVUQTogZ2xvYmFsPXdpbmRvdyx3b3JrZXIsanNzaGVsbAorLy8gTUVUQTogc2NyaXB0PS4uL3Jl
c291cmNlcy9ycy11dGlscy5qcworLy8gTUVUQTogc2NyaXB0PS4uL3Jlc291cmNlcy90ZXN0LXV0
aWxzLmpzCisvLyBNRVRBOiBzY3JpcHQ9Li4vcmVzb3VyY2VzL3JlY29yZGluZy1zdHJlYW1zLmpz
CisndXNlIHN0cmljdCc7CisKK2Z1bmN0aW9uIGR1Y2tUeXBlZFBhc3NUaHJvdWdoVHJhbnNmb3Jt
KCkgeworICBsZXQgZW5xdWV1ZUluUmVhZGFibGU7CisgIGxldCBjbG9zZVJlYWRhYmxlOworCisg
IHJldHVybiB7CisgICAgd3JpdGFibGU6IG5ldyBXcml0YWJsZVN0cmVhbSh7CisgICAgICB3cml0
ZShjaHVuaykgeworICAgICAgICBlbnF1ZXVlSW5SZWFkYWJsZShjaHVuayk7CisgICAgICB9LAor
CisgICAgICBjbG9zZSgpIHsKKyAgICAgICAgY2xvc2VSZWFkYWJsZSgpOworICAgICAgfQorICAg
IH0pLAorCisgICAgcmVhZGFibGU6IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgICBzdGFydChj
KSB7CisgICAgICAgIGVucXVldWVJblJlYWRhYmxlID0gYy5lbnF1ZXVlLmJpbmQoYyk7CisgICAg
ICAgIGNsb3NlUmVhZGFibGUgPSBjLmNsb3NlLmJpbmQoYyk7CisgICAgICB9CisgICAgfSkKKyAg
fTsKK30KKworZnVuY3Rpb24gdW5pbnRlcmVzdGluZ1JlYWRhYmxlV3JpdGFibGVQYWlyKCkgewor
ICByZXR1cm4geyB3cml0YWJsZTogbmV3IFdyaXRhYmxlU3RyZWFtKCksIHJlYWRhYmxlOiBuZXcg
UmVhZGFibGVTdHJlYW0oKSB9OworfQorCitwcm9taXNlX3Rlc3QoKCkgPT4geworICBjb25zdCBy
ZWFkYWJsZUVuZCA9IHNlcXVlbnRpYWxSZWFkYWJsZVN0cmVhbSg1KS5waXBlVGhyb3VnaChkdWNr
VHlwZWRQYXNzVGhyb3VnaFRyYW5zZm9ybSgpKTsKKworICByZXR1cm4gcmVhZGFibGVTdHJlYW1U
b0FycmF5KHJlYWRhYmxlRW5kKS50aGVuKGNodW5rcyA9PgorICAgIGFzc2VydF9hcnJheV9lcXVh
bHMoY2h1bmtzLCBbMSwgMiwgMywgNCwgNV0pLCAnY2h1bmtzIHNob3VsZCBtYXRjaCcpOworfSwg
J1BpcGluZyB0aHJvdWdoIGEgZHVjay10eXBlZCBwYXNzLXRocm91Z2ggdHJhbnNmb3JtIHN0cmVh
bSBzaG91bGQgd29yaycpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworICBjb25zdCB0cmFuc2Zv
cm0gPSB7CisgICAgd3JpdGFibGU6IG5ldyBXcml0YWJsZVN0cmVhbSh7CisgICAgICBzdGFydChj
KSB7CisgICAgICAgIGMuZXJyb3IobmV3IEVycm9yKCd0aGlzIHJlamVjdGlvbiBzaG91bGQgbm90
IGJlIHJlcG9ydGVkIGFzIHVuaGFuZGxlZCcpKTsKKyAgICAgIH0KKyAgICB9KSwKKyAgICByZWFk
YWJsZTogbmV3IFJlYWRhYmxlU3RyZWFtKCkKKyAgfTsKKworICBzZXF1ZW50aWFsUmVhZGFibGVT
dHJlYW0oNSkucGlwZVRocm91Z2godHJhbnNmb3JtKTsKKworICAvLyBUaGUgdGVzdCBoYXJuZXNz
IHNob3VsZCBjb21wbGFpbiBhYm91dCB1bmhhbmRsZWQgcmVqZWN0aW9ucyBieSB0aGVuLgorICBy
ZXR1cm4gZmx1c2hBc3luY0V2ZW50cygpOworCit9LCAnUGlwaW5nIHRocm91Z2ggYSB0cmFuc2Zv
cm0gZXJyb3JlZCBvbiB0aGUgd3JpdGFibGUgZW5kIGRvZXMgbm90IGNhdXNlIGFuIHVuaGFuZGxl
ZCBwcm9taXNlIHJlamVjdGlvbicpOworCit0ZXN0KCgpID0+IHsKKyAgbGV0IGNhbGxlZFBpcGVU
byA9IGZhbHNlOworICBjbGFzcyBCYWRSZWFkYWJsZVN0cmVhbSBleHRlbmRzIFJlYWRhYmxlU3Ry
ZWFtIHsKKyAgICBwaXBlVG8oKSB7CisgICAgICBjYWxsZWRQaXBlVG8gPSB0cnVlOworICAgIH0K
KyAgfQorCisgIGNvbnN0IGJycyA9IG5ldyBCYWRSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQo
Y29udHJvbGxlcikgeworICAgICAgY29udHJvbGxlci5jbG9zZSgpOworICAgIH0KKyAgfSk7Cisg
IGNvbnN0IHJlYWRhYmxlID0gbmV3IFJlYWRhYmxlU3RyZWFtKCk7CisgIGNvbnN0IHdyaXRhYmxl
ID0gbmV3IFdyaXRhYmxlU3RyZWFtKCk7CisgIGNvbnN0IHJlc3VsdCA9IGJycy5waXBlVGhyb3Vn
aCh7IHJlYWRhYmxlLCB3cml0YWJsZSB9KTsKKworICBhc3NlcnRfZmFsc2UoY2FsbGVkUGlwZVRv
LCAndGhlIG92ZXJyaWRkZW4gcGlwZVRvIHNob3VsZCBub3QgaGF2ZSBiZWVuIGNhbGxlZCcpOwor
ICBhc3NlcnRfZXF1YWxzKHJlc3VsdCwgcmVhZGFibGUsICdyZXR1cm4gdmFsdWUgc2hvdWxkIGJl
IHRoZSBwYXNzZWQgcmVhZGFibGUgcHJvcGVydHknKTsKK30sICdwaXBlVGhyb3VnaCBzaG91bGQg
bm90IGNhbGwgcGlwZVRvIG9uIHRoaXMnKTsKKwordGVzdCh0ID0+IHsKKyAgbGV0IGNhbGxlZEZh
a2VQaXBlVG8gPSBmYWxzZTsKKyAgY29uc3QgcmVhbFBpcGVUbyA9IFJlYWRhYmxlU3RyZWFtLnBy
b3RvdHlwZS5waXBlVG87CisgIHQuYWRkX2NsZWFudXAoKCkgPT4geworICAgIFJlYWRhYmxlU3Ry
ZWFtLnByb3RvdHlwZS5waXBlVG8gPSByZWFsUGlwZVRvOworICB9KTsKKyAgUmVhZGFibGVTdHJl
YW0ucHJvdG90eXBlLnBpcGVUbyA9ICgpID0+IHsKKyAgICBjYWxsZWRGYWtlUGlwZVRvID0gdHJ1
ZTsKKyAgfTsKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oKTsKKyAgY29uc3QgcmVh
ZGFibGUgPSBuZXcgUmVhZGFibGVTdHJlYW0oKTsKKyAgY29uc3Qgd3JpdGFibGUgPSBuZXcgV3Jp
dGFibGVTdHJlYW0oKTsKKyAgY29uc3QgcmVzdWx0ID0gcnMucGlwZVRocm91Z2goeyByZWFkYWJs
ZSwgd3JpdGFibGUgfSk7CisKKyAgYXNzZXJ0X2ZhbHNlKGNhbGxlZEZha2VQaXBlVG8sICd0aGUg
bW9ua2V5LXBhdGNoZWQgcGlwZVRvIHNob3VsZCBub3QgaGF2ZSBiZWVuIGNhbGxlZCcpOworICBh
c3NlcnRfZXF1YWxzKHJlc3VsdCwgcmVhZGFibGUsICdyZXR1cm4gdmFsdWUgc2hvdWxkIGJlIHRo
ZSBwYXNzZWQgcmVhZGFibGUgcHJvcGVydHknKTsKKworfSwgJ3BpcGVUaHJvdWdoIHNob3VsZCBu
b3QgY2FsbCBwaXBlVG8gb24gdGhlIFJlYWRhYmxlU3RyZWFtIHByb3RvdHlwZScpOworCitjb25z
dCBiYWRSZWFkYWJsZXMgPSBbbnVsbCwgdW5kZWZpbmVkLCAwLCBOYU4sIHRydWUsICdSZWFkYWJs
ZVN0cmVhbScsIE9iamVjdC5jcmVhdGUoUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlKV07Citmb3Ig
KGNvbnN0IHJlYWRhYmxlIG9mIGJhZFJlYWRhYmxlcykgeworICB0ZXN0KCgpID0+IHsKKyAgICBh
c3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgIFJlYWRhYmxl
U3RyZWFtLnByb3RvdHlwZS5waXBlVGhyb3VnaC5iaW5kKHJlYWRhYmxlLCB1bmludGVyZXN0aW5n
UmVhZGFibGVXcml0YWJsZVBhaXIoKSksCisgICAgICAgICAgICAgICAgICAgICAncGlwZVRocm91
Z2ggc2hvdWxkIHRocm93Jyk7CisgIH0sIGBwaXBlVGhyb3VnaCBzaG91bGQgYnJhbmQtY2hlY2sg
dGhpcyBhbmQgbm90IGFsbG93ICcke3JlYWRhYmxlfSdgKTsKKworICB0ZXN0KCgpID0+IHsKKyAg
ICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSgpOworICAgIGxldCB3cml0YWJsZUdldHRl
ckNhbGxlZCA9IGZhbHNlOworICAgIGFzc2VydF90aHJvd3NfanMoCisgICAgICBUeXBlRXJyb3Is
CisgICAgICAoKSA9PiBycy5waXBlVGhyb3VnaCh7CisgICAgICAgIGdldCB3cml0YWJsZSgpIHsK
KyAgICAgICAgICB3cml0YWJsZUdldHRlckNhbGxlZCA9IHRydWU7CisgICAgICAgICAgcmV0dXJu
IG5ldyBXcml0YWJsZVN0cmVhbSgpOworICAgICAgICB9LAorICAgICAgICByZWFkYWJsZQorICAg
ICAgfSksCisgICAgICAncGlwZVRocm91Z2ggc2hvdWxkIGJyYW5kLWNoZWNrIHJlYWRhYmxlJwor
ICAgICk7CisgICAgYXNzZXJ0X2ZhbHNlKHdyaXRhYmxlR2V0dGVyQ2FsbGVkLCAnd3JpdGFibGUg
c2hvdWxkIG5vdCBoYXZlIGJlZW4gYWNjZXNzZWQnKTsKKyAgfSwgYHBpcGVUaHJvdWdoIHNob3Vs
ZCBicmFuZC1jaGVjayByZWFkYWJsZSBhbmQgbm90IGFsbG93ICcke3JlYWRhYmxlfSdgKTsKK30K
KworY29uc3QgYmFkV3JpdGFibGVzID0gW251bGwsIHVuZGVmaW5lZCwgMCwgTmFOLCB0cnVlLCAn
V3JpdGFibGVTdHJlYW0nLCBPYmplY3QuY3JlYXRlKFdyaXRhYmxlU3RyZWFtLnByb3RvdHlwZSld
OworZm9yIChjb25zdCB3cml0YWJsZSBvZiBiYWRXcml0YWJsZXMpIHsKKyAgdGVzdCgoKSA9PiB7
CisgICAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgICAgc3RhcnQoYykgewor
ICAgICAgICBjLmNsb3NlKCk7CisgICAgICB9CisgICAgfSk7CisgICAgbGV0IHJlYWRhYmxlR2V0
dGVyQ2FsbGVkID0gZmFsc2U7CisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+
IHJzLnBpcGVUaHJvdWdoKHsKKyAgICAgIGdldCByZWFkYWJsZSgpIHsKKyAgICAgICAgcmVhZGFi
bGVHZXR0ZXJDYWxsZWQgPSB0cnVlOworICAgICAgICByZXR1cm4gbmV3IFJlYWRhYmxlU3RyZWFt
KCk7CisgICAgICB9LAorICAgICAgd3JpdGFibGUKKyAgICB9KSwKKyAgICAgICAgICAgICAgICAg
ICdwaXBlVGhyb3VnaCBzaG91bGQgYnJhbmQtY2hlY2sgd3JpdGFibGUnKTsKKyAgICBhc3NlcnRf
dHJ1ZShyZWFkYWJsZUdldHRlckNhbGxlZCwgJ3JlYWRhYmxlIHNob3VsZCBoYXZlIGJlZW4gYWNj
ZXNzZWQnKTsKKyAgfSwgYHBpcGVUaHJvdWdoIHNob3VsZCBicmFuZC1jaGVjayB3cml0YWJsZSBh
bmQgbm90IGFsbG93ICcke3dyaXRhYmxlfSdgKTsKK30KKwordGVzdCh0ID0+IHsKKyAgY29uc3Qg
ZXJyb3IgPSBuZXcgRXJyb3IoKTsKKyAgZXJyb3IubmFtZSA9ICdjdXN0b20nOworCisgIGNvbnN0
IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBwdWxsOiB0LnVucmVhY2hlZF9mdW5jKCdw
dWxsIHNob3VsZCBub3QgYmUgY2FsbGVkJykKKyAgfSwgeyBoaWdoV2F0ZXJNYXJrOiAwIH0pOwor
CisgIGNvbnN0IHRocm93aW5nV3JpdGFibGUgPSB7CisgICAgcmVhZGFibGU6IHJzLAorICAgIGdl
dCB3cml0YWJsZSgpIHsKKyAgICAgIHRocm93IGVycm9yOworICAgIH0KKyAgfTsKKyAgYXNzZXJ0
X3Rocm93c19leGFjdGx5KGVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgKCkgPT4gUmVh
ZGFibGVTdHJlYW0ucHJvdG90eXBlLnBpcGVUaHJvdWdoLmNhbGwocnMsIHRocm93aW5nV3JpdGFi
bGUsIHt9KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICdwaXBlVGhyb3VnaCBzaG91bGQgcmV0
aHJvdyB0aGUgZXJyb3IgdGhyb3duIGJ5IHRoZSB3cml0YWJsZSBnZXR0ZXInKTsKKworICBjb25z
dCB0aHJvd2luZ1JlYWRhYmxlID0geworICAgIGdldCByZWFkYWJsZSgpIHsKKyAgICAgIHRocm93
IGVycm9yOworICAgIH0sCisgICAgd3JpdGFibGU6IHt9CisgIH07CisgIGFzc2VydF90aHJvd3Nf
ZXhhY3RseShlcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICgpID0+IFJlYWRhYmxlU3Ry
ZWFtLnByb3RvdHlwZS5waXBlVGhyb3VnaC5jYWxsKHJzLCB0aHJvd2luZ1JlYWRhYmxlLCB7fSks
CisgICAgICAgICAgICAgICAgICAgICAgICAncGlwZVRocm91Z2ggc2hvdWxkIHJldGhyb3cgdGhl
IGVycm9yIHRocm93biBieSB0aGUgcmVhZGFibGUgZ2V0dGVyJyk7CisKK30sICdwaXBlVGhyb3Vn
aCBzaG91bGQgcmV0aHJvdyBlcnJvcnMgZnJvbSBhY2Nlc3NpbmcgcmVhZGFibGUgb3Igd3JpdGFi
bGUnKTsKKworY29uc3QgYmFkU2lnbmFscyA9IFtudWxsLCAwLCBOYU4sIHRydWUsICdBYm9ydFNp
Z25hbCcsIE9iamVjdC5jcmVhdGUoQWJvcnRTaWduYWwucHJvdG90eXBlKV07Citmb3IgKGNvbnN0
IHNpZ25hbCBvZiBiYWRTaWduYWxzKSB7CisgIHRlc3QoKCkgPT4geworICAgIGNvbnN0IHJzID0g
bmV3IFJlYWRhYmxlU3RyZWFtKCk7CisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgp
ID0+IHJzLnBpcGVUaHJvdWdoKHVuaW50ZXJlc3RpbmdSZWFkYWJsZVdyaXRhYmxlUGFpcigpLCB7
IHNpZ25hbCB9KSwKKyAgICAgICAgICAgICAgICAgICAgICdwaXBlVGhyb3VnaCBzaG91bGQgdGhy
b3cnKTsKKyAgfSwgYGludmFsaWQgdmFsdWVzIG9mIHNpZ25hbCBzaG91bGQgdGhyb3c7IHNwZWNp
ZmljYWxseSAnJHtzaWduYWx9J2ApOworfQorCit0ZXN0KCgpID0+IHsKKyAgY29uc3QgcnMgPSBu
ZXcgUmVhZGFibGVTdHJlYW0oKTsKKyAgY29uc3QgY29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRy
b2xsZXIoKTsKKyAgY29uc3Qgc2lnbmFsID0gY29udHJvbGxlci5zaWduYWw7CisgIHJzLnBpcGVU
aHJvdWdoKHVuaW50ZXJlc3RpbmdSZWFkYWJsZVdyaXRhYmxlUGFpcigpLCB7IHNpZ25hbCB9KTsK
K30sICdwaXBlVGhyb3VnaCBzaG91bGQgYWNjZXB0IGEgcmVhbCBBYm9ydFNpZ25hbCcpOworCit0
ZXN0KCgpID0+IHsKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oKTsKKyAgcnMuZ2V0
UmVhZGVyKCk7CisgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiBycy5waXBlVGhy
b3VnaCh1bmludGVyZXN0aW5nUmVhZGFibGVXcml0YWJsZVBhaXIoKSksCisgICAgICAgICAgICAg
ICAgICAgJ3BpcGVUaHJvdWdoIHNob3VsZCB0aHJvdycpOworfSwgJ3BpcGVUaHJvdWdoIHNob3Vs
ZCB0aHJvdyBpZiB0aGlzIGlzIGxvY2tlZCcpOworCit0ZXN0KCgpID0+IHsKKyAgY29uc3QgcnMg
PSBuZXcgUmVhZGFibGVTdHJlYW0oKTsKKyAgY29uc3Qgd3JpdGFibGUgPSBuZXcgV3JpdGFibGVT
dHJlYW0oKTsKKyAgY29uc3QgcmVhZGFibGUgPSBuZXcgUmVhZGFibGVTdHJlYW0oKTsKKyAgd3Jp
dGFibGUuZ2V0V3JpdGVyKCk7CisgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiBy
cy5waXBlVGhyb3VnaCh7d3JpdGFibGUsIHJlYWRhYmxlfSksCisgICAgICAgICAgICAgICAgICAg
J3BpcGVUaHJvdWdoIHNob3VsZCB0aHJvdycpOworfSwgJ3BpcGVUaHJvdWdoIHNob3VsZCB0aHJv
dyBpZiB3cml0YWJsZSBpcyBsb2NrZWQnKTsKKwordGVzdCgoKSA9PiB7CisgIGNvbnN0IHJzID0g
bmV3IFJlYWRhYmxlU3RyZWFtKCk7CisgIGNvbnN0IHdyaXRhYmxlID0gbmV3IFdyaXRhYmxlU3Ry
ZWFtKCk7CisgIGNvbnN0IHJlYWRhYmxlID0gbmV3IFJlYWRhYmxlU3RyZWFtKCk7CisgIHJlYWRh
YmxlLmdldFJlYWRlcigpOworICBhc3NlcnRfZXF1YWxzKHJzLnBpcGVUaHJvdWdoKHsgd3JpdGFi
bGUsIHJlYWRhYmxlIH0pLCByZWFkYWJsZSwKKyAgICAgICAgICAgICAgICAncGlwZVRocm91Z2gg
c2hvdWxkIG5vdCB0aHJvdycpOworfSwgJ3BpcGVUaHJvdWdoIHNob3VsZCBub3QgY2FyZSBpZiBy
ZWFkYWJsZSBpcyBsb2NrZWQnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgY29uc3QgcnMg
PSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSgpOworICBjb25zdCB3cml0YWJsZSA9IG5ldyBXcml0
YWJsZVN0cmVhbSh7CisgICAgc3RhcnQoY29udHJvbGxlcikgeworICAgICAgY29udHJvbGxlci5l
cnJvcigpOworICAgIH0KKyAgfSk7CisgIGNvbnN0IHJlYWRhYmxlID0gbmV3IFJlYWRhYmxlU3Ry
ZWFtKCk7CisgIHJzLnBpcGVUaHJvdWdoKHsgd3JpdGFibGUsIHJlYWRhYmxlIH0sIHsgcHJldmVu
dENhbmNlbDogdHJ1ZSB9KTsKKyAgcmV0dXJuIGZsdXNoQXN5bmNFdmVudHMoMCkudGhlbigoKSA9
PiB7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhycy5ldmVudHMsIFsncHVsbCddLCAnY2FuY2Vs
IHNob3VsZCBub3QgaGF2ZSBiZWVuIGNhbGxlZCcpOworICB9KTsKK30sICdwcmV2ZW50Q2FuY2Vs
IHNob3VsZCB3b3JrJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisgIGNvbnN0IHJzID0gbmV3
IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjb250cm9sbGVyKSB7CisgICAgICBjb250cm9s
bGVyLmNsb3NlKCk7CisgICAgfQorICB9KTsKKyAgY29uc3Qgd3JpdGFibGUgPSByZWNvcmRpbmdX
cml0YWJsZVN0cmVhbSgpOworICBjb25zdCByZWFkYWJsZSA9IG5ldyBSZWFkYWJsZVN0cmVhbSgp
OworICBycy5waXBlVGhyb3VnaCh7IHdyaXRhYmxlLCByZWFkYWJsZSB9LCB7IHByZXZlbnRDbG9z
ZTogdHJ1ZSB9KTsKKyAgcmV0dXJuIGZsdXNoQXN5bmNFdmVudHMoMCkudGhlbigoKSA9PiB7Cisg
ICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cml0YWJsZS5ldmVudHMsIFtdLCAnd3JpdGFibGUgc2hv
dWxkIG5vdCBiZSBjbG9zZWQnKTsKKyAgfSk7Cit9LCAncHJldmVudENsb3NlIHNob3VsZCB3b3Jr
Jyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3Ry
ZWFtKHsKKyAgICBzdGFydChjb250cm9sbGVyKSB7CisgICAgICBjb250cm9sbGVyLmVycm9yKCk7
CisgICAgfQorICB9KTsKKyAgY29uc3Qgd3JpdGFibGUgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVh
bSgpOworICBjb25zdCByZWFkYWJsZSA9IG5ldyBSZWFkYWJsZVN0cmVhbSgpOworICBycy5waXBl
VGhyb3VnaCh7IHdyaXRhYmxlLCByZWFkYWJsZSB9LCB7IHByZXZlbnRBYm9ydDogdHJ1ZSB9KTsK
KyAgcmV0dXJuIGZsdXNoQXN5bmNFdmVudHMoMCkudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X2Fy
cmF5X2VxdWFscyh3cml0YWJsZS5ldmVudHMsIFtdLCAnd3JpdGFibGUgc2hvdWxkIG5vdCBiZSBh
Ym9ydGVkJyk7CisgIH0pOworfSwgJ3ByZXZlbnRBYm9ydCBzaG91bGQgd29yaycpOworCit0ZXN0
KCgpID0+IHsKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oKTsKKyAgY29uc3QgcmVh
ZGFibGUgPSBuZXcgUmVhZGFibGVTdHJlYW0oKTsKKyAgY29uc3Qgd3JpdGFibGUgPSBuZXcgV3Jp
dGFibGVTdHJlYW0oKTsKKyAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IHJzLnBp
cGVUaHJvdWdoKHtyZWFkYWJsZSwgd3JpdGFibGV9LCB7CisgICAgZ2V0IHByZXZlbnRBYm9ydCgp
IHsKKyAgICAgIHdyaXRhYmxlLmdldFdyaXRlcigpOworICAgIH0KKyAgfSksICdwaXBlVGhyb3Vn
aCBzaG91bGQgdGhyb3cnKTsKK30sICdwaXBlVGhyb3VnaCgpIHNob3VsZCB0aHJvdyBpZiBhbiBv
cHRpb24gZ2V0dGVyIGdyYWJzIGEgd3JpdGVyJyk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL3BpcGUtdGhyb3Vn
aC5hbnkud29ya2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvcGlwZS10aHJvdWdoLmFueS53b3JrZXItZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk2NDNiMWQyZjA3ZTZlNTk4NzljMDcxMTlkNjk1ZGI4MjQ0
ODZhNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL3BpcGUtdGhyb3VnaC5hbnkud29ya2VyLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDc5IEBACitDT05TT0xFIE1FU1NBR0U6IFJlZmVyZW5jZUVycm9y
OiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorCitIYXJuZXNzIEVycm9yIChG
QUlMKSwgbWVzc2FnZSA9IFJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0
YWJsZVN0cmVhbQorCitGQUlMIFBpcGluZyB0aHJvdWdoIGEgZHVjay10eXBlZCBwYXNzLXRocm91
Z2ggdHJhbnNmb3JtIHN0cmVhbSBzaG91bGQgd29yayBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0
YWJsZVN0cmVhbQorRkFJTCBQaXBpbmcgdGhyb3VnaCBhIHRyYW5zZm9ybSBlcnJvcmVkIG9uIHRo
ZSB3cml0YWJsZSBlbmQgZG9lcyBub3QgY2F1c2UgYW4gdW5oYW5kbGVkIHByb21pc2UgcmVqZWN0
aW9uIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIHBpcGVUaHJvdWdo
IHNob3VsZCBub3QgY2FsbCBwaXBlVG8gb24gdGhpcyBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0
YWJsZVN0cmVhbQorRkFJTCBwaXBlVGhyb3VnaCBzaG91bGQgbm90IGNhbGwgcGlwZVRvIG9uIHRo
ZSBSZWFkYWJsZVN0cmVhbSBwcm90b3R5cGUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVT
dHJlYW0KK0ZBSUwgcGlwZVRocm91Z2ggc2hvdWxkIGJyYW5kLWNoZWNrIHRoaXMgYW5kIG5vdCBh
bGxvdyAnbnVsbCcgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgcGlw
ZVRocm91Z2ggc2hvdWxkIGJyYW5kLWNoZWNrIHJlYWRhYmxlIGFuZCBub3QgYWxsb3cgJ251bGwn
IGFzc2VydF90aHJvd3NfanM6IHBpcGVUaHJvdWdoIHNob3VsZCBicmFuZC1jaGVjayByZWFkYWJs
ZSBmdW5jdGlvbiAiKCkgPT4gcnMucGlwZVRocm91Z2goeworICAgICAgICBnZXQgd3JpdGFibGUo
KSB7CisgICAgICAgICAgd3JpdGFibGVHZXR0ZXJDYWxsZWQgPSB0cnVlOworICAgICAgICAgIHJl
dHVybiBuZXcgV3JpdGFibGVTdHJlYW0oKTsKKyAgICAgICAgfSwKKyAgICAgICAgcmVhZGFibGUK
KyAgICAgIH0pIiB0aHJldyBvYmplY3QgIlJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlh
YmxlOiBXcml0YWJsZVN0cmVhbSIgKCJSZWZlcmVuY2VFcnJvciIpIGV4cGVjdGVkIGluc3RhbmNl
IG9mIGZ1bmN0aW9uICJmdW5jdGlvbiBUeXBlRXJyb3IoKSB7CisgICAgW25hdGl2ZSBjb2RlXQor
fSIgKCJUeXBlRXJyb3IiKQorRkFJTCBwaXBlVGhyb3VnaCBzaG91bGQgYnJhbmQtY2hlY2sgdGhp
cyBhbmQgbm90IGFsbG93ICd1bmRlZmluZWQnIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxl
U3RyZWFtCitGQUlMIHBpcGVUaHJvdWdoIHNob3VsZCBicmFuZC1jaGVjayByZWFkYWJsZSBhbmQg
bm90IGFsbG93ICd1bmRlZmluZWQnIGFzc2VydF90aHJvd3NfanM6IHBpcGVUaHJvdWdoIHNob3Vs
ZCBicmFuZC1jaGVjayByZWFkYWJsZSBmdW5jdGlvbiAiKCkgPT4gcnMucGlwZVRocm91Z2goewor
ICAgICAgICBnZXQgd3JpdGFibGUoKSB7CisgICAgICAgICAgd3JpdGFibGVHZXR0ZXJDYWxsZWQg
PSB0cnVlOworICAgICAgICAgIHJldHVybiBuZXcgV3JpdGFibGVTdHJlYW0oKTsKKyAgICAgICAg
fSwKKyAgICAgICAgcmVhZGFibGUKKyAgICAgIH0pIiB0aHJldyBvYmplY3QgIlJlZmVyZW5jZUVy
cm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbSIgKCJSZWZlcmVuY2VFcnJv
ciIpIGV4cGVjdGVkIGluc3RhbmNlIG9mIGZ1bmN0aW9uICJmdW5jdGlvbiBUeXBlRXJyb3IoKSB7
CisgICAgW25hdGl2ZSBjb2RlXQorfSIgKCJUeXBlRXJyb3IiKQorRkFJTCBwaXBlVGhyb3VnaCBz
aG91bGQgYnJhbmQtY2hlY2sgdGhpcyBhbmQgbm90IGFsbG93ICcwJyBDYW4ndCBmaW5kIHZhcmlh
YmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBwaXBlVGhyb3VnaCBzaG91bGQgYnJhbmQtY2hlY2sg
cmVhZGFibGUgYW5kIG5vdCBhbGxvdyAnMCcgYXNzZXJ0X3Rocm93c19qczogcGlwZVRocm91Z2gg
c2hvdWxkIGJyYW5kLWNoZWNrIHJlYWRhYmxlIGZ1bmN0aW9uICIoKSA9PiBycy5waXBlVGhyb3Vn
aCh7CisgICAgICAgIGdldCB3cml0YWJsZSgpIHsKKyAgICAgICAgICB3cml0YWJsZUdldHRlckNh
bGxlZCA9IHRydWU7CisgICAgICAgICAgcmV0dXJuIG5ldyBXcml0YWJsZVN0cmVhbSgpOworICAg
ICAgICB9LAorICAgICAgICByZWFkYWJsZQorICAgICAgfSkiIHRocmV3IG9iamVjdCAiUmVmZXJl
bmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtIiAoIlJlZmVyZW5j
ZUVycm9yIikgZXhwZWN0ZWQgaW5zdGFuY2Ugb2YgZnVuY3Rpb24gImZ1bmN0aW9uIFR5cGVFcnJv
cigpIHsKKyAgICBbbmF0aXZlIGNvZGVdCit9IiAoIlR5cGVFcnJvciIpCitGQUlMIHBpcGVUaHJv
dWdoIHNob3VsZCBicmFuZC1jaGVjayB0aGlzIGFuZCBub3QgYWxsb3cgJ05hTicgQ2FuJ3QgZmlu
ZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgcGlwZVRocm91Z2ggc2hvdWxkIGJyYW5k
LWNoZWNrIHJlYWRhYmxlIGFuZCBub3QgYWxsb3cgJ05hTicgYXNzZXJ0X3Rocm93c19qczogcGlw
ZVRocm91Z2ggc2hvdWxkIGJyYW5kLWNoZWNrIHJlYWRhYmxlIGZ1bmN0aW9uICIoKSA9PiBycy5w
aXBlVGhyb3VnaCh7CisgICAgICAgIGdldCB3cml0YWJsZSgpIHsKKyAgICAgICAgICB3cml0YWJs
ZUdldHRlckNhbGxlZCA9IHRydWU7CisgICAgICAgICAgcmV0dXJuIG5ldyBXcml0YWJsZVN0cmVh
bSgpOworICAgICAgICB9LAorICAgICAgICByZWFkYWJsZQorICAgICAgfSkiIHRocmV3IG9iamVj
dCAiUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtIiAo
IlJlZmVyZW5jZUVycm9yIikgZXhwZWN0ZWQgaW5zdGFuY2Ugb2YgZnVuY3Rpb24gImZ1bmN0aW9u
IFR5cGVFcnJvcigpIHsKKyAgICBbbmF0aXZlIGNvZGVdCit9IiAoIlR5cGVFcnJvciIpCitGQUlM
IHBpcGVUaHJvdWdoIHNob3VsZCBicmFuZC1jaGVjayB0aGlzIGFuZCBub3QgYWxsb3cgJ3RydWUn
IENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIHBpcGVUaHJvdWdoIHNo
b3VsZCBicmFuZC1jaGVjayByZWFkYWJsZSBhbmQgbm90IGFsbG93ICd0cnVlJyBhc3NlcnRfdGhy
b3dzX2pzOiBwaXBlVGhyb3VnaCBzaG91bGQgYnJhbmQtY2hlY2sgcmVhZGFibGUgZnVuY3Rpb24g
IigpID0+IHJzLnBpcGVUaHJvdWdoKHsKKyAgICAgICAgZ2V0IHdyaXRhYmxlKCkgeworICAgICAg
ICAgIHdyaXRhYmxlR2V0dGVyQ2FsbGVkID0gdHJ1ZTsKKyAgICAgICAgICByZXR1cm4gbmV3IFdy
aXRhYmxlU3RyZWFtKCk7CisgICAgICAgIH0sCisgICAgICAgIHJlYWRhYmxlCisgICAgICB9KSIg
dGhyZXcgb2JqZWN0ICJSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFi
bGVTdHJlYW0iICgiUmVmZXJlbmNlRXJyb3IiKSBleHBlY3RlZCBpbnN0YW5jZSBvZiBmdW5jdGlv
biAiZnVuY3Rpb24gVHlwZUVycm9yKCkgeworICAgIFtuYXRpdmUgY29kZV0KK30iICgiVHlwZUVy
cm9yIikKK0ZBSUwgcGlwZVRocm91Z2ggc2hvdWxkIGJyYW5kLWNoZWNrIHRoaXMgYW5kIG5vdCBh
bGxvdyAnUmVhZGFibGVTdHJlYW0nIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFt
CitGQUlMIHBpcGVUaHJvdWdoIHNob3VsZCBicmFuZC1jaGVjayByZWFkYWJsZSBhbmQgbm90IGFs
bG93ICdSZWFkYWJsZVN0cmVhbScgYXNzZXJ0X3Rocm93c19qczogcGlwZVRocm91Z2ggc2hvdWxk
IGJyYW5kLWNoZWNrIHJlYWRhYmxlIGZ1bmN0aW9uICIoKSA9PiBycy5waXBlVGhyb3VnaCh7Cisg
ICAgICAgIGdldCB3cml0YWJsZSgpIHsKKyAgICAgICAgICB3cml0YWJsZUdldHRlckNhbGxlZCA9
IHRydWU7CisgICAgICAgICAgcmV0dXJuIG5ldyBXcml0YWJsZVN0cmVhbSgpOworICAgICAgICB9
LAorICAgICAgICByZWFkYWJsZQorICAgICAgfSkiIHRocmV3IG9iamVjdCAiUmVmZXJlbmNlRXJy
b3I6IENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtIiAoIlJlZmVyZW5jZUVycm9y
IikgZXhwZWN0ZWQgaW5zdGFuY2Ugb2YgZnVuY3Rpb24gImZ1bmN0aW9uIFR5cGVFcnJvcigpIHsK
KyAgICBbbmF0aXZlIGNvZGVdCit9IiAoIlR5cGVFcnJvciIpCitGQUlMIHBpcGVUaHJvdWdoIHNo
b3VsZCBicmFuZC1jaGVjayB0aGlzIGFuZCBub3QgYWxsb3cgJ1tvYmplY3QgUmVhZGFibGVTdHJl
YW1dJyBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBwaXBlVGhyb3Vn
aCBzaG91bGQgYnJhbmQtY2hlY2sgcmVhZGFibGUgYW5kIG5vdCBhbGxvdyAnW29iamVjdCBSZWFk
YWJsZVN0cmVhbV0nIGFzc2VydF90aHJvd3NfanM6IHBpcGVUaHJvdWdoIHNob3VsZCBicmFuZC1j
aGVjayByZWFkYWJsZSBmdW5jdGlvbiAiKCkgPT4gcnMucGlwZVRocm91Z2goeworICAgICAgICBn
ZXQgd3JpdGFibGUoKSB7CisgICAgICAgICAgd3JpdGFibGVHZXR0ZXJDYWxsZWQgPSB0cnVlOwor
ICAgICAgICAgIHJldHVybiBuZXcgV3JpdGFibGVTdHJlYW0oKTsKKyAgICAgICAgfSwKKyAgICAg
ICAgcmVhZGFibGUKKyAgICAgIH0pIiB0aHJldyBvYmplY3QgIlJlZmVyZW5jZUVycm9yOiBDYW4n
dCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbSIgKCJSZWZlcmVuY2VFcnJvciIpIGV4cGVj
dGVkIGluc3RhbmNlIG9mIGZ1bmN0aW9uICJmdW5jdGlvbiBUeXBlRXJyb3IoKSB7CisgICAgW25h
dGl2ZSBjb2RlXQorfSIgKCJUeXBlRXJyb3IiKQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL3BpcGUtdGhyb3Vn
aC5hbnkud29ya2VyLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMvcGlwaW5nL3BpcGUtdGhyb3VnaC5hbnkud29ya2VyLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMjM4MjkxMzUyOGU2OTNiM2E1ZDU2YzY2MGE0NTA2MDk4MGI1NDhjMwotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy9waXBpbmcvcGlwZS10aHJvdWdoLmFueS53b3JrZXIuaHRtbApAQCAtMCwwICsxIEBACis8
IS0tIFRoaXMgZmlsZSBpcyByZXF1aXJlZCBmb3IgV2ViS2l0IHRlc3QgaW5mcmFzdHJ1Y3R1cmUg
dG8gcnVuIHRoZSB0ZW1wbGF0ZWQgdGVzdCAtLT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMvcGlwaW5nL3BpcGUtdGhyb3VnaC5kZWRpY2F0ZWR3b3JrZXItZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3Bp
cGluZy9waXBlLXRocm91Z2guZGVkaWNhdGVkd29ya2VyLWV4cGVjdGVkLnR4dApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggYjg3YmUwNGVkMGI4OTE3NjU5Zjg5YzRkNzU2NTE4ZjQ2NjAz
Yjc5NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL3Bp
cGUtdGhyb3VnaC5kZWRpY2F0ZWR3b3JrZXItZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAg
LTEsMTUgKzAsMCBAQAotCi1GQUlMIFBpcGluZyB0aHJvdWdoIGEgZHVjay10eXBlZCBwYXNzLXRo
cm91Z2ggdHJhbnNmb3JtIHN0cmVhbSBzaG91bGQgd29yayBDYW4ndCBmaW5kIHZhcmlhYmxlOiBX
cml0YWJsZVN0cmVhbQotRkFJTCBQaXBpbmcgdGhyb3VnaCBhIHRyYW5zZm9ybSBlcnJvcmVkIG9u
IHRoZSB3cml0YWJsZSBlbmQgZG9lcyBub3QgY2F1c2UgYW4gdW5oYW5kbGVkIHByb21pc2UgcmVq
ZWN0aW9uIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCi1QQVNTIHBpcGVUaHJv
dWdoIGdlbmVyaWNhbGx5IGNhbGxzIHBpcGVUbyB3aXRoIHRoZSBhcHByb3ByaWF0ZSBhcmdzIAot
RkFJTCBwaXBlVGhyb3VnaCBjYW4gaGFuZGxlIGNhbGxpbmcgYSBwaXBlVG8gdGhhdCByZXR1cm5z
IGEgbm9uLXByb21pc2Ugb2JqZWN0IENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFt
Ci1GQUlMIHBpcGVUaHJvdWdoIGNhbiBoYW5kbGUgY2FsbGluZyBhIHBpcGVUbyB0aGF0IHJldHVy
bnMgYSBub24tcHJvbWlzZSB0aGVuYWJsZSBvYmplY3QgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3Jp
dGFibGVTdHJlYW0KLUZBSUwgcGlwZVRocm91Z2ggc2hvdWxkIG1hcmsgYSByZWFsIHByb21pc2Ug
ZnJvbSBhIGZha2UgcmVhZGFibGUgYXMgaGFuZGxlZCBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0
YWJsZVN0cmVhbQotRkFJTCBwaXBlVGhyb3VnaCBzaG91bGQgbm90IGJlIGZvb2xlZCBieSBhbiBv
YmplY3Qgd2hvc2UgaW5zdGFuY2VvZiBQcm9taXNlIHJldHVybnMgdHJ1ZSBDYW4ndCBmaW5kIHZh
cmlhYmxlOiBXcml0YWJsZVN0cmVhbQotUEFTUyB1bmRlZmluZWQgcmVhZGFibGUgb3Igd3JpdGFi
bGUgYXJndW1lbnRzIHNob3VsZCBjYXVzZSBwaXBlVGhyb3VnaCB0byB0aHJvdyAKLUZBSUwgaW52
YWxpZCBidXQgbm90IHVuZGVmaW5lZCBhcmd1bWVudHMgc2hvdWxkIG5vdCBjYXVzZSBwaXBlVGhy
b3VnaCB0byB0aHJvdyBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotUEFTUyBw
aXBlVGhyb3VnaCBzaG91bGQgdGhyb3cgd2hlbiBpdHMgZmlyc3QgYXJndW1lbnQgaXMgbm90IGNv
bnZlcnRpYmxlIHRvIGFuIG9iamVjdCAKLVBBU1MgcGlwZVRocm91Z2ggc2hvdWxkIHRocm93IHdo
ZW4gInRoaXMiIGhhcyBubyBwaXBlVG8gbWV0aG9kIAotUEFTUyBwaXBlVGhyb3VnaCBzaG91bGQg
cmV0aHJvdyBlcnJvcnMgZnJvbSBhY2Nlc3NpbmcgcGlwZVRvLCByZWFkYWJsZSwgb3Igd3JpdGFi
bGUgCi1QQVNTIHBpcGVUaHJvdWdoIHNob3VsZCB3b3JrIHdpdGggbm8gb3B0aW9ucyBhcmd1bWVu
dCAKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL3BpcGluZy9waXBlLXRocm91Z2guZGVkaWNhdGVkd29ya2VyLmh0bWwgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5n
L3BpcGUtdGhyb3VnaC5kZWRpY2F0ZWR3b3JrZXIuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggNjE0ZGI4MGJlOTBiNTJhZTQ0NzJiM2QzY2E4NzAwMDM4Zjg0Mjg1Zi4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL3BpcGUtdGhyb3VnaC5k
ZWRpY2F0ZWR3b3JrZXIuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLTwhRE9D
VFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHRpdGxlPnBpcGUtdGhyb3VnaC5q
cyBkZWRpY2F0ZWQgd29ya2VyIHdyYXBwZXIgZmlsZTwvdGl0bGU+Ci0KLTxzY3JpcHQgc3JjPSIv
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLQotPHNjcmlwdD4KLSd1c2Ugc3Ry
aWN0JzsKLWZldGNoX3Rlc3RzX2Zyb21fd29ya2VyKG5ldyBXb3JrZXIoJ3BpcGUtdGhyb3VnaC5q
cycpKTsKLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9waXBlLXRocm91Z2guaHRtbCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvcGlw
ZS10aHJvdWdoLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJkYmY5M2FjOTA1
NDJiNDc1ODAxYmRlMTE5YTdjMjkxNGNmNTZhYzcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zdHJlYW1zL3BpcGluZy9waXBlLXRocm91Z2guaHRtbAorKysgL2Rldi9udWxsCkBA
IC0xLDExICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgot
PHRpdGxlPnBpcGUtdGhyb3VnaC5qcyBicm93c2VyIGNvbnRleHQgd3JhcHBlciBmaWxlPC90aXRs
ZT4KLQotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0Pgot
PHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0Pgot
Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3JzLXV0aWxzLmpzIj48L3NjcmlwdD4KLTxzY3Jp
cHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Ci0KLTxzY3JpcHQg
c3JjPSJwaXBlLXRocm91Z2guanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9waXBlLXRocm91
Z2guanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvcGlwaW5nL3BpcGUtdGhyb3VnaC5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
N2JhNTYwN2FlNWRiYjU5YTg0NTAwMzNmOTYyNDE5NTAwMDE0ODJiZS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL3BpcGUtdGhyb3VnaC5qcworKysgL2Rl
di9udWxsCkBAIC0xLDI2MSArMCwwIEBACi0ndXNlIHN0cmljdCc7Ci0KLWlmIChzZWxmLmltcG9y
dFNjcmlwdHMpIHsKLSAgc2VsZi5pbXBvcnRTY3JpcHRzKCcvcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
LmpzJyk7Ci0gIHNlbGYuaW1wb3J0U2NyaXB0cygnLi4vcmVzb3VyY2VzL3JzLXV0aWxzLmpzJyk7
Ci0gIHNlbGYuaW1wb3J0U2NyaXB0cygnLi4vcmVzb3VyY2VzL3Rlc3QtdXRpbHMuanMnKTsKLX0K
LQotZnVuY3Rpb24gZHVja1R5cGVkUGFzc1Rocm91Z2hUcmFuc2Zvcm0oKSB7Ci0gIGxldCBlbnF1
ZXVlSW5SZWFkYWJsZTsKLSAgbGV0IGNsb3NlUmVhZGFibGU7Ci0KLSAgcmV0dXJuIHsKLSAgICB3
cml0YWJsZTogbmV3IFdyaXRhYmxlU3RyZWFtKHsKLSAgICAgIHdyaXRlKGNodW5rKSB7Ci0gICAg
ICAgIGVucXVldWVJblJlYWRhYmxlKGNodW5rKTsKLSAgICAgIH0sCi0KLSAgICAgIGNsb3NlKCkg
ewotICAgICAgICBjbG9zZVJlYWRhYmxlKCk7Ci0gICAgICB9Ci0gICAgfSksCi0KLSAgICByZWFk
YWJsZTogbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICAgIHN0YXJ0KGMpIHsKLSAgICAgICAgZW5x
dWV1ZUluUmVhZGFibGUgPSBjLmVucXVldWUuYmluZChjKTsKLSAgICAgICAgY2xvc2VSZWFkYWJs
ZSA9IGMuY2xvc2UuYmluZChjKTsKLSAgICAgIH0KLSAgICB9KQotICB9OwotfQotCi1mdW5jdGlv
biB1bmludGVyZXN0aW5nUmVhZGFibGVXcml0YWJsZVBhaXIoKSB7Ci0gIHJldHVybiB7IHdyaXRh
YmxlOiBuZXcgV3JpdGFibGVTdHJlYW0oKSwgcmVhZGFibGU6IG5ldyBSZWFkYWJsZVN0cmVhbSgp
IH07Ci19Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0gIGNvbnN0IHJlYWRhYmxlRW5kID0gc2Vx
dWVudGlhbFJlYWRhYmxlU3RyZWFtKDUpLnBpcGVUaHJvdWdoKGR1Y2tUeXBlZFBhc3NUaHJvdWdo
VHJhbnNmb3JtKCkpOwotCi0gIHJldHVybiByZWFkYWJsZVN0cmVhbVRvQXJyYXkocmVhZGFibGVF
bmQpLnRoZW4oY2h1bmtzID0+Ci0gICAgYXNzZXJ0X2FycmF5X2VxdWFscyhjaHVua3MsIFsxLCAy
LCAzLCA0LCA1XSksICdjaHVua3Mgc2hvdWxkIG1hdGNoJyk7Ci19LCAnUGlwaW5nIHRocm91Z2gg
YSBkdWNrLXR5cGVkIHBhc3MtdGhyb3VnaCB0cmFuc2Zvcm0gc3RyZWFtIHNob3VsZCB3b3JrJyk7
Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0gIGNvbnN0IHRyYW5zZm9ybSA9IHsKLSAgICB3cml0
YWJsZTogbmV3IFdyaXRhYmxlU3RyZWFtKHsKLSAgICAgIHN0YXJ0KGMpIHsKLSAgICAgICAgYy5l
cnJvcihuZXcgRXJyb3IoJ3RoaXMgcmVqZWN0aW9uIHNob3VsZCBub3QgYmUgcmVwb3J0ZWQgYXMg
dW5oYW5kbGVkJykpOwotICAgICAgfQotICAgIH0pLAotICAgIHJlYWRhYmxlOiBuZXcgUmVhZGFi
bGVTdHJlYW0oKQotICB9OwotCi0gIHNlcXVlbnRpYWxSZWFkYWJsZVN0cmVhbSg1KS5waXBlVGhy
b3VnaCh0cmFuc2Zvcm0pOwotCi0gIC8vIFRoZSB0ZXN0IGhhcm5lc3Mgc2hvdWxkIGNvbXBsYWlu
IGFib3V0IHVuaGFuZGxlZCByZWplY3Rpb25zIGJ5IHRoZW4uCi0gIHJldHVybiBmbHVzaEFzeW5j
RXZlbnRzKCk7Ci0KLX0sICdQaXBpbmcgdGhyb3VnaCBhIHRyYW5zZm9ybSBlcnJvcmVkIG9uIHRo
ZSB3cml0YWJsZSBlbmQgZG9lcyBub3QgY2F1c2UgYW4gdW5oYW5kbGVkIHByb21pc2UgcmVqZWN0
aW9uJyk7Ci0KLXRlc3QoKCkgPT4gewotICBsZXQgY2FsbGVkV2l0aEFyZ3M7Ci0gIGNvbnN0IGR1
bW15ID0gewotICAgIHBpcGVUbyguLi5hcmdzKSB7Ci0gICAgICBjYWxsZWRXaXRoQXJncyA9IGFy
Z3M7Ci0KLSAgICAgIC8vIERvZXMgbm90IHJldHVybiBhbnl0aGluZywgdGVzdGluZyB0aGUgc3Bl
YydzIGd1YXJkIGFnYWluc3QgdHJ5aW5nIHRvIG1hcmsgW1tQcm9taXNlSXNIYW5kbGVkXV0gb24g
dW5kZWZpbmVkLgotICAgIH0KLSAgfTsKLQotICBjb25zdCBmYWtlV3JpdGFibGUgPSB7IGZha2U6
ICd3cml0YWJsZScgfTsKLSAgY29uc3QgZmFrZVJlYWRhYmxlID0geyBmYWtlOiAncmVhZGFibGUn
IH07Ci0gIGNvbnN0IGFyZzIgPSB7IGFyZzogJ2FyZzInIH07Ci0gIGNvbnN0IGFyZzMgPSB7IGFy
ZzogJ2FyZzMnIH07Ci0gIGNvbnN0IHJlc3VsdCA9Ci0gICAgUmVhZGFibGVTdHJlYW0ucHJvdG90
eXBlLnBpcGVUaHJvdWdoLmNhbGwoZHVtbXksIHsgd3JpdGFibGU6IGZha2VXcml0YWJsZSwgcmVh
ZGFibGU6IGZha2VSZWFkYWJsZSB9LCBhcmcyLCBhcmczKTsKLQotICBhc3NlcnRfYXJyYXlfZXF1
YWxzKGNhbGxlZFdpdGhBcmdzLCBbZmFrZVdyaXRhYmxlLCBhcmcyXSwKLSAgICAnVGhlIHRoaXMg
dmFsdWVcJ3MgcGlwZVRvIG1ldGhvZCBzaG91bGQgYmUgY2FsbGVkIHdpdGggdGhlIGFwcHJvcHJp
YXRlIGFyZ3VtZW50cycpOwotICBhc3NlcnRfZXF1YWxzKHJlc3VsdCwgZmFrZVJlYWRhYmxlLCAn
cmV0dXJuIHZhbHVlIHNob3VsZCBiZSB0aGUgcGFzc2VkIHJlYWRhYmxlIHByb3BlcnR5Jyk7Ci0K
LX0sICdwaXBlVGhyb3VnaCBnZW5lcmljYWxseSBjYWxscyBwaXBlVG8gd2l0aCB0aGUgYXBwcm9w
cmlhdGUgYXJncycpOwotCi10ZXN0KCgpID0+IHsKLSAgY29uc3QgZHVtbXkgPSB7Ci0gICAgcGlw
ZVRvKCkgewotICAgICAgcmV0dXJuIHsgbm90OiAnYSBwcm9taXNlJyB9OwotICAgIH0KLSAgfTsK
LQotICBSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUucGlwZVRocm91Z2guY2FsbChkdW1teSwgdW5p
bnRlcmVzdGluZ1JlYWRhYmxlV3JpdGFibGVQYWlyKCkpOwotCi0gIC8vIFRlc3QgcGFzc2VzIGlm
IHRoaXMgZG9lc24ndCB0aHJvdyBvciBjcmFzaC4KLQotfSwgJ3BpcGVUaHJvdWdoIGNhbiBoYW5k
bGUgY2FsbGluZyBhIHBpcGVUbyB0aGF0IHJldHVybnMgYSBub24tcHJvbWlzZSBvYmplY3QnKTsK
LQotdGVzdCgoKSA9PiB7Ci0gIGNvbnN0IGR1bW15ID0gewotICAgIHBpcGVUbygpIHsKLSAgICAg
IHJldHVybiB7Ci0gICAgICAgIHRoZW4oKSB7fSwKLSAgICAgICAgdGhpczogJ2lzIG5vdCBhIHJl
YWwgcHJvbWlzZScKLSAgICAgIH07Ci0gICAgfQotICB9OwotCi0gIFJlYWRhYmxlU3RyZWFtLnBy
b3RvdHlwZS5waXBlVGhyb3VnaC5jYWxsKGR1bW15LCB1bmludGVyZXN0aW5nUmVhZGFibGVXcml0
YWJsZVBhaXIoKSk7Ci0KLSAgLy8gVGVzdCBwYXNzZXMgaWYgdGhpcyBkb2Vzbid0IHRocm93IG9y
IGNyYXNoLgotCi19LCAncGlwZVRocm91Z2ggY2FuIGhhbmRsZSBjYWxsaW5nIGEgcGlwZVRvIHRo
YXQgcmV0dXJucyBhIG5vbi1wcm9taXNlIHRoZW5hYmxlIG9iamVjdCcpOwotCi1wcm9taXNlX3Rl
c3QoKCkgPT4gewotICBjb25zdCBkdW1teSA9IHsKLSAgICBwaXBlVG8oKSB7Ci0gICAgICByZXR1
cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCd0aGlzIHJlamVjdGlvbiBzaG91bGQgbm90IGJl
IHJlcG9ydGVkIGFzIHVuaGFuZGxlZCcpKTsKLSAgICB9Ci0gIH07Ci0KLSAgUmVhZGFibGVTdHJl
YW0ucHJvdG90eXBlLnBpcGVUaHJvdWdoLmNhbGwoZHVtbXksIHVuaW50ZXJlc3RpbmdSZWFkYWJs
ZVdyaXRhYmxlUGFpcigpKTsKLQotICAvLyBUaGUgdGVzdCBoYXJuZXNzIHNob3VsZCBjb21wbGFp
biBhYm91dCB1bmhhbmRsZWQgcmVqZWN0aW9ucyBieSB0aGVuLgotICByZXR1cm4gZmx1c2hBc3lu
Y0V2ZW50cygpOwotCi19LCAncGlwZVRocm91Z2ggc2hvdWxkIG1hcmsgYSByZWFsIHByb21pc2Ug
ZnJvbSBhIGZha2UgcmVhZGFibGUgYXMgaGFuZGxlZCcpOwotCi10ZXN0KCgpID0+IHsKLSAgbGV0
IHRoZW5DYWxsZWQgPSBmYWxzZTsKLSAgbGV0IGNhdGNoQ2FsbGVkID0gZmFsc2U7Ci0gIGNvbnN0
IGR1bW15ID0gewotICAgIHBpcGVUbygpIHsKLSAgICAgIGNvbnN0IGZha2VQcm9taXNlID0gT2Jq
ZWN0LmNyZWF0ZShQcm9taXNlLnByb3RvdHlwZSk7Ci0gICAgICBmYWtlUHJvbWlzZS50aGVuID0g
KCkgPT4gewotICAgICAgICB0aGVuQ2FsbGVkID0gdHJ1ZTsKLSAgICAgIH07Ci0gICAgICBmYWtl
UHJvbWlzZS5jYXRjaCA9ICgpID0+IHsKLSAgICAgICAgY2F0Y2hDYWxsZWQgPSB0cnVlOwotICAg
ICAgfTsKLSAgICAgIGFzc2VydF90cnVlKGZha2VQcm9taXNlIGluc3RhbmNlb2YgUHJvbWlzZSwg
J2Zha2VQcm9taXNlIGZvb2xzIGluc3RhbmNlb2YnKTsKLSAgICAgIHJldHVybiBmYWtlUHJvbWlz
ZTsKLSAgICB9Ci0gIH07Ci0KLSAgLy8gQW4gaW5jb3JyZWN0IGltcGxlbWVudGF0aW9uIHdoaWNo
IHVzZXMgYW4gaW50ZXJuYWwgbWV0aG9kIHRvIG1hcmsgdGhlIHByb21pc2UgYXMgaGFuZGxlZCB3
aWxsIHRocm93IG9yIGNyYXNoIGhlcmUuCi0gIFJlYWRhYmxlU3RyZWFtLnByb3RvdHlwZS5waXBl
VGhyb3VnaC5jYWxsKGR1bW15LCB1bmludGVyZXN0aW5nUmVhZGFibGVXcml0YWJsZVBhaXIoKSk7
Ci0KLSAgLy8gQW4gaW5jb3JyZWN0IGltcGxlbWVudGF0aW9uIHRoYXQgdHJpZXMgdG8gbWFyayB0
aGUgcHJvbWlzZSBhcyBoYW5kbGVkIGJ5IGNhbGxpbmcgLnRoZW4oKSBvciAuY2F0Y2goKSBvbiB0
aGUgb2JqZWN0Ci0gIC8vIHdpbGwgZmFpbCB0aGVzZSB0ZXN0cy4KLSAgYXNzZXJ0X2ZhbHNlKHRo
ZW5DYWxsZWQsICd0aGVuIHNob3VsZCBub3QgYmUgY2FsbGVkJyk7Ci0gIGFzc2VydF9mYWxzZShj
YXRjaENhbGxlZCwgJ2NhdGNoIHNob3VsZCBub3QgYmUgY2FsbGVkJyk7Ci19LCAncGlwZVRocm91
Z2ggc2hvdWxkIG5vdCBiZSBmb29sZWQgYnkgYW4gb2JqZWN0IHdob3NlIGluc3RhbmNlb2YgUHJv
bWlzZSByZXR1cm5zIHRydWUnKTsKLQotdGVzdCgoKSA9PiB7Ci0gIGNvbnN0IHBhaXJzID0gWwot
ICAgIHt9LAotICAgIHsgcmVhZGFibGU6IHVuZGVmaW5lZCwgd3JpdGFibGU6IHVuZGVmaW5lZCB9
LAotICAgIHsgcmVhZGFibGU6ICdyZWFkYWJsZScgfSwKLSAgICB7IHJlYWRhYmxlOiAncmVhZGFi
bGUnLCB3cml0YWJsZTogdW5kZWZpbmVkIH0sCi0gICAgeyB3cml0YWJsZTogJ3dyaXRhYmxlJyB9
LAotICAgIHsgcmVhZGFibGU6IHVuZGVmaW5lZCwgd3JpdGFibGU6ICd3cml0YWJsZScgfQotICBd
OwotICBmb3IgKGxldCBpID0gMDsgaSA8IHBhaXJzLmxlbmd0aDsgKytpKSB7Ci0gICAgY29uc3Qg
cGFpciA9IHBhaXJzW2ldOwotICAgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKCk7Ci0g
ICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IHJzLnBpcGVUaHJvdWdoKHBh
aXIpLAotICAgICAgICAgICAgICAgICAgYHBpcGVUaHJvdWdoIHNob3VsZCB0aHJvdyBmb3IgYXJn
dW1lbnQgJHtKU09OLnN0cmluZ2lmeShwYWlyKX0gKGluZGV4ICR7aX0pO2ApOwotICB9Ci19LCAn
dW5kZWZpbmVkIHJlYWRhYmxlIG9yIHdyaXRhYmxlIGFyZ3VtZW50cyBzaG91bGQgY2F1c2UgcGlw
ZVRocm91Z2ggdG8gdGhyb3cnKTsKLQotdGVzdCgoKSA9PiB7Ci0gIGNvbnN0IGludmFsaWRBcmd1
bWVudHMgPSBbbnVsbCwgMCwgTmFOLCAnJywgW10sIHt9LCBmYWxzZSwgKCkgPT4ge31dOwotICBm
b3IgKGNvbnN0IGFyZyBvZiBpbnZhbGlkQXJndW1lbnRzKSB7Ci0gICAgY29uc3QgcnMgPSBuZXcg
UmVhZGFibGVTdHJlYW0oKTsKLSAgICBhc3NlcnRfZXF1YWxzKGFyZywgcnMucGlwZVRocm91Z2go
eyB3cml0YWJsZTogbmV3IFdyaXRhYmxlU3RyZWFtKCksIHJlYWRhYmxlOiBhcmcgfSksCi0gICAg
ICAgICAgICAgICAgICAncGlwZVRocm91Z2goKSBzaG91bGQgbm90IHRocm93IGZvciByZWFkYWJs
ZTogJyArIEpTT04uc3RyaW5naWZ5KGFyZykpOwotICAgIGNvbnN0IHJzMiA9IG5ldyBSZWFkYWJs
ZVN0cmVhbSgpOwotICAgIGFzc2VydF9lcXVhbHMocnMyLCBycy5waXBlVGhyb3VnaCh7IHdyaXRh
YmxlOiBhcmcsIHJlYWRhYmxlOiByczIgfSksCi0gICAgICAgICAgICAgICAgICAncGlwZVRocm91
Z2goKSBzaG91bGQgbm90IHRocm93IGZvciB3cml0YWJsZTogJyArIEpTT04uc3RyaW5naWZ5KGFy
ZykpOwotICB9Ci19LCAnaW52YWxpZCBidXQgbm90IHVuZGVmaW5lZCBhcmd1bWVudHMgc2hvdWxk
IG5vdCBjYXVzZSBwaXBlVGhyb3VnaCB0byB0aHJvdycpOwotCi10ZXN0KCgpID0+IHsKLQotICBj
b25zdCB0aGlzVmFsdWUgPSB7Ci0gICAgcGlwZVRvKCkgewotICAgICAgYXNzZXJ0X3VucmVhY2hl
ZCgncGlwZVRvIHNob3VsZCBub3QgYmUgY2FsbGVkJyk7Ci0gICAgfQotICB9OwotCi0gIG1ldGhv
ZFRocm93cyhSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUsICdwaXBlVGhyb3VnaCcsIHRoaXNWYWx1
ZSwgW3VuZGVmaW5lZCwge31dKTsKLSAgbWV0aG9kVGhyb3dzKFJlYWRhYmxlU3RyZWFtLnByb3Rv
dHlwZSwgJ3BpcGVUaHJvdWdoJywgdGhpc1ZhbHVlLCBbbnVsbCwge31dKTsKLQotfSwgJ3BpcGVU
aHJvdWdoIHNob3VsZCB0aHJvdyB3aGVuIGl0cyBmaXJzdCBhcmd1bWVudCBpcyBub3QgY29udmVy
dGlibGUgdG8gYW4gb2JqZWN0Jyk7Ci0KLXRlc3QoKCkgPT4gewotCi0gIGNvbnN0IGFyZ3MgPSBb
eyByZWFkYWJsZToge30sIHdyaXRhYmxlOiB7fSB9LCB7fV07Ci0KLSAgbWV0aG9kVGhyb3dzKFJl
YWRhYmxlU3RyZWFtLnByb3RvdHlwZSwgJ3BpcGVUaHJvdWdoJywgdW5kZWZpbmVkLCBhcmdzKTsK
LSAgbWV0aG9kVGhyb3dzKFJlYWRhYmxlU3RyZWFtLnByb3RvdHlwZSwgJ3BpcGVUaHJvdWdoJywg
bnVsbCwgYXJncyk7Ci0gIG1ldGhvZFRocm93cyhSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUsICdw
aXBlVGhyb3VnaCcsIDEsIGFyZ3MpOwotICBtZXRob2RUaHJvd3MoUmVhZGFibGVTdHJlYW0ucHJv
dG90eXBlLCAncGlwZVRocm91Z2gnLCB7IHBpcGVUbzogJ3Rlc3QnIH0sIGFyZ3MpOwotCi19LCAn
cGlwZVRocm91Z2ggc2hvdWxkIHRocm93IHdoZW4gInRoaXMiIGhhcyBubyBwaXBlVG8gbWV0aG9k
Jyk7Ci0KLXRlc3QoKCkgPT4gewotICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcigncG90YXRvJyk7
Ci0KLSAgY29uc3QgdGhyb3dpbmdQaXBlVG8gPSB7Ci0gICAgZ2V0IHBpcGVUbygpIHsKLSAgICAg
IHRocm93IGVycm9yOwotICAgIH0KLSAgfTsKLSAgYXNzZXJ0X3Rocm93cyhlcnJvciwKLSAgICAo
KSA9PiBSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUucGlwZVRocm91Z2guY2FsbCh0aHJvd2luZ1Bp
cGVUbywgeyByZWFkYWJsZTogeyB9LCB3cml0YWJsZTogeyB9IH0sIHt9KSwKLSAgICAncGlwZVRo
cm91Z2ggc2hvdWxkIHJldGhyb3cgdGhlIGVycm9yIHRocm93biBieSBwaXBlVG8nKTsKLQotICBj
b25zdCB0aGlzVmFsdWUgPSB7Ci0gICAgcGlwZVRvKCkgewotICAgICAgYXNzZXJ0X3VucmVhY2hl
ZCgncGlwZVRvIHNob3VsZCBub3QgYmUgY2FsbGVkJyk7Ci0gICAgfQotICB9OwotCi0gIGNvbnN0
IHRocm93aW5nV3JpdGFibGUgPSB7Ci0gICAgcmVhZGFibGU6IHt9LAotICAgIGdldCB3cml0YWJs
ZSgpIHsKLSAgICAgIHRocm93IGVycm9yOwotICAgIH0KLSAgfTsKLSAgYXNzZXJ0X3Rocm93cyhl
cnJvciwKLSAgICAoKSA9PiBSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUucGlwZVRocm91Z2guY2Fs
bCh0aGlzVmFsdWUsIHRocm93aW5nV3JpdGFibGUsIHt9KSwKLSAgICAncGlwZVRocm91Z2ggc2hv
dWxkIHJldGhyb3cgdGhlIGVycm9yIHRocm93biBieSB0aGUgd3JpdGFibGUgZ2V0dGVyJyk7Ci0K
LSAgY29uc3QgdGhyb3dpbmdSZWFkYWJsZSA9IHsKLSAgICBnZXQgcmVhZGFibGUoKSB7Ci0gICAg
ICB0aHJvdyBlcnJvcjsKLSAgICB9LAotICAgIHdyaXRhYmxlOiB7fQotICB9OwotICBhc3NlcnRf
dGhyb3dzKGVycm9yLAotICAgICgpID0+IFJlYWRhYmxlU3RyZWFtLnByb3RvdHlwZS5waXBlVGhy
b3VnaC5jYWxsKHRoaXNWYWx1ZSwgdGhyb3dpbmdSZWFkYWJsZSwge30pLAotICAgICdwaXBlVGhy
b3VnaCBzaG91bGQgcmV0aHJvdyB0aGUgZXJyb3IgdGhyb3duIGJ5IHRoZSByZWFkYWJsZSBnZXR0
ZXInKTsKLQotfSwgJ3BpcGVUaHJvdWdoIHNob3VsZCByZXRocm93IGVycm9ycyBmcm9tIGFjY2Vz
c2luZyBwaXBlVG8sIHJlYWRhYmxlLCBvciB3cml0YWJsZScpOwotCi10ZXN0KCgpID0+IHsKLQot
ICBsZXQgY291bnQgPSAwOwotICBjb25zdCB0aGlzVmFsdWUgPSB7Ci0gICAgcGlwZVRvKCkgewot
ICAgICAgKytjb3VudDsKLSAgICB9Ci0gIH07Ci0KLSAgUmVhZGFibGVTdHJlYW0ucHJvdG90eXBl
LnBpcGVUaHJvdWdoLmNhbGwodGhpc1ZhbHVlLCB7IHJlYWRhYmxlOiB7fSwgd3JpdGFibGU6IHt9
IH0pOwotCi0gIGFzc2VydF9lcXVhbHMoY291bnQsIDEsICdwaXBlVG8gd2FzIGNhbGxlZCBvbmNl
Jyk7Ci0KLX0sICdwaXBlVGhyb3VnaCBzaG91bGQgd29yayB3aXRoIG5vIG9wdGlvbnMgYXJndW1l
bnQnKTsKLQotZG9uZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9waXBlLXRocm91Z2guc2VydmljZXdvcmtl
ci5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL3BpcGUtdGhyb3VnaC5zZXJ2aWNld29ya2VyLmh0dHBz
LWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWExMzRkNTk1MDlj
Y2M1NjYyOTdiNjRlMDdmMDY0YmQ3NDNiMDg4NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMvcGlwaW5nL3BpcGUtdGhyb3VnaC5zZXJ2aWNld29ya2VyLmh0dHBzLWV4
cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLQotUEFTUyBTZXJ2aWNl
IHdvcmtlciB0ZXN0IHNldHVwIAotRkFJTCBQaXBpbmcgdGhyb3VnaCBhIGR1Y2stdHlwZWQgcGFz
cy10aHJvdWdoIHRyYW5zZm9ybSBzdHJlYW0gc2hvdWxkIHdvcmsgQ2FuJ3QgZmluZCB2YXJpYWJs
ZTogV3JpdGFibGVTdHJlYW0KLUZBSUwgUGlwaW5nIHRocm91Z2ggYSB0cmFuc2Zvcm0gZXJyb3Jl
ZCBvbiB0aGUgd3JpdGFibGUgZW5kIGRvZXMgbm90IGNhdXNlIGFuIHVuaGFuZGxlZCBwcm9taXNl
IHJlamVjdGlvbiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQotUEFTUyBwaXBl
VGhyb3VnaCBnZW5lcmljYWxseSBjYWxscyBwaXBlVG8gd2l0aCB0aGUgYXBwcm9wcmlhdGUgYXJn
cyAKLUZBSUwgcGlwZVRocm91Z2ggY2FuIGhhbmRsZSBjYWxsaW5nIGEgcGlwZVRvIHRoYXQgcmV0
dXJucyBhIG5vbi1wcm9taXNlIG9iamVjdCBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0
cmVhbQotRkFJTCBwaXBlVGhyb3VnaCBjYW4gaGFuZGxlIGNhbGxpbmcgYSBwaXBlVG8gdGhhdCBy
ZXR1cm5zIGEgbm9uLXByb21pc2UgdGhlbmFibGUgb2JqZWN0IENhbid0IGZpbmQgdmFyaWFibGU6
IFdyaXRhYmxlU3RyZWFtCi1GQUlMIHBpcGVUaHJvdWdoIHNob3VsZCBtYXJrIGEgcmVhbCBwcm9t
aXNlIGZyb20gYSBmYWtlIHJlYWRhYmxlIGFzIGhhbmRsZWQgQ2FuJ3QgZmluZCB2YXJpYWJsZTog
V3JpdGFibGVTdHJlYW0KLUZBSUwgcGlwZVRocm91Z2ggc2hvdWxkIG5vdCBiZSBmb29sZWQgYnkg
YW4gb2JqZWN0IHdob3NlIGluc3RhbmNlb2YgUHJvbWlzZSByZXR1cm5zIHRydWUgQ2FuJ3QgZmlu
ZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLVBBU1MgdW5kZWZpbmVkIHJlYWRhYmxlIG9yIHdy
aXRhYmxlIGFyZ3VtZW50cyBzaG91bGQgY2F1c2UgcGlwZVRocm91Z2ggdG8gdGhyb3cgCi1GQUlM
IGludmFsaWQgYnV0IG5vdCB1bmRlZmluZWQgYXJndW1lbnRzIHNob3VsZCBub3QgY2F1c2UgcGlw
ZVRocm91Z2ggdG8gdGhyb3cgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KLVBB
U1MgcGlwZVRocm91Z2ggc2hvdWxkIHRocm93IHdoZW4gaXRzIGZpcnN0IGFyZ3VtZW50IGlzIG5v
dCBjb252ZXJ0aWJsZSB0byBhbiBvYmplY3QgCi1QQVNTIHBpcGVUaHJvdWdoIHNob3VsZCB0aHJv
dyB3aGVuICJ0aGlzIiBoYXMgbm8gcGlwZVRvIG1ldGhvZCAKLVBBU1MgcGlwZVRocm91Z2ggc2hv
dWxkIHJldGhyb3cgZXJyb3JzIGZyb20gYWNjZXNzaW5nIHBpcGVUbywgcmVhZGFibGUsIG9yIHdy
aXRhYmxlIAotUEFTUyBwaXBlVGhyb3VnaCBzaG91bGQgd29yayB3aXRoIG5vIG9wdGlvbnMgYXJn
dW1lbnQgCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvcGlwZS10aHJvdWdoLnNlcnZpY2V3b3JrZXIuaHR0cHMu
aHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy9waXBpbmcvcGlwZS10aHJvdWdoLnNlcnZpY2V3b3JrZXIuaHR0cHMuaHRtbApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMjEyNjNhMzA4M2YwNGYyNjE0YmQ5NmJjZWRjZGQxNGIyY2Y2
MTJlZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL3Bp
cGUtdGhyb3VnaC5zZXJ2aWNld29ya2VyLmh0dHBzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwx
MiArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTx0aXRs
ZT5waXBlLXRocm91Z2guanMgc2VydmljZSB3b3JrZXIgd3JhcHBlciBmaWxlPC90aXRsZT4KLQot
PHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlw
dCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlw
dCBzcmM9Ii9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvcmVzb3VyY2VzL3Rlc3QtaGVs
cGVycy5zdWIuanMiPjwvc2NyaXB0PgotCi08c2NyaXB0PgotJ3VzZSBzdHJpY3QnOwotc2Vydmlj
ZV93b3JrZXJfdGVzdCgncGlwZS10aHJvdWdoLmpzJywgJ1NlcnZpY2Ugd29ya2VyIHRlc3Qgc2V0
dXAnKTsKLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9waXBlLXRocm91Z2guc2hhcmVkd29ya2Vy
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy9waXBpbmcvcGlwZS10aHJvdWdoLnNoYXJlZHdvcmtlci1leHBlY3RlZC50eHQK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA5ZDVkMjUwOWQ3ODQ3ZThjZDZmZTY2MDZh
YTYwY2RkMzNhYTQ3NGUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
L3BpcGluZy9waXBlLXRocm91Z2guc2hhcmVkd29ya2VyLWV4cGVjdGVkLnR4dAorKysgL2Rldi9u
dWxsCkBAIC0xLDUgKzAsMCBAQAotQ09OU09MRSBNRVNTQUdFOiBSZWZlcmVuY2VFcnJvcjogQ2Fu
J3QgZmluZCB2YXJpYWJsZTogU2hhcmVkV29ya2VyCi0KLUhhcm5lc3MgRXJyb3IgKEZBSUwpLCBt
ZXNzYWdlID0gUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IFNoYXJlZFdvcmtl
cgotCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy9waXBpbmcvcGlwZS10aHJvdWdoLnNoYXJlZHdvcmtlci5odG1sIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9w
aXBlLXRocm91Z2guc2hhcmVkd29ya2VyLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDQxNjAzZWYwYjcwMjY3MWJhZjk3NDkxYzY3OTdiYTYwNjMzMzhmMGQuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9waXBlLXRocm91Z2guc2hhcmVk
d29ya2VyLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi08IURPQ1RZUEUgaHRt
bD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTx0aXRsZT5waXBlLXRocm91Z2guanMgc2hhcmVk
IHdvcmtlciB3cmFwcGVyIGZpbGU8L3RpdGxlPgotCi08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90
ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFy
bmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci0KLTxzY3JpcHQ+Ci0ndXNlIHN0cmljdCc7Ci1mZXRj
aF90ZXN0c19mcm9tX3dvcmtlcihuZXcgU2hhcmVkV29ya2VyKCdwaXBlLXRocm91Z2guanMnKSk7
Ci08L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvdGhlbi1pbnRlcmNlcHRpb24uYW55LWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy9waXBpbmcvdGhlbi1pbnRlcmNlcHRpb24uYW55LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5j
OGE2Y2FhZDMyNjliNWY1MTI4OGFhYzBlZTdkNmYxZjgzNGQ0NjJmCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3Bp
cGluZy90aGVuLWludGVyY2VwdGlvbi5hbnktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNyBAQAor
Q09OU09MRSBNRVNTQUdFOiBVbmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rpb246IFR5cGVFcnJvcjog
QXR0ZW1wdGVkIHRvIGFzc2lnbiB0byByZWFkb25seSBwcm9wZXJ0eS4KKworSGFybmVzcyBFcnJv
ciAoRkFJTCksIG1lc3NhZ2UgPSBVbmhhbmRsZWQgcmVqZWN0aW9uOiBBdHRlbXB0ZWQgdG8gYXNz
aWduIHRvIHJlYWRvbmx5IHByb3BlcnR5LgorCitUSU1FT1VUIHBpcGluZyBzaG91bGQgbm90IGJl
IG9ic2VydmFibGUgVGVzdCB0aW1lZCBvdXQKK05PVFJVTiB0ZWUgc2hvdWxkIG5vdCBiZSBvYnNl
cnZhYmxlIAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL3RoZW4taW50ZXJjZXB0aW9uLmFueS5odG1sIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy90
aGVuLWludGVyY2VwdGlvbi5hbnkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMzgyOTEzNTI4ZTY5M2IzYTVk
NTZjNjYwYTQ1MDYwOTgwYjU0OGMzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy90aGVuLWludGVyY2Vw
dGlvbi5hbnkuaHRtbApAQCAtMCwwICsxIEBACis8IS0tIFRoaXMgZmlsZSBpcyByZXF1aXJlZCBm
b3IgV2ViS2l0IHRlc3QgaW5mcmFzdHJ1Y3R1cmUgdG8gcnVuIHRoZSB0ZW1wbGF0ZWQgdGVzdCAt
LT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL3RoZW4taW50ZXJj
ZXB0aW9uLmFueS5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy9waXBpbmcvdGhlbi1pbnRlcmNlcHRpb24uYW55LmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg0
OGJiNWFmZmQ4NzA4MDA3N2MyNzI5ZDkxOTQzZTI4M2YzZTBjOGUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlw
aW5nL3RoZW4taW50ZXJjZXB0aW9uLmFueS5qcwpAQCAtMCwwICsxLDYyIEBACisvLyBNRVRBOiBn
bG9iYWw9d2luZG93LHdvcmtlcixqc3NoZWxsCisvLyBNRVRBOiBzY3JpcHQ9Li4vcmVzb3VyY2Vz
L3Rlc3QtdXRpbHMuanMKKy8vIE1FVEE6IHNjcmlwdD0uLi9yZXNvdXJjZXMvcmVjb3JkaW5nLXN0
cmVhbXMuanMKKyd1c2Ugc3RyaWN0JzsKKworZnVuY3Rpb24gaW50ZXJjZXB0VGhlbigpIHsKKyAg
Y29uc3QgaW50ZXJjZXB0ZWQgPSBbXTsKKyAgY29uc3QgY2FsbENvdW50ID0gMDsKKyAgT2JqZWN0
LnByb3RvdHlwZS50aGVuID0gZnVuY3Rpb24ocmVzb2x2ZXIpIHsKKyAgICBpZiAoIXRoaXMuZG9u
ZSkgeworICAgICAgaW50ZXJjZXB0ZWQucHVzaCh0aGlzLnZhbHVlKTsKKyAgICB9CisgICAgY29u
c3QgcmV0dmFsID0gT2JqZWN0LmNyZWF0ZShudWxsKTsKKyAgICByZXR2YWwuZG9uZSA9ICsrY2Fs
bENvdW50ID09PSAzOworICAgIHJldHZhbC52YWx1ZSA9IGNhbGxDb3VudDsKKyAgICByZXNvbHZl
cihyZXR2YWwpOworICAgIGlmIChyZXR2YWwuZG9uZSkgeworICAgICAgZGVsZXRlIE9iamVjdC5w
cm90b3R5cGUudGhlbjsKKyAgICB9CisgIH0KKyAgcmV0dXJuIGludGVyY2VwdGVkOworfQorCitw
cm9taXNlX3Rlc3QoYXN5bmMgKCkgPT4geworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVh
bSh7CisgICAgc3RhcnQoY29udHJvbGxlcikgeworICAgICAgY29udHJvbGxlci5lbnF1ZXVlKCdh
Jyk7CisgICAgICBjb250cm9sbGVyLmNsb3NlKCk7CisgICAgfQorICB9KTsKKyAgY29uc3Qgd3Mg
PSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSgpOworCisgIGNvbnN0IGludGVyY2VwdGVkID0gaW50
ZXJjZXB0VGhlbigpOworCisgIGF3YWl0IHJzLnBpcGVUbyh3cyk7CisgIGRlbGV0ZSBPYmplY3Qu
cHJvdG90eXBlLnRoZW47CisKKworICBhc3NlcnRfYXJyYXlfZXF1YWxzKGludGVyY2VwdGVkLCBb
XSwgJ25vdGhpbmcgc2hvdWxkIGhhdmUgYmVlbiBpbnRlcmNlcHRlZCcpOworICBhc3NlcnRfYXJy
YXlfZXF1YWxzKHdzLmV2ZW50cywgWyd3cml0ZScsICdhJywgJ2Nsb3NlJ10sICd3cml0dGVuIGNo
dW5rIHNob3VsZCBiZSAiYSInKTsKK30sICdwaXBpbmcgc2hvdWxkIG5vdCBiZSBvYnNlcnZhYmxl
Jyk7CisKK3Byb21pc2VfdGVzdChhc3luYyAoKSA9PiB7CisgIGNvbnN0IHJzID0gbmV3IFJlYWRh
YmxlU3RyZWFtKHsKKyAgICBzdGFydChjb250cm9sbGVyKSB7CisgICAgICBjb250cm9sbGVyLmVu
cXVldWUoJ2EnKTsKKyAgICAgIGNvbnRyb2xsZXIuY2xvc2UoKTsKKyAgICB9CisgIH0pOworICBj
b25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKCk7CisKKyAgY29uc3QgWyBicmFuY2gx
LCBicmFuY2gyIF0gPSBycy50ZWUoKTsKKworICBjb25zdCBpbnRlcmNlcHRlZCA9IGludGVyY2Vw
dFRoZW4oKTsKKworICBhd2FpdCBicmFuY2gxLnBpcGVUbyh3cyk7CisgIGRlbGV0ZSBPYmplY3Qu
cHJvdG90eXBlLnRoZW47CisgIGJyYW5jaDIuY2FuY2VsKCk7CisKKyAgYXNzZXJ0X2FycmF5X2Vx
dWFscyhpbnRlcmNlcHRlZCwgW10sICdub3RoaW5nIHNob3VsZCBoYXZlIGJlZW4gaW50ZXJjZXB0
ZWQnKTsKKyAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsnd3JpdGUnLCAnYScsICdj
bG9zZSddLCAnd3JpdHRlbiBjaHVuayBzaG91bGQgYmUgImEiJyk7Cit9LCAndGVlIHNob3VsZCBu
b3QgYmUgb2JzZXJ2YWJsZScpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy90aGVuLWludGVyY2VwdGlvbi5hbnku
d29ya2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvdGhlbi1pbnRlcmNlcHRpb24uYW55Lndvcmtlci1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMmZmZmYzYmJjNjk5ZDlhODZiMzc1ZmQyOWZiNGNjMGUzM2Fi
NTM0NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvdGhlbi1pbnRlcmNlcHRpb24uYW55Lndvcmtlci1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSw0IEBACisKK0ZBSUwgcGlwaW5nIHNob3VsZCBub3QgYmUg
b2JzZXJ2YWJsZSBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTog
b2JqZWN0ICJSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJl
YW0iCitGQUlMIHRlZSBzaG91bGQgbm90IGJlIG9ic2VydmFibGUgcHJvbWlzZV90ZXN0OiBVbmhh
bmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiUmVmZXJlbmNlRXJyb3I6IENhbid0
IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtIgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL3RoZW4taW50
ZXJjZXB0aW9uLmFueS53b3JrZXIuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvdGhlbi1pbnRlcmNlcHRpb24uYW55Lndvcmtl
ci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjIzODI5MTM1MjhlNjkzYjNhNWQ1NmM2NjBhNDUwNjA5ODBiNTQ4
YzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL3RoZW4taW50ZXJjZXB0aW9uLmFueS53b3JrZXIuaHRt
bApAQCAtMCwwICsxIEBACis8IS0tIFRoaXMgZmlsZSBpcyByZXF1aXJlZCBmb3IgV2ViS2l0IHRl
c3QgaW5mcmFzdHJ1Y3R1cmUgdG8gcnVuIHRoZSB0ZW1wbGF0ZWQgdGVzdCAtLT4KXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL3Rocm93aW5nLW9wdGlvbnMuYW55LWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy9waXBpbmcvdGhyb3dpbmctb3B0aW9ucy5hbnktZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjE2YzVjNWE3MDJmZmRmYjU3MjdiNzQ2M2I3OWRhOGRmOWM5OTg5MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvcGlwaW5nL3Rocm93aW5nLW9wdGlvbnMuYW55LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIw
IEBACisKK0hhcm5lc3MgRXJyb3IgKFRJTUVPVVQpLCBtZXNzYWdlID0gbnVsbAorCitGQUlMIHBp
cGVUbyBzaG91bGQgc3RvcCBhZnRlciBnZXR0aW5nIHByZXZlbnRBYm9ydCB0aHJvd3MgcHJldmVu
dEFib3J0CitGQUlMIHBpcGVUaHJvdWdoIHNob3VsZCBzdG9wIGFmdGVyIGdldHRpbmcgcHJldmVu
dEFib3J0IHRocm93cyBhc3NlcnRfdGhyb3dzX2pzOiBwaXBlVGhyb3VnaCBzaG91bGQgdGhyb3cg
ZnVuY3Rpb24gIigpID0+IG5ldyBSZWFkYWJsZVN0cmVhbSgpLnBpcGVUaHJvdWdoKG5ldyBUcmFu
c2Zvcm1TdHJlYW0oKSwgb3B0aW9ucykiIHRocmV3IG9iamVjdCAiUmVmZXJlbmNlRXJyb3I6IENh
bid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbSIgKCJSZWZlcmVuY2VFcnJvciIpIGV4
cGVjdGVkIGluc3RhbmNlIG9mIGZ1bmN0aW9uICJmdW5jdGlvbiBFcnJvcigpIHsKKyAgICBbbmF0
aXZlIGNvZGVdCit9IiAoIkVycm9yIikKK0ZBSUwgcGlwZVRvIHNob3VsZCBzdG9wIGFmdGVyIGdl
dHRpbmcgcHJldmVudENhbmNlbCB0aHJvd3MgcHJldmVudENhbmNlbAorRkFJTCBwaXBlVGhyb3Vn
aCBzaG91bGQgc3RvcCBhZnRlciBnZXR0aW5nIHByZXZlbnRDYW5jZWwgdGhyb3dzIGFzc2VydF90
aHJvd3NfanM6IHBpcGVUaHJvdWdoIHNob3VsZCB0aHJvdyBmdW5jdGlvbiAiKCkgPT4gbmV3IFJl
YWRhYmxlU3RyZWFtKCkucGlwZVRocm91Z2gobmV3IFRyYW5zZm9ybVN0cmVhbSgpLCBvcHRpb25z
KSIgdGhyZXcgb2JqZWN0ICJSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJh
bnNmb3JtU3RyZWFtIiAoIlJlZmVyZW5jZUVycm9yIikgZXhwZWN0ZWQgaW5zdGFuY2Ugb2YgZnVu
Y3Rpb24gImZ1bmN0aW9uIEVycm9yKCkgeworICAgIFtuYXRpdmUgY29kZV0KK30iICgiRXJyb3Ii
KQorRkFJTCBwaXBlVG8gc2hvdWxkIHN0b3AgYWZ0ZXIgZ2V0dGluZyBwcmV2ZW50Q2xvc2UgdGhy
b3dzIHByZXZlbnRDbG9zZQorRkFJTCBwaXBlVGhyb3VnaCBzaG91bGQgc3RvcCBhZnRlciBnZXR0
aW5nIHByZXZlbnRDbG9zZSB0aHJvd3MgYXNzZXJ0X3Rocm93c19qczogcGlwZVRocm91Z2ggc2hv
dWxkIHRocm93IGZ1bmN0aW9uICIoKSA9PiBuZXcgUmVhZGFibGVTdHJlYW0oKS5waXBlVGhyb3Vn
aChuZXcgVHJhbnNmb3JtU3RyZWFtKCksIG9wdGlvbnMpIiB0aHJldyBvYmplY3QgIlJlZmVyZW5j
ZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0iICgiUmVmZXJlbmNl
RXJyb3IiKSBleHBlY3RlZCBpbnN0YW5jZSBvZiBmdW5jdGlvbiAiZnVuY3Rpb24gRXJyb3IoKSB7
CisgICAgW25hdGl2ZSBjb2RlXQorfSIgKCJFcnJvciIpCitUSU1FT1VUIHBpcGVUbyBzaG91bGQg
c3RvcCBhZnRlciBnZXR0aW5nIHNpZ25hbCB0aHJvd3MgVGVzdCB0aW1lZCBvdXQKK0ZBSUwgcGlw
ZVRocm91Z2ggc2hvdWxkIHN0b3AgYWZ0ZXIgZ2V0dGluZyBzaWduYWwgdGhyb3dzIGFzc2VydF90
aHJvd3NfanM6IHBpcGVUaHJvdWdoIHNob3VsZCB0aHJvdyBmdW5jdGlvbiAiKCkgPT4gbmV3IFJl
YWRhYmxlU3RyZWFtKCkucGlwZVRocm91Z2gobmV3IFRyYW5zZm9ybVN0cmVhbSgpLCBvcHRpb25z
KSIgdGhyZXcgb2JqZWN0ICJSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJh
bnNmb3JtU3RyZWFtIiAoIlJlZmVyZW5jZUVycm9yIikgZXhwZWN0ZWQgaW5zdGFuY2Ugb2YgZnVu
Y3Rpb24gImZ1bmN0aW9uIEVycm9yKCkgeworICAgIFtuYXRpdmUgY29kZV0KK30iICgiRXJyb3Ii
KQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3N0cmVhbXMvcGlwaW5nL3Rocm93aW5nLW9wdGlvbnMuYW55Lmh0bWwgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL3Rocm93aW5n
LW9wdGlvbnMuYW55Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjM4MjkxMzUyOGU2OTNiM2E1ZDU2YzY2MGE0
NTA2MDk4MGI1NDhjMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvdGhyb3dpbmctb3B0aW9ucy5hbnku
aHRtbApAQCAtMCwwICsxIEBACis8IS0tIFRoaXMgZmlsZSBpcyByZXF1aXJlZCBmb3IgV2ViS2l0
IHRlc3QgaW5mcmFzdHJ1Y3R1cmUgdG8gcnVuIHRoZSB0ZW1wbGF0ZWQgdGVzdCAtLT4KXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL3Rocm93aW5nLW9wdGlvbnMuYW55
LmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
L3BpcGluZy90aHJvd2luZy1vcHRpb25zLmFueS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYzFjZjMyOGRhNjFl
NjFhODRjYWEwMWEzNzQzNWJmOWZiYzQ2YjliCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy90aHJvd2lu
Zy1vcHRpb25zLmFueS5qcwpAQCAtMCwwICsxLDY1IEBACisvLyBNRVRBOiBnbG9iYWw9d2luZG93
LHdvcmtlcixqc3NoZWxsCisndXNlIHN0cmljdCc7CisKK2NsYXNzIFRocm93aW5nT3B0aW9ucyB7
CisgIGNvbnN0cnVjdG9yKHdoYXRTaG91bGRUaHJvdykgeworICAgIHRoaXMud2hhdFNob3VsZFRo
cm93ID0gd2hhdFNob3VsZFRocm93OworICAgIHRoaXMudG91Y2hlZCA9IFtdOworICB9CisKKyAg
Z2V0IHByZXZlbnRDbG9zZSgpIHsKKyAgICB0aGlzLm1heWJlVGhyb3coJ3ByZXZlbnRDbG9zZScp
OworICAgIHJldHVybiBmYWxzZTsKKyAgfQorCisgIGdldCBwcmV2ZW50QWJvcnQoKSB7CisgICAg
dGhpcy5tYXliZVRocm93KCdwcmV2ZW50QWJvcnQnKTsKKyAgICByZXR1cm4gZmFsc2U7CisgIH0K
KworICBnZXQgcHJldmVudENhbmNlbCgpIHsKKyAgICB0aGlzLm1heWJlVGhyb3coJ3ByZXZlbnRD
YW5jZWwnKTsKKyAgICByZXR1cm4gZmFsc2U7CisgIH0KKworICBnZXQgc2lnbmFsKCkgeworICAg
IHRoaXMubWF5YmVUaHJvdygnc2lnbmFsJyk7CisgICAgcmV0dXJuIHVuZGVmaW5lZDsKKyAgfQor
CisgIG1heWJlVGhyb3coZm9yV2hhdCkgeworICAgIHRoaXMudG91Y2hlZC5wdXNoKGZvcldoYXQp
OworICAgIGlmICh0aGlzLndoYXRTaG91bGRUaHJvdyA9PT0gZm9yV2hhdCkgeworICAgICAgdGhy
b3cgbmV3IEVycm9yKHRoaXMud2hhdFNob3VsZFRocm93KTsKKyAgICB9CisgIH0KK30KKworY29u
c3QgY2hlY2tPcmRlciA9IFsncHJldmVudEFib3J0JywgJ3ByZXZlbnRDYW5jZWwnLCAncHJldmVu
dENsb3NlJywgJ3NpZ25hbCddOworCitmb3IgKGxldCBpID0gMDsgaSA8IGNoZWNrT3JkZXIubGVu
Z3RoOyArK2kpIHsKKyAgY29uc3Qgd2hhdFNob3VsZFRocm93ID0gY2hlY2tPcmRlcltpXTsKKyAg
Y29uc3Qgd2hhdFNob3VsZEJlVG91Y2hlZCA9IGNoZWNrT3JkZXIuc2xpY2UoMCwgaSArIDEpOwor
CisgIHByb21pc2VfdGVzdCh0ID0+IHsKKyAgICBjb25zdCBvcHRpb25zID0gbmV3IFRocm93aW5n
T3B0aW9ucyh3aGF0U2hvdWxkVGhyb3cpOworICAgIHJldHVybiBwcm9taXNlX3JlamVjdHNfanMo
CisgICAgICAgICAgICAgICB0LCBFcnJvciwKKyAgICAgICAgICAgICAgIG5ldyBSZWFkYWJsZVN0
cmVhbSgpLnBpcGVUbyhuZXcgV3JpdGFibGVTdHJlYW0oKSwgb3B0aW9ucyksCisgICAgICAgICAg
ICAgICAncGlwZVRvIHNob3VsZCByZWplY3QnKQorICAgICAgICAudGhlbigoKSA9PiBhc3NlcnRf
YXJyYXlfZXF1YWxzKAorICAgICAgICAgICAgb3B0aW9ucy50b3VjaGVkLCB3aGF0U2hvdWxkQmVU
b3VjaGVkLAorICAgICAgICAgICAgJ29wdGlvbnMgc2hvdWxkIGJlIHRvdWNoZWQgaW4gdGhlIHJp
Z2h0IG9yZGVyJykpOworICB9LCBgcGlwZVRvIHNob3VsZCBzdG9wIGFmdGVyIGdldHRpbmcgJHt3
aGF0U2hvdWxkVGhyb3d9IHRocm93c2ApOworCisgIHRlc3QoKCkgPT4geworICAgIGNvbnN0IG9w
dGlvbnMgPSBuZXcgVGhyb3dpbmdPcHRpb25zKHdoYXRTaG91bGRUaHJvdyk7CisgICAgYXNzZXJ0
X3Rocm93c19qcygKKyAgICAgICAgRXJyb3IsCisgICAgICAgICgpID0+IG5ldyBSZWFkYWJsZVN0
cmVhbSgpLnBpcGVUaHJvdWdoKG5ldyBUcmFuc2Zvcm1TdHJlYW0oKSwgb3B0aW9ucyksCisgICAg
ICAgICdwaXBlVGhyb3VnaCBzaG91bGQgdGhyb3cnKTsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxz
KAorICAgICAgICBvcHRpb25zLnRvdWNoZWQsIHdoYXRTaG91bGRCZVRvdWNoZWQsCisgICAgICAg
ICdvcHRpb25zIHNob3VsZCBiZSB0b3VjaGVkIGluIHRoZSByaWdodCBvcmRlcicpOworICB9LCBg
cGlwZVRocm91Z2ggc2hvdWxkIHN0b3AgYWZ0ZXIgZ2V0dGluZyAke3doYXRTaG91bGRUaHJvd30g
dGhyb3dzYCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL3Rocm93aW5nLW9wdGlvbnMuYW55Lndvcmtlci1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMvcGlwaW5nL3Rocm93aW5nLW9wdGlvbnMuYW55Lndvcmtlci1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZTA1MjkwYTE2ZmFiOTJjZDUzZTc2MzI2N2RmZTI1N2NmNDkxNGFkNAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy9waXBpbmcvdGhyb3dpbmctb3B0aW9ucy5hbnkud29ya2VyLWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDE4IEBACisKK0ZBSUwgcGlwZVRvIHNob3VsZCBzdG9wIGFmdGVyIGdldHRp
bmcgcHJldmVudEFib3J0IHRocm93cyBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVh
bQorRkFJTCBwaXBlVGhyb3VnaCBzaG91bGQgc3RvcCBhZnRlciBnZXR0aW5nIHByZXZlbnRBYm9y
dCB0aHJvd3MgYXNzZXJ0X3Rocm93c19qczogcGlwZVRocm91Z2ggc2hvdWxkIHRocm93IGZ1bmN0
aW9uICIoKSA9PiBuZXcgUmVhZGFibGVTdHJlYW0oKS5waXBlVGhyb3VnaChuZXcgVHJhbnNmb3Jt
U3RyZWFtKCksIG9wdGlvbnMpIiB0aHJldyBvYmplY3QgIlJlZmVyZW5jZUVycm9yOiBDYW4ndCBm
aW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0iICgiUmVmZXJlbmNlRXJyb3IiKSBleHBlY3Rl
ZCBpbnN0YW5jZSBvZiBmdW5jdGlvbiAiZnVuY3Rpb24gRXJyb3IoKSB7CisgICAgW25hdGl2ZSBj
b2RlXQorfSIgKCJFcnJvciIpCitGQUlMIHBpcGVUbyBzaG91bGQgc3RvcCBhZnRlciBnZXR0aW5n
IHByZXZlbnRDYW5jZWwgdGhyb3dzIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFt
CitGQUlMIHBpcGVUaHJvdWdoIHNob3VsZCBzdG9wIGFmdGVyIGdldHRpbmcgcHJldmVudENhbmNl
bCB0aHJvd3MgYXNzZXJ0X3Rocm93c19qczogcGlwZVRocm91Z2ggc2hvdWxkIHRocm93IGZ1bmN0
aW9uICIoKSA9PiBuZXcgUmVhZGFibGVTdHJlYW0oKS5waXBlVGhyb3VnaChuZXcgVHJhbnNmb3Jt
U3RyZWFtKCksIG9wdGlvbnMpIiB0aHJldyBvYmplY3QgIlJlZmVyZW5jZUVycm9yOiBDYW4ndCBm
aW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0iICgiUmVmZXJlbmNlRXJyb3IiKSBleHBlY3Rl
ZCBpbnN0YW5jZSBvZiBmdW5jdGlvbiAiZnVuY3Rpb24gRXJyb3IoKSB7CisgICAgW25hdGl2ZSBj
b2RlXQorfSIgKCJFcnJvciIpCitGQUlMIHBpcGVUbyBzaG91bGQgc3RvcCBhZnRlciBnZXR0aW5n
IHByZXZlbnRDbG9zZSB0aHJvd3MgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0K
K0ZBSUwgcGlwZVRocm91Z2ggc2hvdWxkIHN0b3AgYWZ0ZXIgZ2V0dGluZyBwcmV2ZW50Q2xvc2Ug
dGhyb3dzIGFzc2VydF90aHJvd3NfanM6IHBpcGVUaHJvdWdoIHNob3VsZCB0aHJvdyBmdW5jdGlv
biAiKCkgPT4gbmV3IFJlYWRhYmxlU3RyZWFtKCkucGlwZVRocm91Z2gobmV3IFRyYW5zZm9ybVN0
cmVhbSgpLCBvcHRpb25zKSIgdGhyZXcgb2JqZWN0ICJSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmlu
ZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtIiAoIlJlZmVyZW5jZUVycm9yIikgZXhwZWN0ZWQg
aW5zdGFuY2Ugb2YgZnVuY3Rpb24gImZ1bmN0aW9uIEVycm9yKCkgeworICAgIFtuYXRpdmUgY29k
ZV0KK30iICgiRXJyb3IiKQorRkFJTCBwaXBlVG8gc2hvdWxkIHN0b3AgYWZ0ZXIgZ2V0dGluZyBz
aWduYWwgdGhyb3dzIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIHBp
cGVUaHJvdWdoIHNob3VsZCBzdG9wIGFmdGVyIGdldHRpbmcgc2lnbmFsIHRocm93cyBhc3NlcnRf
dGhyb3dzX2pzOiBwaXBlVGhyb3VnaCBzaG91bGQgdGhyb3cgZnVuY3Rpb24gIigpID0+IG5ldyBS
ZWFkYWJsZVN0cmVhbSgpLnBpcGVUaHJvdWdoKG5ldyBUcmFuc2Zvcm1TdHJlYW0oKSwgb3B0aW9u
cykiIHRocmV3IG9iamVjdCAiUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IFRy
YW5zZm9ybVN0cmVhbSIgKCJSZWZlcmVuY2VFcnJvciIpIGV4cGVjdGVkIGluc3RhbmNlIG9mIGZ1
bmN0aW9uICJmdW5jdGlvbiBFcnJvcigpIHsKKyAgICBbbmF0aXZlIGNvZGVdCit9IiAoIkVycm9y
IikKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL3BpcGluZy90aHJvd2luZy1vcHRpb25zLmFueS53b3JrZXIuaHRtbCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcv
dGhyb3dpbmctb3B0aW9ucy5hbnkud29ya2VyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjM4MjkxMzUyOGU2
OTNiM2E1ZDU2YzY2MGE0NTA2MDk4MGI1NDhjMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvdGhyb3dp
bmctb3B0aW9ucy5hbnkud29ya2VyLmh0bWwKQEAgLTAsMCArMSBAQAorPCEtLSBUaGlzIGZpbGUg
aXMgcmVxdWlyZWQgZm9yIFdlYktpdCB0ZXN0IGluZnJhc3RydWN0dXJlIHRvIHJ1biB0aGUgdGVt
cGxhdGVkIHRlc3QgLS0+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGlu
Zy90cmFuc2Zvcm0tc3RyZWFtcy5hbnktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy90cmFuc2Zvcm0tc3RyZWFt
cy5hbnktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM5YmYxMzJmODk1MDg1YWY0Zjk2ODYxMWYy
MWZjYTRhOWI0OTIxNGEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL3RyYW5zZm9ybS1zdHJlYW1zLmFu
eS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACisKK0ZBSUwgUGlwaW5nIHRocm91Z2ggYW4g
aWRlbnRpdHkgdHJhbnNmb3JtIHN0cmVhbSBzaG91bGQgY2xvc2UgdGhlIGRlc3RpbmF0aW9uIHdo
ZW4gdGhlIHNvdXJjZSBjbG9zZXMgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFt
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy9waXBpbmcvdHJhbnNmb3JtLXN0cmVhbXMuYW55Lmh0bWwgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL3RyYW5zZm9y
bS1zdHJlYW1zLmFueS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzODI5MTM1MjhlNjkzYjNhNWQ1NmM2NjBh
NDUwNjA5ODBiNTQ4YzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL3RyYW5zZm9ybS1zdHJlYW1zLmFu
eS5odG1sCkBAIC0wLDAgKzEgQEAKKzwhLS0gVGhpcyBmaWxlIGlzIHJlcXVpcmVkIGZvciBXZWJL
aXQgdGVzdCBpbmZyYXN0cnVjdHVyZSB0byBydW4gdGhlIHRlbXBsYXRlZCB0ZXN0IC0tPgpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvdHJhbnNmb3JtLXN0cmVhbXMu
YW55LmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJl
YW1zL3BpcGluZy90cmFuc2Zvcm0tc3RyZWFtcy5hbnkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTM2OGZlY2Q2
ZjAwZDZhMzhjODY1YjBiNmM1MjQxMWU3NjNhOGJiYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvdHJh
bnNmb3JtLXN0cmVhbXMuYW55LmpzCkBAIC0wLDAgKzEsMjIgQEAKKy8vIE1FVEE6IGdsb2JhbD13
aW5kb3csd29ya2VyLGpzc2hlbGwKKyd1c2Ugc3RyaWN0JzsKKworcHJvbWlzZV90ZXN0KCgpID0+
IHsKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAg
ICAgIGMuZW5xdWV1ZSgnYScpOworICAgICAgYy5lbnF1ZXVlKCdiJyk7CisgICAgICBjLmVucXVl
dWUoJ2MnKTsKKyAgICAgIGMuY2xvc2UoKTsKKyAgICB9CisgIH0pOworCisgIGNvbnN0IHRzID0g
bmV3IFRyYW5zZm9ybVN0cmVhbSgpOworCisgIGNvbnN0IHdzID0gbmV3IFdyaXRhYmxlU3RyZWFt
KCk7CisKKyAgcmV0dXJuIHJzLnBpcGVUaHJvdWdoKHRzKS5waXBlVG8od3MpLnRoZW4oKCkgPT4g
eworICAgIGNvbnN0IHdyaXRlciA9IHdzLmdldFdyaXRlcigpOworICAgIHJldHVybiB3cml0ZXIu
Y2xvc2VkOworICB9KTsKK30sICdQaXBpbmcgdGhyb3VnaCBhbiBpZGVudGl0eSB0cmFuc2Zvcm0g
c3RyZWFtIHNob3VsZCBjbG9zZSB0aGUgZGVzdGluYXRpb24gd2hlbiB0aGUgc291cmNlIGNsb3Nl
cycpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL3BpcGluZy90cmFuc2Zvcm0tc3RyZWFtcy5hbnkud29ya2VyLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy9waXBpbmcvdHJhbnNmb3JtLXN0cmVhbXMuYW55Lndvcmtlci1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMzliZjEzMmY4OTUwODVhZjRmOTY4NjExZjIxZmNhNGE5YjQ5MjE0YQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy9waXBpbmcvdHJhbnNmb3JtLXN0cmVhbXMuYW55Lndvcmtlci1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwzIEBACisKK0ZBSUwgUGlwaW5nIHRocm91Z2ggYW4gaWRlbnRpdHkgdHJhbnNmb3Jt
IHN0cmVhbSBzaG91bGQgY2xvc2UgdGhlIGRlc3RpbmF0aW9uIHdoZW4gdGhlIHNvdXJjZSBjbG9z
ZXMgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcv
dHJhbnNmb3JtLXN0cmVhbXMuYW55Lndvcmtlci5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy90cmFuc2Zvcm0tc3RyZWFtcy5h
bnkud29ya2VyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjM4MjkxMzUyOGU2OTNiM2E1ZDU2YzY2MGE0NTA2
MDk4MGI1NDhjMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvdHJhbnNmb3JtLXN0cmVhbXMuYW55Lndv
cmtlci5odG1sCkBAIC0wLDAgKzEgQEAKKzwhLS0gVGhpcyBmaWxlIGlzIHJlcXVpcmVkIGZvciBX
ZWJLaXQgdGVzdCBpbmZyYXN0cnVjdHVyZSB0byBydW4gdGhlIHRlbXBsYXRlZCB0ZXN0IC0tPgpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvdHJhbnNmb3JtLXN0cmVh
bXMuZGVkaWNhdGVkd29ya2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvdHJhbnNmb3JtLXN0cmVhbXMuZGVk
aWNhdGVkd29ya2VyLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MzliZjEzMmY4OTUwODVhZjRmOTY4NjExZjIxZmNhNGE5YjQ5MjE0YS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL3RyYW5zZm9ybS1zdHJlYW1zLmRlZGlj
YXRlZHdvcmtlci1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLQot
RkFJTCBQaXBpbmcgdGhyb3VnaCBhbiBpZGVudGl0eSB0cmFuc2Zvcm0gc3RyZWFtIHNob3VsZCBj
bG9zZSB0aGUgZGVzdGluYXRpb24gd2hlbiB0aGUgc291cmNlIGNsb3NlcyBDYW4ndCBmaW5kIHZh
cmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy90cmFuc2Zvcm0tc3RyZWFt
cy5kZWRpY2F0ZWR3b3JrZXIuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvdHJhbnNmb3JtLXN0cmVhbXMuZGVkaWNhdGVkd29y
a2VyLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM0ZjFiZmUyZGZkMjRkOGVm
YTIxNDlkMzE4ZjlmODEyOWVkZWI1ZmIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL3BpcGluZy90cmFuc2Zvcm0tc3RyZWFtcy5kZWRpY2F0ZWR3b3JrZXIuaHRtbAor
KysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hh
cnNldD0idXRmLTgiPgotPHRpdGxlPnRyYW5zZm9ybS1zdHJlYW1zLmpzIGRlZGljYXRlZCB3b3Jr
ZXIgd3JhcHBlciBmaWxlPC90aXRsZT4KLQotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhh
cm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3Ny
ZXBvcnQuanMiPjwvc2NyaXB0PgotCi08c2NyaXB0PgotJ3VzZSBzdHJpY3QnOwotZmV0Y2hfdGVz
dHNfZnJvbV93b3JrZXIobmV3IFdvcmtlcigndHJhbnNmb3JtLXN0cmVhbXMuanMnKSk7Ci08L3Nj
cmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy9waXBpbmcvdHJhbnNmb3JtLXN0cmVhbXMuaHRtbCBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvdHJhbnNmb3Jt
LXN0cmVhbXMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODIxNDYxOThiN2Rh
NWRhMDczOGU4OWNiYThlZDQ3ODMyMmJiMjcxNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMvcGlwaW5nL3RyYW5zZm9ybS1zdHJlYW1zLmh0bWwKKysrIC9kZXYvbnVs
bApAQCAtMSwxMCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04
Ij4KLTx0aXRsZT50cmFuc2Zvcm0tc3RyZWFtcy5qcyBicm93c2VyIGNvbnRleHQgd3JhcHBlciBm
aWxlPC90aXRsZT4KLQotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwv
c2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwv
c2NyaXB0PgotCi0KLQotPHNjcmlwdCBzcmM9InRyYW5zZm9ybS1zdHJlYW1zLmpzIj48L3Njcmlw
dD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy9waXBpbmcvdHJhbnNmb3JtLXN0cmVhbXMuanMgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL3RyYW5zZm9ybS1zdHJl
YW1zLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZjY4MDRhMjIyN2Q3YTJjMDU4
Njk3ODU0MzdhMDdlODNlYTllNDg3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy9waXBpbmcvdHJhbnNmb3JtLXN0cmVhbXMuanMKKysrIC9kZXYvbnVsbApAQCAtMSwy
NyArMCwwIEBACi0ndXNlIHN0cmljdCc7Ci0KLWlmIChzZWxmLmltcG9ydFNjcmlwdHMpIHsKLSAg
c2VsZi5pbXBvcnRTY3JpcHRzKCcvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzJyk7Ci19Ci0KLXBy
b21pc2VfdGVzdCgoKSA9PiB7Ci0gIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAg
ICBzdGFydChjKSB7Ci0gICAgICBjLmVucXVldWUoJ2EnKTsKLSAgICAgIGMuZW5xdWV1ZSgnYicp
OwotICAgICAgYy5lbnF1ZXVlKCdjJyk7Ci0gICAgICBjLmNsb3NlKCk7Ci0gICAgfQotICB9KTsK
LQotICBjb25zdCB0cyA9IG5ldyBUcmFuc2Zvcm1TdHJlYW0oKTsKLQotICBjb25zdCB3cyA9IG5l
dyBXcml0YWJsZVN0cmVhbSgpOwotCi0gIHJldHVybiBycy5waXBlVGhyb3VnaCh0cykucGlwZVRv
KHdzKS50aGVuKCgpID0+IHsKLSAgICBjb25zdCB3cml0ZXIgPSB3cy5nZXRXcml0ZXIoKTsKLSAg
ICByZXR1cm4gd3JpdGVyLmNsb3NlZDsKLSAgfSk7Ci19LCAnUGlwaW5nIHRocm91Z2ggYW4gaWRl
bnRpdHkgdHJhbnNmb3JtIHN0cmVhbSBzaG91bGQgY2xvc2UgdGhlIGRlc3RpbmF0aW9uIHdoZW4g
dGhlIHNvdXJjZSBjbG9zZXMnKTsKLQotZG9uZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy90cmFuc2Zvcm0t
c3RyZWFtcy5zZXJ2aWNld29ya2VyLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvdHJhbnNmb3JtLXN0
cmVhbXMuc2VydmljZXdvcmtlci5odHRwcy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDBhZDE4MzM5OGVjNDBkMDA2OGY3M2Q3OTkyMTg4YjEwZjEzMDU3YzMuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy90cmFuc2Zvcm0t
c3RyZWFtcy5zZXJ2aWNld29ya2VyLmh0dHBzLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBA
IC0xLDQgKzAsMCBAQAotCi1QQVNTIFNlcnZpY2Ugd29ya2VyIHRlc3Qgc2V0dXAgCi1GQUlMIFBp
cGluZyB0aHJvdWdoIGFuIGlkZW50aXR5IHRyYW5zZm9ybSBzdHJlYW0gc2hvdWxkIGNsb3NlIHRo
ZSBkZXN0aW5hdGlvbiB3aGVuIHRoZSBzb3VyY2UgY2xvc2VzIENhbid0IGZpbmQgdmFyaWFibGU6
IFRyYW5zZm9ybVN0cmVhbQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL3RyYW5zZm9ybS1zdHJlYW1zLnNlcnZp
Y2V3b3JrZXIuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvdHJhbnNmb3JtLXN0cmVhbXMuc2VydmljZXdvcmtlci5o
dHRwcy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZDgwNThlZjcwOTZiMWJk
ZWI1OWY2NDJkOTA0ZWZlNmI2YzliNjIzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy9waXBpbmcvdHJhbnNmb3JtLXN0cmVhbXMuc2VydmljZXdvcmtlci5odHRwcy5o
dG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08bWV0
YSBjaGFyc2V0PSJ1dGYtOCI+Ci08dGl0bGU+dHJhbnNmb3JtLXN0cmVhbXMuanMgc2VydmljZSB3
b3JrZXIgd3JhcHBlciBmaWxlPC90aXRsZT4KLQotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVz
dGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5l
c3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9zZXJ2aWNlLXdvcmtlcnMvc2Vy
dmljZS13b3JrZXIvcmVzb3VyY2VzL3Rlc3QtaGVscGVycy5zdWIuanMiPjwvc2NyaXB0PgotCi08
c2NyaXB0PgotJ3VzZSBzdHJpY3QnOwotc2VydmljZV93b3JrZXJfdGVzdCgndHJhbnNmb3JtLXN0
cmVhbXMuanMnLCAnU2VydmljZSB3b3JrZXIgdGVzdCBzZXR1cCcpOwotPC9zY3JpcHQ+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvcGlwaW5nL3RyYW5zZm9ybS1zdHJlYW1zLnNoYXJlZHdvcmtlci1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5n
L3RyYW5zZm9ybS1zdHJlYW1zLnNoYXJlZHdvcmtlci1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDA5ZDVkMjUwOWQ3ODQ3ZThjZDZmZTY2MDZhYTYwY2RkMzNhYTQ3
NGUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy90cmFu
c2Zvcm0tc3RyZWFtcy5zaGFyZWR3b3JrZXItZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAg
LTEsNSArMCwwIEBACi1DT05TT0xFIE1FU1NBR0U6IFJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5k
IHZhcmlhYmxlOiBTaGFyZWRXb3JrZXIKLQotSGFybmVzcyBFcnJvciAoRkFJTCksIG1lc3NhZ2Ug
PSBSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogU2hhcmVkV29ya2VyCi0KLQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
dHJlYW1zL3BpcGluZy90cmFuc2Zvcm0tc3RyZWFtcy5zaGFyZWR3b3JrZXIuaHRtbCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvdHJh
bnNmb3JtLXN0cmVhbXMuc2hhcmVkd29ya2VyLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDNmMzExOWIyNDNiOTE3N2EyZWViZWY4NmEzYTU0ZDIwYzUyZWUwZjQuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy90cmFuc2Zvcm0tc3RyZWFt
cy5zaGFyZWR3b3JrZXIuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLTwhRE9D
VFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHRpdGxlPnRyYW5zZm9ybS1zdHJl
YW1zLmpzIHNoYXJlZCB3b3JrZXIgd3JhcHBlciBmaWxlPC90aXRsZT4KLQotPHNjcmlwdCBzcmM9
Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9yZXNv
dXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotCi08c2NyaXB0PgotJ3VzZSBz
dHJpY3QnOwotZmV0Y2hfdGVzdHNfZnJvbV93b3JrZXIobmV3IFNoYXJlZFdvcmtlcigndHJhbnNm
b3JtLXN0cmVhbXMuanMnKSk7Ci08L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvdzNjLWltcG9ydC5s
b2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
cGlwaW5nL3czYy1pbXBvcnQubG9nCmluZGV4IDVjNDBhNDM3MjQ2ODkzZDg2MDBjNTE3ZTZhMDQ5
MDJmNTI4YTVlN2UuLmVhOTI3NTE5Mjg1MjRlMThhNjE1NDEyZTY4NWVhMzI3MGQ1ZDcwZmYgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy9waXBpbmcvdzNjLWltcG9ydC5sb2cKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy93M2MtaW1wb3J0LmxvZwpAQCAtMSw3
ICsxLDcgQEAKIFRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20g
dGhlIFczQyByZXBvc2l0b3J5LgogRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBp
biBXZWJLaXQuCiBJbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRo
dWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3czYy93ZWItcGxhdGZvcm0tdGVzdHMKKwlodHRwczov
L2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAogCiBUaGVuIHJ1biB0aGUgVG9vbHMv
U2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAogCkBAIC0xNCw0
OCArMTQsMTUgQEAgUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6CiBO
b25lCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KIExpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9jbG9zZS1wcm9wYWdhdGlv
bi1iYWNrd2FyZC5kZWRpY2F0ZWR3b3JrZXIuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvY2xvc2UtcHJvcGFnYXRpb24tYmFj
a3dhcmQuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy9waXBpbmcvY2xvc2UtcHJvcGFnYXRpb24tYmFja3dhcmQuanMKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Nsb3NlLXBy
b3BhZ2F0aW9uLWJhY2t3YXJkLnNlcnZpY2V3b3JrZXIuaHR0cHMuaHRtbAotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvY2xvc2UtcHJv
cGFnYXRpb24tYmFja3dhcmQuc2hhcmVkd29ya2VyLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Nsb3NlLXByb3BhZ2F0aW9u
LWZvcndhcmQuZGVkaWNhdGVkd29ya2VyLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Nsb3NlLXByb3BhZ2F0aW9uLWZvcndh
cmQuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy9waXBpbmcvY2xvc2UtcHJvcGFnYXRpb24tZm9yd2FyZC5qcwotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvY2xvc2UtcHJvcGFn
YXRpb24tZm9yd2FyZC5zZXJ2aWNld29ya2VyLmh0dHBzLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Nsb3NlLXByb3BhZ2F0
aW9uLWZvcndhcmQuc2hhcmVkd29ya2VyLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Vycm9yLXByb3BhZ2F0aW9uLWJhY2t3
YXJkLmRlZGljYXRlZHdvcmtlci5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9lcnJvci1wcm9wYWdhdGlvbi1iYWNrd2FyZC5o
dG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
L3BpcGluZy9lcnJvci1wcm9wYWdhdGlvbi1iYWNrd2FyZC5qcwotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvZXJyb3ItcHJvcGFnYXRp
b24tYmFja3dhcmQuc2VydmljZXdvcmtlci5odHRwcy5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9lcnJvci1wcm9wYWdhdGlv
bi1iYWNrd2FyZC5zaGFyZWR3b3JrZXIuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvZXJyb3ItcHJvcGFnYXRpb24tZm9yd2Fy
ZC5kZWRpY2F0ZWR3b3JrZXIuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvZXJyb3ItcHJvcGFnYXRpb24tZm9yd2FyZC5odG1s
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3Bp
cGluZy9lcnJvci1wcm9wYWdhdGlvbi1mb3J3YXJkLmpzCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9lcnJvci1wcm9wYWdhdGlvbi1m
b3J3YXJkLnNlcnZpY2V3b3JrZXIuaHR0cHMuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvZXJyb3ItcHJvcGFnYXRpb24tZm9y
d2FyZC5zaGFyZWR3b3JrZXIuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvZmxvdy1jb250cm9sLmRlZGljYXRlZHdvcmtlci5o
dG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
L3BpcGluZy9mbG93LWNvbnRyb2wuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvZmxvdy1jb250cm9sLmpzCi0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9mbG93LWNv
bnRyb2wuc2VydmljZXdvcmtlci5odHRwcy5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9mbG93LWNvbnRyb2wuc2hhcmVkd29y
a2VyLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMvcGlwaW5nL2dlbmVyYWwuZGVkaWNhdGVkd29ya2VyLmh0bWwKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2dlbmVyYWwuaHRt
bAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9w
aXBpbmcvZ2VuZXJhbC5qcwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy9waXBpbmcvZ2VuZXJhbC5zZXJ2aWNld29ya2VyLmh0dHBzLmh0bWwKLS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5n
L2dlbmVyYWwuc2hhcmVkd29ya2VyLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL211bHRpcGxlLXByb3BhZ2F0aW9uLmRlZGlj
YXRlZHdvcmtlci5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL3BpcGluZy9tdWx0aXBsZS1wcm9wYWdhdGlvbi5odG1sCi0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9tdWx0aXBs
ZS1wcm9wYWdhdGlvbi5qcwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy9waXBpbmcvbXVsdGlwbGUtcHJvcGFnYXRpb24uc2VydmljZXdvcmtlci5o
dHRwcy5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
dHJlYW1zL3BpcGluZy9tdWx0aXBsZS1wcm9wYWdhdGlvbi5zaGFyZWR3b3JrZXIuaHRtbAotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcv
cGlwZS10aHJvdWdoLmRlZGljYXRlZHdvcmtlci5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9waXBlLXRocm91Z2guaHRtbAot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBp
bmcvcGlwZS10aHJvdWdoLmpzCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zdHJlYW1zL3BpcGluZy9waXBlLXRocm91Z2guc2VydmljZXdvcmtlci5odHRwcy5o
dG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
L3BpcGluZy9waXBlLXRocm91Z2guc2hhcmVkd29ya2VyLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL3RyYW5zZm9ybS1zdHJl
YW1zLmRlZGljYXRlZHdvcmtlci5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy90cmFuc2Zvcm0tc3RyZWFtcy5odG1sCi0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy90
cmFuc2Zvcm0tc3RyZWFtcy5qcwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvdHJhbnNmb3JtLXN0cmVhbXMuc2VydmljZXdvcmtlci5o
dHRwcy5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
dHJlYW1zL3BpcGluZy90cmFuc2Zvcm0tc3RyZWFtcy5zaGFyZWR3b3JrZXIuaHRtbAorL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvYWJv
cnQuYW55LmpzCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
dHJlYW1zL3BpcGluZy9jbG9zZS1wcm9wYWdhdGlvbi1iYWNrd2FyZC5hbnkuanMKKy9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Nsb3Nl
LXByb3BhZ2F0aW9uLWZvcndhcmQuYW55LmpzCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9lcnJvci1wcm9wYWdhdGlvbi1iYWNrd2Fy
ZC5hbnkuanMKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMvcGlwaW5nL2Vycm9yLXByb3BhZ2F0aW9uLWZvcndhcmQuYW55LmpzCisvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9mbG93LWNv
bnRyb2wuYW55LmpzCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL3BpcGluZy9nZW5lcmFsLmFueS5qcworL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvbXVsdGlwbGUtcHJvcGFnYXRpb24u
YW55LmpzCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJl
YW1zL3BpcGluZy9waXBlLXRocm91Z2guYW55LmpzCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy90aGVuLWludGVyY2VwdGlvbi5hbnku
anMKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
cGlwaW5nL3Rocm93aW5nLW9wdGlvbnMuYW55LmpzCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy90cmFuc2Zvcm0tc3RyZWFtcy5hbnku
anMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy9xdWV1aW5nLXN0cmF0ZWdpZXMuYW55LWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9xdWV1aW5nLXN0cmF0
ZWdpZXMuYW55LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lODM3MmEzNGE2MjM5NDE0ODI3ZmFk
OTM4NjM1OGE1ZDIwNWIxMDRmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3F1ZXVpbmctc3RyYXRlZ2llcy5hbnkt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTggQEAKKworUEFTUyBDb3VudFF1ZXVpbmdTdHJhdGVn
eTogQ2FuIGNvbnN0cnVjdCBhIHdpdGggYSB2YWxpZCBoaWdoIHdhdGVyIG1hcmsgCitGQUlMIENv
dW50UXVldWluZ1N0cmF0ZWd5OiBDb25zdHJ1Y3RvciBiZWhhdmVzIGFzIGV4cGVjdGVkIHdpdGgg
c3RyYW5nZSBhcmd1bWVudHMgYXNzZXJ0X3Rocm93c19qczogY29uc3RydWN0aW9uIGZhaWxzIHdp
dGggdHJ1ZSBmdW5jdGlvbiAiKCkgPT4gbmV3IFF1ZXVpbmdTdHJhdGVneSh0cnVlKSIgZGlkIG5v
dCB0aHJvdworRkFJTCBDb3VudFF1ZXVpbmdTdHJhdGVneTogaGlnaFdhdGVyTWFyayBjb25zdHJ1
Y3RvciB2YWx1ZXMgYXJlIGNvbnZlcnRlZCBwZXIgdGhlIHVucmVzdHJpY3RlZCBkb3VibGUgcnVs
ZXMgYXNzZXJ0X2VxdWFsczogZmFsc2UgZ2V0cyBzZXQgY29ycmVjdGx5IGV4cGVjdGVkIChudW1i
ZXIpIDAgYnV0IGdvdCAoYm9vbGVhbikgZmFsc2UKK1BBU1MgQ291bnRRdWV1aW5nU3RyYXRlZ3k6
IHNpemUgaXMgdGhlIHNhbWUgZnVuY3Rpb24gYWNyb3NzIGFsbCBpbnN0YW5jZXMgCitQQVNTIENv
dW50UXVldWluZ1N0cmF0ZWd5OiBzaXplIHNob3VsZCBoYXZlIHRoZSByaWdodCBuYW1lIAorRkFJ
TCBDb3VudFF1ZXVpbmdTdHJhdGVneTogc3ViY2xhc3Npbmcgc2hvdWxkIHdvcmsgY29ycmVjdGx5
IGFzc2VydF9lcXVhbHM6IGNvbnN0cnVjdG9yLm5hbWUgc2hvdWxkIGJlIGNvcnJlY3QgZXhwZWN0
ZWQgIlN1YkNsYXNzIiBidXQgZ290ICJDb3VudFF1ZXVpbmdTdHJhdGVneSIKK1BBU1MgQnl0ZUxl
bmd0aFF1ZXVpbmdTdHJhdGVneTogQ2FuIGNvbnN0cnVjdCBhIHdpdGggYSB2YWxpZCBoaWdoIHdh
dGVyIG1hcmsgCitGQUlMIEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3k6IENvbnN0cnVjdG9yIGJl
aGF2ZXMgYXMgZXhwZWN0ZWQgd2l0aCBzdHJhbmdlIGFyZ3VtZW50cyBhc3NlcnRfdGhyb3dzX2pz
OiBjb25zdHJ1Y3Rpb24gZmFpbHMgd2l0aCB0cnVlIGZ1bmN0aW9uICIoKSA9PiBuZXcgUXVldWlu
Z1N0cmF0ZWd5KHRydWUpIiBkaWQgbm90IHRocm93CitGQUlMIEJ5dGVMZW5ndGhRdWV1aW5nU3Ry
YXRlZ3k6IGhpZ2hXYXRlck1hcmsgY29uc3RydWN0b3IgdmFsdWVzIGFyZSBjb252ZXJ0ZWQgcGVy
IHRoZSB1bnJlc3RyaWN0ZWQgZG91YmxlIHJ1bGVzIGFzc2VydF9lcXVhbHM6IGZhbHNlIGdldHMg
c2V0IGNvcnJlY3RseSBleHBlY3RlZCAobnVtYmVyKSAwIGJ1dCBnb3QgKGJvb2xlYW4pIGZhbHNl
CitQQVNTIEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3k6IHNpemUgaXMgdGhlIHNhbWUgZnVuY3Rp
b24gYWNyb3NzIGFsbCBpbnN0YW5jZXMgCitQQVNTIEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3k6
IHNpemUgc2hvdWxkIGhhdmUgdGhlIHJpZ2h0IG5hbWUgCitGQUlMIEJ5dGVMZW5ndGhRdWV1aW5n
U3RyYXRlZ3k6IHN1YmNsYXNzaW5nIHNob3VsZCB3b3JrIGNvcnJlY3RseSBhc3NlcnRfZXF1YWxz
OiBjb25zdHJ1Y3Rvci5uYW1lIHNob3VsZCBiZSBjb3JyZWN0IGV4cGVjdGVkICJTdWJDbGFzcyIg
YnV0IGdvdCAiQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneSIKK1BBU1MgQ291bnRRdWV1aW5nU3Ry
YXRlZ3k6IHNpemUgc2hvdWxkIGhhdmUgdGhlIHJpZ2h0IGxlbmd0aCAKK1BBU1MgQnl0ZUxlbmd0
aFF1ZXVpbmdTdHJhdGVneTogc2l6ZSBzaG91bGQgaGF2ZSB0aGUgcmlnaHQgbGVuZ3RoIAorUEFT
UyBDb3VudFF1ZXVpbmdTdHJhdGVneTogc2l6ZSBiZWhhdmVzIGFzIGV4cGVjdGVkIHdpdGggc3Ry
YW5nZSBhcmd1bWVudHMgCitQQVNTIEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3k6IHNpemUgYmVo
YXZlcyBhcyBleHBlY3RlZCB3aXRoIHN0cmFuZ2UgYXJndW1lbnRzIAorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcXVldWlu
Zy1zdHJhdGVnaWVzLmFueS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zL3F1ZXVpbmctc3RyYXRlZ2llcy5hbnkuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4yMzgyOTEzNTI4ZTY5M2IzYTVkNTZjNjYwYTQ1MDYwOTgwYjU0OGMzCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
L3F1ZXVpbmctc3RyYXRlZ2llcy5hbnkuaHRtbApAQCAtMCwwICsxIEBACis8IS0tIFRoaXMgZmls
ZSBpcyByZXF1aXJlZCBmb3IgV2ViS2l0IHRlc3QgaW5mcmFzdHJ1Y3R1cmUgdG8gcnVuIHRoZSB0
ZW1wbGF0ZWQgdGVzdCAtLT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcXVl
dWluZy1zdHJhdGVnaWVzLmFueS5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy9xdWV1aW5nLXN0cmF0ZWdpZXMuYW55LmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjE4NDZlYTYzZTM1NDU5ZjM1NTIzMDQyMWJiMDQyZTY3YmY1MTA1M2MKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
cXVldWluZy1zdHJhdGVnaWVzLmFueS5qcwpAQCAtMCwwICsxLDEzNSBAQAorLy8gTUVUQTogZ2xv
YmFsPXdpbmRvdyx3b3JrZXIsanNzaGVsbAorJ3VzZSBzdHJpY3QnOworCitjb25zdCBoaWdoV2F0
ZXJNYXJrQ29udmVyc2lvbnMgPSBuZXcgTWFwKFsKKyAgWy1JbmZpbml0eSwgLUluZmluaXR5XSwK
KyAgWy01LCAtNV0sCisgIFtmYWxzZSwgMF0sCisgIFt0cnVlLCAxXSwKKyAgW05hTiwgTmFOXSwK
KyAgWydmb28nLCBOYU5dLAorICBbJzAnLCAwXSwKKyAgW3t9LCBOYU5dLAorICBbKCkgPT4ge30s
IE5hTl0KK10pOworCitmb3IgKGNvbnN0IFF1ZXVpbmdTdHJhdGVneSBvZiBbQ291bnRRdWV1aW5n
U3RyYXRlZ3ksIEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3ldKSB7CisgIHRlc3QoKCkgPT4gewor
ICAgIG5ldyBRdWV1aW5nU3RyYXRlZ3koeyBoaWdoV2F0ZXJNYXJrOiA0IH0pOworICB9LCBgJHtR
dWV1aW5nU3RyYXRlZ3kubmFtZX06IENhbiBjb25zdHJ1Y3QgYSB3aXRoIGEgdmFsaWQgaGlnaCB3
YXRlciBtYXJrYCk7CisKKyAgdGVzdCgoKSA9PiB7CisgICAgY29uc3QgaGlnaFdhdGVyTWFyayA9
IDE7CisgICAgY29uc3QgaGlnaFdhdGVyTWFya09iamVjdEdldHRlciA9IHsKKyAgICAgIGdldCBo
aWdoV2F0ZXJNYXJrKCkgeyByZXR1cm4gaGlnaFdhdGVyTWFyazsgfQorICAgIH07CisgICAgY29u
c3QgZXJyb3IgPSBuZXcgRXJyb3IoJ3dvdyEnKTsKKyAgICBjb25zdCBoaWdoV2F0ZXJNYXJrT2Jq
ZWN0R2V0dGVyVGhyb3dpbmcgPSB7CisgICAgICBnZXQgaGlnaFdhdGVyTWFyaygpIHsgdGhyb3cg
ZXJyb3I7IH0KKyAgICB9OworCisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+
IG5ldyBRdWV1aW5nU3RyYXRlZ3koKSwgJ2NvbnN0cnVjdGlvbiBmYWlscyB3aXRoIHVuZGVmaW5l
ZCcpOworICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiBuZXcgUXVldWluZ1N0
cmF0ZWd5KG51bGwpLCAnY29uc3RydWN0aW9uIGZhaWxzIHdpdGggbnVsbCcpOworICAgIGFzc2Vy
dF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiBuZXcgUXVldWluZ1N0cmF0ZWd5KHRydWUpLCAn
Y29uc3RydWN0aW9uIGZhaWxzIHdpdGggdHJ1ZScpOworICAgIGFzc2VydF90aHJvd3NfanMoVHlw
ZUVycm9yLCAoKSA9PiBuZXcgUXVldWluZ1N0cmF0ZWd5KDUpLCAnY29uc3RydWN0aW9uIGZhaWxz
IHdpdGggNScpOworICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiBuZXcgUXVl
dWluZ1N0cmF0ZWd5KHt9KSwgJ2NvbnN0cnVjdGlvbiBmYWlscyB3aXRoIHt9Jyk7CisgICAgYXNz
ZXJ0X3Rocm93c19leGFjdGx5KGVycm9yLCAoKSA9PiBuZXcgUXVldWluZ1N0cmF0ZWd5KGhpZ2hX
YXRlck1hcmtPYmplY3RHZXR0ZXJUaHJvd2luZyksCisgICAgICAnY29uc3RydWN0aW9uIGZhaWxz
IHdpdGggYW4gb2JqZWN0IHdpdGggYSB0aHJvd2luZyBoaWdoV2F0ZXJNYXJrIGdldHRlcicpOwor
CisgICAgYXNzZXJ0X2VxdWFscygobmV3IFF1ZXVpbmdTdHJhdGVneShoaWdoV2F0ZXJNYXJrT2Jq
ZWN0R2V0dGVyKSkuaGlnaFdhdGVyTWFyaywgaGlnaFdhdGVyTWFyayk7CisgIH0sIGAke1F1ZXVp
bmdTdHJhdGVneS5uYW1lfTogQ29uc3RydWN0b3IgYmVoYXZlcyBhcyBleHBlY3RlZCB3aXRoIHN0
cmFuZ2UgYXJndW1lbnRzYCk7CisKKyAgdGVzdCgoKSA9PiB7CisgICAgZm9yIChjb25zdCBbaW5w
dXQsIG91dHB1dF0gb2YgaGlnaFdhdGVyTWFya0NvbnZlcnNpb25zLmVudHJpZXMoKSkgeworICAg
ICAgY29uc3Qgc3RyYXRlZ3kgPSBuZXcgUXVldWluZ1N0cmF0ZWd5KHsgaGlnaFdhdGVyTWFyazog
aW5wdXQgfSk7CisgICAgICBhc3NlcnRfZXF1YWxzKHN0cmF0ZWd5LmhpZ2hXYXRlck1hcmssIG91
dHB1dCwgYCR7aW5wdXR9IGdldHMgc2V0IGNvcnJlY3RseWApOworICAgIH0KKyAgfSwgYCR7UXVl
dWluZ1N0cmF0ZWd5Lm5hbWV9OiBoaWdoV2F0ZXJNYXJrIGNvbnN0cnVjdG9yIHZhbHVlcyBhcmUg
Y29udmVydGVkIHBlciB0aGUgdW5yZXN0cmljdGVkIGRvdWJsZSBydWxlc2ApOworCisgIHRlc3Qo
KCkgPT4geworICAgIGNvbnN0IHNpemUxID0gKG5ldyBRdWV1aW5nU3RyYXRlZ3koeyBoaWdoV2F0
ZXJNYXJrOiA1IH0pKS5zaXplOworICAgIGNvbnN0IHNpemUyID0gKG5ldyBRdWV1aW5nU3RyYXRl
Z3koeyBoaWdoV2F0ZXJNYXJrOiAxMCB9KSkuc2l6ZTsKKworICAgIGFzc2VydF9lcXVhbHMoc2l6
ZTEsIHNpemUyKTsKKyAgfSwgYCR7UXVldWluZ1N0cmF0ZWd5Lm5hbWV9OiBzaXplIGlzIHRoZSBz
YW1lIGZ1bmN0aW9uIGFjcm9zcyBhbGwgaW5zdGFuY2VzYCk7CisKKyAgdGVzdCgoKSA9PiB7Cisg
ICAgY29uc3Qgc2l6ZSA9IChuZXcgUXVldWluZ1N0cmF0ZWd5KHsgaGlnaFdhdGVyTWFyazogNSB9
KSkuc2l6ZTsKKyAgICBhc3NlcnRfZXF1YWxzKHNpemUubmFtZSwgJ3NpemUnKTsKKyAgfSwgYCR7
UXVldWluZ1N0cmF0ZWd5Lm5hbWV9OiBzaXplIHNob3VsZCBoYXZlIHRoZSByaWdodCBuYW1lYCk7
CisKKyAgdGVzdCgoKSA9PiB7CisgICAgY2xhc3MgU3ViQ2xhc3MgZXh0ZW5kcyBRdWV1aW5nU3Ry
YXRlZ3kgeworICAgICAgc2l6ZSgpIHsKKyAgICAgICAgcmV0dXJuIDI7CisgICAgICB9CisKKyAg
ICAgIHN1YkNsYXNzTWV0aG9kKCkgeworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICBjb25zdCBzYyA9IG5ldyBTdWJDbGFzcyh7IGhpZ2hXYXRlck1hcms6IDc3IH0p
OworICAgIGFzc2VydF9lcXVhbHMoc2MuY29uc3RydWN0b3IubmFtZSwgJ1N1YkNsYXNzJywgJ2Nv
bnN0cnVjdG9yLm5hbWUgc2hvdWxkIGJlIGNvcnJlY3QnKTsKKyAgICBhc3NlcnRfZXF1YWxzKHNj
LmhpZ2hXYXRlck1hcmssIDc3LCAnaGlnaFdhdGVyTWFyayBzaG91bGQgY29tZSBmcm9tIHRoZSBw
YXJlbnQgY2xhc3MnKTsKKyAgICBhc3NlcnRfZXF1YWxzKHNjLnNpemUoKSwgMiwgJ3NpemUoKSBv
biB0aGUgc3ViY2xhc3Mgc2hvdWxkIG92ZXJyaWRlIHRoZSBwYXJlbnQnKTsKKyAgICBhc3NlcnRf
dHJ1ZShzYy5zdWJDbGFzc01ldGhvZCgpLCAnc3ViQ2xhc3NNZXRob2QoKSBzaG91bGQgd29yaycp
OworICB9LCBgJHtRdWV1aW5nU3RyYXRlZ3kubmFtZX06IHN1YmNsYXNzaW5nIHNob3VsZCB3b3Jr
IGNvcnJlY3RseWApOworfQorCit0ZXN0KCgpID0+IHsKKyAgY29uc3Qgc2l6ZSA9IChuZXcgQ291
bnRRdWV1aW5nU3RyYXRlZ3koeyBoaWdoV2F0ZXJNYXJrOiA1IH0pKS5zaXplOworICBhc3NlcnRf
ZXF1YWxzKHNpemUubGVuZ3RoLCAwKTsKK30sICdDb3VudFF1ZXVpbmdTdHJhdGVneTogc2l6ZSBz
aG91bGQgaGF2ZSB0aGUgcmlnaHQgbGVuZ3RoJyk7CisKK3Rlc3QoKCkgPT4geworICBjb25zdCBz
aXplID0gKG5ldyBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5KHsgaGlnaFdhdGVyTWFyazogNSB9
KSkuc2l6ZTsKKyAgYXNzZXJ0X2VxdWFscyhzaXplLmxlbmd0aCwgMSk7Cit9LCAnQnl0ZUxlbmd0
aFF1ZXVpbmdTdHJhdGVneTogc2l6ZSBzaG91bGQgaGF2ZSB0aGUgcmlnaHQgbGVuZ3RoJyk7CisK
K3Rlc3QoKCkgPT4geworICBjb25zdCBzaXplID0gMTAyNDsKKyAgY29uc3QgY2h1bmsgPSB7IGJ5
dGVMZW5ndGg6IHNpemUgfTsKKyAgY29uc3QgY2h1bmtHZXR0ZXIgPSB7CisgICAgZ2V0IGJ5dGVM
ZW5ndGgoKSB7IHJldHVybiBzaXplOyB9CisgIH07CisgIGNvbnN0IGVycm9yID0gbmV3IEVycm9y
KCd3b3chJyk7CisgIGNvbnN0IGNodW5rR2V0dGVyVGhyb3dpbmcgPSB7CisgICAgZ2V0IGJ5dGVM
ZW5ndGgoKSB7IHRocm93IGVycm9yOyB9CisgIH07CisKKyAgY29uc3Qgc2l6ZUZ1bmN0aW9uID0g
KG5ldyBDb3VudFF1ZXVpbmdTdHJhdGVneSh7IGhpZ2hXYXRlck1hcms6IDUgfSkpLnNpemU7CisK
KyAgYXNzZXJ0X2VxdWFscyhzaXplRnVuY3Rpb24oKSwgMSwgJ3NpemUgcmV0dXJucyAxIHdpdGgg
dW5kZWZpbmVkJyk7CisgIGFzc2VydF9lcXVhbHMoc2l6ZUZ1bmN0aW9uKG51bGwpLCAxLCAnc2l6
ZSByZXR1cm5zIDEgd2l0aCBudWxsJyk7CisgIGFzc2VydF9lcXVhbHMoc2l6ZUZ1bmN0aW9uKCdw
b3RhdG8nKSwgMSwgJ3NpemUgcmV0dXJucyAxIHdpdGggbm9uLW9iamVjdCB0eXBlJyk7CisgIGFz
c2VydF9lcXVhbHMoc2l6ZUZ1bmN0aW9uKHt9KSwgMSwgJ3NpemUgcmV0dXJucyAxIHdpdGggZW1w
dHkgb2JqZWN0Jyk7CisgIGFzc2VydF9lcXVhbHMoc2l6ZUZ1bmN0aW9uKGNodW5rKSwgMSwgJ3Np
emUgcmV0dXJucyAxIHdpdGggYSBjaHVuaycpOworICBhc3NlcnRfZXF1YWxzKHNpemVGdW5jdGlv
bihjaHVua0dldHRlciksIDEsICdzaXplIHJldHVybnMgMSB3aXRoIGNodW5rIGdldHRlcicpOwor
ICBhc3NlcnRfZXF1YWxzKHNpemVGdW5jdGlvbihjaHVua0dldHRlclRocm93aW5nKSwgMSwKKyAg
ICAnc2l6ZSByZXR1cm5zIDEgd2l0aCBjaHVuayBnZXR0ZXIgdGhhdCB0aHJvd3MnKTsKK30sICdD
b3VudFF1ZXVpbmdTdHJhdGVneTogc2l6ZSBiZWhhdmVzIGFzIGV4cGVjdGVkIHdpdGggc3RyYW5n
ZSBhcmd1bWVudHMnKTsKKwordGVzdCgoKSA9PiB7CisgIGNvbnN0IHNpemUgPSAxMDI0OworICBj
b25zdCBjaHVuayA9IHsgYnl0ZUxlbmd0aDogc2l6ZSB9OworICBjb25zdCBjaHVua0dldHRlciA9
IHsKKyAgICBnZXQgYnl0ZUxlbmd0aCgpIHsgcmV0dXJuIHNpemU7IH0KKyAgfTsKKyAgY29uc3Qg
ZXJyb3IgPSBuZXcgRXJyb3IoJ3dvdyEnKTsKKyAgY29uc3QgY2h1bmtHZXR0ZXJUaHJvd2luZyA9
IHsKKyAgICBnZXQgYnl0ZUxlbmd0aCgpIHsgdGhyb3cgZXJyb3I7IH0KKyAgfTsKKworICBjb25z
dCBzaXplRnVuY3Rpb24gPSAobmV3IEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3koeyBoaWdoV2F0
ZXJNYXJrOiA1IH0pKS5zaXplOworCisgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9
PiBzaXplRnVuY3Rpb24oKSwgJ3NpemUgZmFpbHMgd2l0aCB1bmRlZmluZWQnKTsKKyAgYXNzZXJ0
X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IHNpemVGdW5jdGlvbihudWxsKSwgJ3NpemUgZmFp
bHMgd2l0aCBudWxsJyk7CisgIGFzc2VydF9lcXVhbHMoc2l6ZUZ1bmN0aW9uKCdwb3RhdG8nKSwg
dW5kZWZpbmVkLCAnc2l6ZSBzdWNjZWVkcyB3aXRoIHVuZGVmaW5lZCB3aXRoIGEgcmFuZG9tIG5v
bi1vYmplY3QgdHlwZScpOworICBhc3NlcnRfZXF1YWxzKHNpemVGdW5jdGlvbih7fSksIHVuZGVm
aW5lZCwgJ3NpemUgc3VjY2VlZHMgd2l0aCB1bmRlZmluZWQgd2l0aCBhbiBvYmplY3Qgd2l0aG91
dCBod20gcHJvcGVydHknKTsKKyAgYXNzZXJ0X2VxdWFscyhzaXplRnVuY3Rpb24oY2h1bmspLCBz
aXplLCAnc2l6ZSBzdWNjZWVkcyB3aXRoIHRoZSByaWdodCBhbW91bnQgd2l0aCBhbiBvYmplY3Qg
d2l0aCBhIGh3bScpOworICBhc3NlcnRfZXF1YWxzKHNpemVGdW5jdGlvbihjaHVua0dldHRlciks
IHNpemUsCisgICAgJ3NpemUgc3VjY2VlZHMgd2l0aCB0aGUgcmlnaHQgYW1vdW50IHdpdGggYW4g
b2JqZWN0IHdpdGggYSBod20gZ2V0dGVyJyk7CisgIGFzc2VydF90aHJvd3NfZXhhY3RseShlcnJv
ciwgKCkgPT4gc2l6ZUZ1bmN0aW9uKGNodW5rR2V0dGVyVGhyb3dpbmcpLAorICAgICdzaXplIGZh
aWxzIHdpdGggdGhlIGVycm9yIHRocm93biBieSB0aGUgZ2V0dGVyJyk7Cit9LCAnQnl0ZUxlbmd0
aFF1ZXVpbmdTdHJhdGVneTogc2l6ZSBiZWhhdmVzIGFzIGV4cGVjdGVkIHdpdGggc3RyYW5nZSBh
cmd1bWVudHMnKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy9xdWV1aW5nLXN0cmF0ZWdpZXMuYW55Lndvcmtlci1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvcXVldWluZy1zdHJhdGVnaWVzLmFueS53b3JrZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmU4MzcyYTM0YTYyMzk0MTQ4MjdmYWQ5Mzg2MzU4YTVkMjA1YjEwNGYKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
cXVldWluZy1zdHJhdGVnaWVzLmFueS53b3JrZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTgg
QEAKKworUEFTUyBDb3VudFF1ZXVpbmdTdHJhdGVneTogQ2FuIGNvbnN0cnVjdCBhIHdpdGggYSB2
YWxpZCBoaWdoIHdhdGVyIG1hcmsgCitGQUlMIENvdW50UXVldWluZ1N0cmF0ZWd5OiBDb25zdHJ1
Y3RvciBiZWhhdmVzIGFzIGV4cGVjdGVkIHdpdGggc3RyYW5nZSBhcmd1bWVudHMgYXNzZXJ0X3Ro
cm93c19qczogY29uc3RydWN0aW9uIGZhaWxzIHdpdGggdHJ1ZSBmdW5jdGlvbiAiKCkgPT4gbmV3
IFF1ZXVpbmdTdHJhdGVneSh0cnVlKSIgZGlkIG5vdCB0aHJvdworRkFJTCBDb3VudFF1ZXVpbmdT
dHJhdGVneTogaGlnaFdhdGVyTWFyayBjb25zdHJ1Y3RvciB2YWx1ZXMgYXJlIGNvbnZlcnRlZCBw
ZXIgdGhlIHVucmVzdHJpY3RlZCBkb3VibGUgcnVsZXMgYXNzZXJ0X2VxdWFsczogZmFsc2UgZ2V0
cyBzZXQgY29ycmVjdGx5IGV4cGVjdGVkIChudW1iZXIpIDAgYnV0IGdvdCAoYm9vbGVhbikgZmFs
c2UKK1BBU1MgQ291bnRRdWV1aW5nU3RyYXRlZ3k6IHNpemUgaXMgdGhlIHNhbWUgZnVuY3Rpb24g
YWNyb3NzIGFsbCBpbnN0YW5jZXMgCitQQVNTIENvdW50UXVldWluZ1N0cmF0ZWd5OiBzaXplIHNo
b3VsZCBoYXZlIHRoZSByaWdodCBuYW1lIAorRkFJTCBDb3VudFF1ZXVpbmdTdHJhdGVneTogc3Vi
Y2xhc3Npbmcgc2hvdWxkIHdvcmsgY29ycmVjdGx5IGFzc2VydF9lcXVhbHM6IGNvbnN0cnVjdG9y
Lm5hbWUgc2hvdWxkIGJlIGNvcnJlY3QgZXhwZWN0ZWQgIlN1YkNsYXNzIiBidXQgZ290ICJDb3Vu
dFF1ZXVpbmdTdHJhdGVneSIKK1BBU1MgQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneTogQ2FuIGNv
bnN0cnVjdCBhIHdpdGggYSB2YWxpZCBoaWdoIHdhdGVyIG1hcmsgCitGQUlMIEJ5dGVMZW5ndGhR
dWV1aW5nU3RyYXRlZ3k6IENvbnN0cnVjdG9yIGJlaGF2ZXMgYXMgZXhwZWN0ZWQgd2l0aCBzdHJh
bmdlIGFyZ3VtZW50cyBhc3NlcnRfdGhyb3dzX2pzOiBjb25zdHJ1Y3Rpb24gZmFpbHMgd2l0aCB0
cnVlIGZ1bmN0aW9uICIoKSA9PiBuZXcgUXVldWluZ1N0cmF0ZWd5KHRydWUpIiBkaWQgbm90IHRo
cm93CitGQUlMIEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3k6IGhpZ2hXYXRlck1hcmsgY29uc3Ry
dWN0b3IgdmFsdWVzIGFyZSBjb252ZXJ0ZWQgcGVyIHRoZSB1bnJlc3RyaWN0ZWQgZG91YmxlIHJ1
bGVzIGFzc2VydF9lcXVhbHM6IGZhbHNlIGdldHMgc2V0IGNvcnJlY3RseSBleHBlY3RlZCAobnVt
YmVyKSAwIGJ1dCBnb3QgKGJvb2xlYW4pIGZhbHNlCitQQVNTIEJ5dGVMZW5ndGhRdWV1aW5nU3Ry
YXRlZ3k6IHNpemUgaXMgdGhlIHNhbWUgZnVuY3Rpb24gYWNyb3NzIGFsbCBpbnN0YW5jZXMgCitQ
QVNTIEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3k6IHNpemUgc2hvdWxkIGhhdmUgdGhlIHJpZ2h0
IG5hbWUgCitGQUlMIEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3k6IHN1YmNsYXNzaW5nIHNob3Vs
ZCB3b3JrIGNvcnJlY3RseSBhc3NlcnRfZXF1YWxzOiBjb25zdHJ1Y3Rvci5uYW1lIHNob3VsZCBi
ZSBjb3JyZWN0IGV4cGVjdGVkICJTdWJDbGFzcyIgYnV0IGdvdCAiQnl0ZUxlbmd0aFF1ZXVpbmdT
dHJhdGVneSIKK1BBU1MgQ291bnRRdWV1aW5nU3RyYXRlZ3k6IHNpemUgc2hvdWxkIGhhdmUgdGhl
IHJpZ2h0IGxlbmd0aCAKK1BBU1MgQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneTogc2l6ZSBzaG91
bGQgaGF2ZSB0aGUgcmlnaHQgbGVuZ3RoIAorUEFTUyBDb3VudFF1ZXVpbmdTdHJhdGVneTogc2l6
ZSBiZWhhdmVzIGFzIGV4cGVjdGVkIHdpdGggc3RyYW5nZSBhcmd1bWVudHMgCitQQVNTIEJ5dGVM
ZW5ndGhRdWV1aW5nU3RyYXRlZ3k6IHNpemUgYmVoYXZlcyBhcyBleHBlY3RlZCB3aXRoIHN0cmFu
Z2UgYXJndW1lbnRzIAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcXVldWluZy1zdHJhdGVnaWVzLmFueS53b3JrZXIuaHRt
bCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9x
dWV1aW5nLXN0cmF0ZWdpZXMuYW55Lndvcmtlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzODI5MTM1Mjhl
NjkzYjNhNWQ1NmM2NjBhNDUwNjA5ODBiNTQ4YzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcXVldWluZy1zdHJh
dGVnaWVzLmFueS53b3JrZXIuaHRtbApAQCAtMCwwICsxIEBACis8IS0tIFRoaXMgZmlsZSBpcyBy
ZXF1aXJlZCBmb3IgV2ViS2l0IHRlc3QgaW5mcmFzdHJ1Y3R1cmUgdG8gcnVuIHRoZSB0ZW1wbGF0
ZWQgdGVzdCAtLT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUt
Ynl0ZS1zdHJlYW1zL2JhZC1idWZmZXJzLWFuZC12aWV3cy5hbnktZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxl
LWJ5dGUtc3RyZWFtcy9iYWQtYnVmZmVycy1hbmQtdmlld3MuYW55LWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5lNGFkN2Q4ZDljODcyMWQ2YThlOGNlZWU0YjlhN2UxZDYwMGZlNWM4Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
dHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFtcy9iYWQtYnVmZmVycy1hbmQtdmlld3MuYW55LWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDMwIEBACisKK0hhcm5lc3MgRXJyb3IgKFRJTUVPVVQpLCBt
ZXNzYWdlID0gbnVsbAorCitGQUlMIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IHJl
YWQoKWluZyBmcm9tIGEgY2xvc2VkIHN0cmVhbSBzdGlsbCB0cmFuc2ZlcnMgdGhlIGJ1ZmZlciBh
c3NlcnRfbm90X2VxdWFsczogYSBkaWZmZXJlbnQgQXJyYXlCdWZmZXIgbXVzdCB1bmRlcmxpZSB0
aGUgdmFsdWUgZ290IGRpc2FsbG93ZWQgdmFsdWUgb2JqZWN0ICJbb2JqZWN0IEFycmF5QnVmZmVy
XSIKK0ZBSUwgUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogcmVhZCgpaW5nIGZyb20g
YSBzdHJlYW0gd2l0aCBxdWV1ZWQgY2h1bmtzIHN0aWxsIHRyYW5zZmVycyB0aGUgYnVmZmVyIGFz
c2VydF9ub3RfZXF1YWxzOiBhIGRpZmZlcmVudCBBcnJheUJ1ZmZlciBtdXN0IHVuZGVybGllIHRo
ZSB2YWx1ZSBnb3QgZGlzYWxsb3dlZCB2YWx1ZSBvYmplY3QgIltvYmplY3QgQXJyYXlCdWZmZXJd
IgorRkFJTCBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBlbnF1ZXVpbmcgYW4gYWxy
ZWFkeS1kZXRhY2hlZCBidWZmZXIgdGhyb3dzIGFzc2VydF90aHJvd3NfanM6IGZ1bmN0aW9uICIo
KSA9PiBjLmVucXVldWUodmlldykiIGRpZCBub3QgdGhyb3cKK0ZBSUwgUmVhZGFibGVTdHJlYW0g
d2l0aCBieXRlIHNvdXJjZTogZW5xdWV1aW5nIGEgemVyby1sZW5ndGggYnVmZmVyIHRocm93cyBh
c3NlcnRfdGhyb3dzX2pzOiBmdW5jdGlvbiAiKCkgPT4gYy5lbnF1ZXVlKHZpZXcpIiBkaWQgbm90
IHRocm93CitGQUlMIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IGVucXVldWluZyBh
IHplcm8tbGVuZ3RoIHZpZXcgb24gYSBub24temVyby1sZW5ndGggYnVmZmVyIHRocm93cyBhc3Nl
cnRfdGhyb3dzX2pzOiBmdW5jdGlvbiAiKCkgPT4gYy5lbnF1ZXVlKHZpZXcpIiBkaWQgbm90IHRo
cm93CitUSU1FT1VUIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IHJlYWRpbmcgaW50
byBhbiBhbHJlYWR5LWRldGFjaGVkIGJ1ZmZlciByZWplY3RzIFRlc3QgdGltZWQgb3V0CitOT1RS
VU4gUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogcmVhZGluZyBpbnRvIGEgemVyby1s
ZW5ndGggYnVmZmVyIHJlamVjdHMgCitOT1RSVU4gUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNv
dXJjZTogcmVhZGluZyBpbnRvIGEgemVyby1sZW5ndGggdmlldyBvbiBhIG5vbi16ZXJvLWxlbmd0
aCBidWZmZXIgcmVqZWN0cyAKK0ZBSUwgUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTog
cmVzcG9uZCgpIHRocm93cyBpZiB0aGUgQllPQiByZXF1ZXN0J3MgYnVmZmVyIGhhcyBiZWVuIGRl
dGFjaGVkIChpbiB0aGUgcmVhZGFibGUgc3RhdGUpIGFzc2VydF90aHJvd3NfanM6IHJlc3BvbmQo
KSBtdXN0IHRocm93IGlmIHRoZSBjb3JyZXNwb25kaW5nIHZpZXcgaGFzIGJlY29tZSBkZXRhY2hl
ZCBmdW5jdGlvbiAiKCkgPT4gYy5ieW9iUmVxdWVzdC5yZXNwb25kKDEpIiBkaWQgbm90IHRocm93
CitGQUlMIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IHJlc3BvbmQoKSB0aHJvd3Mg
aWYgdGhlIEJZT0IgcmVxdWVzdCdzIGJ1ZmZlciBoYXMgYmVlbiBkZXRhY2hlZCAoaW4gdGhlIGNs
b3NlZCBzdGF0ZSkgYXNzZXJ0X3Rocm93c19qczogcmVzcG9uZCgpIG11c3QgdGhyb3cgaWYgdGhl
IGNvcnJlc3BvbmRpbmcgdmlldyBoYXMgYmVjb21lIGRldGFjaGVkIGZ1bmN0aW9uICIoKSA9PiBj
LmJ5b2JSZXF1ZXN0LnJlc3BvbmQoMCkiIGRpZCBub3QgdGhyb3cKK0ZBSUwgUmVhZGFibGVTdHJl
YW0gd2l0aCBieXRlIHNvdXJjZTogcmVzcG9uZFdpdGhOZXdWaWV3KCkgdGhyb3dzIGlmIHRoZSBz
dXBwbGllZCB2aWV3J3MgYnVmZmVyIGhhcyBiZWVuIGRldGFjaGVkIChpbiB0aGUgcmVhZGFibGUg
c3RhdGUpIGFzc2VydF90aHJvd3NfanM6IGZ1bmN0aW9uICIoKSA9PiBjLmJ5b2JSZXF1ZXN0LnJl
c3BvbmRXaXRoTmV3Vmlldyh2aWV3KSIgZGlkIG5vdCB0aHJvdworRkFJTCBSZWFkYWJsZVN0cmVh
bSB3aXRoIGJ5dGUgc291cmNlOiByZXNwb25kV2l0aE5ld1ZpZXcoKSB0aHJvd3MgaWYgdGhlIHN1
cHBsaWVkIHZpZXcncyBidWZmZXIgaXMgemVyby1sZW5ndGggKGluIHRoZSByZWFkYWJsZSBzdGF0
ZSkgYXNzZXJ0X3Rocm93c19qczogZnVuY3Rpb24gIigpID0+IGMuYnlvYlJlcXVlc3QucmVzcG9u
ZFdpdGhOZXdWaWV3KHZpZXcpIiB0aHJldyBvYmplY3QgIlJhbmdlRXJyb3I6IEludmFsaWQgdmFs
dWUgZm9yIHZpZXcuYnl0ZUxlbmd0aCIgKCJSYW5nZUVycm9yIikgZXhwZWN0ZWQgaW5zdGFuY2Ug
b2YgZnVuY3Rpb24gImZ1bmN0aW9uIFR5cGVFcnJvcigpIHsKKyAgICBbbmF0aXZlIGNvZGVdCit9
IiAoIlR5cGVFcnJvciIpCitGQUlMIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IHJl
c3BvbmRXaXRoTmV3VmlldygpIHRocm93cyBpZiB0aGUgc3VwcGxpZWQgdmlldyBpcyB6ZXJvLWxl
bmd0aCBvbiBhIG5vbi16ZXJvLWxlbmd0aCBidWZmZXIgKGluIHRoZSByZWFkYWJsZSBzdGF0ZSkg
YXNzZXJ0X3Rocm93c19qczogZnVuY3Rpb24gIigpID0+IGMuYnlvYlJlcXVlc3QucmVzcG9uZFdp
dGhOZXdWaWV3KHZpZXcpIiB0aHJldyBvYmplY3QgIlJhbmdlRXJyb3I6IEludmFsaWQgdmFsdWUg
Zm9yIHZpZXcuYnl0ZUxlbmd0aCIgKCJSYW5nZUVycm9yIikgZXhwZWN0ZWQgaW5zdGFuY2Ugb2Yg
ZnVuY3Rpb24gImZ1bmN0aW9uIFR5cGVFcnJvcigpIHsKKyAgICBbbmF0aXZlIGNvZGVdCit9IiAo
IlR5cGVFcnJvciIpCitGQUlMIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IHJlc3Bv
bmRXaXRoTmV3VmlldygpIHRocm93cyBpZiB0aGUgc3VwcGxpZWQgdmlldydzIGJ1ZmZlciBoYXMg
YmVlbiBkZXRhY2hlZCAoaW4gdGhlIGNsb3NlZCBzdGF0ZSkgYXNzZXJ0X3Rocm93c19qczogZnVu
Y3Rpb24gIigpID0+IGMuYnlvYlJlcXVlc3QucmVzcG9uZFdpdGhOZXdWaWV3KHplcm9MZW5ndGhW
aWV3KSIgdGhyZXcgb2JqZWN0ICJSYW5nZUVycm9yOiBJbnZhbGlkIHZhbHVlIGZvciB2aWV3LmJ5
dGVMZW5ndGgiICgiUmFuZ2VFcnJvciIpIGV4cGVjdGVkIGluc3RhbmNlIG9mIGZ1bmN0aW9uICJm
dW5jdGlvbiBUeXBlRXJyb3IoKSB7CisgICAgW25hdGl2ZSBjb2RlXQorfSIgKCJUeXBlRXJyb3Ii
KQorRkFJTCBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiByZXNwb25kV2l0aE5ld1Zp
ZXcoKSB0aHJvd3MgaWYgdGhlIHN1cHBsaWVkIHZpZXcncyBidWZmZXIgaXMgemVyby1sZW5ndGgg
KGluIHRoZSBjbG9zZWQgc3RhdGUpIGFzc2VydF90aHJvd3NfanM6IGZ1bmN0aW9uICIoKSA9PiBj
LmJ5b2JSZXF1ZXN0LnJlc3BvbmRXaXRoTmV3Vmlldyh2aWV3KSIgdGhyZXcgb2JqZWN0ICJSYW5n
ZUVycm9yOiBJbnZhbGlkIHZhbHVlIGZvciB2aWV3LmJ5dGVMZW5ndGgiICgiUmFuZ2VFcnJvciIp
IGV4cGVjdGVkIGluc3RhbmNlIG9mIGZ1bmN0aW9uICJmdW5jdGlvbiBUeXBlRXJyb3IoKSB7Cisg
ICAgW25hdGl2ZSBjb2RlXQorfSIgKCJUeXBlRXJyb3IiKQorRkFJTCBSZWFkYWJsZVN0cmVhbSB3
aXRoIGJ5dGUgc291cmNlOiByZXNwb25kV2l0aE5ld1ZpZXcoKSB0aHJvd3MgaWYgdGhlIHN1cHBs
aWVkIHZpZXcgaXMgemVyby1sZW5ndGggb24gYSBub24temVyby1sZW5ndGggYnVmZmVyIChpbiB0
aGUgY2xvc2VkIHN0YXRlKSBhc3NlcnRfdGhyb3dzX2pzOiBmdW5jdGlvbiAiKCkgPT4gYy5ieW9i
UmVxdWVzdC5yZXNwb25kV2l0aE5ld1ZpZXcodmlldykiIHRocmV3IG9iamVjdCAiUmFuZ2VFcnJv
cjogSW52YWxpZCB2YWx1ZSBmb3Igdmlldy5ieXRlTGVuZ3RoIiAoIlJhbmdlRXJyb3IiKSBleHBl
Y3RlZCBpbnN0YW5jZSBvZiBmdW5jdGlvbiAiZnVuY3Rpb24gVHlwZUVycm9yKCkgeworICAgIFtu
YXRpdmUgY29kZV0KK30iICgiVHlwZUVycm9yIikKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3Ry
ZWFtcy9iYWQtYnVmZmVycy1hbmQtdmlld3MuYW55Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL2Jh
ZC1idWZmZXJzLWFuZC12aWV3cy5hbnkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMzgyOTEzNTI4ZTY5M2Iz
YTVkNTZjNjYwYTQ1MDYwOTgwYjU0OGMzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3Ry
ZWFtcy9iYWQtYnVmZmVycy1hbmQtdmlld3MuYW55Lmh0bWwKQEAgLTAsMCArMSBAQAorPCEtLSBU
aGlzIGZpbGUgaXMgcmVxdWlyZWQgZm9yIFdlYktpdCB0ZXN0IGluZnJhc3RydWN0dXJlIHRvIHJ1
biB0aGUgdGVtcGxhdGVkIHRlc3QgLS0+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJl
YW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFtcy9iYWQtYnVmZmVycy1hbmQtdmlld3MuYW55LmpzIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRh
YmxlLWJ5dGUtc3RyZWFtcy9iYWQtYnVmZmVycy1hbmQtdmlld3MuYW55LmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjA3NzcyMDhkYTQ0YjI5YjgyMmJmOTM0NWRiZTIwZTMzYmI1NzA4YjkKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
cmVhZGFibGUtYnl0ZS1zdHJlYW1zL2JhZC1idWZmZXJzLWFuZC12aWV3cy5hbnkuanMKQEAgLTAs
MCArMSwyNTggQEAKKy8vIE1FVEE6IGdsb2JhbD13aW5kb3csd29ya2VyLGpzc2hlbGwKKyd1c2Ug
c3RyaWN0JzsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgY29uc3Qgc3RyZWFtID0gbmV3IFJl
YWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjLmNsb3NlKCk7CisgICAgfSwK
KyAgICB0eXBlOiAnYnl0ZXMnCisgIH0pOworCisgIGNvbnN0IHJlYWRlciA9IHN0cmVhbS5nZXRS
ZWFkZXIoeyBtb2RlOiAnYnlvYicgfSk7CisgIGNvbnN0IHZpZXcgPSBuZXcgVWludDhBcnJheShb
MSwgMiwgM10pOworICByZXR1cm4gcmVhZGVyLnJlYWQodmlldykudGhlbigoeyB2YWx1ZSwgZG9u
ZSB9KSA9PiB7CisgICAgLy8gU2FuaXR5IGNoZWNrcworICAgIGFzc2VydF90cnVlKHZhbHVlIGlu
c3RhbmNlb2YgVWludDhBcnJheSwgJ1RoZSB2YWx1ZSByZWFkIG11c3QgYmUgYSBVaW50OEFycmF5
Jyk7CisgICAgYXNzZXJ0X25vdF9lcXVhbHModmFsdWUsIHZpZXcsICdUaGUgdmFsdWUgcmVhZCBt
dXN0IG5vdCBiZSB0aGUgKnNhbWUqIFVpbnQ4QXJyYXknKTsKKyAgICBhc3NlcnRfYXJyYXlfZXF1
YWxzKHZhbHVlLCBbXSwgJ1RoZSB2YWx1ZSByZWFkIG11c3QgYmUgYW4gZW1wdHkgVWludDhBcnJh
eSwgc2luY2UgdGhlIHN0cmVhbSBpcyBjbG9zZWQnKTsKKyAgICBhc3NlcnRfdHJ1ZShkb25lLCAn
ZG9uZSBtdXN0IGJlIHRydWUsIHNpbmNlIHRoZSBzdHJlYW0gaXMgY2xvc2VkJyk7CisKKyAgICAv
LyBUaGUgaW1wb3J0YW50IGFzc2VydGlvbnMKKyAgICBhc3NlcnRfbm90X2VxdWFscyh2YWx1ZS5i
dWZmZXIsIHZpZXcuYnVmZmVyLCAnYSBkaWZmZXJlbnQgQXJyYXlCdWZmZXIgbXVzdCB1bmRlcmxp
ZSB0aGUgdmFsdWUnKTsKKyAgICBhc3NlcnRfZXF1YWxzKHZpZXcuYnVmZmVyLmJ5dGVMZW5ndGgs
IDAsICd0aGUgb3JpZ2luYWwgYnVmZmVyIG11c3QgYmUgZGV0YWNoZWQnKTsKKyAgfSk7Cit9LCAn
UmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogcmVhZCgpaW5nIGZyb20gYSBjbG9zZWQg
c3RyZWFtIHN0aWxsIHRyYW5zZmVycyB0aGUgYnVmZmVyJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9
PiB7CisgIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykg
eworICAgICAgYy5lbnF1ZXVlKG5ldyBVaW50OEFycmF5KFsxLCAyLCAzXSkpOworICAgIH0sCisg
ICAgdHlwZTogJ2J5dGVzJworICB9KTsKKworICBjb25zdCByZWFkZXIgPSBzdHJlYW0uZ2V0UmVh
ZGVyKHsgbW9kZTogJ2J5b2InIH0pOworICBjb25zdCB2aWV3ID0gbmV3IFVpbnQ4QXJyYXkoWzQs
IDUsIDZdKTsKKyAgcmV0dXJuIHJlYWRlci5yZWFkKHZpZXcpLnRoZW4oKHsgdmFsdWUsIGRvbmUg
fSkgPT4geworICAgIC8vIFNhbml0eSBjaGVja3MKKyAgICBhc3NlcnRfdHJ1ZSh2YWx1ZSBpbnN0
YW5jZW9mIFVpbnQ4QXJyYXksICdUaGUgdmFsdWUgcmVhZCBtdXN0IGJlIGEgVWludDhBcnJheScp
OworICAgIGFzc2VydF9ub3RfZXF1YWxzKHZhbHVlLCB2aWV3LCAnVGhlIHZhbHVlIHJlYWQgbXVz
dCBub3QgYmUgdGhlICpzYW1lKiBVaW50OEFycmF5Jyk7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFs
cyh2YWx1ZSwgWzEsIDIsIDNdLCAnVGhlIHZhbHVlIHJlYWQgbXVzdCBiZSB0aGUgZW5xdWV1ZWQg
VWludDhBcnJheSwgbm90IHRoZSBvcmlnaW5hbCB2YWx1ZXMnKTsKKyAgICBhc3NlcnRfZmFsc2Uo
ZG9uZSwgJ2RvbmUgbXVzdCBiZSBmYWxzZSwgc2luY2UgdGhlIHN0cmVhbSBpcyBub3QgY2xvc2Vk
Jyk7CisKKyAgICAvLyBUaGUgaW1wb3J0YW50IGFzc2VydGlvbnMKKyAgICBhc3NlcnRfbm90X2Vx
dWFscyh2YWx1ZS5idWZmZXIsIHZpZXcuYnVmZmVyLCAnYSBkaWZmZXJlbnQgQXJyYXlCdWZmZXIg
bXVzdCB1bmRlcmxpZSB0aGUgdmFsdWUnKTsKKyAgICBhc3NlcnRfZXF1YWxzKHZpZXcuYnVmZmVy
LmJ5dGVMZW5ndGgsIDAsICd0aGUgb3JpZ2luYWwgYnVmZmVyIG11c3QgYmUgZGV0YWNoZWQnKTsK
KyAgfSk7Cit9LCAnUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogcmVhZCgpaW5nIGZy
b20gYSBzdHJlYW0gd2l0aCBxdWV1ZWQgY2h1bmtzIHN0aWxsIHRyYW5zZmVycyB0aGUgYnVmZmVy
Jyk7CisKK3Rlc3QoKCkgPT4geworICBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMp
IHsKKyAgICAgIGNvbnN0IHZpZXcgPSBuZXcgVWludDhBcnJheShbMSwgMiwgM10pOworICAgICAg
Yy5lbnF1ZXVlKHZpZXcpOworICAgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+
IGMuZW5xdWV1ZSh2aWV3KSk7CisgICAgfSwKKyAgICB0eXBlOiAnYnl0ZXMnCisgIH0pOworfSwg
J1JlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IGVucXVldWluZyBhbiBhbHJlYWR5LWRl
dGFjaGVkIGJ1ZmZlciB0aHJvd3MnKTsKKwordGVzdCgoKSA9PiB7CisgIG5ldyBSZWFkYWJsZVN0
cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgY29uc3QgdmlldyA9IG5ldyBVaW50OEFycmF5
KFtdKTsKKyAgICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiBjLmVucXVldWUo
dmlldykpOworICAgIH0sCisgICAgdHlwZTogJ2J5dGVzJworICB9KTsKK30sICdSZWFkYWJsZVN0
cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBlbnF1ZXVpbmcgYSB6ZXJvLWxlbmd0aCBidWZmZXIgdGhy
b3dzJyk7CisKK3Rlc3QoKCkgPT4geworICBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0
KGMpIHsKKyAgICAgIGNvbnN0IHZpZXcgPSBuZXcgVWludDhBcnJheShuZXcgQXJyYXlCdWZmZXIo
MTApLCAwLCAwKTsKKyAgICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiBjLmVu
cXVldWUodmlldykpOworICAgIH0sCisgICAgdHlwZTogJ2J5dGVzJworICB9KTsKK30sICdSZWFk
YWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBlbnF1ZXVpbmcgYSB6ZXJvLWxlbmd0aCB2aWV3
IG9uIGEgbm9uLXplcm8tbGVuZ3RoIGJ1ZmZlciB0aHJvd3MnKTsKKworcHJvbWlzZV90ZXN0KHQg
PT4geworICBjb25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMp
IHsKKyAgICAgIGMuZW5xdWV1ZShuZXcgVWludDhBcnJheShbMSwgMiwgM10pKTsKKyAgICB9LAor
ICAgIHR5cGU6ICdieXRlcycKKyAgfSk7CisgIGNvbnN0IHJlYWRlciA9IHN0cmVhbS5nZXRSZWFk
ZXIoeyBtb2RlOiAnYnlvYicgfSk7CisKKyAgY29uc3QgdmlldyA9IG5ldyBVaW50OEFycmF5KFs0
LCA1LCA2XSk7CisgIHJldHVybiByZWFkZXIucmVhZCh2aWV3KS50aGVuKCgpID0+IHsKKyAgICAv
LyB2aWV3IGlzIG5vdyBkZXRhY2hlZAorICAgIHJldHVybiBwcm9taXNlX3JlamVjdHNfanModCwg
VHlwZUVycm9yLCByZWFkZXIucmVhZCh2aWV3KSk7CisgIH0pOworfSwgJ1JlYWRhYmxlU3RyZWFt
IHdpdGggYnl0ZSBzb3VyY2U6IHJlYWRpbmcgaW50byBhbiBhbHJlYWR5LWRldGFjaGVkIGJ1ZmZl
ciByZWplY3RzJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgY29uc3Qgc3RyZWFtID0gbmV3
IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjLmVucXVldWUobmV3IFVp
bnQ4QXJyYXkoWzEsIDIsIDNdKSk7CisgICAgfSwKKyAgICB0eXBlOiAnYnl0ZXMnCisgIH0pOwor
ICBjb25zdCByZWFkZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKHsgbW9kZTogJ2J5b2InIH0pOworCisg
IGNvbnN0IHZpZXcgPSBuZXcgVWludDhBcnJheSgpOworICByZXR1cm4gcHJvbWlzZV9yZWplY3Rz
X2pzKHQsIFR5cGVFcnJvciwgcmVhZGVyLnJlYWQodmlldykpOworfSwgJ1JlYWRhYmxlU3RyZWFt
IHdpdGggYnl0ZSBzb3VyY2U6IHJlYWRpbmcgaW50byBhIHplcm8tbGVuZ3RoIGJ1ZmZlciByZWpl
Y3RzJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgY29uc3Qgc3RyZWFtID0gbmV3IFJlYWRh
YmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjLmVucXVldWUobmV3IFVpbnQ4QXJy
YXkoWzEsIDIsIDNdKSk7CisgICAgfSwKKyAgICB0eXBlOiAnYnl0ZXMnCisgIH0pOworICBjb25z
dCByZWFkZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKHsgbW9kZTogJ2J5b2InIH0pOworCisgIGNvbnN0
IHZpZXcgPSBuZXcgVWludDhBcnJheShuZXcgQXJyYXlCdWZmZXIoMTApLCAwLCAwKTsKKyAgcmV0
dXJuIHByb21pc2VfcmVqZWN0c19qcyh0LCBUeXBlRXJyb3IsIHJlYWRlci5yZWFkKHZpZXcpKTsK
K30sICdSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiByZWFkaW5nIGludG8gYSB6ZXJv
LWxlbmd0aCB2aWV3IG9uIGEgbm9uLXplcm8tbGVuZ3RoIGJ1ZmZlciByZWplY3RzJyk7CisKK2Fz
eW5jX3Rlc3QodCA9PiB7CisgIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Cisg
ICAgcHVsbDogdC5zdGVwX2Z1bmNfZG9uZShjID0+IHsKKyAgICAgIC8vIERldGFjaCBpdCBieSBy
ZWFkaW5nIGludG8gaXQKKyAgICAgIHJlYWRlci5yZWFkKGMuYnlvYlJlcXVlc3Qudmlldyk7CisK
KyAgICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiBjLmJ5b2JSZXF1ZXN0LnJl
c3BvbmQoMSksCisgICAgICAgICdyZXNwb25kKCkgbXVzdCB0aHJvdyBpZiB0aGUgY29ycmVzcG9u
ZGluZyB2aWV3IGhhcyBiZWNvbWUgZGV0YWNoZWQnKTsKKyAgICB9KSwKKyAgICB0eXBlOiAnYnl0
ZXMnCisgIH0pOworICBjb25zdCByZWFkZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKHsgbW9kZTogJ2J5
b2InIH0pOworCisgIHJlYWRlci5yZWFkKG5ldyBVaW50OEFycmF5KFs0LCA1LCA2XSkpOworfSwg
J1JlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IHJlc3BvbmQoKSB0aHJvd3MgaWYgdGhl
IEJZT0IgcmVxdWVzdFwncyBidWZmZXIgaGFzIGJlZW4gZGV0YWNoZWQgKGluIHRoZSAnICsKKyAg
ICdyZWFkYWJsZSBzdGF0ZSknKTsKKworYXN5bmNfdGVzdCh0ID0+IHsKKyAgY29uc3Qgc3RyZWFt
ID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBwdWxsOiB0LnN0ZXBfZnVuY19kb25lKGMgPT4g
eworICAgICAgLy8gRGV0YWNoIGl0IGJ5IHJlYWRpbmcgaW50byBpdAorICAgICAgcmVhZGVyLnJl
YWQoYy5ieW9iUmVxdWVzdC52aWV3KTsKKworICAgICAgYy5jbG9zZSgpOworCisgICAgICBhc3Nl
cnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4gYy5ieW9iUmVxdWVzdC5yZXNwb25kKDApLAor
ICAgICAgICAncmVzcG9uZCgpIG11c3QgdGhyb3cgaWYgdGhlIGNvcnJlc3BvbmRpbmcgdmlldyBo
YXMgYmVjb21lIGRldGFjaGVkJyk7CisgICAgfSksCisgICAgdHlwZTogJ2J5dGVzJworICB9KTsK
KyAgY29uc3QgcmVhZGVyID0gc3RyZWFtLmdldFJlYWRlcih7IG1vZGU6ICdieW9iJyB9KTsKKwor
ICByZWFkZXIucmVhZChuZXcgVWludDhBcnJheShbNCwgNSwgNl0pKTsKK30sICdSZWFkYWJsZVN0
cmVhbSB3aXRoIGJ5dGUgc291cmNlOiByZXNwb25kKCkgdGhyb3dzIGlmIHRoZSBCWU9CIHJlcXVl
c3RcJ3MgYnVmZmVyIGhhcyBiZWVuIGRldGFjaGVkIChpbiB0aGUgJyArCisgICAnY2xvc2VkIHN0
YXRlKScpOworCithc3luY190ZXN0KHQgPT4geworICBjb25zdCBzdHJlYW0gPSBuZXcgUmVhZGFi
bGVTdHJlYW0oeworICAgIHB1bGw6IHQuc3RlcF9mdW5jX2RvbmUoYyA9PiB7CisgICAgICAvLyBE
ZXRhY2ggaXQgYnkgcmVhZGluZyBpbnRvIGl0CisgICAgICBjb25zdCB2aWV3ID0gbmV3IFVpbnQ4
QXJyYXkoWzEsIDIsIDNdKTsKKyAgICAgIHJlYWRlci5yZWFkKHZpZXcpOworCisgICAgICBhc3Nl
cnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4gYy5ieW9iUmVxdWVzdC5yZXNwb25kV2l0aE5l
d1ZpZXcodmlldykpOworICAgIH0pLAorICAgIHR5cGU6ICdieXRlcycKKyAgfSk7CisgIGNvbnN0
IHJlYWRlciA9IHN0cmVhbS5nZXRSZWFkZXIoeyBtb2RlOiAnYnlvYicgfSk7CisKKyAgcmVhZGVy
LnJlYWQobmV3IFVpbnQ4QXJyYXkoWzQsIDUsIDZdKSk7Cit9LCAnUmVhZGFibGVTdHJlYW0gd2l0
aCBieXRlIHNvdXJjZTogcmVzcG9uZFdpdGhOZXdWaWV3KCkgdGhyb3dzIGlmIHRoZSBzdXBwbGll
ZCB2aWV3XCdzIGJ1ZmZlciBoYXMgYmVlbiBkZXRhY2hlZCAnICsKKyAgICAnKGluIHRoZSByZWFk
YWJsZSBzdGF0ZSknKTsKKworYXN5bmNfdGVzdCh0ID0+IHsKKyAgY29uc3Qgc3RyZWFtID0gbmV3
IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBwdWxsOiB0LnN0ZXBfZnVuY19kb25lKGMgPT4geworICAg
ICAgY29uc3QgdmlldyA9IG5ldyBVaW50OEFycmF5KCk7CisKKyAgICAgIGFzc2VydF90aHJvd3Nf
anMoVHlwZUVycm9yLCAoKSA9PiBjLmJ5b2JSZXF1ZXN0LnJlc3BvbmRXaXRoTmV3Vmlldyh2aWV3
KSk7CisgICAgfSksCisgICAgdHlwZTogJ2J5dGVzJworICB9KTsKKyAgY29uc3QgcmVhZGVyID0g
c3RyZWFtLmdldFJlYWRlcih7IG1vZGU6ICdieW9iJyB9KTsKKworICByZWFkZXIucmVhZChuZXcg
VWludDhBcnJheShbNCwgNSwgNl0pKTsKK30sICdSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291
cmNlOiByZXNwb25kV2l0aE5ld1ZpZXcoKSB0aHJvd3MgaWYgdGhlIHN1cHBsaWVkIHZpZXdcJ3Mg
YnVmZmVyIGlzIHplcm8tbGVuZ3RoICcgKworICAgICcoaW4gdGhlIHJlYWRhYmxlIHN0YXRlKScp
OworCithc3luY190ZXN0KHQgPT4geworICBjb25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJl
YW0oeworICAgIHB1bGw6IHQuc3RlcF9mdW5jX2RvbmUoYyA9PiB7CisgICAgICBjb25zdCB2aWV3
ID0gbmV3IFVpbnQ4QXJyYXkobmV3IEFycmF5QnVmZmVyKDEwKSwgMCwgMCk7CisKKyAgICAgIGFz
c2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiBjLmJ5b2JSZXF1ZXN0LnJlc3BvbmRXaXRo
TmV3Vmlldyh2aWV3KSk7CisgICAgfSksCisgICAgdHlwZTogJ2J5dGVzJworICB9KTsKKyAgY29u
c3QgcmVhZGVyID0gc3RyZWFtLmdldFJlYWRlcih7IG1vZGU6ICdieW9iJyB9KTsKKworICByZWFk
ZXIucmVhZChuZXcgVWludDhBcnJheShbNCwgNSwgNl0pKTsKK30sICdSZWFkYWJsZVN0cmVhbSB3
aXRoIGJ5dGUgc291cmNlOiByZXNwb25kV2l0aE5ld1ZpZXcoKSB0aHJvd3MgaWYgdGhlIHN1cHBs
aWVkIHZpZXcgaXMgemVyby1sZW5ndGggb24gYSAnICsKKyAgICAnbm9uLXplcm8tbGVuZ3RoIGJ1
ZmZlciAoaW4gdGhlIHJlYWRhYmxlIHN0YXRlKScpOworCithc3luY190ZXN0KHQgPT4geworICBj
b25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHB1bGw6IHQuc3RlcF9mdW5j
X2RvbmUoYyA9PiB7CisgICAgICAvLyBEZXRhY2ggaXQgYnkgcmVhZGluZyBpbnRvIGl0CisgICAg
ICBjb25zdCB2aWV3ID0gbmV3IFVpbnQ4QXJyYXkoWzEsIDIsIDNdKTsKKyAgICAgIHJlYWRlci5y
ZWFkKHZpZXcpOworCisgICAgICBjLmNsb3NlKCk7CisKKyAgICAgIGNvbnN0IHplcm9MZW5ndGhW
aWV3ID0gbmV3IFVpbnQ4QXJyYXkodmlldy5idWZmZXIsIDAsIDApOworICAgICAgYXNzZXJ0X3Ro
cm93c19qcyhUeXBlRXJyb3IsICgpID0+IGMuYnlvYlJlcXVlc3QucmVzcG9uZFdpdGhOZXdWaWV3
KHplcm9MZW5ndGhWaWV3KSk7CisgICAgfSksCisgICAgdHlwZTogJ2J5dGVzJworICB9KTsKKyAg
Y29uc3QgcmVhZGVyID0gc3RyZWFtLmdldFJlYWRlcih7IG1vZGU6ICdieW9iJyB9KTsKKworICBy
ZWFkZXIucmVhZChuZXcgVWludDhBcnJheShbNCwgNSwgNl0pKTsKK30sICdSZWFkYWJsZVN0cmVh
bSB3aXRoIGJ5dGUgc291cmNlOiByZXNwb25kV2l0aE5ld1ZpZXcoKSB0aHJvd3MgaWYgdGhlIHN1
cHBsaWVkIHZpZXdcJ3MgYnVmZmVyIGhhcyBiZWVuIGRldGFjaGVkICcgKworICAgJyhpbiB0aGUg
Y2xvc2VkIHN0YXRlKScpOworCithc3luY190ZXN0KHQgPT4geworICBjb25zdCBzdHJlYW0gPSBu
ZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHB1bGw6IHQuc3RlcF9mdW5jX2RvbmUoYyA9PiB7Cisg
ICAgICBjb25zdCB2aWV3ID0gbmV3IFVpbnQ4QXJyYXkoKTsKKworICAgICAgYy5jbG9zZSgpOwor
CisgICAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4gYy5ieW9iUmVxdWVzdC5y
ZXNwb25kV2l0aE5ld1ZpZXcodmlldykpOworICAgIH0pLAorICAgIHR5cGU6ICdieXRlcycKKyAg
fSk7CisgIGNvbnN0IHJlYWRlciA9IHN0cmVhbS5nZXRSZWFkZXIoeyBtb2RlOiAnYnlvYicgfSk7
CisKKyAgcmVhZGVyLnJlYWQobmV3IFVpbnQ4QXJyYXkoWzQsIDUsIDZdKSk7Cit9LCAnUmVhZGFi
bGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogcmVzcG9uZFdpdGhOZXdWaWV3KCkgdGhyb3dzIGlm
IHRoZSBzdXBwbGllZCB2aWV3XCdzIGJ1ZmZlciBpcyB6ZXJvLWxlbmd0aCAnICsKKyAgICcoaW4g
dGhlIGNsb3NlZCBzdGF0ZSknKTsKKworYXN5bmNfdGVzdCh0ID0+IHsKKyAgY29uc3Qgc3RyZWFt
ID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBwdWxsOiB0LnN0ZXBfZnVuY19kb25lKGMgPT4g
eworICAgICAgY29uc3QgdmlldyA9IG5ldyBVaW50OEFycmF5KG5ldyBBcnJheUJ1ZmZlcigxMCks
IDAsIDApOworCisgICAgICBjLmNsb3NlKCk7CisKKyAgICAgIGFzc2VydF90aHJvd3NfanMoVHlw
ZUVycm9yLCAoKSA9PiBjLmJ5b2JSZXF1ZXN0LnJlc3BvbmRXaXRoTmV3Vmlldyh2aWV3KSk7Cisg
ICAgfSksCisgICAgdHlwZTogJ2J5dGVzJworICB9KTsKKyAgY29uc3QgcmVhZGVyID0gc3RyZWFt
LmdldFJlYWRlcih7IG1vZGU6ICdieW9iJyB9KTsKKworICByZWFkZXIucmVhZChuZXcgVWludDhB
cnJheShbNCwgNSwgNl0pKTsKK30sICdSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBy
ZXNwb25kV2l0aE5ld1ZpZXcoKSB0aHJvd3MgaWYgdGhlIHN1cHBsaWVkIHZpZXcgaXMgemVyby1s
ZW5ndGggb24gYSAnICsKKyAgICAnbm9uLXplcm8tbGVuZ3RoIGJ1ZmZlciAoaW4gdGhlIGNsb3Nl
ZCBzdGF0ZSknKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMvYmFkLWJ1ZmZlcnMtYW5k
LXZpZXdzLmFueS53b3JrZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFtcy9iYWQtYnVm
ZmVycy1hbmQtdmlld3MuYW55Lndvcmtlci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTRhZDdk
OGQ5Yzg3MjFkNmE4ZThjZWVlNGI5YTdlMWQ2MDBmZTVjOAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJs
ZS1ieXRlLXN0cmVhbXMvYmFkLWJ1ZmZlcnMtYW5kLXZpZXdzLmFueS53b3JrZXItZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMzAgQEAKKworSGFybmVzcyBFcnJvciAoVElNRU9VVCksIG1lc3NhZ2Ug
PSBudWxsCisKK0ZBSUwgUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogcmVhZCgpaW5n
IGZyb20gYSBjbG9zZWQgc3RyZWFtIHN0aWxsIHRyYW5zZmVycyB0aGUgYnVmZmVyIGFzc2VydF9u
b3RfZXF1YWxzOiBhIGRpZmZlcmVudCBBcnJheUJ1ZmZlciBtdXN0IHVuZGVybGllIHRoZSB2YWx1
ZSBnb3QgZGlzYWxsb3dlZCB2YWx1ZSBvYmplY3QgIltvYmplY3QgQXJyYXlCdWZmZXJdIgorRkFJ
TCBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiByZWFkKClpbmcgZnJvbSBhIHN0cmVh
bSB3aXRoIHF1ZXVlZCBjaHVua3Mgc3RpbGwgdHJhbnNmZXJzIHRoZSBidWZmZXIgYXNzZXJ0X25v
dF9lcXVhbHM6IGEgZGlmZmVyZW50IEFycmF5QnVmZmVyIG11c3QgdW5kZXJsaWUgdGhlIHZhbHVl
IGdvdCBkaXNhbGxvd2VkIHZhbHVlIG9iamVjdCAiW29iamVjdCBBcnJheUJ1ZmZlcl0iCitGQUlM
IFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IGVucXVldWluZyBhbiBhbHJlYWR5LWRl
dGFjaGVkIGJ1ZmZlciB0aHJvd3MgYXNzZXJ0X3Rocm93c19qczogZnVuY3Rpb24gIigpID0+IGMu
ZW5xdWV1ZSh2aWV3KSIgZGlkIG5vdCB0aHJvdworRkFJTCBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5
dGUgc291cmNlOiBlbnF1ZXVpbmcgYSB6ZXJvLWxlbmd0aCBidWZmZXIgdGhyb3dzIGFzc2VydF90
aHJvd3NfanM6IGZ1bmN0aW9uICIoKSA9PiBjLmVucXVldWUodmlldykiIGRpZCBub3QgdGhyb3cK
K0ZBSUwgUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogZW5xdWV1aW5nIGEgemVyby1s
ZW5ndGggdmlldyBvbiBhIG5vbi16ZXJvLWxlbmd0aCBidWZmZXIgdGhyb3dzIGFzc2VydF90aHJv
d3NfanM6IGZ1bmN0aW9uICIoKSA9PiBjLmVucXVldWUodmlldykiIGRpZCBub3QgdGhyb3cKK1RJ
TUVPVVQgUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogcmVhZGluZyBpbnRvIGFuIGFs
cmVhZHktZGV0YWNoZWQgYnVmZmVyIHJlamVjdHMgVGVzdCB0aW1lZCBvdXQKK05PVFJVTiBSZWFk
YWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiByZWFkaW5nIGludG8gYSB6ZXJvLWxlbmd0aCBi
dWZmZXIgcmVqZWN0cyAKK05PVFJVTiBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBy
ZWFkaW5nIGludG8gYSB6ZXJvLWxlbmd0aCB2aWV3IG9uIGEgbm9uLXplcm8tbGVuZ3RoIGJ1ZmZl
ciByZWplY3RzIAorRkFJTCBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiByZXNwb25k
KCkgdGhyb3dzIGlmIHRoZSBCWU9CIHJlcXVlc3QncyBidWZmZXIgaGFzIGJlZW4gZGV0YWNoZWQg
KGluIHRoZSByZWFkYWJsZSBzdGF0ZSkgYXNzZXJ0X3Rocm93c19qczogcmVzcG9uZCgpIG11c3Qg
dGhyb3cgaWYgdGhlIGNvcnJlc3BvbmRpbmcgdmlldyBoYXMgYmVjb21lIGRldGFjaGVkIGZ1bmN0
aW9uICIoKSA9PiBjLmJ5b2JSZXF1ZXN0LnJlc3BvbmQoMSkiIGRpZCBub3QgdGhyb3cKK0ZBSUwg
UmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogcmVzcG9uZCgpIHRocm93cyBpZiB0aGUg
QllPQiByZXF1ZXN0J3MgYnVmZmVyIGhhcyBiZWVuIGRldGFjaGVkIChpbiB0aGUgY2xvc2VkIHN0
YXRlKSBhc3NlcnRfdGhyb3dzX2pzOiByZXNwb25kKCkgbXVzdCB0aHJvdyBpZiB0aGUgY29ycmVz
cG9uZGluZyB2aWV3IGhhcyBiZWNvbWUgZGV0YWNoZWQgZnVuY3Rpb24gIigpID0+IGMuYnlvYlJl
cXVlc3QucmVzcG9uZCgwKSIgZGlkIG5vdCB0aHJvdworRkFJTCBSZWFkYWJsZVN0cmVhbSB3aXRo
IGJ5dGUgc291cmNlOiByZXNwb25kV2l0aE5ld1ZpZXcoKSB0aHJvd3MgaWYgdGhlIHN1cHBsaWVk
IHZpZXcncyBidWZmZXIgaGFzIGJlZW4gZGV0YWNoZWQgKGluIHRoZSByZWFkYWJsZSBzdGF0ZSkg
YXNzZXJ0X3Rocm93c19qczogZnVuY3Rpb24gIigpID0+IGMuYnlvYlJlcXVlc3QucmVzcG9uZFdp
dGhOZXdWaWV3KHZpZXcpIiBkaWQgbm90IHRocm93CitGQUlMIFJlYWRhYmxlU3RyZWFtIHdpdGgg
Ynl0ZSBzb3VyY2U6IHJlc3BvbmRXaXRoTmV3VmlldygpIHRocm93cyBpZiB0aGUgc3VwcGxpZWQg
dmlldydzIGJ1ZmZlciBpcyB6ZXJvLWxlbmd0aCAoaW4gdGhlIHJlYWRhYmxlIHN0YXRlKSBhc3Nl
cnRfdGhyb3dzX2pzOiBmdW5jdGlvbiAiKCkgPT4gYy5ieW9iUmVxdWVzdC5yZXNwb25kV2l0aE5l
d1ZpZXcodmlldykiIHRocmV3IG9iamVjdCAiUmFuZ2VFcnJvcjogSW52YWxpZCB2YWx1ZSBmb3Ig
dmlldy5ieXRlTGVuZ3RoIiAoIlJhbmdlRXJyb3IiKSBleHBlY3RlZCBpbnN0YW5jZSBvZiBmdW5j
dGlvbiAiZnVuY3Rpb24gVHlwZUVycm9yKCkgeworICAgIFtuYXRpdmUgY29kZV0KK30iICgiVHlw
ZUVycm9yIikKK0ZBSUwgUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogcmVzcG9uZFdp
dGhOZXdWaWV3KCkgdGhyb3dzIGlmIHRoZSBzdXBwbGllZCB2aWV3IGlzIHplcm8tbGVuZ3RoIG9u
IGEgbm9uLXplcm8tbGVuZ3RoIGJ1ZmZlciAoaW4gdGhlIHJlYWRhYmxlIHN0YXRlKSBhc3NlcnRf
dGhyb3dzX2pzOiBmdW5jdGlvbiAiKCkgPT4gYy5ieW9iUmVxdWVzdC5yZXNwb25kV2l0aE5ld1Zp
ZXcodmlldykiIHRocmV3IG9iamVjdCAiUmFuZ2VFcnJvcjogSW52YWxpZCB2YWx1ZSBmb3Igdmll
dy5ieXRlTGVuZ3RoIiAoIlJhbmdlRXJyb3IiKSBleHBlY3RlZCBpbnN0YW5jZSBvZiBmdW5jdGlv
biAiZnVuY3Rpb24gVHlwZUVycm9yKCkgeworICAgIFtuYXRpdmUgY29kZV0KK30iICgiVHlwZUVy
cm9yIikKK0ZBSUwgUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogcmVzcG9uZFdpdGhO
ZXdWaWV3KCkgdGhyb3dzIGlmIHRoZSBzdXBwbGllZCB2aWV3J3MgYnVmZmVyIGhhcyBiZWVuIGRl
dGFjaGVkIChpbiB0aGUgY2xvc2VkIHN0YXRlKSBhc3NlcnRfdGhyb3dzX2pzOiBmdW5jdGlvbiAi
KCkgPT4gYy5ieW9iUmVxdWVzdC5yZXNwb25kV2l0aE5ld1ZpZXcoemVyb0xlbmd0aFZpZXcpIiB0
aHJldyBvYmplY3QgIlJhbmdlRXJyb3I6IEludmFsaWQgdmFsdWUgZm9yIHZpZXcuYnl0ZUxlbmd0
aCIgKCJSYW5nZUVycm9yIikgZXhwZWN0ZWQgaW5zdGFuY2Ugb2YgZnVuY3Rpb24gImZ1bmN0aW9u
IFR5cGVFcnJvcigpIHsKKyAgICBbbmF0aXZlIGNvZGVdCit9IiAoIlR5cGVFcnJvciIpCitGQUlM
IFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IHJlc3BvbmRXaXRoTmV3VmlldygpIHRo
cm93cyBpZiB0aGUgc3VwcGxpZWQgdmlldydzIGJ1ZmZlciBpcyB6ZXJvLWxlbmd0aCAoaW4gdGhl
IGNsb3NlZCBzdGF0ZSkgYXNzZXJ0X3Rocm93c19qczogZnVuY3Rpb24gIigpID0+IGMuYnlvYlJl
cXVlc3QucmVzcG9uZFdpdGhOZXdWaWV3KHZpZXcpIiB0aHJldyBvYmplY3QgIlJhbmdlRXJyb3I6
IEludmFsaWQgdmFsdWUgZm9yIHZpZXcuYnl0ZUxlbmd0aCIgKCJSYW5nZUVycm9yIikgZXhwZWN0
ZWQgaW5zdGFuY2Ugb2YgZnVuY3Rpb24gImZ1bmN0aW9uIFR5cGVFcnJvcigpIHsKKyAgICBbbmF0
aXZlIGNvZGVdCit9IiAoIlR5cGVFcnJvciIpCitGQUlMIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0
ZSBzb3VyY2U6IHJlc3BvbmRXaXRoTmV3VmlldygpIHRocm93cyBpZiB0aGUgc3VwcGxpZWQgdmll
dyBpcyB6ZXJvLWxlbmd0aCBvbiBhIG5vbi16ZXJvLWxlbmd0aCBidWZmZXIgKGluIHRoZSBjbG9z
ZWQgc3RhdGUpIGFzc2VydF90aHJvd3NfanM6IGZ1bmN0aW9uICIoKSA9PiBjLmJ5b2JSZXF1ZXN0
LnJlc3BvbmRXaXRoTmV3Vmlldyh2aWV3KSIgdGhyZXcgb2JqZWN0ICJSYW5nZUVycm9yOiBJbnZh
bGlkIHZhbHVlIGZvciB2aWV3LmJ5dGVMZW5ndGgiICgiUmFuZ2VFcnJvciIpIGV4cGVjdGVkIGlu
c3RhbmNlIG9mIGZ1bmN0aW9uICJmdW5jdGlvbiBUeXBlRXJyb3IoKSB7CisgICAgW25hdGl2ZSBj
b2RlXQorfSIgKCJUeXBlRXJyb3IiKQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL2Jh
ZC1idWZmZXJzLWFuZC12aWV3cy5hbnkud29ya2VyLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL2Jh
ZC1idWZmZXJzLWFuZC12aWV3cy5hbnkud29ya2VyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjM4MjkxMzUy
OGU2OTNiM2E1ZDU2YzY2MGE0NTA2MDk4MGI1NDhjMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1i
eXRlLXN0cmVhbXMvYmFkLWJ1ZmZlcnMtYW5kLXZpZXdzLmFueS53b3JrZXIuaHRtbApAQCAtMCww
ICsxIEBACis8IS0tIFRoaXMgZmlsZSBpcyByZXF1aXJlZCBmb3IgV2ViS2l0IHRlc3QgaW5mcmFz
dHJ1Y3R1cmUgdG8gcnVuIHRoZSB0ZW1wbGF0ZWQgdGVzdCAtLT4KXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL2JyYW5kLWNoZWNrcy5kZWRp
Y2F0ZWR3b3JrZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFtcy9icmFuZC1jaGVja3Mu
ZGVkaWNhdGVkd29ya2VyLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMTYwMzIyZmI4ZGQxMTk5MzU0MmYwZTMzN2Y1YjAyNmU4NGM3YjEwNy4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL2JyYW5k
LWNoZWNrcy5kZWRpY2F0ZWR3b3JrZXItZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEs
MTYgKzAsMCBAQAotCi1QQVNTIENhbiBnZXQgdGhlIFJlYWRhYmxlU3RyZWFtQllPQlJlYWRlciBj
b25zdHJ1Y3RvciBpbmRpcmVjdGx5IAotUEFTUyBDYW4gZ2V0IHRoZSBSZWFkYWJsZUJ5dGVTdHJl
YW1Db250cm9sbGVyIGNvbnN0cnVjdG9yIGluZGlyZWN0bHkgCi1QQVNTIFJlYWRhYmxlU3RyZWFt
QllPQlJlYWRlciBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrIG9uIGl0cyBhcmd1bWVudCAKLVBBU1Mg
UmVhZGFibGVTdHJlYW1CWU9CUmVhZGVyLnByb3RvdHlwZS5jbG9zZWQgZW5mb3JjZXMgYSBicmFu
ZCBjaGVjayAKLVBBU1MgUmVhZGFibGVTdHJlYW1CWU9CUmVhZGVyLnByb3RvdHlwZS5jYW5jZWwg
ZW5mb3JjZXMgYSBicmFuZCBjaGVjayAKLVBBU1MgUmVhZGFibGVTdHJlYW1CWU9CUmVhZGVyLnBy
b3RvdHlwZS5yZWFkIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2sgCi1QQVNTIFJlYWRhYmxlU3RyZWFt
QllPQlJlYWRlci5wcm90b3R5cGUucmVsZWFzZUxvY2sgZW5mb3JjZXMgYSBicmFuZCBjaGVjayAK
LVBBU1MgUmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlciBlbmZvcmNlcyBhIGJyYW5kIGNoZWNr
IG9uIGl0cyBhcmd1bWVudHMgCi1QQVNTIFJlYWRhYmxlQnl0ZVN0cmVhbUNvbnRyb2xsZXIgY2Fu
J3QgYmUgZ2l2ZW4gYSBmdWxseS1jb25zdHJ1Y3RlZCBSZWFkYWJsZVN0cmVhbSAKLVBBU1MgUmVh
ZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlci5wcm90b3R5cGUuYnlvYlJlcXVlc3QgZW5mb3JjZXMg
YSBicmFuZCBjaGVjayAKLVBBU1MgUmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlci5wcm90b3R5
cGUuY2xvc2UgZW5mb3JjZXMgYSBicmFuZCBjaGVjayAKLVBBU1MgUmVhZGFibGVCeXRlU3RyZWFt
Q29udHJvbGxlci5wcm90b3R5cGUuZW5xdWV1ZSBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrIAotUEFT
UyBSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyLnByb3RvdHlwZS5lcnJvciBlbmZvcmNlcyBh
IGJyYW5kIGNoZWNrIAotUEFTUyBSZWFkYWJsZVN0cmVhbUJZT0JSZXF1ZXN0IGVuZm9yY2VzIGJy
YW5kIGNoZWNrcyAKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFtcy9icmFuZC1jaGVja3Mu
ZGVkaWNhdGVkd29ya2VyLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL2JyYW5kLWNoZWNrcy5kZWRp
Y2F0ZWR3b3JrZXIuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmIzZjExYTkw
ZTI4MWI5NmFhYjQ2OTVkN2NhYjA0Y2M0MzZlOGYwNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL2JyYW5kLWNoZWNrcy5kZWRp
Y2F0ZWR3b3JrZXIuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLTwhRE9DVFlQ
RSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHRpdGxlPmJyYW5kLWNoZWNrcy5qcyBk
ZWRpY2F0ZWQgd29ya2VyIHdyYXBwZXIgZmlsZTwvdGl0bGU+Ci0KLTxzY3JpcHQgc3JjPSIvcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLQotPHNjcmlwdD4KLSd1c2Ugc3RyaWN0
JzsKLWZldGNoX3Rlc3RzX2Zyb21fd29ya2VyKG5ldyBXb3JrZXIoJ2JyYW5kLWNoZWNrcy5qcycp
KTsKLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFtcy9icmFuZC1jaGVja3Mu
aHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMvYnJhbmQtY2hlY2tzLmh0bWwKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDk4ZDJlMjgxZmZhZjZmMGI0MDQ2YjMwMjk2YjJkMDlmYjFmM2RlOWYu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLWJ5dGUt
c3RyZWFtcy9icmFuZC1jaGVja3MuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAK
LTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHRpdGxlPmJyYW5kLWNo
ZWNrcy5qcyBicm93c2VyIGNvbnRleHQgd3JhcHBlciBmaWxlPC90aXRsZT4KLQotPHNjcmlwdCBz
cmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9y
ZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotCi08c2NyaXB0IHNyYz0i
Li4vcmVzb3VyY2VzL3Rlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgotCi08c2NyaXB0IHNyYz0iYnJh
bmQtY2hlY2tzLmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMvYnJh
bmQtY2hlY2tzLmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFtcy9icmFuZC1jaGVja3MuanMKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcwMmM2NTMwMTY1YzJiNjM2NzZlNjAwY2JkZmU0ODE5YmU1
NDdlNjcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxl
LWJ5dGUtc3RyZWFtcy9icmFuZC1jaGVja3MuanMKKysrIC9kZXYvbnVsbApAQCAtMSwxOTQgKzAs
MCBAQAotJ3VzZSBzdHJpY3QnOwotCi1pZiAoc2VsZi5pbXBvcnRTY3JpcHRzKSB7Ci0gIHNlbGYu
aW1wb3J0U2NyaXB0cygnLi4vcmVzb3VyY2VzL3Rlc3QtdXRpbHMuanMnKTsKLSAgc2VsZi5pbXBv
cnRTY3JpcHRzKCcvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzJyk7Ci19Ci0KLWxldCBSZWFkYWJs
ZVN0cmVhbUJZT0JSZWFkZXI7Ci1sZXQgUmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlcjsKLQot
dGVzdCgoKSA9PiB7Ci0KLSAgLy8gSXQncyBub3QgZXhwb3NlZCBnbG9iYWxseSwgYnV0IHdlIHRl
c3QgYSBmZXcgb2YgaXRzIHByb3BlcnRpZXMgaGVyZS4KLSAgUmVhZGFibGVTdHJlYW1CWU9CUmVh
ZGVyID0gcmVhbFJTQllPQlJlYWRlcigpLmNvbnN0cnVjdG9yOwotCi0gIGFzc2VydF9lcXVhbHMo
UmVhZGFibGVTdHJlYW1CWU9CUmVhZGVyLm5hbWUsICdSZWFkYWJsZVN0cmVhbUJZT0JSZWFkZXIn
LCAnUmVhZGFibGVTdHJlYW1CWU9CUmVhZGVyIHNob3VsZCBiZSBzZXQnKTsKLQotfSwgJ0NhbiBn
ZXQgdGhlIFJlYWRhYmxlU3RyZWFtQllPQlJlYWRlciBjb25zdHJ1Y3RvciBpbmRpcmVjdGx5Jyk7
Ci0KLXRlc3QoKCkgPT4gewotCi0gIC8vIEl0J3Mgbm90IGV4cG9zZWQgZ2xvYmFsbHksIGJ1dCB3
ZSB0ZXN0IGEgZmV3IG9mIGl0cyBwcm9wZXJ0aWVzIGhlcmUuCi0gIFJlYWRhYmxlQnl0ZVN0cmVh
bUNvbnRyb2xsZXIgPSByZWFsUkJTQ29udHJvbGxlcigpLmNvbnN0cnVjdG9yOwotCi0gIGFzc2Vy
dF9lcXVhbHMoUmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlci5uYW1lLCAnUmVhZGFibGVCeXRl
U3RyZWFtQ29udHJvbGxlcicsCi0gICAgICAgICAgICAgICAgJ1JlYWRhYmxlQnl0ZVN0cmVhbUNv
bnRyb2xsZXIgc2hvdWxkIGJlIHNldCcpOwotCi19LCAnQ2FuIGdldCB0aGUgUmVhZGFibGVCeXRl
U3RyZWFtQ29udHJvbGxlciBjb25zdHJ1Y3RvciBpbmRpcmVjdGx5Jyk7Ci0KLWZ1bmN0aW9uIGZh
a2VSUygpIHsKLSAgcmV0dXJuIE9iamVjdC5zZXRQcm90b3R5cGVPZih7Ci0gICAgY2FuY2VsKCkg
eyByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7IH0sCi0gICAgZ2V0UmVhZGVyKCkgeyByZXR1cm4g
cmVhbFJTQllPQlJlYWRlcigpOyB9LAotICAgIHBpcGVUaHJvdWdoKG9iaikgeyByZXR1cm4gb2Jq
LnJlYWRhYmxlOyB9LAotICAgIHBpcGVUbygpIHsgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpOyB9
LAotICAgIHRlZSgpIHsgcmV0dXJuIFtyZWFsUlMoKSwgcmVhbFJTKCldOyB9Ci0gIH0sIFJlYWRh
YmxlU3RyZWFtLnByb3RvdHlwZSk7Ci19Ci0KLWZ1bmN0aW9uIHJlYWxSUygpIHsKLSAgcmV0dXJu
IG5ldyBSZWFkYWJsZVN0cmVhbSgpOwotfQotCi1mdW5jdGlvbiBmYWtlUlNCWU9CUmVhZGVyKCkg
ewotICByZXR1cm4gT2JqZWN0LnNldFByb3RvdHlwZU9mKHsKLSAgICBnZXQgY2xvc2VkKCkgeyBy
ZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7IH0sCi0gICAgY2FuY2VsKCkgeyByZXR1cm4gUHJvbWlz
ZS5yZXNvbHZlKCk7IH0sCi0gICAgcmVhZCgpIHsgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7IHZh
bHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSk7IH0sCi0gICAgcmVsZWFzZUxvY2soKSB7IHJl
dHVybjsgfQotICB9LCBSZWFkYWJsZVN0cmVhbUJZT0JSZWFkZXIucHJvdG90eXBlKTsKLX0KLQot
ZnVuY3Rpb24gcmVhbFJTQllPQlJlYWRlcigpIHsKLSAgcmV0dXJuIG5ldyBSZWFkYWJsZVN0cmVh
bSh7IHR5cGU6ICdieXRlcycgfSkuZ2V0UmVhZGVyKHsgbW9kZTogJ2J5b2InIH0pOwotfQotCi1m
dW5jdGlvbiBmYWtlUkJTQ29udHJvbGxlcigpIHsKLSAgcmV0dXJuIE9iamVjdC5zZXRQcm90b3R5
cGVPZih7Ci0gICAgY2xvc2UoKSB7IH0sCi0gICAgZW5xdWV1ZSgpIHsgfSwKLSAgICBlcnJvcigp
IHsgfQotICB9LCBSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyLnByb3RvdHlwZSk7Ci19Ci0K
LWZ1bmN0aW9uIHJlYWxSQlNDb250cm9sbGVyKCkgewotICBsZXQgY29udHJvbGxlcjsKLSAgbmV3
IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0gICAgICBjb250cm9sbGVyID0gYzsK
LSAgICB9LAotICAgIHR5cGU6ICdieXRlcycKLSAgfSk7Ci0gIHJldHVybiBjb250cm9sbGVyOwot
fQotCi10ZXN0KCgpID0+IHsKLQotICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkg
PT4gbmV3IFJlYWRhYmxlU3RyZWFtQllPQlJlYWRlcihmYWtlUlMoKSksICdjb25zdHJ1Y3RvciBz
aG91bGQgdGhyb3cnKTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtQllPQlJlYWRlciBlbmZvcmNlcyBh
IGJyYW5kIGNoZWNrIG9uIGl0cyBhcmd1bWVudCcpOwotCi1wcm9taXNlX3Rlc3QodCA9PiB7Ci0K
LSAgcmV0dXJuIGdldHRlclJlamVjdHNGb3JBbGwodCwgUmVhZGFibGVTdHJlYW1CWU9CUmVhZGVy
LnByb3RvdHlwZSwgJ2Nsb3NlZCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmYWtl
UlNCWU9CUmVhZGVyKCksIHJlYWxSUygpLCByZWFsUkJTQ29udHJvbGxlcigpLCB1bmRlZmluZWQs
IG51bGxdKTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtQllPQlJlYWRlci5wcm90b3R5cGUuY2xvc2Vk
IGVuZm9yY2VzIGEgYnJhbmQgY2hlY2snKTsKLQotcHJvbWlzZV90ZXN0KHQgPT4gewotCi0gIHJl
dHVybiBtZXRob2RSZWplY3RzRm9yQWxsKHQsIFJlYWRhYmxlU3RyZWFtQllPQlJlYWRlci5wcm90
b3R5cGUsICdjYW5jZWwnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZmFrZVJTQllP
QlJlYWRlcigpLCByZWFsUlMoKSwgcmVhbFJCU0NvbnRyb2xsZXIoKSwgdW5kZWZpbmVkLCBudWxs
XSk7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbUJZT0JSZWFkZXIucHJvdG90eXBlLmNhbmNlbCBlbmZv
cmNlcyBhIGJyYW5kIGNoZWNrJyk7Ci0KLXByb21pc2VfdGVzdCh0ID0+IHsKLQotICByZXR1cm4g
bWV0aG9kUmVqZWN0c0ZvckFsbCh0LCBSZWFkYWJsZVN0cmVhbUJZT0JSZWFkZXIucHJvdG90eXBl
LCAncmVhZCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmYWtlUlNCWU9CUmVhZGVy
KCksIHJlYWxSUygpLCByZWFsUkJTQ29udHJvbGxlcigpLCB1bmRlZmluZWQsIG51bGxdLCBbbmV3
IFVpbnQ4QXJyYXkoMSldKTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtQllPQlJlYWRlci5wcm90b3R5
cGUucmVhZCBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrJyk7Ci0KLXRlc3QoKCkgPT4gewotCi0gIG1l
dGhvZFRocm93c0ZvckFsbChSZWFkYWJsZVN0cmVhbUJZT0JSZWFkZXIucHJvdG90eXBlLCAncmVs
ZWFzZUxvY2snLAotICAgICAgICAgICAgICAgICAgICAgW2Zha2VSU0JZT0JSZWFkZXIoKSwgcmVh
bFJTKCksIHJlYWxSQlNDb250cm9sbGVyKCksIHVuZGVmaW5lZCwgbnVsbF0pOwotCi19LCAnUmVh
ZGFibGVTdHJlYW1CWU9CUmVhZGVyLnByb3RvdHlwZS5yZWxlYXNlTG9jayBlbmZvcmNlcyBhIGJy
YW5kIGNoZWNrJyk7Ci0KLXRlc3QoKCkgPT4gewotCi0gIGFzc2VydF90aHJvd3MobmV3IFR5cGVF
cnJvcigpLCAoKSA9PiBuZXcgUmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlcihmYWtlUlMoKSks
Ci0gICAgICAgICAgICAgICAgJ0NvbnN0cnVjdGluZyBhIFJlYWRhYmxlQnl0ZVN0cmVhbUNvbnRy
b2xsZXIgc2hvdWxkIHRocm93Jyk7Ci0KLX0sICdSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVy
IGVuZm9yY2VzIGEgYnJhbmQgY2hlY2sgb24gaXRzIGFyZ3VtZW50cycpOwotCi10ZXN0KCgpID0+
IHsKLQotICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gbmV3IFJlYWRhYmxl
Qnl0ZVN0cmVhbUNvbnRyb2xsZXIocmVhbFJTKCkpLAotICAgICAgICAgICAgICAgICdDb25zdHJ1
Y3RpbmcgYSBSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyIHNob3VsZCB0aHJvdycpOwotCi19
LCAnUmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlciBjYW5cJ3QgYmUgZ2l2ZW4gYSBmdWxseS1j
b25zdHJ1Y3RlZCBSZWFkYWJsZVN0cmVhbScpOwotCi10ZXN0KCgpID0+IHsKLQotICBnZXR0ZXJU
aHJvd3NGb3JBbGwoUmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlci5wcm90b3R5cGUsICdieW9i
UmVxdWVzdCcsCi0gICAgICAgICAgICAgICAgICAgICBbZmFrZVJCU0NvbnRyb2xsZXIoKSwgcmVh
bFJTKCksIHJlYWxSU0JZT0JSZWFkZXIoKSwgdW5kZWZpbmVkLCBudWxsXSk7Ci0KLX0sICdSZWFk
YWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyLnByb3RvdHlwZS5ieW9iUmVxdWVzdCBlbmZvcmNlcyBh
IGJyYW5kIGNoZWNrJyk7Ci0KLXRlc3QoKCkgPT4gewotCi0gIG1ldGhvZFRocm93c0ZvckFsbChS
ZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyLnByb3RvdHlwZSwgJ2Nsb3NlJywKLSAgICAgICAg
ICAgICAgICAgICAgIFtmYWtlUkJTQ29udHJvbGxlcigpLCByZWFsUlMoKSwgcmVhbFJTQllPQlJl
YWRlcigpLCB1bmRlZmluZWQsIG51bGxdKTsKLQotfSwgJ1JlYWRhYmxlQnl0ZVN0cmVhbUNvbnRy
b2xsZXIucHJvdG90eXBlLmNsb3NlIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2snKTsKLQotdGVzdCgo
KSA9PiB7Ci0KLSAgbWV0aG9kVGhyb3dzRm9yQWxsKFJlYWRhYmxlQnl0ZVN0cmVhbUNvbnRyb2xs
ZXIucHJvdG90eXBlLCAnZW5xdWV1ZScsCi0gICAgICAgICAgICAgICAgICAgICBbZmFrZVJCU0Nv
bnRyb2xsZXIoKSwgcmVhbFJTKCksIHJlYWxSU0JZT0JSZWFkZXIoKSwgdW5kZWZpbmVkLCBudWxs
XSwgW25ldyBVaW50OEFycmF5KDEpXSk7Ci0KLX0sICdSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9s
bGVyLnByb3RvdHlwZS5lbnF1ZXVlIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2snKTsKLQotdGVzdCgo
KSA9PiB7Ci0KLSAgbWV0aG9kVGhyb3dzRm9yQWxsKFJlYWRhYmxlQnl0ZVN0cmVhbUNvbnRyb2xs
ZXIucHJvdG90eXBlLCAnZXJyb3InLAotICAgICAgICAgICAgICAgICAgICAgW2Zha2VSQlNDb250
cm9sbGVyKCksIHJlYWxSUygpLCByZWFsUlNCWU9CUmVhZGVyKCksIHVuZGVmaW5lZCwgbnVsbF0p
OwotCi19LCAnUmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlci5wcm90b3R5cGUuZXJyb3IgZW5m
b3JjZXMgYSBicmFuZCBjaGVjaycpOwotCi0vLyBSZWFkYWJsZVN0cmVhbUJZT0JSZXF1ZXN0IGNh
biBvbmx5IGJlIGFjY2Vzc2VkIGFzeW5jaHJvbm91c2x5LCBzbyBjcmFtIGV2ZXJ5dGhpbmcgaW50
byBvbmUgdGVzdC4KLXByb21pc2VfdGVzdCh0ID0+IHsKLQotICBsZXQgUmVhZGFibGVTdHJlYW1C
WU9CUmVxdWVzdDsKLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHB1bGwo
Y29udHJvbGxlcikgewotICAgICAgcmV0dXJuIHQuc3RlcCgoKSA9PiB7Ci0gICAgICAgIGNvbnN0
IGJ5b2JSZXF1ZXN0ID0gY29udHJvbGxlci5ieW9iUmVxdWVzdDsKLSAgICAgICAgUmVhZGFibGVT
dHJlYW1CWU9CUmVxdWVzdCA9IGJ5b2JSZXF1ZXN0LmNvbnN0cnVjdG9yOwotICAgICAgICBicmFu
ZENoZWNrcygpOwotICAgICAgICBieW9iUmVxdWVzdC5yZXNwb25kKDEpOwotICAgICAgfSk7Ci0g
ICAgfSwKLSAgICB0eXBlOiAnYnl0ZXMnCi0gIH0pOwotICBjb25zdCByZWFkZXIgPSBycy5nZXRS
ZWFkZXIoeyBtb2RlOiAnYnlvYicgfSk7Ci0gIHJldHVybiByZWFkZXIucmVhZChuZXcgVWludDhB
cnJheSgxKSk7Ci0KLSAgZnVuY3Rpb24gZmFrZVJTQllPQlJlcXVlc3QoKSB7Ci0gICAgcmV0dXJu
IE9iamVjdC5zZXRQcm90b3R5cGVPZih7Ci0gICAgICBnZXQgdmlldygpIHt9LAotICAgICAgcmVz
cG9uZCgpIHt9LAotICAgICAgcmVzcG9uZFdpdGhOZXdWaWV3KCkge30KLSAgICB9LCBSZWFkYWJs
ZVN0cmVhbUJZT0JSZXF1ZXN0LnByb3RvdHlwZSk7Ci0gIH0KLQotICBmdW5jdGlvbiBicmFuZENo
ZWNrcygpIHsKLSAgICBmb3IgKGNvbnN0IGJhZENvbnRyb2xsZXIgb2YgW2Zha2VSQlNDb250cm9s
bGVyKCksIHJlYWxSUygpLCByZWFsUlNCWU9CUmVhZGVyKCksIHVuZGVmaW5lZCwgbnVsbF0pIHsK
LSAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBuZXcgUmVhZGFibGVT
dHJlYW1CWU9CUmVxdWVzdChiYWRDb250cm9sbGVyLCBuZXcgVWludDhBcnJheSgxKSksCi0gICAg
ICAgICAgICAgICAgICAgICdSZWFkYWJsZVN0cmVhbUJZT0JSZXF1ZXN0IGNvbnN0cnVjdG9yIG11
c3QgdGhyb3cgZm9yIGFuIGludmFsaWQgY29udHJvbGxlciBhcmd1bWVudCcpOwotICAgIH0KLSAg
ICBnZXR0ZXJUaHJvd3NGb3JBbGwoUmVhZGFibGVTdHJlYW1CWU9CUmVxdWVzdC5wcm90b3R5cGUs
ICd2aWV3JywKLSAgICAgICAgICAgICAgICAgICAgICAgW2Zha2VSU0JZT0JSZXF1ZXN0KCksIHJl
YWxSUygpLCByZWFsUlNCWU9CUmVhZGVyKCksIHJlYWxSQlNDb250cm9sbGVyKCksIHVuZGVmaW5l
ZCwgbnVsbF0pOwotICAgIG1ldGhvZFRocm93c0ZvckFsbChSZWFkYWJsZVN0cmVhbUJZT0JSZXF1
ZXN0LnByb3RvdHlwZSwgJ3Jlc3BvbmQnLAotICAgICAgICAgICAgICAgICAgICAgICBbZmFrZVJT
QllPQlJlcXVlc3QoKSwgcmVhbFJTKCksIHJlYWxSU0JZT0JSZWFkZXIoKSwgcmVhbFJCU0NvbnRy
b2xsZXIoKSwgdW5kZWZpbmVkLCBudWxsXSwgWzFdKTsKLSAgICBtZXRob2RUaHJvd3NGb3JBbGwo
UmVhZGFibGVTdHJlYW1CWU9CUmVxdWVzdC5wcm90b3R5cGUsICdyZXNwb25kV2l0aE5ld1ZpZXcn
LAotICAgICAgICAgICAgICAgICAgICAgICBbZmFrZVJTQllPQlJlcXVlc3QoKSwgcmVhbFJTKCks
IHJlYWxSU0JZT0JSZWFkZXIoKSwgcmVhbFJCU0NvbnRyb2xsZXIoKSwgdW5kZWZpbmVkLCBudWxs
XSwKLSAgICAgICAgICAgICAgICAgICAgICAgW25ldyBVaW50OEFycmF5KDEpXSk7Ci0gIH0KLQot
fSwgJ1JlYWRhYmxlU3RyZWFtQllPQlJlcXVlc3QgZW5mb3JjZXMgYnJhbmQgY2hlY2tzJyk7Ci0K
LWRvbmUoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMvYnJhbmQtY2hlY2tzLnNlcnZp
Y2V3b3JrZXIuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFtcy9icmFuZC1jaGVj
a3Muc2VydmljZXdvcmtlci5odHRwcy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDEyMDhhMmMzNDc4ZGFkNDRiMWUzNGJmMjdiMTQ2OTJmODQ2OWIyNWQuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFt
cy9icmFuZC1jaGVja3Muc2VydmljZXdvcmtlci5odHRwcy1leHBlY3RlZC50eHQKKysrIC9kZXYv
bnVsbApAQCAtMSwxNyArMCwwIEBACi0KLVBBU1MgU2VydmljZSB3b3JrZXIgdGVzdCBzZXR1cCAK
LVBBU1MgQ2FuIGdldCB0aGUgUmVhZGFibGVTdHJlYW1CWU9CUmVhZGVyIGNvbnN0cnVjdG9yIGlu
ZGlyZWN0bHkgCi1QQVNTIENhbiBnZXQgdGhlIFJlYWRhYmxlQnl0ZVN0cmVhbUNvbnRyb2xsZXIg
Y29uc3RydWN0b3IgaW5kaXJlY3RseSAKLVBBU1MgUmVhZGFibGVTdHJlYW1CWU9CUmVhZGVyIGVu
Zm9yY2VzIGEgYnJhbmQgY2hlY2sgb24gaXRzIGFyZ3VtZW50IAotUEFTUyBSZWFkYWJsZVN0cmVh
bUJZT0JSZWFkZXIucHJvdG90eXBlLmNsb3NlZCBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrIAotUEFT
UyBSZWFkYWJsZVN0cmVhbUJZT0JSZWFkZXIucHJvdG90eXBlLmNhbmNlbCBlbmZvcmNlcyBhIGJy
YW5kIGNoZWNrIAotUEFTUyBSZWFkYWJsZVN0cmVhbUJZT0JSZWFkZXIucHJvdG90eXBlLnJlYWQg
ZW5mb3JjZXMgYSBicmFuZCBjaGVjayAKLVBBU1MgUmVhZGFibGVTdHJlYW1CWU9CUmVhZGVyLnBy
b3RvdHlwZS5yZWxlYXNlTG9jayBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrIAotUEFTUyBSZWFkYWJs
ZUJ5dGVTdHJlYW1Db250cm9sbGVyIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2sgb24gaXRzIGFyZ3Vt
ZW50cyAKLVBBU1MgUmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlciBjYW4ndCBiZSBnaXZlbiBh
IGZ1bGx5LWNvbnN0cnVjdGVkIFJlYWRhYmxlU3RyZWFtIAotUEFTUyBSZWFkYWJsZUJ5dGVTdHJl
YW1Db250cm9sbGVyLnByb3RvdHlwZS5ieW9iUmVxdWVzdCBlbmZvcmNlcyBhIGJyYW5kIGNoZWNr
IAotUEFTUyBSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyLnByb3RvdHlwZS5jbG9zZSBlbmZv
cmNlcyBhIGJyYW5kIGNoZWNrIAotUEFTUyBSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyLnBy
b3RvdHlwZS5lbnF1ZXVlIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2sgCi1QQVNTIFJlYWRhYmxlQnl0
ZVN0cmVhbUNvbnRyb2xsZXIucHJvdG90eXBlLmVycm9yIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2sg
Ci1QQVNTIFJlYWRhYmxlU3RyZWFtQllPQlJlcXVlc3QgZW5mb3JjZXMgYnJhbmQgY2hlY2tzIAot
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL2JyYW5kLWNoZWNrcy5zZXJ2aWNld29ya2Vy
Lmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL2JyYW5kLWNoZWNrcy5zZXJ2aWNld29ya2Vy
Lmh0dHBzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI0MzljZGI5NWU5ODli
N2U3NDI3NTYyY2U2MjdhZDE3YzgyY2I5NzUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFtcy9icmFuZC1jaGVja3Muc2VydmljZXdv
cmtlci5odHRwcy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotPCFET0NUWVBF
IGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08dGl0bGU+YnJhbmQtY2hlY2tzLmpzIHNl
cnZpY2Ugd29ya2VyIHdyYXBwZXIgZmlsZTwvdGl0bGU+Ci0KLTxzY3JpcHQgc3JjPSIvcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rl
c3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvc2VydmljZS13b3Jr
ZXJzL3NlcnZpY2Utd29ya2VyL3Jlc291cmNlcy90ZXN0LWhlbHBlcnMuc3ViLmpzIj48L3Njcmlw
dD4KLQotPHNjcmlwdD4KLSd1c2Ugc3RyaWN0JzsKLXNlcnZpY2Vfd29ya2VyX3Rlc3QoJ2JyYW5k
LWNoZWNrcy5qcycsICdTZXJ2aWNlIHdvcmtlciB0ZXN0IHNldHVwJyk7Ci08L3NjcmlwdD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMvYnJhbmQtY2hlY2tzLnNoYXJlZHdvcmtlci1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL2JyYW5kLWNoZWNrcy5zaGFyZWR3b3JrZXItZXhw
ZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwOWQ1ZDI1MDlkNzg0N2U4
Y2Q2ZmU2NjA2YWE2MGNkZDMzYWE0NzRlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMvYnJhbmQtY2hlY2tzLnNoYXJlZHdvcmtl
ci1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLUNPTlNPTEUgTUVT
U0FHRTogUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IFNoYXJlZFdvcmtlcgot
Ci1IYXJuZXNzIEVycm9yIChGQUlMKSwgbWVzc2FnZSA9IFJlZmVyZW5jZUVycm9yOiBDYW4ndCBm
aW5kIHZhcmlhYmxlOiBTaGFyZWRXb3JrZXIKLQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJl
YW1zL2JyYW5kLWNoZWNrcy5zaGFyZWR3b3JrZXIuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMvYnJh
bmQtY2hlY2tzLnNoYXJlZHdvcmtlci5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBjZmY3MmVjYTQ2MzQxZmRkNjY2M2VjMTM5ZDg3MWUxYjgxMzQ0YjIwLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMvYnJhbmQt
Y2hlY2tzLnNoYXJlZHdvcmtlci5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAot
PCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08dGl0bGU+YnJhbmQtY2hl
Y2tzLmpzIHNoYXJlZCB3b3JrZXIgd3JhcHBlciBmaWxlPC90aXRsZT4KLQotPHNjcmlwdCBzcmM9
Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9yZXNv
dXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotCi08c2NyaXB0PgotJ3VzZSBz
dHJpY3QnOwotZmV0Y2hfdGVzdHNfZnJvbV93b3JrZXIobmV3IFNoYXJlZFdvcmtlcignYnJhbmQt
Y2hlY2tzLmpzJykpOwotPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL2Nv
bnN0cnVjdC1ieW9iLXJlcXVlc3QuYW55LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMv
Y29uc3RydWN0LWJ5b2ItcmVxdWVzdC5hbnktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUzMTE1
NzE1ZjA3Njg4YWNjNWQxZmM5ODMyNjIzYTlhYzg3OTY1NjIKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFi
bGUtYnl0ZS1zdHJlYW1zL2NvbnN0cnVjdC1ieW9iLXJlcXVlc3QuYW55LWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDUgQEAKK0NPTlNPTEUgTUVTU0FHRTogUmVmZXJlbmNlRXJyb3I6IENhbid0IGZp
bmQgdmFyaWFibGU6IFJlYWRhYmxlQnl0ZVN0cmVhbUNvbnRyb2xsZXIKKworSGFybmVzcyBFcnJv
ciAoRkFJTCksIG1lc3NhZ2UgPSBSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTog
UmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlcgorCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0
cmVhbXMvY29uc3RydWN0LWJ5b2ItcmVxdWVzdC5hbnkuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMv
Y29uc3RydWN0LWJ5b2ItcmVxdWVzdC5hbnkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMzgyOTEzNTI4ZTY5
M2IzYTVkNTZjNjYwYTQ1MDYwOTgwYjU0OGMzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLWJ5dGUt
c3RyZWFtcy9jb25zdHJ1Y3QtYnlvYi1yZXF1ZXN0LmFueS5odG1sCkBAIC0wLDAgKzEgQEAKKzwh
LS0gVGhpcyBmaWxlIGlzIHJlcXVpcmVkIGZvciBXZWJLaXQgdGVzdCBpbmZyYXN0cnVjdHVyZSB0
byBydW4gdGhlIHRlbXBsYXRlZCB0ZXN0IC0tPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMvY29uc3RydWN0LWJ5b2ItcmVxdWVzdC5hbnku
anMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
cmVhZGFibGUtYnl0ZS1zdHJlYW1zL2NvbnN0cnVjdC1ieW9iLXJlcXVlc3QuYW55LmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjEzODZkODQ1OTlhNGNkM2U3YjE5N2M5ODJmOGY5OWMzNWY1M2Q1YzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL2NvbnN0cnVjdC1ieW9iLXJlcXVlc3QuYW55Lmpz
CkBAIC0wLDAgKzEsNTMgQEAKKy8vIE1FVEE6IGdsb2JhbD13aW5kb3csd29ya2VyLGpzc2hlbGwK
Ky8vIE1FVEE6IHNjcmlwdD0uLi9yZXNvdXJjZXMvcnMtdXRpbHMuanMKKyd1c2Ugc3RyaWN0JzsK
KworLy8gUHJpb3IgdG8gd2hhdHdnL3N0cmVhbSM4NzAgaXQgd2FzIHBvc3NpYmxlIHRvIGNvbnN0
cnVjdCBhIFJlYWRhYmxlU3RyZWFtQllPQlJlcXVlc3QgZGlyZWN0bHkuIFRoaXMgbWFkZSBpdCBw
b3NzaWJsZQorLy8gdG8gY29uc3RydWN0IHJlcXVlc3RzIHRoYXQgd2VyZSBvdXQtb2Ytc3luYyB3
aXRoIHRoZSBzdGF0ZSBvZiB0aGUgUmVhZGFibGVTdHJlYW0uIFRoZXkgY291bGQgdGhlbiBiZSB1
c2VkIHRvIGNhbGwKKy8vIGludGVybmFsIG9wZXJhdGlvbnMsIHJlc3VsdGluZyBpbiBhc3NlcnRz
IG9yIGJhZCBiZWhhdmlvdXIuIFRoaXMgZmlsZSBjb250YWlucyByZWdyZXNzaW9uIHRlc3RzIGZv
ciB0aGUgY2hhbmdlLgorCitmdW5jdGlvbiBnZXRSZWFsQnl0ZVN0cmVhbUNvbnRyb2xsZXIoKSB7
CisgIGxldCBjb250cm9sbGVyOworICBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMp
IHsKKyAgICAgIGNvbnRyb2xsZXIgPSBjOworICAgIH0sCisgICAgdHlwZTogJ2J5dGVzJworICB9
KTsKKyAgcmV0dXJuIGNvbnRyb2xsZXI7Cit9CisKKy8vIENyZWF0ZSBhbiBvYmplY3QgcHJldGVu
ZGluZyB0byBoYXZlIHByb3RvdHlwZSB8cHJvdG90eXBlfCwgb2YgdHlwZSB8dHlwZXwuIHx0eXBl
fCBpcyBvbmUgb2YgInVuZGVmaW5lZCIsICJudWxsIiwKKy8vICJmYWtlIiwgb3IgInJlYWwiLiAi
cmVhbCIgd2lsbCBjYWxsIHRoZSByZWFsT2JqZWN0Q3JlYXRvciBmdW5jdGlvbiB0byBnZXQgYSBy
ZWFsIGluc3RhbmNlIG9mIHRoZSBvYmplY3QuCitmdW5jdGlvbiBjcmVhdGVEdW1teU9iamVjdChw
cm90b3R5cGUsIHR5cGUsIHJlYWxPYmplY3RDcmVhdG9yKSB7CisgIHN3aXRjaCAodHlwZSkgewor
ICAgIGNhc2UgJ3VuZGVmaW5lZCc6CisgICAgICByZXR1cm4gdW5kZWZpbmVkOworCisgICAgY2Fz
ZSAnbnVsbCc6CisgICAgICByZXR1cm4gbnVsbDsKKworICAgIGNhc2UgJ2Zha2UnOgorICAgICAg
cmV0dXJuIE9iamVjdC5jcmVhdGUocHJvdG90eXBlKTsKKworICAgIGNhc2UgJ3JlYWwnOgorICAg
ICAgcmV0dXJuIHJlYWxPYmplY3RDcmVhdG9yKCk7CisgIH0KKworICB0aHJvdyBuZXcgRXJyb3Io
J25vdCByZWFjaGVkJyk7Cit9CisKK2NvbnN0IGR1bW15VHlwZXMgPSBbJ3VuZGVmaW5lZCcsICdu
dWxsJywgJ2Zha2UnLCAncmVhbCddOworCitmb3IgKGNvbnN0IGNvbnRyb2xsZXJUeXBlIG9mIGR1
bW15VHlwZXMpIHsKKyAgY29uc3QgY29udHJvbGxlciA9IGNyZWF0ZUR1bW15T2JqZWN0KFJlYWRh
YmxlQnl0ZVN0cmVhbUNvbnRyb2xsZXIucHJvdG90eXBlLCBjb250cm9sbGVyVHlwZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRSZWFsQnl0ZVN0cmVhbUNvbnRy
b2xsZXIpOworICBmb3IgKGNvbnN0IHZpZXdUeXBlIG9mIGR1bW15VHlwZXMpIHsKKyAgICBjb25z
dCB2aWV3ID0gY3JlYXRlRHVtbXlPYmplY3QoVWludDhBcnJheS5wcm90b3R5cGUsIHZpZXdUeXBl
LCAoKSA9PiBuZXcgVWludDhBcnJheSgxNikpOworICAgIHRlc3QoKCkgPT4geworICAgICAgYXNz
ZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IG5ldyBSZWFkYWJsZVN0cmVhbUJZT0JSZXF1
ZXN0KGNvbnRyb2xsZXIsIHZpZXcpLAorICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbnN0cnVj
dG9yIHNob3VsZCB0aHJvdycpOworICAgIH0sIGBSZWFkYWJsZVN0cmVhbUJZT0JSZXF1ZXN0IGNv
bnN0cnVjdG9yIHNob3VsZCB0aHJvdyB3aGVuIHBhc3NlZCBhICR7Y29udHJvbGxlclR5cGV9IGAg
KworICAgICAgICBgUmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlciBhbmQgYSAke3ZpZXdUeXBl
fSB2aWV3YCk7CisgIH0KK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMvY29uc3RydWN0
LWJ5b2ItcmVxdWVzdC5hbnkud29ya2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMv
Y29uc3RydWN0LWJ5b2ItcmVxdWVzdC5hbnkud29ya2VyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5lMzExNTcxNWYwNzY4OGFjYzVkMWZjOTgzMjYyM2E5YWM4Nzk2NTYyCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
L3JlYWRhYmxlLWJ5dGUtc3RyZWFtcy9jb25zdHJ1Y3QtYnlvYi1yZXF1ZXN0LmFueS53b3JrZXIt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNSBAQAorQ09OU09MRSBNRVNTQUdFOiBSZWZlcmVuY2VF
cnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogUmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlcgor
CitIYXJuZXNzIEVycm9yIChGQUlMKSwgbWVzc2FnZSA9IFJlZmVyZW5jZUVycm9yOiBDYW4ndCBm
aW5kIHZhcmlhYmxlOiBSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyCisKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3Jl
YWRhYmxlLWJ5dGUtc3RyZWFtcy9jb25zdHJ1Y3QtYnlvYi1yZXF1ZXN0LmFueS53b3JrZXIuaHRt
bCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9y
ZWFkYWJsZS1ieXRlLXN0cmVhbXMvY29uc3RydWN0LWJ5b2ItcmVxdWVzdC5hbnkud29ya2VyLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMjM4MjkxMzUyOGU2OTNiM2E1ZDU2YzY2MGE0NTA2MDk4MGI1NDhjMwot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMvY29uc3RydWN0LWJ5b2ItcmVxdWVz
dC5hbnkud29ya2VyLmh0bWwKQEAgLTAsMCArMSBAQAorPCEtLSBUaGlzIGZpbGUgaXMgcmVxdWly
ZWQgZm9yIFdlYktpdCB0ZXN0IGluZnJhc3RydWN0dXJlIHRvIHJ1biB0aGUgdGVtcGxhdGVkIHRl
c3QgLS0+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLWJ5dGUt
c3RyZWFtcy9kZXRhY2hlZC1idWZmZXJzLmRlZGljYXRlZHdvcmtlci1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFi
bGUtYnl0ZS1zdHJlYW1zL2RldGFjaGVkLWJ1ZmZlcnMuZGVkaWNhdGVkd29ya2VyLWV4cGVjdGVk
LnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODI4MTFmYjc0NGExYWNiMTNlM2Rl
N2NiMTAyMGU4Y2U0NzMwMWNjZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL2RldGFjaGVkLWJ1ZmZlcnMuZGVkaWNhdGVkd29y
a2VyLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLQotSGFybmVz
cyBFcnJvciAoVElNRU9VVCksIG1lc3NhZ2UgPSBudWxsCi0KLUZBSUwgUmVhZGFibGVTdHJlYW0g
d2l0aCBieXRlIHNvdXJjZTogcmVhZCgpaW5nIGZyb20gYSBjbG9zZWQgc3RyZWFtIHN0aWxsIHRy
YW5zZmVycyB0aGUgYnVmZmVyIGFzc2VydF9ub3RfZXF1YWxzOiBhIGRpZmZlcmVudCBBcnJheUJ1
ZmZlciBtdXN0IHVuZGVybGllIHRoZSB2YWx1ZSBnb3QgZGlzYWxsb3dlZCB2YWx1ZSBvYmplY3Qg
IltvYmplY3QgQXJyYXlCdWZmZXJdIgotRkFJTCBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291
cmNlOiByZWFkKClpbmcgZnJvbSBhIHN0cmVhbSB3aXRoIHF1ZXVlZCBjaHVua3Mgc3RpbGwgdHJh
bnNmZXJzIHRoZSBidWZmZXIgYXNzZXJ0X25vdF9lcXVhbHM6IGEgZGlmZmVyZW50IEFycmF5QnVm
ZmVyIG11c3QgdW5kZXJsaWUgdGhlIHZhbHVlIGdvdCBkaXNhbGxvd2VkIHZhbHVlIG9iamVjdCAi
W29iamVjdCBBcnJheUJ1ZmZlcl0iCi1GQUlMIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3Vy
Y2U6IGVucXVldWluZyBhbiBhbHJlYWR5LWRldGFjaGVkIGJ1ZmZlciB0aHJvd3MgYXNzZXJ0X3Ro
cm93czogZW5xdWV1aW5nIGFuIGFscmVhZHktZGV0YWNoZWQgYnVmZmVyIG11c3QgdGhyb3cgZnVu
Y3Rpb24gIigpID0+IGMuZW5xdWV1ZSh2aWV3KSIgZGlkIG5vdCB0aHJvdwotVElNRU9VVCBSZWFk
YWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiByZWFkaW5nIGludG8gYW4gYWxyZWFkeS1kZXRh
Y2hlZCBidWZmZXIgcmVqZWN0cyBUZXN0IHRpbWVkIG91dAotRkFJTCBSZWFkYWJsZVN0cmVhbSB3
aXRoIGJ5dGUgc291cmNlOiByZXNwb25kKCkgdGhyb3dzIGlmIHRoZSBCWU9CIHJlcXVlc3QncyBi
dWZmZXIgaGFzIGJlZW4gZGV0YWNoZWQgKGluIHRoZSByZWFkYWJsZSBzdGF0ZSkgYXNzZXJ0X3Ro
cm93czogcmVzcG9uZCgpIG11c3QgdGhyb3cgaWYgdGhlIGNvcnJlc3BvbmRpbmcgdmlldyBoYXMg
YmVjb21lIGRldGFjaGVkIGZ1bmN0aW9uICIoKSA9PiBjLmJ5b2JSZXF1ZXN0LnJlc3BvbmQoMSki
IGRpZCBub3QgdGhyb3cKLUZBSUwgUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogcmVz
cG9uZCgpIHRocm93cyBpZiB0aGUgQllPQiByZXF1ZXN0J3MgYnVmZmVyIGhhcyBiZWVuIGRldGFj
aGVkIChpbiB0aGUgY2xvc2VkIHN0YXRlKSBhc3NlcnRfdGhyb3dzOiByZXNwb25kKCkgbXVzdCB0
aHJvdyBpZiB0aGUgY29ycmVzcG9uZGluZyB2aWV3IGhhcyBiZWNvbWUgZGV0YWNoZWQgZnVuY3Rp
b24gIigpID0+IGMuYnlvYlJlcXVlc3QucmVzcG9uZCgwKSIgZGlkIG5vdCB0aHJvdwotRkFJTCBS
ZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiByZXNwb25kV2l0aE5ld1ZpZXcoKSB0aHJv
d3MgaWYgdGhlIHN1cHBsaWVkIHZpZXcncyBidWZmZXIgaGFzIGJlZW4gZGV0YWNoZWQgKGluIHRo
ZSByZWFkYWJsZSBzdGF0ZSkgYXNzZXJ0X3Rocm93czogcmVzcG9uZFdpdGhOZXdWaWV3KCkgbXVz
dCB0aHJvdyBpZiBwYXNzZWQgYSBkZXRhY2hlZCB2aWV3IGZ1bmN0aW9uICIoKSA9PiBjLmJ5b2JS
ZXF1ZXN0LnJlc3BvbmRXaXRoTmV3Vmlldyh2aWV3KSIgZGlkIG5vdCB0aHJvdwotRkFJTCBSZWFk
YWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiByZXNwb25kV2l0aE5ld1ZpZXcoKSB0aHJvd3Mg
aWYgdGhlIHN1cHBsaWVkIHZpZXcncyBidWZmZXIgaGFzIGJlZW4gZGV0YWNoZWQgKGluIHRoZSBj
bG9zZWQgc3RhdGUpIGFzc2VydF90aHJvd3M6IHJlc3BvbmRXaXRoTmV3VmlldygpIG11c3QgdGhy
b3cgaWYgcGFzc2VkIGEgKHplcm8tbGVuZ3RoKSB2aWV3IHdob3NlIGJ1ZmZlciBoYXMgYmVlbiBk
ZXRhY2hlZCBmdW5jdGlvbiAiKCkgPT4gYy5ieW9iUmVxdWVzdC5yZXNwb25kV2l0aE5ld1ZpZXco
emVyb0xlbmd0aFZpZXcpIiB0aHJldyBvYmplY3QgIlJhbmdlRXJyb3I6IEludmFsaWQgdmFsdWUg
Zm9yIHZpZXcuYnl0ZUxlbmd0aCIgKCJSYW5nZUVycm9yIikgZXhwZWN0ZWQgb2JqZWN0ICJUeXBl
RXJyb3IiICgiVHlwZUVycm9yIikKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFtcy9kZXRh
Y2hlZC1idWZmZXJzLmRlZGljYXRlZHdvcmtlci5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFtcy9kZXRh
Y2hlZC1idWZmZXJzLmRlZGljYXRlZHdvcmtlci5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBkNzIxMDgxYTU2NGQ1M2ZhYzQ0Njc5NDkyNzhiMGYxYzBkMWM5NzMyLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMv
ZGV0YWNoZWQtYnVmZmVycy5kZWRpY2F0ZWR3b3JrZXIuaHRtbAorKysgL2Rldi9udWxsCkBAIC0x
LDExICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHRp
dGxlPmRldGFjaGVkLWJ1ZmZlcnMuanMgZGVkaWNhdGVkIHdvcmtlciB3cmFwcGVyIGZpbGU8L3Rp
dGxlPgotCi08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+
Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+
Ci0KLTxzY3JpcHQ+Ci0ndXNlIHN0cmljdCc7Ci1mZXRjaF90ZXN0c19mcm9tX3dvcmtlcihuZXcg
V29ya2VyKCdkZXRhY2hlZC1idWZmZXJzLmpzJykpOwotPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFi
bGUtYnl0ZS1zdHJlYW1zL2RldGFjaGVkLWJ1ZmZlcnMuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMv
ZGV0YWNoZWQtYnVmZmVycy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5Y2Rj
MjliN2IyMGE2MDI2YzMyMTRhM2M4ZjY4OTIxYWZmYjFhMDU1Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMvZGV0YWNoZWQtYnVm
ZmVycy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+
Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08dGl0bGU+ZGV0YWNoZWQtYnVmZmVycy5qcyBicm93
c2VyIGNvbnRleHQgd3JhcHBlciBmaWxlPC90aXRsZT4KLQotPHNjcmlwdCBzcmM9Ii9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVz
dGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotCi0KLQotPHNjcmlwdCBzcmM9ImRldGFjaGVk
LWJ1ZmZlcnMuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFtcy9kZXRh
Y2hlZC1idWZmZXJzLmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFtcy9kZXRhY2hlZC1idWZmZXJzLmpzCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMWI0N2YwMTk1OTA4NDlkOWU3MTI3NmE4Zjc2
YTFiMWE3ZDJiZDllLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9y
ZWFkYWJsZS1ieXRlLXN0cmVhbXMvZGV0YWNoZWQtYnVmZmVycy5qcworKysgL2Rldi9udWxsCkBA
IC0xLDE1NiArMCwwIEBACi0ndXNlIHN0cmljdCc7Ci0KLWlmIChzZWxmLmltcG9ydFNjcmlwdHMp
IHsKLSAgc2VsZi5pbXBvcnRTY3JpcHRzKCcvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzJyk7Ci19
Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0gIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0
cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgYy5jbG9zZSgpOwotICAgIH0sCi0gICAgdHlw
ZTogJ2J5dGVzJwotICB9KTsKLQotICBjb25zdCByZWFkZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKHsg
bW9kZTogJ2J5b2InIH0pOwotICBjb25zdCB2aWV3ID0gbmV3IFVpbnQ4QXJyYXkoWzEsIDIsIDNd
KTsKLSAgcmV0dXJuIHJlYWRlci5yZWFkKHZpZXcpLnRoZW4oKHsgdmFsdWUsIGRvbmUgfSkgPT4g
ewotICAgIC8vIFNhbml0eSBjaGVja3MKLSAgICBhc3NlcnRfdHJ1ZSh2YWx1ZSBpbnN0YW5jZW9m
IFVpbnQ4QXJyYXksICdUaGUgdmFsdWUgcmVhZCBtdXN0IGJlIGEgVWludDhBcnJheScpOwotICAg
IGFzc2VydF9ub3RfZXF1YWxzKHZhbHVlLCB2aWV3LCAnVGhlIHZhbHVlIHJlYWQgbXVzdCBub3Qg
YmUgdGhlICpzYW1lKiBVaW50OEFycmF5Jyk7Ci0gICAgYXNzZXJ0X2FycmF5X2VxdWFscyh2YWx1
ZSwgW10sICdUaGUgdmFsdWUgcmVhZCBtdXN0IGJlIGFuIGVtcHR5IFVpbnQ4QXJyYXksIHNpbmNl
IHRoZSBzdHJlYW0gaXMgY2xvc2VkJyk7Ci0gICAgYXNzZXJ0X3RydWUoZG9uZSwgJ2RvbmUgbXVz
dCBiZSB0cnVlLCBzaW5jZSB0aGUgc3RyZWFtIGlzIGNsb3NlZCcpOwotCi0gICAgLy8gVGhlIGlt
cG9ydGFudCBhc3NlcnRpb25zCi0gICAgYXNzZXJ0X25vdF9lcXVhbHModmFsdWUuYnVmZmVyLCB2
aWV3LmJ1ZmZlciwgJ2EgZGlmZmVyZW50IEFycmF5QnVmZmVyIG11c3QgdW5kZXJsaWUgdGhlIHZh
bHVlJyk7Ci0gICAgYXNzZXJ0X2VxdWFscyh2aWV3LmJ1ZmZlci5ieXRlTGVuZ3RoLCAwLCAndGhl
IG9yaWdpbmFsIGJ1ZmZlciBtdXN0IGJlIGRldGFjaGVkJyk7Ci0gIH0pOwotfSwgJ1JlYWRhYmxl
U3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IHJlYWQoKWluZyBmcm9tIGEgY2xvc2VkIHN0cmVhbSBz
dGlsbCB0cmFuc2ZlcnMgdGhlIGJ1ZmZlcicpOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotICBj
b25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAg
IGMuZW5xdWV1ZShuZXcgVWludDhBcnJheShbMSwgMiwgM10pKTsKLSAgICB9LAotICAgIHR5cGU6
ICdieXRlcycKLSAgfSk7Ci0KLSAgY29uc3QgcmVhZGVyID0gc3RyZWFtLmdldFJlYWRlcih7IG1v
ZGU6ICdieW9iJyB9KTsKLSAgY29uc3QgdmlldyA9IG5ldyBVaW50OEFycmF5KFs0LCA1LCA2XSk7
Ci0gIHJldHVybiByZWFkZXIucmVhZCh2aWV3KS50aGVuKCh7IHZhbHVlLCBkb25lIH0pID0+IHsK
LSAgICAvLyBTYW5pdHkgY2hlY2tzCi0gICAgYXNzZXJ0X3RydWUodmFsdWUgaW5zdGFuY2VvZiBV
aW50OEFycmF5LCAnVGhlIHZhbHVlIHJlYWQgbXVzdCBiZSBhIFVpbnQ4QXJyYXknKTsKLSAgICBh
c3NlcnRfbm90X2VxdWFscyh2YWx1ZSwgdmlldywgJ1RoZSB2YWx1ZSByZWFkIG11c3Qgbm90IGJl
IHRoZSAqc2FtZSogVWludDhBcnJheScpOwotICAgIGFzc2VydF9hcnJheV9lcXVhbHModmFsdWUs
IFsxLCAyLCAzXSwgJ1RoZSB2YWx1ZSByZWFkIG11c3QgYmUgdGhlIGVucXVldWVkIFVpbnQ4QXJy
YXksIG5vdCB0aGUgb3JpZ2luYWwgdmFsdWVzJyk7Ci0gICAgYXNzZXJ0X2ZhbHNlKGRvbmUsICdk
b25lIG11c3QgYmUgZmFsc2UsIHNpbmNlIHRoZSBzdHJlYW0gaXMgbm90IGNsb3NlZCcpOwotCi0g
ICAgLy8gVGhlIGltcG9ydGFudCBhc3NlcnRpb25zCi0gICAgYXNzZXJ0X25vdF9lcXVhbHModmFs
dWUuYnVmZmVyLCB2aWV3LmJ1ZmZlciwgJ2EgZGlmZmVyZW50IEFycmF5QnVmZmVyIG11c3QgdW5k
ZXJsaWUgdGhlIHZhbHVlJyk7Ci0gICAgYXNzZXJ0X2VxdWFscyh2aWV3LmJ1ZmZlci5ieXRlTGVu
Z3RoLCAwLCAndGhlIG9yaWdpbmFsIGJ1ZmZlciBtdXN0IGJlIGRldGFjaGVkJyk7Ci0gIH0pOwot
fSwgJ1JlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IHJlYWQoKWluZyBmcm9tIGEgc3Ry
ZWFtIHdpdGggcXVldWVkIGNodW5rcyBzdGlsbCB0cmFuc2ZlcnMgdGhlIGJ1ZmZlcicpOwotCi10
ZXN0KCgpID0+IHsKLSAgY29uc3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBz
dGFydChjKSB7Ci0gICAgICBjb25zdCB2aWV3ID0gbmV3IFVpbnQ4QXJyYXkoWzEsIDIsIDNdKTsK
LSAgICAgIGMuZW5xdWV1ZSh2aWV3KTsKLSAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJv
cigpLCAoKSA9PiBjLmVucXVldWUodmlldyksICdlbnF1ZXVpbmcgYW4gYWxyZWFkeS1kZXRhY2hl
ZCBidWZmZXIgbXVzdCB0aHJvdycpOwotICAgIH0sCi0gICAgdHlwZTogJ2J5dGVzJwotICB9KTsK
LX0sICdSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBlbnF1ZXVpbmcgYW4gYWxyZWFk
eS1kZXRhY2hlZCBidWZmZXIgdGhyb3dzJyk7Ci0KLXByb21pc2VfdGVzdCh0ID0+IHsKLSAgY29u
c3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0gICAgICBj
LmVucXVldWUobmV3IFVpbnQ4QXJyYXkoWzEsIDIsIDNdKSk7Ci0gICAgfSwKLSAgICB0eXBlOiAn
Ynl0ZXMnCi0gIH0pOwotICBjb25zdCByZWFkZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKHsgbW9kZTog
J2J5b2InIH0pOwotCi0gIGNvbnN0IHZpZXcgPSBuZXcgVWludDhBcnJheShbNCwgNSwgNl0pOwot
ICByZXR1cm4gcmVhZGVyLnJlYWQodmlldykudGhlbigoKSA9PiB7Ci0gICAgLy8gdmlldyBpcyBu
b3cgZGV0YWNoZWQKLSAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHQsIG5ldyBUeXBlRXJyb3Io
KSwgcmVhZGVyLnJlYWQodmlldyksCi0gICAgICAncmVhZCh2aWV3KSBtdXN0IHJlamVjdCB3aGVu
IGdpdmVuIGFuIGFscmVhZHktZGV0YWNoZWQgYnVmZmVyJyk7Ci0gIH0pOwotfSwgJ1JlYWRhYmxl
U3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IHJlYWRpbmcgaW50byBhbiBhbHJlYWR5LWRldGFjaGVk
IGJ1ZmZlciByZWplY3RzJyk7Ci0KLWFzeW5jX3Rlc3QodCA9PiB7Ci0gIGNvbnN0IHN0cmVhbSA9
IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgcHVsbDogdC5zdGVwX2Z1bmNfZG9uZShjID0+IHsK
LSAgICAgIC8vIERldGFjaCBpdCBieSByZWFkaW5nIGludG8gaXQKLSAgICAgIHJlYWRlci5yZWFk
KGMuYnlvYlJlcXVlc3Qudmlldyk7Ci0KLSAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJv
cigpLCAoKSA9PiBjLmJ5b2JSZXF1ZXN0LnJlc3BvbmQoMSksCi0gICAgICAgICdyZXNwb25kKCkg
bXVzdCB0aHJvdyBpZiB0aGUgY29ycmVzcG9uZGluZyB2aWV3IGhhcyBiZWNvbWUgZGV0YWNoZWQn
KTsKLSAgICB9KSwKLSAgICB0eXBlOiAnYnl0ZXMnCi0gIH0pOwotICBjb25zdCByZWFkZXIgPSBz
dHJlYW0uZ2V0UmVhZGVyKHsgbW9kZTogJ2J5b2InIH0pOwotCi0gIHJlYWRlci5yZWFkKG5ldyBV
aW50OEFycmF5KFs0LCA1LCA2XSkpOwotfSwgJ1JlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3Vy
Y2U6IHJlc3BvbmQoKSB0aHJvd3MgaWYgdGhlIEJZT0IgcmVxdWVzdFwncyBidWZmZXIgaGFzIGJl
ZW4gZGV0YWNoZWQgKGluIHRoZSAnICsKLSAgICdyZWFkYWJsZSBzdGF0ZSknKTsKLQotYXN5bmNf
dGVzdCh0ID0+IHsKLSAgY29uc3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBw
dWxsOiB0LnN0ZXBfZnVuY19kb25lKGMgPT4gewotICAgICAgLy8gRGV0YWNoIGl0IGJ5IHJlYWRp
bmcgaW50byBpdAotICAgICAgcmVhZGVyLnJlYWQoYy5ieW9iUmVxdWVzdC52aWV3KTsKLQotICAg
ICAgYy5jbG9zZSgpOwotCi0gICAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkg
PT4gYy5ieW9iUmVxdWVzdC5yZXNwb25kKDApLAotICAgICAgICAncmVzcG9uZCgpIG11c3QgdGhy
b3cgaWYgdGhlIGNvcnJlc3BvbmRpbmcgdmlldyBoYXMgYmVjb21lIGRldGFjaGVkJyk7Ci0gICAg
fSksCi0gICAgdHlwZTogJ2J5dGVzJwotICB9KTsKLSAgY29uc3QgcmVhZGVyID0gc3RyZWFtLmdl
dFJlYWRlcih7IG1vZGU6ICdieW9iJyB9KTsKLQotICByZWFkZXIucmVhZChuZXcgVWludDhBcnJh
eShbNCwgNSwgNl0pKTsKLX0sICdSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiByZXNw
b25kKCkgdGhyb3dzIGlmIHRoZSBCWU9CIHJlcXVlc3RcJ3MgYnVmZmVyIGhhcyBiZWVuIGRldGFj
aGVkIChpbiB0aGUgJyArCi0gICAnY2xvc2VkIHN0YXRlKScpOwotCi1hc3luY190ZXN0KHQgPT4g
ewotICBjb25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHB1bGw6IHQuc3Rl
cF9mdW5jX2RvbmUoYyA9PiB7Ci0gICAgICAvLyBEZXRhY2ggaXQgYnkgcmVhZGluZyBpbnRvIGl0
Ci0gICAgICBjb25zdCB2aWV3ID0gbmV3IFVpbnQ4QXJyYXkoWzEsIDIsIDNdKTsKLSAgICAgIHJl
YWRlci5yZWFkKHZpZXcpOwotCi0gICAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwg
KCkgPT4gYy5ieW9iUmVxdWVzdC5yZXNwb25kV2l0aE5ld1ZpZXcodmlldyksCi0gICAgICAgICdy
ZXNwb25kV2l0aE5ld1ZpZXcoKSBtdXN0IHRocm93IGlmIHBhc3NlZCBhIGRldGFjaGVkIHZpZXcn
KTsKLSAgICB9KSwKLSAgICB0eXBlOiAnYnl0ZXMnCi0gIH0pOwotICBjb25zdCByZWFkZXIgPSBz
dHJlYW0uZ2V0UmVhZGVyKHsgbW9kZTogJ2J5b2InIH0pOwotCi0gIHJlYWRlci5yZWFkKG5ldyBV
aW50OEFycmF5KFs0LCA1LCA2XSkpOwotfSwgJ1JlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3Vy
Y2U6IHJlc3BvbmRXaXRoTmV3VmlldygpIHRocm93cyBpZiB0aGUgc3VwcGxpZWQgdmlld1wncyBi
dWZmZXIgaGFzIGJlZW4gZGV0YWNoZWQgJyArCi0gICAgJyhpbiB0aGUgcmVhZGFibGUgc3RhdGUp
Jyk7Ci0KLWFzeW5jX3Rlc3QodCA9PiB7Ci0gIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0
cmVhbSh7Ci0gICAgcHVsbDogdC5zdGVwX2Z1bmNfZG9uZShjID0+IHsKLSAgICAgIC8vIERldGFj
aCBpdCBieSByZWFkaW5nIGludG8gaXQKLSAgICAgIGNvbnN0IHZpZXcgPSBuZXcgVWludDhBcnJh
eShbMSwgMiwgM10pOwotICAgICAgcmVhZGVyLnJlYWQodmlldyk7Ci0KLSAgICAgIGMuY2xvc2Uo
KTsKLQotICAgICAgY29uc3QgemVyb0xlbmd0aFZpZXcgPSBuZXcgVWludDhBcnJheSh2aWV3LmJ1
ZmZlciwgMCwgMCk7Ci0gICAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4g
Yy5ieW9iUmVxdWVzdC5yZXNwb25kV2l0aE5ld1ZpZXcoemVyb0xlbmd0aFZpZXcpLAotICAgICAg
ICAncmVzcG9uZFdpdGhOZXdWaWV3KCkgbXVzdCB0aHJvdyBpZiBwYXNzZWQgYSAoemVyby1sZW5n
dGgpIHZpZXcgd2hvc2UgYnVmZmVyIGhhcyBiZWVuIGRldGFjaGVkJyk7Ci0gICAgfSksCi0gICAg
dHlwZTogJ2J5dGVzJwotICB9KTsKLSAgY29uc3QgcmVhZGVyID0gc3RyZWFtLmdldFJlYWRlcih7
IG1vZGU6ICdieW9iJyB9KTsKLQotICByZWFkZXIucmVhZChuZXcgVWludDhBcnJheShbNCwgNSwg
Nl0pKTsKLX0sICdSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiByZXNwb25kV2l0aE5l
d1ZpZXcoKSB0aHJvd3MgaWYgdGhlIHN1cHBsaWVkIHZpZXdcJ3MgYnVmZmVyIGhhcyBiZWVuIGRl
dGFjaGVkICcgKwotICAgJyhpbiB0aGUgY2xvc2VkIHN0YXRlKScpOwotCi1kb25lKCk7CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL2RldGFjaGVkLWJ1ZmZlcnMuc2VydmljZXdvcmtlci5o
dHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL2RldGFjaGVkLWJ1ZmZlcnMuc2Vy
dmljZXdvcmtlci5odHRwcy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDI4MGUwNTk4NDUxNDgzOWFmMDYwYTc4MzIyM2I1YTZiOTZjNGZkOWQuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFtcy9kZXRh
Y2hlZC1idWZmZXJzLnNlcnZpY2V3b3JrZXIuaHR0cHMtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251
bGwKQEAgLTEsMTMgKzAsMCBAQAotCi1IYXJuZXNzIEVycm9yIChUSU1FT1VUKSwgbWVzc2FnZSA9
IG51bGwKLQotVElNRU9VVCBTZXJ2aWNlIHdvcmtlciB0ZXN0IHNldHVwIFRlc3QgdGltZWQgb3V0
Ci1GQUlMIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IHJlYWQoKWluZyBmcm9tIGEg
Y2xvc2VkIHN0cmVhbSBzdGlsbCB0cmFuc2ZlcnMgdGhlIGJ1ZmZlciBhc3NlcnRfbm90X2VxdWFs
czogYSBkaWZmZXJlbnQgQXJyYXlCdWZmZXIgbXVzdCB1bmRlcmxpZSB0aGUgdmFsdWUgZ290IGRp
c2FsbG93ZWQgdmFsdWUgb2JqZWN0ICJbb2JqZWN0IEFycmF5QnVmZmVyXSIKLUZBSUwgUmVhZGFi
bGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogcmVhZCgpaW5nIGZyb20gYSBzdHJlYW0gd2l0aCBx
dWV1ZWQgY2h1bmtzIHN0aWxsIHRyYW5zZmVycyB0aGUgYnVmZmVyIGFzc2VydF9ub3RfZXF1YWxz
OiBhIGRpZmZlcmVudCBBcnJheUJ1ZmZlciBtdXN0IHVuZGVybGllIHRoZSB2YWx1ZSBnb3QgZGlz
YWxsb3dlZCB2YWx1ZSBvYmplY3QgIltvYmplY3QgQXJyYXlCdWZmZXJdIgotRkFJTCBSZWFkYWJs
ZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBlbnF1ZXVpbmcgYW4gYWxyZWFkeS1kZXRhY2hlZCBi
dWZmZXIgdGhyb3dzIGFzc2VydF90aHJvd3M6IGVucXVldWluZyBhbiBhbHJlYWR5LWRldGFjaGVk
IGJ1ZmZlciBtdXN0IHRocm93IGZ1bmN0aW9uICIoKSA9PiBjLmVucXVldWUodmlldykiIGRpZCBu
b3QgdGhyb3cKLVRJTUVPVVQgUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogcmVhZGlu
ZyBpbnRvIGFuIGFscmVhZHktZGV0YWNoZWQgYnVmZmVyIHJlamVjdHMgVGVzdCB0aW1lZCBvdXQK
LUZBSUwgUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogcmVzcG9uZCgpIHRocm93cyBp
ZiB0aGUgQllPQiByZXF1ZXN0J3MgYnVmZmVyIGhhcyBiZWVuIGRldGFjaGVkIChpbiB0aGUgcmVh
ZGFibGUgc3RhdGUpIGFzc2VydF90aHJvd3M6IHJlc3BvbmQoKSBtdXN0IHRocm93IGlmIHRoZSBj
b3JyZXNwb25kaW5nIHZpZXcgaGFzIGJlY29tZSBkZXRhY2hlZCBmdW5jdGlvbiAiKCkgPT4gYy5i
eW9iUmVxdWVzdC5yZXNwb25kKDEpIiBkaWQgbm90IHRocm93Ci1GQUlMIFJlYWRhYmxlU3RyZWFt
IHdpdGggYnl0ZSBzb3VyY2U6IHJlc3BvbmQoKSB0aHJvd3MgaWYgdGhlIEJZT0IgcmVxdWVzdCdz
IGJ1ZmZlciBoYXMgYmVlbiBkZXRhY2hlZCAoaW4gdGhlIGNsb3NlZCBzdGF0ZSkgYXNzZXJ0X3Ro
cm93czogcmVzcG9uZCgpIG11c3QgdGhyb3cgaWYgdGhlIGNvcnJlc3BvbmRpbmcgdmlldyBoYXMg
YmVjb21lIGRldGFjaGVkIGZ1bmN0aW9uICIoKSA9PiBjLmJ5b2JSZXF1ZXN0LnJlc3BvbmQoMCki
IGRpZCBub3QgdGhyb3cKLUZBSUwgUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogcmVz
cG9uZFdpdGhOZXdWaWV3KCkgdGhyb3dzIGlmIHRoZSBzdXBwbGllZCB2aWV3J3MgYnVmZmVyIGhh
cyBiZWVuIGRldGFjaGVkIChpbiB0aGUgcmVhZGFibGUgc3RhdGUpIGFzc2VydF90aHJvd3M6IHJl
c3BvbmRXaXRoTmV3VmlldygpIG11c3QgdGhyb3cgaWYgcGFzc2VkIGEgZGV0YWNoZWQgdmlldyBm
dW5jdGlvbiAiKCkgPT4gYy5ieW9iUmVxdWVzdC5yZXNwb25kV2l0aE5ld1ZpZXcodmlldykiIGRp
ZCBub3QgdGhyb3cKLUZBSUwgUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogcmVzcG9u
ZFdpdGhOZXdWaWV3KCkgdGhyb3dzIGlmIHRoZSBzdXBwbGllZCB2aWV3J3MgYnVmZmVyIGhhcyBi
ZWVuIGRldGFjaGVkIChpbiB0aGUgY2xvc2VkIHN0YXRlKSBhc3NlcnRfdGhyb3dzOiByZXNwb25k
V2l0aE5ld1ZpZXcoKSBtdXN0IHRocm93IGlmIHBhc3NlZCBhICh6ZXJvLWxlbmd0aCkgdmlldyB3
aG9zZSBidWZmZXIgaGFzIGJlZW4gZGV0YWNoZWQgZnVuY3Rpb24gIigpID0+IGMuYnlvYlJlcXVl
c3QucmVzcG9uZFdpdGhOZXdWaWV3KHplcm9MZW5ndGhWaWV3KSIgdGhyZXcgb2JqZWN0ICJSYW5n
ZUVycm9yOiBJbnZhbGlkIHZhbHVlIGZvciB2aWV3LmJ5dGVMZW5ndGgiICgiUmFuZ2VFcnJvciIp
IGV4cGVjdGVkIG9iamVjdCAiVHlwZUVycm9yIiAoIlR5cGVFcnJvciIpCi0KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFk
YWJsZS1ieXRlLXN0cmVhbXMvZGV0YWNoZWQtYnVmZmVycy5zZXJ2aWNld29ya2VyLmh0dHBzLmh0
bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
cmVhZGFibGUtYnl0ZS1zdHJlYW1zL2RldGFjaGVkLWJ1ZmZlcnMuc2VydmljZXdvcmtlci5odHRw
cy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYjdkMmM1NDYxNjkxNGFiNjc2
OWFhNWU2MzUxYzAyYzJhMGZiNWQxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMvZGV0YWNoZWQtYnVmZmVycy5zZXJ2aWNld29y
a2VyLmh0dHBzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi08IURPQ1RZUEUg
aHRtbD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTx0aXRsZT5kZXRhY2hlZC1idWZmZXJzLmpz
IHNlcnZpY2Ugd29ya2VyIHdyYXBwZXIgZmlsZTwvdGl0bGU+Ci0KLTxzY3JpcHQgc3JjPSIvcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvc2VydmljZS13
b3JrZXJzL3NlcnZpY2Utd29ya2VyL3Jlc291cmNlcy90ZXN0LWhlbHBlcnMuc3ViLmpzIj48L3Nj
cmlwdD4KLQotPHNjcmlwdD4KLSd1c2Ugc3RyaWN0JzsKLXNlcnZpY2Vfd29ya2VyX3Rlc3QoJ2Rl
dGFjaGVkLWJ1ZmZlcnMuanMnLCAnU2VydmljZSB3b3JrZXIgdGVzdCBzZXR1cCcpOwotPC9zY3Jp
cHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL2RldGFjaGVkLWJ1ZmZlcnMuc2hhcmVk
d29ya2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMvZGV0YWNoZWQtYnVmZmVycy5z
aGFyZWR3b3JrZXItZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
OWQ1ZDI1MDlkNzg0N2U4Y2Q2ZmU2NjA2YWE2MGNkZDMzYWE0NzRlLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMvZGV0YWNoZWQt
YnVmZmVycy5zaGFyZWR3b3JrZXItZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNSAr
MCwwIEBACi1DT05TT0xFIE1FU1NBR0U6IFJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlh
YmxlOiBTaGFyZWRXb3JrZXIKLQotSGFybmVzcyBFcnJvciAoRkFJTCksIG1lc3NhZ2UgPSBSZWZl
cmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogU2hhcmVkV29ya2VyCi0KLQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
L3JlYWRhYmxlLWJ5dGUtc3RyZWFtcy9kZXRhY2hlZC1idWZmZXJzLnNoYXJlZHdvcmtlci5odG1s
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3Jl
YWRhYmxlLWJ5dGUtc3RyZWFtcy9kZXRhY2hlZC1idWZmZXJzLnNoYXJlZHdvcmtlci5odG1sCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYWM2OTE3ZDUwNmMwMzcwYmMwMjVmN2RiOGU0
ZmNhMjkwOTQ5MzRlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9y
ZWFkYWJsZS1ieXRlLXN0cmVhbXMvZGV0YWNoZWQtYnVmZmVycy5zaGFyZWR3b3JrZXIuaHRtbAor
KysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hh
cnNldD0idXRmLTgiPgotPHRpdGxlPmRldGFjaGVkLWJ1ZmZlcnMuanMgc2hhcmVkIHdvcmtlciB3
cmFwcGVyIGZpbGU8L3RpdGxlPgotCi08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVz
cy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9y
dC5qcyI+PC9zY3JpcHQ+Ci0KLTxzY3JpcHQ+Ci0ndXNlIHN0cmljdCc7Ci1mZXRjaF90ZXN0c19m
cm9tX3dvcmtlcihuZXcgU2hhcmVkV29ya2VyKCdkZXRhY2hlZC1idWZmZXJzLmpzJykpOwotPC9z
Y3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL2dlbmVyYWwuYW55LWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMvZ2VuZXJhbC5hbnktZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjQzOWIwYTU3OTBlMTYwNTZlYTdiYmYyYzJjZGM5MDgwMzZiZjJmYjkKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL2dlbmVyYWwuYW55LWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDgzIEBACisKK0hhcm5lc3MgRXJyb3IgKFRJTUVPVVQpLCBtZXNzYWdlID0gbnVsbAorCitQ
QVNTIGdldFJlYWRlcih7bW9kZTogImJ5b2IifSkgdGhyb3dzIG9uIG5vbi1ieXRlcyBzdHJlYW1z
IAorUEFTUyBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlIGNhbiBiZSBjb25zdHJ1Y3Rl
ZCB3aXRoIG5vIGVycm9ycyAKK1BBU1MgZ2V0UmVhZGVyKHttb2RlfSkgbXVzdCBwZXJmb3JtIFRv
U3RyaW5nKCkgCitQQVNTIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IENvbnN0cnVj
dCBhbmQgZXhwZWN0IHN0YXJ0IGFuZCBwdWxsIGJlaW5nIGNhbGxlZCAKK1BBU1MgUmVhZGFibGVT
dHJlYW0gd2l0aCBieXRlIHNvdXJjZTogTm8gYXV0b21hdGljIHB1bGwgY2FsbCBpZiBzdGFydCBk
b2Vzbid0IGZpbmlzaCAKK1BBU1MgUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogQ29u
c3RydWN0IHdpdGggaGlnaFdhdGVyTWFyayBvZiAwIAorUEFTUyBSZWFkYWJsZVN0cmVhbSB3aXRo
IGJ5dGUgc291cmNlOiBkZXNpcmVkU2l6ZSB3aGVuIGNsb3NlZCAKK1BBU1MgUmVhZGFibGVTdHJl
YW0gd2l0aCBieXRlIHNvdXJjZTogZGVzaXJlZFNpemUgd2hlbiBlcnJvcmVkIAorUEFTUyBSZWFk
YWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBnZXRSZWFkZXIoKSwgdGhlbiByZWxlYXNlTG9j
aygpIAorUEFTUyBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBnZXRSZWFkZXIoKSB3
aXRoIG1vZGUgc2V0IHRvIGJ5b2IsIHRoZW4gcmVsZWFzZUxvY2soKSAKK1BBU1MgUmVhZGFibGVT
dHJlYW0gd2l0aCBieXRlIHNvdXJjZTogVGVzdCB0aGF0IGNsb3NpbmcgYSBzdHJlYW0gZG9lcyBu
b3QgcmVsZWFzZSBhIHJlYWRlciBhdXRvbWF0aWNhbGx5IAorUEFTUyBSZWFkYWJsZVN0cmVhbSB3
aXRoIGJ5dGUgc291cmNlOiBUZXN0IHRoYXQgY2xvc2luZyBhIHN0cmVhbSBkb2VzIG5vdCByZWxl
YXNlIGEgQllPQiByZWFkZXIgYXV0b21hdGljYWxseSAKK1BBU1MgUmVhZGFibGVTdHJlYW0gd2l0
aCBieXRlIHNvdXJjZTogVGVzdCB0aGF0IGVycm9yaW5nIGEgc3RyZWFtIGRvZXMgbm90IHJlbGVh
c2UgYSByZWFkZXIgYXV0b21hdGljYWxseSAKK1BBU1MgUmVhZGFibGVTdHJlYW0gd2l0aCBieXRl
IHNvdXJjZTogVGVzdCB0aGF0IGVycm9yaW5nIGEgc3RyZWFtIGRvZXMgbm90IHJlbGVhc2UgYSBC
WU9CIHJlYWRlciBhdXRvbWF0aWNhbGx5IAorUEFTUyBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUg
c291cmNlOiByZWxlYXNlTG9jaygpIG9uIFJlYWRhYmxlU3RyZWFtUmVhZGVyIHdpdGggcGVuZGlu
ZyByZWFkKCkgbXVzdCB0aHJvdyAKK1BBU1MgUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJj
ZTogQXV0b21hdGljIHB1bGwoKSBhZnRlciBzdGFydCgpIAorUEFTUyBSZWFkYWJsZVN0cmVhbSB3
aXRoIGJ5dGUgc291cmNlOiBBdXRvbWF0aWMgcHVsbCgpIGFmdGVyIHN0YXJ0KCkgYW5kIHJlYWQo
KSAKK0ZBSUwgUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogYXV0b0FsbG9jYXRlQ2h1
bmtTaXplIGFzc2VydF9lcXVhbHM6IHB1bGwoKSBtdXN0IGhhdmUgYmVlbiBpbnZva2VkIHR3aWNl
IGV4cGVjdGVkIDIgYnV0IGdvdCAxCitQQVNTIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3Vy
Y2U6IE1peCBvZiBhdXRvIGFsbG9jYXRlIGFuZCBCWU9CIAorUEFTUyBSZWFkYWJsZVN0cmVhbSB3
aXRoIGJ5dGUgc291cmNlOiBBdXRvbWF0aWMgcHVsbCgpIGFmdGVyIHN0YXJ0KCkgYW5kIHJlYWQo
dmlldykgCitQQVNTIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IGVucXVldWUoKSwg
Z2V0UmVhZGVyKCksIHRoZW4gcmVhZCgpIAorUEFTUyBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUg
c291cmNlOiBQdXNoIHNvdXJjZSB0aGF0IGRvZXNuJ3QgdW5kZXJzdGFuZCBwdWxsIHNpZ25hbCAK
K0ZBSUwgUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogcHVsbCgpIGZ1bmN0aW9uIGlz
IG5vdCBjYWxsYWJsZSBhc3NlcnRfdGhyb3dzX2pzOiBjb25zdHJ1Y3RvciBzaG91bGQgdGhyb3cg
ZnVuY3Rpb24gIigpID0+IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgcHVsbDogJ2ZvbycsCisg
ICAgdHlwZTogJ2J5dGVzJworICB9KSIgZGlkIG5vdCB0aHJvdworUEFTUyBSZWFkYWJsZVN0cmVh
bSB3aXRoIGJ5dGUgc291cmNlOiBlbnF1ZXVlKCkgd2l0aCBVaW50MTZBcnJheSwgZ2V0UmVhZGVy
KCksIHRoZW4gcmVhZCgpIAorUEFTUyBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBl
bnF1ZXVlKCksIHJlYWQodmlldykgcGFydGlhbGx5LCB0aGVuIHJlYWQoKSAKK1BBU1MgUmVhZGFi
bGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogZ2V0UmVhZGVyKCksIGVucXVldWUoKSwgY2xvc2Uo
KSwgdGhlbiByZWFkKCkgCitQQVNTIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IGVu
cXVldWUoKSwgY2xvc2UoKSwgZ2V0UmVhZGVyKCksIHRoZW4gcmVhZCgpIAorRkFJTCBSZWFkYWJs
ZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBSZXNwb25kIHRvIHB1bGwoKSBieSBlbnF1ZXVlKCkg
YXNzZXJ0X2VxdWFsczogYnlvYlJlcXVlc3QgbXVzdCBiZSBudWxsIGV4cGVjdGVkIChvYmplY3Qp
IG51bGwgYnV0IGdvdCAodW5kZWZpbmVkKSB1bmRlZmluZWQKK0ZBSUwgUmVhZGFibGVTdHJlYW0g
d2l0aCBieXRlIHNvdXJjZTogUmVzcG9uZCB0byBwdWxsKCkgYnkgZW5xdWV1ZSgpIGFzeW5jaHJv
bm91c2x5IGFzc2VydF9lcXVhbHM6IGJ5b2JSZXF1ZXN0IHNob3VsZCBiZSBudWxsIGV4cGVjdGVk
IChvYmplY3QpIG51bGwgYnV0IGdvdCAodW5kZWZpbmVkKSB1bmRlZmluZWQKK1RJTUVPVVQgUmVh
ZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogUmVzcG9uZCB0byBtdWx0aXBsZSBwdWxsKCkg
Ynkgc2VwYXJhdGUgZW5xdWV1ZSgpIFRlc3QgdGltZWQgb3V0CitOT1RSVU4gUmVhZGFibGVTdHJl
YW0gd2l0aCBieXRlIHNvdXJjZTogcmVhZCh2aWV3KSwgdGhlbiByZXNwb25kKCkgCitOT1RSVU4g
UmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogcmVhZCh2aWV3KSwgdGhlbiByZXNwb25k
KCkgd2l0aCBhIHRyYW5zZmVycmVkIEFycmF5QnVmZmVyIAorTk9UUlVOIFJlYWRhYmxlU3RyZWFt
IHdpdGggYnl0ZSBzb3VyY2U6IHJlYWQodmlldyksIHRoZW4gcmVzcG9uZCgpIHdpdGggdG9vIGJp
ZyB2YWx1ZSAKK05PVFJVTiBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiByZXNwb25k
KDMpIHRvIHJlYWQodmlldykgd2l0aCAyIGVsZW1lbnQgVWludDE2QXJyYXkgZW5xdWV1ZXMgdGhl
IDEgYnl0ZSByZW1haW5kZXIgCitOT1RSVU4gUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJj
ZTogZW5xdWV1ZSgpLCBnZXRSZWFkZXIoKSwgdGhlbiByZWFkKHZpZXcpIAorTk9UUlVOIFJlYWRh
YmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IGVucXVldWUoKSwgZ2V0UmVhZGVyKCksIHRoZW4g
Y2FuY2VsKCkgKG1vZGUgPSBub3QgQllPQikgCitOT1RSVU4gUmVhZGFibGVTdHJlYW0gd2l0aCBi
eXRlIHNvdXJjZTogZW5xdWV1ZSgpLCBnZXRSZWFkZXIoKSwgdGhlbiBjYW5jZWwoKSAobW9kZSA9
IEJZT0IpIAorTk9UUlVOIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IGdldFJlYWRl
cigpLCByZWFkKHZpZXcpLCB0aGVuIGNhbmNlbCgpIAorTk9UUlVOIFJlYWRhYmxlU3RyZWFtIHdp
dGggYnl0ZSBzb3VyY2U6IGNhbmNlbCgpIHdpdGggcGFydGlhbGx5IGZpbGxlZCBwZW5kaW5nIHB1
bGwoKSByZXF1ZXN0IAorTk9UUlVOIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IGVu
cXVldWUoKSwgZ2V0UmVhZGVyKCksIHRoZW4gcmVhZCh2aWV3KSB3aGVyZSB2aWV3LmJ1ZmZlciBp
cyBub3QgZnVsbHkgY292ZXJlZCBieSB2aWV3IAorTk9UUlVOIFJlYWRhYmxlU3RyZWFtIHdpdGgg
Ynl0ZSBzb3VyY2U6IE11bHRpcGxlIGVucXVldWUoKSwgZ2V0UmVhZGVyKCksIHRoZW4gcmVhZCh2
aWV3KSAKK05PVFJVTiBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBlbnF1ZXVlKCks
IGdldFJlYWRlcigpLCB0aGVuIHJlYWQodmlldykgd2l0aCBhIGJpZ2dlciB2aWV3IAorTk9UUlVO
IFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IGVucXVldWUoKSwgZ2V0UmVhZGVyKCks
IHRoZW4gcmVhZCh2aWV3KSB3aXRoIHNtYWxsZXIgdmlld3MgCitOT1RSVU4gUmVhZGFibGVTdHJl
YW0gd2l0aCBieXRlIHNvdXJjZTogZW5xdWV1ZSgpIDEgYnl0ZSwgZ2V0UmVhZGVyKCksIHRoZW4g
cmVhZCh2aWV3KSB3aXRoIFVpbnQxNkFycmF5IAorTk9UUlVOIFJlYWRhYmxlU3RyZWFtIHdpdGgg
Ynl0ZSBzb3VyY2U6IGVucXVldWUoKSAzIGJ5dGUsIGdldFJlYWRlcigpLCB0aGVuIHJlYWQodmll
dykgd2l0aCAyLWVsZW1lbnQgVWludDE2QXJyYXkgCitOT1RSVU4gUmVhZGFibGVTdHJlYW0gd2l0
aCBieXRlIHNvdXJjZTogcmVhZCh2aWV3KSB3aXRoIFVpbnQxNkFycmF5IG9uIGNsb3NlKCktZCBz
dHJlYW0gd2l0aCAxIGJ5dGUgZW5xdWV1ZSgpLWQgbXVzdCBmYWlsIAorTk9UUlVOIFJlYWRhYmxl
U3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IEEgc3RyZWFtIG11c3QgYmUgZXJyb3JlZCBpZiBjbG9z
ZSgpLWQgYmVmb3JlIGZ1bGZpbGxpbmcgcmVhZCh2aWV3KSB3aXRoIFVpbnQxNkFycmF5IAorUEFT
UyBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBUaHJvdyBpZiBjbG9zZSgpLWVkIG1v
cmUgdGhhbiBvbmNlIAorUEFTUyBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBUaHJv
dyBvbiBlbnF1ZXVlKCkgYWZ0ZXIgY2xvc2UoKSAKK05PVFJVTiBSZWFkYWJsZVN0cmVhbSB3aXRo
IGJ5dGUgc291cmNlOiByZWFkKHZpZXcpLCB0aGVuIHJlc3BvbmQoKSBhbmQgY2xvc2UoKSBpbiBw
dWxsKCkgCitOT1RSVU4gUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogcmVhZCh2aWV3
KSB3aXRoIFVpbnQzMkFycmF5LCB0aGVuIGZpbGwgaXQgYnkgbXVsdGlwbGUgcmVzcG9uZCgpIGNh
bGxzIAorTk9UUlVOIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IHJlYWQoKSB0d2lj
ZSwgdGhlbiBlbnF1ZXVlKCkgdHdpY2UgCitOT1RSVU4gUmVhZGFibGVTdHJlYW0gd2l0aCBieXRl
IHNvdXJjZTogTXVsdGlwbGUgcmVhZCh2aWV3KSwgY2xvc2UoKSBhbmQgcmVzcG9uZCgpIAorTk9U
UlVOIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IE11bHRpcGxlIHJlYWQodmlldyks
IGJpZyBlbnF1ZXVlKCkgCitOT1RSVU4gUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTog
TXVsdGlwbGUgcmVhZCh2aWV3KSBhbmQgbXVsdGlwbGUgZW5xdWV1ZSgpIAorTk9UUlVOIFJlYWRh
YmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IHJlYWQodmlldykgd2l0aCBwYXNzaW5nIHVuZGVm
aW5lZCBhcyB2aWV3IG11c3QgZmFpbCAKK05PVFJVTiBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUg
c291cmNlOiByZWFkKHZpZXcpIHdpdGggcGFzc2luZyBhbiBlbXB0eSBvYmplY3QgYXMgdmlldyBt
dXN0IGZhaWwgCitOT1RSVU4gUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogRXZlbiBy
ZWFkKHZpZXcpIHdpdGggcGFzc2luZyBBcnJheUJ1ZmZlclZpZXcgbGlrZSBvYmplY3QgYXMgdmll
dyBtdXN0IGZhaWwgCitOT1RSVU4gUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogcmVh
ZCgpIG9uIGFuIGVycm9yZWQgc3RyZWFtIAorTk9UUlVOIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0
ZSBzb3VyY2U6IHJlYWQoKSwgdGhlbiBlcnJvcigpIAorTk9UUlVOIFJlYWRhYmxlU3RyZWFtIHdp
dGggYnl0ZSBzb3VyY2U6IHJlYWQodmlldykgb24gYW4gZXJyb3JlZCBzdHJlYW0gCitOT1RSVU4g
UmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogcmVhZCh2aWV3KSwgdGhlbiBlcnJvcigp
IAorTk9UUlVOIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IFRocm93aW5nIGluIHB1
bGwgZnVuY3Rpb24gbXVzdCBlcnJvciB0aGUgc3RyZWFtIAorTk9UUlVOIFJlYWRhYmxlU3RyZWFt
IHdpdGggYnl0ZSBzb3VyY2U6IFRocm93aW5nIGluIHB1bGwgaW4gcmVzcG9uc2UgdG8gcmVhZCgp
IG11c3QgYmUgaWdub3JlZCBpZiB0aGUgc3RyZWFtIGlzIGVycm9yZWQgaW4gaXQgCitOT1RSVU4g
UmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogVGhyb3dpbmcgaW4gcHVsbCBpbiByZXNw
b25zZSB0byByZWFkKHZpZXcpIGZ1bmN0aW9uIG11c3QgZXJyb3IgdGhlIHN0cmVhbSAKK05PVFJV
TiBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBUaHJvd2luZyBpbiBwdWxsIGluIHJl
c3BvbnNlIHRvIHJlYWQodmlldykgbXVzdCBiZSBpZ25vcmVkIGlmIHRoZSBzdHJlYW0gaXMgZXJy
b3JlZCBpbiBpdCAKK05PVFJVTiBjYWxsaW5nIHJlc3BvbmQoKSB0d2ljZSBvbiB0aGUgc2FtZSBi
eW9iUmVxdWVzdCBzaG91bGQgdGhyb3cgCitOT1RSVU4gY2FsbGluZyByZXNwb25kV2l0aE5ld1Zp
ZXcoKSB0d2ljZSBvbiB0aGUgc2FtZSBieW9iUmVxdWVzdCBzaG91bGQgdGhyb3cgCitOT1RSVU4g
Y2FsbGluZyByZXNwb25kKDApIHR3aWNlIG9uIHRoZSBzYW1lIGJ5b2JSZXF1ZXN0IHNob3VsZCB0
aHJvdyBldmVuIHdoZW4gY2xvc2VkIAorTk9UUlVOIHB1bGwoKSByZXNvbHZpbmcgc2hvdWxkIG5v
dCBtYWtlIHJlbGVhc2VMb2NrKCkgcG9zc2libGUgCitOT1RSVU4gUmVhZGFibGVTdHJlYW0gd2l0
aCBieXRlIHNvdXJjZTogZGVmYXVsdCByZWFkZXIgKyBhdXRvQWxsb2NhdGVDaHVua1NpemUgKyBi
eW9iUmVxdWVzdCBpbnRlcmFjdGlvbiAKK1BBU1MgUmVhZGFibGVTdHJlYW1CWU9CUmVhZGVyIGNh
biBiZSBjb25zdHJ1Y3RlZCBkaXJlY3RseSAKK1BBU1MgUmVhZGFibGVTdHJlYW1CWU9CUmVhZGVy
IGNvbnN0cnVjdG9yIHJlcXVpcmVzIGEgUmVhZGFibGVTdHJlYW0gYXJndW1lbnQgCitQQVNTIFJl
YWRhYmxlU3RyZWFtQllPQlJlYWRlciBjb25zdHJ1Y3RvciByZXF1aXJlcyBhbiB1bmxvY2tlZCBS
ZWFkYWJsZVN0cmVhbSAKK1BBU1MgUmVhZGFibGVTdHJlYW1CWU9CUmVhZGVyIGNvbnN0cnVjdG9y
IHJlcXVpcmVzIGEgUmVhZGFibGVTdHJlYW0gd2l0aCB0eXBlICJieXRlcyIgCitQQVNTIFJlYWRh
YmxlU3RyZWFtIGNvbnN0cnVjdG9yIHNob3VsZCBub3QgYWNjZXB0IGEgc3RyYXRlZ3kgd2l0aCBh
IHNpemUgZGVmaW5lZCBpZiB0eXBlIGlzICJieXRlcyIgCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRl
LXN0cmVhbXMvZ2VuZXJhbC5hbnkuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMvZ2VuZXJhbC5hbnku
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4yMzgyOTEzNTI4ZTY5M2IzYTVkNTZjNjYwYTQ1MDYwOTgwYjU0OGMz
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFtcy9nZW5lcmFsLmFueS5odG1sCkBA
IC0wLDAgKzEgQEAKKzwhLS0gVGhpcyBmaWxlIGlzIHJlcXVpcmVkIGZvciBXZWJLaXQgdGVzdCBp
bmZyYXN0cnVjdHVyZSB0byBydW4gdGhlIHRlbXBsYXRlZCB0ZXN0IC0tPgpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMvZ2VuZXJhbC5hbnku
anMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
cmVhZGFibGUtYnl0ZS1zdHJlYW1zL2dlbmVyYWwuYW55LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUzODRkYmM1
Yzc5NDRiYzc1Y2UyYTAxNDQ3NmM1MzY3ZDE1N2ZlN2IKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUt
Ynl0ZS1zdHJlYW1zL2dlbmVyYWwuYW55LmpzCkBAIC0wLDAgKzEsMjEwMyBAQAorLy8gTUVUQTog
Z2xvYmFsPXdpbmRvdyx3b3JrZXIsanNzaGVsbAorLy8gTUVUQTogc2NyaXB0PS4uL3Jlc291cmNl
cy9ycy11dGlscy5qcworLy8gTUVUQTogc2NyaXB0PS4uL3Jlc291cmNlcy90ZXN0LXV0aWxzLmpz
CisndXNlIHN0cmljdCc7CisKK2NvbnN0IGVycm9yMSA9IG5ldyBFcnJvcignZXJyb3IxJyk7Citl
cnJvcjEubmFtZSA9ICdlcnJvcjEnOworCit0ZXN0KCgpID0+IHsKKyAgYXNzZXJ0X3Rocm93c19q
cyhUeXBlRXJyb3IsICgpID0+IG5ldyBSZWFkYWJsZVN0cmVhbSgpLmdldFJlYWRlcih7IG1vZGU6
ICdieW9iJyB9KSk7Cit9LCAnZ2V0UmVhZGVyKHttb2RlOiAiYnlvYiJ9KSB0aHJvd3Mgb24gbm9u
LWJ5dGVzIHN0cmVhbXMnKTsKKworCit0ZXN0KCgpID0+IHsKKyAgLy8gQ29uc3RydWN0aW5nIFJl
YWRhYmxlU3RyZWFtIHdpdGggYW4gZW1wdHkgdW5kZXJseWluZyBieXRlIHNvdXJjZSBvYmplY3Qg
YXMgcGFyYW1ldGVyIHNob3VsZG4ndCB0aHJvdy4KKyAgbmV3IFJlYWRhYmxlU3RyZWFtKHsgdHlw
ZTogJ2J5dGVzJyB9KS5nZXRSZWFkZXIoeyBtb2RlOiAnYnlvYicgfSk7CisgIC8vIENvbnN0cnVj
dG9yIG11c3QgcGVyZm9ybSBUb1N0cmluZyh0eXBlKS4KKyAgbmV3IFJlYWRhYmxlU3RyZWFtKHsg
dHlwZTogeyB0b1N0cmluZygpIHtyZXR1cm4gJ2J5dGVzJzt9IH0gfSkKKyAgICAuZ2V0UmVhZGVy
KHsgbW9kZTogJ2J5b2InIH0pOworICBuZXcgUmVhZGFibGVTdHJlYW0oeyB0eXBlOiB7IHRvU3Ry
aW5nOiBudWxsLCB2YWx1ZU9mKCkge3JldHVybiAnYnl0ZXMnO30gfSB9KQorICAgIC5nZXRSZWFk
ZXIoeyBtb2RlOiAnYnlvYicgfSk7Cit9LCAnUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJj
ZSBjYW4gYmUgY29uc3RydWN0ZWQgd2l0aCBubyBlcnJvcnMnKTsKKwordGVzdCgoKSA9PiB7Cisg
IGNvbnN0IFJlYWRhYmxlU3RyZWFtQllPQlJlYWRlciA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7IHR5
cGU6ICdieXRlcycgfSkuZ2V0UmVhZGVyKHsgbW9kZTogJ2J5b2InIH0pLmNvbnN0cnVjdG9yOwor
ICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7IHR5cGU6ICdieXRlcycgfSk7CisKKyAg
bGV0IHJlYWRlciA9IHJzLmdldFJlYWRlcih7IG1vZGU6IHsgdG9TdHJpbmcoKSB7IHJldHVybiAn
YnlvYic7IH0gfSB9KTsKKyAgYXNzZXJ0X3RydWUocmVhZGVyIGluc3RhbmNlb2YgUmVhZGFibGVT
dHJlYW1CWU9CUmVhZGVyLCAnbXVzdCBnaXZlIGEgQllPQiByZWFkZXInKTsKKyAgcmVhZGVyLnJl
bGVhc2VMb2NrKCk7CisKKyAgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKHsgbW9kZTogeyB0b1N0cmlu
ZzogbnVsbCwgdmFsdWVPZigpIHtyZXR1cm4gJ2J5b2InO30gfSB9KTsKKyAgYXNzZXJ0X3RydWUo
cmVhZGVyIGluc3RhbmNlb2YgUmVhZGFibGVTdHJlYW1CWU9CUmVhZGVyLCAnbXVzdCBnaXZlIGEg
QllPQiByZWFkZXInKTsKKyAgcmVhZGVyLnJlbGVhc2VMb2NrKCk7CisKKyAgcmVhZGVyID0gcnMu
Z2V0UmVhZGVyKHsgbW9kZTogJ2J5b2InLCBub3Rtb2RlOiAnaWdub3JlZCcgfSk7CisgIGFzc2Vy
dF90cnVlKHJlYWRlciBpbnN0YW5jZW9mIFJlYWRhYmxlU3RyZWFtQllPQlJlYWRlciwgJ211c3Qg
Z2l2ZSBhIEJZT0IgcmVhZGVyJyk7Cit9LCAnZ2V0UmVhZGVyKHttb2RlfSkgbXVzdCBwZXJmb3Jt
IFRvU3RyaW5nKCknKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgbGV0IHN0YXJ0Q2FsbGVk
ID0gZmFsc2U7CisgIGxldCBzdGFydENhbGxlZEJlZm9yZVB1bGwgPSBmYWxzZTsKKyAgbGV0IGRl
c2lyZWRTaXplOworICBsZXQgY29udHJvbGxlcjsKKworICBsZXQgcmVzb2x2ZVRlc3RQcm9taXNl
OworICBjb25zdCB0ZXN0UHJvbWlzZSA9IG5ldyBQcm9taXNlKHJlc29sdmUgPT4geworICAgIHJl
c29sdmVUZXN0UHJvbWlzZSA9IHJlc29sdmU7CisgIH0pOworCisgIG5ldyBSZWFkYWJsZVN0cmVh
bSh7CisgICAgc3RhcnQoYykgeworICAgICAgY29udHJvbGxlciA9IGM7CisgICAgICBzdGFydENh
bGxlZCA9IHRydWU7CisgICAgfSwKKyAgICBwdWxsKCkgeworICAgICAgc3RhcnRDYWxsZWRCZWZv
cmVQdWxsID0gc3RhcnRDYWxsZWQ7CisgICAgICBkZXNpcmVkU2l6ZSA9IGNvbnRyb2xsZXIuZGVz
aXJlZFNpemU7CisgICAgICByZXNvbHZlVGVzdFByb21pc2UoKTsKKyAgICB9LAorICAgIHR5cGU6
ICdieXRlcycKKyAgfSwgeworICAgIGhpZ2hXYXRlck1hcms6IDI1NgorICB9KTsKKworICByZXR1
cm4gdGVzdFByb21pc2UudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X3RydWUoc3RhcnRDYWxsZWRC
ZWZvcmVQdWxsLCAnc3RhcnQgc2hvdWxkIGJlIGNhbGxlZCBiZWZvcmUgcHVsbCcpOworICAgIGFz
c2VydF9lcXVhbHMoZGVzaXJlZFNpemUsIDI1NiwgJ2Rlc2lyZWRTaXplIHNob3VsZCBlcXVhbCBo
aWdoV2F0ZXJNYXJrJyk7CisgIH0pOworCit9LCAnUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNv
dXJjZTogQ29uc3RydWN0IGFuZCBleHBlY3Qgc3RhcnQgYW5kIHB1bGwgYmVpbmcgY2FsbGVkJyk7
CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisgIGxldCBwdWxsQ291bnQgPSAwOworICBsZXQgY2hl
Y2tlZE5vUHVsbCA9IGZhbHNlOworCisgIGxldCByZXNvbHZlVGVzdFByb21pc2U7CisgIGNvbnN0
IHRlc3RQcm9taXNlID0gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7CisgICAgcmVzb2x2ZVRlc3RQ
cm9taXNlID0gcmVzb2x2ZTsKKyAgfSk7CisgIGxldCByZXNvbHZlU3RhcnRQcm9taXNlOworCisg
IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoKSB7CisgICAgICByZXR1cm4gbmV3IFBy
b21pc2UocmVzb2x2ZSA9PiB7CisgICAgICAgIHJlc29sdmVTdGFydFByb21pc2UgPSByZXNvbHZl
OworICAgICAgfSk7CisgICAgfSwKKyAgICBwdWxsKCkgeworICAgICAgaWYgKGNoZWNrZWROb1B1
bGwpIHsKKyAgICAgICAgcmVzb2x2ZVRlc3RQcm9taXNlKCk7CisgICAgICB9CisKKyAgICAgICsr
cHVsbENvdW50OworICAgIH0sCisgICAgdHlwZTogJ2J5dGVzJworICB9LCB7CisgICAgaGlnaFdh
dGVyTWFyazogMjU2CisgIH0pOworCisgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCkgPT4gewor
ICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAwKTsKKyAgICBjaGVja2VkTm9QdWxsID0gdHJ1
ZTsKKyAgICByZXNvbHZlU3RhcnRQcm9taXNlKCk7CisgIH0pOworCisgIHJldHVybiB0ZXN0UHJv
bWlzZTsKKworfSwgJ1JlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IE5vIGF1dG9tYXRp
YyBwdWxsIGNhbGwgaWYgc3RhcnQgZG9lc25cJ3QgZmluaXNoJyk7CisKK3Byb21pc2VfdGVzdCh0
ID0+IHsKKyAgbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBwdWxsOiB0LnVucmVhY2hlZF9mdW5j
KCdwdWxsKCkgc2hvdWxkIG5vdCBiZSBjYWxsZWQnKSwKKyAgICB0eXBlOiAnYnl0ZXMnCisgIH0s
IHsKKyAgICBoaWdoV2F0ZXJNYXJrOiAwCisgIH0pOworCisgIHJldHVybiBQcm9taXNlLnJlc29s
dmUoKTsKK30sICdSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBDb25zdHJ1Y3Qgd2l0
aCBoaWdoV2F0ZXJNYXJrIG9mIDAnKTsKKwordGVzdCgoKSA9PiB7CisgIG5ldyBSZWFkYWJsZVN0
cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgYXNzZXJ0X2VxdWFscyhjLmRlc2lyZWRTaXpl
LCAxMCwgJ2Rlc2lyZWRTaXplIG11c3Qgc3RhcnQgYXQgdGhlIGhpZ2hXYXRlck1hcmsnKTsKKyAg
ICAgIGMuY2xvc2UoKTsKKyAgICAgIGFzc2VydF9lcXVhbHMoYy5kZXNpcmVkU2l6ZSwgMCwgJ2Fm
dGVyIGNsb3NpbmcsIGRlc2lyZWRTaXplIG11c3QgYmUgMCcpOworICAgIH0sCisgICAgdHlwZTog
J2J5dGVzJworICB9LCB7CisgICAgaGlnaFdhdGVyTWFyazogMTAKKyAgfSk7Cit9LCAnUmVhZGFi
bGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogZGVzaXJlZFNpemUgd2hlbiBjbG9zZWQnKTsKKwor
dGVzdCgoKSA9PiB7CisgIG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAg
ICAgYXNzZXJ0X2VxdWFscyhjLmRlc2lyZWRTaXplLCAxMCwgJ2Rlc2lyZWRTaXplIG11c3Qgc3Rh
cnQgYXQgdGhlIGhpZ2hXYXRlck1hcmsnKTsKKyAgICAgIGMuZXJyb3IoKTsKKyAgICAgIGFzc2Vy
dF9lcXVhbHMoYy5kZXNpcmVkU2l6ZSwgbnVsbCwgJ2FmdGVyIGVycm9yaW5nLCBkZXNpcmVkU2l6
ZSBtdXN0IGJlIG51bGwnKTsKKyAgICB9LAorICAgIHR5cGU6ICdieXRlcycKKyAgfSwgeworICAg
IGhpZ2hXYXRlck1hcms6IDEwCisgIH0pOworfSwgJ1JlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBz
b3VyY2U6IGRlc2lyZWRTaXplIHdoZW4gZXJyb3JlZCcpOworCitwcm9taXNlX3Rlc3QodCA9PiB7
CisgIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgdHlwZTogJ2J5dGVz
JworICB9KTsKKworICBjb25zdCByZWFkZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKCk7CisgIHJlYWRl
ci5yZWxlYXNlTG9jaygpOworCisgIHJldHVybiBwcm9taXNlX3JlamVjdHNfanModCwgVHlwZUVy
cm9yLCByZWFkZXIuY2xvc2VkLCAnY2xvc2VkIG11c3QgcmVqZWN0Jyk7Cit9LCAnUmVhZGFibGVT
dHJlYW0gd2l0aCBieXRlIHNvdXJjZTogZ2V0UmVhZGVyKCksIHRoZW4gcmVsZWFzZUxvY2soKScp
OworCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0
cmVhbSh7CisgICAgdHlwZTogJ2J5dGVzJworICB9KTsKKworICBjb25zdCByZWFkZXIgPSBzdHJl
YW0uZ2V0UmVhZGVyKHsgbW9kZTogJ2J5b2InIH0pOworICByZWFkZXIucmVsZWFzZUxvY2soKTsK
KworICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2pzKHQsIFR5cGVFcnJvciwgcmVhZGVyLmNsb3Nl
ZCwgJ2Nsb3NlZCBtdXN0IHJlamVjdCcpOworfSwgJ1JlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBz
b3VyY2U6IGdldFJlYWRlcigpIHdpdGggbW9kZSBzZXQgdG8gYnlvYiwgdGhlbiByZWxlYXNlTG9j
aygpJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgY29uc3Qgc3RyZWFtID0gbmV3IFJlYWRh
YmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjLmNsb3NlKCk7CisgICAgfSwKKyAg
ICBwdWxsOiB0LnVucmVhY2hlZF9mdW5jKCdwdWxsKCkgc2hvdWxkIG5vdCBiZSBjYWxsZWQnKSwK
KyAgICB0eXBlOiAnYnl0ZXMnCisgIH0pOworCisgIGNvbnN0IHJlYWRlciA9IHN0cmVhbS5nZXRS
ZWFkZXIoKTsKKworICByZXR1cm4gcmVhZGVyLmNsb3NlZC50aGVuKCgpID0+IHsKKyAgICBhc3Nl
cnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4gc3RyZWFtLmdldFJlYWRlcigpLCAnZ2V0UmVh
ZGVyKCkgbXVzdCB0aHJvdycpOworICB9KTsKK30sICdSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUg
c291cmNlOiBUZXN0IHRoYXQgY2xvc2luZyBhIHN0cmVhbSBkb2VzIG5vdCByZWxlYXNlIGEgcmVh
ZGVyIGF1dG9tYXRpY2FsbHknKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBjb25zdCBzdHJl
YW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGMuY2xvc2Uo
KTsKKyAgICB9LAorICAgIHB1bGw6IHQudW5yZWFjaGVkX2Z1bmMoJ3B1bGwoKSBzaG91bGQgbm90
IGJlIGNhbGxlZCcpLAorICAgIHR5cGU6ICdieXRlcycKKyAgfSk7CisKKyAgY29uc3QgcmVhZGVy
ID0gc3RyZWFtLmdldFJlYWRlcih7IG1vZGU6ICdieW9iJyB9KTsKKworICByZXR1cm4gcmVhZGVy
LmNsb3NlZC50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkg
PT4gc3RyZWFtLmdldFJlYWRlcih7IG1vZGU6ICdieW9iJyB9KSwgJ2dldFJlYWRlcigpIG11c3Qg
dGhyb3cnKTsKKyAgfSk7Cit9LCAnUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogVGVz
dCB0aGF0IGNsb3NpbmcgYSBzdHJlYW0gZG9lcyBub3QgcmVsZWFzZSBhIEJZT0IgcmVhZGVyIGF1
dG9tYXRpY2FsbHknKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBjb25zdCBzdHJlYW0gPSBu
ZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGMuZXJyb3IoZXJyb3Ix
KTsKKyAgICB9LAorICAgIHB1bGw6IHQudW5yZWFjaGVkX2Z1bmMoJ3B1bGwoKSBzaG91bGQgbm90
IGJlIGNhbGxlZCcpLAorICAgIHR5cGU6ICdieXRlcycKKyAgfSk7CisKKyAgY29uc3QgcmVhZGVy
ID0gc3RyZWFtLmdldFJlYWRlcigpOworCisgIHJldHVybiBwcm9taXNlX3JlamVjdHNfZXhhY3Rs
eSh0LCBlcnJvcjEsIHJlYWRlci5jbG9zZWQsICdjbG9zZWQgbXVzdCByZWplY3QnKS50aGVuKCgp
ID0+IHsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4gc3RyZWFtLmdldFJl
YWRlcigpLCAnZ2V0UmVhZGVyKCkgbXVzdCB0aHJvdycpOworICB9KTsKK30sICdSZWFkYWJsZVN0
cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBUZXN0IHRoYXQgZXJyb3JpbmcgYSBzdHJlYW0gZG9lcyBu
b3QgcmVsZWFzZSBhIHJlYWRlciBhdXRvbWF0aWNhbGx5Jyk7CisKK3Byb21pc2VfdGVzdCh0ID0+
IHsKKyAgY29uc3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7
CisgICAgICBjLmVycm9yKGVycm9yMSk7CisgICAgfSwKKyAgICBwdWxsOiB0LnVucmVhY2hlZF9m
dW5jKCdwdWxsKCkgc2hvdWxkIG5vdCBiZSBjYWxsZWQnKSwKKyAgICB0eXBlOiAnYnl0ZXMnCisg
IH0pOworCisgIGNvbnN0IHJlYWRlciA9IHN0cmVhbS5nZXRSZWFkZXIoeyBtb2RlOiAnYnlvYicg
fSk7CisKKyAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMSwgcmVhZGVy
LmNsb3NlZCwgJ2Nsb3NlZCBtdXN0IHJlamVjdCcpLnRoZW4oKCkgPT4geworICAgIGFzc2VydF90
aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiBzdHJlYW0uZ2V0UmVhZGVyKHsgbW9kZTogJ2J5b2In
IH0pLCAnZ2V0UmVhZGVyKCkgbXVzdCB0aHJvdycpOworICB9KTsKK30sICdSZWFkYWJsZVN0cmVh
bSB3aXRoIGJ5dGUgc291cmNlOiBUZXN0IHRoYXQgZXJyb3JpbmcgYSBzdHJlYW0gZG9lcyBub3Qg
cmVsZWFzZSBhIEJZT0IgcmVhZGVyIGF1dG9tYXRpY2FsbHknKTsKKwordGVzdCgoKSA9PiB7Cisg
IGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgdHlwZTogJ2J5dGVzJwor
ICB9KTsKKworICBjb25zdCByZWFkZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKCk7CisgIHJlYWRlci5y
ZWFkKCk7CisgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiByZWFkZXIucmVsZWFz
ZUxvY2soKSwgJ3JlYWRlci5yZWxlYXNlTG9jaygpIG11c3QgdGhyb3cnKTsKK30sICdSZWFkYWJs
ZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiByZWxlYXNlTG9jaygpIG9uIFJlYWRhYmxlU3RyZWFt
UmVhZGVyIHdpdGggcGVuZGluZyByZWFkKCkgbXVzdCB0aHJvdycpOworCitwcm9taXNlX3Rlc3Qo
KCkgPT4geworICBsZXQgcHVsbENvdW50ID0gMDsKKworICBjb25zdCBzdHJlYW0gPSBuZXcgUmVh
ZGFibGVTdHJlYW0oeworICAgIHB1bGwoKSB7CisgICAgICArK3B1bGxDb3VudDsKKyAgICB9LAor
ICAgIHR5cGU6ICdieXRlcycKKyAgfSwgeworICAgIGhpZ2hXYXRlck1hcms6IDgKKyAgfSk7CisK
KyAgc3RyZWFtLmdldFJlYWRlcigpOworCisgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAwLCAn
Tm8gcHVsbCBhcyBzdGFydCgpIGp1c3QgZmluaXNoZWQgYW5kIGlzIG5vdCB5ZXQgcmVmbGVjdGVk
IHRvIHRoZSBzdGF0ZSBvZiB0aGUgc3RyZWFtJyk7CisKKyAgcmV0dXJuIFByb21pc2UucmVzb2x2
ZSgpLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAxLCAncHVsbCBt
dXN0IGJlIGludm9rZWQnKTsKKyAgfSk7Cit9LCAnUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNv
dXJjZTogQXV0b21hdGljIHB1bGwoKSBhZnRlciBzdGFydCgpJyk7CisKK3Byb21pc2VfdGVzdCgo
KSA9PiB7CisgIGxldCBwdWxsQ291bnQgPSAwOworCisgIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFk
YWJsZVN0cmVhbSh7CisgICAgcHVsbCgpIHsKKyAgICAgICsrcHVsbENvdW50OworICAgIH0sCisg
ICAgdHlwZTogJ2J5dGVzJworICB9LCB7CisgICAgaGlnaFdhdGVyTWFyazogMAorICB9KTsKKwor
ICBjb25zdCByZWFkZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKCk7CisgIHJlYWRlci5yZWFkKCk7CisK
KyAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDAsICdObyBwdWxsIGFzIHN0YXJ0KCkganVzdCBm
aW5pc2hlZCBhbmQgaXMgbm90IHlldCByZWZsZWN0ZWQgdG8gdGhlIHN0YXRlIG9mIHRoZSBzdHJl
YW0nKTsKKworICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiB7CisgICAgYXNz
ZXJ0X2VxdWFscyhwdWxsQ291bnQsIDEsICdwdWxsIG11c3QgYmUgaW52b2tlZCcpOworICB9KTsK
K30sICdSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBBdXRvbWF0aWMgcHVsbCgpIGFm
dGVyIHN0YXJ0KCkgYW5kIHJlYWQoKScpOworCisvLyBWaWV3IGJ1ZmZlcnMgYXJlIGRldGFjaGVk
IGFmdGVyIHB1bGwoKSByZXR1cm5zLCBzbyByZWNvcmQgdGhlIGluZm9ybWF0aW9uIGF0IHRoZSB0
aW1lIHRoYXQgcHVsbCgpIHdhcyBjYWxsZWQuCitmdW5jdGlvbiBleHRyYWN0Vmlld0luZm8odmll
dykgeworICByZXR1cm4geworICAgIGNvbnN0cnVjdG9yOiB2aWV3LmNvbnN0cnVjdG9yLAorICAg
IGJ1ZmZlckJ5dGVMZW5ndGg6IHZpZXcuYnVmZmVyLmJ5dGVMZW5ndGgsCisgICAgYnl0ZU9mZnNl
dDogdmlldy5ieXRlT2Zmc2V0LAorICAgIGJ5dGVMZW5ndGg6IHZpZXcuYnl0ZUxlbmd0aAorICB9
OworfQorCitwcm9taXNlX3Rlc3QoKCkgPT4geworICBsZXQgcHVsbENvdW50ID0gMDsKKyAgbGV0
IGNvbnRyb2xsZXI7CisgIGNvbnN0IGJ5b2JSZXF1ZXN0cyA9IFtdOworCisgIGNvbnN0IHN0cmVh
bSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgY29udHJvbGxl
ciA9IGM7CisgICAgfSwKKyAgICBwdWxsKCkgeworICAgICAgY29uc3QgYnlvYlJlcXVlc3QgPSBj
b250cm9sbGVyLmJ5b2JSZXF1ZXN0OworICAgICAgY29uc3QgdmlldyA9IGJ5b2JSZXF1ZXN0LnZp
ZXc7CisgICAgICBieW9iUmVxdWVzdHNbcHVsbENvdW50XSA9IHsKKyAgICAgICAgbm9uTnVsbDog
YnlvYlJlcXVlc3QgIT09IG51bGwsCisgICAgICAgIHZpZXdOb25OdWxsOiB2aWV3ICE9PSBudWxs
LAorICAgICAgICB2aWV3SW5mbzogZXh0cmFjdFZpZXdJbmZvKHZpZXcpCisgICAgICB9OworICAg
ICAgaWYgKHB1bGxDb3VudCA9PT0gMCkgeworICAgICAgICB2aWV3WzBdID0gMHgwMTsKKyAgICAg
ICAgYnlvYlJlcXVlc3QucmVzcG9uZCgxKTsKKyAgICAgIH0gZWxzZSBpZiAocHVsbENvdW50ID09
PSAxKSB7CisgICAgICAgIHZpZXdbMF0gPSAweDAyOworICAgICAgICB2aWV3WzFdID0gMHgwMzsK
KyAgICAgICAgYnlvYlJlcXVlc3QucmVzcG9uZCgyKTsKKyAgICAgIH0KKworICAgICAgKytwdWxs
Q291bnQ7CisgICAgfSwKKyAgICB0eXBlOiAnYnl0ZXMnLAorICAgIGF1dG9BbGxvY2F0ZUNodW5r
U2l6ZTogMTYKKyAgfSwgeworICAgIGhpZ2hXYXRlck1hcms6IDAKKyAgfSk7CisKKyAgY29uc3Qg
cmVhZGVyID0gc3RyZWFtLmdldFJlYWRlcigpOworICBjb25zdCBwMCA9IHJlYWRlci5yZWFkKCk7
CisgIGNvbnN0IHAxID0gcmVhZGVyLnJlYWQoKTsKKworICBhc3NlcnRfZXF1YWxzKHB1bGxDb3Vu
dCwgMCwgJ05vIHB1bGwoKSBhcyBzdGFydCgpIGp1c3QgZmluaXNoZWQgYW5kIGlzIG5vdCB5ZXQg
cmVmbGVjdGVkIHRvIHRoZSBzdGF0ZSBvZiB0aGUgc3RyZWFtJyk7CisKKyAgcmV0dXJuIFByb21p
c2UucmVzb2x2ZSgpLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAx
LCAncHVsbCgpIG11c3QgaGF2ZSBiZWVuIGludm9rZWQgb25jZScpOworICAgIGNvbnN0IGJ5b2JS
ZXF1ZXN0ID0gYnlvYlJlcXVlc3RzWzBdOworICAgIGFzc2VydF90cnVlKGJ5b2JSZXF1ZXN0Lm5v
bk51bGwsICdmaXJzdCBieW9iUmVxdWVzdCBtdXN0IG5vdCBiZSBudWxsJyk7CisgICAgYXNzZXJ0
X3RydWUoYnlvYlJlcXVlc3Qudmlld05vbk51bGwsICdmaXJzdCBieW9iUmVxdWVzdC52aWV3IG11
c3Qgbm90IGJlIG51bGwnKTsKKyAgICBjb25zdCB2aWV3SW5mbyA9IGJ5b2JSZXF1ZXN0LnZpZXdJ
bmZvOworICAgIGFzc2VydF9lcXVhbHModmlld0luZm8uY29uc3RydWN0b3IsIFVpbnQ4QXJyYXks
ICdmaXJzdCB2aWV3LmNvbnN0cnVjdG9yIHNob3VsZCBiZSBVaW50OEFycmF5Jyk7CisgICAgYXNz
ZXJ0X2VxdWFscyh2aWV3SW5mby5idWZmZXJCeXRlTGVuZ3RoLCAxNiwgJ2ZpcnN0IHZpZXcuYnVm
ZmVyLmJ5dGVMZW5ndGggc2hvdWxkIGJlIDE2Jyk7CisgICAgYXNzZXJ0X2VxdWFscyh2aWV3SW5m
by5ieXRlT2Zmc2V0LCAwLCAnZmlyc3Qgdmlldy5ieXRlT2Zmc2V0IHNob3VsZCBiZSAwJyk7Cisg
ICAgYXNzZXJ0X2VxdWFscyh2aWV3SW5mby5ieXRlTGVuZ3RoLCAxNiwgJ2ZpcnN0IHZpZXcuYnl0
ZUxlbmd0aCBzaG91bGQgYmUgMTYnKTsKKworICAgIHJldHVybiBwMDsKKyAgfSkudGhlbihyZXN1
bHQgPT4geworICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAyLCAncHVsbCgpIG11c3QgaGF2
ZSBiZWVuIGludm9rZWQgdHdpY2UnKTsKKyAgICBjb25zdCB2YWx1ZSA9IHJlc3VsdC52YWx1ZTsK
KyAgICBhc3NlcnRfbm90X2VxdWFscyh2YWx1ZSwgdW5kZWZpbmVkLCAnZmlyc3QgcmVhZCBzaG91
bGQgaGF2ZSBhIHZhbHVlJyk7CisgICAgYXNzZXJ0X2VxdWFscyh2YWx1ZS5jb25zdHJ1Y3Rvciwg
VWludDhBcnJheSwgJ2ZpcnN0IHZhbHVlIHNob3VsZCBiZSBhIFVpbnQ4QXJyYXknKTsKKyAgICBh
c3NlcnRfZXF1YWxzKHZhbHVlLmJ1ZmZlci5ieXRlTGVuZ3RoLCAxNiwgJ2ZpcnN0IHZhbHVlLmJ1
ZmZlci5ieXRlTGVuZ3RoIHNob3VsZCBiZSAxNicpOworICAgIGFzc2VydF9lcXVhbHModmFsdWUu
Ynl0ZU9mZnNldCwgMCwgJ2ZpcnN0IHZhbHVlLmJ5dGVPZmZzZXQgc2hvdWxkIGJlIDAnKTsKKyAg
ICBhc3NlcnRfZXF1YWxzKHZhbHVlLmJ5dGVMZW5ndGgsIDEsICdmaXJzdCB2YWx1ZS5ieXRlTGVu
Z3RoIHNob3VsZCBiZSAxJyk7CisgICAgYXNzZXJ0X2VxdWFscyh2YWx1ZVswXSwgMHgwMSwgJ2Zp
cnN0IHZhbHVlWzBdIHNob3VsZCBiZSAweDAxJyk7CisgICAgY29uc3QgYnlvYlJlcXVlc3QgPSBi
eW9iUmVxdWVzdHNbMV07CisgICAgYXNzZXJ0X3RydWUoYnlvYlJlcXVlc3Qubm9uTnVsbCwgJ3Nl
Y29uZCBieW9iUmVxdWVzdCBtdXN0IG5vdCBiZSBudWxsJyk7CisgICAgYXNzZXJ0X3RydWUoYnlv
YlJlcXVlc3Qudmlld05vbk51bGwsICdzZWNvbmQgYnlvYlJlcXVlc3QudmlldyBtdXN0IG5vdCBi
ZSBudWxsJyk7CisgICAgY29uc3Qgdmlld0luZm8gPSBieW9iUmVxdWVzdC52aWV3SW5mbzsKKyAg
ICBhc3NlcnRfZXF1YWxzKHZpZXdJbmZvLmNvbnN0cnVjdG9yLCBVaW50OEFycmF5LCAnc2Vjb25k
IHZpZXcuY29uc3RydWN0b3Igc2hvdWxkIGJlIFVpbnQ4QXJyYXknKTsKKyAgICBhc3NlcnRfZXF1
YWxzKHZpZXdJbmZvLmJ1ZmZlckJ5dGVMZW5ndGgsIDE2LCAnc2Vjb25kIHZpZXcuYnVmZmVyLmJ5
dGVMZW5ndGggc2hvdWxkIGJlIDE2Jyk7CisgICAgYXNzZXJ0X2VxdWFscyh2aWV3SW5mby5ieXRl
T2Zmc2V0LCAwLCAnc2Vjb25kIHZpZXcuYnl0ZU9mZnNldCBzaG91bGQgYmUgMCcpOworICAgIGFz
c2VydF9lcXVhbHModmlld0luZm8uYnl0ZUxlbmd0aCwgMTYsICdzZWNvbmQgdmlldy5ieXRlTGVu
Z3RoIHNob3VsZCBiZSAxNicpOworCisgICAgcmV0dXJuIHAxOworICB9KS50aGVuKHJlc3VsdCA9
PiB7CisgICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDIsICdwdWxsKCkgc2hvdWxkIG9ubHkg
YmUgaW52b2tlZCB0d2ljZScpOworICAgIGNvbnN0IHZhbHVlID0gcmVzdWx0LnZhbHVlOworICAg
IGFzc2VydF9ub3RfZXF1YWxzKHZhbHVlLCB1bmRlZmluZWQsICdzZWNvbmQgcmVhZCBzaG91bGQg
aGF2ZSBhIHZhbHVlJyk7CisgICAgYXNzZXJ0X2VxdWFscyh2YWx1ZS5jb25zdHJ1Y3RvciwgVWlu
dDhBcnJheSwgJ3NlY29uZCB2YWx1ZSBzaG91bGQgYmUgYSBVaW50OEFycmF5Jyk7CisgICAgYXNz
ZXJ0X2VxdWFscyh2YWx1ZS5idWZmZXIuYnl0ZUxlbmd0aCwgMTYsICdzZWNvbmQgdmFsdWUuYnVm
ZmVyLmJ5dGVMZW5ndGggc2hvdWxkIGJlIDE2Jyk7CisgICAgYXNzZXJ0X2VxdWFscyh2YWx1ZS5i
eXRlT2Zmc2V0LCAwLCAnc2Vjb25kIHZhbHVlLmJ5dGVPZmZzZXQgc2hvdWxkIGJlIDAnKTsKKyAg
ICBhc3NlcnRfZXF1YWxzKHZhbHVlLmJ5dGVMZW5ndGgsIDIsICdzZWNvbmQgdmFsdWUuYnl0ZUxl
bmd0aCBzaG91bGQgYmUgMicpOworICAgIGFzc2VydF9lcXVhbHModmFsdWVbMF0sIDB4MDIsICdz
ZWNvbmQgdmFsdWVbMF0gc2hvdWxkIGJlIDB4MDInKTsKKyAgICBhc3NlcnRfZXF1YWxzKHZhbHVl
WzFdLCAweDAzLCAnc2Vjb25kIHZhbHVlWzFdIHNob3VsZCBiZSAweDAzJyk7CisgIH0pOworfSwg
J1JlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IGF1dG9BbGxvY2F0ZUNodW5rU2l6ZScp
OworCitwcm9taXNlX3Rlc3QoKCkgPT4geworICBsZXQgcHVsbENvdW50ID0gMDsKKyAgbGV0IGNv
bnRyb2xsZXI7CisgIGNvbnN0IGJ5b2JSZXF1ZXN0cyA9IFtdOworCisgIGNvbnN0IHN0cmVhbSA9
IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgY29udHJvbGxlciA9
IGM7CisgICAgfSwKKyAgICBwdWxsKCkgeworICAgICAgY29uc3QgYnlvYlJlcXVlc3QgPSBjb250
cm9sbGVyLmJ5b2JSZXF1ZXN0OworICAgICAgY29uc3QgdmlldyA9IGJ5b2JSZXF1ZXN0LnZpZXc7
CisgICAgICBieW9iUmVxdWVzdHNbcHVsbENvdW50XSA9IHsKKyAgICAgICAgbm9uTnVsbDogYnlv
YlJlcXVlc3QgIT09IG51bGwsCisgICAgICAgIHZpZXdOb25OdWxsOiB2aWV3ICE9PSBudWxsLAor
ICAgICAgICB2aWV3SW5mbzogZXh0cmFjdFZpZXdJbmZvKHZpZXcpCisgICAgICB9OworICAgICAg
aWYgKHB1bGxDb3VudCA9PT0gMCkgeworICAgICAgICB2aWV3WzBdID0gMHgwMTsKKyAgICAgICAg
YnlvYlJlcXVlc3QucmVzcG9uZCgxKTsKKyAgICAgIH0gZWxzZSBpZiAocHVsbENvdW50ID09PSAx
KSB7CisgICAgICAgIHZpZXdbMF0gPSAweDAyOworICAgICAgICB2aWV3WzFdID0gMHgwMzsKKyAg
ICAgICAgYnlvYlJlcXVlc3QucmVzcG9uZCgyKTsKKyAgICAgIH0KKworICAgICAgKytwdWxsQ291
bnQ7CisgICAgfSwKKyAgICB0eXBlOiAnYnl0ZXMnLAorICAgIGF1dG9BbGxvY2F0ZUNodW5rU2l6
ZTogMTYKKyAgfSwgeworICAgIGhpZ2hXYXRlck1hcms6IDAKKyAgfSk7CisKKyAgY29uc3QgcmVh
ZGVyID0gc3RyZWFtLmdldFJlYWRlcigpOworICByZXR1cm4gcmVhZGVyLnJlYWQoKS50aGVuKHJl
c3VsdCA9PiB7CisgICAgY29uc3QgdmFsdWUgPSByZXN1bHQudmFsdWU7CisgICAgYXNzZXJ0X25v
dF9lcXVhbHModmFsdWUsIHVuZGVmaW5lZCwgJ2ZpcnN0IHJlYWQgc2hvdWxkIGhhdmUgYSB2YWx1
ZScpOworICAgIGFzc2VydF9lcXVhbHModmFsdWUuY29uc3RydWN0b3IsIFVpbnQ4QXJyYXksICdm
aXJzdCB2YWx1ZSBzaG91bGQgYmUgYSBVaW50OEFycmF5Jyk7CisgICAgYXNzZXJ0X2VxdWFscyh2
YWx1ZS5idWZmZXIuYnl0ZUxlbmd0aCwgMTYsICdmaXJzdCB2YWx1ZS5idWZmZXIuYnl0ZUxlbmd0
aCBzaG91bGQgYmUgMTYnKTsKKyAgICBhc3NlcnRfZXF1YWxzKHZhbHVlLmJ5dGVPZmZzZXQsIDAs
ICdmaXJzdCB2YWx1ZS5ieXRlT2Zmc2V0IHNob3VsZCBiZSAwJyk7CisgICAgYXNzZXJ0X2VxdWFs
cyh2YWx1ZS5ieXRlTGVuZ3RoLCAxLCAnZmlyc3QgdmFsdWUuYnl0ZUxlbmd0aCBzaG91bGQgYmUg
MScpOworICAgIGFzc2VydF9lcXVhbHModmFsdWVbMF0sIDB4MDEsICdmaXJzdCB2YWx1ZVswXSBz
aG91bGQgYmUgMHgwMScpOworICAgIGNvbnN0IGJ5b2JSZXF1ZXN0ID0gYnlvYlJlcXVlc3RzWzBd
OworICAgIGFzc2VydF90cnVlKGJ5b2JSZXF1ZXN0Lm5vbk51bGwsICdmaXJzdCBieW9iUmVxdWVz
dCBtdXN0IG5vdCBiZSBudWxsJyk7CisgICAgYXNzZXJ0X3RydWUoYnlvYlJlcXVlc3Qudmlld05v
bk51bGwsICdmaXJzdCBieW9iUmVxdWVzdC52aWV3IG11c3Qgbm90IGJlIG51bGwnKTsKKyAgICBj
b25zdCB2aWV3SW5mbyA9IGJ5b2JSZXF1ZXN0LnZpZXdJbmZvOworICAgIGFzc2VydF9lcXVhbHMo
dmlld0luZm8uY29uc3RydWN0b3IsIFVpbnQ4QXJyYXksICdmaXJzdCB2aWV3LmNvbnN0cnVjdG9y
IHNob3VsZCBiZSBVaW50OEFycmF5Jyk7CisgICAgYXNzZXJ0X2VxdWFscyh2aWV3SW5mby5idWZm
ZXJCeXRlTGVuZ3RoLCAxNiwgJ2ZpcnN0IHZpZXcuYnVmZmVyLmJ5dGVMZW5ndGggc2hvdWxkIGJl
IDE2Jyk7CisgICAgYXNzZXJ0X2VxdWFscyh2aWV3SW5mby5ieXRlT2Zmc2V0LCAwLCAnZmlyc3Qg
dmlldy5ieXRlT2Zmc2V0IHNob3VsZCBiZSAwJyk7CisgICAgYXNzZXJ0X2VxdWFscyh2aWV3SW5m
by5ieXRlTGVuZ3RoLCAxNiwgJ2ZpcnN0IHZpZXcuYnl0ZUxlbmd0aCBzaG91bGQgYmUgMTYnKTsK
KworICAgIHJlYWRlci5yZWxlYXNlTG9jaygpOworICAgIGNvbnN0IGJ5b2JSZWFkZXIgPSBzdHJl
YW0uZ2V0UmVhZGVyKHsgbW9kZTogJ2J5b2InIH0pOworICAgIHJldHVybiBieW9iUmVhZGVyLnJl
YWQobmV3IFVpbnQ4QXJyYXkoMzIpKTsKKyAgfSkudGhlbihyZXN1bHQgPT4geworICAgIGNvbnN0
IHZhbHVlID0gcmVzdWx0LnZhbHVlOworICAgIGFzc2VydF9ub3RfZXF1YWxzKHZhbHVlLCB1bmRl
ZmluZWQsICdzZWNvbmQgcmVhZCBzaG91bGQgaGF2ZSBhIHZhbHVlJyk7CisgICAgYXNzZXJ0X2Vx
dWFscyh2YWx1ZS5jb25zdHJ1Y3RvciwgVWludDhBcnJheSwgJ3NlY29uZCB2YWx1ZSBzaG91bGQg
YmUgYSBVaW50OEFycmF5Jyk7CisgICAgYXNzZXJ0X2VxdWFscyh2YWx1ZS5idWZmZXIuYnl0ZUxl
bmd0aCwgMzIsICdzZWNvbmQgdmFsdWUuYnVmZmVyLmJ5dGVMZW5ndGggc2hvdWxkIGJlIDMyJyk7
CisgICAgYXNzZXJ0X2VxdWFscyh2YWx1ZS5ieXRlT2Zmc2V0LCAwLCAnc2Vjb25kIHZhbHVlLmJ5
dGVPZmZzZXQgc2hvdWxkIGJlIDAnKTsKKyAgICBhc3NlcnRfZXF1YWxzKHZhbHVlLmJ5dGVMZW5n
dGgsIDIsICdzZWNvbmQgdmFsdWUuYnl0ZUxlbmd0aCBzaG91bGQgYmUgMicpOworICAgIGFzc2Vy
dF9lcXVhbHModmFsdWVbMF0sIDB4MDIsICdzZWNvbmQgdmFsdWVbMF0gc2hvdWxkIGJlIDB4MDIn
KTsKKyAgICBhc3NlcnRfZXF1YWxzKHZhbHVlWzFdLCAweDAzLCAnc2Vjb25kIHZhbHVlWzFdIHNo
b3VsZCBiZSAweDAzJyk7CisgICAgY29uc3QgYnlvYlJlcXVlc3QgPSBieW9iUmVxdWVzdHNbMV07
CisgICAgYXNzZXJ0X3RydWUoYnlvYlJlcXVlc3Qubm9uTnVsbCwgJ3NlY29uZCBieW9iUmVxdWVz
dCBtdXN0IG5vdCBiZSBudWxsJyk7CisgICAgYXNzZXJ0X3RydWUoYnlvYlJlcXVlc3Qudmlld05v
bk51bGwsICdzZWNvbmQgYnlvYlJlcXVlc3QudmlldyBtdXN0IG5vdCBiZSBudWxsJyk7CisgICAg
Y29uc3Qgdmlld0luZm8gPSBieW9iUmVxdWVzdC52aWV3SW5mbzsKKyAgICBhc3NlcnRfZXF1YWxz
KHZpZXdJbmZvLmNvbnN0cnVjdG9yLCBVaW50OEFycmF5LCAnc2Vjb25kIHZpZXcuY29uc3RydWN0
b3Igc2hvdWxkIGJlIFVpbnQ4QXJyYXknKTsKKyAgICBhc3NlcnRfZXF1YWxzKHZpZXdJbmZvLmJ1
ZmZlckJ5dGVMZW5ndGgsIDMyLCAnc2Vjb25kIHZpZXcuYnVmZmVyLmJ5dGVMZW5ndGggc2hvdWxk
IGJlIDMyJyk7CisgICAgYXNzZXJ0X2VxdWFscyh2aWV3SW5mby5ieXRlT2Zmc2V0LCAwLCAnc2Vj
b25kIHZpZXcuYnl0ZU9mZnNldCBzaG91bGQgYmUgMCcpOworICAgIGFzc2VydF9lcXVhbHModmll
d0luZm8uYnl0ZUxlbmd0aCwgMzIsICdzZWNvbmQgdmlldy5ieXRlTGVuZ3RoIHNob3VsZCBiZSAz
MicpOworICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAyLCAncHVsbENvdW50IHNob3VsZCBi
ZSAyJyk7CisgIH0pOworfSwgJ1JlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IE1peCBv
ZiBhdXRvIGFsbG9jYXRlIGFuZCBCWU9CJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisgIGxl
dCBwdWxsQ291bnQgPSAwOworCisgIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7
CisgICAgcHVsbCgpIHsKKyAgICAgICsrcHVsbENvdW50OworICAgIH0sCisgICAgdHlwZTogJ2J5
dGVzJworICB9LCB7CisgICAgaGlnaFdhdGVyTWFyazogMAorICB9KTsKKworICBjb25zdCByZWFk
ZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKCk7CisgIHJlYWRlci5yZWFkKG5ldyBVaW50OEFycmF5KDgp
KTsKKworICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMCwgJ05vIHB1bGwgYXMgc3RhcnQoKSBq
dXN0IGZpbmlzaGVkIGFuZCBpcyBub3QgeWV0IHJlZmxlY3RlZCB0byB0aGUgc3RhdGUgb2YgdGhl
IHN0cmVhbScpOworCisgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHsKKyAg
ICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMSwgJ3B1bGwgbXVzdCBiZSBpbnZva2VkJyk7Cisg
IH0pOworfSwgJ1JlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IEF1dG9tYXRpYyBwdWxs
KCkgYWZ0ZXIgc3RhcnQoKSBhbmQgcmVhZCh2aWV3KScpOworCitwcm9taXNlX3Rlc3QoKCkgPT4g
eworICBsZXQgcHVsbENvdW50ID0gMDsKKworICBsZXQgY29udHJvbGxlcjsKKyAgbGV0IGRlc2ly
ZWRTaXplSW5TdGFydDsKKyAgbGV0IGRlc2lyZWRTaXplSW5QdWxsOworCisgIGNvbnN0IHN0cmVh
bSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgYy5lbnF1ZXVl
KG5ldyBVaW50OEFycmF5KDE2KSk7CisgICAgICBkZXNpcmVkU2l6ZUluU3RhcnQgPSBjLmRlc2ly
ZWRTaXplOworICAgICAgY29udHJvbGxlciA9IGM7CisgICAgfSwKKyAgICBwdWxsKCkgeworICAg
ICAgKytwdWxsQ291bnQ7CisKKyAgICAgIGlmIChwdWxsQ291bnQgPT09IDEpIHsKKyAgICAgICAg
ZGVzaXJlZFNpemVJblB1bGwgPSBjb250cm9sbGVyLmRlc2lyZWRTaXplOworICAgICAgfQorICAg
IH0sCisgICAgdHlwZTogJ2J5dGVzJworICB9LCB7CisgICAgaGlnaFdhdGVyTWFyazogOAorICB9
KTsKKworICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0
X2VxdWFscyhwdWxsQ291bnQsIDAsICdObyBwdWxsIGFzIHRoZSBxdWV1ZSB3YXMgZmlsbGVkIGJ5
IHN0YXJ0KCknKTsKKyAgICBhc3NlcnRfZXF1YWxzKGRlc2lyZWRTaXplSW5TdGFydCwgLTgsICdk
ZXNpcmVkU2l6ZSBhZnRlciBlbnF1ZXVlKCkgaW4gc3RhcnQoKScpOworCisgICAgY29uc3QgcmVh
ZGVyID0gc3RyZWFtLmdldFJlYWRlcigpOworCisgICAgY29uc3QgcHJvbWlzZSA9IHJlYWRlci5y
ZWFkKCk7CisgICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDEsICdUaGUgZmlyc3QgcHVsbCgp
IHNob3VsZCBiZSBtYWRlIG9uIHJlYWQoKScpOworICAgIGFzc2VydF9lcXVhbHMoZGVzaXJlZFNp
emVJblB1bGwsIDgsICdkZXNpcmVkU2l6ZSBpbiBwdWxsKCknKTsKKworICAgIHJldHVybiBwcm9t
aXNlLnRoZW4ocmVzdWx0ID0+IHsKKyAgICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LmRvbmUsIGZh
bHNlLCAncmVzdWx0LmRvbmUnKTsKKworICAgICAgY29uc3QgdmlldyA9IHJlc3VsdC52YWx1ZTsK
KyAgICAgIGFzc2VydF9lcXVhbHModmlldy5jb25zdHJ1Y3RvciwgVWludDhBcnJheSwgJ3ZpZXcu
Y29uc3RydWN0b3InKTsKKyAgICAgIGFzc2VydF9lcXVhbHModmlldy5idWZmZXIuYnl0ZUxlbmd0
aCwgMTYsICd2aWV3LmJ1ZmZlcicpOworICAgICAgYXNzZXJ0X2VxdWFscyh2aWV3LmJ5dGVPZmZz
ZXQsIDAsICd2aWV3LmJ5dGVPZmZzZXQnKTsKKyAgICAgIGFzc2VydF9lcXVhbHModmlldy5ieXRl
TGVuZ3RoLCAxNiwgJ3ZpZXcuYnl0ZUxlbmd0aCcpOworICAgIH0pOworICB9KTsKK30sICdSZWFk
YWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBlbnF1ZXVlKCksIGdldFJlYWRlcigpLCB0aGVu
IHJlYWQoKScpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworICBsZXQgY29udHJvbGxlcjsKKwor
ICBjb25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAg
ICAgIGNvbnRyb2xsZXIgPSBjOworICAgIH0sCisgICAgdHlwZTogJ2J5dGVzJworICB9KTsKKwor
ICBjb25zdCByZWFkZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKCk7CisKKyAgY29uc3QgcHJvbWlzZSA9
IHJlYWRlci5yZWFkKCkudGhlbihyZXN1bHQgPT4geworICAgIGFzc2VydF9lcXVhbHMocmVzdWx0
LmRvbmUsIGZhbHNlKTsKKworICAgIGNvbnN0IHZpZXcgPSByZXN1bHQudmFsdWU7CisgICAgYXNz
ZXJ0X2VxdWFscyh2aWV3LmNvbnN0cnVjdG9yLCBVaW50OEFycmF5KTsKKyAgICBhc3NlcnRfZXF1
YWxzKHZpZXcuYnVmZmVyLmJ5dGVMZW5ndGgsIDEpOworICAgIGFzc2VydF9lcXVhbHModmlldy5i
eXRlT2Zmc2V0LCAwKTsKKyAgICBhc3NlcnRfZXF1YWxzKHZpZXcuYnl0ZUxlbmd0aCwgMSk7Cisg
IH0pOworCisgIGNvbnRyb2xsZXIuZW5xdWV1ZShuZXcgVWludDhBcnJheSgxKSk7CisKKyAgcmV0
dXJuIHByb21pc2U7Cit9LCAnUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogUHVzaCBz
b3VyY2UgdGhhdCBkb2VzblwndCB1bmRlcnN0YW5kIHB1bGwgc2lnbmFsJyk7CisKK3Rlc3QoKCkg
PT4geworICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4gbmV3IFJlYWRhYmxlU3Ry
ZWFtKHsKKyAgICBwdWxsOiAnZm9vJywKKyAgICB0eXBlOiAnYnl0ZXMnCisgIH0pLCAnY29uc3Ry
dWN0b3Igc2hvdWxkIHRocm93Jyk7Cit9LCAnUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJj
ZTogcHVsbCgpIGZ1bmN0aW9uIGlzIG5vdCBjYWxsYWJsZScpOworCitwcm9taXNlX3Rlc3QoKCkg
PT4geworICBjb25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMp
IHsKKyAgICAgIGMuZW5xdWV1ZShuZXcgVWludDE2QXJyYXkoMTYpKTsKKyAgICB9LAorICAgIHR5
cGU6ICdieXRlcycKKyAgfSk7CisKKyAgY29uc3QgcmVhZGVyID0gc3RyZWFtLmdldFJlYWRlcigp
OworCisgIHJldHVybiByZWFkZXIucmVhZCgpLnRoZW4ocmVzdWx0ID0+IHsKKyAgICBhc3NlcnRf
ZXF1YWxzKHJlc3VsdC5kb25lLCBmYWxzZSk7CisKKyAgICBjb25zdCB2aWV3ID0gcmVzdWx0LnZh
bHVlOworICAgIGFzc2VydF9lcXVhbHModmlldy5jb25zdHJ1Y3RvciwgVWludDhBcnJheSk7Cisg
ICAgYXNzZXJ0X2VxdWFscyh2aWV3LmJ1ZmZlci5ieXRlTGVuZ3RoLCAzMik7CisgICAgYXNzZXJ0
X2VxdWFscyh2aWV3LmJ5dGVPZmZzZXQsIDApOworICAgIGFzc2VydF9lcXVhbHModmlldy5ieXRl
TGVuZ3RoLCAzMik7CisgIH0pOworfSwgJ1JlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6
IGVucXVldWUoKSB3aXRoIFVpbnQxNkFycmF5LCBnZXRSZWFkZXIoKSwgdGhlbiByZWFkKCknKTsK
KworcHJvbWlzZV90ZXN0KHQgPT4geworICBjb25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJl
YW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGNvbnN0IHZpZXcgPSBuZXcgVWludDhBcnJheSgx
Nik7CisgICAgICB2aWV3WzBdID0gMHgwMTsKKyAgICAgIHZpZXdbOF0gPSAweDAyOworICAgICAg
Yy5lbnF1ZXVlKHZpZXcpOworICAgIH0sCisgICAgcHVsbDogdC51bnJlYWNoZWRfZnVuYygncHVs
bCgpIHNob3VsZCBub3QgYmUgY2FsbGVkJyksCisgICAgdHlwZTogJ2J5dGVzJworICB9KTsKKwor
ICBjb25zdCBieW9iUmVhZGVyID0gc3RyZWFtLmdldFJlYWRlcih7IG1vZGU6ICdieW9iJyB9KTsK
KworICByZXR1cm4gYnlvYlJlYWRlci5yZWFkKG5ldyBVaW50OEFycmF5KDgpKS50aGVuKHJlc3Vs
dCA9PiB7CisgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQuZG9uZSwgZmFsc2UsICdkb25lJyk7CisK
KyAgICBjb25zdCB2aWV3ID0gcmVzdWx0LnZhbHVlOworICAgIGFzc2VydF9lcXVhbHModmlldy5j
b25zdHJ1Y3RvciwgVWludDhBcnJheSwgJ3ZhbHVlLmNvbnN0cnVjdG9yJyk7CisgICAgYXNzZXJ0
X2VxdWFscyh2aWV3LmJ1ZmZlci5ieXRlTGVuZ3RoLCA4LCAndmFsdWUuYnVmZmVyLmJ5dGVMZW5n
dGgnKTsKKyAgICBhc3NlcnRfZXF1YWxzKHZpZXcuYnl0ZU9mZnNldCwgMCwgJ3ZhbHVlLmJ5dGVP
ZmZzZXQnKTsKKyAgICBhc3NlcnRfZXF1YWxzKHZpZXcuYnl0ZUxlbmd0aCwgOCwgJ3ZhbHVlLmJ5
dGVMZW5ndGgnKTsKKyAgICBhc3NlcnRfZXF1YWxzKHZpZXdbMF0sIDB4MDEpOworCisgICAgYnlv
YlJlYWRlci5yZWxlYXNlTG9jaygpOworCisgICAgY29uc3QgcmVhZGVyID0gc3RyZWFtLmdldFJl
YWRlcigpOworCisgICAgcmV0dXJuIHJlYWRlci5yZWFkKCk7CisgIH0pLnRoZW4ocmVzdWx0ID0+
IHsKKyAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdC5kb25lLCBmYWxzZSwgJ2RvbmUnKTsKKworICAg
IGNvbnN0IHZpZXcgPSByZXN1bHQudmFsdWU7CisgICAgYXNzZXJ0X2VxdWFscyh2aWV3LmNvbnN0
cnVjdG9yLCBVaW50OEFycmF5LCAndmFsdWUuY29uc3RydWN0b3InKTsKKyAgICBhc3NlcnRfZXF1
YWxzKHZpZXcuYnVmZmVyLmJ5dGVMZW5ndGgsIDE2LCAndmFsdWUuYnVmZmVyLmJ5dGVMZW5ndGgn
KTsKKyAgICBhc3NlcnRfZXF1YWxzKHZpZXcuYnl0ZU9mZnNldCwgOCwgJ3ZhbHVlLmJ5dGVPZmZz
ZXQnKTsKKyAgICBhc3NlcnRfZXF1YWxzKHZpZXcuYnl0ZUxlbmd0aCwgOCwgJ3ZhbHVlLmJ5dGVM
ZW5ndGgnKTsKKyAgICBhc3NlcnRfZXF1YWxzKHZpZXdbMF0sIDB4MDIpOworICB9KTsKK30sICdS
ZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBlbnF1ZXVlKCksIHJlYWQodmlldykgcGFy
dGlhbGx5LCB0aGVuIHJlYWQoKScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIGxldCBjb250
cm9sbGVyOworCisgIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3Rh
cnQoYykgeworICAgICAgY29udHJvbGxlciA9IGM7CisgICAgfSwKKyAgICBwdWxsOiB0LnVucmVh
Y2hlZF9mdW5jKCdwdWxsKCkgc2hvdWxkIG5vdCBiZSBjYWxsZWQnKSwKKyAgICB0eXBlOiAnYnl0
ZXMnCisgIH0pOworCisgIGNvbnN0IHJlYWRlciA9IHN0cmVhbS5nZXRSZWFkZXIoKTsKKworICBj
b250cm9sbGVyLmVucXVldWUobmV3IFVpbnQ4QXJyYXkoMTYpKTsKKyAgY29udHJvbGxlci5jbG9z
ZSgpOworCisgIHJldHVybiByZWFkZXIucmVhZCgpLnRoZW4ocmVzdWx0ID0+IHsKKyAgICBhc3Nl
cnRfZXF1YWxzKHJlc3VsdC5kb25lLCBmYWxzZSwgJ2RvbmUnKTsKKworICAgIGNvbnN0IHZpZXcg
PSByZXN1bHQudmFsdWU7CisgICAgYXNzZXJ0X2VxdWFscyh2aWV3LmJ5dGVPZmZzZXQsIDAsICdi
eXRlT2Zmc2V0Jyk7CisgICAgYXNzZXJ0X2VxdWFscyh2aWV3LmJ5dGVMZW5ndGgsIDE2LCAnYnl0
ZUxlbmd0aCcpOworCisgICAgcmV0dXJuIHJlYWRlci5yZWFkKCk7CisgIH0pLnRoZW4ocmVzdWx0
ID0+IHsKKyAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdC5kb25lLCB0cnVlLCAnZG9uZScpOworICAg
IGFzc2VydF9lcXVhbHMocmVzdWx0LnZhbHVlLCB1bmRlZmluZWQsICd2YWx1ZScpOworICB9KTsK
K30sICdSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBnZXRSZWFkZXIoKSwgZW5xdWV1
ZSgpLCBjbG9zZSgpLCB0aGVuIHJlYWQoKScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIGNv
bnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAg
Yy5lbnF1ZXVlKG5ldyBVaW50OEFycmF5KDE2KSk7CisgICAgICBjLmNsb3NlKCk7CisgICAgfSwK
KyAgICBwdWxsOiB0LnVucmVhY2hlZF9mdW5jKCdwdWxsKCkgc2hvdWxkIG5vdCBiZSBjYWxsZWQn
KSwKKyAgICB0eXBlOiAnYnl0ZXMnCisgIH0pOworCisgIGNvbnN0IHJlYWRlciA9IHN0cmVhbS5n
ZXRSZWFkZXIoKTsKKworICByZXR1cm4gcmVhZGVyLnJlYWQoKS50aGVuKHJlc3VsdCA9PiB7Cisg
ICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQuZG9uZSwgZmFsc2UsICdkb25lJyk7CisKKyAgICBjb25z
dCB2aWV3ID0gcmVzdWx0LnZhbHVlOworICAgIGFzc2VydF9lcXVhbHModmlldy5ieXRlT2Zmc2V0
LCAwLCAnYnl0ZU9mZnNldCcpOworICAgIGFzc2VydF9lcXVhbHModmlldy5ieXRlTGVuZ3RoLCAx
NiwgJ2J5dGVMZW5ndGgnKTsKKworICAgIHJldHVybiByZWFkZXIucmVhZCgpOworICB9KS50aGVu
KHJlc3VsdCA9PiB7CisgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQuZG9uZSwgdHJ1ZSwgJ2RvbmUn
KTsKKyAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdC52YWx1ZSwgdW5kZWZpbmVkLCAndmFsdWUnKTsK
KyAgfSk7Cit9LCAnUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogZW5xdWV1ZSgpLCBj
bG9zZSgpLCBnZXRSZWFkZXIoKSwgdGhlbiByZWFkKCknKTsKKworcHJvbWlzZV90ZXN0KCgpID0+
IHsKKyAgbGV0IGNvbnRyb2xsZXI7CisgIGxldCBieW9iUmVxdWVzdDsKKworICBjb25zdCBzdHJl
YW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGNvbnRyb2xs
ZXIgPSBjOworICAgIH0sCisgICAgcHVsbCgpIHsKKyAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZShu
ZXcgVWludDhBcnJheSgxNikpOworICAgICAgYnlvYlJlcXVlc3QgPSBjb250cm9sbGVyLmJ5b2JS
ZXF1ZXN0OworICAgIH0sCisgICAgdHlwZTogJ2J5dGVzJworICB9KTsKKworICBjb25zdCByZWFk
ZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKCk7CisKKyAgcmV0dXJuIHJlYWRlci5yZWFkKCkudGhlbihy
ZXN1bHQgPT4geworICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LmRvbmUsIGZhbHNlLCAnZG9uZScp
OworICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LnZhbHVlLmJ5dGVMZW5ndGgsIDE2LCAnYnl0ZUxl
bmd0aCcpOworICAgIGFzc2VydF9lcXVhbHMoYnlvYlJlcXVlc3QsIG51bGwsICdieW9iUmVxdWVz
dCBtdXN0IGJlIG51bGwnKTsKKyAgfSk7Cit9LCAnUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNv
dXJjZTogUmVzcG9uZCB0byBwdWxsKCkgYnkgZW5xdWV1ZSgpJyk7CisKK3Byb21pc2VfdGVzdCgo
KSA9PiB7CisgIGxldCBwdWxsQ291bnQgPSAwOworCisgIGxldCBjb250cm9sbGVyOworICBsZXQg
YnlvYlJlcXVlc3Q7CisgIGNvbnN0IGRlc2lyZWRTaXplcyA9IFtdOworCisgIGNvbnN0IHN0cmVh
bSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgY29udHJvbGxl
ciA9IGM7CisgICAgfSwKKyAgICBwdWxsKCkgeworICAgICAgYnlvYlJlcXVlc3QgPSBjb250cm9s
bGVyLmJ5b2JSZXF1ZXN0OworICAgICAgZGVzaXJlZFNpemVzLnB1c2goY29udHJvbGxlci5kZXNp
cmVkU2l6ZSk7CisgICAgICBjb250cm9sbGVyLmVucXVldWUobmV3IFVpbnQ4QXJyYXkoMSkpOwor
ICAgICAgZGVzaXJlZFNpemVzLnB1c2goY29udHJvbGxlci5kZXNpcmVkU2l6ZSk7CisgICAgICBj
b250cm9sbGVyLmVucXVldWUobmV3IFVpbnQ4QXJyYXkoMSkpOworICAgICAgZGVzaXJlZFNpemVz
LnB1c2goY29udHJvbGxlci5kZXNpcmVkU2l6ZSk7CisKKyAgICAgICsrcHVsbENvdW50OworICAg
IH0sCisgICAgdHlwZTogJ2J5dGVzJworICB9LCB7CisgICAgaGlnaFdhdGVyTWFyazogMAorICB9
KTsKKworICBjb25zdCByZWFkZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKCk7CisKKyAgY29uc3QgcDAg
PSByZWFkZXIucmVhZCgpOworICBjb25zdCBwMSA9IHJlYWRlci5yZWFkKCk7CisgIGNvbnN0IHAy
ID0gcmVhZGVyLnJlYWQoKTsKKworICAvLyBSZXNwb25kIHRvIHRoZSBmaXJzdCBwdWxsIGNhbGwu
CisgIGNvbnRyb2xsZXIuZW5xdWV1ZShuZXcgVWludDhBcnJheSgxKSk7CisKKyAgYXNzZXJ0X2Vx
dWFscyhwdWxsQ291bnQsIDAsICdwdWxsQ291bnQgYWZ0ZXIgdGhlIGVucXVldWUoKSBvdXRzaWRl
IHB1bGwnKTsKKworICByZXR1cm4gUHJvbWlzZS5hbGwoW3AwLCBwMSwgcDJdKS50aGVuKHJlc3Vs
dCA9PiB7CisgICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDEsICdwdWxsQ291bnQgYWZ0ZXIg
Y29tcGxldGlvbiBvZiBhbGwgcmVhZCgpcycpOworCisgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHRb
MF0uZG9uZSwgZmFsc2UsICdyZXN1bHRbMF0uZG9uZScpOworICAgIGFzc2VydF9lcXVhbHMocmVz
dWx0WzBdLnZhbHVlLmJ5dGVMZW5ndGgsIDEsICdyZXN1bHRbMF0udmFsdWUuYnl0ZUxlbmd0aCcp
OworICAgIGFzc2VydF9lcXVhbHMocmVzdWx0WzFdLmRvbmUsIGZhbHNlLCAncmVzdWx0WzFdLmRv
bmUnKTsKKyAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdFsxXS52YWx1ZS5ieXRlTGVuZ3RoLCAxLCAn
cmVzdWx0WzFdLnZhbHVlLmJ5dGVMZW5ndGgnKTsKKyAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdFsy
XS5kb25lLCBmYWxzZSwgJ3Jlc3VsdFsyXS5kb25lJyk7CisgICAgYXNzZXJ0X2VxdWFscyhyZXN1
bHRbMl0udmFsdWUuYnl0ZUxlbmd0aCwgMSwgJ3Jlc3VsdFsyXS52YWx1ZS5ieXRlTGVuZ3RoJyk7
CisgICAgYXNzZXJ0X2VxdWFscyhieW9iUmVxdWVzdCwgbnVsbCwgJ2J5b2JSZXF1ZXN0IHNob3Vs
ZCBiZSBudWxsJyk7CisgICAgYXNzZXJ0X2VxdWFscyhkZXNpcmVkU2l6ZXNbMF0sIDAsICdkZXNp
cmVkU2l6ZSBvbiBwdWxsIHNob3VsZCBiZSAwJyk7CisgICAgYXNzZXJ0X2VxdWFscyhkZXNpcmVk
U2l6ZXNbMV0sIDAsICdkZXNpcmVkU2l6ZSBhZnRlciAxc3QgZW5xdWV1ZSgpIHNob3VsZCBiZSAw
Jyk7CisgICAgYXNzZXJ0X2VxdWFscyhkZXNpcmVkU2l6ZXNbMl0sIDAsICdkZXNpcmVkU2l6ZSBh
ZnRlciAybmQgZW5xdWV1ZSgpIHNob3VsZCBiZSAwJyk7CisgICAgYXNzZXJ0X2VxdWFscyhwdWxs
Q291bnQsIDEsICdwdWxsKCkgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIG9uY2UnKTsKKyAgfSk7Cit9
LCAnUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogUmVzcG9uZCB0byBwdWxsKCkgYnkg
ZW5xdWV1ZSgpIGFzeW5jaHJvbm91c2x5Jyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisgIGxl
dCBwdWxsQ291bnQgPSAwOworCisgIGxldCBieW9iUmVxdWVzdDsKKyAgY29uc3QgZGVzaXJlZFNp
emVzID0gW107CisKKyAgY29uc3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBw
dWxsKGMpIHsKKyAgICAgIGJ5b2JSZXF1ZXN0ID0gYy5ieW9iUmVxdWVzdDsKKyAgICAgIGRlc2ly
ZWRTaXplcy5wdXNoKGMuZGVzaXJlZFNpemUpOworCisgICAgICBpZiAocHVsbENvdW50IDwgMykg
eworICAgICAgICBjLmVucXVldWUobmV3IFVpbnQ4QXJyYXkoMSkpOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgYy5jbG9zZSgpOworICAgICAgfQorCisgICAgICArK3B1bGxDb3VudDsKKyAgICB9
LAorICAgIHR5cGU6ICdieXRlcycKKyAgfSwgeworICAgIGhpZ2hXYXRlck1hcms6IDI1NgorICB9
KTsKKworICBjb25zdCByZWFkZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKCk7CisKKyAgY29uc3QgcDAg
PSByZWFkZXIucmVhZCgpOworICBjb25zdCBwMSA9IHJlYWRlci5yZWFkKCk7CisgIGNvbnN0IHAy
ID0gcmVhZGVyLnJlYWQoKTsKKworICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMCwgJ05vIHB1
bGwgYXMgc3RhcnQoKSBqdXN0IGZpbmlzaGVkIGFuZCBpcyBub3QgeWV0IHJlZmxlY3RlZCB0byB0
aGUgc3RhdGUgb2YgdGhlIHN0cmVhbScpOworCisgIHJldHVybiBQcm9taXNlLmFsbChbcDAsIHAx
LCBwMl0pLnRoZW4ocmVzdWx0ID0+IHsKKyAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgNCwg
J3B1bGxDb3VudCBhZnRlciBjb21wbGV0aW9uIG9mIGFsbCByZWFkKClzJyk7CisKKyAgICBhc3Nl
cnRfZXF1YWxzKHJlc3VsdFswXS5kb25lLCBmYWxzZSwgJ3Jlc3VsdFswXS5kb25lJyk7CisgICAg
YXNzZXJ0X2VxdWFscyhyZXN1bHRbMF0udmFsdWUuYnl0ZUxlbmd0aCwgMSwgJ3Jlc3VsdFswXS52
YWx1ZS5ieXRlTGVuZ3RoJyk7CisgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHRbMV0uZG9uZSwgZmFs
c2UsICdyZXN1bHRbMV0uZG9uZScpOworICAgIGFzc2VydF9lcXVhbHMocmVzdWx0WzFdLnZhbHVl
LmJ5dGVMZW5ndGgsIDEsICdyZXN1bHRbMV0udmFsdWUuYnl0ZUxlbmd0aCcpOworICAgIGFzc2Vy
dF9lcXVhbHMocmVzdWx0WzJdLmRvbmUsIGZhbHNlLCAncmVzdWx0WzJdLmRvbmUnKTsKKyAgICBh
c3NlcnRfZXF1YWxzKHJlc3VsdFsyXS52YWx1ZS5ieXRlTGVuZ3RoLCAxLCAncmVzdWx0WzJdLnZh
bHVlLmJ5dGVMZW5ndGgnKTsKKyAgICBhc3NlcnRfZXF1YWxzKGJ5b2JSZXF1ZXN0LCBudWxsLCAn
YnlvYlJlcXVlc3Qgc2hvdWxkIGJlIG51bGwnKTsKKyAgICBhc3NlcnRfZXF1YWxzKGRlc2lyZWRT
aXplc1swXSwgMjU2LCAnZGVzaXJlZFNpemUgb24gcHVsbCBzaG91bGQgYmUgMjU2Jyk7CisgICAg
YXNzZXJ0X2VxdWFscyhkZXNpcmVkU2l6ZXNbMV0sIDI1NiwgJ2Rlc2lyZWRTaXplIGFmdGVyIDFz
dCBlbnF1ZXVlKCkgc2hvdWxkIGJlIDI1NicpOworICAgIGFzc2VydF9lcXVhbHMoZGVzaXJlZFNp
emVzWzJdLCAyNTYsICdkZXNpcmVkU2l6ZSBhZnRlciAybmQgZW5xdWV1ZSgpIHNob3VsZCBiZSAy
NTYnKTsKKyAgICBhc3NlcnRfZXF1YWxzKGRlc2lyZWRTaXplc1szXSwgMjU2LCAnZGVzaXJlZFNp
emUgYWZ0ZXIgM3JkIGVucXVldWUoKSBzaG91bGQgYmUgMjU2Jyk7CisgIH0pOworfSwgJ1JlYWRh
YmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IFJlc3BvbmQgdG8gbXVsdGlwbGUgcHVsbCgpIGJ5
IHNlcGFyYXRlIGVucXVldWUoKScpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworICBsZXQgY29u
dHJvbGxlcjsKKworICBsZXQgcHVsbENvdW50ID0gMDsKKyAgY29uc3QgYnlvYlJlcXVlc3REZWZp
bmVkID0gW107CisKKyAgY29uc3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBz
dGFydChjKSB7CisgICAgICBjb250cm9sbGVyID0gYzsKKyAgICB9LAorICAgIHB1bGwoKSB7Cisg
ICAgICBieW9iUmVxdWVzdERlZmluZWQucHVzaChjb250cm9sbGVyLmJ5b2JSZXF1ZXN0ICE9PSBu
dWxsKTsKKworICAgICAgY29uc3QgdmlldyA9IGNvbnRyb2xsZXIuYnlvYlJlcXVlc3QudmlldzsK
KyAgICAgIHZpZXdbMF0gPSAweDAxOworICAgICAgY29udHJvbGxlci5ieW9iUmVxdWVzdC5yZXNw
b25kKDEpOworCisgICAgICBieW9iUmVxdWVzdERlZmluZWQucHVzaChjb250cm9sbGVyLmJ5b2JS
ZXF1ZXN0ICE9PSBudWxsKTsKKworICAgICAgKytwdWxsQ291bnQ7CisgICAgfSwKKyAgICB0eXBl
OiAnYnl0ZXMnCisgIH0pOworCisgIGNvbnN0IHJlYWRlciA9IHN0cmVhbS5nZXRSZWFkZXIoeyBt
b2RlOiAnYnlvYicgfSk7CisKKyAgcmV0dXJuIHJlYWRlci5yZWFkKG5ldyBVaW50OEFycmF5KDEp
KS50aGVuKHJlc3VsdCA9PiB7CisgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQuZG9uZSwgZmFsc2Us
ICdyZXN1bHQuZG9uZScpOworICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LnZhbHVlLmJ5dGVMZW5n
dGgsIDEsICdyZXN1bHQudmFsdWUuYnl0ZUxlbmd0aCcpOworICAgIGFzc2VydF9lcXVhbHMocmVz
dWx0LnZhbHVlWzBdLCAweDAxLCAncmVzdWx0LnZhbHVlWzBdJyk7CisgICAgYXNzZXJ0X2VxdWFs
cyhwdWxsQ291bnQsIDEsICdwdWxsKCkgc2hvdWxkIGJlIGNhbGxlZCBvbmx5IG9uY2UnKTsKKyAg
ICBhc3NlcnRfdHJ1ZShieW9iUmVxdWVzdERlZmluZWRbMF0sICdieW9iUmVxdWVzdCBtdXN0IG5v
dCBiZSBudWxsIGJlZm9yZSByZXNwb25kKCknKTsKKyAgICBhc3NlcnRfZmFsc2UoYnlvYlJlcXVl
c3REZWZpbmVkWzFdLCAnYnlvYlJlcXVlc3QgbXVzdCBiZSBudWxsIGFmdGVyIHJlc3BvbmQoKScp
OworICB9KTsKK30sICdSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiByZWFkKHZpZXcp
LCB0aGVuIHJlc3BvbmQoKScpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworICBsZXQgY29udHJv
bGxlcjsKKworICBsZXQgcHVsbENvdW50ID0gMDsKKyAgY29uc3QgYnlvYlJlcXVlc3REZWZpbmVk
ID0gW107CisKKyAgY29uc3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFy
dChjKSB7CisgICAgICBjb250cm9sbGVyID0gYzsKKyAgICB9LAorICAgIHB1bGwoKSB7CisgICAg
ICBieW9iUmVxdWVzdERlZmluZWQucHVzaChjb250cm9sbGVyLmJ5b2JSZXF1ZXN0ICE9PSBudWxs
KTsKKworICAgICAgLy8gRW11bGF0ZSBBcnJheUJ1ZmZlciB0cmFuc2ZlciBieSBqdXN0IGNyZWF0
aW5nIGEgbmV3IEFycmF5QnVmZmVyIGFuZCBwYXNzIGl0LiBCeSBjaGVja2luZyB0aGUgcmVzdWx0
IG9mCisgICAgICAvLyByZWFkKHZpZXcpLCB3ZSB0ZXN0IHRoYXQgdGhlIHJlc3BvbmQoKSdzIGJ1
ZmZlciBhcmd1bWVudCBpcyB3b3JraW5nIGNvcnJlY3RseS4KKyAgICAgIC8vCisgICAgICAvLyBB
IHJlYWwgaW1wbGVtZW50YXRpb24gb2YgdGhlIHVuZGVybHlpbmcgYnl0ZSBzb3VyY2Ugd291bGQg
dHJhbnNmZXIgY29udHJvbGxlci5ieW9iUmVxdWVzdC52aWV3LmJ1ZmZlciBpbnRvCisgICAgICAv
LyBhIG5ldyBBcnJheUJ1ZmZlciwgdGhlbiBjb25zdHJ1Y3QgYSB2aWV3IGFyb3VuZCBpdCBhbmQg
d3JpdGUgdG8gaXQuCisgICAgICBjb25zdCB0cmFuc2ZlcnJlZFZpZXcgPSBuZXcgVWludDhBcnJh
eSgxKTsKKyAgICAgIHRyYW5zZmVycmVkVmlld1swXSA9IDB4MDE7CisgICAgICBjb250cm9sbGVy
LmJ5b2JSZXF1ZXN0LnJlc3BvbmRXaXRoTmV3Vmlldyh0cmFuc2ZlcnJlZFZpZXcpOworCisgICAg
ICBieW9iUmVxdWVzdERlZmluZWQucHVzaChjb250cm9sbGVyLmJ5b2JSZXF1ZXN0ICE9PSBudWxs
KTsKKworICAgICAgKytwdWxsQ291bnQ7CisgICAgfSwKKyAgICB0eXBlOiAnYnl0ZXMnCisgIH0p
OworCisgIGNvbnN0IHJlYWRlciA9IHN0cmVhbS5nZXRSZWFkZXIoeyBtb2RlOiAnYnlvYicgfSk7
CisKKyAgcmV0dXJuIHJlYWRlci5yZWFkKG5ldyBVaW50OEFycmF5KDEpKS50aGVuKHJlc3VsdCA9
PiB7CisgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQuZG9uZSwgZmFsc2UsICdyZXN1bHQuZG9uZScp
OworICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LnZhbHVlLmJ5dGVMZW5ndGgsIDEsICdyZXN1bHQu
dmFsdWUuYnl0ZUxlbmd0aCcpOworICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LnZhbHVlWzBdLCAw
eDAxLCAncmVzdWx0LnZhbHVlWzBdJyk7CisgICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDEs
ICdwdWxsKCkgc2hvdWxkIGJlIGNhbGxlZCBvbmx5IG9uY2UnKTsKKyAgICBhc3NlcnRfdHJ1ZShi
eW9iUmVxdWVzdERlZmluZWRbMF0sICdieW9iUmVxdWVzdCBtdXN0IG5vdCBiZSBudWxsIGJlZm9y
ZSByZXNwb25kKCknKTsKKyAgICBhc3NlcnRfZmFsc2UoYnlvYlJlcXVlc3REZWZpbmVkWzFdLCAn
YnlvYlJlcXVlc3QgbXVzdCBiZSBudWxsIGFmdGVyIHJlc3BvbmQoKScpOworICB9KTsKK30sICdS
ZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiByZWFkKHZpZXcpLCB0aGVuIHJlc3BvbmQo
KSB3aXRoIGEgdHJhbnNmZXJyZWQgQXJyYXlCdWZmZXInKTsKKworcHJvbWlzZV90ZXN0KCgpID0+
IHsKKyAgbGV0IGNvbnRyb2xsZXI7CisgIGxldCBieW9iUmVxdWVzdFdhc0RlZmluZWQ7CisgIGxl
dCBpbmNvcnJlY3RSZXNwb25kRXhjZXB0aW9uOworCisgIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFk
YWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgY29udHJvbGxlciA9IGM7CisgICAg
fSwKKyAgICBwdWxsKCkgeworICAgICAgYnlvYlJlcXVlc3RXYXNEZWZpbmVkID0gY29udHJvbGxl
ci5ieW9iUmVxdWVzdCAhPT0gbnVsbDsKKworICAgICAgdHJ5IHsKKyAgICAgICAgY29udHJvbGxl
ci5ieW9iUmVxdWVzdC5yZXNwb25kKDIpOworICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBp
bmNvcnJlY3RSZXNwb25kRXhjZXB0aW9uID0gZTsKKyAgICAgIH0KKworICAgICAgY29udHJvbGxl
ci5ieW9iUmVxdWVzdC5yZXNwb25kKDEpOworICAgIH0sCisgICAgdHlwZTogJ2J5dGVzJworICB9
KTsKKworICBjb25zdCByZWFkZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKHsgbW9kZTogJ2J5b2InIH0p
OworCisgIHJldHVybiByZWFkZXIucmVhZChuZXcgVWludDhBcnJheSgxKSkudGhlbigoKSA9PiB7
CisgICAgYXNzZXJ0X3RydWUoYnlvYlJlcXVlc3RXYXNEZWZpbmVkLCAnYnlvYlJlcXVlc3Qgc2hv
dWxkIGJlIG5vbi1udWxsJyk7CisgICAgYXNzZXJ0X25vdF9lcXVhbHMoaW5jb3JyZWN0UmVzcG9u
ZEV4Y2VwdGlvbiwgdW5kZWZpbmVkLCAncmVzcG9uZCgpIG11c3QgdGhyb3cnKTsKKyAgICBhc3Nl
cnRfZXF1YWxzKGluY29ycmVjdFJlc3BvbmRFeGNlcHRpb24ubmFtZSwgJ1JhbmdlRXJyb3InLCAn
cmVzcG9uZCgpIG11c3QgdGhyb3cgYSBSYW5nZUVycm9yJyk7CisgIH0pOworfSwgJ1JlYWRhYmxl
U3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IHJlYWQodmlldyksIHRoZW4gcmVzcG9uZCgpIHdpdGgg
dG9vIGJpZyB2YWx1ZScpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworICBsZXQgcHVsbENvdW50
ID0gMDsKKworICBsZXQgY29udHJvbGxlcjsKKyAgbGV0IGJ5b2JSZXF1ZXN0OworICBsZXQgdmll
d0luZm87CisKKyAgY29uc3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFy
dChjKSB7CisgICAgICBjb250cm9sbGVyID0gYzsKKyAgICB9LAorICAgIHB1bGwoKSB7CisgICAg
ICArK3B1bGxDb3VudDsKKworICAgICAgYnlvYlJlcXVlc3QgPSBjb250cm9sbGVyLmJ5b2JSZXF1
ZXN0OworICAgICAgY29uc3QgdmlldyA9IGJ5b2JSZXF1ZXN0LnZpZXc7CisgICAgICB2aWV3SW5m
byA9IGV4dHJhY3RWaWV3SW5mbyh2aWV3KTsKKworICAgICAgdmlld1swXSA9IDB4MDE7CisgICAg
ICB2aWV3WzFdID0gMHgwMjsKKyAgICAgIHZpZXdbMl0gPSAweDAzOworCisgICAgICBjb250cm9s
bGVyLmJ5b2JSZXF1ZXN0LnJlc3BvbmQoMyk7CisgICAgfSwKKyAgICB0eXBlOiAnYnl0ZXMnCisg
IH0pOworCisgIGNvbnN0IHJlYWRlciA9IHN0cmVhbS5nZXRSZWFkZXIoeyBtb2RlOiAnYnlvYicg
fSk7CisKKyAgcmV0dXJuIHJlYWRlci5yZWFkKG5ldyBVaW50MTZBcnJheSgyKSkudGhlbihyZXN1
bHQgPT4geworICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAxKTsKKworICAgIGFzc2VydF9l
cXVhbHMocmVzdWx0LmRvbmUsIGZhbHNlLCAnZG9uZScpOworCisgICAgY29uc3QgdmlldyA9IHJl
c3VsdC52YWx1ZTsKKyAgICBhc3NlcnRfZXF1YWxzKHZpZXcuYnl0ZU9mZnNldCwgMCwgJ2J5dGVP
ZmZzZXQnKTsKKyAgICBhc3NlcnRfZXF1YWxzKHZpZXcuYnl0ZUxlbmd0aCwgMiwgJ2J5dGVMZW5n
dGgnKTsKKworICAgIGFzc2VydF9lcXVhbHModmlld1swXSwgMHgwMjAxKTsKKworICAgIHJldHVy
biByZWFkZXIucmVhZChuZXcgVWludDhBcnJheSgxKSk7CisgIH0pLnRoZW4ocmVzdWx0ID0+IHsK
KyAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMSk7CisgICAgYXNzZXJ0X25vdF9lcXVhbHMo
YnlvYlJlcXVlc3QsIG51bGwsICdieW9iUmVxdWVzdCBtdXN0IG5vdCBiZSBudWxsJyk7CisgICAg
YXNzZXJ0X2VxdWFscyh2aWV3SW5mby5jb25zdHJ1Y3RvciwgVWludDhBcnJheSwgJ3ZpZXcuY29u
c3RydWN0b3Igc2hvdWxkIGJlIFVpbnQ4QXJyYXknKTsKKyAgICBhc3NlcnRfZXF1YWxzKHZpZXdJ
bmZvLmJ1ZmZlckJ5dGVMZW5ndGgsIDQsICd2aWV3LmJ1ZmZlci5ieXRlTGVuZ3RoIHNob3VsZCBi
ZSA0Jyk7CisgICAgYXNzZXJ0X2VxdWFscyh2aWV3SW5mby5ieXRlT2Zmc2V0LCAwLCAndmlldy5i
eXRlT2Zmc2V0IHNob3VsZCBiZSAwJyk7CisgICAgYXNzZXJ0X2VxdWFscyh2aWV3SW5mby5ieXRl
TGVuZ3RoLCA0LCAndmlldy5ieXRlTGVuZ3RoIHNob3VsZCBiZSA0Jyk7CisKKyAgICBhc3NlcnRf
ZXF1YWxzKHJlc3VsdC5kb25lLCBmYWxzZSwgJ2RvbmUnKTsKKworICAgIGNvbnN0IHZpZXcgPSBy
ZXN1bHQudmFsdWU7CisgICAgYXNzZXJ0X2VxdWFscyh2aWV3LmJ5dGVPZmZzZXQsIDAsICdieXRl
T2Zmc2V0Jyk7CisgICAgYXNzZXJ0X2VxdWFscyh2aWV3LmJ5dGVMZW5ndGgsIDEsICdieXRlTGVu
Z3RoJyk7CisKKyAgICBhc3NlcnRfZXF1YWxzKHZpZXdbMF0sIDB4MDMpOworICB9KTsKK30sICdS
ZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiByZXNwb25kKDMpIHRvIHJlYWQodmlldykg
d2l0aCAyIGVsZW1lbnQgVWludDE2QXJyYXkgZW5xdWV1ZXMgdGhlIDEgYnl0ZSAnICsKKyAgICdy
ZW1haW5kZXInKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBjb25zdCBzdHJlYW0gPSBuZXcg
UmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGNvbnRyb2xsZXIpIHsKKyAgICAgIGNvbnN0IHZp
ZXcgPSBuZXcgVWludDhBcnJheSgxNik7CisgICAgICB2aWV3WzE1XSA9IDB4MDE7CisgICAgICBj
b250cm9sbGVyLmVucXVldWUodmlldyk7CisgICAgfSwKKyAgICBwdWxsOiB0LnVucmVhY2hlZF9m
dW5jKCdwdWxsKCkgc2hvdWxkIG5vdCBiZSBjYWxsZWQnKSwKKyAgICB0eXBlOiAnYnl0ZXMnCisg
IH0pOworCisgIGNvbnN0IHJlYWRlciA9IHN0cmVhbS5nZXRSZWFkZXIoeyBtb2RlOiAnYnlvYicg
fSk7CisKKyAgcmV0dXJuIHJlYWRlci5yZWFkKG5ldyBVaW50OEFycmF5KDE2KSkudGhlbihyZXN1
bHQgPT4geworICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LmRvbmUsIGZhbHNlKTsKKworICAgIGNv
bnN0IHZpZXcgPSByZXN1bHQudmFsdWU7CisgICAgYXNzZXJ0X2VxdWFscyh2aWV3LmJ5dGVPZmZz
ZXQsIDApOworICAgIGFzc2VydF9lcXVhbHModmlldy5ieXRlTGVuZ3RoLCAxNik7CisgICAgYXNz
ZXJ0X2VxdWFscyh2aWV3WzE1XSwgMHgwMSk7CisgIH0pOworfSwgJ1JlYWRhYmxlU3RyZWFtIHdp
dGggYnl0ZSBzb3VyY2U6IGVucXVldWUoKSwgZ2V0UmVhZGVyKCksIHRoZW4gcmVhZCh2aWV3KScp
OworCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIGxldCBjYW5jZWxDb3VudCA9IDA7CisgIGxldCBy
ZWFzb247CisKKyAgY29uc3QgcGFzc2VkUmVhc29uID0gbmV3IFR5cGVFcnJvcignZm9vJyk7CisK
KyAgY29uc3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7Cisg
ICAgICBjLmVucXVldWUobmV3IFVpbnQ4QXJyYXkoMTYpKTsKKyAgICB9LAorICAgIHB1bGw6IHQu
dW5yZWFjaGVkX2Z1bmMoJ3B1bGwoKSBzaG91bGQgbm90IGJlIGNhbGxlZCcpLAorICAgIGNhbmNl
bChyKSB7CisgICAgICBpZiAoY2FuY2VsQ291bnQgPT09IDApIHsKKyAgICAgICAgcmVhc29uID0g
cjsKKyAgICAgIH0KKworICAgICAgKytjYW5jZWxDb3VudDsKKyAgICB9LAorICAgIHR5cGU6ICdi
eXRlcycKKyAgfSk7CisKKyAgY29uc3QgcmVhZGVyID0gc3RyZWFtLmdldFJlYWRlcigpOworCisg
IHJldHVybiByZWFkZXIuY2FuY2VsKHBhc3NlZFJlYXNvbikudGhlbihyZXN1bHQgPT4geworICAg
IGFzc2VydF9lcXVhbHMocmVzdWx0LCB1bmRlZmluZWQpOworICAgIGFzc2VydF9lcXVhbHMoY2Fu
Y2VsQ291bnQsIDEpOworICAgIGFzc2VydF9lcXVhbHMocmVhc29uLCBwYXNzZWRSZWFzb24sICdy
ZWFzb24gc2hvdWxkIGVxdWFsIHRoZSBwYXNzZWQgcmVhc29uJyk7CisgIH0pOworfSwgJ1JlYWRh
YmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IGVucXVldWUoKSwgZ2V0UmVhZGVyKCksIHRoZW4g
Y2FuY2VsKCkgKG1vZGUgPSBub3QgQllPQiknKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBs
ZXQgY2FuY2VsQ291bnQgPSAwOworICBsZXQgcmVhc29uOworCisgIGNvbnN0IHBhc3NlZFJlYXNv
biA9IG5ldyBUeXBlRXJyb3IoJ2ZvbycpOworCisgIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJs
ZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgYy5lbnF1ZXVlKG5ldyBVaW50OEFycmF5
KDE2KSk7CisgICAgfSwKKyAgICBwdWxsOiB0LnVucmVhY2hlZF9mdW5jKCdwdWxsKCkgc2hvdWxk
IG5vdCBiZSBjYWxsZWQnKSwKKyAgICBjYW5jZWwocikgeworICAgICAgaWYgKGNhbmNlbENvdW50
ID09PSAwKSB7CisgICAgICAgIHJlYXNvbiA9IHI7CisgICAgICB9CisKKyAgICAgICsrY2FuY2Vs
Q291bnQ7CisgICAgfSwKKyAgICB0eXBlOiAnYnl0ZXMnCisgIH0pOworCisgIGNvbnN0IHJlYWRl
ciA9IHN0cmVhbS5nZXRSZWFkZXIoeyBtb2RlOiAnYnlvYicgfSk7CisKKyAgcmV0dXJuIHJlYWRl
ci5jYW5jZWwocGFzc2VkUmVhc29uKS50aGVuKHJlc3VsdCA9PiB7CisgICAgYXNzZXJ0X2VxdWFs
cyhyZXN1bHQsIHVuZGVmaW5lZCk7CisgICAgYXNzZXJ0X2VxdWFscyhjYW5jZWxDb3VudCwgMSk7
CisgICAgYXNzZXJ0X2VxdWFscyhyZWFzb24sIHBhc3NlZFJlYXNvbiwgJ3JlYXNvbiBzaG91bGQg
ZXF1YWwgdGhlIHBhc3NlZCByZWFzb24nKTsKKyAgfSk7Cit9LCAnUmVhZGFibGVTdHJlYW0gd2l0
aCBieXRlIHNvdXJjZTogZW5xdWV1ZSgpLCBnZXRSZWFkZXIoKSwgdGhlbiBjYW5jZWwoKSAobW9k
ZSA9IEJZT0IpJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgbGV0IGNhbmNlbENvdW50ID0g
MDsKKyAgbGV0IHJlYXNvbjsKKworICBjb25zdCBwYXNzZWRSZWFzb24gPSBuZXcgVHlwZUVycm9y
KCdmb28nKTsKKworICBsZXQgY29udHJvbGxlcjsKKworICBjb25zdCBzdHJlYW0gPSBuZXcgUmVh
ZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGNvbnRyb2xsZXIgPSBjOworICAg
IH0sCisgICAgcHVsbDogdC51bnJlYWNoZWRfZnVuYygncHVsbCgpIHNob3VsZCBub3QgYmUgY2Fs
bGVkJyksCisgICAgY2FuY2VsKHIpIHsKKyAgICAgIGlmIChjYW5jZWxDb3VudCA9PT0gMCkgewor
ICAgICAgICByZWFzb24gPSByOworICAgICAgICBjb250cm9sbGVyLmJ5b2JSZXF1ZXN0LnJlc3Bv
bmQoMCk7CisgICAgICB9CisKKyAgICAgICsrY2FuY2VsQ291bnQ7CisKKyAgICAgIHJldHVybiAn
YmFyJzsKKyAgICB9LAorICAgIHR5cGU6ICdieXRlcycKKyAgfSk7CisKKyAgY29uc3QgcmVhZGVy
ID0gc3RyZWFtLmdldFJlYWRlcih7IG1vZGU6ICdieW9iJyB9KTsKKworICBjb25zdCByZWFkUHJv
bWlzZSA9IHJlYWRlci5yZWFkKG5ldyBVaW50OEFycmF5KDEpKS50aGVuKHJlc3VsdCA9PiB7Cisg
ICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQuZG9uZSwgdHJ1ZSk7CisgIH0pOworCisgIGNvbnN0IGNh
bmNlbFByb21pc2UgPSByZWFkZXIuY2FuY2VsKHBhc3NlZFJlYXNvbikudGhlbihyZXN1bHQgPT4g
eworICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LCB1bmRlZmluZWQpOworICAgIGFzc2VydF9lcXVh
bHMoY2FuY2VsQ291bnQsIDEpOworICAgIGFzc2VydF9lcXVhbHMocmVhc29uLCBwYXNzZWRSZWFz
b24sICdyZWFzb24gc2hvdWxkIGVxdWFsIHRoZSBwYXNzZWQgcmVhc29uJyk7CisgIH0pOworCisg
IHJldHVybiBQcm9taXNlLmFsbChbcmVhZFByb21pc2UsIGNhbmNlbFByb21pc2VdKTsKK30sICdS
ZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBnZXRSZWFkZXIoKSwgcmVhZCh2aWV3KSwg
dGhlbiBjYW5jZWwoKScpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworICBsZXQgcHVsbENvdW50
ID0gMDsKKworICBsZXQgY29udHJvbGxlcjsKKyAgbGV0IGJ5b2JSZXF1ZXN0OworICBjb25zdCB2
aWV3SW5mb3MgPSBbXTsKKworICBjb25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oewor
ICAgIHN0YXJ0KGMpIHsKKyAgICAgIGNvbnRyb2xsZXIgPSBjOworICAgIH0sCisgICAgcHVsbCgp
IHsKKyAgICAgIGJ5b2JSZXF1ZXN0ID0gY29udHJvbGxlci5ieW9iUmVxdWVzdDsKKworICAgICAg
dmlld0luZm9zLnB1c2goZXh0cmFjdFZpZXdJbmZvKGNvbnRyb2xsZXIuYnlvYlJlcXVlc3Qudmll
dykpOworICAgICAgY29udHJvbGxlci5lbnF1ZXVlKG5ldyBVaW50OEFycmF5KDEpKTsKKyAgICAg
IHZpZXdJbmZvcy5wdXNoKGV4dHJhY3RWaWV3SW5mbyhjb250cm9sbGVyLmJ5b2JSZXF1ZXN0LnZp
ZXcpKTsKKworICAgICAgKytwdWxsQ291bnQ7CisgICAgfSwKKyAgICB0eXBlOiAnYnl0ZXMnCisg
IH0pOworCisgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHsKKyAgICBhc3Nl
cnRfZXF1YWxzKHB1bGxDb3VudCwgMCwgJ05vIHB1bGwoKSBhcyBubyByZWFkKHZpZXcpIHlldCcp
OworCisgICAgY29uc3QgcmVhZGVyID0gc3RyZWFtLmdldFJlYWRlcih7IG1vZGU6ICdieW9iJyB9
KTsKKworICAgIGNvbnN0IHByb21pc2UgPSByZWFkZXIucmVhZChuZXcgVWludDE2QXJyYXkoMSkp
LnRoZW4ocmVzdWx0ID0+IHsKKyAgICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LmRvbmUsIHRydWUs
ICdyZXN1bHQuZG9uZScpOworICAgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQudmFsdWUuY29uc3Ry
dWN0b3IsIFVpbnQxNkFycmF5LCAncmVzdWx0LnZhbHVlJyk7CisgICAgfSk7CisKKyAgICBhc3Nl
cnRfZXF1YWxzKHB1bGxDb3VudCwgMSwgJzEgcHVsbCgpIHNob3VsZCBoYXZlIGJlZW4gbWFkZSBp
biByZXNwb25zZSB0byBwYXJ0aWFsIGZpbGwgYnkgZW5xdWV1ZSgpJyk7CisgICAgYXNzZXJ0X25v
dF9lcXVhbHMoYnlvYlJlcXVlc3QsIG51bGwsICdieW9iUmVxdWVzdCBzaG91bGQgbm90IGJlIG51
bGwnKTsKKyAgICBhc3NlcnRfZXF1YWxzKHZpZXdJbmZvc1swXS5ieXRlTGVuZ3RoLCAyLCAnYnl0
ZUxlbmd0aCBiZWZvcmUgZW5xdWV1ZSgpIHNob3VpbGQgYmUgMicpOworICAgIGFzc2VydF9lcXVh
bHModmlld0luZm9zWzFdLmJ5dGVMZW5ndGgsIDEsICdieXRlTGVuZ3RoIGFmdGVyIGVucXVldWUo
KSBzaG91bGQgYmUgMScpOworCisKKyAgICByZWFkZXIuY2FuY2VsKCk7CisKKyAgICAvLyBUZWxs
IHRoYXQgdGhlIGJ1ZmZlciBnaXZlbiB2aWEgcHVsbCgpIGlzIHJldHVybmVkLgorICAgIGNvbnRy
b2xsZXIuYnlvYlJlcXVlc3QucmVzcG9uZCgwKTsKKworICAgIGFzc2VydF9lcXVhbHMocHVsbENv
dW50LCAxLCAncHVsbCgpIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBvbmNlJyk7CisgICAgcmV0dXJu
IHByb21pc2U7CisgIH0pOworfSwgJ1JlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IGNh
bmNlbCgpIHdpdGggcGFydGlhbGx5IGZpbGxlZCBwZW5kaW5nIHB1bGwoKSByZXF1ZXN0Jyk7CisK
K3Byb21pc2VfdGVzdCgoKSA9PiB7CisgIGxldCBjb250cm9sbGVyOworICBsZXQgcHVsbENhbGxl
ZCA9IGZhbHNlOworCisgIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAg
c3RhcnQoYykgeworICAgICAgY29uc3QgdmlldyA9IG5ldyBVaW50OEFycmF5KDgpOworICAgICAg
dmlld1s3XSA9IDB4MDE7CisgICAgICBjLmVucXVldWUodmlldyk7CisKKyAgICAgIGNvbnRyb2xs
ZXIgPSBjOworICAgIH0sCisgICAgcHVsbCgpIHsKKyAgICAgIHB1bGxDYWxsZWQgPSB0cnVlOwor
ICAgIH0sCisgICAgdHlwZTogJ2J5dGVzJworICB9KTsKKworICBjb25zdCByZWFkZXIgPSBzdHJl
YW0uZ2V0UmVhZGVyKHsgbW9kZTogJ2J5b2InIH0pOworCisgIGNvbnN0IGJ1ZmZlciA9IG5ldyBB
cnJheUJ1ZmZlcigxNik7CisKKyAgcmV0dXJuIHJlYWRlci5yZWFkKG5ldyBVaW50OEFycmF5KGJ1
ZmZlciwgOCwgOCkpLnRoZW4ocmVzdWx0ID0+IHsKKyAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdC5k
b25lLCBmYWxzZSk7CisKKyAgICBhc3NlcnRfZmFsc2UocHVsbENhbGxlZCwgJ3B1bGwoKSBtdXN0
IG5vdCBoYXZlIGJlZW4gY2FsbGVkJyk7CisKKyAgICBjb25zdCB2aWV3ID0gcmVzdWx0LnZhbHVl
OworICAgIGFzc2VydF9lcXVhbHModmlldy5jb25zdHJ1Y3RvciwgVWludDhBcnJheSk7CisgICAg
YXNzZXJ0X2VxdWFscyh2aWV3LmJ1ZmZlci5ieXRlTGVuZ3RoLCAxNik7CisgICAgYXNzZXJ0X2Vx
dWFscyh2aWV3LmJ5dGVPZmZzZXQsIDgpOworICAgIGFzc2VydF9lcXVhbHModmlldy5ieXRlTGVu
Z3RoLCA4KTsKKyAgICBhc3NlcnRfZXF1YWxzKHZpZXdbN10sIDB4MDEpOworICB9KTsKK30sICdS
ZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBlbnF1ZXVlKCksIGdldFJlYWRlcigpLCB0
aGVuIHJlYWQodmlldykgd2hlcmUgdmlldy5idWZmZXIgaXMgbm90IGZ1bGx5ICcgKworICAgJ2Nv
dmVyZWQgYnkgdmlldycpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworICBsZXQgY29udHJvbGxl
cjsKKyAgbGV0IHB1bGxDYWxsZWQgPSBmYWxzZTsKKworICBjb25zdCBzdHJlYW0gPSBuZXcgUmVh
ZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGxldCB2aWV3OworCisgICAgICB2
aWV3ID0gbmV3IFVpbnQ4QXJyYXkoMTYpOworICAgICAgdmlld1sxNV0gPSAxMjM7CisgICAgICBj
LmVucXVldWUodmlldyk7CisKKyAgICAgIHZpZXcgPSBuZXcgVWludDhBcnJheSg4KTsKKyAgICAg
IHZpZXdbN10gPSAxMTE7CisgICAgICBjLmVucXVldWUodmlldyk7CisKKyAgICAgIGNvbnRyb2xs
ZXIgPSBjOworICAgIH0sCisgICAgcHVsbCgpIHsKKyAgICAgIHB1bGxDYWxsZWQgPSB0cnVlOwor
ICAgIH0sCisgICAgdHlwZTogJ2J5dGVzJworICB9KTsKKworICBjb25zdCByZWFkZXIgPSBzdHJl
YW0uZ2V0UmVhZGVyKHsgbW9kZTogJ2J5b2InIH0pOworCisgIHJldHVybiByZWFkZXIucmVhZChu
ZXcgVWludDhBcnJheSgyNCkpLnRoZW4ocmVzdWx0ID0+IHsKKyAgICBhc3NlcnRfZXF1YWxzKHJl
c3VsdC5kb25lLCBmYWxzZSwgJ2RvbmUnKTsKKworICAgIGFzc2VydF9mYWxzZShwdWxsQ2FsbGVk
LCAncHVsbCgpIG11c3Qgbm90IGhhdmUgYmVlbiBjYWxsZWQnKTsKKworICAgIGNvbnN0IHZpZXcg
PSByZXN1bHQudmFsdWU7CisgICAgYXNzZXJ0X2VxdWFscyh2aWV3LmJ5dGVPZmZzZXQsIDAsICdi
eXRlT2Zmc2V0Jyk7CisgICAgYXNzZXJ0X2VxdWFscyh2aWV3LmJ5dGVMZW5ndGgsIDI0LCAnYnl0
ZUxlbmd0aCcpOworICAgIGFzc2VydF9lcXVhbHModmlld1sxNV0sIDEyMywgJ0NvbnRlbnRzIGFy
ZSBzZXQgZnJvbSB0aGUgZmlyc3QgY2h1bmsnKTsKKyAgICBhc3NlcnRfZXF1YWxzKHZpZXdbMjNd
LCAxMTEsICdDb250ZW50cyBhcmUgc2V0IGZyb20gdGhlIHNlY29uZCBjaHVuaycpOworICB9KTsK
K30sICdSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBNdWx0aXBsZSBlbnF1ZXVlKCks
IGdldFJlYWRlcigpLCB0aGVuIHJlYWQodmlldyknKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsK
KyAgbGV0IHB1bGxDYWxsZWQgPSBmYWxzZTsKKworICBjb25zdCBzdHJlYW0gPSBuZXcgUmVhZGFi
bGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGNvbnN0IHZpZXcgPSBuZXcgVWludDhB
cnJheSgxNik7CisgICAgICB2aWV3WzE1XSA9IDB4MDE7CisgICAgICBjLmVucXVldWUodmlldyk7
CisgICAgfSwKKyAgICBwdWxsKCkgeworICAgICAgcHVsbENhbGxlZCA9IHRydWU7CisgICAgfSwK
KyAgICB0eXBlOiAnYnl0ZXMnCisgIH0pOworCisgIGNvbnN0IHJlYWRlciA9IHN0cmVhbS5nZXRS
ZWFkZXIoeyBtb2RlOiAnYnlvYicgfSk7CisKKyAgcmV0dXJuIHJlYWRlci5yZWFkKG5ldyBVaW50
OEFycmF5KDI0KSkudGhlbihyZXN1bHQgPT4geworICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LmRv
bmUsIGZhbHNlKTsKKworICAgIGFzc2VydF9mYWxzZShwdWxsQ2FsbGVkLCAncHVsbCgpIG11c3Qg
bm90IGhhdmUgYmVlbiBjYWxsZWQnKTsKKworICAgIGNvbnN0IHZpZXcgPSByZXN1bHQudmFsdWU7
CisgICAgYXNzZXJ0X2VxdWFscyh2aWV3LmJ5dGVPZmZzZXQsIDApOworICAgIGFzc2VydF9lcXVh
bHModmlldy5ieXRlTGVuZ3RoLCAxNik7CisgICAgYXNzZXJ0X2VxdWFscyh2aWV3WzE1XSwgMHgw
MSk7CisgIH0pOworfSwgJ1JlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IGVucXVldWUo
KSwgZ2V0UmVhZGVyKCksIHRoZW4gcmVhZCh2aWV3KSB3aXRoIGEgYmlnZ2VyIHZpZXcnKTsKKwor
cHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgbGV0IHB1bGxDYWxsZWQgPSBmYWxzZTsKKworICBjb25z
dCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGNv
bnN0IHZpZXcgPSBuZXcgVWludDhBcnJheSgxNik7CisgICAgICB2aWV3WzddID0gMHgwMTsKKyAg
ICAgIHZpZXdbMTVdID0gMHgwMjsKKyAgICAgIGMuZW5xdWV1ZSh2aWV3KTsKKyAgICB9LAorICAg
IHB1bGwoKSB7CisgICAgICBwdWxsQ2FsbGVkID0gdHJ1ZTsKKyAgICB9LAorICAgIHR5cGU6ICdi
eXRlcycKKyAgfSk7CisKKyAgY29uc3QgcmVhZGVyID0gc3RyZWFtLmdldFJlYWRlcih7IG1vZGU6
ICdieW9iJyB9KTsKKworICByZXR1cm4gcmVhZGVyLnJlYWQobmV3IFVpbnQ4QXJyYXkoOCkpLnRo
ZW4ocmVzdWx0ID0+IHsKKyAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdC5kb25lLCBmYWxzZSwgJ2Rv
bmUnKTsKKworICAgIGNvbnN0IHZpZXcgPSByZXN1bHQudmFsdWU7CisgICAgYXNzZXJ0X2VxdWFs
cyh2aWV3LmJ5dGVPZmZzZXQsIDApOworICAgIGFzc2VydF9lcXVhbHModmlldy5ieXRlTGVuZ3Ro
LCA4KTsKKyAgICBhc3NlcnRfZXF1YWxzKHZpZXdbN10sIDB4MDEpOworCisgICAgcmV0dXJuIHJl
YWRlci5yZWFkKG5ldyBVaW50OEFycmF5KDgpKTsKKyAgfSkudGhlbihyZXN1bHQgPT4geworICAg
IGFzc2VydF9lcXVhbHMocmVzdWx0LmRvbmUsIGZhbHNlLCAnZG9uZScpOworCisgICAgYXNzZXJ0
X2ZhbHNlKHB1bGxDYWxsZWQsICdwdWxsKCkgbXVzdCBub3QgaGF2ZSBiZWVuIGNhbGxlZCcpOwor
CisgICAgY29uc3QgdmlldyA9IHJlc3VsdC52YWx1ZTsKKyAgICBhc3NlcnRfZXF1YWxzKHZpZXcu
Ynl0ZU9mZnNldCwgMCk7CisgICAgYXNzZXJ0X2VxdWFscyh2aWV3LmJ5dGVMZW5ndGgsIDgpOwor
ICAgIGFzc2VydF9lcXVhbHModmlld1s3XSwgMHgwMik7CisgIH0pOworfSwgJ1JlYWRhYmxlU3Ry
ZWFtIHdpdGggYnl0ZSBzb3VyY2U6IGVucXVldWUoKSwgZ2V0UmVhZGVyKCksIHRoZW4gcmVhZCh2
aWV3KSB3aXRoIHNtYWxsZXIgdmlld3MnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgbGV0
IGNvbnRyb2xsZXI7CisgIGxldCB2aWV3SW5mbzsKKworICBjb25zdCBzdHJlYW0gPSBuZXcgUmVh
ZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGNvbnN0IHZpZXcgPSBuZXcgVWlu
dDhBcnJheSgxKTsKKyAgICAgIHZpZXdbMF0gPSAweGZmOworICAgICAgYy5lbnF1ZXVlKHZpZXcp
OworCisgICAgICBjb250cm9sbGVyID0gYzsKKyAgICB9LAorICAgIHB1bGwoKSB7CisgICAgICBp
ZiAoY29udHJvbGxlci5ieW9iUmVxdWVzdCA9PT0gbnVsbCkgeworICAgICAgICByZXR1cm47Cisg
ICAgICB9CisKKyAgICAgIGNvbnN0IHZpZXcgPSBjb250cm9sbGVyLmJ5b2JSZXF1ZXN0LnZpZXc7
CisgICAgICB2aWV3SW5mbyA9IGV4dHJhY3RWaWV3SW5mbyh2aWV3KTsKKworICAgICAgdmlld1sw
XSA9IDB4YWE7CisgICAgICBjb250cm9sbGVyLmJ5b2JSZXF1ZXN0LnJlc3BvbmQoMSk7CisgICAg
fSwKKyAgICB0eXBlOiAnYnl0ZXMnCisgIH0pOworCisgIGNvbnN0IHJlYWRlciA9IHN0cmVhbS5n
ZXRSZWFkZXIoeyBtb2RlOiAnYnlvYicgfSk7CisKKyAgcmV0dXJuIHJlYWRlci5yZWFkKG5ldyBV
aW50MTZBcnJheSgxKSkudGhlbihyZXN1bHQgPT4geworICAgIGFzc2VydF9lcXVhbHMocmVzdWx0
LmRvbmUsIGZhbHNlKTsKKworICAgIGNvbnN0IHZpZXcgPSByZXN1bHQudmFsdWU7CisgICAgYXNz
ZXJ0X2VxdWFscyh2aWV3LmJ5dGVPZmZzZXQsIDApOworICAgIGFzc2VydF9lcXVhbHModmlldy5i
eXRlTGVuZ3RoLCAyKTsKKyAgICBhc3NlcnRfZXF1YWxzKHZpZXdbMF0sIDB4YWFmZik7CisKKyAg
ICBhc3NlcnRfZXF1YWxzKHZpZXdJbmZvLmNvbnN0cnVjdG9yLCBVaW50OEFycmF5LCAndmlldy5j
b25zdHJ1Y3RvciBzaG91bGQgYmUgVWludDhBcnJheScpOworICAgIGFzc2VydF9lcXVhbHModmll
d0luZm8uYnVmZmVyQnl0ZUxlbmd0aCwgMiwgJ3ZpZXcuYnVmZmVyLmJ5dGVMZW5ndGggc2hvdWxk
IGJlIDInKTsKKyAgICBhc3NlcnRfZXF1YWxzKHZpZXdJbmZvLmJ5dGVPZmZzZXQsIDEsICd2aWV3
LmJ5dGVPZmZzZXQgc2hvdWxkIGJlIDEnKTsKKyAgICBhc3NlcnRfZXF1YWxzKHZpZXdJbmZvLmJ5
dGVMZW5ndGgsIDEsICd2aWV3LmJ5dGVMZW5ndGggc2hvdWxkIGJlIDEnKTsKKyAgfSk7Cit9LCAn
UmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogZW5xdWV1ZSgpIDEgYnl0ZSwgZ2V0UmVh
ZGVyKCksIHRoZW4gcmVhZCh2aWV3KSB3aXRoIFVpbnQxNkFycmF5Jyk7CisKK3Byb21pc2VfdGVz
dCgoKSA9PiB7CisgIGxldCBwdWxsQ291bnQgPSAwOworCisgIGxldCBjb250cm9sbGVyOworICBs
ZXQgYnlvYlJlcXVlc3Q7CisgIGxldCB2aWV3SW5mbzsKKyAgbGV0IGRlc2lyZWRTaXplOworCisg
IGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAg
ICAgY29uc3QgdmlldyA9IG5ldyBVaW50OEFycmF5KDMpOworICAgICAgdmlld1swXSA9IDB4MDE7
CisgICAgICB2aWV3WzJdID0gMHgwMjsKKyAgICAgIGMuZW5xdWV1ZSh2aWV3KTsKKworICAgICAg
Y29udHJvbGxlciA9IGM7CisgICAgfSwKKyAgICBwdWxsKCkgeworICAgICAgYnlvYlJlcXVlc3Qg
PSBjb250cm9sbGVyLmJ5b2JSZXF1ZXN0OworCisgICAgICBjb25zdCB2aWV3ID0gY29udHJvbGxl
ci5ieW9iUmVxdWVzdC52aWV3OworCisgICAgICB2aWV3SW5mbyA9IGV4dHJhY3RWaWV3SW5mbyh2
aWV3KTsKKworICAgICAgdmlld1swXSA9IDB4MDM7CisgICAgICBjb250cm9sbGVyLmJ5b2JSZXF1
ZXN0LnJlc3BvbmQoMSk7CisKKyAgICAgIGRlc2lyZWRTaXplID0gY29udHJvbGxlci5kZXNpcmVk
U2l6ZTsKKworICAgICAgKytwdWxsQ291bnQ7CisgICAgfSwKKyAgICB0eXBlOiAnYnl0ZXMnCisg
IH0pOworCisgIC8vIFdhaXQgZm9yIGNvbXBsZXRpb24gb2YgdGhlIHN0YXJ0IG1ldGhvZCB0byBi
ZSByZWZsZWN0ZWQuCisgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHsKKyAg
ICBjb25zdCByZWFkZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKHsgbW9kZTogJ2J5b2InIH0pOworCisg
ICAgY29uc3QgcHJvbWlzZSA9IHJlYWRlci5yZWFkKG5ldyBVaW50MTZBcnJheSgyKSkudGhlbihy
ZXN1bHQgPT4geworICAgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQuZG9uZSwgZmFsc2UsICdkb25l
Jyk7CisKKyAgICAgIGNvbnN0IHZpZXcgPSByZXN1bHQudmFsdWU7CisgICAgICBhc3NlcnRfZXF1
YWxzKHZpZXcuY29uc3RydWN0b3IsIFVpbnQxNkFycmF5LCAnY29uc3RydWN0b3InKTsKKyAgICAg
IGFzc2VydF9lcXVhbHModmlldy5idWZmZXIuYnl0ZUxlbmd0aCwgNCwgJ2J1ZmZlci5ieXRlTGVu
Z3RoJyk7CisgICAgICBhc3NlcnRfZXF1YWxzKHZpZXcuYnl0ZU9mZnNldCwgMCwgJ2J5dGVPZmZz
ZXQnKTsKKyAgICAgIGFzc2VydF9lcXVhbHModmlldy5ieXRlTGVuZ3RoLCAyLCAnYnl0ZUxlbmd0
aCcpOworICAgICAgYXNzZXJ0X2VxdWFscyh2aWV3WzBdLCAweDAwMDEsICdDb250ZW50cyBhcmUg
c2V0Jyk7CisKKyAgICAgIGNvbnN0IHAgPSByZWFkZXIucmVhZChuZXcgVWludDE2QXJyYXkoMSkp
OworCisgICAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMSk7CisKKyAgICAgIHJldHVybiBw
OworICAgIH0pLnRoZW4ocmVzdWx0ID0+IHsKKyAgICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LmRv
bmUsIGZhbHNlLCAnZG9uZScpOworCisgICAgICBjb25zdCB2aWV3ID0gcmVzdWx0LnZhbHVlOwor
ICAgICAgYXNzZXJ0X2VxdWFscyh2aWV3LmJ1ZmZlci5ieXRlTGVuZ3RoLCAyLCAnYnVmZmVyLmJ5
dGVMZW5ndGgnKTsKKyAgICAgIGFzc2VydF9lcXVhbHModmlldy5ieXRlT2Zmc2V0LCAwLCAnYnl0
ZU9mZnNldCcpOworICAgICAgYXNzZXJ0X2VxdWFscyh2aWV3LmJ5dGVMZW5ndGgsIDIsICdieXRl
TGVuZ3RoJyk7CisgICAgICBhc3NlcnRfZXF1YWxzKHZpZXdbMF0sIDB4MDMwMiwgJ0NvbnRlbnRz
IGFyZSBzZXQnKTsKKworICAgICAgYXNzZXJ0X25vdF9lcXVhbHMoYnlvYlJlcXVlc3QsIG51bGws
ICdieW9iUmVxdWVzdCBtdXN0IG5vdCBiZSBudWxsJyk7CisgICAgICBhc3NlcnRfZXF1YWxzKHZp
ZXdJbmZvLmNvbnN0cnVjdG9yLCBVaW50OEFycmF5LCAndmlldy5jb25zdHJ1Y3RvciBzaG91bGQg
YmUgVWludDhBcnJheScpOworICAgICAgYXNzZXJ0X2VxdWFscyh2aWV3SW5mby5idWZmZXJCeXRl
TGVuZ3RoLCAyLCAndmlldy5idWZmZXIuYnl0ZUxlbmd0aCBzaG91bGQgYmUgMicpOworICAgICAg
YXNzZXJ0X2VxdWFscyh2aWV3SW5mby5ieXRlT2Zmc2V0LCAxLCAndmlldy5ieXRlT2Zmc2V0IHNo
b3VsZCBiZSAxJyk7CisgICAgICBhc3NlcnRfZXF1YWxzKHZpZXdJbmZvLmJ5dGVMZW5ndGgsIDEs
ICd2aWV3LmJ5dGVMZW5ndGggc2hvdWxkIGJlIDEnKTsKKyAgICAgIGFzc2VydF9lcXVhbHMoZGVz
aXJlZFNpemUsIDAsICdkZXNpcmVkU2l6ZSBzaG91bGQgYmUgemVybycpOworICAgIH0pOworCisg
ICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDApOworCisgICAgcmV0dXJuIHByb21pc2U7Cisg
IH0pOworfSwgJ1JlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IGVucXVldWUoKSAzIGJ5
dGUsIGdldFJlYWRlcigpLCB0aGVuIHJlYWQodmlldykgd2l0aCAyLWVsZW1lbnQgVWludDE2QXJy
YXknKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBjb25zdCBzdHJlYW0gPSBuZXcgUmVhZGFi
bGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGNvbnN0IHZpZXcgPSBuZXcgVWludDhB
cnJheSgxKTsKKyAgICAgIHZpZXdbMF0gPSAweGZmOworICAgICAgYy5lbnF1ZXVlKHZpZXcpOwor
ICAgICAgYy5jbG9zZSgpOworICAgIH0sCisgICAgcHVsbDogdC51bnJlYWNoZWRfZnVuYygncHVs
bCgpIHNob3VsZCBub3QgYmUgY2FsbGVkJyksCisgICAgdHlwZTogJ2J5dGVzJworICB9KTsKKwor
ICBjb25zdCByZWFkZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKHsgbW9kZTogJ2J5b2InIH0pOworCisK
KyAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19qcyh0LCBUeXBlRXJyb3IsIHJlYWRlci5yZWFkKG5l
dyBVaW50MTZBcnJheSgxKSksICdyZWFkKHZpZXcpIG11c3QgZmFpbCcpCisgICAgICAudGhlbigo
KSA9PiBwcm9taXNlX3JlamVjdHNfanModCwgVHlwZUVycm9yLCByZWFkZXIuY2xvc2VkLCAncmVh
ZGVyLmNsb3NlZCBzaG91bGQgcmVqZWN0JykpOworfSwgJ1JlYWRhYmxlU3RyZWFtIHdpdGggYnl0
ZSBzb3VyY2U6IHJlYWQodmlldykgd2l0aCBVaW50MTZBcnJheSBvbiBjbG9zZSgpLWQgc3RyZWFt
IHdpdGggMSBieXRlIGVucXVldWUoKS1kIG11c3QgJyArCisgICAnZmFpbCcpOworCitwcm9taXNl
X3Rlc3QodCA9PiB7CisgIGxldCBjb250cm9sbGVyOworCisgIGNvbnN0IHN0cmVhbSA9IG5ldyBS
ZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgY29uc3QgdmlldyA9IG5ldyBV
aW50OEFycmF5KDEpOworICAgICAgdmlld1swXSA9IDB4ZmY7CisgICAgICBjLmVucXVldWUodmll
dyk7CisKKyAgICAgIGNvbnRyb2xsZXIgPSBjOworICAgIH0sCisgICAgcHVsbDogdC51bnJlYWNo
ZWRfZnVuYygncHVsbCgpIHNob3VsZCBub3QgYmUgY2FsbGVkJyksCisgICAgdHlwZTogJ2J5dGVz
JworICB9KTsKKworICBjb25zdCByZWFkZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKHsgbW9kZTogJ2J5
b2InIH0pOworCisgIGNvbnN0IHJlYWRQcm9taXNlID0gcmVhZGVyLnJlYWQobmV3IFVpbnQxNkFy
cmF5KDEpKTsKKworICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4gY29udHJvbGxl
ci5jbG9zZSgpLCAnY29udHJvbGxlci5jbG9zZSgpIG11c3QgdGhyb3cnKTsKKworICByZXR1cm4g
cHJvbWlzZV9yZWplY3RzX2pzKHQsIFR5cGVFcnJvciwgcmVhZFByb21pc2UsICdyZWFkKHZpZXcp
IG11c3QgZmFpbCcpCisgICAgICAudGhlbigoKSA9PiBwcm9taXNlX3JlamVjdHNfanModCwgVHlw
ZUVycm9yLCByZWFkZXIuY2xvc2VkLCAncmVhZGVyLmNsb3NlZCBtdXN0IHJlamVjdCcpKTsKK30s
ICdSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBBIHN0cmVhbSBtdXN0IGJlIGVycm9y
ZWQgaWYgY2xvc2UoKS1kIGJlZm9yZSBmdWxmaWxsaW5nIHJlYWQodmlldykgd2l0aCAnICsKKyAg
ICdVaW50MTZBcnJheScpOworCit0ZXN0KCgpID0+IHsKKyAgbGV0IGNvbnRyb2xsZXI7CisKKyAg
bmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjb250cm9sbGVyID0g
YzsKKyAgICB9LAorICAgIHR5cGU6ICdieXRlcycKKyAgfSk7CisKKyAgLy8gRW5xdWV1ZSBhIGNo
dW5rIHNvIHRoYXQgdGhlIHN0cmVhbSBkb2Vzbid0IGdldCBjbG9zZWQuIFRoaXMgaXMgdG8gY2hl
Y2sgZHVwbGljYXRlIGNsb3NlKCkgY2FsbHMgYXJlIHJlamVjdGVkCisgIC8vIGV2ZW4gaWYgdGhl
IHN0cmVhbSBoYXMgbm90IHlldCBlbnRlcmVkIHRoZSBjbG9zZWQgc3RhdGUuCisgIGNvbnN0IHZp
ZXcgPSBuZXcgVWludDhBcnJheSgxKTsKKyAgY29udHJvbGxlci5lbnF1ZXVlKHZpZXcpOworICBj
b250cm9sbGVyLmNsb3NlKCk7CisKKyAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+
IGNvbnRyb2xsZXIuY2xvc2UoKSwgJ2NvbnRyb2xsZXIuY2xvc2UoKSBtdXN0IHRocm93Jyk7Cit9
LCAnUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogVGhyb3cgaWYgY2xvc2UoKS1lZCBt
b3JlIHRoYW4gb25jZScpOworCit0ZXN0KCgpID0+IHsKKyAgbGV0IGNvbnRyb2xsZXI7CisKKyAg
bmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjb250cm9sbGVyID0g
YzsKKyAgICB9LAorICAgIHR5cGU6ICdieXRlcycKKyAgfSk7CisKKyAgLy8gRW5xdWV1ZSBhIGNo
dW5rIHNvIHRoYXQgdGhlIHN0cmVhbSBkb2Vzbid0IGdldCBjbG9zZWQuIFRoaXMgaXMgdG8gY2hl
Y2sgZW5xdWV1ZSgpIGFmdGVyIGNsb3NlKCkgaXMgIHJlamVjdGVkCisgIC8vIGV2ZW4gaWYgdGhl
IHN0cmVhbSBoYXMgbm90IHlldCBlbnRlcmVkIHRoZSBjbG9zZWQgc3RhdGUuCisgIGNvbnN0IHZp
ZXcgPSBuZXcgVWludDhBcnJheSgxKTsKKyAgY29udHJvbGxlci5lbnF1ZXVlKHZpZXcpOworICBj
b250cm9sbGVyLmNsb3NlKCk7CisKKyAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+
IGNvbnRyb2xsZXIuZW5xdWV1ZSh2aWV3KSwgJ2NvbnRyb2xsZXIuY2xvc2UoKSBtdXN0IHRocm93
Jyk7Cit9LCAnUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogVGhyb3cgb24gZW5xdWV1
ZSgpIGFmdGVyIGNsb3NlKCknKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgbGV0IGNvbnRy
b2xsZXI7CisgIGxldCBieW9iUmVxdWVzdDsKKyAgbGV0IHZpZXdJbmZvOworCisgIGNvbnN0IHN0
cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgY29udHJv
bGxlciA9IGM7CisgICAgfSwKKyAgICBwdWxsKCkgeworICAgICAgYnlvYlJlcXVlc3QgPSBjb250
cm9sbGVyLmJ5b2JSZXF1ZXN0OworICAgICAgY29uc3QgdmlldyA9IGNvbnRyb2xsZXIuYnlvYlJl
cXVlc3QudmlldzsKKyAgICAgIHZpZXdJbmZvID0gZXh0cmFjdFZpZXdJbmZvKHZpZXcpOworCisg
ICAgICB2aWV3WzE1XSA9IDB4MDE7CisgICAgICBjb250cm9sbGVyLmJ5b2JSZXF1ZXN0LnJlc3Bv
bmQoMTYpOworICAgICAgY29udHJvbGxlci5jbG9zZSgpOworICAgIH0sCisgICAgdHlwZTogJ2J5
dGVzJworICB9KTsKKworICBjb25zdCByZWFkZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKHsgbW9kZTog
J2J5b2InIH0pOworCisgIHJldHVybiByZWFkZXIucmVhZChuZXcgVWludDhBcnJheSgxNikpLnRo
ZW4ocmVzdWx0ID0+IHsKKyAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdC5kb25lLCBmYWxzZSk7CisK
KyAgICBjb25zdCB2aWV3ID0gcmVzdWx0LnZhbHVlOworICAgIGFzc2VydF9lcXVhbHModmlldy5i
eXRlT2Zmc2V0LCAwKTsKKyAgICBhc3NlcnRfZXF1YWxzKHZpZXcuYnl0ZUxlbmd0aCwgMTYpOwor
ICAgIGFzc2VydF9lcXVhbHModmlld1sxNV0sIDB4MDEpOworCisgICAgcmV0dXJuIHJlYWRlci5y
ZWFkKG5ldyBVaW50OEFycmF5KDE2KSk7CisgIH0pLnRoZW4ocmVzdWx0ID0+IHsKKyAgICBhc3Nl
cnRfZXF1YWxzKHJlc3VsdC5kb25lLCB0cnVlKTsKKworICAgIGNvbnN0IHZpZXcgPSByZXN1bHQu
dmFsdWU7CisgICAgYXNzZXJ0X2VxdWFscyh2aWV3LmJ5dGVPZmZzZXQsIDApOworICAgIGFzc2Vy
dF9lcXVhbHModmlldy5ieXRlTGVuZ3RoLCAwKTsKKworICAgIGFzc2VydF9ub3RfZXF1YWxzKGJ5
b2JSZXF1ZXN0LCBudWxsLCAnYnlvYlJlcXVlc3QgbXVzdCBub3QgYmUgbnVsbCcpOworICAgIGFz
c2VydF9lcXVhbHModmlld0luZm8uY29uc3RydWN0b3IsIFVpbnQ4QXJyYXksICd2aWV3LmNvbnN0
cnVjdG9yIHNob3VsZCBiZSBVaW50OEFycmF5Jyk7CisgICAgYXNzZXJ0X2VxdWFscyh2aWV3SW5m
by5idWZmZXJCeXRlTGVuZ3RoLCAxNiwgJ3ZpZXcuYnVmZmVyLmJ5dGVMZW5ndGggc2hvdWxkIGJl
IDE2Jyk7CisgICAgYXNzZXJ0X2VxdWFscyh2aWV3SW5mby5ieXRlT2Zmc2V0LCAwLCAndmlldy5i
eXRlT2Zmc2V0IHNob3VsZCBiZSAwJyk7CisgICAgYXNzZXJ0X2VxdWFscyh2aWV3SW5mby5ieXRl
TGVuZ3RoLCAxNiwgJ3ZpZXcuYnl0ZUxlbmd0aCBzaG91bGQgYmUgMTYnKTsKKyAgfSk7Cit9LCAn
UmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogcmVhZCh2aWV3KSwgdGhlbiByZXNwb25k
KCkgYW5kIGNsb3NlKCkgaW4gcHVsbCgpJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisgIGxl
dCBwdWxsQ291bnQgPSAwOworCisgIGxldCBjb250cm9sbGVyOworICBjb25zdCB2aWV3SW5mb3Mg
PSBbXTsKKworICBjb25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0
KGMpIHsKKyAgICAgIGNvbnRyb2xsZXIgPSBjOworICAgIH0sCisgICAgcHVsbCgpIHsKKyAgICAg
IGlmIChjb250cm9sbGVyLmJ5b2JSZXF1ZXN0ID09PSBudWxsKSB7CisgICAgICAgIHJldHVybjsK
KyAgICAgIH0KKworICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCA0OyArK2kpIHsKKyAgICAgICAg
Y29uc3QgdmlldyA9IGNvbnRyb2xsZXIuYnlvYlJlcXVlc3QudmlldzsKKyAgICAgICAgdmlld0lu
Zm9zLnB1c2goZXh0cmFjdFZpZXdJbmZvKHZpZXcpKTsKKworICAgICAgICB2aWV3WzBdID0gMHgw
MTsKKyAgICAgICAgY29udHJvbGxlci5ieW9iUmVxdWVzdC5yZXNwb25kKDEpOworICAgICAgfQor
CisgICAgICArK3B1bGxDb3VudDsKKyAgICB9LAorICAgIHR5cGU6ICdieXRlcycKKyAgfSk7CisK
KyAgY29uc3QgcmVhZGVyID0gc3RyZWFtLmdldFJlYWRlcih7IG1vZGU6ICdieW9iJyB9KTsKKwor
ICByZXR1cm4gcmVhZGVyLnJlYWQobmV3IFVpbnQzMkFycmF5KDEpKS50aGVuKHJlc3VsdCA9PiB7
CisgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQuZG9uZSwgZmFsc2UpOworCisgICAgY29uc3Qgdmll
dyA9IHJlc3VsdC52YWx1ZTsKKyAgICBhc3NlcnRfZXF1YWxzKHZpZXcuYnl0ZU9mZnNldCwgMCk7
CisgICAgYXNzZXJ0X2VxdWFscyh2aWV3LmJ5dGVMZW5ndGgsIDQpOworICAgIGFzc2VydF9lcXVh
bHModmlld1swXSwgMHgwMTAxMDEwMSk7CisKKyAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwg
MSwgJ3B1bGwoKSBzaG91bGQgb25seSBiZSBjYWxsZWQgb25jZScpOworCisgICAgZm9yIChsZXQg
aSA9IDA7IGkgPCA0OyArK2kpIHsKKyAgICAgIGFzc2VydF9lcXVhbHModmlld0luZm9zW2ldLmNv
bnN0cnVjdG9yLCBVaW50OEFycmF5LCAndmlldy5jb25zdHJ1Y3RvciBzaG91bGQgYmUgVWludDhB
cnJheScpOworICAgICAgYXNzZXJ0X2VxdWFscyh2aWV3SW5mb3NbaV0uYnVmZmVyQnl0ZUxlbmd0
aCwgNCwgJ3ZpZXcuYnVmZmVyLmJ5dGVMZW5ndGggc2hvdWxkIGJlIDQnKTsKKworICAgICAgYXNz
ZXJ0X2VxdWFscyh2aWV3SW5mb3NbaV0uYnl0ZU9mZnNldCwgaSwgJ3ZpZXcuYnl0ZU9mZnNldCBz
aG91bGQgYmUgaScpOworICAgICAgYXNzZXJ0X2VxdWFscyh2aWV3SW5mb3NbaV0uYnl0ZUxlbmd0
aCwgNCAtIGksICd2aWV3LmJ5dGVMZW5ndGggc2hvdWxkIGJlIDQgLSBpJyk7CisgICAgfQorICB9
KTsKK30sICdSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiByZWFkKHZpZXcpIHdpdGgg
VWludDMyQXJyYXksIHRoZW4gZmlsbCBpdCBieSBtdWx0aXBsZSByZXNwb25kKCkgY2FsbHMnKTsK
KworcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgbGV0IHB1bGxDb3VudCA9IDA7CisKKyAgbGV0IGNv
bnRyb2xsZXI7CisgIGxldCBieW9iUmVxdWVzdDsKKworICBjb25zdCBzdHJlYW0gPSBuZXcgUmVh
ZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGNvbnRyb2xsZXIgPSBjOworICAg
IH0sCisgICAgcHVsbCgpIHsKKyAgICAgIGJ5b2JSZXF1ZXN0ID0gY29udHJvbGxlci5ieW9iUmVx
dWVzdDsKKworICAgICAgKytwdWxsQ291bnQ7CisgICAgfSwKKyAgICB0eXBlOiAnYnl0ZXMnCisg
IH0pOworCisgIGNvbnN0IHJlYWRlciA9IHN0cmVhbS5nZXRSZWFkZXIoKTsKKworICBjb25zdCBw
MCA9IHJlYWRlci5yZWFkKCkudGhlbihyZXN1bHQgPT4geworICAgIGFzc2VydF9lcXVhbHMocHVs
bENvdW50LCAxKTsKKworICAgIGNvbnRyb2xsZXIuZW5xdWV1ZShuZXcgVWludDhBcnJheSgyKSk7
CisKKyAgICAvLyBTaW5jZSB0aGUgcXVldWUgaGFzIGRhdGEgbm8gbGVzcyB0aGFuIEhXTSwgbm8g
bW9yZSBwdWxsLgorICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAxKTsKKworICAgIGFzc2Vy
dF9lcXVhbHMocmVzdWx0LmRvbmUsIGZhbHNlKTsKKworICAgIGNvbnN0IHZpZXcgPSByZXN1bHQu
dmFsdWU7CisgICAgYXNzZXJ0X2VxdWFscyh2aWV3LmNvbnN0cnVjdG9yLCBVaW50OEFycmF5KTsK
KyAgICBhc3NlcnRfZXF1YWxzKHZpZXcuYnVmZmVyLmJ5dGVMZW5ndGgsIDEpOworICAgIGFzc2Vy
dF9lcXVhbHModmlldy5ieXRlT2Zmc2V0LCAwKTsKKyAgICBhc3NlcnRfZXF1YWxzKHZpZXcuYnl0
ZUxlbmd0aCwgMSk7CisgIH0pOworCisgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAwLCAnTm8g
cHVsbCBzaG91bGQgaGF2ZSBiZWVuIG1hZGUgc2luY2UgdGhlIHN0YXJ0UHJvbWlzZSBoYXMgbm90
IHlldCBiZWVuIGhhbmRsZWQnKTsKKworICBjb25zdCBwMSA9IHJlYWRlci5yZWFkKCkudGhlbihy
ZXN1bHQgPT4geworICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAxKTsKKworICAgIGFzc2Vy
dF9lcXVhbHMocmVzdWx0LmRvbmUsIGZhbHNlKTsKKworICAgIGNvbnN0IHZpZXcgPSByZXN1bHQu
dmFsdWU7CisgICAgYXNzZXJ0X2VxdWFscyh2aWV3LmNvbnN0cnVjdG9yLCBVaW50OEFycmF5KTsK
KyAgICBhc3NlcnRfZXF1YWxzKHZpZXcuYnVmZmVyLmJ5dGVMZW5ndGgsIDIpOworICAgIGFzc2Vy
dF9lcXVhbHModmlldy5ieXRlT2Zmc2V0LCAwKTsKKyAgICBhc3NlcnRfZXF1YWxzKHZpZXcuYnl0
ZUxlbmd0aCwgMik7CisKKyAgICBhc3NlcnRfZXF1YWxzKGJ5b2JSZXF1ZXN0LCBudWxsLCAnYnlv
YlJlcXVlc3QgbXVzdCBiZSBudWxsJyk7CisgIH0pOworCisgIGFzc2VydF9lcXVhbHMocHVsbENv
dW50LCAwLCAnTm8gcHVsbCBzaG91bGQgaGF2ZSBiZWVuIG1hZGUgc2luY2UgdGhlIHN0YXJ0UHJv
bWlzZSBoYXMgbm90IHlldCBiZWVuIGhhbmRsZWQnKTsKKworICBjb250cm9sbGVyLmVucXVldWUo
bmV3IFVpbnQ4QXJyYXkoMSkpOworCisgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAwLCAnTm8g
cHVsbCBzaG91bGQgaGF2ZSBiZWVuIG1hZGUgc2luY2UgdGhlIHN0YXJ0UHJvbWlzZSBoYXMgbm90
IHlldCBiZWVuIGhhbmRsZWQnKTsKKworICByZXR1cm4gUHJvbWlzZS5hbGwoW3AwLCBwMV0pOwor
fSwgJ1JlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IHJlYWQoKSB0d2ljZSwgdGhlbiBl
bnF1ZXVlKCkgdHdpY2UnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBsZXQgY29udHJvbGxl
cjsKKworICBjb25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMp
IHsKKyAgICAgIGNvbnRyb2xsZXIgPSBjOworICAgIH0sCisgICAgcHVsbDogdC51bnJlYWNoZWRf
ZnVuYygncHVsbCgpIHNob3VsZCBub3QgYmUgY2FsbGVkJyksCisgICAgdHlwZTogJ2J5dGVzJwor
ICB9KTsKKworICBjb25zdCByZWFkZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKHsgbW9kZTogJ2J5b2In
IH0pOworCisgIGNvbnN0IHAwID0gcmVhZGVyLnJlYWQobmV3IFVpbnQ4QXJyYXkoMTYpKS50aGVu
KHJlc3VsdCA9PiB7CisgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQuZG9uZSwgdHJ1ZSwgJzFzdCBy
ZWFkOiBkb25lJyk7CisKKyAgICBjb25zdCB2aWV3ID0gcmVzdWx0LnZhbHVlOworICAgIGFzc2Vy
dF9lcXVhbHModmlldy5idWZmZXIuYnl0ZUxlbmd0aCwgMTYsICcxc3QgcmVhZDogYnVmZmVyLmJ5
dGVMZW5ndGgnKTsKKyAgICBhc3NlcnRfZXF1YWxzKHZpZXcuYnl0ZU9mZnNldCwgMCwgJzFzdCBy
ZWFkOiBieXRlT2Zmc2V0Jyk7CisgICAgYXNzZXJ0X2VxdWFscyh2aWV3LmJ5dGVMZW5ndGgsIDAs
ICcxc3QgcmVhZDogYnl0ZUxlbmd0aCcpOworICB9KTsKKworICBjb25zdCBwMSA9IHJlYWRlci5y
ZWFkKG5ldyBVaW50OEFycmF5KDMyKSkudGhlbihyZXN1bHQgPT4geworICAgIGFzc2VydF9lcXVh
bHMocmVzdWx0LmRvbmUsIHRydWUsICcybmQgcmVhZDogZG9uZScpOworCisgICAgY29uc3Qgdmll
dyA9IHJlc3VsdC52YWx1ZTsKKyAgICBhc3NlcnRfZXF1YWxzKHZpZXcuYnVmZmVyLmJ5dGVMZW5n
dGgsIDMyLCAnMm5kIHJlYWQ6IGJ1ZmZlci5ieXRlTGVuZ3RoJyk7CisgICAgYXNzZXJ0X2VxdWFs
cyh2aWV3LmJ5dGVPZmZzZXQsIDAsICcybmQgcmVhZDogYnl0ZU9mZnNldCcpOworICAgIGFzc2Vy
dF9lcXVhbHModmlldy5ieXRlTGVuZ3RoLCAwLCAnMm5kIHJlYWQ6IGJ5dGVMZW5ndGgnKTsKKyAg
fSk7CisKKyAgY29udHJvbGxlci5jbG9zZSgpOworICBjb250cm9sbGVyLmJ5b2JSZXF1ZXN0LnJl
c3BvbmQoMCk7CisKKyAgcmV0dXJuIFByb21pc2UuYWxsKFtwMCwgcDFdKTsKK30sICdSZWFkYWJs
ZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBNdWx0aXBsZSByZWFkKHZpZXcpLCBjbG9zZSgpIGFu
ZCByZXNwb25kKCknKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBsZXQgY29udHJvbGxlcjsK
KworICBjb25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsK
KyAgICAgIGNvbnRyb2xsZXIgPSBjOworICAgIH0sCisgICAgcHVsbDogdC51bnJlYWNoZWRfZnVu
YygncHVsbCgpIHNob3VsZCBub3QgYmUgY2FsbGVkJyksCisgICAgdHlwZTogJ2J5dGVzJworICB9
KTsKKworICBjb25zdCByZWFkZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKHsgbW9kZTogJ2J5b2InIH0p
OworCisgIGNvbnN0IHAwID0gcmVhZGVyLnJlYWQobmV3IFVpbnQ4QXJyYXkoMTYpKS50aGVuKHJl
c3VsdCA9PiB7CisgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQuZG9uZSwgZmFsc2UsICcxc3QgcmVh
ZDogZG9uZScpOworCisgICAgY29uc3QgdmlldyA9IHJlc3VsdC52YWx1ZTsKKyAgICBhc3NlcnRf
ZXF1YWxzKHZpZXcuYnVmZmVyLmJ5dGVMZW5ndGgsIDE2LCAnMXN0IHJlYWQ6IGJ1ZmZlci5ieXRl
TGVuZ3RoJyk7CisgICAgYXNzZXJ0X2VxdWFscyh2aWV3LmJ5dGVPZmZzZXQsIDAsICcxc3QgcmVh
ZDogYnl0ZU9mZnNldCcpOworICAgIGFzc2VydF9lcXVhbHModmlldy5ieXRlTGVuZ3RoLCAxNiwg
JzFzdCByZWFkOiBieXRlTGVuZ3RoJyk7CisgIH0pOworCisgIGNvbnN0IHAxID0gcmVhZGVyLnJl
YWQobmV3IFVpbnQ4QXJyYXkoMTYpKS50aGVuKHJlc3VsdCA9PiB7CisgICAgYXNzZXJ0X2VxdWFs
cyhyZXN1bHQuZG9uZSwgZmFsc2UsICcybmQgcmVhZDogZG9uZScpOworCisgICAgY29uc3Qgdmll
dyA9IHJlc3VsdC52YWx1ZTsKKyAgICBhc3NlcnRfZXF1YWxzKHZpZXcuYnVmZmVyLmJ5dGVMZW5n
dGgsIDE2LCAnMm5kIHJlYWQ6IGJ1ZmZlci5ieXRlTGVuZ3RoJyk7CisgICAgYXNzZXJ0X2VxdWFs
cyh2aWV3LmJ5dGVPZmZzZXQsIDAsICcybmQgcmVhZDogYnl0ZU9mZnNldCcpOworICAgIGFzc2Vy
dF9lcXVhbHModmlldy5ieXRlTGVuZ3RoLCA4LCAnMm5kIHJlYWQ6IGJ5dGVMZW5ndGgnKTsKKyAg
fSk7CisKKyAgY29udHJvbGxlci5lbnF1ZXVlKG5ldyBVaW50OEFycmF5KDI0KSk7CisKKyAgcmV0
dXJuIFByb21pc2UuYWxsKFtwMCwgcDFdKTsKK30sICdSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUg
c291cmNlOiBNdWx0aXBsZSByZWFkKHZpZXcpLCBiaWcgZW5xdWV1ZSgpJyk7CisKK3Byb21pc2Vf
dGVzdCh0ID0+IHsKKyAgbGV0IGNvbnRyb2xsZXI7CisKKyAgY29uc3Qgc3RyZWFtID0gbmV3IFJl
YWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjb250cm9sbGVyID0gYzsKKyAg
ICB9LAorICAgIHB1bGw6IHQudW5yZWFjaGVkX2Z1bmMoJ3B1bGwoKSBzaG91bGQgbm90IGJlIGNh
bGxlZCcpLAorICAgIHR5cGU6ICdieXRlcycKKyAgfSk7CisKKyAgY29uc3QgcmVhZGVyID0gc3Ry
ZWFtLmdldFJlYWRlcih7IG1vZGU6ICdieW9iJyB9KTsKKworICBsZXQgYnl0ZXNSZWFkID0gMDsK
KworICBmdW5jdGlvbiBwdW1wKCkgeworICAgIHJldHVybiByZWFkZXIucmVhZChuZXcgVWludDhB
cnJheSg3KSkudGhlbihyZXN1bHQgPT4geworICAgICAgaWYgKHJlc3VsdC5kb25lKSB7CisgICAg
ICAgIGFzc2VydF9lcXVhbHMoYnl0ZXNSZWFkLCAxMDI0KTsKKyAgICAgICAgcmV0dXJuIHVuZGVm
aW5lZDsKKyAgICAgIH0KKworICAgICAgYnl0ZXNSZWFkICs9IHJlc3VsdC52YWx1ZS5ieXRlTGVu
Z3RoOworCisgICAgICByZXR1cm4gcHVtcCgpOworICAgIH0pOworICB9CisgIGNvbnN0IHByb21p
c2UgPSBwdW1wKCk7CisKKyAgY29udHJvbGxlci5lbnF1ZXVlKG5ldyBVaW50OEFycmF5KDUxMikp
OworICBjb250cm9sbGVyLmVucXVldWUobmV3IFVpbnQ4QXJyYXkoNTEyKSk7CisgIGNvbnRyb2xs
ZXIuY2xvc2UoKTsKKworICByZXR1cm4gcHJvbWlzZTsKK30sICdSZWFkYWJsZVN0cmVhbSB3aXRo
IGJ5dGUgc291cmNlOiBNdWx0aXBsZSByZWFkKHZpZXcpIGFuZCBtdWx0aXBsZSBlbnF1ZXVlKCkn
KTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBsZXQgcHVsbENhbGxlZCA9IGZhbHNlOworICBj
b25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHB1bGwoY29udHJvbGxlcikg
eworICAgICAgcHVsbENhbGxlZCA9IHRydWU7CisgICAgfSwKKyAgICB0eXBlOiAnYnl0ZXMnCisg
IH0pOworCisgIGNvbnN0IHJlYWRlciA9IHN0cmVhbS5nZXRSZWFkZXIoeyBtb2RlOiAnYnlvYicg
fSk7CisKKyAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19qcyh0LCBUeXBlRXJyb3IsIHJlYWRlci5y
ZWFkKCksICdyZWFkKCkgbXVzdCBmYWlsJykKKyAgICAgIC50aGVuKCgpID0+IGFzc2VydF9mYWxz
ZShwdWxsQ2FsbGVkLCAncHVsbCgpIG11c3Qgbm90IGhhdmUgYmVlbiBjYWxsZWQnKSk7Cit9LCAn
UmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogcmVhZCh2aWV3KSB3aXRoIHBhc3Npbmcg
dW5kZWZpbmVkIGFzIHZpZXcgbXVzdCBmYWlsJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAg
Y29uc3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICB0eXBlOiAnYnl0ZXMnCisg
IH0pOworCisgIGNvbnN0IHJlYWRlciA9IHN0cmVhbS5nZXRSZWFkZXIoeyBtb2RlOiAnYnlvYicg
fSk7CisKKyAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19qcyh0LCBUeXBlRXJyb3IsIHJlYWRlci5y
ZWFkKHt9KSwgJ3JlYWQodmlldykgbXVzdCBmYWlsJyk7Cit9LCAnUmVhZGFibGVTdHJlYW0gd2l0
aCBieXRlIHNvdXJjZTogcmVhZCh2aWV3KSB3aXRoIHBhc3NpbmcgYW4gZW1wdHkgb2JqZWN0IGFz
IHZpZXcgbXVzdCBmYWlsJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgY29uc3Qgc3RyZWFt
ID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICB0eXBlOiAnYnl0ZXMnCisgIH0pOworCisgIGNv
bnN0IHJlYWRlciA9IHN0cmVhbS5nZXRSZWFkZXIoeyBtb2RlOiAnYnlvYicgfSk7CisKKyAgcmV0
dXJuIHByb21pc2VfcmVqZWN0c19qcyh0LCBUeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgcmVhZGVyLnJlYWQoeyBidWZmZXI6IG5ldyBBcnJheUJ1ZmZlcigxMCksIGJ5dGVPZmZz
ZXQ6IDAsIGJ5dGVMZW5ndGg6IDEwIH0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICdyZWFk
KHZpZXcpIG11c3QgZmFpbCcpOworfSwgJ1JlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6
IEV2ZW4gcmVhZCh2aWV3KSB3aXRoIHBhc3NpbmcgQXJyYXlCdWZmZXJWaWV3IGxpa2Ugb2JqZWN0
IGFzIHZpZXcgbXVzdCBmYWlsJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgY29uc3Qgc3Ry
ZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjLmVycm9y
KGVycm9yMSk7CisgICAgfSwKKyAgICBwdWxsOiB0LnVucmVhY2hlZF9mdW5jKCdwdWxsKCkgc2hv
dWxkIG5vdCBiZSBjYWxsZWQnKSwKKyAgICB0eXBlOiAnYnl0ZXMnCisgIH0pOworCisgIGNvbnN0
IHJlYWRlciA9IHN0cmVhbS5nZXRSZWFkZXIoKTsKKworICByZXR1cm4gcHJvbWlzZV9yZWplY3Rz
X2V4YWN0bHkodCwgZXJyb3IxLCByZWFkZXIucmVhZCgpLCAncmVhZCgpIG11c3QgZmFpbCcpOwor
fSwgJ1JlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IHJlYWQoKSBvbiBhbiBlcnJvcmVk
IHN0cmVhbScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIGxldCBjb250cm9sbGVyOworCisg
IGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAg
ICAgY29udHJvbGxlciA9IGM7CisgICAgfSwKKyAgICB0eXBlOiAnYnl0ZXMnCisgIH0pOworCisg
IGNvbnN0IHJlYWRlciA9IHN0cmVhbS5nZXRSZWFkZXIoKTsKKworICBjb25zdCBwcm9taXNlID0g
cHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCByZWFkZXIucmVhZCgpLCAncmVhZCgp
IG11c3QgZmFpbCcpOworCisgIGNvbnRyb2xsZXIuZXJyb3IoZXJyb3IxKTsKKworICByZXR1cm4g
cHJvbWlzZTsKK30sICdSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiByZWFkKCksIHRo
ZW4gZXJyb3IoKScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIGNvbnN0IHN0cmVhbSA9IG5l
dyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgYy5lcnJvcihlcnJvcjEp
OworICAgIH0sCisgICAgcHVsbDogdC51bnJlYWNoZWRfZnVuYygncHVsbCgpIHNob3VsZCBub3Qg
YmUgY2FsbGVkJyksCisgICAgdHlwZTogJ2J5dGVzJworICB9KTsKKworICBjb25zdCByZWFkZXIg
PSBzdHJlYW0uZ2V0UmVhZGVyKHsgbW9kZTogJ2J5b2InIH0pOworCisgIHJldHVybiBwcm9taXNl
X3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIHJlYWRlci5yZWFkKG5ldyBVaW50OEFycmF5KDEp
KSwgJ3JlYWQoKSBtdXN0IGZhaWwnKTsKK30sICdSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291
cmNlOiByZWFkKHZpZXcpIG9uIGFuIGVycm9yZWQgc3RyZWFtJyk7CisKK3Byb21pc2VfdGVzdCh0
ID0+IHsKKyAgbGV0IGNvbnRyb2xsZXI7CisKKyAgY29uc3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxl
U3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjb250cm9sbGVyID0gYzsKKyAgICB9LAor
ICAgIHR5cGU6ICdieXRlcycKKyAgfSk7CisKKyAgY29uc3QgcmVhZGVyID0gc3RyZWFtLmdldFJl
YWRlcih7IG1vZGU6ICdieW9iJyB9KTsKKworICBjb25zdCBwcm9taXNlID0gcHJvbWlzZV9yZWpl
Y3RzX2V4YWN0bHkodCwgZXJyb3IxLCByZWFkZXIucmVhZChuZXcgVWludDhBcnJheSgxKSksICdy
ZWFkKCkgbXVzdCBmYWlsJyk7CisKKyAgY29udHJvbGxlci5lcnJvcihlcnJvcjEpOworCisgIHJl
dHVybiBwcm9taXNlOworfSwgJ1JlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IHJlYWQo
dmlldyksIHRoZW4gZXJyb3IoKScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIGxldCBjb250
cm9sbGVyOworICBsZXQgYnlvYlJlcXVlc3Q7CisKKyAgY29uc3QgdGVzdEVycm9yID0gbmV3IFR5
cGVFcnJvcignZm9vJyk7CisKKyAgY29uc3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsK
KyAgICBzdGFydChjKSB7CisgICAgICBjb250cm9sbGVyID0gYzsKKyAgICB9LAorICAgIHB1bGwo
KSB7CisgICAgICBieW9iUmVxdWVzdCA9IGNvbnRyb2xsZXIuYnlvYlJlcXVlc3Q7CisgICAgICB0
aHJvdyB0ZXN0RXJyb3I7CisgICAgfSwKKyAgICB0eXBlOiAnYnl0ZXMnCisgIH0pOworCisgIGNv
bnN0IHJlYWRlciA9IHN0cmVhbS5nZXRSZWFkZXIoKTsKKworICBjb25zdCBwcm9taXNlID0gcHJv
bWlzZV9yZWplY3RzX2V4YWN0bHkodCwgdGVzdEVycm9yLCByZWFkZXIucmVhZCgpLCAncmVhZCgp
IG11c3QgZmFpbCcpOworICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgdGVzdEVy
cm9yLCBwcm9taXNlLnRoZW4oKCkgPT4gcmVhZGVyLmNsb3NlZCkpCisgICAgICAudGhlbigoKSA9
PiBhc3NlcnRfZXF1YWxzKGJ5b2JSZXF1ZXN0LCBudWxsLCAnYnlvYlJlcXVlc3QgbXVzdCBiZSBu
dWxsJykpOworfSwgJ1JlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IFRocm93aW5nIGlu
IHB1bGwgZnVuY3Rpb24gbXVzdCBlcnJvciB0aGUgc3RyZWFtJyk7CisKK3Byb21pc2VfdGVzdCh0
ID0+IHsKKyAgbGV0IGJ5b2JSZXF1ZXN0OworCisgIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJs
ZVN0cmVhbSh7CisgICAgcHVsbChjb250cm9sbGVyKSB7CisgICAgICBieW9iUmVxdWVzdCA9IGNv
bnRyb2xsZXIuYnlvYlJlcXVlc3Q7CisgICAgICBjb250cm9sbGVyLmVycm9yKGVycm9yMSk7Cisg
ICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdmb28nKTsKKyAgICB9LAorICAgIHR5cGU6ICdieXRl
cycKKyAgfSk7CisKKyAgY29uc3QgcmVhZGVyID0gc3RyZWFtLmdldFJlYWRlcigpOworCisgIHJl
dHVybiBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIHJlYWRlci5yZWFkKCksICdy
ZWFkKCkgbXVzdCBmYWlsJykKKyAgICAgIC50aGVuKCgpID0+IHByb21pc2VfcmVqZWN0c19leGFj
dGx5KHQsIGVycm9yMSwgcmVhZGVyLmNsb3NlZCwgJ2Nsb3NlZCBtdXN0IGZhaWwnKSkKKyAgICAg
IC50aGVuKCgpID0+IGFzc2VydF9lcXVhbHMoYnlvYlJlcXVlc3QsIG51bGwsICdieW9iUmVxdWVz
dCBtdXN0IGJlIG51bGwnKSk7Cit9LCAnUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTog
VGhyb3dpbmcgaW4gcHVsbCBpbiByZXNwb25zZSB0byByZWFkKCkgbXVzdCBiZSBpZ25vcmVkIGlm
IHRoZSBzdHJlYW0gaXMgJyArCisgICAnZXJyb3JlZCBpbiBpdCcpOworCitwcm9taXNlX3Rlc3Qo
dCA9PiB7CisgIGxldCBieW9iUmVxdWVzdDsKKworICBjb25zdCB0ZXN0RXJyb3IgPSBuZXcgVHlw
ZUVycm9yKCdmb28nKTsKKworICBjb25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oewor
ICAgIHB1bGwoY29udHJvbGxlcikgeworICAgICAgYnlvYlJlcXVlc3QgPSBjb250cm9sbGVyLmJ5
b2JSZXF1ZXN0OworICAgICAgdGhyb3cgdGVzdEVycm9yOworICAgIH0sCisgICAgdHlwZTogJ2J5
dGVzJworICB9KTsKKworICBjb25zdCByZWFkZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKHsgbW9kZTog
J2J5b2InIH0pOworCisgIHJldHVybiBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCB0ZXN0RXJy
b3IsIHJlYWRlci5yZWFkKG5ldyBVaW50OEFycmF5KDEpKSwgJ3JlYWQodmlldykgbXVzdCBmYWls
JykKKyAgICAgIC50aGVuKCgpID0+IHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIHRlc3RFcnJv
ciwgcmVhZGVyLmNsb3NlZCwgJ3JlYWRlci5jbG9zZWQgbXVzdCByZWplY3QnKSkKKyAgICAgIC50
aGVuKCgpID0+IGFzc2VydF9ub3RfZXF1YWxzKGJ5b2JSZXF1ZXN0LCBudWxsLCAnYnlvYlJlcXVl
c3QgbXVzdCBub3QgYmUgbnVsbCcpKTsKK30sICdSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291
cmNlOiBUaHJvd2luZyBpbiBwdWxsIGluIHJlc3BvbnNlIHRvIHJlYWQodmlldykgZnVuY3Rpb24g
bXVzdCBlcnJvciB0aGUgc3RyZWFtJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgbGV0IGJ5
b2JSZXF1ZXN0OworCisgIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAg
cHVsbChjb250cm9sbGVyKSB7CisgICAgICBieW9iUmVxdWVzdCA9IGNvbnRyb2xsZXIuYnlvYlJl
cXVlc3Q7CisgICAgICBjb250cm9sbGVyLmVycm9yKGVycm9yMSk7CisgICAgICB0aHJvdyBuZXcg
VHlwZUVycm9yKCdmb28nKTsKKyAgICB9LAorICAgIHR5cGU6ICdieXRlcycKKyAgfSk7CisKKyAg
Y29uc3QgcmVhZGVyID0gc3RyZWFtLmdldFJlYWRlcih7IG1vZGU6ICdieW9iJyB9KTsKKworICBy
ZXR1cm4gcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCByZWFkZXIucmVhZChuZXcg
VWludDhBcnJheSgxKSksICdyZWFkKHZpZXcpIG11c3QgZmFpbCcpCisgICAgICAudGhlbigoKSA9
PiBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIHJlYWRlci5jbG9zZWQsICdjbG9z
ZWQgbXVzdCBmYWlsJykpCisgICAgICAudGhlbigoKSA9PiBhc3NlcnRfbm90X2VxdWFscyhieW9i
UmVxdWVzdCwgbnVsbCwgJ2J5b2JSZXF1ZXN0IG11c3Qgbm90IGJlIG51bGwnKSk7Cit9LCAnUmVh
ZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogVGhyb3dpbmcgaW4gcHVsbCBpbiByZXNwb25z
ZSB0byByZWFkKHZpZXcpIG11c3QgYmUgaWdub3JlZCBpZiB0aGUgc3RyZWFtIGlzICcgKworICAg
J2Vycm9yZWQgaW4gaXQnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgbGV0IGJ5b2JSZXF1
ZXN0OworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgcHVsbChjb250cm9s
bGVyKSB7CisgICAgICBieW9iUmVxdWVzdCA9IGNvbnRyb2xsZXIuYnlvYlJlcXVlc3Q7CisgICAg
ICBieW9iUmVxdWVzdC5yZXNwb25kKDQpOworICAgIH0sCisgICAgdHlwZTogJ2J5dGVzJworICB9
KTsKKyAgY29uc3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKHsgbW9kZTogJ2J5b2InIH0pOworICBj
b25zdCB2aWV3ID0gbmV3IFVpbnQ4QXJyYXkoMTYpOworICByZXR1cm4gcmVhZGVyLnJlYWQodmll
dykudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IGJ5
b2JSZXF1ZXN0LnJlc3BvbmQoNCksICdyZXNwb25kKCkgc2hvdWxkIHRocm93IGEgVHlwZUVycm9y
Jyk7CisgIH0pOworfSwgJ2NhbGxpbmcgcmVzcG9uZCgpIHR3aWNlIG9uIHRoZSBzYW1lIGJ5b2JS
ZXF1ZXN0IHNob3VsZCB0aHJvdycpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworICBsZXQgYnlv
YlJlcXVlc3Q7CisgIGNvbnN0IG5ld1ZpZXcgPSAoKSA9PiBuZXcgVWludDhBcnJheSgxNik7Cisg
IGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBwdWxsKGNvbnRyb2xsZXIpIHsK
KyAgICAgIGJ5b2JSZXF1ZXN0ID0gY29udHJvbGxlci5ieW9iUmVxdWVzdDsKKyAgICAgIGJ5b2JS
ZXF1ZXN0LnJlc3BvbmRXaXRoTmV3VmlldyhuZXdWaWV3KCkpOworICAgIH0sCisgICAgdHlwZTog
J2J5dGVzJworICB9KTsKKyAgY29uc3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKHsgbW9kZTogJ2J5
b2InIH0pOworICByZXR1cm4gcmVhZGVyLnJlYWQobmV3VmlldygpKS50aGVuKCgpID0+IHsKKyAg
ICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4gYnlvYlJlcXVlc3QucmVzcG9uZFdp
dGhOZXdWaWV3KG5ld1ZpZXcoKSksCisgICAgICAgICAgICAgICAgICAgICAncmVzcG9uZFdpdGhO
ZXdWaWV3KCkgc2hvdWxkIHRocm93IGEgVHlwZUVycm9yJyk7CisgIH0pOworfSwgJ2NhbGxpbmcg
cmVzcG9uZFdpdGhOZXdWaWV3KCkgdHdpY2Ugb24gdGhlIHNhbWUgYnlvYlJlcXVlc3Qgc2hvdWxk
IHRocm93Jyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisgIGxldCBieW9iUmVxdWVzdDsKKyAg
bGV0IHJlc29sdmVQdWxsQ2FsbGVkUHJvbWlzZTsKKyAgY29uc3QgcHVsbENhbGxlZFByb21pc2Ug
PSBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKKyAgICByZXNvbHZlUHVsbENhbGxlZFByb21pc2Ug
PSByZXNvbHZlOworICB9KTsKKyAgbGV0IHJlc29sdmVQdWxsOworICBjb25zdCBycyA9IG5ldyBS
ZWFkYWJsZVN0cmVhbSh7CisgICAgcHVsbChjb250cm9sbGVyKSB7CisgICAgICBieW9iUmVxdWVz
dCA9IGNvbnRyb2xsZXIuYnlvYlJlcXVlc3Q7CisgICAgICByZXNvbHZlUHVsbENhbGxlZFByb21p
c2UoKTsKKyAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKKyAgICAgICAgcmVz
b2x2ZVB1bGwgPSByZXNvbHZlOworICAgICAgfSk7CisgICAgfSwKKyAgICB0eXBlOiAnYnl0ZXMn
CisgIH0pOworICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFkZXIoeyBtb2RlOiAnYnlvYicgfSk7
CisgIGNvbnN0IHJlYWRQcm9taXNlID0gcmVhZGVyLnJlYWQobmV3IFVpbnQ4QXJyYXkoMTYpKTsK
KyAgcmV0dXJuIHB1bGxDYWxsZWRQcm9taXNlLnRoZW4oKCkgPT4geworICAgIGNvbnN0IGNhbmNl
bFByb21pc2UgPSByZWFkZXIuY2FuY2VsKCdtZWgnKTsKKyAgICByZXNvbHZlUHVsbCgpOworICAg
IGJ5b2JSZXF1ZXN0LnJlc3BvbmQoMCk7CisgICAgcmV0dXJuIFByb21pc2UuYWxsKFtyZWFkUHJv
bWlzZSwgY2FuY2VsUHJvbWlzZV0pLnRoZW4oKCkgPT4geworICAgICAgYXNzZXJ0X3Rocm93c19q
cyhUeXBlRXJyb3IsICgpID0+IGJ5b2JSZXF1ZXN0LnJlc3BvbmQoMCksICdyZXNwb25kKCkgc2hv
dWxkIHRocm93Jyk7CisgICAgfSk7CisgIH0pOworfSwgJ2NhbGxpbmcgcmVzcG9uZCgwKSB0d2lj
ZSBvbiB0aGUgc2FtZSBieW9iUmVxdWVzdCBzaG91bGQgdGhyb3cgZXZlbiB3aGVuIGNsb3NlZCcp
OworCitwcm9taXNlX3Rlc3QoKCkgPT4geworICBsZXQgcmVzb2x2ZVB1bGxDYWxsZWRQcm9taXNl
OworICBjb25zdCBwdWxsQ2FsbGVkUHJvbWlzZSA9IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gewor
ICAgIHJlc29sdmVQdWxsQ2FsbGVkUHJvbWlzZSA9IHJlc29sdmU7CisgIH0pOworICBsZXQgcmVz
b2x2ZVB1bGw7CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBwdWxsKCkg
eworICAgICAgcmVzb2x2ZVB1bGxDYWxsZWRQcm9taXNlKCk7CisgICAgICByZXR1cm4gbmV3IFBy
b21pc2UocmVzb2x2ZSA9PiB7CisgICAgICAgIHJlc29sdmVQdWxsID0gcmVzb2x2ZTsKKyAgICAg
IH0pOworICAgIH0sCisgICAgdHlwZTogJ2J5dGVzJworICB9KTsKKyAgY29uc3QgcmVhZGVyID0g
cnMuZ2V0UmVhZGVyKHsgbW9kZTogJ2J5b2InIH0pOworICByZWFkZXIucmVhZChuZXcgVWludDhB
cnJheSgxNikpOworICByZXR1cm4gcHVsbENhbGxlZFByb21pc2UudGhlbigoKSA9PiB7CisgICAg
cmVzb2x2ZVB1bGwoKTsKKyAgICByZXR1cm4gZGVsYXkoMCkudGhlbigoKSA9PiB7CisgICAgICBh
c3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4gcmVhZGVyLnJlbGVhc2VMb2NrKCksICdy
ZWxlYXNlTG9jaygpIHNob3VsZCB0aHJvdycpOworICAgIH0pOworICB9KTsKK30sICdwdWxsKCkg
cmVzb2x2aW5nIHNob3VsZCBub3QgbWFrZSByZWxlYXNlTG9jaygpIHBvc3NpYmxlJyk7CisKK3By
b21pc2VfdGVzdCgoKSA9PiB7CisgIC8vIFRlc3RzIGh0dHBzOi8vZ2l0aHViLmNvbS93aGF0d2cv
c3RyZWFtcy9pc3N1ZXMvNjg2CisKKyAgbGV0IGNvbnRyb2xsZXI7CisgIGNvbnN0IHJzID0gbmV3
IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBhdXRvQWxsb2NhdGVDaHVua1NpemU6IDEyOCwKKyAgICBz
dGFydChjKSB7CisgICAgICBjb250cm9sbGVyID0gYzsKKyAgICB9LAorICAgIHR5cGU6ICdieXRl
cycKKyAgfSk7CisKKyAgY29uc3QgcmVhZFByb21pc2UgPSBycy5nZXRSZWFkZXIoKS5yZWFkKCk7
CisKKyAgY29uc3QgYnIgPSBjb250cm9sbGVyLmJ5b2JSZXF1ZXN0OworICBjb250cm9sbGVyLmNs
b3NlKCk7CisKKyAgYnIucmVzcG9uZCgwKTsKKworICByZXR1cm4gcmVhZFByb21pc2U7Cit9LCAn
UmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogZGVmYXVsdCByZWFkZXIgKyBhdXRvQWxs
b2NhdGVDaHVua1NpemUgKyBieW9iUmVxdWVzdCBpbnRlcmFjdGlvbicpOworCit0ZXN0KCgpID0+
IHsKKyAgY29uc3QgUmVhZGFibGVTdHJlYW1CWU9CUmVhZGVyID0gbmV3IFJlYWRhYmxlU3RyZWFt
KHsgdHlwZTogJ2J5dGVzJyB9KS5nZXRSZWFkZXIoeyBtb2RlOiAnYnlvYicgfSkuY29uc3RydWN0
b3I7CisgIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7IHR5cGU6ICdieXRlcycg
fSk7CisgIG5ldyBSZWFkYWJsZVN0cmVhbUJZT0JSZWFkZXIoc3RyZWFtKTsKK30sICdSZWFkYWJs
ZVN0cmVhbUJZT0JSZWFkZXIgY2FuIGJlIGNvbnN0cnVjdGVkIGRpcmVjdGx5Jyk7CisKK3Rlc3Qo
KCkgPT4geworICBjb25zdCBSZWFkYWJsZVN0cmVhbUJZT0JSZWFkZXIgPSBuZXcgUmVhZGFibGVT
dHJlYW0oeyB0eXBlOiAnYnl0ZXMnIH0pLmdldFJlYWRlcih7IG1vZGU6ICdieW9iJyB9KS5jb25z
dHJ1Y3RvcjsKKyAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IG5ldyBSZWFkYWJs
ZVN0cmVhbUJZT0JSZWFkZXIoe30pLCAnY29uc3RydWN0b3IgbXVzdCB0aHJvdycpOworfSwgJ1Jl
YWRhYmxlU3RyZWFtQllPQlJlYWRlciBjb25zdHJ1Y3RvciByZXF1aXJlcyBhIFJlYWRhYmxlU3Ry
ZWFtIGFyZ3VtZW50Jyk7CisKK3Rlc3QoKCkgPT4geworICBjb25zdCBSZWFkYWJsZVN0cmVhbUJZ
T0JSZWFkZXIgPSBuZXcgUmVhZGFibGVTdHJlYW0oeyB0eXBlOiAnYnl0ZXMnIH0pLmdldFJlYWRl
cih7IG1vZGU6ICdieW9iJyB9KS5jb25zdHJ1Y3RvcjsKKyAgY29uc3Qgc3RyZWFtID0gbmV3IFJl
YWRhYmxlU3RyZWFtKHsgdHlwZTogJ2J5dGVzJyB9KTsKKyAgc3RyZWFtLmdldFJlYWRlcigpOwor
ICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4gbmV3IFJlYWRhYmxlU3RyZWFtQllP
QlJlYWRlcihzdHJlYW0pLCAnY29uc3RydWN0b3IgbXVzdCB0aHJvdycpOworfSwgJ1JlYWRhYmxl
U3RyZWFtQllPQlJlYWRlciBjb25zdHJ1Y3RvciByZXF1aXJlcyBhbiB1bmxvY2tlZCBSZWFkYWJs
ZVN0cmVhbScpOworCit0ZXN0KCgpID0+IHsKKyAgY29uc3QgUmVhZGFibGVTdHJlYW1CWU9CUmVh
ZGVyID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsgdHlwZTogJ2J5dGVzJyB9KS5nZXRSZWFkZXIoeyBt
b2RlOiAnYnlvYicgfSkuY29uc3RydWN0b3I7CisgIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJs
ZVN0cmVhbSgpOworICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4gbmV3IFJlYWRh
YmxlU3RyZWFtQllPQlJlYWRlcihzdHJlYW0pLCAnY29uc3RydWN0b3IgbXVzdCB0aHJvdycpOwor
fSwgJ1JlYWRhYmxlU3RyZWFtQllPQlJlYWRlciBjb25zdHJ1Y3RvciByZXF1aXJlcyBhIFJlYWRh
YmxlU3RyZWFtIHdpdGggdHlwZSAiYnl0ZXMiJyk7CisKK3Rlc3QoKCkgPT4geworICBhc3NlcnRf
dGhyb3dzX2pzKFJhbmdlRXJyb3IsICgpID0+IG5ldyBSZWFkYWJsZVN0cmVhbSh7IHR5cGU6ICdi
eXRlcycgfSwgeworICAgIHNpemUoKSB7CisgICAgICByZXR1cm4gMTsKKyAgICB9CisgIH0pLCAn
Y29uc3RydWN0b3Igc2hvdWxkIHRocm93IGZvciBzaXplIGZ1bmN0aW9uJyk7CisKKyAgYXNzZXJ0
X3Rocm93c19qcyhSYW5nZUVycm9yLAorICAgICAgICAgICAgICAgICAgICgpID0+IG5ldyBSZWFk
YWJsZVN0cmVhbSh7IHR5cGU6ICdieXRlcycgfSwgbmV3IENvdW50UXVldWluZ1N0cmF0ZWd5KHsg
aGlnaFdhdGVyTWFyazogMSB9KSksCisgICAgICAgICAgICAgICAgICAgJ2NvbnN0cnVjdG9yIHNo
b3VsZCB0aHJvdyB3aGVuIHN0cmF0ZWd5IGlzIENvdW50UXVldWluZ1N0cmF0ZWd5Jyk7CisKKyAg
YXNzZXJ0X3Rocm93c19qcyhSYW5nZUVycm9yLAorICAgICAgICAgICAgICAgICAgICgpID0+IG5l
dyBSZWFkYWJsZVN0cmVhbSh7IHR5cGU6ICdieXRlcycgfSwgbmV3IEJ5dGVMZW5ndGhRdWV1aW5n
U3RyYXRlZ3koeyBoaWdoV2F0ZXJNYXJrOiA1MTIgfSkpLAorICAgICAgICAgICAgICAgICAgICdj
b25zdHJ1Y3RvciBzaG91bGQgdGhyb3cgd2hlbiBzdHJhdGVneSBpcyBCeXRlTGVuZ3RoUXVldWlu
Z1N0cmF0ZWd5Jyk7CisKKyAgY2xhc3MgSGFzU2l6ZU1ldGhvZCB7CisgICAgc2l6ZSgpIHt9Cisg
fQorCisgIGFzc2VydF90aHJvd3NfanMoUmFuZ2VFcnJvciwgKCkgPT4gbmV3IFJlYWRhYmxlU3Ry
ZWFtKHsgdHlwZTogJ2J5dGVzJyB9LCBuZXcgSGFzU2l6ZU1ldGhvZCgpKSwKKyAgICAgICAgICAg
ICAgICAgICAnY29uc3RydWN0b3Igc2hvdWxkIHRocm93IHdoZW4gc2l6ZSBvbiB0aGUgcHJvdG90
eXBlIGNoYWluJyk7Cit9LCAnUmVhZGFibGVTdHJlYW0gY29uc3RydWN0b3Igc2hvdWxkIG5vdCBh
Y2NlcHQgYSBzdHJhdGVneSB3aXRoIGEgc2l6ZSBkZWZpbmVkIGlmIHR5cGUgaXMgImJ5dGVzIicp
OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFtcy9nZW5lcmFsLmFueS53b3JrZXItZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJl
YW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFtcy9nZW5lcmFsLmFueS53b3JrZXItZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjQzOWIwYTU3OTBlMTYwNTZlYTdiYmYyYzJjZGM5MDgwMzZiZjJmYjkKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL2dlbmVyYWwuYW55Lndvcmtlci1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSw4MyBAQAorCitIYXJuZXNzIEVycm9yIChUSU1FT1VUKSwgbWVz
c2FnZSA9IG51bGwKKworUEFTUyBnZXRSZWFkZXIoe21vZGU6ICJieW9iIn0pIHRocm93cyBvbiBu
b24tYnl0ZXMgc3RyZWFtcyAKK1BBU1MgUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZSBj
YW4gYmUgY29uc3RydWN0ZWQgd2l0aCBubyBlcnJvcnMgCitQQVNTIGdldFJlYWRlcih7bW9kZX0p
IG11c3QgcGVyZm9ybSBUb1N0cmluZygpIAorUEFTUyBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUg
c291cmNlOiBDb25zdHJ1Y3QgYW5kIGV4cGVjdCBzdGFydCBhbmQgcHVsbCBiZWluZyBjYWxsZWQg
CitQQVNTIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IE5vIGF1dG9tYXRpYyBwdWxs
IGNhbGwgaWYgc3RhcnQgZG9lc24ndCBmaW5pc2ggCitQQVNTIFJlYWRhYmxlU3RyZWFtIHdpdGgg
Ynl0ZSBzb3VyY2U6IENvbnN0cnVjdCB3aXRoIGhpZ2hXYXRlck1hcmsgb2YgMCAKK1BBU1MgUmVh
ZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogZGVzaXJlZFNpemUgd2hlbiBjbG9zZWQgCitQ
QVNTIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IGRlc2lyZWRTaXplIHdoZW4gZXJy
b3JlZCAKK1BBU1MgUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogZ2V0UmVhZGVyKCks
IHRoZW4gcmVsZWFzZUxvY2soKSAKK1BBU1MgUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJj
ZTogZ2V0UmVhZGVyKCkgd2l0aCBtb2RlIHNldCB0byBieW9iLCB0aGVuIHJlbGVhc2VMb2NrKCkg
CitQQVNTIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IFRlc3QgdGhhdCBjbG9zaW5n
IGEgc3RyZWFtIGRvZXMgbm90IHJlbGVhc2UgYSByZWFkZXIgYXV0b21hdGljYWxseSAKK1BBU1Mg
UmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogVGVzdCB0aGF0IGNsb3NpbmcgYSBzdHJl
YW0gZG9lcyBub3QgcmVsZWFzZSBhIEJZT0IgcmVhZGVyIGF1dG9tYXRpY2FsbHkgCitQQVNTIFJl
YWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IFRlc3QgdGhhdCBlcnJvcmluZyBhIHN0cmVh
bSBkb2VzIG5vdCByZWxlYXNlIGEgcmVhZGVyIGF1dG9tYXRpY2FsbHkgCitQQVNTIFJlYWRhYmxl
U3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IFRlc3QgdGhhdCBlcnJvcmluZyBhIHN0cmVhbSBkb2Vz
IG5vdCByZWxlYXNlIGEgQllPQiByZWFkZXIgYXV0b21hdGljYWxseSAKK1BBU1MgUmVhZGFibGVT
dHJlYW0gd2l0aCBieXRlIHNvdXJjZTogcmVsZWFzZUxvY2soKSBvbiBSZWFkYWJsZVN0cmVhbVJl
YWRlciB3aXRoIHBlbmRpbmcgcmVhZCgpIG11c3QgdGhyb3cgCitQQVNTIFJlYWRhYmxlU3RyZWFt
IHdpdGggYnl0ZSBzb3VyY2U6IEF1dG9tYXRpYyBwdWxsKCkgYWZ0ZXIgc3RhcnQoKSAKK1BBU1Mg
UmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogQXV0b21hdGljIHB1bGwoKSBhZnRlciBz
dGFydCgpIGFuZCByZWFkKCkgCitGQUlMIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6
IGF1dG9BbGxvY2F0ZUNodW5rU2l6ZSBhc3NlcnRfZXF1YWxzOiBwdWxsKCkgbXVzdCBoYXZlIGJl
ZW4gaW52b2tlZCB0d2ljZSBleHBlY3RlZCAyIGJ1dCBnb3QgMQorUEFTUyBSZWFkYWJsZVN0cmVh
bSB3aXRoIGJ5dGUgc291cmNlOiBNaXggb2YgYXV0byBhbGxvY2F0ZSBhbmQgQllPQiAKK1BBU1Mg
UmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogQXV0b21hdGljIHB1bGwoKSBhZnRlciBz
dGFydCgpIGFuZCByZWFkKHZpZXcpIAorUEFTUyBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291
cmNlOiBlbnF1ZXVlKCksIGdldFJlYWRlcigpLCB0aGVuIHJlYWQoKSAKK1BBU1MgUmVhZGFibGVT
dHJlYW0gd2l0aCBieXRlIHNvdXJjZTogUHVzaCBzb3VyY2UgdGhhdCBkb2Vzbid0IHVuZGVyc3Rh
bmQgcHVsbCBzaWduYWwgCitGQUlMIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IHB1
bGwoKSBmdW5jdGlvbiBpcyBub3QgY2FsbGFibGUgYXNzZXJ0X3Rocm93c19qczogY29uc3RydWN0
b3Igc2hvdWxkIHRocm93IGZ1bmN0aW9uICIoKSA9PiBuZXcgUmVhZGFibGVTdHJlYW0oeworICAg
IHB1bGw6ICdmb28nLAorICAgIHR5cGU6ICdieXRlcycKKyAgfSkiIGRpZCBub3QgdGhyb3cKK1BB
U1MgUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogZW5xdWV1ZSgpIHdpdGggVWludDE2
QXJyYXksIGdldFJlYWRlcigpLCB0aGVuIHJlYWQoKSAKK1BBU1MgUmVhZGFibGVTdHJlYW0gd2l0
aCBieXRlIHNvdXJjZTogZW5xdWV1ZSgpLCByZWFkKHZpZXcpIHBhcnRpYWxseSwgdGhlbiByZWFk
KCkgCitQQVNTIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IGdldFJlYWRlcigpLCBl
bnF1ZXVlKCksIGNsb3NlKCksIHRoZW4gcmVhZCgpIAorUEFTUyBSZWFkYWJsZVN0cmVhbSB3aXRo
IGJ5dGUgc291cmNlOiBlbnF1ZXVlKCksIGNsb3NlKCksIGdldFJlYWRlcigpLCB0aGVuIHJlYWQo
KSAKK0ZBSUwgUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogUmVzcG9uZCB0byBwdWxs
KCkgYnkgZW5xdWV1ZSgpIGFzc2VydF9lcXVhbHM6IGJ5b2JSZXF1ZXN0IG11c3QgYmUgbnVsbCBl
eHBlY3RlZCAob2JqZWN0KSBudWxsIGJ1dCBnb3QgKHVuZGVmaW5lZCkgdW5kZWZpbmVkCitGQUlM
IFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IFJlc3BvbmQgdG8gcHVsbCgpIGJ5IGVu
cXVldWUoKSBhc3luY2hyb25vdXNseSBhc3NlcnRfZXF1YWxzOiBieW9iUmVxdWVzdCBzaG91bGQg
YmUgbnVsbCBleHBlY3RlZCAob2JqZWN0KSBudWxsIGJ1dCBnb3QgKHVuZGVmaW5lZCkgdW5kZWZp
bmVkCitUSU1FT1VUIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IFJlc3BvbmQgdG8g
bXVsdGlwbGUgcHVsbCgpIGJ5IHNlcGFyYXRlIGVucXVldWUoKSBUZXN0IHRpbWVkIG91dAorTk9U
UlVOIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IHJlYWQodmlldyksIHRoZW4gcmVz
cG9uZCgpIAorTk9UUlVOIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IHJlYWQodmll
dyksIHRoZW4gcmVzcG9uZCgpIHdpdGggYSB0cmFuc2ZlcnJlZCBBcnJheUJ1ZmZlciAKK05PVFJV
TiBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiByZWFkKHZpZXcpLCB0aGVuIHJlc3Bv
bmQoKSB3aXRoIHRvbyBiaWcgdmFsdWUgCitOT1RSVU4gUmVhZGFibGVTdHJlYW0gd2l0aCBieXRl
IHNvdXJjZTogcmVzcG9uZCgzKSB0byByZWFkKHZpZXcpIHdpdGggMiBlbGVtZW50IFVpbnQxNkFy
cmF5IGVucXVldWVzIHRoZSAxIGJ5dGUgcmVtYWluZGVyIAorTk9UUlVOIFJlYWRhYmxlU3RyZWFt
IHdpdGggYnl0ZSBzb3VyY2U6IGVucXVldWUoKSwgZ2V0UmVhZGVyKCksIHRoZW4gcmVhZCh2aWV3
KSAKK05PVFJVTiBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBlbnF1ZXVlKCksIGdl
dFJlYWRlcigpLCB0aGVuIGNhbmNlbCgpIChtb2RlID0gbm90IEJZT0IpIAorTk9UUlVOIFJlYWRh
YmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IGVucXVldWUoKSwgZ2V0UmVhZGVyKCksIHRoZW4g
Y2FuY2VsKCkgKG1vZGUgPSBCWU9CKSAKK05PVFJVTiBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUg
c291cmNlOiBnZXRSZWFkZXIoKSwgcmVhZCh2aWV3KSwgdGhlbiBjYW5jZWwoKSAKK05PVFJVTiBS
ZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBjYW5jZWwoKSB3aXRoIHBhcnRpYWxseSBm
aWxsZWQgcGVuZGluZyBwdWxsKCkgcmVxdWVzdCAKK05PVFJVTiBSZWFkYWJsZVN0cmVhbSB3aXRo
IGJ5dGUgc291cmNlOiBlbnF1ZXVlKCksIGdldFJlYWRlcigpLCB0aGVuIHJlYWQodmlldykgd2hl
cmUgdmlldy5idWZmZXIgaXMgbm90IGZ1bGx5IGNvdmVyZWQgYnkgdmlldyAKK05PVFJVTiBSZWFk
YWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBNdWx0aXBsZSBlbnF1ZXVlKCksIGdldFJlYWRl
cigpLCB0aGVuIHJlYWQodmlldykgCitOT1RSVU4gUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNv
dXJjZTogZW5xdWV1ZSgpLCBnZXRSZWFkZXIoKSwgdGhlbiByZWFkKHZpZXcpIHdpdGggYSBiaWdn
ZXIgdmlldyAKK05PVFJVTiBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBlbnF1ZXVl
KCksIGdldFJlYWRlcigpLCB0aGVuIHJlYWQodmlldykgd2l0aCBzbWFsbGVyIHZpZXdzIAorTk9U
UlVOIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IGVucXVldWUoKSAxIGJ5dGUsIGdl
dFJlYWRlcigpLCB0aGVuIHJlYWQodmlldykgd2l0aCBVaW50MTZBcnJheSAKK05PVFJVTiBSZWFk
YWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBlbnF1ZXVlKCkgMyBieXRlLCBnZXRSZWFkZXIo
KSwgdGhlbiByZWFkKHZpZXcpIHdpdGggMi1lbGVtZW50IFVpbnQxNkFycmF5IAorTk9UUlVOIFJl
YWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IHJlYWQodmlldykgd2l0aCBVaW50MTZBcnJh
eSBvbiBjbG9zZSgpLWQgc3RyZWFtIHdpdGggMSBieXRlIGVucXVldWUoKS1kIG11c3QgZmFpbCAK
K05PVFJVTiBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBBIHN0cmVhbSBtdXN0IGJl
IGVycm9yZWQgaWYgY2xvc2UoKS1kIGJlZm9yZSBmdWxmaWxsaW5nIHJlYWQodmlldykgd2l0aCBV
aW50MTZBcnJheSAKK1BBU1MgUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogVGhyb3cg
aWYgY2xvc2UoKS1lZCBtb3JlIHRoYW4gb25jZSAKK1BBU1MgUmVhZGFibGVTdHJlYW0gd2l0aCBi
eXRlIHNvdXJjZTogVGhyb3cgb24gZW5xdWV1ZSgpIGFmdGVyIGNsb3NlKCkgCitOT1RSVU4gUmVh
ZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogcmVhZCh2aWV3KSwgdGhlbiByZXNwb25kKCkg
YW5kIGNsb3NlKCkgaW4gcHVsbCgpIAorTk9UUlVOIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBz
b3VyY2U6IHJlYWQodmlldykgd2l0aCBVaW50MzJBcnJheSwgdGhlbiBmaWxsIGl0IGJ5IG11bHRp
cGxlIHJlc3BvbmQoKSBjYWxscyAKK05PVFJVTiBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291
cmNlOiByZWFkKCkgdHdpY2UsIHRoZW4gZW5xdWV1ZSgpIHR3aWNlIAorTk9UUlVOIFJlYWRhYmxl
U3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IE11bHRpcGxlIHJlYWQodmlldyksIGNsb3NlKCkgYW5k
IHJlc3BvbmQoKSAKK05PVFJVTiBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBNdWx0
aXBsZSByZWFkKHZpZXcpLCBiaWcgZW5xdWV1ZSgpIAorTk9UUlVOIFJlYWRhYmxlU3RyZWFtIHdp
dGggYnl0ZSBzb3VyY2U6IE11bHRpcGxlIHJlYWQodmlldykgYW5kIG11bHRpcGxlIGVucXVldWUo
KSAKK05PVFJVTiBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiByZWFkKHZpZXcpIHdp
dGggcGFzc2luZyB1bmRlZmluZWQgYXMgdmlldyBtdXN0IGZhaWwgCitOT1RSVU4gUmVhZGFibGVT
dHJlYW0gd2l0aCBieXRlIHNvdXJjZTogcmVhZCh2aWV3KSB3aXRoIHBhc3NpbmcgYW4gZW1wdHkg
b2JqZWN0IGFzIHZpZXcgbXVzdCBmYWlsIAorTk9UUlVOIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0
ZSBzb3VyY2U6IEV2ZW4gcmVhZCh2aWV3KSB3aXRoIHBhc3NpbmcgQXJyYXlCdWZmZXJWaWV3IGxp
a2Ugb2JqZWN0IGFzIHZpZXcgbXVzdCBmYWlsIAorTk9UUlVOIFJlYWRhYmxlU3RyZWFtIHdpdGgg
Ynl0ZSBzb3VyY2U6IHJlYWQoKSBvbiBhbiBlcnJvcmVkIHN0cmVhbSAKK05PVFJVTiBSZWFkYWJs
ZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiByZWFkKCksIHRoZW4gZXJyb3IoKSAKK05PVFJVTiBS
ZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiByZWFkKHZpZXcpIG9uIGFuIGVycm9yZWQg
c3RyZWFtIAorTk9UUlVOIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IHJlYWQodmll
dyksIHRoZW4gZXJyb3IoKSAKK05PVFJVTiBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNl
OiBUaHJvd2luZyBpbiBwdWxsIGZ1bmN0aW9uIG11c3QgZXJyb3IgdGhlIHN0cmVhbSAKK05PVFJV
TiBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBUaHJvd2luZyBpbiBwdWxsIGluIHJl
c3BvbnNlIHRvIHJlYWQoKSBtdXN0IGJlIGlnbm9yZWQgaWYgdGhlIHN0cmVhbSBpcyBlcnJvcmVk
IGluIGl0IAorTk9UUlVOIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IFRocm93aW5n
IGluIHB1bGwgaW4gcmVzcG9uc2UgdG8gcmVhZCh2aWV3KSBmdW5jdGlvbiBtdXN0IGVycm9yIHRo
ZSBzdHJlYW0gCitOT1RSVU4gUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogVGhyb3dp
bmcgaW4gcHVsbCBpbiByZXNwb25zZSB0byByZWFkKHZpZXcpIG11c3QgYmUgaWdub3JlZCBpZiB0
aGUgc3RyZWFtIGlzIGVycm9yZWQgaW4gaXQgCitOT1RSVU4gY2FsbGluZyByZXNwb25kKCkgdHdp
Y2Ugb24gdGhlIHNhbWUgYnlvYlJlcXVlc3Qgc2hvdWxkIHRocm93IAorTk9UUlVOIGNhbGxpbmcg
cmVzcG9uZFdpdGhOZXdWaWV3KCkgdHdpY2Ugb24gdGhlIHNhbWUgYnlvYlJlcXVlc3Qgc2hvdWxk
IHRocm93IAorTk9UUlVOIGNhbGxpbmcgcmVzcG9uZCgwKSB0d2ljZSBvbiB0aGUgc2FtZSBieW9i
UmVxdWVzdCBzaG91bGQgdGhyb3cgZXZlbiB3aGVuIGNsb3NlZCAKK05PVFJVTiBwdWxsKCkgcmVz
b2x2aW5nIHNob3VsZCBub3QgbWFrZSByZWxlYXNlTG9jaygpIHBvc3NpYmxlIAorTk9UUlVOIFJl
YWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IGRlZmF1bHQgcmVhZGVyICsgYXV0b0FsbG9j
YXRlQ2h1bmtTaXplICsgYnlvYlJlcXVlc3QgaW50ZXJhY3Rpb24gCitQQVNTIFJlYWRhYmxlU3Ry
ZWFtQllPQlJlYWRlciBjYW4gYmUgY29uc3RydWN0ZWQgZGlyZWN0bHkgCitQQVNTIFJlYWRhYmxl
U3RyZWFtQllPQlJlYWRlciBjb25zdHJ1Y3RvciByZXF1aXJlcyBhIFJlYWRhYmxlU3RyZWFtIGFy
Z3VtZW50IAorUEFTUyBSZWFkYWJsZVN0cmVhbUJZT0JSZWFkZXIgY29uc3RydWN0b3IgcmVxdWly
ZXMgYW4gdW5sb2NrZWQgUmVhZGFibGVTdHJlYW0gCitQQVNTIFJlYWRhYmxlU3RyZWFtQllPQlJl
YWRlciBjb25zdHJ1Y3RvciByZXF1aXJlcyBhIFJlYWRhYmxlU3RyZWFtIHdpdGggdHlwZSAiYnl0
ZXMiIAorUEFTUyBSZWFkYWJsZVN0cmVhbSBjb25zdHJ1Y3RvciBzaG91bGQgbm90IGFjY2VwdCBh
IHN0cmF0ZWd5IHdpdGggYSBzaXplIGRlZmluZWQgaWYgdHlwZSBpcyAiYnl0ZXMiIAorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL2dlbmVyYWwuYW55Lndvcmtlci5odG1sIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLWJ5
dGUtc3RyZWFtcy9nZW5lcmFsLmFueS53b3JrZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMzgyOTEzNTI4
ZTY5M2IzYTVkNTZjNjYwYTQ1MDYwOTgwYjU0OGMzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLWJ5
dGUtc3RyZWFtcy9nZW5lcmFsLmFueS53b3JrZXIuaHRtbApAQCAtMCwwICsxIEBACis8IS0tIFRo
aXMgZmlsZSBpcyByZXF1aXJlZCBmb3IgV2ViS2l0IHRlc3QgaW5mcmFzdHJ1Y3R1cmUgdG8gcnVu
IHRoZSB0ZW1wbGF0ZWQgdGVzdCAtLT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL2dlbmVyYWwuZGVkaWNhdGVkd29ya2VyLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMvZ2VuZXJhbC5kZWRpY2F0ZWR3b3JrZXItZXhwZWN0ZWQu
dHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMzk4YzczMTEyYjdkNzE5YWRjYjVj
Yzc0MjhmYjZiZmZiMWViZTRjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMvZ2VuZXJhbC5kZWRpY2F0ZWR3b3JrZXItZXhwZWN0
ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsODQgKzAsMCBAQAotCi1IYXJuZXNzIEVycm9yIChU
SU1FT1VUKSwgbWVzc2FnZSA9IG51bGwKLQotUEFTUyBnZXRSZWFkZXIoe21vZGU6ICJieW9iIn0p
IHRocm93cyBvbiBub24tYnl0ZXMgc3RyZWFtcyAKLVBBU1MgUmVhZGFibGVTdHJlYW0gd2l0aCBi
eXRlIHNvdXJjZSBjYW4gYmUgY29uc3RydWN0ZWQgd2l0aCBubyBlcnJvcnMgCi1QQVNTIGdldFJl
YWRlcih7bW9kZX0pIG11c3QgcGVyZm9ybSBUb1N0cmluZygpIAotUEFTUyBSZWFkYWJsZVN0cmVh
bSB3aXRoIGJ5dGUgc291cmNlOiBDb25zdHJ1Y3QgYW5kIGV4cGVjdCBzdGFydCBhbmQgcHVsbCBi
ZWluZyBjYWxsZWQgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IE5vIGF1
dG9tYXRpYyBwdWxsIGNhbGwgaWYgc3RhcnQgZG9lc24ndCBmaW5pc2ggCi1QQVNTIFJlYWRhYmxl
U3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IENvbnN0cnVjdCB3aXRoIGhpZ2hXYXRlck1hcmsgb2Yg
MCAKLVBBU1MgUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogZGVzaXJlZFNpemUgd2hl
biBjbG9zZWQgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IGRlc2lyZWRT
aXplIHdoZW4gZXJyb3JlZCAKLVBBU1MgUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTog
Z2V0UmVhZGVyKCksIHRoZW4gcmVsZWFzZUxvY2soKSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gd2l0
aCBieXRlIHNvdXJjZTogZ2V0UmVhZGVyKCkgd2l0aCBtb2RlIHNldCB0byBieW9iLCB0aGVuIHJl
bGVhc2VMb2NrKCkgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IFRlc3Qg
dGhhdCBjbG9zaW5nIGEgc3RyZWFtIGRvZXMgbm90IHJlbGVhc2UgYSByZWFkZXIgYXV0b21hdGlj
YWxseSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogVGVzdCB0aGF0IGNs
b3NpbmcgYSBzdHJlYW0gZG9lcyBub3QgcmVsZWFzZSBhIEJZT0IgcmVhZGVyIGF1dG9tYXRpY2Fs
bHkgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IFRlc3QgdGhhdCBlcnJv
cmluZyBhIHN0cmVhbSBkb2VzIG5vdCByZWxlYXNlIGEgcmVhZGVyIGF1dG9tYXRpY2FsbHkgCi1Q
QVNTIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IFRlc3QgdGhhdCBlcnJvcmluZyBh
IHN0cmVhbSBkb2VzIG5vdCByZWxlYXNlIGEgQllPQiByZWFkZXIgYXV0b21hdGljYWxseSAKLVBB
U1MgUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogcmVsZWFzZUxvY2soKSBvbiBSZWFk
YWJsZVN0cmVhbVJlYWRlciB3aXRoIHBlbmRpbmcgcmVhZCgpIG11c3QgdGhyb3cgCi1QQVNTIFJl
YWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IEF1dG9tYXRpYyBwdWxsKCkgYWZ0ZXIgc3Rh
cnQoKSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogQXV0b21hdGljIHB1
bGwoKSBhZnRlciBzdGFydCgpIGFuZCByZWFkKCkgCi1GQUlMIFJlYWRhYmxlU3RyZWFtIHdpdGgg
Ynl0ZSBzb3VyY2U6IGF1dG9BbGxvY2F0ZUNodW5rU2l6ZSBhc3NlcnRfZXF1YWxzOiBwdWxsKCkg
bXVzdCBoYXZlIGJlZW4gaW52b2tlZCB0d2ljZSBleHBlY3RlZCAyIGJ1dCBnb3QgMQotUEFTUyBS
ZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBNaXggb2YgYXV0byBhbGxvY2F0ZSBhbmQg
QllPQiAKLVBBU1MgUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogQXV0b21hdGljIHB1
bGwoKSBhZnRlciBzdGFydCgpIGFuZCByZWFkKHZpZXcpIAotUEFTUyBSZWFkYWJsZVN0cmVhbSB3
aXRoIGJ5dGUgc291cmNlOiBlbnF1ZXVlKCksIGdldFJlYWRlcigpLCB0aGVuIHJlYWQoKSAKLVBB
U1MgUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogUHVzaCBzb3VyY2UgdGhhdCBkb2Vz
bid0IHVuZGVyc3RhbmQgcHVsbCBzaWduYWwgCi1GQUlMIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0
ZSBzb3VyY2U6IHB1bGwoKSBmdW5jdGlvbiBpcyBub3QgY2FsbGFibGUgYXNzZXJ0X3Rocm93czog
Y29uc3RydWN0b3Igc2hvdWxkIHRocm93IGZ1bmN0aW9uICIoKSA9PiBuZXcgUmVhZGFibGVTdHJl
YW0oewotICAgIHB1bGw6ICdmb28nLAotICAgIHR5cGU6ICdieXRlcycKLSAgfSkiIGRpZCBub3Qg
dGhyb3cKLVBBU1MgUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogZW5xdWV1ZSgpIHdp
dGggVWludDE2QXJyYXksIGdldFJlYWRlcigpLCB0aGVuIHJlYWQoKSAKLVBBU1MgUmVhZGFibGVT
dHJlYW0gd2l0aCBieXRlIHNvdXJjZTogZW5xdWV1ZSgpLCByZWFkKHZpZXcpIHBhcnRpYWxseSwg
dGhlbiByZWFkKCkgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IGdldFJl
YWRlcigpLCBlbnF1ZXVlKCksIGNsb3NlKCksIHRoZW4gcmVhZCgpIAotUEFTUyBSZWFkYWJsZVN0
cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBlbnF1ZXVlKCksIGNsb3NlKCksIGdldFJlYWRlcigpLCB0
aGVuIHJlYWQoKSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogUmVzcG9u
ZCB0byBwdWxsKCkgYnkgZW5xdWV1ZSgpIAotUEFTUyBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUg
c291cmNlOiBSZXNwb25kIHRvIHB1bGwoKSBieSBlbnF1ZXVlKCkgYXN5bmNocm9ub3VzbHkgCi1U
SU1FT1VUIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IFJlc3BvbmQgdG8gbXVsdGlw
bGUgcHVsbCgpIGJ5IHNlcGFyYXRlIGVucXVldWUoKSBUZXN0IHRpbWVkIG91dAotTk9UUlVOIFJl
YWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IHJlYWQodmlldyksIHRoZW4gcmVzcG9uZCgp
IAotTk9UUlVOIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IHJlYWQodmlldyksIHRo
ZW4gcmVzcG9uZCgpIHdpdGggYSB0cmFuc2ZlcnJlZCBBcnJheUJ1ZmZlciAKLU5PVFJVTiBSZWFk
YWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiByZWFkKHZpZXcpLCB0aGVuIHJlc3BvbmQoKSB3
aXRoIHRvbyBiaWcgdmFsdWUgCi1OT1RSVU4gUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJj
ZTogcmVzcG9uZCgzKSB0byByZWFkKHZpZXcpIHdpdGggMiBlbGVtZW50IFVpbnQxNkFycmF5IGVu
cXVldWVzIHRoZSAxIGJ5dGUgcmVtYWluZGVyIAotTk9UUlVOIFJlYWRhYmxlU3RyZWFtIHdpdGgg
Ynl0ZSBzb3VyY2U6IGVucXVldWUoKSwgZ2V0UmVhZGVyKCksIHRoZW4gcmVhZCh2aWV3KSAKLU5P
VFJVTiBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBlbnF1ZXVlKCksIGdldFJlYWRl
cigpLCB0aGVuIGNhbmNlbCgpIChtb2RlID0gbm90IEJZT0IpIAotTk9UUlVOIFJlYWRhYmxlU3Ry
ZWFtIHdpdGggYnl0ZSBzb3VyY2U6IGVucXVldWUoKSwgZ2V0UmVhZGVyKCksIHRoZW4gY2FuY2Vs
KCkgKG1vZGUgPSBCWU9CKSAKLU5PVFJVTiBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNl
OiBnZXRSZWFkZXIoKSwgcmVhZCh2aWV3KSwgdGhlbiBjYW5jZWwoKSAKLU5PVFJVTiBSZWFkYWJs
ZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBjYW5jZWwoKSB3aXRoIHBhcnRpYWxseSBmaWxsZWQg
cGVuZGluZyBwdWxsKCkgcmVxdWVzdCAKLU5PVFJVTiBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUg
c291cmNlOiBlbnF1ZXVlKCksIGdldFJlYWRlcigpLCB0aGVuIHJlYWQodmlldykgd2hlcmUgdmll
dy5idWZmZXIgaXMgbm90IGZ1bGx5IGNvdmVyZWQgYnkgdmlldyAKLU5PVFJVTiBSZWFkYWJsZVN0
cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBNdWx0aXBsZSBlbnF1ZXVlKCksIGdldFJlYWRlcigpLCB0
aGVuIHJlYWQodmlldykgCi1OT1RSVU4gUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTog
ZW5xdWV1ZSgpLCBnZXRSZWFkZXIoKSwgdGhlbiByZWFkKHZpZXcpIHdpdGggYSBiaWdnZXIgdmll
dyAKLU5PVFJVTiBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBlbnF1ZXVlKCksIGdl
dFJlYWRlcigpLCB0aGVuIHJlYWQodmlldykgd2l0aCBhIHNtYWxsZXIgdmlld3MgCi1OT1RSVU4g
UmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogZW5xdWV1ZSgpIDEgYnl0ZSwgZ2V0UmVh
ZGVyKCksIHRoZW4gcmVhZCh2aWV3KSB3aXRoIFVpbnQxNkFycmF5IAotTk9UUlVOIFJlYWRhYmxl
U3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IGVucXVldWUoKSAzIGJ5dGUsIGdldFJlYWRlcigpLCB0
aGVuIHJlYWQodmlldykgd2l0aCAyLWVsZW1lbnQgVWludDE2QXJyYXkgCi1OT1RSVU4gUmVhZGFi
bGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogcmVhZCh2aWV3KSB3aXRoIFVpbnQxNkFycmF5IG9u
IGNsb3NlKCktZCBzdHJlYW0gd2l0aCAxIGJ5dGUgZW5xdWV1ZSgpLWQgbXVzdCBmYWlsIAotTk9U
UlVOIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IEEgc3RyZWFtIG11c3QgYmUgZXJy
b3JlZCBpZiBjbG9zZSgpLWQgYmVmb3JlIGZ1bGZpbGxpbmcgcmVhZCh2aWV3KSB3aXRoIFVpbnQx
NkFycmF5IAotUEFTUyBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBUaHJvdyBpZiBj
bG9zZSgpLWVkIG1vcmUgdGhhbiBvbmNlIAotUEFTUyBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUg
c291cmNlOiBUaHJvdyBvbiBlbnF1ZXVlKCkgYWZ0ZXIgY2xvc2UoKSAKLU5PVFJVTiBSZWFkYWJs
ZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiByZWFkKHZpZXcpLCB0aGVuIHJlc3BvbmQoKSBhbmQg
Y2xvc2UoKSBpbiBwdWxsKCkgCi1OT1RSVU4gUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJj
ZTogcmVhZCh2aWV3KSB3aXRoIFVpbnQzMkFycmF5LCB0aGVuIGZpbGwgaXQgYnkgbXVsdGlwbGUg
cmVzcG9uZCgpIGNhbGxzIAotTk9UUlVOIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6
IHJlYWQoKSB0d2ljZSwgdGhlbiBlbnF1ZXVlKCkgdHdpY2UgCi1OT1RSVU4gUmVhZGFibGVTdHJl
YW0gd2l0aCBieXRlIHNvdXJjZTogTXVsdGlwbGUgcmVhZCh2aWV3KSwgY2xvc2UoKSBhbmQgcmVz
cG9uZCgpIAotTk9UUlVOIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IE11bHRpcGxl
IHJlYWQodmlldyksIGJpZyBlbnF1ZXVlKCkgCi1OT1RSVU4gUmVhZGFibGVTdHJlYW0gd2l0aCBi
eXRlIHNvdXJjZTogTXVsdGlwbGUgcmVhZCh2aWV3KSBhbmQgbXVsdGlwbGUgZW5xdWV1ZSgpIAot
Tk9UUlVOIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IHJlYWQodmlldykgd2l0aCBw
YXNzaW5nIHVuZGVmaW5lZCBhcyB2aWV3IG11c3QgZmFpbCAKLU5PVFJVTiBSZWFkYWJsZVN0cmVh
bSB3aXRoIGJ5dGUgc291cmNlOiByZWFkKHZpZXcpIHdpdGggemVyby1sZW5ndGggdmlldyBtdXN0
IGZhaWwgCi1OT1RSVU4gUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogcmVhZCh2aWV3
KSB3aXRoIHBhc3NpbmcgYW4gZW1wdHkgb2JqZWN0IGFzIHZpZXcgbXVzdCBmYWlsIAotTk9UUlVO
IFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IEV2ZW4gcmVhZCh2aWV3KSB3aXRoIHBh
c3NpbmcgQXJyYXlCdWZmZXJWaWV3IGxpa2Ugb2JqZWN0IGFzIHZpZXcgbXVzdCBmYWlsIAotTk9U
UlVOIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IHJlYWQoKSBvbiBhbiBlcnJvcmVk
IHN0cmVhbSAKLU5PVFJVTiBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiByZWFkKCks
IHRoZW4gZXJyb3IoKSAKLU5PVFJVTiBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBy
ZWFkKHZpZXcpIG9uIGFuIGVycm9yZWQgc3RyZWFtIAotTk9UUlVOIFJlYWRhYmxlU3RyZWFtIHdp
dGggYnl0ZSBzb3VyY2U6IHJlYWQodmlldyksIHRoZW4gZXJyb3IoKSAKLU5PVFJVTiBSZWFkYWJs
ZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBUaHJvd2luZyBpbiBwdWxsIGZ1bmN0aW9uIG11c3Qg
ZXJyb3IgdGhlIHN0cmVhbSAKLU5PVFJVTiBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNl
OiBUaHJvd2luZyBpbiBwdWxsIGluIHJlc3BvbnNlIHRvIHJlYWQoKSBtdXN0IGJlIGlnbm9yZWQg
aWYgdGhlIHN0cmVhbSBpcyBlcnJvcmVkIGluIGl0IAotTk9UUlVOIFJlYWRhYmxlU3RyZWFtIHdp
dGggYnl0ZSBzb3VyY2U6IFRocm93aW5nIGluIHB1bGwgaW4gcmVzcG9uc2UgdG8gcmVhZCh2aWV3
KSBmdW5jdGlvbiBtdXN0IGVycm9yIHRoZSBzdHJlYW0gCi1OT1RSVU4gUmVhZGFibGVTdHJlYW0g
d2l0aCBieXRlIHNvdXJjZTogVGhyb3dpbmcgaW4gcHVsbCBpbiByZXNwb25zZSB0byByZWFkKHZp
ZXcpIG11c3QgYmUgaWdub3JlZCBpZiB0aGUgc3RyZWFtIGlzIGVycm9yZWQgaW4gaXQgCi1OT1RS
VU4gY2FsbGluZyByZXNwb25kKCkgdHdpY2Ugb24gdGhlIHNhbWUgYnlvYlJlcXVlc3Qgc2hvdWxk
IHRocm93IAotTk9UUlVOIGNhbGxpbmcgcmVzcG9uZFdpdGhOZXdWaWV3KCkgdHdpY2Ugb24gdGhl
IHNhbWUgYnlvYlJlcXVlc3Qgc2hvdWxkIHRocm93IAotTk9UUlVOIGNhbGxpbmcgcmVzcG9uZCgw
KSB0d2ljZSBvbiB0aGUgc2FtZSBieW9iUmVxdWVzdCBzaG91bGQgdGhyb3cgZXZlbiB3aGVuIGNs
b3NlZCAKLU5PVFJVTiBwdWxsKCkgcmVzb2x2aW5nIHNob3VsZCBub3QgbWFrZSByZWxlYXNlTG9j
aygpIHBvc3NpYmxlIAotTk9UUlVOIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IGRl
ZmF1bHQgcmVhZGVyICsgYXV0b0FsbG9jYXRlQ2h1bmtTaXplICsgYnlvYlJlcXVlc3QgaW50ZXJh
Y3Rpb24gCi1QQVNTIFJlYWRhYmxlU3RyZWFtQllPQlJlYWRlciBjYW4gYmUgY29uc3RydWN0ZWQg
ZGlyZWN0bHkgCi1QQVNTIFJlYWRhYmxlU3RyZWFtQllPQlJlYWRlciBjb25zdHJ1Y3RvciByZXF1
aXJlcyBhIFJlYWRhYmxlU3RyZWFtIGFyZ3VtZW50IAotUEFTUyBSZWFkYWJsZVN0cmVhbUJZT0JS
ZWFkZXIgY29uc3RydWN0b3IgcmVxdWlyZXMgYW4gdW5sb2NrZWQgUmVhZGFibGVTdHJlYW0gCi1Q
QVNTIFJlYWRhYmxlU3RyZWFtQllPQlJlYWRlciBjb25zdHJ1Y3RvciByZXF1aXJlcyBhIFJlYWRh
YmxlU3RyZWFtIHdpdGggdHlwZSAiYnl0ZXMiIAotUEFTUyBSZWFkYWJsZVN0cmVhbSBjb25zdHJ1
Y3RvciBzaG91bGQgbm90IGFjY2VwdCBhIHN0cmF0ZWd5IHdpdGggYSBzaXplIGRlZmluZWQgaWYg
dHlwZSBpcyAiYnl0ZXMiIAotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL2dlbmVyYWwu
ZGVkaWNhdGVkd29ya2VyLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL2dlbmVyYWwuZGVkaWNhdGVk
d29ya2VyLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg2ZTQ4MDEzOWU4OTE3
MmNjY2QyYTA4ZjE0MTdkZDMzOThmNTMyOGEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFtcy9nZW5lcmFsLmRlZGljYXRlZHdvcmtl
ci5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08
bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08dGl0bGU+Z2VuZXJhbC5qcyBkZWRpY2F0ZWQgd29ya2Vy
IHdyYXBwZXIgZmlsZTwvdGl0bGU+Ci0KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJu
ZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVw
b3J0LmpzIj48L3NjcmlwdD4KLQotPHNjcmlwdD4KLSd1c2Ugc3RyaWN0JzsKLWZldGNoX3Rlc3Rz
X2Zyb21fd29ya2VyKG5ldyBXb3JrZXIoJ2dlbmVyYWwuanMnKSk7Ci08L3NjcmlwdD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMvZ2VuZXJhbC5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFtcy9n
ZW5lcmFsLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcxN2YzODYzODcyMjli
NzUxZmVjM2UxYzE5N2M3MDNiMWU4NzdiZmIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFtcy9nZW5lcmFsLmh0bWwKKysrIC9kZXYv
bnVsbApAQCAtMSwxMSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9InV0
Zi04Ij4KLTx0aXRsZT5nZW5lcmFsLmpzIGJyb3dzZXIgY29udGV4dCB3cmFwcGVyIGZpbGU8L3Rp
dGxlPgotCi08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+
Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+
Ci0KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvcnMtdXRpbHMuanMiPjwvc2NyaXB0PgotPHNj
cmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KLQotPHNjcmlw
dCBzcmM9ImdlbmVyYWwuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFt
cy9nZW5lcmFsLmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFtcy9nZW5lcmFsLmpzCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAzOWRkNzA4MGJjN2ExMWRjM2E0Mzg3MjExN2JjMWY5NDcwOGYyOGVk
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRl
LXN0cmVhbXMvZ2VuZXJhbC5qcworKysgL2Rldi9udWxsCkBAIC0xLDIxMjYgKzAsMCBAQAotJ3Vz
ZSBzdHJpY3QnOwotCi1pZiAoc2VsZi5pbXBvcnRTY3JpcHRzKSB7Ci0gIHNlbGYuaW1wb3J0U2Ny
aXB0cygnLi4vcmVzb3VyY2VzL3JzLXV0aWxzLmpzJyk7Ci0gIHNlbGYuaW1wb3J0U2NyaXB0cygn
Li4vcmVzb3VyY2VzL3Rlc3QtdXRpbHMuanMnKTsKLSAgc2VsZi5pbXBvcnRTY3JpcHRzKCcvcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzLmpzJyk7Ci19Ci0KLWNvbnN0IGVycm9yMSA9IG5ldyBFcnJvcign
ZXJyb3IxJyk7Ci1lcnJvcjEubmFtZSA9ICdlcnJvcjEnOwotCi10ZXN0KCgpID0+IHsKLSAgYXNz
ZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IG5ldyBSZWFkYWJsZVN0cmVhbSgpLmdl
dFJlYWRlcih7IG1vZGU6ICdieW9iJyB9KSk7Ci19LCAnZ2V0UmVhZGVyKHttb2RlOiAiYnlvYiJ9
KSB0aHJvd3Mgb24gbm9uLWJ5dGVzIHN0cmVhbXMnKTsKLQotCi10ZXN0KCgpID0+IHsKLSAgLy8g
Q29uc3RydWN0aW5nIFJlYWRhYmxlU3RyZWFtIHdpdGggYW4gZW1wdHkgdW5kZXJseWluZyBieXRl
IHNvdXJjZSBvYmplY3QgYXMgcGFyYW1ldGVyIHNob3VsZG4ndCB0aHJvdy4KLSAgbmV3IFJlYWRh
YmxlU3RyZWFtKHsgdHlwZTogJ2J5dGVzJyB9KS5nZXRSZWFkZXIoeyBtb2RlOiAnYnlvYicgfSk7
Ci0gIC8vIENvbnN0cnVjdG9yIG11c3QgcGVyZm9ybSBUb1N0cmluZyh0eXBlKS4KLSAgbmV3IFJl
YWRhYmxlU3RyZWFtKHsgdHlwZTogeyB0b1N0cmluZygpIHtyZXR1cm4gJ2J5dGVzJzt9IH0gfSkK
LSAgICAuZ2V0UmVhZGVyKHsgbW9kZTogJ2J5b2InIH0pOwotICBuZXcgUmVhZGFibGVTdHJlYW0o
eyB0eXBlOiB7IHRvU3RyaW5nOiBudWxsLCB2YWx1ZU9mKCkge3JldHVybiAnYnl0ZXMnO30gfSB9
KQotICAgIC5nZXRSZWFkZXIoeyBtb2RlOiAnYnlvYicgfSk7Ci19LCAnUmVhZGFibGVTdHJlYW0g
d2l0aCBieXRlIHNvdXJjZSBjYW4gYmUgY29uc3RydWN0ZWQgd2l0aCBubyBlcnJvcnMnKTsKLQot
dGVzdCgoKSA9PiB7Ci0gIGNvbnN0IFJlYWRhYmxlU3RyZWFtQllPQlJlYWRlciA9IG5ldyBSZWFk
YWJsZVN0cmVhbSh7IHR5cGU6ICdieXRlcycgfSkuZ2V0UmVhZGVyKHsgbW9kZTogJ2J5b2InIH0p
LmNvbnN0cnVjdG9yOwotICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7IHR5cGU6ICdi
eXRlcycgfSk7Ci0KLSAgbGV0IHJlYWRlciA9IHJzLmdldFJlYWRlcih7IG1vZGU6IHsgdG9TdHJp
bmcoKSB7IHJldHVybiAnYnlvYic7IH0gfSB9KTsKLSAgYXNzZXJ0X3RydWUocmVhZGVyIGluc3Rh
bmNlb2YgUmVhZGFibGVTdHJlYW1CWU9CUmVhZGVyLCAnbXVzdCBnaXZlIGEgQllPQiByZWFkZXIn
KTsKLSAgcmVhZGVyLnJlbGVhc2VMb2NrKCk7Ci0KLSAgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKHsg
bW9kZTogeyB0b1N0cmluZzogbnVsbCwgdmFsdWVPZigpIHtyZXR1cm4gJ2J5b2InO30gfSB9KTsK
LSAgYXNzZXJ0X3RydWUocmVhZGVyIGluc3RhbmNlb2YgUmVhZGFibGVTdHJlYW1CWU9CUmVhZGVy
LCAnbXVzdCBnaXZlIGEgQllPQiByZWFkZXInKTsKLSAgcmVhZGVyLnJlbGVhc2VMb2NrKCk7Ci0K
LSAgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKHsgbW9kZTogJ2J5b2InLCBub3Rtb2RlOiAnaWdub3Jl
ZCcgfSk7Ci0gIGFzc2VydF90cnVlKHJlYWRlciBpbnN0YW5jZW9mIFJlYWRhYmxlU3RyZWFtQllP
QlJlYWRlciwgJ211c3QgZ2l2ZSBhIEJZT0IgcmVhZGVyJyk7Ci19LCAnZ2V0UmVhZGVyKHttb2Rl
fSkgbXVzdCBwZXJmb3JtIFRvU3RyaW5nKCknKTsKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLSAg
bGV0IHN0YXJ0Q2FsbGVkID0gZmFsc2U7Ci0gIGxldCBzdGFydENhbGxlZEJlZm9yZVB1bGwgPSBm
YWxzZTsKLSAgbGV0IGRlc2lyZWRTaXplOwotICBsZXQgY29udHJvbGxlcjsKLQotICBsZXQgcmVz
b2x2ZVRlc3RQcm9taXNlOwotICBjb25zdCB0ZXN0UHJvbWlzZSA9IG5ldyBQcm9taXNlKHJlc29s
dmUgPT4gewotICAgIHJlc29sdmVUZXN0UHJvbWlzZSA9IHJlc29sdmU7Ci0gIH0pOwotCi0gIG5l
dyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgY29udHJvbGxlciA9IGM7
Ci0gICAgICBzdGFydENhbGxlZCA9IHRydWU7Ci0gICAgfSwKLSAgICBwdWxsKCkgewotICAgICAg
c3RhcnRDYWxsZWRCZWZvcmVQdWxsID0gc3RhcnRDYWxsZWQ7Ci0gICAgICBkZXNpcmVkU2l6ZSA9
IGNvbnRyb2xsZXIuZGVzaXJlZFNpemU7Ci0gICAgICByZXNvbHZlVGVzdFByb21pc2UoKTsKLSAg
ICB9LAotICAgIHR5cGU6ICdieXRlcycKLSAgfSwgewotICAgIGhpZ2hXYXRlck1hcms6IDI1Ngot
ICB9KTsKLQotICByZXR1cm4gdGVzdFByb21pc2UudGhlbigoKSA9PiB7Ci0gICAgYXNzZXJ0X3Ry
dWUoc3RhcnRDYWxsZWRCZWZvcmVQdWxsLCAnc3RhcnQgc2hvdWxkIGJlIGNhbGxlZCBiZWZvcmUg
cHVsbCcpOwotICAgIGFzc2VydF9lcXVhbHMoZGVzaXJlZFNpemUsIDI1NiwgJ2Rlc2lyZWRTaXpl
IHNob3VsZCBlcXVhbCBoaWdoV2F0ZXJNYXJrJyk7Ci0gIH0pOwotCi19LCAnUmVhZGFibGVTdHJl
YW0gd2l0aCBieXRlIHNvdXJjZTogQ29uc3RydWN0IGFuZCBleHBlY3Qgc3RhcnQgYW5kIHB1bGwg
YmVpbmcgY2FsbGVkJyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0gIGxldCBwdWxsQ291bnQg
PSAwOwotICBsZXQgY2hlY2tlZE5vUHVsbCA9IGZhbHNlOwotCi0gIGxldCByZXNvbHZlVGVzdFBy
b21pc2U7Ci0gIGNvbnN0IHRlc3RQcm9taXNlID0gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7Ci0g
ICAgcmVzb2x2ZVRlc3RQcm9taXNlID0gcmVzb2x2ZTsKLSAgfSk7Ci0gIGxldCByZXNvbHZlU3Rh
cnRQcm9taXNlOwotCi0gIG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoKSB7Ci0gICAg
ICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7Ci0gICAgICAgIHJlc29sdmVTdGFydFBy
b21pc2UgPSByZXNvbHZlOwotICAgICAgfSk7Ci0gICAgfSwKLSAgICBwdWxsKCkgewotICAgICAg
aWYgKGNoZWNrZWROb1B1bGwpIHsKLSAgICAgICAgcmVzb2x2ZVRlc3RQcm9taXNlKCk7Ci0gICAg
ICB9Ci0KLSAgICAgICsrcHVsbENvdW50OwotICAgIH0sCi0gICAgdHlwZTogJ2J5dGVzJwotICB9
LCB7Ci0gICAgaGlnaFdhdGVyTWFyazogMjU2Ci0gIH0pOwotCi0gIFByb21pc2UucmVzb2x2ZSgp
LnRoZW4oKCkgPT4gewotICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAwKTsKLSAgICBjaGVj
a2VkTm9QdWxsID0gdHJ1ZTsKLSAgICByZXNvbHZlU3RhcnRQcm9taXNlKCk7Ci0gIH0pOwotCi0g
IHJldHVybiB0ZXN0UHJvbWlzZTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3Vy
Y2U6IE5vIGF1dG9tYXRpYyBwdWxsIGNhbGwgaWYgc3RhcnQgZG9lc25cJ3QgZmluaXNoJyk7Ci0K
LXByb21pc2VfdGVzdCh0ID0+IHsKLSAgbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBwdWxsOiB0
LnVucmVhY2hlZF9mdW5jKCdwdWxsKCkgc2hvdWxkIG5vdCBiZSBjYWxsZWQnKSwKLSAgICB0eXBl
OiAnYnl0ZXMnCi0gIH0sIHsKLSAgICBoaWdoV2F0ZXJNYXJrOiAwCi0gIH0pOwotCi0gIHJldHVy
biBQcm9taXNlLnJlc29sdmUoKTsKLX0sICdSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNl
OiBDb25zdHJ1Y3Qgd2l0aCBoaWdoV2F0ZXJNYXJrIG9mIDAnKTsKLQotdGVzdCgoKSA9PiB7Ci0g
IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgYXNzZXJ0X2VxdWFs
cyhjLmRlc2lyZWRTaXplLCAxMCwgJ2Rlc2lyZWRTaXplIG11c3Qgc3RhcnQgYXQgdGhlIGhpZ2hX
YXRlck1hcmsnKTsKLSAgICAgIGMuY2xvc2UoKTsKLSAgICAgIGFzc2VydF9lcXVhbHMoYy5kZXNp
cmVkU2l6ZSwgMCwgJ2FmdGVyIGNsb3NpbmcsIGRlc2lyZWRTaXplIG11c3QgYmUgMCcpOwotICAg
IH0sCi0gICAgdHlwZTogJ2J5dGVzJwotICB9LCB7Ci0gICAgaGlnaFdhdGVyTWFyazogMTAKLSAg
fSk7Ci19LCAnUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogZGVzaXJlZFNpemUgd2hl
biBjbG9zZWQnKTsKLQotdGVzdCgoKSA9PiB7Ci0gIG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAg
c3RhcnQoYykgewotICAgICAgYXNzZXJ0X2VxdWFscyhjLmRlc2lyZWRTaXplLCAxMCwgJ2Rlc2ly
ZWRTaXplIG11c3Qgc3RhcnQgYXQgdGhlIGhpZ2hXYXRlck1hcmsnKTsKLSAgICAgIGMuZXJyb3Io
KTsKLSAgICAgIGFzc2VydF9lcXVhbHMoYy5kZXNpcmVkU2l6ZSwgbnVsbCwgJ2FmdGVyIGVycm9y
aW5nLCBkZXNpcmVkU2l6ZSBtdXN0IGJlIG51bGwnKTsKLSAgICB9LAotICAgIHR5cGU6ICdieXRl
cycKLSAgfSwgewotICAgIGhpZ2hXYXRlck1hcms6IDEwCi0gIH0pOwotfSwgJ1JlYWRhYmxlU3Ry
ZWFtIHdpdGggYnl0ZSBzb3VyY2U6IGRlc2lyZWRTaXplIHdoZW4gZXJyb3JlZCcpOwotCi1wcm9t
aXNlX3Rlc3QodCA9PiB7Ci0gIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0g
ICAgdHlwZTogJ2J5dGVzJwotICB9KTsKLQotICBjb25zdCByZWFkZXIgPSBzdHJlYW0uZ2V0UmVh
ZGVyKCk7Ci0gIHJlYWRlci5yZWxlYXNlTG9jaygpOwotCi0gIHJldHVybiBwcm9taXNlX3JlamVj
dHModCwgbmV3IFR5cGVFcnJvcigpLCByZWFkZXIuY2xvc2VkLCAnY2xvc2VkIG11c3QgcmVqZWN0
Jyk7Ci19LCAnUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogZ2V0UmVhZGVyKCksIHRo
ZW4gcmVsZWFzZUxvY2soKScpOwotCi1wcm9taXNlX3Rlc3QodCA9PiB7Ci0gIGNvbnN0IHN0cmVh
bSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgdHlwZTogJ2J5dGVzJwotICB9KTsKLQotICBj
b25zdCByZWFkZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKHsgbW9kZTogJ2J5b2InIH0pOwotICByZWFk
ZXIucmVsZWFzZUxvY2soKTsKLQotICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHQsIG5ldyBUeXBl
RXJyb3IoKSwgcmVhZGVyLmNsb3NlZCwgJ2Nsb3NlZCBtdXN0IHJlamVjdCcpOwotfSwgJ1JlYWRh
YmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IGdldFJlYWRlcigpIHdpdGggbW9kZSBzZXQgdG8g
YnlvYiwgdGhlbiByZWxlYXNlTG9jaygpJyk7Ci0KLXByb21pc2VfdGVzdCh0ID0+IHsKLSAgY29u
c3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0gICAgICBj
LmNsb3NlKCk7Ci0gICAgfSwKLSAgICBwdWxsOiB0LnVucmVhY2hlZF9mdW5jKCdwdWxsKCkgc2hv
dWxkIG5vdCBiZSBjYWxsZWQnKSwKLSAgICB0eXBlOiAnYnl0ZXMnCi0gIH0pOwotCi0gIGNvbnN0
IHJlYWRlciA9IHN0cmVhbS5nZXRSZWFkZXIoKTsKLQotICByZXR1cm4gcmVhZGVyLmNsb3NlZC50
aGVuKCgpID0+IHsKLSAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gc3Ry
ZWFtLmdldFJlYWRlcigpLCAnZ2V0UmVhZGVyKCkgbXVzdCB0aHJvdycpOwotICB9KTsKLX0sICdS
ZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBUZXN0IHRoYXQgY2xvc2luZyBhIHN0cmVh
bSBkb2VzIG5vdCByZWxlYXNlIGEgcmVhZGVyIGF1dG9tYXRpY2FsbHknKTsKLQotcHJvbWlzZV90
ZXN0KHQgPT4gewotICBjb25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0
YXJ0KGMpIHsKLSAgICAgIGMuY2xvc2UoKTsKLSAgICB9LAotICAgIHB1bGw6IHQudW5yZWFjaGVk
X2Z1bmMoJ3B1bGwoKSBzaG91bGQgbm90IGJlIGNhbGxlZCcpLAotICAgIHR5cGU6ICdieXRlcycK
LSAgfSk7Ci0KLSAgY29uc3QgcmVhZGVyID0gc3RyZWFtLmdldFJlYWRlcih7IG1vZGU6ICdieW9i
JyB9KTsKLQotICByZXR1cm4gcmVhZGVyLmNsb3NlZC50aGVuKCgpID0+IHsKLSAgICBhc3NlcnRf
dGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gc3RyZWFtLmdldFJlYWRlcih7IG1vZGU6ICdi
eW9iJyB9KSwgJ2dldFJlYWRlcigpIG11c3QgdGhyb3cnKTsKLSAgfSk7Ci19LCAnUmVhZGFibGVT
dHJlYW0gd2l0aCBieXRlIHNvdXJjZTogVGVzdCB0aGF0IGNsb3NpbmcgYSBzdHJlYW0gZG9lcyBu
b3QgcmVsZWFzZSBhIEJZT0IgcmVhZGVyIGF1dG9tYXRpY2FsbHknKTsKLQotcHJvbWlzZV90ZXN0
KHQgPT4gewotICBjb25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0
KGMpIHsKLSAgICAgIGMuZXJyb3IoZXJyb3IxKTsKLSAgICB9LAotICAgIHB1bGw6IHQudW5yZWFj
aGVkX2Z1bmMoJ3B1bGwoKSBzaG91bGQgbm90IGJlIGNhbGxlZCcpLAotICAgIHR5cGU6ICdieXRl
cycKLSAgfSk7Ci0KLSAgY29uc3QgcmVhZGVyID0gc3RyZWFtLmdldFJlYWRlcigpOwotCi0gIHJl
dHVybiBwcm9taXNlX3JlamVjdHModCwgZXJyb3IxLCByZWFkZXIuY2xvc2VkLCAnY2xvc2VkIG11
c3QgcmVqZWN0JykudGhlbigoKSA9PiB7Ci0gICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9y
KCksICgpID0+IHN0cmVhbS5nZXRSZWFkZXIoKSwgJ2dldFJlYWRlcigpIG11c3QgdGhyb3cnKTsK
LSAgfSk7Ci19LCAnUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogVGVzdCB0aGF0IGVy
cm9yaW5nIGEgc3RyZWFtIGRvZXMgbm90IHJlbGVhc2UgYSByZWFkZXIgYXV0b21hdGljYWxseScp
OwotCi1wcm9taXNlX3Rlc3QodCA9PiB7Ci0gIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0
cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgYy5lcnJvcihlcnJvcjEpOwotICAgIH0sCi0g
ICAgcHVsbDogdC51bnJlYWNoZWRfZnVuYygncHVsbCgpIHNob3VsZCBub3QgYmUgY2FsbGVkJyks
Ci0gICAgdHlwZTogJ2J5dGVzJwotICB9KTsKLQotICBjb25zdCByZWFkZXIgPSBzdHJlYW0uZ2V0
UmVhZGVyKHsgbW9kZTogJ2J5b2InIH0pOwotCi0gIHJldHVybiBwcm9taXNlX3JlamVjdHModCwg
ZXJyb3IxLCByZWFkZXIuY2xvc2VkLCAnY2xvc2VkIG11c3QgcmVqZWN0JykudGhlbigoKSA9PiB7
Ci0gICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IHN0cmVhbS5nZXRSZWFk
ZXIoeyBtb2RlOiAnYnlvYicgfSksICdnZXRSZWFkZXIoKSBtdXN0IHRocm93Jyk7Ci0gIH0pOwot
fSwgJ1JlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IFRlc3QgdGhhdCBlcnJvcmluZyBh
IHN0cmVhbSBkb2VzIG5vdCByZWxlYXNlIGEgQllPQiByZWFkZXIgYXV0b21hdGljYWxseScpOwot
Ci10ZXN0KCgpID0+IHsKLSAgY29uc3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAg
ICB0eXBlOiAnYnl0ZXMnCi0gIH0pOwotCi0gIGNvbnN0IHJlYWRlciA9IHN0cmVhbS5nZXRSZWFk
ZXIoKTsKLSAgcmVhZGVyLnJlYWQoKTsKLSAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCks
ICgpID0+IHJlYWRlci5yZWxlYXNlTG9jaygpLCAncmVhZGVyLnJlbGVhc2VMb2NrKCkgbXVzdCB0
aHJvdycpOwotfSwgJ1JlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IHJlbGVhc2VMb2Nr
KCkgb24gUmVhZGFibGVTdHJlYW1SZWFkZXIgd2l0aCBwZW5kaW5nIHJlYWQoKSBtdXN0IHRocm93
Jyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0gIGxldCBwdWxsQ291bnQgPSAwOwotCi0gIGNv
bnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgcHVsbCgpIHsKLSAgICAgICsr
cHVsbENvdW50OwotICAgIH0sCi0gICAgdHlwZTogJ2J5dGVzJwotICB9LCB7Ci0gICAgaGlnaFdh
dGVyTWFyazogOAotICB9KTsKLQotICBzdHJlYW0uZ2V0UmVhZGVyKCk7Ci0KLSAgYXNzZXJ0X2Vx
dWFscyhwdWxsQ291bnQsIDAsICdObyBwdWxsIGFzIHN0YXJ0KCkganVzdCBmaW5pc2hlZCBhbmQg
aXMgbm90IHlldCByZWZsZWN0ZWQgdG8gdGhlIHN0YXRlIG9mIHRoZSBzdHJlYW0nKTsKLQotICBy
ZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiB7Ci0gICAgYXNzZXJ0X2VxdWFscyhw
dWxsQ291bnQsIDEsICdwdWxsIG11c3QgYmUgaW52b2tlZCcpOwotICB9KTsKLX0sICdSZWFkYWJs
ZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBBdXRvbWF0aWMgcHVsbCgpIGFmdGVyIHN0YXJ0KCkn
KTsKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLSAgbGV0IHB1bGxDb3VudCA9IDA7Ci0KLSAgY29u
c3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBwdWxsKCkgewotICAgICAgKytw
dWxsQ291bnQ7Ci0gICAgfSwKLSAgICB0eXBlOiAnYnl0ZXMnCi0gIH0sIHsKLSAgICBoaWdoV2F0
ZXJNYXJrOiAwCi0gIH0pOwotCi0gIGNvbnN0IHJlYWRlciA9IHN0cmVhbS5nZXRSZWFkZXIoKTsK
LSAgcmVhZGVyLnJlYWQoKTsKLQotICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMCwgJ05vIHB1
bGwgYXMgc3RhcnQoKSBqdXN0IGZpbmlzaGVkIGFuZCBpcyBub3QgeWV0IHJlZmxlY3RlZCB0byB0
aGUgc3RhdGUgb2YgdGhlIHN0cmVhbScpOwotCi0gIHJldHVybiBQcm9taXNlLnJlc29sdmUoKS50
aGVuKCgpID0+IHsKLSAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMSwgJ3B1bGwgbXVzdCBi
ZSBpbnZva2VkJyk7Ci0gIH0pOwotfSwgJ1JlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6
IEF1dG9tYXRpYyBwdWxsKCkgYWZ0ZXIgc3RhcnQoKSBhbmQgcmVhZCgpJyk7Ci0KLS8vIFZpZXcg
YnVmZmVycyBhcmUgZGV0YWNoZWQgYWZ0ZXIgcHVsbCgpIHJldHVybnMsIHNvIHJlY29yZCB0aGUg
aW5mb3JtYXRpb24gYXQgdGhlIHRpbWUgdGhhdCBwdWxsKCkgd2FzIGNhbGxlZC4KLWZ1bmN0aW9u
IGV4dHJhY3RWaWV3SW5mbyh2aWV3KSB7Ci0gIHJldHVybiB7Ci0gICAgY29uc3RydWN0b3I6IHZp
ZXcuY29uc3RydWN0b3IsCi0gICAgYnVmZmVyQnl0ZUxlbmd0aDogdmlldy5idWZmZXIuYnl0ZUxl
bmd0aCwKLSAgICBieXRlT2Zmc2V0OiB2aWV3LmJ5dGVPZmZzZXQsCi0gICAgYnl0ZUxlbmd0aDog
dmlldy5ieXRlTGVuZ3RoCi0gIH07Ci19Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0gIGxldCBw
dWxsQ291bnQgPSAwOwotICBsZXQgY29udHJvbGxlcjsKLSAgY29uc3QgYnlvYlJlcXVlc3RzID0g
W107Ci0KLSAgY29uc3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChj
KSB7Ci0gICAgICBjb250cm9sbGVyID0gYzsKLSAgICB9LAotICAgIHB1bGwoKSB7Ci0gICAgICBj
b25zdCBieW9iUmVxdWVzdCA9IGNvbnRyb2xsZXIuYnlvYlJlcXVlc3Q7Ci0gICAgICBjb25zdCB2
aWV3ID0gYnlvYlJlcXVlc3QudmlldzsKLSAgICAgIGJ5b2JSZXF1ZXN0c1twdWxsQ291bnRdID0g
ewotICAgICAgICBkZWZpbmVkOiBieW9iUmVxdWVzdCAhPT0gdW5kZWZpbmVkLAotICAgICAgICB2
aWV3RGVmaW5lZDogdmlldyAhPT0gdW5kZWZpbmVkLAotICAgICAgICB2aWV3SW5mbzogZXh0cmFj
dFZpZXdJbmZvKHZpZXcpCi0gICAgICB9OwotICAgICAgaWYgKHB1bGxDb3VudCA9PT0gMCkgewot
ICAgICAgICB2aWV3WzBdID0gMHgwMTsKLSAgICAgICAgYnlvYlJlcXVlc3QucmVzcG9uZCgxKTsK
LSAgICAgIH0gZWxzZSBpZiAocHVsbENvdW50ID09PSAxKSB7Ci0gICAgICAgIHZpZXdbMF0gPSAw
eDAyOwotICAgICAgICB2aWV3WzFdID0gMHgwMzsKLSAgICAgICAgYnlvYlJlcXVlc3QucmVzcG9u
ZCgyKTsKLSAgICAgIH0KLQotICAgICAgKytwdWxsQ291bnQ7Ci0gICAgfSwKLSAgICB0eXBlOiAn
Ynl0ZXMnLAotICAgIGF1dG9BbGxvY2F0ZUNodW5rU2l6ZTogMTYKLSAgfSwgewotICAgIGhpZ2hX
YXRlck1hcms6IDAKLSAgfSk7Ci0KLSAgY29uc3QgcmVhZGVyID0gc3RyZWFtLmdldFJlYWRlcigp
OwotICBjb25zdCBwMCA9IHJlYWRlci5yZWFkKCk7Ci0gIGNvbnN0IHAxID0gcmVhZGVyLnJlYWQo
KTsKLQotICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMCwgJ05vIHB1bGwoKSBhcyBzdGFydCgp
IGp1c3QgZmluaXNoZWQgYW5kIGlzIG5vdCB5ZXQgcmVmbGVjdGVkIHRvIHRoZSBzdGF0ZSBvZiB0
aGUgc3RyZWFtJyk7Ci0KLSAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCkgPT4gewot
ICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAxLCAncHVsbCgpIG11c3QgaGF2ZSBiZWVuIGlu
dm9rZWQgb25jZScpOwotICAgIGNvbnN0IGJ5b2JSZXF1ZXN0ID0gYnlvYlJlcXVlc3RzWzBdOwot
ICAgIGFzc2VydF90cnVlKGJ5b2JSZXF1ZXN0LmRlZmluZWQsICdmaXJzdCBieW9iUmVxdWVzdCBt
dXN0IG5vdCBiZSB1bmRlZmluZWQnKTsKLSAgICBhc3NlcnRfdHJ1ZShieW9iUmVxdWVzdC52aWV3
RGVmaW5lZCwgJ2ZpcnN0IGJ5b2JSZXF1ZXN0LnZpZXcgbXVzdCBub3QgYmUgdW5kZWZpbmVkJyk7
Ci0gICAgY29uc3Qgdmlld0luZm8gPSBieW9iUmVxdWVzdC52aWV3SW5mbzsKLSAgICBhc3NlcnRf
ZXF1YWxzKHZpZXdJbmZvLmNvbnN0cnVjdG9yLCBVaW50OEFycmF5LCAnZmlyc3Qgdmlldy5jb25z
dHJ1Y3RvciBzaG91bGQgYmUgVWludDhBcnJheScpOwotICAgIGFzc2VydF9lcXVhbHModmlld0lu
Zm8uYnVmZmVyQnl0ZUxlbmd0aCwgMTYsICdmaXJzdCB2aWV3LmJ1ZmZlci5ieXRlTGVuZ3RoIHNo
b3VsZCBiZSAxNicpOwotICAgIGFzc2VydF9lcXVhbHModmlld0luZm8uYnl0ZU9mZnNldCwgMCwg
J2ZpcnN0IHZpZXcuYnl0ZU9mZnNldCBzaG91bGQgYmUgMCcpOwotICAgIGFzc2VydF9lcXVhbHMo
dmlld0luZm8uYnl0ZUxlbmd0aCwgMTYsICdmaXJzdCB2aWV3LmJ5dGVMZW5ndGggc2hvdWxkIGJl
IDE2Jyk7Ci0KLSAgICByZXR1cm4gcDA7Ci0gIH0pLnRoZW4ocmVzdWx0ID0+IHsKLSAgICBhc3Nl
cnRfZXF1YWxzKHB1bGxDb3VudCwgMiwgJ3B1bGwoKSBtdXN0IGhhdmUgYmVlbiBpbnZva2VkIHR3
aWNlJyk7Ci0gICAgY29uc3QgdmFsdWUgPSByZXN1bHQudmFsdWU7Ci0gICAgYXNzZXJ0X25vdF9l
cXVhbHModmFsdWUsIHVuZGVmaW5lZCwgJ2ZpcnN0IHJlYWQgc2hvdWxkIGhhdmUgYSB2YWx1ZScp
OwotICAgIGFzc2VydF9lcXVhbHModmFsdWUuY29uc3RydWN0b3IsIFVpbnQ4QXJyYXksICdmaXJz
dCB2YWx1ZSBzaG91bGQgYmUgYSBVaW50OEFycmF5Jyk7Ci0gICAgYXNzZXJ0X2VxdWFscyh2YWx1
ZS5idWZmZXIuYnl0ZUxlbmd0aCwgMTYsICdmaXJzdCB2YWx1ZS5idWZmZXIuYnl0ZUxlbmd0aCBz
aG91bGQgYmUgMTYnKTsKLSAgICBhc3NlcnRfZXF1YWxzKHZhbHVlLmJ5dGVPZmZzZXQsIDAsICdm
aXJzdCB2YWx1ZS5ieXRlT2Zmc2V0IHNob3VsZCBiZSAwJyk7Ci0gICAgYXNzZXJ0X2VxdWFscyh2
YWx1ZS5ieXRlTGVuZ3RoLCAxLCAnZmlyc3QgdmFsdWUuYnl0ZUxlbmd0aCBzaG91bGQgYmUgMScp
OwotICAgIGFzc2VydF9lcXVhbHModmFsdWVbMF0sIDB4MDEsICdmaXJzdCB2YWx1ZVswXSBzaG91
bGQgYmUgMHgwMScpOwotICAgIGNvbnN0IGJ5b2JSZXF1ZXN0ID0gYnlvYlJlcXVlc3RzWzFdOwot
ICAgIGFzc2VydF90cnVlKGJ5b2JSZXF1ZXN0LmRlZmluZWQsICdzZWNvbmQgYnlvYlJlcXVlc3Qg
bXVzdCBub3QgYmUgdW5kZWZpbmVkJyk7Ci0gICAgYXNzZXJ0X3RydWUoYnlvYlJlcXVlc3Qudmll
d0RlZmluZWQsICdzZWNvbmQgYnlvYlJlcXVlc3QudmlldyBtdXN0IG5vdCBiZSB1bmRlZmluZWQn
KTsKLSAgICBjb25zdCB2aWV3SW5mbyA9IGJ5b2JSZXF1ZXN0LnZpZXdJbmZvOwotICAgIGFzc2Vy
dF9lcXVhbHModmlld0luZm8uY29uc3RydWN0b3IsIFVpbnQ4QXJyYXksICdzZWNvbmQgdmlldy5j
b25zdHJ1Y3RvciBzaG91bGQgYmUgVWludDhBcnJheScpOwotICAgIGFzc2VydF9lcXVhbHModmll
d0luZm8uYnVmZmVyQnl0ZUxlbmd0aCwgMTYsICdzZWNvbmQgdmlldy5idWZmZXIuYnl0ZUxlbmd0
aCBzaG91bGQgYmUgMTYnKTsKLSAgICBhc3NlcnRfZXF1YWxzKHZpZXdJbmZvLmJ5dGVPZmZzZXQs
IDAsICdzZWNvbmQgdmlldy5ieXRlT2Zmc2V0IHNob3VsZCBiZSAwJyk7Ci0gICAgYXNzZXJ0X2Vx
dWFscyh2aWV3SW5mby5ieXRlTGVuZ3RoLCAxNiwgJ3NlY29uZCB2aWV3LmJ5dGVMZW5ndGggc2hv
dWxkIGJlIDE2Jyk7Ci0KLSAgICByZXR1cm4gcDE7Ci0gIH0pLnRoZW4ocmVzdWx0ID0+IHsKLSAg
ICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMiwgJ3B1bGwoKSBzaG91bGQgb25seSBiZSBpbnZv
a2VkIHR3aWNlJyk7Ci0gICAgY29uc3QgdmFsdWUgPSByZXN1bHQudmFsdWU7Ci0gICAgYXNzZXJ0
X25vdF9lcXVhbHModmFsdWUsIHVuZGVmaW5lZCwgJ3NlY29uZCByZWFkIHNob3VsZCBoYXZlIGEg
dmFsdWUnKTsKLSAgICBhc3NlcnRfZXF1YWxzKHZhbHVlLmNvbnN0cnVjdG9yLCBVaW50OEFycmF5
LCAnc2Vjb25kIHZhbHVlIHNob3VsZCBiZSBhIFVpbnQ4QXJyYXknKTsKLSAgICBhc3NlcnRfZXF1
YWxzKHZhbHVlLmJ1ZmZlci5ieXRlTGVuZ3RoLCAxNiwgJ3NlY29uZCB2YWx1ZS5idWZmZXIuYnl0
ZUxlbmd0aCBzaG91bGQgYmUgMTYnKTsKLSAgICBhc3NlcnRfZXF1YWxzKHZhbHVlLmJ5dGVPZmZz
ZXQsIDAsICdzZWNvbmQgdmFsdWUuYnl0ZU9mZnNldCBzaG91bGQgYmUgMCcpOwotICAgIGFzc2Vy
dF9lcXVhbHModmFsdWUuYnl0ZUxlbmd0aCwgMiwgJ3NlY29uZCB2YWx1ZS5ieXRlTGVuZ3RoIHNo
b3VsZCBiZSAyJyk7Ci0gICAgYXNzZXJ0X2VxdWFscyh2YWx1ZVswXSwgMHgwMiwgJ3NlY29uZCB2
YWx1ZVswXSBzaG91bGQgYmUgMHgwMicpOwotICAgIGFzc2VydF9lcXVhbHModmFsdWVbMV0sIDB4
MDMsICdzZWNvbmQgdmFsdWVbMV0gc2hvdWxkIGJlIDB4MDMnKTsKLSAgfSk7Ci19LCAnUmVhZGFi
bGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogYXV0b0FsbG9jYXRlQ2h1bmtTaXplJyk7Ci0KLXBy
b21pc2VfdGVzdCgoKSA9PiB7Ci0gIGxldCBwdWxsQ291bnQgPSAwOwotICBsZXQgY29udHJvbGxl
cjsKLSAgY29uc3QgYnlvYlJlcXVlc3RzID0gW107Ci0KLSAgY29uc3Qgc3RyZWFtID0gbmV3IFJl
YWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0gICAgICBjb250cm9sbGVyID0gYzsKLSAg
ICB9LAotICAgIHB1bGwoKSB7Ci0gICAgICBjb25zdCBieW9iUmVxdWVzdCA9IGNvbnRyb2xsZXIu
YnlvYlJlcXVlc3Q7Ci0gICAgICBjb25zdCB2aWV3ID0gYnlvYlJlcXVlc3QudmlldzsKLSAgICAg
IGJ5b2JSZXF1ZXN0c1twdWxsQ291bnRdID0gewotICAgICAgICBkZWZpbmVkOiBieW9iUmVxdWVz
dCAhPT0gdW5kZWZpbmVkLAotICAgICAgICB2aWV3RGVmaW5lZDogdmlldyAhPT0gdW5kZWZpbmVk
LAotICAgICAgICB2aWV3SW5mbzogZXh0cmFjdFZpZXdJbmZvKHZpZXcpCi0gICAgICB9OwotICAg
ICAgaWYgKHB1bGxDb3VudCA9PT0gMCkgewotICAgICAgICB2aWV3WzBdID0gMHgwMTsKLSAgICAg
ICAgYnlvYlJlcXVlc3QucmVzcG9uZCgxKTsKLSAgICAgIH0gZWxzZSBpZiAocHVsbENvdW50ID09
PSAxKSB7Ci0gICAgICAgIHZpZXdbMF0gPSAweDAyOwotICAgICAgICB2aWV3WzFdID0gMHgwMzsK
LSAgICAgICAgYnlvYlJlcXVlc3QucmVzcG9uZCgyKTsKLSAgICAgIH0KLQotICAgICAgKytwdWxs
Q291bnQ7Ci0gICAgfSwKLSAgICB0eXBlOiAnYnl0ZXMnLAotICAgIGF1dG9BbGxvY2F0ZUNodW5r
U2l6ZTogMTYKLSAgfSwgewotICAgIGhpZ2hXYXRlck1hcms6IDAKLSAgfSk7Ci0KLSAgY29uc3Qg
cmVhZGVyID0gc3RyZWFtLmdldFJlYWRlcigpOwotICByZXR1cm4gcmVhZGVyLnJlYWQoKS50aGVu
KHJlc3VsdCA9PiB7Ci0gICAgY29uc3QgdmFsdWUgPSByZXN1bHQudmFsdWU7Ci0gICAgYXNzZXJ0
X25vdF9lcXVhbHModmFsdWUsIHVuZGVmaW5lZCwgJ2ZpcnN0IHJlYWQgc2hvdWxkIGhhdmUgYSB2
YWx1ZScpOwotICAgIGFzc2VydF9lcXVhbHModmFsdWUuY29uc3RydWN0b3IsIFVpbnQ4QXJyYXks
ICdmaXJzdCB2YWx1ZSBzaG91bGQgYmUgYSBVaW50OEFycmF5Jyk7Ci0gICAgYXNzZXJ0X2VxdWFs
cyh2YWx1ZS5idWZmZXIuYnl0ZUxlbmd0aCwgMTYsICdmaXJzdCB2YWx1ZS5idWZmZXIuYnl0ZUxl
bmd0aCBzaG91bGQgYmUgMTYnKTsKLSAgICBhc3NlcnRfZXF1YWxzKHZhbHVlLmJ5dGVPZmZzZXQs
IDAsICdmaXJzdCB2YWx1ZS5ieXRlT2Zmc2V0IHNob3VsZCBiZSAwJyk7Ci0gICAgYXNzZXJ0X2Vx
dWFscyh2YWx1ZS5ieXRlTGVuZ3RoLCAxLCAnZmlyc3QgdmFsdWUuYnl0ZUxlbmd0aCBzaG91bGQg
YmUgMScpOwotICAgIGFzc2VydF9lcXVhbHModmFsdWVbMF0sIDB4MDEsICdmaXJzdCB2YWx1ZVsw
XSBzaG91bGQgYmUgMHgwMScpOwotICAgIGNvbnN0IGJ5b2JSZXF1ZXN0ID0gYnlvYlJlcXVlc3Rz
WzBdOwotICAgIGFzc2VydF90cnVlKGJ5b2JSZXF1ZXN0LmRlZmluZWQsICdmaXJzdCBieW9iUmVx
dWVzdCBtdXN0IG5vdCBiZSB1bmRlZmluZWQnKTsKLSAgICBhc3NlcnRfdHJ1ZShieW9iUmVxdWVz
dC52aWV3RGVmaW5lZCwgJ2ZpcnN0IGJ5b2JSZXF1ZXN0LnZpZXcgbXVzdCBub3QgYmUgdW5kZWZp
bmVkJyk7Ci0gICAgY29uc3Qgdmlld0luZm8gPSBieW9iUmVxdWVzdC52aWV3SW5mbzsKLSAgICBh
c3NlcnRfZXF1YWxzKHZpZXdJbmZvLmNvbnN0cnVjdG9yLCBVaW50OEFycmF5LCAnZmlyc3Qgdmll
dy5jb25zdHJ1Y3RvciBzaG91bGQgYmUgVWludDhBcnJheScpOwotICAgIGFzc2VydF9lcXVhbHMo
dmlld0luZm8uYnVmZmVyQnl0ZUxlbmd0aCwgMTYsICdmaXJzdCB2aWV3LmJ1ZmZlci5ieXRlTGVu
Z3RoIHNob3VsZCBiZSAxNicpOwotICAgIGFzc2VydF9lcXVhbHModmlld0luZm8uYnl0ZU9mZnNl
dCwgMCwgJ2ZpcnN0IHZpZXcuYnl0ZU9mZnNldCBzaG91bGQgYmUgMCcpOwotICAgIGFzc2VydF9l
cXVhbHModmlld0luZm8uYnl0ZUxlbmd0aCwgMTYsICdmaXJzdCB2aWV3LmJ5dGVMZW5ndGggc2hv
dWxkIGJlIDE2Jyk7Ci0KLSAgICByZWFkZXIucmVsZWFzZUxvY2soKTsKLSAgICBjb25zdCBieW9i
UmVhZGVyID0gc3RyZWFtLmdldFJlYWRlcih7IG1vZGU6ICdieW9iJyB9KTsKLSAgICByZXR1cm4g
YnlvYlJlYWRlci5yZWFkKG5ldyBVaW50OEFycmF5KDMyKSk7Ci0gIH0pLnRoZW4ocmVzdWx0ID0+
IHsKLSAgICBjb25zdCB2YWx1ZSA9IHJlc3VsdC52YWx1ZTsKLSAgICBhc3NlcnRfbm90X2VxdWFs
cyh2YWx1ZSwgdW5kZWZpbmVkLCAnc2Vjb25kIHJlYWQgc2hvdWxkIGhhdmUgYSB2YWx1ZScpOwot
ICAgIGFzc2VydF9lcXVhbHModmFsdWUuY29uc3RydWN0b3IsIFVpbnQ4QXJyYXksICdzZWNvbmQg
dmFsdWUgc2hvdWxkIGJlIGEgVWludDhBcnJheScpOwotICAgIGFzc2VydF9lcXVhbHModmFsdWUu
YnVmZmVyLmJ5dGVMZW5ndGgsIDMyLCAnc2Vjb25kIHZhbHVlLmJ1ZmZlci5ieXRlTGVuZ3RoIHNo
b3VsZCBiZSAzMicpOwotICAgIGFzc2VydF9lcXVhbHModmFsdWUuYnl0ZU9mZnNldCwgMCwgJ3Nl
Y29uZCB2YWx1ZS5ieXRlT2Zmc2V0IHNob3VsZCBiZSAwJyk7Ci0gICAgYXNzZXJ0X2VxdWFscyh2
YWx1ZS5ieXRlTGVuZ3RoLCAyLCAnc2Vjb25kIHZhbHVlLmJ5dGVMZW5ndGggc2hvdWxkIGJlIDIn
KTsKLSAgICBhc3NlcnRfZXF1YWxzKHZhbHVlWzBdLCAweDAyLCAnc2Vjb25kIHZhbHVlWzBdIHNo
b3VsZCBiZSAweDAyJyk7Ci0gICAgYXNzZXJ0X2VxdWFscyh2YWx1ZVsxXSwgMHgwMywgJ3NlY29u
ZCB2YWx1ZVsxXSBzaG91bGQgYmUgMHgwMycpOwotICAgIGNvbnN0IGJ5b2JSZXF1ZXN0ID0gYnlv
YlJlcXVlc3RzWzFdOwotICAgIGFzc2VydF90cnVlKGJ5b2JSZXF1ZXN0LmRlZmluZWQsICdzZWNv
bmQgYnlvYlJlcXVlc3QgbXVzdCBub3QgYmUgdW5kZWZpbmVkJyk7Ci0gICAgYXNzZXJ0X3RydWUo
YnlvYlJlcXVlc3Qudmlld0RlZmluZWQsICdzZWNvbmQgYnlvYlJlcXVlc3QudmlldyBtdXN0IG5v
dCBiZSB1bmRlZmluZWQnKTsKLSAgICBjb25zdCB2aWV3SW5mbyA9IGJ5b2JSZXF1ZXN0LnZpZXdJ
bmZvOwotICAgIGFzc2VydF9lcXVhbHModmlld0luZm8uY29uc3RydWN0b3IsIFVpbnQ4QXJyYXks
ICdzZWNvbmQgdmlldy5jb25zdHJ1Y3RvciBzaG91bGQgYmUgVWludDhBcnJheScpOwotICAgIGFz
c2VydF9lcXVhbHModmlld0luZm8uYnVmZmVyQnl0ZUxlbmd0aCwgMzIsICdzZWNvbmQgdmlldy5i
dWZmZXIuYnl0ZUxlbmd0aCBzaG91bGQgYmUgMzInKTsKLSAgICBhc3NlcnRfZXF1YWxzKHZpZXdJ
bmZvLmJ5dGVPZmZzZXQsIDAsICdzZWNvbmQgdmlldy5ieXRlT2Zmc2V0IHNob3VsZCBiZSAwJyk7
Ci0gICAgYXNzZXJ0X2VxdWFscyh2aWV3SW5mby5ieXRlTGVuZ3RoLCAzMiwgJ3NlY29uZCB2aWV3
LmJ5dGVMZW5ndGggc2hvdWxkIGJlIDMyJyk7Ci0gICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQs
IDIsICdwdWxsQ291bnQgc2hvdWxkIGJlIDInKTsKLSAgfSk7Ci19LCAnUmVhZGFibGVTdHJlYW0g
d2l0aCBieXRlIHNvdXJjZTogTWl4IG9mIGF1dG8gYWxsb2NhdGUgYW5kIEJZT0InKTsKLQotcHJv
bWlzZV90ZXN0KCgpID0+IHsKLSAgbGV0IHB1bGxDb3VudCA9IDA7Ci0KLSAgY29uc3Qgc3RyZWFt
ID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBwdWxsKCkgewotICAgICAgKytwdWxsQ291bnQ7
Ci0gICAgfSwKLSAgICB0eXBlOiAnYnl0ZXMnCi0gIH0sIHsKLSAgICBoaWdoV2F0ZXJNYXJrOiAw
Ci0gIH0pOwotCi0gIGNvbnN0IHJlYWRlciA9IHN0cmVhbS5nZXRSZWFkZXIoKTsKLSAgcmVhZGVy
LnJlYWQobmV3IFVpbnQ4QXJyYXkoOCkpOwotCi0gIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAw
LCAnTm8gcHVsbCBhcyBzdGFydCgpIGp1c3QgZmluaXNoZWQgYW5kIGlzIG5vdCB5ZXQgcmVmbGVj
dGVkIHRvIHRoZSBzdGF0ZSBvZiB0aGUgc3RyZWFtJyk7Ci0KLSAgcmV0dXJuIFByb21pc2UucmVz
b2x2ZSgpLnRoZW4oKCkgPT4gewotICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAxLCAncHVs
bCBtdXN0IGJlIGludm9rZWQnKTsKLSAgfSk7Ci19LCAnUmVhZGFibGVTdHJlYW0gd2l0aCBieXRl
IHNvdXJjZTogQXV0b21hdGljIHB1bGwoKSBhZnRlciBzdGFydCgpIGFuZCByZWFkKHZpZXcpJyk7
Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0gIGxldCBwdWxsQ291bnQgPSAwOwotCi0gIGxldCBj
b250cm9sbGVyOwotICBsZXQgZGVzaXJlZFNpemVJblN0YXJ0OwotICBsZXQgZGVzaXJlZFNpemVJ
blB1bGw7Ci0KLSAgY29uc3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFy
dChjKSB7Ci0gICAgICBjLmVucXVldWUobmV3IFVpbnQ4QXJyYXkoMTYpKTsKLSAgICAgIGRlc2ly
ZWRTaXplSW5TdGFydCA9IGMuZGVzaXJlZFNpemU7Ci0gICAgICBjb250cm9sbGVyID0gYzsKLSAg
ICB9LAotICAgIHB1bGwoKSB7Ci0gICAgICArK3B1bGxDb3VudDsKLQotICAgICAgaWYgKHB1bGxD
b3VudCA9PT0gMSkgewotICAgICAgICBkZXNpcmVkU2l6ZUluUHVsbCA9IGNvbnRyb2xsZXIuZGVz
aXJlZFNpemU7Ci0gICAgICB9Ci0gICAgfSwKLSAgICB0eXBlOiAnYnl0ZXMnCi0gIH0sIHsKLSAg
ICBoaWdoV2F0ZXJNYXJrOiA4Ci0gIH0pOwotCi0gIHJldHVybiBQcm9taXNlLnJlc29sdmUoKS50
aGVuKCgpID0+IHsKLSAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMCwgJ05vIHB1bGwgYXMg
dGhlIHF1ZXVlIHdhcyBmaWxsZWQgYnkgc3RhcnQoKScpOwotICAgIGFzc2VydF9lcXVhbHMoZGVz
aXJlZFNpemVJblN0YXJ0LCAtOCwgJ2Rlc2lyZWRTaXplIGFmdGVyIGVucXVldWUoKSBpbiBzdGFy
dCgpJyk7Ci0KLSAgICBjb25zdCByZWFkZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKCk7Ci0KLSAgICBj
b25zdCBwcm9taXNlID0gcmVhZGVyLnJlYWQoKTsKLSAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3Vu
dCwgMSwgJ1RoZSBmaXJzdCBwdWxsKCkgc2hvdWxkIGJlIG1hZGUgb24gcmVhZCgpJyk7Ci0gICAg
YXNzZXJ0X2VxdWFscyhkZXNpcmVkU2l6ZUluUHVsbCwgOCwgJ2Rlc2lyZWRTaXplIGluIHB1bGwo
KScpOwotCi0gICAgcmV0dXJuIHByb21pc2UudGhlbihyZXN1bHQgPT4gewotICAgICAgYXNzZXJ0
X2VxdWFscyhyZXN1bHQuZG9uZSwgZmFsc2UsICdyZXN1bHQuZG9uZScpOwotCi0gICAgICBjb25z
dCB2aWV3ID0gcmVzdWx0LnZhbHVlOwotICAgICAgYXNzZXJ0X2VxdWFscyh2aWV3LmNvbnN0cnVj
dG9yLCBVaW50OEFycmF5LCAndmlldy5jb25zdHJ1Y3RvcicpOwotICAgICAgYXNzZXJ0X2VxdWFs
cyh2aWV3LmJ1ZmZlci5ieXRlTGVuZ3RoLCAxNiwgJ3ZpZXcuYnVmZmVyJyk7Ci0gICAgICBhc3Nl
cnRfZXF1YWxzKHZpZXcuYnl0ZU9mZnNldCwgMCwgJ3ZpZXcuYnl0ZU9mZnNldCcpOwotICAgICAg
YXNzZXJ0X2VxdWFscyh2aWV3LmJ5dGVMZW5ndGgsIDE2LCAndmlldy5ieXRlTGVuZ3RoJyk7Ci0g
ICAgfSk7Ci0gIH0pOwotfSwgJ1JlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IGVucXVl
dWUoKSwgZ2V0UmVhZGVyKCksIHRoZW4gcmVhZCgpJyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7
Ci0gIGxldCBjb250cm9sbGVyOwotCi0gIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVh
bSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgY29udHJvbGxlciA9IGM7Ci0gICAgfSwKLSAgICB0
eXBlOiAnYnl0ZXMnCi0gIH0pOwotCi0gIGNvbnN0IHJlYWRlciA9IHN0cmVhbS5nZXRSZWFkZXIo
KTsKLQotICBjb25zdCBwcm9taXNlID0gcmVhZGVyLnJlYWQoKS50aGVuKHJlc3VsdCA9PiB7Ci0g
ICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQuZG9uZSwgZmFsc2UpOwotCi0gICAgY29uc3QgdmlldyA9
IHJlc3VsdC52YWx1ZTsKLSAgICBhc3NlcnRfZXF1YWxzKHZpZXcuY29uc3RydWN0b3IsIFVpbnQ4
QXJyYXkpOwotICAgIGFzc2VydF9lcXVhbHModmlldy5idWZmZXIuYnl0ZUxlbmd0aCwgMSk7Ci0g
ICAgYXNzZXJ0X2VxdWFscyh2aWV3LmJ5dGVPZmZzZXQsIDApOwotICAgIGFzc2VydF9lcXVhbHMo
dmlldy5ieXRlTGVuZ3RoLCAxKTsKLSAgfSk7Ci0KLSAgY29udHJvbGxlci5lbnF1ZXVlKG5ldyBV
aW50OEFycmF5KDEpKTsKLQotICByZXR1cm4gcHJvbWlzZTsKLX0sICdSZWFkYWJsZVN0cmVhbSB3
aXRoIGJ5dGUgc291cmNlOiBQdXNoIHNvdXJjZSB0aGF0IGRvZXNuXCd0IHVuZGVyc3RhbmQgcHVs
bCBzaWduYWwnKTsKLQotdGVzdCgoKSA9PiB7Ci0gIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJv
cigpLCAoKSA9PiBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHB1bGw6ICdmb28nLAotICAgIHR5
cGU6ICdieXRlcycKLSAgfSksICdjb25zdHJ1Y3RvciBzaG91bGQgdGhyb3cnKTsKLX0sICdSZWFk
YWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBwdWxsKCkgZnVuY3Rpb24gaXMgbm90IGNhbGxh
YmxlJyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0gIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFk
YWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgYy5lbnF1ZXVlKG5ldyBVaW50MTZB
cnJheSgxNikpOwotICAgIH0sCi0gICAgdHlwZTogJ2J5dGVzJwotICB9KTsKLQotICBjb25zdCBy
ZWFkZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKCk7Ci0KLSAgcmV0dXJuIHJlYWRlci5yZWFkKCkudGhl
bihyZXN1bHQgPT4gewotICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LmRvbmUsIGZhbHNlKTsKLQot
ICAgIGNvbnN0IHZpZXcgPSByZXN1bHQudmFsdWU7Ci0gICAgYXNzZXJ0X2VxdWFscyh2aWV3LmNv
bnN0cnVjdG9yLCBVaW50OEFycmF5KTsKLSAgICBhc3NlcnRfZXF1YWxzKHZpZXcuYnVmZmVyLmJ5
dGVMZW5ndGgsIDMyKTsKLSAgICBhc3NlcnRfZXF1YWxzKHZpZXcuYnl0ZU9mZnNldCwgMCk7Ci0g
ICAgYXNzZXJ0X2VxdWFscyh2aWV3LmJ5dGVMZW5ndGgsIDMyKTsKLSAgfSk7Ci19LCAnUmVhZGFi
bGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogZW5xdWV1ZSgpIHdpdGggVWludDE2QXJyYXksIGdl
dFJlYWRlcigpLCB0aGVuIHJlYWQoKScpOwotCi1wcm9taXNlX3Rlc3QodCA9PiB7Ci0gIGNvbnN0
IHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgY29u
c3QgdmlldyA9IG5ldyBVaW50OEFycmF5KDE2KTsKLSAgICAgIHZpZXdbMF0gPSAweDAxOwotICAg
ICAgdmlld1s4XSA9IDB4MDI7Ci0gICAgICBjLmVucXVldWUodmlldyk7Ci0gICAgfSwKLSAgICBw
dWxsOiB0LnVucmVhY2hlZF9mdW5jKCdwdWxsKCkgc2hvdWxkIG5vdCBiZSBjYWxsZWQnKSwKLSAg
ICB0eXBlOiAnYnl0ZXMnCi0gIH0pOwotCi0gIGNvbnN0IGJ5b2JSZWFkZXIgPSBzdHJlYW0uZ2V0
UmVhZGVyKHsgbW9kZTogJ2J5b2InIH0pOwotCi0gIHJldHVybiBieW9iUmVhZGVyLnJlYWQobmV3
IFVpbnQ4QXJyYXkoOCkpLnRoZW4ocmVzdWx0ID0+IHsKLSAgICBhc3NlcnRfZXF1YWxzKHJlc3Vs
dC5kb25lLCBmYWxzZSwgJ2RvbmUnKTsKLQotICAgIGNvbnN0IHZpZXcgPSByZXN1bHQudmFsdWU7
Ci0gICAgYXNzZXJ0X2VxdWFscyh2aWV3LmNvbnN0cnVjdG9yLCBVaW50OEFycmF5LCAndmFsdWUu
Y29uc3RydWN0b3InKTsKLSAgICBhc3NlcnRfZXF1YWxzKHZpZXcuYnVmZmVyLmJ5dGVMZW5ndGgs
IDgsICd2YWx1ZS5idWZmZXIuYnl0ZUxlbmd0aCcpOwotICAgIGFzc2VydF9lcXVhbHModmlldy5i
eXRlT2Zmc2V0LCAwLCAndmFsdWUuYnl0ZU9mZnNldCcpOwotICAgIGFzc2VydF9lcXVhbHModmll
dy5ieXRlTGVuZ3RoLCA4LCAndmFsdWUuYnl0ZUxlbmd0aCcpOwotICAgIGFzc2VydF9lcXVhbHMo
dmlld1swXSwgMHgwMSk7Ci0KLSAgICBieW9iUmVhZGVyLnJlbGVhc2VMb2NrKCk7Ci0KLSAgICBj
b25zdCByZWFkZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKCk7Ci0KLSAgICByZXR1cm4gcmVhZGVyLnJl
YWQoKTsKLSAgfSkudGhlbihyZXN1bHQgPT4gewotICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LmRv
bmUsIGZhbHNlLCAnZG9uZScpOwotCi0gICAgY29uc3QgdmlldyA9IHJlc3VsdC52YWx1ZTsKLSAg
ICBhc3NlcnRfZXF1YWxzKHZpZXcuY29uc3RydWN0b3IsIFVpbnQ4QXJyYXksICd2YWx1ZS5jb25z
dHJ1Y3RvcicpOwotICAgIGFzc2VydF9lcXVhbHModmlldy5idWZmZXIuYnl0ZUxlbmd0aCwgMTYs
ICd2YWx1ZS5idWZmZXIuYnl0ZUxlbmd0aCcpOwotICAgIGFzc2VydF9lcXVhbHModmlldy5ieXRl
T2Zmc2V0LCA4LCAndmFsdWUuYnl0ZU9mZnNldCcpOwotICAgIGFzc2VydF9lcXVhbHModmlldy5i
eXRlTGVuZ3RoLCA4LCAndmFsdWUuYnl0ZUxlbmd0aCcpOwotICAgIGFzc2VydF9lcXVhbHModmll
d1swXSwgMHgwMik7Ci0gIH0pOwotfSwgJ1JlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6
IGVucXVldWUoKSwgcmVhZCh2aWV3KSBwYXJ0aWFsbHksIHRoZW4gcmVhZCgpJyk7Ci0KLXByb21p
c2VfdGVzdCh0ID0+IHsKLSAgbGV0IGNvbnRyb2xsZXI7Ci0KLSAgY29uc3Qgc3RyZWFtID0gbmV3
IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0gICAgICBjb250cm9sbGVyID0gYzsK
LSAgICB9LAotICAgIHB1bGw6IHQudW5yZWFjaGVkX2Z1bmMoJ3B1bGwoKSBzaG91bGQgbm90IGJl
IGNhbGxlZCcpLAotICAgIHR5cGU6ICdieXRlcycKLSAgfSk7Ci0KLSAgY29uc3QgcmVhZGVyID0g
c3RyZWFtLmdldFJlYWRlcigpOwotCi0gIGNvbnRyb2xsZXIuZW5xdWV1ZShuZXcgVWludDhBcnJh
eSgxNikpOwotICBjb250cm9sbGVyLmNsb3NlKCk7Ci0KLSAgcmV0dXJuIHJlYWRlci5yZWFkKCku
dGhlbihyZXN1bHQgPT4gewotICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LmRvbmUsIGZhbHNlLCAn
ZG9uZScpOwotCi0gICAgY29uc3QgdmlldyA9IHJlc3VsdC52YWx1ZTsKLSAgICBhc3NlcnRfZXF1
YWxzKHZpZXcuYnl0ZU9mZnNldCwgMCwgJ2J5dGVPZmZzZXQnKTsKLSAgICBhc3NlcnRfZXF1YWxz
KHZpZXcuYnl0ZUxlbmd0aCwgMTYsICdieXRlTGVuZ3RoJyk7Ci0KLSAgICByZXR1cm4gcmVhZGVy
LnJlYWQoKTsKLSAgfSkudGhlbihyZXN1bHQgPT4gewotICAgIGFzc2VydF9lcXVhbHMocmVzdWx0
LmRvbmUsIHRydWUsICdkb25lJyk7Ci0gICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQudmFsdWUsIHVu
ZGVmaW5lZCwgJ3ZhbHVlJyk7Ci0gIH0pOwotfSwgJ1JlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBz
b3VyY2U6IGdldFJlYWRlcigpLCBlbnF1ZXVlKCksIGNsb3NlKCksIHRoZW4gcmVhZCgpJyk7Ci0K
LXByb21pc2VfdGVzdCh0ID0+IHsKLSAgY29uc3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFt
KHsKLSAgICBzdGFydChjKSB7Ci0gICAgICBjLmVucXVldWUobmV3IFVpbnQ4QXJyYXkoMTYpKTsK
LSAgICAgIGMuY2xvc2UoKTsKLSAgICB9LAotICAgIHB1bGw6IHQudW5yZWFjaGVkX2Z1bmMoJ3B1
bGwoKSBzaG91bGQgbm90IGJlIGNhbGxlZCcpLAotICAgIHR5cGU6ICdieXRlcycKLSAgfSk7Ci0K
LSAgY29uc3QgcmVhZGVyID0gc3RyZWFtLmdldFJlYWRlcigpOwotCi0gIHJldHVybiByZWFkZXIu
cmVhZCgpLnRoZW4ocmVzdWx0ID0+IHsKLSAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdC5kb25lLCBm
YWxzZSwgJ2RvbmUnKTsKLQotICAgIGNvbnN0IHZpZXcgPSByZXN1bHQudmFsdWU7Ci0gICAgYXNz
ZXJ0X2VxdWFscyh2aWV3LmJ5dGVPZmZzZXQsIDAsICdieXRlT2Zmc2V0Jyk7Ci0gICAgYXNzZXJ0
X2VxdWFscyh2aWV3LmJ5dGVMZW5ndGgsIDE2LCAnYnl0ZUxlbmd0aCcpOwotCi0gICAgcmV0dXJu
IHJlYWRlci5yZWFkKCk7Ci0gIH0pLnRoZW4ocmVzdWx0ID0+IHsKLSAgICBhc3NlcnRfZXF1YWxz
KHJlc3VsdC5kb25lLCB0cnVlLCAnZG9uZScpOwotICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LnZh
bHVlLCB1bmRlZmluZWQsICd2YWx1ZScpOwotICB9KTsKLX0sICdSZWFkYWJsZVN0cmVhbSB3aXRo
IGJ5dGUgc291cmNlOiBlbnF1ZXVlKCksIGNsb3NlKCksIGdldFJlYWRlcigpLCB0aGVuIHJlYWQo
KScpOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotICBsZXQgY29udHJvbGxlcjsKLSAgbGV0IGJ5
b2JSZXF1ZXN0OwotCi0gIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAg
c3RhcnQoYykgewotICAgICAgY29udHJvbGxlciA9IGM7Ci0gICAgfSwKLSAgICBwdWxsKCkgewot
ICAgICAgY29udHJvbGxlci5lbnF1ZXVlKG5ldyBVaW50OEFycmF5KDE2KSk7Ci0gICAgICBieW9i
UmVxdWVzdCA9IGNvbnRyb2xsZXIuYnlvYlJlcXVlc3Q7Ci0gICAgfSwKLSAgICB0eXBlOiAnYnl0
ZXMnCi0gIH0pOwotCi0gIGNvbnN0IHJlYWRlciA9IHN0cmVhbS5nZXRSZWFkZXIoKTsKLQotICBy
ZXR1cm4gcmVhZGVyLnJlYWQoKS50aGVuKHJlc3VsdCA9PiB7Ci0gICAgYXNzZXJ0X2VxdWFscyhy
ZXN1bHQuZG9uZSwgZmFsc2UsICdkb25lJyk7Ci0gICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQudmFs
dWUuYnl0ZUxlbmd0aCwgMTYsICdieXRlTGVuZ3RoJyk7Ci0gICAgYXNzZXJ0X2VxdWFscyhieW9i
UmVxdWVzdCwgdW5kZWZpbmVkLCAnYnlvYlJlcXVlc3QgbXVzdCBiZSB1bmRlZmluZWQnKTsKLSAg
fSk7Ci19LCAnUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogUmVzcG9uZCB0byBwdWxs
KCkgYnkgZW5xdWV1ZSgpJyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0gIGxldCBwdWxsQ291
bnQgPSAwOwotCi0gIGxldCBjb250cm9sbGVyOwotICBsZXQgYnlvYlJlcXVlc3Q7Ci0gIGNvbnN0
IGRlc2lyZWRTaXplcyA9IFtdOwotCi0gIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVh
bSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgY29udHJvbGxlciA9IGM7Ci0gICAgfSwKLSAgICBw
dWxsKCkgewotICAgICAgYnlvYlJlcXVlc3QgPSBjb250cm9sbGVyLmJ5b2JSZXF1ZXN0OwotICAg
ICAgZGVzaXJlZFNpemVzLnB1c2goY29udHJvbGxlci5kZXNpcmVkU2l6ZSk7Ci0gICAgICBjb250
cm9sbGVyLmVucXVldWUobmV3IFVpbnQ4QXJyYXkoMSkpOwotICAgICAgZGVzaXJlZFNpemVzLnB1
c2goY29udHJvbGxlci5kZXNpcmVkU2l6ZSk7Ci0gICAgICBjb250cm9sbGVyLmVucXVldWUobmV3
IFVpbnQ4QXJyYXkoMSkpOwotICAgICAgZGVzaXJlZFNpemVzLnB1c2goY29udHJvbGxlci5kZXNp
cmVkU2l6ZSk7Ci0KLSAgICAgICsrcHVsbENvdW50OwotICAgIH0sCi0gICAgdHlwZTogJ2J5dGVz
JwotICB9LCB7Ci0gICAgaGlnaFdhdGVyTWFyazogMAotICB9KTsKLQotICBjb25zdCByZWFkZXIg
PSBzdHJlYW0uZ2V0UmVhZGVyKCk7Ci0KLSAgY29uc3QgcDAgPSByZWFkZXIucmVhZCgpOwotICBj
b25zdCBwMSA9IHJlYWRlci5yZWFkKCk7Ci0gIGNvbnN0IHAyID0gcmVhZGVyLnJlYWQoKTsKLQot
ICAvLyBSZXNwb25kIHRvIHRoZSBmaXJzdCBwdWxsIGNhbGwuCi0gIGNvbnRyb2xsZXIuZW5xdWV1
ZShuZXcgVWludDhBcnJheSgxKSk7Ci0KLSAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDAsICdw
dWxsQ291bnQgYWZ0ZXIgdGhlIGVucXVldWUoKSBvdXRzaWRlIHB1bGwnKTsKLQotICByZXR1cm4g
UHJvbWlzZS5hbGwoW3AwLCBwMSwgcDJdKS50aGVuKHJlc3VsdCA9PiB7Ci0gICAgYXNzZXJ0X2Vx
dWFscyhwdWxsQ291bnQsIDEsICdwdWxsQ291bnQgYWZ0ZXIgY29tcGxldGlvbiBvZiBhbGwgcmVh
ZCgpcycpOwotCi0gICAgYXNzZXJ0X2VxdWFscyhyZXN1bHRbMF0uZG9uZSwgZmFsc2UsICdyZXN1
bHRbMF0uZG9uZScpOwotICAgIGFzc2VydF9lcXVhbHMocmVzdWx0WzBdLnZhbHVlLmJ5dGVMZW5n
dGgsIDEsICdyZXN1bHRbMF0udmFsdWUuYnl0ZUxlbmd0aCcpOwotICAgIGFzc2VydF9lcXVhbHMo
cmVzdWx0WzFdLmRvbmUsIGZhbHNlLCAncmVzdWx0WzFdLmRvbmUnKTsKLSAgICBhc3NlcnRfZXF1
YWxzKHJlc3VsdFsxXS52YWx1ZS5ieXRlTGVuZ3RoLCAxLCAncmVzdWx0WzFdLnZhbHVlLmJ5dGVM
ZW5ndGgnKTsKLSAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdFsyXS5kb25lLCBmYWxzZSwgJ3Jlc3Vs
dFsyXS5kb25lJyk7Ci0gICAgYXNzZXJ0X2VxdWFscyhyZXN1bHRbMl0udmFsdWUuYnl0ZUxlbmd0
aCwgMSwgJ3Jlc3VsdFsyXS52YWx1ZS5ieXRlTGVuZ3RoJyk7Ci0gICAgYXNzZXJ0X2VxdWFscyhi
eW9iUmVxdWVzdCwgdW5kZWZpbmVkLCAnYnlvYlJlcXVlc3Qgc2hvdWxkIGJlIHVuZGVmaW5lZCcp
OwotICAgIGFzc2VydF9lcXVhbHMoZGVzaXJlZFNpemVzWzBdLCAwLCAnZGVzaXJlZFNpemUgb24g
cHVsbCBzaG91bGQgYmUgMCcpOwotICAgIGFzc2VydF9lcXVhbHMoZGVzaXJlZFNpemVzWzFdLCAw
LCAnZGVzaXJlZFNpemUgYWZ0ZXIgMXN0IGVucXVldWUoKSBzaG91bGQgYmUgMCcpOwotICAgIGFz
c2VydF9lcXVhbHMoZGVzaXJlZFNpemVzWzJdLCAwLCAnZGVzaXJlZFNpemUgYWZ0ZXIgMm5kIGVu
cXVldWUoKSBzaG91bGQgYmUgMCcpOwotICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAxLCAn
cHVsbCgpIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBvbmNlJyk7Ci0gIH0pOwotfSwgJ1JlYWRhYmxl
U3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IFJlc3BvbmQgdG8gcHVsbCgpIGJ5IGVucXVldWUoKSBh
c3luY2hyb25vdXNseScpOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotICBsZXQgcHVsbENvdW50
ID0gMDsKLQotICBsZXQgYnlvYlJlcXVlc3Q7Ci0gIGNvbnN0IGRlc2lyZWRTaXplcyA9IFtdOwot
Ci0gIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgcHVsbChjKSB7Ci0g
ICAgICBieW9iUmVxdWVzdCA9IGMuYnlvYlJlcXVlc3Q7Ci0gICAgICBkZXNpcmVkU2l6ZXMucHVz
aChjLmRlc2lyZWRTaXplKTsKLQotICAgICAgaWYgKHB1bGxDb3VudCA8IDMpIHsKLSAgICAgICAg
Yy5lbnF1ZXVlKG5ldyBVaW50OEFycmF5KDEpKTsKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIGMu
Y2xvc2UoKTsKLSAgICAgIH0KLQotICAgICAgKytwdWxsQ291bnQ7Ci0gICAgfSwKLSAgICB0eXBl
OiAnYnl0ZXMnCi0gIH0sIHsKLSAgICBoaWdoV2F0ZXJNYXJrOiAyNTYKLSAgfSk7Ci0KLSAgY29u
c3QgcmVhZGVyID0gc3RyZWFtLmdldFJlYWRlcigpOwotCi0gIGNvbnN0IHAwID0gcmVhZGVyLnJl
YWQoKTsKLSAgY29uc3QgcDEgPSByZWFkZXIucmVhZCgpOwotICBjb25zdCBwMiA9IHJlYWRlci5y
ZWFkKCk7Ci0KLSAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDAsICdObyBwdWxsIGFzIHN0YXJ0
KCkganVzdCBmaW5pc2hlZCBhbmQgaXMgbm90IHlldCByZWZsZWN0ZWQgdG8gdGhlIHN0YXRlIG9m
IHRoZSBzdHJlYW0nKTsKLQotICByZXR1cm4gUHJvbWlzZS5hbGwoW3AwLCBwMSwgcDJdKS50aGVu
KHJlc3VsdCA9PiB7Ci0gICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDQsICdwdWxsQ291bnQg
YWZ0ZXIgY29tcGxldGlvbiBvZiBhbGwgcmVhZCgpcycpOwotCi0gICAgYXNzZXJ0X2VxdWFscyhy
ZXN1bHRbMF0uZG9uZSwgZmFsc2UsICdyZXN1bHRbMF0uZG9uZScpOwotICAgIGFzc2VydF9lcXVh
bHMocmVzdWx0WzBdLnZhbHVlLmJ5dGVMZW5ndGgsIDEsICdyZXN1bHRbMF0udmFsdWUuYnl0ZUxl
bmd0aCcpOwotICAgIGFzc2VydF9lcXVhbHMocmVzdWx0WzFdLmRvbmUsIGZhbHNlLCAncmVzdWx0
WzFdLmRvbmUnKTsKLSAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdFsxXS52YWx1ZS5ieXRlTGVuZ3Ro
LCAxLCAncmVzdWx0WzFdLnZhbHVlLmJ5dGVMZW5ndGgnKTsKLSAgICBhc3NlcnRfZXF1YWxzKHJl
c3VsdFsyXS5kb25lLCBmYWxzZSwgJ3Jlc3VsdFsyXS5kb25lJyk7Ci0gICAgYXNzZXJ0X2VxdWFs
cyhyZXN1bHRbMl0udmFsdWUuYnl0ZUxlbmd0aCwgMSwgJ3Jlc3VsdFsyXS52YWx1ZS5ieXRlTGVu
Z3RoJyk7Ci0gICAgYXNzZXJ0X2VxdWFscyhieW9iUmVxdWVzdCwgdW5kZWZpbmVkLCAnYnlvYlJl
cXVlc3Qgc2hvdWxkIGJlIHVuZGVmaW5lZCcpOwotICAgIGFzc2VydF9lcXVhbHMoZGVzaXJlZFNp
emVzWzBdLCAyNTYsICdkZXNpcmVkU2l6ZSBvbiBwdWxsIHNob3VsZCBiZSAyNTYnKTsKLSAgICBh
c3NlcnRfZXF1YWxzKGRlc2lyZWRTaXplc1sxXSwgMjU2LCAnZGVzaXJlZFNpemUgYWZ0ZXIgMXN0
IGVucXVldWUoKSBzaG91bGQgYmUgMjU2Jyk7Ci0gICAgYXNzZXJ0X2VxdWFscyhkZXNpcmVkU2l6
ZXNbMl0sIDI1NiwgJ2Rlc2lyZWRTaXplIGFmdGVyIDJuZCBlbnF1ZXVlKCkgc2hvdWxkIGJlIDI1
NicpOwotICAgIGFzc2VydF9lcXVhbHMoZGVzaXJlZFNpemVzWzNdLCAyNTYsICdkZXNpcmVkU2l6
ZSBhZnRlciAzcmQgZW5xdWV1ZSgpIHNob3VsZCBiZSAyNTYnKTsKLSAgfSk7Ci19LCAnUmVhZGFi
bGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogUmVzcG9uZCB0byBtdWx0aXBsZSBwdWxsKCkgYnkg
c2VwYXJhdGUgZW5xdWV1ZSgpJyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0gIGxldCBjb250
cm9sbGVyOwotCi0gIGxldCBwdWxsQ291bnQgPSAwOwotICBjb25zdCBieW9iUmVxdWVzdERlZmlu
ZWQgPSBbXTsKLQotICBjb25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0
YXJ0KGMpIHsKLSAgICAgIGNvbnRyb2xsZXIgPSBjOwotICAgIH0sCi0gICAgcHVsbCgpIHsKLSAg
ICAgIGJ5b2JSZXF1ZXN0RGVmaW5lZC5wdXNoKGNvbnRyb2xsZXIuYnlvYlJlcXVlc3QgIT09IHVu
ZGVmaW5lZCk7Ci0KLSAgICAgIGNvbnN0IHZpZXcgPSBjb250cm9sbGVyLmJ5b2JSZXF1ZXN0LnZp
ZXc7Ci0gICAgICB2aWV3WzBdID0gMHgwMTsKLSAgICAgIGNvbnRyb2xsZXIuYnlvYlJlcXVlc3Qu
cmVzcG9uZCgxKTsKLQotICAgICAgYnlvYlJlcXVlc3REZWZpbmVkLnB1c2goY29udHJvbGxlci5i
eW9iUmVxdWVzdCAhPT0gdW5kZWZpbmVkKTsKLQotICAgICAgKytwdWxsQ291bnQ7Ci0gICAgfSwK
LSAgICB0eXBlOiAnYnl0ZXMnCi0gIH0pOwotCi0gIGNvbnN0IHJlYWRlciA9IHN0cmVhbS5nZXRS
ZWFkZXIoeyBtb2RlOiAnYnlvYicgfSk7Ci0KLSAgcmV0dXJuIHJlYWRlci5yZWFkKG5ldyBVaW50
OEFycmF5KDEpKS50aGVuKHJlc3VsdCA9PiB7Ci0gICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQuZG9u
ZSwgZmFsc2UsICdyZXN1bHQuZG9uZScpOwotICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LnZhbHVl
LmJ5dGVMZW5ndGgsIDEsICdyZXN1bHQudmFsdWUuYnl0ZUxlbmd0aCcpOwotICAgIGFzc2VydF9l
cXVhbHMocmVzdWx0LnZhbHVlWzBdLCAweDAxLCAncmVzdWx0LnZhbHVlWzBdJyk7Ci0gICAgYXNz
ZXJ0X2VxdWFscyhwdWxsQ291bnQsIDEsICdwdWxsKCkgc2hvdWxkIGJlIGNhbGxlZCBvbmx5IG9u
Y2UnKTsKLSAgICBhc3NlcnRfdHJ1ZShieW9iUmVxdWVzdERlZmluZWRbMF0sICdieW9iUmVxdWVz
dCBtdXN0IG5vdCBiZSB1bmRlZmluZWQgYmVmb3JlIHJlc3BvbmQoKScpOwotICAgIGFzc2VydF9m
YWxzZShieW9iUmVxdWVzdERlZmluZWRbMV0sICdieW9iUmVxdWVzdCBtdXN0IGJlIHVuZGVmaW5l
ZCBhZnRlciByZXNwb25kKCknKTsKLSAgfSk7Ci19LCAnUmVhZGFibGVTdHJlYW0gd2l0aCBieXRl
IHNvdXJjZTogcmVhZCh2aWV3KSwgdGhlbiByZXNwb25kKCknKTsKLQotcHJvbWlzZV90ZXN0KCgp
ID0+IHsKLSAgbGV0IGNvbnRyb2xsZXI7Ci0KLSAgbGV0IHB1bGxDb3VudCA9IDA7Ci0gIGNvbnN0
IGJ5b2JSZXF1ZXN0RGVmaW5lZCA9IFtdOwotCi0gIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJs
ZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgY29udHJvbGxlciA9IGM7Ci0gICAgfSwK
LSAgICBwdWxsKCkgewotICAgICAgYnlvYlJlcXVlc3REZWZpbmVkLnB1c2goY29udHJvbGxlci5i
eW9iUmVxdWVzdCAhPT0gdW5kZWZpbmVkKTsKLQotICAgICAgLy8gRW11bGF0ZSBBcnJheUJ1ZmZl
ciB0cmFuc2ZlciBieSBqdXN0IGNyZWF0aW5nIGEgbmV3IEFycmF5QnVmZmVyIGFuZCBwYXNzIGl0
LiBCeSBjaGVja2luZyB0aGUgcmVzdWx0IG9mCi0gICAgICAvLyByZWFkKHZpZXcpLCB3ZSB0ZXN0
IHRoYXQgdGhlIHJlc3BvbmQoKSdzIGJ1ZmZlciBhcmd1bWVudCBpcyB3b3JraW5nIGNvcnJlY3Rs
eS4KLSAgICAgIC8vCi0gICAgICAvLyBBIHJlYWwgaW1wbGVtZW50YXRpb24gb2YgdGhlIHVuZGVy
bHlpbmcgYnl0ZSBzb3VyY2Ugd291bGQgdHJhbnNmZXIgY29udHJvbGxlci5ieW9iUmVxdWVzdC52
aWV3LmJ1ZmZlciBpbnRvCi0gICAgICAvLyBhIG5ldyBBcnJheUJ1ZmZlciwgdGhlbiBjb25zdHJ1
Y3QgYSB2aWV3IGFyb3VuZCBpdCBhbmQgd3JpdGUgdG8gaXQuCi0gICAgICBjb25zdCB0cmFuc2Zl
cnJlZFZpZXcgPSBuZXcgVWludDhBcnJheSgxKTsKLSAgICAgIHRyYW5zZmVycmVkVmlld1swXSA9
IDB4MDE7Ci0gICAgICBjb250cm9sbGVyLmJ5b2JSZXF1ZXN0LnJlc3BvbmRXaXRoTmV3Vmlldyh0
cmFuc2ZlcnJlZFZpZXcpOwotCi0gICAgICBieW9iUmVxdWVzdERlZmluZWQucHVzaChjb250cm9s
bGVyLmJ5b2JSZXF1ZXN0ICE9PSB1bmRlZmluZWQpOwotCi0gICAgICArK3B1bGxDb3VudDsKLSAg
ICB9LAotICAgIHR5cGU6ICdieXRlcycKLSAgfSk7Ci0KLSAgY29uc3QgcmVhZGVyID0gc3RyZWFt
LmdldFJlYWRlcih7IG1vZGU6ICdieW9iJyB9KTsKLQotICByZXR1cm4gcmVhZGVyLnJlYWQobmV3
IFVpbnQ4QXJyYXkoMSkpLnRoZW4ocmVzdWx0ID0+IHsKLSAgICBhc3NlcnRfZXF1YWxzKHJlc3Vs
dC5kb25lLCBmYWxzZSwgJ3Jlc3VsdC5kb25lJyk7Ci0gICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQu
dmFsdWUuYnl0ZUxlbmd0aCwgMSwgJ3Jlc3VsdC52YWx1ZS5ieXRlTGVuZ3RoJyk7Ci0gICAgYXNz
ZXJ0X2VxdWFscyhyZXN1bHQudmFsdWVbMF0sIDB4MDEsICdyZXN1bHQudmFsdWVbMF0nKTsKLSAg
ICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMSwgJ3B1bGwoKSBzaG91bGQgYmUgY2FsbGVkIG9u
bHkgb25jZScpOwotICAgIGFzc2VydF90cnVlKGJ5b2JSZXF1ZXN0RGVmaW5lZFswXSwgJ2J5b2JS
ZXF1ZXN0IG11c3Qgbm90IGJlIHVuZGVmaW5lZCBiZWZvcmUgcmVzcG9uZCgpJyk7Ci0gICAgYXNz
ZXJ0X2ZhbHNlKGJ5b2JSZXF1ZXN0RGVmaW5lZFsxXSwgJ2J5b2JSZXF1ZXN0IG11c3QgYmUgdW5k
ZWZpbmVkIGFmdGVyIHJlc3BvbmQoKScpOwotICB9KTsKLX0sICdSZWFkYWJsZVN0cmVhbSB3aXRo
IGJ5dGUgc291cmNlOiByZWFkKHZpZXcpLCB0aGVuIHJlc3BvbmQoKSB3aXRoIGEgdHJhbnNmZXJy
ZWQgQXJyYXlCdWZmZXInKTsKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLSAgbGV0IGNvbnRyb2xs
ZXI7Ci0gIGxldCBieW9iUmVxdWVzdFdhc0RlZmluZWQ7Ci0gIGxldCBpbmNvcnJlY3RSZXNwb25k
RXhjZXB0aW9uOwotCi0gIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAg
c3RhcnQoYykgewotICAgICAgY29udHJvbGxlciA9IGM7Ci0gICAgfSwKLSAgICBwdWxsKCkgewot
ICAgICAgYnlvYlJlcXVlc3RXYXNEZWZpbmVkID0gY29udHJvbGxlci5ieW9iUmVxdWVzdCAhPT0g
dW5kZWZpbmVkOwotCi0gICAgICB0cnkgewotICAgICAgICBjb250cm9sbGVyLmJ5b2JSZXF1ZXN0
LnJlc3BvbmQoMik7Ci0gICAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAgIGluY29ycmVjdFJlc3Bv
bmRFeGNlcHRpb24gPSBlOwotICAgICAgfQotCi0gICAgICBjb250cm9sbGVyLmJ5b2JSZXF1ZXN0
LnJlc3BvbmQoMSk7Ci0gICAgfSwKLSAgICB0eXBlOiAnYnl0ZXMnCi0gIH0pOwotCi0gIGNvbnN0
IHJlYWRlciA9IHN0cmVhbS5nZXRSZWFkZXIoeyBtb2RlOiAnYnlvYicgfSk7Ci0KLSAgcmV0dXJu
IHJlYWRlci5yZWFkKG5ldyBVaW50OEFycmF5KDEpKS50aGVuKCgpID0+IHsKLSAgICBhc3NlcnRf
dHJ1ZShieW9iUmVxdWVzdFdhc0RlZmluZWQsICdieW9iUmVxdWVzdCBzaG91bGQgYmUgZGVmaW5l
ZCcpOwotICAgIGFzc2VydF9ub3RfZXF1YWxzKGluY29ycmVjdFJlc3BvbmRFeGNlcHRpb24sIHVu
ZGVmaW5lZCwgJ3Jlc3BvbmQoKSBtdXN0IHRocm93Jyk7Ci0gICAgYXNzZXJ0X2VxdWFscyhpbmNv
cnJlY3RSZXNwb25kRXhjZXB0aW9uLm5hbWUsICdSYW5nZUVycm9yJywgJ3Jlc3BvbmQoKSBtdXN0
IHRocm93IGEgUmFuZ2VFcnJvcicpOwotICB9KTsKLX0sICdSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5
dGUgc291cmNlOiByZWFkKHZpZXcpLCB0aGVuIHJlc3BvbmQoKSB3aXRoIHRvbyBiaWcgdmFsdWUn
KTsKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLSAgbGV0IHB1bGxDb3VudCA9IDA7Ci0KLSAgbGV0
IGNvbnRyb2xsZXI7Ci0gIGxldCBieW9iUmVxdWVzdDsKLSAgbGV0IHZpZXdJbmZvOwotCi0gIGNv
bnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAg
Y29udHJvbGxlciA9IGM7Ci0gICAgfSwKLSAgICBwdWxsKCkgewotICAgICAgKytwdWxsQ291bnQ7
Ci0KLSAgICAgIGJ5b2JSZXF1ZXN0ID0gY29udHJvbGxlci5ieW9iUmVxdWVzdDsKLSAgICAgIGNv
bnN0IHZpZXcgPSBieW9iUmVxdWVzdC52aWV3OwotICAgICAgdmlld0luZm8gPSBleHRyYWN0Vmll
d0luZm8odmlldyk7Ci0KLSAgICAgIHZpZXdbMF0gPSAweDAxOwotICAgICAgdmlld1sxXSA9IDB4
MDI7Ci0gICAgICB2aWV3WzJdID0gMHgwMzsKLQotICAgICAgY29udHJvbGxlci5ieW9iUmVxdWVz
dC5yZXNwb25kKDMpOwotICAgIH0sCi0gICAgdHlwZTogJ2J5dGVzJwotICB9KTsKLQotICBjb25z
dCByZWFkZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKHsgbW9kZTogJ2J5b2InIH0pOwotCi0gIHJldHVy
biByZWFkZXIucmVhZChuZXcgVWludDE2QXJyYXkoMikpLnRoZW4ocmVzdWx0ID0+IHsKLSAgICBh
c3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMSk7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdC5k
b25lLCBmYWxzZSwgJ2RvbmUnKTsKLQotICAgIGNvbnN0IHZpZXcgPSByZXN1bHQudmFsdWU7Ci0g
ICAgYXNzZXJ0X2VxdWFscyh2aWV3LmJ5dGVPZmZzZXQsIDAsICdieXRlT2Zmc2V0Jyk7Ci0gICAg
YXNzZXJ0X2VxdWFscyh2aWV3LmJ5dGVMZW5ndGgsIDIsICdieXRlTGVuZ3RoJyk7Ci0KLSAgICBh
c3NlcnRfZXF1YWxzKHZpZXdbMF0sIDB4MDIwMSk7Ci0KLSAgICByZXR1cm4gcmVhZGVyLnJlYWQo
bmV3IFVpbnQ4QXJyYXkoMSkpOwotICB9KS50aGVuKHJlc3VsdCA9PiB7Ci0gICAgYXNzZXJ0X2Vx
dWFscyhwdWxsQ291bnQsIDEpOwotICAgIGFzc2VydF9ub3RfZXF1YWxzKGJ5b2JSZXF1ZXN0LCB1
bmRlZmluZWQsICdieW9iUmVxdWVzdCBtdXN0IG5vdCBiZSB1bmRlZmluZWQnKTsKLSAgICBhc3Nl
cnRfZXF1YWxzKHZpZXdJbmZvLmNvbnN0cnVjdG9yLCBVaW50OEFycmF5LCAndmlldy5jb25zdHJ1
Y3RvciBzaG91bGQgYmUgVWludDhBcnJheScpOwotICAgIGFzc2VydF9lcXVhbHModmlld0luZm8u
YnVmZmVyQnl0ZUxlbmd0aCwgNCwgJ3ZpZXcuYnVmZmVyLmJ5dGVMZW5ndGggc2hvdWxkIGJlIDQn
KTsKLSAgICBhc3NlcnRfZXF1YWxzKHZpZXdJbmZvLmJ5dGVPZmZzZXQsIDAsICd2aWV3LmJ5dGVP
ZmZzZXQgc2hvdWxkIGJlIDAnKTsKLSAgICBhc3NlcnRfZXF1YWxzKHZpZXdJbmZvLmJ5dGVMZW5n
dGgsIDQsICd2aWV3LmJ5dGVMZW5ndGggc2hvdWxkIGJlIDQnKTsKLQotICAgIGFzc2VydF9lcXVh
bHMocmVzdWx0LmRvbmUsIGZhbHNlLCAnZG9uZScpOwotCi0gICAgY29uc3QgdmlldyA9IHJlc3Vs
dC52YWx1ZTsKLSAgICBhc3NlcnRfZXF1YWxzKHZpZXcuYnl0ZU9mZnNldCwgMCwgJ2J5dGVPZmZz
ZXQnKTsKLSAgICBhc3NlcnRfZXF1YWxzKHZpZXcuYnl0ZUxlbmd0aCwgMSwgJ2J5dGVMZW5ndGgn
KTsKLQotICAgIGFzc2VydF9lcXVhbHModmlld1swXSwgMHgwMyk7Ci0gIH0pOwotfSwgJ1JlYWRh
YmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IHJlc3BvbmQoMykgdG8gcmVhZCh2aWV3KSB3aXRo
IDIgZWxlbWVudCBVaW50MTZBcnJheSBlbnF1ZXVlcyB0aGUgMSBieXRlICcgKwotICAgJ3JlbWFp
bmRlcicpOwotCi1wcm9taXNlX3Rlc3QodCA9PiB7Ci0gIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFk
YWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoY29udHJvbGxlcikgewotICAgICAgY29uc3QgdmlldyA9
IG5ldyBVaW50OEFycmF5KDE2KTsKLSAgICAgIHZpZXdbMTVdID0gMHgwMTsKLSAgICAgIGNvbnRy
b2xsZXIuZW5xdWV1ZSh2aWV3KTsKLSAgICB9LAotICAgIHB1bGw6IHQudW5yZWFjaGVkX2Z1bmMo
J3B1bGwoKSBzaG91bGQgbm90IGJlIGNhbGxlZCcpLAotICAgIHR5cGU6ICdieXRlcycKLSAgfSk7
Ci0KLSAgY29uc3QgcmVhZGVyID0gc3RyZWFtLmdldFJlYWRlcih7IG1vZGU6ICdieW9iJyB9KTsK
LQotICByZXR1cm4gcmVhZGVyLnJlYWQobmV3IFVpbnQ4QXJyYXkoMTYpKS50aGVuKHJlc3VsdCA9
PiB7Ci0gICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQuZG9uZSwgZmFsc2UpOwotCi0gICAgY29uc3Qg
dmlldyA9IHJlc3VsdC52YWx1ZTsKLSAgICBhc3NlcnRfZXF1YWxzKHZpZXcuYnl0ZU9mZnNldCwg
MCk7Ci0gICAgYXNzZXJ0X2VxdWFscyh2aWV3LmJ5dGVMZW5ndGgsIDE2KTsKLSAgICBhc3NlcnRf
ZXF1YWxzKHZpZXdbMTVdLCAweDAxKTsKLSAgfSk7Ci19LCAnUmVhZGFibGVTdHJlYW0gd2l0aCBi
eXRlIHNvdXJjZTogZW5xdWV1ZSgpLCBnZXRSZWFkZXIoKSwgdGhlbiByZWFkKHZpZXcpJyk7Ci0K
LXByb21pc2VfdGVzdCh0ID0+IHsKLSAgbGV0IGNhbmNlbENvdW50ID0gMDsKLSAgbGV0IHJlYXNv
bjsKLQotICBjb25zdCBwYXNzZWRSZWFzb24gPSBuZXcgVHlwZUVycm9yKCdmb28nKTsKLQotICBj
b25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAg
IGMuZW5xdWV1ZShuZXcgVWludDhBcnJheSgxNikpOwotICAgIH0sCi0gICAgcHVsbDogdC51bnJl
YWNoZWRfZnVuYygncHVsbCgpIHNob3VsZCBub3QgYmUgY2FsbGVkJyksCi0gICAgY2FuY2VsKHIp
IHsKLSAgICAgIGlmIChjYW5jZWxDb3VudCA9PT0gMCkgewotICAgICAgICByZWFzb24gPSByOwot
ICAgICAgfQotCi0gICAgICArK2NhbmNlbENvdW50OwotICAgIH0sCi0gICAgdHlwZTogJ2J5dGVz
JwotICB9KTsKLQotICBjb25zdCByZWFkZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKCk7Ci0KLSAgcmV0
dXJuIHJlYWRlci5jYW5jZWwocGFzc2VkUmVhc29uKS50aGVuKHJlc3VsdCA9PiB7Ci0gICAgYXNz
ZXJ0X2VxdWFscyhyZXN1bHQsIHVuZGVmaW5lZCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhjYW5jZWxD
b3VudCwgMSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhyZWFzb24sIHBhc3NlZFJlYXNvbiwgJ3JlYXNv
biBzaG91bGQgZXF1YWwgdGhlIHBhc3NlZCByZWFzb24nKTsKLSAgfSk7Ci19LCAnUmVhZGFibGVT
dHJlYW0gd2l0aCBieXRlIHNvdXJjZTogZW5xdWV1ZSgpLCBnZXRSZWFkZXIoKSwgdGhlbiBjYW5j
ZWwoKSAobW9kZSA9IG5vdCBCWU9CKScpOwotCi1wcm9taXNlX3Rlc3QodCA9PiB7Ci0gIGxldCBj
YW5jZWxDb3VudCA9IDA7Ci0gIGxldCByZWFzb247Ci0KLSAgY29uc3QgcGFzc2VkUmVhc29uID0g
bmV3IFR5cGVFcnJvcignZm9vJyk7Ci0KLSAgY29uc3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxlU3Ry
ZWFtKHsKLSAgICBzdGFydChjKSB7Ci0gICAgICBjLmVucXVldWUobmV3IFVpbnQ4QXJyYXkoMTYp
KTsKLSAgICB9LAotICAgIHB1bGw6IHQudW5yZWFjaGVkX2Z1bmMoJ3B1bGwoKSBzaG91bGQgbm90
IGJlIGNhbGxlZCcpLAotICAgIGNhbmNlbChyKSB7Ci0gICAgICBpZiAoY2FuY2VsQ291bnQgPT09
IDApIHsKLSAgICAgICAgcmVhc29uID0gcjsKLSAgICAgIH0KLQotICAgICAgKytjYW5jZWxDb3Vu
dDsKLSAgICB9LAotICAgIHR5cGU6ICdieXRlcycKLSAgfSk7Ci0KLSAgY29uc3QgcmVhZGVyID0g
c3RyZWFtLmdldFJlYWRlcih7IG1vZGU6ICdieW9iJyB9KTsKLQotICByZXR1cm4gcmVhZGVyLmNh
bmNlbChwYXNzZWRSZWFzb24pLnRoZW4ocmVzdWx0ID0+IHsKLSAgICBhc3NlcnRfZXF1YWxzKHJl
c3VsdCwgdW5kZWZpbmVkKTsKLSAgICBhc3NlcnRfZXF1YWxzKGNhbmNlbENvdW50LCAxKTsKLSAg
ICBhc3NlcnRfZXF1YWxzKHJlYXNvbiwgcGFzc2VkUmVhc29uLCAncmVhc29uIHNob3VsZCBlcXVh
bCB0aGUgcGFzc2VkIHJlYXNvbicpOwotICB9KTsKLX0sICdSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5
dGUgc291cmNlOiBlbnF1ZXVlKCksIGdldFJlYWRlcigpLCB0aGVuIGNhbmNlbCgpIChtb2RlID0g
QllPQiknKTsKLQotcHJvbWlzZV90ZXN0KHQgPT4gewotICBsZXQgY2FuY2VsQ291bnQgPSAwOwot
ICBsZXQgcmVhc29uOwotCi0gIGNvbnN0IHBhc3NlZFJlYXNvbiA9IG5ldyBUeXBlRXJyb3IoJ2Zv
bycpOwotCi0gIGxldCBjb250cm9sbGVyOwotCi0gIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJs
ZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgY29udHJvbGxlciA9IGM7Ci0gICAgfSwK
LSAgICBwdWxsOiB0LnVucmVhY2hlZF9mdW5jKCdwdWxsKCkgc2hvdWxkIG5vdCBiZSBjYWxsZWQn
KSwKLSAgICBjYW5jZWwocikgewotICAgICAgaWYgKGNhbmNlbENvdW50ID09PSAwKSB7Ci0gICAg
ICAgIHJlYXNvbiA9IHI7Ci0gICAgICAgIGNvbnRyb2xsZXIuYnlvYlJlcXVlc3QucmVzcG9uZCgw
KTsKLSAgICAgIH0KLQotICAgICAgKytjYW5jZWxDb3VudDsKLQotICAgICAgcmV0dXJuICdiYXIn
OwotICAgIH0sCi0gICAgdHlwZTogJ2J5dGVzJwotICB9KTsKLQotICBjb25zdCByZWFkZXIgPSBz
dHJlYW0uZ2V0UmVhZGVyKHsgbW9kZTogJ2J5b2InIH0pOwotCi0gIGNvbnN0IHJlYWRQcm9taXNl
ID0gcmVhZGVyLnJlYWQobmV3IFVpbnQ4QXJyYXkoMSkpLnRoZW4ocmVzdWx0ID0+IHsKLSAgICBh
c3NlcnRfZXF1YWxzKHJlc3VsdC5kb25lLCB0cnVlKTsKLSAgfSk7Ci0KLSAgY29uc3QgY2FuY2Vs
UHJvbWlzZSA9IHJlYWRlci5jYW5jZWwocGFzc2VkUmVhc29uKS50aGVuKHJlc3VsdCA9PiB7Ci0g
ICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQsIHVuZGVmaW5lZCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhj
YW5jZWxDb3VudCwgMSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhyZWFzb24sIHBhc3NlZFJlYXNvbiwg
J3JlYXNvbiBzaG91bGQgZXF1YWwgdGhlIHBhc3NlZCByZWFzb24nKTsKLSAgfSk7Ci0KLSAgcmV0
dXJuIFByb21pc2UuYWxsKFtyZWFkUHJvbWlzZSwgY2FuY2VsUHJvbWlzZV0pOwotfSwgJ1JlYWRh
YmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IGdldFJlYWRlcigpLCByZWFkKHZpZXcpLCB0aGVu
IGNhbmNlbCgpJyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0gIGxldCBwdWxsQ291bnQgPSAw
OwotCi0gIGxldCBjb250cm9sbGVyOwotICBsZXQgYnlvYlJlcXVlc3Q7Ci0gIGNvbnN0IHZpZXdJ
bmZvcyA9IFtdOwotCi0gIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAg
c3RhcnQoYykgewotICAgICAgY29udHJvbGxlciA9IGM7Ci0gICAgfSwKLSAgICBwdWxsKCkgewot
ICAgICAgYnlvYlJlcXVlc3QgPSBjb250cm9sbGVyLmJ5b2JSZXF1ZXN0OwotCi0gICAgICB2aWV3
SW5mb3MucHVzaChleHRyYWN0Vmlld0luZm8oY29udHJvbGxlci5ieW9iUmVxdWVzdC52aWV3KSk7
Ci0gICAgICBjb250cm9sbGVyLmVucXVldWUobmV3IFVpbnQ4QXJyYXkoMSkpOwotICAgICAgdmll
d0luZm9zLnB1c2goZXh0cmFjdFZpZXdJbmZvKGNvbnRyb2xsZXIuYnlvYlJlcXVlc3Qudmlldykp
OwotCi0gICAgICArK3B1bGxDb3VudDsKLSAgICB9LAotICAgIHR5cGU6ICdieXRlcycKLSAgfSk7
Ci0KLSAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCkgPT4gewotICAgIGFzc2VydF9l
cXVhbHMocHVsbENvdW50LCAwLCAnTm8gcHVsbCgpIGFzIG5vIHJlYWQodmlldykgeWV0Jyk7Ci0K
LSAgICBjb25zdCByZWFkZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKHsgbW9kZTogJ2J5b2InIH0pOwot
Ci0gICAgY29uc3QgcHJvbWlzZSA9IHJlYWRlci5yZWFkKG5ldyBVaW50MTZBcnJheSgxKSkudGhl
bihyZXN1bHQgPT4gewotICAgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQuZG9uZSwgdHJ1ZSwgJ3Jl
c3VsdC5kb25lJyk7Ci0gICAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdC52YWx1ZS5jb25zdHJ1Y3Rv
ciwgVWludDE2QXJyYXksICdyZXN1bHQudmFsdWUnKTsKLSAgICB9KTsKLQotICAgIGFzc2VydF9l
cXVhbHMocHVsbENvdW50LCAxLCAnMSBwdWxsKCkgc2hvdWxkIGhhdmUgYmVlbiBtYWRlIGluIHJl
c3BvbnNlIHRvIHBhcnRpYWwgZmlsbCBieSBlbnF1ZXVlKCknKTsKLSAgICBhc3NlcnRfbm90X2Vx
dWFscyhieW9iUmVxdWVzdCwgdW5kZWZpbmVkLCAnYnlvYlJlcXVlc3Qgc2hvdWxkIG5vdCBiZSB1
bmRlZmluZWQnKTsKLSAgICBhc3NlcnRfZXF1YWxzKHZpZXdJbmZvc1swXS5ieXRlTGVuZ3RoLCAy
LCAnYnl0ZUxlbmd0aCBiZWZvcmUgZW5xdWV1ZSgpIHNob3VpbGQgYmUgMicpOwotICAgIGFzc2Vy
dF9lcXVhbHModmlld0luZm9zWzFdLmJ5dGVMZW5ndGgsIDEsICdieXRlTGVuZ3RoIGFmdGVyIGVu
cXVldWUoKSBzaG91bGQgYmUgMScpOwotCi0KLSAgICByZWFkZXIuY2FuY2VsKCk7Ci0KLSAgICAv
LyBUZWxsIHRoYXQgdGhlIGJ1ZmZlciBnaXZlbiB2aWEgcHVsbCgpIGlzIHJldHVybmVkLgotICAg
IGNvbnRyb2xsZXIuYnlvYlJlcXVlc3QucmVzcG9uZCgwKTsKLQotICAgIGFzc2VydF9lcXVhbHMo
cHVsbENvdW50LCAxLCAncHVsbCgpIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBvbmNlJyk7Ci0gICAg
cmV0dXJuIHByb21pc2U7Ci0gIH0pOwotfSwgJ1JlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3Vy
Y2U6IGNhbmNlbCgpIHdpdGggcGFydGlhbGx5IGZpbGxlZCBwZW5kaW5nIHB1bGwoKSByZXF1ZXN0
Jyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0gIGxldCBjb250cm9sbGVyOwotICBsZXQgYnlv
YlJlcXVlc3Q7Ci0KLSAgY29uc3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBz
dGFydChjKSB7Ci0gICAgICBjb25zdCB2aWV3ID0gbmV3IFVpbnQ4QXJyYXkoOCk7Ci0gICAgICB2
aWV3WzddID0gMHgwMTsKLSAgICAgIGMuZW5xdWV1ZSh2aWV3KTsKLQotICAgICAgY29udHJvbGxl
ciA9IGM7Ci0gICAgfSwKLSAgICBwdWxsKCkgewotICAgICAgYnlvYlJlcXVlc3QgPSBjb250cm9s
bGVyLmJ5b2JSZXF1ZXN0OwotICAgIH0sCi0gICAgdHlwZTogJ2J5dGVzJwotICB9KTsKLQotICBj
b25zdCByZWFkZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKHsgbW9kZTogJ2J5b2InIH0pOwotCi0gIGNv
bnN0IGJ1ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcigxNik7Ci0KLSAgcmV0dXJuIHJlYWRlci5yZWFk
KG5ldyBVaW50OEFycmF5KGJ1ZmZlciwgOCwgOCkpLnRoZW4ocmVzdWx0ID0+IHsKLSAgICBhc3Nl
cnRfZXF1YWxzKHJlc3VsdC5kb25lLCBmYWxzZSk7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGJ5b2JS
ZXF1ZXN0LCB1bmRlZmluZWQsICdieW9iUmVxdWVzdCBtdXN0IGJlIHVuZGVmaW5lZCcpOwotCi0g
ICAgY29uc3QgdmlldyA9IHJlc3VsdC52YWx1ZTsKLSAgICBhc3NlcnRfZXF1YWxzKHZpZXcuY29u
c3RydWN0b3IsIFVpbnQ4QXJyYXkpOwotICAgIGFzc2VydF9lcXVhbHModmlldy5idWZmZXIuYnl0
ZUxlbmd0aCwgMTYpOwotICAgIGFzc2VydF9lcXVhbHModmlldy5ieXRlT2Zmc2V0LCA4KTsKLSAg
ICBhc3NlcnRfZXF1YWxzKHZpZXcuYnl0ZUxlbmd0aCwgOCk7Ci0gICAgYXNzZXJ0X2VxdWFscyh2
aWV3WzddLCAweDAxKTsKLSAgfSk7Ci19LCAnUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJj
ZTogZW5xdWV1ZSgpLCBnZXRSZWFkZXIoKSwgdGhlbiByZWFkKHZpZXcpIHdoZXJlIHZpZXcuYnVm
ZmVyIGlzIG5vdCBmdWxseSAnICsKLSAgICdjb3ZlcmVkIGJ5IHZpZXcnKTsKLQotcHJvbWlzZV90
ZXN0KCgpID0+IHsKLSAgbGV0IGNvbnRyb2xsZXI7Ci0gIGxldCBieW9iUmVxdWVzdDsKLQotICBj
b25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAg
IGxldCB2aWV3OwotCi0gICAgICB2aWV3ID0gbmV3IFVpbnQ4QXJyYXkoMTYpOwotICAgICAgdmll
d1sxNV0gPSAxMjM7Ci0gICAgICBjLmVucXVldWUodmlldyk7Ci0KLSAgICAgIHZpZXcgPSBuZXcg
VWludDhBcnJheSg4KTsKLSAgICAgIHZpZXdbN10gPSAxMTE7Ci0gICAgICBjLmVucXVldWUodmll
dyk7Ci0KLSAgICAgIGNvbnRyb2xsZXIgPSBjOwotICAgIH0sCi0gICAgcHVsbCgpIHsKLSAgICAg
IGJ5b2JSZXF1ZXN0ID0gY29udHJvbGxlci5ieW9iUmVxdWVzdDsKLSAgICB9LAotICAgIHR5cGU6
ICdieXRlcycKLSAgfSk7Ci0KLSAgY29uc3QgcmVhZGVyID0gc3RyZWFtLmdldFJlYWRlcih7IG1v
ZGU6ICdieW9iJyB9KTsKLQotICByZXR1cm4gcmVhZGVyLnJlYWQobmV3IFVpbnQ4QXJyYXkoMjQp
KS50aGVuKHJlc3VsdCA9PiB7Ci0gICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQuZG9uZSwgZmFsc2Us
ICdkb25lJyk7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGJ5b2JSZXF1ZXN0LCB1bmRlZmluZWQsICdi
eW9iUmVxdWVzdCBtdXN0IGJlIHVuZGVmaW5lZCcpOwotCi0gICAgY29uc3QgdmlldyA9IHJlc3Vs
dC52YWx1ZTsKLSAgICBhc3NlcnRfZXF1YWxzKHZpZXcuYnl0ZU9mZnNldCwgMCwgJ2J5dGVPZmZz
ZXQnKTsKLSAgICBhc3NlcnRfZXF1YWxzKHZpZXcuYnl0ZUxlbmd0aCwgMjQsICdieXRlTGVuZ3Ro
Jyk7Ci0gICAgYXNzZXJ0X2VxdWFscyh2aWV3WzE1XSwgMTIzLCAnQ29udGVudHMgYXJlIHNldCBm
cm9tIHRoZSBmaXJzdCBjaHVuaycpOwotICAgIGFzc2VydF9lcXVhbHModmlld1syM10sIDExMSwg
J0NvbnRlbnRzIGFyZSBzZXQgZnJvbSB0aGUgc2Vjb25kIGNodW5rJyk7Ci0gIH0pOwotfSwgJ1Jl
YWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IE11bHRpcGxlIGVucXVldWUoKSwgZ2V0UmVh
ZGVyKCksIHRoZW4gcmVhZCh2aWV3KScpOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotICBsZXQg
YnlvYlJlcXVlc3Q7Ci0KLSAgY29uc3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAg
ICBzdGFydChjKSB7Ci0gICAgICBjb25zdCB2aWV3ID0gbmV3IFVpbnQ4QXJyYXkoMTYpOwotICAg
ICAgdmlld1sxNV0gPSAweDAxOwotICAgICAgYy5lbnF1ZXVlKHZpZXcpOwotICAgIH0sCi0gICAg
cHVsbChjb250cm9sbGVyKSB7Ci0gICAgICBieW9iUmVxdWVzdCA9IGNvbnRyb2xsZXIuYnlvYlJl
cXVlc3Q7Ci0gICAgfSwKLSAgICB0eXBlOiAnYnl0ZXMnCi0gIH0pOwotCi0gIGNvbnN0IHJlYWRl
ciA9IHN0cmVhbS5nZXRSZWFkZXIoeyBtb2RlOiAnYnlvYicgfSk7Ci0KLSAgcmV0dXJuIHJlYWRl
ci5yZWFkKG5ldyBVaW50OEFycmF5KDI0KSkudGhlbihyZXN1bHQgPT4gewotICAgIGFzc2VydF9l
cXVhbHMocmVzdWx0LmRvbmUsIGZhbHNlKTsKLQotICAgIGFzc2VydF9lcXVhbHMoYnlvYlJlcXVl
c3QsIHVuZGVmaW5lZCwgJ2J5b2JSZXF1ZXN0IG11c3QgYmUgdW5kZWZpbmVkJyk7Ci0KLSAgICBj
b25zdCB2aWV3ID0gcmVzdWx0LnZhbHVlOwotICAgIGFzc2VydF9lcXVhbHModmlldy5ieXRlT2Zm
c2V0LCAwKTsKLSAgICBhc3NlcnRfZXF1YWxzKHZpZXcuYnl0ZUxlbmd0aCwgMTYpOwotICAgIGFz
c2VydF9lcXVhbHModmlld1sxNV0sIDB4MDEpOwotICB9KTsKLX0sICdSZWFkYWJsZVN0cmVhbSB3
aXRoIGJ5dGUgc291cmNlOiBlbnF1ZXVlKCksIGdldFJlYWRlcigpLCB0aGVuIHJlYWQodmlldykg
d2l0aCBhIGJpZ2dlciB2aWV3Jyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0gIGxldCBieW9i
UmVxdWVzdDsKLQotICBjb25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0
YXJ0KGMpIHsKLSAgICAgIGNvbnN0IHZpZXcgPSBuZXcgVWludDhBcnJheSgxNik7Ci0gICAgICB2
aWV3WzddID0gMHgwMTsKLSAgICAgIHZpZXdbMTVdID0gMHgwMjsKLSAgICAgIGMuZW5xdWV1ZSh2
aWV3KTsKLSAgICB9LAotICAgIHB1bGwoY29udHJvbGxlcikgewotICAgICAgYnlvYlJlcXVlc3Qg
PSBjb250cm9sbGVyLmJ5b2JSZXF1ZXN0OwotICAgIH0sCi0gICAgdHlwZTogJ2J5dGVzJwotICB9
KTsKLQotICBjb25zdCByZWFkZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKHsgbW9kZTogJ2J5b2InIH0p
OwotCi0gIHJldHVybiByZWFkZXIucmVhZChuZXcgVWludDhBcnJheSg4KSkudGhlbihyZXN1bHQg
PT4gewotICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LmRvbmUsIGZhbHNlLCAnZG9uZScpOwotCi0g
ICAgY29uc3QgdmlldyA9IHJlc3VsdC52YWx1ZTsKLSAgICBhc3NlcnRfZXF1YWxzKHZpZXcuYnl0
ZU9mZnNldCwgMCk7Ci0gICAgYXNzZXJ0X2VxdWFscyh2aWV3LmJ5dGVMZW5ndGgsIDgpOwotICAg
IGFzc2VydF9lcXVhbHModmlld1s3XSwgMHgwMSk7Ci0KLSAgICByZXR1cm4gcmVhZGVyLnJlYWQo
bmV3IFVpbnQ4QXJyYXkoOCkpOwotICB9KS50aGVuKHJlc3VsdCA9PiB7Ci0gICAgYXNzZXJ0X2Vx
dWFscyhyZXN1bHQuZG9uZSwgZmFsc2UsICdkb25lJyk7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGJ5
b2JSZXF1ZXN0LCB1bmRlZmluZWQsICdieW9iUmVxdWVzdCBtdXN0IGJlIHVuZGVmaW5lZCcpOwot
Ci0gICAgY29uc3QgdmlldyA9IHJlc3VsdC52YWx1ZTsKLSAgICBhc3NlcnRfZXF1YWxzKHZpZXcu
Ynl0ZU9mZnNldCwgMCk7Ci0gICAgYXNzZXJ0X2VxdWFscyh2aWV3LmJ5dGVMZW5ndGgsIDgpOwot
ICAgIGFzc2VydF9lcXVhbHModmlld1s3XSwgMHgwMik7Ci0gIH0pOwotfSwgJ1JlYWRhYmxlU3Ry
ZWFtIHdpdGggYnl0ZSBzb3VyY2U6IGVucXVldWUoKSwgZ2V0UmVhZGVyKCksIHRoZW4gcmVhZCh2
aWV3KSB3aXRoIGEgc21hbGxlciB2aWV3cycpOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotICBs
ZXQgY29udHJvbGxlcjsKLSAgbGV0IHZpZXdJbmZvOwotCi0gIGNvbnN0IHN0cmVhbSA9IG5ldyBS
ZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgY29uc3QgdmlldyA9IG5ldyBV
aW50OEFycmF5KDEpOwotICAgICAgdmlld1swXSA9IDB4ZmY7Ci0gICAgICBjLmVucXVldWUodmll
dyk7Ci0KLSAgICAgIGNvbnRyb2xsZXIgPSBjOwotICAgIH0sCi0gICAgcHVsbCgpIHsKLSAgICAg
IGlmIChjb250cm9sbGVyLmJ5b2JSZXF1ZXN0ID09PSB1bmRlZmluZWQpIHsKLSAgICAgICAgcmV0
dXJuOwotICAgICAgfQotCi0gICAgICBjb25zdCB2aWV3ID0gY29udHJvbGxlci5ieW9iUmVxdWVz
dC52aWV3OwotICAgICAgdmlld0luZm8gPSBleHRyYWN0Vmlld0luZm8odmlldyk7Ci0KLSAgICAg
IHZpZXdbMF0gPSAweGFhOwotICAgICAgY29udHJvbGxlci5ieW9iUmVxdWVzdC5yZXNwb25kKDEp
OwotICAgIH0sCi0gICAgdHlwZTogJ2J5dGVzJwotICB9KTsKLQotICBjb25zdCByZWFkZXIgPSBz
dHJlYW0uZ2V0UmVhZGVyKHsgbW9kZTogJ2J5b2InIH0pOwotCi0gIHJldHVybiByZWFkZXIucmVh
ZChuZXcgVWludDE2QXJyYXkoMSkpLnRoZW4ocmVzdWx0ID0+IHsKLSAgICBhc3NlcnRfZXF1YWxz
KHJlc3VsdC5kb25lLCBmYWxzZSk7Ci0KLSAgICBjb25zdCB2aWV3ID0gcmVzdWx0LnZhbHVlOwot
ICAgIGFzc2VydF9lcXVhbHModmlldy5ieXRlT2Zmc2V0LCAwKTsKLSAgICBhc3NlcnRfZXF1YWxz
KHZpZXcuYnl0ZUxlbmd0aCwgMik7Ci0gICAgYXNzZXJ0X2VxdWFscyh2aWV3WzBdLCAweGFhZmYp
OwotCi0gICAgYXNzZXJ0X2VxdWFscyh2aWV3SW5mby5jb25zdHJ1Y3RvciwgVWludDhBcnJheSwg
J3ZpZXcuY29uc3RydWN0b3Igc2hvdWxkIGJlIFVpbnQ4QXJyYXknKTsKLSAgICBhc3NlcnRfZXF1
YWxzKHZpZXdJbmZvLmJ1ZmZlckJ5dGVMZW5ndGgsIDIsICd2aWV3LmJ1ZmZlci5ieXRlTGVuZ3Ro
IHNob3VsZCBiZSAyJyk7Ci0gICAgYXNzZXJ0X2VxdWFscyh2aWV3SW5mby5ieXRlT2Zmc2V0LCAx
LCAndmlldy5ieXRlT2Zmc2V0IHNob3VsZCBiZSAxJyk7Ci0gICAgYXNzZXJ0X2VxdWFscyh2aWV3
SW5mby5ieXRlTGVuZ3RoLCAxLCAndmlldy5ieXRlTGVuZ3RoIHNob3VsZCBiZSAxJyk7Ci0gIH0p
OwotfSwgJ1JlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IGVucXVldWUoKSAxIGJ5dGUs
IGdldFJlYWRlcigpLCB0aGVuIHJlYWQodmlldykgd2l0aCBVaW50MTZBcnJheScpOwotCi1wcm9t
aXNlX3Rlc3QoKCkgPT4gewotICBsZXQgcHVsbENvdW50ID0gMDsKLQotICBsZXQgY29udHJvbGxl
cjsKLSAgbGV0IGJ5b2JSZXF1ZXN0OwotICBsZXQgdmlld0luZm87Ci0gIGxldCBkZXNpcmVkU2l6
ZTsKLQotICBjb25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMp
IHsKLSAgICAgIGNvbnN0IHZpZXcgPSBuZXcgVWludDhBcnJheSgzKTsKLSAgICAgIHZpZXdbMF0g
PSAweDAxOwotICAgICAgdmlld1syXSA9IDB4MDI7Ci0gICAgICBjLmVucXVldWUodmlldyk7Ci0K
LSAgICAgIGNvbnRyb2xsZXIgPSBjOwotICAgIH0sCi0gICAgcHVsbCgpIHsKLSAgICAgIGJ5b2JS
ZXF1ZXN0ID0gY29udHJvbGxlci5ieW9iUmVxdWVzdDsKLQotICAgICAgY29uc3QgdmlldyA9IGNv
bnRyb2xsZXIuYnlvYlJlcXVlc3QudmlldzsKLQotICAgICAgdmlld0luZm8gPSBleHRyYWN0Vmll
d0luZm8odmlldyk7Ci0KLSAgICAgIHZpZXdbMF0gPSAweDAzOwotICAgICAgY29udHJvbGxlci5i
eW9iUmVxdWVzdC5yZXNwb25kKDEpOwotCi0gICAgICBkZXNpcmVkU2l6ZSA9IGNvbnRyb2xsZXIu
ZGVzaXJlZFNpemU7Ci0KLSAgICAgICsrcHVsbENvdW50OwotICAgIH0sCi0gICAgdHlwZTogJ2J5
dGVzJwotICB9KTsKLQotICAvLyBXYWl0IGZvciBjb21wbGV0aW9uIG9mIHRoZSBzdGFydCBtZXRo
b2QgdG8gYmUgcmVmbGVjdGVkLgotICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9
PiB7Ci0gICAgY29uc3QgcmVhZGVyID0gc3RyZWFtLmdldFJlYWRlcih7IG1vZGU6ICdieW9iJyB9
KTsKLQotICAgIGNvbnN0IHByb21pc2UgPSByZWFkZXIucmVhZChuZXcgVWludDE2QXJyYXkoMikp
LnRoZW4ocmVzdWx0ID0+IHsKLSAgICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LmRvbmUsIGZhbHNl
LCAnZG9uZScpOwotCi0gICAgICBjb25zdCB2aWV3ID0gcmVzdWx0LnZhbHVlOwotICAgICAgYXNz
ZXJ0X2VxdWFscyh2aWV3LmNvbnN0cnVjdG9yLCBVaW50MTZBcnJheSwgJ2NvbnN0cnVjdG9yJyk7
Ci0gICAgICBhc3NlcnRfZXF1YWxzKHZpZXcuYnVmZmVyLmJ5dGVMZW5ndGgsIDQsICdidWZmZXIu
Ynl0ZUxlbmd0aCcpOwotICAgICAgYXNzZXJ0X2VxdWFscyh2aWV3LmJ5dGVPZmZzZXQsIDAsICdi
eXRlT2Zmc2V0Jyk7Ci0gICAgICBhc3NlcnRfZXF1YWxzKHZpZXcuYnl0ZUxlbmd0aCwgMiwgJ2J5
dGVMZW5ndGgnKTsKLSAgICAgIGFzc2VydF9lcXVhbHModmlld1swXSwgMHgwMDAxLCAnQ29udGVu
dHMgYXJlIHNldCcpOwotCi0gICAgICBjb25zdCBwID0gcmVhZGVyLnJlYWQobmV3IFVpbnQxNkFy
cmF5KDEpKTsKLQotICAgICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDEpOwotCi0gICAgICBy
ZXR1cm4gcDsKLSAgICB9KS50aGVuKHJlc3VsdCA9PiB7Ci0gICAgICBhc3NlcnRfZXF1YWxzKHJl
c3VsdC5kb25lLCBmYWxzZSwgJ2RvbmUnKTsKLQotICAgICAgY29uc3QgdmlldyA9IHJlc3VsdC52
YWx1ZTsKLSAgICAgIGFzc2VydF9lcXVhbHModmlldy5idWZmZXIuYnl0ZUxlbmd0aCwgMiwgJ2J1
ZmZlci5ieXRlTGVuZ3RoJyk7Ci0gICAgICBhc3NlcnRfZXF1YWxzKHZpZXcuYnl0ZU9mZnNldCwg
MCwgJ2J5dGVPZmZzZXQnKTsKLSAgICAgIGFzc2VydF9lcXVhbHModmlldy5ieXRlTGVuZ3RoLCAy
LCAnYnl0ZUxlbmd0aCcpOwotICAgICAgYXNzZXJ0X2VxdWFscyh2aWV3WzBdLCAweDAzMDIsICdD
b250ZW50cyBhcmUgc2V0Jyk7Ci0KLSAgICAgIGFzc2VydF9ub3RfZXF1YWxzKGJ5b2JSZXF1ZXN0
LCB1bmRlZmluZWQsICdieW9iUmVxdWVzdCBtdXN0IG5vdCBiZSB1bmRlZmluZWQnKTsKLSAgICAg
IGFzc2VydF9lcXVhbHModmlld0luZm8uY29uc3RydWN0b3IsIFVpbnQ4QXJyYXksICd2aWV3LmNv
bnN0cnVjdG9yIHNob3VsZCBiZSBVaW50OEFycmF5Jyk7Ci0gICAgICBhc3NlcnRfZXF1YWxzKHZp
ZXdJbmZvLmJ1ZmZlckJ5dGVMZW5ndGgsIDIsICd2aWV3LmJ1ZmZlci5ieXRlTGVuZ3RoIHNob3Vs
ZCBiZSAyJyk7Ci0gICAgICBhc3NlcnRfZXF1YWxzKHZpZXdJbmZvLmJ5dGVPZmZzZXQsIDEsICd2
aWV3LmJ5dGVPZmZzZXQgc2hvdWxkIGJlIDEnKTsKLSAgICAgIGFzc2VydF9lcXVhbHModmlld0lu
Zm8uYnl0ZUxlbmd0aCwgMSwgJ3ZpZXcuYnl0ZUxlbmd0aCBzaG91bGQgYmUgMScpOwotICAgICAg
YXNzZXJ0X2VxdWFscyhkZXNpcmVkU2l6ZSwgMCwgJ2Rlc2lyZWRTaXplIHNob3VsZCBiZSB6ZXJv
Jyk7Ci0gICAgfSk7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMCk7Ci0KLSAgICBy
ZXR1cm4gcHJvbWlzZTsKLSAgfSk7Ci19LCAnUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJj
ZTogZW5xdWV1ZSgpIDMgYnl0ZSwgZ2V0UmVhZGVyKCksIHRoZW4gcmVhZCh2aWV3KSB3aXRoIDIt
ZWxlbWVudCBVaW50MTZBcnJheScpOwotCi1wcm9taXNlX3Rlc3QodCA9PiB7Ci0gIGNvbnN0IHN0
cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgY29uc3Qg
dmlldyA9IG5ldyBVaW50OEFycmF5KDEpOwotICAgICAgdmlld1swXSA9IDB4ZmY7Ci0gICAgICBj
LmVucXVldWUodmlldyk7Ci0gICAgICBjLmNsb3NlKCk7Ci0gICAgfSwKLSAgICBwdWxsOiB0LnVu
cmVhY2hlZF9mdW5jKCdwdWxsKCkgc2hvdWxkIG5vdCBiZSBjYWxsZWQnKSwKLSAgICB0eXBlOiAn
Ynl0ZXMnCi0gIH0pOwotCi0gIGNvbnN0IHJlYWRlciA9IHN0cmVhbS5nZXRSZWFkZXIoeyBtb2Rl
OiAnYnlvYicgfSk7Ci0KLQotICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHQsIG5ldyBUeXBlRXJy
b3IoKSwgcmVhZGVyLnJlYWQobmV3IFVpbnQxNkFycmF5KDEpKSwgJ3JlYWQodmlldykgbXVzdCBm
YWlsJykKLSAgICAgIC50aGVuKCgpID0+IHByb21pc2VfcmVqZWN0cyh0LCBuZXcgVHlwZUVycm9y
KCksIHJlYWRlci5jbG9zZWQsICdyZWFkZXIuY2xvc2VkIHNob3VsZCByZWplY3QnKSk7Ci19LCAn
UmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogcmVhZCh2aWV3KSB3aXRoIFVpbnQxNkFy
cmF5IG9uIGNsb3NlKCktZCBzdHJlYW0gd2l0aCAxIGJ5dGUgZW5xdWV1ZSgpLWQgbXVzdCAnICsK
LSAgICdmYWlsJyk7Ci0KLXByb21pc2VfdGVzdCh0ID0+IHsKLSAgbGV0IGNvbnRyb2xsZXI7Ci0K
LSAgY29uc3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0g
ICAgICBjb25zdCB2aWV3ID0gbmV3IFVpbnQ4QXJyYXkoMSk7Ci0gICAgICB2aWV3WzBdID0gMHhm
ZjsKLSAgICAgIGMuZW5xdWV1ZSh2aWV3KTsKLQotICAgICAgY29udHJvbGxlciA9IGM7Ci0gICAg
fSwKLSAgICBwdWxsOiB0LnVucmVhY2hlZF9mdW5jKCdwdWxsKCkgc2hvdWxkIG5vdCBiZSBjYWxs
ZWQnKSwKLSAgICB0eXBlOiAnYnl0ZXMnCi0gIH0pOwotCi0gIGNvbnN0IHJlYWRlciA9IHN0cmVh
bS5nZXRSZWFkZXIoeyBtb2RlOiAnYnlvYicgfSk7Ci0KLSAgY29uc3QgcmVhZFByb21pc2UgPSBy
ZWFkZXIucmVhZChuZXcgVWludDE2QXJyYXkoMSkpOwotCi0gIGFzc2VydF90aHJvd3MobmV3IFR5
cGVFcnJvcigpLCAoKSA9PiBjb250cm9sbGVyLmNsb3NlKCksICdjb250cm9sbGVyLmNsb3NlKCkg
bXVzdCB0aHJvdycpOwotCi0gIHJldHVybiBwcm9taXNlX3JlamVjdHModCwgbmV3IFR5cGVFcnJv
cigpLCByZWFkUHJvbWlzZSwgJ3JlYWQodmlldykgbXVzdCBmYWlsJykKLSAgICAgIC50aGVuKCgp
ID0+IHByb21pc2VfcmVqZWN0cyh0LCBuZXcgVHlwZUVycm9yKCksIHJlYWRlci5jbG9zZWQsICdy
ZWFkZXIuY2xvc2VkIG11c3QgcmVqZWN0JykpOwotfSwgJ1JlYWRhYmxlU3RyZWFtIHdpdGggYnl0
ZSBzb3VyY2U6IEEgc3RyZWFtIG11c3QgYmUgZXJyb3JlZCBpZiBjbG9zZSgpLWQgYmVmb3JlIGZ1
bGZpbGxpbmcgcmVhZCh2aWV3KSB3aXRoICcgKwotICAgJ1VpbnQxNkFycmF5Jyk7Ci0KLXRlc3Qo
KCkgPT4gewotICBsZXQgY29udHJvbGxlcjsKLQotICBuZXcgUmVhZGFibGVTdHJlYW0oewotICAg
IHN0YXJ0KGMpIHsKLSAgICAgIGNvbnRyb2xsZXIgPSBjOwotICAgIH0sCi0gICAgdHlwZTogJ2J5
dGVzJwotICB9KTsKLQotICAvLyBFbnF1ZXVlIGEgY2h1bmsgc28gdGhhdCB0aGUgc3RyZWFtIGRv
ZXNuJ3QgZ2V0IGNsb3NlZC4gVGhpcyBpcyB0byBjaGVjayBkdXBsaWNhdGUgY2xvc2UoKSBjYWxs
cyBhcmUgcmVqZWN0ZWQKLSAgLy8gZXZlbiBpZiB0aGUgc3RyZWFtIGhhcyBub3QgeWV0IGVudGVy
ZWQgdGhlIGNsb3NlZCBzdGF0ZS4KLSAgY29uc3QgdmlldyA9IG5ldyBVaW50OEFycmF5KDEpOwot
ICBjb250cm9sbGVyLmVucXVldWUodmlldyk7Ci0gIGNvbnRyb2xsZXIuY2xvc2UoKTsKLQotICBh
c3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gY29udHJvbGxlci5jbG9zZSgpLCAn
Y29udHJvbGxlci5jbG9zZSgpIG11c3QgdGhyb3cnKTsKLX0sICdSZWFkYWJsZVN0cmVhbSB3aXRo
IGJ5dGUgc291cmNlOiBUaHJvdyBpZiBjbG9zZSgpLWVkIG1vcmUgdGhhbiBvbmNlJyk7Ci0KLXRl
c3QoKCkgPT4gewotICBsZXQgY29udHJvbGxlcjsKLQotICBuZXcgUmVhZGFibGVTdHJlYW0oewot
ICAgIHN0YXJ0KGMpIHsKLSAgICAgIGNvbnRyb2xsZXIgPSBjOwotICAgIH0sCi0gICAgdHlwZTog
J2J5dGVzJwotICB9KTsKLQotICAvLyBFbnF1ZXVlIGEgY2h1bmsgc28gdGhhdCB0aGUgc3RyZWFt
IGRvZXNuJ3QgZ2V0IGNsb3NlZC4gVGhpcyBpcyB0byBjaGVjayBlbnF1ZXVlKCkgYWZ0ZXIgY2xv
c2UoKSBpcyAgcmVqZWN0ZWQKLSAgLy8gZXZlbiBpZiB0aGUgc3RyZWFtIGhhcyBub3QgeWV0IGVu
dGVyZWQgdGhlIGNsb3NlZCBzdGF0ZS4KLSAgY29uc3QgdmlldyA9IG5ldyBVaW50OEFycmF5KDEp
OwotICBjb250cm9sbGVyLmVucXVldWUodmlldyk7Ci0gIGNvbnRyb2xsZXIuY2xvc2UoKTsKLQot
ICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gY29udHJvbGxlci5lbnF1ZXVl
KHZpZXcpLCAnY29udHJvbGxlci5jbG9zZSgpIG11c3QgdGhyb3cnKTsKLX0sICdSZWFkYWJsZVN0
cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBUaHJvdyBvbiBlbnF1ZXVlKCkgYWZ0ZXIgY2xvc2UoKScp
OwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotICBsZXQgY29udHJvbGxlcjsKLSAgbGV0IGJ5b2JS
ZXF1ZXN0OwotICBsZXQgdmlld0luZm87Ci0KLSAgY29uc3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxl
U3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0gICAgICBjb250cm9sbGVyID0gYzsKLSAgICB9LAot
ICAgIHB1bGwoKSB7Ci0gICAgICBieW9iUmVxdWVzdCA9IGNvbnRyb2xsZXIuYnlvYlJlcXVlc3Q7
Ci0gICAgICBjb25zdCB2aWV3ID0gY29udHJvbGxlci5ieW9iUmVxdWVzdC52aWV3OwotICAgICAg
dmlld0luZm8gPSBleHRyYWN0Vmlld0luZm8odmlldyk7Ci0KLSAgICAgIHZpZXdbMTVdID0gMHgw
MTsKLSAgICAgIGNvbnRyb2xsZXIuYnlvYlJlcXVlc3QucmVzcG9uZCgxNik7Ci0gICAgICBjb250
cm9sbGVyLmNsb3NlKCk7Ci0gICAgfSwKLSAgICB0eXBlOiAnYnl0ZXMnCi0gIH0pOwotCi0gIGNv
bnN0IHJlYWRlciA9IHN0cmVhbS5nZXRSZWFkZXIoeyBtb2RlOiAnYnlvYicgfSk7Ci0KLSAgcmV0
dXJuIHJlYWRlci5yZWFkKG5ldyBVaW50OEFycmF5KDE2KSkudGhlbihyZXN1bHQgPT4gewotICAg
IGFzc2VydF9lcXVhbHMocmVzdWx0LmRvbmUsIGZhbHNlKTsKLQotICAgIGNvbnN0IHZpZXcgPSBy
ZXN1bHQudmFsdWU7Ci0gICAgYXNzZXJ0X2VxdWFscyh2aWV3LmJ5dGVPZmZzZXQsIDApOwotICAg
IGFzc2VydF9lcXVhbHModmlldy5ieXRlTGVuZ3RoLCAxNik7Ci0gICAgYXNzZXJ0X2VxdWFscyh2
aWV3WzE1XSwgMHgwMSk7Ci0KLSAgICByZXR1cm4gcmVhZGVyLnJlYWQobmV3IFVpbnQ4QXJyYXko
MTYpKTsKLSAgfSkudGhlbihyZXN1bHQgPT4gewotICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LmRv
bmUsIHRydWUpOwotCi0gICAgY29uc3QgdmlldyA9IHJlc3VsdC52YWx1ZTsKLSAgICBhc3NlcnRf
ZXF1YWxzKHZpZXcuYnl0ZU9mZnNldCwgMCk7Ci0gICAgYXNzZXJ0X2VxdWFscyh2aWV3LmJ5dGVM
ZW5ndGgsIDApOwotCi0gICAgYXNzZXJ0X25vdF9lcXVhbHMoYnlvYlJlcXVlc3QsIHVuZGVmaW5l
ZCwgJ2J5b2JSZXF1ZXN0IG11c3Qgbm90IGJlIHVuZGVmaW5lZCcpOwotICAgIGFzc2VydF9lcXVh
bHModmlld0luZm8uY29uc3RydWN0b3IsIFVpbnQ4QXJyYXksICd2aWV3LmNvbnN0cnVjdG9yIHNo
b3VsZCBiZSBVaW50OEFycmF5Jyk7Ci0gICAgYXNzZXJ0X2VxdWFscyh2aWV3SW5mby5idWZmZXJC
eXRlTGVuZ3RoLCAxNiwgJ3ZpZXcuYnVmZmVyLmJ5dGVMZW5ndGggc2hvdWxkIGJlIDE2Jyk7Ci0g
ICAgYXNzZXJ0X2VxdWFscyh2aWV3SW5mby5ieXRlT2Zmc2V0LCAwLCAndmlldy5ieXRlT2Zmc2V0
IHNob3VsZCBiZSAwJyk7Ci0gICAgYXNzZXJ0X2VxdWFscyh2aWV3SW5mby5ieXRlTGVuZ3RoLCAx
NiwgJ3ZpZXcuYnl0ZUxlbmd0aCBzaG91bGQgYmUgMTYnKTsKLSAgfSk7Ci19LCAnUmVhZGFibGVT
dHJlYW0gd2l0aCBieXRlIHNvdXJjZTogcmVhZCh2aWV3KSwgdGhlbiByZXNwb25kKCkgYW5kIGNs
b3NlKCkgaW4gcHVsbCgpJyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0gIGxldCBwdWxsQ291
bnQgPSAwOwotCi0gIGxldCBjb250cm9sbGVyOwotICBjb25zdCB2aWV3SW5mb3MgPSBbXTsKLQot
ICBjb25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAg
ICAgIGNvbnRyb2xsZXIgPSBjOwotICAgIH0sCi0gICAgcHVsbCgpIHsKLSAgICAgIGlmIChjb250
cm9sbGVyLmJ5b2JSZXF1ZXN0ID09PSB1bmRlZmluZWQpIHsKLSAgICAgICAgcmV0dXJuOwotICAg
ICAgfQotCi0gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDQ7ICsraSkgewotICAgICAgICBjb25z
dCB2aWV3ID0gY29udHJvbGxlci5ieW9iUmVxdWVzdC52aWV3OwotICAgICAgICB2aWV3SW5mb3Mu
cHVzaChleHRyYWN0Vmlld0luZm8odmlldykpOwotCi0gICAgICAgIHZpZXdbMF0gPSAweDAxOwot
ICAgICAgICBjb250cm9sbGVyLmJ5b2JSZXF1ZXN0LnJlc3BvbmQoMSk7Ci0gICAgICB9Ci0KLSAg
ICAgICsrcHVsbENvdW50OwotICAgIH0sCi0gICAgdHlwZTogJ2J5dGVzJwotICB9KTsKLQotICBj
b25zdCByZWFkZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKHsgbW9kZTogJ2J5b2InIH0pOwotCi0gIHJl
dHVybiByZWFkZXIucmVhZChuZXcgVWludDMyQXJyYXkoMSkpLnRoZW4ocmVzdWx0ID0+IHsKLSAg
ICBhc3NlcnRfZXF1YWxzKHJlc3VsdC5kb25lLCBmYWxzZSk7Ci0KLSAgICBjb25zdCB2aWV3ID0g
cmVzdWx0LnZhbHVlOwotICAgIGFzc2VydF9lcXVhbHModmlldy5ieXRlT2Zmc2V0LCAwKTsKLSAg
ICBhc3NlcnRfZXF1YWxzKHZpZXcuYnl0ZUxlbmd0aCwgNCk7Ci0gICAgYXNzZXJ0X2VxdWFscyh2
aWV3WzBdLCAweDAxMDEwMTAxKTsKLQotICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAxLCAn
cHVsbCgpIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBvbmNlJyk7Ci0KLSAgICBmb3IgKGxldCBpID0g
MDsgaSA8IDQ7ICsraSkgewotICAgICAgYXNzZXJ0X2VxdWFscyh2aWV3SW5mb3NbaV0uY29uc3Ry
dWN0b3IsIFVpbnQ4QXJyYXksICd2aWV3LmNvbnN0cnVjdG9yIHNob3VsZCBiZSBVaW50OEFycmF5
Jyk7Ci0gICAgICBhc3NlcnRfZXF1YWxzKHZpZXdJbmZvc1tpXS5idWZmZXJCeXRlTGVuZ3RoLCA0
LCAndmlldy5idWZmZXIuYnl0ZUxlbmd0aCBzaG91bGQgYmUgNCcpOwotCi0gICAgICBhc3NlcnRf
ZXF1YWxzKHZpZXdJbmZvc1tpXS5ieXRlT2Zmc2V0LCBpLCAndmlldy5ieXRlT2Zmc2V0IHNob3Vs
ZCBiZSBpJyk7Ci0gICAgICBhc3NlcnRfZXF1YWxzKHZpZXdJbmZvc1tpXS5ieXRlTGVuZ3RoLCA0
IC0gaSwgJ3ZpZXcuYnl0ZUxlbmd0aCBzaG91bGQgYmUgNCAtIGknKTsKLSAgICB9Ci0gIH0pOwot
fSwgJ1JlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IHJlYWQodmlldykgd2l0aCBVaW50
MzJBcnJheSwgdGhlbiBmaWxsIGl0IGJ5IG11bHRpcGxlIHJlc3BvbmQoKSBjYWxscycpOwotCi1w
cm9taXNlX3Rlc3QoKCkgPT4gewotICBsZXQgcHVsbENvdW50ID0gMDsKLQotICBsZXQgY29udHJv
bGxlcjsKLSAgbGV0IGJ5b2JSZXF1ZXN0OwotCi0gIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJs
ZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgY29udHJvbGxlciA9IGM7Ci0gICAgfSwK
LSAgICBwdWxsKCkgewotICAgICAgYnlvYlJlcXVlc3QgPSBjb250cm9sbGVyLmJ5b2JSZXF1ZXN0
OwotCi0gICAgICArK3B1bGxDb3VudDsKLSAgICB9LAotICAgIHR5cGU6ICdieXRlcycKLSAgfSk7
Ci0KLSAgY29uc3QgcmVhZGVyID0gc3RyZWFtLmdldFJlYWRlcigpOwotCi0gIGNvbnN0IHAwID0g
cmVhZGVyLnJlYWQoKS50aGVuKHJlc3VsdCA9PiB7Ci0gICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291
bnQsIDEpOwotCi0gICAgY29udHJvbGxlci5lbnF1ZXVlKG5ldyBVaW50OEFycmF5KDIpKTsKLQot
ICAgIC8vIFNpbmNlIHRoZSBxdWV1ZSBoYXMgZGF0YSBubyBsZXNzIHRoYW4gSFdNLCBubyBtb3Jl
IHB1bGwuCi0gICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDEpOwotCi0gICAgYXNzZXJ0X2Vx
dWFscyhyZXN1bHQuZG9uZSwgZmFsc2UpOwotCi0gICAgY29uc3QgdmlldyA9IHJlc3VsdC52YWx1
ZTsKLSAgICBhc3NlcnRfZXF1YWxzKHZpZXcuY29uc3RydWN0b3IsIFVpbnQ4QXJyYXkpOwotICAg
IGFzc2VydF9lcXVhbHModmlldy5idWZmZXIuYnl0ZUxlbmd0aCwgMSk7Ci0gICAgYXNzZXJ0X2Vx
dWFscyh2aWV3LmJ5dGVPZmZzZXQsIDApOwotICAgIGFzc2VydF9lcXVhbHModmlldy5ieXRlTGVu
Z3RoLCAxKTsKLSAgfSk7Ci0KLSAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDAsICdObyBwdWxs
IHNob3VsZCBoYXZlIGJlZW4gbWFkZSBzaW5jZSB0aGUgc3RhcnRQcm9taXNlIGhhcyBub3QgeWV0
IGJlZW4gaGFuZGxlZCcpOwotCi0gIGNvbnN0IHAxID0gcmVhZGVyLnJlYWQoKS50aGVuKHJlc3Vs
dCA9PiB7Ci0gICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDEpOwotCi0gICAgYXNzZXJ0X2Vx
dWFscyhyZXN1bHQuZG9uZSwgZmFsc2UpOwotCi0gICAgY29uc3QgdmlldyA9IHJlc3VsdC52YWx1
ZTsKLSAgICBhc3NlcnRfZXF1YWxzKHZpZXcuY29uc3RydWN0b3IsIFVpbnQ4QXJyYXkpOwotICAg
IGFzc2VydF9lcXVhbHModmlldy5idWZmZXIuYnl0ZUxlbmd0aCwgMik7Ci0gICAgYXNzZXJ0X2Vx
dWFscyh2aWV3LmJ5dGVPZmZzZXQsIDApOwotICAgIGFzc2VydF9lcXVhbHModmlldy5ieXRlTGVu
Z3RoLCAyKTsKLQotICAgIGFzc2VydF9lcXVhbHMoYnlvYlJlcXVlc3QsIHVuZGVmaW5lZCwgJ2J5
b2JSZXF1ZXN0IG11c3QgYmUgdW5kZWZpbmVkJyk7Ci0gIH0pOwotCi0gIGFzc2VydF9lcXVhbHMo
cHVsbENvdW50LCAwLCAnTm8gcHVsbCBzaG91bGQgaGF2ZSBiZWVuIG1hZGUgc2luY2UgdGhlIHN0
YXJ0UHJvbWlzZSBoYXMgbm90IHlldCBiZWVuIGhhbmRsZWQnKTsKLQotICBjb250cm9sbGVyLmVu
cXVldWUobmV3IFVpbnQ4QXJyYXkoMSkpOwotCi0gIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAw
LCAnTm8gcHVsbCBzaG91bGQgaGF2ZSBiZWVuIG1hZGUgc2luY2UgdGhlIHN0YXJ0UHJvbWlzZSBo
YXMgbm90IHlldCBiZWVuIGhhbmRsZWQnKTsKLQotICByZXR1cm4gUHJvbWlzZS5hbGwoW3AwLCBw
MV0pOwotfSwgJ1JlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IHJlYWQoKSB0d2ljZSwg
dGhlbiBlbnF1ZXVlKCkgdHdpY2UnKTsKLQotcHJvbWlzZV90ZXN0KHQgPT4gewotICBsZXQgY29u
dHJvbGxlcjsKLQotICBjb25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0
YXJ0KGMpIHsKLSAgICAgIGNvbnRyb2xsZXIgPSBjOwotICAgIH0sCi0gICAgcHVsbDogdC51bnJl
YWNoZWRfZnVuYygncHVsbCgpIHNob3VsZCBub3QgYmUgY2FsbGVkJyksCi0gICAgdHlwZTogJ2J5
dGVzJwotICB9KTsKLQotICBjb25zdCByZWFkZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKHsgbW9kZTog
J2J5b2InIH0pOwotCi0gIGNvbnN0IHAwID0gcmVhZGVyLnJlYWQobmV3IFVpbnQ4QXJyYXkoMTYp
KS50aGVuKHJlc3VsdCA9PiB7Ci0gICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQuZG9uZSwgdHJ1ZSwg
JzFzdCByZWFkOiBkb25lJyk7Ci0KLSAgICBjb25zdCB2aWV3ID0gcmVzdWx0LnZhbHVlOwotICAg
IGFzc2VydF9lcXVhbHModmlldy5idWZmZXIuYnl0ZUxlbmd0aCwgMTYsICcxc3QgcmVhZDogYnVm
ZmVyLmJ5dGVMZW5ndGgnKTsKLSAgICBhc3NlcnRfZXF1YWxzKHZpZXcuYnl0ZU9mZnNldCwgMCwg
JzFzdCByZWFkOiBieXRlT2Zmc2V0Jyk7Ci0gICAgYXNzZXJ0X2VxdWFscyh2aWV3LmJ5dGVMZW5n
dGgsIDAsICcxc3QgcmVhZDogYnl0ZUxlbmd0aCcpOwotICB9KTsKLQotICBjb25zdCBwMSA9IHJl
YWRlci5yZWFkKG5ldyBVaW50OEFycmF5KDMyKSkudGhlbihyZXN1bHQgPT4gewotICAgIGFzc2Vy
dF9lcXVhbHMocmVzdWx0LmRvbmUsIHRydWUsICcybmQgcmVhZDogZG9uZScpOwotCi0gICAgY29u
c3QgdmlldyA9IHJlc3VsdC52YWx1ZTsKLSAgICBhc3NlcnRfZXF1YWxzKHZpZXcuYnVmZmVyLmJ5
dGVMZW5ndGgsIDMyLCAnMm5kIHJlYWQ6IGJ1ZmZlci5ieXRlTGVuZ3RoJyk7Ci0gICAgYXNzZXJ0
X2VxdWFscyh2aWV3LmJ5dGVPZmZzZXQsIDAsICcybmQgcmVhZDogYnl0ZU9mZnNldCcpOwotICAg
IGFzc2VydF9lcXVhbHModmlldy5ieXRlTGVuZ3RoLCAwLCAnMm5kIHJlYWQ6IGJ5dGVMZW5ndGgn
KTsKLSAgfSk7Ci0KLSAgY29udHJvbGxlci5jbG9zZSgpOwotICBjb250cm9sbGVyLmJ5b2JSZXF1
ZXN0LnJlc3BvbmQoMCk7Ci0KLSAgcmV0dXJuIFByb21pc2UuYWxsKFtwMCwgcDFdKTsKLX0sICdS
ZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBNdWx0aXBsZSByZWFkKHZpZXcpLCBjbG9z
ZSgpIGFuZCByZXNwb25kKCknKTsKLQotcHJvbWlzZV90ZXN0KHQgPT4gewotICBsZXQgY29udHJv
bGxlcjsKLQotICBjb25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0
KGMpIHsKLSAgICAgIGNvbnRyb2xsZXIgPSBjOwotICAgIH0sCi0gICAgcHVsbDogdC51bnJlYWNo
ZWRfZnVuYygncHVsbCgpIHNob3VsZCBub3QgYmUgY2FsbGVkJyksCi0gICAgdHlwZTogJ2J5dGVz
JwotICB9KTsKLQotICBjb25zdCByZWFkZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKHsgbW9kZTogJ2J5
b2InIH0pOwotCi0gIGNvbnN0IHAwID0gcmVhZGVyLnJlYWQobmV3IFVpbnQ4QXJyYXkoMTYpKS50
aGVuKHJlc3VsdCA9PiB7Ci0gICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQuZG9uZSwgZmFsc2UsICcx
c3QgcmVhZDogZG9uZScpOwotCi0gICAgY29uc3QgdmlldyA9IHJlc3VsdC52YWx1ZTsKLSAgICBh
c3NlcnRfZXF1YWxzKHZpZXcuYnVmZmVyLmJ5dGVMZW5ndGgsIDE2LCAnMXN0IHJlYWQ6IGJ1ZmZl
ci5ieXRlTGVuZ3RoJyk7Ci0gICAgYXNzZXJ0X2VxdWFscyh2aWV3LmJ5dGVPZmZzZXQsIDAsICcx
c3QgcmVhZDogYnl0ZU9mZnNldCcpOwotICAgIGFzc2VydF9lcXVhbHModmlldy5ieXRlTGVuZ3Ro
LCAxNiwgJzFzdCByZWFkOiBieXRlTGVuZ3RoJyk7Ci0gIH0pOwotCi0gIGNvbnN0IHAxID0gcmVh
ZGVyLnJlYWQobmV3IFVpbnQ4QXJyYXkoMTYpKS50aGVuKHJlc3VsdCA9PiB7Ci0gICAgYXNzZXJ0
X2VxdWFscyhyZXN1bHQuZG9uZSwgZmFsc2UsICcybmQgcmVhZDogZG9uZScpOwotCi0gICAgY29u
c3QgdmlldyA9IHJlc3VsdC52YWx1ZTsKLSAgICBhc3NlcnRfZXF1YWxzKHZpZXcuYnVmZmVyLmJ5
dGVMZW5ndGgsIDE2LCAnMm5kIHJlYWQ6IGJ1ZmZlci5ieXRlTGVuZ3RoJyk7Ci0gICAgYXNzZXJ0
X2VxdWFscyh2aWV3LmJ5dGVPZmZzZXQsIDAsICcybmQgcmVhZDogYnl0ZU9mZnNldCcpOwotICAg
IGFzc2VydF9lcXVhbHModmlldy5ieXRlTGVuZ3RoLCA4LCAnMm5kIHJlYWQ6IGJ5dGVMZW5ndGgn
KTsKLSAgfSk7Ci0KLSAgY29udHJvbGxlci5lbnF1ZXVlKG5ldyBVaW50OEFycmF5KDI0KSk7Ci0K
LSAgcmV0dXJuIFByb21pc2UuYWxsKFtwMCwgcDFdKTsKLX0sICdSZWFkYWJsZVN0cmVhbSB3aXRo
IGJ5dGUgc291cmNlOiBNdWx0aXBsZSByZWFkKHZpZXcpLCBiaWcgZW5xdWV1ZSgpJyk7Ci0KLXBy
b21pc2VfdGVzdCh0ID0+IHsKLSAgbGV0IGNvbnRyb2xsZXI7Ci0KLSAgY29uc3Qgc3RyZWFtID0g
bmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0gICAgICBjb250cm9sbGVyID0g
YzsKLSAgICB9LAotICAgIHB1bGw6IHQudW5yZWFjaGVkX2Z1bmMoJ3B1bGwoKSBzaG91bGQgbm90
IGJlIGNhbGxlZCcpLAotICAgIHR5cGU6ICdieXRlcycKLSAgfSk7Ci0KLSAgY29uc3QgcmVhZGVy
ID0gc3RyZWFtLmdldFJlYWRlcih7IG1vZGU6ICdieW9iJyB9KTsKLQotICBsZXQgYnl0ZXNSZWFk
ID0gMDsKLQotICBmdW5jdGlvbiBwdW1wKCkgewotICAgIHJldHVybiByZWFkZXIucmVhZChuZXcg
VWludDhBcnJheSg3KSkudGhlbihyZXN1bHQgPT4gewotICAgICAgaWYgKHJlc3VsdC5kb25lKSB7
Ci0gICAgICAgIGFzc2VydF9lcXVhbHMoYnl0ZXNSZWFkLCAxMDI0KTsKLSAgICAgICAgcmV0dXJu
IHVuZGVmaW5lZDsKLSAgICAgIH0KLQotICAgICAgYnl0ZXNSZWFkICs9IHJlc3VsdC52YWx1ZS5i
eXRlTGVuZ3RoOwotCi0gICAgICByZXR1cm4gcHVtcCgpOwotICAgIH0pOwotICB9Ci0gIGNvbnN0
IHByb21pc2UgPSBwdW1wKCk7Ci0KLSAgY29udHJvbGxlci5lbnF1ZXVlKG5ldyBVaW50OEFycmF5
KDUxMikpOwotICBjb250cm9sbGVyLmVucXVldWUobmV3IFVpbnQ4QXJyYXkoNTEyKSk7Ci0gIGNv
bnRyb2xsZXIuY2xvc2UoKTsKLQotICByZXR1cm4gcHJvbWlzZTsKLX0sICdSZWFkYWJsZVN0cmVh
bSB3aXRoIGJ5dGUgc291cmNlOiBNdWx0aXBsZSByZWFkKHZpZXcpIGFuZCBtdWx0aXBsZSBlbnF1
ZXVlKCknKTsKLQotcHJvbWlzZV90ZXN0KHQgPT4gewotICBsZXQgYnlvYlJlcXVlc3Q7Ci0gIGNv
bnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgcHVsbChjb250cm9sbGVyKSB7
Ci0gICAgICBieW9iUmVxdWVzdCA9IGNvbnRyb2xsZXIuYnlvYlJlcXVlc3Q7Ci0gICAgfSwKLSAg
ICB0eXBlOiAnYnl0ZXMnCi0gIH0pOwotCi0gIGNvbnN0IHJlYWRlciA9IHN0cmVhbS5nZXRSZWFk
ZXIoeyBtb2RlOiAnYnlvYicgfSk7Ci0KLSAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0LCBuZXcg
VHlwZUVycm9yKCksIHJlYWRlci5yZWFkKCksICdyZWFkKCkgbXVzdCBmYWlsJykKLSAgICAgIC50
aGVuKCgpID0+IGFzc2VydF9lcXVhbHMoYnlvYlJlcXVlc3QsIHVuZGVmaW5lZCwgJ2J5b2JSZXF1
ZXN0IG11c3QgYmUgdW5kZWZpbmVkJykpOwotfSwgJ1JlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBz
b3VyY2U6IHJlYWQodmlldykgd2l0aCBwYXNzaW5nIHVuZGVmaW5lZCBhcyB2aWV3IG11c3QgZmFp
bCcpOwotCi1wcm9taXNlX3Rlc3QodCA9PiB7Ci0gIGxldCBieW9iUmVxdWVzdDsKLSAgY29uc3Qg
c3RyZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBwdWxsKGNvbnRyb2xsZXIpIHsKLSAg
ICAgIGJ5b2JSZXF1ZXN0ID0gY29udHJvbGxlci5ieW9iUmVxdWVzdDsKLSAgICB9LAotICAgIHR5
cGU6ICdieXRlcycKLSAgfSk7Ci0KLSAgY29uc3QgcmVhZGVyID0gc3RyZWFtLmdldFJlYWRlcih7
IG1vZGU6ICdieW9iJyB9KTsKLQotICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHQsIG5ldyBUeXBl
RXJyb3IoKSwgcmVhZGVyLnJlYWQobmV3IFVpbnQ4QXJyYXkoMCkpLCAncmVhZCh2aWV3KSBtdXN0
IGZhaWwnKQotICAgICAgLnRoZW4oKCkgPT4gYXNzZXJ0X2VxdWFscyhieW9iUmVxdWVzdCwgdW5k
ZWZpbmVkLCAnYnlvYlJlcXVlc3QgbXVzdCBiZSB1bmRlZmluZWQnKSk7Ci19LCAnUmVhZGFibGVT
dHJlYW0gd2l0aCBieXRlIHNvdXJjZTogcmVhZCh2aWV3KSB3aXRoIHplcm8tbGVuZ3RoIHZpZXcg
bXVzdCBmYWlsJyk7Ci0KLXByb21pc2VfdGVzdCh0ID0+IHsKLSAgY29uc3Qgc3RyZWFtID0gbmV3
IFJlYWRhYmxlU3RyZWFtKHsKLSAgICB0eXBlOiAnYnl0ZXMnCi0gIH0pOwotCi0gIGNvbnN0IHJl
YWRlciA9IHN0cmVhbS5nZXRSZWFkZXIoeyBtb2RlOiAnYnlvYicgfSk7Ci0KLSAgcmV0dXJuIHBy
b21pc2VfcmVqZWN0cyh0LCBuZXcgVHlwZUVycm9yKCksIHJlYWRlci5yZWFkKHt9KSwgJ3JlYWQo
dmlldykgbXVzdCBmYWlsJyk7Ci19LCAnUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTog
cmVhZCh2aWV3KSB3aXRoIHBhc3NpbmcgYW4gZW1wdHkgb2JqZWN0IGFzIHZpZXcgbXVzdCBmYWls
Jyk7Ci0KLXByb21pc2VfdGVzdCh0ID0+IHsKLSAgY29uc3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxl
U3RyZWFtKHsKLSAgICB0eXBlOiAnYnl0ZXMnCi0gIH0pOwotCi0gIGNvbnN0IHJlYWRlciA9IHN0
cmVhbS5nZXRSZWFkZXIoeyBtb2RlOiAnYnlvYicgfSk7Ci0KLSAgcmV0dXJuIHByb21pc2VfcmVq
ZWN0cyh0LCBuZXcgVHlwZUVycm9yKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmVhZGVy
LnJlYWQoeyBidWZmZXI6IG5ldyBBcnJheUJ1ZmZlcigxMCksIGJ5dGVPZmZzZXQ6IDAsIGJ5dGVM
ZW5ndGg6IDEwIH0pLAotICAgICAgICAgICAgICAgICAgICAgICAgICdyZWFkKHZpZXcpIG11c3Qg
ZmFpbCcpOwotfSwgJ1JlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IEV2ZW4gcmVhZCh2
aWV3KSB3aXRoIHBhc3NpbmcgQXJyYXlCdWZmZXJWaWV3IGxpa2Ugb2JqZWN0IGFzIHZpZXcgbXVz
dCBmYWlsJyk7Ci0KLXByb21pc2VfdGVzdCh0ID0+IHsKLSAgY29uc3Qgc3RyZWFtID0gbmV3IFJl
YWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0gICAgICBjLmVycm9yKGVycm9yMSk7Ci0g
ICAgfSwKLSAgICBwdWxsOiB0LnVucmVhY2hlZF9mdW5jKCdwdWxsKCkgc2hvdWxkIG5vdCBiZSBj
YWxsZWQnKSwKLSAgICB0eXBlOiAnYnl0ZXMnCi0gIH0pOwotCi0gIGNvbnN0IHJlYWRlciA9IHN0
cmVhbS5nZXRSZWFkZXIoKTsKLQotICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHQsIGVycm9yMSwg
cmVhZGVyLnJlYWQoKSwgJ3JlYWQoKSBtdXN0IGZhaWwnKTsKLX0sICdSZWFkYWJsZVN0cmVhbSB3
aXRoIGJ5dGUgc291cmNlOiByZWFkKCkgb24gYW4gZXJyb3JlZCBzdHJlYW0nKTsKLQotcHJvbWlz
ZV90ZXN0KHQgPT4gewotICBsZXQgY29udHJvbGxlcjsKLQotICBjb25zdCBzdHJlYW0gPSBuZXcg
UmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGNvbnRyb2xsZXIgPSBjOwot
ICAgIH0sCi0gICAgdHlwZTogJ2J5dGVzJwotICB9KTsKLQotICBjb25zdCByZWFkZXIgPSBzdHJl
YW0uZ2V0UmVhZGVyKCk7Ci0KLSAgY29uc3QgcHJvbWlzZSA9IHByb21pc2VfcmVqZWN0cyh0LCBl
cnJvcjEsIHJlYWRlci5yZWFkKCksICdyZWFkKCkgbXVzdCBmYWlsJyk7Ci0KLSAgY29udHJvbGxl
ci5lcnJvcihlcnJvcjEpOwotCi0gIHJldHVybiBwcm9taXNlOwotfSwgJ1JlYWRhYmxlU3RyZWFt
IHdpdGggYnl0ZSBzb3VyY2U6IHJlYWQoKSwgdGhlbiBlcnJvcigpJyk7Ci0KLXByb21pc2VfdGVz
dCh0ID0+IHsKLSAgY29uc3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFy
dChjKSB7Ci0gICAgICBjLmVycm9yKGVycm9yMSk7Ci0gICAgfSwKLSAgICBwdWxsOiB0LnVucmVh
Y2hlZF9mdW5jKCdwdWxsKCkgc2hvdWxkIG5vdCBiZSBjYWxsZWQnKSwKLSAgICB0eXBlOiAnYnl0
ZXMnCi0gIH0pOwotCi0gIGNvbnN0IHJlYWRlciA9IHN0cmVhbS5nZXRSZWFkZXIoeyBtb2RlOiAn
YnlvYicgfSk7Ci0KLSAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0LCBlcnJvcjEsIHJlYWRlci5y
ZWFkKG5ldyBVaW50OEFycmF5KDEpKSwgJ3JlYWQoKSBtdXN0IGZhaWwnKTsKLX0sICdSZWFkYWJs
ZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiByZWFkKHZpZXcpIG9uIGFuIGVycm9yZWQgc3RyZWFt
Jyk7Ci0KLXByb21pc2VfdGVzdCh0ID0+IHsKLSAgbGV0IGNvbnRyb2xsZXI7Ci0KLSAgY29uc3Qg
c3RyZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0gICAgICBjb250
cm9sbGVyID0gYzsKLSAgICB9LAotICAgIHR5cGU6ICdieXRlcycKLSAgfSk7Ci0KLSAgY29uc3Qg
cmVhZGVyID0gc3RyZWFtLmdldFJlYWRlcih7IG1vZGU6ICdieW9iJyB9KTsKLQotICBjb25zdCBw
cm9taXNlID0gcHJvbWlzZV9yZWplY3RzKHQsIGVycm9yMSwgcmVhZGVyLnJlYWQobmV3IFVpbnQ4
QXJyYXkoMSkpLCAncmVhZCgpIG11c3QgZmFpbCcpOwotCi0gIGNvbnRyb2xsZXIuZXJyb3IoZXJy
b3IxKTsKLQotICByZXR1cm4gcHJvbWlzZTsKLX0sICdSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUg
c291cmNlOiByZWFkKHZpZXcpLCB0aGVuIGVycm9yKCknKTsKLQotcHJvbWlzZV90ZXN0KHQgPT4g
ewotICBsZXQgY29udHJvbGxlcjsKLSAgbGV0IGJ5b2JSZXF1ZXN0OwotCi0gIGNvbnN0IHRlc3RF
cnJvciA9IG5ldyBUeXBlRXJyb3IoJ2ZvbycpOwotCi0gIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFk
YWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgY29udHJvbGxlciA9IGM7Ci0gICAg
fSwKLSAgICBwdWxsKCkgewotICAgICAgYnlvYlJlcXVlc3QgPSBjb250cm9sbGVyLmJ5b2JSZXF1
ZXN0OwotICAgICAgdGhyb3cgdGVzdEVycm9yOwotICAgIH0sCi0gICAgdHlwZTogJ2J5dGVzJwot
ICB9KTsKLQotICBjb25zdCByZWFkZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKCk7Ci0KLSAgY29uc3Qg
cHJvbWlzZSA9IHByb21pc2VfcmVqZWN0cyh0LCB0ZXN0RXJyb3IsIHJlYWRlci5yZWFkKCksICdy
ZWFkKCkgbXVzdCBmYWlsJyk7Ci0gIHJldHVybiBwcm9taXNlX3JlamVjdHModCwgdGVzdEVycm9y
LCBwcm9taXNlLnRoZW4oKCkgPT4gcmVhZGVyLmNsb3NlZCkpCi0gICAgICAudGhlbigoKSA9PiBh
c3NlcnRfZXF1YWxzKGJ5b2JSZXF1ZXN0LCB1bmRlZmluZWQsICdieW9iUmVxdWVzdCBtdXN0IGJl
IHVuZGVmaW5lZCcpKTsKLX0sICdSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBUaHJv
d2luZyBpbiBwdWxsIGZ1bmN0aW9uIG11c3QgZXJyb3IgdGhlIHN0cmVhbScpOwotCi1wcm9taXNl
X3Rlc3QodCA9PiB7Ci0gIGxldCBieW9iUmVxdWVzdDsKLQotICBjb25zdCBzdHJlYW0gPSBuZXcg
UmVhZGFibGVTdHJlYW0oewotICAgIHB1bGwoY29udHJvbGxlcikgewotICAgICAgYnlvYlJlcXVl
c3QgPSBjb250cm9sbGVyLmJ5b2JSZXF1ZXN0OwotICAgICAgY29udHJvbGxlci5lcnJvcihlcnJv
cjEpOwotICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignZm9vJyk7Ci0gICAgfSwKLSAgICB0eXBl
OiAnYnl0ZXMnCi0gIH0pOwotCi0gIGNvbnN0IHJlYWRlciA9IHN0cmVhbS5nZXRSZWFkZXIoKTsK
LQotICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHQsIGVycm9yMSwgcmVhZGVyLnJlYWQoKSwgJ3Jl
YWQoKSBtdXN0IGZhaWwnKQotICAgICAgLnRoZW4oKCkgPT4gcHJvbWlzZV9yZWplY3RzKHQsIGVy
cm9yMSwgcmVhZGVyLmNsb3NlZCwgJ2Nsb3NlZCBtdXN0IGZhaWwnKSkKLSAgICAgIC50aGVuKCgp
ID0+IGFzc2VydF9lcXVhbHMoYnlvYlJlcXVlc3QsIHVuZGVmaW5lZCwgJ2J5b2JSZXF1ZXN0IG11
c3QgYmUgdW5kZWZpbmVkJykpOwotfSwgJ1JlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6
IFRocm93aW5nIGluIHB1bGwgaW4gcmVzcG9uc2UgdG8gcmVhZCgpIG11c3QgYmUgaWdub3JlZCBp
ZiB0aGUgc3RyZWFtIGlzICcgKwotICAgJ2Vycm9yZWQgaW4gaXQnKTsKLQotcHJvbWlzZV90ZXN0
KHQgPT4gewotICBsZXQgYnlvYlJlcXVlc3Q7Ci0KLSAgY29uc3QgdGVzdEVycm9yID0gbmV3IFR5
cGVFcnJvcignZm9vJyk7Ci0KLSAgY29uc3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsK
LSAgICBwdWxsKGNvbnRyb2xsZXIpIHsKLSAgICAgIGJ5b2JSZXF1ZXN0ID0gY29udHJvbGxlci5i
eW9iUmVxdWVzdDsKLSAgICAgIHRocm93IHRlc3RFcnJvcjsKLSAgICB9LAotICAgIHR5cGU6ICdi
eXRlcycKLSAgfSk7Ci0KLSAgY29uc3QgcmVhZGVyID0gc3RyZWFtLmdldFJlYWRlcih7IG1vZGU6
ICdieW9iJyB9KTsKLQotICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHQsIHRlc3RFcnJvciwgcmVh
ZGVyLnJlYWQobmV3IFVpbnQ4QXJyYXkoMSkpLCAncmVhZCh2aWV3KSBtdXN0IGZhaWwnKQotICAg
ICAgLnRoZW4oKCkgPT4gcHJvbWlzZV9yZWplY3RzKHQsIHRlc3RFcnJvciwgcmVhZGVyLmNsb3Nl
ZCwgJ3JlYWRlci5jbG9zZWQgbXVzdCByZWplY3QnKSkKLSAgICAgIC50aGVuKCgpID0+IGFzc2Vy
dF9ub3RfZXF1YWxzKGJ5b2JSZXF1ZXN0LCB1bmRlZmluZWQsICdieW9iUmVxdWVzdCBtdXN0IG5v
dCBiZSB1bmRlZmluZWQnKSk7Ci19LCAnUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTog
VGhyb3dpbmcgaW4gcHVsbCBpbiByZXNwb25zZSB0byByZWFkKHZpZXcpIGZ1bmN0aW9uIG11c3Qg
ZXJyb3IgdGhlIHN0cmVhbScpOwotCi1wcm9taXNlX3Rlc3QodCA9PiB7Ci0gIGxldCBieW9iUmVx
dWVzdDsKLQotICBjb25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHB1bGwo
Y29udHJvbGxlcikgewotICAgICAgYnlvYlJlcXVlc3QgPSBjb250cm9sbGVyLmJ5b2JSZXF1ZXN0
OwotICAgICAgY29udHJvbGxlci5lcnJvcihlcnJvcjEpOwotICAgICAgdGhyb3cgbmV3IFR5cGVF
cnJvcignZm9vJyk7Ci0gICAgfSwKLSAgICB0eXBlOiAnYnl0ZXMnCi0gIH0pOwotCi0gIGNvbnN0
IHJlYWRlciA9IHN0cmVhbS5nZXRSZWFkZXIoeyBtb2RlOiAnYnlvYicgfSk7Ci0KLSAgcmV0dXJu
IHByb21pc2VfcmVqZWN0cyh0LCBlcnJvcjEsIHJlYWRlci5yZWFkKG5ldyBVaW50OEFycmF5KDEp
KSwgJ3JlYWQodmlldykgbXVzdCBmYWlsJykKLSAgICAgIC50aGVuKCgpID0+IHByb21pc2VfcmVq
ZWN0cyh0LCBlcnJvcjEsIHJlYWRlci5jbG9zZWQsICdjbG9zZWQgbXVzdCBmYWlsJykpCi0gICAg
ICAudGhlbigoKSA9PiBhc3NlcnRfbm90X2VxdWFscyhieW9iUmVxdWVzdCwgdW5kZWZpbmVkLCAn
YnlvYlJlcXVlc3QgbXVzdCBub3QgYmUgdW5kZWZpbmVkJykpOwotfSwgJ1JlYWRhYmxlU3RyZWFt
IHdpdGggYnl0ZSBzb3VyY2U6IFRocm93aW5nIGluIHB1bGwgaW4gcmVzcG9uc2UgdG8gcmVhZCh2
aWV3KSBtdXN0IGJlIGlnbm9yZWQgaWYgdGhlIHN0cmVhbSBpcyAnICsKLSAgICdlcnJvcmVkIGlu
IGl0Jyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0gIGxldCBieW9iUmVxdWVzdDsKLSAgY29u
c3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHB1bGwoY29udHJvbGxlcikgewotICAg
ICAgYnlvYlJlcXVlc3QgPSBjb250cm9sbGVyLmJ5b2JSZXF1ZXN0OwotICAgICAgYnlvYlJlcXVl
c3QucmVzcG9uZCg0KTsKLSAgICB9LAotICAgIHR5cGU6ICdieXRlcycKLSAgfSk7Ci0gIGNvbnN0
IHJlYWRlciA9IHJzLmdldFJlYWRlcih7IG1vZGU6ICdieW9iJyB9KTsKLSAgY29uc3QgdmlldyA9
IG5ldyBVaW50OEFycmF5KDE2KTsKLSAgcmV0dXJuIHJlYWRlci5yZWFkKHZpZXcpLnRoZW4oKCkg
PT4gewotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBieW9iUmVxdWVz
dC5yZXNwb25kKDQpLCAncmVzcG9uZCgpIHNob3VsZCB0aHJvdyBhIFR5cGVFcnJvcicpOwotICB9
KTsKLX0sICdjYWxsaW5nIHJlc3BvbmQoKSB0d2ljZSBvbiB0aGUgc2FtZSBieW9iUmVxdWVzdCBz
aG91bGQgdGhyb3cnKTsKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLSAgbGV0IGJ5b2JSZXF1ZXN0
OwotICBjb25zdCBuZXdWaWV3ID0gKCkgPT4gbmV3IFVpbnQ4QXJyYXkoMTYpOwotICBjb25zdCBy
cyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgcHVsbChjb250cm9sbGVyKSB7Ci0gICAgICBi
eW9iUmVxdWVzdCA9IGNvbnRyb2xsZXIuYnlvYlJlcXVlc3Q7Ci0gICAgICBieW9iUmVxdWVzdC5y
ZXNwb25kV2l0aE5ld1ZpZXcobmV3VmlldygpKTsKLSAgICB9LAotICAgIHR5cGU6ICdieXRlcycK
LSAgfSk7Ci0gIGNvbnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcih7IG1vZGU6ICdieW9iJyB9KTsK
LSAgcmV0dXJuIHJlYWRlci5yZWFkKG5ld1ZpZXcoKSkudGhlbigoKSA9PiB7Ci0gICAgYXNzZXJ0
X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IGJ5b2JSZXF1ZXN0LnJlc3BvbmRXaXRoTmV3
VmlldyhuZXdWaWV3KCkpLAotICAgICAgICAgICAgICAgICAgJ3Jlc3BvbmRXaXRoTmV3Vmlldygp
IHNob3VsZCB0aHJvdyBhIFR5cGVFcnJvcicpOwotICB9KTsKLX0sICdjYWxsaW5nIHJlc3BvbmRX
aXRoTmV3VmlldygpIHR3aWNlIG9uIHRoZSBzYW1lIGJ5b2JSZXF1ZXN0IHNob3VsZCB0aHJvdycp
OwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotICBsZXQgYnlvYlJlcXVlc3Q7Ci0gIGxldCByZXNv
bHZlUHVsbENhbGxlZFByb21pc2U7Ci0gIGNvbnN0IHB1bGxDYWxsZWRQcm9taXNlID0gbmV3IFBy
b21pc2UocmVzb2x2ZSA9PiB7Ci0gICAgcmVzb2x2ZVB1bGxDYWxsZWRQcm9taXNlID0gcmVzb2x2
ZTsKLSAgfSk7Ci0gIGxldCByZXNvbHZlUHVsbDsKLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVT
dHJlYW0oewotICAgIHB1bGwoY29udHJvbGxlcikgewotICAgICAgYnlvYlJlcXVlc3QgPSBjb250
cm9sbGVyLmJ5b2JSZXF1ZXN0OwotICAgICAgcmVzb2x2ZVB1bGxDYWxsZWRQcm9taXNlKCk7Ci0g
ICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7Ci0gICAgICAgIHJlc29sdmVQdWxs
ID0gcmVzb2x2ZTsKLSAgICAgIH0pOwotICAgIH0sCi0gICAgdHlwZTogJ2J5dGVzJwotICB9KTsK
LSAgY29uc3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKHsgbW9kZTogJ2J5b2InIH0pOwotICBjb25z
dCByZWFkUHJvbWlzZSA9IHJlYWRlci5yZWFkKG5ldyBVaW50OEFycmF5KDE2KSk7Ci0gIHJldHVy
biBwdWxsQ2FsbGVkUHJvbWlzZS50aGVuKCgpID0+IHsKLSAgICBjb25zdCBjYW5jZWxQcm9taXNl
ID0gcmVhZGVyLmNhbmNlbCgnbWVoJyk7Ci0gICAgcmVzb2x2ZVB1bGwoKTsKLSAgICBieW9iUmVx
dWVzdC5yZXNwb25kKDApOwotICAgIHJldHVybiBQcm9taXNlLmFsbChbcmVhZFByb21pc2UsIGNh
bmNlbFByb21pc2VdKS50aGVuKCgpID0+IHsKLSAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVF
cnJvcigpLCAoKSA9PiBieW9iUmVxdWVzdC5yZXNwb25kKDApLCAncmVzcG9uZCgpIHNob3VsZCB0
aHJvdycpOwotICAgIH0pOwotICB9KTsKLX0sICdjYWxsaW5nIHJlc3BvbmQoMCkgdHdpY2Ugb24g
dGhlIHNhbWUgYnlvYlJlcXVlc3Qgc2hvdWxkIHRocm93IGV2ZW4gd2hlbiBjbG9zZWQnKTsKLQot
cHJvbWlzZV90ZXN0KCgpID0+IHsKLSAgbGV0IHJlc29sdmVQdWxsQ2FsbGVkUHJvbWlzZTsKLSAg
Y29uc3QgcHVsbENhbGxlZFByb21pc2UgPSBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKLSAgICBy
ZXNvbHZlUHVsbENhbGxlZFByb21pc2UgPSByZXNvbHZlOwotICB9KTsKLSAgbGV0IHJlc29sdmVQ
dWxsOwotICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgcHVsbCgpIHsKLSAg
ICAgIHJlc29sdmVQdWxsQ2FsbGVkUHJvbWlzZSgpOwotICAgICAgcmV0dXJuIG5ldyBQcm9taXNl
KHJlc29sdmUgPT4gewotICAgICAgICByZXNvbHZlUHVsbCA9IHJlc29sdmU7Ci0gICAgICB9KTsK
LSAgICB9LAotICAgIHR5cGU6ICdieXRlcycKLSAgfSk7Ci0gIGNvbnN0IHJlYWRlciA9IHJzLmdl
dFJlYWRlcih7IG1vZGU6ICdieW9iJyB9KTsKLSAgcmVhZGVyLnJlYWQobmV3IFVpbnQ4QXJyYXko
MTYpKTsKLSAgcmV0dXJuIHB1bGxDYWxsZWRQcm9taXNlLnRoZW4oKCkgPT4gewotICAgIHJlc29s
dmVQdWxsKCk7Ci0gICAgcmV0dXJuIGRlbGF5KDApLnRoZW4oKCkgPT4gewotICAgICAgYXNzZXJ0
X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IHJlYWRlci5yZWxlYXNlTG9jaygpLCAncmVs
ZWFzZUxvY2soKSBzaG91bGQgdGhyb3cnKTsKLSAgICB9KTsKLSAgfSk7Ci19LCAncHVsbCgpIHJl
c29sdmluZyBzaG91bGQgbm90IG1ha2UgcmVsZWFzZUxvY2soKSBwb3NzaWJsZScpOwotCi1wcm9t
aXNlX3Rlc3QoKCkgPT4gewotICAvLyBUZXN0cyBodHRwczovL2dpdGh1Yi5jb20vd2hhdHdnL3N0
cmVhbXMvaXNzdWVzLzY4NgotCi0gIGxldCBjb250cm9sbGVyOwotICBjb25zdCBycyA9IG5ldyBS
ZWFkYWJsZVN0cmVhbSh7Ci0gICAgYXV0b0FsbG9jYXRlQ2h1bmtTaXplOiAxMjgsCi0gICAgc3Rh
cnQoYykgewotICAgICAgY29udHJvbGxlciA9IGM7Ci0gICAgfSwKLSAgICB0eXBlOiAnYnl0ZXMn
Ci0gIH0pOwotCi0gIGNvbnN0IHJlYWRQcm9taXNlID0gcnMuZ2V0UmVhZGVyKCkucmVhZCgpOwot
Ci0gIGNvbnN0IGJyID0gY29udHJvbGxlci5ieW9iUmVxdWVzdDsKLSAgY29udHJvbGxlci5jbG9z
ZSgpOwotCi0gIGJyLnJlc3BvbmQoMCk7Ci0KLSAgcmV0dXJuIHJlYWRQcm9taXNlOwotfSwgJ1Jl
YWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IGRlZmF1bHQgcmVhZGVyICsgYXV0b0FsbG9j
YXRlQ2h1bmtTaXplICsgYnlvYlJlcXVlc3QgaW50ZXJhY3Rpb24nKTsKLQotdGVzdCgoKSA9PiB7
Ci0gIGNvbnN0IFJlYWRhYmxlU3RyZWFtQllPQlJlYWRlciA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7
IHR5cGU6ICdieXRlcycgfSkuZ2V0UmVhZGVyKHsgbW9kZTogJ2J5b2InIH0pLmNvbnN0cnVjdG9y
OwotICBjb25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oeyB0eXBlOiAnYnl0ZXMnIH0p
OwotICBuZXcgUmVhZGFibGVTdHJlYW1CWU9CUmVhZGVyKHN0cmVhbSk7Ci19LCAnUmVhZGFibGVT
dHJlYW1CWU9CUmVhZGVyIGNhbiBiZSBjb25zdHJ1Y3RlZCBkaXJlY3RseScpOwotCi10ZXN0KCgp
ID0+IHsKLSAgY29uc3QgUmVhZGFibGVTdHJlYW1CWU9CUmVhZGVyID0gbmV3IFJlYWRhYmxlU3Ry
ZWFtKHsgdHlwZTogJ2J5dGVzJyB9KS5nZXRSZWFkZXIoeyBtb2RlOiAnYnlvYicgfSkuY29uc3Ry
dWN0b3I7Ci0gIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBuZXcgUmVhZGFi
bGVTdHJlYW1CWU9CUmVhZGVyKHt9KSwgJ2NvbnN0cnVjdG9yIG11c3QgdGhyb3cnKTsKLX0sICdS
ZWFkYWJsZVN0cmVhbUJZT0JSZWFkZXIgY29uc3RydWN0b3IgcmVxdWlyZXMgYSBSZWFkYWJsZVN0
cmVhbSBhcmd1bWVudCcpOwotCi10ZXN0KCgpID0+IHsKLSAgY29uc3QgUmVhZGFibGVTdHJlYW1C
WU9CUmVhZGVyID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsgdHlwZTogJ2J5dGVzJyB9KS5nZXRSZWFk
ZXIoeyBtb2RlOiAnYnlvYicgfSkuY29uc3RydWN0b3I7Ci0gIGNvbnN0IHN0cmVhbSA9IG5ldyBS
ZWFkYWJsZVN0cmVhbSh7IHR5cGU6ICdieXRlcycgfSk7Ci0gIHN0cmVhbS5nZXRSZWFkZXIoKTsK
LSAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IG5ldyBSZWFkYWJsZVN0cmVh
bUJZT0JSZWFkZXIoc3RyZWFtKSwgJ2NvbnN0cnVjdG9yIG11c3QgdGhyb3cnKTsKLX0sICdSZWFk
YWJsZVN0cmVhbUJZT0JSZWFkZXIgY29uc3RydWN0b3IgcmVxdWlyZXMgYW4gdW5sb2NrZWQgUmVh
ZGFibGVTdHJlYW0nKTsKLQotdGVzdCgoKSA9PiB7Ci0gIGNvbnN0IFJlYWRhYmxlU3RyZWFtQllP
QlJlYWRlciA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7IHR5cGU6ICdieXRlcycgfSkuZ2V0UmVhZGVy
KHsgbW9kZTogJ2J5b2InIH0pLmNvbnN0cnVjdG9yOwotICBjb25zdCBzdHJlYW0gPSBuZXcgUmVh
ZGFibGVTdHJlYW0oKTsKLSAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IG5l
dyBSZWFkYWJsZVN0cmVhbUJZT0JSZWFkZXIoc3RyZWFtKSwgJ2NvbnN0cnVjdG9yIG11c3QgdGhy
b3cnKTsKLX0sICdSZWFkYWJsZVN0cmVhbUJZT0JSZWFkZXIgY29uc3RydWN0b3IgcmVxdWlyZXMg
YSBSZWFkYWJsZVN0cmVhbSB3aXRoIHR5cGUgImJ5dGVzIicpOwotCi10ZXN0KCgpID0+IHsKLSAg
YXNzZXJ0X3Rocm93cyhuZXcgUmFuZ2VFcnJvcigpLCAoKSA9PiBuZXcgUmVhZGFibGVTdHJlYW0o
eyB0eXBlOiAnYnl0ZXMnIH0sIHsKLSAgICBzaXplKCkgewotICAgICAgcmV0dXJuIDE7Ci0gICAg
fQotICB9KSwgJ2NvbnN0cnVjdG9yIHNob3VsZCB0aHJvdyBmb3Igc2l6ZSBmdW5jdGlvbicpOwot
Ci0gIGFzc2VydF90aHJvd3MobmV3IFJhbmdlRXJyb3IoKSwgKCkgPT4gbmV3IFJlYWRhYmxlU3Ry
ZWFtKHsgdHlwZTogJ2J5dGVzJyB9LCB7IHNpemU6IG51bGwgfSksCi0gICAgICAgICAgICAgICAg
J2NvbnN0cnVjdG9yIHNob3VsZCB0aHJvdyBmb3Igc2l6ZSBkZWZpbmVkJyk7Ci0KLSAgYXNzZXJ0
X3Rocm93cyhuZXcgUmFuZ2VFcnJvcigpLAotICAgICAgICAgICAgICAgICgpID0+IG5ldyBSZWFk
YWJsZVN0cmVhbSh7IHR5cGU6ICdieXRlcycgfSwgbmV3IENvdW50UXVldWluZ1N0cmF0ZWd5KHsg
aGlnaFdhdGVyTWFyazogMSB9KSksCi0gICAgICAgICAgICAgICAgJ2NvbnN0cnVjdG9yIHNob3Vs
ZCB0aHJvdyB3aGVuIHN0cmF0ZWd5IGlzIENvdW50UXVldWluZ1N0cmF0ZWd5Jyk7Ci0KLSAgYXNz
ZXJ0X3Rocm93cyhuZXcgUmFuZ2VFcnJvcigpLAotICAgICAgICAgICAgICAgICgpID0+IG5ldyBS
ZWFkYWJsZVN0cmVhbSh7IHR5cGU6ICdieXRlcycgfSwgbmV3IEJ5dGVMZW5ndGhRdWV1aW5nU3Ry
YXRlZ3koeyBoaWdoV2F0ZXJNYXJrOiA1MTIgfSkpLAotICAgICAgICAgICAgICAgICdjb25zdHJ1
Y3RvciBzaG91bGQgdGhyb3cgd2hlbiBzdHJhdGVneSBpcyBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0
ZWd5Jyk7Ci0KLSAgY2xhc3MgSGFzU2l6ZU1ldGhvZCB7Ci0gICAgc2l6ZSgpIHt9Ci0gfQotCi0g
IGFzc2VydF90aHJvd3MobmV3IFJhbmdlRXJyb3IoKSwgKCkgPT4gbmV3IFJlYWRhYmxlU3RyZWFt
KHsgdHlwZTogJ2J5dGVzJyB9LCBuZXcgSGFzU2l6ZU1ldGhvZCgpKSwKLSAgICAgICAgICAgICAg
ICAnY29uc3RydWN0b3Igc2hvdWxkIHRocm93IHdoZW4gc2l6ZSBvbiB0aGUgcHJvdG90eXBlIGNo
YWluJyk7Ci19LCAnUmVhZGFibGVTdHJlYW0gY29uc3RydWN0b3Igc2hvdWxkIG5vdCBhY2NlcHQg
YSBzdHJhdGVneSB3aXRoIGEgc2l6ZSBkZWZpbmVkIGlmIHR5cGUgaXMgImJ5dGVzIicpOwotCi1k
b25lKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL2dlbmVyYWwuc2VydmljZXdvcmtl
ci5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL2dlbmVyYWwuc2VydmljZXdv
cmtlci5odHRwcy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJh
YWE1N2I4ZjViMjA0MGZiYmFmYzVmNGZkNzFlMzkyOGVlNTA2ZjUuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFtcy9nZW5lcmFsLnNl
cnZpY2V3b3JrZXIuaHR0cHMtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsODUgKzAs
MCBAQAotCi1IYXJuZXNzIEVycm9yIChUSU1FT1VUKSwgbWVzc2FnZSA9IG51bGwKLQotVElNRU9V
VCBTZXJ2aWNlIHdvcmtlciB0ZXN0IHNldHVwIFRlc3QgdGltZWQgb3V0Ci1QQVNTIGdldFJlYWRl
cih7bW9kZTogImJ5b2IifSkgdGhyb3dzIG9uIG5vbi1ieXRlcyBzdHJlYW1zIAotUEFTUyBSZWFk
YWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlIGNhbiBiZSBjb25zdHJ1Y3RlZCB3aXRoIG5vIGVy
cm9ycyAKLVBBU1MgZ2V0UmVhZGVyKHttb2RlfSkgbXVzdCBwZXJmb3JtIFRvU3RyaW5nKCkgCi1Q
QVNTIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IENvbnN0cnVjdCBhbmQgZXhwZWN0
IHN0YXJ0IGFuZCBwdWxsIGJlaW5nIGNhbGxlZCAKLVBBU1MgUmVhZGFibGVTdHJlYW0gd2l0aCBi
eXRlIHNvdXJjZTogTm8gYXV0b21hdGljIHB1bGwgY2FsbCBpZiBzdGFydCBkb2Vzbid0IGZpbmlz
aCAKLVBBU1MgUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogQ29uc3RydWN0IHdpdGgg
aGlnaFdhdGVyTWFyayBvZiAwIAotUEFTUyBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNl
OiBkZXNpcmVkU2l6ZSB3aGVuIGNsb3NlZCAKLVBBU1MgUmVhZGFibGVTdHJlYW0gd2l0aCBieXRl
IHNvdXJjZTogZGVzaXJlZFNpemUgd2hlbiBlcnJvcmVkIAotUEFTUyBSZWFkYWJsZVN0cmVhbSB3
aXRoIGJ5dGUgc291cmNlOiBnZXRSZWFkZXIoKSwgdGhlbiByZWxlYXNlTG9jaygpIAotUEFTUyBS
ZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBnZXRSZWFkZXIoKSB3aXRoIG1vZGUgc2V0
IHRvIGJ5b2IsIHRoZW4gcmVsZWFzZUxvY2soKSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gd2l0aCBi
eXRlIHNvdXJjZTogVGVzdCB0aGF0IGNsb3NpbmcgYSBzdHJlYW0gZG9lcyBub3QgcmVsZWFzZSBh
IHJlYWRlciBhdXRvbWF0aWNhbGx5IAotUEFTUyBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291
cmNlOiBUZXN0IHRoYXQgY2xvc2luZyBhIHN0cmVhbSBkb2VzIG5vdCByZWxlYXNlIGEgQllPQiBy
ZWFkZXIgYXV0b21hdGljYWxseSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJj
ZTogVGVzdCB0aGF0IGVycm9yaW5nIGEgc3RyZWFtIGRvZXMgbm90IHJlbGVhc2UgYSByZWFkZXIg
YXV0b21hdGljYWxseSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogVGVz
dCB0aGF0IGVycm9yaW5nIGEgc3RyZWFtIGRvZXMgbm90IHJlbGVhc2UgYSBCWU9CIHJlYWRlciBh
dXRvbWF0aWNhbGx5IAotUEFTUyBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiByZWxl
YXNlTG9jaygpIG9uIFJlYWRhYmxlU3RyZWFtUmVhZGVyIHdpdGggcGVuZGluZyByZWFkKCkgbXVz
dCB0aHJvdyAKLVBBU1MgUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogQXV0b21hdGlj
IHB1bGwoKSBhZnRlciBzdGFydCgpIAotUEFTUyBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291
cmNlOiBBdXRvbWF0aWMgcHVsbCgpIGFmdGVyIHN0YXJ0KCkgYW5kIHJlYWQoKSAKLUZBSUwgUmVh
ZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogYXV0b0FsbG9jYXRlQ2h1bmtTaXplIGFzc2Vy
dF9lcXVhbHM6IHB1bGwoKSBtdXN0IGhhdmUgYmVlbiBpbnZva2VkIHR3aWNlIGV4cGVjdGVkIDIg
YnV0IGdvdCAxCi1QQVNTIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IE1peCBvZiBh
dXRvIGFsbG9jYXRlIGFuZCBCWU9CIAotUEFTUyBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291
cmNlOiBBdXRvbWF0aWMgcHVsbCgpIGFmdGVyIHN0YXJ0KCkgYW5kIHJlYWQodmlldykgCi1QQVNT
IFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IGVucXVldWUoKSwgZ2V0UmVhZGVyKCks
IHRoZW4gcmVhZCgpIAotUEFTUyBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBQdXNo
IHNvdXJjZSB0aGF0IGRvZXNuJ3QgdW5kZXJzdGFuZCBwdWxsIHNpZ25hbCAKLUZBSUwgUmVhZGFi
bGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogcHVsbCgpIGZ1bmN0aW9uIGlzIG5vdCBjYWxsYWJs
ZSBhc3NlcnRfdGhyb3dzOiBjb25zdHJ1Y3RvciBzaG91bGQgdGhyb3cgZnVuY3Rpb24gIigpID0+
IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgcHVsbDogJ2ZvbycsCi0gICAgdHlwZTogJ2J5dGVz
JwotICB9KSIgZGlkIG5vdCB0aHJvdwotUEFTUyBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291
cmNlOiBlbnF1ZXVlKCkgd2l0aCBVaW50MTZBcnJheSwgZ2V0UmVhZGVyKCksIHRoZW4gcmVhZCgp
IAotUEFTUyBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBlbnF1ZXVlKCksIHJlYWQo
dmlldykgcGFydGlhbGx5LCB0aGVuIHJlYWQoKSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gd2l0aCBi
eXRlIHNvdXJjZTogZ2V0UmVhZGVyKCksIGVucXVldWUoKSwgY2xvc2UoKSwgdGhlbiByZWFkKCkg
Ci1QQVNTIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IGVucXVldWUoKSwgY2xvc2Uo
KSwgZ2V0UmVhZGVyKCksIHRoZW4gcmVhZCgpIAotUEFTUyBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5
dGUgc291cmNlOiBSZXNwb25kIHRvIHB1bGwoKSBieSBlbnF1ZXVlKCkgCi1QQVNTIFJlYWRhYmxl
U3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IFJlc3BvbmQgdG8gcHVsbCgpIGJ5IGVucXVldWUoKSBh
c3luY2hyb25vdXNseSAKLVRJTUVPVVQgUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTog
UmVzcG9uZCB0byBtdWx0aXBsZSBwdWxsKCkgYnkgc2VwYXJhdGUgZW5xdWV1ZSgpIFRlc3QgdGlt
ZWQgb3V0Ci1OT1RSVU4gUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogcmVhZCh2aWV3
KSwgdGhlbiByZXNwb25kKCkgCi1OT1RSVU4gUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJj
ZTogcmVhZCh2aWV3KSwgdGhlbiByZXNwb25kKCkgd2l0aCBhIHRyYW5zZmVycmVkIEFycmF5QnVm
ZmVyIAotTk9UUlVOIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IHJlYWQodmlldyks
IHRoZW4gcmVzcG9uZCgpIHdpdGggdG9vIGJpZyB2YWx1ZSAKLU5PVFJVTiBSZWFkYWJsZVN0cmVh
bSB3aXRoIGJ5dGUgc291cmNlOiByZXNwb25kKDMpIHRvIHJlYWQodmlldykgd2l0aCAyIGVsZW1l
bnQgVWludDE2QXJyYXkgZW5xdWV1ZXMgdGhlIDEgYnl0ZSByZW1haW5kZXIgCi1OT1RSVU4gUmVh
ZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogZW5xdWV1ZSgpLCBnZXRSZWFkZXIoKSwgdGhl
biByZWFkKHZpZXcpIAotTk9UUlVOIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IGVu
cXVldWUoKSwgZ2V0UmVhZGVyKCksIHRoZW4gY2FuY2VsKCkgKG1vZGUgPSBub3QgQllPQikgCi1O
T1RSVU4gUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogZW5xdWV1ZSgpLCBnZXRSZWFk
ZXIoKSwgdGhlbiBjYW5jZWwoKSAobW9kZSA9IEJZT0IpIAotTk9UUlVOIFJlYWRhYmxlU3RyZWFt
IHdpdGggYnl0ZSBzb3VyY2U6IGdldFJlYWRlcigpLCByZWFkKHZpZXcpLCB0aGVuIGNhbmNlbCgp
IAotTk9UUlVOIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IGNhbmNlbCgpIHdpdGgg
cGFydGlhbGx5IGZpbGxlZCBwZW5kaW5nIHB1bGwoKSByZXF1ZXN0IAotTk9UUlVOIFJlYWRhYmxl
U3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IGVucXVldWUoKSwgZ2V0UmVhZGVyKCksIHRoZW4gcmVh
ZCh2aWV3KSB3aGVyZSB2aWV3LmJ1ZmZlciBpcyBub3QgZnVsbHkgY292ZXJlZCBieSB2aWV3IAot
Tk9UUlVOIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IE11bHRpcGxlIGVucXVldWUo
KSwgZ2V0UmVhZGVyKCksIHRoZW4gcmVhZCh2aWV3KSAKLU5PVFJVTiBSZWFkYWJsZVN0cmVhbSB3
aXRoIGJ5dGUgc291cmNlOiBlbnF1ZXVlKCksIGdldFJlYWRlcigpLCB0aGVuIHJlYWQodmlldykg
d2l0aCBhIGJpZ2dlciB2aWV3IAotTk9UUlVOIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3Vy
Y2U6IGVucXVldWUoKSwgZ2V0UmVhZGVyKCksIHRoZW4gcmVhZCh2aWV3KSB3aXRoIGEgc21hbGxl
ciB2aWV3cyAKLU5PVFJVTiBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBlbnF1ZXVl
KCkgMSBieXRlLCBnZXRSZWFkZXIoKSwgdGhlbiByZWFkKHZpZXcpIHdpdGggVWludDE2QXJyYXkg
Ci1OT1RSVU4gUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogZW5xdWV1ZSgpIDMgYnl0
ZSwgZ2V0UmVhZGVyKCksIHRoZW4gcmVhZCh2aWV3KSB3aXRoIDItZWxlbWVudCBVaW50MTZBcnJh
eSAKLU5PVFJVTiBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiByZWFkKHZpZXcpIHdp
dGggVWludDE2QXJyYXkgb24gY2xvc2UoKS1kIHN0cmVhbSB3aXRoIDEgYnl0ZSBlbnF1ZXVlKCkt
ZCBtdXN0IGZhaWwgCi1OT1RSVU4gUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogQSBz
dHJlYW0gbXVzdCBiZSBlcnJvcmVkIGlmIGNsb3NlKCktZCBiZWZvcmUgZnVsZmlsbGluZyByZWFk
KHZpZXcpIHdpdGggVWludDE2QXJyYXkgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBz
b3VyY2U6IFRocm93IGlmIGNsb3NlKCktZWQgbW9yZSB0aGFuIG9uY2UgCi1QQVNTIFJlYWRhYmxl
U3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IFRocm93IG9uIGVucXVldWUoKSBhZnRlciBjbG9zZSgp
IAotTk9UUlVOIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IHJlYWQodmlldyksIHRo
ZW4gcmVzcG9uZCgpIGFuZCBjbG9zZSgpIGluIHB1bGwoKSAKLU5PVFJVTiBSZWFkYWJsZVN0cmVh
bSB3aXRoIGJ5dGUgc291cmNlOiByZWFkKHZpZXcpIHdpdGggVWludDMyQXJyYXksIHRoZW4gZmls
bCBpdCBieSBtdWx0aXBsZSByZXNwb25kKCkgY2FsbHMgCi1OT1RSVU4gUmVhZGFibGVTdHJlYW0g
d2l0aCBieXRlIHNvdXJjZTogcmVhZCgpIHR3aWNlLCB0aGVuIGVucXVldWUoKSB0d2ljZSAKLU5P
VFJVTiBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBNdWx0aXBsZSByZWFkKHZpZXcp
LCBjbG9zZSgpIGFuZCByZXNwb25kKCkgCi1OT1RSVU4gUmVhZGFibGVTdHJlYW0gd2l0aCBieXRl
IHNvdXJjZTogTXVsdGlwbGUgcmVhZCh2aWV3KSwgYmlnIGVucXVldWUoKSAKLU5PVFJVTiBSZWFk
YWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBNdWx0aXBsZSByZWFkKHZpZXcpIGFuZCBtdWx0
aXBsZSBlbnF1ZXVlKCkgCi1OT1RSVU4gUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTog
cmVhZCh2aWV3KSB3aXRoIHBhc3NpbmcgdW5kZWZpbmVkIGFzIHZpZXcgbXVzdCBmYWlsIAotTk9U
UlVOIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IHJlYWQodmlldykgd2l0aCB6ZXJv
LWxlbmd0aCB2aWV3IG11c3QgZmFpbCAKLU5PVFJVTiBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUg
c291cmNlOiByZWFkKHZpZXcpIHdpdGggcGFzc2luZyBhbiBlbXB0eSBvYmplY3QgYXMgdmlldyBt
dXN0IGZhaWwgCi1OT1RSVU4gUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogRXZlbiBy
ZWFkKHZpZXcpIHdpdGggcGFzc2luZyBBcnJheUJ1ZmZlclZpZXcgbGlrZSBvYmplY3QgYXMgdmll
dyBtdXN0IGZhaWwgCi1OT1RSVU4gUmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogcmVh
ZCgpIG9uIGFuIGVycm9yZWQgc3RyZWFtIAotTk9UUlVOIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0
ZSBzb3VyY2U6IHJlYWQoKSwgdGhlbiBlcnJvcigpIAotTk9UUlVOIFJlYWRhYmxlU3RyZWFtIHdp
dGggYnl0ZSBzb3VyY2U6IHJlYWQodmlldykgb24gYW4gZXJyb3JlZCBzdHJlYW0gCi1OT1RSVU4g
UmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogcmVhZCh2aWV3KSwgdGhlbiBlcnJvcigp
IAotTk9UUlVOIFJlYWRhYmxlU3RyZWFtIHdpdGggYnl0ZSBzb3VyY2U6IFRocm93aW5nIGluIHB1
bGwgZnVuY3Rpb24gbXVzdCBlcnJvciB0aGUgc3RyZWFtIAotTk9UUlVOIFJlYWRhYmxlU3RyZWFt
IHdpdGggYnl0ZSBzb3VyY2U6IFRocm93aW5nIGluIHB1bGwgaW4gcmVzcG9uc2UgdG8gcmVhZCgp
IG11c3QgYmUgaWdub3JlZCBpZiB0aGUgc3RyZWFtIGlzIGVycm9yZWQgaW4gaXQgCi1OT1RSVU4g
UmVhZGFibGVTdHJlYW0gd2l0aCBieXRlIHNvdXJjZTogVGhyb3dpbmcgaW4gcHVsbCBpbiByZXNw
b25zZSB0byByZWFkKHZpZXcpIGZ1bmN0aW9uIG11c3QgZXJyb3IgdGhlIHN0cmVhbSAKLU5PVFJV
TiBSZWFkYWJsZVN0cmVhbSB3aXRoIGJ5dGUgc291cmNlOiBUaHJvd2luZyBpbiBwdWxsIGluIHJl
c3BvbnNlIHRvIHJlYWQodmlldykgbXVzdCBiZSBpZ25vcmVkIGlmIHRoZSBzdHJlYW0gaXMgZXJy
b3JlZCBpbiBpdCAKLU5PVFJVTiBjYWxsaW5nIHJlc3BvbmQoKSB0d2ljZSBvbiB0aGUgc2FtZSBi
eW9iUmVxdWVzdCBzaG91bGQgdGhyb3cgCi1OT1RSVU4gY2FsbGluZyByZXNwb25kV2l0aE5ld1Zp
ZXcoKSB0d2ljZSBvbiB0aGUgc2FtZSBieW9iUmVxdWVzdCBzaG91bGQgdGhyb3cgCi1OT1RSVU4g
Y2FsbGluZyByZXNwb25kKDApIHR3aWNlIG9uIHRoZSBzYW1lIGJ5b2JSZXF1ZXN0IHNob3VsZCB0
aHJvdyBldmVuIHdoZW4gY2xvc2VkIAotTk9UUlVOIHB1bGwoKSByZXNvbHZpbmcgc2hvdWxkIG5v
dCBtYWtlIHJlbGVhc2VMb2NrKCkgcG9zc2libGUgCi1OT1RSVU4gUmVhZGFibGVTdHJlYW0gd2l0
aCBieXRlIHNvdXJjZTogZGVmYXVsdCByZWFkZXIgKyBhdXRvQWxsb2NhdGVDaHVua1NpemUgKyBi
eW9iUmVxdWVzdCBpbnRlcmFjdGlvbiAKLVBBU1MgUmVhZGFibGVTdHJlYW1CWU9CUmVhZGVyIGNh
biBiZSBjb25zdHJ1Y3RlZCBkaXJlY3RseSAKLVBBU1MgUmVhZGFibGVTdHJlYW1CWU9CUmVhZGVy
IGNvbnN0cnVjdG9yIHJlcXVpcmVzIGEgUmVhZGFibGVTdHJlYW0gYXJndW1lbnQgCi1QQVNTIFJl
YWRhYmxlU3RyZWFtQllPQlJlYWRlciBjb25zdHJ1Y3RvciByZXF1aXJlcyBhbiB1bmxvY2tlZCBS
ZWFkYWJsZVN0cmVhbSAKLVBBU1MgUmVhZGFibGVTdHJlYW1CWU9CUmVhZGVyIGNvbnN0cnVjdG9y
IHJlcXVpcmVzIGEgUmVhZGFibGVTdHJlYW0gd2l0aCB0eXBlICJieXRlcyIgCi1QQVNTIFJlYWRh
YmxlU3RyZWFtIGNvbnN0cnVjdG9yIHNob3VsZCBub3QgYWNjZXB0IGEgc3RyYXRlZ3kgd2l0aCBh
IHNpemUgZGVmaW5lZCBpZiB0eXBlIGlzICJieXRlcyIgCi0KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRl
LXN0cmVhbXMvZ2VuZXJhbC5zZXJ2aWNld29ya2VyLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJl
YW1zL2dlbmVyYWwuc2VydmljZXdvcmtlci5odHRwcy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBkMWRlN2MzNDJjMDNkNjg2MWU1M2JmYjczNWVkYjQyNDlmZGNmYzcyLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVh
bXMvZ2VuZXJhbC5zZXJ2aWNld29ya2VyLmh0dHBzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwx
MiArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTx0aXRs
ZT5nZW5lcmFsLmpzIHNlcnZpY2Ugd29ya2VyIHdyYXBwZXIgZmlsZTwvdGl0bGU+Ci0KLTxzY3Jp
cHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3Jj
PSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3Jj
PSIvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL3Jlc291cmNlcy90ZXN0LWhlbHBlcnMu
c3ViLmpzIj48L3NjcmlwdD4KLQotPHNjcmlwdD4KLSd1c2Ugc3RyaWN0JzsKLXNlcnZpY2Vfd29y
a2VyX3Rlc3QoJ2dlbmVyYWwuanMnLCAnU2VydmljZSB3b3JrZXIgdGVzdCBzZXR1cCcpOwotPC9z
Y3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL2dlbmVyYWwuc2hhcmVkd29ya2Vy
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMvZ2VuZXJhbC5zaGFyZWR3b3JrZXItZXhw
ZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwOWQ1ZDI1MDlkNzg0N2U4
Y2Q2ZmU2NjA2YWE2MGNkZDMzYWE0NzRlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMvZ2VuZXJhbC5zaGFyZWR3b3JrZXItZXhw
ZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1DT05TT0xFIE1FU1NBR0U6
IFJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBTaGFyZWRXb3JrZXIKLQotSGFy
bmVzcyBFcnJvciAoRkFJTCksIG1lc3NhZ2UgPSBSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2
YXJpYWJsZTogU2hhcmVkV29ya2VyCi0KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFtcy9n
ZW5lcmFsLnNoYXJlZHdvcmtlci5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFtcy9nZW5lcmFsLnNoYXJl
ZHdvcmtlci5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkY2VlYThhYzhiOWYw
MGM5ZDBjY2EzN2JmMTM3YmU0NTNlNzE0NTExLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMvZ2VuZXJhbC5zaGFyZWR3b3JrZXIu
aHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1l
dGEgY2hhcnNldD0idXRmLTgiPgotPHRpdGxlPmdlbmVyYWwuanMgc2hhcmVkIHdvcmtlciB3cmFw
cGVyIGZpbGU8L3RpdGxlPgotCi08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5q
cyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5q
cyI+PC9zY3JpcHQ+Ci0KLTxzY3JpcHQ+Ci0ndXNlIHN0cmljdCc7Ci1mZXRjaF90ZXN0c19mcm9t
X3dvcmtlcihuZXcgU2hhcmVkV29ya2VyKCdnZW5lcmFsLmpzJykpOwotPC9zY3JpcHQ+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL3Byb3BlcnRpZXMuZGVkaWNhdGVkd29ya2VyLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMvcHJvcGVydGllcy5kZWRpY2F0ZWR3b3JrZXItZXhw
ZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5OGU1NTFlYmNkZTlkYzAx
NjUwZTFkOTdkYzJmY2U2NWM2NGVjYmYwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMvcHJvcGVydGllcy5kZWRpY2F0ZWR3b3Jr
ZXItZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNyArMCwwIEBACi0KLVBBU1MgQ2Fu
IGdldCB0aGUgUmVhZGFibGVTdHJlYW1CWU9CUmVhZGVyIGNvbnN0cnVjdG9yIGluZGlyZWN0bHkg
Ci1QQVNTIFJlYWRhYmxlU3RyZWFtQllPQlJlYWRlciBjb25zdHJ1Y3RvciBzaG91bGQgZ2V0IGEg
UmVhZGFibGVTdHJlYW0gb2JqZWN0IGFzIGFyZ3VtZW50IAotUEFTUyBSZWFkYWJsZVN0cmVhbUJZ
T0JSZWFkZXIgaW5zdGFuY2VzIHNob3VsZCBoYXZlIHRoZSBjb3JyZWN0IGxpc3Qgb2YgcHJvcGVy
dGllcyAKLUZBSUwgUmVhZGFibGVTdHJlYW1CWU9CUmVxdWVzdCBpbnN0YW5jZXMgc2hvdWxkIGhh
dmUgdGhlIGNvcnJlY3QgbGlzdCBvZiBwcm9wZXJ0aWVzIGFzc2VydF9lcXVhbHM6IGNvbnN0cnVj
dG9yIGhhcyAwIHBhcmFtZXRlcnMgZXhwZWN0ZWQgMCBidXQgZ290IDIKLUZBSUwgUmVhZGFibGVC
eXRlU3RyZWFtQ29udHJvbGxlciBpbnN0YW5jZXMgc2hvdWxkIGhhdmUgdGhlIGNvcnJlY3QgbGlz
dCBvZiBwcm9wZXJ0aWVzIGFzc2VydF9lcXVhbHM6IGNvbnN0cnVjdG9yIGhhcyBubyBwYXJhbWV0
ZXJzIGV4cGVjdGVkIDAgYnV0IGdvdCAzCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMv
cHJvcGVydGllcy5kZWRpY2F0ZWR3b3JrZXIuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMvcHJvcGVy
dGllcy5kZWRpY2F0ZWR3b3JrZXIuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
NTBkNjNlZDBlZGIyYmEwNTJkYWFmODlkZjIzYzkzMjBmYzgyYzlkYy4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL3Byb3BlcnRp
ZXMuZGVkaWNhdGVkd29ya2VyLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi08
IURPQ1RZUEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTx0aXRsZT5wcm9wZXJ0aWVz
LmpzIGRlZGljYXRlZCB3b3JrZXIgd3JhcHBlciBmaWxlPC90aXRsZT4KLQotPHNjcmlwdCBzcmM9
Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9yZXNv
dXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotCi08c2NyaXB0PgotJ3VzZSBz
dHJpY3QnOwotZmV0Y2hfdGVzdHNfZnJvbV93b3JrZXIobmV3IFdvcmtlcigncHJvcGVydGllcy5q
cycpKTsKLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFtcy9wcm9wZXJ0aWVz
Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL3Byb3BlcnRpZXMuaHRtbApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggNDFhYjZiMjg1NDI5Y2M4MDY0MDFjODM5YjIyZjczM2U4YmI5NGRhMC4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1z
dHJlYW1zL3Byb3BlcnRpZXMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAKLTwh
RE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHRpdGxlPnByb3BlcnRpZXMu
anMgYnJvd3NlciBjb250ZXh0IHdyYXBwZXIgZmlsZTwvdGl0bGU+Ci0KLTxzY3JpcHQgc3JjPSIv
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLQotPHNjcmlwdCBzcmM9Ii4uL3Jl
c291cmNlcy9ycy11dGlscy5qcyI+PC9zY3JpcHQ+Ci0KLTxzY3JpcHQgc3JjPSJwcm9wZXJ0aWVz
LmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMvcHJvcGVydGllcy5q
cyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9y
ZWFkYWJsZS1ieXRlLXN0cmVhbXMvcHJvcGVydGllcy5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggOTc1ZmJhNzEwOWIwNjRmNGVlYTkyNDdmNmRhZjM0M2JiM2QwYTQyZS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1z
L3Byb3BlcnRpZXMuanMKKysrIC9kZXYvbnVsbApAQCAtMSwxNDcgKzAsMCBAQAotJ3VzZSBzdHJp
Y3QnOwotCi1pZiAoc2VsZi5pbXBvcnRTY3JpcHRzKSB7Ci0gIHNlbGYuaW1wb3J0U2NyaXB0cygn
Li4vcmVzb3VyY2VzL3JzLXV0aWxzLmpzJyk7Ci0gIHNlbGYuaW1wb3J0U2NyaXB0cygnL3Jlc291
cmNlcy90ZXN0aGFybmVzcy5qcycpOwotfQotCi1sZXQgUmVhZGFibGVTdHJlYW1CWU9CUmVhZGVy
OwotCi10ZXN0KCgpID0+IHsKLQotICAvLyBJdCdzIG5vdCBleHBvc2VkIGdsb2JhbGx5LCBidXQg
d2UgdGVzdCBhIGZldyBvZiBpdHMgcHJvcGVydGllcyBoZXJlLgotICBSZWFkYWJsZVN0cmVhbUJZ
T0JSZWFkZXIgPSAobmV3IFJlYWRhYmxlU3RyZWFtKHsgdHlwZTogJ2J5dGVzJyB9KSkKLSAgICAg
IC5nZXRSZWFkZXIoeyBtb2RlOiAnYnlvYicgfSkuY29uc3RydWN0b3I7Ci0KLX0sICdDYW4gZ2V0
IHRoZSBSZWFkYWJsZVN0cmVhbUJZT0JSZWFkZXIgY29uc3RydWN0b3IgaW5kaXJlY3RseScpOwot
Ci10ZXN0KCgpID0+IHsKLQotICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4g
bmV3IFJlYWRhYmxlU3RyZWFtQllPQlJlYWRlcigncG90YXRvJykpOwotICBhc3NlcnRfdGhyb3dz
KG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gbmV3IFJlYWRhYmxlU3RyZWFtQllPQlJlYWRlcih7fSkp
OwotICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gbmV3IFJlYWRhYmxlU3Ry
ZWFtQllPQlJlYWRlcigpKTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtQllPQlJlYWRlciBjb25zdHJ1
Y3RvciBzaG91bGQgZ2V0IGEgUmVhZGFibGVTdHJlYW0gb2JqZWN0IGFzIGFyZ3VtZW50Jyk7Ci0K
LXRlc3QoKCkgPT4gewotCi0gIGNvbnN0IG1ldGhvZHMgPSBbJ2NhbmNlbCcsICdjb25zdHJ1Y3Rv
cicsICdyZWFkJywgJ3JlbGVhc2VMb2NrJ107Ci0gIGNvbnN0IHByb3BlcnRpZXMgPSBtZXRob2Rz
LmNvbmNhdChbJ2Nsb3NlZCddKS5zb3J0KCk7Ci0KLSAgY29uc3QgcnNSZWFkZXIgPSBuZXcgUmVh
ZGFibGVTdHJlYW1CWU9CUmVhZGVyKG5ldyBSZWFkYWJsZVN0cmVhbSh7IHR5cGU6ICdieXRlcycg
fSkpOwotICBjb25zdCBwcm90byA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihyc1JlYWRlcik7Ci0K
LSAgYXNzZXJ0X2FycmF5X2VxdWFscyhPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhwcm90byku
c29ydCgpLCBwcm9wZXJ0aWVzKTsKLQotICBmb3IgKGNvbnN0IG0gb2YgbWV0aG9kcykgewotICAg
IGNvbnN0IHByb3BEZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihwcm90bywg
bSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhwcm9wRGVzYy5lbnVtZXJhYmxlLCBmYWxzZSwgJ21ldGhv
ZCBzaG91bGQgYmUgbm9uLWVudW1lcmFibGUnKTsKLSAgICBhc3NlcnRfZXF1YWxzKHByb3BEZXNj
LmNvbmZpZ3VyYWJsZSwgdHJ1ZSwgJ21ldGhvZCBzaG91bGQgYmUgY29uZmlndXJhYmxlJyk7Ci0g
ICAgYXNzZXJ0X2VxdWFscyhwcm9wRGVzYy53cml0YWJsZSwgdHJ1ZSwgJ21ldGhvZCBzaG91bGQg
YmUgd3JpdGFibGUnKTsKLSAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiByc1JlYWRlclttXSwgJ2Z1
bmN0aW9uJywgJ3Nob3VsZCBoYXZlIGJlIGEgbWV0aG9kJyk7Ci0gICAgY29uc3QgZXhwZWN0ZWRO
YW1lID0gbSA9PT0gJ2NvbnN0cnVjdG9yJyA/ICdSZWFkYWJsZVN0cmVhbUJZT0JSZWFkZXInIDog
bTsKLSAgICBhc3NlcnRfZXF1YWxzKHJzUmVhZGVyW21dLm5hbWUsIGV4cGVjdGVkTmFtZSwgJ21l
dGhvZCBzaG91bGQgaGF2ZSB0aGUgY29ycmVjdCBuYW1lJyk7Ci0gIH0KLQotICBjb25zdCBjbG9z
ZWRQcm9wRGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocHJvdG8sICdjbG9z
ZWQnKTsKLSAgYXNzZXJ0X2VxdWFscyhjbG9zZWRQcm9wRGVzYy5lbnVtZXJhYmxlLCBmYWxzZSwg
J2Nsb3NlZCBzaG91bGQgYmUgbm9uLWVudW1lcmFibGUnKTsKLSAgYXNzZXJ0X2VxdWFscyhjbG9z
ZWRQcm9wRGVzYy5jb25maWd1cmFibGUsIHRydWUsICdjbG9zZWQgc2hvdWxkIGJlIGNvbmZpZ3Vy
YWJsZScpOwotICBhc3NlcnRfbm90X2VxdWFscyhjbG9zZWRQcm9wRGVzYy5nZXQsIHVuZGVmaW5l
ZCwgJ2Nsb3NlZCBzaG91bGQgaGF2ZSBhIGdldHRlcicpOwotICBhc3NlcnRfZXF1YWxzKGNsb3Nl
ZFByb3BEZXNjLnNldCwgdW5kZWZpbmVkLCAnY2xvc2VkIHNob3VsZCBub3QgaGF2ZSBhIHNldHRl
cicpOwotCi0gIGFzc2VydF9lcXVhbHMocnNSZWFkZXIuY2FuY2VsLmxlbmd0aCwgMSwgJ2NhbmNl
bCBoYXMgMSBwYXJhbWV0ZXInKTsKLSAgYXNzZXJ0X25vdF9lcXVhbHMocnNSZWFkZXIuY2xvc2Vk
LCB1bmRlZmluZWQsICdoYXMgYSBub24tdW5kZWZpbmVkIGNsb3NlZCBwcm9wZXJ0eScpOwotICBh
c3NlcnRfZXF1YWxzKHR5cGVvZiByc1JlYWRlci5jbG9zZWQudGhlbiwgJ2Z1bmN0aW9uJywgJ2Ns
b3NlZCBwcm9wZXJ0eSBpcyB0aGVuYWJsZScpOwotICBhc3NlcnRfZXF1YWxzKHJzUmVhZGVyLmNv
bnN0cnVjdG9yLmxlbmd0aCwgMSwgJ2NvbnN0cnVjdG9yIGhhcyAxIHBhcmFtZXRlcicpOwotICBh
c3NlcnRfZXF1YWxzKHJzUmVhZGVyLnJlYWQubGVuZ3RoLCAxLCAncmVhZCBoYXMgMSBwYXJhbWV0
ZXInKTsKLSAgYXNzZXJ0X2VxdWFscyhyc1JlYWRlci5yZWxlYXNlTG9jay5sZW5ndGgsIDAsICdy
ZWxlYXNlTG9jayBoYXMgbm8gcGFyYW1ldGVycycpOwotCi19LCAnUmVhZGFibGVTdHJlYW1CWU9C
UmVhZGVyIGluc3RhbmNlcyBzaG91bGQgaGF2ZSB0aGUgY29ycmVjdCBsaXN0IG9mIHByb3BlcnRp
ZXMnKTsKLQotcHJvbWlzZV90ZXN0KHQgPT4gewotCi0gIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxl
U3RyZWFtKHsKLSAgICBwdWxsKGNvbnRyb2xsZXIpIHsKLSAgICAgIHJldHVybiB0LnN0ZXAoKCkg
PT4gewotICAgICAgICBjb25zdCBieW9iUmVxdWVzdCA9IGNvbnRyb2xsZXIuYnlvYlJlcXVlc3Q7
Ci0KLSAgICAgICAgY29uc3QgbWV0aG9kcyA9IFsnY29uc3RydWN0b3InLCAncmVzcG9uZCcsICdy
ZXNwb25kV2l0aE5ld1ZpZXcnXTsKLSAgICAgICAgY29uc3QgcHJvcGVydGllcyA9IG1ldGhvZHMu
Y29uY2F0KFsndmlldyddKS5zb3J0KCk7Ci0KLSAgICAgICAgY29uc3QgcHJvdG8gPSBPYmplY3Qu
Z2V0UHJvdG90eXBlT2YoYnlvYlJlcXVlc3QpOwotCi0gICAgICAgIGFzc2VydF9hcnJheV9lcXVh
bHMoT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMocHJvdG8pLnNvcnQoKSwgcHJvcGVydGllcyk7
Ci0KLSAgICAgICAgZm9yIChjb25zdCBtIG9mIG1ldGhvZHMpIHsKLSAgICAgICAgICBjb25zdCBw
cm9wRGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocHJvdG8sIG0pOwotICAg
ICAgICAgIGFzc2VydF9lcXVhbHMocHJvcERlc2MuZW51bWVyYWJsZSwgZmFsc2UsICdtZXRob2Qg
c2hvdWxkIGJlIG5vbi1lbnVtZXJhYmxlJyk7Ci0gICAgICAgICAgYXNzZXJ0X2VxdWFscyhwcm9w
RGVzYy5jb25maWd1cmFibGUsIHRydWUsICdtZXRob2Qgc2hvdWxkIGJlIGNvbmZpZ3VyYWJsZScp
OwotICAgICAgICAgIGFzc2VydF9lcXVhbHMocHJvcERlc2Mud3JpdGFibGUsIHRydWUsICdtZXRo
b2Qgc2hvdWxkIGJlIHdyaXRhYmxlJyk7Ci0gICAgICAgICAgYXNzZXJ0X2VxdWFscyh0eXBlb2Yg
YnlvYlJlcXVlc3RbbV0sICdmdW5jdGlvbicsICdzaG91bGQgaGF2ZSBhIG1ldGhvZCcpOwotICAg
ICAgICAgIGNvbnN0IGV4cGVjdGVkTmFtZSA9IG0gPT09ICdjb25zdHJ1Y3RvcicgPyAnUmVhZGFi
bGVTdHJlYW1CWU9CUmVxdWVzdCcgOiBtOwotICAgICAgICAgIGFzc2VydF9lcXVhbHMoYnlvYlJl
cXVlc3RbbV0ubmFtZSwgZXhwZWN0ZWROYW1lLCAnbWV0aG9kIHNob3VsZCBoYXZlIHRoZSBjb3Jy
ZWN0IG5hbWUnKTsKLSAgICAgICAgfQotCi0gICAgICAgIGNvbnN0IHZpZXdQcm9wRGVzYyA9IE9i
amVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocHJvdG8sICd2aWV3Jyk7Ci0gICAgICAgIGFz
c2VydF9lcXVhbHModmlld1Byb3BEZXNjLmVudW1lcmFibGUsIGZhbHNlLCAndmlldyBzaG91bGQg
YmUgbm9uLWVudW1lcmFibGUnKTsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyh2aWV3UHJvcERlc2Mu
Y29uZmlndXJhYmxlLCB0cnVlLCAndmlldyBzaG91bGQgYmUgY29uZmlndXJhYmxlJyk7Ci0gICAg
ICAgIGFzc2VydF9ub3RfZXF1YWxzKHZpZXdQcm9wRGVzYy5nZXQsIHVuZGVmaW5lZCwgJ3ZpZXcg
c2hvdWxkIGhhdmUgYSBnZXR0ZXInKTsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyh2aWV3UHJvcERl
c2Muc2V0LCB1bmRlZmluZWQsICd2aWV3IHNob3VsZCBub3QgaGF2ZSBhIHNldHRlcicpOwotICAg
ICAgICBhc3NlcnRfbm90X2VxdWFscyhieW9iUmVxdWVzdC52aWV3LCB1bmRlZmluZWQsICdoYXMg
YSBub24tdW5kZWZpbmVkIHZpZXcgcHJvcGVydHknKTsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyhi
eW9iUmVxdWVzdC5jb25zdHJ1Y3Rvci5sZW5ndGgsIDAsICdjb25zdHJ1Y3RvciBoYXMgMCBwYXJh
bWV0ZXJzJyk7Ci0gICAgICAgIGFzc2VydF9lcXVhbHMoYnlvYlJlcXVlc3QucmVzcG9uZC5sZW5n
dGgsIDEsICdyZXNwb25kIGhhcyAxIHBhcmFtZXRlcicpOwotICAgICAgICBhc3NlcnRfZXF1YWxz
KGJ5b2JSZXF1ZXN0LnJlc3BvbmRXaXRoTmV3Vmlldy5sZW5ndGgsIDEsICdyZWxlYXNlTG9jayBo
YXMgMSBwYXJhbWV0ZXInKTsKLQotICAgICAgICBieW9iUmVxdWVzdC5yZXNwb25kKDEpOwotCi0g
ICAgICB9KTsKLSAgICB9LAotICAgIHR5cGU6ICdieXRlcycgfSk7Ci0gIGNvbnN0IHJlYWRlciA9
IHJzLmdldFJlYWRlcih7IG1vZGU6ICdieW9iJyB9KTsKLSAgcmV0dXJuIHJlYWRlci5yZWFkKG5l
dyBVaW50OEFycmF5KDEpKTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtQllPQlJlcXVlc3QgaW5zdGFu
Y2VzIHNob3VsZCBoYXZlIHRoZSBjb3JyZWN0IGxpc3Qgb2YgcHJvcGVydGllcycpOwotCi10ZXN0
KCgpID0+IHsKLQotICBjb25zdCBtZXRob2RzID0gWydjbG9zZScsICdjb25zdHJ1Y3RvcicsICdl
bnF1ZXVlJywgJ2Vycm9yJ107Ci0gIGNvbnN0IGFjY2Vzc29ycyA9IFsnYnlvYlJlcXVlc3QnLCAn
ZGVzaXJlZFNpemUnXTsKLSAgY29uc3QgcHJvcGVydGllcyA9IG1ldGhvZHMuY29uY2F0KGFjY2Vz
c29ycykuc29ydCgpOwotCi0gIGxldCBjb250cm9sbGVyOwotICBuZXcgUmVhZGFibGVTdHJlYW0o
ewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGNvbnRyb2xsZXIgPSBjOwotICAgIH0sCi0gICAgdHlw
ZTogJ2J5dGVzJwotICB9KTsKLSAgY29uc3QgcHJvdG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2Yo
Y29udHJvbGxlcik7Ci0KLSAgYXNzZXJ0X2FycmF5X2VxdWFscyhPYmplY3QuZ2V0T3duUHJvcGVy
dHlOYW1lcyhwcm90bykuc29ydCgpLCBwcm9wZXJ0aWVzKTsKLQotICBmb3IgKGNvbnN0IG0gb2Yg
bWV0aG9kcykgewotICAgIGNvbnN0IHByb3BEZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVz
Y3JpcHRvcihwcm90bywgbSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhwcm9wRGVzYy5lbnVtZXJhYmxl
LCBmYWxzZSwgJ21ldGhvZCBzaG91bGQgYmUgbm9uLWVudW1lcmFibGUnKTsKLSAgICBhc3NlcnRf
ZXF1YWxzKHByb3BEZXNjLmNvbmZpZ3VyYWJsZSwgdHJ1ZSwgJ21ldGhvZCBzaG91bGQgYmUgY29u
ZmlndXJhYmxlJyk7Ci0gICAgYXNzZXJ0X2VxdWFscyhwcm9wRGVzYy53cml0YWJsZSwgdHJ1ZSwg
J21ldGhvZCBzaG91bGQgYmUgd3JpdGFibGUnKTsKLSAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiBj
b250cm9sbGVyW21dLCAnZnVuY3Rpb24nLCAnc2hvdWxkIGhhdmUgYmUgYSBtZXRob2QnKTsKLSAg
ICBjb25zdCBleHBlY3RlZE5hbWUgPSBtID09PSAnY29uc3RydWN0b3InID8gJ1JlYWRhYmxlQnl0
ZVN0cmVhbUNvbnRyb2xsZXInIDogbTsKLSAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXJbbV0u
bmFtZSwgZXhwZWN0ZWROYW1lLCAnbWV0aG9kIHNob3VsZCBoYXZlIHRoZSBjb3JyZWN0IG5hbWUn
KTsKLSAgfQotCi0gIGZvciAoY29uc3QgYSBvZiBhY2Nlc3NvcnMpIHsKLSAgICBjb25zdCBwcm9w
RGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocHJvdG8sIGEpOwotICAgIGFz
c2VydF9lcXVhbHMocHJvcERlc2MuZW51bWVyYWJsZSwgZmFsc2UsIGAke2F9IHNob3VsZCBiZSBu
b24tZW51bWVyYWJsZWApOwotICAgIGFzc2VydF9lcXVhbHMocHJvcERlc2MuY29uZmlndXJhYmxl
LCB0cnVlLCBgJHthfSBzaG91bGQgYmUgY29uZmlndXJhYmxlYCk7Ci0gICAgYXNzZXJ0X25vdF9l
cXVhbHMocHJvcERlc2MuZ2V0LCB1bmRlZmluZWQsIGAke2F9IHNob3VsZCBoYXZlIGEgZ2V0dGVy
YCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhwcm9wRGVzYy5zZXQsIHVuZGVmaW5lZCwgYCR7YX0gc2hv
dWxkIG5vdCBoYXZlIGEgc2V0dGVyYCk7Ci0gIH0KLQotICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xs
ZXIuY2xvc2UubGVuZ3RoLCAwLCAnY2FuY2VsIGhhcyBubyBwYXJhbWV0ZXJzJyk7Ci0gIGFzc2Vy
dF9lcXVhbHMoY29udHJvbGxlci5jb25zdHJ1Y3Rvci5sZW5ndGgsIDAsICdjb25zdHJ1Y3RvciBo
YXMgbm8gcGFyYW1ldGVycycpOwotICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZW5xdWV1ZS5s
ZW5ndGgsIDEsICdlbnF1ZXVlIGhhcyAxIHBhcmFtZXRlcicpOwotICBhc3NlcnRfZXF1YWxzKGNv
bnRyb2xsZXIuZXJyb3IubGVuZ3RoLCAxLCAncmVsZWFzZUxvY2sgaGFzIDEgcGFyYW1ldGVyJyk7
Ci0KLX0sICdSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyIGluc3RhbmNlcyBzaG91bGQgaGF2
ZSB0aGUgY29ycmVjdCBsaXN0IG9mIHByb3BlcnRpZXMnKTsKLQotZG9uZSgpOwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3Jl
YWRhYmxlLWJ5dGUtc3RyZWFtcy9wcm9wZXJ0aWVzLnNlcnZpY2V3b3JrZXIuaHR0cHMtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJl
YW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFtcy9wcm9wZXJ0aWVzLnNlcnZpY2V3b3JrZXIuaHR0cHMt
ZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNWI3OWNiMjNmYmE5
OGU2M2U1NjcyZjM2ODlhMDg2NDEwNTdjNzljLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMvcHJvcGVydGllcy5zZXJ2aWNld29y
a2VyLmh0dHBzLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotCi1Q
QVNTIFNlcnZpY2Ugd29ya2VyIHRlc3Qgc2V0dXAgCi1QQVNTIENhbiBnZXQgdGhlIFJlYWRhYmxl
U3RyZWFtQllPQlJlYWRlciBjb25zdHJ1Y3RvciBpbmRpcmVjdGx5IAotUEFTUyBSZWFkYWJsZVN0
cmVhbUJZT0JSZWFkZXIgY29uc3RydWN0b3Igc2hvdWxkIGdldCBhIFJlYWRhYmxlU3RyZWFtIG9i
amVjdCBhcyBhcmd1bWVudCAKLVBBU1MgUmVhZGFibGVTdHJlYW1CWU9CUmVhZGVyIGluc3RhbmNl
cyBzaG91bGQgaGF2ZSB0aGUgY29ycmVjdCBsaXN0IG9mIHByb3BlcnRpZXMgCi1GQUlMIFJlYWRh
YmxlU3RyZWFtQllPQlJlcXVlc3QgaW5zdGFuY2VzIHNob3VsZCBoYXZlIHRoZSBjb3JyZWN0IGxp
c3Qgb2YgcHJvcGVydGllcyBhc3NlcnRfZXF1YWxzOiBjb25zdHJ1Y3RvciBoYXMgMCBwYXJhbWV0
ZXJzIGV4cGVjdGVkIDAgYnV0IGdvdCAyCi1GQUlMIFJlYWRhYmxlQnl0ZVN0cmVhbUNvbnRyb2xs
ZXIgaW5zdGFuY2VzIHNob3VsZCBoYXZlIHRoZSBjb3JyZWN0IGxpc3Qgb2YgcHJvcGVydGllcyBh
c3NlcnRfZXF1YWxzOiBjb25zdHJ1Y3RvciBoYXMgbm8gcGFyYW1ldGVycyBleHBlY3RlZCAwIGJ1
dCBnb3QgMwotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL3Byb3BlcnRpZXMuc2Vydmlj
ZXdvcmtlci5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFtcy9wcm9wZXJ0aWVzLnNlcnZpY2V3
b3JrZXIuaHR0cHMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmE1YzUxMzVm
MmY3ZmM5MDNiNjZiY2U4ODNjMTA2NjFkNzNlYmEzMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL3Byb3BlcnRpZXMuc2Vydmlj
ZXdvcmtlci5odHRwcy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotPCFET0NU
WVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08dGl0bGU+cHJvcGVydGllcy5qcyBz
ZXJ2aWNlIHdvcmtlciB3cmFwcGVyIGZpbGU8L3RpdGxlPgotCi08c2NyaXB0IHNyYz0iL3Jlc291
cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90
ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3NlcnZpY2Utd29y
a2Vycy9zZXJ2aWNlLXdvcmtlci9yZXNvdXJjZXMvdGVzdC1oZWxwZXJzLnN1Yi5qcyI+PC9zY3Jp
cHQ+Ci0KLTxzY3JpcHQ+Ci0ndXNlIHN0cmljdCc7Ci1zZXJ2aWNlX3dvcmtlcl90ZXN0KCdwcm9w
ZXJ0aWVzLmpzJywgJ1NlcnZpY2Ugd29ya2VyIHRlc3Qgc2V0dXAnKTsKLTwvc2NyaXB0PgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJl
YW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFtcy9wcm9wZXJ0aWVzLnNoYXJlZHdvcmtlci1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL3Byb3BlcnRpZXMuc2hhcmVkd29ya2VyLWV4cGVjdGVk
LnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDlkNWQyNTA5ZDc4NDdlOGNkNmZl
NjYwNmFhNjBjZGQzM2FhNDc0ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL3Byb3BlcnRpZXMuc2hhcmVkd29ya2VyLWV4cGVj
dGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotQ09OU09MRSBNRVNTQUdFOiBS
ZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogU2hhcmVkV29ya2VyCi0KLUhhcm5l
c3MgRXJyb3IgKEZBSUwpLCBtZXNzYWdlID0gUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFy
aWFibGU6IFNoYXJlZFdvcmtlcgotCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMvcHJv
cGVydGllcy5zaGFyZWR3b3JrZXIuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMvcHJvcGVydGllcy5z
aGFyZWR3b3JrZXIuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDJmYjNlNWVi
YzBhMDMxMjNjNTMzOGIwMjViZTZlZjg1ZTRiMjg3My4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL3Byb3BlcnRpZXMuc2hhcmVk
d29ya2VyLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi08IURPQ1RZUEUgaHRt
bD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTx0aXRsZT5wcm9wZXJ0aWVzLmpzIHNoYXJlZCB3
b3JrZXIgd3JhcHBlciBmaWxlPC90aXRsZT4KLQotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVz
dGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5l
c3NyZXBvcnQuanMiPjwvc2NyaXB0PgotCi08c2NyaXB0PgotJ3VzZSBzdHJpY3QnOwotZmV0Y2hf
dGVzdHNfZnJvbV93b3JrZXIobmV3IFNoYXJlZFdvcmtlcigncHJvcGVydGllcy5qcycpKTsKLTwv
c2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFtcy93M2MtaW1wb3J0LmxvZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJs
ZS1ieXRlLXN0cmVhbXMvdzNjLWltcG9ydC5sb2cKaW5kZXggODkzN2JiYmIyNGNiZjk4NWNjYjUx
NTBkZDFlMzQxOWRkM2IyYTM4MS4uMDE5MmYxMWI2NWJiODE2NTA3OWNmN2E0MzVlMGNmNjU5MjM4
OTEwYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFtcy93M2MtaW1wb3J0LmxvZworKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFi
bGUtYnl0ZS1zdHJlYW1zL3czYy1pbXBvcnQubG9nCkBAIC0xLDcgKzEsNyBAQAogVGhlIHRlc3Rz
IGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnku
CiBEbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KIEluc3RlYWQs
IGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1
Yi5jb20vdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cworCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxh
dGZvcm0tdGVzdHMvd3B0CiAKIFRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2Mt
dGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0CiAKQEAgLTE0LDIzICsxNCw2IEBAIFByb3BlcnR5
IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgogTm9uZQogLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CiBMaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMvYnJhbmQtY2hlY2tzLmRlZGljYXRl
ZHdvcmtlci5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFtcy9icmFuZC1jaGVja3MuaHRtbAotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1i
eXRlLXN0cmVhbXMvYnJhbmQtY2hlY2tzLmpzCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFtcy9icmFuZC1jaGVj
a3Muc2VydmljZXdvcmtlci5odHRwcy5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFtcy9icmFuZC1jaGVj
a3Muc2hhcmVkd29ya2VyLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL2RldGFjaGVkLWJ1ZmZlcnMu
ZGVkaWNhdGVkd29ya2VyLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL2RldGFjaGVkLWJ1ZmZlcnMu
aHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMvZGV0YWNoZWQtYnVmZmVycy5qcwotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0
cmVhbXMvZGV0YWNoZWQtYnVmZmVycy5zZXJ2aWNld29ya2VyLmh0dHBzLmh0bWwKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0
ZS1zdHJlYW1zL2RldGFjaGVkLWJ1ZmZlcnMuc2hhcmVkd29ya2VyLmh0bWwKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1z
dHJlYW1zL2dlbmVyYWwuZGVkaWNhdGVkd29ya2VyLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL2dl
bmVyYWwuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMvZ2VuZXJhbC5qcwotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVh
bXMvZ2VuZXJhbC5zZXJ2aWNld29ya2VyLmh0dHBzLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL2dl
bmVyYWwuc2hhcmVkd29ya2VyLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL3Byb3BlcnRpZXMuZGVk
aWNhdGVkd29ya2VyLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL3Byb3BlcnRpZXMuaHRtbAotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJs
ZS1ieXRlLXN0cmVhbXMvcHJvcGVydGllcy5qcwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMvcHJvcGVydGll
cy5zZXJ2aWNld29ya2VyLmh0dHBzLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL3Byb3BlcnRpZXMu
c2hhcmVkd29ya2VyLmh0bWwKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL2JhZC1idWZmZXJzLWFuZC12aWV3
cy5hbnkuanMKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL2NvbnN0cnVjdC1ieW9iLXJlcXVlc3QuYW55Lmpz
CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3Jl
YWRhYmxlLWJ5dGUtc3RyZWFtcy9nZW5lcmFsLmFueS5qcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVh
bXMvYXN5bmMtaXRlcmF0b3IuYW55LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2FzeW5jLWl0
ZXJhdG9yLmFueS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGU1N2VhY2VlNjQ0OTc1ODJhNTQw
NWMzNGNjYmQ1ZmNkY2I1MjRlZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2FzeW5j
LWl0ZXJhdG9yLmFueS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0MCBAQAorCitGQUlMIEFzeW5j
IGl0ZXJhdG9yIGluc3RhbmNlcyBzaG91bGQgaGF2ZSB0aGUgY29ycmVjdCBsaXN0IG9mIHByb3Bl
cnRpZXMgcy52YWx1ZXMgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAncy52YWx1ZXMoKScsICdzLnZh
bHVlcycgaXMgdW5kZWZpbmVkKQorRkFJTCBBc3luYy1pdGVyYXRpbmcgYSBwdXNoIHNvdXJjZSBw
cm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJUeXBl
RXJyb3I6IHVuZGVmaW5lZCBpcyBub3QgYSBmdW5jdGlvbiAobmVhciAnLi4uY2h1bmsgb2Ygcy4u
LicpIgorRkFJTCBBc3luYy1pdGVyYXRpbmcgYSBwdWxsIHNvdXJjZSBwcm9taXNlX3Rlc3Q6IFVu
aGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJUeXBlRXJyb3I6IHVuZGVmaW5l
ZCBpcyBub3QgYSBmdW5jdGlvbiAobmVhciAnLi4uY2h1bmsgb2Ygcy4uLicpIgorRkFJTCBBc3lu
Yy1pdGVyYXRpbmcgYSBwdXNoIHNvdXJjZSB3aXRoIHVuZGVmaW5lZCB2YWx1ZXMgcHJvbWlzZV90
ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiVHlwZUVycm9yOiB1
bmRlZmluZWQgaXMgbm90IGEgZnVuY3Rpb24gKG5lYXIgJy4uLmNodW5rIG9mIHMuLi4nKSIKK0ZB
SUwgQXN5bmMtaXRlcmF0aW5nIGEgcHVsbCBzb3VyY2Ugd2l0aCB1bmRlZmluZWQgdmFsdWVzIHBy
b21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVF
cnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhIGZ1bmN0aW9uIChuZWFyICcuLi5jaHVuayBvZiBzLi4u
JykiCitGQUlMIEFzeW5jLWl0ZXJhdGluZyBhIHB1bGwgc291cmNlIG1hbnVhbGx5IHByb21pc2Vf
dGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVFcnJvcjog
cy52YWx1ZXMgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAncy52YWx1ZXMoKScsICdzLnZhbHVlcycg
aXMgdW5kZWZpbmVkKSIKK0ZBSUwgQXN5bmMtaXRlcmF0aW5nIGFuIGVycm9yZWQgc3RyZWFtIHRo
cm93cyBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAoc3RyaW5nKSAiZSIgYnV0IGdvdCAob2JqZWN0
KSBvYmplY3QgIlR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhIGZ1bmN0aW9uIChuZWFyICcu
Li5jaHVuayBvZiBzLi4uJykiCitGQUlMIEFzeW5jLWl0ZXJhdGluZyBhIGNsb3NlZCBzdHJlYW0g
bmV2ZXIgZXhlY3V0ZXMgdGhlIGxvb3AgYm9keSwgYnV0IHdvcmtzIGZpbmUgcHJvbWlzZV90ZXN0
OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiVHlwZUVycm9yOiB1bmRl
ZmluZWQgaXMgbm90IGEgZnVuY3Rpb24gKG5lYXIgJy4uLmNodW5rIG9mIHMuLi4nKSIKK0ZBSUwg
QXN5bmMtaXRlcmF0aW5nIGFuIGVtcHR5IGJ1dCBub3QgY2xvc2VkL2Vycm9yZWQgc3RyZWFtIG5l
dmVyIGV4ZWN1dGVzIHRoZSBsb29wIGJvZHkgYW5kIHN0YWxscyB0aGUgYXN5bmMgZnVuY3Rpb24g
cHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiVHlw
ZUVycm9yOiB1bmRlZmluZWQgaXMgbm90IGEgZnVuY3Rpb24gKG5lYXIgJy4uLmNodW5rIG9mIHMu
Li4nKSIKK0ZBSUwgQXN5bmMtaXRlcmF0aW5nIGEgcGFydGlhbGx5IGNvbnN1bWVkIHN0cmVhbSBw
cm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJUeXBl
RXJyb3I6IHVuZGVmaW5lZCBpcyBub3QgYSBmdW5jdGlvbiAobmVhciAnLi4uY2h1bmsgb2Ygcy4u
LicpIgorRkFJTCBDYW5jZWxsYXRpb24gYmVoYXZpb3Igd2hlbiB0aHJvd2luZyBpbnNpZGUgbG9v
cCBib2R5OyBwcmV2ZW50Q2FuY2VsID0gZmFsc2UgYXNzZXJ0X2FycmF5X2VxdWFsczogY2FuY2Vs
KCkgc2hvdWxkIGJlIGNhbGxlZCBsZW5ndGhzIGRpZmZlciwgZXhwZWN0ZWQgYXJyYXkgWyJwdWxs
IiwgImNhbmNlbCIsIHVuZGVmaW5lZF0gbGVuZ3RoIDMsIGdvdCBbXSBsZW5ndGggMAorRkFJTCBD
YW5jZWxsYXRpb24gYmVoYXZpb3Igd2hlbiB0aHJvd2luZyBpbnNpZGUgbG9vcCBib2R5OyBwcmV2
ZW50Q2FuY2VsID0gdHJ1ZSBhc3NlcnRfYXJyYXlfZXF1YWxzOiBjYW5jZWwoKSBzaG91bGQgbm90
IGJlIGNhbGxlZCBsZW5ndGhzIGRpZmZlciwgZXhwZWN0ZWQgYXJyYXkgWyJwdWxsIl0gbGVuZ3Ro
IDEsIGdvdCBbXSBsZW5ndGggMAorRkFJTCBDYW5jZWxsYXRpb24gYmVoYXZpb3Igd2hlbiBicmVh
a2luZyBpbnNpZGUgbG9vcCBib2R5OyBwcmV2ZW50Q2FuY2VsID0gZmFsc2UgYXNzZXJ0X2FycmF5
X2VxdWFsczogY2FuY2VsKCkgc2hvdWxkIGJlIGNhbGxlZCBsZW5ndGhzIGRpZmZlciwgZXhwZWN0
ZWQgYXJyYXkgWyJwdWxsIiwgImNhbmNlbCIsIHVuZGVmaW5lZF0gbGVuZ3RoIDMsIGdvdCBbXSBs
ZW5ndGggMAorRkFJTCBDYW5jZWxsYXRpb24gYmVoYXZpb3Igd2hlbiBicmVha2luZyBpbnNpZGUg
bG9vcCBib2R5OyBwcmV2ZW50Q2FuY2VsID0gdHJ1ZSBhc3NlcnRfYXJyYXlfZXF1YWxzOiBjYW5j
ZWwoKSBzaG91bGQgbm90IGJlIGNhbGxlZCBsZW5ndGhzIGRpZmZlciwgZXhwZWN0ZWQgYXJyYXkg
WyJwdWxsIl0gbGVuZ3RoIDEsIGdvdCBbXSBsZW5ndGggMAorRkFJTCBDYW5jZWxsYXRpb24gYmVo
YXZpb3Igd2hlbiByZXR1cm5pbmcgaW5zaWRlIGxvb3AgYm9keTsgcHJldmVudENhbmNlbCA9IGZh
bHNlIGFzc2VydF9hcnJheV9lcXVhbHM6IGNhbmNlbCgpIHNob3VsZCBiZSBjYWxsZWQgbGVuZ3Ro
cyBkaWZmZXIsIGV4cGVjdGVkIGFycmF5IFsicHVsbCIsICJjYW5jZWwiLCB1bmRlZmluZWRdIGxl
bmd0aCAzLCBnb3QgW10gbGVuZ3RoIDAKK0ZBSUwgQ2FuY2VsbGF0aW9uIGJlaGF2aW9yIHdoZW4g
cmV0dXJuaW5nIGluc2lkZSBsb29wIGJvZHk7IHByZXZlbnRDYW5jZWwgPSB0cnVlIGFzc2VydF9h
cnJheV9lcXVhbHM6IGNhbmNlbCgpIHNob3VsZCBub3QgYmUgY2FsbGVkIGxlbmd0aHMgZGlmZmVy
LCBleHBlY3RlZCBhcnJheSBbInB1bGwiXSBsZW5ndGggMSwgZ290IFtdIGxlbmd0aCAwCitGQUlM
IENhbmNlbGxhdGlvbiBiZWhhdmlvciB3aGVuIG1hbnVhbGx5IGNhbGxpbmcgcmV0dXJuKCk7IHBy
ZXZlbnRDYW5jZWwgPSBmYWxzZSBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0
aCB2YWx1ZTogb2JqZWN0ICJUeXBlRXJyb3I6IHMudmFsdWVzIGlzIG5vdCBhIGZ1bmN0aW9uLiAo
SW4gJ3MudmFsdWVzKHsgcHJldmVudENhbmNlbCB9KScsICdzLnZhbHVlcycgaXMgdW5kZWZpbmVk
KSIKK0ZBSUwgQ2FuY2VsbGF0aW9uIGJlaGF2aW9yIHdoZW4gbWFudWFsbHkgY2FsbGluZyByZXR1
cm4oKTsgcHJldmVudENhbmNlbCA9IHRydWUgcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0
aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiVHlwZUVycm9yOiBzLnZhbHVlcyBpcyBub3QgYSBmdW5j
dGlvbi4gKEluICdzLnZhbHVlcyh7IHByZXZlbnRDYW5jZWwgfSknLCAncy52YWx1ZXMnIGlzIHVu
ZGVmaW5lZCkiCitGQUlMIG5leHQoKSByZWplY3RzIGlmIHRoZSBzdHJlYW0gZXJyb3JzIHByb21p
c2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVFcnJv
cjogc1tTeW1ib2wuYXN5bmNJdGVyYXRvcl0gaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnc1tTeW1i
b2wuYXN5bmNJdGVyYXRvcl0oKScsICdzW1N5bWJvbC5hc3luY0l0ZXJhdG9yXScgaXMgdW5kZWZp
bmVkKSIKK0ZBSUwgcmV0dXJuKCkgZG9lcyBub3QgcmVqZWN0cyBpZiB0aGUgc3RyZWFtIGhhcyBu
b3QgZXJyb3JlZCB5ZXQgcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFs
dWU6IG9iamVjdCAiVHlwZUVycm9yOiBzW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSBpcyBub3QgYSBm
dW5jdGlvbi4gKEluICdzW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSgpJywgJ3NbU3ltYm9sLmFzeW5j
SXRlcmF0b3JdJyBpcyB1bmRlZmluZWQpIgorRkFJTCByZXR1cm4oKSByZWplY3RzIGlmIHRoZSBz
dHJlYW0gaGFzIGVycm9yZWQgcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGgg
dmFsdWU6IG9iamVjdCAiVHlwZUVycm9yOiBzW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSBpcyBub3Qg
YSBmdW5jdGlvbi4gKEluICdzW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSgpJywgJ3NbU3ltYm9sLmFz
eW5jSXRlcmF0b3JdJyBpcyB1bmRlZmluZWQpIgorRkFJTCBuZXh0KCkgdGhhdCBzdWNjZWVkczsg
bmV4dCgpIHRoYXQgcmVwb3J0cyBhbiBlcnJvcjsgbmV4dCgpIHByb21pc2VfdGVzdDogVW5oYW5k
bGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVFcnJvcjogc1tTeW1ib2wuYXN5
bmNJdGVyYXRvcl0gaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnc1tTeW1ib2wuYXN5bmNJdGVyYXRv
cl0oKScsICdzW1N5bWJvbC5hc3luY0l0ZXJhdG9yXScgaXMgdW5kZWZpbmVkKSIKK0ZBSUwgbmV4
dCgpIHRoYXQgc3VjY2VlZHM7IG5leHQoKSB0aGF0IHJlcG9ydHMgYW4gZXJyb3IoKTsgbmV4dCgp
IFtubyBhd2FpdGluZ10gcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFs
dWU6IG9iamVjdCAiVHlwZUVycm9yOiBzW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSBpcyBub3QgYSBm
dW5jdGlvbi4gKEluICdzW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSgpJywgJ3NbU3ltYm9sLmFzeW5j
SXRlcmF0b3JdJyBpcyB1bmRlZmluZWQpIgorRkFJTCBuZXh0KCkgdGhhdCBzdWNjZWVkczsgbmV4
dCgpIHRoYXQgcmVwb3J0cyBhbiBlcnJvcigpOyByZXR1cm4oKSBwcm9taXNlX3Rlc3Q6IFVuaGFu
ZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJUeXBlRXJyb3I6IHNbU3ltYm9sLmFz
eW5jSXRlcmF0b3JdIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3NbU3ltYm9sLmFzeW5jSXRlcmF0
b3JdKCknLCAnc1tTeW1ib2wuYXN5bmNJdGVyYXRvcl0nIGlzIHVuZGVmaW5lZCkiCitGQUlMIG5l
eHQoKSB0aGF0IHN1Y2NlZWRzOyBuZXh0KCkgdGhhdCByZXBvcnRzIGFuIGVycm9yKCk7IHJldHVy
bigpIFtubyBhd2FpdGluZ10gcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGgg
dmFsdWU6IG9iamVjdCAiVHlwZUVycm9yOiBzW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSBpcyBub3Qg
YSBmdW5jdGlvbi4gKEluICdzW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSgpJywgJ3NbU3ltYm9sLmFz
eW5jSXRlcmF0b3JdJyBpcyB1bmRlZmluZWQpIgorRkFJTCBuZXh0KCkgdGhhdCBzdWNjZWVkczsg
cmV0dXJuKCkgcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9i
amVjdCAiVHlwZUVycm9yOiBzW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSBpcyBub3QgYSBmdW5jdGlv
bi4gKEluICdzW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSgpJywgJ3NbU3ltYm9sLmFzeW5jSXRlcmF0
b3JdJyBpcyB1bmRlZmluZWQpIgorRkFJTCBuZXh0KCkgdGhhdCBzdWNjZWVkczsgcmV0dXJuKCkg
W25vIGF3YWl0aW5nXSBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1
ZTogb2JqZWN0ICJUeXBlRXJyb3I6IHNbU3ltYm9sLmFzeW5jSXRlcmF0b3JdIGlzIG5vdCBhIGZ1
bmN0aW9uLiAoSW4gJ3NbU3ltYm9sLmFzeW5jSXRlcmF0b3JdKCknLCAnc1tTeW1ib2wuYXN5bmNJ
dGVyYXRvcl0nIGlzIHVuZGVmaW5lZCkiCitGQUlMIHJldHVybigpOyBuZXh0KCkgcHJvbWlzZV90
ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiVHlwZUVycm9yOiBy
cy52YWx1ZXMgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAncnMudmFsdWVzKCknLCAncnMudmFsdWVz
JyBpcyB1bmRlZmluZWQpIgorRkFJTCByZXR1cm4oKTsgbmV4dCgpIFtubyBhd2FpdGluZ10gcHJv
bWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiVHlwZUVy
cm9yOiBycy52YWx1ZXMgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAncnMudmFsdWVzKCknLCAncnMu
dmFsdWVzJyBpcyB1bmRlZmluZWQpIgorRkFJTCByZXR1cm4oKTsgcmV0dXJuKCkgcHJvbWlzZV90
ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiVHlwZUVycm9yOiBy
cy52YWx1ZXMgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAncnMudmFsdWVzKCknLCAncnMudmFsdWVz
JyBpcyB1bmRlZmluZWQpIgorRkFJTCByZXR1cm4oKTsgcmV0dXJuKCkgW25vIGF3YWl0aW5nXSBw
cm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJUeXBl
RXJyb3I6IHJzLnZhbHVlcyBpcyBub3QgYSBmdW5jdGlvbi4gKEluICdycy52YWx1ZXMoKScsICdy
cy52YWx1ZXMnIGlzIHVuZGVmaW5lZCkiCitGQUlMIHZhbHVlcygpIHRocm93cyBpZiB0aGVyZSdz
IGFscmVhZHkgYSBsb2NrIHMudmFsdWVzIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3MudmFsdWVz
KCknLCAncy52YWx1ZXMnIGlzIHVuZGVmaW5lZCkKK0ZBSUwgQWNxdWlyaW5nIGEgcmVhZGVyIGFm
dGVyIGV4aGF1c3RpdmVseSBhc3luYy1pdGVyYXRpbmcgYSBzdHJlYW0gcHJvbWlzZV90ZXN0OiBV
bmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiVHlwZUVycm9yOiB1bmRlZmlu
ZWQgaXMgbm90IGEgZnVuY3Rpb24gKG5lYXIgJy4uLmNodW5rIG9mIHMuLi4nKSIKK0ZBSUwgQWNx
dWlyaW5nIGEgcmVhZGVyIGFmdGVyIHJldHVybigpaW5nIGZyb20gYSBzdHJlYW0gdGhhdCBlcnJv
cnMgcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAi
VHlwZUVycm9yOiBzW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSBpcyBub3QgYSBmdW5jdGlvbi4gKElu
ICdzW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSh7IHByZXZlbnRDYW5jZWw6IHRydWUgfSknLCAnc1tT
eW1ib2wuYXN5bmNJdGVyYXRvcl0nIGlzIHVuZGVmaW5lZCkiCitGQUlMIEFjcXVpcmluZyBhIHJl
YWRlciBhZnRlciBwYXJ0aWFsbHkgYXN5bmMtaXRlcmF0aW5nIGEgc3RyZWFtIHByb21pc2VfdGVz
dDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVFcnJvcjogdW5k
ZWZpbmVkIGlzIG5vdCBhIGZ1bmN0aW9uIChuZWFyICcuLi5jaHVuayBvZiBzLi4uJykiCitGQUlM
IEFjcXVpcmluZyBhIHJlYWRlciBhbmQgcmVhZGluZyB0aGUgcmVtYWluaW5nIGNodW5rcyBhZnRl
ciBwYXJ0aWFsbHkgYXN5bmMtaXRlcmF0aW5nIGEgc3RyZWFtIHdpdGggcHJldmVudENhbmNlbCA9
IHRydWUgcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVj
dCAiVHlwZUVycm9yOiBzLnZhbHVlcyBpcyBub3QgYSBmdW5jdGlvbi4gKEluICdzLnZhbHVlcyh7
cHJldmVudENhbmNlbDogdHJ1ZX0pJywgJ3MudmFsdWVzJyBpcyB1bmRlZmluZWQpIgorRkFJTCBy
ZXR1cm4oKSBzaG91bGQgdW5sb2NrIHRoZSBzdHJlYW0gc3luY2hyb25vdXNseSB3aGVuIHByZXZl
bnRDYW5jZWwgPSBmYWxzZSBycy52YWx1ZXMgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAncnMudmFs
dWVzKHsgcHJldmVudENhbmNlbCB9KScsICdycy52YWx1ZXMnIGlzIHVuZGVmaW5lZCkKK0ZBSUwg
cmV0dXJuKCkgc2hvdWxkIHVubG9jayB0aGUgc3RyZWFtIHN5bmNocm9ub3VzbHkgd2hlbiBwcmV2
ZW50Q2FuY2VsID0gdHJ1ZSBycy52YWx1ZXMgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAncnMudmFs
dWVzKHsgcHJldmVudENhbmNlbCB9KScsICdycy52YWx1ZXMnIGlzIHVuZGVmaW5lZCkKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJl
YW1zL3JlYWRhYmxlLXN0cmVhbXMvYXN5bmMtaXRlcmF0b3IuYW55Lmh0bWwgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFt
cy9hc3luYy1pdGVyYXRvci5hbnkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMzgyOTEzNTI4ZTY5M2IzYTVk
NTZjNjYwYTQ1MDYwOTgwYjU0OGMzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvYXN5
bmMtaXRlcmF0b3IuYW55Lmh0bWwKQEAgLTAsMCArMSBAQAorPCEtLSBUaGlzIGZpbGUgaXMgcmVx
dWlyZWQgZm9yIFdlYktpdCB0ZXN0IGluZnJhc3RydWN0dXJlIHRvIHJ1biB0aGUgdGVtcGxhdGVk
IHRlc3QgLS0+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0
cmVhbXMvYXN5bmMtaXRlcmF0b3IuYW55LmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvYXN5bmMtaXRlcmF0b3Iu
YW55LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjdjNDlmZTkzN2RlODcyNDVkOThjNzBiMzM5ODAxOWQzNTg2ZTE3
ZmQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9hc3luYy1pdGVyYXRvci5hbnkuanMK
QEAgLTAsMCArMSw2MjcgQEAKKy8vIE1FVEE6IGdsb2JhbD13aW5kb3csd29ya2VyLGpzc2hlbGwK
Ky8vIE1FVEE6IHNjcmlwdD0uLi9yZXNvdXJjZXMvcnMtdXRpbHMuanMKKy8vIE1FVEE6IHNjcmlw
dD0uLi9yZXNvdXJjZXMvdGVzdC11dGlscy5qcworLy8gTUVUQTogc2NyaXB0PS4uL3Jlc291cmNl
cy9yZWNvcmRpbmctc3RyZWFtcy5qcworJ3VzZSBzdHJpY3QnOworCitjb25zdCBlcnJvcjEgPSBu
ZXcgRXJyb3IoJ2Vycm9yMScpOworCitmdW5jdGlvbiBhc3NlcnRfaXRlcl9yZXN1bHQoaXRlclJl
c3VsdCwgdmFsdWUsIGRvbmUsIG1lc3NhZ2UpIHsKKyAgY29uc3QgcHJlZml4ID0gbWVzc2FnZSA9
PT0gdW5kZWZpbmVkID8gJycgOiBgJHttZXNzYWdlfSBgOworICBhc3NlcnRfZXF1YWxzKHR5cGVv
ZiBpdGVyUmVzdWx0LCAnb2JqZWN0JywgYCR7cHJlZml4fXR5cGUgaXMgb2JqZWN0YCk7CisgIGFz
c2VydF9lcXVhbHMoT2JqZWN0LmdldFByb3RvdHlwZU9mKGl0ZXJSZXN1bHQpLCBPYmplY3QucHJv
dG90eXBlLCBgJHtwcmVmaXh9W1tQcm90b3R5cGVdXWApOworICBhc3NlcnRfYXJyYXlfZXF1YWxz
KE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGl0ZXJSZXN1bHQpLnNvcnQoKSwgWydkb25lJywg
J3ZhbHVlJ10sIGAke3ByZWZpeH1wcm9wZXJ0eSBuYW1lc2ApOworICBhc3NlcnRfZXF1YWxzKGl0
ZXJSZXN1bHQudmFsdWUsIHZhbHVlLCBgJHtwcmVmaXh9dmFsdWVgKTsKKyAgYXNzZXJ0X2VxdWFs
cyhpdGVyUmVzdWx0LmRvbmUsIGRvbmUsIGAke3ByZWZpeH1kb25lYCk7Cit9CisKK3Rlc3QoKCkg
PT4geworICBjb25zdCBzID0gbmV3IFJlYWRhYmxlU3RyZWFtKCk7CisgIGNvbnN0IGl0ID0gcy52
YWx1ZXMoKTsKKyAgY29uc3QgcHJvdG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YoaXQpOworCisg
IGNvbnN0IEFzeW5jSXRlcmF0b3JQcm90b3R5cGUgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YoT2Jq
ZWN0LmdldFByb3RvdHlwZU9mKGFzeW5jIGZ1bmN0aW9uKiAoKSB7fSkucHJvdG90eXBlKTsKKyAg
YXNzZXJ0X2VxdWFscyhPYmplY3QuZ2V0UHJvdG90eXBlT2YocHJvdG8pLCBBc3luY0l0ZXJhdG9y
UHJvdG90eXBlLCAncHJvdG90eXBlIHNob3VsZCBleHRlbmQgQXN5bmNJdGVyYXRvclByb3RvdHlw
ZScpOworCisgIGNvbnN0IG1ldGhvZHMgPSBbJ25leHQnLCAncmV0dXJuJ10uc29ydCgpOworICBh
c3NlcnRfYXJyYXlfZXF1YWxzKE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHByb3RvKS5zb3J0
KCksIG1ldGhvZHMsICdzaG91bGQgaGF2ZSBhbGwgdGhlIGNvcnJlY3QgbWV0aG9kcycpOworCisg
IGZvciAoY29uc3QgbSBvZiBtZXRob2RzKSB7CisgICAgY29uc3QgcHJvcERlc2MgPSBPYmplY3Qu
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHByb3RvLCBtKTsKKyAgICBhc3NlcnRfdHJ1ZShwcm9w
RGVzYy5lbnVtZXJhYmxlLCAnbWV0aG9kIHNob3VsZCBiZSBlbnVtZXJhYmxlJyk7CisgICAgYXNz
ZXJ0X3RydWUocHJvcERlc2MuY29uZmlndXJhYmxlLCAnbWV0aG9kIHNob3VsZCBiZSBjb25maWd1
cmFibGUnKTsKKyAgICBhc3NlcnRfdHJ1ZShwcm9wRGVzYy53cml0YWJsZSwgJ21ldGhvZCBzaG91
bGQgYmUgd3JpdGFibGUnKTsKKyAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiBpdFttXSwgJ2Z1bmN0
aW9uJywgJ21ldGhvZCBzaG91bGQgYmUgYSBmdW5jdGlvbicpOworICAgIGFzc2VydF9lcXVhbHMo
aXRbbV0ubmFtZSwgbSwgJ21ldGhvZCBzaG91bGQgaGF2ZSB0aGUgY29ycmVjdCBuYW1lJyk7Cisg
IH0KKworICBhc3NlcnRfZXF1YWxzKGl0Lm5leHQubGVuZ3RoLCAwLCAnbmV4dCBzaG91bGQgaGF2
ZSBubyBwYXJhbWV0ZXJzJyk7CisgIGFzc2VydF9lcXVhbHMoaXQucmV0dXJuLmxlbmd0aCwgMSwg
J3JldHVybiBzaG91bGQgaGF2ZSAxIHBhcmFtZXRlcicpOworICBhc3NlcnRfZXF1YWxzKHR5cGVv
ZiBpdC50aHJvdywgJ3VuZGVmaW5lZCcsICd0aHJvdyBzaG91bGQgbm90IGV4aXN0Jyk7Cit9LCAn
QXN5bmMgaXRlcmF0b3IgaW5zdGFuY2VzIHNob3VsZCBoYXZlIHRoZSBjb3JyZWN0IGxpc3Qgb2Yg
cHJvcGVydGllcycpOworCitwcm9taXNlX3Rlc3QoYXN5bmMgKCkgPT4geworICBjb25zdCBzID0g
bmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjLmVucXVldWUoMSk7
CisgICAgICBjLmVucXVldWUoMik7CisgICAgICBjLmVucXVldWUoMyk7CisgICAgICBjLmNsb3Nl
KCk7CisgICAgfQorICB9KTsKKworICBjb25zdCBjaHVua3MgPSBbXTsKKyAgZm9yIGF3YWl0IChj
b25zdCBjaHVuayBvZiBzKSB7CisgICAgY2h1bmtzLnB1c2goY2h1bmspOworICB9CisgIGFzc2Vy
dF9hcnJheV9lcXVhbHMoY2h1bmtzLCBbMSwgMiwgM10pOworfSwgJ0FzeW5jLWl0ZXJhdGluZyBh
IHB1c2ggc291cmNlJyk7CisKK3Byb21pc2VfdGVzdChhc3luYyAoKSA9PiB7CisgIGxldCBpID0g
MTsKKyAgY29uc3QgcyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgcHVsbChjKSB7CisgICAg
ICBjLmVucXVldWUoaSk7CisgICAgICBpZiAoaSA+PSAzKSB7CisgICAgICAgIGMuY2xvc2UoKTsK
KyAgICAgIH0KKyAgICAgIGkgKz0gMTsKKyAgICB9CisgIH0pOworCisgIGNvbnN0IGNodW5rcyA9
IFtdOworICBmb3IgYXdhaXQgKGNvbnN0IGNodW5rIG9mIHMpIHsKKyAgICBjaHVua3MucHVzaChj
aHVuayk7CisgIH0KKyAgYXNzZXJ0X2FycmF5X2VxdWFscyhjaHVua3MsIFsxLCAyLCAzXSk7Cit9
LCAnQXN5bmMtaXRlcmF0aW5nIGEgcHVsbCBzb3VyY2UnKTsKKworcHJvbWlzZV90ZXN0KGFzeW5j
ICgpID0+IHsKKyAgY29uc3QgcyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykg
eworICAgICAgYy5lbnF1ZXVlKHVuZGVmaW5lZCk7CisgICAgICBjLmVucXVldWUodW5kZWZpbmVk
KTsKKyAgICAgIGMuZW5xdWV1ZSh1bmRlZmluZWQpOworICAgICAgYy5jbG9zZSgpOworICAgIH0K
KyAgfSk7CisKKyAgY29uc3QgY2h1bmtzID0gW107CisgIGZvciBhd2FpdCAoY29uc3QgY2h1bmsg
b2YgcykgeworICAgIGNodW5rcy5wdXNoKGNodW5rKTsKKyAgfQorICBhc3NlcnRfYXJyYXlfZXF1
YWxzKGNodW5rcywgW3VuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWRdKTsKK30sICdBc3lu
Yy1pdGVyYXRpbmcgYSBwdXNoIHNvdXJjZSB3aXRoIHVuZGVmaW5lZCB2YWx1ZXMnKTsKKworcHJv
bWlzZV90ZXN0KGFzeW5jICgpID0+IHsKKyAgbGV0IGkgPSAxOworICBjb25zdCBzID0gbmV3IFJl
YWRhYmxlU3RyZWFtKHsKKyAgICBwdWxsKGMpIHsKKyAgICAgIGMuZW5xdWV1ZSh1bmRlZmluZWQp
OworICAgICAgaWYgKGkgPj0gMykgeworICAgICAgICBjLmNsb3NlKCk7CisgICAgICB9CisgICAg
ICBpICs9IDE7CisgICAgfQorICB9KTsKKworICBjb25zdCBjaHVua3MgPSBbXTsKKyAgZm9yIGF3
YWl0IChjb25zdCBjaHVuayBvZiBzKSB7CisgICAgY2h1bmtzLnB1c2goY2h1bmspOworICB9Cisg
IGFzc2VydF9hcnJheV9lcXVhbHMoY2h1bmtzLCBbdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVm
aW5lZF0pOworfSwgJ0FzeW5jLWl0ZXJhdGluZyBhIHB1bGwgc291cmNlIHdpdGggdW5kZWZpbmVk
IHZhbHVlcycpOworCitwcm9taXNlX3Rlc3QoYXN5bmMgKCkgPT4geworICBsZXQgaSA9IDE7Cisg
IGNvbnN0IHMgPSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSh7CisgICAgcHVsbChjKSB7CisgICAg
ICBjLmVucXVldWUoaSk7CisgICAgICBpZiAoaSA+PSAzKSB7CisgICAgICAgIGMuY2xvc2UoKTsK
KyAgICAgIH0KKyAgICAgIGkgKz0gMTsKKyAgICB9LAorICB9LCBuZXcgQ291bnRRdWV1aW5nU3Ry
YXRlZ3koeyBoaWdoV2F0ZXJNYXJrOiAwIH0pKTsKKworICBjb25zdCBpdCA9IHMudmFsdWVzKCk7
CisgIGFzc2VydF9hcnJheV9lcXVhbHMocy5ldmVudHMsIFtdKTsKKworICBjb25zdCByZWFkMSA9
IGF3YWl0IGl0Lm5leHQoKTsKKyAgYXNzZXJ0X2l0ZXJfcmVzdWx0KHJlYWQxLCAxLCBmYWxzZSk7
CisgIGFzc2VydF9hcnJheV9lcXVhbHMocy5ldmVudHMsIFsncHVsbCddKTsKKworICBjb25zdCBy
ZWFkMiA9IGF3YWl0IGl0Lm5leHQoKTsKKyAgYXNzZXJ0X2l0ZXJfcmVzdWx0KHJlYWQyLCAyLCBm
YWxzZSk7CisgIGFzc2VydF9hcnJheV9lcXVhbHMocy5ldmVudHMsIFsncHVsbCcsICdwdWxsJ10p
OworCisgIGNvbnN0IHJlYWQzID0gYXdhaXQgaXQubmV4dCgpOworICBhc3NlcnRfaXRlcl9yZXN1
bHQocmVhZDMsIDMsIGZhbHNlKTsKKyAgYXNzZXJ0X2FycmF5X2VxdWFscyhzLmV2ZW50cywgWydw
dWxsJywgJ3B1bGwnLCAncHVsbCddKTsKKworICBjb25zdCByZWFkNCA9IGF3YWl0IGl0Lm5leHQo
KTsKKyAgYXNzZXJ0X2l0ZXJfcmVzdWx0KHJlYWQ0LCB1bmRlZmluZWQsIHRydWUpOworICBhc3Nl
cnRfYXJyYXlfZXF1YWxzKHMuZXZlbnRzLCBbJ3B1bGwnLCAncHVsbCcsICdwdWxsJ10pOworfSwg
J0FzeW5jLWl0ZXJhdGluZyBhIHB1bGwgc291cmNlIG1hbnVhbGx5Jyk7CisKK3Byb21pc2VfdGVz
dChhc3luYyAoKSA9PiB7CisgIGNvbnN0IHMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0
YXJ0KGMpIHsKKyAgICAgIGMuZXJyb3IoJ2UnKTsKKyAgICB9LAorICB9KTsKKworICB0cnkgewor
ICAgIGZvciBhd2FpdCAoY29uc3QgY2h1bmsgb2Ygcykge30KKyAgICBhc3NlcnRfdW5yZWFjaGVk
KCk7CisgIH0gY2F0Y2ggKGUpIHsKKyAgICBhc3NlcnRfZXF1YWxzKGUsICdlJyk7CisgIH0KK30s
ICdBc3luYy1pdGVyYXRpbmcgYW4gZXJyb3JlZCBzdHJlYW0gdGhyb3dzJyk7CisKK3Byb21pc2Vf
dGVzdChhc3luYyAoKSA9PiB7CisgIGNvbnN0IHMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAg
IHN0YXJ0KGMpIHsKKyAgICAgIGMuY2xvc2UoKTsKKyAgICB9CisgIH0pOworCisgIGZvciBhd2Fp
dCAoY29uc3QgY2h1bmsgb2YgcykgeworICAgIGFzc2VydF91bnJlYWNoZWQoKTsKKyAgfQorfSwg
J0FzeW5jLWl0ZXJhdGluZyBhIGNsb3NlZCBzdHJlYW0gbmV2ZXIgZXhlY3V0ZXMgdGhlIGxvb3Ag
Ym9keSwgYnV0IHdvcmtzIGZpbmUnKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jICgpID0+IHsKKyAg
Y29uc3QgcyA9IG5ldyBSZWFkYWJsZVN0cmVhbSgpOworCisgIGNvbnN0IGxvb3AgPSBhc3luYyAo
KSA9PiB7CisgICAgZm9yIGF3YWl0IChjb25zdCBjaHVuayBvZiBzKSB7CisgICAgICBhc3NlcnRf
dW5yZWFjaGVkKCk7CisgICAgfQorICAgIGFzc2VydF91bnJlYWNoZWQoKTsKKyAgfTsKKworICBh
d2FpdCBQcm9taXNlLnJhY2UoWworICAgIGxvb3AoKSwKKyAgICBmbHVzaEFzeW5jRXZlbnRzKCkK
KyAgXSk7Cit9LCAnQXN5bmMtaXRlcmF0aW5nIGFuIGVtcHR5IGJ1dCBub3QgY2xvc2VkL2Vycm9y
ZWQgc3RyZWFtIG5ldmVyIGV4ZWN1dGVzIHRoZSBsb29wIGJvZHkgYW5kIHN0YWxscyB0aGUgYXN5
bmMgZnVuY3Rpb24nKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jICgpID0+IHsKKyAgY29uc3QgcyA9
IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgYy5lbnF1ZXVlKDEp
OworICAgICAgYy5lbnF1ZXVlKDIpOworICAgICAgYy5lbnF1ZXVlKDMpOworICAgICAgYy5jbG9z
ZSgpOworICAgIH0sCisgIH0pOworCisgIGNvbnN0IHJlYWRlciA9IHMuZ2V0UmVhZGVyKCk7Cisg
IGNvbnN0IHJlYWRSZXN1bHQgPSBhd2FpdCByZWFkZXIucmVhZCgpOworICBhc3NlcnRfaXRlcl9y
ZXN1bHQocmVhZFJlc3VsdCwgMSwgZmFsc2UpOworICByZWFkZXIucmVsZWFzZUxvY2soKTsKKwor
ICBjb25zdCBjaHVua3MgPSBbXTsKKyAgZm9yIGF3YWl0IChjb25zdCBjaHVuayBvZiBzKSB7Cisg
ICAgY2h1bmtzLnB1c2goY2h1bmspOworICB9CisgIGFzc2VydF9hcnJheV9lcXVhbHMoY2h1bmtz
LCBbMiwgM10pOworfSwgJ0FzeW5jLWl0ZXJhdGluZyBhIHBhcnRpYWxseSBjb25zdW1lZCBzdHJl
YW0nKTsKKworZm9yIChjb25zdCB0eXBlIG9mIFsndGhyb3cnLCAnYnJlYWsnLCAncmV0dXJuJ10p
IHsKKyAgZm9yIChjb25zdCBwcmV2ZW50Q2FuY2VsIG9mIFtmYWxzZSwgdHJ1ZV0pIHsKKyAgICBw
cm9taXNlX3Rlc3QoYXN5bmMgKCkgPT4geworICAgICAgY29uc3QgcyA9IHJlY29yZGluZ1JlYWRh
YmxlU3RyZWFtKHsKKyAgICAgICAgc3RhcnQoYykgeworICAgICAgICAgIGMuZW5xdWV1ZSgwKTsK
KyAgICAgICAgfQorICAgICAgfSk7CisKKyAgICAgIC8vIHVzZSBhIHNlcGFyYXRlIGZ1bmN0aW9u
IGZvciB0aGUgbG9vcCBib2R5IHNvIHJldHVybiBkb2VzIG5vdCBzdG9wIHRoZSB0ZXN0CisgICAg
ICBjb25zdCBsb29wID0gYXN5bmMgKCkgPT4geworICAgICAgICBmb3IgYXdhaXQgKGNvbnN0IGMg
b2Ygcy52YWx1ZXMoeyBwcmV2ZW50Q2FuY2VsIH0pKSB7CisgICAgICAgICAgaWYgKHR5cGUgPT09
ICd0aHJvdycpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigpOworICAgICAgICAgIH0g
ZWxzZSBpZiAodHlwZSA9PT0gJ2JyZWFrJykgeworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgfSBlbHNlIGlmICh0eXBlID09PSAncmV0dXJuJykgeworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfTsKKworICAgICAgdHJ5IHsKKyAgICAgICAg
YXdhaXQgbG9vcCgpOworICAgICAgfSBjYXRjaCAoZSkge30KKworICAgICAgaWYgKHByZXZlbnRD
YW5jZWwpIHsKKyAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhzLmV2ZW50cywgWydwdWxsJ10s
IGBjYW5jZWwoKSBzaG91bGQgbm90IGJlIGNhbGxlZGApOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgYXNzZXJ0X2FycmF5X2VxdWFscyhzLmV2ZW50cywgWydwdWxsJywgJ2NhbmNlbCcsIHVuZGVm
aW5lZF0sIGBjYW5jZWwoKSBzaG91bGQgYmUgY2FsbGVkYCk7CisgICAgICB9CisgICAgfSwgYENh
bmNlbGxhdGlvbiBiZWhhdmlvciB3aGVuICR7dHlwZX1pbmcgaW5zaWRlIGxvb3AgYm9keTsgcHJl
dmVudENhbmNlbCA9ICR7cHJldmVudENhbmNlbH1gKTsKKyAgfQorfQorCitmb3IgKGNvbnN0IHBy
ZXZlbnRDYW5jZWwgb2YgW2ZhbHNlLCB0cnVlXSkgeworICBwcm9taXNlX3Rlc3QoYXN5bmMgKCkg
PT4geworICAgIGNvbnN0IHMgPSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSh7CisgICAgICBzdGFy
dChjKSB7CisgICAgICAgIGMuZW5xdWV1ZSgwKTsKKyAgICAgIH0KKyAgICB9KTsKKworICAgIGNv
bnN0IGl0ID0gcy52YWx1ZXMoeyBwcmV2ZW50Q2FuY2VsIH0pOworICAgIGF3YWl0IGl0LnJldHVy
bigpOworCisgICAgaWYgKHByZXZlbnRDYW5jZWwpIHsKKyAgICAgIGFzc2VydF9hcnJheV9lcXVh
bHMocy5ldmVudHMsIFtdLCBgY2FuY2VsKCkgc2hvdWxkIG5vdCBiZSBjYWxsZWRgKTsKKyAgICB9
IGVsc2UgeworICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhzLmV2ZW50cywgWydjYW5jZWwnLCB1
bmRlZmluZWRdLCBgY2FuY2VsKCkgc2hvdWxkIGJlIGNhbGxlZGApOworICAgIH0KKyAgfSwgYENh
bmNlbGxhdGlvbiBiZWhhdmlvciB3aGVuIG1hbnVhbGx5IGNhbGxpbmcgcmV0dXJuKCk7IHByZXZl
bnRDYW5jZWwgPSAke3ByZXZlbnRDYW5jZWx9YCk7Cit9CisKK3Byb21pc2VfdGVzdChhc3luYyB0
ID0+IHsKKyAgbGV0IHRpbWVzUHVsbGVkID0gMDsKKyAgY29uc3QgcyA9IG5ldyBSZWFkYWJsZVN0
cmVhbSh7CisgICAgcHVsbChjKSB7CisgICAgICBpZiAodGltZXNQdWxsZWQgPT09IDApIHsKKyAg
ICAgICAgYy5lbnF1ZXVlKDApOworICAgICAgICArK3RpbWVzUHVsbGVkOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgYy5lcnJvcihlcnJvcjEpOworICAgICAgfQorICAgIH0KKyAgfSk7CisKKyAg
Y29uc3QgaXQgPSBzW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSgpOworCisgIGNvbnN0IGl0ZXJSZXN1
bHQxID0gYXdhaXQgaXQubmV4dCgpOworICBhc3NlcnRfaXRlcl9yZXN1bHQoaXRlclJlc3VsdDEs
IDAsIGZhbHNlLCAnMXN0IG5leHQoKScpOworCisgIGF3YWl0IHByb21pc2VfcmVqZWN0c19leGFj
dGx5KHQsIGVycm9yMSwgaXQubmV4dCgpLCAnMm5kIG5leHQoKScpOworfSwgJ25leHQoKSByZWpl
Y3RzIGlmIHRoZSBzdHJlYW0gZXJyb3JzJyk7CisKK3Byb21pc2VfdGVzdChhc3luYyAoKSA9PiB7
CisgIGxldCB0aW1lc1B1bGxlZCA9IDA7CisgIGNvbnN0IHMgPSBuZXcgUmVhZGFibGVTdHJlYW0o
eworICAgIHB1bGwoYykgeworICAgICAgaWYgKHRpbWVzUHVsbGVkID09PSAwKSB7CisgICAgICAg
IGMuZW5xdWV1ZSgwKTsKKyAgICAgICAgKyt0aW1lc1B1bGxlZDsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIGMuZXJyb3IoZXJyb3IxKTsKKyAgICAgIH0KKyAgICB9CisgIH0pOworCisgIGNvbnN0
IGl0ID0gc1tTeW1ib2wuYXN5bmNJdGVyYXRvcl0oKTsKKworICBjb25zdCBpdGVyUmVzdWx0ID0g
YXdhaXQgaXQucmV0dXJuKCdyZXR1cm4gdmFsdWUnKTsKKyAgYXNzZXJ0X2l0ZXJfcmVzdWx0KGl0
ZXJSZXN1bHQsICdyZXR1cm4gdmFsdWUnLCB0cnVlKTsKK30sICdyZXR1cm4oKSBkb2VzIG5vdCBy
ZWplY3RzIGlmIHRoZSBzdHJlYW0gaGFzIG5vdCBlcnJvcmVkIHlldCcpOworCitwcm9taXNlX3Rl
c3QoYXN5bmMgdCA9PiB7CisgIGxldCB0aW1lc1B1bGxlZCA9IDA7CisgIGNvbnN0IHMgPSBuZXcg
UmVhZGFibGVTdHJlYW0oeworICAgIHB1bGwoYykgeworICAgICAgLy8gRG8gbm90IGVycm9yIGlu
IHN0YXJ0KCkgYmVjYXVzZSBkb2luZyBzbyB3b3VsZCBwcmV2ZW50IGFjcXVpcmluZyBhIHJlYWRl
ci9hc3luYyBpdGVyYXRvci4KKyAgICAgIGMuZXJyb3IoZXJyb3IxKTsKKyAgICB9CisgIH0pOwor
CisgIGNvbnN0IGl0ID0gc1tTeW1ib2wuYXN5bmNJdGVyYXRvcl0oKTsKKworICBhd2FpdCBmbHVz
aEFzeW5jRXZlbnRzKCk7CisgIGF3YWl0IHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9y
MSwgaXQucmV0dXJuKCdyZXR1cm4gdmFsdWUnKSk7Cit9LCAncmV0dXJuKCkgcmVqZWN0cyBpZiB0
aGUgc3RyZWFtIGhhcyBlcnJvcmVkJyk7CisKK3Byb21pc2VfdGVzdChhc3luYyB0ID0+IHsKKyAg
bGV0IHRpbWVzUHVsbGVkID0gMDsKKyAgY29uc3QgcyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Cisg
ICAgcHVsbChjKSB7CisgICAgICBpZiAodGltZXNQdWxsZWQgPT09IDApIHsKKyAgICAgICAgYy5l
bnF1ZXVlKDApOworICAgICAgICArK3RpbWVzUHVsbGVkOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgYy5lcnJvcihlcnJvcjEpOworICAgICAgfQorICAgIH0KKyAgfSk7CisKKyAgY29uc3QgaXQg
PSBzW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSgpOworCisgIGNvbnN0IGl0ZXJSZXN1bHQxID0gYXdh
aXQgaXQubmV4dCgpOworICBhc3NlcnRfaXRlcl9yZXN1bHQoaXRlclJlc3VsdDEsIDAsIGZhbHNl
LCAnMXN0IG5leHQoKScpOworCisgIGF3YWl0IHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVy
cm9yMSwgaXQubmV4dCgpLCAnMm5kIG5leHQoKScpOworCisgIGNvbnN0IGl0ZXJSZXN1bHQzID0g
YXdhaXQgaXQubmV4dCgpOworICBhc3NlcnRfaXRlcl9yZXN1bHQoaXRlclJlc3VsdDMsIHVuZGVm
aW5lZCwgdHJ1ZSwgJzNyZCBuZXh0KCknKTsKK30sICduZXh0KCkgdGhhdCBzdWNjZWVkczsgbmV4
dCgpIHRoYXQgcmVwb3J0cyBhbiBlcnJvcjsgbmV4dCgpJyk7CisKK3Byb21pc2VfdGVzdChhc3lu
YyAoKSA9PiB7CisgIGxldCB0aW1lc1B1bGxlZCA9IDA7CisgIGNvbnN0IHMgPSBuZXcgUmVhZGFi
bGVTdHJlYW0oeworICAgIHB1bGwoYykgeworICAgICAgaWYgKHRpbWVzUHVsbGVkID09PSAwKSB7
CisgICAgICAgIGMuZW5xdWV1ZSgwKTsKKyAgICAgICAgKyt0aW1lc1B1bGxlZDsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIGMuZXJyb3IoZXJyb3IxKTsKKyAgICAgIH0KKyAgICB9CisgIH0pOwor
CisgIGNvbnN0IGl0ID0gc1tTeW1ib2wuYXN5bmNJdGVyYXRvcl0oKTsKKworICBjb25zdCBpdGVy
UmVzdWx0cyA9IGF3YWl0IFByb21pc2UuYWxsU2V0dGxlZChbaXQubmV4dCgpLCBpdC5uZXh0KCks
IGl0Lm5leHQoKV0pOworCisgIGFzc2VydF9lcXVhbHMoaXRlclJlc3VsdHNbMF0uc3RhdHVzLCAn
ZnVsZmlsbGVkJywgJzFzdCBuZXh0KCkgcHJvbWlzZSBzdGF0dXMnKTsKKyAgYXNzZXJ0X2l0ZXJf
cmVzdWx0KGl0ZXJSZXN1bHRzWzBdLnZhbHVlLCAwLCBmYWxzZSwgJzFzdCBuZXh0KCknKTsKKwor
ICBhc3NlcnRfZXF1YWxzKGl0ZXJSZXN1bHRzWzFdLnN0YXR1cywgJ3JlamVjdGVkJywgJzJuZCBu
ZXh0KCkgcHJvbWlzZSBzdGF0dXMnKTsKKyAgYXNzZXJ0X2VxdWFscyhpdGVyUmVzdWx0c1sxXS5y
ZWFzb24sIGVycm9yMSwgJzJuZCBuZXh0KCkgcmVqZWN0aW9uIHJlYXNvbicpOworCisgIGFzc2Vy
dF9lcXVhbHMoaXRlclJlc3VsdHNbMl0uc3RhdHVzLCAnZnVsZmlsbGVkJywgJzNyZCBuZXh0KCkg
cHJvbWlzZSBzdGF0dXMnKTsKKyAgYXNzZXJ0X2l0ZXJfcmVzdWx0KGl0ZXJSZXN1bHRzWzJdLnZh
bHVlLCB1bmRlZmluZWQsIHRydWUsICczcmQgbmV4dCgpJyk7Cit9LCAnbmV4dCgpIHRoYXQgc3Vj
Y2VlZHM7IG5leHQoKSB0aGF0IHJlcG9ydHMgYW4gZXJyb3IoKTsgbmV4dCgpIFtubyBhd2FpdGlu
Z10nKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4geworICBsZXQgdGltZXNQdWxsZWQgPSAw
OworICBjb25zdCBzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBwdWxsKGMpIHsKKyAgICAg
IGlmICh0aW1lc1B1bGxlZCA9PT0gMCkgeworICAgICAgICBjLmVucXVldWUoMCk7CisgICAgICAg
ICsrdGltZXNQdWxsZWQ7CisgICAgICB9IGVsc2UgeworICAgICAgICBjLmVycm9yKGVycm9yMSk7
CisgICAgICB9CisgICAgfQorICB9KTsKKworICBjb25zdCBpdCA9IHNbU3ltYm9sLmFzeW5jSXRl
cmF0b3JdKCk7CisKKyAgY29uc3QgaXRlclJlc3VsdDEgPSBhd2FpdCBpdC5uZXh0KCk7CisgIGFz
c2VydF9pdGVyX3Jlc3VsdChpdGVyUmVzdWx0MSwgMCwgZmFsc2UsICcxc3QgbmV4dCgpJyk7CisK
KyAgYXdhaXQgcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCBpdC5uZXh0KCksICcy
bmQgbmV4dCgpJyk7CisKKyAgY29uc3QgaXRlclJlc3VsdDMgPSBhd2FpdCBpdC5yZXR1cm4oJ3Jl
dHVybiB2YWx1ZScpOworICBhc3NlcnRfaXRlcl9yZXN1bHQoaXRlclJlc3VsdDMsICdyZXR1cm4g
dmFsdWUnLCB0cnVlLCAncmV0dXJuKCknKTsKK30sICduZXh0KCkgdGhhdCBzdWNjZWVkczsgbmV4
dCgpIHRoYXQgcmVwb3J0cyBhbiBlcnJvcigpOyByZXR1cm4oKScpOworCitwcm9taXNlX3Rlc3Qo
YXN5bmMgKCkgPT4geworICBsZXQgdGltZXNQdWxsZWQgPSAwOworICBjb25zdCBzID0gbmV3IFJl
YWRhYmxlU3RyZWFtKHsKKyAgICBwdWxsKGMpIHsKKyAgICAgIGlmICh0aW1lc1B1bGxlZCA9PT0g
MCkgeworICAgICAgICBjLmVucXVldWUoMCk7CisgICAgICAgICsrdGltZXNQdWxsZWQ7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBjLmVycm9yKGVycm9yMSk7CisgICAgICB9CisgICAgfQorICB9
KTsKKworICBjb25zdCBpdCA9IHNbU3ltYm9sLmFzeW5jSXRlcmF0b3JdKCk7CisKKyAgY29uc3Qg
aXRlclJlc3VsdHMgPSBhd2FpdCBQcm9taXNlLmFsbFNldHRsZWQoW2l0Lm5leHQoKSwgaXQubmV4
dCgpLCBpdC5yZXR1cm4oJ3JldHVybiB2YWx1ZScpXSk7CisKKyAgYXNzZXJ0X2VxdWFscyhpdGVy
UmVzdWx0c1swXS5zdGF0dXMsICdmdWxmaWxsZWQnLCAnMXN0IG5leHQoKSBwcm9taXNlIHN0YXR1
cycpOworICBhc3NlcnRfaXRlcl9yZXN1bHQoaXRlclJlc3VsdHNbMF0udmFsdWUsIDAsIGZhbHNl
LCAnMXN0IG5leHQoKScpOworCisgIGFzc2VydF9lcXVhbHMoaXRlclJlc3VsdHNbMV0uc3RhdHVz
LCAncmVqZWN0ZWQnLCAnMm5kIG5leHQoKSBwcm9taXNlIHN0YXR1cycpOworICBhc3NlcnRfZXF1
YWxzKGl0ZXJSZXN1bHRzWzFdLnJlYXNvbiwgZXJyb3IxLCAnMm5kIG5leHQoKSByZWplY3Rpb24g
cmVhc29uJyk7CisKKyAgYXNzZXJ0X2VxdWFscyhpdGVyUmVzdWx0c1syXS5zdGF0dXMsICdmdWxm
aWxsZWQnLCAncmV0dXJuKCkgcHJvbWlzZSBzdGF0dXMnKTsKKyAgYXNzZXJ0X2l0ZXJfcmVzdWx0
KGl0ZXJSZXN1bHRzWzJdLnZhbHVlLCAncmV0dXJuIHZhbHVlJywgdHJ1ZSwgJ3JldHVybigpJyk7
Cit9LCAnbmV4dCgpIHRoYXQgc3VjY2VlZHM7IG5leHQoKSB0aGF0IHJlcG9ydHMgYW4gZXJyb3Io
KTsgcmV0dXJuKCkgW25vIGF3YWl0aW5nXScpOworCitwcm9taXNlX3Rlc3QoYXN5bmMgKCkgPT4g
eworICBsZXQgdGltZXNQdWxsZWQgPSAwOworICBjb25zdCBzID0gbmV3IFJlYWRhYmxlU3RyZWFt
KHsKKyAgICBwdWxsKGMpIHsKKyAgICAgIGMuZW5xdWV1ZSh0aW1lc1B1bGxlZCk7CisgICAgICAr
K3RpbWVzUHVsbGVkOworICAgIH0KKyAgfSk7CisgIGNvbnN0IGl0ID0gc1tTeW1ib2wuYXN5bmNJ
dGVyYXRvcl0oKTsKKworICBjb25zdCBpdGVyUmVzdWx0MSA9IGF3YWl0IGl0Lm5leHQoKTsKKyAg
YXNzZXJ0X2l0ZXJfcmVzdWx0KGl0ZXJSZXN1bHQxLCAwLCBmYWxzZSwgJ25leHQoKScpOworCisg
IGNvbnN0IGl0ZXJSZXN1bHQyID0gYXdhaXQgaXQucmV0dXJuKCdyZXR1cm4gdmFsdWUnKTsKKyAg
YXNzZXJ0X2l0ZXJfcmVzdWx0KGl0ZXJSZXN1bHQyLCAncmV0dXJuIHZhbHVlJywgdHJ1ZSwgJ3Jl
dHVybigpJyk7CisKKyAgYXNzZXJ0X2VxdWFscyh0aW1lc1B1bGxlZCwgMik7Cit9LCAnbmV4dCgp
IHRoYXQgc3VjY2VlZHM7IHJldHVybigpJyk7CisKK3Byb21pc2VfdGVzdChhc3luYyAoKSA9PiB7
CisgIGxldCB0aW1lc1B1bGxlZCA9IDA7CisgIGNvbnN0IHMgPSBuZXcgUmVhZGFibGVTdHJlYW0o
eworICAgIHB1bGwoYykgeworICAgICAgYy5lbnF1ZXVlKHRpbWVzUHVsbGVkKTsKKyAgICAgICsr
dGltZXNQdWxsZWQ7CisgICAgfQorICB9KTsKKyAgY29uc3QgaXQgPSBzW1N5bWJvbC5hc3luY0l0
ZXJhdG9yXSgpOworCisgIGNvbnN0IGl0ZXJSZXN1bHRzID0gYXdhaXQgUHJvbWlzZS5hbGxTZXR0
bGVkKFtpdC5uZXh0KCksIGl0LnJldHVybigncmV0dXJuIHZhbHVlJyldKTsKKworICBhc3NlcnRf
ZXF1YWxzKGl0ZXJSZXN1bHRzWzBdLnN0YXR1cywgJ2Z1bGZpbGxlZCcsICduZXh0KCkgcHJvbWlz
ZSBzdGF0dXMnKTsKKyAgYXNzZXJ0X2l0ZXJfcmVzdWx0KGl0ZXJSZXN1bHRzWzBdLnZhbHVlLCAw
LCBmYWxzZSwgJ25leHQoKScpOworCisgIGFzc2VydF9lcXVhbHMoaXRlclJlc3VsdHNbMV0uc3Rh
dHVzLCAnZnVsZmlsbGVkJywgJ3JldHVybigpIHByb21pc2Ugc3RhdHVzJyk7CisgIGFzc2VydF9p
dGVyX3Jlc3VsdChpdGVyUmVzdWx0c1sxXS52YWx1ZSwgJ3JldHVybiB2YWx1ZScsIHRydWUsICdy
ZXR1cm4oKScpOworCisgIGFzc2VydF9lcXVhbHModGltZXNQdWxsZWQsIDIpOworfSwgJ25leHQo
KSB0aGF0IHN1Y2NlZWRzOyByZXR1cm4oKSBbbm8gYXdhaXRpbmddJyk7CisKK3Byb21pc2VfdGVz
dChhc3luYyAoKSA9PiB7CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKCk7CisgIGNv
bnN0IGl0ID0gcnMudmFsdWVzKCk7CisKKyAgY29uc3QgaXRlclJlc3VsdDEgPSBhd2FpdCBpdC5y
ZXR1cm4oJ3JldHVybiB2YWx1ZScpOworICBhc3NlcnRfaXRlcl9yZXN1bHQoaXRlclJlc3VsdDEs
ICdyZXR1cm4gdmFsdWUnLCB0cnVlLCAncmV0dXJuKCknKTsKKworICBjb25zdCBpdGVyUmVzdWx0
MiA9IGF3YWl0IGl0Lm5leHQoKTsKKyAgYXNzZXJ0X2l0ZXJfcmVzdWx0KGl0ZXJSZXN1bHQyLCB1
bmRlZmluZWQsIHRydWUsICduZXh0KCknKTsKK30sICdyZXR1cm4oKTsgbmV4dCgpJyk7CisKK3By
b21pc2VfdGVzdChhc3luYyAoKSA9PiB7CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFt
KCk7CisgIGNvbnN0IGl0ID0gcnMudmFsdWVzKCk7CisKKyAgY29uc3QgaXRlclJlc3VsdHMgPSBh
d2FpdCBQcm9taXNlLmFsbFNldHRsZWQoW2l0LnJldHVybigncmV0dXJuIHZhbHVlJyksIGl0Lm5l
eHQoKV0pOworCisgIGFzc2VydF9lcXVhbHMoaXRlclJlc3VsdHNbMF0uc3RhdHVzLCAnZnVsZmls
bGVkJywgJ3JldHVybigpIHByb21pc2Ugc3RhdHVzJyk7CisgIGFzc2VydF9pdGVyX3Jlc3VsdChp
dGVyUmVzdWx0c1swXS52YWx1ZSwgJ3JldHVybiB2YWx1ZScsIHRydWUsICdyZXR1cm4oKScpOwor
CisgIGFzc2VydF9lcXVhbHMoaXRlclJlc3VsdHNbMV0uc3RhdHVzLCAnZnVsZmlsbGVkJywgJ25l
eHQoKSBwcm9taXNlIHN0YXR1cycpOworICBhc3NlcnRfaXRlcl9yZXN1bHQoaXRlclJlc3VsdHNb
MV0udmFsdWUsIHVuZGVmaW5lZCwgdHJ1ZSwgJ25leHQoKScpOworfSwgJ3JldHVybigpOyBuZXh0
KCkgW25vIGF3YWl0aW5nXScpOworCitwcm9taXNlX3Rlc3QoYXN5bmMgKCkgPT4geworICBjb25z
dCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSgpOworICBjb25zdCBpdCA9IHJzLnZhbHVlcygpOwor
CisgIGNvbnN0IGl0ZXJSZXN1bHQxID0gYXdhaXQgaXQucmV0dXJuKCdyZXR1cm4gdmFsdWUgMScp
OworICBhc3NlcnRfaXRlcl9yZXN1bHQoaXRlclJlc3VsdDEsICdyZXR1cm4gdmFsdWUgMScsIHRy
dWUsICcxc3QgcmV0dXJuKCknKTsKKworICBjb25zdCBpdGVyUmVzdWx0MiA9IGF3YWl0IGl0LnJl
dHVybigncmV0dXJuIHZhbHVlIDInKTsKKyAgYXNzZXJ0X2l0ZXJfcmVzdWx0KGl0ZXJSZXN1bHQy
LCAncmV0dXJuIHZhbHVlIDInLCB0cnVlLCAnMXN0IHJldHVybigpJyk7Cit9LCAncmV0dXJuKCk7
IHJldHVybigpJyk7CisKK3Byb21pc2VfdGVzdChhc3luYyAoKSA9PiB7CisgIGNvbnN0IHJzID0g
bmV3IFJlYWRhYmxlU3RyZWFtKCk7CisgIGNvbnN0IGl0ID0gcnMudmFsdWVzKCk7CisKKyAgY29u
c3QgaXRlclJlc3VsdHMgPSBhd2FpdCBQcm9taXNlLmFsbFNldHRsZWQoW2l0LnJldHVybigncmV0
dXJuIHZhbHVlIDEnKSwgaXQucmV0dXJuKCdyZXR1cm4gdmFsdWUgMicpXSk7CisKKyAgYXNzZXJ0
X2VxdWFscyhpdGVyUmVzdWx0c1swXS5zdGF0dXMsICdmdWxmaWxsZWQnLCAnMXN0IHJldHVybigp
IHByb21pc2Ugc3RhdHVzJyk7CisgIGFzc2VydF9pdGVyX3Jlc3VsdChpdGVyUmVzdWx0c1swXS52
YWx1ZSwgJ3JldHVybiB2YWx1ZSAxJywgdHJ1ZSwgJzFzdCByZXR1cm4oKScpOworCisgIGFzc2Vy
dF9lcXVhbHMoaXRlclJlc3VsdHNbMV0uc3RhdHVzLCAnZnVsZmlsbGVkJywgJzJuZCByZXR1cm4o
KSBwcm9taXNlIHN0YXR1cycpOworICBhc3NlcnRfaXRlcl9yZXN1bHQoaXRlclJlc3VsdHNbMV0u
dmFsdWUsICdyZXR1cm4gdmFsdWUgMicsIHRydWUsICcxc3QgcmV0dXJuKCknKTsKK30sICdyZXR1
cm4oKTsgcmV0dXJuKCkgW25vIGF3YWl0aW5nXScpOworCit0ZXN0KCgpID0+IHsKKyAgY29uc3Qg
cyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgYy5lbnF1ZXVl
KDApOworICAgICAgYy5jbG9zZSgpOworICAgIH0sCisgIH0pOworICBzLnZhbHVlcygpOworICBh
c3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4gcy52YWx1ZXMoKSwgJ3ZhbHVlcygpIHNo
b3VsZCB0aHJvdycpOworfSwgJ3ZhbHVlcygpIHRocm93cyBpZiB0aGVyZVwncyBhbHJlYWR5IGEg
bG9jaycpOworCitwcm9taXNlX3Rlc3QoYXN5bmMgKCkgPT4geworICBjb25zdCBzID0gbmV3IFJl
YWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjLmVucXVldWUoMSk7CisgICAg
ICBjLmVucXVldWUoMik7CisgICAgICBjLmVucXVldWUoMyk7CisgICAgICBjLmNsb3NlKCk7Cisg
ICAgfQorICB9KTsKKworICBjb25zdCBjaHVua3MgPSBbXTsKKyAgZm9yIGF3YWl0IChjb25zdCBj
aHVuayBvZiBzKSB7CisgICAgY2h1bmtzLnB1c2goY2h1bmspOworICB9CisgIGFzc2VydF9hcnJh
eV9lcXVhbHMoY2h1bmtzLCBbMSwgMiwgM10pOworCisgIGNvbnN0IHJlYWRlciA9IHMuZ2V0UmVh
ZGVyKCk7CisgIGF3YWl0IHJlYWRlci5jbG9zZWQ7Cit9LCAnQWNxdWlyaW5nIGEgcmVhZGVyIGFm
dGVyIGV4aGF1c3RpdmVseSBhc3luYy1pdGVyYXRpbmcgYSBzdHJlYW0nKTsKKworcHJvbWlzZV90
ZXN0KGFzeW5jIHQgPT4geworICBsZXQgdGltZXNQdWxsZWQgPSAwOworICBjb25zdCBzID0gbmV3
IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBwdWxsKGMpIHsKKyAgICAgIGlmICh0aW1lc1B1bGxlZCA9
PT0gMCkgeworICAgICAgICBjLmVucXVldWUoMCk7CisgICAgICAgICsrdGltZXNQdWxsZWQ7Cisg
ICAgICB9IGVsc2UgeworICAgICAgICBjLmVycm9yKGVycm9yMSk7CisgICAgICB9CisgICAgfQor
ICB9KTsKKworICBjb25zdCBpdCA9IHNbU3ltYm9sLmFzeW5jSXRlcmF0b3JdKHsgcHJldmVudENh
bmNlbDogdHJ1ZSB9KTsKKworICBjb25zdCBpdGVyUmVzdWx0MSA9IGF3YWl0IGl0Lm5leHQoKTsK
KyAgYXNzZXJ0X2l0ZXJfcmVzdWx0KGl0ZXJSZXN1bHQxLCAwLCBmYWxzZSwgJzFzdCBuZXh0KCkn
KTsKKworICBhd2FpdCBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIGl0Lm5leHQo
KSwgJzJuZCBuZXh0KCknKTsKKworICBjb25zdCBpdGVyUmVzdWx0MiA9IGF3YWl0IGl0LnJldHVy
bigncmV0dXJuIHZhbHVlJyk7CisgIGFzc2VydF9pdGVyX3Jlc3VsdChpdGVyUmVzdWx0MiwgJ3Jl
dHVybiB2YWx1ZScsIHRydWUsICdyZXR1cm4oKScpOworCisgIC8vIGkuZS4gaXQgc2hvdWxkIG5v
dCByZWplY3Qgd2l0aCBhIGdlbmVyaWMgInRoaXMgc3RyZWFtIGlzIGxvY2tlZCIgVHlwZUVycm9y
LgorICBjb25zdCByZWFkZXIgPSBzLmdldFJlYWRlcigpOworICBhd2FpdCBwcm9taXNlX3JlamVj
dHNfZXhhY3RseSh0LCBlcnJvcjEsIHJlYWRlci5jbG9zZWQsICdjbG9zZWQgb24gdGhlIG5ldyBy
ZWFkZXIgc2hvdWxkIHJlamVjdCB3aXRoIHRoZSBlcnJvcicpOworfSwgJ0FjcXVpcmluZyBhIHJl
YWRlciBhZnRlciByZXR1cm4oKWluZyBmcm9tIGEgc3RyZWFtIHRoYXQgZXJyb3JzJyk7CisKK3By
b21pc2VfdGVzdChhc3luYyAoKSA9PiB7CisgIGNvbnN0IHMgPSBuZXcgUmVhZGFibGVTdHJlYW0o
eworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGMuZW5xdWV1ZSgxKTsKKyAgICAgIGMuZW5xdWV1ZSgy
KTsKKyAgICAgIGMuZW5xdWV1ZSgzKTsKKyAgICAgIGMuY2xvc2UoKTsKKyAgICB9LAorICB9KTsK
KworICAvLyByZWFkIHRoZSBmaXJzdCB0d28gY2h1bmtzLCB0aGVuIGNhbmNlbAorICBjb25zdCBj
aHVua3MgPSBbXTsKKyAgZm9yIGF3YWl0IChjb25zdCBjaHVuayBvZiBzKSB7CisgICAgY2h1bmtz
LnB1c2goY2h1bmspOworICAgIGlmIChjaHVuayA+PSAyKSB7CisgICAgICBicmVhazsKKyAgICB9
CisgIH0KKyAgYXNzZXJ0X2FycmF5X2VxdWFscyhjaHVua3MsIFsxLCAyXSk7CisKKyAgY29uc3Qg
cmVhZGVyID0gcy5nZXRSZWFkZXIoKTsKKyAgYXdhaXQgcmVhZGVyLmNsb3NlZDsKK30sICdBY3F1
aXJpbmcgYSByZWFkZXIgYWZ0ZXIgcGFydGlhbGx5IGFzeW5jLWl0ZXJhdGluZyBhIHN0cmVhbScp
OworCitwcm9taXNlX3Rlc3QoYXN5bmMgKCkgPT4geworICBjb25zdCBzID0gbmV3IFJlYWRhYmxl
U3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjLmVucXVldWUoMSk7CisgICAgICBjLmVu
cXVldWUoMik7CisgICAgICBjLmVucXVldWUoMyk7CisgICAgICBjLmNsb3NlKCk7CisgICAgfSwK
KyAgfSk7CisKKyAgLy8gcmVhZCB0aGUgZmlyc3QgdHdvIGNodW5rcywgdGhlbiByZWxlYXNlIGxv
Y2sKKyAgY29uc3QgY2h1bmtzID0gW107CisgIGZvciBhd2FpdCAoY29uc3QgY2h1bmsgb2Ygcy52
YWx1ZXMoe3ByZXZlbnRDYW5jZWw6IHRydWV9KSkgeworICAgIGNodW5rcy5wdXNoKGNodW5rKTsK
KyAgICBpZiAoY2h1bmsgPj0gMikgeworICAgICAgYnJlYWs7CisgICAgfQorICB9CisgIGFzc2Vy
dF9hcnJheV9lcXVhbHMoY2h1bmtzLCBbMSwgMl0pOworCisgIGNvbnN0IHJlYWRlciA9IHMuZ2V0
UmVhZGVyKCk7CisgIGNvbnN0IHJlYWRSZXN1bHQgPSBhd2FpdCByZWFkZXIucmVhZCgpOworICBh
c3NlcnRfaXRlcl9yZXN1bHQocmVhZFJlc3VsdCwgMywgZmFsc2UpOworICBhd2FpdCByZWFkZXIu
Y2xvc2VkOworfSwgJ0FjcXVpcmluZyBhIHJlYWRlciBhbmQgcmVhZGluZyB0aGUgcmVtYWluaW5n
IGNodW5rcyBhZnRlciBwYXJ0aWFsbHkgYXN5bmMtaXRlcmF0aW5nIGEgc3RyZWFtIHdpdGggcHJl
dmVudENhbmNlbCA9IHRydWUnKTsKKworZm9yIChjb25zdCBwcmV2ZW50Q2FuY2VsIG9mIFtmYWxz
ZSwgdHJ1ZV0pIHsKKyAgdGVzdCgoKSA9PiB7CisgICAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVT
dHJlYW0oKTsKKyAgICBycy52YWx1ZXMoeyBwcmV2ZW50Q2FuY2VsIH0pLnJldHVybigpOworICAg
IC8vIFRoZSB0ZXN0IHBhc3NlcyBpZiB0aGlzIGxpbmUgZG9lc24ndCB0aHJvdy4KKyAgICBycy5n
ZXRSZWFkZXIoKTsKKyAgfSwgYHJldHVybigpIHNob3VsZCB1bmxvY2sgdGhlIHN0cmVhbSBzeW5j
aHJvbm91c2x5IHdoZW4gcHJldmVudENhbmNlbCA9ICR7cHJldmVudENhbmNlbH1gKTsKK30KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2FzeW5jLWl0ZXJhdG9yLmFueS53b3JrZXItZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
L3JlYWRhYmxlLXN0cmVhbXMvYXN5bmMtaXRlcmF0b3IuYW55Lndvcmtlci1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZGU1N2VhY2VlNjQ0OTc1ODJhNTQwNWMzNGNjYmQ1ZmNkY2I1MjRlZAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2FzeW5jLWl0ZXJhdG9yLmFueS53b3JrZXItZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsNDAgQEAKKworRkFJTCBBc3luYyBpdGVyYXRvciBpbnN0YW5j
ZXMgc2hvdWxkIGhhdmUgdGhlIGNvcnJlY3QgbGlzdCBvZiBwcm9wZXJ0aWVzIHMudmFsdWVzIGlz
IG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3MudmFsdWVzKCknLCAncy52YWx1ZXMnIGlzIHVuZGVmaW5l
ZCkKK0ZBSUwgQXN5bmMtaXRlcmF0aW5nIGEgcHVzaCBzb3VyY2UgcHJvbWlzZV90ZXN0OiBVbmhh
bmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiVHlwZUVycm9yOiB1bmRlZmluZWQg
aXMgbm90IGEgZnVuY3Rpb24gKG5lYXIgJy4uLmNodW5rIG9mIHMuLi4nKSIKK0ZBSUwgQXN5bmMt
aXRlcmF0aW5nIGEgcHVsbCBzb3VyY2UgcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9u
IHdpdGggdmFsdWU6IG9iamVjdCAiVHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90IGEgZnVuY3Rp
b24gKG5lYXIgJy4uLmNodW5rIG9mIHMuLi4nKSIKK0ZBSUwgQXN5bmMtaXRlcmF0aW5nIGEgcHVz
aCBzb3VyY2Ugd2l0aCB1bmRlZmluZWQgdmFsdWVzIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJl
amVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBh
IGZ1bmN0aW9uIChuZWFyICcuLi5jaHVuayBvZiBzLi4uJykiCitGQUlMIEFzeW5jLWl0ZXJhdGlu
ZyBhIHB1bGwgc291cmNlIHdpdGggdW5kZWZpbmVkIHZhbHVlcyBwcm9taXNlX3Rlc3Q6IFVuaGFu
ZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJUeXBlRXJyb3I6IHVuZGVmaW5lZCBp
cyBub3QgYSBmdW5jdGlvbiAobmVhciAnLi4uY2h1bmsgb2Ygcy4uLicpIgorRkFJTCBBc3luYy1p
dGVyYXRpbmcgYSBwdWxsIHNvdXJjZSBtYW51YWxseSBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCBy
ZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJUeXBlRXJyb3I6IHMudmFsdWVzIGlzIG5vdCBh
IGZ1bmN0aW9uLiAoSW4gJ3MudmFsdWVzKCknLCAncy52YWx1ZXMnIGlzIHVuZGVmaW5lZCkiCitG
QUlMIEFzeW5jLWl0ZXJhdGluZyBhbiBlcnJvcmVkIHN0cmVhbSB0aHJvd3MgYXNzZXJ0X2VxdWFs
czogZXhwZWN0ZWQgKHN0cmluZykgImUiIGJ1dCBnb3QgKG9iamVjdCkgb2JqZWN0ICJUeXBlRXJy
b3I6IHVuZGVmaW5lZCBpcyBub3QgYSBmdW5jdGlvbiAobmVhciAnLi4uY2h1bmsgb2Ygcy4uLicp
IgorRkFJTCBBc3luYy1pdGVyYXRpbmcgYSBjbG9zZWQgc3RyZWFtIG5ldmVyIGV4ZWN1dGVzIHRo
ZSBsb29wIGJvZHksIGJ1dCB3b3JrcyBmaW5lIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVj
dGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhIGZ1
bmN0aW9uIChuZWFyICcuLi5jaHVuayBvZiBzLi4uJykiCitGQUlMIEFzeW5jLWl0ZXJhdGluZyBh
biBlbXB0eSBidXQgbm90IGNsb3NlZC9lcnJvcmVkIHN0cmVhbSBuZXZlciBleGVjdXRlcyB0aGUg
bG9vcCBib2R5IGFuZCBzdGFsbHMgdGhlIGFzeW5jIGZ1bmN0aW9uIHByb21pc2VfdGVzdDogVW5o
YW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVFcnJvcjogdW5kZWZpbmVk
IGlzIG5vdCBhIGZ1bmN0aW9uIChuZWFyICcuLi5jaHVuayBvZiBzLi4uJykiCitGQUlMIEFzeW5j
LWl0ZXJhdGluZyBhIHBhcnRpYWxseSBjb25zdW1lZCBzdHJlYW0gcHJvbWlzZV90ZXN0OiBVbmhh
bmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiVHlwZUVycm9yOiB1bmRlZmluZWQg
aXMgbm90IGEgZnVuY3Rpb24gKG5lYXIgJy4uLmNodW5rIG9mIHMuLi4nKSIKK0ZBSUwgQ2FuY2Vs
bGF0aW9uIGJlaGF2aW9yIHdoZW4gdGhyb3dpbmcgaW5zaWRlIGxvb3AgYm9keTsgcHJldmVudENh
bmNlbCA9IGZhbHNlIGFzc2VydF9hcnJheV9lcXVhbHM6IGNhbmNlbCgpIHNob3VsZCBiZSBjYWxs
ZWQgbGVuZ3RocyBkaWZmZXIsIGV4cGVjdGVkIGFycmF5IFsicHVsbCIsICJjYW5jZWwiLCB1bmRl
ZmluZWRdIGxlbmd0aCAzLCBnb3QgW10gbGVuZ3RoIDAKK0ZBSUwgQ2FuY2VsbGF0aW9uIGJlaGF2
aW9yIHdoZW4gdGhyb3dpbmcgaW5zaWRlIGxvb3AgYm9keTsgcHJldmVudENhbmNlbCA9IHRydWUg
YXNzZXJ0X2FycmF5X2VxdWFsczogY2FuY2VsKCkgc2hvdWxkIG5vdCBiZSBjYWxsZWQgbGVuZ3Ro
cyBkaWZmZXIsIGV4cGVjdGVkIGFycmF5IFsicHVsbCJdIGxlbmd0aCAxLCBnb3QgW10gbGVuZ3Ro
IDAKK0ZBSUwgQ2FuY2VsbGF0aW9uIGJlaGF2aW9yIHdoZW4gYnJlYWtpbmcgaW5zaWRlIGxvb3Ag
Ym9keTsgcHJldmVudENhbmNlbCA9IGZhbHNlIGFzc2VydF9hcnJheV9lcXVhbHM6IGNhbmNlbCgp
IHNob3VsZCBiZSBjYWxsZWQgbGVuZ3RocyBkaWZmZXIsIGV4cGVjdGVkIGFycmF5IFsicHVsbCIs
ICJjYW5jZWwiLCB1bmRlZmluZWRdIGxlbmd0aCAzLCBnb3QgW10gbGVuZ3RoIDAKK0ZBSUwgQ2Fu
Y2VsbGF0aW9uIGJlaGF2aW9yIHdoZW4gYnJlYWtpbmcgaW5zaWRlIGxvb3AgYm9keTsgcHJldmVu
dENhbmNlbCA9IHRydWUgYXNzZXJ0X2FycmF5X2VxdWFsczogY2FuY2VsKCkgc2hvdWxkIG5vdCBi
ZSBjYWxsZWQgbGVuZ3RocyBkaWZmZXIsIGV4cGVjdGVkIGFycmF5IFsicHVsbCJdIGxlbmd0aCAx
LCBnb3QgW10gbGVuZ3RoIDAKK0ZBSUwgQ2FuY2VsbGF0aW9uIGJlaGF2aW9yIHdoZW4gcmV0dXJu
aW5nIGluc2lkZSBsb29wIGJvZHk7IHByZXZlbnRDYW5jZWwgPSBmYWxzZSBhc3NlcnRfYXJyYXlf
ZXF1YWxzOiBjYW5jZWwoKSBzaG91bGQgYmUgY2FsbGVkIGxlbmd0aHMgZGlmZmVyLCBleHBlY3Rl
ZCBhcnJheSBbInB1bGwiLCAiY2FuY2VsIiwgdW5kZWZpbmVkXSBsZW5ndGggMywgZ290IFtdIGxl
bmd0aCAwCitGQUlMIENhbmNlbGxhdGlvbiBiZWhhdmlvciB3aGVuIHJldHVybmluZyBpbnNpZGUg
bG9vcCBib2R5OyBwcmV2ZW50Q2FuY2VsID0gdHJ1ZSBhc3NlcnRfYXJyYXlfZXF1YWxzOiBjYW5j
ZWwoKSBzaG91bGQgbm90IGJlIGNhbGxlZCBsZW5ndGhzIGRpZmZlciwgZXhwZWN0ZWQgYXJyYXkg
WyJwdWxsIl0gbGVuZ3RoIDEsIGdvdCBbXSBsZW5ndGggMAorRkFJTCBDYW5jZWxsYXRpb24gYmVo
YXZpb3Igd2hlbiBtYW51YWxseSBjYWxsaW5nIHJldHVybigpOyBwcmV2ZW50Q2FuY2VsID0gZmFs
c2UgcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAi
VHlwZUVycm9yOiBzLnZhbHVlcyBpcyBub3QgYSBmdW5jdGlvbi4gKEluICdzLnZhbHVlcyh7IHBy
ZXZlbnRDYW5jZWwgfSknLCAncy52YWx1ZXMnIGlzIHVuZGVmaW5lZCkiCitGQUlMIENhbmNlbGxh
dGlvbiBiZWhhdmlvciB3aGVuIG1hbnVhbGx5IGNhbGxpbmcgcmV0dXJuKCk7IHByZXZlbnRDYW5j
ZWwgPSB0cnVlIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBv
YmplY3QgIlR5cGVFcnJvcjogcy52YWx1ZXMgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAncy52YWx1
ZXMoeyBwcmV2ZW50Q2FuY2VsIH0pJywgJ3MudmFsdWVzJyBpcyB1bmRlZmluZWQpIgorRkFJTCBu
ZXh0KCkgcmVqZWN0cyBpZiB0aGUgc3RyZWFtIGVycm9ycyBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxl
ZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJUeXBlRXJyb3I6IHNbU3ltYm9sLmFzeW5j
SXRlcmF0b3JdIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3NbU3ltYm9sLmFzeW5jSXRlcmF0b3Jd
KCknLCAnc1tTeW1ib2wuYXN5bmNJdGVyYXRvcl0nIGlzIHVuZGVmaW5lZCkiCitGQUlMIHJldHVy
bigpIGRvZXMgbm90IHJlamVjdHMgaWYgdGhlIHN0cmVhbSBoYXMgbm90IGVycm9yZWQgeWV0IHBy
b21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVF
cnJvcjogc1tTeW1ib2wuYXN5bmNJdGVyYXRvcl0gaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnc1tT
eW1ib2wuYXN5bmNJdGVyYXRvcl0oKScsICdzW1N5bWJvbC5hc3luY0l0ZXJhdG9yXScgaXMgdW5k
ZWZpbmVkKSIKK0ZBSUwgcmV0dXJuKCkgcmVqZWN0cyBpZiB0aGUgc3RyZWFtIGhhcyBlcnJvcmVk
IHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5
cGVFcnJvcjogc1tTeW1ib2wuYXN5bmNJdGVyYXRvcl0gaXMgbm90IGEgZnVuY3Rpb24uIChJbiAn
c1tTeW1ib2wuYXN5bmNJdGVyYXRvcl0oKScsICdzW1N5bWJvbC5hc3luY0l0ZXJhdG9yXScgaXMg
dW5kZWZpbmVkKSIKK0ZBSUwgbmV4dCgpIHRoYXQgc3VjY2VlZHM7IG5leHQoKSB0aGF0IHJlcG9y
dHMgYW4gZXJyb3I7IG5leHQoKSBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0
aCB2YWx1ZTogb2JqZWN0ICJUeXBlRXJyb3I6IHNbU3ltYm9sLmFzeW5jSXRlcmF0b3JdIGlzIG5v
dCBhIGZ1bmN0aW9uLiAoSW4gJ3NbU3ltYm9sLmFzeW5jSXRlcmF0b3JdKCknLCAnc1tTeW1ib2wu
YXN5bmNJdGVyYXRvcl0nIGlzIHVuZGVmaW5lZCkiCitGQUlMIG5leHQoKSB0aGF0IHN1Y2NlZWRz
OyBuZXh0KCkgdGhhdCByZXBvcnRzIGFuIGVycm9yKCk7IG5leHQoKSBbbm8gYXdhaXRpbmddIHBy
b21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVF
cnJvcjogc1tTeW1ib2wuYXN5bmNJdGVyYXRvcl0gaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnc1tT
eW1ib2wuYXN5bmNJdGVyYXRvcl0oKScsICdzW1N5bWJvbC5hc3luY0l0ZXJhdG9yXScgaXMgdW5k
ZWZpbmVkKSIKK0ZBSUwgbmV4dCgpIHRoYXQgc3VjY2VlZHM7IG5leHQoKSB0aGF0IHJlcG9ydHMg
YW4gZXJyb3IoKTsgcmV0dXJuKCkgcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdp
dGggdmFsdWU6IG9iamVjdCAiVHlwZUVycm9yOiBzW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSBpcyBu
b3QgYSBmdW5jdGlvbi4gKEluICdzW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSgpJywgJ3NbU3ltYm9s
LmFzeW5jSXRlcmF0b3JdJyBpcyB1bmRlZmluZWQpIgorRkFJTCBuZXh0KCkgdGhhdCBzdWNjZWVk
czsgbmV4dCgpIHRoYXQgcmVwb3J0cyBhbiBlcnJvcigpOyByZXR1cm4oKSBbbm8gYXdhaXRpbmdd
IHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5
cGVFcnJvcjogc1tTeW1ib2wuYXN5bmNJdGVyYXRvcl0gaXMgbm90IGEgZnVuY3Rpb24uIChJbiAn
c1tTeW1ib2wuYXN5bmNJdGVyYXRvcl0oKScsICdzW1N5bWJvbC5hc3luY0l0ZXJhdG9yXScgaXMg
dW5kZWZpbmVkKSIKK0ZBSUwgbmV4dCgpIHRoYXQgc3VjY2VlZHM7IHJldHVybigpIHByb21pc2Vf
dGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVFcnJvcjog
c1tTeW1ib2wuYXN5bmNJdGVyYXRvcl0gaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnc1tTeW1ib2wu
YXN5bmNJdGVyYXRvcl0oKScsICdzW1N5bWJvbC5hc3luY0l0ZXJhdG9yXScgaXMgdW5kZWZpbmVk
KSIKK0ZBSUwgbmV4dCgpIHRoYXQgc3VjY2VlZHM7IHJldHVybigpIFtubyBhd2FpdGluZ10gcHJv
bWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiVHlwZUVy
cm9yOiBzW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSBpcyBub3QgYSBmdW5jdGlvbi4gKEluICdzW1N5
bWJvbC5hc3luY0l0ZXJhdG9yXSgpJywgJ3NbU3ltYm9sLmFzeW5jSXRlcmF0b3JdJyBpcyB1bmRl
ZmluZWQpIgorRkFJTCByZXR1cm4oKTsgbmV4dCgpIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJl
amVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVFcnJvcjogcnMudmFsdWVzIGlzIG5vdCBh
IGZ1bmN0aW9uLiAoSW4gJ3JzLnZhbHVlcygpJywgJ3JzLnZhbHVlcycgaXMgdW5kZWZpbmVkKSIK
K0ZBSUwgcmV0dXJuKCk7IG5leHQoKSBbbm8gYXdhaXRpbmddIHByb21pc2VfdGVzdDogVW5oYW5k
bGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVFcnJvcjogcnMudmFsdWVzIGlz
IG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3JzLnZhbHVlcygpJywgJ3JzLnZhbHVlcycgaXMgdW5kZWZp
bmVkKSIKK0ZBSUwgcmV0dXJuKCk7IHJldHVybigpIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJl
amVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVFcnJvcjogcnMudmFsdWVzIGlzIG5vdCBh
IGZ1bmN0aW9uLiAoSW4gJ3JzLnZhbHVlcygpJywgJ3JzLnZhbHVlcycgaXMgdW5kZWZpbmVkKSIK
K0ZBSUwgcmV0dXJuKCk7IHJldHVybigpIFtubyBhd2FpdGluZ10gcHJvbWlzZV90ZXN0OiBVbmhh
bmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiVHlwZUVycm9yOiBycy52YWx1ZXMg
aXMgbm90IGEgZnVuY3Rpb24uIChJbiAncnMudmFsdWVzKCknLCAncnMudmFsdWVzJyBpcyB1bmRl
ZmluZWQpIgorRkFJTCB2YWx1ZXMoKSB0aHJvd3MgaWYgdGhlcmUncyBhbHJlYWR5IGEgbG9jayBz
LnZhbHVlcyBpcyBub3QgYSBmdW5jdGlvbi4gKEluICdzLnZhbHVlcygpJywgJ3MudmFsdWVzJyBp
cyB1bmRlZmluZWQpCitGQUlMIEFjcXVpcmluZyBhIHJlYWRlciBhZnRlciBleGhhdXN0aXZlbHkg
YXN5bmMtaXRlcmF0aW5nIGEgc3RyZWFtIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlv
biB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhIGZ1bmN0
aW9uIChuZWFyICcuLi5jaHVuayBvZiBzLi4uJykiCitGQUlMIEFjcXVpcmluZyBhIHJlYWRlciBh
ZnRlciByZXR1cm4oKWluZyBmcm9tIGEgc3RyZWFtIHRoYXQgZXJyb3JzIHByb21pc2VfdGVzdDog
VW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVFcnJvcjogc1tTeW1i
b2wuYXN5bmNJdGVyYXRvcl0gaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnc1tTeW1ib2wuYXN5bmNJ
dGVyYXRvcl0oeyBwcmV2ZW50Q2FuY2VsOiB0cnVlIH0pJywgJ3NbU3ltYm9sLmFzeW5jSXRlcmF0
b3JdJyBpcyB1bmRlZmluZWQpIgorRkFJTCBBY3F1aXJpbmcgYSByZWFkZXIgYWZ0ZXIgcGFydGlh
bGx5IGFzeW5jLWl0ZXJhdGluZyBhIHN0cmVhbSBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWpl
Y3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJUeXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBub3QgYSBm
dW5jdGlvbiAobmVhciAnLi4uY2h1bmsgb2Ygcy4uLicpIgorRkFJTCBBY3F1aXJpbmcgYSByZWFk
ZXIgYW5kIHJlYWRpbmcgdGhlIHJlbWFpbmluZyBjaHVua3MgYWZ0ZXIgcGFydGlhbGx5IGFzeW5j
LWl0ZXJhdGluZyBhIHN0cmVhbSB3aXRoIHByZXZlbnRDYW5jZWwgPSB0cnVlIHByb21pc2VfdGVz
dDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVFcnJvcjogcy52
YWx1ZXMgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAncy52YWx1ZXMoe3ByZXZlbnRDYW5jZWw6IHRy
dWV9KScsICdzLnZhbHVlcycgaXMgdW5kZWZpbmVkKSIKK0ZBSUwgcmV0dXJuKCkgc2hvdWxkIHVu
bG9jayB0aGUgc3RyZWFtIHN5bmNocm9ub3VzbHkgd2hlbiBwcmV2ZW50Q2FuY2VsID0gZmFsc2Ug
cnMudmFsdWVzIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3JzLnZhbHVlcyh7IHByZXZlbnRDYW5j
ZWwgfSknLCAncnMudmFsdWVzJyBpcyB1bmRlZmluZWQpCitGQUlMIHJldHVybigpIHNob3VsZCB1
bmxvY2sgdGhlIHN0cmVhbSBzeW5jaHJvbm91c2x5IHdoZW4gcHJldmVudENhbmNlbCA9IHRydWUg
cnMudmFsdWVzIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3JzLnZhbHVlcyh7IHByZXZlbnRDYW5j
ZWwgfSknLCAncnMudmFsdWVzJyBpcyB1bmRlZmluZWQpCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJl
YW1zL2FzeW5jLWl0ZXJhdG9yLmFueS53b3JrZXIuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2FzeW5jLWl0
ZXJhdG9yLmFueS53b3JrZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMzgyOTEzNTI4ZTY5M2IzYTVkNTZj
NjYwYTQ1MDYwOTgwYjU0OGMzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvYXN5bmMt
aXRlcmF0b3IuYW55Lndvcmtlci5odG1sCkBAIC0wLDAgKzEgQEAKKzwhLS0gVGhpcyBmaWxlIGlz
IHJlcXVpcmVkIGZvciBXZWJLaXQgdGVzdCBpbmZyYXN0cnVjdHVyZSB0byBydW4gdGhlIHRlbXBs
YXRlZCB0ZXN0IC0tPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJs
ZS1zdHJlYW1zL2JhZC1zdHJhdGVnaWVzLmFueS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9i
YWQtc3RyYXRlZ2llcy5hbnktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhiOTgwZTlmODE5ZDVh
NTU5YTU4NTRlNjc3NDk3NzI1OTQzZWVkMTMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFt
cy9iYWQtc3RyYXRlZ2llcy5hbnktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOSBAQAorCitQQVNT
IFJlYWRhYmxlIHN0cmVhbTogdGhyb3dpbmcgc3RyYXRlZ3kuc2l6ZSBnZXR0ZXIgCitQQVNTIFJl
YWRhYmxlIHN0cmVhbTogc3RyYXRlZ3kuc2l6ZSBlcnJvcnMgdGhlIHN0cmVhbSBhbmQgdGhlbiB0
aHJvd3MgCitQQVNTIFJlYWRhYmxlIHN0cmVhbTogc3RyYXRlZ3kuc2l6ZSBlcnJvcnMgdGhlIHN0
cmVhbSBhbmQgdGhlbiByZXR1cm5zIEluZmluaXR5IAorUEFTUyBSZWFkYWJsZSBzdHJlYW06IHRo
cm93aW5nIHN0cmF0ZWd5LnNpemUgbWV0aG9kIAorUEFTUyBSZWFkYWJsZSBzdHJlYW06IHRocm93
aW5nIHN0cmF0ZWd5LmhpZ2hXYXRlck1hcmsgZ2V0dGVyIAorUEFTUyBSZWFkYWJsZSBzdHJlYW06
IGludmFsaWQgc3RyYXRlZ3kuaGlnaFdhdGVyTWFyayAKK1BBU1MgUmVhZGFibGUgc3RyZWFtOiBp
bnZhbGlkIHN0cmF0ZWd5LnNpemUgcmV0dXJuIHZhbHVlIAorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3Ry
ZWFtcy9iYWQtc3RyYXRlZ2llcy5hbnkuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2JhZC1zdHJhdGVnaWVz
LmFueS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzODI5MTM1MjhlNjkzYjNhNWQ1NmM2NjBhNDUwNjA5ODBi
NTQ4YzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9iYWQtc3RyYXRlZ2llcy5hbnku
aHRtbApAQCAtMCwwICsxIEBACis8IS0tIFRoaXMgZmlsZSBpcyByZXF1aXJlZCBmb3IgV2ViS2l0
IHRlc3QgaW5mcmFzdHJ1Y3R1cmUgdG8gcnVuIHRoZSB0ZW1wbGF0ZWQgdGVzdCAtLT4KXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9iYWQtc3RyYXRl
Z2llcy5hbnkuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9iYWQtc3RyYXRlZ2llcy5hbnkuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYjc5NTM2MGZiN2M3YmI5NzlhNjQ5NTg4NGFkMGUwMjE5YTFhMzE4MwotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy9yZWFkYWJsZS1zdHJlYW1zL2JhZC1zdHJhdGVnaWVzLmFueS5qcwpAQCAtMCwwICsxLDE1OSBA
QAorLy8gTUVUQTogZ2xvYmFsPXdpbmRvdyx3b3JrZXIsanNzaGVsbAorJ3VzZSBzdHJpY3QnOwor
Cit0ZXN0KCgpID0+IHsKKworICBjb25zdCB0aGVFcnJvciA9IG5ldyBFcnJvcignYSB1bmlxdWUg
c3RyaW5nJyk7CisKKyAgYXNzZXJ0X3Rocm93c19leGFjdGx5KHRoZUVycm9yLCAoKSA9PiB7Cisg
ICAgbmV3IFJlYWRhYmxlU3RyZWFtKHt9LCB7CisgICAgICBnZXQgc2l6ZSgpIHsKKyAgICAgICAg
dGhyb3cgdGhlRXJyb3I7CisgICAgICB9LAorICAgICAgaGlnaFdhdGVyTWFyazogNQorICAgIH0p
OworICB9LCAnY29uc3RydWN0aW9uIHNob3VsZCByZS10aHJvdyB0aGUgZXJyb3InKTsKKworfSwg
J1JlYWRhYmxlIHN0cmVhbTogdGhyb3dpbmcgc3RyYXRlZ3kuc2l6ZSBnZXR0ZXInKTsKKworcHJv
bWlzZV90ZXN0KHQgPT4geworCisgIGNvbnN0IGNvbnRyb2xsZXJFcnJvciA9IHsgbmFtZTogJ2Nv
bnRyb2xsZXIgZXJyb3InIH07CisgIGNvbnN0IHRocm93bkVycm9yID0geyBuYW1lOiAndGhyb3du
IGVycm9yJyB9OworCisgIGxldCBjb250cm9sbGVyOworICBjb25zdCBycyA9IG5ldyBSZWFkYWJs
ZVN0cmVhbSgKKyAgICB7CisgICAgICBzdGFydChjKSB7CisgICAgICAgIGNvbnRyb2xsZXIgPSBj
OworICAgICAgfQorICAgIH0sCisgICAgeworICAgICAgc2l6ZSgpIHsKKyAgICAgICAgY29udHJv
bGxlci5lcnJvcihjb250cm9sbGVyRXJyb3IpOworICAgICAgICB0aHJvdyB0aHJvd25FcnJvcjsK
KyAgICAgIH0sCisgICAgICBoaWdoV2F0ZXJNYXJrOiA1CisgICAgfQorICApOworCisgIGFzc2Vy
dF90aHJvd3NfZXhhY3RseSh0aHJvd25FcnJvciwgKCkgPT4gY29udHJvbGxlci5lbnF1ZXVlKCdh
JyksICdlbnF1ZXVlIHNob3VsZCByZS10aHJvdyB0aGUgZXJyb3InKTsKKworICByZXR1cm4gcHJv
bWlzZV9yZWplY3RzX2V4YWN0bHkodCwgY29udHJvbGxlckVycm9yLCBycy5nZXRSZWFkZXIoKS5j
bG9zZWQpOworCit9LCAnUmVhZGFibGUgc3RyZWFtOiBzdHJhdGVneS5zaXplIGVycm9ycyB0aGUg
c3RyZWFtIGFuZCB0aGVuIHRocm93cycpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisKKyAgY29u
c3QgdGhlRXJyb3IgPSB7IG5hbWU6ICdteSBlcnJvcicgfTsKKworICBsZXQgY29udHJvbGxlcjsK
KyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oCisgICAgeworICAgICAgc3RhcnQoYykg
eworICAgICAgICBjb250cm9sbGVyID0gYzsKKyAgICAgIH0KKyAgICB9LAorICAgIHsKKyAgICAg
IHNpemUoKSB7CisgICAgICAgIGNvbnRyb2xsZXIuZXJyb3IodGhlRXJyb3IpOworICAgICAgICBy
ZXR1cm4gSW5maW5pdHk7CisgICAgICB9LAorICAgICAgaGlnaFdhdGVyTWFyazogNQorICAgIH0K
KyAgKTsKKworICBhc3NlcnRfdGhyb3dzX2pzKFJhbmdlRXJyb3IsICgpID0+IGNvbnRyb2xsZXIu
ZW5xdWV1ZSgnYScpLCAnZW5xdWV1ZSBzaG91bGQgdGhyb3cgYSBSYW5nZUVycm9yJyk7CisKKyAg
cmV0dXJuIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIHRoZUVycm9yLCBycy5nZXRSZWFkZXIo
KS5jbG9zZWQsICdjbG9zZWQgc2hvdWxkIHJlamVjdCB3aXRoIHRoZSBlcnJvcicpOworCit9LCAn
UmVhZGFibGUgc3RyZWFtOiBzdHJhdGVneS5zaXplIGVycm9ycyB0aGUgc3RyZWFtIGFuZCB0aGVu
IHJldHVybnMgSW5maW5pdHknKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKworICBjb25zdCB0
aGVFcnJvciA9IG5ldyBFcnJvcignYSB1bmlxdWUgc3RyaW5nJyk7CisgIGNvbnN0IHJzID0gbmV3
IFJlYWRhYmxlU3RyZWFtKAorICAgIHsKKyAgICAgIHN0YXJ0KGMpIHsKKyAgICAgICAgYXNzZXJ0
X3Rocm93c19leGFjdGx5KHRoZUVycm9yLCAoKSA9PiBjLmVucXVldWUoJ2EnKSwgJ2VucXVldWUg
c2hvdWxkIHRocm93IHRoZSBlcnJvcicpOworICAgICAgfQorICAgIH0sCisgICAgeworICAgICAg
c2l6ZSgpIHsKKyAgICAgICAgdGhyb3cgdGhlRXJyb3I7CisgICAgICB9LAorICAgICAgaGlnaFdh
dGVyTWFyazogNQorICAgIH0KKyAgKTsKKworICByZXR1cm4gcnMuZ2V0UmVhZGVyKCkuY2xvc2Vk
LmNhdGNoKGUgPT4geworICAgIGFzc2VydF9lcXVhbHMoZSwgdGhlRXJyb3IsICdjbG9zZWQgc2hv
dWxkIHJlamVjdCB3aXRoIHRoZSBlcnJvcicpOworICB9KTsKKworfSwgJ1JlYWRhYmxlIHN0cmVh
bTogdGhyb3dpbmcgc3RyYXRlZ3kuc2l6ZSBtZXRob2QnKTsKKwordGVzdCgoKSA9PiB7CisKKyAg
Y29uc3QgdGhlRXJyb3IgPSBuZXcgRXJyb3IoJ2EgdW5pcXVlIHN0cmluZycpOworCisgIGFzc2Vy
dF90aHJvd3NfZXhhY3RseSh0aGVFcnJvciwgKCkgPT4geworICAgIG5ldyBSZWFkYWJsZVN0cmVh
bSh7fSwgeworICAgICAgc2l6ZSgpIHsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgICB9LAorICAg
ICAgZ2V0IGhpZ2hXYXRlck1hcmsoKSB7CisgICAgICAgIHRocm93IHRoZUVycm9yOworICAgICAg
fQorICAgIH0pOworICB9LCAnY29uc3RydWN0aW9uIHNob3VsZCByZS10aHJvdyB0aGUgZXJyb3In
KTsKKworfSwgJ1JlYWRhYmxlIHN0cmVhbTogdGhyb3dpbmcgc3RyYXRlZ3kuaGlnaFdhdGVyTWFy
ayBnZXR0ZXInKTsKKwordGVzdCgoKSA9PiB7CisKKyAgZm9yIChjb25zdCBoaWdoV2F0ZXJNYXJr
IG9mIFstMSwgLUluZmluaXR5LCBOYU4sICdmb28nLCB7fV0pIHsKKyAgICBhc3NlcnRfdGhyb3dz
X2pzKFJhbmdlRXJyb3IsICgpID0+IHsKKyAgICAgIG5ldyBSZWFkYWJsZVN0cmVhbSh7fSwgewor
ICAgICAgICBzaXplKCkgeworICAgICAgICAgIHJldHVybiAxOworICAgICAgICB9LAorICAgICAg
ICBoaWdoV2F0ZXJNYXJrCisgICAgICB9KTsKKyAgICB9LCAnY29uc3RydWN0aW9uIHNob3VsZCB0
aHJvdyBhIFJhbmdlRXJyb3IgZm9yICcgKyBoaWdoV2F0ZXJNYXJrKTsKKyAgfQorCit9LCAnUmVh
ZGFibGUgc3RyZWFtOiBpbnZhbGlkIHN0cmF0ZWd5LmhpZ2hXYXRlck1hcmsnKTsKKworcHJvbWlz
ZV90ZXN0KCgpID0+IHsKKworICBjb25zdCBwcm9taXNlcyA9IFtdOworICBmb3IgKGNvbnN0IHNp
emUgb2YgW05hTiwgLUluZmluaXR5LCBJbmZpbml0eSwgLTFdKSB7CisgICAgbGV0IHRoZUVycm9y
OworICAgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKAorICAgICAgeworICAgICAgICBz
dGFydChjKSB7CisgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGMuZW5xdWV1ZSgnaGknKTsK
KyAgICAgICAgICAgIGFzc2VydF91bnJlYWNoZWQoJ2VucXVldWUgZGlkblwndCB0aHJvdycpOwor
ICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGVy
cm9yLm5hbWUsICdSYW5nZUVycm9yJywgJ2VucXVldWUgc2hvdWxkIHRocm93IGEgUmFuZ2VFcnJv
ciBmb3IgJyArIHNpemUpOworICAgICAgICAgICAgdGhlRXJyb3IgPSBlcnJvcjsKKyAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICAgIH0sCisgICAgICB7CisgICAgICAgIHNpemUoKSB7CisgICAg
ICAgICAgcmV0dXJuIHNpemU7CisgICAgICAgIH0sCisgICAgICAgIGhpZ2hXYXRlck1hcms6IDUK
KyAgICAgIH0KKyAgICApOworCisgICAgcHJvbWlzZXMucHVzaChycy5nZXRSZWFkZXIoKS5jbG9z
ZWQuY2F0Y2goZSA9PiB7CisgICAgICBhc3NlcnRfZXF1YWxzKGUsIHRoZUVycm9yLCAnY2xvc2Vk
IHNob3VsZCByZWplY3Qgd2l0aCB0aGUgZXJyb3IgZm9yICcgKyBzaXplKTsKKyAgICB9KSk7Cisg
IH0KKworICByZXR1cm4gUHJvbWlzZS5hbGwocHJvbWlzZXMpOworCit9LCAnUmVhZGFibGUgc3Ry
ZWFtOiBpbnZhbGlkIHN0cmF0ZWd5LnNpemUgcmV0dXJuIHZhbHVlJyk7CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFi
bGUtc3RyZWFtcy9iYWQtc3RyYXRlZ2llcy5hbnkud29ya2VyLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1z
dHJlYW1zL2JhZC1zdHJhdGVnaWVzLmFueS53b3JrZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjhiOTgwZTlmODE5ZDVhNTU5YTU4NTRlNjc3NDk3NzI1OTQzZWVkMTMKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
cmVhZGFibGUtc3RyZWFtcy9iYWQtc3RyYXRlZ2llcy5hbnkud29ya2VyLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDkgQEAKKworUEFTUyBSZWFkYWJsZSBzdHJlYW06IHRocm93aW5nIHN0cmF0ZWd5
LnNpemUgZ2V0dGVyIAorUEFTUyBSZWFkYWJsZSBzdHJlYW06IHN0cmF0ZWd5LnNpemUgZXJyb3Jz
IHRoZSBzdHJlYW0gYW5kIHRoZW4gdGhyb3dzIAorUEFTUyBSZWFkYWJsZSBzdHJlYW06IHN0cmF0
ZWd5LnNpemUgZXJyb3JzIHRoZSBzdHJlYW0gYW5kIHRoZW4gcmV0dXJucyBJbmZpbml0eSAKK1BB
U1MgUmVhZGFibGUgc3RyZWFtOiB0aHJvd2luZyBzdHJhdGVneS5zaXplIG1ldGhvZCAKK1BBU1Mg
UmVhZGFibGUgc3RyZWFtOiB0aHJvd2luZyBzdHJhdGVneS5oaWdoV2F0ZXJNYXJrIGdldHRlciAK
K1BBU1MgUmVhZGFibGUgc3RyZWFtOiBpbnZhbGlkIHN0cmF0ZWd5LmhpZ2hXYXRlck1hcmsgCitQ
QVNTIFJlYWRhYmxlIHN0cmVhbTogaW52YWxpZCBzdHJhdGVneS5zaXplIHJldHVybiB2YWx1ZSAK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvYmFkLXN0cmF0ZWdpZXMuYW55Lndvcmtlci5odG1s
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3Jl
YWRhYmxlLXN0cmVhbXMvYmFkLXN0cmF0ZWdpZXMuYW55Lndvcmtlci5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjIzODI5MTM1MjhlNjkzYjNhNWQ1NmM2NjBhNDUwNjA5ODBiNTQ4YzMKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
cmVhZGFibGUtc3RyZWFtcy9iYWQtc3RyYXRlZ2llcy5hbnkud29ya2VyLmh0bWwKQEAgLTAsMCAr
MSBAQAorPCEtLSBUaGlzIGZpbGUgaXMgcmVxdWlyZWQgZm9yIFdlYktpdCB0ZXN0IGluZnJhc3Ry
dWN0dXJlIHRvIHJ1biB0aGUgdGVtcGxhdGVkIHRlc3QgLS0+ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvYmFkLXN0cmF0ZWdpZXMuZGVkaWNhdGVk
d29ya2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2JhZC1zdHJhdGVnaWVzLmRlZGljYXRl
ZHdvcmtlci1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhiOTgw
ZTlmODE5ZDVhNTU5YTU4NTRlNjc3NDk3NzI1OTQzZWVkMTMuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvYmFkLXN0cmF0ZWdpZXMuZGVk
aWNhdGVkd29ya2VyLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDkgKzAsMCBAQAot
Ci1QQVNTIFJlYWRhYmxlIHN0cmVhbTogdGhyb3dpbmcgc3RyYXRlZ3kuc2l6ZSBnZXR0ZXIgCi1Q
QVNTIFJlYWRhYmxlIHN0cmVhbTogc3RyYXRlZ3kuc2l6ZSBlcnJvcnMgdGhlIHN0cmVhbSBhbmQg
dGhlbiB0aHJvd3MgCi1QQVNTIFJlYWRhYmxlIHN0cmVhbTogc3RyYXRlZ3kuc2l6ZSBlcnJvcnMg
dGhlIHN0cmVhbSBhbmQgdGhlbiByZXR1cm5zIEluZmluaXR5IAotUEFTUyBSZWFkYWJsZSBzdHJl
YW06IHRocm93aW5nIHN0cmF0ZWd5LnNpemUgbWV0aG9kIAotUEFTUyBSZWFkYWJsZSBzdHJlYW06
IHRocm93aW5nIHN0cmF0ZWd5LmhpZ2hXYXRlck1hcmsgZ2V0dGVyIAotUEFTUyBSZWFkYWJsZSBz
dHJlYW06IGludmFsaWQgc3RyYXRlZ3kuaGlnaFdhdGVyTWFyayAKLVBBU1MgUmVhZGFibGUgc3Ry
ZWFtOiBpbnZhbGlkIHN0cmF0ZWd5LnNpemUgcmV0dXJuIHZhbHVlIAotCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFi
bGUtc3RyZWFtcy9iYWQtc3RyYXRlZ2llcy5kZWRpY2F0ZWR3b3JrZXIuaHRtbCBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJl
YW1zL2JhZC1zdHJhdGVnaWVzLmRlZGljYXRlZHdvcmtlci5odG1sCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBkNTM3NjdmM2Q2Y2RlOGI4ODRmYTdiMWJmYTg2NjUzMDE2ZjJmYmNmLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1z
L2JhZC1zdHJhdGVnaWVzLmRlZGljYXRlZHdvcmtlci5odG1sCisrKyAvZGV2L251bGwKQEAgLTEs
MTEgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08dGl0
bGU+YmFkLXN0cmF0ZWdpZXMuanMgZGVkaWNhdGVkIHdvcmtlciB3cmFwcGVyIGZpbGU8L3RpdGxl
PgotCi08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08
c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci0K
LTxzY3JpcHQ+Ci0ndXNlIHN0cmljdCc7Ci1mZXRjaF90ZXN0c19mcm9tX3dvcmtlcihuZXcgV29y
a2VyKCdiYWQtc3RyYXRlZ2llcy5qcycpKTsKLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0
cmVhbXMvYmFkLXN0cmF0ZWdpZXMuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2JhZC1zdHJhdGVnaWVzLmh0
bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk0Y2ZiODNiYmM4ZmQwYTc1OTVmMTM1
ZTI1MTkyMGY4NTcyOTk5ZjkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJl
YW1zL3JlYWRhYmxlLXN0cmVhbXMvYmFkLXN0cmF0ZWdpZXMuaHRtbAorKysgL2Rldi9udWxsCkBA
IC0xLDEwICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgot
PHRpdGxlPmJhZC1zdHJhdGVnaWVzLmpzIGJyb3dzZXIgY29udGV4dCB3cmFwcGVyIGZpbGU8L3Rp
dGxlPgotCi08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+
Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+
Ci0KLQotCi08c2NyaXB0IHNyYz0iYmFkLXN0cmF0ZWdpZXMuanMiPjwvc2NyaXB0PgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
L3JlYWRhYmxlLXN0cmVhbXMvYmFkLXN0cmF0ZWdpZXMuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9iYWQtc3Ry
YXRlZ2llcy5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWE1MmQ2MGQ4NDJhNmQ0
ZGViMzFiYzhjM2ViNjYzMjA5YjFlMGUyYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9iYWQtc3RyYXRlZ2llcy5qcworKysgL2Rldi9u
dWxsCkBAIC0xLDE2NCArMCwwIEBACi0ndXNlIHN0cmljdCc7Ci0KLWlmIChzZWxmLmltcG9ydFNj
cmlwdHMpIHsKLSAgc2VsZi5pbXBvcnRTY3JpcHRzKCcvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpz
Jyk7Ci19Ci0KLXRlc3QoKCkgPT4gewotCi0gIGNvbnN0IHRoZUVycm9yID0gbmV3IEVycm9yKCdh
IHVuaXF1ZSBzdHJpbmcnKTsKLQotICBhc3NlcnRfdGhyb3dzKHRoZUVycm9yLCAoKSA9PiB7Ci0g
ICAgbmV3IFJlYWRhYmxlU3RyZWFtKHt9LCB7Ci0gICAgICBnZXQgc2l6ZSgpIHsKLSAgICAgICAg
dGhyb3cgdGhlRXJyb3I7Ci0gICAgICB9LAotICAgICAgaGlnaFdhdGVyTWFyazogNQotICAgIH0p
OwotICB9LCAnY29uc3RydWN0aW9uIHNob3VsZCByZS10aHJvdyB0aGUgZXJyb3InKTsKLQotfSwg
J1JlYWRhYmxlIHN0cmVhbTogdGhyb3dpbmcgc3RyYXRlZ3kuc2l6ZSBnZXR0ZXInKTsKLQotcHJv
bWlzZV90ZXN0KHQgPT4gewotCi0gIGNvbnN0IGNvbnRyb2xsZXJFcnJvciA9IHsgbmFtZTogJ2Nv
bnRyb2xsZXIgZXJyb3InIH07Ci0gIGNvbnN0IHRocm93bkVycm9yID0geyBuYW1lOiAndGhyb3du
IGVycm9yJyB9OwotCi0gIGxldCBjb250cm9sbGVyOwotICBjb25zdCBycyA9IG5ldyBSZWFkYWJs
ZVN0cmVhbSgKLSAgICB7Ci0gICAgICBzdGFydChjKSB7Ci0gICAgICAgIGNvbnRyb2xsZXIgPSBj
OwotICAgICAgfQotICAgIH0sCi0gICAgewotICAgICAgc2l6ZSgpIHsKLSAgICAgICAgY29udHJv
bGxlci5lcnJvcihjb250cm9sbGVyRXJyb3IpOwotICAgICAgICB0aHJvdyB0aHJvd25FcnJvcjsK
LSAgICAgIH0sCi0gICAgICBoaWdoV2F0ZXJNYXJrOiA1Ci0gICAgfQotICApOwotCi0gIGFzc2Vy
dF90aHJvd3ModGhyb3duRXJyb3IsICgpID0+IGNvbnRyb2xsZXIuZW5xdWV1ZSgnYScpLCAnZW5x
dWV1ZSBzaG91bGQgcmUtdGhyb3cgdGhlIGVycm9yJyk7Ci0KLSAgcmV0dXJuIHByb21pc2VfcmVq
ZWN0cyh0LCBjb250cm9sbGVyRXJyb3IsIHJzLmdldFJlYWRlcigpLmNsb3NlZCk7Ci0KLX0sICdS
ZWFkYWJsZSBzdHJlYW06IHN0cmF0ZWd5LnNpemUgZXJyb3JzIHRoZSBzdHJlYW0gYW5kIHRoZW4g
dGhyb3dzJyk7Ci0KLXByb21pc2VfdGVzdCh0ID0+IHsKLQotICBjb25zdCB0aGVFcnJvciA9IHsg
bmFtZTogJ215IGVycm9yJyB9OwotCi0gIGxldCBjb250cm9sbGVyOwotICBjb25zdCBycyA9IG5l
dyBSZWFkYWJsZVN0cmVhbSgKLSAgICB7Ci0gICAgICBzdGFydChjKSB7Ci0gICAgICAgIGNvbnRy
b2xsZXIgPSBjOwotICAgICAgfQotICAgIH0sCi0gICAgewotICAgICAgc2l6ZSgpIHsKLSAgICAg
ICAgY29udHJvbGxlci5lcnJvcih0aGVFcnJvcik7Ci0gICAgICAgIHJldHVybiBJbmZpbml0eTsK
LSAgICAgIH0sCi0gICAgICBoaWdoV2F0ZXJNYXJrOiA1Ci0gICAgfQotICApOwotCi0gIGFzc2Vy
dF90aHJvd3MobmV3IFJhbmdlRXJyb3IoKSwgKCkgPT4gY29udHJvbGxlci5lbnF1ZXVlKCdhJyks
ICdlbnF1ZXVlIHNob3VsZCB0aHJvdyBhIFJhbmdlRXJyb3InKTsKLQotICByZXR1cm4gcHJvbWlz
ZV9yZWplY3RzKHQsIHRoZUVycm9yLCBycy5nZXRSZWFkZXIoKS5jbG9zZWQsICdjbG9zZWQgc2hv
dWxkIHJlamVjdCB3aXRoIHRoZSBlcnJvcicpOwotCi19LCAnUmVhZGFibGUgc3RyZWFtOiBzdHJh
dGVneS5zaXplIGVycm9ycyB0aGUgc3RyZWFtIGFuZCB0aGVuIHJldHVybnMgSW5maW5pdHknKTsK
LQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLQotICBjb25zdCB0aGVFcnJvciA9IG5ldyBFcnJvcign
YSB1bmlxdWUgc3RyaW5nJyk7Ci0gIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKAotICAg
IHsKLSAgICAgIHN0YXJ0KGMpIHsKLSAgICAgICAgYXNzZXJ0X3Rocm93cyh0aGVFcnJvciwgKCkg
PT4gYy5lbnF1ZXVlKCdhJyksICdlbnF1ZXVlIHNob3VsZCB0aHJvdyB0aGUgZXJyb3InKTsKLSAg
ICAgIH0KLSAgICB9LAotICAgIHsKLSAgICAgIHNpemUoKSB7Ci0gICAgICAgIHRocm93IHRoZUVy
cm9yOwotICAgICAgfSwKLSAgICAgIGhpZ2hXYXRlck1hcms6IDUKLSAgICB9Ci0gICk7Ci0KLSAg
cmV0dXJuIHJzLmdldFJlYWRlcigpLmNsb3NlZC5jYXRjaChlID0+IHsKLSAgICBhc3NlcnRfZXF1
YWxzKGUsIHRoZUVycm9yLCAnY2xvc2VkIHNob3VsZCByZWplY3Qgd2l0aCB0aGUgZXJyb3InKTsK
LSAgfSk7Ci0KLX0sICdSZWFkYWJsZSBzdHJlYW06IHRocm93aW5nIHN0cmF0ZWd5LnNpemUgbWV0
aG9kJyk7Ci0KLXRlc3QoKCkgPT4gewotCi0gIGNvbnN0IHRoZUVycm9yID0gbmV3IEVycm9yKCdh
IHVuaXF1ZSBzdHJpbmcnKTsKLQotICBhc3NlcnRfdGhyb3dzKHRoZUVycm9yLCAoKSA9PiB7Ci0g
ICAgbmV3IFJlYWRhYmxlU3RyZWFtKHt9LCB7Ci0gICAgICBzaXplKCkgewotICAgICAgICByZXR1
cm4gMTsKLSAgICAgIH0sCi0gICAgICBnZXQgaGlnaFdhdGVyTWFyaygpIHsKLSAgICAgICAgdGhy
b3cgdGhlRXJyb3I7Ci0gICAgICB9Ci0gICAgfSk7Ci0gIH0sICdjb25zdHJ1Y3Rpb24gc2hvdWxk
IHJlLXRocm93IHRoZSBlcnJvcicpOwotCi19LCAnUmVhZGFibGUgc3RyZWFtOiB0aHJvd2luZyBz
dHJhdGVneS5oaWdoV2F0ZXJNYXJrIGdldHRlcicpOwotCi10ZXN0KCgpID0+IHsKLQotICBmb3Ig
KGNvbnN0IGhpZ2hXYXRlck1hcmsgb2YgWy0xLCAtSW5maW5pdHksIE5hTiwgJ2ZvbycsIHt9XSkg
ewotICAgIGFzc2VydF90aHJvd3MobmV3IFJhbmdlRXJyb3IoKSwgKCkgPT4gewotICAgICAgbmV3
IFJlYWRhYmxlU3RyZWFtKHt9LCB7Ci0gICAgICAgIHNpemUoKSB7Ci0gICAgICAgICAgcmV0dXJu
IDE7Ci0gICAgICAgIH0sCi0gICAgICAgIGhpZ2hXYXRlck1hcmsKLSAgICAgIH0pOwotICAgIH0s
ICdjb25zdHJ1Y3Rpb24gc2hvdWxkIHRocm93IGEgUmFuZ2VFcnJvciBmb3IgJyArIGhpZ2hXYXRl
ck1hcmspOwotICB9Ci0KLX0sICdSZWFkYWJsZSBzdHJlYW06IGludmFsaWQgc3RyYXRlZ3kuaGln
aFdhdGVyTWFyaycpOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotCi0gIGNvbnN0IHByb21pc2Vz
ID0gW107Ci0gIGZvciAoY29uc3Qgc2l6ZSBvZiBbTmFOLCAtSW5maW5pdHksIEluZmluaXR5LCAt
MV0pIHsKLSAgICBsZXQgdGhlRXJyb3I7Ci0gICAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJl
YW0oCi0gICAgICB7Ci0gICAgICAgIHN0YXJ0KGMpIHsKLSAgICAgICAgICB0cnkgewotICAgICAg
ICAgICAgYy5lbnF1ZXVlKCdoaScpOwotICAgICAgICAgICAgYXNzZXJ0X3VucmVhY2hlZCgnZW5x
dWV1ZSBkaWRuXCd0IHRocm93Jyk7Ci0gICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHsKLSAgICAg
ICAgICAgIGFzc2VydF9lcXVhbHMoZXJyb3IubmFtZSwgJ1JhbmdlRXJyb3InLCAnZW5xdWV1ZSBz
aG91bGQgdGhyb3cgYSBSYW5nZUVycm9yIGZvciAnICsgc2l6ZSk7Ci0gICAgICAgICAgICB0aGVF
cnJvciA9IGVycm9yOwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgfSwKLSAgICAgIHsK
LSAgICAgICAgc2l6ZSgpIHsKLSAgICAgICAgICByZXR1cm4gc2l6ZTsKLSAgICAgICAgfSwKLSAg
ICAgICAgaGlnaFdhdGVyTWFyazogNQotICAgICAgfQotICAgICk7Ci0KLSAgICBwcm9taXNlcy5w
dXNoKHJzLmdldFJlYWRlcigpLmNsb3NlZC5jYXRjaChlID0+IHsKLSAgICAgIGFzc2VydF9lcXVh
bHMoZSwgdGhlRXJyb3IsICdjbG9zZWQgc2hvdWxkIHJlamVjdCB3aXRoIHRoZSBlcnJvciBmb3Ig
JyArIHNpemUpOwotICAgIH0pKTsKLSAgfQotCi0gIHJldHVybiBQcm9taXNlLmFsbChwcm9taXNl
cyk7Ci0KLX0sICdSZWFkYWJsZSBzdHJlYW06IGludmFsaWQgc3RyYXRlZ3kuc2l6ZSByZXR1cm4g
dmFsdWUnKTsKLQotZG9uZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvYmFkLXN0cmF0ZWdp
ZXMuc2VydmljZXdvcmtlci5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9iYWQtc3Ry
YXRlZ2llcy5zZXJ2aWNld29ya2VyLmh0dHBzLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggYjAwYjJiMTc4ZDgxY2NlMDNlMzk5YzIxNTkyZGY2NGVjNzg5NGJjMy4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFt
cy9iYWQtc3RyYXRlZ2llcy5zZXJ2aWNld29ya2VyLmh0dHBzLWV4cGVjdGVkLnR4dAorKysgL2Rl
di9udWxsCkBAIC0xLDEwICswLDAgQEAKLQotUEFTUyBTZXJ2aWNlIHdvcmtlciB0ZXN0IHNldHVw
IAotUEFTUyBSZWFkYWJsZSBzdHJlYW06IHRocm93aW5nIHN0cmF0ZWd5LnNpemUgZ2V0dGVyIAot
UEFTUyBSZWFkYWJsZSBzdHJlYW06IHN0cmF0ZWd5LnNpemUgZXJyb3JzIHRoZSBzdHJlYW0gYW5k
IHRoZW4gdGhyb3dzIAotUEFTUyBSZWFkYWJsZSBzdHJlYW06IHN0cmF0ZWd5LnNpemUgZXJyb3Jz
IHRoZSBzdHJlYW0gYW5kIHRoZW4gcmV0dXJucyBJbmZpbml0eSAKLVBBU1MgUmVhZGFibGUgc3Ry
ZWFtOiB0aHJvd2luZyBzdHJhdGVneS5zaXplIG1ldGhvZCAKLVBBU1MgUmVhZGFibGUgc3RyZWFt
OiB0aHJvd2luZyBzdHJhdGVneS5oaWdoV2F0ZXJNYXJrIGdldHRlciAKLVBBU1MgUmVhZGFibGUg
c3RyZWFtOiBpbnZhbGlkIHN0cmF0ZWd5LmhpZ2hXYXRlck1hcmsgCi1QQVNTIFJlYWRhYmxlIHN0
cmVhbTogaW52YWxpZCBzdHJhdGVneS5zaXplIHJldHVybiB2YWx1ZSAKLQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRh
YmxlLXN0cmVhbXMvYmFkLXN0cmF0ZWdpZXMuc2VydmljZXdvcmtlci5odHRwcy5odG1sIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxl
LXN0cmVhbXMvYmFkLXN0cmF0ZWdpZXMuc2VydmljZXdvcmtlci5odHRwcy5odG1sCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YWEzYTRhY2Q0Nzk3MjBjNWNhZTU3MzlkMjNkMjcyYTk1
Nzg1MGQwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJs
ZS1zdHJlYW1zL2JhZC1zdHJhdGVnaWVzLnNlcnZpY2V3b3JrZXIuaHR0cHMuaHRtbAorKysgL2Rl
di9udWxsCkBAIC0xLDEyICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0i
dXRmLTgiPgotPHRpdGxlPmJhZC1zdHJhdGVnaWVzLmpzIHNlcnZpY2Ugd29ya2VyIHdyYXBwZXIg
ZmlsZTwvdGl0bGU+Ci0KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48
L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48
L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL3Jl
c291cmNlcy90ZXN0LWhlbHBlcnMuc3ViLmpzIj48L3NjcmlwdD4KLQotPHNjcmlwdD4KLSd1c2Ug
c3RyaWN0JzsKLXNlcnZpY2Vfd29ya2VyX3Rlc3QoJ2JhZC1zdHJhdGVnaWVzLmpzJywgJ1NlcnZp
Y2Ugd29ya2VyIHRlc3Qgc2V0dXAnKTsKLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVh
bXMvYmFkLXN0cmF0ZWdpZXMuc2hhcmVkd29ya2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1z
L2JhZC1zdHJhdGVnaWVzLnNoYXJlZHdvcmtlci1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDA5ZDVkMjUwOWQ3ODQ3ZThjZDZmZTY2MDZhYTYwY2RkMzNhYTQ3NGUu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVh
bXMvYmFkLXN0cmF0ZWdpZXMuc2hhcmVkd29ya2VyLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxs
CkBAIC0xLDUgKzAsMCBAQAotQ09OU09MRSBNRVNTQUdFOiBSZWZlcmVuY2VFcnJvcjogQ2FuJ3Qg
ZmluZCB2YXJpYWJsZTogU2hhcmVkV29ya2VyCi0KLUhhcm5lc3MgRXJyb3IgKEZBSUwpLCBtZXNz
YWdlID0gUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IFNoYXJlZFdvcmtlcgot
Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2JhZC1zdHJhdGVnaWVzLnNoYXJlZHdvcmtlci5o
dG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
L3JlYWRhYmxlLXN0cmVhbXMvYmFkLXN0cmF0ZWdpZXMuc2hhcmVkd29ya2VyLmh0bWwKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc4Njk0Nzc2ZTNlZTVmOWUyZTcyMjY3MzRmYmM0OWJl
NzAwZWIyMDIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRh
YmxlLXN0cmVhbXMvYmFkLXN0cmF0ZWdpZXMuc2hhcmVkd29ya2VyLmh0bWwKKysrIC9kZXYvbnVs
bApAQCAtMSwxMSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04
Ij4KLTx0aXRsZT5iYWQtc3RyYXRlZ2llcy5qcyBzaGFyZWQgd29ya2VyIHdyYXBwZXIgZmlsZTwv
dGl0bGU+Ci0KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3Njcmlw
dD4KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3Njcmlw
dD4KLQotPHNjcmlwdD4KLSd1c2Ugc3RyaWN0JzsKLWZldGNoX3Rlc3RzX2Zyb21fd29ya2VyKG5l
dyBTaGFyZWRXb3JrZXIoJ2JhZC1zdHJhdGVnaWVzLmpzJykpOwotPC9zY3JpcHQ+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
cmVhZGFibGUtc3RyZWFtcy9iYWQtdW5kZXJseWluZy1zb3VyY2VzLmFueS1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVh
ZGFibGUtc3RyZWFtcy9iYWQtdW5kZXJseWluZy1zb3VyY2VzLmFueS1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZmZhYWE4ZjRlZGIxNjcyMTQwMGE3OTkzYTlhOWQ5MDI1YmMwNTBlYwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2JhZC11bmRlcmx5aW5nLXNvdXJjZXMuYW55LWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDI0IEBACisKK1BBU1MgVW5kZXJseWluZyBzb3VyY2Ugc3RhcnQ6
IHRocm93aW5nIGdldHRlciAKK1BBU1MgVW5kZXJseWluZyBzb3VyY2Ugc3RhcnQ6IHRocm93aW5n
IG1ldGhvZCAKK1BBU1MgVW5kZXJseWluZyBzb3VyY2U6IHRocm93aW5nIHB1bGwgZ2V0dGVyIChp
bml0aWFsIHB1bGwpIAorUEFTUyBVbmRlcmx5aW5nIHNvdXJjZTogdGhyb3dpbmcgcHVsbCBtZXRo
b2QgKGluaXRpYWwgcHVsbCkgCitQQVNTIFVuZGVybHlpbmcgc291cmNlIHB1bGw6IHRocm93aW5n
IGdldHRlciAoc2Vjb25kIHB1bGwgZG9lcyBub3QgcmVzdWx0IGluIGEgc2Vjb25kIGdldCkgCitQ
QVNTIFVuZGVybHlpbmcgc291cmNlIHB1bGw6IHRocm93aW5nIG1ldGhvZCAoc2Vjb25kIHB1bGwp
IAorUEFTUyBVbmRlcmx5aW5nIHNvdXJjZSBjYW5jZWw6IHRocm93aW5nIGdldHRlciAKK1BBU1Mg
VW5kZXJseWluZyBzb3VyY2UgY2FuY2VsOiB0aHJvd2luZyBtZXRob2QgCitQQVNTIFVuZGVybHlp
bmcgc291cmNlOiBjYWxsaW5nIGVucXVldWUgb24gYW4gZW1wdHkgY2FuY2VsZWQgc3RyZWFtIHNo
b3VsZCB0aHJvdyAKK1BBU1MgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgZW5xdWV1ZSBvbiBh
IG5vbi1lbXB0eSBjYW5jZWxlZCBzdHJlYW0gc2hvdWxkIHRocm93IAorUEFTUyBVbmRlcmx5aW5n
IHNvdXJjZTogY2FsbGluZyBlbnF1ZXVlIG9uIGEgY2xvc2VkIHN0cmVhbSBzaG91bGQgdGhyb3cg
CitQQVNTIFVuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGVucXVldWUgb24gYW4gZXJyb3JlZCBz
dHJlYW0gc2hvdWxkIHRocm93IAorUEFTUyBVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBjbG9z
ZSB0d2ljZSBvbiBhbiBlbXB0eSBzdHJlYW0gc2hvdWxkIHRocm93IHRoZSBzZWNvbmQgdGltZSAK
K1BBU1MgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgY2xvc2UgdHdpY2Ugb24gYSBub24tZW1w
dHkgc3RyZWFtIHNob3VsZCB0aHJvdyB0aGUgc2Vjb25kIHRpbWUgCitQQVNTIFVuZGVybHlpbmcg
c291cmNlOiBjYWxsaW5nIGNsb3NlIG9uIGFuIGVtcHR5IGNhbmNlbGVkIHN0cmVhbSBzaG91bGQg
dGhyb3cgCitQQVNTIFVuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGNsb3NlIG9uIGEgbm9uLWVt
cHR5IGNhbmNlbGVkIHN0cmVhbSBzaG91bGQgdGhyb3cgCitQQVNTIFVuZGVybHlpbmcgc291cmNl
OiBjYWxsaW5nIGNsb3NlIGFmdGVyIGVycm9yIHNob3VsZCB0aHJvdyAKK1BBU1MgVW5kZXJseWlu
ZyBzb3VyY2U6IGNhbGxpbmcgZXJyb3IgdHdpY2Ugc2hvdWxkIG5vdCB0aHJvdyAKK1BBU1MgVW5k
ZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgZXJyb3IgYWZ0ZXIgY2xvc2Ugc2hvdWxkIG5vdCB0aHJv
dyAKK1BBU1MgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgZXJyb3IgYW5kIHJldHVybmluZyBh
IHJlamVjdGVkIHByb21pc2UgZnJvbSBzdGFydCBzaG91bGQgY2F1c2UgdGhlIHN0cmVhbSB0byBl
cnJvciB3aXRoIHRoZSBmaXJzdCBlcnJvciAKK1BBU1MgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxp
bmcgZXJyb3IgYW5kIHJldHVybmluZyBhIHJlamVjdGVkIHByb21pc2UgZnJvbSBwdWxsIHNob3Vs
ZCBjYXVzZSB0aGUgc3RyZWFtIHRvIGVycm9yIHdpdGggdGhlIGZpcnN0IGVycm9yIAorUEFTUyBy
ZWFkIHNob3VsZCBub3QgZXJyb3IgaWYgaXQgZGVxdWV1ZXMgYW5kIHB1bGwoKSB0aHJvd3MgCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2JhZC11bmRlcmx5aW5nLXNvdXJjZXMuYW55Lmh0bWwg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVh
ZGFibGUtc3RyZWFtcy9iYWQtdW5kZXJseWluZy1zb3VyY2VzLmFueS5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjIzODI5MTM1MjhlNjkzYjNhNWQ1NmM2NjBhNDUwNjA5ODBiNTQ4YzMKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
cmVhZGFibGUtc3RyZWFtcy9iYWQtdW5kZXJseWluZy1zb3VyY2VzLmFueS5odG1sCkBAIC0wLDAg
KzEgQEAKKzwhLS0gVGhpcyBmaWxlIGlzIHJlcXVpcmVkIGZvciBXZWJLaXQgdGVzdCBpbmZyYXN0
cnVjdHVyZSB0byBydW4gdGhlIHRlbXBsYXRlZCB0ZXN0IC0tPgpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2JhZC11bmRlcmx5aW5nLXNvdXJjZXMu
YW55LmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJl
YW1zL3JlYWRhYmxlLXN0cmVhbXMvYmFkLXVuZGVybHlpbmctc291cmNlcy5hbnkuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmY1OTE5N2E0OWIxOGJkY2MwNDc4MzRjYjFiMmM0NWJmNzQzNzkwYQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2JhZC11bmRlcmx5aW5nLXNvdXJjZXMuYW55LmpzCkBAIC0w
LDAgKzEsNDAwIEBACisvLyBNRVRBOiBnbG9iYWw9d2luZG93LHdvcmtlcixqc3NoZWxsCisndXNl
IHN0cmljdCc7CisKKwordGVzdCgoKSA9PiB7CisKKyAgY29uc3QgdGhlRXJyb3IgPSBuZXcgRXJy
b3IoJ2EgdW5pcXVlIHN0cmluZycpOworCisgIGFzc2VydF90aHJvd3NfZXhhY3RseSh0aGVFcnJv
ciwgKCkgPT4geworICAgIG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgICBnZXQgc3RhcnQoKSB7
CisgICAgICAgIHRocm93IHRoZUVycm9yOworICAgICAgfQorICAgIH0pOworICB9LCAnY29uc3Ry
dWN0aW5nIHRoZSBzdHJlYW0gc2hvdWxkIHJlLXRocm93IHRoZSBlcnJvcicpOworCit9LCAnVW5k
ZXJseWluZyBzb3VyY2Ugc3RhcnQ6IHRocm93aW5nIGdldHRlcicpOworCisKK3Rlc3QoKCkgPT4g
eworCisgIGNvbnN0IHRoZUVycm9yID0gbmV3IEVycm9yKCdhIHVuaXF1ZSBzdHJpbmcnKTsKKwor
ICBhc3NlcnRfdGhyb3dzX2V4YWN0bHkodGhlRXJyb3IsICgpID0+IHsKKyAgICBuZXcgUmVhZGFi
bGVTdHJlYW0oeworICAgICAgc3RhcnQoKSB7CisgICAgICAgIHRocm93IHRoZUVycm9yOworICAg
ICAgfQorICAgIH0pOworICB9LCAnY29uc3RydWN0aW5nIHRoZSBzdHJlYW0gc2hvdWxkIHJlLXRo
cm93IHRoZSBlcnJvcicpOworCit9LCAnVW5kZXJseWluZyBzb3VyY2Ugc3RhcnQ6IHRocm93aW5n
IG1ldGhvZCcpOworCisKK3Rlc3QoKCkgPT4geworCisgIGNvbnN0IHRoZUVycm9yID0gbmV3IEVy
cm9yKCdhIHVuaXF1ZSBzdHJpbmcnKTsKKyAgYXNzZXJ0X3Rocm93c19leGFjdGx5KHRoZUVycm9y
LCAoKSA9PiBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIGdldCBwdWxsKCkgeworICAgICAgdGhy
b3cgdGhlRXJyb3I7CisgICAgfQorICB9KSwgJ2NvbnN0cnVjdG9yIHNob3VsZCB0aHJvdycpOwor
Cit9LCAnVW5kZXJseWluZyBzb3VyY2U6IHRocm93aW5nIHB1bGwgZ2V0dGVyIChpbml0aWFsIHB1
bGwpJyk7CisKKworcHJvbWlzZV90ZXN0KHQgPT4geworCisgIGNvbnN0IHRoZUVycm9yID0gbmV3
IEVycm9yKCdhIHVuaXF1ZSBzdHJpbmcnKTsKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJl
YW0oeworICAgIHB1bGwoKSB7CisgICAgICB0aHJvdyB0aGVFcnJvcjsKKyAgICB9CisgIH0pOwor
CisgIHJldHVybiBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCB0aGVFcnJvciwgcnMuZ2V0UmVh
ZGVyKCkuY2xvc2VkKTsKKworfSwgJ1VuZGVybHlpbmcgc291cmNlOiB0aHJvd2luZyBwdWxsIG1l
dGhvZCAoaW5pdGlhbCBwdWxsKScpOworCisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKworICBjb25z
dCB0aGVFcnJvciA9IG5ldyBFcnJvcignYSB1bmlxdWUgc3RyaW5nJyk7CisKKyAgbGV0IGNvdW50
ZXIgPSAwOworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgZ2V0IHB1bGwo
KSB7CisgICAgICArK2NvdW50ZXI7CisgICAgICBpZiAoY291bnRlciA9PT0gMSkgeworICAgICAg
ICByZXR1cm4gYyA9PiBjLmVucXVldWUoJ2EnKTsKKyAgICAgIH0KKworICAgICAgdGhyb3cgdGhl
RXJyb3I7CisgICAgfQorICB9KTsKKyAgY29uc3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7CisK
KyAgcmV0dXJuIFByb21pc2UuYWxsKFsKKyAgICByZWFkZXIucmVhZCgpLnRoZW4ociA9PiB7Cisg
ICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyLCB7IHZhbHVlOiAnYScsIGRvbmU6IGZhbHNlIH0s
ICd0aGUgZmlyc3QgY2h1bmsgcmVhZCBzaG91bGQgYmUgY29ycmVjdCcpOworICAgIH0pLAorICAg
IHJlYWRlci5yZWFkKCkudGhlbihyID0+IHsKKyAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHIs
IHsgdmFsdWU6ICdhJywgZG9uZTogZmFsc2UgfSwgJ3RoZSBzZWNvbmQgY2h1bmsgcmVhZCBzaG91
bGQgYmUgY29ycmVjdCcpOworICAgICAgYXNzZXJ0X2VxdWFscyhjb3VudGVyLCAxLCAnY291bnRl
ciBzaG91bGQgYmUgMScpOworICAgIH0pCisgIF0pOworCit9LCAnVW5kZXJseWluZyBzb3VyY2Ug
cHVsbDogdGhyb3dpbmcgZ2V0dGVyIChzZWNvbmQgcHVsbCBkb2VzIG5vdCByZXN1bHQgaW4gYSBz
ZWNvbmQgZ2V0KScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisKKyAgY29uc3QgdGhlRXJyb3Ig
PSBuZXcgRXJyb3IoJ2EgdW5pcXVlIHN0cmluZycpOworCisgIGxldCBjb3VudGVyID0gMDsKKyAg
Y29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHB1bGwoYykgeworICAgICAgKytj
b3VudGVyOworICAgICAgaWYgKGNvdW50ZXIgPT09IDEpIHsKKyAgICAgICAgYy5lbnF1ZXVlKCdh
Jyk7CisgICAgICAgIHJldHVybjsKKyAgICAgIH0KKworICAgICAgdGhyb3cgdGhlRXJyb3I7Cisg
ICAgfQorICB9KTsKKyAgY29uc3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7CisKKyAgcmV0dXJu
IFByb21pc2UuYWxsKFsKKyAgICByZWFkZXIucmVhZCgpLnRoZW4ociA9PiB7CisgICAgICBhc3Nl
cnRfb2JqZWN0X2VxdWFscyhyLCB7IHZhbHVlOiAnYScsIGRvbmU6IGZhbHNlIH0sICd0aGUgY2h1
bmsgcmVhZCBzaG91bGQgYmUgY29ycmVjdCcpOworICAgIH0pLAorICAgIHByb21pc2VfcmVqZWN0
c19leGFjdGx5KHQsIHRoZUVycm9yLCByZWFkZXIuY2xvc2VkKQorICBdKTsKKworfSwgJ1VuZGVy
bHlpbmcgc291cmNlIHB1bGw6IHRocm93aW5nIG1ldGhvZCAoc2Vjb25kIHB1bGwpJyk7CisKK3Rl
c3QoKCkgPT4geworCisgIGNvbnN0IHRoZUVycm9yID0gbmV3IEVycm9yKCdhIHVuaXF1ZSBzdHJp
bmcnKTsKKyAgYXNzZXJ0X3Rocm93c19leGFjdGx5KHRoZUVycm9yLCAoKSA9PiBuZXcgUmVhZGFi
bGVTdHJlYW0oeworICAgIGdldCBjYW5jZWwoKSB7CisgICAgICB0aHJvdyB0aGVFcnJvcjsKKyAg
ICB9CisgIH0pLCAnY29uc3RydWN0b3Igc2hvdWxkIHRocm93Jyk7CisKK30sICdVbmRlcmx5aW5n
IHNvdXJjZSBjYW5jZWw6IHRocm93aW5nIGdldHRlcicpOworCitwcm9taXNlX3Rlc3QodCA9PiB7
CisKKyAgY29uc3QgdGhlRXJyb3IgPSBuZXcgRXJyb3IoJ2EgdW5pcXVlIHN0cmluZycpOworICBj
b25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgY2FuY2VsKCkgeworICAgICAgdGhy
b3cgdGhlRXJyb3I7CisgICAgfQorICB9KTsKKworICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2V4
YWN0bHkodCwgdGhlRXJyb3IsIHJzLmNhbmNlbCgpKTsKKworfSwgJ1VuZGVybHlpbmcgc291cmNl
IGNhbmNlbDogdGhyb3dpbmcgbWV0aG9kJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisKKyAg
bGV0IGNvbnRyb2xsZXI7CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBz
dGFydChjKSB7CisgICAgICBjb250cm9sbGVyID0gYzsKKyAgICB9CisgIH0pOworCisgIHJzLmNh
bmNlbCgpOworICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4gY29udHJvbGxlci5l
bnF1ZXVlKCdhJyksICdDYWxsaW5nIGVucXVldWUgYWZ0ZXIgY2FuY2VsaW5nIHNob3VsZCB0aHJv
dycpOworCisgIHJldHVybiBycy5nZXRSZWFkZXIoKS5jbG9zZWQ7CisKK30sICdVbmRlcmx5aW5n
IHNvdXJjZTogY2FsbGluZyBlbnF1ZXVlIG9uIGFuIGVtcHR5IGNhbmNlbGVkIHN0cmVhbSBzaG91
bGQgdGhyb3cnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKworICBsZXQgY29udHJvbGxlcjsK
KyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAg
IGMuZW5xdWV1ZSgnYScpOworICAgICAgYy5lbnF1ZXVlKCdiJyk7CisgICAgICBjb250cm9sbGVy
ID0gYzsKKyAgICB9CisgIH0pOworCisgIHJzLmNhbmNlbCgpOworICBhc3NlcnRfdGhyb3dzX2pz
KFR5cGVFcnJvciwgKCkgPT4gY29udHJvbGxlci5lbnF1ZXVlKCdjJyksICdDYWxsaW5nIGVucXVl
dWUgYWZ0ZXIgY2FuY2VsaW5nIHNob3VsZCB0aHJvdycpOworCisgIHJldHVybiBycy5nZXRSZWFk
ZXIoKS5jbG9zZWQ7CisKK30sICdVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBlbnF1ZXVlIG9u
IGEgbm9uLWVtcHR5IGNhbmNlbGVkIHN0cmVhbSBzaG91bGQgdGhyb3cnKTsKKworcHJvbWlzZV90
ZXN0KCgpID0+IHsKKworICByZXR1cm4gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChj
KSB7CisgICAgICBjLmNsb3NlKCk7CisgICAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwg
KCkgPT4gYy5lbnF1ZXVlKCdhJyksICdjYWxsIHRvIGVucXVldWUgc2hvdWxkIHRocm93IGEgVHlw
ZUVycm9yJyk7CisgICAgfQorICB9KS5nZXRSZWFkZXIoKS5jbG9zZWQ7CisKK30sICdVbmRlcmx5
aW5nIHNvdXJjZTogY2FsbGluZyBlbnF1ZXVlIG9uIGEgY2xvc2VkIHN0cmVhbSBzaG91bGQgdGhy
b3cnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworCisgIGNvbnN0IHRoZUVycm9yID0gbmV3IEVy
cm9yKCdib28nKTsKKyAgY29uc3QgY2xvc2VkID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBz
dGFydChjKSB7CisgICAgICBjLmVycm9yKHRoZUVycm9yKTsKKyAgICAgIGFzc2VydF90aHJvd3Nf
anMoVHlwZUVycm9yLCAoKSA9PiBjLmVucXVldWUoJ2EnKSwgJ2NhbGwgdG8gZW5xdWV1ZSBzaG91
bGQgdGhyb3cgdGhlIGVycm9yJyk7CisgICAgfQorICB9KS5nZXRSZWFkZXIoKS5jbG9zZWQ7CisK
KyAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIHRoZUVycm9yLCBjbG9zZWQpOwor
Cit9LCAnVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgZW5xdWV1ZSBvbiBhbiBlcnJvcmVkIHN0
cmVhbSBzaG91bGQgdGhyb3cnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKworICByZXR1cm4g
bmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjLmNsb3NlKCk7Cisg
ICAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4gYy5jbG9zZSgpLCAnc2Vjb25k
IGNhbGwgdG8gY2xvc2Ugc2hvdWxkIHRocm93IGEgVHlwZUVycm9yJyk7CisgICAgfQorICB9KS5n
ZXRSZWFkZXIoKS5jbG9zZWQ7CisKK30sICdVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBjbG9z
ZSB0d2ljZSBvbiBhbiBlbXB0eSBzdHJlYW0gc2hvdWxkIHRocm93IHRoZSBzZWNvbmQgdGltZScp
OworCitwcm9taXNlX3Rlc3QoKCkgPT4geworCisgIGxldCBzdGFydENhbGxlZCA9IGZhbHNlOwor
ICBsZXQgcmVhZENhbGxlZCA9IGZhbHNlOworICBjb25zdCByZWFkZXIgPSBuZXcgUmVhZGFibGVT
dHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGMuZW5xdWV1ZSgnYScpOworICAgICAgYy5j
bG9zZSgpOworICAgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IGMuY2xvc2Uo
KSwgJ3NlY29uZCBjYWxsIHRvIGNsb3NlIHNob3VsZCB0aHJvdyBhIFR5cGVFcnJvcicpOworICAg
ICAgc3RhcnRDYWxsZWQgPSB0cnVlOworICAgIH0KKyAgfSkuZ2V0UmVhZGVyKCk7CisKKyAgcmV0
dXJuIFByb21pc2UuYWxsKFsKKyAgICByZWFkZXIucmVhZCgpLnRoZW4ociA9PiB7CisgICAgICBh
c3NlcnRfb2JqZWN0X2VxdWFscyhyLCB7IHZhbHVlOiAnYScsIGRvbmU6IGZhbHNlIH0sICdyZWFk
KCkgc2hvdWxkIHJlYWQgdGhlIGVucXVldWVkIGNodW5rJyk7CisgICAgICByZWFkQ2FsbGVkID0g
dHJ1ZTsKKyAgICB9KSwKKyAgICByZWFkZXIuY2xvc2VkLnRoZW4oKCkgPT4geworICAgICAgYXNz
ZXJ0X3RydWUoc3RhcnRDYWxsZWQpOworICAgICAgYXNzZXJ0X3RydWUocmVhZENhbGxlZCk7Cisg
ICAgfSkKKyAgXSk7CisKK30sICdVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBjbG9zZSB0d2lj
ZSBvbiBhIG5vbi1lbXB0eSBzdHJlYW0gc2hvdWxkIHRocm93IHRoZSBzZWNvbmQgdGltZScpOwor
Citwcm9taXNlX3Rlc3QoKCkgPT4geworCisgIGxldCBjb250cm9sbGVyOworICBsZXQgc3RhcnRD
YWxsZWQgPSBmYWxzZTsKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0
YXJ0KGMpIHsKKyAgICAgIGNvbnRyb2xsZXIgPSBjOworICAgICAgc3RhcnRDYWxsZWQgPSB0cnVl
OworICAgIH0KKyAgfSk7CisKKyAgcnMuY2FuY2VsKCk7CisgIGFzc2VydF90aHJvd3NfanMoVHlw
ZUVycm9yLCAoKSA9PiBjb250cm9sbGVyLmNsb3NlKCksICdDYWxsaW5nIGNsb3NlIGFmdGVyIGNh
bmNlbGluZyBzaG91bGQgdGhyb3cnKTsKKworICByZXR1cm4gcnMuZ2V0UmVhZGVyKCkuY2xvc2Vk
LnRoZW4oKCkgPT4geworICAgIGFzc2VydF90cnVlKHN0YXJ0Q2FsbGVkKTsKKyAgfSk7CisKK30s
ICdVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBjbG9zZSBvbiBhbiBlbXB0eSBjYW5jZWxlZCBz
dHJlYW0gc2hvdWxkIHRocm93Jyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisKKyAgbGV0IGNv
bnRyb2xsZXI7CisgIGxldCBzdGFydENhbGxlZCA9IGZhbHNlOworICBjb25zdCBycyA9IG5ldyBS
ZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgY29udHJvbGxlciA9IGM7Cisg
ICAgICBjLmVucXVldWUoJ2EnKTsKKyAgICAgIHN0YXJ0Q2FsbGVkID0gdHJ1ZTsKKyAgICB9Cisg
IH0pOworCisgIHJzLmNhbmNlbCgpOworICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkg
PT4gY29udHJvbGxlci5jbG9zZSgpLCAnQ2FsbGluZyBjbG9zZSBhZnRlciBjYW5jZWxpbmcgc2hv
dWxkIHRocm93Jyk7CisKKyAgcmV0dXJuIHJzLmdldFJlYWRlcigpLmNsb3NlZC50aGVuKCgpID0+
IHsKKyAgICBhc3NlcnRfdHJ1ZShzdGFydENhbGxlZCk7CisgIH0pOworCit9LCAnVW5kZXJseWlu
ZyBzb3VyY2U6IGNhbGxpbmcgY2xvc2Ugb24gYSBub24tZW1wdHkgY2FuY2VsZWQgc3RyZWFtIHNo
b3VsZCB0aHJvdycpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworCisgIGNvbnN0IHRoZUVycm9y
ID0gbmV3IEVycm9yKCdib28nKTsKKyAgbGV0IHN0YXJ0Q2FsbGVkID0gZmFsc2U7CisKKyAgY29u
c3QgY2xvc2VkID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBj
LmVycm9yKHRoZUVycm9yKTsKKyAgICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9
PiBjLmNsb3NlKCksICdjYWxsIHRvIGNsb3NlIHNob3VsZCB0aHJvdyBhIFR5cGVFcnJvcicpOwor
ICAgICAgc3RhcnRDYWxsZWQgPSB0cnVlOworICAgIH0KKyAgfSkuZ2V0UmVhZGVyKCkuY2xvc2Vk
OworCisgIHJldHVybiBjbG9zZWQuY2F0Y2goZSA9PiB7CisgICAgYXNzZXJ0X3RydWUoc3RhcnRD
YWxsZWQpOworICAgIGFzc2VydF9lcXVhbHMoZSwgdGhlRXJyb3IsICdjbG9zZWQgc2hvdWxkIHJl
amVjdCB3aXRoIHRoZSBlcnJvcicpOworICB9KTsKKworfSwgJ1VuZGVybHlpbmcgc291cmNlOiBj
YWxsaW5nIGNsb3NlIGFmdGVyIGVycm9yIHNob3VsZCB0aHJvdycpOworCitwcm9taXNlX3Rlc3Qo
KCkgPT4geworCisgIGNvbnN0IHRoZUVycm9yID0gbmV3IEVycm9yKCdib28nKTsKKyAgbGV0IHN0
YXJ0Q2FsbGVkID0gZmFsc2U7CisKKyAgY29uc3QgY2xvc2VkID0gbmV3IFJlYWRhYmxlU3RyZWFt
KHsKKyAgICBzdGFydChjKSB7CisgICAgICBjLmVycm9yKHRoZUVycm9yKTsKKyAgICAgIGMuZXJy
b3IoKTsKKyAgICAgIHN0YXJ0Q2FsbGVkID0gdHJ1ZTsKKyAgICB9CisgIH0pLmdldFJlYWRlcigp
LmNsb3NlZDsKKworICByZXR1cm4gY2xvc2VkLmNhdGNoKGUgPT4geworICAgIGFzc2VydF90cnVl
KHN0YXJ0Q2FsbGVkKTsKKyAgICBhc3NlcnRfZXF1YWxzKGUsIHRoZUVycm9yLCAnY2xvc2VkIHNo
b3VsZCByZWplY3Qgd2l0aCB0aGUgZXJyb3InKTsKKyAgfSk7CisKK30sICdVbmRlcmx5aW5nIHNv
dXJjZTogY2FsbGluZyBlcnJvciB0d2ljZSBzaG91bGQgbm90IHRocm93Jyk7CisKK3Byb21pc2Vf
dGVzdCgoKSA9PiB7CisKKyAgbGV0IHN0YXJ0Q2FsbGVkID0gZmFsc2U7CisKKyAgY29uc3QgY2xv
c2VkID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjLmNsb3Nl
KCk7CisgICAgICBjLmVycm9yKCk7CisgICAgICBzdGFydENhbGxlZCA9IHRydWU7CisgICAgfQor
ICB9KS5nZXRSZWFkZXIoKS5jbG9zZWQ7CisKKyAgcmV0dXJuIGNsb3NlZC50aGVuKCgpID0+IGFz
c2VydF90cnVlKHN0YXJ0Q2FsbGVkKSk7CisKK30sICdVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGlu
ZyBlcnJvciBhZnRlciBjbG9zZSBzaG91bGQgbm90IHRocm93Jyk7CisKK3Byb21pc2VfdGVzdCgo
KSA9PiB7CisKKyAgbGV0IHN0YXJ0Q2FsbGVkID0gZmFsc2U7CisgIGNvbnN0IGZpcnN0RXJyb3Ig
PSBuZXcgRXJyb3IoJzEnKTsKKyAgY29uc3Qgc2Vjb25kRXJyb3IgPSBuZXcgRXJyb3IoJzInKTsK
KworICBjb25zdCBjbG9zZWQgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsK
KyAgICAgIGMuZXJyb3IoZmlyc3RFcnJvcik7CisgICAgICBzdGFydENhbGxlZCA9IHRydWU7Cisg
ICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3Qoc2Vjb25kRXJyb3IpOworICAgIH0KKyAgfSkuZ2V0
UmVhZGVyKCkuY2xvc2VkOworCisgIHJldHVybiBjbG9zZWQuY2F0Y2goZSA9PiB7CisgICAgYXNz
ZXJ0X3RydWUoc3RhcnRDYWxsZWQpOworICAgIGFzc2VydF9lcXVhbHMoZSwgZmlyc3RFcnJvciwg
J2Nsb3NlZCBzaG91bGQgcmVqZWN0IHdpdGggdGhlIGZpcnN0IGVycm9yJyk7CisgIH0pOworCit9
LCAnVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgZXJyb3IgYW5kIHJldHVybmluZyBhIHJlamVj
dGVkIHByb21pc2UgZnJvbSBzdGFydCBzaG91bGQgY2F1c2UgdGhlIHN0cmVhbSB0byBlcnJvciAn
ICsKKyAgICd3aXRoIHRoZSBmaXJzdCBlcnJvcicpOworCitwcm9taXNlX3Rlc3QoKCkgPT4gewor
CisgIGxldCBzdGFydENhbGxlZCA9IGZhbHNlOworICBjb25zdCBmaXJzdEVycm9yID0gbmV3IEVy
cm9yKCcxJyk7CisgIGNvbnN0IHNlY29uZEVycm9yID0gbmV3IEVycm9yKCcyJyk7CisKKyAgY29u
c3QgY2xvc2VkID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBwdWxsKGMpIHsKKyAgICAgIGMu
ZXJyb3IoZmlyc3RFcnJvcik7CisgICAgICBzdGFydENhbGxlZCA9IHRydWU7CisgICAgICByZXR1
cm4gUHJvbWlzZS5yZWplY3Qoc2Vjb25kRXJyb3IpOworICAgIH0KKyAgfSkuZ2V0UmVhZGVyKCku
Y2xvc2VkOworCisgIHJldHVybiBjbG9zZWQuY2F0Y2goZSA9PiB7CisgICAgYXNzZXJ0X3RydWUo
c3RhcnRDYWxsZWQpOworICAgIGFzc2VydF9lcXVhbHMoZSwgZmlyc3RFcnJvciwgJ2Nsb3NlZCBz
aG91bGQgcmVqZWN0IHdpdGggdGhlIGZpcnN0IGVycm9yJyk7CisgIH0pOworCit9LCAnVW5kZXJs
eWluZyBzb3VyY2U6IGNhbGxpbmcgZXJyb3IgYW5kIHJldHVybmluZyBhIHJlamVjdGVkIHByb21p
c2UgZnJvbSBwdWxsIHNob3VsZCBjYXVzZSB0aGUgc3RyZWFtIHRvIGVycm9yICcgKworICAgJ3dp
dGggdGhlIGZpcnN0IGVycm9yJyk7CisKK2NvbnN0IGVycm9yMSA9IHsgbmFtZTogJ2Vycm9yMScg
fTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworCisgIGxldCBwdWxsU2hvdWxkVGhyb3cgPSBmYWxz
ZTsKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHB1bGwoY29udHJvbGxl
cikgeworICAgICAgaWYgKHB1bGxTaG91bGRUaHJvdykgeworICAgICAgICB0aHJvdyBlcnJvcjE7
CisgICAgICB9CisgICAgICBjb250cm9sbGVyLmVucXVldWUoMCk7CisgICAgfQorICB9LCBuZXcg
Q291bnRRdWV1aW5nU3RyYXRlZ3koe2hpZ2hXYXRlck1hcms6IDF9KSk7CisgIGNvbnN0IHJlYWRl
ciA9IHJzLmdldFJlYWRlcigpOworICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9
PiB7CisgICAgcHVsbFNob3VsZFRocm93ID0gdHJ1ZTsKKyAgICByZXR1cm4gUHJvbWlzZS5hbGwo
WworICAgICAgcmVhZGVyLnJlYWQoKSwKKyAgICAgIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQs
IGVycm9yMSwgcmVhZGVyLmNsb3NlZCwgJy5jbG9zZWQgcHJvbWlzZSBzaG91bGQgcmVqZWN0JykK
KyAgICBdKTsKKyAgfSk7CisKK30sICdyZWFkIHNob3VsZCBub3QgZXJyb3IgaWYgaXQgZGVxdWV1
ZXMgYW5kIHB1bGwoKSB0aHJvd3MnKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2JhZC11bmRl
cmx5aW5nLXNvdXJjZXMuYW55Lndvcmtlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9iYWQt
dW5kZXJseWluZy1zb3VyY2VzLmFueS53b3JrZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZm
YWFhOGY0ZWRiMTY3MjE0MDBhNzk5M2E5YTlkOTAyNWJjMDUwZWMKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVh
ZGFibGUtc3RyZWFtcy9iYWQtdW5kZXJseWluZy1zb3VyY2VzLmFueS53b3JrZXItZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMjQgQEAKKworUEFTUyBVbmRlcmx5aW5nIHNvdXJjZSBzdGFydDogdGhy
b3dpbmcgZ2V0dGVyIAorUEFTUyBVbmRlcmx5aW5nIHNvdXJjZSBzdGFydDogdGhyb3dpbmcgbWV0
aG9kIAorUEFTUyBVbmRlcmx5aW5nIHNvdXJjZTogdGhyb3dpbmcgcHVsbCBnZXR0ZXIgKGluaXRp
YWwgcHVsbCkgCitQQVNTIFVuZGVybHlpbmcgc291cmNlOiB0aHJvd2luZyBwdWxsIG1ldGhvZCAo
aW5pdGlhbCBwdWxsKSAKK1BBU1MgVW5kZXJseWluZyBzb3VyY2UgcHVsbDogdGhyb3dpbmcgZ2V0
dGVyIChzZWNvbmQgcHVsbCBkb2VzIG5vdCByZXN1bHQgaW4gYSBzZWNvbmQgZ2V0KSAKK1BBU1Mg
VW5kZXJseWluZyBzb3VyY2UgcHVsbDogdGhyb3dpbmcgbWV0aG9kIChzZWNvbmQgcHVsbCkgCitQ
QVNTIFVuZGVybHlpbmcgc291cmNlIGNhbmNlbDogdGhyb3dpbmcgZ2V0dGVyIAorUEFTUyBVbmRl
cmx5aW5nIHNvdXJjZSBjYW5jZWw6IHRocm93aW5nIG1ldGhvZCAKK1BBU1MgVW5kZXJseWluZyBz
b3VyY2U6IGNhbGxpbmcgZW5xdWV1ZSBvbiBhbiBlbXB0eSBjYW5jZWxlZCBzdHJlYW0gc2hvdWxk
IHRocm93IAorUEFTUyBVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBlbnF1ZXVlIG9uIGEgbm9u
LWVtcHR5IGNhbmNlbGVkIHN0cmVhbSBzaG91bGQgdGhyb3cgCitQQVNTIFVuZGVybHlpbmcgc291
cmNlOiBjYWxsaW5nIGVucXVldWUgb24gYSBjbG9zZWQgc3RyZWFtIHNob3VsZCB0aHJvdyAKK1BB
U1MgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgZW5xdWV1ZSBvbiBhbiBlcnJvcmVkIHN0cmVh
bSBzaG91bGQgdGhyb3cgCitQQVNTIFVuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGNsb3NlIHR3
aWNlIG9uIGFuIGVtcHR5IHN0cmVhbSBzaG91bGQgdGhyb3cgdGhlIHNlY29uZCB0aW1lIAorUEFT
UyBVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBjbG9zZSB0d2ljZSBvbiBhIG5vbi1lbXB0eSBz
dHJlYW0gc2hvdWxkIHRocm93IHRoZSBzZWNvbmQgdGltZSAKK1BBU1MgVW5kZXJseWluZyBzb3Vy
Y2U6IGNhbGxpbmcgY2xvc2Ugb24gYW4gZW1wdHkgY2FuY2VsZWQgc3RyZWFtIHNob3VsZCB0aHJv
dyAKK1BBU1MgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgY2xvc2Ugb24gYSBub24tZW1wdHkg
Y2FuY2VsZWQgc3RyZWFtIHNob3VsZCB0aHJvdyAKK1BBU1MgVW5kZXJseWluZyBzb3VyY2U6IGNh
bGxpbmcgY2xvc2UgYWZ0ZXIgZXJyb3Igc2hvdWxkIHRocm93IAorUEFTUyBVbmRlcmx5aW5nIHNv
dXJjZTogY2FsbGluZyBlcnJvciB0d2ljZSBzaG91bGQgbm90IHRocm93IAorUEFTUyBVbmRlcmx5
aW5nIHNvdXJjZTogY2FsbGluZyBlcnJvciBhZnRlciBjbG9zZSBzaG91bGQgbm90IHRocm93IAor
UEFTUyBVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBlcnJvciBhbmQgcmV0dXJuaW5nIGEgcmVq
ZWN0ZWQgcHJvbWlzZSBmcm9tIHN0YXJ0IHNob3VsZCBjYXVzZSB0aGUgc3RyZWFtIHRvIGVycm9y
IHdpdGggdGhlIGZpcnN0IGVycm9yIAorUEFTUyBVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBl
cnJvciBhbmQgcmV0dXJuaW5nIGEgcmVqZWN0ZWQgcHJvbWlzZSBmcm9tIHB1bGwgc2hvdWxkIGNh
dXNlIHRoZSBzdHJlYW0gdG8gZXJyb3Igd2l0aCB0aGUgZmlyc3QgZXJyb3IgCitQQVNTIHJlYWQg
c2hvdWxkIG5vdCBlcnJvciBpZiBpdCBkZXF1ZXVlcyBhbmQgcHVsbCgpIHRocm93cyAKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJl
YW1zL3JlYWRhYmxlLXN0cmVhbXMvYmFkLXVuZGVybHlpbmctc291cmNlcy5hbnkud29ya2VyLmh0
bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
cmVhZGFibGUtc3RyZWFtcy9iYWQtdW5kZXJseWluZy1zb3VyY2VzLmFueS53b3JrZXIuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4yMzgyOTEzNTI4ZTY5M2IzYTVkNTZjNjYwYTQ1MDYwOTgwYjU0OGMzCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvYmFkLXVuZGVybHlpbmctc291cmNlcy5hbnkud29y
a2VyLmh0bWwKQEAgLTAsMCArMSBAQAorPCEtLSBUaGlzIGZpbGUgaXMgcmVxdWlyZWQgZm9yIFdl
YktpdCB0ZXN0IGluZnJhc3RydWN0dXJlIHRvIHJ1biB0aGUgdGVtcGxhdGVkIHRlc3QgLS0+Clwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvYmFkLXVu
ZGVybHlpbmctc291cmNlcy5kZWRpY2F0ZWR3b3JrZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVh
bXMvYmFkLXVuZGVybHlpbmctc291cmNlcy5kZWRpY2F0ZWR3b3JrZXItZXhwZWN0ZWQudHh0CmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZmFhYThmNGVkYjE2NzIxNDAwYTc5OTNhOWE5
ZDkwMjViYzA1MGVjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9y
ZWFkYWJsZS1zdHJlYW1zL2JhZC11bmRlcmx5aW5nLXNvdXJjZXMuZGVkaWNhdGVkd29ya2VyLWV4
cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLQotUEFTUyBVbmRlcmx5
aW5nIHNvdXJjZSBzdGFydDogdGhyb3dpbmcgZ2V0dGVyIAotUEFTUyBVbmRlcmx5aW5nIHNvdXJj
ZSBzdGFydDogdGhyb3dpbmcgbWV0aG9kIAotUEFTUyBVbmRlcmx5aW5nIHNvdXJjZTogdGhyb3dp
bmcgcHVsbCBnZXR0ZXIgKGluaXRpYWwgcHVsbCkgCi1QQVNTIFVuZGVybHlpbmcgc291cmNlOiB0
aHJvd2luZyBwdWxsIG1ldGhvZCAoaW5pdGlhbCBwdWxsKSAKLVBBU1MgVW5kZXJseWluZyBzb3Vy
Y2UgcHVsbDogdGhyb3dpbmcgZ2V0dGVyIChzZWNvbmQgcHVsbCBkb2VzIG5vdCByZXN1bHQgaW4g
YSBzZWNvbmQgZ2V0KSAKLVBBU1MgVW5kZXJseWluZyBzb3VyY2UgcHVsbDogdGhyb3dpbmcgbWV0
aG9kIChzZWNvbmQgcHVsbCkgCi1QQVNTIFVuZGVybHlpbmcgc291cmNlIGNhbmNlbDogdGhyb3dp
bmcgZ2V0dGVyIAotUEFTUyBVbmRlcmx5aW5nIHNvdXJjZSBjYW5jZWw6IHRocm93aW5nIG1ldGhv
ZCAKLVBBU1MgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgZW5xdWV1ZSBvbiBhbiBlbXB0eSBj
YW5jZWxlZCBzdHJlYW0gc2hvdWxkIHRocm93IAotUEFTUyBVbmRlcmx5aW5nIHNvdXJjZTogY2Fs
bGluZyBlbnF1ZXVlIG9uIGEgbm9uLWVtcHR5IGNhbmNlbGVkIHN0cmVhbSBzaG91bGQgdGhyb3cg
Ci1QQVNTIFVuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGVucXVldWUgb24gYSBjbG9zZWQgc3Ry
ZWFtIHNob3VsZCB0aHJvdyAKLVBBU1MgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgZW5xdWV1
ZSBvbiBhbiBlcnJvcmVkIHN0cmVhbSBzaG91bGQgdGhyb3cgCi1QQVNTIFVuZGVybHlpbmcgc291
cmNlOiBjYWxsaW5nIGNsb3NlIHR3aWNlIG9uIGFuIGVtcHR5IHN0cmVhbSBzaG91bGQgdGhyb3cg
dGhlIHNlY29uZCB0aW1lIAotUEFTUyBVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBjbG9zZSB0
d2ljZSBvbiBhIG5vbi1lbXB0eSBzdHJlYW0gc2hvdWxkIHRocm93IHRoZSBzZWNvbmQgdGltZSAK
LVBBU1MgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgY2xvc2Ugb24gYW4gZW1wdHkgY2FuY2Vs
ZWQgc3RyZWFtIHNob3VsZCB0aHJvdyAKLVBBU1MgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcg
Y2xvc2Ugb24gYSBub24tZW1wdHkgY2FuY2VsZWQgc3RyZWFtIHNob3VsZCB0aHJvdyAKLVBBU1Mg
VW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgY2xvc2UgYWZ0ZXIgZXJyb3Igc2hvdWxkIHRocm93
IAotUEFTUyBVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBlcnJvciB0d2ljZSBzaG91bGQgbm90
IHRocm93IAotUEFTUyBVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBlcnJvciBhZnRlciBjbG9z
ZSBzaG91bGQgbm90IHRocm93IAotUEFTUyBVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBlcnJv
ciBhbmQgcmV0dXJuaW5nIGEgcmVqZWN0ZWQgcHJvbWlzZSBmcm9tIHN0YXJ0IHNob3VsZCBjYXVz
ZSB0aGUgc3RyZWFtIHRvIGVycm9yIHdpdGggdGhlIGZpcnN0IGVycm9yIAotUEFTUyBVbmRlcmx5
aW5nIHNvdXJjZTogY2FsbGluZyBlcnJvciBhbmQgcmV0dXJuaW5nIGEgcmVqZWN0ZWQgcHJvbWlz
ZSBmcm9tIHB1bGwgc2hvdWxkIGNhdXNlIHRoZSBzdHJlYW0gdG8gZXJyb3Igd2l0aCB0aGUgZmly
c3QgZXJyb3IgCi1QQVNTIHJlYWQgc2hvdWxkIG5vdCBlcnJvciBpZiBpdCBkZXF1ZXVlcyBhbmQg
cHVsbCgpIHRocm93cyAKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvYmFkLXVuZGVybHlpbmct
c291cmNlcy5kZWRpY2F0ZWR3b3JrZXIuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2JhZC11bmRlcmx5aW5n
LXNvdXJjZXMuZGVkaWNhdGVkd29ya2VyLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDE5MjkwMDdkYzYzYmM1YzM5ZTNhMzdiZDVhYWVjMmZhNzhkNDJkMDQuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvYmFkLXVuZGVy
bHlpbmctc291cmNlcy5kZWRpY2F0ZWR3b3JrZXIuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEx
ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHRpdGxl
PmJhZC11bmRlcmx5aW5nLXNvdXJjZXMuanMgZGVkaWNhdGVkIHdvcmtlciB3cmFwcGVyIGZpbGU8
L3RpdGxlPgotCi08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3Jp
cHQ+Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3Jp
cHQ+Ci0KLTxzY3JpcHQ+Ci0ndXNlIHN0cmljdCc7Ci1mZXRjaF90ZXN0c19mcm9tX3dvcmtlcihu
ZXcgV29ya2VyKCdiYWQtdW5kZXJseWluZy1zb3VyY2VzLmpzJykpOwotPC9zY3JpcHQ+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvcmVhZGFibGUtc3RyZWFtcy9iYWQtdW5kZXJseWluZy1zb3VyY2VzLmh0bWwgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3Ry
ZWFtcy9iYWQtdW5kZXJseWluZy1zb3VyY2VzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDM5NjBlODg2ZGMwMzA1ZTJkZmRmZjllZWZjZDE5ZThlMzNlMWQzZDguLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvYmFkLXVu
ZGVybHlpbmctc291cmNlcy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotPCFE
T0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08dGl0bGU+YmFkLXVuZGVybHlp
bmctc291cmNlcy5qcyBicm93c2VyIGNvbnRleHQgd3JhcHBlciBmaWxlPC90aXRsZT4KLQotPHNj
cmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBz
cmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotCi0KLQotPHNj
cmlwdCBzcmM9ImJhZC11bmRlcmx5aW5nLXNvdXJjZXMuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3Jl
YWRhYmxlLXN0cmVhbXMvYmFkLXVuZGVybHlpbmctc291cmNlcy5qcyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2Jh
ZC11bmRlcmx5aW5nLXNvdXJjZXMuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZm
Y2U3YjE5MWIyMmIxMzA5MWNhMjYxODhlZmE4NjY0NWJjZjYzYTEuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvYmFkLXVuZGVybHlpbmct
c291cmNlcy5qcworKysgL2Rldi9udWxsCkBAIC0xLDQwNSArMCwwIEBACi0ndXNlIHN0cmljdCc7
Ci0KLWlmIChzZWxmLmltcG9ydFNjcmlwdHMpIHsKLSAgc2VsZi5pbXBvcnRTY3JpcHRzKCcvcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzLmpzJyk7Ci19Ci0KLQotdGVzdCgoKSA9PiB7Ci0KLSAgY29uc3Qg
dGhlRXJyb3IgPSBuZXcgRXJyb3IoJ2EgdW5pcXVlIHN0cmluZycpOwotCi0gIGFzc2VydF90aHJv
d3ModGhlRXJyb3IsICgpID0+IHsKLSAgICBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgICAgZ2V0
IHN0YXJ0KCkgewotICAgICAgICB0aHJvdyB0aGVFcnJvcjsKLSAgICAgIH0KLSAgICB9KTsKLSAg
fSwgJ2NvbnN0cnVjdGluZyB0aGUgc3RyZWFtIHNob3VsZCByZS10aHJvdyB0aGUgZXJyb3InKTsK
LQotfSwgJ1VuZGVybHlpbmcgc291cmNlIHN0YXJ0OiB0aHJvd2luZyBnZXR0ZXInKTsKLQotCi10
ZXN0KCgpID0+IHsKLQotICBjb25zdCB0aGVFcnJvciA9IG5ldyBFcnJvcignYSB1bmlxdWUgc3Ry
aW5nJyk7Ci0KLSAgYXNzZXJ0X3Rocm93cyh0aGVFcnJvciwgKCkgPT4gewotICAgIG5ldyBSZWFk
YWJsZVN0cmVhbSh7Ci0gICAgICBzdGFydCgpIHsKLSAgICAgICAgdGhyb3cgdGhlRXJyb3I7Ci0g
ICAgICB9Ci0gICAgfSk7Ci0gIH0sICdjb25zdHJ1Y3RpbmcgdGhlIHN0cmVhbSBzaG91bGQgcmUt
dGhyb3cgdGhlIGVycm9yJyk7Ci0KLX0sICdVbmRlcmx5aW5nIHNvdXJjZSBzdGFydDogdGhyb3dp
bmcgbWV0aG9kJyk7Ci0KLQotdGVzdCgoKSA9PiB7Ci0KLSAgY29uc3QgdGhlRXJyb3IgPSBuZXcg
RXJyb3IoJ2EgdW5pcXVlIHN0cmluZycpOwotICBhc3NlcnRfdGhyb3dzKHRoZUVycm9yLCAoKSA9
PiBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIGdldCBwdWxsKCkgewotICAgICAgdGhyb3cgdGhl
RXJyb3I7Ci0gICAgfQotICB9KSwgJ2NvbnN0cnVjdG9yIHNob3VsZCB0aHJvdycpOwotCi19LCAn
VW5kZXJseWluZyBzb3VyY2U6IHRocm93aW5nIHB1bGwgZ2V0dGVyIChpbml0aWFsIHB1bGwpJyk7
Ci0KLQotcHJvbWlzZV90ZXN0KHQgPT4gewotCi0gIGNvbnN0IHRoZUVycm9yID0gbmV3IEVycm9y
KCdhIHVuaXF1ZSBzdHJpbmcnKTsKLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewot
ICAgIHB1bGwoKSB7Ci0gICAgICB0aHJvdyB0aGVFcnJvcjsKLSAgICB9Ci0gIH0pOwotCi0gIHJl
dHVybiBwcm9taXNlX3JlamVjdHModCwgdGhlRXJyb3IsIHJzLmdldFJlYWRlcigpLmNsb3NlZCk7
Ci0KLX0sICdVbmRlcmx5aW5nIHNvdXJjZTogdGhyb3dpbmcgcHVsbCBtZXRob2QgKGluaXRpYWwg
cHVsbCknKTsKLQotCi1wcm9taXNlX3Rlc3QodCA9PiB7Ci0KLSAgY29uc3QgdGhlRXJyb3IgPSBu
ZXcgRXJyb3IoJ2EgdW5pcXVlIHN0cmluZycpOwotCi0gIGxldCBjb3VudGVyID0gMDsKLSAgY29u
c3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIGdldCBwdWxsKCkgewotICAgICAgKytj
b3VudGVyOwotICAgICAgaWYgKGNvdW50ZXIgPT09IDEpIHsKLSAgICAgICAgcmV0dXJuIGMgPT4g
Yy5lbnF1ZXVlKCdhJyk7Ci0gICAgICB9Ci0KLSAgICAgIHRocm93IHRoZUVycm9yOwotICAgIH0K
LSAgfSk7Ci0gIGNvbnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcigpOwotCi0gIHJldHVybiBQcm9t
aXNlLmFsbChbCi0gICAgcmVhZGVyLnJlYWQoKS50aGVuKHIgPT4gewotICAgICAgYXNzZXJ0X29i
amVjdF9lcXVhbHMociwgeyB2YWx1ZTogJ2EnLCBkb25lOiBmYWxzZSB9LCAndGhlIGZpcnN0IGNo
dW5rIHJlYWQgc2hvdWxkIGJlIGNvcnJlY3QnKTsKLSAgICB9KSwKLSAgICByZWFkZXIucmVhZCgp
LnRoZW4ociA9PiB7Ci0gICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyLCB7IHZhbHVlOiAnYScs
IGRvbmU6IGZhbHNlIH0sICd0aGUgc2Vjb25kIGNodW5rIHJlYWQgc2hvdWxkIGJlIGNvcnJlY3Qn
KTsKLSAgICAgIGFzc2VydF9lcXVhbHMoY291bnRlciwgMSwgJ2NvdW50ZXIgc2hvdWxkIGJlIDEn
KTsKLSAgICB9KQotICBdKTsKLQotfSwgJ1VuZGVybHlpbmcgc291cmNlIHB1bGw6IHRocm93aW5n
IGdldHRlciAoc2Vjb25kIHB1bGwgZG9lcyBub3QgcmVzdWx0IGluIGEgc2Vjb25kIGdldCknKTsK
LQotcHJvbWlzZV90ZXN0KHQgPT4gewotCi0gIGNvbnN0IHRoZUVycm9yID0gbmV3IEVycm9yKCdh
IHVuaXF1ZSBzdHJpbmcnKTsKLQotICBsZXQgY291bnRlciA9IDA7Ci0gIGNvbnN0IHJzID0gbmV3
IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBwdWxsKGMpIHsKLSAgICAgICsrY291bnRlcjsKLSAgICAg
IGlmIChjb3VudGVyID09PSAxKSB7Ci0gICAgICAgIGMuZW5xdWV1ZSgnYScpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgICB9Ci0KLSAgICAgIHRocm93IHRoZUVycm9yOwotICAgIH0KLSAgfSk7Ci0g
IGNvbnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcigpOwotCi0gIHJldHVybiBQcm9taXNlLmFsbChb
Ci0gICAgcmVhZGVyLnJlYWQoKS50aGVuKHIgPT4gewotICAgICAgYXNzZXJ0X29iamVjdF9lcXVh
bHMociwgeyB2YWx1ZTogJ2EnLCBkb25lOiBmYWxzZSB9LCAndGhlIGNodW5rIHJlYWQgc2hvdWxk
IGJlIGNvcnJlY3QnKTsKLSAgICB9KSwKLSAgICBwcm9taXNlX3JlamVjdHModCwgdGhlRXJyb3Is
IHJlYWRlci5jbG9zZWQpCi0gIF0pOwotCi19LCAnVW5kZXJseWluZyBzb3VyY2UgcHVsbDogdGhy
b3dpbmcgbWV0aG9kIChzZWNvbmQgcHVsbCknKTsKLQotdGVzdCgoKSA9PiB7Ci0KLSAgY29uc3Qg
dGhlRXJyb3IgPSBuZXcgRXJyb3IoJ2EgdW5pcXVlIHN0cmluZycpOwotICBhc3NlcnRfdGhyb3dz
KHRoZUVycm9yLCAoKSA9PiBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIGdldCBjYW5jZWwoKSB7
Ci0gICAgICB0aHJvdyB0aGVFcnJvcjsKLSAgICB9Ci0gIH0pLCAnY29uc3RydWN0b3Igc2hvdWxk
IHRocm93Jyk7Ci0KLX0sICdVbmRlcmx5aW5nIHNvdXJjZSBjYW5jZWw6IHRocm93aW5nIGdldHRl
cicpOwotCi1wcm9taXNlX3Rlc3QodCA9PiB7Ci0KLSAgY29uc3QgdGhlRXJyb3IgPSBuZXcgRXJy
b3IoJ2EgdW5pcXVlIHN0cmluZycpOwotICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7
Ci0gICAgY2FuY2VsKCkgewotICAgICAgdGhyb3cgdGhlRXJyb3I7Ci0gICAgfQotICB9KTsKLQot
ICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHQsIHRoZUVycm9yLCBycy5jYW5jZWwoKSk7Ci0KLX0s
ICdVbmRlcmx5aW5nIHNvdXJjZSBjYW5jZWw6IHRocm93aW5nIG1ldGhvZCcpOwotCi1wcm9taXNl
X3Rlc3QoKCkgPT4gewotCi0gIGxldCBjb250cm9sbGVyOwotICBjb25zdCBycyA9IG5ldyBSZWFk
YWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgY29udHJvbGxlciA9IGM7Ci0gICAg
fQotICB9KTsKLQotICBycy5jYW5jZWwoKTsKLSAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9y
KCksICgpID0+IGNvbnRyb2xsZXIuZW5xdWV1ZSgnYScpLCAnQ2FsbGluZyBlbnF1ZXVlIGFmdGVy
IGNhbmNlbGluZyBzaG91bGQgdGhyb3cnKTsKLQotICByZXR1cm4gcnMuZ2V0UmVhZGVyKCkuY2xv
c2VkOwotCi19LCAnVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgZW5xdWV1ZSBvbiBhbiBlbXB0
eSBjYW5jZWxlZCBzdHJlYW0gc2hvdWxkIHRocm93Jyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7
Ci0KLSAgbGV0IGNvbnRyb2xsZXI7Ci0gIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsK
LSAgICBzdGFydChjKSB7Ci0gICAgICBjLmVucXVldWUoJ2EnKTsKLSAgICAgIGMuZW5xdWV1ZSgn
YicpOwotICAgICAgY29udHJvbGxlciA9IGM7Ci0gICAgfQotICB9KTsKLQotICBycy5jYW5jZWwo
KTsKLSAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IGNvbnRyb2xsZXIuZW5x
dWV1ZSgnYycpLCAnQ2FsbGluZyBlbnF1ZXVlIGFmdGVyIGNhbmNlbGluZyBzaG91bGQgdGhyb3cn
KTsKLQotICByZXR1cm4gcnMuZ2V0UmVhZGVyKCkuY2xvc2VkOwotCi19LCAnVW5kZXJseWluZyBz
b3VyY2U6IGNhbGxpbmcgZW5xdWV1ZSBvbiBhIG5vbi1lbXB0eSBjYW5jZWxlZCBzdHJlYW0gc2hv
dWxkIHRocm93Jyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgcmV0dXJuIG5ldyBSZWFk
YWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgYy5jbG9zZSgpOwotICAgICAgYXNz
ZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IGMuZW5xdWV1ZSgnYScpLCAnY2FsbCB0
byBlbnF1ZXVlIHNob3VsZCB0aHJvdyBhIFR5cGVFcnJvcicpOwotICAgIH0KLSAgfSkuZ2V0UmVh
ZGVyKCkuY2xvc2VkOwotCi19LCAnVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgZW5xdWV1ZSBv
biBhIGNsb3NlZCBzdHJlYW0gc2hvdWxkIHRocm93Jyk7Ci0KLXByb21pc2VfdGVzdCh0ID0+IHsK
LQotICBjb25zdCB0aGVFcnJvciA9IG5ldyBFcnJvcignYm9vJyk7Ci0gIGNvbnN0IGNsb3NlZCA9
IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgYy5lcnJvcih0aGVF
cnJvcik7Ci0gICAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gYy5lbnF1
ZXVlKCdhJyksICdjYWxsIHRvIGVucXVldWUgc2hvdWxkIHRocm93IHRoZSBlcnJvcicpOwotICAg
IH0KLSAgfSkuZ2V0UmVhZGVyKCkuY2xvc2VkOwotCi0gIHJldHVybiBwcm9taXNlX3JlamVjdHMo
dCwgdGhlRXJyb3IsIGNsb3NlZCk7Ci0KLX0sICdVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBl
bnF1ZXVlIG9uIGFuIGVycm9yZWQgc3RyZWFtIHNob3VsZCB0aHJvdycpOwotCi1wcm9taXNlX3Rl
c3QoKCkgPT4gewotCi0gIHJldHVybiBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMp
IHsKLSAgICAgIGMuY2xvc2UoKTsKLSAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigp
LCAoKSA9PiBjLmNsb3NlKCksICdzZWNvbmQgY2FsbCB0byBjbG9zZSBzaG91bGQgdGhyb3cgYSBU
eXBlRXJyb3InKTsKLSAgICB9Ci0gIH0pLmdldFJlYWRlcigpLmNsb3NlZDsKLQotfSwgJ1VuZGVy
bHlpbmcgc291cmNlOiBjYWxsaW5nIGNsb3NlIHR3aWNlIG9uIGFuIGVtcHR5IHN0cmVhbSBzaG91
bGQgdGhyb3cgdGhlIHNlY29uZCB0aW1lJyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAg
bGV0IHN0YXJ0Q2FsbGVkID0gZmFsc2U7Ci0gIGxldCByZWFkQ2FsbGVkID0gZmFsc2U7Ci0gIGNv
bnN0IHJlYWRlciA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAg
Yy5lbnF1ZXVlKCdhJyk7Ci0gICAgICBjLmNsb3NlKCk7Ci0gICAgICBhc3NlcnRfdGhyb3dzKG5l
dyBUeXBlRXJyb3IoKSwgKCkgPT4gYy5jbG9zZSgpLCAnc2Vjb25kIGNhbGwgdG8gY2xvc2Ugc2hv
dWxkIHRocm93IGEgVHlwZUVycm9yJyk7Ci0gICAgICBzdGFydENhbGxlZCA9IHRydWU7Ci0gICAg
fQotICB9KS5nZXRSZWFkZXIoKTsKLQotICByZXR1cm4gUHJvbWlzZS5hbGwoWwotICAgIHJlYWRl
ci5yZWFkKCkudGhlbihyID0+IHsKLSAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHIsIHsgdmFs
dWU6ICdhJywgZG9uZTogZmFsc2UgfSwgJ3JlYWQoKSBzaG91bGQgcmVhZCB0aGUgZW5xdWV1ZWQg
Y2h1bmsnKTsKLSAgICAgIHJlYWRDYWxsZWQgPSB0cnVlOwotICAgIH0pLAotICAgIHJlYWRlci5j
bG9zZWQudGhlbigoKSA9PiB7Ci0gICAgICBhc3NlcnRfdHJ1ZShzdGFydENhbGxlZCk7Ci0gICAg
ICBhc3NlcnRfdHJ1ZShyZWFkQ2FsbGVkKTsKLSAgICB9KQotICBdKTsKLQotfSwgJ1VuZGVybHlp
bmcgc291cmNlOiBjYWxsaW5nIGNsb3NlIHR3aWNlIG9uIGEgbm9uLWVtcHR5IHN0cmVhbSBzaG91
bGQgdGhyb3cgdGhlIHNlY29uZCB0aW1lJyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAg
bGV0IGNvbnRyb2xsZXI7Ci0gIGxldCBzdGFydENhbGxlZCA9IGZhbHNlOwotICBjb25zdCBycyA9
IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgY29udHJvbGxlciA9
IGM7Ci0gICAgICBzdGFydENhbGxlZCA9IHRydWU7Ci0gICAgfQotICB9KTsKLQotICBycy5jYW5j
ZWwoKTsKLSAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IGNvbnRyb2xsZXIu
Y2xvc2UoKSwgJ0NhbGxpbmcgY2xvc2UgYWZ0ZXIgY2FuY2VsaW5nIHNob3VsZCB0aHJvdycpOwot
Ci0gIHJldHVybiBycy5nZXRSZWFkZXIoKS5jbG9zZWQudGhlbigoKSA9PiB7Ci0gICAgYXNzZXJ0
X3RydWUoc3RhcnRDYWxsZWQpOwotICB9KTsKLQotfSwgJ1VuZGVybHlpbmcgc291cmNlOiBjYWxs
aW5nIGNsb3NlIG9uIGFuIGVtcHR5IGNhbmNlbGVkIHN0cmVhbSBzaG91bGQgdGhyb3cnKTsKLQot
cHJvbWlzZV90ZXN0KCgpID0+IHsKLQotICBsZXQgY29udHJvbGxlcjsKLSAgbGV0IHN0YXJ0Q2Fs
bGVkID0gZmFsc2U7Ci0gIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFy
dChjKSB7Ci0gICAgICBjb250cm9sbGVyID0gYzsKLSAgICAgIGMuZW5xdWV1ZSgnYScpOwotICAg
ICAgc3RhcnRDYWxsZWQgPSB0cnVlOwotICAgIH0KLSAgfSk7Ci0KLSAgcnMuY2FuY2VsKCk7Ci0g
IGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBjb250cm9sbGVyLmNsb3NlKCks
ICdDYWxsaW5nIGNsb3NlIGFmdGVyIGNhbmNlbGluZyBzaG91bGQgdGhyb3cnKTsKLQotICByZXR1
cm4gcnMuZ2V0UmVhZGVyKCkuY2xvc2VkLnRoZW4oKCkgPT4gewotICAgIGFzc2VydF90cnVlKHN0
YXJ0Q2FsbGVkKTsKLSAgfSk7Ci0KLX0sICdVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBjbG9z
ZSBvbiBhIG5vbi1lbXB0eSBjYW5jZWxlZCBzdHJlYW0gc2hvdWxkIHRocm93Jyk7Ci0KLXByb21p
c2VfdGVzdCgoKSA9PiB7Ci0KLSAgY29uc3QgdGhlRXJyb3IgPSBuZXcgRXJyb3IoJ2JvbycpOwot
ICBsZXQgc3RhcnRDYWxsZWQgPSBmYWxzZTsKLQotICBjb25zdCBjbG9zZWQgPSBuZXcgUmVhZGFi
bGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGMuZXJyb3IodGhlRXJyb3IpOwotICAg
ICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IGMuY2xvc2UoKSwgJ2NhbGwg
dG8gY2xvc2Ugc2hvdWxkIHRocm93IGEgVHlwZUVycm9yJyk7Ci0gICAgICBzdGFydENhbGxlZCA9
IHRydWU7Ci0gICAgfQotICB9KS5nZXRSZWFkZXIoKS5jbG9zZWQ7Ci0KLSAgcmV0dXJuIGNsb3Nl
ZC5jYXRjaChlID0+IHsKLSAgICBhc3NlcnRfdHJ1ZShzdGFydENhbGxlZCk7Ci0gICAgYXNzZXJ0
X2VxdWFscyhlLCB0aGVFcnJvciwgJ2Nsb3NlZCBzaG91bGQgcmVqZWN0IHdpdGggdGhlIGVycm9y
Jyk7Ci0gIH0pOwotCi19LCAnVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgY2xvc2UgYWZ0ZXIg
ZXJyb3Igc2hvdWxkIHRocm93Jyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgY29uc3Qg
dGhlRXJyb3IgPSBuZXcgRXJyb3IoJ2JvbycpOwotICBsZXQgc3RhcnRDYWxsZWQgPSBmYWxzZTsK
LQotICBjb25zdCBjbG9zZWQgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsK
LSAgICAgIGMuZXJyb3IodGhlRXJyb3IpOwotICAgICAgYy5lcnJvcigpOwotICAgICAgc3RhcnRD
YWxsZWQgPSB0cnVlOwotICAgIH0KLSAgfSkuZ2V0UmVhZGVyKCkuY2xvc2VkOwotCi0gIHJldHVy
biBjbG9zZWQuY2F0Y2goZSA9PiB7Ci0gICAgYXNzZXJ0X3RydWUoc3RhcnRDYWxsZWQpOwotICAg
IGFzc2VydF9lcXVhbHMoZSwgdGhlRXJyb3IsICdjbG9zZWQgc2hvdWxkIHJlamVjdCB3aXRoIHRo
ZSBlcnJvcicpOwotICB9KTsKLQotfSwgJ1VuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGVycm9y
IHR3aWNlIHNob3VsZCBub3QgdGhyb3cnKTsKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLQotICBs
ZXQgc3RhcnRDYWxsZWQgPSBmYWxzZTsKLQotICBjb25zdCBjbG9zZWQgPSBuZXcgUmVhZGFibGVT
dHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGMuY2xvc2UoKTsKLSAgICAgIGMuZXJyb3Io
KTsKLSAgICAgIHN0YXJ0Q2FsbGVkID0gdHJ1ZTsKLSAgICB9Ci0gIH0pLmdldFJlYWRlcigpLmNs
b3NlZDsKLQotICByZXR1cm4gY2xvc2VkLnRoZW4oKCkgPT4gYXNzZXJ0X3RydWUoc3RhcnRDYWxs
ZWQpKTsKLQotfSwgJ1VuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGVycm9yIGFmdGVyIGNsb3Nl
IHNob3VsZCBub3QgdGhyb3cnKTsKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLQotICBsZXQgc3Rh
cnRDYWxsZWQgPSBmYWxzZTsKLSAgY29uc3QgZmlyc3RFcnJvciA9IG5ldyBFcnJvcignMScpOwot
ICBjb25zdCBzZWNvbmRFcnJvciA9IG5ldyBFcnJvcignMicpOwotCi0gIGNvbnN0IGNsb3NlZCA9
IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgYy5lcnJvcihmaXJz
dEVycm9yKTsKLSAgICAgIHN0YXJ0Q2FsbGVkID0gdHJ1ZTsKLSAgICAgIHJldHVybiBQcm9taXNl
LnJlamVjdChzZWNvbmRFcnJvcik7Ci0gICAgfQotICB9KS5nZXRSZWFkZXIoKS5jbG9zZWQ7Ci0K
LSAgcmV0dXJuIGNsb3NlZC5jYXRjaChlID0+IHsKLSAgICBhc3NlcnRfdHJ1ZShzdGFydENhbGxl
ZCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhlLCBmaXJzdEVycm9yLCAnY2xvc2VkIHNob3VsZCByZWpl
Y3Qgd2l0aCB0aGUgZmlyc3QgZXJyb3InKTsKLSAgfSk7Ci0KLX0sICdVbmRlcmx5aW5nIHNvdXJj
ZTogY2FsbGluZyBlcnJvciBhbmQgcmV0dXJuaW5nIGEgcmVqZWN0ZWQgcHJvbWlzZSBmcm9tIHN0
YXJ0IHNob3VsZCBjYXVzZSB0aGUgc3RyZWFtIHRvIGVycm9yICcgKwotICAgJ3dpdGggdGhlIGZp
cnN0IGVycm9yJyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgbGV0IHN0YXJ0Q2FsbGVk
ID0gZmFsc2U7Ci0gIGNvbnN0IGZpcnN0RXJyb3IgPSBuZXcgRXJyb3IoJzEnKTsKLSAgY29uc3Qg
c2Vjb25kRXJyb3IgPSBuZXcgRXJyb3IoJzInKTsKLQotICBjb25zdCBjbG9zZWQgPSBuZXcgUmVh
ZGFibGVTdHJlYW0oewotICAgIHB1bGwoYykgewotICAgICAgYy5lcnJvcihmaXJzdEVycm9yKTsK
LSAgICAgIHN0YXJ0Q2FsbGVkID0gdHJ1ZTsKLSAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChz
ZWNvbmRFcnJvcik7Ci0gICAgfQotICB9KS5nZXRSZWFkZXIoKS5jbG9zZWQ7Ci0KLSAgcmV0dXJu
IGNsb3NlZC5jYXRjaChlID0+IHsKLSAgICBhc3NlcnRfdHJ1ZShzdGFydENhbGxlZCk7Ci0gICAg
YXNzZXJ0X2VxdWFscyhlLCBmaXJzdEVycm9yLCAnY2xvc2VkIHNob3VsZCByZWplY3Qgd2l0aCB0
aGUgZmlyc3QgZXJyb3InKTsKLSAgfSk7Ci0KLX0sICdVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGlu
ZyBlcnJvciBhbmQgcmV0dXJuaW5nIGEgcmVqZWN0ZWQgcHJvbWlzZSBmcm9tIHB1bGwgc2hvdWxk
IGNhdXNlIHRoZSBzdHJlYW0gdG8gZXJyb3IgJyArCi0gICAnd2l0aCB0aGUgZmlyc3QgZXJyb3In
KTsKLQotY29uc3QgZXJyb3IxID0geyBuYW1lOiAnZXJyb3IxJyB9OwotCi1wcm9taXNlX3Rlc3Qo
dCA9PiB7Ci0KLSAgbGV0IHB1bGxTaG91bGRUaHJvdyA9IGZhbHNlOwotICBjb25zdCBycyA9IG5l
dyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgcHVsbChjb250cm9sbGVyKSB7Ci0gICAgICBpZiAocHVs
bFNob3VsZFRocm93KSB7Ci0gICAgICAgIHRocm93IGVycm9yMTsKLSAgICAgIH0KLSAgICAgIGNv
bnRyb2xsZXIuZW5xdWV1ZSgwKTsKLSAgICB9Ci0gIH0sIG5ldyBDb3VudFF1ZXVpbmdTdHJhdGVn
eSh7aGlnaFdhdGVyTWFyazogMX0pKTsKLSAgY29uc3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7
Ci0gIHJldHVybiBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHsKLSAgICBwdWxsU2hvdWxk
VGhyb3cgPSB0cnVlOwotICAgIHJldHVybiBQcm9taXNlLmFsbChbCi0gICAgICByZWFkZXIucmVh
ZCgpLAotICAgICAgcHJvbWlzZV9yZWplY3RzKHQsIGVycm9yMSwgcmVhZGVyLmNsb3NlZCwgJy5j
bG9zZWQgcHJvbWlzZSBzaG91bGQgcmVqZWN0JykKLSAgICBdKTsKLSAgfSk7Ci0KLX0sICdyZWFk
IHNob3VsZCBub3QgZXJyb3IgaWYgaXQgZGVxdWV1ZXMgYW5kIHB1bGwoKSB0aHJvd3MnKTsKLQot
ZG9uZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvYmFkLXVuZGVybHlpbmctc291cmNlcy5z
ZXJ2aWNld29ya2VyLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2JhZC11bmRlcmx5
aW5nLXNvdXJjZXMuc2VydmljZXdvcmtlci5odHRwcy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGY2YzZhNTRhYTE4ZWU5NjM4MjFhYzQ5NzY2OGZmNTZiNmIwNjZj
MjMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0
cmVhbXMvYmFkLXVuZGVybHlpbmctc291cmNlcy5zZXJ2aWNld29ya2VyLmh0dHBzLWV4cGVjdGVk
LnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLQotUEFTUyBTZXJ2aWNlIHdvcmtl
ciB0ZXN0IHNldHVwIAotUEFTUyBVbmRlcmx5aW5nIHNvdXJjZSBzdGFydDogdGhyb3dpbmcgZ2V0
dGVyIAotUEFTUyBVbmRlcmx5aW5nIHNvdXJjZSBzdGFydDogdGhyb3dpbmcgbWV0aG9kIAotUEFT
UyBVbmRlcmx5aW5nIHNvdXJjZTogdGhyb3dpbmcgcHVsbCBnZXR0ZXIgKGluaXRpYWwgcHVsbCkg
Ci1QQVNTIFVuZGVybHlpbmcgc291cmNlOiB0aHJvd2luZyBwdWxsIG1ldGhvZCAoaW5pdGlhbCBw
dWxsKSAKLVBBU1MgVW5kZXJseWluZyBzb3VyY2UgcHVsbDogdGhyb3dpbmcgZ2V0dGVyIChzZWNv
bmQgcHVsbCBkb2VzIG5vdCByZXN1bHQgaW4gYSBzZWNvbmQgZ2V0KSAKLVBBU1MgVW5kZXJseWlu
ZyBzb3VyY2UgcHVsbDogdGhyb3dpbmcgbWV0aG9kIChzZWNvbmQgcHVsbCkgCi1QQVNTIFVuZGVy
bHlpbmcgc291cmNlIGNhbmNlbDogdGhyb3dpbmcgZ2V0dGVyIAotUEFTUyBVbmRlcmx5aW5nIHNv
dXJjZSBjYW5jZWw6IHRocm93aW5nIG1ldGhvZCAKLVBBU1MgVW5kZXJseWluZyBzb3VyY2U6IGNh
bGxpbmcgZW5xdWV1ZSBvbiBhbiBlbXB0eSBjYW5jZWxlZCBzdHJlYW0gc2hvdWxkIHRocm93IAot
UEFTUyBVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBlbnF1ZXVlIG9uIGEgbm9uLWVtcHR5IGNh
bmNlbGVkIHN0cmVhbSBzaG91bGQgdGhyb3cgCi1QQVNTIFVuZGVybHlpbmcgc291cmNlOiBjYWxs
aW5nIGVucXVldWUgb24gYSBjbG9zZWQgc3RyZWFtIHNob3VsZCB0aHJvdyAKLVBBU1MgVW5kZXJs
eWluZyBzb3VyY2U6IGNhbGxpbmcgZW5xdWV1ZSBvbiBhbiBlcnJvcmVkIHN0cmVhbSBzaG91bGQg
dGhyb3cgCi1QQVNTIFVuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGNsb3NlIHR3aWNlIG9uIGFu
IGVtcHR5IHN0cmVhbSBzaG91bGQgdGhyb3cgdGhlIHNlY29uZCB0aW1lIAotUEFTUyBVbmRlcmx5
aW5nIHNvdXJjZTogY2FsbGluZyBjbG9zZSB0d2ljZSBvbiBhIG5vbi1lbXB0eSBzdHJlYW0gc2hv
dWxkIHRocm93IHRoZSBzZWNvbmQgdGltZSAKLVBBU1MgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxp
bmcgY2xvc2Ugb24gYW4gZW1wdHkgY2FuY2VsZWQgc3RyZWFtIHNob3VsZCB0aHJvdyAKLVBBU1Mg
VW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgY2xvc2Ugb24gYSBub24tZW1wdHkgY2FuY2VsZWQg
c3RyZWFtIHNob3VsZCB0aHJvdyAKLVBBU1MgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgY2xv
c2UgYWZ0ZXIgZXJyb3Igc2hvdWxkIHRocm93IAotUEFTUyBVbmRlcmx5aW5nIHNvdXJjZTogY2Fs
bGluZyBlcnJvciB0d2ljZSBzaG91bGQgbm90IHRocm93IAotUEFTUyBVbmRlcmx5aW5nIHNvdXJj
ZTogY2FsbGluZyBlcnJvciBhZnRlciBjbG9zZSBzaG91bGQgbm90IHRocm93IAotUEFTUyBVbmRl
cmx5aW5nIHNvdXJjZTogY2FsbGluZyBlcnJvciBhbmQgcmV0dXJuaW5nIGEgcmVqZWN0ZWQgcHJv
bWlzZSBmcm9tIHN0YXJ0IHNob3VsZCBjYXVzZSB0aGUgc3RyZWFtIHRvIGVycm9yIHdpdGggdGhl
IGZpcnN0IGVycm9yIAotUEFTUyBVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBlcnJvciBhbmQg
cmV0dXJuaW5nIGEgcmVqZWN0ZWQgcHJvbWlzZSBmcm9tIHB1bGwgc2hvdWxkIGNhdXNlIHRoZSBz
dHJlYW0gdG8gZXJyb3Igd2l0aCB0aGUgZmlyc3QgZXJyb3IgCi1QQVNTIHJlYWQgc2hvdWxkIG5v
dCBlcnJvciBpZiBpdCBkZXF1ZXVlcyBhbmQgcHVsbCgpIHRocm93cyAKLQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRh
YmxlLXN0cmVhbXMvYmFkLXVuZGVybHlpbmctc291cmNlcy5zZXJ2aWNld29ya2VyLmh0dHBzLmh0
bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
cmVhZGFibGUtc3RyZWFtcy9iYWQtdW5kZXJseWluZy1zb3VyY2VzLnNlcnZpY2V3b3JrZXIuaHR0
cHMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGZlZGNhYjk0NTA4MGQ0YjFm
NTAyY2Y3NTJmYzM3ZDkwZjU5N2RhMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9iYWQtdW5kZXJseWluZy1zb3VyY2VzLnNlcnZpY2V3
b3JrZXIuaHR0cHMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLTwhRE9DVFlQ
RSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHRpdGxlPmJhZC11bmRlcmx5aW5nLXNv
dXJjZXMuanMgc2VydmljZSB3b3JrZXIgd3JhcHBlciBmaWxlPC90aXRsZT4KLQotPHNjcmlwdCBz
cmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9y
ZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9z
ZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvcmVzb3VyY2VzL3Rlc3QtaGVscGVycy5zdWIu
anMiPjwvc2NyaXB0PgotCi08c2NyaXB0PgotJ3VzZSBzdHJpY3QnOwotc2VydmljZV93b3JrZXJf
dGVzdCgnYmFkLXVuZGVybHlpbmctc291cmNlcy5qcycsICdTZXJ2aWNlIHdvcmtlciB0ZXN0IHNl
dHVwJyk7Ci08L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2JhZC11bmRlcmx5aW5n
LXNvdXJjZXMuc2hhcmVkd29ya2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2JhZC11bmRl
cmx5aW5nLXNvdXJjZXMuc2hhcmVkd29ya2VyLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDlkNWQyNTA5ZDc4NDdlOGNkNmZlNjYwNmFhNjBjZGQzM2FhNDc0ZS4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFt
cy9iYWQtdW5kZXJseWluZy1zb3VyY2VzLnNoYXJlZHdvcmtlci1leHBlY3RlZC50eHQKKysrIC9k
ZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLUNPTlNPTEUgTUVTU0FHRTogUmVmZXJlbmNlRXJyb3I6
IENhbid0IGZpbmQgdmFyaWFibGU6IFNoYXJlZFdvcmtlcgotCi1IYXJuZXNzIEVycm9yIChGQUlM
KSwgbWVzc2FnZSA9IFJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBTaGFyZWRX
b3JrZXIKLQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9iYWQtdW5kZXJseWluZy1zb3VyY2Vz
LnNoYXJlZHdvcmtlci5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvYmFkLXVuZGVybHlpbmctc291cmNlcy5z
aGFyZWR3b3JrZXIuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjU4NmM1NWM1
NGY4OTY3YmEwNDlmY2RhNDhhZjUyNWNlZjk1ZmMyMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9iYWQtdW5kZXJseWluZy1zb3VyY2Vz
LnNoYXJlZHdvcmtlci5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotPCFET0NU
WVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08dGl0bGU+YmFkLXVuZGVybHlpbmct
c291cmNlcy5qcyBzaGFyZWQgd29ya2VyIHdyYXBwZXIgZmlsZTwvdGl0bGU+Ci0KLTxzY3JpcHQg
c3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIv
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLQotPHNjcmlwdD4KLSd1
c2Ugc3RyaWN0JzsKLWZldGNoX3Rlc3RzX2Zyb21fd29ya2VyKG5ldyBTaGFyZWRXb3JrZXIoJ2Jh
ZC11bmRlcmx5aW5nLXNvdXJjZXMuanMnKSk7Ci08L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1z
dHJlYW1zL2JyYW5kLWNoZWNrcy5kZWRpY2F0ZWR3b3JrZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0
cmVhbXMvYnJhbmQtY2hlY2tzLmRlZGljYXRlZHdvcmtlci1leHBlY3RlZC50eHQKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdkN2I2ZWY5OTJhODE1ZjkyOTBjN2MxNjZkNzc5ZDRhOGUw
ZWU1ZTEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxl
LXN0cmVhbXMvYnJhbmQtY2hlY2tzLmRlZGljYXRlZHdvcmtlci1leHBlY3RlZC50eHQKKysrIC9k
ZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi0KLVBBU1MgQ2FuIGdldCB0aGUgUmVhZGFibGVTdHJl
YW1EZWZhdWx0UmVhZGVyIGNvbnN0cnVjdG9yIGluZGlyZWN0bHkgCi1QQVNTIENhbiBnZXQgdGhl
IFJlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIgY29uc3RydWN0b3IgaW5kaXJlY3RseSAK
LVBBU1MgUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLmNhbmNlbCBlbmZvcmNlcyBhIGJyYW5kIGNo
ZWNrIAotUEFTUyBSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUuZ2V0UmVhZGVyIGVuZm9yY2VzIGEg
YnJhbmQgY2hlY2sgCi1QQVNTIFJlYWRhYmxlU3RyZWFtLnByb3RvdHlwZS50ZWUgZW5mb3JjZXMg
YSBicmFuZCBjaGVjayAKLVBBU1MgUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyIGVuZm9yY2Vz
IGEgYnJhbmQgY2hlY2sgb24gaXRzIGFyZ3VtZW50IAotUEFTUyBSZWFkYWJsZVN0cmVhbURlZmF1
bHRSZWFkZXIucHJvdG90eXBlLmNsb3NlZCBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrIAotUEFTUyBS
ZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIucHJvdG90eXBlLmNhbmNlbCBlbmZvcmNlcyBhIGJy
YW5kIGNoZWNrIAotUEFTUyBSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIucHJvdG90eXBlLnJl
YWQgZW5mb3JjZXMgYSBicmFuZCBjaGVjayAKLVBBU1MgUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVh
ZGVyLnByb3RvdHlwZS5yZWxlYXNlTG9jayBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrIAotUEFTUyBS
ZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2sgb24g
aXRzIGFyZ3VtZW50IAotUEFTUyBSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyIGNhbid0
IGJlIGdpdmVuIGEgZnVsbHktY29uc3RydWN0ZWQgUmVhZGFibGVTdHJlYW0gCi1QQVNTIFJlYWRh
YmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIucHJvdG90eXBlLmNsb3NlIGVuZm9yY2VzIGEgYnJh
bmQgY2hlY2sgCi1QQVNTIFJlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIucHJvdG90eXBl
LmVucXVldWUgZW5mb3JjZXMgYSBicmFuZCBjaGVjayAKLVBBU1MgUmVhZGFibGVTdHJlYW1EZWZh
dWx0Q29udHJvbGxlci5wcm90b3R5cGUuZXJyb3IgZW5mb3JjZXMgYSBicmFuZCBjaGVjayAKLQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
dHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvYnJhbmQtY2hlY2tzLmRlZGljYXRlZHdvcmtlci5odG1s
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3Jl
YWRhYmxlLXN0cmVhbXMvYnJhbmQtY2hlY2tzLmRlZGljYXRlZHdvcmtlci5odG1sCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYjNmMTFhOTBlMjgxYjk2YWFiNDY5NWQ3Y2FiMDRjYzQz
NmU4ZjA3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJs
ZS1zdHJlYW1zL2JyYW5kLWNoZWNrcy5kZWRpY2F0ZWR3b3JrZXIuaHRtbAorKysgL2Rldi9udWxs
CkBAIC0xLDExICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgi
PgotPHRpdGxlPmJyYW5kLWNoZWNrcy5qcyBkZWRpY2F0ZWQgd29ya2VyIHdyYXBwZXIgZmlsZTwv
dGl0bGU+Ci0KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3Njcmlw
dD4KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3Njcmlw
dD4KLQotPHNjcmlwdD4KLSd1c2Ugc3RyaWN0JzsKLWZldGNoX3Rlc3RzX2Zyb21fd29ya2VyKG5l
dyBXb3JrZXIoJ2JyYW5kLWNoZWNrcy5qcycpKTsKLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxl
LXN0cmVhbXMvYnJhbmQtY2hlY2tzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9icmFuZC1jaGVja3MuaHRt
bApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOThkMmUyODFmZmFmNmYwYjQwNDZiMzAy
OTZiMmQwOWZiMWYzZGU5Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvcmVhZGFibGUtc3RyZWFtcy9icmFuZC1jaGVja3MuaHRtbAorKysgL2Rldi9udWxsCkBAIC0x
LDEwICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHRp
dGxlPmJyYW5kLWNoZWNrcy5qcyBicm93c2VyIGNvbnRleHQgd3JhcHBlciBmaWxlPC90aXRsZT4K
LQotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNj
cmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotCi08
c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgotCi08c2Ny
aXB0IHNyYz0iYnJhbmQtY2hlY2tzLmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJl
YW1zL2JyYW5kLWNoZWNrcy5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2JyYW5kLWNoZWNrcy5qcwpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWIzOWQxYWQ2NjE2Y2M2NjQ1ZTBjNjIwMzkxNzBlNmVi
ZDQyODY3OS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFi
bGUtc3RyZWFtcy9icmFuZC1jaGVja3MuanMKKysrIC9kZXYvbnVsbApAQCAtMSwxNjQgKzAsMCBA
QAotJ3VzZSBzdHJpY3QnOwotCi1pZiAoc2VsZi5pbXBvcnRTY3JpcHRzKSB7Ci0gIHNlbGYuaW1w
b3J0U2NyaXB0cygnLi4vcmVzb3VyY2VzL3Rlc3QtdXRpbHMuanMnKTsKLSAgc2VsZi5pbXBvcnRT
Y3JpcHRzKCcvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzJyk7Ci19Ci0KLWxldCBSZWFkYWJsZVN0
cmVhbURlZmF1bHRSZWFkZXI7Ci1sZXQgUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlcjsK
LQotdGVzdCgoKSA9PiB7Ci0KLSAgLy8gSXQncyBub3QgZXhwb3NlZCBnbG9iYWxseSwgYnV0IHdl
IHRlc3QgYSBmZXcgb2YgaXRzIHByb3BlcnRpZXMgaGVyZS4KLSAgUmVhZGFibGVTdHJlYW1EZWZh
dWx0UmVhZGVyID0gKG5ldyBSZWFkYWJsZVN0cmVhbSgpKS5nZXRSZWFkZXIoKS5jb25zdHJ1Y3Rv
cjsKLQotfSwgJ0NhbiBnZXQgdGhlIFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlciBjb25zdHJ1
Y3RvciBpbmRpcmVjdGx5Jyk7Ci0KLXRlc3QoKCkgPT4gewotCi0gIC8vIEl0J3Mgbm90IGV4cG9z
ZWQgZ2xvYmFsbHksIGJ1dCB3ZSB0ZXN0IGEgZmV3IG9mIGl0cyBwcm9wZXJ0aWVzIGhlcmUuCi0g
IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgUmVhZGFibGVTdHJl
YW1EZWZhdWx0Q29udHJvbGxlciA9IGMuY29uc3RydWN0b3I7Ci0gICAgfQotICB9KTsKLQotfSwg
J0NhbiBnZXQgdGhlIFJlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIgY29uc3RydWN0b3Ig
aW5kaXJlY3RseScpOwotCi1mdW5jdGlvbiBmYWtlUlMoKSB7Ci0gIHJldHVybiBPYmplY3Quc2V0
UHJvdG90eXBlT2YoewotICAgIGNhbmNlbCgpIHsgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpOyB9
LAotICAgIGdldFJlYWRlcigpIHsgcmV0dXJuIG5ldyBSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFk
ZXIobmV3IFJlYWRhYmxlU3RyZWFtKCkpOyB9LAotICAgIHBpcGVUaHJvdWdoKG9iaikgeyByZXR1
cm4gb2JqLnJlYWRhYmxlOyB9LAotICAgIHBpcGVUbygpIHsgcmV0dXJuIFByb21pc2UucmVzb2x2
ZSgpOyB9LAotICAgIHRlZSgpIHsgcmV0dXJuIFtyZWFsUlMoKSwgcmVhbFJTKCldOyB9Ci0gIH0s
IFJlYWRhYmxlU3RyZWFtLnByb3RvdHlwZSk7Ci19Ci0KLWZ1bmN0aW9uIHJlYWxSUygpIHsKLSAg
cmV0dXJuIG5ldyBSZWFkYWJsZVN0cmVhbSgpOwotfQotCi1mdW5jdGlvbiBmYWtlUlNEZWZhdWx0
UmVhZGVyKCkgewotICByZXR1cm4gT2JqZWN0LnNldFByb3RvdHlwZU9mKHsKLSAgICBnZXQgY2xv
c2VkKCkgeyByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7IH0sCi0gICAgY2FuY2VsKCkgeyByZXR1
cm4gUHJvbWlzZS5yZXNvbHZlKCk7IH0sCi0gICAgcmVhZCgpIHsgcmV0dXJuIFByb21pc2UucmVz
b2x2ZSh7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSk7IH0sCi0gICAgcmVsZWFzZUxv
Y2soKSB7IHJldHVybjsgfQotICB9LCBSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIucHJvdG90
eXBlKTsKLX0KLQotZnVuY3Rpb24gcmVhbFJTRGVmYXVsdFJlYWRlcigpIHsKLSAgcmV0dXJuIG5l
dyBSZWFkYWJsZVN0cmVhbSgpLmdldFJlYWRlcigpOwotfQotCi1mdW5jdGlvbiBmYWtlUlNEZWZh
dWx0Q29udHJvbGxlcigpIHsKLSAgcmV0dXJuIE9iamVjdC5zZXRQcm90b3R5cGVPZih7Ci0gICAg
Y2xvc2UoKSB7IH0sCi0gICAgZW5xdWV1ZSgpIHsgfSwKLSAgICBlcnJvcigpIHsgfQotICB9LCBS
ZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLnByb3RvdHlwZSk7Ci19Ci0KLWZ1bmN0aW9u
IHJlYWxSU0RlZmF1bHRDb250cm9sbGVyKCkgewotICBsZXQgY29udHJvbGxlcjsKLSAgbmV3IFJl
YWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0gICAgICBjb250cm9sbGVyID0gYzsKLSAg
ICB9Ci0gIH0pOwotICByZXR1cm4gY29udHJvbGxlcjsKLX0KLQotcHJvbWlzZV90ZXN0KHQgPT4g
ewotCi0gIHJldHVybiBtZXRob2RSZWplY3RzRm9yQWxsKHQsIFJlYWRhYmxlU3RyZWFtLnByb3Rv
dHlwZSwgJ2NhbmNlbCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmYWtlUlMoKSwg
cmVhbFJTRGVmYXVsdFJlYWRlcigpLCByZWFsUlNEZWZhdWx0Q29udHJvbGxlcigpLCB1bmRlZmlu
ZWQsIG51bGxdKTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtLnByb3RvdHlwZS5jYW5jZWwgZW5mb3Jj
ZXMgYSBicmFuZCBjaGVjaycpOwotCi10ZXN0KCgpID0+IHsKLQotICBtZXRob2RUaHJvd3NGb3JB
bGwoUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLCAnZ2V0UmVhZGVyJywKLSAgICAgICAgICAgICAg
ICAgICAgIFtmYWtlUlMoKSwgcmVhbFJTRGVmYXVsdFJlYWRlcigpLCByZWFsUlNEZWZhdWx0Q29u
dHJvbGxlcigpLCB1bmRlZmluZWQsIG51bGxdKTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtLnByb3Rv
dHlwZS5nZXRSZWFkZXIgZW5mb3JjZXMgYSBicmFuZCBjaGVjaycpOwotCi10ZXN0KCgpID0+IHsK
LQotICBtZXRob2RUaHJvd3NGb3JBbGwoUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLCAndGVlJywg
W2Zha2VSUygpLCByZWFsUlNEZWZhdWx0UmVhZGVyKCksIHJlYWxSU0RlZmF1bHRDb250cm9sbGVy
KCksIHVuZGVmaW5lZCwgbnVsbF0pOwotCi19LCAnUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLnRl
ZSBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrJyk7Ci0KLXRlc3QoKCkgPT4gewotCi0gIGFzc2VydF90
aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBuZXcgUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVh
ZGVyKGZha2VSUygpKSwKLSAgICAgICAgICAgICAgICAnQ29uc3RydWN0aW5nIGEgUmVhZGFibGVT
dHJlYW1EZWZhdWx0UmVhZGVyIHNob3VsZCB0aHJvdycpOwotCi19LCAnUmVhZGFibGVTdHJlYW1E
ZWZhdWx0UmVhZGVyIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2sgb24gaXRzIGFyZ3VtZW50Jyk7Ci0K
LXByb21pc2VfdGVzdCh0ID0+IHsKLQotICByZXR1cm4gZ2V0dGVyUmVqZWN0c0ZvckFsbCh0LCBS
ZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIucHJvdG90eXBlLCAnY2xvc2VkJywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgW2Zha2VSU0RlZmF1bHRSZWFkZXIoKSwgcmVhbFJTKCksIHJl
YWxSU0RlZmF1bHRDb250cm9sbGVyKCksIHVuZGVmaW5lZCwgbnVsbF0pOwotCi19LCAnUmVhZGFi
bGVTdHJlYW1EZWZhdWx0UmVhZGVyLnByb3RvdHlwZS5jbG9zZWQgZW5mb3JjZXMgYSBicmFuZCBj
aGVjaycpOwotCi1wcm9taXNlX3Rlc3QodCA9PiB7Ci0KLSAgcmV0dXJuIG1ldGhvZFJlamVjdHNG
b3JBbGwodCwgUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyLnByb3RvdHlwZSwgJ2NhbmNlbCcs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmYWtlUlNEZWZhdWx0UmVhZGVyKCksIHJl
YWxSUygpLCByZWFsUlNEZWZhdWx0Q29udHJvbGxlcigpLCB1bmRlZmluZWQsIG51bGxdKTsKLQot
fSwgJ1JlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlci5wcm90b3R5cGUuY2FuY2VsIGVuZm9yY2Vz
IGEgYnJhbmQgY2hlY2snKTsKLQotcHJvbWlzZV90ZXN0KHQgPT4gewotCi0gIHJldHVybiBtZXRo
b2RSZWplY3RzRm9yQWxsKHQsIFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlci5wcm90b3R5cGUs
ICdyZWFkJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zha2VSU0RlZmF1bHRSZWFk
ZXIoKSwgcmVhbFJTKCksIHJlYWxSU0RlZmF1bHRDb250cm9sbGVyKCksIHVuZGVmaW5lZCwgbnVs
bF0pOwotCi19LCAnUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyLnByb3RvdHlwZS5yZWFkIGVu
Zm9yY2VzIGEgYnJhbmQgY2hlY2snKTsKLQotdGVzdCgoKSA9PiB7Ci0KLSAgbWV0aG9kVGhyb3dz
Rm9yQWxsKFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlci5wcm90b3R5cGUsICdyZWxlYXNlTG9j
aycsCi0gICAgICAgICAgICAgICAgICAgICBbZmFrZVJTRGVmYXVsdFJlYWRlcigpLCByZWFsUlMo
KSwgcmVhbFJTRGVmYXVsdENvbnRyb2xsZXIoKSwgdW5kZWZpbmVkLCBudWxsXSk7Ci0KLX0sICdS
ZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIucHJvdG90eXBlLnJlbGVhc2VMb2NrIGVuZm9yY2Vz
IGEgYnJhbmQgY2hlY2snKTsKLQotdGVzdCgoKSA9PiB7Ci0KLSAgYXNzZXJ0X3Rocm93cyhuZXcg
VHlwZUVycm9yKCksICgpID0+IG5ldyBSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyKGZh
a2VSUygpKSwKLSAgICAgICAgICAgICAgICAnQ29uc3RydWN0aW5nIGEgUmVhZGFibGVTdHJlYW1E
ZWZhdWx0Q29udHJvbGxlciBzaG91bGQgdGhyb3cnKTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtRGVm
YXVsdENvbnRyb2xsZXIgZW5mb3JjZXMgYSBicmFuZCBjaGVjayBvbiBpdHMgYXJndW1lbnQnKTsK
LQotdGVzdCgoKSA9PiB7Ci0KLSAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+
IG5ldyBSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyKHJlYWxSUygpKSwKLSAgICAgICAg
ICAgICAgICAnQ29uc3RydWN0aW5nIGEgUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlciBz
aG91bGQgdGhyb3cnKTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIgY2Fu
XCd0IGJlIGdpdmVuIGEgZnVsbHktY29uc3RydWN0ZWQgUmVhZGFibGVTdHJlYW0nKTsKLQotdGVz
dCgoKSA9PiB7Ci0KLSAgbWV0aG9kVGhyb3dzRm9yQWxsKFJlYWRhYmxlU3RyZWFtRGVmYXVsdENv
bnRyb2xsZXIucHJvdG90eXBlLCAnY2xvc2UnLAotICAgICAgICAgICAgICAgICAgICAgW2Zha2VS
U0RlZmF1bHRDb250cm9sbGVyKCksIHJlYWxSUygpLCByZWFsUlNEZWZhdWx0UmVhZGVyKCksIHVu
ZGVmaW5lZCwgbnVsbF0pOwotCi19LCAnUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5w
cm90b3R5cGUuY2xvc2UgZW5mb3JjZXMgYSBicmFuZCBjaGVjaycpOwotCi10ZXN0KCgpID0+IHsK
LQotICBtZXRob2RUaHJvd3NGb3JBbGwoUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5w
cm90b3R5cGUsICdlbnF1ZXVlJywKLSAgICAgICAgICAgICAgICAgICAgIFtmYWtlUlNEZWZhdWx0
Q29udHJvbGxlcigpLCByZWFsUlMoKSwgcmVhbFJTRGVmYXVsdFJlYWRlcigpLCB1bmRlZmluZWQs
IG51bGxdKTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIucHJvdG90eXBl
LmVucXVldWUgZW5mb3JjZXMgYSBicmFuZCBjaGVjaycpOwotCi10ZXN0KCgpID0+IHsKLQotICBt
ZXRob2RUaHJvd3NGb3JBbGwoUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5wcm90b3R5
cGUsICdlcnJvcicsCi0gICAgICAgICAgICAgICAgICAgICBbZmFrZVJTRGVmYXVsdENvbnRyb2xs
ZXIoKSwgcmVhbFJTKCksIHJlYWxSU0RlZmF1bHRSZWFkZXIoKSwgdW5kZWZpbmVkLCBudWxsXSk7
Ci0KLX0sICdSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLnByb3RvdHlwZS5lcnJvciBl
bmZvcmNlcyBhIGJyYW5kIGNoZWNrJyk7Ci0KLWRvbmUoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJl
YW1zL2JyYW5kLWNoZWNrcy5zZXJ2aWNld29ya2VyLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1z
dHJlYW1zL2JyYW5kLWNoZWNrcy5zZXJ2aWNld29ya2VyLmh0dHBzLWV4cGVjdGVkLnR4dApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzlhOGUxMjhjMmY2MDEwNWFhMDY4NjdjM2NlZWMz
OTE1NGQ4MjNlNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVh
ZGFibGUtc3RyZWFtcy9icmFuZC1jaGVja3Muc2VydmljZXdvcmtlci5odHRwcy1leHBlY3RlZC50
eHQKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi0KLVBBU1MgU2VydmljZSB3b3JrZXIg
dGVzdCBzZXR1cCAKLVBBU1MgQ2FuIGdldCB0aGUgUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVy
IGNvbnN0cnVjdG9yIGluZGlyZWN0bHkgCi1QQVNTIENhbiBnZXQgdGhlIFJlYWRhYmxlU3RyZWFt
RGVmYXVsdENvbnRyb2xsZXIgY29uc3RydWN0b3IgaW5kaXJlY3RseSAKLVBBU1MgUmVhZGFibGVT
dHJlYW0ucHJvdG90eXBlLmNhbmNlbCBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrIAotUEFTUyBSZWFk
YWJsZVN0cmVhbS5wcm90b3R5cGUuZ2V0UmVhZGVyIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2sgCi1Q
QVNTIFJlYWRhYmxlU3RyZWFtLnByb3RvdHlwZS50ZWUgZW5mb3JjZXMgYSBicmFuZCBjaGVjayAK
LVBBU1MgUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2sg
b24gaXRzIGFyZ3VtZW50IAotUEFTUyBSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIucHJvdG90
eXBlLmNsb3NlZCBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrIAotUEFTUyBSZWFkYWJsZVN0cmVhbURl
ZmF1bHRSZWFkZXIucHJvdG90eXBlLmNhbmNlbCBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrIAotUEFT
UyBSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIucHJvdG90eXBlLnJlYWQgZW5mb3JjZXMgYSBi
cmFuZCBjaGVjayAKLVBBU1MgUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyLnByb3RvdHlwZS5y
ZWxlYXNlTG9jayBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrIAotUEFTUyBSZWFkYWJsZVN0cmVhbURl
ZmF1bHRDb250cm9sbGVyIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2sgb24gaXRzIGFyZ3VtZW50IAot
UEFTUyBSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyIGNhbid0IGJlIGdpdmVuIGEgZnVs
bHktY29uc3RydWN0ZWQgUmVhZGFibGVTdHJlYW0gCi1QQVNTIFJlYWRhYmxlU3RyZWFtRGVmYXVs
dENvbnRyb2xsZXIucHJvdG90eXBlLmNsb3NlIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2sgCi1QQVNT
IFJlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIucHJvdG90eXBlLmVucXVldWUgZW5mb3Jj
ZXMgYSBicmFuZCBjaGVjayAKLVBBU1MgUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5w
cm90b3R5cGUuZXJyb3IgZW5mb3JjZXMgYSBicmFuZCBjaGVjayAKLQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxl
LXN0cmVhbXMvYnJhbmQtY2hlY2tzLnNlcnZpY2V3b3JrZXIuaHR0cHMuaHRtbCBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJl
YW1zL2JyYW5kLWNoZWNrcy5zZXJ2aWNld29ya2VyLmh0dHBzLmh0bWwKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDI0MzljZGI5NWU5ODliN2U3NDI3NTYyY2U2MjdhZDE3YzgyY2I5NzUu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVh
bXMvYnJhbmQtY2hlY2tzLnNlcnZpY2V3b3JrZXIuaHR0cHMuaHRtbAorKysgL2Rldi9udWxsCkBA
IC0xLDEyICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgot
PHRpdGxlPmJyYW5kLWNoZWNrcy5qcyBzZXJ2aWNlIHdvcmtlciB3cmFwcGVyIGZpbGU8L3RpdGxl
PgotCi08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08
c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08
c2NyaXB0IHNyYz0iL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9yZXNvdXJjZXMvdGVz
dC1oZWxwZXJzLnN1Yi5qcyI+PC9zY3JpcHQ+Ci0KLTxzY3JpcHQ+Ci0ndXNlIHN0cmljdCc7Ci1z
ZXJ2aWNlX3dvcmtlcl90ZXN0KCdicmFuZC1jaGVja3MuanMnLCAnU2VydmljZSB3b3JrZXIgdGVz
dCBzZXR1cCcpOwotPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9icmFuZC1jaGVj
a3Muc2hhcmVkd29ya2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2JyYW5kLWNoZWNrcy5z
aGFyZWR3b3JrZXItZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
OWQ1ZDI1MDlkNzg0N2U4Y2Q2ZmU2NjA2YWE2MGNkZDMzYWE0NzRlLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2JyYW5kLWNoZWNrcy5z
aGFyZWR3b3JrZXItZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1D
T05TT0xFIE1FU1NBR0U6IFJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBTaGFy
ZWRXb3JrZXIKLQotSGFybmVzcyBFcnJvciAoRkFJTCksIG1lc3NhZ2UgPSBSZWZlcmVuY2VFcnJv
cjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogU2hhcmVkV29ya2VyCi0KLQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxl
LXN0cmVhbXMvYnJhbmQtY2hlY2tzLnNoYXJlZHdvcmtlci5odG1sIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvYnJh
bmQtY2hlY2tzLnNoYXJlZHdvcmtlci5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBjZmY3MmVjYTQ2MzQxZmRkNjY2M2VjMTM5ZDg3MWUxYjgxMzQ0YjIwLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2JyYW5kLWNoZWNr
cy5zaGFyZWR3b3JrZXIuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLTwhRE9D
VFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHRpdGxlPmJyYW5kLWNoZWNrcy5q
cyBzaGFyZWQgd29ya2VyIHdyYXBwZXIgZmlsZTwvdGl0bGU+Ci0KLTxzY3JpcHQgc3JjPSIvcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLQotPHNjcmlwdD4KLSd1c2Ugc3RyaWN0
JzsKLWZldGNoX3Rlc3RzX2Zyb21fd29ya2VyKG5ldyBTaGFyZWRXb3JrZXIoJ2JyYW5kLWNoZWNr
cy5qcycpKTsKLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvY2FuY2VsLmFueS1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9jYW5jZWwuYW55LWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi44M2ViZDkxMjhjOTQ5YmUwZThkZjViYjQxYjIxYTM2MTI3MzA3MWJiCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJl
YW1zL3JlYWRhYmxlLXN0cmVhbXMvY2FuY2VsLmFueS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwx
MiBAQAorCitQQVNTIFJlYWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlvbjogaW50ZWdyYXRpb24gdGVz
dCBvbiBhbiBpbmZpbml0ZSBzdHJlYW0gZGVyaXZlZCBmcm9tIGEgcmFuZG9tIHB1c2ggc291cmNl
IAorUEFTUyBSZWFkYWJsZVN0cmVhbSBjYW5jZWxsYXRpb246IGNhbmNlbChyZWFzb24pIHNob3Vs
ZCBwYXNzIHRocm91Z2ggdGhlIGdpdmVuIHJlYXNvbiB0byB0aGUgdW5kZXJseWluZyBzb3VyY2Ug
CitQQVNTIFJlYWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlvbjogY2FuY2VsKCkgb24gYSBsb2NrZWQg
c3RyZWFtIHNob3VsZCBmYWlsIGFuZCBub3QgY2FsbCB0aGUgdW5kZXJseWluZyBzb3VyY2UgY2Fu
Y2VsIAorUEFTUyBSZWFkYWJsZVN0cmVhbSBjYW5jZWxsYXRpb246IHNob3VsZCBmdWxmaWxsIHBy
b21pc2Ugd2hlbiBjYW5jZWwgY2FsbGJhY2sgd2VudCBmaW5lIAorUEFTUyBSZWFkYWJsZVN0cmVh
bSBjYW5jZWxsYXRpb246IHJldHVybmluZyBhIHZhbHVlIGZyb20gdGhlIHVuZGVybHlpbmcgc291
cmNlJ3MgY2FuY2VsIHNob3VsZCBub3QgYWZmZWN0IHRoZSBmdWxmaWxsbWVudCB2YWx1ZSBvZiB0
aGUgcHJvbWlzZSByZXR1cm5lZCBieSB0aGUgc3RyZWFtJ3MgY2FuY2VsIAorUEFTUyBSZWFkYWJs
ZVN0cmVhbSBjYW5jZWxsYXRpb246IHNob3VsZCByZWplY3QgcHJvbWlzZSB3aGVuIGNhbmNlbCBj
YWxsYmFjayByYWlzZXMgYW4gZXhjZXB0aW9uIAorUEFTUyBSZWFkYWJsZVN0cmVhbSBjYW5jZWxs
YXRpb246IGlmIHRoZSB1bmRlcmx5aW5nIHNvdXJjZSdzIGNhbmNlbCBtZXRob2QgcmV0dXJucyBh
IHByb21pc2UsIHRoZSBwcm9taXNlIHJldHVybmVkIGJ5IHRoZSBzdHJlYW0ncyBjYW5jZWwgc2hv
dWxkIGZ1bGZpbGwgd2hlbiB0aGF0IG9uZSBkb2VzICgxKSAKK1BBU1MgUmVhZGFibGVTdHJlYW0g
Y2FuY2VsbGF0aW9uOiBpZiB0aGUgdW5kZXJseWluZyBzb3VyY2UncyBjYW5jZWwgbWV0aG9kIHJl
dHVybnMgYSBwcm9taXNlLCB0aGUgcHJvbWlzZSByZXR1cm5lZCBieSB0aGUgc3RyZWFtJ3MgY2Fu
Y2VsIHNob3VsZCBmdWxmaWxsIHdoZW4gdGhhdCBvbmUgZG9lcyAoMikgCitQQVNTIFJlYWRhYmxl
U3RyZWFtIGNhbmNlbGxhdGlvbjogaWYgdGhlIHVuZGVybHlpbmcgc291cmNlJ3MgY2FuY2VsIG1l
dGhvZCByZXR1cm5zIGEgcHJvbWlzZSwgdGhlIHByb21pc2UgcmV0dXJuZWQgYnkgdGhlIHN0cmVh
bSdzIGNhbmNlbCBzaG91bGQgcmVqZWN0IHdoZW4gdGhhdCBvbmUgZG9lcyAKK1BBU1MgUmVhZGFi
bGVTdHJlYW0gY2FuY2VsbGF0aW9uOiBjYW5jZWxsaW5nIGJlZm9yZSBzdGFydCBmaW5pc2hlcyBz
aG91bGQgcHJldmVudCBwdWxsKCkgZnJvbSBiZWluZyBjYWxsZWQgCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJs
ZS1zdHJlYW1zL2NhbmNlbC5hbnkuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2NhbmNlbC5hbnkuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4yMzgyOTEzNTI4ZTY5M2IzYTVkNTZjNjYwYTQ1MDYwOTgwYjU0OGMzCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvY2FuY2VsLmFueS5odG1sCkBAIC0wLDAgKzEgQEAK
KzwhLS0gVGhpcyBmaWxlIGlzIHJlcXVpcmVkIGZvciBXZWJLaXQgdGVzdCBpbmZyYXN0cnVjdHVy
ZSB0byBydW4gdGhlIHRlbXBsYXRlZCB0ZXN0IC0tPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2NhbmNlbC5hbnkuanMgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9j
YW5jZWwuYW55LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMzNzIzYTQ2NWM5OTg4YjcwOTVmMjBiNDE5YmUwODY4
NmRlOTk4N2UKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9jYW5jZWwuYW55LmpzCkBA
IC0wLDAgKzEsMjM2IEBACisvLyBNRVRBOiBnbG9iYWw9d2luZG93LHdvcmtlcixqc3NoZWxsCisv
LyBNRVRBOiBzY3JpcHQ9Li4vcmVzb3VyY2VzL3Rlc3QtdXRpbHMuanMKKy8vIE1FVEE6IHNjcmlw
dD0uLi9yZXNvdXJjZXMvcnMtdXRpbHMuanMKKyd1c2Ugc3RyaWN0JzsKKworcHJvbWlzZV90ZXN0
KHQgPT4geworCisgIGNvbnN0IHJhbmRvbVNvdXJjZSA9IG5ldyBSYW5kb21QdXNoU291cmNlKCk7
CisKKyAgbGV0IGNhbmNlbGxhdGlvbkZpbmlzaGVkID0gZmFsc2U7CisgIGNvbnN0IHJzID0gbmV3
IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICByYW5kb21Tb3VyY2Uub25k
YXRhID0gYy5lbnF1ZXVlLmJpbmQoYyk7CisgICAgICByYW5kb21Tb3VyY2Uub25lbmQgPSBjLmNs
b3NlLmJpbmQoYyk7CisgICAgICByYW5kb21Tb3VyY2Uub25lcnJvciA9IGMuZXJyb3IuYmluZChj
KTsKKyAgICB9LAorCisgICAgcHVsbCgpIHsKKyAgICAgIHJhbmRvbVNvdXJjZS5yZWFkU3RhcnQo
KTsKKyAgICB9LAorCisgICAgY2FuY2VsKCkgeworICAgICAgcmFuZG9tU291cmNlLnJlYWRTdG9w
KCk7CisKKyAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKKyAgICAgICAgdC5z
dGVwX3RpbWVvdXQoKCkgPT4geworICAgICAgICAgIGNhbmNlbGxhdGlvbkZpbmlzaGVkID0gdHJ1
ZTsKKyAgICAgICAgICByZXNvbHZlKCk7CisgICAgICAgIH0sIDEpOworICAgICAgfSk7CisgICAg
fQorICB9KTsKKworICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKKworICAvLyBXZSBj
YWxsIGRlbGF5IG11bHRpcGxlIHRpbWVzIHRvIGF2b2lkIGNhbmNlbGxpbmcgdG9vIGVhcmx5IGZv
ciB0aGUKKyAgLy8gc291cmNlIHRvIGVucXVldWUgYXQgbGVhc3Qgb25lIGNodW5rLgorICBjb25z
dCBjYW5jZWwgPSBkZWxheSg1KS50aGVuKCgpID0+IGRlbGF5KDUpKS50aGVuKCgpID0+IGRlbGF5
KDUpKS50aGVuKCgpID0+IHsKKyAgICBjb25zdCBjYW5jZWxQcm9taXNlID0gcmVhZGVyLmNhbmNl
bCgpOworICAgIGFzc2VydF9mYWxzZShjYW5jZWxsYXRpb25GaW5pc2hlZCwgJ2NhbmNlbGxhdGlv
biBpbiBzb3VyY2Ugc2hvdWxkIGhhcHBlbiBsYXRlcicpOworICAgIHJldHVybiBjYW5jZWxQcm9t
aXNlOworICB9KTsKKworICByZXR1cm4gcmVhZGFibGVTdHJlYW1Ub0FycmF5KHJzLCByZWFkZXIp
LnRoZW4oY2h1bmtzID0+IHsKKyAgICBhc3NlcnRfZ3JlYXRlcl90aGFuKGNodW5rcy5sZW5ndGgs
IDAsICdhdCBsZWFzdCBvbmUgY2h1bmsgc2hvdWxkIGJlIHJlYWQnKTsKKyAgICBmb3IgKGxldCBp
ID0gMDsgaSA8IGNodW5rcy5sZW5ndGg7IGkrKykgeworICAgICAgYXNzZXJ0X2VxdWFscyhjaHVu
a3NbaV0ubGVuZ3RoLCAxMjgsICdjaHVuayAnICsgaSArICcgc2hvdWxkIGhhdmUgMTI4IGJ5dGVz
Jyk7CisgICAgfQorICAgIHJldHVybiBjYW5jZWw7CisgIH0pLnRoZW4oKCkgPT4geworICAgIGFz
c2VydF90cnVlKGNhbmNlbGxhdGlvbkZpbmlzaGVkLCAnaXQgcmV0dXJucyBhIHByb21pc2UgdGhh
dCBpcyBmdWxmaWxsZWQgd2hlbiB0aGUgY2FuY2VsbGF0aW9uIGZpbmlzaGVzJyk7CisgIH0pOwor
Cit9LCAnUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiBpbnRlZ3JhdGlvbiB0ZXN0IG9uIGFu
IGluZmluaXRlIHN0cmVhbSBkZXJpdmVkIGZyb20gYSByYW5kb20gcHVzaCBzb3VyY2UnKTsKKwor
dGVzdCgoKSA9PiB7CisKKyAgbGV0IHJlY29yZGVkUmVhc29uOworICBjb25zdCBycyA9IG5ldyBS
ZWFkYWJsZVN0cmVhbSh7CisgICAgY2FuY2VsKHJlYXNvbikgeworICAgICAgcmVjb3JkZWRSZWFz
b24gPSByZWFzb247CisgICAgfQorICB9KTsKKworICBjb25zdCBwYXNzZWRSZWFzb24gPSBuZXcg
RXJyb3IoJ1NvcnJ5LCBpdCBqdXN0IHdhc25cJ3QgbWVhbnQgdG8gYmUuJyk7CisgIHJzLmNhbmNl
bChwYXNzZWRSZWFzb24pOworCisgIGFzc2VydF9lcXVhbHMocmVjb3JkZWRSZWFzb24sIHBhc3Nl
ZFJlYXNvbiwKKyAgICAndGhlIGVycm9yIHBhc3NlZCB0byB0aGUgdW5kZXJseWluZyBzb3VyY2Vc
J3MgY2FuY2VsIG1ldGhvZCBzaG91bGQgZXF1YWwgdGhlIG9uZSBwYXNzZWQgdG8gdGhlIHN0cmVh
bVwncyBjYW5jZWwnKTsKKworfSwgJ1JlYWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlvbjogY2FuY2Vs
KHJlYXNvbikgc2hvdWxkIHBhc3MgdGhyb3VnaCB0aGUgZ2l2ZW4gcmVhc29uIHRvIHRoZSB1bmRl
cmx5aW5nIHNvdXJjZScpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworCisgIGNvbnN0IHJzID0g
bmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjLmVucXVldWUoJ2En
KTsKKyAgICAgIGMuY2xvc2UoKTsKKyAgICB9LAorICAgIGNhbmNlbCgpIHsKKyAgICAgIGFzc2Vy
dF91bnJlYWNoZWQoJ3VuZGVybHlpbmcgc291cmNlIGNhbmNlbCgpIHNob3VsZCBub3QgaGF2ZSBi
ZWVuIGNhbGxlZCcpOworICAgIH0KKyAgfSk7CisKKyAgY29uc3QgcmVhZGVyID0gcnMuZ2V0UmVh
ZGVyKCk7CisKKyAgcmV0dXJuIHJzLmNhbmNlbCgpLnRoZW4oKCkgPT4geworICAgIGFzc2VydF91
bnJlYWNoZWQoJ2NhbmNlbCgpIHNob3VsZCBiZSByZWplY3RlZCcpOworICB9LCBlID0+IHsKKyAg
ICBhc3NlcnRfZXF1YWxzKGUubmFtZSwgJ1R5cGVFcnJvcicsICdjYW5jZWwoKSBzaG91bGQgYmUg
cmVqZWN0ZWQgd2l0aCBhIFR5cGVFcnJvcicpOworICB9KS50aGVuKCgpID0+IHsKKyAgICByZXR1
cm4gcmVhZGVyLnJlYWQoKTsKKyAgfSkudGhlbihyZXN1bHQgPT4geworICAgIGFzc2VydF9vYmpl
Y3RfZXF1YWxzKHJlc3VsdCwgeyB2YWx1ZTogJ2EnLCBkb25lOiBmYWxzZSB9LCAncmVhZCgpIHNo
b3VsZCBzdGlsbCB3b3JrIGFmdGVyIHRoZSBhdHRlbXB0ZWQgY2FuY2VsJyk7CisgICAgcmV0dXJu
IHJlYWRlci5jbG9zZWQ7CisgIH0pOworCit9LCAnUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9u
OiBjYW5jZWwoKSBvbiBhIGxvY2tlZCBzdHJlYW0gc2hvdWxkIGZhaWwgYW5kIG5vdCBjYWxsIHRo
ZSB1bmRlcmx5aW5nIHNvdXJjZSBjYW5jZWwnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKwor
ICBsZXQgY2FuY2VsUmVjZWl2ZWQgPSBmYWxzZTsKKyAgY29uc3QgY2FuY2VsUmVhc29uID0gbmV3
IEVycm9yKCdJIGFtIHRpcmVkIG9mIHRoaXMgc3RyZWFtLCBJIHByZWZlciB0byBjYW5jZWwgaXQn
KTsKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIGNhbmNlbChyZWFzb24p
IHsKKyAgICAgIGNhbmNlbFJlY2VpdmVkID0gdHJ1ZTsKKyAgICAgIGFzc2VydF9lcXVhbHMocmVh
c29uLCBjYW5jZWxSZWFzb24sICdjYW5jZWxsYXRpb24gcmVhc29uIGdpdmVuIHRvIHRoZSB1bmRl
cmx5aW5nIHNvdXJjZSBzaG91bGQgYmUgZXF1YWwgdG8gdGhlIG9uZSBwYXNzZWQnKTsKKyAgICB9
CisgIH0pOworCisgIHJldHVybiBycy5jYW5jZWwoY2FuY2VsUmVhc29uKS50aGVuKCgpID0+IHsK
KyAgICBhc3NlcnRfdHJ1ZShjYW5jZWxSZWNlaXZlZCk7CisgIH0pOworCit9LCAnUmVhZGFibGVT
dHJlYW0gY2FuY2VsbGF0aW9uOiBzaG91bGQgZnVsZmlsbCBwcm9taXNlIHdoZW4gY2FuY2VsIGNh
bGxiYWNrIHdlbnQgZmluZScpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworCisgIGNvbnN0IHJz
ID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBjYW5jZWwoKSB7CisgICAgICByZXR1cm4gJ0hl
bGxvJzsKKyAgICB9CisgIH0pOworCisgIHJldHVybiBycy5jYW5jZWwoKS50aGVuKHYgPT4gewor
ICAgIGFzc2VydF9lcXVhbHModiwgdW5kZWZpbmVkLCAnY2FuY2VsKCkgcmV0dXJuIHZhbHVlIHNo
b3VsZCBiZSBmdWxmaWxsZWQgd2l0aCB1bmRlZmluZWQnKTsKKyAgfSk7CisKK30sICdSZWFkYWJs
ZVN0cmVhbSBjYW5jZWxsYXRpb246IHJldHVybmluZyBhIHZhbHVlIGZyb20gdGhlIHVuZGVybHlp
bmcgc291cmNlXCdzIGNhbmNlbCBzaG91bGQgbm90IGFmZmVjdCB0aGUgZnVsZmlsbG1lbnQgdmFs
dWUgb2YgdGhlIHByb21pc2UgcmV0dXJuZWQgYnkgdGhlIHN0cmVhbVwncyBjYW5jZWwnKTsKKwor
cHJvbWlzZV90ZXN0KCgpID0+IHsKKworICBjb25zdCB0aHJvd25FcnJvciA9IG5ldyBFcnJvcign
dGVzdCcpOworICBsZXQgY2FuY2VsQ2FsbGVkID0gZmFsc2U7CisKKyAgY29uc3QgcnMgPSBuZXcg
UmVhZGFibGVTdHJlYW0oeworICAgIGNhbmNlbCgpIHsKKyAgICAgIGNhbmNlbENhbGxlZCA9IHRy
dWU7CisgICAgICB0aHJvdyB0aHJvd25FcnJvcjsKKyAgICB9CisgIH0pOworCisgIHJldHVybiBy
cy5jYW5jZWwoJ3Rlc3QnKS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfdW5yZWFjaGVkKCdjYW5j
ZWwgc2hvdWxkIHJlamVjdCcpOworICB9LCBlID0+IHsKKyAgICBhc3NlcnRfdHJ1ZShjYW5jZWxD
YWxsZWQpOworICAgIGFzc2VydF9lcXVhbHMoZSwgdGhyb3duRXJyb3IpOworICB9KTsKKworfSwg
J1JlYWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlvbjogc2hvdWxkIHJlamVjdCBwcm9taXNlIHdoZW4g
Y2FuY2VsIGNhbGxiYWNrIHJhaXNlcyBhbiBleGNlcHRpb24nKTsKKworcHJvbWlzZV90ZXN0KCgp
ID0+IHsKKworICBjb25zdCBjYW5jZWxSZWFzb24gPSBuZXcgRXJyb3IoJ3Rlc3QnKTsKKworICBj
b25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgY2FuY2VsKGVycm9yKSB7CisgICAg
ICBhc3NlcnRfZXF1YWxzKGVycm9yLCBjYW5jZWxSZWFzb24pOworICAgICAgcmV0dXJuIGRlbGF5
KDEpOworICAgIH0KKyAgfSk7CisKKyAgcmV0dXJuIHJzLmNhbmNlbChjYW5jZWxSZWFzb24pOwor
Cit9LCAnUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiBpZiB0aGUgdW5kZXJseWluZyBzb3Vy
Y2VcJ3MgY2FuY2VsIG1ldGhvZCByZXR1cm5zIGEgcHJvbWlzZSwgdGhlIHByb21pc2UgcmV0dXJu
ZWQgYnkgdGhlIHN0cmVhbVwncyBjYW5jZWwgc2hvdWxkIGZ1bGZpbGwgd2hlbiB0aGF0IG9uZSBk
b2VzICgxKScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisKKyAgbGV0IHJlc29sdmVTb3VyY2VD
YW5jZWxQcm9taXNlOworICBsZXQgc291cmNlQ2FuY2VsUHJvbWlzZUhhc0Z1bGZpbGxlZCA9IGZh
bHNlOworCisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBjYW5jZWwoKSB7
CisgICAgICBjb25zdCBzb3VyY2VDYW5jZWxQcm9taXNlID0gbmV3IFByb21pc2UocmVzb2x2ZSA9
PiByZXNvbHZlU291cmNlQ2FuY2VsUHJvbWlzZSA9IHJlc29sdmUpOworCisgICAgICBzb3VyY2VD
YW5jZWxQcm9taXNlLnRoZW4oKCkgPT4geworICAgICAgICBzb3VyY2VDYW5jZWxQcm9taXNlSGFz
RnVsZmlsbGVkID0gdHJ1ZTsKKyAgICAgIH0pOworCisgICAgICByZXR1cm4gc291cmNlQ2FuY2Vs
UHJvbWlzZTsKKyAgICB9CisgIH0pOworCisgIHQuc3RlcF90aW1lb3V0KCgpID0+IHJlc29sdmVT
b3VyY2VDYW5jZWxQcm9taXNlKCdIZWxsbycpLCAxKTsKKworICByZXR1cm4gcnMuY2FuY2VsKCku
dGhlbih2YWx1ZSA9PiB7CisgICAgYXNzZXJ0X3RydWUoc291cmNlQ2FuY2VsUHJvbWlzZUhhc0Z1
bGZpbGxlZCwgJ2NhbmNlbCgpIHJldHVybiB2YWx1ZSBzaG91bGQgYmUgZnVsZmlsbGVkIG9ubHkg
YWZ0ZXIgdGhlIHByb21pc2UgcmV0dXJuZWQgYnkgdGhlIHVuZGVybHlpbmcgc291cmNlXCdzIGNh
bmNlbCcpOworICAgIGFzc2VydF9lcXVhbHModmFsdWUsIHVuZGVmaW5lZCwgJ2NhbmNlbCgpIHJl
dHVybiB2YWx1ZSBzaG91bGQgYmUgZnVsZmlsbGVkIHdpdGggdW5kZWZpbmVkJyk7CisgIH0pOwor
Cit9LCAnUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiBpZiB0aGUgdW5kZXJseWluZyBzb3Vy
Y2VcJ3MgY2FuY2VsIG1ldGhvZCByZXR1cm5zIGEgcHJvbWlzZSwgdGhlIHByb21pc2UgcmV0dXJu
ZWQgYnkgdGhlIHN0cmVhbVwncyBjYW5jZWwgc2hvdWxkIGZ1bGZpbGwgd2hlbiB0aGF0IG9uZSBk
b2VzICgyKScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisKKyAgbGV0IHJlamVjdFNvdXJjZUNh
bmNlbFByb21pc2U7CisgIGxldCBzb3VyY2VDYW5jZWxQcm9taXNlSGFzUmVqZWN0ZWQgPSBmYWxz
ZTsKKworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgY2FuY2VsKCkgewor
ICAgICAgY29uc3Qgc291cmNlQ2FuY2VsUHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCBy
ZWplY3QpID0+IHJlamVjdFNvdXJjZUNhbmNlbFByb21pc2UgPSByZWplY3QpOworCisgICAgICBz
b3VyY2VDYW5jZWxQcm9taXNlLmNhdGNoKCgpID0+IHsKKyAgICAgICAgc291cmNlQ2FuY2VsUHJv
bWlzZUhhc1JlamVjdGVkID0gdHJ1ZTsKKyAgICAgIH0pOworCisgICAgICByZXR1cm4gc291cmNl
Q2FuY2VsUHJvbWlzZTsKKyAgICB9CisgIH0pOworCisgIGNvbnN0IGVycm9ySW5DYW5jZWwgPSBu
ZXcgRXJyb3IoJ1NvcnJ5LCBpdCBqdXN0IHdhc25cJ3QgbWVhbnQgdG8gYmUuJyk7CisKKyAgdC5z
dGVwX3RpbWVvdXQoKCkgPT4gcmVqZWN0U291cmNlQ2FuY2VsUHJvbWlzZShlcnJvckluQ2FuY2Vs
KSwgMSk7CisKKyAgcmV0dXJuIHJzLmNhbmNlbCgpLnRoZW4oKCkgPT4geworICAgIGFzc2VydF91
bnJlYWNoZWQoJ2NhbmNlbCgpIHJldHVybiB2YWx1ZSBzaG91bGQgYmUgcmVqZWN0ZWQnKTsKKyAg
fSwgciA9PiB7CisgICAgYXNzZXJ0X3RydWUoc291cmNlQ2FuY2VsUHJvbWlzZUhhc1JlamVjdGVk
LCAnY2FuY2VsKCkgcmV0dXJuIHZhbHVlIHNob3VsZCBiZSByZWplY3RlZCBvbmx5IGFmdGVyIHRo
ZSBwcm9taXNlIHJldHVybmVkIGJ5IHRoZSB1bmRlcmx5aW5nIHNvdXJjZVwncyBjYW5jZWwnKTsK
KyAgICBhc3NlcnRfZXF1YWxzKHIsIGVycm9ySW5DYW5jZWwsICdjYW5jZWwoKSByZXR1cm4gdmFs
dWUgc2hvdWxkIGJlIHJlamVjdGVkIHdpdGggdGhlIHVuZGVybHlpbmcgc291cmNlXCdzIHJlamVj
dGlvbiByZWFzb24nKTsKKyAgfSk7CisKK30sICdSZWFkYWJsZVN0cmVhbSBjYW5jZWxsYXRpb246
IGlmIHRoZSB1bmRlcmx5aW5nIHNvdXJjZVwncyBjYW5jZWwgbWV0aG9kIHJldHVybnMgYSBwcm9t
aXNlLCB0aGUgcHJvbWlzZSByZXR1cm5lZCBieSB0aGUgc3RyZWFtXCdzIGNhbmNlbCBzaG91bGQg
cmVqZWN0IHdoZW4gdGhhdCBvbmUgZG9lcycpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworCisg
IGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydCgpIHsKKyAgICAgIHJl
dHVybiBuZXcgUHJvbWlzZSgoKSA9PiB7fSk7CisgICAgfSwKKyAgICBwdWxsKCkgeworICAgICAg
YXNzZXJ0X3VucmVhY2hlZCgncHVsbCBzaG91bGQgbm90IGhhdmUgYmVlbiBjYWxsZWQnKTsKKyAg
ICB9CisgIH0pOworCisgIHJldHVybiBQcm9taXNlLmFsbChbcnMuY2FuY2VsKCksIHJzLmdldFJl
YWRlcigpLmNsb3NlZF0pOworCit9LCAnUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiBjYW5j
ZWxsaW5nIGJlZm9yZSBzdGFydCBmaW5pc2hlcyBzaG91bGQgcHJldmVudCBwdWxsKCkgZnJvbSBi
ZWluZyBjYWxsZWQnKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2NhbmNlbC5hbnkud29ya2Vy
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2NhbmNlbC5hbnkud29ya2VyLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi44M2ViZDkxMjhjOTQ5YmUwZThkZjViYjQxYjIxYTM2MTI3MzA3MWJiCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvY2FuY2VsLmFueS53b3JrZXItZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMTIgQEAKKworUEFTUyBSZWFkYWJsZVN0cmVhbSBjYW5jZWxsYXRpb246
IGludGVncmF0aW9uIHRlc3Qgb24gYW4gaW5maW5pdGUgc3RyZWFtIGRlcml2ZWQgZnJvbSBhIHJh
bmRvbSBwdXNoIHNvdXJjZSAKK1BBU1MgUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiBjYW5j
ZWwocmVhc29uKSBzaG91bGQgcGFzcyB0aHJvdWdoIHRoZSBnaXZlbiByZWFzb24gdG8gdGhlIHVu
ZGVybHlpbmcgc291cmNlIAorUEFTUyBSZWFkYWJsZVN0cmVhbSBjYW5jZWxsYXRpb246IGNhbmNl
bCgpIG9uIGEgbG9ja2VkIHN0cmVhbSBzaG91bGQgZmFpbCBhbmQgbm90IGNhbGwgdGhlIHVuZGVy
bHlpbmcgc291cmNlIGNhbmNlbCAKK1BBU1MgUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiBz
aG91bGQgZnVsZmlsbCBwcm9taXNlIHdoZW4gY2FuY2VsIGNhbGxiYWNrIHdlbnQgZmluZSAKK1BB
U1MgUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiByZXR1cm5pbmcgYSB2YWx1ZSBmcm9tIHRo
ZSB1bmRlcmx5aW5nIHNvdXJjZSdzIGNhbmNlbCBzaG91bGQgbm90IGFmZmVjdCB0aGUgZnVsZmls
bG1lbnQgdmFsdWUgb2YgdGhlIHByb21pc2UgcmV0dXJuZWQgYnkgdGhlIHN0cmVhbSdzIGNhbmNl
bCAKK1BBU1MgUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiBzaG91bGQgcmVqZWN0IHByb21p
c2Ugd2hlbiBjYW5jZWwgY2FsbGJhY2sgcmFpc2VzIGFuIGV4Y2VwdGlvbiAKK1BBU1MgUmVhZGFi
bGVTdHJlYW0gY2FuY2VsbGF0aW9uOiBpZiB0aGUgdW5kZXJseWluZyBzb3VyY2UncyBjYW5jZWwg
bWV0aG9kIHJldHVybnMgYSBwcm9taXNlLCB0aGUgcHJvbWlzZSByZXR1cm5lZCBieSB0aGUgc3Ry
ZWFtJ3MgY2FuY2VsIHNob3VsZCBmdWxmaWxsIHdoZW4gdGhhdCBvbmUgZG9lcyAoMSkgCitQQVNT
IFJlYWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlvbjogaWYgdGhlIHVuZGVybHlpbmcgc291cmNlJ3Mg
Y2FuY2VsIG1ldGhvZCByZXR1cm5zIGEgcHJvbWlzZSwgdGhlIHByb21pc2UgcmV0dXJuZWQgYnkg
dGhlIHN0cmVhbSdzIGNhbmNlbCBzaG91bGQgZnVsZmlsbCB3aGVuIHRoYXQgb25lIGRvZXMgKDIp
IAorUEFTUyBSZWFkYWJsZVN0cmVhbSBjYW5jZWxsYXRpb246IGlmIHRoZSB1bmRlcmx5aW5nIHNv
dXJjZSdzIGNhbmNlbCBtZXRob2QgcmV0dXJucyBhIHByb21pc2UsIHRoZSBwcm9taXNlIHJldHVy
bmVkIGJ5IHRoZSBzdHJlYW0ncyBjYW5jZWwgc2hvdWxkIHJlamVjdCB3aGVuIHRoYXQgb25lIGRv
ZXMgCitQQVNTIFJlYWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlvbjogY2FuY2VsbGluZyBiZWZvcmUg
c3RhcnQgZmluaXNoZXMgc2hvdWxkIHByZXZlbnQgcHVsbCgpIGZyb20gYmVpbmcgY2FsbGVkIAor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9jYW5jZWwuYW55Lndvcmtlci5odG1sIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0
cmVhbXMvY2FuY2VsLmFueS53b3JrZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMzgyOTEzNTI4ZTY5M2Iz
YTVkNTZjNjYwYTQ1MDYwOTgwYjU0OGMzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMv
Y2FuY2VsLmFueS53b3JrZXIuaHRtbApAQCAtMCwwICsxIEBACis8IS0tIFRoaXMgZmlsZSBpcyBy
ZXF1aXJlZCBmb3IgV2ViS2l0IHRlc3QgaW5mcmFzdHJ1Y3R1cmUgdG8gcnVuIHRoZSB0ZW1wbGF0
ZWQgdGVzdCAtLT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUt
c3RyZWFtcy9jYW5jZWwuZGVkaWNhdGVkd29ya2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1z
L2NhbmNlbC5kZWRpY2F0ZWR3b3JrZXItZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA4M2ViZDkxMjhjOTQ5YmUwZThkZjViYjQxYjIxYTM2MTI3MzA3MWJiLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2Nh
bmNlbC5kZWRpY2F0ZWR3b3JrZXItZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMTIg
KzAsMCBAQAotCi1QQVNTIFJlYWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlvbjogaW50ZWdyYXRpb24g
dGVzdCBvbiBhbiBpbmZpbml0ZSBzdHJlYW0gZGVyaXZlZCBmcm9tIGEgcmFuZG9tIHB1c2ggc291
cmNlIAotUEFTUyBSZWFkYWJsZVN0cmVhbSBjYW5jZWxsYXRpb246IGNhbmNlbChyZWFzb24pIHNo
b3VsZCBwYXNzIHRocm91Z2ggdGhlIGdpdmVuIHJlYXNvbiB0byB0aGUgdW5kZXJseWluZyBzb3Vy
Y2UgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlvbjogY2FuY2VsKCkgb24gYSBsb2Nr
ZWQgc3RyZWFtIHNob3VsZCBmYWlsIGFuZCBub3QgY2FsbCB0aGUgdW5kZXJseWluZyBzb3VyY2Ug
Y2FuY2VsIAotUEFTUyBSZWFkYWJsZVN0cmVhbSBjYW5jZWxsYXRpb246IHNob3VsZCBmdWxmaWxs
IHByb21pc2Ugd2hlbiBjYW5jZWwgY2FsbGJhY2sgd2VudCBmaW5lIAotUEFTUyBSZWFkYWJsZVN0
cmVhbSBjYW5jZWxsYXRpb246IHJldHVybmluZyBhIHZhbHVlIGZyb20gdGhlIHVuZGVybHlpbmcg
c291cmNlJ3MgY2FuY2VsIHNob3VsZCBub3QgYWZmZWN0IHRoZSBmdWxmaWxsbWVudCB2YWx1ZSBv
ZiB0aGUgcHJvbWlzZSByZXR1cm5lZCBieSB0aGUgc3RyZWFtJ3MgY2FuY2VsIAotUEFTUyBSZWFk
YWJsZVN0cmVhbSBjYW5jZWxsYXRpb246IHNob3VsZCByZWplY3QgcHJvbWlzZSB3aGVuIGNhbmNl
bCBjYWxsYmFjayByYWlzZXMgYW4gZXhjZXB0aW9uIAotUEFTUyBSZWFkYWJsZVN0cmVhbSBjYW5j
ZWxsYXRpb246IGlmIHRoZSB1bmRlcmx5aW5nIHNvdXJjZSdzIGNhbmNlbCBtZXRob2QgcmV0dXJu
cyBhIHByb21pc2UsIHRoZSBwcm9taXNlIHJldHVybmVkIGJ5IHRoZSBzdHJlYW0ncyBjYW5jZWwg
c2hvdWxkIGZ1bGZpbGwgd2hlbiB0aGF0IG9uZSBkb2VzICgxKSAKLVBBU1MgUmVhZGFibGVTdHJl
YW0gY2FuY2VsbGF0aW9uOiBpZiB0aGUgdW5kZXJseWluZyBzb3VyY2UncyBjYW5jZWwgbWV0aG9k
IHJldHVybnMgYSBwcm9taXNlLCB0aGUgcHJvbWlzZSByZXR1cm5lZCBieSB0aGUgc3RyZWFtJ3Mg
Y2FuY2VsIHNob3VsZCBmdWxmaWxsIHdoZW4gdGhhdCBvbmUgZG9lcyAoMikgCi1QQVNTIFJlYWRh
YmxlU3RyZWFtIGNhbmNlbGxhdGlvbjogaWYgdGhlIHVuZGVybHlpbmcgc291cmNlJ3MgY2FuY2Vs
IG1ldGhvZCByZXR1cm5zIGEgcHJvbWlzZSwgdGhlIHByb21pc2UgcmV0dXJuZWQgYnkgdGhlIHN0
cmVhbSdzIGNhbmNlbCBzaG91bGQgcmVqZWN0IHdoZW4gdGhhdCBvbmUgZG9lcyAKLVBBU1MgUmVh
ZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiBjYW5jZWxsaW5nIGJlZm9yZSBzdGFydCBmaW5pc2hl
cyBzaG91bGQgcHJldmVudCBwdWxsKCkgZnJvbSBiZWluZyBjYWxsZWQgCi0KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFk
YWJsZS1zdHJlYW1zL2NhbmNlbC5kZWRpY2F0ZWR3b3JrZXIuaHRtbCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2Nh
bmNlbC5kZWRpY2F0ZWR3b3JrZXIuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
YjNkMGI1MzQ1YWJlY2IyZTQ2Yzg1YzM2YjMzYmJhZDJiNzkyN2Y4Mi4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9jYW5jZWwuZGVkaWNh
dGVkd29ya2VyLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi08IURPQ1RZUEUg
aHRtbD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTx0aXRsZT5jYW5jZWwuanMgZGVkaWNhdGVk
IHdvcmtlciB3cmFwcGVyIGZpbGU8L3RpdGxlPgotCi08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90
ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFy
bmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci0KLTxzY3JpcHQ+Ci0ndXNlIHN0cmljdCc7Ci1mZXRj
aF90ZXN0c19mcm9tX3dvcmtlcihuZXcgV29ya2VyKCdjYW5jZWwuanMnKSk7Ci08L3NjcmlwdD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2NhbmNlbC5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvY2FuY2Vs
Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI1MGE0OWVhZGQyYTE4MjY4M2Q5
MWYzYzU5NDZhNzNjNjNjODZlZGMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
dHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvY2FuY2VsLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwx
MSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTx0aXRs
ZT5jYW5jZWwuanMgYnJvd3NlciBjb250ZXh0IHdyYXBwZXIgZmlsZTwvdGl0bGU+Ci0KLTxzY3Jp
cHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3Jj
PSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLQotPHNjcmlwdCBz
cmM9Ii4uL3Jlc291cmNlcy90ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIu
Li9yZXNvdXJjZXMvcnMtdXRpbHMuanMiPjwvc2NyaXB0PgotCi08c2NyaXB0IHNyYz0iY2FuY2Vs
LmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2NhbmNlbC5qcyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1z
dHJlYW1zL2NhbmNlbC5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjhmN2VlYzc3
Y2M0MTI0ZmM3MDJjYjUwZDA2NWYyZWM3ZWIxZDYwZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9jYW5jZWwuanMKKysrIC9kZXYvbnVs
bApAQCAtMSwyNDEgKzAsMCBAQAotJ3VzZSBzdHJpY3QnOwotCi1pZiAoc2VsZi5pbXBvcnRTY3Jp
cHRzKSB7Ci0gIHNlbGYuaW1wb3J0U2NyaXB0cygnLi4vcmVzb3VyY2VzL3Rlc3QtdXRpbHMuanMn
KTsKLSAgc2VsZi5pbXBvcnRTY3JpcHRzKCcuLi9yZXNvdXJjZXMvcnMtdXRpbHMuanMnKTsKLSAg
c2VsZi5pbXBvcnRTY3JpcHRzKCcvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzJyk7Ci19Ci0KLXBy
b21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgY29uc3QgcmFuZG9tU291cmNlID0gbmV3IFJhbmRvbVB1
c2hTb3VyY2UoKTsKLQotICBsZXQgY2FuY2VsbGF0aW9uRmluaXNoZWQgPSBmYWxzZTsKLSAgY29u
c3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIHJhbmRv
bVNvdXJjZS5vbmRhdGEgPSBjLmVucXVldWUuYmluZChjKTsKLSAgICAgIHJhbmRvbVNvdXJjZS5v
bmVuZCA9IGMuY2xvc2UuYmluZChjKTsKLSAgICAgIHJhbmRvbVNvdXJjZS5vbmVycm9yID0gYy5l
cnJvci5iaW5kKGMpOwotICAgIH0sCi0KLSAgICBwdWxsKCkgewotICAgICAgcmFuZG9tU291cmNl
LnJlYWRTdGFydCgpOwotICAgIH0sCi0KLSAgICBjYW5jZWwoKSB7Ci0gICAgICByYW5kb21Tb3Vy
Y2UucmVhZFN0b3AoKTsKLQotICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4gewot
ICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsKLSAgICAgICAgICBjYW5jZWxsYXRpb25GaW5pc2hl
ZCA9IHRydWU7Ci0gICAgICAgICAgcmVzb2x2ZSgpOwotICAgICAgICB9LCAxKTsKLSAgICAgIH0p
OwotICAgIH0KLSAgfSk7Ci0KLSAgY29uc3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7Ci0KLSAg
Ly8gV2UgY2FsbCBkZWxheSBtdWx0aXBsZSB0aW1lcyB0byBhdm9pZCBjYW5jZWxsaW5nIHRvbyBl
YXJseSBmb3IgdGhlCi0gIC8vIHNvdXJjZSB0byBlbnF1ZXVlIGF0IGxlYXN0IG9uZSBjaHVuay4K
LSAgY29uc3QgY2FuY2VsID0gZGVsYXkoNSkudGhlbigoKSA9PiBkZWxheSg1KSkudGhlbigoKSA9
PiBkZWxheSg1KSkudGhlbigoKSA9PiB7Ci0gICAgY29uc3QgY2FuY2VsUHJvbWlzZSA9IHJlYWRl
ci5jYW5jZWwoKTsKLSAgICBhc3NlcnRfZmFsc2UoY2FuY2VsbGF0aW9uRmluaXNoZWQsICdjYW5j
ZWxsYXRpb24gaW4gc291cmNlIHNob3VsZCBoYXBwZW4gbGF0ZXInKTsKLSAgICByZXR1cm4gY2Fu
Y2VsUHJvbWlzZTsKLSAgfSk7Ci0KLSAgcmV0dXJuIHJlYWRhYmxlU3RyZWFtVG9BcnJheShycywg
cmVhZGVyKS50aGVuKGNodW5rcyA9PiB7Ci0gICAgYXNzZXJ0X2dyZWF0ZXJfdGhhbihjaHVua3Mu
bGVuZ3RoLCAwLCAnYXQgbGVhc3Qgb25lIGNodW5rIHNob3VsZCBiZSByZWFkJyk7Ci0gICAgZm9y
IChsZXQgaSA9IDA7IGkgPCBjaHVua3MubGVuZ3RoOyBpKyspIHsKLSAgICAgIGFzc2VydF9lcXVh
bHMoY2h1bmtzW2ldLmxlbmd0aCwgMTI4LCAnY2h1bmsgJyArIGkgKyAnIHNob3VsZCBoYXZlIDEy
OCBieXRlcycpOwotICAgIH0KLSAgICByZXR1cm4gY2FuY2VsOwotICB9KS50aGVuKCgpID0+IHsK
LSAgICBhc3NlcnRfdHJ1ZShjYW5jZWxsYXRpb25GaW5pc2hlZCwgJ2l0IHJldHVybnMgYSBwcm9t
aXNlIHRoYXQgaXMgZnVsZmlsbGVkIHdoZW4gdGhlIGNhbmNlbGxhdGlvbiBmaW5pc2hlcycpOwot
ICB9KTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlvbjogaW50ZWdyYXRpb24gdGVz
dCBvbiBhbiBpbmZpbml0ZSBzdHJlYW0gZGVyaXZlZCBmcm9tIGEgcmFuZG9tIHB1c2ggc291cmNl
Jyk7Ci0KLXRlc3QoKCkgPT4gewotCi0gIGxldCByZWNvcmRlZFJlYXNvbjsKLSAgY29uc3QgcnMg
PSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIGNhbmNlbChyZWFzb24pIHsKLSAgICAgIHJlY29y
ZGVkUmVhc29uID0gcmVhc29uOwotICAgIH0KLSAgfSk7Ci0KLSAgY29uc3QgcGFzc2VkUmVhc29u
ID0gbmV3IEVycm9yKCdTb3JyeSwgaXQganVzdCB3YXNuXCd0IG1lYW50IHRvIGJlLicpOwotICBy
cy5jYW5jZWwocGFzc2VkUmVhc29uKTsKLQotICBhc3NlcnRfZXF1YWxzKHJlY29yZGVkUmVhc29u
LCBwYXNzZWRSZWFzb24sCi0gICAgJ3RoZSBlcnJvciBwYXNzZWQgdG8gdGhlIHVuZGVybHlpbmcg
c291cmNlXCdzIGNhbmNlbCBtZXRob2Qgc2hvdWxkIGVxdWFsIHRoZSBvbmUgcGFzc2VkIHRvIHRo
ZSBzdHJlYW1cJ3MgY2FuY2VsJyk7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbSBjYW5jZWxsYXRpb246
IGNhbmNlbChyZWFzb24pIHNob3VsZCBwYXNzIHRocm91Z2ggdGhlIGdpdmVuIHJlYXNvbiB0byB0
aGUgdW5kZXJseWluZyBzb3VyY2UnKTsKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLQotICBjb25z
dCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgYy5lbnF1
ZXVlKCdhJyk7Ci0gICAgICBjLmNsb3NlKCk7Ci0gICAgfSwKLSAgICBjYW5jZWwoKSB7Ci0gICAg
ICBhc3NlcnRfdW5yZWFjaGVkKCd1bmRlcmx5aW5nIHNvdXJjZSBjYW5jZWwoKSBzaG91bGQgbm90
IGhhdmUgYmVlbiBjYWxsZWQnKTsKLSAgICB9Ci0gIH0pOwotCi0gIGNvbnN0IHJlYWRlciA9IHJz
LmdldFJlYWRlcigpOwotCi0gIHJldHVybiBycy5jYW5jZWwoKS50aGVuKCgpID0+IHsKLSAgICBh
c3NlcnRfdW5yZWFjaGVkKCdjYW5jZWwoKSBzaG91bGQgYmUgcmVqZWN0ZWQnKTsKLSAgfSwgZSA9
PiB7Ci0gICAgYXNzZXJ0X2VxdWFscyhlLm5hbWUsICdUeXBlRXJyb3InLCAnY2FuY2VsKCkgc2hv
dWxkIGJlIHJlamVjdGVkIHdpdGggYSBUeXBlRXJyb3InKTsKLSAgfSkudGhlbigoKSA9PiB7Ci0g
ICAgcmV0dXJuIHJlYWRlci5yZWFkKCk7Ci0gIH0pLnRoZW4ocmVzdWx0ID0+IHsKLSAgICBhc3Nl
cnRfb2JqZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6ICdhJywgZG9uZTogZmFsc2UgfSwgJ3Jl
YWQoKSBzaG91bGQgc3RpbGwgd29yayBhZnRlciB0aGUgYXR0ZW1wdGVkIGNhbmNlbCcpOwotICAg
IHJldHVybiByZWFkZXIuY2xvc2VkOwotICB9KTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtIGNhbmNl
bGxhdGlvbjogY2FuY2VsKCkgb24gYSBsb2NrZWQgc3RyZWFtIHNob3VsZCBmYWlsIGFuZCBub3Qg
Y2FsbCB0aGUgdW5kZXJseWluZyBzb3VyY2UgY2FuY2VsJyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9
PiB7Ci0KLSAgbGV0IGNhbmNlbFJlY2VpdmVkID0gZmFsc2U7Ci0gIGNvbnN0IGNhbmNlbFJlYXNv
biA9IG5ldyBFcnJvcignSSBhbSB0aXJlZCBvZiB0aGlzIHN0cmVhbSwgSSBwcmVmZXIgdG8gY2Fu
Y2VsIGl0Jyk7Ci0gIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBjYW5jZWwo
cmVhc29uKSB7Ci0gICAgICBjYW5jZWxSZWNlaXZlZCA9IHRydWU7Ci0gICAgICBhc3NlcnRfZXF1
YWxzKHJlYXNvbiwgY2FuY2VsUmVhc29uLCAnY2FuY2VsbGF0aW9uIHJlYXNvbiBnaXZlbiB0byB0
aGUgdW5kZXJseWluZyBzb3VyY2Ugc2hvdWxkIGJlIGVxdWFsIHRvIHRoZSBvbmUgcGFzc2VkJyk7
Ci0gICAgfQotICB9KTsKLQotICByZXR1cm4gcnMuY2FuY2VsKGNhbmNlbFJlYXNvbikudGhlbigo
KSA9PiB7Ci0gICAgYXNzZXJ0X3RydWUoY2FuY2VsUmVjZWl2ZWQpOwotICB9KTsKLQotfSwgJ1Jl
YWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlvbjogc2hvdWxkIGZ1bGZpbGwgcHJvbWlzZSB3aGVuIGNh
bmNlbCBjYWxsYmFjayB3ZW50IGZpbmUnKTsKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLQotICBj
b25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgY2FuY2VsKCkgewotICAgICAgcmV0
dXJuICdIZWxsbyc7Ci0gICAgfQotICB9KTsKLQotICByZXR1cm4gcnMuY2FuY2VsKCkudGhlbih2
ID0+IHsKLSAgICBhc3NlcnRfZXF1YWxzKHYsIHVuZGVmaW5lZCwgJ2NhbmNlbCgpIHJldHVybiB2
YWx1ZSBzaG91bGQgYmUgZnVsZmlsbGVkIHdpdGggdW5kZWZpbmVkJyk7Ci0gIH0pOwotCi19LCAn
UmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiByZXR1cm5pbmcgYSB2YWx1ZSBmcm9tIHRoZSB1
bmRlcmx5aW5nIHNvdXJjZVwncyBjYW5jZWwgc2hvdWxkIG5vdCBhZmZlY3QgdGhlIGZ1bGZpbGxt
ZW50IHZhbHVlIG9mIHRoZSBwcm9taXNlIHJldHVybmVkIGJ5IHRoZSBzdHJlYW1cJ3MgY2FuY2Vs
Jyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgY29uc3QgdGhyb3duRXJyb3IgPSBuZXcg
RXJyb3IoJ3Rlc3QnKTsKLSAgbGV0IGNhbmNlbENhbGxlZCA9IGZhbHNlOwotCi0gIGNvbnN0IHJz
ID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBjYW5jZWwoKSB7Ci0gICAgICBjYW5jZWxDYWxs
ZWQgPSB0cnVlOwotICAgICAgdGhyb3cgdGhyb3duRXJyb3I7Ci0gICAgfQotICB9KTsKLQotICBy
ZXR1cm4gcnMuY2FuY2VsKCd0ZXN0JykudGhlbigoKSA9PiB7Ci0gICAgYXNzZXJ0X3VucmVhY2hl
ZCgnY2FuY2VsIHNob3VsZCByZWplY3QnKTsKLSAgfSwgZSA9PiB7Ci0gICAgYXNzZXJ0X3RydWUo
Y2FuY2VsQ2FsbGVkKTsKLSAgICBhc3NlcnRfZXF1YWxzKGUsIHRocm93bkVycm9yKTsKLSAgfSk7
Ci0KLX0sICdSZWFkYWJsZVN0cmVhbSBjYW5jZWxsYXRpb246IHNob3VsZCByZWplY3QgcHJvbWlz
ZSB3aGVuIGNhbmNlbCBjYWxsYmFjayByYWlzZXMgYW4gZXhjZXB0aW9uJyk7Ci0KLXByb21pc2Vf
dGVzdCgoKSA9PiB7Ci0KLSAgY29uc3QgY2FuY2VsUmVhc29uID0gbmV3IEVycm9yKCd0ZXN0Jyk7
Ci0KLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIGNhbmNlbChlcnJvcikg
ewotICAgICAgYXNzZXJ0X2VxdWFscyhlcnJvciwgY2FuY2VsUmVhc29uKTsKLSAgICAgIHJldHVy
biBkZWxheSgxKTsKLSAgICB9Ci0gIH0pOwotCi0gIHJldHVybiBycy5jYW5jZWwoY2FuY2VsUmVh
c29uKTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlvbjogaWYgdGhlIHVuZGVybHlp
bmcgc291cmNlXCdzIGNhbmNlbCBtZXRob2QgcmV0dXJucyBhIHByb21pc2UsIHRoZSBwcm9taXNl
IHJldHVybmVkIGJ5IHRoZSBzdHJlYW1cJ3MgY2FuY2VsIHNob3VsZCBmdWxmaWxsIHdoZW4gdGhh
dCBvbmUgZG9lcyAoMSknKTsKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLQotICBsZXQgcmVzb2x2
ZVNvdXJjZUNhbmNlbFByb21pc2U7Ci0gIGxldCBzb3VyY2VDYW5jZWxQcm9taXNlSGFzRnVsZmls
bGVkID0gZmFsc2U7Ci0KLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIGNh
bmNlbCgpIHsKLSAgICAgIGNvbnN0IHNvdXJjZUNhbmNlbFByb21pc2UgPSBuZXcgUHJvbWlzZShy
ZXNvbHZlID0+IHJlc29sdmVTb3VyY2VDYW5jZWxQcm9taXNlID0gcmVzb2x2ZSk7Ci0KLSAgICAg
IHNvdXJjZUNhbmNlbFByb21pc2UudGhlbigoKSA9PiB7Ci0gICAgICAgIHNvdXJjZUNhbmNlbFBy
b21pc2VIYXNGdWxmaWxsZWQgPSB0cnVlOwotICAgICAgfSk7Ci0KLSAgICAgIHJldHVybiBzb3Vy
Y2VDYW5jZWxQcm9taXNlOwotICAgIH0KLSAgfSk7Ci0KLSAgc2V0VGltZW91dCgoKSA9PiByZXNv
bHZlU291cmNlQ2FuY2VsUHJvbWlzZSgnSGVsbG8nKSwgMSk7Ci0KLSAgcmV0dXJuIHJzLmNhbmNl
bCgpLnRoZW4odmFsdWUgPT4gewotICAgIGFzc2VydF90cnVlKHNvdXJjZUNhbmNlbFByb21pc2VI
YXNGdWxmaWxsZWQsICdjYW5jZWwoKSByZXR1cm4gdmFsdWUgc2hvdWxkIGJlIGZ1bGZpbGxlZCBv
bmx5IGFmdGVyIHRoZSBwcm9taXNlIHJldHVybmVkIGJ5IHRoZSB1bmRlcmx5aW5nIHNvdXJjZVwn
cyBjYW5jZWwnKTsKLSAgICBhc3NlcnRfZXF1YWxzKHZhbHVlLCB1bmRlZmluZWQsICdjYW5jZWwo
KSByZXR1cm4gdmFsdWUgc2hvdWxkIGJlIGZ1bGZpbGxlZCB3aXRoIHVuZGVmaW5lZCcpOwotICB9
KTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlvbjogaWYgdGhlIHVuZGVybHlpbmcg
c291cmNlXCdzIGNhbmNlbCBtZXRob2QgcmV0dXJucyBhIHByb21pc2UsIHRoZSBwcm9taXNlIHJl
dHVybmVkIGJ5IHRoZSBzdHJlYW1cJ3MgY2FuY2VsIHNob3VsZCBmdWxmaWxsIHdoZW4gdGhhdCBv
bmUgZG9lcyAoMiknKTsKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLQotICBsZXQgcmVqZWN0U291
cmNlQ2FuY2VsUHJvbWlzZTsKLSAgbGV0IHNvdXJjZUNhbmNlbFByb21pc2VIYXNSZWplY3RlZCA9
IGZhbHNlOwotCi0gIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBjYW5jZWwo
KSB7Ci0gICAgICBjb25zdCBzb3VyY2VDYW5jZWxQcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29s
dmUsIHJlamVjdCkgPT4gcmVqZWN0U291cmNlQ2FuY2VsUHJvbWlzZSA9IHJlamVjdCk7Ci0KLSAg
ICAgIHNvdXJjZUNhbmNlbFByb21pc2UuY2F0Y2goKCkgPT4gewotICAgICAgICBzb3VyY2VDYW5j
ZWxQcm9taXNlSGFzUmVqZWN0ZWQgPSB0cnVlOwotICAgICAgfSk7Ci0KLSAgICAgIHJldHVybiBz
b3VyY2VDYW5jZWxQcm9taXNlOwotICAgIH0KLSAgfSk7Ci0KLSAgY29uc3QgZXJyb3JJbkNhbmNl
bCA9IG5ldyBFcnJvcignU29ycnksIGl0IGp1c3Qgd2FzblwndCBtZWFudCB0byBiZS4nKTsKLQot
ICBzZXRUaW1lb3V0KCgpID0+IHJlamVjdFNvdXJjZUNhbmNlbFByb21pc2UoZXJyb3JJbkNhbmNl
bCksIDEpOwotCi0gIHJldHVybiBycy5jYW5jZWwoKS50aGVuKCgpID0+IHsKLSAgICBhc3NlcnRf
dW5yZWFjaGVkKCdjYW5jZWwoKSByZXR1cm4gdmFsdWUgc2hvdWxkIGJlIHJlamVjdGVkJyk7Ci0g
IH0sIHIgPT4gewotICAgIGFzc2VydF90cnVlKHNvdXJjZUNhbmNlbFByb21pc2VIYXNSZWplY3Rl
ZCwgJ2NhbmNlbCgpIHJldHVybiB2YWx1ZSBzaG91bGQgYmUgcmVqZWN0ZWQgb25seSBhZnRlciB0
aGUgcHJvbWlzZSByZXR1cm5lZCBieSB0aGUgdW5kZXJseWluZyBzb3VyY2VcJ3MgY2FuY2VsJyk7
Ci0gICAgYXNzZXJ0X2VxdWFscyhyLCBlcnJvckluQ2FuY2VsLCAnY2FuY2VsKCkgcmV0dXJuIHZh
bHVlIHNob3VsZCBiZSByZWplY3RlZCB3aXRoIHRoZSB1bmRlcmx5aW5nIHNvdXJjZVwncyByZWpl
Y3Rpb24gcmVhc29uJyk7Ci0gIH0pOwotCi19LCAnUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9u
OiBpZiB0aGUgdW5kZXJseWluZyBzb3VyY2VcJ3MgY2FuY2VsIG1ldGhvZCByZXR1cm5zIGEgcHJv
bWlzZSwgdGhlIHByb21pc2UgcmV0dXJuZWQgYnkgdGhlIHN0cmVhbVwncyBjYW5jZWwgc2hvdWxk
IHJlamVjdCB3aGVuIHRoYXQgb25lIGRvZXMnKTsKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLQot
ICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoKSB7Ci0gICAgICBy
ZXR1cm4gbmV3IFByb21pc2UoKCkgPT4ge30pOwotICAgIH0sCi0gICAgcHVsbCgpIHsKLSAgICAg
IGFzc2VydF91bnJlYWNoZWQoJ3B1bGwgc2hvdWxkIG5vdCBoYXZlIGJlZW4gY2FsbGVkJyk7Ci0g
ICAgfQotICB9KTsKLQotICByZXR1cm4gUHJvbWlzZS5hbGwoW3JzLmNhbmNlbCgpLCBycy5nZXRS
ZWFkZXIoKS5jbG9zZWRdKTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlvbjogY2Fu
Y2VsbGluZyBiZWZvcmUgc3RhcnQgZmluaXNoZXMgc2hvdWxkIHByZXZlbnQgcHVsbCgpIGZyb20g
YmVpbmcgY2FsbGVkJyk7Ci0KLWRvbmUoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2NhbmNl
bC5zZXJ2aWNld29ya2VyLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2NhbmNlbC5z
ZXJ2aWNld29ya2VyLmh0dHBzLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggNTQxODdjOGE1YWRmMThhNzFlYTQ5NjY3NjZjOTRiMjRjMGE1Y2Q1OS4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9jYW5jZWwu
c2VydmljZXdvcmtlci5odHRwcy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwxMyAr
MCwwIEBACi0KLVBBU1MgU2VydmljZSB3b3JrZXIgdGVzdCBzZXR1cCAKLVBBU1MgUmVhZGFibGVT
dHJlYW0gY2FuY2VsbGF0aW9uOiBpbnRlZ3JhdGlvbiB0ZXN0IG9uIGFuIGluZmluaXRlIHN0cmVh
bSBkZXJpdmVkIGZyb20gYSByYW5kb20gcHVzaCBzb3VyY2UgCi1QQVNTIFJlYWRhYmxlU3RyZWFt
IGNhbmNlbGxhdGlvbjogY2FuY2VsKHJlYXNvbikgc2hvdWxkIHBhc3MgdGhyb3VnaCB0aGUgZ2l2
ZW4gcmVhc29uIHRvIHRoZSB1bmRlcmx5aW5nIHNvdXJjZSAKLVBBU1MgUmVhZGFibGVTdHJlYW0g
Y2FuY2VsbGF0aW9uOiBjYW5jZWwoKSBvbiBhIGxvY2tlZCBzdHJlYW0gc2hvdWxkIGZhaWwgYW5k
IG5vdCBjYWxsIHRoZSB1bmRlcmx5aW5nIHNvdXJjZSBjYW5jZWwgCi1QQVNTIFJlYWRhYmxlU3Ry
ZWFtIGNhbmNlbGxhdGlvbjogc2hvdWxkIGZ1bGZpbGwgcHJvbWlzZSB3aGVuIGNhbmNlbCBjYWxs
YmFjayB3ZW50IGZpbmUgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlvbjogcmV0dXJu
aW5nIGEgdmFsdWUgZnJvbSB0aGUgdW5kZXJseWluZyBzb3VyY2UncyBjYW5jZWwgc2hvdWxkIG5v
dCBhZmZlY3QgdGhlIGZ1bGZpbGxtZW50IHZhbHVlIG9mIHRoZSBwcm9taXNlIHJldHVybmVkIGJ5
IHRoZSBzdHJlYW0ncyBjYW5jZWwgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlvbjog
c2hvdWxkIHJlamVjdCBwcm9taXNlIHdoZW4gY2FuY2VsIGNhbGxiYWNrIHJhaXNlcyBhbiBleGNl
cHRpb24gCi1QQVNTIFJlYWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlvbjogaWYgdGhlIHVuZGVybHlp
bmcgc291cmNlJ3MgY2FuY2VsIG1ldGhvZCByZXR1cm5zIGEgcHJvbWlzZSwgdGhlIHByb21pc2Ug
cmV0dXJuZWQgYnkgdGhlIHN0cmVhbSdzIGNhbmNlbCBzaG91bGQgZnVsZmlsbCB3aGVuIHRoYXQg
b25lIGRvZXMgKDEpIAotUEFTUyBSZWFkYWJsZVN0cmVhbSBjYW5jZWxsYXRpb246IGlmIHRoZSB1
bmRlcmx5aW5nIHNvdXJjZSdzIGNhbmNlbCBtZXRob2QgcmV0dXJucyBhIHByb21pc2UsIHRoZSBw
cm9taXNlIHJldHVybmVkIGJ5IHRoZSBzdHJlYW0ncyBjYW5jZWwgc2hvdWxkIGZ1bGZpbGwgd2hl
biB0aGF0IG9uZSBkb2VzICgyKSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiBp
ZiB0aGUgdW5kZXJseWluZyBzb3VyY2UncyBjYW5jZWwgbWV0aG9kIHJldHVybnMgYSBwcm9taXNl
LCB0aGUgcHJvbWlzZSByZXR1cm5lZCBieSB0aGUgc3RyZWFtJ3MgY2FuY2VsIHNob3VsZCByZWpl
Y3Qgd2hlbiB0aGF0IG9uZSBkb2VzIAotUEFTUyBSZWFkYWJsZVN0cmVhbSBjYW5jZWxsYXRpb246
IGNhbmNlbGxpbmcgYmVmb3JlIHN0YXJ0IGZpbmlzaGVzIHNob3VsZCBwcmV2ZW50IHB1bGwoKSBm
cm9tIGJlaW5nIGNhbGxlZCAKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvY2FuY2VsLnNlcnZp
Y2V3b3JrZXIuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2NhbmNlbC5zZXJ2aWNld29ya2VyLmh0
dHBzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM3ZmM0NTlhMDVmNmIwMzNj
ODcxODJhZTE2YWMzMzJjMDkwNjgwMzYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvY2FuY2VsLnNlcnZpY2V3b3JrZXIuaHR0cHMuaHRt
bAorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEg
Y2hhcnNldD0idXRmLTgiPgotPHRpdGxlPmNhbmNlbC5qcyBzZXJ2aWNlIHdvcmtlciB3cmFwcGVy
IGZpbGU8L3RpdGxlPgotCi08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+
PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+
PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9y
ZXNvdXJjZXMvdGVzdC1oZWxwZXJzLnN1Yi5qcyI+PC9zY3JpcHQ+Ci0KLTxzY3JpcHQ+Ci0ndXNl
IHN0cmljdCc7Ci1zZXJ2aWNlX3dvcmtlcl90ZXN0KCdjYW5jZWwuanMnLCAnU2VydmljZSB3b3Jr
ZXIgdGVzdCBzZXR1cCcpOwotPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9jYW5j
ZWwuc2hhcmVkd29ya2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2NhbmNlbC5zaGFyZWR3
b3JrZXItZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwOWQ1ZDI1
MDlkNzg0N2U4Y2Q2ZmU2NjA2YWE2MGNkZDMzYWE0NzRlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2NhbmNlbC5zaGFyZWR3b3JrZXIt
ZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1DT05TT0xFIE1FU1NB
R0U6IFJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBTaGFyZWRXb3JrZXIKLQot
SGFybmVzcyBFcnJvciAoRkFJTCksIG1lc3NhZ2UgPSBSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmlu
ZCB2YXJpYWJsZTogU2hhcmVkV29ya2VyCi0KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvY2Fu
Y2VsLnNoYXJlZHdvcmtlci5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvY2FuY2VsLnNoYXJlZHdvcmtlci5o
dG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiOWUyZThjOTY4YjNmNTBlZTc3ZTlk
MGFkYTkwNTBkOTk5NWFkNGI2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2NhbmNlbC5zaGFyZWR3b3JrZXIuaHRtbAorKysgL2Rldi9u
dWxsCkBAIC0xLDExICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRm
LTgiPgotPHRpdGxlPmNhbmNlbC5qcyBzaGFyZWQgd29ya2VyIHdyYXBwZXIgZmlsZTwvdGl0bGU+
Ci0KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxz
Y3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLQot
PHNjcmlwdD4KLSd1c2Ugc3RyaWN0JzsKLWZldGNoX3Rlc3RzX2Zyb21fd29ya2VyKG5ldyBTaGFy
ZWRXb3JrZXIoJ2NhbmNlbC5qcycpKTsKLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVh
bXMvY29uc3RydWN0b3IuYW55LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2NvbnN0cnVjdG9y
LmFueS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjM4ZjI1OTM4ZTc3MWM5MjQ4ZDdkZGQyMmUw
MjIxYmQ3ZDlkY2UwNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2NvbnN0cnVjdG9y
LmFueS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACisKK1BBU1MgdW5kZXJseWluZ1NvdXJj
ZSBhcmd1bWVudCBzaG91bGQgYmUgY29udmVydGVkIGFmdGVyIHF1ZXVpbmdTdHJhdGVneSBhcmd1
bWVudCAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvY29uc3RydWN0b3IuYW55Lmh0bWwgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFi
bGUtc3RyZWFtcy9jb25zdHJ1Y3Rvci5hbnkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMzgyOTEzNTI4ZTY5
M2IzYTVkNTZjNjYwYTQ1MDYwOTgwYjU0OGMzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVh
bXMvY29uc3RydWN0b3IuYW55Lmh0bWwKQEAgLTAsMCArMSBAQAorPCEtLSBUaGlzIGZpbGUgaXMg
cmVxdWlyZWQgZm9yIFdlYktpdCB0ZXN0IGluZnJhc3RydWN0dXJlIHRvIHJ1biB0aGUgdGVtcGxh
dGVkIHRlc3QgLS0+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxl
LXN0cmVhbXMvY29uc3RydWN0b3IuYW55LmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvY29uc3RydWN0b3IuYW55
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmRjZmQ5ZTljMzM4NjFmN2VjZjgzZDRlNmY1ZDc4NzgxMGFiODQ3NWYK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9jb25zdHJ1Y3Rvci5hbnkuanMKQEAgLTAs
MCArMSwxNyBAQAorLy8gTUVUQTogZ2xvYmFsPXdpbmRvdyx3b3JrZXIsanNzaGVsbAorJ3VzZSBz
dHJpY3QnOworCitjb25zdCBlcnJvcjEgPSBuZXcgRXJyb3IoJ2Vycm9yMScpOworZXJyb3IxLm5h
bWUgPSAnZXJyb3IxJzsKKworY29uc3QgZXJyb3IyID0gbmV3IEVycm9yKCdlcnJvcjInKTsKK2Vy
cm9yMi5uYW1lID0gJ2Vycm9yMic7CisKK3Rlc3QoKCkgPT4geworICBjb25zdCB1bmRlcmx5aW5n
U291cmNlID0geyBnZXQgc3RhcnQoKSB7IHRocm93IGVycm9yMTsgfSB9OworICBjb25zdCBxdWV1
aW5nU3RyYXRlZ3kgPSB7IGhpZ2hXYXRlck1hcms6IDAsIGdldCBzaXplKCkgeyB0aHJvdyBlcnJv
cjI7IH0gfTsKKworICAvLyB1bmRlcmx5aW5nU291cmNlIGlzIGNvbnZlcnRlZCBpbiBwcm9zZSBp
biB0aGUgbWV0aG9kIGJvZHksIHdoZXJlYXMgcXVldWluZ1N0cmF0ZWd5IGlzIGRvbmUgYXQgdGhl
IElETCBsYXllci4KKyAgLy8gU28gdGhlIHF1ZXVpbmdTdHJhdGVneSBleGNlcHRpb24gc2hvdWxk
IGJlIGVuY291bnRlcmVkIGZpcnN0LgorICBhc3NlcnRfdGhyb3dzX2V4YWN0bHkoZXJyb3IyLCAo
KSA9PiBuZXcgUmVhZGFibGVTdHJlYW0odW5kZXJseWluZ1NvdXJjZSwgcXVldWluZ1N0cmF0ZWd5
KSk7Cit9LCAndW5kZXJseWluZ1NvdXJjZSBhcmd1bWVudCBzaG91bGQgYmUgY29udmVydGVkIGFm
dGVyIHF1ZXVpbmdTdHJhdGVneSBhcmd1bWVudCcpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMv
Y29uc3RydWN0b3IuYW55Lndvcmtlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9jb25zdHJ1
Y3Rvci5hbnkud29ya2VyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MzhmMjU5MzhlNzcxYzky
NDhkN2RkZDIyZTAyMjFiZDdkOWRjZTA2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMv
Y29uc3RydWN0b3IuYW55Lndvcmtlci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACisKK1BB
U1MgdW5kZXJseWluZ1NvdXJjZSBhcmd1bWVudCBzaG91bGQgYmUgY29udmVydGVkIGFmdGVyIHF1
ZXVpbmdTdHJhdGVneSBhcmd1bWVudCAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvY29uc3Ry
dWN0b3IuYW55Lndvcmtlci5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvY29uc3RydWN0b3IuYW55Lndvcmtl
ci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjIzODI5MTM1MjhlNjkzYjNhNWQ1NmM2NjBhNDUwNjA5ODBiNTQ4
YzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9jb25zdHJ1Y3Rvci5hbnkud29ya2Vy
Lmh0bWwKQEAgLTAsMCArMSBAQAorPCEtLSBUaGlzIGZpbGUgaXMgcmVxdWlyZWQgZm9yIFdlYktp
dCB0ZXN0IGluZnJhc3RydWN0dXJlIHRvIHJ1biB0aGUgdGVtcGxhdGVkIHRlc3QgLS0+ClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvY291bnQtcXVl
dWluZy1zdHJhdGVneS1pbnRlZ3JhdGlvbi5hbnktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMv
Y291bnQtcXVldWluZy1zdHJhdGVneS1pbnRlZ3JhdGlvbi5hbnktZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjYwNjMzY2EwN2ZkMTZkOWIxN2I1YTQ2MjU0MzMwNjhiOTE1YTIwZGMKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5LWludGVncmF0aW9u
LmFueS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw2IEBACisKK1BBU1MgQ2FuIGNvbnN0cnVjdCBh
IHJlYWRhYmxlIHN0cmVhbSB3aXRoIGEgdmFsaWQgQ291bnRRdWV1aW5nU3RyYXRlZ3kgCitQQVNT
IENvcnJlY3RseSBnb3Zlcm5zIGEgUmVhZGFibGVTdHJlYW1Db250cm9sbGVyJ3MgZGVzaXJlZFNp
emUgcHJvcGVydHkgKEhXTSA9IDApIAorUEFTUyBDb3JyZWN0bHkgZ292ZXJucyBhIFJlYWRhYmxl
U3RyZWFtQ29udHJvbGxlcidzIGRlc2lyZWRTaXplIHByb3BlcnR5IChIV00gPSAxKSAKK1BBU1Mg
Q29ycmVjdGx5IGdvdmVybnMgYSBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIncyBkZXNpcmVkU2l6
ZSBwcm9wZXJ0eSAoSFdNID0gNCkgCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2NvdW50LXF1
ZXVpbmctc3RyYXRlZ3ktaW50ZWdyYXRpb24uYW55Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9jb3VudC1x
dWV1aW5nLXN0cmF0ZWd5LWludGVncmF0aW9uLmFueS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzODI5MTM1
MjhlNjkzYjNhNWQ1NmM2NjBhNDUwNjA5ODBiNTQ4YzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUt
c3RyZWFtcy9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5LWludGVncmF0aW9uLmFueS5odG1sCkBAIC0w
LDAgKzEgQEAKKzwhLS0gVGhpcyBmaWxlIGlzIHJlcXVpcmVkIGZvciBXZWJLaXQgdGVzdCBpbmZy
YXN0cnVjdHVyZSB0byBydW4gdGhlIHRlbXBsYXRlZCB0ZXN0IC0tPgpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2NvdW50LXF1ZXVpbmctc3RyYXRl
Z3ktaW50ZWdyYXRpb24uYW55LmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvY291bnQtcXVldWluZy1zdHJhdGVn
eS1pbnRlZ3JhdGlvbi5hbnkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzhhMjUzMThiMmRkNWFmOTg1Nzg1NGRj
ZDhhZTZhMWZmMDg5ZDI2MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2NvdW50LXF1
ZXVpbmctc3RyYXRlZ3ktaW50ZWdyYXRpb24uYW55LmpzCkBAIC0wLDAgKzEsMjA4IEBACisvLyBN
RVRBOiBnbG9iYWw9d2luZG93LHdvcmtlcixqc3NoZWxsCisndXNlIHN0cmljdCc7CisKK3Rlc3Qo
KCkgPT4geworCisgIG5ldyBSZWFkYWJsZVN0cmVhbSh7fSwgbmV3IENvdW50UXVldWluZ1N0cmF0
ZWd5KHsgaGlnaFdhdGVyTWFyazogNCB9KSk7CisKK30sICdDYW4gY29uc3RydWN0IGEgcmVhZGFi
bGUgc3RyZWFtIHdpdGggYSB2YWxpZCBDb3VudFF1ZXVpbmdTdHJhdGVneScpOworCitwcm9taXNl
X3Rlc3QoKCkgPT4geworCisgIGxldCBjb250cm9sbGVyOworICBjb25zdCBycyA9IG5ldyBSZWFk
YWJsZVN0cmVhbSgKKyAgICB7CisgICAgICBzdGFydChjKSB7CisgICAgICAgIGNvbnRyb2xsZXIg
PSBjOworICAgICAgfQorICAgIH0sCisgICAgbmV3IENvdW50UXVldWluZ1N0cmF0ZWd5KHsgaGln
aFdhdGVyTWFyazogMCB9KQorICApOworICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsK
KworICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDAsICcwIHJlYWRzLCAw
IGVucXVldWVzOiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUgMCcpOworICBjb250cm9sbGVyLmVucXVl
dWUoJ2EnKTsKKyAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAtMSwgJzAg
cmVhZHMsIDEgZW5xdWV1ZTogZGVzaXJlZFNpemUgc2hvdWxkIGJlIC0xJyk7CisgIGNvbnRyb2xs
ZXIuZW5xdWV1ZSgnYicpOworICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUs
IC0yLCAnMCByZWFkcywgMiBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIC0yJyk7Cisg
IGNvbnRyb2xsZXIuZW5xdWV1ZSgnYycpOworICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVz
aXJlZFNpemUsIC0zLCAnMCByZWFkcywgMyBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJl
IC0zJyk7CisgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnZCcpOworICBhc3NlcnRfZXF1YWxzKGNvbnRy
b2xsZXIuZGVzaXJlZFNpemUsIC00LCAnMCByZWFkcywgNCBlbnF1ZXVlczogZGVzaXJlZFNpemUg
c2hvdWxkIGJlIC00Jyk7CisKKyAgcmV0dXJuIHJlYWRlci5yZWFkKCkKKyAgICAudGhlbihyZXN1
bHQgPT4geworICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0LCB7IHZhbHVlOiAnYScs
IGRvbmU6IGZhbHNlIH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAnMXN0IHJlYWQgZ2l2
ZXMgYmFjayB0aGUgMXN0IGNodW5rIGVucXVldWVkIChxdWV1ZSBub3cgY29udGFpbnMgMyBjaHVu
a3MpJyk7CisgICAgICByZXR1cm4gcmVhZGVyLnJlYWQoKTsKKyAgICB9KQorICAgIC50aGVuKHJl
c3VsdCA9PiB7CisgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6ICdi
JywgZG9uZTogZmFsc2UgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICcybmQgcmVhZCBn
aXZlcyBiYWNrIHRoZSAybmQgY2h1bmsgZW5xdWV1ZWQgKHF1ZXVlIG5vdyBjb250YWlucyAyIGNo
dW5rcyknKTsKKyAgICAgIHJldHVybiByZWFkZXIucmVhZCgpOworICAgIH0pCisgICAgLnRoZW4o
cmVzdWx0ID0+IHsKKyAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdCwgeyB2YWx1ZTog
J2MnLCBkb25lOiBmYWxzZSB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJzNyZCByZWFk
IGdpdmVzIGJhY2sgdGhlIDNyZCBjaHVuayBlbnF1ZXVlZCAocXVldWUgbm93IGNvbnRhaW5zIDEg
Y2h1bmspJyk7CisKKyAgICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwg
LTEsICczIHJlYWRzLCA0IGVucXVldWVzOiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUgLTEnKTsKKyAg
ICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnZScpOworICAgICAgYXNzZXJ0X2VxdWFscyhjb250cm9s
bGVyLmRlc2lyZWRTaXplLCAtMiwgJzMgcmVhZHMsIDUgZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNo
b3VsZCBiZSAtMicpOworCisgICAgICByZXR1cm4gcmVhZGVyLnJlYWQoKTsKKyAgICB9KQorICAg
IC50aGVuKHJlc3VsdCA9PiB7CisgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQsIHsg
dmFsdWU6ICdkJywgZG9uZTogZmFsc2UgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICc0
dGggcmVhZCBnaXZlcyBiYWNrIHRoZSA0dGggY2h1bmsgZW5xdWV1ZWQgKHF1ZXVlIG5vdyBjb250
YWlucyAxIGNodW5rcyknKTsKKyAgICAgIHJldHVybiByZWFkZXIucmVhZCgpOworCisgICAgfSku
dGhlbihyZXN1bHQgPT4geworICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0LCB7IHZh
bHVlOiAnZScsIGRvbmU6IGZhbHNlIH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAnNXRo
IHJlYWQgZ2l2ZXMgYmFjayB0aGUgNXRoIGNodW5rIGVucXVldWVkIChxdWV1ZSBub3cgY29udGFp
bnMgMCBjaHVua3MpJyk7CisKKyAgICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVk
U2l6ZSwgMCwgJzUgcmVhZHMsIDUgZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAwJyk7
CisgICAgICBjb250cm9sbGVyLmVucXVldWUoJ2YnKTsKKyAgICAgIGFzc2VydF9lcXVhbHMoY29u
dHJvbGxlci5kZXNpcmVkU2l6ZSwgLTEsICc1IHJlYWRzLCA2IGVucXVldWVzOiBkZXNpcmVkU2l6
ZSBzaG91bGQgYmUgLTEnKTsKKyAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnZycpOworICAgICAg
YXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAtMiwgJzUgcmVhZHMsIDcgZW5x
dWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAtMicpOworICAgIH0pOworCit9LCAnQ29ycmVj
dGx5IGdvdmVybnMgYSBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJcJ3MgZGVzaXJlZFNpemUgcHJv
cGVydHkgKEhXTSA9IDApJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisKKyAgbGV0IGNvbnRy
b2xsZXI7CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKAorICAgIHsKKyAgICAgIHN0
YXJ0KGMpIHsKKyAgICAgICAgY29udHJvbGxlciA9IGM7CisgICAgICB9CisgICAgfSwKKyAgICBu
ZXcgQ291bnRRdWV1aW5nU3RyYXRlZ3koeyBoaWdoV2F0ZXJNYXJrOiAxIH0pCisgICk7CisgIGNv
bnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcigpOworCisgIGFzc2VydF9lcXVhbHMoY29udHJvbGxl
ci5kZXNpcmVkU2l6ZSwgMSwgJzAgcmVhZHMsIDAgZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3Vs
ZCBiZSAxJyk7CisgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYScpOworICBhc3NlcnRfZXF1YWxzKGNv
bnRyb2xsZXIuZGVzaXJlZFNpemUsIDAsICcwIHJlYWRzLCAxIGVucXVldWU6IGRlc2lyZWRTaXpl
IHNob3VsZCBiZSAwJyk7CisgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYicpOworICBhc3NlcnRfZXF1
YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIC0xLCAnMCByZWFkcywgMiBlbnF1ZXVlczogZGVz
aXJlZFNpemUgc2hvdWxkIGJlIC0xJyk7CisgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYycpOworICBh
c3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIC0yLCAnMCByZWFkcywgMyBlbnF1
ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIC0yJyk7CisgIGNvbnRyb2xsZXIuZW5xdWV1ZSgn
ZCcpOworICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIC0zLCAnMCByZWFk
cywgNCBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIC0zJyk7CisKKyAgcmV0dXJuIHJl
YWRlci5yZWFkKCkKKyAgICAudGhlbihyZXN1bHQgPT4geworICAgICAgYXNzZXJ0X29iamVjdF9l
cXVhbHMocmVzdWx0LCB7IHZhbHVlOiAnYScsIGRvbmU6IGZhbHNlIH0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnMXN0IHJlYWQgZ2l2ZXMgYmFjayB0aGUgMXN0IGNodW5rIGVucXVldWVk
IChxdWV1ZSBub3cgY29udGFpbnMgMyBjaHVua3MpJyk7CisgICAgICByZXR1cm4gcmVhZGVyLnJl
YWQoKTsKKyAgICB9KQorICAgIC50aGVuKHJlc3VsdCA9PiB7CisgICAgICBhc3NlcnRfb2JqZWN0
X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6ICdiJywgZG9uZTogZmFsc2UgfSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICcybmQgcmVhZCBnaXZlcyBiYWNrIHRoZSAybmQgY2h1bmsgZW5xdWV1
ZWQgKHF1ZXVlIG5vdyBjb250YWlucyAyIGNodW5rcyknKTsKKyAgICAgIHJldHVybiByZWFkZXIu
cmVhZCgpOworICAgIH0pCisgICAgLnRoZW4ocmVzdWx0ID0+IHsKKyAgICAgIGFzc2VydF9vYmpl
Y3RfZXF1YWxzKHJlc3VsdCwgeyB2YWx1ZTogJ2MnLCBkb25lOiBmYWxzZSB9LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJzNyZCByZWFkIGdpdmVzIGJhY2sgdGhlIDNyZCBjaHVuayBlbnF1
ZXVlZCAocXVldWUgbm93IGNvbnRhaW5zIDEgY2h1bmspJyk7CisKKyAgICAgIGFzc2VydF9lcXVh
bHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMCwgJzMgcmVhZHMsIDQgZW5xdWV1ZXM6IGRlc2ly
ZWRTaXplIHNob3VsZCBiZSAwJyk7CisgICAgICBjb250cm9sbGVyLmVucXVldWUoJ2UnKTsKKyAg
ICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgLTEsICczIHJlYWRzLCA1
IGVucXVldWVzOiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUgLTEnKTsKKworICAgICAgcmV0dXJuIHJl
YWRlci5yZWFkKCk7CisgICAgfSkKKyAgICAudGhlbihyZXN1bHQgPT4geworICAgICAgYXNzZXJ0
X29iamVjdF9lcXVhbHMocmVzdWx0LCB7IHZhbHVlOiAnZCcsIGRvbmU6IGZhbHNlIH0sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAnNHRoIHJlYWQgZ2l2ZXMgYmFjayB0aGUgNHRoIGNodW5r
IGVucXVldWVkIChxdWV1ZSBub3cgY29udGFpbnMgMSBjaHVua3MpJyk7CisgICAgICByZXR1cm4g
cmVhZGVyLnJlYWQoKTsKKyAgICB9KQorICAgIC50aGVuKHJlc3VsdCA9PiB7CisgICAgICBhc3Nl
cnRfb2JqZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6ICdlJywgZG9uZTogZmFsc2UgfSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICc1dGggcmVhZCBnaXZlcyBiYWNrIHRoZSA1dGggY2h1
bmsgZW5xdWV1ZWQgKHF1ZXVlIG5vdyBjb250YWlucyAwIGNodW5rcyknKTsKKworICAgICAgYXNz
ZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAxLCAnNSByZWFkcywgNSBlbnF1ZXVl
czogZGVzaXJlZFNpemUgc2hvdWxkIGJlIDEnKTsKKyAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgn
ZicpOworICAgICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAwLCAnNSBy
ZWFkcywgNiBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIDAnKTsKKyAgICAgIGNvbnRy
b2xsZXIuZW5xdWV1ZSgnZycpOworICAgICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2ly
ZWRTaXplLCAtMSwgJzUgcmVhZHMsIDcgZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAt
MScpOworICAgIH0pOworCit9LCAnQ29ycmVjdGx5IGdvdmVybnMgYSBSZWFkYWJsZVN0cmVhbUNv
bnRyb2xsZXJcJ3MgZGVzaXJlZFNpemUgcHJvcGVydHkgKEhXTSA9IDEpJyk7CisKK3Byb21pc2Vf
dGVzdCgoKSA9PiB7CisKKyAgbGV0IGNvbnRyb2xsZXI7CisgIGNvbnN0IHJzID0gbmV3IFJlYWRh
YmxlU3RyZWFtKAorICAgIHsKKyAgICAgIHN0YXJ0KGMpIHsKKyAgICAgICAgY29udHJvbGxlciA9
IGM7CisgICAgICB9CisgICAgfSwKKyAgICBuZXcgQ291bnRRdWV1aW5nU3RyYXRlZ3koeyBoaWdo
V2F0ZXJNYXJrOiA0IH0pCisgICk7CisgIGNvbnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcigpOwor
CisgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgNCwgJzAgcmVhZHMsIDAg
ZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSA0Jyk7CisgIGNvbnRyb2xsZXIuZW5xdWV1
ZSgnYScpOworICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDMsICcwIHJl
YWRzLCAxIGVucXVldWU6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAzJyk7CisgIGNvbnRyb2xsZXIu
ZW5xdWV1ZSgnYicpOworICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDIs
ICcwIHJlYWRzLCAyIGVucXVldWVzOiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUgMicpOworICBjb250
cm9sbGVyLmVucXVldWUoJ2MnKTsKKyAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRT
aXplLCAxLCAnMCByZWFkcywgMyBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIDEnKTsK
KyAgY29udHJvbGxlci5lbnF1ZXVlKCdkJyk7CisgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5k
ZXNpcmVkU2l6ZSwgMCwgJzAgcmVhZHMsIDQgZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBi
ZSAwJyk7CisgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnZScpOworICBhc3NlcnRfZXF1YWxzKGNvbnRy
b2xsZXIuZGVzaXJlZFNpemUsIC0xLCAnMCByZWFkcywgNSBlbnF1ZXVlczogZGVzaXJlZFNpemUg
c2hvdWxkIGJlIC0xJyk7CisgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnZicpOworICBhc3NlcnRfZXF1
YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIC0yLCAnMCByZWFkcywgNiBlbnF1ZXVlczogZGVz
aXJlZFNpemUgc2hvdWxkIGJlIC0yJyk7CisKKworICByZXR1cm4gcmVhZGVyLnJlYWQoKQorICAg
IC50aGVuKHJlc3VsdCA9PiB7CisgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQsIHsg
dmFsdWU6ICdhJywgZG9uZTogZmFsc2UgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICcx
c3QgcmVhZCBnaXZlcyBiYWNrIHRoZSAxc3QgY2h1bmsgZW5xdWV1ZWQgKHF1ZXVlIG5vdyBjb250
YWlucyA1IGNodW5rcyknKTsKKyAgICAgIHJldHVybiByZWFkZXIucmVhZCgpOworICAgIH0pCisg
ICAgLnRoZW4ocmVzdWx0ID0+IHsKKyAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdCwg
eyB2YWx1ZTogJ2InLCBkb25lOiBmYWxzZSB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
JzJuZCByZWFkIGdpdmVzIGJhY2sgdGhlIDJuZCBjaHVuayBlbnF1ZXVlZCAocXVldWUgbm93IGNv
bnRhaW5zIDQgY2h1bmtzKScpOworCisgICAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVz
aXJlZFNpemUsIDAsICcyIHJlYWRzLCA2IGVucXVldWVzOiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUg
MCcpOworICAgICAgY29udHJvbGxlci5lbnF1ZXVlKCdnJyk7CisgICAgICBhc3NlcnRfZXF1YWxz
KGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIC0xLCAnMiByZWFkcywgNyBlbnF1ZXVlczogZGVzaXJl
ZFNpemUgc2hvdWxkIGJlIC0xJyk7CisKKyAgICAgIHJldHVybiByZWFkZXIucmVhZCgpOworICAg
IH0pCisgICAgLnRoZW4ocmVzdWx0ID0+IHsKKyAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJl
c3VsdCwgeyB2YWx1ZTogJ2MnLCBkb25lOiBmYWxzZSB9LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJzNyZCByZWFkIGdpdmVzIGJhY2sgdGhlIDNyZCBjaHVuayBlbnF1ZXVlZCAocXVldWUg
bm93IGNvbnRhaW5zIDQgY2h1bmtzKScpOworICAgICAgcmV0dXJuIHJlYWRlci5yZWFkKCk7Cisg
ICAgfSkKKyAgICAudGhlbihyZXN1bHQgPT4geworICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMo
cmVzdWx0LCB7IHZhbHVlOiAnZCcsIGRvbmU6IGZhbHNlIH0sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnNHRoIHJlYWQgZ2l2ZXMgYmFjayB0aGUgNHRoIGNodW5rIGVucXVldWVkIChxdWV1
ZSBub3cgY29udGFpbnMgMyBjaHVua3MpJyk7CisgICAgICByZXR1cm4gcmVhZGVyLnJlYWQoKTsK
KyAgICB9KQorICAgIC50aGVuKHJlc3VsdCA9PiB7CisgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFs
cyhyZXN1bHQsIHsgdmFsdWU6ICdlJywgZG9uZTogZmFsc2UgfSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICc1dGggcmVhZCBnaXZlcyBiYWNrIHRoZSA1dGggY2h1bmsgZW5xdWV1ZWQgKHF1
ZXVlIG5vdyBjb250YWlucyAyIGNodW5rcyknKTsKKyAgICAgIHJldHVybiByZWFkZXIucmVhZCgp
OworICAgIH0pCisgICAgLnRoZW4ocmVzdWx0ID0+IHsKKyAgICAgIGFzc2VydF9vYmplY3RfZXF1
YWxzKHJlc3VsdCwgeyB2YWx1ZTogJ2YnLCBkb25lOiBmYWxzZSB9LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJzZ0aCByZWFkIGdpdmVzIGJhY2sgdGhlIDZ0aCBjaHVuayBlbnF1ZXVlZCAo
cXVldWUgbm93IGNvbnRhaW5zIDAgY2h1bmtzKScpOworCisgICAgICBhc3NlcnRfZXF1YWxzKGNv
bnRyb2xsZXIuZGVzaXJlZFNpemUsIDMsICc2IHJlYWRzLCA3IGVucXVldWVzOiBkZXNpcmVkU2l6
ZSBzaG91bGQgYmUgMycpOworICAgICAgY29udHJvbGxlci5lbnF1ZXVlKCdoJyk7CisgICAgICBh
c3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDIsICc2IHJlYWRzLCA4IGVucXVl
dWVzOiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUgMicpOworICAgICAgY29udHJvbGxlci5lbnF1ZXVl
KCdpJyk7CisgICAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDEsICc2
IHJlYWRzLCA5IGVucXVldWVzOiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUgMScpOworICAgICAgY29u
dHJvbGxlci5lbnF1ZXVlKCdqJyk7CisgICAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVz
aXJlZFNpemUsIDAsICc2IHJlYWRzLCAxMCBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJl
IDAnKTsKKyAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnaycpOworICAgICAgYXNzZXJ0X2VxdWFs
cyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAtMSwgJzYgcmVhZHMsIDExIGVucXVldWVzOiBkZXNp
cmVkU2l6ZSBzaG91bGQgYmUgLTEnKTsKKyAgICB9KTsKKworfSwgJ0NvcnJlY3RseSBnb3Zlcm5z
IGEgUmVhZGFibGVTdHJlYW1Db250cm9sbGVyXCdzIGRlc2lyZWRTaXplIHByb3BlcnR5IChIV00g
PSA0KScpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvY291bnQtcXVldWluZy1zdHJhdGVneS1p
bnRlZ3JhdGlvbi5hbnkud29ya2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2NvdW50LXF1
ZXVpbmctc3RyYXRlZ3ktaW50ZWdyYXRpb24uYW55Lndvcmtlci1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNjA2MzNjYTA3ZmQxNmQ5YjE3YjVhNDYyNTQzMzA2OGI5MTVhMjBkYwotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3ktaW50ZWdyYXRpb24u
YW55Lndvcmtlci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw2IEBACisKK1BBU1MgQ2FuIGNvbnN0
cnVjdCBhIHJlYWRhYmxlIHN0cmVhbSB3aXRoIGEgdmFsaWQgQ291bnRRdWV1aW5nU3RyYXRlZ3kg
CitQQVNTIENvcnJlY3RseSBnb3Zlcm5zIGEgUmVhZGFibGVTdHJlYW1Db250cm9sbGVyJ3MgZGVz
aXJlZFNpemUgcHJvcGVydHkgKEhXTSA9IDApIAorUEFTUyBDb3JyZWN0bHkgZ292ZXJucyBhIFJl
YWRhYmxlU3RyZWFtQ29udHJvbGxlcidzIGRlc2lyZWRTaXplIHByb3BlcnR5IChIV00gPSAxKSAK
K1BBU1MgQ29ycmVjdGx5IGdvdmVybnMgYSBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIncyBkZXNp
cmVkU2l6ZSBwcm9wZXJ0eSAoSFdNID0gNCkgCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2Nv
dW50LXF1ZXVpbmctc3RyYXRlZ3ktaW50ZWdyYXRpb24uYW55Lndvcmtlci5odG1sIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0
cmVhbXMvY291bnQtcXVldWluZy1zdHJhdGVneS1pbnRlZ3JhdGlvbi5hbnkud29ya2VyLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMjM4MjkxMzUyOGU2OTNiM2E1ZDU2YzY2MGE0NTA2MDk4MGI1NDhjMwotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3ktaW50ZWdy
YXRpb24uYW55Lndvcmtlci5odG1sCkBAIC0wLDAgKzEgQEAKKzwhLS0gVGhpcyBmaWxlIGlzIHJl
cXVpcmVkIGZvciBXZWJLaXQgdGVzdCBpbmZyYXN0cnVjdHVyZSB0byBydW4gdGhlIHRlbXBsYXRl
ZCB0ZXN0IC0tPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1z
dHJlYW1zL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3ktaW50ZWdyYXRpb24uZGVkaWNhdGVkd29ya2Vy
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3ktaW50ZWdy
YXRpb24uZGVkaWNhdGVkd29ya2VyLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggNjA2MzNjYTA3ZmQxNmQ5YjE3YjVhNDYyNTQzMzA2OGI5MTVhMjBkYy4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9jb3Vu
dC1xdWV1aW5nLXN0cmF0ZWd5LWludGVncmF0aW9uLmRlZGljYXRlZHdvcmtlci1leHBlY3RlZC50
eHQKKysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAgQEAKLQotUEFTUyBDYW4gY29uc3RydWN0IGEg
cmVhZGFibGUgc3RyZWFtIHdpdGggYSB2YWxpZCBDb3VudFF1ZXVpbmdTdHJhdGVneSAKLVBBU1Mg
Q29ycmVjdGx5IGdvdmVybnMgYSBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIncyBkZXNpcmVkU2l6
ZSBwcm9wZXJ0eSAoSFdNID0gMCkgCi1QQVNTIENvcnJlY3RseSBnb3Zlcm5zIGEgUmVhZGFibGVT
dHJlYW1Db250cm9sbGVyJ3MgZGVzaXJlZFNpemUgcHJvcGVydHkgKEhXTSA9IDEpIAotUEFTUyBD
b3JyZWN0bHkgZ292ZXJucyBhIFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlcidzIGRlc2lyZWRTaXpl
IHByb3BlcnR5IChIV00gPSA0KSAKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvY291bnQtcXVl
dWluZy1zdHJhdGVneS1pbnRlZ3JhdGlvbi5kZWRpY2F0ZWR3b3JrZXIuaHRtbCBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJl
YW1zL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3ktaW50ZWdyYXRpb24uZGVkaWNhdGVkd29ya2VyLmh0
bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU5YmNiMjFiMDFmYmVhMDEwOGRhMjJj
OWVmZjJhNjQ3NTkwNmM2NjEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJl
YW1zL3JlYWRhYmxlLXN0cmVhbXMvY291bnQtcXVldWluZy1zdHJhdGVneS1pbnRlZ3JhdGlvbi5k
ZWRpY2F0ZWR3b3JrZXIuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLTwhRE9D
VFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHRpdGxlPmNvdW50LXF1ZXVpbmct
c3RyYXRlZ3ktaW50ZWdyYXRpb24uanMgZGVkaWNhdGVkIHdvcmtlciB3cmFwcGVyIGZpbGU8L3Rp
dGxlPgotCi08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+
Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+
Ci0KLTxzY3JpcHQ+Ci0ndXNlIHN0cmljdCc7Ci1mZXRjaF90ZXN0c19mcm9tX3dvcmtlcihuZXcg
V29ya2VyKCdjb3VudC1xdWV1aW5nLXN0cmF0ZWd5LWludGVncmF0aW9uLmpzJykpOwotPC9zY3Jp
cHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5LWludGVn
cmF0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5LWludGVncmF0
aW9uLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg5ZTJkOTlmYzdjZjY5YjA1
NjlhOTlhM2Y1NmJhZGYwZWFhZDhlMDEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvY291bnQtcXVldWluZy1zdHJhdGVneS1pbnRlZ3Jh
dGlvbi5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+
Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08dGl0bGU+Y291bnQtcXVldWluZy1zdHJhdGVneS1p
bnRlZ3JhdGlvbi5qcyBicm93c2VyIGNvbnRleHQgd3JhcHBlciBmaWxlPC90aXRsZT4KLQotPHNj
cmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBz
cmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotCi0KLQotPHNj
cmlwdCBzcmM9ImNvdW50LXF1ZXVpbmctc3RyYXRlZ3ktaW50ZWdyYXRpb24uanMiPjwvc2NyaXB0
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvY291bnQtcXVldWluZy1zdHJhdGVneS1pbnRlZ3Jh
dGlvbi5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3ktaW50ZWdyYXRpb24u
anMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY1YzhiOGNmMDAyOGI0N2Y3YTFiNjg4
NzNhYzZhYWM4NTgzOTZlZjUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJl
YW1zL3JlYWRhYmxlLXN0cmVhbXMvY291bnQtcXVldWluZy1zdHJhdGVneS1pbnRlZ3JhdGlvbi5q
cworKysgL2Rldi9udWxsCkBAIC0xLDIxMyArMCwwIEBACi0ndXNlIHN0cmljdCc7Ci0KLWlmIChz
ZWxmLmltcG9ydFNjcmlwdHMpIHsKLSAgc2VsZi5pbXBvcnRTY3JpcHRzKCcvcmVzb3VyY2VzL3Rl
c3RoYXJuZXNzLmpzJyk7Ci19Ci0KLXRlc3QoKCkgPT4gewotCi0gIG5ldyBSZWFkYWJsZVN0cmVh
bSh7fSwgbmV3IENvdW50UXVldWluZ1N0cmF0ZWd5KHsgaGlnaFdhdGVyTWFyazogNCB9KSk7Ci0K
LX0sICdDYW4gY29uc3RydWN0IGEgcmVhZGFibGUgc3RyZWFtIHdpdGggYSB2YWxpZCBDb3VudFF1
ZXVpbmdTdHJhdGVneScpOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotCi0gIGxldCBjb250cm9s
bGVyOwotICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSgKLSAgICB7Ci0gICAgICBzdGFy
dChjKSB7Ci0gICAgICAgIGNvbnRyb2xsZXIgPSBjOwotICAgICAgfQotICAgIH0sCi0gICAgbmV3
IENvdW50UXVldWluZ1N0cmF0ZWd5KHsgaGlnaFdhdGVyTWFyazogMCB9KQotICApOwotICBjb25z
dCByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKLQotICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIu
ZGVzaXJlZFNpemUsIDAsICcwIHJlYWRzLCAwIGVucXVldWVzOiBkZXNpcmVkU2l6ZSBzaG91bGQg
YmUgMCcpOwotICBjb250cm9sbGVyLmVucXVldWUoJ2EnKTsKLSAgYXNzZXJ0X2VxdWFscyhjb250
cm9sbGVyLmRlc2lyZWRTaXplLCAtMSwgJzAgcmVhZHMsIDEgZW5xdWV1ZTogZGVzaXJlZFNpemUg
c2hvdWxkIGJlIC0xJyk7Ci0gIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYicpOwotICBhc3NlcnRfZXF1
YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIC0yLCAnMCByZWFkcywgMiBlbnF1ZXVlczogZGVz
aXJlZFNpemUgc2hvdWxkIGJlIC0yJyk7Ci0gIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYycpOwotICBh
c3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIC0zLCAnMCByZWFkcywgMyBlbnF1
ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIC0zJyk7Ci0gIGNvbnRyb2xsZXIuZW5xdWV1ZSgn
ZCcpOwotICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIC00LCAnMCByZWFk
cywgNCBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIC00Jyk7Ci0KLSAgcmV0dXJuIHJl
YWRlci5yZWFkKCkKLSAgICAudGhlbihyZXN1bHQgPT4gewotICAgICAgYXNzZXJ0X29iamVjdF9l
cXVhbHMocmVzdWx0LCB7IHZhbHVlOiAnYScsIGRvbmU6IGZhbHNlIH0sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAnMXN0IHJlYWQgZ2l2ZXMgYmFjayB0aGUgMXN0IGNodW5rIGVucXVldWVk
IChxdWV1ZSBub3cgY29udGFpbnMgMyBjaHVua3MpJyk7Ci0gICAgICByZXR1cm4gcmVhZGVyLnJl
YWQoKTsKLSAgICB9KQotICAgIC50aGVuKHJlc3VsdCA9PiB7Ci0gICAgICBhc3NlcnRfb2JqZWN0
X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6ICdiJywgZG9uZTogZmFsc2UgfSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICcybmQgcmVhZCBnaXZlcyBiYWNrIHRoZSAybmQgY2h1bmsgZW5xdWV1
ZWQgKHF1ZXVlIG5vdyBjb250YWlucyAyIGNodW5rcyknKTsKLSAgICAgIHJldHVybiByZWFkZXIu
cmVhZCgpOwotICAgIH0pCi0gICAgLnRoZW4ocmVzdWx0ID0+IHsKLSAgICAgIGFzc2VydF9vYmpl
Y3RfZXF1YWxzKHJlc3VsdCwgeyB2YWx1ZTogJ2MnLCBkb25lOiBmYWxzZSB9LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJzNyZCByZWFkIGdpdmVzIGJhY2sgdGhlIDNyZCBjaHVuayBlbnF1
ZXVlZCAocXVldWUgbm93IGNvbnRhaW5zIDEgY2h1bmspJyk7Ci0KLSAgICAgIGFzc2VydF9lcXVh
bHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgLTEsICczIHJlYWRzLCA0IGVucXVldWVzOiBkZXNp
cmVkU2l6ZSBzaG91bGQgYmUgLTEnKTsKLSAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnZScpOwot
ICAgICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAtMiwgJzMgcmVhZHMs
IDUgZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAtMicpOwotCi0gICAgICByZXR1cm4g
cmVhZGVyLnJlYWQoKTsKLSAgICB9KQotICAgIC50aGVuKHJlc3VsdCA9PiB7Ci0gICAgICBhc3Nl
cnRfb2JqZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6ICdkJywgZG9uZTogZmFsc2UgfSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICc0dGggcmVhZCBnaXZlcyBiYWNrIHRoZSA0dGggY2h1
bmsgZW5xdWV1ZWQgKHF1ZXVlIG5vdyBjb250YWlucyAxIGNodW5rcyknKTsKLSAgICAgIHJldHVy
biByZWFkZXIucmVhZCgpOwotCi0gICAgfSkudGhlbihyZXN1bHQgPT4gewotICAgICAgYXNzZXJ0
X29iamVjdF9lcXVhbHMocmVzdWx0LCB7IHZhbHVlOiAnZScsIGRvbmU6IGZhbHNlIH0sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAnNXRoIHJlYWQgZ2l2ZXMgYmFjayB0aGUgNXRoIGNodW5r
IGVucXVldWVkIChxdWV1ZSBub3cgY29udGFpbnMgMCBjaHVua3MpJyk7Ci0KLSAgICAgIGFzc2Vy
dF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMCwgJzUgcmVhZHMsIDUgZW5xdWV1ZXM6
IGRlc2lyZWRTaXplIHNob3VsZCBiZSAwJyk7Ci0gICAgICBjb250cm9sbGVyLmVucXVldWUoJ2Yn
KTsKLSAgICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgLTEsICc1IHJl
YWRzLCA2IGVucXVldWVzOiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUgLTEnKTsKLSAgICAgIGNvbnRy
b2xsZXIuZW5xdWV1ZSgnZycpOwotICAgICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2ly
ZWRTaXplLCAtMiwgJzUgcmVhZHMsIDcgZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAt
MicpOwotICAgIH0pOwotCi19LCAnQ29ycmVjdGx5IGdvdmVybnMgYSBSZWFkYWJsZVN0cmVhbUNv
bnRyb2xsZXJcJ3MgZGVzaXJlZFNpemUgcHJvcGVydHkgKEhXTSA9IDApJyk7Ci0KLXByb21pc2Vf
dGVzdCgoKSA9PiB7Ci0KLSAgbGV0IGNvbnRyb2xsZXI7Ci0gIGNvbnN0IHJzID0gbmV3IFJlYWRh
YmxlU3RyZWFtKAotICAgIHsKLSAgICAgIHN0YXJ0KGMpIHsKLSAgICAgICAgY29udHJvbGxlciA9
IGM7Ci0gICAgICB9Ci0gICAgfSwKLSAgICBuZXcgQ291bnRRdWV1aW5nU3RyYXRlZ3koeyBoaWdo
V2F0ZXJNYXJrOiAxIH0pCi0gICk7Ci0gIGNvbnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcigpOwot
Ci0gIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMSwgJzAgcmVhZHMsIDAg
ZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAxJyk7Ci0gIGNvbnRyb2xsZXIuZW5xdWV1
ZSgnYScpOwotICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDAsICcwIHJl
YWRzLCAxIGVucXVldWU6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAwJyk7Ci0gIGNvbnRyb2xsZXIu
ZW5xdWV1ZSgnYicpOwotICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIC0x
LCAnMCByZWFkcywgMiBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIC0xJyk7Ci0gIGNv
bnRyb2xsZXIuZW5xdWV1ZSgnYycpOwotICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJl
ZFNpemUsIC0yLCAnMCByZWFkcywgMyBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIC0y
Jyk7Ci0gIGNvbnRyb2xsZXIuZW5xdWV1ZSgnZCcpOwotICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xs
ZXIuZGVzaXJlZFNpemUsIC0zLCAnMCByZWFkcywgNCBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hv
dWxkIGJlIC0zJyk7Ci0KLSAgcmV0dXJuIHJlYWRlci5yZWFkKCkKLSAgICAudGhlbihyZXN1bHQg
PT4gewotICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0LCB7IHZhbHVlOiAnYScsIGRv
bmU6IGZhbHNlIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAnMXN0IHJlYWQgZ2l2ZXMg
YmFjayB0aGUgMXN0IGNodW5rIGVucXVldWVkIChxdWV1ZSBub3cgY29udGFpbnMgMyBjaHVua3Mp
Jyk7Ci0gICAgICByZXR1cm4gcmVhZGVyLnJlYWQoKTsKLSAgICB9KQotICAgIC50aGVuKHJlc3Vs
dCA9PiB7Ci0gICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6ICdiJywg
ZG9uZTogZmFsc2UgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICcybmQgcmVhZCBnaXZl
cyBiYWNrIHRoZSAybmQgY2h1bmsgZW5xdWV1ZWQgKHF1ZXVlIG5vdyBjb250YWlucyAyIGNodW5r
cyknKTsKLSAgICAgIHJldHVybiByZWFkZXIucmVhZCgpOwotICAgIH0pCi0gICAgLnRoZW4ocmVz
dWx0ID0+IHsKLSAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdCwgeyB2YWx1ZTogJ2Mn
LCBkb25lOiBmYWxzZSB9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJzNyZCByZWFkIGdp
dmVzIGJhY2sgdGhlIDNyZCBjaHVuayBlbnF1ZXVlZCAocXVldWUgbm93IGNvbnRhaW5zIDEgY2h1
bmspJyk7Ci0KLSAgICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMCwg
JzMgcmVhZHMsIDQgZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAwJyk7Ci0gICAgICBj
b250cm9sbGVyLmVucXVldWUoJ2UnKTsKLSAgICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5k
ZXNpcmVkU2l6ZSwgLTEsICczIHJlYWRzLCA1IGVucXVldWVzOiBkZXNpcmVkU2l6ZSBzaG91bGQg
YmUgLTEnKTsKLQotICAgICAgcmV0dXJuIHJlYWRlci5yZWFkKCk7Ci0gICAgfSkKLSAgICAudGhl
bihyZXN1bHQgPT4gewotICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0LCB7IHZhbHVl
OiAnZCcsIGRvbmU6IGZhbHNlIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAnNHRoIHJl
YWQgZ2l2ZXMgYmFjayB0aGUgNHRoIGNodW5rIGVucXVldWVkIChxdWV1ZSBub3cgY29udGFpbnMg
MSBjaHVua3MpJyk7Ci0gICAgICByZXR1cm4gcmVhZGVyLnJlYWQoKTsKLSAgICB9KQotICAgIC50
aGVuKHJlc3VsdCA9PiB7Ci0gICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFs
dWU6ICdlJywgZG9uZTogZmFsc2UgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICc1dGgg
cmVhZCBnaXZlcyBiYWNrIHRoZSA1dGggY2h1bmsgZW5xdWV1ZWQgKHF1ZXVlIG5vdyBjb250YWlu
cyAwIGNodW5rcyknKTsKLQotICAgICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRT
aXplLCAxLCAnNSByZWFkcywgNSBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIDEnKTsK
LSAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnZicpOwotICAgICAgYXNzZXJ0X2VxdWFscyhjb250
cm9sbGVyLmRlc2lyZWRTaXplLCAwLCAnNSByZWFkcywgNiBlbnF1ZXVlczogZGVzaXJlZFNpemUg
c2hvdWxkIGJlIDAnKTsKLSAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnZycpOwotICAgICAgYXNz
ZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAtMSwgJzUgcmVhZHMsIDcgZW5xdWV1
ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAtMScpOwotICAgIH0pOwotCi19LCAnQ29ycmVjdGx5
IGdvdmVybnMgYSBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJcJ3MgZGVzaXJlZFNpemUgcHJvcGVy
dHkgKEhXTSA9IDEpJyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgbGV0IGNvbnRyb2xs
ZXI7Ci0gIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKAotICAgIHsKLSAgICAgIHN0YXJ0
KGMpIHsKLSAgICAgICAgY29udHJvbGxlciA9IGM7Ci0gICAgICB9Ci0gICAgfSwKLSAgICBuZXcg
Q291bnRRdWV1aW5nU3RyYXRlZ3koeyBoaWdoV2F0ZXJNYXJrOiA0IH0pCi0gICk7Ci0gIGNvbnN0
IHJlYWRlciA9IHJzLmdldFJlYWRlcigpOwotCi0gIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5k
ZXNpcmVkU2l6ZSwgNCwgJzAgcmVhZHMsIDAgZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBi
ZSA0Jyk7Ci0gIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYScpOwotICBhc3NlcnRfZXF1YWxzKGNvbnRy
b2xsZXIuZGVzaXJlZFNpemUsIDMsICcwIHJlYWRzLCAxIGVucXVldWU6IGRlc2lyZWRTaXplIHNo
b3VsZCBiZSAzJyk7Ci0gIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYicpOwotICBhc3NlcnRfZXF1YWxz
KGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDIsICcwIHJlYWRzLCAyIGVucXVldWVzOiBkZXNpcmVk
U2l6ZSBzaG91bGQgYmUgMicpOwotICBjb250cm9sbGVyLmVucXVldWUoJ2MnKTsKLSAgYXNzZXJ0
X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAxLCAnMCByZWFkcywgMyBlbnF1ZXVlczog
ZGVzaXJlZFNpemUgc2hvdWxkIGJlIDEnKTsKLSAgY29udHJvbGxlci5lbnF1ZXVlKCdkJyk7Ci0g
IGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMCwgJzAgcmVhZHMsIDQgZW5x
dWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAwJyk7Ci0gIGNvbnRyb2xsZXIuZW5xdWV1ZSgn
ZScpOwotICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIC0xLCAnMCByZWFk
cywgNSBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIC0xJyk7Ci0gIGNvbnRyb2xsZXIu
ZW5xdWV1ZSgnZicpOwotICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIC0y
LCAnMCByZWFkcywgNiBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIC0yJyk7Ci0KLQot
ICByZXR1cm4gcmVhZGVyLnJlYWQoKQotICAgIC50aGVuKHJlc3VsdCA9PiB7Ci0gICAgICBhc3Nl
cnRfb2JqZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6ICdhJywgZG9uZTogZmFsc2UgfSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICcxc3QgcmVhZCBnaXZlcyBiYWNrIHRoZSAxc3QgY2h1
bmsgZW5xdWV1ZWQgKHF1ZXVlIG5vdyBjb250YWlucyA1IGNodW5rcyknKTsKLSAgICAgIHJldHVy
biByZWFkZXIucmVhZCgpOwotICAgIH0pCi0gICAgLnRoZW4ocmVzdWx0ID0+IHsKLSAgICAgIGFz
c2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdCwgeyB2YWx1ZTogJ2InLCBkb25lOiBmYWxzZSB9LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJzJuZCByZWFkIGdpdmVzIGJhY2sgdGhlIDJuZCBj
aHVuayBlbnF1ZXVlZCAocXVldWUgbm93IGNvbnRhaW5zIDQgY2h1bmtzKScpOwotCi0gICAgICBh
c3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDAsICcyIHJlYWRzLCA2IGVucXVl
dWVzOiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUgMCcpOwotICAgICAgY29udHJvbGxlci5lbnF1ZXVl
KCdnJyk7Ci0gICAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIC0xLCAn
MiByZWFkcywgNyBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIC0xJyk7Ci0KLSAgICAg
IHJldHVybiByZWFkZXIucmVhZCgpOwotICAgIH0pCi0gICAgLnRoZW4ocmVzdWx0ID0+IHsKLSAg
ICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdCwgeyB2YWx1ZTogJ2MnLCBkb25lOiBmYWxz
ZSB9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJzNyZCByZWFkIGdpdmVzIGJhY2sgdGhl
IDNyZCBjaHVuayBlbnF1ZXVlZCAocXVldWUgbm93IGNvbnRhaW5zIDQgY2h1bmtzKScpOwotICAg
ICAgcmV0dXJuIHJlYWRlci5yZWFkKCk7Ci0gICAgfSkKLSAgICAudGhlbihyZXN1bHQgPT4gewot
ICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0LCB7IHZhbHVlOiAnZCcsIGRvbmU6IGZh
bHNlIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAnNHRoIHJlYWQgZ2l2ZXMgYmFjayB0
aGUgNHRoIGNodW5rIGVucXVldWVkIChxdWV1ZSBub3cgY29udGFpbnMgMyBjaHVua3MpJyk7Ci0g
ICAgICByZXR1cm4gcmVhZGVyLnJlYWQoKTsKLSAgICB9KQotICAgIC50aGVuKHJlc3VsdCA9PiB7
Ci0gICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6ICdlJywgZG9uZTog
ZmFsc2UgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICc1dGggcmVhZCBnaXZlcyBiYWNr
IHRoZSA1dGggY2h1bmsgZW5xdWV1ZWQgKHF1ZXVlIG5vdyBjb250YWlucyAyIGNodW5rcyknKTsK
LSAgICAgIHJldHVybiByZWFkZXIucmVhZCgpOwotICAgIH0pCi0gICAgLnRoZW4ocmVzdWx0ID0+
IHsKLSAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdCwgeyB2YWx1ZTogJ2YnLCBkb25l
OiBmYWxzZSB9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJzZ0aCByZWFkIGdpdmVzIGJh
Y2sgdGhlIDZ0aCBjaHVuayBlbnF1ZXVlZCAocXVldWUgbm93IGNvbnRhaW5zIDAgY2h1bmtzKScp
OwotCi0gICAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDMsICc2IHJl
YWRzLCA3IGVucXVldWVzOiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUgMycpOwotICAgICAgY29udHJv
bGxlci5lbnF1ZXVlKCdoJyk7Ci0gICAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJl
ZFNpemUsIDIsICc2IHJlYWRzLCA4IGVucXVldWVzOiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUgMicp
OwotICAgICAgY29udHJvbGxlci5lbnF1ZXVlKCdpJyk7Ci0gICAgICBhc3NlcnRfZXF1YWxzKGNv
bnRyb2xsZXIuZGVzaXJlZFNpemUsIDEsICc2IHJlYWRzLCA5IGVucXVldWVzOiBkZXNpcmVkU2l6
ZSBzaG91bGQgYmUgMScpOwotICAgICAgY29udHJvbGxlci5lbnF1ZXVlKCdqJyk7Ci0gICAgICBh
c3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDAsICc2IHJlYWRzLCAxMCBlbnF1
ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIDAnKTsKLSAgICAgIGNvbnRyb2xsZXIuZW5xdWV1
ZSgnaycpOwotICAgICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAtMSwg
JzYgcmVhZHMsIDExIGVucXVldWVzOiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUgLTEnKTsKLSAgICB9
KTsKLQotfSwgJ0NvcnJlY3RseSBnb3Zlcm5zIGEgUmVhZGFibGVTdHJlYW1Db250cm9sbGVyXCdz
IGRlc2lyZWRTaXplIHByb3BlcnR5IChIV00gPSA0KScpOwotCi1kb25lKCk7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVh
ZGFibGUtc3RyZWFtcy9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5LWludGVncmF0aW9uLnNlcnZpY2V3
b3JrZXIuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvY291bnQtcXVldWluZy1zdHJh
dGVneS1pbnRlZ3JhdGlvbi5zZXJ2aWNld29ya2VyLmh0dHBzLWV4cGVjdGVkLnR4dApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWJkODA0NDc3MzA0MGMyODczMDFkOTAxMzBkMWY4MjE1
YmQwNTY1ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFi
bGUtc3RyZWFtcy9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5LWludGVncmF0aW9uLnNlcnZpY2V3b3Jr
ZXIuaHR0cHMtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNyArMCwwIEBACi0KLVBB
U1MgU2VydmljZSB3b3JrZXIgdGVzdCBzZXR1cCAKLVBBU1MgQ2FuIGNvbnN0cnVjdCBhIHJlYWRh
YmxlIHN0cmVhbSB3aXRoIGEgdmFsaWQgQ291bnRRdWV1aW5nU3RyYXRlZ3kgCi1QQVNTIENvcnJl
Y3RseSBnb3Zlcm5zIGEgUmVhZGFibGVTdHJlYW1Db250cm9sbGVyJ3MgZGVzaXJlZFNpemUgcHJv
cGVydHkgKEhXTSA9IDApIAotUEFTUyBDb3JyZWN0bHkgZ292ZXJucyBhIFJlYWRhYmxlU3RyZWFt
Q29udHJvbGxlcidzIGRlc2lyZWRTaXplIHByb3BlcnR5IChIV00gPSAxKSAKLVBBU1MgQ29ycmVj
dGx5IGdvdmVybnMgYSBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIncyBkZXNpcmVkU2l6ZSBwcm9w
ZXJ0eSAoSFdNID0gNCkgCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2NvdW50LXF1ZXVpbmct
c3RyYXRlZ3ktaW50ZWdyYXRpb24uc2VydmljZXdvcmtlci5odHRwcy5odG1sIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVh
bXMvY291bnQtcXVldWluZy1zdHJhdGVneS1pbnRlZ3JhdGlvbi5zZXJ2aWNld29ya2VyLmh0dHBz
Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAyOWFjNzY1ZDRiODU3MzA3ODVj
YmYwMTBjNTFjMjE4ZTEyZWRkZjQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
dHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvY291bnQtcXVldWluZy1zdHJhdGVneS1pbnRlZ3JhdGlv
bi5zZXJ2aWNld29ya2VyLmh0dHBzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBA
Ci08IURPQ1RZUEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTx0aXRsZT5jb3VudC1x
dWV1aW5nLXN0cmF0ZWd5LWludGVncmF0aW9uLmpzIHNlcnZpY2Ugd29ya2VyIHdyYXBwZXIgZmls
ZTwvdGl0bGU+Ci0KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3Nj
cmlwdD4KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3Nj
cmlwdD4KLTxzY3JpcHQgc3JjPSIvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL3Jlc291
cmNlcy90ZXN0LWhlbHBlcnMuc3ViLmpzIj48L3NjcmlwdD4KLQotPHNjcmlwdD4KLSd1c2Ugc3Ry
aWN0JzsKLXNlcnZpY2Vfd29ya2VyX3Rlc3QoJ2NvdW50LXF1ZXVpbmctc3RyYXRlZ3ktaW50ZWdy
YXRpb24uanMnLCAnU2VydmljZSB3b3JrZXIgdGVzdCBzZXR1cCcpOwotPC9zY3JpcHQ+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvcmVhZGFibGUtc3RyZWFtcy9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5LWludGVncmF0aW9uLnNo
YXJlZHdvcmtlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9jb3VudC1xdWV1aW5nLXN0cmF0
ZWd5LWludGVncmF0aW9uLnNoYXJlZHdvcmtlci1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDA5ZDVkMjUwOWQ3ODQ3ZThjZDZmZTY2MDZhYTYwY2RkMzNhYTQ3NGUu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVh
bXMvY291bnQtcXVldWluZy1zdHJhdGVneS1pbnRlZ3JhdGlvbi5zaGFyZWR3b3JrZXItZXhwZWN0
ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1DT05TT0xFIE1FU1NBR0U6IFJl
ZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBTaGFyZWRXb3JrZXIKLQotSGFybmVz
cyBFcnJvciAoRkFJTCksIG1lc3NhZ2UgPSBSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJp
YWJsZTogU2hhcmVkV29ya2VyCi0KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvY291bnQtcXVl
dWluZy1zdHJhdGVneS1pbnRlZ3JhdGlvbi5zaGFyZWR3b3JrZXIuaHRtbCBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1z
L2NvdW50LXF1ZXVpbmctc3RyYXRlZ3ktaW50ZWdyYXRpb24uc2hhcmVkd29ya2VyLmh0bWwKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdhYTZmNTQwZGMwODMzZGY3MDkwNDhmODExOTIx
NjFjMDcwNjg3MDIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3Jl
YWRhYmxlLXN0cmVhbXMvY291bnQtcXVldWluZy1zdHJhdGVneS1pbnRlZ3JhdGlvbi5zaGFyZWR3
b3JrZXIuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLTwhRE9DVFlQRSBodG1s
PgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHRpdGxlPmNvdW50LXF1ZXVpbmctc3RyYXRlZ3kt
aW50ZWdyYXRpb24uanMgc2hhcmVkIHdvcmtlciB3cmFwcGVyIGZpbGU8L3RpdGxlPgotCi08c2Ny
aXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNy
Yz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci0KLTxzY3JpcHQ+
Ci0ndXNlIHN0cmljdCc7Ci1mZXRjaF90ZXN0c19mcm9tX3dvcmtlcihuZXcgU2hhcmVkV29ya2Vy
KCdjb3VudC1xdWV1aW5nLXN0cmF0ZWd5LWludGVncmF0aW9uLmpzJykpOwotPC9zY3JpcHQ+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9kZWZhdWx0LXJlYWRlci5hbnktZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRh
YmxlLXN0cmVhbXMvZGVmYXVsdC1yZWFkZXIuYW55LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5l
NDdlNzVhYmI5NjQwNmU5ODg3ZmNiNjExMWU5MGZkYWNkNWZjM2ZlCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3Jl
YWRhYmxlLXN0cmVhbXMvZGVmYXVsdC1yZWFkZXIuYW55LWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDM0IEBACisKK0ZBSUwgUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyIGNvbnN0cnVjdG9yIHNo
b3VsZCBnZXQgYSBSZWFkYWJsZVN0cmVhbSBvYmplY3QgYXMgYXJndW1lbnQgYXNzZXJ0X3Rocm93
c19qczogZnVuY3Rpb24gIigpID0+IG5ldyBSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIoJ3Bv
dGF0bycpIiB0aHJldyBvYmplY3QgIlJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxl
OiBSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIiICgiUmVmZXJlbmNlRXJyb3IiKSBleHBlY3Rl
ZCBpbnN0YW5jZSBvZiBmdW5jdGlvbiAiZnVuY3Rpb24gVHlwZUVycm9yKCkgeworICAgIFtuYXRp
dmUgY29kZV0KK30iICgiVHlwZUVycm9yIikKK0ZBSUwgUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVh
ZGVyIGNsb3NlZCBzaG91bGQgYWx3YXlzIHJldHVybiB0aGUgc2FtZSBwcm9taXNlIG9iamVjdCBD
YW4ndCBmaW5kIHZhcmlhYmxlOiBSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIKK0ZBSUwgQ29u
c3RydWN0aW5nIGEgUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyIGRpcmVjdGx5IHNob3VsZCBm
YWlsIGlmIHRoZSBzdHJlYW0gaXMgYWxyZWFkeSBsb2NrZWQgKHZpYSBkaXJlY3QgY29uc3RydWN0
aW9uKSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIKK0ZB
SUwgR2V0dGluZyBhIFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlciB2aWEgZ2V0UmVhZGVyIHNo
b3VsZCBmYWlsIGlmIHRoZSBzdHJlYW0gaXMgYWxyZWFkeSBsb2NrZWQgKHZpYSBkaXJlY3QgY29u
c3RydWN0aW9uKSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFk
ZXIKK0ZBSUwgQ29uc3RydWN0aW5nIGEgUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyIGRpcmVj
dGx5IHNob3VsZCBmYWlsIGlmIHRoZSBzdHJlYW0gaXMgYWxyZWFkeSBsb2NrZWQgKHZpYSBnZXRS
ZWFkZXIpIGFzc2VydF90aHJvd3NfanM6IGNvbnN0cnVjdGluZyBkaXJlY3RseSBzaG91bGQgZmFp
bCBmdW5jdGlvbiAiKCkgPT4gbmV3IFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlcihycykiIHRo
cmV3IG9iamVjdCAiUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IFJlYWRhYmxl
U3RyZWFtRGVmYXVsdFJlYWRlciIgKCJSZWZlcmVuY2VFcnJvciIpIGV4cGVjdGVkIGluc3RhbmNl
IG9mIGZ1bmN0aW9uICJmdW5jdGlvbiBUeXBlRXJyb3IoKSB7CisgICAgW25hdGl2ZSBjb2RlXQor
fSIgKCJUeXBlRXJyb3IiKQorUEFTUyBHZXR0aW5nIGEgUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVh
ZGVyIHZpYSBnZXRSZWFkZXIgc2hvdWxkIGZhaWwgaWYgdGhlIHN0cmVhbSBpcyBhbHJlYWR5IGxv
Y2tlZCAodmlhIGdldFJlYWRlcikgCitGQUlMIENvbnN0cnVjdGluZyBhIFJlYWRhYmxlU3RyZWFt
RGVmYXVsdFJlYWRlciBkaXJlY3RseSBzaG91bGQgYmUgT0sgaWYgdGhlIHN0cmVhbSBpcyBjbG9z
ZWQgQ2FuJ3QgZmluZCB2YXJpYWJsZTogUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyCitGQUlM
IENvbnN0cnVjdGluZyBhIFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlciBkaXJlY3RseSBzaG91
bGQgYmUgT0sgaWYgdGhlIHN0cmVhbSBpcyBlcnJvcmVkIENhbid0IGZpbmQgdmFyaWFibGU6IFJl
YWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlcgorUEFTUyBSZWFkaW5nIGZyb20gYSByZWFkZXIgZm9y
IGFuIGVtcHR5IHN0cmVhbSB3aWxsIHdhaXQgdW50aWwgYSBjaHVuayBpcyBhdmFpbGFibGUgCitQ
QVNTIGNhbmNlbCgpIG9uIGEgcmVhZGVyIGRvZXMgbm90IHJlbGVhc2UgdGhlIHJlYWRlciAKK1BB
U1MgY2xvc2VkIHNob3VsZCBiZSBmdWxmaWxsZWQgYWZ0ZXIgc3RyZWFtIGlzIGNsb3NlZCAoLmNs
b3NlZCBhY2Nlc3MgYmVmb3JlIGFjcXVpcmluZykgCitQQVNTIGNsb3NlZCBzaG91bGQgYmUgcmVq
ZWN0ZWQgYWZ0ZXIgcmVhZGVyIHJlbGVhc2VzIGl0cyBsb2NrIChtdWx0aXBsZSBzdHJlYW0gbG9j
a3MpIAorUEFTUyBNdWx0aXBsZSByZWFkZXJzIGNhbiBhY2Nlc3MgdGhlIHN0cmVhbSBpbiBzZXF1
ZW5jZSAKK1BBU1MgQ2Fubm90IHVzZSBhbiBhbHJlYWR5LXJlbGVhc2VkIHJlYWRlciB0byB1bmxv
Y2sgYSBzdHJlYW0gYWdhaW4gCitQQVNTIGNhbmNlbCgpIG9uIGEgcmVsZWFzZWQgcmVhZGVyIGlz
IGEgbm8tb3AgYW5kIGRvZXMgbm90IHBhc3MgdGhyb3VnaCAKK1BBU1MgR2V0dGluZyBhIHNlY29u
ZCByZWFkZXIgYWZ0ZXIgZXJyb3JpbmcgdGhlIHN0cmVhbSBhbmQgcmVsZWFzaW5nIHRoZSByZWFk
ZXIgc2hvdWxkIHN1Y2NlZWQgCitQQVNTIFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlciBjbG9z
ZWQgcHJvbWlzZSBzaG91bGQgYmUgcmVqZWN0ZWQgd2l0aCB1bmRlZmluZWQgaWYgdGhhdCBpcyB0
aGUgZXJyb3IgCitQQVNTIFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlcjogaWYgc3RhcnQgcmVq
ZWN0cyB3aXRoIG5vIHBhcmFtZXRlciwgaXQgc2hvdWxkIGVycm9yIHRoZSBzdHJlYW0gd2l0aCBh
biB1bmRlZmluZWQgZXJyb3IgCitQQVNTIEVycm9yaW5nIGEgUmVhZGFibGVTdHJlYW0gYWZ0ZXIg
Y2hlY2tpbmcgY2xvc2VkIHNob3VsZCByZWplY3QgUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVy
IGNsb3NlZCBwcm9taXNlIAorUEFTUyBFcnJvcmluZyBhIFJlYWRhYmxlU3RyZWFtIGJlZm9yZSBj
aGVja2luZyBjbG9zZWQgc2hvdWxkIHJlamVjdCBSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIg
Y2xvc2VkIHByb21pc2UgCitQQVNTIFJlYWRpbmcgdHdpY2Ugb24gYSBzdHJlYW0gdGhhdCBnZXRz
IGNsb3NlZCAKK1BBU1MgUmVhZGluZyB0d2ljZSBvbiBhIGNsb3NlZCBzdHJlYW0gCitQQVNTIFJl
YWRpbmcgdHdpY2Ugb24gYW4gZXJyb3JlZCBzdHJlYW0gCitQQVNTIFJlYWRpbmcgdHdpY2Ugb24g
YSBzdHJlYW0gdGhhdCBnZXRzIGVycm9yZWQgCitGQUlMIGdldFJlYWRlcigpIHNob3VsZCBjYWxs
IFRvU3RyaW5nKCkgb24gbW9kZSBhc3NlcnRfdGhyb3dzX2pzOiBnZXRSZWFkZXIoKSBzaG91bGQg
dGhyb3cgZnVuY3Rpb24gIigpID0+IHJzLmdldFJlYWRlcih7IG1vZGUgfSkiIHRocmV3IG9iamVj
dCAiUmFuZ2VFcnJvcjogSW52YWxpZCBtb2RlIGlzIHNwZWNpZmllZCIgKCJSYW5nZUVycm9yIikg
ZXhwZWN0ZWQgaW5zdGFuY2Ugb2YgZnVuY3Rpb24gImZ1bmN0aW9uIFR5cGVFcnJvcigpIHsKKyAg
ICBbbmF0aXZlIGNvZGVdCit9IiAoIlR5cGVFcnJvciIpCitQQVNTIGNvbnRyb2xsZXIuY2xvc2Uo
KSBzaG91bGQgY2xlYXIgdGhlIGxpc3Qgb2YgcGVuZGluZyByZWFkIHJlcXVlc3RzIAorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvcmVhZGFibGUtc3RyZWFtcy9kZWZhdWx0LXJlYWRlci5hbnkuaHRtbCBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1z
L2RlZmF1bHQtcmVhZGVyLmFueS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzODI5MTM1MjhlNjkzYjNhNWQ1
NmM2NjBhNDUwNjA5ODBiNTQ4YzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9kZWZh
dWx0LXJlYWRlci5hbnkuaHRtbApAQCAtMCwwICsxIEBACis8IS0tIFRoaXMgZmlsZSBpcyByZXF1
aXJlZCBmb3IgV2ViS2l0IHRlc3QgaW5mcmFzdHJ1Y3R1cmUgdG8gcnVuIHRoZSB0ZW1wbGF0ZWQg
dGVzdCAtLT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3Ry
ZWFtcy9kZWZhdWx0LXJlYWRlci5hbnkuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9kZWZhdWx0LXJlYWRlci5h
bnkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZmM1NWViYzViOGY2NzhiNDQ2Y2I2MDQ2ZmYyNTdmMmJlNGQ2M2Q1
MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2RlZmF1bHQtcmVhZGVyLmFueS5qcwpA
QCAtMCwwICsxLDQ2MyBAQAorLy8gTUVUQTogZ2xvYmFsPXdpbmRvdyx3b3JrZXIsanNzaGVsbAor
Ly8gTUVUQTogc2NyaXB0PS4uL3Jlc291cmNlcy9ycy11dGlscy5qcworJ3VzZSBzdHJpY3QnOwor
Cit0ZXN0KCgpID0+IHsKKworICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4gbmV3
IFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlcigncG90YXRvJykpOworICBhc3NlcnRfdGhyb3dz
X2pzKFR5cGVFcnJvciwgKCkgPT4gbmV3IFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlcih7fSkp
OworICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4gbmV3IFJlYWRhYmxlU3RyZWFt
RGVmYXVsdFJlYWRlcigpKTsKKworfSwgJ1JlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlciBjb25z
dHJ1Y3RvciBzaG91bGQgZ2V0IGEgUmVhZGFibGVTdHJlYW0gb2JqZWN0IGFzIGFyZ3VtZW50Jyk7
CisKK3Rlc3QoKCkgPT4geworCisgIGNvbnN0IHJzUmVhZGVyID0gbmV3IFJlYWRhYmxlU3RyZWFt
RGVmYXVsdFJlYWRlcihuZXcgUmVhZGFibGVTdHJlYW0oKSk7CisgIGFzc2VydF9lcXVhbHMocnNS
ZWFkZXIuY2xvc2VkLCByc1JlYWRlci5jbG9zZWQsICdjbG9zZWQgc2hvdWxkIHJldHVybiB0aGUg
c2FtZSBwcm9taXNlJyk7CisKK30sICdSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIgY2xvc2Vk
IHNob3VsZCBhbHdheXMgcmV0dXJuIHRoZSBzYW1lIHByb21pc2Ugb2JqZWN0Jyk7CisKK3Rlc3Qo
KCkgPT4geworCisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKCk7CisgIG5ldyBSZWFk
YWJsZVN0cmVhbURlZmF1bHRSZWFkZXIocnMpOyAvLyBDb25zdHJ1Y3RpbmcgZGlyZWN0bHkgdGhl
IGZpcnN0IHRpbWUgc2hvdWxkIGJlIGZpbmUuCisgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9y
LCAoKSA9PiBuZXcgUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyKHJzKSwKKyAgICAgICAgICAg
ICAgICAgICAnY29uc3RydWN0aW5nIGRpcmVjdGx5IHRoZSBzZWNvbmQgdGltZSBzaG91bGQgZmFp
bCcpOworCit9LCAnQ29uc3RydWN0aW5nIGEgUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyIGRp
cmVjdGx5IHNob3VsZCBmYWlsIGlmIHRoZSBzdHJlYW0gaXMgYWxyZWFkeSBsb2NrZWQgKHZpYSBk
aXJlY3QgJyArCisgICAnY29uc3RydWN0aW9uKScpOworCit0ZXN0KCgpID0+IHsKKworICBjb25z
dCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSgpOworICBuZXcgUmVhZGFibGVTdHJlYW1EZWZhdWx0
UmVhZGVyKHJzKTsgLy8gQ29uc3RydWN0aW5nIGRpcmVjdGx5IHNob3VsZCBiZSBmaW5lLgorICBh
c3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4gcnMuZ2V0UmVhZGVyKCksICdnZXRSZWFk
ZXIoKSBzaG91bGQgZmFpbCcpOworCit9LCAnR2V0dGluZyBhIFJlYWRhYmxlU3RyZWFtRGVmYXVs
dFJlYWRlciB2aWEgZ2V0UmVhZGVyIHNob3VsZCBmYWlsIGlmIHRoZSBzdHJlYW0gaXMgYWxyZWFk
eSBsb2NrZWQgKHZpYSBkaXJlY3QgJyArCisgICAnY29uc3RydWN0aW9uKScpOworCit0ZXN0KCgp
ID0+IHsKKworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSgpOworICBycy5nZXRSZWFk
ZXIoKTsgLy8gZ2V0UmVhZGVyKCkgc2hvdWxkIGJlIGZpbmUuCisgIGFzc2VydF90aHJvd3NfanMo
VHlwZUVycm9yLCAoKSA9PiBuZXcgUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyKHJzKSwgJ2Nv
bnN0cnVjdGluZyBkaXJlY3RseSBzaG91bGQgZmFpbCcpOworCit9LCAnQ29uc3RydWN0aW5nIGEg
UmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyIGRpcmVjdGx5IHNob3VsZCBmYWlsIGlmIHRoZSBz
dHJlYW0gaXMgYWxyZWFkeSBsb2NrZWQgKHZpYSBnZXRSZWFkZXIpJyk7CisKK3Rlc3QoKCkgPT4g
eworCisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKCk7CisgIHJzLmdldFJlYWRlcigp
OyAvLyBnZXRSZWFkZXIoKSBzaG91bGQgYmUgZmluZS4KKyAgYXNzZXJ0X3Rocm93c19qcyhUeXBl
RXJyb3IsICgpID0+IHJzLmdldFJlYWRlcigpLCAnZ2V0UmVhZGVyKCkgc2hvdWxkIGZhaWwnKTsK
KworfSwgJ0dldHRpbmcgYSBSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIgdmlhIGdldFJlYWRl
ciBzaG91bGQgZmFpbCBpZiB0aGUgc3RyZWFtIGlzIGFscmVhZHkgbG9ja2VkICh2aWEgZ2V0UmVh
ZGVyKScpOworCit0ZXN0KCgpID0+IHsKKworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVh
bSh7CisgICAgc3RhcnQoYykgeworICAgICAgYy5jbG9zZSgpOworICAgIH0KKyAgfSk7CisKKyAg
bmV3IFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlcihycyk7IC8vIENvbnN0cnVjdGluZyBkaXJl
Y3RseSBzaG91bGQgbm90IHRocm93LgorCit9LCAnQ29uc3RydWN0aW5nIGEgUmVhZGFibGVTdHJl
YW1EZWZhdWx0UmVhZGVyIGRpcmVjdGx5IHNob3VsZCBiZSBPSyBpZiB0aGUgc3RyZWFtIGlzIGNs
b3NlZCcpOworCit0ZXN0KCgpID0+IHsKKworICBjb25zdCB0aGVFcnJvciA9IG5ldyBFcnJvcign
ZG9uXCd0IHNheSBpIGRpZG5cJ3Qgd2FybiB5YScpOworICBjb25zdCBycyA9IG5ldyBSZWFkYWJs
ZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgYy5lcnJvcih0aGVFcnJvcik7CisgICAg
fQorICB9KTsKKworICBuZXcgUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyKHJzKTsgLy8gQ29u
c3RydWN0aW5nIGRpcmVjdGx5IHNob3VsZCBub3QgdGhyb3cuCisKK30sICdDb25zdHJ1Y3Rpbmcg
YSBSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIgZGlyZWN0bHkgc2hvdWxkIGJlIE9LIGlmIHRo
ZSBzdHJlYW0gaXMgZXJyb3JlZCcpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworCisgIGxldCBj
b250cm9sbGVyOworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQo
YykgeworICAgICAgY29udHJvbGxlciA9IGM7CisgICAgfQorICB9KTsKKyAgY29uc3QgcmVhZGVy
ID0gcnMuZ2V0UmVhZGVyKCk7CisKKyAgY29uc3QgcHJvbWlzZSA9IHJlYWRlci5yZWFkKCkudGhl
bihyZXN1bHQgPT4geworICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdCwgeyB2YWx1ZTog
J2EnLCBkb25lOiBmYWxzZSB9LCAncmVhZCgpIHNob3VsZCBmdWxmaWxsIHdpdGggdGhlIGVucXVl
dWVkIGNodW5rJyk7CisgIH0pOworCisgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYScpOworICByZXR1
cm4gcHJvbWlzZTsKKworfSwgJ1JlYWRpbmcgZnJvbSBhIHJlYWRlciBmb3IgYW4gZW1wdHkgc3Ry
ZWFtIHdpbGwgd2FpdCB1bnRpbCBhIGNodW5rIGlzIGF2YWlsYWJsZScpOworCitwcm9taXNlX3Rl
c3QoKCkgPT4geworCisgIGxldCBjYW5jZWxDYWxsZWQgPSBmYWxzZTsKKyAgY29uc3QgcGFzc2Vk
UmVhc29uID0gbmV3IEVycm9yKCdpdCB3YXNuXCd0IHRoZSByaWdodCB0aW1lLCBzb3JyeScpOwor
ICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgY2FuY2VsKHJlYXNvbikgewor
ICAgICAgYXNzZXJ0X3RydWUocnMubG9ja2VkLCAndGhlIHN0cmVhbSBzaG91bGQgc3RpbGwgYmUg
bG9ja2VkJyk7CisgICAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4gcnMuZ2V0
UmVhZGVyKCksICdzaG91bGQgbm90IGJlIGFibGUgdG8gZ2V0IGFub3RoZXIgcmVhZGVyJyk7Cisg
ICAgICBhc3NlcnRfZXF1YWxzKHJlYXNvbiwgcGFzc2VkUmVhc29uLCAndGhlIGNhbmNlbGxhdGlv
biByZWFzb24gaXMgcGFzc2VkIHRocm91Z2ggdG8gdGhlIHVuZGVybHlpbmcgc291cmNlJyk7Cisg
ICAgICBjYW5jZWxDYWxsZWQgPSB0cnVlOworICAgIH0KKyAgfSk7CisKKyAgY29uc3QgcmVhZGVy
ID0gcnMuZ2V0UmVhZGVyKCk7CisgIHJldHVybiByZWFkZXIuY2FuY2VsKHBhc3NlZFJlYXNvbiku
dGhlbigoKSA9PiBhc3NlcnRfdHJ1ZShjYW5jZWxDYWxsZWQpKTsKKworfSwgJ2NhbmNlbCgpIG9u
IGEgcmVhZGVyIGRvZXMgbm90IHJlbGVhc2UgdGhlIHJlYWRlcicpOworCitwcm9taXNlX3Rlc3Qo
KCkgPT4geworCisgIGxldCBjb250cm9sbGVyOworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0
cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgY29udHJvbGxlciA9IGM7CisgICAgfQorICB9
KTsKKworICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKKyAgY29uc3QgcHJvbWlzZSA9
IHJlYWRlci5jbG9zZWQ7CisKKyAgY29udHJvbGxlci5jbG9zZSgpOworICByZXR1cm4gcHJvbWlz
ZTsKKworfSwgJ2Nsb3NlZCBzaG91bGQgYmUgZnVsZmlsbGVkIGFmdGVyIHN0cmVhbSBpcyBjbG9z
ZWQgKC5jbG9zZWQgYWNjZXNzIGJlZm9yZSBhY3F1aXJpbmcpJyk7CisKK3Byb21pc2VfdGVzdCh0
ID0+IHsKKworICBsZXQgY29udHJvbGxlcjsKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJl
YW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGNvbnRyb2xsZXIgPSBjOworICAgIH0KKyAgfSk7
CisKKyAgY29uc3QgcmVhZGVyMSA9IHJzLmdldFJlYWRlcigpOworCisgIHJlYWRlcjEucmVsZWFz
ZUxvY2soKTsKKworICBjb25zdCByZWFkZXIyID0gcnMuZ2V0UmVhZGVyKCk7CisgIGNvbnRyb2xs
ZXIuY2xvc2UoKTsKKworICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAgIHByb21pc2VfcmVqZWN0
c19qcyh0LCBUeXBlRXJyb3IsIHJlYWRlcjEuY2xvc2VkKSwKKyAgICByZWFkZXIyLmNsb3NlZAor
ICBdKTsKKworfSwgJ2Nsb3NlZCBzaG91bGQgYmUgcmVqZWN0ZWQgYWZ0ZXIgcmVhZGVyIHJlbGVh
c2VzIGl0cyBsb2NrIChtdWx0aXBsZSBzdHJlYW0gbG9ja3MpJyk7CisKK3Byb21pc2VfdGVzdCgo
KSA9PiB7CisKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMp
IHsKKyAgICAgIGMuZW5xdWV1ZSgnYScpOworICAgICAgYy5lbnF1ZXVlKCdiJyk7CisgICAgICBj
LmNsb3NlKCk7CisgICAgfQorICB9KTsKKworICBjb25zdCByZWFkZXIxID0gcnMuZ2V0UmVhZGVy
KCk7CisgIGNvbnN0IHByb21pc2UxID0gcmVhZGVyMS5yZWFkKCkudGhlbihyID0+IHsKKyAgICBh
c3NlcnRfb2JqZWN0X2VxdWFscyhyLCB7IHZhbHVlOiAnYScsIGRvbmU6IGZhbHNlIH0sICdyZWFk
aW5nIHRoZSBmaXJzdCBjaHVuayBmcm9tIHJlYWRlcjEgd29ya3MnKTsKKyAgfSk7CisgIHJlYWRl
cjEucmVsZWFzZUxvY2soKTsKKworICBjb25zdCByZWFkZXIyID0gcnMuZ2V0UmVhZGVyKCk7Cisg
IGNvbnN0IHByb21pc2UyID0gcmVhZGVyMi5yZWFkKCkudGhlbihyID0+IHsKKyAgICBhc3NlcnRf
b2JqZWN0X2VxdWFscyhyLCB7IHZhbHVlOiAnYicsIGRvbmU6IGZhbHNlIH0sICdyZWFkaW5nIHRo
ZSBzZWNvbmQgY2h1bmsgZnJvbSByZWFkZXIyIHdvcmtzJyk7CisgIH0pOworICByZWFkZXIyLnJl
bGVhc2VMb2NrKCk7CisKKyAgcmV0dXJuIFByb21pc2UuYWxsKFtwcm9taXNlMSwgcHJvbWlzZTJd
KTsKKworfSwgJ011bHRpcGxlIHJlYWRlcnMgY2FuIGFjY2VzcyB0aGUgc3RyZWFtIGluIHNlcXVl
bmNlJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxl
U3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjLmVucXVldWUoJ2EnKTsKKyAgICB9Cisg
IH0pOworCisgIGNvbnN0IHJlYWRlcjEgPSBycy5nZXRSZWFkZXIoKTsKKyAgcmVhZGVyMS5yZWxl
YXNlTG9jaygpOworCisgIGNvbnN0IHJlYWRlcjIgPSBycy5nZXRSZWFkZXIoKTsKKworICAvLyBT
aG91bGQgYmUgYSBuby1vcAorICByZWFkZXIxLnJlbGVhc2VMb2NrKCk7CisKKyAgcmV0dXJuIHJl
YWRlcjIucmVhZCgpLnRoZW4ocmVzdWx0ID0+IHsKKyAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhy
ZXN1bHQsIHsgdmFsdWU6ICdhJywgZG9uZTogZmFsc2UgfSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAncmVhZCgpIHNob3VsZCBzdGlsbCB3b3JrIG9uIHJlYWRlcjIgZXZlbiBhZnRlciByZWFk
ZXIxIGlzIHJlbGVhc2VkJyk7CisgIH0pOworCit9LCAnQ2Fubm90IHVzZSBhbiBhbHJlYWR5LXJl
bGVhc2VkIHJlYWRlciB0byB1bmxvY2sgYSBzdHJlYW0gYWdhaW4nKTsKKworcHJvbWlzZV90ZXN0
KHQgPT4geworCisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChj
KSB7CisgICAgICBjLmVucXVldWUoJ2EnKTsKKyAgICB9LAorICAgIGNhbmNlbCgpIHsKKyAgICAg
IGFzc2VydF91bnJlYWNoZWQoJ3VuZGVybHlpbmcgc291cmNlIGNhbmNlbCBzaG91bGQgbm90IGJl
IGNhbGxlZCcpOworICAgIH0KKyAgfSk7CisKKyAgY29uc3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVy
KCk7CisgIHJlYWRlci5yZWxlYXNlTG9jaygpOworICBjb25zdCBjYW5jZWxQcm9taXNlID0gcmVh
ZGVyLmNhbmNlbCgpOworCisgIGNvbnN0IHJlYWRlcjIgPSBycy5nZXRSZWFkZXIoKTsKKyAgY29u
c3QgcmVhZFByb21pc2UgPSByZWFkZXIyLnJlYWQoKS50aGVuKHIgPT4geworICAgIGFzc2VydF9v
YmplY3RfZXF1YWxzKHIsIHsgdmFsdWU6ICdhJywgZG9uZTogZmFsc2UgfSwgJ2EgbmV3IHJlYWRl
ciBzaG91bGQgYmUgYWJsZSB0byByZWFkIGEgY2h1bmsnKTsKKyAgfSk7CisKKyAgcmV0dXJuIFBy
b21pc2UuYWxsKFsKKyAgICBwcm9taXNlX3JlamVjdHNfanModCwgVHlwZUVycm9yLCBjYW5jZWxQ
cm9taXNlKSwKKyAgICByZWFkUHJvbWlzZQorICBdKTsKKworfSwgJ2NhbmNlbCgpIG9uIGEgcmVs
ZWFzZWQgcmVhZGVyIGlzIGEgbm8tb3AgYW5kIGRvZXMgbm90IHBhc3MgdGhyb3VnaCcpOworCitw
cm9taXNlX3Rlc3QodCA9PiB7CisKKyAgY29uc3QgcHJvbWlzZUFzc2VydHMgPSBbXTsKKworICBs
ZXQgY29udHJvbGxlcjsKKyAgY29uc3QgdGhlRXJyb3IgPSB7IG5hbWU6ICd1bmlxdWUgZXJyb3In
IH07CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7Cisg
ICAgICBjb250cm9sbGVyID0gYzsKKyAgICB9CisgIH0pOworCisgIGNvbnN0IHJlYWRlcjEgPSBy
cy5nZXRSZWFkZXIoKTsKKworICBwcm9taXNlQXNzZXJ0cy5wdXNoKAorICAgIHByb21pc2VfcmVq
ZWN0c19leGFjdGx5KHQsIHRoZUVycm9yLCByZWFkZXIxLmNsb3NlZCksCisgICAgcHJvbWlzZV9y
ZWplY3RzX2V4YWN0bHkodCwgdGhlRXJyb3IsIHJlYWRlcjEucmVhZCgpKQorICApOworCisgIGFz
c2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiBycy5nZXRSZWFkZXIoKSwgJ3RyeWluZyB0
byBnZXQgYW5vdGhlciByZWFkZXIgYmVmb3JlIGVycm9yaW5nIHNob3VsZCB0aHJvdycpOworCisg
IGNvbnRyb2xsZXIuZXJyb3IodGhlRXJyb3IpOworCisgIHJlYWRlcjEucmVsZWFzZUxvY2soKTsK
KworICBjb25zdCByZWFkZXIyID0gcnMuZ2V0UmVhZGVyKCk7CisKKyAgcHJvbWlzZUFzc2VydHMu
cHVzaCgKKyAgICBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCB0aGVFcnJvciwgcmVhZGVyMi5j
bG9zZWQpLAorICAgIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIHRoZUVycm9yLCByZWFkZXIy
LnJlYWQoKSkKKyAgKTsKKworICByZXR1cm4gUHJvbWlzZS5hbGwocHJvbWlzZUFzc2VydHMpOwor
Cit9LCAnR2V0dGluZyBhIHNlY29uZCByZWFkZXIgYWZ0ZXIgZXJyb3JpbmcgdGhlIHN0cmVhbSBh
bmQgcmVsZWFzaW5nIHRoZSByZWFkZXIgc2hvdWxkIHN1Y2NlZWQnKTsKKworcHJvbWlzZV90ZXN0
KHQgPT4geworCisgIGxldCBjb250cm9sbGVyOworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0
cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgY29udHJvbGxlciA9IGM7CisgICAgfQorICB9
KTsKKworICBjb25zdCBwcm9taXNlID0gcnMuZ2V0UmVhZGVyKCkuY2xvc2VkLnRoZW4oCisgICAg
dC51bnJlYWNoZWRfZnVuYygnY2xvc2VkIHByb21pc2Ugc2hvdWxkIG5vdCBiZSBmdWxmaWxsZWQg
d2hlbiBzdHJlYW0gaXMgZXJyb3JlZCcpLAorICAgIGVyciA9PiB7CisgICAgICBhc3NlcnRfZXF1
YWxzKGVyciwgdW5kZWZpbmVkLCAncGFzc2VkIGVycm9yIHNob3VsZCBiZSB1bmRlZmluZWQgYXMg
aXQgd2FzJyk7CisgICAgfQorICApOworCisgIGNvbnRyb2xsZXIuZXJyb3IoKTsKKyAgcmV0dXJu
IHByb21pc2U7CisKK30sICdSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIgY2xvc2VkIHByb21p
c2Ugc2hvdWxkIGJlIHJlamVjdGVkIHdpdGggdW5kZWZpbmVkIGlmIHRoYXQgaXMgdGhlIGVycm9y
Jyk7CisKKworcHJvbWlzZV90ZXN0KHQgPT4geworCisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxl
U3RyZWFtKHsKKyAgICBzdGFydCgpIHsKKyAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCgpOwor
ICAgIH0KKyAgfSk7CisKKyAgcmV0dXJuIHJzLmdldFJlYWRlcigpLnJlYWQoKS50aGVuKAorICAg
IHQudW5yZWFjaGVkX2Z1bmMoJ3JlYWQgcHJvbWlzZSBzaG91bGQgbm90IGJlIGZ1bGZpbGxlZCB3
aGVuIHN0cmVhbSBpcyBlcnJvcmVkJyksCisgICAgZXJyID0+IHsKKyAgICAgIGFzc2VydF9lcXVh
bHMoZXJyLCB1bmRlZmluZWQsICdwYXNzZWQgZXJyb3Igc2hvdWxkIGJlIHVuZGVmaW5lZCBhcyBp
dCB3YXMnKTsKKyAgICB9CisgICk7CisKK30sICdSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXI6
IGlmIHN0YXJ0IHJlamVjdHMgd2l0aCBubyBwYXJhbWV0ZXIsIGl0IHNob3VsZCBlcnJvciB0aGUg
c3RyZWFtIHdpdGggYW4gdW5kZWZpbmVkICcgKworICAgICdlcnJvcicpOworCitwcm9taXNlX3Rl
c3QodCA9PiB7CisKKyAgY29uc3QgdGhlRXJyb3IgPSB7IG5hbWU6ICd1bmlxdWUgc3RyaW5nJyB9
OworICBsZXQgY29udHJvbGxlcjsKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewor
ICAgIHN0YXJ0KGMpIHsKKyAgICAgIGNvbnRyb2xsZXIgPSBjOworICAgIH0KKyAgfSk7CisKKyAg
Y29uc3QgcHJvbWlzZSA9IHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIHRoZUVycm9yLCBycy5n
ZXRSZWFkZXIoKS5jbG9zZWQpOworCisgIGNvbnRyb2xsZXIuZXJyb3IodGhlRXJyb3IpOworICBy
ZXR1cm4gcHJvbWlzZTsKKworfSwgJ0Vycm9yaW5nIGEgUmVhZGFibGVTdHJlYW0gYWZ0ZXIgY2hl
Y2tpbmcgY2xvc2VkIHNob3VsZCByZWplY3QgUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyIGNs
b3NlZCBwcm9taXNlJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKworICBjb25zdCB0aGVFcnJv
ciA9IHsgbmFtZTogJ3VuaXF1ZSBzdHJpbmcnIH07CisgIGxldCBjb250cm9sbGVyOworICBjb25z
dCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgY29udHJv
bGxlciA9IGM7CisgICAgfQorICB9KTsKKworICBjb250cm9sbGVyLmVycm9yKHRoZUVycm9yKTsK
KworICAvLyBMZXQncyBjYWxsIGdldFJlYWRlciB0d2ljZSBmb3IgZXh0cmEgdGVzdCBjb3ZlcmFn
ZSBvZiB0aGlzIGNvZGUgcGF0aC4KKyAgcnMuZ2V0UmVhZGVyKCkucmVsZWFzZUxvY2soKTsKKwor
ICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgdGhlRXJyb3IsIHJzLmdldFJlYWRl
cigpLmNsb3NlZCk7CisKK30sICdFcnJvcmluZyBhIFJlYWRhYmxlU3RyZWFtIGJlZm9yZSBjaGVj
a2luZyBjbG9zZWQgc2hvdWxkIHJlamVjdCBSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIgY2xv
c2VkIHByb21pc2UnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKworICBsZXQgY29udHJvbGxl
cjsKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAg
ICAgIGNvbnRyb2xsZXIgPSBjOworICAgIH0KKyAgfSk7CisgIGNvbnN0IHJlYWRlciA9IHJzLmdl
dFJlYWRlcigpOworCisgIGNvbnN0IHByb21pc2UgPSBQcm9taXNlLmFsbChbCisgICAgcmVhZGVy
LnJlYWQoKS50aGVuKHJlc3VsdCA9PiB7CisgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1
bHQsIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9LCAncmVhZCgpIHNob3VsZCBmdWxm
aWxsIHdpdGggY2xvc2UgKDEpJyk7CisgICAgfSksCisgICAgcmVhZGVyLnJlYWQoKS50aGVuKHJl
c3VsdCA9PiB7CisgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6IHVu
ZGVmaW5lZCwgZG9uZTogdHJ1ZSB9LCAncmVhZCgpIHNob3VsZCBmdWxmaWxsIHdpdGggY2xvc2Ug
KDIpJyk7CisgICAgfSksCisgICAgcmVhZGVyLmNsb3NlZAorICBdKTsKKworICBjb250cm9sbGVy
LmNsb3NlKCk7CisgIHJldHVybiBwcm9taXNlOworCit9LCAnUmVhZGluZyB0d2ljZSBvbiBhIHN0
cmVhbSB0aGF0IGdldHMgY2xvc2VkJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisKKyAgbGV0
IGNvbnRyb2xsZXI7CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFy
dChjKSB7CisgICAgICBjb250cm9sbGVyID0gYzsKKyAgICB9CisgIH0pOworCisgIGNvbnRyb2xs
ZXIuY2xvc2UoKTsKKyAgY29uc3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7CisKKyAgcmV0dXJu
IFByb21pc2UuYWxsKFsKKyAgICByZWFkZXIucmVhZCgpLnRoZW4ocmVzdWx0ID0+IHsKKyAgICAg
IGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdCwgeyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0
cnVlIH0sICdyZWFkKCkgc2hvdWxkIGZ1bGZpbGwgd2l0aCBjbG9zZSAoMSknKTsKKyAgICB9KSwK
KyAgICByZWFkZXIucmVhZCgpLnRoZW4ocmVzdWx0ID0+IHsKKyAgICAgIGFzc2VydF9vYmplY3Rf
ZXF1YWxzKHJlc3VsdCwgeyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0sICdyZWFkKCkg
c2hvdWxkIGZ1bGZpbGwgd2l0aCBjbG9zZSAoMiknKTsKKyAgICB9KSwKKyAgICByZWFkZXIuY2xv
c2VkCisgIF0pOworCit9LCAnUmVhZGluZyB0d2ljZSBvbiBhIGNsb3NlZCBzdHJlYW0nKTsKKwor
cHJvbWlzZV90ZXN0KHQgPT4geworCisgIGxldCBjb250cm9sbGVyOworICBjb25zdCBycyA9IG5l
dyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgY29udHJvbGxlciA9IGM7
CisgICAgfQorICB9KTsKKworICBjb25zdCBteUVycm9yID0geyBuYW1lOiAnbWFzaGVkIHBvdGF0
b2VzJyB9OworICBjb250cm9sbGVyLmVycm9yKG15RXJyb3IpOworCisgIGNvbnN0IHJlYWRlciA9
IHJzLmdldFJlYWRlcigpOworCisgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAgcHJvbWlzZV9y
ZWplY3RzX2V4YWN0bHkodCwgbXlFcnJvciwgcmVhZGVyLnJlYWQoKSksCisgICAgcHJvbWlzZV9y
ZWplY3RzX2V4YWN0bHkodCwgbXlFcnJvciwgcmVhZGVyLnJlYWQoKSksCisgICAgcHJvbWlzZV9y
ZWplY3RzX2V4YWN0bHkodCwgbXlFcnJvciwgcmVhZGVyLmNsb3NlZCkKKyAgXSk7CisKK30sICdS
ZWFkaW5nIHR3aWNlIG9uIGFuIGVycm9yZWQgc3RyZWFtJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+
IHsKKworICBsZXQgY29udHJvbGxlcjsKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0o
eworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGNvbnRyb2xsZXIgPSBjOworICAgIH0KKyAgfSk7CisK
KyAgY29uc3QgbXlFcnJvciA9IHsgbmFtZTogJ21hc2hlZCBwb3RhdG9lcycgfTsKKyAgY29uc3Qg
cmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7CisKKyAgY29uc3QgcHJvbWlzZSA9IFByb21pc2UuYWxs
KFsKKyAgICBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBteUVycm9yLCByZWFkZXIucmVhZCgp
KSwKKyAgICBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBteUVycm9yLCByZWFkZXIucmVhZCgp
KSwKKyAgICBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBteUVycm9yLCByZWFkZXIuY2xvc2Vk
KQorICBdKTsKKworICBjb250cm9sbGVyLmVycm9yKG15RXJyb3IpOworICByZXR1cm4gcHJvbWlz
ZTsKKworfSwgJ1JlYWRpbmcgdHdpY2Ugb24gYSBzdHJlYW0gdGhhdCBnZXRzIGVycm9yZWQnKTsK
KwordGVzdCgoKSA9PiB7CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKCk7CisgIGxl
dCB0b1N0cmluZ0NhbGxlZCA9IGZhbHNlOworICBjb25zdCBtb2RlID0geworICAgIHRvU3RyaW5n
KCkgeworICAgICAgdG9TdHJpbmdDYWxsZWQgPSB0cnVlOworICAgICAgcmV0dXJuICcnOworICAg
IH0KKyAgfTsKKyAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IHJzLmdldFJlYWRl
cih7IG1vZGUgfSksICdnZXRSZWFkZXIoKSBzaG91bGQgdGhyb3cnKTsKKyAgYXNzZXJ0X3RydWUo
dG9TdHJpbmdDYWxsZWQsICd0b1N0cmluZygpIHNob3VsZCBiZSBjYWxsZWQnKTsKK30sICdnZXRS
ZWFkZXIoKSBzaG91bGQgY2FsbCBUb1N0cmluZygpIG9uIG1vZGUnKTsKKworcHJvbWlzZV90ZXN0
KCgpID0+IHsKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHB1bGwoY29u
dHJvbGxlcikgeworICAgICAgY29udHJvbGxlci5jbG9zZSgpOworICAgIH0KKyAgfSk7CisKKyAg
Y29uc3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7CisgIHJldHVybiByZWFkZXIucmVhZCgpLnRo
ZW4oKCkgPT4geworICAgIC8vIFRoZSB0ZXN0IHBhc3NlcyBpZiByZWxlYXNlTG9jaygpIGRvZXMg
bm90IHRocm93LgorICAgIHJlYWRlci5yZWxlYXNlTG9jaygpOworICB9KTsKK30sICdjb250cm9s
bGVyLmNsb3NlKCkgc2hvdWxkIGNsZWFyIHRoZSBsaXN0IG9mIHBlbmRpbmcgcmVhZCByZXF1ZXN0
cycpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZGVmYXVsdC1yZWFkZXIuYW55Lndvcmtlci1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9kZWZhdWx0LXJlYWRlci5hbnkud29ya2VyLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5lNDdlNzVhYmI5NjQwNmU5ODg3ZmNiNjExMWU5MGZkYWNkNWZj
M2ZlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZGVmYXVsdC1yZWFkZXIuYW55Lndv
cmtlci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzNCBAQAorCitGQUlMIFJlYWRhYmxlU3RyZWFt
RGVmYXVsdFJlYWRlciBjb25zdHJ1Y3RvciBzaG91bGQgZ2V0IGEgUmVhZGFibGVTdHJlYW0gb2Jq
ZWN0IGFzIGFyZ3VtZW50IGFzc2VydF90aHJvd3NfanM6IGZ1bmN0aW9uICIoKSA9PiBuZXcgUmVh
ZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyKCdwb3RhdG8nKSIgdGhyZXcgb2JqZWN0ICJSZWZlcmVu
Y2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVy
IiAoIlJlZmVyZW5jZUVycm9yIikgZXhwZWN0ZWQgaW5zdGFuY2Ugb2YgZnVuY3Rpb24gImZ1bmN0
aW9uIFR5cGVFcnJvcigpIHsKKyAgICBbbmF0aXZlIGNvZGVdCit9IiAoIlR5cGVFcnJvciIpCitG
QUlMIFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlciBjbG9zZWQgc2hvdWxkIGFsd2F5cyByZXR1
cm4gdGhlIHNhbWUgcHJvbWlzZSBvYmplY3QgQ2FuJ3QgZmluZCB2YXJpYWJsZTogUmVhZGFibGVT
dHJlYW1EZWZhdWx0UmVhZGVyCitGQUlMIENvbnN0cnVjdGluZyBhIFJlYWRhYmxlU3RyZWFtRGVm
YXVsdFJlYWRlciBkaXJlY3RseSBzaG91bGQgZmFpbCBpZiB0aGUgc3RyZWFtIGlzIGFscmVhZHkg
bG9ja2VkICh2aWEgZGlyZWN0IGNvbnN0cnVjdGlvbikgQ2FuJ3QgZmluZCB2YXJpYWJsZTogUmVh
ZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyCitGQUlMIEdldHRpbmcgYSBSZWFkYWJsZVN0cmVhbURl
ZmF1bHRSZWFkZXIgdmlhIGdldFJlYWRlciBzaG91bGQgZmFpbCBpZiB0aGUgc3RyZWFtIGlzIGFs
cmVhZHkgbG9ja2VkICh2aWEgZGlyZWN0IGNvbnN0cnVjdGlvbikgQ2FuJ3QgZmluZCB2YXJpYWJs
ZTogUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyCitGQUlMIENvbnN0cnVjdGluZyBhIFJlYWRh
YmxlU3RyZWFtRGVmYXVsdFJlYWRlciBkaXJlY3RseSBzaG91bGQgZmFpbCBpZiB0aGUgc3RyZWFt
IGlzIGFscmVhZHkgbG9ja2VkICh2aWEgZ2V0UmVhZGVyKSBhc3NlcnRfdGhyb3dzX2pzOiBjb25z
dHJ1Y3RpbmcgZGlyZWN0bHkgc2hvdWxkIGZhaWwgZnVuY3Rpb24gIigpID0+IG5ldyBSZWFkYWJs
ZVN0cmVhbURlZmF1bHRSZWFkZXIocnMpIiB0aHJldyBvYmplY3QgIlJlZmVyZW5jZUVycm9yOiBD
YW4ndCBmaW5kIHZhcmlhYmxlOiBSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIiICgiUmVmZXJl
bmNlRXJyb3IiKSBleHBlY3RlZCBpbnN0YW5jZSBvZiBmdW5jdGlvbiAiZnVuY3Rpb24gVHlwZUVy
cm9yKCkgeworICAgIFtuYXRpdmUgY29kZV0KK30iICgiVHlwZUVycm9yIikKK1BBU1MgR2V0dGlu
ZyBhIFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlciB2aWEgZ2V0UmVhZGVyIHNob3VsZCBmYWls
IGlmIHRoZSBzdHJlYW0gaXMgYWxyZWFkeSBsb2NrZWQgKHZpYSBnZXRSZWFkZXIpIAorRkFJTCBD
b25zdHJ1Y3RpbmcgYSBSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIgZGlyZWN0bHkgc2hvdWxk
IGJlIE9LIGlmIHRoZSBzdHJlYW0gaXMgY2xvc2VkIENhbid0IGZpbmQgdmFyaWFibGU6IFJlYWRh
YmxlU3RyZWFtRGVmYXVsdFJlYWRlcgorRkFJTCBDb25zdHJ1Y3RpbmcgYSBSZWFkYWJsZVN0cmVh
bURlZmF1bHRSZWFkZXIgZGlyZWN0bHkgc2hvdWxkIGJlIE9LIGlmIHRoZSBzdHJlYW0gaXMgZXJy
b3JlZCBDYW4ndCBmaW5kIHZhcmlhYmxlOiBSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIKK1BB
U1MgUmVhZGluZyBmcm9tIGEgcmVhZGVyIGZvciBhbiBlbXB0eSBzdHJlYW0gd2lsbCB3YWl0IHVu
dGlsIGEgY2h1bmsgaXMgYXZhaWxhYmxlIAorUEFTUyBjYW5jZWwoKSBvbiBhIHJlYWRlciBkb2Vz
IG5vdCByZWxlYXNlIHRoZSByZWFkZXIgCitQQVNTIGNsb3NlZCBzaG91bGQgYmUgZnVsZmlsbGVk
IGFmdGVyIHN0cmVhbSBpcyBjbG9zZWQgKC5jbG9zZWQgYWNjZXNzIGJlZm9yZSBhY3F1aXJpbmcp
IAorUEFTUyBjbG9zZWQgc2hvdWxkIGJlIHJlamVjdGVkIGFmdGVyIHJlYWRlciByZWxlYXNlcyBp
dHMgbG9jayAobXVsdGlwbGUgc3RyZWFtIGxvY2tzKSAKK1BBU1MgTXVsdGlwbGUgcmVhZGVycyBj
YW4gYWNjZXNzIHRoZSBzdHJlYW0gaW4gc2VxdWVuY2UgCitQQVNTIENhbm5vdCB1c2UgYW4gYWxy
ZWFkeS1yZWxlYXNlZCByZWFkZXIgdG8gdW5sb2NrIGEgc3RyZWFtIGFnYWluIAorUEFTUyBjYW5j
ZWwoKSBvbiBhIHJlbGVhc2VkIHJlYWRlciBpcyBhIG5vLW9wIGFuZCBkb2VzIG5vdCBwYXNzIHRo
cm91Z2ggCitQQVNTIEdldHRpbmcgYSBzZWNvbmQgcmVhZGVyIGFmdGVyIGVycm9yaW5nIHRoZSBz
dHJlYW0gYW5kIHJlbGVhc2luZyB0aGUgcmVhZGVyIHNob3VsZCBzdWNjZWVkIAorUEFTUyBSZWFk
YWJsZVN0cmVhbURlZmF1bHRSZWFkZXIgY2xvc2VkIHByb21pc2Ugc2hvdWxkIGJlIHJlamVjdGVk
IHdpdGggdW5kZWZpbmVkIGlmIHRoYXQgaXMgdGhlIGVycm9yIAorUEFTUyBSZWFkYWJsZVN0cmVh
bURlZmF1bHRSZWFkZXI6IGlmIHN0YXJ0IHJlamVjdHMgd2l0aCBubyBwYXJhbWV0ZXIsIGl0IHNo
b3VsZCBlcnJvciB0aGUgc3RyZWFtIHdpdGggYW4gdW5kZWZpbmVkIGVycm9yIAorUEFTUyBFcnJv
cmluZyBhIFJlYWRhYmxlU3RyZWFtIGFmdGVyIGNoZWNraW5nIGNsb3NlZCBzaG91bGQgcmVqZWN0
IFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlciBjbG9zZWQgcHJvbWlzZSAKK1BBU1MgRXJyb3Jp
bmcgYSBSZWFkYWJsZVN0cmVhbSBiZWZvcmUgY2hlY2tpbmcgY2xvc2VkIHNob3VsZCByZWplY3Qg
UmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyIGNsb3NlZCBwcm9taXNlIAorUEFTUyBSZWFkaW5n
IHR3aWNlIG9uIGEgc3RyZWFtIHRoYXQgZ2V0cyBjbG9zZWQgCitQQVNTIFJlYWRpbmcgdHdpY2Ug
b24gYSBjbG9zZWQgc3RyZWFtIAorUEFTUyBSZWFkaW5nIHR3aWNlIG9uIGFuIGVycm9yZWQgc3Ry
ZWFtIAorUEFTUyBSZWFkaW5nIHR3aWNlIG9uIGEgc3RyZWFtIHRoYXQgZ2V0cyBlcnJvcmVkIAor
RkFJTCBnZXRSZWFkZXIoKSBzaG91bGQgY2FsbCBUb1N0cmluZygpIG9uIG1vZGUgYXNzZXJ0X3Ro
cm93c19qczogZ2V0UmVhZGVyKCkgc2hvdWxkIHRocm93IGZ1bmN0aW9uICIoKSA9PiBycy5nZXRS
ZWFkZXIoeyBtb2RlIH0pIiB0aHJldyBvYmplY3QgIlJhbmdlRXJyb3I6IEludmFsaWQgbW9kZSBp
cyBzcGVjaWZpZWQiICgiUmFuZ2VFcnJvciIpIGV4cGVjdGVkIGluc3RhbmNlIG9mIGZ1bmN0aW9u
ICJmdW5jdGlvbiBUeXBlRXJyb3IoKSB7CisgICAgW25hdGl2ZSBjb2RlXQorfSIgKCJUeXBlRXJy
b3IiKQorUEFTUyBjb250cm9sbGVyLmNsb3NlKCkgc2hvdWxkIGNsZWFyIHRoZSBsaXN0IG9mIHBl
bmRpbmcgcmVhZCByZXF1ZXN0cyAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZGVmYXVsdC1y
ZWFkZXIuYW55Lndvcmtlci5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZGVmYXVsdC1yZWFkZXIuYW55Lndv
cmtlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzODI5MTM1MjhlNjkzYjNhNWQ1NmM2NjBhNDUwNjA5ODBi
NTQ4YzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9kZWZhdWx0LXJlYWRlci5hbnku
d29ya2VyLmh0bWwKQEAgLTAsMCArMSBAQAorPCEtLSBUaGlzIGZpbGUgaXMgcmVxdWlyZWQgZm9y
IFdlYktpdCB0ZXN0IGluZnJhc3RydWN0dXJlIHRvIHJ1biB0aGUgdGVtcGxhdGVkIHRlc3QgLS0+
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZGVm
YXVsdC1yZWFkZXIuZGVkaWNhdGVkd29ya2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2Rl
ZmF1bHQtcmVhZGVyLmRlZGljYXRlZHdvcmtlci1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDYxZmUzMTcyYWJkYTU5M2RlNTI4NDUzNGIwZjliZTA2MzU5MzAxY2Qu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVh
bXMvZGVmYXVsdC1yZWFkZXIuZGVkaWNhdGVkd29ya2VyLWV4cGVjdGVkLnR4dAorKysgL2Rldi9u
dWxsCkBAIC0xLDI5ICswLDAgQEAKLQotUEFTUyBDYW4gZ2V0IHRoZSBSZWFkYWJsZVN0cmVhbURl
ZmF1bHRSZWFkZXIgY29uc3RydWN0b3IgaW5kaXJlY3RseSAKLVBBU1MgUmVhZGFibGVTdHJlYW1E
ZWZhdWx0UmVhZGVyIGNvbnN0cnVjdG9yIHNob3VsZCBnZXQgYSBSZWFkYWJsZVN0cmVhbSBvYmpl
Y3QgYXMgYXJndW1lbnQgCi1QQVNTIFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlciBpbnN0YW5j
ZXMgc2hvdWxkIGhhdmUgdGhlIGNvcnJlY3QgbGlzdCBvZiBwcm9wZXJ0aWVzIAotUEFTUyBSZWFk
YWJsZVN0cmVhbURlZmF1bHRSZWFkZXIgY2xvc2VkIHNob3VsZCBhbHdheXMgcmV0dXJuIHRoZSBz
YW1lIHByb21pc2Ugb2JqZWN0IAotUEFTUyBDb25zdHJ1Y3RpbmcgYSBSZWFkYWJsZVN0cmVhbURl
ZmF1bHRSZWFkZXIgZGlyZWN0bHkgc2hvdWxkIGZhaWwgaWYgdGhlIHN0cmVhbSBpcyBhbHJlYWR5
IGxvY2tlZCAodmlhIGRpcmVjdCBjb25zdHJ1Y3Rpb24pIAotUEFTUyBHZXR0aW5nIGEgUmVhZGFi
bGVTdHJlYW1EZWZhdWx0UmVhZGVyIHZpYSBnZXRSZWFkZXIgc2hvdWxkIGZhaWwgaWYgdGhlIHN0
cmVhbSBpcyBhbHJlYWR5IGxvY2tlZCAodmlhIGRpcmVjdCBjb25zdHJ1Y3Rpb24pIAotUEFTUyBD
b25zdHJ1Y3RpbmcgYSBSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIgZGlyZWN0bHkgc2hvdWxk
IGZhaWwgaWYgdGhlIHN0cmVhbSBpcyBhbHJlYWR5IGxvY2tlZCAodmlhIGdldFJlYWRlcikgCi1Q
QVNTIEdldHRpbmcgYSBSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIgdmlhIGdldFJlYWRlciBz
aG91bGQgZmFpbCBpZiB0aGUgc3RyZWFtIGlzIGFscmVhZHkgbG9ja2VkICh2aWEgZ2V0UmVhZGVy
KSAKLVBBU1MgQ29uc3RydWN0aW5nIGEgUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyIGRpcmVj
dGx5IHNob3VsZCBiZSBPSyBpZiB0aGUgc3RyZWFtIGlzIGNsb3NlZCAKLVBBU1MgQ29uc3RydWN0
aW5nIGEgUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyIGRpcmVjdGx5IHNob3VsZCBiZSBPSyBp
ZiB0aGUgc3RyZWFtIGlzIGVycm9yZWQgCi1QQVNTIFJlYWRpbmcgZnJvbSBhIHJlYWRlciBmb3Ig
YW4gZW1wdHkgc3RyZWFtIHdpbGwgd2FpdCB1bnRpbCBhIGNodW5rIGlzIGF2YWlsYWJsZSAKLVBB
U1MgY2FuY2VsKCkgb24gYSByZWFkZXIgZG9lcyBub3QgcmVsZWFzZSB0aGUgcmVhZGVyIAotUEFT
UyBjbG9zZWQgc2hvdWxkIGJlIGZ1bGZpbGxlZCBhZnRlciBzdHJlYW0gaXMgY2xvc2VkICguY2xv
c2VkIGFjY2VzcyBiZWZvcmUgYWNxdWlyaW5nKSAKLVBBU1MgY2xvc2VkIHNob3VsZCBiZSByZWpl
Y3RlZCBhZnRlciByZWFkZXIgcmVsZWFzZXMgaXRzIGxvY2sgKG11bHRpcGxlIHN0cmVhbSBsb2Nr
cykgCi1QQVNTIE11bHRpcGxlIHJlYWRlcnMgY2FuIGFjY2VzcyB0aGUgc3RyZWFtIGluIHNlcXVl
bmNlIAotUEFTUyBDYW5ub3QgdXNlIGFuIGFscmVhZHktcmVsZWFzZWQgcmVhZGVyIHRvIHVubG9j
ayBhIHN0cmVhbSBhZ2FpbiAKLVBBU1MgY2FuY2VsKCkgb24gYSByZWxlYXNlZCByZWFkZXIgaXMg
YSBuby1vcCBhbmQgZG9lcyBub3QgcGFzcyB0aHJvdWdoIAotUEFTUyBHZXR0aW5nIGEgc2Vjb25k
IHJlYWRlciBhZnRlciBlcnJvcmluZyB0aGUgc3RyZWFtIGFuZCByZWxlYXNpbmcgdGhlIHJlYWRl
ciBzaG91bGQgc3VjY2VlZCAKLVBBU1MgUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyIGNsb3Nl
ZCBwcm9taXNlIHNob3VsZCBiZSByZWplY3RlZCB3aXRoIHVuZGVmaW5lZCBpZiB0aGF0IGlzIHRo
ZSBlcnJvciAKLVBBU1MgUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyOiBpZiBzdGFydCByZWpl
Y3RzIHdpdGggbm8gcGFyYW1ldGVyLCBpdCBzaG91bGQgZXJyb3IgdGhlIHN0cmVhbSB3aXRoIGFu
IHVuZGVmaW5lZCBlcnJvciAKLVBBU1MgRXJyb3JpbmcgYSBSZWFkYWJsZVN0cmVhbSBhZnRlciBj
aGVja2luZyBjbG9zZWQgc2hvdWxkIHJlamVjdCBSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIg
Y2xvc2VkIHByb21pc2UgCi1QQVNTIEVycm9yaW5nIGEgUmVhZGFibGVTdHJlYW0gYmVmb3JlIGNo
ZWNraW5nIGNsb3NlZCBzaG91bGQgcmVqZWN0IFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlciBj
bG9zZWQgcHJvbWlzZSAKLVBBU1MgUmVhZGluZyB0d2ljZSBvbiBhIHN0cmVhbSB0aGF0IGdldHMg
Y2xvc2VkIAotUEFTUyBSZWFkaW5nIHR3aWNlIG9uIGEgY2xvc2VkIHN0cmVhbSAKLVBBU1MgUmVh
ZGluZyB0d2ljZSBvbiBhbiBlcnJvcmVkIHN0cmVhbSAKLVBBU1MgUmVhZGluZyB0d2ljZSBvbiBh
IHN0cmVhbSB0aGF0IGdldHMgZXJyb3JlZCAKLVBBU1MgZ2V0UmVhZGVyKCkgc2hvdWxkIGNhbGwg
VG9TdHJpbmcoKSBvbiBtb2RlIAotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9kZWZhdWx0LXJl
YWRlci5kZWRpY2F0ZWR3b3JrZXIuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2RlZmF1bHQtcmVhZGVyLmRl
ZGljYXRlZHdvcmtlci5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYTBiMmQw
NTExYjZmMmRjYzQxZDExMjgwNjU0ZGE3NzY1MWNjMzU3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2RlZmF1bHQtcmVhZGVyLmRlZGlj
YXRlZHdvcmtlci5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotPCFET0NUWVBF
IGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08dGl0bGU+ZGVmYXVsdC1yZWFkZXIuanMg
ZGVkaWNhdGVkIHdvcmtlciB3cmFwcGVyIGZpbGU8L3RpdGxlPgotCi08c2NyaXB0IHNyYz0iL3Jl
c291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNl
cy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci0KLTxzY3JpcHQ+Ci0ndXNlIHN0cmlj
dCc7Ci1mZXRjaF90ZXN0c19mcm9tX3dvcmtlcihuZXcgV29ya2VyKCdkZWZhdWx0LXJlYWRlci5q
cycpKTsKLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZGVmYXVsdC1yZWFkZXIu
aHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy9yZWFkYWJsZS1zdHJlYW1zL2RlZmF1bHQtcmVhZGVyLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDkyYzlhZTY1OGRkODAyNWUyM2QwNTI4NWIyZGJkOWY4ZjQ5ZDMuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMv
ZGVmYXVsdC1yZWFkZXIuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAKLTwhRE9D
VFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHRpdGxlPmRlZmF1bHQtcmVhZGVy
LmpzIGJyb3dzZXIgY29udGV4dCB3cmFwcGVyIGZpbGU8L3RpdGxlPgotCi08c2NyaXB0IHNyYz0i
L3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3Jlc291
cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci0KLTxzY3JpcHQgc3JjPSIuLi9y
ZXNvdXJjZXMvcnMtdXRpbHMuanMiPjwvc2NyaXB0PgotCi08c2NyaXB0IHNyYz0iZGVmYXVsdC1y
ZWFkZXIuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZGVmYXVsdC1yZWFk
ZXIuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvcmVhZGFibGUtc3RyZWFtcy9kZWZhdWx0LXJlYWRlci5qcwpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggOWI2NDVlMjQ3MjU4MmYxNzU5ODEzN2IyNjJjYjAyOTQ4YTE0MDY2MS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9k
ZWZhdWx0LXJlYWRlci5qcworKysgL2Rldi9udWxsCkBAIC0xLDUwMSArMCwwIEBACi0ndXNlIHN0
cmljdCc7Ci0KLWlmIChzZWxmLmltcG9ydFNjcmlwdHMpIHsKLSAgc2VsZi5pbXBvcnRTY3JpcHRz
KCcuLi9yZXNvdXJjZXMvcnMtdXRpbHMuanMnKTsKLSAgc2VsZi5pbXBvcnRTY3JpcHRzKCcvcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzLmpzJyk7Ci19Ci0KLWxldCBSZWFkYWJsZVN0cmVhbURlZmF1bHRS
ZWFkZXI7Ci0KLXRlc3QoKCkgPT4gewotCi0gIC8vIEl0J3Mgbm90IGV4cG9zZWQgZ2xvYmFsbHks
IGJ1dCB3ZSB0ZXN0IGEgZmV3IG9mIGl0cyBwcm9wZXJ0aWVzIGhlcmUuCi0gIFJlYWRhYmxlU3Ry
ZWFtRGVmYXVsdFJlYWRlciA9IChuZXcgUmVhZGFibGVTdHJlYW0oKSkuZ2V0UmVhZGVyKCkuY29u
c3RydWN0b3I7Ci0KLX0sICdDYW4gZ2V0IHRoZSBSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIg
Y29uc3RydWN0b3IgaW5kaXJlY3RseScpOwotCi10ZXN0KCgpID0+IHsKLQotICBhc3NlcnRfdGhy
b3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gbmV3IFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRl
cigncG90YXRvJykpOwotICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gbmV3
IFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlcih7fSkpOwotICBhc3NlcnRfdGhyb3dzKG5ldyBU
eXBlRXJyb3IoKSwgKCkgPT4gbmV3IFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlcigpKTsKLQot
fSwgJ1JlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlciBjb25zdHJ1Y3RvciBzaG91bGQgZ2V0IGEg
UmVhZGFibGVTdHJlYW0gb2JqZWN0IGFzIGFyZ3VtZW50Jyk7Ci0KLXRlc3QoKCkgPT4gewotCi0g
IGNvbnN0IG1ldGhvZHMgPSBbJ2NhbmNlbCcsICdjb25zdHJ1Y3RvcicsICdyZWFkJywgJ3JlbGVh
c2VMb2NrJ107Ci0gIGNvbnN0IHByb3BlcnRpZXMgPSBtZXRob2RzLmNvbmNhdChbJ2Nsb3NlZCdd
KS5zb3J0KCk7Ci0KLSAgY29uc3QgcnNSZWFkZXIgPSBuZXcgUmVhZGFibGVTdHJlYW1EZWZhdWx0
UmVhZGVyKG5ldyBSZWFkYWJsZVN0cmVhbSgpKTsKLSAgY29uc3QgcHJvdG8gPSBPYmplY3QuZ2V0
UHJvdG90eXBlT2YocnNSZWFkZXIpOwotCi0gIGFzc2VydF9hcnJheV9lcXVhbHMoT2JqZWN0Lmdl
dE93blByb3BlcnR5TmFtZXMocHJvdG8pLnNvcnQoKSwgcHJvcGVydGllcyk7Ci0KLSAgZm9yIChj
b25zdCBtIG9mIG1ldGhvZHMpIHsKLSAgICBjb25zdCBwcm9wRGVzYyA9IE9iamVjdC5nZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3IocHJvdG8sIG0pOwotICAgIGFzc2VydF9lcXVhbHMocHJvcERlc2Mu
ZW51bWVyYWJsZSwgZmFsc2UsICdtZXRob2Qgc2hvdWxkIGJlIG5vbi1lbnVtZXJhYmxlJyk7Ci0g
ICAgYXNzZXJ0X2VxdWFscyhwcm9wRGVzYy5jb25maWd1cmFibGUsIHRydWUsICdtZXRob2Qgc2hv
dWxkIGJlIGNvbmZpZ3VyYWJsZScpOwotICAgIGFzc2VydF9lcXVhbHMocHJvcERlc2Mud3JpdGFi
bGUsIHRydWUsICdtZXRob2Qgc2hvdWxkIGJlIHdyaXRhYmxlJyk7Ci0gICAgYXNzZXJ0X2VxdWFs
cyh0eXBlb2YgcnNSZWFkZXJbbV0sICdmdW5jdGlvbicsICdzaG91bGQgaGF2ZSBiZSBhIG1ldGhv
ZCcpOwotICAgIGNvbnN0IGV4cGVjdGVkTmFtZSA9IG0gPT09ICdjb25zdHJ1Y3RvcicgPyAnUmVh
ZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyJyA6IG07Ci0gICAgYXNzZXJ0X2VxdWFscyhyc1JlYWRl
clttXS5uYW1lLCBleHBlY3RlZE5hbWUsICdtZXRob2Qgc2hvdWxkIGhhdmUgdGhlIGNvcnJlY3Qg
bmFtZScpOwotICB9Ci0KLSAgY29uc3QgY2xvc2VkUHJvcERlc2MgPSBPYmplY3QuZ2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKHByb3RvLCAnY2xvc2VkJyk7Ci0gIGFzc2VydF9lcXVhbHMoY2xvc2Vk
UHJvcERlc2MuZW51bWVyYWJsZSwgZmFsc2UsICdjbG9zZWQgc2hvdWxkIGJlIG5vbi1lbnVtZXJh
YmxlJyk7Ci0gIGFzc2VydF9lcXVhbHMoY2xvc2VkUHJvcERlc2MuY29uZmlndXJhYmxlLCB0cnVl
LCAnY2xvc2VkIHNob3VsZCBiZSBjb25maWd1cmFibGUnKTsKLSAgYXNzZXJ0X25vdF9lcXVhbHMo
Y2xvc2VkUHJvcERlc2MuZ2V0LCB1bmRlZmluZWQsICdjbG9zZWQgc2hvdWxkIGhhdmUgYSBnZXR0
ZXInKTsKLSAgYXNzZXJ0X2VxdWFscyhjbG9zZWRQcm9wRGVzYy5zZXQsIHVuZGVmaW5lZCwgJ2Ns
b3NlZCBzaG91bGQgbm90IGhhdmUgYSBzZXR0ZXInKTsKLQotICBhc3NlcnRfZXF1YWxzKHJzUmVh
ZGVyLmNhbmNlbC5sZW5ndGgsIDEsICdjYW5jZWwgaGFzIDEgcGFyYW1ldGVyJyk7Ci0gIGFzc2Vy
dF9ub3RfZXF1YWxzKHJzUmVhZGVyLmNsb3NlZCwgdW5kZWZpbmVkLCAnaGFzIGEgbm9uLXVuZGVm
aW5lZCBjbG9zZWQgcHJvcGVydHknKTsKLSAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgcnNSZWFkZXIu
Y2xvc2VkLnRoZW4sICdmdW5jdGlvbicsICdjbG9zZWQgcHJvcGVydHkgaXMgdGhlbmFibGUnKTsK
LSAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgcnNSZWFkZXIuY29uc3RydWN0b3IsICdmdW5jdGlvbics
ICdoYXMgYSBjb25zdHJ1Y3RvciBtZXRob2QnKTsKLSAgYXNzZXJ0X2VxdWFscyhyc1JlYWRlci5j
b25zdHJ1Y3Rvci5sZW5ndGgsIDEsICdjb25zdHJ1Y3RvciBoYXMgMSBwYXJhbWV0ZXInKTsKLSAg
YXNzZXJ0X2VxdWFscyh0eXBlb2YgcnNSZWFkZXIucmVhZCwgJ2Z1bmN0aW9uJywgJ2hhcyBhIGdl
dFJlYWRlciBtZXRob2QnKTsKLSAgYXNzZXJ0X2VxdWFscyhyc1JlYWRlci5yZWFkLmxlbmd0aCwg
MCwgJ3JlYWQgaGFzIG5vIHBhcmFtZXRlcnMnKTsKLSAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgcnNS
ZWFkZXIucmVsZWFzZUxvY2ssICdmdW5jdGlvbicsICdoYXMgYSByZWxlYXNlTG9jayBtZXRob2Qn
KTsKLSAgYXNzZXJ0X2VxdWFscyhyc1JlYWRlci5yZWxlYXNlTG9jay5sZW5ndGgsIDAsICdyZWxl
YXNlTG9jayBoYXMgbm8gcGFyYW1ldGVycycpOwotCi19LCAnUmVhZGFibGVTdHJlYW1EZWZhdWx0
UmVhZGVyIGluc3RhbmNlcyBzaG91bGQgaGF2ZSB0aGUgY29ycmVjdCBsaXN0IG9mIHByb3BlcnRp
ZXMnKTsKLQotdGVzdCgoKSA9PiB7Ci0KLSAgY29uc3QgcnNSZWFkZXIgPSBuZXcgUmVhZGFibGVT
dHJlYW1EZWZhdWx0UmVhZGVyKG5ldyBSZWFkYWJsZVN0cmVhbSgpKTsKLSAgYXNzZXJ0X2VxdWFs
cyhyc1JlYWRlci5jbG9zZWQsIHJzUmVhZGVyLmNsb3NlZCwgJ2Nsb3NlZCBzaG91bGQgcmV0dXJu
IHRoZSBzYW1lIHByb21pc2UnKTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlciBj
bG9zZWQgc2hvdWxkIGFsd2F5cyByZXR1cm4gdGhlIHNhbWUgcHJvbWlzZSBvYmplY3QnKTsKLQot
dGVzdCgoKSA9PiB7Ci0KLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oKTsKLSAgbmV3
IFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlcihycyk7IC8vIENvbnN0cnVjdGluZyBkaXJlY3Rs
eSB0aGUgZmlyc3QgdGltZSBzaG91bGQgYmUgZmluZS4KLSAgYXNzZXJ0X3Rocm93cyhuZXcgVHlw
ZUVycm9yKCksICgpID0+IG5ldyBSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIocnMpLAotICAg
ICAgICAgICAgICAgICdjb25zdHJ1Y3RpbmcgZGlyZWN0bHkgdGhlIHNlY29uZCB0aW1lIHNob3Vs
ZCBmYWlsJyk7Ci0KLX0sICdDb25zdHJ1Y3RpbmcgYSBSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFk
ZXIgZGlyZWN0bHkgc2hvdWxkIGZhaWwgaWYgdGhlIHN0cmVhbSBpcyBhbHJlYWR5IGxvY2tlZCAo
dmlhIGRpcmVjdCAnICsKLSAgICdjb25zdHJ1Y3Rpb24pJyk7Ci0KLXRlc3QoKCkgPT4gewotCi0g
IGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKCk7Ci0gIG5ldyBSZWFkYWJsZVN0cmVhbURl
ZmF1bHRSZWFkZXIocnMpOyAvLyBDb25zdHJ1Y3RpbmcgZGlyZWN0bHkgc2hvdWxkIGJlIGZpbmUu
Ci0gIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBycy5nZXRSZWFkZXIoKSwg
J2dldFJlYWRlcigpIHNob3VsZCBmYWlsJyk7Ci0KLX0sICdHZXR0aW5nIGEgUmVhZGFibGVTdHJl
YW1EZWZhdWx0UmVhZGVyIHZpYSBnZXRSZWFkZXIgc2hvdWxkIGZhaWwgaWYgdGhlIHN0cmVhbSBp
cyBhbHJlYWR5IGxvY2tlZCAodmlhIGRpcmVjdCAnICsKLSAgICdjb25zdHJ1Y3Rpb24pJyk7Ci0K
LXRlc3QoKCkgPT4gewotCi0gIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKCk7Ci0gIHJz
LmdldFJlYWRlcigpOyAvLyBnZXRSZWFkZXIoKSBzaG91bGQgYmUgZmluZS4KLSAgYXNzZXJ0X3Ro
cm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IG5ldyBSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFk
ZXIocnMpLCAnY29uc3RydWN0aW5nIGRpcmVjdGx5IHNob3VsZCBmYWlsJyk7Ci0KLX0sICdDb25z
dHJ1Y3RpbmcgYSBSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIgZGlyZWN0bHkgc2hvdWxkIGZh
aWwgaWYgdGhlIHN0cmVhbSBpcyBhbHJlYWR5IGxvY2tlZCAodmlhIGdldFJlYWRlciknKTsKLQot
dGVzdCgoKSA9PiB7Ci0KLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oKTsKLSAgcnMu
Z2V0UmVhZGVyKCk7IC8vIGdldFJlYWRlcigpIHNob3VsZCBiZSBmaW5lLgotICBhc3NlcnRfdGhy
b3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gcnMuZ2V0UmVhZGVyKCksICdnZXRSZWFkZXIoKSBz
aG91bGQgZmFpbCcpOwotCi19LCAnR2V0dGluZyBhIFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRl
ciB2aWEgZ2V0UmVhZGVyIHNob3VsZCBmYWlsIGlmIHRoZSBzdHJlYW0gaXMgYWxyZWFkeSBsb2Nr
ZWQgKHZpYSBnZXRSZWFkZXIpJyk7Ci0KLXRlc3QoKCkgPT4gewotCi0gIGNvbnN0IHJzID0gbmV3
IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0gICAgICBjLmNsb3NlKCk7Ci0gICAg
fQotICB9KTsKLQotICBuZXcgUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyKHJzKTsgLy8gQ29u
c3RydWN0aW5nIGRpcmVjdGx5IHNob3VsZCBub3QgdGhyb3cuCi0KLX0sICdDb25zdHJ1Y3Rpbmcg
YSBSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIgZGlyZWN0bHkgc2hvdWxkIGJlIE9LIGlmIHRo
ZSBzdHJlYW0gaXMgY2xvc2VkJyk7Ci0KLXRlc3QoKCkgPT4gewotCi0gIGNvbnN0IHRoZUVycm9y
ID0gbmV3IEVycm9yKCdkb25cJ3Qgc2F5IGkgZGlkblwndCB3YXJuIHlhJyk7Ci0gIGNvbnN0IHJz
ID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0gICAgICBjLmVycm9yKHRo
ZUVycm9yKTsKLSAgICB9Ci0gIH0pOwotCi0gIG5ldyBSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFk
ZXIocnMpOyAvLyBDb25zdHJ1Y3RpbmcgZGlyZWN0bHkgc2hvdWxkIG5vdCB0aHJvdy4KLQotfSwg
J0NvbnN0cnVjdGluZyBhIFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlciBkaXJlY3RseSBzaG91
bGQgYmUgT0sgaWYgdGhlIHN0cmVhbSBpcyBlcnJvcmVkJyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9
PiB7Ci0KLSAgbGV0IGNvbnRyb2xsZXI7Ci0gIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFt
KHsKLSAgICBzdGFydChjKSB7Ci0gICAgICBjb250cm9sbGVyID0gYzsKLSAgICB9Ci0gIH0pOwot
ICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKLQotICBjb25zdCBwcm9taXNlID0gcmVh
ZGVyLnJlYWQoKS50aGVuKHJlc3VsdCA9PiB7Ci0gICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVz
dWx0LCB7IHZhbHVlOiAnYScsIGRvbmU6IGZhbHNlIH0sICdyZWFkKCkgc2hvdWxkIGZ1bGZpbGwg
d2l0aCB0aGUgZW5xdWV1ZWQgY2h1bmsnKTsKLSAgfSk7Ci0KLSAgY29udHJvbGxlci5lbnF1ZXVl
KCdhJyk7Ci0gIHJldHVybiBwcm9taXNlOwotCi19LCAnUmVhZGluZyBmcm9tIGEgcmVhZGVyIGZv
ciBhbiBlbXB0eSBzdHJlYW0gd2lsbCB3YWl0IHVudGlsIGEgY2h1bmsgaXMgYXZhaWxhYmxlJyk7
Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgbGV0IGNhbmNlbENhbGxlZCA9IGZhbHNlOwot
ICBjb25zdCBwYXNzZWRSZWFzb24gPSBuZXcgRXJyb3IoJ2l0IHdhc25cJ3QgdGhlIHJpZ2h0IHRp
bWUsIHNvcnJ5Jyk7Ci0gIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBjYW5j
ZWwocmVhc29uKSB7Ci0gICAgICBhc3NlcnRfdHJ1ZShycy5sb2NrZWQsICd0aGUgc3RyZWFtIHNo
b3VsZCBzdGlsbCBiZSBsb2NrZWQnKTsKLSAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJv
cigpLCAoKSA9PiBycy5nZXRSZWFkZXIoKSwgJ3Nob3VsZCBub3QgYmUgYWJsZSB0byBnZXQgYW5v
dGhlciByZWFkZXInKTsKLSAgICAgIGFzc2VydF9lcXVhbHMocmVhc29uLCBwYXNzZWRSZWFzb24s
ICd0aGUgY2FuY2VsbGF0aW9uIHJlYXNvbiBpcyBwYXNzZWQgdGhyb3VnaCB0byB0aGUgdW5kZXJs
eWluZyBzb3VyY2UnKTsKLSAgICAgIGNhbmNlbENhbGxlZCA9IHRydWU7Ci0gICAgfQotICB9KTsK
LQotICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKLSAgcmV0dXJuIHJlYWRlci5jYW5j
ZWwocGFzc2VkUmVhc29uKS50aGVuKCgpID0+IGFzc2VydF90cnVlKGNhbmNlbENhbGxlZCkpOwot
Ci19LCAnY2FuY2VsKCkgb24gYSByZWFkZXIgZG9lcyBub3QgcmVsZWFzZSB0aGUgcmVhZGVyJyk7
Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgbGV0IGNvbnRyb2xsZXI7Ci0gIGNvbnN0IHJz
ID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0gICAgICBjb250cm9sbGVy
ID0gYzsKLSAgICB9Ci0gIH0pOwotCi0gIGNvbnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcigpOwot
ICBjb25zdCBwcm9taXNlID0gcmVhZGVyLmNsb3NlZDsKLQotICBjb250cm9sbGVyLmNsb3NlKCk7
Ci0gIHJldHVybiBwcm9taXNlOwotCi19LCAnY2xvc2VkIHNob3VsZCBiZSBmdWxmaWxsZWQgYWZ0
ZXIgc3RyZWFtIGlzIGNsb3NlZCAoLmNsb3NlZCBhY2Nlc3MgYmVmb3JlIGFjcXVpcmluZyknKTsK
LQotcHJvbWlzZV90ZXN0KHQgPT4gewotCi0gIGxldCBjb250cm9sbGVyOwotICBjb25zdCBycyA9
IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgY29udHJvbGxlciA9
IGM7Ci0gICAgfQotICB9KTsKLQotICBjb25zdCByZWFkZXIxID0gcnMuZ2V0UmVhZGVyKCk7Ci0K
LSAgcmVhZGVyMS5yZWxlYXNlTG9jaygpOwotCi0gIGNvbnN0IHJlYWRlcjIgPSBycy5nZXRSZWFk
ZXIoKTsKLSAgY29udHJvbGxlci5jbG9zZSgpOwotCi0gIHJldHVybiBQcm9taXNlLmFsbChbCi0g
ICAgcHJvbWlzZV9yZWplY3RzKHQsIG5ldyBUeXBlRXJyb3IoKSwgcmVhZGVyMS5jbG9zZWQpLAot
ICAgIHJlYWRlcjIuY2xvc2VkCi0gIF0pOwotCi19LCAnY2xvc2VkIHNob3VsZCBiZSByZWplY3Rl
ZCBhZnRlciByZWFkZXIgcmVsZWFzZXMgaXRzIGxvY2sgKG11bHRpcGxlIHN0cmVhbSBsb2Nrcykn
KTsKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLQotICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0
cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgYy5lbnF1ZXVlKCdhJyk7Ci0gICAgICBjLmVu
cXVldWUoJ2InKTsKLSAgICAgIGMuY2xvc2UoKTsKLSAgICB9Ci0gIH0pOwotCi0gIGNvbnN0IHJl
YWRlcjEgPSBycy5nZXRSZWFkZXIoKTsKLSAgY29uc3QgcHJvbWlzZTEgPSByZWFkZXIxLnJlYWQo
KS50aGVuKHIgPT4gewotICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHIsIHsgdmFsdWU6ICdhJywg
ZG9uZTogZmFsc2UgfSwgJ3JlYWRpbmcgdGhlIGZpcnN0IGNodW5rIGZyb20gcmVhZGVyMSB3b3Jr
cycpOwotICB9KTsKLSAgcmVhZGVyMS5yZWxlYXNlTG9jaygpOwotCi0gIGNvbnN0IHJlYWRlcjIg
PSBycy5nZXRSZWFkZXIoKTsKLSAgY29uc3QgcHJvbWlzZTIgPSByZWFkZXIyLnJlYWQoKS50aGVu
KHIgPT4gewotICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHIsIHsgdmFsdWU6ICdiJywgZG9uZTog
ZmFsc2UgfSwgJ3JlYWRpbmcgdGhlIHNlY29uZCBjaHVuayBmcm9tIHJlYWRlcjIgd29ya3MnKTsK
LSAgfSk7Ci0gIHJlYWRlcjIucmVsZWFzZUxvY2soKTsKLQotICByZXR1cm4gUHJvbWlzZS5hbGwo
W3Byb21pc2UxLCBwcm9taXNlMl0pOwotCi19LCAnTXVsdGlwbGUgcmVhZGVycyBjYW4gYWNjZXNz
IHRoZSBzdHJlYW0gaW4gc2VxdWVuY2UnKTsKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLSAgY29u
c3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGMuZW5x
dWV1ZSgnYScpOwotICAgIH0KLSAgfSk7Ci0KLSAgY29uc3QgcmVhZGVyMSA9IHJzLmdldFJlYWRl
cigpOwotICByZWFkZXIxLnJlbGVhc2VMb2NrKCk7Ci0KLSAgY29uc3QgcmVhZGVyMiA9IHJzLmdl
dFJlYWRlcigpOwotCi0gIC8vIFNob3VsZCBiZSBhIG5vLW9wCi0gIHJlYWRlcjEucmVsZWFzZUxv
Y2soKTsKLQotICByZXR1cm4gcmVhZGVyMi5yZWFkKCkudGhlbihyZXN1bHQgPT4gewotICAgIGFz
c2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdCwgeyB2YWx1ZTogJ2EnLCBkb25lOiBmYWxzZSB9LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICdyZWFkKCkgc2hvdWxkIHN0aWxsIHdvcmsgb24gcmVh
ZGVyMiBldmVuIGFmdGVyIHJlYWRlcjEgaXMgcmVsZWFzZWQnKTsKLSAgfSk7Ci0KLX0sICdDYW5u
b3QgdXNlIGFuIGFscmVhZHktcmVsZWFzZWQgcmVhZGVyIHRvIHVubG9jayBhIHN0cmVhbSBhZ2Fp
bicpOwotCi1wcm9taXNlX3Rlc3QodCA9PiB7Ci0KLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVT
dHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGMuZW5xdWV1ZSgnYScpOwotICAgIH0sCi0g
ICAgY2FuY2VsKCkgewotICAgICAgYXNzZXJ0X3VucmVhY2hlZCgndW5kZXJseWluZyBzb3VyY2Ug
Y2FuY2VsIHNob3VsZCBub3QgYmUgY2FsbGVkJyk7Ci0gICAgfQotICB9KTsKLQotICBjb25zdCBy
ZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKLSAgcmVhZGVyLnJlbGVhc2VMb2NrKCk7Ci0gIGNvbnN0
IGNhbmNlbFByb21pc2UgPSByZWFkZXIuY2FuY2VsKCk7Ci0KLSAgY29uc3QgcmVhZGVyMiA9IHJz
LmdldFJlYWRlcigpOwotICBjb25zdCByZWFkUHJvbWlzZSA9IHJlYWRlcjIucmVhZCgpLnRoZW4o
ciA9PiB7Ci0gICAgYXNzZXJ0X29iamVjdF9lcXVhbHMociwgeyB2YWx1ZTogJ2EnLCBkb25lOiBm
YWxzZSB9LCAnYSBuZXcgcmVhZGVyIHNob3VsZCBiZSBhYmxlIHRvIHJlYWQgYSBjaHVuaycpOwot
ICB9KTsKLQotICByZXR1cm4gUHJvbWlzZS5hbGwoWwotICAgIHByb21pc2VfcmVqZWN0cyh0LCBu
ZXcgVHlwZUVycm9yKCksIGNhbmNlbFByb21pc2UpLAotICAgIHJlYWRQcm9taXNlCi0gIF0pOwot
Ci19LCAnY2FuY2VsKCkgb24gYSByZWxlYXNlZCByZWFkZXIgaXMgYSBuby1vcCBhbmQgZG9lcyBu
b3QgcGFzcyB0aHJvdWdoJyk7Ci0KLXByb21pc2VfdGVzdCh0ID0+IHsKLQotICBjb25zdCBwcm9t
aXNlQXNzZXJ0cyA9IFtdOwotCi0gIGxldCBjb250cm9sbGVyOwotICBjb25zdCB0aGVFcnJvciA9
IHsgbmFtZTogJ3VuaXF1ZSBlcnJvcicgfTsKLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJl
YW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGNvbnRyb2xsZXIgPSBjOwotICAgIH0KLSAgfSk7
Ci0KLSAgY29uc3QgcmVhZGVyMSA9IHJzLmdldFJlYWRlcigpOwotCi0gIHByb21pc2VBc3NlcnRz
LnB1c2goCi0gICAgcHJvbWlzZV9yZWplY3RzKHQsIHRoZUVycm9yLCByZWFkZXIxLmNsb3NlZCks
Ci0gICAgcHJvbWlzZV9yZWplY3RzKHQsIHRoZUVycm9yLCByZWFkZXIxLnJlYWQoKSkKLSAgKTsK
LQotICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gcnMuZ2V0UmVhZGVyKCks
ICd0cnlpbmcgdG8gZ2V0IGFub3RoZXIgcmVhZGVyIGJlZm9yZSBlcnJvcmluZyBzaG91bGQgdGhy
b3cnKTsKLQotICBjb250cm9sbGVyLmVycm9yKHRoZUVycm9yKTsKLQotICByZWFkZXIxLnJlbGVh
c2VMb2NrKCk7Ci0KLSAgY29uc3QgcmVhZGVyMiA9IHJzLmdldFJlYWRlcigpOwotCi0gIHByb21p
c2VBc3NlcnRzLnB1c2goCi0gICAgcHJvbWlzZV9yZWplY3RzKHQsIHRoZUVycm9yLCByZWFkZXIy
LmNsb3NlZCksCi0gICAgcHJvbWlzZV9yZWplY3RzKHQsIHRoZUVycm9yLCByZWFkZXIyLnJlYWQo
KSkKLSAgKTsKLQotICByZXR1cm4gUHJvbWlzZS5hbGwocHJvbWlzZUFzc2VydHMpOwotCi19LCAn
R2V0dGluZyBhIHNlY29uZCByZWFkZXIgYWZ0ZXIgZXJyb3JpbmcgdGhlIHN0cmVhbSBhbmQgcmVs
ZWFzaW5nIHRoZSByZWFkZXIgc2hvdWxkIHN1Y2NlZWQnKTsKLQotcHJvbWlzZV90ZXN0KHQgPT4g
ewotCi0gIGxldCBjb250cm9sbGVyOwotICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7
Ci0gICAgc3RhcnQoYykgewotICAgICAgY29udHJvbGxlciA9IGM7Ci0gICAgfQotICB9KTsKLQot
ICBjb25zdCBwcm9taXNlID0gcnMuZ2V0UmVhZGVyKCkuY2xvc2VkLnRoZW4oCi0gICAgdC51bnJl
YWNoZWRfZnVuYygnY2xvc2VkIHByb21pc2Ugc2hvdWxkIG5vdCBiZSBmdWxmaWxsZWQgd2hlbiBz
dHJlYW0gaXMgZXJyb3JlZCcpLAotICAgIGVyciA9PiB7Ci0gICAgICBhc3NlcnRfZXF1YWxzKGVy
ciwgdW5kZWZpbmVkLCAncGFzc2VkIGVycm9yIHNob3VsZCBiZSB1bmRlZmluZWQgYXMgaXQgd2Fz
Jyk7Ci0gICAgfQotICApOwotCi0gIGNvbnRyb2xsZXIuZXJyb3IoKTsKLSAgcmV0dXJuIHByb21p
c2U7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIgY2xvc2VkIHByb21pc2Ugc2hv
dWxkIGJlIHJlamVjdGVkIHdpdGggdW5kZWZpbmVkIGlmIHRoYXQgaXMgdGhlIGVycm9yJyk7Ci0K
LQotcHJvbWlzZV90ZXN0KHQgPT4gewotCi0gIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFt
KHsKLSAgICBzdGFydCgpIHsKLSAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCgpOwotICAgIH0K
LSAgfSk7Ci0KLSAgcmV0dXJuIHJzLmdldFJlYWRlcigpLnJlYWQoKS50aGVuKAotICAgIHQudW5y
ZWFjaGVkX2Z1bmMoJ3JlYWQgcHJvbWlzZSBzaG91bGQgbm90IGJlIGZ1bGZpbGxlZCB3aGVuIHN0
cmVhbSBpcyBlcnJvcmVkJyksCi0gICAgZXJyID0+IHsKLSAgICAgIGFzc2VydF9lcXVhbHMoZXJy
LCB1bmRlZmluZWQsICdwYXNzZWQgZXJyb3Igc2hvdWxkIGJlIHVuZGVmaW5lZCBhcyBpdCB3YXMn
KTsKLSAgICB9Ci0gICk7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXI6IGlmIHN0
YXJ0IHJlamVjdHMgd2l0aCBubyBwYXJhbWV0ZXIsIGl0IHNob3VsZCBlcnJvciB0aGUgc3RyZWFt
IHdpdGggYW4gdW5kZWZpbmVkICcgKwotICAgICdlcnJvcicpOwotCi1wcm9taXNlX3Rlc3QodCA9
PiB7Ci0KLSAgY29uc3QgdGhlRXJyb3IgPSB7IG5hbWU6ICd1bmlxdWUgc3RyaW5nJyB9OwotICBs
ZXQgY29udHJvbGxlcjsKLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0
YXJ0KGMpIHsKLSAgICAgIGNvbnRyb2xsZXIgPSBjOwotICAgIH0KLSAgfSk7Ci0KLSAgY29uc3Qg
cHJvbWlzZSA9IHByb21pc2VfcmVqZWN0cyh0LCB0aGVFcnJvciwgcnMuZ2V0UmVhZGVyKCkuY2xv
c2VkKTsKLQotICBjb250cm9sbGVyLmVycm9yKHRoZUVycm9yKTsKLSAgcmV0dXJuIHByb21pc2U7
Ci0KLX0sICdFcnJvcmluZyBhIFJlYWRhYmxlU3RyZWFtIGFmdGVyIGNoZWNraW5nIGNsb3NlZCBz
aG91bGQgcmVqZWN0IFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlciBjbG9zZWQgcHJvbWlzZScp
OwotCi1wcm9taXNlX3Rlc3QodCA9PiB7Ci0KLSAgY29uc3QgdGhlRXJyb3IgPSB7IG5hbWU6ICd1
bmlxdWUgc3RyaW5nJyB9OwotICBsZXQgY29udHJvbGxlcjsKLSAgY29uc3QgcnMgPSBuZXcgUmVh
ZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGNvbnRyb2xsZXIgPSBjOwotICAg
IH0KLSAgfSk7Ci0KLSAgY29udHJvbGxlci5lcnJvcih0aGVFcnJvcik7Ci0KLSAgLy8gTGV0J3Mg
Y2FsbCBnZXRSZWFkZXIgdHdpY2UgZm9yIGV4dHJhIHRlc3QgY292ZXJhZ2Ugb2YgdGhpcyBjb2Rl
IHBhdGguCi0gIHJzLmdldFJlYWRlcigpLnJlbGVhc2VMb2NrKCk7Ci0KLSAgcmV0dXJuIHByb21p
c2VfcmVqZWN0cyh0LCB0aGVFcnJvciwgcnMuZ2V0UmVhZGVyKCkuY2xvc2VkKTsKLQotfSwgJ0Vy
cm9yaW5nIGEgUmVhZGFibGVTdHJlYW0gYmVmb3JlIGNoZWNraW5nIGNsb3NlZCBzaG91bGQgcmVq
ZWN0IFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlciBjbG9zZWQgcHJvbWlzZScpOwotCi1wcm9t
aXNlX3Rlc3QoKCkgPT4gewotCi0gIGxldCBjb250cm9sbGVyOwotICBjb25zdCBycyA9IG5ldyBS
ZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgY29udHJvbGxlciA9IGM7Ci0g
ICAgfQotICB9KTsKLSAgY29uc3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7Ci0KLSAgY29uc3Qg
cHJvbWlzZSA9IFByb21pc2UuYWxsKFsKLSAgICByZWFkZXIucmVhZCgpLnRoZW4ocmVzdWx0ID0+
IHsKLSAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdCwgeyB2YWx1ZTogdW5kZWZpbmVk
LCBkb25lOiB0cnVlIH0sICdyZWFkKCkgc2hvdWxkIGZ1bGZpbGwgd2l0aCBjbG9zZSAoMSknKTsK
LSAgICB9KSwKLSAgICByZWFkZXIucmVhZCgpLnRoZW4ocmVzdWx0ID0+IHsKLSAgICAgIGFzc2Vy
dF9vYmplY3RfZXF1YWxzKHJlc3VsdCwgeyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0s
ICdyZWFkKCkgc2hvdWxkIGZ1bGZpbGwgd2l0aCBjbG9zZSAoMiknKTsKLSAgICB9KSwKLSAgICBy
ZWFkZXIuY2xvc2VkCi0gIF0pOwotCi0gIGNvbnRyb2xsZXIuY2xvc2UoKTsKLSAgcmV0dXJuIHBy
b21pc2U7Ci0KLX0sICdSZWFkaW5nIHR3aWNlIG9uIGEgc3RyZWFtIHRoYXQgZ2V0cyBjbG9zZWQn
KTsKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLQotICBsZXQgY29udHJvbGxlcjsKLSAgY29uc3Qg
cnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGNvbnRyb2xs
ZXIgPSBjOwotICAgIH0KLSAgfSk7Ci0KLSAgY29udHJvbGxlci5jbG9zZSgpOwotICBjb25zdCBy
ZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKLQotICByZXR1cm4gUHJvbWlzZS5hbGwoWwotICAgIHJl
YWRlci5yZWFkKCkudGhlbihyZXN1bHQgPT4gewotICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMo
cmVzdWx0LCB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSwgJ3JlYWQoKSBzaG91bGQg
ZnVsZmlsbCB3aXRoIGNsb3NlICgxKScpOwotICAgIH0pLAotICAgIHJlYWRlci5yZWFkKCkudGhl
bihyZXN1bHQgPT4gewotICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0LCB7IHZhbHVl
OiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSwgJ3JlYWQoKSBzaG91bGQgZnVsZmlsbCB3aXRoIGNs
b3NlICgyKScpOwotICAgIH0pLAotICAgIHJlYWRlci5jbG9zZWQKLSAgXSk7Ci0KLX0sICdSZWFk
aW5nIHR3aWNlIG9uIGEgY2xvc2VkIHN0cmVhbScpOwotCi1wcm9taXNlX3Rlc3QodCA9PiB7Ci0K
LSAgbGV0IGNvbnRyb2xsZXI7Ci0gIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAg
ICBzdGFydChjKSB7Ci0gICAgICBjb250cm9sbGVyID0gYzsKLSAgICB9Ci0gIH0pOwotCi0gIGNv
bnN0IG15RXJyb3IgPSB7IG5hbWU6ICdtYXNoZWQgcG90YXRvZXMnIH07Ci0gIGNvbnRyb2xsZXIu
ZXJyb3IobXlFcnJvcik7Ci0KLSAgY29uc3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7Ci0KLSAg
cmV0dXJuIFByb21pc2UuYWxsKFsKLSAgICBwcm9taXNlX3JlamVjdHModCwgbXlFcnJvciwgcmVh
ZGVyLnJlYWQoKSksCi0gICAgcHJvbWlzZV9yZWplY3RzKHQsIG15RXJyb3IsIHJlYWRlci5yZWFk
KCkpLAotICAgIHByb21pc2VfcmVqZWN0cyh0LCBteUVycm9yLCByZWFkZXIuY2xvc2VkKQotICBd
KTsKLQotfSwgJ1JlYWRpbmcgdHdpY2Ugb24gYW4gZXJyb3JlZCBzdHJlYW0nKTsKLQotcHJvbWlz
ZV90ZXN0KHQgPT4gewotCi0gIGxldCBjb250cm9sbGVyOwotICBjb25zdCBycyA9IG5ldyBSZWFk
YWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgY29udHJvbGxlciA9IGM7Ci0gICAg
fQotICB9KTsKLQotICBjb25zdCBteUVycm9yID0geyBuYW1lOiAnbWFzaGVkIHBvdGF0b2VzJyB9
OwotICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKLQotICBjb25zdCBwcm9taXNlID0g
UHJvbWlzZS5hbGwoWwotICAgIHByb21pc2VfcmVqZWN0cyh0LCBteUVycm9yLCByZWFkZXIucmVh
ZCgpKSwKLSAgICBwcm9taXNlX3JlamVjdHModCwgbXlFcnJvciwgcmVhZGVyLnJlYWQoKSksCi0g
ICAgcHJvbWlzZV9yZWplY3RzKHQsIG15RXJyb3IsIHJlYWRlci5jbG9zZWQpCi0gIF0pOwotCi0g
IGNvbnRyb2xsZXIuZXJyb3IobXlFcnJvcik7Ci0gIHJldHVybiBwcm9taXNlOwotCi19LCAnUmVh
ZGluZyB0d2ljZSBvbiBhIHN0cmVhbSB0aGF0IGdldHMgZXJyb3JlZCcpOwotCi10ZXN0KCgpID0+
IHsKLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oKTsKLSAgbGV0IHRvU3RyaW5nQ2Fs
bGVkID0gZmFsc2U7Ci0gIGNvbnN0IG1vZGUgPSB7Ci0gICAgdG9TdHJpbmcoKSB7Ci0gICAgICB0
b1N0cmluZ0NhbGxlZCA9IHRydWU7Ci0gICAgICByZXR1cm4gJyc7Ci0gICAgfQotICB9OwotICBh
c3NlcnRfdGhyb3dzKG5ldyBSYW5nZUVycm9yKCksICgpID0+IHJzLmdldFJlYWRlcih7IG1vZGUg
fSksICdnZXRSZWFkZXIoKSBzaG91bGQgdGhyb3cnKTsKLSAgYXNzZXJ0X3RydWUodG9TdHJpbmdD
YWxsZWQsICd0b1N0cmluZygpIHNob3VsZCBiZSBjYWxsZWQnKTsKLX0sICdnZXRSZWFkZXIoKSBz
aG91bGQgY2FsbCBUb1N0cmluZygpIG9uIG1vZGUnKTsKLQotZG9uZSgpOwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRh
YmxlLXN0cmVhbXMvZGVmYXVsdC1yZWFkZXIuc2VydmljZXdvcmtlci5odHRwcy1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
cmVhZGFibGUtc3RyZWFtcy9kZWZhdWx0LXJlYWRlci5zZXJ2aWNld29ya2VyLmh0dHBzLWV4cGVj
dGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2ExZWVmNDRlN2VjODJmNTU1
YzE3Yzk4YWUzNmVmMWU5MGQzODVmMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9kZWZhdWx0LXJlYWRlci5zZXJ2aWNld29ya2VyLmh0
dHBzLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLQotUEFTUyBT
ZXJ2aWNlIHdvcmtlciB0ZXN0IHNldHVwIAotUEFTUyBDYW4gZ2V0IHRoZSBSZWFkYWJsZVN0cmVh
bURlZmF1bHRSZWFkZXIgY29uc3RydWN0b3IgaW5kaXJlY3RseSAKLVBBU1MgUmVhZGFibGVTdHJl
YW1EZWZhdWx0UmVhZGVyIGNvbnN0cnVjdG9yIHNob3VsZCBnZXQgYSBSZWFkYWJsZVN0cmVhbSBv
YmplY3QgYXMgYXJndW1lbnQgCi1QQVNTIFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlciBpbnN0
YW5jZXMgc2hvdWxkIGhhdmUgdGhlIGNvcnJlY3QgbGlzdCBvZiBwcm9wZXJ0aWVzIAotUEFTUyBS
ZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIgY2xvc2VkIHNob3VsZCBhbHdheXMgcmV0dXJuIHRo
ZSBzYW1lIHByb21pc2Ugb2JqZWN0IAotUEFTUyBDb25zdHJ1Y3RpbmcgYSBSZWFkYWJsZVN0cmVh
bURlZmF1bHRSZWFkZXIgZGlyZWN0bHkgc2hvdWxkIGZhaWwgaWYgdGhlIHN0cmVhbSBpcyBhbHJl
YWR5IGxvY2tlZCAodmlhIGRpcmVjdCBjb25zdHJ1Y3Rpb24pIAotUEFTUyBHZXR0aW5nIGEgUmVh
ZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyIHZpYSBnZXRSZWFkZXIgc2hvdWxkIGZhaWwgaWYgdGhl
IHN0cmVhbSBpcyBhbHJlYWR5IGxvY2tlZCAodmlhIGRpcmVjdCBjb25zdHJ1Y3Rpb24pIAotUEFT
UyBDb25zdHJ1Y3RpbmcgYSBSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIgZGlyZWN0bHkgc2hv
dWxkIGZhaWwgaWYgdGhlIHN0cmVhbSBpcyBhbHJlYWR5IGxvY2tlZCAodmlhIGdldFJlYWRlcikg
Ci1QQVNTIEdldHRpbmcgYSBSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIgdmlhIGdldFJlYWRl
ciBzaG91bGQgZmFpbCBpZiB0aGUgc3RyZWFtIGlzIGFscmVhZHkgbG9ja2VkICh2aWEgZ2V0UmVh
ZGVyKSAKLVBBU1MgQ29uc3RydWN0aW5nIGEgUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyIGRp
cmVjdGx5IHNob3VsZCBiZSBPSyBpZiB0aGUgc3RyZWFtIGlzIGNsb3NlZCAKLVBBU1MgQ29uc3Ry
dWN0aW5nIGEgUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyIGRpcmVjdGx5IHNob3VsZCBiZSBP
SyBpZiB0aGUgc3RyZWFtIGlzIGVycm9yZWQgCi1QQVNTIFJlYWRpbmcgZnJvbSBhIHJlYWRlciBm
b3IgYW4gZW1wdHkgc3RyZWFtIHdpbGwgd2FpdCB1bnRpbCBhIGNodW5rIGlzIGF2YWlsYWJsZSAK
LVBBU1MgY2FuY2VsKCkgb24gYSByZWFkZXIgZG9lcyBub3QgcmVsZWFzZSB0aGUgcmVhZGVyIAot
UEFTUyBjbG9zZWQgc2hvdWxkIGJlIGZ1bGZpbGxlZCBhZnRlciBzdHJlYW0gaXMgY2xvc2VkICgu
Y2xvc2VkIGFjY2VzcyBiZWZvcmUgYWNxdWlyaW5nKSAKLVBBU1MgY2xvc2VkIHNob3VsZCBiZSBy
ZWplY3RlZCBhZnRlciByZWFkZXIgcmVsZWFzZXMgaXRzIGxvY2sgKG11bHRpcGxlIHN0cmVhbSBs
b2NrcykgCi1QQVNTIE11bHRpcGxlIHJlYWRlcnMgY2FuIGFjY2VzcyB0aGUgc3RyZWFtIGluIHNl
cXVlbmNlIAotUEFTUyBDYW5ub3QgdXNlIGFuIGFscmVhZHktcmVsZWFzZWQgcmVhZGVyIHRvIHVu
bG9jayBhIHN0cmVhbSBhZ2FpbiAKLVBBU1MgY2FuY2VsKCkgb24gYSByZWxlYXNlZCByZWFkZXIg
aXMgYSBuby1vcCBhbmQgZG9lcyBub3QgcGFzcyB0aHJvdWdoIAotUEFTUyBHZXR0aW5nIGEgc2Vj
b25kIHJlYWRlciBhZnRlciBlcnJvcmluZyB0aGUgc3RyZWFtIGFuZCByZWxlYXNpbmcgdGhlIHJl
YWRlciBzaG91bGQgc3VjY2VlZCAKLVBBU1MgUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyIGNs
b3NlZCBwcm9taXNlIHNob3VsZCBiZSByZWplY3RlZCB3aXRoIHVuZGVmaW5lZCBpZiB0aGF0IGlz
IHRoZSBlcnJvciAKLVBBU1MgUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyOiBpZiBzdGFydCBy
ZWplY3RzIHdpdGggbm8gcGFyYW1ldGVyLCBpdCBzaG91bGQgZXJyb3IgdGhlIHN0cmVhbSB3aXRo
IGFuIHVuZGVmaW5lZCBlcnJvciAKLVBBU1MgRXJyb3JpbmcgYSBSZWFkYWJsZVN0cmVhbSBhZnRl
ciBjaGVja2luZyBjbG9zZWQgc2hvdWxkIHJlamVjdCBSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFk
ZXIgY2xvc2VkIHByb21pc2UgCi1QQVNTIEVycm9yaW5nIGEgUmVhZGFibGVTdHJlYW0gYmVmb3Jl
IGNoZWNraW5nIGNsb3NlZCBzaG91bGQgcmVqZWN0IFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRl
ciBjbG9zZWQgcHJvbWlzZSAKLVBBU1MgUmVhZGluZyB0d2ljZSBvbiBhIHN0cmVhbSB0aGF0IGdl
dHMgY2xvc2VkIAotUEFTUyBSZWFkaW5nIHR3aWNlIG9uIGEgY2xvc2VkIHN0cmVhbSAKLVBBU1Mg
UmVhZGluZyB0d2ljZSBvbiBhbiBlcnJvcmVkIHN0cmVhbSAKLVBBU1MgUmVhZGluZyB0d2ljZSBv
biBhIHN0cmVhbSB0aGF0IGdldHMgZXJyb3JlZCAKLVBBU1MgZ2V0UmVhZGVyKCkgc2hvdWxkIGNh
bGwgVG9TdHJpbmcoKSBvbiBtb2RlIAotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9kZWZhdWx0
LXJlYWRlci5zZXJ2aWNld29ya2VyLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9kZWZhdWx0LXJl
YWRlci5zZXJ2aWNld29ya2VyLmh0dHBzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGFiNDFmZjI5YmZjMDAwMTJjZWVmYjBlNjM1YTk1YjI0YmFlOWQ3ODMuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZGVmYXVsdC1y
ZWFkZXIuc2VydmljZXdvcmtlci5odHRwcy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAs
MCBAQAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08dGl0bGU+ZGVm
YXVsdC1yZWFkZXIuanMgc2VydmljZSB3b3JrZXIgd3JhcHBlciBmaWxlPC90aXRsZT4KLQotPHNj
cmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBz
cmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBz
cmM9Ii9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvcmVzb3VyY2VzL3Rlc3QtaGVscGVy
cy5zdWIuanMiPjwvc2NyaXB0PgotCi08c2NyaXB0PgotJ3VzZSBzdHJpY3QnOwotc2VydmljZV93
b3JrZXJfdGVzdCgnZGVmYXVsdC1yZWFkZXIuanMnLCAnU2VydmljZSB3b3JrZXIgdGVzdCBzZXR1
cCcpOwotPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9kZWZhdWx0LXJlYWRlci5z
aGFyZWR3b3JrZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZGVmYXVsdC1yZWFkZXIuc2hh
cmVkd29ya2VyLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDlk
NWQyNTA5ZDc4NDdlOGNkNmZlNjYwNmFhNjBjZGQzM2FhNDc0ZS4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9kZWZhdWx0LXJlYWRlci5z
aGFyZWR3b3JrZXItZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1D
T05TT0xFIE1FU1NBR0U6IFJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBTaGFy
ZWRXb3JrZXIKLQotSGFybmVzcyBFcnJvciAoRkFJTCksIG1lc3NhZ2UgPSBSZWZlcmVuY2VFcnJv
cjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogU2hhcmVkV29ya2VyCi0KLQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxl
LXN0cmVhbXMvZGVmYXVsdC1yZWFkZXIuc2hhcmVkd29ya2VyLmh0bWwgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9k
ZWZhdWx0LXJlYWRlci5zaGFyZWR3b3JrZXIuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggOTZkZTNiYTBmZjM3MWFkNDIwZGIyNzZlODhkM2M3MTk2ZGM4Y2VhMy4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9kZWZhdWx0
LXJlYWRlci5zaGFyZWR3b3JrZXIuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAK
LTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHRpdGxlPmRlZmF1bHQt
cmVhZGVyLmpzIHNoYXJlZCB3b3JrZXIgd3JhcHBlciBmaWxlPC90aXRsZT4KLQotPHNjcmlwdCBz
cmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9y
ZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotCi08c2NyaXB0PgotJ3Vz
ZSBzdHJpY3QnOwotZmV0Y2hfdGVzdHNfZnJvbV93b3JrZXIobmV3IFNoYXJlZFdvcmtlcignZGVm
YXVsdC1yZWFkZXIuanMnKSk7Ci08L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2Zs
b2F0aW5nLXBvaW50LXRvdGFsLXF1ZXVlLXNpemUuYW55LWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJl
YW1zL2Zsb2F0aW5nLXBvaW50LXRvdGFsLXF1ZXVlLXNpemUuYW55LWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5hN2YxOTdlNjBjMDk4Y2Q5MWJjNDdmNDRiODhmZWU4MDZhMTAyMjc0Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
dHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZmxvYXRpbmctcG9pbnQtdG90YWwtcXVldWUtc2l6ZS5h
bnktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNiBAQAorCitQQVNTIEZsb2F0aW5nIHBvaW50IGFy
aXRobWV0aWMgbXVzdCBtYW5pZmVzdCBuZWFyIE5VTUJFUi5NQVhfU0FGRV9JTlRFR0VSICh0b3Rh
bCBlbmRzIHVwIHBvc2l0aXZlKSAKK1BBU1MgRmxvYXRpbmcgcG9pbnQgYXJpdGhtZXRpYyBtdXN0
IG1hbmlmZXN0IG5lYXIgMCAodG90YWwgZW5kcyB1cCBwb3NpdGl2ZSwgYnV0IGNsYW1wZWQpIAor
UEFTUyBGbG9hdGluZyBwb2ludCBhcml0aG1ldGljIG11c3QgbWFuaWZlc3QgbmVhciAwICh0b3Rh
bCBlbmRzIHVwIHBvc2l0aXZlLCBhbmQgbm90IGNsYW1wZWQpIAorUEFTUyBGbG9hdGluZyBwb2lu
dCBhcml0aG1ldGljIG11c3QgbWFuaWZlc3QgbmVhciAwICh0b3RhbCBlbmRzIHVwIHplcm8pIAor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9mbG9hdGluZy1wb2ludC10b3RhbC1xdWV1ZS1zaXpl
LmFueS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
dHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZmxvYXRpbmctcG9pbnQtdG90YWwtcXVldWUtc2l6ZS5h
bnkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4yMzgyOTEzNTI4ZTY5M2IzYTVkNTZjNjYwYTQ1MDYwOTgwYjU0
OGMzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZmxvYXRpbmctcG9pbnQtdG90YWwt
cXVldWUtc2l6ZS5hbnkuaHRtbApAQCAtMCwwICsxIEBACis8IS0tIFRoaXMgZmlsZSBpcyByZXF1
aXJlZCBmb3IgV2ViS2l0IHRlc3QgaW5mcmFzdHJ1Y3R1cmUgdG8gcnVuIHRoZSB0ZW1wbGF0ZWQg
dGVzdCAtLT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3Ry
ZWFtcy9mbG9hdGluZy1wb2ludC10b3RhbC1xdWV1ZS1zaXplLmFueS5qcyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1z
L2Zsb2F0aW5nLXBvaW50LXRvdGFsLXF1ZXVlLXNpemUuYW55LmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQwMDQ4
MmE0NTBjYWQyOWZlMmJjMDUxNWUyMjU0NGUzN2MwYWVkN2YKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFi
bGUtc3RyZWFtcy9mbG9hdGluZy1wb2ludC10b3RhbC1xdWV1ZS1zaXplLmFueS5qcwpAQCAtMCww
ICsxLDExNiBAQAorLy8gTUVUQTogZ2xvYmFsPXdpbmRvdyx3b3JrZXIsanNzaGVsbAorJ3VzZSBz
dHJpY3QnOworCisvLyBEdWUgdG8gdGhlIGxpbWl0YXRpb25zIG9mIGZsb2F0aW5nLXBvaW50IHBy
ZWNpc2lvbiwgdGhlIGNhbGN1bGF0aW9uIG9mIGRlc2lyZWRTaXplIHNvbWV0aW1lcyBnaXZlcyBk
aWZmZXJlbnQgYW5zd2VycworLy8gdGhhbiBhZGRpbmcgdXAgdGhlIGl0ZW1zIGluIHRoZSBxdWV1
ZSB3b3VsZC4gSXQgaXMgaW1wb3J0YW50IHRoYXQgaW1wbGVtZW50YXRpb25zIGdpdmUgdGhlIHNh
bWUgcmVzdWx0IGluIHRoZXNlIGVkZ2UKKy8vIGNhc2VzIHNvIHRoYXQgZGV2ZWxvcGVycyBkbyBu
b3QgY29tZSB0byBkZXBlbmQgb24gbm9uLXN0YW5kYXJkIGJlaGF2aW91ci4gU2VlCisvLyBodHRw
czovL2dpdGh1Yi5jb20vd2hhdHdnL3N0cmVhbXMvaXNzdWVzLzU4MiBhbmQgbGlua2VkIGlzc3Vl
cyBmb3IgZnVydGhlciBkaXNjdXNzaW9uLgorCitwcm9taXNlX3Rlc3QoKCkgPT4geworICBjb25z
dCB7IHJlYWRlciwgY29udHJvbGxlciB9ID0gc2V0dXBUZXN0U3RyZWFtKCk7CisKKyAgY29udHJv
bGxlci5lbnF1ZXVlKDIpOworICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUs
IDAgLSAyLCAnZGVzaXJlZFNpemUgbXVzdCBiZSAtMiBhZnRlciBlbnF1ZXVlaW5nIHN1Y2ggYSBj
aHVuaycpOworCisgIGNvbnRyb2xsZXIuZW5xdWV1ZShOdW1iZXIuTUFYX1NBRkVfSU5URUdFUik7
CisgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMCAtIE51bWJlci5NQVhf
U0FGRV9JTlRFR0VSIC0gMiwKKyAgICAnZGVzaXJlZFNpemUgbXVzdCBiZSBjYWxjdWxhdGVkIHVz
aW5nIGRvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgYXJpdGhtZXRpYyAoYWRkaW5nIGEg
c2Vjb25kIGNodW5rKScpOworCisgIHJldHVybiByZWFkZXIucmVhZCgpLnRoZW4oKCkgPT4gewor
ICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMCAtIE51bWJlci5NQVhf
U0FGRV9JTlRFR0VSIC0gMiArIDIsCisgICAgICAnZGVzaXJlZFNpemUgbXVzdCBiZSBjYWxjdWxh
dGVkIHVzaW5nIGRvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgYXJpdGhtZXRpYyAoc3Vi
dHJhY3RpbmcgYSBjaHVuayknKTsKKworICAgIHJldHVybiByZWFkZXIucmVhZCgpOworICB9KS50
aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDAs
ICdbW3F1ZXVlVG90YWxTaXplXV0gbXVzdCBjbGFtcCB0byAwIGlmIGl0IGJlY29tZXMgbmVnYXRp
dmUnKTsKKyAgfSk7Cit9LCAnRmxvYXRpbmcgcG9pbnQgYXJpdGhtZXRpYyBtdXN0IG1hbmlmZXN0
IG5lYXIgTlVNQkVSLk1BWF9TQUZFX0lOVEVHRVIgKHRvdGFsIGVuZHMgdXAgcG9zaXRpdmUpJyk7
CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisgIGNvbnN0IHsgcmVhZGVyLCBjb250cm9sbGVyIH0g
PSBzZXR1cFRlc3RTdHJlYW0oKTsKKworICBjb250cm9sbGVyLmVucXVldWUoMWUtMTYpOworICBh
c3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDAgLSAxZS0xNiwgJ2Rlc2lyZWRT
aXplIG11c3QgYmUgLTFlMTYgYWZ0ZXIgZW5xdWV1ZWluZyBzdWNoIGEgY2h1bmsnKTsKKworICBj
b250cm9sbGVyLmVucXVldWUoMSk7CisgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVk
U2l6ZSwgMCAtIDFlLTE2IC0gMSwKKyAgICAnZGVzaXJlZFNpemUgbXVzdCBiZSBjYWxjdWxhdGVk
IHVzaW5nIGRvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgYXJpdGhtZXRpYyAoYWRkaW5n
IGEgc2Vjb25kIGNodW5rKScpOworCisgIHJldHVybiByZWFkZXIucmVhZCgpLnRoZW4oKCkgPT4g
eworICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMCAtIDFlLTE2IC0g
MSArIDFlLTE2LAorICAgICAgJ2Rlc2lyZWRTaXplIG11c3QgYmUgY2FsY3VsYXRlZCB1c2luZyBk
b3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IGFyaXRobWV0aWMgKHN1YnRyYWN0aW5nIGEg
Y2h1bmspJyk7CisKKyAgICByZXR1cm4gcmVhZGVyLnJlYWQoKTsKKyAgfSkudGhlbigoKSA9PiB7
CisgICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAwLCAnW1txdWV1ZVRv
dGFsU2l6ZV1dIG11c3QgY2xhbXAgdG8gMCBpZiBpdCBiZWNvbWVzIG5lZ2F0aXZlJyk7CisgIH0p
OworfSwgJ0Zsb2F0aW5nIHBvaW50IGFyaXRobWV0aWMgbXVzdCBtYW5pZmVzdCBuZWFyIDAgKHRv
dGFsIGVuZHMgdXAgcG9zaXRpdmUsIGJ1dCBjbGFtcGVkKScpOworCitwcm9taXNlX3Rlc3QoKCkg
PT4geworICBjb25zdCB7IHJlYWRlciwgY29udHJvbGxlciB9ID0gc2V0dXBUZXN0U3RyZWFtKCk7
CisKKyAgY29udHJvbGxlci5lbnF1ZXVlKDFlLTE2KTsKKyAgYXNzZXJ0X2VxdWFscyhjb250cm9s
bGVyLmRlc2lyZWRTaXplLCAwIC0gMWUtMTYsICdkZXNpcmVkU2l6ZSBtdXN0IGJlIC0yZTE2IGFm
dGVyIGVucXVldWVpbmcgc3VjaCBhIGNodW5rJyk7CisKKyAgY29udHJvbGxlci5lbnF1ZXVlKDEp
OworICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDAgLSAxZS0xNiAtIDEs
CisgICAgJ2Rlc2lyZWRTaXplIG11c3QgYmUgY2FsY3VsYXRlZCB1c2luZyBkb3VibGUtcHJlY2lz
aW9uIGZsb2F0aW5nLXBvaW50IGFyaXRobWV0aWMgKGFkZGluZyBhIHNlY29uZCBjaHVuayknKTsK
KworICBjb250cm9sbGVyLmVucXVldWUoMmUtMTYpOworICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xs
ZXIuZGVzaXJlZFNpemUsIDAgLSAxZS0xNiAtIDEgLSAyZS0xNiwKKyAgICAnZGVzaXJlZFNpemUg
bXVzdCBiZSBjYWxjdWxhdGVkIHVzaW5nIGRvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQg
YXJpdGhtZXRpYyAoYWRkaW5nIGEgdGhpcmQgY2h1bmspJyk7CisKKyAgcmV0dXJuIHJlYWRlci5y
ZWFkKCkudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRT
aXplLCAwIC0gMWUtMTYgLSAxIC0gMmUtMTYgKyAxZS0xNiwKKyAgICAgICdkZXNpcmVkU2l6ZSBt
dXN0IGJlIGNhbGN1bGF0ZWQgdXNpbmcgZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCBh
cml0aG1ldGljIChzdWJ0cmFjdGluZyBhIGNodW5rKScpOworCisgICAgcmV0dXJuIHJlYWRlci5y
ZWFkKCk7CisgIH0pLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5k
ZXNpcmVkU2l6ZSwgMCAtIDFlLTE2IC0gMSAtIDJlLTE2ICsgMWUtMTYgKyAxLAorICAgICAgJ2Rl
c2lyZWRTaXplIG11c3QgYmUgY2FsY3VsYXRlZCB1c2luZyBkb3VibGUtcHJlY2lzaW9uIGZsb2F0
aW5nLXBvaW50IGFyaXRobWV0aWMgKHN1YnRyYWN0aW5nIGEgc2Vjb25kIGNodW5rKScpOworCisg
ICAgcmV0dXJuIHJlYWRlci5yZWFkKCk7CisgIH0pLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9l
cXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMCAtIDFlLTE2IC0gMSAtIDJlLTE2ICsgMWUt
MTYgKyAxICsgMmUtMTYsCisgICAgICAnZGVzaXJlZFNpemUgbXVzdCBiZSBjYWxjdWxhdGVkIHVz
aW5nIGRvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgYXJpdGhtZXRpYyAoc3VidHJhY3Rp
bmcgYSB0aGlyZCBjaHVuayknKTsKKyAgfSk7Cit9LCAnRmxvYXRpbmcgcG9pbnQgYXJpdGhtZXRp
YyBtdXN0IG1hbmlmZXN0IG5lYXIgMCAodG90YWwgZW5kcyB1cCBwb3NpdGl2ZSwgYW5kIG5vdCBj
bGFtcGVkKScpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworICBjb25zdCB7IHJlYWRlciwgY29u
dHJvbGxlciB9ID0gc2V0dXBUZXN0U3RyZWFtKCk7CisKKyAgY29udHJvbGxlci5lbnF1ZXVlKDJl
LTE2KTsKKyAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAwIC0gMmUtMTYs
ICdkZXNpcmVkU2l6ZSBtdXN0IGJlIC0yZTE2IGFmdGVyIGVucXVldWVpbmcgc3VjaCBhIGNodW5r
Jyk7CisKKyAgY29udHJvbGxlci5lbnF1ZXVlKDEpOworICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xs
ZXIuZGVzaXJlZFNpemUsIDAgLSAyZS0xNiAtIDEsCisgICAgJ2Rlc2lyZWRTaXplIG11c3QgYmUg
Y2FsY3VsYXRlZCB1c2luZyBkb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IGFyaXRobWV0
aWMgKGFkZGluZyBhIHNlY29uZCBjaHVuayknKTsKKworICByZXR1cm4gcmVhZGVyLnJlYWQoKS50
aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDAg
LSAyZS0xNiAtIDEgKyAyZS0xNiwKKyAgICAgICdkZXNpcmVkU2l6ZSBtdXN0IGJlIGNhbGN1bGF0
ZWQgdXNpbmcgZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCBhcml0aG1ldGljIChzdWJ0
cmFjdGluZyBhIGNodW5rKScpOworCisgICAgcmV0dXJuIHJlYWRlci5yZWFkKCk7CisgIH0pLnRo
ZW4oKCkgPT4geworICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMCwK
KyAgICAgICdkZXNpcmVkU2l6ZSBtdXN0IGJlIGNhbGN1bGF0ZWQgdXNpbmcgZG91YmxlLXByZWNp
c2lvbiBmbG9hdGluZy1wb2ludCBhcml0aG1ldGljIChzdWJ0cmFjdGluZyBhIHNlY29uZCBjaHVu
ayknKTsKKyAgfSk7Cit9LCAnRmxvYXRpbmcgcG9pbnQgYXJpdGhtZXRpYyBtdXN0IG1hbmlmZXN0
IG5lYXIgMCAodG90YWwgZW5kcyB1cCB6ZXJvKScpOworCitmdW5jdGlvbiBzZXR1cFRlc3RTdHJl
YW0oKSB7CisgIGNvbnN0IHN0cmF0ZWd5ID0geworICAgIHNpemUoeCkgeworICAgICAgcmV0dXJu
IHg7CisgICAgfSwKKyAgICBoaWdoV2F0ZXJNYXJrOiAwCisgIH07CisKKyAgbGV0IGNvbnRyb2xs
ZXI7CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7Cisg
ICAgICBjb250cm9sbGVyID0gYzsKKyAgICB9CisgIH0sIHN0cmF0ZWd5KTsKKworICByZXR1cm4g
eyByZWFkZXI6IHJzLmdldFJlYWRlcigpLCBjb250cm9sbGVyIH07Cit9CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFi
bGUtc3RyZWFtcy9mbG9hdGluZy1wb2ludC10b3RhbC1xdWV1ZS1zaXplLmFueS53b3JrZXItZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
dHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZmxvYXRpbmctcG9pbnQtdG90YWwtcXVldWUtc2l6ZS5h
bnkud29ya2VyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hN2YxOTdlNjBjMDk4Y2Q5MWJjNDdm
NDRiODhmZWU4MDZhMTAyMjc0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZmxvYXRp
bmctcG9pbnQtdG90YWwtcXVldWUtc2l6ZS5hbnkud29ya2VyLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDYgQEAKKworUEFTUyBGbG9hdGluZyBwb2ludCBhcml0aG1ldGljIG11c3QgbWFuaWZlc3Qg
bmVhciBOVU1CRVIuTUFYX1NBRkVfSU5URUdFUiAodG90YWwgZW5kcyB1cCBwb3NpdGl2ZSkgCitQ
QVNTIEZsb2F0aW5nIHBvaW50IGFyaXRobWV0aWMgbXVzdCBtYW5pZmVzdCBuZWFyIDAgKHRvdGFs
IGVuZHMgdXAgcG9zaXRpdmUsIGJ1dCBjbGFtcGVkKSAKK1BBU1MgRmxvYXRpbmcgcG9pbnQgYXJp
dGhtZXRpYyBtdXN0IG1hbmlmZXN0IG5lYXIgMCAodG90YWwgZW5kcyB1cCBwb3NpdGl2ZSwgYW5k
IG5vdCBjbGFtcGVkKSAKK1BBU1MgRmxvYXRpbmcgcG9pbnQgYXJpdGhtZXRpYyBtdXN0IG1hbmlm
ZXN0IG5lYXIgMCAodG90YWwgZW5kcyB1cCB6ZXJvKSAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVh
bXMvZmxvYXRpbmctcG9pbnQtdG90YWwtcXVldWUtc2l6ZS5hbnkud29ya2VyLmh0bWwgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUt
c3RyZWFtcy9mbG9hdGluZy1wb2ludC10b3RhbC1xdWV1ZS1zaXplLmFueS53b3JrZXIuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4yMzgyOTEzNTI4ZTY5M2IzYTVkNTZjNjYwYTQ1MDYwOTgwYjU0OGMzCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZmxvYXRpbmctcG9pbnQtdG90YWwtcXVldWUtc2l6
ZS5hbnkud29ya2VyLmh0bWwKQEAgLTAsMCArMSBAQAorPCEtLSBUaGlzIGZpbGUgaXMgcmVxdWly
ZWQgZm9yIFdlYktpdCB0ZXN0IGluZnJhc3RydWN0dXJlIHRvIHJ1biB0aGUgdGVtcGxhdGVkIHRl
c3QgLS0+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVh
bXMvZmxvYXRpbmctcG9pbnQtdG90YWwtcXVldWUtc2l6ZS5kZWRpY2F0ZWR3b3JrZXItZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJl
YW1zL3JlYWRhYmxlLXN0cmVhbXMvZmxvYXRpbmctcG9pbnQtdG90YWwtcXVldWUtc2l6ZS5kZWRp
Y2F0ZWR3b3JrZXItZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBh
N2YxOTdlNjBjMDk4Y2Q5MWJjNDdmNDRiODhmZWU4MDZhMTAyMjc0Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2Zsb2F0aW5nLXBvaW50
LXRvdGFsLXF1ZXVlLXNpemUuZGVkaWNhdGVkd29ya2VyLWV4cGVjdGVkLnR4dAorKysgL2Rldi9u
dWxsCkBAIC0xLDYgKzAsMCBAQAotCi1QQVNTIEZsb2F0aW5nIHBvaW50IGFyaXRobWV0aWMgbXVz
dCBtYW5pZmVzdCBuZWFyIE5VTUJFUi5NQVhfU0FGRV9JTlRFR0VSICh0b3RhbCBlbmRzIHVwIHBv
c2l0aXZlKSAKLVBBU1MgRmxvYXRpbmcgcG9pbnQgYXJpdGhtZXRpYyBtdXN0IG1hbmlmZXN0IG5l
YXIgMCAodG90YWwgZW5kcyB1cCBwb3NpdGl2ZSwgYnV0IGNsYW1wZWQpIAotUEFTUyBGbG9hdGlu
ZyBwb2ludCBhcml0aG1ldGljIG11c3QgbWFuaWZlc3QgbmVhciAwICh0b3RhbCBlbmRzIHVwIHBv
c2l0aXZlLCBhbmQgbm90IGNsYW1wZWQpIAotUEFTUyBGbG9hdGluZyBwb2ludCBhcml0aG1ldGlj
IG11c3QgbWFuaWZlc3QgbmVhciAwICh0b3RhbCBlbmRzIHVwIHplcm8pIAotCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVh
ZGFibGUtc3RyZWFtcy9mbG9hdGluZy1wb2ludC10b3RhbC1xdWV1ZS1zaXplLmRlZGljYXRlZHdv
cmtlci5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
dHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZmxvYXRpbmctcG9pbnQtdG90YWwtcXVldWUtc2l6ZS5k
ZWRpY2F0ZWR3b3JrZXIuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjA5OGIz
OWEzNDU1M2EyNjJhY2YzNzJjYWUwZTkyYzY0ZjVlNmI5OS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9mbG9hdGluZy1wb2ludC10b3Rh
bC1xdWV1ZS1zaXplLmRlZGljYXRlZHdvcmtlci5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTEg
KzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08dGl0bGU+
ZmxvYXRpbmctcG9pbnQtdG90YWwtcXVldWUtc2l6ZS5qcyBkZWRpY2F0ZWQgd29ya2VyIHdyYXBw
ZXIgZmlsZTwvdGl0bGU+Ci0KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpz
Ij48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0Lmpz
Ij48L3NjcmlwdD4KLQotPHNjcmlwdD4KLSd1c2Ugc3RyaWN0JzsKLWZldGNoX3Rlc3RzX2Zyb21f
d29ya2VyKG5ldyBXb3JrZXIoJ2Zsb2F0aW5nLXBvaW50LXRvdGFsLXF1ZXVlLXNpemUuanMnKSk7
Ci08L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2Zsb2F0aW5nLXBvaW50LXRvdGFs
LXF1ZXVlLXNpemUuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2Zsb2F0aW5nLXBvaW50LXRvdGFsLXF1ZXVl
LXNpemUuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjBlYTY3OTczZjI4OTI2
MTY3NTZhMDVmYjYzYTA5NmEyYmJkNzE5MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9mbG9hdGluZy1wb2ludC10b3RhbC1xdWV1ZS1z
aXplLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4K
LTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTx0aXRsZT5mbG9hdGluZy1wb2ludC10b3RhbC1xdWV1
ZS1zaXplLmpzIGJyb3dzZXIgY29udGV4dCB3cmFwcGVyIGZpbGU8L3RpdGxlPgotCi08c2NyaXB0
IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0i
L3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci0KLQotCi08c2NyaXB0
IHNyYz0iZmxvYXRpbmctcG9pbnQtdG90YWwtcXVldWUtc2l6ZS5qcyI+PC9zY3JpcHQ+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvcmVhZGFibGUtc3RyZWFtcy9mbG9hdGluZy1wb2ludC10b3RhbC1xdWV1ZS1zaXplLmpzIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRh
YmxlLXN0cmVhbXMvZmxvYXRpbmctcG9pbnQtdG90YWwtcXVldWUtc2l6ZS5qcwpkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggZjdjNzYyNDhiMGIyMDg2MmJiYmRiMzllZDc2OTUxYjg4ODk0
NTg2Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUt
c3RyZWFtcy9mbG9hdGluZy1wb2ludC10b3RhbC1xdWV1ZS1zaXplLmpzCisrKyAvZGV2L251bGwK
QEAgLTEsMTIxICswLDAgQEAKLSd1c2Ugc3RyaWN0JzsKLQotaWYgKHNlbGYuaW1wb3J0U2NyaXB0
cykgewotICBzZWxmLmltcG9ydFNjcmlwdHMoJy9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMnKTsK
LX0KLQotLy8gRHVlIHRvIHRoZSBsaW1pdGF0aW9ucyBvZiBmbG9hdGluZy1wb2ludCBwcmVjaXNp
b24sIHRoZSBjYWxjdWxhdGlvbiBvZiBkZXNpcmVkU2l6ZSBzb21ldGltZXMgZ2l2ZXMgZGlmZmVy
ZW50IGFuc3dlcnMKLS8vIHRoYW4gYWRkaW5nIHVwIHRoZSBpdGVtcyBpbiB0aGUgcXVldWUgd291
bGQuIEl0IGlzIGltcG9ydGFudCB0aGF0IGltcGxlbWVudGF0aW9ucyBnaXZlIHRoZSBzYW1lIHJl
c3VsdCBpbiB0aGVzZSBlZGdlCi0vLyBjYXNlcyBzbyB0aGF0IGRldmVsb3BlcnMgZG8gbm90IGNv
bWUgdG8gZGVwZW5kIG9uIG5vbi1zdGFuZGFyZCBiZWhhdmlvdXIuIFNlZQotLy8gaHR0cHM6Ly9n
aXRodWIuY29tL3doYXR3Zy9zdHJlYW1zL2lzc3Vlcy81ODIgYW5kIGxpbmtlZCBpc3N1ZXMgZm9y
IGZ1cnRoZXIgZGlzY3Vzc2lvbi4KLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLSAgY29uc3QgeyBy
ZWFkZXIsIGNvbnRyb2xsZXIgfSA9IHNldHVwVGVzdFN0cmVhbSgpOwotCi0gIGNvbnRyb2xsZXIu
ZW5xdWV1ZSgyKTsKLSAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAwIC0g
MiwgJ2Rlc2lyZWRTaXplIG11c3QgYmUgLTIgYWZ0ZXIgZW5xdWV1ZWluZyBzdWNoIGEgY2h1bmsn
KTsKLQotICBjb250cm9sbGVyLmVucXVldWUoTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIpOwotICBh
c3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDAgLSBOdW1iZXIuTUFYX1NBRkVf
SU5URUdFUiAtIDIsCi0gICAgJ2Rlc2lyZWRTaXplIG11c3QgYmUgY2FsY3VsYXRlZCB1c2luZyBk
b3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IGFyaXRobWV0aWMgKGFkZGluZyBhIHNlY29u
ZCBjaHVuayknKTsKLQotICByZXR1cm4gcmVhZGVyLnJlYWQoKS50aGVuKCgpID0+IHsKLSAgICBh
c3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDAgLSBOdW1iZXIuTUFYX1NBRkVf
SU5URUdFUiAtIDIgKyAyLAotICAgICAgJ2Rlc2lyZWRTaXplIG11c3QgYmUgY2FsY3VsYXRlZCB1
c2luZyBkb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IGFyaXRobWV0aWMgKHN1YnRyYWN0
aW5nIGEgY2h1bmspJyk7Ci0KLSAgICByZXR1cm4gcmVhZGVyLnJlYWQoKTsKLSAgfSkudGhlbigo
KSA9PiB7Ci0gICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAwLCAnW1tx
dWV1ZVRvdGFsU2l6ZV1dIG11c3QgY2xhbXAgdG8gMCBpZiBpdCBiZWNvbWVzIG5lZ2F0aXZlJyk7
Ci0gIH0pOwotfSwgJ0Zsb2F0aW5nIHBvaW50IGFyaXRobWV0aWMgbXVzdCBtYW5pZmVzdCBuZWFy
IE5VTUJFUi5NQVhfU0FGRV9JTlRFR0VSICh0b3RhbCBlbmRzIHVwIHBvc2l0aXZlKScpOwotCi1w
cm9taXNlX3Rlc3QoKCkgPT4gewotICBjb25zdCB7IHJlYWRlciwgY29udHJvbGxlciB9ID0gc2V0
dXBUZXN0U3RyZWFtKCk7Ci0KLSAgY29udHJvbGxlci5lbnF1ZXVlKDFlLTE2KTsKLSAgYXNzZXJ0
X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAwIC0gMWUtMTYsICdkZXNpcmVkU2l6ZSBt
dXN0IGJlIC0xZTE2IGFmdGVyIGVucXVldWVpbmcgc3VjaCBhIGNodW5rJyk7Ci0KLSAgY29udHJv
bGxlci5lbnF1ZXVlKDEpOwotICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUs
IDAgLSAxZS0xNiAtIDEsCi0gICAgJ2Rlc2lyZWRTaXplIG11c3QgYmUgY2FsY3VsYXRlZCB1c2lu
ZyBkb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IGFyaXRobWV0aWMgKGFkZGluZyBhIHNl
Y29uZCBjaHVuayknKTsKLQotICByZXR1cm4gcmVhZGVyLnJlYWQoKS50aGVuKCgpID0+IHsKLSAg
ICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDAgLSAxZS0xNiAtIDEgKyAx
ZS0xNiwKLSAgICAgICdkZXNpcmVkU2l6ZSBtdXN0IGJlIGNhbGN1bGF0ZWQgdXNpbmcgZG91Ymxl
LXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCBhcml0aG1ldGljIChzdWJ0cmFjdGluZyBhIGNodW5r
KScpOwotCi0gICAgcmV0dXJuIHJlYWRlci5yZWFkKCk7Ci0gIH0pLnRoZW4oKCkgPT4gewotICAg
IGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMCwgJ1tbcXVldWVUb3RhbFNp
emVdXSBtdXN0IGNsYW1wIHRvIDAgaWYgaXQgYmVjb21lcyBuZWdhdGl2ZScpOwotICB9KTsKLX0s
ICdGbG9hdGluZyBwb2ludCBhcml0aG1ldGljIG11c3QgbWFuaWZlc3QgbmVhciAwICh0b3RhbCBl
bmRzIHVwIHBvc2l0aXZlLCBidXQgY2xhbXBlZCknKTsKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsK
LSAgY29uc3QgeyByZWFkZXIsIGNvbnRyb2xsZXIgfSA9IHNldHVwVGVzdFN0cmVhbSgpOwotCi0g
IGNvbnRyb2xsZXIuZW5xdWV1ZSgxZS0xNik7Ci0gIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5k
ZXNpcmVkU2l6ZSwgMCAtIDFlLTE2LCAnZGVzaXJlZFNpemUgbXVzdCBiZSAtMmUxNiBhZnRlciBl
bnF1ZXVlaW5nIHN1Y2ggYSBjaHVuaycpOwotCi0gIGNvbnRyb2xsZXIuZW5xdWV1ZSgxKTsKLSAg
YXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAwIC0gMWUtMTYgLSAxLAotICAg
ICdkZXNpcmVkU2l6ZSBtdXN0IGJlIGNhbGN1bGF0ZWQgdXNpbmcgZG91YmxlLXByZWNpc2lvbiBm
bG9hdGluZy1wb2ludCBhcml0aG1ldGljIChhZGRpbmcgYSBzZWNvbmQgY2h1bmspJyk7Ci0KLSAg
Y29udHJvbGxlci5lbnF1ZXVlKDJlLTE2KTsKLSAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRl
c2lyZWRTaXplLCAwIC0gMWUtMTYgLSAxIC0gMmUtMTYsCi0gICAgJ2Rlc2lyZWRTaXplIG11c3Qg
YmUgY2FsY3VsYXRlZCB1c2luZyBkb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IGFyaXRo
bWV0aWMgKGFkZGluZyBhIHRoaXJkIGNodW5rKScpOwotCi0gIHJldHVybiByZWFkZXIucmVhZCgp
LnRoZW4oKCkgPT4gewotICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwg
MCAtIDFlLTE2IC0gMSAtIDJlLTE2ICsgMWUtMTYsCi0gICAgICAnZGVzaXJlZFNpemUgbXVzdCBi
ZSBjYWxjdWxhdGVkIHVzaW5nIGRvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgYXJpdGht
ZXRpYyAoc3VidHJhY3RpbmcgYSBjaHVuayknKTsKLQotICAgIHJldHVybiByZWFkZXIucmVhZCgp
OwotICB9KS50aGVuKCgpID0+IHsKLSAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJl
ZFNpemUsIDAgLSAxZS0xNiAtIDEgLSAyZS0xNiArIDFlLTE2ICsgMSwKLSAgICAgICdkZXNpcmVk
U2l6ZSBtdXN0IGJlIGNhbGN1bGF0ZWQgdXNpbmcgZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZy1w
b2ludCBhcml0aG1ldGljIChzdWJ0cmFjdGluZyBhIHNlY29uZCBjaHVuayknKTsKLQotICAgIHJl
dHVybiByZWFkZXIucmVhZCgpOwotICB9KS50aGVuKCgpID0+IHsKLSAgICBhc3NlcnRfZXF1YWxz
KGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDAgLSAxZS0xNiAtIDEgLSAyZS0xNiArIDFlLTE2ICsg
MSArIDJlLTE2LAotICAgICAgJ2Rlc2lyZWRTaXplIG11c3QgYmUgY2FsY3VsYXRlZCB1c2luZyBk
b3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IGFyaXRobWV0aWMgKHN1YnRyYWN0aW5nIGEg
dGhpcmQgY2h1bmspJyk7Ci0gIH0pOwotfSwgJ0Zsb2F0aW5nIHBvaW50IGFyaXRobWV0aWMgbXVz
dCBtYW5pZmVzdCBuZWFyIDAgKHRvdGFsIGVuZHMgdXAgcG9zaXRpdmUsIGFuZCBub3QgY2xhbXBl
ZCknKTsKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLSAgY29uc3QgeyByZWFkZXIsIGNvbnRyb2xs
ZXIgfSA9IHNldHVwVGVzdFN0cmVhbSgpOwotCi0gIGNvbnRyb2xsZXIuZW5xdWV1ZSgyZS0xNik7
Ci0gIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMCAtIDJlLTE2LCAnZGVz
aXJlZFNpemUgbXVzdCBiZSAtMmUxNiBhZnRlciBlbnF1ZXVlaW5nIHN1Y2ggYSBjaHVuaycpOwot
Ci0gIGNvbnRyb2xsZXIuZW5xdWV1ZSgxKTsKLSAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRl
c2lyZWRTaXplLCAwIC0gMmUtMTYgLSAxLAotICAgICdkZXNpcmVkU2l6ZSBtdXN0IGJlIGNhbGN1
bGF0ZWQgdXNpbmcgZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCBhcml0aG1ldGljIChh
ZGRpbmcgYSBzZWNvbmQgY2h1bmspJyk7Ci0KLSAgcmV0dXJuIHJlYWRlci5yZWFkKCkudGhlbigo
KSA9PiB7Ci0gICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAwIC0gMmUt
MTYgLSAxICsgMmUtMTYsCi0gICAgICAnZGVzaXJlZFNpemUgbXVzdCBiZSBjYWxjdWxhdGVkIHVz
aW5nIGRvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgYXJpdGhtZXRpYyAoc3VidHJhY3Rp
bmcgYSBjaHVuayknKTsKLQotICAgIHJldHVybiByZWFkZXIucmVhZCgpOwotICB9KS50aGVuKCgp
ID0+IHsKLSAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDAsCi0gICAg
ICAnZGVzaXJlZFNpemUgbXVzdCBiZSBjYWxjdWxhdGVkIHVzaW5nIGRvdWJsZS1wcmVjaXNpb24g
ZmxvYXRpbmctcG9pbnQgYXJpdGhtZXRpYyAoc3VidHJhY3RpbmcgYSBzZWNvbmQgY2h1bmspJyk7
Ci0gIH0pOwotfSwgJ0Zsb2F0aW5nIHBvaW50IGFyaXRobWV0aWMgbXVzdCBtYW5pZmVzdCBuZWFy
IDAgKHRvdGFsIGVuZHMgdXAgemVybyknKTsKLQotZnVuY3Rpb24gc2V0dXBUZXN0U3RyZWFtKCkg
ewotICBjb25zdCBzdHJhdGVneSA9IHsKLSAgICBzaXplKHgpIHsKLSAgICAgIHJldHVybiB4Owot
ICAgIH0sCi0gICAgaGlnaFdhdGVyTWFyazogMAotICB9OwotCi0gIGxldCBjb250cm9sbGVyOwot
ICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAg
Y29udHJvbGxlciA9IGM7Ci0gICAgfQotICB9LCBzdHJhdGVneSk7Ci0KLSAgcmV0dXJuIHsgcmVh
ZGVyOiBycy5nZXRSZWFkZXIoKSwgY29udHJvbGxlciB9OwotfQotCi1kb25lKCk7CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
cmVhZGFibGUtc3RyZWFtcy9mbG9hdGluZy1wb2ludC10b3RhbC1xdWV1ZS1zaXplLnNlcnZpY2V3
b3JrZXIuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZmxvYXRpbmctcG9pbnQtdG90
YWwtcXVldWUtc2l6ZS5zZXJ2aWNld29ya2VyLmh0dHBzLWV4cGVjdGVkLnR4dApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDg0MGVlYjRmODU3OWFmZmZiMjM4OGRkMjUxOGYwYWE5MTBl
YWFhYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUt
c3RyZWFtcy9mbG9hdGluZy1wb2ludC10b3RhbC1xdWV1ZS1zaXplLnNlcnZpY2V3b3JrZXIuaHR0
cHMtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNyArMCwwIEBACi0KLVBBU1MgU2Vy
dmljZSB3b3JrZXIgdGVzdCBzZXR1cCAKLVBBU1MgRmxvYXRpbmcgcG9pbnQgYXJpdGhtZXRpYyBt
dXN0IG1hbmlmZXN0IG5lYXIgTlVNQkVSLk1BWF9TQUZFX0lOVEVHRVIgKHRvdGFsIGVuZHMgdXAg
cG9zaXRpdmUpIAotUEFTUyBGbG9hdGluZyBwb2ludCBhcml0aG1ldGljIG11c3QgbWFuaWZlc3Qg
bmVhciAwICh0b3RhbCBlbmRzIHVwIHBvc2l0aXZlLCBidXQgY2xhbXBlZCkgCi1QQVNTIEZsb2F0
aW5nIHBvaW50IGFyaXRobWV0aWMgbXVzdCBtYW5pZmVzdCBuZWFyIDAgKHRvdGFsIGVuZHMgdXAg
cG9zaXRpdmUsIGFuZCBub3QgY2xhbXBlZCkgCi1QQVNTIEZsb2F0aW5nIHBvaW50IGFyaXRobWV0
aWMgbXVzdCBtYW5pZmVzdCBuZWFyIDAgKHRvdGFsIGVuZHMgdXAgemVybykgCi0KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9y
ZWFkYWJsZS1zdHJlYW1zL2Zsb2F0aW5nLXBvaW50LXRvdGFsLXF1ZXVlLXNpemUuc2VydmljZXdv
cmtlci5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZmxvYXRpbmctcG9pbnQtdG90YWwtcXVldWUt
c2l6ZS5zZXJ2aWNld29ya2VyLmh0dHBzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDFlYjdjOWU1M2RlNDE2MGNmYmUwNjRmMDIyZTIyNTBkYWJjMzdkZDAuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZmxvYXRpbmct
cG9pbnQtdG90YWwtcXVldWUtc2l6ZS5zZXJ2aWNld29ya2VyLmh0dHBzLmh0bWwKKysrIC9kZXYv
bnVsbApAQCAtMSwxMiArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9InV0
Zi04Ij4KLTx0aXRsZT5mbG9hdGluZy1wb2ludC10b3RhbC1xdWV1ZS1zaXplLmpzIHNlcnZpY2Ug
d29ya2VyIHdyYXBwZXIgZmlsZTwvdGl0bGU+Ci0KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rl
c3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJu
ZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvc2VydmljZS13b3JrZXJzL3Nl
cnZpY2Utd29ya2VyL3Jlc291cmNlcy90ZXN0LWhlbHBlcnMuc3ViLmpzIj48L3NjcmlwdD4KLQot
PHNjcmlwdD4KLSd1c2Ugc3RyaWN0JzsKLXNlcnZpY2Vfd29ya2VyX3Rlc3QoJ2Zsb2F0aW5nLXBv
aW50LXRvdGFsLXF1ZXVlLXNpemUuanMnLCAnU2VydmljZSB3b3JrZXIgdGVzdCBzZXR1cCcpOwot
PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9mbG9hdGluZy1wb2ludC10b3RhbC1x
dWV1ZS1zaXplLnNoYXJlZHdvcmtlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9mbG9hdGlu
Zy1wb2ludC10b3RhbC1xdWV1ZS1zaXplLnNoYXJlZHdvcmtlci1leHBlY3RlZC50eHQKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA5ZDVkMjUwOWQ3ODQ3ZThjZDZmZTY2MDZhYTYwY2Rk
MzNhYTQ3NGUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRh
YmxlLXN0cmVhbXMvZmxvYXRpbmctcG9pbnQtdG90YWwtcXVldWUtc2l6ZS5zaGFyZWR3b3JrZXIt
ZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1DT05TT0xFIE1FU1NB
R0U6IFJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBTaGFyZWRXb3JrZXIKLQot
SGFybmVzcyBFcnJvciAoRkFJTCksIG1lc3NhZ2UgPSBSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmlu
ZCB2YXJpYWJsZTogU2hhcmVkV29ya2VyCi0KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZmxv
YXRpbmctcG9pbnQtdG90YWwtcXVldWUtc2l6ZS5zaGFyZWR3b3JrZXIuaHRtbCBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJl
YW1zL2Zsb2F0aW5nLXBvaW50LXRvdGFsLXF1ZXVlLXNpemUuc2hhcmVkd29ya2VyLmh0bWwKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE3YmU3NDYyMjBmZGU4OTA0YzFhODQyZjdiNjJh
NWZhNGI5NmJkN2UuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3Jl
YWRhYmxlLXN0cmVhbXMvZmxvYXRpbmctcG9pbnQtdG90YWwtcXVldWUtc2l6ZS5zaGFyZWR3b3Jr
ZXIuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgot
PG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHRpdGxlPmZsb2F0aW5nLXBvaW50LXRvdGFsLXF1ZXVl
LXNpemUuanMgc2hhcmVkIHdvcmtlciB3cmFwcGVyIGZpbGU8L3RpdGxlPgotCi08c2NyaXB0IHNy
Yz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3Jl
c291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci0KLTxzY3JpcHQ+Ci0ndXNl
IHN0cmljdCc7Ci1mZXRjaF90ZXN0c19mcm9tX3dvcmtlcihuZXcgU2hhcmVkV29ya2VyKCdmbG9h
dGluZy1wb2ludC10b3RhbC1xdWV1ZS1zaXplLmpzJykpOwotPC9zY3JpcHQ+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVh
ZGFibGUtc3RyZWFtcy9nYXJiYWdlLWNvbGxlY3Rpb24uYW55LWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1z
dHJlYW1zL2dhcmJhZ2UtY29sbGVjdGlvbi5hbnktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAx
MGY1MGEwYzEzODVkYjYxMDdkMzQ2ZDk1NTFmMGY3MTBlNmQ1MmIKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVh
ZGFibGUtc3RyZWFtcy9nYXJiYWdlLWNvbGxlY3Rpb24uYW55LWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDYgQEAKKworUEFTUyBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIgbWV0aG9kcyBzaG91bGQg
Y29udGludWUgd29ya2luZyBwcm9wZXJseSB3aGVuIHNjcmlwdHMgbG9zZSB0aGVpciByZWZlcmVu
Y2UgdG8gdGhlIHJlYWRhYmxlIHN0cmVhbSAKK1BBU1MgUmVhZGFibGVTdHJlYW0gY2xvc2VkIHBy
b21pc2Ugc2hvdWxkIGZ1bGZpbGwgZXZlbiBpZiB0aGUgc3RyZWFtIGFuZCByZWFkZXIgSlMgcmVm
ZXJlbmNlcyBhcmUgbG9zdCAKK1BBU1MgUmVhZGFibGVTdHJlYW0gY2xvc2VkIHByb21pc2Ugc2hv
dWxkIHJlamVjdCBldmVuIGlmIHN0cmVhbSBhbmQgcmVhZGVyIEpTIHJlZmVyZW5jZXMgYXJlIGxv
c3QgCitQQVNTIEdhcmJhZ2UtY29sbGVjdGluZyBhIFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRl
ciBzaG91bGQgbm90IHVubG9jayBpdHMgc3RyZWFtIAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFt
cy9nYXJiYWdlLWNvbGxlY3Rpb24uYW55Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9nYXJiYWdlLWNvbGxl
Y3Rpb24uYW55Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjM4MjkxMzUyOGU2OTNiM2E1ZDU2YzY2MGE0NTA2
MDk4MGI1NDhjMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2dhcmJhZ2UtY29sbGVj
dGlvbi5hbnkuaHRtbApAQCAtMCwwICsxIEBACis8IS0tIFRoaXMgZmlsZSBpcyByZXF1aXJlZCBm
b3IgV2ViS2l0IHRlc3QgaW5mcmFzdHJ1Y3R1cmUgdG8gcnVuIHRoZSB0ZW1wbGF0ZWQgdGVzdCAt
LT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9n
YXJiYWdlLWNvbGxlY3Rpb24uYW55LmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZ2FyYmFnZS1jb2xsZWN0aW9u
LmFueS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5kYWQwYWQxNTM1YTViZjEwMjQ1YmYyOTJkNWZhM2JlM2U0Yjg5
ZjVkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZ2FyYmFnZS1jb2xsZWN0aW9uLmFu
eS5qcwpAQCAtMCwwICsxLDcwIEBACisvLyBNRVRBOiBnbG9iYWw9d2luZG93LHdvcmtlcixqc3No
ZWxsCisvLyBNRVRBOiBzY3JpcHQ9Li4vcmVzb3VyY2VzL3Rlc3QtdXRpbHMuanMKKyd1c2Ugc3Ry
aWN0JzsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKworICBsZXQgY29udHJvbGxlcjsKKyAgbmV3
IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjb250cm9sbGVyID0gYzsK
KyAgICB9CisgIH0pOworCisgIGdhcmJhZ2VDb2xsZWN0KCk7CisKKyAgcmV0dXJuIGRlbGF5KDUw
KS50aGVuKCgpID0+IHsKKyAgICBjb250cm9sbGVyLmNsb3NlKCk7CisgICAgYXNzZXJ0X3Rocm93
c19qcyhUeXBlRXJyb3IsICgpID0+IGNvbnRyb2xsZXIuY2xvc2UoKSwgJ2Nsb3NlIHNob3VsZCB0
aHJvdyBhIFR5cGVFcnJvciB0aGUgc2Vjb25kIHRpbWUnKTsKKyAgICBjb250cm9sbGVyLmVycm9y
KCk7CisgIH0pOworCit9LCAnUmVhZGFibGVTdHJlYW1Db250cm9sbGVyIG1ldGhvZHMgc2hvdWxk
IGNvbnRpbnVlIHdvcmtpbmcgcHJvcGVybHkgd2hlbiBzY3JpcHRzIGxvc2UgdGhlaXIgcmVmZXJl
bmNlIHRvIHRoZSAnICsKKyAgICdyZWFkYWJsZSBzdHJlYW0nKTsKKworcHJvbWlzZV90ZXN0KCgp
ID0+IHsKKworICBsZXQgY29udHJvbGxlcjsKKworICBjb25zdCBjbG9zZWRQcm9taXNlID0gbmV3
IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjb250cm9sbGVyID0gYzsK
KyAgICB9CisgIH0pLmdldFJlYWRlcigpLmNsb3NlZDsKKworICBnYXJiYWdlQ29sbGVjdCgpOwor
CisgIHJldHVybiBkZWxheSg1MCkudGhlbigoKSA9PiBjb250cm9sbGVyLmNsb3NlKCkpLnRoZW4o
KCkgPT4gY2xvc2VkUHJvbWlzZSk7CisKK30sICdSZWFkYWJsZVN0cmVhbSBjbG9zZWQgcHJvbWlz
ZSBzaG91bGQgZnVsZmlsbCBldmVuIGlmIHRoZSBzdHJlYW0gYW5kIHJlYWRlciBKUyByZWZlcmVu
Y2VzIGFyZSBsb3N0Jyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKworICBjb25zdCB0aGVFcnJv
ciA9IG5ldyBFcnJvcignYm9vJyk7CisgIGxldCBjb250cm9sbGVyOworCisgIGNvbnN0IGNsb3Nl
ZFByb21pc2UgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGNv
bnRyb2xsZXIgPSBjOworICAgIH0KKyAgfSkuZ2V0UmVhZGVyKCkuY2xvc2VkOworCisgIGdhcmJh
Z2VDb2xsZWN0KCk7CisKKyAgcmV0dXJuIGRlbGF5KDUwKS50aGVuKCgpID0+IGNvbnRyb2xsZXIu
ZXJyb3IodGhlRXJyb3IpKQorICAgICAgICAgICAgICAgICAgLnRoZW4oKCkgPT4gcHJvbWlzZV9y
ZWplY3RzX2V4YWN0bHkodCwgdGhlRXJyb3IsIGNsb3NlZFByb21pc2UpKTsKKworfSwgJ1JlYWRh
YmxlU3RyZWFtIGNsb3NlZCBwcm9taXNlIHNob3VsZCByZWplY3QgZXZlbiBpZiBzdHJlYW0gYW5k
IHJlYWRlciBKUyByZWZlcmVuY2VzIGFyZSBsb3N0Jyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7
CisKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oe30pOworCisgIHJzLmdldFJlYWRl
cigpOworCisgIGdhcmJhZ2VDb2xsZWN0KCk7CisKKyAgcmV0dXJuIGRlbGF5KDUwKS50aGVuKCgp
ID0+IGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiBycy5nZXRSZWFkZXIoKSwKKyAg
ICAnb2xkIHJlYWRlciBzaG91bGQgc3RpbGwgYmUgbG9ja2luZyB0aGUgc3RyZWFtIGV2ZW4gYWZ0
ZXIgZ2FyYmFnZSBjb2xsZWN0aW9uJykpOworCit9LCAnR2FyYmFnZS1jb2xsZWN0aW5nIGEgUmVh
ZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyIHNob3VsZCBub3QgdW5sb2NrIGl0cyBzdHJlYW0nKTsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2dhcmJhZ2UtY29sbGVjdGlvbi5hbnkud29ya2VyLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2dhcmJhZ2UtY29sbGVjdGlvbi5hbnkud29ya2VyLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMTBmNTBhMGMxMzg1ZGI2MTA3ZDM0NmQ5NTUxZjBmNzEw
ZTZkNTJiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZ2FyYmFnZS1jb2xsZWN0aW9u
LmFueS53b3JrZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNiBAQAorCitQQVNTIFJlYWRhYmxl
U3RyZWFtQ29udHJvbGxlciBtZXRob2RzIHNob3VsZCBjb250aW51ZSB3b3JraW5nIHByb3Blcmx5
IHdoZW4gc2NyaXB0cyBsb3NlIHRoZWlyIHJlZmVyZW5jZSB0byB0aGUgcmVhZGFibGUgc3RyZWFt
IAorUEFTUyBSZWFkYWJsZVN0cmVhbSBjbG9zZWQgcHJvbWlzZSBzaG91bGQgZnVsZmlsbCBldmVu
IGlmIHRoZSBzdHJlYW0gYW5kIHJlYWRlciBKUyByZWZlcmVuY2VzIGFyZSBsb3N0IAorUEFTUyBS
ZWFkYWJsZVN0cmVhbSBjbG9zZWQgcHJvbWlzZSBzaG91bGQgcmVqZWN0IGV2ZW4gaWYgc3RyZWFt
IGFuZCByZWFkZXIgSlMgcmVmZXJlbmNlcyBhcmUgbG9zdCAKK1BBU1MgR2FyYmFnZS1jb2xsZWN0
aW5nIGEgUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyIHNob3VsZCBub3QgdW5sb2NrIGl0cyBz
dHJlYW0gCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2dhcmJhZ2UtY29sbGVjdGlvbi5hbnku
d29ya2VyLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9nYXJiYWdlLWNvbGxlY3Rpb24uYW55Lndvcmtlci5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjIzODI5MTM1MjhlNjkzYjNhNWQ1NmM2NjBhNDUwNjA5ODBiNTQ4YzMK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9nYXJiYWdlLWNvbGxlY3Rpb24uYW55Lndv
cmtlci5odG1sCkBAIC0wLDAgKzEgQEAKKzwhLS0gVGhpcyBmaWxlIGlzIHJlcXVpcmVkIGZvciBX
ZWJLaXQgdGVzdCBpbmZyYXN0cnVjdHVyZSB0byBydW4gdGhlIHRlbXBsYXRlZCB0ZXN0IC0tPgpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2dhcmJh
Z2UtY29sbGVjdGlvbi5kZWRpY2F0ZWR3b3JrZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMv
Z2FyYmFnZS1jb2xsZWN0aW9uLmRlZGljYXRlZHdvcmtlci1leHBlY3RlZC50eHQKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAxMGY1MGEwYzEzODVkYjYxMDdkMzQ2ZDk1NTFmMGY3MTBl
NmQ1MmIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxl
LXN0cmVhbXMvZ2FyYmFnZS1jb2xsZWN0aW9uLmRlZGljYXRlZHdvcmtlci1leHBlY3RlZC50eHQK
KysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAgQEAKLQotUEFTUyBSZWFkYWJsZVN0cmVhbUNvbnRy
b2xsZXIgbWV0aG9kcyBzaG91bGQgY29udGludWUgd29ya2luZyBwcm9wZXJseSB3aGVuIHNjcmlw
dHMgbG9zZSB0aGVpciByZWZlcmVuY2UgdG8gdGhlIHJlYWRhYmxlIHN0cmVhbSAKLVBBU1MgUmVh
ZGFibGVTdHJlYW0gY2xvc2VkIHByb21pc2Ugc2hvdWxkIGZ1bGZpbGwgZXZlbiBpZiB0aGUgc3Ry
ZWFtIGFuZCByZWFkZXIgSlMgcmVmZXJlbmNlcyBhcmUgbG9zdCAKLVBBU1MgUmVhZGFibGVTdHJl
YW0gY2xvc2VkIHByb21pc2Ugc2hvdWxkIHJlamVjdCBldmVuIGlmIHN0cmVhbSBhbmQgcmVhZGVy
IEpTIHJlZmVyZW5jZXMgYXJlIGxvc3QgCi1QQVNTIEdhcmJhZ2UtY29sbGVjdGluZyBhIFJlYWRh
YmxlU3RyZWFtRGVmYXVsdFJlYWRlciBzaG91bGQgbm90IHVubG9jayBpdHMgc3RyZWFtIAotCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9nYXJiYWdlLWNvbGxlY3Rpb24uZGVkaWNhdGVkd29ya2Vy
Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvcmVhZGFibGUtc3RyZWFtcy9nYXJiYWdlLWNvbGxlY3Rpb24uZGVkaWNhdGVkd29ya2VyLmh0
bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVmZjk3Njg3NGYzZDA1ZGNjZjgxZTc4
MTA4ZjM2ZDAxM2EwYmY2NmEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJl
YW1zL3JlYWRhYmxlLXN0cmVhbXMvZ2FyYmFnZS1jb2xsZWN0aW9uLmRlZGljYXRlZHdvcmtlci5o
dG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08bWV0
YSBjaGFyc2V0PSJ1dGYtOCI+Ci08dGl0bGU+Z2FyYmFnZS1jb2xsZWN0aW9uLmpzIGRlZGljYXRl
ZCB3b3JrZXIgd3JhcHBlciBmaWxlPC90aXRsZT4KLQotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMv
dGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhh
cm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotCi08c2NyaXB0PgotJ3VzZSBzdHJpY3QnOwotZmV0
Y2hfdGVzdHNfZnJvbV93b3JrZXIobmV3IFdvcmtlcignZ2FyYmFnZS1jb2xsZWN0aW9uLmpzJykp
OwotPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9nYXJiYWdlLWNvbGxlY3Rpb24u
aHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy9yZWFkYWJsZS1zdHJlYW1zL2dhcmJhZ2UtY29sbGVjdGlvbi5odG1sCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBiOGJkZTEwZjY1ZDRhYjNlZjg4ZGM4NDNhOTljNTllZGM1OTFjYWEy
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJl
YW1zL2dhcmJhZ2UtY29sbGVjdGlvbi5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBA
QAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08dGl0bGU+Z2FyYmFn
ZS1jb2xsZWN0aW9uLmpzIGJyb3dzZXIgY29udGV4dCB3cmFwcGVyIGZpbGU8L3RpdGxlPgotCi08
c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0
IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci0KLTxzY3Jp
cHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Ci0KLTxzY3JpcHQg
c3JjPSJnYXJiYWdlLWNvbGxlY3Rpb24uanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0
cmVhbXMvZ2FyYmFnZS1jb2xsZWN0aW9uLmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZ2FyYmFnZS1jb2xsZWN0
aW9uLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZDE2NTI2ZTVhODViMjUyNzMx
NWFjYjNiNmFkZDMzOGEzNzRiZGNkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2dhcmJhZ2UtY29sbGVjdGlvbi5qcworKysgL2Rldi9u
dWxsCkBAIC0xLDc1ICswLDAgQEAKLSd1c2Ugc3RyaWN0JzsKLQotaWYgKHNlbGYuaW1wb3J0U2Ny
aXB0cykgewotICBzZWxmLmltcG9ydFNjcmlwdHMoJy4uL3Jlc291cmNlcy90ZXN0LXV0aWxzLmpz
Jyk7Ci0gIHNlbGYuaW1wb3J0U2NyaXB0cygnL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcycpOwot
fQotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotCi0gIGxldCBjb250cm9sbGVyOwotICBuZXcgUmVh
ZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGNvbnRyb2xsZXIgPSBjOwotICAg
IH0KLSAgfSk7Ci0KLSAgZ2FyYmFnZUNvbGxlY3QoKTsKLQotICByZXR1cm4gZGVsYXkoNTApLnRo
ZW4oKCkgPT4gewotICAgIGNvbnRyb2xsZXIuY2xvc2UoKTsKLSAgICBhc3NlcnRfdGhyb3dzKG5l
dyBUeXBlRXJyb3IoKSwgKCkgPT4gY29udHJvbGxlci5jbG9zZSgpLCAnY2xvc2Ugc2hvdWxkIHRo
cm93IGEgVHlwZUVycm9yIHRoZSBzZWNvbmQgdGltZScpOwotICAgIGNvbnRyb2xsZXIuZXJyb3Io
KTsKLSAgfSk7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIgbWV0aG9kcyBzaG91bGQg
Y29udGludWUgd29ya2luZyBwcm9wZXJseSB3aGVuIHNjcmlwdHMgbG9zZSB0aGVpciByZWZlcmVu
Y2UgdG8gdGhlICcgKwotICAgJ3JlYWRhYmxlIHN0cmVhbScpOwotCi1wcm9taXNlX3Rlc3QoKCkg
PT4gewotCi0gIGxldCBjb250cm9sbGVyOwotCi0gIGNvbnN0IGNsb3NlZFByb21pc2UgPSBuZXcg
UmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGNvbnRyb2xsZXIgPSBjOwot
ICAgIH0KLSAgfSkuZ2V0UmVhZGVyKCkuY2xvc2VkOwotCi0gIGdhcmJhZ2VDb2xsZWN0KCk7Ci0K
LSAgcmV0dXJuIGRlbGF5KDUwKS50aGVuKCgpID0+IGNvbnRyb2xsZXIuY2xvc2UoKSkudGhlbigo
KSA9PiBjbG9zZWRQcm9taXNlKTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtIGNsb3NlZCBwcm9taXNl
IHNob3VsZCBmdWxmaWxsIGV2ZW4gaWYgdGhlIHN0cmVhbSBhbmQgcmVhZGVyIEpTIHJlZmVyZW5j
ZXMgYXJlIGxvc3QnKTsKLQotcHJvbWlzZV90ZXN0KHQgPT4gewotCi0gIGNvbnN0IHRoZUVycm9y
ID0gbmV3IEVycm9yKCdib28nKTsKLSAgbGV0IGNvbnRyb2xsZXI7Ci0KLSAgY29uc3QgY2xvc2Vk
UHJvbWlzZSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgY29u
dHJvbGxlciA9IGM7Ci0gICAgfQotICB9KS5nZXRSZWFkZXIoKS5jbG9zZWQ7Ci0KLSAgZ2FyYmFn
ZUNvbGxlY3QoKTsKLQotICByZXR1cm4gZGVsYXkoNTApLnRoZW4oKCkgPT4gY29udHJvbGxlci5l
cnJvcih0aGVFcnJvcikpCi0gICAgICAgICAgICAgICAgICAudGhlbigoKSA9PiBwcm9taXNlX3Jl
amVjdHModCwgdGhlRXJyb3IsIGNsb3NlZFByb21pc2UpKTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFt
IGNsb3NlZCBwcm9taXNlIHNob3VsZCByZWplY3QgZXZlbiBpZiBzdHJlYW0gYW5kIHJlYWRlciBK
UyByZWZlcmVuY2VzIGFyZSBsb3N0Jyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgY29u
c3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oe30pOwotCi0gIHJzLmdldFJlYWRlcigpOwotCi0g
IGdhcmJhZ2VDb2xsZWN0KCk7Ci0KLSAgcmV0dXJuIGRlbGF5KDUwKS50aGVuKCgpID0+IGFzc2Vy
dF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBycy5nZXRSZWFkZXIoKSwKLSAgICAnb2xk
IHJlYWRlciBzaG91bGQgc3RpbGwgYmUgbG9ja2luZyB0aGUgc3RyZWFtIGV2ZW4gYWZ0ZXIgZ2Fy
YmFnZSBjb2xsZWN0aW9uJykpOwotCi19LCAnR2FyYmFnZS1jb2xsZWN0aW5nIGEgUmVhZGFibGVT
dHJlYW1EZWZhdWx0UmVhZGVyIHNob3VsZCBub3QgdW5sb2NrIGl0cyBzdHJlYW0nKTsKLQotZG9u
ZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZ2FyYmFnZS1jb2xsZWN0aW9uLnNlcnZpY2V3
b3JrZXIuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZ2FyYmFnZS1jb2xsZWN0aW9u
LnNlcnZpY2V3b3JrZXIuaHR0cHMtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBlZmZiOWI1MjhiMDMyYWE2ZmEwNDUxYjA4NGU2MTA5ODgzZGUwNDZlLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2dhcmJh
Z2UtY29sbGVjdGlvbi5zZXJ2aWNld29ya2VyLmh0dHBzLWV4cGVjdGVkLnR4dAorKysgL2Rldi9u
dWxsCkBAIC0xLDcgKzAsMCBAQAotCi1QQVNTIFNlcnZpY2Ugd29ya2VyIHRlc3Qgc2V0dXAgCi1Q
QVNTIFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlciBtZXRob2RzIHNob3VsZCBjb250aW51ZSB3b3Jr
aW5nIHByb3Blcmx5IHdoZW4gc2NyaXB0cyBsb3NlIHRoZWlyIHJlZmVyZW5jZSB0byB0aGUgcmVh
ZGFibGUgc3RyZWFtIAotUEFTUyBSZWFkYWJsZVN0cmVhbSBjbG9zZWQgcHJvbWlzZSBzaG91bGQg
ZnVsZmlsbCBldmVuIGlmIHRoZSBzdHJlYW0gYW5kIHJlYWRlciBKUyByZWZlcmVuY2VzIGFyZSBs
b3N0IAotUEFTUyBSZWFkYWJsZVN0cmVhbSBjbG9zZWQgcHJvbWlzZSBzaG91bGQgcmVqZWN0IGV2
ZW4gaWYgc3RyZWFtIGFuZCByZWFkZXIgSlMgcmVmZXJlbmNlcyBhcmUgbG9zdCAKLVBBU1MgR2Fy
YmFnZS1jb2xsZWN0aW5nIGEgUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyIHNob3VsZCBub3Qg
dW5sb2NrIGl0cyBzdHJlYW0gCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2dhcmJhZ2UtY29s
bGVjdGlvbi5zZXJ2aWNld29ya2VyLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9nYXJiYWdlLWNv
bGxlY3Rpb24uc2VydmljZXdvcmtlci5odHRwcy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBmZmY3MmU3YTM4NzEzZWQ5ODY2ZmQ3NzlhMzQwMjQ5Y2FjMmY0MmNkLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2dhcmJh
Z2UtY29sbGVjdGlvbi5zZXJ2aWNld29ya2VyLmh0dHBzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAt
MSwxMiArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTx0
aXRsZT5nYXJiYWdlLWNvbGxlY3Rpb24uanMgc2VydmljZSB3b3JrZXIgd3JhcHBlciBmaWxlPC90
aXRsZT4KLQotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0
PgotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0
PgotPHNjcmlwdCBzcmM9Ii9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvcmVzb3VyY2Vz
L3Rlc3QtaGVscGVycy5zdWIuanMiPjwvc2NyaXB0PgotCi08c2NyaXB0PgotJ3VzZSBzdHJpY3Qn
Owotc2VydmljZV93b3JrZXJfdGVzdCgnZ2FyYmFnZS1jb2xsZWN0aW9uLmpzJywgJ1NlcnZpY2Ug
d29ya2VyIHRlc3Qgc2V0dXAnKTsKLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMv
Z2FyYmFnZS1jb2xsZWN0aW9uLnNoYXJlZHdvcmtlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFt
cy9nYXJiYWdlLWNvbGxlY3Rpb24uc2hhcmVkd29ya2VyLWV4cGVjdGVkLnR4dApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDlkNWQyNTA5ZDc4NDdlOGNkNmZlNjYwNmFhNjBjZGQzM2Fh
NDc0ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUt
c3RyZWFtcy9nYXJiYWdlLWNvbGxlY3Rpb24uc2hhcmVkd29ya2VyLWV4cGVjdGVkLnR4dAorKysg
L2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotQ09OU09MRSBNRVNTQUdFOiBSZWZlcmVuY2VFcnJv
cjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogU2hhcmVkV29ya2VyCi0KLUhhcm5lc3MgRXJyb3IgKEZB
SUwpLCBtZXNzYWdlID0gUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IFNoYXJl
ZFdvcmtlcgotCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2dhcmJhZ2UtY29sbGVjdGlvbi5z
aGFyZWR3b3JrZXIuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2dhcmJhZ2UtY29sbGVjdGlvbi5zaGFyZWR3
b3JrZXIuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTFiZDM2ZDVkYjU2OThk
YzllYTY0MzEzMDQxMzc2ZWJmZTU4ZDI2NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9nYXJiYWdlLWNvbGxlY3Rpb24uc2hhcmVkd29y
a2VyLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4K
LTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTx0aXRsZT5nYXJiYWdlLWNvbGxlY3Rpb24uanMgc2hh
cmVkIHdvcmtlciB3cmFwcGVyIGZpbGU8L3RpdGxlPgotCi08c2NyaXB0IHNyYz0iL3Jlc291cmNl
cy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0
aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci0KLTxzY3JpcHQ+Ci0ndXNlIHN0cmljdCc7Ci1m
ZXRjaF90ZXN0c19mcm9tX3dvcmtlcihuZXcgU2hhcmVkV29ya2VyKCdnYXJiYWdlLWNvbGxlY3Rp
b24uanMnKSk7Ci08L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2dlbmVyYWwuYW55
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2dlbmVyYWwuYW55LWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4yMzliNzkxYTExZWJkZDE3ODY3NGMyODI2MzJhNTM0YTQ1NmE0NWU2Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
dHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZ2VuZXJhbC5hbnktZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsNDQgQEAKKworUEFTUyBSZWFkYWJsZVN0cmVhbSBjYW4gYmUgY29uc3RydWN0ZWQgd2l0aCBu
byBlcnJvcnMgCitQQVNTIFJlYWRhYmxlU3RyZWFtIGNhbid0IGJlIGNvbnN0cnVjdGVkIHdpdGgg
Z2FyYmFnZSAKK0ZBSUwgUmVhZGFibGVTdHJlYW0gY2FuJ3QgYmUgY29uc3RydWN0ZWQgd2l0aCBh
biBpbnZhbGlkIHR5cGUgYXNzZXJ0X3Rocm93c19qczogY29uc3RydWN0b3Igc2hvdWxkIHRocm93
IHdoZW4gdGhlIHR5cGUgaXMgbnVsbCBmdW5jdGlvbiAiKCkgPT4gbmV3IFJlYWRhYmxlU3RyZWFt
KHsgdHlwZTogbnVsbCB9KSIgdGhyZXcgb2JqZWN0ICJSYW5nZUVycm9yOiBJbnZhbGlkIHR5cGUg
Zm9yIHVuZGVybHlpbmcgc291cmNlIiAoIlJhbmdlRXJyb3IiKSBleHBlY3RlZCBpbnN0YW5jZSBv
ZiBmdW5jdGlvbiAiZnVuY3Rpb24gVHlwZUVycm9yKCkgeworICAgIFtuYXRpdmUgY29kZV0KK30i
ICgiVHlwZUVycm9yIikKK1BBU1MgUmVhZGFibGVTdHJlYW0gY29uc3RydWN0b3Igc2hvdWxkIHRo
cm93IGZvciBub24tZnVuY3Rpb24gc3RhcnQgYXJndW1lbnRzIAorRkFJTCBSZWFkYWJsZVN0cmVh
bSBjb25zdHJ1Y3RvciB3aWxsIG5vdCB0b2xlcmF0ZSBpbml0aWFsIGdhcmJhZ2UgYXMgY2FuY2Vs
IGFyZ3VtZW50IGFzc2VydF90aHJvd3NfanM6IGNvbnN0cnVjdG9yIHNob3VsZCB0aHJvdyBmdW5j
dGlvbiAiKCkgPT4gbmV3IFJlYWRhYmxlU3RyZWFtKHsgY2FuY2VsOiAnMicgfSkiIGRpZCBub3Qg
dGhyb3cKK0ZBSUwgUmVhZGFibGVTdHJlYW0gY29uc3RydWN0b3Igd2lsbCBub3QgdG9sZXJhdGUg
aW5pdGlhbCBnYXJiYWdlIGFzIHB1bGwgYXJndW1lbnQgYXNzZXJ0X3Rocm93c19qczogY29uc3Ry
dWN0b3Igc2hvdWxkIHRocm93IGZ1bmN0aW9uICIoKSA9PiBuZXcgUmVhZGFibGVTdHJlYW0oeyBw
dWxsOiB7IH0gfSkiIGRpZCBub3QgdGhyb3cKK1BBU1MgUmVhZGFibGVTdHJlYW0gc3RhcnQgc2hv
dWxkIGJlIGNhbGxlZCB3aXRoIHRoZSBwcm9wZXIgdGhpc0FyZyAKK1BBU1MgUmVhZGFibGVTdHJl
YW0gc3RhcnQgY29udHJvbGxlciBwYXJhbWV0ZXIgc2hvdWxkIGJlIGV4dGVuc2libGUgCitGQUlM
IGRlZmF1bHQgUmVhZGFibGVTdHJlYW0gZ2V0UmVhZGVyKCkgc2hvdWxkIG9ubHkgYWNjZXB0IG1v
ZGU6dW5kZWZpbmVkIGFzc2VydF90aHJvd3NfanM6IGZ1bmN0aW9uICIoKSA9PiAobmV3IFJlYWRh
YmxlU3RyZWFtKCkpLmdldFJlYWRlcih7IG1vZGU6ICdwb3RhdG8nIH0pIiB0aHJldyBvYmplY3Qg
IlJhbmdlRXJyb3I6IEludmFsaWQgbW9kZSBpcyBzcGVjaWZpZWQiICgiUmFuZ2VFcnJvciIpIGV4
cGVjdGVkIGluc3RhbmNlIG9mIGZ1bmN0aW9uICJmdW5jdGlvbiBUeXBlRXJyb3IoKSB7CisgICAg
W25hdGl2ZSBjb2RlXQorfSIgKCJUeXBlRXJyb3IiKQorUEFTUyBSZWFkYWJsZVN0cmVhbSBzaG91
bGQgYmUgYWJsZSB0byBjYWxsIHN0YXJ0IG1ldGhvZCB3aXRoaW4gcHJvdG90eXBlIGNoYWluIG9m
IGl0cyBzb3VyY2UgCitQQVNTIFJlYWRhYmxlU3RyZWFtIHN0YXJ0IHNob3VsZCBiZSBhYmxlIHRv
IHJldHVybiBhIHByb21pc2UgCitQQVNTIFJlYWRhYmxlU3RyZWFtIHN0YXJ0IHNob3VsZCBiZSBh
YmxlIHRvIHJldHVybiBhIHByb21pc2UgYW5kIHJlamVjdCBpdCAKK1BBU1MgUmVhZGFibGVTdHJl
YW0gc2hvdWxkIGJlIGFibGUgdG8gZW5xdWV1ZSBkaWZmZXJlbnQgb2JqZWN0cy4gCitQQVNTIFJl
YWRhYmxlU3RyZWFtOiBpZiBwdWxsIHJlamVjdHMsIGl0IHNob3VsZCBlcnJvciB0aGUgc3RyZWFt
IAorUEFTUyBSZWFkYWJsZVN0cmVhbTogc2hvdWxkIG9ubHkgY2FsbCBwdWxsIG9uY2UgdXBvbiBz
dGFydGluZyB0aGUgc3RyZWFtIAorUEFTUyBSZWFkYWJsZVN0cmVhbTogc2hvdWxkIGNhbGwgcHVs
bCB3aGVuIHRyeWluZyB0byByZWFkIGZyb20gYSBzdGFydGVkLCBlbXB0eSBzdHJlYW0gCitQQVNT
IFJlYWRhYmxlU3RyZWFtOiBzaG91bGQgb25seSBjYWxsIHB1bGwgb25jZSBvbiBhIG5vbi1lbXB0
eSBzdHJlYW0gcmVhZCBmcm9tIGJlZm9yZSBzdGFydCBmdWxmaWxscyAKK1BBU1MgUmVhZGFibGVT
dHJlYW06IHNob3VsZCBvbmx5IGNhbGwgcHVsbCBvbmNlIG9uIGEgbm9uLWVtcHR5IHN0cmVhbSBy
ZWFkIGZyb20gYWZ0ZXIgc3RhcnQgZnVsZmlsbHMgCitQQVNTIFJlYWRhYmxlU3RyZWFtOiBzaG91
bGQgY2FsbCBwdWxsIGluIHJlYWN0aW9uIHRvIHJlYWQoKWluZyB0aGUgbGFzdCBjaHVuaywgaWYg
bm90IGRyYWluaW5nIAorUEFTUyBSZWFkYWJsZVN0cmVhbTogc2hvdWxkIG5vdCBjYWxsIHB1bGwo
KSBpbiByZWFjdGlvbiB0byByZWFkKClpbmcgdGhlIGxhc3QgY2h1bmssIGlmIGRyYWluaW5nIAor
UEFTUyBSZWFkYWJsZVN0cmVhbTogc2hvdWxkIG5vdCBjYWxsIHB1bGwgdW50aWwgdGhlIHByZXZp
b3VzIHB1bGwgY2FsbCdzIHByb21pc2UgZnVsZmlsbHMgCitQQVNTIFJlYWRhYmxlU3RyZWFtOiBz
aG91bGQgcHVsbCBhZnRlciBzdGFydCwgYW5kIGFmdGVyIGV2ZXJ5IHJlYWQgCitQQVNTIFJlYWRh
YmxlU3RyZWFtOiBzaG91bGQgbm90IGNhbGwgcHVsbCBhZnRlciBzdGFydCBpZiB0aGUgc3RyZWFt
IGlzIG5vdyBjbG9zZWQgCitQQVNTIFJlYWRhYmxlU3RyZWFtOiBzaG91bGQgY2FsbCBwdWxsIGFm
dGVyIGVucXVldWVpbmcgZnJvbSBpbnNpZGUgcHVsbCAod2l0aCBubyByZWFkIHJlcXVlc3RzKSwg
aWYgc3RyYXRlZ3kgYWxsb3dzIAorUEFTUyBSZWFkYWJsZVN0cmVhbSBwdWxsIHNob3VsZCBiZSBh
YmxlIHRvIGNsb3NlIGEgc3RyZWFtLiAKK1BBU1MgUmVhZGFibGVTdHJlYW0gcHVsbCBzaG91bGQg
YmUgYWJsZSB0byBlcnJvciBhIHN0cmVhbS4gCitQQVNTIFJlYWRhYmxlU3RyZWFtIHB1bGwgc2hv
dWxkIGJlIGFibGUgdG8gZXJyb3IgYSBzdHJlYW0gYW5kIHRocm93LiAKK1BBU1MgUmVhZGFibGVT
dHJlYW06IGVucXVldWUgc2hvdWxkIHRocm93IHdoZW4gdGhlIHN0cmVhbSBpcyByZWFkYWJsZSBi
dXQgZHJhaW5pbmcgCitQQVNTIFJlYWRhYmxlU3RyZWFtOiBlbnF1ZXVlIHNob3VsZCB0aHJvdyB3
aGVuIHRoZSBzdHJlYW0gaXMgY2xvc2VkIAorUEFTUyBSZWFkYWJsZVN0cmVhbTogc2hvdWxkIGNh
bGwgdW5kZXJseWluZyBzb3VyY2UgbWV0aG9kcyBhcyBtZXRob2RzIAorUEFTUyBSZWFkYWJsZVN0
cmVhbTogZGVzaXJlZFNpemUgd2hlbiBjbG9zZWQgCitQQVNTIFJlYWRhYmxlU3RyZWFtOiBkZXNp
cmVkU2l6ZSB3aGVuIGVycm9yZWQgCitGQUlMIFN1YmNsYXNzaW5nIFJlYWRhYmxlU3RyZWFtIHNo
b3VsZCB3b3JrIGFzc2VydF90cnVlOiBTdWJjbGFzcyBvYmplY3Qgc2hvdWxkIGJlIGFuIGluc3Rh
bmNlIG9mIFN1YmNsYXNzIGV4cGVjdGVkIHRydWUgZ290IGZhbHNlCitQQVNTIFJlYWRhYmxlU3Ry
ZWFtIHN0cmF0ZWdpZXM6IHRoZSBkZWZhdWx0IHN0cmF0ZWd5IHNob3VsZCBnaXZlIGRlc2lyZWRT
aXplIG9mIDEgdG8gc3RhcnQsIGRlY3JlYXNpbmcgYnkgMSBwZXIgZW5xdWV1ZSAKK1BBU1MgUmVh
ZGFibGVTdHJlYW0gc3RyYXRlZ2llczogdGhlIGRlZmF1bHQgc3RyYXRlZ3kgc2hvdWxkIGNvbnRp
bnVlIGdpdmluZyBkZXNpcmVkU2l6ZSBvZiAxIGlmIHRoZSBjaHVua3MgYXJlIHJlYWQgaW1tZWRp
YXRlbHkgCitQQVNTIFJlYWRhYmxlU3RyZWFtIGludGVncmF0aW9uIHRlc3Q6IGFkYXB0aW5nIGEg
cmFuZG9tIHB1c2ggc291cmNlIAorUEFTUyBSZWFkYWJsZVN0cmVhbSBpbnRlZ3JhdGlvbiB0ZXN0
OiBhZGFwdGluZyBhIHN5bmMgcHVsbCBzb3VyY2UgCitQQVNTIFJlYWRhYmxlU3RyZWFtIGludGVn
cmF0aW9uIHRlc3Q6IGFkYXB0aW5nIGFuIGFzeW5jIHB1bGwgc291cmNlIAorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVh
ZGFibGUtc3RyZWFtcy9nZW5lcmFsLmFueS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZ2VuZXJhbC5hbnku
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4yMzgyOTEzNTI4ZTY5M2IzYTVkNTZjNjYwYTQ1MDYwOTgwYjU0OGMz
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZ2VuZXJhbC5hbnkuaHRtbApAQCAtMCww
ICsxIEBACis8IS0tIFRoaXMgZmlsZSBpcyByZXF1aXJlZCBmb3IgV2ViS2l0IHRlc3QgaW5mcmFz
dHJ1Y3R1cmUgdG8gcnVuIHRoZSB0ZW1wbGF0ZWQgdGVzdCAtLT4KXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9nZW5lcmFsLmFueS5qcyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1z
dHJlYW1zL2dlbmVyYWwuYW55LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg2Yjc5M2ZlMTZjOTMyZTJmZjI5ZDdh
NzBhMGY4YjMzZWIwZTY2Y2EKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9nZW5lcmFs
LmFueS5qcwpAQCAtMCwwICsxLDg0MCBAQAorLy8gTUVUQTogZ2xvYmFsPXdpbmRvdyx3b3JrZXIs
anNzaGVsbAorLy8gTUVUQTogc2NyaXB0PS4uL3Jlc291cmNlcy90ZXN0LXV0aWxzLmpzCisvLyBN
RVRBOiBzY3JpcHQ9Li4vcmVzb3VyY2VzL3JzLXV0aWxzLmpzCisndXNlIHN0cmljdCc7CisKK2Nv
bnN0IGVycm9yMSA9IG5ldyBFcnJvcignZXJyb3IxJyk7CitlcnJvcjEubmFtZSA9ICdlcnJvcjEn
OworCit0ZXN0KCgpID0+IHsKKworICBuZXcgUmVhZGFibGVTdHJlYW0oKTsgLy8gUmVhZGFibGVT
dHJlYW0gY29uc3RydWN0ZWQgd2l0aCBubyBwYXJhbWV0ZXJzCisgIG5ldyBSZWFkYWJsZVN0cmVh
bSh7IH0pOyAvLyBSZWFkYWJsZVN0cmVhbSBjb25zdHJ1Y3RlZCB3aXRoIGFuIGVtcHR5IG9iamVj
dCBhcyBwYXJhbWV0ZXIKKyAgbmV3IFJlYWRhYmxlU3RyZWFtKHsgdHlwZTogdW5kZWZpbmVkIH0p
OyAvLyBSZWFkYWJsZVN0cmVhbSBjb25zdHJ1Y3RlZCB3aXRoIHVuZGVmaW5lZCB0eXBlCisgIG5l
dyBSZWFkYWJsZVN0cmVhbSh1bmRlZmluZWQpOyAvLyBSZWFkYWJsZVN0cmVhbSBjb25zdHJ1Y3Rl
ZCB3aXRoIHVuZGVmaW5lZCBhcyBwYXJhbWV0ZXIKKworICBsZXQgeDsKKyAgbmV3IFJlYWRhYmxl
U3RyZWFtKHgpOyAvLyBSZWFkYWJsZVN0cmVhbSBjb25zdHJ1Y3RlZCB3aXRoIGFuIHVuZGVmaW5l
ZCB2YXJpYWJsZSBhcyBwYXJhbWV0ZXIKKworfSwgJ1JlYWRhYmxlU3RyZWFtIGNhbiBiZSBjb25z
dHJ1Y3RlZCB3aXRoIG5vIGVycm9ycycpOworCit0ZXN0KCgpID0+IHsKKworICBhc3NlcnRfdGhy
b3dzX2pzKFR5cGVFcnJvciwgKCkgPT4gbmV3IFJlYWRhYmxlU3RyZWFtKG51bGwpLCAnY29uc3Ry
dWN0b3Igc2hvdWxkIHRocm93IHdoZW4gdGhlIHNvdXJjZSBpcyBudWxsJyk7CisKK30sICdSZWFk
YWJsZVN0cmVhbSBjYW5cJ3QgYmUgY29uc3RydWN0ZWQgd2l0aCBnYXJiYWdlJyk7CisKK3Rlc3Qo
KCkgPT4geworCisgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiBuZXcgUmVhZGFi
bGVTdHJlYW0oeyB0eXBlOiBudWxsIH0pLAorICAgICdjb25zdHJ1Y3RvciBzaG91bGQgdGhyb3cg
d2hlbiB0aGUgdHlwZSBpcyBudWxsJyk7CisgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAo
KSA9PiBuZXcgUmVhZGFibGVTdHJlYW0oeyB0eXBlOiAnJyB9KSwKKyAgICAnY29uc3RydWN0b3Ig
c2hvdWxkIHRocm93IHdoZW4gdGhlIHR5cGUgaXMgZW1wdHkgc3RyaW5nJyk7CisgIGFzc2VydF90
aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiBuZXcgUmVhZGFibGVTdHJlYW0oeyB0eXBlOiAnYXNk
ZicgfSksCisgICAgJ2NvbnN0cnVjdG9yIHNob3VsZCB0aHJvdyB3aGVuIHRoZSB0eXBlIGlzIGFz
ZGYnKTsKKyAgYXNzZXJ0X3Rocm93c19leGFjdGx5KAorICAgIGVycm9yMSwKKyAgICAoKSA9PiBu
ZXcgUmVhZGFibGVTdHJlYW0oeyB0eXBlOiB7IGdldCB0b1N0cmluZygpIHsgdGhyb3cgZXJyb3Ix
OyB9IH0gfSksCisgICAgJ2NvbnN0cnVjdG9yIHNob3VsZCB0aHJvdyB3aGVuIFRvU3RyaW5nKCkg
dGhyb3dzJworICApOworICBhc3NlcnRfdGhyb3dzX2V4YWN0bHkoCisgICAgZXJyb3IxLAorICAg
ICgpID0+IG5ldyBSZWFkYWJsZVN0cmVhbSh7IHR5cGU6IHsgdG9TdHJpbmcoKSB7IHRocm93IGVy
cm9yMTsgfSB9IH0pLAorICAgICdjb25zdHJ1Y3RvciBzaG91bGQgdGhyb3cgd2hlbiBUb1N0cmlu
ZygpIHRocm93cycKKyAgKTsKKworfSwgJ1JlYWRhYmxlU3RyZWFtIGNhblwndCBiZSBjb25zdHJ1
Y3RlZCB3aXRoIGFuIGludmFsaWQgdHlwZScpOworCit0ZXN0KCgpID0+IHsKKworICBhc3NlcnRf
dGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4geworICAgIG5ldyBSZWFkYWJsZVN0cmVhbSh7IHN0
YXJ0OiAncG90YXRvJyB9KTsKKyAgfSwgJ2NvbnN0cnVjdG9yIHNob3VsZCB0aHJvdyB3aGVuIHN0
YXJ0IGlzIG5vdCBhIGZ1bmN0aW9uJyk7CisKK30sICdSZWFkYWJsZVN0cmVhbSBjb25zdHJ1Y3Rv
ciBzaG91bGQgdGhyb3cgZm9yIG5vbi1mdW5jdGlvbiBzdGFydCBhcmd1bWVudHMnKTsKKwordGVz
dCgoKSA9PiB7CisKKyAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IG5ldyBSZWFk
YWJsZVN0cmVhbSh7IGNhbmNlbDogJzInIH0pLCAnY29uc3RydWN0b3Igc2hvdWxkIHRocm93Jyk7
CisKK30sICdSZWFkYWJsZVN0cmVhbSBjb25zdHJ1Y3RvciB3aWxsIG5vdCB0b2xlcmF0ZSBpbml0
aWFsIGdhcmJhZ2UgYXMgY2FuY2VsIGFyZ3VtZW50Jyk7CisKK3Rlc3QoKCkgPT4geworCisgIGFz
c2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiBuZXcgUmVhZGFibGVTdHJlYW0oeyBwdWxs
OiB7IH0gfSksICdjb25zdHJ1Y3RvciBzaG91bGQgdGhyb3cnKTsKKworfSwgJ1JlYWRhYmxlU3Ry
ZWFtIGNvbnN0cnVjdG9yIHdpbGwgbm90IHRvbGVyYXRlIGluaXRpYWwgZ2FyYmFnZSBhcyBwdWxs
IGFyZ3VtZW50Jyk7CisKK3Rlc3QoKCkgPT4geworCisgIGxldCBzdGFydENhbGxlZCA9IGZhbHNl
OworCisgIGNvbnN0IHNvdXJjZSA9IHsKKyAgICBzdGFydCgpIHsKKyAgICAgIGFzc2VydF9lcXVh
bHModGhpcywgc291cmNlLCAnc291cmNlIGlzIHRoaXMgZHVyaW5nIHN0YXJ0Jyk7CisgICAgICBz
dGFydENhbGxlZCA9IHRydWU7CisgICAgfQorICB9OworCisgIG5ldyBSZWFkYWJsZVN0cmVhbShz
b3VyY2UpOworICBhc3NlcnRfdHJ1ZShzdGFydENhbGxlZCk7CisKK30sICdSZWFkYWJsZVN0cmVh
bSBzdGFydCBzaG91bGQgYmUgY2FsbGVkIHdpdGggdGhlIHByb3BlciB0aGlzQXJnJyk7CisKK3Rl
c3QoKCkgPT4geworCisgIGxldCBzdGFydENhbGxlZCA9IGZhbHNlOworICBjb25zdCBzb3VyY2Ug
PSB7CisgICAgc3RhcnQoY29udHJvbGxlcikgeworICAgICAgY29uc3QgcHJvcGVydGllcyA9IFsn
Y2xvc2UnLCAnY29uc3RydWN0b3InLCAnZGVzaXJlZFNpemUnLCAnZW5xdWV1ZScsICdlcnJvcidd
OworICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhP
YmplY3QuZ2V0UHJvdG90eXBlT2YoY29udHJvbGxlcikpLnNvcnQoKSwgcHJvcGVydGllcywKKyAg
ICAgICAgJ3Byb3RvdHlwZSBzaG91bGQgaGF2ZSB0aGUgcmlnaHQgcHJvcGVydGllcycpOworCisg
ICAgICBjb250cm9sbGVyLnRlc3QgPSAnJzsKKyAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoT2Jq
ZWN0LmdldE93blByb3BlcnR5TmFtZXMoT2JqZWN0LmdldFByb3RvdHlwZU9mKGNvbnRyb2xsZXIp
KS5zb3J0KCksIHByb3BlcnRpZXMsCisgICAgICAgICdwcm90b3R5cGUgc2hvdWxkIHN0aWxsIGhh
dmUgdGhlIHJpZ2h0IHByb3BlcnRpZXMnKTsKKyAgICAgIGFzc2VydF9ub3RfZXF1YWxzKE9iamVj
dC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGNvbnRyb2xsZXIpLmluZGV4T2YoJ3Rlc3QnKSwgLTEsCisg
ICAgICAgICcidGVzdCIgc2hvdWxkIGJlIGEgcHJvcGVydHkgb2YgdGhlIGNvbnRyb2xsZXInKTsK
KworICAgICAgc3RhcnRDYWxsZWQgPSB0cnVlOworICAgIH0KKyAgfTsKKworICBuZXcgUmVhZGFi
bGVTdHJlYW0oc291cmNlKTsKKyAgYXNzZXJ0X3RydWUoc3RhcnRDYWxsZWQpOworCit9LCAnUmVh
ZGFibGVTdHJlYW0gc3RhcnQgY29udHJvbGxlciBwYXJhbWV0ZXIgc2hvdWxkIGJlIGV4dGVuc2li
bGUnKTsKKwordGVzdCgoKSA9PiB7CisgIChuZXcgUmVhZGFibGVTdHJlYW0oKSkuZ2V0UmVhZGVy
KHVuZGVmaW5lZCk7CisgIChuZXcgUmVhZGFibGVTdHJlYW0oKSkuZ2V0UmVhZGVyKHt9KTsKKyAg
KG5ldyBSZWFkYWJsZVN0cmVhbSgpKS5nZXRSZWFkZXIoeyBtb2RlOiB1bmRlZmluZWQsIG5vdG1v
ZGU6ICdpZ25vcmVkJyB9KTsKKyAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IChu
ZXcgUmVhZGFibGVTdHJlYW0oKSkuZ2V0UmVhZGVyKHsgbW9kZTogJ3BvdGF0bycgfSkpOworfSwg
J2RlZmF1bHQgUmVhZGFibGVTdHJlYW0gZ2V0UmVhZGVyKCkgc2hvdWxkIG9ubHkgYWNjZXB0IG1v
ZGU6dW5kZWZpbmVkJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisKKyAgZnVuY3Rpb24gU2lt
cGxlU3RyZWFtU291cmNlKCkge30KKyAgbGV0IHJlc29sdmU7CisgIGNvbnN0IHByb21pc2UgPSBu
ZXcgUHJvbWlzZShyID0+IHJlc29sdmUgPSByKTsKKyAgU2ltcGxlU3RyZWFtU291cmNlLnByb3Rv
dHlwZSA9IHsKKyAgICBzdGFydDogcmVzb2x2ZQorICB9OworCisgIG5ldyBSZWFkYWJsZVN0cmVh
bShuZXcgU2ltcGxlU3RyZWFtU291cmNlKCkpOworICByZXR1cm4gcHJvbWlzZTsKKworfSwgJ1Jl
YWRhYmxlU3RyZWFtIHNob3VsZCBiZSBhYmxlIHRvIGNhbGwgc3RhcnQgbWV0aG9kIHdpdGhpbiBw
cm90b3R5cGUgY2hhaW4gb2YgaXRzIHNvdXJjZScpOworCitwcm9taXNlX3Rlc3QoKCkgPT4gewor
CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAg
ICByZXR1cm4gZGVsYXkoNSkudGhlbigoKSA9PiB7CisgICAgICAgIGMuZW5xdWV1ZSgnYScpOwor
ICAgICAgICBjLmNsb3NlKCk7CisgICAgICB9KTsKKyAgICB9CisgIH0pOworCisgIGNvbnN0IHJl
YWRlciA9IHJzLmdldFJlYWRlcigpOworICByZXR1cm4gcmVhZGVyLnJlYWQoKS50aGVuKHIgPT4g
eworICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHIsIHsgdmFsdWU6ICdhJywgZG9uZTogZmFsc2Ug
fSwgJ3ZhbHVlIHJlYWQgc2hvdWxkIGJlIHRoZSBvbmUgZW5xdWV1ZWQnKTsKKyAgICByZXR1cm4g
cmVhZGVyLmNsb3NlZDsKKyAgfSk7CisKK30sICdSZWFkYWJsZVN0cmVhbSBzdGFydCBzaG91bGQg
YmUgYWJsZSB0byByZXR1cm4gYSBwcm9taXNlJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisK
KyAgY29uc3QgdGhlRXJyb3IgPSBuZXcgRXJyb3IoJ3JlamVjdGVkIScpOworICBjb25zdCBycyA9
IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoKSB7CisgICAgICByZXR1cm4gZGVsYXko
MSkudGhlbigoKSA9PiB7CisgICAgICAgIHRocm93IHRoZUVycm9yOworICAgICAgfSk7CisgICAg
fQorICB9KTsKKworICByZXR1cm4gcnMuZ2V0UmVhZGVyKCkuY2xvc2VkLnRoZW4oKCkgPT4gewor
ICAgIGFzc2VydF91bnJlYWNoZWQoJ2Nsb3NlZCBwcm9taXNlIHNob3VsZCBiZSByZWplY3RlZCcp
OworICB9LCBlID0+IHsKKyAgICBhc3NlcnRfZXF1YWxzKGUsIHRoZUVycm9yLCAncHJvbWlzZSBz
aG91bGQgYmUgcmVqZWN0ZWQgd2l0aCB0aGUgc2FtZSBlcnJvcicpOworICB9KTsKKworfSwgJ1Jl
YWRhYmxlU3RyZWFtIHN0YXJ0IHNob3VsZCBiZSBhYmxlIHRvIHJldHVybiBhIHByb21pc2UgYW5k
IHJlamVjdCBpdCcpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworCisgIGNvbnN0IG9iamVjdHMg
PSBbCisgICAgeyBwb3RhdG86ICdHaXZlIG1lIG1vcmUhJyB9LAorICAgICd0ZXN0JywKKyAgICAx
CisgIF07CisKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMp
IHsKKyAgICAgIGZvciAoY29uc3QgbyBvZiBvYmplY3RzKSB7CisgICAgICAgIGMuZW5xdWV1ZShv
KTsKKyAgICAgIH0KKyAgICAgIGMuY2xvc2UoKTsKKyAgICB9CisgIH0pOworCisgIGNvbnN0IHJl
YWRlciA9IHJzLmdldFJlYWRlcigpOworCisgIHJldHVybiBQcm9taXNlLmFsbChbcmVhZGVyLnJl
YWQoKSwgcmVhZGVyLnJlYWQoKSwgcmVhZGVyLnJlYWQoKSwgcmVhZGVyLmNsb3NlZF0pLnRoZW4o
ciA9PiB7CisgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMoclswXSwgeyB2YWx1ZTogb2JqZWN0c1sw
XSwgZG9uZTogZmFsc2UgfSwgJ3ZhbHVlIHJlYWQgc2hvdWxkIGJlIHRoZSBvbmUgZW5xdWV1ZWQn
KTsKKyAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyWzFdLCB7IHZhbHVlOiBvYmplY3RzWzFdLCBk
b25lOiBmYWxzZSB9LCAndmFsdWUgcmVhZCBzaG91bGQgYmUgdGhlIG9uZSBlbnF1ZXVlZCcpOwor
ICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJbMl0sIHsgdmFsdWU6IG9iamVjdHNbMl0sIGRvbmU6
IGZhbHNlIH0sICd2YWx1ZSByZWFkIHNob3VsZCBiZSB0aGUgb25lIGVucXVldWVkJyk7CisgIH0p
OworCit9LCAnUmVhZGFibGVTdHJlYW0gc2hvdWxkIGJlIGFibGUgdG8gZW5xdWV1ZSBkaWZmZXJl
bnQgb2JqZWN0cy4nKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKworICBjb25zdCBlcnJvciA9
IG5ldyBFcnJvcigncHVsbCBmYWlsdXJlJyk7CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3Ry
ZWFtKHsKKyAgICBwdWxsKCkgeworICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yKTsK
KyAgICB9CisgIH0pOworCisgIGNvbnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcigpOworCisgIGxl
dCBjbG9zZWQgPSBmYWxzZTsKKyAgbGV0IHJlYWQgPSBmYWxzZTsKKworICByZXR1cm4gUHJvbWlz
ZS5hbGwoWworICAgIHJlYWRlci5jbG9zZWQudGhlbigoKSA9PiB7CisgICAgICBhc3NlcnRfdW5y
ZWFjaGVkKCdjbG9zZWQgc2hvdWxkIGJlIHJlamVjdGVkJyk7CisgICAgfSwgZSA9PiB7CisgICAg
ICBjbG9zZWQgPSB0cnVlOworICAgICAgYXNzZXJ0X3RydWUocmVhZCk7CisgICAgICBhc3NlcnRf
ZXF1YWxzKGUsIGVycm9yLCAnY2xvc2VkIHNob3VsZCBiZSByZWplY3RlZCB3aXRoIHRoZSB0aHJv
d24gZXJyb3InKTsKKyAgICB9KSwKKyAgICByZWFkZXIucmVhZCgpLnRoZW4oKCkgPT4geworICAg
ICAgYXNzZXJ0X3VucmVhY2hlZCgncmVhZCgpIHNob3VsZCBiZSByZWplY3RlZCcpOworICAgIH0s
IGUgPT4geworICAgICAgcmVhZCA9IHRydWU7CisgICAgICBhc3NlcnRfZmFsc2UoY2xvc2VkKTsK
KyAgICAgIGFzc2VydF9lcXVhbHMoZSwgZXJyb3IsICdyZWFkKCkgc2hvdWxkIGJlIHJlamVjdGVk
IHdpdGggdGhlIHRocm93biBlcnJvcicpOworICAgIH0pCisgIF0pOworCit9LCAnUmVhZGFibGVT
dHJlYW06IGlmIHB1bGwgcmVqZWN0cywgaXQgc2hvdWxkIGVycm9yIHRoZSBzdHJlYW0nKTsKKwor
cHJvbWlzZV90ZXN0KCgpID0+IHsKKworICBsZXQgcHVsbENvdW50ID0gMDsKKworICBuZXcgUmVh
ZGFibGVTdHJlYW0oeworICAgIHB1bGwoKSB7CisgICAgICBwdWxsQ291bnQrKzsKKyAgICB9Cisg
IH0pOworCisgIHJldHVybiBmbHVzaEFzeW5jRXZlbnRzKCkudGhlbigoKSA9PiB7CisgICAgYXNz
ZXJ0X2VxdWFscyhwdWxsQ291bnQsIDEsICdwdWxsIHNob3VsZCBiZSBjYWxsZWQgb25jZSBzdGFy
dCBmaW5pc2hlcycpOworICAgIHJldHVybiBkZWxheSgxMCk7CisgIH0pLnRoZW4oKCkgPT4gewor
ICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAxLCAncHVsbCBzaG91bGQgYmUgY2FsbGVkIGV4
YWN0bHkgb25jZScpOworICB9KTsKKworfSwgJ1JlYWRhYmxlU3RyZWFtOiBzaG91bGQgb25seSBj
YWxsIHB1bGwgb25jZSB1cG9uIHN0YXJ0aW5nIHRoZSBzdHJlYW0nKTsKKworcHJvbWlzZV90ZXN0
KCgpID0+IHsKKworICBsZXQgcHVsbENvdW50ID0gMDsKKworICBjb25zdCBycyA9IG5ldyBSZWFk
YWJsZVN0cmVhbSh7CisgICAgcHVsbChjKSB7CisgICAgICAvLyBEb24ndCBlbnF1ZXVlIGltbWVk
aWF0ZWx5IGFmdGVyIHN0YXJ0LiBXZSB3YW50IHRoZSBzdHJlYW0gdG8gYmUgZW1wdHkgd2hlbiB3
ZSBjYWxsIC5yZWFkKCkgb24gaXQuCisgICAgICBpZiAocHVsbENvdW50ID4gMCkgeworICAgICAg
ICBjLmVucXVldWUocHVsbENvdW50KTsKKyAgICAgIH0KKyAgICAgICsrcHVsbENvdW50OworICAg
IH0KKyAgfSk7CisKKyAgcmV0dXJuIGZsdXNoQXN5bmNFdmVudHMoKS50aGVuKCgpID0+IHsKKyAg
ICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMSwgJ3B1bGwgc2hvdWxkIGJlIGNhbGxlZCBvbmNl
IHN0YXJ0IGZpbmlzaGVzJyk7CisgIH0pLnRoZW4oKCkgPT4geworICAgIGNvbnN0IHJlYWRlciA9
IHJzLmdldFJlYWRlcigpOworICAgIGNvbnN0IHJlYWQgPSByZWFkZXIucmVhZCgpOworICAgIGFz
c2VydF9lcXVhbHMocHVsbENvdW50LCAyLCAncHVsbCBzaG91bGQgYmUgY2FsbGVkIHdoZW4gcmVh
ZCBpcyBjYWxsZWQnKTsKKyAgICByZXR1cm4gcmVhZDsKKyAgfSkudGhlbihyZXN1bHQgPT4gewor
ICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAzLCAncHVsbCBzaG91bGQgYmUgY2FsbGVkIGFn
YWluIGluIHJlYWN0aW9uIHRvIGNhbGxpbmcgcmVhZCcpOworICAgIGFzc2VydF9vYmplY3RfZXF1
YWxzKHJlc3VsdCwgeyB2YWx1ZTogMSwgZG9uZTogZmFsc2UgfSwgJ3RoZSByZXN1bHQgcmVhZCBz
aG91bGQgYmUgdGhlIG9uZSBlbnF1ZXVlZCcpOworICB9KTsKKworfSwgJ1JlYWRhYmxlU3RyZWFt
OiBzaG91bGQgY2FsbCBwdWxsIHdoZW4gdHJ5aW5nIHRvIHJlYWQgZnJvbSBhIHN0YXJ0ZWQsIGVt
cHR5IHN0cmVhbScpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworCisgIGxldCBwdWxsQ291bnQg
PSAwOworCisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7
CisgICAgICBjLmVucXVldWUoJ2EnKTsKKyAgICB9LAorICAgIHB1bGwoKSB7CisgICAgICBwdWxs
Q291bnQrKzsKKyAgICB9CisgIH0pOworCisgIGNvbnN0IHJlYWQgPSBycy5nZXRSZWFkZXIoKS5y
ZWFkKCk7CisgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAwLCAnY2FsbGluZyByZWFkKCkgc2hv
dWxkIG5vdCBjYXVzZSBwdWxsIHRvIGJlIGNhbGxlZCB5ZXQnKTsKKworICByZXR1cm4gZmx1c2hB
c3luY0V2ZW50cygpLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAx
LCAncHVsbCBzaG91bGQgYmUgY2FsbGVkIG9uY2Ugc3RhcnQgZmluaXNoZXMnKTsKKyAgICByZXR1
cm4gcmVhZDsKKyAgfSkudGhlbihyID0+IHsKKyAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyLCB7
IHZhbHVlOiAnYScsIGRvbmU6IGZhbHNlIH0sICdmaXJzdCByZWFkKCkgc2hvdWxkIHJldHVybiBm
aXJzdCBjaHVuaycpOworICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAxLCAncHVsbCBzaG91
bGQgbm90IGhhdmUgYmVlbiBjYWxsZWQgYWdhaW4nKTsKKyAgICByZXR1cm4gZGVsYXkoMTApOwor
ICB9KS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMSwgJ3B1bGwg
c2hvdWxkIGJlIGNhbGxlZCBleGFjdGx5IG9uY2UnKTsKKyAgfSk7CisKK30sICdSZWFkYWJsZVN0
cmVhbTogc2hvdWxkIG9ubHkgY2FsbCBwdWxsIG9uY2Ugb24gYSBub24tZW1wdHkgc3RyZWFtIHJl
YWQgZnJvbSBiZWZvcmUgc3RhcnQgZnVsZmlsbHMnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsK
KworICBsZXQgcHVsbENvdW50ID0gMDsKKyAgY29uc3Qgc3RhcnRQcm9taXNlID0gUHJvbWlzZS5y
ZXNvbHZlKCk7CisKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0
KGMpIHsKKyAgICAgIGMuZW5xdWV1ZSgnYScpOworICAgIH0sCisgICAgcHVsbCgpIHsKKyAgICAg
IHB1bGxDb3VudCsrOworICAgIH0KKyAgfSk7CisKKyAgcmV0dXJuIGZsdXNoQXN5bmNFdmVudHMo
KS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMCwgJ3B1bGwgc2hv
dWxkIG5vdCBiZSBjYWxsZWQgb25jZSBzdGFydCBmaW5pc2hlcywgc2luY2UgdGhlIHF1ZXVlIGlz
IGZ1bGwnKTsKKworICAgIGNvbnN0IHJlYWQgPSBycy5nZXRSZWFkZXIoKS5yZWFkKCk7CisgICAg
YXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDEsICdjYWxsaW5nIHJlYWQoKSBzaG91bGQgY2F1c2Ug
cHVsbCB0byBiZSBjYWxsZWQgaW1tZWRpYXRlbHknKTsKKyAgICByZXR1cm4gcmVhZDsKKyAgfSku
dGhlbihyID0+IHsKKyAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyLCB7IHZhbHVlOiAnYScsIGRv
bmU6IGZhbHNlIH0sICdmaXJzdCByZWFkKCkgc2hvdWxkIHJldHVybiBmaXJzdCBjaHVuaycpOwor
ICAgIHJldHVybiBkZWxheSgxMCk7CisgIH0pLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9lcXVh
bHMocHVsbENvdW50LCAxLCAncHVsbCBzaG91bGQgYmUgY2FsbGVkIGV4YWN0bHkgb25jZScpOwor
ICB9KTsKKworfSwgJ1JlYWRhYmxlU3RyZWFtOiBzaG91bGQgb25seSBjYWxsIHB1bGwgb25jZSBv
biBhIG5vbi1lbXB0eSBzdHJlYW0gcmVhZCBmcm9tIGFmdGVyIHN0YXJ0IGZ1bGZpbGxzJyk7CisK
K3Byb21pc2VfdGVzdCgoKSA9PiB7CisKKyAgbGV0IHB1bGxDb3VudCA9IDA7CisgIGxldCBjb250
cm9sbGVyOworCisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChj
KSB7CisgICAgICBjb250cm9sbGVyID0gYzsKKyAgICB9LAorICAgIHB1bGwoKSB7CisgICAgICAr
K3B1bGxDb3VudDsKKyAgICB9CisgIH0pOworCisgIGNvbnN0IHJlYWRlciA9IHJzLmdldFJlYWRl
cigpOworICByZXR1cm4gZmx1c2hBc3luY0V2ZW50cygpLnRoZW4oKCkgPT4geworICAgIGFzc2Vy
dF9lcXVhbHMocHVsbENvdW50LCAxLCAncHVsbCBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCBvbmNl
IGJ5IHRoZSB0aW1lIHRoZSBzdHJlYW0gc3RhcnRzJyk7CisKKyAgICBjb250cm9sbGVyLmVucXVl
dWUoJ2EnKTsKKyAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMSwgJ3B1bGwgc2hvdWxkIG5v
dCBoYXZlIGJlZW4gY2FsbGVkIGFnYWluIGFmdGVyIGVucXVldWUnKTsKKworICAgIHJldHVybiBy
ZWFkZXIucmVhZCgpOworICB9KS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfZXF1YWxzKHB1bGxD
b3VudCwgMiwgJ3B1bGwgc2hvdWxkIGhhdmUgYmVlbiBjYWxsZWQgYWdhaW4gYWZ0ZXIgcmVhZCcp
OworCisgICAgcmV0dXJuIGRlbGF5KDEwKTsKKyAgfSkudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0
X2VxdWFscyhwdWxsQ291bnQsIDIsICdwdWxsIHNob3VsZCBiZSBjYWxsZWQgZXhhY3RseSB0d2lj
ZScpOworICB9KTsKK30sICdSZWFkYWJsZVN0cmVhbTogc2hvdWxkIGNhbGwgcHVsbCBpbiByZWFj
dGlvbiB0byByZWFkKClpbmcgdGhlIGxhc3QgY2h1bmssIGlmIG5vdCBkcmFpbmluZycpOworCitw
cm9taXNlX3Rlc3QoKCkgPT4geworCisgIGxldCBwdWxsQ291bnQgPSAwOworICBsZXQgY29udHJv
bGxlcjsKKworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykg
eworICAgICAgY29udHJvbGxlciA9IGM7CisgICAgfSwKKyAgICBwdWxsKCkgeworICAgICAgKytw
dWxsQ291bnQ7CisgICAgfQorICB9KTsKKworICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFkZXIo
KTsKKworICByZXR1cm4gZmx1c2hBc3luY0V2ZW50cygpLnRoZW4oKCkgPT4geworICAgIGFzc2Vy
dF9lcXVhbHMocHVsbENvdW50LCAxLCAncHVsbCBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCBvbmNl
IGJ5IHRoZSB0aW1lIHRoZSBzdHJlYW0gc3RhcnRzJyk7CisKKyAgICBjb250cm9sbGVyLmVucXVl
dWUoJ2EnKTsKKyAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMSwgJ3B1bGwgc2hvdWxkIG5v
dCBoYXZlIGJlZW4gY2FsbGVkIGFnYWluIGFmdGVyIGVucXVldWUnKTsKKworICAgIGNvbnRyb2xs
ZXIuY2xvc2UoKTsKKworICAgIHJldHVybiByZWFkZXIucmVhZCgpOworICB9KS50aGVuKCgpID0+
IHsKKyAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMSwgJ3B1bGwgc2hvdWxkIG5vdCBoYXZl
IGJlZW4gY2FsbGVkIGEgc2Vjb25kIHRpbWUgYWZ0ZXIgcmVhZCcpOworCisgICAgcmV0dXJuIGRl
bGF5KDEwKTsKKyAgfSkudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQs
IDEsICdwdWxsIHNob3VsZCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlJyk7CisgIH0pOworCit9LCAn
UmVhZGFibGVTdHJlYW06IHNob3VsZCBub3QgY2FsbCBwdWxsKCkgaW4gcmVhY3Rpb24gdG8gcmVh
ZCgpaW5nIHRoZSBsYXN0IGNodW5rLCBpZiBkcmFpbmluZycpOworCitwcm9taXNlX3Rlc3QoKCkg
PT4geworCisgIGxldCByZXNvbHZlOworICBsZXQgcmV0dXJuZWRQcm9taXNlOworICBsZXQgdGlt
ZXNDYWxsZWQgPSAwOworCisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBw
dWxsKGMpIHsKKyAgICAgIGMuZW5xdWV1ZSgrK3RpbWVzQ2FsbGVkKTsKKyAgICAgIHJldHVybmVk
UHJvbWlzZSA9IG5ldyBQcm9taXNlKHIgPT4gcmVzb2x2ZSA9IHIpOworICAgICAgcmV0dXJuIHJl
dHVybmVkUHJvbWlzZTsKKyAgICB9CisgIH0pOworICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFk
ZXIoKTsKKworICByZXR1cm4gcmVhZGVyLnJlYWQoKQorICAudGhlbihyZXN1bHQxID0+IHsKKyAg
ICBhc3NlcnRfZXF1YWxzKHRpbWVzQ2FsbGVkLCAxLAorICAgICAgJ3B1bGwgc2hvdWxkIGhhdmUg
YmVlbiBjYWxsZWQgb25jZSBhZnRlciBzdGFydCwgYnV0IG5vdCB5ZXQgaGF2ZSBiZWVuIGNhbGxl
ZCBhIHNlY29uZCB0aW1lJyk7CisgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0MSwgeyB2
YWx1ZTogMSwgZG9uZTogZmFsc2UgfSwgJ3JlYWQoKSBzaG91bGQgZnVsZmlsbCB3aXRoIHRoZSBl
bnF1ZXVlZCB2YWx1ZScpOworCisgICAgcmV0dXJuIGRlbGF5KDEwKTsKKyAgfSkudGhlbigoKSA9
PiB7CisgICAgYXNzZXJ0X2VxdWFscyh0aW1lc0NhbGxlZCwgMSwgJ2FmdGVyIDEwIG1zLCBwdWxs
IHNob3VsZCBzdGlsbCBvbmx5IGhhdmUgYmVlbiBjYWxsZWQgb25jZScpOworCisgICAgcmVzb2x2
ZSgpOworICAgIHJldHVybiByZXR1cm5lZFByb21pc2U7CisgIH0pLnRoZW4oKCkgPT4geworICAg
IGFzc2VydF9lcXVhbHModGltZXNDYWxsZWQsIDIsCisgICAgICAnYWZ0ZXIgdGhlIHByb21pc2Ug
cmV0dXJuZWQgYnkgcHVsbCBpcyBmdWxmaWxsZWQsIHB1bGwgc2hvdWxkIGJlIGNhbGxlZCBhIHNl
Y29uZCB0aW1lJyk7CisgIH0pOworCit9LCAnUmVhZGFibGVTdHJlYW06IHNob3VsZCBub3QgY2Fs
bCBwdWxsIHVudGlsIHRoZSBwcmV2aW91cyBwdWxsIGNhbGxcJ3MgcHJvbWlzZSBmdWxmaWxscycp
OworCitwcm9taXNlX3Rlc3QoKCkgPT4geworCisgIGxldCB0aW1lc0NhbGxlZCA9IDA7CisKKyAg
Y29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oCisgICAgeworICAgICAgc3RhcnQoYykgewor
ICAgICAgICBjLmVucXVldWUoJ2EnKTsKKyAgICAgICAgYy5lbnF1ZXVlKCdiJyk7CisgICAgICAg
IGMuZW5xdWV1ZSgnYycpOworICAgICAgfSwKKyAgICAgIHB1bGwoKSB7CisgICAgICAgICsrdGlt
ZXNDYWxsZWQ7CisgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICBzaXplKCkgeworICAgICAg
ICByZXR1cm4gMTsKKyAgICAgIH0sCisgICAgICBoaWdoV2F0ZXJNYXJrOiBJbmZpbml0eQorICAg
IH0KKyAgKTsKKyAgY29uc3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7CisKKyAgcmV0dXJuIGZs
dXNoQXN5bmNFdmVudHMoKS50aGVuKCgpID0+IHsKKyAgICByZXR1cm4gcmVhZGVyLnJlYWQoKTsK
KyAgfSkudGhlbihyZXN1bHQxID0+IHsKKyAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQx
LCB7IHZhbHVlOiAnYScsIGRvbmU6IGZhbHNlIH0sICdmaXJzdCBjaHVuayBzaG91bGQgYmUgYXMg
ZXhwZWN0ZWQnKTsKKworICAgIHJldHVybiByZWFkZXIucmVhZCgpOworICB9KS50aGVuKHJlc3Vs
dDIgPT4geworICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdDIsIHsgdmFsdWU6ICdiJywg
ZG9uZTogZmFsc2UgfSwgJ3NlY29uZCBjaHVuayBzaG91bGQgYmUgYXMgZXhwZWN0ZWQnKTsKKwor
ICAgIHJldHVybiByZWFkZXIucmVhZCgpOworICB9KS50aGVuKHJlc3VsdDMgPT4geworICAgIGFz
c2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdDMsIHsgdmFsdWU6ICdjJywgZG9uZTogZmFsc2UgfSwg
J3RoaXJkIGNodW5rIHNob3VsZCBiZSBhcyBleHBlY3RlZCcpOworCisgICAgcmV0dXJuIGRlbGF5
KDEwKTsKKyAgfSkudGhlbigoKSA9PiB7CisgICAgLy8gT25jZSBmb3IgYWZ0ZXIgc3RhcnQsIGFu
ZCBvbmNlIGZvciBldmVyeSByZWFkLgorICAgIGFzc2VydF9lcXVhbHModGltZXNDYWxsZWQsIDQs
ICdwdWxsKCkgc2hvdWxkIGJlIGNhbGxlZCBleGFjdGx5IGZvdXIgdGltZXMnKTsKKyAgfSk7CisK
K30sICdSZWFkYWJsZVN0cmVhbTogc2hvdWxkIHB1bGwgYWZ0ZXIgc3RhcnQsIGFuZCBhZnRlciBl
dmVyeSByZWFkJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisKKyAgbGV0IHRpbWVzQ2FsbGVk
ID0gMDsKKyAgY29uc3Qgc3RhcnRQcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKCk7CisKKyAgY29u
c3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGMuZW5x
dWV1ZSgnYScpOworICAgICAgYy5jbG9zZSgpOworICAgICAgcmV0dXJuIHN0YXJ0UHJvbWlzZTsK
KyAgICB9LAorICAgIHB1bGwoKSB7CisgICAgICArK3RpbWVzQ2FsbGVkOworICAgIH0KKyAgfSk7
CisKKyAgY29uc3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7CisgIHJldHVybiBzdGFydFByb21p
c2UudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X2VxdWFscyh0aW1lc0NhbGxlZCwgMCwgJ2FmdGVy
IHN0YXJ0IGZpbmlzaGVzLCBwdWxsIHNob3VsZCBub3QgaGF2ZSBiZWVuIGNhbGxlZCcpOworCisg
ICAgcmV0dXJuIHJlYWRlci5yZWFkKCk7CisgIH0pLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9l
cXVhbHModGltZXNDYWxsZWQsIDAsICdyZWFkaW5nIHNob3VsZCBub3QgaGF2ZSB0cmlnZ2VyZWQg
YSBwdWxsIGNhbGwnKTsKKworICAgIHJldHVybiByZWFkZXIuY2xvc2VkOworICB9KS50aGVuKCgp
ID0+IHsKKyAgICBhc3NlcnRfZXF1YWxzKHRpbWVzQ2FsbGVkLCAwLCAnc3RyZWFtIHNob3VsZCBo
YXZlIGNsb3NlZCB3aXRoIHN0aWxsIG5vIGNhbGxzIHRvIHB1bGwnKTsKKyAgfSk7CisKK30sICdS
ZWFkYWJsZVN0cmVhbTogc2hvdWxkIG5vdCBjYWxsIHB1bGwgYWZ0ZXIgc3RhcnQgaWYgdGhlIHN0
cmVhbSBpcyBub3cgY2xvc2VkJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisKKyAgbGV0IHRp
bWVzQ2FsbGVkID0gMDsKKyAgbGV0IHJlc29sdmU7CisgIGNvbnN0IHJlYWR5ID0gbmV3IFByb21p
c2UociA9PiByZXNvbHZlID0gcik7CisKKyAgbmV3IFJlYWRhYmxlU3RyZWFtKAorICAgIHsKKyAg
ICAgIHN0YXJ0KCkge30sCisgICAgICBwdWxsKGMpIHsKKyAgICAgICAgYy5lbnF1ZXVlKCsrdGlt
ZXNDYWxsZWQpOworCisgICAgICAgIGlmICh0aW1lc0NhbGxlZCA9PT0gNCkgeworICAgICAgICAg
IHJlc29sdmUoKTsKKyAgICAgICAgfQorICAgICAgfQorICAgIH0sCisgICAgeworICAgICAgc2l6
ZSgpIHsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgICB9LAorICAgICAgaGlnaFdhdGVyTWFyazog
NAorICAgIH0KKyAgKTsKKworICByZXR1cm4gcmVhZHkudGhlbigoKSA9PiB7CisgICAgLy8gYWZ0
ZXIgc3RhcnQ6IHNpemUgPSAwLCBwdWxsKCkKKyAgICAvLyBhZnRlciBlbnF1ZXVlKDEpOiBzaXpl
ID0gMSwgcHVsbCgpCisgICAgLy8gYWZ0ZXIgZW5xdWV1ZSgyKTogc2l6ZSA9IDIsIHB1bGwoKQor
ICAgIC8vIGFmdGVyIGVucXVldWUoMyk6IHNpemUgPSAzLCBwdWxsKCkKKyAgICAvLyBhZnRlciBl
bnF1ZXVlKDQpOiBzaXplID0gNCwgZG8gbm90IHB1bGwKKyAgICBhc3NlcnRfZXF1YWxzKHRpbWVz
Q2FsbGVkLCA0LCAncHVsbCgpIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkIGZvdXIgdGltZXMnKTsK
KyAgfSk7CisKK30sICdSZWFkYWJsZVN0cmVhbTogc2hvdWxkIGNhbGwgcHVsbCBhZnRlciBlbnF1
ZXVlaW5nIGZyb20gaW5zaWRlIHB1bGwgKHdpdGggbm8gcmVhZCByZXF1ZXN0cyksIGlmIHN0cmF0
ZWd5IGFsbG93cycpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworCisgIGxldCBwdWxsQ2FsbGVk
ID0gZmFsc2U7CisKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHB1bGwo
YykgeworICAgICAgcHVsbENhbGxlZCA9IHRydWU7CisgICAgICBjLmNsb3NlKCk7CisgICAgfQor
ICB9KTsKKworICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKKyAgcmV0dXJuIHJlYWRl
ci5jbG9zZWQudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X3RydWUocHVsbENhbGxlZCk7CisgIH0p
OworCit9LCAnUmVhZGFibGVTdHJlYW0gcHVsbCBzaG91bGQgYmUgYWJsZSB0byBjbG9zZSBhIHN0
cmVhbS4nKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworCisgIGNvbnN0IGNvbnRyb2xsZXJFcnJv
ciA9IHsgbmFtZTogJ2NvbnRyb2xsZXIgZXJyb3InIH07CisKKyAgY29uc3QgcnMgPSBuZXcgUmVh
ZGFibGVTdHJlYW0oeworICAgIHB1bGwoYykgeworICAgICAgYy5lcnJvcihjb250cm9sbGVyRXJy
b3IpOworICAgIH0KKyAgfSk7CisKKyAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQs
IGNvbnRyb2xsZXJFcnJvciwgcnMuZ2V0UmVhZGVyKCkuY2xvc2VkKTsKKworfSwgJ1JlYWRhYmxl
U3RyZWFtIHB1bGwgc2hvdWxkIGJlIGFibGUgdG8gZXJyb3IgYSBzdHJlYW0uJyk7CisKK3Byb21p
c2VfdGVzdCh0ID0+IHsKKworICBjb25zdCBjb250cm9sbGVyRXJyb3IgPSB7IG5hbWU6ICdjb250
cm9sbGVyIGVycm9yJyB9OworICBjb25zdCB0aHJvd25FcnJvciA9IHsgbmFtZTogJ3Rocm93biBl
cnJvcicgfTsKKworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgcHVsbChj
KSB7CisgICAgICBjLmVycm9yKGNvbnRyb2xsZXJFcnJvcik7CisgICAgICB0aHJvdyB0aHJvd25F
cnJvcjsKKyAgICB9CisgIH0pOworCisgIHJldHVybiBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0
LCBjb250cm9sbGVyRXJyb3IsIHJzLmdldFJlYWRlcigpLmNsb3NlZCk7CisKK30sICdSZWFkYWJs
ZVN0cmVhbSBwdWxsIHNob3VsZCBiZSBhYmxlIHRvIGVycm9yIGEgc3RyZWFtIGFuZCB0aHJvdy4n
KTsKKwordGVzdCgoKSA9PiB7CisKKyAgbGV0IHN0YXJ0Q2FsbGVkID0gZmFsc2U7CisKKyAgbmV3
IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBhc3NlcnRfZXF1YWxzKGMu
ZW5xdWV1ZSgnYScpLCB1bmRlZmluZWQsICd0aGUgZmlyc3QgZW5xdWV1ZSBzaG91bGQgcmV0dXJu
IHVuZGVmaW5lZCcpOworICAgICAgYy5jbG9zZSgpOworCisgICAgICBhc3NlcnRfdGhyb3dzX2pz
KFR5cGVFcnJvciwgKCkgPT4gYy5lbnF1ZXVlKCdiJyksICdlbnF1ZXVlIGFmdGVyIGNsb3NlIHNo
b3VsZCB0aHJvdyBhIFR5cGVFcnJvcicpOworICAgICAgc3RhcnRDYWxsZWQgPSB0cnVlOworICAg
IH0KKyAgfSk7CisKKyAgYXNzZXJ0X3RydWUoc3RhcnRDYWxsZWQpOworCit9LCAnUmVhZGFibGVT
dHJlYW06IGVucXVldWUgc2hvdWxkIHRocm93IHdoZW4gdGhlIHN0cmVhbSBpcyByZWFkYWJsZSBi
dXQgZHJhaW5pbmcnKTsKKwordGVzdCgoKSA9PiB7CisKKyAgbGV0IHN0YXJ0Q2FsbGVkID0gZmFs
c2U7CisKKyAgbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjLmNs
b3NlKCk7CisKKyAgICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiBjLmVucXVl
dWUoJ2EnKSwgJ2VucXVldWUgYWZ0ZXIgY2xvc2Ugc2hvdWxkIHRocm93IGEgVHlwZUVycm9yJyk7
CisgICAgICBzdGFydENhbGxlZCA9IHRydWU7CisgICAgfQorICB9KTsKKworICBhc3NlcnRfdHJ1
ZShzdGFydENhbGxlZCk7CisKK30sICdSZWFkYWJsZVN0cmVhbTogZW5xdWV1ZSBzaG91bGQgdGhy
b3cgd2hlbiB0aGUgc3RyZWFtIGlzIGNsb3NlZCcpOworCitwcm9taXNlX3Rlc3QoKCkgPT4gewor
CisgIGxldCBzdGFydENhbGxlZCA9IDA7CisgIGxldCBwdWxsQ2FsbGVkID0gMDsKKyAgbGV0IGNh
bmNlbENhbGxlZCA9IDA7CisKKyAgLyogZXNsaW50LWRpc2FibGUgbm8tdXNlLWJlZm9yZS1kZWZp
bmUgKi8KKyAgY2xhc3MgU291cmNlIHsKKyAgICBzdGFydChjKSB7CisgICAgICBzdGFydENhbGxl
ZCsrOworICAgICAgYXNzZXJ0X2VxdWFscyh0aGlzLCB0aGVTb3VyY2UsICdzdGFydCgpIHNob3Vs
ZCBiZSBjYWxsZWQgd2l0aCB0aGUgY29ycmVjdCB0aGlzJyk7CisgICAgICBjLmVucXVldWUoJ2En
KTsKKyAgICB9CisKKyAgICBwdWxsKCkgeworICAgICAgcHVsbENhbGxlZCsrOworICAgICAgYXNz
ZXJ0X2VxdWFscyh0aGlzLCB0aGVTb3VyY2UsICdwdWxsKCkgc2hvdWxkIGJlIGNhbGxlZCB3aXRo
IHRoZSBjb3JyZWN0IHRoaXMnKTsKKyAgICB9CisKKyAgICBjYW5jZWwoKSB7CisgICAgICBjYW5j
ZWxDYWxsZWQrKzsKKyAgICAgIGFzc2VydF9lcXVhbHModGhpcywgdGhlU291cmNlLCAnY2FuY2Vs
KCkgc2hvdWxkIGJlIGNhbGxlZCB3aXRoIHRoZSBjb3JyZWN0IHRoaXMnKTsKKyAgICB9CisgIH0K
KyAgLyogZXNsaW50LWVuYWJsZSBuby11c2UtYmVmb3JlLWRlZmluZSAqLworCisgIGNvbnN0IHRo
ZVNvdXJjZSA9IG5ldyBTb3VyY2UoKTsKKyAgdGhlU291cmNlLmRlYnVnTmFtZSA9ICd0aGUgc291
cmNlIG9iamVjdCBwYXNzZWQgdG8gdGhlIGNvbnN0cnVjdG9yJzsgLy8gbWFrZXMgdGVzdCBmYWls
dXJlcyBlYXNpZXIgdG8gZGlhZ25vc2UKKworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVh
bSh0aGVTb3VyY2UpOworICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKKworICByZXR1
cm4gcmVhZGVyLnJlYWQoKS50aGVuKCgpID0+IHsKKyAgICByZWFkZXIucmVsZWFzZUxvY2soKTsK
KyAgICBycy5jYW5jZWwoKTsKKyAgICBhc3NlcnRfZXF1YWxzKHN0YXJ0Q2FsbGVkLCAxKTsKKyAg
ICBhc3NlcnRfZXF1YWxzKHB1bGxDYWxsZWQsIDEpOworICAgIGFzc2VydF9lcXVhbHMoY2FuY2Vs
Q2FsbGVkLCAxKTsKKyAgICByZXR1cm4gcnMuZ2V0UmVhZGVyKCkuY2xvc2VkOworICB9KTsKKwor
fSwgJ1JlYWRhYmxlU3RyZWFtOiBzaG91bGQgY2FsbCB1bmRlcmx5aW5nIHNvdXJjZSBtZXRob2Rz
IGFzIG1ldGhvZHMnKTsKKwordGVzdCgoKSA9PiB7CisgIG5ldyBSZWFkYWJsZVN0cmVhbSh7Cisg
ICAgc3RhcnQoYykgeworICAgICAgYXNzZXJ0X2VxdWFscyhjLmRlc2lyZWRTaXplLCAxMCwgJ2Rl
c2lyZWRTaXplIG11c3Qgc3RhcnQgYXQgaGlnaFdhdGVyTWFyaycpOworICAgICAgYy5jbG9zZSgp
OworICAgICAgYXNzZXJ0X2VxdWFscyhjLmRlc2lyZWRTaXplLCAwLCAnYWZ0ZXIgY2xvc2luZywg
ZGVzaXJlZFNpemUgbXVzdCBiZSAwJyk7CisgICAgfQorICB9LCB7CisgICAgaGlnaFdhdGVyTWFy
azogMTAKKyAgfSk7Cit9LCAnUmVhZGFibGVTdHJlYW06IGRlc2lyZWRTaXplIHdoZW4gY2xvc2Vk
Jyk7CisKK3Rlc3QoKCkgPT4geworICBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMp
IHsKKyAgICAgIGFzc2VydF9lcXVhbHMoYy5kZXNpcmVkU2l6ZSwgMTAsICdkZXNpcmVkU2l6ZSBt
dXN0IHN0YXJ0IGF0IGhpZ2hXYXRlck1hcmsnKTsKKyAgICAgIGMuZXJyb3IoKTsKKyAgICAgIGFz
c2VydF9lcXVhbHMoYy5kZXNpcmVkU2l6ZSwgbnVsbCwgJ2FmdGVyIGVycm9yaW5nLCBkZXNpcmVk
U2l6ZSBtdXN0IGJlIG51bGwnKTsKKyAgICB9CisgIH0sIHsKKyAgICBoaWdoV2F0ZXJNYXJrOiAx
MAorICB9KTsKK30sICdSZWFkYWJsZVN0cmVhbTogZGVzaXJlZFNpemUgd2hlbiBlcnJvcmVkJyk7
CisKK3Rlc3QoKCkgPT4geworICBjbGFzcyBTdWJjbGFzcyBleHRlbmRzIFJlYWRhYmxlU3RyZWFt
IHsKKyAgICBleHRyYUZ1bmN0aW9uKCkgeworICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICB9
CisgIGFzc2VydF9lcXVhbHMoCisgICAgICBPYmplY3QuZ2V0UHJvdG90eXBlT2YoU3ViY2xhc3Mu
cHJvdG90eXBlKSwgUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLAorICAgICAgJ1N1YmNsYXNzLnBy
b3RvdHlwZVwncyBwcm90b3R5cGUgc2hvdWxkIGJlIFJlYWRhYmxlU3RyZWFtLnByb3RvdHlwZScp
OworICBhc3NlcnRfZXF1YWxzKE9iamVjdC5nZXRQcm90b3R5cGVPZihTdWJjbGFzcyksIFJlYWRh
YmxlU3RyZWFtLAorICAgICAgICAgICAgICAgICdTdWJjbGFzc1wncyBwcm90b3R5cGUgc2hvdWxk
IGJlIFJlYWRhYmxlU3RyZWFtJyk7CisgIGNvbnN0IHN1YiA9IG5ldyBTdWJjbGFzcygpOworICBh
c3NlcnRfdHJ1ZShzdWIgaW5zdGFuY2VvZiBSZWFkYWJsZVN0cmVhbSwKKyAgICAgICAgICAgICAg
J1N1YmNsYXNzIG9iamVjdCBzaG91bGQgYmUgYW4gaW5zdGFuY2Ugb2YgUmVhZGFibGVTdHJlYW0n
KTsKKyAgYXNzZXJ0X3RydWUoc3ViIGluc3RhbmNlb2YgU3ViY2xhc3MsCisgICAgICAgICAgICAg
ICdTdWJjbGFzcyBvYmplY3Qgc2hvdWxkIGJlIGFuIGluc3RhbmNlIG9mIFN1YmNsYXNzJyk7Cisg
IGNvbnN0IGxvY2tlZEdldHRlciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoCisg
ICAgICBSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUsICdsb2NrZWQnKS5nZXQ7CisgIGFzc2VydF9l
cXVhbHMobG9ja2VkR2V0dGVyLmNhbGwoc3ViKSwgc3ViLmxvY2tlZCwKKyAgICAgICAgICAgICAg
ICAnU3ViY2xhc3Mgb2JqZWN0IHNob3VsZCBwYXNzIGJyYW5kIGNoZWNrJyk7CisgIGFzc2VydF90
cnVlKHN1Yi5leHRyYUZ1bmN0aW9uKCksCisgICAgICAgICAgICAgICdleHRyYUZ1bmN0aW9uKCkg
c2hvdWxkIGJlIHByZXNlbnQgb24gU3ViY2xhc3Mgb2JqZWN0Jyk7Cit9LCAnU3ViY2xhc3Npbmcg
UmVhZGFibGVTdHJlYW0gc2hvdWxkIHdvcmsnKTsKKwordGVzdCgoKSA9PiB7CisKKyAgbGV0IHN0
YXJ0Q2FsbGVkID0gZmFsc2U7CisgIG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykg
eworICAgICAgYXNzZXJ0X2VxdWFscyhjLmRlc2lyZWRTaXplLCAxKTsKKyAgICAgIGMuZW5xdWV1
ZSgnYScpOworICAgICAgYXNzZXJ0X2VxdWFscyhjLmRlc2lyZWRTaXplLCAwKTsKKyAgICAgIGMu
ZW5xdWV1ZSgnYicpOworICAgICAgYXNzZXJ0X2VxdWFscyhjLmRlc2lyZWRTaXplLCAtMSk7Cisg
ICAgICBjLmVucXVldWUoJ2MnKTsKKyAgICAgIGFzc2VydF9lcXVhbHMoYy5kZXNpcmVkU2l6ZSwg
LTIpOworICAgICAgYy5lbnF1ZXVlKCdkJyk7CisgICAgICBhc3NlcnRfZXF1YWxzKGMuZGVzaXJl
ZFNpemUsIC0zKTsKKyAgICAgIGMuZW5xdWV1ZSgnZScpOworICAgICAgc3RhcnRDYWxsZWQgPSB0
cnVlOworICAgIH0KKyAgfSk7CisKKyAgYXNzZXJ0X3RydWUoc3RhcnRDYWxsZWQpOworCit9LCAn
UmVhZGFibGVTdHJlYW0gc3RyYXRlZ2llczogdGhlIGRlZmF1bHQgc3RyYXRlZ3kgc2hvdWxkIGdp
dmUgZGVzaXJlZFNpemUgb2YgMSB0byBzdGFydCwgZGVjcmVhc2luZyBieSAxIHBlciBlbnF1ZXVl
Jyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisKKyAgbGV0IGNvbnRyb2xsZXI7CisgIGNvbnN0
IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjb250cm9s
bGVyID0gYzsKKyAgICB9CisgIH0pOworICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsK
KworICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDEsICdkZXNpcmVkU2l6
ZSBzaG91bGQgc3RhcnQgYXQgMScpOworICBjb250cm9sbGVyLmVucXVldWUoJ2EnKTsKKyAgYXNz
ZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAwLCAnZGVzaXJlZFNpemUgc2hvdWxk
IGRlY3JlYXNlIHRvIDAgYWZ0ZXIgZmlyc3QgZW5xdWV1ZScpOworCisgIHJldHVybiByZWFkZXIu
cmVhZCgpLnRoZW4ocmVzdWx0MSA9PiB7CisgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0
MSwgeyB2YWx1ZTogJ2EnLCBkb25lOiBmYWxzZSB9LCAnZmlyc3QgY2h1bmsgcmVhZCBzaG91bGQg
YmUgY29ycmVjdCcpOworCisgICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXpl
LCAxLCAnZGVzaXJlZFNpemUgc2hvdWxkIGdvIHVwIHRvIDEgYWZ0ZXIgdGhlIGZpcnN0IHJlYWQn
KTsKKyAgICBjb250cm9sbGVyLmVucXVldWUoJ2InKTsKKyAgICBhc3NlcnRfZXF1YWxzKGNvbnRy
b2xsZXIuZGVzaXJlZFNpemUsIDAsICdkZXNpcmVkU2l6ZSBzaG91bGQgZ28gZG93biB0byAwIGFm
dGVyIHRoZSBzZWNvbmQgZW5xdWV1ZScpOworCisgICAgcmV0dXJuIHJlYWRlci5yZWFkKCk7Cisg
IH0pLnRoZW4ocmVzdWx0MiA9PiB7CisgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0Miwg
eyB2YWx1ZTogJ2InLCBkb25lOiBmYWxzZSB9LCAnc2Vjb25kIGNodW5rIHJlYWQgc2hvdWxkIGJl
IGNvcnJlY3QnKTsKKworICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwg
MSwgJ2Rlc2lyZWRTaXplIHNob3VsZCBnbyB1cCB0byAxIGFmdGVyIHRoZSBzZWNvbmQgcmVhZCcp
OworICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYycpOworICAgIGFzc2VydF9lcXVhbHMoY29udHJv
bGxlci5kZXNpcmVkU2l6ZSwgMCwgJ2Rlc2lyZWRTaXplIHNob3VsZCBnbyBkb3duIHRvIDAgYWZ0
ZXIgdGhlIHRoaXJkIGVucXVldWUnKTsKKworICAgIHJldHVybiByZWFkZXIucmVhZCgpOworICB9
KS50aGVuKHJlc3VsdDMgPT4geworICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdDMsIHsg
dmFsdWU6ICdjJywgZG9uZTogZmFsc2UgfSwgJ3RoaXJkIGNodW5rIHJlYWQgc2hvdWxkIGJlIGNv
cnJlY3QnKTsKKworICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMSwg
J2Rlc2lyZWRTaXplIHNob3VsZCBnbyB1cCB0byAxIGFmdGVyIHRoZSB0aGlyZCByZWFkJyk7Cisg
ICAgY29udHJvbGxlci5lbnF1ZXVlKCdkJyk7CisgICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVy
LmRlc2lyZWRTaXplLCAwLCAnZGVzaXJlZFNpemUgc2hvdWxkIGdvIGRvd24gdG8gMCBhZnRlciB0
aGUgZm91cnRoIGVucXVldWUnKTsKKyAgfSk7CisKK30sICdSZWFkYWJsZVN0cmVhbSBzdHJhdGVn
aWVzOiB0aGUgZGVmYXVsdCBzdHJhdGVneSBzaG91bGQgY29udGludWUgZ2l2aW5nIGRlc2lyZWRT
aXplIG9mIDEgaWYgdGhlIGNodW5rcyBhcmUgcmVhZCBpbW1lZGlhdGVseScpOworCitwcm9taXNl
X3Rlc3QodCA9PiB7CisKKyAgY29uc3QgcmFuZG9tU291cmNlID0gbmV3IFJhbmRvbVB1c2hTb3Vy
Y2UoOCk7CisKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMp
IHsKKyAgICAgIGFzc2VydF9lcXVhbHModHlwZW9mIGMsICdvYmplY3QnLCAnYyBzaG91bGQgYmUg
YW4gb2JqZWN0IGluIHN0YXJ0Jyk7CisgICAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiBjLmVucXVl
dWUsICdmdW5jdGlvbicsICdlbnF1ZXVlIHNob3VsZCBiZSBhIGZ1bmN0aW9uIGluIHN0YXJ0Jyk7
CisgICAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiBjLmNsb3NlLCAnZnVuY3Rpb24nLCAnY2xvc2Ug
c2hvdWxkIGJlIGEgZnVuY3Rpb24gaW4gc3RhcnQnKTsKKyAgICAgIGFzc2VydF9lcXVhbHModHlw
ZW9mIGMuZXJyb3IsICdmdW5jdGlvbicsICdlcnJvciBzaG91bGQgYmUgYSBmdW5jdGlvbiBpbiBz
dGFydCcpOworCisgICAgICByYW5kb21Tb3VyY2Uub25kYXRhID0gdC5zdGVwX2Z1bmMoY2h1bmsg
PT4geworICAgICAgICBpZiAoIWMuZW5xdWV1ZShjaHVuaykgPD0gMCkgeworICAgICAgICAgIHJh
bmRvbVNvdXJjZS5yZWFkU3RvcCgpOworICAgICAgICB9CisgICAgICB9KTsKKworICAgICAgcmFu
ZG9tU291cmNlLm9uZW5kID0gYy5jbG9zZS5iaW5kKGMpOworICAgICAgcmFuZG9tU291cmNlLm9u
ZXJyb3IgPSBjLmVycm9yLmJpbmQoYyk7CisgICAgfSwKKworICAgIHB1bGwoYykgeworICAgICAg
YXNzZXJ0X2VxdWFscyh0eXBlb2YgYywgJ29iamVjdCcsICdjIHNob3VsZCBiZSBhbiBvYmplY3Qg
aW4gcHVsbCcpOworICAgICAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgYy5lbnF1ZXVlLCAnZnVuY3Rp
b24nLCAnZW5xdWV1ZSBzaG91bGQgYmUgYSBmdW5jdGlvbiBpbiBwdWxsJyk7CisgICAgICBhc3Nl
cnRfZXF1YWxzKHR5cGVvZiBjLmNsb3NlLCAnZnVuY3Rpb24nLCAnY2xvc2Ugc2hvdWxkIGJlIGEg
ZnVuY3Rpb24gaW4gcHVsbCcpOworCisgICAgICByYW5kb21Tb3VyY2UucmVhZFN0YXJ0KCk7Cisg
ICAgfQorICB9KTsKKworICByZXR1cm4gcmVhZGFibGVTdHJlYW1Ub0FycmF5KHJzKS50aGVuKGNo
dW5rcyA9PiB7CisgICAgYXNzZXJ0X2VxdWFscyhjaHVua3MubGVuZ3RoLCA4LCAnOCBjaHVua3Mg
c2hvdWxkIGJlIHJlYWQnKTsKKyAgICBmb3IgKGNvbnN0IGNodW5rIG9mIGNodW5rcykgeworICAg
ICAgYXNzZXJ0X2VxdWFscyhjaHVuay5sZW5ndGgsIDEyOCwgJ2NodW5rIHNob3VsZCBoYXZlIDEy
OCBieXRlcycpOworICAgIH0KKyAgfSk7CisKK30sICdSZWFkYWJsZVN0cmVhbSBpbnRlZ3JhdGlv
biB0ZXN0OiBhZGFwdGluZyBhIHJhbmRvbSBwdXNoIHNvdXJjZScpOworCitwcm9taXNlX3Rlc3Qo
KCkgPT4geworCisgIGNvbnN0IHJzID0gc2VxdWVudGlhbFJlYWRhYmxlU3RyZWFtKDEwKTsKKwor
ICByZXR1cm4gcmVhZGFibGVTdHJlYW1Ub0FycmF5KHJzKS50aGVuKGNodW5rcyA9PiB7CisgICAg
YXNzZXJ0X3RydWUocnMuc291cmNlLmNsb3NlZCwgJ3NvdXJjZSBzaG91bGQgYmUgY2xvc2VkIGFm
dGVyIGFsbCBjaHVua3MgYXJlIHJlYWQnKTsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGNodW5r
cywgWzEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwXSwgJ3RoZSBleHBlY3RlZCAxMCBjaHVu
a3Mgc2hvdWxkIGJlIHJlYWQnKTsKKyAgfSk7CisKK30sICdSZWFkYWJsZVN0cmVhbSBpbnRlZ3Jh
dGlvbiB0ZXN0OiBhZGFwdGluZyBhIHN5bmMgcHVsbCBzb3VyY2UnKTsKKworcHJvbWlzZV90ZXN0
KCgpID0+IHsKKworICBjb25zdCBycyA9IHNlcXVlbnRpYWxSZWFkYWJsZVN0cmVhbSgxMCwgeyBh
c3luYzogdHJ1ZSB9KTsKKworICByZXR1cm4gcmVhZGFibGVTdHJlYW1Ub0FycmF5KHJzKS50aGVu
KGNodW5rcyA9PiB7CisgICAgYXNzZXJ0X3RydWUocnMuc291cmNlLmNsb3NlZCwgJ3NvdXJjZSBz
aG91bGQgYmUgY2xvc2VkIGFmdGVyIGFsbCBjaHVua3MgYXJlIHJlYWQnKTsKKyAgICBhc3NlcnRf
YXJyYXlfZXF1YWxzKGNodW5rcywgWzEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwXSwgJ3Ro
ZSBleHBlY3RlZCAxMCBjaHVua3Mgc2hvdWxkIGJlIHJlYWQnKTsKKyAgfSk7CisKK30sICdSZWFk
YWJsZVN0cmVhbSBpbnRlZ3JhdGlvbiB0ZXN0OiBhZGFwdGluZyBhbiBhc3luYyBwdWxsIHNvdXJj
ZScpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZ2VuZXJhbC5hbnkud29ya2VyLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy9yZWFkYWJsZS1zdHJlYW1zL2dlbmVyYWwuYW55Lndvcmtlci1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMjM5Yjc5MWExMWViZGQxNzg2NzRjMjgyNjMyYTUzNGE0NTZhNDVlNgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2dlbmVyYWwuYW55Lndvcmtlci1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSw0NCBAQAorCitQQVNTIFJlYWRhYmxlU3RyZWFtIGNhbiBiZSBjb25zdHJ1Y3RlZCB3
aXRoIG5vIGVycm9ycyAKK1BBU1MgUmVhZGFibGVTdHJlYW0gY2FuJ3QgYmUgY29uc3RydWN0ZWQg
d2l0aCBnYXJiYWdlIAorRkFJTCBSZWFkYWJsZVN0cmVhbSBjYW4ndCBiZSBjb25zdHJ1Y3RlZCB3
aXRoIGFuIGludmFsaWQgdHlwZSBhc3NlcnRfdGhyb3dzX2pzOiBjb25zdHJ1Y3RvciBzaG91bGQg
dGhyb3cgd2hlbiB0aGUgdHlwZSBpcyBudWxsIGZ1bmN0aW9uICIoKSA9PiBuZXcgUmVhZGFibGVT
dHJlYW0oeyB0eXBlOiBudWxsIH0pIiB0aHJldyBvYmplY3QgIlJhbmdlRXJyb3I6IEludmFsaWQg
dHlwZSBmb3IgdW5kZXJseWluZyBzb3VyY2UiICgiUmFuZ2VFcnJvciIpIGV4cGVjdGVkIGluc3Rh
bmNlIG9mIGZ1bmN0aW9uICJmdW5jdGlvbiBUeXBlRXJyb3IoKSB7CisgICAgW25hdGl2ZSBjb2Rl
XQorfSIgKCJUeXBlRXJyb3IiKQorUEFTUyBSZWFkYWJsZVN0cmVhbSBjb25zdHJ1Y3RvciBzaG91
bGQgdGhyb3cgZm9yIG5vbi1mdW5jdGlvbiBzdGFydCBhcmd1bWVudHMgCitGQUlMIFJlYWRhYmxl
U3RyZWFtIGNvbnN0cnVjdG9yIHdpbGwgbm90IHRvbGVyYXRlIGluaXRpYWwgZ2FyYmFnZSBhcyBj
YW5jZWwgYXJndW1lbnQgYXNzZXJ0X3Rocm93c19qczogY29uc3RydWN0b3Igc2hvdWxkIHRocm93
IGZ1bmN0aW9uICIoKSA9PiBuZXcgUmVhZGFibGVTdHJlYW0oeyBjYW5jZWw6ICcyJyB9KSIgZGlk
IG5vdCB0aHJvdworRkFJTCBSZWFkYWJsZVN0cmVhbSBjb25zdHJ1Y3RvciB3aWxsIG5vdCB0b2xl
cmF0ZSBpbml0aWFsIGdhcmJhZ2UgYXMgcHVsbCBhcmd1bWVudCBhc3NlcnRfdGhyb3dzX2pzOiBj
b25zdHJ1Y3RvciBzaG91bGQgdGhyb3cgZnVuY3Rpb24gIigpID0+IG5ldyBSZWFkYWJsZVN0cmVh
bSh7IHB1bGw6IHsgfSB9KSIgZGlkIG5vdCB0aHJvdworUEFTUyBSZWFkYWJsZVN0cmVhbSBzdGFy
dCBzaG91bGQgYmUgY2FsbGVkIHdpdGggdGhlIHByb3BlciB0aGlzQXJnIAorUEFTUyBSZWFkYWJs
ZVN0cmVhbSBzdGFydCBjb250cm9sbGVyIHBhcmFtZXRlciBzaG91bGQgYmUgZXh0ZW5zaWJsZSAK
K0ZBSUwgZGVmYXVsdCBSZWFkYWJsZVN0cmVhbSBnZXRSZWFkZXIoKSBzaG91bGQgb25seSBhY2Nl
cHQgbW9kZTp1bmRlZmluZWQgYXNzZXJ0X3Rocm93c19qczogZnVuY3Rpb24gIigpID0+IChuZXcg
UmVhZGFibGVTdHJlYW0oKSkuZ2V0UmVhZGVyKHsgbW9kZTogJ3BvdGF0bycgfSkiIHRocmV3IG9i
amVjdCAiUmFuZ2VFcnJvcjogSW52YWxpZCBtb2RlIGlzIHNwZWNpZmllZCIgKCJSYW5nZUVycm9y
IikgZXhwZWN0ZWQgaW5zdGFuY2Ugb2YgZnVuY3Rpb24gImZ1bmN0aW9uIFR5cGVFcnJvcigpIHsK
KyAgICBbbmF0aXZlIGNvZGVdCit9IiAoIlR5cGVFcnJvciIpCitQQVNTIFJlYWRhYmxlU3RyZWFt
IHNob3VsZCBiZSBhYmxlIHRvIGNhbGwgc3RhcnQgbWV0aG9kIHdpdGhpbiBwcm90b3R5cGUgY2hh
aW4gb2YgaXRzIHNvdXJjZSAKK1BBU1MgUmVhZGFibGVTdHJlYW0gc3RhcnQgc2hvdWxkIGJlIGFi
bGUgdG8gcmV0dXJuIGEgcHJvbWlzZSAKK1BBU1MgUmVhZGFibGVTdHJlYW0gc3RhcnQgc2hvdWxk
IGJlIGFibGUgdG8gcmV0dXJuIGEgcHJvbWlzZSBhbmQgcmVqZWN0IGl0IAorUEFTUyBSZWFkYWJs
ZVN0cmVhbSBzaG91bGQgYmUgYWJsZSB0byBlbnF1ZXVlIGRpZmZlcmVudCBvYmplY3RzLiAKK1BB
U1MgUmVhZGFibGVTdHJlYW06IGlmIHB1bGwgcmVqZWN0cywgaXQgc2hvdWxkIGVycm9yIHRoZSBz
dHJlYW0gCitQQVNTIFJlYWRhYmxlU3RyZWFtOiBzaG91bGQgb25seSBjYWxsIHB1bGwgb25jZSB1
cG9uIHN0YXJ0aW5nIHRoZSBzdHJlYW0gCitQQVNTIFJlYWRhYmxlU3RyZWFtOiBzaG91bGQgY2Fs
bCBwdWxsIHdoZW4gdHJ5aW5nIHRvIHJlYWQgZnJvbSBhIHN0YXJ0ZWQsIGVtcHR5IHN0cmVhbSAK
K1BBU1MgUmVhZGFibGVTdHJlYW06IHNob3VsZCBvbmx5IGNhbGwgcHVsbCBvbmNlIG9uIGEgbm9u
LWVtcHR5IHN0cmVhbSByZWFkIGZyb20gYmVmb3JlIHN0YXJ0IGZ1bGZpbGxzIAorUEFTUyBSZWFk
YWJsZVN0cmVhbTogc2hvdWxkIG9ubHkgY2FsbCBwdWxsIG9uY2Ugb24gYSBub24tZW1wdHkgc3Ry
ZWFtIHJlYWQgZnJvbSBhZnRlciBzdGFydCBmdWxmaWxscyAKK1BBU1MgUmVhZGFibGVTdHJlYW06
IHNob3VsZCBjYWxsIHB1bGwgaW4gcmVhY3Rpb24gdG8gcmVhZCgpaW5nIHRoZSBsYXN0IGNodW5r
LCBpZiBub3QgZHJhaW5pbmcgCitQQVNTIFJlYWRhYmxlU3RyZWFtOiBzaG91bGQgbm90IGNhbGwg
cHVsbCgpIGluIHJlYWN0aW9uIHRvIHJlYWQoKWluZyB0aGUgbGFzdCBjaHVuaywgaWYgZHJhaW5p
bmcgCitQQVNTIFJlYWRhYmxlU3RyZWFtOiBzaG91bGQgbm90IGNhbGwgcHVsbCB1bnRpbCB0aGUg
cHJldmlvdXMgcHVsbCBjYWxsJ3MgcHJvbWlzZSBmdWxmaWxscyAKK1BBU1MgUmVhZGFibGVTdHJl
YW06IHNob3VsZCBwdWxsIGFmdGVyIHN0YXJ0LCBhbmQgYWZ0ZXIgZXZlcnkgcmVhZCAKK1BBU1Mg
UmVhZGFibGVTdHJlYW06IHNob3VsZCBub3QgY2FsbCBwdWxsIGFmdGVyIHN0YXJ0IGlmIHRoZSBz
dHJlYW0gaXMgbm93IGNsb3NlZCAKK1BBU1MgUmVhZGFibGVTdHJlYW06IHNob3VsZCBjYWxsIHB1
bGwgYWZ0ZXIgZW5xdWV1ZWluZyBmcm9tIGluc2lkZSBwdWxsICh3aXRoIG5vIHJlYWQgcmVxdWVz
dHMpLCBpZiBzdHJhdGVneSBhbGxvd3MgCitQQVNTIFJlYWRhYmxlU3RyZWFtIHB1bGwgc2hvdWxk
IGJlIGFibGUgdG8gY2xvc2UgYSBzdHJlYW0uIAorUEFTUyBSZWFkYWJsZVN0cmVhbSBwdWxsIHNo
b3VsZCBiZSBhYmxlIHRvIGVycm9yIGEgc3RyZWFtLiAKK1BBU1MgUmVhZGFibGVTdHJlYW0gcHVs
bCBzaG91bGQgYmUgYWJsZSB0byBlcnJvciBhIHN0cmVhbSBhbmQgdGhyb3cuIAorUEFTUyBSZWFk
YWJsZVN0cmVhbTogZW5xdWV1ZSBzaG91bGQgdGhyb3cgd2hlbiB0aGUgc3RyZWFtIGlzIHJlYWRh
YmxlIGJ1dCBkcmFpbmluZyAKK1BBU1MgUmVhZGFibGVTdHJlYW06IGVucXVldWUgc2hvdWxkIHRo
cm93IHdoZW4gdGhlIHN0cmVhbSBpcyBjbG9zZWQgCitQQVNTIFJlYWRhYmxlU3RyZWFtOiBzaG91
bGQgY2FsbCB1bmRlcmx5aW5nIHNvdXJjZSBtZXRob2RzIGFzIG1ldGhvZHMgCitQQVNTIFJlYWRh
YmxlU3RyZWFtOiBkZXNpcmVkU2l6ZSB3aGVuIGNsb3NlZCAKK1BBU1MgUmVhZGFibGVTdHJlYW06
IGRlc2lyZWRTaXplIHdoZW4gZXJyb3JlZCAKK0ZBSUwgU3ViY2xhc3NpbmcgUmVhZGFibGVTdHJl
YW0gc2hvdWxkIHdvcmsgYXNzZXJ0X3RydWU6IFN1YmNsYXNzIG9iamVjdCBzaG91bGQgYmUgYW4g
aW5zdGFuY2Ugb2YgU3ViY2xhc3MgZXhwZWN0ZWQgdHJ1ZSBnb3QgZmFsc2UKK1BBU1MgUmVhZGFi
bGVTdHJlYW0gc3RyYXRlZ2llczogdGhlIGRlZmF1bHQgc3RyYXRlZ3kgc2hvdWxkIGdpdmUgZGVz
aXJlZFNpemUgb2YgMSB0byBzdGFydCwgZGVjcmVhc2luZyBieSAxIHBlciBlbnF1ZXVlIAorUEFT
UyBSZWFkYWJsZVN0cmVhbSBzdHJhdGVnaWVzOiB0aGUgZGVmYXVsdCBzdHJhdGVneSBzaG91bGQg
Y29udGludWUgZ2l2aW5nIGRlc2lyZWRTaXplIG9mIDEgaWYgdGhlIGNodW5rcyBhcmUgcmVhZCBp
bW1lZGlhdGVseSAKK1BBU1MgUmVhZGFibGVTdHJlYW0gaW50ZWdyYXRpb24gdGVzdDogYWRhcHRp
bmcgYSByYW5kb20gcHVzaCBzb3VyY2UgCitQQVNTIFJlYWRhYmxlU3RyZWFtIGludGVncmF0aW9u
IHRlc3Q6IGFkYXB0aW5nIGEgc3luYyBwdWxsIHNvdXJjZSAKK1BBU1MgUmVhZGFibGVTdHJlYW0g
aW50ZWdyYXRpb24gdGVzdDogYWRhcHRpbmcgYW4gYXN5bmMgcHVsbCBzb3VyY2UgCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy9yZWFkYWJsZS1zdHJlYW1zL2dlbmVyYWwuYW55Lndvcmtlci5odG1sIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMv
Z2VuZXJhbC5hbnkud29ya2VyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjM4MjkxMzUyOGU2OTNiM2E1ZDU2
YzY2MGE0NTA2MDk4MGI1NDhjMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2dlbmVy
YWwuYW55Lndvcmtlci5odG1sCkBAIC0wLDAgKzEgQEAKKzwhLS0gVGhpcyBmaWxlIGlzIHJlcXVp
cmVkIGZvciBXZWJLaXQgdGVzdCBpbmZyYXN0cnVjdHVyZSB0byBydW4gdGhlIHRlbXBsYXRlZCB0
ZXN0IC0tPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJl
YW1zL2dlbmVyYWwuZGVkaWNhdGVkd29ya2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2dl
bmVyYWwuZGVkaWNhdGVkd29ya2VyLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggNDQ1MjZhZDhhZmNkNWM3NGYzMGVlYmM4MDExZjgwZWFjYWU1YmVkZS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9nZW5l
cmFsLmRlZGljYXRlZHdvcmtlci1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw0MCAr
MCwwIEBACi0KLVBBU1MgUmVhZGFibGVTdHJlYW0gY2FuIGJlIGNvbnN0cnVjdGVkIHdpdGggbm8g
ZXJyb3JzIAotUEFTUyBSZWFkYWJsZVN0cmVhbSBjYW4ndCBiZSBjb25zdHJ1Y3RlZCB3aXRoIGdh
cmJhZ2UgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIGNhbid0IGJlIGNvbnN0cnVjdGVkIHdpdGggYW4g
aW52YWxpZCB0eXBlIAotRkFJTCBSZWFkYWJsZVN0cmVhbSBpbnN0YW5jZXMgc2hvdWxkIGhhdmUg
dGhlIGNvcnJlY3QgbGlzdCBvZiBwcm9wZXJ0aWVzIGFzc2VydF9lcXVhbHM6IGdldFJlYWRlciBz
aG91bGQgaGF2ZSBubyBwYXJhbWV0ZXJzIGV4cGVjdGVkIDAgYnV0IGdvdCAxCi1QQVNTIFJlYWRh
YmxlU3RyZWFtIGNvbnN0cnVjdG9yIHNob3VsZCB0aHJvdyBmb3Igbm9uLWZ1bmN0aW9uIHN0YXJ0
IGFyZ3VtZW50cyAKLUZBSUwgUmVhZGFibGVTdHJlYW0gY29uc3RydWN0b3Igd2lsbCBub3QgdG9s
ZXJhdGUgaW5pdGlhbCBnYXJiYWdlIGFzIGNhbmNlbCBhcmd1bWVudCBhc3NlcnRfdGhyb3dzOiBj
b25zdHJ1Y3RvciBzaG91bGQgdGhyb3cgZnVuY3Rpb24gIigpID0+IG5ldyBSZWFkYWJsZVN0cmVh
bSh7IGNhbmNlbDogJzInIH0pIiBkaWQgbm90IHRocm93Ci1GQUlMIFJlYWRhYmxlU3RyZWFtIGNv
bnN0cnVjdG9yIHdpbGwgbm90IHRvbGVyYXRlIGluaXRpYWwgZ2FyYmFnZSBhcyBwdWxsIGFyZ3Vt
ZW50IGFzc2VydF90aHJvd3M6IGNvbnN0cnVjdG9yIHNob3VsZCB0aHJvdyBmdW5jdGlvbiAiKCkg
PT4gbmV3IFJlYWRhYmxlU3RyZWFtKHsgcHVsbDogeyB9IH0pIiBkaWQgbm90IHRocm93Ci1GQUlM
IFJlYWRhYmxlU3RyZWFtIHN0YXJ0IHNob3VsZCBiZSBjYWxsZWQgd2l0aCB0aGUgcHJvcGVyIHBh
cmFtZXRlcnMgYXNzZXJ0X2VxdWFsczogY29uc3RydWN0b3Igc2hvdWxkIGhhdmUgbm8gcGFyYW1l
dGVycyBleHBlY3RlZCAwIGJ1dCBnb3QgNAotUEFTUyBSZWFkYWJsZVN0cmVhbSBzdGFydCBjb250
cm9sbGVyIHBhcmFtZXRlciBzaG91bGQgYmUgZXh0ZW5zaWJsZSAKLVBBU1MgZGVmYXVsdCBSZWFk
YWJsZVN0cmVhbSBnZXRSZWFkZXIoKSBzaG91bGQgb25seSBhY2NlcHQgbW9kZTp1bmRlZmluZWQg
Ci1QQVNTIFJlYWRhYmxlU3RyZWFtIHNob3VsZCBiZSBhYmxlIHRvIGNhbGwgc3RhcnQgbWV0aG9k
IHdpdGhpbiBwcm90b3R5cGUgY2hhaW4gb2YgaXRzIHNvdXJjZSAKLVBBU1MgUmVhZGFibGVTdHJl
YW0gc3RhcnQgc2hvdWxkIGJlIGFibGUgdG8gcmV0dXJuIGEgcHJvbWlzZSAKLVBBU1MgUmVhZGFi
bGVTdHJlYW0gc3RhcnQgc2hvdWxkIGJlIGFibGUgdG8gcmV0dXJuIGEgcHJvbWlzZSBhbmQgcmVq
ZWN0IGl0IAotUEFTUyBSZWFkYWJsZVN0cmVhbSBzaG91bGQgYmUgYWJsZSB0byBlbnF1ZXVlIGRp
ZmZlcmVudCBvYmplY3RzLiAKLVBBU1MgUmVhZGFibGVTdHJlYW06IGlmIHB1bGwgcmVqZWN0cywg
aXQgc2hvdWxkIGVycm9yIHRoZSBzdHJlYW0gCi1QQVNTIFJlYWRhYmxlU3RyZWFtOiBzaG91bGQg
b25seSBjYWxsIHB1bGwgb25jZSB1cG9uIHN0YXJ0aW5nIHRoZSBzdHJlYW0gCi1QQVNTIFJlYWRh
YmxlU3RyZWFtOiBzaG91bGQgY2FsbCBwdWxsIHdoZW4gdHJ5aW5nIHRvIHJlYWQgZnJvbSBhIHN0
YXJ0ZWQsIGVtcHR5IHN0cmVhbSAKLVBBU1MgUmVhZGFibGVTdHJlYW06IHNob3VsZCBvbmx5IGNh
bGwgcHVsbCBvbmNlIG9uIGEgbm9uLWVtcHR5IHN0cmVhbSByZWFkIGZyb20gYmVmb3JlIHN0YXJ0
IGZ1bGZpbGxzIAotUEFTUyBSZWFkYWJsZVN0cmVhbTogc2hvdWxkIG9ubHkgY2FsbCBwdWxsIG9u
Y2Ugb24gYSBub24tZW1wdHkgc3RyZWFtIHJlYWQgZnJvbSBhZnRlciBzdGFydCBmdWxmaWxscyAK
LVBBU1MgUmVhZGFibGVTdHJlYW06IHNob3VsZCBjYWxsIHB1bGwgaW4gcmVhY3Rpb24gdG8gcmVh
ZCgpaW5nIHRoZSBsYXN0IGNodW5rLCBpZiBub3QgZHJhaW5pbmcgCi1QQVNTIFJlYWRhYmxlU3Ry
ZWFtOiBzaG91bGQgbm90IGNhbGwgcHVsbCgpIGluIHJlYWN0aW9uIHRvIHJlYWQoKWluZyB0aGUg
bGFzdCBjaHVuaywgaWYgZHJhaW5pbmcgCi1QQVNTIFJlYWRhYmxlU3RyZWFtOiBzaG91bGQgbm90
IGNhbGwgcHVsbCB1bnRpbCB0aGUgcHJldmlvdXMgcHVsbCBjYWxsJ3MgcHJvbWlzZSBmdWxmaWxs
cyAKLVBBU1MgUmVhZGFibGVTdHJlYW06IHNob3VsZCBwdWxsIGFmdGVyIHN0YXJ0LCBhbmQgYWZ0
ZXIgZXZlcnkgcmVhZCAKLVBBU1MgUmVhZGFibGVTdHJlYW06IHNob3VsZCBub3QgY2FsbCBwdWxs
IGFmdGVyIHN0YXJ0IGlmIHRoZSBzdHJlYW0gaXMgbm93IGNsb3NlZCAKLVBBU1MgUmVhZGFibGVT
dHJlYW06IHNob3VsZCBjYWxsIHB1bGwgYWZ0ZXIgZW5xdWV1ZWluZyBmcm9tIGluc2lkZSBwdWxs
ICh3aXRoIG5vIHJlYWQgcmVxdWVzdHMpLCBpZiBzdHJhdGVneSBhbGxvd3MgCi1QQVNTIFJlYWRh
YmxlU3RyZWFtIHB1bGwgc2hvdWxkIGJlIGFibGUgdG8gY2xvc2UgYSBzdHJlYW0uIAotUEFTUyBS
ZWFkYWJsZVN0cmVhbSBwdWxsIHNob3VsZCBiZSBhYmxlIHRvIGVycm9yIGEgc3RyZWFtLiAKLVBB
U1MgUmVhZGFibGVTdHJlYW0gcHVsbCBzaG91bGQgYmUgYWJsZSB0byBlcnJvciBhIHN0cmVhbSBh
bmQgdGhyb3cuIAotUEFTUyBSZWFkYWJsZVN0cmVhbTogZW5xdWV1ZSBzaG91bGQgdGhyb3cgd2hl
biB0aGUgc3RyZWFtIGlzIHJlYWRhYmxlIGJ1dCBkcmFpbmluZyAKLVBBU1MgUmVhZGFibGVTdHJl
YW06IGVucXVldWUgc2hvdWxkIHRocm93IHdoZW4gdGhlIHN0cmVhbSBpcyBjbG9zZWQgCi1QQVNT
IFJlYWRhYmxlU3RyZWFtOiBzaG91bGQgY2FsbCB1bmRlcmx5aW5nIHNvdXJjZSBtZXRob2RzIGFz
IG1ldGhvZHMgCi1QQVNTIFJlYWRhYmxlU3RyZWFtOiBkZXNpcmVkU2l6ZSB3aGVuIGNsb3NlZCAK
LVBBU1MgUmVhZGFibGVTdHJlYW06IGRlc2lyZWRTaXplIHdoZW4gZXJyb3JlZCAKLVBBU1MgUmVh
ZGFibGVTdHJlYW0gc3RyYXRlZ2llczogdGhlIGRlZmF1bHQgc3RyYXRlZ3kgc2hvdWxkIGdpdmUg
ZGVzaXJlZFNpemUgb2YgMSB0byBzdGFydCwgZGVjcmVhc2luZyBieSAxIHBlciBlbnF1ZXVlIAot
UEFTUyBSZWFkYWJsZVN0cmVhbSBzdHJhdGVnaWVzOiB0aGUgZGVmYXVsdCBzdHJhdGVneSBzaG91
bGQgY29udGludWUgZ2l2aW5nIGRlc2lyZWRTaXplIG9mIDEgaWYgdGhlIGNodW5rcyBhcmUgcmVh
ZCBpbW1lZGlhdGVseSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gaW50ZWdyYXRpb24gdGVzdDogYWRh
cHRpbmcgYSByYW5kb20gcHVzaCBzb3VyY2UgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIGludGVncmF0
aW9uIHRlc3Q6IGFkYXB0aW5nIGEgc3luYyBwdWxsIHNvdXJjZSAKLVBBU1MgUmVhZGFibGVTdHJl
YW0gaW50ZWdyYXRpb24gdGVzdDogYWRhcHRpbmcgYW4gYXN5bmMgcHVsbCBzb3VyY2UgCi0KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2dlbmVyYWwuZGVkaWNhdGVkd29ya2VyLmh0bWwgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUt
c3RyZWFtcy9nZW5lcmFsLmRlZGljYXRlZHdvcmtlci5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA4NmU0ODAxMzllODkxNzJjY2NkMmEwOGYxNDE3ZGQzMzk4ZjUzMjhhLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2dl
bmVyYWwuZGVkaWNhdGVkd29ya2VyLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBA
Ci08IURPQ1RZUEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTx0aXRsZT5nZW5lcmFs
LmpzIGRlZGljYXRlZCB3b3JrZXIgd3JhcHBlciBmaWxlPC90aXRsZT4KLQotPHNjcmlwdCBzcmM9
Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9yZXNv
dXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotCi08c2NyaXB0PgotJ3VzZSBz
dHJpY3QnOwotZmV0Y2hfdGVzdHNfZnJvbV93b3JrZXIobmV3IFdvcmtlcignZ2VuZXJhbC5qcycp
KTsKLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZ2VuZXJhbC5odG1sIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxl
LXN0cmVhbXMvZ2VuZXJhbC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NzVj
ZDAwOWZkMTg0ZTMwMGQ3MTEzOTdiMDE0YmEyYWJkZTY3ZjhhLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2dlbmVyYWwuaHRtbAorKysg
L2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNl
dD0idXRmLTgiPgotPHRpdGxlPmdlbmVyYWwuanMgYnJvd3NlciBjb250ZXh0IHdyYXBwZXIgZmls
ZTwvdGl0bGU+Ci0KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3Nj
cmlwdD4KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3Nj
cmlwdD4KLQotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0LXV0aWxzLmpzIj48L3Njcmlw
dD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvcnMtdXRpbHMuanMiPjwvc2NyaXB0PgotCi08
c2NyaXB0IHNyYz0iZ2VuZXJhbC5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFt
cy9nZW5lcmFsLmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZ2VuZXJhbC5qcwpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDUzODJkNDdmN2ViNjFkZWFlMjQwYjZkOTQ0MWE5OThlNThkZDU0YS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9n
ZW5lcmFsLmpzCisrKyAvZGV2L251bGwKQEAgLTEsOTAxICswLDAgQEAKLSd1c2Ugc3RyaWN0JzsK
LQotaWYgKHNlbGYuaW1wb3J0U2NyaXB0cykgewotICBzZWxmLmltcG9ydFNjcmlwdHMoJy4uL3Jl
c291cmNlcy90ZXN0LXV0aWxzLmpzJyk7Ci0gIHNlbGYuaW1wb3J0U2NyaXB0cygnLi4vcmVzb3Vy
Y2VzL3JzLXV0aWxzLmpzJyk7Ci0gIHNlbGYuaW1wb3J0U2NyaXB0cygnL3Jlc291cmNlcy90ZXN0
aGFybmVzcy5qcycpOwotfQotCi1jb25zdCBlcnJvcjEgPSBuZXcgRXJyb3IoJ2Vycm9yMScpOwot
ZXJyb3IxLm5hbWUgPSAnZXJyb3IxJzsKLQotdGVzdCgoKSA9PiB7Ci0KLSAgbmV3IFJlYWRhYmxl
U3RyZWFtKCk7IC8vIFJlYWRhYmxlU3RyZWFtIGNvbnN0cnVjdGVkIHdpdGggbm8gcGFyYW1ldGVy
cwotICBuZXcgUmVhZGFibGVTdHJlYW0oeyB9KTsgLy8gUmVhZGFibGVTdHJlYW0gY29uc3RydWN0
ZWQgd2l0aCBhbiBlbXB0eSBvYmplY3QgYXMgcGFyYW1ldGVyCi0gIG5ldyBSZWFkYWJsZVN0cmVh
bSh7IHR5cGU6IHVuZGVmaW5lZCB9KTsgLy8gUmVhZGFibGVTdHJlYW0gY29uc3RydWN0ZWQgd2l0
aCB1bmRlZmluZWQgdHlwZQotICBuZXcgUmVhZGFibGVTdHJlYW0odW5kZWZpbmVkKTsgLy8gUmVh
ZGFibGVTdHJlYW0gY29uc3RydWN0ZWQgd2l0aCB1bmRlZmluZWQgYXMgcGFyYW1ldGVyCi0KLSAg
bGV0IHg7Ci0gIG5ldyBSZWFkYWJsZVN0cmVhbSh4KTsgLy8gUmVhZGFibGVTdHJlYW0gY29uc3Ry
dWN0ZWQgd2l0aCBhbiB1bmRlZmluZWQgdmFyaWFibGUgYXMgcGFyYW1ldGVyCi0KLX0sICdSZWFk
YWJsZVN0cmVhbSBjYW4gYmUgY29uc3RydWN0ZWQgd2l0aCBubyBlcnJvcnMnKTsKLQotdGVzdCgo
KSA9PiB7Ci0KLSAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IG5ldyBSZWFk
YWJsZVN0cmVhbShudWxsKSwgJ2NvbnN0cnVjdG9yIHNob3VsZCB0aHJvdyB3aGVuIHRoZSBzb3Vy
Y2UgaXMgbnVsbCcpOwotCi19LCAnUmVhZGFibGVTdHJlYW0gY2FuXCd0IGJlIGNvbnN0cnVjdGVk
IHdpdGggZ2FyYmFnZScpOwotCi10ZXN0KCgpID0+IHsKLQotICBhc3NlcnRfdGhyb3dzKG5ldyBS
YW5nZUVycm9yKCksICgpID0+IG5ldyBSZWFkYWJsZVN0cmVhbSh7IHR5cGU6IG51bGwgfSksCi0g
ICAgJ2NvbnN0cnVjdG9yIHNob3VsZCB0aHJvdyB3aGVuIHRoZSB0eXBlIGlzIG51bGwnKTsKLSAg
YXNzZXJ0X3Rocm93cyhuZXcgUmFuZ2VFcnJvcigpLCAoKSA9PiBuZXcgUmVhZGFibGVTdHJlYW0o
eyB0eXBlOiAnJyB9KSwKLSAgICAnY29uc3RydWN0b3Igc2hvdWxkIHRocm93IHdoZW4gdGhlIHR5
cGUgaXMgZW1wdHkgc3RyaW5nJyk7Ci0gIGFzc2VydF90aHJvd3MobmV3IFJhbmdlRXJyb3IoKSwg
KCkgPT4gbmV3IFJlYWRhYmxlU3RyZWFtKHsgdHlwZTogJ2FzZGYnIH0pLAotICAgICdjb25zdHJ1
Y3RvciBzaG91bGQgdGhyb3cgd2hlbiB0aGUgdHlwZSBpcyBhc2RmJyk7Ci0gIGFzc2VydF90aHJv
d3MoZXJyb3IxLCAoKSA9PiBuZXcgUmVhZGFibGVTdHJlYW0oeyB0eXBlOiB7IGdldCB0b1N0cmlu
ZygpIHt0aHJvdyBlcnJvcjE7fSB9IH0pLCAnY29uc3RydWN0b3Igc2hvdWxkIHRocm93IHdoZW4g
VG9TdHJpbmcoKSB0aHJvd3MnKTsKLSAgYXNzZXJ0X3Rocm93cyhlcnJvcjEsICgpID0+IG5ldyBS
ZWFkYWJsZVN0cmVhbSh7IHR5cGU6IHsgdG9TdHJpbmcoKSB7dGhyb3cgZXJyb3IxO30gfSB9KSwg
J2NvbnN0cnVjdG9yIHNob3VsZCB0aHJvdyB3aGVuIFRvU3RyaW5nKCkgdGhyb3dzJyk7Ci0KLX0s
ICdSZWFkYWJsZVN0cmVhbSBjYW5cJ3QgYmUgY29uc3RydWN0ZWQgd2l0aCBhbiBpbnZhbGlkIHR5
cGUnKTsKLQotdGVzdCgoKSA9PiB7Ci0KLSAgY29uc3QgbWV0aG9kcyA9IFsnY2FuY2VsJywgJ2Nv
bnN0cnVjdG9yJywgJ2dldFJlYWRlcicsICdwaXBlVGhyb3VnaCcsICdwaXBlVG8nLCAndGVlJ107
Ci0gIGNvbnN0IHByb3BlcnRpZXMgPSBtZXRob2RzLmNvbmNhdChbJ2xvY2tlZCddKS5zb3J0KCk7
Ci0KLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oKTsKLSAgY29uc3QgcHJvdG8gPSBP
YmplY3QuZ2V0UHJvdG90eXBlT2YocnMpOwotCi0gIGFzc2VydF9hcnJheV9lcXVhbHMoT2JqZWN0
LmdldE93blByb3BlcnR5TmFtZXMocHJvdG8pLnNvcnQoKSwgcHJvcGVydGllcywgJ3Nob3VsZCBo
YXZlIGFsbCB0aGUgY29ycmVjdCBtZXRob2RzJyk7Ci0KLSAgZm9yIChjb25zdCBtIG9mIG1ldGhv
ZHMpIHsKLSAgICBjb25zdCBwcm9wRGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3IocHJvdG8sIG0pOwotICAgIGFzc2VydF9mYWxzZShwcm9wRGVzYy5lbnVtZXJhYmxlLCAnbWV0
aG9kIHNob3VsZCBiZSBub24tZW51bWVyYWJsZScpOwotICAgIGFzc2VydF90cnVlKHByb3BEZXNj
LmNvbmZpZ3VyYWJsZSwgJ21ldGhvZCBzaG91bGQgYmUgY29uZmlndXJhYmxlJyk7Ci0gICAgYXNz
ZXJ0X3RydWUocHJvcERlc2Mud3JpdGFibGUsICdtZXRob2Qgc2hvdWxkIGJlIHdyaXRhYmxlJyk7
Ci0gICAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgcnNbbV0sICdmdW5jdGlvbicsICdtZXRob2Qgc2hv
dWxkIGJlIGEgZnVuY3Rpb24nKTsKLSAgICBjb25zdCBleHBlY3RlZE5hbWUgPSBtID09PSAnY29u
c3RydWN0b3InID8gJ1JlYWRhYmxlU3RyZWFtJyA6IG07Ci0gICAgYXNzZXJ0X2VxdWFscyhyc1tt
XS5uYW1lLCBleHBlY3RlZE5hbWUsICdtZXRob2Qgc2hvdWxkIGhhdmUgdGhlIGNvcnJlY3QgbmFt
ZScpOwotICB9Ci0KLSAgY29uc3QgbG9ja2VkUHJvcERlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKHByb3RvLCAnbG9ja2VkJyk7Ci0gIGFzc2VydF9mYWxzZShsb2NrZWRQcm9w
RGVzYy5lbnVtZXJhYmxlLCAnbG9ja2VkIHNob3VsZCBiZSBub24tZW51bWVyYWJsZScpOwotICBh
c3NlcnRfZXF1YWxzKGxvY2tlZFByb3BEZXNjLndyaXRhYmxlLCB1bmRlZmluZWQsICdsb2NrZWQg
c2hvdWxkIG5vdCBiZSBhIGRhdGEgcHJvcGVydHknKTsKLSAgYXNzZXJ0X2VxdWFscyh0eXBlb2Yg
bG9ja2VkUHJvcERlc2MuZ2V0LCAnZnVuY3Rpb24nLCAnbG9ja2VkIHNob3VsZCBoYXZlIGEgZ2V0
dGVyJyk7Ci0gIGFzc2VydF9lcXVhbHMobG9ja2VkUHJvcERlc2Muc2V0LCB1bmRlZmluZWQsICds
b2NrZWQgc2hvdWxkIG5vdCBoYXZlIGEgc2V0dGVyJyk7Ci0gIGFzc2VydF90cnVlKGxvY2tlZFBy
b3BEZXNjLmNvbmZpZ3VyYWJsZSwgJ2xvY2tlZCBzaG91bGQgYmUgY29uZmlndXJhYmxlJyk7Ci0K
LSAgYXNzZXJ0X2VxdWFscyhycy5jYW5jZWwubGVuZ3RoLCAxLCAnY2FuY2VsIHNob3VsZCBoYXZl
IDEgcGFyYW1ldGVyJyk7Ci0gIGFzc2VydF9lcXVhbHMocnMuY29uc3RydWN0b3IubGVuZ3RoLCAw
LCAnY29uc3RydWN0b3Igc2hvdWxkIGhhdmUgbm8gcGFyYW1ldGVycycpOwotICBhc3NlcnRfZXF1
YWxzKHJzLmdldFJlYWRlci5sZW5ndGgsIDAsICdnZXRSZWFkZXIgc2hvdWxkIGhhdmUgbm8gcGFy
YW1ldGVycycpOwotICBhc3NlcnRfZXF1YWxzKHJzLnBpcGVUaHJvdWdoLmxlbmd0aCwgMiwgJ3Bp
cGVUaHJvdWdoIHNob3VsZCBoYXZlIDIgcGFyYW1ldGVycycpOwotICBhc3NlcnRfZXF1YWxzKHJz
LnBpcGVUby5sZW5ndGgsIDEsICdwaXBlVG8gc2hvdWxkIGhhdmUgMSBwYXJhbWV0ZXInKTsKLSAg
YXNzZXJ0X2VxdWFscyhycy50ZWUubGVuZ3RoLCAwLCAndGVlIHNob3VsZCBoYXZlIG5vIHBhcmFt
ZXRlcnMnKTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtIGluc3RhbmNlcyBzaG91bGQgaGF2ZSB0aGUg
Y29ycmVjdCBsaXN0IG9mIHByb3BlcnRpZXMnKTsKLQotdGVzdCgoKSA9PiB7Ci0KLSAgYXNzZXJ0
X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IHsKLSAgICBuZXcgUmVhZGFibGVTdHJlYW0o
eyBzdGFydDogJ3BvdGF0bycgfSk7Ci0gIH0sICdjb25zdHJ1Y3RvciBzaG91bGQgdGhyb3cgd2hl
biBzdGFydCBpcyBub3QgYSBmdW5jdGlvbicpOwotCi19LCAnUmVhZGFibGVTdHJlYW0gY29uc3Ry
dWN0b3Igc2hvdWxkIHRocm93IGZvciBub24tZnVuY3Rpb24gc3RhcnQgYXJndW1lbnRzJyk7Ci0K
LXRlc3QoKCkgPT4gewotCi0gIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBu
ZXcgUmVhZGFibGVTdHJlYW0oeyBjYW5jZWw6ICcyJyB9KSwgJ2NvbnN0cnVjdG9yIHNob3VsZCB0
aHJvdycpOwotCi19LCAnUmVhZGFibGVTdHJlYW0gY29uc3RydWN0b3Igd2lsbCBub3QgdG9sZXJh
dGUgaW5pdGlhbCBnYXJiYWdlIGFzIGNhbmNlbCBhcmd1bWVudCcpOwotCi10ZXN0KCgpID0+IHsK
LQotICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gbmV3IFJlYWRhYmxlU3Ry
ZWFtKHsgcHVsbDogeyB9IH0pLCAnY29uc3RydWN0b3Igc2hvdWxkIHRocm93Jyk7Ci0KLX0sICdS
ZWFkYWJsZVN0cmVhbSBjb25zdHJ1Y3RvciB3aWxsIG5vdCB0b2xlcmF0ZSBpbml0aWFsIGdhcmJh
Z2UgYXMgcHVsbCBhcmd1bWVudCcpOwotCi10ZXN0KCgpID0+IHsKLQotICBsZXQgc3RhcnRDYWxs
ZWQgPSBmYWxzZTsKLQotICBjb25zdCBzb3VyY2UgPSB7Ci0gICAgc3RhcnQoY29udHJvbGxlcikg
ewotICAgICAgYXNzZXJ0X2VxdWFscyh0aGlzLCBzb3VyY2UsICdzb3VyY2UgaXMgdGhpcyBkdXJp
bmcgc3RhcnQnKTsKLQotICAgICAgY29uc3QgbWV0aG9kcyA9IFsnY2xvc2UnLCAnZW5xdWV1ZScs
ICdlcnJvcicsICdjb25zdHJ1Y3RvciddOwotICAgICAgY29uc3QgcHJvcGVydGllcyA9IFsnZGVz
aXJlZFNpemUnXS5jb25jYXQobWV0aG9kcykuc29ydCgpOwotICAgICAgY29uc3QgcHJvdG8gPSBP
YmplY3QuZ2V0UHJvdG90eXBlT2YoY29udHJvbGxlcik7Ci0KLSAgICAgIGFzc2VydF9hcnJheV9l
cXVhbHMoT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMocHJvdG8pLnNvcnQoKSwgcHJvcGVydGll
cywKLSAgICAgICAgJ3RoZSBjb250cm9sbGVyIHNob3VsZCBoYXZlIHRoZSByaWdodCBwcm9wZXJ0
aWVzJyk7Ci0KLSAgICAgIGZvciAoY29uc3QgbSBvZiBtZXRob2RzKSB7Ci0gICAgICAgIGNvbnN0
IHByb3BEZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihwcm90bywgbSk7Ci0g
ICAgICAgIGFzc2VydF9lcXVhbHModHlwZW9mIGNvbnRyb2xsZXJbbV0sICdmdW5jdGlvbicsIGBz
aG91bGQgaGF2ZSBhICR7bX0gbWV0aG9kYCk7Ci0gICAgICAgIGFzc2VydF9mYWxzZShwcm9wRGVz
Yy5lbnVtZXJhYmxlLCBtICsgJyBzaG91bGQgYmUgbm9uLWVudW1lcmFibGUnKTsKLSAgICAgICAg
YXNzZXJ0X3RydWUocHJvcERlc2MuY29uZmlndXJhYmxlLCBtICsgJyBzaG91bGQgYmUgY29uZmln
dXJhYmxlJyk7Ci0gICAgICAgIGFzc2VydF90cnVlKHByb3BEZXNjLndyaXRhYmxlLCBtICsgJyBz
aG91bGQgYmUgd3JpdGFibGUnKTsKLSAgICAgICAgY29uc3QgZXhwZWN0ZWROYW1lID0gbSA9PT0g
J2NvbnN0cnVjdG9yJyA/ICdSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyJyA6IG07Ci0g
ICAgICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlclttXS5uYW1lLCBleHBlY3RlZE5hbWUsICdt
ZXRob2Qgc2hvdWxkIGhhdmUgdGhlIGNvcnJlY3QgbmFtZScpOwotICAgICAgfQotCi0gICAgICBj
b25zdCBkZXNpcmVkU2l6ZVByb3BEZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRv
cihwcm90bywgJ2Rlc2lyZWRTaXplJyk7Ci0gICAgICBhc3NlcnRfZmFsc2UoZGVzaXJlZFNpemVQ
cm9wRGVzYy5lbnVtZXJhYmxlLCAnZGVzaXJlZFNpemUgc2hvdWxkIGJlIG5vbi1lbnVtZXJhYmxl
Jyk7Ci0gICAgICBhc3NlcnRfZXF1YWxzKGRlc2lyZWRTaXplUHJvcERlc2Mud3JpdGFibGUsIHVu
ZGVmaW5lZCwgJ2Rlc2lyZWRTaXplIHNob3VsZCBub3QgYmUgYSBkYXRhIHByb3BlcnR5Jyk7Ci0g
ICAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiBkZXNpcmVkU2l6ZVByb3BEZXNjLmdldCwgJ2Z1bmN0
aW9uJywgJ2Rlc2lyZWRTaXplIHNob3VsZCBoYXZlIGEgZ2V0dGVyJyk7Ci0gICAgICBhc3NlcnRf
ZXF1YWxzKGRlc2lyZWRTaXplUHJvcERlc2Muc2V0LCB1bmRlZmluZWQsICdkZXNpcmVkU2l6ZSBz
aG91bGQgbm90IGhhdmUgYSBzZXR0ZXInKTsKLSAgICAgIGFzc2VydF90cnVlKGRlc2lyZWRTaXpl
UHJvcERlc2MuY29uZmlndXJhYmxlLCAnZGVzaXJlZFNpemUgc2hvdWxkIGJlIGNvbmZpZ3VyYWJs
ZScpOwotCi0gICAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuY2xvc2UubGVuZ3RoLCAwLCAn
Y2xvc2Ugc2hvdWxkIGhhdmUgbm8gcGFyYW1ldGVycycpOwotICAgICAgYXNzZXJ0X2VxdWFscyhj
b250cm9sbGVyLmNvbnN0cnVjdG9yLmxlbmd0aCwgMCwgJ2NvbnN0cnVjdG9yIHNob3VsZCBoYXZl
IG5vIHBhcmFtZXRlcnMnKTsKLSAgICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5lbnF1ZXVl
Lmxlbmd0aCwgMSwgJ2VucXVldWUgc2hvdWxkIGhhdmUgMSBwYXJhbWV0ZXInKTsKLSAgICAgIGFz
c2VydF9lcXVhbHMoY29udHJvbGxlci5lcnJvci5sZW5ndGgsIDEsICdlcnJvciBzaG91bGQgaGF2
ZSAxIHBhcmFtZXRlcicpOwotCi0gICAgICBzdGFydENhbGxlZCA9IHRydWU7Ci0gICAgfQotICB9
OwotCi0gIG5ldyBSZWFkYWJsZVN0cmVhbShzb3VyY2UpOwotICBhc3NlcnRfdHJ1ZShzdGFydENh
bGxlZCk7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbSBzdGFydCBzaG91bGQgYmUgY2FsbGVkIHdpdGgg
dGhlIHByb3BlciBwYXJhbWV0ZXJzJyk7Ci0KLXRlc3QoKCkgPT4gewotCi0gIGxldCBzdGFydENh
bGxlZCA9IGZhbHNlOwotICBjb25zdCBzb3VyY2UgPSB7Ci0gICAgc3RhcnQoY29udHJvbGxlcikg
ewotICAgICAgY29uc3QgcHJvcGVydGllcyA9IFsnY2xvc2UnLCAnY29uc3RydWN0b3InLCAnZGVz
aXJlZFNpemUnLCAnZW5xdWV1ZScsICdlcnJvciddOwotICAgICAgYXNzZXJ0X2FycmF5X2VxdWFs
cyhPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhPYmplY3QuZ2V0UHJvdG90eXBlT2YoY29udHJv
bGxlcikpLnNvcnQoKSwgcHJvcGVydGllcywKLSAgICAgICAgJ3Byb3RvdHlwZSBzaG91bGQgaGF2
ZSB0aGUgcmlnaHQgcHJvcGVydGllcycpOwotCi0gICAgICBjb250cm9sbGVyLnRlc3QgPSAnJzsK
LSAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoT2Jq
ZWN0LmdldFByb3RvdHlwZU9mKGNvbnRyb2xsZXIpKS5zb3J0KCksIHByb3BlcnRpZXMsCi0gICAg
ICAgICdwcm90b3R5cGUgc2hvdWxkIHN0aWxsIGhhdmUgdGhlIHJpZ2h0IHByb3BlcnRpZXMnKTsK
LSAgICAgIGFzc2VydF9ub3RfZXF1YWxzKE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGNvbnRy
b2xsZXIpLmluZGV4T2YoJ3Rlc3QnKSwgLTEsCi0gICAgICAgICcidGVzdCIgc2hvdWxkIGJlIGEg
cHJvcGVydHkgb2YgdGhlIGNvbnRyb2xsZXInKTsKLQotICAgICAgc3RhcnRDYWxsZWQgPSB0cnVl
OwotICAgIH0KLSAgfTsKLQotICBuZXcgUmVhZGFibGVTdHJlYW0oc291cmNlKTsKLSAgYXNzZXJ0
X3RydWUoc3RhcnRDYWxsZWQpOwotCi19LCAnUmVhZGFibGVTdHJlYW0gc3RhcnQgY29udHJvbGxl
ciBwYXJhbWV0ZXIgc2hvdWxkIGJlIGV4dGVuc2libGUnKTsKLQotdGVzdCgoKSA9PiB7Ci0gIChu
ZXcgUmVhZGFibGVTdHJlYW0oKSkuZ2V0UmVhZGVyKHVuZGVmaW5lZCk7Ci0gIChuZXcgUmVhZGFi
bGVTdHJlYW0oKSkuZ2V0UmVhZGVyKHt9KTsKLSAgKG5ldyBSZWFkYWJsZVN0cmVhbSgpKS5nZXRS
ZWFkZXIoeyBtb2RlOiB1bmRlZmluZWQsIG5vdG1vZGU6ICdpZ25vcmVkJyB9KTsKLSAgYXNzZXJ0
X3Rocm93cyhuZXcgUmFuZ2VFcnJvcigpLCAoKSA9PiAobmV3IFJlYWRhYmxlU3RyZWFtKCkpLmdl
dFJlYWRlcih7IG1vZGU6ICdwb3RhdG8nIH0pKTsKLX0sICdkZWZhdWx0IFJlYWRhYmxlU3RyZWFt
IGdldFJlYWRlcigpIHNob3VsZCBvbmx5IGFjY2VwdCBtb2RlOnVuZGVmaW5lZCcpOwotCi1wcm9t
aXNlX3Rlc3QoKCkgPT4gewotCi0gIGZ1bmN0aW9uIFNpbXBsZVN0cmVhbVNvdXJjZSgpIHt9Ci0g
IGxldCByZXNvbHZlOwotICBjb25zdCBwcm9taXNlID0gbmV3IFByb21pc2UociA9PiByZXNvbHZl
ID0gcik7Ci0gIFNpbXBsZVN0cmVhbVNvdXJjZS5wcm90b3R5cGUgPSB7Ci0gICAgc3RhcnQ6IHJl
c29sdmUKLSAgfTsKLQotICBuZXcgUmVhZGFibGVTdHJlYW0obmV3IFNpbXBsZVN0cmVhbVNvdXJj
ZSgpKTsKLSAgcmV0dXJuIHByb21pc2U7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbSBzaG91bGQgYmUg
YWJsZSB0byBjYWxsIHN0YXJ0IG1ldGhvZCB3aXRoaW4gcHJvdG90eXBlIGNoYWluIG9mIGl0cyBz
b3VyY2UnKTsKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLQotICBjb25zdCBycyA9IG5ldyBSZWFk
YWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgcmV0dXJuIGRlbGF5KDUpLnRoZW4o
KCkgPT4gewotICAgICAgICBjLmVucXVldWUoJ2EnKTsKLSAgICAgICAgYy5jbG9zZSgpOwotICAg
ICAgfSk7Ci0gICAgfQotICB9KTsKLQotICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsK
LSAgcmV0dXJuIHJlYWRlci5yZWFkKCkudGhlbihyID0+IHsKLSAgICBhc3NlcnRfb2JqZWN0X2Vx
dWFscyhyLCB7IHZhbHVlOiAnYScsIGRvbmU6IGZhbHNlIH0sICd2YWx1ZSByZWFkIHNob3VsZCBi
ZSB0aGUgb25lIGVucXVldWVkJyk7Ci0gICAgcmV0dXJuIHJlYWRlci5jbG9zZWQ7Ci0gIH0pOwot
Ci19LCAnUmVhZGFibGVTdHJlYW0gc3RhcnQgc2hvdWxkIGJlIGFibGUgdG8gcmV0dXJuIGEgcHJv
bWlzZScpOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotCi0gIGNvbnN0IHRoZUVycm9yID0gbmV3
IEVycm9yKCdyZWplY3RlZCEnKTsKLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewot
ICAgIHN0YXJ0KCkgewotICAgICAgcmV0dXJuIGRlbGF5KDEpLnRoZW4oKCkgPT4gewotICAgICAg
ICB0aHJvdyB0aGVFcnJvcjsKLSAgICAgIH0pOwotICAgIH0KLSAgfSk7Ci0KLSAgcmV0dXJuIHJz
LmdldFJlYWRlcigpLmNsb3NlZC50aGVuKCgpID0+IHsKLSAgICBhc3NlcnRfdW5yZWFjaGVkKCdj
bG9zZWQgcHJvbWlzZSBzaG91bGQgYmUgcmVqZWN0ZWQnKTsKLSAgfSwgZSA9PiB7Ci0gICAgYXNz
ZXJ0X2VxdWFscyhlLCB0aGVFcnJvciwgJ3Byb21pc2Ugc2hvdWxkIGJlIHJlamVjdGVkIHdpdGgg
dGhlIHNhbWUgZXJyb3InKTsKLSAgfSk7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbSBzdGFydCBzaG91
bGQgYmUgYWJsZSB0byByZXR1cm4gYSBwcm9taXNlIGFuZCByZWplY3QgaXQnKTsKLQotcHJvbWlz
ZV90ZXN0KCgpID0+IHsKLQotICBjb25zdCBvYmplY3RzID0gWwotICAgIHsgcG90YXRvOiAnR2l2
ZSBtZSBtb3JlIScgfSwKLSAgICAndGVzdCcsCi0gICAgMQotICBdOwotCi0gIGNvbnN0IHJzID0g
bmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0gICAgICBmb3IgKGNvbnN0IG8g
b2Ygb2JqZWN0cykgewotICAgICAgICBjLmVucXVldWUobyk7Ci0gICAgICB9Ci0gICAgICBjLmNs
b3NlKCk7Ci0gICAgfQotICB9KTsKLQotICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsK
LQotICByZXR1cm4gUHJvbWlzZS5hbGwoW3JlYWRlci5yZWFkKCksIHJlYWRlci5yZWFkKCksIHJl
YWRlci5yZWFkKCksIHJlYWRlci5jbG9zZWRdKS50aGVuKHIgPT4gewotICAgIGFzc2VydF9vYmpl
Y3RfZXF1YWxzKHJbMF0sIHsgdmFsdWU6IG9iamVjdHNbMF0sIGRvbmU6IGZhbHNlIH0sICd2YWx1
ZSByZWFkIHNob3VsZCBiZSB0aGUgb25lIGVucXVldWVkJyk7Ci0gICAgYXNzZXJ0X29iamVjdF9l
cXVhbHMoclsxXSwgeyB2YWx1ZTogb2JqZWN0c1sxXSwgZG9uZTogZmFsc2UgfSwgJ3ZhbHVlIHJl
YWQgc2hvdWxkIGJlIHRoZSBvbmUgZW5xdWV1ZWQnKTsKLSAgICBhc3NlcnRfb2JqZWN0X2VxdWFs
cyhyWzJdLCB7IHZhbHVlOiBvYmplY3RzWzJdLCBkb25lOiBmYWxzZSB9LCAndmFsdWUgcmVhZCBz
aG91bGQgYmUgdGhlIG9uZSBlbnF1ZXVlZCcpOwotICB9KTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFt
IHNob3VsZCBiZSBhYmxlIHRvIGVucXVldWUgZGlmZmVyZW50IG9iamVjdHMuJyk7Ci0KLXByb21p
c2VfdGVzdCgoKSA9PiB7Ci0KLSAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoJ3B1bGwgZmFpbHVy
ZScpOwotICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgcHVsbCgpIHsKLSAg
ICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcik7Ci0gICAgfQotICB9KTsKLQotICBjb25z
dCByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKLQotICBsZXQgY2xvc2VkID0gZmFsc2U7Ci0gIGxl
dCByZWFkID0gZmFsc2U7Ci0KLSAgcmV0dXJuIFByb21pc2UuYWxsKFsKLSAgICByZWFkZXIuY2xv
c2VkLnRoZW4oKCkgPT4gewotICAgICAgYXNzZXJ0X3VucmVhY2hlZCgnY2xvc2VkIHNob3VsZCBi
ZSByZWplY3RlZCcpOwotICAgIH0sIGUgPT4gewotICAgICAgY2xvc2VkID0gdHJ1ZTsKLSAgICAg
IGFzc2VydF90cnVlKHJlYWQpOwotICAgICAgYXNzZXJ0X2VxdWFscyhlLCBlcnJvciwgJ2Nsb3Nl
ZCBzaG91bGQgYmUgcmVqZWN0ZWQgd2l0aCB0aGUgdGhyb3duIGVycm9yJyk7Ci0gICAgfSksCi0g
ICAgcmVhZGVyLnJlYWQoKS50aGVuKCgpID0+IHsKLSAgICAgIGFzc2VydF91bnJlYWNoZWQoJ3Jl
YWQoKSBzaG91bGQgYmUgcmVqZWN0ZWQnKTsKLSAgICB9LCBlID0+IHsKLSAgICAgIHJlYWQgPSB0
cnVlOwotICAgICAgYXNzZXJ0X2ZhbHNlKGNsb3NlZCk7Ci0gICAgICBhc3NlcnRfZXF1YWxzKGUs
IGVycm9yLCAncmVhZCgpIHNob3VsZCBiZSByZWplY3RlZCB3aXRoIHRoZSB0aHJvd24gZXJyb3In
KTsKLSAgICB9KQotICBdKTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtOiBpZiBwdWxsIHJlamVjdHMs
IGl0IHNob3VsZCBlcnJvciB0aGUgc3RyZWFtJyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0K
LSAgbGV0IHB1bGxDb3VudCA9IDA7Ci0gIGNvbnN0IHN0YXJ0UHJvbWlzZSA9IFByb21pc2UucmVz
b2x2ZSgpOwotCi0gIG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoKSB7Ci0gICAgICBy
ZXR1cm4gc3RhcnRQcm9taXNlOwotICAgIH0sCi0gICAgcHVsbCgpIHsKLSAgICAgIHB1bGxDb3Vu
dCsrOwotICAgIH0KLSAgfSk7Ci0KLSAgcmV0dXJuIHN0YXJ0UHJvbWlzZS50aGVuKCgpID0+IHsK
LSAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMSwgJ3B1bGwgc2hvdWxkIGJlIGNhbGxlZCBv
bmNlIHN0YXJ0IGZpbmlzaGVzJyk7Ci0gICAgcmV0dXJuIGRlbGF5KDEwKTsKLSAgfSkudGhlbigo
KSA9PiB7Ci0gICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDEsICdwdWxsIHNob3VsZCBiZSBj
YWxsZWQgZXhhY3RseSBvbmNlJyk7Ci0gIH0pOwotCi19LCAnUmVhZGFibGVTdHJlYW06IHNob3Vs
ZCBvbmx5IGNhbGwgcHVsbCBvbmNlIHVwb24gc3RhcnRpbmcgdGhlIHN0cmVhbScpOwotCi1wcm9t
aXNlX3Rlc3QoKCkgPT4gewotCi0gIGxldCBwdWxsQ291bnQgPSAwOwotICBjb25zdCBzdGFydFBy
b21pc2UgPSBQcm9taXNlLnJlc29sdmUoKTsKLQotICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0
cmVhbSh7Ci0gICAgc3RhcnQoKSB7Ci0gICAgICByZXR1cm4gc3RhcnRQcm9taXNlOwotICAgIH0s
Ci0gICAgcHVsbChjKSB7Ci0gICAgICAvLyBEb24ndCBlbnF1ZXVlIGltbWVkaWF0ZWx5IGFmdGVy
IHN0YXJ0LiBXZSB3YW50IHRoZSBzdHJlYW0gdG8gYmUgZW1wdHkgd2hlbiB3ZSBjYWxsIC5yZWFk
KCkgb24gaXQuCi0gICAgICBpZiAocHVsbENvdW50ID4gMCkgewotICAgICAgICBjLmVucXVldWUo
cHVsbENvdW50KTsKLSAgICAgIH0KLSAgICAgICsrcHVsbENvdW50OwotICAgIH0KLSAgfSk7Ci0K
LSAgcmV0dXJuIHN0YXJ0UHJvbWlzZS50aGVuKCgpID0+IHsKLSAgICBhc3NlcnRfZXF1YWxzKHB1
bGxDb3VudCwgMSwgJ3B1bGwgc2hvdWxkIGJlIGNhbGxlZCBvbmNlIHN0YXJ0IGZpbmlzaGVzJyk7
Ci0gIH0pLnRoZW4oKCkgPT4gewotICAgIGNvbnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcigpOwot
ICAgIGNvbnN0IHJlYWQgPSByZWFkZXIucmVhZCgpOwotICAgIGFzc2VydF9lcXVhbHMocHVsbENv
dW50LCAyLCAncHVsbCBzaG91bGQgYmUgY2FsbGVkIHdoZW4gcmVhZCBpcyBjYWxsZWQnKTsKLSAg
ICByZXR1cm4gcmVhZDsKLSAgfSkudGhlbihyZXN1bHQgPT4gewotICAgIGFzc2VydF9lcXVhbHMo
cHVsbENvdW50LCAzLCAncHVsbCBzaG91bGQgYmUgY2FsbGVkIGFnYWluIGluIHJlYWN0aW9uIHRv
IGNhbGxpbmcgcmVhZCcpOwotICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdCwgeyB2YWx1
ZTogMSwgZG9uZTogZmFsc2UgfSwgJ3RoZSByZXN1bHQgcmVhZCBzaG91bGQgYmUgdGhlIG9uZSBl
bnF1ZXVlZCcpOwotICB9KTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtOiBzaG91bGQgY2FsbCBwdWxs
IHdoZW4gdHJ5aW5nIHRvIHJlYWQgZnJvbSBhIHN0YXJ0ZWQsIGVtcHR5IHN0cmVhbScpOwotCi1w
cm9taXNlX3Rlc3QoKCkgPT4gewotCi0gIGxldCBwdWxsQ291bnQgPSAwOwotICBjb25zdCBzdGFy
dFByb21pc2UgPSBQcm9taXNlLnJlc29sdmUoKTsKLQotICBjb25zdCBycyA9IG5ldyBSZWFkYWJs
ZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgYy5lbnF1ZXVlKCdhJyk7Ci0gICAgICBy
ZXR1cm4gc3RhcnRQcm9taXNlOwotICAgIH0sCi0gICAgcHVsbCgpIHsKLSAgICAgIHB1bGxDb3Vu
dCsrOwotICAgIH0KLSAgfSk7Ci0KLSAgY29uc3QgcmVhZCA9IHJzLmdldFJlYWRlcigpLnJlYWQo
KTsKLSAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDAsICdjYWxsaW5nIHJlYWQoKSBzaG91bGQg
bm90IGNhdXNlIHB1bGwgdG8gYmUgY2FsbGVkIHlldCcpOwotCi0gIHJldHVybiBzdGFydFByb21p
c2UudGhlbigoKSA9PiB7Ci0gICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDEsICdwdWxsIHNo
b3VsZCBiZSBjYWxsZWQgb25jZSBzdGFydCBmaW5pc2hlcycpOwotICAgIHJldHVybiByZWFkOwot
ICB9KS50aGVuKHIgPT4gewotICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHIsIHsgdmFsdWU6ICdh
JywgZG9uZTogZmFsc2UgfSwgJ2ZpcnN0IHJlYWQoKSBzaG91bGQgcmV0dXJuIGZpcnN0IGNodW5r
Jyk7Ci0gICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDEsICdwdWxsIHNob3VsZCBub3QgaGF2
ZSBiZWVuIGNhbGxlZCBhZ2FpbicpOwotICAgIHJldHVybiBkZWxheSgxMCk7Ci0gIH0pLnRoZW4o
KCkgPT4gewotICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAxLCAncHVsbCBzaG91bGQgYmUg
Y2FsbGVkIGV4YWN0bHkgb25jZScpOwotICB9KTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtOiBzaG91
bGQgb25seSBjYWxsIHB1bGwgb25jZSBvbiBhIG5vbi1lbXB0eSBzdHJlYW0gcmVhZCBmcm9tIGJl
Zm9yZSBzdGFydCBmdWxmaWxscycpOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotCi0gIGxldCBw
dWxsQ291bnQgPSAwOwotICBjb25zdCBzdGFydFByb21pc2UgPSBQcm9taXNlLnJlc29sdmUoKTsK
LQotICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAg
ICAgYy5lbnF1ZXVlKCdhJyk7Ci0gICAgICByZXR1cm4gc3RhcnRQcm9taXNlOwotICAgIH0sCi0g
ICAgcHVsbCgpIHsKLSAgICAgIHB1bGxDb3VudCsrOwotICAgIH0KLSAgfSk7Ci0KLSAgcmV0dXJu
IHN0YXJ0UHJvbWlzZS50aGVuKCgpID0+IHsKLSAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwg
MCwgJ3B1bGwgc2hvdWxkIG5vdCBiZSBjYWxsZWQgb25jZSBzdGFydCBmaW5pc2hlcywgc2luY2Ug
dGhlIHF1ZXVlIGlzIGZ1bGwnKTsKLQotICAgIGNvbnN0IHJlYWQgPSBycy5nZXRSZWFkZXIoKS5y
ZWFkKCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDEsICdjYWxsaW5nIHJlYWQoKSBz
aG91bGQgY2F1c2UgcHVsbCB0byBiZSBjYWxsZWQgaW1tZWRpYXRlbHknKTsKLSAgICByZXR1cm4g
cmVhZDsKLSAgfSkudGhlbihyID0+IHsKLSAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyLCB7IHZh
bHVlOiAnYScsIGRvbmU6IGZhbHNlIH0sICdmaXJzdCByZWFkKCkgc2hvdWxkIHJldHVybiBmaXJz
dCBjaHVuaycpOwotICAgIHJldHVybiBkZWxheSgxMCk7Ci0gIH0pLnRoZW4oKCkgPT4gewotICAg
IGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAxLCAncHVsbCBzaG91bGQgYmUgY2FsbGVkIGV4YWN0
bHkgb25jZScpOwotICB9KTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtOiBzaG91bGQgb25seSBjYWxs
IHB1bGwgb25jZSBvbiBhIG5vbi1lbXB0eSBzdHJlYW0gcmVhZCBmcm9tIGFmdGVyIHN0YXJ0IGZ1
bGZpbGxzJyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgbGV0IHB1bGxDb3VudCA9IDA7
Ci0gIGxldCBjb250cm9sbGVyOwotICBjb25zdCBzdGFydFByb21pc2UgPSBQcm9taXNlLnJlc29s
dmUoKTsKLQotICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykg
ewotICAgICAgY29udHJvbGxlciA9IGM7Ci0gICAgICByZXR1cm4gc3RhcnRQcm9taXNlOwotICAg
IH0sCi0gICAgcHVsbCgpIHsKLSAgICAgICsrcHVsbENvdW50OwotICAgIH0KLSAgfSk7Ci0KLSAg
Y29uc3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7Ci0gIHJldHVybiBzdGFydFByb21pc2UudGhl
bigoKSA9PiB7Ci0gICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDEsICdwdWxsIHNob3VsZCBo
YXZlIGJlZW4gY2FsbGVkIG9uY2UgYnkgdGhlIHRpbWUgdGhlIHN0cmVhbSBzdGFydHMnKTsKLQot
ICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYScpOwotICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50
LCAxLCAncHVsbCBzaG91bGQgbm90IGhhdmUgYmVlbiBjYWxsZWQgYWdhaW4gYWZ0ZXIgZW5xdWV1
ZScpOwotCi0gICAgcmV0dXJuIHJlYWRlci5yZWFkKCk7Ci0gIH0pLnRoZW4oKCkgPT4gewotICAg
IGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAyLCAncHVsbCBzaG91bGQgaGF2ZSBiZWVuIGNhbGxl
ZCBhZ2FpbiBhZnRlciByZWFkJyk7Ci0KLSAgICByZXR1cm4gZGVsYXkoMTApOwotICB9KS50aGVu
KCgpID0+IHsKLSAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMiwgJ3B1bGwgc2hvdWxkIGJl
IGNhbGxlZCBleGFjdGx5IHR3aWNlJyk7Ci0gIH0pOwotfSwgJ1JlYWRhYmxlU3RyZWFtOiBzaG91
bGQgY2FsbCBwdWxsIGluIHJlYWN0aW9uIHRvIHJlYWQoKWluZyB0aGUgbGFzdCBjaHVuaywgaWYg
bm90IGRyYWluaW5nJyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgbGV0IHB1bGxDb3Vu
dCA9IDA7Ci0gIGxldCBjb250cm9sbGVyOwotICBjb25zdCBzdGFydFByb21pc2UgPSBQcm9taXNl
LnJlc29sdmUoKTsKLQotICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3Rh
cnQoYykgewotICAgICAgY29udHJvbGxlciA9IGM7Ci0gICAgICByZXR1cm4gc3RhcnRQcm9taXNl
OwotICAgIH0sCi0gICAgcHVsbCgpIHsKLSAgICAgICsrcHVsbENvdW50OwotICAgIH0KLSAgfSk7
Ci0KLSAgY29uc3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7Ci0KLSAgcmV0dXJuIHN0YXJ0UHJv
bWlzZS50aGVuKCgpID0+IHsKLSAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMSwgJ3B1bGwg
c2hvdWxkIGhhdmUgYmVlbiBjYWxsZWQgb25jZSBieSB0aGUgdGltZSB0aGUgc3RyZWFtIHN0YXJ0
cycpOwotCi0gICAgY29udHJvbGxlci5lbnF1ZXVlKCdhJyk7Ci0gICAgYXNzZXJ0X2VxdWFscyhw
dWxsQ291bnQsIDEsICdwdWxsIHNob3VsZCBub3QgaGF2ZSBiZWVuIGNhbGxlZCBhZ2FpbiBhZnRl
ciBlbnF1ZXVlJyk7Ci0KLSAgICBjb250cm9sbGVyLmNsb3NlKCk7Ci0KLSAgICByZXR1cm4gcmVh
ZGVyLnJlYWQoKTsKLSAgfSkudGhlbigoKSA9PiB7Ci0gICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291
bnQsIDEsICdwdWxsIHNob3VsZCBub3QgaGF2ZSBiZWVuIGNhbGxlZCBhIHNlY29uZCB0aW1lIGFm
dGVyIHJlYWQnKTsKLQotICAgIHJldHVybiBkZWxheSgxMCk7Ci0gIH0pLnRoZW4oKCkgPT4gewot
ICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAxLCAncHVsbCBzaG91bGQgYmUgY2FsbGVkIGV4
YWN0bHkgb25jZScpOwotICB9KTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtOiBzaG91bGQgbm90IGNh
bGwgcHVsbCgpIGluIHJlYWN0aW9uIHRvIHJlYWQoKWluZyB0aGUgbGFzdCBjaHVuaywgaWYgZHJh
aW5pbmcnKTsKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLQotICBsZXQgcmVzb2x2ZTsKLSAgbGV0
IHJldHVybmVkUHJvbWlzZTsKLSAgbGV0IHRpbWVzQ2FsbGVkID0gMDsKLSAgY29uc3Qgc3RhcnRQ
cm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKCk7Ci0KLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVT
dHJlYW0oewotICAgIHN0YXJ0KCkgewotICAgICAgcmV0dXJuIHN0YXJ0UHJvbWlzZTsKLSAgICB9
LAotICAgIHB1bGwoYykgewotICAgICAgYy5lbnF1ZXVlKCsrdGltZXNDYWxsZWQpOwotICAgICAg
cmV0dXJuZWRQcm9taXNlID0gbmV3IFByb21pc2UociA9PiByZXNvbHZlID0gcik7Ci0gICAgICBy
ZXR1cm4gcmV0dXJuZWRQcm9taXNlOwotICAgIH0KLSAgfSk7Ci0gIGNvbnN0IHJlYWRlciA9IHJz
LmdldFJlYWRlcigpOwotCi0gIHJldHVybiBzdGFydFByb21pc2UudGhlbigoKSA9PiB7Ci0gICAg
cmV0dXJuIHJlYWRlci5yZWFkKCk7Ci0gIH0pLnRoZW4ocmVzdWx0MSA9PiB7Ci0gICAgYXNzZXJ0
X2VxdWFscyh0aW1lc0NhbGxlZCwgMSwKLSAgICAgICdwdWxsIHNob3VsZCBoYXZlIGJlZW4gY2Fs
bGVkIG9uY2UgYWZ0ZXIgc3RhcnQsIGJ1dCBub3QgeWV0IGhhdmUgYmVlbiBjYWxsZWQgYSBzZWNv
bmQgdGltZScpOwotICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdDEsIHsgdmFsdWU6IDEs
IGRvbmU6IGZhbHNlIH0sICdyZWFkKCkgc2hvdWxkIGZ1bGZpbGwgd2l0aCB0aGUgZW5xdWV1ZWQg
dmFsdWUnKTsKLQotICAgIHJldHVybiBkZWxheSgxMCk7Ci0gIH0pLnRoZW4oKCkgPT4gewotICAg
IGFzc2VydF9lcXVhbHModGltZXNDYWxsZWQsIDEsICdhZnRlciAxMCBtcywgcHVsbCBzaG91bGQg
c3RpbGwgb25seSBoYXZlIGJlZW4gY2FsbGVkIG9uY2UnKTsKLQotICAgIHJlc29sdmUoKTsKLSAg
ICByZXR1cm4gcmV0dXJuZWRQcm9taXNlOwotICB9KS50aGVuKCgpID0+IHsKLSAgICBhc3NlcnRf
ZXF1YWxzKHRpbWVzQ2FsbGVkLCAyLAotICAgICAgJ2FmdGVyIHRoZSBwcm9taXNlIHJldHVybmVk
IGJ5IHB1bGwgaXMgZnVsZmlsbGVkLCBwdWxsIHNob3VsZCBiZSBjYWxsZWQgYSBzZWNvbmQgdGlt
ZScpOwotICB9KTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtOiBzaG91bGQgbm90IGNhbGwgcHVsbCB1
bnRpbCB0aGUgcHJldmlvdXMgcHVsbCBjYWxsXCdzIHByb21pc2UgZnVsZmlsbHMnKTsKLQotcHJv
bWlzZV90ZXN0KCgpID0+IHsKLQotICBsZXQgdGltZXNDYWxsZWQgPSAwOwotICBjb25zdCBzdGFy
dFByb21pc2UgPSBQcm9taXNlLnJlc29sdmUoKTsKLQotICBjb25zdCBycyA9IG5ldyBSZWFkYWJs
ZVN0cmVhbSgKLSAgICB7Ci0gICAgICBzdGFydChjKSB7Ci0gICAgICAgIGMuZW5xdWV1ZSgnYScp
OwotICAgICAgICBjLmVucXVldWUoJ2InKTsKLSAgICAgICAgYy5lbnF1ZXVlKCdjJyk7Ci0gICAg
ICAgIHJldHVybiBzdGFydFByb21pc2U7Ci0gICAgICB9LAotICAgICAgcHVsbCgpIHsKLSAgICAg
ICAgKyt0aW1lc0NhbGxlZDsKLSAgICAgIH0KLSAgICB9LAotICAgIHsKLSAgICAgIHNpemUoKSB7
Ci0gICAgICAgIHJldHVybiAxOwotICAgICAgfSwKLSAgICAgIGhpZ2hXYXRlck1hcms6IEluZmlu
aXR5Ci0gICAgfQotICApOwotICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKLQotICBy
ZXR1cm4gc3RhcnRQcm9taXNlLnRoZW4oKCkgPT4gewotICAgIHJldHVybiByZWFkZXIucmVhZCgp
OwotICB9KS50aGVuKHJlc3VsdDEgPT4gewotICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3Vs
dDEsIHsgdmFsdWU6ICdhJywgZG9uZTogZmFsc2UgfSwgJ2ZpcnN0IGNodW5rIHNob3VsZCBiZSBh
cyBleHBlY3RlZCcpOwotCi0gICAgcmV0dXJuIHJlYWRlci5yZWFkKCk7Ci0gIH0pLnRoZW4ocmVz
dWx0MiA9PiB7Ci0gICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0MiwgeyB2YWx1ZTogJ2In
LCBkb25lOiBmYWxzZSB9LCAnc2Vjb25kIGNodW5rIHNob3VsZCBiZSBhcyBleHBlY3RlZCcpOwot
Ci0gICAgcmV0dXJuIHJlYWRlci5yZWFkKCk7Ci0gIH0pLnRoZW4ocmVzdWx0MyA9PiB7Ci0gICAg
YXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0MywgeyB2YWx1ZTogJ2MnLCBkb25lOiBmYWxzZSB9
LCAndGhpcmQgY2h1bmsgc2hvdWxkIGJlIGFzIGV4cGVjdGVkJyk7Ci0KLSAgICByZXR1cm4gZGVs
YXkoMTApOwotICB9KS50aGVuKCgpID0+IHsKLSAgICAvLyBPbmNlIGZvciBhZnRlciBzdGFydCwg
YW5kIG9uY2UgZm9yIGV2ZXJ5IHJlYWQuCi0gICAgYXNzZXJ0X2VxdWFscyh0aW1lc0NhbGxlZCwg
NCwgJ3B1bGwoKSBzaG91bGQgYmUgY2FsbGVkIGV4YWN0bHkgZm91ciB0aW1lcycpOwotICB9KTsK
LQotfSwgJ1JlYWRhYmxlU3RyZWFtOiBzaG91bGQgcHVsbCBhZnRlciBzdGFydCwgYW5kIGFmdGVy
IGV2ZXJ5IHJlYWQnKTsKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLQotICBsZXQgdGltZXNDYWxs
ZWQgPSAwOwotICBjb25zdCBzdGFydFByb21pc2UgPSBQcm9taXNlLnJlc29sdmUoKTsKLQotICBj
b25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgYy5l
bnF1ZXVlKCdhJyk7Ci0gICAgICBjLmNsb3NlKCk7Ci0gICAgICByZXR1cm4gc3RhcnRQcm9taXNl
OwotICAgIH0sCi0gICAgcHVsbCgpIHsKLSAgICAgICsrdGltZXNDYWxsZWQ7Ci0gICAgfQotICB9
KTsKLQotICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKLSAgcmV0dXJuIHN0YXJ0UHJv
bWlzZS50aGVuKCgpID0+IHsKLSAgICBhc3NlcnRfZXF1YWxzKHRpbWVzQ2FsbGVkLCAwLCAnYWZ0
ZXIgc3RhcnQgZmluaXNoZXMsIHB1bGwgc2hvdWxkIG5vdCBoYXZlIGJlZW4gY2FsbGVkJyk7Ci0K
LSAgICByZXR1cm4gcmVhZGVyLnJlYWQoKTsKLSAgfSkudGhlbigoKSA9PiB7Ci0gICAgYXNzZXJ0
X2VxdWFscyh0aW1lc0NhbGxlZCwgMCwgJ3JlYWRpbmcgc2hvdWxkIG5vdCBoYXZlIHRyaWdnZXJl
ZCBhIHB1bGwgY2FsbCcpOwotCi0gICAgcmV0dXJuIHJlYWRlci5jbG9zZWQ7Ci0gIH0pLnRoZW4o
KCkgPT4gewotICAgIGFzc2VydF9lcXVhbHModGltZXNDYWxsZWQsIDAsICdzdHJlYW0gc2hvdWxk
IGhhdmUgY2xvc2VkIHdpdGggc3RpbGwgbm8gY2FsbHMgdG8gcHVsbCcpOwotICB9KTsKLQotfSwg
J1JlYWRhYmxlU3RyZWFtOiBzaG91bGQgbm90IGNhbGwgcHVsbCBhZnRlciBzdGFydCBpZiB0aGUg
c3RyZWFtIGlzIG5vdyBjbG9zZWQnKTsKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLQotICBsZXQg
dGltZXNDYWxsZWQgPSAwOwotICBsZXQgcmVzb2x2ZTsKLSAgY29uc3QgcmVhZHkgPSBuZXcgUHJv
bWlzZShyID0+IHJlc29sdmUgPSByKTsKLQotICBuZXcgUmVhZGFibGVTdHJlYW0oCi0gICAgewot
ICAgICAgc3RhcnQoKSB7fSwKLSAgICAgIHB1bGwoYykgewotICAgICAgICBjLmVucXVldWUoKyt0
aW1lc0NhbGxlZCk7Ci0KLSAgICAgICAgaWYgKHRpbWVzQ2FsbGVkID09PSA0KSB7Ci0gICAgICAg
ICAgcmVzb2x2ZSgpOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfSwKLSAgICB7Ci0gICAgICBz
aXplKCkgewotICAgICAgICByZXR1cm4gMTsKLSAgICAgIH0sCi0gICAgICBoaWdoV2F0ZXJNYXJr
OiA0Ci0gICAgfQotICApOwotCi0gIHJldHVybiByZWFkeS50aGVuKCgpID0+IHsKLSAgICAvLyBh
ZnRlciBzdGFydDogc2l6ZSA9IDAsIHB1bGwoKQotICAgIC8vIGFmdGVyIGVucXVldWUoMSk6IHNp
emUgPSAxLCBwdWxsKCkKLSAgICAvLyBhZnRlciBlbnF1ZXVlKDIpOiBzaXplID0gMiwgcHVsbCgp
Ci0gICAgLy8gYWZ0ZXIgZW5xdWV1ZSgzKTogc2l6ZSA9IDMsIHB1bGwoKQotICAgIC8vIGFmdGVy
IGVucXVldWUoNCk6IHNpemUgPSA0LCBkbyBub3QgcHVsbAotICAgIGFzc2VydF9lcXVhbHModGlt
ZXNDYWxsZWQsIDQsICdwdWxsKCkgc2hvdWxkIGhhdmUgYmVlbiBjYWxsZWQgZm91ciB0aW1lcycp
OwotICB9KTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtOiBzaG91bGQgY2FsbCBwdWxsIGFmdGVyIGVu
cXVldWVpbmcgZnJvbSBpbnNpZGUgcHVsbCAod2l0aCBubyByZWFkIHJlcXVlc3RzKSwgaWYgc3Ry
YXRlZ3kgYWxsb3dzJyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgbGV0IHB1bGxDYWxs
ZWQgPSBmYWxzZTsKLQotICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgcHVs
bChjKSB7Ci0gICAgICBwdWxsQ2FsbGVkID0gdHJ1ZTsKLSAgICAgIGMuY2xvc2UoKTsKLSAgICB9
Ci0gIH0pOwotCi0gIGNvbnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcigpOwotICByZXR1cm4gcmVh
ZGVyLmNsb3NlZC50aGVuKCgpID0+IHsKLSAgICBhc3NlcnRfdHJ1ZShwdWxsQ2FsbGVkKTsKLSAg
fSk7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbSBwdWxsIHNob3VsZCBiZSBhYmxlIHRvIGNsb3NlIGEg
c3RyZWFtLicpOwotCi1wcm9taXNlX3Rlc3QodCA9PiB7Ci0KLSAgY29uc3QgY29udHJvbGxlckVy
cm9yID0geyBuYW1lOiAnY29udHJvbGxlciBlcnJvcicgfTsKLQotICBjb25zdCBycyA9IG5ldyBS
ZWFkYWJsZVN0cmVhbSh7Ci0gICAgcHVsbChjKSB7Ci0gICAgICBjLmVycm9yKGNvbnRyb2xsZXJF
cnJvcik7Ci0gICAgfQotICB9KTsKLQotICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHQsIGNvbnRy
b2xsZXJFcnJvciwgcnMuZ2V0UmVhZGVyKCkuY2xvc2VkKTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFt
IHB1bGwgc2hvdWxkIGJlIGFibGUgdG8gZXJyb3IgYSBzdHJlYW0uJyk7Ci0KLXByb21pc2VfdGVz
dCh0ID0+IHsKLQotICBjb25zdCBjb250cm9sbGVyRXJyb3IgPSB7IG5hbWU6ICdjb250cm9sbGVy
IGVycm9yJyB9OwotICBjb25zdCB0aHJvd25FcnJvciA9IHsgbmFtZTogJ3Rocm93biBlcnJvcicg
fTsKLQotICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgcHVsbChjKSB7Ci0g
ICAgICBjLmVycm9yKGNvbnRyb2xsZXJFcnJvcik7Ci0gICAgICB0aHJvdyB0aHJvd25FcnJvcjsK
LSAgICB9Ci0gIH0pOwotCi0gIHJldHVybiBwcm9taXNlX3JlamVjdHModCwgY29udHJvbGxlckVy
cm9yLCBycy5nZXRSZWFkZXIoKS5jbG9zZWQpOwotCi19LCAnUmVhZGFibGVTdHJlYW0gcHVsbCBz
aG91bGQgYmUgYWJsZSB0byBlcnJvciBhIHN0cmVhbSBhbmQgdGhyb3cuJyk7Ci0KLXRlc3QoKCkg
PT4gewotCi0gIGxldCBzdGFydENhbGxlZCA9IGZhbHNlOwotCi0gIG5ldyBSZWFkYWJsZVN0cmVh
bSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgYXNzZXJ0X2VxdWFscyhjLmVucXVldWUoJ2EnKSwg
dW5kZWZpbmVkLCAndGhlIGZpcnN0IGVucXVldWUgc2hvdWxkIHJldHVybiB1bmRlZmluZWQnKTsK
LSAgICAgIGMuY2xvc2UoKTsKLQotICAgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCks
ICgpID0+IGMuZW5xdWV1ZSgnYicpLCAnZW5xdWV1ZSBhZnRlciBjbG9zZSBzaG91bGQgdGhyb3cg
YSBUeXBlRXJyb3InKTsKLSAgICAgIHN0YXJ0Q2FsbGVkID0gdHJ1ZTsKLSAgICB9Ci0gIH0pOwot
Ci0gIGFzc2VydF90cnVlKHN0YXJ0Q2FsbGVkKTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtOiBlbnF1
ZXVlIHNob3VsZCB0aHJvdyB3aGVuIHRoZSBzdHJlYW0gaXMgcmVhZGFibGUgYnV0IGRyYWluaW5n
Jyk7Ci0KLXRlc3QoKCkgPT4gewotCi0gIGxldCBzdGFydENhbGxlZCA9IGZhbHNlOwotCi0gIG5l
dyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgYy5jbG9zZSgpOwotCi0g
ICAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gYy5lbnF1ZXVlKCdhJyks
ICdlbnF1ZXVlIGFmdGVyIGNsb3NlIHNob3VsZCB0aHJvdyBhIFR5cGVFcnJvcicpOwotICAgICAg
c3RhcnRDYWxsZWQgPSB0cnVlOwotICAgIH0KLSAgfSk7Ci0KLSAgYXNzZXJ0X3RydWUoc3RhcnRD
YWxsZWQpOwotCi19LCAnUmVhZGFibGVTdHJlYW06IGVucXVldWUgc2hvdWxkIHRocm93IHdoZW4g
dGhlIHN0cmVhbSBpcyBjbG9zZWQnKTsKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLQotICBsZXQg
c3RhcnRDYWxsZWQgPSAwOwotICBsZXQgcHVsbENhbGxlZCA9IDA7Ci0gIGxldCBjYW5jZWxDYWxs
ZWQgPSAwOwotCi0gIC8qIGVzbGludC1kaXNhYmxlIG5vLXVzZS1iZWZvcmUtZGVmaW5lICovCi0g
IGNsYXNzIFNvdXJjZSB7Ci0gICAgc3RhcnQoYykgewotICAgICAgc3RhcnRDYWxsZWQrKzsKLSAg
ICAgIGFzc2VydF9lcXVhbHModGhpcywgdGhlU291cmNlLCAnc3RhcnQoKSBzaG91bGQgYmUgY2Fs
bGVkIHdpdGggdGhlIGNvcnJlY3QgdGhpcycpOwotICAgICAgYy5lbnF1ZXVlKCdhJyk7Ci0gICAg
fQotCi0gICAgcHVsbCgpIHsKLSAgICAgIHB1bGxDYWxsZWQrKzsKLSAgICAgIGFzc2VydF9lcXVh
bHModGhpcywgdGhlU291cmNlLCAncHVsbCgpIHNob3VsZCBiZSBjYWxsZWQgd2l0aCB0aGUgY29y
cmVjdCB0aGlzJyk7Ci0gICAgfQotCi0gICAgY2FuY2VsKCkgewotICAgICAgY2FuY2VsQ2FsbGVk
Kys7Ci0gICAgICBhc3NlcnRfZXF1YWxzKHRoaXMsIHRoZVNvdXJjZSwgJ2NhbmNlbCgpIHNob3Vs
ZCBiZSBjYWxsZWQgd2l0aCB0aGUgY29ycmVjdCB0aGlzJyk7Ci0gICAgfQotICB9Ci0gIC8qIGVz
bGludC1lbmFibGUgbm8tdXNlLWJlZm9yZS1kZWZpbmUgKi8KLQotICBjb25zdCB0aGVTb3VyY2Ug
PSBuZXcgU291cmNlKCk7Ci0gIHRoZVNvdXJjZS5kZWJ1Z05hbWUgPSAndGhlIHNvdXJjZSBvYmpl
Y3QgcGFzc2VkIHRvIHRoZSBjb25zdHJ1Y3Rvcic7IC8vIG1ha2VzIHRlc3QgZmFpbHVyZXMgZWFz
aWVyIHRvIGRpYWdub3NlCi0KLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0odGhlU291
cmNlKTsKLSAgY29uc3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7Ci0KLSAgcmV0dXJuIHJlYWRl
ci5yZWFkKCkudGhlbigoKSA9PiB7Ci0gICAgcmVhZGVyLnJlbGVhc2VMb2NrKCk7Ci0gICAgcnMu
Y2FuY2VsKCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhzdGFydENhbGxlZCwgMSk7Ci0gICAgYXNzZXJ0
X2VxdWFscyhwdWxsQ2FsbGVkLCAxKTsKLSAgICBhc3NlcnRfZXF1YWxzKGNhbmNlbENhbGxlZCwg
MSk7Ci0gICAgcmV0dXJuIHJzLmdldFJlYWRlcigpLmNsb3NlZDsKLSAgfSk7Ci0KLX0sICdSZWFk
YWJsZVN0cmVhbTogc2hvdWxkIGNhbGwgdW5kZXJseWluZyBzb3VyY2UgbWV0aG9kcyBhcyBtZXRo
b2RzJyk7Ci0KLXRlc3QoKCkgPT4gewotICBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0
KGMpIHsKLSAgICAgIGFzc2VydF9lcXVhbHMoYy5kZXNpcmVkU2l6ZSwgMTAsICdkZXNpcmVkU2l6
ZSBtdXN0IHN0YXJ0IGF0IGhpZ2hXYXRlck1hcmsnKTsKLSAgICAgIGMuY2xvc2UoKTsKLSAgICAg
IGFzc2VydF9lcXVhbHMoYy5kZXNpcmVkU2l6ZSwgMCwgJ2FmdGVyIGNsb3NpbmcsIGRlc2lyZWRT
aXplIG11c3QgYmUgMCcpOwotICAgIH0KLSAgfSwgewotICAgIGhpZ2hXYXRlck1hcms6IDEwCi0g
IH0pOwotfSwgJ1JlYWRhYmxlU3RyZWFtOiBkZXNpcmVkU2l6ZSB3aGVuIGNsb3NlZCcpOwotCi10
ZXN0KCgpID0+IHsKLSAgbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0gICAg
ICBhc3NlcnRfZXF1YWxzKGMuZGVzaXJlZFNpemUsIDEwLCAnZGVzaXJlZFNpemUgbXVzdCBzdGFy
dCBhdCBoaWdoV2F0ZXJNYXJrJyk7Ci0gICAgICBjLmVycm9yKCk7Ci0gICAgICBhc3NlcnRfZXF1
YWxzKGMuZGVzaXJlZFNpemUsIG51bGwsICdhZnRlciBlcnJvcmluZywgZGVzaXJlZFNpemUgbXVz
dCBiZSBudWxsJyk7Ci0gICAgfQotICB9LCB7Ci0gICAgaGlnaFdhdGVyTWFyazogMTAKLSAgfSk7
Ci19LCAnUmVhZGFibGVTdHJlYW06IGRlc2lyZWRTaXplIHdoZW4gZXJyb3JlZCcpOwotCi10ZXN0
KCgpID0+IHsKLQotICBsZXQgc3RhcnRDYWxsZWQgPSBmYWxzZTsKLSAgbmV3IFJlYWRhYmxlU3Ry
ZWFtKHsKLSAgICBzdGFydChjKSB7Ci0gICAgICBhc3NlcnRfZXF1YWxzKGMuZGVzaXJlZFNpemUs
IDEpOwotICAgICAgYy5lbnF1ZXVlKCdhJyk7Ci0gICAgICBhc3NlcnRfZXF1YWxzKGMuZGVzaXJl
ZFNpemUsIDApOwotICAgICAgYy5lbnF1ZXVlKCdiJyk7Ci0gICAgICBhc3NlcnRfZXF1YWxzKGMu
ZGVzaXJlZFNpemUsIC0xKTsKLSAgICAgIGMuZW5xdWV1ZSgnYycpOwotICAgICAgYXNzZXJ0X2Vx
dWFscyhjLmRlc2lyZWRTaXplLCAtMik7Ci0gICAgICBjLmVucXVldWUoJ2QnKTsKLSAgICAgIGFz
c2VydF9lcXVhbHMoYy5kZXNpcmVkU2l6ZSwgLTMpOwotICAgICAgYy5lbnF1ZXVlKCdlJyk7Ci0g
ICAgICBzdGFydENhbGxlZCA9IHRydWU7Ci0gICAgfQotICB9KTsKLQotICBhc3NlcnRfdHJ1ZShz
dGFydENhbGxlZCk7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbSBzdHJhdGVnaWVzOiB0aGUgZGVmYXVs
dCBzdHJhdGVneSBzaG91bGQgZ2l2ZSBkZXNpcmVkU2l6ZSBvZiAxIHRvIHN0YXJ0LCBkZWNyZWFz
aW5nIGJ5IDEgcGVyIGVucXVldWUnKTsKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLQotICBsZXQg
Y29udHJvbGxlcjsKLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0
KGMpIHsKLSAgICAgIGNvbnRyb2xsZXIgPSBjOwotICAgIH0KLSAgfSk7Ci0gIGNvbnN0IHJlYWRl
ciA9IHJzLmdldFJlYWRlcigpOwotCi0gIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVk
U2l6ZSwgMSwgJ2Rlc2lyZWRTaXplIHNob3VsZCBzdGFydCBhdCAxJyk7Ci0gIGNvbnRyb2xsZXIu
ZW5xdWV1ZSgnYScpOwotICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDAs
ICdkZXNpcmVkU2l6ZSBzaG91bGQgZGVjcmVhc2UgdG8gMCBhZnRlciBmaXJzdCBlbnF1ZXVlJyk7
Ci0KLSAgcmV0dXJuIHJlYWRlci5yZWFkKCkudGhlbihyZXN1bHQxID0+IHsKLSAgICBhc3NlcnRf
b2JqZWN0X2VxdWFscyhyZXN1bHQxLCB7IHZhbHVlOiAnYScsIGRvbmU6IGZhbHNlIH0sICdmaXJz
dCBjaHVuayByZWFkIHNob3VsZCBiZSBjb3JyZWN0Jyk7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGNv
bnRyb2xsZXIuZGVzaXJlZFNpemUsIDEsICdkZXNpcmVkU2l6ZSBzaG91bGQgZ28gdXAgdG8gMSBh
ZnRlciB0aGUgZmlyc3QgcmVhZCcpOwotICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYicpOwotICAg
IGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMCwgJ2Rlc2lyZWRTaXplIHNo
b3VsZCBnbyBkb3duIHRvIDAgYWZ0ZXIgdGhlIHNlY29uZCBlbnF1ZXVlJyk7Ci0KLSAgICByZXR1
cm4gcmVhZGVyLnJlYWQoKTsKLSAgfSkudGhlbihyZXN1bHQyID0+IHsKLSAgICBhc3NlcnRfb2Jq
ZWN0X2VxdWFscyhyZXN1bHQyLCB7IHZhbHVlOiAnYicsIGRvbmU6IGZhbHNlIH0sICdzZWNvbmQg
Y2h1bmsgcmVhZCBzaG91bGQgYmUgY29ycmVjdCcpOwotCi0gICAgYXNzZXJ0X2VxdWFscyhjb250
cm9sbGVyLmRlc2lyZWRTaXplLCAxLCAnZGVzaXJlZFNpemUgc2hvdWxkIGdvIHVwIHRvIDEgYWZ0
ZXIgdGhlIHNlY29uZCByZWFkJyk7Ci0gICAgY29udHJvbGxlci5lbnF1ZXVlKCdjJyk7Ci0gICAg
YXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAwLCAnZGVzaXJlZFNpemUgc2hv
dWxkIGdvIGRvd24gdG8gMCBhZnRlciB0aGUgdGhpcmQgZW5xdWV1ZScpOwotCi0gICAgcmV0dXJu
IHJlYWRlci5yZWFkKCk7Ci0gIH0pLnRoZW4ocmVzdWx0MyA9PiB7Ci0gICAgYXNzZXJ0X29iamVj
dF9lcXVhbHMocmVzdWx0MywgeyB2YWx1ZTogJ2MnLCBkb25lOiBmYWxzZSB9LCAndGhpcmQgY2h1
bmsgcmVhZCBzaG91bGQgYmUgY29ycmVjdCcpOwotCi0gICAgYXNzZXJ0X2VxdWFscyhjb250cm9s
bGVyLmRlc2lyZWRTaXplLCAxLCAnZGVzaXJlZFNpemUgc2hvdWxkIGdvIHVwIHRvIDEgYWZ0ZXIg
dGhlIHRoaXJkIHJlYWQnKTsKLSAgICBjb250cm9sbGVyLmVucXVldWUoJ2QnKTsKLSAgICBhc3Nl
cnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDAsICdkZXNpcmVkU2l6ZSBzaG91bGQg
Z28gZG93biB0byAwIGFmdGVyIHRoZSBmb3VydGggZW5xdWV1ZScpOwotICB9KTsKLQotfSwgJ1Jl
YWRhYmxlU3RyZWFtIHN0cmF0ZWdpZXM6IHRoZSBkZWZhdWx0IHN0cmF0ZWd5IHNob3VsZCBjb250
aW51ZSBnaXZpbmcgZGVzaXJlZFNpemUgb2YgMSBpZiB0aGUgY2h1bmtzIGFyZSByZWFkIGltbWVk
aWF0ZWx5Jyk7Ci0KLXByb21pc2VfdGVzdCh0ID0+IHsKLQotICBjb25zdCByYW5kb21Tb3VyY2Ug
PSBuZXcgUmFuZG9tUHVzaFNvdXJjZSg4KTsKLQotICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0
cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgYywgJ29i
amVjdCcsICdjIHNob3VsZCBiZSBhbiBvYmplY3QgaW4gc3RhcnQnKTsKLSAgICAgIGFzc2VydF9l
cXVhbHModHlwZW9mIGMuZW5xdWV1ZSwgJ2Z1bmN0aW9uJywgJ2VucXVldWUgc2hvdWxkIGJlIGEg
ZnVuY3Rpb24gaW4gc3RhcnQnKTsKLSAgICAgIGFzc2VydF9lcXVhbHModHlwZW9mIGMuY2xvc2Us
ICdmdW5jdGlvbicsICdjbG9zZSBzaG91bGQgYmUgYSBmdW5jdGlvbiBpbiBzdGFydCcpOwotICAg
ICAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgYy5lcnJvciwgJ2Z1bmN0aW9uJywgJ2Vycm9yIHNob3Vs
ZCBiZSBhIGZ1bmN0aW9uIGluIHN0YXJ0Jyk7Ci0KLSAgICAgIHJhbmRvbVNvdXJjZS5vbmRhdGEg
PSB0LnN0ZXBfZnVuYyhjaHVuayA9PiB7Ci0gICAgICAgIGlmICghYy5lbnF1ZXVlKGNodW5rKSA8
PSAwKSB7Ci0gICAgICAgICAgcmFuZG9tU291cmNlLnJlYWRTdG9wKCk7Ci0gICAgICAgIH0KLSAg
ICAgIH0pOwotCi0gICAgICByYW5kb21Tb3VyY2Uub25lbmQgPSBjLmNsb3NlLmJpbmQoYyk7Ci0g
ICAgICByYW5kb21Tb3VyY2Uub25lcnJvciA9IGMuZXJyb3IuYmluZChjKTsKLSAgICB9LAotCi0g
ICAgcHVsbChjKSB7Ci0gICAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiBjLCAnb2JqZWN0JywgJ2Mg
c2hvdWxkIGJlIGFuIG9iamVjdCBpbiBwdWxsJyk7Ci0gICAgICBhc3NlcnRfZXF1YWxzKHR5cGVv
ZiBjLmVucXVldWUsICdmdW5jdGlvbicsICdlbnF1ZXVlIHNob3VsZCBiZSBhIGZ1bmN0aW9uIGlu
IHB1bGwnKTsKLSAgICAgIGFzc2VydF9lcXVhbHModHlwZW9mIGMuY2xvc2UsICdmdW5jdGlvbics
ICdjbG9zZSBzaG91bGQgYmUgYSBmdW5jdGlvbiBpbiBwdWxsJyk7Ci0KLSAgICAgIHJhbmRvbVNv
dXJjZS5yZWFkU3RhcnQoKTsKLSAgICB9Ci0gIH0pOwotCi0gIHJldHVybiByZWFkYWJsZVN0cmVh
bVRvQXJyYXkocnMpLnRoZW4oY2h1bmtzID0+IHsKLSAgICBhc3NlcnRfZXF1YWxzKGNodW5rcy5s
ZW5ndGgsIDgsICc4IGNodW5rcyBzaG91bGQgYmUgcmVhZCcpOwotICAgIGZvciAoY29uc3QgY2h1
bmsgb2YgY2h1bmtzKSB7Ci0gICAgICBhc3NlcnRfZXF1YWxzKGNodW5rLmxlbmd0aCwgMTI4LCAn
Y2h1bmsgc2hvdWxkIGhhdmUgMTI4IGJ5dGVzJyk7Ci0gICAgfQotICB9KTsKLQotfSwgJ1JlYWRh
YmxlU3RyZWFtIGludGVncmF0aW9uIHRlc3Q6IGFkYXB0aW5nIGEgcmFuZG9tIHB1c2ggc291cmNl
Jyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgY29uc3QgcnMgPSBzZXF1ZW50aWFsUmVh
ZGFibGVTdHJlYW0oMTApOwotCi0gIHJldHVybiByZWFkYWJsZVN0cmVhbVRvQXJyYXkocnMpLnRo
ZW4oY2h1bmtzID0+IHsKLSAgICBhc3NlcnRfdHJ1ZShycy5zb3VyY2UuY2xvc2VkLCAnc291cmNl
IHNob3VsZCBiZSBjbG9zZWQgYWZ0ZXIgYWxsIGNodW5rcyBhcmUgcmVhZCcpOwotICAgIGFzc2Vy
dF9hcnJheV9lcXVhbHMoY2h1bmtzLCBbMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTBdLCAn
dGhlIGV4cGVjdGVkIDEwIGNodW5rcyBzaG91bGQgYmUgcmVhZCcpOwotICB9KTsKLQotfSwgJ1Jl
YWRhYmxlU3RyZWFtIGludGVncmF0aW9uIHRlc3Q6IGFkYXB0aW5nIGEgc3luYyBwdWxsIHNvdXJj
ZScpOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotCi0gIGNvbnN0IHJzID0gc2VxdWVudGlhbFJl
YWRhYmxlU3RyZWFtKDEwLCB7IGFzeW5jOiB0cnVlIH0pOwotCi0gIHJldHVybiByZWFkYWJsZVN0
cmVhbVRvQXJyYXkocnMpLnRoZW4oY2h1bmtzID0+IHsKLSAgICBhc3NlcnRfdHJ1ZShycy5zb3Vy
Y2UuY2xvc2VkLCAnc291cmNlIHNob3VsZCBiZSBjbG9zZWQgYWZ0ZXIgYWxsIGNodW5rcyBhcmUg
cmVhZCcpOwotICAgIGFzc2VydF9hcnJheV9lcXVhbHMoY2h1bmtzLCBbMSwgMiwgMywgNCwgNSwg
NiwgNywgOCwgOSwgMTBdLCAndGhlIGV4cGVjdGVkIDEwIGNodW5rcyBzaG91bGQgYmUgcmVhZCcp
OwotICB9KTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtIGludGVncmF0aW9uIHRlc3Q6IGFkYXB0aW5n
IGFuIGFzeW5jIHB1bGwgc291cmNlJyk7Ci0KLWRvbmUoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJl
YW1zL2dlbmVyYWwuc2VydmljZXdvcmtlci5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFt
cy9nZW5lcmFsLnNlcnZpY2V3b3JrZXIuaHR0cHMtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBlODdiOGExY2NjNTk5YjA3NGU2MmZlODY0ZjA2MDZkYzU1NjIzMGRh
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJl
YW1zL2dlbmVyYWwuc2VydmljZXdvcmtlci5odHRwcy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVs
bApAQCAtMSw0MSArMCwwIEBACi0KLVBBU1MgU2VydmljZSB3b3JrZXIgdGVzdCBzZXR1cCAKLVBB
U1MgUmVhZGFibGVTdHJlYW0gY2FuIGJlIGNvbnN0cnVjdGVkIHdpdGggbm8gZXJyb3JzIAotUEFT
UyBSZWFkYWJsZVN0cmVhbSBjYW4ndCBiZSBjb25zdHJ1Y3RlZCB3aXRoIGdhcmJhZ2UgCi1QQVNT
IFJlYWRhYmxlU3RyZWFtIGNhbid0IGJlIGNvbnN0cnVjdGVkIHdpdGggYW4gaW52YWxpZCB0eXBl
IAotRkFJTCBSZWFkYWJsZVN0cmVhbSBpbnN0YW5jZXMgc2hvdWxkIGhhdmUgdGhlIGNvcnJlY3Qg
bGlzdCBvZiBwcm9wZXJ0aWVzIGFzc2VydF9lcXVhbHM6IGdldFJlYWRlciBzaG91bGQgaGF2ZSBu
byBwYXJhbWV0ZXJzIGV4cGVjdGVkIDAgYnV0IGdvdCAxCi1QQVNTIFJlYWRhYmxlU3RyZWFtIGNv
bnN0cnVjdG9yIHNob3VsZCB0aHJvdyBmb3Igbm9uLWZ1bmN0aW9uIHN0YXJ0IGFyZ3VtZW50cyAK
LUZBSUwgUmVhZGFibGVTdHJlYW0gY29uc3RydWN0b3Igd2lsbCBub3QgdG9sZXJhdGUgaW5pdGlh
bCBnYXJiYWdlIGFzIGNhbmNlbCBhcmd1bWVudCBhc3NlcnRfdGhyb3dzOiBjb25zdHJ1Y3RvciBz
aG91bGQgdGhyb3cgZnVuY3Rpb24gIigpID0+IG5ldyBSZWFkYWJsZVN0cmVhbSh7IGNhbmNlbDog
JzInIH0pIiBkaWQgbm90IHRocm93Ci1GQUlMIFJlYWRhYmxlU3RyZWFtIGNvbnN0cnVjdG9yIHdp
bGwgbm90IHRvbGVyYXRlIGluaXRpYWwgZ2FyYmFnZSBhcyBwdWxsIGFyZ3VtZW50IGFzc2VydF90
aHJvd3M6IGNvbnN0cnVjdG9yIHNob3VsZCB0aHJvdyBmdW5jdGlvbiAiKCkgPT4gbmV3IFJlYWRh
YmxlU3RyZWFtKHsgcHVsbDogeyB9IH0pIiBkaWQgbm90IHRocm93Ci1GQUlMIFJlYWRhYmxlU3Ry
ZWFtIHN0YXJ0IHNob3VsZCBiZSBjYWxsZWQgd2l0aCB0aGUgcHJvcGVyIHBhcmFtZXRlcnMgYXNz
ZXJ0X2VxdWFsczogY29uc3RydWN0b3Igc2hvdWxkIGhhdmUgbm8gcGFyYW1ldGVycyBleHBlY3Rl
ZCAwIGJ1dCBnb3QgNAotUEFTUyBSZWFkYWJsZVN0cmVhbSBzdGFydCBjb250cm9sbGVyIHBhcmFt
ZXRlciBzaG91bGQgYmUgZXh0ZW5zaWJsZSAKLVBBU1MgZGVmYXVsdCBSZWFkYWJsZVN0cmVhbSBn
ZXRSZWFkZXIoKSBzaG91bGQgb25seSBhY2NlcHQgbW9kZTp1bmRlZmluZWQgCi1QQVNTIFJlYWRh
YmxlU3RyZWFtIHNob3VsZCBiZSBhYmxlIHRvIGNhbGwgc3RhcnQgbWV0aG9kIHdpdGhpbiBwcm90
b3R5cGUgY2hhaW4gb2YgaXRzIHNvdXJjZSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gc3RhcnQgc2hv
dWxkIGJlIGFibGUgdG8gcmV0dXJuIGEgcHJvbWlzZSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gc3Rh
cnQgc2hvdWxkIGJlIGFibGUgdG8gcmV0dXJuIGEgcHJvbWlzZSBhbmQgcmVqZWN0IGl0IAotUEFT
UyBSZWFkYWJsZVN0cmVhbSBzaG91bGQgYmUgYWJsZSB0byBlbnF1ZXVlIGRpZmZlcmVudCBvYmpl
Y3RzLiAKLVBBU1MgUmVhZGFibGVTdHJlYW06IGlmIHB1bGwgcmVqZWN0cywgaXQgc2hvdWxkIGVy
cm9yIHRoZSBzdHJlYW0gCi1QQVNTIFJlYWRhYmxlU3RyZWFtOiBzaG91bGQgb25seSBjYWxsIHB1
bGwgb25jZSB1cG9uIHN0YXJ0aW5nIHRoZSBzdHJlYW0gCi1QQVNTIFJlYWRhYmxlU3RyZWFtOiBz
aG91bGQgY2FsbCBwdWxsIHdoZW4gdHJ5aW5nIHRvIHJlYWQgZnJvbSBhIHN0YXJ0ZWQsIGVtcHR5
IHN0cmVhbSAKLVBBU1MgUmVhZGFibGVTdHJlYW06IHNob3VsZCBvbmx5IGNhbGwgcHVsbCBvbmNl
IG9uIGEgbm9uLWVtcHR5IHN0cmVhbSByZWFkIGZyb20gYmVmb3JlIHN0YXJ0IGZ1bGZpbGxzIAot
UEFTUyBSZWFkYWJsZVN0cmVhbTogc2hvdWxkIG9ubHkgY2FsbCBwdWxsIG9uY2Ugb24gYSBub24t
ZW1wdHkgc3RyZWFtIHJlYWQgZnJvbSBhZnRlciBzdGFydCBmdWxmaWxscyAKLVBBU1MgUmVhZGFi
bGVTdHJlYW06IHNob3VsZCBjYWxsIHB1bGwgaW4gcmVhY3Rpb24gdG8gcmVhZCgpaW5nIHRoZSBs
YXN0IGNodW5rLCBpZiBub3QgZHJhaW5pbmcgCi1QQVNTIFJlYWRhYmxlU3RyZWFtOiBzaG91bGQg
bm90IGNhbGwgcHVsbCgpIGluIHJlYWN0aW9uIHRvIHJlYWQoKWluZyB0aGUgbGFzdCBjaHVuaywg
aWYgZHJhaW5pbmcgCi1QQVNTIFJlYWRhYmxlU3RyZWFtOiBzaG91bGQgbm90IGNhbGwgcHVsbCB1
bnRpbCB0aGUgcHJldmlvdXMgcHVsbCBjYWxsJ3MgcHJvbWlzZSBmdWxmaWxscyAKLVBBU1MgUmVh
ZGFibGVTdHJlYW06IHNob3VsZCBwdWxsIGFmdGVyIHN0YXJ0LCBhbmQgYWZ0ZXIgZXZlcnkgcmVh
ZCAKLVBBU1MgUmVhZGFibGVTdHJlYW06IHNob3VsZCBub3QgY2FsbCBwdWxsIGFmdGVyIHN0YXJ0
IGlmIHRoZSBzdHJlYW0gaXMgbm93IGNsb3NlZCAKLVBBU1MgUmVhZGFibGVTdHJlYW06IHNob3Vs
ZCBjYWxsIHB1bGwgYWZ0ZXIgZW5xdWV1ZWluZyBmcm9tIGluc2lkZSBwdWxsICh3aXRoIG5vIHJl
YWQgcmVxdWVzdHMpLCBpZiBzdHJhdGVneSBhbGxvd3MgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIHB1
bGwgc2hvdWxkIGJlIGFibGUgdG8gY2xvc2UgYSBzdHJlYW0uIAotUEFTUyBSZWFkYWJsZVN0cmVh
bSBwdWxsIHNob3VsZCBiZSBhYmxlIHRvIGVycm9yIGEgc3RyZWFtLiAKLVBBU1MgUmVhZGFibGVT
dHJlYW0gcHVsbCBzaG91bGQgYmUgYWJsZSB0byBlcnJvciBhIHN0cmVhbSBhbmQgdGhyb3cuIAot
UEFTUyBSZWFkYWJsZVN0cmVhbTogZW5xdWV1ZSBzaG91bGQgdGhyb3cgd2hlbiB0aGUgc3RyZWFt
IGlzIHJlYWRhYmxlIGJ1dCBkcmFpbmluZyAKLVBBU1MgUmVhZGFibGVTdHJlYW06IGVucXVldWUg
c2hvdWxkIHRocm93IHdoZW4gdGhlIHN0cmVhbSBpcyBjbG9zZWQgCi1QQVNTIFJlYWRhYmxlU3Ry
ZWFtOiBzaG91bGQgY2FsbCB1bmRlcmx5aW5nIHNvdXJjZSBtZXRob2RzIGFzIG1ldGhvZHMgCi1Q
QVNTIFJlYWRhYmxlU3RyZWFtOiBkZXNpcmVkU2l6ZSB3aGVuIGNsb3NlZCAKLVBBU1MgUmVhZGFi
bGVTdHJlYW06IGRlc2lyZWRTaXplIHdoZW4gZXJyb3JlZCAKLVBBU1MgUmVhZGFibGVTdHJlYW0g
c3RyYXRlZ2llczogdGhlIGRlZmF1bHQgc3RyYXRlZ3kgc2hvdWxkIGdpdmUgZGVzaXJlZFNpemUg
b2YgMSB0byBzdGFydCwgZGVjcmVhc2luZyBieSAxIHBlciBlbnF1ZXVlIAotUEFTUyBSZWFkYWJs
ZVN0cmVhbSBzdHJhdGVnaWVzOiB0aGUgZGVmYXVsdCBzdHJhdGVneSBzaG91bGQgY29udGludWUg
Z2l2aW5nIGRlc2lyZWRTaXplIG9mIDEgaWYgdGhlIGNodW5rcyBhcmUgcmVhZCBpbW1lZGlhdGVs
eSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gaW50ZWdyYXRpb24gdGVzdDogYWRhcHRpbmcgYSByYW5k
b20gcHVzaCBzb3VyY2UgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIGludGVncmF0aW9uIHRlc3Q6IGFk
YXB0aW5nIGEgc3luYyBwdWxsIHNvdXJjZSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gaW50ZWdyYXRp
b24gdGVzdDogYWRhcHRpbmcgYW4gYXN5bmMgcHVsbCBzb3VyY2UgCi0KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJs
ZS1zdHJlYW1zL2dlbmVyYWwuc2VydmljZXdvcmtlci5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMv
Z2VuZXJhbC5zZXJ2aWNld29ya2VyLmh0dHBzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGQxZGU3YzM0MmMwM2Q2ODYxZTUzYmZiNzM1ZWRiNDI0OWZkY2ZjNzIuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZ2VuZXJh
bC5zZXJ2aWNld29ya2VyLmh0dHBzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBA
Ci08IURPQ1RZUEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTx0aXRsZT5nZW5lcmFs
LmpzIHNlcnZpY2Ugd29ya2VyIHdyYXBwZXIgZmlsZTwvdGl0bGU+Ci0KLTxzY3JpcHQgc3JjPSIv
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvc2Vydmlj
ZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL3Jlc291cmNlcy90ZXN0LWhlbHBlcnMuc3ViLmpzIj48
L3NjcmlwdD4KLQotPHNjcmlwdD4KLSd1c2Ugc3RyaWN0JzsKLXNlcnZpY2Vfd29ya2VyX3Rlc3Qo
J2dlbmVyYWwuanMnLCAnU2VydmljZSB3b3JrZXIgdGVzdCBzZXR1cCcpOwotPC9zY3JpcHQ+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9nZW5lcmFsLnNoYXJlZHdvcmtlci1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVh
ZGFibGUtc3RyZWFtcy9nZW5lcmFsLnNoYXJlZHdvcmtlci1leHBlY3RlZC50eHQKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA5ZDVkMjUwOWQ3ODQ3ZThjZDZmZTY2MDZhYTYwY2RkMzNh
YTQ3NGUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxl
LXN0cmVhbXMvZ2VuZXJhbC5zaGFyZWR3b3JrZXItZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwK
QEAgLTEsNSArMCwwIEBACi1DT05TT0xFIE1FU1NBR0U6IFJlZmVyZW5jZUVycm9yOiBDYW4ndCBm
aW5kIHZhcmlhYmxlOiBTaGFyZWRXb3JrZXIKLQotSGFybmVzcyBFcnJvciAoRkFJTCksIG1lc3Nh
Z2UgPSBSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogU2hhcmVkV29ya2VyCi0K
LQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZ2VuZXJhbC5zaGFyZWR3b3JrZXIuaHRtbCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJs
ZS1zdHJlYW1zL2dlbmVyYWwuc2hhcmVkd29ya2VyLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGRjZWVhOGFjOGI5ZjAwYzlkMGNjYTM3YmYxMzdiZTQ1M2U3MTQ1MTEuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZ2Vu
ZXJhbC5zaGFyZWR3b3JrZXIuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLTwh
RE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHRpdGxlPmdlbmVyYWwuanMg
c2hhcmVkIHdvcmtlciB3cmFwcGVyIGZpbGU8L3RpdGxlPgotCi08c2NyaXB0IHNyYz0iL3Jlc291
cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90
ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci0KLTxzY3JpcHQ+Ci0ndXNlIHN0cmljdCc7
Ci1mZXRjaF90ZXN0c19mcm9tX3dvcmtlcihuZXcgU2hhcmVkV29ya2VyKCdnZW5lcmFsLmpzJykp
OwotPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9wYXRjaGVkLWdsb2JhbC5hbnkt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvcGF0Y2hlZC1nbG9iYWwuYW55LWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5kZjA3NTYyMGJiZTUzNGFmMDBjOGIzMDIzZWEzYzU4MzI5ZGZlMTBlCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvcGF0Y2hlZC1nbG9iYWwuYW55LWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDcgQEAKKworUEFTUyBSZWFkYWJsZVN0cmVhbSB0ZWUoKSBzaG91bGQg
bm90IHRvdWNoIE9iamVjdC5wcm90b3R5cGUgcHJvcGVydGllcyAKK1BBU1MgUmVhZGFibGVTdHJl
YW0gdGVlKCkgc2hvdWxkIG5vdCBjYWxsIHRoZSBnbG9iYWwgUmVhZGFibGVTdHJlYW0gCitGQUlM
IFJlYWRhYmxlU3RyZWFtIGFzeW5jIGl0ZXJhdG9yIHNob3VsZCB1c2UgdGhlIG9yaWdpbmFsIHZh
bHVlcyBvZiBnZXRSZWFkZXIoKSBhbmQgUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyIG1ldGhv
ZHMgcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAi
VHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90IGEgZnVuY3Rpb24gKG5lYXIgJy4uLmNodW5rIG9m
IHJzLi4uJykiCitQQVNTIHRlZSgpIHNob3VsZCBub3QgY2FsbCBQcm9taXNlLnByb3RvdHlwZS50
aGVuKCkgCitQQVNTIHBpcGVUbygpIHNob3VsZCBub3QgY2FsbCBQcm9taXNlLnByb3RvdHlwZS50
aGVuKCkgCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3BhdGNoZWQtZ2xvYmFsLmFueS5odG1s
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3Jl
YWRhYmxlLXN0cmVhbXMvcGF0Y2hlZC1nbG9iYWwuYW55Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjM4Mjkx
MzUyOGU2OTNiM2E1ZDU2YzY2MGE0NTA2MDk4MGI1NDhjMwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJs
ZS1zdHJlYW1zL3BhdGNoZWQtZ2xvYmFsLmFueS5odG1sCkBAIC0wLDAgKzEgQEAKKzwhLS0gVGhp
cyBmaWxlIGlzIHJlcXVpcmVkIGZvciBXZWJLaXQgdGVzdCBpbmZyYXN0cnVjdHVyZSB0byBydW4g
dGhlIHRlbXBsYXRlZCB0ZXN0IC0tPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy9yZWFkYWJsZS1zdHJlYW1zL3BhdGNoZWQtZ2xvYmFsLmFueS5qcyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3Bh
dGNoZWQtZ2xvYmFsLmFueS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NzZhMzlmNjc3N2UyYjQ5NzBlYWVjNzRi
ODhlNmVlN2Y4MmQzYjcwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvcGF0Y2hlZC1n
bG9iYWwuYW55LmpzCkBAIC0wLDAgKzEsMTQyIEBACisvLyBNRVRBOiBnbG9iYWw9d2luZG93LHdv
cmtlcixqc3NoZWxsCisndXNlIHN0cmljdCc7CisKKy8vIFRlc3RzIHdoaWNoIHBhdGNoIHRoZSBn
bG9iYWwgZW52aXJvbm1lbnQgYXJlIGtlcHQgc2VwYXJhdGUgdG8gYXZvaWQKKy8vIGludGVyZmVy
aW5nIHdpdGggb3RoZXIgdGVzdHMuCisKK2NvbnN0IFJlYWRhYmxlU3RyZWFtX3Byb3RvdHlwZV9s
b2NrZWRfZ2V0ID0KKyAgICAgIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoUmVhZGFi
bGVTdHJlYW0ucHJvdG90eXBlLCAnbG9ja2VkJykuZ2V0OworCisvLyBWZXJpZnkgdGhhdCB8cnN8
IHBhc3NlcyB0aGUgYnJhbmQgY2hlY2sgYXMgYSByZWFkYWJsZSBzdHJlYW0uCitmdW5jdGlvbiBp
c1JlYWRhYmxlU3RyZWFtKHJzKSB7CisgIHRyeSB7CisgICAgUmVhZGFibGVTdHJlYW1fcHJvdG90
eXBlX2xvY2tlZF9nZXQuY2FsbChycyk7CisgICAgcmV0dXJuIHRydWU7CisgIH0gY2F0Y2ggKGUp
IHsKKyAgICByZXR1cm4gZmFsc2U7CisgIH0KK30KKwordGVzdCh0ID0+IHsKKyAgY29uc3QgcnMg
PSBuZXcgUmVhZGFibGVTdHJlYW0oKTsKKworICBjb25zdCB0cmFwcGVkUHJvcGVydGllcyA9IFsn
aGlnaFdhdGVyTWFyaycsICdzaXplJywgJ3N0YXJ0JywgJ3R5cGUnLCAnbW9kZSddOworICBmb3Ig
KGNvbnN0IHByb3BlcnR5IG9mIHRyYXBwZWRQcm9wZXJ0aWVzKSB7CisgICAgLy8gZXNsaW50LWRp
c2FibGUtbmV4dC1saW5lIG5vLWV4dGVuZC1uYXRpdmUsIGFjY2Vzc29yLXBhaXJzCisgICAgT2Jq
ZWN0LmRlZmluZVByb3BlcnR5KE9iamVjdC5wcm90b3R5cGUsIHByb3BlcnR5LCB7CisgICAgICBn
ZXQoKSB7IHRocm93IG5ldyBFcnJvcihgJHtwcm9wZXJ0eX0gZ2V0dGVyIGNhbGxlZGApOyB9LAor
ICAgICAgY29uZmlndXJhYmxlOiB0cnVlCisgICAgfSk7CisgIH0KKyAgdC5hZGRfY2xlYW51cCgo
KSA9PiB7CisgICAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiB0cmFwcGVkUHJvcGVydGllcykgewor
ICAgICAgZGVsZXRlIE9iamVjdC5wcm90b3R5cGVbcHJvcGVydHldOworICAgIH0KKyAgfSk7CisK
KyAgY29uc3QgW2JyYW5jaDEsIGJyYW5jaDJdID0gcnMudGVlKCk7CisgIGFzc2VydF90cnVlKGlz
UmVhZGFibGVTdHJlYW0oYnJhbmNoMSksICdicmFuY2gxIHNob3VsZCBiZSBhIFJlYWRhYmxlU3Ry
ZWFtJyk7CisgIGFzc2VydF90cnVlKGlzUmVhZGFibGVTdHJlYW0oYnJhbmNoMiksICdicmFuY2gy
IHNob3VsZCBiZSBhIFJlYWRhYmxlU3RyZWFtJyk7Cit9LCAnUmVhZGFibGVTdHJlYW0gdGVlKCkg
c2hvdWxkIG5vdCB0b3VjaCBPYmplY3QucHJvdG90eXBlIHByb3BlcnRpZXMnKTsKKwordGVzdCh0
ID0+IHsKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oKTsKKworICBjb25zdCBvbGRS
ZWFkYWJsZVN0cmVhbSA9IHNlbGYuUmVhZGFibGVTdHJlYW07CisKKyAgc2VsZi5SZWFkYWJsZVN0
cmVhbSA9IGZ1bmN0aW9uKCkgeworICAgIHRocm93IG5ldyBFcnJvcignUmVhZGFibGVTdHJlYW0g
Y2FsbGVkIG9uIGdsb2JhbCBvYmplY3QnKTsKKyAgfTsKKworICB0LmFkZF9jbGVhbnVwKCgpID0+
IHsKKyAgICBzZWxmLlJlYWRhYmxlU3RyZWFtID0gb2xkUmVhZGFibGVTdHJlYW07CisgIH0pOwor
CisgIGNvbnN0IFticmFuY2gxLCBicmFuY2gyXSA9IHJzLnRlZSgpOworCisgIGFzc2VydF90cnVl
KGlzUmVhZGFibGVTdHJlYW0oYnJhbmNoMSksICdicmFuY2gxIHNob3VsZCBiZSBhIFJlYWRhYmxl
U3RyZWFtJyk7CisgIGFzc2VydF90cnVlKGlzUmVhZGFibGVTdHJlYW0oYnJhbmNoMiksICdicmFu
Y2gyIHNob3VsZCBiZSBhIFJlYWRhYmxlU3RyZWFtJyk7Cit9LCAnUmVhZGFibGVTdHJlYW0gdGVl
KCkgc2hvdWxkIG5vdCBjYWxsIHRoZSBnbG9iYWwgUmVhZGFibGVTdHJlYW0nKTsKKworcHJvbWlz
ZV90ZXN0KGFzeW5jIHQgPT4geworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Cisg
ICAgc3RhcnQoYykgeworICAgICAgYy5lbnF1ZXVlKDEpOworICAgICAgYy5lbnF1ZXVlKDIpOwor
ICAgICAgYy5lbnF1ZXVlKDMpOworICAgICAgYy5jbG9zZSgpOworICAgIH0KKyAgfSk7CisKKyAg
Y29uc3Qgb2xkUmVhZGFibGVTdHJlYW1HZXRSZWFkZXIgPSBSZWFkYWJsZVN0cmVhbS5wcm90b3R5
cGUuZ2V0UmVhZGVyOworCisgIGNvbnN0IFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlciA9IChu
ZXcgUmVhZGFibGVTdHJlYW0oKSkuZ2V0UmVhZGVyKCkuY29uc3RydWN0b3I7CisgIGNvbnN0IG9s
ZERlZmF1bHRSZWFkZXJSZWFkID0gUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyLnByb3RvdHlw
ZS5yZWFkOworICBjb25zdCBvbGREZWZhdWx0UmVhZGVyQ2FuY2VsID0gUmVhZGFibGVTdHJlYW1E
ZWZhdWx0UmVhZGVyLnByb3RvdHlwZS5jYW5jZWw7CisgIGNvbnN0IG9sZERlZmF1bHRSZWFkZXJS
ZWxlYXNlTG9jayA9IFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlci5wcm90b3R5cGUucmVsZWFz
ZUxvY2s7CisKKyAgc2VsZi5SZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUuZ2V0UmVhZGVyID0gZnVu
Y3Rpb24oKSB7CisgICAgdGhyb3cgbmV3IEVycm9yKCdwYXRjaGVkIGdldFJlYWRlcigpIGNhbGxl
ZCcpOworICB9OworCisgIFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlci5wcm90b3R5cGUucmVh
ZCA9IGZ1bmN0aW9uKCkgeworICAgIHRocm93IG5ldyBFcnJvcigncGF0Y2hlZCByZWFkKCkgY2Fs
bGVkJyk7CisgIH07CisgIFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlci5wcm90b3R5cGUuY2Fu
Y2VsID0gZnVuY3Rpb24oKSB7CisgICAgdGhyb3cgbmV3IEVycm9yKCdwYXRjaGVkIGNhbmNlbCgp
IGNhbGxlZCcpOworICB9OworICBSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIucHJvdG90eXBl
LnJlbGVhc2VMb2NrID0gZnVuY3Rpb24oKSB7CisgICAgdGhyb3cgbmV3IEVycm9yKCdwYXRjaGVk
IHJlbGVhc2VMb2NrKCkgY2FsbGVkJyk7CisgIH07CisKKyAgdC5hZGRfY2xlYW51cCgoKSA9PiB7
CisgICAgc2VsZi5SZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUuZ2V0UmVhZGVyID0gb2xkUmVhZGFi
bGVTdHJlYW1HZXRSZWFkZXI7CisKKyAgICBSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIucHJv
dG90eXBlLnJlYWQgPSBvbGREZWZhdWx0UmVhZGVyUmVhZDsKKyAgICBSZWFkYWJsZVN0cmVhbURl
ZmF1bHRSZWFkZXIucHJvdG90eXBlLmNhbmNlbCA9IG9sZERlZmF1bHRSZWFkZXJDYW5jZWw7Cisg
ICAgUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyLnByb3RvdHlwZS5yZWxlYXNlTG9jayA9IG9s
ZERlZmF1bHRSZWFkZXJSZWxlYXNlTG9jazsKKyAgfSk7CisKKyAgLy8gcmVhZCB0aGUgZmlyc3Qg
Y2h1bmssIHRoZW4gY2FuY2VsCisgIGZvciBhd2FpdCAoY29uc3QgY2h1bmsgb2YgcnMpIHsKKyAg
ICBicmVhazsKKyAgfQorCisgIC8vIHNob3VsZCBiZSBhYmxlIHRvIGFjcXVpcmUgYSBuZXcgcmVh
ZGVyCisgIGNvbnN0IHJlYWRlciA9IG9sZFJlYWRhYmxlU3RyZWFtR2V0UmVhZGVyLmNhbGwocnMp
OworICAvLyBzdHJlYW0gc2hvdWxkIGJlIGNhbmNlbGxlZAorICBhd2FpdCByZWFkZXIuY2xvc2Vk
OworfSwgJ1JlYWRhYmxlU3RyZWFtIGFzeW5jIGl0ZXJhdG9yIHNob3VsZCB1c2UgdGhlIG9yaWdp
bmFsIHZhbHVlcyBvZiBnZXRSZWFkZXIoKSBhbmQgUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVy
ICcgKworICAgJ21ldGhvZHMnKTsKKwordGVzdCh0ID0+IHsKKyAgY29uc3Qgb2xkUHJvbWlzZVRo
ZW4gPSBQcm9taXNlLnByb3RvdHlwZS50aGVuOworICBQcm9taXNlLnByb3RvdHlwZS50aGVuID0g
KCkgPT4geworICAgIHRocm93IG5ldyBFcnJvcigncGF0Y2hlZCB0aGVuKCkgY2FsbGVkJyk7Cisg
IH07CisgIHQuYWRkX2NsZWFudXAoKCkgPT4geworICAgIFByb21pc2UucHJvdG90eXBlLnRoZW4g
PSBvbGRQcm9taXNlVGhlbjsKKyAgfSk7CisgIGNvbnN0IFticmFuY2gxLCBicmFuY2gyXSA9IG5l
dyBSZWFkYWJsZVN0cmVhbSgpLnRlZSgpOworICBhc3NlcnRfdHJ1ZShpc1JlYWRhYmxlU3RyZWFt
KGJyYW5jaDEpLCAnYnJhbmNoMSBzaG91bGQgYmUgYSBSZWFkYWJsZVN0cmVhbScpOworICBhc3Nl
cnRfdHJ1ZShpc1JlYWRhYmxlU3RyZWFtKGJyYW5jaDIpLCAnYnJhbmNoMiBzaG91bGQgYmUgYSBS
ZWFkYWJsZVN0cmVhbScpOworfSwgJ3RlZSgpIHNob3VsZCBub3QgY2FsbCBQcm9taXNlLnByb3Rv
dHlwZS50aGVuKCknKTsKKwordGVzdCh0ID0+IHsKKyAgY29uc3Qgb2xkUHJvbWlzZVRoZW4gPSBQ
cm9taXNlLnByb3RvdHlwZS50aGVuOworICBQcm9taXNlLnByb3RvdHlwZS50aGVuID0gKCkgPT4g
eworICAgIHRocm93IG5ldyBFcnJvcigncGF0Y2hlZCB0aGVuKCkgY2FsbGVkJyk7CisgIH07Cisg
IHQuYWRkX2NsZWFudXAoKCkgPT4geworICAgIFByb21pc2UucHJvdG90eXBlLnRoZW4gPSBvbGRQ
cm9taXNlVGhlbjsKKyAgfSk7CisgIGxldCByZWFkYWJsZUNvbnRyb2xsZXI7CisgIGNvbnN0IHJz
ID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICByZWFkYWJsZUNv
bnRyb2xsZXIgPSBjOworICAgIH0KKyAgfSk7CisgIGNvbnN0IHdzID0gbmV3IFdyaXRhYmxlU3Ry
ZWFtKCk7CisgIHJzLnBpcGVUbyh3cyk7CisgIHJlYWRhYmxlQ29udHJvbGxlci5jbG9zZSgpOwor
fSwgJ3BpcGVUbygpIHNob3VsZCBub3QgY2FsbCBQcm9taXNlLnByb3RvdHlwZS50aGVuKCknKTsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3BhdGNoZWQtZ2xvYmFsLmFueS53b3JrZXItZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJl
YW1zL3JlYWRhYmxlLXN0cmVhbXMvcGF0Y2hlZC1nbG9iYWwuYW55Lndvcmtlci1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYmVjOGIwNzJkMmUzMzg0YzRmNWZhMDcwODVlYTdjZmU5ZGVlYTdjZAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3BhdGNoZWQtZ2xvYmFsLmFueS53b3JrZXIt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNyBAQAorCitQQVNTIFJlYWRhYmxlU3RyZWFtIHRlZSgp
IHNob3VsZCBub3QgdG91Y2ggT2JqZWN0LnByb3RvdHlwZSBwcm9wZXJ0aWVzIAorUEFTUyBSZWFk
YWJsZVN0cmVhbSB0ZWUoKSBzaG91bGQgbm90IGNhbGwgdGhlIGdsb2JhbCBSZWFkYWJsZVN0cmVh
bSAKK0ZBSUwgUmVhZGFibGVTdHJlYW0gYXN5bmMgaXRlcmF0b3Igc2hvdWxkIHVzZSB0aGUgb3Jp
Z2luYWwgdmFsdWVzIG9mIGdldFJlYWRlcigpIGFuZCBSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFk
ZXIgbWV0aG9kcyBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTog
b2JqZWN0ICJUeXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBub3QgYSBmdW5jdGlvbiAobmVhciAnLi4u
Y2h1bmsgb2YgcnMuLi4nKSIKK1BBU1MgdGVlKCkgc2hvdWxkIG5vdCBjYWxsIFByb21pc2UucHJv
dG90eXBlLnRoZW4oKSAKK0ZBSUwgcGlwZVRvKCkgc2hvdWxkIG5vdCBjYWxsIFByb21pc2UucHJv
dG90eXBlLnRoZW4oKSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvcmVhZGFibGUtc3RyZWFtcy9wYXRjaGVkLWdsb2JhbC5hbnkud29ya2VyLmh0bWwgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUt
c3RyZWFtcy9wYXRjaGVkLWdsb2JhbC5hbnkud29ya2VyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjM4Mjkx
MzUyOGU2OTNiM2E1ZDU2YzY2MGE0NTA2MDk4MGI1NDhjMwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJs
ZS1zdHJlYW1zL3BhdGNoZWQtZ2xvYmFsLmFueS53b3JrZXIuaHRtbApAQCAtMCwwICsxIEBACis8
IS0tIFRoaXMgZmlsZSBpcyByZXF1aXJlZCBmb3IgV2ViS2l0IHRlc3QgaW5mcmFzdHJ1Y3R1cmUg
dG8gcnVuIHRoZSB0ZW1wbGF0ZWQgdGVzdCAtLT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW0tcmVhZGVyLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy9yZWFkYWJsZS1zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbS1yZWFkZXItZXhwZWN0ZWQudHh0CmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYjdlZmExYWU4NTkyMTI0NTEzOGE1YWQ5ZTBm
N2UzNjFhMDAxYzRkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9y
ZWFkYWJsZS1zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbS1yZWFkZXItZXhwZWN0ZWQudHh0CisrKyAv
ZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotCi1QQVNTIENhbiBnZXQgdGhlIFJlYWRhYmxlU3Ry
ZWFtUmVhZGVyIGNvbnN0cnVjdG9yIGluZGlyZWN0bHkgCi1QQVNTIFJlYWRhYmxlU3RyZWFtUmVh
ZGVyIGNvbnN0cnVjdG9yIHNob3VsZCBnZXQgYSBSZWFkYWJsZVN0cmVhbSBvYmplY3QgYXMgYXJn
dW1lbnQgCi1QQVNTIFJlYWRhYmxlU3RyZWFtUmVhZGVyIGluc3RhbmNlcyBzaG91bGQgaGF2ZSB0
aGUgY29ycmVjdCBsaXN0IG9mIHByb3BlcnRpZXMgCi1QQVNTIFJlYWRhYmxlU3RyZWFtUmVhZGVy
IGNsb3NlZCBzaG91bGQgYWx3YXlzIHJldHVybiB0aGUgc2FtZSBwcm9taXNlIG9iamVjdCAKLVBB
U1MgQ29uc3RydWN0aW5nIGEgUmVhZGFibGVTdHJlYW1SZWFkZXIgZGlyZWN0bHkgc2hvdWxkIGZh
aWwgaWYgdGhlIHN0cmVhbSBpcyBhbHJlYWR5IGxvY2tlZCAodmlhIGRpcmVjdCBjb25zdHJ1Y3Rp
b24pIAotUEFTUyBHZXR0aW5nIGEgUmVhZGFibGVTdHJlYW1SZWFkZXIgdmlhIGdldFJlYWRlciBz
aG91bGQgZmFpbCBpZiB0aGUgc3RyZWFtIGlzIGFscmVhZHkgbG9ja2VkICh2aWEgZGlyZWN0IGNv
bnN0cnVjdGlvbikgCi1QQVNTIENvbnN0cnVjdGluZyBhIFJlYWRhYmxlU3RyZWFtUmVhZGVyIGRp
cmVjdGx5IHNob3VsZCBmYWlsIGlmIHRoZSBzdHJlYW0gaXMgYWxyZWFkeSBsb2NrZWQgKHZpYSBn
ZXRSZWFkZXIpIAotUEFTUyBHZXR0aW5nIGEgUmVhZGFibGVTdHJlYW1SZWFkZXIgdmlhIGdldFJl
YWRlciBzaG91bGQgZmFpbCBpZiB0aGUgc3RyZWFtIGlzIGFscmVhZHkgbG9ja2VkICh2aWEgZ2V0
UmVhZGVyKSAKLVBBU1MgQ29uc3RydWN0aW5nIGEgUmVhZGFibGVTdHJlYW1SZWFkZXIgZGlyZWN0
bHkgc2hvdWxkIGJlIE9LIGlmIHRoZSBzdHJlYW0gaXMgY2xvc2VkIAotUEFTUyBDb25zdHJ1Y3Rp
bmcgYSBSZWFkYWJsZVN0cmVhbVJlYWRlciBkaXJlY3RseSBzaG91bGQgYmUgT0sgaWYgdGhlIHN0
cmVhbSBpcyBlcnJvcmVkIAotUEFTUyBSZWFkaW5nIGZyb20gYSByZWFkZXIgZm9yIGFuIGVtcHR5
IHN0cmVhbSB3aWxsIHdhaXQgdW50aWwgYSBjaHVuayBpcyBhdmFpbGFibGUgCi1QQVNTIGNhbmNl
bCgpIG9uIGEgcmVhZGVyIGRvZXMgbm90IHJlbGVhc2UgdGhlIHJlYWRlciAKLVBBU1MgY2xvc2Vk
IHNob3VsZCBiZSBmdWxmaWxsZWQgYWZ0ZXIgc3RyZWFtIGlzIGNsb3NlZCAoLmNsb3NlZCBhY2Nl
c3MgYmVmb3JlIGFjcXVpcmluZykgCi1QQVNTIGNsb3NlZCBzaG91bGQgYmUgcmVqZWN0ZWQgYWZ0
ZXIgcmVhZGVyIHJlbGVhc2VzIGl0cyBsb2NrIChtdWx0aXBsZSBzdHJlYW0gbG9ja3MpIAotUEFT
UyBNdWx0aXBsZSByZWFkZXJzIGNhbiBhY2Nlc3MgdGhlIHN0cmVhbSBpbiBzZXF1ZW5jZSAKLVBB
U1MgQ2Fubm90IHVzZSBhbiBhbHJlYWR5LXJlbGVhc2VkIHJlYWRlciB0byB1bmxvY2sgYSBzdHJl
YW0gYWdhaW4gCi1QQVNTIGNhbmNlbCgpIG9uIGEgcmVsZWFzZWQgcmVhZGVyIGlzIGEgbm8tb3Ag
YW5kIGRvZXMgbm90IHBhc3MgdGhyb3VnaCAKLVBBU1MgR2V0dGluZyBhIHNlY29uZCByZWFkZXIg
YWZ0ZXIgZXJyb3JpbmcgdGhlIHN0cmVhbSBhbmQgcmVsZWFzaW5nIHRoZSByZWFkZXIgc2hvdWxk
IHN1Y2NlZWQgCi1QQVNTIFJlYWRhYmxlU3RyZWFtUmVhZGVyIGNsb3NlZCBwcm9taXNlIHNob3Vs
ZCBiZSByZWplY3RlZCB3aXRoIHVuZGVmaW5lZCBpZiB0aGF0IGlzIHRoZSBlcnJvciAKLVBBU1Mg
UmVhZGFibGVTdHJlYW1SZWFkZXI6IGlmIHN0YXJ0IHJlamVjdHMgd2l0aCBubyBwYXJhbWV0ZXIs
IGl0IHNob3VsZCBlcnJvciB0aGUgc3RyZWFtIHdpdGggYW4gdW5kZWZpbmVkIGVycm9yIAotUEFT
UyBFcnJvcmluZyBhIFJlYWRhYmxlU3RyZWFtIGFmdGVyIGNoZWNraW5nIGNsb3NlZCBzaG91bGQg
cmVqZWN0IFJlYWRhYmxlU3RyZWFtUmVhZGVyIGNsb3NlZCBwcm9taXNlIAotUEFTUyBFcnJvcmlu
ZyBhIFJlYWRhYmxlU3RyZWFtIGJlZm9yZSBjaGVja2luZyBjbG9zZWQgc2hvdWxkIHJlamVjdCBS
ZWFkYWJsZVN0cmVhbVJlYWRlciBjbG9zZWQgcHJvbWlzZSAKLVBBU1MgUmVhZGluZyB0d2ljZSBv
biBhIHN0cmVhbSB0aGF0IGdldHMgY2xvc2VkIAotUEFTUyBSZWFkaW5nIHR3aWNlIG9uIGEgY2xv
c2VkIHN0cmVhbSAKLVBBU1MgUmVhZGluZyB0d2ljZSBvbiBhbiBlcnJvcmVkIHN0cmVhbSAKLVBB
U1MgUmVhZGluZyB0d2ljZSBvbiBhIHN0cmVhbSB0aGF0IGdldHMgZXJyb3JlZCAKLQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
L3JlYWRhYmxlLXN0cmVhbXMvcmVhZGFibGUtc3RyZWFtLXJlYWRlci5kZWRpY2F0ZWR3b3JrZXIt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvcmVhZGFibGUtc3RyZWFtLXJlYWRlci5kZWRpY2F0
ZWR3b3JrZXItZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYjdl
ZmExYWU4NTkyMTI0NTEzOGE1YWQ5ZTBmN2UzNjFhMDAxYzRkLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbS1y
ZWFkZXIuZGVkaWNhdGVkd29ya2VyLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDI4
ICswLDAgQEAKLQotUEFTUyBDYW4gZ2V0IHRoZSBSZWFkYWJsZVN0cmVhbVJlYWRlciBjb25zdHJ1
Y3RvciBpbmRpcmVjdGx5IAotUEFTUyBSZWFkYWJsZVN0cmVhbVJlYWRlciBjb25zdHJ1Y3RvciBz
aG91bGQgZ2V0IGEgUmVhZGFibGVTdHJlYW0gb2JqZWN0IGFzIGFyZ3VtZW50IAotUEFTUyBSZWFk
YWJsZVN0cmVhbVJlYWRlciBpbnN0YW5jZXMgc2hvdWxkIGhhdmUgdGhlIGNvcnJlY3QgbGlzdCBv
ZiBwcm9wZXJ0aWVzIAotUEFTUyBSZWFkYWJsZVN0cmVhbVJlYWRlciBjbG9zZWQgc2hvdWxkIGFs
d2F5cyByZXR1cm4gdGhlIHNhbWUgcHJvbWlzZSBvYmplY3QgCi1QQVNTIENvbnN0cnVjdGluZyBh
IFJlYWRhYmxlU3RyZWFtUmVhZGVyIGRpcmVjdGx5IHNob3VsZCBmYWlsIGlmIHRoZSBzdHJlYW0g
aXMgYWxyZWFkeSBsb2NrZWQgKHZpYSBkaXJlY3QgY29uc3RydWN0aW9uKSAKLVBBU1MgR2V0dGlu
ZyBhIFJlYWRhYmxlU3RyZWFtUmVhZGVyIHZpYSBnZXRSZWFkZXIgc2hvdWxkIGZhaWwgaWYgdGhl
IHN0cmVhbSBpcyBhbHJlYWR5IGxvY2tlZCAodmlhIGRpcmVjdCBjb25zdHJ1Y3Rpb24pIAotUEFT
UyBDb25zdHJ1Y3RpbmcgYSBSZWFkYWJsZVN0cmVhbVJlYWRlciBkaXJlY3RseSBzaG91bGQgZmFp
bCBpZiB0aGUgc3RyZWFtIGlzIGFscmVhZHkgbG9ja2VkICh2aWEgZ2V0UmVhZGVyKSAKLVBBU1Mg
R2V0dGluZyBhIFJlYWRhYmxlU3RyZWFtUmVhZGVyIHZpYSBnZXRSZWFkZXIgc2hvdWxkIGZhaWwg
aWYgdGhlIHN0cmVhbSBpcyBhbHJlYWR5IGxvY2tlZCAodmlhIGdldFJlYWRlcikgCi1QQVNTIENv
bnN0cnVjdGluZyBhIFJlYWRhYmxlU3RyZWFtUmVhZGVyIGRpcmVjdGx5IHNob3VsZCBiZSBPSyBp
ZiB0aGUgc3RyZWFtIGlzIGNsb3NlZCAKLVBBU1MgQ29uc3RydWN0aW5nIGEgUmVhZGFibGVTdHJl
YW1SZWFkZXIgZGlyZWN0bHkgc2hvdWxkIGJlIE9LIGlmIHRoZSBzdHJlYW0gaXMgZXJyb3JlZCAK
LVBBU1MgUmVhZGluZyBmcm9tIGEgcmVhZGVyIGZvciBhbiBlbXB0eSBzdHJlYW0gd2lsbCB3YWl0
IHVudGlsIGEgY2h1bmsgaXMgYXZhaWxhYmxlIAotUEFTUyBjYW5jZWwoKSBvbiBhIHJlYWRlciBk
b2VzIG5vdCByZWxlYXNlIHRoZSByZWFkZXIgCi1QQVNTIGNsb3NlZCBzaG91bGQgYmUgZnVsZmls
bGVkIGFmdGVyIHN0cmVhbSBpcyBjbG9zZWQgKC5jbG9zZWQgYWNjZXNzIGJlZm9yZSBhY3F1aXJp
bmcpIAotUEFTUyBjbG9zZWQgc2hvdWxkIGJlIHJlamVjdGVkIGFmdGVyIHJlYWRlciByZWxlYXNl
cyBpdHMgbG9jayAobXVsdGlwbGUgc3RyZWFtIGxvY2tzKSAKLVBBU1MgTXVsdGlwbGUgcmVhZGVy
cyBjYW4gYWNjZXNzIHRoZSBzdHJlYW0gaW4gc2VxdWVuY2UgCi1QQVNTIENhbm5vdCB1c2UgYW4g
YWxyZWFkeS1yZWxlYXNlZCByZWFkZXIgdG8gdW5sb2NrIGEgc3RyZWFtIGFnYWluIAotUEFTUyBj
YW5jZWwoKSBvbiBhIHJlbGVhc2VkIHJlYWRlciBpcyBhIG5vLW9wIGFuZCBkb2VzIG5vdCBwYXNz
IHRocm91Z2ggCi1QQVNTIEdldHRpbmcgYSBzZWNvbmQgcmVhZGVyIGFmdGVyIGVycm9yaW5nIHRo
ZSBzdHJlYW0gYW5kIHJlbGVhc2luZyB0aGUgcmVhZGVyIHNob3VsZCBzdWNjZWVkIAotUEFTUyBS
ZWFkYWJsZVN0cmVhbVJlYWRlciBjbG9zZWQgcHJvbWlzZSBzaG91bGQgYmUgcmVqZWN0ZWQgd2l0
aCB1bmRlZmluZWQgaWYgdGhhdCBpcyB0aGUgZXJyb3IgCi1QQVNTIFJlYWRhYmxlU3RyZWFtUmVh
ZGVyOiBpZiBzdGFydCByZWplY3RzIHdpdGggbm8gcGFyYW1ldGVyLCBpdCBzaG91bGQgZXJyb3Ig
dGhlIHN0cmVhbSB3aXRoIGFuIHVuZGVmaW5lZCBlcnJvciAKLVBBU1MgRXJyb3JpbmcgYSBSZWFk
YWJsZVN0cmVhbSBhZnRlciBjaGVja2luZyBjbG9zZWQgc2hvdWxkIHJlamVjdCBSZWFkYWJsZVN0
cmVhbVJlYWRlciBjbG9zZWQgcHJvbWlzZSAKLVBBU1MgRXJyb3JpbmcgYSBSZWFkYWJsZVN0cmVh
bSBiZWZvcmUgY2hlY2tpbmcgY2xvc2VkIHNob3VsZCByZWplY3QgUmVhZGFibGVTdHJlYW1SZWFk
ZXIgY2xvc2VkIHByb21pc2UgCi1QQVNTIFJlYWRpbmcgdHdpY2Ugb24gYSBzdHJlYW0gdGhhdCBn
ZXRzIGNsb3NlZCAKLVBBU1MgUmVhZGluZyB0d2ljZSBvbiBhIGNsb3NlZCBzdHJlYW0gCi1QQVNT
IFJlYWRpbmcgdHdpY2Ugb24gYW4gZXJyb3JlZCBzdHJlYW0gCi1QQVNTIFJlYWRpbmcgdHdpY2Ug
b24gYSBzdHJlYW0gdGhhdCBnZXRzIGVycm9yZWQgCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1z
L3JlYWRhYmxlLXN0cmVhbS1yZWFkZXIuZGVkaWNhdGVkd29ya2VyLmh0bWwgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFt
cy9yZWFkYWJsZS1zdHJlYW0tcmVhZGVyLmRlZGljYXRlZHdvcmtlci5odG1sCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBlMjgxODc3MWU0NTVlM2ZjZTc4Mzk1ZTNlYjYwMGE5YjNhMTFl
MmM2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1z
dHJlYW1zL3JlYWRhYmxlLXN0cmVhbS1yZWFkZXIuZGVkaWNhdGVkd29ya2VyLmh0bWwKKysrIC9k
ZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9
InV0Zi04Ij4KLTx0aXRsZT5yZWFkYWJsZS1zdHJlYW0tcmVhZGVyLmpzIGRlZGljYXRlZCB3b3Jr
ZXIgd3JhcHBlciBmaWxlPC90aXRsZT4KLQotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhh
cm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3Ny
ZXBvcnQuanMiPjwvc2NyaXB0PgotCi08c2NyaXB0PgotJ3VzZSBzdHJpY3QnOwotZmV0Y2hfdGVz
dHNfZnJvbV93b3JrZXIobmV3IFdvcmtlcigncmVhZGFibGUtc3RyZWFtLXJlYWRlci5qcycpKTsK
LTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvcmVhZGFibGUtc3RyZWFtLXJlYWRl
ci5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJl
YW1zL3JlYWRhYmxlLXN0cmVhbXMvcmVhZGFibGUtc3RyZWFtLXJlYWRlci5odG1sCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZDljNWYzZmE4ZWY0YWI3Yjg1OTZlMGM5NTMzN2M2MmVk
NGJlYmM3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJs
ZS1zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbS1yZWFkZXIuaHRtbAorKysgL2Rldi9udWxsCkBAIC0x
LDEwICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHRp
dGxlPnJlYWRhYmxlLXN0cmVhbS1yZWFkZXIuanMgYnJvd3NlciBjb250ZXh0IHdyYXBwZXIgZmls
ZTwvdGl0bGU+Ci0KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3Nj
cmlwdD4KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3Nj
cmlwdD4KLQotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9ycy11dGlscy5qcyI+PC9zY3JpcHQ+
Ci0KLTxzY3JpcHQgc3JjPSJyZWFkYWJsZS1zdHJlYW0tcmVhZGVyLmpzIj48L3NjcmlwdD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbS1yZWFkZXIuanMgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3Ry
ZWFtcy9yZWFkYWJsZS1zdHJlYW0tcmVhZGVyLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAxZDViYzEzMDA0ZjhhMzU3ZmM1ZTgyNTIyZjNiZDMwOWYxMzExYjlhLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3JlYWRhYmxl
LXN0cmVhbS1yZWFkZXIuanMKKysrIC9kZXYvbnVsbApAQCAtMSw0ODUgKzAsMCBAQAotJ3VzZSBz
dHJpY3QnOwotCi1pZiAoc2VsZi5pbXBvcnRTY3JpcHRzKSB7Ci0gIHNlbGYuaW1wb3J0U2NyaXB0
cygnLi4vcmVzb3VyY2VzL3JzLXV0aWxzLmpzJyk7Ci0gIHNlbGYuaW1wb3J0U2NyaXB0cygnL3Jl
c291cmNlcy90ZXN0aGFybmVzcy5qcycpOwotfQotCi1sZXQgUmVhZGFibGVTdHJlYW1SZWFkZXI7
Ci0KLXRlc3QoKCkgPT4gewotCi0gIC8vIEl0J3Mgbm90IGV4cG9zZWQgZ2xvYmFsbHksIGJ1dCB3
ZSB0ZXN0IGEgZmV3IG9mIGl0cyBwcm9wZXJ0aWVzIGhlcmUuCi0gIFJlYWRhYmxlU3RyZWFtUmVh
ZGVyID0gKG5ldyBSZWFkYWJsZVN0cmVhbSgpKS5nZXRSZWFkZXIoKS5jb25zdHJ1Y3RvcjsKLQot
fSwgJ0NhbiBnZXQgdGhlIFJlYWRhYmxlU3RyZWFtUmVhZGVyIGNvbnN0cnVjdG9yIGluZGlyZWN0
bHknKTsKLQotdGVzdCgoKSA9PiB7Ci0KLSAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCks
ICgpID0+IG5ldyBSZWFkYWJsZVN0cmVhbVJlYWRlcigncG90YXRvJykpOwotICBhc3NlcnRfdGhy
b3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gbmV3IFJlYWRhYmxlU3RyZWFtUmVhZGVyKHt9KSk7
Ci0gIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBuZXcgUmVhZGFibGVTdHJl
YW1SZWFkZXIoKSk7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbVJlYWRlciBjb25zdHJ1Y3RvciBzaG91
bGQgZ2V0IGEgUmVhZGFibGVTdHJlYW0gb2JqZWN0IGFzIGFyZ3VtZW50Jyk7Ci0KLXRlc3QoKCkg
PT4gewotCi0gIGNvbnN0IG1ldGhvZHMgPSBbJ2NhbmNlbCcsICdjb25zdHJ1Y3RvcicsICdyZWFk
JywgJ3JlbGVhc2VMb2NrJ107Ci0gIGNvbnN0IHByb3BlcnRpZXMgPSBtZXRob2RzLmNvbmNhdChb
J2Nsb3NlZCddKS5zb3J0KCk7Ci0KLSAgY29uc3QgcnNSZWFkZXIgPSBuZXcgUmVhZGFibGVTdHJl
YW1SZWFkZXIobmV3IFJlYWRhYmxlU3RyZWFtKCkpOwotICBjb25zdCBwcm90byA9IE9iamVjdC5n
ZXRQcm90b3R5cGVPZihyc1JlYWRlcik7Ci0KLSAgYXNzZXJ0X2FycmF5X2VxdWFscyhPYmplY3Qu
Z2V0T3duUHJvcGVydHlOYW1lcyhwcm90bykuc29ydCgpLCBwcm9wZXJ0aWVzKTsKLQotICBmb3Ig
KGNvbnN0IG0gb2YgbWV0aG9kcykgewotICAgIGNvbnN0IHByb3BEZXNjID0gT2JqZWN0LmdldE93
blByb3BlcnR5RGVzY3JpcHRvcihwcm90bywgbSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhwcm9wRGVz
Yy5lbnVtZXJhYmxlLCBmYWxzZSwgJ21ldGhvZCBzaG91bGQgYmUgbm9uLWVudW1lcmFibGUnKTsK
LSAgICBhc3NlcnRfZXF1YWxzKHByb3BEZXNjLmNvbmZpZ3VyYWJsZSwgdHJ1ZSwgJ21ldGhvZCBz
aG91bGQgYmUgY29uZmlndXJhYmxlJyk7Ci0gICAgYXNzZXJ0X2VxdWFscyhwcm9wRGVzYy53cml0
YWJsZSwgdHJ1ZSwgJ21ldGhvZCBzaG91bGQgYmUgd3JpdGFibGUnKTsKLSAgICBhc3NlcnRfZXF1
YWxzKHR5cGVvZiByc1JlYWRlclttXSwgJ2Z1bmN0aW9uJywgJ3Nob3VsZCBoYXZlIGJlIGEgbWV0
aG9kJyk7Ci0gIH0KLQotICBjb25zdCBjbG9zZWRQcm9wRGVzYyA9IE9iamVjdC5nZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IocHJvdG8sICdjbG9zZWQnKTsKLSAgYXNzZXJ0X2VxdWFscyhjbG9zZWRQ
cm9wRGVzYy5lbnVtZXJhYmxlLCBmYWxzZSwgJ2Nsb3NlZCBzaG91bGQgYmUgbm9uLWVudW1lcmFi
bGUnKTsKLSAgYXNzZXJ0X2VxdWFscyhjbG9zZWRQcm9wRGVzYy5jb25maWd1cmFibGUsIHRydWUs
ICdjbG9zZWQgc2hvdWxkIGJlIGNvbmZpZ3VyYWJsZScpOwotICBhc3NlcnRfbm90X2VxdWFscyhj
bG9zZWRQcm9wRGVzYy5nZXQsIHVuZGVmaW5lZCwgJ2Nsb3NlZCBzaG91bGQgaGF2ZSBhIGdldHRl
cicpOwotICBhc3NlcnRfZXF1YWxzKGNsb3NlZFByb3BEZXNjLnNldCwgdW5kZWZpbmVkLCAnY2xv
c2VkIHNob3VsZCBub3QgaGF2ZSBhIHNldHRlcicpOwotCi0gIGFzc2VydF9lcXVhbHMocnNSZWFk
ZXIuY2FuY2VsLmxlbmd0aCwgMSwgJ2NhbmNlbCBoYXMgMSBwYXJhbWV0ZXInKTsKLSAgYXNzZXJ0
X25vdF9lcXVhbHMocnNSZWFkZXIuY2xvc2VkLCB1bmRlZmluZWQsICdoYXMgYSBub24tdW5kZWZp
bmVkIGNsb3NlZCBwcm9wZXJ0eScpOwotICBhc3NlcnRfZXF1YWxzKHR5cGVvZiByc1JlYWRlci5j
bG9zZWQudGhlbiwgJ2Z1bmN0aW9uJywgJ2Nsb3NlZCBwcm9wZXJ0eSBpcyB0aGVuYWJsZScpOwot
ICBhc3NlcnRfZXF1YWxzKHR5cGVvZiByc1JlYWRlci5jb25zdHJ1Y3RvciwgJ2Z1bmN0aW9uJywg
J2hhcyBhIGNvbnN0cnVjdG9yIG1ldGhvZCcpOwotICBhc3NlcnRfZXF1YWxzKHJzUmVhZGVyLmNv
bnN0cnVjdG9yLmxlbmd0aCwgMSwgJ2NvbnN0cnVjdG9yIGhhcyAxIHBhcmFtZXRlcicpOwotICBh
c3NlcnRfZXF1YWxzKHR5cGVvZiByc1JlYWRlci5yZWFkLCAnZnVuY3Rpb24nLCAnaGFzIGEgZ2V0
UmVhZGVyIG1ldGhvZCcpOwotICBhc3NlcnRfZXF1YWxzKHJzUmVhZGVyLnJlYWQubGVuZ3RoLCAw
LCAncmVhZCBoYXMgbm8gcGFyYW1ldGVycycpOwotICBhc3NlcnRfZXF1YWxzKHR5cGVvZiByc1Jl
YWRlci5yZWxlYXNlTG9jaywgJ2Z1bmN0aW9uJywgJ2hhcyBhIHJlbGVhc2VMb2NrIG1ldGhvZCcp
OwotICBhc3NlcnRfZXF1YWxzKHJzUmVhZGVyLnJlbGVhc2VMb2NrLmxlbmd0aCwgMCwgJ3JlbGVh
c2VMb2NrIGhhcyBubyBwYXJhbWV0ZXJzJyk7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbVJlYWRlciBp
bnN0YW5jZXMgc2hvdWxkIGhhdmUgdGhlIGNvcnJlY3QgbGlzdCBvZiBwcm9wZXJ0aWVzJyk7Ci0K
LXRlc3QoKCkgPT4gewotCi0gIGNvbnN0IHJzUmVhZGVyID0gbmV3IFJlYWRhYmxlU3RyZWFtUmVh
ZGVyKG5ldyBSZWFkYWJsZVN0cmVhbSgpKTsKLSAgYXNzZXJ0X2VxdWFscyhyc1JlYWRlci5jbG9z
ZWQsIHJzUmVhZGVyLmNsb3NlZCwgJ2Nsb3NlZCBzaG91bGQgcmV0dXJuIHRoZSBzYW1lIHByb21p
c2UnKTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtUmVhZGVyIGNsb3NlZCBzaG91bGQgYWx3YXlzIHJl
dHVybiB0aGUgc2FtZSBwcm9taXNlIG9iamVjdCcpOwotCi10ZXN0KCgpID0+IHsKLQotICBjb25z
dCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSgpOwotICBuZXcgUmVhZGFibGVTdHJlYW1SZWFkZXIo
cnMpOyAvLyBDb25zdHJ1Y3RpbmcgZGlyZWN0bHkgdGhlIGZpcnN0IHRpbWUgc2hvdWxkIGJlIGZp
bmUuCi0gIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBuZXcgUmVhZGFibGVT
dHJlYW1SZWFkZXIocnMpLAotICAgICAgICAgICAgICAgICdjb25zdHJ1Y3RpbmcgZGlyZWN0bHkg
dGhlIHNlY29uZCB0aW1lIHNob3VsZCBmYWlsJyk7Ci0KLX0sICdDb25zdHJ1Y3RpbmcgYSBSZWFk
YWJsZVN0cmVhbVJlYWRlciBkaXJlY3RseSBzaG91bGQgZmFpbCBpZiB0aGUgc3RyZWFtIGlzIGFs
cmVhZHkgbG9ja2VkICh2aWEgZGlyZWN0ICcgKwotICAgJ2NvbnN0cnVjdGlvbiknKTsKLQotdGVz
dCgoKSA9PiB7Ci0KLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oKTsKLSAgbmV3IFJl
YWRhYmxlU3RyZWFtUmVhZGVyKHJzKTsgLy8gQ29uc3RydWN0aW5nIGRpcmVjdGx5IHNob3VsZCBi
ZSBmaW5lLgotICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gcnMuZ2V0UmVh
ZGVyKCksICdnZXRSZWFkZXIoKSBzaG91bGQgZmFpbCcpOwotCi19LCAnR2V0dGluZyBhIFJlYWRh
YmxlU3RyZWFtUmVhZGVyIHZpYSBnZXRSZWFkZXIgc2hvdWxkIGZhaWwgaWYgdGhlIHN0cmVhbSBp
cyBhbHJlYWR5IGxvY2tlZCAodmlhIGRpcmVjdCAnICsKLSAgICdjb25zdHJ1Y3Rpb24pJyk7Ci0K
LXRlc3QoKCkgPT4gewotCi0gIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKCk7Ci0gIHJz
LmdldFJlYWRlcigpOyAvLyBnZXRSZWFkZXIoKSBzaG91bGQgYmUgZmluZS4KLSAgYXNzZXJ0X3Ro
cm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IG5ldyBSZWFkYWJsZVN0cmVhbVJlYWRlcihycyks
ICdjb25zdHJ1Y3RpbmcgZGlyZWN0bHkgc2hvdWxkIGZhaWwnKTsKLQotfSwgJ0NvbnN0cnVjdGlu
ZyBhIFJlYWRhYmxlU3RyZWFtUmVhZGVyIGRpcmVjdGx5IHNob3VsZCBmYWlsIGlmIHRoZSBzdHJl
YW0gaXMgYWxyZWFkeSBsb2NrZWQgKHZpYSBnZXRSZWFkZXIpJyk7Ci0KLXRlc3QoKCkgPT4gewot
Ci0gIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKCk7Ci0gIHJzLmdldFJlYWRlcigpOyAv
LyBnZXRSZWFkZXIoKSBzaG91bGQgYmUgZmluZS4KLSAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVy
cm9yKCksICgpID0+IHJzLmdldFJlYWRlcigpLCAnZ2V0UmVhZGVyKCkgc2hvdWxkIGZhaWwnKTsK
LQotfSwgJ0dldHRpbmcgYSBSZWFkYWJsZVN0cmVhbVJlYWRlciB2aWEgZ2V0UmVhZGVyIHNob3Vs
ZCBmYWlsIGlmIHRoZSBzdHJlYW0gaXMgYWxyZWFkeSBsb2NrZWQgKHZpYSBnZXRSZWFkZXIpJyk7
Ci0KLXRlc3QoKCkgPT4gewotCi0gIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAg
ICBzdGFydChjKSB7Ci0gICAgICBjLmNsb3NlKCk7Ci0gICAgfQotICB9KTsKLQotICBuZXcgUmVh
ZGFibGVTdHJlYW1SZWFkZXIocnMpOyAvLyBDb25zdHJ1Y3RpbmcgZGlyZWN0bHkgc2hvdWxkIG5v
dCB0aHJvdy4KLQotfSwgJ0NvbnN0cnVjdGluZyBhIFJlYWRhYmxlU3RyZWFtUmVhZGVyIGRpcmVj
dGx5IHNob3VsZCBiZSBPSyBpZiB0aGUgc3RyZWFtIGlzIGNsb3NlZCcpOwotCi10ZXN0KCgpID0+
IHsKLQotICBjb25zdCB0aGVFcnJvciA9IG5ldyBFcnJvcignZG9uXCd0IHNheSBpIGRpZG5cJ3Qg
d2FybiB5YScpOwotICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQo
YykgewotICAgICAgYy5lcnJvcih0aGVFcnJvcik7Ci0gICAgfQotICB9KTsKLQotICBuZXcgUmVh
ZGFibGVTdHJlYW1SZWFkZXIocnMpOyAvLyBDb25zdHJ1Y3RpbmcgZGlyZWN0bHkgc2hvdWxkIG5v
dCB0aHJvdy4KLQotfSwgJ0NvbnN0cnVjdGluZyBhIFJlYWRhYmxlU3RyZWFtUmVhZGVyIGRpcmVj
dGx5IHNob3VsZCBiZSBPSyBpZiB0aGUgc3RyZWFtIGlzIGVycm9yZWQnKTsKLQotcHJvbWlzZV90
ZXN0KCgpID0+IHsKLQotICBsZXQgY29udHJvbGxlcjsKLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFi
bGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGNvbnRyb2xsZXIgPSBjOwotICAgIH0K
LSAgfSk7Ci0gIGNvbnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcigpOwotCi0gIGNvbnN0IHByb21p
c2UgPSByZWFkZXIucmVhZCgpLnRoZW4ocmVzdWx0ID0+IHsKLSAgICBhc3NlcnRfb2JqZWN0X2Vx
dWFscyhyZXN1bHQsIHsgdmFsdWU6ICdhJywgZG9uZTogZmFsc2UgfSwgJ3JlYWQoKSBzaG91bGQg
ZnVsZmlsbCB3aXRoIHRoZSBlbnF1ZXVlZCBjaHVuaycpOwotICB9KTsKLQotICBjb250cm9sbGVy
LmVucXVldWUoJ2EnKTsKLSAgcmV0dXJuIHByb21pc2U7Ci0KLX0sICdSZWFkaW5nIGZyb20gYSBy
ZWFkZXIgZm9yIGFuIGVtcHR5IHN0cmVhbSB3aWxsIHdhaXQgdW50aWwgYSBjaHVuayBpcyBhdmFp
bGFibGUnKTsKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLQotICBsZXQgY2FuY2VsQ2FsbGVkID0g
ZmFsc2U7Ci0gIGNvbnN0IHBhc3NlZFJlYXNvbiA9IG5ldyBFcnJvcignaXQgd2FzblwndCB0aGUg
cmlnaHQgdGltZSwgc29ycnknKTsKLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewot
ICAgIGNhbmNlbChyZWFzb24pIHsKLSAgICAgIGFzc2VydF90cnVlKHJzLmxvY2tlZCwgJ3RoZSBz
dHJlYW0gc2hvdWxkIHN0aWxsIGJlIGxvY2tlZCcpOwotICAgICAgYXNzZXJ0X3Rocm93cyhuZXcg
VHlwZUVycm9yKCksICgpID0+IHJzLmdldFJlYWRlcigpLCAnc2hvdWxkIG5vdCBiZSBhYmxlIHRv
IGdldCBhbm90aGVyIHJlYWRlcicpOwotICAgICAgYXNzZXJ0X2VxdWFscyhyZWFzb24sIHBhc3Nl
ZFJlYXNvbiwgJ3RoZSBjYW5jZWxsYXRpb24gcmVhc29uIGlzIHBhc3NlZCB0aHJvdWdoIHRvIHRo
ZSB1bmRlcmx5aW5nIHNvdXJjZScpOwotICAgICAgY2FuY2VsQ2FsbGVkID0gdHJ1ZTsKLSAgICB9
Ci0gIH0pOwotCi0gIGNvbnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcigpOwotICByZXR1cm4gcmVh
ZGVyLmNhbmNlbChwYXNzZWRSZWFzb24pLnRoZW4oKCkgPT4gYXNzZXJ0X3RydWUoY2FuY2VsQ2Fs
bGVkKSk7Ci0KLX0sICdjYW5jZWwoKSBvbiBhIHJlYWRlciBkb2VzIG5vdCByZWxlYXNlIHRoZSBy
ZWFkZXInKTsKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLQotICBsZXQgY29udHJvbGxlcjsKLSAg
Y29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGNv
bnRyb2xsZXIgPSBjOwotICAgIH0KLSAgfSk7Ci0KLSAgY29uc3QgcmVhZGVyID0gcnMuZ2V0UmVh
ZGVyKCk7Ci0gIGNvbnN0IHByb21pc2UgPSByZWFkZXIuY2xvc2VkOwotCi0gIGNvbnRyb2xsZXIu
Y2xvc2UoKTsKLSAgcmV0dXJuIHByb21pc2U7Ci0KLX0sICdjbG9zZWQgc2hvdWxkIGJlIGZ1bGZp
bGxlZCBhZnRlciBzdHJlYW0gaXMgY2xvc2VkICguY2xvc2VkIGFjY2VzcyBiZWZvcmUgYWNxdWly
aW5nKScpOwotCi1wcm9taXNlX3Rlc3QodCA9PiB7Ci0KLSAgbGV0IGNvbnRyb2xsZXI7Ci0gIGNv
bnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0gICAgICBjb250
cm9sbGVyID0gYzsKLSAgICB9Ci0gIH0pOwotCi0gIGNvbnN0IHJlYWRlcjEgPSBycy5nZXRSZWFk
ZXIoKTsKLQotICByZWFkZXIxLnJlbGVhc2VMb2NrKCk7Ci0KLSAgY29uc3QgcmVhZGVyMiA9IHJz
LmdldFJlYWRlcigpOwotICBjb250cm9sbGVyLmNsb3NlKCk7Ci0KLSAgcmV0dXJuIFByb21pc2Uu
YWxsKFsKLSAgICBwcm9taXNlX3JlamVjdHModCwgbmV3IFR5cGVFcnJvcigpLCByZWFkZXIxLmNs
b3NlZCksCi0gICAgcmVhZGVyMi5jbG9zZWQKLSAgXSk7Ci0KLX0sICdjbG9zZWQgc2hvdWxkIGJl
IHJlamVjdGVkIGFmdGVyIHJlYWRlciByZWxlYXNlcyBpdHMgbG9jayAobXVsdGlwbGUgc3RyZWFt
IGxvY2tzKScpOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotCi0gIGNvbnN0IHJzID0gbmV3IFJl
YWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0gICAgICBjLmVucXVldWUoJ2EnKTsKLSAg
ICAgIGMuZW5xdWV1ZSgnYicpOwotICAgICAgYy5jbG9zZSgpOwotICAgIH0KLSAgfSk7Ci0KLSAg
Y29uc3QgcmVhZGVyMSA9IHJzLmdldFJlYWRlcigpOwotICBjb25zdCBwcm9taXNlMSA9IHJlYWRl
cjEucmVhZCgpLnRoZW4ociA9PiB7Ci0gICAgYXNzZXJ0X29iamVjdF9lcXVhbHMociwgeyB2YWx1
ZTogJ2EnLCBkb25lOiBmYWxzZSB9LCAncmVhZGluZyB0aGUgZmlyc3QgY2h1bmsgZnJvbSByZWFk
ZXIxIHdvcmtzJyk7Ci0gIH0pOwotICByZWFkZXIxLnJlbGVhc2VMb2NrKCk7Ci0KLSAgY29uc3Qg
cmVhZGVyMiA9IHJzLmdldFJlYWRlcigpOwotICBjb25zdCBwcm9taXNlMiA9IHJlYWRlcjIucmVh
ZCgpLnRoZW4ociA9PiB7Ci0gICAgYXNzZXJ0X29iamVjdF9lcXVhbHMociwgeyB2YWx1ZTogJ2In
LCBkb25lOiBmYWxzZSB9LCAncmVhZGluZyB0aGUgc2Vjb25kIGNodW5rIGZyb20gcmVhZGVyMiB3
b3JrcycpOwotICB9KTsKLSAgcmVhZGVyMi5yZWxlYXNlTG9jaygpOwotCi0gIHJldHVybiBQcm9t
aXNlLmFsbChbcHJvbWlzZTEsIHByb21pc2UyXSk7Ci0KLX0sICdNdWx0aXBsZSByZWFkZXJzIGNh
biBhY2Nlc3MgdGhlIHN0cmVhbSBpbiBzZXF1ZW5jZScpOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4g
ewotICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAg
ICAgYy5lbnF1ZXVlKCdhJyk7Ci0gICAgfQotICB9KTsKLQotICBjb25zdCByZWFkZXIxID0gcnMu
Z2V0UmVhZGVyKCk7Ci0gIHJlYWRlcjEucmVsZWFzZUxvY2soKTsKLQotICBjb25zdCByZWFkZXIy
ID0gcnMuZ2V0UmVhZGVyKCk7Ci0KLSAgLy8gU2hvdWxkIGJlIGEgbm8tb3AKLSAgcmVhZGVyMS5y
ZWxlYXNlTG9jaygpOwotCi0gIHJldHVybiByZWFkZXIyLnJlYWQoKS50aGVuKHJlc3VsdCA9PiB7
Ci0gICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0LCB7IHZhbHVlOiAnYScsIGRvbmU6IGZh
bHNlIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ3JlYWQoKSBzaG91bGQgc3RpbGwgd29y
ayBvbiByZWFkZXIyIGV2ZW4gYWZ0ZXIgcmVhZGVyMSBpcyByZWxlYXNlZCcpOwotICB9KTsKLQot
fSwgJ0Nhbm5vdCB1c2UgYW4gYWxyZWFkeS1yZWxlYXNlZCByZWFkZXIgdG8gdW5sb2NrIGEgc3Ry
ZWFtIGFnYWluJyk7Ci0KLXByb21pc2VfdGVzdCh0ID0+IHsKLQotICBjb25zdCBycyA9IG5ldyBS
ZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgYy5lbnF1ZXVlKCdhJyk7Ci0g
ICAgfSwKLSAgICBjYW5jZWwoKSB7Ci0gICAgICBhc3NlcnRfdW5yZWFjaGVkKCd1bmRlcmx5aW5n
IHNvdXJjZSBjYW5jZWwgc2hvdWxkIG5vdCBiZSBjYWxsZWQnKTsKLSAgICB9Ci0gIH0pOwotCi0g
IGNvbnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcigpOwotICByZWFkZXIucmVsZWFzZUxvY2soKTsK
LSAgY29uc3QgY2FuY2VsUHJvbWlzZSA9IHJlYWRlci5jYW5jZWwoKTsKLQotICBjb25zdCByZWFk
ZXIyID0gcnMuZ2V0UmVhZGVyKCk7Ci0gIGNvbnN0IHJlYWRQcm9taXNlID0gcmVhZGVyMi5yZWFk
KCkudGhlbihyID0+IHsKLSAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyLCB7IHZhbHVlOiAnYScs
IGRvbmU6IGZhbHNlIH0sICdhIG5ldyByZWFkZXIgc2hvdWxkIGJlIGFibGUgdG8gcmVhZCBhIGNo
dW5rJyk7Ci0gIH0pOwotCi0gIHJldHVybiBQcm9taXNlLmFsbChbCi0gICAgcHJvbWlzZV9yZWpl
Y3RzKHQsIG5ldyBUeXBlRXJyb3IoKSwgY2FuY2VsUHJvbWlzZSksCi0gICAgcmVhZFByb21pc2UK
LSAgXSk7Ci0KLX0sICdjYW5jZWwoKSBvbiBhIHJlbGVhc2VkIHJlYWRlciBpcyBhIG5vLW9wIGFu
ZCBkb2VzIG5vdCBwYXNzIHRocm91Z2gnKTsKLQotcHJvbWlzZV90ZXN0KHQgPT4gewotCi0gIGNv
bnN0IHByb21pc2VBc3NlcnRzID0gW107Ci0KLSAgbGV0IGNvbnRyb2xsZXI7Ci0gIGNvbnN0IHRo
ZUVycm9yID0geyBuYW1lOiAndW5pcXVlIGVycm9yJyB9OwotICBjb25zdCBycyA9IG5ldyBSZWFk
YWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgY29udHJvbGxlciA9IGM7Ci0gICAg
fQotICB9KTsKLQotICBjb25zdCByZWFkZXIxID0gcnMuZ2V0UmVhZGVyKCk7Ci0KLSAgcHJvbWlz
ZUFzc2VydHMucHVzaCgKLSAgICBwcm9taXNlX3JlamVjdHModCwgdGhlRXJyb3IsIHJlYWRlcjEu
Y2xvc2VkKSwKLSAgICBwcm9taXNlX3JlamVjdHModCwgdGhlRXJyb3IsIHJlYWRlcjEucmVhZCgp
KQotICApOwotCi0gIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBycy5nZXRS
ZWFkZXIoKSwgJ3RyeWluZyB0byBnZXQgYW5vdGhlciByZWFkZXIgYmVmb3JlIGVycm9yaW5nIHNo
b3VsZCB0aHJvdycpOwotCi0gIGNvbnRyb2xsZXIuZXJyb3IodGhlRXJyb3IpOwotCi0gIHJlYWRl
cjEucmVsZWFzZUxvY2soKTsKLQotICBjb25zdCByZWFkZXIyID0gcnMuZ2V0UmVhZGVyKCk7Ci0K
LSAgcHJvbWlzZUFzc2VydHMucHVzaCgKLSAgICBwcm9taXNlX3JlamVjdHModCwgdGhlRXJyb3Is
IHJlYWRlcjIuY2xvc2VkKSwKLSAgICBwcm9taXNlX3JlamVjdHModCwgdGhlRXJyb3IsIHJlYWRl
cjIucmVhZCgpKQotICApOwotCi0gIHJldHVybiBQcm9taXNlLmFsbChwcm9taXNlQXNzZXJ0cyk7
Ci0KLX0sICdHZXR0aW5nIGEgc2Vjb25kIHJlYWRlciBhZnRlciBlcnJvcmluZyB0aGUgc3RyZWFt
IGFuZCByZWxlYXNpbmcgdGhlIHJlYWRlciBzaG91bGQgc3VjY2VlZCcpOwotCi1wcm9taXNlX3Rl
c3QodCA9PiB7Ci0KLSAgbGV0IGNvbnRyb2xsZXI7Ci0gIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxl
U3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0gICAgICBjb250cm9sbGVyID0gYzsKLSAgICB9Ci0g
IH0pOwotCi0gIGNvbnN0IHByb21pc2UgPSBycy5nZXRSZWFkZXIoKS5jbG9zZWQudGhlbigKLSAg
ICB0LnVucmVhY2hlZF9mdW5jKCdjbG9zZWQgcHJvbWlzZSBzaG91bGQgbm90IGJlIGZ1bGZpbGxl
ZCB3aGVuIHN0cmVhbSBpcyBlcnJvcmVkJyksCi0gICAgZXJyID0+IHsKLSAgICAgIGFzc2VydF9l
cXVhbHMoZXJyLCB1bmRlZmluZWQsICdwYXNzZWQgZXJyb3Igc2hvdWxkIGJlIHVuZGVmaW5lZCBh
cyBpdCB3YXMnKTsKLSAgICB9Ci0gICk7Ci0KLSAgY29udHJvbGxlci5lcnJvcigpOwotICByZXR1
cm4gcHJvbWlzZTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtUmVhZGVyIGNsb3NlZCBwcm9taXNlIHNo
b3VsZCBiZSByZWplY3RlZCB3aXRoIHVuZGVmaW5lZCBpZiB0aGF0IGlzIHRoZSBlcnJvcicpOwot
Ci0KLXByb21pc2VfdGVzdCh0ID0+IHsKLQotICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVh
bSh7Ci0gICAgc3RhcnQoKSB7Ci0gICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoKTsKLSAgICB9
Ci0gIH0pOwotCi0gIHJldHVybiBycy5nZXRSZWFkZXIoKS5yZWFkKCkudGhlbigKLSAgICB0LnVu
cmVhY2hlZF9mdW5jKCdyZWFkIHByb21pc2Ugc2hvdWxkIG5vdCBiZSBmdWxmaWxsZWQgd2hlbiBz
dHJlYW0gaXMgZXJyb3JlZCcpLAotICAgIGVyciA9PiB7Ci0gICAgICBhc3NlcnRfZXF1YWxzKGVy
ciwgdW5kZWZpbmVkLCAncGFzc2VkIGVycm9yIHNob3VsZCBiZSB1bmRlZmluZWQgYXMgaXQgd2Fz
Jyk7Ci0gICAgfQotICApOwotCi19LCAnUmVhZGFibGVTdHJlYW1SZWFkZXI6IGlmIHN0YXJ0IHJl
amVjdHMgd2l0aCBubyBwYXJhbWV0ZXIsIGl0IHNob3VsZCBlcnJvciB0aGUgc3RyZWFtIHdpdGgg
YW4gdW5kZWZpbmVkIGVycm9yJyk7Ci0KLXByb21pc2VfdGVzdCh0ID0+IHsKLQotICBjb25zdCB0
aGVFcnJvciA9IHsgbmFtZTogJ3VuaXF1ZSBzdHJpbmcnIH07Ci0gIGxldCBjb250cm9sbGVyOwot
ICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAg
Y29udHJvbGxlciA9IGM7Ci0gICAgfQotICB9KTsKLQotICBjb25zdCBwcm9taXNlID0gcHJvbWlz
ZV9yZWplY3RzKHQsIHRoZUVycm9yLCBycy5nZXRSZWFkZXIoKS5jbG9zZWQpOwotCi0gIGNvbnRy
b2xsZXIuZXJyb3IodGhlRXJyb3IpOwotICByZXR1cm4gcHJvbWlzZTsKLQotfSwgJ0Vycm9yaW5n
IGEgUmVhZGFibGVTdHJlYW0gYWZ0ZXIgY2hlY2tpbmcgY2xvc2VkIHNob3VsZCByZWplY3QgUmVh
ZGFibGVTdHJlYW1SZWFkZXIgY2xvc2VkIHByb21pc2UnKTsKLQotcHJvbWlzZV90ZXN0KHQgPT4g
ewotCi0gIGNvbnN0IHRoZUVycm9yID0geyBuYW1lOiAndW5pcXVlIHN0cmluZycgfTsKLSAgbGV0
IGNvbnRyb2xsZXI7Ci0gIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFy
dChjKSB7Ci0gICAgICBjb250cm9sbGVyID0gYzsKLSAgICB9Ci0gIH0pOwotCi0gIGNvbnRyb2xs
ZXIuZXJyb3IodGhlRXJyb3IpOwotCi0gIC8vIExldCdzIGNhbGwgZ2V0UmVhZGVyIHR3aWNlIGZv
ciBleHRyYSB0ZXN0IGNvdmVyYWdlIG9mIHRoaXMgY29kZSBwYXRoLgotICBycy5nZXRSZWFkZXIo
KS5yZWxlYXNlTG9jaygpOwotCi0gIHJldHVybiBwcm9taXNlX3JlamVjdHModCwgdGhlRXJyb3Is
IHJzLmdldFJlYWRlcigpLmNsb3NlZCk7Ci0KLX0sICdFcnJvcmluZyBhIFJlYWRhYmxlU3RyZWFt
IGJlZm9yZSBjaGVja2luZyBjbG9zZWQgc2hvdWxkIHJlamVjdCBSZWFkYWJsZVN0cmVhbVJlYWRl
ciBjbG9zZWQgcHJvbWlzZScpOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotCi0gIGxldCBjb250
cm9sbGVyOwotICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykg
ewotICAgICAgY29udHJvbGxlciA9IGM7Ci0gICAgfQotICB9KTsKLSAgY29uc3QgcmVhZGVyID0g
cnMuZ2V0UmVhZGVyKCk7Ci0KLSAgY29uc3QgcHJvbWlzZSA9IFByb21pc2UuYWxsKFsKLSAgICBy
ZWFkZXIucmVhZCgpLnRoZW4ocmVzdWx0ID0+IHsKLSAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxz
KHJlc3VsdCwgeyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0sICdyZWFkKCkgc2hvdWxk
IGZ1bGZpbGwgd2l0aCBjbG9zZSAoMSknKTsKLSAgICB9KSwKLSAgICByZWFkZXIucmVhZCgpLnRo
ZW4ocmVzdWx0ID0+IHsKLSAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdCwgeyB2YWx1
ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0sICdyZWFkKCkgc2hvdWxkIGZ1bGZpbGwgd2l0aCBj
bG9zZSAoMiknKTsKLSAgICB9KSwKLSAgICByZWFkZXIuY2xvc2VkCi0gIF0pOwotCi0gIGNvbnRy
b2xsZXIuY2xvc2UoKTsKLSAgcmV0dXJuIHByb21pc2U7Ci0KLX0sICdSZWFkaW5nIHR3aWNlIG9u
IGEgc3RyZWFtIHRoYXQgZ2V0cyBjbG9zZWQnKTsKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLQot
ICBsZXQgY29udHJvbGxlcjsKLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAg
IHN0YXJ0KGMpIHsKLSAgICAgIGNvbnRyb2xsZXIgPSBjOwotICAgIH0KLSAgfSk7Ci0KLSAgY29u
dHJvbGxlci5jbG9zZSgpOwotICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKLQotICBy
ZXR1cm4gUHJvbWlzZS5hbGwoWwotICAgIHJlYWRlci5yZWFkKCkudGhlbihyZXN1bHQgPT4gewot
ICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0LCB7IHZhbHVlOiB1bmRlZmluZWQsIGRv
bmU6IHRydWUgfSwgJ3JlYWQoKSBzaG91bGQgZnVsZmlsbCB3aXRoIGNsb3NlICgxKScpOwotICAg
IH0pLAotICAgIHJlYWRlci5yZWFkKCkudGhlbihyZXN1bHQgPT4gewotICAgICAgYXNzZXJ0X29i
amVjdF9lcXVhbHMocmVzdWx0LCB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSwgJ3Jl
YWQoKSBzaG91bGQgZnVsZmlsbCB3aXRoIGNsb3NlICgyKScpOwotICAgIH0pLAotICAgIHJlYWRl
ci5jbG9zZWQKLSAgXSk7Ci0KLX0sICdSZWFkaW5nIHR3aWNlIG9uIGEgY2xvc2VkIHN0cmVhbScp
OwotCi1wcm9taXNlX3Rlc3QodCA9PiB7Ci0KLSAgbGV0IGNvbnRyb2xsZXI7Ci0gIGNvbnN0IHJz
ID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0gICAgICBjb250cm9sbGVy
ID0gYzsKLSAgICB9Ci0gIH0pOwotCi0gIGNvbnN0IG15RXJyb3IgPSB7IG5hbWU6ICdtYXNoZWQg
cG90YXRvZXMnIH07Ci0gIGNvbnRyb2xsZXIuZXJyb3IobXlFcnJvcik7Ci0KLSAgY29uc3QgcmVh
ZGVyID0gcnMuZ2V0UmVhZGVyKCk7Ci0KLSAgcmV0dXJuIFByb21pc2UuYWxsKFsKLSAgICBwcm9t
aXNlX3JlamVjdHModCwgbXlFcnJvciwgcmVhZGVyLnJlYWQoKSksCi0gICAgcHJvbWlzZV9yZWpl
Y3RzKHQsIG15RXJyb3IsIHJlYWRlci5yZWFkKCkpLAotICAgIHByb21pc2VfcmVqZWN0cyh0LCBt
eUVycm9yLCByZWFkZXIuY2xvc2VkKQotICBdKTsKLQotfSwgJ1JlYWRpbmcgdHdpY2Ugb24gYW4g
ZXJyb3JlZCBzdHJlYW0nKTsKLQotcHJvbWlzZV90ZXN0KHQgPT4gewotCi0gIGxldCBjb250cm9s
bGVyOwotICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewot
ICAgICAgY29udHJvbGxlciA9IGM7Ci0gICAgfQotICB9KTsKLQotICBjb25zdCBteUVycm9yID0g
eyBuYW1lOiAnbWFzaGVkIHBvdGF0b2VzJyB9OwotICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFk
ZXIoKTsKLQotICBjb25zdCBwcm9taXNlID0gUHJvbWlzZS5hbGwoWwotICAgIHByb21pc2VfcmVq
ZWN0cyh0LCBteUVycm9yLCByZWFkZXIucmVhZCgpKSwKLSAgICBwcm9taXNlX3JlamVjdHModCwg
bXlFcnJvciwgcmVhZGVyLnJlYWQoKSksCi0gICAgcHJvbWlzZV9yZWplY3RzKHQsIG15RXJyb3Is
IHJlYWRlci5jbG9zZWQpCi0gIF0pOwotCi0gIGNvbnRyb2xsZXIuZXJyb3IobXlFcnJvcik7Ci0g
IHJldHVybiBwcm9taXNlOwotCi19LCAnUmVhZGluZyB0d2ljZSBvbiBhIHN0cmVhbSB0aGF0IGdl
dHMgZXJyb3JlZCcpOwotCi1kb25lKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9yZWFkYWJs
ZS1zdHJlYW0tcmVhZGVyLnNlcnZpY2V3b3JrZXIuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0
cmVhbXMvcmVhZGFibGUtc3RyZWFtLXJlYWRlci5zZXJ2aWNld29ya2VyLmh0dHBzLWV4cGVjdGVk
LnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGEyNDM0OGRkYWY0ODBjMjg4YWM5
NzFlZjAxNzM4MzU2OGE0OWYwOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW0tcmVhZGVyLnNlcnZpY2V3b3Jr
ZXIuaHR0cHMtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotCi1Q
QVNTIFNlcnZpY2Ugd29ya2VyIHRlc3Qgc2V0dXAgCi1QQVNTIENhbiBnZXQgdGhlIFJlYWRhYmxl
U3RyZWFtUmVhZGVyIGNvbnN0cnVjdG9yIGluZGlyZWN0bHkgCi1QQVNTIFJlYWRhYmxlU3RyZWFt
UmVhZGVyIGNvbnN0cnVjdG9yIHNob3VsZCBnZXQgYSBSZWFkYWJsZVN0cmVhbSBvYmplY3QgYXMg
YXJndW1lbnQgCi1QQVNTIFJlYWRhYmxlU3RyZWFtUmVhZGVyIGluc3RhbmNlcyBzaG91bGQgaGF2
ZSB0aGUgY29ycmVjdCBsaXN0IG9mIHByb3BlcnRpZXMgCi1QQVNTIFJlYWRhYmxlU3RyZWFtUmVh
ZGVyIGNsb3NlZCBzaG91bGQgYWx3YXlzIHJldHVybiB0aGUgc2FtZSBwcm9taXNlIG9iamVjdCAK
LVBBU1MgQ29uc3RydWN0aW5nIGEgUmVhZGFibGVTdHJlYW1SZWFkZXIgZGlyZWN0bHkgc2hvdWxk
IGZhaWwgaWYgdGhlIHN0cmVhbSBpcyBhbHJlYWR5IGxvY2tlZCAodmlhIGRpcmVjdCBjb25zdHJ1
Y3Rpb24pIAotUEFTUyBHZXR0aW5nIGEgUmVhZGFibGVTdHJlYW1SZWFkZXIgdmlhIGdldFJlYWRl
ciBzaG91bGQgZmFpbCBpZiB0aGUgc3RyZWFtIGlzIGFscmVhZHkgbG9ja2VkICh2aWEgZGlyZWN0
IGNvbnN0cnVjdGlvbikgCi1QQVNTIENvbnN0cnVjdGluZyBhIFJlYWRhYmxlU3RyZWFtUmVhZGVy
IGRpcmVjdGx5IHNob3VsZCBmYWlsIGlmIHRoZSBzdHJlYW0gaXMgYWxyZWFkeSBsb2NrZWQgKHZp
YSBnZXRSZWFkZXIpIAotUEFTUyBHZXR0aW5nIGEgUmVhZGFibGVTdHJlYW1SZWFkZXIgdmlhIGdl
dFJlYWRlciBzaG91bGQgZmFpbCBpZiB0aGUgc3RyZWFtIGlzIGFscmVhZHkgbG9ja2VkICh2aWEg
Z2V0UmVhZGVyKSAKLVBBU1MgQ29uc3RydWN0aW5nIGEgUmVhZGFibGVTdHJlYW1SZWFkZXIgZGly
ZWN0bHkgc2hvdWxkIGJlIE9LIGlmIHRoZSBzdHJlYW0gaXMgY2xvc2VkIAotUEFTUyBDb25zdHJ1
Y3RpbmcgYSBSZWFkYWJsZVN0cmVhbVJlYWRlciBkaXJlY3RseSBzaG91bGQgYmUgT0sgaWYgdGhl
IHN0cmVhbSBpcyBlcnJvcmVkIAotUEFTUyBSZWFkaW5nIGZyb20gYSByZWFkZXIgZm9yIGFuIGVt
cHR5IHN0cmVhbSB3aWxsIHdhaXQgdW50aWwgYSBjaHVuayBpcyBhdmFpbGFibGUgCi1QQVNTIGNh
bmNlbCgpIG9uIGEgcmVhZGVyIGRvZXMgbm90IHJlbGVhc2UgdGhlIHJlYWRlciAKLVBBU1MgY2xv
c2VkIHNob3VsZCBiZSBmdWxmaWxsZWQgYWZ0ZXIgc3RyZWFtIGlzIGNsb3NlZCAoLmNsb3NlZCBh
Y2Nlc3MgYmVmb3JlIGFjcXVpcmluZykgCi1QQVNTIGNsb3NlZCBzaG91bGQgYmUgcmVqZWN0ZWQg
YWZ0ZXIgcmVhZGVyIHJlbGVhc2VzIGl0cyBsb2NrIChtdWx0aXBsZSBzdHJlYW0gbG9ja3MpIAot
UEFTUyBNdWx0aXBsZSByZWFkZXJzIGNhbiBhY2Nlc3MgdGhlIHN0cmVhbSBpbiBzZXF1ZW5jZSAK
LVBBU1MgQ2Fubm90IHVzZSBhbiBhbHJlYWR5LXJlbGVhc2VkIHJlYWRlciB0byB1bmxvY2sgYSBz
dHJlYW0gYWdhaW4gCi1QQVNTIGNhbmNlbCgpIG9uIGEgcmVsZWFzZWQgcmVhZGVyIGlzIGEgbm8t
b3AgYW5kIGRvZXMgbm90IHBhc3MgdGhyb3VnaCAKLVBBU1MgR2V0dGluZyBhIHNlY29uZCByZWFk
ZXIgYWZ0ZXIgZXJyb3JpbmcgdGhlIHN0cmVhbSBhbmQgcmVsZWFzaW5nIHRoZSByZWFkZXIgc2hv
dWxkIHN1Y2NlZWQgCi1QQVNTIFJlYWRhYmxlU3RyZWFtUmVhZGVyIGNsb3NlZCBwcm9taXNlIHNo
b3VsZCBiZSByZWplY3RlZCB3aXRoIHVuZGVmaW5lZCBpZiB0aGF0IGlzIHRoZSBlcnJvciAKLVBB
U1MgUmVhZGFibGVTdHJlYW1SZWFkZXI6IGlmIHN0YXJ0IHJlamVjdHMgd2l0aCBubyBwYXJhbWV0
ZXIsIGl0IHNob3VsZCBlcnJvciB0aGUgc3RyZWFtIHdpdGggYW4gdW5kZWZpbmVkIGVycm9yIAot
UEFTUyBFcnJvcmluZyBhIFJlYWRhYmxlU3RyZWFtIGFmdGVyIGNoZWNraW5nIGNsb3NlZCBzaG91
bGQgcmVqZWN0IFJlYWRhYmxlU3RyZWFtUmVhZGVyIGNsb3NlZCBwcm9taXNlIAotUEFTUyBFcnJv
cmluZyBhIFJlYWRhYmxlU3RyZWFtIGJlZm9yZSBjaGVja2luZyBjbG9zZWQgc2hvdWxkIHJlamVj
dCBSZWFkYWJsZVN0cmVhbVJlYWRlciBjbG9zZWQgcHJvbWlzZSAKLVBBU1MgUmVhZGluZyB0d2lj
ZSBvbiBhIHN0cmVhbSB0aGF0IGdldHMgY2xvc2VkIAotUEFTUyBSZWFkaW5nIHR3aWNlIG9uIGEg
Y2xvc2VkIHN0cmVhbSAKLVBBU1MgUmVhZGluZyB0d2ljZSBvbiBhbiBlcnJvcmVkIHN0cmVhbSAK
LVBBU1MgUmVhZGluZyB0d2ljZSBvbiBhIHN0cmVhbSB0aGF0IGdldHMgZXJyb3JlZCAKLQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJl
YW1zL3JlYWRhYmxlLXN0cmVhbXMvcmVhZGFibGUtc3RyZWFtLXJlYWRlci5zZXJ2aWNld29ya2Vy
Lmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW0tcmVhZGVyLnNlcnZpY2V3
b3JrZXIuaHR0cHMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2M4YWZlMDNh
MjEzNjQ1YWUxZmEyZmU3MjRkNzcwOTlmNTM4NGZiZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW0tcmVhZGVy
LnNlcnZpY2V3b3JrZXIuaHR0cHMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAK
LTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHRpdGxlPnJlYWRhYmxl
LXN0cmVhbS1yZWFkZXIuanMgc2VydmljZSB3b3JrZXIgd3JhcHBlciBmaWxlPC90aXRsZT4KLQot
PHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlw
dCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlw
dCBzcmM9Ii9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvcmVzb3VyY2VzL3Rlc3QtaGVs
cGVycy5zdWIuanMiPjwvc2NyaXB0PgotCi08c2NyaXB0PgotJ3VzZSBzdHJpY3QnOwotc2Vydmlj
ZV93b3JrZXJfdGVzdCgncmVhZGFibGUtc3RyZWFtLXJlYWRlci5qcycsICdTZXJ2aWNlIHdvcmtl
ciB0ZXN0IHNldHVwJyk7Ci08L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3JlYWRh
YmxlLXN0cmVhbS1yZWFkZXIuc2hhcmVkd29ya2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1z
L3JlYWRhYmxlLXN0cmVhbS1yZWFkZXIuc2hhcmVkd29ya2VyLWV4cGVjdGVkLnR4dApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDlkNWQyNTA5ZDc4NDdlOGNkNmZlNjYwNmFhNjBjZGQz
M2FhNDc0ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFi
bGUtc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW0tcmVhZGVyLnNoYXJlZHdvcmtlci1leHBlY3RlZC50
eHQKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLUNPTlNPTEUgTUVTU0FHRTogUmVmZXJl
bmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IFNoYXJlZFdvcmtlcgotCi1IYXJuZXNzIEVy
cm9yIChGQUlMKSwgbWVzc2FnZSA9IFJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxl
OiBTaGFyZWRXb3JrZXIKLQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9yZWFkYWJsZS1zdHJl
YW0tcmVhZGVyLnNoYXJlZHdvcmtlci5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvcmVhZGFibGUtc3RyZWFt
LXJlYWRlci5zaGFyZWR3b3JrZXIuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
Mjc3ZTRlZDIzODBkODQwNzkwYTc4ZjFjZGJmYjc0MmE0NDA0NGEzOC4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9yZWFkYWJsZS1zdHJl
YW0tcmVhZGVyLnNoYXJlZHdvcmtlci5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBA
QAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08dGl0bGU+cmVhZGFi
bGUtc3RyZWFtLXJlYWRlci5qcyBzaGFyZWQgd29ya2VyIHdyYXBwZXIgZmlsZTwvdGl0bGU+Ci0K
LTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3Jp
cHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLQotPHNj
cmlwdD4KLSd1c2Ugc3RyaWN0JzsKLWZldGNoX3Rlc3RzX2Zyb21fd29ya2VyKG5ldyBTaGFyZWRX
b3JrZXIoJ3JlYWRhYmxlLXN0cmVhbS1yZWFkZXIuanMnKSk7Ci08L3NjcmlwdD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9y
ZWFkYWJsZS1zdHJlYW1zL3JlZW50cmFudC1zdHJhdGVnaWVzLmFueS1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFi
bGUtc3RyZWFtcy9yZWVudHJhbnQtc3RyYXRlZ2llcy5hbnktZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjFmYTQyMjBjNjUwYjAxMDQ5MWU3ODU1ZTI0NTc3OGFkM2RhYTUxMjcKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvcmVhZGFibGUtc3RyZWFtcy9yZWVudHJhbnQtc3RyYXRlZ2llcy5hbnktZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsMTIgQEAKKworUEFTUyBlbnF1ZXVlKCkgaW5zaWRlIHNpemUoKSBzaG91bGQg
d29yayAKK1BBU1MgY2xvc2UoKSBpbnNpZGUgc2l6ZSgpIHNob3VsZCBub3QgY3Jhc2ggCitQQVNT
IGNsb3NlIHJlcXVlc3QgaW5zaWRlIHNpemUoKSBzaG91bGQgd29yayAKK1BBU1MgZXJyb3IoKSBp
bnNpZGUgc2l6ZSgpIHNob3VsZCB3b3JrIAorUEFTUyBkZXNpcmVkU2l6ZSBpbnNpZGUgc2l6ZSgp
IHNob3VsZCB3b3JrIAorUEFTUyBjYW5jZWwoKSBpbnNpZGUgc2l6ZSgpIHNob3VsZCB3b3JrIAor
UEFTUyBwaXBlVG8oKSBpbnNpZGUgc2l6ZSgpIHNob3VsZCBiZWhhdmUgYXMgZXhwZWN0ZWQgCitQ
QVNTIHJlYWQoKSBpbnNpZGUgb2Ygc2l6ZSgpIHNob3VsZCBiZWhhdmUgYXMgZXhwZWN0ZWQgCitQ
QVNTIGdldFJlYWRlcigpIGluc2lkZSBzaXplKCkgc2hvdWxkIHdvcmsgCitQQVNTIHRlZSgpIGlu
c2lkZSBzaXplKCkgc2hvdWxkIHdvcmsgCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3JlZW50
cmFudC1zdHJhdGVnaWVzLmFueS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvcmVlbnRyYW50LXN0cmF0ZWdp
ZXMuYW55Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjM4MjkxMzUyOGU2OTNiM2E1ZDU2YzY2MGE0NTA2MDk4
MGI1NDhjMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3JlZW50cmFudC1zdHJhdGVn
aWVzLmFueS5odG1sCkBAIC0wLDAgKzEgQEAKKzwhLS0gVGhpcyBmaWxlIGlzIHJlcXVpcmVkIGZv
ciBXZWJLaXQgdGVzdCBpbmZyYXN0cnVjdHVyZSB0byBydW4gdGhlIHRlbXBsYXRlZCB0ZXN0IC0t
PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3Jl
ZW50cmFudC1zdHJhdGVnaWVzLmFueS5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3JlZW50cmFudC1zdHJhdGVn
aWVzLmFueS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMDJkMDhiMGFjYzUwYTQzZGJlOTg3ZDIzZDgzOTQ0MGE1
MjEyMDM2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvcmVlbnRyYW50LXN0cmF0ZWdp
ZXMuYW55LmpzCkBAIC0wLDAgKzEsMjY0IEBACisvLyBNRVRBOiBnbG9iYWw9d2luZG93LHdvcmtl
cixqc3NoZWxsCisvLyBNRVRBOiBzY3JpcHQ9Li4vcmVzb3VyY2VzL3JlY29yZGluZy1zdHJlYW1z
LmpzCisvLyBNRVRBOiBzY3JpcHQ9Li4vcmVzb3VyY2VzL3JzLXV0aWxzLmpzCisvLyBNRVRBOiBz
Y3JpcHQ9Li4vcmVzb3VyY2VzL3Rlc3QtdXRpbHMuanMKKyd1c2Ugc3RyaWN0JzsKKworLy8gVGhl
IHNpemUoKSBmdW5jdGlvbiBvZiB0aGUgcmVhZGFibGUgc3RyYXRlZ3kgY2FuIHJlLWVudHJhbnRs
eSBjYWxsIGJhY2sgaW50byB0aGUgUmVhZGFibGVTdHJlYW0gaW1wbGVtZW50YXRpb24uIFRoaXMK
Ky8vIG1ha2VzIGl0IHJpc2t5IHRvIGNhY2hlIHN0YXRlIGFjcm9zcyB0aGUgY2FsbCB0byBSZWFk
YWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyRW5xdWV1ZS4gVGhlc2UgdGVzdHMgYXR0ZW1wdCB0
byBjYXRjaAorLy8gc3VjaCBlcnJvcnMuIFRoZXkgYXJlIHNlcGFyYXRlZCBmcm9tIHRoZSBvdGhl
ciBzdHJhdGVneSB0ZXN0cyBiZWNhdXNlIG5vIHJlYWwgdXNlciBjb2RlIHNob3VsZCBldmVyIGRv
IGFueXRoaW5nIGxpa2UKKy8vIHRoaXMuCisKK2NvbnN0IGVycm9yMSA9IG5ldyBFcnJvcignZXJy
b3IxJyk7CitlcnJvcjEubmFtZSA9ICdlcnJvcjEnOworCitwcm9taXNlX3Rlc3QoKCkgPT4gewor
ICBsZXQgY29udHJvbGxlcjsKKyAgbGV0IGNhbGxzID0gMDsKKyAgY29uc3QgcnMgPSBuZXcgUmVh
ZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGNvbnRyb2xsZXIgPSBjOworICAg
IH0KKyAgfSwgeworICAgIHNpemUoKSB7CisgICAgICArK2NhbGxzOworICAgICAgaWYgKGNhbGxz
IDwgMikgeworICAgICAgICBjb250cm9sbGVyLmVucXVldWUoJ2InKTsKKyAgICAgIH0KKyAgICAg
IHJldHVybiAxOworICAgIH0KKyAgfSk7CisgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYScpOworICBj
b250cm9sbGVyLmNsb3NlKCk7CisgIHJldHVybiByZWFkYWJsZVN0cmVhbVRvQXJyYXkocnMpCisg
ICAgICAudGhlbihhcnJheSA9PiBhc3NlcnRfYXJyYXlfZXF1YWxzKGFycmF5LCBbJ2InLCAnYSdd
LCAnYXJyYXkgc2hvdWxkIGNvbnRhaW4gdHdvIGNodW5rcycpKTsKK30sICdlbnF1ZXVlKCkgaW5z
aWRlIHNpemUoKSBzaG91bGQgd29yaycpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworICBsZXQg
Y29udHJvbGxlcjsKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0
KGMpIHsKKyAgICAgIGNvbnRyb2xsZXIgPSBjOworICAgIH0KKyAgfSwgeworICAgIHNpemUoKSB7
CisgICAgICAvLyBUaGUgcXVldWUgaXMgZW1wdHkuCisgICAgICBjb250cm9sbGVyLmNsb3NlKCk7
CisgICAgICAvLyBUaGUgc3RhdGUgaGFzIGdvbmUgZnJvbSAicmVhZGFibGUiIHRvICJjbG9zZWQi
LgorICAgICAgcmV0dXJuIDE7CisgICAgICAvLyBUaGlzIGNodW5rIHdpbGwgYmUgZW5xdWV1ZWQs
IGJ1dCB3aWxsIGJlIGltcG9zc2libGUgdG8gcmVhZCBiZWNhdXNlIHRoZSBzdGF0ZSBpcyBhbHJl
YWR5ICJjbG9zZWQiLgorICAgIH0KKyAgfSk7CisgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYScpOwor
ICByZXR1cm4gcmVhZGFibGVTdHJlYW1Ub0FycmF5KHJzKQorICAgICAgLnRoZW4oYXJyYXkgPT4g
YXNzZXJ0X2FycmF5X2VxdWFscyhhcnJheSwgW10sICdhcnJheSBzaG91bGQgY29udGFpbiBubyBj
aHVua3MnKSk7CisgIC8vIFRoZSBjaHVuayAnYScgaXMgc3RpbGwgaW4gcnMncyBxdWV1ZS4gSXQg
aXMgY2xvc2VkIHNvICdhJyBjYW5ub3QgYmUgcmVhZC4KK30sICdjbG9zZSgpIGluc2lkZSBzaXpl
KCkgc2hvdWxkIG5vdCBjcmFzaCcpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworICBsZXQgY29u
dHJvbGxlcjsKKyAgbGV0IGNhbGxzID0gMDsKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJl
YW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGNvbnRyb2xsZXIgPSBjOworICAgIH0KKyAgfSwg
eworICAgIHNpemUoKSB7CisgICAgICArK2NhbGxzOworICAgICAgaWYgKGNhbGxzID09PSAyKSB7
CisgICAgICAgIC8vIFRoZSBxdWV1ZSBjb250YWlucyBvbmUgY2h1bmsuCisgICAgICAgIGNvbnRy
b2xsZXIuY2xvc2UoKTsKKyAgICAgICAgLy8gVGhlIHN0YXRlIGlzIHN0aWxsICJyZWFkYWJsZSIs
IGJ1dCBjbG9zZVJlcXVlc3QgaXMgbm93IHRydWUuCisgICAgICB9CisgICAgICByZXR1cm4gMTsK
KyAgICB9CisgIH0pOworICBjb250cm9sbGVyLmVucXVldWUoJ2EnKTsKKyAgY29udHJvbGxlci5l
bnF1ZXVlKCdiJyk7CisgIHJldHVybiByZWFkYWJsZVN0cmVhbVRvQXJyYXkocnMpCisgICAgICAu
dGhlbihhcnJheSA9PiBhc3NlcnRfYXJyYXlfZXF1YWxzKGFycmF5LCBbJ2EnLCAnYiddLCAnYXJy
YXkgc2hvdWxkIGNvbnRhaW4gdHdvIGNodW5rcycpKTsKK30sICdjbG9zZSByZXF1ZXN0IGluc2lk
ZSBzaXplKCkgc2hvdWxkIHdvcmsnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBsZXQgY29u
dHJvbGxlcjsKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMp
IHsKKyAgICAgIGNvbnRyb2xsZXIgPSBjOworICAgIH0KKyAgfSwgeworICAgIHNpemUoKSB7Cisg
ICAgICBjb250cm9sbGVyLmVycm9yKGVycm9yMSk7CisgICAgICByZXR1cm4gMTsKKyAgICB9Cisg
IH0pOworICBjb250cm9sbGVyLmVucXVldWUoJ2EnKTsKKyAgcmV0dXJuIHByb21pc2VfcmVqZWN0
c19leGFjdGx5KHQsIGVycm9yMSwgcnMuZ2V0UmVhZGVyKCkucmVhZCgpLCAncmVhZCgpIHNob3Vs
ZCByZWplY3QnKTsKK30sICdlcnJvcigpIGluc2lkZSBzaXplKCkgc2hvdWxkIHdvcmsnKTsKKwor
cHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgbGV0IGNvbnRyb2xsZXI7CisgIGNvbnN0IHJzID0gbmV3
IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjb250cm9sbGVyID0gYzsK
KyAgICB9CisgIH0sIHsKKyAgICBzaXplKCkgeworICAgICAgYXNzZXJ0X2VxdWFscyhjb250cm9s
bGVyLmRlc2lyZWRTaXplLCAxLCAnZGVzaXJlZFNpemUgc2hvdWxkIGJlIDEnKTsKKyAgICAgIHJl
dHVybiAxOworICAgIH0sCisgICAgaGlnaFdhdGVyTWFyazogMQorICB9KTsKKyAgY29udHJvbGxl
ci5lbnF1ZXVlKCdhJyk7CisgIGNvbnRyb2xsZXIuY2xvc2UoKTsKKyAgcmV0dXJuIHJlYWRhYmxl
U3RyZWFtVG9BcnJheShycykKKyAgICAgIC50aGVuKGFycmF5ID0+IGFzc2VydF9hcnJheV9lcXVh
bHMoYXJyYXksIFsnYSddLCAnYXJyYXkgc2hvdWxkIGNvbnRhaW4gb25lIGNodW5rJykpOworfSwg
J2Rlc2lyZWRTaXplIGluc2lkZSBzaXplKCkgc2hvdWxkIHdvcmsnKTsKKworcHJvbWlzZV90ZXN0
KHQgPT4geworICBsZXQgY2FuY2VsUHJvbWlzZTsKKyAgbGV0IGNvbnRyb2xsZXI7CisgIGNvbnN0
IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjb250cm9s
bGVyID0gYzsKKyAgICB9LAorICAgIGNhbmNlbDogdC5zdGVwX2Z1bmMocmVhc29uID0+IHsKKyAg
ICAgIGFzc2VydF9lcXVhbHMocmVhc29uLCBlcnJvcjEsICdyZWFzb24gc2hvdWxkIGJlIGVycm9y
MScpOworICAgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IGNvbnRyb2xsZXIu
ZW5xdWV1ZSgpLCAnZW5xdWV1ZSgpIHNob3VsZCB0aHJvdycpOworICAgIH0pCisgIH0sIHsKKyAg
ICBzaXplKCkgeworICAgICAgY2FuY2VsUHJvbWlzZSA9IHJzLmNhbmNlbChlcnJvcjEpOworICAg
ICAgcmV0dXJuIDE7CisgICAgfSwKKyAgICBoaWdoV2F0ZXJNYXJrOiBJbmZpbml0eQorICB9KTsK
KyAgY29udHJvbGxlci5lbnF1ZXVlKCdhJyk7CisgIGNvbnN0IHJlYWRlciA9IHJzLmdldFJlYWRl
cigpOworICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAgIHJlYWRlci5jbG9zZWQsCisgICAgY2Fu
Y2VsUHJvbWlzZQorICBdKTsKK30sICdjYW5jZWwoKSBpbnNpZGUgc2l6ZSgpIHNob3VsZCB3b3Jr
Jyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisgIGxldCBjb250cm9sbGVyOworICBsZXQgcGlw
ZVRvUHJvbWlzZTsKKyAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSgpOworICBj
b25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgY29u
dHJvbGxlciA9IGM7CisgICAgfQorICB9LCB7CisgICAgc2l6ZSgpIHsKKyAgICAgIGlmICghcGlw
ZVRvUHJvbWlzZSkgeworICAgICAgICBwaXBlVG9Qcm9taXNlID0gcnMucGlwZVRvKHdzKTsKKyAg
ICAgIH0KKyAgICAgIHJldHVybiAxOworICAgIH0sCisgICAgaGlnaFdhdGVyTWFyazogMQorICB9
KTsKKyAgY29udHJvbGxlci5lbnF1ZXVlKCdhJyk7CisgIGFzc2VydF9ub3RfZXF1YWxzKHBpcGVU
b1Byb21pc2UsIHVuZGVmaW5lZCk7CisKKyAgLy8gU29tZSBwaXBlVG8oKSBpbXBsZW1lbnRhdGlv
bnMgbmVlZCBhbiBhZGRpdGlvbmFsIGNodW5rIGVucXVldWVkIGluIG9yZGVyIGZvciB0aGUgZmly
c3Qgb25lIHRvIGJlIHByb2Nlc3NlZC4gU2VlCisgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS93aGF0
d2cvc3RyZWFtcy9pc3N1ZXMvNzk0IGZvciBiYWNrZ3JvdW5kLgorICBjb250cm9sbGVyLmVucXVl
dWUoJ2EnKTsKKworICAvLyBHaXZlIHBpcGVUbygpIGEgY2hhbmNlIHRvIHByb2Nlc3MgdGhlIHF1
ZXVlZCBjaHVua3MuCisgIHJldHVybiBkZWxheSgwKS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRf
YXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWyd3cml0ZScsICdhJywgJ3dyaXRlJywgJ2EnXSwgJ3dz
IHNob3VsZCBjb250YWluIHR3byBjaHVua3MnKTsKKyAgICBjb250cm9sbGVyLmNsb3NlKCk7Cisg
ICAgcmV0dXJuIHBpcGVUb1Byb21pc2U7CisgIH0pLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9h
cnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ3dyaXRlJywgJ2EnLCAnd3JpdGUnLCAnYScsICdjbG9z
ZSddLCAndGFyZ2V0IHNob3VsZCBoYXZlIGJlZW4gY2xvc2VkJyk7CisgIH0pOworfSwgJ3BpcGVU
bygpIGluc2lkZSBzaXplKCkgc2hvdWxkIGJlaGF2ZSBhcyBleHBlY3RlZCcpOworCitwcm9taXNl
X3Rlc3QoKCkgPT4geworICBsZXQgY29udHJvbGxlcjsKKyAgbGV0IHJlYWRQcm9taXNlOworICBs
ZXQgY2FsbHMgPSAwOworICBsZXQgcmVhZFJlc29sdmVkID0gZmFsc2U7CisgIGxldCByZWFkZXI7
CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAg
ICBjb250cm9sbGVyID0gYzsKKyAgICB9CisgIH0sIHsKKyAgICBzaXplKCkgeworICAgICAgLy8g
VGhpcyBpcyB0cmlnZ2VyZWQgYnkgY29udHJvbGxlci5lbnF1ZXVlKCkuIFRoZSBxdWV1ZSBpcyBl
bXB0eSBhbmQgdGhlcmUgYXJlIG5vIHBlbmRpbmcgcmVhZHMuIFRoaXMgcmVhZCBpcworICAgICAg
Ly8gYWRkZWQgdG8gdGhlIGxpc3Qgb2YgcGVuZGluZyByZWFkcy4KKyAgICAgIHJlYWRQcm9taXNl
ID0gcmVhZGVyLnJlYWQoKTsKKyAgICAgICsrY2FsbHM7CisgICAgICByZXR1cm4gMTsKKyAgICB9
LAorICAgIGhpZ2hXYXRlck1hcms6IDAKKyAgfSk7CisgIHJlYWRlciA9IHJzLmdldFJlYWRlcigp
OworICBjb250cm9sbGVyLmVucXVldWUoJ2EnKTsKKyAgcmVhZFByb21pc2UudGhlbigoKSA9PiB7
CisgICAgcmVhZFJlc29sdmVkID0gdHJ1ZTsKKyAgfSk7CisgIHJldHVybiBmbHVzaEFzeW5jRXZl
bnRzKCkudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X2ZhbHNlKHJlYWRSZXNvbHZlZCk7CisgICAg
Y29udHJvbGxlci5lbnF1ZXVlKCdiJyk7CisgICAgYXNzZXJ0X2VxdWFscyhjYWxscywgMSwgJ3Np
emUoKSBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCBvbmNlJyk7CisgICAgcmV0dXJuIGRlbGF5KDAp
OworICB9KS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfdHJ1ZShyZWFkUmVzb2x2ZWQpOworICAg
IGFzc2VydF9lcXVhbHMoY2FsbHMsIDEsICdzaXplKCkgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIG9u
Y2UnKTsKKyAgICByZXR1cm4gcmVhZFByb21pc2U7CisgIH0pLnRoZW4oKHsgdmFsdWUsIGRvbmUg
fSkgPT4geworICAgIGFzc2VydF9mYWxzZShkb25lLCAnZG9uZSBzaG91bGQgYmUgZmFsc2UnKTsK
KyAgICAvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3doYXR3Zy9zdHJlYW1zL2lzc3Vlcy83OTQg
Zm9yIHdoeSB0aGlzIGNodW5rIGlzIG5vdCAnYScuCisgICAgYXNzZXJ0X2VxdWFscyh2YWx1ZSwg
J2InLCAnY2h1bmsgc2hvdWxkIGhhdmUgYmVlbiByZWFkJyk7CisgICAgYXNzZXJ0X2VxdWFscyhj
YWxscywgMSwgJ2NhbGxzIHNob3VsZCBzdGlsbCBiZSAxJyk7CisgICAgcmV0dXJuIHJlYWRlci5y
ZWFkKCk7CisgIH0pLnRoZW4oKHsgdmFsdWUsIGRvbmUgfSkgPT4geworICAgIGFzc2VydF9mYWxz
ZShkb25lLCAnZG9uZSBzaG91bGQgYmUgZmFsc2UgYWdhaW4nKTsKKyAgICBhc3NlcnRfZXF1YWxz
KHZhbHVlLCAnYScsICdjaHVuayBhIHNob3VsZCBjb21lIGFmdGVyIGInKTsKKyAgfSk7Cit9LCAn
cmVhZCgpIGluc2lkZSBvZiBzaXplKCkgc2hvdWxkIGJlaGF2ZSBhcyBleHBlY3RlZCcpOworCitw
cm9taXNlX3Rlc3QoKCkgPT4geworICBsZXQgY29udHJvbGxlcjsKKyAgbGV0IHJlYWRlcjsKKyAg
Y29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGNv
bnRyb2xsZXIgPSBjOworICAgIH0KKyAgfSwgeworICAgIHNpemUoKSB7CisgICAgICByZWFkZXIg
PSBycy5nZXRSZWFkZXIoKTsKKyAgICAgIHJldHVybiAxOworICAgIH0KKyAgfSk7CisgIGNvbnRy
b2xsZXIuZW5xdWV1ZSgnYScpOworICByZXR1cm4gcmVhZGVyLnJlYWQoKS50aGVuKCh7IHZhbHVl
LCBkb25lIH0pID0+IHsKKyAgICBhc3NlcnRfZmFsc2UoZG9uZSwgJ2RvbmUgc2hvdWxkIGJlIGZh
bHNlJyk7CisgICAgYXNzZXJ0X2VxdWFscyh2YWx1ZSwgJ2EnLCAndmFsdWUgc2hvdWxkIGJlIGEn
KTsKKyAgfSk7Cit9LCAnZ2V0UmVhZGVyKCkgaW5zaWRlIHNpemUoKSBzaG91bGQgd29yaycpOwor
Citwcm9taXNlX3Rlc3QoKCkgPT4geworICBsZXQgY29udHJvbGxlcjsKKyAgbGV0IGJyYW5jaDE7
CisgIGxldCBicmFuY2gyOworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAg
c3RhcnQoYykgeworICAgICAgY29udHJvbGxlciA9IGM7CisgICAgfQorICB9LCB7CisgICAgc2l6
ZSgpIHsKKyAgICAgIFticmFuY2gxLCBicmFuY2gyXSA9IHJzLnRlZSgpOworICAgICAgcmV0dXJu
IDE7CisgICAgfQorICB9KTsKKyAgY29udHJvbGxlci5lbnF1ZXVlKCdhJyk7CisgIGFzc2VydF90
cnVlKHJzLmxvY2tlZCwgJ3JzIHNob3VsZCBiZSBsb2NrZWQnKTsKKyAgY29udHJvbGxlci5jbG9z
ZSgpOworICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAgIHJlYWRhYmxlU3RyZWFtVG9BcnJheShi
cmFuY2gxKS50aGVuKGFycmF5ID0+IGFzc2VydF9hcnJheV9lcXVhbHMoYXJyYXksIFsnYSddLCAn
YnJhbmNoMSBzaG91bGQgaGF2ZSBvbmUgY2h1bmsnKSksCisgICAgcmVhZGFibGVTdHJlYW1Ub0Fy
cmF5KGJyYW5jaDIpLnRoZW4oYXJyYXkgPT4gYXNzZXJ0X2FycmF5X2VxdWFscyhhcnJheSwgWydh
J10sICdicmFuY2gyIHNob3VsZCBoYXZlIG9uZSBjaHVuaycpKQorICBdKTsKK30sICd0ZWUoKSBp
bnNpZGUgc2l6ZSgpIHNob3VsZCB3b3JrJyk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9yZWVu
dHJhbnQtc3RyYXRlZ2llcy5hbnkud29ya2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3Jl
ZW50cmFudC1zdHJhdGVnaWVzLmFueS53b3JrZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg2
NGU4MWE3ODZkMGQ5NzZkZGQ5NjlkNzhkZjIzMmM0NTA4OTc1N2YKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVh
ZGFibGUtc3RyZWFtcy9yZWVudHJhbnQtc3RyYXRlZ2llcy5hbnkud29ya2VyLWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDEyIEBACisKK1BBU1MgZW5xdWV1ZSgpIGluc2lkZSBzaXplKCkgc2hvdWxk
IHdvcmsgCitQQVNTIGNsb3NlKCkgaW5zaWRlIHNpemUoKSBzaG91bGQgbm90IGNyYXNoIAorUEFT
UyBjbG9zZSByZXF1ZXN0IGluc2lkZSBzaXplKCkgc2hvdWxkIHdvcmsgCitQQVNTIGVycm9yKCkg
aW5zaWRlIHNpemUoKSBzaG91bGQgd29yayAKK1BBU1MgZGVzaXJlZFNpemUgaW5zaWRlIHNpemUo
KSBzaG91bGQgd29yayAKK1BBU1MgY2FuY2VsKCkgaW5zaWRlIHNpemUoKSBzaG91bGQgd29yayAK
K0ZBSUwgcGlwZVRvKCkgaW5zaWRlIHNpemUoKSBzaG91bGQgYmVoYXZlIGFzIGV4cGVjdGVkIENh
bid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitQQVNTIHJlYWQoKSBpbnNpZGUgb2Yg
c2l6ZSgpIHNob3VsZCBiZWhhdmUgYXMgZXhwZWN0ZWQgCitQQVNTIGdldFJlYWRlcigpIGluc2lk
ZSBzaXplKCkgc2hvdWxkIHdvcmsgCitQQVNTIHRlZSgpIGluc2lkZSBzaXplKCkgc2hvdWxkIHdv
cmsgCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3JlZW50cmFudC1zdHJhdGVnaWVzLmFueS53
b3JrZXIuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3JlZW50cmFudC1zdHJhdGVnaWVzLmFueS53b3JrZXIu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4yMzgyOTEzNTI4ZTY5M2IzYTVkNTZjNjYwYTQ1MDYwOTgwYjU0OGMz
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvcmVlbnRyYW50LXN0cmF0ZWdpZXMuYW55
Lndvcmtlci5odG1sCkBAIC0wLDAgKzEgQEAKKzwhLS0gVGhpcyBmaWxlIGlzIHJlcXVpcmVkIGZv
ciBXZWJLaXQgdGVzdCBpbmZyYXN0cnVjdHVyZSB0byBydW4gdGhlIHRlbXBsYXRlZCB0ZXN0IC0t
PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3Rl
ZS5hbnktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvdGVlLmFueS1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uODMzYmUzMTAzNzg5MzlhMTgzZjM0YTI2ZjdkOGM2NjNhM2Y5NjY4ZQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3RlZS5hbnktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MzAgQEAKK0NPTlNPTEUgTUVTU0FHRTogVW5oYW5kbGVkIFByb21pc2UgUmVqZWN0aW9uOiBbb2Jq
ZWN0IE9iamVjdF0KK0NPTlNPTEUgTUVTU0FHRTogVW5oYW5kbGVkIFByb21pc2UgUmVqZWN0aW9u
OiBbb2JqZWN0IE9iamVjdF0KK0NPTlNPTEUgTUVTU0FHRTogVW5oYW5kbGVkIFByb21pc2UgUmVq
ZWN0aW9uOiBbb2JqZWN0IE9iamVjdF0KK0NPTlNPTEUgTUVTU0FHRTogVW5oYW5kbGVkIFByb21p
c2UgUmVqZWN0aW9uOiBbb2JqZWN0IE9iamVjdF0KK0NPTlNPTEUgTUVTU0FHRTogVW5oYW5kbGVk
IFByb21pc2UgUmVqZWN0aW9uOiBbb2JqZWN0IE9iamVjdF0KK0NPTlNPTEUgTUVTU0FHRTogVW5o
YW5kbGVkIFByb21pc2UgUmVqZWN0aW9uOiBbb2JqZWN0IE9iamVjdF0KKworSGFybmVzcyBFcnJv
ciAoRkFJTCksIG1lc3NhZ2UgPSBVbmhhbmRsZWQgcmVqZWN0aW9uCisKK1BBU1MgUmVhZGFibGVT
dHJlYW0gdGVlaW5nOiBycy50ZWUoKSByZXR1cm5zIGFuIGFycmF5IG9mIHR3byBSZWFkYWJsZVN0
cmVhbXMgCitQQVNTIFJlYWRhYmxlU3RyZWFtIHRlZWluZzogc2hvdWxkIGJlIGFibGUgdG8gcmVh
ZCBvbmUgYnJhbmNoIHRvIHRoZSBlbmQgd2l0aG91dCBhZmZlY3RpbmcgdGhlIG90aGVyIAorUEFT
UyBSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IHZhbHVlcyBzaG91bGQgYmUgZXF1YWwgYWNyb3NzIGVh
Y2ggYnJhbmNoIAorUEFTUyBSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IGVycm9ycyBpbiB0aGUgc291
cmNlIHNob3VsZCBwcm9wYWdhdGUgdG8gYm90aCBicmFuY2hlcyAKK1BBU1MgUmVhZGFibGVTdHJl
YW0gdGVlaW5nOiBjYW5jZWxpbmcgYnJhbmNoMSBzaG91bGQgbm90IGltcGFjdCBicmFuY2gyIAor
UEFTUyBSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IGNhbmNlbGluZyBicmFuY2gyIHNob3VsZCBub3Qg
aW1wYWN0IGJyYW5jaDEgCitQQVNTIFJlYWRhYmxlU3RyZWFtIHRlZWluZzogY2FuY2VsaW5nIGJv
dGggYnJhbmNoZXMgc2hvdWxkIGFnZ3JlZ2F0ZSB0aGUgY2FuY2VsIHJlYXNvbnMgaW50byBhbiBh
cnJheSAKK1BBU1MgUmVhZGFibGVTdHJlYW0gdGVlaW5nOiBjYW5jZWxpbmcgYm90aCBicmFuY2hl
cyBpbiByZXZlcnNlIG9yZGVyIHNob3VsZCBhZ2dyZWdhdGUgdGhlIGNhbmNlbCByZWFzb25zIGlu
dG8gYW4gYXJyYXkgCitQQVNTIFJlYWRhYmxlU3RyZWFtIHRlZWluZzogZmFpbGluZyB0byBjYW5j
ZWwgdGhlIG9yaWdpbmFsIHN0cmVhbSBzaG91bGQgY2F1c2UgY2FuY2VsKCkgdG8gcmVqZWN0IG9u
IGJyYW5jaGVzIAorUEFTUyBSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IGVycm9yaW5nIGEgdGVlZCBz
dHJlYW0gc2hvdWxkIHByb3Blcmx5IGhhbmRsZSBjYW5jZWxlZCBicmFuY2hlcyAKK1BBU1MgUmVh
ZGFibGVTdHJlYW0gdGVlaW5nOiBlcnJvcmluZyBhIHRlZWQgc3RyZWFtIHNob3VsZCBlcnJvciBi
b3RoIGJyYW5jaGVzIAorUEFTUyBSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IGNsb3NpbmcgdGhlIG9y
aWdpbmFsIHNob3VsZCBpbW1lZGlhdGVseSBjbG9zZSB0aGUgYnJhbmNoZXMgCitQQVNTIFJlYWRh
YmxlU3RyZWFtIHRlZWluZzogZXJyb3JpbmcgdGhlIG9yaWdpbmFsIHNob3VsZCBpbW1lZGlhdGVs
eSBlcnJvciB0aGUgYnJhbmNoZXMgCitQQVNTIFJlYWRhYmxlU3RyZWFtVGVlIHNob3VsZCBub3Qg
dXNlIGEgbW9kaWZpZWQgUmVhZGFibGVTdHJlYW0gY29uc3RydWN0b3IgZnJvbSB0aGUgZ2xvYmFs
IG9iamVjdCAKK0ZBSUwgUmVhZGFibGVTdHJlYW1UZWUgc2hvdWxkIG5vdCBwdWxsIG1vcmUgY2h1
bmtzIHRoYW4gY2FuIGZpdCBpbiB0aGUgYnJhbmNoIHF1ZXVlIGFzc2VydF9hcnJheV9lcXVhbHM6
IHB1bGwgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIG9uY2UgbGVuZ3RocyBkaWZmZXIsIGV4cGVjdGVk
IGFycmF5IFsicHVsbCJdIGxlbmd0aCAxLCBnb3QgWyJwdWxsIiwgInB1bGwiXSBsZW5ndGggMgor
RkFJTCBSZWFkYWJsZVN0cmVhbVRlZSBzaG91bGQgb25seSBwdWxsIGVub3VnaCB0byBmaWxsIHRo
ZSBlbXB0aWVzdCBxdWV1ZSBhc3NlcnRfYXJyYXlfZXF1YWxzOiBwdWxsIHNob3VsZCBiZSBjYWxs
ZWQgdHdpY2UgbGVuZ3RocyBkaWZmZXIsIGV4cGVjdGVkIGFycmF5IFsicHVsbCIsICJwdWxsIl0g
bGVuZ3RoIDIsIGdvdCBbInB1bGwiLCAicHVsbCIsICJwdWxsIiwgInB1bGwiXSBsZW5ndGggNAor
UEFTUyBSZWFkYWJsZVN0cmVhbVRlZSBzaG91bGQgbm90IHB1bGwgd2hlbiBvcmlnaW5hbCBpcyBh
bHJlYWR5IGVycm9yZWQgCitGQUlMIFJlYWRhYmxlU3RyZWFtVGVlIHN0b3BzIHB1bGxpbmcgd2hl
biBvcmlnaW5hbCBzdHJlYW0gZXJyb3JzIHdoaWxlIGJyYW5jaCAxIGlzIHJlYWRpbmcgYXNzZXJ0
X2FycmF5X2VxdWFsczogcHVsbCBzaG91bGQgYmUgY2FsbGVkIG9uY2UgbGVuZ3RocyBkaWZmZXIs
IGV4cGVjdGVkIGFycmF5IFsicHVsbCJdIGxlbmd0aCAxLCBnb3QgWyJwdWxsIiwgInB1bGwiXSBs
ZW5ndGggMgorRkFJTCBSZWFkYWJsZVN0cmVhbVRlZSBzdG9wcyBwdWxsaW5nIHdoZW4gb3JpZ2lu
YWwgc3RyZWFtIGVycm9ycyB3aGlsZSBicmFuY2ggMiBpcyByZWFkaW5nIGFzc2VydF9hcnJheV9l
cXVhbHM6IHB1bGwgc2hvdWxkIGJlIGNhbGxlZCBvbmNlIGxlbmd0aHMgZGlmZmVyLCBleHBlY3Rl
ZCBhcnJheSBbInB1bGwiXSBsZW5ndGggMSwgZ290IFsicHVsbCIsICJwdWxsIl0gbGVuZ3RoIDIK
K0ZBSUwgUmVhZGFibGVTdHJlYW1UZWUgc3RvcHMgcHVsbGluZyB3aGVuIG9yaWdpbmFsIHN0cmVh
bSBlcnJvcnMgd2hpbGUgYm90aCBicmFuY2hlcyBhcmUgcmVhZGluZyBhc3NlcnRfYXJyYXlfZXF1
YWxzOiBwdWxsIHNob3VsZCBiZSBjYWxsZWQgb25jZSBsZW5ndGhzIGRpZmZlciwgZXhwZWN0ZWQg
YXJyYXkgWyJwdWxsIl0gbGVuZ3RoIDEsIGdvdCBbInB1bGwiLCAicHVsbCJdIGxlbmd0aCAyCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3RlZS5hbnkuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3RlZS5h
bnkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4yMzgyOTEzNTI4ZTY5M2IzYTVkNTZjNjYwYTQ1MDYwOTgwYjU0
OGMzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvdGVlLmFueS5odG1sCkBAIC0wLDAg
KzEgQEAKKzwhLS0gVGhpcyBmaWxlIGlzIHJlcXVpcmVkIGZvciBXZWJLaXQgdGVzdCBpbmZyYXN0
cnVjdHVyZSB0byBydW4gdGhlIHRlbXBsYXRlZCB0ZXN0IC0tPgpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3RlZS5hbnkuanMgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFt
cy90ZWUuYW55LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI2YTk1MzY4YWE1ZTY0ZGY2Y2E5ZTE1YzAzNGExYjQy
ODg4ODM2MjIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy90ZWUuYW55LmpzCkBAIC0w
LDAgKzEsNDUxIEBACisvLyBNRVRBOiBnbG9iYWw9d2luZG93LHdvcmtlcixqc3NoZWxsCisvLyBN
RVRBOiBzY3JpcHQ9Li4vcmVzb3VyY2VzL3JzLXV0aWxzLmpzCisvLyBNRVRBOiBzY3JpcHQ9Li4v
cmVzb3VyY2VzL3Rlc3QtdXRpbHMuanMKKy8vIE1FVEE6IHNjcmlwdD0uLi9yZXNvdXJjZXMvcmVj
b3JkaW5nLXN0cmVhbXMuanMKKyd1c2Ugc3RyaWN0JzsKKwordGVzdCgoKSA9PiB7CisKKyAgY29u
c3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oKTsKKyAgY29uc3QgcmVzdWx0ID0gcnMudGVlKCk7
CisKKyAgYXNzZXJ0X3RydWUoQXJyYXkuaXNBcnJheShyZXN1bHQpLCAncmV0dXJuIHZhbHVlIHNo
b3VsZCBiZSBhbiBhcnJheScpOworICBhc3NlcnRfZXF1YWxzKHJlc3VsdC5sZW5ndGgsIDIsICdh
cnJheSBzaG91bGQgaGF2ZSBsZW5ndGggMicpOworICBhc3NlcnRfZXF1YWxzKHJlc3VsdFswXS5j
b25zdHJ1Y3RvciwgUmVhZGFibGVTdHJlYW0sICcwdGggZWxlbWVudCBzaG91bGQgYmUgYSBSZWFk
YWJsZVN0cmVhbScpOworICBhc3NlcnRfZXF1YWxzKHJlc3VsdFsxXS5jb25zdHJ1Y3RvciwgUmVh
ZGFibGVTdHJlYW0sICcxc3QgZWxlbWVudCBzaG91bGQgYmUgYSBSZWFkYWJsZVN0cmVhbScpOwor
Cit9LCAnUmVhZGFibGVTdHJlYW0gdGVlaW5nOiBycy50ZWUoKSByZXR1cm5zIGFuIGFycmF5IG9m
IHR3byBSZWFkYWJsZVN0cmVhbXMnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworCisgIGNvbnN0
IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjLmVucXVl
dWUoJ2EnKTsKKyAgICAgIGMuZW5xdWV1ZSgnYicpOworICAgICAgYy5jbG9zZSgpOworICAgIH0K
KyAgfSk7CisKKyAgY29uc3QgYnJhbmNoID0gcnMudGVlKCk7CisgIGNvbnN0IGJyYW5jaDEgPSBi
cmFuY2hbMF07CisgIGNvbnN0IGJyYW5jaDIgPSBicmFuY2hbMV07CisgIGNvbnN0IHJlYWRlcjEg
PSBicmFuY2gxLmdldFJlYWRlcigpOworICBjb25zdCByZWFkZXIyID0gYnJhbmNoMi5nZXRSZWFk
ZXIoKTsKKworICByZWFkZXIyLmNsb3NlZC50aGVuKHQudW5yZWFjaGVkX2Z1bmMoJ2JyYW5jaDIg
c2hvdWxkIG5vdCBiZSBjbG9zZWQnKSk7CisKKyAgcmV0dXJuIFByb21pc2UuYWxsKFsKKyAgICBy
ZWFkZXIxLmNsb3NlZCwKKyAgICByZWFkZXIxLnJlYWQoKS50aGVuKHIgPT4geworICAgICAgYXNz
ZXJ0X29iamVjdF9lcXVhbHMociwgeyB2YWx1ZTogJ2EnLCBkb25lOiBmYWxzZSB9LCAnZmlyc3Qg
Y2h1bmsgZnJvbSBicmFuY2gxIHNob3VsZCBiZSBjb3JyZWN0Jyk7CisgICAgfSksCisgICAgcmVh
ZGVyMS5yZWFkKCkudGhlbihyID0+IHsKKyAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHIsIHsg
dmFsdWU6ICdiJywgZG9uZTogZmFsc2UgfSwgJ3NlY29uZCBjaHVuayBmcm9tIGJyYW5jaDEgc2hv
dWxkIGJlIGNvcnJlY3QnKTsKKyAgICB9KSwKKyAgICByZWFkZXIxLnJlYWQoKS50aGVuKHIgPT4g
eworICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMociwgeyB2YWx1ZTogdW5kZWZpbmVkLCBkb25l
OiB0cnVlIH0sICd0aGlyZCByZWFkKCkgZnJvbSBicmFuY2gxIHNob3VsZCBiZSBkb25lJyk7Cisg
ICAgfSksCisgICAgcmVhZGVyMi5yZWFkKCkudGhlbihyID0+IHsKKyAgICAgIGFzc2VydF9vYmpl
Y3RfZXF1YWxzKHIsIHsgdmFsdWU6ICdhJywgZG9uZTogZmFsc2UgfSwgJ2ZpcnN0IGNodW5rIGZy
b20gYnJhbmNoMiBzaG91bGQgYmUgY29ycmVjdCcpOworICAgIH0pCisgIF0pOworCit9LCAnUmVh
ZGFibGVTdHJlYW0gdGVlaW5nOiBzaG91bGQgYmUgYWJsZSB0byByZWFkIG9uZSBicmFuY2ggdG8g
dGhlIGVuZCB3aXRob3V0IGFmZmVjdGluZyB0aGUgb3RoZXInKTsKKworcHJvbWlzZV90ZXN0KCgp
ID0+IHsKKworICBjb25zdCB0aGVPYmplY3QgPSB7IHRoZTogJ3Rlc3Qgb2JqZWN0JyB9OworICBj
b25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgYy5l
bnF1ZXVlKHRoZU9iamVjdCk7CisgICAgfQorICB9KTsKKworICBjb25zdCBicmFuY2ggPSBycy50
ZWUoKTsKKyAgY29uc3QgYnJhbmNoMSA9IGJyYW5jaFswXTsKKyAgY29uc3QgYnJhbmNoMiA9IGJy
YW5jaFsxXTsKKyAgY29uc3QgcmVhZGVyMSA9IGJyYW5jaDEuZ2V0UmVhZGVyKCk7CisgIGNvbnN0
IHJlYWRlcjIgPSBicmFuY2gyLmdldFJlYWRlcigpOworCisgIHJldHVybiBQcm9taXNlLmFsbChb
cmVhZGVyMS5yZWFkKCksIHJlYWRlcjIucmVhZCgpXSkudGhlbih2YWx1ZXMgPT4geworICAgIGFz
c2VydF9vYmplY3RfZXF1YWxzKHZhbHVlc1swXSwgdmFsdWVzWzFdLCAndGhlIHZhbHVlcyBzaG91
bGQgYmUgZXF1YWwnKTsKKyAgfSk7CisKK30sICdSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IHZhbHVl
cyBzaG91bGQgYmUgZXF1YWwgYWNyb3NzIGVhY2ggYnJhbmNoJyk7CisKK3Byb21pc2VfdGVzdCh0
ID0+IHsKKworICBjb25zdCB0aGVFcnJvciA9IHsgbmFtZTogJ2JvbyEnIH07CisgIGNvbnN0IHJz
ID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjLmVucXVldWUo
J2EnKTsKKyAgICAgIGMuZW5xdWV1ZSgnYicpOworICAgIH0sCisgICAgcHVsbCgpIHsKKyAgICAg
IHRocm93IHRoZUVycm9yOworICAgIH0KKyAgfSk7CisKKyAgY29uc3QgYnJhbmNoZXMgPSBycy50
ZWUoKTsKKyAgY29uc3QgcmVhZGVyMSA9IGJyYW5jaGVzWzBdLmdldFJlYWRlcigpOworICBjb25z
dCByZWFkZXIyID0gYnJhbmNoZXNbMV0uZ2V0UmVhZGVyKCk7CisKKyAgcmVhZGVyMS5sYWJlbCA9
ICdyZWFkZXIxJzsKKyAgcmVhZGVyMi5sYWJlbCA9ICdyZWFkZXIyJzsKKworICByZXR1cm4gUHJv
bWlzZS5hbGwoWworICAgIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIHRoZUVycm9yLCByZWFk
ZXIxLmNsb3NlZCksCisgICAgcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgdGhlRXJyb3IsIHJl
YWRlcjIuY2xvc2VkKSwKKyAgICByZWFkZXIxLnJlYWQoKS50aGVuKHIgPT4geworICAgICAgYXNz
ZXJ0X29iamVjdF9lcXVhbHMociwgeyB2YWx1ZTogJ2EnLCBkb25lOiBmYWxzZSB9LCAnc2hvdWxk
IGJlIGFibGUgdG8gcmVhZCB0aGUgZmlyc3QgY2h1bmsgaW4gYnJhbmNoMScpOworICAgIH0pLAor
ICAgIHJlYWRlcjEucmVhZCgpLnRoZW4ociA9PiB7CisgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFs
cyhyLCB7IHZhbHVlOiAnYicsIGRvbmU6IGZhbHNlIH0sICdzaG91bGQgYmUgYWJsZSB0byByZWFk
IHRoZSBzZWNvbmQgY2h1bmsgaW4gYnJhbmNoMScpOworCisgICAgICByZXR1cm4gcHJvbWlzZV9y
ZWplY3RzX2V4YWN0bHkodCwgdGhlRXJyb3IsIHJlYWRlcjIucmVhZCgpKTsKKyAgICB9KQorICAg
IC50aGVuKCgpID0+IHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIHRoZUVycm9yLCByZWFkZXIx
LnJlYWQoKSkpCisgIF0pOworCit9LCAnUmVhZGFibGVTdHJlYW0gdGVlaW5nOiBlcnJvcnMgaW4g
dGhlIHNvdXJjZSBzaG91bGQgcHJvcGFnYXRlIHRvIGJvdGggYnJhbmNoZXMnKTsKKworcHJvbWlz
ZV90ZXN0KCgpID0+IHsKKworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAg
c3RhcnQoYykgeworICAgICAgYy5lbnF1ZXVlKCdhJyk7CisgICAgICBjLmVucXVldWUoJ2InKTsK
KyAgICAgIGMuY2xvc2UoKTsKKyAgICB9CisgIH0pOworCisgIGNvbnN0IGJyYW5jaGVzID0gcnMu
dGVlKCk7CisgIGNvbnN0IGJyYW5jaDEgPSBicmFuY2hlc1swXTsKKyAgY29uc3QgYnJhbmNoMiA9
IGJyYW5jaGVzWzFdOworICBicmFuY2gxLmNhbmNlbCgpOworCisgIHJldHVybiBQcm9taXNlLmFs
bChbCisgICAgcmVhZGFibGVTdHJlYW1Ub0FycmF5KGJyYW5jaDEpLnRoZW4oY2h1bmtzID0+IHsK
KyAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoY2h1bmtzLCBbXSwgJ2JyYW5jaDEgc2hvdWxkIGhh
dmUgbm8gY2h1bmtzJyk7CisgICAgfSksCisgICAgcmVhZGFibGVTdHJlYW1Ub0FycmF5KGJyYW5j
aDIpLnRoZW4oY2h1bmtzID0+IHsKKyAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoY2h1bmtzLCBb
J2EnLCAnYiddLCAnYnJhbmNoMiBzaG91bGQgaGF2ZSB0d28gY2h1bmtzJyk7CisgICAgfSkKKyAg
XSk7CisKK30sICdSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IGNhbmNlbGluZyBicmFuY2gxIHNob3Vs
ZCBub3QgaW1wYWN0IGJyYW5jaDInKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKworICBjb25z
dCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgYy5lbnF1
ZXVlKCdhJyk7CisgICAgICBjLmVucXVldWUoJ2InKTsKKyAgICAgIGMuY2xvc2UoKTsKKyAgICB9
CisgIH0pOworCisgIGNvbnN0IGJyYW5jaGVzID0gcnMudGVlKCk7CisgIGNvbnN0IGJyYW5jaDEg
PSBicmFuY2hlc1swXTsKKyAgY29uc3QgYnJhbmNoMiA9IGJyYW5jaGVzWzFdOworICBicmFuY2gy
LmNhbmNlbCgpOworCisgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAgcmVhZGFibGVTdHJlYW1U
b0FycmF5KGJyYW5jaDEpLnRoZW4oY2h1bmtzID0+IHsKKyAgICAgIGFzc2VydF9hcnJheV9lcXVh
bHMoY2h1bmtzLCBbJ2EnLCAnYiddLCAnYnJhbmNoMSBzaG91bGQgaGF2ZSB0d28gY2h1bmtzJyk7
CisgICAgfSksCisgICAgcmVhZGFibGVTdHJlYW1Ub0FycmF5KGJyYW5jaDIpLnRoZW4oY2h1bmtz
ID0+IHsKKyAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoY2h1bmtzLCBbXSwgJ2JyYW5jaDIgc2hv
dWxkIGhhdmUgbm8gY2h1bmtzJyk7CisgICAgfSkKKyAgXSk7CisKK30sICdSZWFkYWJsZVN0cmVh
bSB0ZWVpbmc6IGNhbmNlbGluZyBicmFuY2gyIHNob3VsZCBub3QgaW1wYWN0IGJyYW5jaDEnKTsK
KworcHJvbWlzZV90ZXN0KCgpID0+IHsKKworICBjb25zdCByZWFzb24xID0gbmV3IEVycm9yKCdX
ZVwncmUgd2FudGVkIG1lbi4nKTsKKyAgY29uc3QgcmVhc29uMiA9IG5ldyBFcnJvcignSSBoYXZl
IHRoZSBkZWF0aCBzZW50ZW5jZSBvbiB0d2VsdmUgc3lzdGVtcy4nKTsKKworICBsZXQgcmVzb2x2
ZTsKKyAgY29uc3QgcHJvbWlzZSA9IG5ldyBQcm9taXNlKHIgPT4gcmVzb2x2ZSA9IHIpOworICBj
b25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgY2FuY2VsKHJlYXNvbikgeworICAg
ICAgYXNzZXJ0X2FycmF5X2VxdWFscyhyZWFzb24sIFtyZWFzb24xLCByZWFzb24yXSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ3RoZSBjYW5jZWwgcmVhc29uIHNob3VsZCBiZSBhbiBhcnJh
eSBjb250YWluaW5nIHRob3NlIGZyb20gdGhlIGJyYW5jaGVzJyk7CisgICAgICByZXNvbHZlKCk7
CisgICAgfQorICB9KTsKKworICBjb25zdCBicmFuY2ggPSBycy50ZWUoKTsKKyAgY29uc3QgYnJh
bmNoMSA9IGJyYW5jaFswXTsKKyAgY29uc3QgYnJhbmNoMiA9IGJyYW5jaFsxXTsKKyAgYnJhbmNo
MS5jYW5jZWwocmVhc29uMSk7CisgIGJyYW5jaDIuY2FuY2VsKHJlYXNvbjIpOworCisgIHJldHVy
biBwcm9taXNlOworCit9LCAnUmVhZGFibGVTdHJlYW0gdGVlaW5nOiBjYW5jZWxpbmcgYm90aCBi
cmFuY2hlcyBzaG91bGQgYWdncmVnYXRlIHRoZSBjYW5jZWwgcmVhc29ucyBpbnRvIGFuIGFycmF5
Jyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisKKyAgY29uc3QgcmVhc29uMSA9IG5ldyBFcnJv
cignVGhpcyBsaXR0bGUgb25lXCdzIG5vdCB3b3J0aCB0aGUgZWZmb3J0LicpOworICBjb25zdCBy
ZWFzb24yID0gbmV3IEVycm9yKCdDb21lLCBsZXQgbWUgZ2V0IHlvdSBzb21ldGhpbmcuJyk7CisK
KyAgbGV0IHJlc29sdmU7CisgIGNvbnN0IHByb21pc2UgPSBuZXcgUHJvbWlzZShyID0+IHJlc29s
dmUgPSByKTsKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIGNhbmNlbChy
ZWFzb24pIHsKKyAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMocmVhc29uLCBbcmVhc29uMSwgcmVh
c29uMl0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICd0aGUgY2FuY2VsIHJlYXNvbiBzaG91
bGQgYmUgYW4gYXJyYXkgY29udGFpbmluZyB0aG9zZSBmcm9tIHRoZSBicmFuY2hlcycpOworICAg
ICAgcmVzb2x2ZSgpOworICAgIH0KKyAgfSk7CisKKyAgY29uc3QgYnJhbmNoID0gcnMudGVlKCk7
CisgIGNvbnN0IGJyYW5jaDEgPSBicmFuY2hbMF07CisgIGNvbnN0IGJyYW5jaDIgPSBicmFuY2hb
MV07CisgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAgYnJhbmNoMi5jYW5jZWwocmVhc29uMiks
CisgICAgYnJhbmNoMS5jYW5jZWwocmVhc29uMSksCisgICAgcHJvbWlzZQorICBdKTsKKworfSwg
J1JlYWRhYmxlU3RyZWFtIHRlZWluZzogY2FuY2VsaW5nIGJvdGggYnJhbmNoZXMgaW4gcmV2ZXJz
ZSBvcmRlciBzaG91bGQgYWdncmVnYXRlIHRoZSBjYW5jZWwgcmVhc29ucyBpbnRvIGFuIGFycmF5
Jyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKworICBjb25zdCB0aGVFcnJvciA9IHsgbmFtZTog
J0lcJ2xsIGJlIGNhcmVmdWwuJyB9OworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7
CisgICAgY2FuY2VsKCkgeworICAgICAgdGhyb3cgdGhlRXJyb3I7CisgICAgfQorICB9KTsKKwor
ICBjb25zdCBicmFuY2ggPSBycy50ZWUoKTsKKyAgY29uc3QgYnJhbmNoMSA9IGJyYW5jaFswXTsK
KyAgY29uc3QgYnJhbmNoMiA9IGJyYW5jaFsxXTsKKworICByZXR1cm4gUHJvbWlzZS5hbGwoWwor
ICAgIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIHRoZUVycm9yLCBicmFuY2gxLmNhbmNlbCgp
KSwKKyAgICBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCB0aGVFcnJvciwgYnJhbmNoMi5jYW5j
ZWwoKSkKKyAgXSk7CisKK30sICdSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IGZhaWxpbmcgdG8gY2Fu
Y2VsIHRoZSBvcmlnaW5hbCBzdHJlYW0gc2hvdWxkIGNhdXNlIGNhbmNlbCgpIHRvIHJlamVjdCBv
biBicmFuY2hlcycpOworCit0ZXN0KCgpID0+IHsKKworICBsZXQgY29udHJvbGxlcjsKKyAgY29u
c3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsgc3RhcnQoYykgeyBjb250cm9sbGVyID0g
YzsgfSB9KTsKKyAgY29uc3QgW2JyYW5jaDEsIGJyYW5jaDJdID0gc3RyZWFtLnRlZSgpOworCisg
IGNvbnRyb2xsZXIuZXJyb3IoImVycm9yIik7CisKKyAgYnJhbmNoMS5jYW5jZWwoKS5jYXRjaChf
PT5fKTsKKyAgYnJhbmNoMi5jYW5jZWwoKS5jYXRjaChfPT5fKTsKKworfSwgJ1JlYWRhYmxlU3Ry
ZWFtIHRlZWluZzogZXJyb3JpbmcgYSB0ZWVkIHN0cmVhbSBzaG91bGQgcHJvcGVybHkgaGFuZGxl
IGNhbmNlbGVkIGJyYW5jaGVzJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKworICBsZXQgY29u
dHJvbGxlcjsKKyAgY29uc3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsgc3RhcnQoYykg
eyBjb250cm9sbGVyID0gYzsgfSB9KTsKKyAgY29uc3QgW2JyYW5jaDEsIGJyYW5jaDJdID0gc3Ry
ZWFtLnRlZSgpOworCisgIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKCk7CisgIGVycm9yLm5hbWUg
PSAnZGlzdGluY3RpdmUnOworCisgIC8vIEVuc3VyZSBuZWl0aGVyIGJyYW5jaCBpcyB3YWl0aW5n
IGluIFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlclJlYWQoKS4KKyAgY29udHJvbGxlci5lbnF1
ZXVlKCk7CisgIGNvbnRyb2xsZXIuZW5xdWV1ZSgpOworCisgIHJldHVybiBkZWxheSgwKS50aGVu
KCgpID0+IHsKKyAgICAvLyBUaGlzIGVycm9yIHdpbGwgaGF2ZSB0byBiZSBkZXRlY3RlZCB2aWEg
W1tjbG9zZWRQcm9taXNlXV0uCisgICAgY29udHJvbGxlci5lcnJvcihlcnJvcik7CisKKyAgICBj
b25zdCByZWFkZXIxID0gYnJhbmNoMS5nZXRSZWFkZXIoKTsKKyAgICBjb25zdCByZWFkZXIyID0g
YnJhbmNoMi5nZXRSZWFkZXIoKTsKKworICAgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAgICBw
cm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvciwgcmVhZGVyMS5jbG9zZWQsICdyZWFkZXIx
LmNsb3NlZCBzaG91bGQgcmVqZWN0JyksCisgICAgICBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0
LCBlcnJvciwgcmVhZGVyMi5jbG9zZWQsICdyZWFkZXIyLmNsb3NlZCBzaG91bGQgcmVqZWN0JykK
KyAgICBdKTsKKyAgfSk7CisKK30sICdSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IGVycm9yaW5nIGEg
dGVlZCBzdHJlYW0gc2hvdWxkIGVycm9yIGJvdGggYnJhbmNoZXMnKTsKKworcHJvbWlzZV90ZXN0
KCgpID0+IHsKKworICBsZXQgY29udHJvbGxlcjsKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVT
dHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGNvbnRyb2xsZXIgPSBjOworICAgIH0KKyAg
fSk7CisKKyAgY29uc3QgYnJhbmNoZXMgPSBycy50ZWUoKTsKKyAgY29uc3QgcmVhZGVyMSA9IGJy
YW5jaGVzWzBdLmdldFJlYWRlcigpOworICBjb25zdCByZWFkZXIyID0gYnJhbmNoZXNbMV0uZ2V0
UmVhZGVyKCk7CisKKyAgY29uc3QgcHJvbWlzZSA9IFByb21pc2UuYWxsKFtyZWFkZXIxLmNsb3Nl
ZCwgcmVhZGVyMi5jbG9zZWRdKTsKKworICBjb250cm9sbGVyLmNsb3NlKCk7CisgIHJldHVybiBw
cm9taXNlOworCit9LCAnUmVhZGFibGVTdHJlYW0gdGVlaW5nOiBjbG9zaW5nIHRoZSBvcmlnaW5h
bCBzaG91bGQgaW1tZWRpYXRlbHkgY2xvc2UgdGhlIGJyYW5jaGVzJyk7CisKK3Byb21pc2VfdGVz
dCh0ID0+IHsKKworICBsZXQgY29udHJvbGxlcjsKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVT
dHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGNvbnRyb2xsZXIgPSBjOworICAgIH0KKyAg
fSk7CisKKyAgY29uc3QgYnJhbmNoZXMgPSBycy50ZWUoKTsKKyAgY29uc3QgcmVhZGVyMSA9IGJy
YW5jaGVzWzBdLmdldFJlYWRlcigpOworICBjb25zdCByZWFkZXIyID0gYnJhbmNoZXNbMV0uZ2V0
UmVhZGVyKCk7CisKKyAgY29uc3QgdGhlRXJyb3IgPSB7IG5hbWU6ICdib28hJyB9OworICBjb25z
dCBwcm9taXNlID0gUHJvbWlzZS5hbGwoWworICAgIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQs
IHRoZUVycm9yLCByZWFkZXIxLmNsb3NlZCksCisgICAgcHJvbWlzZV9yZWplY3RzX2V4YWN0bHko
dCwgdGhlRXJyb3IsIHJlYWRlcjIuY2xvc2VkKQorICBdKTsKKworICBjb250cm9sbGVyLmVycm9y
KHRoZUVycm9yKTsKKyAgcmV0dXJuIHByb21pc2U7CisKK30sICdSZWFkYWJsZVN0cmVhbSB0ZWVp
bmc6IGVycm9yaW5nIHRoZSBvcmlnaW5hbCBzaG91bGQgaW1tZWRpYXRlbHkgZXJyb3IgdGhlIGJy
YW5jaGVzJyk7CisKK3Rlc3QodCA9PiB7CisKKyAgLy8gQ29weSBvcmlnaW5hbCBnbG9iYWwuCisg
IGNvbnN0IG9sZFJlYWRhYmxlU3RyZWFtID0gUmVhZGFibGVTdHJlYW07CisgIGNvbnN0IGdldFJl
YWRlciA9IFJlYWRhYmxlU3RyZWFtLnByb3RvdHlwZS5nZXRSZWFkZXI7CisKKyAgY29uc3Qgb3Jp
Z1JTID0gbmV3IFJlYWRhYmxlU3RyZWFtKCk7CisKKyAgLy8gUmVwbGFjZSB0aGUgZ2xvYmFsIFJl
YWRhYmxlU3RyZWFtIGNvbnN0cnVjdG9yIHdpdGggb25lIHRoYXQgZG9lc24ndCB3b3JrLgorICBS
ZWFkYWJsZVN0cmVhbSA9IGZ1bmN0aW9uKCkgeworICAgIHRocm93IG5ldyBFcnJvcignZ2xvYmFs
IFJlYWRhYmxlU3RyZWFtIGNvbnN0cnVjdG9yIGNhbGxlZCcpOworICB9OworICB0LmFkZF9jbGVh
bnVwKCgpID0+IHsKKyAgICBSZWFkYWJsZVN0cmVhbSA9IG9sZFJlYWRhYmxlU3RyZWFtOworICB9
KTsKKworICAvLyBUaGlzIHdpbGwgcHJvYmFibHkgZmFpbCBpZiB0aGUgZ2xvYmFsIFJlYWRhYmxl
U3RyZWFtIGNvbnN0cnVjdG9yIHdhcyB1c2VkLgorICBjb25zdCBbcnMxLCByczJdID0gb3JpZ1JT
LnRlZSgpOworCisgIC8vIFRoZXNlIHdpbGwgZGVmaW5pdGVseSBmYWlsIGlmIHRoZSBnbG9iYWwg
UmVhZGFibGVTdHJlYW0gY29uc3RydWN0b3Igd2FzIHVzZWQuCisgIGFzc2VydF9ub3RfZXF1YWxz
KGdldFJlYWRlci5jYWxsKHJzMSksIHVuZGVmaW5lZCwgJ2dldFJlYWRlciBzaG91bGQgd29yayBv
biByczEnKTsKKyAgYXNzZXJ0X25vdF9lcXVhbHMoZ2V0UmVhZGVyLmNhbGwocnMyKSwgdW5kZWZp
bmVkLCAnZ2V0UmVhZGVyIHNob3VsZCB3b3JrIG9uIHJzMicpOworCit9LCAnUmVhZGFibGVTdHJl
YW1UZWUgc2hvdWxkIG5vdCB1c2UgYSBtb2RpZmllZCBSZWFkYWJsZVN0cmVhbSBjb25zdHJ1Y3Rv
ciBmcm9tIHRoZSBnbG9iYWwgb2JqZWN0Jyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKworICBj
b25zdCBycyA9IHJlY29yZGluZ1JlYWRhYmxlU3RyZWFtKHt9LCB7IGhpZ2hXYXRlck1hcms6IDAg
fSk7CisKKyAgLy8gQ3JlYXRlIHR3byBicmFuY2hlcywgZWFjaCB3aXRoIGEgSFdNIG9mIDEuIFRo
aXMgc2hvdWxkIHJlc3VsdCBpbiBvbmUKKyAgLy8gY2h1bmsgYmVpbmcgcHVsbGVkLCBub3QgdHdv
LgorICBycy50ZWUoKTsKKyAgcmV0dXJuIGZsdXNoQXN5bmNFdmVudHMoKS50aGVuKCgpID0+IHsK
KyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJzLmV2ZW50cywgWydwdWxsJ10sICdwdWxsIHNob3Vs
ZCBvbmx5IGJlIGNhbGxlZCBvbmNlJyk7CisgIH0pOworCit9LCAnUmVhZGFibGVTdHJlYW1UZWUg
c2hvdWxkIG5vdCBwdWxsIG1vcmUgY2h1bmtzIHRoYW4gY2FuIGZpdCBpbiB0aGUgYnJhbmNoIHF1
ZXVlJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKworICBjb25zdCBycyA9IHJlY29yZGluZ1Jl
YWRhYmxlU3RyZWFtKHsKKyAgICBwdWxsKGNvbnRyb2xsZXIpIHsKKyAgICAgIGNvbnRyb2xsZXIu
ZW5xdWV1ZSgnYScpOworICAgIH0KKyAgfSwgeyBoaWdoV2F0ZXJNYXJrOiAwIH0pOworCisgIGNv
bnN0IFtyZWFkZXIxLCByZWFkZXIyXSA9IHJzLnRlZSgpLm1hcChicmFuY2ggPT4gYnJhbmNoLmdl
dFJlYWRlcigpKTsKKyAgcmV0dXJuIFByb21pc2UuYWxsKFtyZWFkZXIxLnJlYWQoKSwgcmVhZGVy
Mi5yZWFkKCldKQorICAgICAgLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9hcnJheV9lcXVhbHMo
cnMuZXZlbnRzLCBbJ3B1bGwnLCAncHVsbCddLCAncHVsbCBzaG91bGQgYmUgY2FsbGVkIHR3aWNl
Jyk7CisgIH0pOworCit9LCAnUmVhZGFibGVTdHJlYW1UZWUgc2hvdWxkIG9ubHkgcHVsbCBlbm91
Z2ggdG8gZmlsbCB0aGUgZW1wdGllc3QgcXVldWUnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4gewor
CisgIGNvbnN0IHJzID0gcmVjb3JkaW5nUmVhZGFibGVTdHJlYW0oe30sIHsgaGlnaFdhdGVyTWFy
azogMCB9KTsKKyAgY29uc3QgdGhlRXJyb3IgPSB7IG5hbWU6ICdib28hJyB9OworCisgIHJzLmNv
bnRyb2xsZXIuZXJyb3IodGhlRXJyb3IpOworCisgIGNvbnN0IFtyZWFkZXIxLCByZWFkZXIyXSA9
IHJzLnRlZSgpLm1hcChicmFuY2ggPT4gYnJhbmNoLmdldFJlYWRlcigpKTsKKworICByZXR1cm4g
Zmx1c2hBc3luY0V2ZW50cygpLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9hcnJheV9lcXVhbHMo
cnMuZXZlbnRzLCBbXSwgJ3B1bGwgc2hvdWxkIG5vdCBiZSBjYWxsZWQnKTsKKworICAgIHJldHVy
biBQcm9taXNlLmFsbChbCisgICAgICBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCB0aGVFcnJv
ciwgcmVhZGVyMS5jbG9zZWQpLAorICAgICAgcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgdGhl
RXJyb3IsIHJlYWRlcjIuY2xvc2VkKQorICAgIF0pOworICB9KTsKKworfSwgJ1JlYWRhYmxlU3Ry
ZWFtVGVlIHNob3VsZCBub3QgcHVsbCB3aGVuIG9yaWdpbmFsIGlzIGFscmVhZHkgZXJyb3JlZCcp
OworCitmb3IgKGNvbnN0IGJyYW5jaCBvZiBbMSwgMl0pIHsKKyAgcHJvbWlzZV90ZXN0KHQgPT4g
eworCisgICAgY29uc3QgcnMgPSByZWNvcmRpbmdSZWFkYWJsZVN0cmVhbSh7fSwgeyBoaWdoV2F0
ZXJNYXJrOiAwIH0pOworICAgIGNvbnN0IHRoZUVycm9yID0geyBuYW1lOiAnYm9vIScgfTsKKwor
ICAgIGNvbnN0IFtyZWFkZXIxLCByZWFkZXIyXSA9IHJzLnRlZSgpLm1hcChicmFuY2ggPT4gYnJh
bmNoLmdldFJlYWRlcigpKTsKKworICAgIHJldHVybiBmbHVzaEFzeW5jRXZlbnRzKCkudGhlbigo
KSA9PiB7CisgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJzLmV2ZW50cywgWydwdWxsJ10sICdw
dWxsIHNob3VsZCBiZSBjYWxsZWQgb25jZScpOworCisgICAgICBycy5jb250cm9sbGVyLmVucXVl
dWUoJ2EnKTsKKworICAgICAgY29uc3QgcmVhZGVyID0gKGJyYW5jaCA9PT0gMSkgPyByZWFkZXIx
IDogcmVhZGVyMjsKKyAgICAgIHJldHVybiByZWFkZXIucmVhZCgpOworICAgIH0pLnRoZW4oKCkg
PT4gZmx1c2hBc3luY0V2ZW50cygpKS50aGVuKCgpID0+IHsKKyAgICAgIGFzc2VydF9hcnJheV9l
cXVhbHMocnMuZXZlbnRzLCBbJ3B1bGwnLCAncHVsbCddLCAncHVsbCBzaG91bGQgYmUgY2FsbGVk
IHR3aWNlJyk7CisKKyAgICAgIHJzLmNvbnRyb2xsZXIuZXJyb3IodGhlRXJyb3IpOworCisgICAg
ICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAgICAgICBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0
LCB0aGVFcnJvciwgcmVhZGVyMS5jbG9zZWQpLAorICAgICAgICBwcm9taXNlX3JlamVjdHNfZXhh
Y3RseSh0LCB0aGVFcnJvciwgcmVhZGVyMi5jbG9zZWQpCisgICAgICBdKTsKKyAgICB9KS50aGVu
KCgpID0+IGZsdXNoQXN5bmNFdmVudHMoKSkudGhlbigoKSA9PiB7CisgICAgICBhc3NlcnRfYXJy
YXlfZXF1YWxzKHJzLmV2ZW50cywgWydwdWxsJywgJ3B1bGwnXSwgJ3B1bGwgc2hvdWxkIGJlIGNh
bGxlZCB0d2ljZScpOworICAgIH0pOworCisgIH0sIGBSZWFkYWJsZVN0cmVhbVRlZSBzdG9wcyBw
dWxsaW5nIHdoZW4gb3JpZ2luYWwgc3RyZWFtIGVycm9ycyB3aGlsZSBicmFuY2ggJHticmFuY2h9
IGlzIHJlYWRpbmdgKTsKK30KKworcHJvbWlzZV90ZXN0KHQgPT4geworCisgIGNvbnN0IHJzID0g
cmVjb3JkaW5nUmVhZGFibGVTdHJlYW0oe30sIHsgaGlnaFdhdGVyTWFyazogMCB9KTsKKyAgY29u
c3QgdGhlRXJyb3IgPSB7IG5hbWU6ICdib28hJyB9OworCisgIGNvbnN0IFtyZWFkZXIxLCByZWFk
ZXIyXSA9IHJzLnRlZSgpLm1hcChicmFuY2ggPT4gYnJhbmNoLmdldFJlYWRlcigpKTsKKworICBy
ZXR1cm4gZmx1c2hBc3luY0V2ZW50cygpLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9hcnJheV9l
cXVhbHMocnMuZXZlbnRzLCBbJ3B1bGwnXSwgJ3B1bGwgc2hvdWxkIGJlIGNhbGxlZCBvbmNlJyk7
CisKKyAgICBycy5jb250cm9sbGVyLmVucXVldWUoJ2EnKTsKKworICAgIHJldHVybiBQcm9taXNl
LmFsbChbcmVhZGVyMS5yZWFkKCksIHJlYWRlcjIucmVhZCgpXSk7CisgIH0pLnRoZW4oKCkgPT4g
Zmx1c2hBc3luY0V2ZW50cygpKS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxz
KHJzLmV2ZW50cywgWydwdWxsJywgJ3B1bGwnXSwgJ3B1bGwgc2hvdWxkIGJlIGNhbGxlZCB0d2lj
ZScpOworCisgICAgcnMuY29udHJvbGxlci5lcnJvcih0aGVFcnJvcik7CisKKyAgICByZXR1cm4g
UHJvbWlzZS5hbGwoWworICAgICAgcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgdGhlRXJyb3Is
IHJlYWRlcjEuY2xvc2VkKSwKKyAgICAgIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIHRoZUVy
cm9yLCByZWFkZXIyLmNsb3NlZCkKKyAgICBdKTsKKyAgfSkudGhlbigoKSA9PiBmbHVzaEFzeW5j
RXZlbnRzKCkpLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9hcnJheV9lcXVhbHMocnMuZXZlbnRz
LCBbJ3B1bGwnLCAncHVsbCddLCAncHVsbCBzaG91bGQgYmUgY2FsbGVkIHR3aWNlJyk7CisgIH0p
OworCit9LCAnUmVhZGFibGVTdHJlYW1UZWUgc3RvcHMgcHVsbGluZyB3aGVuIG9yaWdpbmFsIHN0
cmVhbSBlcnJvcnMgd2hpbGUgYm90aCBicmFuY2hlcyBhcmUgcmVhZGluZycpOwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3Jl
YWRhYmxlLXN0cmVhbXMvdGVlLmFueS53b3JrZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMv
dGVlLmFueS53b3JrZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJjMTMxNWE4YTRhZGRlOTdh
YzM5ZjhlZDBiNjFmZTZhMTg0ZDM5ZjMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy90
ZWUuYW55Lndvcmtlci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyNCBAQAorCitIYXJuZXNzIEVy
cm9yIChGQUlMKSwgbWVzc2FnZSA9IFVuaGFuZGxlZCByZWplY3Rpb24KKworUEFTUyBSZWFkYWJs
ZVN0cmVhbSB0ZWVpbmc6IHJzLnRlZSgpIHJldHVybnMgYW4gYXJyYXkgb2YgdHdvIFJlYWRhYmxl
U3RyZWFtcyAKK1BBU1MgUmVhZGFibGVTdHJlYW0gdGVlaW5nOiBzaG91bGQgYmUgYWJsZSB0byBy
ZWFkIG9uZSBicmFuY2ggdG8gdGhlIGVuZCB3aXRob3V0IGFmZmVjdGluZyB0aGUgb3RoZXIgCitQ
QVNTIFJlYWRhYmxlU3RyZWFtIHRlZWluZzogdmFsdWVzIHNob3VsZCBiZSBlcXVhbCBhY3Jvc3Mg
ZWFjaCBicmFuY2ggCitQQVNTIFJlYWRhYmxlU3RyZWFtIHRlZWluZzogZXJyb3JzIGluIHRoZSBz
b3VyY2Ugc2hvdWxkIHByb3BhZ2F0ZSB0byBib3RoIGJyYW5jaGVzIAorUEFTUyBSZWFkYWJsZVN0
cmVhbSB0ZWVpbmc6IGNhbmNlbGluZyBicmFuY2gxIHNob3VsZCBub3QgaW1wYWN0IGJyYW5jaDIg
CitQQVNTIFJlYWRhYmxlU3RyZWFtIHRlZWluZzogY2FuY2VsaW5nIGJyYW5jaDIgc2hvdWxkIG5v
dCBpbXBhY3QgYnJhbmNoMSAKK1BBU1MgUmVhZGFibGVTdHJlYW0gdGVlaW5nOiBjYW5jZWxpbmcg
Ym90aCBicmFuY2hlcyBzaG91bGQgYWdncmVnYXRlIHRoZSBjYW5jZWwgcmVhc29ucyBpbnRvIGFu
IGFycmF5IAorUEFTUyBSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IGNhbmNlbGluZyBib3RoIGJyYW5j
aGVzIGluIHJldmVyc2Ugb3JkZXIgc2hvdWxkIGFnZ3JlZ2F0ZSB0aGUgY2FuY2VsIHJlYXNvbnMg
aW50byBhbiBhcnJheSAKK1BBU1MgUmVhZGFibGVTdHJlYW0gdGVlaW5nOiBmYWlsaW5nIHRvIGNh
bmNlbCB0aGUgb3JpZ2luYWwgc3RyZWFtIHNob3VsZCBjYXVzZSBjYW5jZWwoKSB0byByZWplY3Qg
b24gYnJhbmNoZXMgCitQQVNTIFJlYWRhYmxlU3RyZWFtIHRlZWluZzogZXJyb3JpbmcgYSB0ZWVk
IHN0cmVhbSBzaG91bGQgcHJvcGVybHkgaGFuZGxlIGNhbmNlbGVkIGJyYW5jaGVzIAorUEFTUyBS
ZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IGVycm9yaW5nIGEgdGVlZCBzdHJlYW0gc2hvdWxkIGVycm9y
IGJvdGggYnJhbmNoZXMgCitQQVNTIFJlYWRhYmxlU3RyZWFtIHRlZWluZzogY2xvc2luZyB0aGUg
b3JpZ2luYWwgc2hvdWxkIGltbWVkaWF0ZWx5IGNsb3NlIHRoZSBicmFuY2hlcyAKK1BBU1MgUmVh
ZGFibGVTdHJlYW0gdGVlaW5nOiBlcnJvcmluZyB0aGUgb3JpZ2luYWwgc2hvdWxkIGltbWVkaWF0
ZWx5IGVycm9yIHRoZSBicmFuY2hlcyAKK1BBU1MgUmVhZGFibGVTdHJlYW1UZWUgc2hvdWxkIG5v
dCB1c2UgYSBtb2RpZmllZCBSZWFkYWJsZVN0cmVhbSBjb25zdHJ1Y3RvciBmcm9tIHRoZSBnbG9i
YWwgb2JqZWN0IAorRkFJTCBSZWFkYWJsZVN0cmVhbVRlZSBzaG91bGQgbm90IHB1bGwgbW9yZSBj
aHVua3MgdGhhbiBjYW4gZml0IGluIHRoZSBicmFuY2ggcXVldWUgYXNzZXJ0X2FycmF5X2VxdWFs
czogcHVsbCBzaG91bGQgb25seSBiZSBjYWxsZWQgb25jZSBsZW5ndGhzIGRpZmZlciwgZXhwZWN0
ZWQgYXJyYXkgWyJwdWxsIl0gbGVuZ3RoIDEsIGdvdCBbInB1bGwiLCAicHVsbCJdIGxlbmd0aCAy
CitGQUlMIFJlYWRhYmxlU3RyZWFtVGVlIHNob3VsZCBvbmx5IHB1bGwgZW5vdWdoIHRvIGZpbGwg
dGhlIGVtcHRpZXN0IHF1ZXVlIGFzc2VydF9hcnJheV9lcXVhbHM6IHB1bGwgc2hvdWxkIGJlIGNh
bGxlZCB0d2ljZSBsZW5ndGhzIGRpZmZlciwgZXhwZWN0ZWQgYXJyYXkgWyJwdWxsIiwgInB1bGwi
XSBsZW5ndGggMiwgZ290IFsicHVsbCIsICJwdWxsIiwgInB1bGwiLCAicHVsbCJdIGxlbmd0aCA0
CitQQVNTIFJlYWRhYmxlU3RyZWFtVGVlIHNob3VsZCBub3QgcHVsbCB3aGVuIG9yaWdpbmFsIGlz
IGFscmVhZHkgZXJyb3JlZCAKK0ZBSUwgUmVhZGFibGVTdHJlYW1UZWUgc3RvcHMgcHVsbGluZyB3
aGVuIG9yaWdpbmFsIHN0cmVhbSBlcnJvcnMgd2hpbGUgYnJhbmNoIDEgaXMgcmVhZGluZyBhc3Nl
cnRfYXJyYXlfZXF1YWxzOiBwdWxsIHNob3VsZCBiZSBjYWxsZWQgb25jZSBsZW5ndGhzIGRpZmZl
ciwgZXhwZWN0ZWQgYXJyYXkgWyJwdWxsIl0gbGVuZ3RoIDEsIGdvdCBbInB1bGwiLCAicHVsbCJd
IGxlbmd0aCAyCitGQUlMIFJlYWRhYmxlU3RyZWFtVGVlIHN0b3BzIHB1bGxpbmcgd2hlbiBvcmln
aW5hbCBzdHJlYW0gZXJyb3JzIHdoaWxlIGJyYW5jaCAyIGlzIHJlYWRpbmcgYXNzZXJ0X2FycmF5
X2VxdWFsczogcHVsbCBzaG91bGQgYmUgY2FsbGVkIG9uY2UgbGVuZ3RocyBkaWZmZXIsIGV4cGVj
dGVkIGFycmF5IFsicHVsbCJdIGxlbmd0aCAxLCBnb3QgWyJwdWxsIiwgInB1bGwiXSBsZW5ndGgg
MgorRkFJTCBSZWFkYWJsZVN0cmVhbVRlZSBzdG9wcyBwdWxsaW5nIHdoZW4gb3JpZ2luYWwgc3Ry
ZWFtIGVycm9ycyB3aGlsZSBib3RoIGJyYW5jaGVzIGFyZSByZWFkaW5nIGFzc2VydF9hcnJheV9l
cXVhbHM6IHB1bGwgc2hvdWxkIGJlIGNhbGxlZCBvbmNlIGxlbmd0aHMgZGlmZmVyLCBleHBlY3Rl
ZCBhcnJheSBbInB1bGwiXSBsZW5ndGggMSwgZ290IFsicHVsbCIsICJwdWxsIl0gbGVuZ3RoIDIK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvdGVlLmFueS53b3JrZXIuaHRtbCBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJl
YW1zL3RlZS5hbnkud29ya2VyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjM4MjkxMzUyOGU2OTNiM2E1ZDU2
YzY2MGE0NTA2MDk4MGI1NDhjMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3RlZS5h
bnkud29ya2VyLmh0bWwKQEAgLTAsMCArMSBAQAorPCEtLSBUaGlzIGZpbGUgaXMgcmVxdWlyZWQg
Zm9yIFdlYktpdCB0ZXN0IGluZnJhc3RydWN0dXJlIHRvIHJ1biB0aGUgdGVtcGxhdGVkIHRlc3Qg
LS0+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMv
dGVlLmRlZGljYXRlZHdvcmtlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy90ZWUuZGVkaWNh
dGVkd29ya2VyLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTAz
YTVjMjE4M2M4NDU1MjZkMWIwYjJmOWE3ZWE0MzM5ODFkM2Q1ZC4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy90ZWUuZGVkaWNhdGVkd29y
a2VyLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDE0ICswLDAgQEAKLQotUEFTUyBS
ZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IHJzLnRlZSgpIHJldHVybnMgYW4gYXJyYXkgb2YgdHdvIFJl
YWRhYmxlU3RyZWFtcyAKLVBBU1MgUmVhZGFibGVTdHJlYW0gdGVlaW5nOiBzaG91bGQgYmUgYWJs
ZSB0byByZWFkIG9uZSBicmFuY2ggdG8gdGhlIGVuZCB3aXRob3V0IGFmZmVjdGluZyB0aGUgb3Ro
ZXIgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIHRlZWluZzogdmFsdWVzIHNob3VsZCBiZSBlcXVhbCBh
Y3Jvc3MgZWFjaCBicmFuY2ggCi1QQVNTIFJlYWRhYmxlU3RyZWFtIHRlZWluZzogZXJyb3JzIGlu
IHRoZSBzb3VyY2Ugc2hvdWxkIHByb3BhZ2F0ZSB0byBib3RoIGJyYW5jaGVzIAotUEFTUyBSZWFk
YWJsZVN0cmVhbSB0ZWVpbmc6IGNhbmNlbGluZyBicmFuY2gxIHNob3VsZCBub3QgaW1wYWN0IGJy
YW5jaDIgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIHRlZWluZzogY2FuY2VsaW5nIGJyYW5jaDIgc2hv
dWxkIG5vdCBpbXBhY3QgYnJhbmNoMiAKLVBBU1MgUmVhZGFibGVTdHJlYW0gdGVlaW5nOiBjYW5j
ZWxpbmcgYm90aCBicmFuY2hlcyBzaG91bGQgYWdncmVnYXRlIHRoZSBjYW5jZWwgcmVhc29ucyBp
bnRvIGFuIGFycmF5IAotUEFTUyBSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IGZhaWxpbmcgdG8gY2Fu
Y2VsIHRoZSBvcmlnaW5hbCBzdHJlYW0gc2hvdWxkIGNhdXNlIGNhbmNlbCgpIHRvIHJlamVjdCBv
biBicmFuY2hlcyAKLVBBU1MgUmVhZGFibGVTdHJlYW0gdGVlaW5nOiBlcnJvcmluZyBhIHRlZWQg
c3RyZWFtIHNob3VsZCBwcm9wZXJseSBoYW5kbGUgY2FuY2VsZWQgYnJhbmNoZXMgCi1QQVNTIFJl
YWRhYmxlU3RyZWFtIHRlZWluZzogY2xvc2luZyB0aGUgb3JpZ2luYWwgc2hvdWxkIGltbWVkaWF0
ZWx5IGNsb3NlIHRoZSBicmFuY2hlcyAKLVBBU1MgUmVhZGFibGVTdHJlYW0gdGVlaW5nOiBlcnJv
cmluZyB0aGUgb3JpZ2luYWwgc2hvdWxkIGltbWVkaWF0ZWx5IGVycm9yIHRoZSBicmFuY2hlcyAK
LVBBU1MgUmVhZGFibGVTdHJlYW1UZWUgc2hvdWxkIG5vdCB1c2UgYSBtb2RpZmllZCBSZWFkYWJs
ZVN0cmVhbSBjb25zdHJ1Y3RvciBmcm9tIHRoZSBnbG9iYWwgb2JqZWN0IAotCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVh
ZGFibGUtc3RyZWFtcy90ZWUuZGVkaWNhdGVkd29ya2VyLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy90ZWUu
ZGVkaWNhdGVkd29ya2VyLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJmNzk0
MjIxNzRiMWQ1NmVjMzQ4MWU1MzMzY2M1YjA0N2UyMjgzYjUuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvdGVlLmRlZGljYXRlZHdvcmtl
ci5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08
bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08dGl0bGU+dGVlLmpzIGRlZGljYXRlZCB3b3JrZXIgd3Jh
cHBlciBmaWxlPC90aXRsZT4KLQotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3Mu
anMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQu
anMiPjwvc2NyaXB0PgotCi08c2NyaXB0PgotJ3VzZSBzdHJpY3QnOwotZmV0Y2hfdGVzdHNfZnJv
bV93b3JrZXIobmV3IFdvcmtlcigndGVlLmpzJykpOwotPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFi
bGUtc3RyZWFtcy90ZWUuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3RlZS5odG1sCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBmYmZhZmI3MjgxNmRhN2YxYWFhNjEzZDQ0MDRiYjFjZGVlZjRiZTg5
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJl
YW1zL3RlZS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotPCFET0NUWVBFIGh0
bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08dGl0bGU+dGVlLmpzIGJyb3dzZXIgY29udGV4
dCB3cmFwcGVyIGZpbGU8L3RpdGxlPgotCi08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFy
bmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3Jl
cG9ydC5qcyI+PC9zY3JpcHQ+Ci0KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvcnMtdXRpbHMu
anMiPjwvc2NyaXB0PgotCi08c2NyaXB0IHNyYz0idGVlLmpzIj48L3NjcmlwdD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9y
ZWFkYWJsZS1zdHJlYW1zL3RlZS5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3RlZS5qcwpkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggZGY3Njg3N2VmZjRhMTc5M2VkMGMyMjIyNTVmNGQ1NTc4OTdiYzEz
ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3Ry
ZWFtcy90ZWUuanMKKysrIC9kZXYvbnVsbApAQCAtMSwyOTMgKzAsMCBAQAotJ3VzZSBzdHJpY3Qn
OwotCi1pZiAoc2VsZi5pbXBvcnRTY3JpcHRzKSB7Ci0gIHNlbGYuaW1wb3J0U2NyaXB0cygnLi4v
cmVzb3VyY2VzL3JzLXV0aWxzLmpzJyk7Ci0gIHNlbGYuaW1wb3J0U2NyaXB0cygnL3Jlc291cmNl
cy90ZXN0aGFybmVzcy5qcycpOwotfQotCi10ZXN0KCgpID0+IHsKLQotICBjb25zdCBycyA9IG5l
dyBSZWFkYWJsZVN0cmVhbSgpOwotICBjb25zdCByZXN1bHQgPSBycy50ZWUoKTsKLQotICBhc3Nl
cnRfdHJ1ZShBcnJheS5pc0FycmF5KHJlc3VsdCksICdyZXR1cm4gdmFsdWUgc2hvdWxkIGJlIGFu
IGFycmF5Jyk7Ci0gIGFzc2VydF9lcXVhbHMocmVzdWx0Lmxlbmd0aCwgMiwgJ2FycmF5IHNob3Vs
ZCBoYXZlIGxlbmd0aCAyJyk7Ci0gIGFzc2VydF9lcXVhbHMocmVzdWx0WzBdLmNvbnN0cnVjdG9y
LCBSZWFkYWJsZVN0cmVhbSwgJzB0aCBlbGVtZW50IHNob3VsZCBiZSBhIFJlYWRhYmxlU3RyZWFt
Jyk7Ci0gIGFzc2VydF9lcXVhbHMocmVzdWx0WzFdLmNvbnN0cnVjdG9yLCBSZWFkYWJsZVN0cmVh
bSwgJzFzdCBlbGVtZW50IHNob3VsZCBiZSBhIFJlYWRhYmxlU3RyZWFtJyk7Ci0KLX0sICdSZWFk
YWJsZVN0cmVhbSB0ZWVpbmc6IHJzLnRlZSgpIHJldHVybnMgYW4gYXJyYXkgb2YgdHdvIFJlYWRh
YmxlU3RyZWFtcycpOwotCi1wcm9taXNlX3Rlc3QodCA9PiB7Ci0KLSAgY29uc3QgcnMgPSBuZXcg
UmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGMuZW5xdWV1ZSgnYScpOwot
ICAgICAgYy5lbnF1ZXVlKCdiJyk7Ci0gICAgICBjLmNsb3NlKCk7Ci0gICAgfQotICB9KTsKLQot
ICBjb25zdCBicmFuY2ggPSBycy50ZWUoKTsKLSAgY29uc3QgYnJhbmNoMSA9IGJyYW5jaFswXTsK
LSAgY29uc3QgYnJhbmNoMiA9IGJyYW5jaFsxXTsKLSAgY29uc3QgcmVhZGVyMSA9IGJyYW5jaDEu
Z2V0UmVhZGVyKCk7Ci0gIGNvbnN0IHJlYWRlcjIgPSBicmFuY2gyLmdldFJlYWRlcigpOwotCi0g
IHJlYWRlcjIuY2xvc2VkLnRoZW4odC51bnJlYWNoZWRfZnVuYygnYnJhbmNoMiBzaG91bGQgbm90
IGJlIGNsb3NlZCcpKTsKLQotICByZXR1cm4gUHJvbWlzZS5hbGwoWwotICAgIHJlYWRlcjEuY2xv
c2VkLAotICAgIHJlYWRlcjEucmVhZCgpLnRoZW4ociA9PiB7Ci0gICAgICBhc3NlcnRfb2JqZWN0
X2VxdWFscyhyLCB7IHZhbHVlOiAnYScsIGRvbmU6IGZhbHNlIH0sICdmaXJzdCBjaHVuayBmcm9t
IGJyYW5jaDEgc2hvdWxkIGJlIGNvcnJlY3QnKTsKLSAgICB9KSwKLSAgICByZWFkZXIxLnJlYWQo
KS50aGVuKHIgPT4gewotICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMociwgeyB2YWx1ZTogJ2In
LCBkb25lOiBmYWxzZSB9LCAnc2Vjb25kIGNodW5rIGZyb20gYnJhbmNoMSBzaG91bGQgYmUgY29y
cmVjdCcpOwotICAgIH0pLAotICAgIHJlYWRlcjEucmVhZCgpLnRoZW4ociA9PiB7Ci0gICAgICBh
c3NlcnRfb2JqZWN0X2VxdWFscyhyLCB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSwg
J3RoaXJkIHJlYWQoKSBmcm9tIGJyYW5jaDEgc2hvdWxkIGJlIGRvbmUnKTsKLSAgICB9KSwKLSAg
ICByZWFkZXIyLnJlYWQoKS50aGVuKHIgPT4gewotICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMo
ciwgeyB2YWx1ZTogJ2EnLCBkb25lOiBmYWxzZSB9LCAnZmlyc3QgY2h1bmsgZnJvbSBicmFuY2gy
IHNob3VsZCBiZSBjb3JyZWN0Jyk7Ci0gICAgfSkKLSAgXSk7Ci0KLX0sICdSZWFkYWJsZVN0cmVh
bSB0ZWVpbmc6IHNob3VsZCBiZSBhYmxlIHRvIHJlYWQgb25lIGJyYW5jaCB0byB0aGUgZW5kIHdp
dGhvdXQgYWZmZWN0aW5nIHRoZSBvdGhlcicpOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotCi0g
IGNvbnN0IHRoZU9iamVjdCA9IHsgdGhlOiAndGVzdCBvYmplY3QnIH07Ci0gIGNvbnN0IHJzID0g
bmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0gICAgICBjLmVucXVldWUodGhl
T2JqZWN0KTsKLSAgICB9Ci0gIH0pOwotCi0gIGNvbnN0IGJyYW5jaCA9IHJzLnRlZSgpOwotICBj
b25zdCBicmFuY2gxID0gYnJhbmNoWzBdOwotICBjb25zdCBicmFuY2gyID0gYnJhbmNoWzFdOwot
ICBjb25zdCByZWFkZXIxID0gYnJhbmNoMS5nZXRSZWFkZXIoKTsKLSAgY29uc3QgcmVhZGVyMiA9
IGJyYW5jaDIuZ2V0UmVhZGVyKCk7Ci0KLSAgcmV0dXJuIFByb21pc2UuYWxsKFtyZWFkZXIxLnJl
YWQoKSwgcmVhZGVyMi5yZWFkKCldKS50aGVuKHZhbHVlcyA9PiB7Ci0gICAgYXNzZXJ0X29iamVj
dF9lcXVhbHModmFsdWVzWzBdLCB2YWx1ZXNbMV0sICd0aGUgdmFsdWVzIHNob3VsZCBiZSBlcXVh
bCcpOwotICB9KTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtIHRlZWluZzogdmFsdWVzIHNob3VsZCBi
ZSBlcXVhbCBhY3Jvc3MgZWFjaCBicmFuY2gnKTsKLQotcHJvbWlzZV90ZXN0KHQgPT4gewotCi0g
IGNvbnN0IHRoZUVycm9yID0geyBuYW1lOiAnYm9vIScgfTsKLSAgY29uc3QgcnMgPSBuZXcgUmVh
ZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGMuZW5xdWV1ZSgnYScpOwotICAg
ICAgYy5lbnF1ZXVlKCdiJyk7Ci0gICAgfSwKLSAgICBwdWxsKCkgewotICAgICAgdGhyb3cgdGhl
RXJyb3I7Ci0gICAgfQotICB9KTsKLQotICBjb25zdCBicmFuY2hlcyA9IHJzLnRlZSgpOwotICBj
b25zdCByZWFkZXIxID0gYnJhbmNoZXNbMF0uZ2V0UmVhZGVyKCk7Ci0gIGNvbnN0IHJlYWRlcjIg
PSBicmFuY2hlc1sxXS5nZXRSZWFkZXIoKTsKLQotICByZWFkZXIxLmxhYmVsID0gJ3JlYWRlcjEn
OwotICByZWFkZXIyLmxhYmVsID0gJ3JlYWRlcjInOwotCi0gIHJldHVybiBQcm9taXNlLmFsbChb
Ci0gICAgcHJvbWlzZV9yZWplY3RzKHQsIHRoZUVycm9yLCByZWFkZXIxLmNsb3NlZCksCi0gICAg
cHJvbWlzZV9yZWplY3RzKHQsIHRoZUVycm9yLCByZWFkZXIyLmNsb3NlZCksCi0gICAgcmVhZGVy
MS5yZWFkKCkudGhlbihyID0+IHsKLSAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHIsIHsgdmFs
dWU6ICdhJywgZG9uZTogZmFsc2UgfSwgJ3Nob3VsZCBiZSBhYmxlIHRvIHJlYWQgdGhlIGZpcnN0
IGNodW5rIGluIGJyYW5jaDEnKTsKLSAgICB9KSwKLSAgICByZWFkZXIxLnJlYWQoKS50aGVuKHIg
PT4gewotICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMociwgeyB2YWx1ZTogJ2InLCBkb25lOiBm
YWxzZSB9LCAnc2hvdWxkIGJlIGFibGUgdG8gcmVhZCB0aGUgc2Vjb25kIGNodW5rIGluIGJyYW5j
aDEnKTsKLQotICAgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0LCB0aGVFcnJvciwgcmVhZGVy
Mi5yZWFkKCkpOwotICAgIH0pCi0gICAgLnRoZW4oKCkgPT4gcHJvbWlzZV9yZWplY3RzKHQsIHRo
ZUVycm9yLCByZWFkZXIxLnJlYWQoKSkpCi0gIF0pOwotCi19LCAnUmVhZGFibGVTdHJlYW0gdGVl
aW5nOiBlcnJvcnMgaW4gdGhlIHNvdXJjZSBzaG91bGQgcHJvcGFnYXRlIHRvIGJvdGggYnJhbmNo
ZXMnKTsKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLQotICBjb25zdCBycyA9IG5ldyBSZWFkYWJs
ZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgYy5lbnF1ZXVlKCdhJyk7Ci0gICAgICBj
LmVucXVldWUoJ2InKTsKLSAgICAgIGMuY2xvc2UoKTsKLSAgICB9Ci0gIH0pOwotCi0gIGNvbnN0
IGJyYW5jaGVzID0gcnMudGVlKCk7Ci0gIGNvbnN0IGJyYW5jaDEgPSBicmFuY2hlc1swXTsKLSAg
Y29uc3QgYnJhbmNoMiA9IGJyYW5jaGVzWzFdOwotICBicmFuY2gxLmNhbmNlbCgpOwotCi0gIHJl
dHVybiBQcm9taXNlLmFsbChbCi0gICAgcmVhZGFibGVTdHJlYW1Ub0FycmF5KGJyYW5jaDEpLnRo
ZW4oY2h1bmtzID0+IHsKLSAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoY2h1bmtzLCBbXSwgJ2Jy
YW5jaDEgc2hvdWxkIGhhdmUgbm8gY2h1bmtzJyk7Ci0gICAgfSksCi0gICAgcmVhZGFibGVTdHJl
YW1Ub0FycmF5KGJyYW5jaDIpLnRoZW4oY2h1bmtzID0+IHsKLSAgICAgIGFzc2VydF9hcnJheV9l
cXVhbHMoY2h1bmtzLCBbJ2EnLCAnYiddLCAnYnJhbmNoMiBzaG91bGQgaGF2ZSB0d28gY2h1bmtz
Jyk7Ci0gICAgfSkKLSAgXSk7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IGNhbmNlbGlu
ZyBicmFuY2gxIHNob3VsZCBub3QgaW1wYWN0IGJyYW5jaDInKTsKLQotcHJvbWlzZV90ZXN0KCgp
ID0+IHsKLQotICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykg
ewotICAgICAgYy5lbnF1ZXVlKCdhJyk7Ci0gICAgICBjLmVucXVldWUoJ2InKTsKLSAgICAgIGMu
Y2xvc2UoKTsKLSAgICB9Ci0gIH0pOwotCi0gIGNvbnN0IGJyYW5jaGVzID0gcnMudGVlKCk7Ci0g
IGNvbnN0IGJyYW5jaDEgPSBicmFuY2hlc1swXTsKLSAgY29uc3QgYnJhbmNoMiA9IGJyYW5jaGVz
WzFdOwotICBicmFuY2gyLmNhbmNlbCgpOwotCi0gIHJldHVybiBQcm9taXNlLmFsbChbCi0gICAg
cmVhZGFibGVTdHJlYW1Ub0FycmF5KGJyYW5jaDEpLnRoZW4oY2h1bmtzID0+IHsKLSAgICAgIGFz
c2VydF9hcnJheV9lcXVhbHMoY2h1bmtzLCBbJ2EnLCAnYiddLCAnYnJhbmNoMSBzaG91bGQgaGF2
ZSB0d28gY2h1bmtzJyk7Ci0gICAgfSksCi0gICAgcmVhZGFibGVTdHJlYW1Ub0FycmF5KGJyYW5j
aDIpLnRoZW4oY2h1bmtzID0+IHsKLSAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoY2h1bmtzLCBb
XSwgJ2JyYW5jaDIgc2hvdWxkIGhhdmUgbm8gY2h1bmtzJyk7Ci0gICAgfSkKLSAgXSk7Ci0KLX0s
ICdSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IGNhbmNlbGluZyBicmFuY2gyIHNob3VsZCBub3QgaW1w
YWN0IGJyYW5jaDInKTsKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLQotICBjb25zdCByZWFzb24x
ID0gbmV3IEVycm9yKCdXZVwncmUgd2FudGVkIG1lbi4nKTsKLSAgY29uc3QgcmVhc29uMiA9IG5l
dyBFcnJvcignSSBoYXZlIHRoZSBkZWF0aCBzZW50ZW5jZSBvbiB0d2VsdmUgc3lzdGVtcy4nKTsK
LQotICBsZXQgcmVzb2x2ZTsKLSAgY29uc3QgcHJvbWlzZSA9IG5ldyBQcm9taXNlKHIgPT4gcmVz
b2x2ZSA9IHIpOwotICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgY2FuY2Vs
KHJlYXNvbikgewotICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhyZWFzb24sIFtyZWFzb24xLCBy
ZWFzb24yXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RoZSBjYW5jZWwgcmVhc29uIHNo
b3VsZCBiZSBhbiBhcnJheSBjb250YWluaW5nIHRob3NlIGZyb20gdGhlIGJyYW5jaGVzJyk7Ci0g
ICAgICByZXNvbHZlKCk7Ci0gICAgfQotICB9KTsKLQotICBjb25zdCBicmFuY2ggPSBycy50ZWUo
KTsKLSAgY29uc3QgYnJhbmNoMSA9IGJyYW5jaFswXTsKLSAgY29uc3QgYnJhbmNoMiA9IGJyYW5j
aFsxXTsKLSAgYnJhbmNoMS5jYW5jZWwocmVhc29uMSk7Ci0gIGJyYW5jaDIuY2FuY2VsKHJlYXNv
bjIpOwotCi0gIHJldHVybiBwcm9taXNlOwotCi19LCAnUmVhZGFibGVTdHJlYW0gdGVlaW5nOiBj
YW5jZWxpbmcgYm90aCBicmFuY2hlcyBzaG91bGQgYWdncmVnYXRlIHRoZSBjYW5jZWwgcmVhc29u
cyBpbnRvIGFuIGFycmF5Jyk7Ci0KLXByb21pc2VfdGVzdCh0ID0+IHsKLQotICBjb25zdCB0aGVF
cnJvciA9IHsgbmFtZTogJ0lcJ2xsIGJlIGNhcmVmdWwuJyB9OwotICBjb25zdCBycyA9IG5ldyBS
ZWFkYWJsZVN0cmVhbSh7Ci0gICAgY2FuY2VsKCkgewotICAgICAgdGhyb3cgdGhlRXJyb3I7Ci0g
ICAgfQotICB9KTsKLQotICBjb25zdCBicmFuY2ggPSBycy50ZWUoKTsKLSAgY29uc3QgYnJhbmNo
MSA9IGJyYW5jaFswXTsKLSAgY29uc3QgYnJhbmNoMiA9IGJyYW5jaFsxXTsKLQotICByZXR1cm4g
UHJvbWlzZS5hbGwoWwotICAgIHByb21pc2VfcmVqZWN0cyh0LCB0aGVFcnJvciwgYnJhbmNoMS5j
YW5jZWwoKSksCi0gICAgcHJvbWlzZV9yZWplY3RzKHQsIHRoZUVycm9yLCBicmFuY2gyLmNhbmNl
bCgpKQotICBdKTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtIHRlZWluZzogZmFpbGluZyB0byBjYW5j
ZWwgdGhlIG9yaWdpbmFsIHN0cmVhbSBzaG91bGQgY2F1c2UgY2FuY2VsKCkgdG8gcmVqZWN0IG9u
IGJyYW5jaGVzJyk7Ci0KLXRlc3QodCA9PiB7Ci0KLSAgbGV0IGNvbnRyb2xsZXI7Ci0gIGNvbnN0
IHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7IHN0YXJ0KGMpIHsgY29udHJvbGxlciA9IGM7
IH0gfSk7Ci0gIGNvbnN0IFticmFuY2gxLCBicmFuY2gyXSA9IHN0cmVhbS50ZWUoKTsKLQotICBj
b25zdCBwcm9taXNlID0gY29udHJvbGxlci5lcnJvcigiZXJyb3IiKTsKLQotICBicmFuY2gxLmNh
bmNlbCgpLmNhdGNoKF89Pl8pOwotICBicmFuY2gyLmNhbmNlbCgpLmNhdGNoKF89Pl8pOwotCi0g
IHJldHVybiBwcm9taXNlOwotfSwgJ1JlYWRhYmxlU3RyZWFtIHRlZWluZzogZXJyb3JpbmcgYSB0
ZWVkIHN0cmVhbSBzaG91bGQgcHJvcGVybHkgaGFuZGxlIGNhbmNlbGVkIGJyYW5jaGVzJyk7Ci0K
LXByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgbGV0IGNvbnRyb2xsZXI7Ci0gIGNvbnN0IHJzID0g
bmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0gICAgICBjb250cm9sbGVyID0g
YzsKLSAgICB9Ci0gIH0pOwotCi0gIGNvbnN0IGJyYW5jaGVzID0gcnMudGVlKCk7Ci0gIGNvbnN0
IHJlYWRlcjEgPSBicmFuY2hlc1swXS5nZXRSZWFkZXIoKTsKLSAgY29uc3QgcmVhZGVyMiA9IGJy
YW5jaGVzWzFdLmdldFJlYWRlcigpOwotCi0gIGNvbnN0IHByb21pc2UgPSBQcm9taXNlLmFsbChb
cmVhZGVyMS5jbG9zZWQsIHJlYWRlcjIuY2xvc2VkXSk7Ci0KLSAgY29udHJvbGxlci5jbG9zZSgp
OwotICByZXR1cm4gcHJvbWlzZTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtIHRlZWluZzogY2xvc2lu
ZyB0aGUgb3JpZ2luYWwgc2hvdWxkIGltbWVkaWF0ZWx5IGNsb3NlIHRoZSBicmFuY2hlcycpOwot
Ci1wcm9taXNlX3Rlc3QodCA9PiB7Ci0KLSAgbGV0IGNvbnRyb2xsZXI7Ci0gIGNvbnN0IHJzID0g
bmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0gICAgICBjb250cm9sbGVyID0g
YzsKLSAgICB9Ci0gIH0pOwotCi0gIGNvbnN0IGJyYW5jaGVzID0gcnMudGVlKCk7Ci0gIGNvbnN0
IHJlYWRlcjEgPSBicmFuY2hlc1swXS5nZXRSZWFkZXIoKTsKLSAgY29uc3QgcmVhZGVyMiA9IGJy
YW5jaGVzWzFdLmdldFJlYWRlcigpOwotCi0gIGNvbnN0IHRoZUVycm9yID0geyBuYW1lOiAnYm9v
IScgfTsKLSAgY29uc3QgcHJvbWlzZSA9IFByb21pc2UuYWxsKFsKLSAgICBwcm9taXNlX3JlamVj
dHModCwgdGhlRXJyb3IsIHJlYWRlcjEuY2xvc2VkKSwKLSAgICBwcm9taXNlX3JlamVjdHModCwg
dGhlRXJyb3IsIHJlYWRlcjIuY2xvc2VkKQotICBdKTsKLQotICBjb250cm9sbGVyLmVycm9yKHRo
ZUVycm9yKTsKLSAgcmV0dXJuIHByb21pc2U7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6
IGVycm9yaW5nIHRoZSBvcmlnaW5hbCBzaG91bGQgaW1tZWRpYXRlbHkgZXJyb3IgdGhlIGJyYW5j
aGVzJyk7Ci0KLXRlc3QodCA9PiB7Ci0KLSAgLy8gQ29weSBvcmlnaW5hbCBnbG9iYWwuCi0gIGNv
bnN0IG9sZFJlYWRhYmxlU3RyZWFtID0gUmVhZGFibGVTdHJlYW07Ci0gIGNvbnN0IGdldFJlYWRl
ciA9IFJlYWRhYmxlU3RyZWFtLnByb3RvdHlwZS5nZXRSZWFkZXI7Ci0KLSAgY29uc3Qgb3JpZ1JT
ID0gbmV3IFJlYWRhYmxlU3RyZWFtKCk7Ci0KLSAgLy8gUmVwbGFjZSB0aGUgZ2xvYmFsIFJlYWRh
YmxlU3RyZWFtIGNvbnN0cnVjdG9yIHdpdGggb25lIHRoYXQgZG9lc24ndCB3b3JrLgotICBSZWFk
YWJsZVN0cmVhbSA9IGZ1bmN0aW9uKCkgewotICAgIHRocm93IG5ldyBFcnJvcignZ2xvYmFsIFJl
YWRhYmxlU3RyZWFtIGNvbnN0cnVjdG9yIGNhbGxlZCcpOwotICB9OwotICB0LmFkZF9jbGVhbnVw
KCgpID0+IHsKLSAgICBSZWFkYWJsZVN0cmVhbSA9IG9sZFJlYWRhYmxlU3RyZWFtOwotICB9KTsK
LQotICAvLyBUaGlzIHdpbGwgcHJvYmFibHkgZmFpbCBpZiB0aGUgZ2xvYmFsIFJlYWRhYmxlU3Ry
ZWFtIGNvbnN0cnVjdG9yIHdhcyB1c2VkLgotICBjb25zdCBbcnMxLCByczJdID0gb3JpZ1JTLnRl
ZSgpOwotCi0gIC8vIFRoZXNlIHdpbGwgZGVmaW5pdGVseSBmYWlsIGlmIHRoZSBnbG9iYWwgUmVh
ZGFibGVTdHJlYW0gY29uc3RydWN0b3Igd2FzIHVzZWQuCi0gIGFzc2VydF9ub3RfZXF1YWxzKGdl
dFJlYWRlci5jYWxsKHJzMSksIHVuZGVmaW5lZCwgJ2dldFJlYWRlciBzaG91bGQgd29yayBvbiBy
czEnKTsKLSAgYXNzZXJ0X25vdF9lcXVhbHMoZ2V0UmVhZGVyLmNhbGwocnMyKSwgdW5kZWZpbmVk
LCAnZ2V0UmVhZGVyIHNob3VsZCB3b3JrIG9uIHJzMicpOwotCi19LCAnUmVhZGFibGVTdHJlYW1U
ZWUgc2hvdWxkIG5vdCB1c2UgYSBtb2RpZmllZCBSZWFkYWJsZVN0cmVhbSBjb25zdHJ1Y3RvciBm
cm9tIHRoZSBnbG9iYWwgb2JqZWN0Jyk7Ci0KLWRvbmUoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJl
YW1zL3RlZS5zZXJ2aWNld29ya2VyLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3Rl
ZS5zZXJ2aWNld29ya2VyLmh0dHBzLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggYWU0ZTQ4YTJjMDlhZjMzMzYyYzk4OTgyZDBmMTQ2MzVhMjY0NzE2My4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy90ZWUu
c2VydmljZXdvcmtlci5odHRwcy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwxNyAr
MCwwIEBACi0KLUhhcm5lc3MgRXJyb3IgKEZBSUwpLCBtZXNzYWdlID0gVW5oYW5kbGVkIHJlamVj
dGlvbgotCi1QQVNTIFNlcnZpY2Ugd29ya2VyIHRlc3Qgc2V0dXAgCi1QQVNTIFJlYWRhYmxlU3Ry
ZWFtIHRlZWluZzogcnMudGVlKCkgcmV0dXJucyBhbiBhcnJheSBvZiB0d28gUmVhZGFibGVTdHJl
YW1zIAotUEFTUyBSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IHNob3VsZCBiZSBhYmxlIHRvIHJlYWQg
b25lIGJyYW5jaCB0byB0aGUgZW5kIHdpdGhvdXQgYWZmZWN0aW5nIHRoZSBvdGhlciAKLVBBU1Mg
UmVhZGFibGVTdHJlYW0gdGVlaW5nOiB2YWx1ZXMgc2hvdWxkIGJlIGVxdWFsIGFjcm9zcyBlYWNo
IGJyYW5jaCAKLVBBU1MgUmVhZGFibGVTdHJlYW0gdGVlaW5nOiBlcnJvcnMgaW4gdGhlIHNvdXJj
ZSBzaG91bGQgcHJvcGFnYXRlIHRvIGJvdGggYnJhbmNoZXMgCi1QQVNTIFJlYWRhYmxlU3RyZWFt
IHRlZWluZzogY2FuY2VsaW5nIGJyYW5jaDEgc2hvdWxkIG5vdCBpbXBhY3QgYnJhbmNoMiAKLVBB
U1MgUmVhZGFibGVTdHJlYW0gdGVlaW5nOiBjYW5jZWxpbmcgYnJhbmNoMiBzaG91bGQgbm90IGlt
cGFjdCBicmFuY2gyIAotUEFTUyBSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IGNhbmNlbGluZyBib3Ro
IGJyYW5jaGVzIHNob3VsZCBhZ2dyZWdhdGUgdGhlIGNhbmNlbCByZWFzb25zIGludG8gYW4gYXJy
YXkgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIHRlZWluZzogZmFpbGluZyB0byBjYW5jZWwgdGhlIG9y
aWdpbmFsIHN0cmVhbSBzaG91bGQgY2F1c2UgY2FuY2VsKCkgdG8gcmVqZWN0IG9uIGJyYW5jaGVz
IAotUEFTUyBSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IGVycm9yaW5nIGEgdGVlZCBzdHJlYW0gc2hv
dWxkIHByb3Blcmx5IGhhbmRsZSBjYW5jZWxlZCBicmFuY2hlcyAKLVBBU1MgUmVhZGFibGVTdHJl
YW0gdGVlaW5nOiBjbG9zaW5nIHRoZSBvcmlnaW5hbCBzaG91bGQgaW1tZWRpYXRlbHkgY2xvc2Ug
dGhlIGJyYW5jaGVzIAotUEFTUyBSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IGVycm9yaW5nIHRoZSBv
cmlnaW5hbCBzaG91bGQgaW1tZWRpYXRlbHkgZXJyb3IgdGhlIGJyYW5jaGVzIAotUEFTUyBSZWFk
YWJsZVN0cmVhbVRlZSBzaG91bGQgbm90IHVzZSBhIG1vZGlmaWVkIFJlYWRhYmxlU3RyZWFtIGNv
bnN0cnVjdG9yIGZyb20gdGhlIGdsb2JhbCBvYmplY3QgCi0KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJl
YW1zL3RlZS5zZXJ2aWNld29ya2VyLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy90ZWUuc2Vydmlj
ZXdvcmtlci5odHRwcy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMjJmYmVm
NTdiODFiOTA3NWQ1ZTJiOTlhOWQ0NGExMTZjMDM3NTkzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3RlZS5zZXJ2aWNld29ya2VyLmh0
dHBzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4K
LTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTx0aXRsZT50ZWUuanMgc2VydmljZSB3b3JrZXIgd3Jh
cHBlciBmaWxlPC90aXRsZT4KLQotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3Mu
anMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQu
anMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3Jr
ZXIvcmVzb3VyY2VzL3Rlc3QtaGVscGVycy5zdWIuanMiPjwvc2NyaXB0PgotCi08c2NyaXB0Pgot
J3VzZSBzdHJpY3QnOwotc2VydmljZV93b3JrZXJfdGVzdCgndGVlLmpzJywgJ1NlcnZpY2Ugd29y
a2VyIHRlc3Qgc2V0dXAnKTsKLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvdGVl
LnNoYXJlZHdvcmtlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy90ZWUuc2hhcmVkd29ya2Vy
LWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDlkNWQyNTA5ZDc4
NDdlOGNkNmZlNjYwNmFhNjBjZGQzM2FhNDc0ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy90ZWUuc2hhcmVkd29ya2VyLWV4cGVjdGVk
LnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotQ09OU09MRSBNRVNTQUdFOiBSZWZl
cmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogU2hhcmVkV29ya2VyCi0KLUhhcm5lc3Mg
RXJyb3IgKEZBSUwpLCBtZXNzYWdlID0gUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFi
bGU6IFNoYXJlZFdvcmtlcgotCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3RlZS5zaGFyZWR3
b3JrZXIuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3RlZS5zaGFyZWR3b3JrZXIuaHRtbApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggNjM4MGM5ZDRmYTMyYjhmNDc3NGUzYzhhNjU2Njg5NzZkZjll
YWE0OC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUt
c3RyZWFtcy90ZWUuc2hhcmVkd29ya2VyLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCww
IEBACi08IURPQ1RZUEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTx0aXRsZT50ZWUu
anMgc2hhcmVkIHdvcmtlciB3cmFwcGVyIGZpbGU8L3RpdGxlPgotCi08c2NyaXB0IHNyYz0iL3Jl
c291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNl
cy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci0KLTxzY3JpcHQ+Ci0ndXNlIHN0cmlj
dCc7Ci1mZXRjaF90ZXN0c19mcm9tX3dvcmtlcihuZXcgU2hhcmVkV29ya2VyKCd0ZWUuanMnKSk7
Ci08L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3RlbXBsYXRlZC5hbnktZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJl
YW1zL3JlYWRhYmxlLXN0cmVhbXMvdGVtcGxhdGVkLmFueS1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uOTQ0ZGY3ZTk4M2FkNTM1MmQxNTk3N2JiNTAyZGUyNWQzMjRhZGEzYQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy9yZWFkYWJsZS1zdHJlYW1zL3RlbXBsYXRlZC5hbnktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
OTAgQEAKKworUEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTRW1wdHkgd2l0aCBSZWFkYWJsZVN0cmVh
bSAoZW1wdHkpIAorUEFTUyBSZWFkYWJsZVN0cmVhbSAoZW1wdHkpOiBpbnN0YW5jZXMgaGF2ZSB0
aGUgY29ycmVjdCBtZXRob2RzIGFuZCBwcm9wZXJ0aWVzIAorRkFJTCBSZWFkYWJsZVN0cmVhbSAo
ZW1wdHkpOiBjYWxsaW5nIGdldFJlYWRlciB3aXRoIGludmFsaWQgYXJndW1lbnRzIHNob3VsZCB0
aHJvdyBhcHByb3ByaWF0ZSBlcnJvcnMgYXNzZXJ0X3Rocm93c19qczogZW1wdHkgc3RyaW5nIG1v
ZGUgc2hvdWxkIHRocm93IGZ1bmN0aW9uICIoKSA9PiBycy5nZXRSZWFkZXIoeyBtb2RlOiAnJyB9
KSIgdGhyZXcgb2JqZWN0ICJSYW5nZUVycm9yOiBJbnZhbGlkIG1vZGUgaXMgc3BlY2lmaWVkIiAo
IlJhbmdlRXJyb3IiKSBleHBlY3RlZCBpbnN0YW5jZSBvZiBmdW5jdGlvbiAiZnVuY3Rpb24gVHlw
ZUVycm9yKCkgeworICAgIFtuYXRpdmUgY29kZV0KK30iICgiVHlwZUVycm9yIikKK1BBU1MgUnVu
bmluZyB0ZW1wbGF0ZWRSU0VtcHR5UmVhZGVyIHdpdGggUmVhZGFibGVTdHJlYW0gKGVtcHR5KSBy
ZWFkZXIgCitQQVNTIFJlYWRhYmxlU3RyZWFtIChlbXB0eSkgcmVhZGVyOiBpbnN0YW5jZXMgaGF2
ZSB0aGUgY29ycmVjdCBtZXRob2RzIGFuZCBwcm9wZXJ0aWVzIAorUEFTUyBSZWFkYWJsZVN0cmVh
bSAoZW1wdHkpIHJlYWRlcjogbG9ja2VkIHNob3VsZCBiZSB0cnVlIAorUEFTUyBSZWFkYWJsZVN0
cmVhbSAoZW1wdHkpIHJlYWRlcjogcmVhZCgpIHNob3VsZCBuZXZlciBzZXR0bGUgCitQQVNTIFJl
YWRhYmxlU3RyZWFtIChlbXB0eSkgcmVhZGVyOiB0d28gcmVhZCgpcyBzaG91bGQgYm90aCBuZXZl
ciBzZXR0bGUgCitQQVNTIFJlYWRhYmxlU3RyZWFtIChlbXB0eSkgcmVhZGVyOiByZWFkKCkgc2hv
dWxkIHJldHVybiBkaXN0aW5jdCBwcm9taXNlcyBlYWNoIHRpbWUgCitQQVNTIFJlYWRhYmxlU3Ry
ZWFtIChlbXB0eSkgcmVhZGVyOiBnZXRSZWFkZXIoKSBhZ2FpbiBvbiB0aGUgc3RyZWFtIHNob3Vs
ZCBmYWlsIAorUEFTUyBSZWFkYWJsZVN0cmVhbSAoZW1wdHkpIHJlYWRlcjogcmVsZWFzaW5nIHRo
ZSBsb2NrIHdpdGggcGVuZGluZyByZWFkIHJlcXVlc3RzIHNob3VsZCB0aHJvdyBidXQgdGhlIHJl
YWQgcmVxdWVzdHMgc2hvdWxkIHN0YXkgcGVuZGluZyAKK1BBU1MgUmVhZGFibGVTdHJlYW0gKGVt
cHR5KSByZWFkZXI6IHJlbGVhc2luZyB0aGUgbG9jayBzaG91bGQgY2F1c2UgZnVydGhlciByZWFk
KCkgY2FsbHMgdG8gcmVqZWN0IHdpdGggYSBUeXBlRXJyb3IgCitQQVNTIFJlYWRhYmxlU3RyZWFt
IChlbXB0eSkgcmVhZGVyOiByZWxlYXNpbmcgdGhlIGxvY2sgc2hvdWxkIGNhdXNlIGNsb3NlZCBj
YWxscyB0byByZWplY3Qgd2l0aCBhIFR5cGVFcnJvciAKK1BBU1MgUmVhZGFibGVTdHJlYW0gKGVt
cHR5KSByZWFkZXI6IHJlbGVhc2luZyB0aGUgbG9jayBzaG91bGQgY2F1c2UgbG9ja2VkIHRvIGJl
Y29tZSBmYWxzZSAKK1BBU1MgUmVhZGFibGVTdHJlYW0gKGVtcHR5KSByZWFkZXI6IGNhbmNlbGlu
ZyB2aWEgdGhlIHJlYWRlciBzaG91bGQgY2F1c2UgdGhlIHJlYWRlciB0byBhY3QgY2xvc2VkIAor
UEFTUyBSZWFkYWJsZVN0cmVhbSAoZW1wdHkpIHJlYWRlcjogY2FuY2VsaW5nIHZpYSB0aGUgc3Ry
ZWFtIHNob3VsZCBmYWlsIAorUEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTQ2xvc2VkIHdpdGggUmVh
ZGFibGVTdHJlYW0gKGNsb3NlZCB2aWEgY2FsbCBpbiBzdGFydCkgCitQQVNTIFJlYWRhYmxlU3Ry
ZWFtIChjbG9zZWQgdmlhIGNhbGwgaW4gc3RhcnQpOiBjYW5jZWwoKSBzaG91bGQgcmV0dXJuIGEg
ZGlzdGluY3QgZnVsZmlsbGVkIHByb21pc2UgZWFjaCB0aW1lIAorUEFTUyBSZWFkYWJsZVN0cmVh
bSAoY2xvc2VkIHZpYSBjYWxsIGluIHN0YXJ0KTogbG9ja2VkIHNob3VsZCBiZSBmYWxzZSAKK1BB
U1MgUmVhZGFibGVTdHJlYW0gKGNsb3NlZCB2aWEgY2FsbCBpbiBzdGFydCk6IGdldFJlYWRlcigp
IHNob3VsZCBiZSBPSyAKK1BBU1MgUmVhZGFibGVTdHJlYW0gKGNsb3NlZCB2aWEgY2FsbCBpbiBz
dGFydCk6IHNob3VsZCBiZSBhYmxlIHRvIGFjcXVpcmUgbXVsdGlwbGUgcmVhZGVycyBpZiB0aGV5
IGFyZSByZWxlYXNlZCBpbiBzdWNjZXNzaW9uIAorUEFTUyBSZWFkYWJsZVN0cmVhbSAoY2xvc2Vk
IHZpYSBjYWxsIGluIHN0YXJ0KTogc2hvdWxkIG5vdCBiZSBhYmxlIHRvIGFjcXVpcmUgYSBzZWNv
bmQgcmVhZGVyIGlmIHdlIGRvbid0IHJlbGVhc2UgdGhlIGZpcnN0IG9uZSAKK1BBU1MgUnVubmlu
ZyB0ZW1wbGF0ZWRSU0Nsb3NlZFJlYWRlciB3aXRoIFJlYWRhYmxlU3RyZWFtIHJlYWRlciAoY2xv
c2VkIGJlZm9yZSBnZXR0aW5nIHJlYWRlcikgCitQQVNTIFJlYWRhYmxlU3RyZWFtIHJlYWRlciAo
Y2xvc2VkIGJlZm9yZSBnZXR0aW5nIHJlYWRlcik6IHJlYWQoKSBzaG91bGQgZnVsZmlsbCB3aXRo
IHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9IAorUEFTUyBSZWFkYWJsZVN0cmVhbSBy
ZWFkZXIgKGNsb3NlZCBiZWZvcmUgZ2V0dGluZyByZWFkZXIpOiByZWFkKCkgbXVsdGlwbGUgdGlt
ZXMgc2hvdWxkIGZ1bGZpbGwgd2l0aCB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSAK
K1BBU1MgUmVhZGFibGVTdHJlYW0gcmVhZGVyIChjbG9zZWQgYmVmb3JlIGdldHRpbmcgcmVhZGVy
KTogcmVhZCgpIHNob3VsZCB3b3JrIHdoZW4gdXNlZCB3aXRoaW4gYW5vdGhlciByZWFkKCkgZnVs
ZmlsbCBjYWxsYmFjayAKK1BBU1MgUmVhZGFibGVTdHJlYW0gcmVhZGVyIChjbG9zZWQgYmVmb3Jl
IGdldHRpbmcgcmVhZGVyKTogY2xvc2VkIHNob3VsZCBmdWxmaWxsIHdpdGggdW5kZWZpbmVkIAor
UEFTUyBSZWFkYWJsZVN0cmVhbSByZWFkZXIgKGNsb3NlZCBiZWZvcmUgZ2V0dGluZyByZWFkZXIp
OiByZWxlYXNpbmcgdGhlIGxvY2sgc2hvdWxkIGNhdXNlIGNsb3NlZCB0byByZWplY3QgYW5kIGNo
YW5nZSBpZGVudGl0eSAKK1BBU1MgUmVhZGFibGVTdHJlYW0gcmVhZGVyIChjbG9zZWQgYmVmb3Jl
IGdldHRpbmcgcmVhZGVyKTogY2FuY2VsKCkgc2hvdWxkIHJldHVybiBhIGRpc3RpbmN0IGZ1bGZp
bGxlZCBwcm9taXNlIGVhY2ggdGltZSAKK1BBU1MgUnVubmluZyB0ZW1wbGF0ZWRSU0Nsb3NlZFJl
YWRlciB3aXRoIFJlYWRhYmxlU3RyZWFtIHJlYWRlciAoY2xvc2VkIGFmdGVyIGdldHRpbmcgcmVh
ZGVyKSAKK1BBU1MgUmVhZGFibGVTdHJlYW0gcmVhZGVyIChjbG9zZWQgYWZ0ZXIgZ2V0dGluZyBy
ZWFkZXIpOiByZWFkKCkgc2hvdWxkIGZ1bGZpbGwgd2l0aCB7IHZhbHVlOiB1bmRlZmluZWQsIGRv
bmU6IHRydWUgfSAKK1BBU1MgUmVhZGFibGVTdHJlYW0gcmVhZGVyIChjbG9zZWQgYWZ0ZXIgZ2V0
dGluZyByZWFkZXIpOiByZWFkKCkgbXVsdGlwbGUgdGltZXMgc2hvdWxkIGZ1bGZpbGwgd2l0aCB7
IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSAKK1BBU1MgUmVhZGFibGVTdHJlYW0gcmVh
ZGVyIChjbG9zZWQgYWZ0ZXIgZ2V0dGluZyByZWFkZXIpOiByZWFkKCkgc2hvdWxkIHdvcmsgd2hl
biB1c2VkIHdpdGhpbiBhbm90aGVyIHJlYWQoKSBmdWxmaWxsIGNhbGxiYWNrIAorUEFTUyBSZWFk
YWJsZVN0cmVhbSByZWFkZXIgKGNsb3NlZCBhZnRlciBnZXR0aW5nIHJlYWRlcik6IGNsb3NlZCBz
aG91bGQgZnVsZmlsbCB3aXRoIHVuZGVmaW5lZCAKK1BBU1MgUmVhZGFibGVTdHJlYW0gcmVhZGVy
IChjbG9zZWQgYWZ0ZXIgZ2V0dGluZyByZWFkZXIpOiByZWxlYXNpbmcgdGhlIGxvY2sgc2hvdWxk
IGNhdXNlIGNsb3NlZCB0byByZWplY3QgYW5kIGNoYW5nZSBpZGVudGl0eSAKK1BBU1MgUmVhZGFi
bGVTdHJlYW0gcmVhZGVyIChjbG9zZWQgYWZ0ZXIgZ2V0dGluZyByZWFkZXIpOiBjYW5jZWwoKSBz
aG91bGQgcmV0dXJuIGEgZGlzdGluY3QgZnVsZmlsbGVkIHByb21pc2UgZWFjaCB0aW1lIAorUEFT
UyBSdW5uaW5nIHRlbXBsYXRlZFJTQ2xvc2VkIHdpdGggUmVhZGFibGVTdHJlYW0gKGNsb3NlZCB2
aWEgY2FuY2VsKSAKK1BBU1MgUmVhZGFibGVTdHJlYW0gKGNsb3NlZCB2aWEgY2FuY2VsKTogY2Fu
Y2VsKCkgc2hvdWxkIHJldHVybiBhIGRpc3RpbmN0IGZ1bGZpbGxlZCBwcm9taXNlIGVhY2ggdGlt
ZSAKK1BBU1MgUmVhZGFibGVTdHJlYW0gKGNsb3NlZCB2aWEgY2FuY2VsKTogbG9ja2VkIHNob3Vs
ZCBiZSBmYWxzZSAKK1BBU1MgUmVhZGFibGVTdHJlYW0gKGNsb3NlZCB2aWEgY2FuY2VsKTogZ2V0
UmVhZGVyKCkgc2hvdWxkIGJlIE9LIAorUEFTUyBSZWFkYWJsZVN0cmVhbSAoY2xvc2VkIHZpYSBj
YW5jZWwpOiBzaG91bGQgYmUgYWJsZSB0byBhY3F1aXJlIG11bHRpcGxlIHJlYWRlcnMgaWYgdGhl
eSBhcmUgcmVsZWFzZWQgaW4gc3VjY2Vzc2lvbiAKK1BBU1MgUmVhZGFibGVTdHJlYW0gKGNsb3Nl
ZCB2aWEgY2FuY2VsKTogc2hvdWxkIG5vdCBiZSBhYmxlIHRvIGFjcXVpcmUgYSBzZWNvbmQgcmVh
ZGVyIGlmIHdlIGRvbid0IHJlbGVhc2UgdGhlIGZpcnN0IG9uZSAKK1BBU1MgUnVubmluZyB0ZW1w
bGF0ZWRSU0Nsb3NlZFJlYWRlciB3aXRoIFJlYWRhYmxlU3RyZWFtIHJlYWRlciAoY2xvc2VkIHZp
YSBjYW5jZWwgYWZ0ZXIgZ2V0dGluZyByZWFkZXIpIAorUEFTUyBSZWFkYWJsZVN0cmVhbSByZWFk
ZXIgKGNsb3NlZCB2aWEgY2FuY2VsIGFmdGVyIGdldHRpbmcgcmVhZGVyKTogcmVhZCgpIHNob3Vs
ZCBmdWxmaWxsIHdpdGggeyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0gCitQQVNTIFJl
YWRhYmxlU3RyZWFtIHJlYWRlciAoY2xvc2VkIHZpYSBjYW5jZWwgYWZ0ZXIgZ2V0dGluZyByZWFk
ZXIpOiByZWFkKCkgbXVsdGlwbGUgdGltZXMgc2hvdWxkIGZ1bGZpbGwgd2l0aCB7IHZhbHVlOiB1
bmRlZmluZWQsIGRvbmU6IHRydWUgfSAKK1BBU1MgUmVhZGFibGVTdHJlYW0gcmVhZGVyIChjbG9z
ZWQgdmlhIGNhbmNlbCBhZnRlciBnZXR0aW5nIHJlYWRlcik6IHJlYWQoKSBzaG91bGQgd29yayB3
aGVuIHVzZWQgd2l0aGluIGFub3RoZXIgcmVhZCgpIGZ1bGZpbGwgY2FsbGJhY2sgCitQQVNTIFJl
YWRhYmxlU3RyZWFtIHJlYWRlciAoY2xvc2VkIHZpYSBjYW5jZWwgYWZ0ZXIgZ2V0dGluZyByZWFk
ZXIpOiBjbG9zZWQgc2hvdWxkIGZ1bGZpbGwgd2l0aCB1bmRlZmluZWQgCitQQVNTIFJlYWRhYmxl
U3RyZWFtIHJlYWRlciAoY2xvc2VkIHZpYSBjYW5jZWwgYWZ0ZXIgZ2V0dGluZyByZWFkZXIpOiBy
ZWxlYXNpbmcgdGhlIGxvY2sgc2hvdWxkIGNhdXNlIGNsb3NlZCB0byByZWplY3QgYW5kIGNoYW5n
ZSBpZGVudGl0eSAKK1BBU1MgUmVhZGFibGVTdHJlYW0gcmVhZGVyIChjbG9zZWQgdmlhIGNhbmNl
bCBhZnRlciBnZXR0aW5nIHJlYWRlcik6IGNhbmNlbCgpIHNob3VsZCByZXR1cm4gYSBkaXN0aW5j
dCBmdWxmaWxsZWQgcHJvbWlzZSBlYWNoIHRpbWUgCitQQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNF
cnJvcmVkIHdpdGggUmVhZGFibGVTdHJlYW0gKGVycm9yZWQgdmlhIGNhbGwgaW4gc3RhcnQpIAor
UEFTUyBSZWFkYWJsZVN0cmVhbSAoZXJyb3JlZCB2aWEgY2FsbCBpbiBzdGFydCk6IGdldFJlYWRl
cigpIHNob3VsZCByZXR1cm4gYSByZWFkZXIgdGhhdCBhY3RzIGVycm9yZWQgCitQQVNTIFJlYWRh
YmxlU3RyZWFtIChlcnJvcmVkIHZpYSBjYWxsIGluIHN0YXJ0KTogcmVhZCgpIHR3aWNlIHNob3Vs
ZCBnaXZlIHRoZSBlcnJvciBlYWNoIHRpbWUgCitQQVNTIFJlYWRhYmxlU3RyZWFtIChlcnJvcmVk
IHZpYSBjYWxsIGluIHN0YXJ0KTogbG9ja2VkIHNob3VsZCBiZSBmYWxzZSAKK1BBU1MgUnVubmlu
ZyB0ZW1wbGF0ZWRSU0Vycm9yZWRTeW5jT25seSB3aXRoIFJlYWRhYmxlU3RyZWFtIChlcnJvcmVk
IHZpYSBjYWxsIGluIHN0YXJ0KSAKK1BBU1MgUmVhZGFibGVTdHJlYW0gKGVycm9yZWQgdmlhIGNh
bGwgaW4gc3RhcnQpOiBzaG91bGQgYmUgYWJsZSB0byBvYnRhaW4gYSBzZWNvbmQgcmVhZGVyLCB3
aXRoIHRoZSBjb3JyZWN0IGNsb3NlZCBwcm9taXNlIAorUEFTUyBSZWFkYWJsZVN0cmVhbSAoZXJy
b3JlZCB2aWEgY2FsbCBpbiBzdGFydCk6IHNob3VsZCBub3QgYmUgYWJsZSB0byBvYnRhaW4gYWRk
aXRpb25hbCByZWFkZXJzIGlmIHdlIGRvbid0IHJlbGVhc2UgdGhlIGZpcnN0IGxvY2sgCitQQVNT
IFJlYWRhYmxlU3RyZWFtIChlcnJvcmVkIHZpYSBjYWxsIGluIHN0YXJ0KTogY2FuY2VsKCkgc2hv
dWxkIHJldHVybiBhIGRpc3RpbmN0IHJlamVjdGVkIHByb21pc2UgZWFjaCB0aW1lIAorUEFTUyBS
ZWFkYWJsZVN0cmVhbSAoZXJyb3JlZCB2aWEgY2FsbCBpbiBzdGFydCk6IHJlYWRlciBjYW5jZWwo
KSBzaG91bGQgcmV0dXJuIGEgZGlzdGluY3QgcmVqZWN0ZWQgcHJvbWlzZSBlYWNoIHRpbWUgCitQ
QVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNFcnJvcmVkIHdpdGggUmVhZGFibGVTdHJlYW0gKGVycm9y
ZWQgdmlhIHJldHVybmluZyBhIHJlamVjdGVkIHByb21pc2UgaW4gc3RhcnQpIAorUEFTUyBSZWFk
YWJsZVN0cmVhbSAoZXJyb3JlZCB2aWEgcmV0dXJuaW5nIGEgcmVqZWN0ZWQgcHJvbWlzZSBpbiBz
dGFydCk6IGdldFJlYWRlcigpIHNob3VsZCByZXR1cm4gYSByZWFkZXIgdGhhdCBhY3RzIGVycm9y
ZWQgCitQQVNTIFJlYWRhYmxlU3RyZWFtIChlcnJvcmVkIHZpYSByZXR1cm5pbmcgYSByZWplY3Rl
ZCBwcm9taXNlIGluIHN0YXJ0KTogcmVhZCgpIHR3aWNlIHNob3VsZCBnaXZlIHRoZSBlcnJvciBl
YWNoIHRpbWUgCitQQVNTIFJlYWRhYmxlU3RyZWFtIChlcnJvcmVkIHZpYSByZXR1cm5pbmcgYSBy
ZWplY3RlZCBwcm9taXNlIGluIHN0YXJ0KTogbG9ja2VkIHNob3VsZCBiZSBmYWxzZSAKK1BBU1Mg
UnVubmluZyB0ZW1wbGF0ZWRSU0Vycm9yZWRSZWFkZXIgd2l0aCBSZWFkYWJsZVN0cmVhbSAoZXJy
b3JlZCB2aWEgcmV0dXJuaW5nIGEgcmVqZWN0ZWQgcHJvbWlzZSBpbiBzdGFydCkgcmVhZGVyIAor
UEFTUyBSZWFkYWJsZVN0cmVhbSAoZXJyb3JlZCB2aWEgcmV0dXJuaW5nIGEgcmVqZWN0ZWQgcHJv
bWlzZSBpbiBzdGFydCkgcmVhZGVyOiBjbG9zZWQgc2hvdWxkIHJlamVjdCB3aXRoIHRoZSBlcnJv
ciAKK1BBU1MgUmVhZGFibGVTdHJlYW0gKGVycm9yZWQgdmlhIHJldHVybmluZyBhIHJlamVjdGVk
IHByb21pc2UgaW4gc3RhcnQpIHJlYWRlcjogcmVsZWFzaW5nIHRoZSBsb2NrIHNob3VsZCBjYXVz
ZSBjbG9zZWQgdG8gcmVqZWN0IGFuZCBjaGFuZ2UgaWRlbnRpdHkgCitQQVNTIFJlYWRhYmxlU3Ry
ZWFtIChlcnJvcmVkIHZpYSByZXR1cm5pbmcgYSByZWplY3RlZCBwcm9taXNlIGluIHN0YXJ0KSBy
ZWFkZXI6IHJlYWQoKSBzaG91bGQgcmVqZWN0IHdpdGggdGhlIGVycm9yIAorUEFTUyBSdW5uaW5n
IHRlbXBsYXRlZFJTRXJyb3JlZFJlYWRlciB3aXRoIFJlYWRhYmxlU3RyZWFtIHJlYWRlciAoZXJy
b3JlZCBiZWZvcmUgZ2V0dGluZyByZWFkZXIpIAorUEFTUyBSZWFkYWJsZVN0cmVhbSByZWFkZXIg
KGVycm9yZWQgYmVmb3JlIGdldHRpbmcgcmVhZGVyKTogY2xvc2VkIHNob3VsZCByZWplY3Qgd2l0
aCB0aGUgZXJyb3IgCitQQVNTIFJlYWRhYmxlU3RyZWFtIHJlYWRlciAoZXJyb3JlZCBiZWZvcmUg
Z2V0dGluZyByZWFkZXIpOiByZWxlYXNpbmcgdGhlIGxvY2sgc2hvdWxkIGNhdXNlIGNsb3NlZCB0
byByZWplY3QgYW5kIGNoYW5nZSBpZGVudGl0eSAKK1BBU1MgUmVhZGFibGVTdHJlYW0gcmVhZGVy
IChlcnJvcmVkIGJlZm9yZSBnZXR0aW5nIHJlYWRlcik6IHJlYWQoKSBzaG91bGQgcmVqZWN0IHdp
dGggdGhlIGVycm9yIAorUEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTRXJyb3JlZFJlYWRlciB3aXRo
IFJlYWRhYmxlU3RyZWFtIHJlYWRlciAoZXJyb3JlZCBhZnRlciBnZXR0aW5nIHJlYWRlcikgCitQ
QVNTIFJlYWRhYmxlU3RyZWFtIHJlYWRlciAoZXJyb3JlZCBhZnRlciBnZXR0aW5nIHJlYWRlcik6
IGNsb3NlZCBzaG91bGQgcmVqZWN0IHdpdGggdGhlIGVycm9yIAorUEFTUyBSZWFkYWJsZVN0cmVh
bSByZWFkZXIgKGVycm9yZWQgYWZ0ZXIgZ2V0dGluZyByZWFkZXIpOiByZWxlYXNpbmcgdGhlIGxv
Y2sgc2hvdWxkIGNhdXNlIGNsb3NlZCB0byByZWplY3QgYW5kIGNoYW5nZSBpZGVudGl0eSAKK1BB
U1MgUmVhZGFibGVTdHJlYW0gcmVhZGVyIChlcnJvcmVkIGFmdGVyIGdldHRpbmcgcmVhZGVyKTog
cmVhZCgpIHNob3VsZCByZWplY3Qgd2l0aCB0aGUgZXJyb3IgCitQQVNTIFJ1bm5pbmcgdGVtcGxh
dGVkUlNUd29DaHVua3NPcGVuUmVhZGVyIHdpdGggUmVhZGFibGVTdHJlYW0gKHR3byBjaHVua3Mg
ZW5xdWV1ZWQsIHN0aWxsIG9wZW4pIHJlYWRlciAKK1BBU1MgUmVhZGFibGVTdHJlYW0gKHR3byBj
aHVua3MgZW5xdWV1ZWQsIHN0aWxsIG9wZW4pIHJlYWRlcjogY2FsbGluZyByZWFkKCkgdHdpY2Ug
d2l0aG91dCB3YWl0aW5nIHdpbGwgZXZlbnR1YWxseSBnaXZlIGJvdGggY2h1bmtzIChzZXF1ZW50
aWFsKSAKK1BBU1MgUmVhZGFibGVTdHJlYW0gKHR3byBjaHVua3MgZW5xdWV1ZWQsIHN0aWxsIG9w
ZW4pIHJlYWRlcjogY2FsbGluZyByZWFkKCkgdHdpY2Ugd2l0aG91dCB3YWl0aW5nIHdpbGwgZXZl
bnR1YWxseSBnaXZlIGJvdGggY2h1bmtzIChuZXN0ZWQpIAorUEFTUyBSZWFkYWJsZVN0cmVhbSAo
dHdvIGNodW5rcyBlbnF1ZXVlZCwgc3RpbGwgb3BlbikgcmVhZGVyOiByZWFkKCkgc2hvdWxkIHJl
dHVybiBkaXN0aW5jdCBwcm9taXNlcyBlYWNoIHRpbWUgCitQQVNTIFJlYWRhYmxlU3RyZWFtICh0
d28gY2h1bmtzIGVucXVldWVkLCBzdGlsbCBvcGVuKSByZWFkZXI6IGNhbmNlbCgpIGFmdGVyIGEg
cmVhZCgpIHNob3VsZCBzdGlsbCBnaXZlIHRoYXQgc2luZ2xlIHJlYWQgcmVzdWx0IAorUEFTUyBS
dW5uaW5nIHRlbXBsYXRlZFJTVHdvQ2h1bmtzQ2xvc2VkUmVhZGVyIHdpdGggUmVhZGFibGVTdHJl
YW0gKHR3byBjaHVua3MgZW5xdWV1ZWQsIHRoZW4gY2xvc2VkKSByZWFkZXIgCitQQVNTIFJlYWRh
YmxlU3RyZWFtICh0d28gY2h1bmtzIGVucXVldWVkLCB0aGVuIGNsb3NlZCkgcmVhZGVyOiB0aGly
ZCByZWFkKCksIHdpdGhvdXQgd2FpdGluZywgc2hvdWxkIGdpdmUgeyB2YWx1ZTogdW5kZWZpbmVk
LCBkb25lOiB0cnVlIH0gKHNlcXVlbnRpYWwpIAorUEFTUyBSZWFkYWJsZVN0cmVhbSAodHdvIGNo
dW5rcyBlbnF1ZXVlZCwgdGhlbiBjbG9zZWQpIHJlYWRlcjogdGhpcmQgcmVhZCgpLCB3aXRob3V0
IHdhaXRpbmcsIHNob3VsZCBnaXZlIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9IChu
ZXN0ZWQpIAorUEFTUyBSZWFkYWJsZVN0cmVhbSAodHdvIGNodW5rcyBlbnF1ZXVlZCwgdGhlbiBj
bG9zZWQpIHJlYWRlcjogZHJhaW5pbmcgdGhlIHN0cmVhbSB2aWEgcmVhZCgpIHNob3VsZCBjYXVz
ZSB0aGUgcmVhZGVyIGNsb3NlZCBwcm9taXNlIHRvIGZ1bGZpbGwsIGJ1dCBsb2NrZWQgc3RheXMg
dHJ1ZSAKK1BBU1MgUmVhZGFibGVTdHJlYW0gKHR3byBjaHVua3MgZW5xdWV1ZWQsIHRoZW4gY2xv
c2VkKSByZWFkZXI6IHJlbGVhc2luZyB0aGUgbG9jayBhZnRlciB0aGUgc3RyZWFtIGlzIGNsb3Nl
ZCBzaG91bGQgY2F1c2UgbG9ja2VkIHRvIGJlY29tZSBmYWxzZSAKK1BBU1MgUmVhZGFibGVTdHJl
YW0gKHR3byBjaHVua3MgZW5xdWV1ZWQsIHRoZW4gY2xvc2VkKSByZWFkZXI6IHJlbGVhc2luZyB0
aGUgbG9jayBzaG91bGQgY2F1c2UgZnVydGhlciByZWFkKCkgY2FsbHMgdG8gcmVqZWN0IHdpdGgg
YSBUeXBlRXJyb3IgCitQQVNTIFJlYWRhYmxlU3RyZWFtICh0d28gY2h1bmtzIGVucXVldWVkLCB0
aGVuIGNsb3NlZCkgcmVhZGVyOiByZWFkZXIncyBjbG9zZWQgcHJvcGVydHkgYWx3YXlzIHJldHVy
bnMgdGhlIHNhbWUgcHJvbWlzZSAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvdGVtcGxhdGVk
LmFueS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
dHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvdGVtcGxhdGVkLmFueS5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIz
ODI5MTM1MjhlNjkzYjNhNWQ1NmM2NjBhNDUwNjA5ODBiNTQ4YzMKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVh
ZGFibGUtc3RyZWFtcy90ZW1wbGF0ZWQuYW55Lmh0bWwKQEAgLTAsMCArMSBAQAorPCEtLSBUaGlz
IGZpbGUgaXMgcmVxdWlyZWQgZm9yIFdlYktpdCB0ZXN0IGluZnJhc3RydWN0dXJlIHRvIHJ1biB0
aGUgdGVtcGxhdGVkIHRlc3QgLS0+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
L3JlYWRhYmxlLXN0cmVhbXMvdGVtcGxhdGVkLmFueS5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3RlbXBsYXRl
ZC5hbnkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQ1MjRlNjlmZWUxOWU4MmE1NjA3YzEyMzY4OTU1ODY3NDAx
N2QyMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3RlbXBsYXRlZC5hbnkuanMKQEAg
LTAsMCArMSwxNDMgQEAKKy8vIE1FVEE6IGdsb2JhbD13aW5kb3csd29ya2VyLGpzc2hlbGwKKy8v
IE1FVEE6IHNjcmlwdD0uLi9yZXNvdXJjZXMvdGVzdC11dGlscy5qcworLy8gTUVUQTogc2NyaXB0
PS4uL3Jlc291cmNlcy9ycy10ZXN0LXRlbXBsYXRlcy5qcworJ3VzZSBzdHJpY3QnOworCisvLyBS
dW4gdGhlIHJlYWRhYmxlIHN0cmVhbSB0ZXN0IHRlbXBsYXRlcyBhZ2FpbnN0IHJlYWRhYmxlIHN0
cmVhbXMgY3JlYXRlZCBkaXJlY3RseSB1c2luZyB0aGUgY29uc3RydWN0b3IKKworY29uc3QgdGhl
RXJyb3IgPSB7IG5hbWU6ICdib28hJyB9OworY29uc3QgY2h1bmtzID0gWydhJywgJ2InXTsKKwor
dGVtcGxhdGVkUlNFbXB0eSgnUmVhZGFibGVTdHJlYW0gKGVtcHR5KScsICgpID0+IHsKKyAgcmV0
dXJuIG5ldyBSZWFkYWJsZVN0cmVhbSgpOworfSk7CisKK3RlbXBsYXRlZFJTRW1wdHlSZWFkZXIo
J1JlYWRhYmxlU3RyZWFtIChlbXB0eSkgcmVhZGVyJywgKCkgPT4geworICByZXR1cm4gc3RyZWFt
QW5kRGVmYXVsdFJlYWRlcihuZXcgUmVhZGFibGVTdHJlYW0oKSk7Cit9KTsKKwordGVtcGxhdGVk
UlNDbG9zZWQoJ1JlYWRhYmxlU3RyZWFtIChjbG9zZWQgdmlhIGNhbGwgaW4gc3RhcnQpJywgKCkg
PT4geworICByZXR1cm4gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAg
ICBjLmNsb3NlKCk7CisgICAgfQorICB9KTsKK30pOworCit0ZW1wbGF0ZWRSU0Nsb3NlZFJlYWRl
cignUmVhZGFibGVTdHJlYW0gcmVhZGVyIChjbG9zZWQgYmVmb3JlIGdldHRpbmcgcmVhZGVyKScs
ICgpID0+IHsKKyAgbGV0IGNvbnRyb2xsZXI7CisgIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJs
ZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgY29udHJvbGxlciA9IGM7CisgICAgfQor
ICB9KTsKKyAgY29udHJvbGxlci5jbG9zZSgpOworICBjb25zdCByZXN1bHQgPSBzdHJlYW1BbmRE
ZWZhdWx0UmVhZGVyKHN0cmVhbSk7CisgIHJldHVybiByZXN1bHQ7Cit9KTsKKwordGVtcGxhdGVk
UlNDbG9zZWRSZWFkZXIoJ1JlYWRhYmxlU3RyZWFtIHJlYWRlciAoY2xvc2VkIGFmdGVyIGdldHRp
bmcgcmVhZGVyKScsICgpID0+IHsKKyAgbGV0IGNvbnRyb2xsZXI7CisgIGNvbnN0IHN0cmVhbSA9
IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgY29udHJvbGxlciA9
IGM7CisgICAgfQorICB9KTsKKyAgY29uc3QgcmVzdWx0ID0gc3RyZWFtQW5kRGVmYXVsdFJlYWRl
cihzdHJlYW0pOworICBjb250cm9sbGVyLmNsb3NlKCk7CisgIHJldHVybiByZXN1bHQ7Cit9KTsK
KwordGVtcGxhdGVkUlNDbG9zZWQoJ1JlYWRhYmxlU3RyZWFtIChjbG9zZWQgdmlhIGNhbmNlbCkn
LCAoKSA9PiB7CisgIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbSgpOworICBzdHJl
YW0uY2FuY2VsKCk7CisgIHJldHVybiBzdHJlYW07Cit9KTsKKwordGVtcGxhdGVkUlNDbG9zZWRS
ZWFkZXIoJ1JlYWRhYmxlU3RyZWFtIHJlYWRlciAoY2xvc2VkIHZpYSBjYW5jZWwgYWZ0ZXIgZ2V0
dGluZyByZWFkZXIpJywgKCkgPT4geworICBjb25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJl
YW0oKTsKKyAgY29uc3QgcmVzdWx0ID0gc3RyZWFtQW5kRGVmYXVsdFJlYWRlcihzdHJlYW0pOwor
ICByZXN1bHQucmVhZGVyLmNhbmNlbCgpOworICByZXR1cm4gcmVzdWx0OworfSk7CisKK3RlbXBs
YXRlZFJTRXJyb3JlZCgnUmVhZGFibGVTdHJlYW0gKGVycm9yZWQgdmlhIGNhbGwgaW4gc3RhcnQp
JywgKCkgPT4geworICByZXR1cm4gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7
CisgICAgICBjLmVycm9yKHRoZUVycm9yKTsKKyAgICB9CisgIH0pOworfSwgdGhlRXJyb3IpOwor
Cit0ZW1wbGF0ZWRSU0Vycm9yZWRTeW5jT25seSgnUmVhZGFibGVTdHJlYW0gKGVycm9yZWQgdmlh
IGNhbGwgaW4gc3RhcnQpJywgKCkgPT4geworICByZXR1cm4gbmV3IFJlYWRhYmxlU3RyZWFtKHsK
KyAgICBzdGFydChjKSB7CisgICAgICBjLmVycm9yKHRoZUVycm9yKTsKKyAgICB9CisgIH0pOwor
fSwgdGhlRXJyb3IpOworCit0ZW1wbGF0ZWRSU0Vycm9yZWQoJ1JlYWRhYmxlU3RyZWFtIChlcnJv
cmVkIHZpYSByZXR1cm5pbmcgYSByZWplY3RlZCBwcm9taXNlIGluIHN0YXJ0KScsICgpID0+IHsK
KyAgcmV0dXJuIG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoKSB7CisgICAgICByZXR1
cm4gUHJvbWlzZS5yZWplY3QodGhlRXJyb3IpOworICAgIH0KKyAgfSk7Cit9LCB0aGVFcnJvcik7
CisKK3RlbXBsYXRlZFJTRXJyb3JlZFJlYWRlcignUmVhZGFibGVTdHJlYW0gKGVycm9yZWQgdmlh
IHJldHVybmluZyBhIHJlamVjdGVkIHByb21pc2UgaW4gc3RhcnQpIHJlYWRlcicsICgpID0+IHsK
KyAgcmV0dXJuIHN0cmVhbUFuZERlZmF1bHRSZWFkZXIobmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAg
ICBzdGFydCgpIHsKKyAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCh0aGVFcnJvcik7CisgICAg
fQorICB9KSk7Cit9LCB0aGVFcnJvcik7CisKK3RlbXBsYXRlZFJTRXJyb3JlZFJlYWRlcignUmVh
ZGFibGVTdHJlYW0gcmVhZGVyIChlcnJvcmVkIGJlZm9yZSBnZXR0aW5nIHJlYWRlciknLCAoKSA9
PiB7CisgIGxldCBjb250cm9sbGVyOworICBjb25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJl
YW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGNvbnRyb2xsZXIgPSBjOworICAgIH0KKyAgfSk7
CisgIGNvbnRyb2xsZXIuZXJyb3IodGhlRXJyb3IpOworICByZXR1cm4gc3RyZWFtQW5kRGVmYXVs
dFJlYWRlcihzdHJlYW0pOworfSwgdGhlRXJyb3IpOworCit0ZW1wbGF0ZWRSU0Vycm9yZWRSZWFk
ZXIoJ1JlYWRhYmxlU3RyZWFtIHJlYWRlciAoZXJyb3JlZCBhZnRlciBnZXR0aW5nIHJlYWRlcikn
LCAoKSA9PiB7CisgIGxldCBjb250cm9sbGVyOworICBjb25zdCByZXN1bHQgPSBzdHJlYW1BbmRE
ZWZhdWx0UmVhZGVyKG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAg
Y29udHJvbGxlciA9IGM7CisgICAgfQorICB9KSk7CisgIGNvbnRyb2xsZXIuZXJyb3IodGhlRXJy
b3IpOworICByZXR1cm4gcmVzdWx0OworfSwgdGhlRXJyb3IpOworCit0ZW1wbGF0ZWRSU1R3b0No
dW5rc09wZW5SZWFkZXIoJ1JlYWRhYmxlU3RyZWFtICh0d28gY2h1bmtzIGVucXVldWVkLCBzdGls
bCBvcGVuKSByZWFkZXInLCAoKSA9PiB7CisgIHJldHVybiBzdHJlYW1BbmREZWZhdWx0UmVhZGVy
KG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgYy5lbnF1ZXVlKGNo
dW5rc1swXSk7CisgICAgICBjLmVucXVldWUoY2h1bmtzWzFdKTsKKyAgICB9CisgIH0pKTsKK30s
IGNodW5rcyk7CisKK3RlbXBsYXRlZFJTVHdvQ2h1bmtzQ2xvc2VkUmVhZGVyKCdSZWFkYWJsZVN0
cmVhbSAodHdvIGNodW5rcyBlbnF1ZXVlZCwgdGhlbiBjbG9zZWQpIHJlYWRlcicsICgpID0+IHsK
KyAgbGV0IGRvQ2xvc2U7CisgIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Cisg
ICAgc3RhcnQoYykgeworICAgICAgYy5lbnF1ZXVlKGNodW5rc1swXSk7CisgICAgICBjLmVucXVl
dWUoY2h1bmtzWzFdKTsKKyAgICAgIGRvQ2xvc2UgPSBjLmNsb3NlLmJpbmQoYyk7CisgICAgfQor
ICB9KTsKKyAgY29uc3QgcmVzdWx0ID0gc3RyZWFtQW5kRGVmYXVsdFJlYWRlcihzdHJlYW0pOwor
ICBkb0Nsb3NlKCk7CisgIHJldHVybiByZXN1bHQ7Cit9LCBjaHVua3MpOworCitmdW5jdGlvbiBz
dHJlYW1BbmREZWZhdWx0UmVhZGVyKHN0cmVhbSkgeworICByZXR1cm4geyBzdHJlYW0sIHJlYWRl
cjogc3RyZWFtLmdldFJlYWRlcigpIH07Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy90ZW1w
bGF0ZWQuYW55Lndvcmtlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy90ZW1wbGF0ZWQuYW55
Lndvcmtlci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTQ0ZGY3ZTk4M2FkNTM1MmQxNTk3N2Ji
NTAyZGUyNWQzMjRhZGEzYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3RlbXBsYXRl
ZC5hbnkud29ya2VyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDkwIEBACisKK1BBU1MgUnVubmlu
ZyB0ZW1wbGF0ZWRSU0VtcHR5IHdpdGggUmVhZGFibGVTdHJlYW0gKGVtcHR5KSAKK1BBU1MgUmVh
ZGFibGVTdHJlYW0gKGVtcHR5KTogaW5zdGFuY2VzIGhhdmUgdGhlIGNvcnJlY3QgbWV0aG9kcyBh
bmQgcHJvcGVydGllcyAKK0ZBSUwgUmVhZGFibGVTdHJlYW0gKGVtcHR5KTogY2FsbGluZyBnZXRS
ZWFkZXIgd2l0aCBpbnZhbGlkIGFyZ3VtZW50cyBzaG91bGQgdGhyb3cgYXBwcm9wcmlhdGUgZXJy
b3JzIGFzc2VydF90aHJvd3NfanM6IGVtcHR5IHN0cmluZyBtb2RlIHNob3VsZCB0aHJvdyBmdW5j
dGlvbiAiKCkgPT4gcnMuZ2V0UmVhZGVyKHsgbW9kZTogJycgfSkiIHRocmV3IG9iamVjdCAiUmFu
Z2VFcnJvcjogSW52YWxpZCBtb2RlIGlzIHNwZWNpZmllZCIgKCJSYW5nZUVycm9yIikgZXhwZWN0
ZWQgaW5zdGFuY2Ugb2YgZnVuY3Rpb24gImZ1bmN0aW9uIFR5cGVFcnJvcigpIHsKKyAgICBbbmF0
aXZlIGNvZGVdCit9IiAoIlR5cGVFcnJvciIpCitQQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNFbXB0
eVJlYWRlciB3aXRoIFJlYWRhYmxlU3RyZWFtIChlbXB0eSkgcmVhZGVyIAorUEFTUyBSZWFkYWJs
ZVN0cmVhbSAoZW1wdHkpIHJlYWRlcjogaW5zdGFuY2VzIGhhdmUgdGhlIGNvcnJlY3QgbWV0aG9k
cyBhbmQgcHJvcGVydGllcyAKK1BBU1MgUmVhZGFibGVTdHJlYW0gKGVtcHR5KSByZWFkZXI6IGxv
Y2tlZCBzaG91bGQgYmUgdHJ1ZSAKK1BBU1MgUmVhZGFibGVTdHJlYW0gKGVtcHR5KSByZWFkZXI6
IHJlYWQoKSBzaG91bGQgbmV2ZXIgc2V0dGxlIAorUEFTUyBSZWFkYWJsZVN0cmVhbSAoZW1wdHkp
IHJlYWRlcjogdHdvIHJlYWQoKXMgc2hvdWxkIGJvdGggbmV2ZXIgc2V0dGxlIAorUEFTUyBSZWFk
YWJsZVN0cmVhbSAoZW1wdHkpIHJlYWRlcjogcmVhZCgpIHNob3VsZCByZXR1cm4gZGlzdGluY3Qg
cHJvbWlzZXMgZWFjaCB0aW1lIAorUEFTUyBSZWFkYWJsZVN0cmVhbSAoZW1wdHkpIHJlYWRlcjog
Z2V0UmVhZGVyKCkgYWdhaW4gb24gdGhlIHN0cmVhbSBzaG91bGQgZmFpbCAKK1BBU1MgUmVhZGFi
bGVTdHJlYW0gKGVtcHR5KSByZWFkZXI6IHJlbGVhc2luZyB0aGUgbG9jayB3aXRoIHBlbmRpbmcg
cmVhZCByZXF1ZXN0cyBzaG91bGQgdGhyb3cgYnV0IHRoZSByZWFkIHJlcXVlc3RzIHNob3VsZCBz
dGF5IHBlbmRpbmcgCitQQVNTIFJlYWRhYmxlU3RyZWFtIChlbXB0eSkgcmVhZGVyOiByZWxlYXNp
bmcgdGhlIGxvY2sgc2hvdWxkIGNhdXNlIGZ1cnRoZXIgcmVhZCgpIGNhbGxzIHRvIHJlamVjdCB3
aXRoIGEgVHlwZUVycm9yIAorUEFTUyBSZWFkYWJsZVN0cmVhbSAoZW1wdHkpIHJlYWRlcjogcmVs
ZWFzaW5nIHRoZSBsb2NrIHNob3VsZCBjYXVzZSBjbG9zZWQgY2FsbHMgdG8gcmVqZWN0IHdpdGgg
YSBUeXBlRXJyb3IgCitQQVNTIFJlYWRhYmxlU3RyZWFtIChlbXB0eSkgcmVhZGVyOiByZWxlYXNp
bmcgdGhlIGxvY2sgc2hvdWxkIGNhdXNlIGxvY2tlZCB0byBiZWNvbWUgZmFsc2UgCitQQVNTIFJl
YWRhYmxlU3RyZWFtIChlbXB0eSkgcmVhZGVyOiBjYW5jZWxpbmcgdmlhIHRoZSByZWFkZXIgc2hv
dWxkIGNhdXNlIHRoZSByZWFkZXIgdG8gYWN0IGNsb3NlZCAKK1BBU1MgUmVhZGFibGVTdHJlYW0g
KGVtcHR5KSByZWFkZXI6IGNhbmNlbGluZyB2aWEgdGhlIHN0cmVhbSBzaG91bGQgZmFpbCAKK1BB
U1MgUnVubmluZyB0ZW1wbGF0ZWRSU0Nsb3NlZCB3aXRoIFJlYWRhYmxlU3RyZWFtIChjbG9zZWQg
dmlhIGNhbGwgaW4gc3RhcnQpIAorUEFTUyBSZWFkYWJsZVN0cmVhbSAoY2xvc2VkIHZpYSBjYWxs
IGluIHN0YXJ0KTogY2FuY2VsKCkgc2hvdWxkIHJldHVybiBhIGRpc3RpbmN0IGZ1bGZpbGxlZCBw
cm9taXNlIGVhY2ggdGltZSAKK1BBU1MgUmVhZGFibGVTdHJlYW0gKGNsb3NlZCB2aWEgY2FsbCBp
biBzdGFydCk6IGxvY2tlZCBzaG91bGQgYmUgZmFsc2UgCitQQVNTIFJlYWRhYmxlU3RyZWFtIChj
bG9zZWQgdmlhIGNhbGwgaW4gc3RhcnQpOiBnZXRSZWFkZXIoKSBzaG91bGQgYmUgT0sgCitQQVNT
IFJlYWRhYmxlU3RyZWFtIChjbG9zZWQgdmlhIGNhbGwgaW4gc3RhcnQpOiBzaG91bGQgYmUgYWJs
ZSB0byBhY3F1aXJlIG11bHRpcGxlIHJlYWRlcnMgaWYgdGhleSBhcmUgcmVsZWFzZWQgaW4gc3Vj
Y2Vzc2lvbiAKK1BBU1MgUmVhZGFibGVTdHJlYW0gKGNsb3NlZCB2aWEgY2FsbCBpbiBzdGFydCk6
IHNob3VsZCBub3QgYmUgYWJsZSB0byBhY3F1aXJlIGEgc2Vjb25kIHJlYWRlciBpZiB3ZSBkb24n
dCByZWxlYXNlIHRoZSBmaXJzdCBvbmUgCitQQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNDbG9zZWRS
ZWFkZXIgd2l0aCBSZWFkYWJsZVN0cmVhbSByZWFkZXIgKGNsb3NlZCBiZWZvcmUgZ2V0dGluZyBy
ZWFkZXIpIAorUEFTUyBSZWFkYWJsZVN0cmVhbSByZWFkZXIgKGNsb3NlZCBiZWZvcmUgZ2V0dGlu
ZyByZWFkZXIpOiByZWFkKCkgc2hvdWxkIGZ1bGZpbGwgd2l0aCB7IHZhbHVlOiB1bmRlZmluZWQs
IGRvbmU6IHRydWUgfSAKK1BBU1MgUmVhZGFibGVTdHJlYW0gcmVhZGVyIChjbG9zZWQgYmVmb3Jl
IGdldHRpbmcgcmVhZGVyKTogcmVhZCgpIG11bHRpcGxlIHRpbWVzIHNob3VsZCBmdWxmaWxsIHdp
dGggeyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0gCitQQVNTIFJlYWRhYmxlU3RyZWFt
IHJlYWRlciAoY2xvc2VkIGJlZm9yZSBnZXR0aW5nIHJlYWRlcik6IHJlYWQoKSBzaG91bGQgd29y
ayB3aGVuIHVzZWQgd2l0aGluIGFub3RoZXIgcmVhZCgpIGZ1bGZpbGwgY2FsbGJhY2sgCitQQVNT
IFJlYWRhYmxlU3RyZWFtIHJlYWRlciAoY2xvc2VkIGJlZm9yZSBnZXR0aW5nIHJlYWRlcik6IGNs
b3NlZCBzaG91bGQgZnVsZmlsbCB3aXRoIHVuZGVmaW5lZCAKK1BBU1MgUmVhZGFibGVTdHJlYW0g
cmVhZGVyIChjbG9zZWQgYmVmb3JlIGdldHRpbmcgcmVhZGVyKTogcmVsZWFzaW5nIHRoZSBsb2Nr
IHNob3VsZCBjYXVzZSBjbG9zZWQgdG8gcmVqZWN0IGFuZCBjaGFuZ2UgaWRlbnRpdHkgCitQQVNT
IFJlYWRhYmxlU3RyZWFtIHJlYWRlciAoY2xvc2VkIGJlZm9yZSBnZXR0aW5nIHJlYWRlcik6IGNh
bmNlbCgpIHNob3VsZCByZXR1cm4gYSBkaXN0aW5jdCBmdWxmaWxsZWQgcHJvbWlzZSBlYWNoIHRp
bWUgCitQQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNDbG9zZWRSZWFkZXIgd2l0aCBSZWFkYWJsZVN0
cmVhbSByZWFkZXIgKGNsb3NlZCBhZnRlciBnZXR0aW5nIHJlYWRlcikgCitQQVNTIFJlYWRhYmxl
U3RyZWFtIHJlYWRlciAoY2xvc2VkIGFmdGVyIGdldHRpbmcgcmVhZGVyKTogcmVhZCgpIHNob3Vs
ZCBmdWxmaWxsIHdpdGggeyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0gCitQQVNTIFJl
YWRhYmxlU3RyZWFtIHJlYWRlciAoY2xvc2VkIGFmdGVyIGdldHRpbmcgcmVhZGVyKTogcmVhZCgp
IG11bHRpcGxlIHRpbWVzIHNob3VsZCBmdWxmaWxsIHdpdGggeyB2YWx1ZTogdW5kZWZpbmVkLCBk
b25lOiB0cnVlIH0gCitQQVNTIFJlYWRhYmxlU3RyZWFtIHJlYWRlciAoY2xvc2VkIGFmdGVyIGdl
dHRpbmcgcmVhZGVyKTogcmVhZCgpIHNob3VsZCB3b3JrIHdoZW4gdXNlZCB3aXRoaW4gYW5vdGhl
ciByZWFkKCkgZnVsZmlsbCBjYWxsYmFjayAKK1BBU1MgUmVhZGFibGVTdHJlYW0gcmVhZGVyIChj
bG9zZWQgYWZ0ZXIgZ2V0dGluZyByZWFkZXIpOiBjbG9zZWQgc2hvdWxkIGZ1bGZpbGwgd2l0aCB1
bmRlZmluZWQgCitQQVNTIFJlYWRhYmxlU3RyZWFtIHJlYWRlciAoY2xvc2VkIGFmdGVyIGdldHRp
bmcgcmVhZGVyKTogcmVsZWFzaW5nIHRoZSBsb2NrIHNob3VsZCBjYXVzZSBjbG9zZWQgdG8gcmVq
ZWN0IGFuZCBjaGFuZ2UgaWRlbnRpdHkgCitQQVNTIFJlYWRhYmxlU3RyZWFtIHJlYWRlciAoY2xv
c2VkIGFmdGVyIGdldHRpbmcgcmVhZGVyKTogY2FuY2VsKCkgc2hvdWxkIHJldHVybiBhIGRpc3Rp
bmN0IGZ1bGZpbGxlZCBwcm9taXNlIGVhY2ggdGltZSAKK1BBU1MgUnVubmluZyB0ZW1wbGF0ZWRS
U0Nsb3NlZCB3aXRoIFJlYWRhYmxlU3RyZWFtIChjbG9zZWQgdmlhIGNhbmNlbCkgCitQQVNTIFJl
YWRhYmxlU3RyZWFtIChjbG9zZWQgdmlhIGNhbmNlbCk6IGNhbmNlbCgpIHNob3VsZCByZXR1cm4g
YSBkaXN0aW5jdCBmdWxmaWxsZWQgcHJvbWlzZSBlYWNoIHRpbWUgCitQQVNTIFJlYWRhYmxlU3Ry
ZWFtIChjbG9zZWQgdmlhIGNhbmNlbCk6IGxvY2tlZCBzaG91bGQgYmUgZmFsc2UgCitQQVNTIFJl
YWRhYmxlU3RyZWFtIChjbG9zZWQgdmlhIGNhbmNlbCk6IGdldFJlYWRlcigpIHNob3VsZCBiZSBP
SyAKK1BBU1MgUmVhZGFibGVTdHJlYW0gKGNsb3NlZCB2aWEgY2FuY2VsKTogc2hvdWxkIGJlIGFi
bGUgdG8gYWNxdWlyZSBtdWx0aXBsZSByZWFkZXJzIGlmIHRoZXkgYXJlIHJlbGVhc2VkIGluIHN1
Y2Nlc3Npb24gCitQQVNTIFJlYWRhYmxlU3RyZWFtIChjbG9zZWQgdmlhIGNhbmNlbCk6IHNob3Vs
ZCBub3QgYmUgYWJsZSB0byBhY3F1aXJlIGEgc2Vjb25kIHJlYWRlciBpZiB3ZSBkb24ndCByZWxl
YXNlIHRoZSBmaXJzdCBvbmUgCitQQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNDbG9zZWRSZWFkZXIg
d2l0aCBSZWFkYWJsZVN0cmVhbSByZWFkZXIgKGNsb3NlZCB2aWEgY2FuY2VsIGFmdGVyIGdldHRp
bmcgcmVhZGVyKSAKK1BBU1MgUmVhZGFibGVTdHJlYW0gcmVhZGVyIChjbG9zZWQgdmlhIGNhbmNl
bCBhZnRlciBnZXR0aW5nIHJlYWRlcik6IHJlYWQoKSBzaG91bGQgZnVsZmlsbCB3aXRoIHsgdmFs
dWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9IAorUEFTUyBSZWFkYWJsZVN0cmVhbSByZWFkZXIg
KGNsb3NlZCB2aWEgY2FuY2VsIGFmdGVyIGdldHRpbmcgcmVhZGVyKTogcmVhZCgpIG11bHRpcGxl
IHRpbWVzIHNob3VsZCBmdWxmaWxsIHdpdGggeyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVl
IH0gCitQQVNTIFJlYWRhYmxlU3RyZWFtIHJlYWRlciAoY2xvc2VkIHZpYSBjYW5jZWwgYWZ0ZXIg
Z2V0dGluZyByZWFkZXIpOiByZWFkKCkgc2hvdWxkIHdvcmsgd2hlbiB1c2VkIHdpdGhpbiBhbm90
aGVyIHJlYWQoKSBmdWxmaWxsIGNhbGxiYWNrIAorUEFTUyBSZWFkYWJsZVN0cmVhbSByZWFkZXIg
KGNsb3NlZCB2aWEgY2FuY2VsIGFmdGVyIGdldHRpbmcgcmVhZGVyKTogY2xvc2VkIHNob3VsZCBm
dWxmaWxsIHdpdGggdW5kZWZpbmVkIAorUEFTUyBSZWFkYWJsZVN0cmVhbSByZWFkZXIgKGNsb3Nl
ZCB2aWEgY2FuY2VsIGFmdGVyIGdldHRpbmcgcmVhZGVyKTogcmVsZWFzaW5nIHRoZSBsb2NrIHNo
b3VsZCBjYXVzZSBjbG9zZWQgdG8gcmVqZWN0IGFuZCBjaGFuZ2UgaWRlbnRpdHkgCitQQVNTIFJl
YWRhYmxlU3RyZWFtIHJlYWRlciAoY2xvc2VkIHZpYSBjYW5jZWwgYWZ0ZXIgZ2V0dGluZyByZWFk
ZXIpOiBjYW5jZWwoKSBzaG91bGQgcmV0dXJuIGEgZGlzdGluY3QgZnVsZmlsbGVkIHByb21pc2Ug
ZWFjaCB0aW1lIAorUEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTRXJyb3JlZCB3aXRoIFJlYWRhYmxl
U3RyZWFtIChlcnJvcmVkIHZpYSBjYWxsIGluIHN0YXJ0KSAKK1BBU1MgUmVhZGFibGVTdHJlYW0g
KGVycm9yZWQgdmlhIGNhbGwgaW4gc3RhcnQpOiBnZXRSZWFkZXIoKSBzaG91bGQgcmV0dXJuIGEg
cmVhZGVyIHRoYXQgYWN0cyBlcnJvcmVkIAorUEFTUyBSZWFkYWJsZVN0cmVhbSAoZXJyb3JlZCB2
aWEgY2FsbCBpbiBzdGFydCk6IHJlYWQoKSB0d2ljZSBzaG91bGQgZ2l2ZSB0aGUgZXJyb3IgZWFj
aCB0aW1lIAorUEFTUyBSZWFkYWJsZVN0cmVhbSAoZXJyb3JlZCB2aWEgY2FsbCBpbiBzdGFydCk6
IGxvY2tlZCBzaG91bGQgYmUgZmFsc2UgCitQQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNFcnJvcmVk
U3luY09ubHkgd2l0aCBSZWFkYWJsZVN0cmVhbSAoZXJyb3JlZCB2aWEgY2FsbCBpbiBzdGFydCkg
CitQQVNTIFJlYWRhYmxlU3RyZWFtIChlcnJvcmVkIHZpYSBjYWxsIGluIHN0YXJ0KTogc2hvdWxk
IGJlIGFibGUgdG8gb2J0YWluIGEgc2Vjb25kIHJlYWRlciwgd2l0aCB0aGUgY29ycmVjdCBjbG9z
ZWQgcHJvbWlzZSAKK1BBU1MgUmVhZGFibGVTdHJlYW0gKGVycm9yZWQgdmlhIGNhbGwgaW4gc3Rh
cnQpOiBzaG91bGQgbm90IGJlIGFibGUgdG8gb2J0YWluIGFkZGl0aW9uYWwgcmVhZGVycyBpZiB3
ZSBkb24ndCByZWxlYXNlIHRoZSBmaXJzdCBsb2NrIAorUEFTUyBSZWFkYWJsZVN0cmVhbSAoZXJy
b3JlZCB2aWEgY2FsbCBpbiBzdGFydCk6IGNhbmNlbCgpIHNob3VsZCByZXR1cm4gYSBkaXN0aW5j
dCByZWplY3RlZCBwcm9taXNlIGVhY2ggdGltZSAKK1BBU1MgUmVhZGFibGVTdHJlYW0gKGVycm9y
ZWQgdmlhIGNhbGwgaW4gc3RhcnQpOiByZWFkZXIgY2FuY2VsKCkgc2hvdWxkIHJldHVybiBhIGRp
c3RpbmN0IHJlamVjdGVkIHByb21pc2UgZWFjaCB0aW1lIAorUEFTUyBSdW5uaW5nIHRlbXBsYXRl
ZFJTRXJyb3JlZCB3aXRoIFJlYWRhYmxlU3RyZWFtIChlcnJvcmVkIHZpYSByZXR1cm5pbmcgYSBy
ZWplY3RlZCBwcm9taXNlIGluIHN0YXJ0KSAKK1BBU1MgUmVhZGFibGVTdHJlYW0gKGVycm9yZWQg
dmlhIHJldHVybmluZyBhIHJlamVjdGVkIHByb21pc2UgaW4gc3RhcnQpOiBnZXRSZWFkZXIoKSBz
aG91bGQgcmV0dXJuIGEgcmVhZGVyIHRoYXQgYWN0cyBlcnJvcmVkIAorUEFTUyBSZWFkYWJsZVN0
cmVhbSAoZXJyb3JlZCB2aWEgcmV0dXJuaW5nIGEgcmVqZWN0ZWQgcHJvbWlzZSBpbiBzdGFydCk6
IHJlYWQoKSB0d2ljZSBzaG91bGQgZ2l2ZSB0aGUgZXJyb3IgZWFjaCB0aW1lIAorUEFTUyBSZWFk
YWJsZVN0cmVhbSAoZXJyb3JlZCB2aWEgcmV0dXJuaW5nIGEgcmVqZWN0ZWQgcHJvbWlzZSBpbiBz
dGFydCk6IGxvY2tlZCBzaG91bGQgYmUgZmFsc2UgCitQQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNF
cnJvcmVkUmVhZGVyIHdpdGggUmVhZGFibGVTdHJlYW0gKGVycm9yZWQgdmlhIHJldHVybmluZyBh
IHJlamVjdGVkIHByb21pc2UgaW4gc3RhcnQpIHJlYWRlciAKK1BBU1MgUmVhZGFibGVTdHJlYW0g
KGVycm9yZWQgdmlhIHJldHVybmluZyBhIHJlamVjdGVkIHByb21pc2UgaW4gc3RhcnQpIHJlYWRl
cjogY2xvc2VkIHNob3VsZCByZWplY3Qgd2l0aCB0aGUgZXJyb3IgCitQQVNTIFJlYWRhYmxlU3Ry
ZWFtIChlcnJvcmVkIHZpYSByZXR1cm5pbmcgYSByZWplY3RlZCBwcm9taXNlIGluIHN0YXJ0KSBy
ZWFkZXI6IHJlbGVhc2luZyB0aGUgbG9jayBzaG91bGQgY2F1c2UgY2xvc2VkIHRvIHJlamVjdCBh
bmQgY2hhbmdlIGlkZW50aXR5IAorUEFTUyBSZWFkYWJsZVN0cmVhbSAoZXJyb3JlZCB2aWEgcmV0
dXJuaW5nIGEgcmVqZWN0ZWQgcHJvbWlzZSBpbiBzdGFydCkgcmVhZGVyOiByZWFkKCkgc2hvdWxk
IHJlamVjdCB3aXRoIHRoZSBlcnJvciAKK1BBU1MgUnVubmluZyB0ZW1wbGF0ZWRSU0Vycm9yZWRS
ZWFkZXIgd2l0aCBSZWFkYWJsZVN0cmVhbSByZWFkZXIgKGVycm9yZWQgYmVmb3JlIGdldHRpbmcg
cmVhZGVyKSAKK1BBU1MgUmVhZGFibGVTdHJlYW0gcmVhZGVyIChlcnJvcmVkIGJlZm9yZSBnZXR0
aW5nIHJlYWRlcik6IGNsb3NlZCBzaG91bGQgcmVqZWN0IHdpdGggdGhlIGVycm9yIAorUEFTUyBS
ZWFkYWJsZVN0cmVhbSByZWFkZXIgKGVycm9yZWQgYmVmb3JlIGdldHRpbmcgcmVhZGVyKTogcmVs
ZWFzaW5nIHRoZSBsb2NrIHNob3VsZCBjYXVzZSBjbG9zZWQgdG8gcmVqZWN0IGFuZCBjaGFuZ2Ug
aWRlbnRpdHkgCitQQVNTIFJlYWRhYmxlU3RyZWFtIHJlYWRlciAoZXJyb3JlZCBiZWZvcmUgZ2V0
dGluZyByZWFkZXIpOiByZWFkKCkgc2hvdWxkIHJlamVjdCB3aXRoIHRoZSBlcnJvciAKK1BBU1Mg
UnVubmluZyB0ZW1wbGF0ZWRSU0Vycm9yZWRSZWFkZXIgd2l0aCBSZWFkYWJsZVN0cmVhbSByZWFk
ZXIgKGVycm9yZWQgYWZ0ZXIgZ2V0dGluZyByZWFkZXIpIAorUEFTUyBSZWFkYWJsZVN0cmVhbSBy
ZWFkZXIgKGVycm9yZWQgYWZ0ZXIgZ2V0dGluZyByZWFkZXIpOiBjbG9zZWQgc2hvdWxkIHJlamVj
dCB3aXRoIHRoZSBlcnJvciAKK1BBU1MgUmVhZGFibGVTdHJlYW0gcmVhZGVyIChlcnJvcmVkIGFm
dGVyIGdldHRpbmcgcmVhZGVyKTogcmVsZWFzaW5nIHRoZSBsb2NrIHNob3VsZCBjYXVzZSBjbG9z
ZWQgdG8gcmVqZWN0IGFuZCBjaGFuZ2UgaWRlbnRpdHkgCitQQVNTIFJlYWRhYmxlU3RyZWFtIHJl
YWRlciAoZXJyb3JlZCBhZnRlciBnZXR0aW5nIHJlYWRlcik6IHJlYWQoKSBzaG91bGQgcmVqZWN0
IHdpdGggdGhlIGVycm9yIAorUEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTVHdvQ2h1bmtzT3BlblJl
YWRlciB3aXRoIFJlYWRhYmxlU3RyZWFtICh0d28gY2h1bmtzIGVucXVldWVkLCBzdGlsbCBvcGVu
KSByZWFkZXIgCitQQVNTIFJlYWRhYmxlU3RyZWFtICh0d28gY2h1bmtzIGVucXVldWVkLCBzdGls
bCBvcGVuKSByZWFkZXI6IGNhbGxpbmcgcmVhZCgpIHR3aWNlIHdpdGhvdXQgd2FpdGluZyB3aWxs
IGV2ZW50dWFsbHkgZ2l2ZSBib3RoIGNodW5rcyAoc2VxdWVudGlhbCkgCitQQVNTIFJlYWRhYmxl
U3RyZWFtICh0d28gY2h1bmtzIGVucXVldWVkLCBzdGlsbCBvcGVuKSByZWFkZXI6IGNhbGxpbmcg
cmVhZCgpIHR3aWNlIHdpdGhvdXQgd2FpdGluZyB3aWxsIGV2ZW50dWFsbHkgZ2l2ZSBib3RoIGNo
dW5rcyAobmVzdGVkKSAKK1BBU1MgUmVhZGFibGVTdHJlYW0gKHR3byBjaHVua3MgZW5xdWV1ZWQs
IHN0aWxsIG9wZW4pIHJlYWRlcjogcmVhZCgpIHNob3VsZCByZXR1cm4gZGlzdGluY3QgcHJvbWlz
ZXMgZWFjaCB0aW1lIAorUEFTUyBSZWFkYWJsZVN0cmVhbSAodHdvIGNodW5rcyBlbnF1ZXVlZCwg
c3RpbGwgb3BlbikgcmVhZGVyOiBjYW5jZWwoKSBhZnRlciBhIHJlYWQoKSBzaG91bGQgc3RpbGwg
Z2l2ZSB0aGF0IHNpbmdsZSByZWFkIHJlc3VsdCAKK1BBU1MgUnVubmluZyB0ZW1wbGF0ZWRSU1R3
b0NodW5rc0Nsb3NlZFJlYWRlciB3aXRoIFJlYWRhYmxlU3RyZWFtICh0d28gY2h1bmtzIGVucXVl
dWVkLCB0aGVuIGNsb3NlZCkgcmVhZGVyIAorUEFTUyBSZWFkYWJsZVN0cmVhbSAodHdvIGNodW5r
cyBlbnF1ZXVlZCwgdGhlbiBjbG9zZWQpIHJlYWRlcjogdGhpcmQgcmVhZCgpLCB3aXRob3V0IHdh
aXRpbmcsIHNob3VsZCBnaXZlIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9IChzZXF1
ZW50aWFsKSAKK1BBU1MgUmVhZGFibGVTdHJlYW0gKHR3byBjaHVua3MgZW5xdWV1ZWQsIHRoZW4g
Y2xvc2VkKSByZWFkZXI6IHRoaXJkIHJlYWQoKSwgd2l0aG91dCB3YWl0aW5nLCBzaG91bGQgZ2l2
ZSB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSAobmVzdGVkKSAKK1BBU1MgUmVhZGFi
bGVTdHJlYW0gKHR3byBjaHVua3MgZW5xdWV1ZWQsIHRoZW4gY2xvc2VkKSByZWFkZXI6IGRyYWlu
aW5nIHRoZSBzdHJlYW0gdmlhIHJlYWQoKSBzaG91bGQgY2F1c2UgdGhlIHJlYWRlciBjbG9zZWQg
cHJvbWlzZSB0byBmdWxmaWxsLCBidXQgbG9ja2VkIHN0YXlzIHRydWUgCitQQVNTIFJlYWRhYmxl
U3RyZWFtICh0d28gY2h1bmtzIGVucXVldWVkLCB0aGVuIGNsb3NlZCkgcmVhZGVyOiByZWxlYXNp
bmcgdGhlIGxvY2sgYWZ0ZXIgdGhlIHN0cmVhbSBpcyBjbG9zZWQgc2hvdWxkIGNhdXNlIGxvY2tl
ZCB0byBiZWNvbWUgZmFsc2UgCitQQVNTIFJlYWRhYmxlU3RyZWFtICh0d28gY2h1bmtzIGVucXVl
dWVkLCB0aGVuIGNsb3NlZCkgcmVhZGVyOiByZWxlYXNpbmcgdGhlIGxvY2sgc2hvdWxkIGNhdXNl
IGZ1cnRoZXIgcmVhZCgpIGNhbGxzIHRvIHJlamVjdCB3aXRoIGEgVHlwZUVycm9yIAorUEFTUyBS
ZWFkYWJsZVN0cmVhbSAodHdvIGNodW5rcyBlbnF1ZXVlZCwgdGhlbiBjbG9zZWQpIHJlYWRlcjog
cmVhZGVyJ3MgY2xvc2VkIHByb3BlcnR5IGFsd2F5cyByZXR1cm5zIHRoZSBzYW1lIHByb21pc2Ug
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3RlbXBsYXRlZC5hbnkud29ya2VyLmh0bWwgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFi
bGUtc3RyZWFtcy90ZW1wbGF0ZWQuYW55Lndvcmtlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzODI5MTM1
MjhlNjkzYjNhNWQ1NmM2NjBhNDUwNjA5ODBiNTQ4YzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUt
c3RyZWFtcy90ZW1wbGF0ZWQuYW55Lndvcmtlci5odG1sCkBAIC0wLDAgKzEgQEAKKzwhLS0gVGhp
cyBmaWxlIGlzIHJlcXVpcmVkIGZvciBXZWJLaXQgdGVzdCBpbmZyYXN0cnVjdHVyZSB0byBydW4g
dGhlIHRlbXBsYXRlZCB0ZXN0IC0tPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy9yZWFkYWJsZS1zdHJlYW1zL3RlbXBsYXRlZC5kZWRpY2F0ZWR3b3JrZXItZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3Jl
YWRhYmxlLXN0cmVhbXMvdGVtcGxhdGVkLmRlZGljYXRlZHdvcmtlci1leHBlY3RlZC50eHQKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQzZDcwN2YwOGI1YTAzYWVjNGJmZmY1ZDcyNzhk
NWQyMGRmMzUzZTAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3Jl
YWRhYmxlLXN0cmVhbXMvdGVtcGxhdGVkLmRlZGljYXRlZHdvcmtlci1leHBlY3RlZC50eHQKKysr
IC9kZXYvbnVsbApAQCAtMSw4OCArMCwwIEBACi0KLVBBU1MgUnVubmluZyB0ZW1wbGF0ZWRSU0Vt
cHR5IHdpdGggUmVhZGFibGVTdHJlYW0gKGVtcHR5KSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gKGVt
cHR5KTogaW5zdGFuY2VzIGhhdmUgdGhlIGNvcnJlY3QgbWV0aG9kcyBhbmQgcHJvcGVydGllcyAK
LVBBU1MgUmVhZGFibGVTdHJlYW0gKGVtcHR5KTogY2FsbGluZyBnZXRSZWFkZXIgd2l0aCBpbnZh
bGlkIGFyZ3VtZW50cyBzaG91bGQgdGhyb3cgYXBwcm9wcmlhdGUgZXJyb3JzIAotUEFTUyBSdW5u
aW5nIHRlbXBsYXRlZFJTRW1wdHlSZWFkZXIgd2l0aCBSZWFkYWJsZVN0cmVhbSAoZW1wdHkpIHJl
YWRlciAKLVBBU1MgUmVhZGFibGVTdHJlYW0gKGVtcHR5KSByZWFkZXI6IGluc3RhbmNlcyBoYXZl
IHRoZSBjb3JyZWN0IG1ldGhvZHMgYW5kIHByb3BlcnRpZXMgCi1QQVNTIFJlYWRhYmxlU3RyZWFt
IChlbXB0eSkgcmVhZGVyOiBsb2NrZWQgc2hvdWxkIGJlIHRydWUgCi1QQVNTIFJlYWRhYmxlU3Ry
ZWFtIChlbXB0eSkgcmVhZGVyOiByZWFkKCkgc2hvdWxkIG5ldmVyIHNldHRsZSAKLVBBU1MgUmVh
ZGFibGVTdHJlYW0gKGVtcHR5KSByZWFkZXI6IHR3byByZWFkKClzIHNob3VsZCBib3RoIG5ldmVy
IHNldHRsZSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gKGVtcHR5KSByZWFkZXI6IHJlYWQoKSBzaG91
bGQgcmV0dXJuIGRpc3RpbmN0IHByb21pc2VzIGVhY2ggdGltZSAKLVBBU1MgUmVhZGFibGVTdHJl
YW0gKGVtcHR5KSByZWFkZXI6IGdldFJlYWRlcigpIGFnYWluIG9uIHRoZSBzdHJlYW0gc2hvdWxk
IGZhaWwgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIChlbXB0eSkgcmVhZGVyOiByZWxlYXNpbmcgdGhl
IGxvY2sgd2l0aCBwZW5kaW5nIHJlYWQgcmVxdWVzdHMgc2hvdWxkIHRocm93IGJ1dCB0aGUgcmVh
ZCByZXF1ZXN0cyBzaG91bGQgc3RheSBwZW5kaW5nIAotUEFTUyBSZWFkYWJsZVN0cmVhbSAoZW1w
dHkpIHJlYWRlcjogcmVsZWFzaW5nIHRoZSBsb2NrIHNob3VsZCBjYXVzZSBmdXJ0aGVyIHJlYWQo
KSBjYWxscyB0byByZWplY3Qgd2l0aCBhIFR5cGVFcnJvciAKLVBBU1MgUmVhZGFibGVTdHJlYW0g
KGVtcHR5KSByZWFkZXI6IHJlbGVhc2luZyB0aGUgbG9jayBzaG91bGQgY2F1c2UgY2xvc2VkIGNh
bGxzIHRvIHJlamVjdCB3aXRoIGEgVHlwZUVycm9yIAotUEFTUyBSZWFkYWJsZVN0cmVhbSAoZW1w
dHkpIHJlYWRlcjogcmVsZWFzaW5nIHRoZSBsb2NrIHNob3VsZCBjYXVzZSBsb2NrZWQgdG8gYmVj
b21lIGZhbHNlIAotUEFTUyBSZWFkYWJsZVN0cmVhbSAoZW1wdHkpIHJlYWRlcjogY2FuY2VsaW5n
IHZpYSB0aGUgcmVhZGVyIHNob3VsZCBjYXVzZSB0aGUgcmVhZGVyIHRvIGFjdCBjbG9zZWQgCi1Q
QVNTIFJlYWRhYmxlU3RyZWFtIChlbXB0eSkgcmVhZGVyOiBjYW5jZWxpbmcgdmlhIHRoZSBzdHJl
YW0gc2hvdWxkIGZhaWwgCi1QQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNDbG9zZWQgd2l0aCBSZWFk
YWJsZVN0cmVhbSAoY2xvc2VkIHZpYSBjYWxsIGluIHN0YXJ0KSAKLVBBU1MgUmVhZGFibGVTdHJl
YW0gKGNsb3NlZCB2aWEgY2FsbCBpbiBzdGFydCk6IGNhbmNlbCgpIHNob3VsZCByZXR1cm4gYSBk
aXN0aW5jdCBmdWxmaWxsZWQgcHJvbWlzZSBlYWNoIHRpbWUgCi1QQVNTIFJlYWRhYmxlU3RyZWFt
IChjbG9zZWQgdmlhIGNhbGwgaW4gc3RhcnQpOiBsb2NrZWQgc2hvdWxkIGJlIGZhbHNlIAotUEFT
UyBSZWFkYWJsZVN0cmVhbSAoY2xvc2VkIHZpYSBjYWxsIGluIHN0YXJ0KTogZ2V0UmVhZGVyKCkg
c2hvdWxkIGJlIE9LIAotUEFTUyBSZWFkYWJsZVN0cmVhbSAoY2xvc2VkIHZpYSBjYWxsIGluIHN0
YXJ0KTogc2hvdWxkIGJlIGFibGUgdG8gYWNxdWlyZSBtdWx0aXBsZSByZWFkZXJzIGlmIHRoZXkg
YXJlIHJlbGVhc2VkIGluIHN1Y2Nlc3Npb24gCi1QQVNTIFJlYWRhYmxlU3RyZWFtIChjbG9zZWQg
dmlhIGNhbGwgaW4gc3RhcnQpOiBzaG91bGQgbm90IGJlIGFibGUgdG8gYWNxdWlyZSBhIHNlY29u
ZCByZWFkZXIgaWYgd2UgZG9uJ3QgcmVsZWFzZSB0aGUgZmlyc3Qgb25lIAotUEFTUyBSdW5uaW5n
IHRlbXBsYXRlZFJTQ2xvc2VkUmVhZGVyIHdpdGggUmVhZGFibGVTdHJlYW0gcmVhZGVyIChjbG9z
ZWQgYmVmb3JlIGdldHRpbmcgcmVhZGVyKSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gcmVhZGVyIChj
bG9zZWQgYmVmb3JlIGdldHRpbmcgcmVhZGVyKTogcmVhZCgpIHNob3VsZCBmdWxmaWxsIHdpdGgg
eyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0gCi1QQVNTIFJlYWRhYmxlU3RyZWFtIHJl
YWRlciAoY2xvc2VkIGJlZm9yZSBnZXR0aW5nIHJlYWRlcik6IHJlYWQoKSBtdWx0aXBsZSB0aW1l
cyBzaG91bGQgZnVsZmlsbCB3aXRoIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9IAot
UEFTUyBSZWFkYWJsZVN0cmVhbSByZWFkZXIgKGNsb3NlZCBiZWZvcmUgZ2V0dGluZyByZWFkZXIp
OiByZWFkKCkgc2hvdWxkIHdvcmsgd2hlbiB1c2VkIHdpdGhpbiBhbm90aGVyIHJlYWQoKSBmdWxm
aWxsIGNhbGxiYWNrIAotUEFTUyBSZWFkYWJsZVN0cmVhbSByZWFkZXIgKGNsb3NlZCBiZWZvcmUg
Z2V0dGluZyByZWFkZXIpOiBjbG9zZWQgc2hvdWxkIGZ1bGZpbGwgd2l0aCB1bmRlZmluZWQgCi1Q
QVNTIFJlYWRhYmxlU3RyZWFtIHJlYWRlciAoY2xvc2VkIGJlZm9yZSBnZXR0aW5nIHJlYWRlcik6
IHJlbGVhc2luZyB0aGUgbG9jayBzaG91bGQgY2F1c2UgY2xvc2VkIHRvIHJlamVjdCBhbmQgY2hh
bmdlIGlkZW50aXR5IAotUEFTUyBSZWFkYWJsZVN0cmVhbSByZWFkZXIgKGNsb3NlZCBiZWZvcmUg
Z2V0dGluZyByZWFkZXIpOiBjYW5jZWwoKSBzaG91bGQgcmV0dXJuIGEgZGlzdGluY3QgZnVsZmls
bGVkIHByb21pc2UgZWFjaCB0aW1lIAotUEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTQ2xvc2VkUmVh
ZGVyIHdpdGggUmVhZGFibGVTdHJlYW0gcmVhZGVyIChjbG9zZWQgYWZ0ZXIgZ2V0dGluZyByZWFk
ZXIpIAotUEFTUyBSZWFkYWJsZVN0cmVhbSByZWFkZXIgKGNsb3NlZCBhZnRlciBnZXR0aW5nIHJl
YWRlcik6IHJlYWQoKSBzaG91bGQgZnVsZmlsbCB3aXRoIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9u
ZTogdHJ1ZSB9IAotUEFTUyBSZWFkYWJsZVN0cmVhbSByZWFkZXIgKGNsb3NlZCBhZnRlciBnZXR0
aW5nIHJlYWRlcik6IHJlYWQoKSBtdWx0aXBsZSB0aW1lcyBzaG91bGQgZnVsZmlsbCB3aXRoIHsg
dmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9IAotUEFTUyBSZWFkYWJsZVN0cmVhbSByZWFk
ZXIgKGNsb3NlZCBhZnRlciBnZXR0aW5nIHJlYWRlcik6IHJlYWQoKSBzaG91bGQgd29yayB3aGVu
IHVzZWQgd2l0aGluIGFub3RoZXIgcmVhZCgpIGZ1bGZpbGwgY2FsbGJhY2sgCi1QQVNTIFJlYWRh
YmxlU3RyZWFtIHJlYWRlciAoY2xvc2VkIGFmdGVyIGdldHRpbmcgcmVhZGVyKTogY2xvc2VkIHNo
b3VsZCBmdWxmaWxsIHdpdGggdW5kZWZpbmVkIAotUEFTUyBSZWFkYWJsZVN0cmVhbSByZWFkZXIg
KGNsb3NlZCBhZnRlciBnZXR0aW5nIHJlYWRlcik6IHJlbGVhc2luZyB0aGUgbG9jayBzaG91bGQg
Y2F1c2UgY2xvc2VkIHRvIHJlamVjdCBhbmQgY2hhbmdlIGlkZW50aXR5IAotUEFTUyBSZWFkYWJs
ZVN0cmVhbSByZWFkZXIgKGNsb3NlZCBhZnRlciBnZXR0aW5nIHJlYWRlcik6IGNhbmNlbCgpIHNo
b3VsZCByZXR1cm4gYSBkaXN0aW5jdCBmdWxmaWxsZWQgcHJvbWlzZSBlYWNoIHRpbWUgCi1QQVNT
IFJ1bm5pbmcgdGVtcGxhdGVkUlNDbG9zZWQgd2l0aCBSZWFkYWJsZVN0cmVhbSAoY2xvc2VkIHZp
YSBjYW5jZWwpIAotUEFTUyBSZWFkYWJsZVN0cmVhbSAoY2xvc2VkIHZpYSBjYW5jZWwpOiBjYW5j
ZWwoKSBzaG91bGQgcmV0dXJuIGEgZGlzdGluY3QgZnVsZmlsbGVkIHByb21pc2UgZWFjaCB0aW1l
IAotUEFTUyBSZWFkYWJsZVN0cmVhbSAoY2xvc2VkIHZpYSBjYW5jZWwpOiBsb2NrZWQgc2hvdWxk
IGJlIGZhbHNlIAotUEFTUyBSZWFkYWJsZVN0cmVhbSAoY2xvc2VkIHZpYSBjYW5jZWwpOiBnZXRS
ZWFkZXIoKSBzaG91bGQgYmUgT0sgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIChjbG9zZWQgdmlhIGNh
bmNlbCk6IHNob3VsZCBiZSBhYmxlIHRvIGFjcXVpcmUgbXVsdGlwbGUgcmVhZGVycyBpZiB0aGV5
IGFyZSByZWxlYXNlZCBpbiBzdWNjZXNzaW9uIAotUEFTUyBSZWFkYWJsZVN0cmVhbSAoY2xvc2Vk
IHZpYSBjYW5jZWwpOiBzaG91bGQgbm90IGJlIGFibGUgdG8gYWNxdWlyZSBhIHNlY29uZCByZWFk
ZXIgaWYgd2UgZG9uJ3QgcmVsZWFzZSB0aGUgZmlyc3Qgb25lIAotUEFTUyBSdW5uaW5nIHRlbXBs
YXRlZFJTQ2xvc2VkUmVhZGVyIHdpdGggUmVhZGFibGVTdHJlYW0gcmVhZGVyIChjbG9zZWQgdmlh
IGNhbmNlbCBhZnRlciBnZXR0aW5nIHJlYWRlcikgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIHJlYWRl
ciAoY2xvc2VkIHZpYSBjYW5jZWwgYWZ0ZXIgZ2V0dGluZyByZWFkZXIpOiByZWFkKCkgc2hvdWxk
IGZ1bGZpbGwgd2l0aCB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSAKLVBBU1MgUmVh
ZGFibGVTdHJlYW0gcmVhZGVyIChjbG9zZWQgdmlhIGNhbmNlbCBhZnRlciBnZXR0aW5nIHJlYWRl
cik6IHJlYWQoKSBtdWx0aXBsZSB0aW1lcyBzaG91bGQgZnVsZmlsbCB3aXRoIHsgdmFsdWU6IHVu
ZGVmaW5lZCwgZG9uZTogdHJ1ZSB9IAotUEFTUyBSZWFkYWJsZVN0cmVhbSByZWFkZXIgKGNsb3Nl
ZCB2aWEgY2FuY2VsIGFmdGVyIGdldHRpbmcgcmVhZGVyKTogcmVhZCgpIHNob3VsZCB3b3JrIHdo
ZW4gdXNlZCB3aXRoaW4gYW5vdGhlciByZWFkKCkgZnVsZmlsbCBjYWxsYmFjayAKLVBBU1MgUmVh
ZGFibGVTdHJlYW0gcmVhZGVyIChjbG9zZWQgdmlhIGNhbmNlbCBhZnRlciBnZXR0aW5nIHJlYWRl
cik6IGNsb3NlZCBzaG91bGQgZnVsZmlsbCB3aXRoIHVuZGVmaW5lZCAKLVBBU1MgUmVhZGFibGVT
dHJlYW0gcmVhZGVyIChjbG9zZWQgdmlhIGNhbmNlbCBhZnRlciBnZXR0aW5nIHJlYWRlcik6IHJl
bGVhc2luZyB0aGUgbG9jayBzaG91bGQgY2F1c2UgY2xvc2VkIHRvIHJlamVjdCBhbmQgY2hhbmdl
IGlkZW50aXR5IAotUEFTUyBSZWFkYWJsZVN0cmVhbSByZWFkZXIgKGNsb3NlZCB2aWEgY2FuY2Vs
IGFmdGVyIGdldHRpbmcgcmVhZGVyKTogY2FuY2VsKCkgc2hvdWxkIHJldHVybiBhIGRpc3RpbmN0
IGZ1bGZpbGxlZCBwcm9taXNlIGVhY2ggdGltZSAKLVBBU1MgUnVubmluZyB0ZW1wbGF0ZWRSU0Vy
cm9yZWQgd2l0aCBSZWFkYWJsZVN0cmVhbSAoZXJyb3JlZCB2aWEgY2FsbCBpbiBzdGFydCkgCi1Q
QVNTIFJlYWRhYmxlU3RyZWFtIChlcnJvcmVkIHZpYSBjYWxsIGluIHN0YXJ0KTogZ2V0UmVhZGVy
KCkgc2hvdWxkIHJldHVybiBhIHJlYWRlciB0aGF0IGFjdHMgZXJyb3JlZCAKLVBBU1MgUmVhZGFi
bGVTdHJlYW0gKGVycm9yZWQgdmlhIGNhbGwgaW4gc3RhcnQpOiByZWFkKCkgdHdpY2Ugc2hvdWxk
IGdpdmUgdGhlIGVycm9yIGVhY2ggdGltZSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gKGVycm9yZWQg
dmlhIGNhbGwgaW4gc3RhcnQpOiBsb2NrZWQgc2hvdWxkIGJlIGZhbHNlIAotUEFTUyBSdW5uaW5n
IHRlbXBsYXRlZFJTRXJyb3JlZFN5bmNPbmx5IHdpdGggUmVhZGFibGVTdHJlYW0gKGVycm9yZWQg
dmlhIGNhbGwgaW4gc3RhcnQpIAotUEFTUyBSZWFkYWJsZVN0cmVhbSAoZXJyb3JlZCB2aWEgY2Fs
bCBpbiBzdGFydCk6IHNob3VsZCBiZSBhYmxlIHRvIG9idGFpbiBhIHNlY29uZCByZWFkZXIsIHdp
dGggdGhlIGNvcnJlY3QgY2xvc2VkIHByb21pc2UgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIChlcnJv
cmVkIHZpYSBjYWxsIGluIHN0YXJ0KTogc2hvdWxkIG5vdCBiZSBhYmxlIHRvIG9idGFpbiBhZGRp
dGlvbmFsIHJlYWRlcnMgaWYgd2UgZG9uJ3QgcmVsZWFzZSB0aGUgZmlyc3QgbG9jayAKLVBBU1Mg
UmVhZGFibGVTdHJlYW0gKGVycm9yZWQgdmlhIGNhbGwgaW4gc3RhcnQpOiBjYW5jZWwoKSBzaG91
bGQgcmV0dXJuIGEgZGlzdGluY3QgcmVqZWN0ZWQgcHJvbWlzZSBlYWNoIHRpbWUgCi1QQVNTIFJl
YWRhYmxlU3RyZWFtIChlcnJvcmVkIHZpYSBjYWxsIGluIHN0YXJ0KTogcmVhZGVyIGNhbmNlbCgp
IHNob3VsZCByZXR1cm4gYSBkaXN0aW5jdCByZWplY3RlZCBwcm9taXNlIGVhY2ggdGltZSAKLVBB
U1MgUnVubmluZyB0ZW1wbGF0ZWRSU0Vycm9yZWQgd2l0aCBSZWFkYWJsZVN0cmVhbSAoZXJyb3Jl
ZCB2aWEgcmV0dXJuaW5nIGEgcmVqZWN0ZWQgcHJvbWlzZSBpbiBzdGFydCkgCi1QQVNTIFJlYWRh
YmxlU3RyZWFtIChlcnJvcmVkIHZpYSByZXR1cm5pbmcgYSByZWplY3RlZCBwcm9taXNlIGluIHN0
YXJ0KTogZ2V0UmVhZGVyKCkgc2hvdWxkIHJldHVybiBhIHJlYWRlciB0aGF0IGFjdHMgZXJyb3Jl
ZCAKLVBBU1MgUmVhZGFibGVTdHJlYW0gKGVycm9yZWQgdmlhIHJldHVybmluZyBhIHJlamVjdGVk
IHByb21pc2UgaW4gc3RhcnQpOiByZWFkKCkgdHdpY2Ugc2hvdWxkIGdpdmUgdGhlIGVycm9yIGVh
Y2ggdGltZSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gKGVycm9yZWQgdmlhIHJldHVybmluZyBhIHJl
amVjdGVkIHByb21pc2UgaW4gc3RhcnQpOiBsb2NrZWQgc2hvdWxkIGJlIGZhbHNlIAotUEFTUyBS
dW5uaW5nIHRlbXBsYXRlZFJTRXJyb3JlZFJlYWRlciB3aXRoIFJlYWRhYmxlU3RyZWFtIChlcnJv
cmVkIHZpYSByZXR1cm5pbmcgYSByZWplY3RlZCBwcm9taXNlIGluIHN0YXJ0KSByZWFkZXIgCi1Q
QVNTIFJlYWRhYmxlU3RyZWFtIChlcnJvcmVkIHZpYSByZXR1cm5pbmcgYSByZWplY3RlZCBwcm9t
aXNlIGluIHN0YXJ0KSByZWFkZXI6IGNsb3NlZCBzaG91bGQgcmVqZWN0IHdpdGggdGhlIGVycm9y
IAotUEFTUyBSZWFkYWJsZVN0cmVhbSAoZXJyb3JlZCB2aWEgcmV0dXJuaW5nIGEgcmVqZWN0ZWQg
cHJvbWlzZSBpbiBzdGFydCkgcmVhZGVyOiByZWxlYXNpbmcgdGhlIGxvY2sgc2hvdWxkIGNhdXNl
IGNsb3NlZCB0byByZWplY3QgYW5kIGNoYW5nZSBpZGVudGl0eSAKLVBBU1MgUmVhZGFibGVTdHJl
YW0gKGVycm9yZWQgdmlhIHJldHVybmluZyBhIHJlamVjdGVkIHByb21pc2UgaW4gc3RhcnQpIHJl
YWRlcjogcmVhZCgpIHNob3VsZCByZWplY3Qgd2l0aCB0aGUgZXJyb3IgCi1QQVNTIFJ1bm5pbmcg
dGVtcGxhdGVkUlNFcnJvcmVkUmVhZGVyIHdpdGggUmVhZGFibGVTdHJlYW0gcmVhZGVyIChlcnJv
cmVkIGJlZm9yZSBnZXR0aW5nIHJlYWRlcikgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIHJlYWRlciAo
ZXJyb3JlZCBiZWZvcmUgZ2V0dGluZyByZWFkZXIpOiBjbG9zZWQgc2hvdWxkIHJlamVjdCB3aXRo
IHRoZSBlcnJvciAKLVBBU1MgUmVhZGFibGVTdHJlYW0gcmVhZGVyIChlcnJvcmVkIGJlZm9yZSBn
ZXR0aW5nIHJlYWRlcik6IHJlbGVhc2luZyB0aGUgbG9jayBzaG91bGQgY2F1c2UgY2xvc2VkIHRv
IHJlamVjdCBhbmQgY2hhbmdlIGlkZW50aXR5IAotUEFTUyBSZWFkYWJsZVN0cmVhbSByZWFkZXIg
KGVycm9yZWQgYmVmb3JlIGdldHRpbmcgcmVhZGVyKTogcmVhZCgpIHNob3VsZCByZWplY3Qgd2l0
aCB0aGUgZXJyb3IgCi1QQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNFcnJvcmVkUmVhZGVyIHdpdGgg
UmVhZGFibGVTdHJlYW0gcmVhZGVyIChlcnJvcmVkIGFmdGVyIGdldHRpbmcgcmVhZGVyKSAKLVBB
U1MgUmVhZGFibGVTdHJlYW0gcmVhZGVyIChlcnJvcmVkIGFmdGVyIGdldHRpbmcgcmVhZGVyKTog
Y2xvc2VkIHNob3VsZCByZWplY3Qgd2l0aCB0aGUgZXJyb3IgCi1QQVNTIFJlYWRhYmxlU3RyZWFt
IHJlYWRlciAoZXJyb3JlZCBhZnRlciBnZXR0aW5nIHJlYWRlcik6IHJlbGVhc2luZyB0aGUgbG9j
ayBzaG91bGQgY2F1c2UgY2xvc2VkIHRvIHJlamVjdCBhbmQgY2hhbmdlIGlkZW50aXR5IAotUEFT
UyBSZWFkYWJsZVN0cmVhbSByZWFkZXIgKGVycm9yZWQgYWZ0ZXIgZ2V0dGluZyByZWFkZXIpOiBy
ZWFkKCkgc2hvdWxkIHJlamVjdCB3aXRoIHRoZSBlcnJvciAKLVBBU1MgUnVubmluZyB0ZW1wbGF0
ZWRSU1R3b0NodW5rc09wZW5SZWFkZXIgd2l0aCBSZWFkYWJsZVN0cmVhbSAodHdvIGNodW5rcyBl
bnF1ZXVlZCwgc3RpbGwgb3BlbikgcmVhZGVyIAotUEFTUyBSZWFkYWJsZVN0cmVhbSAodHdvIGNo
dW5rcyBlbnF1ZXVlZCwgc3RpbGwgb3BlbikgcmVhZGVyOiBjYWxsaW5nIHJlYWQoKSB0d2ljZSB3
aXRob3V0IHdhaXRpbmcgd2lsbCBldmVudHVhbGx5IGdpdmUgYm90aCBjaHVua3MgKHNlcXVlbnRp
YWwpIAotUEFTUyBSZWFkYWJsZVN0cmVhbSAodHdvIGNodW5rcyBlbnF1ZXVlZCwgc3RpbGwgb3Bl
bikgcmVhZGVyOiBjYWxsaW5nIHJlYWQoKSB0d2ljZSB3aXRob3V0IHdhaXRpbmcgd2lsbCBldmVu
dHVhbGx5IGdpdmUgYm90aCBjaHVua3MgKG5lc3RlZCkgCi1QQVNTIFJlYWRhYmxlU3RyZWFtICh0
d28gY2h1bmtzIGVucXVldWVkLCBzdGlsbCBvcGVuKSByZWFkZXI6IHJlYWQoKSBzaG91bGQgcmV0
dXJuIGRpc3RpbmN0IHByb21pc2VzIGVhY2ggdGltZSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gKHR3
byBjaHVua3MgZW5xdWV1ZWQsIHN0aWxsIG9wZW4pIHJlYWRlcjogY2FuY2VsKCkgYWZ0ZXIgYSBy
ZWFkKCkgc2hvdWxkIHN0aWxsIGdpdmUgdGhhdCBzaW5nbGUgcmVhZCByZXN1bHQgCi1QQVNTIFJ1
bm5pbmcgdGVtcGxhdGVkUlNUd29DaHVua3NDbG9zZWRSZWFkZXIgd2l0aCBSZWFkYWJsZVN0cmVh
bSAodHdvIGNodW5rcyBlbnF1ZXVlZCwgdGhlbiBjbG9zZWQpIHJlYWRlciAKLVBBU1MgUmVhZGFi
bGVTdHJlYW0gKHR3byBjaHVua3MgZW5xdWV1ZWQsIHRoZW4gY2xvc2VkKSByZWFkZXI6IHRoaXJk
IHJlYWQoKSwgd2l0aG91dCB3YWl0aW5nLCBzaG91bGQgZ2l2ZSB7IHZhbHVlOiB1bmRlZmluZWQs
IGRvbmU6IHRydWUgfSAoc2VxdWVudGlhbCkgCi1QQVNTIFJlYWRhYmxlU3RyZWFtICh0d28gY2h1
bmtzIGVucXVldWVkLCB0aGVuIGNsb3NlZCkgcmVhZGVyOiB0aGlyZCByZWFkKCksIHdpdGhvdXQg
d2FpdGluZywgc2hvdWxkIGdpdmUgeyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0gKG5l
c3RlZCkgCi1QQVNTIFJlYWRhYmxlU3RyZWFtICh0d28gY2h1bmtzIGVucXVldWVkLCB0aGVuIGNs
b3NlZCkgcmVhZGVyOiBkcmFpbmluZyB0aGUgc3RyZWFtIHZpYSByZWFkKCkgc2hvdWxkIGNhdXNl
IHRoZSByZWFkZXIgY2xvc2VkIHByb21pc2UgdG8gZnVsZmlsbCwgYnV0IGxvY2tlZCBzdGF5cyB0
cnVlIAotUEFTUyBSZWFkYWJsZVN0cmVhbSAodHdvIGNodW5rcyBlbnF1ZXVlZCwgdGhlbiBjbG9z
ZWQpIHJlYWRlcjogcmVsZWFzaW5nIHRoZSBsb2NrIGFmdGVyIHRoZSBzdHJlYW0gaXMgY2xvc2Vk
IHNob3VsZCBjYXVzZSBsb2NrZWQgdG8gYmVjb21lIGZhbHNlIAotUEFTUyBSZWFkYWJsZVN0cmVh
bSAodHdvIGNodW5rcyBlbnF1ZXVlZCwgdGhlbiBjbG9zZWQpIHJlYWRlcjogcmVsZWFzaW5nIHRo
ZSBsb2NrIHNob3VsZCBjYXVzZSBmdXJ0aGVyIHJlYWQoKSBjYWxscyB0byByZWplY3Qgd2l0aCBh
IFR5cGVFcnJvciAKLVBBU1MgUmVhZGFibGVTdHJlYW0gKHR3byBjaHVua3MgZW5xdWV1ZWQsIHRo
ZW4gY2xvc2VkKSByZWFkZXI6IHJlYWRlcidzIGNsb3NlZCBwcm9wZXJ0eSBhbHdheXMgcmV0dXJu
cyB0aGUgc2FtZSBwcm9taXNlIAotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy90ZW1wbGF0ZWQu
ZGVkaWNhdGVkd29ya2VyLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy90ZW1wbGF0ZWQuZGVkaWNhdGVkd29y
a2VyLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIzNTRiOThkYzY5N2M5NmRh
NTZmODVkY2I5MDQ1ZDZiNjU0NGRhZjIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvdGVtcGxhdGVkLmRlZGljYXRlZHdvcmtlci5odG1s
CisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBj
aGFyc2V0PSJ1dGYtOCI+Ci08dGl0bGU+dGVtcGxhdGVkLmpzIGRlZGljYXRlZCB3b3JrZXIgd3Jh
cHBlciBmaWxlPC90aXRsZT4KLQotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3Mu
anMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQu
anMiPjwvc2NyaXB0PgotCi08c2NyaXB0PgotJ3VzZSBzdHJpY3QnOwotZmV0Y2hfdGVzdHNfZnJv
bV93b3JrZXIobmV3IFdvcmtlcigndGVtcGxhdGVkLmpzJykpOwotPC9zY3JpcHQ+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
cmVhZGFibGUtc3RyZWFtcy90ZW1wbGF0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3RlbXBsYXRlZC5o
dG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2M2IxN2YyZjNkZjgyY2NhMjc4OTRj
ZjdlZTZkNWUzMmQ0ZDAyYzc3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3RlbXBsYXRlZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEs
MTEgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08dGl0
bGU+dGVtcGxhdGVkLmpzIGJyb3dzZXIgY29udGV4dCB3cmFwcGVyIGZpbGU8L3RpdGxlPgotCi08
c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0
IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci0KLTxzY3Jp
cHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNy
Yz0iLi4vcmVzb3VyY2VzL3JzLXRlc3QtdGVtcGxhdGVzLmpzIj48L3NjcmlwdD4KLQotPHNjcmlw
dCBzcmM9InRlbXBsYXRlZC5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy90
ZW1wbGF0ZWQuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy90ZW1wbGF0ZWQuanMKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDZkYjA0Mjk5OTRkNDUzZGJmY2QyZTgzNDdlNmZhN2VmZGYyMGJjNGUuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMv
dGVtcGxhdGVkLmpzCisrKyAvZGV2L251bGwKQEAgLTEsMTQ4ICswLDAgQEAKLSd1c2Ugc3RyaWN0
JzsKLQotaWYgKHNlbGYuaW1wb3J0U2NyaXB0cykgewotICBzZWxmLmltcG9ydFNjcmlwdHMoJy9y
ZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMnKTsKLSAgc2VsZi5pbXBvcnRTY3JpcHRzKCcuLi9yZXNv
dXJjZXMvdGVzdC11dGlscy5qcycpOwotICBzZWxmLmltcG9ydFNjcmlwdHMoJy4uL3Jlc291cmNl
cy9ycy10ZXN0LXRlbXBsYXRlcy5qcycpOwotfQotCi0vLyBSdW4gdGhlIHJlYWRhYmxlIHN0cmVh
bSB0ZXN0IHRlbXBsYXRlcyBhZ2FpbnN0IHJlYWRhYmxlIHN0cmVhbXMgY3JlYXRlZCBkaXJlY3Rs
eSB1c2luZyB0aGUgY29uc3RydWN0b3IKLQotY29uc3QgdGhlRXJyb3IgPSB7IG5hbWU6ICdib28h
JyB9OwotY29uc3QgY2h1bmtzID0gWydhJywgJ2InXTsKLQotdGVtcGxhdGVkUlNFbXB0eSgnUmVh
ZGFibGVTdHJlYW0gKGVtcHR5KScsICgpID0+IHsKLSAgcmV0dXJuIG5ldyBSZWFkYWJsZVN0cmVh
bSgpOwotfSk7Ci0KLXRlbXBsYXRlZFJTRW1wdHlSZWFkZXIoJ1JlYWRhYmxlU3RyZWFtIChlbXB0
eSkgcmVhZGVyJywgKCkgPT4gewotICByZXR1cm4gc3RyZWFtQW5kRGVmYXVsdFJlYWRlcihuZXcg
UmVhZGFibGVTdHJlYW0oKSk7Ci19KTsKLQotdGVtcGxhdGVkUlNDbG9zZWQoJ1JlYWRhYmxlU3Ry
ZWFtIChjbG9zZWQgdmlhIGNhbGwgaW4gc3RhcnQpJywgKCkgPT4gewotICByZXR1cm4gbmV3IFJl
YWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0gICAgICBjLmNsb3NlKCk7Ci0gICAgfQot
ICB9KTsKLX0pOwotCi10ZW1wbGF0ZWRSU0Nsb3NlZFJlYWRlcignUmVhZGFibGVTdHJlYW0gcmVh
ZGVyIChjbG9zZWQgYmVmb3JlIGdldHRpbmcgcmVhZGVyKScsICgpID0+IHsKLSAgbGV0IGNvbnRy
b2xsZXI7Ci0gIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQo
YykgewotICAgICAgY29udHJvbGxlciA9IGM7Ci0gICAgfQotICB9KTsKLSAgY29udHJvbGxlci5j
bG9zZSgpOwotICBjb25zdCByZXN1bHQgPSBzdHJlYW1BbmREZWZhdWx0UmVhZGVyKHN0cmVhbSk7
Ci0gIHJldHVybiByZXN1bHQ7Ci19KTsKLQotdGVtcGxhdGVkUlNDbG9zZWRSZWFkZXIoJ1JlYWRh
YmxlU3RyZWFtIHJlYWRlciAoY2xvc2VkIGFmdGVyIGdldHRpbmcgcmVhZGVyKScsICgpID0+IHsK
LSAgbGV0IGNvbnRyb2xsZXI7Ci0gIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7
Ci0gICAgc3RhcnQoYykgewotICAgICAgY29udHJvbGxlciA9IGM7Ci0gICAgfQotICB9KTsKLSAg
Y29uc3QgcmVzdWx0ID0gc3RyZWFtQW5kRGVmYXVsdFJlYWRlcihzdHJlYW0pOwotICBjb250cm9s
bGVyLmNsb3NlKCk7Ci0gIHJldHVybiByZXN1bHQ7Ci19KTsKLQotdGVtcGxhdGVkUlNDbG9zZWQo
J1JlYWRhYmxlU3RyZWFtIChjbG9zZWQgdmlhIGNhbmNlbCknLCAoKSA9PiB7Ci0gIGNvbnN0IHN0
cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbSgpOwotICBzdHJlYW0uY2FuY2VsKCk7Ci0gIHJldHVy
biBzdHJlYW07Ci19KTsKLQotdGVtcGxhdGVkUlNDbG9zZWRSZWFkZXIoJ1JlYWRhYmxlU3RyZWFt
IHJlYWRlciAoY2xvc2VkIHZpYSBjYW5jZWwgYWZ0ZXIgZ2V0dGluZyByZWFkZXIpJywgKCkgPT4g
ewotICBjb25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oKTsKLSAgY29uc3QgcmVzdWx0
ID0gc3RyZWFtQW5kRGVmYXVsdFJlYWRlcihzdHJlYW0pOwotICByZXN1bHQucmVhZGVyLmNhbmNl
bCgpOwotICByZXR1cm4gcmVzdWx0OwotfSk7Ci0KLXRlbXBsYXRlZFJTRXJyb3JlZCgnUmVhZGFi
bGVTdHJlYW0gKGVycm9yZWQgdmlhIGNhbGwgaW4gc3RhcnQpJywgKCkgPT4gewotICByZXR1cm4g
bmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0gICAgICBjLmVycm9yKHRoZUVy
cm9yKTsKLSAgICB9Ci0gIH0pOwotfSwgdGhlRXJyb3IpOwotCi10ZW1wbGF0ZWRSU0Vycm9yZWRT
eW5jT25seSgnUmVhZGFibGVTdHJlYW0gKGVycm9yZWQgdmlhIGNhbGwgaW4gc3RhcnQpJywgKCkg
PT4gewotICByZXR1cm4gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0gICAg
ICBjLmVycm9yKHRoZUVycm9yKTsKLSAgICB9Ci0gIH0pOwotfSwgdGhlRXJyb3IpOwotCi10ZW1w
bGF0ZWRSU0Vycm9yZWQoJ1JlYWRhYmxlU3RyZWFtIChlcnJvcmVkIHZpYSByZXR1cm5pbmcgYSBy
ZWplY3RlZCBwcm9taXNlIGluIHN0YXJ0KScsICgpID0+IHsKLSAgcmV0dXJuIG5ldyBSZWFkYWJs
ZVN0cmVhbSh7Ci0gICAgc3RhcnQoKSB7Ci0gICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QodGhl
RXJyb3IpOwotICAgIH0KLSAgfSk7Ci19LCB0aGVFcnJvcik7Ci0KLXRlbXBsYXRlZFJTRXJyb3Jl
ZFJlYWRlcignUmVhZGFibGVTdHJlYW0gKGVycm9yZWQgdmlhIHJldHVybmluZyBhIHJlamVjdGVk
IHByb21pc2UgaW4gc3RhcnQpIHJlYWRlcicsICgpID0+IHsKLSAgcmV0dXJuIHN0cmVhbUFuZERl
ZmF1bHRSZWFkZXIobmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydCgpIHsKLSAgICAgIHJl
dHVybiBQcm9taXNlLnJlamVjdCh0aGVFcnJvcik7Ci0gICAgfQotICB9KSk7Ci19LCB0aGVFcnJv
cik7Ci0KLXRlbXBsYXRlZFJTRXJyb3JlZFJlYWRlcignUmVhZGFibGVTdHJlYW0gcmVhZGVyIChl
cnJvcmVkIGJlZm9yZSBnZXR0aW5nIHJlYWRlciknLCAoKSA9PiB7Ci0gIGxldCBjb250cm9sbGVy
OwotICBjb25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsK
LSAgICAgIGNvbnRyb2xsZXIgPSBjOwotICAgIH0KLSAgfSk7Ci0gIGNvbnRyb2xsZXIuZXJyb3Io
dGhlRXJyb3IpOwotICByZXR1cm4gc3RyZWFtQW5kRGVmYXVsdFJlYWRlcihzdHJlYW0pOwotfSwg
dGhlRXJyb3IpOwotCi10ZW1wbGF0ZWRSU0Vycm9yZWRSZWFkZXIoJ1JlYWRhYmxlU3RyZWFtIHJl
YWRlciAoZXJyb3JlZCBhZnRlciBnZXR0aW5nIHJlYWRlciknLCAoKSA9PiB7Ci0gIGxldCBjb250
cm9sbGVyOwotICBjb25zdCByZXN1bHQgPSBzdHJlYW1BbmREZWZhdWx0UmVhZGVyKG5ldyBSZWFk
YWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgY29udHJvbGxlciA9IGM7Ci0gICAg
fQotICB9KSk7Ci0gIGNvbnRyb2xsZXIuZXJyb3IodGhlRXJyb3IpOwotICByZXR1cm4gcmVzdWx0
OwotfSwgdGhlRXJyb3IpOwotCi10ZW1wbGF0ZWRSU1R3b0NodW5rc09wZW5SZWFkZXIoJ1JlYWRh
YmxlU3RyZWFtICh0d28gY2h1bmtzIGVucXVldWVkLCBzdGlsbCBvcGVuKSByZWFkZXInLCAoKSA9
PiB7Ci0gIHJldHVybiBzdHJlYW1BbmREZWZhdWx0UmVhZGVyKG5ldyBSZWFkYWJsZVN0cmVhbSh7
Ci0gICAgc3RhcnQoYykgewotICAgICAgYy5lbnF1ZXVlKGNodW5rc1swXSk7Ci0gICAgICBjLmVu
cXVldWUoY2h1bmtzWzFdKTsKLSAgICB9Ci0gIH0pKTsKLX0sIGNodW5rcyk7Ci0KLXRlbXBsYXRl
ZFJTVHdvQ2h1bmtzQ2xvc2VkUmVhZGVyKCdSZWFkYWJsZVN0cmVhbSAodHdvIGNodW5rcyBlbnF1
ZXVlZCwgdGhlbiBjbG9zZWQpIHJlYWRlcicsICgpID0+IHsKLSAgbGV0IGRvQ2xvc2U7Ci0gIGNv
bnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAg
Yy5lbnF1ZXVlKGNodW5rc1swXSk7Ci0gICAgICBjLmVucXVldWUoY2h1bmtzWzFdKTsKLSAgICAg
IGRvQ2xvc2UgPSBjLmNsb3NlLmJpbmQoYyk7Ci0gICAgfQotICB9KTsKLSAgY29uc3QgcmVzdWx0
ID0gc3RyZWFtQW5kRGVmYXVsdFJlYWRlcihzdHJlYW0pOwotICBkb0Nsb3NlKCk7Ci0gIHJldHVy
biByZXN1bHQ7Ci19LCBjaHVua3MpOwotCi1mdW5jdGlvbiBzdHJlYW1BbmREZWZhdWx0UmVhZGVy
KHN0cmVhbSkgewotICByZXR1cm4geyBzdHJlYW0sIHJlYWRlcjogc3RyZWFtLmdldFJlYWRlcigp
IH07Ci19Ci0KLWRvbmUoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3RlbXBsYXRlZC5zZXJ2
aWNld29ya2VyLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3RlbXBsYXRlZC5zZXJ2
aWNld29ya2VyLmh0dHBzLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggNDM3YTAzYWRkNjY3ZWY5ZjRlNGZkYWY0YjgxOWJiOTVmMzQwMTVlZC4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy90ZW1wbGF0ZWQu
c2VydmljZXdvcmtlci5odHRwcy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw4OSAr
MCwwIEBACi0KLVBBU1MgU2VydmljZSB3b3JrZXIgdGVzdCBzZXR1cCAKLVBBU1MgUnVubmluZyB0
ZW1wbGF0ZWRSU0VtcHR5IHdpdGggUmVhZGFibGVTdHJlYW0gKGVtcHR5KSAKLVBBU1MgUmVhZGFi
bGVTdHJlYW0gKGVtcHR5KTogaW5zdGFuY2VzIGhhdmUgdGhlIGNvcnJlY3QgbWV0aG9kcyBhbmQg
cHJvcGVydGllcyAKLVBBU1MgUmVhZGFibGVTdHJlYW0gKGVtcHR5KTogY2FsbGluZyBnZXRSZWFk
ZXIgd2l0aCBpbnZhbGlkIGFyZ3VtZW50cyBzaG91bGQgdGhyb3cgYXBwcm9wcmlhdGUgZXJyb3Jz
IAotUEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTRW1wdHlSZWFkZXIgd2l0aCBSZWFkYWJsZVN0cmVh
bSAoZW1wdHkpIHJlYWRlciAKLVBBU1MgUmVhZGFibGVTdHJlYW0gKGVtcHR5KSByZWFkZXI6IGlu
c3RhbmNlcyBoYXZlIHRoZSBjb3JyZWN0IG1ldGhvZHMgYW5kIHByb3BlcnRpZXMgCi1QQVNTIFJl
YWRhYmxlU3RyZWFtIChlbXB0eSkgcmVhZGVyOiBsb2NrZWQgc2hvdWxkIGJlIHRydWUgCi1QQVNT
IFJlYWRhYmxlU3RyZWFtIChlbXB0eSkgcmVhZGVyOiByZWFkKCkgc2hvdWxkIG5ldmVyIHNldHRs
ZSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gKGVtcHR5KSByZWFkZXI6IHR3byByZWFkKClzIHNob3Vs
ZCBib3RoIG5ldmVyIHNldHRsZSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gKGVtcHR5KSByZWFkZXI6
IHJlYWQoKSBzaG91bGQgcmV0dXJuIGRpc3RpbmN0IHByb21pc2VzIGVhY2ggdGltZSAKLVBBU1Mg
UmVhZGFibGVTdHJlYW0gKGVtcHR5KSByZWFkZXI6IGdldFJlYWRlcigpIGFnYWluIG9uIHRoZSBz
dHJlYW0gc2hvdWxkIGZhaWwgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIChlbXB0eSkgcmVhZGVyOiBy
ZWxlYXNpbmcgdGhlIGxvY2sgd2l0aCBwZW5kaW5nIHJlYWQgcmVxdWVzdHMgc2hvdWxkIHRocm93
IGJ1dCB0aGUgcmVhZCByZXF1ZXN0cyBzaG91bGQgc3RheSBwZW5kaW5nIAotUEFTUyBSZWFkYWJs
ZVN0cmVhbSAoZW1wdHkpIHJlYWRlcjogcmVsZWFzaW5nIHRoZSBsb2NrIHNob3VsZCBjYXVzZSBm
dXJ0aGVyIHJlYWQoKSBjYWxscyB0byByZWplY3Qgd2l0aCBhIFR5cGVFcnJvciAKLVBBU1MgUmVh
ZGFibGVTdHJlYW0gKGVtcHR5KSByZWFkZXI6IHJlbGVhc2luZyB0aGUgbG9jayBzaG91bGQgY2F1
c2UgY2xvc2VkIGNhbGxzIHRvIHJlamVjdCB3aXRoIGEgVHlwZUVycm9yIAotUEFTUyBSZWFkYWJs
ZVN0cmVhbSAoZW1wdHkpIHJlYWRlcjogcmVsZWFzaW5nIHRoZSBsb2NrIHNob3VsZCBjYXVzZSBs
b2NrZWQgdG8gYmVjb21lIGZhbHNlIAotUEFTUyBSZWFkYWJsZVN0cmVhbSAoZW1wdHkpIHJlYWRl
cjogY2FuY2VsaW5nIHZpYSB0aGUgcmVhZGVyIHNob3VsZCBjYXVzZSB0aGUgcmVhZGVyIHRvIGFj
dCBjbG9zZWQgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIChlbXB0eSkgcmVhZGVyOiBjYW5jZWxpbmcg
dmlhIHRoZSBzdHJlYW0gc2hvdWxkIGZhaWwgCi1QQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNDbG9z
ZWQgd2l0aCBSZWFkYWJsZVN0cmVhbSAoY2xvc2VkIHZpYSBjYWxsIGluIHN0YXJ0KSAKLVBBU1Mg
UmVhZGFibGVTdHJlYW0gKGNsb3NlZCB2aWEgY2FsbCBpbiBzdGFydCk6IGNhbmNlbCgpIHNob3Vs
ZCByZXR1cm4gYSBkaXN0aW5jdCBmdWxmaWxsZWQgcHJvbWlzZSBlYWNoIHRpbWUgCi1QQVNTIFJl
YWRhYmxlU3RyZWFtIChjbG9zZWQgdmlhIGNhbGwgaW4gc3RhcnQpOiBsb2NrZWQgc2hvdWxkIGJl
IGZhbHNlIAotUEFTUyBSZWFkYWJsZVN0cmVhbSAoY2xvc2VkIHZpYSBjYWxsIGluIHN0YXJ0KTog
Z2V0UmVhZGVyKCkgc2hvdWxkIGJlIE9LIAotUEFTUyBSZWFkYWJsZVN0cmVhbSAoY2xvc2VkIHZp
YSBjYWxsIGluIHN0YXJ0KTogc2hvdWxkIGJlIGFibGUgdG8gYWNxdWlyZSBtdWx0aXBsZSByZWFk
ZXJzIGlmIHRoZXkgYXJlIHJlbGVhc2VkIGluIHN1Y2Nlc3Npb24gCi1QQVNTIFJlYWRhYmxlU3Ry
ZWFtIChjbG9zZWQgdmlhIGNhbGwgaW4gc3RhcnQpOiBzaG91bGQgbm90IGJlIGFibGUgdG8gYWNx
dWlyZSBhIHNlY29uZCByZWFkZXIgaWYgd2UgZG9uJ3QgcmVsZWFzZSB0aGUgZmlyc3Qgb25lIAot
UEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTQ2xvc2VkUmVhZGVyIHdpdGggUmVhZGFibGVTdHJlYW0g
cmVhZGVyIChjbG9zZWQgYmVmb3JlIGdldHRpbmcgcmVhZGVyKSAKLVBBU1MgUmVhZGFibGVTdHJl
YW0gcmVhZGVyIChjbG9zZWQgYmVmb3JlIGdldHRpbmcgcmVhZGVyKTogcmVhZCgpIHNob3VsZCBm
dWxmaWxsIHdpdGggeyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0gCi1QQVNTIFJlYWRh
YmxlU3RyZWFtIHJlYWRlciAoY2xvc2VkIGJlZm9yZSBnZXR0aW5nIHJlYWRlcik6IHJlYWQoKSBt
dWx0aXBsZSB0aW1lcyBzaG91bGQgZnVsZmlsbCB3aXRoIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9u
ZTogdHJ1ZSB9IAotUEFTUyBSZWFkYWJsZVN0cmVhbSByZWFkZXIgKGNsb3NlZCBiZWZvcmUgZ2V0
dGluZyByZWFkZXIpOiByZWFkKCkgc2hvdWxkIHdvcmsgd2hlbiB1c2VkIHdpdGhpbiBhbm90aGVy
IHJlYWQoKSBmdWxmaWxsIGNhbGxiYWNrIAotUEFTUyBSZWFkYWJsZVN0cmVhbSByZWFkZXIgKGNs
b3NlZCBiZWZvcmUgZ2V0dGluZyByZWFkZXIpOiBjbG9zZWQgc2hvdWxkIGZ1bGZpbGwgd2l0aCB1
bmRlZmluZWQgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIHJlYWRlciAoY2xvc2VkIGJlZm9yZSBnZXR0
aW5nIHJlYWRlcik6IHJlbGVhc2luZyB0aGUgbG9jayBzaG91bGQgY2F1c2UgY2xvc2VkIHRvIHJl
amVjdCBhbmQgY2hhbmdlIGlkZW50aXR5IAotUEFTUyBSZWFkYWJsZVN0cmVhbSByZWFkZXIgKGNs
b3NlZCBiZWZvcmUgZ2V0dGluZyByZWFkZXIpOiBjYW5jZWwoKSBzaG91bGQgcmV0dXJuIGEgZGlz
dGluY3QgZnVsZmlsbGVkIHByb21pc2UgZWFjaCB0aW1lIAotUEFTUyBSdW5uaW5nIHRlbXBsYXRl
ZFJTQ2xvc2VkUmVhZGVyIHdpdGggUmVhZGFibGVTdHJlYW0gcmVhZGVyIChjbG9zZWQgYWZ0ZXIg
Z2V0dGluZyByZWFkZXIpIAotUEFTUyBSZWFkYWJsZVN0cmVhbSByZWFkZXIgKGNsb3NlZCBhZnRl
ciBnZXR0aW5nIHJlYWRlcik6IHJlYWQoKSBzaG91bGQgZnVsZmlsbCB3aXRoIHsgdmFsdWU6IHVu
ZGVmaW5lZCwgZG9uZTogdHJ1ZSB9IAotUEFTUyBSZWFkYWJsZVN0cmVhbSByZWFkZXIgKGNsb3Nl
ZCBhZnRlciBnZXR0aW5nIHJlYWRlcik6IHJlYWQoKSBtdWx0aXBsZSB0aW1lcyBzaG91bGQgZnVs
ZmlsbCB3aXRoIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9IAotUEFTUyBSZWFkYWJs
ZVN0cmVhbSByZWFkZXIgKGNsb3NlZCBhZnRlciBnZXR0aW5nIHJlYWRlcik6IHJlYWQoKSBzaG91
bGQgd29yayB3aGVuIHVzZWQgd2l0aGluIGFub3RoZXIgcmVhZCgpIGZ1bGZpbGwgY2FsbGJhY2sg
Ci1QQVNTIFJlYWRhYmxlU3RyZWFtIHJlYWRlciAoY2xvc2VkIGFmdGVyIGdldHRpbmcgcmVhZGVy
KTogY2xvc2VkIHNob3VsZCBmdWxmaWxsIHdpdGggdW5kZWZpbmVkIAotUEFTUyBSZWFkYWJsZVN0
cmVhbSByZWFkZXIgKGNsb3NlZCBhZnRlciBnZXR0aW5nIHJlYWRlcik6IHJlbGVhc2luZyB0aGUg
bG9jayBzaG91bGQgY2F1c2UgY2xvc2VkIHRvIHJlamVjdCBhbmQgY2hhbmdlIGlkZW50aXR5IAot
UEFTUyBSZWFkYWJsZVN0cmVhbSByZWFkZXIgKGNsb3NlZCBhZnRlciBnZXR0aW5nIHJlYWRlcik6
IGNhbmNlbCgpIHNob3VsZCByZXR1cm4gYSBkaXN0aW5jdCBmdWxmaWxsZWQgcHJvbWlzZSBlYWNo
IHRpbWUgCi1QQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNDbG9zZWQgd2l0aCBSZWFkYWJsZVN0cmVh
bSAoY2xvc2VkIHZpYSBjYW5jZWwpIAotUEFTUyBSZWFkYWJsZVN0cmVhbSAoY2xvc2VkIHZpYSBj
YW5jZWwpOiBjYW5jZWwoKSBzaG91bGQgcmV0dXJuIGEgZGlzdGluY3QgZnVsZmlsbGVkIHByb21p
c2UgZWFjaCB0aW1lIAotUEFTUyBSZWFkYWJsZVN0cmVhbSAoY2xvc2VkIHZpYSBjYW5jZWwpOiBs
b2NrZWQgc2hvdWxkIGJlIGZhbHNlIAotUEFTUyBSZWFkYWJsZVN0cmVhbSAoY2xvc2VkIHZpYSBj
YW5jZWwpOiBnZXRSZWFkZXIoKSBzaG91bGQgYmUgT0sgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIChj
bG9zZWQgdmlhIGNhbmNlbCk6IHNob3VsZCBiZSBhYmxlIHRvIGFjcXVpcmUgbXVsdGlwbGUgcmVh
ZGVycyBpZiB0aGV5IGFyZSByZWxlYXNlZCBpbiBzdWNjZXNzaW9uIAotUEFTUyBSZWFkYWJsZVN0
cmVhbSAoY2xvc2VkIHZpYSBjYW5jZWwpOiBzaG91bGQgbm90IGJlIGFibGUgdG8gYWNxdWlyZSBh
IHNlY29uZCByZWFkZXIgaWYgd2UgZG9uJ3QgcmVsZWFzZSB0aGUgZmlyc3Qgb25lIAotUEFTUyBS
dW5uaW5nIHRlbXBsYXRlZFJTQ2xvc2VkUmVhZGVyIHdpdGggUmVhZGFibGVTdHJlYW0gcmVhZGVy
IChjbG9zZWQgdmlhIGNhbmNlbCBhZnRlciBnZXR0aW5nIHJlYWRlcikgCi1QQVNTIFJlYWRhYmxl
U3RyZWFtIHJlYWRlciAoY2xvc2VkIHZpYSBjYW5jZWwgYWZ0ZXIgZ2V0dGluZyByZWFkZXIpOiBy
ZWFkKCkgc2hvdWxkIGZ1bGZpbGwgd2l0aCB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUg
fSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gcmVhZGVyIChjbG9zZWQgdmlhIGNhbmNlbCBhZnRlciBn
ZXR0aW5nIHJlYWRlcik6IHJlYWQoKSBtdWx0aXBsZSB0aW1lcyBzaG91bGQgZnVsZmlsbCB3aXRo
IHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9IAotUEFTUyBSZWFkYWJsZVN0cmVhbSBy
ZWFkZXIgKGNsb3NlZCB2aWEgY2FuY2VsIGFmdGVyIGdldHRpbmcgcmVhZGVyKTogcmVhZCgpIHNo
b3VsZCB3b3JrIHdoZW4gdXNlZCB3aXRoaW4gYW5vdGhlciByZWFkKCkgZnVsZmlsbCBjYWxsYmFj
ayAKLVBBU1MgUmVhZGFibGVTdHJlYW0gcmVhZGVyIChjbG9zZWQgdmlhIGNhbmNlbCBhZnRlciBn
ZXR0aW5nIHJlYWRlcik6IGNsb3NlZCBzaG91bGQgZnVsZmlsbCB3aXRoIHVuZGVmaW5lZCAKLVBB
U1MgUmVhZGFibGVTdHJlYW0gcmVhZGVyIChjbG9zZWQgdmlhIGNhbmNlbCBhZnRlciBnZXR0aW5n
IHJlYWRlcik6IHJlbGVhc2luZyB0aGUgbG9jayBzaG91bGQgY2F1c2UgY2xvc2VkIHRvIHJlamVj
dCBhbmQgY2hhbmdlIGlkZW50aXR5IAotUEFTUyBSZWFkYWJsZVN0cmVhbSByZWFkZXIgKGNsb3Nl
ZCB2aWEgY2FuY2VsIGFmdGVyIGdldHRpbmcgcmVhZGVyKTogY2FuY2VsKCkgc2hvdWxkIHJldHVy
biBhIGRpc3RpbmN0IGZ1bGZpbGxlZCBwcm9taXNlIGVhY2ggdGltZSAKLVBBU1MgUnVubmluZyB0
ZW1wbGF0ZWRSU0Vycm9yZWQgd2l0aCBSZWFkYWJsZVN0cmVhbSAoZXJyb3JlZCB2aWEgY2FsbCBp
biBzdGFydCkgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIChlcnJvcmVkIHZpYSBjYWxsIGluIHN0YXJ0
KTogZ2V0UmVhZGVyKCkgc2hvdWxkIHJldHVybiBhIHJlYWRlciB0aGF0IGFjdHMgZXJyb3JlZCAK
LVBBU1MgUmVhZGFibGVTdHJlYW0gKGVycm9yZWQgdmlhIGNhbGwgaW4gc3RhcnQpOiByZWFkKCkg
dHdpY2Ugc2hvdWxkIGdpdmUgdGhlIGVycm9yIGVhY2ggdGltZSAKLVBBU1MgUmVhZGFibGVTdHJl
YW0gKGVycm9yZWQgdmlhIGNhbGwgaW4gc3RhcnQpOiBsb2NrZWQgc2hvdWxkIGJlIGZhbHNlIAot
UEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTRXJyb3JlZFN5bmNPbmx5IHdpdGggUmVhZGFibGVTdHJl
YW0gKGVycm9yZWQgdmlhIGNhbGwgaW4gc3RhcnQpIAotUEFTUyBSZWFkYWJsZVN0cmVhbSAoZXJy
b3JlZCB2aWEgY2FsbCBpbiBzdGFydCk6IHNob3VsZCBiZSBhYmxlIHRvIG9idGFpbiBhIHNlY29u
ZCByZWFkZXIsIHdpdGggdGhlIGNvcnJlY3QgY2xvc2VkIHByb21pc2UgCi1QQVNTIFJlYWRhYmxl
U3RyZWFtIChlcnJvcmVkIHZpYSBjYWxsIGluIHN0YXJ0KTogc2hvdWxkIG5vdCBiZSBhYmxlIHRv
IG9idGFpbiBhZGRpdGlvbmFsIHJlYWRlcnMgaWYgd2UgZG9uJ3QgcmVsZWFzZSB0aGUgZmlyc3Qg
bG9jayAKLVBBU1MgUmVhZGFibGVTdHJlYW0gKGVycm9yZWQgdmlhIGNhbGwgaW4gc3RhcnQpOiBj
YW5jZWwoKSBzaG91bGQgcmV0dXJuIGEgZGlzdGluY3QgcmVqZWN0ZWQgcHJvbWlzZSBlYWNoIHRp
bWUgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIChlcnJvcmVkIHZpYSBjYWxsIGluIHN0YXJ0KTogcmVh
ZGVyIGNhbmNlbCgpIHNob3VsZCByZXR1cm4gYSBkaXN0aW5jdCByZWplY3RlZCBwcm9taXNlIGVh
Y2ggdGltZSAKLVBBU1MgUnVubmluZyB0ZW1wbGF0ZWRSU0Vycm9yZWQgd2l0aCBSZWFkYWJsZVN0
cmVhbSAoZXJyb3JlZCB2aWEgcmV0dXJuaW5nIGEgcmVqZWN0ZWQgcHJvbWlzZSBpbiBzdGFydCkg
Ci1QQVNTIFJlYWRhYmxlU3RyZWFtIChlcnJvcmVkIHZpYSByZXR1cm5pbmcgYSByZWplY3RlZCBw
cm9taXNlIGluIHN0YXJ0KTogZ2V0UmVhZGVyKCkgc2hvdWxkIHJldHVybiBhIHJlYWRlciB0aGF0
IGFjdHMgZXJyb3JlZCAKLVBBU1MgUmVhZGFibGVTdHJlYW0gKGVycm9yZWQgdmlhIHJldHVybmlu
ZyBhIHJlamVjdGVkIHByb21pc2UgaW4gc3RhcnQpOiByZWFkKCkgdHdpY2Ugc2hvdWxkIGdpdmUg
dGhlIGVycm9yIGVhY2ggdGltZSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gKGVycm9yZWQgdmlhIHJl
dHVybmluZyBhIHJlamVjdGVkIHByb21pc2UgaW4gc3RhcnQpOiBsb2NrZWQgc2hvdWxkIGJlIGZh
bHNlIAotUEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTRXJyb3JlZFJlYWRlciB3aXRoIFJlYWRhYmxl
U3RyZWFtIChlcnJvcmVkIHZpYSByZXR1cm5pbmcgYSByZWplY3RlZCBwcm9taXNlIGluIHN0YXJ0
KSByZWFkZXIgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIChlcnJvcmVkIHZpYSByZXR1cm5pbmcgYSBy
ZWplY3RlZCBwcm9taXNlIGluIHN0YXJ0KSByZWFkZXI6IGNsb3NlZCBzaG91bGQgcmVqZWN0IHdp
dGggdGhlIGVycm9yIAotUEFTUyBSZWFkYWJsZVN0cmVhbSAoZXJyb3JlZCB2aWEgcmV0dXJuaW5n
IGEgcmVqZWN0ZWQgcHJvbWlzZSBpbiBzdGFydCkgcmVhZGVyOiByZWxlYXNpbmcgdGhlIGxvY2sg
c2hvdWxkIGNhdXNlIGNsb3NlZCB0byByZWplY3QgYW5kIGNoYW5nZSBpZGVudGl0eSAKLVBBU1Mg
UmVhZGFibGVTdHJlYW0gKGVycm9yZWQgdmlhIHJldHVybmluZyBhIHJlamVjdGVkIHByb21pc2Ug
aW4gc3RhcnQpIHJlYWRlcjogcmVhZCgpIHNob3VsZCByZWplY3Qgd2l0aCB0aGUgZXJyb3IgCi1Q
QVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNFcnJvcmVkUmVhZGVyIHdpdGggUmVhZGFibGVTdHJlYW0g
cmVhZGVyIChlcnJvcmVkIGJlZm9yZSBnZXR0aW5nIHJlYWRlcikgCi1QQVNTIFJlYWRhYmxlU3Ry
ZWFtIHJlYWRlciAoZXJyb3JlZCBiZWZvcmUgZ2V0dGluZyByZWFkZXIpOiBjbG9zZWQgc2hvdWxk
IHJlamVjdCB3aXRoIHRoZSBlcnJvciAKLVBBU1MgUmVhZGFibGVTdHJlYW0gcmVhZGVyIChlcnJv
cmVkIGJlZm9yZSBnZXR0aW5nIHJlYWRlcik6IHJlbGVhc2luZyB0aGUgbG9jayBzaG91bGQgY2F1
c2UgY2xvc2VkIHRvIHJlamVjdCBhbmQgY2hhbmdlIGlkZW50aXR5IAotUEFTUyBSZWFkYWJsZVN0
cmVhbSByZWFkZXIgKGVycm9yZWQgYmVmb3JlIGdldHRpbmcgcmVhZGVyKTogcmVhZCgpIHNob3Vs
ZCByZWplY3Qgd2l0aCB0aGUgZXJyb3IgCi1QQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNFcnJvcmVk
UmVhZGVyIHdpdGggUmVhZGFibGVTdHJlYW0gcmVhZGVyIChlcnJvcmVkIGFmdGVyIGdldHRpbmcg
cmVhZGVyKSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gcmVhZGVyIChlcnJvcmVkIGFmdGVyIGdldHRp
bmcgcmVhZGVyKTogY2xvc2VkIHNob3VsZCByZWplY3Qgd2l0aCB0aGUgZXJyb3IgCi1QQVNTIFJl
YWRhYmxlU3RyZWFtIHJlYWRlciAoZXJyb3JlZCBhZnRlciBnZXR0aW5nIHJlYWRlcik6IHJlbGVh
c2luZyB0aGUgbG9jayBzaG91bGQgY2F1c2UgY2xvc2VkIHRvIHJlamVjdCBhbmQgY2hhbmdlIGlk
ZW50aXR5IAotUEFTUyBSZWFkYWJsZVN0cmVhbSByZWFkZXIgKGVycm9yZWQgYWZ0ZXIgZ2V0dGlu
ZyByZWFkZXIpOiByZWFkKCkgc2hvdWxkIHJlamVjdCB3aXRoIHRoZSBlcnJvciAKLVBBU1MgUnVu
bmluZyB0ZW1wbGF0ZWRSU1R3b0NodW5rc09wZW5SZWFkZXIgd2l0aCBSZWFkYWJsZVN0cmVhbSAo
dHdvIGNodW5rcyBlbnF1ZXVlZCwgc3RpbGwgb3BlbikgcmVhZGVyIAotUEFTUyBSZWFkYWJsZVN0
cmVhbSAodHdvIGNodW5rcyBlbnF1ZXVlZCwgc3RpbGwgb3BlbikgcmVhZGVyOiBjYWxsaW5nIHJl
YWQoKSB0d2ljZSB3aXRob3V0IHdhaXRpbmcgd2lsbCBldmVudHVhbGx5IGdpdmUgYm90aCBjaHVu
a3MgKHNlcXVlbnRpYWwpIAotUEFTUyBSZWFkYWJsZVN0cmVhbSAodHdvIGNodW5rcyBlbnF1ZXVl
ZCwgc3RpbGwgb3BlbikgcmVhZGVyOiBjYWxsaW5nIHJlYWQoKSB0d2ljZSB3aXRob3V0IHdhaXRp
bmcgd2lsbCBldmVudHVhbGx5IGdpdmUgYm90aCBjaHVua3MgKG5lc3RlZCkgCi1QQVNTIFJlYWRh
YmxlU3RyZWFtICh0d28gY2h1bmtzIGVucXVldWVkLCBzdGlsbCBvcGVuKSByZWFkZXI6IHJlYWQo
KSBzaG91bGQgcmV0dXJuIGRpc3RpbmN0IHByb21pc2VzIGVhY2ggdGltZSAKLVBBU1MgUmVhZGFi
bGVTdHJlYW0gKHR3byBjaHVua3MgZW5xdWV1ZWQsIHN0aWxsIG9wZW4pIHJlYWRlcjogY2FuY2Vs
KCkgYWZ0ZXIgYSByZWFkKCkgc2hvdWxkIHN0aWxsIGdpdmUgdGhhdCBzaW5nbGUgcmVhZCByZXN1
bHQgCi1QQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNUd29DaHVua3NDbG9zZWRSZWFkZXIgd2l0aCBS
ZWFkYWJsZVN0cmVhbSAodHdvIGNodW5rcyBlbnF1ZXVlZCwgdGhlbiBjbG9zZWQpIHJlYWRlciAK
LVBBU1MgUmVhZGFibGVTdHJlYW0gKHR3byBjaHVua3MgZW5xdWV1ZWQsIHRoZW4gY2xvc2VkKSBy
ZWFkZXI6IHRoaXJkIHJlYWQoKSwgd2l0aG91dCB3YWl0aW5nLCBzaG91bGQgZ2l2ZSB7IHZhbHVl
OiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSAoc2VxdWVudGlhbCkgCi1QQVNTIFJlYWRhYmxlU3Ry
ZWFtICh0d28gY2h1bmtzIGVucXVldWVkLCB0aGVuIGNsb3NlZCkgcmVhZGVyOiB0aGlyZCByZWFk
KCksIHdpdGhvdXQgd2FpdGluZywgc2hvdWxkIGdpdmUgeyB2YWx1ZTogdW5kZWZpbmVkLCBkb25l
OiB0cnVlIH0gKG5lc3RlZCkgCi1QQVNTIFJlYWRhYmxlU3RyZWFtICh0d28gY2h1bmtzIGVucXVl
dWVkLCB0aGVuIGNsb3NlZCkgcmVhZGVyOiBkcmFpbmluZyB0aGUgc3RyZWFtIHZpYSByZWFkKCkg
c2hvdWxkIGNhdXNlIHRoZSByZWFkZXIgY2xvc2VkIHByb21pc2UgdG8gZnVsZmlsbCwgYnV0IGxv
Y2tlZCBzdGF5cyB0cnVlIAotUEFTUyBSZWFkYWJsZVN0cmVhbSAodHdvIGNodW5rcyBlbnF1ZXVl
ZCwgdGhlbiBjbG9zZWQpIHJlYWRlcjogcmVsZWFzaW5nIHRoZSBsb2NrIGFmdGVyIHRoZSBzdHJl
YW0gaXMgY2xvc2VkIHNob3VsZCBjYXVzZSBsb2NrZWQgdG8gYmVjb21lIGZhbHNlIAotUEFTUyBS
ZWFkYWJsZVN0cmVhbSAodHdvIGNodW5rcyBlbnF1ZXVlZCwgdGhlbiBjbG9zZWQpIHJlYWRlcjog
cmVsZWFzaW5nIHRoZSBsb2NrIHNob3VsZCBjYXVzZSBmdXJ0aGVyIHJlYWQoKSBjYWxscyB0byBy
ZWplY3Qgd2l0aCBhIFR5cGVFcnJvciAKLVBBU1MgUmVhZGFibGVTdHJlYW0gKHR3byBjaHVua3Mg
ZW5xdWV1ZWQsIHRoZW4gY2xvc2VkKSByZWFkZXI6IHJlYWRlcidzIGNsb3NlZCBwcm9wZXJ0eSBh
bHdheXMgcmV0dXJucyB0aGUgc2FtZSBwcm9taXNlIAotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFt
cy90ZW1wbGF0ZWQuc2VydmljZXdvcmtlci5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvdGVtcGxh
dGVkLnNlcnZpY2V3b3JrZXIuaHR0cHMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDFiMDcxNzUxNjAyOTM0YTI5ODI5Y2ZmYzk1MThhNzNjMzEzMDA0Ni4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy90ZW1wbGF0ZWQu
c2VydmljZXdvcmtlci5odHRwcy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAot
PCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08dGl0bGU+dGVtcGxhdGVk
LmpzIHNlcnZpY2Ugd29ya2VyIHdyYXBwZXIgZmlsZTwvdGl0bGU+Ci0KLTxzY3JpcHQgc3JjPSIv
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvc2Vydmlj
ZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL3Jlc291cmNlcy90ZXN0LWhlbHBlcnMuc3ViLmpzIj48
L3NjcmlwdD4KLQotPHNjcmlwdD4KLSd1c2Ugc3RyaWN0JzsKLXNlcnZpY2Vfd29ya2VyX3Rlc3Qo
J3RlbXBsYXRlZC5qcycsICdTZXJ2aWNlIHdvcmtlciB0ZXN0IHNldHVwJyk7Ci08L3NjcmlwdD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3RlbXBsYXRlZC5zaGFyZWR3b3JrZXItZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
L3JlYWRhYmxlLXN0cmVhbXMvdGVtcGxhdGVkLnNoYXJlZHdvcmtlci1leHBlY3RlZC50eHQKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA5ZDVkMjUwOWQ3ODQ3ZThjZDZmZTY2MDZhYTYw
Y2RkMzNhYTQ3NGUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3Jl
YWRhYmxlLXN0cmVhbXMvdGVtcGxhdGVkLnNoYXJlZHdvcmtlci1leHBlY3RlZC50eHQKKysrIC9k
ZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLUNPTlNPTEUgTUVTU0FHRTogUmVmZXJlbmNlRXJyb3I6
IENhbid0IGZpbmQgdmFyaWFibGU6IFNoYXJlZFdvcmtlcgotCi1IYXJuZXNzIEVycm9yIChGQUlM
KSwgbWVzc2FnZSA9IFJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBTaGFyZWRX
b3JrZXIKLQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy90ZW1wbGF0ZWQuc2hhcmVkd29ya2Vy
Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvcmVhZGFibGUtc3RyZWFtcy90ZW1wbGF0ZWQuc2hhcmVkd29ya2VyLmh0bWwKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZmNjBmMTg3OGJjZjAzNmM3ZmY3MzRiOWE0YmRiMjc3NThi
YWNjNmIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxl
LXN0cmVhbXMvdGVtcGxhdGVkLnNoYXJlZHdvcmtlci5odG1sCisrKyAvZGV2L251bGwKQEAgLTEs
MTEgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08dGl0
bGU+dGVtcGxhdGVkLmpzIHNoYXJlZCB3b3JrZXIgd3JhcHBlciBmaWxlPC90aXRsZT4KLQotPHNj
cmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBz
cmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotCi08c2NyaXB0
PgotJ3VzZSBzdHJpY3QnOwotZmV0Y2hfdGVzdHNfZnJvbV93b3JrZXIobmV3IFNoYXJlZFdvcmtl
cigndGVtcGxhdGVkLmpzJykpOwotPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy93
M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3czYy1pbXBvcnQubG9nCmluZGV4IDA0MzUzNGU1
MGY0NTczZWFjMWYyOGQ1NTQ1NWU5OTcyZWJlY2U2YmEuLjljNzFjNDcwNThlMzQyYmRmY2M5NmU5
NzU3YjAwNGZmZGQ0NDRkMTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3czYy1pbXBvcnQubG9n
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy9yZWFkYWJsZS1zdHJlYW1zL3czYy1pbXBvcnQubG9nCkBAIC0xLDcgKzEsNyBAQAogVGhlIHRl
c3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRv
cnkuCiBEbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KIEluc3Rl
YWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dp
dGh1Yi5jb20vdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cworCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWIt
cGxhdGZvcm0tdGVzdHMvd3B0CiAKIFRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13
M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0CiAKQEAgLTE0LDU4ICsxNCwxNyBAQCBQcm9w
ZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKIE5vbmUKIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQogTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9iYWQtc3RyYXRlZ2llcy5kZWRpY2F0
ZWR3b3JrZXIuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2JhZC1zdHJhdGVnaWVzLmh0bWwKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3Ry
ZWFtcy9iYWQtc3RyYXRlZ2llcy5qcwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2JhZC1zdHJhdGVnaWVzLnNlcnZp
Y2V3b3JrZXIuaHR0cHMuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2JhZC1zdHJhdGVnaWVzLnNoYXJlZHdv
cmtlci5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
dHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvYmFkLXVuZGVybHlpbmctc291cmNlcy5kZWRpY2F0ZWR3
b3JrZXIuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2JhZC11bmRlcmx5aW5nLXNvdXJjZXMuaHRtbAotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJs
ZS1zdHJlYW1zL2JhZC11bmRlcmx5aW5nLXNvdXJjZXMuanMKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9iYWQtdW5k
ZXJseWluZy1zb3VyY2VzLnNlcnZpY2V3b3JrZXIuaHR0cHMuaHRtbAotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2Jh
ZC11bmRlcmx5aW5nLXNvdXJjZXMuc2hhcmVkd29ya2VyLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9icmFu
ZC1jaGVja3MuZGVkaWNhdGVkd29ya2VyLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9icmFuZC1jaGVja3Mu
aHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy9yZWFkYWJsZS1zdHJlYW1zL2JyYW5kLWNoZWNrcy5qcwotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2JyYW5kLWNo
ZWNrcy5zZXJ2aWNld29ya2VyLmh0dHBzLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9icmFuZC1jaGVja3Mu
c2hhcmVkd29ya2VyLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9jYW5jZWwuZGVkaWNhdGVkd29ya2VyLmh0
bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
cmVhZGFibGUtc3RyZWFtcy9jYW5jZWwuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2NhbmNlbC5qcwotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJs
ZS1zdHJlYW1zL2NhbmNlbC5zZXJ2aWNld29ya2VyLmh0dHBzLmh0bWwKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9j
YW5jZWwuc2hhcmVkd29ya2VyLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9jb3VudC1xdWV1aW5nLXN0cmF0
ZWd5LWludGVncmF0aW9uLmRlZGljYXRlZHdvcmtlci5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvY291bnQt
cXVldWluZy1zdHJhdGVneS1pbnRlZ3JhdGlvbi5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvY291bnQtcXVl
dWluZy1zdHJhdGVneS1pbnRlZ3JhdGlvbi5qcwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2NvdW50LXF1ZXVpbmct
c3RyYXRlZ3ktaW50ZWdyYXRpb24uc2VydmljZXdvcmtlci5odHRwcy5odG1sCi0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVh
bXMvY291bnQtcXVldWluZy1zdHJhdGVneS1pbnRlZ3JhdGlvbi5zaGFyZWR3b3JrZXIuaHRtbAot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFk
YWJsZS1zdHJlYW1zL2RlZmF1bHQtcmVhZGVyLmRlZGljYXRlZHdvcmtlci5odG1sCi0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0
cmVhbXMvZGVmYXVsdC1yZWFkZXIuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2RlZmF1bHQtcmVhZGVyLmpz
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3Jl
YWRhYmxlLXN0cmVhbXMvZGVmYXVsdC1yZWFkZXIuc2VydmljZXdvcmtlci5odHRwcy5odG1sCi0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRh
YmxlLXN0cmVhbXMvZGVmYXVsdC1yZWFkZXIuc2hhcmVkd29ya2VyLmh0bWwKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFt
cy9mbG9hdGluZy1wb2ludC10b3RhbC1xdWV1ZS1zaXplLmRlZGljYXRlZHdvcmtlci5odG1sCi0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRh
YmxlLXN0cmVhbXMvZmxvYXRpbmctcG9pbnQtdG90YWwtcXVldWUtc2l6ZS5odG1sCi0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0
cmVhbXMvZmxvYXRpbmctcG9pbnQtdG90YWwtcXVldWUtc2l6ZS5qcwotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2Zs
b2F0aW5nLXBvaW50LXRvdGFsLXF1ZXVlLXNpemUuc2VydmljZXdvcmtlci5odHRwcy5odG1sCi0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRh
YmxlLXN0cmVhbXMvZmxvYXRpbmctcG9pbnQtdG90YWwtcXVldWUtc2l6ZS5zaGFyZWR3b3JrZXIu
aHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy9yZWFkYWJsZS1zdHJlYW1zL2dhcmJhZ2UtY29sbGVjdGlvbi5kZWRpY2F0ZWR3b3JrZXIuaHRt
bAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9y
ZWFkYWJsZS1zdHJlYW1zL2dhcmJhZ2UtY29sbGVjdGlvbi5odG1sCi0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZ2Fy
YmFnZS1jb2xsZWN0aW9uLmpzCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZ2FyYmFnZS1jb2xsZWN0aW9uLnNlcnZp
Y2V3b3JrZXIuaHR0cHMuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2dhcmJhZ2UtY29sbGVjdGlvbi5zaGFy
ZWR3b3JrZXIuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2dlbmVyYWwuZGVkaWNhdGVkd29ya2VyLmh0bWwK
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVh
ZGFibGUtc3RyZWFtcy9nZW5lcmFsLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9nZW5lcmFsLmpzCi0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxl
LXN0cmVhbXMvZ2VuZXJhbC5zZXJ2aWNld29ya2VyLmh0dHBzLmh0bWwKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9n
ZW5lcmFsLnNoYXJlZHdvcmtlci5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvdGVlLmRlZGljYXRlZHdvcmtl
ci5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJl
YW1zL3JlYWRhYmxlLXN0cmVhbXMvdGVlLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy90ZWUuanMKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUt
c3RyZWFtcy90ZWUuc2VydmljZXdvcmtlci5odHRwcy5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvdGVlLnNo
YXJlZHdvcmtlci5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvdGVtcGxhdGVkLmRlZGljYXRlZHdvcmtlci5o
dG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
L3JlYWRhYmxlLXN0cmVhbXMvdGVtcGxhdGVkLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy90ZW1wbGF0ZWQu
anMKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
cmVhZGFibGUtc3RyZWFtcy90ZW1wbGF0ZWQuc2VydmljZXdvcmtlci5odHRwcy5odG1sCi0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxl
LXN0cmVhbXMvdGVtcGxhdGVkLnNoYXJlZHdvcmtlci5odG1sCisvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvYXN5bmMt
aXRlcmF0b3IuYW55LmpzCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvYmFkLXN0cmF0ZWdpZXMuYW55LmpzCisvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxl
LXN0cmVhbXMvYmFkLXVuZGVybHlpbmctc291cmNlcy5hbnkuanMKKy9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9jYW5j
ZWwuYW55LmpzCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
dHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvY29uc3RydWN0b3IuYW55LmpzCisvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMv
Y291bnQtcXVldWluZy1zdHJhdGVneS1pbnRlZ3JhdGlvbi5hbnkuanMKKy9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9k
ZWZhdWx0LXJlYWRlci5hbnkuanMKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9mbG9hdGluZy1wb2ludC10b3RhbC1x
dWV1ZS1zaXplLmFueS5qcworL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2dhcmJhZ2UtY29sbGVjdGlvbi5hbnkuanMK
Ky9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVh
ZGFibGUtc3RyZWFtcy9nZW5lcmFsLmFueS5qcworL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3BhdGNoZWQtZ2xvYmFs
LmFueS5qcworL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3JlZW50cmFudC1zdHJhdGVnaWVzLmFueS5qcworL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1z
dHJlYW1zL3RlZS5hbnkuanMKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy90ZW1wbGF0ZWQuYW55LmpzCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
cmVzb3VyY2VzL3JzLXRlc3QtdGVtcGxhdGVzLmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3Jlc291cmNlcy9ycy10ZXN0LXRlbXBsYXRlcy5q
cwppbmRleCBlZjY4ZTBhZGU2NDdiYWY1ZGRmMDAyNjE1ZTRlNGVmZGI1ZGJhZTAyLi43MDBiZDlj
M2NhOWY5ZTkyYzg2NTEyYmYzOGY5MDM5NDRiZTliZGNlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVzb3VyY2VzL3JzLXRl
c3QtdGVtcGxhdGVzLmpzCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy9yZXNvdXJjZXMvcnMtdGVzdC10ZW1wbGF0ZXMuanMKQEAgLTIzLDEw
ICsyMywxMyBAQCBzZWxmLnRlbXBsYXRlZFJTRW1wdHkgPSAobGFiZWwsIGZhY3RvcnkpID0+IHsK
ICAgdGVzdCgoKSA9PiB7CiAgICAgY29uc3QgcnMgPSBmYWN0b3J5KCk7CiAKLSAgICBhc3NlcnRf
dGhyb3dzKG5ldyBSYW5nZUVycm9yKCksICgpID0+IHJzLmdldFJlYWRlcih7IG1vZGU6ICcnIH0p
LCAnZW1wdHkgc3RyaW5nIG1vZGUgc2hvdWxkIHRocm93Jyk7Ci0gICAgYXNzZXJ0X3Rocm93cyhu
ZXcgUmFuZ2VFcnJvcigpLCAoKSA9PiBycy5nZXRSZWFkZXIoeyBtb2RlOiBudWxsIH0pLCAnbnVs
bCBtb2RlIHNob3VsZCB0aHJvdycpOwotICAgIGFzc2VydF90aHJvd3MobmV3IFJhbmdlRXJyb3Io
KSwgKCkgPT4gcnMuZ2V0UmVhZGVyKHsgbW9kZTogJ2FzZGYnIH0pLCAnYXNkZiBtb2RlIHNob3Vs
ZCB0aHJvdycpOwotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBycy5n
ZXRSZWFkZXIobnVsbCksICdudWxsIHNob3VsZCB0aHJvdycpOworICAgIGFzc2VydF90aHJvd3Nf
anMoVHlwZUVycm9yLCAoKSA9PiBycy5nZXRSZWFkZXIoeyBtb2RlOiAnJyB9KSwgJ2VtcHR5IHN0
cmluZyBtb2RlIHNob3VsZCB0aHJvdycpOworICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9y
LCAoKSA9PiBycy5nZXRSZWFkZXIoeyBtb2RlOiBudWxsIH0pLCAnbnVsbCBtb2RlIHNob3VsZCB0
aHJvdycpOworICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiBycy5nZXRSZWFk
ZXIoeyBtb2RlOiAnYXNkZicgfSksICdhc2RmIG1vZGUgc2hvdWxkIHRocm93Jyk7CisgICAgYXNz
ZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IHJzLmdldFJlYWRlcig1KSwgJzUgc2hvdWxk
IHRocm93Jyk7CisKKyAgICAvLyBTaG91bGQgbm90IHRocm93CisgICAgcnMuZ2V0UmVhZGVyKG51
bGwpOwogCiAgIH0sIGxhYmVsICsgJzogY2FsbGluZyBnZXRSZWFkZXIgd2l0aCBpbnZhbGlkIGFy
Z3VtZW50cyBzaG91bGQgdGhyb3cgYXBwcm9wcmlhdGUgZXJyb3JzJyk7CiB9OwpAQCAtODMsOCAr
ODYsOCBAQCBzZWxmLnRlbXBsYXRlZFJTQ2xvc2VkID0gKGxhYmVsLCBmYWN0b3J5KSA9PiB7CiAK
ICAgICBycy5nZXRSZWFkZXIoKTsKIAotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigp
LCAoKSA9PiBycy5nZXRSZWFkZXIoKSwgJ2dldHRpbmcgYSBzZWNvbmQgcmVhZGVyIHNob3VsZCB0
aHJvdycpOwotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBycy5nZXRS
ZWFkZXIoKSwgJ2dldHRpbmcgYSB0aGlyZCByZWFkZXIgc2hvdWxkIHRocm93Jyk7CisgICAgYXNz
ZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IHJzLmdldFJlYWRlcigpLCAnZ2V0dGluZyBh
IHNlY29uZCByZWFkZXIgc2hvdWxkIHRocm93Jyk7CisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBl
RXJyb3IsICgpID0+IHJzLmdldFJlYWRlcigpLCAnZ2V0dGluZyBhIHRoaXJkIHJlYWRlciBzaG91
bGQgdGhyb3cnKTsKIAogICB9LCBsYWJlbCArICc6IHNob3VsZCBub3QgYmUgYWJsZSB0byBhY3F1
aXJlIGEgc2Vjb25kIHJlYWRlciBpZiB3ZSBkb25cJ3QgcmVsZWFzZSB0aGUgZmlyc3Qgb25lJyk7
CiB9OwpAQCAtOTgsOCArMTAxLDggQEAgc2VsZi50ZW1wbGF0ZWRSU0Vycm9yZWQgPSAobGFiZWws
IGZhY3RvcnksIGVycm9yKSA9PiB7CiAgICAgY29uc3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7
CiAKICAgICByZXR1cm4gUHJvbWlzZS5hbGwoWwotICAgICAgcHJvbWlzZV9yZWplY3RzKHQsIGVy
cm9yLCByZWFkZXIuY2xvc2VkKSwKLSAgICAgIHByb21pc2VfcmVqZWN0cyh0LCBlcnJvciwgcmVh
ZGVyLnJlYWQoKSkKKyAgICAgIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yLCByZWFk
ZXIuY2xvc2VkKSwKKyAgICAgIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yLCByZWFk
ZXIucmVhZCgpKQogICAgIF0pOwogCiAgIH0sIGxhYmVsICsgJzogZ2V0UmVhZGVyKCkgc2hvdWxk
IHJldHVybiBhIHJlYWRlciB0aGF0IGFjdHMgZXJyb3JlZCcpOwpAQCAtMTEwLDkgKzExMyw5IEBA
IHNlbGYudGVtcGxhdGVkUlNFcnJvcmVkID0gKGxhYmVsLCBmYWN0b3J5LCBlcnJvcikgPT4gewog
ICAgIGNvbnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcigpOwogCiAgICAgcmV0dXJuIFByb21pc2Uu
YWxsKFsKLSAgICAgIHByb21pc2VfcmVqZWN0cyh0LCBlcnJvciwgcmVhZGVyLnJlYWQoKSksCi0g
ICAgICBwcm9taXNlX3JlamVjdHModCwgZXJyb3IsIHJlYWRlci5yZWFkKCkpLAotICAgICAgcHJv
bWlzZV9yZWplY3RzKHQsIGVycm9yLCByZWFkZXIuY2xvc2VkKQorICAgICAgcHJvbWlzZV9yZWpl
Y3RzX2V4YWN0bHkodCwgZXJyb3IsIHJlYWRlci5yZWFkKCkpLAorICAgICAgcHJvbWlzZV9yZWpl
Y3RzX2V4YWN0bHkodCwgZXJyb3IsIHJlYWRlci5yZWFkKCkpLAorICAgICAgcHJvbWlzZV9yZWpl
Y3RzX2V4YWN0bHkodCwgZXJyb3IsIHJlYWRlci5jbG9zZWQpCiAgICAgXSk7CiAKICAgfSwgbGFi
ZWwgKyAnOiByZWFkKCkgdHdpY2Ugc2hvdWxkIGdpdmUgdGhlIGVycm9yIGVhY2ggdGltZScpOwpA
QCAtMTMzLDcgKzEzNiw3IEBAIHNlbGYudGVtcGxhdGVkUlNFcnJvcmVkU3luY09ubHkgPSAobGFi
ZWwsIGZhY3RvcnksIGVycm9yKSA9PiB7CiAgICAgcnMuZ2V0UmVhZGVyKCkucmVsZWFzZUxvY2so
KTsKICAgICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsgLy8gQ2FsbGluZyBnZXRSZWFk
ZXIoKSB0d2ljZSBkb2VzIG5vdCB0aHJvdyAodGhlIHN0cmVhbSBpcyBub3QgbG9ja2VkKS4KIAot
ICAgIHJldHVybiBwcm9taXNlX3JlamVjdHModCwgZXJyb3IsIHJlYWRlci5jbG9zZWQpOworICAg
IHJldHVybiBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvciwgcmVhZGVyLmNsb3NlZCk7
CiAKICAgfSwgbGFiZWwgKyAnOiBzaG91bGQgYmUgYWJsZSB0byBvYnRhaW4gYSBzZWNvbmQgcmVh
ZGVyLCB3aXRoIHRoZSBjb3JyZWN0IGNsb3NlZCBwcm9taXNlJyk7CiAKQEAgLTE0Miw4ICsxNDUs
OCBAQCBzZWxmLnRlbXBsYXRlZFJTRXJyb3JlZFN5bmNPbmx5ID0gKGxhYmVsLCBmYWN0b3J5LCBl
cnJvcikgPT4gewogICAgIGNvbnN0IHJzID0gZmFjdG9yeSgpOwogICAgIHJzLmdldFJlYWRlcigp
OwogCi0gICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IHJzLmdldFJlYWRl
cigpLCAnZ2V0dGluZyBhIHNlY29uZCByZWFkZXIgc2hvdWxkIHRocm93IGEgVHlwZUVycm9yJyk7
Ci0gICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IHJzLmdldFJlYWRlcigp
LCAnZ2V0dGluZyBhIHRoaXJkIHJlYWRlciBzaG91bGQgdGhyb3cgYSBUeXBlRXJyb3InKTsKKyAg
ICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4gcnMuZ2V0UmVhZGVyKCksICdnZXR0
aW5nIGEgc2Vjb25kIHJlYWRlciBzaG91bGQgdGhyb3cgYSBUeXBlRXJyb3InKTsKKyAgICBhc3Nl
cnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4gcnMuZ2V0UmVhZGVyKCksICdnZXR0aW5nIGEg
dGhpcmQgcmVhZGVyIHNob3VsZCB0aHJvdyBhIFR5cGVFcnJvcicpOwogCiAgIH0sIGxhYmVsICsg
Jzogc2hvdWxkIG5vdCBiZSBhYmxlIHRvIG9idGFpbiBhZGRpdGlvbmFsIHJlYWRlcnMgaWYgd2Ug
ZG9uXCd0IHJlbGVhc2UgdGhlIGZpcnN0IGxvY2snKTsKIApAQCAtMTU2LDggKzE1OSw4IEBAIHNl
bGYudGVtcGxhdGVkUlNFcnJvcmVkU3luY09ubHkgPSAobGFiZWwsIGZhY3RvcnksIGVycm9yKSA9
PiB7CiAgICAgYXNzZXJ0X25vdF9lcXVhbHMoY2FuY2VsUHJvbWlzZTEsIGNhbmNlbFByb21pc2Uy
LCAnY2FuY2VsKCkgY2FsbHMgc2hvdWxkIHJldHVybiBkaXN0aW5jdCBwcm9taXNlcycpOwogCiAg
ICAgcmV0dXJuIFByb21pc2UuYWxsKFsKLSAgICAgIHByb21pc2VfcmVqZWN0cyh0LCBlcnJvciwg
Y2FuY2VsUHJvbWlzZTEpLAotICAgICAgcHJvbWlzZV9yZWplY3RzKHQsIGVycm9yLCBjYW5jZWxQ
cm9taXNlMikKKyAgICAgIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yLCBjYW5jZWxQ
cm9taXNlMSksCisgICAgICBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvciwgY2FuY2Vs
UHJvbWlzZTIpCiAgICAgXSk7CiAKICAgfSwgbGFiZWwgKyAnOiBjYW5jZWwoKSBzaG91bGQgcmV0
dXJuIGEgZGlzdGluY3QgcmVqZWN0ZWQgcHJvbWlzZSBlYWNoIHRpbWUnKTsKQEAgLTE3Miw4ICsx
NzUsOCBAQCBzZWxmLnRlbXBsYXRlZFJTRXJyb3JlZFN5bmNPbmx5ID0gKGxhYmVsLCBmYWN0b3J5
LCBlcnJvcikgPT4gewogICAgIGFzc2VydF9ub3RfZXF1YWxzKGNhbmNlbFByb21pc2UxLCBjYW5j
ZWxQcm9taXNlMiwgJ2NhbmNlbCgpIGNhbGxzIHNob3VsZCByZXR1cm4gZGlzdGluY3QgcHJvbWlz
ZXMnKTsKIAogICAgIHJldHVybiBQcm9taXNlLmFsbChbCi0gICAgICBwcm9taXNlX3JlamVjdHMo
dCwgZXJyb3IsIGNhbmNlbFByb21pc2UxKSwKLSAgICAgIHByb21pc2VfcmVqZWN0cyh0LCBlcnJv
ciwgY2FuY2VsUHJvbWlzZTIpCisgICAgICBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJv
ciwgY2FuY2VsUHJvbWlzZTEpLAorICAgICAgcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJy
b3IsIGNhbmNlbFByb21pc2UyKQogICAgIF0pOwogCiAgIH0sIGxhYmVsICsgJzogcmVhZGVyIGNh
bmNlbCgpIHNob3VsZCByZXR1cm4gYSBkaXN0aW5jdCByZWplY3RlZCBwcm9taXNlIGVhY2ggdGlt
ZScpOwpAQCAtMjQ0LDcgKzI0Nyw3IEBAIHNlbGYudGVtcGxhdGVkUlNFbXB0eVJlYWRlciA9IChs
YWJlbCwgZmFjdG9yeSkgPT4gewogICB0ZXN0KCgpID0+IHsKIAogICAgIGNvbnN0IHN0cmVhbSA9
IGZhY3RvcnkoKS5zdHJlYW07Ci0gICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgp
ID0+IHN0cmVhbS5nZXRSZWFkZXIoKSwgJ3N0cmVhbS5nZXRSZWFkZXIoKSBzaG91bGQgdGhyb3cg
YSBUeXBlRXJyb3InKTsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4gc3Ry
ZWFtLmdldFJlYWRlcigpLCAnc3RyZWFtLmdldFJlYWRlcigpIHNob3VsZCB0aHJvdyBhIFR5cGVF
cnJvcicpOwogCiAgIH0sIGxhYmVsICsgJzogZ2V0UmVhZGVyKCkgYWdhaW4gb24gdGhlIHN0cmVh
bSBzaG91bGQgZmFpbCcpOwogCkBAIC0yNjksNyArMjcyLDcgQEAgc2VsZi50ZW1wbGF0ZWRSU0Vt
cHR5UmVhZGVyID0gKGxhYmVsLCBmYWN0b3J5KSA9PiB7CiAgICAgICB0LnVucmVhY2hlZF9mdW5j
KCdjbG9zZWQgc2hvdWxkIG5vdCByZWplY3QnKQogICAgICk7CiAKLSAgICBhc3NlcnRfdGhyb3dz
KG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gcmVhZGVyLnJlbGVhc2VMb2NrKCksICdyZWxlYXNlTG9j
ayBzaG91bGQgdGhyb3cgYSBUeXBlRXJyb3InKTsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVF
cnJvciwgKCkgPT4gcmVhZGVyLnJlbGVhc2VMb2NrKCksICdyZWxlYXNlTG9jayBzaG91bGQgdGhy
b3cgYSBUeXBlRXJyb3InKTsKIAogICAgIGFzc2VydF90cnVlKHN0cmVhbS5sb2NrZWQsICd0aGUg
c3RyZWFtIHNob3VsZCBzdGlsbCBiZSBsb2NrZWQnKTsKIApAQCAtMjgzLDggKzI4Niw4IEBAIHNl
bGYudGVtcGxhdGVkUlNFbXB0eVJlYWRlciA9IChsYWJlbCwgZmFjdG9yeSkgPT4gewogICAgIHJl
YWRlci5yZWxlYXNlTG9jaygpOwogCiAgICAgcmV0dXJuIFByb21pc2UuYWxsKFsKLSAgICAgIHBy
b21pc2VfcmVqZWN0cyh0LCBuZXcgVHlwZUVycm9yKCksIHJlYWRlci5yZWFkKCkpLAotICAgICAg
cHJvbWlzZV9yZWplY3RzKHQsIG5ldyBUeXBlRXJyb3IoKSwgcmVhZGVyLnJlYWQoKSkKKyAgICAg
IHByb21pc2VfcmVqZWN0c19qcyh0LCBUeXBlRXJyb3IsIHJlYWRlci5yZWFkKCkpLAorICAgICAg
cHJvbWlzZV9yZWplY3RzX2pzKHQsIFR5cGVFcnJvciwgcmVhZGVyLnJlYWQoKSkKICAgICBdKTsK
IAogICB9LCBsYWJlbCArICc6IHJlbGVhc2luZyB0aGUgbG9jayBzaG91bGQgY2F1c2UgZnVydGhl
ciByZWFkKCkgY2FsbHMgdG8gcmVqZWN0IHdpdGggYSBUeXBlRXJyb3InKTsKQEAgLTI5OSw3ICsz
MDIsNyBAQCBzZWxmLnRlbXBsYXRlZFJTRW1wdHlSZWFkZXIgPSAobGFiZWwsIGZhY3RvcnkpID0+
IHsKIAogICAgIGFzc2VydF9lcXVhbHMoY2xvc2VkQmVmb3JlLCBjbG9zZWRBZnRlciwgJ3RoZSBj
bG9zZWQgcHJvbWlzZSBzaG91bGQgbm90IGNoYW5nZSBpZGVudGl0eScpOwogCi0gICAgcmV0dXJu
IHByb21pc2VfcmVqZWN0cyh0LCBuZXcgVHlwZUVycm9yKCksIGNsb3NlZEJlZm9yZSk7CisgICAg
cmV0dXJuIHByb21pc2VfcmVqZWN0c19qcyh0LCBUeXBlRXJyb3IsIGNsb3NlZEJlZm9yZSk7CiAK
ICAgfSwgbGFiZWwgKyAnOiByZWxlYXNpbmcgdGhlIGxvY2sgc2hvdWxkIGNhdXNlIGNsb3NlZCBj
YWxscyB0byByZWplY3Qgd2l0aCBhIFR5cGVFcnJvcicpOwogCkBAIC0zMjgsNyArMzMxLDcgQEAg
c2VsZi50ZW1wbGF0ZWRSU0VtcHR5UmVhZGVyID0gKGxhYmVsLCBmYWN0b3J5KSA9PiB7CiAgIHBy
b21pc2VfdGVzdCh0ID0+IHsKIAogICAgIGNvbnN0IHN0cmVhbSA9IGZhY3RvcnkoKS5zdHJlYW07
Ci0gICAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0LCBuZXcgVHlwZUVycm9yKCksIHN0cmVhbS5j
YW5jZWwoKSk7CisgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19qcyh0LCBUeXBlRXJyb3IsIHN0
cmVhbS5jYW5jZWwoKSk7CiAKICAgfSwgbGFiZWwgKyAnOiBjYW5jZWxpbmcgdmlhIHRoZSBzdHJl
YW0gc2hvdWxkIGZhaWwnKTsKIH07CkBAIC0zOTEsNyArMzk0LDcgQEAgc2VsZi50ZW1wbGF0ZWRS
U0Nsb3NlZFJlYWRlciA9IChsYWJlbCwgZmFjdG9yeSkgPT4gewogCiAgICAgcmV0dXJuIFByb21p
c2UuYWxsKFsKICAgICAgIGNsb3NlZEJlZm9yZS50aGVuKHYgPT4gYXNzZXJ0X2VxdWFscyh2LCB1
bmRlZmluZWQsICdyZWFkZXIuY2xvc2VkIGFjcXVpcmVkIGJlZm9yZSByZWxlYXNlIHNob3VsZCBm
dWxmaWxsJykpLAotICAgICAgcHJvbWlzZV9yZWplY3RzKHQsIG5ldyBUeXBlRXJyb3IoKSwgY2xv
c2VkQWZ0ZXIpCisgICAgICBwcm9taXNlX3JlamVjdHNfanModCwgVHlwZUVycm9yLCBjbG9zZWRB
ZnRlcikKICAgICBdKTsKIAogICB9LCBsYWJlbCArICc6IHJlbGVhc2luZyB0aGUgbG9jayBzaG91
bGQgY2F1c2UgY2xvc2VkIHRvIHJlamVjdCBhbmQgY2hhbmdlIGlkZW50aXR5Jyk7CkBAIC00MjEs
NyArNDI0LDcgQEAgc2VsZi50ZW1wbGF0ZWRSU0Vycm9yZWRSZWFkZXIgPSAobGFiZWwsIGZhY3Rv
cnksIGVycm9yKSA9PiB7CiAgIHByb21pc2VfdGVzdCh0ID0+IHsKIAogICAgIGNvbnN0IHJlYWRl
ciA9IGZhY3RvcnkoKS5yZWFkZXI7Ci0gICAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0LCBlcnJv
ciwgcmVhZGVyLmNsb3NlZCk7CisgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQs
IGVycm9yLCByZWFkZXIuY2xvc2VkKTsKIAogICB9LCBsYWJlbCArICc6IGNsb3NlZCBzaG91bGQg
cmVqZWN0IHdpdGggdGhlIGVycm9yJyk7CiAKQEAgLTQzMCwxMyArNDMzLDEzIEBAIHNlbGYudGVt
cGxhdGVkUlNFcnJvcmVkUmVhZGVyID0gKGxhYmVsLCBmYWN0b3J5LCBlcnJvcikgPT4gewogICAg
IGNvbnN0IHJlYWRlciA9IGZhY3RvcnkoKS5yZWFkZXI7CiAgICAgY29uc3QgY2xvc2VkQmVmb3Jl
ID0gcmVhZGVyLmNsb3NlZDsKIAotICAgIHJldHVybiBwcm9taXNlX3JlamVjdHModCwgZXJyb3Is
IGNsb3NlZEJlZm9yZSkudGhlbigoKSA9PiB7CisgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19l
eGFjdGx5KHQsIGVycm9yLCBjbG9zZWRCZWZvcmUpLnRoZW4oKCkgPT4gewogICAgICAgcmVhZGVy
LnJlbGVhc2VMb2NrKCk7CiAKICAgICAgIGNvbnN0IGNsb3NlZEFmdGVyID0gcmVhZGVyLmNsb3Nl
ZDsKICAgICAgIGFzc2VydF9ub3RfZXF1YWxzKGNsb3NlZEJlZm9yZSwgY2xvc2VkQWZ0ZXIsICd0
aGUgY2xvc2VkIHByb21pc2Ugc2hvdWxkIGNoYW5nZSBpZGVudGl0eScpOwogCi0gICAgICByZXR1
cm4gcHJvbWlzZV9yZWplY3RzKHQsIG5ldyBUeXBlRXJyb3IoKSwgY2xvc2VkQWZ0ZXIpOworICAg
ICAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19qcyh0LCBUeXBlRXJyb3IsIGNsb3NlZEFmdGVyKTsK
ICAgICB9KTsKIAogICB9LCBsYWJlbCArICc6IHJlbGVhc2luZyB0aGUgbG9jayBzaG91bGQgY2F1
c2UgY2xvc2VkIHRvIHJlamVjdCBhbmQgY2hhbmdlIGlkZW50aXR5Jyk7CkBAIC00NDQsNyArNDQ3
LDcgQEAgc2VsZi50ZW1wbGF0ZWRSU0Vycm9yZWRSZWFkZXIgPSAobGFiZWwsIGZhY3RvcnksIGVy
cm9yKSA9PiB7CiAgIHByb21pc2VfdGVzdCh0ID0+IHsKIAogICAgIGNvbnN0IHJlYWRlciA9IGZh
Y3RvcnkoKS5yZWFkZXI7Ci0gICAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0LCBlcnJvciwgcmVh
ZGVyLnJlYWQoKSk7CisgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9y
LCByZWFkZXIucmVhZCgpKTsKIAogICB9LCBsYWJlbCArICc6IHJlYWQoKSBzaG91bGQgcmVqZWN0
IHdpdGggdGhlIGVycm9yJyk7CiB9OwpAQCAtNTk5LDkgKzYwMiw5IEBAIHNlbGYudGVtcGxhdGVk
UlNUd29DaHVua3NDbG9zZWRSZWFkZXIgPSBmdW5jdGlvbiAobGFiZWwsIGZhY3RvcnksIGNodW5r
cykgewogICAgIHJlYWRlci5yZWxlYXNlTG9jaygpOwogCiAgICAgcmV0dXJuIFByb21pc2UuYWxs
KFsKLSAgICAgIHByb21pc2VfcmVqZWN0cyh0LCBuZXcgVHlwZUVycm9yKCksIHJlYWRlci5yZWFk
KCkpLAotICAgICAgcHJvbWlzZV9yZWplY3RzKHQsIG5ldyBUeXBlRXJyb3IoKSwgcmVhZGVyLnJl
YWQoKSksCi0gICAgICBwcm9taXNlX3JlamVjdHModCwgbmV3IFR5cGVFcnJvcigpLCByZWFkZXIu
cmVhZCgpKQorICAgICAgcHJvbWlzZV9yZWplY3RzX2pzKHQsIFR5cGVFcnJvciwgcmVhZGVyLnJl
YWQoKSksCisgICAgICBwcm9taXNlX3JlamVjdHNfanModCwgVHlwZUVycm9yLCByZWFkZXIucmVh
ZCgpKSwKKyAgICAgIHByb21pc2VfcmVqZWN0c19qcyh0LCBUeXBlRXJyb3IsIHJlYWRlci5yZWFk
KCkpCiAgICAgXSk7CiAKICAgfSwgbGFiZWwgKyAnOiByZWxlYXNpbmcgdGhlIGxvY2sgc2hvdWxk
IGNhdXNlIGZ1cnRoZXIgcmVhZCgpIGNhbGxzIHRvIHJlamVjdCB3aXRoIGEgVHlwZUVycm9yJyk7
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMvcmVzb3VyY2VzL3JzLXV0aWxzLmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3Jlc291cmNlcy9ycy11dGlscy5qcwppbmRleCAw
ZjMyMjJlMjNjYWI3YTBhNmQ2MTc3MTE2Yzk5ZWQ5MGRmOTU3OTc3Li5hNjIwMTJjNmYxY2FlODcz
MmUwZjE0YzliMjI1Zjc0YTQ2YzdjN2Q4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVzb3VyY2VzL3JzLXV0aWxzLmpzCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9y
ZXNvdXJjZXMvcnMtdXRpbHMuanMKQEAgLTEwNiw3ICsxMDYsNyBAQAogCiAgICAgICB0aGlzLl9l
eGVjID0gZiA9PiBmKCk7CiAgICAgICBpZiAoYXN5bmMpIHsKLSAgICAgICAgdGhpcy5fZXhlYyA9
IGYgPT4gc2V0VGltZW91dChmLCAwKTsKKyAgICAgICAgdGhpcy5fZXhlYyA9IGYgPT4gc3RlcF90
aW1lb3V0KGYsIDApOwogICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3Jlc291cmNlcy90ZXN0LXV0
aWxzLmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJl
YW1zL3Jlc291cmNlcy90ZXN0LXV0aWxzLmpzCmluZGV4IDg3MWFiNDlmYTgxZGJmNjc0ZWZjZGE5
NGRlNTdiYmE5MzZmNGY4N2IuLjA1OTM5ODBlMTA1NWI1NmIzNDIxOGEyMWQ4Zjc2ODcxMjlhODRk
NWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy9yZXNvdXJjZXMvdGVzdC11dGlscy5qcworKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVzb3VyY2VzL3Rlc3QtdXRpbHMu
anMKQEAgLTMsNyArMyw3IEBACiBzZWxmLmdldHRlclJlamVjdHMgPSAodCwgb2JqLCBnZXR0ZXJO
YW1lLCB0YXJnZXQpID0+IHsKICAgY29uc3QgZ2V0dGVyID0gT2JqZWN0LmdldE93blByb3BlcnR5
RGVzY3JpcHRvcihvYmosIGdldHRlck5hbWUpLmdldDsKIAotICByZXR1cm4gcHJvbWlzZV9yZWpl
Y3RzKHQsIG5ldyBUeXBlRXJyb3IoKSwgZ2V0dGVyLmNhbGwodGFyZ2V0KSwgZ2V0dGVyTmFtZSAr
ICcgc2hvdWxkIHJlamVjdCB3aXRoIGEgVHlwZUVycm9yJyk7CisgIHJldHVybiBwcm9taXNlX3Jl
amVjdHNfanModCwgVHlwZUVycm9yLCBnZXR0ZXIuY2FsbCh0YXJnZXQpLCBnZXR0ZXJOYW1lICsg
JyBzaG91bGQgcmVqZWN0IHdpdGggYSBUeXBlRXJyb3InKTsKIH07CiAKIHNlbGYuZ2V0dGVyUmVq
ZWN0c0ZvckFsbCA9ICh0LCBvYmosIGdldHRlck5hbWUsIHRhcmdldHMpID0+IHsKQEAgLTEzLDcg
KzEzLDcgQEAgc2VsZi5nZXR0ZXJSZWplY3RzRm9yQWxsID0gKHQsIG9iaiwgZ2V0dGVyTmFtZSwg
dGFyZ2V0cykgPT4gewogc2VsZi5tZXRob2RSZWplY3RzID0gKHQsIG9iaiwgbWV0aG9kTmFtZSwg
dGFyZ2V0LCBhcmdzKSA9PiB7CiAgIGNvbnN0IG1ldGhvZCA9IG9ialttZXRob2ROYW1lXTsKIAot
ICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHQsIG5ldyBUeXBlRXJyb3IoKSwgbWV0aG9kLmFwcGx5
KHRhcmdldCwgYXJncyksCisgIHJldHVybiBwcm9taXNlX3JlamVjdHNfanModCwgVHlwZUVycm9y
LCBtZXRob2QuYXBwbHkodGFyZ2V0LCBhcmdzKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBt
ZXRob2ROYW1lICsgJyBzaG91bGQgcmVqZWN0IHdpdGggYSBUeXBlRXJyb3InKTsKIH07CiAKQEAg
LTI0LDcgKzI0LDcgQEAgc2VsZi5tZXRob2RSZWplY3RzRm9yQWxsID0gKHQsIG9iaiwgbWV0aG9k
TmFtZSwgdGFyZ2V0cywgYXJncykgPT4gewogc2VsZi5nZXR0ZXJUaHJvd3MgPSAob2JqLCBnZXR0
ZXJOYW1lLCB0YXJnZXQpID0+IHsKICAgY29uc3QgZ2V0dGVyID0gT2JqZWN0LmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcihvYmosIGdldHRlck5hbWUpLmdldDsKIAotICBhc3NlcnRfdGhyb3dzKG5l
dyBUeXBlRXJyb3IoKSwgKCkgPT4gZ2V0dGVyLmNhbGwodGFyZ2V0KSwgZ2V0dGVyTmFtZSArICcg
c2hvdWxkIHRocm93IGEgVHlwZUVycm9yJyk7CisgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9y
LCAoKSA9PiBnZXR0ZXIuY2FsbCh0YXJnZXQpLCBnZXR0ZXJOYW1lICsgJyBzaG91bGQgdGhyb3cg
YSBUeXBlRXJyb3InKTsKIH07CiAKIHNlbGYuZ2V0dGVyVGhyb3dzRm9yQWxsID0gKG9iaiwgZ2V0
dGVyTmFtZSwgdGFyZ2V0cykgPT4gewpAQCAtMzUsNyArMzUsNyBAQCBzZWxmLm1ldGhvZFRocm93
cyA9IChvYmosIG1ldGhvZE5hbWUsIHRhcmdldCwgYXJncykgPT4gewogICBjb25zdCBtZXRob2Qg
PSBvYmpbbWV0aG9kTmFtZV07CiAgIGFzc2VydF9lcXVhbHModHlwZW9mIG1ldGhvZCwgJ2Z1bmN0
aW9uJywgbWV0aG9kTmFtZSArICcgc2hvdWxkIGV4aXN0Jyk7CiAKLSAgYXNzZXJ0X3Rocm93cyhu
ZXcgVHlwZUVycm9yKCksICgpID0+IG1ldGhvZC5hcHBseSh0YXJnZXQsIGFyZ3MpLCBtZXRob2RO
YW1lICsgJyBzaG91bGQgdGhyb3cgYSBUeXBlRXJyb3InKTsKKyAgYXNzZXJ0X3Rocm93c19qcyhU
eXBlRXJyb3IsICgpID0+IG1ldGhvZC5hcHBseSh0YXJnZXQsIGFyZ3MpLCBtZXRob2ROYW1lICsg
JyBzaG91bGQgdGhyb3cgYSBUeXBlRXJyb3InKTsKIH07CiAKIHNlbGYubWV0aG9kVGhyb3dzRm9y
QWxsID0gKG9iaiwgbWV0aG9kTmFtZSwgdGFyZ2V0cywgYXJncykgPT4gewpAQCAtNDMsMTMgKzQz
LDE0IEBAIHNlbGYubWV0aG9kVGhyb3dzRm9yQWxsID0gKG9iaiwgbWV0aG9kTmFtZSwgdGFyZ2V0
cywgYXJncykgPT4gewogfTsKIAogc2VsZi5jb25zdHJ1Y3RvclRocm93c0ZvckFsbCA9IChjb25z
dHJ1Y3RvciwgZmlyc3RBcmdzKSA9PiB7Ci0gIGZpcnN0QXJncy5mb3JFYWNoKGZpcnN0QXJnID0+
IGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBuZXcgY29uc3RydWN0b3IoZmly
c3RBcmcpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdj
b25zdHJ1Y3RvciBzaG91bGQgdGhyb3cgYSBUeXBlRXJyb3InKSk7CisgIGZpcnN0QXJncy5mb3JF
YWNoKGZpcnN0QXJnID0+IGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiBuZXcgY29u
c3RydWN0b3IoZmlyc3RBcmcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICdjb25zdHJ1Y3RvciBzaG91bGQgdGhyb3cgYSBUeXBlRXJyb3InKSk7CiB9
OwogCiBzZWxmLmdhcmJhZ2VDb2xsZWN0ID0gKCkgPT4gewogICBpZiAoc2VsZi5nYykgewogICAg
IC8vIFVzZSAtLWV4cG9zZV9nYyBmb3IgVjggKGFuZCBOb2RlLmpzKQorICAgIC8vIHRvIHBhc3Mg
dGhpcyBmbGFnIGF0IGNocm9tZSBsYXVuY2ggdXNlOiAtLWpzLWZsYWdzPSItLWV4cG9zZS1nYyIK
ICAgICAvLyBFeHBvc2VkIGluIFNwaWRlck1vbmtleSBzaGVsbCBhcyB3ZWxsCiAgICAgc2VsZi5n
YygpOwogICB9IGVsc2UgaWYgKHNlbGYuR0NDb250cm9sbGVyKSB7CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVzb3VyY2Vz
L3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL3Jlc291cmNlcy93M2MtaW1wb3J0LmxvZwppbmRleCA3MjIyMGQxNWVkYjdl
YjhkNTJkMzY0MDU2MjkxZjNmODY1OWY0YzA3Li4yMDE5YjZjZmRlNDkyZmQwMmQ5OWJhMDA1ZWEy
NTI1MDBmNDBlM2JkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVzb3VyY2VzL3czYy1pbXBvcnQubG9nCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZXNvdXJjZXMv
dzNjLWltcG9ydC5sb2cKQEAgLTEsNyArMSw3IEBACiBUaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rv
cnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KIERvIE5PVCBtb2RpZnkg
dGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgogSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCBy
ZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzCisJaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQK
IAogVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQg
dG8gcmVpbXBvcnQKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1zL2JhY2twcmVzc3VyZS5hbnkt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1zL2JhY2twcmVzc3VyZS5hbnktZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmVjMDdjN2I5NzI4NTFkZDljN2QyNjg4NWYxNTU4MjY5NzljNWE5NzEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3N0cmVhbXMvdHJhbnNmb3JtLXN0cmVhbXMvYmFja3ByZXNzdXJlLmFueS1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwxNiBAQAorCitGQUlMIGJhY2twcmVzc3VyZSBhbGxvd3Mgbm8gdHJhbnNm
b3JtcyB3aXRoIGEgZGVmYXVsdCBpZGVudGl0eSB0cmFuc2Zvcm0gYW5kIG5vIHJlYWRlciBDYW4n
dCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgYmFja3ByZXNzdXJlIG9ubHkg
YWxsb3dzIG9uZSB0cmFuc2Zvcm0oKSB3aXRoIGEgaWRlbnRpdHkgdHJhbnNmb3JtIHdpdGggYSBy
ZWFkYWJsZSBIV00gb2YgMSBhbmQgbm8gcmVhZGVyIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5z
Zm9ybVN0cmVhbQorRkFJTCB0cmFuc2Zvcm0oKSBzaG91bGQga2VlcCBiZWluZyBjYWxsZWQgYXMg
bG9uZyBhcyB0aGVyZSBpcyBubyBiYWNrcHJlc3N1cmUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJh
bnNmb3JtU3RyZWFtCitGQUlMIHdyaXRlcyBzaG91bGQgcmVzb2x2ZSBhcyBzb29uIGFzIHRyYW5z
Zm9ybSBjb21wbGV0ZXMgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitGQUlM
IGNhbGxpbmcgcHVsbCgpIGJlZm9yZSB0aGUgZmlyc3Qgd3JpdGUoKSB3aXRoIGJhY2twcmVzc3Vy
ZSBzaG91bGQgd29yayBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwg
dHJhbnNmb3JtKCkgc2hvdWxkIGJlIGFibGUgdG8gcmVhZCB0aGUgY2h1bmsgaXQganVzdCBlbnF1
ZXVlZCBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgYmxvY2tpbmcg
dHJhbnNmb3JtKCkgc2hvdWxkIGNhdXNlIGJhY2twcmVzc3VyZSBDYW4ndCBmaW5kIHZhcmlhYmxl
OiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgd3JpdGVyLmNsb3NlZCBzaG91bGQgcmVzb2x2ZSBhZnRl
ciByZWFkYWJsZSBpcyBjYW5jZWxlZCBkdXJpbmcgc3RhcnQgQ2FuJ3QgZmluZCB2YXJpYWJsZTog
VHJhbnNmb3JtU3RyZWFtCitGQUlMIHdyaXRlci5jbG9zZWQgc2hvdWxkIHJlc29sdmUgYWZ0ZXIg
cmVhZGFibGUgaXMgY2FuY2VsZWQgd2l0aCBiYWNrcHJlc3N1cmUgQ2FuJ3QgZmluZCB2YXJpYWJs
ZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIHdyaXRlci5jbG9zZWQgc2hvdWxkIHJlc29sdmUgYWZ0
ZXIgcmVhZGFibGUgaXMgY2FuY2VsZWQgd2l0aCBubyBiYWNrcHJlc3N1cmUgQ2FuJ3QgZmluZCB2
YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIGNhbmNlbGxpbmcgdGhlIHJlYWRhYmxlIHNo
b3VsZCBjYXVzZSBhIHBlbmRpbmcgd3JpdGUgdG8gcmVzb2x2ZSBDYW4ndCBmaW5kIHZhcmlhYmxl
OiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgY2FuY2VsbGluZyB0aGUgcmVhZGFibGUgc2lkZSBvZiBh
IFRyYW5zZm9ybVN0cmVhbSBzaG91bGQgYWJvcnQgYW4gZW1wdHkgcGlwZSBDYW4ndCBmaW5kIHZh
cmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgY2FuY2VsbGluZyB0aGUgcmVhZGFibGUgc2lk
ZSBvZiBhIFRyYW5zZm9ybVN0cmVhbSBzaG91bGQgYWJvcnQgYW4gZW1wdHkgcGlwZSBhZnRlciBz
dGFydHVwIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCBjYW5jZWxs
aW5nIHRoZSByZWFkYWJsZSBzaWRlIG9mIGEgVHJhbnNmb3JtU3RyZWFtIHNob3VsZCBhYm9ydCBh
IGZ1bGwgcGlwZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
L3RyYW5zZm9ybS1zdHJlYW1zL2JhY2twcmVzc3VyZS5hbnkuaHRtbCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy9i
YWNrcHJlc3N1cmUuYW55Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjM4MjkxMzUyOGU2OTNiM2E1ZDU2YzY2
MGE0NTA2MDk4MGI1NDhjMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy9iYWNrcHJl
c3N1cmUuYW55Lmh0bWwKQEAgLTAsMCArMSBAQAorPCEtLSBUaGlzIGZpbGUgaXMgcmVxdWlyZWQg
Zm9yIFdlYktpdCB0ZXN0IGluZnJhc3RydWN0dXJlIHRvIHJ1biB0aGUgdGVtcGxhdGVkIHRlc3Qg
LS0+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1z
L2JhY2twcmVzc3VyZS5hbnkuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMvdHJhbnNmb3JtLXN0cmVhbXMvYmFja3ByZXNzdXJlLmFueS5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42NGM5ZDA5MzBlZDJmMjZhZjc3NWZhMGNiNGJjNThlZGFjN2ZmYWNlCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1zL2JhY2twcmVzc3VyZS5hbnkuanMKQEAgLTAsMCAr
MSwxOTUgQEAKKy8vIE1FVEE6IGdsb2JhbD13aW5kb3csd29ya2VyLGpzc2hlbGwKKy8vIE1FVEE6
IHNjcmlwdD0uLi9yZXNvdXJjZXMvcmVjb3JkaW5nLXN0cmVhbXMuanMKKy8vIE1FVEE6IHNjcmlw
dD0uLi9yZXNvdXJjZXMvdGVzdC11dGlscy5qcworJ3VzZSBzdHJpY3QnOworCitjb25zdCBlcnJv
cjEgPSBuZXcgRXJyb3IoJ2Vycm9yMSBtZXNzYWdlJyk7CitlcnJvcjEubmFtZSA9ICdlcnJvcjEn
OworCitwcm9taXNlX3Rlc3QoKCkgPT4geworICBjb25zdCB0cyA9IHJlY29yZGluZ1RyYW5zZm9y
bVN0cmVhbSgpOworICBjb25zdCB3cml0ZXIgPSB0cy53cml0YWJsZS5nZXRXcml0ZXIoKTsKKyAg
Ly8gVGhpcyBjYWxsIG5ldmVyIHJlc29sdmVzLgorICB3cml0ZXIud3JpdGUoJ2EnKTsKKyAgcmV0
dXJuIGZsdXNoQXN5bmNFdmVudHMoKS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfYXJyYXlfZXF1
YWxzKHRzLmV2ZW50cywgW10sICd0cmFuc2Zvcm0gc2hvdWxkIG5vdCBiZSBjYWxsZWQnKTsKKyAg
fSk7Cit9LCAnYmFja3ByZXNzdXJlIGFsbG93cyBubyB0cmFuc2Zvcm1zIHdpdGggYSBkZWZhdWx0
IGlkZW50aXR5IHRyYW5zZm9ybSBhbmQgbm8gcmVhZGVyJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9
PiB7CisgIGNvbnN0IHRzID0gcmVjb3JkaW5nVHJhbnNmb3JtU3RyZWFtKHt9LCB1bmRlZmluZWQs
IHsgaGlnaFdhdGVyTWFyazogMSB9KTsKKyAgY29uc3Qgd3JpdGVyID0gdHMud3JpdGFibGUuZ2V0
V3JpdGVyKCk7CisgIC8vIFRoaXMgY2FsbCB0byB3cml0ZSgpIHJlc29sdmVzIGFzeW5jaHJvbm91
c2x5LgorICB3cml0ZXIud3JpdGUoJ2EnKTsKKyAgLy8gVGhpcyBjYWxsIHRvIHdyaXRlKCkgd2Fp
dHMgZm9yIGJhY2twcmVzc3VyZSB0aGF0IGlzIG5ldmVyIHJlbGlldmVkIGFuZCBuZXZlciBjYWxs
cyB0cmFuc2Zvcm0oKS4KKyAgd3JpdGVyLndyaXRlKCdiJyk7CisgIHJldHVybiBmbHVzaEFzeW5j
RXZlbnRzKCkudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh0cy5ldmVudHMs
IFsndHJhbnNmb3JtJywgJ2EnXSwgJ3RyYW5zZm9ybSBzaG91bGQgYmUgY2FsbGVkIG9uY2UnKTsK
KyAgfSk7Cit9LCAnYmFja3ByZXNzdXJlIG9ubHkgYWxsb3dzIG9uZSB0cmFuc2Zvcm0oKSB3aXRo
IGEgaWRlbnRpdHkgdHJhbnNmb3JtIHdpdGggYSByZWFkYWJsZSBIV00gb2YgMSBhbmQgbm8gcmVh
ZGVyJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisgIC8vIFdpdGhvdXQgYSB0cmFuc2Zvcm0o
KSBpbXBsZW1lbnRhdGlvbiwgcmVjb3JkaW5nVHJhbnNmb3JtU3RyZWFtKCkgbmV2ZXIgZW5xdWV1
ZXMgYW55dGhpbmcuCisgIGNvbnN0IHRzID0gcmVjb3JkaW5nVHJhbnNmb3JtU3RyZWFtKHsKKyAg
ICB0cmFuc2Zvcm0oKSB7CisgICAgICAvLyBEaXNjYXJkIGFsbCBjaHVua3MuIEFzIGEgcmVzdWx0
LCB0aGUgcmVhZGFibGUgc2lkZSBpcyBuZXZlciBmdWxsIGVub3VnaCB0byBleGVydCBiYWNrcHJl
c3N1cmUgYW5kIHRyYW5zZm9ybSgpCisgICAgICAvLyBrZWVwcyBiZWluZyBjYWxsZWQuCisgICAg
fQorICB9LCB1bmRlZmluZWQsIHsgaGlnaFdhdGVyTWFyazogMSB9KTsKKyAgY29uc3Qgd3JpdGVy
ID0gdHMud3JpdGFibGUuZ2V0V3JpdGVyKCk7CisgIGNvbnN0IHdyaXRlUHJvbWlzZXMgPSBbXTsK
KyAgZm9yIChsZXQgaSA9IDA7IGkgPCA0OyArK2kpIHsKKyAgICB3cml0ZVByb21pc2VzLnB1c2go
d3JpdGVyLndyaXRlKGkpKTsKKyAgfQorICByZXR1cm4gUHJvbWlzZS5hbGwod3JpdGVQcm9taXNl
cykudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh0cy5ldmVudHMsIFsndHJh
bnNmb3JtJywgMCwgJ3RyYW5zZm9ybScsIDEsICd0cmFuc2Zvcm0nLCAyLCAndHJhbnNmb3JtJywg
M10sCisgICAgICAgICAgICAgICAgICAgICAgICAnYWxsIDQgZXZlbnRzIHNob3VsZCBiZSB0cmFu
c2Zvcm1lZCcpOworICB9KTsKK30sICd0cmFuc2Zvcm0oKSBzaG91bGQga2VlcCBiZWluZyBjYWxs
ZWQgYXMgbG9uZyBhcyB0aGVyZSBpcyBubyBiYWNrcHJlc3N1cmUnKTsKKworcHJvbWlzZV90ZXN0
KCgpID0+IHsKKyAgY29uc3QgdHMgPSBuZXcgVHJhbnNmb3JtU3RyZWFtKHt9LCB1bmRlZmluZWQs
IHsgaGlnaFdhdGVyTWFyazogMSB9KTsKKyAgY29uc3Qgd3JpdGVyID0gdHMud3JpdGFibGUuZ2V0
V3JpdGVyKCk7CisgIGNvbnN0IHJlYWRlciA9IHRzLnJlYWRhYmxlLmdldFJlYWRlcigpOworICBj
b25zdCBldmVudHMgPSBbXTsKKyAgY29uc3Qgd3JpdGVyUHJvbWlzZXMgPSBbCisgICAgd3JpdGVy
LndyaXRlKCdhJykudGhlbigoKSA9PiBldmVudHMucHVzaCgnYScpKSwKKyAgICB3cml0ZXIud3Jp
dGUoJ2InKS50aGVuKCgpID0+IGV2ZW50cy5wdXNoKCdiJykpLAorICAgIHdyaXRlci5jbG9zZSgp
LnRoZW4oKCkgPT4gZXZlbnRzLnB1c2goJ2Nsb3NlZCcpKV07CisgIHJldHVybiBkZWxheSgwKS50
aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGV2ZW50cywgWydhJ10sICd0aGUg
Zmlyc3Qgd3JpdGUgc2hvdWxkIGhhdmUgcmVzb2x2ZWQnKTsKKyAgICByZXR1cm4gcmVhZGVyLnJl
YWQoKTsKKyAgfSkudGhlbigoeyB2YWx1ZSwgZG9uZSB9KSA9PiB7CisgICAgYXNzZXJ0X2ZhbHNl
KGRvbmUsICdkb25lIHNob3VsZCBub3QgYmUgdHJ1ZScpOworICAgIGFzc2VydF9lcXVhbHMoJ2En
LCB2YWx1ZSwgJ3ZhbHVlIHNob3VsZCBiZSAiYSInKTsKKyAgICByZXR1cm4gZGVsYXkoMCk7Cisg
IH0pLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9hcnJheV9lcXVhbHMoZXZlbnRzLCBbJ2EnLCAn
YicsICdjbG9zZWQnXSwgJ2JvdGggd3JpdGVzIGFuZCBjbG9zZSgpIHNob3VsZCBoYXZlIHJlc29s
dmVkJyk7CisgICAgcmV0dXJuIHJlYWRlci5yZWFkKCk7CisgIH0pLnRoZW4oKHsgdmFsdWUsIGRv
bmUgfSkgPT4geworICAgIGFzc2VydF9mYWxzZShkb25lLCAnZG9uZSBzaG91bGQgc3RpbGwgbm90
IGJlIHRydWUnKTsKKyAgICBhc3NlcnRfZXF1YWxzKCdiJywgdmFsdWUsICd2YWx1ZSBzaG91bGQg
YmUgImIiJyk7CisgICAgcmV0dXJuIHJlYWRlci5yZWFkKCk7CisgIH0pLnRoZW4oKHsgZG9uZSB9
KSA9PiB7CisgICAgYXNzZXJ0X3RydWUoZG9uZSwgJ2RvbmUgc2hvdWxkIGJlIHRydWUnKTsKKyAg
ICByZXR1cm4gd3JpdGVyUHJvbWlzZXM7CisgIH0pOworfSwgJ3dyaXRlcyBzaG91bGQgcmVzb2x2
ZSBhcyBzb29uIGFzIHRyYW5zZm9ybSBjb21wbGV0ZXMnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+
IHsKKyAgY29uc3QgdHMgPSBuZXcgVHJhbnNmb3JtU3RyZWFtKHVuZGVmaW5lZCwgdW5kZWZpbmVk
LCB7IGhpZ2hXYXRlck1hcms6IDAgfSk7CisgIGNvbnN0IHdyaXRlciA9IHRzLndyaXRhYmxlLmdl
dFdyaXRlcigpOworICBjb25zdCByZWFkZXIgPSB0cy5yZWFkYWJsZS5nZXRSZWFkZXIoKTsKKyAg
Y29uc3QgcmVhZFByb21pc2UgPSByZWFkZXIucmVhZCgpOworICB3cml0ZXIud3JpdGUoJ2EnKTsK
KyAgcmV0dXJuIHJlYWRQcm9taXNlLnRoZW4oKHsgdmFsdWUsIGRvbmUgfSkgPT4geworICAgIGFz
c2VydF9mYWxzZShkb25lLCAnbm90IGRvbmUnKTsKKyAgICBhc3NlcnRfZXF1YWxzKHZhbHVlLCAn
YScsICd2YWx1ZSBzaG91bGQgYmUgImEiJyk7CisgIH0pOworfSwgJ2NhbGxpbmcgcHVsbCgpIGJl
Zm9yZSB0aGUgZmlyc3Qgd3JpdGUoKSB3aXRoIGJhY2twcmVzc3VyZSBzaG91bGQgd29yaycpOwor
Citwcm9taXNlX3Rlc3QoKCkgPT4geworICBsZXQgcmVhZGVyOworICBjb25zdCB0cyA9IHJlY29y
ZGluZ1RyYW5zZm9ybVN0cmVhbSh7CisgICAgdHJhbnNmb3JtKGNodW5rLCBjb250cm9sbGVyKSB7
CisgICAgICBjb250cm9sbGVyLmVucXVldWUoY2h1bmspOworICAgICAgcmV0dXJuIHJlYWRlci5y
ZWFkKCk7CisgICAgfQorICB9LCB1bmRlZmluZWQsIHsgaGlnaFdhdGVyTWFyazogMSB9KTsKKyAg
Y29uc3Qgd3JpdGVyID0gdHMud3JpdGFibGUuZ2V0V3JpdGVyKCk7CisgIHJlYWRlciA9IHRzLnJl
YWRhYmxlLmdldFJlYWRlcigpOworICByZXR1cm4gd3JpdGVyLndyaXRlKCdhJyk7Cit9LCAndHJh
bnNmb3JtKCkgc2hvdWxkIGJlIGFibGUgdG8gcmVhZCB0aGUgY2h1bmsgaXQganVzdCBlbnF1ZXVl
ZCcpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworICBsZXQgcmVzb2x2ZVRyYW5zZm9ybTsKKyAg
Y29uc3QgdHJhbnNmb3JtUHJvbWlzZSA9IG5ldyBQcm9taXNlKHJlc29sdmUgPT4geworICAgIHJl
c29sdmVUcmFuc2Zvcm0gPSByZXNvbHZlOworICB9KTsKKyAgY29uc3QgdHMgPSByZWNvcmRpbmdU
cmFuc2Zvcm1TdHJlYW0oeworICAgIHRyYW5zZm9ybSgpIHsKKyAgICAgIHJldHVybiB0cmFuc2Zv
cm1Qcm9taXNlOworICAgIH0KKyAgfSwgdW5kZWZpbmVkLCBuZXcgQ291bnRRdWV1aW5nU3RyYXRl
Z3koeyBoaWdoV2F0ZXJNYXJrOiBJbmZpbml0eSB9KSk7CisgIGNvbnN0IHdyaXRlciA9IHRzLndy
aXRhYmxlLmdldFdyaXRlcigpOworICBhc3NlcnRfZXF1YWxzKHdyaXRlci5kZXNpcmVkU2l6ZSwg
MSwgJ2Rlc2lyZWRTaXplIHNob3VsZCBiZSAxJyk7CisgIHJldHVybiBkZWxheSgwKS50aGVuKCgp
ID0+IHsKKyAgICB3cml0ZXIud3JpdGUoJ2EnKTsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHRz
LmV2ZW50cywgWyd0cmFuc2Zvcm0nLCAnYSddKTsKKyAgICBhc3NlcnRfZXF1YWxzKHdyaXRlci5k
ZXNpcmVkU2l6ZSwgMCwgJ2Rlc2lyZWRTaXplIHNob3VsZCBiZSAwJyk7CisgICAgcmV0dXJuIGZs
dXNoQXN5bmNFdmVudHMoKTsKKyAgfSkudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X2VxdWFscyh3
cml0ZXIuZGVzaXJlZFNpemUsIDAsICdkZXNpcmVkU2l6ZSBzaG91bGQgc3RpbGwgYmUgMCcpOwor
ICAgIHJlc29sdmVUcmFuc2Zvcm0oKTsKKyAgICByZXR1cm4gZGVsYXkoMCk7CisgIH0pLnRoZW4o
KCkgPT4geworICAgIGFzc2VydF9lcXVhbHMod3JpdGVyLmRlc2lyZWRTaXplLCAxLCAnZGVzaXJl
ZFNpemUgc2hvdWxkIGJlIDEnKTsKKyAgfSk7Cit9LCAnYmxvY2tpbmcgdHJhbnNmb3JtKCkgc2hv
dWxkIGNhdXNlIGJhY2twcmVzc3VyZScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIGNvbnN0
IHRzID0gbmV3IFRyYW5zZm9ybVN0cmVhbSgpOworICB0cy5yZWFkYWJsZS5jYW5jZWwoZXJyb3Ix
KTsKKyAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMSwgdHMud3JpdGFi
bGUuZ2V0V3JpdGVyKCkuY2xvc2VkLCAnY2xvc2VkIHNob3VsZCByZWplY3QnKTsKK30sICd3cml0
ZXIuY2xvc2VkIHNob3VsZCByZXNvbHZlIGFmdGVyIHJlYWRhYmxlIGlzIGNhbmNlbGVkIGR1cmlu
ZyBzdGFydCcpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIGNvbnN0IHRzID0gbmV3IFRyYW5z
Zm9ybVN0cmVhbSh7fSwgdW5kZWZpbmVkLCB7IGhpZ2hXYXRlck1hcms6IDAgfSk7CisgIHJldHVy
biBkZWxheSgwKS50aGVuKCgpID0+IHsKKyAgICB0cy5yZWFkYWJsZS5jYW5jZWwoZXJyb3IxKTsK
KyAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCB0cy53cml0YWJs
ZS5nZXRXcml0ZXIoKS5jbG9zZWQsICdjbG9zZWQgc2hvdWxkIHJlamVjdCcpOworICB9KTsKK30s
ICd3cml0ZXIuY2xvc2VkIHNob3VsZCByZXNvbHZlIGFmdGVyIHJlYWRhYmxlIGlzIGNhbmNlbGVk
IHdpdGggYmFja3ByZXNzdXJlJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgY29uc3QgdHMg
PSBuZXcgVHJhbnNmb3JtU3RyZWFtKHt9LCB1bmRlZmluZWQsIHsgaGlnaFdhdGVyTWFyazogMSB9
KTsKKyAgcmV0dXJuIGRlbGF5KDApLnRoZW4oKCkgPT4geworICAgIHRzLnJlYWRhYmxlLmNhbmNl
bChlcnJvcjEpOworICAgIHJldHVybiBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEs
IHRzLndyaXRhYmxlLmdldFdyaXRlcigpLmNsb3NlZCwgJ2Nsb3NlZCBzaG91bGQgcmVqZWN0Jyk7
CisgIH0pOworfSwgJ3dyaXRlci5jbG9zZWQgc2hvdWxkIHJlc29sdmUgYWZ0ZXIgcmVhZGFibGUg
aXMgY2FuY2VsZWQgd2l0aCBubyBiYWNrcHJlc3N1cmUnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+
IHsKKyAgY29uc3QgdHMgPSBuZXcgVHJhbnNmb3JtU3RyZWFtKHt9LCB1bmRlZmluZWQsIHsgaGln
aFdhdGVyTWFyazogMSB9KTsKKyAgY29uc3Qgd3JpdGVyID0gdHMud3JpdGFibGUuZ2V0V3JpdGVy
KCk7CisgIHJldHVybiBkZWxheSgwKS50aGVuKCgpID0+IHsKKyAgICBjb25zdCB3cml0ZVByb21p
c2UgPSB3cml0ZXIud3JpdGUoJ2EnKTsKKyAgICB0cy5yZWFkYWJsZS5jYW5jZWwoZXJyb3IxKTsK
KyAgICByZXR1cm4gd3JpdGVQcm9taXNlOworICB9KTsKK30sICdjYW5jZWxsaW5nIHRoZSByZWFk
YWJsZSBzaG91bGQgY2F1c2UgYSBwZW5kaW5nIHdyaXRlIHRvIHJlc29sdmUnKTsKKworcHJvbWlz
ZV90ZXN0KHQgPT4geworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSgpOworICBjb25z
dCB0cyA9IG5ldyBUcmFuc2Zvcm1TdHJlYW0oKTsKKyAgY29uc3QgcGlwZVByb21pc2UgPSBycy5w
aXBlVG8odHMud3JpdGFibGUpOworICB0cy5yZWFkYWJsZS5jYW5jZWwoZXJyb3IxKTsKKyAgcmV0
dXJuIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMSwgcGlwZVByb21pc2UsICdwcm9t
aXNlIHJldHVybmVkIGZyb20gcGlwZVRvKCkgc2hvdWxkIGJlIHJlamVjdGVkJyk7Cit9LCAnY2Fu
Y2VsbGluZyB0aGUgcmVhZGFibGUgc2lkZSBvZiBhIFRyYW5zZm9ybVN0cmVhbSBzaG91bGQgYWJv
cnQgYW4gZW1wdHkgcGlwZScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIGNvbnN0IHJzID0g
bmV3IFJlYWRhYmxlU3RyZWFtKCk7CisgIGNvbnN0IHRzID0gbmV3IFRyYW5zZm9ybVN0cmVhbSgp
OworICBjb25zdCBwaXBlUHJvbWlzZSA9IHJzLnBpcGVUbyh0cy53cml0YWJsZSk7CisgIHJldHVy
biBkZWxheSgwKS50aGVuKCgpID0+IHsKKyAgICB0cy5yZWFkYWJsZS5jYW5jZWwoZXJyb3IxKTsK
KyAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCBwaXBlUHJvbWlz
ZSwgJ3Byb21pc2UgcmV0dXJuZWQgZnJvbSBwaXBlVG8oKSBzaG91bGQgYmUgcmVqZWN0ZWQnKTsK
KyAgfSk7Cit9LCAnY2FuY2VsbGluZyB0aGUgcmVhZGFibGUgc2lkZSBvZiBhIFRyYW5zZm9ybVN0
cmVhbSBzaG91bGQgYWJvcnQgYW4gZW1wdHkgcGlwZSBhZnRlciBzdGFydHVwJyk7CisKK3Byb21p
c2VfdGVzdCh0ID0+IHsKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0
YXJ0KGNvbnRyb2xsZXIpIHsKKyAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYScpOworICAgICAg
Y29udHJvbGxlci5lbnF1ZXVlKCdiJyk7CisgICAgICBjb250cm9sbGVyLmVucXVldWUoJ2MnKTsK
KyAgICB9CisgIH0pOworICBjb25zdCB0cyA9IG5ldyBUcmFuc2Zvcm1TdHJlYW0oKTsKKyAgY29u
c3QgcGlwZVByb21pc2UgPSBycy5waXBlVG8odHMud3JpdGFibGUpOworICAvLyBBbGxvdyBkYXRh
IHRvIGZsb3cgaW50byB0aGUgcGlwZS4KKyAgcmV0dXJuIGRlbGF5KDApLnRoZW4oKCkgPT4gewor
ICAgIHRzLnJlYWRhYmxlLmNhbmNlbChlcnJvcjEpOworICAgIHJldHVybiBwcm9taXNlX3JlamVj
dHNfZXhhY3RseSh0LCBlcnJvcjEsIHBpcGVQcm9taXNlLCAncHJvbWlzZSByZXR1cm5lZCBmcm9t
IHBpcGVUbygpIHNob3VsZCBiZSByZWplY3RlZCcpOworICB9KTsKK30sICdjYW5jZWxsaW5nIHRo
ZSByZWFkYWJsZSBzaWRlIG9mIGEgVHJhbnNmb3JtU3RyZWFtIHNob3VsZCBhYm9ydCBhIGZ1bGwg
cGlwZScpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1zL2JhY2twcmVzc3VyZS5hbnkud29ya2Vy
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy9iYWNrcHJlc3N1cmUuYW55Lndvcmtlci1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZWMwN2M3Yjk3Mjg1MWRkOWM3ZDI2ODg1ZjE1NTgyNjk3OWM1
YTk3MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy9iYWNrcHJlc3N1cmUuYW55Lndv
cmtlci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNiBAQAorCitGQUlMIGJhY2twcmVzc3VyZSBh
bGxvd3Mgbm8gdHJhbnNmb3JtcyB3aXRoIGEgZGVmYXVsdCBpZGVudGl0eSB0cmFuc2Zvcm0gYW5k
IG5vIHJlYWRlciBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgYmFj
a3ByZXNzdXJlIG9ubHkgYWxsb3dzIG9uZSB0cmFuc2Zvcm0oKSB3aXRoIGEgaWRlbnRpdHkgdHJh
bnNmb3JtIHdpdGggYSByZWFkYWJsZSBIV00gb2YgMSBhbmQgbm8gcmVhZGVyIENhbid0IGZpbmQg
dmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCB0cmFuc2Zvcm0oKSBzaG91bGQga2VlcCBi
ZWluZyBjYWxsZWQgYXMgbG9uZyBhcyB0aGVyZSBpcyBubyBiYWNrcHJlc3N1cmUgQ2FuJ3QgZmlu
ZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIHdyaXRlcyBzaG91bGQgcmVzb2x2ZSBh
cyBzb29uIGFzIHRyYW5zZm9ybSBjb21wbGV0ZXMgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNm
b3JtU3RyZWFtCitGQUlMIGNhbGxpbmcgcHVsbCgpIGJlZm9yZSB0aGUgZmlyc3Qgd3JpdGUoKSB3
aXRoIGJhY2twcmVzc3VyZSBzaG91bGQgd29yayBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zv
cm1TdHJlYW0KK0ZBSUwgdHJhbnNmb3JtKCkgc2hvdWxkIGJlIGFibGUgdG8gcmVhZCB0aGUgY2h1
bmsgaXQganVzdCBlbnF1ZXVlZCBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0K
K0ZBSUwgYmxvY2tpbmcgdHJhbnNmb3JtKCkgc2hvdWxkIGNhdXNlIGJhY2twcmVzc3VyZSBDYW4n
dCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgd3JpdGVyLmNsb3NlZCBzaG91
bGQgcmVzb2x2ZSBhZnRlciByZWFkYWJsZSBpcyBjYW5jZWxlZCBkdXJpbmcgc3RhcnQgQ2FuJ3Qg
ZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIHdyaXRlci5jbG9zZWQgc2hvdWxk
IHJlc29sdmUgYWZ0ZXIgcmVhZGFibGUgaXMgY2FuY2VsZWQgd2l0aCBiYWNrcHJlc3N1cmUgQ2Fu
J3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIHdyaXRlci5jbG9zZWQgc2hv
dWxkIHJlc29sdmUgYWZ0ZXIgcmVhZGFibGUgaXMgY2FuY2VsZWQgd2l0aCBubyBiYWNrcHJlc3N1
cmUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIGNhbmNlbGxpbmcg
dGhlIHJlYWRhYmxlIHNob3VsZCBjYXVzZSBhIHBlbmRpbmcgd3JpdGUgdG8gcmVzb2x2ZSBDYW4n
dCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgY2FuY2VsbGluZyB0aGUgcmVh
ZGFibGUgc2lkZSBvZiBhIFRyYW5zZm9ybVN0cmVhbSBzaG91bGQgYWJvcnQgYW4gZW1wdHkgcGlw
ZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgY2FuY2VsbGluZyB0
aGUgcmVhZGFibGUgc2lkZSBvZiBhIFRyYW5zZm9ybVN0cmVhbSBzaG91bGQgYWJvcnQgYW4gZW1w
dHkgcGlwZSBhZnRlciBzdGFydHVwIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVh
bQorRkFJTCBjYW5jZWxsaW5nIHRoZSByZWFkYWJsZSBzaWRlIG9mIGEgVHJhbnNmb3JtU3RyZWFt
IHNob3VsZCBhYm9ydCBhIGZ1bGwgcGlwZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1T
dHJlYW0KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1zL2JhY2twcmVzc3VyZS5hbnkud29ya2Vy
Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvdHJhbnNmb3JtLXN0cmVhbXMvYmFja3ByZXNzdXJlLmFueS53b3JrZXIuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4yMzgyOTEzNTI4ZTY5M2IzYTVkNTZjNjYwYTQ1MDYwOTgwYjU0OGMzCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJl
YW1zL3RyYW5zZm9ybS1zdHJlYW1zL2JhY2twcmVzc3VyZS5hbnkud29ya2VyLmh0bWwKQEAgLTAs
MCArMSBAQAorPCEtLSBUaGlzIGZpbGUgaXMgcmVxdWlyZWQgZm9yIFdlYktpdCB0ZXN0IGluZnJh
c3RydWN0dXJlIHRvIHJ1biB0aGUgdGVtcGxhdGVkIHRlc3QgLS0+ClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1zL2Vycm9ycy5hbnktZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
L3RyYW5zZm9ybS1zdHJlYW1zL2Vycm9ycy5hbnktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZk
M2Q3OGYzZGEzYjg3YTliNmM4NmU3YmRkMzlmYWQxOGIwMWEwMDUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvdHJh
bnNmb3JtLXN0cmVhbXMvZXJyb3JzLmFueS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0MiBAQAor
CitGQUlMIFRyYW5zZm9ybVN0cmVhbSBlcnJvcnMgdGhyb3duIGluIHRyYW5zZm9ybSBwdXQgdGhl
IHdyaXRhYmxlIGFuZCByZWFkYWJsZSBpbiBhbiBlcnJvcmVkIHN0YXRlIENhbid0IGZpbmQgdmFy
aWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCBUcmFuc2Zvcm1TdHJlYW0gZXJyb3JzIHRocm93
biBpbiBmbHVzaCBwdXQgdGhlIHdyaXRhYmxlIGFuZCByZWFkYWJsZSBpbiBhbiBlcnJvcmVkIHN0
YXRlIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCBlcnJvcmVkIFRy
YW5zZm9ybVN0cmVhbSBzaG91bGQgbm90IGVucXVldWUgbmV3IGNodW5rcyBDYW4ndCBmaW5kIHZh
cmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgVHJhbnNmb3JtU3RyZWFtIHRyYW5zZm9ybWVy
LnN0YXJ0KCkgcmVqZWN0ZWQgcHJvbWlzZSBzaG91bGQgZXJyb3IgdGhlIHN0cmVhbSBDYW4ndCBm
aW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgd2hlbiBjb250cm9sbGVyLmVycm9y
IGlzIGZvbGxvd2VkIGJ5IGEgcmVqZWN0aW9uLCB0aGUgZXJyb3IgcmVhc29uIHNob3VsZCBjb21l
IGZyb20gY29udHJvbGxlci5lcnJvciBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJl
YW0KK0ZBSUwgVHJhbnNmb3JtU3RyZWFtIGNvbnN0cnVjdG9yIHNob3VsZCB0aHJvdyB3aGVuIHN0
YXJ0IGRvZXMgYXNzZXJ0X3Rocm93c19qczogY29uc3RydWN0b3Igc2hvdWxkIHRocm93IGZ1bmN0
aW9uICIoKSA9PiBuZXcgVHJhbnNmb3JtU3RyZWFtKHsKKyAgICBzdGFydCgpIHsgdGhyb3cgbmV3
IFVSSUVycm9yKCdzdGFydCB0aHJvd24gZXJyb3InKTsgfSwKKyAgICB0cmFuc2Zvcm0oKSB7fQor
ICB9KSIgdGhyZXcgb2JqZWN0ICJSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTog
VHJhbnNmb3JtU3RyZWFtIiAoIlJlZmVyZW5jZUVycm9yIikgZXhwZWN0ZWQgaW5zdGFuY2Ugb2Yg
ZnVuY3Rpb24gImZ1bmN0aW9uIFVSSUVycm9yKCkgeworICAgIFtuYXRpdmUgY29kZV0KK30iICgi
VVJJRXJyb3IiKQorRkFJTCB3aGVuIHN0cmF0ZWd5LnNpemUgdGhyb3dzIGluc2lkZSBzdGFydCgp
LCB0aGUgY29uc3RydWN0b3Igc2hvdWxkIHRocm93IHRoZSBzYW1lIGVycm9yIGFzc2VydF90aHJv
d3NfanM6IGNvbnN0cnVjdG9yIHNob3VsZCB0aHJvdyB0aGUgc2FtZSBlcnJvciBzdHJhdGVneS5z
aXplIHRocm93cyBmdW5jdGlvbiAiKCkgPT4gbmV3IFRyYW5zZm9ybVN0cmVhbSh7CisgICAgc3Rh
cnQoYykgeworICAgICAgYy5lbnF1ZXVlKCdhJyk7CisgICAgfSwKKyAgICB0cmFuc2Zvcm0oKSB7
fQorICB9LCB1bmRlZmluZWQsIHN0cmF0ZWd5KSIgdGhyZXcgb2JqZWN0ICJSZWZlcmVuY2VFcnJv
cjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtIiAoIlJlZmVyZW5jZUVycm9y
IikgZXhwZWN0ZWQgaW5zdGFuY2Ugb2YgZnVuY3Rpb24gImZ1bmN0aW9uIFVSSUVycm9yKCkgewor
ICAgIFtuYXRpdmUgY29kZV0KK30iICgiVVJJRXJyb3IiKQorRkFJTCB3aGVuIHN0cmF0ZWd5LnNp
emUgY2FsbHMgY29udHJvbGxlci5lcnJvcigpIHRoZW4gdGhyb3dzLCB0aGUgY29uc3RydWN0b3Ig
c2hvdWxkIHRocm93IHRoZSBmaXJzdCBlcnJvciBhc3NlcnRfdGhyb3dzX2pzOiB0aGUgZmlyc3Qg
ZXJyb3Igc2hvdWxkIGJlIHRocm93biBmdW5jdGlvbiAiKCkgPT4gbmV3IFRyYW5zZm9ybVN0cmVh
bSh7CisgICAgc3RhcnQoYykgeworICAgICAgY29udHJvbGxlciA9IGM7CisgICAgICBjLmVucXVl
dWUoJ2EnKTsKKyAgICB9LAorICAgIHRyYW5zZm9ybSgpIHt9CisgIH0sIHVuZGVmaW5lZCwgc3Ry
YXRlZ3kpIiB0aHJldyBvYmplY3QgIlJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxl
OiBUcmFuc2Zvcm1TdHJlYW0iICgiUmVmZXJlbmNlRXJyb3IiKSBleHBlY3RlZCBpbnN0YW5jZSBv
ZiBmdW5jdGlvbiAiZnVuY3Rpb24gVVJJRXJyb3IoKSB7CisgICAgW25hdGl2ZSBjb2RlXQorfSIg
KCJVUklFcnJvciIpCitGQUlMIGNhbmNlbGxpbmcgdGhlIHJlYWRhYmxlIHNpZGUgc2hvdWxkIGVy
cm9yIHRoZSB3cml0YWJsZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZB
SUwgaXQgc2hvdWxkIGJlIHBvc3NpYmxlIHRvIGVycm9yIHRoZSByZWFkYWJsZSBiZXR3ZWVuIGNs
b3NlIHJlcXVlc3RlZCBhbmQgY29tcGxldGUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3Jt
U3RyZWFtCitGQUlMIGFuIGV4Y2VwdGlvbiBmcm9tIHRyYW5zZm9ybSgpIHNob3VsZCBlcnJvciB0
aGUgc3RyZWFtIGlmIHRlcm1pbmF0ZSBoYXMgYmVlbiByZXF1ZXN0ZWQgYnV0IG5vdCBjb21wbGV0
ZWQgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIGFib3J0IHNob3Vs
ZCBzZXQgdGhlIGNsb3NlIHJlYXNvbiBmb3IgdGhlIHdyaXRhYmxlIHdoZW4gaXQgaGFwcGVucyBi
ZWZvcmUgY2FuY2VsIGR1cmluZyBzdGFydCwgYnV0IGNhbmNlbCBzaG91bGQgc3RpbGwgc3VjY2Vl
ZCBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgYWJvcnQgc2hvdWxk
IHNldCB0aGUgY2xvc2UgcmVhc29uIGZvciB0aGUgd3JpdGFibGUgd2hlbiBpdCBoYXBwZW5zIGJl
Zm9yZSBjYW5jZWwgZHVyaW5nIHVuZGVybHlpbmcgc2luayB3cml0ZSwgYnV0IGNhbmNlbCBzaG91
bGQgc3RpbGwgc3VjY2VlZCBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZB
SUwgY29udHJvbGxlci5lcnJvcigpIHNob3VsZCBkbyBub3RoaW5nIHRoZSBzZWNvbmQgdGltZSBp
dCBpcyBjYWxsZWQgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIGNv
bnRyb2xsZXIuZXJyb3IoKSBzaG91bGQgZG8gbm90aGluZyBhZnRlciByZWFkYWJsZS5jYW5jZWwo
KSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgY29udHJvbGxlci5l
cnJvcigpIHNob3VsZCBkbyBub3RoaW5nIGFmdGVyIHdyaXRhYmxlLmFib3J0KCkgaGFzIGNvbXBs
ZXRlZCBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgY29udHJvbGxl
ci5lcnJvcigpIHNob3VsZCBkbyBub3RoaW5nIGFmdGVyIGEgdHJhbnNmb3JtZXIgbWV0aG9kIGhh
cyB0aHJvd24gYW4gZXhjZXB0aW9uIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVh
bQorRkFJTCBlcnJvcmluZyBkdXJpbmcgd3JpdGUgd2l0aCBiYWNrcHJlc3N1cmUgc2hvdWxkIHJl
c3VsdCBpbiB0aGUgd3JpdGUgZmFpbGluZyBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1T
dHJlYW0KK0ZBSUwgYSB3cml0ZSgpIHRoYXQgd2FzIHdhaXRpbmcgZm9yIGJhY2twcmVzc3VyZSBz
aG91bGQgcmVqZWN0IGlmIHRoZSB3cml0YWJsZSBpcyBhYm9ydGVkIENhbid0IGZpbmQgdmFyaWFi
bGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCB0aGUgcmVhZGFibGUgc2hvdWxkIGJlIGVycm9yZWQg
d2l0aCB0aGUgcmVhc29uIHBhc3NlZCB0byB0aGUgd3JpdGFibGUgYWJvcnQoKSBtZXRob2QgQ2Fu
J3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy90cmFuc2Zvcm0tc3Ry
ZWFtcy9lcnJvcnMuYW55Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMvdHJhbnNmb3JtLXN0cmVhbXMvZXJyb3JzLmFueS5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjIzODI5MTM1MjhlNjkzYjNhNWQ1NmM2NjBhNDUwNjA5ODBiNTQ4YzMKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMvdHJhbnNmb3JtLXN0cmVhbXMvZXJyb3JzLmFueS5odG1sCkBAIC0wLDAgKzEgQEAKKzwh
LS0gVGhpcyBmaWxlIGlzIHJlcXVpcmVkIGZvciBXZWJLaXQgdGVzdCBpbmZyYXN0cnVjdHVyZSB0
byBydW4gdGhlIHRlbXBsYXRlZCB0ZXN0IC0tPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy9lcnJvcnMuYW55LmpzIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1zL2Vy
cm9ycy5hbnkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmEyNmIzMmI3NWE2YTQwN2M5YTVmZDM4MTQzNjVkYTUx
YzNhMjFlMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy9lcnJvcnMuYW55LmpzCkBA
IC0wLDAgKzEsMzQxIEBACisvLyBNRVRBOiBnbG9iYWw9d2luZG93LHdvcmtlcixqc3NoZWxsCisv
LyBNRVRBOiBzY3JpcHQ9Li4vcmVzb3VyY2VzL3Rlc3QtdXRpbHMuanMKKyd1c2Ugc3RyaWN0JzsK
KworY29uc3QgdGhyb3duRXJyb3IgPSBuZXcgRXJyb3IoJ2JhZCB0aGluZ3MgYXJlIGhhcHBlbmlu
ZyEnKTsKK3Rocm93bkVycm9yLm5hbWUgPSAnZXJyb3IxJzsKKworcHJvbWlzZV90ZXN0KHQgPT4g
eworICBjb25zdCB0cyA9IG5ldyBUcmFuc2Zvcm1TdHJlYW0oeworICAgIHRyYW5zZm9ybSgpIHsK
KyAgICAgIHRocm93IHRocm93bkVycm9yOworICAgIH0KKyAgfSk7CisKKyAgY29uc3QgcmVhZGVy
ID0gdHMucmVhZGFibGUuZ2V0UmVhZGVyKCk7CisKKyAgY29uc3Qgd3JpdGVyID0gdHMud3JpdGFi
bGUuZ2V0V3JpdGVyKCk7CisKKyAgcmV0dXJuIFByb21pc2UuYWxsKFsKKyAgICBwcm9taXNlX3Jl
amVjdHNfZXhhY3RseSh0LCB0aHJvd25FcnJvciwgd3JpdGVyLndyaXRlKCdhJyksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ3dyaXRhYmxlXCdzIHdyaXRlIHNob3VsZCByZWplY3Qgd2l0
aCB0aGUgdGhyb3duIGVycm9yJyksCisgICAgcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgdGhy
b3duRXJyb3IsIHJlYWRlci5yZWFkKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Jl
YWRhYmxlXCdzIHJlYWQgc2hvdWxkIHJlamVjdCB3aXRoIHRoZSB0aHJvd24gZXJyb3InKSwKKyAg
ICBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCB0aHJvd25FcnJvciwgcmVhZGVyLmNsb3NlZCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmVhZGFibGVcJ3MgY2xvc2VkIHNob3VsZCBi
ZSByZWplY3RlZCB3aXRoIHRoZSB0aHJvd24gZXJyb3InKSwKKyAgICBwcm9taXNlX3JlamVjdHNf
ZXhhY3RseSh0LCB0aHJvd25FcnJvciwgd3JpdGVyLmNsb3NlZCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnd3JpdGFibGVcJ3MgY2xvc2VkIHNob3VsZCBiZSByZWplY3RlZCB3aXRoIHRo
ZSB0aHJvd24gZXJyb3InKQorICBdKTsKK30sICdUcmFuc2Zvcm1TdHJlYW0gZXJyb3JzIHRocm93
biBpbiB0cmFuc2Zvcm0gcHV0IHRoZSB3cml0YWJsZSBhbmQgcmVhZGFibGUgaW4gYW4gZXJyb3Jl
ZCBzdGF0ZScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIGNvbnN0IHRzID0gbmV3IFRyYW5z
Zm9ybVN0cmVhbSh7CisgICAgdHJhbnNmb3JtKCkgeworICAgIH0sCisgICAgZmx1c2goKSB7Cisg
ICAgICB0aHJvdyB0aHJvd25FcnJvcjsKKyAgICB9CisgIH0pOworCisgIGNvbnN0IHJlYWRlciA9
IHRzLnJlYWRhYmxlLmdldFJlYWRlcigpOworCisgIGNvbnN0IHdyaXRlciA9IHRzLndyaXRhYmxl
LmdldFdyaXRlcigpOworCisgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAgd3JpdGVyLndyaXRl
KCdhJyksCisgICAgcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgdGhyb3duRXJyb3IsIHdyaXRl
ci5jbG9zZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICd3cml0YWJsZVwncyBjbG9z
ZSBzaG91bGQgcmVqZWN0IHdpdGggdGhlIHRocm93biBlcnJvcicpLAorICAgIHByb21pc2VfcmVq
ZWN0c19leGFjdGx5KHQsIHRocm93bkVycm9yLCByZWFkZXIucmVhZCgpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICdyZWFkYWJsZVwncyByZWFkIHNob3VsZCByZWplY3Qgd2l0aCB0aGUg
dGhyb3duIGVycm9yJyksCisgICAgcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgdGhyb3duRXJy
b3IsIHJlYWRlci5jbG9zZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlYWRhYmxl
XCdzIGNsb3NlZCBzaG91bGQgYmUgcmVqZWN0ZWQgd2l0aCB0aGUgdGhyb3duIGVycm9yJyksCisg
ICAgcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgdGhyb3duRXJyb3IsIHdyaXRlci5jbG9zZWQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3dyaXRhYmxlXCdzIGNsb3NlZCBzaG91bGQg
YmUgcmVqZWN0ZWQgd2l0aCB0aGUgdGhyb3duIGVycm9yJykKKyAgXSk7Cit9LCAnVHJhbnNmb3Jt
U3RyZWFtIGVycm9ycyB0aHJvd24gaW4gZmx1c2ggcHV0IHRoZSB3cml0YWJsZSBhbmQgcmVhZGFi
bGUgaW4gYW4gZXJyb3JlZCBzdGF0ZScpOworCit0ZXN0KCgpID0+IHsKKyAgbmV3IFRyYW5zZm9y
bVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgYy5lbnF1ZXVlKCdhJyk7CisgICAgICBj
LmVycm9yKG5ldyBFcnJvcignZ2VuZXJpYyBlcnJvcicpKTsKKyAgICAgIGFzc2VydF90aHJvd3Nf
anMoVHlwZUVycm9yLCAoKSA9PiBjLmVucXVldWUoJ2InKSwgJ2VucXVldWUoKSBzaG91bGQgdGhy
b3cnKTsKKyAgICB9CisgIH0pOworfSwgJ2Vycm9yZWQgVHJhbnNmb3JtU3RyZWFtIHNob3VsZCBu
b3QgZW5xdWV1ZSBuZXcgY2h1bmtzJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgY29uc3Qg
dHMgPSBuZXcgVHJhbnNmb3JtU3RyZWFtKHsKKyAgICBzdGFydCgpIHsKKyAgICAgIHJldHVybiBm
bHVzaEFzeW5jRXZlbnRzKCkudGhlbigoKSA9PiB7CisgICAgICAgIHRocm93IHRocm93bkVycm9y
OworICAgICAgfSk7CisgICAgfSwKKyAgICB0cmFuc2Zvcm06IHQudW5yZWFjaGVkX2Z1bmMoJ3Ry
YW5zZm9ybSBzaG91bGQgbm90IGJlIGNhbGxlZCcpLAorICAgIGZsdXNoOiB0LnVucmVhY2hlZF9m
dW5jKCdmbHVzaCBzaG91bGQgbm90IGJlIGNhbGxlZCcpCisgIH0pOworCisgIGNvbnN0IHdyaXRl
ciA9IHRzLndyaXRhYmxlLmdldFdyaXRlcigpOworICBjb25zdCByZWFkZXIgPSB0cy5yZWFkYWJs
ZS5nZXRSZWFkZXIoKTsKKyAgcmV0dXJuIFByb21pc2UuYWxsKFsKKyAgICBwcm9taXNlX3JlamVj
dHNfZXhhY3RseSh0LCB0aHJvd25FcnJvciwgd3JpdGVyLndyaXRlKCdhJyksICd3cml0ZXIgc2hv
dWxkIHJlamVjdCB3aXRoIHRocm93bkVycm9yJyksCisgICAgcHJvbWlzZV9yZWplY3RzX2V4YWN0
bHkodCwgdGhyb3duRXJyb3IsIHdyaXRlci5jbG9zZSgpLCAnY2xvc2UoKSBzaG91bGQgcmVqZWN0
IHdpdGggdGhyb3duRXJyb3InKSwKKyAgICBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCB0aHJv
d25FcnJvciwgcmVhZGVyLnJlYWQoKSwgJ3JlYWRlciBzaG91bGQgcmVqZWN0IHdpdGggdGhyb3du
RXJyb3InKQorICBdKTsKK30sICdUcmFuc2Zvcm1TdHJlYW0gdHJhbnNmb3JtZXIuc3RhcnQoKSBy
ZWplY3RlZCBwcm9taXNlIHNob3VsZCBlcnJvciB0aGUgc3RyZWFtJyk7CisKK3Byb21pc2VfdGVz
dCh0ID0+IHsKKyAgY29uc3QgY29udHJvbGxlckVycm9yID0gbmV3IEVycm9yKCdzdGFydCBmYWls
dXJlJyk7CisgIGNvbnRyb2xsZXJFcnJvci5uYW1lID0gJ2NvbnRyb2xsZXJFcnJvcic7CisgIGNv
bnN0IHRzID0gbmV3IFRyYW5zZm9ybVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgcmV0
dXJuIGZsdXNoQXN5bmNFdmVudHMoKQorICAgICAgICAudGhlbigoKSA9PiB7CisgICAgICAgICAg
Yy5lcnJvcihjb250cm9sbGVyRXJyb3IpOworICAgICAgICAgIHRocm93IG5ldyBFcnJvcignaWdu
b3JlZCBlcnJvcicpOworICAgICAgICB9KTsKKyAgICB9LAorICAgIHRyYW5zZm9ybTogdC51bnJl
YWNoZWRfZnVuYygndHJhbnNmb3JtIHNob3VsZCBuZXZlciBiZSBjYWxsZWQgaWYgc3RhcnQoKSBm
YWlscycpLAorICAgIGZsdXNoOiB0LnVucmVhY2hlZF9mdW5jKCdmbHVzaCBzaG91bGQgbmV2ZXIg
YmUgY2FsbGVkIGlmIHN0YXJ0KCkgZmFpbHMnKQorICB9KTsKKworICBjb25zdCB3cml0ZXIgPSB0
cy53cml0YWJsZS5nZXRXcml0ZXIoKTsKKyAgY29uc3QgcmVhZGVyID0gdHMucmVhZGFibGUuZ2V0
UmVhZGVyKCk7CisgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAgcHJvbWlzZV9yZWplY3RzX2V4
YWN0bHkodCwgY29udHJvbGxlckVycm9yLCB3cml0ZXIud3JpdGUoJ2EnKSwgJ3dyaXRlciBzaG91
bGQgcmVqZWN0IHdpdGggY29udHJvbGxlckVycm9yJyksCisgICAgcHJvbWlzZV9yZWplY3RzX2V4
YWN0bHkodCwgY29udHJvbGxlckVycm9yLCB3cml0ZXIuY2xvc2UoKSwgJ2Nsb3NlIHNob3VsZCBy
ZWplY3Qgd2l0aCBzYW1lIGVycm9yJyksCisgICAgcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwg
Y29udHJvbGxlckVycm9yLCByZWFkZXIucmVhZCgpLCAncmVhZGVyIHNob3VsZCByZWplY3Qgd2l0
aCBzYW1lIGVycm9yJykKKyAgXSk7Cit9LCAnd2hlbiBjb250cm9sbGVyLmVycm9yIGlzIGZvbGxv
d2VkIGJ5IGEgcmVqZWN0aW9uLCB0aGUgZXJyb3IgcmVhc29uIHNob3VsZCBjb21lIGZyb20gY29u
dHJvbGxlci5lcnJvcicpOworCit0ZXN0KCgpID0+IHsKKyAgYXNzZXJ0X3Rocm93c19qcyhVUklF
cnJvciwgKCkgPT4gbmV3IFRyYW5zZm9ybVN0cmVhbSh7CisgICAgc3RhcnQoKSB7IHRocm93IG5l
dyBVUklFcnJvcignc3RhcnQgdGhyb3duIGVycm9yJyk7IH0sCisgICAgdHJhbnNmb3JtKCkge30K
KyAgfSksICdjb25zdHJ1Y3RvciBzaG91bGQgdGhyb3cnKTsKK30sICdUcmFuc2Zvcm1TdHJlYW0g
Y29uc3RydWN0b3Igc2hvdWxkIHRocm93IHdoZW4gc3RhcnQgZG9lcycpOworCit0ZXN0KCgpID0+
IHsKKyAgY29uc3Qgc3RyYXRlZ3kgPSB7CisgICAgc2l6ZSgpIHsgdGhyb3cgbmV3IFVSSUVycm9y
KCdzaXplIHRocm93biBlcnJvcicpOyB9CisgIH07CisKKyAgYXNzZXJ0X3Rocm93c19qcyhVUklF
cnJvciwgKCkgPT4gbmV3IFRyYW5zZm9ybVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAg
Yy5lbnF1ZXVlKCdhJyk7CisgICAgfSwKKyAgICB0cmFuc2Zvcm0oKSB7fQorICB9LCB1bmRlZmlu
ZWQsIHN0cmF0ZWd5KSwgJ2NvbnN0cnVjdG9yIHNob3VsZCB0aHJvdyB0aGUgc2FtZSBlcnJvciBz
dHJhdGVneS5zaXplIHRocm93cycpOworfSwgJ3doZW4gc3RyYXRlZ3kuc2l6ZSB0aHJvd3MgaW5z
aWRlIHN0YXJ0KCksIHRoZSBjb25zdHJ1Y3RvciBzaG91bGQgdGhyb3cgdGhlIHNhbWUgZXJyb3In
KTsKKwordGVzdCgoKSA9PiB7CisgIGNvbnN0IGNvbnRyb2xsZXJFcnJvciA9IG5ldyBVUklFcnJv
cignY29udHJvbGxlci5lcnJvcicpOworCisgIGxldCBjb250cm9sbGVyOworICBjb25zdCBzdHJh
dGVneSA9IHsKKyAgICBzaXplKCkgeworICAgICAgY29udHJvbGxlci5lcnJvcihjb250cm9sbGVy
RXJyb3IpOworICAgICAgdGhyb3cgbmV3IEVycm9yKCdyZWR1bmRhbnQgZXJyb3InKTsKKyAgICB9
CisgIH07CisKKyAgYXNzZXJ0X3Rocm93c19qcyhVUklFcnJvciwgKCkgPT4gbmV3IFRyYW5zZm9y
bVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgY29udHJvbGxlciA9IGM7CisgICAgICBj
LmVucXVldWUoJ2EnKTsKKyAgICB9LAorICAgIHRyYW5zZm9ybSgpIHt9CisgIH0sIHVuZGVmaW5l
ZCwgc3RyYXRlZ3kpLCAndGhlIGZpcnN0IGVycm9yIHNob3VsZCBiZSB0aHJvd24nKTsKK30sICd3
aGVuIHN0cmF0ZWd5LnNpemUgY2FsbHMgY29udHJvbGxlci5lcnJvcigpIHRoZW4gdGhyb3dzLCB0
aGUgY29uc3RydWN0b3Igc2hvdWxkIHRocm93IHRoZSBmaXJzdCBlcnJvcicpOworCitwcm9taXNl
X3Rlc3QodCA9PiB7CisgIGNvbnN0IHRzID0gbmV3IFRyYW5zZm9ybVN0cmVhbSgpOworICBjb25z
dCB3cml0ZXIgPSB0cy53cml0YWJsZS5nZXRXcml0ZXIoKTsKKyAgY29uc3QgY2xvc2VkUHJvbWlz
ZSA9IHdyaXRlci5jbG9zZWQ7CisgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAgdHMucmVhZGFi
bGUuY2FuY2VsKHRocm93bkVycm9yKSwKKyAgICBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCB0
aHJvd25FcnJvciwgY2xvc2VkUHJvbWlzZSwgJ2Nsb3NlZCBzaG91bGQgdGhyb3cgYSBUeXBlRXJy
b3InKQorICBdKTsKK30sICdjYW5jZWxsaW5nIHRoZSByZWFkYWJsZSBzaWRlIHNob3VsZCBlcnJv
ciB0aGUgd3JpdGFibGUnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBsZXQgY29udHJvbGxl
cjsKKyAgY29uc3QgdHMgPSBuZXcgVHJhbnNmb3JtU3RyZWFtKHsKKyAgICBzdGFydChjKSB7Cisg
ICAgICBjb250cm9sbGVyID0gYzsKKyAgICB9CisgIH0pOworICBjb25zdCB3cml0ZXIgPSB0cy53
cml0YWJsZS5nZXRXcml0ZXIoKTsKKyAgY29uc3QgcmVhZGVyID0gdHMucmVhZGFibGUuZ2V0UmVh
ZGVyKCk7CisgIGNvbnN0IHdyaXRlUHJvbWlzZSA9IHdyaXRlci53cml0ZSgnYScpOworICBjb25z
dCBjbG9zZVByb21pc2UgPSB3cml0ZXIuY2xvc2UoKTsKKyAgY29udHJvbGxlci5lcnJvcih0aHJv
d25FcnJvcik7CisgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAgcHJvbWlzZV9yZWplY3RzX2V4
YWN0bHkodCwgdGhyb3duRXJyb3IsIHJlYWRlci5jbG9zZWQsICdyZWFkZXIuY2xvc2VkIHNob3Vs
ZCByZWplY3QnKSwKKyAgICBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCB0aHJvd25FcnJvciwg
d3JpdGVQcm9taXNlLCAnd3JpdGVQcm9taXNlIHNob3VsZCByZWplY3QnKSwKKyAgICBwcm9taXNl
X3JlamVjdHNfZXhhY3RseSh0LCB0aHJvd25FcnJvciwgY2xvc2VQcm9taXNlLCAnY2xvc2VQcm9t
aXNlIHNob3VsZCByZWplY3QnKV0pOworfSwgJ2l0IHNob3VsZCBiZSBwb3NzaWJsZSB0byBlcnJv
ciB0aGUgcmVhZGFibGUgYmV0d2VlbiBjbG9zZSByZXF1ZXN0ZWQgYW5kIGNvbXBsZXRlJyk7CisK
K3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgY29uc3QgdHMgPSBuZXcgVHJhbnNmb3JtU3RyZWFtKHsK
KyAgICB0cmFuc2Zvcm0oY2h1bmssIGNvbnRyb2xsZXIpIHsKKyAgICAgIGNvbnRyb2xsZXIuZW5x
dWV1ZShjaHVuayk7CisgICAgICBjb250cm9sbGVyLnRlcm1pbmF0ZSgpOworICAgICAgdGhyb3cg
dGhyb3duRXJyb3I7CisgICAgfQorICB9LCB1bmRlZmluZWQsIHsgaGlnaFdhdGVyTWFyazogMSB9
KTsKKyAgY29uc3Qgd3JpdGVQcm9taXNlID0gdHMud3JpdGFibGUuZ2V0V3JpdGVyKCkud3JpdGUo
J2EnKTsKKyAgY29uc3QgY2xvc2VkUHJvbWlzZSA9IHRzLnJlYWRhYmxlLmdldFJlYWRlcigpLmNs
b3NlZDsKKyAgcmV0dXJuIFByb21pc2UuYWxsKFsKKyAgICBwcm9taXNlX3JlamVjdHNfZXhhY3Rs
eSh0LCB0aHJvd25FcnJvciwgd3JpdGVQcm9taXNlLCAnd3JpdGUoKSBzaG91bGQgcmVqZWN0Jyks
CisgICAgcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgdGhyb3duRXJyb3IsIGNsb3NlZFByb21p
c2UsICdyZWFkZXIuY2xvc2VkIHNob3VsZCByZWplY3QnKQorICBdKTsKK30sICdhbiBleGNlcHRp
b24gZnJvbSB0cmFuc2Zvcm0oKSBzaG91bGQgZXJyb3IgdGhlIHN0cmVhbSBpZiB0ZXJtaW5hdGUg
aGFzIGJlZW4gcmVxdWVzdGVkIGJ1dCBub3QgY29tcGxldGVkJyk7CisKK3Byb21pc2VfdGVzdCh0
ID0+IHsKKyAgY29uc3QgdHMgPSBuZXcgVHJhbnNmb3JtU3RyZWFtKCk7CisgIGNvbnN0IHdyaXRl
ciA9IHRzLndyaXRhYmxlLmdldFdyaXRlcigpOworICAvLyBUaGUgbWljcm90YXNrIGZvbGxvd2lu
ZyB0cmFuc2Zvcm1lci5zdGFydCgpIGhhc24ndCBjb21wbGV0ZWQgeWV0LCBzbyB0aGUgYWJvcnQg
aXMgcXVldWVkIGFuZCBub3Qgbm90aWZpZWQgdG8gdGhlCisgIC8vIFRyYW5zZm9ybVN0cmVhbSB5
ZXQuCisgIGNvbnN0IGFib3J0UHJvbWlzZSA9IHdyaXRlci5hYm9ydCh0aHJvd25FcnJvcik7Cisg
IGNvbnN0IGNhbmNlbFByb21pc2UgPSB0cy5yZWFkYWJsZS5jYW5jZWwobmV3IEVycm9yKCdjYW5j
ZWwgcmVhc29uJykpOworICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAgIGFib3J0UHJvbWlzZSwK
KyAgICBjYW5jZWxQcm9taXNlLAorICAgIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIHRocm93
bkVycm9yLCB3cml0ZXIuY2xvc2VkLCAnd3JpdGVyLmNsb3NlZCBzaG91bGQgcmVqZWN0IHdpdGgg
dGhyb3duRXJyb3InKV0pOworfSwgJ2Fib3J0IHNob3VsZCBzZXQgdGhlIGNsb3NlIHJlYXNvbiBm
b3IgdGhlIHdyaXRhYmxlIHdoZW4gaXQgaGFwcGVucyBiZWZvcmUgY2FuY2VsIGR1cmluZyBzdGFy
dCwgYnV0IGNhbmNlbCBzaG91bGQgJyArCisgICAgICAgICAgICAgJ3N0aWxsIHN1Y2NlZWQnKTsK
KworcHJvbWlzZV90ZXN0KHQgPT4geworICBsZXQgcmVzb2x2ZVRyYW5zZm9ybTsKKyAgY29uc3Qg
dHJhbnNmb3JtUHJvbWlzZSA9IG5ldyBQcm9taXNlKHJlc29sdmUgPT4geworICAgIHJlc29sdmVU
cmFuc2Zvcm0gPSByZXNvbHZlOworICB9KTsKKyAgY29uc3QgdHMgPSBuZXcgVHJhbnNmb3JtU3Ry
ZWFtKHsKKyAgICB0cmFuc2Zvcm0oKSB7CisgICAgICByZXR1cm4gdHJhbnNmb3JtUHJvbWlzZTsK
KyAgICB9CisgIH0sIHVuZGVmaW5lZCwgeyBoaWdoV2F0ZXJNYXJrOiAyIH0pOworICBjb25zdCB3
cml0ZXIgPSB0cy53cml0YWJsZS5nZXRXcml0ZXIoKTsKKyAgcmV0dXJuIGRlbGF5KDApLnRoZW4o
KCkgPT4geworICAgIGNvbnN0IHdyaXRlUHJvbWlzZSA9IHdyaXRlci53cml0ZSgpOworICAgIGNv
bnN0IGFib3J0UHJvbWlzZSA9IHdyaXRlci5hYm9ydCh0aHJvd25FcnJvcik7CisgICAgY29uc3Qg
Y2FuY2VsUHJvbWlzZSA9IHRzLnJlYWRhYmxlLmNhbmNlbChuZXcgRXJyb3IoJ2NhbmNlbCByZWFz
b24nKSk7CisgICAgcmVzb2x2ZVRyYW5zZm9ybSgpOworICAgIHJldHVybiBQcm9taXNlLmFsbChb
CisgICAgICB3cml0ZVByb21pc2UsCisgICAgICBhYm9ydFByb21pc2UsCisgICAgICBjYW5jZWxQ
cm9taXNlLAorICAgICAgcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgdGhyb3duRXJyb3IsIHdy
aXRlci5jbG9zZWQsICd3cml0ZXIuY2xvc2VkIHNob3VsZCByZWplY3Qgd2l0aCB0aHJvd25FcnJv
cicpXSk7CisgIH0pOworfSwgJ2Fib3J0IHNob3VsZCBzZXQgdGhlIGNsb3NlIHJlYXNvbiBmb3Ig
dGhlIHdyaXRhYmxlIHdoZW4gaXQgaGFwcGVucyBiZWZvcmUgY2FuY2VsIGR1cmluZyB1bmRlcmx5
aW5nIHNpbmsgd3JpdGUsICcgKworICAgICAgICAgICAgICdidXQgY2FuY2VsIHNob3VsZCBzdGls
bCBzdWNjZWVkJyk7CisKK2NvbnN0IGlnbm9yZWRFcnJvciA9IG5ldyBFcnJvcignaWdub3JlZEVy
cm9yJyk7CitpZ25vcmVkRXJyb3IubmFtZSA9ICdpZ25vcmVkRXJyb3InOworCitwcm9taXNlX3Rl
c3QodCA9PiB7CisgIGNvbnN0IHRzID0gbmV3IFRyYW5zZm9ybVN0cmVhbSh7CisgICAgc3RhcnQo
Y29udHJvbGxlcikgeworICAgICAgY29udHJvbGxlci5lcnJvcih0aHJvd25FcnJvcik7CisgICAg
ICBjb250cm9sbGVyLmVycm9yKGlnbm9yZWRFcnJvcik7CisgICAgfQorICB9KTsKKyAgcmV0dXJu
IHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIHRocm93bkVycm9yLCB0cy53cml0YWJsZS5hYm9y
dCgpLCAnYWJvcnQoKSBzaG91bGQgcmVqZWN0IHdpdGggdGhyb3duRXJyb3InKTsKK30sICdjb250
cm9sbGVyLmVycm9yKCkgc2hvdWxkIGRvIG5vdGhpbmcgdGhlIHNlY29uZCB0aW1lIGl0IGlzIGNh
bGxlZCcpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIGxldCBjb250cm9sbGVyOworICBjb25z
dCB0cyA9IG5ldyBUcmFuc2Zvcm1TdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGNvbnRy
b2xsZXIgPSBjOworICAgIH0KKyAgfSk7CisgIGNvbnN0IGNhbmNlbFByb21pc2UgPSB0cy5yZWFk
YWJsZS5jYW5jZWwodGhyb3duRXJyb3IpOworICBjb250cm9sbGVyLmVycm9yKGlnbm9yZWRFcnJv
cik7CisgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAgY2FuY2VsUHJvbWlzZSwKKyAgICBwcm9t
aXNlX3JlamVjdHNfZXhhY3RseSh0LCB0aHJvd25FcnJvciwgdHMud3JpdGFibGUuZ2V0V3JpdGVy
KCkuY2xvc2VkLCAnY2xvc2VkIHNob3VsZCByZWplY3Qgd2l0aCB0aHJvd25FcnJvcicpCisgIF0p
OworfSwgJ2NvbnRyb2xsZXIuZXJyb3IoKSBzaG91bGQgZG8gbm90aGluZyBhZnRlciByZWFkYWJs
ZS5jYW5jZWwoKScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIGxldCBjb250cm9sbGVyOwor
ICBjb25zdCB0cyA9IG5ldyBUcmFuc2Zvcm1TdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAg
IGNvbnRyb2xsZXIgPSBjOworICAgIH0KKyAgfSk7CisgIHJldHVybiB0cy53cml0YWJsZS5hYm9y
dCh0aHJvd25FcnJvcikudGhlbigoKSA9PiB7CisgICAgY29udHJvbGxlci5lcnJvcihpZ25vcmVk
RXJyb3IpOworICAgIHJldHVybiBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCB0aHJvd25FcnJv
ciwgdHMud3JpdGFibGUuZ2V0V3JpdGVyKCkuY2xvc2VkLCAnY2xvc2VkIHNob3VsZCByZWplY3Qg
d2l0aCB0aHJvd25FcnJvcicpOworICB9KTsKK30sICdjb250cm9sbGVyLmVycm9yKCkgc2hvdWxk
IGRvIG5vdGhpbmcgYWZ0ZXIgd3JpdGFibGUuYWJvcnQoKSBoYXMgY29tcGxldGVkJyk7CisKK3By
b21pc2VfdGVzdCh0ID0+IHsKKyAgbGV0IGNvbnRyb2xsZXI7CisgIGNvbnN0IHRzID0gbmV3IFRy
YW5zZm9ybVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgY29udHJvbGxlciA9IGM7Cisg
ICAgfSwKKyAgICB0cmFuc2Zvcm0oKSB7CisgICAgICB0aHJvdyB0aHJvd25FcnJvcjsKKyAgICB9
CisgIH0sIHVuZGVmaW5lZCwgeyBoaWdoV2F0ZXJNYXJrOiBJbmZpbml0eSB9KTsKKyAgY29uc3Qg
d3JpdGVyID0gdHMud3JpdGFibGUuZ2V0V3JpdGVyKCk7CisgIHJldHVybiBwcm9taXNlX3JlamVj
dHNfZXhhY3RseSh0LCB0aHJvd25FcnJvciwgd3JpdGVyLndyaXRlKCksICd3cml0ZSgpIHNob3Vs
ZCByZWplY3QnKS50aGVuKCgpID0+IHsKKyAgICBjb250cm9sbGVyLmVycm9yKCk7CisgICAgcmV0
dXJuIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIHRocm93bkVycm9yLCB3cml0ZXIuY2xvc2Vk
LCAnY2xvc2VkIHNob3VsZCByZWplY3Qgd2l0aCB0aHJvd25FcnJvcicpOworICB9KTsKK30sICdj
b250cm9sbGVyLmVycm9yKCkgc2hvdWxkIGRvIG5vdGhpbmcgYWZ0ZXIgYSB0cmFuc2Zvcm1lciBt
ZXRob2QgaGFzIHRocm93biBhbiBleGNlcHRpb24nKTsKKworcHJvbWlzZV90ZXN0KHQgPT4gewor
ICBsZXQgY29udHJvbGxlcjsKKyAgbGV0IGNhbGxzID0gMDsKKyAgY29uc3QgdHMgPSBuZXcgVHJh
bnNmb3JtU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjb250cm9sbGVyID0gYzsKKyAg
ICB9LAorICAgIHRyYW5zZm9ybSgpIHsKKyAgICAgICsrY2FsbHM7CisgICAgfQorICB9LCB1bmRl
ZmluZWQsIHsgaGlnaFdhdGVyTWFyazogMSB9KTsKKyAgcmV0dXJuIGRlbGF5KDApLnRoZW4oKCkg
PT4geworICAgIC8vIENyZWF0ZSBiYWNrcHJlc3N1cmUuCisgICAgY29udHJvbGxlci5lbnF1ZXVl
KCdhJyk7CisgICAgY29uc3Qgd3JpdGVyID0gdHMud3JpdGFibGUuZ2V0V3JpdGVyKCk7CisgICAg
Ly8gdHJhbnNmb3JtKCkgd2lsbCBub3QgYmUgY2FsbGVkIHVudGlsIGJhY2twcmVzc3VyZSBpcyBy
ZWxpZXZlZC4KKyAgICBjb25zdCB3cml0ZVByb21pc2UgPSB3cml0ZXIud3JpdGUoJ2InKTsKKyAg
ICBhc3NlcnRfZXF1YWxzKGNhbGxzLCAwLCAndHJhbnNmb3JtKCkgc2hvdWxkIG5vdCBoYXZlIGJl
ZW4gY2FsbGVkJyk7CisgICAgY29udHJvbGxlci5lcnJvcih0aHJvd25FcnJvcik7CisgICAgLy8g
Tm93IGJhY2twcmVzc3VyZSBoYXMgYmVlbiByZWxpZXZlZCBhbmQgdGhlIHdyaXRlIGNhbiBwcm9j
ZWVkLgorICAgIHJldHVybiBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCB0aHJvd25FcnJvciwg
d3JpdGVQcm9taXNlLCAnd3JpdGUoKSBzaG91bGQgcmVqZWN0JykudGhlbigoKSA9PiB7CisgICAg
ICBhc3NlcnRfZXF1YWxzKGNhbGxzLCAwLCAndHJhbnNmb3JtKCkgc2hvdWxkIG5vdCBiZSBjYWxs
ZWQnKTsKKyAgICB9KTsKKyAgfSk7Cit9LCAnZXJyb3JpbmcgZHVyaW5nIHdyaXRlIHdpdGggYmFj
a3ByZXNzdXJlIHNob3VsZCByZXN1bHQgaW4gdGhlIHdyaXRlIGZhaWxpbmcnKTsKKworcHJvbWlz
ZV90ZXN0KHQgPT4geworICBjb25zdCB0cyA9IG5ldyBUcmFuc2Zvcm1TdHJlYW0oe30sIHVuZGVm
aW5lZCwgeyBoaWdoV2F0ZXJNYXJrOiAwIH0pOworICByZXR1cm4gZGVsYXkoMCkudGhlbigoKSA9
PiB7CisgICAgY29uc3Qgd3JpdGVyID0gdHMud3JpdGFibGUuZ2V0V3JpdGVyKCk7CisgICAgLy8g
d3JpdGUgc2hvdWxkIHN0YXJ0IHN5bmNocm9ub3VzbHkKKyAgICBjb25zdCB3cml0ZVByb21pc2Ug
PSB3cml0ZXIud3JpdGUoMCk7CisgICAgLy8gVGhlIHVuZGVybHlpbmcgc2luaydzIGFib3J0KCkg
aXMgbm90IGNhbGxlZCB1bnRpbCB0aGUgd3JpdGUoKSBjb21wbGV0ZXMuCisgICAgY29uc3QgYWJv
cnRQcm9taXNlID0gd3JpdGVyLmFib3J0KHRocm93bkVycm9yKTsKKyAgICAvLyBQZXJmb3JtIGEg
cmVhZCB0byByZWxpZXZlIGJhY2twcmVzc3VyZSBhbmQgcGVybWl0IHRoZSB3cml0ZSgpIHRvIGNv
bXBsZXRlLgorICAgIGNvbnN0IHJlYWRQcm9taXNlID0gdHMucmVhZGFibGUuZ2V0UmVhZGVyKCku
cmVhZCgpOworICAgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAgICBwcm9taXNlX3JlamVjdHNf
ZXhhY3RseSh0LCB0aHJvd25FcnJvciwgcmVhZFByb21pc2UsICdyZWFkKCkgc2hvdWxkIHJlamVj
dCcpLAorICAgICAgcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgdGhyb3duRXJyb3IsIHdyaXRl
UHJvbWlzZSwgJ3dyaXRlKCkgc2hvdWxkIHJlamVjdCcpLAorICAgICAgYWJvcnRQcm9taXNlCisg
ICAgXSk7CisgIH0pOworfSwgJ2Egd3JpdGUoKSB0aGF0IHdhcyB3YWl0aW5nIGZvciBiYWNrcHJl
c3N1cmUgc2hvdWxkIHJlamVjdCBpZiB0aGUgd3JpdGFibGUgaXMgYWJvcnRlZCcpOworCitwcm9t
aXNlX3Rlc3QodCA9PiB7CisgIGNvbnN0IHRzID0gbmV3IFRyYW5zZm9ybVN0cmVhbSgpOworICB0
cy53cml0YWJsZS5hYm9ydCh0aHJvd25FcnJvcik7CisgIGNvbnN0IHJlYWRlciA9IHRzLnJlYWRh
YmxlLmdldFJlYWRlcigpOworICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgdGhy
b3duRXJyb3IsIHJlYWRlci5yZWFkKCksICdyZWFkKCkgc2hvdWxkIHJlamVjdCB3aXRoIHRocm93
bkVycm9yJyk7Cit9LCAndGhlIHJlYWRhYmxlIHNob3VsZCBiZSBlcnJvcmVkIHdpdGggdGhlIHJl
YXNvbiBwYXNzZWQgdG8gdGhlIHdyaXRhYmxlIGFib3J0KCkgbWV0aG9kJyk7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvdHJh
bnNmb3JtLXN0cmVhbXMvZXJyb3JzLmFueS53b3JrZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJl
YW1zL2Vycm9ycy5hbnkud29ya2VyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZDNkNzhmM2Rh
M2I4N2E5YjZjODZlN2JkZDM5ZmFkMThiMDFhMDA1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1z
dHJlYW1zL2Vycm9ycy5hbnkud29ya2VyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQyIEBACisK
K0ZBSUwgVHJhbnNmb3JtU3RyZWFtIGVycm9ycyB0aHJvd24gaW4gdHJhbnNmb3JtIHB1dCB0aGUg
d3JpdGFibGUgYW5kIHJlYWRhYmxlIGluIGFuIGVycm9yZWQgc3RhdGUgQ2FuJ3QgZmluZCB2YXJp
YWJsZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIFRyYW5zZm9ybVN0cmVhbSBlcnJvcnMgdGhyb3du
IGluIGZsdXNoIHB1dCB0aGUgd3JpdGFibGUgYW5kIHJlYWRhYmxlIGluIGFuIGVycm9yZWQgc3Rh
dGUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIGVycm9yZWQgVHJh
bnNmb3JtU3RyZWFtIHNob3VsZCBub3QgZW5xdWV1ZSBuZXcgY2h1bmtzIENhbid0IGZpbmQgdmFy
aWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCBUcmFuc2Zvcm1TdHJlYW0gdHJhbnNmb3JtZXIu
c3RhcnQoKSByZWplY3RlZCBwcm9taXNlIHNob3VsZCBlcnJvciB0aGUgc3RyZWFtIENhbid0IGZp
bmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCB3aGVuIGNvbnRyb2xsZXIuZXJyb3Ig
aXMgZm9sbG93ZWQgYnkgYSByZWplY3Rpb24sIHRoZSBlcnJvciByZWFzb24gc2hvdWxkIGNvbWUg
ZnJvbSBjb250cm9sbGVyLmVycm9yIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVh
bQorRkFJTCBUcmFuc2Zvcm1TdHJlYW0gY29uc3RydWN0b3Igc2hvdWxkIHRocm93IHdoZW4gc3Rh
cnQgZG9lcyBhc3NlcnRfdGhyb3dzX2pzOiBjb25zdHJ1Y3RvciBzaG91bGQgdGhyb3cgZnVuY3Rp
b24gIigpID0+IG5ldyBUcmFuc2Zvcm1TdHJlYW0oeworICAgIHN0YXJ0KCkgeyB0aHJvdyBuZXcg
VVJJRXJyb3IoJ3N0YXJ0IHRocm93biBlcnJvcicpOyB9LAorICAgIHRyYW5zZm9ybSgpIHt9Cisg
IH0pIiB0aHJldyBvYmplY3QgIlJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBU
cmFuc2Zvcm1TdHJlYW0iICgiUmVmZXJlbmNlRXJyb3IiKSBleHBlY3RlZCBpbnN0YW5jZSBvZiBm
dW5jdGlvbiAiZnVuY3Rpb24gVVJJRXJyb3IoKSB7CisgICAgW25hdGl2ZSBjb2RlXQorfSIgKCJV
UklFcnJvciIpCitGQUlMIHdoZW4gc3RyYXRlZ3kuc2l6ZSB0aHJvd3MgaW5zaWRlIHN0YXJ0KCks
IHRoZSBjb25zdHJ1Y3RvciBzaG91bGQgdGhyb3cgdGhlIHNhbWUgZXJyb3IgYXNzZXJ0X3Rocm93
c19qczogY29uc3RydWN0b3Igc2hvdWxkIHRocm93IHRoZSBzYW1lIGVycm9yIHN0cmF0ZWd5LnNp
emUgdGhyb3dzIGZ1bmN0aW9uICIoKSA9PiBuZXcgVHJhbnNmb3JtU3RyZWFtKHsKKyAgICBzdGFy
dChjKSB7CisgICAgICBjLmVucXVldWUoJ2EnKTsKKyAgICB9LAorICAgIHRyYW5zZm9ybSgpIHt9
CisgIH0sIHVuZGVmaW5lZCwgc3RyYXRlZ3kpIiB0aHJldyBvYmplY3QgIlJlZmVyZW5jZUVycm9y
OiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0iICgiUmVmZXJlbmNlRXJyb3Ii
KSBleHBlY3RlZCBpbnN0YW5jZSBvZiBmdW5jdGlvbiAiZnVuY3Rpb24gVVJJRXJyb3IoKSB7Cisg
ICAgW25hdGl2ZSBjb2RlXQorfSIgKCJVUklFcnJvciIpCitGQUlMIHdoZW4gc3RyYXRlZ3kuc2l6
ZSBjYWxscyBjb250cm9sbGVyLmVycm9yKCkgdGhlbiB0aHJvd3MsIHRoZSBjb25zdHJ1Y3RvciBz
aG91bGQgdGhyb3cgdGhlIGZpcnN0IGVycm9yIGFzc2VydF90aHJvd3NfanM6IHRoZSBmaXJzdCBl
cnJvciBzaG91bGQgYmUgdGhyb3duIGZ1bmN0aW9uICIoKSA9PiBuZXcgVHJhbnNmb3JtU3RyZWFt
KHsKKyAgICBzdGFydChjKSB7CisgICAgICBjb250cm9sbGVyID0gYzsKKyAgICAgIGMuZW5xdWV1
ZSgnYScpOworICAgIH0sCisgICAgdHJhbnNmb3JtKCkge30KKyAgfSwgdW5kZWZpbmVkLCBzdHJh
dGVneSkiIHRocmV3IG9iamVjdCAiUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6
IFRyYW5zZm9ybVN0cmVhbSIgKCJSZWZlcmVuY2VFcnJvciIpIGV4cGVjdGVkIGluc3RhbmNlIG9m
IGZ1bmN0aW9uICJmdW5jdGlvbiBVUklFcnJvcigpIHsKKyAgICBbbmF0aXZlIGNvZGVdCit9IiAo
IlVSSUVycm9yIikKK0ZBSUwgY2FuY2VsbGluZyB0aGUgcmVhZGFibGUgc2lkZSBzaG91bGQgZXJy
b3IgdGhlIHdyaXRhYmxlIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJ
TCBpdCBzaG91bGQgYmUgcG9zc2libGUgdG8gZXJyb3IgdGhlIHJlYWRhYmxlIGJldHdlZW4gY2xv
c2UgcmVxdWVzdGVkIGFuZCBjb21wbGV0ZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1T
dHJlYW0KK0ZBSUwgYW4gZXhjZXB0aW9uIGZyb20gdHJhbnNmb3JtKCkgc2hvdWxkIGVycm9yIHRo
ZSBzdHJlYW0gaWYgdGVybWluYXRlIGhhcyBiZWVuIHJlcXVlc3RlZCBidXQgbm90IGNvbXBsZXRl
ZCBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgYWJvcnQgc2hvdWxk
IHNldCB0aGUgY2xvc2UgcmVhc29uIGZvciB0aGUgd3JpdGFibGUgd2hlbiBpdCBoYXBwZW5zIGJl
Zm9yZSBjYW5jZWwgZHVyaW5nIHN0YXJ0LCBidXQgY2FuY2VsIHNob3VsZCBzdGlsbCBzdWNjZWVk
IENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCBhYm9ydCBzaG91bGQg
c2V0IHRoZSBjbG9zZSByZWFzb24gZm9yIHRoZSB3cml0YWJsZSB3aGVuIGl0IGhhcHBlbnMgYmVm
b3JlIGNhbmNlbCBkdXJpbmcgdW5kZXJseWluZyBzaW5rIHdyaXRlLCBidXQgY2FuY2VsIHNob3Vs
ZCBzdGlsbCBzdWNjZWVkIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJ
TCBjb250cm9sbGVyLmVycm9yKCkgc2hvdWxkIGRvIG5vdGhpbmcgdGhlIHNlY29uZCB0aW1lIGl0
IGlzIGNhbGxlZCBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgY29u
dHJvbGxlci5lcnJvcigpIHNob3VsZCBkbyBub3RoaW5nIGFmdGVyIHJlYWRhYmxlLmNhbmNlbCgp
IENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCBjb250cm9sbGVyLmVy
cm9yKCkgc2hvdWxkIGRvIG5vdGhpbmcgYWZ0ZXIgd3JpdGFibGUuYWJvcnQoKSBoYXMgY29tcGxl
dGVkIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCBjb250cm9sbGVy
LmVycm9yKCkgc2hvdWxkIGRvIG5vdGhpbmcgYWZ0ZXIgYSB0cmFuc2Zvcm1lciBtZXRob2QgaGFz
IHRocm93biBhbiBleGNlcHRpb24gQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFt
CitGQUlMIGVycm9yaW5nIGR1cmluZyB3cml0ZSB3aXRoIGJhY2twcmVzc3VyZSBzaG91bGQgcmVz
dWx0IGluIHRoZSB3cml0ZSBmYWlsaW5nIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0
cmVhbQorRkFJTCBhIHdyaXRlKCkgdGhhdCB3YXMgd2FpdGluZyBmb3IgYmFja3ByZXNzdXJlIHNo
b3VsZCByZWplY3QgaWYgdGhlIHdyaXRhYmxlIGlzIGFib3J0ZWQgQ2FuJ3QgZmluZCB2YXJpYWJs
ZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIHRoZSByZWFkYWJsZSBzaG91bGQgYmUgZXJyb3JlZCB3
aXRoIHRoZSByZWFzb24gcGFzc2VkIHRvIHRoZSB3cml0YWJsZSBhYm9ydCgpIG1ldGhvZCBDYW4n
dCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJl
YW1zL2Vycm9ycy5hbnkud29ya2VyLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvdHJhbnNmb3JtLXN0cmVhbXMvZXJyb3JzLmFueS53b3Jr
ZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4yMzgyOTEzNTI4ZTY5M2IzYTVkNTZjNjYwYTQ1MDYwOTgwYjU0
OGMzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1zL2Vycm9ycy5hbnkud29ya2VyLmh0
bWwKQEAgLTAsMCArMSBAQAorPCEtLSBUaGlzIGZpbGUgaXMgcmVxdWlyZWQgZm9yIFdlYktpdCB0
ZXN0IGluZnJhc3RydWN0dXJlIHRvIHJ1biB0aGUgdGVtcGxhdGVkIHRlc3QgLS0+ClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1zL2ZsdXNoLmFueS1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMvdHJhbnNmb3JtLXN0cmVhbXMvZmx1c2guYW55LWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi44ZGVkODFhMTk0NDVmN2FhYjAyYmU2NDQxMTk2YWU4ODMzYzQ3NTNiCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJl
YW1zL3RyYW5zZm9ybS1zdHJlYW1zL2ZsdXNoLmFueS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw3
IEBACisKK0ZBSUwgVHJhbnNmb3JtU3RyZWFtIGZsdXNoIGlzIGNhbGxlZCBpbW1lZGlhdGVseSB3
aGVuIHRoZSB3cml0YWJsZSBpcyBjbG9zZWQsIGlmIG5vIHdyaXRlcyBhcmUgcXVldWVkIENhbid0
IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCBUcmFuc2Zvcm1TdHJlYW0gZmx1
c2ggaXMgY2FsbGVkIGFmdGVyIGFsbCBxdWV1ZWQgd3JpdGVzIGZpbmlzaCwgb25jZSB0aGUgd3Jp
dGFibGUgaXMgY2xvc2VkIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJ
TCBUcmFuc2Zvcm1TdHJlYW0gZmx1c2ggZ2V0cyBhIGNoYW5jZSB0byBlbnF1ZXVlIG1vcmUgaW50
byB0aGUgcmVhZGFibGUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitGQUlM
IFRyYW5zZm9ybVN0cmVhbSBmbHVzaCBnZXRzIGEgY2hhbmNlIHRvIGVucXVldWUgbW9yZSBpbnRv
IHRoZSByZWFkYWJsZSwgYW5kIGNhbiB0aGVuIGFzeW5jIGNsb3NlIENhbid0IGZpbmQgdmFyaWFi
bGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCBlcnJvcigpIGR1cmluZyBmbHVzaCBzaG91bGQgY2F1
c2Ugd3JpdGVyLmNsb3NlKCkgdG8gcmVqZWN0IENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9y
bVN0cmVhbQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMvdHJhbnNmb3JtLXN0cmVhbXMvZmx1c2guYW55Lmh0bWwgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvdHJhbnNmb3Jt
LXN0cmVhbXMvZmx1c2guYW55Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjM4MjkxMzUyOGU2OTNiM2E1ZDU2
YzY2MGE0NTA2MDk4MGI1NDhjMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy9mbHVz
aC5hbnkuaHRtbApAQCAtMCwwICsxIEBACis8IS0tIFRoaXMgZmlsZSBpcyByZXF1aXJlZCBmb3Ig
V2ViS2l0IHRlc3QgaW5mcmFzdHJ1Y3R1cmUgdG8gcnVuIHRoZSB0ZW1wbGF0ZWQgdGVzdCAtLT4K
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvdHJhbnNmb3JtLXN0cmVhbXMvZmx1
c2guYW55LmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
dHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1zL2ZsdXNoLmFueS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYzQwNTMy
OTU3YjE0YmRkYjI1NTUxMzNkYmQxYjJmNDI0ODQ2ZDg5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9y
bS1zdHJlYW1zL2ZsdXNoLmFueS5qcwpAQCAtMCwwICsxLDEzMSBAQAorLy8gTUVUQTogZ2xvYmFs
PXdpbmRvdyx3b3JrZXIsanNzaGVsbAorLy8gTUVUQTogc2NyaXB0PS4uL3Jlc291cmNlcy90ZXN0
LXV0aWxzLmpzCisndXNlIHN0cmljdCc7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisgIGxldCBm
bHVzaENhbGxlZCA9IGZhbHNlOworICBjb25zdCB0cyA9IG5ldyBUcmFuc2Zvcm1TdHJlYW0oewor
ICAgIHRyYW5zZm9ybSgpIHsgfSwKKyAgICBmbHVzaCgpIHsKKyAgICAgIGZsdXNoQ2FsbGVkID0g
dHJ1ZTsKKyAgICB9CisgIH0pOworCisgIHJldHVybiB0cy53cml0YWJsZS5nZXRXcml0ZXIoKS5j
bG9zZSgpLnRoZW4oKCkgPT4geworICAgIHJldHVybiBhc3NlcnRfdHJ1ZShmbHVzaENhbGxlZCwg
J2Nsb3NpbmcgdGhlIHdyaXRhYmxlIHRyaWdnZXJzIHRoZSB0cmFuc2Zvcm0gZmx1c2ggaW1tZWRp
YXRlbHknKTsKKyAgfSk7Cit9LCAnVHJhbnNmb3JtU3RyZWFtIGZsdXNoIGlzIGNhbGxlZCBpbW1l
ZGlhdGVseSB3aGVuIHRoZSB3cml0YWJsZSBpcyBjbG9zZWQsIGlmIG5vIHdyaXRlcyBhcmUgcXVl
dWVkJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisgIGxldCBmbHVzaENhbGxlZCA9IGZhbHNl
OworICBsZXQgcmVzb2x2ZVRyYW5zZm9ybTsKKyAgY29uc3QgdHMgPSBuZXcgVHJhbnNmb3JtU3Ry
ZWFtKHsKKyAgICB0cmFuc2Zvcm0oKSB7CisgICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2
ZSA9PiB7CisgICAgICAgIHJlc29sdmVUcmFuc2Zvcm0gPSByZXNvbHZlOworICAgICAgfSk7Cisg
ICAgfSwKKyAgICBmbHVzaCgpIHsKKyAgICAgIGZsdXNoQ2FsbGVkID0gdHJ1ZTsKKyAgICAgIHJl
dHVybiBuZXcgUHJvbWlzZSgoKSA9PiB7fSk7IC8vIG5ldmVyIHJlc29sdmVzCisgICAgfQorICB9
LCB1bmRlZmluZWQsIHsgaGlnaFdhdGVyTWFyazogMSB9KTsKKworICBjb25zdCB3cml0ZXIgPSB0
cy53cml0YWJsZS5nZXRXcml0ZXIoKTsKKyAgd3JpdGVyLndyaXRlKCdhJyk7CisgIHdyaXRlci5j
bG9zZSgpOworICBhc3NlcnRfZmFsc2UoZmx1c2hDYWxsZWQsICdjbG9zaW5nIHRoZSB3cml0YWJs
ZSBkb2VzIG5vdCBpbW1lZGlhdGVseSBjYWxsIGZsdXNoIGlmIHdyaXRlcyBhcmUgbm90IGZpbmlz
aGVkJyk7CisKKyAgbGV0IHJzQ2xvc2VkID0gZmFsc2U7CisgIHRzLnJlYWRhYmxlLmdldFJlYWRl
cigpLmNsb3NlZC50aGVuKCgpID0+IHsKKyAgICByc0Nsb3NlZCA9IHRydWU7CisgIH0pOworCisg
IHJldHVybiBkZWxheSgwKS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfZmFsc2UoZmx1c2hDYWxs
ZWQsICdjbG9zaW5nIHRoZSB3cml0YWJsZSBkb2VzIG5vdCBhc3luY2hyb25vdXNseSBjYWxsIGZs
dXNoIGlmIHdyaXRlcyBhcmUgbm90IGZpbmlzaGVkJyk7CisgICAgcmVzb2x2ZVRyYW5zZm9ybSgp
OworICAgIHJldHVybiBkZWxheSgwKTsKKyAgfSkudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X3Ry
dWUoZmx1c2hDYWxsZWQsICdmbHVzaCBpcyBldmVudHVhbGx5IGNhbGxlZCcpOworICAgIGFzc2Vy
dF9mYWxzZShyc0Nsb3NlZCwgJ2lmIGZsdXNoUHJvbWlzZSBkb2VzIG5vdCByZXNvbHZlLCB0aGUg
cmVhZGFibGUgZG9lcyBub3QgYmVjb21lIGNsb3NlZCcpOworICB9KTsKK30sICdUcmFuc2Zvcm1T
dHJlYW0gZmx1c2ggaXMgY2FsbGVkIGFmdGVyIGFsbCBxdWV1ZWQgd3JpdGVzIGZpbmlzaCwgb25j
ZSB0aGUgd3JpdGFibGUgaXMgY2xvc2VkJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisgIGxl
dCBjOworICBjb25zdCB0cyA9IG5ldyBUcmFuc2Zvcm1TdHJlYW0oeworICAgIHN0YXJ0KGNvbnRy
b2xsZXIpIHsKKyAgICAgIGMgPSBjb250cm9sbGVyOworICAgIH0sCisgICAgdHJhbnNmb3JtKCkg
eworICAgIH0sCisgICAgZmx1c2goKSB7CisgICAgICBjLmVucXVldWUoJ3gnKTsKKyAgICAgIGMu
ZW5xdWV1ZSgneScpOworICAgIH0KKyAgfSk7CisKKyAgY29uc3QgcmVhZGVyID0gdHMucmVhZGFi
bGUuZ2V0UmVhZGVyKCk7CisKKyAgY29uc3Qgd3JpdGVyID0gdHMud3JpdGFibGUuZ2V0V3JpdGVy
KCk7CisgIHdyaXRlci53cml0ZSgnYScpOworICB3cml0ZXIuY2xvc2UoKTsKKyAgcmV0dXJuIHJl
YWRlci5yZWFkKCkudGhlbihyZXN1bHQxID0+IHsKKyAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdDEu
dmFsdWUsICd4JywgJ3RoZSBmaXJzdCBjaHVuayByZWFkIGlzIHRoZSBmaXJzdCBvbmUgZW5xdWV1
ZWQgaW4gZmx1c2gnKTsKKyAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdDEuZG9uZSwgZmFsc2UsICd0
aGUgZmlyc3QgY2h1bmsgcmVhZCBpcyB0aGUgZmlyc3Qgb25lIGVucXVldWVkIGluIGZsdXNoJyk7
CisKKyAgICByZXR1cm4gcmVhZGVyLnJlYWQoKS50aGVuKHJlc3VsdDIgPT4geworICAgICAgYXNz
ZXJ0X2VxdWFscyhyZXN1bHQyLnZhbHVlLCAneScsICd0aGUgc2Vjb25kIGNodW5rIHJlYWQgaXMg
dGhlIHNlY29uZCBvbmUgZW5xdWV1ZWQgaW4gZmx1c2gnKTsKKyAgICAgIGFzc2VydF9lcXVhbHMo
cmVzdWx0Mi5kb25lLCBmYWxzZSwgJ3RoZSBzZWNvbmQgY2h1bmsgcmVhZCBpcyB0aGUgc2Vjb25k
IG9uZSBlbnF1ZXVlZCBpbiBmbHVzaCcpOworICAgIH0pOworICB9KTsKK30sICdUcmFuc2Zvcm1T
dHJlYW0gZmx1c2ggZ2V0cyBhIGNoYW5jZSB0byBlbnF1ZXVlIG1vcmUgaW50byB0aGUgcmVhZGFi
bGUnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgbGV0IGM7CisgIGNvbnN0IHRzID0gbmV3
IFRyYW5zZm9ybVN0cmVhbSh7CisgICAgc3RhcnQoY29udHJvbGxlcikgeworICAgICAgYyA9IGNv
bnRyb2xsZXI7CisgICAgfSwKKyAgICB0cmFuc2Zvcm0oKSB7CisgICAgfSwKKyAgICBmbHVzaCgp
IHsKKyAgICAgIGMuZW5xdWV1ZSgneCcpOworICAgICAgYy5lbnF1ZXVlKCd5Jyk7CisgICAgICBy
ZXR1cm4gZGVsYXkoMCk7CisgICAgfQorICB9KTsKKworICBjb25zdCByZWFkZXIgPSB0cy5yZWFk
YWJsZS5nZXRSZWFkZXIoKTsKKworICBjb25zdCB3cml0ZXIgPSB0cy53cml0YWJsZS5nZXRXcml0
ZXIoKTsKKyAgd3JpdGVyLndyaXRlKCdhJyk7CisgIHdyaXRlci5jbG9zZSgpOworCisgIHJldHVy
biBQcm9taXNlLmFsbChbCisgICAgcmVhZGVyLnJlYWQoKS50aGVuKHJlc3VsdDEgPT4geworICAg
ICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQxLnZhbHVlLCAneCcsICd0aGUgZmlyc3QgY2h1bmsgcmVh
ZCBpcyB0aGUgZmlyc3Qgb25lIGVucXVldWVkIGluIGZsdXNoJyk7CisgICAgICBhc3NlcnRfZXF1
YWxzKHJlc3VsdDEuZG9uZSwgZmFsc2UsICd0aGUgZmlyc3QgY2h1bmsgcmVhZCBpcyB0aGUgZmly
c3Qgb25lIGVucXVldWVkIGluIGZsdXNoJyk7CisKKyAgICAgIHJldHVybiByZWFkZXIucmVhZCgp
LnRoZW4ocmVzdWx0MiA9PiB7CisgICAgICAgIGFzc2VydF9lcXVhbHMocmVzdWx0Mi52YWx1ZSwg
J3knLCAndGhlIHNlY29uZCBjaHVuayByZWFkIGlzIHRoZSBzZWNvbmQgb25lIGVucXVldWVkIGlu
IGZsdXNoJyk7CisgICAgICAgIGFzc2VydF9lcXVhbHMocmVzdWx0Mi5kb25lLCBmYWxzZSwgJ3Ro
ZSBzZWNvbmQgY2h1bmsgcmVhZCBpcyB0aGUgc2Vjb25kIG9uZSBlbnF1ZXVlZCBpbiBmbHVzaCcp
OworICAgICAgfSk7CisgICAgfSksCisgICAgcmVhZGVyLmNsb3NlZC50aGVuKCgpID0+IHsKKyAg
ICAgIGFzc2VydF90cnVlKHRydWUsICdyZWFkYWJsZSByZWFkZXIgYmVjb21lcyBjbG9zZWQnKTsK
KyAgICB9KQorICBdKTsKK30sICdUcmFuc2Zvcm1TdHJlYW0gZmx1c2ggZ2V0cyBhIGNoYW5jZSB0
byBlbnF1ZXVlIG1vcmUgaW50byB0aGUgcmVhZGFibGUsIGFuZCBjYW4gdGhlbiBhc3luYyBjbG9z
ZScpOworCitjb25zdCBlcnJvcjEgPSBuZXcgRXJyb3IoJ2Vycm9yMScpOworZXJyb3IxLm5hbWUg
PSAnZXJyb3IxJzsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBjb25zdCB0cyA9IG5ldyBUcmFu
c2Zvcm1TdHJlYW0oeworICAgIGZsdXNoKGNvbnRyb2xsZXIpIHsKKyAgICAgIGNvbnRyb2xsZXIu
ZXJyb3IoZXJyb3IxKTsKKyAgICB9CisgIH0pOworICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2V4
YWN0bHkodCwgZXJyb3IxLCB0cy53cml0YWJsZS5nZXRXcml0ZXIoKS5jbG9zZSgpLCAnY2xvc2Uo
KSBzaG91bGQgcmVqZWN0Jyk7Cit9LCAnZXJyb3IoKSBkdXJpbmcgZmx1c2ggc2hvdWxkIGNhdXNl
IHdyaXRlci5jbG9zZSgpIHRvIHJlamVjdCcpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1zL2Zs
dXNoLmFueS53b3JrZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1zL2ZsdXNoLmFueS53b3Jr
ZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhkZWQ4MWExOTQ0NWY3YWFiMDJiZTY0NDExOTZh
ZTg4MzNjNDc1M2IKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvdHJhbnNmb3JtLXN0cmVhbXMvZmx1c2guYW55Lndv
cmtlci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw3IEBACisKK0ZBSUwgVHJhbnNmb3JtU3RyZWFt
IGZsdXNoIGlzIGNhbGxlZCBpbW1lZGlhdGVseSB3aGVuIHRoZSB3cml0YWJsZSBpcyBjbG9zZWQs
IGlmIG5vIHdyaXRlcyBhcmUgcXVldWVkIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0
cmVhbQorRkFJTCBUcmFuc2Zvcm1TdHJlYW0gZmx1c2ggaXMgY2FsbGVkIGFmdGVyIGFsbCBxdWV1
ZWQgd3JpdGVzIGZpbmlzaCwgb25jZSB0aGUgd3JpdGFibGUgaXMgY2xvc2VkIENhbid0IGZpbmQg
dmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCBUcmFuc2Zvcm1TdHJlYW0gZmx1c2ggZ2V0
cyBhIGNoYW5jZSB0byBlbnF1ZXVlIG1vcmUgaW50byB0aGUgcmVhZGFibGUgQ2FuJ3QgZmluZCB2
YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIFRyYW5zZm9ybVN0cmVhbSBmbHVzaCBnZXRz
IGEgY2hhbmNlIHRvIGVucXVldWUgbW9yZSBpbnRvIHRoZSByZWFkYWJsZSwgYW5kIGNhbiB0aGVu
IGFzeW5jIGNsb3NlIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCBl
cnJvcigpIGR1cmluZyBmbHVzaCBzaG91bGQgY2F1c2Ugd3JpdGVyLmNsb3NlKCkgdG8gcmVqZWN0
IENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvdHJhbnNmb3Jt
LXN0cmVhbXMvZmx1c2guYW55Lndvcmtlci5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1zL2ZsdXNoLmFueS53
b3JrZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMzgyOTEzNTI4ZTY5M2IzYTVkNTZjNjYwYTQ1MDYwOTgw
YjU0OGMzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1zL2ZsdXNoLmFueS53b3JrZXIu
aHRtbApAQCAtMCwwICsxIEBACis8IS0tIFRoaXMgZmlsZSBpcyByZXF1aXJlZCBmb3IgV2ViS2l0
IHRlc3QgaW5mcmFzdHJ1Y3R1cmUgdG8gcnVuIHRoZSB0ZW1wbGF0ZWQgdGVzdCAtLT4KXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvdHJhbnNmb3JtLXN0cmVhbXMvZ2VuZXJhbC5h
bnktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1zL2dlbmVyYWwuYW55LWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5kZGEzNDQ5Y2JkZTM3OWJlNjE2MDU3OTU0OTdjMWIxNThiODFhYTUxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1zL2dlbmVyYWwuYW55LWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDMxIEBACisKK0ZBSUwgVHJhbnNmb3JtU3RyZWFtIGNhbiBiZSBjb25zdHJ1Y3RlZCB3
aXRoIGEgdHJhbnNmb3JtIGZ1bmN0aW9uIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0
cmVhbQorRkFJTCBUcmFuc2Zvcm1TdHJlYW0gY2FuIGJlIGNvbnN0cnVjdGVkIHdpdGggbm8gdHJh
bnNmb3JtIGZ1bmN0aW9uIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJ
TCBUcmFuc2Zvcm1TdHJlYW0gd3JpdGFibGUgc3RhcnRzIGluIHRoZSB3cml0YWJsZSBzdGF0ZSBD
YW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgSWRlbnRpdHkgVHJhbnNm
b3JtU3RyZWFtOiBjYW4gcmVhZCBmcm9tIHJlYWRhYmxlIHdoYXQgaXMgcHV0IGludG8gd3JpdGFi
bGUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIFVwcGVyY2FzZXIg
c3luYyBUcmFuc2Zvcm1TdHJlYW06IGNhbiByZWFkIGZyb20gcmVhZGFibGUgdHJhbnNmb3JtZWQg
dmVyc2lvbiBvZiB3aGF0IGlzIHB1dCBpbnRvIHdyaXRhYmxlIENhbid0IGZpbmQgdmFyaWFibGU6
IFRyYW5zZm9ybVN0cmVhbQorRkFJTCBVcHBlcmNhc2VyLWRvdWJsZXIgc3luYyBUcmFuc2Zvcm1T
dHJlYW06IGNhbiByZWFkIGJvdGggY2h1bmtzIHB1dCBpbnRvIHRoZSByZWFkYWJsZSBDYW4ndCBm
aW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgVXBwZXJjYXNlciBhc3luYyBUcmFu
c2Zvcm1TdHJlYW06IGNhbiByZWFkIGZyb20gcmVhZGFibGUgdHJhbnNmb3JtZWQgdmVyc2lvbiBv
ZiB3aGF0IGlzIHB1dCBpbnRvIHdyaXRhYmxlIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9y
bVN0cmVhbQorRkFJTCBVcHBlcmNhc2VyLWRvdWJsZXIgYXN5bmMgVHJhbnNmb3JtU3RyZWFtOiBj
YW4gcmVhZCBib3RoIGNodW5rcyBwdXQgaW50byB0aGUgcmVhZGFibGUgQ2FuJ3QgZmluZCB2YXJp
YWJsZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIFRyYW5zZm9ybVN0cmVhbTogYnkgZGVmYXVsdCwg
Y2xvc2luZyB0aGUgd3JpdGFibGUgY2xvc2VzIHRoZSByZWFkYWJsZSAod2hlbiB0aGVyZSBhcmUg
bm8gcXVldWVkIHdyaXRlcykgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitG
QUlMIFRyYW5zZm9ybVN0cmVhbTogYnkgZGVmYXVsdCwgY2xvc2luZyB0aGUgd3JpdGFibGUgd2Fp
dHMgZm9yIHRyYW5zZm9ybXMgdG8gZmluaXNoIGJlZm9yZSBjbG9zaW5nIGJvdGggQ2FuJ3QgZmlu
ZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIFRyYW5zZm9ybVN0cmVhbTogYnkgZGVm
YXVsdCwgY2xvc2luZyB0aGUgd3JpdGFibGUgY2xvc2VzIHRoZSByZWFkYWJsZSBhZnRlciBzeW5j
IGVucXVldWVzIGFuZCBhc3luYyBkb25lIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0
cmVhbQorRkFJTCBUcmFuc2Zvcm1TdHJlYW06IGJ5IGRlZmF1bHQsIGNsb3NpbmcgdGhlIHdyaXRh
YmxlIGNsb3NlcyB0aGUgcmVhZGFibGUgYWZ0ZXIgYXN5bmMgZW5xdWV1ZXMgYW5kIGFzeW5jIGRv
bmUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIFRyYW5zZm9ybSBz
dHJlYW0gc2hvdWxkIGNhbGwgdHJhbnNmb3JtZXIgbWV0aG9kcyBhcyBtZXRob2RzIENhbid0IGZp
bmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCBtZXRob2RzIHNob3VsZCBub3Qgbm90
IGhhdmUgLmFwcGx5KCkgb3IgLmNhbGwoKSBjYWxsZWQgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJh
bnNmb3JtU3RyZWFtCitGQUlMIFRyYW5zZm9ybVN0cmVhbSBzdGFydCwgdHJhbnNmb3JtLCBhbmQg
Zmx1c2ggc2hvdWxkIGJlIHN0cmljdGx5IG9yZGVyZWQgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJh
bnNmb3JtU3RyZWFtCitGQUlMIGl0IHNob3VsZCBiZSBwb3NzaWJsZSB0byBjYWxsIHRyYW5zZm9y
bSgpIHN5bmNocm9ub3VzbHkgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitG
QUlMIGNsb3NpbmcgdGhlIHdyaXRhYmxlIHNob3VsZCBjbG9zZSB0aGUgcmVhZGFibGUgd2hlbiB0
aGVyZSBhcmUgbm8gcXVldWVkIGNodW5rcywgZXZlbiB3aXRoIGJhY2twcmVzc3VyZSBDYW4ndCBm
aW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgZW5xdWV1ZSgpIHNob3VsZCB0aHJv
dyBhZnRlciBjb250cm9sbGVyLnRlcm1pbmF0ZSgpIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5z
Zm9ybVN0cmVhbQorRkFJTCBlbnF1ZXVlKCkgc2hvdWxkIHRocm93IGFmdGVyIHJlYWRhYmxlLmNh
bmNlbCgpIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCBjb250cm9s
bGVyLnRlcm1pbmF0ZSgpIHNob3VsZCBkbyBub3RoaW5nIHRoZSBzZWNvbmQgdGltZSBpdCBpcyBj
YWxsZWQgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIHRlcm1pbmF0
ZSgpIHNob3VsZCBkbyBub3RoaW5nIGFmdGVyIHJlYWRhYmxlLmNhbmNlbCgpIENhbid0IGZpbmQg
dmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCBzdGFydCgpIHNob3VsZCBub3QgYmUgY2Fs
bGVkIHR3aWNlIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCBzcGVj
aWZ5aW5nIGEgZGVmaW5lZCByZWFkYWJsZVR5cGUgc2hvdWxkIHRocm93IGFzc2VydF90aHJvd3Nf
anM6IGNvbnN0cnVjdG9yIHNob3VsZCB0aHJvdyBmdW5jdGlvbiAiKCkgPT4gbmV3IFRyYW5zZm9y
bVN0cmVhbSh7IHJlYWRhYmxlVHlwZTogJ2J5dGVzJyB9KSIgdGhyZXcgb2JqZWN0ICJSZWZlcmVu
Y2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtIiAoIlJlZmVyZW5j
ZUVycm9yIikgZXhwZWN0ZWQgaW5zdGFuY2Ugb2YgZnVuY3Rpb24gImZ1bmN0aW9uIFJhbmdlRXJy
b3IoKSB7CisgICAgW25hdGl2ZSBjb2RlXQorfSIgKCJSYW5nZUVycm9yIikKK0ZBSUwgc3BlY2lm
eWluZyBhIGRlZmluZWQgd3JpdGFibGVUeXBlIHNob3VsZCB0aHJvdyBhc3NlcnRfdGhyb3dzX2pz
OiBjb25zdHJ1Y3RvciBzaG91bGQgdGhyb3cgZnVuY3Rpb24gIigpID0+IG5ldyBUcmFuc2Zvcm1T
dHJlYW0oeyB3cml0YWJsZVR5cGU6ICdieXRlcycgfSkiIHRocmV3IG9iamVjdCAiUmVmZXJlbmNl
RXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbSIgKCJSZWZlcmVuY2VF
cnJvciIpIGV4cGVjdGVkIGluc3RhbmNlIG9mIGZ1bmN0aW9uICJmdW5jdGlvbiBSYW5nZUVycm9y
KCkgeworICAgIFtuYXRpdmUgY29kZV0KK30iICgiUmFuZ2VFcnJvciIpCitGQUlMIFN1YmNsYXNz
aW5nIFRyYW5zZm9ybVN0cmVhbSBzaG91bGQgd29yayBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFu
c2Zvcm1TdHJlYW0KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1zL2dlbmVyYWwuYW55Lmh0bWwg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvdHJh
bnNmb3JtLXN0cmVhbXMvZ2VuZXJhbC5hbnkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMzgyOTEzNTI4ZTY5
M2IzYTVkNTZjNjYwYTQ1MDYwOTgwYjU0OGMzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJl
YW1zL2dlbmVyYWwuYW55Lmh0bWwKQEAgLTAsMCArMSBAQAorPCEtLSBUaGlzIGZpbGUgaXMgcmVx
dWlyZWQgZm9yIFdlYktpdCB0ZXN0IGluZnJhc3RydWN0dXJlIHRvIHJ1biB0aGUgdGVtcGxhdGVk
IHRlc3QgLS0+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1z
dHJlYW1zL2dlbmVyYWwuYW55LmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1zL2dlbmVyYWwuYW55LmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmQ0ZjJhMWQ1YTI5Y2Y2ZGExYTM2MDhjMzI2ZjU4Yzc4ZDA1ODAwOTQKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMvdHJhbnNmb3JtLXN0cmVhbXMvZ2VuZXJhbC5hbnkuanMKQEAgLTAsMCArMSw0MzcgQEAK
Ky8vIE1FVEE6IGdsb2JhbD13aW5kb3csd29ya2VyLGpzc2hlbGwKKy8vIE1FVEE6IHNjcmlwdD0u
Li9yZXNvdXJjZXMvdGVzdC11dGlscy5qcworLy8gTUVUQTogc2NyaXB0PS4uL3Jlc291cmNlcy9y
cy11dGlscy5qcworJ3VzZSBzdHJpY3QnOworCit0ZXN0KCgpID0+IHsKKyAgbmV3IFRyYW5zZm9y
bVN0cmVhbSh7IHRyYW5zZm9ybSgpIHsgfSB9KTsKK30sICdUcmFuc2Zvcm1TdHJlYW0gY2FuIGJl
IGNvbnN0cnVjdGVkIHdpdGggYSB0cmFuc2Zvcm0gZnVuY3Rpb24nKTsKKwordGVzdCgoKSA9PiB7
CisgIG5ldyBUcmFuc2Zvcm1TdHJlYW0oKTsKKyAgbmV3IFRyYW5zZm9ybVN0cmVhbSh7fSk7Cit9
LCAnVHJhbnNmb3JtU3RyZWFtIGNhbiBiZSBjb25zdHJ1Y3RlZCB3aXRoIG5vIHRyYW5zZm9ybSBm
dW5jdGlvbicpOworCit0ZXN0KCgpID0+IHsKKyAgY29uc3QgdHMgPSBuZXcgVHJhbnNmb3JtU3Ry
ZWFtKHsgdHJhbnNmb3JtKCkgeyB9IH0pOworCisgIGNvbnN0IHdyaXRlciA9IHRzLndyaXRhYmxl
LmdldFdyaXRlcigpOworICBhc3NlcnRfZXF1YWxzKHdyaXRlci5kZXNpcmVkU2l6ZSwgMSwgJ3dy
aXRlci5kZXNpcmVkU2l6ZSBzaG91bGQgYmUgMScpOworfSwgJ1RyYW5zZm9ybVN0cmVhbSB3cml0
YWJsZSBzdGFydHMgaW4gdGhlIHdyaXRhYmxlIHN0YXRlJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9
PiB7CisgIGNvbnN0IHRzID0gbmV3IFRyYW5zZm9ybVN0cmVhbSgpOworCisgIGNvbnN0IHdyaXRl
ciA9IHRzLndyaXRhYmxlLmdldFdyaXRlcigpOworICB3cml0ZXIud3JpdGUoJ2EnKTsKKyAgYXNz
ZXJ0X2VxdWFscyh3cml0ZXIuZGVzaXJlZFNpemUsIDAsICd3cml0ZXIuZGVzaXJlZFNpemUgc2hv
dWxkIGJlIDAgYWZ0ZXIgd3JpdGUoKScpOworCisgIHJldHVybiB0cy5yZWFkYWJsZS5nZXRSZWFk
ZXIoKS5yZWFkKCkudGhlbihyZXN1bHQgPT4geworICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LnZh
bHVlLCAnYScsCisgICAgICAncmVzdWx0IGZyb20gcmVhZGluZyB0aGUgcmVhZGFibGUgaXMgdGhl
IHNhbWUgYXMgd2FzIHdyaXR0ZW4gdG8gd3JpdGFibGUnKTsKKyAgICBhc3NlcnRfZmFsc2UocmVz
dWx0LmRvbmUsICdzdHJlYW0gc2hvdWxkIG5vdCBiZSBkb25lJyk7CisKKyAgICByZXR1cm4gZGVs
YXkoMCkudGhlbigoKSA9PiBhc3NlcnRfZXF1YWxzKHdyaXRlci5kZXNpcmVkU2l6ZSwgMSwgJ2Rl
c2lyZWRTaXplIHNob3VsZCBiZSAxIGFnYWluJykpOworICB9KTsKK30sICdJZGVudGl0eSBUcmFu
c2Zvcm1TdHJlYW06IGNhbiByZWFkIGZyb20gcmVhZGFibGUgd2hhdCBpcyBwdXQgaW50byB3cml0
YWJsZScpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworICBsZXQgYzsKKyAgY29uc3QgdHMgPSBu
ZXcgVHJhbnNmb3JtU3RyZWFtKHsKKyAgICBzdGFydChjb250cm9sbGVyKSB7CisgICAgICBjID0g
Y29udHJvbGxlcjsKKyAgICB9LAorICAgIHRyYW5zZm9ybShjaHVuaykgeworICAgICAgYy5lbnF1
ZXVlKGNodW5rLnRvVXBwZXJDYXNlKCkpOworICAgIH0KKyAgfSk7CisKKyAgY29uc3Qgd3JpdGVy
ID0gdHMud3JpdGFibGUuZ2V0V3JpdGVyKCk7CisgIHdyaXRlci53cml0ZSgnYScpOworCisgIHJl
dHVybiB0cy5yZWFkYWJsZS5nZXRSZWFkZXIoKS5yZWFkKCkudGhlbihyZXN1bHQgPT4geworICAg
IGFzc2VydF9lcXVhbHMocmVzdWx0LnZhbHVlLCAnQScsCisgICAgICAncmVzdWx0IGZyb20gcmVh
ZGluZyB0aGUgcmVhZGFibGUgaXMgdGhlIHRyYW5zZm9ybWF0aW9uIG9mIHdoYXQgd2FzIHdyaXR0
ZW4gdG8gd3JpdGFibGUnKTsKKyAgICBhc3NlcnRfZmFsc2UocmVzdWx0LmRvbmUsICdzdHJlYW0g
c2hvdWxkIG5vdCBiZSBkb25lJyk7CisgIH0pOworfSwgJ1VwcGVyY2FzZXIgc3luYyBUcmFuc2Zv
cm1TdHJlYW06IGNhbiByZWFkIGZyb20gcmVhZGFibGUgdHJhbnNmb3JtZWQgdmVyc2lvbiBvZiB3
aGF0IGlzIHB1dCBpbnRvIHdyaXRhYmxlJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisgIGxl
dCBjOworICBjb25zdCB0cyA9IG5ldyBUcmFuc2Zvcm1TdHJlYW0oeworICAgIHN0YXJ0KGNvbnRy
b2xsZXIpIHsKKyAgICAgIGMgPSBjb250cm9sbGVyOworICAgIH0sCisgICAgdHJhbnNmb3JtKGNo
dW5rKSB7CisgICAgICBjLmVucXVldWUoY2h1bmsudG9VcHBlckNhc2UoKSk7CisgICAgICBjLmVu
cXVldWUoY2h1bmsudG9VcHBlckNhc2UoKSk7CisgICAgfQorICB9KTsKKworICBjb25zdCB3cml0
ZXIgPSB0cy53cml0YWJsZS5nZXRXcml0ZXIoKTsKKyAgd3JpdGVyLndyaXRlKCdhJyk7CisKKyAg
Y29uc3QgcmVhZGVyID0gdHMucmVhZGFibGUuZ2V0UmVhZGVyKCk7CisKKyAgcmV0dXJuIHJlYWRl
ci5yZWFkKCkudGhlbihyZXN1bHQxID0+IHsKKyAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdDEudmFs
dWUsICdBJywKKyAgICAgICd0aGUgZmlyc3QgY2h1bmsgcmVhZCBpcyB0aGUgdHJhbnNmb3JtYXRp
b24gb2YgdGhlIHNpbmdsZSBjaHVuayB3cml0dGVuJyk7CisgICAgYXNzZXJ0X2ZhbHNlKHJlc3Vs
dDEuZG9uZSwgJ3N0cmVhbSBzaG91bGQgbm90IGJlIGRvbmUnKTsKKworICAgIHJldHVybiByZWFk
ZXIucmVhZCgpLnRoZW4ocmVzdWx0MiA9PiB7CisgICAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdDIu
dmFsdWUsICdBJywKKyAgICAgICAgJ3RoZSBzZWNvbmQgY2h1bmsgcmVhZCBpcyBhbHNvIHRoZSB0
cmFuc2Zvcm1hdGlvbiBvZiB0aGUgc2luZ2xlIGNodW5rIHdyaXR0ZW4nKTsKKyAgICAgIGFzc2Vy
dF9mYWxzZShyZXN1bHQyLmRvbmUsICdzdHJlYW0gc2hvdWxkIG5vdCBiZSBkb25lJyk7CisgICAg
fSk7CisgIH0pOworfSwgJ1VwcGVyY2FzZXItZG91YmxlciBzeW5jIFRyYW5zZm9ybVN0cmVhbTog
Y2FuIHJlYWQgYm90aCBjaHVua3MgcHV0IGludG8gdGhlIHJlYWRhYmxlJyk7CisKK3Byb21pc2Vf
dGVzdCgoKSA9PiB7CisgIGxldCBjOworICBjb25zdCB0cyA9IG5ldyBUcmFuc2Zvcm1TdHJlYW0o
eworICAgIHN0YXJ0KGNvbnRyb2xsZXIpIHsKKyAgICAgIGMgPSBjb250cm9sbGVyOworICAgIH0s
CisgICAgdHJhbnNmb3JtKGNodW5rKSB7CisgICAgICByZXR1cm4gZGVsYXkoMCkudGhlbigoKSA9
PiBjLmVucXVldWUoY2h1bmsudG9VcHBlckNhc2UoKSkpOworICAgIH0KKyAgfSk7CisKKyAgY29u
c3Qgd3JpdGVyID0gdHMud3JpdGFibGUuZ2V0V3JpdGVyKCk7CisgIHdyaXRlci53cml0ZSgnYScp
OworCisgIHJldHVybiB0cy5yZWFkYWJsZS5nZXRSZWFkZXIoKS5yZWFkKCkudGhlbihyZXN1bHQg
PT4geworICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LnZhbHVlLCAnQScsCisgICAgICAncmVzdWx0
IGZyb20gcmVhZGluZyB0aGUgcmVhZGFibGUgaXMgdGhlIHRyYW5zZm9ybWF0aW9uIG9mIHdoYXQg
d2FzIHdyaXR0ZW4gdG8gd3JpdGFibGUnKTsKKyAgICBhc3NlcnRfZmFsc2UocmVzdWx0LmRvbmUs
ICdzdHJlYW0gc2hvdWxkIG5vdCBiZSBkb25lJyk7CisgIH0pOworfSwgJ1VwcGVyY2FzZXIgYXN5
bmMgVHJhbnNmb3JtU3RyZWFtOiBjYW4gcmVhZCBmcm9tIHJlYWRhYmxlIHRyYW5zZm9ybWVkIHZl
cnNpb24gb2Ygd2hhdCBpcyBwdXQgaW50byB3cml0YWJsZScpOworCitwcm9taXNlX3Rlc3QoKCkg
PT4geworICBsZXQgZG9TZWNvbmRFbnF1ZXVlOworICBsZXQgcmV0dXJuRnJvbVRyYW5zZm9ybTsK
KyAgY29uc3QgdHMgPSBuZXcgVHJhbnNmb3JtU3RyZWFtKHsKKyAgICB0cmFuc2Zvcm0oY2h1bmss
IGNvbnRyb2xsZXIpIHsKKyAgICAgIGRlbGF5KDApLnRoZW4oKCkgPT4gY29udHJvbGxlci5lbnF1
ZXVlKGNodW5rLnRvVXBwZXJDYXNlKCkpKTsKKyAgICAgIGRvU2Vjb25kRW5xdWV1ZSA9ICgpID0+
IGNvbnRyb2xsZXIuZW5xdWV1ZShjaHVuay50b1VwcGVyQ2FzZSgpKTsKKyAgICAgIHJldHVybiBu
ZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKKyAgICAgICAgcmV0dXJuRnJvbVRyYW5zZm9ybSA9IHJl
c29sdmU7CisgICAgICB9KTsKKyAgICB9CisgIH0pOworCisgIGNvbnN0IHJlYWRlciA9IHRzLnJl
YWRhYmxlLmdldFJlYWRlcigpOworCisgIGNvbnN0IHdyaXRlciA9IHRzLndyaXRhYmxlLmdldFdy
aXRlcigpOworICB3cml0ZXIud3JpdGUoJ2EnKTsKKworICByZXR1cm4gcmVhZGVyLnJlYWQoKS50
aGVuKHJlc3VsdDEgPT4geworICAgIGFzc2VydF9lcXVhbHMocmVzdWx0MS52YWx1ZSwgJ0EnLAor
ICAgICAgJ3RoZSBmaXJzdCBjaHVuayByZWFkIGlzIHRoZSB0cmFuc2Zvcm1hdGlvbiBvZiB0aGUg
c2luZ2xlIGNodW5rIHdyaXR0ZW4nKTsKKyAgICBhc3NlcnRfZmFsc2UocmVzdWx0MS5kb25lLCAn
c3RyZWFtIHNob3VsZCBub3QgYmUgZG9uZScpOworICAgIGRvU2Vjb25kRW5xdWV1ZSgpOworCisg
ICAgcmV0dXJuIHJlYWRlci5yZWFkKCkudGhlbihyZXN1bHQyID0+IHsKKyAgICAgIGFzc2VydF9l
cXVhbHMocmVzdWx0Mi52YWx1ZSwgJ0EnLAorICAgICAgICAndGhlIHNlY29uZCBjaHVuayByZWFk
IGlzIGFsc28gdGhlIHRyYW5zZm9ybWF0aW9uIG9mIHRoZSBzaW5nbGUgY2h1bmsgd3JpdHRlbicp
OworICAgICAgYXNzZXJ0X2ZhbHNlKHJlc3VsdDIuZG9uZSwgJ3N0cmVhbSBzaG91bGQgbm90IGJl
IGRvbmUnKTsKKyAgICAgIHJldHVybkZyb21UcmFuc2Zvcm0oKTsKKyAgICB9KTsKKyAgfSk7Cit9
LCAnVXBwZXJjYXNlci1kb3VibGVyIGFzeW5jIFRyYW5zZm9ybVN0cmVhbTogY2FuIHJlYWQgYm90
aCBjaHVua3MgcHV0IGludG8gdGhlIHJlYWRhYmxlJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7
CisgIGNvbnN0IHRzID0gbmV3IFRyYW5zZm9ybVN0cmVhbSh7IHRyYW5zZm9ybSgpIHsgfSB9KTsK
KworICBjb25zdCB3cml0ZXIgPSB0cy53cml0YWJsZS5nZXRXcml0ZXIoKTsKKyAgd3JpdGVyLmNs
b3NlKCk7CisKKyAgcmV0dXJuIFByb21pc2UuYWxsKFt3cml0ZXIuY2xvc2VkLCB0cy5yZWFkYWJs
ZS5nZXRSZWFkZXIoKS5jbG9zZWRdKTsKK30sICdUcmFuc2Zvcm1TdHJlYW06IGJ5IGRlZmF1bHQs
IGNsb3NpbmcgdGhlIHdyaXRhYmxlIGNsb3NlcyB0aGUgcmVhZGFibGUgKHdoZW4gdGhlcmUgYXJl
IG5vIHF1ZXVlZCB3cml0ZXMpJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisgIGxldCB0cmFu
c2Zvcm1SZXNvbHZlOworICBjb25zdCB0cmFuc2Zvcm1Qcm9taXNlID0gbmV3IFByb21pc2UocmVz
b2x2ZSA9PiB7CisgICAgdHJhbnNmb3JtUmVzb2x2ZSA9IHJlc29sdmU7CisgIH0pOworICBjb25z
dCB0cyA9IG5ldyBUcmFuc2Zvcm1TdHJlYW0oeworICAgIHRyYW5zZm9ybSgpIHsKKyAgICAgIHJl
dHVybiB0cmFuc2Zvcm1Qcm9taXNlOworICAgIH0KKyAgfSwgdW5kZWZpbmVkLCB7IGhpZ2hXYXRl
ck1hcms6IDEgfSk7CisKKyAgY29uc3Qgd3JpdGVyID0gdHMud3JpdGFibGUuZ2V0V3JpdGVyKCk7
CisgIHdyaXRlci53cml0ZSgnYScpOworICB3cml0ZXIuY2xvc2UoKTsKKworICBsZXQgcnNDbG9z
ZWQgPSBmYWxzZTsKKyAgdHMucmVhZGFibGUuZ2V0UmVhZGVyKCkuY2xvc2VkLnRoZW4oKCkgPT4g
eworICAgIHJzQ2xvc2VkID0gdHJ1ZTsKKyAgfSk7CisKKyAgcmV0dXJuIGRlbGF5KDApLnRoZW4o
KCkgPT4geworICAgIGFzc2VydF9lcXVhbHMocnNDbG9zZWQsIGZhbHNlLCAncmVhZGFibGUgaXMg
bm90IGNsb3NlZCBhZnRlciBhIHRpY2snKTsKKyAgICB0cmFuc2Zvcm1SZXNvbHZlKCk7CisKKyAg
ICByZXR1cm4gd3JpdGVyLmNsb3NlZC50aGVuKCgpID0+IHsKKyAgICAgIC8vIFRPRE86IElzIHRo
aXMgZXhwZWN0YXRpb24gY29ycmVjdD8KKyAgICAgIGFzc2VydF9lcXVhbHMocnNDbG9zZWQsIHRy
dWUsICdyZWFkYWJsZSBpcyBjbG9zZWQgYXQgdGhhdCBwb2ludCcpOworICAgIH0pOworICB9KTsK
K30sICdUcmFuc2Zvcm1TdHJlYW06IGJ5IGRlZmF1bHQsIGNsb3NpbmcgdGhlIHdyaXRhYmxlIHdh
aXRzIGZvciB0cmFuc2Zvcm1zIHRvIGZpbmlzaCBiZWZvcmUgY2xvc2luZyBib3RoJyk7CisKK3By
b21pc2VfdGVzdCgoKSA9PiB7CisgIGxldCBjOworICBjb25zdCB0cyA9IG5ldyBUcmFuc2Zvcm1T
dHJlYW0oeworICAgIHN0YXJ0KGNvbnRyb2xsZXIpIHsKKyAgICAgIGMgPSBjb250cm9sbGVyOwor
ICAgIH0sCisgICAgdHJhbnNmb3JtKCkgeworICAgICAgYy5lbnF1ZXVlKCd4Jyk7CisgICAgICBj
LmVucXVldWUoJ3knKTsKKyAgICAgIHJldHVybiBkZWxheSgwKTsKKyAgICB9CisgIH0pOworCisg
IGNvbnN0IHdyaXRlciA9IHRzLndyaXRhYmxlLmdldFdyaXRlcigpOworICB3cml0ZXIud3JpdGUo
J2EnKTsKKyAgd3JpdGVyLmNsb3NlKCk7CisKKyAgY29uc3QgcmVhZGFibGVDaHVua3MgPSByZWFk
YWJsZVN0cmVhbVRvQXJyYXkodHMucmVhZGFibGUpOworCisgIHJldHVybiB3cml0ZXIuY2xvc2Vk
LnRoZW4oKCkgPT4geworICAgIHJldHVybiByZWFkYWJsZUNodW5rcy50aGVuKGNodW5rcyA9PiB7
CisgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGNodW5rcywgWyd4JywgJ3knXSwgJ2JvdGggZW5x
dWV1ZWQgY2h1bmtzIGNhbiBiZSByZWFkIGZyb20gdGhlIHJlYWRhYmxlJyk7CisgICAgfSk7Cisg
IH0pOworfSwgJ1RyYW5zZm9ybVN0cmVhbTogYnkgZGVmYXVsdCwgY2xvc2luZyB0aGUgd3JpdGFi
bGUgY2xvc2VzIHRoZSByZWFkYWJsZSBhZnRlciBzeW5jIGVucXVldWVzIGFuZCBhc3luYyBkb25l
Jyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisgIGxldCBjOworICBjb25zdCB0cyA9IG5ldyBU
cmFuc2Zvcm1TdHJlYW0oeworICAgIHN0YXJ0KGNvbnRyb2xsZXIpIHsKKyAgICAgIGMgPSBjb250
cm9sbGVyOworICAgIH0sCisgICAgdHJhbnNmb3JtKCkgeworICAgICAgcmV0dXJuIGRlbGF5KDAp
CisgICAgICAgICAgLnRoZW4oKCkgPT4gYy5lbnF1ZXVlKCd4JykpCisgICAgICAgICAgLnRoZW4o
KCkgPT4gYy5lbnF1ZXVlKCd5JykpCisgICAgICAgICAgLnRoZW4oKCkgPT4gZGVsYXkoMCkpOwor
ICAgIH0KKyAgfSk7CisKKyAgY29uc3Qgd3JpdGVyID0gdHMud3JpdGFibGUuZ2V0V3JpdGVyKCk7
CisgIHdyaXRlci53cml0ZSgnYScpOworICB3cml0ZXIuY2xvc2UoKTsKKworICBjb25zdCByZWFk
YWJsZUNodW5rcyA9IHJlYWRhYmxlU3RyZWFtVG9BcnJheSh0cy5yZWFkYWJsZSk7CisKKyAgcmV0
dXJuIHdyaXRlci5jbG9zZWQudGhlbigoKSA9PiB7CisgICAgcmV0dXJuIHJlYWRhYmxlQ2h1bmtz
LnRoZW4oY2h1bmtzID0+IHsKKyAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoY2h1bmtzLCBbJ3gn
LCAneSddLCAnYm90aCBlbnF1ZXVlZCBjaHVua3MgY2FuIGJlIHJlYWQgZnJvbSB0aGUgcmVhZGFi
bGUnKTsKKyAgICB9KTsKKyAgfSk7Cit9LCAnVHJhbnNmb3JtU3RyZWFtOiBieSBkZWZhdWx0LCBj
bG9zaW5nIHRoZSB3cml0YWJsZSBjbG9zZXMgdGhlIHJlYWRhYmxlIGFmdGVyIGFzeW5jIGVucXVl
dWVzIGFuZCBhc3luYyBkb25lJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisgIGxldCBjOwor
ICBjb25zdCB0cyA9IG5ldyBUcmFuc2Zvcm1TdHJlYW0oeworICAgIHN1ZmZpeDogJy1zdWZmaXgn
LAorCisgICAgc3RhcnQoY29udHJvbGxlcikgeworICAgICAgYyA9IGNvbnRyb2xsZXI7CisgICAg
ICBjLmVucXVldWUoJ3N0YXJ0JyArIHRoaXMuc3VmZml4KTsKKyAgICB9LAorCisgICAgdHJhbnNm
b3JtKGNodW5rKSB7CisgICAgICBjLmVucXVldWUoY2h1bmsgKyB0aGlzLnN1ZmZpeCk7CisgICAg
fSwKKworICAgIGZsdXNoKCkgeworICAgICAgYy5lbnF1ZXVlKCdmbHVzaGVkJyArIHRoaXMuc3Vm
Zml4KTsKKyAgICB9CisgIH0pOworCisgIGNvbnN0IHdyaXRlciA9IHRzLndyaXRhYmxlLmdldFdy
aXRlcigpOworICB3cml0ZXIud3JpdGUoJ2EnKTsKKyAgd3JpdGVyLmNsb3NlKCk7CisKKyAgY29u
c3QgcmVhZGFibGVDaHVua3MgPSByZWFkYWJsZVN0cmVhbVRvQXJyYXkodHMucmVhZGFibGUpOwor
CisgIHJldHVybiB3cml0ZXIuY2xvc2VkLnRoZW4oKCkgPT4geworICAgIHJldHVybiByZWFkYWJs
ZUNodW5rcy50aGVuKGNodW5rcyA9PiB7CisgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGNodW5r
cywgWydzdGFydC1zdWZmaXgnLCAnYS1zdWZmaXgnLCAnZmx1c2hlZC1zdWZmaXgnXSwgJ2FsbCBl
bnF1ZXVlZCBjaHVua3MgaGF2ZSBzdWZmaXhlcycpOworICAgIH0pOworICB9KTsKK30sICdUcmFu
c2Zvcm0gc3RyZWFtIHNob3VsZCBjYWxsIHRyYW5zZm9ybWVyIG1ldGhvZHMgYXMgbWV0aG9kcycp
OworCitwcm9taXNlX3Rlc3QoKCkgPT4geworICBmdW5jdGlvbiBmdW5jdGlvbldpdGhPdmVybG9h
ZHMoKSB7fQorICBmdW5jdGlvbldpdGhPdmVybG9hZHMuYXBwbHkgPSAoKSA9PiBhc3NlcnRfdW5y
ZWFjaGVkKCdhcHBseSgpIHNob3VsZCBub3QgYmUgY2FsbGVkJyk7CisgIGZ1bmN0aW9uV2l0aE92
ZXJsb2Fkcy5jYWxsID0gKCkgPT4gYXNzZXJ0X3VucmVhY2hlZCgnY2FsbCgpIHNob3VsZCBub3Qg
YmUgY2FsbGVkJyk7CisgIGNvbnN0IHRzID0gbmV3IFRyYW5zZm9ybVN0cmVhbSh7CisgICAgc3Rh
cnQ6IGZ1bmN0aW9uV2l0aE92ZXJsb2FkcywKKyAgICB0cmFuc2Zvcm06IGZ1bmN0aW9uV2l0aE92
ZXJsb2FkcywKKyAgICBmbHVzaDogZnVuY3Rpb25XaXRoT3ZlcmxvYWRzCisgIH0pOworICBjb25z
dCB3cml0ZXIgPSB0cy53cml0YWJsZS5nZXRXcml0ZXIoKTsKKyAgd3JpdGVyLndyaXRlKCdhJyk7
CisgIHdyaXRlci5jbG9zZSgpOworCisgIHJldHVybiByZWFkYWJsZVN0cmVhbVRvQXJyYXkodHMu
cmVhZGFibGUpOworfSwgJ21ldGhvZHMgc2hvdWxkIG5vdCBub3QgaGF2ZSAuYXBwbHkoKSBvciAu
Y2FsbCgpIGNhbGxlZCcpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIGxldCBzdGFydENhbGxl
ZCA9IGZhbHNlOworICBsZXQgc3RhcnREb25lID0gZmFsc2U7CisgIGxldCB0cmFuc2Zvcm1Eb25l
ID0gZmFsc2U7CisgIGxldCBmbHVzaERvbmUgPSBmYWxzZTsKKyAgY29uc3QgdHMgPSBuZXcgVHJh
bnNmb3JtU3RyZWFtKHsKKyAgICBzdGFydCgpIHsKKyAgICAgIHN0YXJ0Q2FsbGVkID0gdHJ1ZTsK
KyAgICAgIHJldHVybiBmbHVzaEFzeW5jRXZlbnRzKCkudGhlbigoKSA9PiB7CisgICAgICAgIHN0
YXJ0RG9uZSA9IHRydWU7CisgICAgICB9KTsKKyAgICB9LAorICAgIHRyYW5zZm9ybSgpIHsKKyAg
ICAgIHJldHVybiB0LnN0ZXAoKCkgPT4geworICAgICAgICBhc3NlcnRfdHJ1ZShzdGFydERvbmUs
ICd0cmFuc2Zvcm0oKSBzaG91bGQgbm90IGJlIGNhbGxlZCB1bnRpbCB0aGUgcHJvbWlzZSByZXR1
cm5lZCBmcm9tIHN0YXJ0KCkgaGFzIHJlc29sdmVkJyk7CisgICAgICAgIHJldHVybiBmbHVzaEFz
eW5jRXZlbnRzKCkudGhlbigoKSA9PiB7CisgICAgICAgICAgdHJhbnNmb3JtRG9uZSA9IHRydWU7
CisgICAgICAgIH0pOworICAgICAgfSk7CisgICAgfSwKKyAgICBmbHVzaCgpIHsKKyAgICAgIHJl
dHVybiB0LnN0ZXAoKCkgPT4geworICAgICAgICBhc3NlcnRfdHJ1ZSh0cmFuc2Zvcm1Eb25lLAor
ICAgICAgICAgICAgICAgICAgICAnZmx1c2goKSBzaG91bGQgbm90IGJlIGNhbGxlZCB1bnRpbCB0
aGUgcHJvbWlzZSByZXR1cm5lZCBmcm9tIHRyYW5zZm9ybSgpIGhhcyByZXNvbHZlZCcpOworICAg
ICAgICByZXR1cm4gZmx1c2hBc3luY0V2ZW50cygpLnRoZW4oKCkgPT4geworICAgICAgICAgIGZs
dXNoRG9uZSA9IHRydWU7CisgICAgICAgIH0pOworICAgICAgfSk7CisgICAgfQorICB9LCB1bmRl
ZmluZWQsIHsgaGlnaFdhdGVyTWFyazogMSB9KTsKKworICBhc3NlcnRfdHJ1ZShzdGFydENhbGxl
ZCwgJ3N0YXJ0KCkgc2hvdWxkIGJlIGNhbGxlZCBzeW5jaHJvbm91c2x5Jyk7CisKKyAgY29uc3Qg
d3JpdGVyID0gdHMud3JpdGFibGUuZ2V0V3JpdGVyKCk7CisgIGNvbnN0IHdyaXRlUHJvbWlzZSA9
IHdyaXRlci53cml0ZSgnYScpOworICByZXR1cm4gd3JpdGVyLmNsb3NlKCkudGhlbigoKSA9PiB7
CisgICAgYXNzZXJ0X3RydWUoZmx1c2hEb25lLCAncHJvbWlzZSByZXR1cm5lZCBmcm9tIGZsdXNo
KCkgc2hvdWxkIGhhdmUgcmVzb2x2ZWQnKTsKKyAgICByZXR1cm4gd3JpdGVQcm9taXNlOworICB9
KTsKK30sICdUcmFuc2Zvcm1TdHJlYW0gc3RhcnQsIHRyYW5zZm9ybSwgYW5kIGZsdXNoIHNob3Vs
ZCBiZSBzdHJpY3RseSBvcmRlcmVkJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisgIGxldCB0
cmFuc2Zvcm1DYWxsZWQgPSBmYWxzZTsKKyAgY29uc3QgdHMgPSBuZXcgVHJhbnNmb3JtU3RyZWFt
KHsKKyAgICB0cmFuc2Zvcm0oKSB7CisgICAgICB0cmFuc2Zvcm1DYWxsZWQgPSB0cnVlOworICAg
IH0KKyAgfSwgdW5kZWZpbmVkLCB7IGhpZ2hXYXRlck1hcms6IEluZmluaXR5IH0pOworICAvLyB0
cmFuc2Zvcm0oKSBpcyBvbmx5IGNhbGxlZCBzeW5jaHJvbm91c2x5IHdoZW4gdGhlcmUgaXMgbm8g
YmFja3ByZXNzdXJlIGFuZCBhbGwgbWljcm90YXNrcyBoYXZlIHJ1bi4KKyAgcmV0dXJuIGRlbGF5
KDApLnRoZW4oKCkgPT4geworICAgIGNvbnN0IHdyaXRlUHJvbWlzZSA9IHRzLndyaXRhYmxlLmdl
dFdyaXRlcigpLndyaXRlKCk7CisgICAgYXNzZXJ0X3RydWUodHJhbnNmb3JtQ2FsbGVkLCAndHJh
bnNmb3JtKCkgc2hvdWxkIGhhdmUgYmVlbiBjYWxsZWQnKTsKKyAgICByZXR1cm4gd3JpdGVQcm9t
aXNlOworICB9KTsKK30sICdpdCBzaG91bGQgYmUgcG9zc2libGUgdG8gY2FsbCB0cmFuc2Zvcm0o
KSBzeW5jaHJvbm91c2x5Jyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisgIGNvbnN0IHRzID0g
bmV3IFRyYW5zZm9ybVN0cmVhbSh7fSwgdW5kZWZpbmVkLCB7IGhpZ2hXYXRlck1hcms6IDAgfSk7
CisKKyAgY29uc3Qgd3JpdGVyID0gdHMud3JpdGFibGUuZ2V0V3JpdGVyKCk7CisgIHdyaXRlci5j
bG9zZSgpOworCisgIHJldHVybiBQcm9taXNlLmFsbChbd3JpdGVyLmNsb3NlZCwgdHMucmVhZGFi
bGUuZ2V0UmVhZGVyKCkuY2xvc2VkXSk7Cit9LCAnY2xvc2luZyB0aGUgd3JpdGFibGUgc2hvdWxk
IGNsb3NlIHRoZSByZWFkYWJsZSB3aGVuIHRoZXJlIGFyZSBubyBxdWV1ZWQgY2h1bmtzLCBldmVu
IHdpdGggYmFja3ByZXNzdXJlJyk7CisKK3Rlc3QoKCkgPT4geworICBuZXcgVHJhbnNmb3JtU3Ry
ZWFtKHsKKyAgICBzdGFydChjb250cm9sbGVyKSB7CisgICAgICBjb250cm9sbGVyLnRlcm1pbmF0
ZSgpOworICAgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IGNvbnRyb2xsZXIu
ZW5xdWV1ZSgpLCAnZW5xdWV1ZSBzaG91bGQgdGhyb3cnKTsKKyAgICB9CisgIH0pOworfSwgJ2Vu
cXVldWUoKSBzaG91bGQgdGhyb3cgYWZ0ZXIgY29udHJvbGxlci50ZXJtaW5hdGUoKScpOworCitw
cm9taXNlX3Rlc3QoKCkgPT4geworICBsZXQgY29udHJvbGxlcjsKKyAgY29uc3QgdHMgPSBuZXcg
VHJhbnNmb3JtU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjb250cm9sbGVyID0gYzsK
KyAgICB9CisgIH0pOworICBjb25zdCBjYW5jZWxQcm9taXNlID0gdHMucmVhZGFibGUuY2FuY2Vs
KCk7CisgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiBjb250cm9sbGVyLmVucXVl
dWUoKSwgJ2VucXVldWUgc2hvdWxkIHRocm93Jyk7CisgIHJldHVybiBjYW5jZWxQcm9taXNlOwor
fSwgJ2VucXVldWUoKSBzaG91bGQgdGhyb3cgYWZ0ZXIgcmVhZGFibGUuY2FuY2VsKCknKTsKKwor
dGVzdCgoKSA9PiB7CisgIG5ldyBUcmFuc2Zvcm1TdHJlYW0oeworICAgIHN0YXJ0KGNvbnRyb2xs
ZXIpIHsKKyAgICAgIGNvbnRyb2xsZXIudGVybWluYXRlKCk7CisgICAgICBjb250cm9sbGVyLnRl
cm1pbmF0ZSgpOworICAgIH0KKyAgfSk7Cit9LCAnY29udHJvbGxlci50ZXJtaW5hdGUoKSBzaG91
bGQgZG8gbm90aGluZyB0aGUgc2Vjb25kIHRpbWUgaXQgaXMgY2FsbGVkJyk7CisKK3Byb21pc2Vf
dGVzdCh0ID0+IHsKKyAgbGV0IGNvbnRyb2xsZXI7CisgIGNvbnN0IHRzID0gbmV3IFRyYW5zZm9y
bVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgY29udHJvbGxlciA9IGM7CisgICAgfQor
ICB9KTsKKyAgY29uc3QgY2FuY2VsUmVhc29uID0geyBuYW1lOiAnY2FuY2VsUmVhc29uJyB9Owor
ICBjb25zdCBjYW5jZWxQcm9taXNlID0gdHMucmVhZGFibGUuY2FuY2VsKGNhbmNlbFJlYXNvbik7
CisgIGNvbnRyb2xsZXIudGVybWluYXRlKCk7CisgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAg
Y2FuY2VsUHJvbWlzZSwKKyAgICBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBjYW5jZWxSZWFz
b24sIHRzLndyaXRhYmxlLmdldFdyaXRlcigpLmNsb3NlZCwgJ2Nsb3NlZCBzaG91bGQgcmVqZWN0
IHdpdGggY2FuY2VsUmVhc29uJykKKyAgXSk7Cit9LCAndGVybWluYXRlKCkgc2hvdWxkIGRvIG5v
dGhpbmcgYWZ0ZXIgcmVhZGFibGUuY2FuY2VsKCknKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsK
KyAgbGV0IGNhbGxzID0gMDsKKyAgbmV3IFRyYW5zZm9ybVN0cmVhbSh7CisgICAgc3RhcnQoKSB7
CisgICAgICArK2NhbGxzOworICAgIH0KKyAgfSk7CisgIHJldHVybiBmbHVzaEFzeW5jRXZlbnRz
KCkudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X2VxdWFscyhjYWxscywgMSwgJ3N0YXJ0KCkgc2hv
dWxkIGhhdmUgYmVlbiBjYWxsZWQgZXhhY3RseSBvbmNlJyk7CisgIH0pOworfSwgJ3N0YXJ0KCkg
c2hvdWxkIG5vdCBiZSBjYWxsZWQgdHdpY2UnKTsKKwordGVzdCgoKSA9PiB7CisgIGFzc2VydF90
aHJvd3NfanMoUmFuZ2VFcnJvciwgKCkgPT4gbmV3IFRyYW5zZm9ybVN0cmVhbSh7IHJlYWRhYmxl
VHlwZTogJ2J5dGVzJyB9KSwgJ2NvbnN0cnVjdG9yIHNob3VsZCB0aHJvdycpOworfSwgJ3NwZWNp
ZnlpbmcgYSBkZWZpbmVkIHJlYWRhYmxlVHlwZSBzaG91bGQgdGhyb3cnKTsKKwordGVzdCgoKSA9
PiB7CisgIGFzc2VydF90aHJvd3NfanMoUmFuZ2VFcnJvciwgKCkgPT4gbmV3IFRyYW5zZm9ybVN0
cmVhbSh7IHdyaXRhYmxlVHlwZTogJ2J5dGVzJyB9KSwgJ2NvbnN0cnVjdG9yIHNob3VsZCB0aHJv
dycpOworfSwgJ3NwZWNpZnlpbmcgYSBkZWZpbmVkIHdyaXRhYmxlVHlwZSBzaG91bGQgdGhyb3cn
KTsKKwordGVzdCgoKSA9PiB7CisgIGNsYXNzIFN1YmNsYXNzIGV4dGVuZHMgVHJhbnNmb3JtU3Ry
ZWFtIHsKKyAgICBleHRyYUZ1bmN0aW9uKCkgeworICAgICAgcmV0dXJuIHRydWU7CisgICAgfQor
ICB9CisgIGFzc2VydF9lcXVhbHMoCisgICAgICBPYmplY3QuZ2V0UHJvdG90eXBlT2YoU3ViY2xh
c3MucHJvdG90eXBlKSwgVHJhbnNmb3JtU3RyZWFtLnByb3RvdHlwZSwKKyAgICAgICdTdWJjbGFz
cy5wcm90b3R5cGVcJ3MgcHJvdG90eXBlIHNob3VsZCBiZSBUcmFuc2Zvcm1TdHJlYW0ucHJvdG90
eXBlJyk7CisgIGFzc2VydF9lcXVhbHMoT2JqZWN0LmdldFByb3RvdHlwZU9mKFN1YmNsYXNzKSwg
VHJhbnNmb3JtU3RyZWFtLAorICAgICAgICAgICAgICAgICdTdWJjbGFzc1wncyBwcm90b3R5cGUg
c2hvdWxkIGJlIFRyYW5zZm9ybVN0cmVhbScpOworICBjb25zdCBzdWIgPSBuZXcgU3ViY2xhc3Mo
KTsKKyAgYXNzZXJ0X3RydWUoc3ViIGluc3RhbmNlb2YgVHJhbnNmb3JtU3RyZWFtLAorICAgICAg
ICAgICAgICAnU3ViY2xhc3Mgb2JqZWN0IHNob3VsZCBiZSBhbiBpbnN0YW5jZSBvZiBUcmFuc2Zv
cm1TdHJlYW0nKTsKKyAgYXNzZXJ0X3RydWUoc3ViIGluc3RhbmNlb2YgU3ViY2xhc3MsCisgICAg
ICAgICAgICAgICdTdWJjbGFzcyBvYmplY3Qgc2hvdWxkIGJlIGFuIGluc3RhbmNlIG9mIFN1YmNs
YXNzJyk7CisgIGNvbnN0IHJlYWRhYmxlR2V0dGVyID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVz
Y3JpcHRvcigKKyAgICAgIFRyYW5zZm9ybVN0cmVhbS5wcm90b3R5cGUsICdyZWFkYWJsZScpLmdl
dDsKKyAgYXNzZXJ0X2VxdWFscyhyZWFkYWJsZUdldHRlci5jYWxsKHN1YiksIHN1Yi5yZWFkYWJs
ZSwKKyAgICAgICAgICAgICAgICAnU3ViY2xhc3Mgb2JqZWN0IHNob3VsZCBwYXNzIGJyYW5kIGNo
ZWNrJyk7CisgIGFzc2VydF90cnVlKHN1Yi5leHRyYUZ1bmN0aW9uKCksCisgICAgICAgICAgICAg
ICdleHRyYUZ1bmN0aW9uKCkgc2hvdWxkIGJlIHByZXNlbnQgb24gU3ViY2xhc3Mgb2JqZWN0Jyk7
Cit9LCAnU3ViY2xhc3NpbmcgVHJhbnNmb3JtU3RyZWFtIHNob3VsZCB3b3JrJyk7CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
dHJhbnNmb3JtLXN0cmVhbXMvZ2VuZXJhbC5hbnkud29ya2VyLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy90cmFuc2Zvcm0t
c3RyZWFtcy9nZW5lcmFsLmFueS53b3JrZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRkYTM0
NDljYmRlMzc5YmU2MTYwNTc5NTQ5N2MxYjE1OGI4MWFhNTEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvdHJhbnNm
b3JtLXN0cmVhbXMvZ2VuZXJhbC5hbnkud29ya2VyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMx
IEBACisKK0ZBSUwgVHJhbnNmb3JtU3RyZWFtIGNhbiBiZSBjb25zdHJ1Y3RlZCB3aXRoIGEgdHJh
bnNmb3JtIGZ1bmN0aW9uIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJ
TCBUcmFuc2Zvcm1TdHJlYW0gY2FuIGJlIGNvbnN0cnVjdGVkIHdpdGggbm8gdHJhbnNmb3JtIGZ1
bmN0aW9uIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCBUcmFuc2Zv
cm1TdHJlYW0gd3JpdGFibGUgc3RhcnRzIGluIHRoZSB3cml0YWJsZSBzdGF0ZSBDYW4ndCBmaW5k
IHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgSWRlbnRpdHkgVHJhbnNmb3JtU3RyZWFt
OiBjYW4gcmVhZCBmcm9tIHJlYWRhYmxlIHdoYXQgaXMgcHV0IGludG8gd3JpdGFibGUgQ2FuJ3Qg
ZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIFVwcGVyY2FzZXIgc3luYyBUcmFu
c2Zvcm1TdHJlYW06IGNhbiByZWFkIGZyb20gcmVhZGFibGUgdHJhbnNmb3JtZWQgdmVyc2lvbiBv
ZiB3aGF0IGlzIHB1dCBpbnRvIHdyaXRhYmxlIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9y
bVN0cmVhbQorRkFJTCBVcHBlcmNhc2VyLWRvdWJsZXIgc3luYyBUcmFuc2Zvcm1TdHJlYW06IGNh
biByZWFkIGJvdGggY2h1bmtzIHB1dCBpbnRvIHRoZSByZWFkYWJsZSBDYW4ndCBmaW5kIHZhcmlh
YmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgVXBwZXJjYXNlciBhc3luYyBUcmFuc2Zvcm1TdHJl
YW06IGNhbiByZWFkIGZyb20gcmVhZGFibGUgdHJhbnNmb3JtZWQgdmVyc2lvbiBvZiB3aGF0IGlz
IHB1dCBpbnRvIHdyaXRhYmxlIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQor
RkFJTCBVcHBlcmNhc2VyLWRvdWJsZXIgYXN5bmMgVHJhbnNmb3JtU3RyZWFtOiBjYW4gcmVhZCBi
b3RoIGNodW5rcyBwdXQgaW50byB0aGUgcmVhZGFibGUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJh
bnNmb3JtU3RyZWFtCitGQUlMIFRyYW5zZm9ybVN0cmVhbTogYnkgZGVmYXVsdCwgY2xvc2luZyB0
aGUgd3JpdGFibGUgY2xvc2VzIHRoZSByZWFkYWJsZSAod2hlbiB0aGVyZSBhcmUgbm8gcXVldWVk
IHdyaXRlcykgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIFRyYW5z
Zm9ybVN0cmVhbTogYnkgZGVmYXVsdCwgY2xvc2luZyB0aGUgd3JpdGFibGUgd2FpdHMgZm9yIHRy
YW5zZm9ybXMgdG8gZmluaXNoIGJlZm9yZSBjbG9zaW5nIGJvdGggQ2FuJ3QgZmluZCB2YXJpYWJs
ZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIFRyYW5zZm9ybVN0cmVhbTogYnkgZGVmYXVsdCwgY2xv
c2luZyB0aGUgd3JpdGFibGUgY2xvc2VzIHRoZSByZWFkYWJsZSBhZnRlciBzeW5jIGVucXVldWVz
IGFuZCBhc3luYyBkb25lIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJ
TCBUcmFuc2Zvcm1TdHJlYW06IGJ5IGRlZmF1bHQsIGNsb3NpbmcgdGhlIHdyaXRhYmxlIGNsb3Nl
cyB0aGUgcmVhZGFibGUgYWZ0ZXIgYXN5bmMgZW5xdWV1ZXMgYW5kIGFzeW5jIGRvbmUgQ2FuJ3Qg
ZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIFRyYW5zZm9ybSBzdHJlYW0gc2hv
dWxkIGNhbGwgdHJhbnNmb3JtZXIgbWV0aG9kcyBhcyBtZXRob2RzIENhbid0IGZpbmQgdmFyaWFi
bGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCBtZXRob2RzIHNob3VsZCBub3Qgbm90IGhhdmUgLmFw
cGx5KCkgb3IgLmNhbGwoKSBjYWxsZWQgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3Ry
ZWFtCitGQUlMIFRyYW5zZm9ybVN0cmVhbSBzdGFydCwgdHJhbnNmb3JtLCBhbmQgZmx1c2ggc2hv
dWxkIGJlIHN0cmljdGx5IG9yZGVyZWQgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3Ry
ZWFtCitGQUlMIGl0IHNob3VsZCBiZSBwb3NzaWJsZSB0byBjYWxsIHRyYW5zZm9ybSgpIHN5bmNo
cm9ub3VzbHkgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIGNsb3Np
bmcgdGhlIHdyaXRhYmxlIHNob3VsZCBjbG9zZSB0aGUgcmVhZGFibGUgd2hlbiB0aGVyZSBhcmUg
bm8gcXVldWVkIGNodW5rcywgZXZlbiB3aXRoIGJhY2twcmVzc3VyZSBDYW4ndCBmaW5kIHZhcmlh
YmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgZW5xdWV1ZSgpIHNob3VsZCB0aHJvdyBhZnRlciBj
b250cm9sbGVyLnRlcm1pbmF0ZSgpIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVh
bQorRkFJTCBlbnF1ZXVlKCkgc2hvdWxkIHRocm93IGFmdGVyIHJlYWRhYmxlLmNhbmNlbCgpIENh
bid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCBjb250cm9sbGVyLnRlcm1p
bmF0ZSgpIHNob3VsZCBkbyBub3RoaW5nIHRoZSBzZWNvbmQgdGltZSBpdCBpcyBjYWxsZWQgQ2Fu
J3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIHRlcm1pbmF0ZSgpIHNob3Vs
ZCBkbyBub3RoaW5nIGFmdGVyIHJlYWRhYmxlLmNhbmNlbCgpIENhbid0IGZpbmQgdmFyaWFibGU6
IFRyYW5zZm9ybVN0cmVhbQorRkFJTCBzdGFydCgpIHNob3VsZCBub3QgYmUgY2FsbGVkIHR3aWNl
IENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCBzcGVjaWZ5aW5nIGEg
ZGVmaW5lZCByZWFkYWJsZVR5cGUgc2hvdWxkIHRocm93IGFzc2VydF90aHJvd3NfanM6IGNvbnN0
cnVjdG9yIHNob3VsZCB0aHJvdyBmdW5jdGlvbiAiKCkgPT4gbmV3IFRyYW5zZm9ybVN0cmVhbSh7
IHJlYWRhYmxlVHlwZTogJ2J5dGVzJyB9KSIgdGhyZXcgb2JqZWN0ICJSZWZlcmVuY2VFcnJvcjog
Q2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtIiAoIlJlZmVyZW5jZUVycm9yIikg
ZXhwZWN0ZWQgaW5zdGFuY2Ugb2YgZnVuY3Rpb24gImZ1bmN0aW9uIFJhbmdlRXJyb3IoKSB7Cisg
ICAgW25hdGl2ZSBjb2RlXQorfSIgKCJSYW5nZUVycm9yIikKK0ZBSUwgc3BlY2lmeWluZyBhIGRl
ZmluZWQgd3JpdGFibGVUeXBlIHNob3VsZCB0aHJvdyBhc3NlcnRfdGhyb3dzX2pzOiBjb25zdHJ1
Y3RvciBzaG91bGQgdGhyb3cgZnVuY3Rpb24gIigpID0+IG5ldyBUcmFuc2Zvcm1TdHJlYW0oeyB3
cml0YWJsZVR5cGU6ICdieXRlcycgfSkiIHRocmV3IG9iamVjdCAiUmVmZXJlbmNlRXJyb3I6IENh
bid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbSIgKCJSZWZlcmVuY2VFcnJvciIpIGV4
cGVjdGVkIGluc3RhbmNlIG9mIGZ1bmN0aW9uICJmdW5jdGlvbiBSYW5nZUVycm9yKCkgeworICAg
IFtuYXRpdmUgY29kZV0KK30iICgiUmFuZ2VFcnJvciIpCitGQUlMIFN1YmNsYXNzaW5nIFRyYW5z
Zm9ybVN0cmVhbSBzaG91bGQgd29yayBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJl
YW0KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1zL2dlbmVyYWwuYW55Lndvcmtlci5odG1sIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5z
Zm9ybS1zdHJlYW1zL2dlbmVyYWwuYW55Lndvcmtlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzODI5MTM1
MjhlNjkzYjNhNWQ1NmM2NjBhNDUwNjA5ODBiNTQ4YzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvdHJhbnNmb3Jt
LXN0cmVhbXMvZ2VuZXJhbC5hbnkud29ya2VyLmh0bWwKQEAgLTAsMCArMSBAQAorPCEtLSBUaGlz
IGZpbGUgaXMgcmVxdWlyZWQgZm9yIFdlYktpdCB0ZXN0IGluZnJhc3RydWN0dXJlIHRvIHJ1biB0
aGUgdGVtcGxhdGVkIHRlc3QgLS0+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
L3RyYW5zZm9ybS1zdHJlYW1zL2xpcGZ1enouYW55LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFt
cy9saXBmdXp6LmFueS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDA2MGE3MTFhYjU0N2RiZDMz
MGE3ZmI1ZDNhNzg4NTc0Nzk4MzAzYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy9s
aXBmdXp6LmFueS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyMiBAQAorCitGQUlMIHRlc3Rpbmcg
IiIgKGxlbmd0aCAxKSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwg
dGVzdGluZyAiIiAobGVuZ3RoIDApIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVh
bQorRkFJTCB0ZXN0aW5nICJ7e2luMX19IiAobGVuZ3RoIDEpIENhbid0IGZpbmQgdmFyaWFibGU6
IFRyYW5zZm9ybVN0cmVhbQorRkFJTCB0ZXN0aW5nICJ6e3tpbjF9fSIgKGxlbmd0aCAxKSBDYW4n
dCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgdGVzdGluZyAie3tpbjF9fXEi
IChsZW5ndGggMSkgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIHRl
c3RpbmcgInt7aW4xfX17e2luMX0iIChsZW5ndGggMSkgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJh
bnNmb3JtU3RyZWFtCitGQUlMIHRlc3RpbmcgInt7aW4xfX17e2luMX0sfSIgKGxlbmd0aCAyKSBD
YW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgdGVzdGluZyAie3tpbjEs
fX0iIChsZW5ndGggMikgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitGQUlM
IHRlc3RpbmcgInt7LGluMX19IiAobGVuZ3RoIDIpIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5z
Zm9ybVN0cmVhbQorRkFJTCB0ZXN0aW5nICJ7LHtpbjF9fSIgKGxlbmd0aCAyKSBDYW4ndCBmaW5k
IHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgdGVzdGluZyAie3ssaW4xfSIgKGxlbmd0
aCAyKSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgdGVzdGluZyAi
eyIgKGxlbmd0aCAxKSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwg
dGVzdGluZyAieywiIChsZW5ndGggMikgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3Ry
ZWFtCitGQUlMIHRlc3RpbmcgInsseyxpLG4sMSx9LH0iIChsZW5ndGggNykgQ2FuJ3QgZmluZCB2
YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIHRlc3RpbmcgInt7aW4xfX17e2luMn19e3tp
bjF9fSIgKGxlbmd0aCAxKSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZB
SUwgdGVzdGluZyAie3t3cm9uZ319IiAobGVuZ3RoIDEpIENhbid0IGZpbmQgdmFyaWFibGU6IFRy
YW5zZm9ybVN0cmVhbQorRkFJTCB0ZXN0aW5nICJ7e3dyb24sZ319IiAobGVuZ3RoIDIpIENhbid0
IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCB0ZXN0aW5nICJ7e3F1aW5lfX0i
IChsZW5ndGggMSkgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIHRl
c3RpbmcgInt7Ym9ndXNQYXJ0aWFsfX0iIChsZW5ndGggMSkgQ2FuJ3QgZmluZCB2YXJpYWJsZTog
VHJhbnNmb3JtU3RyZWFtCitGQUlMIHRlc3RpbmcgInt7Ym9ndXNQYXJ0aWFsfX19IiAobGVuZ3Ro
IDEpIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvdHJhbnNm
b3JtLXN0cmVhbXMvbGlwZnV6ei5hbnkuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy9saXBmdXp6LmFueS5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjIzODI5MTM1MjhlNjkzYjNhNWQ1NmM2NjBhNDUwNjA5ODBiNTQ4YzMK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMvdHJhbnNmb3JtLXN0cmVhbXMvbGlwZnV6ei5hbnkuaHRtbApAQCAtMCww
ICsxIEBACis8IS0tIFRoaXMgZmlsZSBpcyByZXF1aXJlZCBmb3IgV2ViS2l0IHRlc3QgaW5mcmFz
dHJ1Y3R1cmUgdG8gcnVuIHRoZSB0ZW1wbGF0ZWQgdGVzdCAtLT4KXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMvdHJhbnNmb3JtLXN0cmVhbXMvbGlwZnV6ei5hbnkuanMgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvdHJhbnNmb3Jt
LXN0cmVhbXMvbGlwZnV6ei5hbnkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzhjMzgwM2M2ZGZiNGIxZDI1OWNl
ZDA2Mjc1MmVhNzA0ODg3MmVjOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy9saXBm
dXp6LmFueS5qcwpAQCAtMCwwICsxLDE2MyBAQAorLy8gTUVUQTogZ2xvYmFsPXdpbmRvdyx3b3Jr
ZXIsanNzaGVsbAorJ3VzZSBzdHJpY3QnOworCitjbGFzcyBMaXBGdXp6VHJhbnNmb3JtZXIgewor
ICBjb25zdHJ1Y3RvcihzdWJzdGl0dXRpb25zKSB7CisgICAgdGhpcy5zdWJzdGl0dXRpb25zID0g
c3Vic3RpdHV0aW9uczsKKyAgICB0aGlzLnBhcnRpYWxDaHVuayA9ICcnOworICAgIHRoaXMubGFz
dEluZGV4ID0gdW5kZWZpbmVkOworICB9CisKKyAgdHJhbnNmb3JtKGNodW5rLCBjb250cm9sbGVy
KSB7CisgICAgY2h1bmsgPSB0aGlzLnBhcnRpYWxDaHVuayArIGNodW5rOworICAgIHRoaXMucGFy
dGlhbENodW5rID0gJyc7CisgICAgLy8gbGFzdEluZGV4IGlzIHRoZSBpbmRleCBvZiB0aGUgZmly
c3QgY2hhcmFjdGVyIGFmdGVyIHRoZSBsYXN0IHN1YnN0aXR1dGlvbi4KKyAgICB0aGlzLmxhc3RJ
bmRleCA9IDA7CisgICAgY2h1bmsgPSBjaHVuay5yZXBsYWNlKC9ce1x7KFthLXpBLVowLTlfLV0r
KVx9XH0vZywgdGhpcy5yZXBsYWNlVGFnLmJpbmQodGhpcykpOworICAgIC8vIFJlZ3VsYXIgZXhw
cmVzc2lvbiBmb3IgYW4gaW5jb21wbGV0ZSB0ZW1wbGF0ZSBhdCB0aGUgZW5kIG9mIGEgc3RyaW5n
LgorICAgIGNvbnN0IHBhcnRpYWxBdEVuZFJlZ2V4cCA9IC9ceyhceyhbYS16QS1aMC05Xy1dKyhc
fSk/KT8pPyQvZzsKKyAgICAvLyBBdm9pZCBsb29raW5nIGF0IGFueSBjaGFyYWN0ZXJzIHRoYXQg
aGF2ZSBhbHJlYWR5IGJlZW4gc3Vic3RpdHV0ZWQuCisgICAgcGFydGlhbEF0RW5kUmVnZXhwLmxh
c3RJbmRleCA9IHRoaXMubGFzdEluZGV4OworICAgIHRoaXMubGFzdEluZGV4ID0gdW5kZWZpbmVk
OworICAgIGNvbnN0IG1hdGNoID0gcGFydGlhbEF0RW5kUmVnZXhwLmV4ZWMoY2h1bmspOworICAg
IGlmIChtYXRjaCkgeworICAgICAgdGhpcy5wYXJ0aWFsQ2h1bmsgPSBjaHVuay5zdWJzdHJpbmco
bWF0Y2guaW5kZXgpOworICAgICAgY2h1bmsgPSBjaHVuay5zdWJzdHJpbmcoMCwgbWF0Y2guaW5k
ZXgpOworICAgIH0KKyAgICBjb250cm9sbGVyLmVucXVldWUoY2h1bmspOworICB9CisKKyAgZmx1
c2goY29udHJvbGxlcikgeworICAgIGlmICh0aGlzLnBhcnRpYWxDaHVuay5sZW5ndGggPiAwKSB7
CisgICAgICBjb250cm9sbGVyLmVucXVldWUodGhpcy5wYXJ0aWFsQ2h1bmspOworICAgIH0KKyAg
fQorCisgIHJlcGxhY2VUYWcobWF0Y2gsIHAxLCBvZmZzZXQpIHsKKyAgICBsZXQgcmVwbGFjZW1l
bnQgPSB0aGlzLnN1YnN0aXR1dGlvbnNbcDFdOworICAgIGlmIChyZXBsYWNlbWVudCA9PT0gdW5k
ZWZpbmVkKSB7CisgICAgICByZXBsYWNlbWVudCA9ICcnOworICAgIH0KKyAgICB0aGlzLmxhc3RJ
bmRleCA9IG9mZnNldCArIHJlcGxhY2VtZW50Lmxlbmd0aDsKKyAgICByZXR1cm4gcmVwbGFjZW1l
bnQ7CisgIH0KK30KKworY29uc3Qgc3Vic3RpdHV0aW9ucyA9IHsKKyAgaW4xOiAnb3V0MScsCisg
IGluMjogJ291dDInLAorICBxdWluZTogJ3t7cXVpbmV9fScsCisgIGJvZ3VzUGFydGlhbDogJ3t7
aW5jb21wbGV0ZVJlc3VsdH0nCit9OworCitjb25zdCBjYXNlcyA9IFsKKyAgeworICAgIGlucHV0
OiBbJyddLAorICAgIG91dHB1dDogWycnXQorICB9LAorICB7CisgICAgaW5wdXQ6IFtdLAorICAg
IG91dHB1dDogW10KKyAgfSwKKyAgeworICAgIGlucHV0OiBbJ3t7aW4xfX0nXSwKKyAgICBvdXRw
dXQ6IFsnb3V0MSddCisgIH0sCisgIHsKKyAgICBpbnB1dDogWyd6e3tpbjF9fSddLAorICAgIG91
dHB1dDogWyd6b3V0MSddCisgIH0sCisgIHsKKyAgICBpbnB1dDogWyd7e2luMX19cSddLAorICAg
IG91dHB1dDogWydvdXQxcSddCisgIH0sCisgIHsKKyAgICBpbnB1dDogWyd7e2luMX19e3tpbjF9
J10sCisgICAgb3V0cHV0OiBbJ291dDEnLCAne3tpbjF9J10KKyAgfSwKKyAgeworICAgIGlucHV0
OiBbJ3t7aW4xfX17e2luMX0nLCAnfSddLAorICAgIG91dHB1dDogWydvdXQxJywgJ291dDEnXQor
ICB9LAorICB7CisgICAgaW5wdXQ6IFsne3tpbjEnLCAnfX0nXSwKKyAgICBvdXRwdXQ6IFsnJywg
J291dDEnXQorICB9LAorICB7CisgICAgaW5wdXQ6IFsne3snLCAnaW4xfX0nXSwKKyAgICBvdXRw
dXQ6IFsnJywgJ291dDEnXQorICB9LAorICB7CisgICAgaW5wdXQ6IFsneycsICd7aW4xfX0nXSwK
KyAgICBvdXRwdXQ6IFsnJywgJ291dDEnXQorICB9LAorICB7CisgICAgaW5wdXQ6IFsne3snLCAn
aW4xfSddLAorICAgIG91dHB1dDogWycnLCAnJywgJ3t7aW4xfSddCisgIH0sCisgIHsKKyAgICBp
bnB1dDogWyd7J10sCisgICAgb3V0cHV0OiBbJycsICd7J10KKyAgfSwKKyAgeworICAgIGlucHV0
OiBbJ3snLCAnJ10sCisgICAgb3V0cHV0OiBbJycsICcnLCAneyddCisgIH0sCisgIHsKKyAgICBp
bnB1dDogWyd7JywgJ3snLCAnaScsICduJywgJzEnLCAnfScsICd9J10sCisgICAgb3V0cHV0OiBb
JycsICcnLCAnJywgJycsICcnLCAnJywgJ291dDEnXQorICB9LAorICB7CisgICAgaW5wdXQ6IFsn
e3tpbjF9fXt7aW4yfX17e2luMX19J10sCisgICAgb3V0cHV0OiBbJ291dDFvdXQyb3V0MSddCisg
IH0sCisgIHsKKyAgICBpbnB1dDogWyd7e3dyb25nfX0nXSwKKyAgICBvdXRwdXQ6IFsnJ10KKyAg
fSwKKyAgeworICAgIGlucHV0OiBbJ3t7d3JvbicsICdnfX0nXSwKKyAgICBvdXRwdXQ6IFsnJywg
JyddCisgIH0sCisgIHsKKyAgICBpbnB1dDogWyd7e3F1aW5lfX0nXSwKKyAgICBvdXRwdXQ6IFsn
e3txdWluZX19J10KKyAgfSwKKyAgeworICAgIGlucHV0OiBbJ3t7Ym9ndXNQYXJ0aWFsfX0nXSwK
KyAgICBvdXRwdXQ6IFsne3tpbmNvbXBsZXRlUmVzdWx0fSddCisgIH0sCisgIHsKKyAgICBpbnB1
dDogWyd7e2JvZ3VzUGFydGlhbH19fSddLAorICAgIG91dHB1dDogWyd7e2luY29tcGxldGVSZXN1
bHR9fSddCisgIH0KK107CisKK2ZvciAoY29uc3QgdGVzdENhc2Ugb2YgY2FzZXMpIHsKKyAgY29u
c3QgaW5wdXRDaHVua3MgPSB0ZXN0Q2FzZS5pbnB1dDsKKyAgY29uc3Qgb3V0cHV0Q2h1bmtzID0g
dGVzdENhc2Uub3V0cHV0OworICBwcm9taXNlX3Rlc3QoKCkgPT4geworICAgIGNvbnN0IGxmdCA9
IG5ldyBUcmFuc2Zvcm1TdHJlYW0obmV3IExpcEZ1enpUcmFuc2Zvcm1lcihzdWJzdGl0dXRpb25z
KSk7CisgICAgY29uc3Qgd3JpdGVyID0gbGZ0LndyaXRhYmxlLmdldFdyaXRlcigpOworICAgIGNv
bnN0IHByb21pc2VzID0gW107CisgICAgZm9yIChjb25zdCBpbnB1dENodW5rIG9mIGlucHV0Q2h1
bmtzKSB7CisgICAgICBwcm9taXNlcy5wdXNoKHdyaXRlci53cml0ZShpbnB1dENodW5rKSk7Cisg
ICAgfQorICAgIHByb21pc2VzLnB1c2god3JpdGVyLmNsb3NlKCkpOworICAgIGNvbnN0IHJlYWRl
ciA9IGxmdC5yZWFkYWJsZS5nZXRSZWFkZXIoKTsKKyAgICBsZXQgcmVhZGVyQ2hhaW4gPSBQcm9t
aXNlLnJlc29sdmUoKTsKKyAgICBmb3IgKGNvbnN0IG91dHB1dENodW5rIG9mIG91dHB1dENodW5r
cykgeworICAgICAgcmVhZGVyQ2hhaW4gPSByZWFkZXJDaGFpbi50aGVuKCgpID0+IHsKKyAgICAg
ICAgcmV0dXJuIHJlYWRlci5yZWFkKCkudGhlbigoeyB2YWx1ZSwgZG9uZSB9KSA9PiB7CisgICAg
ICAgICAgYXNzZXJ0X2ZhbHNlKGRvbmUsIGBkb25lIHNob3VsZCBiZSBmYWxzZSB3aGVuIHJlYWRp
bmcgJHtvdXRwdXRDaHVua31gKTsKKyAgICAgICAgICBhc3NlcnRfZXF1YWxzKHZhbHVlLCBvdXRw
dXRDaHVuaywgYHZhbHVlIHNob3VsZCBtYXRjaCBvdXRwdXRDaHVua2ApOworICAgICAgICB9KTsK
KyAgICAgIH0pOworICAgIH0KKyAgICByZWFkZXJDaGFpbiA9IHJlYWRlckNoYWluLnRoZW4oKCkg
PT4geworICAgICAgcmV0dXJuIHJlYWRlci5yZWFkKCkudGhlbigoeyBkb25lIH0pID0+IGFzc2Vy
dF90cnVlKGRvbmUsIGBkb25lIHNob3VsZCBiZSB0cnVlYCkpOworICAgIH0pOworICAgIHByb21p
c2VzLnB1c2gocmVhZGVyQ2hhaW4pOworICAgIHJldHVybiBQcm9taXNlLmFsbChwcm9taXNlcyk7
CisgIH0sIGB0ZXN0aW5nICIke2lucHV0Q2h1bmtzfSIgKGxlbmd0aCAke2lucHV0Q2h1bmtzLmxl
bmd0aH0pYCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMvdHJhbnNmb3JtLXN0cmVhbXMvbGlwZnV6ei5hbnkud29ya2Vy
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy9saXBmdXp6LmFueS53b3JrZXItZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmQwNjBhNzExYWI1NDdkYmQzMzBhN2ZiNWQzYTc4ODU3NDc5ODMwM2IK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMvdHJhbnNmb3JtLXN0cmVhbXMvbGlwZnV6ei5hbnkud29ya2VyLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDIyIEBACisKK0ZBSUwgdGVzdGluZyAiIiAobGVuZ3RoIDEpIENh
bid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCB0ZXN0aW5nICIiIChsZW5n
dGggMCkgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIHRlc3Rpbmcg
Int7aW4xfX0iIChsZW5ndGggMSkgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFt
CitGQUlMIHRlc3RpbmcgInp7e2luMX19IiAobGVuZ3RoIDEpIENhbid0IGZpbmQgdmFyaWFibGU6
IFRyYW5zZm9ybVN0cmVhbQorRkFJTCB0ZXN0aW5nICJ7e2luMX19cSIgKGxlbmd0aCAxKSBDYW4n
dCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgdGVzdGluZyAie3tpbjF9fXt7
aW4xfSIgKGxlbmd0aCAxKSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZB
SUwgdGVzdGluZyAie3tpbjF9fXt7aW4xfSx9IiAobGVuZ3RoIDIpIENhbid0IGZpbmQgdmFyaWFi
bGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCB0ZXN0aW5nICJ7e2luMSx9fSIgKGxlbmd0aCAyKSBD
YW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgdGVzdGluZyAie3ssaW4x
fX0iIChsZW5ndGggMikgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitGQUlM
IHRlc3RpbmcgInsse2luMX19IiAobGVuZ3RoIDIpIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5z
Zm9ybVN0cmVhbQorRkFJTCB0ZXN0aW5nICJ7eyxpbjF9IiAobGVuZ3RoIDIpIENhbid0IGZpbmQg
dmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCB0ZXN0aW5nICJ7IiAobGVuZ3RoIDEpIENh
bid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCB0ZXN0aW5nICJ7LCIgKGxl
bmd0aCAyKSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgdGVzdGlu
ZyAieyx7LGksbiwxLH0sfSIgKGxlbmd0aCA3KSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zv
cm1TdHJlYW0KK0ZBSUwgdGVzdGluZyAie3tpbjF9fXt7aW4yfX17e2luMX19IiAobGVuZ3RoIDEp
IENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCB0ZXN0aW5nICJ7e3dy
b25nfX0iIChsZW5ndGggMSkgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitG
QUlMIHRlc3RpbmcgInt7d3JvbixnfX0iIChsZW5ndGggMikgQ2FuJ3QgZmluZCB2YXJpYWJsZTog
VHJhbnNmb3JtU3RyZWFtCitGQUlMIHRlc3RpbmcgInt7cXVpbmV9fSIgKGxlbmd0aCAxKSBDYW4n
dCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgdGVzdGluZyAie3tib2d1c1Bh
cnRpYWx9fSIgKGxlbmd0aCAxKSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0K
K0ZBSUwgdGVzdGluZyAie3tib2d1c1BhcnRpYWx9fX0iIChsZW5ndGggMSkgQ2FuJ3QgZmluZCB2
YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy9saXBm
dXp6LmFueS53b3JrZXIuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy9saXBmdXp6LmFueS53b3JrZXIuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4yMzgyOTEzNTI4ZTY5M2IzYTVkNTZjNjYwYTQ1MDYwOTgwYjU0OGMzCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1zL2xpcGZ1enouYW55Lndvcmtlci5odG1sCkBA
IC0wLDAgKzEgQEAKKzwhLS0gVGhpcyBmaWxlIGlzIHJlcXVpcmVkIGZvciBXZWJLaXQgdGVzdCBp
bmZyYXN0cnVjdHVyZSB0byBydW4gdGhlIHRlbXBsYXRlZCB0ZXN0IC0tPgpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy9wYXRjaGVkLWdsb2JhbC5h
bnktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1zL3BhdGNoZWQtZ2xvYmFsLmFueS1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uOGU2ZGQ3NWU0YmQ2YmE4OGE2MzJiN2IzNTRiYzc0N2QyNjk0YzQz
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy9wYXRjaGVkLWdsb2JhbC5hbnktZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorCitGQUlMIFRyYW5zZm9ybVN0cmVhbSBjb25zdHJ1
Y3RvciBzaG91bGQgbm90IGNhbGwgc2V0dGVycyBmb3IgaGlnaFdhdGVyTWFyayBvciBzaXplIENh
bid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCBUcmFuc2Zvcm1TdHJlYW0g
c2hvdWxkIHVzZSB0aGUgb3JpZ2luYWwgdmFsdWUgb2YgUmVhZGFibGVTdHJlYW0gYW5kIFdyaXRh
YmxlU3RyZWFtIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
dHJhbnNmb3JtLXN0cmVhbXMvcGF0Y2hlZC1nbG9iYWwuYW55Lmh0bWwgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvdHJhbnNmb3JtLXN0cmVhbXMv
cGF0Y2hlZC1nbG9iYWwuYW55Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjM4MjkxMzUyOGU2OTNiM2E1ZDU2
YzY2MGE0NTA2MDk4MGI1NDhjMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy9wYXRj
aGVkLWdsb2JhbC5hbnkuaHRtbApAQCAtMCwwICsxIEBACis8IS0tIFRoaXMgZmlsZSBpcyByZXF1
aXJlZCBmb3IgV2ViS2l0IHRlc3QgaW5mcmFzdHJ1Y3R1cmUgdG8gcnVuIHRoZSB0ZW1wbGF0ZWQg
dGVzdCAtLT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvdHJhbnNmb3JtLXN0
cmVhbXMvcGF0Y2hlZC1nbG9iYWwuYW55LmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1zL3BhdGNoZWQtZ2xvYmFs
LmFueS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5iZjM1M2JjMjQxZmZhYjEyYzU1ODkxMjg1MTk0MDc4NWJjZGY2
MmYyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1zL3BhdGNoZWQtZ2xvYmFsLmFueS5q
cwpAQCAtMCwwICsxLDQ1IEBACisvLyBNRVRBOiBnbG9iYWw9d2luZG93LHdvcmtlcixqc3NoZWxs
CisndXNlIHN0cmljdCc7CisKKy8vIFRlc3RzIHdoaWNoIHBhdGNoIHRoZSBnbG9iYWwgZW52aXJv
bm1lbnQgYXJlIGtlcHQgc2VwYXJhdGUgdG8gYXZvaWQgaW50ZXJmZXJpbmcgd2l0aCBvdGhlciB0
ZXN0cy4KKworLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWV4dGVuZC1uYXRpdmUsIGFj
Y2Vzc29yLXBhaXJzCitPYmplY3QuZGVmaW5lUHJvcGVydHkoT2JqZWN0LnByb3RvdHlwZSwgJ2hp
Z2hXYXRlck1hcmsnLCB7CisgIHNldCgpIHsgdGhyb3cgbmV3IEVycm9yKCdoaWdoV2F0ZXJNYXJr
IHNldHRlciBjYWxsZWQnKTsgfQorfSk7CisKKy8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBu
by1leHRlbmQtbmF0aXZlLCBhY2Nlc3Nvci1wYWlycworT2JqZWN0LmRlZmluZVByb3BlcnR5KE9i
amVjdC5wcm90b3R5cGUsICdzaXplJywgeworICBzZXQoKSB7IHRocm93IG5ldyBFcnJvcignc2l6
ZSBzZXR0ZXIgY2FsbGVkJyk7IH0KK30pOworCit0ZXN0KCgpID0+IHsKKyAgYXNzZXJ0X25vdF9l
cXVhbHMobmV3IFRyYW5zZm9ybVN0cmVhbSgpLCBudWxsLCAnY29uc3RydWN0b3Igc2hvdWxkIHdv
cmsnKTsKK30sICdUcmFuc2Zvcm1TdHJlYW0gY29uc3RydWN0b3Igc2hvdWxkIG5vdCBjYWxsIHNl
dHRlcnMgZm9yIGhpZ2hXYXRlck1hcmsgb3Igc2l6ZScpOworCit0ZXN0KHQgPT4geworICBjb25z
dCBvbGRSZWFkYWJsZVN0cmVhbSA9IFJlYWRhYmxlU3RyZWFtOworICBjb25zdCBvbGRXcml0YWJs
ZVN0cmVhbSA9IFdyaXRhYmxlU3RyZWFtOworICBjb25zdCBnZXRSZWFkZXIgPSBSZWFkYWJsZVN0
cmVhbS5wcm90b3R5cGUuZ2V0UmVhZGVyOworICBjb25zdCBnZXRXcml0ZXIgPSBXcml0YWJsZVN0
cmVhbS5wcm90b3R5cGUuZ2V0V3JpdGVyOworCisgIC8vIFJlcGxhY2UgUmVhZGFibGVTdHJlYW0g
YW5kIFdyaXRhYmxlU3RyZWFtIHdpdGggYnJva2VuIHZlcnNpb25zLgorICBSZWFkYWJsZVN0cmVh
bSA9IGZ1bmN0aW9uICgpIHsKKyAgICB0aHJvdyBuZXcgRXJyb3IoJ0NhbGxlZCB0aGUgZ2xvYmFs
IFJlYWRhYmxlU3RyZWFtIGNvbnN0cnVjdG9yJyk7CisgIH07CisgIFdyaXRhYmxlU3RyZWFtID0g
ZnVuY3Rpb24gKCkgeworICAgIHRocm93IG5ldyBFcnJvcignQ2FsbGVkIHRoZSBnbG9iYWwgV3Jp
dGFibGVTdHJlYW0gY29uc3RydWN0b3InKTsKKyAgfTsKKyAgdC5hZGRfY2xlYW51cCgoKSA9PiB7
CisgICAgUmVhZGFibGVTdHJlYW0gPSBvbGRSZWFkYWJsZVN0cmVhbTsKKyAgICBXcml0YWJsZVN0
cmVhbSA9IG9sZFdyaXRhYmxlU3RyZWFtOworICB9KTsKKworICBjb25zdCB0cyA9IG5ldyBUcmFu
c2Zvcm1TdHJlYW0oKTsKKworICAvLyBKdXN0IHRvIGJlIHN1cmUsIGVuc3VyZSB0aGUgcmVhZGFi
bGUgYW5kIHdyaXRhYmxlIHBhc3MgYnJhbmQgY2hlY2tzLgorICBhc3NlcnRfbm90X2VxdWFscyhn
ZXRSZWFkZXIuY2FsbCh0cy5yZWFkYWJsZSksIHVuZGVmaW5lZCwKKyAgICAgICAgICAgICAgICAg
ICAgJ2dldFJlYWRlciBzaG91bGQgd29yayB3aGVuIGNhbGxlZCBvbiB0cy5yZWFkYWJsZScpOwor
ICBhc3NlcnRfbm90X2VxdWFscyhnZXRXcml0ZXIuY2FsbCh0cy53cml0YWJsZSksIHVuZGVmaW5l
ZCwKKyAgICAgICAgICAgICAgICAgICAgJ2dldFdyaXRlciBzaG91bGQgd29yayB3aGVuIGNhbGxl
ZCBvbiB0cy53cml0YWJsZScpOworfSwgJ1RyYW5zZm9ybVN0cmVhbSBzaG91bGQgdXNlIHRoZSBv
cmlnaW5hbCB2YWx1ZSBvZiBSZWFkYWJsZVN0cmVhbSBhbmQgV3JpdGFibGVTdHJlYW0nKTsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy9wYXRjaGVkLWdsb2JhbC5hbnkud29ya2VyLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy90cmFuc2Zvcm0tc3RyZWFtcy9wYXRjaGVkLWdsb2JhbC5hbnkud29ya2VyLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40NTk2ODFhODRhZDljNmRjMTg3ZjkyYWVmY2YzYzk2OTNlNDJkYjM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1zL3BhdGNoZWQtZ2xvYmFsLmFueS53b3JrZXIt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorCitGQUlMIFRyYW5zZm9ybVN0cmVhbSBjb25z
dHJ1Y3RvciBzaG91bGQgbm90IGNhbGwgc2V0dGVycyBmb3IgaGlnaFdhdGVyTWFyayBvciBzaXpl
IENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCBUcmFuc2Zvcm1TdHJl
YW0gc2hvdWxkIHVzZSB0aGUgb3JpZ2luYWwgdmFsdWUgb2YgUmVhZGFibGVTdHJlYW0gYW5kIFdy
aXRhYmxlU3RyZWFtIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy90cmFuc2Zvcm0tc3RyZWFtcy9wYXRjaGVkLWdsb2JhbC5hbnkud29ya2VyLmh0bWwgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvdHJhbnNmb3Jt
LXN0cmVhbXMvcGF0Y2hlZC1nbG9iYWwuYW55Lndvcmtlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzODI5
MTM1MjhlNjkzYjNhNWQ1NmM2NjBhNDUwNjA5ODBiNTQ4YzMKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvdHJhbnNm
b3JtLXN0cmVhbXMvcGF0Y2hlZC1nbG9iYWwuYW55Lndvcmtlci5odG1sCkBAIC0wLDAgKzEgQEAK
KzwhLS0gVGhpcyBmaWxlIGlzIHJlcXVpcmVkIGZvciBXZWJLaXQgdGVzdCBpbmZyYXN0cnVjdHVy
ZSB0byBydW4gdGhlIHRlbXBsYXRlZCB0ZXN0IC0tPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy9wcm9wZXJ0aWVzLmFueS1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvdHJh
bnNmb3JtLXN0cmVhbXMvcHJvcGVydGllcy5hbnktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjky
YzY0MGIwOGQ3YjViMDkwYzU4ZGRjMjY4OTMwNjc5NzhhZWVjMTcKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvdHJh
bnNmb3JtLXN0cmVhbXMvcHJvcGVydGllcy5hbnktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOCBA
QAorCitGQUlMIHRyYW5zZm9ybWVyIG1ldGhvZCBzdGFydCBzaG91bGQgYmUgY2FsbGVkIHdpdGgg
dGhlIHJpZ2h0IG51bWJlciBvZiBhcmd1bWVudHMgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNm
b3JtU3RyZWFtCitGQUlMIHRyYW5zZm9ybWVyIG1ldGhvZCBzdGFydCBzaG91bGQgYmUgY2FsbGVk
IGV2ZW4gd2hlbiBpdCdzIGxvY2F0ZWQgb24gdGhlIHByb3RvdHlwZSBjaGFpbiBDYW4ndCBmaW5k
IHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgdHJhbnNmb3JtZXIgbWV0aG9kIHRyYW5z
Zm9ybSBzaG91bGQgYmUgY2FsbGVkIHdpdGggdGhlIHJpZ2h0IG51bWJlciBvZiBhcmd1bWVudHMg
Q2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIHRyYW5zZm9ybWVyIG1l
dGhvZCB0cmFuc2Zvcm0gc2hvdWxkIGJlIGNhbGxlZCBldmVuIHdoZW4gaXQncyBsb2NhdGVkIG9u
IHRoZSBwcm90b3R5cGUgY2hhaW4gQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFt
CitGQUlMIHRyYW5zZm9ybWVyIG1ldGhvZCBmbHVzaCBzaG91bGQgYmUgY2FsbGVkIHdpdGggdGhl
IHJpZ2h0IG51bWJlciBvZiBhcmd1bWVudHMgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3Jt
U3RyZWFtCitGQUlMIHRyYW5zZm9ybWVyIG1ldGhvZCBmbHVzaCBzaG91bGQgYmUgY2FsbGVkIGV2
ZW4gd2hlbiBpdCdzIGxvY2F0ZWQgb24gdGhlIHByb3RvdHlwZSBjaGFpbiBDYW4ndCBmaW5kIHZh
cmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1zL3Byb3Bl
cnRpZXMuYW55Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3N0cmVhbXMvdHJhbnNmb3JtLXN0cmVhbXMvcHJvcGVydGllcy5hbnkuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4yMzgyOTEzNTI4ZTY5M2IzYTVkNTZjNjYwYTQ1MDYwOTgwYjU0OGMzCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJl
YW1zL3RyYW5zZm9ybS1zdHJlYW1zL3Byb3BlcnRpZXMuYW55Lmh0bWwKQEAgLTAsMCArMSBAQAor
PCEtLSBUaGlzIGZpbGUgaXMgcmVxdWlyZWQgZm9yIFdlYktpdCB0ZXN0IGluZnJhc3RydWN0dXJl
IHRvIHJ1biB0aGUgdGVtcGxhdGVkIHRlc3QgLS0+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1zL3Byb3BlcnRpZXMuYW55LmpzIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJl
YW1zL3Byb3BlcnRpZXMuYW55LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYyYWM0ODJlMGRlMjIzNDY1ODJjODNi
MjM3YTA2YzEzMTk1NzhmOGMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvdHJhbnNmb3JtLXN0cmVhbXMvcHJvcGVy
dGllcy5hbnkuanMKQEAgLTAsMCArMSw0OSBAQAorLy8gTUVUQTogZ2xvYmFsPXdpbmRvdyx3b3Jr
ZXIsanNzaGVsbAorJ3VzZSBzdHJpY3QnOworCitjb25zdCB0cmFuc2Zvcm1lck1ldGhvZHMgPSB7
CisgIHN0YXJ0OiB7CisgICAgbGVuZ3RoOiAxLAorICAgIHRyaWdnZXI6ICgpID0+IFByb21pc2Uu
cmVzb2x2ZSgpCisgIH0sCisgIHRyYW5zZm9ybTogeworICAgIGxlbmd0aDogMiwKKyAgICB0cmln
Z2VyOiB0cyA9PiB0cy53cml0YWJsZS5nZXRXcml0ZXIoKS53cml0ZSgpCisgIH0sCisgIGZsdXNo
OiB7CisgICAgbGVuZ3RoOiAxLAorICAgIHRyaWdnZXI6IHRzID0+IHRzLndyaXRhYmxlLmdldFdy
aXRlcigpLmNsb3NlKCkKKyAgfQorfTsKKworZm9yIChjb25zdCBtZXRob2QgaW4gdHJhbnNmb3Jt
ZXJNZXRob2RzKSB7CisgIGNvbnN0IHsgbGVuZ3RoLCB0cmlnZ2VyIH0gPSB0cmFuc2Zvcm1lck1l
dGhvZHNbbWV0aG9kXTsKKworICAvLyBTb21lIHNlbWFudGljIHRlc3RzIG9mIGhvdyB0cmFuc2Zv
cm1lciBtZXRob2RzIGFyZSBjYWxsZWQgY2FuIGJlIGZvdW5kIGluIGdlbmVyYWwuanMsIGFzIHdl
bGwgYXMgaW4gdGhlIHRlc3QgZmlsZXMKKyAgLy8gc3BlY2lmaWMgdG8gZWFjaCBtZXRob2QuCisg
IHByb21pc2VfdGVzdCgoKSA9PiB7CisgICAgbGV0IGFyZ0NvdW50OworICAgIGNvbnN0IHRzID0g
bmV3IFRyYW5zZm9ybVN0cmVhbSh7CisgICAgICBbbWV0aG9kXSguLi5hcmdzKSB7CisgICAgICAg
IGFyZ0NvdW50ID0gYXJncy5sZW5ndGg7CisgICAgICB9CisgICAgfSwgdW5kZWZpbmVkLCB7IGhp
Z2hXYXRlck1hcms6IEluZmluaXR5IH0pOworICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodHJp
Z2dlcih0cykpLnRoZW4oKCkgPT4geworICAgICAgYXNzZXJ0X2VxdWFscyhhcmdDb3VudCwgbGVu
Z3RoLCBgJHttZXRob2R9IHNob3VsZCBiZSBjYWxsZWQgd2l0aCAke2xlbmd0aH0gYXJndW1lbnRz
YCk7CisgICAgfSk7CisgIH0sIGB0cmFuc2Zvcm1lciBtZXRob2QgJHttZXRob2R9IHNob3VsZCBi
ZSBjYWxsZWQgd2l0aCB0aGUgcmlnaHQgbnVtYmVyIG9mIGFyZ3VtZW50c2ApOworCisgIHByb21p
c2VfdGVzdCgoKSA9PiB7CisgICAgbGV0IG1ldGhvZFdhc0NhbGxlZCA9IGZhbHNlOworICAgIGZ1
bmN0aW9uIFRyYW5zZm9ybWVyKCkge30KKyAgICBUcmFuc2Zvcm1lci5wcm90b3R5cGUgPSB7Cisg
ICAgICBbbWV0aG9kXSgpIHsKKyAgICAgICAgbWV0aG9kV2FzQ2FsbGVkID0gdHJ1ZTsKKyAgICAg
IH0KKyAgICB9OworICAgIGNvbnN0IHRzID0gbmV3IFRyYW5zZm9ybVN0cmVhbShuZXcgVHJhbnNm
b3JtZXIoKSwgdW5kZWZpbmVkLCB7IGhpZ2hXYXRlck1hcms6IEluZmluaXR5IH0pOworICAgIHJl
dHVybiBQcm9taXNlLnJlc29sdmUodHJpZ2dlcih0cykpLnRoZW4oKCkgPT4geworICAgICAgYXNz
ZXJ0X3RydWUobWV0aG9kV2FzQ2FsbGVkLCBgJHttZXRob2R9IHNob3VsZCBiZSBjYWxsZWRgKTsK
KyAgICB9KTsKKyAgfSwgYHRyYW5zZm9ybWVyIG1ldGhvZCAke21ldGhvZH0gc2hvdWxkIGJlIGNh
bGxlZCBldmVuIHdoZW4gaXQncyBsb2NhdGVkIG9uIHRoZSBwcm90b3R5cGUgY2hhaW5gKTsKK30K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy9wcm9wZXJ0aWVzLmFueS53b3JrZXItZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
L3RyYW5zZm9ybS1zdHJlYW1zL3Byb3BlcnRpZXMuYW55Lndvcmtlci1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uOTJjNjQwYjA4ZDdiNWIwOTBjNThkZGMyNjg5MzA2Nzk3OGFlZWMxNwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy9wcm9wZXJ0aWVzLmFueS53b3JrZXItZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsOCBAQAorCitGQUlMIHRyYW5zZm9ybWVyIG1ldGhvZCBzdGFydCBzaG91
bGQgYmUgY2FsbGVkIHdpdGggdGhlIHJpZ2h0IG51bWJlciBvZiBhcmd1bWVudHMgQ2FuJ3QgZmlu
ZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIHRyYW5zZm9ybWVyIG1ldGhvZCBzdGFy
dCBzaG91bGQgYmUgY2FsbGVkIGV2ZW4gd2hlbiBpdCdzIGxvY2F0ZWQgb24gdGhlIHByb3RvdHlw
ZSBjaGFpbiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgdHJhbnNm
b3JtZXIgbWV0aG9kIHRyYW5zZm9ybSBzaG91bGQgYmUgY2FsbGVkIHdpdGggdGhlIHJpZ2h0IG51
bWJlciBvZiBhcmd1bWVudHMgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitG
QUlMIHRyYW5zZm9ybWVyIG1ldGhvZCB0cmFuc2Zvcm0gc2hvdWxkIGJlIGNhbGxlZCBldmVuIHdo
ZW4gaXQncyBsb2NhdGVkIG9uIHRoZSBwcm90b3R5cGUgY2hhaW4gQ2FuJ3QgZmluZCB2YXJpYWJs
ZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIHRyYW5zZm9ybWVyIG1ldGhvZCBmbHVzaCBzaG91bGQg
YmUgY2FsbGVkIHdpdGggdGhlIHJpZ2h0IG51bWJlciBvZiBhcmd1bWVudHMgQ2FuJ3QgZmluZCB2
YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIHRyYW5zZm9ybWVyIG1ldGhvZCBmbHVzaCBz
aG91bGQgYmUgY2FsbGVkIGV2ZW4gd2hlbiBpdCdzIGxvY2F0ZWQgb24gdGhlIHByb3RvdHlwZSBj
aGFpbiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5z
Zm9ybS1zdHJlYW1zL3Byb3BlcnRpZXMuYW55Lndvcmtlci5odG1sIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1zL3By
b3BlcnRpZXMuYW55Lndvcmtlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzODI5MTM1MjhlNjkzYjNhNWQ1
NmM2NjBhNDUwNjA5ODBiNTQ4YzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvdHJhbnNmb3JtLXN0cmVhbXMvcHJv
cGVydGllcy5hbnkud29ya2VyLmh0bWwKQEAgLTAsMCArMSBAQAorPCEtLSBUaGlzIGZpbGUgaXMg
cmVxdWlyZWQgZm9yIFdlYktpdCB0ZXN0IGluZnJhc3RydWN0dXJlIHRvIHJ1biB0aGUgdGVtcGxh
dGVkIHRlc3QgLS0+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9y
bS1zdHJlYW1zL3JlZW50cmFudC1zdHJhdGVnaWVzLmFueS1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvdHJhbnNmb3JtLXN0
cmVhbXMvcmVlbnRyYW50LXN0cmF0ZWdpZXMuYW55LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4y
YjU5MzE3YTc2MTc1OGYwMTg2ODNiZjI5NmQ0ZWI2NTUxZTM4NDgyCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3Ry
YW5zZm9ybS1zdHJlYW1zL3JlZW50cmFudC1zdHJhdGVnaWVzLmFueS1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwxMyBAQAorCitGQUlMIGVucXVldWUoKSBpbnNpZGUgc2l6ZSgpIHNob3VsZCB3b3Jr
IENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCB0ZXJtaW5hdGUoKSBp
bnNpZGUgc2l6ZSgpIHNob3VsZCB3b3JrIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0
cmVhbQorRkFJTCBlcnJvcigpIGluc2lkZSBzaXplKCkgc2hvdWxkIHdvcmsgQ2FuJ3QgZmluZCB2
YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIGRlc2lyZWRTaXplIGluc2lkZSBzaXplKCkg
c2hvdWxkIHdvcmsgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIHJl
YWRhYmxlIGNhbmNlbCgpIGluc2lkZSBzaXplKCkgc2hvdWxkIHdvcmsgQ2FuJ3QgZmluZCB2YXJp
YWJsZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIHBpcGVUbygpIGluc2lkZSBzaXplKCkgc2hvdWxk
IHdvcmsgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIHJlYWQoKSBp
bnNpZGUgb2Ygc2l6ZSgpIHNob3VsZCB3b3JrIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9y
bVN0cmVhbQorRkFJTCB3cml0ZXIud3JpdGUoKSBpbnNpZGUgc2l6ZSgpIHNob3VsZCB3b3JrIENh
bid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCBzeW5jaHJvbm91cyB3cml0
ZXIud3JpdGUoKSBpbnNpZGUgc2l6ZSgpIHNob3VsZCB3b3JrIENhbid0IGZpbmQgdmFyaWFibGU6
IFRyYW5zZm9ybVN0cmVhbQorRkFJTCB3cml0ZXIuY2xvc2UoKSBpbnNpZGUgc2l6ZSgpIHNob3Vs
ZCB3b3JrIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCB3cml0ZXIu
YWJvcnQoKSBpbnNpZGUgc2l6ZSgpIHNob3VsZCB3b3JrIENhbid0IGZpbmQgdmFyaWFibGU6IFRy
YW5zZm9ybVN0cmVhbQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvdHJhbnNmb3JtLXN0cmVhbXMvcmVlbnRyYW50LXN0cmF0
ZWdpZXMuYW55Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3N0cmVhbXMvdHJhbnNmb3JtLXN0cmVhbXMvcmVlbnRyYW50LXN0cmF0ZWdpZXMuYW55Lmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMjM4MjkxMzUyOGU2OTNiM2E1ZDU2YzY2MGE0NTA2MDk4MGI1NDhjMwot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy9yZWVudHJhbnQtc3RyYXRlZ2llcy5hbnku
aHRtbApAQCAtMCwwICsxIEBACis8IS0tIFRoaXMgZmlsZSBpcyByZXF1aXJlZCBmb3IgV2ViS2l0
IHRlc3QgaW5mcmFzdHJ1Y3R1cmUgdG8gcnVuIHRoZSB0ZW1wbGF0ZWQgdGVzdCAtLT4KXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvdHJhbnNmb3JtLXN0cmVhbXMvcmVlbnRyYW50
LXN0cmF0ZWdpZXMuYW55LmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1zL3JlZW50cmFudC1zdHJhdGVnaWVzLmFu
eS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4zMWU1Mzk0OWYzYzI2ZTFmNjJkYjc4YmQ2NDI3OTY4ODlkMmI3MDZk
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1zL3JlZW50cmFudC1zdHJhdGVnaWVzLmFu
eS5qcwpAQCAtMCwwICsxLDMxOSBAQAorLy8gTUVUQTogZ2xvYmFsPXdpbmRvdyx3b3JrZXIsanNz
aGVsbAorLy8gTUVUQTogc2NyaXB0PS4uL3Jlc291cmNlcy9yZWNvcmRpbmctc3RyZWFtcy5qcwor
Ly8gTUVUQTogc2NyaXB0PS4uL3Jlc291cmNlcy9ycy11dGlscy5qcworLy8gTUVUQTogc2NyaXB0
PS4uL3Jlc291cmNlcy90ZXN0LXV0aWxzLmpzCisndXNlIHN0cmljdCc7CisKKy8vIFRoZSBzaXpl
KCkgZnVuY3Rpb24gb2YgcmVhZGFibGVTdHJhdGVneSBjYW4gcmUtZW50cmFudGx5IGNhbGwgYmFj
ayBpbnRvIHRoZSBUcmFuc2Zvcm1TdHJlYW0gaW1wbGVtZW50YXRpb24uIFRoaXMKKy8vIG1ha2Vz
IGl0IHJpc2t5IHRvIGNhY2hlIHN0YXRlIGFjcm9zcyB0aGUgY2FsbCB0byBSZWFkYWJsZVN0cmVh
bURlZmF1bHRDb250cm9sbGVyRW5xdWV1ZS4gVGhlc2UgdGVzdHMgYXR0ZW1wdCB0byBjYXRjaAor
Ly8gc3VjaCBlcnJvcnMuIFRoZXkgYXJlIHNlcGFyYXRlZCBmcm9tIHRoZSBvdGhlciBzdHJhdGVn
eSB0ZXN0cyBiZWNhdXNlIG5vIHJlYWwgdXNlciBjb2RlIHNob3VsZCBldmVyIGRvIGFueXRoaW5n
IGxpa2UKKy8vIHRoaXMuCisvLworLy8gVGhlcmUgaXMgbm8gc3VjaCBpc3N1ZSB3aXRoIHdyaXRh
YmxlU3RyYXRlZ3kgc2l6ZSgpIGJlY2F1c2UgaXQgaXMgbmV2ZXIgY2FsbGVkIGZyb20gd2l0aGlu
IFRyYW5zZm9ybVN0cmVhbQorLy8gYWxnb3JpdGhtcy4KKworY29uc3QgZXJyb3IxID0gbmV3IEVy
cm9yKCdlcnJvcjEnKTsKK2Vycm9yMS5uYW1lID0gJ2Vycm9yMSc7CisKK3Byb21pc2VfdGVzdCgo
KSA9PiB7CisgIGxldCBjb250cm9sbGVyOworICBsZXQgY2FsbHMgPSAwOworICBjb25zdCB0cyA9
IG5ldyBUcmFuc2Zvcm1TdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGNvbnRyb2xsZXIg
PSBjOworICAgIH0KKyAgfSwgdW5kZWZpbmVkLCB7CisgICAgc2l6ZSgpIHsKKyAgICAgICsrY2Fs
bHM7CisgICAgICBpZiAoY2FsbHMgPCAyKSB7CisgICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgn
YicpOworICAgICAgfQorICAgICAgcmV0dXJuIDE7CisgICAgfSwKKyAgICBoaWdoV2F0ZXJNYXJr
OiBJbmZpbml0eQorICB9KTsKKyAgY29uc3Qgd3JpdGVyID0gdHMud3JpdGFibGUuZ2V0V3JpdGVy
KCk7CisgIHJldHVybiBQcm9taXNlLmFsbChbd3JpdGVyLndyaXRlKCdhJyksIHdyaXRlci5jbG9z
ZSgpXSkKKyAgICAgIC50aGVuKCgpID0+IHJlYWRhYmxlU3RyZWFtVG9BcnJheSh0cy5yZWFkYWJs
ZSkpCisgICAgICAudGhlbihhcnJheSA9PiBhc3NlcnRfYXJyYXlfZXF1YWxzKGFycmF5LCBbJ2In
LCAnYSddLCAnYXJyYXkgc2hvdWxkIGNvbnRhaW4gdHdvIGNodW5rcycpKTsKK30sICdlbnF1ZXVl
KCkgaW5zaWRlIHNpemUoKSBzaG91bGQgd29yaycpOworCitwcm9taXNlX3Rlc3QoKCkgPT4gewor
ICBsZXQgY29udHJvbGxlcjsKKyAgY29uc3QgdHMgPSBuZXcgVHJhbnNmb3JtU3RyZWFtKHsKKyAg
ICBzdGFydChjKSB7CisgICAgICBjb250cm9sbGVyID0gYzsKKyAgICB9CisgIH0sIHVuZGVmaW5l
ZCwgeworICAgIHNpemUoKSB7CisgICAgICAvLyBUaGUgcmVhZGFibGUgcXVldWUgaXMgZW1wdHku
CisgICAgICBjb250cm9sbGVyLnRlcm1pbmF0ZSgpOworICAgICAgLy8gVGhlIHJlYWRhYmxlIHN0
YXRlIGhhcyBnb25lIGZyb20gInJlYWRhYmxlIiB0byAiY2xvc2VkIi4KKyAgICAgIHJldHVybiAx
OworICAgICAgLy8gVGhpcyBjaHVuayB3aWxsIGJlIGVucXVldWVkLCBidXQgd2lsbCBiZSBpbXBv
c3NpYmxlIHRvIHJlYWQgYmVjYXVzZSB0aGUgc3RhdGUgaXMgYWxyZWFkeSAiY2xvc2VkIi4KKyAg
ICB9LAorICAgIGhpZ2hXYXRlck1hcms6IEluZmluaXR5CisgIH0pOworICBjb25zdCB3cml0ZXIg
PSB0cy53cml0YWJsZS5nZXRXcml0ZXIoKTsKKyAgcmV0dXJuIHdyaXRlci53cml0ZSgnYScpCisg
ICAgICAudGhlbigoKSA9PiByZWFkYWJsZVN0cmVhbVRvQXJyYXkodHMucmVhZGFibGUpKQorICAg
ICAgLnRoZW4oYXJyYXkgPT4gYXNzZXJ0X2FycmF5X2VxdWFscyhhcnJheSwgW10sICdhcnJheSBz
aG91bGQgY29udGFpbiBubyBjaHVua3MnKSk7CisgIC8vIFRoZSBjaHVuayAnYScgaXMgc3RpbGwg
aW4gcmVhZGFibGUncyBxdWV1ZS4gcmVhZGFibGUgaXMgY2xvc2VkIHNvICdhJyBjYW5ub3QgYmUg
cmVhZC4gd3JpdGFibGUncyBxdWV1ZSBpcyBlbXB0eSBhbmQKKyAgLy8gaXQgaXMgc3RpbGwgd3Jp
dGFibGUuCit9LCAndGVybWluYXRlKCkgaW5zaWRlIHNpemUoKSBzaG91bGQgd29yaycpOworCitw
cm9taXNlX3Rlc3QodCA9PiB7CisgIGxldCBjb250cm9sbGVyOworICBjb25zdCB0cyA9IG5ldyBU
cmFuc2Zvcm1TdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGNvbnRyb2xsZXIgPSBjOwor
ICAgIH0KKyAgfSwgdW5kZWZpbmVkLCB7CisgICAgc2l6ZSgpIHsKKyAgICAgIGNvbnRyb2xsZXIu
ZXJyb3IoZXJyb3IxKTsKKyAgICAgIHJldHVybiAxOworICAgIH0sCisgICAgaGlnaFdhdGVyTWFy
azogSW5maW5pdHkKKyAgfSk7CisgIGNvbnN0IHdyaXRlciA9IHRzLndyaXRhYmxlLmdldFdyaXRl
cigpOworICByZXR1cm4gd3JpdGVyLndyaXRlKCdhJykKKyAgICAgIC50aGVuKCgpID0+IHByb21p
c2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMSwgdHMucmVhZGFibGUuZ2V0UmVhZGVyKCkucmVh
ZCgpLCAncmVhZCgpIHNob3VsZCByZWplY3QnKSk7Cit9LCAnZXJyb3IoKSBpbnNpZGUgc2l6ZSgp
IHNob3VsZCB3b3JrJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisgIGxldCBjb250cm9sbGVy
OworICBjb25zdCB0cyA9IG5ldyBUcmFuc2Zvcm1TdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAg
ICAgIGNvbnRyb2xsZXIgPSBjOworICAgIH0KKyAgfSwgdW5kZWZpbmVkLCB7CisgICAgc2l6ZSgp
IHsKKyAgICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMSwgJ2Rlc2ly
ZWRTaXplIHNob3VsZCBiZSAxJyk7CisgICAgICByZXR1cm4gMTsKKyAgICB9LAorICAgIGhpZ2hX
YXRlck1hcms6IDEKKyAgfSk7CisgIGNvbnN0IHdyaXRlciA9IHRzLndyaXRhYmxlLmdldFdyaXRl
cigpOworICByZXR1cm4gUHJvbWlzZS5hbGwoW3dyaXRlci53cml0ZSgnYScpLCB3cml0ZXIuY2xv
c2UoKV0pCisgICAgICAudGhlbigoKSA9PiByZWFkYWJsZVN0cmVhbVRvQXJyYXkodHMucmVhZGFi
bGUpKQorICAgICAgLnRoZW4oYXJyYXkgPT4gYXNzZXJ0X2FycmF5X2VxdWFscyhhcnJheSwgWydh
J10sICdhcnJheSBzaG91bGQgY29udGFpbiBvbmUgY2h1bmsnKSk7Cit9LCAnZGVzaXJlZFNpemUg
aW5zaWRlIHNpemUoKSBzaG91bGQgd29yaycpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIGxl
dCBjYW5jZWxQcm9taXNlOworICBjb25zdCB0cyA9IG5ldyBUcmFuc2Zvcm1TdHJlYW0oe30sIHVu
ZGVmaW5lZCwgeworICAgIHNpemUoKSB7CisgICAgICBjYW5jZWxQcm9taXNlID0gdHMucmVhZGFi
bGUuY2FuY2VsKGVycm9yMSk7CisgICAgICByZXR1cm4gMTsKKyAgICB9LAorICAgIGhpZ2hXYXRl
ck1hcms6IEluZmluaXR5CisgIH0pOworICBjb25zdCB3cml0ZXIgPSB0cy53cml0YWJsZS5nZXRX
cml0ZXIoKTsKKyAgcmV0dXJuIHdyaXRlci53cml0ZSgnYScpCisgICAgICAudGhlbigoKSA9PiB7
CisgICAgICAgIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMSwgd3JpdGVyLmNsb3Nl
ZCwgJ3dyaXRlci5jbG9zZWQgc2hvdWxkIHJlamVjdCcpOworICAgICAgICByZXR1cm4gY2FuY2Vs
UHJvbWlzZTsKKyAgICAgIH0pOworfSwgJ3JlYWRhYmxlIGNhbmNlbCgpIGluc2lkZSBzaXplKCkg
c2hvdWxkIHdvcmsnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgbGV0IGNvbnRyb2xsZXI7
CisgIGxldCBwaXBlVG9Qcm9taXNlOworICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3Ry
ZWFtKCk7CisgIGNvbnN0IHRzID0gbmV3IFRyYW5zZm9ybVN0cmVhbSh7CisgICAgc3RhcnQoYykg
eworICAgICAgY29udHJvbGxlciA9IGM7CisgICAgfQorICB9LCB1bmRlZmluZWQsIHsKKyAgICBz
aXplKCkgeworICAgICAgaWYgKCFwaXBlVG9Qcm9taXNlKSB7CisgICAgICAgIHBpcGVUb1Byb21p
c2UgPSB0cy5yZWFkYWJsZS5waXBlVG8od3MpOworICAgICAgfQorICAgICAgcmV0dXJuIDE7Cisg
ICAgfSwKKyAgICBoaWdoV2F0ZXJNYXJrOiAxCisgIH0pOworICAvLyBBbGxvdyBwcm9taXNlIHJl
dHVybmVkIGJ5IHN0YXJ0KCkgdG8gcmVzb2x2ZSBzbyB0aGF0IGVucXVldWUoKSB3aWxsIGhhcHBl
biBzeW5jaHJvbm91c2x5LgorICByZXR1cm4gZGVsYXkoMCkudGhlbigoKSA9PiB7CisgICAgY29u
dHJvbGxlci5lbnF1ZXVlKCdhJyk7CisgICAgYXNzZXJ0X25vdF9lcXVhbHMocGlwZVRvUHJvbWlz
ZSwgdW5kZWZpbmVkKTsKKworICAgIC8vIFNvbWUgcGlwZVRvKCkgaW1wbGVtZW50YXRpb25zIG5l
ZWQgYW4gYWRkaXRpb25hbCBjaHVuayBlbnF1ZXVlZCBpbiBvcmRlciBmb3IgdGhlIGZpcnN0IG9u
ZSB0byBiZSBwcm9jZXNzZWQuIFNlZQorICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS93aGF0d2cv
c3RyZWFtcy9pc3N1ZXMvNzk0IGZvciBiYWNrZ3JvdW5kLgorICAgIGNvbnRyb2xsZXIuZW5xdWV1
ZSgnYScpOworCisgICAgLy8gR2l2ZSBwaXBlVG8oKSBhIGNoYW5jZSB0byBwcm9jZXNzIHRoZSBx
dWV1ZWQgY2h1bmtzLgorICAgIHJldHVybiBkZWxheSgwKTsKKyAgfSkudGhlbigoKSA9PiB7Cisg
ICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsnd3JpdGUnLCAnYScsICd3cml0ZScs
ICdhJ10sICd3cyBzaG91bGQgY29udGFpbiB0d28gY2h1bmtzJyk7CisgICAgY29udHJvbGxlci50
ZXJtaW5hdGUoKTsKKyAgICByZXR1cm4gcGlwZVRvUHJvbWlzZTsKKyAgfSkudGhlbigoKSA9PiB7
CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsnd3JpdGUnLCAnYScsICd3cml0
ZScsICdhJywgJ2Nsb3NlJ10sICd0YXJnZXQgc2hvdWxkIGhhdmUgYmVlbiBjbG9zZWQnKTsKKyAg
fSk7Cit9LCAncGlwZVRvKCkgaW5zaWRlIHNpemUoKSBzaG91bGQgd29yaycpOworCitwcm9taXNl
X3Rlc3QoKCkgPT4geworICBsZXQgY29udHJvbGxlcjsKKyAgbGV0IHJlYWRQcm9taXNlOworICBs
ZXQgY2FsbHMgPSAwOworICBsZXQgcmVhZGVyOworICBjb25zdCB0cyA9IG5ldyBUcmFuc2Zvcm1T
dHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGNvbnRyb2xsZXIgPSBjOworICAgIH0KKyAg
fSwgdW5kZWZpbmVkLCB7CisgICAgc2l6ZSgpIHsKKyAgICAgIC8vIFRoaXMgaXMgdHJpZ2dlcmVk
IGJ5IGNvbnRyb2xsZXIuZW5xdWV1ZSgpLiBUaGUgcXVldWUgaXMgZW1wdHkgYW5kIHRoZXJlIGFy
ZSBubyBwZW5kaW5nIHJlYWRzLiBwdWxsKCkgaXMgY2FsbGVkCisgICAgICAvLyBzeW5jaHJvbm91
c2x5LCBhbGxvd2luZyB0cmFuc2Zvcm0oKSB0byBwcm9jZWVkIGFzeW5jaHJvbm91c2x5LiBUaGlz
IHJlc3VsdHMgaW4gYSBzZWNvbmQgY2FsbCB0byBlbnF1ZXVlKCksCisgICAgICAvLyB3aGljaCBy
ZXNvbHZlcyB0aGlzIHBlbmRpbmcgcmVhZCgpIHdpdGhvdXQgY2FsbGluZyBzaXplKCkgYWdhaW4u
CisgICAgICByZWFkUHJvbWlzZSA9IHJlYWRlci5yZWFkKCk7CisgICAgICArK2NhbGxzOworICAg
ICAgcmV0dXJuIDE7CisgICAgfSwKKyAgICBoaWdoV2F0ZXJNYXJrOiAwCisgIH0pOworICByZWFk
ZXIgPSB0cy5yZWFkYWJsZS5nZXRSZWFkZXIoKTsKKyAgY29uc3Qgd3JpdGVyID0gdHMud3JpdGFi
bGUuZ2V0V3JpdGVyKCk7CisgIGxldCB3cml0ZVJlc29sdmVkID0gZmFsc2U7CisgIGNvbnN0IHdy
aXRlUHJvbWlzZSA9IHdyaXRlci53cml0ZSgnYicpLnRoZW4oKCkgPT4geworICAgIHdyaXRlUmVz
b2x2ZWQgPSB0cnVlOworICB9KTsKKyAgcmV0dXJuIGZsdXNoQXN5bmNFdmVudHMoKS50aGVuKCgp
ID0+IHsKKyAgICBhc3NlcnRfZmFsc2Uod3JpdGVSZXNvbHZlZCk7CisgICAgY29udHJvbGxlci5l
bnF1ZXVlKCdhJyk7CisgICAgYXNzZXJ0X2VxdWFscyhjYWxscywgMSwgJ3NpemUoKSBzaG91bGQg
aGF2ZSBiZWVuIGNhbGxlZCBvbmNlJyk7CisgICAgcmV0dXJuIGRlbGF5KDApOworICB9KS50aGVu
KCgpID0+IHsKKyAgICBhc3NlcnRfdHJ1ZSh3cml0ZVJlc29sdmVkKTsKKyAgICBhc3NlcnRfZXF1
YWxzKGNhbGxzLCAxLCAnc2l6ZSgpIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBvbmNlJyk7CisgICAg
cmV0dXJuIHJlYWRQcm9taXNlOworICB9KS50aGVuKCh7IHZhbHVlLCBkb25lIH0pID0+IHsKKyAg
ICBhc3NlcnRfZmFsc2UoZG9uZSwgJ2RvbmUgc2hvdWxkIGJlIGZhbHNlJyk7CisgICAgLy8gU2Vl
IGh0dHBzOi8vZ2l0aHViLmNvbS93aGF0d2cvc3RyZWFtcy9pc3N1ZXMvNzk0IGZvciB3aHkgdGhp
cyBjaHVuayBpcyBub3QgJ2EnLgorICAgIGFzc2VydF9lcXVhbHModmFsdWUsICdiJywgJ2NodW5r
IHNob3VsZCBoYXZlIGJlZW4gcmVhZCcpOworICAgIGFzc2VydF9lcXVhbHMoY2FsbHMsIDEsICdj
YWxscyBzaG91bGQgc3RpbGwgYmUgMScpOworICAgIHJldHVybiB3cml0ZVByb21pc2U7CisgIH0p
OworfSwgJ3JlYWQoKSBpbnNpZGUgb2Ygc2l6ZSgpIHNob3VsZCB3b3JrJyk7CisKK3Byb21pc2Vf
dGVzdCgoKSA9PiB7CisgIGxldCB3cml0ZXI7CisgIGxldCB3cml0ZVByb21pc2UxOworICBsZXQg
Y2FsbHMgPSAwOworICBjb25zdCB0cyA9IG5ldyBUcmFuc2Zvcm1TdHJlYW0oe30sIHVuZGVmaW5l
ZCwgeworICAgIHNpemUoKSB7CisgICAgICArK2NhbGxzOworICAgICAgaWYgKGNhbGxzIDwgMikg
eworICAgICAgICB3cml0ZVByb21pc2UxID0gd3JpdGVyLndyaXRlKCdhJyk7CisgICAgICB9Cisg
ICAgICByZXR1cm4gMTsKKyAgICB9LAorICAgIGhpZ2hXYXRlck1hcms6IEluZmluaXR5CisgIH0p
OworICB3cml0ZXIgPSB0cy53cml0YWJsZS5nZXRXcml0ZXIoKTsKKyAgLy8gR2l2ZSBwdWxsKCkg
YSBjaGFuY2UgdG8gYmUgY2FsbGVkLgorICByZXR1cm4gZGVsYXkoMCkudGhlbigoKSA9PiB7Cisg
ICAgLy8gVGhpcyB3cml0ZSByZXN1bHRzIGluIGEgc3luY2hyb25vdXMgY2FsbCB0byB0cmFuc2Zv
cm0oKSwgZW5xdWV1ZSgpLCBhbmQgc2l6ZSgpLgorICAgIGNvbnN0IHdyaXRlUHJvbWlzZTIgPSB3
cml0ZXIud3JpdGUoJ2InKTsKKyAgICBhc3NlcnRfZXF1YWxzKGNhbGxzLCAxLCAnc2l6ZSgpIHNo
b3VsZCBoYXZlIGJlZW4gY2FsbGVkIG9uY2UnKTsKKyAgICByZXR1cm4gUHJvbWlzZS5hbGwoW3dy
aXRlUHJvbWlzZTEsIHdyaXRlUHJvbWlzZTIsIHdyaXRlci5jbG9zZSgpXSk7CisgIH0pLnRoZW4o
KCkgPT4geworICAgIGFzc2VydF9lcXVhbHMoY2FsbHMsIDIsICdzaXplKCkgc2hvdWxkIGhhdmUg
YmVlbiBjYWxsZWQgdHdpY2UnKTsKKyAgICByZXR1cm4gcmVhZGFibGVTdHJlYW1Ub0FycmF5KHRz
LnJlYWRhYmxlKTsKKyAgfSkudGhlbihhcnJheSA9PiB7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFs
cyhhcnJheSwgWydiJywgJ2EnXSwgJ2JvdGggY2h1bmtzIHNob3VsZCBoYXZlIGJlZW4gZW5xdWV1
ZWQnKTsKKyAgICBhc3NlcnRfZXF1YWxzKGNhbGxzLCAyLCAnY2FsbHMgc2hvdWxkIHN0aWxsIGJl
IDInKTsKKyAgfSk7Cit9LCAnd3JpdGVyLndyaXRlKCkgaW5zaWRlIHNpemUoKSBzaG91bGQgd29y
aycpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworICBsZXQgY29udHJvbGxlcjsKKyAgbGV0IHdy
aXRlcjsKKyAgbGV0IHdyaXRlUHJvbWlzZTsKKyAgbGV0IGNhbGxzID0gMDsKKyAgY29uc3QgdHMg
PSBuZXcgVHJhbnNmb3JtU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjb250cm9sbGVy
ID0gYzsKKyAgICB9CisgIH0sIHVuZGVmaW5lZCwgeworICAgIHNpemUoKSB7CisgICAgICArK2Nh
bGxzOworICAgICAgaWYgKGNhbGxzIDwgMikgeworICAgICAgICB3cml0ZVByb21pc2UgPSB3cml0
ZXIud3JpdGUoJ2EnKTsKKyAgICAgIH0KKyAgICAgIHJldHVybiAxOworICAgIH0sCisgICAgaGln
aFdhdGVyTWFyazogSW5maW5pdHkKKyAgfSk7CisgIHdyaXRlciA9IHRzLndyaXRhYmxlLmdldFdy
aXRlcigpOworICAvLyBHaXZlIHB1bGwoKSBhIGNoYW5jZSB0byBiZSBjYWxsZWQuCisgIHJldHVy
biBkZWxheSgwKS50aGVuKCgpID0+IHsKKyAgICAvLyBUaGlzIGVucXVldWUgcmVzdWx0cyBpbiBz
eW5jaHJvbm91cyBjYWxscyB0byBzaXplKCksIHdyaXRlKCksIHRyYW5zZm9ybSgpIGFuZCBlbnF1
ZXVlKCkuCisgICAgY29udHJvbGxlci5lbnF1ZXVlKCdiJyk7CisgICAgYXNzZXJ0X2VxdWFscyhj
YWxscywgMiwgJ3NpemUoKSBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCB0d2ljZScpOworICAgIHJl
dHVybiBQcm9taXNlLmFsbChbd3JpdGVQcm9taXNlLCB3cml0ZXIuY2xvc2UoKV0pOworICB9KS50
aGVuKCgpID0+IHsKKyAgICByZXR1cm4gcmVhZGFibGVTdHJlYW1Ub0FycmF5KHRzLnJlYWRhYmxl
KTsKKyAgfSkudGhlbihhcnJheSA9PiB7CisgICAgLy8gQmVjYXVzZSBvbmUgY2FsbCB0byBlbnF1
ZXVlKCkgaXMgbmVzdGVkIGluc2lkZSB0aGUgb3RoZXIsIHRoZXkgZmluaXNoIGluIHRoZSBvcHBv
c2l0ZSBvcmRlciB0aGF0IHRoZXkgd2VyZQorICAgIC8vIGNhbGxlZCwgc28gdGhlIGNodW5rcyBl
bmQgdXAgcmV2ZXJzZSBvcmRlci4KKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGFycmF5LCBbJ2En
LCAnYiddLCAnYm90aCBjaHVua3Mgc2hvdWxkIGhhdmUgYmVlbiBlbnF1ZXVlZCcpOworICAgIGFz
c2VydF9lcXVhbHMoY2FsbHMsIDIsICdjYWxscyBzaG91bGQgc3RpbGwgYmUgMicpOworICB9KTsK
K30sICdzeW5jaHJvbm91cyB3cml0ZXIud3JpdGUoKSBpbnNpZGUgc2l6ZSgpIHNob3VsZCB3b3Jr
Jyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisgIGxldCB3cml0ZXI7CisgIGxldCBjbG9zZVBy
b21pc2U7CisgIGxldCBjb250cm9sbGVyOworICBjb25zdCB0cyA9IG5ldyBUcmFuc2Zvcm1TdHJl
YW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGNvbnRyb2xsZXIgPSBjOworICAgIH0KKyAgfSwg
dW5kZWZpbmVkLCB7CisgICAgc2l6ZSgpIHsKKyAgICAgIGNsb3NlUHJvbWlzZSA9IHdyaXRlci5j
bG9zZSgpOworICAgICAgcmV0dXJuIDE7CisgICAgfSwKKyAgICBoaWdoV2F0ZXJNYXJrOiAxCisg
IH0pOworICB3cml0ZXIgPSB0cy53cml0YWJsZS5nZXRXcml0ZXIoKTsKKyAgY29uc3QgcmVhZGVy
ID0gdHMucmVhZGFibGUuZ2V0UmVhZGVyKCk7CisgIC8vIFdhaXQgZm9yIHRoZSBwcm9taXNlIHJl
dHVybmVkIGJ5IHN0YXJ0KCkgdG8gYmUgcmVzb2x2ZWQgc28gdGhhdCB0aGUgY2FsbCB0byBjbG9z
ZSgpIHdpbGwgcmVzdWx0IGluIGEgc3luY2hyb25vdXMKKyAgLy8gY2FsbCB0byBUcmFuc2Zvcm1T
dHJlYW1EZWZhdWx0U2luay4KKyAgcmV0dXJuIGRlbGF5KDApLnRoZW4oKCkgPT4geworICAgIGNv
bnRyb2xsZXIuZW5xdWV1ZSgnYScpOworICAgIHJldHVybiByZWFkZXIucmVhZCgpOworICB9KS50
aGVuKCh7IHZhbHVlLCBkb25lIH0pID0+IHsKKyAgICBhc3NlcnRfZmFsc2UoZG9uZSwgJ2RvbmUg
c2hvdWxkIGJlIGZhbHNlJyk7CisgICAgYXNzZXJ0X2VxdWFscyh2YWx1ZSwgJ2EnLCAndmFsdWUg
c2hvdWxkIGJlIGNvcnJlY3QnKTsKKyAgICByZXR1cm4gcmVhZGVyLnJlYWQoKTsKKyAgfSkudGhl
bigoeyBkb25lIH0pID0+IHsKKyAgICBhc3NlcnRfdHJ1ZShkb25lLCAnZG9uZSBzaG91bGQgYmUg
dHJ1ZScpOworICAgIHJldHVybiBjbG9zZVByb21pc2U7CisgIH0pOworfSwgJ3dyaXRlci5jbG9z
ZSgpIGluc2lkZSBzaXplKCkgc2hvdWxkIHdvcmsnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4gewor
ICBsZXQgYWJvcnRQcm9taXNlOworICBsZXQgY29udHJvbGxlcjsKKyAgY29uc3QgdHMgPSBuZXcg
VHJhbnNmb3JtU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjb250cm9sbGVyID0gYzsK
KyAgICB9CisgIH0sIHVuZGVmaW5lZCwgeworICAgIHNpemUoKSB7CisgICAgICBhYm9ydFByb21p
c2UgPSB0cy53cml0YWJsZS5hYm9ydChlcnJvcjEpOworICAgICAgcmV0dXJuIDE7CisgICAgfSwK
KyAgICBoaWdoV2F0ZXJNYXJrOiAxCisgIH0pOworICBjb25zdCByZWFkZXIgPSB0cy5yZWFkYWJs
ZS5nZXRSZWFkZXIoKTsKKyAgLy8gV2FpdCBmb3IgdGhlIHByb21pc2UgcmV0dXJuZWQgYnkgc3Rh
cnQoKSB0byBiZSByZXNvbHZlZCBzbyB0aGF0IHRoZSBjYWxsIHRvIGFib3J0KCkgd2lsbCByZXN1
bHQgaW4gYSBzeW5jaHJvbm91cworICAvLyBjYWxsIHRvIFRyYW5zZm9ybVN0cmVhbURlZmF1bHRT
aW5rLgorICByZXR1cm4gZGVsYXkoMCkudGhlbigoKSA9PiB7CisgICAgY29udHJvbGxlci5lbnF1
ZXVlKCdhJyk7CisgICAgcmV0dXJuIFByb21pc2UuYWxsKFtwcm9taXNlX3JlamVjdHNfZXhhY3Rs
eSh0LCBlcnJvcjEsIHJlYWRlci5yZWFkKCksICdyZWFkKCkgc2hvdWxkIHJlamVjdCcpLCBhYm9y
dFByb21pc2VdKTsKKyAgfSk7Cit9LCAnd3JpdGVyLmFib3J0KCkgaW5zaWRlIHNpemUoKSBzaG91
bGQgd29yaycpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1zL3JlZW50cmFudC1zdHJhdGVnaWVz
LmFueS53b3JrZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1zL3JlZW50cmFudC1zdHJhdGVn
aWVzLmFueS53b3JrZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcyYjcxZTQyYzIzNmQwMWUx
ZTY0YjNmNDI4YTgxZmI1NmY1NmUwNWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvdHJhbnNmb3JtLXN0cmVhbXMv
cmVlbnRyYW50LXN0cmF0ZWdpZXMuYW55Lndvcmtlci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwx
MyBAQAorCitGQUlMIGVucXVldWUoKSBpbnNpZGUgc2l6ZSgpIHNob3VsZCB3b3JrIENhbid0IGZp
bmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCB0ZXJtaW5hdGUoKSBpbnNpZGUgc2l6
ZSgpIHNob3VsZCB3b3JrIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJ
TCBlcnJvcigpIGluc2lkZSBzaXplKCkgc2hvdWxkIHdvcmsgQ2FuJ3QgZmluZCB2YXJpYWJsZTog
VHJhbnNmb3JtU3RyZWFtCitGQUlMIGRlc2lyZWRTaXplIGluc2lkZSBzaXplKCkgc2hvdWxkIHdv
cmsgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIHJlYWRhYmxlIGNh
bmNlbCgpIGluc2lkZSBzaXplKCkgc2hvdWxkIHdvcmsgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJh
bnNmb3JtU3RyZWFtCitGQUlMIHBpcGVUbygpIGluc2lkZSBzaXplKCkgc2hvdWxkIHdvcmsgQ2Fu
J3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgcmVhZCgpIGluc2lkZSBvZiBz
aXplKCkgc2hvdWxkIHdvcmsgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitG
QUlMIHdyaXRlci53cml0ZSgpIGluc2lkZSBzaXplKCkgc2hvdWxkIHdvcmsgQ2FuJ3QgZmluZCB2
YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIHN5bmNocm9ub3VzIHdyaXRlci53cml0ZSgp
IGluc2lkZSBzaXplKCkgc2hvdWxkIHdvcmsgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3Jt
U3RyZWFtCitGQUlMIHdyaXRlci5jbG9zZSgpIGluc2lkZSBzaXplKCkgc2hvdWxkIHdvcmsgQ2Fu
J3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIHdyaXRlci5hYm9ydCgpIGlu
c2lkZSBzaXplKCkgc2hvdWxkIHdvcmsgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3Ry
ZWFtCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy9yZWVudHJhbnQtc3RyYXRlZ2llcy5hbnku
d29ya2VyLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMvdHJhbnNmb3JtLXN0cmVhbXMvcmVlbnRyYW50LXN0cmF0ZWdpZXMuYW55Lndvcmtl
ci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjIzODI5MTM1MjhlNjkzYjNhNWQ1NmM2NjBhNDUwNjA5ODBiNTQ4
YzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMvdHJhbnNmb3JtLXN0cmVhbXMvcmVlbnRyYW50LXN0cmF0ZWdpZXMu
YW55Lndvcmtlci5odG1sCkBAIC0wLDAgKzEgQEAKKzwhLS0gVGhpcyBmaWxlIGlzIHJlcXVpcmVk
IGZvciBXZWJLaXQgdGVzdCBpbmZyYXN0cnVjdHVyZSB0byBydW4gdGhlIHRlbXBsYXRlZCB0ZXN0
IC0tPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFt
cy9zdHJhdGVnaWVzLmFueS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvdHJhbnNmb3JtLXN0cmVhbXMvc3RyYXRlZ2llcy5h
bnktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjczY2EwNzYwOGMzZWEyMDI0NjczNWM2ZjkyYTAw
ZmZjYTY5NWNiZmYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvdHJhbnNmb3JtLXN0cmVhbXMvc3RyYXRlZ2llcy5h
bnktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKKworRkFJTCB3cml0YWJsZVN0cmF0ZWd5
IGhpZ2hXYXRlck1hcmsgc2hvdWxkIHdvcmsgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3Jt
U3RyZWFtCitGQUlMIHJlYWRhYmxlU3RyYXRlZ3kgaGlnaFdhdGVyTWFyayBzaG91bGQgd29yayBD
YW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgd3JpdGFibGUgc2hvdWxk
IGhhdmUgdGhlIGNvcnJlY3Qgc2l6ZSgpIGZ1bmN0aW9uIENhbid0IGZpbmQgdmFyaWFibGU6IFRy
YW5zZm9ybVN0cmVhbQorRkFJTCBkZWZhdWx0IHdyaXRhYmxlIHN0cmF0ZWd5IHNob3VsZCBiZSBl
cXVpdmFsZW50IHRvIHsgaGlnaFdhdGVyTWFyazogMSB9IENhbid0IGZpbmQgdmFyaWFibGU6IFRy
YW5zZm9ybVN0cmVhbQorRkFJTCBkZWZhdWx0IHJlYWRhYmxlIHN0cmF0ZWd5IHNob3VsZCBiZSBl
cXVpdmFsZW50IHRvIHsgaGlnaFdhdGVyTWFyazogMCB9IENhbid0IGZpbmQgdmFyaWFibGU6IFRy
YW5zZm9ybVN0cmVhbQorRkFJTCBhIFJhbmdlRXJyb3Igc2hvdWxkIGJlIHRocm93biBmb3IgYW4g
aW52YWxpZCBoaWdoV2F0ZXJNYXJrIGFzc2VydF90aHJvd3NfanM6IHNob3VsZCB0aHJvdyBSYW5n
ZUVycm9yIGZvciBuZWdhdGl2ZSB3cml0YWJsZUhpZ2hXYXRlck1hcmsgZnVuY3Rpb24gIigpID0+
IG5ldyBUcmFuc2Zvcm1TdHJlYW0odW5kZWZpbmVkLCB7IGhpZ2hXYXRlck1hcms6IC0xIH0pIiB0
aHJldyBvYmplY3QgIlJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zv
cm1TdHJlYW0iICgiUmVmZXJlbmNlRXJyb3IiKSBleHBlY3RlZCBpbnN0YW5jZSBvZiBmdW5jdGlv
biAiZnVuY3Rpb24gUmFuZ2VFcnJvcigpIHsKKyAgICBbbmF0aXZlIGNvZGVdCit9IiAoIlJhbmdl
RXJyb3IiKQorRkFJTCB3cml0YWJsZVN0cmF0ZWd5IGhpZ2hXYXRlck1hcmsgc2hvdWxkIGJlIGNv
bnZlcnRlZCB0byBhIG51bWJlciBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0K
K0ZBSUwgcmVhZGFibGVTdHJhdGVneSBoaWdoV2F0ZXJNYXJrIHNob3VsZCBiZSBjb252ZXJ0ZWQg
dG8gYSBudW1iZXIgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIGEg
YmFkIHJlYWRhYmxlU3RyYXRlZ3kgc2l6ZSBmdW5jdGlvbiBzaG91bGQgY2F1c2Ugd3JpdGVyLndy
aXRlKCkgdG8gcmVqZWN0IG9uIGFuIGlkZW50aXR5IHRyYW5zZm9ybSBDYW4ndCBmaW5kIHZhcmlh
YmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgYSBiYWQgcmVhZGFibGVTdHJhdGVneSBzaXplIGZ1
bmN0aW9uIHNob3VsZCBlcnJvciB0aGUgc3RyZWFtIG9uIGVucXVldWUgZXZlbiB3aGVuIHRyYW5z
Zm9ybWVyLnRyYW5zZm9ybSgpIGNhdGNoZXMgdGhlIGV4Y2VwdGlvbiBDYW4ndCBmaW5kIHZhcmlh
YmxlOiBUcmFuc2Zvcm1TdHJlYW0KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1zL3N0cmF0ZWdp
ZXMuYW55Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMvdHJhbnNmb3JtLXN0cmVhbXMvc3RyYXRlZ2llcy5hbnkuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4yMzgyOTEzNTI4ZTY5M2IzYTVkNTZjNjYwYTQ1MDYwOTgwYjU0OGMzCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
L3RyYW5zZm9ybS1zdHJlYW1zL3N0cmF0ZWdpZXMuYW55Lmh0bWwKQEAgLTAsMCArMSBAQAorPCEt
LSBUaGlzIGZpbGUgaXMgcmVxdWlyZWQgZm9yIFdlYktpdCB0ZXN0IGluZnJhc3RydWN0dXJlIHRv
IHJ1biB0aGUgdGVtcGxhdGVkIHRlc3QgLS0+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
dHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1zL3N0cmF0ZWdpZXMuYW55LmpzIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1z
L3N0cmF0ZWdpZXMuYW55LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ0NjVkMzFhYjA5NzM2ZDZlOThmMjgwMTZi
MTllMmUxNGQ1MWRhMGUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvdHJhbnNmb3JtLXN0cmVhbXMvc3RyYXRlZ2ll
cy5hbnkuanMKQEAgLTAsMCArMSwxNTAgQEAKKy8vIE1FVEE6IGdsb2JhbD13aW5kb3csd29ya2Vy
LGpzc2hlbGwKKy8vIE1FVEE6IHNjcmlwdD0uLi9yZXNvdXJjZXMvcmVjb3JkaW5nLXN0cmVhbXMu
anMKKy8vIE1FVEE6IHNjcmlwdD0uLi9yZXNvdXJjZXMvdGVzdC11dGlscy5qcworJ3VzZSBzdHJp
Y3QnOworCisvLyBIZXJlIHdlIGp1c3QgdGVzdCB0aGF0IHRoZSBzdHJhdGVnaWVzIGFyZSBjb3Jy
ZWN0bHkgcGFzc2VkIHRvIHRoZSByZWFkYWJsZSBhbmQgd3JpdGFibGUgc2lkZXMuIFdlIGFzc3Vt
ZSB0aGF0CisvLyBSZWFkYWJsZVN0cmVhbSBhbmQgV3JpdGFibGVTdHJlYW0gd2lsbCBjb3JyZWN0
bHkgYXBwbHkgdGhlIHN0cmF0ZWdpZXMgd2hlbiB0aGV5IGFyZSBiZWluZyB1c2VkIGJ5IGEgVHJh
bnNmb3JtU3RyZWFtCisvLyBhbmQgc28gaXQgaXNuJ3QgbmVjZXNzYXJ5IHRvIHJlcGVhdCB0aGVp
ciB0ZXN0cyBoZXJlLgorCit0ZXN0KCgpID0+IHsKKyAgY29uc3QgdHMgPSBuZXcgVHJhbnNmb3Jt
U3RyZWFtKHt9LCB7IGhpZ2hXYXRlck1hcms6IDE3IH0pOworICBhc3NlcnRfZXF1YWxzKHRzLndy
aXRhYmxlLmdldFdyaXRlcigpLmRlc2lyZWRTaXplLCAxNywgJ2Rlc2lyZWRTaXplIHNob3VsZCBi
ZSAxNycpOworfSwgJ3dyaXRhYmxlU3RyYXRlZ3kgaGlnaFdhdGVyTWFyayBzaG91bGQgd29yaycp
OworCitwcm9taXNlX3Rlc3QoKCkgPT4geworICBjb25zdCB0cyA9IHJlY29yZGluZ1RyYW5zZm9y
bVN0cmVhbSh7fSwgdW5kZWZpbmVkLCB7IGhpZ2hXYXRlck1hcms6IDkgfSk7CisgIGNvbnN0IHdy
aXRlciA9IHRzLndyaXRhYmxlLmdldFdyaXRlcigpOworICBmb3IgKGxldCBpID0gMDsgaSA8IDEw
OyArK2kpIHsKKyAgICB3cml0ZXIud3JpdGUoaSk7CisgIH0KKyAgcmV0dXJuIGRlbGF5KDApLnRo
ZW4oKCkgPT4geworICAgIGFzc2VydF9hcnJheV9lcXVhbHModHMuZXZlbnRzLCBbCisgICAgICAn
dHJhbnNmb3JtJywgMCwgJ3RyYW5zZm9ybScsIDEsICd0cmFuc2Zvcm0nLCAyLCAndHJhbnNmb3Jt
JywgMywgJ3RyYW5zZm9ybScsIDQsCisgICAgICAndHJhbnNmb3JtJywgNSwgJ3RyYW5zZm9ybScs
IDYsICd0cmFuc2Zvcm0nLCA3LCAndHJhbnNmb3JtJywgOF0sCisgICAgICAgICAgICAgICAgICAg
ICAgICAndHJhbnNmb3JtKCkgc2hvdWxkIGhhdmUgYmVlbiBjYWxsZWQgOSB0aW1lcycpOworICB9
KTsKK30sICdyZWFkYWJsZVN0cmF0ZWd5IGhpZ2hXYXRlck1hcmsgc2hvdWxkIHdvcmsnKTsKKwor
cHJvbWlzZV90ZXN0KHQgPT4geworICBsZXQgd3JpdGFibGVTaXplQ2FsbGVkID0gZmFsc2U7Cisg
IGxldCByZWFkYWJsZVNpemVDYWxsZWQgPSBmYWxzZTsKKyAgbGV0IHRyYW5zZm9ybUNhbGxlZCA9
IGZhbHNlOworICBjb25zdCB0cyA9IG5ldyBUcmFuc2Zvcm1TdHJlYW0oCisgICAgeworICAgICAg
dHJhbnNmb3JtKGNodW5rLCBjb250cm9sbGVyKSB7CisgICAgICAgIHQuc3RlcCgoKSA9PiB7Cisg
ICAgICAgICAgdHJhbnNmb3JtQ2FsbGVkID0gdHJ1ZTsKKyAgICAgICAgICBhc3NlcnRfdHJ1ZSh3
cml0YWJsZVNpemVDYWxsZWQsICd3cml0YWJsZVN0cmF0ZWd5LnNpemUoKSBzaG91bGQgaGF2ZSBi
ZWVuIGNhbGxlZCcpOworICAgICAgICAgIGFzc2VydF9mYWxzZShyZWFkYWJsZVNpemVDYWxsZWQs
ICdyZWFkYWJsZVN0cmF0ZWd5LnNpemUoKSBzaG91bGQgbm90IGhhdmUgYmVlbiBjYWxsZWQnKTsK
KyAgICAgICAgICBjb250cm9sbGVyLmVucXVldWUoY2h1bmspOworICAgICAgICAgIGFzc2VydF90
cnVlKHJlYWRhYmxlU2l6ZUNhbGxlZCwgJ3JlYWRhYmxlU3RyYXRlZ3kuc2l6ZSgpIHNob3VsZCBo
YXZlIGJlZW4gY2FsbGVkJyk7CisgICAgICAgIH0pOworICAgICAgfQorICAgIH0sCisgICAgewor
ICAgICAgc2l6ZSgpIHsKKyAgICAgICAgd3JpdGFibGVTaXplQ2FsbGVkID0gdHJ1ZTsKKyAgICAg
ICAgcmV0dXJuIDE7CisgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICBzaXplKCkgeworICAg
ICAgICByZWFkYWJsZVNpemVDYWxsZWQgPSB0cnVlOworICAgICAgICByZXR1cm4gMTsKKyAgICAg
IH0sCisgICAgICBoaWdoV2F0ZXJNYXJrOiBJbmZpbml0eQorICAgIH0pOworICByZXR1cm4gdHMu
d3JpdGFibGUuZ2V0V3JpdGVyKCkud3JpdGUoKS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfdHJ1
ZSh0cmFuc2Zvcm1DYWxsZWQsICd0cmFuc2Zvcm0oKSBzaG91bGQgYmUgY2FsbGVkJyk7CisgIH0p
OworfSwgJ3dyaXRhYmxlIHNob3VsZCBoYXZlIHRoZSBjb3JyZWN0IHNpemUoKSBmdW5jdGlvbicp
OworCit0ZXN0KCgpID0+IHsKKyAgY29uc3QgdHMgPSBuZXcgVHJhbnNmb3JtU3RyZWFtKCk7Cisg
IGNvbnN0IHdyaXRlciA9IHRzLndyaXRhYmxlLmdldFdyaXRlcigpOworICBhc3NlcnRfZXF1YWxz
KHdyaXRlci5kZXNpcmVkU2l6ZSwgMSwgJ2RlZmF1bHQgd3JpdGFibGUgSFdNIGlzIDEnKTsKKyAg
d3JpdGVyLndyaXRlKHVuZGVmaW5lZCk7CisgIGFzc2VydF9lcXVhbHMod3JpdGVyLmRlc2lyZWRT
aXplLCAwLCAnZGVmYXVsdCBjaHVuayBzaXplIGlzIDEnKTsKK30sICdkZWZhdWx0IHdyaXRhYmxl
IHN0cmF0ZWd5IHNob3VsZCBiZSBlcXVpdmFsZW50IHRvIHsgaGlnaFdhdGVyTWFyazogMSB9Jyk7
CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgY29uc3QgdHMgPSBuZXcgVHJhbnNmb3JtU3RyZWFt
KHsKKyAgICB0cmFuc2Zvcm0oY2h1bmssIGNvbnRyb2xsZXIpIHsKKyAgICAgIHJldHVybiB0LnN0
ZXAoKCkgPT4geworICAgICAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUs
IDAsICdkZXNpcmVkU2l6ZSBzaG91bGQgYmUgMCcpOworICAgICAgICBjb250cm9sbGVyLmVucXVl
dWUodW5kZWZpbmVkKTsKKyAgICAgICAgLy8gVGhlIGZpcnN0IGNodW5rIGVucXVldWVkIGlzIGNv
bnN1bWVkIGJ5IHRoZSBwZW5kaW5nIHJlYWQoKS4KKyAgICAgICAgYXNzZXJ0X2VxdWFscyhjb250
cm9sbGVyLmRlc2lyZWRTaXplLCAwLCAnZGVzaXJlZFNpemUgc2hvdWxkIHN0aWxsIGJlIDAnKTsK
KyAgICAgICAgY29udHJvbGxlci5lbnF1ZXVlKHVuZGVmaW5lZCk7CisgICAgICAgIGFzc2VydF9l
cXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgLTEsICdkZXNpcmVkU2l6ZSBzaG91bGQgYmUg
LTEnKTsKKyAgICAgIH0pOworICAgIH0KKyAgfSk7CisgIGNvbnN0IHdyaXRlUHJvbWlzZSA9IHRz
LndyaXRhYmxlLmdldFdyaXRlcigpLndyaXRlKCk7CisgIHJldHVybiB0cy5yZWFkYWJsZS5nZXRS
ZWFkZXIoKS5yZWFkKCkudGhlbigoKSA9PiB3cml0ZVByb21pc2UpOworfSwgJ2RlZmF1bHQgcmVh
ZGFibGUgc3RyYXRlZ3kgc2hvdWxkIGJlIGVxdWl2YWxlbnQgdG8geyBoaWdoV2F0ZXJNYXJrOiAw
IH0nKTsKKwordGVzdCgoKSA9PiB7CisgIGFzc2VydF90aHJvd3NfanMoUmFuZ2VFcnJvciwgKCkg
PT4gbmV3IFRyYW5zZm9ybVN0cmVhbSh1bmRlZmluZWQsIHsgaGlnaFdhdGVyTWFyazogLTEgfSks
CisgICAgICAgICAgICAgICAgICAgJ3Nob3VsZCB0aHJvdyBSYW5nZUVycm9yIGZvciBuZWdhdGl2
ZSB3cml0YWJsZUhpZ2hXYXRlck1hcmsnKTsKKyAgYXNzZXJ0X3Rocm93c19qcyhSYW5nZUVycm9y
LCAoKSA9PiBuZXcgVHJhbnNmb3JtU3RyZWFtKHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB7IGhpZ2hX
YXRlck1hcms6IC0xIH0pLAorICAgICAgICAgICAgICAgICAgICdzaG91bGQgdGhyb3cgUmFuZ2VF
cnJvciBmb3IgbmVnYXRpdmUgcmVhZGFibGVIaWdoV2F0ZXJNYXJrJyk7CisgIGFzc2VydF90aHJv
d3NfanMoUmFuZ2VFcnJvciwgKCkgPT4gbmV3IFRyYW5zZm9ybVN0cmVhbSh1bmRlZmluZWQsIHsg
aGlnaFdhdGVyTWFyazogTmFOIH0pLAorICAgICAgICAgICAgICAgICAgICdzaG91bGQgdGhyb3cg
UmFuZ2VFcnJvciBmb3IgTmFOIHdyaXRhYmxlSGlnaFdhdGVyTWFyaycpOworICBhc3NlcnRfdGhy
b3dzX2pzKFJhbmdlRXJyb3IsICgpID0+IG5ldyBUcmFuc2Zvcm1TdHJlYW0odW5kZWZpbmVkLCB1
bmRlZmluZWQsIHsgaGlnaFdhdGVyTWFyazogTmFOIH0pLAorICAgICAgICAgICAgICAgICAgICdz
aG91bGQgdGhyb3cgUmFuZ2VFcnJvciBmb3IgTmFOIHJlYWRhYmxlSGlnaFdhdGVyTWFyaycpOwor
fSwgJ2EgUmFuZ2VFcnJvciBzaG91bGQgYmUgdGhyb3duIGZvciBhbiBpbnZhbGlkIGhpZ2hXYXRl
ck1hcmsnKTsKKworY29uc3Qgb2JqZWN0VGhhdENvbnZlcnRzVG80MiA9IHsKKyAgdG9TdHJpbmco
KSB7CisgICAgcmV0dXJuICc0Mic7CisgIH0KK307CisKK3Rlc3QoKCkgPT4geworICBjb25zdCB0
cyA9IG5ldyBUcmFuc2Zvcm1TdHJlYW0odW5kZWZpbmVkLCB7IGhpZ2hXYXRlck1hcms6IG9iamVj
dFRoYXRDb252ZXJ0c1RvNDIgfSk7CisgIGNvbnN0IHdyaXRlciA9IHRzLndyaXRhYmxlLmdldFdy
aXRlcigpOworICBhc3NlcnRfZXF1YWxzKHdyaXRlci5kZXNpcmVkU2l6ZSwgNDIsICd3cml0YWJs
ZSBIV00gaXMgNDInKTsKK30sICd3cml0YWJsZVN0cmF0ZWd5IGhpZ2hXYXRlck1hcmsgc2hvdWxk
IGJlIGNvbnZlcnRlZCB0byBhIG51bWJlcicpOworCit0ZXN0KCgpID0+IHsKKyAgY29uc3QgdHMg
PSBuZXcgVHJhbnNmb3JtU3RyZWFtKHsKKyAgICBzdGFydChjb250cm9sbGVyKSB7CisgICAgICBh
c3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDQyLCAnZGVzaXJlZFNpemUgc2hv
dWxkIGJlIDQyJyk7CisgICAgfQorICB9LCB1bmRlZmluZWQsIHsgaGlnaFdhdGVyTWFyazogb2Jq
ZWN0VGhhdENvbnZlcnRzVG80MiB9KTsKK30sICdyZWFkYWJsZVN0cmF0ZWd5IGhpZ2hXYXRlck1h
cmsgc2hvdWxkIGJlIGNvbnZlcnRlZCB0byBhIG51bWJlcicpOworCitwcm9taXNlX3Rlc3QodCA9
PiB7CisgIGNvbnN0IHRzID0gbmV3IFRyYW5zZm9ybVN0cmVhbSh1bmRlZmluZWQsIHVuZGVmaW5l
ZCwgeworICAgIHNpemUoKSB7IHJldHVybiBOYU47IH0sCisgICAgaGlnaFdhdGVyTWFyazogMQor
ICB9KTsKKyAgY29uc3Qgd3JpdGVyID0gdHMud3JpdGFibGUuZ2V0V3JpdGVyKCk7CisgIHJldHVy
biBwcm9taXNlX3JlamVjdHNfanModCwgUmFuZ2VFcnJvciwgd3JpdGVyLndyaXRlKCksICd3cml0
ZSBzaG91bGQgcmVqZWN0Jyk7Cit9LCAnYSBiYWQgcmVhZGFibGVTdHJhdGVneSBzaXplIGZ1bmN0
aW9uIHNob3VsZCBjYXVzZSB3cml0ZXIud3JpdGUoKSB0byByZWplY3Qgb24gYW4gaWRlbnRpdHkg
dHJhbnNmb3JtJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgY29uc3QgdHMgPSBuZXcgVHJh
bnNmb3JtU3RyZWFtKHsKKyAgICB0cmFuc2Zvcm0oY2h1bmssIGNvbnRyb2xsZXIpIHsKKyAgICAg
IC8vIFRoaXMgYXNzZXJ0IGhhcyB0aGUgaW1wb3J0YW50IHNpZGUtZWZmZWN0IG9mIGNhdGNoaW5n
IHRoZSBlcnJvciwgc28gdHJhbnNmb3JtKCkgZG9lcyBub3QgdGhyb3cuCisgICAgICBhc3NlcnRf
dGhyb3dzX2pzKFJhbmdlRXJyb3IsICgpID0+IGNvbnRyb2xsZXIuZW5xdWV1ZShjaHVuayksICdl
bnF1ZXVlIHNob3VsZCB0aHJvdycpOworICAgIH0KKyAgfSwgdW5kZWZpbmVkLCB7CisgICAgc2l6
ZSgpIHsKKyAgICAgIHJldHVybiAtMTsKKyAgICB9LAorICAgIGhpZ2hXYXRlck1hcms6IDEKKyAg
fSk7CisKKyAgY29uc3Qgd3JpdGVyID0gdHMud3JpdGFibGUuZ2V0V3JpdGVyKCk7CisgIHJldHVy
biB3cml0ZXIud3JpdGUoKS50aGVuKCgpID0+IHsKKyAgICByZXR1cm4gUHJvbWlzZS5hbGwoWwor
ICAgICAgcHJvbWlzZV9yZWplY3RzX2pzKHQsIFJhbmdlRXJyb3IsIHdyaXRlci5yZWFkeSwgJ3Jl
YWR5IHNob3VsZCByZWplY3QnKSwKKyAgICAgIHByb21pc2VfcmVqZWN0c19qcyh0LCBSYW5nZUVy
cm9yLCB3cml0ZXIuY2xvc2VkLCAnY2xvc2VkIHNob3VsZCByZWplY3QnKSwKKyAgICAgIHByb21p
c2VfcmVqZWN0c19qcyh0LCBSYW5nZUVycm9yLCB0cy5yZWFkYWJsZS5nZXRSZWFkZXIoKS5jbG9z
ZWQsICdyZWFkYWJsZSBjbG9zZWQgc2hvdWxkIHJlamVjdCcpCisgICAgXSk7CisgIH0pOworfSwg
J2EgYmFkIHJlYWRhYmxlU3RyYXRlZ3kgc2l6ZSBmdW5jdGlvbiBzaG91bGQgZXJyb3IgdGhlIHN0
cmVhbSBvbiBlbnF1ZXVlIGV2ZW4gd2hlbiB0cmFuc2Zvcm1lci50cmFuc2Zvcm0oKSAnICsKKyAg
ICdjYXRjaGVzIHRoZSBleGNlcHRpb24nKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy9zdHJh
dGVnaWVzLmFueS53b3JrZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1zL3N0cmF0ZWdpZXMu
YW55Lndvcmtlci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzNjYTA3NjA4YzNlYTIwMjQ2NzM1
YzZmOTJhMDBmZmNhNjk1Y2JmZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy9zdHJh
dGVnaWVzLmFueS53b3JrZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKKworRkFJTCB3
cml0YWJsZVN0cmF0ZWd5IGhpZ2hXYXRlck1hcmsgc2hvdWxkIHdvcmsgQ2FuJ3QgZmluZCB2YXJp
YWJsZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIHJlYWRhYmxlU3RyYXRlZ3kgaGlnaFdhdGVyTWFy
ayBzaG91bGQgd29yayBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwg
d3JpdGFibGUgc2hvdWxkIGhhdmUgdGhlIGNvcnJlY3Qgc2l6ZSgpIGZ1bmN0aW9uIENhbid0IGZp
bmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCBkZWZhdWx0IHdyaXRhYmxlIHN0cmF0
ZWd5IHNob3VsZCBiZSBlcXVpdmFsZW50IHRvIHsgaGlnaFdhdGVyTWFyazogMSB9IENhbid0IGZp
bmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCBkZWZhdWx0IHJlYWRhYmxlIHN0cmF0
ZWd5IHNob3VsZCBiZSBlcXVpdmFsZW50IHRvIHsgaGlnaFdhdGVyTWFyazogMCB9IENhbid0IGZp
bmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCBhIFJhbmdlRXJyb3Igc2hvdWxkIGJl
IHRocm93biBmb3IgYW4gaW52YWxpZCBoaWdoV2F0ZXJNYXJrIGFzc2VydF90aHJvd3NfanM6IHNo
b3VsZCB0aHJvdyBSYW5nZUVycm9yIGZvciBuZWdhdGl2ZSB3cml0YWJsZUhpZ2hXYXRlck1hcmsg
ZnVuY3Rpb24gIigpID0+IG5ldyBUcmFuc2Zvcm1TdHJlYW0odW5kZWZpbmVkLCB7IGhpZ2hXYXRl
ck1hcms6IC0xIH0pIiB0aHJldyBvYmplY3QgIlJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZh
cmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0iICgiUmVmZXJlbmNlRXJyb3IiKSBleHBlY3RlZCBpbnN0
YW5jZSBvZiBmdW5jdGlvbiAiZnVuY3Rpb24gUmFuZ2VFcnJvcigpIHsKKyAgICBbbmF0aXZlIGNv
ZGVdCit9IiAoIlJhbmdlRXJyb3IiKQorRkFJTCB3cml0YWJsZVN0cmF0ZWd5IGhpZ2hXYXRlck1h
cmsgc2hvdWxkIGJlIGNvbnZlcnRlZCB0byBhIG51bWJlciBDYW4ndCBmaW5kIHZhcmlhYmxlOiBU
cmFuc2Zvcm1TdHJlYW0KK0ZBSUwgcmVhZGFibGVTdHJhdGVneSBoaWdoV2F0ZXJNYXJrIHNob3Vs
ZCBiZSBjb252ZXJ0ZWQgdG8gYSBudW1iZXIgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3Jt
U3RyZWFtCitGQUlMIGEgYmFkIHJlYWRhYmxlU3RyYXRlZ3kgc2l6ZSBmdW5jdGlvbiBzaG91bGQg
Y2F1c2Ugd3JpdGVyLndyaXRlKCkgdG8gcmVqZWN0IG9uIGFuIGlkZW50aXR5IHRyYW5zZm9ybSBD
YW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgYSBiYWQgcmVhZGFibGVT
dHJhdGVneSBzaXplIGZ1bmN0aW9uIHNob3VsZCBlcnJvciB0aGUgc3RyZWFtIG9uIGVucXVldWUg
ZXZlbiB3aGVuIHRyYW5zZm9ybWVyLnRyYW5zZm9ybSgpIGNhdGNoZXMgdGhlIGV4Y2VwdGlvbiBD
YW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1z
dHJlYW1zL3N0cmF0ZWdpZXMuYW55Lndvcmtlci5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1zL3N0cmF0ZWdp
ZXMuYW55Lndvcmtlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzODI5MTM1MjhlNjkzYjNhNWQ1NmM2NjBh
NDUwNjA5ODBiNTQ4YzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvdHJhbnNmb3JtLXN0cmVhbXMvc3RyYXRlZ2ll
cy5hbnkud29ya2VyLmh0bWwKQEAgLTAsMCArMSBAQAorPCEtLSBUaGlzIGZpbGUgaXMgcmVxdWly
ZWQgZm9yIFdlYktpdCB0ZXN0IGluZnJhc3RydWN0dXJlIHRvIHJ1biB0aGUgdGVtcGxhdGVkIHRl
c3QgLS0+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJl
YW1zL3Rlcm1pbmF0ZS5hbnktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1zL3Rlcm1pbmF0ZS5h
bnktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjViOGE1YmE5NjNkMmU5OTU5MTk2MGI0M2FjZDY1
YjFlYTNkOWFkMTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvdHJhbnNmb3JtLXN0cmVhbXMvdGVybWluYXRlLmFu
eS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw4IEBACisKK0ZBSUwgY29udHJvbGxlci50ZXJtaW5h
dGUoKSBzaG91bGQgZXJyb3IgcGlwZVRvKCkgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3Jt
U3RyZWFtCitGQUlMIGNvbnRyb2xsZXIudGVybWluYXRlKCkgc2hvdWxkIHByZXZlbnQgcmVtYWlu
aW5nIGNodW5rcyBmcm9tIGJlaW5nIHByb2Nlc3NlZCBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFu
c2Zvcm1TdHJlYW0KK0ZBSUwgY29udHJvbGxlci5lbnF1ZXVlKCkgc2hvdWxkIHRocm93IGFmdGVy
IGNvbnRyb2xsZXIudGVybWluYXRlKCkgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3Ry
ZWFtCitGQUlMIGNvbnRyb2xsZXIuZXJyb3IoKSBhZnRlciBjb250cm9sbGVyLnRlcm1pbmF0ZSgp
IHdpdGggcXVldWVkIGNodW5rIHNob3VsZCBlcnJvciB0aGUgcmVhZGFibGUgQ2FuJ3QgZmluZCB2
YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIGNvbnRyb2xsZXIuZXJyb3IoKSBhZnRlciBj
b250cm9sbGVyLnRlcm1pbmF0ZSgpIHdpdGhvdXQgcXVldWVkIGNodW5rIHNob3VsZCBkbyBub3Ro
aW5nIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCBjb250cm9sbGVy
LnRlcm1pbmF0ZSgpIGluc2lkZSBmbHVzaCgpIHNob3VsZCBub3QgcHJldmVudCB3cml0ZXIuY2xv
c2UoKSBmcm9tIHN1Y2NlZWRpbmcgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFt
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy90ZXJtaW5hdGUuYW55Lmh0bWwgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvdHJhbnNmb3JtLXN0
cmVhbXMvdGVybWluYXRlLmFueS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzODI5MTM1MjhlNjkzYjNhNWQ1
NmM2NjBhNDUwNjA5ODBiNTQ4YzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvdHJhbnNmb3JtLXN0cmVhbXMvdGVy
bWluYXRlLmFueS5odG1sCkBAIC0wLDAgKzEgQEAKKzwhLS0gVGhpcyBmaWxlIGlzIHJlcXVpcmVk
IGZvciBXZWJLaXQgdGVzdCBpbmZyYXN0cnVjdHVyZSB0byBydW4gdGhlIHRlbXBsYXRlZCB0ZXN0
IC0tPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFt
cy90ZXJtaW5hdGUuYW55LmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1zL3Rlcm1pbmF0ZS5hbnkuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uOGNiMTA2NzkzNDhiNTAxNWFkNzVmYjFhNzRkNGI2ZjRhNzI0MGIxMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy90ZXJtaW5hdGUuYW55LmpzCkBAIC0wLDAgKzEsMTAwIEBA
CisvLyBNRVRBOiBnbG9iYWw9d2luZG93LHdvcmtlcixqc3NoZWxsCisvLyBNRVRBOiBzY3JpcHQ9
Li4vcmVzb3VyY2VzL3JlY29yZGluZy1zdHJlYW1zLmpzCisvLyBNRVRBOiBzY3JpcHQ9Li4vcmVz
b3VyY2VzL3Rlc3QtdXRpbHMuanMKKyd1c2Ugc3RyaWN0JzsKKworcHJvbWlzZV90ZXN0KHQgPT4g
eworICBjb25zdCB0cyA9IHJlY29yZGluZ1RyYW5zZm9ybVN0cmVhbSh7fSwgdW5kZWZpbmVkLCB7
IGhpZ2hXYXRlck1hcms6IDAgfSk7CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsK
KyAgICBzdGFydChjb250cm9sbGVyKSB7CisgICAgICBjb250cm9sbGVyLmVucXVldWUoMCk7Cisg
ICAgfQorICB9KTsKKyAgbGV0IHBpcGVUb1JlamVjdGVkID0gZmFsc2U7CisgIGNvbnN0IHBpcGVU
b1Byb21pc2UgPSBwcm9taXNlX3JlamVjdHNfanModCwgVHlwZUVycm9yLCBycy5waXBlVG8odHMu
d3JpdGFibGUpLCAncGlwZVRvIHNob3VsZCByZWplY3QnKS50aGVuKCgpID0+IHsKKyAgICBwaXBl
VG9SZWplY3RlZCA9IHRydWU7CisgIH0pOworICByZXR1cm4gZGVsYXkoMCkudGhlbigoKSA9PiB7
CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh0cy5ldmVudHMsIFtdLCAndHJhbnNmb3JtKCkgc2hv
dWxkIGhhdmUgc2VlbiBubyBjaHVua3MnKTsKKyAgICBhc3NlcnRfZmFsc2UocGlwZVRvUmVqZWN0
ZWQsICdwaXBlVG8oKSBzaG91bGQgbm90IGhhdmUgcmVqZWN0ZWQgeWV0Jyk7CisgICAgdHMuY29u
dHJvbGxlci50ZXJtaW5hdGUoKTsKKyAgICByZXR1cm4gcGlwZVRvUHJvbWlzZTsKKyAgfSkudGhl
bigoKSA9PiB7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh0cy5ldmVudHMsIFtdLCAndHJhbnNm
b3JtKCkgc2hvdWxkIHN0aWxsIGhhdmUgc2VlbiBubyBjaHVua3MnKTsKKyAgICBhc3NlcnRfdHJ1
ZShwaXBlVG9SZWplY3RlZCwgJ3BpcGVUb1JlamVjdGVkIG11c3QgYmUgdHJ1ZScpOworICB9KTsK
K30sICdjb250cm9sbGVyLnRlcm1pbmF0ZSgpIHNob3VsZCBlcnJvciBwaXBlVG8oKScpOworCitw
cm9taXNlX3Rlc3QodCA9PiB7CisgIGNvbnN0IHRzID0gcmVjb3JkaW5nVHJhbnNmb3JtU3RyZWFt
KHt9LCB1bmRlZmluZWQsIHsgaGlnaFdhdGVyTWFyazogMSB9KTsKKyAgY29uc3QgcnMgPSBuZXcg
UmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGNvbnRyb2xsZXIpIHsKKyAgICAgIGNvbnRyb2xs
ZXIuZW5xdWV1ZSgwKTsKKyAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgxKTsKKyAgICB9CisgIH0p
OworICBjb25zdCBwaXBlVG9Qcm9taXNlID0gcnMucGlwZVRvKHRzLndyaXRhYmxlKTsKKyAgcmV0
dXJuIGRlbGF5KDApLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9hcnJheV9lcXVhbHModHMuZXZl
bnRzLCBbJ3RyYW5zZm9ybScsIDBdLCAndHJhbnNmb3JtKCkgc2hvdWxkIGhhdmUgc2VlbiBvbmUg
Y2h1bmsnKTsKKyAgICB0cy5jb250cm9sbGVyLnRlcm1pbmF0ZSgpOworICAgIHJldHVybiBwcm9t
aXNlX3JlamVjdHNfanModCwgVHlwZUVycm9yLCBwaXBlVG9Qcm9taXNlLCAncGlwZVRvKCkgc2hv
dWxkIHJlamVjdCcpOworICB9KS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxz
KHRzLmV2ZW50cywgWyd0cmFuc2Zvcm0nLCAwXSwgJ3RyYW5zZm9ybSgpIHNob3VsZCBzdGlsbCBo
YXZlIHNlZW4gb25seSBvbmUgY2h1bmsnKTsKKyAgfSk7Cit9LCAnY29udHJvbGxlci50ZXJtaW5h
dGUoKSBzaG91bGQgcHJldmVudCByZW1haW5pbmcgY2h1bmtzIGZyb20gYmVpbmcgcHJvY2Vzc2Vk
Jyk7CisKK3Rlc3QoKCkgPT4geworICBuZXcgVHJhbnNmb3JtU3RyZWFtKHsKKyAgICBzdGFydChj
b250cm9sbGVyKSB7CisgICAgICBjb250cm9sbGVyLmVucXVldWUoMCk7CisgICAgICBjb250cm9s
bGVyLnRlcm1pbmF0ZSgpOworICAgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+
IGNvbnRyb2xsZXIuZW5xdWV1ZSgxKSwgJ2VucXVldWUgc2hvdWxkIHRocm93Jyk7CisgICAgfQor
ICB9KTsKK30sICdjb250cm9sbGVyLmVucXVldWUoKSBzaG91bGQgdGhyb3cgYWZ0ZXIgY29udHJv
bGxlci50ZXJtaW5hdGUoKScpOworCitjb25zdCBlcnJvcjEgPSBuZXcgRXJyb3IoJ2Vycm9yMScp
OworZXJyb3IxLm5hbWUgPSAnZXJyb3IxJzsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBjb25z
dCB0cyA9IG5ldyBUcmFuc2Zvcm1TdHJlYW0oeworICAgIHN0YXJ0KGNvbnRyb2xsZXIpIHsKKyAg
ICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgwKTsKKyAgICAgIGNvbnRyb2xsZXIudGVybWluYXRlKCk7
CisgICAgICBjb250cm9sbGVyLmVycm9yKGVycm9yMSk7CisgICAgfQorICB9KTsKKyAgcmV0dXJu
IFByb21pc2UuYWxsKFsKKyAgICBwcm9taXNlX3JlamVjdHNfanModCwgVHlwZUVycm9yLCB0cy53
cml0YWJsZS5hYm9ydCgpLCAnYWJvcnQoKSBzaG91bGQgcmVqZWN0IHdpdGggYSBUeXBlRXJyb3In
KSwKKyAgICBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIHRzLnJlYWRhYmxlLmNh
bmNlbCgpLCAnY2FuY2VsKCkgc2hvdWxkIHJlamVjdCB3aXRoIGVycm9yMScpLAorICAgIHByb21p
c2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMSwgdHMucmVhZGFibGUuZ2V0UmVhZGVyKCkuY2xv
c2VkLCAnY2xvc2VkIHNob3VsZCByZWplY3Qgd2l0aCBlcnJvcjEnKQorICBdKTsKK30sICdjb250
cm9sbGVyLmVycm9yKCkgYWZ0ZXIgY29udHJvbGxlci50ZXJtaW5hdGUoKSB3aXRoIHF1ZXVlZCBj
aHVuayBzaG91bGQgZXJyb3IgdGhlIHJlYWRhYmxlJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsK
KyAgY29uc3QgdHMgPSBuZXcgVHJhbnNmb3JtU3RyZWFtKHsKKyAgICBzdGFydChjb250cm9sbGVy
KSB7CisgICAgICBjb250cm9sbGVyLnRlcm1pbmF0ZSgpOworICAgICAgY29udHJvbGxlci5lcnJv
cihlcnJvcjEpOworICAgIH0KKyAgfSk7CisgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAgcHJv
bWlzZV9yZWplY3RzX2pzKHQsIFR5cGVFcnJvciwgdHMud3JpdGFibGUuYWJvcnQoKSwgJ2Fib3J0
KCkgc2hvdWxkIHJlamVjdCB3aXRoIGEgVHlwZUVycm9yJyksCisgICAgdHMucmVhZGFibGUuY2Fu
Y2VsKCksCisgICAgdHMucmVhZGFibGUuZ2V0UmVhZGVyKCkuY2xvc2VkCisgIF0pOworfSwgJ2Nv
bnRyb2xsZXIuZXJyb3IoKSBhZnRlciBjb250cm9sbGVyLnRlcm1pbmF0ZSgpIHdpdGhvdXQgcXVl
dWVkIGNodW5rIHNob3VsZCBkbyBub3RoaW5nJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7Cisg
IGNvbnN0IHRzID0gbmV3IFRyYW5zZm9ybVN0cmVhbSh7CisgICAgZmx1c2goY29udHJvbGxlcikg
eworICAgICAgY29udHJvbGxlci50ZXJtaW5hdGUoKTsKKyAgICB9CisgIH0pOworICBjb25zdCB3
cml0ZXIgPSB0cy53cml0YWJsZS5nZXRXcml0ZXIoKTsKKyAgcmV0dXJuIFByb21pc2UuYWxsKFsK
KyAgICB3cml0ZXIuY2xvc2UoKSwKKyAgICB3cml0ZXIuY2xvc2VkLAorICAgIHRzLnJlYWRhYmxl
LmdldFJlYWRlcigpLmNsb3NlZAorICBdKTsKK30sICdjb250cm9sbGVyLnRlcm1pbmF0ZSgpIGlu
c2lkZSBmbHVzaCgpIHNob3VsZCBub3QgcHJldmVudCB3cml0ZXIuY2xvc2UoKSBmcm9tIHN1Y2Nl
ZWRpbmcnKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy90ZXJtaW5hdGUuYW55Lndvcmtlci1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMvdHJhbnNmb3JtLXN0cmVhbXMvdGVybWluYXRlLmFueS53b3JrZXItZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjViOGE1YmE5NjNkMmU5OTU5MTk2MGI0M2FjZDY1YjFlYTNkOWFkMTAK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMvdHJhbnNmb3JtLXN0cmVhbXMvdGVybWluYXRlLmFueS53b3JrZXItZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsOCBAQAorCitGQUlMIGNvbnRyb2xsZXIudGVybWluYXRlKCkg
c2hvdWxkIGVycm9yIHBpcGVUbygpIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVh
bQorRkFJTCBjb250cm9sbGVyLnRlcm1pbmF0ZSgpIHNob3VsZCBwcmV2ZW50IHJlbWFpbmluZyBj
aHVua3MgZnJvbSBiZWluZyBwcm9jZXNzZWQgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3Jt
U3RyZWFtCitGQUlMIGNvbnRyb2xsZXIuZW5xdWV1ZSgpIHNob3VsZCB0aHJvdyBhZnRlciBjb250
cm9sbGVyLnRlcm1pbmF0ZSgpIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQor
RkFJTCBjb250cm9sbGVyLmVycm9yKCkgYWZ0ZXIgY29udHJvbGxlci50ZXJtaW5hdGUoKSB3aXRo
IHF1ZXVlZCBjaHVuayBzaG91bGQgZXJyb3IgdGhlIHJlYWRhYmxlIENhbid0IGZpbmQgdmFyaWFi
bGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCBjb250cm9sbGVyLmVycm9yKCkgYWZ0ZXIgY29udHJv
bGxlci50ZXJtaW5hdGUoKSB3aXRob3V0IHF1ZXVlZCBjaHVuayBzaG91bGQgZG8gbm90aGluZyBD
YW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgY29udHJvbGxlci50ZXJt
aW5hdGUoKSBpbnNpZGUgZmx1c2goKSBzaG91bGQgbm90IHByZXZlbnQgd3JpdGVyLmNsb3NlKCkg
ZnJvbSBzdWNjZWVkaW5nIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMvdHJhbnNmb3JtLXN0cmVhbXMvdGVybWluYXRlLmFueS53b3JrZXIuaHRtbCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy90cmFuc2Zvcm0t
c3RyZWFtcy90ZXJtaW5hdGUuYW55Lndvcmtlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzODI5MTM1Mjhl
NjkzYjNhNWQ1NmM2NjBhNDUwNjA5ODBiNTQ4YzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvdHJhbnNmb3JtLXN0
cmVhbXMvdGVybWluYXRlLmFueS53b3JrZXIuaHRtbApAQCAtMCwwICsxIEBACis8IS0tIFRoaXMg
ZmlsZSBpcyByZXF1aXJlZCBmb3IgV2ViS2l0IHRlc3QgaW5mcmFzdHJ1Y3R1cmUgdG8gcnVuIHRo
ZSB0ZW1wbGF0ZWQgdGVzdCAtLT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
dHJhbnNmb3JtLXN0cmVhbXMvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvdHJhbnNmb3JtLXN0cmVhbXMvdzNjLWltcG9y
dC5sb2cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uODQzYzA1ZTBkYzExNmI2ODIwOGZjZWM2M2YxZmExMGI1YmJkNWZk
ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy93M2MtaW1wb3J0LmxvZwpAQCAtMCww
ICsxLDI2IEBACitUaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9t
IHRoZSBXM0MgcmVwb3NpdG9yeS4KK0RvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkg
aW4gV2ViS2l0LgorSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0
aHViOgorCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0CisKK1RoZW4g
cnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1w
b3J0CisKK0RvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KKworLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCitQcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6CitOb25lCitQcm9wZXJ0
eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKK05vbmUKKy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorTGlzdCBvZiBmaWxlczoKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMvdHJhbnNmb3JtLXN0cmVhbXMvYmFja3ByZXNzdXJlLmFueS5qcworL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy90cmFuc2Zv
cm0tc3RyZWFtcy9lcnJvcnMuYW55LmpzCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1zL2ZsdXNoLmFueS5qcworL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy90cmFuc2Zv
cm0tc3RyZWFtcy9nZW5lcmFsLmFueS5qcworL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy90cmFuc2Zvcm0tc3RyZWFtcy9saXBmdXp6LmFueS5qcwor
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy90cmFu
c2Zvcm0tc3RyZWFtcy9wYXRjaGVkLWdsb2JhbC5hbnkuanMKKy9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvdHJhbnNmb3JtLXN0cmVhbXMvcHJvcGVy
dGllcy5hbnkuanMKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMvdHJhbnNmb3JtLXN0cmVhbXMvcmVlbnRyYW50LXN0cmF0ZWdpZXMuYW55LmpzCisv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5z
Zm9ybS1zdHJlYW1zL3N0cmF0ZWdpZXMuYW55LmpzCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3RyYW5zZm9ybS1zdHJlYW1zL3Rlcm1pbmF0ZS5h
bnkuanMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93M2MtaW1wb3J0LmxvZwppbmRleCBiZDM1ZWE4ODhl
MDI5Yjg2YWVhMWU0ZGZlNDIwNGZlYjZiZjJhYTNlLi4yZTIzZTE4Y2U4ZTdlNTJjNGEyMTk0YzM5
NWY1ZjViYThkNDlhYzFkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvdzNjLWltcG9ydC5sb2cKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3czYy1pbXBvcnQubG9nCkBA
IC0xLDcgKzEsNyBAQAogVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQg
ZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCiBEbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVj
dGx5IGluIFdlYktpdC4KIEluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BU
IGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cworCWh0
dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0CiAKIFRoZW4gcnVuIHRoZSBU
b29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0CiAKQEAg
LTE0LDE2ICsxNCw3IEBAIFByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVz
OgogTm9uZQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBMaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9PV05FUlMKKy9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvTUVUQS55bWwKIC9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvUkVBRE1FLm1k
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL2J5
dGUtbGVuZ3RoLXF1ZXVpbmctc3RyYXRlZ3kuZGVkaWNhdGVkd29ya2VyLmh0bWwKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvYnl0ZS1sZW5ndGgt
cXVldWluZy1zdHJhdGVneS5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zL2J5dGUtbGVuZ3RoLXF1ZXVpbmctc3RyYXRlZ3kuanMKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvYnl0ZS1sZW5n
dGgtcXVldWluZy1zdHJhdGVneS5zZXJ2aWNld29ya2VyLmh0dHBzLmh0bWwKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvYnl0ZS1sZW5ndGgtcXVl
dWluZy1zdHJhdGVneS5zaGFyZWR3b3JrZXIuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5LmRlZGlj
YXRlZHdvcmtlci5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3kuaHRtbAotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9jb3VudC1xdWV1aW5nLXN0cmF0
ZWd5LmpzCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJl
YW1zL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3kuc2VydmljZXdvcmtlci5odHRwcy5odG1sCi0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL2NvdW50LXF1
ZXVpbmctc3RyYXRlZ3kuc2hhcmVkd29ya2VyLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvZ2VuZXJhdGUtdGVzdC13cmFwcGVycy5qcwor
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9pZGxo
YXJuZXNzLmFueS5qcworL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy9xdWV1aW5nLXN0cmF0ZWdpZXMuYW55LmpzCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3Ry
ZWFtcy9hYm9ydGluZy5hbnktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvYWJvcnRpbmcuYW55
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYTVjZTUwMzMzZDdkYzAyNGI0NzQ4MDFjZDQ4ZWIz
NzE0YzM4MzI2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvYWJvcnRpbmcuYW55LWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDcwIEBACitDT05TT0xFIE1FU1NBR0U6IFVuaGFuZGxlZCBQ
cm9taXNlIFJlamVjdGlvbjogdW5kZWZpbmVkCitDT05TT0xFIE1FU1NBR0U6IFVuaGFuZGxlZCBQ
cm9taXNlIFJlamVjdGlvbjogZG9uZQorQ09OU09MRSBNRVNTQUdFOiBVbmhhbmRsZWQgUHJvbWlz
ZSBSZWplY3Rpb246IGRvbmUKK0NPTlNPTEUgTUVTU0FHRTogVW5oYW5kbGVkIFByb21pc2UgUmVq
ZWN0aW9uOiBkb25lCitDT05TT0xFIE1FU1NBR0U6IFVuaGFuZGxlZCBQcm9taXNlIFJlamVjdGlv
bjogZXJyb3IyOiBlcnJvcjIKK0NPTlNPTEUgTUVTU0FHRTogVW5oYW5kbGVkIFByb21pc2UgUmVq
ZWN0aW9uOiB1bmRlZmluZWQKK0NPTlNPTEUgTUVTU0FHRTogVW5oYW5kbGVkIFByb21pc2UgUmVq
ZWN0aW9uOiB1bmRlZmluZWQKK0NPTlNPTEUgTUVTU0FHRTogVW5oYW5kbGVkIFByb21pc2UgUmVq
ZWN0aW9uOiB1bmRlZmluZWQKK0NPTlNPTEUgTUVTU0FHRTogVW5oYW5kbGVkIFByb21pc2UgUmVq
ZWN0aW9uOiB1bmRlZmluZWQKK0NPTlNPTEUgTUVTU0FHRTogVW5oYW5kbGVkIFByb21pc2UgUmVq
ZWN0aW9uOiB1bmRlZmluZWQKK0NPTlNPTEUgTUVTU0FHRTogVW5oYW5kbGVkIFByb21pc2UgUmVq
ZWN0aW9uOiBzdHJpbmcgYXJndW1lbnQKKworSGFybmVzcyBFcnJvciAoRkFJTCksIG1lc3NhZ2Ug
PSBVbmhhbmRsZWQgcmVqZWN0aW9uCisKK0ZBSUwgQWJvcnRpbmcgYSBXcml0YWJsZVN0cmVhbSBi
ZWZvcmUgaXQgc3RhcnRzIHNob3VsZCBjYXVzZSB0aGUgd3JpdGVyJ3MgdW5zZXR0bGVkIHJlYWR5
IHByb21pc2UgdG8gcmVqZWN0IHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3
cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkKK0ZBSUwgQWJvcnRp
bmcgYSBXcml0YWJsZVN0cmVhbSBzaG91bGQgY2F1c2UgdGhlIHdyaXRlcidzIGZ1bGZpbGxlZCBy
ZWFkeSBwcm9taXNlIHRvIHJlc2V0IHRvIGEgcmVqZWN0ZWQgb25lIHdzLmdldFdyaXRlciBpcyBu
b3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVu
ZGVmaW5lZCkKK0ZBSUwgYWJvcnQoKSBvbiBhIHJlbGVhc2VkIHdyaXRlciByZWplY3RzIHdzLmdl
dFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRX
cml0ZXInIGlzIHVuZGVmaW5lZCkKK0ZBSUwgQWJvcnRpbmcgYSBXcml0YWJsZVN0cmVhbSBpbW1l
ZGlhdGVseSBwcmV2ZW50cyBmdXR1cmUgd3JpdGVzIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJl
amVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVFcnJvcjogd3MuZ2V0V3JpdGVyIGlzIG5v
dCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicgaXMgdW5k
ZWZpbmVkKSIKK0ZBSUwgQWJvcnRpbmcgYSBXcml0YWJsZVN0cmVhbSBwcmV2ZW50cyBmdXJ0aGVy
IHdyaXRlcyBhZnRlciBhbnkgdGhhdCBhcmUgaW4gcHJvZ3Jlc3MgcHJvbWlzZV90ZXN0OiBVbmhh
bmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiVHlwZUVycm9yOiB3cy5nZXRXcml0
ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3JpdGVyKCknLCAnd3MuZ2V0V3JpdGVy
JyBpcyB1bmRlZmluZWQpIgorRkFJTCBGdWxmaWxsbWVudCB2YWx1ZSBvZiB3cml0ZXIuYWJvcnQo
KSBjYWxsIG11c3QgYmUgdW5kZWZpbmVkIGV2ZW4gaWYgdGhlIHVuZGVybHlpbmcgc2luayByZXR1
cm5zIGEgbm9uLXVuZGVmaW5lZCB2YWx1ZSB3cy5nZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rpb24u
IChJbiAnd3MuZ2V0V3JpdGVyKCknLCAnd3MuZ2V0V3JpdGVyJyBpcyB1bmRlZmluZWQpCitGQUlM
IFdyaXRhYmxlU3RyZWFtIGlmIHNpbmsncyBhYm9ydCB0aHJvd3MsIHRoZSBwcm9taXNlIHJldHVy
bmVkIGJ5IHdyaXRlci5hYm9ydCgpIHJlamVjdHMgd3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0
aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicgaXMgdW5kZWZpbmVkKQor
RkFJTCBXcml0YWJsZVN0cmVhbSBpZiBzaW5rJ3MgYWJvcnQgdGhyb3dzLCB0aGUgcHJvbWlzZSBy
ZXR1cm5lZCBieSBtdWx0aXBsZSB3cml0ZXIuYWJvcnQoKXMgaXMgdGhlIHNhbWUgYW5kIHJlamVj
dHMgd3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywg
J3dzLmdldFdyaXRlcicgaXMgdW5kZWZpbmVkKQorUEFTUyBXcml0YWJsZVN0cmVhbSBpZiBzaW5r
J3MgYWJvcnQgdGhyb3dzLCB0aGUgcHJvbWlzZSByZXR1cm5lZCBieSB3cy5hYm9ydCgpIHJlamVj
dHMgCitGQUlMIFdyaXRhYmxlU3RyZWFtIGlmIHNpbmsncyBhYm9ydCB0aHJvd3MsIGZvciBhbiBh
Ym9ydCBwZXJmb3JtZWQgZHVyaW5nIGEgd3JpdGUsIHRoZSBwcm9taXNlIHJldHVybmVkIGJ5IHdz
LmFib3J0KCkgcmVqZWN0cyB3cy5nZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3Mu
Z2V0V3JpdGVyKCknLCAnd3MuZ2V0V3JpdGVyJyBpcyB1bmRlZmluZWQpCitGQUlMIEFib3J0aW5n
IGEgV3JpdGFibGVTdHJlYW0gcGFzc2VzIHRocm91Z2ggdGhlIGdpdmVuIHJlYXNvbiB3cy5nZXRX
cml0ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3JpdGVyKCknLCAnd3MuZ2V0V3Jp
dGVyJyBpcyB1bmRlZmluZWQpCitGQUlMIEFib3J0aW5nIGEgV3JpdGFibGVTdHJlYW0gcHV0cyBp
dCBpbiBhbiBlcnJvcmVkIHN0YXRlIHdpdGggdGhlIGVycm9yIHBhc3NlZCB0byBhYm9ydCgpIHdz
LmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5n
ZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkKK0ZBSUwgQWJvcnRpbmcgYSBXcml0YWJsZVN0cmVhbSBj
YXVzZXMgYW55IG91dHN0YW5kaW5nIHdyaXRlKCkgcHJvbWlzZXMgdG8gYmUgcmVqZWN0ZWQgd2l0
aCB0aGUgcmVhc29uIHN1cHBsaWVkIHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKElu
ICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkKK0ZBSUwgQ2xv
c2luZyBidXQgdGhlbiBpbW1lZGlhdGVseSBhYm9ydGluZyBhIFdyaXRhYmxlU3RyZWFtIGNhdXNl
cyB0aGUgc3RyZWFtIHRvIGVycm9yIHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKElu
ICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkKK0ZBSUwgQ2xv
c2luZyBhIFdyaXRhYmxlU3RyZWFtIGFuZCBhYm9ydGluZyBpdCB3aGlsZSBpdCBjbG9zZXMgY2F1
c2VzIHRoZSBzdHJlYW0gdG8gaWdub3JlIHRoZSBhYm9ydCBhdHRlbXB0IHdzLmdldFdyaXRlciBp
cyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlz
IHVuZGVmaW5lZCkKK0ZBSUwgQWJvcnRpbmcgYSBXcml0YWJsZVN0cmVhbSBhZnRlciBpdCBpcyBj
bG9zZWQgaXMgYSBuby1vcCB3cy5nZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3Mu
Z2V0V3JpdGVyKCknLCAnd3MuZ2V0V3JpdGVyJyBpcyB1bmRlZmluZWQpCitGQUlMIFdyaXRhYmxl
U3RyZWFtIHNob3VsZCBOT1QgY2FsbCB1bmRlcmx5aW5nIHNpbmsncyBjbG9zZSBpZiBubyBhYm9y
dCBpcyBzdXBwbGllZCAoaGlzdG9yaWNhbCkgd3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9u
LiAoSW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicgaXMgdW5kZWZpbmVkKQorRkFJ
TCByZXR1cm5pbmcgYSB0aGVuYWJsZSBmcm9tIGFib3J0KCkgc2hvdWxkIHdvcmsgd3MuZ2V0V3Jp
dGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRl
cicgaXMgdW5kZWZpbmVkKQorRkFJTCAuY2xvc2VkIHNob3VsZCBub3QgcmVzb2x2ZSBiZWZvcmUg
ZnVsZmlsbGVkIHdyaXRlKCkgd3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dz
LmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicgaXMgdW5kZWZpbmVkKQorRkFJTCAuY2xvc2Vk
IHNob3VsZCBub3QgcmVzb2x2ZSBiZWZvcmUgcmVqZWN0ZWQgd3JpdGUoKTsgd3JpdGUoKSBlcnJv
ciBzaG91bGQgbm90IG92ZXJ3cml0ZSBhYm9ydCgpIGVycm9yIHdzLmdldFdyaXRlciBpcyBub3Qg
YSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVm
aW5lZCkKK0ZBSUwgd3JpdGVzIHNob3VsZCBiZSBzYXRpc2ZpZWQgaW4gb3JkZXIgd2hlbiBhYm9y
dGluZyB3cy5nZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3JpdGVyKCkn
LCAnd3MuZ2V0V3JpdGVyJyBpcyB1bmRlZmluZWQpCitGQUlMIHdyaXRlcyBzaG91bGQgYmUgc2F0
aXNmaWVkIGluIG9yZGVyIGFmdGVyIHJlamVjdGVkIHdyaXRlIHdoZW4gYWJvcnRpbmcgd3MuZ2V0
V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdy
aXRlcicgaXMgdW5kZWZpbmVkKQorRkFJTCBjbG9zZSgpIHNob3VsZCByZWplY3Qgd2l0aCBhYm9y
dCByZWFzb24gd2h5IGFib3J0KCkgaXMgZmlyc3QgZXJyb3Igd3MuZ2V0V3JpdGVyIGlzIG5vdCBh
IGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicgaXMgdW5kZWZp
bmVkKQorRkFJTCB1bmRlcmx5aW5nIGFib3J0KCkgc2hvdWxkIG5vdCBiZSBjYWxsZWQgdW50aWwg
dW5kZXJseWluZyB3cml0ZSgpIGNvbXBsZXRlcyB3cy5nZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rp
b24uIChJbiAnd3MuZ2V0V3JpdGVyKCknLCAnd3MuZ2V0V3JpdGVyJyBpcyB1bmRlZmluZWQpCitG
QUlMIHVuZGVybHlpbmcgYWJvcnQoKSBzaG91bGQgbm90IGJlIGNhbGxlZCBpZiB1bmRlcmx5aW5n
IGNsb3NlKCkgaGFzIHN0YXJ0ZWQgd3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4g
J3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicgaXMgdW5kZWZpbmVkKQorRkFJTCBpZiB1
bmRlcmx5aW5nIGNsb3NlKCkgaGFzIHN0YXJ0ZWQgYW5kIHRoZW4gcmVqZWN0cywgdGhlIGFib3J0
KCkgYW5kIGNsb3NlKCkgcHJvbWlzZXMgc2hvdWxkIHJlamVjdCB3aXRoIHRoZSB1bmRlcmx5aW5n
IGNsb3NlIHJlamVjdGlvbiByZWFzb24gd3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAo
SW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicgaXMgdW5kZWZpbmVkKQorRkFJTCBh
biBhYm9ydCgpIHRoYXQgaGFwcGVucyBkdXJpbmcgYSB3cml0ZSgpIHNob3VsZCB0cmlnZ2VyIHRo
ZSB1bmRlcmx5aW5nIGFib3J0KCkgZXZlbiB3aXRoIGEgY2xvc2UoKSBxdWV1ZWQgd3MuZ2V0V3Jp
dGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRl
cicgaXMgdW5kZWZpbmVkKQorRkFJTCBpZiBhIHdyaXRlciBpcyBjcmVhdGVkIGZvciBhIHN0cmVh
bSB3aXRoIGEgcGVuZGluZyBhYm9ydCwgaXRzIHJlYWR5IHNob3VsZCBiZSByZWplY3RlZCB3aXRo
IHRoZSBhYm9ydCBlcnJvciB3cy5nZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3Mu
Z2V0V3JpdGVyKCknLCAnd3MuZ2V0V3JpdGVyJyBpcyB1bmRlZmluZWQpCitGQUlMIHdyaXRlciBj
bG9zZSgpIHByb21pc2Ugc2hvdWxkIHJlc29sdmUgYmVmb3JlIGFib3J0KCkgcHJvbWlzZSB3cy5n
ZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3JpdGVyKCknLCAnd3MuZ2V0
V3JpdGVyJyBpcyB1bmRlZmluZWQpCitGQUlMIHdyaXRlci5yZWFkeSBzaG91bGQgcmVqZWN0IG9u
IGNvbnRyb2xsZXIgZXJyb3Igd2l0aG91dCB3YWl0aW5nIGZvciB1bmRlcmx5aW5nIHdyaXRlIHdz
LmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5n
ZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkKK0ZBSUwgd3JpdGVyLmFib3J0KCkgd2hpbGUgdGhlcmUg
aXMgYW4gaW4tZmxpZ2h0IHdyaXRlLCBhbmQgdGhlbiBmaW5pc2ggdGhlIHdyaXRlIHdpdGggcmVq
ZWN0aW9uIHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0ZXIo
KScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkKK0ZBSUwgd3JpdGVyLmFib3J0KCksIGNv
bnRyb2xsZXIuZXJyb3IoKSB3aGlsZSB0aGVyZSBpcyBhbiBpbi1mbGlnaHQgd3JpdGUsIGFuZCB0
aGVuIGZpbmlzaCB0aGUgd3JpdGUgd3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4g
J3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicgaXMgdW5kZWZpbmVkKQorRkFJTCB3cml0
ZXIuYWJvcnQoKSwgY29udHJvbGxlci5lcnJvcigpIHdoaWxlIHRoZXJlIGlzIGFuIGluLWZsaWdo
dCBjbG9zZSwgYW5kIHRoZW4gZmluaXNoIHRoZSBjbG9zZSB3cy5nZXRXcml0ZXIgaXMgbm90IGEg
ZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3JpdGVyKCknLCAnd3MuZ2V0V3JpdGVyJyBpcyB1bmRlZmlu
ZWQpCitGQUlMIGNvbnRyb2xsZXIuZXJyb3IoKSwgd3JpdGVyLmFib3J0KCkgd2hpbGUgdGhlcmUg
aXMgYW4gaW4tZmxpZ2h0IHdyaXRlLCBhbmQgdGhlbiBmaW5pc2ggdGhlIHdyaXRlIHdzLmdldFdy
aXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0
ZXInIGlzIHVuZGVmaW5lZCkKK0ZBSUwgY29udHJvbGxlci5lcnJvcigpLCB3cml0ZXIuYWJvcnQo
KSB3aGlsZSB0aGVyZSBpcyBhbiBpbi1mbGlnaHQgY2xvc2UsIGFuZCB0aGVuIGZpbmlzaCB0aGUg
Y2xvc2Ugd3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigp
JywgJ3dzLmdldFdyaXRlcicgaXMgdW5kZWZpbmVkKQorRkFJTCByZWxlYXNlTG9jaygpIHdoaWxl
IGFib3J0aW5nIHNob3VsZCByZWplY3QgdGhlIG9yaWdpbmFsIGNsb3NlZCBwcm9taXNlIHdzLmdl
dFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRX
cml0ZXInIGlzIHVuZGVmaW5lZCkKK0ZBSUwgcmVsZWFzZUxvY2soKSBkdXJpbmcgZGVsYXllZCBh
c3luYyBhYm9ydCgpIHNob3VsZCByZWplY3QgdGhlIHdyaXRlci5jbG9zZWQgcHJvbWlzZSB3cy5n
ZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3JpdGVyKCknLCAnd3MuZ2V0
V3JpdGVyJyBpcyB1bmRlZmluZWQpCitGQUlMIHNpbmsgYWJvcnQoKSBzaG91bGQgbm90IGJlIGNh
bGxlZCB1bnRpbCBzaW5rIHN0YXJ0KCkgaXMgZG9uZSBhc3NlcnRfYXJyYXlfZXF1YWxzOiBhYm9y
dCgpIHNob3VsZCBub3QgYmUgY2FsbGVkIGR1cmluZyBzdGFydCgpIGxlbmd0aHMgZGlmZmVyLCBl
eHBlY3RlZCBhcnJheSBbXSBsZW5ndGggMCwgZ290IFsiYWJvcnQiLCAiZG9uZSJdIGxlbmd0aCAy
CitGQUlMIGlmIHN0YXJ0IGF0dGVtcHRzIHRvIGVycm9yIHRoZSBjb250cm9sbGVyIGFmdGVyIGFi
b3J0KCkgaGFzIGJlZW4gY2FsbGVkLCB0aGVuIGl0IHNob3VsZCBsb3NlIGNvbnRyb2xsZXIuZXJy
b3IgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnY29udHJvbGxlci5lcnJvcihlcnJvcjEpJywgJ2Nv
bnRyb2xsZXIuZXJyb3InIGlzIHVuZGVmaW5lZCkKK1BBU1Mgc3RyZWFtIGFib3J0KCkgcHJvbWlz
ZSBzaG91bGQgc3RpbGwgcmVzb2x2ZSBpZiBzaW5rIHN0YXJ0KCkgcmVqZWN0cyAKK0ZBSUwgd3Jp
dGVyIGFib3J0KCkgZHVyaW5nIHNpbmsgc3RhcnQoKSBzaG91bGQgcmVwbGFjZSB0aGUgd3JpdGVy
LnJlYWR5IHByb21pc2Ugc3luY2hyb25vdXNseSB3cy5nZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rp
b24uIChJbiAnd3MuZ2V0V3JpdGVyKCknLCAnd3MuZ2V0V3JpdGVyJyBpcyB1bmRlZmluZWQpCitG
QUlMIHByb21pc2VzIHJldHVybmVkIGZyb20gb3RoZXIgd3JpdGVyIG1ldGhvZHMgc2hvdWxkIGJl
IHJlamVjdGVkIHdoZW4gd3JpdGVyIGFib3J0KCkgaGFwcGVucyBkdXJpbmcgc2luayBzdGFydCgp
IHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3
cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkKK0ZBSUwgYWJvcnQoKSBzaG91bGQgc3VjY2VlZCBk
ZXNwaXRlIHJlamVjdGlvbiBmcm9tIHdyaXRlIHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlv
bi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkKK0ZB
SUwgYWJvcnQoKSBzaG91bGQgYmUgcmVqZWN0ZWQgd2l0aCB0aGUgcmVqZWN0aW9uIHJldHVybmVk
IGZyb20gY2xvc2UoKSB3cy5nZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0
V3JpdGVyKCknLCAnd3MuZ2V0V3JpdGVyJyBpcyB1bmRlZmluZWQpCitGQUlMIGEgcmVqZWN0aW5n
IHNpbmsud3JpdGUoKSBzaG91bGQgbm90IHByZXZlbnQgc2luay5hYm9ydCgpIGZyb20gYmVpbmcg
Y2FsbGVkIHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0ZXIo
KScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkKK1BBU1Mgd2hlbiBzdGFydCBlcnJvcnMg
YWZ0ZXIgc3RyZWFtIGFib3J0KCksIHVuZGVybHlpbmcgc2luayBhYm9ydCgpIHNob3VsZCBiZSBj
YWxsZWQgYW55d2F5IAorRkFJTCB3aGVuIGNhbGxpbmcgYWJvcnQoKSB0d2ljZSBvbiB0aGUgc2Ft
ZSBzdHJlYW0sIGJvdGggc2hvdWxkIGdpdmUgdGhlIHNhbWUgcHJvbWlzZSB0aGF0IGZ1bGZpbGxz
IHdpdGggdW5kZWZpbmVkIGFzc2VydF9lcXVhbHM6IHRoZSBwcm9taXNlcyBtdXN0IGJlIHRoZSBz
YW1lIGV4cGVjdGVkIG9iamVjdCAiW29iamVjdCBQcm9taXNlXSIgYnV0IGdvdCBvYmplY3QgIltv
YmplY3QgUHJvbWlzZV0iCitGQUlMIHdoZW4gY2FsbGluZyBhYm9ydCgpIHR3aWNlIG9uIHRoZSBz
YW1lIHN0cmVhbSwgYnV0IHNlcXVlbnRpYWxseSBzbyBzbyB0aGVyZSdzIG5vIHBlbmRpbmcgYWJv
cnQgdGhlIHNlY29uZCB0aW1lLCBib3RoIHNob3VsZCBmdWxmaWxsIHdpdGggdW5kZWZpbmVkIHBy
b21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiB1bmRlZmluZWQKK0ZB
SUwgY2FsbGluZyBhYm9ydCgpIG9uIGFuIGVycm9yZWQgc3RyZWFtIHNob3VsZCBmdWxmaWxsIHdp
dGggdW5kZWZpbmVkIGMuZXJyb3IgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnYy5lcnJvcihlcnJv
cjEpJywgJ2MuZXJyb3InIGlzIHVuZGVmaW5lZCkKK0ZBSUwgc2luayBhYm9ydCgpIHNob3VsZCBu
b3QgYmUgY2FsbGVkIGlmIHN0cmVhbSB3YXMgZXJyb3JpbmcgZHVlIHRvIGNvbnRyb2xsZXIuZXJy
b3IoKSBiZWZvcmUgYWJvcnQoKSB3YXMgY2FsbGVkIHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5j
dGlvbi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkK
K0ZBSUwgc2luayBhYm9ydCgpIHNob3VsZCBub3QgYmUgY2FsbGVkIGlmIHN0cmVhbSB3YXMgZXJy
b3JpbmcgZHVlIHRvIGJhZCBzdHJhdGVneSBiZWZvcmUgYWJvcnQoKSB3YXMgY2FsbGVkIHdzLmdl
dFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRX
cml0ZXInIGlzIHVuZGVmaW5lZCkKK0ZBSUwgYWJvcnQgd2l0aCBubyBhcmd1bWVudHMgc2hvdWxk
IHNldCB0aGUgc3RvcmVkIGVycm9yIHRvIHVuZGVmaW5lZCBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxl
ZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJUeXBlRXJyb3I6IHdzLmdldFdyaXRlciBp
cyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlz
IHVuZGVmaW5lZCkiCitGQUlMIGFib3J0IHdpdGggYW4gdW5kZWZpbmVkIGFyZ3VtZW50IHNob3Vs
ZCBzZXQgdGhlIHN0b3JlZCBlcnJvciB0byB1bmRlZmluZWQgcHJvbWlzZV90ZXN0OiBVbmhhbmRs
ZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiVHlwZUVycm9yOiB3cy5nZXRXcml0ZXIg
aXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3JpdGVyKCknLCAnd3MuZ2V0V3JpdGVyJyBp
cyB1bmRlZmluZWQpIgorRkFJTCBhYm9ydCB3aXRoIGEgc3RyaW5nIGFyZ3VtZW50IHNob3VsZCBz
ZXQgdGhlIHN0b3JlZCBlcnJvciB0byB0aGF0IGFyZ3VtZW50IHByb21pc2VfdGVzdDogVW5oYW5k
bGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVFcnJvcjogd3MuZ2V0V3JpdGVy
IGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicg
aXMgdW5kZWZpbmVkKSIKK0ZBSUwgYWJvcnQgb24gYSBsb2NrZWQgc3RyZWFtIHNob3VsZCByZWpl
Y3Qgd3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywg
J3dzLmdldFdyaXRlcicgaXMgdW5kZWZpbmVkKQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9h
Ym9ydGluZy5hbnkuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL2Fib3J0aW5nLmFueS5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjIzODI5MTM1MjhlNjkzYjNhNWQ1NmM2NjBhNDUwNjA5ODBiNTQ4YzMKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvd3JpdGFibGUtc3RyZWFtcy9hYm9ydGluZy5hbnkuaHRtbApAQCAtMCwwICsxIEBACis8IS0t
IFRoaXMgZmlsZSBpcyByZXF1aXJlZCBmb3IgV2ViS2l0IHRlc3QgaW5mcmFzdHJ1Y3R1cmUgdG8g
cnVuIHRoZSB0ZW1wbGF0ZWQgdGVzdCAtLT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9hYm9ydGluZy5hbnkuanMgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9hYm9y
dGluZy5hbnkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWMwNTNiYWI5MTU3MDA3NGU0MDU1ZTE4MGQ1OGI1MDZl
MWRiN2ZjZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL2Fib3J0aW5nLmFueS5qcwpA
QCAtMCwwICsxLDEzNzggQEAKKy8vIE1FVEE6IGdsb2JhbD13aW5kb3csd29ya2VyLGpzc2hlbGwK
Ky8vIE1FVEE6IHNjcmlwdD0uLi9yZXNvdXJjZXMvdGVzdC11dGlscy5qcworLy8gTUVUQTogc2Ny
aXB0PS4uL3Jlc291cmNlcy9yZWNvcmRpbmctc3RyZWFtcy5qcworJ3VzZSBzdHJpY3QnOworCitj
b25zdCBlcnJvcjEgPSBuZXcgRXJyb3IoJ2Vycm9yMScpOworZXJyb3IxLm5hbWUgPSAnZXJyb3Ix
JzsKKworY29uc3QgZXJyb3IyID0gbmV3IEVycm9yKCdlcnJvcjInKTsKK2Vycm9yMi5uYW1lID0g
J2Vycm9yMic7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgY29uc3Qgd3MgPSBuZXcgV3JpdGFi
bGVTdHJlYW0oeworICAgIHdyaXRlOiB0LnVucmVhY2hlZF9mdW5jKCd3cml0ZSgpIHNob3VsZCBu
b3QgYmUgY2FsbGVkJykKKyAgfSk7CisKKyAgY29uc3Qgd3JpdGVyID0gd3MuZ2V0V3JpdGVyKCk7
CisgIGNvbnN0IHdyaXRlUHJvbWlzZSA9IHdyaXRlci53cml0ZSgnYScpOworCisgIGNvbnN0IHJl
YWR5UHJvbWlzZSA9IHdyaXRlci5yZWFkeTsKKworICB3cml0ZXIuYWJvcnQoZXJyb3IxKTsKKwor
ICBhc3NlcnRfZXF1YWxzKHdyaXRlci5yZWFkeSwgcmVhZHlQcm9taXNlLCAndGhlIHJlYWR5IHBy
b21pc2UgcHJvcGVydHkgc2hvdWxkIG5vdCBjaGFuZ2UnKTsKKworICByZXR1cm4gUHJvbWlzZS5h
bGwoWworICAgIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMSwgcmVhZHlQcm9taXNl
LCAndGhlIHJlYWR5IHByb21pc2Ugc2hvdWxkIHJlamVjdCB3aXRoIGVycm9yMScpLAorICAgIHBy
b21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMSwgd3JpdGVQcm9taXNlLCAndGhlIHdyaXRl
KCkgcHJvbWlzZSBzaG91bGQgcmVqZWN0IHdpdGggZXJyb3IxJykKKyAgXSk7Cit9LCAnQWJvcnRp
bmcgYSBXcml0YWJsZVN0cmVhbSBiZWZvcmUgaXQgc3RhcnRzIHNob3VsZCBjYXVzZSB0aGUgd3Jp
dGVyXCdzIHVuc2V0dGxlZCByZWFkeSBwcm9taXNlIHRvIHJlamVjdCcpOworCitwcm9taXNlX3Rl
c3QodCA9PiB7CisgIGNvbnN0IHdzID0gbmV3IFdyaXRhYmxlU3RyZWFtKCk7CisKKyAgY29uc3Qg
d3JpdGVyID0gd3MuZ2V0V3JpdGVyKCk7CisgIHdyaXRlci53cml0ZSgnYScpOworCisgIGNvbnN0
IHJlYWR5UHJvbWlzZSA9IHdyaXRlci5yZWFkeTsKKworICByZXR1cm4gcmVhZHlQcm9taXNlLnRo
ZW4oKCkgPT4geworICAgIHdyaXRlci5hYm9ydChlcnJvcjEpOworCisgICAgYXNzZXJ0X25vdF9l
cXVhbHMod3JpdGVyLnJlYWR5LCByZWFkeVByb21pc2UsICd0aGUgcmVhZHkgcHJvbWlzZSBwcm9w
ZXJ0eSBzaG91bGQgY2hhbmdlJyk7CisgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19leGFjdGx5
KHQsIGVycm9yMSwgd3JpdGVyLnJlYWR5LCAndGhlIHJlYWR5IHByb21pc2Ugc2hvdWxkIHJlamVj
dCB3aXRoIGVycm9yMScpOworICB9KTsKK30sICdBYm9ydGluZyBhIFdyaXRhYmxlU3RyZWFtIHNo
b3VsZCBjYXVzZSB0aGUgd3JpdGVyXCdzIGZ1bGZpbGxlZCByZWFkeSBwcm9taXNlIHRvIHJlc2V0
IHRvIGEgcmVqZWN0ZWQgb25lJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgY29uc3Qgd3Mg
PSBuZXcgV3JpdGFibGVTdHJlYW0oKTsKKyAgY29uc3Qgd3JpdGVyID0gd3MuZ2V0V3JpdGVyKCk7
CisKKyAgd3JpdGVyLnJlbGVhc2VMb2NrKCk7CisKKyAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19q
cyh0LCBUeXBlRXJyb3IsIHdyaXRlci5hYm9ydCgpLCAnYWJvcnQoKSBzaG91bGQgcmVqZWN0IHdp
dGggYSBUeXBlRXJyb3InKTsKK30sICdhYm9ydCgpIG9uIGEgcmVsZWFzZWQgd3JpdGVyIHJlamVj
dHMnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRh
YmxlU3RyZWFtKCk7CisKKyAgcmV0dXJuIGRlbGF5KDApCisgICAgLnRoZW4oKCkgPT4geworICAg
ICAgY29uc3Qgd3JpdGVyID0gd3MuZ2V0V3JpdGVyKCk7CisKKyAgICAgIGNvbnN0IGFib3J0UHJv
bWlzZSA9IHdyaXRlci5hYm9ydChlcnJvcjEpOworCisgICAgICByZXR1cm4gUHJvbWlzZS5hbGwo
WworICAgICAgICBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIHdyaXRlci53cml0
ZSgxKSwgJ3dyaXRlKDEpIG11c3QgcmVqZWN0IHdpdGggZXJyb3IxJyksCisgICAgICAgIHByb21p
c2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMSwgd3JpdGVyLndyaXRlKDIpLCAnd3JpdGUoMikg
bXVzdCByZWplY3Qgd2l0aCBlcnJvcjEnKSwKKyAgICAgICAgYWJvcnRQcm9taXNlCisgICAgICBd
KTsKKyAgICB9KQorICAgIC50aGVuKCgpID0+IHsKKyAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMo
d3MuZXZlbnRzLCBbJ2Fib3J0JywgZXJyb3IxXSk7CisgICAgfSk7Cit9LCAnQWJvcnRpbmcgYSBX
cml0YWJsZVN0cmVhbSBpbW1lZGlhdGVseSBwcmV2ZW50cyBmdXR1cmUgd3JpdGVzJyk7CisKK3By
b21pc2VfdGVzdCh0ID0+IHsKKyAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSgp
OworICBjb25zdCByZXN1bHRzID0gW107CisKKyAgcmV0dXJuIGRlbGF5KDApCisgICAgLnRoZW4o
KCkgPT4geworICAgICAgY29uc3Qgd3JpdGVyID0gd3MuZ2V0V3JpdGVyKCk7CisKKyAgICAgIHJl
c3VsdHMucHVzaCgKKyAgICAgICAgd3JpdGVyLndyaXRlKDEpLAorICAgICAgICBwcm9taXNlX3Jl
amVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIHdyaXRlci53cml0ZSgyKSwgJ3dyaXRlKDIpIG11c3Qg
cmVqZWN0IHdpdGggZXJyb3IxJyksCisgICAgICAgIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQs
IGVycm9yMSwgd3JpdGVyLndyaXRlKDMpLCAnd3JpdGUoMykgbXVzdCByZWplY3Qgd2l0aCBlcnJv
cjEnKQorICAgICAgKTsKKworICAgICAgY29uc3QgYWJvcnRQcm9taXNlID0gd3JpdGVyLmFib3J0
KGVycm9yMSk7CisKKyAgICAgIHJlc3VsdHMucHVzaCgKKyAgICAgICAgcHJvbWlzZV9yZWplY3Rz
X2V4YWN0bHkodCwgZXJyb3IxLCB3cml0ZXIud3JpdGUoNCksICd3cml0ZSg0KSBtdXN0IHJlamVj
dCB3aXRoIGVycm9yMScpLAorICAgICAgICBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJv
cjEsIHdyaXRlci53cml0ZSg1KSwgJ3dyaXRlKDUpIG11c3QgcmVqZWN0IHdpdGggZXJyb3IxJykK
KyAgICAgICk7CisKKyAgICAgIHJldHVybiBhYm9ydFByb21pc2U7CisgICAgfSkudGhlbigoKSA9
PiB7CisgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWyd3cml0ZScsIDEsICdh
Ym9ydCcsIGVycm9yMV0pOworCisgICAgICByZXR1cm4gUHJvbWlzZS5hbGwocmVzdWx0cyk7Cisg
ICAgfSk7Cit9LCAnQWJvcnRpbmcgYSBXcml0YWJsZVN0cmVhbSBwcmV2ZW50cyBmdXJ0aGVyIHdy
aXRlcyBhZnRlciBhbnkgdGhhdCBhcmUgaW4gcHJvZ3Jlc3MnKTsKKworcHJvbWlzZV90ZXN0KCgp
ID0+IHsKKyAgY29uc3Qgd3MgPSBuZXcgV3JpdGFibGVTdHJlYW0oeworICAgIGFib3J0KCkgewor
ICAgICAgcmV0dXJuICdIZWxsbyc7CisgICAgfQorICB9KTsKKyAgY29uc3Qgd3JpdGVyID0gd3Mu
Z2V0V3JpdGVyKCk7CisKKyAgcmV0dXJuIHdyaXRlci5hYm9ydCgnYScpLnRoZW4odmFsdWUgPT4g
eworICAgIGFzc2VydF9lcXVhbHModmFsdWUsIHVuZGVmaW5lZCwgJ2Z1bGZpbGxtZW50IHZhbHVl
IG11c3QgYmUgdW5kZWZpbmVkJyk7CisgIH0pOworfSwgJ0Z1bGZpbGxtZW50IHZhbHVlIG9mIHdy
aXRlci5hYm9ydCgpIGNhbGwgbXVzdCBiZSB1bmRlZmluZWQgZXZlbiBpZiB0aGUgdW5kZXJseWlu
ZyBzaW5rIHJldHVybnMgYSBub24tdW5kZWZpbmVkICcgKworICAgJ3ZhbHVlJyk7CisKK3Byb21p
c2VfdGVzdCh0ID0+IHsKKyAgY29uc3Qgd3MgPSBuZXcgV3JpdGFibGVTdHJlYW0oeworICAgIGFi
b3J0KCkgeworICAgICAgdGhyb3cgZXJyb3IxOworICAgIH0KKyAgfSk7CisgIGNvbnN0IHdyaXRl
ciA9IHdzLmdldFdyaXRlcigpOworCisgIHJldHVybiBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0
LCBlcnJvcjEsIHdyaXRlci5hYm9ydCh1bmRlZmluZWQpLAorICAgICdyZWplY3Rpb24gcmVhc29u
IG9mIGFib3J0UHJvbWlzZSBtdXN0IGJlIHRoZSBlcnJvciB0aHJvd24gYnkgYWJvcnQnKTsKK30s
ICdXcml0YWJsZVN0cmVhbSBpZiBzaW5rXCdzIGFib3J0IHRocm93cywgdGhlIHByb21pc2UgcmV0
dXJuZWQgYnkgd3JpdGVyLmFib3J0KCkgcmVqZWN0cycpOworCitwcm9taXNlX3Rlc3QodCA9PiB7
CisgIGNvbnN0IHdzID0gbmV3IFdyaXRhYmxlU3RyZWFtKHsKKyAgICBhYm9ydCgpIHsKKyAgICAg
IHRocm93IGVycm9yMTsKKyAgICB9CisgIH0pOworICBjb25zdCB3cml0ZXIgPSB3cy5nZXRXcml0
ZXIoKTsKKworICBjb25zdCBhYm9ydFByb21pc2UxID0gd3JpdGVyLmFib3J0KHVuZGVmaW5lZCk7
CisgIGNvbnN0IGFib3J0UHJvbWlzZTIgPSB3cml0ZXIuYWJvcnQodW5kZWZpbmVkKTsKKworICBh
c3NlcnRfZXF1YWxzKGFib3J0UHJvbWlzZTEsIGFib3J0UHJvbWlzZTIsICd0aGUgcHJvbWlzZXMg
bXVzdCBiZSB0aGUgc2FtZScpOworCisgIHJldHVybiBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0
LCBlcnJvcjEsIGFib3J0UHJvbWlzZTEsICdwcm9taXNlIG11c3QgaGF2ZSBtYXRjaGluZyByZWpl
Y3Rpb24nKTsKK30sICdXcml0YWJsZVN0cmVhbSBpZiBzaW5rXCdzIGFib3J0IHRocm93cywgdGhl
IHByb21pc2UgcmV0dXJuZWQgYnkgbXVsdGlwbGUgd3JpdGVyLmFib3J0KClzIGlzIHRoZSBzYW1l
IGFuZCByZWplY3RzJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgY29uc3Qgd3MgPSBuZXcg
V3JpdGFibGVTdHJlYW0oeworICAgIGFib3J0KCkgeworICAgICAgdGhyb3cgZXJyb3IxOworICAg
IH0KKyAgfSk7CisKKyAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMSwg
d3MuYWJvcnQodW5kZWZpbmVkKSwKKyAgICAncmVqZWN0aW9uIHJlYXNvbiBvZiBhYm9ydFByb21p
c2UgbXVzdCBiZSB0aGUgZXJyb3IgdGhyb3duIGJ5IGFib3J0Jyk7Cit9LCAnV3JpdGFibGVTdHJl
YW0gaWYgc2lua1wncyBhYm9ydCB0aHJvd3MsIHRoZSBwcm9taXNlIHJldHVybmVkIGJ5IHdzLmFi
b3J0KCkgcmVqZWN0cycpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIGxldCByZXNvbHZlV3Jp
dGVQcm9taXNlOworICBjb25zdCB3cyA9IG5ldyBXcml0YWJsZVN0cmVhbSh7CisgICAgd3JpdGUo
KSB7CisgICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7CisgICAgICAgIHJlc29s
dmVXcml0ZVByb21pc2UgPSByZXNvbHZlOworICAgICAgfSk7CisgICAgfSwKKyAgICBhYm9ydCgp
IHsKKyAgICAgIHRocm93IGVycm9yMTsKKyAgICB9CisgIH0pOworCisgIGNvbnN0IHdyaXRlciA9
IHdzLmdldFdyaXRlcigpOworCisgIHdyaXRlci53cml0ZSgpLmNhdGNoKCgpID0+IHt9KTsKKyAg
cmV0dXJuIGZsdXNoQXN5bmNFdmVudHMoKS50aGVuKCgpID0+IHsKKyAgICBjb25zdCBhYm9ydFBy
b21pc2UgPSB3cml0ZXIuYWJvcnQodW5kZWZpbmVkKTsKKworICAgIHJlc29sdmVXcml0ZVByb21p
c2UoKTsKKyAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCBhYm9y
dFByb21pc2UsCisgICAgICAncmVqZWN0aW9uIHJlYXNvbiBvZiBhYm9ydFByb21pc2UgbXVzdCBi
ZSB0aGUgZXJyb3IgdGhyb3duIGJ5IGFib3J0Jyk7CisgIH0pOworfSwgJ1dyaXRhYmxlU3RyZWFt
IGlmIHNpbmtcJ3MgYWJvcnQgdGhyb3dzLCBmb3IgYW4gYWJvcnQgcGVyZm9ybWVkIGR1cmluZyBh
IHdyaXRlLCB0aGUgcHJvbWlzZSByZXR1cm5lZCBieSAnICsKKyAgICd3cy5hYm9ydCgpIHJlamVj
dHMnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0
YWJsZVN0cmVhbSgpOworICBjb25zdCB3cml0ZXIgPSB3cy5nZXRXcml0ZXIoKTsKKworICByZXR1
cm4gd3JpdGVyLmFib3J0KGVycm9yMSkudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X2FycmF5X2Vx
dWFscyh3cy5ldmVudHMsIFsnYWJvcnQnLCBlcnJvcjFdKTsKKyAgfSk7Cit9LCAnQWJvcnRpbmcg
YSBXcml0YWJsZVN0cmVhbSBwYXNzZXMgdGhyb3VnaCB0aGUgZ2l2ZW4gcmVhc29uJyk7CisKK3By
b21pc2VfdGVzdCh0ID0+IHsKKyAgY29uc3Qgd3MgPSBuZXcgV3JpdGFibGVTdHJlYW0oKTsKKyAg
Y29uc3Qgd3JpdGVyID0gd3MuZ2V0V3JpdGVyKCk7CisKKyAgY29uc3QgYWJvcnRQcm9taXNlID0g
d3JpdGVyLmFib3J0KGVycm9yMSk7CisKKyAgY29uc3QgZXZlbnRzID0gW107CisgIHdyaXRlci5y
ZWFkeS5jYXRjaCgoKSA9PiB7CisgICAgZXZlbnRzLnB1c2goJ3JlYWR5Jyk7CisgIH0pOworICB3
cml0ZXIuY2xvc2VkLmNhdGNoKCgpID0+IHsKKyAgICBldmVudHMucHVzaCgnY2xvc2VkJyk7Cisg
IH0pOworCisgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAgYWJvcnRQcm9taXNlLAorICAgIHBy
b21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMSwgd3JpdGVyLndyaXRlKCksICd3cml0aW5n
IHNob3VsZCByZWplY3Qgd2l0aCBlcnJvcjEnKSwKKyAgICBwcm9taXNlX3JlamVjdHNfZXhhY3Rs
eSh0LCBlcnJvcjEsIHdyaXRlci5jbG9zZSgpLCAnY2xvc2luZyBzaG91bGQgcmVqZWN0IHdpdGgg
ZXJyb3IxJyksCisgICAgcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCB3cml0ZXIu
cmVhZHksICdyZWFkeSBzaG91bGQgcmVqZWN0IHdpdGggZXJyb3IxJyksCisgICAgcHJvbWlzZV9y
ZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCB3cml0ZXIuY2xvc2VkLCAnY2xvc2VkIHNob3VsZCBy
ZWplY3Qgd2l0aCBlcnJvcjEnKQorICBdKS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfYXJyYXlf
ZXF1YWxzKFsncmVhZHknLCAnY2xvc2VkJ10sIGV2ZW50cywgJ3JlYWR5IHNob3VsZCByZWplY3Qg
YmVmb3JlIGNsb3NlZCcpOworICB9KTsKK30sICdBYm9ydGluZyBhIFdyaXRhYmxlU3RyZWFtIHB1
dHMgaXQgaW4gYW4gZXJyb3JlZCBzdGF0ZSB3aXRoIHRoZSBlcnJvciBwYXNzZWQgdG8gYWJvcnQo
KScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIGNvbnN0IHdzID0gbmV3IFdyaXRhYmxlU3Ry
ZWFtKCk7CisgIGNvbnN0IHdyaXRlciA9IHdzLmdldFdyaXRlcigpOworCisgIGNvbnN0IHdyaXRl
UHJvbWlzZSA9IHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMSwgd3JpdGVyLndyaXRl
KCdhJyksCisgICAgJ3dyaXRpbmcgc2hvdWxkIHJlamVjdCB3aXRoIGVycm9yMScpOworCisgIHdy
aXRlci5hYm9ydChlcnJvcjEpOworCisgIHJldHVybiB3cml0ZVByb21pc2U7Cit9LCAnQWJvcnRp
bmcgYSBXcml0YWJsZVN0cmVhbSBjYXVzZXMgYW55IG91dHN0YW5kaW5nIHdyaXRlKCkgcHJvbWlz
ZXMgdG8gYmUgcmVqZWN0ZWQgd2l0aCB0aGUgcmVhc29uIHN1cHBsaWVkJyk7CisKK3Byb21pc2Vf
dGVzdCh0ID0+IHsKKyAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSgpOworICBj
b25zdCB3cml0ZXIgPSB3cy5nZXRXcml0ZXIoKTsKKworICBjb25zdCBjbG9zZVByb21pc2UgPSB3
cml0ZXIuY2xvc2UoKTsKKyAgY29uc3QgYWJvcnRQcm9taXNlID0gd3JpdGVyLmFib3J0KGVycm9y
MSk7CisKKyAgcmV0dXJuIFByb21pc2UuYWxsKFsKKyAgICBwcm9taXNlX3JlamVjdHNfZXhhY3Rs
eSh0LCBlcnJvcjEsIHdyaXRlci5jbG9zZWQsICdjbG9zZWQgc2hvdWxkIHJlamVjdCB3aXRoIGVy
cm9yMScpLAorICAgIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMSwgY2xvc2VQcm9t
aXNlLCAnY2xvc2UoKSBzaG91bGQgcmVqZWN0IHdpdGggZXJyb3IxJyksCisgICAgYWJvcnRQcm9t
aXNlCisgIF0pLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRz
LCBbJ2Fib3J0JywgZXJyb3IxXSk7CisgIH0pOworfSwgJ0Nsb3NpbmcgYnV0IHRoZW4gaW1tZWRp
YXRlbHkgYWJvcnRpbmcgYSBXcml0YWJsZVN0cmVhbSBjYXVzZXMgdGhlIHN0cmVhbSB0byBlcnJv
cicpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworICBsZXQgcmVzb2x2ZUNsb3NlOworICBjb25z
dCB3cyA9IG5ldyBXcml0YWJsZVN0cmVhbSh7CisgICAgY2xvc2UoKSB7CisgICAgICByZXR1cm4g
bmV3IFByb21pc2UocmVzb2x2ZSA9PiB7CisgICAgICAgIHJlc29sdmVDbG9zZSA9IHJlc29sdmU7
CisgICAgICB9KTsKKyAgICB9CisgIH0pOworICBjb25zdCB3cml0ZXIgPSB3cy5nZXRXcml0ZXIo
KTsKKworICBjb25zdCBjbG9zZVByb21pc2UgPSB3cml0ZXIuY2xvc2UoKTsKKworICByZXR1cm4g
ZGVsYXkoMCkudGhlbigoKSA9PiB7CisgICAgY29uc3QgYWJvcnRQcm9taXNlID0gd3JpdGVyLmFi
b3J0KGVycm9yMSk7CisgICAgcmVzb2x2ZUNsb3NlKCk7CisgICAgcmV0dXJuIFByb21pc2UuYWxs
KFsKKyAgICAgIHdyaXRlci5jbG9zZWQsCisgICAgICBhYm9ydFByb21pc2UsCisgICAgICBjbG9z
ZVByb21pc2UKKyAgICBdKTsKKyAgfSk7Cit9LCAnQ2xvc2luZyBhIFdyaXRhYmxlU3RyZWFtIGFu
ZCBhYm9ydGluZyBpdCB3aGlsZSBpdCBjbG9zZXMgY2F1c2VzIHRoZSBzdHJlYW0gdG8gaWdub3Jl
IHRoZSBhYm9ydCBhdHRlbXB0Jyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisgIGNvbnN0IHdz
ID0gbmV3IFdyaXRhYmxlU3RyZWFtKCk7CisgIGNvbnN0IHdyaXRlciA9IHdzLmdldFdyaXRlcigp
OworCisgIHdyaXRlci5jbG9zZSgpOworCisgIHJldHVybiBkZWxheSgwKS50aGVuKCgpID0+IHdy
aXRlci5hYm9ydCgpKTsKK30sICdBYm9ydGluZyBhIFdyaXRhYmxlU3RyZWFtIGFmdGVyIGl0IGlz
IGNsb3NlZCBpcyBhIG5vLW9wJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgLy8gVGVzdGlu
ZyB0aGF0IHBlciBodHRwczovL2dpdGh1Yi5jb20vd2hhdHdnL3N0cmVhbXMvaXNzdWVzLzYyMCNp
c3N1ZWNvbW1lbnQtMjYzNDgzOTUzIHRoZSBmYWxsYmFjayB0byBjbG9zZSB3YXMKKyAgLy8gcmVt
b3ZlZC4KKworICAvLyBDYW5ub3QgdXNlIHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtIHNpbmNlIGl0
IGFsd2F5cyBoYXMgYW4gYWJvcnQKKyAgbGV0IGNsb3NlQ2FsbGVkID0gZmFsc2U7CisgIGNvbnN0
IHdzID0gbmV3IFdyaXRhYmxlU3RyZWFtKHsKKyAgICBjbG9zZSgpIHsKKyAgICAgIGNsb3NlQ2Fs
bGVkID0gdHJ1ZTsKKyAgICB9CisgIH0pOworCisgIGNvbnN0IHdyaXRlciA9IHdzLmdldFdyaXRl
cigpOworCisgIHdyaXRlci5hYm9ydChlcnJvcjEpOworCisgIHJldHVybiBwcm9taXNlX3JlamVj
dHNfZXhhY3RseSh0LCBlcnJvcjEsIHdyaXRlci5jbG9zZWQsICdjbG9zZWQgc2hvdWxkIHJlamVj
dCB3aXRoIGVycm9yMScpLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9mYWxzZShjbG9zZUNhbGxl
ZCwgJ2Nsb3NlIG11c3Qgbm90IGhhdmUgYmVlbiBjYWxsZWQnKTsKKyAgfSk7Cit9LCAnV3JpdGFi
bGVTdHJlYW0gc2hvdWxkIE5PVCBjYWxsIHVuZGVybHlpbmcgc2lua1wncyBjbG9zZSBpZiBubyBh
Ym9ydCBpcyBzdXBwbGllZCAoaGlzdG9yaWNhbCknKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsK
KyAgbGV0IHRoZW5DYWxsZWQgPSBmYWxzZTsKKyAgY29uc3Qgd3MgPSBuZXcgV3JpdGFibGVTdHJl
YW0oeworICAgIGFib3J0KCkgeworICAgICAgcmV0dXJuIHsKKyAgICAgICAgdGhlbihvbkZ1bGZp
bGxlZCkgeworICAgICAgICAgIHRoZW5DYWxsZWQgPSB0cnVlOworICAgICAgICAgIG9uRnVsZmls
bGVkKCk7CisgICAgICAgIH0KKyAgICAgIH07CisgICAgfQorICB9KTsKKyAgY29uc3Qgd3JpdGVy
ID0gd3MuZ2V0V3JpdGVyKCk7CisgIHJldHVybiB3cml0ZXIuYWJvcnQoKS50aGVuKCgpID0+IGFz
c2VydF90cnVlKHRoZW5DYWxsZWQsICd0aGVuKCkgc2hvdWxkIGJlIGNhbGxlZCcpKTsKK30sICdy
ZXR1cm5pbmcgYSB0aGVuYWJsZSBmcm9tIGFib3J0KCkgc2hvdWxkIHdvcmsnKTsKKworcHJvbWlz
ZV90ZXN0KHQgPT4geworICBjb25zdCB3cyA9IG5ldyBXcml0YWJsZVN0cmVhbSh7CisgICAgd3Jp
dGUoKSB7CisgICAgICByZXR1cm4gZmx1c2hBc3luY0V2ZW50cygpOworICAgIH0KKyAgfSk7Cisg
IGNvbnN0IHdyaXRlciA9IHdzLmdldFdyaXRlcigpOworICByZXR1cm4gd3JpdGVyLnJlYWR5LnRo
ZW4oKCkgPT4geworICAgIGNvbnN0IHdyaXRlUHJvbWlzZSA9IHdyaXRlci53cml0ZSgnYScpOwor
ICAgIHdyaXRlci5hYm9ydChlcnJvcjEpOworICAgIGxldCBjbG9zZWRSZWplY3RlZCA9IGZhbHNl
OworICAgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAgICB3cml0ZVByb21pc2UudGhlbigoKSA9
PiBhc3NlcnRfZmFsc2UoY2xvc2VkUmVqZWN0ZWQsICcuY2xvc2VkIHNob3VsZCBub3QgcmVzb2x2
ZSBiZWZvcmUgd3JpdGUoKScpKSwKKyAgICAgIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVy
cm9yMSwgd3JpdGVyLmNsb3NlZCwgJy5jbG9zZWQgc2hvdWxkIHJlamVjdCcpLnRoZW4oKCkgPT4g
eworICAgICAgICBjbG9zZWRSZWplY3RlZCA9IHRydWU7CisgICAgICB9KQorICAgIF0pOworICB9
KTsKK30sICcuY2xvc2VkIHNob3VsZCBub3QgcmVzb2x2ZSBiZWZvcmUgZnVsZmlsbGVkIHdyaXRl
KCknKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBjb25zdCB3cyA9IG5ldyBXcml0YWJsZVN0
cmVhbSh7CisgICAgd3JpdGUoKSB7CisgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyb3Ix
KTsKKyAgICB9CisgIH0pOworICBjb25zdCB3cml0ZXIgPSB3cy5nZXRXcml0ZXIoKTsKKyAgcmV0
dXJuIHdyaXRlci5yZWFkeS50aGVuKCgpID0+IHsKKyAgICBjb25zdCB3cml0ZVByb21pc2UgPSB3
cml0ZXIud3JpdGUoJ2EnKTsKKyAgICBjb25zdCBhYm9ydFByb21pc2UgPSB3cml0ZXIuYWJvcnQo
ZXJyb3IyKTsKKyAgICBsZXQgY2xvc2VkUmVqZWN0ZWQgPSBmYWxzZTsKKyAgICByZXR1cm4gUHJv
bWlzZS5hbGwoWworICAgICAgcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCB3cml0
ZVByb21pc2UsICd3cml0ZSgpIHNob3VsZCByZWplY3QnKQorICAgICAgICAgIC50aGVuKCgpID0+
IGFzc2VydF9mYWxzZShjbG9zZWRSZWplY3RlZCwgJy5jbG9zZWQgc2hvdWxkIG5vdCByZXNvbHZl
IGJlZm9yZSB3cml0ZSgpJykpLAorICAgICAgcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJy
b3IyLCB3cml0ZXIuY2xvc2VkLCAnLmNsb3NlZCBzaG91bGQgcmVqZWN0JykKKyAgICAgICAgICAu
dGhlbigoKSA9PiB7CisgICAgICAgICAgICBjbG9zZWRSZWplY3RlZCA9IHRydWU7CisgICAgICAg
ICAgfSksCisgICAgICBhYm9ydFByb21pc2UKKyAgICBdKTsKKyAgfSk7Cit9LCAnLmNsb3NlZCBz
aG91bGQgbm90IHJlc29sdmUgYmVmb3JlIHJlamVjdGVkIHdyaXRlKCk7IHdyaXRlKCkgZXJyb3Ig
c2hvdWxkIG5vdCBvdmVyd3JpdGUgYWJvcnQoKSBlcnJvcicpOworCitwcm9taXNlX3Rlc3QodCA9
PiB7CisgIGNvbnN0IHdzID0gbmV3IFdyaXRhYmxlU3RyZWFtKHsKKyAgICB3cml0ZSgpIHsKKyAg
ICAgIHJldHVybiBmbHVzaEFzeW5jRXZlbnRzKCk7CisgICAgfQorICB9LCBuZXcgQ291bnRRdWV1
aW5nU3RyYXRlZ3koeyBoaWdoV2F0ZXJNYXJrOiA0IH0pKTsKKyAgY29uc3Qgd3JpdGVyID0gd3Mu
Z2V0V3JpdGVyKCk7CisgIHJldHVybiB3cml0ZXIucmVhZHkudGhlbigoKSA9PiB7CisgICAgY29u
c3Qgc2V0dGxlbWVudE9yZGVyID0gW107CisgICAgcmV0dXJuIFByb21pc2UuYWxsKFsKKyAgICAg
IHdyaXRlci53cml0ZSgnMScpLnRoZW4oKCkgPT4gc2V0dGxlbWVudE9yZGVyLnB1c2goMSkpLAor
ICAgICAgcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCB3cml0ZXIud3JpdGUoJzIn
KSwgJ2ZpcnN0IHF1ZXVlZCB3cml0ZSBzaG91bGQgYmUgcmVqZWN0ZWQnKQorICAgICAgICAgIC50
aGVuKCgpID0+IHNldHRsZW1lbnRPcmRlci5wdXNoKDIpKSwKKyAgICAgIHByb21pc2VfcmVqZWN0
c19leGFjdGx5KHQsIGVycm9yMSwgd3JpdGVyLndyaXRlKCczJyksICdzZWNvbmQgcXVldWVkIHdy
aXRlIHNob3VsZCBiZSByZWplY3RlZCcpCisgICAgICAgICAgLnRoZW4oKCkgPT4gc2V0dGxlbWVu
dE9yZGVyLnB1c2goMykpLAorICAgICAgd3JpdGVyLmFib3J0KGVycm9yMSkKKyAgICBdKS50aGVu
KCgpID0+IGFzc2VydF9hcnJheV9lcXVhbHMoWzEsIDIsIDNdLCBzZXR0bGVtZW50T3JkZXIsICd3
cml0ZXMgc2hvdWxkIGJlIHNhdGlzZmllZCBpbiBvcmRlcicpKTsKKyAgfSk7Cit9LCAnd3JpdGVz
IHNob3VsZCBiZSBzYXRpc2ZpZWQgaW4gb3JkZXIgd2hlbiBhYm9ydGluZycpOworCitwcm9taXNl
X3Rlc3QodCA9PiB7CisgIGNvbnN0IHdzID0gbmV3IFdyaXRhYmxlU3RyZWFtKHsKKyAgICB3cml0
ZSgpIHsKKyAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcjEpOworICAgIH0KKyAgfSwg
bmV3IENvdW50UXVldWluZ1N0cmF0ZWd5KHsgaGlnaFdhdGVyTWFyazogNCB9KSk7CisgIGNvbnN0
IHdyaXRlciA9IHdzLmdldFdyaXRlcigpOworICByZXR1cm4gd3JpdGVyLnJlYWR5LnRoZW4oKCkg
PT4geworICAgIGNvbnN0IHNldHRsZW1lbnRPcmRlciA9IFtdOworICAgIHJldHVybiBQcm9taXNl
LmFsbChbCisgICAgICBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIHdyaXRlci53
cml0ZSgnMScpLCAnaW4tZmxpZ2h0IHdyaXRlIHNob3VsZCBiZSByZWplY3RlZCcpCisgICAgICAg
ICAgLnRoZW4oKCkgPT4gc2V0dGxlbWVudE9yZGVyLnB1c2goMSkpLAorICAgICAgcHJvbWlzZV9y
ZWplY3RzX2V4YWN0bHkodCwgZXJyb3IyLCB3cml0ZXIud3JpdGUoJzInKSwgJ2ZpcnN0IHF1ZXVl
ZCB3cml0ZSBzaG91bGQgYmUgcmVqZWN0ZWQnKQorICAgICAgICAgIC50aGVuKCgpID0+IHNldHRs
ZW1lbnRPcmRlci5wdXNoKDIpKSwKKyAgICAgIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVy
cm9yMiwgd3JpdGVyLndyaXRlKCczJyksICdzZWNvbmQgcXVldWVkIHdyaXRlIHNob3VsZCBiZSBy
ZWplY3RlZCcpCisgICAgICAgICAgLnRoZW4oKCkgPT4gc2V0dGxlbWVudE9yZGVyLnB1c2goMykp
LAorICAgICAgd3JpdGVyLmFib3J0KGVycm9yMikKKyAgICBdKS50aGVuKCgpID0+IGFzc2VydF9h
cnJheV9lcXVhbHMoWzEsIDIsIDNdLCBzZXR0bGVtZW50T3JkZXIsICd3cml0ZXMgc2hvdWxkIGJl
IHNhdGlzZmllZCBpbiBvcmRlcicpKTsKKyAgfSk7Cit9LCAnd3JpdGVzIHNob3VsZCBiZSBzYXRp
c2ZpZWQgaW4gb3JkZXIgYWZ0ZXIgcmVqZWN0ZWQgd3JpdGUgd2hlbiBhYm9ydGluZycpOworCitw
cm9taXNlX3Rlc3QodCA9PiB7CisgIGNvbnN0IHdzID0gbmV3IFdyaXRhYmxlU3RyZWFtKHsKKyAg
ICB3cml0ZSgpIHsKKyAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcjEpOworICAgIH0K
KyAgfSk7CisgIGNvbnN0IHdyaXRlciA9IHdzLmdldFdyaXRlcigpOworICByZXR1cm4gd3JpdGVy
LnJlYWR5LnRoZW4oKCkgPT4geworICAgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAgICBwcm9t
aXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIHdyaXRlci53cml0ZSgnYScpLCAnd3JpdGVy
LndyaXRlKCkgc2hvdWxkIHJlamVjdCB3aXRoIGVycm9yIGZyb20gdW5kZXJseWluZyB3cml0ZSgp
JyksCisgICAgICBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjIsIHdyaXRlci5jbG9z
ZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3dyaXRlci5jbG9zZSgpIHNob3Vs
ZCByZWplY3Qgd2l0aCBlcnJvciBmcm9tIHVuZGVybHlpbmcgd3JpdGUoKScpLAorICAgICAgd3Jp
dGVyLmFib3J0KGVycm9yMikKKyAgICBdKTsKKyAgfSk7Cit9LCAnY2xvc2UoKSBzaG91bGQgcmVq
ZWN0IHdpdGggYWJvcnQgcmVhc29uIHdoeSBhYm9ydCgpIGlzIGZpcnN0IGVycm9yJyk7CisKK3By
b21pc2VfdGVzdCgoKSA9PiB7CisgIGxldCByZXNvbHZlV3JpdGU7CisgIGNvbnN0IHdzID0gcmVj
b3JkaW5nV3JpdGFibGVTdHJlYW0oeworICAgIHdyaXRlKCkgeworICAgICAgcmV0dXJuIG5ldyBQ
cm9taXNlKHJlc29sdmUgPT4geworICAgICAgICByZXNvbHZlV3JpdGUgPSByZXNvbHZlOworICAg
ICAgfSk7CisgICAgfQorICB9KTsKKworICBjb25zdCB3cml0ZXIgPSB3cy5nZXRXcml0ZXIoKTsK
KyAgcmV0dXJuIHdyaXRlci5yZWFkeS50aGVuKCgpID0+IHsKKyAgICB3cml0ZXIud3JpdGUoJ2En
KTsKKyAgICBjb25zdCBhYm9ydFByb21pc2UgPSB3cml0ZXIuYWJvcnQoJ2InKTsKKyAgICByZXR1
cm4gZmx1c2hBc3luY0V2ZW50cygpLnRoZW4oKCkgPT4geworICAgICAgYXNzZXJ0X2FycmF5X2Vx
dWFscyh3cy5ldmVudHMsIFsnd3JpdGUnLCAnYSddLCAnYWJvcnQgc2hvdWxkIG5vdCBiZSBjYWxs
ZWQgd2hpbGUgd3JpdGUgaXMgaW4tZmxpZ2h0Jyk7CisgICAgICByZXNvbHZlV3JpdGUoKTsKKyAg
ICAgIHJldHVybiBhYm9ydFByb21pc2UudGhlbigoKSA9PiB7CisgICAgICAgIGFzc2VydF9hcnJh
eV9lcXVhbHMod3MuZXZlbnRzLCBbJ3dyaXRlJywgJ2EnLCAnYWJvcnQnLCAnYiddLCAnYWJvcnQg
c2hvdWxkIGJlIGNhbGxlZCBhZnRlciB0aGUgd3JpdGUgZmluaXNoZXMnKTsKKyAgICAgIH0pOwor
ICAgIH0pOworICB9KTsKK30sICd1bmRlcmx5aW5nIGFib3J0KCkgc2hvdWxkIG5vdCBiZSBjYWxs
ZWQgdW50aWwgdW5kZXJseWluZyB3cml0ZSgpIGNvbXBsZXRlcycpOworCitwcm9taXNlX3Rlc3Qo
KCkgPT4geworICBsZXQgcmVzb2x2ZUNsb3NlOworICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRh
YmxlU3RyZWFtKHsKKyAgICBjbG9zZSgpIHsKKyAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNv
bHZlID0+IHsKKyAgICAgICAgcmVzb2x2ZUNsb3NlID0gcmVzb2x2ZTsKKyAgICAgIH0pOworICAg
IH0KKyAgfSk7CisKKyAgY29uc3Qgd3JpdGVyID0gd3MuZ2V0V3JpdGVyKCk7CisgIHJldHVybiB3
cml0ZXIucmVhZHkudGhlbigoKSA9PiB7CisgICAgd3JpdGVyLmNsb3NlKCk7CisgICAgY29uc3Qg
YWJvcnRQcm9taXNlID0gd3JpdGVyLmFib3J0KCk7CisgICAgcmV0dXJuIGZsdXNoQXN5bmNFdmVu
dHMoKS50aGVuKCgpID0+IHsKKyAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBb
J2Nsb3NlJ10sICdhYm9ydCBzaG91bGQgbm90IGJlIGNhbGxlZCB3aGlsZSBjbG9zZSBpcyBpbi1m
bGlnaHQnKTsKKyAgICAgIHJlc29sdmVDbG9zZSgpOworICAgICAgcmV0dXJuIGFib3J0UHJvbWlz
ZS50aGVuKCgpID0+IHsKKyAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsn
Y2xvc2UnXSwgJ2Fib3J0IHNob3VsZCBub3QgYmUgY2FsbGVkJyk7CisgICAgICB9KTsKKyAgICB9
KTsKKyAgfSk7Cit9LCAndW5kZXJseWluZyBhYm9ydCgpIHNob3VsZCBub3QgYmUgY2FsbGVkIGlm
IHVuZGVybHlpbmcgY2xvc2UoKSBoYXMgc3RhcnRlZCcpOworCitwcm9taXNlX3Rlc3QodCA9PiB7
CisgIGxldCByZWplY3RDbG9zZTsKKyAgbGV0IGFib3J0Q2FsbGVkID0gZmFsc2U7CisgIGNvbnN0
IHdzID0gbmV3IFdyaXRhYmxlU3RyZWFtKHsKKyAgICBjbG9zZSgpIHsKKyAgICAgIHJldHVybiBu
ZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CisgICAgICAgIHJlamVjdENsb3NlID0g
cmVqZWN0OworICAgICAgfSk7CisgICAgfSwKKyAgICBhYm9ydCgpIHsKKyAgICAgIGFib3J0Q2Fs
bGVkID0gdHJ1ZTsKKyAgICB9CisgIH0pOworCisgIGNvbnN0IHdyaXRlciA9IHdzLmdldFdyaXRl
cigpOworICByZXR1cm4gd3JpdGVyLnJlYWR5LnRoZW4oKCkgPT4geworICAgIGNvbnN0IGNsb3Nl
UHJvbWlzZSA9IHdyaXRlci5jbG9zZSgpOworICAgIGNvbnN0IGFib3J0UHJvbWlzZSA9IHdyaXRl
ci5hYm9ydCgpOworICAgIHJldHVybiBmbHVzaEFzeW5jRXZlbnRzKCkudGhlbigoKSA9PiB7Cisg
ICAgICBhc3NlcnRfZmFsc2UoYWJvcnRDYWxsZWQsICd1bmRlcmx5aW5nIGFib3J0IHNob3VsZCBu
b3QgYmUgY2FsbGVkIHdoaWxlIGNsb3NlIGlzIGluLWZsaWdodCcpOworICAgICAgcmVqZWN0Q2xv
c2UoZXJyb3IxKTsKKyAgICAgIHJldHVybiBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJv
cjEsIGFib3J0UHJvbWlzZSwgJ2Fib3J0IHNob3VsZCByZWplY3Qgd2l0aCB0aGUgc2FtZSByZWFz
b24nKS50aGVuKCgpID0+IHsKKyAgICAgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19leGFjdGx5
KHQsIGVycm9yMSwgY2xvc2VQcm9taXNlLCAnY2xvc2Ugc2hvdWxkIHJlamVjdCB3aXRoIHRoZSBz
YW1lIHJlYXNvbicpOworICAgICAgfSkudGhlbigoKSA9PiB7CisgICAgICAgIGFzc2VydF9mYWxz
ZShhYm9ydENhbGxlZCwgJ3VuZGVybHlpbmcgYWJvcnQgc2hvdWxkIG5vdCBiZSBjYWxsZWQgYWZ0
ZXIgY2xvc2UgY29tcGxldGVzJyk7CisgICAgICB9KTsKKyAgICB9KTsKKyAgfSk7Cit9LCAnaWYg
dW5kZXJseWluZyBjbG9zZSgpIGhhcyBzdGFydGVkIGFuZCB0aGVuIHJlamVjdHMsIHRoZSBhYm9y
dCgpIGFuZCBjbG9zZSgpIHByb21pc2VzIHNob3VsZCByZWplY3Qgd2l0aCB0aGUgJyArCisgICAn
dW5kZXJseWluZyBjbG9zZSByZWplY3Rpb24gcmVhc29uJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+
IHsKKyAgbGV0IHJlc29sdmVXcml0ZTsKKyAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0
cmVhbSh7CisgICAgd3JpdGUoKSB7CisgICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9
PiB7CisgICAgICAgIHJlc29sdmVXcml0ZSA9IHJlc29sdmU7CisgICAgICB9KTsKKyAgICB9Cisg
IH0pOworCisgIGNvbnN0IHdyaXRlciA9IHdzLmdldFdyaXRlcigpOworICByZXR1cm4gd3JpdGVy
LnJlYWR5LnRoZW4oKCkgPT4geworICAgIHdyaXRlci53cml0ZSgnYScpOworICAgIGNvbnN0IGNs
b3NlUHJvbWlzZSA9IHdyaXRlci5jbG9zZSgpOworICAgIGNvbnN0IGFib3J0UHJvbWlzZSA9IHdy
aXRlci5hYm9ydChlcnJvcjEpOworCisgICAgcmV0dXJuIGZsdXNoQXN5bmNFdmVudHMoKS50aGVu
KCgpID0+IHsKKyAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ3dyaXRlJywg
J2EnXSwgJ2Fib3J0IHNob3VsZCBub3QgYmUgY2FsbGVkIHdoaWxlIHdyaXRlIGlzIGluLWZsaWdo
dCcpOworICAgICAgcmVzb2x2ZVdyaXRlKCk7CisgICAgICByZXR1cm4gYWJvcnRQcm9taXNlLnRo
ZW4oKCkgPT4geworICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWyd3cml0
ZScsICdhJywgJ2Fib3J0JywgZXJyb3IxXSwgJ2Fib3J0IHNob3VsZCBiZSBjYWxsZWQgYWZ0ZXIg
d3JpdGUgY29tcGxldGVzJyk7CisgICAgICAgIHJldHVybiBwcm9taXNlX3JlamVjdHNfZXhhY3Rs
eSh0LCBlcnJvcjEsIGNsb3NlUHJvbWlzZSwgJ3Byb21pc2UgcmV0dXJuZWQgYnkgY2xvc2UoKSBz
aG91bGQgYmUgcmVqZWN0ZWQnKTsKKyAgICAgIH0pOworICAgIH0pOworICB9KTsKK30sICdhbiBh
Ym9ydCgpIHRoYXQgaGFwcGVucyBkdXJpbmcgYSB3cml0ZSgpIHNob3VsZCB0cmlnZ2VyIHRoZSB1
bmRlcmx5aW5nIGFib3J0KCkgZXZlbiB3aXRoIGEgY2xvc2UoKSBxdWV1ZWQnKTsKKworcHJvbWlz
ZV90ZXN0KHQgPT4geworICBjb25zdCB3cyA9IG5ldyBXcml0YWJsZVN0cmVhbSh7CisgICAgd3Jp
dGUoKSB7CisgICAgICByZXR1cm4gbmV3IFByb21pc2UoKCkgPT4ge30pOworICAgIH0KKyAgfSk7
CisKKyAgY29uc3Qgd3JpdGVyID0gd3MuZ2V0V3JpdGVyKCk7CisgIHJldHVybiB3cml0ZXIucmVh
ZHkudGhlbigoKSA9PiB7CisgICAgd3JpdGVyLndyaXRlKCdhJyk7CisgICAgd3JpdGVyLmFib3J0
KGVycm9yMSk7CisgICAgd3JpdGVyLnJlbGVhc2VMb2NrKCk7CisgICAgY29uc3Qgd3JpdGVyMiA9
IHdzLmdldFdyaXRlcigpOworICAgIHJldHVybiBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBl
cnJvcjEsIHdyaXRlcjIucmVhZHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICdyZWFkeSBvZiB0aGUgc2Vjb25kIHdyaXRlciBzaG91bGQgYmUgcmVqZWN0ZWQgd2l0aCBlcnJv
cjEnKTsKKyAgfSk7Cit9LCAnaWYgYSB3cml0ZXIgaXMgY3JlYXRlZCBmb3IgYSBzdHJlYW0gd2l0
aCBhIHBlbmRpbmcgYWJvcnQsIGl0cyByZWFkeSBzaG91bGQgYmUgcmVqZWN0ZWQgd2l0aCB0aGUg
YWJvcnQgZXJyb3InKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgY29uc3Qgd3MgPSBuZXcg
V3JpdGFibGVTdHJlYW0oKTsKKyAgY29uc3Qgd3JpdGVyID0gd3MuZ2V0V3JpdGVyKCk7CisgIHJl
dHVybiB3cml0ZXIucmVhZHkudGhlbigoKSA9PiB7CisgICAgY29uc3QgY2xvc2VQcm9taXNlID0g
d3JpdGVyLmNsb3NlKCk7CisgICAgY29uc3QgYWJvcnRQcm9taXNlID0gd3JpdGVyLmFib3J0KCk7
CisgICAgY29uc3QgZXZlbnRzID0gW107CisgICAgcmV0dXJuIFByb21pc2UuYWxsKFsKKyAgICAg
IGNsb3NlUHJvbWlzZS50aGVuKCgpID0+IHsgZXZlbnRzLnB1c2goJ2Nsb3NlJyk7IH0pLAorICAg
ICAgYWJvcnRQcm9taXNlLnRoZW4oKCkgPT4geyBldmVudHMucHVzaCgnYWJvcnQnKTsgfSkKKyAg
ICBdKS50aGVuKCgpID0+IHsKKyAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoZXZlbnRzLCBbJ2Ns
b3NlJywgJ2Fib3J0J10pOworICAgIH0pOworICB9KTsKK30sICd3cml0ZXIgY2xvc2UoKSBwcm9t
aXNlIHNob3VsZCByZXNvbHZlIGJlZm9yZSBhYm9ydCgpIHByb21pc2UnKTsKKworcHJvbWlzZV90
ZXN0KHQgPT4geworICBjb25zdCB3cyA9IG5ldyBXcml0YWJsZVN0cmVhbSh7CisgICAgd3JpdGUo
Y2h1bmssIGNvbnRyb2xsZXIpIHsKKyAgICAgIGNvbnRyb2xsZXIuZXJyb3IoZXJyb3IxKTsKKyAg
ICAgIHJldHVybiBuZXcgUHJvbWlzZSgoKSA9PiB7fSk7CisgICAgfQorICB9KTsKKyAgY29uc3Qg
d3JpdGVyID0gd3MuZ2V0V3JpdGVyKCk7CisgIHJldHVybiB3cml0ZXIucmVhZHkudGhlbigoKSA9
PiB7CisgICAgd3JpdGVyLndyaXRlKCdhJyk7CisgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19l
eGFjdGx5KHQsIGVycm9yMSwgd3JpdGVyLnJlYWR5LCAnd3JpdGVyLnJlYWR5IHNob3VsZCByZWpl
Y3QnKTsKKyAgfSk7Cit9LCAnd3JpdGVyLnJlYWR5IHNob3VsZCByZWplY3Qgb24gY29udHJvbGxl
ciBlcnJvciB3aXRob3V0IHdhaXRpbmcgZm9yIHVuZGVybHlpbmcgd3JpdGUnKTsKKworcHJvbWlz
ZV90ZXN0KHQgPT4geworICBsZXQgcmVqZWN0V3JpdGU7CisgIGNvbnN0IHdzID0gbmV3IFdyaXRh
YmxlU3RyZWFtKHsKKyAgICB3cml0ZSgpIHsKKyAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVz
b2x2ZSwgcmVqZWN0KSA9PiB7CisgICAgICAgIHJlamVjdFdyaXRlID0gcmVqZWN0OworICAgICAg
fSk7CisgICAgfQorICB9KTsKKworICBsZXQgd3JpdGVQcm9taXNlOworICBsZXQgYWJvcnRQcm9t
aXNlOworCisgIGNvbnN0IGV2ZW50cyA9IFtdOworCisgIGNvbnN0IHdyaXRlciA9IHdzLmdldFdy
aXRlcigpOworCisgIHdyaXRlci5jbG9zZWQuY2F0Y2goKCkgPT4geworICAgIGV2ZW50cy5wdXNo
KCdjbG9zZWQnKTsKKyAgfSk7CisKKyAgLy8gV2FpdCBmb3Igd3MgdG8gc3RhcnQKKyAgcmV0dXJu
IGZsdXNoQXN5bmNFdmVudHMoKS50aGVuKCgpID0+IHsKKyAgICB3cml0ZVByb21pc2UgPSB3cml0
ZXIud3JpdGUoJ2EnKTsKKyAgICB3cml0ZVByb21pc2UuY2F0Y2goKCkgPT4geworICAgICAgZXZl
bnRzLnB1c2goJ3dyaXRlUHJvbWlzZScpOworICAgIH0pOworCisgICAgYWJvcnRQcm9taXNlID0g
d3JpdGVyLmFib3J0KGVycm9yMSk7CisgICAgYWJvcnRQcm9taXNlLnRoZW4oKCkgPT4geworICAg
ICAgZXZlbnRzLnB1c2goJ2Fib3J0UHJvbWlzZScpOworICAgIH0pOworCisgICAgY29uc3Qgd3Jp
dGVQcm9taXNlMiA9IHdyaXRlci53cml0ZSgnYScpOworCisgICAgcmV0dXJuIFByb21pc2UuYWxs
KFsKKyAgICAgIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMSwgd3JpdGVQcm9taXNl
MiwgJ3dyaXRlUHJvbWlzZTIgbXVzdCByZWplY3Qgd2l0aCB0aGUgZXJyb3IgZnJvbSBhYm9ydCcp
LAorICAgICAgcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCB3cml0ZXIucmVhZHks
ICd3cml0ZXIucmVhZHkgbXVzdCByZWplY3Qgd2l0aCB0aGUgZXJyb3IgZnJvbSBhYm9ydCcpLAor
ICAgICAgZmx1c2hBc3luY0V2ZW50cygpCisgICAgXSk7CisgIH0pLnRoZW4oKCkgPT4geworICAg
IGFzc2VydF9hcnJheV9lcXVhbHMoZXZlbnRzLCBbXSwgJ3dyaXRlUHJvbWlzZSwgYWJvcnRQcm9t
aXNlIGFuZCB3cml0ZXIuY2xvc2VkIG11c3Qgbm90IGJlIHJlamVjdGVkIHlldCcpOworCisgICAg
cmVqZWN0V3JpdGUoZXJyb3IyKTsKKworICAgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAgICBw
cm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjIsIHdyaXRlUHJvbWlzZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICd3cml0ZVByb21pc2UgbXVzdCByZWplY3Qgd2l0aCB0aGUg
ZXJyb3IgcmV0dXJuZWQgZnJvbSB0aGUgc2lua1wncyB3cml0ZSBtZXRob2QnKSwKKyAgICAgIGFi
b3J0UHJvbWlzZSwKKyAgICAgIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMSwgd3Jp
dGVyLmNsb3NlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd3cml0ZXIuY2xvc2Vk
IG11c3QgcmVqZWN0IHdpdGggdGhlIGVycm9yIGZyb20gYWJvcnQnKSwKKyAgICAgIGZsdXNoQXN5
bmNFdmVudHMoKQorICAgIF0pOworICB9KS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfYXJyYXlf
ZXF1YWxzKGV2ZW50cywgWyd3cml0ZVByb21pc2UnLCAnYWJvcnRQcm9taXNlJywgJ2Nsb3NlZCdd
LAorICAgICAgICAgICAgICAgICAgICAgICAgJ3dyaXRlUHJvbWlzZSwgYWJvcnRQcm9taXNlIGFu
ZCB3cml0ZXIuY2xvc2VkIG11c3Qgc2V0dGxlJyk7CisKKyAgICBjb25zdCB3cml0ZVByb21pc2Uz
ID0gd3JpdGVyLndyaXRlKCdhJyk7CisKKyAgICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAgICAg
cHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCB3cml0ZVByb21pc2UzLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ3dyaXRlUHJvbWlzZTMgbXVzdCByZWplY3Qgd2l0aCB0
aGUgZXJyb3IgZnJvbSBhYm9ydCcpLAorICAgICAgcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwg
ZXJyb3IxLCB3cml0ZXIucmVhZHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnd3Jp
dGVyLnJlYWR5IG11c3QgYmUgc3RpbGwgcmVqZWN0ZWQgd2l0aCB0aGUgZXJyb3IgaW5kaWNhdGlu
ZyBhYm9ydCcpCisgICAgXSk7CisgIH0pLnRoZW4oKCkgPT4geworICAgIHdyaXRlci5yZWxlYXNl
TG9jaygpOworCisgICAgcmV0dXJuIFByb21pc2UuYWxsKFsKKyAgICAgIHByb21pc2VfcmVqZWN0
c19qcyh0LCBUeXBlRXJyb3IsIHdyaXRlci5yZWFkeSwKKyAgICAgICAgICAgICAgICAgICAgICAn
d3JpdGVyLnJlYWR5IG11c3QgYmUgcmVqZWN0ZWQgd2l0aCBhbiBlcnJvciBpbmRpY2F0aW5nIHJl
bGVhc2UnKSwKKyAgICAgIHByb21pc2VfcmVqZWN0c19qcyh0LCBUeXBlRXJyb3IsIHdyaXRlci5j
bG9zZWQsCisgICAgICAgICAgICAgICAgICAgICAgJ3dyaXRlci5jbG9zZWQgbXVzdCBiZSByZWpl
Y3RlZCB3aXRoIGFuIGVycm9yIGluZGljYXRpbmcgcmVsZWFzZScpCisgICAgXSk7CisgIH0pOwor
fSwgJ3dyaXRlci5hYm9ydCgpIHdoaWxlIHRoZXJlIGlzIGFuIGluLWZsaWdodCB3cml0ZSwgYW5k
IHRoZW4gZmluaXNoIHRoZSB3cml0ZSB3aXRoIHJlamVjdGlvbicpOworCitwcm9taXNlX3Rlc3Qo
dCA9PiB7CisgIGxldCByZXNvbHZlV3JpdGU7CisgIGxldCBjb250cm9sbGVyOworICBjb25zdCB3
cyA9IG5ldyBXcml0YWJsZVN0cmVhbSh7CisgICAgd3JpdGUoY2h1bmssIGMpIHsKKyAgICAgIGNv
bnRyb2xsZXIgPSBjOworICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4geworICAg
ICAgICByZXNvbHZlV3JpdGUgPSByZXNvbHZlOworICAgICAgfSk7CisgICAgfQorICB9KTsKKwor
ICBsZXQgd3JpdGVQcm9taXNlOworICBsZXQgYWJvcnRQcm9taXNlOworCisgIGNvbnN0IGV2ZW50
cyA9IFtdOworCisgIGNvbnN0IHdyaXRlciA9IHdzLmdldFdyaXRlcigpOworCisgIHdyaXRlci5j
bG9zZWQuY2F0Y2goKCkgPT4geworICAgIGV2ZW50cy5wdXNoKCdjbG9zZWQnKTsKKyAgfSk7CisK
KyAgLy8gV2FpdCBmb3Igd3MgdG8gc3RhcnQKKyAgcmV0dXJuIGZsdXNoQXN5bmNFdmVudHMoKS50
aGVuKCgpID0+IHsKKyAgICB3cml0ZVByb21pc2UgPSB3cml0ZXIud3JpdGUoJ2EnKTsKKyAgICB3
cml0ZVByb21pc2UudGhlbigoKSA9PiB7CisgICAgICBldmVudHMucHVzaCgnd3JpdGVQcm9taXNl
Jyk7CisgICAgfSk7CisKKyAgICBhYm9ydFByb21pc2UgPSB3cml0ZXIuYWJvcnQoZXJyb3IxKTsK
KyAgICBhYm9ydFByb21pc2UudGhlbigoKSA9PiB7CisgICAgICBldmVudHMucHVzaCgnYWJvcnRQ
cm9taXNlJyk7CisgICAgfSk7CisKKyAgICBjb25zdCB3cml0ZVByb21pc2UyID0gd3JpdGVyLndy
aXRlKCdhJyk7CisKKyAgICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAgICAgcHJvbWlzZV9yZWpl
Y3RzX2V4YWN0bHkodCwgZXJyb3IxLCB3cml0ZVByb21pc2UyLCAnd3JpdGVQcm9taXNlMiBtdXN0
IHJlamVjdCB3aXRoIHRoZSBlcnJvciBmcm9tIGFib3J0JyksCisgICAgICBwcm9taXNlX3JlamVj
dHNfZXhhY3RseSh0LCBlcnJvcjEsIHdyaXRlci5yZWFkeSwgJ3dyaXRlci5yZWFkeSBtdXN0IHJl
amVjdCB3aXRoIHRoZSBlcnJvciBmcm9tIGFib3J0JyksCisgICAgICBmbHVzaEFzeW5jRXZlbnRz
KCkKKyAgICBdKTsKKyAgfSkudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhl
dmVudHMsIFtdLCAnd3JpdGVQcm9taXNlLCBhYm9ydFByb21pc2UgYW5kIHdyaXRlci5jbG9zZWQg
bXVzdCBub3QgYmUgZnVsZmlsbGVkL3JlamVjdGVkIHlldCcpOworCisgICAgLy8gVGhpcyBlcnJv
ciBpcyB0b28gbGF0ZSB0byBjaGFuZ2UgYW55dGhpbmcuIGFib3J0KCkgaGFzIGFscmVhZHkgY2hh
bmdlZCB0aGUgc3RyZWFtIHN0YXRlIHRvICdlcnJvcmluZycuCisgICAgY29udHJvbGxlci5lcnJv
cihlcnJvcjIpOworCisgICAgY29uc3Qgd3JpdGVQcm9taXNlMyA9IHdyaXRlci53cml0ZSgnYScp
OworCisgICAgcmV0dXJuIFByb21pc2UuYWxsKFsKKyAgICAgIHByb21pc2VfcmVqZWN0c19leGFj
dGx5KHQsIGVycm9yMSwgd3JpdGVQcm9taXNlMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICd3cml0ZVByb21pc2UzIG11c3QgcmVqZWN0IHdpdGggdGhlIGVycm9yIGZyb20gYWJvcnQn
KSwKKyAgICAgIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMSwgd3JpdGVyLnJlYWR5
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3dyaXRlci5yZWFkeSBtdXN0IGJlIHN0
aWxsIHJlamVjdGVkIHdpdGggdGhlIGVycm9yIGluZGljYXRpbmcgYWJvcnQnKSwKKyAgICAgIGZs
dXNoQXN5bmNFdmVudHMoKQorICAgIF0pOworICB9KS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRf
YXJyYXlfZXF1YWxzKAorICAgICAgICBldmVudHMsIFtdLAorICAgICAgICAnd3JpdGVQcm9taXNl
LCBhYm9ydFByb21pc2UgYW5kIHdyaXRlci5jbG9zZWQgbXVzdCBub3QgYmUgZnVsZmlsbGVkL3Jl
amVjdGVkIHlldCBldmVuIGFmdGVyICcgKworICAgICAgICAgICAgJ2NvbnRyb2xsZXIuZXJyb3Io
KSBjYWxsJyk7CisKKyAgICByZXNvbHZlV3JpdGUoKTsKKworICAgIHJldHVybiBQcm9taXNlLmFs
bChbCisgICAgICB3cml0ZVByb21pc2UsCisgICAgICBhYm9ydFByb21pc2UsCisgICAgICBwcm9t
aXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIHdyaXRlci5jbG9zZWQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnd3JpdGVyLmNsb3NlZCBtdXN0IHJlamVjdCB3aXRoIHRoZSBl
cnJvciBmcm9tIGFib3J0JyksCisgICAgICBmbHVzaEFzeW5jRXZlbnRzKCkKKyAgICBdKTsKKyAg
fSkudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhldmVudHMsIFsnd3JpdGVQ
cm9taXNlJywgJ2Fib3J0UHJvbWlzZScsICdjbG9zZWQnXSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICd3cml0ZVByb21pc2UsIGFib3J0UHJvbWlzZSBhbmQgd3JpdGVyLmNsb3NlZCBtdXN0IHNl
dHRsZScpOworCisgICAgY29uc3Qgd3JpdGVQcm9taXNlNCA9IHdyaXRlci53cml0ZSgnYScpOwor
CisgICAgcmV0dXJuIFByb21pc2UuYWxsKFsKKyAgICAgIHdyaXRlUHJvbWlzZSwKKyAgICAgIHBy
b21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMSwgd3JpdGVQcm9taXNlNCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICd3cml0ZVByb21pc2U0IG11c3QgcmVqZWN0IHdpdGggdGhl
IGVycm9yIGZyb20gYWJvcnQnKSwKKyAgICAgIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVy
cm9yMSwgd3JpdGVyLnJlYWR5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3dyaXRl
ci5yZWFkeSBtdXN0IGJlIHN0aWxsIHJlamVjdGVkIHdpdGggdGhlIGVycm9yIGluZGljYXRpbmcg
YWJvcnQnKQorICAgIF0pOworICB9KS50aGVuKCgpID0+IHsKKyAgICB3cml0ZXIucmVsZWFzZUxv
Y2soKTsKKworICAgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAgICBwcm9taXNlX3JlamVjdHNf
anModCwgVHlwZUVycm9yLCB3cml0ZXIucmVhZHksCisgICAgICAgICAgICAgICAgICAgICAgJ3dy
aXRlci5yZWFkeSBtdXN0IGJlIHJlamVjdGVkIHdpdGggYW4gZXJyb3IgaW5kaWNhdGluZyByZWxl
YXNlJyksCisgICAgICBwcm9taXNlX3JlamVjdHNfanModCwgVHlwZUVycm9yLCB3cml0ZXIuY2xv
c2VkLAorICAgICAgICAgICAgICAgICAgICAgICd3cml0ZXIuY2xvc2VkIG11c3QgYmUgcmVqZWN0
ZWQgd2l0aCBhbiBlcnJvciBpbmRpY2F0aW5nIHJlbGVhc2UnKQorICAgIF0pOworICB9KTsKK30s
ICd3cml0ZXIuYWJvcnQoKSwgY29udHJvbGxlci5lcnJvcigpIHdoaWxlIHRoZXJlIGlzIGFuIGlu
LWZsaWdodCB3cml0ZSwgYW5kIHRoZW4gZmluaXNoIHRoZSB3cml0ZScpOworCitwcm9taXNlX3Rl
c3QodCA9PiB7CisgIGxldCByZXNvbHZlQ2xvc2U7CisgIGxldCBjb250cm9sbGVyOworICBjb25z
dCB3cyA9IG5ldyBXcml0YWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgY29udHJv
bGxlciA9IGM7CisgICAgfSwKKyAgICBjbG9zZSgpIHsKKyAgICAgIHJldHVybiBuZXcgUHJvbWlz
ZShyZXNvbHZlID0+IHsKKyAgICAgICAgcmVzb2x2ZUNsb3NlID0gcmVzb2x2ZTsKKyAgICAgIH0p
OworICAgIH0KKyAgfSk7CisKKyAgbGV0IGNsb3NlUHJvbWlzZTsKKyAgbGV0IGFib3J0UHJvbWlz
ZTsKKworICBjb25zdCBldmVudHMgPSBbXTsKKworICBjb25zdCB3cml0ZXIgPSB3cy5nZXRXcml0
ZXIoKTsKKworICB3cml0ZXIuY2xvc2VkLnRoZW4oKCkgPT4geworICAgIGV2ZW50cy5wdXNoKCdj
bG9zZWQnKTsKKyAgfSk7CisKKyAgLy8gV2FpdCBmb3Igd3MgdG8gc3RhcnQKKyAgcmV0dXJuIGZs
dXNoQXN5bmNFdmVudHMoKS50aGVuKCgpID0+IHsKKyAgICBjbG9zZVByb21pc2UgPSB3cml0ZXIu
Y2xvc2UoKTsKKyAgICBjbG9zZVByb21pc2UudGhlbigoKSA9PiB7CisgICAgICBldmVudHMucHVz
aCgnY2xvc2VQcm9taXNlJyk7CisgICAgfSk7CisKKyAgICBhYm9ydFByb21pc2UgPSB3cml0ZXIu
YWJvcnQoZXJyb3IxKTsKKyAgICBhYm9ydFByb21pc2UudGhlbigoKSA9PiB7CisgICAgICBldmVu
dHMucHVzaCgnYWJvcnRQcm9taXNlJyk7CisgICAgfSk7CisKKyAgICByZXR1cm4gUHJvbWlzZS5h
bGwoWworICAgICAgcHJvbWlzZV9yZWplY3RzX2pzKHQsIFR5cGVFcnJvciwgd3JpdGVyLmNsb3Nl
KCksCisgICAgICAgICd3cml0ZXIuY2xvc2UoKSBtdXN0IHJlamVjdCB3aXRoIGFuIGVycm9yIGlu
ZGljYXRpbmcgYWxyZWFkeSBjbG9zaW5nJyksCisgICAgICBwcm9taXNlX3JlamVjdHNfZXhhY3Rs
eSh0LCBlcnJvcjEsIHdyaXRlci5yZWFkeSwgJ3dyaXRlci5yZWFkeSBtdXN0IHJlamVjdCB3aXRo
IHRoZSBlcnJvciBmcm9tIGFib3J0JyksCisgICAgICBmbHVzaEFzeW5jRXZlbnRzKCkKKyAgICBd
KTsKKyAgfSkudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhldmVudHMsIFtd
LCAnY2xvc2VQcm9taXNlLCBhYm9ydFByb21pc2UgYW5kIHdyaXRlci5jbG9zZWQgbXVzdCBub3Qg
YmUgZnVsZmlsbGVkL3JlamVjdGVkIHlldCcpOworCisgICAgY29udHJvbGxlci5lcnJvcihlcnJv
cjIpOworCisgICAgcmV0dXJuIFByb21pc2UuYWxsKFsKKyAgICAgIHByb21pc2VfcmVqZWN0c19q
cyh0LCBUeXBlRXJyb3IsIHdyaXRlci5jbG9zZSgpLAorICAgICAgICAnd3JpdGVyLmNsb3NlKCkg
bXVzdCByZWplY3Qgd2l0aCBhbiBlcnJvciBpbmRpY2F0aW5nIGFscmVhZHkgY2xvc2luZycpLAor
ICAgICAgcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCB3cml0ZXIucmVhZHksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnd3JpdGVyLnJlYWR5IG11c3QgYmUgc3RpbGwg
cmVqZWN0ZWQgd2l0aCB0aGUgZXJyb3IgaW5kaWNhdGluZyBhYm9ydCcpLAorICAgICAgZmx1c2hB
c3luY0V2ZW50cygpCisgICAgXSk7CisgIH0pLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9hcnJh
eV9lcXVhbHMoCisgICAgICAgIGV2ZW50cywgW10sCisgICAgICAgICdjbG9zZVByb21pc2UsIGFi
b3J0UHJvbWlzZSBhbmQgd3JpdGVyLmNsb3NlZCBtdXN0IG5vdCBiZSBmdWxmaWxsZWQvcmVqZWN0
ZWQgeWV0IGV2ZW4gYWZ0ZXIgJyArCisgICAgICAgICAgICAnY29udHJvbGxlci5lcnJvcigpIGNh
bGwnKTsKKworICAgIHJlc29sdmVDbG9zZSgpOworCisgICAgcmV0dXJuIFByb21pc2UuYWxsKFsK
KyAgICAgIGNsb3NlUHJvbWlzZSwKKyAgICAgIGFib3J0UHJvbWlzZSwKKyAgICAgIHdyaXRlci5j
bG9zZWQsCisgICAgICBmbHVzaEFzeW5jRXZlbnRzKCkKKyAgICBdKTsKKyAgfSkudGhlbigoKSA9
PiB7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhldmVudHMsIFsnY2xvc2VQcm9taXNlJywgJ2Fi
b3J0UHJvbWlzZScsICdjbG9zZWQnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICdjbG9zZWRQ
cm9taXNlLCBhYm9ydFByb21pc2UgYW5kIHdyaXRlci5jbG9zZWQgbXVzdCBmdWxmaWxsJyk7CisK
KyAgICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAgICAgcHJvbWlzZV9yZWplY3RzX2pzKHQsIFR5
cGVFcnJvciwgd3JpdGVyLmNsb3NlKCksCisgICAgICAgICd3cml0ZXIuY2xvc2UoKSBtdXN0IHJl
amVjdCB3aXRoIGFuIGVycm9yIGluZGljYXRpbmcgYWxyZWFkeSBjbG9zaW5nJyksCisgICAgICBw
cm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIHdyaXRlci5yZWFkeSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICd3cml0ZXIucmVhZHkgbXVzdCBiZSBzdGlsbCByZWplY3Rl
ZCB3aXRoIHRoZSBlcnJvciBpbmRpY2F0aW5nIGFib3J0JykKKyAgICBdKTsKKyAgfSkudGhlbigo
KSA9PiB7CisgICAgd3JpdGVyLnJlbGVhc2VMb2NrKCk7CisKKyAgICByZXR1cm4gUHJvbWlzZS5h
bGwoWworICAgICAgcHJvbWlzZV9yZWplY3RzX2pzKHQsIFR5cGVFcnJvciwgd3JpdGVyLmNsb3Nl
KCksCisgICAgICAgICd3cml0ZXIuY2xvc2UoKSBtdXN0IHJlamVjdCB3aXRoIGFuIGVycm9yIGlu
ZGljYXRpbmcgcmVsZWFzZScpLAorICAgICAgcHJvbWlzZV9yZWplY3RzX2pzKHQsIFR5cGVFcnJv
ciwgd3JpdGVyLnJlYWR5LAorICAgICAgICAgICAgICAgICAgICAgICd3cml0ZXIucmVhZHkgbXVz
dCBiZSByZWplY3RlZCB3aXRoIGFuIGVycm9yIGluZGljYXRpbmcgcmVsZWFzZScpLAorICAgICAg
cHJvbWlzZV9yZWplY3RzX2pzKHQsIFR5cGVFcnJvciwgd3JpdGVyLmNsb3NlZCwKKyAgICAgICAg
ICAgICAgICAgICAgICAnd3JpdGVyLmNsb3NlZCBtdXN0IGJlIHJlamVjdGVkIHdpdGggYW4gZXJy
b3IgaW5kaWNhdGluZyByZWxlYXNlJykKKyAgICBdKTsKKyAgfSk7Cit9LCAnd3JpdGVyLmFib3J0
KCksIGNvbnRyb2xsZXIuZXJyb3IoKSB3aGlsZSB0aGVyZSBpcyBhbiBpbi1mbGlnaHQgY2xvc2Us
IGFuZCB0aGVuIGZpbmlzaCB0aGUgY2xvc2UnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBs
ZXQgcmVzb2x2ZVdyaXRlOworICBsZXQgY29udHJvbGxlcjsKKyAgY29uc3Qgd3MgPSByZWNvcmRp
bmdXcml0YWJsZVN0cmVhbSh7CisgICAgd3JpdGUoY2h1bmssIGMpIHsKKyAgICAgIGNvbnRyb2xs
ZXIgPSBjOworICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4geworICAgICAgICBy
ZXNvbHZlV3JpdGUgPSByZXNvbHZlOworICAgICAgfSk7CisgICAgfQorICB9KTsKKworICBsZXQg
d3JpdGVQcm9taXNlOworICBsZXQgYWJvcnRQcm9taXNlOworCisgIGNvbnN0IGV2ZW50cyA9IFtd
OworCisgIGNvbnN0IHdyaXRlciA9IHdzLmdldFdyaXRlcigpOworCisgIHdyaXRlci5jbG9zZWQu
Y2F0Y2goKCkgPT4geworICAgIGV2ZW50cy5wdXNoKCdjbG9zZWQnKTsKKyAgfSk7CisKKyAgLy8g
V2FpdCBmb3Igd3MgdG8gc3RhcnQKKyAgcmV0dXJuIGZsdXNoQXN5bmNFdmVudHMoKS50aGVuKCgp
ID0+IHsKKyAgICB3cml0ZVByb21pc2UgPSB3cml0ZXIud3JpdGUoJ2EnKTsKKyAgICB3cml0ZVBy
b21pc2UudGhlbigoKSA9PiB7CisgICAgICBldmVudHMucHVzaCgnd3JpdGVQcm9taXNlJyk7Cisg
ICAgfSk7CisKKyAgICBjb250cm9sbGVyLmVycm9yKGVycm9yMik7CisKKyAgICBjb25zdCB3cml0
ZVByb21pc2UyID0gd3JpdGVyLndyaXRlKCdhJyk7CisKKyAgICByZXR1cm4gUHJvbWlzZS5hbGwo
WworICAgICAgcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IyLCB3cml0ZVByb21pc2Uy
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3dyaXRlUHJvbWlzZTIgbXVzdCByZWpl
Y3Qgd2l0aCB0aGUgZXJyb3IgcGFzc2VkIHRvIHRoZSBjb250cm9sbGVyXCdzIGVycm9yIG1ldGhv
ZCcpLAorICAgICAgcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IyLCB3cml0ZXIucmVh
ZHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnd3JpdGVyLnJlYWR5IG11c3QgcmVq
ZWN0IHdpdGggdGhlIGVycm9yIHBhc3NlZCB0byB0aGUgY29udHJvbGxlclwncyBlcnJvciBtZXRo
b2QnKSwKKyAgICAgIGZsdXNoQXN5bmNFdmVudHMoKQorICAgIF0pOworICB9KS50aGVuKCgpID0+
IHsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGV2ZW50cywgW10sICd3cml0ZVByb21pc2UgYW5k
IHdyaXRlci5jbG9zZWQgbXVzdCBub3QgYmUgZnVsZmlsbGVkL3JlamVjdGVkIHlldCcpOworCisg
ICAgYWJvcnRQcm9taXNlID0gd3JpdGVyLmFib3J0KGVycm9yMSk7CisgICAgYWJvcnRQcm9taXNl
LmNhdGNoKCgpID0+IHsKKyAgICAgIGV2ZW50cy5wdXNoKCdhYm9ydFByb21pc2UnKTsKKyAgICB9
KTsKKworICAgIGNvbnN0IHdyaXRlUHJvbWlzZTMgPSB3cml0ZXIud3JpdGUoJ2EnKTsKKworICAg
IHJldHVybiBQcm9taXNlLmFsbChbCisgICAgICBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBl
cnJvcjIsIHdyaXRlUHJvbWlzZTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnd3Jp
dGVQcm9taXNlMyBtdXN0IHJlamVjdCB3aXRoIHRoZSBlcnJvciBwYXNzZWQgdG8gdGhlIGNvbnRy
b2xsZXJcJ3MgZXJyb3IgbWV0aG9kJyksCisgICAgICBmbHVzaEFzeW5jRXZlbnRzKCkKKyAgICBd
KTsKKyAgfSkudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscygKKyAgICAgICAg
ZXZlbnRzLCBbXSwKKyAgICAgICAgJ3dyaXRlUHJvbWlzZSBhbmQgd3JpdGVyLmNsb3NlZCBtdXN0
IG5vdCBiZSBmdWxmaWxsZWQvcmVqZWN0ZWQgeWV0IGV2ZW4gYWZ0ZXIgd3JpdGVyLmFib3J0KCkn
KTsKKworICAgIHJlc29sdmVXcml0ZSgpOworCisgICAgcmV0dXJuIFByb21pc2UuYWxsKFsKKyAg
ICAgIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMiwgYWJvcnRQcm9taXNlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Fib3J0KCkgbXVzdCByZWplY3Qgd2l0aCB0aGUg
ZXJyb3IgcGFzc2VkIHRvIHRoZSBjb250cm9sbGVyXCdzIGVycm9yIG1ldGhvZCcpLAorICAgICAg
cHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IyLCB3cml0ZXIuY2xvc2VkLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ3dyaXRlci5jbG9zZWQgbXVzdCByZWplY3Qgd2l0aCB0
aGUgZXJyb3IgcGFzc2VkIHRvIHRoZSBjb250cm9sbGVyXCdzIGVycm9yIG1ldGhvZCcpLAorICAg
ICAgZmx1c2hBc3luY0V2ZW50cygpCisgICAgXSk7CisgIH0pLnRoZW4oKCkgPT4geworICAgIGFz
c2VydF9hcnJheV9lcXVhbHMoZXZlbnRzLCBbJ3dyaXRlUHJvbWlzZScsICdhYm9ydFByb21pc2Un
LCAnY2xvc2VkJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAnd3JpdGVQcm9taXNlLCBhYm9y
dFByb21pc2UgYW5kIHdyaXRlci5jbG9zZWQgbXVzdCBmdWxmaWxsL3JlamVjdCcpOworICAgIGFz
c2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ3dyaXRlJywgJ2EnXSwgJ3NpbmsgYWJvcnQo
KSBzaG91bGQgbm90IGJlIGNhbGxlZCcpOworCisgICAgY29uc3Qgd3JpdGVQcm9taXNlNCA9IHdy
aXRlci53cml0ZSgnYScpOworCisgICAgcmV0dXJuIFByb21pc2UuYWxsKFsKKyAgICAgIHdyaXRl
UHJvbWlzZSwKKyAgICAgIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMiwgd3JpdGVQ
cm9taXNlNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd3cml0ZVByb21pc2U0IG11
c3QgcmVqZWN0IHdpdGggdGhlIGVycm9yIHBhc3NlZCB0byB0aGUgY29udHJvbGxlclwncyBlcnJv
ciBtZXRob2QnKSwKKyAgICAgIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMiwgd3Jp
dGVyLnJlYWR5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3dyaXRlci5yZWFkeSBt
dXN0IGJlIHN0aWxsIHJlamVjdGVkIHdpdGggdGhlIGVycm9yIHBhc3NlZCB0byB0aGUgY29udHJv
bGxlclwncyBlcnJvciBtZXRob2QnKQorICAgIF0pOworICB9KS50aGVuKCgpID0+IHsKKyAgICB3
cml0ZXIucmVsZWFzZUxvY2soKTsKKworICAgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAgICBw
cm9taXNlX3JlamVjdHNfanModCwgVHlwZUVycm9yLCB3cml0ZXIucmVhZHksCisgICAgICAgICAg
ICAgICAgICAgICAgJ3dyaXRlci5yZWFkeSBtdXN0IGJlIHJlamVjdGVkIHdpdGggYW4gZXJyb3Ig
aW5kaWNhdGluZyByZWxlYXNlJyksCisgICAgICBwcm9taXNlX3JlamVjdHNfanModCwgVHlwZUVy
cm9yLCB3cml0ZXIuY2xvc2VkLAorICAgICAgICAgICAgICAgICAgICAgICd3cml0ZXIuY2xvc2Vk
IG11c3QgYmUgcmVqZWN0ZWQgd2l0aCBhbiBlcnJvciBpbmRpY2F0aW5nIHJlbGVhc2UnKQorICAg
IF0pOworICB9KTsKK30sICdjb250cm9sbGVyLmVycm9yKCksIHdyaXRlci5hYm9ydCgpIHdoaWxl
IHRoZXJlIGlzIGFuIGluLWZsaWdodCB3cml0ZSwgYW5kIHRoZW4gZmluaXNoIHRoZSB3cml0ZScp
OworCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIGxldCByZXNvbHZlQ2xvc2U7CisgIGxldCBjb250
cm9sbGVyOworICBjb25zdCB3cyA9IG5ldyBXcml0YWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykg
eworICAgICAgY29udHJvbGxlciA9IGM7CisgICAgfSwKKyAgICBjbG9zZSgpIHsKKyAgICAgIHJl
dHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKKyAgICAgICAgcmVzb2x2ZUNsb3NlID0gcmVz
b2x2ZTsKKyAgICAgIH0pOworICAgIH0KKyAgfSk7CisKKyAgbGV0IGNsb3NlUHJvbWlzZTsKKyAg
bGV0IGFib3J0UHJvbWlzZTsKKworICBjb25zdCBldmVudHMgPSBbXTsKKworICBjb25zdCB3cml0
ZXIgPSB3cy5nZXRXcml0ZXIoKTsKKworICB3cml0ZXIuY2xvc2VkLnRoZW4oKCkgPT4geworICAg
IGV2ZW50cy5wdXNoKCdjbG9zZWQnKTsKKyAgfSk7CisKKyAgLy8gV2FpdCBmb3Igd3MgdG8gc3Rh
cnQKKyAgcmV0dXJuIGZsdXNoQXN5bmNFdmVudHMoKS50aGVuKCgpID0+IHsKKyAgICBjbG9zZVBy
b21pc2UgPSB3cml0ZXIuY2xvc2UoKTsKKyAgICBjbG9zZVByb21pc2UudGhlbigoKSA9PiB7Cisg
ICAgICBldmVudHMucHVzaCgnY2xvc2VQcm9taXNlJyk7CisgICAgfSk7CisKKyAgICBjb250cm9s
bGVyLmVycm9yKGVycm9yMik7CisKKyAgICByZXR1cm4gZmx1c2hBc3luY0V2ZW50cygpOworICB9
KS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGV2ZW50cywgW10sICdjbG9z
ZVByb21pc2UgbXVzdCBub3QgYmUgZnVsZmlsbGVkL3JlamVjdGVkIHlldCcpOworCisgICAgYWJv
cnRQcm9taXNlID0gd3JpdGVyLmFib3J0KGVycm9yMSk7CisgICAgYWJvcnRQcm9taXNlLnRoZW4o
KCkgPT4geworICAgICAgZXZlbnRzLnB1c2goJ2Fib3J0UHJvbWlzZScpOworICAgIH0pOworCisg
ICAgcmV0dXJuIFByb21pc2UuYWxsKFsKKyAgICAgIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQs
IGVycm9yMiwgd3JpdGVyLnJlYWR5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3dy
aXRlci5yZWFkeSBtdXN0IHJlamVjdCB3aXRoIHRoZSBlcnJvciBwYXNzZWQgdG8gdGhlIGNvbnRy
b2xsZXJcJ3MgZXJyb3IgbWV0aG9kJyksCisgICAgICBmbHVzaEFzeW5jRXZlbnRzKCkKKyAgICBd
KTsKKyAgfSkudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscygKKyAgICAgICAg
ZXZlbnRzLCBbXSwKKyAgICAgICAgJ2Nsb3NlUHJvbWlzZSBhbmQgd3JpdGVyLmNsb3NlZCBtdXN0
IG5vdCBiZSBmdWxmaWxsZWQvcmVqZWN0ZWQgeWV0IGV2ZW4gYWZ0ZXIgd3JpdGVyLmFib3J0KCkn
KTsKKworICAgIHJlc29sdmVDbG9zZSgpOworCisgICAgcmV0dXJuIFByb21pc2UuYWxsKFsKKyAg
ICAgIGNsb3NlUHJvbWlzZSwKKyAgICAgIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9y
Miwgd3JpdGVyLnJlYWR5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3dyaXRlci5y
ZWFkeSBtdXN0IGJlIHN0aWxsIHJlamVjdGVkIHdpdGggdGhlIGVycm9yIHBhc3NlZCB0byB0aGUg
Y29udHJvbGxlclwncyBlcnJvciBtZXRob2QnKSwKKyAgICAgIHdyaXRlci5jbG9zZWQsCisgICAg
ICBmbHVzaEFzeW5jRXZlbnRzKCkKKyAgICBdKTsKKyAgfSkudGhlbigoKSA9PiB7CisgICAgYXNz
ZXJ0X2FycmF5X2VxdWFscyhldmVudHMsIFsnY2xvc2VQcm9taXNlJywgJ2Fib3J0UHJvbWlzZScs
ICdjbG9zZWQnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICdhYm9ydFByb21pc2UsIGNsb3Nl
UHJvbWlzZSBhbmQgd3JpdGVyLmNsb3NlZCBtdXN0IGZ1bGZpbGwvcmVqZWN0Jyk7CisgIH0pLnRo
ZW4oKCkgPT4geworICAgIHdyaXRlci5yZWxlYXNlTG9jaygpOworCisgICAgcmV0dXJuIFByb21p
c2UuYWxsKFsKKyAgICAgIHByb21pc2VfcmVqZWN0c19qcyh0LCBUeXBlRXJyb3IsIHdyaXRlci5y
ZWFkeSwKKyAgICAgICAgICAgICAgICAgICAgICAnd3JpdGVyLnJlYWR5IG11c3QgYmUgcmVqZWN0
ZWQgd2l0aCBhbiBlcnJvciBpbmRpY2F0aW5nIHJlbGVhc2UnKSwKKyAgICAgIHByb21pc2VfcmVq
ZWN0c19qcyh0LCBUeXBlRXJyb3IsIHdyaXRlci5jbG9zZWQsCisgICAgICAgICAgICAgICAgICAg
ICAgJ3dyaXRlci5jbG9zZWQgbXVzdCBiZSByZWplY3RlZCB3aXRoIGFuIGVycm9yIGluZGljYXRp
bmcgcmVsZWFzZScpCisgICAgXSk7CisgIH0pOworfSwgJ2NvbnRyb2xsZXIuZXJyb3IoKSwgd3Jp
dGVyLmFib3J0KCkgd2hpbGUgdGhlcmUgaXMgYW4gaW4tZmxpZ2h0IGNsb3NlLCBhbmQgdGhlbiBm
aW5pc2ggdGhlIGNsb3NlJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgbGV0IHJlc29sdmVX
cml0ZTsKKyAgY29uc3Qgd3MgPSBuZXcgV3JpdGFibGVTdHJlYW0oeworICAgIHdyaXRlKCkgewor
ICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4geworICAgICAgICByZXNvbHZlV3Jp
dGUgPSByZXNvbHZlOworICAgICAgfSk7CisgICAgfQorICB9KTsKKyAgY29uc3Qgd3JpdGVyID0g
d3MuZ2V0V3JpdGVyKCk7CisgIHJldHVybiB3cml0ZXIucmVhZHkudGhlbigoKSA9PiB7CisgICAg
Y29uc3Qgd3JpdGVQcm9taXNlID0gd3JpdGVyLndyaXRlKCdhJyk7CisgICAgY29uc3QgY2xvc2Vk
ID0gd3JpdGVyLmNsb3NlZDsKKyAgICBjb25zdCBhYm9ydFByb21pc2UgPSB3cml0ZXIuYWJvcnQo
KTsKKyAgICB3cml0ZXIucmVsZWFzZUxvY2soKTsKKyAgICByZXNvbHZlV3JpdGUoKTsKKyAgICBy
ZXR1cm4gUHJvbWlzZS5hbGwoWworICAgICAgd3JpdGVQcm9taXNlLAorICAgICAgYWJvcnRQcm9t
aXNlLAorICAgICAgcHJvbWlzZV9yZWplY3RzX2pzKHQsIFR5cGVFcnJvciwgY2xvc2VkLCAnY2xv
c2VkIHNob3VsZCByZWplY3QnKV0pOworICB9KTsKK30sICdyZWxlYXNlTG9jaygpIHdoaWxlIGFi
b3J0aW5nIHNob3VsZCByZWplY3QgdGhlIG9yaWdpbmFsIGNsb3NlZCBwcm9taXNlJyk7CisKKy8v
IFRPRE8ocmljZWEpOiBDb25zaWRlciByZW1vdmluZyB0aGlzIHRlc3QgaWYgaXQgaXMgbm8gbG9u
Z2VyIHVzZWZ1bC4KK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgbGV0IHJlc29sdmVXcml0ZTsKKyAg
bGV0IHJlc29sdmVBYm9ydDsKKyAgbGV0IHJlc29sdmVBYm9ydFN0YXJ0ZWQ7CisgIGNvbnN0IGFi
b3J0U3RhcnRlZCA9IG5ldyBQcm9taXNlKHJlc29sdmUgPT4geworICAgIHJlc29sdmVBYm9ydFN0
YXJ0ZWQgPSByZXNvbHZlOworICB9KTsKKyAgY29uc3Qgd3MgPSBuZXcgV3JpdGFibGVTdHJlYW0o
eworICAgIHdyaXRlKCkgeworICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4gewor
ICAgICAgICByZXNvbHZlV3JpdGUgPSByZXNvbHZlOworICAgICAgfSk7CisgICAgfSwKKyAgICBh
Ym9ydCgpIHsKKyAgICAgIHJlc29sdmVBYm9ydFN0YXJ0ZWQoKTsKKyAgICAgIHJldHVybiBuZXcg
UHJvbWlzZShyZXNvbHZlID0+IHsKKyAgICAgICAgcmVzb2x2ZUFib3J0ID0gcmVzb2x2ZTsKKyAg
ICAgIH0pOworICAgIH0KKyAgfSk7CisgIGNvbnN0IHdyaXRlciA9IHdzLmdldFdyaXRlcigpOwor
ICByZXR1cm4gd3JpdGVyLnJlYWR5LnRoZW4oKCkgPT4geworICAgIGNvbnN0IHdyaXRlUHJvbWlz
ZSA9IHdyaXRlci53cml0ZSgnYScpOworICAgIGNvbnN0IGNsb3NlZCA9IHdyaXRlci5jbG9zZWQ7
CisgICAgY29uc3QgYWJvcnRQcm9taXNlID0gd3JpdGVyLmFib3J0KCk7CisgICAgcmVzb2x2ZVdy
aXRlKCk7CisgICAgcmV0dXJuIGFib3J0U3RhcnRlZC50aGVuKCgpID0+IHsKKyAgICAgIHdyaXRl
ci5yZWxlYXNlTG9jaygpOworICAgICAgYXNzZXJ0X2VxdWFscyh3cml0ZXIuY2xvc2VkLCBjbG9z
ZWQsICdjbG9zZWQgcHJvbWlzZSBzaG91bGQgbm90IGhhdmUgY2hhbmdlZCcpOworICAgICAgcmVz
b2x2ZUFib3J0KCk7CisgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAgICAgICB3cml0ZVBy
b21pc2UsCisgICAgICAgIGFib3J0UHJvbWlzZSwKKyAgICAgICAgcHJvbWlzZV9yZWplY3RzX2pz
KHQsIFR5cGVFcnJvciwgY2xvc2VkLCAnY2xvc2VkIHNob3VsZCByZWplY3QnKV0pOworICAgIH0p
OworICB9KTsKK30sICdyZWxlYXNlTG9jaygpIGR1cmluZyBkZWxheWVkIGFzeW5jIGFib3J0KCkg
c2hvdWxkIHJlamVjdCB0aGUgd3JpdGVyLmNsb3NlZCBwcm9taXNlJyk7CisKK3Byb21pc2VfdGVz
dCgoKSA9PiB7CisgIGxldCByZXNvbHZlU3RhcnQ7CisgIGNvbnN0IHdzID0gcmVjb3JkaW5nV3Jp
dGFibGVTdHJlYW0oeworICAgIHN0YXJ0KCkgeworICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJl
c29sdmUgPT4geworICAgICAgICByZXNvbHZlU3RhcnQgPSByZXNvbHZlOworICAgICAgfSk7Cisg
ICAgfQorICB9KTsKKyAgY29uc3QgYWJvcnRQcm9taXNlID0gd3MuYWJvcnQoJ2RvbmUnKTsKKyAg
cmV0dXJuIGZsdXNoQXN5bmNFdmVudHMoKS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfYXJyYXlf
ZXF1YWxzKHdzLmV2ZW50cywgW10sICdhYm9ydCgpIHNob3VsZCBub3QgYmUgY2FsbGVkIGR1cmlu
ZyBzdGFydCgpJyk7CisgICAgcmVzb2x2ZVN0YXJ0KCk7CisgICAgcmV0dXJuIGFib3J0UHJvbWlz
ZS50aGVuKCgpID0+IHsKKyAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ2Fi
b3J0JywgJ2RvbmUnXSwgJ2Fib3J0KCkgc2hvdWxkIGJlIGNhbGxlZCBhZnRlciBzdGFydCgpIGlz
IGRvbmUnKTsKKyAgICB9KTsKKyAgfSk7Cit9LCAnc2luayBhYm9ydCgpIHNob3VsZCBub3QgYmUg
Y2FsbGVkIHVudGlsIHNpbmsgc3RhcnQoKSBpcyBkb25lJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9
PiB7CisgIGxldCByZXNvbHZlU3RhcnQ7CisgIGxldCBjb250cm9sbGVyOworICBjb25zdCB3cyA9
IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjb250cm9s
bGVyID0gYzsKKyAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKKyAgICAgICAg
cmVzb2x2ZVN0YXJ0ID0gcmVzb2x2ZTsKKyAgICAgIH0pOworICAgIH0KKyAgfSk7CisgIGNvbnN0
IGFib3J0UHJvbWlzZSA9IHdzLmFib3J0KCdkb25lJyk7CisgIGNvbnRyb2xsZXIuZXJyb3IoZXJy
b3IxKTsKKyAgcmVzb2x2ZVN0YXJ0KCk7CisgIHJldHVybiBhYm9ydFByb21pc2UudGhlbigoKSA9
PgorICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsnYWJvcnQnLCAnZG9uZSdd
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAnYWJvcnQoKSBzaG91bGQgc3RpbGwgYmUgY2Fs
bGVkIGlmIHN0YXJ0KCkgZXJyb3JzIHRoZSBjb250cm9sbGVyJykpOworfSwgJ2lmIHN0YXJ0IGF0
dGVtcHRzIHRvIGVycm9yIHRoZSBjb250cm9sbGVyIGFmdGVyIGFib3J0KCkgaGFzIGJlZW4gY2Fs
bGVkLCB0aGVuIGl0IHNob3VsZCBsb3NlJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisgIGNv
bnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0oeworICAgIHN0YXJ0KCkgeworICAgICAg
cmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yMSk7CisgICAgfQorICB9KTsKKyAgcmV0dXJuIHdz
LmFib3J0KCdkb25lJykudGhlbigoKSA9PgorICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5l
dmVudHMsIFsnYWJvcnQnLCAnZG9uZSddLCAnYWJvcnQoKSBzaG91bGQgc3RpbGwgYmUgY2FsbGVk
IGlmIHN0YXJ0KCkgcmVqZWN0cycpKTsKK30sICdzdHJlYW0gYWJvcnQoKSBwcm9taXNlIHNob3Vs
ZCBzdGlsbCByZXNvbHZlIGlmIHNpbmsgc3RhcnQoKSByZWplY3RzJyk7CisKK3Byb21pc2VfdGVz
dCh0ID0+IHsKKyAgY29uc3Qgd3MgPSBuZXcgV3JpdGFibGVTdHJlYW0oKTsKKyAgY29uc3Qgd3Jp
dGVyID0gd3MuZ2V0V3JpdGVyKCk7CisgIGNvbnN0IHdyaXRlclJlYWR5MSA9IHdyaXRlci5yZWFk
eTsKKyAgd3JpdGVyLmFib3J0KGVycm9yMSk7CisgIGNvbnN0IHdyaXRlclJlYWR5MiA9IHdyaXRl
ci5yZWFkeTsKKyAgYXNzZXJ0X25vdF9lcXVhbHMod3JpdGVyUmVhZHkxLCB3cml0ZXJSZWFkeTIs
ICdhYm9ydCgpIHNob3VsZCByZXBsYWNlIHRoZSByZWFkeSBwcm9taXNlIHdpdGggYSByZWplY3Rl
ZCBvbmUnKTsKKyAgcmV0dXJuIFByb21pc2UuYWxsKFt3cml0ZXJSZWFkeTEsCisgICAgICAgICAg
ICAgICAgICAgICAgcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCB3cml0ZXJSZWFk
eTIsICd3cml0ZXJSZWFkeTIgc2hvdWxkIHJlamVjdCcpXSk7Cit9LCAnd3JpdGVyIGFib3J0KCkg
ZHVyaW5nIHNpbmsgc3RhcnQoKSBzaG91bGQgcmVwbGFjZSB0aGUgd3JpdGVyLnJlYWR5IHByb21p
c2Ugc3luY2hyb25vdXNseScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIGNvbnN0IGV2ZW50
cyA9IFtdOworICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKCk7CisgIGNvbnN0
IHdyaXRlciA9IHdzLmdldFdyaXRlcigpOworICBjb25zdCB3cml0ZVByb21pc2UxID0gd3JpdGVy
LndyaXRlKDEpOworICBjb25zdCBhYm9ydFByb21pc2UgPSB3cml0ZXIuYWJvcnQoZXJyb3IxKTsK
KyAgY29uc3Qgd3JpdGVQcm9taXNlMiA9IHdyaXRlci53cml0ZSgyKTsKKyAgY29uc3QgY2xvc2VQ
cm9taXNlID0gd3JpdGVyLmNsb3NlKCk7CisgIHdyaXRlUHJvbWlzZTEuY2F0Y2goKCkgPT4gZXZl
bnRzLnB1c2goJ3dyaXRlMScpKTsKKyAgYWJvcnRQcm9taXNlLnRoZW4oKCkgPT4gZXZlbnRzLnB1
c2goJ2Fib3J0JykpOworICB3cml0ZVByb21pc2UyLmNhdGNoKCgpID0+IGV2ZW50cy5wdXNoKCd3
cml0ZTInKSk7CisgIGNsb3NlUHJvbWlzZS5jYXRjaCgoKSA9PiBldmVudHMucHVzaCgnY2xvc2Un
KSk7CisgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAgcHJvbWlzZV9yZWplY3RzX2V4YWN0bHko
dCwgZXJyb3IxLCB3cml0ZVByb21pc2UxLCAnZmlyc3Qgd3JpdGUoKSBzaG91bGQgcmVqZWN0Jyks
CisgICAgYWJvcnRQcm9taXNlLAorICAgIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9y
MSwgd3JpdGVQcm9taXNlMiwgJ3NlY29uZCB3cml0ZSgpIHNob3VsZCByZWplY3QnKSwKKyAgICBw
cm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIGNsb3NlUHJvbWlzZSwgJ2Nsb3NlKCkg
c2hvdWxkIHJlamVjdCcpCisgIF0pCisgIC50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfYXJyYXlf
ZXF1YWxzKGV2ZW50cywgWyd3cml0ZTInLCAnd3JpdGUxJywgJ2Fib3J0JywgJ2Nsb3NlJ10sCisg
ICAgICAgICAgICAgICAgICAgICAgICAncHJvbWlzZXMgc2hvdWxkIHJlc29sdmUgaW4gdGhlIHN0
YW5kYXJkIG9yZGVyJyk7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsnYWJv
cnQnLCBlcnJvcjFdLCAndW5kZXJseWluZyBzaW5rIHdyaXRlKCkgc2hvdWxkIG5vdCBiZSBjYWxs
ZWQnKTsKKyAgfSk7Cit9LCAncHJvbWlzZXMgcmV0dXJuZWQgZnJvbSBvdGhlciB3cml0ZXIgbWV0
aG9kcyBzaG91bGQgYmUgcmVqZWN0ZWQgd2hlbiB3cml0ZXIgYWJvcnQoKSBoYXBwZW5zIGR1cmlu
ZyBzaW5rIHN0YXJ0KCknKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBsZXQgd3JpdGVSZWpl
Y3Q7CisgIGxldCBjb250cm9sbGVyOworICBjb25zdCB3cyA9IG5ldyBXcml0YWJsZVN0cmVhbSh7
CisgICAgd3JpdGUoY2h1bmssIGMpIHsKKyAgICAgIGNvbnRyb2xsZXIgPSBjOworICAgICAgcmV0
dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKKyAgICAgICAgd3JpdGVSZWpl
Y3QgPSByZWplY3Q7CisgICAgICB9KTsKKyAgICB9CisgIH0pOworICBjb25zdCB3cml0ZXIgPSB3
cy5nZXRXcml0ZXIoKTsKKyAgcmV0dXJuIHdyaXRlci5yZWFkeS50aGVuKCgpID0+IHsKKyAgICBj
b25zdCB3cml0ZVByb21pc2UgPSB3cml0ZXIud3JpdGUoJ2EnKTsKKyAgICBjb25zdCBhYm9ydFBy
b21pc2UgPSB3cml0ZXIuYWJvcnQoKTsKKyAgICBjb250cm9sbGVyLmVycm9yKGVycm9yMSk7Cisg
ICAgd3JpdGVSZWplY3QoZXJyb3IyKTsKKyAgICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAgICAg
cHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IyLCB3cml0ZVByb21pc2UsICd3cml0ZSgp
IHNob3VsZCByZWplY3Qgd2l0aCBlcnJvcjInKSwKKyAgICAgIGFib3J0UHJvbWlzZQorICAgIF0p
OworICB9KTsKK30sICdhYm9ydCgpIHNob3VsZCBzdWNjZWVkIGRlc3BpdGUgcmVqZWN0aW9uIGZy
b20gd3JpdGUnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBsZXQgY2xvc2VSZWplY3Q7Cisg
IGxldCBjb250cm9sbGVyOworICBjb25zdCB3cyA9IG5ldyBXcml0YWJsZVN0cmVhbSh7CisgICAg
c3RhcnQoYykgeworICAgICAgY29udHJvbGxlciA9IGM7CisgICAgfSwKKyAgICBjbG9zZSgpIHsK
KyAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CisgICAgICAg
IGNsb3NlUmVqZWN0ID0gcmVqZWN0OworICAgICAgfSk7CisgICAgfQorICB9KTsKKyAgY29uc3Qg
d3JpdGVyID0gd3MuZ2V0V3JpdGVyKCk7CisgIHJldHVybiB3cml0ZXIucmVhZHkudGhlbigoKSA9
PiB7CisgICAgY29uc3QgY2xvc2VQcm9taXNlID0gd3JpdGVyLmNsb3NlKCk7CisgICAgY29uc3Qg
YWJvcnRQcm9taXNlID0gd3JpdGVyLmFib3J0KCk7CisgICAgY29udHJvbGxlci5lcnJvcihlcnJv
cjEpOworICAgIGNsb3NlUmVqZWN0KGVycm9yMik7CisgICAgcmV0dXJuIFByb21pc2UuYWxsKFsK
KyAgICAgIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMiwgY2xvc2VQcm9taXNlLCAn
Y2xvc2UoKSBzaG91bGQgcmVqZWN0IHdpdGggZXJyb3IyJyksCisgICAgICBwcm9taXNlX3JlamVj
dHNfZXhhY3RseSh0LCBlcnJvcjIsIGFib3J0UHJvbWlzZSwgJ2Fib3J0KCkgc2hvdWxkIHJlamVj
dCB3aXRoIGVycm9yMicpCisgICAgXSk7CisgIH0pOworfSwgJ2Fib3J0KCkgc2hvdWxkIGJlIHJl
amVjdGVkIHdpdGggdGhlIHJlamVjdGlvbiByZXR1cm5lZCBmcm9tIGNsb3NlKCknKTsKKworcHJv
bWlzZV90ZXN0KHQgPT4geworICBsZXQgcmVqZWN0V3JpdGU7CisgIGNvbnN0IHdzID0gcmVjb3Jk
aW5nV3JpdGFibGVTdHJlYW0oeworICAgIHdyaXRlKCkgeworICAgICAgcmV0dXJuIG5ldyBQcm9t
aXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKKyAgICAgICAgcmVqZWN0V3JpdGUgPSByZWplY3Q7
CisgICAgICB9KTsKKyAgICB9CisgIH0pOworICBjb25zdCB3cml0ZXIgPSB3cy5nZXRXcml0ZXIo
KTsKKyAgcmV0dXJuIHdyaXRlci5yZWFkeS50aGVuKCgpID0+IHsKKyAgICBjb25zdCB3cml0ZVBy
b21pc2UgPSB3cml0ZXIud3JpdGUoJzEnKTsKKyAgICBjb25zdCBhYm9ydFByb21pc2UgPSB3cml0
ZXIuYWJvcnQoZXJyb3IyKTsKKyAgICByZWplY3RXcml0ZShlcnJvcjEpOworICAgIHJldHVybiBQ
cm9taXNlLmFsbChbCisgICAgICBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIHdy
aXRlUHJvbWlzZSwgJ3dyaXRlIHNob3VsZCByZWplY3QnKSwKKyAgICAgIGFib3J0UHJvbWlzZSwK
KyAgICAgIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMiwgd3JpdGVyLmNsb3NlZCwg
J2Nsb3NlZCBzaG91bGQgcmVqZWN0IHdpdGggZXJyb3IyJykKKyAgICBdKTsKKyAgfSkudGhlbigo
KSA9PiB7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsnd3JpdGUnLCAnMScs
ICdhYm9ydCcsIGVycm9yMl0sICdhYm9ydCBzaW5rIG1ldGhvZCBzaG91bGQgYmUgY2FsbGVkJyk7
CisgIH0pOworfSwgJ2EgcmVqZWN0aW5nIHNpbmsud3JpdGUoKSBzaG91bGQgbm90IHByZXZlbnQg
c2luay5hYm9ydCgpIGZyb20gYmVpbmcgY2FsbGVkJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7
CisgIGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0oeworICAgIHN0YXJ0KCkgewor
ICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yMSk7CisgICAgfQorICB9KTsKKyAgcmV0
dXJuIHdzLmFib3J0KGVycm9yMikKKyAgICAgIC50aGVuKCgpID0+IHsKKyAgICAgICAgYXNzZXJ0
X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsnYWJvcnQnLCBlcnJvcjJdKTsKKyAgICAgIH0pOwor
fSwgJ3doZW4gc3RhcnQgZXJyb3JzIGFmdGVyIHN0cmVhbSBhYm9ydCgpLCB1bmRlcmx5aW5nIHNp
bmsgYWJvcnQoKSBzaG91bGQgYmUgY2FsbGVkIGFueXdheScpOworCitwcm9taXNlX3Rlc3QoKCkg
PT4geworICBjb25zdCB3cyA9IG5ldyBXcml0YWJsZVN0cmVhbSgpOworICBjb25zdCBhYm9ydFBy
b21pc2UxID0gd3MuYWJvcnQoKTsKKyAgY29uc3QgYWJvcnRQcm9taXNlMiA9IHdzLmFib3J0KCk7
CisgIGFzc2VydF9lcXVhbHMoYWJvcnRQcm9taXNlMSwgYWJvcnRQcm9taXNlMiwgJ3RoZSBwcm9t
aXNlcyBtdXN0IGJlIHRoZSBzYW1lJyk7CisKKyAgcmV0dXJuIGFib3J0UHJvbWlzZTEudGhlbigK
KyAgICAgIHYgPT4gYXNzZXJ0X2VxdWFscyh2LCB1bmRlZmluZWQsICdhYm9ydCgpIHNob3VsZCBm
dWxmaWxsIHdpdGggdW5kZWZpbmVkJykpOworfSwgJ3doZW4gY2FsbGluZyBhYm9ydCgpIHR3aWNl
IG9uIHRoZSBzYW1lIHN0cmVhbSwgYm90aCBzaG91bGQgZ2l2ZSB0aGUgc2FtZSBwcm9taXNlIHRo
YXQgZnVsZmlsbHMgd2l0aCB1bmRlZmluZWQnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAg
Y29uc3Qgd3MgPSBuZXcgV3JpdGFibGVTdHJlYW0oKTsKKyAgY29uc3QgYWJvcnRQcm9taXNlMSA9
IHdzLmFib3J0KCk7CisKKyAgcmV0dXJuIGFib3J0UHJvbWlzZTEudGhlbih2MSA9PiB7CisgICAg
YXNzZXJ0X2VxdWFscyh2MSwgdW5kZWZpbmVkLCAnZmlyc3QgYWJvcnQoKSBzaG91bGQgZnVsZmls
bCB3aXRoIHVuZGVmaW5lZCcpOworCisgICAgY29uc3QgYWJvcnRQcm9taXNlMiA9IHdzLmFib3J0
KCk7CisgICAgYXNzZXJ0X25vdF9lcXVhbHMoYWJvcnRQcm9taXNlMiwgYWJvcnRQcm9taXNlMSwg
J2JlY2F1c2Ugd2Ugd2FpdGVkLCB0aGUgc2Vjb25kIHByb21pc2Ugc2hvdWxkIGJlIGEgbmV3IHBy
b21pc2UnKTsKKworICAgIHJldHVybiBhYm9ydFByb21pc2UyLnRoZW4odjIgPT4geworICAgICAg
YXNzZXJ0X2VxdWFscyh2MiwgdW5kZWZpbmVkLCAnc2Vjb25kIGFib3J0KCkgc2hvdWxkIGZ1bGZp
bGwgd2l0aCB1bmRlZmluZWQnKTsKKyAgICB9KTsKKyAgfSk7Cit9LCAnd2hlbiBjYWxsaW5nIGFi
b3J0KCkgdHdpY2Ugb24gdGhlIHNhbWUgc3RyZWFtLCBidXQgc2VxdWVudGlhbGx5IHNvIHNvIHRo
ZXJlXCdzIG5vIHBlbmRpbmcgYWJvcnQgdGhlIHNlY29uZCB0aW1lLCAnICsKKyAgICdib3RoIHNo
b3VsZCBmdWxmaWxsIHdpdGggdW5kZWZpbmVkJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAg
Y29uc3Qgd3MgPSBuZXcgV3JpdGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGMu
ZXJyb3IoZXJyb3IxKTsKKyAgICB9CisgIH0pOworCisgIGNvbnN0IHdyaXRlciA9IHdzLmdldFdy
aXRlcigpOworCisgIHJldHVybiBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIHdy
aXRlci5jbG9zZWQsICd3cml0ZXIuY2xvc2VkIHNob3VsZCByZWplY3QnKS50aGVuKCgpID0+IHsK
KyAgICByZXR1cm4gd3JpdGVyLmFib3J0KCkudGhlbigKKyAgICAgIHYgPT4gYXNzZXJ0X2VxdWFs
cyh2LCB1bmRlZmluZWQsICdhYm9ydCgpIHNob3VsZCBmdWxmaWxsIHdpdGggdW5kZWZpbmVkJykp
OworICB9KTsKK30sICdjYWxsaW5nIGFib3J0KCkgb24gYW4gZXJyb3JlZCBzdHJlYW0gc2hvdWxk
IGZ1bGZpbGwgd2l0aCB1bmRlZmluZWQnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBsZXQg
Y29udHJvbGxlcjsKKyAgbGV0IHJlc29sdmVXcml0ZTsKKyAgY29uc3Qgd3MgPSByZWNvcmRpbmdX
cml0YWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgY29udHJvbGxlciA9IGM7Cisg
ICAgfSwKKyAgICB3cml0ZSgpIHsKKyAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+
IHsKKyAgICAgICAgcmVzb2x2ZVdyaXRlID0gcmVzb2x2ZTsKKyAgICAgIH0pOworICAgIH0KKyAg
fSk7CisgIGNvbnN0IHdyaXRlciA9IHdzLmdldFdyaXRlcigpOworICByZXR1cm4gd3JpdGVyLnJl
YWR5LnRoZW4oKCkgPT4geworICAgIGNvbnN0IHdyaXRlUHJvbWlzZSA9IHdyaXRlci53cml0ZSgn
Y2h1bmsnKTsKKyAgICBjb250cm9sbGVyLmVycm9yKGVycm9yMSk7CisgICAgY29uc3QgYWJvcnRQ
cm9taXNlID0gd3JpdGVyLmFib3J0KGVycm9yMik7CisgICAgcmVzb2x2ZVdyaXRlKCk7CisgICAg
cmV0dXJuIFByb21pc2UuYWxsKFsKKyAgICAgIHdyaXRlUHJvbWlzZSwKKyAgICAgIHByb21pc2Vf
cmVqZWN0c19leGFjdGx5KHQsIGVycm9yMSwgYWJvcnRQcm9taXNlLCAnYWJvcnQoKSBzaG91bGQg
cmVqZWN0JykKKyAgICBdKS50aGVuKCgpID0+IHsKKyAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMo
d3MuZXZlbnRzLCBbJ3dyaXRlJywgJ2NodW5rJ10sICdzaW5rIGFib3J0KCkgc2hvdWxkIG5vdCBi
ZSBjYWxsZWQnKTsKKyAgICB9KTsKKyAgfSk7Cit9LCAnc2luayBhYm9ydCgpIHNob3VsZCBub3Qg
YmUgY2FsbGVkIGlmIHN0cmVhbSB3YXMgZXJyb3JpbmcgZHVlIHRvIGNvbnRyb2xsZXIuZXJyb3Io
KSBiZWZvcmUgYWJvcnQoKSB3YXMgY2FsbGVkJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAg
bGV0IHJlc29sdmVXcml0ZTsKKyAgbGV0IHNpemUgPSAxOworICBjb25zdCB3cyA9IHJlY29yZGlu
Z1dyaXRhYmxlU3RyZWFtKHsKKyAgICB3cml0ZSgpIHsKKyAgICAgIHJldHVybiBuZXcgUHJvbWlz
ZShyZXNvbHZlID0+IHsKKyAgICAgICAgcmVzb2x2ZVdyaXRlID0gcmVzb2x2ZTsKKyAgICAgIH0p
OworICAgIH0KKyAgfSwgeworICAgIHNpemUoKSB7CisgICAgICByZXR1cm4gc2l6ZTsKKyAgICB9
LAorICAgIGhpZ2hXYXRlck1hcms6IDEKKyAgfSk7CisgIGNvbnN0IHdyaXRlciA9IHdzLmdldFdy
aXRlcigpOworICByZXR1cm4gd3JpdGVyLnJlYWR5LnRoZW4oKCkgPT4geworICAgIGNvbnN0IHdy
aXRlUHJvbWlzZTEgPSB3cml0ZXIud3JpdGUoJ2NodW5rMScpOworICAgIHNpemUgPSBOYU47Cisg
ICAgY29uc3Qgd3JpdGVQcm9taXNlMiA9IHdyaXRlci53cml0ZSgnY2h1bmsyJyk7CisgICAgY29u
c3QgYWJvcnRQcm9taXNlID0gd3JpdGVyLmFib3J0KGVycm9yMik7CisgICAgcmVzb2x2ZVdyaXRl
KCk7CisgICAgcmV0dXJuIFByb21pc2UuYWxsKFsKKyAgICAgIHdyaXRlUHJvbWlzZTEsCisgICAg
ICBwcm9taXNlX3JlamVjdHNfanModCwgUmFuZ2VFcnJvciwgd3JpdGVQcm9taXNlMiwgJ3NlY29u
ZCB3cml0ZSgpIHNob3VsZCByZWplY3QnKSwKKyAgICAgIHByb21pc2VfcmVqZWN0c19qcyh0LCBS
YW5nZUVycm9yLCBhYm9ydFByb21pc2UsICdhYm9ydCgpIHNob3VsZCByZWplY3QnKQorICAgIF0p
LnRoZW4oKCkgPT4geworICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsnd3Jp
dGUnLCAnY2h1bmsxJ10sICdzaW5rIGFib3J0KCkgc2hvdWxkIG5vdCBiZSBjYWxsZWQnKTsKKyAg
ICB9KTsKKyAgfSk7Cit9LCAnc2luayBhYm9ydCgpIHNob3VsZCBub3QgYmUgY2FsbGVkIGlmIHN0
cmVhbSB3YXMgZXJyb3JpbmcgZHVlIHRvIGJhZCBzdHJhdGVneSBiZWZvcmUgYWJvcnQoKSB3YXMg
Y2FsbGVkJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgY29uc3Qgd3MgPSBuZXcgV3JpdGFi
bGVTdHJlYW0oKTsKKyAgcmV0dXJuIHdzLmFib3J0KCkudGhlbigoKSA9PiB7CisgICAgY29uc3Qg
d3JpdGVyID0gd3MuZ2V0V3JpdGVyKCk7CisgICAgcmV0dXJuIHdyaXRlci5jbG9zZWQudGhlbih0
LnVucmVhY2hlZF9mdW5jKCdjbG9zZWQgcHJvbWlzZSBzaG91bGQgbm90IGZ1bGZpbGwnKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgPT4gYXNzZXJ0X2VxdWFscyhlLCB1bmRlZmlu
ZWQsICdlIHNob3VsZCBiZSB1bmRlZmluZWQnKSk7CisgIH0pOworfSwgJ2Fib3J0IHdpdGggbm8g
YXJndW1lbnRzIHNob3VsZCBzZXQgdGhlIHN0b3JlZCBlcnJvciB0byB1bmRlZmluZWQnKTsKKwor
cHJvbWlzZV90ZXN0KHQgPT4geworICBjb25zdCB3cyA9IG5ldyBXcml0YWJsZVN0cmVhbSgpOwor
ICByZXR1cm4gd3MuYWJvcnQodW5kZWZpbmVkKS50aGVuKCgpID0+IHsKKyAgICBjb25zdCB3cml0
ZXIgPSB3cy5nZXRXcml0ZXIoKTsKKyAgICByZXR1cm4gd3JpdGVyLmNsb3NlZC50aGVuKHQudW5y
ZWFjaGVkX2Z1bmMoJ2Nsb3NlZCBwcm9taXNlIHNob3VsZCBub3QgZnVsZmlsbCcpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZSA9PiBhc3NlcnRfZXF1YWxzKGUsIHVuZGVmaW5lZCwg
J2Ugc2hvdWxkIGJlIHVuZGVmaW5lZCcpKTsKKyAgfSk7Cit9LCAnYWJvcnQgd2l0aCBhbiB1bmRl
ZmluZWQgYXJndW1lbnQgc2hvdWxkIHNldCB0aGUgc3RvcmVkIGVycm9yIHRvIHVuZGVmaW5lZCcp
OworCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIGNvbnN0IHdzID0gbmV3IFdyaXRhYmxlU3RyZWFt
KCk7CisgIHJldHVybiB3cy5hYm9ydCgnc3RyaW5nIGFyZ3VtZW50JykudGhlbigoKSA9PiB7Cisg
ICAgY29uc3Qgd3JpdGVyID0gd3MuZ2V0V3JpdGVyKCk7CisgICAgcmV0dXJuIHdyaXRlci5jbG9z
ZWQudGhlbih0LnVucmVhY2hlZF9mdW5jKCdjbG9zZWQgcHJvbWlzZSBzaG91bGQgbm90IGZ1bGZp
bGwnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgPT4gYXNzZXJ0X2VxdWFscyhl
LCAnc3RyaW5nIGFyZ3VtZW50JywgJ2Ugc2hvdWxkIGJlIFwnc3RyaW5nIGFyZ3VtZW50XCcnKSk7
CisgIH0pOworfSwgJ2Fib3J0IHdpdGggYSBzdHJpbmcgYXJndW1lbnQgc2hvdWxkIHNldCB0aGUg
c3RvcmVkIGVycm9yIHRvIHRoYXQgYXJndW1lbnQnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4gewor
ICBjb25zdCB3cyA9IG5ldyBXcml0YWJsZVN0cmVhbSgpOworICBjb25zdCB3cml0ZXIgPSB3cy5n
ZXRXcml0ZXIoKTsKKyAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19qcyh0LCBUeXBlRXJyb3IsIHdz
LmFib3J0KCksICdhYm9ydCBzaG91bGQgcmVqZWN0JykKKyAgICAudGhlbigoKSA9PiB3cml0ZXIu
cmVhZHkpOworfSwgJ2Fib3J0IG9uIGEgbG9ja2VkIHN0cmVhbSBzaG91bGQgcmVqZWN0Jyk7CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9hYm9ydGluZy5hbnkud29ya2VyLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0
YWJsZS1zdHJlYW1zL2Fib3J0aW5nLmFueS53b3JrZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjA2NDJiZGMwYTlmNjY1MmQzY2QzODgzNDFjYzc0MWJhZWFkNTMxYWUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
d3JpdGFibGUtc3RyZWFtcy9hYm9ydGluZy5hbnkud29ya2VyLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDU3IEBACisKK0ZBSUwgQWJvcnRpbmcgYSBXcml0YWJsZVN0cmVhbSBiZWZvcmUgaXQgc3Rh
cnRzIHNob3VsZCBjYXVzZSB0aGUgd3JpdGVyJ3MgdW5zZXR0bGVkIHJlYWR5IHByb21pc2UgdG8g
cmVqZWN0IENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIEFib3J0aW5n
IGEgV3JpdGFibGVTdHJlYW0gc2hvdWxkIGNhdXNlIHRoZSB3cml0ZXIncyBmdWxmaWxsZWQgcmVh
ZHkgcHJvbWlzZSB0byByZXNldCB0byBhIHJlamVjdGVkIG9uZSBDYW4ndCBmaW5kIHZhcmlhYmxl
OiBXcml0YWJsZVN0cmVhbQorRkFJTCBhYm9ydCgpIG9uIGEgcmVsZWFzZWQgd3JpdGVyIHJlamVj
dHMgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgQWJvcnRpbmcgYSBX
cml0YWJsZVN0cmVhbSBpbW1lZGlhdGVseSBwcmV2ZW50cyBmdXR1cmUgd3JpdGVzIENhbid0IGZp
bmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIEFib3J0aW5nIGEgV3JpdGFibGVTdHJl
YW0gcHJldmVudHMgZnVydGhlciB3cml0ZXMgYWZ0ZXIgYW55IHRoYXQgYXJlIGluIHByb2dyZXNz
IENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIEZ1bGZpbGxtZW50IHZh
bHVlIG9mIHdyaXRlci5hYm9ydCgpIGNhbGwgbXVzdCBiZSB1bmRlZmluZWQgZXZlbiBpZiB0aGUg
dW5kZXJseWluZyBzaW5rIHJldHVybnMgYSBub24tdW5kZWZpbmVkIHZhbHVlIENhbid0IGZpbmQg
dmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIFdyaXRhYmxlU3RyZWFtIGlmIHNpbmsncyBh
Ym9ydCB0aHJvd3MsIHRoZSBwcm9taXNlIHJldHVybmVkIGJ5IHdyaXRlci5hYm9ydCgpIHJlamVj
dHMgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgV3JpdGFibGVTdHJl
YW0gaWYgc2luaydzIGFib3J0IHRocm93cywgdGhlIHByb21pc2UgcmV0dXJuZWQgYnkgbXVsdGlw
bGUgd3JpdGVyLmFib3J0KClzIGlzIHRoZSBzYW1lIGFuZCByZWplY3RzIENhbid0IGZpbmQgdmFy
aWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIFdyaXRhYmxlU3RyZWFtIGlmIHNpbmsncyBhYm9y
dCB0aHJvd3MsIHRoZSBwcm9taXNlIHJldHVybmVkIGJ5IHdzLmFib3J0KCkgcmVqZWN0cyBDYW4n
dCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBXcml0YWJsZVN0cmVhbSBpZiBz
aW5rJ3MgYWJvcnQgdGhyb3dzLCBmb3IgYW4gYWJvcnQgcGVyZm9ybWVkIGR1cmluZyBhIHdyaXRl
LCB0aGUgcHJvbWlzZSByZXR1cm5lZCBieSB3cy5hYm9ydCgpIHJlamVjdHMgQ2FuJ3QgZmluZCB2
YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgQWJvcnRpbmcgYSBXcml0YWJsZVN0cmVhbSBw
YXNzZXMgdGhyb3VnaCB0aGUgZ2l2ZW4gcmVhc29uIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRh
YmxlU3RyZWFtCitGQUlMIEFib3J0aW5nIGEgV3JpdGFibGVTdHJlYW0gcHV0cyBpdCBpbiBhbiBl
cnJvcmVkIHN0YXRlIHdpdGggdGhlIGVycm9yIHBhc3NlZCB0byBhYm9ydCgpIENhbid0IGZpbmQg
dmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIEFib3J0aW5nIGEgV3JpdGFibGVTdHJlYW0g
Y2F1c2VzIGFueSBvdXRzdGFuZGluZyB3cml0ZSgpIHByb21pc2VzIHRvIGJlIHJlamVjdGVkIHdp
dGggdGhlIHJlYXNvbiBzdXBwbGllZCBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVh
bQorRkFJTCBDbG9zaW5nIGJ1dCB0aGVuIGltbWVkaWF0ZWx5IGFib3J0aW5nIGEgV3JpdGFibGVT
dHJlYW0gY2F1c2VzIHRoZSBzdHJlYW0gdG8gZXJyb3IgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3Jp
dGFibGVTdHJlYW0KK0ZBSUwgQ2xvc2luZyBhIFdyaXRhYmxlU3RyZWFtIGFuZCBhYm9ydGluZyBp
dCB3aGlsZSBpdCBjbG9zZXMgY2F1c2VzIHRoZSBzdHJlYW0gdG8gaWdub3JlIHRoZSBhYm9ydCBh
dHRlbXB0IENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIEFib3J0aW5n
IGEgV3JpdGFibGVTdHJlYW0gYWZ0ZXIgaXQgaXMgY2xvc2VkIGlzIGEgbm8tb3AgQ2FuJ3QgZmlu
ZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgV3JpdGFibGVTdHJlYW0gc2hvdWxkIE5P
VCBjYWxsIHVuZGVybHlpbmcgc2luaydzIGNsb3NlIGlmIG5vIGFib3J0IGlzIHN1cHBsaWVkICho
aXN0b3JpY2FsKSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCByZXR1
cm5pbmcgYSB0aGVuYWJsZSBmcm9tIGFib3J0KCkgc2hvdWxkIHdvcmsgQ2FuJ3QgZmluZCB2YXJp
YWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgLmNsb3NlZCBzaG91bGQgbm90IHJlc29sdmUgYmVm
b3JlIGZ1bGZpbGxlZCB3cml0ZSgpIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFt
CitGQUlMIC5jbG9zZWQgc2hvdWxkIG5vdCByZXNvbHZlIGJlZm9yZSByZWplY3RlZCB3cml0ZSgp
OyB3cml0ZSgpIGVycm9yIHNob3VsZCBub3Qgb3ZlcndyaXRlIGFib3J0KCkgZXJyb3IgQ2FuJ3Qg
ZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgd3JpdGVzIHNob3VsZCBiZSBzYXRp
c2ZpZWQgaW4gb3JkZXIgd2hlbiBhYm9ydGluZyBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJs
ZVN0cmVhbQorRkFJTCB3cml0ZXMgc2hvdWxkIGJlIHNhdGlzZmllZCBpbiBvcmRlciBhZnRlciBy
ZWplY3RlZCB3cml0ZSB3aGVuIGFib3J0aW5nIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxl
U3RyZWFtCitGQUlMIGNsb3NlKCkgc2hvdWxkIHJlamVjdCB3aXRoIGFib3J0IHJlYXNvbiB3aHkg
YWJvcnQoKSBpcyBmaXJzdCBlcnJvciBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVh
bQorRkFJTCB1bmRlcmx5aW5nIGFib3J0KCkgc2hvdWxkIG5vdCBiZSBjYWxsZWQgdW50aWwgdW5k
ZXJseWluZyB3cml0ZSgpIGNvbXBsZXRlcyBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0
cmVhbQorRkFJTCB1bmRlcmx5aW5nIGFib3J0KCkgc2hvdWxkIG5vdCBiZSBjYWxsZWQgaWYgdW5k
ZXJseWluZyBjbG9zZSgpIGhhcyBzdGFydGVkIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxl
U3RyZWFtCitGQUlMIGlmIHVuZGVybHlpbmcgY2xvc2UoKSBoYXMgc3RhcnRlZCBhbmQgdGhlbiBy
ZWplY3RzLCB0aGUgYWJvcnQoKSBhbmQgY2xvc2UoKSBwcm9taXNlcyBzaG91bGQgcmVqZWN0IHdp
dGggdGhlIHVuZGVybHlpbmcgY2xvc2UgcmVqZWN0aW9uIHJlYXNvbiBDYW4ndCBmaW5kIHZhcmlh
YmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBhbiBhYm9ydCgpIHRoYXQgaGFwcGVucyBkdXJpbmcg
YSB3cml0ZSgpIHNob3VsZCB0cmlnZ2VyIHRoZSB1bmRlcmx5aW5nIGFib3J0KCkgZXZlbiB3aXRo
IGEgY2xvc2UoKSBxdWV1ZWQgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZB
SUwgaWYgYSB3cml0ZXIgaXMgY3JlYXRlZCBmb3IgYSBzdHJlYW0gd2l0aCBhIHBlbmRpbmcgYWJv
cnQsIGl0cyByZWFkeSBzaG91bGQgYmUgcmVqZWN0ZWQgd2l0aCB0aGUgYWJvcnQgZXJyb3IgQ2Fu
J3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgd3JpdGVyIGNsb3NlKCkgcHJv
bWlzZSBzaG91bGQgcmVzb2x2ZSBiZWZvcmUgYWJvcnQoKSBwcm9taXNlIENhbid0IGZpbmQgdmFy
aWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIHdyaXRlci5yZWFkeSBzaG91bGQgcmVqZWN0IG9u
IGNvbnRyb2xsZXIgZXJyb3Igd2l0aG91dCB3YWl0aW5nIGZvciB1bmRlcmx5aW5nIHdyaXRlIENh
bid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIHdyaXRlci5hYm9ydCgpIHdo
aWxlIHRoZXJlIGlzIGFuIGluLWZsaWdodCB3cml0ZSwgYW5kIHRoZW4gZmluaXNoIHRoZSB3cml0
ZSB3aXRoIHJlamVjdGlvbiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJ
TCB3cml0ZXIuYWJvcnQoKSwgY29udHJvbGxlci5lcnJvcigpIHdoaWxlIHRoZXJlIGlzIGFuIGlu
LWZsaWdodCB3cml0ZSwgYW5kIHRoZW4gZmluaXNoIHRoZSB3cml0ZSBDYW4ndCBmaW5kIHZhcmlh
YmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCB3cml0ZXIuYWJvcnQoKSwgY29udHJvbGxlci5lcnJv
cigpIHdoaWxlIHRoZXJlIGlzIGFuIGluLWZsaWdodCBjbG9zZSwgYW5kIHRoZW4gZmluaXNoIHRo
ZSBjbG9zZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBjb250cm9s
bGVyLmVycm9yKCksIHdyaXRlci5hYm9ydCgpIHdoaWxlIHRoZXJlIGlzIGFuIGluLWZsaWdodCB3
cml0ZSwgYW5kIHRoZW4gZmluaXNoIHRoZSB3cml0ZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0
YWJsZVN0cmVhbQorRkFJTCBjb250cm9sbGVyLmVycm9yKCksIHdyaXRlci5hYm9ydCgpIHdoaWxl
IHRoZXJlIGlzIGFuIGluLWZsaWdodCBjbG9zZSwgYW5kIHRoZW4gZmluaXNoIHRoZSBjbG9zZSBD
YW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCByZWxlYXNlTG9jaygpIHdo
aWxlIGFib3J0aW5nIHNob3VsZCByZWplY3QgdGhlIG9yaWdpbmFsIGNsb3NlZCBwcm9taXNlIENh
bid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIHJlbGVhc2VMb2NrKCkgZHVy
aW5nIGRlbGF5ZWQgYXN5bmMgYWJvcnQoKSBzaG91bGQgcmVqZWN0IHRoZSB3cml0ZXIuY2xvc2Vk
IHByb21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgc2luayBh
Ym9ydCgpIHNob3VsZCBub3QgYmUgY2FsbGVkIHVudGlsIHNpbmsgc3RhcnQoKSBpcyBkb25lIENh
bid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIGlmIHN0YXJ0IGF0dGVtcHRz
IHRvIGVycm9yIHRoZSBjb250cm9sbGVyIGFmdGVyIGFib3J0KCkgaGFzIGJlZW4gY2FsbGVkLCB0
aGVuIGl0IHNob3VsZCBsb3NlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitG
QUlMIHN0cmVhbSBhYm9ydCgpIHByb21pc2Ugc2hvdWxkIHN0aWxsIHJlc29sdmUgaWYgc2luayBz
dGFydCgpIHJlamVjdHMgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwg
d3JpdGVyIGFib3J0KCkgZHVyaW5nIHNpbmsgc3RhcnQoKSBzaG91bGQgcmVwbGFjZSB0aGUgd3Jp
dGVyLnJlYWR5IHByb21pc2Ugc3luY2hyb25vdXNseSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0
YWJsZVN0cmVhbQorRkFJTCBwcm9taXNlcyByZXR1cm5lZCBmcm9tIG90aGVyIHdyaXRlciBtZXRo
b2RzIHNob3VsZCBiZSByZWplY3RlZCB3aGVuIHdyaXRlciBhYm9ydCgpIGhhcHBlbnMgZHVyaW5n
IHNpbmsgc3RhcnQoKSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBh
Ym9ydCgpIHNob3VsZCBzdWNjZWVkIGRlc3BpdGUgcmVqZWN0aW9uIGZyb20gd3JpdGUgQ2FuJ3Qg
ZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgYWJvcnQoKSBzaG91bGQgYmUgcmVq
ZWN0ZWQgd2l0aCB0aGUgcmVqZWN0aW9uIHJldHVybmVkIGZyb20gY2xvc2UoKSBDYW4ndCBmaW5k
IHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBhIHJlamVjdGluZyBzaW5rLndyaXRlKCkg
c2hvdWxkIG5vdCBwcmV2ZW50IHNpbmsuYWJvcnQoKSBmcm9tIGJlaW5nIGNhbGxlZCBDYW4ndCBm
aW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCB3aGVuIHN0YXJ0IGVycm9ycyBhZnRl
ciBzdHJlYW0gYWJvcnQoKSwgdW5kZXJseWluZyBzaW5rIGFib3J0KCkgc2hvdWxkIGJlIGNhbGxl
ZCBhbnl3YXkgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgd2hlbiBj
YWxsaW5nIGFib3J0KCkgdHdpY2Ugb24gdGhlIHNhbWUgc3RyZWFtLCBib3RoIHNob3VsZCBnaXZl
IHRoZSBzYW1lIHByb21pc2UgdGhhdCBmdWxmaWxscyB3aXRoIHVuZGVmaW5lZCBDYW4ndCBmaW5k
IHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCB3aGVuIGNhbGxpbmcgYWJvcnQoKSB0d2lj
ZSBvbiB0aGUgc2FtZSBzdHJlYW0sIGJ1dCBzZXF1ZW50aWFsbHkgc28gc28gdGhlcmUncyBubyBw
ZW5kaW5nIGFib3J0IHRoZSBzZWNvbmQgdGltZSwgYm90aCBzaG91bGQgZnVsZmlsbCB3aXRoIHVu
ZGVmaW5lZCBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBjYWxsaW5n
IGFib3J0KCkgb24gYW4gZXJyb3JlZCBzdHJlYW0gc2hvdWxkIGZ1bGZpbGwgd2l0aCB1bmRlZmlu
ZWQgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgc2luayBhYm9ydCgp
IHNob3VsZCBub3QgYmUgY2FsbGVkIGlmIHN0cmVhbSB3YXMgZXJyb3JpbmcgZHVlIHRvIGNvbnRy
b2xsZXIuZXJyb3IoKSBiZWZvcmUgYWJvcnQoKSB3YXMgY2FsbGVkIENhbid0IGZpbmQgdmFyaWFi
bGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIHNpbmsgYWJvcnQoKSBzaG91bGQgbm90IGJlIGNhbGxl
ZCBpZiBzdHJlYW0gd2FzIGVycm9yaW5nIGR1ZSB0byBiYWQgc3RyYXRlZ3kgYmVmb3JlIGFib3J0
KCkgd2FzIGNhbGxlZCBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBh
Ym9ydCB3aXRoIG5vIGFyZ3VtZW50cyBzaG91bGQgc2V0IHRoZSBzdG9yZWQgZXJyb3IgdG8gdW5k
ZWZpbmVkIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIGFib3J0IHdp
dGggYW4gdW5kZWZpbmVkIGFyZ3VtZW50IHNob3VsZCBzZXQgdGhlIHN0b3JlZCBlcnJvciB0byB1
bmRlZmluZWQgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgYWJvcnQg
d2l0aCBhIHN0cmluZyBhcmd1bWVudCBzaG91bGQgc2V0IHRoZSBzdG9yZWQgZXJyb3IgdG8gdGhh
dCBhcmd1bWVudCBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBhYm9y
dCBvbiBhIGxvY2tlZCBzdHJlYW0gc2hvdWxkIHJlamVjdCBDYW4ndCBmaW5kIHZhcmlhYmxlOiBX
cml0YWJsZVN0cmVhbQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9hYm9ydGluZy5hbnkud29y
a2VyLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9hYm9ydGluZy5hbnkud29ya2VyLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMjM4MjkxMzUyOGU2OTNiM2E1ZDU2YzY2MGE0NTA2MDk4MGI1NDhjMwotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy93cml0YWJsZS1zdHJlYW1zL2Fib3J0aW5nLmFueS53b3JrZXIuaHRtbApAQCAtMCwwICsxIEBA
Cis8IS0tIFRoaXMgZmlsZSBpcyByZXF1aXJlZCBmb3IgV2ViS2l0IHRlc3QgaW5mcmFzdHJ1Y3R1
cmUgdG8gcnVuIHRoZSB0ZW1wbGF0ZWQgdGVzdCAtLT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9iYWQtc3RyYXRlZ2llcy5hbnktZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
L3dyaXRhYmxlLXN0cmVhbXMvYmFkLXN0cmF0ZWdpZXMuYW55LWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4wODFiODBiYTE1MWE1NTc1ODNlOTgwNDMzZGRkMDAyYzU5MzUxZWUyCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJl
YW1zL3dyaXRhYmxlLXN0cmVhbXMvYmFkLXN0cmF0ZWdpZXMuYW55LWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDkgQEAKKworUEFTUyBXcml0YWJsZSBzdHJlYW06IHRocm93aW5nIHN0cmF0ZWd5LnNp
emUgZ2V0dGVyIAorUEFTUyByZWplY3QgYW55IG5vbi1mdW5jdGlvbiB2YWx1ZSBmb3Igc3RyYXRl
Z3kuc2l6ZSAKK1BBU1MgV3JpdGFibGUgc3RyZWFtOiB0aHJvd2luZyBzdHJhdGVneS5oaWdoV2F0
ZXJNYXJrIGdldHRlciAKK1BBU1MgV3JpdGFibGUgc3RyZWFtOiBpbnZhbGlkIHN0cmF0ZWd5Lmhp
Z2hXYXRlck1hcmsgCitGQUlMIFdyaXRhYmxlIHN0cmVhbTogdGhyb3dpbmcgc3RyYXRlZ3kuc2l6
ZSBtZXRob2Qgd3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRl
cigpJywgJ3dzLmdldFdyaXRlcicgaXMgdW5kZWZpbmVkKQorRkFJTCBXcml0YWJsZSBzdHJlYW06
IGludmFsaWQgc3RyYXRlZ3kuc2l6ZSByZXR1cm4gdmFsdWUgd3MuZ2V0V3JpdGVyIGlzIG5vdCBh
IGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicgaXMgdW5kZWZp
bmVkKQorUEFTUyBXcml0YWJsZSBzdHJlYW06IGludmFsaWQgc2l6ZSBiZWF0cyBpbnZhbGlkIGhp
Z2hXYXRlck1hcmsgCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL2JhZC1zdHJhdGVnaWVzLmFu
eS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJl
YW1zL3dyaXRhYmxlLXN0cmVhbXMvYmFkLXN0cmF0ZWdpZXMuYW55Lmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MjM4MjkxMzUyOGU2OTNiM2E1ZDU2YzY2MGE0NTA2MDk4MGI1NDhjMwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93
cml0YWJsZS1zdHJlYW1zL2JhZC1zdHJhdGVnaWVzLmFueS5odG1sCkBAIC0wLDAgKzEgQEAKKzwh
LS0gVGhpcyBmaWxlIGlzIHJlcXVpcmVkIGZvciBXZWJLaXQgdGVzdCBpbmZyYXN0cnVjdHVyZSB0
byBydW4gdGhlIHRlbXBsYXRlZCB0ZXN0IC0tPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL2JhZC1zdHJhdGVnaWVzLmFueS5qcyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJl
YW1zL2JhZC1zdHJhdGVnaWVzLmFueS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMTgwYmFlNTdjMDU4NWZkOTEw
ZjBjYzdkZmY3Y2U0MjMyMTJmOTZiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvYmFk
LXN0cmF0ZWdpZXMuYW55LmpzCkBAIC0wLDAgKzEsOTUgQEAKKy8vIE1FVEE6IGdsb2JhbD13aW5k
b3csd29ya2VyLGpzc2hlbGwKKyd1c2Ugc3RyaWN0JzsKKworY29uc3QgZXJyb3IxID0gbmV3IEVy
cm9yKCdhIHVuaXF1ZSBzdHJpbmcnKTsKK2Vycm9yMS5uYW1lID0gJ2Vycm9yMSc7CisKK3Rlc3Qo
KCkgPT4geworICBhc3NlcnRfdGhyb3dzX2V4YWN0bHkoZXJyb3IxLCAoKSA9PiB7CisgICAgbmV3
IFdyaXRhYmxlU3RyZWFtKHt9LCB7CisgICAgICBnZXQgc2l6ZSgpIHsKKyAgICAgICAgdGhyb3cg
ZXJyb3IxOworICAgICAgfSwKKyAgICAgIGhpZ2hXYXRlck1hcms6IDUKKyAgICB9KTsKKyAgfSwg
J2NvbnN0cnVjdGlvbiBzaG91bGQgcmUtdGhyb3cgdGhlIGVycm9yJyk7Cit9LCAnV3JpdGFibGUg
c3RyZWFtOiB0aHJvd2luZyBzdHJhdGVneS5zaXplIGdldHRlcicpOworCit0ZXN0KCgpID0+IHsK
KyAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IHsKKyAgICBuZXcgV3JpdGFibGVT
dHJlYW0oe30sIHsgc2l6ZTogJ2Egc3RyaW5nJyB9KTsKKyAgfSk7Cit9LCAncmVqZWN0IGFueSBu
b24tZnVuY3Rpb24gdmFsdWUgZm9yIHN0cmF0ZWd5LnNpemUnKTsKKwordGVzdCgoKSA9PiB7Cisg
IGFzc2VydF90aHJvd3NfZXhhY3RseShlcnJvcjEsICgpID0+IHsKKyAgICBuZXcgV3JpdGFibGVT
dHJlYW0oe30sIHsKKyAgICAgIHNpemUoKSB7CisgICAgICAgIHJldHVybiAxOworICAgICAgfSwK
KyAgICAgIGdldCBoaWdoV2F0ZXJNYXJrKCkgeworICAgICAgICB0aHJvdyBlcnJvcjE7CisgICAg
ICB9CisgICAgfSk7CisgIH0sICdjb25zdHJ1Y3Rpb24gc2hvdWxkIHJlLXRocm93IHRoZSBlcnJv
cicpOworfSwgJ1dyaXRhYmxlIHN0cmVhbTogdGhyb3dpbmcgc3RyYXRlZ3kuaGlnaFdhdGVyTWFy
ayBnZXR0ZXInKTsKKwordGVzdCgoKSA9PiB7CisKKyAgZm9yIChjb25zdCBoaWdoV2F0ZXJNYXJr
IG9mIFstMSwgLUluZmluaXR5LCBOYU4sICdmb28nLCB7fV0pIHsKKyAgICBhc3NlcnRfdGhyb3dz
X2pzKFJhbmdlRXJyb3IsICgpID0+IHsKKyAgICAgIG5ldyBXcml0YWJsZVN0cmVhbSh7fSwgewor
ICAgICAgICBzaXplKCkgeworICAgICAgICAgIHJldHVybiAxOworICAgICAgICB9LAorICAgICAg
ICBoaWdoV2F0ZXJNYXJrCisgICAgICB9KTsKKyAgICB9LCBgY29uc3RydWN0aW9uIHNob3VsZCB0
aHJvdyBhIFJhbmdlRXJyb3IgZm9yICR7aGlnaFdhdGVyTWFya31gKTsKKyAgfQorfSwgJ1dyaXRh
YmxlIHN0cmVhbTogaW52YWxpZCBzdHJhdGVneS5oaWdoV2F0ZXJNYXJrJyk7CisKK3Byb21pc2Vf
dGVzdCh0ID0+IHsKKyAgY29uc3Qgd3MgPSBuZXcgV3JpdGFibGVTdHJlYW0oe30sIHsKKyAgICBz
aXplKCkgeworICAgICAgdGhyb3cgZXJyb3IxOworICAgIH0sCisgICAgaGlnaFdhdGVyTWFyazog
NQorICB9KTsKKworICBjb25zdCB3cml0ZXIgPSB3cy5nZXRXcml0ZXIoKTsKKworICBjb25zdCBw
MSA9IHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMSwgd3JpdGVyLndyaXRlKCdhJyks
ICd3cml0ZSBzaG91bGQgcmVqZWN0IHdpdGggdGhlIHRocm93biBlcnJvcicpOworCisgIGNvbnN0
IHAyID0gcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCB3cml0ZXIuY2xvc2VkLCAn
Y2xvc2VkIHNob3VsZCByZWplY3Qgd2l0aCB0aGUgdGhyb3duIGVycm9yJyk7CisKKyAgcmV0dXJu
IFByb21pc2UuYWxsKFtwMSwgcDJdKTsKK30sICdXcml0YWJsZSBzdHJlYW06IHRocm93aW5nIHN0
cmF0ZWd5LnNpemUgbWV0aG9kJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisgIGNvbnN0IHNp
emVzID0gW05hTiwgLUluZmluaXR5LCBJbmZpbml0eSwgLTFdOworICByZXR1cm4gUHJvbWlzZS5h
bGwoc2l6ZXMubWFwKHNpemUgPT4geworICAgIGNvbnN0IHdzID0gbmV3IFdyaXRhYmxlU3RyZWFt
KHt9LCB7CisgICAgICBzaXplKCkgeworICAgICAgICByZXR1cm4gc2l6ZTsKKyAgICAgIH0sCisg
ICAgICBoaWdoV2F0ZXJNYXJrOiA1CisgICAgfSk7CisKKyAgICBjb25zdCB3cml0ZXIgPSB3cy5n
ZXRXcml0ZXIoKTsKKworICAgIHJldHVybiB3cml0ZXIud3JpdGUoJ2EnKS50aGVuKCgpID0+IGFz
c2VydF91bnJlYWNoZWQoJ3dyaXRlIG11c3QgcmVqZWN0JyksIHdyaXRlRSA9PiB7CisgICAgICBh
c3NlcnRfZXF1YWxzKHdyaXRlRS5uYW1lLCAnUmFuZ2VFcnJvcicsIGB3cml0ZSBtdXN0IHJlamVj
dCB3aXRoIGEgUmFuZ2VFcnJvciBmb3IgJHtzaXplfWApOworCisgICAgICByZXR1cm4gd3JpdGVy
LmNsb3NlZC50aGVuKCgpID0+IGFzc2VydF91bnJlYWNoZWQoJ3dyaXRlIG11c3QgcmVqZWN0Jyks
IGNsb3NlZEUgPT4geworICAgICAgICBhc3NlcnRfZXF1YWxzKGNsb3NlZEUsIHdyaXRlRSwgYGNs
b3NlZCBzaG91bGQgcmVqZWN0IHdpdGggdGhlIHNhbWUgZXJyb3IgYXMgd3JpdGVgKTsKKyAgICAg
IH0pOworICAgIH0pOworICB9KSk7Cit9LCAnV3JpdGFibGUgc3RyZWFtOiBpbnZhbGlkIHN0cmF0
ZWd5LnNpemUgcmV0dXJuIHZhbHVlJyk7CisKK3Rlc3QoKCkgPT4geworICBhc3NlcnRfdGhyb3dz
X2pzKFR5cGVFcnJvciwgKCkgPT4gbmV3IFdyaXRhYmxlU3RyZWFtKHVuZGVmaW5lZCwgeworICAg
IHNpemU6ICdub3QgYSBmdW5jdGlvbicsCisgICAgaGlnaFdhdGVyTWFyazogTmFOCisgIH0pLCAn
V3JpdGFibGVTdHJlYW0gY29uc3RydWN0b3Igc2hvdWxkIHRocm93IGEgVHlwZUVycm9yJyk7Cit9
LCAnV3JpdGFibGUgc3RyZWFtOiBpbnZhbGlkIHNpemUgYmVhdHMgaW52YWxpZCBoaWdoV2F0ZXJN
YXJrJyk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9iYWQtc3RyYXRlZ2llcy5hbnkud29ya2Vy
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL2JhZC1zdHJhdGVnaWVzLmFueS53b3JrZXItZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNlZDUzZmE5ZjlmZjJhZDliMzQ2ZmMzOWRiM2ViNGEyMzhk
YmUyODUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9iYWQtc3RyYXRlZ2llcy5hbnku
d29ya2VyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQzIEBACisKK0ZBSUwgV3JpdGFibGUgc3Ry
ZWFtOiB0aHJvd2luZyBzdHJhdGVneS5zaXplIGdldHRlciBhc3NlcnRfdGhyb3dzX2V4YWN0bHk6
IGNvbnN0cnVjdGlvbiBzaG91bGQgcmUtdGhyb3cgdGhlIGVycm9yIGZ1bmN0aW9uICIoKSA9PiB7
CisgICAgbmV3IFdyaXRhYmxlU3RyZWFtKHt9LCB7CisgICAgICBnZXQgc2l6ZSgpIHsKKyAgICAg
ICAgdGhyb3cgZXJyb3IxOworICAgICAgfSwKKyAgICAgIGhpZ2hXYXRlck1hcms6IDUKKyAgICB9
KTsKKyAgfSIgdGhyZXcgb2JqZWN0ICJSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJs
ZTogV3JpdGFibGVTdHJlYW0iIGJ1dCB3ZSBleHBlY3RlZCBpdCB0byB0aHJvdyBvYmplY3QgImVy
cm9yMTogYSB1bmlxdWUgc3RyaW5nIgorRkFJTCByZWplY3QgYW55IG5vbi1mdW5jdGlvbiB2YWx1
ZSBmb3Igc3RyYXRlZ3kuc2l6ZSBhc3NlcnRfdGhyb3dzX2pzOiBmdW5jdGlvbiAiKCkgPT4gewor
ICAgIG5ldyBXcml0YWJsZVN0cmVhbSh7fSwgeyBzaXplOiAnYSBzdHJpbmcnIH0pOworICB9IiB0
aHJldyBvYmplY3QgIlJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJs
ZVN0cmVhbSIgKCJSZWZlcmVuY2VFcnJvciIpIGV4cGVjdGVkIGluc3RhbmNlIG9mIGZ1bmN0aW9u
ICJmdW5jdGlvbiBUeXBlRXJyb3IoKSB7CisgICAgW25hdGl2ZSBjb2RlXQorfSIgKCJUeXBlRXJy
b3IiKQorRkFJTCBXcml0YWJsZSBzdHJlYW06IHRocm93aW5nIHN0cmF0ZWd5LmhpZ2hXYXRlck1h
cmsgZ2V0dGVyIGFzc2VydF90aHJvd3NfZXhhY3RseTogY29uc3RydWN0aW9uIHNob3VsZCByZS10
aHJvdyB0aGUgZXJyb3IgZnVuY3Rpb24gIigpID0+IHsKKyAgICBuZXcgV3JpdGFibGVTdHJlYW0o
e30sIHsKKyAgICAgIHNpemUoKSB7CisgICAgICAgIHJldHVybiAxOworICAgICAgfSwKKyAgICAg
IGdldCBoaWdoV2F0ZXJNYXJrKCkgeworICAgICAgICB0aHJvdyBlcnJvcjE7CisgICAgICB9Cisg
ICAgfSk7CisgIH0iIHRocmV3IG9iamVjdCAiUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFy
aWFibGU6IFdyaXRhYmxlU3RyZWFtIiBidXQgd2UgZXhwZWN0ZWQgaXQgdG8gdGhyb3cgb2JqZWN0
ICJlcnJvcjE6IGEgdW5pcXVlIHN0cmluZyIKK0ZBSUwgV3JpdGFibGUgc3RyZWFtOiBpbnZhbGlk
IHN0cmF0ZWd5LmhpZ2hXYXRlck1hcmsgYXNzZXJ0X3Rocm93c19qczogY29uc3RydWN0aW9uIHNo
b3VsZCB0aHJvdyBhIFJhbmdlRXJyb3IgZm9yIC0xIGZ1bmN0aW9uICIoKSA9PiB7CisgICAgICBu
ZXcgV3JpdGFibGVTdHJlYW0oe30sIHsKKyAgICAgICAgc2l6ZSgpIHsKKyAgICAgICAgICByZXR1
cm4gMTsKKyAgICAgICAgfSwKKyAgICAgICAgaGlnaFdhdGVyTWFyaworICAgICAgfSk7CisgICAg
fSIgdGhyZXcgb2JqZWN0ICJSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3Jp
dGFibGVTdHJlYW0iICgiUmVmZXJlbmNlRXJyb3IiKSBleHBlY3RlZCBpbnN0YW5jZSBvZiBmdW5j
dGlvbiAiZnVuY3Rpb24gUmFuZ2VFcnJvcigpIHsKKyAgICBbbmF0aXZlIGNvZGVdCit9IiAoIlJh
bmdlRXJyb3IiKQorRkFJTCBXcml0YWJsZSBzdHJlYW06IHRocm93aW5nIHN0cmF0ZWd5LnNpemUg
bWV0aG9kIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIFdyaXRhYmxl
IHN0cmVhbTogaW52YWxpZCBzdHJhdGVneS5zaXplIHJldHVybiB2YWx1ZSBDYW4ndCBmaW5kIHZh
cmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBXcml0YWJsZSBzdHJlYW06IGludmFsaWQgc2l6
ZSBiZWF0cyBpbnZhbGlkIGhpZ2hXYXRlck1hcmsgYXNzZXJ0X3Rocm93c19qczogV3JpdGFibGVT
dHJlYW0gY29uc3RydWN0b3Igc2hvdWxkIHRocm93IGEgVHlwZUVycm9yIGZ1bmN0aW9uICIoKSA9
PiBuZXcgV3JpdGFibGVTdHJlYW0odW5kZWZpbmVkLCB7CisgICAgc2l6ZTogJ25vdCBhIGZ1bmN0
aW9uJywKKyAgICBoaWdoV2F0ZXJNYXJrOiBOYU4KKyAgfSkiIHRocmV3IG9iamVjdCAiUmVmZXJl
bmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtIiAoIlJlZmVyZW5j
ZUVycm9yIikgZXhwZWN0ZWQgaW5zdGFuY2Ugb2YgZnVuY3Rpb24gImZ1bmN0aW9uIFR5cGVFcnJv
cigpIHsKKyAgICBbbmF0aXZlIGNvZGVdCit9IiAoIlR5cGVFcnJvciIpCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0
YWJsZS1zdHJlYW1zL2JhZC1zdHJhdGVnaWVzLmFueS53b3JrZXIuaHRtbCBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1z
L2JhZC1zdHJhdGVnaWVzLmFueS53b3JrZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMzgyOTEzNTI4ZTY5
M2IzYTVkNTZjNjYwYTQ1MDYwOTgwYjU0OGMzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVh
bXMvYmFkLXN0cmF0ZWdpZXMuYW55Lndvcmtlci5odG1sCkBAIC0wLDAgKzEgQEAKKzwhLS0gVGhp
cyBmaWxlIGlzIHJlcXVpcmVkIGZvciBXZWJLaXQgdGVzdCBpbmZyYXN0cnVjdHVyZSB0byBydW4g
dGhlIHRlbXBsYXRlZCB0ZXN0IC0tPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy93cml0YWJsZS1zdHJlYW1zL2JhZC11bmRlcmx5aW5nLXNpbmtzLmFueS1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3Jp
dGFibGUtc3RyZWFtcy9iYWQtdW5kZXJseWluZy1zaW5rcy5hbnktZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjA0NmY3NTBkZDQ0N2JkNDU1NDI0YWRiOTc2Yzg5NmFiMzIwZDk2NTcKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9iYWQtdW5kZXJseWluZy1zaW5rcy5hbnktZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMjcgQEAKKworUEFTUyBzdGFydDogZXJyb3JzIGluIHN0YXJ0IGNhdXNl
IFdyaXRhYmxlU3RyZWFtIGNvbnN0cnVjdG9yIHRvIHRocm93IAorRkFJTCBjbG9zZTogdGhyb3dp
bmcgbWV0aG9kIHNob3VsZCBjYXVzZSB3cml0ZXIgY2xvc2UoKSBhbmQgcmVhZHkgdG8gcmVqZWN0
IHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3
cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkKK0ZBSUwgY2xvc2U6IHJldHVybmluZyBhIHJlamVj
dGVkIHByb21pc2Ugc2hvdWxkIGNhdXNlIHdyaXRlciBjbG9zZSgpIGFuZCByZWFkeSB0byByZWpl
Y3Qgd3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywg
J3dzLmdldFdyaXRlcicgaXMgdW5kZWZpbmVkKQorRkFJTCBjbG9zZTogdGhyb3dpbmcgZ2V0dGVy
IHNob3VsZCBjYXVzZSBjb25zdHJ1Y3RvciB0byB0aHJvdyBhc3NlcnRfdGhyb3dzX2V4YWN0bHk6
IGNvbnN0cnVjdG9yIHNob3VsZCB0aHJvdyBmdW5jdGlvbiAiKCkgPT4gbmV3IFdyaXRhYmxlU3Ry
ZWFtKHsKKyAgICBnZXQgY2xvc2UoKSB7CisgICAgICB0aHJvdyBlcnJvcjE7CisgICAgfQorICB9
KSIgZGlkIG5vdCB0aHJvdworRkFJTCB3cml0ZTogdGhyb3dpbmcgZ2V0dGVyIHNob3VsZCBjYXVz
ZSB3cml0ZSgpIGFuZCBjbG9zZWQgdG8gcmVqZWN0IGFzc2VydF90aHJvd3NfZXhhY3RseTogY29u
c3RydWN0b3Igc2hvdWxkIHRocm93IGZ1bmN0aW9uICIoKSA9PiBuZXcgV3JpdGFibGVTdHJlYW0o
eworICAgIGdldCB3cml0ZSgpIHsKKyAgICAgIHRocm93IGVycm9yMTsKKyAgICB9CisgIH0pIiBk
aWQgbm90IHRocm93CitGQUlMIHdyaXRlOiB0aHJvd2luZyBtZXRob2Qgc2hvdWxkIGNhdXNlIHdy
aXRlKCkgYW5kIGNsb3NlZCB0byByZWplY3Qgd3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9u
LiAoSW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicgaXMgdW5kZWZpbmVkKQorRkFJ
TCB3cml0ZTogcmV0dXJuaW5nIGEgcHJvbWlzZSB0aGF0IGJlY29tZXMgcmVqZWN0ZWQgYWZ0ZXIg
dGhlIHdyaXRlciB3cml0ZSgpIHNob3VsZCBjYXVzZSB3cml0ZXIgd3JpdGUoKSBhbmQgcmVhZHkg
dG8gcmVqZWN0IHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBv
YmplY3QgIlR5cGVFcnJvcjogd3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dz
LmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicgaXMgdW5kZWZpbmVkKSIKK0ZBSUwgd3JpdGU6
IHJldHVybmluZyBhIHJlamVjdGVkIHByb21pc2UgKHNlY29uZCB3cml0ZSkgc2hvdWxkIGNhdXNl
IHdyaXRlciB3cml0ZSgpIGFuZCByZWFkeSB0byByZWplY3Qgd3MuZ2V0V3JpdGVyIGlzIG5vdCBh
IGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicgaXMgdW5kZWZp
bmVkKQorRkFJTCBhYm9ydDogbm9uLWZ1bmN0aW9uIGFib3J0IG1ldGhvZCB3aXRoIC5hcHBseSBh
c3NlcnRfdGhyb3dzX2pzOiBjb25zdHJ1Y3RvciBzaG91bGQgdGhyb3cgZnVuY3Rpb24gIigpID0+
IG5ldyBXcml0YWJsZVN0cmVhbSh7CisgICAgYWJvcnQ6IHsgYXBwbHkoKSB7fSB9CisgIH0pIiBk
aWQgbm90IHRocm93CitGQUlMIGFib3J0OiB0aHJvd2luZyBnZXR0ZXIgc2hvdWxkIGNhdXNlIGFi
b3J0KCkgYW5kIGNsb3NlZCB0byByZWplY3QgYXNzZXJ0X3Rocm93c19leGFjdGx5OiBjb25zdHJ1
Y3RvciBzaG91bGQgdGhyb3cgZnVuY3Rpb24gIigpID0+IG5ldyBXcml0YWJsZVN0cmVhbSh7Cisg
ICAgZ2V0IGFib3J0KCkgeworICAgICAgdGhyb3cgZXJyb3IxOworICAgIH0KKyAgfSkiIGRpZCBu
b3QgdGhyb3cKK0ZBSUwgYWJvcnQ6IHRocm93aW5nIG1ldGhvZCBzaG91bGQgY2F1c2UgYWJvcnQo
KSBhbmQgY2xvc2VkIHRvIHJlamVjdCB3cy5nZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJ
biAnd3MuZ2V0V3JpdGVyKCknLCAnd3MuZ2V0V3JpdGVyJyBpcyB1bmRlZmluZWQpCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy93cml0YWJsZS1zdHJlYW1zL2JhZC11bmRlcmx5aW5nLXNpbmtzLmFueS5odG1sIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0
cmVhbXMvYmFkLXVuZGVybHlpbmctc2lua3MuYW55Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjM4MjkxMzUy
OGU2OTNiM2E1ZDU2YzY2MGE0NTA2MDk4MGI1NDhjMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1z
dHJlYW1zL2JhZC11bmRlcmx5aW5nLXNpbmtzLmFueS5odG1sCkBAIC0wLDAgKzEgQEAKKzwhLS0g
VGhpcyBmaWxlIGlzIHJlcXVpcmVkIGZvciBXZWJLaXQgdGVzdCBpbmZyYXN0cnVjdHVyZSB0byBy
dW4gdGhlIHRlbXBsYXRlZCB0ZXN0IC0tPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy93cml0YWJsZS1zdHJlYW1zL2JhZC11bmRlcmx5aW5nLXNpbmtzLmFueS5qcyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1z
dHJlYW1zL2JhZC11bmRlcmx5aW5nLXNpbmtzLmFueS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZjA0ZTAxYjBj
MGM0ZGFhMGIxOTNlNDZmZWU2NTgzYzBlZDdjYmExCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0
cmVhbXMvYmFkLXVuZGVybHlpbmctc2lua3MuYW55LmpzCkBAIC0wLDAgKzEsMTg2IEBACisvLyBN
RVRBOiBnbG9iYWw9d2luZG93LHdvcmtlcixqc3NoZWxsCisvLyBNRVRBOiBzY3JpcHQ9Li4vcmVz
b3VyY2VzL3Rlc3QtdXRpbHMuanMKKy8vIE1FVEE6IHNjcmlwdD0uLi9yZXNvdXJjZXMvcmVjb3Jk
aW5nLXN0cmVhbXMuanMKKyd1c2Ugc3RyaWN0JzsKKworY29uc3QgZXJyb3IxID0gbmV3IEVycm9y
KCdlcnJvcjEnKTsKK2Vycm9yMS5uYW1lID0gJ2Vycm9yMSc7CisKK3Rlc3QoKCkgPT4geworICBh
c3NlcnRfdGhyb3dzX2V4YWN0bHkoZXJyb3IxLCAoKSA9PiB7CisgICAgbmV3IFdyaXRhYmxlU3Ry
ZWFtKHsKKyAgICAgIGdldCBzdGFydCgpIHsKKyAgICAgICAgdGhyb3cgZXJyb3IxOworICAgICAg
fQorICAgIH0pOworICB9LCAnY29uc3RydWN0b3Igc2hvdWxkIHRocm93IHNhbWUgZXJyb3IgYXMg
dGhyb3dpbmcgc3RhcnQgZ2V0dGVyJyk7CisKKyAgYXNzZXJ0X3Rocm93c19leGFjdGx5KGVycm9y
MSwgKCkgPT4geworICAgIG5ldyBXcml0YWJsZVN0cmVhbSh7CisgICAgICBzdGFydCgpIHsKKyAg
ICAgICAgdGhyb3cgZXJyb3IxOworICAgICAgfQorICAgIH0pOworICB9LCAnY29uc3RydWN0b3Ig
c2hvdWxkIHRocm93IHNhbWUgZXJyb3IgYXMgdGhyb3dpbmcgc3RhcnQgbWV0aG9kJyk7CisKKyAg
YXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IHsKKyAgICBuZXcgV3JpdGFibGVTdHJl
YW0oeworICAgICAgc3RhcnQ6ICdub3QgYSBmdW5jdGlvbiBvciB1bmRlZmluZWQnCisgICAgfSk7
CisgIH0sICdjb25zdHJ1Y3RvciBzaG91bGQgdGhyb3cgVHlwZUVycm9yIHdoZW4gcGFzc2VkIGEg
bm9uLWZ1bmN0aW9uIHN0YXJ0IHByb3BlcnR5Jyk7CisKKyAgYXNzZXJ0X3Rocm93c19qcyhUeXBl
RXJyb3IsICgpID0+IHsKKyAgICBuZXcgV3JpdGFibGVTdHJlYW0oeworICAgICAgc3RhcnQ6IHsg
YXBwbHkoKSB7fSB9CisgICAgfSk7CisgIH0sICdjb25zdHJ1Y3RvciBzaG91bGQgdGhyb3cgVHlw
ZUVycm9yIHdoZW4gcGFzc2VkIGEgbm9uLWZ1bmN0aW9uIHN0YXJ0IHByb3BlcnR5IHdpdGggYW4g
LmFwcGx5IG1ldGhvZCcpOworfSwgJ3N0YXJ0OiBlcnJvcnMgaW4gc3RhcnQgY2F1c2UgV3JpdGFi
bGVTdHJlYW0gY29uc3RydWN0b3IgdG8gdGhyb3cnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4gewor
CisgIGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0oeworICAgIGNsb3NlKCkgewor
ICAgICAgdGhyb3cgZXJyb3IxOworICAgIH0KKyAgfSk7CisKKyAgY29uc3Qgd3JpdGVyID0gd3Mu
Z2V0V3JpdGVyKCk7CisKKyAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9y
MSwgd3JpdGVyLmNsb3NlKCksICdjbG9zZSgpIHByb21pc2UgbXVzdCByZWplY3Qgd2l0aCB0aGUg
dGhyb3duIGVycm9yJykKKyAgLnRoZW4oKCkgPT4gcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwg
ZXJyb3IxLCB3cml0ZXIucmVhZHksICdyZWFkeSBwcm9taXNlIG11c3QgcmVqZWN0IHdpdGggdGhl
IHRocm93biBlcnJvcicpKQorICAudGhlbigoKSA9PiBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0
LCBlcnJvcjEsIHdyaXRlci5jbG9zZWQsICdjbG9zZWQgcHJvbWlzZSBtdXN0IHJlamVjdCB3aXRo
IHRoZSB0aHJvd24gZXJyb3InKSkKKyAgLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9hcnJheV9l
cXVhbHMod3MuZXZlbnRzLCBbJ2Nsb3NlJ10pOworICB9KTsKKworfSwgJ2Nsb3NlOiB0aHJvd2lu
ZyBtZXRob2Qgc2hvdWxkIGNhdXNlIHdyaXRlciBjbG9zZSgpIGFuZCByZWFkeSB0byByZWplY3Qn
KTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworCisgIGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFi
bGVTdHJlYW0oeworICAgIGNsb3NlKCkgeworICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVy
cm9yMSk7CisgICAgfQorICB9KTsKKworICBjb25zdCB3cml0ZXIgPSB3cy5nZXRXcml0ZXIoKTsK
KworICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCB3cml0ZXIuY2xv
c2UoKSwgJ2Nsb3NlKCkgcHJvbWlzZSBtdXN0IHJlamVjdCB3aXRoIHRoZSBzYW1lIGVycm9yJykK
KyAgLnRoZW4oKCkgPT4gcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCB3cml0ZXIu
cmVhZHksICdyZWFkeSBwcm9taXNlIG11c3QgcmVqZWN0IHdpdGggdGhlIHNhbWUgZXJyb3InKSkK
KyAgLnRoZW4oKCkgPT4gYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsnY2xvc2UnXSkp
OworCit9LCAnY2xvc2U6IHJldHVybmluZyBhIHJlamVjdGVkIHByb21pc2Ugc2hvdWxkIGNhdXNl
IHdyaXRlciBjbG9zZSgpIGFuZCByZWFkeSB0byByZWplY3QnKTsKKwordGVzdCgoKSA9PiB7Cisg
IGFzc2VydF90aHJvd3NfZXhhY3RseShlcnJvcjEsICgpID0+IG5ldyBXcml0YWJsZVN0cmVhbSh7
CisgICAgZ2V0IGNsb3NlKCkgeworICAgICAgdGhyb3cgZXJyb3IxOworICAgIH0KKyAgfSksICdj
b25zdHJ1Y3RvciBzaG91bGQgdGhyb3cnKTsKK30sICdjbG9zZTogdGhyb3dpbmcgZ2V0dGVyIHNo
b3VsZCBjYXVzZSBjb25zdHJ1Y3RvciB0byB0aHJvdycpOworCit0ZXN0KCgpID0+IHsKKyAgYXNz
ZXJ0X3Rocm93c19leGFjdGx5KGVycm9yMSwgKCkgPT4gbmV3IFdyaXRhYmxlU3RyZWFtKHsKKyAg
ICBnZXQgd3JpdGUoKSB7CisgICAgICB0aHJvdyBlcnJvcjE7CisgICAgfQorICB9KSwgJ2NvbnN0
cnVjdG9yIHNob3VsZCB0aHJvdycpOworfSwgJ3dyaXRlOiB0aHJvd2luZyBnZXR0ZXIgc2hvdWxk
IGNhdXNlIHdyaXRlKCkgYW5kIGNsb3NlZCB0byByZWplY3QnKTsKKworcHJvbWlzZV90ZXN0KHQg
PT4geworICBjb25zdCB3cyA9IG5ldyBXcml0YWJsZVN0cmVhbSh7CisgICAgd3JpdGUoKSB7Cisg
ICAgICB0aHJvdyBlcnJvcjE7CisgICAgfQorICB9KTsKKworICBjb25zdCB3cml0ZXIgPSB3cy5n
ZXRXcml0ZXIoKTsKKworICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3Ix
LCB3cml0ZXIud3JpdGUoJ2EnKSwgJ3dyaXRlIHNob3VsZCByZWplY3Qgd2l0aCB0aGUgdGhyb3du
IGVycm9yJykKKyAgLnRoZW4oKCkgPT4gcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3Ix
LCB3cml0ZXIuY2xvc2VkLCAnY2xvc2VkIHNob3VsZCByZWplY3Qgd2l0aCB0aGUgdGhyb3duIGVy
cm9yJykpOworfSwgJ3dyaXRlOiB0aHJvd2luZyBtZXRob2Qgc2hvdWxkIGNhdXNlIHdyaXRlKCkg
YW5kIGNsb3NlZCB0byByZWplY3QnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworCisgIGxldCBy
ZWplY3RTaW5rV3JpdGVQcm9taXNlOworICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3Ry
ZWFtKHsKKyAgICB3cml0ZSgpIHsKKyAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgociwgcmVqZWN0
KSA9PiB7CisgICAgICAgIHJlamVjdFNpbmtXcml0ZVByb21pc2UgPSByZWplY3Q7CisgICAgICB9
KTsKKyAgICB9CisgIH0pOworCisgIHJldHVybiBmbHVzaEFzeW5jRXZlbnRzKCkudGhlbigoKSA9
PiB7CisgICAgY29uc3Qgd3JpdGVyID0gd3MuZ2V0V3JpdGVyKCk7CisgICAgY29uc3Qgd3JpdGVQ
cm9taXNlID0gd3JpdGVyLndyaXRlKCdhJyk7CisgICAgcmVqZWN0U2lua1dyaXRlUHJvbWlzZShl
cnJvcjEpOworCisgICAgcmV0dXJuIFByb21pc2UuYWxsKFsKKyAgICAgIHByb21pc2VfcmVqZWN0
c19leGFjdGx5KHQsIGVycm9yMSwgd3JpdGVQcm9taXNlLCAnd3JpdGVyIHdyaXRlIG11c3QgcmVq
ZWN0IHdpdGggdGhlIHNhbWUgZXJyb3InKSwKKyAgICAgIHByb21pc2VfcmVqZWN0c19leGFjdGx5
KHQsIGVycm9yMSwgd3JpdGVyLnJlYWR5LCAncmVhZHkgcHJvbWlzZSBtdXN0IHJlamVjdCB3aXRo
IHRoZSBzYW1lIGVycm9yJykKKyAgICBdKTsKKyAgfSkKKyAgLnRoZW4oKCkgPT4geworICAgIGFz
c2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbJ3dyaXRlJywgJ2EnXSk7CisgIH0pOworCit9
LCAnd3JpdGU6IHJldHVybmluZyBhIHByb21pc2UgdGhhdCBiZWNvbWVzIHJlamVjdGVkIGFmdGVy
IHRoZSB3cml0ZXIgd3JpdGUoKSBzaG91bGQgY2F1c2Ugd3JpdGVyIHdyaXRlKCkgYW5kIHJlYWR5
ICcgKworICAgJ3RvIHJlamVjdCcpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisKKyAgY29uc3Qg
d3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSh7CisgICAgd3JpdGUoKSB7CisgICAgICBpZiAo
d3MuZXZlbnRzLmxlbmd0aCA9PT0gMikgeworICAgICAgICByZXR1cm4gZGVsYXkoMCk7CisgICAg
ICB9CisKKyAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcjEpOworICAgIH0KKyAgfSk7
CisKKyAgY29uc3Qgd3JpdGVyID0gd3MuZ2V0V3JpdGVyKCk7CisKKyAgLy8gRG8gbm90IHdhaXQg
Zm9yIHRoaXM7IHdlIHdhbnQgdG8gdGVzdCB0aGUgcmVhZHkgcHJvbWlzZSB3aGVuIHRoZSBzdHJl
YW0gaXMgImZ1bGwiIChkZXNpcmVkU2l6ZSA9IDApLCBidXQgaWYgd2Ugd2FpdAorICAvLyB0aGVu
IHRoZSBzdHJlYW0gd2lsbCB0cmFuc2l0aW9uIGJhY2sgdG8gImVtcHR5IiAoZGVzaXJlZFNpemUg
PSAxKQorICB3cml0ZXIud3JpdGUoJ2EnKTsKKyAgY29uc3QgcmVhZHlQcm9taXNlID0gd3JpdGVy
LnJlYWR5OworCisgIHJldHVybiBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIHdy
aXRlci53cml0ZSgnYicpLCAnc2Vjb25kIHdyaXRlIG11c3QgcmVqZWN0IHdpdGggdGhlIHNhbWUg
ZXJyb3InKS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfZXF1YWxzKHdyaXRlci5yZWFkeSwgcmVh
ZHlQcm9taXNlLAorICAgICAgJ3RoZSByZWFkeSBwcm9taXNlIG11c3Qgbm90IGNoYW5nZSwgc2lu
Y2UgdGhlIHF1ZXVlIHdhcyBmdWxsIGFmdGVyIHRoZSBmaXJzdCB3cml0ZSwgc28gdGhlIHBlbmRp
bmcgb25lIHNpbXBseSAnICsKKyAgICAgICd0cmFuc2l0aW9uZWQnKTsKKyAgICByZXR1cm4gcHJv
bWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCB3cml0ZXIucmVhZHksICdyZWFkeSBwcm9t
aXNlIG11c3QgcmVqZWN0IHdpdGggdGhlIHNhbWUgZXJyb3InKTsKKyAgfSkKKyAgLnRoZW4oKCkg
PT4gYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsnd3JpdGUnLCAnYScsICd3cml0ZScs
ICdiJ10pKTsKKworfSwgJ3dyaXRlOiByZXR1cm5pbmcgYSByZWplY3RlZCBwcm9taXNlIChzZWNv
bmQgd3JpdGUpIHNob3VsZCBjYXVzZSB3cml0ZXIgd3JpdGUoKSBhbmQgcmVhZHkgdG8gcmVqZWN0
Jyk7CisKK3Rlc3QoKCkgPT4geworICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4g
bmV3IFdyaXRhYmxlU3RyZWFtKHsKKyAgICBhYm9ydDogeyBhcHBseSgpIHt9IH0KKyAgfSksICdj
b25zdHJ1Y3RvciBzaG91bGQgdGhyb3cnKTsKK30sICdhYm9ydDogbm9uLWZ1bmN0aW9uIGFib3J0
IG1ldGhvZCB3aXRoIC5hcHBseScpOworCit0ZXN0KCgpID0+IHsKKyAgYXNzZXJ0X3Rocm93c19l
eGFjdGx5KGVycm9yMSwgKCkgPT4gbmV3IFdyaXRhYmxlU3RyZWFtKHsKKyAgICBnZXQgYWJvcnQo
KSB7CisgICAgICB0aHJvdyBlcnJvcjE7CisgICAgfQorICB9KSwgJ2NvbnN0cnVjdG9yIHNob3Vs
ZCB0aHJvdycpOworfSwgJ2Fib3J0OiB0aHJvd2luZyBnZXR0ZXIgc2hvdWxkIGNhdXNlIGFib3J0
KCkgYW5kIGNsb3NlZCB0byByZWplY3QnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBjb25z
dCBhYm9ydFJlYXNvbiA9IG5ldyBFcnJvcignZGlmZmVyZW50IHN0cmluZycpOworICBjb25zdCB3
cyA9IG5ldyBXcml0YWJsZVN0cmVhbSh7CisgICAgYWJvcnQoKSB7CisgICAgICB0aHJvdyBlcnJv
cjE7CisgICAgfQorICB9KTsKKworICBjb25zdCB3cml0ZXIgPSB3cy5nZXRXcml0ZXIoKTsKKwor
ICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCB3cml0ZXIuYWJvcnQo
YWJvcnRSZWFzb24pLCAnYWJvcnQgc2hvdWxkIHJlamVjdCB3aXRoIHRoZSB0aHJvd24gZXJyb3In
KQorICAudGhlbigoKSA9PiBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBhYm9ydFJlYXNvbiwg
d3JpdGVyLmNsb3NlZCwgJ2Nsb3NlZCBzaG91bGQgcmVqZWN0IHdpdGggYWJvcnRSZWFzb24nKSk7
Cit9LCAnYWJvcnQ6IHRocm93aW5nIG1ldGhvZCBzaG91bGQgY2F1c2UgYWJvcnQoKSBhbmQgY2xv
c2VkIHRvIHJlamVjdCcpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvYmFkLXVuZGVybHlpbmct
c2lua3MuYW55Lndvcmtlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9iYWQtdW5kZXJseWlu
Zy1zaW5rcy5hbnkud29ya2VyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMzI3NzIzNWMzNzFm
Y2RjMWY3Nzg1ZTA0NzhjZmYzMTdmZmM4MTM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVh
bXMvYmFkLXVuZGVybHlpbmctc2lua3MuYW55Lndvcmtlci1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwzNSBAQAorCitGQUlMIHN0YXJ0OiBlcnJvcnMgaW4gc3RhcnQgY2F1c2UgV3JpdGFibGVTdHJl
YW0gY29uc3RydWN0b3IgdG8gdGhyb3cgYXNzZXJ0X3Rocm93c19leGFjdGx5OiBjb25zdHJ1Y3Rv
ciBzaG91bGQgdGhyb3cgc2FtZSBlcnJvciBhcyB0aHJvd2luZyBzdGFydCBnZXR0ZXIgZnVuY3Rp
b24gIigpID0+IHsKKyAgICBuZXcgV3JpdGFibGVTdHJlYW0oeworICAgICAgZ2V0IHN0YXJ0KCkg
eworICAgICAgICB0aHJvdyBlcnJvcjE7CisgICAgICB9CisgICAgfSk7CisgIH0iIHRocmV3IG9i
amVjdCAiUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFt
IiBidXQgd2UgZXhwZWN0ZWQgaXQgdG8gdGhyb3cgb2JqZWN0ICJlcnJvcjE6IGVycm9yMSIKK0ZB
SUwgY2xvc2U6IHRocm93aW5nIG1ldGhvZCBzaG91bGQgY2F1c2Ugd3JpdGVyIGNsb3NlKCkgYW5k
IHJlYWR5IHRvIHJlamVjdCBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJ
TCBjbG9zZTogcmV0dXJuaW5nIGEgcmVqZWN0ZWQgcHJvbWlzZSBzaG91bGQgY2F1c2Ugd3JpdGVy
IGNsb3NlKCkgYW5kIHJlYWR5IHRvIHJlamVjdCBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJs
ZVN0cmVhbQorRkFJTCBjbG9zZTogdGhyb3dpbmcgZ2V0dGVyIHNob3VsZCBjYXVzZSBjb25zdHJ1
Y3RvciB0byB0aHJvdyBhc3NlcnRfdGhyb3dzX2V4YWN0bHk6IGNvbnN0cnVjdG9yIHNob3VsZCB0
aHJvdyBmdW5jdGlvbiAiKCkgPT4gbmV3IFdyaXRhYmxlU3RyZWFtKHsKKyAgICBnZXQgY2xvc2Uo
KSB7CisgICAgICB0aHJvdyBlcnJvcjE7CisgICAgfQorICB9KSIgdGhyZXcgb2JqZWN0ICJSZWZl
cmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0iIGJ1dCB3ZSBl
eHBlY3RlZCBpdCB0byB0aHJvdyBvYmplY3QgImVycm9yMTogZXJyb3IxIgorRkFJTCB3cml0ZTog
dGhyb3dpbmcgZ2V0dGVyIHNob3VsZCBjYXVzZSB3cml0ZSgpIGFuZCBjbG9zZWQgdG8gcmVqZWN0
IGFzc2VydF90aHJvd3NfZXhhY3RseTogY29uc3RydWN0b3Igc2hvdWxkIHRocm93IGZ1bmN0aW9u
ICIoKSA9PiBuZXcgV3JpdGFibGVTdHJlYW0oeworICAgIGdldCB3cml0ZSgpIHsKKyAgICAgIHRo
cm93IGVycm9yMTsKKyAgICB9CisgIH0pIiB0aHJldyBvYmplY3QgIlJlZmVyZW5jZUVycm9yOiBD
YW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbSIgYnV0IHdlIGV4cGVjdGVkIGl0IHRv
IHRocm93IG9iamVjdCAiZXJyb3IxOiBlcnJvcjEiCitGQUlMIHdyaXRlOiB0aHJvd2luZyBtZXRo
b2Qgc2hvdWxkIGNhdXNlIHdyaXRlKCkgYW5kIGNsb3NlZCB0byByZWplY3QgQ2FuJ3QgZmluZCB2
YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgd3JpdGU6IHJldHVybmluZyBhIHByb21pc2Ug
dGhhdCBiZWNvbWVzIHJlamVjdGVkIGFmdGVyIHRoZSB3cml0ZXIgd3JpdGUoKSBzaG91bGQgY2F1
c2Ugd3JpdGVyIHdyaXRlKCkgYW5kIHJlYWR5IHRvIHJlamVjdCBDYW4ndCBmaW5kIHZhcmlhYmxl
OiBXcml0YWJsZVN0cmVhbQorRkFJTCB3cml0ZTogcmV0dXJuaW5nIGEgcmVqZWN0ZWQgcHJvbWlz
ZSAoc2Vjb25kIHdyaXRlKSBzaG91bGQgY2F1c2Ugd3JpdGVyIHdyaXRlKCkgYW5kIHJlYWR5IHRv
IHJlamVjdCBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBhYm9ydDog
bm9uLWZ1bmN0aW9uIGFib3J0IG1ldGhvZCB3aXRoIC5hcHBseSBhc3NlcnRfdGhyb3dzX2pzOiBj
b25zdHJ1Y3RvciBzaG91bGQgdGhyb3cgZnVuY3Rpb24gIigpID0+IG5ldyBXcml0YWJsZVN0cmVh
bSh7CisgICAgYWJvcnQ6IHsgYXBwbHkoKSB7fSB9CisgIH0pIiB0aHJldyBvYmplY3QgIlJlZmVy
ZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbSIgKCJSZWZlcmVu
Y2VFcnJvciIpIGV4cGVjdGVkIGluc3RhbmNlIG9mIGZ1bmN0aW9uICJmdW5jdGlvbiBUeXBlRXJy
b3IoKSB7CisgICAgW25hdGl2ZSBjb2RlXQorfSIgKCJUeXBlRXJyb3IiKQorRkFJTCBhYm9ydDog
dGhyb3dpbmcgZ2V0dGVyIHNob3VsZCBjYXVzZSBhYm9ydCgpIGFuZCBjbG9zZWQgdG8gcmVqZWN0
IGFzc2VydF90aHJvd3NfZXhhY3RseTogY29uc3RydWN0b3Igc2hvdWxkIHRocm93IGZ1bmN0aW9u
ICIoKSA9PiBuZXcgV3JpdGFibGVTdHJlYW0oeworICAgIGdldCBhYm9ydCgpIHsKKyAgICAgIHRo
cm93IGVycm9yMTsKKyAgICB9CisgIH0pIiB0aHJldyBvYmplY3QgIlJlZmVyZW5jZUVycm9yOiBD
YW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbSIgYnV0IHdlIGV4cGVjdGVkIGl0IHRv
IHRocm93IG9iamVjdCAiZXJyb3IxOiBlcnJvcjEiCitGQUlMIGFib3J0OiB0aHJvd2luZyBtZXRo
b2Qgc2hvdWxkIGNhdXNlIGFib3J0KCkgYW5kIGNsb3NlZCB0byByZWplY3QgQ2FuJ3QgZmluZCB2
YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvYmFkLXVu
ZGVybHlpbmctc2lua3MuYW55Lndvcmtlci5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvYmFkLXVuZGVybHlp
bmctc2lua3MuYW55Lndvcmtlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzODI5MTM1MjhlNjkzYjNhNWQ1
NmM2NjBhNDUwNjA5ODBiNTQ4YzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9iYWQt
dW5kZXJseWluZy1zaW5rcy5hbnkud29ya2VyLmh0bWwKQEAgLTAsMCArMSBAQAorPCEtLSBUaGlz
IGZpbGUgaXMgcmVxdWlyZWQgZm9yIFdlYktpdCB0ZXN0IGluZnJhc3RydWN0dXJlIHRvIHJ1biB0
aGUgdGVtcGxhdGVkIHRlc3QgLS0+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
L3dyaXRhYmxlLXN0cmVhbXMvYnl0ZS1sZW5ndGgtcXVldWluZy1zdHJhdGVneS5hbnktZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJl
YW1zL3dyaXRhYmxlLXN0cmVhbXMvYnl0ZS1sZW5ndGgtcXVldWluZy1zdHJhdGVneS5hbnktZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQzMmRiZDkzNDU1NmRjNDNkMzg5YWMxMjk5ZWJhNjg2NTAy
YTRhNGIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9ieXRlLWxlbmd0aC1xdWV1aW5n
LXN0cmF0ZWd5LmFueS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACisKK0ZBSUwgQ2xvc2lu
ZyBhIHdyaXRhYmxlIHN0cmVhbSB3aXRoIGluLWZsaWdodCB3cml0ZXMgYmVsb3cgdGhlIGhpZ2gg
d2F0ZXIgbWFyayBkZWxheXMgdGhlIGNsb3NlIGNhbGwgcHJvcGVybHkgd3MuZ2V0V3JpdGVyIGlz
IG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicgaXMg
dW5kZWZpbmVkKQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9ieXRlLWxlbmd0aC1xdWV1aW5n
LXN0cmF0ZWd5LmFueS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvYnl0ZS1sZW5ndGgtcXVldWluZy1zdHJh
dGVneS5hbnkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMzgyOTEzNTI4ZTY5M2IzYTVkNTZjNjYwYTQ1MDYw
OTgwYjU0OGMzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvYnl0ZS1sZW5ndGgtcXVl
dWluZy1zdHJhdGVneS5hbnkuaHRtbApAQCAtMCwwICsxIEBACis8IS0tIFRoaXMgZmlsZSBpcyBy
ZXF1aXJlZCBmb3IgV2ViS2l0IHRlc3QgaW5mcmFzdHJ1Y3R1cmUgdG8gcnVuIHRoZSB0ZW1wbGF0
ZWQgdGVzdCAtLT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUt
c3RyZWFtcy9ieXRlLWxlbmd0aC1xdWV1aW5nLXN0cmF0ZWd5LmFueS5qcyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1z
L2J5dGUtbGVuZ3RoLXF1ZXVpbmctc3RyYXRlZ3kuYW55LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlhNjFkZDdj
YzY5Nzg3ZWFiZTljZmYyZDhlNTAwYzY5NGY0YmVlZTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUt
c3RyZWFtcy9ieXRlLWxlbmd0aC1xdWV1aW5nLXN0cmF0ZWd5LmFueS5qcwpAQCAtMCwwICsxLDI4
IEBACisvLyBNRVRBOiBnbG9iYWw9d2luZG93LHdvcmtlcixqc3NoZWxsCisndXNlIHN0cmljdCc7
CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgbGV0IGlzRG9uZSA9IGZhbHNlOworICBjb25zdCB3
cyA9IG5ldyBXcml0YWJsZVN0cmVhbSgKKyAgICB7CisgICAgICB3cml0ZSgpIHsKKyAgICAgICAg
cmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4geworICAgICAgICAgIHQuc3RlcF90aW1lb3V0
KCgpID0+IHsKKyAgICAgICAgICAgIGlzRG9uZSA9IHRydWU7CisgICAgICAgICAgICByZXNvbHZl
KCk7CisgICAgICAgICAgfSwgMjAwKTsKKyAgICAgICAgfSk7CisgICAgICB9LAorCisgICAgICBj
bG9zZSgpIHsKKyAgICAgICAgYXNzZXJ0X3RydWUoaXNEb25lLCAnY2xvc2UgaXMgb25seSBjYWxs
ZWQgb25jZSB0aGUgcHJvbWlzZSBoYXMgYmVlbiByZXNvbHZlZCcpOworICAgICAgfQorICAgIH0s
CisgICAgbmV3IEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3koeyBoaWdoV2F0ZXJNYXJrOiAxMDI0
ICogMTYgfSkKKyAgKTsKKworICBjb25zdCB3cml0ZXIgPSB3cy5nZXRXcml0ZXIoKTsKKyAgd3Jp
dGVyLndyaXRlKHsgYnl0ZUxlbmd0aDogMTAyNCB9KTsKKworICByZXR1cm4gd3JpdGVyLmNsb3Nl
KCk7Cit9LCAnQ2xvc2luZyBhIHdyaXRhYmxlIHN0cmVhbSB3aXRoIGluLWZsaWdodCB3cml0ZXMg
YmVsb3cgdGhlIGhpZ2ggd2F0ZXIgbWFyayBkZWxheXMgdGhlIGNsb3NlIGNhbGwgcHJvcGVybHkn
KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL2J5dGUtbGVuZ3RoLXF1ZXVpbmctc3RyYXRlZ3ku
YW55Lndvcmtlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9ieXRlLWxlbmd0aC1xdWV1aW5n
LXN0cmF0ZWd5LmFueS53b3JrZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlmNzU0MWQ0ZDg0
YzkxZDRlNTFjODk2NWQ0ZmQ2M2VhOWZhZDY1NjgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3Ry
ZWFtcy9ieXRlLWxlbmd0aC1xdWV1aW5nLXN0cmF0ZWd5LmFueS53b3JrZXItZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsMyBAQAorCitGQUlMIENsb3NpbmcgYSB3cml0YWJsZSBzdHJlYW0gd2l0aCBp
bi1mbGlnaHQgd3JpdGVzIGJlbG93IHRoZSBoaWdoIHdhdGVyIG1hcmsgZGVsYXlzIHRoZSBjbG9z
ZSBjYWxsIHByb3Blcmx5IENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy93cml0YWJsZS1zdHJlYW1zL2J5dGUtbGVuZ3RoLXF1ZXVpbmctc3RyYXRlZ3kuYW55Lndv
cmtlci5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
dHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvYnl0ZS1sZW5ndGgtcXVldWluZy1zdHJhdGVneS5hbnku
d29ya2VyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjM4MjkxMzUyOGU2OTNiM2E1ZDU2YzY2MGE0NTA2MDk4
MGI1NDhjMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL2J5dGUtbGVuZ3RoLXF1ZXVp
bmctc3RyYXRlZ3kuYW55Lndvcmtlci5odG1sCkBAIC0wLDAgKzEgQEAKKzwhLS0gVGhpcyBmaWxl
IGlzIHJlcXVpcmVkIGZvciBXZWJLaXQgdGVzdCBpbmZyYXN0cnVjdHVyZSB0byBydW4gdGhlIHRl
bXBsYXRlZCB0ZXN0IC0tPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0
YWJsZS1zdHJlYW1zL2Nsb3NlLmFueS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9jbG9zZS5h
bnktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNmMTU0NTI3YmVlY2M0NTEzOTRkNGNlOGM2ZWQ4
NTRmMDU2YzQxNzYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9jbG9zZS5hbnktZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjcgQEAKKworRkFJTCBmdWxmaWxsbWVudCB2YWx1ZSBvZiB3
cml0ZXIuY2xvc2UoKSBjYWxsIG11c3QgYmUgdW5kZWZpbmVkIGV2ZW4gaWYgdGhlIHVuZGVybHlp
bmcgc2luayByZXR1cm5zIGEgbm9uLXVuZGVmaW5lZCB2YWx1ZSB3cy5nZXRXcml0ZXIgaXMgbm90
IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3JpdGVyKCknLCAnd3MuZ2V0V3JpdGVyJyBpcyB1bmRl
ZmluZWQpCitGQUlMIHdoZW4gc2luayBjYWxscyBlcnJvciBhc3luY2hyb25vdXNseSB3aGlsZSBz
aW5rIGNsb3NlIGlzIGluLWZsaWdodCwgdGhlIHN0cmVhbSBzaG91bGQgbm90IGJlY29tZSBlcnJv
cmVkIHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0ZXIoKScs
ICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkKK0ZBSUwgd2hlbiBzaW5rIGNhbGxzIGVycm9y
IHN5bmNocm9ub3VzbHkgd2hpbGUgY2xvc2luZywgdGhlIHN0cmVhbSBzaG91bGQgbm90IGJlY29t
ZSBlcnJvcmVkIHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0
ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkKK0ZBSUwgd2hlbiB0aGUgc2luayB0
aHJvd3MgZHVyaW5nIGNsb3NlLCBhbmQgdGhlIGNsb3NlIGlzIHJlcXVlc3RlZCB3aGlsZSBhIHdy
aXRlIGlzIHN0aWxsIGluLWZsaWdodCwgdGhlIHN0cmVhbSBzaG91bGQgYmVjb21lIGVycm9yZWQg
ZHVyaW5nIHRoZSBjbG9zZSB3cy5nZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3Mu
Z2V0V3JpdGVyKCknLCAnd3MuZ2V0V3JpdGVyJyBpcyB1bmRlZmluZWQpCitGQUlMIHJlbGVhc2VM
b2NrIG9uIGEgc3RyZWFtIHdpdGggYSBwZW5kaW5nIHdyaXRlIGluIHdoaWNoIHRoZSBzdHJlYW0g
aGFzIGJlZW4gZXJyb3JlZCB3cy5nZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3Mu
Z2V0V3JpdGVyKCknLCAnd3MuZ2V0V3JpdGVyJyBpcyB1bmRlZmluZWQpCitGQUlMIHJlbGVhc2VM
b2NrIG9uIGEgc3RyZWFtIHdpdGggYSBwZW5kaW5nIGNsb3NlIGluIHdoaWNoIGNvbnRyb2xsZXIu
ZXJyb3IoKSB3YXMgY2FsbGVkIHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3
cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkKK0ZBSUwgd2hlbiBj
bG9zZSBpcyBjYWxsZWQgb24gYSBXcml0YWJsZVN0cmVhbSBpbiB3cml0YWJsZSBzdGF0ZSwgcmVh
ZHkgc2hvdWxkIHJldHVybiBhIGZ1bGZpbGxlZCBwcm9taXNlIHdzLmdldFdyaXRlciBpcyBub3Qg
YSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVm
aW5lZCkKK0ZBSUwgd2hlbiBjbG9zZSBpcyBjYWxsZWQgb24gYSBXcml0YWJsZVN0cmVhbSBpbiB3
YWl0aW5nIHN0YXRlLCByZWFkeSBwcm9taXNlIHNob3VsZCBiZSBmdWxmaWxsZWQgd3MuZ2V0V3Jp
dGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRl
cicgaXMgdW5kZWZpbmVkKQorRkFJTCB3aGVuIGNsb3NlIGlzIGNhbGxlZCBvbiBhIFdyaXRhYmxl
U3RyZWFtIGluIHdhaXRpbmcgc3RhdGUsIHJlYWR5IHNob3VsZCBiZSBmdWxmaWxsZWQgaW1tZWRp
YXRlbHkgZXZlbiBpZiBjbG9zZSB0YWtlcyBhIGxvbmcgdGltZSB3cy5nZXRXcml0ZXIgaXMgbm90
IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3JpdGVyKCknLCAnd3MuZ2V0V3JpdGVyJyBpcyB1bmRl
ZmluZWQpCitGQUlMIHJldHVybmluZyBhIHRoZW5hYmxlIGZyb20gY2xvc2UoKSBzaG91bGQgd29y
ayB3cy5nZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3JpdGVyKCknLCAn
d3MuZ2V0V3JpdGVyJyBpcyB1bmRlZmluZWQpCitGQUlMIHJlbGVhc2VMb2NrKCkgc2hvdWxkIG5v
dCBjaGFuZ2UgdGhlIHJlc3VsdCBvZiBzeW5jIGNsb3NlKCkgd3MuZ2V0V3JpdGVyIGlzIG5vdCBh
IGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicgaXMgdW5kZWZp
bmVkKQorRkFJTCByZWxlYXNlTG9jaygpIHNob3VsZCBub3QgY2hhbmdlIHRoZSByZXN1bHQgb2Yg
YXN5bmMgY2xvc2UoKSB3cy5nZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0
V3JpdGVyKCknLCAnd3MuZ2V0V3JpdGVyJyBpcyB1bmRlZmluZWQpCitGQUlMIGNsb3NlKCkgc2hv
dWxkIHNldCBzdGF0ZSB0byBDTE9TRUQgZXZlbiBpZiB3cml0ZXIgaGFzIGRldGFjaGVkIHdzLmdl
dFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRX
cml0ZXInIGlzIHVuZGVmaW5lZCkKK0ZBSUwgdGhlIHByb21pc2UgcmV0dXJuZWQgYnkgYXN5bmMg
YWJvcnQgZHVyaW5nIGNsb3NlIHNob3VsZCByZXNvbHZlIHdzLmdldFdyaXRlciBpcyBub3QgYSBm
dW5jdGlvbi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5l
ZCkKK0ZBSUwgcHJvbWlzZXMgbXVzdCBmdWxmaWxsL3JlamVjdCBpbiB0aGUgZXhwZWN0ZWQgb3Jk
ZXIgb24gY2xvc3VyZSB3cy5nZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0
V3JpdGVyKCknLCAnd3MuZ2V0V3JpdGVyJyBpcyB1bmRlZmluZWQpCitGQUlMIHByb21pc2VzIG11
c3QgZnVsZmlsbC9yZWplY3QgaW4gdGhlIGV4cGVjdGVkIG9yZGVyIG9uIGFib3J0ZWQgY2xvc3Vy
ZSBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJU
eXBlRXJyb3I6IHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0
ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkiCitGQUlMIHByb21pc2VzIG11c3Qg
ZnVsZmlsbC9yZWplY3QgaW4gdGhlIGV4cGVjdGVkIG9yZGVyIG9uIGFib3J0ZWQgYW5kIGVycm9y
ZWQgY2xvc3VyZSBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTog
b2JqZWN0ICJUeXBlRXJyb3I6IHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3
cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkiCitGQUlMIGNsb3Nl
KCkgc2hvdWxkIG5vdCByZWplY3QgdW50aWwgbm8gc2luayBtZXRob2RzIGFyZSBpbiBmbGlnaHQg
d3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywgJ3dz
LmdldFdyaXRlcicgaXMgdW5kZWZpbmVkKQorRkFJTCByZWFkeSBwcm9taXNlIHNob3VsZCBiZSBp
bml0aWFsaXNlZCBhcyBmdWxmaWxsZWQgZm9yIGEgd3JpdGVyIG9uIGEgY2xvc2VkIHN0cmVhbSB3
cy5nZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3JpdGVyKCknLCAnd3Mu
Z2V0V3JpdGVyJyBpcyB1bmRlZmluZWQpCitGQUlMIGNsb3NlKCkgb24gYSB3cml0YWJsZSBzdHJl
YW0gc2hvdWxkIHdvcmsgd3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdl
dFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicgaXMgdW5kZWZpbmVkKQorRkFJTCBjbG9zZSgpIG9u
IGEgbG9ja2VkIHN0cmVhbSBzaG91bGQgcmVqZWN0IHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5j
dGlvbi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkK
K0ZBSUwgY2xvc2UoKSBvbiBhbiBlcnJvcmluZyBzdHJlYW0gc2hvdWxkIHJlamVjdCBjb250cm9s
bGVyLmVycm9yIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ2NvbnRyb2xsZXIuZXJyb3IoZXJyb3Ix
KScsICdjb250cm9sbGVyLmVycm9yJyBpcyB1bmRlZmluZWQpCitGQUlMIGNsb3NlKCkgb24gYW4g
ZXJyb3JlZCBzdHJlYW0gc2hvdWxkIHJlamVjdCBjb250cm9sbGVyLmVycm9yIGlzIG5vdCBhIGZ1
bmN0aW9uLiAoSW4gJ2NvbnRyb2xsZXIuZXJyb3IoZXJyb3IxKScsICdjb250cm9sbGVyLmVycm9y
JyBpcyB1bmRlZmluZWQpCitGQUlMIGNsb3NlKCkgb24gYW4gY2xvc2VkIHN0cmVhbSBzaG91bGQg
cmVqZWN0IHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0ZXIo
KScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkKK0ZBSUwgY2xvc2UoKSBvbiBhIHN0cmVh
bSB3aXRoIGEgcGVuZGluZyBjbG9zZSBzaG91bGQgcmVqZWN0IHdzLmdldFdyaXRlciBpcyBub3Qg
YSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVm
aW5lZCkKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvY2xvc2UuYW55Lmh0bWwgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3Ry
ZWFtcy9jbG9zZS5hbnkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMzgyOTEzNTI4ZTY5M2IzYTVkNTZjNjYw
YTQ1MDYwOTgwYjU0OGMzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvY2xvc2UuYW55
Lmh0bWwKQEAgLTAsMCArMSBAQAorPCEtLSBUaGlzIGZpbGUgaXMgcmVxdWlyZWQgZm9yIFdlYktp
dCB0ZXN0IGluZnJhc3RydWN0dXJlIHRvIHJ1biB0aGUgdGVtcGxhdGVkIHRlc3QgLS0+ClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvY2xvc2UuYW55
LmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
L3dyaXRhYmxlLXN0cmVhbXMvY2xvc2UuYW55LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNmOTk3ZWQ4NGNkY2Fj
MDY0NDlmZDE2ZGUxOGY1YWQzZTcxNmU4ZWEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFt
cy9jbG9zZS5hbnkuanMKQEAgLTAsMCArMSw0NzAgQEAKKy8vIE1FVEE6IGdsb2JhbD13aW5kb3cs
d29ya2VyLGpzc2hlbGwKKy8vIE1FVEE6IHNjcmlwdD0uLi9yZXNvdXJjZXMvdGVzdC11dGlscy5q
cworLy8gTUVUQTogc2NyaXB0PS4uL3Jlc291cmNlcy9yZWNvcmRpbmctc3RyZWFtcy5qcworJ3Vz
ZSBzdHJpY3QnOworCitjb25zdCBlcnJvcjEgPSBuZXcgRXJyb3IoJ2Vycm9yMScpOworZXJyb3Ix
Lm5hbWUgPSAnZXJyb3IxJzsKKworY29uc3QgZXJyb3IyID0gbmV3IEVycm9yKCdlcnJvcjInKTsK
K2Vycm9yMi5uYW1lID0gJ2Vycm9yMic7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisgIGNvbnN0
IHdzID0gbmV3IFdyaXRhYmxlU3RyZWFtKHsKKyAgICBjbG9zZSgpIHsKKyAgICAgIHJldHVybiAn
SGVsbG8nOworICAgIH0KKyAgfSk7CisKKyAgY29uc3Qgd3JpdGVyID0gd3MuZ2V0V3JpdGVyKCk7
CisKKyAgY29uc3QgY2xvc2VQcm9taXNlID0gd3JpdGVyLmNsb3NlKCk7CisgIHJldHVybiBjbG9z
ZVByb21pc2UudGhlbih2YWx1ZSA9PiBhc3NlcnRfZXF1YWxzKHZhbHVlLCB1bmRlZmluZWQsICdm
dWxmaWxsbWVudCB2YWx1ZSBtdXN0IGJlIHVuZGVmaW5lZCcpKTsKK30sICdmdWxmaWxsbWVudCB2
YWx1ZSBvZiB3cml0ZXIuY2xvc2UoKSBjYWxsIG11c3QgYmUgdW5kZWZpbmVkIGV2ZW4gaWYgdGhl
IHVuZGVybHlpbmcgc2luayByZXR1cm5zIGEgbm9uLXVuZGVmaW5lZCAnICsKKyAgICAndmFsdWUn
KTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgbGV0IGNvbnRyb2xsZXI7CisgIGxldCByZXNv
bHZlQ2xvc2U7CisgIGNvbnN0IHdzID0gbmV3IFdyaXRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChj
KSB7CisgICAgICBjb250cm9sbGVyID0gYzsKKyAgICB9LAorICAgIGNsb3NlKCkgeworICAgICAg
cmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4geworICAgICAgICByZXNvbHZlQ2xvc2UgPSBy
ZXNvbHZlOworICAgICAgfSk7CisgICAgfQorICB9KTsKKworICBjb25zdCB3cml0ZXIgPSB3cy5n
ZXRXcml0ZXIoKTsKKworICBjb25zdCBjbG9zZVByb21pc2UgPSB3cml0ZXIuY2xvc2UoKTsKKyAg
cmV0dXJuIGZsdXNoQXN5bmNFdmVudHMoKS50aGVuKCgpID0+IHsKKyAgICBjb250cm9sbGVyLmVy
cm9yKGVycm9yMSk7CisgICAgcmV0dXJuIGZsdXNoQXN5bmNFdmVudHMoKTsKKyAgfSkudGhlbigo
KSA9PiB7CisgICAgcmVzb2x2ZUNsb3NlKCk7CisgICAgcmV0dXJuIFByb21pc2UuYWxsKFsKKyAg
ICAgIGNsb3NlUHJvbWlzZSwKKyAgICAgIHdyaXRlci5jbG9zZWQsCisgICAgICBmbHVzaEFzeW5j
RXZlbnRzKCkudGhlbigoKSA9PiB3cml0ZXIuY2xvc2VkKV0pOworICB9KTsKK30sICd3aGVuIHNp
bmsgY2FsbHMgZXJyb3IgYXN5bmNocm9ub3VzbHkgd2hpbGUgc2luayBjbG9zZSBpcyBpbi1mbGln
aHQsIHRoZSBzdHJlYW0gc2hvdWxkIG5vdCBiZWNvbWUgZXJyb3JlZCcpOworCitwcm9taXNlX3Rl
c3QoKCkgPT4geworICBsZXQgY29udHJvbGxlcjsKKyAgY29uc3QgcGFzc2VkRXJyb3IgPSBuZXcg
RXJyb3IoJ2Vycm9yIG1lJyk7CisgIGNvbnN0IHdzID0gbmV3IFdyaXRhYmxlU3RyZWFtKHsKKyAg
ICBzdGFydChjKSB7CisgICAgICBjb250cm9sbGVyID0gYzsKKyAgICB9LAorICAgIGNsb3NlKCkg
eworICAgICAgY29udHJvbGxlci5lcnJvcihwYXNzZWRFcnJvcik7CisgICAgfQorICB9KTsKKwor
ICBjb25zdCB3cml0ZXIgPSB3cy5nZXRXcml0ZXIoKTsKKworICByZXR1cm4gd3JpdGVyLmNsb3Nl
KCkudGhlbigoKSA9PiB3cml0ZXIuY2xvc2VkKTsKK30sICd3aGVuIHNpbmsgY2FsbHMgZXJyb3Ig
c3luY2hyb25vdXNseSB3aGlsZSBjbG9zaW5nLCB0aGUgc3RyZWFtIHNob3VsZCBub3QgYmVjb21l
IGVycm9yZWQnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBjb25zdCB3cyA9IG5ldyBXcml0
YWJsZVN0cmVhbSh7CisgICAgY2xvc2UoKSB7CisgICAgICB0aHJvdyBlcnJvcjE7CisgICAgfQor
ICB9KTsKKworICBjb25zdCB3cml0ZXIgPSB3cy5nZXRXcml0ZXIoKTsKKworICByZXR1cm4gUHJv
bWlzZS5hbGwoWworICAgIHdyaXRlci53cml0ZSgneScpLAorICAgIHByb21pc2VfcmVqZWN0c19l
eGFjdGx5KHQsIGVycm9yMSwgd3JpdGVyLmNsb3NlKCksICdjbG9zZSgpIG11c3QgcmVqZWN0IHdp
dGggdGhlIGVycm9yJyksCisgICAgcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCB3
cml0ZXIuY2xvc2VkLCAnY2xvc2VkIG11c3QgcmVqZWN0IHdpdGggdGhlIGVycm9yJykKKyAgXSk7
Cit9LCAnd2hlbiB0aGUgc2luayB0aHJvd3MgZHVyaW5nIGNsb3NlLCBhbmQgdGhlIGNsb3NlIGlz
IHJlcXVlc3RlZCB3aGlsZSBhIHdyaXRlIGlzIHN0aWxsIGluLWZsaWdodCwgdGhlIHN0cmVhbSBz
aG91bGQgJyArCisgICAnYmVjb21lIGVycm9yZWQgZHVyaW5nIHRoZSBjbG9zZScpOworCitwcm9t
aXNlX3Rlc3QoKCkgPT4geworICBjb25zdCB3cyA9IG5ldyBXcml0YWJsZVN0cmVhbSh7CisgICAg
d3JpdGUoY2h1bmssIGNvbnRyb2xsZXIpIHsKKyAgICAgIGNvbnRyb2xsZXIuZXJyb3IoZXJyb3Ix
KTsKKyAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgoKSA9PiB7fSk7CisgICAgfQorICB9KTsKKwor
ICBjb25zdCB3cml0ZXIgPSB3cy5nZXRXcml0ZXIoKTsKKyAgd3JpdGVyLndyaXRlKCdhJyk7CisK
KyAgcmV0dXJuIGRlbGF5KDApLnRoZW4oKCkgPT4geworICAgIHdyaXRlci5yZWxlYXNlTG9jaygp
OworICB9KTsKK30sICdyZWxlYXNlTG9jayBvbiBhIHN0cmVhbSB3aXRoIGEgcGVuZGluZyB3cml0
ZSBpbiB3aGljaCB0aGUgc3RyZWFtIGhhcyBiZWVuIGVycm9yZWQnKTsKKworcHJvbWlzZV90ZXN0
KCgpID0+IHsKKyAgbGV0IGNvbnRyb2xsZXI7CisgIGNvbnN0IHdzID0gbmV3IFdyaXRhYmxlU3Ry
ZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjb250cm9sbGVyID0gYzsKKyAgICB9LAorICAg
IGNsb3NlKCkgeworICAgICAgY29udHJvbGxlci5lcnJvcihlcnJvcjEpOworICAgICAgcmV0dXJu
IG5ldyBQcm9taXNlKCgpID0+IHt9KTsKKyAgICB9CisgIH0pOworCisgIGNvbnN0IHdyaXRlciA9
IHdzLmdldFdyaXRlcigpOworICB3cml0ZXIuY2xvc2UoKTsKKworICByZXR1cm4gZGVsYXkoMCku
dGhlbigoKSA9PiB7CisgICAgd3JpdGVyLnJlbGVhc2VMb2NrKCk7CisgIH0pOworfSwgJ3JlbGVh
c2VMb2NrIG9uIGEgc3RyZWFtIHdpdGggYSBwZW5kaW5nIGNsb3NlIGluIHdoaWNoIGNvbnRyb2xs
ZXIuZXJyb3IoKSB3YXMgY2FsbGVkJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisgIGNvbnN0
IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0oKTsKKworICBjb25zdCB3cml0ZXIgPSB3cy5n
ZXRXcml0ZXIoKTsKKworICByZXR1cm4gd3JpdGVyLnJlYWR5LnRoZW4oKCkgPT4geworICAgIGFz
c2VydF9lcXVhbHMod3JpdGVyLmRlc2lyZWRTaXplLCAxLCAnZGVzaXJlZFNpemUgc2hvdWxkIGJl
IDEnKTsKKworICAgIHdyaXRlci5jbG9zZSgpOworICAgIGFzc2VydF9lcXVhbHMod3JpdGVyLmRl
c2lyZWRTaXplLCAxLCAnZGVzaXJlZFNpemUgc2hvdWxkIGJlIHN0aWxsIDEnKTsKKworICAgIHJl
dHVybiB3cml0ZXIucmVhZHkudGhlbih2ID0+IHsKKyAgICAgIGFzc2VydF9lcXVhbHModiwgdW5k
ZWZpbmVkLCAncmVhZHkgcHJvbWlzZSBzaG91bGQgYmUgZnVsZmlsbGVkIHdpdGggdW5kZWZpbmVk
Jyk7CisgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWydjbG9zZSddLCAnd3Jp
dGUgYW5kIGFib3J0IHNob3VsZCBub3QgYmUgY2FsbGVkJyk7CisgICAgfSk7CisgIH0pOworfSwg
J3doZW4gY2xvc2UgaXMgY2FsbGVkIG9uIGEgV3JpdGFibGVTdHJlYW0gaW4gd3JpdGFibGUgc3Rh
dGUsIHJlYWR5IHNob3VsZCByZXR1cm4gYSBmdWxmaWxsZWQgcHJvbWlzZScpOworCitwcm9taXNl
X3Rlc3QoKCkgPT4geworICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKHsKKyAg
ICB3cml0ZSgpIHsKKyAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgoKSA9PiB7fSk7CisgICAgfQor
ICB9KTsKKworICBjb25zdCB3cml0ZXIgPSB3cy5nZXRXcml0ZXIoKTsKKworICByZXR1cm4gd3Jp
dGVyLnJlYWR5LnRoZW4oKCkgPT4geworICAgIHdyaXRlci53cml0ZSgnYScpOworCisgICAgYXNz
ZXJ0X2VxdWFscyh3cml0ZXIuZGVzaXJlZFNpemUsIDAsICdkZXNpcmVkU2l6ZSBzaG91bGQgYmUg
MCcpOworCisgICAgbGV0IGNhbGxlZENsb3NlID0gZmFsc2U7CisgICAgcmV0dXJuIFByb21pc2Uu
YWxsKFsKKyAgICAgIHdyaXRlci5yZWFkeS50aGVuKHYgPT4geworICAgICAgICBhc3NlcnRfZXF1
YWxzKHYsIHVuZGVmaW5lZCwgJ3JlYWR5IHByb21pc2Ugc2hvdWxkIGJlIGZ1bGZpbGxlZCB3aXRo
IHVuZGVmaW5lZCcpOworICAgICAgICBhc3NlcnRfdHJ1ZShjYWxsZWRDbG9zZSwgJ3JlYWR5IHNo
b3VsZCBub3QgYmUgZnVsZmlsbGVkIGJlZm9yZSB3cml0ZXIuY2xvc2UoKSBpcyBjYWxsZWQnKTsK
KyAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsnd3JpdGUnLCAnYSddLCAn
c2luayBhYm9ydCgpIHNob3VsZCBub3QgYmUgY2FsbGVkJyk7CisgICAgICB9KSwKKyAgICAgIGZs
dXNoQXN5bmNFdmVudHMoKS50aGVuKCgpID0+IHsKKyAgICAgICAgd3JpdGVyLmNsb3NlKCk7Cisg
ICAgICAgIGNhbGxlZENsb3NlID0gdHJ1ZTsKKyAgICAgIH0pCisgICAgXSk7CisgIH0pOworfSwg
J3doZW4gY2xvc2UgaXMgY2FsbGVkIG9uIGEgV3JpdGFibGVTdHJlYW0gaW4gd2FpdGluZyBzdGF0
ZSwgcmVhZHkgcHJvbWlzZSBzaG91bGQgYmUgZnVsZmlsbGVkJyk7CisKK3Byb21pc2VfdGVzdCgo
KSA9PiB7CisgIGxldCBhc3luY0Nsb3NlRmluaXNoZWQgPSBmYWxzZTsKKyAgY29uc3Qgd3MgPSBy
ZWNvcmRpbmdXcml0YWJsZVN0cmVhbSh7CisgICAgY2xvc2UoKSB7CisgICAgICByZXR1cm4gZmx1
c2hBc3luY0V2ZW50cygpLnRoZW4oKCkgPT4geworICAgICAgICBhc3luY0Nsb3NlRmluaXNoZWQg
PSB0cnVlOworICAgICAgfSk7CisgICAgfQorICB9KTsKKworICBjb25zdCB3cml0ZXIgPSB3cy5n
ZXRXcml0ZXIoKTsKKyAgcmV0dXJuIHdyaXRlci5yZWFkeS50aGVuKCgpID0+IHsKKyAgICB3cml0
ZXIud3JpdGUoJ2EnKTsKKworICAgIHdyaXRlci5jbG9zZSgpOworCisgICAgcmV0dXJuIHdyaXRl
ci5yZWFkeS50aGVuKHYgPT4geworICAgICAgYXNzZXJ0X2ZhbHNlKGFzeW5jQ2xvc2VGaW5pc2hl
ZCwgJ3JlYWR5IHByb21pc2Ugc2hvdWxkIGJlIGZ1bGZpbGxlZCBiZWZvcmUgYXN5bmMgY2xvc2Ug
Y29tcGxldGVzJyk7CisgICAgICBhc3NlcnRfZXF1YWxzKHYsIHVuZGVmaW5lZCwgJ3JlYWR5IHBy
b21pc2Ugc2hvdWxkIGJlIGZ1bGZpbGxlZCB3aXRoIHVuZGVmaW5lZCcpOworICAgICAgYXNzZXJ0
X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFsnd3JpdGUnLCAnYScsICdjbG9zZSddLCAnc2luayBh
Ym9ydCgpIHNob3VsZCBub3QgYmUgY2FsbGVkJyk7CisgICAgfSk7CisgIH0pOworfSwgJ3doZW4g
Y2xvc2UgaXMgY2FsbGVkIG9uIGEgV3JpdGFibGVTdHJlYW0gaW4gd2FpdGluZyBzdGF0ZSwgcmVh
ZHkgc2hvdWxkIGJlIGZ1bGZpbGxlZCBpbW1lZGlhdGVseSBldmVuIGlmIGNsb3NlICcgKworICAg
ICd0YWtlcyBhIGxvbmcgdGltZScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIGNvbnN0IHJl
amVjdGlvbiA9IHsgbmFtZTogJ2xldHRlcicgfTsKKyAgY29uc3Qgd3MgPSBuZXcgV3JpdGFibGVT
dHJlYW0oeworICAgIGNsb3NlKCkgeworICAgICAgcmV0dXJuIHsKKyAgICAgICAgdGhlbihvbkZ1
bGZpbGxlZCwgb25SZWplY3RlZCkgeyBvblJlamVjdGVkKHJlamVjdGlvbik7IH0KKyAgICAgIH07
CisgICAgfQorICB9KTsKKyAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIHJlamVj
dGlvbiwgd3MuZ2V0V3JpdGVyKCkuY2xvc2UoKSwgJ2Nsb3NlKCkgc2hvdWxkIHJldHVybiBhIHJl
amVjdGlvbicpOworfSwgJ3JldHVybmluZyBhIHRoZW5hYmxlIGZyb20gY2xvc2UoKSBzaG91bGQg
d29yaycpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIGNvbnN0IHdzID0gbmV3IFdyaXRhYmxl
U3RyZWFtKCk7CisgIGNvbnN0IHdyaXRlciA9IHdzLmdldFdyaXRlcigpOworICByZXR1cm4gd3Jp
dGVyLnJlYWR5LnRoZW4oKCkgPT4geworICAgIGNvbnN0IGNsb3NlUHJvbWlzZSA9IHdyaXRlci5j
bG9zZSgpOworICAgIGNvbnN0IGNsb3NlZFByb21pc2UgPSB3cml0ZXIuY2xvc2VkOworICAgIHdy
aXRlci5yZWxlYXNlTG9jaygpOworICAgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAgICBjbG9z
ZVByb21pc2UsCisgICAgICBwcm9taXNlX3JlamVjdHNfanModCwgVHlwZUVycm9yLCBjbG9zZWRQ
cm9taXNlLCAnLmNsb3NlZCBwcm9taXNlIHNob3VsZCBiZSByZWplY3RlZCcpCisgICAgXSk7Cisg
IH0pOworfSwgJ3JlbGVhc2VMb2NrKCkgc2hvdWxkIG5vdCBjaGFuZ2UgdGhlIHJlc3VsdCBvZiBz
eW5jIGNsb3NlKCknKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBjb25zdCB3cyA9IG5ldyBX
cml0YWJsZVN0cmVhbSh7CisgICAgY2xvc2UoKSB7CisgICAgICByZXR1cm4gZmx1c2hBc3luY0V2
ZW50cygpOworICAgIH0KKyAgfSk7CisgIGNvbnN0IHdyaXRlciA9IHdzLmdldFdyaXRlcigpOwor
ICByZXR1cm4gd3JpdGVyLnJlYWR5LnRoZW4oKCkgPT4geworICAgIGNvbnN0IGNsb3NlUHJvbWlz
ZSA9IHdyaXRlci5jbG9zZSgpOworICAgIGNvbnN0IGNsb3NlZFByb21pc2UgPSB3cml0ZXIuY2xv
c2VkOworICAgIHdyaXRlci5yZWxlYXNlTG9jaygpOworICAgIHJldHVybiBQcm9taXNlLmFsbChb
CisgICAgICBjbG9zZVByb21pc2UsCisgICAgICBwcm9taXNlX3JlamVjdHNfanModCwgVHlwZUVy
cm9yLCBjbG9zZWRQcm9taXNlLCAnLmNsb3NlZCBwcm9taXNlIHNob3VsZCBiZSByZWplY3RlZCcp
CisgICAgXSk7CisgIH0pOworfSwgJ3JlbGVhc2VMb2NrKCkgc2hvdWxkIG5vdCBjaGFuZ2UgdGhl
IHJlc3VsdCBvZiBhc3luYyBjbG9zZSgpJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisgIGxl
dCByZXNvbHZlQ2xvc2U7CisgIGNvbnN0IHdzID0gbmV3IFdyaXRhYmxlU3RyZWFtKHsKKyAgICBj
bG9zZSgpIHsKKyAgICAgIGNvbnN0IHByb21pc2UgPSBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsK
KyAgICAgICAgcmVzb2x2ZUNsb3NlID0gcmVzb2x2ZTsKKyAgICAgIH0pOworICAgICAgcmV0dXJu
IHByb21pc2U7CisgICAgfQorICB9KTsKKyAgY29uc3Qgd3JpdGVyID0gd3MuZ2V0V3JpdGVyKCk7
CisgIGNvbnN0IGNsb3NlUHJvbWlzZSA9IHdyaXRlci5jbG9zZSgpOworICB3cml0ZXIucmVsZWFz
ZUxvY2soKTsKKyAgcmV0dXJuIGRlbGF5KDApLnRoZW4oKCkgPT4geworICAgIHJlc29sdmVDbG9z
ZSgpOworICAgIHJldHVybiBjbG9zZVByb21pc2UudGhlbigoKSA9PiB7CisgICAgICBhc3NlcnRf
ZXF1YWxzKHdzLmdldFdyaXRlcigpLmRlc2lyZWRTaXplLCAwLCAnZGVzaXJlZFNpemUgc2hvdWxk
IGJlIDAnKTsKKyAgICB9KTsKKyAgfSk7Cit9LCAnY2xvc2UoKSBzaG91bGQgc2V0IHN0YXRlIHRv
IENMT1NFRCBldmVuIGlmIHdyaXRlciBoYXMgZGV0YWNoZWQnKTsKKworcHJvbWlzZV90ZXN0KCgp
ID0+IHsKKyAgbGV0IHJlc29sdmVDbG9zZTsKKyAgY29uc3Qgd3MgPSBuZXcgV3JpdGFibGVTdHJl
YW0oeworICAgIGNsb3NlKCkgeworICAgICAgY29uc3QgcHJvbWlzZSA9IG5ldyBQcm9taXNlKHJl
c29sdmUgPT4geworICAgICAgICByZXNvbHZlQ2xvc2UgPSByZXNvbHZlOworICAgICAgfSk7Cisg
ICAgICByZXR1cm4gcHJvbWlzZTsKKyAgICB9CisgIH0pOworICBjb25zdCB3cml0ZXIgPSB3cy5n
ZXRXcml0ZXIoKTsKKyAgd3JpdGVyLmNsb3NlKCk7CisgIHdyaXRlci5yZWxlYXNlTG9jaygpOwor
ICByZXR1cm4gZGVsYXkoMCkudGhlbigoKSA9PiB7CisgICAgY29uc3QgYWJvcnRpbmdXcml0ZXIg
PSB3cy5nZXRXcml0ZXIoKTsKKyAgICBjb25zdCBhYm9ydFByb21pc2UgPSBhYm9ydGluZ1dyaXRl
ci5hYm9ydCgpOworICAgIGFib3J0aW5nV3JpdGVyLnJlbGVhc2VMb2NrKCk7CisgICAgcmVzb2x2
ZUNsb3NlKCk7CisgICAgcmV0dXJuIGFib3J0UHJvbWlzZTsKKyAgfSk7Cit9LCAndGhlIHByb21p
c2UgcmV0dXJuZWQgYnkgYXN5bmMgYWJvcnQgZHVyaW5nIGNsb3NlIHNob3VsZCByZXNvbHZlJyk7
CisKKy8vIFRob3VnaCB0aGUgb3JkZXIgaW4gd2hpY2ggdGhlIHByb21pc2VzIGFyZSBmdWxmaWxs
ZWQgb3IgcmVqZWN0ZWQgaXMgYXJiaXRyYXJ5LCB3ZSdyZSBjaGVja2luZyBpdCBmb3IKKy8vIGlu
dGVyb3BlcmFiaWxpdHkuIFdlIGNhbiBjaGFuZ2UgdGhlIG9yZGVyIGFzIGxvbmcgYXMgd2UgZmls
ZSBidWdzIG9uIGFsbCBpbXBsZW1lbnRlcnMgdG8gdXBkYXRlIHRvIHRoZSBsYXRlc3QgdGVzdHMK
Ky8vIHRvIGtlZXAgdGhlbSBpbnRlcm9wZXJhYmxlLgorCitwcm9taXNlX3Rlc3QoKCkgPT4gewor
ICBjb25zdCB3cyA9IG5ldyBXcml0YWJsZVN0cmVhbSh7fSk7CisKKyAgY29uc3Qgd3JpdGVyID0g
d3MuZ2V0V3JpdGVyKCk7CisKKyAgY29uc3QgY2xvc2VQcm9taXNlID0gd3JpdGVyLmNsb3NlKCk7
CisKKyAgY29uc3QgZXZlbnRzID0gW107CisgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAgY2xv
c2VQcm9taXNlLnRoZW4oKCkgPT4geworICAgICAgZXZlbnRzLnB1c2goJ2Nsb3NlUHJvbWlzZScp
OworICAgIH0pLAorICAgIHdyaXRlci5jbG9zZWQudGhlbigoKSA9PiB7CisgICAgICBldmVudHMu
cHVzaCgnY2xvc2VkJyk7CisgICAgfSkKKyAgXSkudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X2Fy
cmF5X2VxdWFscyhldmVudHMsIFsnY2xvc2VQcm9taXNlJywgJ2Nsb3NlZCddLAorICAgICAgICAg
ICAgICAgICAgICAgICAgJ3Byb21pc2VzIG11c3QgZnVsZmlsbC9yZWplY3QgaW4gdGhlIGV4cGVj
dGVkIG9yZGVyJyk7CisgIH0pOworfSwgJ3Byb21pc2VzIG11c3QgZnVsZmlsbC9yZWplY3QgaW4g
dGhlIGV4cGVjdGVkIG9yZGVyIG9uIGNsb3N1cmUnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsK
KyAgY29uc3Qgd3MgPSBuZXcgV3JpdGFibGVTdHJlYW0oe30pOworCisgIC8vIFdhaXQgdW50aWwg
dGhlIFdyaXRhYmxlU3RyZWFtIHN0YXJ0cyBzbyB0aGF0IHRoZSBjbG9zZSgpIGNhbGwgZ2V0cyBw
cm9jZXNzZWQuIE90aGVyd2lzZSwgYWJvcnQoKSB3aWxsIGJlCisgIC8vIHByb2Nlc3NlZCB3aXRo
b3V0IHdhaXRpbmcgZm9yIGNvbXBsZXRpb24gb2YgdGhlIGNsb3NlKCkuCisgIHJldHVybiBkZWxh
eSgwKS50aGVuKCgpID0+IHsKKyAgICBjb25zdCB3cml0ZXIgPSB3cy5nZXRXcml0ZXIoKTsKKwor
ICAgIGNvbnN0IGNsb3NlUHJvbWlzZSA9IHdyaXRlci5jbG9zZSgpOworICAgIGNvbnN0IGFib3J0
UHJvbWlzZSA9IHdyaXRlci5hYm9ydChlcnJvcjEpOworCisgICAgY29uc3QgZXZlbnRzID0gW107
CisgICAgcmV0dXJuIFByb21pc2UuYWxsKFsKKyAgICAgIGNsb3NlUHJvbWlzZS50aGVuKCgpID0+
IHsKKyAgICAgICAgZXZlbnRzLnB1c2goJ2Nsb3NlUHJvbWlzZScpOworICAgICAgfSksCisgICAg
ICBhYm9ydFByb21pc2UudGhlbigoKSA9PiB7CisgICAgICAgIGV2ZW50cy5wdXNoKCdhYm9ydFBy
b21pc2UnKTsKKyAgICAgIH0pLAorICAgICAgd3JpdGVyLmNsb3NlZC50aGVuKCgpID0+IHsKKyAg
ICAgICAgZXZlbnRzLnB1c2goJ2Nsb3NlZCcpOworICAgICAgfSkKKyAgICBdKS50aGVuKCgpID0+
IHsKKyAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoZXZlbnRzLCBbJ2Nsb3NlUHJvbWlzZScsICdh
Ym9ydFByb21pc2UnLCAnY2xvc2VkJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICdwcm9t
aXNlcyBtdXN0IGZ1bGZpbGwvcmVqZWN0IGluIHRoZSBleHBlY3RlZCBvcmRlcicpOworICAgIH0p
OworICB9KTsKK30sICdwcm9taXNlcyBtdXN0IGZ1bGZpbGwvcmVqZWN0IGluIHRoZSBleHBlY3Rl
ZCBvcmRlciBvbiBhYm9ydGVkIGNsb3N1cmUnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBj
b25zdCB3cyA9IG5ldyBXcml0YWJsZVN0cmVhbSh7CisgICAgY2xvc2UoKSB7CisgICAgICByZXR1
cm4gUHJvbWlzZS5yZWplY3QoZXJyb3IxKTsKKyAgICB9CisgIH0pOworCisgIC8vIFdhaXQgdW50
aWwgdGhlIFdyaXRhYmxlU3RyZWFtIHN0YXJ0cyBzbyB0aGF0IHRoZSBjbG9zZSgpIGNhbGwgZ2V0
cyBwcm9jZXNzZWQuCisgIHJldHVybiBkZWxheSgwKS50aGVuKCgpID0+IHsKKyAgICBjb25zdCB3
cml0ZXIgPSB3cy5nZXRXcml0ZXIoKTsKKworICAgIGNvbnN0IGNsb3NlUHJvbWlzZSA9IHdyaXRl
ci5jbG9zZSgpOworICAgIGNvbnN0IGFib3J0UHJvbWlzZSA9IHdyaXRlci5hYm9ydChlcnJvcjIp
OworCisgICAgY29uc3QgZXZlbnRzID0gW107CisgICAgY2xvc2VQcm9taXNlLmNhdGNoKCgpID0+
IGV2ZW50cy5wdXNoKCdjbG9zZVByb21pc2UnKSk7CisgICAgYWJvcnRQcm9taXNlLmNhdGNoKCgp
ID0+IGV2ZW50cy5wdXNoKCdhYm9ydFByb21pc2UnKSk7CisgICAgd3JpdGVyLmNsb3NlZC5jYXRj
aCgoKSA9PiBldmVudHMucHVzaCgnY2xvc2VkJykpOworICAgIHJldHVybiBQcm9taXNlLmFsbChb
CisgICAgICBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIGNsb3NlUHJvbWlzZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Nsb3NlUHJvbWlzZSBtdXN0IHJlamVjdCB3
aXRoIHRoZSBlcnJvciByZXR1cm5lZCBmcm9tIHRoZSBzaW5rXCdzIGNsb3NlIG1ldGhvZCcpLAor
ICAgICAgcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCBhYm9ydFByb21pc2UsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhYm9ydFByb21pc2UgbXVzdCByZWplY3Qgd2l0
aCB0aGUgZXJyb3IgcmV0dXJuZWQgZnJvbSB0aGUgc2lua1wncyBjbG9zZSBtZXRob2QnKSwKKyAg
ICAgIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMiwgd3JpdGVyLmNsb3NlZCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICd3cml0ZXIuY2xvc2VkIG11c3QgcmVqZWN0IHdp
dGggZXJyb3IyJykKKyAgICBdKS50aGVuKCgpID0+IHsKKyAgICAgIGFzc2VydF9hcnJheV9lcXVh
bHMoZXZlbnRzLCBbJ2Nsb3NlUHJvbWlzZScsICdhYm9ydFByb21pc2UnLCAnY2xvc2VkJ10sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICdwcm9taXNlcyBtdXN0IGZ1bGZpbGwvcmVqZWN0IGlu
IHRoZSBleHBlY3RlZCBvcmRlcicpOworICAgIH0pOworICB9KTsKK30sICdwcm9taXNlcyBtdXN0
IGZ1bGZpbGwvcmVqZWN0IGluIHRoZSBleHBlY3RlZCBvcmRlciBvbiBhYm9ydGVkIGFuZCBlcnJv
cmVkIGNsb3N1cmUnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBsZXQgcmVzb2x2ZVdyaXRl
OworICBsZXQgY29udHJvbGxlcjsKKyAgY29uc3Qgd3MgPSBuZXcgV3JpdGFibGVTdHJlYW0oewor
ICAgIHdyaXRlKGNodW5rLCBjKSB7CisgICAgICBjb250cm9sbGVyID0gYzsKKyAgICAgIHJldHVy
biBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKKyAgICAgICAgcmVzb2x2ZVdyaXRlID0gcmVzb2x2
ZTsKKyAgICAgIH0pOworICAgIH0KKyAgfSk7CisgIGNvbnN0IHdyaXRlciA9IHdzLmdldFdyaXRl
cigpOworICByZXR1cm4gd3JpdGVyLnJlYWR5LnRoZW4oKCkgPT4geworICAgIGNvbnN0IHdyaXRl
UHJvbWlzZSA9IHdyaXRlci53cml0ZSgnYycpOworICAgIGNvbnRyb2xsZXIuZXJyb3IoZXJyb3Ix
KTsKKyAgICBjb25zdCBjbG9zZVByb21pc2UgPSB3cml0ZXIuY2xvc2UoKTsKKyAgICBsZXQgY2xv
c2VSZWplY3RlZCA9IGZhbHNlOworICAgIGNsb3NlUHJvbWlzZS5jYXRjaCgoKSA9PiB7CisgICAg
ICBjbG9zZVJlamVjdGVkID0gdHJ1ZTsKKyAgICB9KTsKKyAgICByZXR1cm4gZmx1c2hBc3luY0V2
ZW50cygpLnRoZW4oKCkgPT4geworICAgICAgYXNzZXJ0X2ZhbHNlKGNsb3NlUmVqZWN0ZWQpOwor
ICAgICAgcmVzb2x2ZVdyaXRlKCk7CisgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAgICAg
ICB3cml0ZVByb21pc2UsCisgICAgICAgIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9y
MSwgY2xvc2VQcm9taXNlLCAnY2xvc2UoKSBzaG91bGQgcmVqZWN0JykKKyAgICAgIF0pLnRoZW4o
KCkgPT4geworICAgICAgICBhc3NlcnRfdHJ1ZShjbG9zZVJlamVjdGVkKTsKKyAgICAgIH0pOwor
ICAgIH0pOworICB9KTsKK30sICdjbG9zZSgpIHNob3VsZCBub3QgcmVqZWN0IHVudGlsIG5vIHNp
bmsgbWV0aG9kcyBhcmUgaW4gZmxpZ2h0Jyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisgIGNv
bnN0IHdzID0gbmV3IFdyaXRhYmxlU3RyZWFtKCk7CisgIGNvbnN0IHdyaXRlcjEgPSB3cy5nZXRX
cml0ZXIoKTsKKyAgcmV0dXJuIHdyaXRlcjEuY2xvc2UoKS50aGVuKCgpID0+IHsKKyAgICB3cml0
ZXIxLnJlbGVhc2VMb2NrKCk7CisgICAgY29uc3Qgd3JpdGVyMiA9IHdzLmdldFdyaXRlcigpOwor
ICAgIGNvbnN0IHJlYWR5ID0gd3JpdGVyMi5yZWFkeTsKKyAgICBhc3NlcnRfZXF1YWxzKHJlYWR5
LmNvbnN0cnVjdG9yLCBQcm9taXNlKTsKKyAgICByZXR1cm4gcmVhZHk7CisgIH0pOworfSwgJ3Jl
YWR5IHByb21pc2Ugc2hvdWxkIGJlIGluaXRpYWxpc2VkIGFzIGZ1bGZpbGxlZCBmb3IgYSB3cml0
ZXIgb24gYSBjbG9zZWQgc3RyZWFtJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisgIGNvbnN0
IHdzID0gbmV3IFdyaXRhYmxlU3RyZWFtKCk7CisgIHdzLmNsb3NlKCk7CisgIGNvbnN0IHdyaXRl
ciA9IHdzLmdldFdyaXRlcigpOworICByZXR1cm4gd3JpdGVyLmNsb3NlZDsKK30sICdjbG9zZSgp
IG9uIGEgd3JpdGFibGUgc3RyZWFtIHNob3VsZCB3b3JrJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+
IHsKKyAgY29uc3Qgd3MgPSBuZXcgV3JpdGFibGVTdHJlYW0oKTsKKyAgd3MuZ2V0V3JpdGVyKCk7
CisgIHJldHVybiBwcm9taXNlX3JlamVjdHNfanModCwgVHlwZUVycm9yLCB3cy5jbG9zZSgpLCAn
Y2xvc2Ugc2hvdWxkIHJlamVjdCcpOworfSwgJ2Nsb3NlKCkgb24gYSBsb2NrZWQgc3RyZWFtIHNo
b3VsZCByZWplY3QnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBjb25zdCB3cyA9IG5ldyBX
cml0YWJsZVN0cmVhbSh7CisgICAgc3RhcnQoY29udHJvbGxlcikgeworICAgICAgY29udHJvbGxl
ci5lcnJvcihlcnJvcjEpOworICAgIH0KKyAgfSk7CisgIHJldHVybiBwcm9taXNlX3JlamVjdHNf
ZXhhY3RseSh0LCBlcnJvcjEsIHdzLmNsb3NlKCksICdjbG9zZSBzaG91bGQgcmVqZWN0IHdpdGgg
ZXJyb3IxJyk7Cit9LCAnY2xvc2UoKSBvbiBhbiBlcnJvcmluZyBzdHJlYW0gc2hvdWxkIHJlamVj
dCcpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIGNvbnN0IHdzID0gbmV3IFdyaXRhYmxlU3Ry
ZWFtKHsKKyAgICBzdGFydChjb250cm9sbGVyKSB7CisgICAgICBjb250cm9sbGVyLmVycm9yKGVy
cm9yMSk7CisgICAgfQorICB9KTsKKyAgY29uc3Qgd3JpdGVyID0gd3MuZ2V0V3JpdGVyKCk7Cisg
IHJldHVybiBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIHdyaXRlci5jbG9zZWQs
ICdjbG9zZWQgc2hvdWxkIHJlamVjdCB3aXRoIHRoZSBlcnJvcicpLnRoZW4oKCkgPT4geworICAg
IHdyaXRlci5yZWxlYXNlTG9jaygpOworICAgIHJldHVybiBwcm9taXNlX3JlamVjdHNfanModCwg
VHlwZUVycm9yLCB3cy5jbG9zZSgpLCAnY2xvc2Ugc2hvdWxkIHJlamVjdCcpOworICB9KTsKK30s
ICdjbG9zZSgpIG9uIGFuIGVycm9yZWQgc3RyZWFtIHNob3VsZCByZWplY3QnKTsKKworcHJvbWlz
ZV90ZXN0KHQgPT4geworICBjb25zdCB3cyA9IG5ldyBXcml0YWJsZVN0cmVhbSgpOworICBjb25z
dCB3cml0ZXIgPSB3cy5nZXRXcml0ZXIoKTsKKyAgcmV0dXJuIHdyaXRlci5jbG9zZSgpLnRoZW4o
KCkgPT4geworICAgIHJldHVybiBwcm9taXNlX3JlamVjdHNfanModCwgVHlwZUVycm9yLCB3cy5j
bG9zZSgpLCAnY2xvc2Ugc2hvdWxkIHJlamVjdCcpOworICB9KTsKK30sICdjbG9zZSgpIG9uIGFu
IGNsb3NlZCBzdHJlYW0gc2hvdWxkIHJlamVjdCcpOworCitwcm9taXNlX3Rlc3QodCA9PiB7Cisg
IGNvbnN0IHdzID0gbmV3IFdyaXRhYmxlU3RyZWFtKHsKKyAgICBjbG9zZSgpIHsKKyAgICAgIHJl
dHVybiBuZXcgUHJvbWlzZSgoKSA9PiB7fSk7CisgICAgfQorICB9KTsKKworICBjb25zdCB3cml0
ZXIgPSB3cy5nZXRXcml0ZXIoKTsKKyAgd3JpdGVyLmNsb3NlKCk7CisgIHdyaXRlci5yZWxlYXNl
TG9jaygpOworCisgIHJldHVybiBwcm9taXNlX3JlamVjdHNfanModCwgVHlwZUVycm9yLCB3cy5j
bG9zZSgpLCAnY2xvc2Ugc2hvdWxkIHJlamVjdCcpOworfSwgJ2Nsb3NlKCkgb24gYSBzdHJlYW0g
d2l0aCBhIHBlbmRpbmcgY2xvc2Ugc2hvdWxkIHJlamVjdCcpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0
cmVhbXMvY2xvc2UuYW55Lndvcmtlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9jbG9zZS5h
bnkud29ya2VyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZDQzZmFlY2RlNThmMDZmMWI4OGQ0
ZjJkOWRhZjAwOTY4NTYzMTE2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvY2xvc2Uu
YW55Lndvcmtlci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyNyBAQAorCitGQUlMIGZ1bGZpbGxt
ZW50IHZhbHVlIG9mIHdyaXRlci5jbG9zZSgpIGNhbGwgbXVzdCBiZSB1bmRlZmluZWQgZXZlbiBp
ZiB0aGUgdW5kZXJseWluZyBzaW5rIHJldHVybnMgYSBub24tdW5kZWZpbmVkIHZhbHVlIENhbid0
IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIHdoZW4gc2luayBjYWxscyBlcnJv
ciBhc3luY2hyb25vdXNseSB3aGlsZSBzaW5rIGNsb3NlIGlzIGluLWZsaWdodCwgdGhlIHN0cmVh
bSBzaG91bGQgbm90IGJlY29tZSBlcnJvcmVkIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxl
U3RyZWFtCitGQUlMIHdoZW4gc2luayBjYWxscyBlcnJvciBzeW5jaHJvbm91c2x5IHdoaWxlIGNs
b3NpbmcsIHRoZSBzdHJlYW0gc2hvdWxkIG5vdCBiZWNvbWUgZXJyb3JlZCBDYW4ndCBmaW5kIHZh
cmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCB3aGVuIHRoZSBzaW5rIHRocm93cyBkdXJpbmcg
Y2xvc2UsIGFuZCB0aGUgY2xvc2UgaXMgcmVxdWVzdGVkIHdoaWxlIGEgd3JpdGUgaXMgc3RpbGwg
aW4tZmxpZ2h0LCB0aGUgc3RyZWFtIHNob3VsZCBiZWNvbWUgZXJyb3JlZCBkdXJpbmcgdGhlIGNs
b3NlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIHJlbGVhc2VMb2Nr
IG9uIGEgc3RyZWFtIHdpdGggYSBwZW5kaW5nIHdyaXRlIGluIHdoaWNoIHRoZSBzdHJlYW0gaGFz
IGJlZW4gZXJyb3JlZCBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBy
ZWxlYXNlTG9jayBvbiBhIHN0cmVhbSB3aXRoIGEgcGVuZGluZyBjbG9zZSBpbiB3aGljaCBjb250
cm9sbGVyLmVycm9yKCkgd2FzIGNhbGxlZCBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0
cmVhbQorRkFJTCB3aGVuIGNsb3NlIGlzIGNhbGxlZCBvbiBhIFdyaXRhYmxlU3RyZWFtIGluIHdy
aXRhYmxlIHN0YXRlLCByZWFkeSBzaG91bGQgcmV0dXJuIGEgZnVsZmlsbGVkIHByb21pc2UgQ2Fu
J3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgd2hlbiBjbG9zZSBpcyBjYWxs
ZWQgb24gYSBXcml0YWJsZVN0cmVhbSBpbiB3YWl0aW5nIHN0YXRlLCByZWFkeSBwcm9taXNlIHNo
b3VsZCBiZSBmdWxmaWxsZWQgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZB
SUwgd2hlbiBjbG9zZSBpcyBjYWxsZWQgb24gYSBXcml0YWJsZVN0cmVhbSBpbiB3YWl0aW5nIHN0
YXRlLCByZWFkeSBzaG91bGQgYmUgZnVsZmlsbGVkIGltbWVkaWF0ZWx5IGV2ZW4gaWYgY2xvc2Ug
dGFrZXMgYSBsb25nIHRpbWUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZB
SUwgcmV0dXJuaW5nIGEgdGhlbmFibGUgZnJvbSBjbG9zZSgpIHNob3VsZCB3b3JrIENhbid0IGZp
bmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIHJlbGVhc2VMb2NrKCkgc2hvdWxkIG5v
dCBjaGFuZ2UgdGhlIHJlc3VsdCBvZiBzeW5jIGNsb3NlKCkgQ2FuJ3QgZmluZCB2YXJpYWJsZTog
V3JpdGFibGVTdHJlYW0KK0ZBSUwgcmVsZWFzZUxvY2soKSBzaG91bGQgbm90IGNoYW5nZSB0aGUg
cmVzdWx0IG9mIGFzeW5jIGNsb3NlKCkgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJl
YW0KK0ZBSUwgY2xvc2UoKSBzaG91bGQgc2V0IHN0YXRlIHRvIENMT1NFRCBldmVuIGlmIHdyaXRl
ciBoYXMgZGV0YWNoZWQgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwg
dGhlIHByb21pc2UgcmV0dXJuZWQgYnkgYXN5bmMgYWJvcnQgZHVyaW5nIGNsb3NlIHNob3VsZCBy
ZXNvbHZlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIHByb21pc2Vz
IG11c3QgZnVsZmlsbC9yZWplY3QgaW4gdGhlIGV4cGVjdGVkIG9yZGVyIG9uIGNsb3N1cmUgQ2Fu
J3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgcHJvbWlzZXMgbXVzdCBmdWxm
aWxsL3JlamVjdCBpbiB0aGUgZXhwZWN0ZWQgb3JkZXIgb24gYWJvcnRlZCBjbG9zdXJlIENhbid0
IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIHByb21pc2VzIG11c3QgZnVsZmls
bC9yZWplY3QgaW4gdGhlIGV4cGVjdGVkIG9yZGVyIG9uIGFib3J0ZWQgYW5kIGVycm9yZWQgY2xv
c3VyZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBjbG9zZSgpIHNo
b3VsZCBub3QgcmVqZWN0IHVudGlsIG5vIHNpbmsgbWV0aG9kcyBhcmUgaW4gZmxpZ2h0IENhbid0
IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIHJlYWR5IHByb21pc2Ugc2hvdWxk
IGJlIGluaXRpYWxpc2VkIGFzIGZ1bGZpbGxlZCBmb3IgYSB3cml0ZXIgb24gYSBjbG9zZWQgc3Ry
ZWFtIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIGNsb3NlKCkgb24g
YSB3cml0YWJsZSBzdHJlYW0gc2hvdWxkIHdvcmsgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFi
bGVTdHJlYW0KK0ZBSUwgY2xvc2UoKSBvbiBhIGxvY2tlZCBzdHJlYW0gc2hvdWxkIHJlamVjdCBD
YW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBjbG9zZSgpIG9uIGFuIGVy
cm9yaW5nIHN0cmVhbSBzaG91bGQgcmVqZWN0IENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxl
U3RyZWFtCitGQUlMIGNsb3NlKCkgb24gYW4gZXJyb3JlZCBzdHJlYW0gc2hvdWxkIHJlamVjdCBD
YW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBjbG9zZSgpIG9uIGFuIGNs
b3NlZCBzdHJlYW0gc2hvdWxkIHJlamVjdCBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0
cmVhbQorRkFJTCBjbG9zZSgpIG9uIGEgc3RyZWFtIHdpdGggYSBwZW5kaW5nIGNsb3NlIHNob3Vs
ZCByZWplY3QgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dy
aXRhYmxlLXN0cmVhbXMvY2xvc2UuYW55Lndvcmtlci5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvY2xvc2Uu
YW55Lndvcmtlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzODI5MTM1MjhlNjkzYjNhNWQ1NmM2NjBhNDUw
NjA5ODBiNTQ4YzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9jbG9zZS5hbnkud29y
a2VyLmh0bWwKQEAgLTAsMCArMSBAQAorPCEtLSBUaGlzIGZpbGUgaXMgcmVxdWlyZWQgZm9yIFdl
YktpdCB0ZXN0IGluZnJhc3RydWN0dXJlIHRvIHJ1biB0aGUgdGVtcGxhdGVkIHRlc3QgLS0+Clwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvY29uc3Ry
dWN0b3IuYW55LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL2NvbnN0cnVjdG9yLmFueS1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMTk1NjkzNDkwNGJhMTg0YjRmMjM5ZWY3Y2MyMzEzZTQ1ZTcx
NmY2ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL2NvbnN0cnVjdG9yLmFueS1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwxOCBAQAorCitGQUlMIGNvbnRyb2xsZXIgYXJndW1lbnQgc2hv
dWxkIGJlIHBhc3NlZCB0byBzdGFydCBtZXRob2QgY29udHJvbGxlci5lcnJvciBpcyBub3QgYSBm
dW5jdGlvbi4gKEluICdjb250cm9sbGVyLmVycm9yKGVycm9yMSknLCAnY29udHJvbGxlci5lcnJv
cicgaXMgdW5kZWZpbmVkKQorRkFJTCBjb250cm9sbGVyIGFyZ3VtZW50IHNob3VsZCBiZSBwYXNz
ZWQgdG8gd3JpdGUgbWV0aG9kIHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3
cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkKK0ZBSUwgY29udHJv
bGxlciBhcmd1bWVudCBzaG91bGQgbm90IGJlIHBhc3NlZCB0byBjbG9zZSBtZXRob2Qgd3MuZ2V0
V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdy
aXRlcicgaXMgdW5kZWZpbmVkKQorRkFJTCBoaWdoV2F0ZXJNYXJrIHNob3VsZCBiZSByZWZsZWN0
ZWQgdG8gZGVzaXJlZFNpemUgd3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dz
LmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicgaXMgdW5kZWZpbmVkKQorRkFJTCBXcml0YWJs
ZVN0cmVhbSBzaG91bGQgYmUgd3JpdGFibGUgYW5kIHJlYWR5IHNob3VsZCBmdWxmaWxsIGltbWVk
aWF0ZWx5IGlmIHRoZSBzdHJhdGVneSBkb2VzIG5vdCBhcHBseSBiYWNrcHJlc3N1cmUgd3MuZ2V0
V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdy
aXRlcicgaXMgdW5kZWZpbmVkKQorUEFTUyBXcml0YWJsZVN0cmVhbSBzaG91bGQgYmUgY29uc3Ry
dWN0aWJsZSB3aXRoIG5vIGFyZ3VtZW50cyAKK1BBU1MgdW5kZXJseWluZ1NpbmsgYXJndW1lbnQg
c2hvdWxkIGJlIGNvbnZlcnRlZCBhZnRlciBxdWV1aW5nU3RyYXRlZ3kgYXJndW1lbnQgCitGQUlM
IFdyaXRhYmxlU3RyZWFtIGluc3RhbmNlcyBzaG91bGQgaGF2ZSBzdGFuZGFyZCBtZXRob2RzIGFu
ZCBwcm9wZXJ0aWVzIHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRX
cml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkKK0ZBSUwgV3JpdGFibGVTdHJl
YW1EZWZhdWx0Q29udHJvbGxlciBjb25zdHJ1Y3RvciBzaG91bGQgdGhyb3cgYXNzZXJ0X3Rocm93
c19qczogY29uc3RydWN0b3Igc2hvdWxkIHRocm93IGEgVHlwZUVycm9yIGV4Y2VwdGlvbiBmdW5j
dGlvbiAiKCkgPT4gbmV3IFdyaXRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIoe30pIiB0aHJl
dyBvYmplY3QgIlN5bnRheEVycm9yOiBVbmV4cGVjdGVkIGlkZW50aWZpZXIgJ09iamVjdCcuIEV4
cGVjdGVkIGVpdGhlciBhIGNsb3NpbmcgJ10nIG9yIGEgJywnIGZvbGxvd2luZyBhbiBhcnJheSBl
bGVtZW50LiIgKCJTeW50YXhFcnJvciIpIGV4cGVjdGVkIGluc3RhbmNlIG9mIGZ1bmN0aW9uICJm
dW5jdGlvbiBUeXBlRXJyb3IoKSB7CisgICAgW25hdGl2ZSBjb2RlXQorfSIgKCJUeXBlRXJyb3Ii
KQorRkFJTCBXcml0YWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyIGNvbnN0cnVjdG9yIHNob3Vs
ZCB0aHJvdyB3aGVuIHBhc3NlZCBhbiBpbml0aWFsaXNlZCBXcml0YWJsZVN0cmVhbSBhc3NlcnRf
dGhyb3dzX2pzOiBjb25zdHJ1Y3RvciBzaG91bGQgdGhyb3cgYSBUeXBlRXJyb3IgZXhjZXB0aW9u
IGZ1bmN0aW9uICIoKSA9PiBuZXcgV3JpdGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlcihzdHJl
YW0pIiB0aHJldyBvYmplY3QgIlN5bnRheEVycm9yOiBVbmV4cGVjdGVkIGlkZW50aWZpZXIgJ1dy
aXRhYmxlU3RyZWFtJy4gRXhwZWN0ZWQgZWl0aGVyIGEgY2xvc2luZyAnXScgb3IgYSAnLCcgZm9s
bG93aW5nIGFuIGFycmF5IGVsZW1lbnQuIiAoIlN5bnRheEVycm9yIikgZXhwZWN0ZWQgaW5zdGFu
Y2Ugb2YgZnVuY3Rpb24gImZ1bmN0aW9uIFR5cGVFcnJvcigpIHsKKyAgICBbbmF0aXZlIGNvZGVd
Cit9IiAoIlR5cGVFcnJvciIpCitGQUlMIFdyaXRhYmxlU3RyZWFtRGVmYXVsdFdyaXRlciBzaG91
bGQgdGhyb3cgdW5sZXNzIHBhc3NlZCBhIFdyaXRhYmxlU3RyZWFtIHN0cmVhbS5nZXRXcml0ZXIg
aXMgbm90IGEgZnVuY3Rpb24uIChJbiAnc3RyZWFtLmdldFdyaXRlcigpJywgJ3N0cmVhbS5nZXRX
cml0ZXInIGlzIHVuZGVmaW5lZCkKK0ZBSUwgV3JpdGFibGVTdHJlYW1EZWZhdWx0V3JpdGVyIGNv
bnN0cnVjdG9yIHNob3VsZCB0aHJvdyB3aGVuIHN0cmVhbSBhcmd1bWVudCBpcyBsb2NrZWQgc3Ry
ZWFtLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICdzdHJlYW0uZ2V0V3JpdGVyKCkn
LCAnc3RyZWFtLmdldFdyaXRlcicgaXMgdW5kZWZpbmVkKQorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3Ry
ZWFtcy9jb25zdHJ1Y3Rvci5hbnkuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL2NvbnN0cnVjdG9yLmFueS5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjIzODI5MTM1MjhlNjkzYjNhNWQ1NmM2NjBhNDUwNjA5ODBiNTQ4YzMK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9jb25zdHJ1Y3Rvci5hbnkuaHRtbApAQCAt
MCwwICsxIEBACis8IS0tIFRoaXMgZmlsZSBpcyByZXF1aXJlZCBmb3IgV2ViS2l0IHRlc3QgaW5m
cmFzdHJ1Y3R1cmUgdG8gcnVuIHRoZSB0ZW1wbGF0ZWQgdGVzdCAtLT4KXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9jb25zdHJ1Y3Rvci5hbnkuanMg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3Jp
dGFibGUtc3RyZWFtcy9jb25zdHJ1Y3Rvci5hbnkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzVlZWQyYTk5M2Zl
NWUwOTZkNmUwOTIyMDlhMDhiOTdiMGM0MGFjMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJl
YW1zL2NvbnN0cnVjdG9yLmFueS5qcwpAQCAtMCwwICsxLDE1NSBAQAorLy8gTUVUQTogZ2xvYmFs
PXdpbmRvdyx3b3JrZXIsanNzaGVsbAorJ3VzZSBzdHJpY3QnOworCitjb25zdCBlcnJvcjEgPSBu
ZXcgRXJyb3IoJ2Vycm9yMScpOworZXJyb3IxLm5hbWUgPSAnZXJyb3IxJzsKKworY29uc3QgZXJy
b3IyID0gbmV3IEVycm9yKCdlcnJvcjInKTsKK2Vycm9yMi5uYW1lID0gJ2Vycm9yMic7CisKK3By
b21pc2VfdGVzdCgoKSA9PiB7CisgIGxldCBjb250cm9sbGVyOworICBjb25zdCB3cyA9IG5ldyBX
cml0YWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgY29udHJvbGxlciA9IGM7Cisg
ICAgfQorICB9KTsKKworICAvLyBOb3cgZXJyb3IgdGhlIHN0cmVhbSBhZnRlciBpdHMgY29uc3Ry
dWN0aW9uLgorICBjb250cm9sbGVyLmVycm9yKGVycm9yMSk7CisKKyAgY29uc3Qgd3JpdGVyID0g
d3MuZ2V0V3JpdGVyKCk7CisKKyAgYXNzZXJ0X2VxdWFscyh3cml0ZXIuZGVzaXJlZFNpemUsIG51
bGwsICdkZXNpcmVkU2l6ZSBzaG91bGQgYmUgbnVsbCcpOworICByZXR1cm4gd3JpdGVyLmNsb3Nl
ZC5jYXRjaChyID0+IHsKKyAgICBhc3NlcnRfZXF1YWxzKHIsIGVycm9yMSwgJ3dzIHNob3VsZCBi
ZSBlcnJvcmVkIGJ5IHRoZSBwYXNzZWQgZXJyb3InKTsKKyAgfSk7Cit9LCAnY29udHJvbGxlciBh
cmd1bWVudCBzaG91bGQgYmUgcGFzc2VkIHRvIHN0YXJ0IG1ldGhvZCcpOworCitwcm9taXNlX3Rl
c3QodCA9PiB7CisgIGNvbnN0IHdzID0gbmV3IFdyaXRhYmxlU3RyZWFtKHsKKyAgICB3cml0ZShj
aHVuaywgY29udHJvbGxlcikgeworICAgICAgY29udHJvbGxlci5lcnJvcihlcnJvcjEpOworICAg
IH0KKyAgfSk7CisKKyAgY29uc3Qgd3JpdGVyID0gd3MuZ2V0V3JpdGVyKCk7CisKKyAgcmV0dXJu
IFByb21pc2UuYWxsKFsKKyAgICB3cml0ZXIud3JpdGUoJ2EnKSwKKyAgICBwcm9taXNlX3JlamVj
dHNfZXhhY3RseSh0LCBlcnJvcjEsIHdyaXRlci5jbG9zZWQsICdjb250cm9sbGVyLmVycm9yKCkg
aW4gd3JpdGUoKSBzaG91bGQgZXJyb3IgdGhlIHN0cmVhbScpCisgIF0pOworfSwgJ2NvbnRyb2xs
ZXIgYXJndW1lbnQgc2hvdWxkIGJlIHBhc3NlZCB0byB3cml0ZSBtZXRob2QnKTsKKworLy8gT2xk
ZXIgdmVyc2lvbnMgb2YgdGhlIHN0YW5kYXJkIGhhZCB0aGUgY29udHJvbGxlciBhcmd1bWVudCBw
YXNzZWQgdG8gY2xvc2UoKS4gSXQgd2Fzbid0IHVzZWZ1bCwgYW5kIHNvIGhhcyBiZWVuCisvLyBy
ZW1vdmVkLiBUaGlzIHRlc3QgcmVtYWlucyB0byBpZGVudGlmeSBpbXBsZW1lbnRhdGlvbnMgdGhh
dCBoYXZlbid0IGJlZW4gdXBkYXRlZC4KK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgY29uc3Qgd3Mg
PSBuZXcgV3JpdGFibGVTdHJlYW0oeworICAgIGNsb3NlKC4uLmFyZ3MpIHsKKyAgICAgIHQuc3Rl
cCgoKSA9PiB7CisgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoYXJncywgW10sICdubyBhcmd1
bWVudHMgc2hvdWxkIGJlIHBhc3NlZCB0byBjbG9zZScpOworICAgICAgfSk7CisgICAgfQorICB9
KTsKKworICByZXR1cm4gd3MuZ2V0V3JpdGVyKCkuY2xvc2UoKTsKK30sICdjb250cm9sbGVyIGFy
Z3VtZW50IHNob3VsZCBub3QgYmUgcGFzc2VkIHRvIGNsb3NlIG1ldGhvZCcpOworCitwcm9taXNl
X3Rlc3QoKCkgPT4geworICBjb25zdCB3cyA9IG5ldyBXcml0YWJsZVN0cmVhbSh7fSwgeworICAg
IGhpZ2hXYXRlck1hcms6IDEwMDAsCisgICAgc2l6ZSgpIHsgcmV0dXJuIDE7IH0KKyAgfSk7CisK
KyAgY29uc3Qgd3JpdGVyID0gd3MuZ2V0V3JpdGVyKCk7CisKKyAgYXNzZXJ0X2VxdWFscyh3cml0
ZXIuZGVzaXJlZFNpemUsIDEwMDAsICdkZXNpcmVkU2l6ZSBzaG91bGQgYmUgMTAwMCcpOworICBy
ZXR1cm4gd3JpdGVyLnJlYWR5LnRoZW4odiA9PiB7CisgICAgYXNzZXJ0X2VxdWFscyh2LCB1bmRl
ZmluZWQsICdyZWFkeSBwcm9taXNlIHNob3VsZCBmdWxmaWxsIHdpdGggdW5kZWZpbmVkJyk7Cisg
IH0pOworfSwgJ2hpZ2hXYXRlck1hcmsgc2hvdWxkIGJlIHJlZmxlY3RlZCB0byBkZXNpcmVkU2l6
ZScpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworICBjb25zdCB3cyA9IG5ldyBXcml0YWJsZVN0
cmVhbSh7fSwgeworICAgIGhpZ2hXYXRlck1hcms6IEluZmluaXR5LAorICAgIHNpemUoKSB7IHJl
dHVybiAwOyB9CisgIH0pOworCisgIGNvbnN0IHdyaXRlciA9IHdzLmdldFdyaXRlcigpOworCisg
IGFzc2VydF9lcXVhbHMod3JpdGVyLmRlc2lyZWRTaXplLCBJbmZpbml0eSwgJ2Rlc2lyZWRTaXpl
IHNob3VsZCBiZSBJbmZpbml0eScpOworCisgIHJldHVybiB3cml0ZXIucmVhZHk7Cit9LCAnV3Jp
dGFibGVTdHJlYW0gc2hvdWxkIGJlIHdyaXRhYmxlIGFuZCByZWFkeSBzaG91bGQgZnVsZmlsbCBp
bW1lZGlhdGVseSBpZiB0aGUgc3RyYXRlZ3kgZG9lcyBub3QgYXBwbHkgJyArCisgICAgJ2JhY2tw
cmVzc3VyZScpOworCit0ZXN0KCgpID0+IHsKKyAgbmV3IFdyaXRhYmxlU3RyZWFtKCk7Cit9LCAn
V3JpdGFibGVTdHJlYW0gc2hvdWxkIGJlIGNvbnN0cnVjdGlibGUgd2l0aCBubyBhcmd1bWVudHMn
KTsKKwordGVzdCgoKSA9PiB7CisgIGNvbnN0IHVuZGVybHlpbmdTaW5rID0geyBnZXQgc3RhcnQo
KSB7IHRocm93IGVycm9yMTsgfSB9OworICBjb25zdCBxdWV1aW5nU3RyYXRlZ3kgPSB7IGhpZ2hX
YXRlck1hcms6IDAsIGdldCBzaXplKCkgeyB0aHJvdyBlcnJvcjI7IH0gfTsKKworICAvLyB1bmRl
cmx5aW5nU2luayBpcyBjb252ZXJ0ZWQgaW4gcHJvc2UgaW4gdGhlIG1ldGhvZCBib2R5LCB3aGVy
ZWFzIHF1ZXVpbmdTdHJhdGVneSBpcyBkb25lIGF0IHRoZSBJREwgbGF5ZXIuCisgIC8vIFNvIHRo
ZSBxdWV1aW5nU3RyYXRlZ3kgZXhjZXB0aW9uIHNob3VsZCBiZSBlbmNvdW50ZXJlZCBmaXJzdC4K
KyAgYXNzZXJ0X3Rocm93c19leGFjdGx5KGVycm9yMiwgKCkgPT4gbmV3IFdyaXRhYmxlU3RyZWFt
KHVuZGVybHlpbmdTaW5rLCBxdWV1aW5nU3RyYXRlZ3kpKTsKK30sICd1bmRlcmx5aW5nU2luayBh
cmd1bWVudCBzaG91bGQgYmUgY29udmVydGVkIGFmdGVyIHF1ZXVpbmdTdHJhdGVneSBhcmd1bWVu
dCcpOworCit0ZXN0KCgpID0+IHsKKyAgY29uc3Qgd3MgPSBuZXcgV3JpdGFibGVTdHJlYW0oe30p
OworCisgIGNvbnN0IHdyaXRlciA9IHdzLmdldFdyaXRlcigpOworCisgIGFzc2VydF9lcXVhbHMo
dHlwZW9mIHdyaXRlci53cml0ZSwgJ2Z1bmN0aW9uJywgJ3dyaXRlciBzaG91bGQgaGF2ZSBhIHdy
aXRlIG1ldGhvZCcpOworICBhc3NlcnRfZXF1YWxzKHR5cGVvZiB3cml0ZXIuYWJvcnQsICdmdW5j
dGlvbicsICd3cml0ZXIgc2hvdWxkIGhhdmUgYW4gYWJvcnQgbWV0aG9kJyk7CisgIGFzc2VydF9l
cXVhbHModHlwZW9mIHdyaXRlci5jbG9zZSwgJ2Z1bmN0aW9uJywgJ3dyaXRlciBzaG91bGQgaGF2
ZSBhIGNsb3NlIG1ldGhvZCcpOworCisgIGFzc2VydF9lcXVhbHMod3JpdGVyLmRlc2lyZWRTaXpl
LCAxLCAnZGVzaXJlZFNpemUgc2hvdWxkIHN0YXJ0IGF0IDEnKTsKKworICBhc3NlcnRfbm90X2Vx
dWFscyh0eXBlb2Ygd3JpdGVyLnJlYWR5LCAndW5kZWZpbmVkJywgJ3dyaXRlciBzaG91bGQgaGF2
ZSBhIHJlYWR5IHByb3BlcnR5Jyk7CisgIGFzc2VydF9lcXVhbHModHlwZW9mIHdyaXRlci5yZWFk
eS50aGVuLCAnZnVuY3Rpb24nLCAncmVhZHkgcHJvcGVydHkgc2hvdWxkIGJlIHRoZW5hYmxlJyk7
CisgIGFzc2VydF9ub3RfZXF1YWxzKHR5cGVvZiB3cml0ZXIuY2xvc2VkLCAndW5kZWZpbmVkJywg
J3dyaXRlciBzaG91bGQgaGF2ZSBhIGNsb3NlZCBwcm9wZXJ0eScpOworICBhc3NlcnRfZXF1YWxz
KHR5cGVvZiB3cml0ZXIuY2xvc2VkLnRoZW4sICdmdW5jdGlvbicsICdjbG9zZWQgcHJvcGVydHkg
c2hvdWxkIGJlIHRoZW5hYmxlJyk7Cit9LCAnV3JpdGFibGVTdHJlYW0gaW5zdGFuY2VzIHNob3Vs
ZCBoYXZlIHN0YW5kYXJkIG1ldGhvZHMgYW5kIHByb3BlcnRpZXMnKTsKKwordGVzdCgoKSA9PiB7
CisgIGxldCBXcml0YWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyOworICBuZXcgV3JpdGFibGVT
dHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIFdyaXRhYmxlU3RyZWFtRGVmYXVsdENvbnRy
b2xsZXIgPSBjLmNvbnN0cnVjdG9yOworICAgIH0KKyAgfSk7CisKKyAgYXNzZXJ0X3Rocm93c19q
cyhUeXBlRXJyb3IsICgpID0+IG5ldyBXcml0YWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyKHt9
KSwKKyAgICAgICAgICAgICAgICAgICAnY29uc3RydWN0b3Igc2hvdWxkIHRocm93IGEgVHlwZUVy
cm9yIGV4Y2VwdGlvbicpOworfSwgJ1dyaXRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIgY29u
c3RydWN0b3Igc2hvdWxkIHRocm93Jyk7CisKK3Rlc3QoKCkgPT4geworICBsZXQgV3JpdGFibGVT
dHJlYW1EZWZhdWx0Q29udHJvbGxlcjsKKyAgY29uc3Qgc3RyZWFtID0gbmV3IFdyaXRhYmxlU3Ry
ZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBXcml0YWJsZVN0cmVhbURlZmF1bHRDb250cm9s
bGVyID0gYy5jb25zdHJ1Y3RvcjsKKyAgICB9CisgIH0pOworCisgIGFzc2VydF90aHJvd3NfanMo
VHlwZUVycm9yLCAoKSA9PiBuZXcgV3JpdGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlcihzdHJl
YW0pLAorICAgICAgICAgICAgICAgICAgICdjb25zdHJ1Y3RvciBzaG91bGQgdGhyb3cgYSBUeXBl
RXJyb3IgZXhjZXB0aW9uJyk7Cit9LCAnV3JpdGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlciBj
b25zdHJ1Y3RvciBzaG91bGQgdGhyb3cgd2hlbiBwYXNzZWQgYW4gaW5pdGlhbGlzZWQgV3JpdGFi
bGVTdHJlYW0nKTsKKwordGVzdCgoKSA9PiB7CisgIGNvbnN0IHN0cmVhbSA9IG5ldyBXcml0YWJs
ZVN0cmVhbSgpOworICBjb25zdCB3cml0ZXIgPSBzdHJlYW0uZ2V0V3JpdGVyKCk7CisgIGNvbnN0
IFdyaXRhYmxlU3RyZWFtRGVmYXVsdFdyaXRlciA9IHdyaXRlci5jb25zdHJ1Y3RvcjsKKyAgd3Jp
dGVyLnJlbGVhc2VMb2NrKCk7CisgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiBu
ZXcgV3JpdGFibGVTdHJlYW1EZWZhdWx0V3JpdGVyKHt9KSwKKyAgICAgICAgICAgICAgICAgICAn
Y29uc3RydWN0b3Igc2hvdWxkIHRocm93IGEgVHlwZUVycm9yIGV4Y2VwdGlvbicpOworfSwgJ1dy
aXRhYmxlU3RyZWFtRGVmYXVsdFdyaXRlciBzaG91bGQgdGhyb3cgdW5sZXNzIHBhc3NlZCBhIFdy
aXRhYmxlU3RyZWFtJyk7CisKK3Rlc3QoKCkgPT4geworICBjb25zdCBzdHJlYW0gPSBuZXcgV3Jp
dGFibGVTdHJlYW0oKTsKKyAgY29uc3Qgd3JpdGVyID0gc3RyZWFtLmdldFdyaXRlcigpOworICBj
b25zdCBXcml0YWJsZVN0cmVhbURlZmF1bHRXcml0ZXIgPSB3cml0ZXIuY29uc3RydWN0b3I7Cisg
IGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiBuZXcgV3JpdGFibGVTdHJlYW1EZWZh
dWx0V3JpdGVyKHN0cmVhbSksCisgICAgICAgICAgICAgICAgICAgJ2NvbnN0cnVjdG9yIHNob3Vs
ZCB0aHJvdyBhIFR5cGVFcnJvciBleGNlcHRpb24nKTsKK30sICdXcml0YWJsZVN0cmVhbURlZmF1
bHRXcml0ZXIgY29uc3RydWN0b3Igc2hvdWxkIHRocm93IHdoZW4gc3RyZWFtIGFyZ3VtZW50IGlz
IGxvY2tlZCcpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvY29uc3RydWN0b3IuYW55Lndvcmtl
ci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9jb25zdHJ1Y3Rvci5hbnkud29ya2VyLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5iNTA3MmVmN2M4MWMyMzNjYTk4ZDhiMmVlMmU4OTI3ZmU4ZjBm
OTUyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvY29uc3RydWN0b3IuYW55Lndvcmtl
ci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorCitGQUlMIGNvbnRyb2xsZXIgYXJndW1l
bnQgc2hvdWxkIGJlIHBhc3NlZCB0byBzdGFydCBtZXRob2QgQ2FuJ3QgZmluZCB2YXJpYWJsZTog
V3JpdGFibGVTdHJlYW0KK0ZBSUwgY29udHJvbGxlciBhcmd1bWVudCBzaG91bGQgYmUgcGFzc2Vk
IHRvIHdyaXRlIG1ldGhvZCBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJ
TCBjb250cm9sbGVyIGFyZ3VtZW50IHNob3VsZCBub3QgYmUgcGFzc2VkIHRvIGNsb3NlIG1ldGhv
ZCBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBoaWdoV2F0ZXJNYXJr
IHNob3VsZCBiZSByZWZsZWN0ZWQgdG8gZGVzaXJlZFNpemUgQ2FuJ3QgZmluZCB2YXJpYWJsZTog
V3JpdGFibGVTdHJlYW0KK0ZBSUwgV3JpdGFibGVTdHJlYW0gc2hvdWxkIGJlIHdyaXRhYmxlIGFu
ZCByZWFkeSBzaG91bGQgZnVsZmlsbCBpbW1lZGlhdGVseSBpZiB0aGUgc3RyYXRlZ3kgZG9lcyBu
b3QgYXBwbHkgYmFja3ByZXNzdXJlIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFt
CitGQUlMIFdyaXRhYmxlU3RyZWFtIHNob3VsZCBiZSBjb25zdHJ1Y3RpYmxlIHdpdGggbm8gYXJn
dW1lbnRzIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIHVuZGVybHlp
bmdTaW5rIGFyZ3VtZW50IHNob3VsZCBiZSBjb252ZXJ0ZWQgYWZ0ZXIgcXVldWluZ1N0cmF0ZWd5
IGFyZ3VtZW50IGFzc2VydF90aHJvd3NfZXhhY3RseTogZnVuY3Rpb24gIigpID0+IG5ldyBXcml0
YWJsZVN0cmVhbSh1bmRlcmx5aW5nU2luaywgcXVldWluZ1N0cmF0ZWd5KSIgdGhyZXcgb2JqZWN0
ICJSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0iIGJ1
dCB3ZSBleHBlY3RlZCBpdCB0byB0aHJvdyBvYmplY3QgImVycm9yMjogZXJyb3IyIgorRkFJTCBX
cml0YWJsZVN0cmVhbSBpbnN0YW5jZXMgc2hvdWxkIGhhdmUgc3RhbmRhcmQgbWV0aG9kcyBhbmQg
cHJvcGVydGllcyBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBXcml0
YWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyIGNvbnN0cnVjdG9yIHNob3VsZCB0aHJvdyBDYW4n
dCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBXcml0YWJsZVN0cmVhbURlZmF1
bHRDb250cm9sbGVyIGNvbnN0cnVjdG9yIHNob3VsZCB0aHJvdyB3aGVuIHBhc3NlZCBhbiBpbml0
aWFsaXNlZCBXcml0YWJsZVN0cmVhbSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVh
bQorRkFJTCBXcml0YWJsZVN0cmVhbURlZmF1bHRXcml0ZXIgc2hvdWxkIHRocm93IHVubGVzcyBw
YXNzZWQgYSBXcml0YWJsZVN0cmVhbSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVh
bQorRkFJTCBXcml0YWJsZVN0cmVhbURlZmF1bHRXcml0ZXIgY29uc3RydWN0b3Igc2hvdWxkIHRo
cm93IHdoZW4gc3RyZWFtIGFyZ3VtZW50IGlzIGxvY2tlZCBDYW4ndCBmaW5kIHZhcmlhYmxlOiBX
cml0YWJsZVN0cmVhbQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9jb25zdHJ1Y3Rvci5hbnku
d29ya2VyLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9jb25zdHJ1Y3Rvci5hbnkud29ya2VyLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMjM4MjkxMzUyOGU2OTNiM2E1ZDU2YzY2MGE0NTA2MDk4MGI1NDhjMwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL2NvbnN0cnVjdG9yLmFueS53b3JrZXIuaHRtbApAQCAt
MCwwICsxIEBACis8IS0tIFRoaXMgZmlsZSBpcyByZXF1aXJlZCBmb3IgV2ViS2l0IHRlc3QgaW5m
cmFzdHJ1Y3R1cmUgdG8gcnVuIHRoZSB0ZW1wbGF0ZWQgdGVzdCAtLT4KXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9jb3VudC1xdWV1aW5nLXN0cmF0
ZWd5LmFueS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5
LmFueS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmJmOGQzNTdjNWI1ZmVlZDBkOWQ3MzM3NzI0
NWVhYzM3N2FhNDJlNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL2NvdW50LXF1ZXVp
bmctc3RyYXRlZ3kuYW55LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDUgQEAKKworUEFTUyBDYW4g
Y29uc3RydWN0IGEgd3JpdGFibGUgc3RyZWFtIHdpdGggYSB2YWxpZCBDb3VudFF1ZXVpbmdTdHJh
dGVneSAKK0ZBSUwgQ29ycmVjdGx5IGdvdmVybnMgdGhlIHZhbHVlIG9mIGEgV3JpdGFibGVTdHJl
YW0ncyBzdGF0ZSBwcm9wZXJ0eSAoSFdNID0gMCkgd3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0
aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicgaXMgdW5kZWZpbmVkKQor
RkFJTCBDb3JyZWN0bHkgZ292ZXJucyB0aGUgdmFsdWUgb2YgYSBXcml0YWJsZVN0cmVhbSdzIHN0
YXRlIHByb3BlcnR5IChIV00gPSA0KSB3cy5nZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJ
biAnd3MuZ2V0V3JpdGVyKCknLCAnd3MuZ2V0V3JpdGVyJyBpcyB1bmRlZmluZWQpCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy93cml0YWJsZS1zdHJlYW1zL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3kuYW55Lmh0bWwgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUt
c3RyZWFtcy9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5LmFueS5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzODI5
MTM1MjhlNjkzYjNhNWQ1NmM2NjBhNDUwNjA5ODBiNTQ4YzMKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFi
bGUtc3RyZWFtcy9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5LmFueS5odG1sCkBAIC0wLDAgKzEgQEAK
KzwhLS0gVGhpcyBmaWxlIGlzIHJlcXVpcmVkIGZvciBXZWJLaXQgdGVzdCBpbmZyYXN0cnVjdHVy
ZSB0byBydW4gdGhlIHRlbXBsYXRlZCB0ZXN0IC0tPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3kuYW55Lmpz
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dy
aXRhYmxlLXN0cmVhbXMvY291bnQtcXVldWluZy1zdHJhdGVneS5hbnkuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MzBlZGIzZWIzMTVjNjI4MWZlZTZjOGY0YTkwZGNkOTViYmE0ODdmZQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93
cml0YWJsZS1zdHJlYW1zL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3kuYW55LmpzCkBAIC0wLDAgKzEs
MTI0IEBACisvLyBNRVRBOiBnbG9iYWw9d2luZG93LHdvcmtlcixqc3NoZWxsCisndXNlIHN0cmlj
dCc7CisKK3Rlc3QoKCkgPT4geworICBuZXcgV3JpdGFibGVTdHJlYW0oe30sIG5ldyBDb3VudFF1
ZXVpbmdTdHJhdGVneSh7IGhpZ2hXYXRlck1hcms6IDQgfSkpOworfSwgJ0NhbiBjb25zdHJ1Y3Qg
YSB3cml0YWJsZSBzdHJlYW0gd2l0aCBhIHZhbGlkIENvdW50UXVldWluZ1N0cmF0ZWd5Jyk7CisK
K3Byb21pc2VfdGVzdCgoKSA9PiB7CisgIGNvbnN0IGRvbmVzID0gT2JqZWN0LmNyZWF0ZShudWxs
KTsKKworICBjb25zdCB3cyA9IG5ldyBXcml0YWJsZVN0cmVhbSgKKyAgICB7CisgICAgICB3cml0
ZShjaHVuaykgeworICAgICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7CisgICAg
ICAgICAgZG9uZXNbY2h1bmtdID0gcmVzb2x2ZTsKKyAgICAgICAgfSk7CisgICAgICB9CisgICAg
fSwKKyAgICBuZXcgQ291bnRRdWV1aW5nU3RyYXRlZ3koeyBoaWdoV2F0ZXJNYXJrOiAwIH0pCisg
ICk7CisKKyAgY29uc3Qgd3JpdGVyID0gd3MuZ2V0V3JpdGVyKCk7CisgIGxldCB3cml0ZVByb21p
c2VCOworICBsZXQgd3JpdGVQcm9taXNlQzsKKworICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCku
dGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X2VxdWFscyh3cml0ZXIuZGVzaXJlZFNpemUsIDAsICdk
ZXNpcmVkU2l6ZSBzaG91bGQgYmUgaW5pdGlhbGx5IDAnKTsKKworICAgIGNvbnN0IHdyaXRlUHJv
bWlzZUEgPSB3cml0ZXIud3JpdGUoJ2EnKTsKKyAgICBhc3NlcnRfZXF1YWxzKHdyaXRlci5kZXNp
cmVkU2l6ZSwgLTEsICdkZXNpcmVkU2l6ZSBzaG91bGQgYmUgLTEgYWZ0ZXIgMXN0IHdyaXRlKCkn
KTsKKworICAgIHdyaXRlUHJvbWlzZUIgPSB3cml0ZXIud3JpdGUoJ2InKTsKKyAgICBhc3NlcnRf
ZXF1YWxzKHdyaXRlci5kZXNpcmVkU2l6ZSwgLTIsICdkZXNpcmVkU2l6ZSBzaG91bGQgYmUgLTIg
YWZ0ZXIgMm5kIHdyaXRlKCknKTsKKworICAgIGRvbmVzLmEoKTsKKyAgICByZXR1cm4gd3JpdGVQ
cm9taXNlQTsKKyAgfSkudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X2VxdWFscyh3cml0ZXIuZGVz
aXJlZFNpemUsIC0xLCAnZGVzaXJlZFNpemUgc2hvdWxkIGJlIC0xIGFmdGVyIGNvbXBsZXRpbmcg
MXN0IHdyaXRlKCknKTsKKworICAgIGRvbmVzLmIoKTsKKyAgICByZXR1cm4gd3JpdGVQcm9taXNl
QjsKKyAgfSkudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X2VxdWFscyh3cml0ZXIuZGVzaXJlZFNp
emUsIDAsICdkZXNpcmVkU2l6ZSBzaG91bGQgYmUgMCBhZnRlciBjb21wbGV0aW5nIDJuZCB3cml0
ZSgpJyk7CisKKyAgICB3cml0ZVByb21pc2VDID0gd3JpdGVyLndyaXRlKCdjJyk7CisgICAgYXNz
ZXJ0X2VxdWFscyh3cml0ZXIuZGVzaXJlZFNpemUsIC0xLCAnZGVzaXJlZFNpemUgc2hvdWxkIGJl
IC0xIGFmdGVyIDNyZCB3cml0ZSgpJyk7CisKKyAgICBkb25lcy5jKCk7CisgICAgcmV0dXJuIHdy
aXRlUHJvbWlzZUM7CisgIH0pLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9lcXVhbHMod3JpdGVy
LmRlc2lyZWRTaXplLCAwLCAnZGVzaXJlZFNpemUgc2hvdWxkIGJlIDAgYWZ0ZXIgY29tcGxldGlu
ZyAzcmQgd3JpdGUoKScpOworICB9KTsKK30sICdDb3JyZWN0bHkgZ292ZXJucyB0aGUgdmFsdWUg
b2YgYSBXcml0YWJsZVN0cmVhbVwncyBzdGF0ZSBwcm9wZXJ0eSAoSFdNID0gMCknKTsKKworcHJv
bWlzZV90ZXN0KCgpID0+IHsKKyAgY29uc3QgZG9uZXMgPSBPYmplY3QuY3JlYXRlKG51bGwpOwor
CisgIGNvbnN0IHdzID0gbmV3IFdyaXRhYmxlU3RyZWFtKAorICAgIHsKKyAgICAgIHdyaXRlKGNo
dW5rKSB7CisgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKKyAgICAgICAg
ICBkb25lc1tjaHVua10gPSByZXNvbHZlOworICAgICAgICB9KTsKKyAgICAgIH0KKyAgICB9LAor
ICAgIG5ldyBDb3VudFF1ZXVpbmdTdHJhdGVneSh7IGhpZ2hXYXRlck1hcms6IDQgfSkKKyAgKTsK
KworICBjb25zdCB3cml0ZXIgPSB3cy5nZXRXcml0ZXIoKTsKKyAgbGV0IHdyaXRlUHJvbWlzZUI7
CisgIGxldCB3cml0ZVByb21pc2VDOworICBsZXQgd3JpdGVQcm9taXNlRDsKKworICByZXR1cm4g
UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X2VxdWFscyh3cml0ZXIu
ZGVzaXJlZFNpemUsIDQsICdkZXNpcmVkU2l6ZSBzaG91bGQgYmUgaW5pdGlhbGx5IDQnKTsKKwor
ICAgIGNvbnN0IHdyaXRlUHJvbWlzZUEgPSB3cml0ZXIud3JpdGUoJ2EnKTsKKyAgICBhc3NlcnRf
ZXF1YWxzKHdyaXRlci5kZXNpcmVkU2l6ZSwgMywgJ2Rlc2lyZWRTaXplIHNob3VsZCBiZSAzIGFm
dGVyIDFzdCB3cml0ZSgpJyk7CisKKyAgICB3cml0ZVByb21pc2VCID0gd3JpdGVyLndyaXRlKCdi
Jyk7CisgICAgYXNzZXJ0X2VxdWFscyh3cml0ZXIuZGVzaXJlZFNpemUsIDIsICdkZXNpcmVkU2l6
ZSBzaG91bGQgYmUgMiBhZnRlciAybmQgd3JpdGUoKScpOworCisgICAgd3JpdGVQcm9taXNlQyA9
IHdyaXRlci53cml0ZSgnYycpOworICAgIGFzc2VydF9lcXVhbHMod3JpdGVyLmRlc2lyZWRTaXpl
LCAxLCAnZGVzaXJlZFNpemUgc2hvdWxkIGJlIDEgYWZ0ZXIgM3JkIHdyaXRlKCknKTsKKworICAg
IHdyaXRlUHJvbWlzZUQgPSB3cml0ZXIud3JpdGUoJ2QnKTsKKyAgICBhc3NlcnRfZXF1YWxzKHdy
aXRlci5kZXNpcmVkU2l6ZSwgMCwgJ2Rlc2lyZWRTaXplIHNob3VsZCBiZSAwIGFmdGVyIDR0aCB3
cml0ZSgpJyk7CisKKyAgICB3cml0ZXIud3JpdGUoJ2UnKTsKKyAgICBhc3NlcnRfZXF1YWxzKHdy
aXRlci5kZXNpcmVkU2l6ZSwgLTEsICdkZXNpcmVkU2l6ZSBzaG91bGQgYmUgLTEgYWZ0ZXIgNXRo
IHdyaXRlKCknKTsKKworICAgIHdyaXRlci53cml0ZSgnZicpOworICAgIGFzc2VydF9lcXVhbHMo
d3JpdGVyLmRlc2lyZWRTaXplLCAtMiwgJ2Rlc2lyZWRTaXplIHNob3VsZCBiZSAtMiBhZnRlciA2
dGggd3JpdGUoKScpOworCisgICAgd3JpdGVyLndyaXRlKCdnJyk7CisgICAgYXNzZXJ0X2VxdWFs
cyh3cml0ZXIuZGVzaXJlZFNpemUsIC0zLCAnZGVzaXJlZFNpemUgc2hvdWxkIGJlIC0zIGFmdGVy
IDd0aCB3cml0ZSgpJyk7CisKKyAgICBkb25lcy5hKCk7CisgICAgcmV0dXJuIHdyaXRlUHJvbWlz
ZUE7CisgIH0pLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9lcXVhbHMod3JpdGVyLmRlc2lyZWRT
aXplLCAtMiwgJ2Rlc2lyZWRTaXplIHNob3VsZCBiZSAtMiBhZnRlciBjb21wbGV0aW5nIDFzdCB3
cml0ZSgpJyk7CisKKyAgICBkb25lcy5iKCk7CisgICAgcmV0dXJuIHdyaXRlUHJvbWlzZUI7Cisg
IH0pLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9lcXVhbHMod3JpdGVyLmRlc2lyZWRTaXplLCAt
MSwgJ2Rlc2lyZWRTaXplIHNob3VsZCBiZSAtMSBhZnRlciBjb21wbGV0aW5nIDJuZCB3cml0ZSgp
Jyk7CisKKyAgICBkb25lcy5jKCk7CisgICAgcmV0dXJuIHdyaXRlUHJvbWlzZUM7CisgIH0pLnRo
ZW4oKCkgPT4geworICAgIGFzc2VydF9lcXVhbHMod3JpdGVyLmRlc2lyZWRTaXplLCAwLCAnZGVz
aXJlZFNpemUgc2hvdWxkIGJlIDAgYWZ0ZXIgY29tcGxldGluZyAzcmQgd3JpdGUoKScpOworCisg
ICAgd3JpdGVyLndyaXRlKCdoJyk7CisgICAgYXNzZXJ0X2VxdWFscyh3cml0ZXIuZGVzaXJlZFNp
emUsIC0xLCAnZGVzaXJlZFNpemUgc2hvdWxkIGJlIC0xIGFmdGVyIDh0aCB3cml0ZSgpJyk7CisK
KyAgICBkb25lcy5kKCk7CisgICAgcmV0dXJuIHdyaXRlUHJvbWlzZUQ7CisgIH0pLnRoZW4oKCkg
PT4geworICAgIGFzc2VydF9lcXVhbHMod3JpdGVyLmRlc2lyZWRTaXplLCAwLCAnZGVzaXJlZFNp
emUgc2hvdWxkIGJlIDAgYWZ0ZXIgY29tcGxldGluZyA0dGggd3JpdGUoKScpOworCisgICAgd3Jp
dGVyLndyaXRlKCdpJyk7CisgICAgYXNzZXJ0X2VxdWFscyh3cml0ZXIuZGVzaXJlZFNpemUsIC0x
LCAnZGVzaXJlZFNpemUgc2hvdWxkIGJlIC0xIGFmdGVyIDl0aCB3cml0ZSgpJyk7CisgIH0pOwor
fSwgJ0NvcnJlY3RseSBnb3Zlcm5zIHRoZSB2YWx1ZSBvZiBhIFdyaXRhYmxlU3RyZWFtXCdzIHN0
YXRlIHByb3BlcnR5IChIV00gPSA0KScpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvY291bnQt
cXVldWluZy1zdHJhdGVneS5hbnkud29ya2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL2Nv
dW50LXF1ZXVpbmctc3RyYXRlZ3kuYW55Lndvcmtlci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NDg0MmJiMTRjYjVlYmI1NDhlNGJhMTI5YTNkMzM5NjY5ZjBhNTQ0MQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93
cml0YWJsZS1zdHJlYW1zL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3kuYW55Lndvcmtlci1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSw1IEBACisKK0ZBSUwgQ2FuIGNvbnN0cnVjdCBhIHdyaXRhYmxlIHN0
cmVhbSB3aXRoIGEgdmFsaWQgQ291bnRRdWV1aW5nU3RyYXRlZ3kgQ2FuJ3QgZmluZCB2YXJpYWJs
ZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgQ29ycmVjdGx5IGdvdmVybnMgdGhlIHZhbHVlIG9mIGEg
V3JpdGFibGVTdHJlYW0ncyBzdGF0ZSBwcm9wZXJ0eSAoSFdNID0gMCkgQ2FuJ3QgZmluZCB2YXJp
YWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgQ29ycmVjdGx5IGdvdmVybnMgdGhlIHZhbHVlIG9m
IGEgV3JpdGFibGVTdHJlYW0ncyBzdGF0ZSBwcm9wZXJ0eSAoSFdNID0gNCkgQ2FuJ3QgZmluZCB2
YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvY291bnQt
cXVldWluZy1zdHJhdGVneS5hbnkud29ya2VyLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9jb3VudC1xdWV1
aW5nLXN0cmF0ZWd5LmFueS53b3JrZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMzgyOTEzNTI4ZTY5M2Iz
YTVkNTZjNjYwYTQ1MDYwOTgwYjU0OGMzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMv
Y291bnQtcXVldWluZy1zdHJhdGVneS5hbnkud29ya2VyLmh0bWwKQEAgLTAsMCArMSBAQAorPCEt
LSBUaGlzIGZpbGUgaXMgcmVxdWlyZWQgZm9yIFdlYktpdCB0ZXN0IGluZnJhc3RydWN0dXJlIHRv
IHJ1biB0aGUgdGVtcGxhdGVkIHRlc3QgLS0+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
dHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvZXJyb3IuYW55LWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJl
YW1zL2Vycm9yLmFueS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGFmODZmYTU5YmI4NzdmMmZi
NmJlNDY1Mjg3OTI2ZWY5Njg4N2FkZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL2Vy
cm9yLmFueS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw3IEBACisKK0ZBSUwgY29udHJvbGxlci5l
cnJvcigpIHNob3VsZCBlcnJvciB0aGUgc3RyZWFtIGNvbnRyb2xsZXIuZXJyb3IgaXMgbm90IGEg
ZnVuY3Rpb24uIChJbiAnY29udHJvbGxlci5lcnJvcihlcnJvcjEpJywgJ2NvbnRyb2xsZXIuZXJy
b3InIGlzIHVuZGVmaW5lZCkKK0ZBSUwgY29udHJvbGxlci5lcnJvcigpIG9uIGVycm9yaW5nIHN0
cmVhbSBzaG91bGQgbm90IHRocm93IGNvbnRyb2xsZXIuZXJyb3IgaXMgbm90IGEgZnVuY3Rpb24u
IChJbiAnY29udHJvbGxlci5lcnJvcihlcnJvcjEpJywgJ2NvbnRyb2xsZXIuZXJyb3InIGlzIHVu
ZGVmaW5lZCkKK0ZBSUwgc3VycGx1cyBjYWxscyB0byBjb250cm9sbGVyLmVycm9yKCkgc2hvdWxk
IGJlIGEgbm8tb3AgY29udHJvbGxlci5lcnJvciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICdjb250
cm9sbGVyLmVycm9yKGVycm9yMSknLCAnY29udHJvbGxlci5lcnJvcicgaXMgdW5kZWZpbmVkKQor
RkFJTCBjb250cm9sbGVyLmVycm9yKCkgb24gZXJyb3JlZCBzdHJlYW0gc2hvdWxkIG5vdCB0aHJv
dyBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJU
eXBlRXJyb3I6IGNvbnRyb2xsZXIuZXJyb3IgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnY29udHJv
bGxlci5lcnJvcihlcnJvcjEpJywgJ2NvbnRyb2xsZXIuZXJyb3InIGlzIHVuZGVmaW5lZCkiCitG
QUlMIGNvbnRyb2xsZXIuZXJyb3IoKSBvbiBjbG9zZWQgc3RyZWFtIHNob3VsZCBub3QgdGhyb3cg
d3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywgJ3dz
LmdldFdyaXRlcicgaXMgdW5kZWZpbmVkKQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9lcnJv
ci5hbnkuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL2Vycm9yLmFueS5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzODI5
MTM1MjhlNjkzYjNhNWQ1NmM2NjBhNDUwNjA5ODBiNTQ4YzMKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFi
bGUtc3RyZWFtcy9lcnJvci5hbnkuaHRtbApAQCAtMCwwICsxIEBACis8IS0tIFRoaXMgZmlsZSBp
cyByZXF1aXJlZCBmb3IgV2ViS2l0IHRlc3QgaW5mcmFzdHJ1Y3R1cmUgdG8gcnVuIHRoZSB0ZW1w
bGF0ZWQgdGVzdCAtLT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFi
bGUtc3RyZWFtcy9lcnJvci5hbnkuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9lcnJvci5hbnkuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYmU5ODZmY2NjNmVhYzY1MTcyMmFiNDJlMGMwM2ZmN2YzODZmY2ZhOAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy93cml0YWJsZS1zdHJlYW1zL2Vycm9yLmFueS5qcwpAQCAtMCwwICsxLDY0IEBACisvLyBN
RVRBOiBnbG9iYWw9d2luZG93LHdvcmtlcixqc3NoZWxsCisndXNlIHN0cmljdCc7CisKK2NvbnN0
IGVycm9yMSA9IG5ldyBFcnJvcignZXJyb3IxJyk7CitlcnJvcjEubmFtZSA9ICdlcnJvcjEnOwor
Citjb25zdCBlcnJvcjIgPSBuZXcgRXJyb3IoJ2Vycm9yMicpOworZXJyb3IyLm5hbWUgPSAnZXJy
b3IyJzsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBjb25zdCB3cyA9IG5ldyBXcml0YWJsZVN0
cmVhbSh7CisgICAgc3RhcnQoY29udHJvbGxlcikgeworICAgICAgY29udHJvbGxlci5lcnJvcihl
cnJvcjEpOworICAgIH0KKyAgfSk7CisgIHJldHVybiBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0
LCBlcnJvcjEsIHdzLmdldFdyaXRlcigpLmNsb3NlZCwgJ3N0cmVhbSBzaG91bGQgYmUgZXJyb3Jl
ZCcpOworfSwgJ2NvbnRyb2xsZXIuZXJyb3IoKSBzaG91bGQgZXJyb3IgdGhlIHN0cmVhbScpOwor
Cit0ZXN0KCgpID0+IHsKKyAgbGV0IGNvbnRyb2xsZXI7CisgIGNvbnN0IHdzID0gbmV3IFdyaXRh
YmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjb250cm9sbGVyID0gYzsKKyAgICB9
CisgIH0pOworICB3cy5hYm9ydCgpOworICBjb250cm9sbGVyLmVycm9yKGVycm9yMSk7Cit9LCAn
Y29udHJvbGxlci5lcnJvcigpIG9uIGVycm9yaW5nIHN0cmVhbSBzaG91bGQgbm90IHRocm93Jyk7
CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgbGV0IGNvbnRyb2xsZXI7CisgIGNvbnN0IHdzID0g
bmV3IFdyaXRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjb250cm9sbGVyID0g
YzsKKyAgICB9CisgIH0pOworICBjb250cm9sbGVyLmVycm9yKGVycm9yMSk7CisgIGNvbnRyb2xs
ZXIuZXJyb3IoZXJyb3IyKTsKKyAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVy
cm9yMSwgd3MuZ2V0V3JpdGVyKCkuY2xvc2VkLCAnZmlyc3QgY29udHJvbGxlci5lcnJvcigpIHNo
b3VsZCB3aW4nKTsKK30sICdzdXJwbHVzIGNhbGxzIHRvIGNvbnRyb2xsZXIuZXJyb3IoKSBzaG91
bGQgYmUgYSBuby1vcCcpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworICBsZXQgY29udHJvbGxl
cjsKKyAgY29uc3Qgd3MgPSBuZXcgV3JpdGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAg
ICAgIGNvbnRyb2xsZXIgPSBjOworICAgIH0KKyAgfSk7CisgIHJldHVybiB3cy5hYm9ydCgpLnRo
ZW4oKCkgPT4geworICAgIGNvbnRyb2xsZXIuZXJyb3IoZXJyb3IxKTsKKyAgfSk7Cit9LCAnY29u
dHJvbGxlci5lcnJvcigpIG9uIGVycm9yZWQgc3RyZWFtIHNob3VsZCBub3QgdGhyb3cnKTsKKwor
cHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgbGV0IGNvbnRyb2xsZXI7CisgIGNvbnN0IHdzID0gbmV3
IFdyaXRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjb250cm9sbGVyID0gYzsK
KyAgICB9CisgIH0pOworICByZXR1cm4gd3MuZ2V0V3JpdGVyKCkuY2xvc2UoKS50aGVuKCgpID0+
IHsKKyAgICBjb250cm9sbGVyLmVycm9yKGVycm9yMSk7CisgIH0pOworfSwgJ2NvbnRyb2xsZXIu
ZXJyb3IoKSBvbiBjbG9zZWQgc3RyZWFtIHNob3VsZCBub3QgdGhyb3cnKTsKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0
YWJsZS1zdHJlYW1zL2Vycm9yLmFueS53b3JrZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMv
ZXJyb3IuYW55Lndvcmtlci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2M3OTc1OTY0Mzk5ZmUz
M2Y3ODZlZDRjYTZkOTg2NzcyMDZmNTVjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1z
L2Vycm9yLmFueS53b3JrZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNyBAQAorCitGQUlMIGNv
bnRyb2xsZXIuZXJyb3IoKSBzaG91bGQgZXJyb3IgdGhlIHN0cmVhbSBDYW4ndCBmaW5kIHZhcmlh
YmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBjb250cm9sbGVyLmVycm9yKCkgb24gZXJyb3Jpbmcg
c3RyZWFtIHNob3VsZCBub3QgdGhyb3cgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJl
YW0KK0ZBSUwgc3VycGx1cyBjYWxscyB0byBjb250cm9sbGVyLmVycm9yKCkgc2hvdWxkIGJlIGEg
bm8tb3AgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgY29udHJvbGxl
ci5lcnJvcigpIG9uIGVycm9yZWQgc3RyZWFtIHNob3VsZCBub3QgdGhyb3cgQ2FuJ3QgZmluZCB2
YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgY29udHJvbGxlci5lcnJvcigpIG9uIGNsb3Nl
ZCBzdHJlYW0gc2hvdWxkIG5vdCB0aHJvdyBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0
cmVhbQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9lcnJvci5hbnkud29ya2VyLmh0bWwgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFi
bGUtc3RyZWFtcy9lcnJvci5hbnkud29ya2VyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjM4MjkxMzUyOGU2
OTNiM2E1ZDU2YzY2MGE0NTA2MDk4MGI1NDhjMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJl
YW1zL2Vycm9yLmFueS53b3JrZXIuaHRtbApAQCAtMCwwICsxIEBACis8IS0tIFRoaXMgZmlsZSBp
cyByZXF1aXJlZCBmb3IgV2ViS2l0IHRlc3QgaW5mcmFzdHJ1Y3R1cmUgdG8gcnVuIHRoZSB0ZW1w
bGF0ZWQgdGVzdCAtLT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFi
bGUtc3RyZWFtcy9mbG9hdGluZy1wb2ludC10b3RhbC1xdWV1ZS1zaXplLmFueS1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
d3JpdGFibGUtc3RyZWFtcy9mbG9hdGluZy1wb2ludC10b3RhbC1xdWV1ZS1zaXplLmFueS1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uOTgzMzg0MDAzYWU2MDJhNjUzMjJjOTJkOTFiMmFhNjg1ZWMx
NzdlNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL2Zsb2F0aW5nLXBvaW50LXRvdGFs
LXF1ZXVlLXNpemUuYW55LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDYgQEAKKworRkFJTCBGbG9h
dGluZyBwb2ludCBhcml0aG1ldGljIG11c3QgbWFuaWZlc3QgbmVhciBOVU1CRVIuTUFYX1NBRkVf
SU5URUdFUiAodG90YWwgZW5kcyB1cCBwb3NpdGl2ZSkgd3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1
bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicgaXMgdW5kZWZpbmVk
KQorRkFJTCBGbG9hdGluZyBwb2ludCBhcml0aG1ldGljIG11c3QgbWFuaWZlc3QgbmVhciAwICh0
b3RhbCBlbmRzIHVwIHBvc2l0aXZlLCBidXQgY2xhbXBlZCkgd3MuZ2V0V3JpdGVyIGlzIG5vdCBh
IGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicgaXMgdW5kZWZp
bmVkKQorRkFJTCBGbG9hdGluZyBwb2ludCBhcml0aG1ldGljIG11c3QgbWFuaWZlc3QgbmVhciAw
ICh0b3RhbCBlbmRzIHVwIHBvc2l0aXZlLCBhbmQgbm90IGNsYW1wZWQpIHdzLmdldFdyaXRlciBp
cyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlz
IHVuZGVmaW5lZCkKK0ZBSUwgRmxvYXRpbmcgcG9pbnQgYXJpdGhtZXRpYyBtdXN0IG1hbmlmZXN0
IG5lYXIgMCAodG90YWwgZW5kcyB1cCB6ZXJvKSB3cy5nZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rp
b24uIChJbiAnd3MuZ2V0V3JpdGVyKCknLCAnd3MuZ2V0V3JpdGVyJyBpcyB1bmRlZmluZWQpCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL2Zsb2F0aW5nLXBvaW50LXRvdGFsLXF1ZXVlLXNpemUu
YW55Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9mbG9hdGluZy1wb2ludC10b3RhbC1xdWV1ZS1zaXplLmFu
eS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjIzODI5MTM1MjhlNjkzYjNhNWQ1NmM2NjBhNDUwNjA5ODBiNTQ4
YzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9mbG9hdGluZy1wb2ludC10b3RhbC1x
dWV1ZS1zaXplLmFueS5odG1sCkBAIC0wLDAgKzEgQEAKKzwhLS0gVGhpcyBmaWxlIGlzIHJlcXVp
cmVkIGZvciBXZWJLaXQgdGVzdCBpbmZyYXN0cnVjdHVyZSB0byBydW4gdGhlIHRlbXBsYXRlZCB0
ZXN0IC0tPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJl
YW1zL2Zsb2F0aW5nLXBvaW50LXRvdGFsLXF1ZXVlLXNpemUuYW55LmpzIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMv
ZmxvYXRpbmctcG9pbnQtdG90YWwtcXVldWUtc2l6ZS5hbnkuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGU3N2Jh
MGJiMzExODVjNWUwYjdiZTY5MjQ2ZTFjOTE5YzdiYWU2ZgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJs
ZS1zdHJlYW1zL2Zsb2F0aW5nLXBvaW50LXRvdGFsLXF1ZXVlLXNpemUuYW55LmpzCkBAIC0wLDAg
KzEsODcgQEAKKy8vIE1FVEE6IGdsb2JhbD13aW5kb3csd29ya2VyLGpzc2hlbGwKKyd1c2Ugc3Ry
aWN0JzsKKworLy8gRHVlIHRvIHRoZSBsaW1pdGF0aW9ucyBvZiBmbG9hdGluZy1wb2ludCBwcmVj
aXNpb24sIHRoZSBjYWxjdWxhdGlvbiBvZiBkZXNpcmVkU2l6ZSBzb21ldGltZXMgZ2l2ZXMgZGlm
ZmVyZW50IGFuc3dlcnMKKy8vIHRoYW4gYWRkaW5nIHVwIHRoZSBpdGVtcyBpbiB0aGUgcXVldWUg
d291bGQuIEl0IGlzIGltcG9ydGFudCB0aGF0IGltcGxlbWVudGF0aW9ucyBnaXZlIHRoZSBzYW1l
IHJlc3VsdCBpbiB0aGVzZSBlZGdlCisvLyBjYXNlcyBzbyB0aGF0IGRldmVsb3BlcnMgZG8gbm90
IGNvbWUgdG8gZGVwZW5kIG9uIG5vbi1zdGFuZGFyZCBiZWhhdmlvdXIuIFNlZQorLy8gaHR0cHM6
Ly9naXRodWIuY29tL3doYXR3Zy9zdHJlYW1zL2lzc3Vlcy81ODIgYW5kIGxpbmtlZCBpc3N1ZXMg
Zm9yIGZ1cnRoZXIgZGlzY3Vzc2lvbi4KKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgY29uc3Qg
d3JpdGVyID0gc2V0dXBUZXN0U3RyZWFtKCk7CisKKyAgY29uc3Qgd3JpdGVQcm9taXNlcyA9IFsK
KyAgICB3cml0ZXIud3JpdGUoMiksCisgICAgd3JpdGVyLndyaXRlKE51bWJlci5NQVhfU0FGRV9J
TlRFR0VSKQorICBdOworCisgIGFzc2VydF9lcXVhbHMod3JpdGVyLmRlc2lyZWRTaXplLCAwIC0g
MiAtIE51bWJlci5NQVhfU0FGRV9JTlRFR0VSLAorICAgICdkZXNpcmVkU2l6ZSBtdXN0IGJlIGNh
bGN1bGF0ZWQgdXNpbmcgZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCBhcml0aG1ldGlj
IChhZnRlciB3cml0aW5nIHR3byBjaHVua3MpJyk7CisKKyAgcmV0dXJuIFByb21pc2UuYWxsKHdy
aXRlUHJvbWlzZXMpLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9lcXVhbHMod3JpdGVyLmRlc2ly
ZWRTaXplLCAwLCAnW1txdWV1ZVRvdGFsU2l6ZV1dIG11c3QgY2xhbXAgdG8gMCBpZiBpdCBiZWNv
bWVzIG5lZ2F0aXZlJyk7CisgIH0pOworfSwgJ0Zsb2F0aW5nIHBvaW50IGFyaXRobWV0aWMgbXVz
dCBtYW5pZmVzdCBuZWFyIE5VTUJFUi5NQVhfU0FGRV9JTlRFR0VSICh0b3RhbCBlbmRzIHVwIHBv
c2l0aXZlKScpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworICBjb25zdCB3cml0ZXIgPSBzZXR1
cFRlc3RTdHJlYW0oKTsKKworICBjb25zdCB3cml0ZVByb21pc2VzID0gWworICAgIHdyaXRlci53
cml0ZSgxZS0xNiksCisgICAgd3JpdGVyLndyaXRlKDEpCisgIF07CisKKyAgYXNzZXJ0X2VxdWFs
cyh3cml0ZXIuZGVzaXJlZFNpemUsIDAgLSAxZS0xNiAtIDEsCisgICAgJ2Rlc2lyZWRTaXplIG11
c3QgYmUgY2FsY3VsYXRlZCB1c2luZyBkb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IGFy
aXRobWV0aWMgKGFmdGVyIHdyaXRpbmcgdHdvIGNodW5rcyknKTsKKworICByZXR1cm4gUHJvbWlz
ZS5hbGwod3JpdGVQcm9taXNlcykudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X2VxdWFscyh3cml0
ZXIuZGVzaXJlZFNpemUsIDAsICdbW3F1ZXVlVG90YWxTaXplXV0gbXVzdCBjbGFtcCB0byAwIGlm
IGl0IGJlY29tZXMgbmVnYXRpdmUnKTsKKyAgfSk7Cit9LCAnRmxvYXRpbmcgcG9pbnQgYXJpdGht
ZXRpYyBtdXN0IG1hbmlmZXN0IG5lYXIgMCAodG90YWwgZW5kcyB1cCBwb3NpdGl2ZSwgYnV0IGNs
YW1wZWQpJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisgIGNvbnN0IHdyaXRlciA9IHNldHVw
VGVzdFN0cmVhbSgpOworCisgIGNvbnN0IHdyaXRlUHJvbWlzZXMgPSBbCisgICAgd3JpdGVyLndy
aXRlKDFlLTE2KSwKKyAgICB3cml0ZXIud3JpdGUoMSksCisgICAgd3JpdGVyLndyaXRlKDJlLTE2
KQorICBdOworCisgIGFzc2VydF9lcXVhbHMod3JpdGVyLmRlc2lyZWRTaXplLCAwIC0gMWUtMTYg
LSAxIC0gMmUtMTYsCisgICAgJ2Rlc2lyZWRTaXplIG11c3QgYmUgY2FsY3VsYXRlZCB1c2luZyBk
b3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IGFyaXRobWV0aWMgKGFmdGVyIHdyaXRpbmcg
dGhyZWUgY2h1bmtzKScpOworCisgIHJldHVybiBQcm9taXNlLmFsbCh3cml0ZVByb21pc2VzKS50
aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfZXF1YWxzKHdyaXRlci5kZXNpcmVkU2l6ZSwgMCAtIDFl
LTE2IC0gMSAtIDJlLTE2ICsgMWUtMTYgKyAxICsgMmUtMTYsCisgICAgICAnZGVzaXJlZFNpemUg
bXVzdCBiZSBjYWxjdWxhdGVkIHVzaW5nIGZsb2F0aW5nLXBvaW50IGFyaXRobWV0aWMgKGFmdGVy
IHRoZSB0aHJlZSBjaHVua3MgaGF2ZSBmaW5pc2hlZCB3cml0aW5nKScpOworICB9KTsKK30sICdG
bG9hdGluZyBwb2ludCBhcml0aG1ldGljIG11c3QgbWFuaWZlc3QgbmVhciAwICh0b3RhbCBlbmRz
IHVwIHBvc2l0aXZlLCBhbmQgbm90IGNsYW1wZWQpJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7
CisgIGNvbnN0IHdyaXRlciA9IHNldHVwVGVzdFN0cmVhbSgpOworCisgIGNvbnN0IHdyaXRlUHJv
bWlzZXMgPSBbCisgICAgd3JpdGVyLndyaXRlKDJlLTE2KSwKKyAgICB3cml0ZXIud3JpdGUoMSkK
KyAgXTsKKworICBhc3NlcnRfZXF1YWxzKHdyaXRlci5kZXNpcmVkU2l6ZSwgMCAtIDJlLTE2IC0g
MSwKKyAgICAnZGVzaXJlZFNpemUgbXVzdCBiZSBjYWxjdWxhdGVkIHVzaW5nIGRvdWJsZS1wcmVj
aXNpb24gZmxvYXRpbmctcG9pbnQgYXJpdGhtZXRpYyAoYWZ0ZXIgd3JpdGluZyB0d28gY2h1bmtz
KScpOworCisgIHJldHVybiBQcm9taXNlLmFsbCh3cml0ZVByb21pc2VzKS50aGVuKCgpID0+IHsK
KyAgICBhc3NlcnRfZXF1YWxzKHdyaXRlci5kZXNpcmVkU2l6ZSwgMCAtIDJlLTE2IC0gMSArIDJl
LTE2ICsgMSwKKyAgICAgICdkZXNpcmVkU2l6ZSBtdXN0IGJlIGNhbGN1bGF0ZWQgdXNpbmcgZmxv
YXRpbmctcG9pbnQgYXJpdGhtZXRpYyAoYWZ0ZXIgdGhlIHR3byBjaHVua3MgaGF2ZSBmaW5pc2hl
ZCB3cml0aW5nKScpOworICB9KTsKK30sICdGbG9hdGluZyBwb2ludCBhcml0aG1ldGljIG11c3Qg
bWFuaWZlc3QgbmVhciAwICh0b3RhbCBlbmRzIHVwIHplcm8pJyk7CisKK2Z1bmN0aW9uIHNldHVw
VGVzdFN0cmVhbSgpIHsKKyAgY29uc3Qgc3RyYXRlZ3kgPSB7CisgICAgc2l6ZSh4KSB7CisgICAg
ICByZXR1cm4geDsKKyAgICB9LAorICAgIGhpZ2hXYXRlck1hcms6IDAKKyAgfTsKKworICBjb25z
dCB3cyA9IG5ldyBXcml0YWJsZVN0cmVhbSh7fSwgc3RyYXRlZ3kpOworCisgIHJldHVybiB3cy5n
ZXRXcml0ZXIoKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL2Zsb2F0aW5nLXBvaW50LXRv
dGFsLXF1ZXVlLXNpemUuYW55Lndvcmtlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9mbG9h
dGluZy1wb2ludC10b3RhbC1xdWV1ZS1zaXplLmFueS53b3JrZXItZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjdlZDM0NmUwM2JhZjQ5ZWU5NTA3OWEzNDczNTI4MjMwMTY5MTU4YzEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9mbG9hdGluZy1wb2ludC10b3RhbC1xdWV1ZS1zaXplLmFu
eS53b3JrZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNiBAQAorCitGQUlMIEZsb2F0aW5nIHBv
aW50IGFyaXRobWV0aWMgbXVzdCBtYW5pZmVzdCBuZWFyIE5VTUJFUi5NQVhfU0FGRV9JTlRFR0VS
ICh0b3RhbCBlbmRzIHVwIHBvc2l0aXZlKSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0
cmVhbQorRkFJTCBGbG9hdGluZyBwb2ludCBhcml0aG1ldGljIG11c3QgbWFuaWZlc3QgbmVhciAw
ICh0b3RhbCBlbmRzIHVwIHBvc2l0aXZlLCBidXQgY2xhbXBlZCkgQ2FuJ3QgZmluZCB2YXJpYWJs
ZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgRmxvYXRpbmcgcG9pbnQgYXJpdGhtZXRpYyBtdXN0IG1h
bmlmZXN0IG5lYXIgMCAodG90YWwgZW5kcyB1cCBwb3NpdGl2ZSwgYW5kIG5vdCBjbGFtcGVkKSBD
YW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBGbG9hdGluZyBwb2ludCBh
cml0aG1ldGljIG11c3QgbWFuaWZlc3QgbmVhciAwICh0b3RhbCBlbmRzIHVwIHplcm8pIENhbid0
IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1z
L2Zsb2F0aW5nLXBvaW50LXRvdGFsLXF1ZXVlLXNpemUuYW55Lndvcmtlci5odG1sIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0
cmVhbXMvZmxvYXRpbmctcG9pbnQtdG90YWwtcXVldWUtc2l6ZS5hbnkud29ya2VyLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMjM4MjkxMzUyOGU2OTNiM2E1ZDU2YzY2MGE0NTA2MDk4MGI1NDhjMwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL2Zsb2F0aW5nLXBvaW50LXRvdGFsLXF1ZXVlLXNpemUu
YW55Lndvcmtlci5odG1sCkBAIC0wLDAgKzEgQEAKKzwhLS0gVGhpcyBmaWxlIGlzIHJlcXVpcmVk
IGZvciBXZWJLaXQgdGVzdCBpbmZyYXN0cnVjdHVyZSB0byBydW4gdGhlIHRlbXBsYXRlZCB0ZXN0
IC0tPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1z
L2dlbmVyYWwuYW55LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL2dlbmVyYWwuYW55LWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5iYWVmNDQxYzQxMTQyZGZlNjIxOWEyNzFjMzE3M2EyZDMzMDcx
OWY4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvZ2VuZXJhbC5hbnktZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMTggQEAKKworRkFJTCBkZXNpcmVkU2l6ZSBvbiBhIHJlbGVhc2VkIHdy
aXRlciB3cy5nZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3JpdGVyKCkn
LCAnd3MuZ2V0V3JpdGVyJyBpcyB1bmRlZmluZWQpCitGQUlMIGRlc2lyZWRTaXplIGluaXRpYWwg
dmFsdWUgd3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigp
JywgJ3dzLmdldFdyaXRlcicgaXMgdW5kZWZpbmVkKQorRkFJTCBkZXNpcmVkU2l6ZSBvbiBhIHdy
aXRlciBmb3IgYSBjbG9zZWQgc3RyZWFtIHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4g
KEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkKK0ZBSUwg
ZGVzaXJlZFNpemUgb24gYSB3cml0ZXIgZm9yIGFuIGVycm9yZWQgc3RyZWFtIGMuZXJyb3IgaXMg
bm90IGEgZnVuY3Rpb24uIChJbiAnYy5lcnJvcigpJywgJ2MuZXJyb3InIGlzIHVuZGVmaW5lZCkK
K0ZBSUwgd3MuZ2V0V3JpdGVyKCkgb24gYSBjbG9zaW5nIFdyaXRhYmxlU3RyZWFtIHdzLmdldFdy
aXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0
ZXInIGlzIHVuZGVmaW5lZCkKK0ZBSUwgd3MuZ2V0V3JpdGVyKCkgb24gYSBjbG9zZWQgV3JpdGFi
bGVTdHJlYW0gd3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRl
cigpJywgJ3dzLmdldFdyaXRlcicgaXMgdW5kZWZpbmVkKQorRkFJTCB3cy5nZXRXcml0ZXIoKSBv
biBhbiBhYm9ydGVkIFdyaXRhYmxlU3RyZWFtIHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlv
bi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkKK0ZB
SUwgd3MuZ2V0V3JpdGVyKCkgb24gYW4gZXJyb3JlZCBXcml0YWJsZVN0cmVhbSBjLmVycm9yIGlz
IG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ2MuZXJyb3IoKScsICdjLmVycm9yJyBpcyB1bmRlZmluZWQp
CitGQUlMIGNsb3NlZCBhbmQgcmVhZHkgb24gYSByZWxlYXNlZCB3cml0ZXIgd3MuZ2V0V3JpdGVy
IGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicg
aXMgdW5kZWZpbmVkKQorRkFJTCBXcml0YWJsZVN0cmVhbSBzaG91bGQgY2FsbCB1bmRlcmx5aW5n
IHNpbmsgbWV0aG9kcyBhcyBtZXRob2RzIHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4g
KEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkKK0ZBSUwg
bWV0aG9kcyBzaG91bGQgbm90IG5vdCBoYXZlIC5hcHBseSgpIG9yIC5jYWxsKCkgY2FsbGVkIHdz
MS5nZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3MxLmdldFdyaXRlcigpJywgJ3dz
MS5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkKK0ZBSUwgV3JpdGFibGVTdHJlYW0ncyBzdHJhdGVn
eS5zaXplIHNob3VsZCBub3QgYmUgY2FsbGVkIGFzIGEgbWV0aG9kIGhpZ2hXYXRlck1hcmsgdmFs
dWUgaXMgbmVnYXRpdmUgb3Igbm90IGEgbnVtYmVyCitGQUlMIHJlZHVuZGFudCByZWxlYXNlTG9j
aygpIGlzIG5vLW9wIHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRX
cml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkKK0ZBSUwgcmVhZHkgcHJvbWlz
ZSBzaG91bGQgZmlyZSBiZWZvcmUgY2xvc2VkIG9uIHJlbGVhc2VMb2NrIHdzLmdldFdyaXRlciBp
cyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlz
IHVuZGVmaW5lZCkKK0ZBSUwgU3ViY2xhc3NpbmcgV3JpdGFibGVTdHJlYW0gc2hvdWxkIHdvcmsg
YXNzZXJ0X3RydWU6IFN1YmNsYXNzIG9iamVjdCBzaG91bGQgYmUgYW4gaW5zdGFuY2Ugb2YgU3Vi
Y2xhc3MgZXhwZWN0ZWQgdHJ1ZSBnb3QgZmFsc2UKK0ZBSUwgdGhlIGxvY2tlZCBnZXR0ZXIgc2hv
dWxkIHJldHVybiB0cnVlIGlmIHRoZSBzdHJlYW0gaGFzIGEgd3JpdGVyIGFzc2VydF9mYWxzZTog
c3RyZWFtIHNob3VsZCBub3QgYmUgbG9ja2VkIGV4cGVjdGVkIGZhbHNlIGdvdCB1bmRlZmluZWQK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvZ2VuZXJhbC5hbnkuaHRtbCBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1z
L2dlbmVyYWwuYW55Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjM4MjkxMzUyOGU2OTNiM2E1ZDU2YzY2MGE0
NTA2MDk4MGI1NDhjMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL2dlbmVyYWwuYW55
Lmh0bWwKQEAgLTAsMCArMSBAQAorPCEtLSBUaGlzIGZpbGUgaXMgcmVxdWlyZWQgZm9yIFdlYktp
dCB0ZXN0IGluZnJhc3RydWN0dXJlIHRvIHJ1biB0aGUgdGVtcGxhdGVkIHRlc3QgLS0+ClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvZ2VuZXJhbC5h
bnkuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvd3JpdGFibGUtc3RyZWFtcy9nZW5lcmFsLmFueS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZGQxMGIyOWFh
MGViYzViZjcwZjU1MmI0OWFmYzljODk5YzI1ODI4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0
cmVhbXMvZ2VuZXJhbC5hbnkuanMKQEAgLTAsMCArMSwyNzcgQEAKKy8vIE1FVEE6IGdsb2JhbD13
aW5kb3csd29ya2VyLGpzc2hlbGwKKyd1c2Ugc3RyaWN0JzsKKwordGVzdCgoKSA9PiB7CisgIGNv
bnN0IHdzID0gbmV3IFdyaXRhYmxlU3RyZWFtKHt9KTsKKyAgY29uc3Qgd3JpdGVyID0gd3MuZ2V0
V3JpdGVyKCk7CisgIHdyaXRlci5yZWxlYXNlTG9jaygpOworCisgIGFzc2VydF90aHJvd3NfanMo
VHlwZUVycm9yLCAoKSA9PiB3cml0ZXIuZGVzaXJlZFNpemUsICdkZXNpcmVkU2l6ZSBzaG91bGQg
dGhyb3cgYSBUeXBlRXJyb3InKTsKK30sICdkZXNpcmVkU2l6ZSBvbiBhIHJlbGVhc2VkIHdyaXRl
cicpOworCit0ZXN0KCgpID0+IHsKKyAgY29uc3Qgd3MgPSBuZXcgV3JpdGFibGVTdHJlYW0oe30p
OworCisgIGNvbnN0IHdyaXRlciA9IHdzLmdldFdyaXRlcigpOworCisgIGFzc2VydF9lcXVhbHMo
d3JpdGVyLmRlc2lyZWRTaXplLCAxLCAnZGVzaXJlZFNpemUgc2hvdWxkIGJlIDEnKTsKK30sICdk
ZXNpcmVkU2l6ZSBpbml0aWFsIHZhbHVlJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisgIGNv
bnN0IHdzID0gbmV3IFdyaXRhYmxlU3RyZWFtKHt9KTsKKworICBjb25zdCB3cml0ZXIgPSB3cy5n
ZXRXcml0ZXIoKTsKKworICB3cml0ZXIuY2xvc2UoKTsKKworICByZXR1cm4gd3JpdGVyLmNsb3Nl
ZC50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfZXF1YWxzKHdyaXRlci5kZXNpcmVkU2l6ZSwgMCwg
J2Rlc2lyZWRTaXplIHNob3VsZCBiZSAwJyk7CisgIH0pOworfSwgJ2Rlc2lyZWRTaXplIG9uIGEg
d3JpdGVyIGZvciBhIGNsb3NlZCBzdHJlYW0nKTsKKwordGVzdCgoKSA9PiB7CisgIGNvbnN0IHdz
ID0gbmV3IFdyaXRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjLmVycm9yKCk7
CisgICAgfQorICB9KTsKKworICBjb25zdCB3cml0ZXIgPSB3cy5nZXRXcml0ZXIoKTsKKyAgYXNz
ZXJ0X2VxdWFscyh3cml0ZXIuZGVzaXJlZFNpemUsIG51bGwsICdkZXNpcmVkU2l6ZSBzaG91bGQg
YmUgbnVsbCcpOworfSwgJ2Rlc2lyZWRTaXplIG9uIGEgd3JpdGVyIGZvciBhbiBlcnJvcmVkIHN0
cmVhbScpOworCit0ZXN0KCgpID0+IHsKKyAgY29uc3Qgd3MgPSBuZXcgV3JpdGFibGVTdHJlYW0o
e30pOworCisgIGNvbnN0IHdyaXRlciA9IHdzLmdldFdyaXRlcigpOworICB3cml0ZXIuY2xvc2Uo
KTsKKyAgd3JpdGVyLnJlbGVhc2VMb2NrKCk7CisKKyAgd3MuZ2V0V3JpdGVyKCk7Cit9LCAnd3Mu
Z2V0V3JpdGVyKCkgb24gYSBjbG9zaW5nIFdyaXRhYmxlU3RyZWFtJyk7CisKK3Byb21pc2VfdGVz
dCgoKSA9PiB7CisgIGNvbnN0IHdzID0gbmV3IFdyaXRhYmxlU3RyZWFtKHt9KTsKKworICBjb25z
dCB3cml0ZXIgPSB3cy5nZXRXcml0ZXIoKTsKKyAgcmV0dXJuIHdyaXRlci5jbG9zZSgpLnRoZW4o
KCkgPT4geworICAgIHdyaXRlci5yZWxlYXNlTG9jaygpOworCisgICAgd3MuZ2V0V3JpdGVyKCk7
CisgIH0pOworfSwgJ3dzLmdldFdyaXRlcigpIG9uIGEgY2xvc2VkIFdyaXRhYmxlU3RyZWFtJyk7
CisKK3Rlc3QoKCkgPT4geworICBjb25zdCB3cyA9IG5ldyBXcml0YWJsZVN0cmVhbSh7fSk7CisK
KyAgY29uc3Qgd3JpdGVyID0gd3MuZ2V0V3JpdGVyKCk7CisgIHdyaXRlci5hYm9ydCgpOworICB3
cml0ZXIucmVsZWFzZUxvY2soKTsKKworICB3cy5nZXRXcml0ZXIoKTsKK30sICd3cy5nZXRXcml0
ZXIoKSBvbiBhbiBhYm9ydGVkIFdyaXRhYmxlU3RyZWFtJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9
PiB7CisgIGNvbnN0IHdzID0gbmV3IFdyaXRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7Cisg
ICAgICBjLmVycm9yKCk7CisgICAgfQorICB9KTsKKworICBjb25zdCB3cml0ZXIgPSB3cy5nZXRX
cml0ZXIoKTsKKyAgcmV0dXJuIHdyaXRlci5jbG9zZWQudGhlbigKKyAgICB2ID0+IGFzc2VydF91
bnJlYWNoZWQoJ3dyaXRlci5jbG9zZWQgZnVsZmlsbGVkIHVuZXhwZWN0ZWRseSB3aXRoOiAnICsg
diksCisgICAgKCkgPT4geworICAgICAgd3JpdGVyLnJlbGVhc2VMb2NrKCk7CisKKyAgICAgIHdz
LmdldFdyaXRlcigpOworICAgIH0KKyAgKTsKK30sICd3cy5nZXRXcml0ZXIoKSBvbiBhbiBlcnJv
cmVkIFdyaXRhYmxlU3RyZWFtJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisgIGNvbnN0IHdz
ID0gbmV3IFdyaXRhYmxlU3RyZWFtKHt9KTsKKworICBjb25zdCB3cml0ZXIgPSB3cy5nZXRXcml0
ZXIoKTsKKyAgd3JpdGVyLnJlbGVhc2VMb2NrKCk7CisKKyAgcmV0dXJuIHdyaXRlci5jbG9zZWQu
dGhlbigKKyAgICB2ID0+IGFzc2VydF91bnJlYWNoZWQoJ3dyaXRlci5jbG9zZWQgZnVsZmlsbGVk
IHVuZXhwZWN0ZWRseSB3aXRoOiAnICsgdiksCisgICAgY2xvc2VkUmVqZWN0aW9uID0+IHsKKyAg
ICAgIGFzc2VydF9lcXVhbHMoY2xvc2VkUmVqZWN0aW9uLm5hbWUsICdUeXBlRXJyb3InLCAnY2xv
c2VkIHByb21pc2Ugc2hvdWxkIHJlamVjdCB3aXRoIGEgVHlwZUVycm9yJyk7CisgICAgICByZXR1
cm4gd3JpdGVyLnJlYWR5LnRoZW4oCisgICAgICAgIHYgPT4gYXNzZXJ0X3VucmVhY2hlZCgnd3Jp
dGVyLnJlYWR5IGZ1bGZpbGxlZCB1bmV4cGVjdGVkbHkgd2l0aDogJyArIHYpLAorICAgICAgICBy
ZWFkeVJlamVjdGlvbiA9PiBhc3NlcnRfZXF1YWxzKHJlYWR5UmVqZWN0aW9uLCBjbG9zZWRSZWpl
Y3Rpb24sCisgICAgICAgICAgJ3JlYWR5IHByb21pc2Ugc2hvdWxkIHJlamVjdCB3aXRoIHRoZSBz
YW1lIGVycm9yJykKKyAgICAgICk7CisgICAgfQorICApOworfSwgJ2Nsb3NlZCBhbmQgcmVhZHkg
b24gYSByZWxlYXNlZCB3cml0ZXInKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBsZXQgdGhp
c09iamVjdCA9IG51bGw7CisgIC8vIENhbGxzIHRvIFNpbmsgbWV0aG9kcyBhZnRlciB0aGUgZmly
c3QgYXJlIGltcGxpY2l0bHkgaWdub3JlZC4gT25seSB0aGUgZmlyc3QgdmFsdWUgdGhhdCBpcyBw
YXNzZWQgdG8gdGhlIHJlc29sdmVyCisgIC8vIGlzIHVzZWQuCisgIGNsYXNzIFNpbmsgeworICAg
IHN0YXJ0KCkgeworICAgICAgLy8gQ2FsbGVkIHR3aWNlCisgICAgICB0LnN0ZXAoKCkgPT4gewor
ICAgICAgICBhc3NlcnRfZXF1YWxzKHRoaXMsIHRoaXNPYmplY3QsICdzdGFydCBzaG91bGQgYmUg
Y2FsbGVkIGFzIGEgbWV0aG9kJyk7CisgICAgICB9KTsKKyAgICB9CisKKyAgICB3cml0ZSgpIHsK
KyAgICAgIHQuc3RlcCgoKSA9PiB7CisgICAgICAgIGFzc2VydF9lcXVhbHModGhpcywgdGhpc09i
amVjdCwgJ3dyaXRlIHNob3VsZCBiZSBjYWxsZWQgYXMgYSBtZXRob2QnKTsKKyAgICAgIH0pOwor
ICAgIH0KKworICAgIGNsb3NlKCkgeworICAgICAgdC5zdGVwKCgpID0+IHsKKyAgICAgICAgYXNz
ZXJ0X2VxdWFscyh0aGlzLCB0aGlzT2JqZWN0LCAnY2xvc2Ugc2hvdWxkIGJlIGNhbGxlZCBhcyBh
IG1ldGhvZCcpOworICAgICAgfSk7CisgICAgfQorCisgICAgYWJvcnQoKSB7CisgICAgICB0LnN0
ZXAoKCkgPT4geworICAgICAgICBhc3NlcnRfZXF1YWxzKHRoaXMsIHRoaXNPYmplY3QsICdhYm9y
dCBzaG91bGQgYmUgY2FsbGVkIGFzIGEgbWV0aG9kJyk7CisgICAgICB9KTsKKyAgICB9CisgIH0K
KworICBjb25zdCB0aGVTaW5rID0gbmV3IFNpbmsoKTsKKyAgdGhpc09iamVjdCA9IHRoZVNpbms7
CisgIGNvbnN0IHdzID0gbmV3IFdyaXRhYmxlU3RyZWFtKHRoZVNpbmspOworCisgIGNvbnN0IHdy
aXRlciA9IHdzLmdldFdyaXRlcigpOworCisgIHdyaXRlci53cml0ZSgnYScpOworICBjb25zdCBj
bG9zZVByb21pc2UgPSB3cml0ZXIuY2xvc2UoKTsKKworICBjb25zdCB3czIgPSBuZXcgV3JpdGFi
bGVTdHJlYW0odGhlU2luayk7CisgIGNvbnN0IHdyaXRlcjIgPSB3czIuZ2V0V3JpdGVyKCk7Cisg
IGNvbnN0IGFib3J0UHJvbWlzZSA9IHdyaXRlcjIuYWJvcnQoKTsKKworICByZXR1cm4gUHJvbWlz
ZS5hbGwoWworICAgIGNsb3NlUHJvbWlzZSwKKyAgICBhYm9ydFByb21pc2UKKyAgXSk7Cit9LCAn
V3JpdGFibGVTdHJlYW0gc2hvdWxkIGNhbGwgdW5kZXJseWluZyBzaW5rIG1ldGhvZHMgYXMgbWV0
aG9kcycpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIGZ1bmN0aW9uIGZ1bmN0aW9uV2l0aE92
ZXJsb2FkcygpIHt9CisgIGZ1bmN0aW9uV2l0aE92ZXJsb2Fkcy5hcHBseSA9IHQudW5yZWFjaGVk
X2Z1bmMoJ2FwcGx5KCkgc2hvdWxkIG5vdCBiZSBjYWxsZWQnKTsKKyAgZnVuY3Rpb25XaXRoT3Zl
cmxvYWRzLmNhbGwgPSB0LnVucmVhY2hlZF9mdW5jKCdjYWxsKCkgc2hvdWxkIG5vdCBiZSBjYWxs
ZWQnKTsKKyAgY29uc3QgdW5kZXJseWluZ1NpbmsgPSB7CisgICAgc3RhcnQ6IGZ1bmN0aW9uV2l0
aE92ZXJsb2FkcywKKyAgICB3cml0ZTogZnVuY3Rpb25XaXRoT3ZlcmxvYWRzLAorICAgIGNsb3Nl
OiBmdW5jdGlvbldpdGhPdmVybG9hZHMsCisgICAgYWJvcnQ6IGZ1bmN0aW9uV2l0aE92ZXJsb2Fk
cworICB9OworICAvLyBUZXN0IHN0YXJ0KCksIHdyaXRlKCksIGNsb3NlKCkuCisgIGNvbnN0IHdz
MSA9IG5ldyBXcml0YWJsZVN0cmVhbSh1bmRlcmx5aW5nU2luayk7CisgIGNvbnN0IHdyaXRlcjEg
PSB3czEuZ2V0V3JpdGVyKCk7CisgIHdyaXRlcjEud3JpdGUoJ2EnKTsKKyAgd3JpdGVyMS5jbG9z
ZSgpOworCisgIC8vIFRlc3QgYWJvcnQoKS4KKyAgY29uc3QgYWJvcnRFcnJvciA9IG5ldyBFcnJv
cigpOworICBhYm9ydEVycm9yLm5hbWUgPSAnYWJvcnQgZXJyb3InOworCisgIGNvbnN0IHdzMiA9
IG5ldyBXcml0YWJsZVN0cmVhbSh1bmRlcmx5aW5nU2luayk7CisgIGNvbnN0IHdyaXRlcjIgPSB3
czIuZ2V0V3JpdGVyKCk7CisgIHdyaXRlcjIuYWJvcnQoYWJvcnRFcnJvcik7CisKKyAgLy8gVGVz
dCBhYm9ydCgpIHdpdGggYSBjbG9zZSB1bmRlcmx5aW5nIHNpbmsgbWV0aG9kIHByZXNlbnQuIChI
aXN0b3JpY2FsOyBzZWUKKyAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3doYXR3Zy9zdHJlYW1zL2lz
c3Vlcy82MjAjaXNzdWVjb21tZW50LTI2MzQ4Mzk1MyBmb3Igd2hhdCB1c2VkIHRvIGJlCisgIC8v
IHRlc3RlZCBoZXJlLiBCdXQgbW9yZSBjb3ZlcmFnZSBjYW4ndCBodXJ0LikKKyAgY29uc3Qgd3Mz
ID0gbmV3IFdyaXRhYmxlU3RyZWFtKHsKKyAgICBzdGFydDogZnVuY3Rpb25XaXRoT3ZlcmxvYWRz
LAorICAgIHdyaXRlOiBmdW5jdGlvbldpdGhPdmVybG9hZHMsCisgICAgY2xvc2U6IGZ1bmN0aW9u
V2l0aE92ZXJsb2FkcworICB9KTsKKyAgY29uc3Qgd3JpdGVyMyA9IHdzMy5nZXRXcml0ZXIoKTsK
KyAgd3JpdGVyMy5hYm9ydChhYm9ydEVycm9yKTsKKworICByZXR1cm4gd3JpdGVyMS5jbG9zZWQK
KyAgICAgIC50aGVuKCgpID0+IHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGFib3J0RXJyb3Is
IHdyaXRlcjIuY2xvc2VkLCAnd3JpdGVyMi5jbG9zZWQgc2hvdWxkIGJlIHJlamVjdGVkJykpCisg
ICAgICAudGhlbigoKSA9PiBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBhYm9ydEVycm9yLCB3
cml0ZXIzLmNsb3NlZCwgJ3dyaXRlcjMuY2xvc2VkIHNob3VsZCBiZSByZWplY3RlZCcpKTsKK30s
ICdtZXRob2RzIHNob3VsZCBub3Qgbm90IGhhdmUgLmFwcGx5KCkgb3IgLmNhbGwoKSBjYWxsZWQn
KTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgY29uc3Qgc3RyYXRlZ3kgPSB7CisgICAgc2l6
ZSgpIHsKKyAgICAgIGlmICh0aGlzICE9PSB1bmRlZmluZWQpIHsKKyAgICAgICAgdGhyb3cgbmV3
IEVycm9yKCdzaXplIGNhbGxlZCBhcyBhIG1ldGhvZCcpOworICAgICAgfQorICAgICAgcmV0dXJu
IDE7CisgICAgfQorICB9OworCisgIGNvbnN0IHdzID0gbmV3IFdyaXRhYmxlU3RyZWFtKHt9LCBz
dHJhdGVneSk7CisgIGNvbnN0IHdyaXRlciA9IHdzLmdldFdyaXRlcigpOworICByZXR1cm4gd3Jp
dGVyLndyaXRlKCdhJyk7Cit9LCAnV3JpdGFibGVTdHJlYW1cJ3Mgc3RyYXRlZ3kuc2l6ZSBzaG91
bGQgbm90IGJlIGNhbGxlZCBhcyBhIG1ldGhvZCcpOworCitwcm9taXNlX3Rlc3QoKCkgPT4gewor
ICBjb25zdCB3cyA9IG5ldyBXcml0YWJsZVN0cmVhbSgpOworICBjb25zdCB3cml0ZXIxID0gd3Mu
Z2V0V3JpdGVyKCk7CisgIGFzc2VydF9lcXVhbHModW5kZWZpbmVkLCB3cml0ZXIxLnJlbGVhc2VM
b2NrKCksICdyZWxlYXNlTG9jaygpIHNob3VsZCByZXR1cm4gdW5kZWZpbmVkJyk7CisgIGNvbnN0
IHdyaXRlcjIgPSB3cy5nZXRXcml0ZXIoKTsKKyAgYXNzZXJ0X2VxdWFscyh1bmRlZmluZWQsIHdy
aXRlcjEucmVsZWFzZUxvY2soKSwgJ25vLW9wIHJlbGVhc2VMb2NrKCkgc2hvdWxkIHJldHVybiB1
bmRlZmluZWQnKTsKKyAgLy8gQ2FsbGluZyByZWxlYXNlTG9jaygpIG9uIHdyaXRlcjEgc2hvdWxk
IG5vdCBpbnRlcmZlcmUgd2l0aCB3cml0ZXIyLiBJZiBpdCBkaWQsIHRoZW4gdGhlIHJlYWR5IHBy
b21pc2Ugd291bGQgYmUKKyAgLy8gcmVqZWN0ZWQuCisgIHJldHVybiB3cml0ZXIyLnJlYWR5Owor
fSwgJ3JlZHVuZGFudCByZWxlYXNlTG9jaygpIGlzIG5vLW9wJyk7CisKK3Byb21pc2VfdGVzdCgo
KSA9PiB7CisgIGNvbnN0IGV2ZW50cyA9IFtdOworICBjb25zdCB3cyA9IG5ldyBXcml0YWJsZVN0
cmVhbSgpOworICBjb25zdCB3cml0ZXIgPSB3cy5nZXRXcml0ZXIoKTsKKyAgcmV0dXJuIHdyaXRl
ci5yZWFkeS50aGVuKCgpID0+IHsKKyAgICAvLyBGb3JjZSB0aGUgcmVhZHkgcHJvbWlzZSBiYWNr
IHRvIGEgcGVuZGluZyBzdGF0ZS4KKyAgICBjb25zdCB3cml0ZXJQcm9taXNlID0gd3JpdGVyLndy
aXRlKCdkdW1teScpOworICAgIGNvbnN0IHJlYWR5UHJvbWlzZSA9IHdyaXRlci5yZWFkeS5jYXRj
aCgoKSA9PiBldmVudHMucHVzaCgncmVhZHknKSk7CisgICAgY29uc3QgY2xvc2VkUHJvbWlzZSA9
IHdyaXRlci5jbG9zZWQuY2F0Y2goKCkgPT4gZXZlbnRzLnB1c2goJ2Nsb3NlZCcpKTsKKyAgICB3
cml0ZXIucmVsZWFzZUxvY2soKTsKKyAgICByZXR1cm4gUHJvbWlzZS5hbGwoW3JlYWR5UHJvbWlz
ZSwgY2xvc2VkUHJvbWlzZV0pLnRoZW4oKCkgPT4geworICAgICAgYXNzZXJ0X2FycmF5X2VxdWFs
cyhldmVudHMsIFsncmVhZHknLCAnY2xvc2VkJ10sICdyZWFkeSBwcm9taXNlIHNob3VsZCBmaXJl
IGJlZm9yZSBjbG9zZWQgcHJvbWlzZScpOworICAgICAgLy8gU3RvcCB0aGUgd3JpdGVyIHByb21p
c2UgaGFuZ2luZyBhcm91bmQgYWZ0ZXIgdGhlIHRlc3QgaGFzIGZpbmlzaGVkLgorICAgICAgcmV0
dXJuIFByb21pc2UuYWxsKFsKKyAgICAgICAgd3JpdGVyUHJvbWlzZSwKKyAgICAgICAgd3MuYWJv
cnQoKQorICAgICAgXSk7CisgICAgfSk7CisgIH0pOworfSwgJ3JlYWR5IHByb21pc2Ugc2hvdWxk
IGZpcmUgYmVmb3JlIGNsb3NlZCBvbiByZWxlYXNlTG9jaycpOworCit0ZXN0KCgpID0+IHsKKyAg
Y2xhc3MgU3ViY2xhc3MgZXh0ZW5kcyBXcml0YWJsZVN0cmVhbSB7CisgICAgZXh0cmFGdW5jdGlv
bigpIHsKKyAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgfQorICBhc3NlcnRfZXF1YWxzKAor
ICAgICAgT2JqZWN0LmdldFByb3RvdHlwZU9mKFN1YmNsYXNzLnByb3RvdHlwZSksIFdyaXRhYmxl
U3RyZWFtLnByb3RvdHlwZSwKKyAgICAgICdTdWJjbGFzcy5wcm90b3R5cGVcJ3MgcHJvdG90eXBl
IHNob3VsZCBiZSBXcml0YWJsZVN0cmVhbS5wcm90b3R5cGUnKTsKKyAgYXNzZXJ0X2VxdWFscyhP
YmplY3QuZ2V0UHJvdG90eXBlT2YoU3ViY2xhc3MpLCBXcml0YWJsZVN0cmVhbSwKKyAgICAgICAg
ICAgICAgICAnU3ViY2xhc3NcJ3MgcHJvdG90eXBlIHNob3VsZCBiZSBXcml0YWJsZVN0cmVhbScp
OworICBjb25zdCBzdWIgPSBuZXcgU3ViY2xhc3MoKTsKKyAgYXNzZXJ0X3RydWUoc3ViIGluc3Rh
bmNlb2YgV3JpdGFibGVTdHJlYW0sCisgICAgICAgICAgICAgICdTdWJjbGFzcyBvYmplY3Qgc2hv
dWxkIGJlIGFuIGluc3RhbmNlIG9mIFdyaXRhYmxlU3RyZWFtJyk7CisgIGFzc2VydF90cnVlKHN1
YiBpbnN0YW5jZW9mIFN1YmNsYXNzLAorICAgICAgICAgICAgICAnU3ViY2xhc3Mgb2JqZWN0IHNo
b3VsZCBiZSBhbiBpbnN0YW5jZSBvZiBTdWJjbGFzcycpOworICBjb25zdCBsb2NrZWRHZXR0ZXIg
PSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKAorICAgICAgV3JpdGFibGVTdHJlYW0u
cHJvdG90eXBlLCAnbG9ja2VkJykuZ2V0OworICBhc3NlcnRfZXF1YWxzKGxvY2tlZEdldHRlci5j
YWxsKHN1YiksIHN1Yi5sb2NrZWQsCisgICAgICAgICAgICAgICAgJ1N1YmNsYXNzIG9iamVjdCBz
aG91bGQgcGFzcyBicmFuZCBjaGVjaycpOworICBhc3NlcnRfdHJ1ZShzdWIuZXh0cmFGdW5jdGlv
bigpLAorICAgICAgICAgICAgICAnZXh0cmFGdW5jdGlvbigpIHNob3VsZCBiZSBwcmVzZW50IG9u
IFN1YmNsYXNzIG9iamVjdCcpOworfSwgJ1N1YmNsYXNzaW5nIFdyaXRhYmxlU3RyZWFtIHNob3Vs
ZCB3b3JrJyk7CisKK3Rlc3QoKCkgPT4geworICBjb25zdCB3cyA9IG5ldyBXcml0YWJsZVN0cmVh
bSgpOworICBhc3NlcnRfZmFsc2Uod3MubG9ja2VkLCAnc3RyZWFtIHNob3VsZCBub3QgYmUgbG9j
a2VkJyk7CisgIHdzLmdldFdyaXRlcigpOworICBhc3NlcnRfdHJ1ZSh3cy5sb2NrZWQsICdzdHJl
YW0gc2hvdWxkIGJlIGxvY2tlZCcpOworfSwgJ3RoZSBsb2NrZWQgZ2V0dGVyIHNob3VsZCByZXR1
cm4gdHJ1ZSBpZiB0aGUgc3RyZWFtIGhhcyBhIHdyaXRlcicpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0
cmVhbXMvZ2VuZXJhbC5hbnkud29ya2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL2dlbmVy
YWwuYW55Lndvcmtlci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmVhYjViY2JlZjAwNGYzMDYz
Y2QzMDJjOTJhOWE3MjFkZWRmYmQ1ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL2dl
bmVyYWwuYW55Lndvcmtlci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxOCBAQAorCitGQUlMIGRl
c2lyZWRTaXplIG9uIGEgcmVsZWFzZWQgd3JpdGVyIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRh
YmxlU3RyZWFtCitGQUlMIGRlc2lyZWRTaXplIGluaXRpYWwgdmFsdWUgQ2FuJ3QgZmluZCB2YXJp
YWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgZGVzaXJlZFNpemUgb24gYSB3cml0ZXIgZm9yIGEg
Y2xvc2VkIHN0cmVhbSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBk
ZXNpcmVkU2l6ZSBvbiBhIHdyaXRlciBmb3IgYW4gZXJyb3JlZCBzdHJlYW0gQ2FuJ3QgZmluZCB2
YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgd3MuZ2V0V3JpdGVyKCkgb24gYSBjbG9zaW5n
IFdyaXRhYmxlU3RyZWFtIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlM
IHdzLmdldFdyaXRlcigpIG9uIGEgY2xvc2VkIFdyaXRhYmxlU3RyZWFtIENhbid0IGZpbmQgdmFy
aWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIHdzLmdldFdyaXRlcigpIG9uIGFuIGFib3J0ZWQg
V3JpdGFibGVTdHJlYW0gQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwg
d3MuZ2V0V3JpdGVyKCkgb24gYW4gZXJyb3JlZCBXcml0YWJsZVN0cmVhbSBDYW4ndCBmaW5kIHZh
cmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBjbG9zZWQgYW5kIHJlYWR5IG9uIGEgcmVsZWFz
ZWQgd3JpdGVyIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIFdyaXRh
YmxlU3RyZWFtIHNob3VsZCBjYWxsIHVuZGVybHlpbmcgc2luayBtZXRob2RzIGFzIG1ldGhvZHMg
Q2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgbWV0aG9kcyBzaG91bGQg
bm90IG5vdCBoYXZlIC5hcHBseSgpIG9yIC5jYWxsKCkgY2FsbGVkIENhbid0IGZpbmQgdmFyaWFi
bGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIFdyaXRhYmxlU3RyZWFtJ3Mgc3RyYXRlZ3kuc2l6ZSBz
aG91bGQgbm90IGJlIGNhbGxlZCBhcyBhIG1ldGhvZCBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0
YWJsZVN0cmVhbQorRkFJTCByZWR1bmRhbnQgcmVsZWFzZUxvY2soKSBpcyBuby1vcCBDYW4ndCBm
aW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCByZWFkeSBwcm9taXNlIHNob3VsZCBm
aXJlIGJlZm9yZSBjbG9zZWQgb24gcmVsZWFzZUxvY2sgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3Jp
dGFibGVTdHJlYW0KK0ZBSUwgU3ViY2xhc3NpbmcgV3JpdGFibGVTdHJlYW0gc2hvdWxkIHdvcmsg
Q2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgdGhlIGxvY2tlZCBnZXR0
ZXIgc2hvdWxkIHJldHVybiB0cnVlIGlmIHRoZSBzdHJlYW0gaGFzIGEgd3JpdGVyIENhbid0IGZp
bmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL2dl
bmVyYWwuYW55Lndvcmtlci5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvZ2VuZXJhbC5hbnkud29ya2VyLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMjM4MjkxMzUyOGU2OTNiM2E1ZDU2YzY2MGE0NTA2MDk4MGI1NDhjMwot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL2dlbmVyYWwuYW55Lndvcmtlci5odG1sCkBA
IC0wLDAgKzEgQEAKKzwhLS0gVGhpcyBmaWxlIGlzIHJlcXVpcmVkIGZvciBXZWJLaXQgdGVzdCBp
bmZyYXN0cnVjdHVyZSB0byBydW4gdGhlIHRlbXBsYXRlZCB0ZXN0IC0tPgpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL3Byb3BlcnRpZXMuYW55LWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL3Byb3BlcnRpZXMuYW55LWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi43MjU0NDg5Yzg3ZjJkZmFiYjIyZWM4YTAxZTJhZDllZjA1MjQyMzcyCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
dHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvcHJvcGVydGllcy5hbnktZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMTAgQEAKKworRkFJTCBzaW5rIG1ldGhvZCBzdGFydCBzaG91bGQgYmUgY2FsbGVkIHdp
dGggdGhlIHJpZ2h0IG51bWJlciBvZiBhcmd1bWVudHMgd3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1
bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicgaXMgdW5kZWZpbmVk
KQorRkFJTCBzaW5rIG1ldGhvZCBzdGFydCBzaG91bGQgYmUgY2FsbGVkIGV2ZW4gd2hlbiBpdCdz
IGxvY2F0ZWQgb24gdGhlIHByb3RvdHlwZSBjaGFpbiB3cy5nZXRXcml0ZXIgaXMgbm90IGEgZnVu
Y3Rpb24uIChJbiAnd3MuZ2V0V3JpdGVyKCknLCAnd3MuZ2V0V3JpdGVyJyBpcyB1bmRlZmluZWQp
CitGQUlMIHNpbmsgbWV0aG9kIHdyaXRlIHNob3VsZCBiZSBjYWxsZWQgd2l0aCB0aGUgcmlnaHQg
bnVtYmVyIG9mIGFyZ3VtZW50cyB3cy5nZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAn
d3MuZ2V0V3JpdGVyKCknLCAnd3MuZ2V0V3JpdGVyJyBpcyB1bmRlZmluZWQpCitGQUlMIHNpbmsg
bWV0aG9kIHdyaXRlIHNob3VsZCBiZSBjYWxsZWQgZXZlbiB3aGVuIGl0J3MgbG9jYXRlZCBvbiB0
aGUgcHJvdG90eXBlIGNoYWluIHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3
cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkKK0ZBSUwgc2luayBt
ZXRob2QgY2xvc2Ugc2hvdWxkIGJlIGNhbGxlZCB3aXRoIHRoZSByaWdodCBudW1iZXIgb2YgYXJn
dW1lbnRzIHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0ZXIo
KScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkKK0ZBSUwgc2luayBtZXRob2QgY2xvc2Ug
c2hvdWxkIGJlIGNhbGxlZCBldmVuIHdoZW4gaXQncyBsb2NhdGVkIG9uIHRoZSBwcm90b3R5cGUg
Y2hhaW4gd3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigp
JywgJ3dzLmdldFdyaXRlcicgaXMgdW5kZWZpbmVkKQorRkFJTCBzaW5rIG1ldGhvZCBhYm9ydCBz
aG91bGQgYmUgY2FsbGVkIHdpdGggdGhlIHJpZ2h0IG51bWJlciBvZiBhcmd1bWVudHMgd3MuZ2V0
V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdy
aXRlcicgaXMgdW5kZWZpbmVkKQorRkFJTCBzaW5rIG1ldGhvZCBhYm9ydCBzaG91bGQgYmUgY2Fs
bGVkIGV2ZW4gd2hlbiBpdCdzIGxvY2F0ZWQgb24gdGhlIHByb3RvdHlwZSBjaGFpbiB3cy5nZXRX
cml0ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3JpdGVyKCknLCAnd3MuZ2V0V3Jp
dGVyJyBpcyB1bmRlZmluZWQpCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL3Byb3BlcnRpZXMu
YW55Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9wcm9wZXJ0aWVzLmFueS5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIz
ODI5MTM1MjhlNjkzYjNhNWQ1NmM2NjBhNDUwNjA5ODBiNTQ4YzMKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3Jp
dGFibGUtc3RyZWFtcy9wcm9wZXJ0aWVzLmFueS5odG1sCkBAIC0wLDAgKzEgQEAKKzwhLS0gVGhp
cyBmaWxlIGlzIHJlcXVpcmVkIGZvciBXZWJLaXQgdGVzdCBpbmZyYXN0cnVjdHVyZSB0byBydW4g
dGhlIHRlbXBsYXRlZCB0ZXN0IC0tPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy93cml0YWJsZS1zdHJlYW1zL3Byb3BlcnRpZXMuYW55LmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvcHJvcGVy
dGllcy5hbnkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGY3Zjg3NmQ4YjZmYzRiOTdkYzgwMTBjZTU3ZGVhNDFk
MWU0YjU5MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL3Byb3BlcnRpZXMuYW55Lmpz
CkBAIC0wLDAgKzEsNTMgQEAKKy8vIE1FVEE6IGdsb2JhbD13aW5kb3csd29ya2VyLGpzc2hlbGwK
Kyd1c2Ugc3RyaWN0JzsKKworY29uc3Qgc2lua01ldGhvZHMgPSB7CisgIHN0YXJ0OiB7CisgICAg
bGVuZ3RoOiAxLAorICAgIHRyaWdnZXI6ICgpID0+IFByb21pc2UucmVzb2x2ZSgpCisgIH0sCisg
IHdyaXRlOiB7CisgICAgbGVuZ3RoOiAyLAorICAgIHRyaWdnZXI6IHdyaXRlciA9PiB3cml0ZXIu
d3JpdGUoKQorICB9LAorICBjbG9zZTogeworICAgIGxlbmd0aDogMCwKKyAgICB0cmlnZ2VyOiB3
cml0ZXIgPT4gd3JpdGVyLmNsb3NlKCkKKyAgfSwKKyAgYWJvcnQ6IHsKKyAgICBsZW5ndGg6IDEs
CisgICAgdHJpZ2dlcjogd3JpdGVyID0+IHdyaXRlci5hYm9ydCgpCisgIH0KK307CisKK2ZvciAo
Y29uc3QgbWV0aG9kIGluIHNpbmtNZXRob2RzKSB7CisgIGNvbnN0IHsgbGVuZ3RoLCB0cmlnZ2Vy
IH0gPSBzaW5rTWV0aG9kc1ttZXRob2RdOworCisgIC8vIFNvbWUgc2VtYW50aWMgdGVzdHMgb2Yg
aG93IHNpbmsgbWV0aG9kcyBhcmUgY2FsbGVkIGNhbiBiZSBmb3VuZCBpbiBnZW5lcmFsLmpzLCBh
cyB3ZWxsIGFzIGluIHRoZSB0ZXN0IGZpbGVzCisgIC8vIHNwZWNpZmljIHRvIGVhY2ggbWV0aG9k
LgorICBwcm9taXNlX3Rlc3QoKCkgPT4geworICAgIGxldCBhcmdDb3VudDsKKyAgICBjb25zdCB3
cyA9IG5ldyBXcml0YWJsZVN0cmVhbSh7CisgICAgICBbbWV0aG9kXSguLi5hcmdzKSB7CisgICAg
ICAgIGFyZ0NvdW50ID0gYXJncy5sZW5ndGg7CisgICAgICB9CisgICAgfSk7CisgICAgcmV0dXJu
IFByb21pc2UucmVzb2x2ZSh0cmlnZ2VyKHdzLmdldFdyaXRlcigpKSkudGhlbigoKSA9PiB7Cisg
ICAgICBhc3NlcnRfZXF1YWxzKGFyZ0NvdW50LCBsZW5ndGgsIGAke21ldGhvZH0gc2hvdWxkIGJl
IGNhbGxlZCB3aXRoICR7bGVuZ3RofSBhcmd1bWVudHNgKTsKKyAgICB9KTsKKyAgfSwgYHNpbmsg
bWV0aG9kICR7bWV0aG9kfSBzaG91bGQgYmUgY2FsbGVkIHdpdGggdGhlIHJpZ2h0IG51bWJlciBv
ZiBhcmd1bWVudHNgKTsKKworICBwcm9taXNlX3Rlc3QoKCkgPT4geworICAgIGxldCBtZXRob2RX
YXNDYWxsZWQgPSBmYWxzZTsKKyAgICBmdW5jdGlvbiBTaW5rKCkge30KKyAgICBTaW5rLnByb3Rv
dHlwZSA9IHsKKyAgICAgIFttZXRob2RdKCkgeworICAgICAgICBtZXRob2RXYXNDYWxsZWQgPSB0
cnVlOworICAgICAgfQorICAgIH07CisgICAgY29uc3Qgd3MgPSBuZXcgV3JpdGFibGVTdHJlYW0o
bmV3IFNpbmsoKSk7CisgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0cmlnZ2VyKHdzLmdldFdy
aXRlcigpKSkudGhlbigoKSA9PiB7CisgICAgICBhc3NlcnRfdHJ1ZShtZXRob2RXYXNDYWxsZWQs
IGAke21ldGhvZH0gc2hvdWxkIGJlIGNhbGxlZGApOworICAgIH0pOworICB9LCBgc2luayBtZXRo
b2QgJHttZXRob2R9IHNob3VsZCBiZSBjYWxsZWQgZXZlbiB3aGVuIGl0J3MgbG9jYXRlZCBvbiB0
aGUgcHJvdG90eXBlIGNoYWluYCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9wcm9wZXJ0
aWVzLmFueS53b3JrZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvcHJvcGVydGllcy5hbnku
d29ya2VyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNDQzYTU5OTA2OTEwNDk4ODBmZmM4MjRj
NmZlMjY1YjNjYmIwZDc0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvcHJvcGVydGll
cy5hbnkud29ya2VyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBACisKK0ZBSUwgc2luayBt
ZXRob2Qgc3RhcnQgc2hvdWxkIGJlIGNhbGxlZCB3aXRoIHRoZSByaWdodCBudW1iZXIgb2YgYXJn
dW1lbnRzIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIHNpbmsgbWV0
aG9kIHN0YXJ0IHNob3VsZCBiZSBjYWxsZWQgZXZlbiB3aGVuIGl0J3MgbG9jYXRlZCBvbiB0aGUg
cHJvdG90eXBlIGNoYWluIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlM
IHNpbmsgbWV0aG9kIHdyaXRlIHNob3VsZCBiZSBjYWxsZWQgd2l0aCB0aGUgcmlnaHQgbnVtYmVy
IG9mIGFyZ3VtZW50cyBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBz
aW5rIG1ldGhvZCB3cml0ZSBzaG91bGQgYmUgY2FsbGVkIGV2ZW4gd2hlbiBpdCdzIGxvY2F0ZWQg
b24gdGhlIHByb3RvdHlwZSBjaGFpbiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVh
bQorRkFJTCBzaW5rIG1ldGhvZCBjbG9zZSBzaG91bGQgYmUgY2FsbGVkIHdpdGggdGhlIHJpZ2h0
IG51bWJlciBvZiBhcmd1bWVudHMgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0K
K0ZBSUwgc2luayBtZXRob2QgY2xvc2Ugc2hvdWxkIGJlIGNhbGxlZCBldmVuIHdoZW4gaXQncyBs
b2NhdGVkIG9uIHRoZSBwcm90b3R5cGUgY2hhaW4gQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFi
bGVTdHJlYW0KK0ZBSUwgc2luayBtZXRob2QgYWJvcnQgc2hvdWxkIGJlIGNhbGxlZCB3aXRoIHRo
ZSByaWdodCBudW1iZXIgb2YgYXJndW1lbnRzIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxl
U3RyZWFtCitGQUlMIHNpbmsgbWV0aG9kIGFib3J0IHNob3VsZCBiZSBjYWxsZWQgZXZlbiB3aGVu
IGl0J3MgbG9jYXRlZCBvbiB0aGUgcHJvdG90eXBlIGNoYWluIENhbid0IGZpbmQgdmFyaWFibGU6
IFdyaXRhYmxlU3RyZWFtCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL3Byb3BlcnRpZXMuYW55
Lndvcmtlci5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvcHJvcGVydGllcy5hbnkud29ya2VyLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMjM4MjkxMzUyOGU2OTNiM2E1ZDU2YzY2MGE0NTA2MDk4MGI1NDhjMwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL3Byb3BlcnRpZXMuYW55Lndvcmtlci5odG1sCkBAIC0w
LDAgKzEgQEAKKzwhLS0gVGhpcyBmaWxlIGlzIHJlcXVpcmVkIGZvciBXZWJLaXQgdGVzdCBpbmZy
YXN0cnVjdHVyZSB0byBydW4gdGhlIHRlbXBsYXRlZCB0ZXN0IC0tPgpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL3JlZW50cmFudC1zdHJhdGVneS5h
bnktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvcmVlbnRyYW50LXN0cmF0ZWd5LmFueS1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNzMxZmEyYzlmNjUyMDU3NDZjNzY2NjdmOTg0NGRmNTA5MjRi
MzllZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL3JlZW50cmFudC1zdHJhdGVneS5h
bnktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOSBAQAorCitGQUlMIHdyaXRlcyBzaG91bGQgYmUg
d3JpdHRlbiBpbiB0aGUgc3RhbmRhcmQgb3JkZXIgaGlnaFdhdGVyTWFyayB2YWx1ZSBpcyBuZWdh
dGl2ZSBvciBub3QgYSBudW1iZXIKK0ZBSUwgd3JpdGVyLndyaXRlKCkgcHJvbWlzZXMgc2hvdWxk
IHJlc29sdmUgaW4gdGhlIHN0YW5kYXJkIG9yZGVyIGhpZ2hXYXRlck1hcmsgdmFsdWUgaXMgbmVn
YXRpdmUgb3Igbm90IGEgbnVtYmVyCitGQUlMIGNvbnRyb2xsZXIuZXJyb3IoKSBzaG91bGQgd29y
ayB3aGVuIGNhbGxlZCBmcm9tIHdpdGhpbiBzdHJhdGVneS5zaXplKCkgaGlnaFdhdGVyTWFyayB2
YWx1ZSBpcyBuZWdhdGl2ZSBvciBub3QgYSBudW1iZXIKK0ZBSUwgY2xvc2UoKSBzaG91bGQgd29y
ayB3aGVuIGNhbGxlZCBmcm9tIHdpdGhpbiBzdHJhdGVneS5zaXplKCkgaGlnaFdhdGVyTWFyayB2
YWx1ZSBpcyBuZWdhdGl2ZSBvciBub3QgYSBudW1iZXIKK0ZBSUwgYWJvcnQoKSBzaG91bGQgd29y
ayB3aGVuIGNhbGxlZCBmcm9tIHdpdGhpbiBzdHJhdGVneS5zaXplKCkgaGlnaFdhdGVyTWFyayB2
YWx1ZSBpcyBuZWdhdGl2ZSBvciBub3QgYSBudW1iZXIKK0ZBSUwgcmVsZWFzZUxvY2soKSBzaG91
bGQgYWJvcnQgdGhlIHdyaXRlKCkgd2hlbiBjYWxsZWQgd2l0aGluIHN0cmF0ZWd5LnNpemUoKSBo
aWdoV2F0ZXJNYXJrIHZhbHVlIGlzIG5lZ2F0aXZlIG9yIG5vdCBhIG51bWJlcgorRkFJTCBvcmln
aW5hbCByZWFkZXIgc2hvdWxkIGVycm9yIHdoZW4gbmV3IHJlYWRlciBpcyBjcmVhdGVkIHdpdGhp
biBzdHJhdGVneS5zaXplKCkgaGlnaFdhdGVyTWFyayB2YWx1ZSBpcyBuZWdhdGl2ZSBvciBub3Qg
YSBudW1iZXIKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvcmVlbnRyYW50LXN0cmF0ZWd5LmFu
eS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJl
YW1zL3dyaXRhYmxlLXN0cmVhbXMvcmVlbnRyYW50LXN0cmF0ZWd5LmFueS5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjIzODI5MTM1MjhlNjkzYjNhNWQ1NmM2NjBhNDUwNjA5ODBiNTQ4YzMKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvd3JpdGFibGUtc3RyZWFtcy9yZWVudHJhbnQtc3RyYXRlZ3kuYW55Lmh0bWwKQEAgLTAsMCAr
MSBAQAorPCEtLSBUaGlzIGZpbGUgaXMgcmVxdWlyZWQgZm9yIFdlYktpdCB0ZXN0IGluZnJhc3Ry
dWN0dXJlIHRvIHJ1biB0aGUgdGVtcGxhdGVkIHRlc3QgLS0+ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvcmVlbnRyYW50LXN0cmF0ZWd5LmFueS5q
cyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93
cml0YWJsZS1zdHJlYW1zL3JlZW50cmFudC1zdHJhdGVneS5hbnkuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWZk
ZTQxM2I0MjUyZDE1YTBmNjgzYmVkNjk0MWMyMzQ4MTYxZjVmMgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0
YWJsZS1zdHJlYW1zL3JlZW50cmFudC1zdHJhdGVneS5hbnkuanMKQEAgLTAsMCArMSwxNzQgQEAK
Ky8vIE1FVEE6IGdsb2JhbD13aW5kb3csd29ya2VyLGpzc2hlbGwKKy8vIE1FVEE6IHNjcmlwdD0u
Li9yZXNvdXJjZXMvdGVzdC11dGlscy5qcworLy8gTUVUQTogc2NyaXB0PS4uL3Jlc291cmNlcy9y
ZWNvcmRpbmctc3RyZWFtcy5qcworJ3VzZSBzdHJpY3QnOworCisvLyBUaGVzZSB0ZXN0cyBleGVy
Y2lzZSB0aGUgcGF0aG9sb2dpY2FsIGNhc2Ugb2YgY2FsbGluZyBXcml0YWJsZVN0cmVhbSogbWV0
aG9kcyBmcm9tIHdpdGhpbiB0aGUgc3RyYXRlZ3kuc2l6ZSgpCisvLyBjYWxsYmFjay4gVGhpcyBp
cyBub3Qgc29tZXRoaW5nIGFueSByZWFsIGNvZGUgc2hvdWxkIGV2ZXIgZG8uIEZhaWx1cmVzIGhl
cmUgaW5kaWNhdGUgc3VidGxlIGRldmlhdGlvbnMgZnJvbSB0aGUKKy8vIHN0YW5kYXJkIHRoYXQg
bWF5IGFmZmVjdCByZWFsLCBub24tcGF0aG9sb2dpY2FsIGNvZGUuCisKK2NvbnN0IGVycm9yMSA9
IHsgbmFtZTogJ2Vycm9yMScgfTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgbGV0IHdyaXRl
cjsKKyAgY29uc3Qgc3RyYXRlZ3kgPSB7CisgICAgc2l6ZShjaHVuaykgeworICAgICAgaWYgKGNo
dW5rID4gMCkgeworICAgICAgICB3cml0ZXIud3JpdGUoY2h1bmsgLSAxKTsKKyAgICAgIH0KKyAg
ICAgIHJldHVybiBjaHVuazsKKyAgICB9CisgIH07CisKKyAgY29uc3Qgd3MgPSByZWNvcmRpbmdX
cml0YWJsZVN0cmVhbSh7fSwgc3RyYXRlZ3kpOworICB3cml0ZXIgPSB3cy5nZXRXcml0ZXIoKTsK
KyAgcmV0dXJuIHdyaXRlci53cml0ZSgyKQorICAgICAgLnRoZW4oKCkgPT4geworICAgICAgICBh
c3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWyd3cml0ZScsIDAsICd3cml0ZScsIDEsICd3
cml0ZScsIDJdLCAnd3JpdGVzIHNob3VsZCBhcHBlYXIgaW4gb3JkZXInKTsKKyAgICAgIH0pOwor
fSwgJ3dyaXRlcyBzaG91bGQgYmUgd3JpdHRlbiBpbiB0aGUgc3RhbmRhcmQgb3JkZXInKTsKKwor
cHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgbGV0IHdyaXRlcjsKKyAgY29uc3QgZXZlbnRzID0gW107
CisgIGNvbnN0IHN0cmF0ZWd5ID0geworICAgIHNpemUoY2h1bmspIHsKKyAgICAgIGV2ZW50cy5w
dXNoKCdzaXplJywgY2h1bmspOworICAgICAgaWYgKGNodW5rID4gMCkgeworICAgICAgICB3cml0
ZXIud3JpdGUoY2h1bmsgLSAxKQorICAgICAgICAgICAgLnRoZW4oKCkgPT4gZXZlbnRzLnB1c2go
J3dyaXRlci53cml0ZSBkb25lJywgY2h1bmsgLSAxKSk7CisgICAgICB9CisgICAgICByZXR1cm4g
Y2h1bms7CisgICAgfQorICB9OworICBjb25zdCB3cyA9IG5ldyBXcml0YWJsZVN0cmVhbSh7Cisg
ICAgd3JpdGUoY2h1bmspIHsKKyAgICAgIGV2ZW50cy5wdXNoKCdzaW5rLndyaXRlJywgY2h1bmsp
OworICAgIH0KKyAgfSwgc3RyYXRlZ3kpOworICB3cml0ZXIgPSB3cy5nZXRXcml0ZXIoKTsKKyAg
cmV0dXJuIHdyaXRlci53cml0ZSgyKQorICAgICAgLnRoZW4oKCkgPT4gZXZlbnRzLnB1c2goJ3dy
aXRlci53cml0ZSBkb25lJywgMikpCisgICAgICAudGhlbigoKSA9PiBmbHVzaEFzeW5jRXZlbnRz
KCkpCisgICAgICAudGhlbigoKSA9PiB7CisgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoZXZl
bnRzLCBbJ3NpemUnLCAyLCAnc2l6ZScsIDEsICdzaXplJywgMCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnc2luay53cml0ZScsIDAsICdzaW5rLndyaXRlJywgMSwgJ3dy
aXRlci53cml0ZSBkb25lJywgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnc2luay53cml0ZScsIDIsICd3cml0ZXIud3JpdGUgZG9uZScsIDEsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ3dyaXRlci53cml0ZSBkb25lJywgMl0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ2V2ZW50cyBzaG91bGQgaGFwcGVuIGluIHN0YW5kYXJkIG9y
ZGVyJyk7CisgICAgICB9KTsKK30sICd3cml0ZXIud3JpdGUoKSBwcm9taXNlcyBzaG91bGQgcmVz
b2x2ZSBpbiB0aGUgc3RhbmRhcmQgb3JkZXInKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBs
ZXQgY29udHJvbGxlcjsKKyAgY29uc3Qgc3RyYXRlZ3kgPSB7CisgICAgc2l6ZSgpIHsKKyAgICAg
IGNvbnRyb2xsZXIuZXJyb3IoZXJyb3IxKTsKKyAgICAgIHJldHVybiAxOworICAgIH0KKyAgfTsK
KyAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgewor
ICAgICAgY29udHJvbGxlciA9IGM7CisgICAgfQorICB9LCBzdHJhdGVneSk7CisgIGNvbnN0IHJl
c29sdmVkID0gW107CisgIGNvbnN0IHdyaXRlciA9IHdzLmdldFdyaXRlcigpOworICBjb25zdCBy
ZWFkeVByb21pc2UxID0gd3JpdGVyLnJlYWR5LnRoZW4oKCkgPT4gcmVzb2x2ZWQucHVzaCgncmVh
ZHkxJykpOworICBjb25zdCB3cml0ZVByb21pc2UgPSBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0
LCBlcnJvcjEsIHdyaXRlci53cml0ZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAnd3JpdGUoKSBzaG91bGQgcmVqZWN0IHdpdGggdGhlIGVycm9yJykK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC50aGVu
KCgpID0+IHJlc29sdmVkLnB1c2goJ3dyaXRlJykpOworICBjb25zdCByZWFkeVByb21pc2UyID0g
cHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCB3cml0ZXIucmVhZHksICdyZWFkeSBz
aG91bGQgcmVqZWN0IHdpdGggZXJyb3IxJykKKyAgICAgIC50aGVuKCgpID0+IHJlc29sdmVkLnB1
c2goJ3JlYWR5MicpKTsKKyAgY29uc3QgY2xvc2VkUHJvbWlzZSA9IHByb21pc2VfcmVqZWN0c19l
eGFjdGx5KHQsIGVycm9yMSwgd3JpdGVyLmNsb3NlZCwgJ2Nsb3NlZCBzaG91bGQgcmVqZWN0IHdp
dGggZXJyb3IxJykKKyAgICAgIC50aGVuKCgpID0+IHJlc29sdmVkLnB1c2goJ2Nsb3NlZCcpKTsK
KyAgcmV0dXJuIFByb21pc2UuYWxsKFtyZWFkeVByb21pc2UxLCB3cml0ZVByb21pc2UsIHJlYWR5
UHJvbWlzZTIsIGNsb3NlZFByb21pc2VdKQorICAgICAgLnRoZW4oKCkgPT4geworICAgICAgICBh
c3NlcnRfYXJyYXlfZXF1YWxzKHJlc29sdmVkLCBbJ3JlYWR5MScsICd3cml0ZScsICdyZWFkeTIn
LCAnY2xvc2VkJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Byb21pc2VzIHNob3Vs
ZCByZXNvbHZlIGluIHN0YW5kYXJkIG9yZGVyJyk7CisgICAgICAgIGFzc2VydF9hcnJheV9lcXVh
bHMod3MuZXZlbnRzLCBbXSwgJ3VuZGVybHlpbmcgc2luayB3cml0ZSBzaG91bGQgbm90IGJlIGNh
bGxlZCcpOworICAgICAgfSk7Cit9LCAnY29udHJvbGxlci5lcnJvcigpIHNob3VsZCB3b3JrIHdo
ZW4gY2FsbGVkIGZyb20gd2l0aGluIHN0cmF0ZWd5LnNpemUoKScpOworCitwcm9taXNlX3Rlc3Qo
dCA9PiB7CisgIGxldCB3cml0ZXI7CisgIGNvbnN0IHN0cmF0ZWd5ID0geworICAgIHNpemUoKSB7
CisgICAgICB3cml0ZXIuY2xvc2UoKTsKKyAgICAgIHJldHVybiAxOworICAgIH0KKyAgfTsKKwor
ICBjb25zdCB3cyA9IHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtKHt9LCBzdHJhdGVneSk7CisgIHdy
aXRlciA9IHdzLmdldFdyaXRlcigpOworICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2pzKHQsIFR5
cGVFcnJvciwgd3JpdGVyLndyaXRlKCdhJyksICd3cml0ZSgpIHByb21pc2Ugc2hvdWxkIHJlamVj
dCcpCisgICAgICAudGhlbigoKSA9PiB7CisgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3Mu
ZXZlbnRzLCBbJ2Nsb3NlJ10sICdzaW5rLndyaXRlKCkgc2hvdWxkIG5vdCBiZSBjYWxsZWQnKTsK
KyAgICAgIH0pOworfSwgJ2Nsb3NlKCkgc2hvdWxkIHdvcmsgd2hlbiBjYWxsZWQgZnJvbSB3aXRo
aW4gc3RyYXRlZ3kuc2l6ZSgpJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgbGV0IHdyaXRl
cjsKKyAgY29uc3Qgc3RyYXRlZ3kgPSB7CisgICAgc2l6ZSgpIHsKKyAgICAgIHdyaXRlci5hYm9y
dChlcnJvcjEpOworICAgICAgcmV0dXJuIDE7CisgICAgfQorICB9OworCisgIGNvbnN0IHdzID0g
cmVjb3JkaW5nV3JpdGFibGVTdHJlYW0oe30sIHN0cmF0ZWd5KTsKKyAgd3JpdGVyID0gd3MuZ2V0
V3JpdGVyKCk7CisgIHJldHVybiBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIHdy
aXRlci53cml0ZSgnYScpLCAnd3JpdGUoKSBwcm9taXNlIHNob3VsZCByZWplY3QnKQorICAgICAg
LnRoZW4oKCkgPT4geworICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWydh
Ym9ydCcsIGVycm9yMV0sICdzaW5rLndyaXRlKCkgc2hvdWxkIG5vdCBiZSBjYWxsZWQnKTsKKyAg
ICAgIH0pOworfSwgJ2Fib3J0KCkgc2hvdWxkIHdvcmsgd2hlbiBjYWxsZWQgZnJvbSB3aXRoaW4g
c3RyYXRlZ3kuc2l6ZSgpJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgbGV0IHdyaXRlcjsK
KyAgY29uc3Qgc3RyYXRlZ3kgPSB7CisgICAgc2l6ZSgpIHsKKyAgICAgIHdyaXRlci5yZWxlYXNl
TG9jaygpOworICAgICAgcmV0dXJuIDE7CisgICAgfQorICB9OworCisgIGNvbnN0IHdzID0gcmVj
b3JkaW5nV3JpdGFibGVTdHJlYW0oe30sIHN0cmF0ZWd5KTsKKyAgd3JpdGVyID0gd3MuZ2V0V3Jp
dGVyKCk7CisgIGNvbnN0IHdyaXRlUHJvbWlzZSA9IHByb21pc2VfcmVqZWN0c19qcyh0LCBUeXBl
RXJyb3IsIHdyaXRlci53cml0ZSgnYScpLCAnd3JpdGUoKSBwcm9taXNlIHNob3VsZCByZWplY3Qn
KTsKKyAgY29uc3QgcmVhZHlQcm9taXNlID0gcHJvbWlzZV9yZWplY3RzX2pzKHQsIFR5cGVFcnJv
ciwgd3JpdGVyLnJlYWR5LCAncmVhZHkgcHJvbWlzZSBzaG91bGQgcmVqZWN0Jyk7CisgIGNvbnN0
IGNsb3NlZFByb21pc2UgPSBwcm9taXNlX3JlamVjdHNfanModCwgVHlwZUVycm9yLCB3cml0ZXIu
Y2xvc2VkLCAnY2xvc2VkIHByb21pc2Ugc2hvdWxkIHJlamVjdCcpOworICByZXR1cm4gUHJvbWlz
ZS5hbGwoW3dyaXRlUHJvbWlzZSwgcmVhZHlQcm9taXNlLCBjbG9zZWRQcm9taXNlXSkKKyAgICAg
IC50aGVuKCgpID0+IHsKKyAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh3cy5ldmVudHMsIFtd
LCAnc2luay53cml0ZSgpIHNob3VsZCBub3QgYmUgY2FsbGVkJyk7CisgICAgICB9KTsKK30sICdy
ZWxlYXNlTG9jaygpIHNob3VsZCBhYm9ydCB0aGUgd3JpdGUoKSB3aGVuIGNhbGxlZCB3aXRoaW4g
c3RyYXRlZ3kuc2l6ZSgpJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgbGV0IHdyaXRlcjE7
CisgIGxldCB3czsKKyAgbGV0IHdyaXRlUHJvbWlzZTI7CisgIGxldCBjbG9zZVByb21pc2U7Cisg
IGxldCBjbG9zZWRQcm9taXNlMjsKKyAgY29uc3Qgc3RyYXRlZ3kgPSB7CisgICAgc2l6ZShjaHVu
aykgeworICAgICAgaWYgKGNodW5rID4gMCkgeworICAgICAgICB3cml0ZXIxLnJlbGVhc2VMb2Nr
KCk7CisgICAgICAgIGNvbnN0IHdyaXRlcjIgPSB3cy5nZXRXcml0ZXIoKTsKKyAgICAgICAgd3Jp
dGVQcm9taXNlMiA9IHdyaXRlcjIud3JpdGUoMCk7CisgICAgICAgIGNsb3NlUHJvbWlzZSA9IHdy
aXRlcjIuY2xvc2UoKTsKKyAgICAgICAgY2xvc2VkUHJvbWlzZTIgPSB3cml0ZXIyLmNsb3NlZDsK
KyAgICAgIH0KKyAgICAgIHJldHVybiAxOworICAgIH0KKyAgfTsKKyAgd3MgPSByZWNvcmRpbmdX
cml0YWJsZVN0cmVhbSh7fSwgc3RyYXRlZ3kpOworICB3cml0ZXIxID0gd3MuZ2V0V3JpdGVyKCk7
CisgIGNvbnN0IHdyaXRlUHJvbWlzZTEgPSBwcm9taXNlX3JlamVjdHNfanModCwgVHlwZUVycm9y
LCB3cml0ZXIxLndyaXRlKDEpLCAnd3JpdGUoKSBwcm9taXNlIHNob3VsZCByZWplY3QnKTsKKyAg
Y29uc3QgcmVhZHlQcm9taXNlID0gcHJvbWlzZV9yZWplY3RzX2pzKHQsIFR5cGVFcnJvciwgd3Jp
dGVyMS5yZWFkeSwgJ3JlYWR5IHByb21pc2Ugc2hvdWxkIHJlamVjdCcpOworICBjb25zdCBjbG9z
ZWRQcm9taXNlMSA9IHByb21pc2VfcmVqZWN0c19qcyh0LCBUeXBlRXJyb3IsIHdyaXRlcjEuY2xv
c2VkLCAnY2xvc2VkIHByb21pc2Ugc2hvdWxkIHJlamVjdCcpOworICByZXR1cm4gUHJvbWlzZS5h
bGwoW3dyaXRlUHJvbWlzZTEsIHJlYWR5UHJvbWlzZSwgY2xvc2VkUHJvbWlzZTEsIHdyaXRlUHJv
bWlzZTIsIGNsb3NlUHJvbWlzZSwgY2xvc2VkUHJvbWlzZTJdKQorICAgICAgLnRoZW4oKCkgPT4g
eworICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWyd3cml0ZScsIDAsICdj
bG9zZSddLCAnc2luay53cml0ZSgpIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBvbmNlJyk7CisgICAg
ICB9KTsKK30sICdvcmlnaW5hbCByZWFkZXIgc2hvdWxkIGVycm9yIHdoZW4gbmV3IHJlYWRlciBp
cyBjcmVhdGVkIHdpdGhpbiBzdHJhdGVneS5zaXplKCknKTsKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJl
YW1zL3JlZW50cmFudC1zdHJhdGVneS5hbnkud29ya2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJl
YW1zL3JlZW50cmFudC1zdHJhdGVneS5hbnkud29ya2VyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4wYmMwOTc0YTYzZWI1OTM1N2U1ZmFhMTVlYzU0Nzk0YmVkZDI2YTM3Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
L3dyaXRhYmxlLXN0cmVhbXMvcmVlbnRyYW50LXN0cmF0ZWd5LmFueS53b3JrZXItZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsOSBAQAorCitGQUlMIHdyaXRlcyBzaG91bGQgYmUgd3JpdHRlbiBpbiB0
aGUgc3RhbmRhcmQgb3JkZXIgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZB
SUwgd3JpdGVyLndyaXRlKCkgcHJvbWlzZXMgc2hvdWxkIHJlc29sdmUgaW4gdGhlIHN0YW5kYXJk
IG9yZGVyIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIGNvbnRyb2xs
ZXIuZXJyb3IoKSBzaG91bGQgd29yayB3aGVuIGNhbGxlZCBmcm9tIHdpdGhpbiBzdHJhdGVneS5z
aXplKCkgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgY2xvc2UoKSBz
aG91bGQgd29yayB3aGVuIGNhbGxlZCBmcm9tIHdpdGhpbiBzdHJhdGVneS5zaXplKCkgQ2FuJ3Qg
ZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgYWJvcnQoKSBzaG91bGQgd29yayB3
aGVuIGNhbGxlZCBmcm9tIHdpdGhpbiBzdHJhdGVneS5zaXplKCkgQ2FuJ3QgZmluZCB2YXJpYWJs
ZTogV3JpdGFibGVTdHJlYW0KK0ZBSUwgcmVsZWFzZUxvY2soKSBzaG91bGQgYWJvcnQgdGhlIHdy
aXRlKCkgd2hlbiBjYWxsZWQgd2l0aGluIHN0cmF0ZWd5LnNpemUoKSBDYW4ndCBmaW5kIHZhcmlh
YmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBvcmlnaW5hbCByZWFkZXIgc2hvdWxkIGVycm9yIHdo
ZW4gbmV3IHJlYWRlciBpcyBjcmVhdGVkIHdpdGhpbiBzdHJhdGVneS5zaXplKCkgQ2FuJ3QgZmlu
ZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvcmVl
bnRyYW50LXN0cmF0ZWd5LmFueS53b3JrZXIuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL3JlZW50cmFudC1z
dHJhdGVneS5hbnkud29ya2VyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjM4MjkxMzUyOGU2OTNiM2E1ZDU2
YzY2MGE0NTA2MDk4MGI1NDhjMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL3JlZW50
cmFudC1zdHJhdGVneS5hbnkud29ya2VyLmh0bWwKQEAgLTAsMCArMSBAQAorPCEtLSBUaGlzIGZp
bGUgaXMgcmVxdWlyZWQgZm9yIFdlYktpdCB0ZXN0IGluZnJhc3RydWN0dXJlIHRvIHJ1biB0aGUg
dGVtcGxhdGVkIHRlc3QgLS0+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dy
aXRhYmxlLXN0cmVhbXMvc3RhcnQuYW55LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL3N0YXJ0
LmFueS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmQxNDEyY2IyNThjNzk0YTQwNWZjMmE2ZGYz
MWQ3MzQ2NGY4MTFmYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL3N0YXJ0LmFueS1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNSBAQAorQ09OU09MRSBNRVNTQUdFOiBVbmhhbmRsZWQg
UHJvbWlzZSBSZWplY3Rpb246IHVuZGVmaW5lZAorQ09OU09MRSBNRVNTQUdFOiBVbmhhbmRsZWQg
UHJvbWlzZSBSZWplY3Rpb246IFtvYmplY3QgT2JqZWN0XQorQ09OU09MRSBNRVNTQUdFOiBVbmhh
bmRsZWQgUHJvbWlzZSBSZWplY3Rpb246IHVuZGVmaW5lZAorCitIYXJuZXNzIEVycm9yIChGQUlM
KSwgbWVzc2FnZSA9IFVuaGFuZGxlZCByZWplY3Rpb24KKworRkFJTCB1bmRlcmx5aW5nIHNpbmsn
cyB3cml0ZSBzaG91bGQgbm90IGJlIGNhbGxlZCB1bnRpbCBzdGFydCBmaW5pc2hlcyB3cy5nZXRX
cml0ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3JpdGVyKCknLCAnd3MuZ2V0V3Jp
dGVyJyBpcyB1bmRlZmluZWQpCitGQUlMIHVuZGVybHlpbmcgc2luaydzIGNsb3NlIHNob3VsZCBu
b3QgYmUgY2FsbGVkIHVudGlsIHN0YXJ0IGZpbmlzaGVzIHdzLmdldFdyaXRlciBpcyBub3QgYSBm
dW5jdGlvbi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5l
ZCkKK1BBU1MgdW5kZXJseWluZyBzaW5rJ3Mgd3JpdGUgb3IgY2xvc2Ugc2hvdWxkIG5vdCBiZSBj
YWxsZWQgaWYgc3RhcnQgdGhyb3dzIAorUEFTUyB1bmRlcmx5aW5nIHNpbmsncyB3cml0ZSBvciBj
bG9zZSBzaG91bGQgbm90IGJlIGludm9rZWQgaWYgdGhlIHByb21pc2UgcmV0dXJuZWQgYnkgc3Rh
cnQgaXMgcmVqZWN0ZWQgCitGQUlMIHJldHVybmluZyBhIHRoZW5hYmxlIGZyb20gc3RhcnQoKSBz
aG91bGQgd29yayB3cy5nZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3Jp
dGVyKCknLCAnd3MuZ2V0V3JpdGVyJyBpcyB1bmRlZmluZWQpCitGQUlMIGNvbnRyb2xsZXIuZXJy
b3IoKSBkdXJpbmcgc3RhcnQgc2hvdWxkIGNhdXNlIHdyaXRlcyB0byBmYWlsIGNvbnRyb2xsZXIu
ZXJyb3IgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnY29udHJvbGxlci5lcnJvcihlcnJvcjEpJywg
J2NvbnRyb2xsZXIuZXJyb3InIGlzIHVuZGVmaW5lZCkKK0ZBSUwgY29udHJvbGxlci5lcnJvcigp
IGR1cmluZyBhc3luYyBzdGFydCBzaG91bGQgY2F1c2UgZXhpc3Rpbmcgd3JpdGVzIHRvIGZhaWwg
d3MuZ2V0V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywgJ3dz
LmdldFdyaXRlcicgaXMgdW5kZWZpbmVkKQorRkFJTCB3aGVuIHN0YXJ0KCkgcmVqZWN0cywgd3Jp
dGVyIHByb21pc2VzIHNob3VsZCByZWplY3QgaW4gc3RhbmRhcmQgb3JkZXIgd3MuZ2V0V3JpdGVy
IGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicg
aXMgdW5kZWZpbmVkKQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9zdGFydC5hbnkuaHRtbCBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0
YWJsZS1zdHJlYW1zL3N0YXJ0LmFueS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzODI5MTM1MjhlNjkzYjNh
NWQ1NmM2NjBhNDUwNjA5ODBiNTQ4YzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9z
dGFydC5hbnkuaHRtbApAQCAtMCwwICsxIEBACis8IS0tIFRoaXMgZmlsZSBpcyByZXF1aXJlZCBm
b3IgV2ViS2l0IHRlc3QgaW5mcmFzdHJ1Y3R1cmUgdG8gcnVuIHRoZSB0ZW1wbGF0ZWQgdGVzdCAt
LT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9z
dGFydC5hbnkuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9zdGFydC5hbnkuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDJiNWYy
YTM4NzYyNWEzNjU0ODYxY2FkZDBkYWUzY2FlZjExN2NiMAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJs
ZS1zdHJlYW1zL3N0YXJ0LmFueS5qcwpAQCAtMCwwICsxLDE2MyBAQAorLy8gTUVUQTogZ2xvYmFs
PXdpbmRvdyx3b3JrZXIsanNzaGVsbAorLy8gTUVUQTogc2NyaXB0PS4uL3Jlc291cmNlcy90ZXN0
LXV0aWxzLmpzCisvLyBNRVRBOiBzY3JpcHQ9Li4vcmVzb3VyY2VzL3JlY29yZGluZy1zdHJlYW1z
LmpzCisndXNlIHN0cmljdCc7CisKK2NvbnN0IGVycm9yMSA9IHsgbmFtZTogJ2Vycm9yMScgfTsK
KworcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgbGV0IHJlc29sdmVTdGFydFByb21pc2U7CisgIGNv
bnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0oeworICAgIHN0YXJ0KCkgeworICAgICAg
cmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4geworICAgICAgICByZXNvbHZlU3RhcnRQcm9t
aXNlID0gcmVzb2x2ZTsKKyAgICAgIH0pOworICAgIH0KKyAgfSk7CisKKyAgY29uc3Qgd3JpdGVy
ID0gd3MuZ2V0V3JpdGVyKCk7CisKKyAgYXNzZXJ0X2VxdWFscyh3cml0ZXIuZGVzaXJlZFNpemUs
IDEsICdkZXNpcmVkU2l6ZSBzaG91bGQgYmUgMScpOworICB3cml0ZXIud3JpdGUoJ2EnKTsKKyAg
YXNzZXJ0X2VxdWFscyh3cml0ZXIuZGVzaXJlZFNpemUsIDAsICdkZXNpcmVkU2l6ZSBzaG91bGQg
YmUgMCBhZnRlciB3cml0ZXIud3JpdGUoKScpOworCisgIC8vIFdhaXQgYW5kIHZlcmlmeSB0aGF0
IHdyaXRlIGlzbid0IGNhbGxlZC4KKyAgcmV0dXJuIGZsdXNoQXN5bmNFdmVudHMoKQorICAgICAg
LnRoZW4oKCkgPT4geworICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgW10s
ICd3cml0ZSBzaG91bGQgbm90IGJlIGNhbGxlZCB1bnRpbCBzdGFydCBwcm9taXNlIHJlc29sdmVz
Jyk7CisgICAgICAgIHJlc29sdmVTdGFydFByb21pc2UoKTsKKyAgICAgICAgcmV0dXJuIHdyaXRl
ci5yZWFkeTsKKyAgICAgIH0pCisgICAgICAudGhlbigoKSA9PiBhc3NlcnRfYXJyYXlfZXF1YWxz
KHdzLmV2ZW50cywgWyd3cml0ZScsICdhJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICd3cml0ZSBzaG91bGQgbm90IGJlIGNhbGxlZCB1bnRpbCBzdGFydCBwcm9taXNl
IHJlc29sdmVzJykpOworfSwgJ3VuZGVybHlpbmcgc2lua1wncyB3cml0ZSBzaG91bGQgbm90IGJl
IGNhbGxlZCB1bnRpbCBzdGFydCBmaW5pc2hlcycpOworCitwcm9taXNlX3Rlc3QoKCkgPT4gewor
ICBsZXQgcmVzb2x2ZVN0YXJ0UHJvbWlzZTsKKyAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJs
ZVN0cmVhbSh7CisgICAgc3RhcnQoKSB7CisgICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2
ZSA9PiB7CisgICAgICAgIHJlc29sdmVTdGFydFByb21pc2UgPSByZXNvbHZlOworICAgICAgfSk7
CisgICAgfQorICB9KTsKKworICBjb25zdCB3cml0ZXIgPSB3cy5nZXRXcml0ZXIoKTsKKworICB3
cml0ZXIuY2xvc2UoKTsKKyAgYXNzZXJ0X2VxdWFscyh3cml0ZXIuZGVzaXJlZFNpemUsIDEsICdk
ZXNpcmVkU2l6ZSBzaG91bGQgYmUgMScpOworCisgIC8vIFdhaXQgYW5kIHZlcmlmeSB0aGF0IHdy
aXRlIGlzbid0IGNhbGxlZC4KKyAgcmV0dXJuIGZsdXNoQXN5bmNFdmVudHMoKS50aGVuKCgpID0+
IHsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgW10sICdjbG9zZSBzaG91bGQg
bm90IGJlIGNhbGxlZCB1bnRpbCBzdGFydCBwcm9taXNlIHJlc29sdmVzJyk7CisgICAgcmVzb2x2
ZVN0YXJ0UHJvbWlzZSgpOworICAgIHJldHVybiB3cml0ZXIuY2xvc2VkOworICB9KTsKK30sICd1
bmRlcmx5aW5nIHNpbmtcJ3MgY2xvc2Ugc2hvdWxkIG5vdCBiZSBjYWxsZWQgdW50aWwgc3RhcnQg
ZmluaXNoZXMnKTsKKwordGVzdCgoKSA9PiB7CisgIGNvbnN0IHBhc3NlZEVycm9yID0gbmV3IEVy
cm9yKCdob3JyaWJsZSB0aGluZ3MnKTsKKworICBsZXQgd3JpdGVDYWxsZWQgPSBmYWxzZTsKKyAg
bGV0IGNsb3NlQ2FsbGVkID0gZmFsc2U7CisgIGFzc2VydF90aHJvd3NfZXhhY3RseShwYXNzZWRF
cnJvciwgKCkgPT4geworICAgIC8vIHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtIGNhbm5vdCBiZSB1
c2VkIGhlcmUgYmVjYXVzZSB0aGUgZXhjZXB0aW9uIGluIHRoZQorICAgIC8vIGNvbnN0cnVjdG9y
IHByZXZlbnRzIGFzc2lnbmluZyB0aGUgb2JqZWN0IHRvIGEgdmFyaWFibGUuCisgICAgbmV3IFdy
aXRhYmxlU3RyZWFtKHsKKyAgICAgIHN0YXJ0KCkgeworICAgICAgICB0aHJvdyBwYXNzZWRFcnJv
cjsKKyAgICAgIH0sCisgICAgICB3cml0ZSgpIHsKKyAgICAgICAgd3JpdGVDYWxsZWQgPSB0cnVl
OworICAgICAgfSwKKyAgICAgIGNsb3NlKCkgeworICAgICAgICBjbG9zZUNhbGxlZCA9IHRydWU7
CisgICAgICB9CisgICAgfSk7CisgIH0sICdjb25zdHJ1Y3RvciBzaG91bGQgdGhyb3cgcGFzc2Vk
RXJyb3InKTsKKyAgYXNzZXJ0X2ZhbHNlKHdyaXRlQ2FsbGVkLCAnd3JpdGUgc2hvdWxkIG5vdCBi
ZSBjYWxsZWQnKTsKKyAgYXNzZXJ0X2ZhbHNlKGNsb3NlQ2FsbGVkLCAnY2xvc2Ugc2hvdWxkIG5v
dCBiZSBjYWxsZWQnKTsKK30sICd1bmRlcmx5aW5nIHNpbmtcJ3Mgd3JpdGUgb3IgY2xvc2Ugc2hv
dWxkIG5vdCBiZSBjYWxsZWQgaWYgc3RhcnQgdGhyb3dzJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9
PiB7CisgIGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0oeworICAgIHN0YXJ0KCkg
eworICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7CisgICAgfQorICB9KTsKKworICAvLyBX
YWl0IGFuZCB2ZXJpZnkgdGhhdCB3cml0ZSBvciBjbG9zZSBhcmVuJ3QgY2FsbGVkLgorICByZXR1
cm4gZmx1c2hBc3luY0V2ZW50cygpCisgICAgICAudGhlbigoKSA9PiBhc3NlcnRfYXJyYXlfZXF1
YWxzKHdzLmV2ZW50cywgW10sICd3cml0ZSBhbmQgY2xvc2Ugc2hvdWxkIG5vdCBiZSBjYWxsZWQn
KSk7Cit9LCAndW5kZXJseWluZyBzaW5rXCdzIHdyaXRlIG9yIGNsb3NlIHNob3VsZCBub3QgYmUg
aW52b2tlZCBpZiB0aGUgcHJvbWlzZSByZXR1cm5lZCBieSBzdGFydCBpcyByZWplY3RlZCcpOwor
Citwcm9taXNlX3Rlc3QodCA9PiB7CisgIGNvbnN0IHdzID0gbmV3IFdyaXRhYmxlU3RyZWFtKHsK
KyAgICBzdGFydCgpIHsKKyAgICAgIHJldHVybiB7CisgICAgICAgIHRoZW4ob25GdWxmaWxsZWQs
IG9uUmVqZWN0ZWQpIHsgb25SZWplY3RlZChlcnJvcjEpOyB9CisgICAgICB9OworICAgIH0KKyAg
fSk7CisgIHJldHVybiBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIHdzLmdldFdy
aXRlcigpLmNsb3NlZCwgJ2Nsb3NlZCBwcm9taXNlIHNob3VsZCBiZSByZWplY3RlZCcpOworfSwg
J3JldHVybmluZyBhIHRoZW5hYmxlIGZyb20gc3RhcnQoKSBzaG91bGQgd29yaycpOworCitwcm9t
aXNlX3Rlc3QodCA9PiB7CisgIGNvbnN0IHdzID0gcmVjb3JkaW5nV3JpdGFibGVTdHJlYW0oewor
ICAgIHN0YXJ0KGNvbnRyb2xsZXIpIHsKKyAgICAgIGNvbnRyb2xsZXIuZXJyb3IoZXJyb3IxKTsK
KyAgICB9CisgIH0pOworICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3Ix
LCB3cy5nZXRXcml0ZXIoKS53cml0ZSgnYScpLCAnd3JpdGUoKSBzaG91bGQgcmVqZWN0IHdpdGgg
dGhlIGVycm9yJykKKyAgICAgIC50aGVuKCgpID0+IHsKKyAgICAgICAgYXNzZXJ0X2FycmF5X2Vx
dWFscyh3cy5ldmVudHMsIFtdLCAnc2luayB3cml0ZSgpIHNob3VsZCBub3QgaGF2ZSBiZWVuIGNh
bGxlZCcpOworICAgICAgfSk7Cit9LCAnY29udHJvbGxlci5lcnJvcigpIGR1cmluZyBzdGFydCBz
aG91bGQgY2F1c2Ugd3JpdGVzIHRvIGZhaWwnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBs
ZXQgY29udHJvbGxlcjsKKyAgbGV0IHJlc29sdmVTdGFydDsKKyAgY29uc3Qgd3MgPSByZWNvcmRp
bmdXcml0YWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgY29udHJvbGxlciA9IGM7
CisgICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7CisgICAgICAgIHJlc29sdmVT
dGFydCA9IHJlc29sdmU7CisgICAgICB9KTsKKyAgICB9CisgIH0pOworICBjb25zdCB3cml0ZXIg
PSB3cy5nZXRXcml0ZXIoKTsKKyAgY29uc3Qgd3JpdGVQcm9taXNlID0gd3JpdGVyLndyaXRlKCdh
Jyk7CisgIGNvbnN0IGNsb3NlUHJvbWlzZSA9IHdyaXRlci5jbG9zZSgpOworICBjb250cm9sbGVy
LmVycm9yKGVycm9yMSk7CisgIHJlc29sdmVTdGFydCgpOworICByZXR1cm4gUHJvbWlzZS5hbGwo
WworICAgIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVycm9yMSwgd3JpdGVQcm9taXNlLCAn
d3JpdGUoKSBzaG91bGQgZmFpbCcpLAorICAgIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHQsIGVy
cm9yMSwgY2xvc2VQcm9taXNlLCAnY2xvc2UoKSBzaG91bGQgZmFpbCcpCisgIF0pLnRoZW4oKCkg
PT4geworICAgIGFzc2VydF9hcnJheV9lcXVhbHMod3MuZXZlbnRzLCBbXSwgJ3Npbmsgd3JpdGUo
KSBhbmQgY2xvc2UoKSBzaG91bGQgbm90IGhhdmUgYmVlbiBjYWxsZWQnKTsKKyAgfSk7Cit9LCAn
Y29udHJvbGxlci5lcnJvcigpIGR1cmluZyBhc3luYyBzdGFydCBzaG91bGQgY2F1c2UgZXhpc3Rp
bmcgd3JpdGVzIHRvIGZhaWwnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBjb25zdCBldmVu
dHMgPSBbXTsKKyAgY29uc3QgcHJvbWlzZXMgPSBbXTsKKyAgZnVuY3Rpb24gY2F0Y2hBbmRSZWNv
cmQocHJvbWlzZSwgbmFtZSkgeworICAgIHByb21pc2VzLnB1c2gocHJvbWlzZS50aGVuKHQudW5y
ZWFjaGVkX2Z1bmMoYHByb21pc2UgJHtuYW1lfSBzaG91bGQgbm90IHJlc29sdmVgKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAoKSA9PiB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBldmVudHMucHVzaChuYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9KSk7CisgIH0KKyAgY29uc3Qgd3MgPSBuZXcgV3JpdGFibGVTdHJlYW0oeworICAgIHN0
YXJ0KCkgeworICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7CisgICAgfQorICB9LCB7IGhp
Z2hXYXRlck1hcms6IDAgfSk7CisgIGNvbnN0IHdyaXRlciA9IHdzLmdldFdyaXRlcigpOworICBj
YXRjaEFuZFJlY29yZCh3cml0ZXIucmVhZHksICdyZWFkeScpOworICBjYXRjaEFuZFJlY29yZCh3
cml0ZXIuY2xvc2VkLCAnY2xvc2VkJyk7CisgIGNhdGNoQW5kUmVjb3JkKHdyaXRlci53cml0ZSgp
LCAnd3JpdGUnKTsKKyAgcmV0dXJuIFByb21pc2UuYWxsKHByb21pc2VzKQorICAgICAgLnRoZW4o
KCkgPT4geworICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGV2ZW50cywgWydyZWFkeScsICd3
cml0ZScsICdjbG9zZWQnXSwgJ3Byb21pc2VzIHNob3VsZCByZWplY3QgaW4gc3RhbmRhcmQgb3Jk
ZXInKTsKKyAgICAgIH0pOworfSwgJ3doZW4gc3RhcnQoKSByZWplY3RzLCB3cml0ZXIgcHJvbWlz
ZXMgc2hvdWxkIHJlamVjdCBpbiBzdGFuZGFyZCBvcmRlcicpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0
cmVhbXMvc3RhcnQuYW55Lndvcmtlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9zdGFydC5h
bnkud29ya2VyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMmI4M2Y4MTJhNmQ2MTQ4ZDg4MWUx
NTJlNDI3YWE5MTZhOTQyZWUwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvc3RhcnQu
YW55Lndvcmtlci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyNCBAQAorCitGQUlMIHVuZGVybHlp
bmcgc2luaydzIHdyaXRlIHNob3VsZCBub3QgYmUgY2FsbGVkIHVudGlsIHN0YXJ0IGZpbmlzaGVz
IENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIHVuZGVybHlpbmcgc2lu
aydzIGNsb3NlIHNob3VsZCBub3QgYmUgY2FsbGVkIHVudGlsIHN0YXJ0IGZpbmlzaGVzIENhbid0
IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIHVuZGVybHlpbmcgc2luaydzIHdy
aXRlIG9yIGNsb3NlIHNob3VsZCBub3QgYmUgY2FsbGVkIGlmIHN0YXJ0IHRocm93cyBhc3NlcnRf
dGhyb3dzX2V4YWN0bHk6IGNvbnN0cnVjdG9yIHNob3VsZCB0aHJvdyBwYXNzZWRFcnJvciBmdW5j
dGlvbiAiKCkgPT4geworICAgIC8vIHJlY29yZGluZ1dyaXRhYmxlU3RyZWFtIGNhbm5vdCBiZSB1
c2VkIGhlcmUgYmVjYXVzZSB0aGUgZXhjZXB0aW9uIGluIHRoZQorICAgIC8vIGNvbnN0cnVjdG9y
IHByZXZlbnRzIGFzc2lnbmluZyB0aGUgb2JqZWN0IHRvIGEgdmFyaWFibGUuCisgICAgbmV3IFdy
aXRhYmxlU3RyZWFtKHsKKyAgICAgIHN0YXJ0KCkgeworICAgICAgICB0aHJvdyBwYXNzZWRFcnJv
cjsKKyAgICAgIH0sCisgICAgICB3cml0ZSgpIHsKKyAgICAgICAgd3JpdGVDYWxsZWQgPSB0cnVl
OworICAgICAgfSwKKyAgICAgIGNsb3NlKCkgeworICAgICAgICBjbG9zZUNhbGxlZCA9IHRydWU7
CisgICAgICB9CisgICAgfSk7CisgIH0iIHRocmV3IG9iamVjdCAiUmVmZXJlbmNlRXJyb3I6IENh
bid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtIiBidXQgd2UgZXhwZWN0ZWQgaXQgdG8g
dGhyb3cgb2JqZWN0ICJFcnJvcjogaG9ycmlibGUgdGhpbmdzIgorRkFJTCB1bmRlcmx5aW5nIHNp
bmsncyB3cml0ZSBvciBjbG9zZSBzaG91bGQgbm90IGJlIGludm9rZWQgaWYgdGhlIHByb21pc2Ug
cmV0dXJuZWQgYnkgc3RhcnQgaXMgcmVqZWN0ZWQgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFi
bGVTdHJlYW0KK0ZBSUwgcmV0dXJuaW5nIGEgdGhlbmFibGUgZnJvbSBzdGFydCgpIHNob3VsZCB3
b3JrIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIGNvbnRyb2xsZXIu
ZXJyb3IoKSBkdXJpbmcgc3RhcnQgc2hvdWxkIGNhdXNlIHdyaXRlcyB0byBmYWlsIENhbid0IGZp
bmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIGNvbnRyb2xsZXIuZXJyb3IoKSBkdXJp
bmcgYXN5bmMgc3RhcnQgc2hvdWxkIGNhdXNlIGV4aXN0aW5nIHdyaXRlcyB0byBmYWlsIENhbid0
IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIHdoZW4gc3RhcnQoKSByZWplY3Rz
LCB3cml0ZXIgcHJvbWlzZXMgc2hvdWxkIHJlamVjdCBpbiBzdGFuZGFyZCBvcmRlciBDYW4ndCBm
aW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9z
dGFydC5hbnkud29ya2VyLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9zdGFydC5hbnkud29ya2VyLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMjM4MjkxMzUyOGU2OTNiM2E1ZDU2YzY2MGE0NTA2MDk4MGI1NDhjMwotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL3N0YXJ0LmFueS53b3JrZXIuaHRtbApAQCAtMCww
ICsxIEBACis8IS0tIFRoaXMgZmlsZSBpcyByZXF1aXJlZCBmb3IgV2ViS2l0IHRlc3QgaW5mcmFz
dHJ1Y3R1cmUgdG8gcnVuIHRoZSB0ZW1wbGF0ZWQgdGVzdCAtLT4KXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy93M2MtaW1wb3J0LmxvZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1z
dHJlYW1zL3czYy1pbXBvcnQubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJlMTg1MWM2ZWMzNGY5YWFkZTVlMzMy
MjFhYmMwOTZlMzE4ZTBlZDQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy93M2MtaW1w
b3J0LmxvZwpAQCAtMCwwICsxLDMwIEBACitUaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2Vy
ZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KK0RvIE5PVCBtb2RpZnkgdGhlc2Ug
dGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgorSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0
IG9uIHRoZSBXUFQgZ2l0aHViOgorCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVz
dHMvd3B0CisKK1RoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4g
V2ViS2l0IHRvIHJlaW1wb3J0CisKK0RvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4K
KworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCitQcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6
CitOb25lCitQcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKK05vbmUK
Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorTGlzdCBvZiBmaWxlczoKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9hYm9ydGluZy5h
bnkuanMKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvd3JpdGFibGUtc3RyZWFtcy9iYWQtc3RyYXRlZ2llcy5hbnkuanMKKy9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9i
YWQtdW5kZXJseWluZy1zaW5rcy5hbnkuanMKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9ieXRlLWxlbmd0aC1xdWV1
aW5nLXN0cmF0ZWd5LmFueS5qcworL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL2Nsb3NlLmFueS5qcworL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJl
YW1zL2NvbnN0cnVjdG9yLmFueS5qcworL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL2NvdW50LXF1ZXVpbmctc3RyYXRl
Z3kuYW55LmpzCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
dHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvZXJyb3IuYW55LmpzCisvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvZmxvYXRp
bmctcG9pbnQtdG90YWwtcXVldWUtc2l6ZS5hbnkuanMKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9nZW5lcmFsLmFu
eS5qcworL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy93cml0YWJsZS1zdHJlYW1zL3Byb3BlcnRpZXMuYW55LmpzCisvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvcmVlbnRy
YW50LXN0cmF0ZWd5LmFueS5qcworL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL3N0YXJ0LmFueS5qcworL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJl
YW1zL3dyaXRlLmFueS5qcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvd3JpdGUuYW55LWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy93cml0YWJsZS1zdHJlYW1zL3dyaXRlLmFueS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZWY1ZTExNGNkYTM5OWI1ZjI5ZTcyNTE4ODk0NTY3YTEyOTI1MjY1MAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93
cml0YWJsZS1zdHJlYW1zL3dyaXRlLmFueS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNSBAQAor
CitGQUlMIFdyaXRhYmxlU3RyZWFtIHNob3VsZCBjb21wbGV0ZSBhc3luY2hyb25vdXMgd3JpdGVz
IGJlZm9yZSBjbG9zZSByZXNvbHZlcyB3cy5nZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJ
biAnd3MuZ2V0V3JpdGVyKCknLCAnd3MuZ2V0V3JpdGVyJyBpcyB1bmRlZmluZWQpCitGQUlMIFdy
aXRhYmxlU3RyZWFtIHNob3VsZCBjb21wbGV0ZSBzeW5jaHJvbm91cyB3cml0ZXMgYmVmb3JlIGNs
b3NlIHJlc29sdmVzIHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRX
cml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkKK0ZBSUwgZnVsZmlsbG1lbnQg
dmFsdWUgb2Ygd3Mud3JpdGUoKSBjYWxsIHNob3VsZCBiZSB1bmRlZmluZWQgZXZlbiBpZiB0aGUg
dW5kZXJseWluZyBzaW5rIHJldHVybnMgYSBub24tdW5kZWZpbmVkIHZhbHVlIHdzLmdldFdyaXRl
ciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXIn
IGlzIHVuZGVmaW5lZCkKK0ZBSUwgV3JpdGFibGVTdHJlYW0gc2hvdWxkIHRyYW5zaXRpb24gdG8g
d2FpdGluZyB1bnRpbCB3cml0ZSBpcyBhY2tub3dsZWRnZWQgd3MuZ2V0V3JpdGVyIGlzIG5vdCBh
IGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdyaXRlcicgaXMgdW5kZWZp
bmVkKQorRkFJTCB3aGVuIHdyaXRlIHJldHVybnMgYSByZWplY3RlZCBwcm9taXNlLCBxdWV1ZWQg
d3JpdGVzIGFuZCBjbG9zZSBzaG91bGQgYmUgY2xlYXJlZCB3cy5nZXRXcml0ZXIgaXMgbm90IGEg
ZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3JpdGVyKCknLCAnd3MuZ2V0V3JpdGVyJyBpcyB1bmRlZmlu
ZWQpCitGQUlMIHdoZW4gc2luaydzIHdyaXRlIHRocm93cyBhbiBlcnJvciwgdGhlIHN0cmVhbSBz
aG91bGQgYmVjb21lIGVycm9yZWQgYW5kIHRoZSBwcm9taXNlIHNob3VsZCByZWplY3Qgd3MuZ2V0
V3JpdGVyIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3dzLmdldFdyaXRlcigpJywgJ3dzLmdldFdy
aXRlcicgaXMgdW5kZWZpbmVkKQorRkFJTCB3cml0ZXIud3JpdGUoKSwgcmVhZHkgYW5kIGNsb3Nl
ZCByZWplY3Qgd2l0aCB0aGUgZXJyb3IgcGFzc2VkIHRvIGNvbnRyb2xsZXIuZXJyb3IoKSBtYWRl
IGJlZm9yZSBzaW5rLndyaXRlIHJlamVjdGlvbiB3cy5nZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rp
b24uIChJbiAnd3MuZ2V0V3JpdGVyKCknLCAnd3MuZ2V0V3JpdGVyJyBpcyB1bmRlZmluZWQpCitG
QUlMIGEgbGFyZ2UgcXVldWUgb2Ygd3JpdGVzIHNob3VsZCBiZSBwcm9jZXNzZWQgY29tcGxldGVs
eSB3cy5nZXRXcml0ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnd3MuZ2V0V3JpdGVyKCknLCAn
d3MuZ2V0V3JpdGVyJyBpcyB1bmRlZmluZWQpCitGQUlMIFdyaXRhYmxlU3RyZWFtRGVmYXVsdFdy
aXRlciBzaG91bGQgd29yayB3aGVuIG1hbnVhbGx5IGNvbnN0cnVjdGVkIHN0cmVhbS5nZXRXcml0
ZXIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnc3RyZWFtLmdldFdyaXRlcigpJywgJ3N0cmVhbS5n
ZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkKK0ZBSUwgcmV0dXJuaW5nIGEgdGhlbmFibGUgZnJvbSB3
cml0ZSgpIHNob3VsZCB3b3JrIHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3
cy5nZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkKK0ZBSUwgZmFpbGlu
ZyBEZWZhdWx0V3JpdGVyIGNvbnN0cnVjdG9yIHNob3VsZCBub3QgcmVsZWFzZSBhbiBleGlzdGlu
ZyB3cml0ZXIgc3RyZWFtLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICdzdHJlYW0u
Z2V0V3JpdGVyKCknLCAnc3RyZWFtLmdldFdyaXRlcicgaXMgdW5kZWZpbmVkKQorRkFJTCB3cml0
ZSgpIG9uIGEgc3RyZWFtIHdpdGggSFdNIDAgc2hvdWxkIG5vdCBjYXVzZSB0aGUgcmVhZHkgUHJv
bWlzZSB0byByZXNvbHZlIHdzLmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5n
ZXRXcml0ZXIoKScsICd3cy5nZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkKK0ZBSUwgd3JpdGluZyB0
byBhIHJlbGVhc2VkIHdyaXRlciBzaG91bGQgcmVqZWN0IHRoZSByZXR1cm5lZCBwcm9taXNlIHdz
LmdldFdyaXRlciBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd3cy5nZXRXcml0ZXIoKScsICd3cy5n
ZXRXcml0ZXInIGlzIHVuZGVmaW5lZCkKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvd3JpdGUu
YW55Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMvd3JpdGFibGUtc3RyZWFtcy93cml0ZS5hbnkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMzgyOTEz
NTI4ZTY5M2IzYTVkNTZjNjYwYTQ1MDYwOTgwYjU0OGMzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxl
LXN0cmVhbXMvd3JpdGUuYW55Lmh0bWwKQEAgLTAsMCArMSBAQAorPCEtLSBUaGlzIGZpbGUgaXMg
cmVxdWlyZWQgZm9yIFdlYktpdCB0ZXN0IGluZnJhc3RydWN0dXJlIHRvIHJ1biB0aGUgdGVtcGxh
dGVkIHRlc3QgLS0+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxl
LXN0cmVhbXMvd3JpdGUuYW55LmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvd3JpdGUuYW55LmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmUzZGVmYTgzNDgyMGQ0MGQ3OWEzYjcyODk0MDc1ZjViYjRlYTBkZWEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvd3JpdGFibGUtc3RyZWFtcy93cml0ZS5hbnkuanMKQEAgLTAsMCArMSwyODQgQEAKKy8vIE1F
VEE6IGdsb2JhbD13aW5kb3csd29ya2VyLGpzc2hlbGwKKy8vIE1FVEE6IHNjcmlwdD0uLi9yZXNv
dXJjZXMvdGVzdC11dGlscy5qcworLy8gTUVUQTogc2NyaXB0PS4uL3Jlc291cmNlcy9yZWNvcmRp
bmctc3RyZWFtcy5qcworJ3VzZSBzdHJpY3QnOworCitjb25zdCBlcnJvcjEgPSBuZXcgRXJyb3Io
J2Vycm9yMScpOworZXJyb3IxLm5hbWUgPSAnZXJyb3IxJzsKKworY29uc3QgZXJyb3IyID0gbmV3
IEVycm9yKCdlcnJvcjInKTsKK2Vycm9yMi5uYW1lID0gJ2Vycm9yMic7CisKK2Z1bmN0aW9uIHdy
aXRlQXJyYXlUb1N0cmVhbShhcnJheSwgd3JpdGFibGVTdHJlYW1Xcml0ZXIpIHsKKyAgYXJyYXku
Zm9yRWFjaChjaHVuayA9PiB3cml0YWJsZVN0cmVhbVdyaXRlci53cml0ZShjaHVuaykpOworICBy
ZXR1cm4gd3JpdGFibGVTdHJlYW1Xcml0ZXIuY2xvc2UoKTsKK30KKworcHJvbWlzZV90ZXN0KCgp
ID0+IHsKKyAgbGV0IHN0b3JhZ2U7CisgIGNvbnN0IHdzID0gbmV3IFdyaXRhYmxlU3RyZWFtKHsK
KyAgICBzdGFydCgpIHsKKyAgICAgIHN0b3JhZ2UgPSBbXTsKKyAgICB9LAorCisgICAgd3JpdGUo
Y2h1bmspIHsKKyAgICAgIHJldHVybiBkZWxheSgwKS50aGVuKCgpID0+IHN0b3JhZ2UucHVzaChj
aHVuaykpOworICAgIH0sCisKKyAgICBjbG9zZSgpIHsKKyAgICAgIHJldHVybiBkZWxheSgwKTsK
KyAgICB9CisgIH0pOworCisgIGNvbnN0IHdyaXRlciA9IHdzLmdldFdyaXRlcigpOworCisgIGNv
bnN0IGlucHV0ID0gWzEsIDIsIDMsIDQsIDVdOworICByZXR1cm4gd3JpdGVBcnJheVRvU3RyZWFt
KGlucHV0LCB3cml0ZXIpCisgICAgICAudGhlbigoKSA9PiBhc3NlcnRfYXJyYXlfZXF1YWxzKHN0
b3JhZ2UsIGlucHV0LCAnY29ycmVjdCBkYXRhIHNob3VsZCBiZSByZWxheWVkIHRvIHVuZGVybHlp
bmcgc2luaycpKTsKK30sICdXcml0YWJsZVN0cmVhbSBzaG91bGQgY29tcGxldGUgYXN5bmNocm9u
b3VzIHdyaXRlcyBiZWZvcmUgY2xvc2UgcmVzb2x2ZXMnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+
IHsKKyAgY29uc3Qgd3MgPSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSgpOworCisgIGNvbnN0IHdy
aXRlciA9IHdzLmdldFdyaXRlcigpOworCisgIGNvbnN0IGlucHV0ID0gWzEsIDIsIDMsIDQsIDVd
OworICByZXR1cm4gd3JpdGVBcnJheVRvU3RyZWFtKGlucHV0LCB3cml0ZXIpCisgICAgICAudGhl
bigoKSA9PiBhc3NlcnRfYXJyYXlfZXF1YWxzKHdzLmV2ZW50cywgWyd3cml0ZScsIDEsICd3cml0
ZScsIDIsICd3cml0ZScsIDMsICd3cml0ZScsIDQsICd3cml0ZScsIDUsICdjbG9zZSddLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29ycmVjdCBkYXRhIHNob3VsZCBi
ZSByZWxheWVkIHRvIHVuZGVybHlpbmcgc2luaycpKTsKK30sICdXcml0YWJsZVN0cmVhbSBzaG91
bGQgY29tcGxldGUgc3luY2hyb25vdXMgd3JpdGVzIGJlZm9yZSBjbG9zZSByZXNvbHZlcycpOwor
Citwcm9taXNlX3Rlc3QoKCkgPT4geworICBjb25zdCB3cyA9IG5ldyBXcml0YWJsZVN0cmVhbSh7
CisgICAgd3JpdGUoKSB7CisgICAgICByZXR1cm4gJ0hlbGxvJzsKKyAgICB9CisgIH0pOworCisg
IGNvbnN0IHdyaXRlciA9IHdzLmdldFdyaXRlcigpOworCisgIGNvbnN0IHdyaXRlUHJvbWlzZSA9
IHdyaXRlci53cml0ZSgnYScpOworICByZXR1cm4gd3JpdGVQcm9taXNlCisgICAgICAudGhlbih2
YWx1ZSA9PiBhc3NlcnRfZXF1YWxzKHZhbHVlLCB1bmRlZmluZWQsICdmdWxmaWxsbWVudCB2YWx1
ZSBtdXN0IGJlIHVuZGVmaW5lZCcpKTsKK30sICdmdWxmaWxsbWVudCB2YWx1ZSBvZiB3cy53cml0
ZSgpIGNhbGwgc2hvdWxkIGJlIHVuZGVmaW5lZCBldmVuIGlmIHRoZSB1bmRlcmx5aW5nIHNpbmsg
cmV0dXJucyBhIG5vbi11bmRlZmluZWQgJyArCisgICAgJ3ZhbHVlJyk7CisKK3Byb21pc2VfdGVz
dCgoKSA9PiB7CisgIGxldCByZXNvbHZlU2lua1dyaXRlUHJvbWlzZTsKKyAgY29uc3Qgd3MgPSBu
ZXcgV3JpdGFibGVTdHJlYW0oeworICAgIHdyaXRlKCkgeworICAgICAgcmV0dXJuIG5ldyBQcm9t
aXNlKHJlc29sdmUgPT4geworICAgICAgICByZXNvbHZlU2lua1dyaXRlUHJvbWlzZSA9IHJlc29s
dmU7CisgICAgICB9KTsKKyAgICB9CisgIH0pOworCisgIGNvbnN0IHdyaXRlciA9IHdzLmdldFdy
aXRlcigpOworCisgIGFzc2VydF9lcXVhbHMod3JpdGVyLmRlc2lyZWRTaXplLCAxLCAnZGVzaXJl
ZFNpemUgc2hvdWxkIGJlIDEnKTsKKworICByZXR1cm4gd3JpdGVyLnJlYWR5LnRoZW4oKCkgPT4g
eworICAgIGNvbnN0IHdyaXRlUHJvbWlzZSA9IHdyaXRlci53cml0ZSgnYScpOworICAgIGxldCB3
cml0ZVByb21pc2VSZXNvbHZlZCA9IGZhbHNlOworICAgIGFzc2VydF9ub3RfZXF1YWxzKHJlc29s
dmVTaW5rV3JpdGVQcm9taXNlLCB1bmRlZmluZWQsICdyZXNvbHZlU2lua1dyaXRlUHJvbWlzZSBz
aG91bGQgbm90IGJlIHVuZGVmaW5lZCcpOworCisgICAgYXNzZXJ0X2VxdWFscyh3cml0ZXIuZGVz
aXJlZFNpemUsIDAsICdkZXNpcmVkU2l6ZSBzaG91bGQgYmUgMCBhZnRlciB3cml0ZXIud3JpdGUo
KScpOworCisgICAgcmV0dXJuIFByb21pc2UuYWxsKFsKKyAgICAgIHdyaXRlUHJvbWlzZS50aGVu
KHZhbHVlID0+IHsKKyAgICAgICAgd3JpdGVQcm9taXNlUmVzb2x2ZWQgPSB0cnVlOworICAgICAg
ICBhc3NlcnRfZXF1YWxzKHJlc29sdmVTaW5rV3JpdGVQcm9taXNlLCB1bmRlZmluZWQsICdzaW5r
V3JpdGVQcm9taXNlIHNob3VsZCBiZSBmdWxmaWxsZWQgYmVmb3JlIHdyaXRlUHJvbWlzZScpOwor
CisgICAgICAgIGFzc2VydF9lcXVhbHModmFsdWUsIHVuZGVmaW5lZCwgJ3dyaXRlUHJvbWlzZSBz
aG91bGQgYmUgZnVsZmlsbGVkIHdpdGggdW5kZWZpbmVkJyk7CisgICAgICB9KSwKKyAgICAgIHdy
aXRlci5yZWFkeS50aGVuKHZhbHVlID0+IHsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhyZXNvbHZl
U2lua1dyaXRlUHJvbWlzZSwgdW5kZWZpbmVkLCAnc2lua1dyaXRlUHJvbWlzZSBzaG91bGQgYmUg
ZnVsZmlsbGVkIGJlZm9yZSB3cml0ZXIucmVhZHknKTsKKyAgICAgICAgYXNzZXJ0X3RydWUod3Jp
dGVQcm9taXNlUmVzb2x2ZWQsICd3cml0ZVByb21pc2Ugc2hvdWxkIGJlIGZ1bGZpbGxlZCBiZWZv
cmUgd3JpdGVyLnJlYWR5Jyk7CisKKyAgICAgICAgYXNzZXJ0X2VxdWFscyh3cml0ZXIuZGVzaXJl
ZFNpemUsIDEsICdkZXNpcmVkU2l6ZSBzaG91bGQgYmUgMSBhZ2FpbicpOworCisgICAgICAgIGFz
c2VydF9lcXVhbHModmFsdWUsIHVuZGVmaW5lZCwgJ3dyaXRlUHJvbWlzZSBzaG91bGQgYmUgZnVs
ZmlsbGVkIHdpdGggdW5kZWZpbmVkJyk7CisgICAgICB9KSwKKyAgICAgIGZsdXNoQXN5bmNFdmVu
dHMoKS50aGVuKCgpID0+IHsKKyAgICAgICAgcmVzb2x2ZVNpbmtXcml0ZVByb21pc2UoKTsKKyAg
ICAgICAgcmVzb2x2ZVNpbmtXcml0ZVByb21pc2UgPSB1bmRlZmluZWQ7CisgICAgICB9KQorICAg
IF0pOworICB9KTsKK30sICdXcml0YWJsZVN0cmVhbSBzaG91bGQgdHJhbnNpdGlvbiB0byB3YWl0
aW5nIHVudGlsIHdyaXRlIGlzIGFja25vd2xlZGdlZCcpOworCitwcm9taXNlX3Rlc3QodCA9PiB7
CisgIGxldCBzaW5rV3JpdGVQcm9taXNlUmVqZWN0b3JzID0gW107CisgIGNvbnN0IHdzID0gbmV3
IFdyaXRhYmxlU3RyZWFtKHsKKyAgICB3cml0ZSgpIHsKKyAgICAgIGNvbnN0IHNpbmtXcml0ZVBy
b21pc2UgPSBuZXcgUHJvbWlzZSgociwgcmVqZWN0KSA9PiBzaW5rV3JpdGVQcm9taXNlUmVqZWN0
b3JzLnB1c2gocmVqZWN0KSk7CisgICAgICByZXR1cm4gc2lua1dyaXRlUHJvbWlzZTsKKyAgICB9
CisgIH0pOworCisgIGNvbnN0IHdyaXRlciA9IHdzLmdldFdyaXRlcigpOworCisgIGFzc2VydF9l
cXVhbHMod3JpdGVyLmRlc2lyZWRTaXplLCAxLCAnZGVzaXJlZFNpemUgc2hvdWxkIGJlIDEnKTsK
KworICByZXR1cm4gd3JpdGVyLnJlYWR5LnRoZW4oKCkgPT4geworICAgIGNvbnN0IHdyaXRlUHJv
bWlzZSA9IHdyaXRlci53cml0ZSgnYScpOworICAgIGFzc2VydF9lcXVhbHMoc2lua1dyaXRlUHJv
bWlzZVJlamVjdG9ycy5sZW5ndGgsIDEsICd0aGVyZSBzaG91bGQgYmUgMSByZWplY3RvcicpOwor
ICAgIGFzc2VydF9lcXVhbHMod3JpdGVyLmRlc2lyZWRTaXplLCAwLCAnZGVzaXJlZFNpemUgc2hv
dWxkIGJlIDAnKTsKKworICAgIGNvbnN0IHdyaXRlUHJvbWlzZTIgPSB3cml0ZXIud3JpdGUoJ2In
KTsKKyAgICBhc3NlcnRfZXF1YWxzKHNpbmtXcml0ZVByb21pc2VSZWplY3RvcnMubGVuZ3RoLCAx
LCAndGhlcmUgc2hvdWxkIGJlIHN0aWxsIDEgcmVqZWN0b3InKTsKKyAgICBhc3NlcnRfZXF1YWxz
KHdyaXRlci5kZXNpcmVkU2l6ZSwgLTEsICdkZXNpcmVkU2l6ZSBzaG91bGQgYmUgLTEnKTsKKwor
ICAgIGNvbnN0IGNsb3NlZFByb21pc2UgPSB3cml0ZXIuY2xvc2UoKTsKKworICAgIGFzc2VydF9l
cXVhbHMod3JpdGVyLmRlc2lyZWRTaXplLCAtMSwgJ2Rlc2lyZWRTaXplIHNob3VsZCBzdGlsbCBi
ZSAtMScpOworCisgICAgcmV0dXJuIFByb21pc2UuYWxsKFsKKyAgICAgIHByb21pc2VfcmVqZWN0
c19leGFjdGx5KHQsIGVycm9yMSwgY2xvc2VkUHJvbWlzZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICdjbG9zZWRQcm9taXNlIHNob3VsZCByZWplY3Qgd2l0aCB0aGUgZXJyb3IgcmV0
dXJuZWQgZnJvbSB0aGUgc2lua1wncyB3cml0ZSBtZXRob2QnKQorICAgICAgICAgIC50aGVuKCgp
ID0+IGFzc2VydF9lcXVhbHMoc2lua1dyaXRlUHJvbWlzZVJlamVjdG9ycy5sZW5ndGgsIDAsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2lua1dyaXRlUHJvbWlzZSBzaG91
bGQgcmVqZWN0IGJlZm9yZSBjbG9zZWRQcm9taXNlJykpLAorICAgICAgcHJvbWlzZV9yZWplY3Rz
X2V4YWN0bHkodCwgZXJyb3IxLCB3cml0ZVByb21pc2UsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnd3JpdGVQcm9taXNlIHNob3VsZCByZWplY3Qgd2l0aCB0aGUgZXJyb3IgcmV0dXJu
ZWQgZnJvbSB0aGUgc2lua1wncyB3cml0ZSBtZXRob2QnKQorICAgICAgICAgIC50aGVuKCgpID0+
IGFzc2VydF9lcXVhbHMoc2lua1dyaXRlUHJvbWlzZVJlamVjdG9ycy5sZW5ndGgsIDAsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2lua1dyaXRlUHJvbWlzZSBzaG91bGQg
cmVqZWN0IGJlZm9yZSB3cml0ZVByb21pc2UnKSksCisgICAgICBwcm9taXNlX3JlamVjdHNfZXhh
Y3RseSh0LCBlcnJvcjEsIHdyaXRlUHJvbWlzZTIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAnd3JpdGVQcm9taXNlMiBzaG91bGQgcmVqZWN0IHdpdGggdGhlIGVycm9yIHJldHVybmVk
IGZyb20gdGhlIHNpbmtcJ3Mgd3JpdGUgbWV0aG9kJykKKyAgICAgICAgICAudGhlbigoKSA9PiBh
c3NlcnRfZXF1YWxzKHNpbmtXcml0ZVByb21pc2VSZWplY3RvcnMubGVuZ3RoLCAwLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NpbmtXcml0ZVByb21pc2Ugc2hvdWxkIHJl
amVjdCBiZWZvcmUgd3JpdGVQcm9taXNlMicpKSwKKyAgICAgIGZsdXNoQXN5bmNFdmVudHMoKS50
aGVuKCgpID0+IHsKKyAgICAgICAgc2lua1dyaXRlUHJvbWlzZVJlamVjdG9yc1swXShlcnJvcjEp
OworICAgICAgICBzaW5rV3JpdGVQcm9taXNlUmVqZWN0b3JzID0gW107CisgICAgICB9KQorICAg
IF0pOworICB9KTsKK30sICd3aGVuIHdyaXRlIHJldHVybnMgYSByZWplY3RlZCBwcm9taXNlLCBx
dWV1ZWQgd3JpdGVzIGFuZCBjbG9zZSBzaG91bGQgYmUgY2xlYXJlZCcpOworCitwcm9taXNlX3Rl
c3QodCA9PiB7CisgIGNvbnN0IHdzID0gbmV3IFdyaXRhYmxlU3RyZWFtKHsKKyAgICB3cml0ZSgp
IHsKKyAgICAgIHRocm93IGVycm9yMTsKKyAgICB9CisgIH0pOworCisgIGNvbnN0IHdyaXRlciA9
IHdzLmdldFdyaXRlcigpOworCisgIHJldHVybiBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBl
cnJvcjEsIHdyaXRlci53cml0ZSgnYScpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJ3dyaXRlKCkgc2hvdWxkIHJlamVjdCB3aXRoIHRoZSBlcnJvciByZXR1cm5lZCBmcm9tIHRo
ZSBzaW5rXCdzIHdyaXRlIG1ldGhvZCcpCisgICAgICAudGhlbigoKSA9PiBwcm9taXNlX3JlamVj
dHNfanModCwgVHlwZUVycm9yLCB3cml0ZXIuY2xvc2UoKSwgJ2Nsb3NlKCkgc2hvdWxkIGJlIHJl
amVjdGVkJykpOworfSwgJ3doZW4gc2lua1wncyB3cml0ZSB0aHJvd3MgYW4gZXJyb3IsIHRoZSBz
dHJlYW0gc2hvdWxkIGJlY29tZSBlcnJvcmVkIGFuZCB0aGUgcHJvbWlzZSBzaG91bGQgcmVqZWN0
Jyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgY29uc3Qgd3MgPSBuZXcgV3JpdGFibGVTdHJl
YW0oeworICAgIHdyaXRlKGNodW5rLCBjb250cm9sbGVyKSB7CisgICAgICBjb250cm9sbGVyLmVy
cm9yKGVycm9yMSk7CisgICAgICB0aHJvdyBlcnJvcjI7CisgICAgfQorICB9KTsKKworICBjb25z
dCB3cml0ZXIgPSB3cy5nZXRXcml0ZXIoKTsKKworICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2V4
YWN0bHkodCwgZXJyb3IyLCB3cml0ZXIud3JpdGUoJ2EnKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICd3cml0ZSgpIHNob3VsZCByZWplY3Qgd2l0aCB0aGUgZXJyb3IgcmV0dXJu
ZWQgZnJvbSB0aGUgc2lua1wncyB3cml0ZSBtZXRob2QgJykKKyAgLnRoZW4oKCkgPT4geworICAg
IHJldHVybiBQcm9taXNlLmFsbChbCisgICAgICBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBl
cnJvcjEsIHdyaXRlci5yZWFkeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd3cml0
ZXIucmVhZHkgbXVzdCByZWplY3Qgd2l0aCB0aGUgZXJyb3IgcGFzc2VkIHRvIHRoZSBjb250cm9s
bGVyJyksCisgICAgICBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0LCBlcnJvcjEsIHdyaXRlci5j
bG9zZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnd3JpdGVyLmNsb3NlZCBtdXN0
IHJlamVjdCB3aXRoIHRoZSBlcnJvciBwYXNzZWQgdG8gdGhlIGNvbnRyb2xsZXInKQorICAgIF0p
OworICB9KTsKK30sICd3cml0ZXIud3JpdGUoKSwgcmVhZHkgYW5kIGNsb3NlZCByZWplY3Qgd2l0
aCB0aGUgZXJyb3IgcGFzc2VkIHRvIGNvbnRyb2xsZXIuZXJyb3IoKSBtYWRlIGJlZm9yZSBzaW5r
LndyaXRlJyArCisgICAgJyByZWplY3Rpb24nKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAg
Y29uc3QgbnVtYmVyT2ZXcml0ZXMgPSAxMDAwOworCisgIGxldCByZXNvbHZlRmlyc3RXcml0ZVBy
b21pc2U7CisgIGxldCB3cml0ZUNvdW50ID0gMDsKKyAgY29uc3Qgd3MgPSBuZXcgV3JpdGFibGVT
dHJlYW0oeworICAgIHdyaXRlKCkgeworICAgICAgKyt3cml0ZUNvdW50OworICAgICAgaWYgKCFy
ZXNvbHZlRmlyc3RXcml0ZVByb21pc2UpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJl
c29sdmUgPT4geworICAgICAgICAgIHJlc29sdmVGaXJzdFdyaXRlUHJvbWlzZSA9IHJlc29sdmU7
CisgICAgICAgIH0pOworICAgICAgfQorICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpOwor
ICAgIH0KKyAgfSk7CisKKyAgY29uc3Qgd3JpdGVyID0gd3MuZ2V0V3JpdGVyKCk7CisgIHJldHVy
biB3cml0ZXIucmVhZHkudGhlbigoKSA9PiB7CisgICAgZm9yIChsZXQgaSA9IDE7IGkgPCBudW1i
ZXJPZldyaXRlczsgKytpKSB7CisgICAgICB3cml0ZXIud3JpdGUoJ2EnKTsKKyAgICB9CisgICAg
Y29uc3Qgd3JpdGVQcm9taXNlID0gd3JpdGVyLndyaXRlKCdhJyk7CisKKyAgICBhc3NlcnRfZXF1
YWxzKHdyaXRlQ291bnQsIDEsICdzaG91bGQgaGF2ZSBjYWxsZWQgc2lua1wncyB3cml0ZSBvbmNl
Jyk7CisKKyAgICByZXNvbHZlRmlyc3RXcml0ZVByb21pc2UoKTsKKworICAgIHJldHVybiB3cml0
ZVByb21pc2UKKyAgICAgICAgLnRoZW4oKCkgPT4KKyAgICAgICAgYXNzZXJ0X2VxdWFscyh3cml0
ZUNvdW50LCBudW1iZXJPZldyaXRlcywgYHNob3VsZCBoYXZlIGNhbGxlZCBzaW5rJ3Mgd3JpdGUg
JHtudW1iZXJPZldyaXRlc30gdGltZXNgKSk7CisgIH0pOworfSwgJ2EgbGFyZ2UgcXVldWUgb2Yg
d3JpdGVzIHNob3VsZCBiZSBwcm9jZXNzZWQgY29tcGxldGVseScpOworCitwcm9taXNlX3Rlc3Qo
KCkgPT4geworICBjb25zdCBzdHJlYW0gPSByZWNvcmRpbmdXcml0YWJsZVN0cmVhbSgpOworICBj
b25zdCB3ID0gc3RyZWFtLmdldFdyaXRlcigpOworICBjb25zdCBXcml0YWJsZVN0cmVhbURlZmF1
bHRXcml0ZXIgPSB3LmNvbnN0cnVjdG9yOworICB3LnJlbGVhc2VMb2NrKCk7CisgIGNvbnN0IHdy
aXRlciA9IG5ldyBXcml0YWJsZVN0cmVhbURlZmF1bHRXcml0ZXIoc3RyZWFtKTsKKyAgcmV0dXJu
IHdyaXRlci5yZWFkeS50aGVuKCgpID0+IHsKKyAgICB3cml0ZXIud3JpdGUoJ2EnKTsKKyAgICBh
c3NlcnRfYXJyYXlfZXF1YWxzKHN0cmVhbS5ldmVudHMsIFsnd3JpdGUnLCAnYSddLCAnd3JpdGUo
KSBzaG91bGQgYmUgcGFzc2VkIHRvIHNpbmsnKTsKKyAgfSk7Cit9LCAnV3JpdGFibGVTdHJlYW1E
ZWZhdWx0V3JpdGVyIHNob3VsZCB3b3JrIHdoZW4gbWFudWFsbHkgY29uc3RydWN0ZWQnKTsKKwor
cHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgbGV0IHRoZW5DYWxsZWQgPSBmYWxzZTsKKyAgY29uc3Qg
d3MgPSBuZXcgV3JpdGFibGVTdHJlYW0oeworICAgIHdyaXRlKCkgeworICAgICAgcmV0dXJuIHsK
KyAgICAgICAgdGhlbihvbkZ1bGZpbGxlZCkgeworICAgICAgICAgIHRoZW5DYWxsZWQgPSB0cnVl
OworICAgICAgICAgIG9uRnVsZmlsbGVkKCk7CisgICAgICAgIH0KKyAgICAgIH07CisgICAgfQor
ICB9KTsKKyAgcmV0dXJuIHdzLmdldFdyaXRlcigpLndyaXRlKCdhJykudGhlbigoKSA9PiBhc3Nl
cnRfdHJ1ZSh0aGVuQ2FsbGVkLCAndGhlbkNhbGxlZCBzaG91bGQgYmUgdHJ1ZScpKTsKK30sICdy
ZXR1cm5pbmcgYSB0aGVuYWJsZSBmcm9tIHdyaXRlKCkgc2hvdWxkIHdvcmsnKTsKKworcHJvbWlz
ZV90ZXN0KCgpID0+IHsKKyAgY29uc3Qgc3RyZWFtID0gbmV3IFdyaXRhYmxlU3RyZWFtKCk7Cisg
IGNvbnN0IHdyaXRlciA9IHN0cmVhbS5nZXRXcml0ZXIoKTsKKyAgY29uc3QgV3JpdGFibGVTdHJl
YW1EZWZhdWx0V3JpdGVyID0gd3JpdGVyLmNvbnN0cnVjdG9yOworICBhc3NlcnRfdGhyb3dzX2pz
KFR5cGVFcnJvciwgKCkgPT4gbmV3IFdyaXRhYmxlU3RyZWFtRGVmYXVsdFdyaXRlcihzdHJlYW0p
LAorICAgICAgICAgICAgICAgICAgICdzaG91bGQgbm90IGJlIGFibGUgdG8gY29uc3RydWN0IG9u
IGxvY2tlZCBzdHJlYW0nKTsKKyAgLy8gSWYgc3RyZWFtLltbd3JpdGVyXV0gbm8gbG9uZ2VyIHBv
aW50cyB0byB8d3JpdGVyfCB0aGVuIHRoZSBjbG9zZWQgUHJvbWlzZQorICAvLyB3b24ndCB3b3Jr
IHByb3Blcmx5LgorICByZXR1cm4gUHJvbWlzZS5hbGwoW3dyaXRlci5jbG9zZSgpLCB3cml0ZXIu
Y2xvc2VkXSk7Cit9LCAnZmFpbGluZyBEZWZhdWx0V3JpdGVyIGNvbnN0cnVjdG9yIHNob3VsZCBu
b3QgcmVsZWFzZSBhbiBleGlzdGluZyB3cml0ZXInKTsKKworcHJvbWlzZV90ZXN0KHQgPT4gewor
ICBjb25zdCB3cyA9IG5ldyBXcml0YWJsZVN0cmVhbSh7CisgICAgc3RhcnQoKSB7CisgICAgICBy
ZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyb3IxKTsKKyAgICB9CisgIH0sIHsgaGlnaFdhdGVyTWFy
azogMCB9KTsKKyAgY29uc3Qgd3JpdGVyID0gd3MuZ2V0V3JpdGVyKCk7CisgIHJldHVybiBQcm9t
aXNlLmFsbChbCisgICAgcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodCwgZXJyb3IxLCB3cml0ZXIu
cmVhZHksICdyZWFkeSBzaG91bGQgYmUgcmVqZWN0ZWQnKSwKKyAgICBwcm9taXNlX3JlamVjdHNf
ZXhhY3RseSh0LCBlcnJvcjEsIHdyaXRlci53cml0ZSgpLCAnd3JpdGUoKSBzaG91bGQgYmUgcmVq
ZWN0ZWQnKQorICBdKTsKK30sICd3cml0ZSgpIG9uIGEgc3RyZWFtIHdpdGggSFdNIDAgc2hvdWxk
IG5vdCBjYXVzZSB0aGUgcmVhZHkgUHJvbWlzZSB0byByZXNvbHZlJyk7CisKK3Byb21pc2VfdGVz
dCh0ID0+IHsKKyAgY29uc3Qgd3MgPSBuZXcgV3JpdGFibGVTdHJlYW0oKTsKKyAgY29uc3Qgd3Jp
dGVyID0gd3MuZ2V0V3JpdGVyKCk7CisgIHdyaXRlci5yZWxlYXNlTG9jaygpOworICByZXR1cm4g
cHJvbWlzZV9yZWplY3RzX2pzKHQsIFR5cGVFcnJvciwgd3JpdGVyLndyaXRlKCksICd3cml0ZSBz
aG91bGQgcmVqZWN0Jyk7Cit9LCAnd3JpdGluZyB0byBhIHJlbGVhc2VkIHdyaXRlciBzaG91bGQg
cmVqZWN0IHRoZSByZXR1cm5lZCBwcm9taXNlJyk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy93
cml0ZS5hbnkud29ya2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL3dyaXRlLmFueS53b3Jr
ZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlkMzAwNzI0MWVjMzIxZWZhNDgwZjdiZDZlYWNi
NWM1NzBhMDgwMmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy93cml0ZS5hbnkud29y
a2VyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE1IEBACisKK0ZBSUwgV3JpdGFibGVTdHJlYW0g
c2hvdWxkIGNvbXBsZXRlIGFzeW5jaHJvbm91cyB3cml0ZXMgYmVmb3JlIGNsb3NlIHJlc29sdmVz
IENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIFdyaXRhYmxlU3RyZWFt
IHNob3VsZCBjb21wbGV0ZSBzeW5jaHJvbm91cyB3cml0ZXMgYmVmb3JlIGNsb3NlIHJlc29sdmVz
IENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIGZ1bGZpbGxtZW50IHZh
bHVlIG9mIHdzLndyaXRlKCkgY2FsbCBzaG91bGQgYmUgdW5kZWZpbmVkIGV2ZW4gaWYgdGhlIHVu
ZGVybHlpbmcgc2luayByZXR1cm5zIGEgbm9uLXVuZGVmaW5lZCB2YWx1ZSBDYW4ndCBmaW5kIHZh
cmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBXcml0YWJsZVN0cmVhbSBzaG91bGQgdHJhbnNp
dGlvbiB0byB3YWl0aW5nIHVudGlsIHdyaXRlIGlzIGFja25vd2xlZGdlZCBDYW4ndCBmaW5kIHZh
cmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCB3aGVuIHdyaXRlIHJldHVybnMgYSByZWplY3Rl
ZCBwcm9taXNlLCBxdWV1ZWQgd3JpdGVzIGFuZCBjbG9zZSBzaG91bGQgYmUgY2xlYXJlZCBDYW4n
dCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCB3aGVuIHNpbmsncyB3cml0ZSB0
aHJvd3MgYW4gZXJyb3IsIHRoZSBzdHJlYW0gc2hvdWxkIGJlY29tZSBlcnJvcmVkIGFuZCB0aGUg
cHJvbWlzZSBzaG91bGQgcmVqZWN0IENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFt
CitGQUlMIHdyaXRlci53cml0ZSgpLCByZWFkeSBhbmQgY2xvc2VkIHJlamVjdCB3aXRoIHRoZSBl
cnJvciBwYXNzZWQgdG8gY29udHJvbGxlci5lcnJvcigpIG1hZGUgYmVmb3JlIHNpbmsud3JpdGUg
cmVqZWN0aW9uIENhbid0IGZpbmQgdmFyaWFibGU6IFdyaXRhYmxlU3RyZWFtCitGQUlMIGEgbGFy
Z2UgcXVldWUgb2Ygd3JpdGVzIHNob3VsZCBiZSBwcm9jZXNzZWQgY29tcGxldGVseSBDYW4ndCBm
aW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCBXcml0YWJsZVN0cmVhbURlZmF1bHRX
cml0ZXIgc2hvdWxkIHdvcmsgd2hlbiBtYW51YWxseSBjb25zdHJ1Y3RlZCBDYW4ndCBmaW5kIHZh
cmlhYmxlOiBXcml0YWJsZVN0cmVhbQorRkFJTCByZXR1cm5pbmcgYSB0aGVuYWJsZSBmcm9tIHdy
aXRlKCkgc2hvdWxkIHdvcmsgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZB
SUwgZmFpbGluZyBEZWZhdWx0V3JpdGVyIGNvbnN0cnVjdG9yIHNob3VsZCBub3QgcmVsZWFzZSBh
biBleGlzdGluZyB3cml0ZXIgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KK0ZB
SUwgd3JpdGUoKSBvbiBhIHN0cmVhbSB3aXRoIEhXTSAwIHNob3VsZCBub3QgY2F1c2UgdGhlIHJl
YWR5IFByb21pc2UgdG8gcmVzb2x2ZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBXcml0YWJsZVN0cmVh
bQorRkFJTCB3cml0aW5nIHRvIGEgcmVsZWFzZWQgd3JpdGVyIHNob3VsZCByZWplY3QgdGhlIHJl
dHVybmVkIHByb21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogV3JpdGFibGVTdHJlYW0KKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJl
YW1zL3dyaXRhYmxlLXN0cmVhbXMvd3JpdGUuYW55Lndvcmtlci5odG1sIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMv
d3JpdGUuYW55Lndvcmtlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzODI5MTM1MjhlNjkzYjNhNWQ1NmM2
NjBhNDUwNjA5ODBiNTQ4YzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy93cml0ZS5h
bnkud29ya2VyLmh0bWwKQEAgLTAsMCArMSBAQAorPCEtLSBUaGlzIGZpbGUgaXMgcmVxdWlyZWQg
Zm9yIFdlYktpdCB0ZXN0IGluZnJhc3RydWN0dXJlIHRvIHJ1biB0aGUgdGVtcGxhdGVkIHRlc3Qg
LS0+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsv
VGVzdEV4cGVjdGF0aW9ucwppbmRleCBlYTJhM2UyMTk2YWFjMDcyOTZiZGIxZmJkNmE4OWY0ZjUx
ODM2ZjAxLi5lMjE3NWQwMDJjYWY4MDU4ZGRhYjZlMmNkZmU3ZTkyNzAzYTcxMzdmIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTYwOCw3ICsxNjA4LDYg
QEAgd2Via2l0Lm9yZy9iLzE4NjYzOCBlZGl0aW5nL2V4ZWNDb21tYW5kL3ByaW50Lmh0bWwgWyBD
cmFzaCBdCiB3ZWJraXQub3JnL2IvMTg2NjM4IGVkaXRpbmcvc2VsZWN0aW9uL3NlbGVjdC1iaWRp
LXJ1bi5odG1sIFsgVGltZW91dCBQYXNzIF0KIHdlYmtpdC5vcmcvYi8xODY2MzggZmFzdC9tZWRp
YS9wcmludC1yZXN0b3Jlcy1wcmV2aW91cy1tZWRpYXR5cGUuaHRtbCBbIENyYXNoIF0KIHdlYmtp
dC5vcmcvYi8xODY2MzggZmFzdC9zZWxlY3RvcnMvdW5xdWFsaWZpZWQtaG92ZXItc3RyaWN0Lmh0
bWwgWyBGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8xODY2MzggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9lcnJvci1wcm9wYWdhdGlvbi1mb3J3YXJkLmh0bWwg
WyBGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xODY2MzggbWVkaWEvdmlkZW8tcmVtb3RlLWNvbnRy
b2wtcGxheXBhdXNlLmh0bWwgWyBGYWlsdXJlIFRpbWVvdXQgUGFzcyBdCiB3ZWJraXQub3JnL2Iv
MTg2NjM4IHByaW50aW5nL3ByaW50LWNsb3NlLWNyYXNoLmh0bWwgWyBDcmFzaCBdCiB3ZWJraXQu
b3JnL2IvMTc3OTQwIHdlYmtpdC5vcmcvYi8xODY2Mzggd29ya2Vycy93YXNtLWhhc2hzZXQtbWFu
eS5odG1sIFsgQ3Jhc2ggVGltZW91dCBQYXNzIF0KQEAgLTMzMDcsNyArMzMwNiw2IEBAIHdlYmtp
dC5vcmcvYi8xODQ1MDQgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkv
cmVxdWVzdC9yZXF1ZXN0LWtlCiB3ZWJraXQub3JnL2IvMTgwNjQ1IGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZm9ybXMvdGhlLWlucHV0LWVsZW1lbnQvdHlw
ZS1jaGFuZ2Utc3RhdGUuaHRtbCBbIEZhaWx1cmUgXQogCiB3ZWJraXQub3JnL2IvMTg0Nzc2IGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZm9ybXMvdGV4dGZp
ZWxkc2VsZWN0aW9uL3NlbGVjdGlvbi1ub3QtYXBwbGljYXRpb24uaHRtbCBbIEZhaWx1cmUgXQot
d2Via2l0Lm9yZy9iLzE4NDc3NiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvcmVhZGFibGUtYnl0ZS1zdHJlYW1zL2dlbmVyYWwuaHRtbCBbIEZhaWx1cmUgXQogCiB3ZWJr
aXQub3JnL2IvMTg1MjU0IGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvb25sb2FkZW5kLWV2ZW50
LWFmdGVyLWVycm9yLmh0bWwgWyBGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xODUyNTQgaHR0cC90
ZXN0cy94bWxodHRwcmVxdWVzdC9yZXNwb25zZS1hY2Nlc3Mtb24tZXJyb3IuaHRtbCBbIEZhaWx1
cmUgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXdrMi9UZXN0RXhwZWN0
YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXdrMi9UZXN0RXhwZWN0YXRpb25zCmlu
ZGV4IGNkNjEyOTY2YmVkOTdmZjNmYzgzMGQ0Y2NhN2Q5MWRmZTQzMTk1NzAuLjU5MzZiM2ZmMjRh
MGI0NGRhNjg4YjEwMjlkOGY4NDI5MmVkY2FiNzUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2lvcy13azIvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9pb3Mtd2syL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTExNjUsOCArMTE2NSw2IEBAIHdlYmtpdC5v
cmcvYi8xNzE4MzAgWyBEZWJ1ZyBdIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd29y
a2Vycy9jbG9zZS5odG1sCiAKIHdlYmtpdC5vcmcvYi8xNjk2MzcgaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy94aHIvdGltZW91dC1tdWx0aXBsZS1mZXRjaGVzLmh0bWwgWyBQYXNzIEZh
aWx1cmUgXQogCi13ZWJraXQub3JnL2IvMTcxODg2IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbXMvZ2VuZXJhbC5odG1sIFsgUGFzcyBG
YWlsdXJlIF0KLQogd2Via2l0Lm9yZy9iLzE3MTk1NyBmYXN0L2FuaW1hdGlvbi9yZXF1ZXN0LWFu
aW1hdGlvbi1mcmFtZS10aW1lLXVuaXQuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKIHdlYmtpdC5v
cmcvYi8xNzI0NTQgaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3N0YXRpc3RpY3MuaHRtbCBbIFBhc3Mg
RmFpbHVyZSBdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvVGVzdEV4cGVj
dGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zCmluZGV4
IDc5OThiOTdhODk1MDYxYTE1ZjljZDEyZGE4MDZjNWY3ZGYyYmU5Y2IuLjYzZjZkMzE0OGIyNmZl
MTUzN2U2ZGY2ZWY4OGYyMTNkYzdjZDk0YjUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9U
ZXN0RXhwZWN0YXRpb25zCkBAIC0zMDc5LDggKzMwNzksNiBAQCB3ZWJraXQub3JnL2IvMTg4NTc4
IHN2Zy9jdXN0b20vc2Nyb2xsaW5nLWVtYmVkZGVkLXN2Zy1maWxlLWltYWdlLXJlcGFpbnQtcHJv
YmxlbQogCiB3ZWJraXQub3JnL2IvMTI4MzEyIG1lZGlhL3ZpZGVvLWxvYWQtcHJlbG9hZC1tZXRh
ZGF0YS5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAotd2Via2l0Lm9yZy9iLzE4ODA3MCBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcGlwaW5nL2Vycm9yLXByb3BhZ2F0aW9u
LWJhY2t3YXJkLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQotCiB3ZWJraXQub3JnL2IvMTg5NzI2IGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29y
a2VyL2ZldGNoLW1peGVkLWNvbnRlbnQtdG8taW5zY29wZS5odHRwcy5odG1sIFsgUGFzcyBGYWls
dXJlIF0KIHdlYmtpdC5vcmcvYi8xODk3MjYgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvZmV0Y2gtbWl4ZWQtY29udGVudC10by1v
dXRzY29wZS5odHRwcy5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIApAQCAtMzQ3Myw0ICszNDcxLDQg
QEAgd2Via2l0Lm9yZy9iLzIxMjU2NSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Vu
Y29kaW5nL3NpbmdsZS1ieXRlLWRlY29kZXIKIAogZmFzdC90ZXh0L3RleHQtc3R5bGVzLy1hcHBs
ZS1zeXN0ZW0gWyBQYXNzIF0KIAotd2Via2l0Lm9yZy9iLzIxNDE1NSBbIERlYnVnIF0gaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xp
Y3kvYmxvYi5odHRwcy5odG1sIFsgUGFzcyBGYWlsdXJlIF0KXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCit3ZWJraXQub3JnL2IvMjE0MTU1IFsgRGVidWcgXSBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2luLWVtYmVkZGVyLXBvbGljeS9ibG9iLmh0dHBz
Lmh0bWwgWyBQYXNzIEZhaWx1cmUgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9U
ZXN0RXhwZWN0YXRpb25zCmluZGV4IGQ0YzY3YWZjOWI2N2M0YTczMjkyYzA1MzliM2NmNjllZGUz
NzlmMDAuLmFmZDI1OWFhN2U0YjQ5ZGEyMzRhNzI2NTA5NDM3ZjYwMjYwNGNjYjAgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucworKysgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTMyMyw3ICsz
MjMsNiBAQCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2lu
LWVtYmVkZGVyLXBvbGljeS9yZXF1aXJlLWNvcnAtcwogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kvc2VydmljZS13b3JrZXIt
Y2FjaGUtc3RvcmFnZS5odHRwcy5odG1sIFsgU2tpcCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3NlcnZlci10aW1pbmcvc2VydmljZV93b3JrZXJfaWRsLmh0bWwgWyBTa2lwIF0K
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzIFsgU2tpcCBd
Ci1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1z
dHJlYW1zL2RldGFjaGVkLWJ1ZmZlcnMuc2VydmljZXdvcmtlci5odHRwcy5odG1sIFsgU2tpcCBd
CiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2luZnJhc3RydWN0dXJlL3NlcnZlci9j
b250ZXh0LmFueS5zZXJ2aWNld29ya2VyLmh0bWwgWyBTa2lwIF0KIGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvaW5mcmFzdHJ1Y3R1cmUvc2VydmVyL3NlY3VyZS1jb250ZXh0Lmh0dHBz
LmFueS5zZXJ2aWNld29ya2VyLmh0bWwgWyBTa2lwIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvSW5kZXhlZERCL2tleS1nZW5lcmF0b3JzL3JlYWRpbmctYXV0b2luY3JlbWVudC1p
bmRleGVzLWN1cnNvcnMuYW55LnNlcnZpY2V3b3JrZXIuaHRtbCBbIFNraXAgXQpAQCAtNjU5LDgg
KzY1OCw2IEBAIHdlYmtpdC5vcmcvYi8xNzQxODAgc3ZnL2FuaW1hdGlvbnMvc21pbC1sZWFrLWVs
ZW1lbnRzLnN2ZyBbIFBhc3MgRmFpbHVyZSBdCiAKIHdlYmtpdC5vcmcvYi8xNzU4Njcgc3ZnL2Fu
aW1hdGlvbnMvc21pbC1sZWFrLWR5bmFtaWNhbGx5LWFkZGVkLWVsZW1lbnQtaW5zdGFuY2VzLnN2
ZyBbIFBhc3MgRmFpbHVyZSBdCiAKLXdlYmtpdC5vcmcvYi8xNzY5MjAgaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3BpcGluZy9lcnJvci1wcm9wYWdhdGlvbi1mb3J3YXJk
LmRlZGljYXRlZHdvcmtlci5odG1sIFsgUGFzcyBUaW1lb3V0IF0KLQogd2Via2l0Lm9yZy9iLzE3
NTg4NiBzdmcvYW5pbWF0aW9ucy9zbWlsLWxlYWstZWxlbWVudC1pbnN0YW5jZXMuc3ZnIFsgUGFz
cyBGYWlsdXJlIF0KIAogIyA8cmRhcjovL3Byb2JsZW0vMjkyMDE2OTg+IER1bXBSZW5kZXJUcmVl
IGNyYXNoZWQgaW4gY29tLmFwcGxlLkNvcmVHcmFwaGljczogQ0dEYXRhUHJvdmlkZXJDb3B5RGF0
YSArIDM3NwpAQCAtNzY4LDggKzc2NSw2IEBAIHdlYmtpdC5vcmcvYi8xODkwODcgc3ZnL2FuaW1h
dGlvbnMvYW5pbWF0ZS1lbmQtYXR0cmlidXRlLW51bWVyaWMtcHJlY2lzaW9uLmh0bWwKIAogd2Vi
a2l0Lm9yZy9iLzE4OTU5NCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mt
YW5pbWF0aW9ucy9wZW5kaW5nLXN0eWxlLWNoYW5nZXMtMDAxLmh0bWwgWyBQYXNzIEZhaWx1cmUg
XQogCi13ZWJraXQub3JnL2IvMTg4MDcwIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy9waXBpbmcvZXJyb3ItcHJvcGFnYXRpb24tYmFja3dhcmQuaHRtbCBbIFBhc3MgRmFp
bHVyZSBdCi0KICMgVGVzdHMgZm9yIHNtb290aCBzY3JvbGwgYmVoYXZpb3IgZG8gbm90IGFsbCB3
b3JrIGFuZCB0aGV5IGFyZSBzbG93LCBzbyBsZXQncyBqdXN0IHNraXAgdGhlbS4KIHdlYmtpdC5v
cmcvYi8xOTEzNTcgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nzb20tdmll
dy9zY3JvbGwtYmVoYXZpb3ItbWFpbi1mcmFtZS1yb290Lmh0bWwgWyBTa2lwIF0KIHdlYmtpdC5v
cmcvYi8xOTEzNTcgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nzb20tdmll
dy9zY3JvbGwtYmVoYXZpb3ItbWFpbi1mcmFtZS13aW5kb3cuaHRtbCBbIFNraXAgXQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGFkOTY5NTIz
ZDVkZjcyMDg5N2Q1MzU2Yjk5MzRjNjQ1OTM5N2NhZWEuLmJjODU3YTU0ZDc0YmMxMDZiNmNjMTI3
Nzg4Y2IwM2ZhZGQ2Y2QwOTUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13
azIvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rl
c3RFeHBlY3RhdGlvbnMKQEAgLTU5NCw4ICs1OTQsNiBAQCB3ZWJraXQub3JnL2IvMTY4MjM1IFsg
RGVidWcgXSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL3Rl
eAogCiB3ZWJraXQub3JnL2IvMTY4MDg1IHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL2xhdGNoZWQt
dG8tZGVsZXRlZC1ub2RlLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCi13ZWJraXQub3JnL2IvMTY4
MzM2IFsgRGVidWcgXSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVh
ZGFibGUtc3RyZWFtcy9nYXJiYWdlLWNvbGxlY3Rpb24uaHRtbCBbIFBhc3MgVGltZW91dCBdCi0K
ICMgU2tpcHBlZCBiZWNhdXNlIE1hYyBkb2Vzbid0IGhhdmUgYSBrZXkgdG8gc2hvdyB0aGUgY29u
dGV4dCBtZW51CiBmYXN0L2V2ZW50cy9jb250ZXh0LWFjdGl2YXRlZC1ieS1rZXktZXZlbnQuaHRt
bCBbIFNraXAgXQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4
cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zCmlu
ZGV4IDk0YTZiMjNjZWZhYzJiZGM1OTc1YTc5MzI5OTJiZDM4MGZhYzRjZWUuLjIxNWNiMDMyY2Y1
NmU4YzA4NThiNGYwODdlZTU5NDFiYjJkMTIxYTggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy9UZXN0RXhwZWN0YXRpb25zCkBAIC0xMjcxLDggKzEyNzEsNiBAQCB3ZWJraXQub3JnL2IvMTcx
NDY1IG1lZGlhL3RyYWNrL3RyYWNrLWluLWJhbmQtc3R5bGUuaHRtbCBbIFBhc3MgVGltZW91dCBd
CiAKIHdlYmtpdC5vcmcvYi8xNzE3NjAgaW1wb3J0ZWQvdzNjL2kxOG4vYmlkaS9iaWRpLXBsYWlu
dGV4dC0wMTEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogCi13ZWJraXQub3JnL2IvMTcxODg2
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0
cmVhbXMvZ2VuZXJhbC5odG1sIFsgUGFzcyBGYWlsdXJlIF0KLQogIyBUaGVzZSB0ZXN0cyBhcmUg
aU9TLXNwZWNpZmljCiBtZWRpYS9tb2Rlcm4tbWVkaWEtY29udHJvbHMvYXVkaW8vYXVkaW8tY29u
dHJvbHMtc3R5bGVzLmh0bWwgWyBTa2lwIF0KIG1lZGlhL21vZGVybi1tZWRpYS1jb250cm9scy9p
b3MtaW5saW5lLW1lZGlhLWNvbnRyb2xzIFsgU2tpcCBdCkBAIC0xOTAwLDQgKzE4OTgsNCBAQCB3
ZWJraXQub3JnL2IvMjEyNTY1IFsgQ2F0YWxpbmEgTW9qYXZlIF0gaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9lbmNvZGluZwogCiBmYXN0L3RleHQvdGV4dC1zdHlsZXMvLWFwcGxlLXN5
c3RlbSBbIFBhc3MgXQogCi13ZWJraXQub3JnL2IvMjE0MTU1IGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRkZXItcG9saWN5L2Jsb2IuaHR0cHMu
aHRtbCBbIFBhc3MgRmFpbHVyZSBdClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQord2Via2l0
Lm9yZy9iLzIxNDE1NSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY3Jvc3Mt
b3JpZ2luLWVtYmVkZGVyLXBvbGljeS9ibG9iLmh0dHBzLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd3BlL1Rlc3RFeHBlY3RhdGlvbnMgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS93cGUvVGVzdEV4cGVjdGF0aW9ucwppbmRleCAyYzFhMWIxMDgz
NWUxZGEzMDhiYzQ1MGVkYWY5MjJlMTAyZmQ0MGJjLi4zNTkyYjNlNDI4ODFhZmFhNTU0YTFjZjdk
ZTA0MGUxZWUwNzdjNmM1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93cGUvVGVz
dEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93cGUvVGVzdEV4cGVjdGF0
aW9ucwpAQCAtOTQ1LDcgKzk0NSw2IEBAIHdlYmtpdC5vcmcvYi8xMjk3NTgganMvZG9tL2NyZWF0
ZS1sb3RzLW9mLXdvcmtlcnMuaHRtbCBbIFRpbWVvdXQgUGFzcyBdCiAKIHdlYmtpdC5vcmcvYi8x
Nzc1MzAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy94aHIvc2V0cmVxdWVzdGhlYWRl
ci1oZWFkZXItYWxsb3dlZC5odG0gWyBQYXNzIEZhaWx1cmUgXQogCi13ZWJraXQub3JnL2IvMTc1
NDE5IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRl
LXN0cmVhbXMvZGV0YWNoZWQtYnVmZmVycy5zZXJ2aWNld29ya2VyLmh0dHBzLmh0bWwgWyBQYXNz
IEZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzE3NTQxOSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2ZldGNoL2FwaS9hYm9ydC9zZXJ2aWNld29ya2VyLWludGVyY2VwdGVkLmh0dHBzLmh0
bWwgWyBGYWlsdXJlIFBhc3MgXQogd2Via2l0Lm9yZy9iLzE3NTQxOSBodHRwL3dwdC9zZXJ2aWNl
LXdvcmtlcnMvc2VydmljZS13b3JrZXItbmV0d29ya3Byb2Nlc3MtY3Jhc2guaHRtbCBbIFBhc3Mg
RmFpbHVyZSBUaW1lb3V0IF0KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>