<?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>169980</bug_id>
          
          <creation_ts>2017-03-22 17:10:30 -0700</creation_ts>
          <short_desc>/api/uploaded-file should return createdAt as a POSIX timestamp</short_desc>
          <delta_ts>2017-03-22 17:27:03 -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>Perf Dashboard</component>
          <version>Other</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>cdumez</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1290265</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-03-22 17:10:30 -0700</bug_when>
    <thetext>We&apos;re missing a call to Database::to_js_time in format_uploaded_file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1290269</commentid>
    <comment_count>1</comment_count>
      <attachid>305141</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-03-22 17:18:46 -0700</bug_when>
    <thetext>Created attachment 305141
Fixes the bug</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1290271</commentid>
    <comment_count>2</comment_count>
      <attachid>305141</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2017-03-22 17:20:03 -0700</bug_when>
    <thetext>Comment on attachment 305141
Fixes the bug

rs=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1290272</commentid>
    <comment_count>3</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-03-22 17:27:03 -0700</bug_when>
    <thetext>Committed r214287: &lt;http://trac.webkit.org/changeset/214287&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>305141</attachid>
            <date>2017-03-22 17:18:46 -0700</date>
            <delta_ts>2017-03-22 17:20:03 -0700</delta_ts>
            <desc>Fixes the bug</desc>
            <filename>bug-169980-20170322171845.patch</filename>
            <type>text/plain</type>
            <size>72481</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE0MjgyCmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvQ2hhbmdlTG9nIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwpp
bmRleCBhOGJlZGZmZjQ3YjI1MWJmOTU4YmEwODRmZGYxZmFhOGViM2E0ZWQxLi5lODMxMDFmZjc5
ZTQ0YmQ4ZjRkZTc3YzkwZjRjNDkxY2Q4MTY5YWI3IDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvQ2hhbmdlTG9nCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9DaGFu
Z2VMb2cKQEAgLTEsNSArMSwxOSBAQAogMjAxNy0wMy0yMiAgUnlvc3VrZSBOaXdhICA8cm5pd2FA
d2Via2l0Lm9yZz4KIAorICAgICAgICAvYXBpL3VwbG9hZGVkLWZpbGUgc2hvdWxkIHJldHVybiBj
cmVhdGVkQXQgYXMgYSBQT1NJWCB0aW1lc3RhbXAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTk4MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIENhbGwgRGF0YWJhc2U6OnRvX2pzX3RpbWUgb24gY3JlYXRl
ZEF0IHRvIHJldHVybiBpdCBhcyBhIFBPU0lYIHRpbWVzdGFtcC4KKworICAgICAgICAqIHB1Ymxp
Yy9pbmNsdWRlL3VwbG9hZGVkLWZpbGUtaGVscGVycy5waHA6CisgICAgICAgIChmb3JtYXRfdXBs
b2FkZWRfZmlsZSk6IEZpeGVkIHRoZSBidWcuCisgICAgICAgICogc2VydmVyLXRlc3RzL2FwaS1t
YW5pZmVzdC10ZXN0cy5qczogUmVuYW1lZCBmcm9tIGFwaS1tYW5pZmVzdC5qcy4KKyAgICAgICAg
KiBzZXJ2ZXItdGVzdHMvYXBpLXVwbG9hZGVkLWZpbGUtdGVzdHMuanM6IFJlbmFtZWQgZnJvbSBh
cGktdXBsb2FkZWQtZmlsZS5qcy4gQWRkZWQgYSB0ZXN0IGNhc2UuCisKKzIwMTctMDMtMjIgIFJ5
b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKICAgICAgICAgVXBsb2FkZWRGaWxlIHNo
b3VsZCBzdXBwb3J0IGEgY2FsbGJhY2sgZm9yIHVwbG9hZCBwcm9ncmVzcwogICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5OTc3CiAKZGlmZiAtLWdpdCBh
L1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvaW5jbHVkZS91cGxvYWRlZC1maWxlLWhl
bHBlcnMucGhwIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9pbmNsdWRlL3VwbG9h
ZGVkLWZpbGUtaGVscGVycy5waHAKaW5kZXggNTFiNmM1N2Q0NGUxMjI2ZmIyNzcxMDdmYWRhZjM5
MzcyZDhkMmVhMy4uMjRmNGNhNTgyNDNiNTk5MzRlMzk3MDg4YzBjZjU0ZmQ1ZGYyMDBlOCAxMDA2
NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9pbmNsdWRlL3VwbG9hZGVk
LWZpbGUtaGVscGVycy5waHAKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9p
bmNsdWRlL3VwbG9hZGVkLWZpbGUtaGVscGVycy5waHAKQEAgLTUsNyArNSw3IEBAIGZ1bmN0aW9u
IGZvcm1hdF91cGxvYWRlZF9maWxlKCRmaWxlX3JvdykKICAgICByZXR1cm4gYXJyYXkoCiAgICAg
ICAgICdpZCcgPT4gJGZpbGVfcm93WydmaWxlX2lkJ10sCiAgICAgICAgICdzaXplJyA9PiAkZmls
ZV9yb3dbJ2ZpbGVfc2l6ZSddLAotICAgICAgICAnY3JlYXRlZEF0JyA9PiAkZmlsZV9yb3dbJ2Zp
bGVfY3JlYXRlZF9hdCddLAorICAgICAgICAnY3JlYXRlZEF0JyA9PiBEYXRhYmFzZTo6dG9fanNf
dGltZSgkZmlsZV9yb3dbJ2ZpbGVfY3JlYXRlZF9hdCddKSwKICAgICAgICAgJ21pbWUnID0+ICRm
aWxlX3Jvd1snZmlsZV9taW1lJ10sCiAgICAgICAgICdmaWxlbmFtZScgPT4gJGZpbGVfcm93Wydm
aWxlX2ZpbGVuYW1lJ10sCiAgICAgICAgICdhdXRob3InID0+ICRmaWxlX3Jvd1snZmlsZV9hdXRo
b3InXSwKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMv
YXBpLW1hbmlmZXN0LXRlc3RzLmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10
ZXN0cy9hcGktbWFuaWZlc3QtdGVzdHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODMzODM1YzBiNDhkNGVhMTdj
YTcyNmI4ZjA2ZDA2Y2M1OWQzOGI5YQotLS0gL2Rldi9udWxsCisrKyBiL1dlYnNpdGVzL3BlcmYu
d2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvYXBpLW1hbmlmZXN0LXRlc3RzLmpzCkBAIC0wLDAgKzEs
MzQwIEBACisndXNlIHN0cmljdCc7CisKK2NvbnN0IGFzc2VydCA9IHJlcXVpcmUoJ2Fzc2VydCcp
OworCityZXF1aXJlKCcuLi90b29scy9qcy92My1tb2RlbHMuanMnKTsKKworY29uc3QgTW9ja0Rh
dGEgPSByZXF1aXJlKCcuL3Jlc291cmNlcy9tb2NrLWRhdGEuanMnKTsKK2NvbnN0IFRlc3RTZXJ2
ZXIgPSByZXF1aXJlKCcuL3Jlc291cmNlcy90ZXN0LXNlcnZlci5qcycpOworY29uc3QgcHJlcGFy
ZVNlcnZlclRlc3QgPSByZXF1aXJlKCcuL3Jlc291cmNlcy9jb21tb24tb3BlcmF0aW9ucy5qcycp
LnByZXBhcmVTZXJ2ZXJUZXN0OworCitkZXNjcmliZSgnL2FwaS9tYW5pZmVzdCcsIGZ1bmN0aW9u
ICgpIHsKKyAgICBwcmVwYXJlU2VydmVyVGVzdCh0aGlzKTsKKworICAgIGl0KCJzaG91bGQgZ2Vu
ZXJhdGUgYW4gZW1wdHkgbWFuaWZlc3Qgd2hlbiBkYXRhYmFzZSBpcyBlbXB0eSIsICgpID0+IHsK
KyAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkuZ2V0SlNPTignL2FwaS9tYW5p
ZmVzdCcpLnRoZW4oKG1hbmlmZXN0KSA9PiB7CisgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFs
KE9iamVjdC5rZXlzKG1hbmlmZXN0KS5zb3J0KCksIFsnYWxsJywgJ2J1Z1RyYWNrZXJzJywgJ2J1
aWxkZXJzJywgJ2Rhc2hib2FyZCcsICdkYXNoYm9hcmRzJywKKyAgICAgICAgICAgICAgICAnZWxh
cHNlZFRpbWUnLCAnZmlsZVVwbG9hZFNpemVMaW1pdCcsICdtZXRyaWNzJywgJ3JlcG9zaXRvcmll
cycsICdzaXRlVGl0bGUnLCAnc3RhdHVzJywgJ3N1bW1hcnlQYWdlcycsICd0ZXN0cycsICd0cmln
Z2VyYWJsZXMnXSk7CisKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbCh0eXBlb2YobWFuaWZlc3Qu
ZWxhcHNlZFRpbWUpLCAnbnVtYmVyJyk7CisgICAgICAgICAgICBkZWxldGUgbWFuaWZlc3QuZWxh
cHNlZFRpbWU7CisKKyAgICAgICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwobWFuaWZlc3Qs
IHsKKyAgICAgICAgICAgICAgICBzaXRlVGl0bGU6IFRlc3RTZXJ2ZXIudGVzdENvbmZpZygpLnNp
dGVUaXRsZSwKKyAgICAgICAgICAgICAgICBhbGw6IHt9LAorICAgICAgICAgICAgICAgIGJ1Z1Ry
YWNrZXJzOiB7fSwKKyAgICAgICAgICAgICAgICBidWlsZGVyczoge30sCisgICAgICAgICAgICAg
ICAgZGFzaGJvYXJkOiB7fSwKKyAgICAgICAgICAgICAgICBkYXNoYm9hcmRzOiB7fSwKKyAgICAg
ICAgICAgICAgICBmaWxlVXBsb2FkU2l6ZUxpbWl0OiAyMDk3MTUyLCAvLyAyTUIgZHVyaW5nIHRl
c3RpbmcuCisgICAgICAgICAgICAgICAgbWV0cmljczoge30sCisgICAgICAgICAgICAgICAgcmVw
b3NpdG9yaWVzOiB7fSwKKyAgICAgICAgICAgICAgICB0ZXN0czoge30sCisgICAgICAgICAgICAg
ICAgdHJpZ2dlcmFibGVzOiB7fSwKKyAgICAgICAgICAgICAgICBzdW1tYXJ5UGFnZXM6IFtdLAor
ICAgICAgICAgICAgICAgIHN0YXR1czogJ09LJworICAgICAgICAgICAgfSk7CisgICAgICAgIH0p
OworICAgIH0pOworCisgICAgY29uc3QgYnVnemlsbGFEYXRhID0ge2lkOiAxLCBuYW1lOiAnQnVn
emlsbGEnLCBidWdfdXJsOiAnaHR0cHM6Ly93ZWJraXQub3JnL2IvJG51bWJlcicsIG5ld19idWdf
dXJsOiAnaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvJ307CisgICAgY29uc3QgcmFkYXJEYXRhID0g
e2lkOiAyLCBuYW1lOiAnUmFkYXInfTsKKworICAgIGl0KCJzaG91bGQgZ2VuZXJhdGUgbWFuaWZl
c3Qgd2l0aCBidWcgdHJhY2tlcnMgd2l0aG91dCByZXBvc2l0b3JpZXMiLCAoKSA9PiB7CisgICAg
ICAgIHJldHVybiBUZXN0U2VydmVyLmRhdGFiYXNlKCkuaW5zZXJ0KCdidWdfdHJhY2tlcnMnLCBi
dWd6aWxsYURhdGEpLnRoZW4oKCkgPT4geworICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIu
cmVtb3RlQVBJKCkuZ2V0SlNPTignL2FwaS9tYW5pZmVzdCcpOworICAgICAgICB9KS50aGVuKChj
b250ZW50KSA9PiB7CisgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGNvbnRlbnQuYnVnVHJh
Y2tlcnMsIHsxOiB7bmFtZTogJ0J1Z3ppbGxhJywgYnVnVXJsOiAnaHR0cHM6Ly93ZWJraXQub3Jn
L2IvJG51bWJlcicsCisgICAgICAgICAgICAgICAgbmV3QnVnVXJsOiAnaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvJywgcmVwb3NpdG9yaWVzOiBudWxsfX0pOworCisgICAgICAgICAgICBsZXQgbWFu
aWZlc3QgPSBNYW5pZmVzdC5fZGlkRmV0Y2hNYW5pZmVzdChjb250ZW50KTsKKyAgICAgICAgICAg
IGxldCB0cmFja2VyID0gQnVnVHJhY2tlci5maW5kQnlJZCgxKTsKKyAgICAgICAgICAgIGFzc2Vy
dCh0cmFja2VyKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbCh0cmFja2VyLm5hbWUoKSwgJ0J1
Z3ppbGxhJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwodHJhY2tlci5idWdVcmwoMTIzKSwg
J2h0dHBzOi8vd2Via2l0Lm9yZy9iLzEyMycpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHRy
YWNrZXIubmV3QnVnVXJsKCksICdodHRwczovL2J1Z3Mud2Via2l0Lm9yZy8nKTsKKyAgICAgICAg
fSk7CisgICAgfSk7CisKKyAgICBpdCgic2hvdWxkIGdlbmVyYXRlIG1hbmlmZXN0IHdpdGggYnVn
IHRyYWNrZXJzIGFuZCByZXBvc2l0b3JpZXMiLCAoKSA9PiB7CisgICAgICAgIGxldCBkYiA9IFRl
c3RTZXJ2ZXIuZGF0YWJhc2UoKTsKKyAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKFsKKyAgICAg
ICAgICAgIGRiLmluc2VydCgnYnVnX3RyYWNrZXJzJywgYnVnemlsbGFEYXRhKSwKKyAgICAgICAg
ICAgIGRiLmluc2VydCgnYnVnX3RyYWNrZXJzJywgcmFkYXJEYXRhKSwKKyAgICAgICAgICAgIGRi
Lmluc2VydCgncmVwb3NpdG9yaWVzJywge2lkOiAxMSwgbmFtZTogJ1dlYktpdCcsIHVybDogJ2h0
dHBzOi8vdHJhYy53ZWJraXQub3JnLyQxJ30pLAorICAgICAgICAgICAgZGIuaW5zZXJ0KCdyZXBv
c2l0b3JpZXMnLCB7aWQ6IDksIG5hbWU6ICdPUyBYJ30pLAorICAgICAgICAgICAgZGIuaW5zZXJ0
KCdyZXBvc2l0b3JpZXMnLCB7aWQ6IDIyLCBuYW1lOiAnaU9TJ30pLAorICAgICAgICAgICAgZGIu
aW5zZXJ0KCd0cmFja2VyX3JlcG9zaXRvcmllcycsIHt0cmFja2VyOiBidWd6aWxsYURhdGEuaWQs
IHJlcG9zaXRvcnk6IDExfSksCisgICAgICAgICAgICBkYi5pbnNlcnQoJ3RyYWNrZXJfcmVwb3Np
dG9yaWVzJywge3RyYWNrZXI6IHJhZGFyRGF0YS5pZCwgcmVwb3NpdG9yeTogOX0pLAorICAgICAg
ICAgICAgZGIuaW5zZXJ0KCd0cmFja2VyX3JlcG9zaXRvcmllcycsIHt0cmFja2VyOiByYWRhckRh
dGEuaWQsIHJlcG9zaXRvcnk6IDIyfSksCisgICAgICAgIF0pLnRoZW4oKCkgPT4geworICAgICAg
ICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkuZ2V0SlNPTignL2FwaS9tYW5pZmVz
dCcpOworICAgICAgICB9KS50aGVuKChjb250ZW50KSA9PiB7CisgICAgICAgICAgICBsZXQgbWFu
aWZlc3QgPSBNYW5pZmVzdC5fZGlkRmV0Y2hNYW5pZmVzdChjb250ZW50KTsKKworICAgICAgICAg
ICAgbGV0IHdlYmtpdCA9IFJlcG9zaXRvcnkuZmluZEJ5SWQoMTEpOworICAgICAgICAgICAgYXNz
ZXJ0KHdlYmtpdCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwod2Via2l0Lm5hbWUoKSwgJ1dl
YktpdCcpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHdlYmtpdC51cmxGb3JSZXZpc2lvbigx
MjMpLCAnaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvMTIzJyk7CisKKyAgICAgICAgICAgIGxldCBv
c3ggPSBSZXBvc2l0b3J5LmZpbmRCeUlkKDkpOworICAgICAgICAgICAgYXNzZXJ0KG9zeCk7Cisg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwob3N4Lm5hbWUoKSwgJ09TIFgnKTsKKworICAgICAgICAg
ICAgbGV0IGlvcyA9IFJlcG9zaXRvcnkuZmluZEJ5SWQoMjIpOworICAgICAgICAgICAgYXNzZXJ0
KGlvcyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoaW9zLm5hbWUoKSwgJ2lPUycpOworCisg
ICAgICAgICAgICBsZXQgdHJhY2tlciA9IEJ1Z1RyYWNrZXIuZmluZEJ5SWQoMSk7CisgICAgICAg
ICAgICBhc3NlcnQodHJhY2tlcik7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwodHJhY2tlci5u
YW1lKCksICdCdWd6aWxsYScpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHRyYWNrZXIuYnVn
VXJsKDEyMyksICdodHRwczovL3dlYmtpdC5vcmcvYi8xMjMnKTsKKyAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbCh0cmFja2VyLm5ld0J1Z1VybCgpLCAnaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvJyk7
CisgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKHRyYWNrZXIucmVwb3NpdG9yaWVzKCksIFt3
ZWJraXRdKTsKKworICAgICAgICAgICAgdHJhY2tlciA9IEJ1Z1RyYWNrZXIuZmluZEJ5SWQoMik7
CisgICAgICAgICAgICBhc3NlcnQodHJhY2tlcik7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
dHJhY2tlci5uYW1lKCksICdSYWRhcicpOworICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChS
ZXBvc2l0b3J5LnNvcnRCeU5hbWUodHJhY2tlci5yZXBvc2l0b3JpZXMoKSksIFtvc3gsIGlvc10p
OworICAgICAgICB9KTsKKyAgICB9KTsKKworICAgIGl0KCJzaG91bGQgZ2VuZXJhdGUgbWFuaWZl
c3Qgd2l0aCBidWlsZGVycyIsICgpID0+IHsKKyAgICAgICAgbGV0IGRiID0gVGVzdFNlcnZlci5k
YXRhYmFzZSgpOworICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAgICAgICAgICAgZGIu
aW5zZXJ0KCdidWlsZGVycycsIHtpZDogMSwgbmFtZTogJ1NvbWVCdWlsZGVyJywgcGFzc3dvcmRf
aGFzaDogJ2EnLAorICAgICAgICAgICAgICAgIGJ1aWxkX3VybDogJ2h0dHBzOi8vYnVpbGQud2Vi
a2l0Lm9yZy9idWlsZGVycy8kYnVpbGRlck5hbWUvYnVpbGQvJGJ1aWxkTnVtYmVyJ30pLAorICAg
ICAgICAgICAgZGIuaW5zZXJ0KCdidWlsZGVycycsIHtpZDogMiwgbmFtZTogJ1NvbWVPdGhlckJ1
aWxkZXInLCBwYXNzd29yZF9oYXNoOiAnYid9KQorICAgICAgICBdKS50aGVuKCgpID0+IHsKKyAg
ICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLmdldEpTT04oJy9hcGkvbWFu
aWZlc3QnKTsKKyAgICAgICAgfSkudGhlbigoY29udGVudCkgPT4geworICAgICAgICAgICAgYXNz
ZXJ0LmRlZXBFcXVhbChjb250ZW50LmJ1aWxkZXJzLCB7CisgICAgICAgICAgICAgICAgJzEnOiB7
bmFtZTogJ1NvbWVCdWlsZGVyJywgYnVpbGRVcmw6ICdodHRwczovL2J1aWxkLndlYmtpdC5vcmcv
YnVpbGRlcnMvJGJ1aWxkZXJOYW1lL2J1aWxkLyRidWlsZE51bWJlcid9LAorICAgICAgICAgICAg
ICAgICcyJzoge25hbWU6ICdTb21lT3RoZXJCdWlsZGVyJywgYnVpbGRVcmw6IG51bGx9CisgICAg
ICAgICAgICB9KTsKKworICAgICAgICAgICAgbGV0IG1hbmlmZXN0ID0gTWFuaWZlc3QuX2RpZEZl
dGNoTWFuaWZlc3QoY29udGVudCk7CisKKyAgICAgICAgICAgIGxldCBidWlsZGVyID0gQnVpbGRl
ci5maW5kQnlJZCgxKTsKKyAgICAgICAgICAgIGFzc2VydChidWlsZGVyKTsKKyAgICAgICAgICAg
IGFzc2VydC5lcXVhbChidWlsZGVyLm5hbWUoKSwgJ1NvbWVCdWlsZGVyJyk7CisgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwoYnVpbGRlci51cmxGb3JCdWlsZCgxMjMpLCAnaHR0cHM6Ly9idWlsZC53
ZWJraXQub3JnL2J1aWxkZXJzL1NvbWVCdWlsZGVyL2J1aWxkLzEyMycpOworCisgICAgICAgICAg
ICBidWlsZGVyID0gQnVpbGRlci5maW5kQnlJZCgyKTsKKyAgICAgICAgICAgIGFzc2VydChidWls
ZGVyKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChidWlsZGVyLm5hbWUoKSwgJ1NvbWVPdGhl
ckJ1aWxkZXInKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChidWlsZGVyLnVybEZvckJ1aWxk
KDEyMyksIG51bGwpOworICAgICAgICB9KTsKKyAgICB9KTsKKworICAgIGl0KCJzaG91bGQgZ2Vu
ZXJhdGUgbWFuaWZlc3Qgd2l0aCB0ZXN0cywgbWV0cmljcywgYW5kIHBsYXRmb3JtcyIsICgpID0+
IHsKKyAgICAgICAgbGV0IGRiID0gVGVzdFNlcnZlci5kYXRhYmFzZSgpOworICAgICAgICByZXR1
cm4gUHJvbWlzZS5hbGwoWworICAgICAgICAgICAgZGIuaW5zZXJ0KCd0ZXN0cycsIHtpZDogMSwg
bmFtZTogJ1NvbWVUZXN0J30pLAorICAgICAgICAgICAgZGIuaW5zZXJ0KCd0ZXN0cycsIHtpZDog
MiwgbmFtZTogJ1NvbWVPdGhlclRlc3QnfSksCisgICAgICAgICAgICBkYi5pbnNlcnQoJ3Rlc3Rz
Jywge2lkOiAzLCBuYW1lOiAnQ2hpbGRUZXN0JywgcGFyZW50OiAxfSksCisgICAgICAgICAgICBk
Yi5pbnNlcnQoJ3Rlc3RzJywge2lkOiA0LCBuYW1lOiAnR3JhbmRDaGlsZCcsIHBhcmVudDogM30p
LAorICAgICAgICAgICAgZGIuaW5zZXJ0KCdhZ2dyZWdhdG9ycycsIHtpZDogMjAwLCBuYW1lOiAn
VG90YWwnfSksCisgICAgICAgICAgICBkYi5pbnNlcnQoJ3Rlc3RfbWV0cmljcycsIHtpZDogNSwg
dGVzdDogMSwgbmFtZTogJ1RpbWUnfSksCisgICAgICAgICAgICBkYi5pbnNlcnQoJ3Rlc3RfbWV0
cmljcycsIHtpZDogNiwgdGVzdDogMiwgbmFtZTogJ1RpbWUnLCBhZ2dyZWdhdG9yOiAyMDB9KSwK
KyAgICAgICAgICAgIGRiLmluc2VydCgndGVzdF9tZXRyaWNzJywge2lkOiA3LCB0ZXN0OiAyLCBu
YW1lOiAnTWFsbG9jJywgYWdncmVnYXRvcjogMjAwfSksCisgICAgICAgICAgICBkYi5pbnNlcnQo
J3Rlc3RfbWV0cmljcycsIHtpZDogOCwgdGVzdDogMywgbmFtZTogJ1RpbWUnfSksCisgICAgICAg
ICAgICBkYi5pbnNlcnQoJ3Rlc3RfbWV0cmljcycsIHtpZDogOSwgdGVzdDogNCwgbmFtZTogJ1Rp
bWUnfSksCisgICAgICAgICAgICBkYi5pbnNlcnQoJ3BsYXRmb3JtcycsIHtpZDogMjMsIG5hbWU6
ICdpT1MgOSBpUGhvbmUgNXMnfSksCisgICAgICAgICAgICBkYi5pbnNlcnQoJ3BsYXRmb3Jtcycs
IHtpZDogNDYsIG5hbWU6ICdUcnVuayBNYXZlcmlja3MnfSksCisgICAgICAgICAgICBkYi5pbnNl
cnQoJ3Rlc3RfY29uZmlndXJhdGlvbnMnLCB7aWQ6IDEwMSwgbWV0cmljOiA1LCBwbGF0Zm9ybTog
NDYsIHR5cGU6ICdjdXJyZW50J30pLAorICAgICAgICAgICAgZGIuaW5zZXJ0KCd0ZXN0X2NvbmZp
Z3VyYXRpb25zJywge2lkOiAxMDIsIG1ldHJpYzogNiwgcGxhdGZvcm06IDQ2LCB0eXBlOiAnY3Vy
cmVudCd9KSwKKyAgICAgICAgICAgIGRiLmluc2VydCgndGVzdF9jb25maWd1cmF0aW9ucycsIHtp
ZDogMTAzLCBtZXRyaWM6IDcsIHBsYXRmb3JtOiA0NiwgdHlwZTogJ2N1cnJlbnQnfSksCisgICAg
ICAgICAgICBkYi5pbnNlcnQoJ3Rlc3RfY29uZmlndXJhdGlvbnMnLCB7aWQ6IDEwNCwgbWV0cmlj
OiA4LCBwbGF0Zm9ybTogNDYsIHR5cGU6ICdjdXJyZW50J30pLAorICAgICAgICAgICAgZGIuaW5z
ZXJ0KCd0ZXN0X2NvbmZpZ3VyYXRpb25zJywge2lkOiAxMDUsIG1ldHJpYzogOSwgcGxhdGZvcm06
IDQ2LCB0eXBlOiAnY3VycmVudCd9KSwKKyAgICAgICAgICAgIGRiLmluc2VydCgndGVzdF9jb25m
aWd1cmF0aW9ucycsIHtpZDogMTA2LCBtZXRyaWM6IDUsIHBsYXRmb3JtOiAyMywgdHlwZTogJ2N1
cnJlbnQnfSksCisgICAgICAgICAgICBkYi5pbnNlcnQoJ3Rlc3RfY29uZmlndXJhdGlvbnMnLCB7
aWQ6IDEwNywgbWV0cmljOiA1LCBwbGF0Zm9ybTogMjMsIHR5cGU6ICdiYXNlbGluZSd9KSwKKyAg
ICAgICAgXSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5yZW1v
dGVBUEkoKS5nZXRKU09OKCcvYXBpL21hbmlmZXN0Jyk7CisgICAgICAgIH0pLnRoZW4oKGNvbnRl
bnQpID0+IHsKKyAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoY29udGVudC50ZXN0cywgewor
ICAgICAgICAgICAgICAgICIxIjogeyJuYW1lIjogIlNvbWVUZXN0IiwgInBhcmVudElkIjogbnVs
bCwgInVybCI6IG51bGx9LAorICAgICAgICAgICAgICAgICIyIjogeyJuYW1lIjogIlNvbWVPdGhl
clRlc3QiLCAicGFyZW50SWQiOiBudWxsLCAidXJsIjogbnVsbH0sCisgICAgICAgICAgICAgICAg
IjMiOiB7Im5hbWUiOiAiQ2hpbGRUZXN0IiwgInBhcmVudElkIjogIjEiLCAidXJsIjogbnVsbH0s
CisgICAgICAgICAgICAgICAgIjQiOiB7Im5hbWUiOiAiR3JhbmRDaGlsZCIsICJwYXJlbnRJZCI6
ICIzIiwgInVybCI6IG51bGx9LAorICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGFzc2Vy
dC5kZWVwRXF1YWwoY29udGVudC5tZXRyaWNzLCB7CisgICAgICAgICAgICAgICAgJzUnOiB7bmFt
ZTogJ1RpbWUnLCB0ZXN0OiAnMScsIGFnZ3JlZ2F0b3I6IG51bGx9LAorICAgICAgICAgICAgICAg
ICc2Jzoge25hbWU6ICdUaW1lJywgdGVzdDogJzInLCBhZ2dyZWdhdG9yOiAnVG90YWwnfSwKKyAg
ICAgICAgICAgICAgICAnNyc6IHtuYW1lOiAnTWFsbG9jJywgdGVzdDogJzInLCBhZ2dyZWdhdG9y
OiAnVG90YWwnfSwKKyAgICAgICAgICAgICAgICAnOCc6IHtuYW1lOiAnVGltZScsIHRlc3Q6ICcz
JywgYWdncmVnYXRvcjogbnVsbH0sCisgICAgICAgICAgICAgICAgJzknOiB7bmFtZTogJ1RpbWUn
LCB0ZXN0OiAnNCcsIGFnZ3JlZ2F0b3I6IG51bGx9LAorICAgICAgICAgICAgfSk7CisKKyAgICAg
ICAgICAgIGxldCBtYW5pZmVzdCA9IE1hbmlmZXN0Ll9kaWRGZXRjaE1hbmlmZXN0KGNvbnRlbnQp
OworCisgICAgICAgICAgICBsZXQgc29tZVRlc3QgPSBUZXN0LmZpbmRCeUlkKDEpOworICAgICAg
ICAgICAgbGV0IHNvbWVUZXN0TWV0cmljID0gTWV0cmljLmZpbmRCeUlkKDUpOworICAgICAgICAg
ICAgbGV0IHNvbWVPdGhlclRlc3QgPSBUZXN0LmZpbmRCeUlkKDIpOworICAgICAgICAgICAgbGV0
IHNvbWVPdGhlclRlc3RUaW1lID0gTWV0cmljLmZpbmRCeUlkKDYpOworICAgICAgICAgICAgbGV0
IHNvbWVPdGhlclRlc3RNYWxsb2MgPSBNZXRyaWMuZmluZEJ5SWQoNyk7CisgICAgICAgICAgICBs
ZXQgY2hpbGRUZXN0ID0gVGVzdC5maW5kQnlJZCgzKTsKKyAgICAgICAgICAgIGxldCBjaGlsZFRl
c3RNZXRyaWMgPSBNZXRyaWMuZmluZEJ5SWQoOCk7CisgICAgICAgICAgICBsZXQgZ3JhbmRDaGls
ZFRlc3QgPSBUZXN0LmZpbmRCeUlkKDQpOworICAgICAgICAgICAgbGV0IGlvczlpcGhvbmU1cyA9
IFBsYXRmb3JtLmZpbmRCeUlkKDIzKTsKKyAgICAgICAgICAgIGxldCBtYXZlcmlja3MgPSBQbGF0
Zm9ybS5maW5kQnlJZCg0Nik7CisgICAgICAgICAgICBhc3NlcnQoc29tZVRlc3QpOworICAgICAg
ICAgICAgYXNzZXJ0KHNvbWVUZXN0TWV0cmljKTsKKyAgICAgICAgICAgIGFzc2VydChzb21lT3Ro
ZXJUZXN0KTsKKyAgICAgICAgICAgIGFzc2VydChzb21lT3RoZXJUZXN0VGltZSk7CisgICAgICAg
ICAgICBhc3NlcnQoc29tZU90aGVyVGVzdE1hbGxvYyk7CisgICAgICAgICAgICBhc3NlcnQoY2hp
bGRUZXN0KTsKKyAgICAgICAgICAgIGFzc2VydChjaGlsZFRlc3RNZXRyaWMpOworICAgICAgICAg
ICAgYXNzZXJ0KGdyYW5kQ2hpbGRUZXN0KTsKKyAgICAgICAgICAgIGFzc2VydChpb3M5aXBob25l
NXMpOworICAgICAgICAgICAgYXNzZXJ0KG1hdmVyaWNrcyk7CisKKyAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChtYXZlcmlja3MubmFtZSgpLCAnVHJ1bmsgTWF2ZXJpY2tzJyk7CisgICAgICAgICAg
ICBhc3NlcnQobWF2ZXJpY2tzLmhhc1Rlc3Qoc29tZVRlc3QpKTsKKyAgICAgICAgICAgIGFzc2Vy
dChtYXZlcmlja3MuaGFzVGVzdChzb21lT3RoZXJUZXN0KSk7CisgICAgICAgICAgICBhc3NlcnQo
bWF2ZXJpY2tzLmhhc1Rlc3QoY2hpbGRUZXN0KSk7CisgICAgICAgICAgICBhc3NlcnQobWF2ZXJp
Y2tzLmhhc1Rlc3QoZ3JhbmRDaGlsZFRlc3QpKTsKKyAgICAgICAgICAgIGFzc2VydChtYXZlcmlj
a3MuaGFzTWV0cmljKHNvbWVUZXN0TWV0cmljKSk7CisgICAgICAgICAgICBhc3NlcnQobWF2ZXJp
Y2tzLmhhc01ldHJpYyhzb21lT3RoZXJUZXN0VGltZSkpOworICAgICAgICAgICAgYXNzZXJ0KG1h
dmVyaWNrcy5oYXNNZXRyaWMoc29tZU90aGVyVGVzdE1hbGxvYykpOworICAgICAgICAgICAgYXNz
ZXJ0KG1hdmVyaWNrcy5oYXNNZXRyaWMoY2hpbGRUZXN0TWV0cmljKSk7CisKKyAgICAgICAgICAg
IGFzc2VydC5lcXVhbChpb3M5aXBob25lNXMubmFtZSgpLCAnaU9TIDkgaVBob25lIDVzJyk7Cisg
ICAgICAgICAgICBhc3NlcnQoaW9zOWlwaG9uZTVzLmhhc1Rlc3Qoc29tZVRlc3QpKTsKKyAgICAg
ICAgICAgIGFzc2VydCghaW9zOWlwaG9uZTVzLmhhc1Rlc3Qoc29tZU90aGVyVGVzdCkpOworICAg
ICAgICAgICAgYXNzZXJ0KCFpb3M5aXBob25lNXMuaGFzVGVzdChjaGlsZFRlc3QpKTsKKyAgICAg
ICAgICAgIGFzc2VydCghaW9zOWlwaG9uZTVzLmhhc1Rlc3QoZ3JhbmRDaGlsZFRlc3QpKTsKKyAg
ICAgICAgICAgIGFzc2VydChpb3M5aXBob25lNXMuaGFzTWV0cmljKHNvbWVUZXN0TWV0cmljKSk7
CisgICAgICAgICAgICBhc3NlcnQoIWlvczlpcGhvbmU1cy5oYXNNZXRyaWMoc29tZU90aGVyVGVz
dFRpbWUpKTsKKyAgICAgICAgICAgIGFzc2VydCghaW9zOWlwaG9uZTVzLmhhc01ldHJpYyhzb21l
T3RoZXJUZXN0TWFsbG9jKSk7CisgICAgICAgICAgICBhc3NlcnQoIWlvczlpcGhvbmU1cy5oYXNN
ZXRyaWMoY2hpbGRUZXN0TWV0cmljKSk7CisKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChzb21l
VGVzdC5uYW1lKCksICdTb21lVGVzdCcpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHNvbWVU
ZXN0LnBhcmVudFRlc3QoKSwgbnVsbCk7CisgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKHNv
bWVUZXN0LnBhdGgoKSwgW3NvbWVUZXN0XSk7CisgICAgICAgICAgICBhc3NlcnQoIXNvbWVUZXN0
Lm9ubHlDb250YWluc1NpbmdsZU1ldHJpYygpKTsKKyAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1
YWwoc29tZVRlc3QuY2hpbGRUZXN0cygpLCBbY2hpbGRUZXN0XSk7CisgICAgICAgICAgICBhc3Nl
cnQuZGVlcEVxdWFsKHNvbWVUZXN0Lm1ldHJpY3MoKSwgW3NvbWVUZXN0TWV0cmljXSk7CisKKyAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChzb21lVGVzdE1ldHJpYy5uYW1lKCksICdUaW1lJyk7Cisg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwoc29tZVRlc3RNZXRyaWMuYWdncmVnYXRvck5hbWUoKSwg
bnVsbCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoc29tZVRlc3RNZXRyaWMubGFiZWwoKSwg
J1RpbWUnKTsKKyAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoc29tZVRlc3RNZXRyaWMuY2hp
bGRNZXRyaWNzKCksIGNoaWxkVGVzdC5tZXRyaWNzKCkpOworICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKHNvbWVUZXN0TWV0cmljLmZ1bGxOYW1lKCksICdTb21lVGVzdCA6IFRpbWUnKTsKKworICAg
ICAgICAgICAgYXNzZXJ0LmVxdWFsKHNvbWVPdGhlclRlc3QubmFtZSgpLCAnU29tZU90aGVyVGVz
dCcpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHNvbWVPdGhlclRlc3QucGFyZW50VGVzdCgp
LCBudWxsKTsKKyAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoc29tZU90aGVyVGVzdC5wYXRo
KCksIFtzb21lT3RoZXJUZXN0XSk7CisgICAgICAgICAgICBhc3NlcnQoIXNvbWVPdGhlclRlc3Qu
b25seUNvbnRhaW5zU2luZ2xlTWV0cmljKCkpOworICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVh
bChzb21lT3RoZXJUZXN0LmNoaWxkVGVzdHMoKSwgW10pOworICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKHNvbWVPdGhlclRlc3QubWV0cmljcygpLmxlbmd0aCwgMik7CisgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwoc29tZU90aGVyVGVzdC5tZXRyaWNzKClbMF0ubmFtZSgpLCAnVGltZScpOworICAg
ICAgICAgICAgYXNzZXJ0LmVxdWFsKHNvbWVPdGhlclRlc3QubWV0cmljcygpWzBdLmFnZ3JlZ2F0
b3JOYW1lKCksICdUb3RhbCcpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHNvbWVPdGhlclRl
c3QubWV0cmljcygpWzBdLmxhYmVsKCksICdUaW1lIDogVG90YWwnKTsKKyAgICAgICAgICAgIGFz
c2VydC5lcXVhbChzb21lT3RoZXJUZXN0Lm1ldHJpY3MoKVswXS5jaGlsZE1ldHJpY3MoKS5sZW5n
dGgsIDApOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHNvbWVPdGhlclRlc3QubWV0cmljcygp
WzBdLmZ1bGxOYW1lKCksICdTb21lT3RoZXJUZXN0IDogVGltZSA6IFRvdGFsJyk7CisgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwoc29tZU90aGVyVGVzdC5tZXRyaWNzKClbMV0ubmFtZSgpLCAnTWFs
bG9jJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoc29tZU90aGVyVGVzdC5tZXRyaWNzKClb
MV0uYWdncmVnYXRvck5hbWUoKSwgJ1RvdGFsJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
c29tZU90aGVyVGVzdC5tZXRyaWNzKClbMV0ubGFiZWwoKSwgJ01hbGxvYyA6IFRvdGFsJyk7Cisg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwoc29tZU90aGVyVGVzdC5tZXRyaWNzKClbMV0uY2hpbGRN
ZXRyaWNzKCkubGVuZ3RoLCAwKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChzb21lT3RoZXJU
ZXN0Lm1ldHJpY3MoKVsxXS5mdWxsTmFtZSgpLCAnU29tZU90aGVyVGVzdCA6IE1hbGxvYyA6IFRv
dGFsJyk7CisKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChjaGlsZFRlc3QubmFtZSgpLCAnQ2hp
bGRUZXN0Jyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY2hpbGRUZXN0LnBhcmVudFRlc3Qo
KSwgc29tZVRlc3QpOworICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChjaGlsZFRlc3QucGF0
aCgpLCBbc29tZVRlc3QsIGNoaWxkVGVzdF0pOworICAgICAgICAgICAgYXNzZXJ0KCFjaGlsZFRl
c3Qub25seUNvbnRhaW5zU2luZ2xlTWV0cmljKCkpOworICAgICAgICAgICAgYXNzZXJ0LmRlZXBF
cXVhbChjaGlsZFRlc3QuY2hpbGRUZXN0cygpLCBbZ3JhbmRDaGlsZFRlc3RdKTsKKyAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChjaGlsZFRlc3QubWV0cmljcygpLmxlbmd0aCwgMSk7CisgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwoY2hpbGRUZXN0Lm1ldHJpY3MoKVswXS5sYWJlbCgpLCAnVGltZScp
OworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNoaWxkVGVzdC5tZXRyaWNzKClbMF0uZnVsbE5h
bWUoKSwgJ1NvbWVUZXN0IFx1MjIwQiBDaGlsZFRlc3QgOiBUaW1lJyk7CisKKyAgICAgICAgICAg
IGFzc2VydC5lcXVhbChncmFuZENoaWxkVGVzdC5uYW1lKCksICdHcmFuZENoaWxkJyk7CisgICAg
ICAgICAgICBhc3NlcnQuZXF1YWwoZ3JhbmRDaGlsZFRlc3QucGFyZW50VGVzdCgpLCBjaGlsZFRl
c3QpOworICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChncmFuZENoaWxkVGVzdC5wYXRoKCks
IFtzb21lVGVzdCwgY2hpbGRUZXN0LCBncmFuZENoaWxkVGVzdF0pOworICAgICAgICAgICAgYXNz
ZXJ0KGdyYW5kQ2hpbGRUZXN0Lm9ubHlDb250YWluc1NpbmdsZU1ldHJpYygpKTsKKyAgICAgICAg
ICAgIGFzc2VydC5kZWVwRXF1YWwoZ3JhbmRDaGlsZFRlc3QuY2hpbGRUZXN0cygpLCBbXSk7Cisg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwoZ3JhbmRDaGlsZFRlc3QubWV0cmljcygpLmxlbmd0aCwg
MSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoZ3JhbmRDaGlsZFRlc3QubWV0cmljcygpWzBd
LmxhYmVsKCksICdUaW1lJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoZ3JhbmRDaGlsZFRl
c3QubWV0cmljcygpWzBdLmZ1bGxOYW1lKCksICdTb21lVGVzdCBcdTIyMEIgQ2hpbGRUZXN0IFx1
MjIwQiBHcmFuZENoaWxkIDogVGltZScpOworICAgICAgICB9KTsKKyAgICB9KTsKKworICAgIGl0
KCJzaG91bGQgZ2VuZXJhdGUgbWFuaWZlc3Qgd2l0aCB0cmlnZ2VyYWJsZXMiLCAoKSA9PiB7Cisg
ICAgICAgIGxldCBkYiA9IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsKKyAgICAgICAgcmV0dXJuIFBy
b21pc2UuYWxsKFsKKyAgICAgICAgICAgIGRiLmluc2VydCgncmVwb3NpdG9yaWVzJywge2lkOiAx
MSwgbmFtZTogJ1dlYktpdCcsIHVybDogJ2h0dHBzOi8vdHJhYy53ZWJraXQub3JnLyQxJ30pLAor
ICAgICAgICAgICAgZGIuaW5zZXJ0KCdyZXBvc2l0b3JpZXMnLCB7aWQ6IDksIG5hbWU6ICdPUyBY
J30pLAorICAgICAgICAgICAgZGIuaW5zZXJ0KCdyZXBvc2l0b3JpZXMnLCB7aWQ6IDEwMSwgbmFt
ZTogJ1dlYktpdCcsIG93bmVyOiA5LCB1cmw6ICdodHRwczovL3RyYWMud2Via2l0Lm9yZy8kMSd9
KSwKKyAgICAgICAgICAgIGRiLmluc2VydCgnYnVpbGRfdHJpZ2dlcmFibGVzJywge2lkOiAyMDAs
IG5hbWU6ICdidWlsZC53ZWJraXQub3JnJ30pLAorICAgICAgICAgICAgZGIuaW5zZXJ0KCdidWls
ZF90cmlnZ2VyYWJsZXMnLCB7aWQ6IDIwMSwgbmFtZTogJ2lvcy1idWlsZC53ZWJraXQub3JnJ30p
LAorICAgICAgICAgICAgZGIuaW5zZXJ0KCd0ZXN0cycsIHtpZDogMSwgbmFtZTogJ1NvbWVUZXN0
J30pLAorICAgICAgICAgICAgZGIuaW5zZXJ0KCd0ZXN0cycsIHtpZDogMiwgbmFtZTogJ1NvbWVP
dGhlclRlc3QnfSksCisgICAgICAgICAgICBkYi5pbnNlcnQoJ3Rlc3RzJywge2lkOiAzLCBuYW1l
OiAnQ2hpbGRUZXN0JywgcGFyZW50OiAxfSksCisgICAgICAgICAgICBkYi5pbnNlcnQoJ3BsYXRm
b3JtcycsIHtpZDogMjMsIG5hbWU6ICdpT1MgOSBpUGhvbmUgNXMnfSksCisgICAgICAgICAgICBk
Yi5pbnNlcnQoJ3BsYXRmb3JtcycsIHtpZDogNDYsIG5hbWU6ICdUcnVuayBNYXZlcmlja3MnfSks
CisgICAgICAgICAgICBkYi5pbnNlcnQoJ3Rlc3RfbWV0cmljcycsIHtpZDogNSwgdGVzdDogMSwg
bmFtZTogJ1RpbWUnfSksCisgICAgICAgICAgICBkYi5pbnNlcnQoJ3Rlc3RfbWV0cmljcycsIHtp
ZDogOCwgdGVzdDogMiwgbmFtZTogJ0ZyYW1lUmF0ZSd9KSwKKyAgICAgICAgICAgIGRiLmluc2Vy
dCgndGVzdF9tZXRyaWNzJywge2lkOiA5LCB0ZXN0OiAzLCBuYW1lOiAnVGltZSd9KSwKKyAgICAg
ICAgICAgIGRiLmluc2VydCgndGVzdF9jb25maWd1cmF0aW9ucycsIHtpZDogMTAxLCBtZXRyaWM6
IDUsIHBsYXRmb3JtOiA0NiwgdHlwZTogJ2N1cnJlbnQnfSksCisgICAgICAgICAgICBkYi5pbnNl
cnQoJ3Rlc3RfY29uZmlndXJhdGlvbnMnLCB7aWQ6IDEwMiwgbWV0cmljOiA4LCBwbGF0Zm9ybTog
NDYsIHR5cGU6ICdjdXJyZW50J30pLAorICAgICAgICAgICAgZGIuaW5zZXJ0KCd0ZXN0X2NvbmZp
Z3VyYXRpb25zJywge2lkOiAxMDMsIG1ldHJpYzogOSwgcGxhdGZvcm06IDQ2LCB0eXBlOiAnY3Vy
cmVudCd9KSwKKyAgICAgICAgICAgIGRiLmluc2VydCgndGVzdF9jb25maWd1cmF0aW9ucycsIHtp
ZDogMTA0LCBtZXRyaWM6IDUsIHBsYXRmb3JtOiAyMywgdHlwZTogJ2N1cnJlbnQnfSksCisgICAg
ICAgICAgICBkYi5pbnNlcnQoJ3Rlc3RfY29uZmlndXJhdGlvbnMnLCB7aWQ6IDEwNSwgbWV0cmlj
OiA4LCBwbGF0Zm9ybTogMjMsIHR5cGU6ICdjdXJyZW50J30pLAorICAgICAgICAgICAgZGIuaW5z
ZXJ0KCd0ZXN0X2NvbmZpZ3VyYXRpb25zJywge2lkOiAxMDYsIG1ldHJpYzogOSwgcGxhdGZvcm06
IDIzLCB0eXBlOiAnY3VycmVudCd9KSwKKyAgICAgICAgICAgIGRiLmluc2VydCgndHJpZ2dlcmFi
bGVfcmVwb3NpdG9yaWVzJywge3RyaWdnZXJhYmxlOiAyMDAsIHJlcG9zaXRvcnk6IDExfSksCisg
ICAgICAgICAgICBkYi5pbnNlcnQoJ3RyaWdnZXJhYmxlX3JlcG9zaXRvcmllcycsIHt0cmlnZ2Vy
YWJsZTogMjAxLCByZXBvc2l0b3J5OiAxMX0pLAorICAgICAgICAgICAgZGIuaW5zZXJ0KCd0cmln
Z2VyYWJsZV9jb25maWd1cmF0aW9ucycsIHt0cmlnZ2VyYWJsZTogMjAwLCB0ZXN0OiAxLCBwbGF0
Zm9ybTogNDZ9KSwKKyAgICAgICAgICAgIGRiLmluc2VydCgndHJpZ2dlcmFibGVfY29uZmlndXJh
dGlvbnMnLCB7dHJpZ2dlcmFibGU6IDIwMCwgdGVzdDogMiwgcGxhdGZvcm06IDQ2fSksCisgICAg
ICAgICAgICBkYi5pbnNlcnQoJ3RyaWdnZXJhYmxlX2NvbmZpZ3VyYXRpb25zJywge3RyaWdnZXJh
YmxlOiAyMDEsIHRlc3Q6IDEsIHBsYXRmb3JtOiAyM30pLAorICAgICAgICAgICAgZGIuaW5zZXJ0
KCd0cmlnZ2VyYWJsZV9jb25maWd1cmF0aW9ucycsIHt0cmlnZ2VyYWJsZTogMjAxLCB0ZXN0OiAy
LCBwbGF0Zm9ybTogMjN9KSwKKyAgICAgICAgXSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICBy
ZXR1cm4gTWFuaWZlc3QuZmV0Y2goKTsKKyAgICAgICAgfSkudGhlbigoKSA9PiB7CisgICAgICAg
ICAgICBsZXQgd2Via2l0ID0gUmVwb3NpdG9yeS5maW5kQnlJZCgxMSk7CisgICAgICAgICAgICBh
c3NlcnQuZXF1YWwod2Via2l0Lm5hbWUoKSwgJ1dlYktpdCcpOworICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKHdlYmtpdC51cmxGb3JSZXZpc2lvbigxMjMpLCAnaHR0cHM6Ly90cmFjLndlYmtpdC5v
cmcvMTIzJyk7CisKKyAgICAgICAgICAgIGxldCBvc1dlYmtpdDEgPSBSZXBvc2l0b3J5LmZpbmRC
eUlkKDEwMSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwob3NXZWJraXQxLm5hbWUoKSwgJ1dl
YktpdCcpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKG9zV2Via2l0MS5vd25lcigpLCA5KTsK
KyAgICAgICAgICAgIGFzc2VydC5lcXVhbChvc1dlYmtpdDEudXJsRm9yUmV2aXNpb24oMTIzKSwg
J2h0dHBzOi8vdHJhYy53ZWJraXQub3JnLzEyMycpOworCisgICAgICAgICAgICBsZXQgb3N4ID0g
UmVwb3NpdG9yeS5maW5kQnlJZCg5KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChvc3gubmFt
ZSgpLCAnT1MgWCcpOworCisgICAgICAgICAgICBsZXQgc29tZVRlc3QgPSBUZXN0LmZpbmRCeUlk
KDEpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHNvbWVUZXN0Lm5hbWUoKSwgJ1NvbWVUZXN0
Jyk7CisKKyAgICAgICAgICAgIGxldCBzb21lT3RoZXJUZXN0ID0gVGVzdC5maW5kQnlJZCgyKTsK
KyAgICAgICAgICAgIGFzc2VydC5lcXVhbChzb21lT3RoZXJUZXN0Lm5hbWUoKSwgJ1NvbWVPdGhl
clRlc3QnKTsKKworICAgICAgICAgICAgbGV0IGNoaWxkVGVzdCA9IFRlc3QuZmluZEJ5SWQoMyk7
CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY2hpbGRUZXN0Lm5hbWUoKSwgJ0NoaWxkVGVzdCcp
OworCisgICAgICAgICAgICBsZXQgaW9zOWlwaG9uZTVzID0gUGxhdGZvcm0uZmluZEJ5SWQoMjMp
OworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGlvczlpcGhvbmU1cy5uYW1lKCksICdpT1MgOSBp
UGhvbmUgNXMnKTsKKworICAgICAgICAgICAgbGV0IG1hdmVyaWNrcyA9IFBsYXRmb3JtLmZpbmRC
eUlkKDQ2KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChtYXZlcmlja3MubmFtZSgpLCAnVHJ1
bmsgTWF2ZXJpY2tzJyk7CisKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChUcmlnZ2VyYWJsZS5h
bGwoKS5sZW5ndGgsIDIpOworCisgICAgICAgICAgICBsZXQgb3N4VHJpZ2dlcmFibGUgPSBUcmln
Z2VyYWJsZS5maW5kQnlUZXN0Q29uZmlndXJhdGlvbihzb21lVGVzdCwgbWF2ZXJpY2tzKTsKKyAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChvc3hUcmlnZ2VyYWJsZS5uYW1lKCksICdidWlsZC53ZWJr
aXQub3JnJyk7CisgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKG9zeFRyaWdnZXJhYmxlLmFj
Y2VwdGVkUmVwb3NpdG9yaWVzKCksIFt3ZWJraXRdKTsKKworICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKFRyaWdnZXJhYmxlLmZpbmRCeVRlc3RDb25maWd1cmF0aW9uKHNvbWVPdGhlclRlc3QsIG1h
dmVyaWNrcyksIG9zeFRyaWdnZXJhYmxlKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChUcmln
Z2VyYWJsZS5maW5kQnlUZXN0Q29uZmlndXJhdGlvbihjaGlsZFRlc3QsIG1hdmVyaWNrcyksIG9z
eFRyaWdnZXJhYmxlKTsKKworICAgICAgICAgICAgbGV0IGlvc1RyaWdnZXJhYmxlID0gVHJpZ2dl
cmFibGUuZmluZEJ5VGVzdENvbmZpZ3VyYXRpb24oc29tZU90aGVyVGVzdCwgaW9zOWlwaG9uZTVz
KTsKKyAgICAgICAgICAgIGFzc2VydC5ub3RFcXVhbChpb3NUcmlnZ2VyYWJsZSwgb3N4VHJpZ2dl
cmFibGUpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGlvc1RyaWdnZXJhYmxlLm5hbWUoKSwg
J2lvcy1idWlsZC53ZWJraXQub3JnJyk7CisgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGlv
c1RyaWdnZXJhYmxlLmFjY2VwdGVkUmVwb3NpdG9yaWVzKCksIFt3ZWJraXRdKTsKKworICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKFRyaWdnZXJhYmxlLmZpbmRCeVRlc3RDb25maWd1cmF0aW9uKHNv
bWVPdGhlclRlc3QsIGlvczlpcGhvbmU1cyksIGlvc1RyaWdnZXJhYmxlKTsKKyAgICAgICAgICAg
IGFzc2VydC5lcXVhbChUcmlnZ2VyYWJsZS5maW5kQnlUZXN0Q29uZmlndXJhdGlvbihjaGlsZFRl
c3QsIGlvczlpcGhvbmU1cyksIGlvc1RyaWdnZXJhYmxlKTsKKyAgICAgICAgfSk7CisgICAgfSk7
CisKK30pOwpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0
cy9hcGktbWFuaWZlc3QuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3Rz
L2FwaS1tYW5pZmVzdC5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODMzODM1YzBi
NDhkNGVhMTdjYTcyNmI4ZjA2ZDA2Y2M1OWQzOGI5YS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRl
c3RzL2FwaS1tYW5pZmVzdC5qcworKysgL2Rldi9udWxsCkBAIC0xLDM0MCArMCwwIEBACi0ndXNl
IHN0cmljdCc7Ci0KLWNvbnN0IGFzc2VydCA9IHJlcXVpcmUoJ2Fzc2VydCcpOwotCi1yZXF1aXJl
KCcuLi90b29scy9qcy92My1tb2RlbHMuanMnKTsKLQotY29uc3QgTW9ja0RhdGEgPSByZXF1aXJl
KCcuL3Jlc291cmNlcy9tb2NrLWRhdGEuanMnKTsKLWNvbnN0IFRlc3RTZXJ2ZXIgPSByZXF1aXJl
KCcuL3Jlc291cmNlcy90ZXN0LXNlcnZlci5qcycpOwotY29uc3QgcHJlcGFyZVNlcnZlclRlc3Qg
PSByZXF1aXJlKCcuL3Jlc291cmNlcy9jb21tb24tb3BlcmF0aW9ucy5qcycpLnByZXBhcmVTZXJ2
ZXJUZXN0OwotCi1kZXNjcmliZSgnL2FwaS9tYW5pZmVzdCcsIGZ1bmN0aW9uICgpIHsKLSAgICBw
cmVwYXJlU2VydmVyVGVzdCh0aGlzKTsKLQotICAgIGl0KCJzaG91bGQgZ2VuZXJhdGUgYW4gZW1w
dHkgbWFuaWZlc3Qgd2hlbiBkYXRhYmFzZSBpcyBlbXB0eSIsICgpID0+IHsKLSAgICAgICAgcmV0
dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkuZ2V0SlNPTignL2FwaS9tYW5pZmVzdCcpLnRoZW4o
KG1hbmlmZXN0KSA9PiB7Ci0gICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKE9iamVjdC5rZXlz
KG1hbmlmZXN0KS5zb3J0KCksIFsnYWxsJywgJ2J1Z1RyYWNrZXJzJywgJ2J1aWxkZXJzJywgJ2Rh
c2hib2FyZCcsICdkYXNoYm9hcmRzJywKLSAgICAgICAgICAgICAgICAnZWxhcHNlZFRpbWUnLCAn
ZmlsZVVwbG9hZFNpemVMaW1pdCcsICdtZXRyaWNzJywgJ3JlcG9zaXRvcmllcycsICdzaXRlVGl0
bGUnLCAnc3RhdHVzJywgJ3N1bW1hcnlQYWdlcycsICd0ZXN0cycsICd0cmlnZ2VyYWJsZXMnXSk7
Ci0KLSAgICAgICAgICAgIGFzc2VydC5lcXVhbCh0eXBlb2YobWFuaWZlc3QuZWxhcHNlZFRpbWUp
LCAnbnVtYmVyJyk7Ci0gICAgICAgICAgICBkZWxldGUgbWFuaWZlc3QuZWxhcHNlZFRpbWU7Ci0K
LSAgICAgICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwobWFuaWZlc3QsIHsKLSAgICAgICAg
ICAgICAgICBzaXRlVGl0bGU6IFRlc3RTZXJ2ZXIudGVzdENvbmZpZygpLnNpdGVUaXRsZSwKLSAg
ICAgICAgICAgICAgICBhbGw6IHt9LAotICAgICAgICAgICAgICAgIGJ1Z1RyYWNrZXJzOiB7fSwK
LSAgICAgICAgICAgICAgICBidWlsZGVyczoge30sCi0gICAgICAgICAgICAgICAgZGFzaGJvYXJk
OiB7fSwKLSAgICAgICAgICAgICAgICBkYXNoYm9hcmRzOiB7fSwKLSAgICAgICAgICAgICAgICBm
aWxlVXBsb2FkU2l6ZUxpbWl0OiAyMDk3MTUyLCAvLyAyTUIgZHVyaW5nIHRlc3RpbmcuCi0gICAg
ICAgICAgICAgICAgbWV0cmljczoge30sCi0gICAgICAgICAgICAgICAgcmVwb3NpdG9yaWVzOiB7
fSwKLSAgICAgICAgICAgICAgICB0ZXN0czoge30sCi0gICAgICAgICAgICAgICAgdHJpZ2dlcmFi
bGVzOiB7fSwKLSAgICAgICAgICAgICAgICBzdW1tYXJ5UGFnZXM6IFtdLAotICAgICAgICAgICAg
ICAgIHN0YXR1czogJ09LJwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0pOwotICAgIH0pOwot
Ci0gICAgY29uc3QgYnVnemlsbGFEYXRhID0ge2lkOiAxLCBuYW1lOiAnQnVnemlsbGEnLCBidWdf
dXJsOiAnaHR0cHM6Ly93ZWJraXQub3JnL2IvJG51bWJlcicsIG5ld19idWdfdXJsOiAnaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvJ307Ci0gICAgY29uc3QgcmFkYXJEYXRhID0ge2lkOiAyLCBuYW1l
OiAnUmFkYXInfTsKLQotICAgIGl0KCJzaG91bGQgZ2VuZXJhdGUgbWFuaWZlc3Qgd2l0aCBidWcg
dHJhY2tlcnMgd2l0aG91dCByZXBvc2l0b3JpZXMiLCAoKSA9PiB7Ci0gICAgICAgIHJldHVybiBU
ZXN0U2VydmVyLmRhdGFiYXNlKCkuaW5zZXJ0KCdidWdfdHJhY2tlcnMnLCBidWd6aWxsYURhdGEp
LnRoZW4oKCkgPT4gewotICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCku
Z2V0SlNPTignL2FwaS9tYW5pZmVzdCcpOwotICAgICAgICB9KS50aGVuKChjb250ZW50KSA9PiB7
Ci0gICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGNvbnRlbnQuYnVnVHJhY2tlcnMsIHsxOiB7
bmFtZTogJ0J1Z3ppbGxhJywgYnVnVXJsOiAnaHR0cHM6Ly93ZWJraXQub3JnL2IvJG51bWJlcics
Ci0gICAgICAgICAgICAgICAgbmV3QnVnVXJsOiAnaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvJywg
cmVwb3NpdG9yaWVzOiBudWxsfX0pOwotCi0gICAgICAgICAgICBsZXQgbWFuaWZlc3QgPSBNYW5p
ZmVzdC5fZGlkRmV0Y2hNYW5pZmVzdChjb250ZW50KTsKLSAgICAgICAgICAgIGxldCB0cmFja2Vy
ID0gQnVnVHJhY2tlci5maW5kQnlJZCgxKTsKLSAgICAgICAgICAgIGFzc2VydCh0cmFja2VyKTsK
LSAgICAgICAgICAgIGFzc2VydC5lcXVhbCh0cmFja2VyLm5hbWUoKSwgJ0J1Z3ppbGxhJyk7Ci0g
ICAgICAgICAgICBhc3NlcnQuZXF1YWwodHJhY2tlci5idWdVcmwoMTIzKSwgJ2h0dHBzOi8vd2Vi
a2l0Lm9yZy9iLzEyMycpOwotICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHRyYWNrZXIubmV3QnVn
VXJsKCksICdodHRwczovL2J1Z3Mud2Via2l0Lm9yZy8nKTsKLSAgICAgICAgfSk7Ci0gICAgfSk7
Ci0KLSAgICBpdCgic2hvdWxkIGdlbmVyYXRlIG1hbmlmZXN0IHdpdGggYnVnIHRyYWNrZXJzIGFu
ZCByZXBvc2l0b3JpZXMiLCAoKSA9PiB7Ci0gICAgICAgIGxldCBkYiA9IFRlc3RTZXJ2ZXIuZGF0
YWJhc2UoKTsKLSAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKFsKLSAgICAgICAgICAgIGRiLmlu
c2VydCgnYnVnX3RyYWNrZXJzJywgYnVnemlsbGFEYXRhKSwKLSAgICAgICAgICAgIGRiLmluc2Vy
dCgnYnVnX3RyYWNrZXJzJywgcmFkYXJEYXRhKSwKLSAgICAgICAgICAgIGRiLmluc2VydCgncmVw
b3NpdG9yaWVzJywge2lkOiAxMSwgbmFtZTogJ1dlYktpdCcsIHVybDogJ2h0dHBzOi8vdHJhYy53
ZWJraXQub3JnLyQxJ30pLAotICAgICAgICAgICAgZGIuaW5zZXJ0KCdyZXBvc2l0b3JpZXMnLCB7
aWQ6IDksIG5hbWU6ICdPUyBYJ30pLAotICAgICAgICAgICAgZGIuaW5zZXJ0KCdyZXBvc2l0b3Jp
ZXMnLCB7aWQ6IDIyLCBuYW1lOiAnaU9TJ30pLAotICAgICAgICAgICAgZGIuaW5zZXJ0KCd0cmFj
a2VyX3JlcG9zaXRvcmllcycsIHt0cmFja2VyOiBidWd6aWxsYURhdGEuaWQsIHJlcG9zaXRvcnk6
IDExfSksCi0gICAgICAgICAgICBkYi5pbnNlcnQoJ3RyYWNrZXJfcmVwb3NpdG9yaWVzJywge3Ry
YWNrZXI6IHJhZGFyRGF0YS5pZCwgcmVwb3NpdG9yeTogOX0pLAotICAgICAgICAgICAgZGIuaW5z
ZXJ0KCd0cmFja2VyX3JlcG9zaXRvcmllcycsIHt0cmFja2VyOiByYWRhckRhdGEuaWQsIHJlcG9z
aXRvcnk6IDIyfSksCi0gICAgICAgIF0pLnRoZW4oKCkgPT4gewotICAgICAgICAgICAgcmV0dXJu
IFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkuZ2V0SlNPTignL2FwaS9tYW5pZmVzdCcpOwotICAgICAg
ICB9KS50aGVuKChjb250ZW50KSA9PiB7Ci0gICAgICAgICAgICBsZXQgbWFuaWZlc3QgPSBNYW5p
ZmVzdC5fZGlkRmV0Y2hNYW5pZmVzdChjb250ZW50KTsKLQotICAgICAgICAgICAgbGV0IHdlYmtp
dCA9IFJlcG9zaXRvcnkuZmluZEJ5SWQoMTEpOwotICAgICAgICAgICAgYXNzZXJ0KHdlYmtpdCk7
Ci0gICAgICAgICAgICBhc3NlcnQuZXF1YWwod2Via2l0Lm5hbWUoKSwgJ1dlYktpdCcpOwotICAg
ICAgICAgICAgYXNzZXJ0LmVxdWFsKHdlYmtpdC51cmxGb3JSZXZpc2lvbigxMjMpLCAnaHR0cHM6
Ly90cmFjLndlYmtpdC5vcmcvMTIzJyk7Ci0KLSAgICAgICAgICAgIGxldCBvc3ggPSBSZXBvc2l0
b3J5LmZpbmRCeUlkKDkpOwotICAgICAgICAgICAgYXNzZXJ0KG9zeCk7Ci0gICAgICAgICAgICBh
c3NlcnQuZXF1YWwob3N4Lm5hbWUoKSwgJ09TIFgnKTsKLQotICAgICAgICAgICAgbGV0IGlvcyA9
IFJlcG9zaXRvcnkuZmluZEJ5SWQoMjIpOwotICAgICAgICAgICAgYXNzZXJ0KGlvcyk7Ci0gICAg
ICAgICAgICBhc3NlcnQuZXF1YWwoaW9zLm5hbWUoKSwgJ2lPUycpOwotCi0gICAgICAgICAgICBs
ZXQgdHJhY2tlciA9IEJ1Z1RyYWNrZXIuZmluZEJ5SWQoMSk7Ci0gICAgICAgICAgICBhc3NlcnQo
dHJhY2tlcik7Ci0gICAgICAgICAgICBhc3NlcnQuZXF1YWwodHJhY2tlci5uYW1lKCksICdCdWd6
aWxsYScpOwotICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHRyYWNrZXIuYnVnVXJsKDEyMyksICdo
dHRwczovL3dlYmtpdC5vcmcvYi8xMjMnKTsKLSAgICAgICAgICAgIGFzc2VydC5lcXVhbCh0cmFj
a2VyLm5ld0J1Z1VybCgpLCAnaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvJyk7Ci0gICAgICAgICAg
ICBhc3NlcnQuZGVlcEVxdWFsKHRyYWNrZXIucmVwb3NpdG9yaWVzKCksIFt3ZWJraXRdKTsKLQot
ICAgICAgICAgICAgdHJhY2tlciA9IEJ1Z1RyYWNrZXIuZmluZEJ5SWQoMik7Ci0gICAgICAgICAg
ICBhc3NlcnQodHJhY2tlcik7Ci0gICAgICAgICAgICBhc3NlcnQuZXF1YWwodHJhY2tlci5uYW1l
KCksICdSYWRhcicpOwotICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChSZXBvc2l0b3J5LnNv
cnRCeU5hbWUodHJhY2tlci5yZXBvc2l0b3JpZXMoKSksIFtvc3gsIGlvc10pOwotICAgICAgICB9
KTsKLSAgICB9KTsKLQotICAgIGl0KCJzaG91bGQgZ2VuZXJhdGUgbWFuaWZlc3Qgd2l0aCBidWls
ZGVycyIsICgpID0+IHsKLSAgICAgICAgbGV0IGRiID0gVGVzdFNlcnZlci5kYXRhYmFzZSgpOwot
ICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoWwotICAgICAgICAgICAgZGIuaW5zZXJ0KCdidWls
ZGVycycsIHtpZDogMSwgbmFtZTogJ1NvbWVCdWlsZGVyJywgcGFzc3dvcmRfaGFzaDogJ2EnLAot
ICAgICAgICAgICAgICAgIGJ1aWxkX3VybDogJ2h0dHBzOi8vYnVpbGQud2Via2l0Lm9yZy9idWls
ZGVycy8kYnVpbGRlck5hbWUvYnVpbGQvJGJ1aWxkTnVtYmVyJ30pLAotICAgICAgICAgICAgZGIu
aW5zZXJ0KCdidWlsZGVycycsIHtpZDogMiwgbmFtZTogJ1NvbWVPdGhlckJ1aWxkZXInLCBwYXNz
d29yZF9oYXNoOiAnYid9KQotICAgICAgICBdKS50aGVuKCgpID0+IHsKLSAgICAgICAgICAgIHJl
dHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLmdldEpTT04oJy9hcGkvbWFuaWZlc3QnKTsKLSAg
ICAgICAgfSkudGhlbigoY29udGVudCkgPT4gewotICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVh
bChjb250ZW50LmJ1aWxkZXJzLCB7Ci0gICAgICAgICAgICAgICAgJzEnOiB7bmFtZTogJ1NvbWVC
dWlsZGVyJywgYnVpbGRVcmw6ICdodHRwczovL2J1aWxkLndlYmtpdC5vcmcvYnVpbGRlcnMvJGJ1
aWxkZXJOYW1lL2J1aWxkLyRidWlsZE51bWJlcid9LAotICAgICAgICAgICAgICAgICcyJzoge25h
bWU6ICdTb21lT3RoZXJCdWlsZGVyJywgYnVpbGRVcmw6IG51bGx9Ci0gICAgICAgICAgICB9KTsK
LQotICAgICAgICAgICAgbGV0IG1hbmlmZXN0ID0gTWFuaWZlc3QuX2RpZEZldGNoTWFuaWZlc3Qo
Y29udGVudCk7Ci0KLSAgICAgICAgICAgIGxldCBidWlsZGVyID0gQnVpbGRlci5maW5kQnlJZCgx
KTsKLSAgICAgICAgICAgIGFzc2VydChidWlsZGVyKTsKLSAgICAgICAgICAgIGFzc2VydC5lcXVh
bChidWlsZGVyLm5hbWUoKSwgJ1NvbWVCdWlsZGVyJyk7Ci0gICAgICAgICAgICBhc3NlcnQuZXF1
YWwoYnVpbGRlci51cmxGb3JCdWlsZCgxMjMpLCAnaHR0cHM6Ly9idWlsZC53ZWJraXQub3JnL2J1
aWxkZXJzL1NvbWVCdWlsZGVyL2J1aWxkLzEyMycpOwotCi0gICAgICAgICAgICBidWlsZGVyID0g
QnVpbGRlci5maW5kQnlJZCgyKTsKLSAgICAgICAgICAgIGFzc2VydChidWlsZGVyKTsKLSAgICAg
ICAgICAgIGFzc2VydC5lcXVhbChidWlsZGVyLm5hbWUoKSwgJ1NvbWVPdGhlckJ1aWxkZXInKTsK
LSAgICAgICAgICAgIGFzc2VydC5lcXVhbChidWlsZGVyLnVybEZvckJ1aWxkKDEyMyksIG51bGwp
OwotICAgICAgICB9KTsKLSAgICB9KTsKLQotICAgIGl0KCJzaG91bGQgZ2VuZXJhdGUgbWFuaWZl
c3Qgd2l0aCB0ZXN0cywgbWV0cmljcywgYW5kIHBsYXRmb3JtcyIsICgpID0+IHsKLSAgICAgICAg
bGV0IGRiID0gVGVzdFNlcnZlci5kYXRhYmFzZSgpOwotICAgICAgICByZXR1cm4gUHJvbWlzZS5h
bGwoWwotICAgICAgICAgICAgZGIuaW5zZXJ0KCd0ZXN0cycsIHtpZDogMSwgbmFtZTogJ1NvbWVU
ZXN0J30pLAotICAgICAgICAgICAgZGIuaW5zZXJ0KCd0ZXN0cycsIHtpZDogMiwgbmFtZTogJ1Nv
bWVPdGhlclRlc3QnfSksCi0gICAgICAgICAgICBkYi5pbnNlcnQoJ3Rlc3RzJywge2lkOiAzLCBu
YW1lOiAnQ2hpbGRUZXN0JywgcGFyZW50OiAxfSksCi0gICAgICAgICAgICBkYi5pbnNlcnQoJ3Rl
c3RzJywge2lkOiA0LCBuYW1lOiAnR3JhbmRDaGlsZCcsIHBhcmVudDogM30pLAotICAgICAgICAg
ICAgZGIuaW5zZXJ0KCdhZ2dyZWdhdG9ycycsIHtpZDogMjAwLCBuYW1lOiAnVG90YWwnfSksCi0g
ICAgICAgICAgICBkYi5pbnNlcnQoJ3Rlc3RfbWV0cmljcycsIHtpZDogNSwgdGVzdDogMSwgbmFt
ZTogJ1RpbWUnfSksCi0gICAgICAgICAgICBkYi5pbnNlcnQoJ3Rlc3RfbWV0cmljcycsIHtpZDog
NiwgdGVzdDogMiwgbmFtZTogJ1RpbWUnLCBhZ2dyZWdhdG9yOiAyMDB9KSwKLSAgICAgICAgICAg
IGRiLmluc2VydCgndGVzdF9tZXRyaWNzJywge2lkOiA3LCB0ZXN0OiAyLCBuYW1lOiAnTWFsbG9j
JywgYWdncmVnYXRvcjogMjAwfSksCi0gICAgICAgICAgICBkYi5pbnNlcnQoJ3Rlc3RfbWV0cmlj
cycsIHtpZDogOCwgdGVzdDogMywgbmFtZTogJ1RpbWUnfSksCi0gICAgICAgICAgICBkYi5pbnNl
cnQoJ3Rlc3RfbWV0cmljcycsIHtpZDogOSwgdGVzdDogNCwgbmFtZTogJ1RpbWUnfSksCi0gICAg
ICAgICAgICBkYi5pbnNlcnQoJ3BsYXRmb3JtcycsIHtpZDogMjMsIG5hbWU6ICdpT1MgOSBpUGhv
bmUgNXMnfSksCi0gICAgICAgICAgICBkYi5pbnNlcnQoJ3BsYXRmb3JtcycsIHtpZDogNDYsIG5h
bWU6ICdUcnVuayBNYXZlcmlja3MnfSksCi0gICAgICAgICAgICBkYi5pbnNlcnQoJ3Rlc3RfY29u
ZmlndXJhdGlvbnMnLCB7aWQ6IDEwMSwgbWV0cmljOiA1LCBwbGF0Zm9ybTogNDYsIHR5cGU6ICdj
dXJyZW50J30pLAotICAgICAgICAgICAgZGIuaW5zZXJ0KCd0ZXN0X2NvbmZpZ3VyYXRpb25zJywg
e2lkOiAxMDIsIG1ldHJpYzogNiwgcGxhdGZvcm06IDQ2LCB0eXBlOiAnY3VycmVudCd9KSwKLSAg
ICAgICAgICAgIGRiLmluc2VydCgndGVzdF9jb25maWd1cmF0aW9ucycsIHtpZDogMTAzLCBtZXRy
aWM6IDcsIHBsYXRmb3JtOiA0NiwgdHlwZTogJ2N1cnJlbnQnfSksCi0gICAgICAgICAgICBkYi5p
bnNlcnQoJ3Rlc3RfY29uZmlndXJhdGlvbnMnLCB7aWQ6IDEwNCwgbWV0cmljOiA4LCBwbGF0Zm9y
bTogNDYsIHR5cGU6ICdjdXJyZW50J30pLAotICAgICAgICAgICAgZGIuaW5zZXJ0KCd0ZXN0X2Nv
bmZpZ3VyYXRpb25zJywge2lkOiAxMDUsIG1ldHJpYzogOSwgcGxhdGZvcm06IDQ2LCB0eXBlOiAn
Y3VycmVudCd9KSwKLSAgICAgICAgICAgIGRiLmluc2VydCgndGVzdF9jb25maWd1cmF0aW9ucycs
IHtpZDogMTA2LCBtZXRyaWM6IDUsIHBsYXRmb3JtOiAyMywgdHlwZTogJ2N1cnJlbnQnfSksCi0g
ICAgICAgICAgICBkYi5pbnNlcnQoJ3Rlc3RfY29uZmlndXJhdGlvbnMnLCB7aWQ6IDEwNywgbWV0
cmljOiA1LCBwbGF0Zm9ybTogMjMsIHR5cGU6ICdiYXNlbGluZSd9KSwKLSAgICAgICAgXSkudGhl
bigoKSA9PiB7Ci0gICAgICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5nZXRK
U09OKCcvYXBpL21hbmlmZXN0Jyk7Ci0gICAgICAgIH0pLnRoZW4oKGNvbnRlbnQpID0+IHsKLSAg
ICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoY29udGVudC50ZXN0cywgewotICAgICAgICAgICAg
ICAgICIxIjogeyJuYW1lIjogIlNvbWVUZXN0IiwgInBhcmVudElkIjogbnVsbCwgInVybCI6IG51
bGx9LAotICAgICAgICAgICAgICAgICIyIjogeyJuYW1lIjogIlNvbWVPdGhlclRlc3QiLCAicGFy
ZW50SWQiOiBudWxsLCAidXJsIjogbnVsbH0sCi0gICAgICAgICAgICAgICAgIjMiOiB7Im5hbWUi
OiAiQ2hpbGRUZXN0IiwgInBhcmVudElkIjogIjEiLCAidXJsIjogbnVsbH0sCi0gICAgICAgICAg
ICAgICAgIjQiOiB7Im5hbWUiOiAiR3JhbmRDaGlsZCIsICJwYXJlbnRJZCI6ICIzIiwgInVybCI6
IG51bGx9LAotICAgICAgICAgICAgfSk7Ci0KLSAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwo
Y29udGVudC5tZXRyaWNzLCB7Ci0gICAgICAgICAgICAgICAgJzUnOiB7bmFtZTogJ1RpbWUnLCB0
ZXN0OiAnMScsIGFnZ3JlZ2F0b3I6IG51bGx9LAotICAgICAgICAgICAgICAgICc2Jzoge25hbWU6
ICdUaW1lJywgdGVzdDogJzInLCBhZ2dyZWdhdG9yOiAnVG90YWwnfSwKLSAgICAgICAgICAgICAg
ICAnNyc6IHtuYW1lOiAnTWFsbG9jJywgdGVzdDogJzInLCBhZ2dyZWdhdG9yOiAnVG90YWwnfSwK
LSAgICAgICAgICAgICAgICAnOCc6IHtuYW1lOiAnVGltZScsIHRlc3Q6ICczJywgYWdncmVnYXRv
cjogbnVsbH0sCi0gICAgICAgICAgICAgICAgJzknOiB7bmFtZTogJ1RpbWUnLCB0ZXN0OiAnNCcs
IGFnZ3JlZ2F0b3I6IG51bGx9LAotICAgICAgICAgICAgfSk7Ci0KLSAgICAgICAgICAgIGxldCBt
YW5pZmVzdCA9IE1hbmlmZXN0Ll9kaWRGZXRjaE1hbmlmZXN0KGNvbnRlbnQpOwotCi0gICAgICAg
ICAgICBsZXQgc29tZVRlc3QgPSBUZXN0LmZpbmRCeUlkKDEpOwotICAgICAgICAgICAgbGV0IHNv
bWVUZXN0TWV0cmljID0gTWV0cmljLmZpbmRCeUlkKDUpOwotICAgICAgICAgICAgbGV0IHNvbWVP
dGhlclRlc3QgPSBUZXN0LmZpbmRCeUlkKDIpOwotICAgICAgICAgICAgbGV0IHNvbWVPdGhlclRl
c3RUaW1lID0gTWV0cmljLmZpbmRCeUlkKDYpOwotICAgICAgICAgICAgbGV0IHNvbWVPdGhlclRl
c3RNYWxsb2MgPSBNZXRyaWMuZmluZEJ5SWQoNyk7Ci0gICAgICAgICAgICBsZXQgY2hpbGRUZXN0
ID0gVGVzdC5maW5kQnlJZCgzKTsKLSAgICAgICAgICAgIGxldCBjaGlsZFRlc3RNZXRyaWMgPSBN
ZXRyaWMuZmluZEJ5SWQoOCk7Ci0gICAgICAgICAgICBsZXQgZ3JhbmRDaGlsZFRlc3QgPSBUZXN0
LmZpbmRCeUlkKDQpOwotICAgICAgICAgICAgbGV0IGlvczlpcGhvbmU1cyA9IFBsYXRmb3JtLmZp
bmRCeUlkKDIzKTsKLSAgICAgICAgICAgIGxldCBtYXZlcmlja3MgPSBQbGF0Zm9ybS5maW5kQnlJ
ZCg0Nik7Ci0gICAgICAgICAgICBhc3NlcnQoc29tZVRlc3QpOwotICAgICAgICAgICAgYXNzZXJ0
KHNvbWVUZXN0TWV0cmljKTsKLSAgICAgICAgICAgIGFzc2VydChzb21lT3RoZXJUZXN0KTsKLSAg
ICAgICAgICAgIGFzc2VydChzb21lT3RoZXJUZXN0VGltZSk7Ci0gICAgICAgICAgICBhc3NlcnQo
c29tZU90aGVyVGVzdE1hbGxvYyk7Ci0gICAgICAgICAgICBhc3NlcnQoY2hpbGRUZXN0KTsKLSAg
ICAgICAgICAgIGFzc2VydChjaGlsZFRlc3RNZXRyaWMpOwotICAgICAgICAgICAgYXNzZXJ0KGdy
YW5kQ2hpbGRUZXN0KTsKLSAgICAgICAgICAgIGFzc2VydChpb3M5aXBob25lNXMpOwotICAgICAg
ICAgICAgYXNzZXJ0KG1hdmVyaWNrcyk7Ci0KLSAgICAgICAgICAgIGFzc2VydC5lcXVhbChtYXZl
cmlja3MubmFtZSgpLCAnVHJ1bmsgTWF2ZXJpY2tzJyk7Ci0gICAgICAgICAgICBhc3NlcnQobWF2
ZXJpY2tzLmhhc1Rlc3Qoc29tZVRlc3QpKTsKLSAgICAgICAgICAgIGFzc2VydChtYXZlcmlja3Mu
aGFzVGVzdChzb21lT3RoZXJUZXN0KSk7Ci0gICAgICAgICAgICBhc3NlcnQobWF2ZXJpY2tzLmhh
c1Rlc3QoY2hpbGRUZXN0KSk7Ci0gICAgICAgICAgICBhc3NlcnQobWF2ZXJpY2tzLmhhc1Rlc3Qo
Z3JhbmRDaGlsZFRlc3QpKTsKLSAgICAgICAgICAgIGFzc2VydChtYXZlcmlja3MuaGFzTWV0cmlj
KHNvbWVUZXN0TWV0cmljKSk7Ci0gICAgICAgICAgICBhc3NlcnQobWF2ZXJpY2tzLmhhc01ldHJp
Yyhzb21lT3RoZXJUZXN0VGltZSkpOwotICAgICAgICAgICAgYXNzZXJ0KG1hdmVyaWNrcy5oYXNN
ZXRyaWMoc29tZU90aGVyVGVzdE1hbGxvYykpOwotICAgICAgICAgICAgYXNzZXJ0KG1hdmVyaWNr
cy5oYXNNZXRyaWMoY2hpbGRUZXN0TWV0cmljKSk7Ci0KLSAgICAgICAgICAgIGFzc2VydC5lcXVh
bChpb3M5aXBob25lNXMubmFtZSgpLCAnaU9TIDkgaVBob25lIDVzJyk7Ci0gICAgICAgICAgICBh
c3NlcnQoaW9zOWlwaG9uZTVzLmhhc1Rlc3Qoc29tZVRlc3QpKTsKLSAgICAgICAgICAgIGFzc2Vy
dCghaW9zOWlwaG9uZTVzLmhhc1Rlc3Qoc29tZU90aGVyVGVzdCkpOwotICAgICAgICAgICAgYXNz
ZXJ0KCFpb3M5aXBob25lNXMuaGFzVGVzdChjaGlsZFRlc3QpKTsKLSAgICAgICAgICAgIGFzc2Vy
dCghaW9zOWlwaG9uZTVzLmhhc1Rlc3QoZ3JhbmRDaGlsZFRlc3QpKTsKLSAgICAgICAgICAgIGFz
c2VydChpb3M5aXBob25lNXMuaGFzTWV0cmljKHNvbWVUZXN0TWV0cmljKSk7Ci0gICAgICAgICAg
ICBhc3NlcnQoIWlvczlpcGhvbmU1cy5oYXNNZXRyaWMoc29tZU90aGVyVGVzdFRpbWUpKTsKLSAg
ICAgICAgICAgIGFzc2VydCghaW9zOWlwaG9uZTVzLmhhc01ldHJpYyhzb21lT3RoZXJUZXN0TWFs
bG9jKSk7Ci0gICAgICAgICAgICBhc3NlcnQoIWlvczlpcGhvbmU1cy5oYXNNZXRyaWMoY2hpbGRU
ZXN0TWV0cmljKSk7Ci0KLSAgICAgICAgICAgIGFzc2VydC5lcXVhbChzb21lVGVzdC5uYW1lKCks
ICdTb21lVGVzdCcpOwotICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHNvbWVUZXN0LnBhcmVudFRl
c3QoKSwgbnVsbCk7Ci0gICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKHNvbWVUZXN0LnBhdGgo
KSwgW3NvbWVUZXN0XSk7Ci0gICAgICAgICAgICBhc3NlcnQoIXNvbWVUZXN0Lm9ubHlDb250YWlu
c1NpbmdsZU1ldHJpYygpKTsKLSAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoc29tZVRlc3Qu
Y2hpbGRUZXN0cygpLCBbY2hpbGRUZXN0XSk7Ci0gICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFs
KHNvbWVUZXN0Lm1ldHJpY3MoKSwgW3NvbWVUZXN0TWV0cmljXSk7Ci0KLSAgICAgICAgICAgIGFz
c2VydC5lcXVhbChzb21lVGVzdE1ldHJpYy5uYW1lKCksICdUaW1lJyk7Ci0gICAgICAgICAgICBh
c3NlcnQuZXF1YWwoc29tZVRlc3RNZXRyaWMuYWdncmVnYXRvck5hbWUoKSwgbnVsbCk7Ci0gICAg
ICAgICAgICBhc3NlcnQuZXF1YWwoc29tZVRlc3RNZXRyaWMubGFiZWwoKSwgJ1RpbWUnKTsKLSAg
ICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoc29tZVRlc3RNZXRyaWMuY2hpbGRNZXRyaWNzKCks
IGNoaWxkVGVzdC5tZXRyaWNzKCkpOwotICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHNvbWVUZXN0
TWV0cmljLmZ1bGxOYW1lKCksICdTb21lVGVzdCA6IFRpbWUnKTsKLQotICAgICAgICAgICAgYXNz
ZXJ0LmVxdWFsKHNvbWVPdGhlclRlc3QubmFtZSgpLCAnU29tZU90aGVyVGVzdCcpOwotICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKHNvbWVPdGhlclRlc3QucGFyZW50VGVzdCgpLCBudWxsKTsKLSAg
ICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoc29tZU90aGVyVGVzdC5wYXRoKCksIFtzb21lT3Ro
ZXJUZXN0XSk7Ci0gICAgICAgICAgICBhc3NlcnQoIXNvbWVPdGhlclRlc3Qub25seUNvbnRhaW5z
U2luZ2xlTWV0cmljKCkpOwotICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChzb21lT3RoZXJU
ZXN0LmNoaWxkVGVzdHMoKSwgW10pOwotICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHNvbWVPdGhl
clRlc3QubWV0cmljcygpLmxlbmd0aCwgMik7Ci0gICAgICAgICAgICBhc3NlcnQuZXF1YWwoc29t
ZU90aGVyVGVzdC5tZXRyaWNzKClbMF0ubmFtZSgpLCAnVGltZScpOwotICAgICAgICAgICAgYXNz
ZXJ0LmVxdWFsKHNvbWVPdGhlclRlc3QubWV0cmljcygpWzBdLmFnZ3JlZ2F0b3JOYW1lKCksICdU
b3RhbCcpOwotICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHNvbWVPdGhlclRlc3QubWV0cmljcygp
WzBdLmxhYmVsKCksICdUaW1lIDogVG90YWwnKTsKLSAgICAgICAgICAgIGFzc2VydC5lcXVhbChz
b21lT3RoZXJUZXN0Lm1ldHJpY3MoKVswXS5jaGlsZE1ldHJpY3MoKS5sZW5ndGgsIDApOwotICAg
ICAgICAgICAgYXNzZXJ0LmVxdWFsKHNvbWVPdGhlclRlc3QubWV0cmljcygpWzBdLmZ1bGxOYW1l
KCksICdTb21lT3RoZXJUZXN0IDogVGltZSA6IFRvdGFsJyk7Ci0gICAgICAgICAgICBhc3NlcnQu
ZXF1YWwoc29tZU90aGVyVGVzdC5tZXRyaWNzKClbMV0ubmFtZSgpLCAnTWFsbG9jJyk7Ci0gICAg
ICAgICAgICBhc3NlcnQuZXF1YWwoc29tZU90aGVyVGVzdC5tZXRyaWNzKClbMV0uYWdncmVnYXRv
ck5hbWUoKSwgJ1RvdGFsJyk7Ci0gICAgICAgICAgICBhc3NlcnQuZXF1YWwoc29tZU90aGVyVGVz
dC5tZXRyaWNzKClbMV0ubGFiZWwoKSwgJ01hbGxvYyA6IFRvdGFsJyk7Ci0gICAgICAgICAgICBh
c3NlcnQuZXF1YWwoc29tZU90aGVyVGVzdC5tZXRyaWNzKClbMV0uY2hpbGRNZXRyaWNzKCkubGVu
Z3RoLCAwKTsKLSAgICAgICAgICAgIGFzc2VydC5lcXVhbChzb21lT3RoZXJUZXN0Lm1ldHJpY3Mo
KVsxXS5mdWxsTmFtZSgpLCAnU29tZU90aGVyVGVzdCA6IE1hbGxvYyA6IFRvdGFsJyk7Ci0KLSAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChjaGlsZFRlc3QubmFtZSgpLCAnQ2hpbGRUZXN0Jyk7Ci0g
ICAgICAgICAgICBhc3NlcnQuZXF1YWwoY2hpbGRUZXN0LnBhcmVudFRlc3QoKSwgc29tZVRlc3Qp
OwotICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChjaGlsZFRlc3QucGF0aCgpLCBbc29tZVRl
c3QsIGNoaWxkVGVzdF0pOwotICAgICAgICAgICAgYXNzZXJ0KCFjaGlsZFRlc3Qub25seUNvbnRh
aW5zU2luZ2xlTWV0cmljKCkpOwotICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChjaGlsZFRl
c3QuY2hpbGRUZXN0cygpLCBbZ3JhbmRDaGlsZFRlc3RdKTsKLSAgICAgICAgICAgIGFzc2VydC5l
cXVhbChjaGlsZFRlc3QubWV0cmljcygpLmxlbmd0aCwgMSk7Ci0gICAgICAgICAgICBhc3NlcnQu
ZXF1YWwoY2hpbGRUZXN0Lm1ldHJpY3MoKVswXS5sYWJlbCgpLCAnVGltZScpOwotICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKGNoaWxkVGVzdC5tZXRyaWNzKClbMF0uZnVsbE5hbWUoKSwgJ1NvbWVU
ZXN0IFx1MjIwQiBDaGlsZFRlc3QgOiBUaW1lJyk7Ci0KLSAgICAgICAgICAgIGFzc2VydC5lcXVh
bChncmFuZENoaWxkVGVzdC5uYW1lKCksICdHcmFuZENoaWxkJyk7Ci0gICAgICAgICAgICBhc3Nl
cnQuZXF1YWwoZ3JhbmRDaGlsZFRlc3QucGFyZW50VGVzdCgpLCBjaGlsZFRlc3QpOwotICAgICAg
ICAgICAgYXNzZXJ0LmRlZXBFcXVhbChncmFuZENoaWxkVGVzdC5wYXRoKCksIFtzb21lVGVzdCwg
Y2hpbGRUZXN0LCBncmFuZENoaWxkVGVzdF0pOwotICAgICAgICAgICAgYXNzZXJ0KGdyYW5kQ2hp
bGRUZXN0Lm9ubHlDb250YWluc1NpbmdsZU1ldHJpYygpKTsKLSAgICAgICAgICAgIGFzc2VydC5k
ZWVwRXF1YWwoZ3JhbmRDaGlsZFRlc3QuY2hpbGRUZXN0cygpLCBbXSk7Ci0gICAgICAgICAgICBh
c3NlcnQuZXF1YWwoZ3JhbmRDaGlsZFRlc3QubWV0cmljcygpLmxlbmd0aCwgMSk7Ci0gICAgICAg
ICAgICBhc3NlcnQuZXF1YWwoZ3JhbmRDaGlsZFRlc3QubWV0cmljcygpWzBdLmxhYmVsKCksICdU
aW1lJyk7Ci0gICAgICAgICAgICBhc3NlcnQuZXF1YWwoZ3JhbmRDaGlsZFRlc3QubWV0cmljcygp
WzBdLmZ1bGxOYW1lKCksICdTb21lVGVzdCBcdTIyMEIgQ2hpbGRUZXN0IFx1MjIwQiBHcmFuZENo
aWxkIDogVGltZScpOwotICAgICAgICB9KTsKLSAgICB9KTsKLQotICAgIGl0KCJzaG91bGQgZ2Vu
ZXJhdGUgbWFuaWZlc3Qgd2l0aCB0cmlnZ2VyYWJsZXMiLCAoKSA9PiB7Ci0gICAgICAgIGxldCBk
YiA9IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsKLSAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKFsK
LSAgICAgICAgICAgIGRiLmluc2VydCgncmVwb3NpdG9yaWVzJywge2lkOiAxMSwgbmFtZTogJ1dl
YktpdCcsIHVybDogJ2h0dHBzOi8vdHJhYy53ZWJraXQub3JnLyQxJ30pLAotICAgICAgICAgICAg
ZGIuaW5zZXJ0KCdyZXBvc2l0b3JpZXMnLCB7aWQ6IDksIG5hbWU6ICdPUyBYJ30pLAotICAgICAg
ICAgICAgZGIuaW5zZXJ0KCdyZXBvc2l0b3JpZXMnLCB7aWQ6IDEwMSwgbmFtZTogJ1dlYktpdCcs
IG93bmVyOiA5LCB1cmw6ICdodHRwczovL3RyYWMud2Via2l0Lm9yZy8kMSd9KSwKLSAgICAgICAg
ICAgIGRiLmluc2VydCgnYnVpbGRfdHJpZ2dlcmFibGVzJywge2lkOiAyMDAsIG5hbWU6ICdidWls
ZC53ZWJraXQub3JnJ30pLAotICAgICAgICAgICAgZGIuaW5zZXJ0KCdidWlsZF90cmlnZ2VyYWJs
ZXMnLCB7aWQ6IDIwMSwgbmFtZTogJ2lvcy1idWlsZC53ZWJraXQub3JnJ30pLAotICAgICAgICAg
ICAgZGIuaW5zZXJ0KCd0ZXN0cycsIHtpZDogMSwgbmFtZTogJ1NvbWVUZXN0J30pLAotICAgICAg
ICAgICAgZGIuaW5zZXJ0KCd0ZXN0cycsIHtpZDogMiwgbmFtZTogJ1NvbWVPdGhlclRlc3QnfSks
Ci0gICAgICAgICAgICBkYi5pbnNlcnQoJ3Rlc3RzJywge2lkOiAzLCBuYW1lOiAnQ2hpbGRUZXN0
JywgcGFyZW50OiAxfSksCi0gICAgICAgICAgICBkYi5pbnNlcnQoJ3BsYXRmb3JtcycsIHtpZDog
MjMsIG5hbWU6ICdpT1MgOSBpUGhvbmUgNXMnfSksCi0gICAgICAgICAgICBkYi5pbnNlcnQoJ3Bs
YXRmb3JtcycsIHtpZDogNDYsIG5hbWU6ICdUcnVuayBNYXZlcmlja3MnfSksCi0gICAgICAgICAg
ICBkYi5pbnNlcnQoJ3Rlc3RfbWV0cmljcycsIHtpZDogNSwgdGVzdDogMSwgbmFtZTogJ1RpbWUn
fSksCi0gICAgICAgICAgICBkYi5pbnNlcnQoJ3Rlc3RfbWV0cmljcycsIHtpZDogOCwgdGVzdDog
MiwgbmFtZTogJ0ZyYW1lUmF0ZSd9KSwKLSAgICAgICAgICAgIGRiLmluc2VydCgndGVzdF9tZXRy
aWNzJywge2lkOiA5LCB0ZXN0OiAzLCBuYW1lOiAnVGltZSd9KSwKLSAgICAgICAgICAgIGRiLmlu
c2VydCgndGVzdF9jb25maWd1cmF0aW9ucycsIHtpZDogMTAxLCBtZXRyaWM6IDUsIHBsYXRmb3Jt
OiA0NiwgdHlwZTogJ2N1cnJlbnQnfSksCi0gICAgICAgICAgICBkYi5pbnNlcnQoJ3Rlc3RfY29u
ZmlndXJhdGlvbnMnLCB7aWQ6IDEwMiwgbWV0cmljOiA4LCBwbGF0Zm9ybTogNDYsIHR5cGU6ICdj
dXJyZW50J30pLAotICAgICAgICAgICAgZGIuaW5zZXJ0KCd0ZXN0X2NvbmZpZ3VyYXRpb25zJywg
e2lkOiAxMDMsIG1ldHJpYzogOSwgcGxhdGZvcm06IDQ2LCB0eXBlOiAnY3VycmVudCd9KSwKLSAg
ICAgICAgICAgIGRiLmluc2VydCgndGVzdF9jb25maWd1cmF0aW9ucycsIHtpZDogMTA0LCBtZXRy
aWM6IDUsIHBsYXRmb3JtOiAyMywgdHlwZTogJ2N1cnJlbnQnfSksCi0gICAgICAgICAgICBkYi5p
bnNlcnQoJ3Rlc3RfY29uZmlndXJhdGlvbnMnLCB7aWQ6IDEwNSwgbWV0cmljOiA4LCBwbGF0Zm9y
bTogMjMsIHR5cGU6ICdjdXJyZW50J30pLAotICAgICAgICAgICAgZGIuaW5zZXJ0KCd0ZXN0X2Nv
bmZpZ3VyYXRpb25zJywge2lkOiAxMDYsIG1ldHJpYzogOSwgcGxhdGZvcm06IDIzLCB0eXBlOiAn
Y3VycmVudCd9KSwKLSAgICAgICAgICAgIGRiLmluc2VydCgndHJpZ2dlcmFibGVfcmVwb3NpdG9y
aWVzJywge3RyaWdnZXJhYmxlOiAyMDAsIHJlcG9zaXRvcnk6IDExfSksCi0gICAgICAgICAgICBk
Yi5pbnNlcnQoJ3RyaWdnZXJhYmxlX3JlcG9zaXRvcmllcycsIHt0cmlnZ2VyYWJsZTogMjAxLCBy
ZXBvc2l0b3J5OiAxMX0pLAotICAgICAgICAgICAgZGIuaW5zZXJ0KCd0cmlnZ2VyYWJsZV9jb25m
aWd1cmF0aW9ucycsIHt0cmlnZ2VyYWJsZTogMjAwLCB0ZXN0OiAxLCBwbGF0Zm9ybTogNDZ9KSwK
LSAgICAgICAgICAgIGRiLmluc2VydCgndHJpZ2dlcmFibGVfY29uZmlndXJhdGlvbnMnLCB7dHJp
Z2dlcmFibGU6IDIwMCwgdGVzdDogMiwgcGxhdGZvcm06IDQ2fSksCi0gICAgICAgICAgICBkYi5p
bnNlcnQoJ3RyaWdnZXJhYmxlX2NvbmZpZ3VyYXRpb25zJywge3RyaWdnZXJhYmxlOiAyMDEsIHRl
c3Q6IDEsIHBsYXRmb3JtOiAyM30pLAotICAgICAgICAgICAgZGIuaW5zZXJ0KCd0cmlnZ2VyYWJs
ZV9jb25maWd1cmF0aW9ucycsIHt0cmlnZ2VyYWJsZTogMjAxLCB0ZXN0OiAyLCBwbGF0Zm9ybTog
MjN9KSwKLSAgICAgICAgXSkudGhlbigoKSA9PiB7Ci0gICAgICAgICAgICByZXR1cm4gTWFuaWZl
c3QuZmV0Y2goKTsKLSAgICAgICAgfSkudGhlbigoKSA9PiB7Ci0gICAgICAgICAgICBsZXQgd2Vi
a2l0ID0gUmVwb3NpdG9yeS5maW5kQnlJZCgxMSk7Ci0gICAgICAgICAgICBhc3NlcnQuZXF1YWwo
d2Via2l0Lm5hbWUoKSwgJ1dlYktpdCcpOwotICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHdlYmtp
dC51cmxGb3JSZXZpc2lvbigxMjMpLCAnaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvMTIzJyk7Ci0K
LSAgICAgICAgICAgIGxldCBvc1dlYmtpdDEgPSBSZXBvc2l0b3J5LmZpbmRCeUlkKDEwMSk7Ci0g
ICAgICAgICAgICBhc3NlcnQuZXF1YWwob3NXZWJraXQxLm5hbWUoKSwgJ1dlYktpdCcpOwotICAg
ICAgICAgICAgYXNzZXJ0LmVxdWFsKG9zV2Via2l0MS5vd25lcigpLCA5KTsKLSAgICAgICAgICAg
IGFzc2VydC5lcXVhbChvc1dlYmtpdDEudXJsRm9yUmV2aXNpb24oMTIzKSwgJ2h0dHBzOi8vdHJh
Yy53ZWJraXQub3JnLzEyMycpOwotCi0gICAgICAgICAgICBsZXQgb3N4ID0gUmVwb3NpdG9yeS5m
aW5kQnlJZCg5KTsKLSAgICAgICAgICAgIGFzc2VydC5lcXVhbChvc3gubmFtZSgpLCAnT1MgWCcp
OwotCi0gICAgICAgICAgICBsZXQgc29tZVRlc3QgPSBUZXN0LmZpbmRCeUlkKDEpOwotICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKHNvbWVUZXN0Lm5hbWUoKSwgJ1NvbWVUZXN0Jyk7Ci0KLSAgICAg
ICAgICAgIGxldCBzb21lT3RoZXJUZXN0ID0gVGVzdC5maW5kQnlJZCgyKTsKLSAgICAgICAgICAg
IGFzc2VydC5lcXVhbChzb21lT3RoZXJUZXN0Lm5hbWUoKSwgJ1NvbWVPdGhlclRlc3QnKTsKLQot
ICAgICAgICAgICAgbGV0IGNoaWxkVGVzdCA9IFRlc3QuZmluZEJ5SWQoMyk7Ci0gICAgICAgICAg
ICBhc3NlcnQuZXF1YWwoY2hpbGRUZXN0Lm5hbWUoKSwgJ0NoaWxkVGVzdCcpOwotCi0gICAgICAg
ICAgICBsZXQgaW9zOWlwaG9uZTVzID0gUGxhdGZvcm0uZmluZEJ5SWQoMjMpOwotICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKGlvczlpcGhvbmU1cy5uYW1lKCksICdpT1MgOSBpUGhvbmUgNXMnKTsK
LQotICAgICAgICAgICAgbGV0IG1hdmVyaWNrcyA9IFBsYXRmb3JtLmZpbmRCeUlkKDQ2KTsKLSAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChtYXZlcmlja3MubmFtZSgpLCAnVHJ1bmsgTWF2ZXJpY2tz
Jyk7Ci0KLSAgICAgICAgICAgIGFzc2VydC5lcXVhbChUcmlnZ2VyYWJsZS5hbGwoKS5sZW5ndGgs
IDIpOwotCi0gICAgICAgICAgICBsZXQgb3N4VHJpZ2dlcmFibGUgPSBUcmlnZ2VyYWJsZS5maW5k
QnlUZXN0Q29uZmlndXJhdGlvbihzb21lVGVzdCwgbWF2ZXJpY2tzKTsKLSAgICAgICAgICAgIGFz
c2VydC5lcXVhbChvc3hUcmlnZ2VyYWJsZS5uYW1lKCksICdidWlsZC53ZWJraXQub3JnJyk7Ci0g
ICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKG9zeFRyaWdnZXJhYmxlLmFjY2VwdGVkUmVwb3Np
dG9yaWVzKCksIFt3ZWJraXRdKTsKLQotICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKFRyaWdnZXJh
YmxlLmZpbmRCeVRlc3RDb25maWd1cmF0aW9uKHNvbWVPdGhlclRlc3QsIG1hdmVyaWNrcyksIG9z
eFRyaWdnZXJhYmxlKTsKLSAgICAgICAgICAgIGFzc2VydC5lcXVhbChUcmlnZ2VyYWJsZS5maW5k
QnlUZXN0Q29uZmlndXJhdGlvbihjaGlsZFRlc3QsIG1hdmVyaWNrcyksIG9zeFRyaWdnZXJhYmxl
KTsKLQotICAgICAgICAgICAgbGV0IGlvc1RyaWdnZXJhYmxlID0gVHJpZ2dlcmFibGUuZmluZEJ5
VGVzdENvbmZpZ3VyYXRpb24oc29tZU90aGVyVGVzdCwgaW9zOWlwaG9uZTVzKTsKLSAgICAgICAg
ICAgIGFzc2VydC5ub3RFcXVhbChpb3NUcmlnZ2VyYWJsZSwgb3N4VHJpZ2dlcmFibGUpOwotICAg
ICAgICAgICAgYXNzZXJ0LmVxdWFsKGlvc1RyaWdnZXJhYmxlLm5hbWUoKSwgJ2lvcy1idWlsZC53
ZWJraXQub3JnJyk7Ci0gICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGlvc1RyaWdnZXJhYmxl
LmFjY2VwdGVkUmVwb3NpdG9yaWVzKCksIFt3ZWJraXRdKTsKLQotICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKFRyaWdnZXJhYmxlLmZpbmRCeVRlc3RDb25maWd1cmF0aW9uKHNvbWVPdGhlclRlc3Qs
IGlvczlpcGhvbmU1cyksIGlvc1RyaWdnZXJhYmxlKTsKLSAgICAgICAgICAgIGFzc2VydC5lcXVh
bChUcmlnZ2VyYWJsZS5maW5kQnlUZXN0Q29uZmlndXJhdGlvbihjaGlsZFRlc3QsIGlvczlpcGhv
bmU1cyksIGlvc1RyaWdnZXJhYmxlKTsKLSAgICAgICAgfSk7Ci0gICAgfSk7Ci0KLX0pOwpkaWZm
IC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9hcGktdXBsb2Fk
ZWQtZmlsZS10ZXN0cy5qcyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMv
YXBpLXVwbG9hZGVkLWZpbGUtdGVzdHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmVkYzU0NzdkNTVhNGM3NDdi
MjFkNzA5NDg1NTJlMzU3ZjQ2MmE5NAotLS0gL2Rldi9udWxsCisrKyBiL1dlYnNpdGVzL3BlcmYu
d2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvYXBpLXVwbG9hZGVkLWZpbGUtdGVzdHMuanMKQEAgLTAs
MCArMSwzMjQgQEAKKyd1c2Ugc3RyaWN0JzsKKworcmVxdWlyZSgnLi4vdG9vbHMvanMvdjMtbW9k
ZWxzLmpzJyk7CisKK2NvbnN0IGFzc2VydCA9IHJlcXVpcmUoJ2Fzc2VydCcpOworZ2xvYmFsLkZv
cm1EYXRhID0gcmVxdWlyZSgnZm9ybS1kYXRhJyk7CisKK2NvbnN0IFRlc3RTZXJ2ZXIgPSByZXF1
aXJlKCcuL3Jlc291cmNlcy90ZXN0LXNlcnZlci5qcycpOworY29uc3QgVGVtcG9yYXJ5RmlsZSA9
IHJlcXVpcmUoJy4vcmVzb3VyY2VzL3RlbXBvcmFyeS1maWxlLmpzJykuVGVtcG9yYXJ5RmlsZTsK
KworZGVzY3JpYmUoJy9hcGkvdXBsb2FkZWQtZmlsZScsIGZ1bmN0aW9uICgpIHsKKyAgICB0aGlz
LnRpbWVvdXQoNTAwMCk7CisgICAgVGVzdFNlcnZlci5pbmplY3QoKTsKKworICAgIFRlbXBvcmFy
eUZpbGUuaW5qZWN0KCk7CisKKyAgICBpdCgnc2hvdWxkIHJldHVybiAiSW52YWxpZEFyZ3VtZW50
cyIgd2hlbiBuZWl0aGVyIHBhdGggbm9yIHNoYTI1NiBxdWVyeSBpcyBzZXQnLCAoKSA9PiB7Cisg
ICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLmdldEpTT04oJy9hcGkvdXBsb2Fk
ZWQtZmlsZScpLnRoZW4oKGNvbnRlbnQpID0+IHsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChj
b250ZW50WydzdGF0dXMnXSwgJ0ludmFsaWRBcmd1bWVudHMnKTsKKyAgICAgICAgICAgIHJldHVy
biBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLmdldEpTT04oJy9hcGkvdXBsb2FkZWQtZmlsZS8nKTsK
KyAgICAgICAgfSkudGhlbigoY29udGVudCkgPT4geworICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KGNvbnRlbnRbJ3N0YXR1cyddLCAnSW52YWxpZEFyZ3VtZW50cycpOworICAgICAgICB9KTsKKyAg
ICB9KTsKKworICAgIGl0KCdzaG91bGQgcmV0dXJuIDQwNCB3aGVuIHRoZXJlIGlzIG5vIGZpbGUg
d2l0aCB0aGUgc3BlY2lmaWVkIElEJywgKCkgPT4geworICAgICAgICByZXR1cm4gVGVzdFNlcnZl
ci5yZW1vdGVBUEkoKS5nZXRKU09OKCcvYXBpL3VwbG9hZGVkLWZpbGUvMScpLnRoZW4oKGNvbnRl
bnQpID0+IHsKKyAgICAgICAgICAgIGFzc2VydChmYWxzZSwgJ3Nob3VsZCBuZXZlciBiZSByZWFj
aGVkJyk7CisgICAgICAgIH0sIChlcnJvcikgPT4geworICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KGVycm9yLCA0MDQpOworICAgICAgICB9KTsKKyAgICB9KTsKKworICAgIGl0KCdzaG91bGQgcmV0
dXJuIDQwNCB3aGVuIHRoZSBzcGVjaWZpZWQgSUQgaXMgbm90IGEgdmFsaWQgaW50ZWdlcicsICgp
ID0+IHsKKyAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkuZ2V0SlNPTignL2Fw
aS91cGxvYWRlZC1maWxlL2ZvbycpLnRoZW4oKGNvbnRlbnQpID0+IHsKKyAgICAgICAgICAgIGFz
c2VydChmYWxzZSwgJ3Nob3VsZCBuZXZlciBiZSByZWFjaGVkJyk7CisgICAgICAgIH0sIChlcnJv
cikgPT4geworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGVycm9yLCA0MDQpOworICAgICAgICB9
KTsKKyAgICB9KTsKKworICAgIGl0KCdzaG91bGQgcmV0dXJuIHRoZSBmaWxlIGNvbnRlbnQgbWF0
Y2hpbmcgdGhlIHNwZWNpZmllZCBmaWxlIElEJywgKCkgPT4geworICAgICAgICBsZXQgdXBsb2Fk
ZWRGaWxlOworICAgICAgICByZXR1cm4gVGVtcG9yYXJ5RmlsZS5tYWtlVGVtcG9yYXJ5RmlsZSgn
c29tZS5kYXQnLCAnc29tZSBjb250ZW50JykudGhlbigoc3RyZWFtKSA9PiB7CisgICAgICAgICAg
ICByZXR1cm4gUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgndXBsb2FkLWZpbGUnLCB7bmV3Rmls
ZTogc3RyZWFtfSwge3VzZUZvcm1EYXRhOiB0cnVlfSk7CisgICAgICAgIH0pLnRoZW4oKHJlc3Bv
bnNlKSA9PiB7CisgICAgICAgICAgICB1cGxvYWRlZEZpbGUgPSByZXNwb25zZVsndXBsb2FkZWRG
aWxlJ107CisgICAgICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5zZW5kSHR0
cFJlcXVlc3QoYC9hcGkvdXBsb2FkZWQtZmlsZS8ke3VwbG9hZGVkRmlsZVsnaWQnXX1gLCAnR0VU
JywgbnVsbCwgbnVsbCk7CisgICAgICAgIH0pLnRoZW4oKHJlc3BvbnNlKSA9PiB7CisgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwocmVzcG9uc2UucmVzcG9uc2VUZXh0LCAnc29tZSBjb250ZW50Jyk7
CisgICAgICAgIH0pOworICAgIH0pOworCisgICAgaXQoJ3Nob3VsZCByZXR1cm4gdGhlIGZpbGUg
Y29udGVudCB3aXRoIGNyZWF0ZWRBdCB1c2luZyBQT1NJWCB0aW1lc3RhbXAgaW4gVVRDJywgKCkg
PT4geworICAgICAgICBsZXQgdXBsb2FkZWRGaWxlOworICAgICAgICBjb25zdCBzdGFydFRpbWUg
PSArRGF0ZS5ub3coKTsKKyAgICAgICAgcmV0dXJuIFRlbXBvcmFyeUZpbGUubWFrZVRlbXBvcmFy
eUZpbGUoJ3NvbWUuZGF0JywgJ3NvbWUgY29udGVudCcpLnRoZW4oKHN0cmVhbSkgPT4geworICAg
ICAgICAgICAgcmV0dXJuIFByaXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ3VwbG9hZC1maWxlJywg
e25ld0ZpbGU6IHN0cmVhbX0sIHt1c2VGb3JtRGF0YTogdHJ1ZX0pOworICAgICAgICB9KS50aGVu
KChyZXNwb25zZSkgPT4geworICAgICAgICAgICAgdXBsb2FkZWRGaWxlID0gcmVzcG9uc2VbJ3Vw
bG9hZGVkRmlsZSddOworICAgICAgICAgICAgY29uc29sZS5hc3NlcnQodHlwZW9mKHVwbG9hZGVk
RmlsZS5jcmVhdGVkQXQpID09ICdudW1iZXInKQorICAgICAgICAgICAgY29uc3QgY3JlYXRlZEF0
ID0gK25ldyBEYXRlKHVwbG9hZGVkRmlsZS5jcmVhdGVkQXQpOworICAgICAgICAgICAgY29uc3Qg
ZW5kVGltZSA9ICtEYXRlLm5vdygpOworICAgICAgICAgICAgYXNzZXJ0KHN0YXJ0VGltZSA8PSBj
cmVhdGVkQXQsICdjcmVhdGVkQXQgc2hvdWxkIGJlIGFmdGVyIHRoZSB0aW1lIFBPU1QgcmVxdWVz
dCB3YXMgbWFkZScpOworICAgICAgICAgICAgYXNzZXJ0KGNyZWF0ZWRBdCA8PSBlbmRUaW1lLCAn
Y3JlYXRlZEF0IHNob3VsZCBiZSBiZWZvcmUgdGhlIHVwbG9hZGVkRmlsZSByZXNwb25zZSBoYWQg
ZmluaXNoZWQnKTsKKyAgICAgICAgfSk7CisgICAgfSk7CisKKyAgICBpdCgnc2hvdWxkIHJldHVy
biAiTm90Rm91bmQiIHdoZW4gdGhlIHNwZWNpZmllZCBTSEEyNTYgaXMgaW52YWxpZCcsICgpID0+
IHsKKyAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkuZ2V0SlNPTignL2FwaS91
cGxvYWRlZC1maWxlLz9zaGEyNTY9YWJjJykudGhlbigoY29udGVudCkgPT4geworICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKGNvbnRlbnRbJ3N0YXR1cyddLCAnTm90Rm91bmQnKTsKKyAgICAgICAg
fSk7CisgICAgfSk7CisKKyAgICBpdCgnc2hvdWxkIHJldHVybiAiTm90Rm91bmQiIHdoZW4gdGhl
cmUgaXMgbm8gZmlsZSBtYXRjaGluZyB0aGUgc3BlY2lmaWVkIFNIQTI1NiAnLCAoKSA9PiB7Cisg
ICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLmdldEpTT04oJy9hcGkvdXBsb2Fk
ZWQtZmlsZS8/c2hhMjU2PTUyNTZlYzE4ZjExNjI0MDI1OTA1ZDA1N2Q2YmVmYjAzZDc3YjI0MzUx
MWFjNWY3N2VkNWUwMjIxY2U2ZDg0YjUnKS50aGVuKChjb250ZW50KSA9PiB7CisgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwoY29udGVudFsnc3RhdHVzJ10sICdOb3RGb3VuZCcpOworICAgICAgICB9
KTsKKyAgICB9KTsKKworICAgIGl0KCdzaG91bGQgcmV0dXJuIHRoZSBtZXRhIGRhdGEgb2YgdGhl
IGZpbGUgd2l0aCB0aGUgc3BlY2lmaWVkIFNIQTI1NicsICgpID0+IHsKKyAgICAgICAgbGV0IHVw
bG9hZGVkRmlsZTsKKyAgICAgICAgcmV0dXJuIFRlbXBvcmFyeUZpbGUubWFrZVRlbXBvcmFyeUZp
bGUoJ3NvbWUuZGF0JywgJ3NvbWUgY29udGVudCcpLnRoZW4oKHN0cmVhbSkgPT4geworICAgICAg
ICAgICAgcmV0dXJuIFByaXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ3VwbG9hZC1maWxlJywge25l
d0ZpbGU6IHN0cmVhbX0sIHt1c2VGb3JtRGF0YTogdHJ1ZX0pOworICAgICAgICB9KS50aGVuKChy
ZXNwb25zZSkgPT4geworICAgICAgICAgICAgdXBsb2FkZWRGaWxlID0gcmVzcG9uc2VbJ3VwbG9h
ZGVkRmlsZSddOworICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkuZ2V0
SlNPTihgL2FwaS91cGxvYWRlZC1maWxlLz9zaGEyNTY9JHt1cGxvYWRlZEZpbGVbJ3NoYTI1Nidd
fWApOworICAgICAgICB9KS50aGVuKChyZXNwb25zZSkgPT4geworICAgICAgICAgICAgYXNzZXJ0
LmRlZXBFcXVhbCh1cGxvYWRlZEZpbGUsIHJlc3BvbnNlWyd1cGxvYWRlZEZpbGUnXSk7CisgICAg
ICAgIH0pOworICAgIH0pOworCisgICAgaXQoJ3Nob3VsZCByZXR1cm4gIk5vdEZvdW5kIiB3aGVu
IHRoZSBmaWxlIG1hdGNoaW5nIHRoZSBzcGVjaWZpZWQgU0hBMjU2IGhhZCBhbHJlYWR5IGJlZW4g
ZGVsZXRlZCcsICgpID0+IHsKKyAgICAgICAgbGV0IHVwbG9hZGVkRmlsZTsKKyAgICAgICAgcmV0
dXJuIFRlbXBvcmFyeUZpbGUubWFrZVRlbXBvcmFyeUZpbGUoJ3NvbWUuZGF0JywgJ3NvbWUgY29u
dGVudCcpLnRoZW4oKHN0cmVhbSkgPT4geworICAgICAgICAgICAgcmV0dXJuIFByaXZpbGVnZWRB
UEkuc2VuZFJlcXVlc3QoJ3VwbG9hZC1maWxlJywge25ld0ZpbGU6IHN0cmVhbX0sIHt1c2VGb3Jt
RGF0YTogdHJ1ZX0pOworICAgICAgICB9KS50aGVuKChyZXNwb25zZSkgPT4geworICAgICAgICAg
ICAgdXBsb2FkZWRGaWxlID0gcmVzcG9uc2VbJ3VwbG9hZGVkRmlsZSddOworICAgICAgICAgICAg
Y29uc3QgZGIgPSBUZXN0U2VydmVyLmRhdGFiYXNlKCk7CisgICAgICAgICAgICByZXR1cm4gZGIu
Y29ubmVjdCgpLnRoZW4oKCkgPT4gZGIucXVlcnkoYFVQREFURSB1cGxvYWRlZF9maWxlcyBTRVQg
ZmlsZV9kZWxldGVkX2F0ID0gbm93KCkgYXQgdGltZSB6b25lICd1dGMnYCkpOworICAgICAgICB9
KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgp
LmdldEpTT04oYC9hcGkvdXBsb2FkZWQtZmlsZS8/c2hhMjU2PSR7dXBsb2FkZWRGaWxlWydzaGEy
NTYnXX1gKTsKKyAgICAgICAgfSkudGhlbigoY29udGVudCkgPT4geworICAgICAgICAgICAgYXNz
ZXJ0LmVxdWFsKGNvbnRlbnRbJ3N0YXR1cyddLCAnTm90Rm91bmQnKTsKKyAgICAgICAgfSk7Cisg
ICAgfSk7CisKKworICAgIGl0KCdzaG91bGQgcmVzcG9uZCB3aXRoIEVUYWcsIEFjY2NlcHQtUmFu
Z2VzLCBDb250ZW50LURpc3Bvc2l0aW9uLCBDb250ZW50LUxlbmd0aCwgYW5kIExhc3QtTW9kaWZp
ZWQgaGVhZGVycycsICgpID0+IHsKKyAgICAgICAgbGV0IHVwbG9hZGVkRmlsZTsKKyAgICAgICAg
cmV0dXJuIFRlbXBvcmFyeUZpbGUubWFrZVRlbXBvcmFyeUZpbGUoJ3NvbWUuZGF0JywgJ3NvbWUg
Y29udGVudCcpLnRoZW4oKHN0cmVhbSkgPT4geworICAgICAgICAgICAgcmV0dXJuIFByaXZpbGVn
ZWRBUEkuc2VuZFJlcXVlc3QoJ3VwbG9hZC1maWxlJywge25ld0ZpbGU6IHN0cmVhbX0sIHt1c2VG
b3JtRGF0YTogdHJ1ZX0pOworICAgICAgICB9KS50aGVuKChyZXNwb25zZSkgPT4geworICAgICAg
ICAgICAgdXBsb2FkZWRGaWxlID0gcmVzcG9uc2VbJ3VwbG9hZGVkRmlsZSddOworICAgICAgICAg
ICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkuc2VuZEh0dHBSZXF1ZXN0KGAvYXBpL3Vw
bG9hZGVkLWZpbGUvJHt1cGxvYWRlZEZpbGVbJ2lkJ119YCwgJ0dFVCcsIG51bGwsIG51bGwpOwor
ICAgICAgICB9KS50aGVuKChyZXNwb25zZSkgPT4geworICAgICAgICAgICAgY29uc3QgaGVhZGVy
cyA9IHJlc3BvbnNlLmhlYWRlcnM7CisKKyAgICAgICAgICAgIGFzc2VydChPYmplY3Qua2V5cyho
ZWFkZXJzKS5pbmNsdWRlcygnZXRhZycpKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChoZWFk
ZXJzWydldGFnJ10sIHVwbG9hZGVkRmlsZVsnc2hhMjU2J10pOworCisgICAgICAgICAgICBhc3Nl
cnQoT2JqZWN0LmtleXMoaGVhZGVycykuaW5jbHVkZXMoJ2FjY2VwdC1yYW5nZXMnKSk7CisgICAg
ICAgICAgICBhc3NlcnQuZXF1YWwoaGVhZGVyc1snYWNjZXB0LXJhbmdlcyddLCAnYnl0ZXMnKTsK
KworICAgICAgICAgICAgYXNzZXJ0KE9iamVjdC5rZXlzKGhlYWRlcnMpLmluY2x1ZGVzKCdjb250
ZW50LWRpc3Bvc2l0aW9uJykpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGhlYWRlcnNbJ2Nv
bnRlbnQtZGlzcG9zaXRpb24nXSwgYGF0dGFjaG1lbnQ7IGZpbGVuYW1lKj11dGYtOCcnc29tZS5k
YXRgKTsKKworICAgICAgICAgICAgYXNzZXJ0KE9iamVjdC5rZXlzKGhlYWRlcnMpLmluY2x1ZGVz
KCdjb250ZW50LWxlbmd0aCcpKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChoZWFkZXJzWydj
b250ZW50LWxlbmd0aCddLCB1cGxvYWRlZEZpbGVbJ3NpemUnXSk7CisKKyAgICAgICAgICAgIGFz
c2VydChPYmplY3Qua2V5cyhoZWFkZXJzKS5pbmNsdWRlcygnbGFzdC1tb2RpZmllZCcpKTsKKyAg
ICAgICAgfSk7CisgICAgfSk7CisKKyAgICBpdCgnc2hvdWxkIHJlc3BvbmQgd2l0aCB0aGUgc2Ft
ZSBMYXN0LU1vZGlmaWVkIGVhY2ggdGltZScsICgpID0+IHsKKyAgICAgICAgbGV0IGlkOworICAg
ICAgICBsZXQgbGFzdE1vZGlmaWVkOworICAgICAgICByZXR1cm4gVGVtcG9yYXJ5RmlsZS5tYWtl
VGVtcG9yYXJ5RmlsZSgnc29tZS5kYXQnLCAnc29tZSBjb250ZW50JykudGhlbigoc3RyZWFtKSA9
PiB7CisgICAgICAgICAgICByZXR1cm4gUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgndXBsb2Fk
LWZpbGUnLCB7bmV3RmlsZTogc3RyZWFtfSwge3VzZUZvcm1EYXRhOiB0cnVlfSk7CisgICAgICAg
IH0pLnRoZW4oKHJlc3BvbnNlKSA9PiB7CisgICAgICAgICAgICBpZCA9IHJlc3BvbnNlWyd1cGxv
YWRlZEZpbGUnXVsnaWQnXTsKKyAgICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQ
SSgpLnNlbmRIdHRwUmVxdWVzdChgL2FwaS91cGxvYWRlZC1maWxlLyR7aWR9YCwgJ0dFVCcsIG51
bGwsIG51bGwpOworICAgICAgICB9KS50aGVuKChyZXNwb25zZSkgPT4geworICAgICAgICAgICAg
bGFzdE1vZGlmaWVkID0gcmVzcG9uc2UuaGVhZGVyc1snbGFzdC1tb2RpZmllZCddOworICAgICAg
ICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkuc2VuZEh0dHBSZXF1ZXN0KGAvYXBp
L3VwbG9hZGVkLWZpbGUvJHtpZH1gLCAnR0VUJywgbnVsbCwgbnVsbCk7CisgICAgICAgIH0pLnRo
ZW4oKHJlc3BvbnNlKSA9PiB7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzcG9uc2UuaGVh
ZGVyc1snbGFzdC1tb2RpZmllZCddLCBsYXN0TW9kaWZpZWQpOworICAgICAgICB9KTsKKyAgICB9
KTsKKworICAgIGl0KCdzaG91bGQgcmVzcG9uZCB3aXRoIENvbnRlbnQtUmFuZ2Ugd2hlbiByZXF1
ZXN0ZWQgYWZ0ZXIgWCBieXRlcycsICgpID0+IHsKKyAgICAgICAgcmV0dXJuIFRlbXBvcmFyeUZp
bGUubWFrZVRlbXBvcmFyeUZpbGUoJ3NvbWUuZGF0JywgJ3NvbWUgY29udGVudCcpLnRoZW4oKHN0
cmVhbSkgPT4geworICAgICAgICAgICAgcmV0dXJuIFByaXZpbGVnZWRBUEkuc2VuZFJlcXVlc3Qo
J3VwbG9hZC1maWxlJywge25ld0ZpbGU6IHN0cmVhbX0sIHt1c2VGb3JtRGF0YTogdHJ1ZX0pOwor
ICAgICAgICB9KS50aGVuKChyZXNwb25zZSkgPT4geworICAgICAgICAgICAgY29uc3QgaWQgPSBy
ZXNwb25zZVsndXBsb2FkZWRGaWxlJ11bJ2lkJ107CisgICAgICAgICAgICByZXR1cm4gVGVzdFNl
cnZlci5yZW1vdGVBUEkoKS5zZW5kSHR0cFJlcXVlc3QoYC9hcGkvdXBsb2FkZWQtZmlsZS8ke2lk
fWAsICdHRVQnLCBudWxsLCBudWxsLCB7aGVhZGVyczogeydSYW5nZSc6ICdieXRlcz01LSd9fSk7
CisgICAgICAgIH0pLnRoZW4oKHJlc3BvbnNlKSA9PiB7CisgICAgICAgICAgICBjb25zdCBoZWFk
ZXJzID0gcmVzcG9uc2UuaGVhZGVyczsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25z
ZS5zdGF0dXNDb2RlLCAyMDYpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGhlYWRlcnNbJ2Nv
bnRlbnQtcmFuZ2UnXSwgJ2J5dGVzIDUtMTEvMTInKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVh
bChyZXNwb25zZS5yZXNwb25zZVRleHQsICdjb250ZW50Jyk7CisgICAgICAgIH0pOworICAgIH0p
OworCisgICAgaXQoJ3Nob3VsZCByZXNwb25kIHdpdGggQ29udGVudC1SYW5nZSB3aGVuIHJlcXVl
c3RlZCBiZXR3ZWVuIFgtWSBieXRlcycsICgpID0+IHsKKyAgICAgICAgcmV0dXJuIFRlbXBvcmFy
eUZpbGUubWFrZVRlbXBvcmFyeUZpbGUoJ3NvbWUuZGF0JywgJ3NvbWUgY29udGVudCcpLnRoZW4o
KHN0cmVhbSkgPT4geworICAgICAgICAgICAgcmV0dXJuIFByaXZpbGVnZWRBUEkuc2VuZFJlcXVl
c3QoJ3VwbG9hZC1maWxlJywge25ld0ZpbGU6IHN0cmVhbX0sIHt1c2VGb3JtRGF0YTogdHJ1ZX0p
OworICAgICAgICB9KS50aGVuKChyZXNwb25zZSkgPT4geworICAgICAgICAgICAgY29uc3QgaWQg
PSByZXNwb25zZVsndXBsb2FkZWRGaWxlJ11bJ2lkJ107CisgICAgICAgICAgICByZXR1cm4gVGVz
dFNlcnZlci5yZW1vdGVBUEkoKS5zZW5kSHR0cFJlcXVlc3QoYC9hcGkvdXBsb2FkZWQtZmlsZS8k
e2lkfWAsICdHRVQnLCBudWxsLCBudWxsLCB7aGVhZGVyczogeydSYW5nZSc6ICdieXRlcz00LTkn
fX0pOworICAgICAgICB9KS50aGVuKChyZXNwb25zZSkgPT4geworICAgICAgICAgICAgY29uc3Qg
aGVhZGVycyA9IHJlc3BvbnNlLmhlYWRlcnM7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVz
cG9uc2Uuc3RhdHVzQ29kZSwgMjA2KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChoZWFkZXJz
Wydjb250ZW50LXJhbmdlJ10sICdieXRlcyA0LTkvMTInKTsKKyAgICAgICAgICAgIGFzc2VydC5l
cXVhbChyZXNwb25zZS5yZXNwb25zZVRleHQsICcgY29udGUnKTsKKyAgICAgICAgfSk7CisgICAg
fSk7CisKKyAgICBpdCgnc2hvdWxkIHJlc3BvbmQgd2l0aCBDb250ZW50LVJhbmdlIHdoZW4gcmVx
dWVzdGVkIGZvciB0aGUgbGFzdCBYIGJ5dGVzJywgKCkgPT4geworICAgICAgICByZXR1cm4gVGVt
cG9yYXJ5RmlsZS5tYWtlVGVtcG9yYXJ5RmlsZSgnc29tZS5kYXQnLCAnc29tZSBjb250ZW50Jyku
dGhlbigoc3RyZWFtKSA9PiB7CisgICAgICAgICAgICByZXR1cm4gUHJpdmlsZWdlZEFQSS5zZW5k
UmVxdWVzdCgndXBsb2FkLWZpbGUnLCB7bmV3RmlsZTogc3RyZWFtfSwge3VzZUZvcm1EYXRhOiB0
cnVlfSk7CisgICAgICAgIH0pLnRoZW4oKHJlc3BvbnNlKSA9PiB7CisgICAgICAgICAgICBjb25z
dCBpZCA9IHJlc3BvbnNlWyd1cGxvYWRlZEZpbGUnXVsnaWQnXTsKKyAgICAgICAgICAgIHJldHVy
biBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLnNlbmRIdHRwUmVxdWVzdChgL2FwaS91cGxvYWRlZC1m
aWxlLyR7aWR9YCwgJ0dFVCcsIG51bGwsIG51bGwsIHtoZWFkZXJzOiB7J1JhbmdlJzogJ2J5dGVz
PS00J319KTsKKyAgICAgICAgfSkudGhlbigocmVzcG9uc2UpID0+IHsKKyAgICAgICAgICAgIGNv
bnN0IGhlYWRlcnMgPSByZXNwb25zZS5oZWFkZXJzOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KHJlc3BvbnNlLnN0YXR1c0NvZGUsIDIwNik7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoaGVh
ZGVyc1snY29udGVudC1yYW5nZSddLCAnYnl0ZXMgOC0xMS8xMicpOworICAgICAgICAgICAgYXNz
ZXJ0LmVxdWFsKHJlc3BvbnNlLnJlc3BvbnNlVGV4dCwgJ3RlbnQnKTsKKyAgICAgICAgfSk7Cisg
ICAgfSk7CisKKyAgICBpdCgnc2hvdWxkIHJlc3BvbmQgd2l0aCBDb250ZW50LVJhbmdlIGZvciB0
aGUgd2hvbGUgY29udGVudCB3aGVuIHRoZSBzdWZmaXggbGVuZ3RoIGlzIGxhcmdlciB0aGFuIHRo
ZSBjb250ZW50JywgKCkgPT4geworICAgICAgICByZXR1cm4gVGVtcG9yYXJ5RmlsZS5tYWtlVGVt
cG9yYXJ5RmlsZSgnc29tZS5kYXQnLCAnc29tZSBjb250ZW50JykudGhlbigoc3RyZWFtKSA9PiB7
CisgICAgICAgICAgICByZXR1cm4gUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgndXBsb2FkLWZp
bGUnLCB7bmV3RmlsZTogc3RyZWFtfSwge3VzZUZvcm1EYXRhOiB0cnVlfSk7CisgICAgICAgIH0p
LnRoZW4oKHJlc3BvbnNlKSA9PiB7CisgICAgICAgICAgICBjb25zdCBpZCA9IHJlc3BvbnNlWyd1
cGxvYWRlZEZpbGUnXVsnaWQnXTsKKyAgICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90
ZUFQSSgpLnNlbmRIdHRwUmVxdWVzdChgL2FwaS91cGxvYWRlZC1maWxlLyR7aWR9YCwgJ0dFVCcs
IG51bGwsIG51bGwsIHtoZWFkZXJzOiB7J1JhbmdlJzogJ2J5dGVzPS0xMDAnfX0pOworICAgICAg
ICB9KS50aGVuKChyZXNwb25zZSkgPT4geworICAgICAgICAgICAgY29uc3QgaGVhZGVycyA9IHJl
c3BvbnNlLmhlYWRlcnM7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzcG9uc2Uuc3RhdHVz
Q29kZSwgMjA2KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChoZWFkZXJzWydjb250ZW50LXJh
bmdlJ10sICdieXRlcyAwLTExLzEyJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzcG9u
c2UucmVzcG9uc2VUZXh0LCAnc29tZSBjb250ZW50Jyk7CisgICAgICAgIH0pOworICAgIH0pOwor
CisgICAgaXQoJ3Nob3VsZCByZXR1cm4gNDE2IHdoZW4gdGhlIHN0YXJ0aW5nIGJ5dGUgaXMgYWZ0
ZXIgdGhlIGZpbGUgc2l6ZScsICgpID0+IHsKKyAgICAgICAgcmV0dXJuIFRlbXBvcmFyeUZpbGUu
bWFrZVRlbXBvcmFyeUZpbGUoJ3NvbWUuZGF0JywgJ3NvbWUgY29udGVudCcpLnRoZW4oKHN0cmVh
bSkgPT4geworICAgICAgICAgICAgcmV0dXJuIFByaXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ3Vw
bG9hZC1maWxlJywge25ld0ZpbGU6IHN0cmVhbX0sIHt1c2VGb3JtRGF0YTogdHJ1ZX0pOworICAg
ICAgICB9KS50aGVuKChyZXNwb25zZSkgPT4geworICAgICAgICAgICAgY29uc3QgaWQgPSByZXNw
b25zZVsndXBsb2FkZWRGaWxlJ11bJ2lkJ107CisgICAgICAgICAgICByZXR1cm4gVGVzdFNlcnZl
ci5yZW1vdGVBUEkoKS5zZW5kSHR0cFJlcXVlc3QoYC9hcGkvdXBsb2FkZWQtZmlsZS8ke2lkfWAs
ICdHRVQnLCBudWxsLCBudWxsLCB7aGVhZGVyczogeydSYW5nZSc6ICdieXRlcz0xMi0nfX0pCisg
ICAgICAgICAgICAgICAgLnRoZW4oKCkgPT4gYXNzZXJ0KGZhbHNlLCAnc2hvdWxkIG5ldmVyIGJl
IHJlYWNoZWQnKSwgKGVycm9yKSA9PiBhc3NlcnQuZXF1YWwoZXJyb3IsIDQxNikpOworICAgICAg
ICB9KTsKKyAgICB9KTsKKworICAgIGl0KCdzaG91bGQgcmV0dXJuIDQxNiB3aGVuIHRoZSBzdGFy
dGluZyBieXRlIGFmdGVyIHRoZSBlbmRpbmcgYnl0ZScsICgpID0+IHsKKyAgICAgICAgcmV0dXJu
IFRlbXBvcmFyeUZpbGUubWFrZVRlbXBvcmFyeUZpbGUoJ3NvbWUuZGF0JywgJ3NvbWUgY29udGVu
dCcpLnRoZW4oKHN0cmVhbSkgPT4geworICAgICAgICAgICAgcmV0dXJuIFByaXZpbGVnZWRBUEku
c2VuZFJlcXVlc3QoJ3VwbG9hZC1maWxlJywge25ld0ZpbGU6IHN0cmVhbX0sIHt1c2VGb3JtRGF0
YTogdHJ1ZX0pOworICAgICAgICB9KS50aGVuKChyZXNwb25zZSkgPT4geworICAgICAgICAgICAg
Y29uc3QgaWQgPSByZXNwb25zZVsndXBsb2FkZWRGaWxlJ11bJ2lkJ107CisgICAgICAgICAgICBy
ZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5zZW5kSHR0cFJlcXVlc3QoYC9hcGkvdXBsb2Fk
ZWQtZmlsZS8ke2lkfWAsICdHRVQnLCBudWxsLCBudWxsLCB7aGVhZGVyczogeydSYW5nZSc6ICdi
eXRlcz0yLTEnfX0pCisgICAgICAgICAgICAgICAgLnRoZW4oKCkgPT4gYXNzZXJ0KGZhbHNlLCAn
c2hvdWxkIG5ldmVyIGJlIHJlYWNoZWQnKSwgKGVycm9yKSA9PiBhc3NlcnQuZXF1YWwoZXJyb3Is
IDQxNikpOworICAgICAgICB9KTsKKyAgICB9KTsKKworICAgIGl0KCdzaG91bGQgcmVzcG9uZCB3
aXRoIENvbnRlbnQtUmFuZ2Ugd2hlbiBJZi1SYW5nZSBtYXRjaGVzIHRoZSBsYXN0IG1vZGlmaWVk
IGRhdGUnLCAoKSA9PiB7CisgICAgICAgIGxldCBpZDsKKyAgICAgICAgcmV0dXJuIFRlbXBvcmFy
eUZpbGUubWFrZVRlbXBvcmFyeUZpbGUoJ3NvbWUuZGF0JywgJ3NvbWUgY29udGVudCcpLnRoZW4o
KHN0cmVhbSkgPT4geworICAgICAgICAgICAgcmV0dXJuIFByaXZpbGVnZWRBUEkuc2VuZFJlcXVl
c3QoJ3VwbG9hZC1maWxlJywge25ld0ZpbGU6IHN0cmVhbX0sIHt1c2VGb3JtRGF0YTogdHJ1ZX0p
OworICAgICAgICB9KS50aGVuKChyZXNwb25zZSkgPT4geworICAgICAgICAgICAgaWQgPSByZXNw
b25zZVsndXBsb2FkZWRGaWxlJ11bJ2lkJ107CisgICAgICAgICAgICByZXR1cm4gVGVzdFNlcnZl
ci5yZW1vdGVBUEkoKS5zZW5kSHR0cFJlcXVlc3QoYC9hcGkvdXBsb2FkZWQtZmlsZS8ke2lkfWAs
ICdHRVQnLCBudWxsLCBudWxsKTsKKyAgICAgICAgfSkudGhlbigocmVzcG9uc2UpID0+IHsKKyAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25zZS5zdGF0dXNDb2RlLCAyMDApOworICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKHJlc3BvbnNlLnJlc3BvbnNlVGV4dCwgJ3NvbWUgY29udGVudCcp
OworICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkuc2VuZEh0dHBSZXF1
ZXN0KGAvYXBpL3VwbG9hZGVkLWZpbGUvJHtpZH1gLCAnR0VUJywgbnVsbCwgbnVsbCwKKyAgICAg
ICAgICAgICAgICB7aGVhZGVyczogeydSYW5nZSc6ICdieXRlcyA9IDktMTAnLCAnSWYtUmFuZ2Un
OiByZXNwb25zZS5oZWFkZXJzWydsYXN0LW1vZGlmaWVkJ119fSk7CisgICAgICAgIH0pLnRoZW4o
KHJlc3BvbnNlKSA9PiB7CisgICAgICAgICAgICBjb25zdCBoZWFkZXJzID0gcmVzcG9uc2UuaGVh
ZGVyczsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25zZS5zdGF0dXNDb2RlLCAyMDYp
OworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGhlYWRlcnNbJ2NvbnRlbnQtcmFuZ2UnXSwgJ2J5
dGVzIDktMTAvMTInKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25zZS5yZXNwb25z
ZVRleHQsICdlbicpOworICAgICAgICB9KTsKKyAgICB9KTsKKworICAgIGl0KCdzaG91bGQgcmVz
cG9uZCB3aXRoIENvbnRlbnQtUmFuZ2Ugd2hlbiBJZi1SYW5nZSBtYXRjaGVzIEVUYWcnLCAoKSA9
PiB7CisgICAgICAgIGxldCBpZDsKKyAgICAgICAgcmV0dXJuIFRlbXBvcmFyeUZpbGUubWFrZVRl
bXBvcmFyeUZpbGUoJ3NvbWUuZGF0JywgJ3NvbWUgY29udGVudCcpLnRoZW4oKHN0cmVhbSkgPT4g
eworICAgICAgICAgICAgcmV0dXJuIFByaXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ3VwbG9hZC1m
aWxlJywge25ld0ZpbGU6IHN0cmVhbX0sIHt1c2VGb3JtRGF0YTogdHJ1ZX0pOworICAgICAgICB9
KS50aGVuKChyZXNwb25zZSkgPT4geworICAgICAgICAgICAgaWQgPSByZXNwb25zZVsndXBsb2Fk
ZWRGaWxlJ11bJ2lkJ107CisgICAgICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEko
KS5zZW5kSHR0cFJlcXVlc3QoYC9hcGkvdXBsb2FkZWQtZmlsZS8ke2lkfWAsICdHRVQnLCBudWxs
LCBudWxsKTsKKyAgICAgICAgfSkudGhlbigocmVzcG9uc2UpID0+IHsKKyAgICAgICAgICAgIGFz
c2VydC5lcXVhbChyZXNwb25zZS5zdGF0dXNDb2RlLCAyMDApOworICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKHJlc3BvbnNlLnJlc3BvbnNlVGV4dCwgJ3NvbWUgY29udGVudCcpOworICAgICAgICAg
ICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkuc2VuZEh0dHBSZXF1ZXN0KGAvYXBpL3Vw
bG9hZGVkLWZpbGUvJHtpZH1gLCAnR0VUJywgbnVsbCwgbnVsbCwKKyAgICAgICAgICAgICAgICB7
aGVhZGVyczogeydSYW5nZSc6ICdieXRlcyA9IDktMTAnLCAnSWYtUmFuZ2UnOiByZXNwb25zZS5o
ZWFkZXJzWydldGFnJ119fSk7CisgICAgICAgIH0pLnRoZW4oKHJlc3BvbnNlKSA9PiB7CisgICAg
ICAgICAgICBjb25zdCBoZWFkZXJzID0gcmVzcG9uc2UuaGVhZGVyczsKKyAgICAgICAgICAgIGFz
c2VydC5lcXVhbChyZXNwb25zZS5zdGF0dXNDb2RlLCAyMDYpOworICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKGhlYWRlcnNbJ2NvbnRlbnQtcmFuZ2UnXSwgJ2J5dGVzIDktMTAvMTInKTsKKyAgICAg
ICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25zZS5yZXNwb25zZVRleHQsICdlbicpOworICAgICAg
ICB9KTsKKyAgICB9KTsKKworICAgIGl0KCdzaG91bGQgcmV0dXJuIHRoZSBmdWxsIGNvbnRlbnQg
d2hlbiBJZi1SYW5nZSBkb2VzIG5vdCBtYXRjaCB0aGUgbGFzdCBtb2RpZmllZCBkYXRlIG9yIEVU
YWcnLCAoKSA9PiB7CisgICAgICAgIGxldCBpZDsKKyAgICAgICAgcmV0dXJuIFRlbXBvcmFyeUZp
bGUubWFrZVRlbXBvcmFyeUZpbGUoJ3NvbWUuZGF0JywgJ3NvbWUgY29udGVudCcpLnRoZW4oKHN0
cmVhbSkgPT4geworICAgICAgICAgICAgcmV0dXJuIFByaXZpbGVnZWRBUEkuc2VuZFJlcXVlc3Qo
J3VwbG9hZC1maWxlJywge25ld0ZpbGU6IHN0cmVhbX0sIHt1c2VGb3JtRGF0YTogdHJ1ZX0pOwor
ICAgICAgICB9KS50aGVuKChyZXNwb25zZSkgPT4geworICAgICAgICAgICAgaWQgPSByZXNwb25z
ZVsndXBsb2FkZWRGaWxlJ11bJ2lkJ107CisgICAgICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5y
ZW1vdGVBUEkoKS5zZW5kSHR0cFJlcXVlc3QoYC9hcGkvdXBsb2FkZWQtZmlsZS8ke2lkfWAsICdH
RVQnLCBudWxsLCBudWxsKTsKKyAgICAgICAgfSkudGhlbigocmVzcG9uc2UpID0+IHsKKyAgICAg
ICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25zZS5zdGF0dXNDb2RlLCAyMDApOworICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKHJlc3BvbnNlLnJlc3BvbnNlVGV4dCwgJ3NvbWUgY29udGVudCcpOwor
ICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkuc2VuZEh0dHBSZXF1ZXN0
KGAvYXBpL3VwbG9hZGVkLWZpbGUvJHtpZH1gLCAnR0VUJywgbnVsbCwgbnVsbCwKKyAgICAgICAg
ICAgICAgICB7J1JhbmdlJzogJ2J5dGVzID0gOS0xMCcsICdJZi1SYW5nZSc6ICdmb28nfSk7Cisg
ICAgICAgIH0pLnRoZW4oKHJlc3BvbnNlKSA9PiB7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
cmVzcG9uc2Uuc3RhdHVzQ29kZSwgMjAwKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXNw
b25zZS5yZXNwb25zZVRleHQsICdzb21lIGNvbnRlbnQnKTsKKyAgICAgICAgfSk7CisgICAgfSk7
CisKKyAgICBpdCgnc2hvdWxkIHJlc3BvbmQgd2l0aCBDb250ZW50LVJhbmdlIGFjcm9zcyA2NEtC
IHN0cmVhbWluZyBjaHVua3MnLCAoKSA9PiB7CisgICAgICAgIGxldCBpZDsKKyAgICAgICAgY29u
c3QgZmlsZVNpemUgPSAyNTYgKiAxMDI0OworICAgICAgICBjb25zdCB0b2tlbnMgPSAiMDEyMzQ1
Njc4OWFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6IjsKKyAgICAgICAgbGV0IGJ1ZmZlciA9IEJ1
ZmZlci5hbGxvY1Vuc2FmZShmaWxlU2l6ZSk7CisgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwg
ZmlsZVNpemU7IGkrKykKKyAgICAgICAgICAgIGJ1ZmZlcltpXSA9IE1hdGguZmxvb3IoTWF0aC5y
YW5kb20oKSAqIDI1Nik7CisgICAgICAgIGxldCBzdGFydEJ5dGUgPSA2MyAqIDEwMjQ7CisgICAg
ICAgIGxldCBlbmRCeXRlID0gMTI4ICogMTAyNCAtIDE7CisKKyAgICAgICAgbGV0IHJlc3BvbnNl
QnVmZmVyTGlzdCA9IFtdOworICAgICAgICBjb25zdCByZXNwb25zZUhhbmRsZXIgPSAocmVzcG9u
c2UpID0+IHsKKyAgICAgICAgICAgIHJlc3BvbnNlLm9uKCdkYXRhJywgKGNodW5rKSA9PiByZXNw
b25zZUJ1ZmZlckxpc3QucHVzaChjaHVuaykpOworICAgICAgICB9OworCisgICAgICAgIGZ1bmN0
aW9uIHZlcmlmeUJ1ZmZlcigpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNl
QnVmZmVyID0gQnVmZmVyLmNvbmNhdChyZXNwb25zZUJ1ZmZlckxpc3QpOworICAgICAgICAgICAg
Zm9yIChsZXQgaSA9IDA7IGkgPCBlbmRCeXRlIC0gc3RhcnRCeXRlICsgMTsgaSsrKSB7CisgICAg
ICAgICAgICAgICAgY29uc3QgYWN0dWFsID0gcmVzcG9uc2VCdWZmZXJbaV07CisgICAgICAgICAg
ICAgICAgY29uc3QgZXhwZWN0ZWQgPSBidWZmZXJbc3RhcnRCeXRlICsgaV07CisgICAgICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQsIGBUaGUgYnl0ZSBhdCBpbmRleCAk
e2l9IHNob3VsZCBiZSBpZGVudGljYWwuIEV4cGVjdGVkICR7ZXhwZWN0ZWR9IGJ1dCBnb3QgJHth
Y3R1YWx9YCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gVGVt
cG9yYXJ5RmlsZS5tYWtlVGVtcG9yYXJ5RmlsZSgnc29tZS5kYXQnLCBidWZmZXIpLnRoZW4oKHN0
cmVhbSkgPT4geworICAgICAgICAgICAgcmV0dXJuIFByaXZpbGVnZWRBUEkuc2VuZFJlcXVlc3Qo
J3VwbG9hZC1maWxlJywge25ld0ZpbGU6IHN0cmVhbX0sIHt1c2VGb3JtRGF0YTogdHJ1ZX0pOwor
ICAgICAgICB9KS50aGVuKChyZXNwb25zZSkgPT4geworICAgICAgICAgICAgaWQgPSByZXNwb25z
ZVsndXBsb2FkZWRGaWxlJ11bJ2lkJ107CisgICAgICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5y
ZW1vdGVBUEkoKS5zZW5kSHR0cFJlcXVlc3QoYC9hcGkvdXBsb2FkZWQtZmlsZS8ke2lkfWAsICdH
RVQnLCBudWxsLCBudWxsLAorICAgICAgICAgICAgICAgIHtoZWFkZXJzOiB7J1JhbmdlJzogYGJ5
dGVzID0gJHtzdGFydEJ5dGV9LSR7ZW5kQnl0ZX1gfSwgcmVzcG9uc2VIYW5kbGVyfSk7CisgICAg
ICAgIH0pLnRoZW4oKHJlc3BvbnNlKSA9PiB7CisgICAgICAgICAgICBjb25zdCBoZWFkZXJzID0g
cmVzcG9uc2UuaGVhZGVyczsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25zZS5zdGF0
dXNDb2RlLCAyMDYpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGhlYWRlcnNbJ2NvbnRlbnQt
cmFuZ2UnXSwgYGJ5dGVzICR7c3RhcnRCeXRlfS0ke2VuZEJ5dGV9LyR7ZmlsZVNpemV9YCk7Cisg
ICAgICAgICAgICB2ZXJpZnlCdWZmZXIoKTsKKyAgICAgICAgfSk7CisgICAgfSk7CisKK30pOwpk
aWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9hcGktdXBs
b2FkZWQtZmlsZS5qcyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvYXBp
LXVwbG9hZGVkLWZpbGUuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQxNTE3N2U0
MmMyZTNmNjA0NTgxYTQ4MDYyNDg1MzQ3MDkzZWExYmEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10
ZXN0cy9hcGktdXBsb2FkZWQtZmlsZS5qcworKysgL2Rldi9udWxsCkBAIC0xLDMwOSArMCwwIEBA
Ci0ndXNlIHN0cmljdCc7Ci0KLXJlcXVpcmUoJy4uL3Rvb2xzL2pzL3YzLW1vZGVscy5qcycpOwot
Ci1jb25zdCBhc3NlcnQgPSByZXF1aXJlKCdhc3NlcnQnKTsKLWdsb2JhbC5Gb3JtRGF0YSA9IHJl
cXVpcmUoJ2Zvcm0tZGF0YScpOwotCi1jb25zdCBUZXN0U2VydmVyID0gcmVxdWlyZSgnLi9yZXNv
dXJjZXMvdGVzdC1zZXJ2ZXIuanMnKTsKLWNvbnN0IFRlbXBvcmFyeUZpbGUgPSByZXF1aXJlKCcu
L3Jlc291cmNlcy90ZW1wb3JhcnktZmlsZS5qcycpLlRlbXBvcmFyeUZpbGU7Ci0KLWRlc2NyaWJl
KCcvYXBpL3VwbG9hZGVkLWZpbGUnLCBmdW5jdGlvbiAoKSB7Ci0gICAgdGhpcy50aW1lb3V0KDUw
MDApOwotICAgIFRlc3RTZXJ2ZXIuaW5qZWN0KCk7Ci0KLSAgICBUZW1wb3JhcnlGaWxlLmluamVj
dCgpOwotCi0gICAgaXQoJ3Nob3VsZCByZXR1cm4gIkludmFsaWRBcmd1bWVudHMiIHdoZW4gbmVp
dGhlciBwYXRoIG5vciBzaGEyNTYgcXVlcnkgaXMgc2V0JywgKCkgPT4gewotICAgICAgICByZXR1
cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5nZXRKU09OKCcvYXBpL3VwbG9hZGVkLWZpbGUnKS50
aGVuKChjb250ZW50KSA9PiB7Ci0gICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29udGVudFsnc3Rh
dHVzJ10sICdJbnZhbGlkQXJndW1lbnRzJyk7Ci0gICAgICAgICAgICByZXR1cm4gVGVzdFNlcnZl
ci5yZW1vdGVBUEkoKS5nZXRKU09OKCcvYXBpL3VwbG9hZGVkLWZpbGUvJyk7Ci0gICAgICAgIH0p
LnRoZW4oKGNvbnRlbnQpID0+IHsKLSAgICAgICAgICAgIGFzc2VydC5lcXVhbChjb250ZW50Wydz
dGF0dXMnXSwgJ0ludmFsaWRBcmd1bWVudHMnKTsKLSAgICAgICAgfSk7Ci0gICAgfSk7Ci0KLSAg
ICBpdCgnc2hvdWxkIHJldHVybiA0MDQgd2hlbiB0aGVyZSBpcyBubyBmaWxlIHdpdGggdGhlIHNw
ZWNpZmllZCBJRCcsICgpID0+IHsKLSAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJ
KCkuZ2V0SlNPTignL2FwaS91cGxvYWRlZC1maWxlLzEnKS50aGVuKChjb250ZW50KSA9PiB7Ci0g
ICAgICAgICAgICBhc3NlcnQoZmFsc2UsICdzaG91bGQgbmV2ZXIgYmUgcmVhY2hlZCcpOwotICAg
ICAgICB9LCAoZXJyb3IpID0+IHsKLSAgICAgICAgICAgIGFzc2VydC5lcXVhbChlcnJvciwgNDA0
KTsKLSAgICAgICAgfSk7Ci0gICAgfSk7Ci0KLSAgICBpdCgnc2hvdWxkIHJldHVybiA0MDQgd2hl
biB0aGUgc3BlY2lmaWVkIElEIGlzIG5vdCBhIHZhbGlkIGludGVnZXInLCAoKSA9PiB7Ci0gICAg
ICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLmdldEpTT04oJy9hcGkvdXBsb2FkZWQt
ZmlsZS9mb28nKS50aGVuKChjb250ZW50KSA9PiB7Ci0gICAgICAgICAgICBhc3NlcnQoZmFsc2Us
ICdzaG91bGQgbmV2ZXIgYmUgcmVhY2hlZCcpOwotICAgICAgICB9LCAoZXJyb3IpID0+IHsKLSAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChlcnJvciwgNDA0KTsKLSAgICAgICAgfSk7Ci0gICAgfSk7
Ci0KLSAgICBpdCgnc2hvdWxkIHJldHVybiB0aGUgZmlsZSBjb250ZW50IG1hdGNoaW5nIHRoZSBz
cGVjaWZpZWQgZmlsZSBJRCcsICgpID0+IHsKLSAgICAgICAgbGV0IHVwbG9hZGVkRmlsZTsKLSAg
ICAgICAgcmV0dXJuIFRlbXBvcmFyeUZpbGUubWFrZVRlbXBvcmFyeUZpbGUoJ3NvbWUuZGF0Jywg
J3NvbWUgY29udGVudCcpLnRoZW4oKHN0cmVhbSkgPT4gewotICAgICAgICAgICAgcmV0dXJuIFBy
aXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ3VwbG9hZC1maWxlJywge25ld0ZpbGU6IHN0cmVhbX0s
IHt1c2VGb3JtRGF0YTogdHJ1ZX0pOwotICAgICAgICB9KS50aGVuKChyZXNwb25zZSkgPT4gewot
ICAgICAgICAgICAgdXBsb2FkZWRGaWxlID0gcmVzcG9uc2VbJ3VwbG9hZGVkRmlsZSddOwotICAg
ICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkuc2VuZEh0dHBSZXF1ZXN0KGAv
YXBpL3VwbG9hZGVkLWZpbGUvJHt1cGxvYWRlZEZpbGVbJ2lkJ119YCwgJ0dFVCcsIG51bGwsIG51
bGwpOwotICAgICAgICB9KS50aGVuKChyZXNwb25zZSkgPT4gewotICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKHJlc3BvbnNlLnJlc3BvbnNlVGV4dCwgJ3NvbWUgY29udGVudCcpOwotICAgICAgICB9
KTsKLSAgICB9KTsKLQotICAgIGl0KCdzaG91bGQgcmV0dXJuICJOb3RGb3VuZCIgd2hlbiB0aGUg
c3BlY2lmaWVkIFNIQTI1NiBpcyBpbnZhbGlkJywgKCkgPT4gewotICAgICAgICByZXR1cm4gVGVz
dFNlcnZlci5yZW1vdGVBUEkoKS5nZXRKU09OKCcvYXBpL3VwbG9hZGVkLWZpbGUvP3NoYTI1Nj1h
YmMnKS50aGVuKChjb250ZW50KSA9PiB7Ci0gICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29udGVu
dFsnc3RhdHVzJ10sICdOb3RGb3VuZCcpOwotICAgICAgICB9KTsKLSAgICB9KTsKLQotICAgIGl0
KCdzaG91bGQgcmV0dXJuICJOb3RGb3VuZCIgd2hlbiB0aGVyZSBpcyBubyBmaWxlIG1hdGNoaW5n
IHRoZSBzcGVjaWZpZWQgU0hBMjU2ICcsICgpID0+IHsKLSAgICAgICAgcmV0dXJuIFRlc3RTZXJ2
ZXIucmVtb3RlQVBJKCkuZ2V0SlNPTignL2FwaS91cGxvYWRlZC1maWxlLz9zaGEyNTY9NTI1NmVj
MThmMTE2MjQwMjU5MDVkMDU3ZDZiZWZiMDNkNzdiMjQzNTExYWM1Zjc3ZWQ1ZTAyMjFjZTZkODRi
NScpLnRoZW4oKGNvbnRlbnQpID0+IHsKLSAgICAgICAgICAgIGFzc2VydC5lcXVhbChjb250ZW50
WydzdGF0dXMnXSwgJ05vdEZvdW5kJyk7Ci0gICAgICAgIH0pOwotICAgIH0pOwotCi0gICAgaXQo
J3Nob3VsZCByZXR1cm4gdGhlIG1ldGEgZGF0YSBvZiB0aGUgZmlsZSB3aXRoIHRoZSBzcGVjaWZp
ZWQgU0hBMjU2JywgKCkgPT4gewotICAgICAgICBsZXQgdXBsb2FkZWRGaWxlOwotICAgICAgICBy
ZXR1cm4gVGVtcG9yYXJ5RmlsZS5tYWtlVGVtcG9yYXJ5RmlsZSgnc29tZS5kYXQnLCAnc29tZSBj
b250ZW50JykudGhlbigoc3RyZWFtKSA9PiB7Ci0gICAgICAgICAgICByZXR1cm4gUHJpdmlsZWdl
ZEFQSS5zZW5kUmVxdWVzdCgndXBsb2FkLWZpbGUnLCB7bmV3RmlsZTogc3RyZWFtfSwge3VzZUZv
cm1EYXRhOiB0cnVlfSk7Ci0gICAgICAgIH0pLnRoZW4oKHJlc3BvbnNlKSA9PiB7Ci0gICAgICAg
ICAgICB1cGxvYWRlZEZpbGUgPSByZXNwb25zZVsndXBsb2FkZWRGaWxlJ107Ci0gICAgICAgICAg
ICByZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5nZXRKU09OKGAvYXBpL3VwbG9hZGVkLWZp
bGUvP3NoYTI1Nj0ke3VwbG9hZGVkRmlsZVsnc2hhMjU2J119YCk7Ci0gICAgICAgIH0pLnRoZW4o
KHJlc3BvbnNlKSA9PiB7Ci0gICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKHVwbG9hZGVkRmls
ZSwgcmVzcG9uc2VbJ3VwbG9hZGVkRmlsZSddKTsKLSAgICAgICAgfSk7Ci0gICAgfSk7Ci0KLSAg
ICBpdCgnc2hvdWxkIHJldHVybiAiTm90Rm91bmQiIHdoZW4gdGhlIGZpbGUgbWF0Y2hpbmcgdGhl
IHNwZWNpZmllZCBTSEEyNTYgaGFkIGFscmVhZHkgYmVlbiBkZWxldGVkJywgKCkgPT4gewotICAg
ICAgICBsZXQgdXBsb2FkZWRGaWxlOwotICAgICAgICByZXR1cm4gVGVtcG9yYXJ5RmlsZS5tYWtl
VGVtcG9yYXJ5RmlsZSgnc29tZS5kYXQnLCAnc29tZSBjb250ZW50JykudGhlbigoc3RyZWFtKSA9
PiB7Ci0gICAgICAgICAgICByZXR1cm4gUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgndXBsb2Fk
LWZpbGUnLCB7bmV3RmlsZTogc3RyZWFtfSwge3VzZUZvcm1EYXRhOiB0cnVlfSk7Ci0gICAgICAg
IH0pLnRoZW4oKHJlc3BvbnNlKSA9PiB7Ci0gICAgICAgICAgICB1cGxvYWRlZEZpbGUgPSByZXNw
b25zZVsndXBsb2FkZWRGaWxlJ107Ci0gICAgICAgICAgICBjb25zdCBkYiA9IFRlc3RTZXJ2ZXIu
ZGF0YWJhc2UoKTsKLSAgICAgICAgICAgIHJldHVybiBkYi5jb25uZWN0KCkudGhlbigoKSA9PiBk
Yi5xdWVyeShgVVBEQVRFIHVwbG9hZGVkX2ZpbGVzIFNFVCBmaWxlX2RlbGV0ZWRfYXQgPSBub3co
KSBhdCB0aW1lIHpvbmUgJ3V0YydgKSk7Ci0gICAgICAgIH0pLnRoZW4oKCkgPT4gewotICAgICAg
ICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkuZ2V0SlNPTihgL2FwaS91cGxvYWRl
ZC1maWxlLz9zaGEyNTY9JHt1cGxvYWRlZEZpbGVbJ3NoYTI1NiddfWApOwotICAgICAgICB9KS50
aGVuKChjb250ZW50KSA9PiB7Ci0gICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29udGVudFsnc3Rh
dHVzJ10sICdOb3RGb3VuZCcpOwotICAgICAgICB9KTsKLSAgICB9KTsKLQotCi0gICAgaXQoJ3No
b3VsZCByZXNwb25kIHdpdGggRVRhZywgQWNjY2VwdC1SYW5nZXMsIENvbnRlbnQtRGlzcG9zaXRp
b24sIENvbnRlbnQtTGVuZ3RoLCBhbmQgTGFzdC1Nb2RpZmllZCBoZWFkZXJzJywgKCkgPT4gewot
ICAgICAgICBsZXQgdXBsb2FkZWRGaWxlOwotICAgICAgICByZXR1cm4gVGVtcG9yYXJ5RmlsZS5t
YWtlVGVtcG9yYXJ5RmlsZSgnc29tZS5kYXQnLCAnc29tZSBjb250ZW50JykudGhlbigoc3RyZWFt
KSA9PiB7Ci0gICAgICAgICAgICByZXR1cm4gUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgndXBs
b2FkLWZpbGUnLCB7bmV3RmlsZTogc3RyZWFtfSwge3VzZUZvcm1EYXRhOiB0cnVlfSk7Ci0gICAg
ICAgIH0pLnRoZW4oKHJlc3BvbnNlKSA9PiB7Ci0gICAgICAgICAgICB1cGxvYWRlZEZpbGUgPSBy
ZXNwb25zZVsndXBsb2FkZWRGaWxlJ107Ci0gICAgICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5y
ZW1vdGVBUEkoKS5zZW5kSHR0cFJlcXVlc3QoYC9hcGkvdXBsb2FkZWQtZmlsZS8ke3VwbG9hZGVk
RmlsZVsnaWQnXX1gLCAnR0VUJywgbnVsbCwgbnVsbCk7Ci0gICAgICAgIH0pLnRoZW4oKHJlc3Bv
bnNlKSA9PiB7Ci0gICAgICAgICAgICBjb25zdCBoZWFkZXJzID0gcmVzcG9uc2UuaGVhZGVyczsK
LQotICAgICAgICAgICAgYXNzZXJ0KE9iamVjdC5rZXlzKGhlYWRlcnMpLmluY2x1ZGVzKCdldGFn
JykpOwotICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGhlYWRlcnNbJ2V0YWcnXSwgdXBsb2FkZWRG
aWxlWydzaGEyNTYnXSk7Ci0KLSAgICAgICAgICAgIGFzc2VydChPYmplY3Qua2V5cyhoZWFkZXJz
KS5pbmNsdWRlcygnYWNjZXB0LXJhbmdlcycpKTsKLSAgICAgICAgICAgIGFzc2VydC5lcXVhbCho
ZWFkZXJzWydhY2NlcHQtcmFuZ2VzJ10sICdieXRlcycpOwotCi0gICAgICAgICAgICBhc3NlcnQo
T2JqZWN0LmtleXMoaGVhZGVycykuaW5jbHVkZXMoJ2NvbnRlbnQtZGlzcG9zaXRpb24nKSk7Ci0g
ICAgICAgICAgICBhc3NlcnQuZXF1YWwoaGVhZGVyc1snY29udGVudC1kaXNwb3NpdGlvbiddLCBg
YXR0YWNobWVudDsgZmlsZW5hbWUqPXV0Zi04Jydzb21lLmRhdGApOwotCi0gICAgICAgICAgICBh
c3NlcnQoT2JqZWN0LmtleXMoaGVhZGVycykuaW5jbHVkZXMoJ2NvbnRlbnQtbGVuZ3RoJykpOwot
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGhlYWRlcnNbJ2NvbnRlbnQtbGVuZ3RoJ10sIHVwbG9h
ZGVkRmlsZVsnc2l6ZSddKTsKLQotICAgICAgICAgICAgYXNzZXJ0KE9iamVjdC5rZXlzKGhlYWRl
cnMpLmluY2x1ZGVzKCdsYXN0LW1vZGlmaWVkJykpOwotICAgICAgICB9KTsKLSAgICB9KTsKLQot
ICAgIGl0KCdzaG91bGQgcmVzcG9uZCB3aXRoIHRoZSBzYW1lIExhc3QtTW9kaWZpZWQgZWFjaCB0
aW1lJywgKCkgPT4gewotICAgICAgICBsZXQgaWQ7Ci0gICAgICAgIGxldCBsYXN0TW9kaWZpZWQ7
Ci0gICAgICAgIHJldHVybiBUZW1wb3JhcnlGaWxlLm1ha2VUZW1wb3JhcnlGaWxlKCdzb21lLmRh
dCcsICdzb21lIGNvbnRlbnQnKS50aGVuKChzdHJlYW0pID0+IHsKLSAgICAgICAgICAgIHJldHVy
biBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCd1cGxvYWQtZmlsZScsIHtuZXdGaWxlOiBzdHJl
YW19LCB7dXNlRm9ybURhdGE6IHRydWV9KTsKLSAgICAgICAgfSkudGhlbigocmVzcG9uc2UpID0+
IHsKLSAgICAgICAgICAgIGlkID0gcmVzcG9uc2VbJ3VwbG9hZGVkRmlsZSddWydpZCddOwotICAg
ICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkuc2VuZEh0dHBSZXF1ZXN0KGAv
YXBpL3VwbG9hZGVkLWZpbGUvJHtpZH1gLCAnR0VUJywgbnVsbCwgbnVsbCk7Ci0gICAgICAgIH0p
LnRoZW4oKHJlc3BvbnNlKSA9PiB7Ci0gICAgICAgICAgICBsYXN0TW9kaWZpZWQgPSByZXNwb25z
ZS5oZWFkZXJzWydsYXN0LW1vZGlmaWVkJ107Ci0gICAgICAgICAgICByZXR1cm4gVGVzdFNlcnZl
ci5yZW1vdGVBUEkoKS5zZW5kSHR0cFJlcXVlc3QoYC9hcGkvdXBsb2FkZWQtZmlsZS8ke2lkfWAs
ICdHRVQnLCBudWxsLCBudWxsKTsKLSAgICAgICAgfSkudGhlbigocmVzcG9uc2UpID0+IHsKLSAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25zZS5oZWFkZXJzWydsYXN0LW1vZGlmaWVkJ10s
IGxhc3RNb2RpZmllZCk7Ci0gICAgICAgIH0pOwotICAgIH0pOwotCi0gICAgaXQoJ3Nob3VsZCBy
ZXNwb25kIHdpdGggQ29udGVudC1SYW5nZSB3aGVuIHJlcXVlc3RlZCBhZnRlciBYIGJ5dGVzJywg
KCkgPT4gewotICAgICAgICByZXR1cm4gVGVtcG9yYXJ5RmlsZS5tYWtlVGVtcG9yYXJ5RmlsZSgn
c29tZS5kYXQnLCAnc29tZSBjb250ZW50JykudGhlbigoc3RyZWFtKSA9PiB7Ci0gICAgICAgICAg
ICByZXR1cm4gUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgndXBsb2FkLWZpbGUnLCB7bmV3Rmls
ZTogc3RyZWFtfSwge3VzZUZvcm1EYXRhOiB0cnVlfSk7Ci0gICAgICAgIH0pLnRoZW4oKHJlc3Bv
bnNlKSA9PiB7Ci0gICAgICAgICAgICBjb25zdCBpZCA9IHJlc3BvbnNlWyd1cGxvYWRlZEZpbGUn
XVsnaWQnXTsKLSAgICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLnNlbmRI
dHRwUmVxdWVzdChgL2FwaS91cGxvYWRlZC1maWxlLyR7aWR9YCwgJ0dFVCcsIG51bGwsIG51bGws
IHtoZWFkZXJzOiB7J1JhbmdlJzogJ2J5dGVzPTUtJ319KTsKLSAgICAgICAgfSkudGhlbigocmVz
cG9uc2UpID0+IHsKLSAgICAgICAgICAgIGNvbnN0IGhlYWRlcnMgPSByZXNwb25zZS5oZWFkZXJz
OwotICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3BvbnNlLnN0YXR1c0NvZGUsIDIwNik7Ci0g
ICAgICAgICAgICBhc3NlcnQuZXF1YWwoaGVhZGVyc1snY29udGVudC1yYW5nZSddLCAnYnl0ZXMg
NS0xMS8xMicpOwotICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3BvbnNlLnJlc3BvbnNlVGV4
dCwgJ2NvbnRlbnQnKTsKLSAgICAgICAgfSk7Ci0gICAgfSk7Ci0KLSAgICBpdCgnc2hvdWxkIHJl
c3BvbmQgd2l0aCBDb250ZW50LVJhbmdlIHdoZW4gcmVxdWVzdGVkIGJldHdlZW4gWC1ZIGJ5dGVz
JywgKCkgPT4gewotICAgICAgICByZXR1cm4gVGVtcG9yYXJ5RmlsZS5tYWtlVGVtcG9yYXJ5Rmls
ZSgnc29tZS5kYXQnLCAnc29tZSBjb250ZW50JykudGhlbigoc3RyZWFtKSA9PiB7Ci0gICAgICAg
ICAgICByZXR1cm4gUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgndXBsb2FkLWZpbGUnLCB7bmV3
RmlsZTogc3RyZWFtfSwge3VzZUZvcm1EYXRhOiB0cnVlfSk7Ci0gICAgICAgIH0pLnRoZW4oKHJl
c3BvbnNlKSA9PiB7Ci0gICAgICAgICAgICBjb25zdCBpZCA9IHJlc3BvbnNlWyd1cGxvYWRlZEZp
bGUnXVsnaWQnXTsKLSAgICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLnNl
bmRIdHRwUmVxdWVzdChgL2FwaS91cGxvYWRlZC1maWxlLyR7aWR9YCwgJ0dFVCcsIG51bGwsIG51
bGwsIHtoZWFkZXJzOiB7J1JhbmdlJzogJ2J5dGVzPTQtOSd9fSk7Ci0gICAgICAgIH0pLnRoZW4o
KHJlc3BvbnNlKSA9PiB7Ci0gICAgICAgICAgICBjb25zdCBoZWFkZXJzID0gcmVzcG9uc2UuaGVh
ZGVyczsKLSAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25zZS5zdGF0dXNDb2RlLCAyMDYp
OwotICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGhlYWRlcnNbJ2NvbnRlbnQtcmFuZ2UnXSwgJ2J5
dGVzIDQtOS8xMicpOwotICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3BvbnNlLnJlc3BvbnNl
VGV4dCwgJyBjb250ZScpOwotICAgICAgICB9KTsKLSAgICB9KTsKLQotICAgIGl0KCdzaG91bGQg
cmVzcG9uZCB3aXRoIENvbnRlbnQtUmFuZ2Ugd2hlbiByZXF1ZXN0ZWQgZm9yIHRoZSBsYXN0IFgg
Ynl0ZXMnLCAoKSA9PiB7Ci0gICAgICAgIHJldHVybiBUZW1wb3JhcnlGaWxlLm1ha2VUZW1wb3Jh
cnlGaWxlKCdzb21lLmRhdCcsICdzb21lIGNvbnRlbnQnKS50aGVuKChzdHJlYW0pID0+IHsKLSAg
ICAgICAgICAgIHJldHVybiBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCd1cGxvYWQtZmlsZScs
IHtuZXdGaWxlOiBzdHJlYW19LCB7dXNlRm9ybURhdGE6IHRydWV9KTsKLSAgICAgICAgfSkudGhl
bigocmVzcG9uc2UpID0+IHsKLSAgICAgICAgICAgIGNvbnN0IGlkID0gcmVzcG9uc2VbJ3VwbG9h
ZGVkRmlsZSddWydpZCddOwotICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJ
KCkuc2VuZEh0dHBSZXF1ZXN0KGAvYXBpL3VwbG9hZGVkLWZpbGUvJHtpZH1gLCAnR0VUJywgbnVs
bCwgbnVsbCwge2hlYWRlcnM6IHsnUmFuZ2UnOiAnYnl0ZXM9LTQnfX0pOwotICAgICAgICB9KS50
aGVuKChyZXNwb25zZSkgPT4gewotICAgICAgICAgICAgY29uc3QgaGVhZGVycyA9IHJlc3BvbnNl
LmhlYWRlcnM7Ci0gICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzcG9uc2Uuc3RhdHVzQ29kZSwg
MjA2KTsKLSAgICAgICAgICAgIGFzc2VydC5lcXVhbChoZWFkZXJzWydjb250ZW50LXJhbmdlJ10s
ICdieXRlcyA4LTExLzEyJyk7Ci0gICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzcG9uc2UucmVz
cG9uc2VUZXh0LCAndGVudCcpOwotICAgICAgICB9KTsKLSAgICB9KTsKLQotICAgIGl0KCdzaG91
bGQgcmVzcG9uZCB3aXRoIENvbnRlbnQtUmFuZ2UgZm9yIHRoZSB3aG9sZSBjb250ZW50IHdoZW4g
dGhlIHN1ZmZpeCBsZW5ndGggaXMgbGFyZ2VyIHRoYW4gdGhlIGNvbnRlbnQnLCAoKSA9PiB7Ci0g
ICAgICAgIHJldHVybiBUZW1wb3JhcnlGaWxlLm1ha2VUZW1wb3JhcnlGaWxlKCdzb21lLmRhdCcs
ICdzb21lIGNvbnRlbnQnKS50aGVuKChzdHJlYW0pID0+IHsKLSAgICAgICAgICAgIHJldHVybiBQ
cml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCd1cGxvYWQtZmlsZScsIHtuZXdGaWxlOiBzdHJlYW19
LCB7dXNlRm9ybURhdGE6IHRydWV9KTsKLSAgICAgICAgfSkudGhlbigocmVzcG9uc2UpID0+IHsK
LSAgICAgICAgICAgIGNvbnN0IGlkID0gcmVzcG9uc2VbJ3VwbG9hZGVkRmlsZSddWydpZCddOwot
ICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkuc2VuZEh0dHBSZXF1ZXN0
KGAvYXBpL3VwbG9hZGVkLWZpbGUvJHtpZH1gLCAnR0VUJywgbnVsbCwgbnVsbCwge2hlYWRlcnM6
IHsnUmFuZ2UnOiAnYnl0ZXM9LTEwMCd9fSk7Ci0gICAgICAgIH0pLnRoZW4oKHJlc3BvbnNlKSA9
PiB7Ci0gICAgICAgICAgICBjb25zdCBoZWFkZXJzID0gcmVzcG9uc2UuaGVhZGVyczsKLSAgICAg
ICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25zZS5zdGF0dXNDb2RlLCAyMDYpOwotICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKGhlYWRlcnNbJ2NvbnRlbnQtcmFuZ2UnXSwgJ2J5dGVzIDAtMTEvMTIn
KTsKLSAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25zZS5yZXNwb25zZVRleHQsICdzb21l
IGNvbnRlbnQnKTsKLSAgICAgICAgfSk7Ci0gICAgfSk7Ci0KLSAgICBpdCgnc2hvdWxkIHJldHVy
biA0MTYgd2hlbiB0aGUgc3RhcnRpbmcgYnl0ZSBpcyBhZnRlciB0aGUgZmlsZSBzaXplJywgKCkg
PT4gewotICAgICAgICByZXR1cm4gVGVtcG9yYXJ5RmlsZS5tYWtlVGVtcG9yYXJ5RmlsZSgnc29t
ZS5kYXQnLCAnc29tZSBjb250ZW50JykudGhlbigoc3RyZWFtKSA9PiB7Ci0gICAgICAgICAgICBy
ZXR1cm4gUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgndXBsb2FkLWZpbGUnLCB7bmV3RmlsZTog
c3RyZWFtfSwge3VzZUZvcm1EYXRhOiB0cnVlfSk7Ci0gICAgICAgIH0pLnRoZW4oKHJlc3BvbnNl
KSA9PiB7Ci0gICAgICAgICAgICBjb25zdCBpZCA9IHJlc3BvbnNlWyd1cGxvYWRlZEZpbGUnXVsn
aWQnXTsKLSAgICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLnNlbmRIdHRw
UmVxdWVzdChgL2FwaS91cGxvYWRlZC1maWxlLyR7aWR9YCwgJ0dFVCcsIG51bGwsIG51bGwsIHto
ZWFkZXJzOiB7J1JhbmdlJzogJ2J5dGVzPTEyLSd9fSkKLSAgICAgICAgICAgICAgICAudGhlbigo
KSA9PiBhc3NlcnQoZmFsc2UsICdzaG91bGQgbmV2ZXIgYmUgcmVhY2hlZCcpLCAoZXJyb3IpID0+
IGFzc2VydC5lcXVhbChlcnJvciwgNDE2KSk7Ci0gICAgICAgIH0pOwotICAgIH0pOwotCi0gICAg
aXQoJ3Nob3VsZCByZXR1cm4gNDE2IHdoZW4gdGhlIHN0YXJ0aW5nIGJ5dGUgYWZ0ZXIgdGhlIGVu
ZGluZyBieXRlJywgKCkgPT4gewotICAgICAgICByZXR1cm4gVGVtcG9yYXJ5RmlsZS5tYWtlVGVt
cG9yYXJ5RmlsZSgnc29tZS5kYXQnLCAnc29tZSBjb250ZW50JykudGhlbigoc3RyZWFtKSA9PiB7
Ci0gICAgICAgICAgICByZXR1cm4gUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgndXBsb2FkLWZp
bGUnLCB7bmV3RmlsZTogc3RyZWFtfSwge3VzZUZvcm1EYXRhOiB0cnVlfSk7Ci0gICAgICAgIH0p
LnRoZW4oKHJlc3BvbnNlKSA9PiB7Ci0gICAgICAgICAgICBjb25zdCBpZCA9IHJlc3BvbnNlWyd1
cGxvYWRlZEZpbGUnXVsnaWQnXTsKLSAgICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90
ZUFQSSgpLnNlbmRIdHRwUmVxdWVzdChgL2FwaS91cGxvYWRlZC1maWxlLyR7aWR9YCwgJ0dFVCcs
IG51bGwsIG51bGwsIHtoZWFkZXJzOiB7J1JhbmdlJzogJ2J5dGVzPTItMSd9fSkKLSAgICAgICAg
ICAgICAgICAudGhlbigoKSA9PiBhc3NlcnQoZmFsc2UsICdzaG91bGQgbmV2ZXIgYmUgcmVhY2hl
ZCcpLCAoZXJyb3IpID0+IGFzc2VydC5lcXVhbChlcnJvciwgNDE2KSk7Ci0gICAgICAgIH0pOwot
ICAgIH0pOwotCi0gICAgaXQoJ3Nob3VsZCByZXNwb25kIHdpdGggQ29udGVudC1SYW5nZSB3aGVu
IElmLVJhbmdlIG1hdGNoZXMgdGhlIGxhc3QgbW9kaWZpZWQgZGF0ZScsICgpID0+IHsKLSAgICAg
ICAgbGV0IGlkOwotICAgICAgICByZXR1cm4gVGVtcG9yYXJ5RmlsZS5tYWtlVGVtcG9yYXJ5Rmls
ZSgnc29tZS5kYXQnLCAnc29tZSBjb250ZW50JykudGhlbigoc3RyZWFtKSA9PiB7Ci0gICAgICAg
ICAgICByZXR1cm4gUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgndXBsb2FkLWZpbGUnLCB7bmV3
RmlsZTogc3RyZWFtfSwge3VzZUZvcm1EYXRhOiB0cnVlfSk7Ci0gICAgICAgIH0pLnRoZW4oKHJl
c3BvbnNlKSA9PiB7Ci0gICAgICAgICAgICBpZCA9IHJlc3BvbnNlWyd1cGxvYWRlZEZpbGUnXVsn
aWQnXTsKLSAgICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLnNlbmRIdHRw
UmVxdWVzdChgL2FwaS91cGxvYWRlZC1maWxlLyR7aWR9YCwgJ0dFVCcsIG51bGwsIG51bGwpOwot
ICAgICAgICB9KS50aGVuKChyZXNwb25zZSkgPT4gewotICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KHJlc3BvbnNlLnN0YXR1c0NvZGUsIDIwMCk7Ci0gICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVz
cG9uc2UucmVzcG9uc2VUZXh0LCAnc29tZSBjb250ZW50Jyk7Ci0gICAgICAgICAgICByZXR1cm4g
VGVzdFNlcnZlci5yZW1vdGVBUEkoKS5zZW5kSHR0cFJlcXVlc3QoYC9hcGkvdXBsb2FkZWQtZmls
ZS8ke2lkfWAsICdHRVQnLCBudWxsLCBudWxsLAotICAgICAgICAgICAgICAgIHtoZWFkZXJzOiB7
J1JhbmdlJzogJ2J5dGVzID0gOS0xMCcsICdJZi1SYW5nZSc6IHJlc3BvbnNlLmhlYWRlcnNbJ2xh
c3QtbW9kaWZpZWQnXX19KTsKLSAgICAgICAgfSkudGhlbigocmVzcG9uc2UpID0+IHsKLSAgICAg
ICAgICAgIGNvbnN0IGhlYWRlcnMgPSByZXNwb25zZS5oZWFkZXJzOwotICAgICAgICAgICAgYXNz
ZXJ0LmVxdWFsKHJlc3BvbnNlLnN0YXR1c0NvZGUsIDIwNik7Ci0gICAgICAgICAgICBhc3NlcnQu
ZXF1YWwoaGVhZGVyc1snY29udGVudC1yYW5nZSddLCAnYnl0ZXMgOS0xMC8xMicpOwotICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKHJlc3BvbnNlLnJlc3BvbnNlVGV4dCwgJ2VuJyk7Ci0gICAgICAg
IH0pOwotICAgIH0pOwotCi0gICAgaXQoJ3Nob3VsZCByZXNwb25kIHdpdGggQ29udGVudC1SYW5n
ZSB3aGVuIElmLVJhbmdlIG1hdGNoZXMgRVRhZycsICgpID0+IHsKLSAgICAgICAgbGV0IGlkOwot
ICAgICAgICByZXR1cm4gVGVtcG9yYXJ5RmlsZS5tYWtlVGVtcG9yYXJ5RmlsZSgnc29tZS5kYXQn
LCAnc29tZSBjb250ZW50JykudGhlbigoc3RyZWFtKSA9PiB7Ci0gICAgICAgICAgICByZXR1cm4g
UHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgndXBsb2FkLWZpbGUnLCB7bmV3RmlsZTogc3RyZWFt
fSwge3VzZUZvcm1EYXRhOiB0cnVlfSk7Ci0gICAgICAgIH0pLnRoZW4oKHJlc3BvbnNlKSA9PiB7
Ci0gICAgICAgICAgICBpZCA9IHJlc3BvbnNlWyd1cGxvYWRlZEZpbGUnXVsnaWQnXTsKLSAgICAg
ICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLnNlbmRIdHRwUmVxdWVzdChgL2Fw
aS91cGxvYWRlZC1maWxlLyR7aWR9YCwgJ0dFVCcsIG51bGwsIG51bGwpOwotICAgICAgICB9KS50
aGVuKChyZXNwb25zZSkgPT4gewotICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3BvbnNlLnN0
YXR1c0NvZGUsIDIwMCk7Ci0gICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzcG9uc2UucmVzcG9u
c2VUZXh0LCAnc29tZSBjb250ZW50Jyk7Ci0gICAgICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5y
ZW1vdGVBUEkoKS5zZW5kSHR0cFJlcXVlc3QoYC9hcGkvdXBsb2FkZWQtZmlsZS8ke2lkfWAsICdH
RVQnLCBudWxsLCBudWxsLAotICAgICAgICAgICAgICAgIHtoZWFkZXJzOiB7J1JhbmdlJzogJ2J5
dGVzID0gOS0xMCcsICdJZi1SYW5nZSc6IHJlc3BvbnNlLmhlYWRlcnNbJ2V0YWcnXX19KTsKLSAg
ICAgICAgfSkudGhlbigocmVzcG9uc2UpID0+IHsKLSAgICAgICAgICAgIGNvbnN0IGhlYWRlcnMg
PSByZXNwb25zZS5oZWFkZXJzOwotICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3BvbnNlLnN0
YXR1c0NvZGUsIDIwNik7Ci0gICAgICAgICAgICBhc3NlcnQuZXF1YWwoaGVhZGVyc1snY29udGVu
dC1yYW5nZSddLCAnYnl0ZXMgOS0xMC8xMicpOwotICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJl
c3BvbnNlLnJlc3BvbnNlVGV4dCwgJ2VuJyk7Ci0gICAgICAgIH0pOwotICAgIH0pOwotCi0gICAg
aXQoJ3Nob3VsZCByZXR1cm4gdGhlIGZ1bGwgY29udGVudCB3aGVuIElmLVJhbmdlIGRvZXMgbm90
IG1hdGNoIHRoZSBsYXN0IG1vZGlmaWVkIGRhdGUgb3IgRVRhZycsICgpID0+IHsKLSAgICAgICAg
bGV0IGlkOwotICAgICAgICByZXR1cm4gVGVtcG9yYXJ5RmlsZS5tYWtlVGVtcG9yYXJ5RmlsZSgn
c29tZS5kYXQnLCAnc29tZSBjb250ZW50JykudGhlbigoc3RyZWFtKSA9PiB7Ci0gICAgICAgICAg
ICByZXR1cm4gUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgndXBsb2FkLWZpbGUnLCB7bmV3Rmls
ZTogc3RyZWFtfSwge3VzZUZvcm1EYXRhOiB0cnVlfSk7Ci0gICAgICAgIH0pLnRoZW4oKHJlc3Bv
bnNlKSA9PiB7Ci0gICAgICAgICAgICBpZCA9IHJlc3BvbnNlWyd1cGxvYWRlZEZpbGUnXVsnaWQn
XTsKLSAgICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLnNlbmRIdHRwUmVx
dWVzdChgL2FwaS91cGxvYWRlZC1maWxlLyR7aWR9YCwgJ0dFVCcsIG51bGwsIG51bGwpOwotICAg
ICAgICB9KS50aGVuKChyZXNwb25zZSkgPT4gewotICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJl
c3BvbnNlLnN0YXR1c0NvZGUsIDIwMCk7Ci0gICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzcG9u
c2UucmVzcG9uc2VUZXh0LCAnc29tZSBjb250ZW50Jyk7Ci0gICAgICAgICAgICByZXR1cm4gVGVz
dFNlcnZlci5yZW1vdGVBUEkoKS5zZW5kSHR0cFJlcXVlc3QoYC9hcGkvdXBsb2FkZWQtZmlsZS8k
e2lkfWAsICdHRVQnLCBudWxsLCBudWxsLAotICAgICAgICAgICAgICAgIHsnUmFuZ2UnOiAnYnl0
ZXMgPSA5LTEwJywgJ0lmLVJhbmdlJzogJ2Zvbyd9KTsKLSAgICAgICAgfSkudGhlbigocmVzcG9u
c2UpID0+IHsKLSAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25zZS5zdGF0dXNDb2RlLCAy
MDApOwotICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3BvbnNlLnJlc3BvbnNlVGV4dCwgJ3Nv
bWUgY29udGVudCcpOwotICAgICAgICB9KTsKLSAgICB9KTsKLQotICAgIGl0KCdzaG91bGQgcmVz
cG9uZCB3aXRoIENvbnRlbnQtUmFuZ2UgYWNyb3NzIDY0S0Igc3RyZWFtaW5nIGNodW5rcycsICgp
ID0+IHsKLSAgICAgICAgbGV0IGlkOwotICAgICAgICBjb25zdCBmaWxlU2l6ZSA9IDI1NiAqIDEw
MjQ7Ci0gICAgICAgIGNvbnN0IHRva2VucyA9ICIwMTIzNDU2Nzg5YWJjZGVmZ2hpamtsbW5vcHFy
c3R1dnd4eXoiOwotICAgICAgICBsZXQgYnVmZmVyID0gQnVmZmVyLmFsbG9jVW5zYWZlKGZpbGVT
aXplKTsKLSAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBmaWxlU2l6ZTsgaSsrKQotICAgICAg
ICAgICAgYnVmZmVyW2ldID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMjU2KTsKLSAgICAg
ICAgbGV0IHN0YXJ0Qnl0ZSA9IDYzICogMTAyNDsKLSAgICAgICAgbGV0IGVuZEJ5dGUgPSAxMjgg
KiAxMDI0IC0gMTsKLQotICAgICAgICBsZXQgcmVzcG9uc2VCdWZmZXJMaXN0ID0gW107Ci0gICAg
ICAgIGNvbnN0IHJlc3BvbnNlSGFuZGxlciA9IChyZXNwb25zZSkgPT4gewotICAgICAgICAgICAg
cmVzcG9uc2Uub24oJ2RhdGEnLCAoY2h1bmspID0+IHJlc3BvbnNlQnVmZmVyTGlzdC5wdXNoKGNo
dW5rKSk7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgZnVuY3Rpb24gdmVyaWZ5QnVmZmVyKCkKLSAg
ICAgICAgewotICAgICAgICAgICAgY29uc3QgcmVzcG9uc2VCdWZmZXIgPSBCdWZmZXIuY29uY2F0
KHJlc3BvbnNlQnVmZmVyTGlzdCk7Ci0gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGVu
ZEJ5dGUgLSBzdGFydEJ5dGUgKyAxOyBpKyspIHsKLSAgICAgICAgICAgICAgICBjb25zdCBhY3R1
YWwgPSByZXNwb25zZUJ1ZmZlcltpXTsKLSAgICAgICAgICAgICAgICBjb25zdCBleHBlY3RlZCA9
IGJ1ZmZlcltzdGFydEJ5dGUgKyBpXTsKLSAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoYWN0
dWFsLCBleHBlY3RlZCwgYFRoZSBieXRlIGF0IGluZGV4ICR7aX0gc2hvdWxkIGJlIGlkZW50aWNh
bC4gRXhwZWN0ZWQgJHtleHBlY3RlZH0gYnV0IGdvdCAke2FjdHVhbH1gKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiBUZW1wb3JhcnlGaWxlLm1ha2VUZW1wb3Jh
cnlGaWxlKCdzb21lLmRhdCcsIGJ1ZmZlcikudGhlbigoc3RyZWFtKSA9PiB7Ci0gICAgICAgICAg
ICByZXR1cm4gUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgndXBsb2FkLWZpbGUnLCB7bmV3Rmls
ZTogc3RyZWFtfSwge3VzZUZvcm1EYXRhOiB0cnVlfSk7Ci0gICAgICAgIH0pLnRoZW4oKHJlc3Bv
bnNlKSA9PiB7Ci0gICAgICAgICAgICBpZCA9IHJlc3BvbnNlWyd1cGxvYWRlZEZpbGUnXVsnaWQn
XTsKLSAgICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLnNlbmRIdHRwUmVx
dWVzdChgL2FwaS91cGxvYWRlZC1maWxlLyR7aWR9YCwgJ0dFVCcsIG51bGwsIG51bGwsCi0gICAg
ICAgICAgICAgICAge2hlYWRlcnM6IHsnUmFuZ2UnOiBgYnl0ZXMgPSAke3N0YXJ0Qnl0ZX0tJHtl
bmRCeXRlfWB9LCByZXNwb25zZUhhbmRsZXJ9KTsKLSAgICAgICAgfSkudGhlbigocmVzcG9uc2Up
ID0+IHsKLSAgICAgICAgICAgIGNvbnN0IGhlYWRlcnMgPSByZXNwb25zZS5oZWFkZXJzOwotICAg
ICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3BvbnNlLnN0YXR1c0NvZGUsIDIwNik7Ci0gICAgICAg
ICAgICBhc3NlcnQuZXF1YWwoaGVhZGVyc1snY29udGVudC1yYW5nZSddLCBgYnl0ZXMgJHtzdGFy
dEJ5dGV9LSR7ZW5kQnl0ZX0vJHtmaWxlU2l6ZX1gKTsKLSAgICAgICAgICAgIHZlcmlmeUJ1ZmZl
cigpOwotICAgICAgICB9KTsKLSAgICB9KTsKLQotfSk7Cg==
</data>
<flag name="review"
          id="326611"
          type_id="1"
          status="+"
          setter="koivisto"
    />
          </attachment>
      

    </bug>

</bugzilla>